[Pkg-cli-libs-commits] [SCM] ironruby branch, master, updated. debian/0.9.0+dfsg-1-30-g3147b58

C.J. Adams-Collier cjac at colliertech.org
Mon Aug 3 21:01:19 UTC 2009


The following commit has been merged in the master branch:
commit c332b53db29b967834eab6ec192d9edc40304b25
Author: C.J. Adams-Collier <cjac at colliertech.org>
Date:   Mon Aug 3 13:39:25 2009 -0700

    removed un-necessary files

diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/English.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/English.rb
deleted file mode 100644
index 1a0e11d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/English.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-#  Include the English library file in a Ruby script, and you can
-#  reference the global variables such as \VAR{\$\_} using less
-#  cryptic names, listed in the following table.% \vref{tab:english}.
-#
-#  Without 'English':
-#
-#      $\ = ' -- '
-#      "waterbuffalo" =~ /buff/
-#      print $", $', $$, "\n"
-#
-#  With English:
-#
-#      require "English"
-#      
-#      $OUTPUT_FIELD_SEPARATOR = ' -- '
-#      "waterbuffalo" =~ /buff/
-#      print $LOADED_FEATURES, $POSTMATCH, $PID, "\n"
-
-
-# The exception object passed to +raise+.
-alias $ERROR_INFO              $!
-
-# The stack backtrace generated by the last
-# exception. <tt>See Kernel.caller</tt> for details. Thread local.
-alias $ERROR_POSITION          $@
-
-# The default separator pattern used by <tt>String.split</tt>.  May be
-# set from the command line using the <tt>-F</tt> flag.
-alias $FS                      $;
-
-# The default separator pattern used by <tt>String.split</tt>.  May be
-# set from the command line using the <tt>-F</tt> flag.
-alias $FIELD_SEPARATOR         $;
-
-# The separator string output between the parameters to methods such
-# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
-# which adds no text.
-alias $OFS                     $,
-
-# The separator string output between the parameters to methods such
-# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
-# which adds no text.
-alias $OUTPUT_FIELD_SEPARATOR  $,
-
-# The input record separator (newline by default). This is the value
-# that routines such as <tt>Kernel.gets</tt> use to determine record
-# boundaries. If set to +nil+, +gets+ will read the entire file.
-alias $RS                      $/
-
-# The input record separator (newline by default). This is the value
-# that routines such as <tt>Kernel.gets</tt> use to determine record
-# boundaries. If set to +nil+, +gets+ will read the entire file.
-alias $INPUT_RECORD_SEPARATOR  $/
-
-# The string appended to the output of every call to methods such as
-# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
-# +nil+.
-alias $ORS                     $\
-
-# The string appended to the output of every call to methods such as
-# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
-# +nil+.
-alias $OUTPUT_RECORD_SEPARATOR $\
-
-# The number of the last line read from the current input file.
-alias $INPUT_LINE_NUMBER       $.
-
-# The number of the last line read from the current input file.
-alias $NR                      $.
-
-# The last line read by <tt>Kernel.gets</tt> or
-# <tt>Kernel.readline</tt>. Many string-related functions in the
-# +Kernel+ module operate on <tt>$_</tt> by default. The variable is
-# local to the current scope. Thread local.
-alias $LAST_READ_LINE          $_
-
-# The destination of output for <tt>Kernel.print</tt>
-# and <tt>Kernel.printf</tt>. The default value is
-# <tt>$stdout</tt>.
-alias $DEFAULT_OUTPUT          $>
-
-# An object that provides access to the concatenation
-# of the contents of all the files
-# given as command-line arguments, or <tt>$stdin</tt>
-# (in the case where there are no
-# arguments). <tt>$<</tt> supports methods similar to a 
-# +File+ object:
-# +inmode+, +close+,
-# <tt>closed?</tt>, +each+,
-# <tt>each_byte</tt>, <tt>each_line</tt>,
-# +eof+, <tt>eof?</tt>, +file+,
-# +filename+, +fileno+,
-# +getc+, +gets+, +lineno+,
-# <tt>lineno=</tt>, +path+, 
-# +pos+, <tt>pos=</tt>,
-# +read+, +readchar+,
-# +readline+, +readlines+,
-# +rewind+, +seek+, +skip+,
-# +tell+, <tt>to_a</tt>, <tt>to_i</tt>,
-# <tt>to_io</tt>, <tt>to_s</tt>, along with the
-# methods in +Enumerable+. The method +file+
-# returns a +File+ object for the file currently
-# being read. This may change as <tt>$<</tt> reads
-# through the files on the command line. Read only.
-alias $DEFAULT_INPUT           $<
-
-# The process number of the program being executed. Read only.
-alias $PID                     $$
-
-# The process number of the program being executed. Read only.
-alias $PROCESS_ID              $$
-
-# The exit status of the last child process to terminate. Read
-# only. Thread local.
-alias $CHILD_STATUS            $?
-
-# A +MatchData+ object that encapsulates the results of a successful
-# pattern match. The variables <tt>$&</tt>, <tt>$`</tt>, <tt>$'</tt>,
-# and <tt>$1</tt> to <tt>$9</tt> are all derived from
-# <tt>$~</tt>. Assigning to <tt>$~</tt> changes the values of these
-# derived variables.  This variable is local to the current
-# scope. Thread local.
-alias $LAST_MATCH_INFO         $~
-
-# If set to any value apart from +nil+ or +false+, all pattern matches
-# will be case insensitive, string comparisons will ignore case, and
-# string hash values will be case insensitive. Deprecated
-alias $IGNORECASE              $=
-
-# An array of strings containing the command-line
-# options from the invocation of the program. Options
-# used by the Ruby interpreter will have been
-# removed. Read only. Also known simply as +ARGV+.
-alias $ARGV                    $*
-
-# The string matched by the last successful pattern
-# match. This variable is local to the current
-# scope. Read only. Thread local.
-alias $MATCH                   $&
-
-# The string preceding the match in the last
-# successful pattern match. This variable is local to 
-# the current scope. Read only. Thread local.
-alias $PREMATCH                $`
-
-# The string following the match in the last
-# successful pattern match. This variable is local to 
-# the current scope. Read only. Thread local.
-alias $POSTMATCH               $'
-
-# The contents of the highest-numbered group matched in the last
-# successful pattern match. Thus, in <tt>"cat" =~ /(c|a)(t|z)/</tt>,
-# <tt>$+</tt> will be set to "t".  This variable is local to the
-# current scope. Read only. Thread local.
-alias $LAST_PAREN_MATCH        $+
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/Env.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/Env.rb
deleted file mode 100644
index 452a286..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/Env.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# Env.rb -- imports environment variables as global variables, Perlish ;(
-# Usage:
-#
-#  require 'Env'
-#  p $USER
-#  $USER = "matz"
-#  p ENV["USER"]
-
-require 'importenv'
-
-if __FILE__ == $0
-  p $TERM
-  $TERM = nil
-  p $TERM
-  p ENV["TERM"]
-  $TERM = "foo"
-  p ENV["TERM"]
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/abbrev.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/abbrev.rb
deleted file mode 100644
index 338b89f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/abbrev.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env ruby
-=begin
-#
-# Copyright (c) 2001,2003 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under
-# the same terms as Ruby.
-#
-# $Idaemons: /home/cvs/rb/abbrev.rb,v 1.2 2001/05/30 09:37:45 knu Exp $
-# $RoughId: abbrev.rb,v 1.4 2003/10/14 19:45:42 knu Exp $
-# $Id: abbrev.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-# Calculate the set of unique abbreviations for a given set of strings.
-#
-#   require 'abbrev'
-#   require 'pp'
-#
-#   pp Abbrev::abbrev(['ruby', 'rules']).sort
-#
-# <i>Generates:</i>
-#
-#   [["rub", "ruby"],
-#    ["ruby", "ruby"],
-#    ["rul", "rules"],
-#    ["rule", "rules"],
-#    ["rules", "rules"]]
-#
-# Also adds an +abbrev+ method to class +Array+.
-
-module Abbrev
-
-  # Given a set of strings, calculate the set of unambiguous
-  # abbreviations for those strings, and return a hash where the keys
-  # are all the possible abbreviations and the values are the full
-  # strings. Thus, given input of "car" and "cone", the keys pointing
-  # to "car" would be "ca" and "car", while those pointing to "cone"
-  # would be "co", "con", and "cone".
-  #
-  # The optional +pattern+ parameter is a pattern or a string. Only
-  # those input strings matching the pattern, or begging the string,
-  # are considered for inclusion in the output hash
-
-  def abbrev(words, pattern = nil)
-    table = {}
-    seen = Hash.new(0)
-
-    if pattern.is_a?(String)
-      pattern = /^#{Regexp.quote(pattern)}/	# regard as a prefix
-    end
-
-    words.each do |word|
-      next if (abbrev = word).empty?
-      while (len = abbrev.rindex(/[\w\W]\z/)) > 0
-	abbrev = word[0,len]
-
-	next if pattern && pattern !~ abbrev
-
-	case seen[abbrev] += 1
-	when 1
-	  table[abbrev] = word
-	when 2
-	  table.delete(abbrev)
-	else
-	  break
-	end
-      end
-    end
-
-    words.each do |word|
-      next if pattern && pattern !~ word
-
-      table[word] = word
-    end
-
-    table
-  end
-
-  module_function :abbrev
-end
-
-class Array
-  # Calculates the set of unambiguous abbreviations for the strings in
-  # +self+. If passed a pattern or a string, only the strings matching
-  # the pattern or starting with the string are considered.
-  #
-  #   %w{ car cone }.abbrev   #=> { "ca" => "car", "car" => "car",
-  #                                 "co" => "cone", "con" => cone",
-  #                                 "cone" => "cone" }
-  def abbrev(pattern = nil)
-    Abbrev::abbrev(self, pattern)
-  end
-end
-
-if $0 == __FILE__
-  while line = gets
-    hash = line.split.abbrev
-
-    hash.sort.each do |k, v|
-      puts "#{k} => #{v}"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/base64.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/base64.rb
deleted file mode 100644
index 8628d61..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/base64.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# = base64.rb: methods for base64-encoding and -decoding stings
-#
-# Author:: Yukihiro Matsumoto 
-# Documentation:: Dave Thomas and Gavin Sinclair
-#
-# Until Ruby 1.8.1, these methods were defined at the top-level.  Now
-# they are in the Base64 module but included in the top-level, where
-# their usage is deprecated.
-#
-# See Base64 for documentation.
-#
-
-require "kconv"
-
-
-# The Base64 module provides for the encoding (#encode64) and decoding
-# (#decode64) of binary data using a Base64 representation.
-# 
-# The following particular features are also provided:
-# - encode into lines of a given length (#b64encode)
-# - decode the special format specified in RFC2047 for the
-#   representation of email headers (decode_b)
-#
-# == Example
-#
-# A simple encoding and decoding. 
-# 
-#     require "base64"
-#
-#     enc   = Base64.encode64('Send reinforcements')
-#                         # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n" 
-#     plain = Base64.decode64(enc)
-#                         # -> "Send reinforcements"
-#
-# The purpose of using base64 to encode data is that it translates any
-# binary data into purely printable characters.  It is specified in
-# RFC 2045 (http://www.faqs.org/rfcs/rfc2045.html).
-
-module Base64
-  module_function
-
-  # Returns the Base64-decoded version of +str+.
-  #
-  #   require 'base64'
-  #   str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
-  #         'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
-  #         'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
-  #   puts Base64.decode64(str)
-  #
-  # <i>Generates:</i>
-  #
-  #    This is line one
-  #    This is line two
-  #    This is line three
-  #    And so on...
-
-  def decode64(str)
-    str.unpack("m")[0]
-  end
-
-
-  # Decodes text formatted using a subset of RFC2047 (the one used for
-  # mime-encoding mail headers).
-  #
-  # Only supports an encoding type of 'b' (base 64), and only supports
-  # the character sets ISO-2022-JP and SHIFT_JIS (so the only two
-  # encoded word sequences recognized are <tt>=?ISO-2022-JP?B?...=</tt> and
-  # <tt>=?SHIFT_JIS?B?...=</tt>).  Recognition of these sequences is case
-  # insensitive.
-
-  def decode_b(str)
-    str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
-      decode64($1)
-    }
-    str = Kconv::toeuc(str)
-    str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) {
-      decode64($1)
-    }
-    str = Kconv::toeuc(str)
-    str.gsub!(/\n/, ' ') 
-    str.gsub!(/\0/, '')
-    str
-  end
-
-  # Returns the Base64-encoded version of +str+.
-  #
-  #    require 'base64'
-  #    Base64.b64encode("Now is the time for all good coders\nto learn Ruby")
-  #
-  # <i>Generates:</i>
-  #
-  #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
-  #    UnVieQ==
-
-  def encode64(bin)
-    [bin].pack("m")
-  end
-
-  # _Prints_ the Base64 encoded version of +bin+ (a +String+) in lines of
-  # +len+ (default 60) characters.
-  #
-  #    require 'base64'
-  #    data = "Now is the time for all good coders\nto learn Ruby" 
-  #    Base64.b64encode(data)
-  #
-  # <i>Generates:</i>
-  #
-  #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
-  #    UnVieQ==
-
-  def b64encode(bin, len = 60)
-    encode64(bin).scan(/.{1,#{len}}/) do
-      print $&, "\n"
-    end
-  end 
-
-
-  module Deprecated # :nodoc:
-    include Base64
-
-    for m in Base64.private_instance_methods(false)
-      module_eval %{
-        def #{m}(*args)
-          warn("\#{caller(1)[0]}: #{m} is deprecated; use Base64.#{m} instead")
-          super
-        end
-      }
-    end
-  end
-end
-
-include Base64::Deprecated
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/benchmark.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/benchmark.rb
deleted file mode 100644
index 3646cee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/benchmark.rb
+++ /dev/null
@@ -1,572 +0,0 @@
-=begin
-#
-# benchmark.rb - a performance benchmarking library 
-# 
-# $Id: benchmark.rb 17135 2008-06-13 03:10:19Z shyouhei $
-# 
-# Created by Gotoken (gotoken at notwork.org). 
-#
-# Documentation by Gotoken (original RD), Lyle Johnson (RDoc conversion), and
-# Gavin Sinclair (editing). 
-#
-=end
-
-# == Overview
-#
-# The Benchmark module provides methods for benchmarking Ruby code, giving
-# detailed reports on the time taken for each task.
-#
-
-# The Benchmark module provides methods to measure and report the time
-# used to execute Ruby code.
-#
-# * Measure the time to construct the string given by the expression
-#   <tt>"a"*1_000_000</tt>:
-#
-#       require 'benchmark'
-#
-#       puts Benchmark.measure { "a"*1_000_000 }
-# 
-#   On my machine (FreeBSD 3.2 on P5, 100MHz) this generates:
-# 
-#       1.166667   0.050000   1.216667 (  0.571355)
-# 
-#   This report shows the user CPU time, system CPU time, the sum of
-#   the user and system CPU times, and the elapsed real time. The unit
-#   of time is seconds.
-# 
-# * Do some experiments sequentially using the #bm method:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.bm do |x|
-#         x.report { for i in 1..n; a = "1"; end }
-#         x.report { n.times do   ; a = "1"; end }
-#         x.report { 1.upto(n) do ; a = "1"; end }
-#       end
-# 
-#   The result:
-#
-#              user     system      total        real
-#          1.033333   0.016667   1.016667 (  0.492106)
-#          1.483333   0.000000   1.483333 (  0.694605)
-#          1.516667   0.000000   1.516667 (  0.711077)
-#
-# * Continuing the previous example, put a label in each report:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.bm(7) do |x|
-#         x.report("for:")   { for i in 1..n; a = "1"; end }
-#         x.report("times:") { n.times do   ; a = "1"; end }
-#         x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-#       end
-# 
-# The result:
-# 
-#                     user     system      total        real
-#        for:     1.050000   0.000000   1.050000 (  0.503462)
-#        times:   1.533333   0.016667   1.550000 (  0.735473)
-#        upto:    1.500000   0.016667   1.516667 (  0.711239)
-# 
-#
-# * The times for some benchmarks depend on the order in which items
-#   are run.  These differences are due to the cost of memory
-#   allocation and garbage collection. To avoid these discrepancies,
-#   the #bmbm method is provided.  For example, to compare ways to
-#   sort an array of floats:
-#
-#       require 'benchmark'
-#       
-#       array = (1..1000000).map { rand }
-#       
-#       Benchmark.bmbm do |x|
-#         x.report("sort!") { array.dup.sort! }
-#         x.report("sort")  { array.dup.sort  }
-#       end
-# 
-#   The result:
-# 
-#        Rehearsal -----------------------------------------
-#        sort!  11.928000   0.010000  11.938000 ( 12.756000)
-#        sort   13.048000   0.020000  13.068000 ( 13.857000)
-#        ------------------------------- total: 25.006000sec
-#        
-#                    user     system      total        real
-#        sort!  12.959000   0.010000  12.969000 ( 13.793000)
-#        sort   12.007000   0.000000  12.007000 ( 12.791000)
-#
-#
-# * Report statistics of sequential experiments with unique labels,
-#   using the #benchmark method:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
-#         tf = x.report("for:")   { for i in 1..n; a = "1"; end }
-#         tt = x.report("times:") { n.times do   ; a = "1"; end }
-#         tu = x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-#         [tf+tt+tu, (tf+tt+tu)/3]
-#       end
-# 
-#   The result:
-# 
-#                     user     system      total        real
-#        for:     1.016667   0.016667   1.033333 (  0.485749)
-#        times:   1.450000   0.016667   1.466667 (  0.681367)
-#        upto:    1.533333   0.000000   1.533333 (  0.722166)
-#        >total:  4.000000   0.033333   4.033333 (  1.889282)
-#        >avg:    1.333333   0.011111   1.344444 (  0.629761)
-
-module Benchmark
-
-  BENCHMARK_VERSION = "2002-04-25" #:nodoc"
-
-  def Benchmark::times() # :nodoc:
-      Process::times()
-  end
-
-
-  # Invokes the block with a <tt>Benchmark::Report</tt> object, which
-  # may be used to collect and report on the results of individual
-  # benchmark tests. Reserves <i>label_width</i> leading spaces for
-  # labels on each line. Prints _caption_ at the top of the
-  # report, and uses _fmt_ to format each line.
-  # If the block returns an array of
-  # <tt>Benchmark::Tms</tt> objects, these will be used to format
-  # additional lines of output. If _label_ parameters are
-  # given, these are used to label these extra lines.
-  #
-  # _Note_: Other methods provide a simpler interface to this one, and are
-  # suitable for nearly all benchmarking requirements.  See the examples in
-  # Benchmark, and the #bm and #bmbm methods.
-  #
-  # Example: 
-  #
-  #     require 'benchmark'
-  #     include Benchmark          # we need the CAPTION and FMTSTR constants 
-  #
-  #     n = 50000
-  #     Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
-  #       tf = x.report("for:")   { for i in 1..n; a = "1"; end }
-  #       tt = x.report("times:") { n.times do   ; a = "1"; end }
-  #       tu = x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-  #       [tf+tt+tu, (tf+tt+tu)/3]
-  #     end
-  # 
-  # <i>Generates:</i>
-  # 
-  #                     user     system      total        real
-  #        for:     1.016667   0.016667   1.033333 (  0.485749)
-  #        times:   1.450000   0.016667   1.466667 (  0.681367)
-  #        upto:    1.533333   0.000000   1.533333 (  0.722166)
-  #        >total:  4.000000   0.033333   4.033333 (  1.889282)
-  #        >avg:    1.333333   0.011111   1.344444 (  0.629761)
-  # 
-
-  def benchmark(caption = "", label_width = nil, fmtstr = nil, *labels) # :yield: report
-    sync = STDOUT.sync
-    STDOUT.sync = true
-    label_width ||= 0
-    fmtstr ||= FMTSTR
-    raise ArgumentError, "no block" unless iterator?
-    print caption
-    results = yield(Report.new(label_width, fmtstr))
-    Array === results and results.grep(Tms).each {|t|
-      print((labels.shift || t.label || "").ljust(label_width), 
-            t.format(fmtstr))
-    }
-    STDOUT.sync = sync
-  end
-
-
-  # A simple interface to the #benchmark method, #bm is generates sequential reports
-  # with labels.  The parameters have the same meaning as for #benchmark.
-  # 
-  #     require 'benchmark'
-  #
-  #     n = 50000
-  #     Benchmark.bm(7) do |x|
-  #       x.report("for:")   { for i in 1..n; a = "1"; end }
-  #       x.report("times:") { n.times do   ; a = "1"; end }
-  #       x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-  #     end
-  # 
-  # <i>Generates:</i>
-  # 
-  #                     user     system      total        real
-  #        for:     1.050000   0.000000   1.050000 (  0.503462)
-  #        times:   1.533333   0.016667   1.550000 (  0.735473)
-  #        upto:    1.500000   0.016667   1.516667 (  0.711239)
-  #
-
-  def bm(label_width = 0, *labels, &blk) # :yield: report
-    benchmark(" "*label_width + CAPTION, label_width, FMTSTR, *labels, &blk)
-  end
-
-
-  # Sometimes benchmark results are skewed because code executed
-  # earlier encounters different garbage collection overheads than
-  # that run later. #bmbm attempts to minimize this effect by running
-  # the tests twice, the first time as a rehearsal in order to get the
-  # runtime environment stable, the second time for
-  # real. <tt>GC.start</tt> is executed before the start of each of
-  # the real timings; the cost of this is not included in the
-  # timings. In reality, though, there's only so much that #bmbm can
-  # do, and the results are not guaranteed to be isolated from garbage
-  # collection and other effects.
-  #
-  # Because #bmbm takes two passes through the tests, it can
-  # calculate the required label width.
-  #
-  #       require 'benchmark'
-  #       
-  #       array = (1..1000000).map { rand }
-  #       
-  #       Benchmark.bmbm do |x|
-  #         x.report("sort!") { array.dup.sort! }
-  #         x.report("sort")  { array.dup.sort  }
-  #       end
-  # 
-  # <i>Generates:</i>
-  # 
-  #        Rehearsal -----------------------------------------
-  #        sort!  11.928000   0.010000  11.938000 ( 12.756000)
-  #        sort   13.048000   0.020000  13.068000 ( 13.857000)
-  #        ------------------------------- total: 25.006000sec
-  #        
-  #                    user     system      total        real
-  #        sort!  12.959000   0.010000  12.969000 ( 13.793000)
-  #        sort   12.007000   0.000000  12.007000 ( 12.791000)
-  #
-  # #bmbm yields a Benchmark::Job object and returns an array of
-  # Benchmark::Tms objects.
-  #
-  def bmbm(width = 0, &blk) # :yield: job
-    job = Job.new(width)
-    yield(job)
-    width = job.width
-    sync = STDOUT.sync
-    STDOUT.sync = true
-
-    # rehearsal
-    print "Rehearsal "
-    puts '-'*(width+CAPTION.length - "Rehearsal ".length)
-    list = []
-    job.list.each{|label,item|
-      print(label.ljust(width))
-      res = Benchmark::measure(&item)
-      print res.format()
-      list.push res
-    }
-    sum = Tms.new; list.each{|i| sum += i}
-    ets = sum.format("total: %tsec")
-    printf("%s %s\n\n",
-           "-"*(width+CAPTION.length-ets.length-1), ets)
-    
-    # take
-    print ' '*width, CAPTION
-    list = []
-    ary = []
-    job.list.each{|label,item|
-      GC::start
-      print label.ljust(width)
-      res = Benchmark::measure(&item)
-      print res.format()
-      ary.push res
-      list.push [label, res]
-    }
-
-    STDOUT.sync = sync
-    ary
-  end
-
-  # 
-  # Returns the time used to execute the given block as a
-  # Benchmark::Tms object.
-  #
-  def measure(label = "") # :yield:
-    t0, r0 = Benchmark.times, Time.now
-    yield
-    t1, r1 = Benchmark.times, Time.now
-    Benchmark::Tms.new(t1.utime  - t0.utime, 
-                       t1.stime  - t0.stime, 
-                       t1.cutime - t0.cutime, 
-                       t1.cstime - t0.cstime, 
-                       r1.to_f - r0.to_f,
-                       label)
-  end
-
-  #
-  # Returns the elapsed real time used to execute the given block.
-  #
-  def realtime(&blk) # :yield:
-    r0 = Time.now
-    yield
-    r1 = Time.now
-    r1.to_f - r0.to_f
-  end
-
-
-
-  #
-  # A Job is a sequence of labelled blocks to be processed by the
-  # Benchmark.bmbm method.  It is of little direct interest to the user.
-  #
-  class Job # :nodoc:
-    #
-    # Returns an initialized Job instance.
-    # Usually, one doesn't call this method directly, as new
-    # Job objects are created by the #bmbm method.
-    # _width_ is a initial value for the label offset used in formatting;
-    # the #bmbm method passes its _width_ argument to this constructor. 
-    # 
-    def initialize(width)
-      @width = width
-      @list = []
-    end
-
-    #
-    # Registers the given label and block pair in the job list.
-    #
-    def item(label = "", &blk) # :yield:
-      raise ArgumentError, "no block" unless block_given?
-      label.concat ' '
-      w = label.length
-      @width = w if @width < w
-      @list.push [label, blk]
-      self
-    end
-
-    alias report item
-    
-    # An array of 2-element arrays, consisting of label and block pairs.
-    attr_reader :list
-    
-    # Length of the widest label in the #list, plus one.  
-    attr_reader :width
-  end
-
-  module_function :benchmark, :measure, :realtime, :bm, :bmbm
-
-
-
-  #
-  # This class is used by the Benchmark.benchmark and Benchmark.bm methods.
-  # It is of little direct interest to the user.
-  #
-  class Report # :nodoc:
-    #
-    # Returns an initialized Report instance.
-    # Usually, one doesn't call this method directly, as new
-    # Report objects are created by the #benchmark and #bm methods. 
-    # _width_ and _fmtstr_ are the label offset and 
-    # format string used by Tms#format. 
-    # 
-    def initialize(width = 0, fmtstr = nil)
-      @width, @fmtstr = width, fmtstr
-    end
-
-    #
-    # Prints the _label_ and measured time for the block,
-    # formatted by _fmt_. See Tms#format for the
-    # formatting rules.
-    #
-    def item(label = "", *fmt, &blk) # :yield:
-      print label.ljust(@width)
-      res = Benchmark::measure(&blk)
-      print res.format(@fmtstr, *fmt)
-      res
-    end
-
-    alias report item
-  end
-
-
-
-  #
-  # A data object, representing the times associated with a benchmark
-  # measurement.
-  #
-  class Tms
-    CAPTION = "      user     system      total        real\n"
-    FMTSTR = "%10.6u %10.6y %10.6t %10.6r\n"
-
-    # User CPU time
-    attr_reader :utime
-    
-    # System CPU time
-    attr_reader :stime
-   
-    # User CPU time of children
-    attr_reader :cutime
-    
-    # System CPU time of children
-    attr_reader :cstime
-    
-    # Elapsed real time
-    attr_reader :real
-    
-    # Total time, that is _utime_ + _stime_ + _cutime_ + _cstime_ 
-    attr_reader :total
-    
-    # Label
-    attr_reader :label
-
-    #
-    # Returns an initialized Tms object which has
-    # _u_ as the user CPU time, _s_ as the system CPU time, 
-    # _cu_ as the children's user CPU time, _cs_ as the children's
-    # system CPU time, _real_ as the elapsed real time and _l_
-    # as the label. 
-    # 
-    def initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil)
-      @utime, @stime, @cutime, @cstime, @real, @label = u, s, cu, cs, real, l
-      @total = @utime + @stime + @cutime + @cstime
-    end
-
-    # 
-    # Returns a new Tms object whose times are the sum of the times for this
-    # Tms object, plus the time required to execute the code block (_blk_).
-    # 
-    def add(&blk) # :yield:
-      self + Benchmark::measure(&blk) 
-    end
-
-    # 
-    # An in-place version of #add.
-    # 
-    def add!
-      t = Benchmark::measure(&blk) 
-      @utime  = utime + t.utime
-      @stime  = stime + t.stime
-      @cutime = cutime + t.cutime
-      @cstime = cstime + t.cstime
-      @real   = real + t.real
-      self
-    end
-
-    # 
-    # Returns a new Tms object obtained by memberwise summation
-    # of the individual times for this Tms object with those of the other
-    # Tms object.
-    # This method and #/() are useful for taking statistics. 
-    # 
-    def +(other); memberwise(:+, other) end
-    
-    #
-    # Returns a new Tms object obtained by memberwise subtraction
-    # of the individual times for the other Tms object from those of this
-    # Tms object.
-    #
-    def -(other); memberwise(:-, other) end
-    
-    #
-    # Returns a new Tms object obtained by memberwise multiplication
-    # of the individual times for this Tms object by _x_.
-    #
-    def *(x); memberwise(:*, x) end
-
-    # 
-    # Returns a new Tms object obtained by memberwise division
-    # of the individual times for this Tms object by _x_.
-    # This method and #+() are useful for taking statistics. 
-    # 
-    def /(x); memberwise(:/, x) end
-
-    #
-    # Returns the contents of this Tms object as
-    # a formatted string, according to a format string
-    # like that passed to Kernel.format. In addition, #format
-    # accepts the following extensions:
-    #
-    # <tt>%u</tt>::     Replaced by the user CPU time, as reported by Tms#utime.
-    # <tt>%y</tt>::     Replaced by the system CPU time, as reported by #stime (Mnemonic: y of "s*y*stem")
-    # <tt>%U</tt>::     Replaced by the children's user CPU time, as reported by Tms#cutime 
-    # <tt>%Y</tt>::     Replaced by the children's system CPU time, as reported by Tms#cstime
-    # <tt>%t</tt>::     Replaced by the total CPU time, as reported by Tms#total
-    # <tt>%r</tt>::     Replaced by the elapsed real time, as reported by Tms#real
-    # <tt>%n</tt>::     Replaced by the label string, as reported by Tms#label (Mnemonic: n of "*n*ame")
-    # 
-    # If _fmtstr_ is not given, FMTSTR is used as default value, detailing the
-    # user, system and real elapsed time.
-    # 
-    def format(arg0 = nil, *args)
-      fmtstr = (arg0 || FMTSTR).dup
-      fmtstr.gsub!(/(%[-+\.\d]*)n/){"#{$1}s" % label}
-      fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
-      fmtstr.gsub!(/(%[-+\.\d]*)y/){"#{$1}f" % stime}
-      fmtstr.gsub!(/(%[-+\.\d]*)U/){"#{$1}f" % cutime}
-      fmtstr.gsub!(/(%[-+\.\d]*)Y/){"#{$1}f" % cstime}
-      fmtstr.gsub!(/(%[-+\.\d]*)t/){"#{$1}f" % total}
-      fmtstr.gsub!(/(%[-+\.\d]*)r/){"(#{$1}f)" % real}
-      arg0 ? Kernel::format(fmtstr, *args) : fmtstr
-    end
-
-    # 
-    # Same as #format.
-    # 
-    def to_s
-      format
-    end
-
-    # 
-    # Returns a new 6-element array, consisting of the
-    # label, user CPU time, system CPU time, children's
-    # user CPU time, children's system CPU time and elapsed
-    # real time.
-    # 
-    def to_a
-      [@label, @utime, @stime, @cutime, @cstime, @real]
-    end
-
-    protected
-    def memberwise(op, x)
-      case x
-      when Benchmark::Tms
-        Benchmark::Tms.new(utime.__send__(op, x.utime),
-                           stime.__send__(op, x.stime),
-                           cutime.__send__(op, x.cutime),
-                           cstime.__send__(op, x.cstime),
-                           real.__send__(op, x.real)
-                           )
-      else
-        Benchmark::Tms.new(utime.__send__(op, x),
-                           stime.__send__(op, x),
-                           cutime.__send__(op, x),
-                           cstime.__send__(op, x),
-                           real.__send__(op, x)
-                           )
-      end
-    end
-  end
-
-  # The default caption string (heading above the output times).
-  CAPTION = Benchmark::Tms::CAPTION
-
-  # The default format string used to display times.  See also Benchmark::Tms#format. 
-  FMTSTR = Benchmark::Tms::FMTSTR
-end
-
-if __FILE__ == $0
-  include Benchmark
-
-  n = ARGV[0].to_i.nonzero? || 50000
-  puts %Q([#{n} times iterations of `a = "1"'])
-  benchmark("       " + CAPTION, 7, FMTSTR) do |x|
-    x.report("for:")   {for i in 1..n; a = "1"; end} # Benchmark::measure
-    x.report("times:") {n.times do   ; a = "1"; end}
-    x.report("upto:")  {1.upto(n) do ; a = "1"; end}
-  end
-
-  benchmark do
-    [
-      measure{for i in 1..n; a = "1"; end},  # Benchmark::measure
-      measure{n.times do   ; a = "1"; end},
-      measure{1.upto(n) do ; a = "1"; end}
-    ]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/jacobian.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/jacobian.rb
deleted file mode 100644
index d80eeab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/jacobian.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-# require 'bigdecimal/jacobian'
-#
-# Provides methods to compute the Jacobian matrix of a set of equations at a
-# point x. In the methods below:
-#
-# f is an Object which is used to compute the Jacobian matrix of the equations.
-# It must provide the following methods:
-#
-# f.values(x):: returns the values of all functions at x
-#
-# f.zero:: returns 0.0
-# f.one:: returns 1.0
-# f.two:: returns 1.0
-# f.ten:: returns 10.0
-#
-# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
-#
-# x is the point at which to compute the Jacobian.
-#
-# fx is f.values(x).
-#
-module Jacobian
-  #--
-  def isEqual(a,b,zero=0.0,e=1.0e-8)
-    aa = a.abs
-    bb = b.abs
-    if aa == zero &&  bb == zero then
-          true
-    else
-          if ((a-b)/(aa+bb)).abs < e then
-             true
-          else
-             false
-          end
-    end
-  end
-  #++
-
-  # Computes the derivative of f[i] at x[i].
-  # fx is the value of f at x.
-  def dfdxi(f,fx,x,i)
-    nRetry = 0
-    n = x.size
-    xSave = x[i]
-    ok = 0
-    ratio = f.ten*f.ten*f.ten
-    dx = x[i].abs/ratio
-    dx = fx[i].abs/ratio if isEqual(dx,f.zero,f.zero,f.eps)
-    dx = f.one/f.ten     if isEqual(dx,f.zero,f.zero,f.eps)
-    until ok>0 do
-      s = f.zero
-      deriv = []
-      if(nRetry>100) then
-         raize "Singular Jacobian matrix. No change at x[" + i.to_s + "]"
-      end
-      dx = dx*f.two
-      x[i] += dx
-      fxNew = f.values(x)
-      for j in 0...n do
-        if !isEqual(fxNew[j],fx[j],f.zero,f.eps) then
-           ok += 1
-           deriv <<= (fxNew[j]-fx[j])/dx
-        else
-           deriv <<= f.zero
-        end
-      end
-      x[i] = xSave
-    end
-    deriv
-  end
-
-  # Computes the Jacobian of f at x. fx is the value of f at x.
-  def jacobian(f,fx,x)
-    n = x.size
-    dfdx = Array::new(n*n)
-    for i in 0...n do
-      df = dfdxi(f,fx,x,i)
-      for j in 0...n do
-         dfdx[j*n+i] = df[j]
-      end
-    end
-    dfdx
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/ludcmp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/ludcmp.rb
deleted file mode 100644
index 8f48887..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/ludcmp.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Solves a*x = b for x, using LU decomposition.
-#
-module LUSolve
-  # Performs LU decomposition of the n by n matrix a.
-  def ludecomp(a,n,zero=0,one=1)
-    prec = BigDecimal.limit(nil)
-    ps     = []
-    scales = []
-    for i in 0...n do  # pick up largest(abs. val.) element in each row.
-      ps <<= i
-      nrmrow  = zero
-      ixn = i*n
-      for j in 0...n do
-         biggst = a[ixn+j].abs
-         nrmrow = biggst if biggst>nrmrow
-      end
-      if nrmrow>zero then
-         scales <<= one.div(nrmrow,prec)
-      else 
-         raise "Singular matrix"
-      end
-    end
-    n1          = n - 1
-    for k in 0...n1 do # Gaussian elimination with partial pivoting.
-      biggst  = zero;
-      for i in k...n do
-         size = a[ps[i]*n+k].abs*scales[ps[i]]
-         if size>biggst then
-            biggst = size
-            pividx  = i
-         end
-      end
-      raise "Singular matrix" if biggst<=zero
-      if pividx!=k then
-        j = ps[k]
-        ps[k] = ps[pividx]
-        ps[pividx] = j
-      end
-      pivot   = a[ps[k]*n+k]
-      for i in (k+1)...n do
-        psin = ps[i]*n
-        a[psin+k] = mult = a[psin+k].div(pivot,prec)
-        if mult!=zero then
-           pskn = ps[k]*n
-           for j in (k+1)...n do
-             a[psin+j] -= mult.mult(a[pskn+j],prec)
-           end
-        end
-      end
-    end
-    raise "Singular matrix" if a[ps[n1]*n+n1] == zero
-    ps
-  end
-
-  # Solves a*x = b for x, using LU decomposition.
-  #
-  # a is a matrix, b is a constant vector, x is the solution vector.
-  #
-  # ps is the pivot, a vector which indicates the permutation of rows performed
-  # during LU decomposition.
-  def lusolve(a,b,ps,zero=0.0)
-    prec = BigDecimal.limit(nil)
-    n = ps.size
-    x = []
-    for i in 0...n do
-      dot = zero
-      psin = ps[i]*n
-      for j in 0...i do
-        dot = a[psin+j].mult(x[j],prec) + dot
-      end
-      x <<= b[ps[i]] - dot
-    end
-    (n-1).downto(0) do |i|
-       dot = zero
-       psin = ps[i]*n
-       for j in (i+1)...n do
-         dot = a[psin+j].mult(x[j],prec) + dot
-       end
-       x[i]  = (x[i]-dot).div(a[psin+i],prec)
-    end
-    x
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/math.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/math.rb
deleted file mode 100644
index f3248a3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/math.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-#
-#--
-# Contents:
-#   sqrt(x, prec)
-#   sin (x, prec)
-#   cos (x, prec)
-#   atan(x, prec)  Note: |x|<1, x=0.9999 may not converge.
-#   exp (x, prec)
-#   log (x, prec)
-#   PI  (prec)
-#   E   (prec) == exp(1.0,prec)
-#
-# where:
-#   x    ... BigDecimal number to be computed.
-#            |x| must be small enough to get convergence.
-#   prec ... Number of digits to be obtained.
-#++
-#
-# Provides mathematical functions.
-#
-# Example:
-#
-#   require "bigdecimal"
-#   require "bigdecimal/math"
-#
-#   include BigMath
-#
-#   a = BigDecimal((PI(100)/2).to_s)
-#   puts sin(a,100) # -> 0.10000000000000000000......E1
-#
-module BigMath
-
-  # Computes the square root of x to the specified number of digits of 
-  # precision.
-  #
-  # BigDecimal.new('2').sqrt(16).to_s 
-  #  -> "0.14142135623730950488016887242096975E1"
-  #
-  def sqrt(x,prec)
-    x.sqrt(prec)
-  end
-
-  # Computes the sine of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  def sin(x, prec)
-    raise ArgumentError, "Zero or negative precision for sin" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    two  = BigDecimal("2")
-    x1   = x
-    x2   = x.mult(x,n)
-    sign = 1
-    y    = x
-    d    = y
-    i    = one
-    z    = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      sign = -sign
-      x1  = x2.mult(x1,n)
-      i  += two
-      z  *= (i-one) * i
-      d   = sign * x1.div(z,m)
-      y  += d
-    end
-    y
-  end
-
-  # Computes the cosine of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  def cos(x, prec)
-    raise ArgumentError, "Zero or negative precision for cos" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    two  = BigDecimal("2")
-    x1 = one
-    x2 = x.mult(x,n)
-    sign = 1
-    y = one
-    d = y
-    i = BigDecimal("0")
-    z = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      sign = -sign
-      x1  = x2.mult(x1,n)
-      i  += two
-      z  *= (i-one) * i
-      d   = sign * x1.div(z,m)
-      y  += d
-    end
-    y
-  end
-
-  # Computes the arctangent of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  # Raises an argument error if x > 1.
-  def atan(x, prec)
-    raise ArgumentError, "Zero or negative precision for atan" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    raise ArgumentError, "x.abs must be less than 1.0" if x.abs>=1
-    n    = prec + BigDecimal.double_fig
-    y = x
-    d = y
-    t = x
-    r = BigDecimal("3")
-    x2 = x.mult(x,n)
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t = -t.mult(x2,n)
-      d = t.div(r,m)
-      y += d
-      r += 2
-    end
-    y
-  end
-
-  # Computes the value of e (the base of natural logarithms) raised to the 
-  # power of x, to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  #
-  # BigMath::exp(BigDecimal.new('1'), 10).to_s
-  # -> "0.271828182845904523536028752390026306410273E1"
-  def exp(x, prec)
-    raise ArgumentError, "Zero or negative precision for exp" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    x1 = one
-    y  = one
-    d  = y
-    z  = one
-    i  = 0
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      x1  = x1.mult(x,n)
-      i += 1
-      z *= i
-      d  = x1.div(z,m)
-      y += d
-    end
-    y
-  end
-
-  # Computes the natural logarithm of x to the specified number of digits 
-  # of precision.
-  #
-  # Returns x if x is infinite or NaN.
-  #
-  def log(x, prec)
-    raise ArgumentError, "Zero or negative argument for log" if x <= 0 || prec <= 0
-    return x if x.infinite? || x.nan?
-    one = BigDecimal("1")
-    two = BigDecimal("2")
-    n  = prec + BigDecimal.double_fig
-    x  = (x - one).div(x + one,n)
-    x2 = x.mult(x,n)
-    y  = x
-    d  = y
-    i = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      x  = x2.mult(x,n)
-      i += two
-      d  = x.div(i,m)
-      y += d
-    end
-    y*two
-  end
-
-  # Computes the value of pi to the specified number of digits of precision.
-  def PI(prec)
-    raise ArgumentError, "Zero or negative argument for PI" if prec <= 0
-    n      = prec + BigDecimal.double_fig
-    zero   = BigDecimal("0")
-    one    = BigDecimal("1")
-    two    = BigDecimal("2")
-
-    m25    = BigDecimal("-0.04")
-    m57121 = BigDecimal("-57121")
-
-    pi     = zero
-
-    d = one
-    k = one
-    w = one
-    t = BigDecimal("-80")
-    while d.nonzero? && ((m = n - (pi.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t   = t*m25
-      d   = t.div(k,m)
-      k   = k+two
-      pi  = pi + d
-    end
-
-    d = one
-    k = one
-    w = one
-    t = BigDecimal("956")
-    while d.nonzero? && ((m = n - (pi.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t   = t.div(m57121,n)
-      d   = t.div(k,m)
-      pi  = pi + d
-      k   = k+two
-    end
-    pi
-  end
-
-  # Computes e (the base of natural logarithms) to the specified number of
-  # digits of precision.
-  def E(prec)
-    raise ArgumentError, "Zero or negative precision for E" if prec <= 0
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    y  = one
-    d  = y
-    z  = one
-    i  = 0
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      i += 1
-      z *= i
-      d  = one.div(z,m)
-      y += d
-    end
-    y
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/newton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/newton.rb
deleted file mode 100644
index 59ac0f7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/newton.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# newton.rb 
-#
-# Solves the nonlinear algebraic equation system f = 0 by Newton's method.
-# This program is not dependent on BigDecimal.
-#
-# To call:
-#    n = nlsolve(f,x)
-#  where n is the number of iterations required,
-#        x is the initial value vector
-#        f is an Object which is used to compute the values of the equations to be solved.
-# It must provide the following methods:
-#
-# f.values(x):: returns the values of all functions at x
-#
-# f.zero:: returns 0.0
-# f.one:: returns 1.0
-# f.two:: returns 1.0
-# f.ten:: returns 10.0
-#
-# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
-#
-# On exit, x is the solution vector.
-#
-require "bigdecimal/ludcmp"
-require "bigdecimal/jacobian"
-
-module Newton
-  include LUSolve
-  include Jacobian
-  
-  def norm(fv,zero=0.0)
-    s = zero
-    n = fv.size
-    for i in 0...n do
-      s += fv[i]*fv[i]
-    end
-    s
-  end
-
-  def nlsolve(f,x)
-    nRetry = 0
-    n = x.size
-
-    f0 = f.values(x)
-    zero = f.zero
-    one  = f.one
-    two  = f.two
-    p5 = one/two
-    d  = norm(f0,zero)
-    minfact = f.ten*f.ten*f.ten
-    minfact = one/minfact
-    e = f.eps
-    while d >= e do
-      nRetry += 1
-      # Not yet converged. => Compute Jacobian matrix
-      dfdx = jacobian(f,f0,x)
-      # Solve dfdx*dx = -f0 to estimate dx
-      dx = lusolve(dfdx,f0,ludecomp(dfdx,n,zero,one),zero)
-      fact = two
-      xs = x.dup
-      begin
-        fact *= p5
-        if fact < minfact then
-          raise "Failed to reduce function values."
-        end
-        for i in 0...n do
-          x[i] = xs[i] - dx[i]*fact
-        end
-        f0 = f.values(x)
-        dn = norm(f0,zero)
-      end while(dn>=d)
-      d = dn
-    end
-    nRetry
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/util.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/util.rb
deleted file mode 100644
index 09e926a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/bigdecimal/util.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# BigDecimal utility library.
-#
-# To use these functions, require 'bigdecimal/util'
-#
-# The following methods are provided to convert other types to BigDecimals:
-#
-#   String#to_d -> BigDecimal
-#   Float#to_d -> BigDecimal
-#   Rational#to_d -> BigDecimal
-#
-# The following method is provided to convert BigDecimals to other types:
-#
-#   BigDecimal#to_r -> Rational
-#
-# ----------------------------------------------------------------------
-#
-class Float < Numeric
-  def to_d
-    BigDecimal(self.to_s)
-  end
-end
-
-class String
-  def to_d
-    BigDecimal(self)
-  end
-end
-
-class BigDecimal < Numeric
-  # Converts a BigDecimal to a String of the form "nnnnnn.mmm".
-  # This method is deprecated; use BigDecimal#to_s("F") instead.
-  def to_digits
-     if self.nan? || self.infinite? || self.zero?
-        self.to_s
-     else
-       i       = self.to_i.to_s
-       s,f,y,z = self.frac.split
-       i + "." + ("0"*(-z)) + f
-     end
-  end
-
-  # Converts a BigDecimal to a Rational.
-  def to_r 
-     sign,digits,base,power = self.split
-     numerator = sign*digits.to_i
-     denomi_power = power - digits.size # base is always 10
-     if denomi_power < 0
-        Rational(numerator,base ** (-denomi_power))
-     else
-        Rational(numerator * (base ** denomi_power),1)
-     end
-  end
-end
-
-class Rational < Numeric
-  # Converts a Rational to a BigDecimal
-  def to_d(nFig=0)
-     num = self.numerator.to_s
-     if nFig<=0
-        nFig = BigDecimal.double_fig*2+1
-     end
-     BigDecimal.new(num).div(self.denominator,nFig)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi-lib.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi-lib.rb
deleted file mode 100644
index d6b60d6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi-lib.rb
+++ /dev/null
@@ -1,272 +0,0 @@
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: cgi-lib is deprecated after Ruby 1.8.1; use cgi instead"
-
-=begin
-
-= simple CGI support library
-
-= example
-
-== get form values
-
-	require "cgi-lib.rb"
-	query = CGI.new
-	query['field']   # <== value of 'field'
-	query.keys       # <== array of fields
-
-and query has Hash class methods
-
-
-== get cookie values
-
-	require "cgi-lib.rb"
-	query = CGI.new
-	query.cookie['name']  # <== cookie value of 'name'
-	query.cookie.keys     # <== all cookie names
-
-and query.cookie has Hash class methods
-
-
-== print HTTP header and HTML string to $>
-
-	require "cgi-lib.rb"
-	CGI::print{
-	  CGI::tag("HTML"){
-	    CGI::tag("HEAD"){ CGI::tag("TITLE"){"TITLE"} } +
-	    CGI::tag("BODY"){
-	      CGI::tag("FORM", {"ACTION"=>"test.rb", "METHOD"=>"POST"}){
-	        CGI::tag("INPUT", {"TYPE"=>"submit", "VALUE"=>"submit"})
-	      } +
-	      CGI::tag("HR")
-	    }
-	  }
-	}
-
-
-== make raw cookie string
-
-	require "cgi-lib.rb"
-	cookie1 = CGI::cookie({'name'    => 'name',
-	                       'value'   => 'value',
-	                       'path'    => 'path',   # optional
-	                       'domain'  => 'domain', # optional
-	                       'expires' => Time.now, # optional
-	                       'secure'  => true      # optional
-	                      })
-
-	CGI::print("Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-== print HTTP header and string to $>
-
-	require "cgi-lib.rb"
-	CGI::print{ "string" }
-	  # == CGI::print("Content-Type: text/html"){ "string" }
-	CGI::print("Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-=== NPH (no-parse-header) mode
-
-	require "cgi-lib.rb"
-	CGI::print("nph"){ "string" }
-	  # == CGI::print("nph", "Content-Type: text/html"){ "string" }
-	CGI::print("nph", "Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-== make HTML tag string
-
-	require "cgi-lib.rb"
-	CGI::tag("element", {"attribute_name"=>"attribute_value"}){"content"}
-
-
-== make HTTP header string
-
-	require "cgi-lib.rb"
-	CGI::header # == CGI::header("Content-Type: text/html")
-	CGI::header("Content-Type: text/html", cookie1, cookie2)
-
-
-=== NPH (no-parse-header) mode
-
-	CGI::header("nph") # == CGI::header("nph", "Content-Type: text/html")
-	CGI::header("nph", "Content-Type: text/html", cookie1, cookie2)
-
-
-== escape url encode
-
-	require "cgi-lib.rb"
-	url_encoded_string = CGI::escape("string")
-
-
-== unescape url encoded
-
-	require "cgi-lib.rb"
-	string = CGI::unescape("url encoded string")
-
-
-== escape HTML &"<>
-
-	require "cgi-lib.rb"
-	CGI::escapeHTML("string")
-
-
-=end
-
-require "delegate"
-
-class CGI < SimpleDelegator
-
-  CR  = "\015"
-  LF  = "\012"
-  EOL = CR + LF
-
-  RFC822_DAYS = %w[ Sun Mon Tue Wed Thu Fri Sat ]
-  RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
-
-  # make rfc1123 date string
-  def CGI::rfc1123_date(time)
-    t = time.clone.gmtime
-    return format("%s, %.2d %s %d %.2d:%.2d:%.2d GMT",
-                RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
-                t.hour, t.min, t.sec)
-  end
-
-  # escape url encode
-  def CGI::escape(str)
-    str.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
-  end
-
-  # unescape url encoded
-  def CGI::unescape(str)
-    str.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") }
-  end
-
-  # escape HTML
-  def CGI::escapeHTML(str)
-    str.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-  end
-
-  # offline mode. read name=value pairs on standard input.
-  def read_from_cmdline
-    require "shellwords.rb"
-    words = Shellwords.shellwords(
-              if not ARGV.empty?
-                ARGV.join(' ')
-              else
-                STDERR.print "(offline mode: enter name=value pairs on standard input)\n" if STDIN.tty?
-                readlines.join(' ').gsub(/\n/, '')
-              end.gsub(/\\=/, '%3D').gsub(/\\&/, '%26'))
-
-    if words.find{|x| x =~ /=/} then words.join('&') else words.join('+') end
-  end
-
-  def initialize(input = $stdin)
-
-    @inputs = {}
-    @cookie = {}
-
-    case ENV['REQUEST_METHOD']
-    when "GET"
-      ENV['QUERY_STRING'] or ""
-    when "POST"
-      input.read(Integer(ENV['CONTENT_LENGTH'])) or ""
-    else
-      read_from_cmdline
-    end.split(/[&;]/).each do |x|
-      key, val = x.split(/=/,2).collect{|x|CGI::unescape(x)}
-      if @inputs.include?(key)
-        @inputs[key] += "\0" + (val or "")
-      else
-        @inputs[key] = (val or "")
-      end
-    end
-
-    super(@inputs)
-
-    if ENV.has_key?('HTTP_COOKIE') or ENV.has_key?('COOKIE')
-      (ENV['HTTP_COOKIE'] or ENV['COOKIE']).split(/; /).each do |x|
-        key, val = x.split(/=/,2)
-        key = CGI::unescape(key)
-        val = val.split(/&/).collect{|x|CGI::unescape(x)}.join("\0")
-        if @cookie.include?(key)
-          @cookie[key] += "\0" + val
-        else
-          @cookie[key] = val
-        end
-      end
-    end
-  end
-
-  attr("inputs")
-  attr("cookie")
-
-  # make HTML tag string
-  def CGI::tag(element, attributes = {})
-    "<" + escapeHTML(element) + attributes.collect{|name, value|
-      " " + escapeHTML(name) + '="' + escapeHTML(value) + '"'
-    }.to_s + ">" +
-    (iterator? ? yield.to_s + "</" + escapeHTML(element) + ">" : "")
-  end
-
-  # make raw cookie string
-  def CGI::cookie(options)
-    "Set-Cookie: " + options['name'] + '=' + escape(options['value']) +
-    (options['domain']  ? '; domain='  + options['domain'] : '') +
-    (options['path']    ? '; path='    + options['path']   : '') +
-    (options['expires'] ? '; expires=' + rfc1123_date(options['expires']) : '') +
-    (options['secure']  ? '; secure' : '')
-  end
-
-  # make HTTP header string
-  def CGI::header(*options)
-    if defined?(MOD_RUBY)
-      options.each{|option|
-        option.sub(/(.*?): (.*)/){
-          Apache::request.headers_out[$1] = $2
-        }
-      }
-      Apache::request.send_http_header
-      ''
-    else
-      if options.delete("nph") or (ENV['SERVER_SOFTWARE'] =~ /IIS/)
-        [(ENV['SERVER_PROTOCOL'] or "HTTP/1.0") + " 200 OK",
-         "Date: " + rfc1123_date(Time.now),
-         "Server: " + (ENV['SERVER_SOFTWARE'] or ""),
-         "Connection: close"] +
-        (options.empty? ? ["Content-Type: text/html"] : options)
-      else
-        options.empty? ? ["Content-Type: text/html"] : options
-      end.join(EOL) + EOL + EOL
-    end
-  end
-
-  # print HTTP header and string to $>
-  def CGI::print(*options)
-    $>.print CGI::header(*options) + yield.to_s
-  end
-
-  # print message to $>
-  def CGI::message(message, title = "", header = ["Content-Type: text/html"])
-    if message.kind_of?(Hash)
-      title   = message['title']
-      header  = message['header']
-      message = message['body']
-    end
-    CGI::print(*header){
-      CGI::tag("HTML"){
-        CGI::tag("HEAD"){ CGI.tag("TITLE"){ title } } +
-        CGI::tag("BODY"){ message }
-      }
-    }
-    true
-  end
-
-  # print error message to $> and exit
-  def CGI::error
-    CGI::message({'title'=>'ERROR', 'body'=>
-      CGI::tag("PRE"){
-        "ERROR: " + CGI::tag("STRONG"){ escapeHTML($!.to_s) } + "\n" + escapeHTML($@.join("\n"))
-      }
-    })
-    exit
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi.rb
deleted file mode 100644
index d6a1d11..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi.rb
+++ /dev/null
@@ -1,2303 +0,0 @@
-# 
-# cgi.rb - cgi support library
-# 
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# 
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-#
-# Author: Wakou Aoyama <wakou at ruby-lang.org>
-#
-# Documentation: Wakou Aoyama (RDoc'd and embellished by William Webber) 
-# 
-# == Overview
-#
-# The Common Gateway Interface (CGI) is a simple protocol
-# for passing an HTTP request from a web server to a
-# standalone program, and returning the output to the web
-# browser.  Basically, a CGI program is called with the
-# parameters of the request passed in either in the
-# environment (GET) or via $stdin (POST), and everything
-# it prints to $stdout is returned to the client.
-# 
-# This file holds the +CGI+ class.  This class provides
-# functionality for retrieving HTTP request parameters,
-# managing cookies, and generating HTML output.  See the
-# class documentation for more details and examples of use.
-#
-# The file cgi/session.rb provides session management
-# functionality; see that file for more details.
-#
-# See http://www.w3.org/CGI/ for more information on the CGI
-# protocol.
-
-raise "Please, use ruby 1.5.4 or later." if RUBY_VERSION < "1.5.4"
-
-require 'English'
-
-# CGI class.  See documentation for the file cgi.rb for an overview
-# of the CGI protocol.
-#
-# == Introduction
-#
-# CGI is a large class, providing several categories of methods, many of which
-# are mixed in from other modules.  Some of the documentation is in this class,
-# some in the modules CGI::QueryExtension and CGI::HtmlExtension.  See
-# CGI::Cookie for specific information on handling cookies, and cgi/session.rb
-# (CGI::Session) for information on sessions.
-#
-# For queries, CGI provides methods to get at environmental variables,
-# parameters, cookies, and multipart request data.  For responses, CGI provides
-# methods for writing output and generating HTML.
-#
-# Read on for more details.  Examples are provided at the bottom.
-#
-# == Queries
-#
-# The CGI class dynamically mixes in parameter and cookie-parsing
-# functionality,  environmental variable access, and support for
-# parsing multipart requests (including uploaded files) from the
-# CGI::QueryExtension module.
-#
-# === Environmental Variables
-#
-# The standard CGI environmental variables are available as read-only
-# attributes of a CGI object.  The following is a list of these variables:
-#
-#
-#   AUTH_TYPE               HTTP_HOST          REMOTE_IDENT
-#   CONTENT_LENGTH          HTTP_NEGOTIATE     REMOTE_USER
-#   CONTENT_TYPE            HTTP_PRAGMA        REQUEST_METHOD
-#   GATEWAY_INTERFACE       HTTP_REFERER       SCRIPT_NAME
-#   HTTP_ACCEPT             HTTP_USER_AGENT    SERVER_NAME
-#   HTTP_ACCEPT_CHARSET     PATH_INFO          SERVER_PORT
-#   HTTP_ACCEPT_ENCODING    PATH_TRANSLATED    SERVER_PROTOCOL
-#   HTTP_ACCEPT_LANGUAGE    QUERY_STRING       SERVER_SOFTWARE
-#   HTTP_CACHE_CONTROL      REMOTE_ADDR
-#   HTTP_FROM               REMOTE_HOST
-#
-#
-# For each of these variables, there is a corresponding attribute with the
-# same name, except all lower case and without a preceding HTTP_.  
-# +content_length+ and +server_port+ are integers; the rest are strings.
-#
-# === Parameters
-#
-# The method #params() returns a hash of all parameters in the request as
-# name/value-list pairs, where the value-list is an Array of one or more
-# values.  The CGI object itself also behaves as a hash of parameter names 
-# to values, but only returns a single value (as a String) for each 
-# parameter name.
-#
-# For instance, suppose the request contains the parameter 
-# "favourite_colours" with the multiple values "blue" and "green".  The
-# following behaviour would occur:
-#
-#   cgi.params["favourite_colours"]  # => ["blue", "green"]
-#   cgi["favourite_colours"]         # => "blue"
-#
-# If a parameter does not exist, the former method will return an empty
-# array, the latter an empty string.  The simplest way to test for existence
-# of a parameter is by the #has_key? method.
-#
-# === Cookies
-#
-# HTTP Cookies are automatically parsed from the request.  They are available
-# from the #cookies() accessor, which returns a hash from cookie name to
-# CGI::Cookie object.
-#
-# === Multipart requests
-#
-# If a request's method is POST and its content type is multipart/form-data, 
-# then it may contain uploaded files.  These are stored by the QueryExtension
-# module in the parameters of the request.  The parameter name is the name
-# attribute of the file input field, as usual.  However, the value is not
-# a string, but an IO object, either an IOString for small files, or a
-# Tempfile for larger ones.  This object also has the additional singleton
-# methods:
-#
-# #local_path():: the path of the uploaded file on the local filesystem
-# #original_filename():: the name of the file on the client computer
-# #content_type():: the content type of the file
-#
-# == Responses
-#
-# The CGI class provides methods for sending header and content output to
-# the HTTP client, and mixes in methods for programmatic HTML generation
-# from CGI::HtmlExtension and CGI::TagMaker modules.  The precise version of HTML
-# to use for HTML generation is specified at object creation time.
-#
-# === Writing output
-#
-# The simplest way to send output to the HTTP client is using the #out() method.
-# This takes the HTTP headers as a hash parameter, and the body content
-# via a block.  The headers can be generated as a string using the #header()
-# method.  The output stream can be written directly to using the #print()
-# method.
-#
-# === Generating HTML
-#
-# Each HTML element has a corresponding method for generating that
-# element as a String.  The name of this method is the same as that
-# of the element, all lowercase.  The attributes of the element are 
-# passed in as a hash, and the body as a no-argument block that evaluates
-# to a String.  The HTML generation module knows which elements are
-# always empty, and silently drops any passed-in body.  It also knows
-# which elements require matching closing tags and which don't.  However,
-# it does not know what attributes are legal for which elements.
-#
-# There are also some additional HTML generation methods mixed in from
-# the CGI::HtmlExtension module.  These include individual methods for the
-# different types of form inputs, and methods for elements that commonly
-# take particular attributes where the attributes can be directly specified
-# as arguments, rather than via a hash.
-#
-# == Examples of use
-# 
-# === Get form values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   value = cgi['field_name']   # <== value string for 'field_name'
-#     # if not 'field_name' included, then return "".
-#   fields = cgi.keys            # <== array of field names
-# 
-#   # returns true if form has 'field_name'
-#   cgi.has_key?('field_name')
-#   cgi.has_key?('field_name')
-#   cgi.include?('field_name')
-# 
-# CAUTION! cgi['field_name'] returned an Array with the old 
-# cgi.rb(included in ruby 1.6)
-# 
-# === Get form values as hash
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   params = cgi.params
-# 
-# cgi.params is a hash.
-# 
-#   cgi.params['new_field_name'] = ["value"]  # add new param
-#   cgi.params['field_name'] = ["new_value"]  # change value
-#   cgi.params.delete('field_name')           # delete param
-#   cgi.params.clear                          # delete all params
-# 
-# 
-# === Save form values to file
-# 
-#   require "pstore"
-#   db = PStore.new("query.db")
-#   db.transaction do
-#     db["params"] = cgi.params
-#   end
-# 
-# 
-# === Restore form values from file
-# 
-#   require "pstore"
-#   db = PStore.new("query.db")
-#   db.transaction do
-#     cgi.params = db["params"]
-#   end
-# 
-# 
-# === Get multipart form values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   value = cgi['field_name']   # <== value string for 'field_name'
-#   value.read                  # <== body of value
-#   value.local_path            # <== path to local file of value
-#   value.original_filename     # <== original filename of value
-#   value.content_type          # <== content_type of value
-# 
-# and value has StringIO or Tempfile class methods.
-# 
-# === Get cookie values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   values = cgi.cookies['name']  # <== array of 'name'
-#     # if not 'name' included, then return [].
-#   names = cgi.cookies.keys      # <== array of cookie names
-# 
-# and cgi.cookies is a hash.
-# 
-# === Get cookie objects
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   for name, cookie in cgi.cookies
-#     cookie.expires = Time.now + 30
-#   end
-#   cgi.out("cookie" => cgi.cookies) {"string"}
-# 
-#   cgi.cookies # { "name1" => cookie1, "name2" => cookie2, ... }
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   cgi.cookies['name'].expires = Time.now + 30
-#   cgi.out("cookie" => cgi.cookies['name']) {"string"}
-# 
-# === Print http header and html string to $DEFAULT_OUTPUT ($>)
-# 
-#   require "cgi"
-#   cgi = CGI.new("html3")  # add HTML generation methods
-#   cgi.out() do
-#     cgi.html() do
-#       cgi.head{ cgi.title{"TITLE"} } +
-#       cgi.body() do
-#         cgi.form() do
-#           cgi.textarea("get_text") +
-#           cgi.br +
-#           cgi.submit
-#         end +
-#         cgi.pre() do
-#           CGI::escapeHTML(
-#             "params: " + cgi.params.inspect + "\n" +
-#             "cookies: " + cgi.cookies.inspect + "\n" +
-#             ENV.collect() do |key, value|
-#               key + " --> " + value + "\n"
-#             end.join("")
-#           )
-#         end
-#       end
-#     end
-#   end
-# 
-#   # add HTML generation methods
-#   CGI.new("html3")    # html3.2
-#   CGI.new("html4")    # html4.01 (Strict)
-#   CGI.new("html4Tr")  # html4.01 Transitional
-#   CGI.new("html4Fr")  # html4.01 Frameset
-#
-class CGI
-
-  # :stopdoc:
-
-  # String for carriage return
-  CR  = "\015"
-
-  # String for linefeed
-  LF  = "\012"
-
-  # Standard internet newline sequence
-  EOL = CR + LF
-
-  REVISION = '$Id: cgi.rb 17815 2008-07-02 10:06:15Z shyouhei $' #:nodoc:
-
-  NEEDS_BINMODE = true if /WIN/ni.match(RUBY_PLATFORM) 
-
-  # Path separators in different environments.
-  PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'}
-
-  # HTTP status codes.
-  HTTP_STATUS = {
-    "OK"                  => "200 OK",
-    "PARTIAL_CONTENT"     => "206 Partial Content",
-    "MULTIPLE_CHOICES"    => "300 Multiple Choices",
-    "MOVED"               => "301 Moved Permanently",
-    "REDIRECT"            => "302 Found",
-    "NOT_MODIFIED"        => "304 Not Modified",
-    "BAD_REQUEST"         => "400 Bad Request",
-    "AUTH_REQUIRED"       => "401 Authorization Required",
-    "FORBIDDEN"           => "403 Forbidden",
-    "NOT_FOUND"           => "404 Not Found",
-    "METHOD_NOT_ALLOWED"  => "405 Method Not Allowed",
-    "NOT_ACCEPTABLE"      => "406 Not Acceptable",
-    "LENGTH_REQUIRED"     => "411 Length Required",
-    "PRECONDITION_FAILED" => "412 Rrecondition Failed",
-    "SERVER_ERROR"        => "500 Internal Server Error",
-    "NOT_IMPLEMENTED"     => "501 Method Not Implemented",
-    "BAD_GATEWAY"         => "502 Bad Gateway",
-    "VARIANT_ALSO_VARIES" => "506 Variant Also Negotiates"
-  }
-
-  # Abbreviated day-of-week names specified by RFC 822
-  RFC822_DAYS = %w[ Sun Mon Tue Wed Thu Fri Sat ]
-
-  # Abbreviated month names specified by RFC 822
-  RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
-
-  # :startdoc:
-
-  def env_table 
-    ENV
-  end
-
-  def stdinput
-    $stdin
-  end
-
-  def stdoutput
-    $DEFAULT_OUTPUT
-  end
-
-  private :env_table, :stdinput, :stdoutput
-
-  # URL-encode a string.
-  #   url_encoded_string = CGI::escape("'Stop!' said Fred")
-  #      # => "%27Stop%21%27+said+Fred"
-  def CGI::escape(string)
-    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
-      '%' + $1.unpack('H2' * $1.size).join('%').upcase
-    end.tr(' ', '+')
-  end
-
-
-  # URL-decode a string.
-  #   string = CGI::unescape("%27Stop%21%27+said+Fred")
-  #      # => "'Stop!' said Fred"
-  def CGI::unescape(string)
-    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
-      [$1.delete('%')].pack('H*')
-    end
-  end
-
-
-  # Escape special characters in HTML, namely &\"<>
-  #   CGI::escapeHTML('Usage: foo "bar" <baz>')
-  #      # => "Usage: foo "bar" <baz>"
-  def CGI::escapeHTML(string)
-    string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<')
-  end
-
-
-  # Unescape a string that has been HTML-escaped
-  #   CGI::unescapeHTML("Usage: foo "bar" <baz>")
-  #      # => "Usage: foo \"bar\" <baz>"
-  def CGI::unescapeHTML(string)
-    string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/n) do
-      match = $1.dup
-      case match
-      when 'amp'                 then '&'
-      when 'quot'                then '"'
-      when 'gt'                  then '>'
-      when 'lt'                  then '<'
-      when /\A#0*(\d+)\z/n       then
-        if Integer($1) < 256
-          Integer($1).chr
-        else
-          if Integer($1) < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U)
-            [Integer($1)].pack("U")
-          else
-            "&##{$1};"
-          end
-        end
-      when /\A#x([0-9a-f]+)\z/ni then
-        if $1.hex < 256
-          $1.hex.chr
-        else
-          if $1.hex < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U)
-            [$1.hex].pack("U")
-          else
-            "&#x#{$1};"
-          end
-        end
-      else
-        "&#{match};"
-      end
-    end
-  end
-
-
-  # Escape only the tags of certain HTML elements in +string+.
-  #
-  # Takes an element or elements or array of elements.  Each element
-  # is specified by the name of the element, without angle brackets.
-  # This matches both the start and the end tag of that element.
-  # The attribute list of the open tag will also be escaped (for
-  # instance, the double-quotes surrounding attribute values).
-  #
-  #   print CGI::escapeElement('<BR><A HREF="url"></A>', "A", "IMG")
-  #     # "<BR><A HREF="url"></A&gt"
-  #
-  #   print CGI::escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"])
-  #     # "<BR><A HREF="url"></A&gt"
-  def CGI::escapeElement(string, *elements)
-    elements = elements[0] if elements[0].kind_of?(Array)
-    unless elements.empty?
-      string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/ni) do
-        CGI::escapeHTML($&)
-      end
-    else
-      string
-    end
-  end
-
-
-  # Undo escaping such as that done by CGI::escapeElement()
-  #
-  #   print CGI::unescapeElement(
-  #           CGI::escapeHTML('<BR><A HREF="url"></A>'), "A", "IMG")
-  #     # "<BR><A HREF="url"></A>"
-  # 
-  #   print CGI::unescapeElement(
-  #           CGI::escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"])
-  #     # "<BR><A HREF="url"></A>"
-  def CGI::unescapeElement(string, *elements)
-    elements = elements[0] if elements[0].kind_of?(Array)
-    unless elements.empty?
-      string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/ni) do
-        CGI::unescapeHTML($&)
-      end
-    else
-      string
-    end
-  end
-
-
-  # Format a +Time+ object as a String using the format specified by RFC 1123.
-  #
-  #   CGI::rfc1123_date(Time.now)
-  #     # Sat, 01 Jan 2000 00:00:00 GMT
-  def CGI::rfc1123_date(time)
-    t = time.clone.gmtime
-    return format("%s, %.2d %s %.4d %.2d:%.2d:%.2d GMT",
-                RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
-                t.hour, t.min, t.sec)
-  end
-
-
-  # Create an HTTP header block as a string.
-  #
-  # Includes the empty line that ends the header block.
-  #
-  # +options+ can be a string specifying the Content-Type (defaults
-  # to text/html), or a hash of header key/value pairs.  The following
-  # header keys are recognized:
-  #
-  # type:: the Content-Type header.  Defaults to "text/html"
-  # charset:: the charset of the body, appended to the Content-Type header.
-  # nph:: a boolean value.  If true, prepend protocol string and status code, and
-  #       date; and sets default values for "server" and "connection" if not
-  #       explicitly set.
-  # status:: the HTTP status code, returned as the Status header.  See the
-  #          list of available status codes below.
-  # server:: the server software, returned as the Server header.
-  # connection:: the connection type, returned as the Connection header (for 
-  #              instance, "close".
-  # length:: the length of the content that will be sent, returned as the
-  #          Content-Length header.
-  # language:: the language of the content, returned as the Content-Language
-  #            header.
-  # expires:: the time on which the current content expires, as a +Time+
-  #           object, returned as the Expires header.
-  # cookie:: a cookie or cookies, returned as one or more Set-Cookie headers.
-  #          The value can be the literal string of the cookie; a CGI::Cookie
-  #          object; an Array of literal cookie strings or Cookie objects; or a 
-  #          hash all of whose values are literal cookie strings or Cookie objects.
-  #          These cookies are in addition to the cookies held in the
-  #          @output_cookies field.
-  #
-  # Other header lines can also be set; they are appended as key: value.
-  # 
-  #   header
-  #     # Content-Type: text/html
-  # 
-  #   header("text/plain")
-  #     # Content-Type: text/plain
-  # 
-  #   header("nph"        => true,
-  #          "status"     => "OK",  # == "200 OK"
-  #            # "status"     => "200 GOOD",
-  #          "server"     => ENV['SERVER_SOFTWARE'],
-  #          "connection" => "close",
-  #          "type"       => "text/html",
-  #          "charset"    => "iso-2022-jp",
-  #            # Content-Type: text/html; charset=iso-2022-jp
-  #          "length"     => 103,
-  #          "language"   => "ja",
-  #          "expires"    => Time.now + 30,
-  #          "cookie"     => [cookie1, cookie2],
-  #          "my_header1" => "my_value"
-  #          "my_header2" => "my_value")
-  # 
-  # The status codes are:
-  # 
-  #   "OK"                  --> "200 OK"
-  #   "PARTIAL_CONTENT"     --> "206 Partial Content"
-  #   "MULTIPLE_CHOICES"    --> "300 Multiple Choices"
-  #   "MOVED"               --> "301 Moved Permanently"
-  #   "REDIRECT"            --> "302 Found"
-  #   "NOT_MODIFIED"        --> "304 Not Modified"
-  #   "BAD_REQUEST"         --> "400 Bad Request"
-  #   "AUTH_REQUIRED"       --> "401 Authorization Required"
-  #   "FORBIDDEN"           --> "403 Forbidden"
-  #   "NOT_FOUND"           --> "404 Not Found"
-  #   "METHOD_NOT_ALLOWED"  --> "405 Method Not Allowed"
-  #   "NOT_ACCEPTABLE"      --> "406 Not Acceptable"
-  #   "LENGTH_REQUIRED"     --> "411 Length Required"
-  #   "PRECONDITION_FAILED" --> "412 Precondition Failed"
-  #   "SERVER_ERROR"        --> "500 Internal Server Error"
-  #   "NOT_IMPLEMENTED"     --> "501 Method Not Implemented"
-  #   "BAD_GATEWAY"         --> "502 Bad Gateway"
-  #   "VARIANT_ALSO_VARIES" --> "506 Variant Also Negotiates"
-  # 
-  # This method does not perform charset conversion. 
-  #
-  def header(options = "text/html")
-
-    buf = ""
-
-    case options
-    when String
-      options = { "type" => options }
-    when Hash
-      options = options.dup
-    end
-
-    unless options.has_key?("type")
-      options["type"] = "text/html"
-    end
-
-    if options.has_key?("charset")
-      options["type"] += "; charset=" + options.delete("charset")
-    end
-
-    options.delete("nph") if defined?(MOD_RUBY)
-    if options.delete("nph") or
-        (/IIS\/(\d+)/n.match(env_table['SERVER_SOFTWARE']) and $1.to_i < 5)
-      buf += (env_table["SERVER_PROTOCOL"] or "HTTP/1.0")  + " " +
-             (HTTP_STATUS[options["status"]] or options["status"] or "200 OK") +
-             EOL +
-             "Date: " + CGI::rfc1123_date(Time.now) + EOL
-
-      unless options.has_key?("server")
-        options["server"] = (env_table['SERVER_SOFTWARE'] or "")
-      end
-
-      unless options.has_key?("connection")
-        options["connection"] = "close"
-      end
-
-      options.delete("status")
-    end
-
-    if options.has_key?("status")
-      buf += "Status: " +
-             (HTTP_STATUS[options["status"]] or options["status"]) + EOL
-      options.delete("status")
-    end
-
-    if options.has_key?("server")
-      buf += "Server: " + options.delete("server") + EOL
-    end
-
-    if options.has_key?("connection")
-      buf += "Connection: " + options.delete("connection") + EOL
-    end
-
-    buf += "Content-Type: " + options.delete("type") + EOL
-
-    if options.has_key?("length")
-      buf += "Content-Length: " + options.delete("length").to_s + EOL
-    end
-
-    if options.has_key?("language")
-      buf += "Content-Language: " + options.delete("language") + EOL
-    end
-
-    if options.has_key?("expires")
-      buf += "Expires: " + CGI::rfc1123_date( options.delete("expires") ) + EOL
-    end
-
-    if options.has_key?("cookie")
-      if options["cookie"].kind_of?(String) or
-           options["cookie"].kind_of?(Cookie)
-        buf += "Set-Cookie: " + options.delete("cookie").to_s + EOL
-      elsif options["cookie"].kind_of?(Array)
-        options.delete("cookie").each{|cookie|
-          buf += "Set-Cookie: " + cookie.to_s + EOL
-        }
-      elsif options["cookie"].kind_of?(Hash)
-        options.delete("cookie").each_value{|cookie|
-          buf += "Set-Cookie: " + cookie.to_s + EOL
-        }
-      end
-    end
-    if @output_cookies
-      for cookie in @output_cookies
-        buf += "Set-Cookie: " + cookie.to_s + EOL
-      end
-    end
-
-    options.each{|key, value|
-      buf += key + ": " + value.to_s + EOL
-    }
-
-    if defined?(MOD_RUBY)
-      table = Apache::request.headers_out
-      buf.scan(/([^:]+): (.+)#{EOL}/n){ |name, value|
-        warn sprintf("name:%s value:%s\n", name, value) if $DEBUG
-        case name
-        when 'Set-Cookie'
-          table.add(name, value)
-        when /^status$/ni
-          Apache::request.status_line = value
-          Apache::request.status = value.to_i
-        when /^content-type$/ni
-          Apache::request.content_type = value
-        when /^content-encoding$/ni
-          Apache::request.content_encoding = value
-        when /^location$/ni
-	  if Apache::request.status == 200
-	    Apache::request.status = 302
-	  end
-          Apache::request.headers_out[name] = value
-        else
-          Apache::request.headers_out[name] = value
-        end
-      }
-      Apache::request.send_http_header
-      ''
-    else
-      buf + EOL
-    end
-
-  end # header()
-
-
-  # Print an HTTP header and body to $DEFAULT_OUTPUT ($>)
-  #
-  # The header is provided by +options+, as for #header().
-  # The body of the document is that returned by the passed-
-  # in block.  This block takes no arguments.  It is required.
-  #
-  #   cgi = CGI.new
-  #   cgi.out{ "string" }
-  #     # Content-Type: text/html
-  #     # Content-Length: 6
-  #     #
-  #     # string
-  # 
-  #   cgi.out("text/plain") { "string" }
-  #     # Content-Type: text/plain
-  #     # Content-Length: 6
-  #     #
-  #     # string
-  # 
-  #   cgi.out("nph"        => true,
-  #           "status"     => "OK",  # == "200 OK"
-  #           "server"     => ENV['SERVER_SOFTWARE'],
-  #           "connection" => "close",
-  #           "type"       => "text/html",
-  #           "charset"    => "iso-2022-jp",
-  #             # Content-Type: text/html; charset=iso-2022-jp
-  #           "language"   => "ja",
-  #           "expires"    => Time.now + (3600 * 24 * 30),
-  #           "cookie"     => [cookie1, cookie2],
-  #           "my_header1" => "my_value",
-  #           "my_header2" => "my_value") { "string" }
-  # 
-  # Content-Length is automatically calculated from the size of
-  # the String returned by the content block.
-  #
-  # If ENV['REQUEST_METHOD'] == "HEAD", then only the header
-  # is outputted (the content block is still required, but it
-  # is ignored).
-  # 
-  # If the charset is "iso-2022-jp" or "euc-jp" or "shift_jis" then
-  # the content is converted to this charset, and the language is set 
-  # to "ja".
-  def out(options = "text/html") # :yield:
-
-    options = { "type" => options } if options.kind_of?(String)
-    content = yield
-
-    if options.has_key?("charset")
-      require "nkf"
-      case options["charset"]
-      when /iso-2022-jp/ni
-        content = NKF::nkf('-m0 -x -j', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      when /euc-jp/ni
-        content = NKF::nkf('-m0 -x -e', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      when /shift_jis/ni
-        content = NKF::nkf('-m0 -x -s', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      end
-    end
-
-    options["length"] = content.length.to_s
-    output = stdoutput
-    output.binmode if defined? output.binmode
-    output.print header(options)
-    output.print content unless "HEAD" == env_table['REQUEST_METHOD']
-  end
-
-
-  # Print an argument or list of arguments to the default output stream
-  #
-  #   cgi = CGI.new
-  #   cgi.print    # default:  cgi.print == $DEFAULT_OUTPUT.print
-  def print(*options)
-    stdoutput.print(*options)
-  end
-
-  require "delegate"
-
-  # Class representing an HTTP cookie.
-  #
-  # In addition to its specific fields and methods, a Cookie instance
-  # is a delegator to the array of its values.
-  #
-  # See RFC 2965.
-  #
-  # == Examples of use
-  #   cookie1 = CGI::Cookie::new("name", "value1", "value2", ...)
-  #   cookie1 = CGI::Cookie::new("name" => "name", "value" => "value")
-  #   cookie1 = CGI::Cookie::new('name'    => 'name',
-  #                              'value'   => ['value1', 'value2', ...],
-  #                              'path'    => 'path',   # optional
-  #                              'domain'  => 'domain', # optional
-  #                              'expires' => Time.now, # optional
-  #                              'secure'  => true      # optional
-  #                             )
-  # 
-  #   cgi.out("cookie" => [cookie1, cookie2]) { "string" }
-  # 
-  #   name    = cookie1.name
-  #   values  = cookie1.value
-  #   path    = cookie1.path
-  #   domain  = cookie1.domain
-  #   expires = cookie1.expires
-  #   secure  = cookie1.secure
-  # 
-  #   cookie1.name    = 'name'
-  #   cookie1.value   = ['value1', 'value2', ...]
-  #   cookie1.path    = 'path'
-  #   cookie1.domain  = 'domain'
-  #   cookie1.expires = Time.now + 30
-  #   cookie1.secure  = true
-  class Cookie < DelegateClass(Array)
-
-    # Create a new CGI::Cookie object.
-    #
-    # The contents of the cookie can be specified as a +name+ and one
-    # or more +value+ arguments.  Alternatively, the contents can
-    # be specified as a single hash argument.  The possible keywords of
-    # this hash are as follows:
-    #
-    # name:: the name of the cookie.  Required.
-    # value:: the cookie's value or list of values.
-    # path:: the path for which this cookie applies.  Defaults to the
-    #        base directory of the CGI script.
-    # domain:: the domain for which this cookie applies.
-    # expires:: the time at which this cookie expires, as a +Time+ object.
-    # secure:: whether this cookie is a secure cookie or not (default to
-    #          false).  Secure cookies are only transmitted to HTTPS 
-    #          servers.
-    #
-    # These keywords correspond to attributes of the cookie object.
-    def initialize(name = "", *value)
-      options = if name.kind_of?(String)
-                  { "name" => name, "value" => value }
-                else
-                  name
-                end
-      unless options.has_key?("name")
-        raise ArgumentError, "`name' required"
-      end
-
-      @name = options["name"]
-      @value = Array(options["value"])
-      # simple support for IE
-      if options["path"]
-        @path = options["path"]
-      else
-        %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
-        @path = ($1 or "")
-      end
-      @domain = options["domain"]
-      @expires = options["expires"]
-      @secure = options["secure"] == true ? true : false
-
-      super(@value)
-    end
-
-    attr_accessor("name", "value", "path", "domain", "expires")
-    attr_reader("secure")
-
-    # Set whether the Cookie is a secure cookie or not.
-    #
-    # +val+ must be a boolean.
-    def secure=(val)
-      @secure = val if val == true or val == false
-      @secure
-    end
-
-    # Convert the Cookie to its string representation.
-    def to_s
-      buf = ""
-      buf += @name + '='
-
-      if @value.kind_of?(String)
-        buf += CGI::escape(@value)
-      else
-        buf += @value.collect{|v| CGI::escape(v) }.join("&")
-      end
-
-      if @domain
-        buf += '; domain=' + @domain
-      end
-
-      if @path
-        buf += '; path=' + @path
-      end
-
-      if @expires
-        buf += '; expires=' + CGI::rfc1123_date(@expires)
-      end
-
-      if @secure == true
-        buf += '; secure'
-      end
-
-      buf
-    end
-
-  end # class Cookie
-
-
-  # Parse a raw cookie string into a hash of cookie-name=>Cookie
-  # pairs.
-  #
-  #   cookies = CGI::Cookie::parse("raw_cookie_string")
-  #     # { "name1" => cookie1, "name2" => cookie2, ... }
-  #
-  def Cookie::parse(raw_cookie)
-    cookies = Hash.new([])
-    return cookies unless raw_cookie
-
-    raw_cookie.split(/[;,]\s?/).each do |pairs|
-      name, values = pairs.split('=',2)
-      next unless name and values
-      name = CGI::unescape(name)
-      values ||= ""
-      values = values.split('&').collect{|v| CGI::unescape(v) }
-      if cookies.has_key?(name)
-        values = cookies[name].value + values
-      end
-      cookies[name] = Cookie::new({ "name" => name, "value" => values })
-    end
-
-    cookies
-  end
-
-  # Parse an HTTP query string into a hash of key=>value pairs.
-  #
-  #   params = CGI::parse("query_string")
-  #     # {"name1" => ["value1", "value2", ...],
-  #     #  "name2" => ["value1", "value2", ...], ... }
-  #
-  def CGI::parse(query)
-    params = Hash.new([].freeze)
-
-    query.split(/[&;]/n).each do |pairs|
-      key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) }
-      if params.has_key?(key)
-        params[key].push(value)
-      else
-        params[key] = [value]
-      end
-    end
-
-    params
-  end
-
-  # Mixin module. It provides the follow functionality groups:
-  #
-  # 1. Access to CGI environment variables as methods.  See 
-  #    documentation to the CGI class for a list of these variables.
-  #
-  # 2. Access to cookies, including the cookies attribute.
-  #
-  # 3. Access to parameters, including the params attribute, and overloading
-  #    [] to perform parameter value lookup by key.
-  #
-  # 4. The initialize_query method, for initialising the above
-  #    mechanisms, handling multipart forms, and allowing the
-  #    class to be used in "offline" mode.
-  #
-  module QueryExtension
-
-    %w[ CONTENT_LENGTH SERVER_PORT ].each do |env|
-      define_method(env.sub(/^HTTP_/n, '').downcase) do
-        (val = env_table[env]) && Integer(val)
-      end
-    end
-
-    %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
-        PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST
-        REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME
-        SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE
-
-        HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING
-        HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_HOST
-        HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT ].each do |env|
-      define_method(env.sub(/^HTTP_/n, '').downcase) do
-        env_table[env]
-      end
-    end
-
-    # Get the raw cookies as a string.
-    def raw_cookie
-      env_table["HTTP_COOKIE"]
-    end
-
-    # Get the raw RFC2965 cookies as a string.
-    def raw_cookie2
-      env_table["HTTP_COOKIE2"]
-    end
-
-    # Get the cookies as a hash of cookie-name=>Cookie pairs.
-    attr_accessor("cookies")
-
-    # Get the parameters as a hash of name=>values pairs, where
-    # values is an Array.
-    attr("params")
-
-    # Set all the parameters.
-    def params=(hash)
-      @params.clear
-      @params.update(hash)
-    end
-
-    def read_multipart(boundary, content_length)
-      params = Hash.new([])
-      boundary = "--" + boundary
-      quoted_boundary = Regexp.quote(boundary, "n")
-      buf = ""
-      bufsize = 10 * 1024
-      boundary_end=""
-
-      # start multipart/form-data
-      stdinput.binmode if defined? stdinput.binmode
-      boundary_size = boundary.size + EOL.size
-      content_length -= boundary_size
-      status = stdinput.read(boundary_size)
-      if nil == status
-        raise EOFError, "no content body"
-      elsif boundary + EOL != status
-        raise EOFError, "bad content body"
-      end
-
-      loop do
-        head = nil
-        if 10240 < content_length
-          require "tempfile"
-          body = Tempfile.new("CGI")
-        else
-          begin
-            require "stringio"
-            body = StringIO.new
-          rescue LoadError
-            require "tempfile"
-            body = Tempfile.new("CGI")
-          end
-        end
-        body.binmode if defined? body.binmode
-
-        until head and /#{quoted_boundary}(?:#{EOL}|--)/n.match(buf)
-
-          if (not head) and /#{EOL}#{EOL}/n.match(buf)
-            buf = buf.sub(/\A((?:.|\n)*?#{EOL})#{EOL}/n) do
-              head = $1.dup
-              ""
-            end
-            next
-          end
-
-          if head and ( (EOL + boundary + EOL).size < buf.size )
-            body.print buf[0 ... (buf.size - (EOL + boundary + EOL).size)]
-            buf[0 ... (buf.size - (EOL + boundary + EOL).size)] = ""
-          end
-
-          c = if bufsize < content_length
-                stdinput.read(bufsize)
-              else
-                stdinput.read(content_length)
-              end
-          if c.nil? || c.empty?
-            raise EOFError, "bad content body"
-          end
-          buf.concat(c)
-          content_length -= c.size
-        end
-
-        buf = buf.sub(/\A((?:.|\n)*?)(?:[\r\n]{1,2})?#{quoted_boundary}([\r\n]{1,2}|--)/n) do
-          body.print $1
-          if "--" == $2
-            content_length = -1
-          end
-          boundary_end = $2.dup
-          ""
-        end
-
-        body.rewind
-
-        /Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni.match(head)
-	filename = ($1 or $2 or "")
-	if /Mac/ni.match(env_table['HTTP_USER_AGENT']) and
-	    /Mozilla/ni.match(env_table['HTTP_USER_AGENT']) and
-	    (not /MSIE/ni.match(env_table['HTTP_USER_AGENT']))
-	  filename = CGI::unescape(filename)
-	end
-        
-        /Content-Type: ([^\s]*)/ni.match(head)
-        content_type = ($1 or "")
-
-        (class << body; self; end).class_eval do
-          alias local_path path
-          define_method(:original_filename) {filename.dup.taint}
-          define_method(:content_type) {content_type.dup.taint}
-        end
-
-        /Content-Disposition:.* name="?([^\";\s]*)"?/ni.match(head)
-        name = $1.dup
-
-        if params.has_key?(name)
-          params[name].push(body)
-        else
-          params[name] = [body]
-        end
-        break if buf.size == 0
-        break if content_length == -1
-      end
-      raise EOFError, "bad boundary end of body part" unless boundary_end=~/--/
-
-      params
-    end # read_multipart
-    private :read_multipart
-
-    # offline mode. read name=value pairs on standard input.
-    def read_from_cmdline
-      require "shellwords"
-
-      string = unless ARGV.empty?
-        ARGV.join(' ')
-      else
-        if STDIN.tty?
-          STDERR.print(
-            %|(offline mode: enter name=value pairs on standard input)\n|
-          )
-        end
-        readlines.join(' ').gsub(/\n/n, '')
-      end.gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26')
-
-      words = Shellwords.shellwords(string)
-
-      if words.find{|x| /=/n.match(x) }
-        words.join('&')
-      else
-        words.join('+')
-      end
-    end
-    private :read_from_cmdline
-
-    # Initialize the data from the query.
-    #
-    # Handles multipart forms (in particular, forms that involve file uploads).
-    # Reads query parameters in the @params field, and cookies into @cookies.
-    def initialize_query()
-      if ("POST" == env_table['REQUEST_METHOD']) and
-         %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n.match(env_table['CONTENT_TYPE'])
-        boundary = $1.dup
-        @multipart = true
-        @params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH']))
-      else
-        @multipart = false
-        @params = CGI::parse(
-                    case env_table['REQUEST_METHOD']
-                    when "GET", "HEAD"
-                      if defined?(MOD_RUBY)
-                        Apache::request.args or ""
-                      else
-                        env_table['QUERY_STRING'] or ""
-                      end
-                    when "POST"
-                      stdinput.binmode if defined? stdinput.binmode
-                      stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''
-                    else
-                      read_from_cmdline
-                    end
-                  )
-      end
-
-      @cookies = CGI::Cookie::parse((env_table['HTTP_COOKIE'] or env_table['COOKIE']))
-    end
-    private :initialize_query
-
-    def multipart?
-      @multipart
-    end
-
-    module Value    # :nodoc:
-      def set_params(params)
-        @params = params
-      end
-      def [](idx, *args)
-        if args.size == 0
-          warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-          @params[idx]
-        else
-          super[idx,*args]
-        end
-      end
-      def first
-        warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-        self
-      end
-      alias last first
-      def to_a
-        @params || [self]
-      end
-      alias to_ary to_a   	# to be rhs of multiple assignment
-    end
-
-    # Get the value for the parameter with a given key.
-    #
-    # If the parameter has multiple values, only the first will be 
-    # retrieved; use #params() to get the array of values.
-    def [](key)
-      params = @params[key]
-      return '' unless params
-      value = params[0]
-      if @multipart
-        if value
-          return value
-        elsif defined? StringIO
-          StringIO.new("")
-        else
-          Tempfile.new("CGI")
-        end
-      else
-        str = if value then value.dup else "" end
-        str.extend(Value)
-        str.set_params(params)
-        str
-      end
-    end
-
-    # Return all parameter keys as an array.
-    def keys(*args)
-      @params.keys(*args)
-    end
-
-    # Returns true if a given parameter key exists in the query.
-    def has_key?(*args)
-      @params.has_key?(*args)
-    end
-    alias key? has_key?
-    alias include? has_key?
-
-  end # QueryExtension
-
-
-  # Prettify (indent) an HTML string.
-  #
-  # +string+ is the HTML string to indent.  +shift+ is the indentation
-  # unit to use; it defaults to two spaces.
-  #
-  #   print CGI::pretty("<HTML><BODY></BODY></HTML>")
-  #     # <HTML>
-  #     #   <BODY>
-  #     #   </BODY>
-  #     # </HTML>
-  # 
-  #   print CGI::pretty("<HTML><BODY></BODY></HTML>", "\t")
-  #     # <HTML>
-  #     #         <BODY>
-  #     #         </BODY>
-  #     # </HTML>
-  #
-  def CGI::pretty(string, shift = "  ")
-    lines = string.gsub(/(?!\A)<(?:.|\n)*?>/n, "\n\\0").gsub(/<(?:.|\n)*?>(?!\n)/n, "\\0\n")
-    end_pos = 0
-    while end_pos = lines.index(/^<\/(\w+)/n, end_pos)
-      element = $1.dup
-      start_pos = lines.rindex(/^\s*<#{element}/ni, end_pos)
-      lines[start_pos ... end_pos] = "__" + lines[start_pos ... end_pos].gsub(/\n(?!\z)/n, "\n" + shift) + "__"
-    end
-    lines.gsub(/^((?:#{Regexp::quote(shift)})*)__(?=<\/?\w)/n, '\1')
-  end
-
-
-  # Base module for HTML-generation mixins.
-  #
-  # Provides methods for code generation for tags following
-  # the various DTD element types.
-  module TagMaker # :nodoc:
-
-    # Generate code for an element with required start and end tags.
-    #
-    #   - -
-    def nn_element_def(element)
-      nOE_element_def(element, <<-END)
-          if block_given?
-            yield.to_s
-          else
-            ""
-          end +
-          "</#{element.upcase}>"
-      END
-    end
-
-    # Generate code for an empty element.
-    #
-    #   - O EMPTY
-    def nOE_element_def(element, append = nil)
-      s = <<-END
-          "<#{element.upcase}" + attributes.collect{|name, value|
-            next unless value
-            " " + CGI::escapeHTML(name) +
-            if true == value
-              ""
-            else
-              '="' + CGI::escapeHTML(value) + '"'
-            end
-          }.to_s + ">"
-      END
-      s.sub!(/\Z/, " +") << append if append
-      s
-    end
-
-    # Generate code for an element for which the end (and possibly the
-    # start) tag is optional.
-    #
-    #   O O or - O
-    def nO_element_def(element)
-      nOE_element_def(element, <<-END)
-          if block_given?
-            yield.to_s + "</#{element.upcase}>"
-          else
-            ""
-          end
-      END
-    end
-
-  end # TagMaker
-
-
-  #
-  # Mixin module providing HTML generation methods.
-  #
-  # For example,
-  #   cgi.a("http://www.example.com") { "Example" }
-  #     # => "<A HREF=\"http://www.example.com\">Example</A>"
-  #
-  # Modules Http3, Http4, etc., contain more basic HTML-generation methods
-  # (:title, :center, etc.).
-  #
-  # See class CGI for a detailed example. 
-  #
-  module HtmlExtension
-
-
-    # Generate an Anchor element as a string.
-    #
-    # +href+ can either be a string, giving the URL
-    # for the HREF attribute, or it can be a hash of
-    # the element's attributes.
-    #
-    # The body of the element is the string returned by the no-argument
-    # block passed in.
-    #
-    #   a("http://www.example.com") { "Example" }
-    #     # => "<A HREF=\"http://www.example.com\">Example</A>"
-    #
-    #   a("HREF" => "http://www.example.com", "TARGET" => "_top") { "Example" }
-    #     # => "<A HREF=\"http://www.example.com\" TARGET=\"_top\">Example</A>"
-    #
-    def a(href = "") # :yield:
-      attributes = if href.kind_of?(String)
-                     { "HREF" => href }
-                   else
-                     href
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-    # Generate a Document Base URI element as a String. 
-    #
-    # +href+ can either by a string, giving the base URL for the HREF
-    # attribute, or it can be a has of the element's attributes.
-    #
-    # The passed-in no-argument block is ignored.
-    #
-    #   base("http://www.example.com/cgi")
-    #     # => "<BASE HREF=\"http://www.example.com/cgi\">"
-    def base(href = "") # :yield:
-      attributes = if href.kind_of?(String)
-                     { "HREF" => href }
-                   else
-                     href
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-    # Generate a BlockQuote element as a string.
-    #
-    # +cite+ can either be a string, give the URI for the source of
-    # the quoted text, or a hash, giving all attributes of the element,
-    # or it can be omitted, in which case the element has no attributes.
-    #
-    # The body is provided by the passed-in no-argument block
-    #
-    #   blockquote("http://www.example.com/quotes/foo.html") { "Foo!" }
-    #     #=> "<BLOCKQUOTE CITE=\"http://www.example.com/quotes/foo.html\">Foo!</BLOCKQUOTE>
-    def blockquote(cite = nil)  # :yield:
-      attributes = if cite.kind_of?(String)
-                     { "CITE" => cite }
-                   else
-                     cite or ""
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-
-    # Generate a Table Caption element as a string.
-    #
-    # +align+ can be a string, giving the alignment of the caption
-    # (one of top, bottom, left, or right).  It can be a hash of
-    # all the attributes of the element.  Or it can be omitted.
-    #
-    # The body of the element is provided by the passed-in no-argument block.
-    #
-    #   caption("left") { "Capital Cities" }
-    #     # => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
-    def caption(align = nil) # :yield:
-      attributes = if align.kind_of?(String)
-                     { "ALIGN" => align }
-                   else
-                     align or ""
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-
-    # Generate a Checkbox Input element as a string.
-    #
-    # The attributes of the element can be specified as three arguments,
-    # +name+, +value+, and +checked+.  +checked+ is a boolean value;
-    # if true, the CHECKED attribute will be included in the element.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   checkbox("name")
-    #     # = checkbox("NAME" => "name")
-    # 
-    #   checkbox("name", "value")
-    #     # = checkbox("NAME" => "name", "VALUE" => "value")
-    # 
-    #   checkbox("name", "value", true)
-    #     # = checkbox("NAME" => "name", "VALUE" => "value", "CHECKED" => true)
-    def checkbox(name = "", value = nil, checked = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "checkbox", "NAME" => name,
-                       "VALUE" => value, "CHECKED" => checked }
-                   else
-                     name["TYPE"] = "checkbox"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a sequence of checkbox elements, as a String.
-    #
-    # The checkboxes will all have the same +name+ attribute.
-    # Each checkbox is followed by a label.
-    # There will be one checkbox for each value.  Each value
-    # can be specified as a String, which will be used both
-    # as the value of the VALUE attribute and as the label
-    # for that checkbox.  A single-element array has the
-    # same effect.
-    #
-    # Each value can also be specified as a three-element array.
-    # The first element is the VALUE attribute; the second is the
-    # label; and the third is a boolean specifying whether this
-    # checkbox is CHECKED.
-    #
-    # Each value can also be specified as a two-element
-    # array, by omitting either the value element (defaults
-    # to the same as the label), or the boolean checked element
-    # (defaults to false).
-    #
-    #   checkbox_group("name", "foo", "bar", "baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
-    # 
-    #   checkbox_group("name", ["foo"], ["bar", true], "baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
-    # 
-    #   checkbox_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="1">Foo
-    #     # <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="2">Bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="Baz">Baz
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => ["foo", "bar", "baz"])
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => [["foo"], ["bar", true], "baz"])
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    def checkbox_group(name = "", *values)
-      if name.kind_of?(Hash)
-        values = name["VALUES"]
-        name = name["NAME"]
-      end
-      values.collect{|value|
-        if value.kind_of?(String)
-          checkbox(name, value) + value
-        else
-          if value[value.size - 1] == true
-            checkbox(name, value[0], true) +
-            value[value.size - 2]
-          else
-            checkbox(name, value[0]) +
-            value[value.size - 1]
-          end
-        end
-      }.to_s
-    end
-
-
-    # Generate an File Upload Input element as a string.
-    #
-    # The attributes of the element can be specified as three arguments,
-    # +name+, +size+, and +maxlength+.  +maxlength+ is the maximum length
-    # of the file's _name_, not of the file's _contents_.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # See #multipart_form() for forms that include file uploads.
-    #
-    #   file_field("name")
-    #     # <INPUT TYPE="file" NAME="name" SIZE="20">
-    # 
-    #   file_field("name", 40)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40">
-    # 
-    #   file_field("name", 40, 100)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40" MAXLENGTH="100">
-    # 
-    #   file_field("NAME" => "name", "SIZE" => 40)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40">
-    def file_field(name = "", size = 20, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "file", "NAME" => name,
-                       "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "file"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-
-    # Generate a Form element as a string.
-    #
-    # +method+ should be either "get" or "post", and defaults to the latter.
-    # +action+ defaults to the current CGI script name.  +enctype+
-    # defaults to "application/x-www-form-urlencoded".  
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # See also #multipart_form() for forms that include file uploads.
-    #
-    #   form{ "string" }
-    #     # <FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("get") { "string" }
-    #     # <FORM METHOD="get" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("get", "url") { "string" }
-    #     # <FORM METHOD="get" ACTION="url" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("METHOD" => "post", "ENCTYPE" => "enctype") { "string" }
-    #     # <FORM METHOD="post" ENCTYPE="enctype">string</FORM>
-    def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded")
-      attributes = if method.kind_of?(String)
-                     { "METHOD" => method, "ACTION" => action,
-                       "ENCTYPE" => enctype } 
-                   else
-                     unless method.has_key?("METHOD")
-                       method["METHOD"] = "post"
-                     end
-                     unless method.has_key?("ENCTYPE")
-                       method["ENCTYPE"] = enctype
-                     end
-                     method
-                   end
-      if block_given?
-        body = yield
-      else
-        body = ""
-      end
-      if @output_hidden
-        body += @output_hidden.collect{|k,v|
-          "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
-        }.to_s
-      end
-      super(attributes){body}
-    end
-
-    # Generate a Hidden Input element as a string.
-    #
-    # The attributes of the element can be specified as two arguments,
-    # +name+ and +value+.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   hidden("name")
-    #     # <INPUT TYPE="hidden" NAME="name">
-    # 
-    #   hidden("name", "value")
-    #     # <INPUT TYPE="hidden" NAME="name" VALUE="value">
-    # 
-    #   hidden("NAME" => "name", "VALUE" => "reset", "ID" => "foo")
-    #     # <INPUT TYPE="hidden" NAME="name" VALUE="value" ID="foo">
-    def hidden(name = "", value = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "hidden", "NAME" => name, "VALUE" => value }
-                   else
-                     name["TYPE"] = "hidden"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a top-level HTML element as a string.
-    #
-    # The attributes of the element are specified as a hash.  The
-    # pseudo-attribute "PRETTY" can be used to specify that the generated
-    # HTML string should be indented.  "PRETTY" can also be specified as
-    # a string as the sole argument to this method.  The pseudo-attribute
-    # "DOCTYPE", if given, is used as the leading DOCTYPE SGML tag; it
-    # should include the entire text of this tag, including angle brackets.
-    #
-    # The body of the html element is supplied as a block.
-    # 
-    #   html{ "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML>string</HTML>
-    # 
-    #   html("LANG" => "ja") { "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML LANG="ja">string</HTML>
-    # 
-    #   html("DOCTYPE" => false) { "string" }
-    #     # <HTML>string</HTML>
-    # 
-    #   html("DOCTYPE" => '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">') { "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><HTML>string</HTML>
-    # 
-    #   html("PRETTY" => "  ") { "<BODY></BODY>" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-    #     # <HTML>
-    #     #   <BODY>
-    #     #   </BODY>
-    #     # </HTML>
-    # 
-    #   html("PRETTY" => "\t") { "<BODY></BODY>" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-    #     # <HTML>
-    #     #         <BODY>
-    #     #         </BODY>
-    #     # </HTML>
-    # 
-    #   html("PRETTY") { "<BODY></BODY>" }
-    #     # = html("PRETTY" => "  ") { "<BODY></BODY>" }
-    # 
-    #   html(if $VERBOSE then "PRETTY" end) { "HTML string" }
-    #
-    def html(attributes = {}) # :yield:
-      if nil == attributes
-        attributes = {}
-      elsif "PRETTY" == attributes
-        attributes = { "PRETTY" => true }
-      end
-      pretty = attributes.delete("PRETTY")
-      pretty = "  " if true == pretty
-      buf = ""
-
-      if attributes.has_key?("DOCTYPE")
-        if attributes["DOCTYPE"]
-          buf += attributes.delete("DOCTYPE")
-        else
-          attributes.delete("DOCTYPE")
-        end
-      else
-        buf += doctype
-      end
-
-      if block_given?
-        buf += super(attributes){ yield }
-      else
-        buf += super(attributes)
-      end
-
-      if pretty
-        CGI::pretty(buf, pretty)
-      else
-        buf
-      end
-
-    end
-
-    # Generate an Image Button Input element as a string.
-    #
-    # +src+ is the URL of the image to use for the button.  +name+ 
-    # is the input name.  +alt+ is the alternative text for the image.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    # 
-    #   image_button("url")
-    #     # <INPUT TYPE="image" SRC="url">
-    # 
-    #   image_button("url", "name", "string")
-    #     # <INPUT TYPE="image" SRC="url" NAME="name" ALT="string">
-    # 
-    #   image_button("SRC" => "url", "ATL" => "strng")
-    #     # <INPUT TYPE="image" SRC="url" ALT="string">
-    def image_button(src = "", name = nil, alt = nil)
-      attributes = if src.kind_of?(String)
-                     { "TYPE" => "image", "SRC" => src, "NAME" => name,
-                       "ALT" => alt }
-                   else
-                     src["TYPE"] = "image"
-                     src["SRC"] ||= ""
-                     src
-                   end
-      input(attributes)
-    end
-
-
-    # Generate an Image element as a string.
-    #
-    # +src+ is the URL of the image.  +alt+ is the alternative text for
-    # the image.  +width+ is the width of the image, and +height+ is
-    # its height.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   img("src", "alt", 100, 50)
-    #     # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
-    # 
-    #   img("SRC" => "src", "ALT" => "alt", "WIDTH" => 100, "HEIGHT" => 50)
-    #     # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
-    def img(src = "", alt = "", width = nil, height = nil)
-      attributes = if src.kind_of?(String)
-                     { "SRC" => src, "ALT" => alt }
-                   else
-                     src
-                   end
-      attributes["WIDTH"] = width.to_s if width
-      attributes["HEIGHT"] = height.to_s if height
-      super(attributes)
-    end
-
-
-    # Generate a Form element with multipart encoding as a String.
-    #
-    # Multipart encoding is used for forms that include file uploads.
-    #
-    # +action+ is the action to perform.  +enctype+ is the encoding
-    # type, which defaults to "multipart/form-data".
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   multipart_form{ "string" }
-    #     # <FORM METHOD="post" ENCTYPE="multipart/form-data">string</FORM>
-    # 
-    #   multipart_form("url") { "string" }
-    #     # <FORM METHOD="post" ACTION="url" ENCTYPE="multipart/form-data">string</FORM>
-    def multipart_form(action = nil, enctype = "multipart/form-data")
-      attributes = if action == nil
-                     { "METHOD" => "post", "ENCTYPE" => enctype } 
-                   elsif action.kind_of?(String)
-                     { "METHOD" => "post", "ACTION" => action,
-                       "ENCTYPE" => enctype } 
-                   else
-                     unless action.has_key?("METHOD")
-                       action["METHOD"] = "post"
-                     end
-                     unless action.has_key?("ENCTYPE")
-                       action["ENCTYPE"] = enctype
-                     end
-                     action
-                   end
-      if block_given?
-        form(attributes){ yield }
-      else
-        form(attributes)
-      end
-    end
-
-
-    # Generate a Password Input element as a string.
-    #
-    # +name+ is the name of the input field.  +value+ is its default
-    # value.  +size+ is the size of the input field display.  +maxlength+
-    # is the maximum length of the inputted password.
-    #
-    # Alternatively, attributes can be specified as a hash.
-    #
-    #   password_field("name")
-    #     # <INPUT TYPE="password" NAME="name" SIZE="40">
-    # 
-    #   password_field("name", "value")
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="40">
-    # 
-    #   password_field("password", "value", 80, 200)
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
-    # 
-    #   password_field("NAME" => "name", "VALUE" => "value")
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value">
-    def password_field(name = "", value = nil, size = 40, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "password", "NAME" => name,
-                       "VALUE" => value, "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "password"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-    # Generate a Select element as a string.
-    #
-    # +name+ is the name of the element.  The +values+ are the options that
-    # can be selected from the Select menu.  Each value can be a String or
-    # a one, two, or three-element Array.  If a String or a one-element
-    # Array, this is both the value of that option and the text displayed for
-    # it.  If a three-element Array, the elements are the option value, displayed
-    # text, and a boolean value specifying whether this option starts as selected.
-    # The two-element version omits either the option value (defaults to the same
-    # as the display text) or the boolean selected specifier (defaults to false).
-    #
-    # The attributes and options can also be specified as a hash.  In this
-    # case, options are specified as an array of values as described above,
-    # with the hash key of "VALUES".
-    #
-    #   popup_menu("name", "foo", "bar", "baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="foo">foo</OPTION>
-    #     #   <OPTION VALUE="bar">bar</OPTION>
-    #     #   <OPTION VALUE="baz">baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("name", ["foo"], ["bar", true], "baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="foo">foo</OPTION>
-    #     #   <OPTION VALUE="bar" SELECTED>bar</OPTION>
-    #     #   <OPTION VALUE="baz">baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="1">Foo</OPTION>
-    #     #   <OPTION SELECTED VALUE="2">Bar</OPTION>
-    #     #   <OPTION VALUE="Baz">Baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("NAME" => "name", "SIZE" => 2, "MULTIPLE" => true,
-    #               "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    #     # <SELECT NAME="name" MULTIPLE SIZE="2">
-    #     #   <OPTION VALUE="1">Foo</OPTION>
-    #     #   <OPTION SELECTED VALUE="2">Bar</OPTION>
-    #     #   <OPTION VALUE="Baz">Baz</OPTION>
-    #     # </SELECT>
-    def popup_menu(name = "", *values)
-
-      if name.kind_of?(Hash)
-        values   = name["VALUES"]
-        size     = name["SIZE"].to_s if name["SIZE"]
-        multiple = name["MULTIPLE"]
-        name     = name["NAME"]
-      else
-        size = nil
-        multiple = nil
-      end
-
-      select({ "NAME" => name, "SIZE" => size,
-               "MULTIPLE" => multiple }){
-        values.collect{|value|
-          if value.kind_of?(String)
-            option({ "VALUE" => value }){ value }
-          else
-            if value[value.size - 1] == true
-              option({ "VALUE" => value[0], "SELECTED" => true }){
-                value[value.size - 2]
-              }
-            else
-              option({ "VALUE" => value[0] }){
-                value[value.size - 1]
-              }
-            end
-          end
-        }.to_s
-      }
-
-    end
-
-    # Generates a radio-button Input element.
-    #
-    # +name+ is the name of the input field.  +value+ is the value of
-    # the field if checked.  +checked+ specifies whether the field
-    # starts off checked.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   radio_button("name", "value")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value">
-    # 
-    #   radio_button("name", "value", true)
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value" CHECKED>
-    # 
-    #   radio_button("NAME" => "name", "VALUE" => "value", "ID" => "foo")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value" ID="foo">
-    def radio_button(name = "", value = nil, checked = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "radio", "NAME" => name,
-                       "VALUE" => value, "CHECKED" => checked }
-                   else
-                     name["TYPE"] = "radio"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a sequence of radio button Input elements, as a String.
-    #
-    # This works the same as #checkbox_group().  However, it is not valid
-    # to have more than one radiobutton in a group checked.
-    # 
-    #   radio_group("name", "foo", "bar", "baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
-    # 
-    #   radio_group("name", ["foo"], ["bar", true], "baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
-    # 
-    #   radio_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="1">Foo
-    #     # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="2">Bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="Baz">Baz
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => ["foo", "bar", "baz"])
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => [["foo"], ["bar", true], "baz"])
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    def radio_group(name = "", *values)
-      if name.kind_of?(Hash)
-        values = name["VALUES"]
-        name = name["NAME"]
-      end
-      values.collect{|value|
-        if value.kind_of?(String)
-          radio_button(name, value) + value
-        else
-          if value[value.size - 1] == true
-            radio_button(name, value[0], true) +
-            value[value.size - 2]
-          else
-            radio_button(name, value[0]) +
-            value[value.size - 1]
-          end
-        end
-      }.to_s
-    end
-
-    # Generate a reset button Input element, as a String.
-    #
-    # This resets the values on a form to their initial values.  +value+
-    # is the text displayed on the button. +name+ is the name of this button.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   reset
-    #     # <INPUT TYPE="reset">
-    # 
-    #   reset("reset")
-    #     # <INPUT TYPE="reset" VALUE="reset">
-    # 
-    #   reset("VALUE" => "reset", "ID" => "foo")
-    #     # <INPUT TYPE="reset" VALUE="reset" ID="foo">
-    def reset(value = nil, name = nil)
-      attributes = if (not value) or value.kind_of?(String)
-                     { "TYPE" => "reset", "VALUE" => value, "NAME" => name }
-                   else
-                     value["TYPE"] = "reset"
-                     value
-                   end
-      input(attributes)
-    end
-
-    alias scrolling_list popup_menu
-
-    # Generate a submit button Input element, as a String.
-    #
-    # +value+ is the text to display on the button.  +name+ is the name
-    # of the input.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   submit
-    #     # <INPUT TYPE="submit">
-    # 
-    #   submit("ok")
-    #     # <INPUT TYPE="submit" VALUE="ok">
-    # 
-    #   submit("ok", "button1")
-    #     # <INPUT TYPE="submit" VALUE="ok" NAME="button1">
-    # 
-    #   submit("VALUE" => "ok", "NAME" => "button1", "ID" => "foo")
-    #     # <INPUT TYPE="submit" VALUE="ok" NAME="button1" ID="foo">
-    def submit(value = nil, name = nil)
-      attributes = if (not value) or value.kind_of?(String)
-                     { "TYPE" => "submit", "VALUE" => value, "NAME" => name }
-                   else
-                     value["TYPE"] = "submit"
-                     value
-                   end
-      input(attributes)
-    end
-
-    # Generate a text field Input element, as a String.
-    #
-    # +name+ is the name of the input field.  +value+ is its initial
-    # value.  +size+ is the size of the input area.  +maxlength+
-    # is the maximum length of input accepted.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   text_field("name")
-    #     # <INPUT TYPE="text" NAME="name" SIZE="40">
-    # 
-    #   text_field("name", "value")
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="40">
-    # 
-    #   text_field("name", "value", 80)
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80">
-    # 
-    #   text_field("name", "value", 80, 200)
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
-    # 
-    #   text_field("NAME" => "name", "VALUE" => "value")
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value">
-    def text_field(name = "", value = nil, size = 40, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "text", "NAME" => name, "VALUE" => value,
-                       "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "text"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-    # Generate a TextArea element, as a String.
-    #
-    # +name+ is the name of the textarea.  +cols+ is the number of
-    # columns and +rows+ is the number of rows in the display.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # The body is provided by the passed-in no-argument block
-    #
-    #   textarea("name")
-    #      # = textarea("NAME" => "name", "COLS" => 70, "ROWS" => 10)
-    #
-    #   textarea("name", 40, 5)
-    #      # = textarea("NAME" => "name", "COLS" => 40, "ROWS" => 5)
-    def textarea(name = "", cols = 70, rows = 10)  # :yield:
-      attributes = if name.kind_of?(String)
-                     { "NAME" => name, "COLS" => cols.to_s,
-                       "ROWS" => rows.to_s }
-                   else
-                     name
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-  end # HtmlExtension
-
-
-  # Mixin module for HTML version 3 generation methods.
-  module Html3 # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG
-          DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP
-          APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE
-          STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE
-          CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
-          ISINDEX META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr
-          th td ]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html3
-
-
-  # Mixin module for HTML version 4 generation methods.
-  module Html4 # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ TT I B BIG SMALL EM STRONG DFN CODE SAMP KBD
-        VAR CITE ABBR ACRONYM SUB SUP SPAN BDO ADDRESS DIV MAP OBJECT
-        H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT OPTGROUP
-        FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT
-        TEXTAREA FORM A BLOCKQUOTE CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
-          COLGROUP TR TH TD HEAD]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4
-
-
-  # Mixin module for HTML version 4 transitional generation methods.
-  module Html4Tr # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ TT I B U S STRIKE BIG SMALL EM STRONG DFN
-          CODE SAMP KBD VAR CITE ABBR ACRONYM FONT SUB SUP SPAN BDO
-          ADDRESS DIV CENTER MAP OBJECT APPLET H1 H2 H3 H4 H5 H6 PRE Q
-          INS DEL DL OL UL DIR MENU LABEL SELECT OPTGROUP FIELDSET
-          LEGEND BUTTON TABLE IFRAME NOFRAMES TITLE STYLE SCRIPT
-          NOSCRIPT TEXTAREA FORM A BLOCKQUOTE CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
-          COL ISINDEX META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
-          COLGROUP TR TH TD HEAD ]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4Tr
-
-
-  # Mixin module for generating HTML version 4 with framesets.
-  module Html4Fr # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      methods = ""
-      # - -
-      for element in %w[ FRAMESET ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ FRAME ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4Fr
-
-
-  # Creates a new CGI instance.
-  #
-  # +type+ specifies which version of HTML to load the HTML generation
-  # methods for.  The following versions of HTML are supported:
-  #
-  # html3:: HTML 3.x
-  # html4:: HTML 4.0
-  # html4Tr:: HTML 4.0 Transitional
-  # html4Fr:: HTML 4.0 with Framesets
-  #
-  # If not specified, no HTML generation methods will be loaded.
-  #
-  # If the CGI object is not created in a standard CGI call environment
-  # (that is, it can't locate REQUEST_METHOD in its environment), then
-  # it will run in "offline" mode.  In this mode, it reads its parameters
-  # from the command line or (failing that) from standard input.  Otherwise,
-  # cookies and other parameters are parsed automatically from the standard
-  # CGI locations, which varies according to the REQUEST_METHOD.
-  def initialize(type = "query")
-    if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE")
-      Apache.request.setup_cgi_env
-    end
-
-    extend QueryExtension
-    @multipart = false
-    if defined?(CGI_PARAMS)
-      warn "do not use CGI_PARAMS and CGI_COOKIES"
-      @params = CGI_PARAMS.dup
-      @cookies = CGI_COOKIES.dup
-    else
-      initialize_query()  # set @params, @cookies
-    end
-    @output_cookies = nil
-    @output_hidden = nil
-
-    case type
-    when "html3"
-      extend Html3
-      element_init()
-      extend HtmlExtension
-    when "html4"
-      extend Html4
-      element_init()
-      extend HtmlExtension
-    when "html4Tr"
-      extend Html4Tr
-      element_init()
-      extend HtmlExtension
-    when "html4Fr"
-      extend Html4Tr
-      element_init()
-      extend Html4Fr
-      element_init()
-      extend HtmlExtension
-    end
-  end
-
-end   # class CGI
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session.rb
deleted file mode 100644
index 5568b28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session.rb
+++ /dev/null
@@ -1,492 +0,0 @@
-#
-# cgi/session.rb - session support for cgi scripts
-#
-# Copyright (C) 2001  Yukihiro "Matz" Matsumoto
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-#
-# Author: Yukihiro "Matz" Matsumoto
-#
-# Documentation: William Webber (william at williamwebber.com)
-#
-# == Overview
-#
-# This file provides the +CGI::Session+ class, which provides session
-# support for CGI scripts.  A session is a sequence of HTTP requests
-# and responses linked together and associated with a single client.  
-# Information associated with the session is stored
-# on the server between requests.  A session id is passed between client
-# and server with every request and response, transparently
-# to the user.  This adds state information to the otherwise stateless
-# HTTP request/response protocol.
-#
-# See the documentation to the +CGI::Session+ class for more details
-# and examples of usage.  See cgi.rb for the +CGI+ class itself.
-
-require 'cgi'
-require 'tmpdir'
-
-class CGI
-
-  # Class representing an HTTP session.  See documentation for the file 
-  # cgi/session.rb for an introduction to HTTP sessions.
-  #
-  # == Lifecycle
-  #
-  # A CGI::Session instance is created from a CGI object.  By default,
-  # this CGI::Session instance will start a new session if none currently
-  # exists, or continue the current session for this client if one does
-  # exist.  The +new_session+ option can be used to either always or
-  # never create a new session.  See #new() for more details.
-  #
-  # #delete() deletes a session from session storage.  It
-  # does not however remove the session id from the client.  If the client
-  # makes another request with the same id, the effect will be to start
-  # a new session with the old session's id.
-  #
-  # == Setting and retrieving session data.
-  #
-  # The Session class associates data with a session as key-value pairs.
-  # This data can be set and retrieved by indexing the Session instance 
-  # using '[]', much the same as hashes (although other hash methods
-  # are not supported).
-  #
-  # When session processing has been completed for a request, the
-  # session should be closed using the close() method.  This will
-  # store the session's state to persistent storage.  If you want
-  # to store the session's state to persistent storage without
-  # finishing session processing for this request, call the update()
-  # method.
-  #
-  # == Storing session state
-  #
-  # The caller can specify what form of storage to use for the session's 
-  # data with the +database_manager+ option to CGI::Session::new.  The
-  # following storage classes are provided as part of the standard library:
-  #
-  # CGI::Session::FileStore:: stores data as plain text in a flat file.  Only 
-  #                           works with String data.  This is the default 
-  #                           storage type.
-  # CGI::Session::MemoryStore:: stores data in an in-memory hash.  The data 
-  #                             only persists for as long as the current ruby 
-  #                             interpreter instance does.
-  # CGI::Session::PStore:: stores data in Marshalled format.  Provided by
-  #                        cgi/session/pstore.rb.  Supports data of any type, 
-  #                        and provides file-locking and transaction support.
-  #
-  # Custom storage types can also be created by defining a class with 
-  # the following methods:
-  #
-  #    new(session, options)
-  #    restore  # returns hash of session data.
-  #    update
-  #    close
-  #    delete
-  #
-  # Changing storage type mid-session does not work.  Note in particular
-  # that by default the FileStore and PStore session data files have the
-  # same name.  If your application switches from one to the other without
-  # making sure that filenames will be different
-  # and clients still have old sessions lying around in cookies, then
-  # things will break nastily!
-  #
-  # == Maintaining the session id.
-  #
-  # Most session state is maintained on the server.  However, a session
-  # id must be passed backwards and forwards between client and server
-  # to maintain a reference to this session state.
-  #
-  # The simplest way to do this is via cookies.  The CGI::Session class
-  # provides transparent support for session id communication via cookies
-  # if the client has cookies enabled.
-  # 
-  # If the client has cookies disabled, the session id must be included
-  # as a parameter of all requests sent by the client to the server.  The
-  # CGI::Session class in conjunction with the CGI class will transparently
-  # add the session id as a hidden input field to all forms generated
-  # using the CGI#form() HTML generation method.  No built-in support is
-  # provided for other mechanisms, such as URL re-writing.  The caller is
-  # responsible for extracting the session id from the session_id 
-  # attribute and manually encoding it in URLs and adding it as a hidden
-  # input to HTML forms created by other mechanisms.  Also, session expiry
-  # is not automatically handled.
-  #
-  # == Examples of use
-  #
-  # === Setting the user's name
-  #
-  #   require 'cgi'
-  #   require 'cgi/session'
-  #   require 'cgi/session/pstore'     # provides CGI::Session::PStore
-  #
-  #   cgi = CGI.new("html4")
-  #
-  #   session = CGI::Session.new(cgi,
-  #       'database_manager' => CGI::Session::PStore,  # use PStore
-  #       'session_key' => '_rb_sess_id',              # custom session key
-  #       'session_expires' => Time.now + 30 * 60,     # 30 minute timeout 
-  #       'prefix' => 'pstore_sid_')                   # PStore option
-  #   if cgi.has_key?('user_name') and cgi['user_name'] != ''
-  #       # coerce to String: cgi[] returns the 
-  #       # string-like CGI::QueryExtension::Value
-  #       session['user_name'] = cgi['user_name'].to_s
-  #   elsif !session['user_name']
-  #       session['user_name'] = "guest"
-  #   end
-  #   session.close
-  #
-  # === Creating a new session safely
-  #
-  #   require 'cgi'
-  #   require 'cgi/session'
-  #
-  #   cgi = CGI.new("html4")
-  #
-  #   # We make sure to delete an old session if one exists,
-  #   # not just to free resources, but to prevent the session 
-  #   # from being maliciously hijacked later on.
-  #   begin
-  #       session = CGI::Session.new(cgi, 'new_session' => false)      
-  #       session.delete                 
-  #   rescue ArgumentError  # if no old session
-  #   end
-  #   session = CGI::Session.new(cgi, 'new_session' => true)
-  #   session.close
-  #
-  class Session
-
-    class NoSession < RuntimeError #:nodoc:
-    end
-
-    # The id of this session.
-    attr_reader :session_id, :new_session
-
-    def Session::callback(dbman)  #:nodoc:
-      Proc.new{
-	dbman[0].close unless dbman.empty?
-      }
-    end
-
-    # Create a new session id.
-    #
-    # The session id is an MD5 hash based upon the time,
-    # a random number, and a constant string.  This routine
-    # is used internally for automatically generated
-    # session ids. 
-    def create_new_id
-      require 'digest/md5'
-      md5 = Digest::MD5::new
-      now = Time::now
-      md5.update(now.to_s)
-      md5.update(String(now.usec))
-      md5.update(String(rand(0)))
-      md5.update(String($$))
-      md5.update('foobar')
-      @new_session = true
-      md5.hexdigest
-    end
-    private :create_new_id
-
-    # Create a new CGI::Session object for +request+.
-    #
-    # +request+ is an instance of the +CGI+ class (see cgi.rb).
-    # +option+ is a hash of options for initialising this
-    # CGI::Session instance.  The following options are
-    # recognised:
-    #
-    # session_key:: the parameter name used for the session id.
-    #               Defaults to '_session_id'.
-    # session_id:: the session id to use.  If not provided, then
-    #              it is retrieved from the +session_key+ parameter
-    #              of the request, or automatically generated for
-    #              a new session.
-    # new_session:: if true, force creation of a new session.  If not set, 
-    #               a new session is only created if none currently
-    #               exists.  If false, a new session is never created,
-    #               and if none currently exists and the +session_id+
-    #               option is not set, an ArgumentError is raised.
-    # database_manager:: the name of the class providing storage facilities
-    #                    for session state persistence.  Built-in support
-    #                    is provided for +FileStore+ (the default),
-    #                    +MemoryStore+, and +PStore+ (from
-    #                    cgi/session/pstore.rb).  See the documentation for
-    #                    these classes for more details.
-    #
-    # The following options are also recognised, but only apply if the
-    # session id is stored in a cookie.
-    #
-    # session_expires:: the time the current session expires, as a 
-    #                   +Time+ object.  If not set, the session will terminate
-    #                   when the user's browser is closed.
-    # session_domain:: the hostname domain for which this session is valid.
-    #                  If not set, defaults to the hostname of the server.
-    # session_secure:: if +true+, this session will only work over HTTPS.
-    # session_path:: the path for which this session applies.  Defaults
-    #                to the directory of the CGI script.
-    #
-    # +option+ is also passed on to the session storage class initialiser; see
-    # the documentation for each session storage class for the options
-    # they support.
-    #                  
-    # The retrieved or created session is automatically added to +request+
-    # as a cookie, and also to its +output_hidden+ table, which is used
-    # to add hidden input elements to forms.  
-    #
-    # *WARNING* the +output_hidden+
-    # fields are surrounded by a <fieldset> tag in HTML 4 generation, which
-    # is _not_ invisible on many browsers; you may wish to disable the
-    # use of fieldsets with code similar to the following
-    # (see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37805)
-    #
-    #   cgi = CGI.new("html4")
-    #   class << cgi
-    #       undef_method :fieldset
-    #   end
-    #
-    def initialize(request, option={})
-      @new_session = false
-      session_key = option['session_key'] || '_session_id'
-      session_id = option['session_id']
-      unless session_id
-	if option['new_session']
-	  session_id = create_new_id
-	end
-      end
-      unless session_id
-	if request.key?(session_key)
-	  session_id = request[session_key]
-	  session_id = session_id.read if session_id.respond_to?(:read)
-	end
-	unless session_id
-	  session_id, = request.cookies[session_key]
-	end
-	unless session_id
-	  unless option.fetch('new_session', true)
-	    raise ArgumentError, "session_key `%s' should be supplied"%session_key
-	  end
-	  session_id = create_new_id
-	end
-      end
-      @session_id = session_id
-      dbman = option['database_manager'] || FileStore
-      begin
-        @dbman = dbman::new(self, option)
-      rescue NoSession
-        unless option.fetch('new_session', true)
-          raise ArgumentError, "invalid session_id `%s'"%session_id
-        end
-        session_id = @session_id = create_new_id
-        retry
-      end
-      request.instance_eval do
-	@output_hidden = {session_key => session_id} unless option['no_hidden']
-	@output_cookies =  [
-          Cookie::new("name" => session_key,
-		      "value" => session_id,
-		      "expires" => option['session_expires'],
-		      "domain" => option['session_domain'],
-		      "secure" => option['session_secure'],
-		      "path" => if option['session_path'] then
-				  option['session_path']
-		                elsif ENV["SCRIPT_NAME"] then
-				  File::dirname(ENV["SCRIPT_NAME"])
-				else
-				  ""
-				end)
-        ] unless option['no_cookies']
-      end
-      @dbprot = [@dbman]
-      ObjectSpace::define_finalizer(self, Session::callback(@dbprot))
-    end
-
-    # Retrieve the session data for key +key+.
-    def [](key)
-      @data ||= @dbman.restore
-      @data[key]
-    end
-
-    # Set the session date for key +key+.
-    def []=(key, val)
-      @write_lock ||= true
-      @data ||= @dbman.restore
-      @data[key] = val
-    end
-
-    # Store session data on the server.  For some session storage types,
-    # this is a no-op.
-    def update  
-      @dbman.update
-    end
-
-    # Store session data on the server and close the session storage.  
-    # For some session storage types, this is a no-op.
-    def close
-      @dbman.close
-      @dbprot.clear
-    end
-
-    # Delete the session from storage.  Also closes the storage.
-    #
-    # Note that the session's data is _not_ automatically deleted
-    # upon the session expiring.
-    def delete
-      @dbman.delete
-      @dbprot.clear
-    end
-
-    # File-based session storage class.
-    #
-    # Implements session storage as a flat file of 'key=value' values.
-    # This storage type only works directly with String values; the
-    # user is responsible for converting other types to Strings when
-    # storing and from Strings when retrieving.
-    class FileStore
-      # Create a new FileStore instance.
-      #
-      # This constructor is used internally by CGI::Session.  The
-      # user does not generally need to call it directly.
-      #
-      # +session+ is the session for which this instance is being
-      # created.  The session id must only contain alphanumeric
-      # characters; automatically generated session ids observe
-      # this requirement.
-      # 
-      # +option+ is a hash of options for the initialiser.  The
-      # following options are recognised:
-      #
-      # tmpdir:: the directory to use for storing the FileStore
-      #          file.  Defaults to Dir::tmpdir (generally "/tmp"
-      #          on Unix systems).
-      # prefix:: the prefix to add to the session id when generating
-      #          the filename for this session's FileStore file.
-      #          Defaults to the empty string.
-      # suffix:: the prefix to add to the session id when generating
-      #          the filename for this session's FileStore file.
-      #          Defaults to the empty string.
-      #
-      # This session's FileStore file will be created if it does
-      # not exist, or opened if it does.
-      def initialize(session, option={})
-	dir = option['tmpdir'] || Dir::tmpdir
-	prefix = option['prefix'] || ''
-	suffix = option['suffix'] || ''
-	id = session.session_id
-        require 'digest/md5'
-        md5 = Digest::MD5.hexdigest(id)[0,16]
-	@path = dir+"/"+prefix+md5+suffix
-	if File::exist? @path
-	  @hash = nil
-	else
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-	  @hash = {}
-	end
-      end
-
-      # Restore session state from the session's FileStore file.
-      #
-      # Returns the session state as a hash.
-      def restore
-	unless @hash
-	  @hash = {}
-          begin
-            lockf = File.open(@path+".lock", "r")
-            lockf.flock File::LOCK_SH
-	    f = File.open(@path, 'r')
-	    for line in f
-	      line.chomp!
-	      k, v = line.split('=',2)
-	      @hash[CGI::unescape(k)] = CGI::unescape(v)
-	    end
-          ensure
-	    f.close unless f.nil?
-            lockf.close if lockf
-          end
-	end
-	@hash
-      end
-
-      # Save session state to the session's FileStore file.
-      def update
-	return unless @hash
-        begin
-          lockf = File.open(@path+".lock", File::CREAT|File::RDWR, 0600)
-	  lockf.flock File::LOCK_EX
-          f = File.open(@path+".new", File::CREAT|File::TRUNC|File::WRONLY, 0600)
-   	  for k,v in @hash
-	    f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v))
-	  end
-          f.close
-          File.rename @path+".new", @path
-        ensure
-          f.close if f and !f.closed?
-          lockf.close if lockf
-        end
-      end
-
-      # Update and close the session's FileStore file.
-      def close
-	update
-      end
-
-      # Close and delete the session's FileStore file.
-      def delete
-        File::unlink @path+".lock" rescue nil
-        File::unlink @path+".new" rescue nil
-        File::unlink @path
-      rescue Errno::ENOENT
-      end
-    end
-
-    # In-memory session storage class.
-    #
-    # Implements session storage as a global in-memory hash.  Session
-    # data will only persist for as long as the ruby interpreter 
-    # instance does.
-    class MemoryStore
-      GLOBAL_HASH_TABLE = {} #:nodoc:
-
-      # Create a new MemoryStore instance.
-      #
-      # +session+ is the session this instance is associated with.
-      # +option+ is a list of initialisation options.  None are
-      # currently recognised.
-      def initialize(session, option=nil)
-	@session_id = session.session_id
-        unless GLOBAL_HASH_TABLE.key?(@session_id)
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-          GLOBAL_HASH_TABLE[@session_id] = {}
-        end
-      end
-
-      # Restore session state.
-      #
-      # Returns session data as a hash.
-      def restore
-	GLOBAL_HASH_TABLE[@session_id]
-      end
-
-      # Update session state.
-      #
-      # A no-op.
-      def update
-	# don't need to update; hash is shared
-      end
-
-      # Close session storage.
-      #
-      # A no-op.
-      def close
-	# don't need to close
-      end
-
-      # Delete the session state.
-      def delete
-	GLOBAL_HASH_TABLE.delete(@session_id)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session/pstore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session/pstore.rb
deleted file mode 100644
index bd93d0a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/cgi/session/pstore.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# cgi/session/pstore.rb - persistent storage of marshalled session data
-#
-# Documentation: William Webber (william at williamwebber.com)
-# 
-# == Overview
-#
-# This file provides the CGI::Session::PStore class, which builds
-# persistent of session data on top of the pstore library.  See
-# cgi/session.rb for more details on session storage managers.
-
-require 'cgi/session'
-require 'pstore'
-
-class CGI
-  class Session
-    # PStore-based session storage class.
-    #
-    # This builds upon the top-level PStore class provided by the
-    # library file pstore.rb.  Session data is marshalled and stored
-    # in a file.  File locking and transaction services are provided.
-    class PStore
-      # Create a new CGI::Session::PStore instance
-      #
-      # This constructor is used internally by CGI::Session.  The
-      # user does not generally need to call it directly.
-      #
-      # +session+ is the session for which this instance is being
-      # created.  The session id must only contain alphanumeric
-      # characters; automatically generated session ids observe
-      # this requirement.
-      # 
-      # +option+ is a hash of options for the initialiser.  The
-      # following options are recognised:
-      #
-      # tmpdir:: the directory to use for storing the PStore
-      #          file.  Defaults to Dir::tmpdir (generally "/tmp"
-      #          on Unix systems).
-      # prefix:: the prefix to add to the session id when generating
-      #          the filename for this session's PStore file.
-      #          Defaults to the empty string.
-      #
-      # This session's PStore file will be created if it does
-      # not exist, or opened if it does.
-      def initialize(session, option={})
-	dir = option['tmpdir'] || Dir::tmpdir
-	prefix = option['prefix'] || ''
-	id = session.session_id
-        require 'digest/md5'
-        md5 = Digest::MD5.hexdigest(id)[0,16]
-	path = dir+"/"+prefix+md5
-	path.untaint
-	if File::exist?(path)
-	  @hash = nil
-	else
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-	  @hash = {}
-	end
-	@p = ::PStore.new(path)
-	@p.transaction do |p|
-	  File.chmod(0600, p.path)
-	end
-      end
-
-      # Restore session state from the session's PStore file.
-      #
-      # Returns the session state as a hash.
-      def restore
-	unless @hash
-	  @p.transaction do
-           @hash = @p['hash'] || {}
-	  end
-	end
-	@hash
-      end
-
-      # Save session state to the session's PStore file.
-      def update 
-	@p.transaction do
-	    @p['hash'] = @hash
-	end
-      end
-
-      # Update and close the session's PStore file.
-      def close
-	update
-      end
-
-      # Close and delete the session's PStore file.
-      def delete
-	path = @p.path
-	File::unlink path
-      end
-
-    end
-  end
-end
-
-if $0 == __FILE__
-  # :enddoc:
-  STDIN.reopen("/dev/null")
-  cgi = CGI.new
-  session = CGI::Session.new(cgi, 'database_manager' => CGI::Session::PStore)
-  session['key'] = {'k' => 'v'}
-  puts session['key'].class
-  fail unless Hash === session['key']
-  puts session['key'].inspect
-  fail unless session['key'].inspect == '{"k"=>"v"}'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/complex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/complex.rb
deleted file mode 100644
index 9300f39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/complex.rb
+++ /dev/null
@@ -1,631 +0,0 @@
-#
-#   complex.rb - 
-#   	$Release Version: 0.5 $
-#   	$Revision: 1.3 $
-#   	$Date: 1998/07/08 10:05:28 $
-#   	by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# ----
-#
-# complex.rb implements the Complex class for complex numbers.  Additionally,
-# some methods in other Numeric classes are redefined or added to allow greater
-# interoperability with Complex numbers.
-#
-# Complex numbers can be created in the following manner:
-# - <tt>Complex(a, b)</tt>
-# - <tt>Complex.polar(radius, theta)</tt>
-#   
-# Additionally, note the following:
-# - <tt>Complex::I</tt> (the mathematical constant <i>i</i>)
-# - <tt>Numeric#im</tt> (e.g. <tt>5.im -> 0+5i</tt>)
-#
-# The following +Math+ module methods are redefined to handle Complex arguments.
-# They will work as normal with non-Complex arguments.
-#    sqrt exp cos sin tan log log10
-#    cosh sinh tanh acos asin atan atan2 acosh asinh atanh
-#
-
-
-#
-# Numeric is a built-in class on which Fixnum, Bignum, etc., are based.  Here
-# some methods are added so that all number types can be treated to some extent
-# as Complex numbers.
-#
-class Numeric
-  #
-  # Returns a Complex number <tt>(0,<i>self</i>)</tt>.
-  #
-  def im
-    Complex(0, self)
-  end
-  
-  #
-  # The real part of a complex number, i.e. <i>self</i>.
-  #
-  def real
-    self
-  end
-  
-  #
-  # The imaginary part of a complex number, i.e. 0.
-  #
-  def image
-    0
-  end
-  alias imag image
-  
-  #
-  # See Complex#arg.
-  #
-  def arg
-    if self >= 0
-      return 0
-    else
-      return Math::PI
-    end
-  end
-  alias angle arg
-  
-  #
-  # See Complex#polar.
-  #
-  def polar
-    return abs, arg
-  end
-  
-  #
-  # See Complex#conjugate (short answer: returns <i>self</i>).
-  #
-  def conjugate
-    self
-  end
-  alias conj conjugate
-end
-
-
-#
-# Creates a Complex number.  +a+ and +b+ should be Numeric.  The result will be
-# <tt>a+bi</tt>.
-#
-def Complex(a, b = 0)
-  if b == 0 and (a.kind_of?(Complex) or defined? Complex::Unify)
-    a
-  else
-    Complex.new( a.real-b.imag, a.imag+b.real )
-  end
-end
-
-#
-# The complex number class.  See complex.rb for an overview.
-#
-class Complex < Numeric
-  @RCS_ID='-$Id: complex.rb,v 1.3 1998/07/08 10:05:28 keiju Exp keiju $-'
-
-  undef step
-
-  def Complex.generic?(other) # :nodoc:
-    other.kind_of?(Integer) or
-    other.kind_of?(Float) or
-    (defined?(Rational) and other.kind_of?(Rational))
-  end
-
-  #
-  # Creates a +Complex+ number in terms of +r+ (radius) and +theta+ (angle).
-  #
-  def Complex.polar(r, theta)
-    Complex(r*Math.cos(theta), r*Math.sin(theta))
-  end
-
-  #
-  # Creates a +Complex+ number <tt>a</tt>+<tt>b</tt><i>i</i>.
-  #
-  def Complex.new!(a, b=0)
-    new(a,b)
-  end
-
-  def initialize(a, b)
-    raise TypeError, "non numeric 1st arg `#{a.inspect}'" if !a.kind_of? Numeric
-    raise TypeError, "`#{a.inspect}' for 1st arg" if a.kind_of? Complex
-    raise TypeError, "non numeric 2nd arg `#{b.inspect}'" if !b.kind_of? Numeric
-    raise TypeError, "`#{b.inspect}' for 2nd arg" if b.kind_of? Complex
-    @real = a
-    @image = b
-  end
-
-  #
-  # Addition with real or complex number.
-  #
-  def + (other)
-    if other.kind_of?(Complex)
-      re = @real + other.real
-      im = @image + other.image
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real + other, @image)
-    else
-      x , y = other.coerce(self)
-      x + y
-    end
-  end
-  
-  #
-  # Subtraction with real or complex number.
-  #
-  def - (other)
-    if other.kind_of?(Complex)
-      re = @real - other.real
-      im = @image - other.image
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real - other, @image)
-    else
-      x , y = other.coerce(self)
-      x - y
-    end
-  end
-  
-  #
-  # Multiplication with real or complex number.
-  #
-  def * (other)
-    if other.kind_of?(Complex)
-      re = @real*other.real - @image*other.image
-      im = @real*other.image + @image*other.real
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real * other, @image * other)
-    else
-      x , y = other.coerce(self)
-      x * y
-    end
-  end
-  
-  #
-  # Division by real or complex number.
-  #
-  def / (other)
-    if other.kind_of?(Complex)
-      self*other.conjugate/other.abs2
-    elsif Complex.generic?(other)
-      Complex(@real/other, @image/other)
-    else
-      x, y = other.coerce(self)
-      x/y
-    end
-  end
-  
-  #
-  # Raise this complex number to the given (real or complex) power.
-  #
-  def ** (other)
-    if other == 0
-      return Complex(1)
-    end
-    if other.kind_of?(Complex)
-      r, theta = polar
-      ore = other.real
-      oim = other.image
-      nr = Math.exp!(ore*Math.log!(r) - oim * theta)
-      ntheta = theta*ore + oim*Math.log!(r)
-      Complex.polar(nr, ntheta)
-    elsif other.kind_of?(Integer)
-      if other > 0
-	x = self
-	z = x
-	n = other - 1
-	while n != 0
-	  while (div, mod = n.divmod(2)
-		 mod == 0)
-	    x = Complex(x.real*x.real - x.image*x.image, 2*x.real*x.image)
-	    n = div
-	  end
-	  z *= x
-	  n -= 1
-	end
-	z
-      else
-	if defined? Rational
-	  (Rational(1) / self) ** -other
-	else
-	  self ** Float(other)
-	end
-      end
-    elsif Complex.generic?(other)
-      r, theta = polar
-      Complex.polar(r**other, theta*other)
-    else
-      x, y = other.coerce(self)
-      x**y
-    end
-  end
-  
-  #
-  # Remainder after division by a real or complex number.
-  #
-  def % (other)
-    if other.kind_of?(Complex)
-      Complex(@real % other.real, @image % other.image)
-    elsif Complex.generic?(other)
-      Complex(@real % other, @image % other)
-    else
-      x , y = other.coerce(self)
-      x % y
-    end
-  end
-  
-#--
-#    def divmod(other)
-#      if other.kind_of?(Complex)
-#        rdiv, rmod = @real.divmod(other.real)
-#        idiv, imod = @image.divmod(other.image)
-#        return Complex(rdiv, idiv), Complex(rmod, rmod)
-#      elsif Complex.generic?(other)
-#        Complex(@real.divmod(other), @image.divmod(other))
-#      else
-#        x , y = other.coerce(self)
-#        x.divmod(y)
-#      end
-#    end
-#++
-  
-  #
-  # Absolute value (aka modulus): distance from the zero point on the complex
-  # plane.
-  #
-  def abs
-    Math.hypot(@real, @image)
-  end
-  
-  #
-  # Square of the absolute value.
-  #
-  def abs2
-    @real*@real + @image*@image
-  end
-  
-  #
-  # Argument (angle from (1,0) on the complex plane).
-  #
-  def arg
-    Math.atan2!(@image, @real)
-  end
-  alias angle arg
-  
-  #
-  # Returns the absolute value _and_ the argument.
-  #
-  def polar
-    return abs, arg
-  end
-  
-  #
-  # Complex conjugate (<tt>z + z.conjugate = 2 * z.real</tt>).
-  #
-  def conjugate
-    Complex(@real, - at image)
-  end
-  alias conj conjugate
-  
-  #
-  # Compares the absolute values of the two numbers.
-  #
-  def <=> (other)
-    self.abs <=> other.abs
-  end
-  
-  #
-  # Test for numerical equality (<tt>a == a + 0<i>i</i></tt>).
-  #
-  def == (other)
-    if other.kind_of?(Complex)
-      @real == other.real and @image == other.image
-    elsif Complex.generic?(other)
-      @real == other and @image == 0
-    else
-      other == self
-    end
-  end
-
-  #
-  # Attempts to coerce +other+ to a Complex number.
-  #
-  def coerce(other)
-    if Complex.generic?(other)
-      return Complex.new!(other), self
-    else
-      super
-    end
-  end
-
-  #
-  # FIXME
-  #
-  def denominator
-    @real.denominator.lcm(@image.denominator)
-  end
-  
-  #
-  # FIXME
-  #
-  def numerator
-    cd = denominator
-    Complex(@real.numerator*(cd/@real.denominator),
-	    @image.numerator*(cd/@image.denominator))
-  end
-  
-  #
-  # Standard string representation of the complex number.
-  #
-  def to_s
-    if @real != 0
-      if defined?(Rational) and @image.kind_of?(Rational) and @image.denominator != 1
-	if @image >= 0
-	  @real.to_s+"+("+ at image.to_s+")i"
-	else
-	  @real.to_s+"-("+(- at image).to_s+")i"
-	end
-      else
-	if @image >= 0
-	  @real.to_s+"+"+ at image.to_s+"i"
-	else
-	  @real.to_s+"-"+(- at image).to_s+"i"
-	end
-      end
-    else
-      if defined?(Rational) and @image.kind_of?(Rational) and @image.denominator != 1
-	"("+ at image.to_s+")i"
-      else
-	@image.to_s+"i"
-      end
-    end
-  end
-  
-  #
-  # Returns a hash code for the complex number.
-  #
-  def hash
-    @real.hash ^ @image.hash
-  end
-  
-  #
-  # Returns "<tt>Complex(<i>real</i>, <i>image</i>)</tt>".
-  #
-  def inspect
-    sprintf("Complex(%s, %s)", @real.inspect, @image.inspect)
-  end
-
-  
-  #
-  # +I+ is the imaginary number.  It exists at point (0,1) on the complex plane.
-  #
-  I = Complex(0,1)
-  
-  # The real part of a complex number.
-  attr :real
-
-  # The imaginary part of a complex number.
-  attr :image
-  alias imag image
-  
-end
-
-
-
-
-module Math
-  alias sqrt! sqrt
-  alias exp! exp
-  alias log! log
-  alias log10! log10
-  alias cos! cos
-  alias sin! sin
-  alias tan! tan
-  alias cosh! cosh
-  alias sinh! sinh
-  alias tanh! tanh
-  alias acos! acos
-  alias asin! asin
-  alias atan! atan
-  alias atan2! atan2
-  alias acosh! acosh
-  alias asinh! asinh
-  alias atanh! atanh  
-
-  # Redefined to handle a Complex argument.
-  def sqrt(z)
-    if Complex.generic?(z)
-      if z >= 0
-	sqrt!(z)
-      else
-	Complex(0,sqrt!(-z))
-      end
-    else
-      if z.image < 0
-	sqrt(z.conjugate).conjugate
-      else
-	r = z.abs
-	x = z.real
-	Complex( sqrt!((r+x)/2), sqrt!((r-x)/2) )
-      end
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def exp(z)
-    if Complex.generic?(z)
-      exp!(z)
-    else
-      Complex(exp!(z.real) * cos!(z.image), exp!(z.real) * sin!(z.image))
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def cos(z)
-    if Complex.generic?(z)
-      cos!(z)
-    else
-      Complex(cos!(z.real)*cosh!(z.image),
-	      -sin!(z.real)*sinh!(z.image))
-    end
-  end
-    
-  # Redefined to handle a Complex argument.
-  def sin(z)
-    if Complex.generic?(z)
-      sin!(z)
-    else
-      Complex(sin!(z.real)*cosh!(z.image),
-	      cos!(z.real)*sinh!(z.image))
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def tan(z)
-    if Complex.generic?(z)
-      tan!(z)
-    else
-      sin(z)/cos(z)
-    end
-  end
-
-  def sinh(z)
-    if Complex.generic?(z)
-      sinh!(z)
-    else
-      Complex( sinh!(z.real)*cos!(z.image), cosh!(z.real)*sin!(z.image) )
-    end
-  end
-
-  def cosh(z)
-    if Complex.generic?(z)
-      cosh!(z)
-    else
-      Complex( cosh!(z.real)*cos!(z.image), sinh!(z.real)*sin!(z.image) )
-    end
-  end
-
-  def tanh(z)
-    if Complex.generic?(z)
-      tanh!(z)
-    else
-      sinh(z)/cosh(z)
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def log(z)
-    if Complex.generic?(z) and z >= 0
-      log!(z)
-    else
-      r, theta = z.polar
-      Complex(log!(r.abs), theta)
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def log10(z)
-    if Complex.generic?(z)
-      log10!(z)
-    else
-      log(z)/log!(10)
-    end
-  end
-
-  def acos(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      acos!(z)
-    else
-      -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
-    end
-  end
-
-  def asin(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      asin!(z)
-    else
-      -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
-    end
-  end
-
-  def atan(z)
-    if Complex.generic?(z)
-      atan!(z)
-    else
-      1.0.im * log( (1.0.im+z) / (1.0.im-z) ) / 2.0
-    end
-  end
-
-  def atan2(y,x)
-    if Complex.generic?(y) and Complex.generic?(x)
-      atan2!(y,x)
-    else
-      -1.0.im * log( (x+1.0.im*y) / sqrt(x*x+y*y) )
-    end
-  end
-
-  def acosh(z)
-    if Complex.generic?(z) and z >= 1
-      acosh!(z)
-    else
-      log( z + sqrt(z*z-1.0) )
-    end
-  end
-
-  def asinh(z)
-    if Complex.generic?(z)
-      asinh!(z)
-    else
-      log( z + sqrt(1.0+z*z) )
-    end
-  end
-
-  def atanh(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      atanh!(z)
-    else
-      log( (1.0+z) / (1.0-z) ) / 2.0
-    end
-  end
-
-  module_function :sqrt!
-  module_function :sqrt
-  module_function :exp!
-  module_function :exp
-  module_function :log!
-  module_function :log
-  module_function :log10!
-  module_function :log10
-  module_function :cosh!
-  module_function :cosh
-  module_function :cos!
-  module_function :cos
-  module_function :sinh!
-  module_function :sinh
-  module_function :sin!
-  module_function :sin
-  module_function :tan!
-  module_function :tan
-  module_function :tanh!
-  module_function :tanh
-  module_function :acos!
-  module_function :acos
-  module_function :asin!
-  module_function :asin
-  module_function :atan!
-  module_function :atan
-  module_function :atan2!
-  module_function :atan2
-  module_function :acosh!
-  module_function :acosh
-  module_function :asinh!
-  module_function :asinh
-  module_function :atanh!
-  module_function :atanh
-  
-end
-
-# Documentation comments:
-#  - source: original (researched from pickaxe)
-#  - a couple of fixme's
-#  - RDoc output for Bignum etc. is a bit short, with nothing but an
-#    (undocumented) alias.  No big deal.
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/csv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/csv.rb
deleted file mode 100644
index 5fb1214..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/csv.rb
+++ /dev/null
@@ -1,992 +0,0 @@
-# CSV -- module for generating/parsing CSV data.
-# Copyright (C) 2000-2004  NAKAMURA, Hiroshi <nakahiro at sarion.co.jp>.
-  
-# $Id: csv.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-  
-  
-class CSV
-  class IllegalFormatError < RuntimeError; end
-
-  # deprecated
-  class Cell < String
-    def initialize(data = "", is_null = false)
-      super(is_null ? "" : data)
-    end
-
-    def data
-      to_s
-    end
-  end
-
-  # deprecated
-  class Row < Array
-  end
-
-  # Open a CSV formatted file for reading or writing.
-  #
-  # For reading.
-  #
-  # EXAMPLE 1
-  #   CSV.open('csvfile.csv', 'r') do |row|
-  #     p row
-  #   end
-  #
-  # EXAMPLE 2
-  #   reader = CSV.open('csvfile.csv', 'r')
-  #   row1 = reader.shift
-  #   row2 = reader.shift
-  #   if row2.empty?
-  #     p 'row2 not find.'
-  #   end
-  #   reader.close
-  #
-  # ARGS
-  #   filename: filename to parse.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   reader instance.  To get parse result, see CSV::Reader#each.
-  #
-  #
-  # For writing.
-  #
-  # EXAMPLE 1
-  #   CSV.open('csvfile.csv', 'w') do |writer|
-  #     writer << ['r1c1', 'r1c2']
-  #     writer << ['r2c1', 'r2c2']
-  #     writer << [nil, nil]
-  #   end
-  #
-  # EXAMPLE 2
-  #   writer = CSV.open('csvfile.csv', 'w')
-  #   writer << ['r1c1', 'r1c2'] << ['r2c1', 'r2c2'] << [nil, nil]
-  #   writer.close
-  #
-  # ARGS
-  #   filename: filename to generate.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   writer instance.  See CSV::Writer#<< and CSV::Writer#add_row to know how
-  #   to generate CSV string.
-  #
-  def CSV.open(path, mode, fs = nil, rs = nil, &block)
-    if mode == 'r' or mode == 'rb'
-      open_reader(path, mode, fs, rs, &block)
-    elsif mode == 'w' or mode == 'wb'
-      open_writer(path, mode, fs, rs, &block)
-    else
-      raise ArgumentError.new("'mode' must be 'r', 'rb', 'w', or 'wb'")
-    end
-  end
-
-  def CSV.foreach(path, rs = nil, &block)
-    open_reader(path, 'r', ',', rs, &block)
-  end
-
-  def CSV.read(path, length = nil, offset = nil)
-    CSV.parse(IO.read(path, length, offset))
-  end
-  
-  def CSV.readlines(path, rs = nil)
-    reader = open_reader(path, 'r', ',', rs)
-    begin
-      reader.collect { |row| row }
-    ensure
-      reader.close
-    end
-  end
-
-  def CSV.generate(path, fs = nil, rs = nil, &block)
-    open_writer(path, 'w', fs, rs, &block)
-  end
-
-  # Parse lines from given string or stream.  Return rows as an Array of Arrays.
-  def CSV.parse(str_or_readable, fs = nil, rs = nil, &block)
-    if File.exist?(str_or_readable)
-      STDERR.puts("CSV.parse(filename) is deprecated." +
-        "  Use CSV.open(filename, 'r') instead.")
-      return open_reader(str_or_readable, 'r', fs, rs, &block)
-    end
-    if block
-      CSV::Reader.parse(str_or_readable, fs, rs) do |row|
-        yield(row)
-      end
-      nil
-    else
-      CSV::Reader.create(str_or_readable, fs, rs).collect { |row| row }
-    end
-  end
-
-  # Parse a line from given string.  Bear in mind it parses ONE LINE.  Rest of
-  # the string is ignored for example "a,b\r\nc,d" => ['a', 'b'] and the
-  # second line 'c,d' is ignored.
-  #
-  # If you don't know whether a target string to parse is exactly 1 line or
-  # not, use CSV.parse_row instead of this method.
-  def CSV.parse_line(src, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    idx = 0
-    res_type = :DT_COLSEP
-    row = []
-    begin
-      while res_type == :DT_COLSEP
-        res_type, idx, cell = parse_body(src, idx, fs, rs)
-        row << cell
-      end
-    rescue IllegalFormatError
-      return []
-    end
-    row
-  end
-
-  # Create a line from cells.  each cell is stringified by to_s.
-  def CSV.generate_line(row, fs = nil, rs = nil)
-    if row.size == 0
-      return ''
-    end
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    res_type = :DT_COLSEP
-    result_str = ''
-    idx = 0
-    while true
-      generate_body(row[idx], result_str, fs, rs)
-      idx += 1
-      if (idx == row.size)
-        break
-      end
-      generate_separator(:DT_COLSEP, result_str, fs, rs)
-    end
-    result_str
-  end
-  
-  # Parse a line from string.  Consider using CSV.parse_line instead.
-  # To parse lines in CSV string, see EXAMPLE below.
-  #
-  # EXAMPLE
-  #   src = "a,b\r\nc,d\r\ne,f"
-  #   idx = 0
-  #   begin
-  #     parsed = []
-  #     parsed_cells, idx = CSV.parse_row(src, idx, parsed)
-  #     puts "Parsed #{ parsed_cells } cells."
-  #     p parsed
-  #   end while parsed_cells > 0
-  #
-  # ARGS
-  #   src: a CSV data to be parsed.  Must respond '[](idx)'.
-  #     src[](idx) must return a char. (Not a string such as 'a', but 97).
-  #     src[](idx_out_of_bounds) must return nil.  A String satisfies this
-  #     requirement.
-  #   idx: index of parsing location of 'src'.  0 origin.
-  #   out_dev: buffer for parsed cells.  Must respond '<<(aString)'.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   parsed_cells: num of parsed cells.
-  #   idx: index of next parsing location of 'src'.
-  #
-  def CSV.parse_row(src, idx, out_dev, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    idx_backup = idx
-    parsed_cells = 0
-    res_type = :DT_COLSEP
-    begin
-      while res_type != :DT_ROWSEP
-        res_type, idx, cell = parse_body(src, idx, fs, rs)
-        if res_type == :DT_EOS
-          if idx == idx_backup #((parsed_cells == 0) and cell.nil?)
-            return 0, 0
-          end
-          res_type = :DT_ROWSEP
-        end
-        parsed_cells += 1
-        out_dev << cell
-      end
-    rescue IllegalFormatError
-      return 0, 0
-    end
-    return parsed_cells, idx
-  end
-  
-  # Convert a line from cells data to string.  Consider using CSV.generate_line
-  # instead.  To generate multi-row CSV string, see EXAMPLE below.
-  #
-  # EXAMPLE
-  #   row1 = ['a', 'b']
-  #   row2 = ['c', 'd']
-  #   row3 = ['e', 'f']
-  #   src = [row1, row2, row3]
-  #   buf = ''
-  #   src.each do |row|
-  #     parsed_cells = CSV.generate_row(row, 2, buf)
-  #     puts "Created #{ parsed_cells } cells."
-  #   end
-  #   p buf
-  #
-  # ARGS
-  #   src: an Array of String to be converted to CSV string.  Must respond to
-  #     'size' and '[](idx)'.  src[idx] must return String.
-  #   cells: num of cells in a line.
-  #   out_dev: buffer for generated CSV string.  Must respond to '<<(string)'.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   parsed_cells: num of converted cells.
-  #
-  def CSV.generate_row(src, cells, out_dev, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    src_size = src.size
-    if (src_size == 0)
-      if cells == 0
-        generate_separator(:DT_ROWSEP, out_dev, fs, rs)
-      end
-      return 0
-    end
-    res_type = :DT_COLSEP
-    parsed_cells = 0
-    generate_body(src[parsed_cells], out_dev, fs, rs)
-    parsed_cells += 1
-    while ((parsed_cells < cells) and (parsed_cells != src_size))
-      generate_separator(:DT_COLSEP, out_dev, fs, rs)
-      generate_body(src[parsed_cells], out_dev, fs, rs)
-      parsed_cells += 1
-    end
-    if (parsed_cells == cells)
-      generate_separator(:DT_ROWSEP, out_dev, fs, rs)
-    else
-      generate_separator(:DT_COLSEP, out_dev, fs, rs)
-    end
-    parsed_cells
-  end
-  
-  # Private class methods.
-  class << self
-  private
-
-    def open_reader(path, mode, fs, rs, &block)
-      file = File.open(path, mode)
-      if block
-        begin
-          CSV::Reader.parse(file, fs, rs) do |row|
-            yield(row)
-          end
-        ensure
-          file.close
-        end
-        nil
-      else
-        reader = CSV::Reader.create(file, fs, rs)
-        reader.close_on_terminate
-        reader
-      end
-    end
-
-    def open_writer(path, mode, fs, rs, &block)
-      file = File.open(path, mode)
-      if block
-        begin
-          CSV::Writer.generate(file, fs, rs) do |writer|
-            yield(writer)
-          end
-        ensure
-          file.close
-        end
-        nil
-      else
-        writer = CSV::Writer.create(file, fs, rs) 
-        writer.close_on_terminate
-        writer
-      end
-    end
-
-    def parse_body(src, idx, fs, rs)
-      fs_str = fs
-      fs_size = fs_str.size
-      rs_str = rs || "\n"
-      rs_size = rs_str.size
-      fs_idx = rs_idx = 0
-      cell = Cell.new
-      state = :ST_START
-      quoted = cr = false
-      c = nil
-      last_idx = idx
-      while c = src[idx]
-        unless quoted
-          fschar = (c == fs_str[fs_idx])
-          rschar = (c == rs_str[rs_idx])
-          # simple 1 char backtrack
-          if !fschar and c == fs_str[0]
-            fs_idx = 0
-            fschar = true
-            if state == :ST_START
-              state = :ST_DATA
-            elsif state == :ST_QUOTE
-              raise IllegalFormatError
-            end
-          end
-          if !rschar and c == rs_str[0]
-            rs_idx = 0
-            rschar = true
-            if state == :ST_START
-              state = :ST_DATA
-            elsif state == :ST_QUOTE
-              raise IllegalFormatError
-            end
-          end
-        end
-        if c == ?"
-          fs_idx = rs_idx = 0
-          if cr
-            raise IllegalFormatError
-          end
-          cell << src[last_idx, (idx - last_idx)]
-          last_idx = idx
-          if state == :ST_DATA
-            if quoted
-              last_idx += 1
-              quoted = false
-              state = :ST_QUOTE
-            else
-              raise IllegalFormatError
-            end
-          elsif state == :ST_QUOTE
-            cell << c.chr
-            last_idx += 1
-            quoted = true
-            state = :ST_DATA
-          else  # :ST_START
-            quoted = true
-            last_idx += 1
-            state = :ST_DATA
-          end
-        elsif fschar or rschar
-          if fschar
-            fs_idx += 1
-          end
-          if rschar
-            rs_idx += 1
-          end
-          sep = nil
-          if fs_idx == fs_size
-            if state == :ST_START and rs_idx > 0 and fs_idx < rs_idx
-              state = :ST_DATA
-            end
-            cell << src[last_idx, (idx - last_idx - (fs_size - 1))]
-            last_idx = idx
-            fs_idx = rs_idx = 0
-            if cr
-              raise IllegalFormatError
-            end
-            sep = :DT_COLSEP
-          elsif rs_idx == rs_size
-            if state == :ST_START and fs_idx > 0 and rs_idx < fs_idx
-              state = :ST_DATA
-            end
-            if !(rs.nil? and cr)
-              cell << src[last_idx, (idx - last_idx - (rs_size - 1))]
-              last_idx = idx
-            end
-            fs_idx = rs_idx = 0
-            sep = :DT_ROWSEP
-          end
-          if sep
-            if state == :ST_DATA
-              return sep, idx + 1, cell;
-            elsif state == :ST_QUOTE
-              return sep, idx + 1, cell;
-            else  # :ST_START
-              return sep, idx + 1, nil
-            end
-          end
-        elsif rs.nil? and c == ?\r
-          # special \r treatment for backward compatibility
-          fs_idx = rs_idx = 0
-          if cr
-            raise IllegalFormatError
-          end
-          cell << src[last_idx, (idx - last_idx)]
-          last_idx = idx
-          if quoted
-            state = :ST_DATA
-          else
-            cr = true
-          end
-        else
-          fs_idx = rs_idx = 0
-          if state == :ST_DATA or state == :ST_START
-            if cr
-              raise IllegalFormatError
-            end
-            state = :ST_DATA
-          else  # :ST_QUOTE
-            raise IllegalFormatError
-          end
-        end
-        idx += 1
-      end
-      if state == :ST_START
-        if fs_idx > 0 or rs_idx > 0
-          state = :ST_DATA
-        else
-          return :DT_EOS, idx, nil
-        end
-      elsif quoted
-        raise IllegalFormatError
-      elsif cr
-        raise IllegalFormatError
-      end
-      cell << src[last_idx, (idx - last_idx)]
-      last_idx = idx
-      return :DT_EOS, idx, cell
-    end
-  
-    def generate_body(cell, out_dev, fs, rs)
-      if cell.nil?
-        # empty
-      else
-        cell = cell.to_s
-        row_data = cell.dup
-        if (row_data.gsub!('"', '""') or
-            row_data.index(fs) or
-            (rs and row_data.index(rs)) or
-            (/[\r\n]/ =~ row_data) or
-            (cell.empty?))
-          out_dev << '"' << row_data << '"'
-        else
-          out_dev << row_data
-        end
-      end
-    end
-    
-    def generate_separator(type, out_dev, fs, rs)
-      case type
-      when :DT_COLSEP
-        out_dev << fs
-      when :DT_ROWSEP
-        out_dev << (rs || "\n")
-      end
-    end
-  end
-
-
-  # CSV formatted string/stream reader.
-  #
-  # EXAMPLE
-  #   read CSV lines untill the first column is 'stop'.
-  #
-  #   CSV::Reader.parse(File.open('bigdata', 'rb')) do |row|
-  #     p row
-  #     break if !row[0].is_null && row[0].data == 'stop'
-  #   end
-  #
-  class Reader
-    include Enumerable
-
-    # Parse CSV data and get lines.  Given block is called for each parsed row.
-    # Block value is always nil.  Rows are not cached for performance reason.
-    def Reader.parse(str_or_readable, fs = ',', rs = nil, &block)
-      reader = Reader.create(str_or_readable, fs, rs)
-      if block
-        reader.each do |row|
-          yield(row)
-        end
-        reader.close
-        nil
-      else
-        reader
-      end
-    end
-
-    # Returns reader instance.
-    def Reader.create(str_or_readable, fs = ',', rs = nil)
-      case str_or_readable
-      when IO
-        IOReader.new(str_or_readable, fs, rs)
-      when String
-        StringReader.new(str_or_readable, fs, rs)
-      else
-        IOReader.new(str_or_readable, fs, rs)
-      end
-    end
-
-    def each
-      while true
-        row = []
-        parsed_cells = get_row(row)
-        if parsed_cells == 0
-          break
-        end
-        yield(row)
-      end
-      nil
-    end
-
-    def shift
-      row = []
-      parsed_cells = get_row(row)
-      row
-    end
-
-    def close
-      terminate
-    end
-
-  private
-
-    def initialize(dev)
-      raise RuntimeError.new('Do not instanciate this class directly.')
-    end
-
-    def get_row(row)
-      raise NotImplementedError.new('Method get_row must be defined in a derived class.')
-    end
-
-    def terminate
-      # Define if needed.
-    end
-  end
-  
-
-  class StringReader < Reader
-    def initialize(string, fs = ',', rs = nil)
-      @fs = fs
-      @rs = rs
-      @dev = string
-      @idx = 0
-      if @dev[0, 3] == "\xef\xbb\xbf"
-        @idx += 3
-      end
-    end
-
-  private
-
-    def get_row(row)
-      parsed_cells, next_idx = CSV.parse_row(@dev, @idx, row, @fs, @rs)
-      if parsed_cells == 0 and next_idx == 0 and @idx != @dev.size
-        raise IllegalFormatError.new
-      end
-      @idx = next_idx
-      parsed_cells
-    end
-  end
-
-
-  class IOReader < Reader
-    def initialize(io, fs = ',', rs = nil)
-      @io = io
-      @fs = fs
-      @rs = rs
-      @dev = CSV::IOBuf.new(@io)
-      @idx = 0
-      if @dev[0] == 0xef and @dev[1] == 0xbb and @dev[2] == 0xbf
-        @idx += 3
-      end
-      @close_on_terminate = false
-    end
-
-    # Tell this reader to close the IO when terminated (Triggered by invoking
-    # CSV::IOReader#close).
-    def close_on_terminate
-      @close_on_terminate = true
-    end
-
-  private
-
-    def get_row(row)
-      parsed_cells, next_idx = CSV.parse_row(@dev, @idx, row, @fs, @rs)
-      if parsed_cells == 0 and next_idx == 0 and !@dev.is_eos?
-        raise IllegalFormatError.new
-      end
-      dropped = @dev.drop(next_idx)
-      @idx = next_idx - dropped
-      parsed_cells
-    end
-
-    def terminate
-      if @close_on_terminate
-        @io.close
-      end
-
-      if @dev
-        @dev.close
-      end
-    end
-  end
-
-
-  # CSV formatted string/stream writer.
-  #
-  # EXAMPLE
-  #   Write rows to 'csvout' file.
-  #
-  #   outfile = File.open('csvout', 'wb')
-  #   CSV::Writer.generate(outfile) do |csv|
-  #     csv << ['c1', nil, '', '"', "\r\n", 'c2']
-  #     ...
-  #   end
-  #
-  #   outfile.close
-  #
-  class Writer
-    # Given block is called with the writer instance.  str_or_writable must
-    # handle '<<(string)'.
-    def Writer.generate(str_or_writable, fs = ',', rs = nil, &block)
-      writer = Writer.create(str_or_writable, fs, rs)
-      if block
-        yield(writer)
-        writer.close
-        nil
-      else
-        writer
-      end
-    end
-
-    # str_or_writable must handle '<<(string)'.
-    def Writer.create(str_or_writable, fs = ',', rs = nil)
-      BasicWriter.new(str_or_writable, fs, rs)
-    end
-
-    # dump CSV stream to the device.  argument must be an Array of String.
-    def <<(row)
-      CSV.generate_row(row, row.size, @dev, @fs, @rs)
-      self
-    end
-    alias add_row <<
-
-    def close
-      terminate
-    end
-
-  private
-
-    def initialize(dev)
-      raise RuntimeError.new('Do not instanciate this class directly.')
-    end
-
-    def terminate
-      # Define if needed.
-    end
-  end
-
-
-  class BasicWriter < Writer
-    def initialize(str_or_writable, fs = ',', rs = nil)
-      @fs = fs
-      @rs = rs
-      @dev = str_or_writable
-      @close_on_terminate = false
-    end
-
-    # Tell this writer to close the IO when terminated (Triggered by invoking
-    # CSV::BasicWriter#close).
-    def close_on_terminate
-      @close_on_terminate = true
-    end
-
-  private
-
-    def terminate
-      if @close_on_terminate
-        @dev.close
-      end
-    end
-  end
-
-private
-
-  # Buffered stream.
-  #
-  # EXAMPLE 1 -- an IO.
-  #   class MyBuf < StreamBuf
-  #     # Do initialize myself before a super class.  Super class might call my
-  #     # method 'read'. (Could be awful for C++ user. :-)
-  #     def initialize(s)
-  #       @s = s
-  #       super()
-  #     end
-  #
-  #     # define my own 'read' method.
-  #     # CAUTION: Returning nil means EnfOfStream.
-  #     def read(size)
-  #       @s.read(size)
-  #     end
-  #
-  #     # release buffers. in Ruby which has GC, you do not have to call this...
-  #     def terminate
-  #       @s = nil
-  #       super()
-  #     end
-  #   end
-  #
-  #   buf = MyBuf.new(STDIN)
-  #   my_str = ''
-  #   p buf[0, 0]               # => '' (null string)
-  #   p buf[0]                  # => 97 (char code of 'a')
-  #   p buf[0, 1]               # => 'a'
-  #   my_str = buf[0, 5]
-  #   p my_str                  # => 'abcde' (5 chars)
-  #   p buf[0, 6]               # => "abcde\n" (6 chars)
-  #   p buf[0, 7]               # => "abcde\n" (6 chars)
-  #   p buf.drop(3)             # => 3 (dropped chars)
-  #   p buf.get(0, 2)           # => 'de' (2 chars)
-  #   p buf.is_eos?             # => false (is not EOS here)
-  #   p buf.drop(5)             # => 3 (dropped chars)
-  #   p buf.is_eos?             # => true (is EOS here)
-  #   p buf[0]                  # => nil (is EOS here)
-  #
-  # EXAMPLE 2 -- String.
-  #   This is a conceptual example.  No pros with this.
-  #
-  #   class StrBuf < StreamBuf
-  #     def initialize(s)
-  #       @str = s
-  #       @idx = 0
-  #       super()
-  #     end
-  #
-  #     def read(size)
-  #       str = @str[@idx, size]
-  #       @idx += str.size
-  #       str
-  #     end
-  #   end
-  #
-  class StreamBuf
-    # get a char or a partial string from the stream.
-    # idx: index of a string to specify a start point of a string to get.
-    # unlike String instance, idx < 0 returns nil.
-    # n: size of a string to get.
-    # returns char at idx if n == nil.
-    # returns a partial string, from idx to (idx + n) if n != nil.  at EOF,
-    # the string size could not equal to arg n.
-    def [](idx, n = nil) 
-      if idx < 0
-        return nil
-      end
-      if (idx_is_eos?(idx))
-        if n and (@offset + idx == buf_size(@cur_buf))
-          # Like a String, 'abc'[4, 1] returns nil and
-          # 'abc'[3, 1] returns '' not nil.
-          return ''
-        else
-          return nil
-        end
-      end
-      my_buf = @cur_buf
-      my_offset = @offset
-      next_idx = idx
-      while (my_offset + next_idx >= buf_size(my_buf))
-        if (my_buf == @buf_tail_idx)
-          unless add_buf
-            break
-          end
-        end
-        next_idx = my_offset + next_idx - buf_size(my_buf)
-        my_buf += 1
-        my_offset = 0
-      end
-      loc = my_offset + next_idx
-      if !n
-        return @buf_list[my_buf][loc]           # Fixnum of char code.
-      elsif (loc + n - 1 < buf_size(my_buf))
-        return @buf_list[my_buf][loc, n]        # String.
-      else # should do loop insted of (tail) recursive call...
-        res = @buf_list[my_buf][loc, BufSize]
-        size_added = buf_size(my_buf) - loc
-        if size_added > 0
-          idx += size_added
-          n -= size_added
-          ret = self[idx, n]
-          if ret
-            res << ret
-          end
-        end
-        return res
-      end
-    end
-    alias get []
-  
-    # drop a string from the stream.
-    # returns dropped size.  at EOF, dropped size might not equals to arg n.
-    # Once you drop the head of the stream, access to the dropped part via []
-    # or get returns nil.
-    def drop(n)
-      if is_eos?
-        return 0
-      end
-      size_dropped = 0
-      while (n > 0)
-        if !@is_eos or (@cur_buf != @buf_tail_idx)
-          if (@offset + n < buf_size(@cur_buf))
-            size_dropped += n
-            @offset += n
-            n = 0
-          else
-            size = buf_size(@cur_buf) - @offset
-            size_dropped += size
-            n -= size
-            @offset = 0
-            unless rel_buf
-              unless add_buf
-                break
-              end
-              @cur_buf = @buf_tail_idx
-            end
-          end
-        end
-      end
-      size_dropped
-    end
-  
-    def is_eos?
-      return idx_is_eos?(0)
-    end
-  
-    # WARN: Do not instantiate this class directly.  Define your own class
-    # which derives this class and define 'read' instance method.
-    def initialize
-      @buf_list = []
-      @cur_buf = @buf_tail_idx = -1
-      @offset = 0
-      @is_eos = false
-      add_buf
-      @cur_buf = @buf_tail_idx
-    end
-  
-  protected
-
-    def terminate
-      while (rel_buf); end
-    end
-  
-    # protected method 'read' must be defined in derived classes.
-    # CAUTION: Returning a string which size is not equal to 'size' means
-    # EnfOfStream.  When it is not at EOS, you must block the callee, try to
-    # read and return the sized string.
-    def read(size) # raise EOFError
-      raise NotImplementedError.new('Method read must be defined in a derived class.')
-    end
-  
-  private
-  
-    def buf_size(idx)
-      @buf_list[idx].size
-    end
-
-    def add_buf
-      if @is_eos
-        return false
-      end
-      begin
-        str_read = read(BufSize)
-      rescue EOFError
-        str_read = nil
-      rescue
-        terminate
-        raise
-      end
-      if str_read.nil?
-        @is_eos = true
-        @buf_list.push('')
-        @buf_tail_idx += 1
-        false
-      else
-        @buf_list.push(str_read)
-        @buf_tail_idx += 1
-        true
-      end
-    end
-  
-    def rel_buf
-      if (@cur_buf < 0)
-        return false
-      end
-      @buf_list[@cur_buf] = nil
-      if (@cur_buf == @buf_tail_idx)
-        @cur_buf = -1
-        return false
-      else
-        @cur_buf += 1
-        return true
-      end
-    end
-  
-    def idx_is_eos?(idx)
-      (@is_eos and ((@cur_buf < 0) or (@cur_buf == @buf_tail_idx)))
-    end
-  
-    BufSize = 1024 * 8
-  end
-
-  # Buffered IO.
-  #
-  # EXAMPLE
-  #   # File 'bigdata' could be a giga-byte size one!
-  #   buf = CSV::IOBuf.new(File.open('bigdata', 'rb'))
-  #   CSV::Reader.new(buf).each do |row|
-  #     p row
-  #     break if row[0].data == 'admin'
-  #   end
-  #
-  class IOBuf < StreamBuf
-    def initialize(s)
-      @s = s
-      super()
-    end
-  
-    def close
-      terminate
-    end
-
-  private
-
-    def read(size)
-      @s.read(size)
-    end
- 
-    def terminate
-      super()
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date.rb
deleted file mode 100644
index 1de2383..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date.rb
+++ /dev/null
@@ -1,1707 +0,0 @@
-#
-# date.rb - date and time library
-#
-# Author: Tadayoshi Funaba 1998-2006
-#
-# Documentation: William Webber <william at williamwebber.com>
-#
-#--
-# $Id: date.rb,v 2.33 2007-12-22 14:41:34+09 tadf Exp $
-#++
-#
-# == Overview
-#
-# This file provides two classes for working with
-# dates and times.
-#
-# The first class, Date, represents dates.
-# It works with years, months, weeks, and days.
-# See the Date class documentation for more details.
-#
-# The second, DateTime, extends Date to include hours,
-# minutes, seconds, and fractions of a second.  It
-# provides basic support for time zones.  See the
-# DateTime class documentation for more details.
-#
-# === Ways of calculating the date.
-#
-# In common usage, the date is reckoned in years since or
-# before the Common Era (CE/BCE, also known as AD/BC), then
-# as a month and day-of-the-month within the current year.
-# This is known as the *Civil* *Date*, and abbreviated
-# as +civil+ in the Date class.
-#
-# Instead of year, month-of-the-year,  and day-of-the-month,
-# the date can also be reckoned in terms of year and
-# day-of-the-year.  This is known as the *Ordinal* *Date*,
-# and is abbreviated as +ordinal+ in the Date class.  (Note
-# that referring to this as the Julian date is incorrect.)
-#
-# The date can also be reckoned in terms of year, week-of-the-year,
-# and day-of-the-week.  This is known as the *Commercial*
-# *Date*, and is abbreviated as +commercial+ in the
-# Date class.  The commercial week runs Monday (day-of-the-week
-# 1) to Sunday (day-of-the-week 7), in contrast to the civil
-# week which runs Sunday (day-of-the-week 0) to Saturday
-# (day-of-the-week 6).  The first week of the commercial year
-# starts on the Monday on or before January 1, and the commercial
-# year itself starts on this Monday, not January 1.
-#
-# For scientific purposes, it is convenient to refer to a date
-# simply as a day count, counting from an arbitrary initial
-# day.  The date first chosen for this was January 1, 4713 BCE.
-# A count of days from this date is the *Julian* *Day* *Number*
-# or *Julian* *Date*, which is abbreviated as +jd+ in the
-# Date class.  This is in local time, and counts from midnight
-# on the initial day.  The stricter usage is in UTC, and counts
-# from midday on the initial day.  This is referred to in the
-# Date class as the *Astronomical* *Julian* *Day* *Number*, and
-# abbreviated as +ajd+.  In the Date class, the Astronomical
-# Julian Day Number includes fractional days.
-#
-# Another absolute day count is the *Modified* *Julian* *Day*
-# *Number*, which takes November 17, 1858 as its initial day.
-# This is abbreviated as +mjd+ in the Date class.  There
-# is also an *Astronomical* *Modified* *Julian* *Day* *Number*,
-# which is in UTC and includes fractional days.  This is
-# abbreviated as +amjd+ in the Date class.  Like the Modified
-# Julian Day Number (and unlike the Astronomical Julian
-# Day Number), it counts from midnight.
-#
-# Alternative calendars such as the Chinese Lunar Calendar,
-# the Islamic Calendar, or the French Revolutionary Calendar
-# are not supported by the Date class; nor are calendars that
-# are based on an Era different from the Common Era, such as
-# the Japanese Imperial Calendar.
-#
-# === Calendar Reform
-#
-# The standard civil year is 365 days long.  However, the
-# solar year is fractionally longer than this.  To account
-# for this, a *leap* *year* is occasionally inserted.  This
-# is a year with 366 days, the extra day falling on February 29.
-# In the early days of the civil calendar, every fourth
-# year without exception was a leap year.  This way of
-# reckoning leap years is the *Julian* *Calendar*.
-#
-# However, the solar year is marginally shorter than 365 1/4
-# days, and so the *Julian* *Calendar* gradually ran slow
-# over the centuries.  To correct this, every 100th year
-# (but not every 400th year) was excluded as a leap year.
-# This way of reckoning leap years, which we use today, is
-# the *Gregorian* *Calendar*.
-#
-# The Gregorian Calendar was introduced at different times
-# in different regions.  The day on which it was introduced
-# for a particular region is the *Day* *of* *Calendar*
-# *Reform* for that region.  This is abbreviated as +sg+
-# (for Start of Gregorian calendar) in the Date class.
-#
-# Two such days are of particular
-# significance.  The first is October 15, 1582, which was
-# the Day of Calendar Reform for Italy and most Catholic
-# countries.  The second is September 14, 1752, which was
-# the Day of Calendar Reform for England and its colonies
-# (including what is now the United States).  These two
-# dates are available as the constants Date::ITALY and
-# Date::ENGLAND, respectively.  (By comparison, Germany and
-# Holland, less Catholic than Italy but less stubborn than
-# England, changed over in 1698; Sweden in 1753; Russia not
-# till 1918, after the Revolution; and Greece in 1923.  Many
-# Orthodox churches still use the Julian Calendar.  A complete
-# list of Days of Calendar Reform can be found at
-# http://www.polysyllabic.com/GregConv.html.)
-#
-# Switching from the Julian to the Gregorian calendar
-# involved skipping a number of days to make up for the
-# accumulated lag, and the later the switch was (or is)
-# done, the more days need to be skipped.  So in 1582 in Italy,
-# 4th October was followed by 15th October, skipping 10 days; in 1752
-# in England, 2nd September was followed by 14th September, skipping
-# 11 days; and if I decided to switch from Julian to Gregorian
-# Calendar this midnight, I would go from 27th July 2003 (Julian)
-# today to 10th August 2003 (Gregorian) tomorrow, skipping
-# 13 days.  The Date class is aware of this gap, and a supposed
-# date that would fall in the middle of it is regarded as invalid.
-#
-# The Day of Calendar Reform is relevant to all date representations
-# involving years.  It is not relevant to the Julian Day Numbers,
-# except for converting between them and year-based representations.
-#
-# In the Date and DateTime classes, the Day of Calendar Reform or
-# +sg+ can be specified a number of ways.  First, it can be as
-# the Julian Day Number of the Day of Calendar Reform.  Second,
-# it can be using the constants Date::ITALY or Date::ENGLAND; these
-# are in fact the Julian Day Numbers of the Day of Calendar Reform
-# of the respective regions.  Third, it can be as the constant
-# Date::JULIAN, which means to always use the Julian Calendar.
-# Finally, it can be as the constant Date::GREGORIAN, which means
-# to always use the Gregorian Calendar.
-#
-# Note: in the Julian Calendar, New Years Day was March 25.  The
-# Date class does not follow this convention.
-#
-# === Time Zones
-#
-# DateTime objects support a simple representation
-# of time zones.  Time zones are represented as an offset
-# from UTC, as a fraction of a day.  This offset is the
-# how much local time is later (or earlier) than UTC.
-# UTC offset 0 is centred on England (also known as GMT).
-# As you travel east, the offset increases until you
-# reach the dateline in the middle of the Pacific Ocean;
-# as you travel west, the offset decreases.  This offset
-# is abbreviated as +of+ in the Date class.
-#
-# This simple representation of time zones does not take
-# into account the common practice of Daylight Savings
-# Time or Summer Time.
-#
-# Most DateTime methods return the date and the
-# time in local time.  The two exceptions are
-# #ajd() and #amjd(), which return the date and time
-# in UTC time, including fractional days.
-#
-# The Date class does not support time zone offsets, in that
-# there is no way to create a Date object with a time zone.
-# However, methods of the Date class when used by a
-# DateTime instance will use the time zone offset of this
-# instance.
-#
-# == Examples of use
-#
-# === Print out the date of every Sunday between two dates.
-#
-#     def print_sundays(d1, d2)
-#         d1 +=1 while (d1.wday != 0)
-#         d1.step(d2, 7) do |date|
-#             puts "#{Date::MONTHNAMES[date.mon]} #{date.day}"
-#         end
-#     end
-#
-#     print_sundays(Date::civil(2003, 4, 8), Date::civil(2003, 5, 23))
-#
-# === Calculate how many seconds to go till midnight on New Year's Day.
-#
-#     def secs_to_new_year(now = DateTime::now())
-#         new_year = DateTime.new(now.year + 1, 1, 1)
-#         dif = new_year - now
-#         hours, mins, secs, ignore_fractions = Date::day_fraction_to_time(dif)
-#         return hours * 60 * 60 + mins * 60 + secs
-#     end
-#
-#     puts secs_to_new_year()
-
-require 'rational'
-require 'date/format'
-
-# Class representing a date.
-#
-# See the documentation to the file date.rb for an overview.
-#
-# Internally, the date is represented as an Astronomical
-# Julian Day Number, +ajd+.  The Day of Calendar Reform, +sg+, is
-# also stored, for conversions to other date formats.  (There
-# is also an +of+ field for a time zone offset, but this
-# is only for the use of the DateTime subclass.)
-#
-# A new Date object is created using one of the object creation
-# class methods named after the corresponding date format, and the
-# arguments appropriate to that date format; for instance,
-# Date::civil() (aliased to Date::new()) with year, month,
-# and day-of-month, or Date::ordinal() with year and day-of-year.
-# All of these object creation class methods also take the
-# Day of Calendar Reform as an optional argument.
-#
-# Date objects are immutable once created.
-#
-# Once a Date has been created, date values
-# can be retrieved for the different date formats supported
-# using instance methods.  For instance, #mon() gives the
-# Civil month, #cwday() gives the Commercial day of the week,
-# and #yday() gives the Ordinal day of the year.  Date values
-# can be retrieved in any format, regardless of what format
-# was used to create the Date instance.
-#
-# The Date class includes the Comparable module, allowing
-# date objects to be compared and sorted, ranges of dates
-# to be created, and so forth.
-class Date
-
-  include Comparable
-
-  # Full month names, in English.  Months count from 1 to 12; a
-  # month's numerical representation indexed into this array
-  # gives the name of that month (hence the first element is nil).
-  MONTHNAMES = [nil] + %w(January February March April May June July
-			  August September October November December)
-
-  # Full names of days of the week, in English.  Days of the week
-  # count from 0 to 6 (except in the commercial week); a day's numerical
-  # representation indexed into this array gives the name of that day.
-  DAYNAMES = %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
-
-  # Abbreviated month names, in English.
-  ABBR_MONTHNAMES = [nil] + %w(Jan Feb Mar Apr May Jun
-			       Jul Aug Sep Oct Nov Dec)
-
-  # Abbreviated day names, in English.
-  ABBR_DAYNAMES = %w(Sun Mon Tue Wed Thu Fri Sat)
-
-  [MONTHNAMES, DAYNAMES, ABBR_MONTHNAMES, ABBR_DAYNAMES].each do |xs|
-    xs.each{|x| x.freeze unless x.nil?}.freeze
-  end
-
-  class Infinity < Numeric # :nodoc:
-
-    include Comparable
-
-    def initialize(d=1) @d = d <=> 0 end
-
-    def d() @d end
-
-    protected :d
-
-    def zero? () false end
-    def finite? () false end
-    def infinite? () d.nonzero? end
-    def nan? () d.zero? end
-
-    def abs() self.class.new end
-
-    def -@ () self.class.new(-d) end
-    def +@ () self.class.new(+d) end
-
-    def <=> (other)
-      case other
-      when Infinity; d <=> other.d
-      when Numeric; d
-      else
-	begin
-	  l, r = other.coerce(self)
-	  return l <=> r
-	rescue NoMethodError
-	end
-      end
-      nil
-    end
-
-    def coerce(other)
-      case other
-      when Numeric; return -d, d
-      else
-	super
-      end
-    end
-
-  end
-
-  # The Julian Day Number of the Day of Calendar Reform for Italy
-  # and the Catholic countries.
-  ITALY     = 2299161 # 1582-10-15
-
-  # The Julian Day Number of the Day of Calendar Reform for England
-  # and her Colonies.
-  ENGLAND   = 2361222 # 1752-09-14
-
-  # A constant used to indicate that a Date should always use the
-  # Julian calendar.
-  JULIAN    =  Infinity.new
-
-  # A constant used to indicate that a Date should always use the
-  # Gregorian calendar.
-  GREGORIAN = -Infinity.new
-
-  UNIXEPOCH = 2440588 # 1970-01-01 :nodoc:
-
-  # Does a given Julian Day Number fall inside the old-style (Julian)
-  # calendar?
-  #
-  # +jd+ is the Julian Day Number in question. +sg+ may be Date::GREGORIAN,
-  # in which case the answer is false; it may be Date::JULIAN, in which case
-  # the answer is true; or it may a number representing the Day of
-  # Calendar Reform. Date::ENGLAND and Date::ITALY are two possible such
-  # days.
-
-  def self.julian? (jd, sg)
-    case sg
-    when Numeric
-      jd < sg
-    else
-      if $VERBOSE
-	warn("#{caller.shift.sub(/:in .*/, '')}: " \
-"warning: do not use non-numerical object as julian day number anymore")
-      end
-      not sg
-    end
-  end
-
-  # Does a given Julian Day Number fall inside the new-style (Gregorian)
-  # calendar?
-  #
-  # The reverse of self.os?  See the documentation for that method for
-  # more details.
-  def self.gregorian? (jd, sg) !julian?(jd, sg) end
-
-  def self.fix_style(jd, sg) # :nodoc:
-    if julian?(jd, sg)
-    then JULIAN
-    else GREGORIAN end
-  end
-
-  private_class_method :fix_style
-
-  # Convert an Ordinal Date to a Julian Day Number.
-  #
-  # +y+ and +d+ are the year and day-of-year to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Julian Day Number.
-  def self.ordinal_to_jd(y, d, sg=GREGORIAN)
-    civil_to_jd(y, 1, d, sg)
-  end
-
-  # Convert a Julian Day Number to an Ordinal Date.
-  #
-  # +jd+ is the Julian Day Number to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Ordinal Date as
-  # [year, day_of_year]
-  def self.jd_to_ordinal(jd, sg=GREGORIAN)
-    y = jd_to_civil(jd, sg)[0]
-    doy = jd - civil_to_jd(y - 1, 12, 31, fix_style(jd, sg))
-    return y, doy
-  end
-
-  # Convert a Civil Date to a Julian Day Number.
-  # +y+, +m+, and +d+ are the year, month, and day of the
-  # month.  +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Julian Day Number.
-  def self.civil_to_jd(y, m, d, sg=GREGORIAN)
-    if m <= 2
-      y -= 1
-      m += 12
-    end
-    a = (y / 100.0).floor
-    b = 2 - a + (a / 4.0).floor
-    jd = (365.25 * (y + 4716)).floor +
-      (30.6001 * (m + 1)).floor +
-      d + b - 1524
-    if julian?(jd, sg)
-      jd -= b
-    end
-    jd
-  end
-
-  # Convert a Julian Day Number to a Civil Date.  +jd+ is
-  # the Julian Day Number. +sg+ specifies the Day of
-  # Calendar Reform.
-  #
-  # Returns the corresponding [year, month, day_of_month]
-  # as a three-element array.
-  def self.jd_to_civil(jd, sg=GREGORIAN)
-    if julian?(jd, sg)
-      a = jd
-    else
-      x = ((jd - 1867216.25) / 36524.25).floor
-      a = jd + 1 + x - (x / 4.0).floor
-    end
-    b = a + 1524
-    c = ((b - 122.1) / 365.25).floor
-    d = (365.25 * c).floor
-    e = ((b - d) / 30.6001).floor
-    dom = b - d - (30.6001 * e).floor
-    if e <= 13
-      m = e - 1
-      y = c - 4716
-    else
-      m = e - 13
-      y = c - 4715
-    end
-    return y, m, dom
-  end
-
-  # Convert a Commercial Date to a Julian Day Number.
-  #
-  # +y+, +w+, and +d+ are the (commercial) year, week of the year,
-  # and day of the week of the Commercial Date to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.commercial_to_jd(y, w, d, ns=GREGORIAN)
-    jd = civil_to_jd(y, 1, 4, ns)
-    (jd - (((jd - 1) + 1) % 7)) +
-      7 * (w - 1) +
-      (d - 1)
-  end
-
-  # Convert a Julian Day Number to a Commercial Date
-  #
-  # +jd+ is the Julian Day Number to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Commercial Date as
-  # [commercial_year, week_of_year, day_of_week]
-  def self.jd_to_commercial(jd, sg=GREGORIAN)
-    ns = fix_style(jd, sg)
-    a = jd_to_civil(jd - 3, ns)[0]
-    y = if jd >= commercial_to_jd(a + 1, 1, 1, ns) then a + 1 else a end
-    w = 1 + ((jd - commercial_to_jd(y, 1, 1, ns)) / 7).floor
-    d = (jd + 1) % 7
-    d = 7 if d == 0
-    return y, w, d
-  end
-
-  def self.weeknum_to_jd(y, w, d, f=0, ns=GREGORIAN) # :nodoc:
-    a = civil_to_jd(y, 1, 1, ns) + 6
-    (a - ((a - f) + 1) % 7 - 7) + 7 * w + d
-  end
-
-  def self.jd_to_weeknum(jd, f=0, sg=GREGORIAN) # :nodoc:
-    ns = fix_style(jd, sg)
-    y, m, d = jd_to_civil(jd, ns)
-    a = civil_to_jd(y, 1, 1, ns) + 6
-    w, d = (jd - (a - ((a - f) + 1) % 7) + 7).divmod(7)
-    return y, w, d
-  end
-
-  private_class_method :weeknum_to_jd, :jd_to_weeknum
-
-  # Convert an Astronomical Julian Day Number to a (civil) Julian
-  # Day Number.
-  #
-  # +ajd+ is the Astronomical Julian Day Number to convert.
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  #
-  # Returns the (civil) Julian Day Number as [day_number,
-  # fraction] where +fraction+ is always 1/2.
-  def self.ajd_to_jd(ajd, of=0) (ajd + of + 1.to_r/2).divmod(1) end
-
-  # Convert a (civil) Julian Day Number to an Astronomical Julian
-  # Day Number.
-  #
-  # +jd+ is the Julian Day Number to convert, and +fr+ is a
-  # fractional day.
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  #
-  # Returns the Astronomical Julian Day Number as a single
-  # numeric value.
-  def self.jd_to_ajd(jd, fr, of=0) jd + fr - of - 1.to_r/2 end
-
-  # Convert a fractional day +fr+ to [hours, minutes, seconds,
-  # fraction_of_a_second]
-  def self.day_fraction_to_time(fr)
-    h,   fr = fr.divmod(1.to_r/24)
-    min, fr = fr.divmod(1.to_r/1440)
-    s,   fr = fr.divmod(1.to_r/86400)
-    return h, min, s, fr
-  end
-
-  # Convert an +h+ hour, +min+ minutes, +s+ seconds period
-  # to a fractional day.
-  def self.time_to_day_fraction(h, min, s)
-    h.to_r/24 + min.to_r/1440 + s.to_r/86400
-  end
-
-  # Convert an Astronomical Modified Julian Day Number to an
-  # Astronomical Julian Day Number.
-  def self.amjd_to_ajd(amjd) amjd + 4800001.to_r/2 end
-
-  # Convert an Astronomical Julian Day Number to an
-  # Astronomical Modified Julian Day Number.
-  def self.ajd_to_amjd(ajd) ajd - 4800001.to_r/2 end
-
-  # Convert a Modified Julian Day Number to a Julian
-  # Day Number.
-  def self.mjd_to_jd(mjd) mjd + 2400001 end
-
-  # Convert a Julian Day Number to a Modified Julian Day
-  # Number.
-  def self.jd_to_mjd(jd) jd - 2400001 end
-
-  # Convert a count of the number of days since the adoption
-  # of the Gregorian Calendar (in Italy) to a Julian Day Number.
-  def self.ld_to_jd(ld) ld + 2299160 end
-
-  # Convert a Julian Day Number to the number of days since
-  # the adoption of the Gregorian Calendar (in Italy).
-  def self.jd_to_ld(jd) jd - 2299160 end
-
-  # Convert a Julian Day Number to the day of the week.
-  #
-  # Sunday is day-of-week 0; Saturday is day-of-week 6.
-  def self.jd_to_wday(jd) (jd + 1) % 7 end
-
-  # Is a year a leap year in the Julian calendar?
-  #
-  # All years divisible by 4 are leap years in the Julian calendar.
-  def self.julian_leap? (y) y % 4 == 0 end
-
-  # Is a year a leap year in the Gregorian calendar?
-  #
-  # All years divisible by 4 are leap years in the Gregorian calendar,
-  # except for years divisible by 100 and not by 400.
-  def self.gregorian_leap? (y) y % 4 == 0 && y % 100 != 0 || y % 400 == 0 end
-
-  class << self; alias_method :leap?, :gregorian_leap? end
-  class << self; alias_method :new!, :new end
-
-  # Is +jd+ a valid Julian Day Number?
-  #
-  # If it is, returns it.  In fact, any value is treated as a valid
-  # Julian Day Number.
-  def self.valid_jd? (jd, sg=ITALY) jd end
-
-  # Do the year +y+ and day-of-year +d+ make a valid Ordinal Date?
-  # Returns the corresponding Julian Day Number if they do, or
-  # nil if they don't.
-  #
-  # +d+ can be a negative number, in which case it counts backwards
-  # from the end of the year (-1 being the last day of the year).
-  # No year wraparound is performed, however, so valid values of
-  # +d+ are -365 .. -1, 1 .. 365 on a non-leap-year,
-  # -366 .. -1, 1 .. 366 on a leap year.
-  # A date falling in the period skipped in the Day of Calendar Reform
-  # adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_ordinal? (y, d, sg=ITALY)
-    if d < 0
-      ny, = (y + 1).divmod(1)
-      jd = ordinal_to_jd(ny, d + 1, sg)
-      ns = fix_style(jd, sg)
-      return unless [y] == jd_to_ordinal(jd, sg)[0..0]
-      return unless [ny, 1] == jd_to_ordinal(jd - d, ns)
-    else
-      jd = ordinal_to_jd(y, d, sg)
-      return unless [y, d] == jd_to_ordinal(jd, sg)
-    end
-    jd
-  end
-
-  # Do year +y+, month +m+, and day-of-month +d+ make a
-  # valid Civil Date?  Returns the corresponding Julian
-  # Day Number if they do, nil if they don't.
-  #
-  # +m+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # month respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # A date falling in the period skipped in the Day of Calendar
-  # Reform adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_civil? (y, m, d, sg=ITALY)
-    if m < 0
-      m += 13
-    end
-    if d < 0
-      ny, nm = (y * 12 + m).divmod(12)
-      nm,    = (nm + 1).divmod(1)
-      jd = civil_to_jd(ny, nm, d + 1, sg)
-      ns = fix_style(jd, sg)
-      return unless [y, m] == jd_to_civil(jd, sg)[0..1]
-      return unless [ny, nm, 1] == jd_to_civil(jd - d, ns)
-    else
-      jd = civil_to_jd(y, m, d, sg)
-      return unless [y, m, d] == jd_to_civil(jd, sg)
-    end
-    jd
-  end
-
-  class << self; alias_method :valid_date?, :valid_civil? end
-
-  # Do year +y+, week-of-year +w+, and day-of-week +d+ make a
-  # valid Commercial Date?  Returns the corresponding Julian
-  # Day Number if they do, nil if they don't.
-  #
-  # Monday is day-of-week 1; Sunday is day-of-week 7.
-  #
-  # +w+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # week respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # A date falling in the period skipped in the Day of Calendar
-  # Reform adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_commercial? (y, w, d, sg=ITALY)
-    if d < 0
-      d += 8
-    end
-    if w < 0
-      ny, nw, nd =
-	jd_to_commercial(commercial_to_jd(y + 1, 1, 1) + w * 7)
-      return unless ny == y
-      w = nw
-    end
-    jd = commercial_to_jd(y, w, d)
-    return unless gregorian?(jd, sg)
-    return unless [y, w, d] == jd_to_commercial(jd)
-    jd
-  end
-
-  def self.valid_weeknum? (y, w, d, f, sg=ITALY) # :nodoc:
-    if d < 0
-      d += 7
-    end
-    if w < 0
-      ny, nw, nd, nf =
-	jd_to_weeknum(weeknum_to_jd(y + 1, 1, f, f) + w * 7, f)
-      return unless ny == y
-      w = nw
-    end
-    jd = weeknum_to_jd(y, w, d, f)
-    return unless gregorian?(jd, sg)
-    return unless [y, w, d] == jd_to_weeknum(jd, f)
-    jd
-  end
-
-  private_class_method :valid_weeknum?
-
-  # Do hour +h+, minute +min+, and second +s+ constitute a valid time?
-  #
-  # If they do, returns their value as a fraction of a day.  If not,
-  # returns nil.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.
-  def self.valid_time? (h, min, s)
-    h   += 24 if h   < 0
-    min += 60 if min < 0
-    s   += 60 if s   < 0
-    return unless ((0..23) === h &&
-		   (0..59) === min &&
-		   (0..59) === s) ||
-		  (24 == h &&
-		    0 == min &&
-		    0 == s)
-    time_to_day_fraction(h, min, s)
-  end
-
-  # Create a new Date object from a Julian Day Number.
-  #
-  # +jd+ is the Julian Day Number; if not specified, it defaults to
-  # 0.
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.jd(jd=0, sg=ITALY)
-    jd = valid_jd?(jd, sg)
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  # Create a new Date object from an Ordinal Date, specified
-  # by year +y+ and day-of-year +d+. +d+ can be negative,
-  # in which it counts backwards from the end of the year.
-  # No year wraparound is performed, however.  An invalid
-  # value for +d+ results in an ArgumentError being raised.
-  #
-  # +y+ defaults to -4712, and +d+ to 1; this is Julian Day
-  # Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.ordinal(y=-4712, d=1, sg=ITALY)
-    unless jd = valid_ordinal?(y, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  # Create a new Date object for the Civil Date specified by
-  # year +y+, month +m+, and day-of-month +d+.
-  #
-  # +m+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # month respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # can be negative
-  #
-  # +y+ defaults to -4712, +m+ to 1, and +d+ to 1; this is
-  # Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.civil(y=-4712, m=1, d=1, sg=ITALY)
-    unless jd = valid_civil?(y, m, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  class << self; alias_method :new, :civil end
-
-  # Create a new Date object for the Commercial Date specified by
-  # year +y+, week-of-year +w+, and day-of-week +d+.
-  #
-  # Monday is day-of-week 1; Sunday is day-of-week 7.
-  #
-  # +w+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # week respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  #
-  # +y+ defaults to 1582, +w+ to 41, and +d+ to 5, the Day of
-  # Calendar Reform for Italy and the Catholic countries.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.commercial(y=1582, w=41, d=5, sg=ITALY)
-    unless jd = valid_commercial?(y, w, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  def self.weeknum(y=1582, w=41, d=5, f=0, sg=ITALY) # :nodoc:
-    unless jd = valid_weeknum?(y, w, d, f, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  private_class_method :weeknum
-
-  def self.rewrite_frags(elem) # :nodoc:
-    elem ||= {}
-    if seconds = elem[:seconds]
-      d,   fr = seconds.divmod(86400)
-      h,   fr = fr.divmod(3600)
-      min, fr = fr.divmod(60)
-      s,   fr = fr.divmod(1)
-      elem[:jd] = UNIXEPOCH + d
-      elem[:hour] = h
-      elem[:min] = min
-      elem[:sec] = s
-      elem[:sec_fraction] = fr
-      elem.delete(:seconds)
-      elem.delete(:offset)
-    end
-    elem
-  end
-
-  private_class_method :rewrite_frags
-
-  def self.complete_frags(elem) # :nodoc:
-    i = 0
-    g = [[:time, [:hour, :min, :sec]],
-	 [nil, [:jd]],
-	 [:ordinal, [:year, :yday, :hour, :min, :sec]],
-	 [:civil, [:year, :mon, :mday, :hour, :min, :sec]],
-	 [:commercial, [:cwyear, :cweek, :cwday, :hour, :min, :sec]],
-	 [:wday, [:wday, :hour, :min, :sec]],
-	 [:wnum0, [:year, :wnum0, :wday, :hour, :min, :sec]],
-	 [:wnum1, [:year, :wnum1, :wday, :hour, :min, :sec]],
-	 [nil, [:cwyear, :cweek, :wday, :hour, :min, :sec]],
-	 [nil, [:year, :wnum0, :cwday, :hour, :min, :sec]],
-	 [nil, [:year, :wnum1, :cwday, :hour, :min, :sec]]].
-      collect{|k, a| e = elem.values_at(*a).compact; [k, a, e]}.
-      select{|k, a, e| e.size > 0}.
-      sort_by{|k, a, e| [e.size, i -= 1]}.last
-
-    d = nil
-
-    if g && g[0] && (g[1].size - g[2].size) != 0
-      d ||= Date.today
-
-      case g[0]
-      when :ordinal
-	elem[:year] ||= d.year
-	elem[:yday] ||= 1
-      when :civil
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:mon]  ||= 1
-	elem[:mday] ||= 1
-      when :commercial
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:cweek] ||= 1
-	elem[:cwday] ||= 1
-      when :wday
-	elem[:jd] ||= (d - d.wday + elem[:wday]).jd
-      when :wnum0
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:wnum0] ||= 0
-	elem[:wday]  ||= 0
-      when :wnum1
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:wnum1] ||= 0
-	elem[:wday]  ||= 0
-      end
-    end
-
-    if g && g[0] == :time
-      if self <= DateTime
-	d ||= Date.today
-	elem[:jd] ||= d.jd
-      end
-    end
-
-    elem[:hour] ||= 0
-    elem[:min]  ||= 0
-    elem[:sec]  ||= 0
-    elem[:sec] = [elem[:sec], 59].min
-
-    elem
-  end
-
-  private_class_method :complete_frags
-
-  def self.valid_date_frags?(elem, sg) # :nodoc:
-    catch :jd do
-      a = elem.values_at(:jd)
-      if a.all?
-	if jd = valid_jd?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :yday)
-      if a.all?
-	if jd = valid_ordinal?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :mon, :mday)
-      if a.all?
-	if jd = valid_civil?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:cwyear, :cweek, :cwday)
-      if a[2].nil? && elem[:wday]
-	a[2] = elem[:wday].nonzero? || 7
-      end
-      if a.all?
-	if jd = valid_commercial?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :wnum0, :wday)
-      if a[2].nil? && elem[:cwday]
-	a[2] = elem[:cwday] % 7
-      end
-      if a.all?
-	if jd = valid_weeknum?(*(a << 0 << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :wnum1, :wday)
-      if a[2]
-	a[2] = (a[2] - 1) % 7
-      end
-      if a[2].nil? && elem[:cwday]
-	a[2] = (elem[:cwday] - 1) % 7
-      end
-      if a.all?
-	if jd = valid_weeknum?(*(a << 1 << sg))
-	  throw :jd, jd
-	end
-      end
-    end
-  end
-
-  private_class_method :valid_date_frags?
-
-  def self.valid_time_frags? (elem) # :nodoc:
-    h, min, s = elem.values_at(:hour, :min, :sec)
-    valid_time?(h, min, s)
-  end
-
-  private_class_method :valid_time_frags?
-
-  def self.new_by_frags(elem, sg) # :nodoc:
-    elem = rewrite_frags(elem)
-    elem = complete_frags(elem)
-    unless jd = valid_date_frags?(elem, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  private_class_method :new_by_frags
-
-  # Create a new Date object by parsing from a String
-  # according to a specified format.
-  #
-  # +str+ is a String holding a date representation.
-  # +fmt+ is the format that the date is in.  See
-  # date/format.rb for details on supported formats.
-  #
-  # The default +str+ is '-4712-01-01', and the default
-  # +fmt+ is '%F', which means Year-Month-Day_of_Month.
-  # This gives Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # An ArgumentError will be raised if +str+ cannot be
-  # parsed.
-  def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
-    elem = _strptime(str, fmt)
-    new_by_frags(elem, sg)
-  end
-
-  # Create a new Date object by parsing from a String,
-  # without specifying the format.
-  #
-  # +str+ is a String holding a date representation.
-  # +comp+ specifies whether to interpret 2-digit years
-  # as 19XX (>= 69) or 20XX (< 69); the default is not to.
-  # The method will attempt to parse a date from the String
-  # using various heuristics; see #_parse in date/format.rb
-  # for more details.  If parsing fails, an ArgumentError
-  # will be raised.
-  #
-  # The default +str+ is '-4712-01-01'; this is Julian
-  # Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.parse(str='-4712-01-01', comp=false, sg=ITALY)
-    elem = _parse(str, comp)
-    new_by_frags(elem, sg)
-  end
-
-  class << self
-
-    def once(*ids) # :nodoc:
-      for id in ids
-	module_eval <<-"end;"
-	  alias_method :__#{id.to_i}__, :#{id.to_s}
-	  private :__#{id.to_i}__
-	  def #{id.to_s}(*args, &block)
-	    (@__#{id.to_i}__ ||= [__#{id.to_i}__(*args, &block)])[0]
-	  end
-	end;
-      end
-    end
-
-    private :once
-
-  end
-
-  # *NOTE* this is the documentation for the method new!().  If
-  # you are reading this as the documentation for new(), that is
-  # because rdoc doesn't fully support the aliasing of the
-  # initialize() method.
-  # new() is in
-  # fact an alias for #civil(): read the documentation for that
-  # method instead.
-  #
-  # Create a new Date object.
-  #
-  # +ajd+ is the Astronomical Julian Day Number.
-  # +of+ is the offset from UTC as a fraction of a day.
-  # Both default to 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform to use for this
-  # Date object.
-  #
-  # Using one of the factory methods such as Date::civil is
-  # generally easier and safer.
-  def initialize(ajd=0, of=0, sg=ITALY) @ajd, @of, @sg = ajd, of, sg end
-
-  # Get the date as an Astronomical Julian Day Number.
-  def ajd() @ajd end
-
-  # Get the date as an Astronomical Modified Julian Day Number.
-  def amjd() self.class.ajd_to_amjd(@ajd) end
-
-  once :amjd
-
-  # Get the date as a Julian Day Number.
-  def jd() self.class.ajd_to_jd(@ajd, @of)[0] end
-
-  # Get any fractional day part of the date.
-  def day_fraction() self.class.ajd_to_jd(@ajd, @of)[1] end
-
-  # Get the date as a Modified Julian Day Number.
-  def mjd() self.class.jd_to_mjd(jd) end
-
-  # Get the date as the number of days since the Day of Calendar
-  # Reform (in Italy and the Catholic countries).
-  def ld() self.class.jd_to_ld(jd) end
-
-  once :jd, :day_fraction, :mjd, :ld
-
-  # Get the date as a Civil Date, [year, month, day_of_month]
-  def civil() self.class.jd_to_civil(jd, @sg) end # :nodoc:
-
-  # Get the date as an Ordinal Date, [year, day_of_year]
-  def ordinal() self.class.jd_to_ordinal(jd, @sg) end # :nodoc:
-
-  # Get the date as a Commercial Date, [year, week_of_year, day_of_week]
-  def commercial() self.class.jd_to_commercial(jd, @sg) end # :nodoc:
-
-  def weeknum0() self.class.__send__(:jd_to_weeknum, jd, 0, @sg) end # :nodoc:
-  def weeknum1() self.class.__send__(:jd_to_weeknum, jd, 1, @sg) end # :nodoc:
-
-  once :civil, :ordinal, :commercial, :weeknum0, :weeknum1
-  private :civil, :ordinal, :commercial, :weeknum0, :weeknum1
-
-  # Get the year of this date.
-  def year() civil[0] end
-
-  # Get the day-of-the-year of this date.
-  #
-  # January 1 is day-of-the-year 1
-  def yday() ordinal[1] end
-
-  # Get the month of this date.
-  #
-  # January is month 1.
-  def mon() civil[1] end
-
-  # Get the day-of-the-month of this date.
-  def mday() civil[2] end
-
-  alias_method :month, :mon
-  alias_method :day, :mday
-
-  def wnum0() weeknum0[1] end # :nodoc:
-  def wnum1() weeknum1[1] end # :nodoc:
-
-  private :wnum0, :wnum1
-
-  # Get the time of this date as [hours, minutes, seconds,
-  # fraction_of_a_second]
-  def time() self.class.day_fraction_to_time(day_fraction) end # :nodoc:
-
-  once :time
-  private :time
-
-  # Get the hour of this date.
-  def hour() time[0] end
-
-  # Get the minute of this date.
-  def min() time[1] end
-
-  # Get the second of this date.
-  def sec() time[2] end
-
-  # Get the fraction-of-a-second of this date.  The unit is in days.
-  # I do NOT recommend you to use this method.
-  def sec_fraction() time[3] end
-
-  private :hour, :min, :sec, :sec_fraction
-
-  def zone() strftime('%:z') end
-
-  private :zone
-
-  # Get the commercial year of this date.  See *Commercial* *Date*
-  # in the introduction for how this differs from the normal year.
-  def cwyear() commercial[0] end
-
-  # Get the commercial week of the year of this date.
-  def cweek() commercial[1] end
-
-  # Get the commercial day of the week of this date.  Monday is
-  # commercial day-of-week 1; Sunday is commercial day-of-week 7.
-  def cwday() commercial[2] end
-
-  # Get the week day of this date.  Sunday is day-of-week 0;
-  # Saturday is day-of-week 6.
-  def wday() self.class.jd_to_wday(jd) end
-
-  once :wday
-
-=begin
-  MONTHNAMES.each_with_index do |n, i|
-    if n
-      define_method(n.downcase + '?'){mon == i}
-    end
-  end
-
-  DAYNAMES.each_with_index do |n, i|
-    define_method(n.downcase + '?'){wday == i}
-  end
-=end
-
-  # Is the current date old-style (Julian Calendar)?
-  def julian? () self.class.julian?(jd, @sg) end
-
-  # Is the current date new-style (Gregorian Calendar)?
-  def gregorian? () self.class.gregorian?(jd, @sg) end
-
-  once :julian?, :gregorian?
-
-  def fix_style # :nodoc:
-    if julian?
-    then self.class::JULIAN
-    else self.class::GREGORIAN end
-  end
-
-  private :fix_style
-
-  # Is this a leap year?
-  def leap?
-    self.class.jd_to_civil(self.class.civil_to_jd(year, 3, 1, fix_style) - 1,
-		     fix_style)[-1] == 29
-  end
-
-  once :leap?
-
-  # When is the Day of Calendar Reform for this Date object?
-  def start() @sg end
-
-  # Create a copy of this Date object using a new Day of Calendar Reform.
-  def new_start(sg=self.class::ITALY) self.class.new!(@ajd, @of, sg) end
-
-  # Create a copy of this Date object that uses the Italian/Catholic
-  # Day of Calendar Reform.
-  def italy() new_start(self.class::ITALY) end
-
-  # Create a copy of this Date object that uses the English/Colonial
-  # Day of Calendar Reform.
-  def england() new_start(self.class::ENGLAND) end
-
-  # Create a copy of this Date object that always uses the Julian
-  # Calendar.
-  def julian() new_start(self.class::JULIAN) end
-
-  # Create a copy of this Date object that always uses the Gregorian
-  # Calendar.
-  def gregorian() new_start(self.class::GREGORIAN) end
-
-  def offset() @of end
-
-  def new_offset(of=0)
-    if String === of
-      of = (self.class.zone_to_diff(of) || 0).to_r/86400
-    end
-    self.class.new!(@ajd, of, @sg)
-  end
-
-  private :offset, :new_offset
-
-  # Return a new Date object that is +n+ days later than the
-  # current one.
-  #
-  # +n+ may be a negative value, in which case the new Date
-  # is earlier than the current one; however, #-() might be
-  # more intuitive.
-  #
-  # If +n+ is not a Numeric, a TypeError will be thrown.  In
-  # particular, two Dates cannot be added to each other.
-  def + (n)
-    case n
-    when Numeric; return self.class.new!(@ajd + n, @of, @sg)
-    end
-    raise TypeError, 'expected numeric'
-  end
-
-  # If +x+ is a Numeric value, create a new Date object that is
-  # +x+ days earlier than the current one.
-  #
-  # If +x+ is a Date, return the number of days between the
-  # two dates; or, more precisely, how many days later the current
-  # date is than +x+.
-  #
-  # If +x+ is neither Numeric nor a Date, a TypeError is raised.
-  def - (x)
-    case x
-    when Numeric; return self.class.new!(@ajd - x, @of, @sg)
-    when Date;    return @ajd - x.ajd
-    end
-    raise TypeError, 'expected numeric or date'
-  end
-
-  # Compare this date with another date.
-  #
-  # +other+ can also be a Numeric value, in which case it is
-  # interpreted as an Astronomical Julian Day Number.
-  #
-  # Comparison is by Astronomical Julian Day Number, including
-  # fractional days.  This means that both the time and the
-  # timezone offset are taken into account when comparing
-  # two DateTime instances.  When comparing a DateTime instance
-  # with a Date instance, the time of the latter will be
-  # considered as falling on midnight UTC.
-  def <=> (other)
-    case other
-    when Numeric; return @ajd <=> other
-    when Date;    return @ajd <=> other.ajd
-    end
-    nil
-  end
-
-  # The relationship operator for Date.
-  #
-  # Compares dates by Julian Day Number.  When comparing
-  # two DateTime instances, or a DateTime with a Date,
-  # the instances will be regarded as equivalent if they
-  # fall on the same date in local time.
-  def === (other)
-    case other
-    when Numeric; return jd == other
-    when Date;    return jd == other.jd
-    end
-    false
-  end
-
-  def next_day(n=1) self + n end
-# def prev_day(n=1) self - n end
-
-  private :next_day
-
-  # Return a new Date one day after this one.
-  def next() next_day end
-
-  alias_method :succ, :next
-
-  # Return a new Date object that is +n+ months later than
-  # the current one.
-  #
-  # If the day-of-the-month of the current Date is greater
-  # than the last day of the target month, the day-of-the-month
-  # of the returned Date will be the last day of the target month.
-  def >> (n)
-    y, m = (year * 12 + (mon - 1) + n).divmod(12)
-    m,   = (m + 1)                    .divmod(1)
-    d = mday
-    d -= 1 until jd2 = self.class.valid_civil?(y, m, d, fix_style)
-    self + (jd2 - jd)
-  end
-
-  # Return a new Date object that is +n+ months earlier than
-  # the current one.
-  #
-  # If the day-of-the-month of the current Date is greater
-  # than the last day of the target month, the day-of-the-month
-  # of the returned Date will be the last day of the target month.
-  def << (n) self >> -n end
-
-=begin
-  def next_month(n=1) self >> n end
-  def prev_month(n=1) self << n end
-
-  def next_year(n=1) self >> n * 12 end
-  def prev_year(n=1) self << n * 12 end
-=end
-
-#  require 'enumerator'
-
-  # Step the current date forward +step+ days at a
-  # time (or backward, if +step+ is negative) until
-  # we reach +limit+ (inclusive), yielding the resultant
-  # date at each step.
-  def step(limit, step=1) # :yield: date
-=begin
-    unless block_given?
-      return to_enum(:step, limit, step)
-    end
-=end
-    da = self
-    op = %w(- <= >=)[step <=> 0]
-    while da.__send__(op, limit)
-      yield da
-      da += step
-    end
-    self
-  end
-
-  # Step forward one day at a time until we reach +max+
-  # (inclusive), yielding each date as we go.
-  def upto(max, &block) # :yield: date
-    step(max, +1, &block)
-  end
-
-  # Step backward one day at a time until we reach +min+
-  # (inclusive), yielding each date as we go.
-  def downto(min, &block) # :yield: date
-    step(min, -1, &block)
-  end
-
-  # Is this Date equal to +other+?
-  #
-  # +other+ must both be a Date object, and represent the same date.
-  def eql? (other) Date === other && self == other end
-
-  # Calculate a hash value for this date.
-  def hash() @ajd.hash end
-
-  # Return internal object state as a programmer-readable string.
-  def inspect() format('#<%s: %s,%s,%s>', self.class, @ajd, @of, @sg) end
-
-  # Return the date as a human-readable string.
-  #
-  # The format used is YYYY-MM-DD.
-  def to_s() strftime end
-
-  # Dump to Marshal format.
-  def _dump(limit) Marshal.dump([@ajd, @of, @sg], -1) end
-
-# def self._load(str) new!(*Marshal.load(str)) end
-
-  # Load from Marshall format.
-  def self._load(str)
-    a = Marshal.load(str)
-    if a.size == 2
-      ajd,     sg = a
-           of = 0
-      ajd -= 1.to_r/2
-    else
-      ajd, of, sg = a
-    end
-    new!(ajd, of, sg)
-  end
-
-end
-
-# Class representing a date and time.
-#
-# See the documentation to the file date.rb for an overview.
-#
-# DateTime objects are immutable once created.
-#
-# == Other methods.
-#
-# The following methods are defined in Date, but declared private
-# there.  They are made public in DateTime.  They are documented
-# here.
-#
-# === hour()
-#
-# Get the hour-of-the-day of the time.  This is given
-# using the 24-hour clock, counting from midnight.  The first
-# hour after midnight is hour 0; the last hour of the day is
-# hour 23.
-#
-# === min()
-#
-# Get the minute-of-the-hour of the time.
-#
-# === sec()
-#
-# Get the second-of-the-minute of the time.
-#
-# === sec_fraction()
-#
-# Get the fraction of a second of the time.  This is returned as
-# a +Rational+.  The unit is in days.
-# I do NOT recommend you to use this method.
-#
-# === zone()
-#
-# Get the time zone as a String.  This is representation of the
-# time offset such as "+1000", not the true time-zone name.
-#
-# === offset()
-#
-# Get the time zone offset as a fraction of a day.  This is returned
-# as a +Rational+.
-#
-# === new_offset(of=0)
-#
-# Create a new DateTime object, identical to the current one, except
-# with a new time zone offset of +of+.  +of+ is the new offset from
-# UTC as a fraction of a day.
-#
-class DateTime < Date
-
-  # Create a new DateTime object corresponding to the specified
-  # Julian Day Number +jd+ and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # All day/time values default to 0.
-  def self.jd(jd=0, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_jd?(jd, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  # Create a new DateTime object corresponding to the specified
-  # Ordinal Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to -4712, and +d+ to 1; this is Julian Day Number
-  # day 0.  The time values default to 0.
-  def self.ordinal(y=-4712, d=1, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_ordinal?(y, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  # Create a new DateTime object corresponding to the specified
-  # Civil Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to -4712, +m+ to 1, and +d+ to 1; this is Julian Day
-  # Number day 0.  The time values default to 0.
-  def self.civil(y=-4712, m=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_civil?(y, m, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  class << self; alias_method :new, :civil end
-
-  # Create a new DateTime object corresponding to the specified
-  # Commercial Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to 1582, +w+ to 41, and +d+ to 5; this is the Day of
-  # Calendar Reform for Italy and the Catholic countries.
-  # The time values default to 0.
-  def self.commercial(y=1582, w=41, d=5, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_commercial?(y, w, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  def self.weeknum(y=1582, w=41, d=5, f=0, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
-    unless (jd = valid_weeknum?(y, w, d, f, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  private_class_method :weeknum
-
-  def self.new_by_frags(elem, sg) # :nodoc:
-    elem = rewrite_frags(elem)
-    elem = complete_frags(elem)
-    unless (jd = valid_date_frags?(elem, sg)) &&
-	   (fr = valid_time_frags?(elem))
-      raise ArgumentError, 'invalid date'
-    end
-    sf = (elem[:sec_fraction] || 0)
-    fr += sf/86400
-    of = (elem[:offset] || 0)
-    of = of.to_r/86400
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  private_class_method :new_by_frags
-
-  # Create a new DateTime object by parsing from a String
-  # according to a specified format.
-  #
-  # +str+ is a String holding a date-time representation.
-  # +fmt+ is the format that the date-time is in.  See
-  # date/format.rb for details on supported formats.
-  #
-  # The default +str+ is '-4712-01-01T00:00:00+00:00', and the default
-  # +fmt+ is '%FT%T%z'.  This gives midnight on Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # An ArgumentError will be raised if +str+ cannot be
-  # parsed.
-  def self.strptime(str='-4712-01-01T00:00:00+00:00', fmt='%FT%T%z', sg=ITALY)
-    elem = _strptime(str, fmt)
-    new_by_frags(elem, sg)
-  end
-
-  # Create a new DateTime object by parsing from a String,
-  # without specifying the format.
-  #
-  # +str+ is a String holding a date-time representation.
-  # +comp+ specifies whether to interpret 2-digit years
-  # as 19XX (>= 69) or 20XX (< 69); the default is not to.
-  # The method will attempt to parse a date-time from the String
-  # using various heuristics; see #_parse in date/format.rb
-  # for more details.  If parsing fails, an ArgumentError
-  # will be raised.
-  #
-  # The default +str+ is '-4712-01-01T00:00:00+00:00'; this is Julian
-  # Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
-    elem = _parse(str, comp)
-    new_by_frags(elem, sg)
-  end
-
-  public :hour, :min, :sec, :sec_fraction, :zone, :offset, :new_offset
-
-end
-
-class Time
-
-#  def to_time() getlocal end
-
-  def to_date
-    jd = Date.civil_to_jd(year, mon, mday, Date::ITALY)
-    Date.new!(Date.jd_to_ajd(jd, 0, 0), 0, Date::ITALY)
-  end
-
-  def to_datetime
-    jd = DateTime.civil_to_jd(year, mon, mday, DateTime::ITALY)
-    fr = DateTime.time_to_day_fraction(hour, min, [sec, 59].min) +
-	 usec.to_r/86400000000
-    of = utc_offset.to_r/86400
-    DateTime.new!(DateTime.jd_to_ajd(jd, fr, of), of, DateTime::ITALY)
-  end
-
-  private :to_date, :to_datetime
-
-end
-
-class Date
-
-=begin
-  def to_time() Time.local(year, mon, mday) end
-  def to_date() self end
-  def to_datetime() DateTime.new!(self.class.jd_to_ajd(jd, 0, 0), @of, @sg) end
-=end
-
-  # Create a new Date object representing today.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.today(sg=ITALY) Time.now.__send__(:to_date)    .new_start(sg) end
-
-  # Create a new DateTime object representing the current time.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.now  (sg=ITALY) Time.now.__send__(:to_datetime).new_start(sg) end
-
-  private_class_method :now
-
-end
-
-class DateTime < Date
-
-=begin
-  def to_time
-    d = new_offset(0)
-    d.instance_eval do
-      Time.utc(year, mon, mday, hour, min, sec,
-	       (sec_fraction * 86400000000).to_i)
-    end.
-	getlocal
-  end
-
-  def to_date() Date.new!(self.class.jd_to_ajd(jd, 0, 0), 0, @sg) end
-  def to_datetime() self end
-=end
-
-  private_class_method :today
-  public_class_method  :now
-
-end
-
-class Date
-
-  [ %w(os?	julian?),
-    %w(ns?	gregorian?),
-    %w(exist1?	valid_jd?),
-    %w(exist2?	valid_ordinal?),
-    %w(exist3?	valid_date?),
-    %w(exist?	valid_date?),
-    %w(existw?	valid_commercial?),
-    %w(new0	new!),
-    %w(new1	jd),
-    %w(new2	ordinal),
-    %w(new3	new),
-    %w(neww	commercial)
-  ].each do |old, new|
-    module_eval <<-"end;"
-      def self.#{old}(*args, &block)
-	if $VERBOSE
-	  warn("\#{caller.shift.sub(/:in .*/, '')}: " \
-	       "warning: \#{self}::#{old} is deprecated; " \
-	       "use \#{self}::#{new}")
-	end
-	#{new}(*args, &block)
-      end
-    end;
-  end
-
-  [ %w(os?	julian?),
-    %w(ns?	gregorian?),
-    %w(sg	start),
-    %w(newsg	new_start),
-    %w(of	offset),
-    %w(newof	new_offset)
-  ].each do |old, new|
-    module_eval <<-"end;"
-      def #{old}(*args, &block)
-	if $VERBOSE
-	  warn("\#{caller.shift.sub(/:in .*/, '')}: " \
-	       "warning: \#{self.class}\##{old} is deprecated; " \
-	       "use \#{self.class}\##{new}")
-	end
-	#{new}(*args, &block)
-      end
-    end;
-  end
-
-  private :of, :newof
-
-end
-
-class DateTime < Date
-
-  public :of, :newof
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date/format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date/format.rb
deleted file mode 100644
index 8bd14c7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date/format.rb
+++ /dev/null
@@ -1,1088 +0,0 @@
-# format.rb: Written by Tadayoshi Funaba 1999-2007
-# $Id: format.rb,v 2.30 2007-01-07 09:16:24+09 tadf Exp $
-
-require 'rational'
-
-class Date
-
-  module Format # :nodoc:
-
-    MONTHS = {
-      'january'  => 1, 'february' => 2, 'march'    => 3, 'april'    => 4,
-      'may'      => 5, 'june'     => 6, 'july'     => 7, 'august'   => 8,
-      'september'=> 9, 'october'  =>10, 'november' =>11, 'december' =>12
-    }
-
-    DAYS = {
-      'sunday'   => 0, 'monday'   => 1, 'tuesday'  => 2, 'wednesday'=> 3,
-      'thursday' => 4, 'friday'   => 5, 'saturday' => 6
-    }
-
-    ABBR_MONTHS = {
-      'jan'      => 1, 'feb'      => 2, 'mar'      => 3, 'apr'      => 4,
-      'may'      => 5, 'jun'      => 6, 'jul'      => 7, 'aug'      => 8,
-      'sep'      => 9, 'oct'      =>10, 'nov'      =>11, 'dec'      =>12
-    }
-
-    ABBR_DAYS = {
-      'sun'      => 0, 'mon'      => 1, 'tue'      => 2, 'wed'      => 3,
-      'thu'      => 4, 'fri'      => 5, 'sat'      => 6
-    }
-
-    ZONES = {
-      'ut'  =>  0*3600, 'gmt' =>  0*3600, 'est' => -5*3600, 'edt' => -4*3600,
-      'cst' => -6*3600, 'cdt' => -5*3600, 'mst' => -7*3600, 'mdt' => -6*3600,
-      'pst' => -8*3600, 'pdt' => -7*3600,
-      'a'   =>  1*3600, 'b'   =>  2*3600, 'c'   =>  3*3600, 'd'   =>  4*3600,
-      'e'   =>  5*3600, 'f'   =>  6*3600, 'g'   =>  7*3600, 'h'   =>  8*3600,
-      'i'   =>  9*3600, 'k'   => 10*3600, 'l'   => 11*3600, 'm'   => 12*3600,
-      'n'   => -1*3600, 'o'   => -2*3600, 'p'   => -3*3600, 'q'   => -4*3600,
-      'r'   => -5*3600, 's'   => -6*3600, 't'   => -7*3600, 'u'   => -8*3600,
-      'v'   => -9*3600, 'w'   =>-10*3600, 'x'   =>-11*3600, 'y'   =>-12*3600,
-      'z'   =>  0*3600,
-      'utc' =>  0*3600, 'wet' =>  0*3600, 'bst' =>  1*3600, 'wat' => -1*3600,
-      'at'  => -2*3600, 'ast' => -4*3600, 'adt' => -3*3600, 'yst' => -9*3600,
-      'ydt' => -8*3600, 'hst' =>-10*3600, 'hdt' => -9*3600, 'cat' =>-10*3600,
-      'ahst'=>-10*3600, 'nt'  =>-11*3600, 'idlw'=>-12*3600, 'cet' =>  1*3600,
-      'met' =>  1*3600, 'mewt'=>  1*3600, 'mest'=>  2*3600, 'mesz'=>  2*3600,
-      'swt' =>  1*3600, 'sst' =>  2*3600, 'fwt' =>  1*3600, 'fst' =>  2*3600,
-      'eet' =>  2*3600, 'bt'  =>  3*3600, 'zp4' =>  4*3600, 'zp5' =>  5*3600,
-      'zp6' =>  6*3600, 'wast'=>  7*3600, 'wadt'=>  8*3600, 'cct' =>  8*3600,
-      'jst' =>  9*3600, 'east'=> 10*3600, 'eadt'=> 11*3600, 'gst' => 10*3600,
-      'nzt' => 12*3600, 'nzst'=> 12*3600, 'nzdt'=> 13*3600, 'idle'=> 12*3600,
-
-      'afghanistan'           =>   16200, 'alaskan'               =>  -32400,
-      'arab'                  =>   10800, 'arabian'               =>   14400,
-      'arabic'                =>   10800, 'atlantic'              =>  -14400,
-      'aus central'           =>   34200, 'aus eastern'           =>   36000,
-      'azores'                =>   -3600, 'canada central'        =>  -21600,
-      'cape verde'            =>   -3600, 'caucasus'              =>   14400,
-      'cen. australia'        =>   34200, 'central america'       =>  -21600,
-      'central asia'          =>   21600, 'central europe'        =>    3600,
-      'central european'      =>    3600, 'central pacific'       =>   39600,
-      'central'               =>  -21600, 'china'                 =>   28800,
-      'dateline'              =>  -43200, 'e. africa'             =>   10800,
-      'e. australia'          =>   36000, 'e. europe'             =>    7200,
-      'e. south america'      =>  -10800, 'eastern'               =>  -18000,
-      'egypt'                 =>    7200, 'ekaterinburg'          =>   18000,
-      'fiji'                  =>   43200, 'fle'                   =>    7200,
-      'greenland'             =>  -10800, 'greenwich'             =>       0,
-      'gtb'                   =>    7200, 'hawaiian'              =>  -36000,
-      'india'                 =>   19800, 'iran'                  =>   12600,
-      'jerusalem'             =>    7200, 'korea'                 =>   32400,
-      'mexico'                =>  -21600, 'mid-atlantic'          =>   -7200,
-      'mountain'              =>  -25200, 'myanmar'               =>   23400,
-      'n. central asia'       =>   21600, 'nepal'                 =>   20700,
-      'new zealand'           =>   43200, 'newfoundland'          =>  -12600,
-      'north asia east'       =>   28800, 'north asia'            =>   25200,
-      'pacific sa'            =>  -14400, 'pacific'               =>  -28800,
-      'romance'               =>    3600, 'russian'               =>   10800,
-      'sa eastern'            =>  -10800, 'sa pacific'            =>  -18000,
-      'sa western'            =>  -14400, 'samoa'                 =>  -39600,
-      'se asia'               =>   25200, 'malay peninsula'       =>   28800,
-      'south africa'          =>    7200, 'sri lanka'             =>   21600,
-      'taipei'                =>   28800, 'tasmania'              =>   36000,
-      'tokyo'                 =>   32400, 'tonga'                 =>   46800,
-      'us eastern'            =>  -18000, 'us mountain'           =>  -25200,
-      'vladivostok'           =>   36000, 'w. australia'          =>   28800,
-      'w. central africa'     =>    3600, 'w. europe'             =>    3600,
-      'west asia'             =>   18000, 'west pacific'          =>   36000,
-      'yakutsk'               =>   32400
-    }
-
-    [MONTHS, DAYS, ABBR_MONTHS, ABBR_DAYS, ZONES].each do |x|
-      x.freeze
-    end
-
-    class Bag # :nodoc:
-
-      def initialize
-	@elem = {}
-      end
-
-      def method_missing(t, *args, &block)
-	t = t.to_s
-	set = t.chomp!('=')
-	t = t.intern
-	if set
-	  @elem[t] = args[0]
-	else
-	  @elem[t]
-	end
-      end
-
-      def to_hash
-	@elem.reject{|k, v| /\A_/ =~ k.to_s || v.nil?}
-      end
-
-    end
-
-  end
-
-  def emit(e, f) # :nodoc:
-    case e
-    when Numeric
-      sign = %w(+ + -)[e <=> 0]
-      e = e.abs
-    end
-
-    s = e.to_s
-
-    if f[:s] && f[:p] == '0'
-      f[:w] -= 1
-    end
-
-    if f[:s] && f[:p] == "\s"
-      s[0,0] = sign
-    end
-
-    if f[:p] != '-'
-      s = s.rjust(f[:w], f[:p])
-    end
-
-    if f[:s] && f[:p] != "\s"
-      s[0,0] = sign
-    end
-
-    s = s.upcase if f[:u]
-    s = s.downcase if f[:d]
-    s
-  end
-
-  def emit_w(e, w, f) # :nodoc:
-    f[:w] = [f[:w], w].compact.max
-    emit(e, f)
-  end
-
-  def emit_n(e, w, f) # :nodoc:
-    f[:p] ||= '0'
-    emit_w(e, w, f)
-  end
-
-  def emit_sn(e, w, f) # :nodoc:
-    if e < 0
-      w += 1
-      f[:s] = true
-    end
-    emit_n(e, w, f)
-  end
-
-  def emit_z(e, w, f) # :nodoc:
-    w += 1
-    f[:s] = true
-    emit_n(e, w, f)
-  end
-
-  def emit_a(e, w, f) # :nodoc:
-    f[:p] ||= "\s"
-    emit_w(e, w, f)
-  end
-
-  def emit_ad(e, w, f) # :nodoc:
-    if f[:x]
-      f[:u] = true
-      f[:d] = false
-    end
-    emit_a(e, w, f)
-  end
-
-  def emit_au(e, w, f) # :nodoc:
-    if f[:x]
-      f[:u] = false
-      f[:d] = true
-    end
-    emit_a(e, w, f)
-  end
-
-  private :emit, :emit_w, :emit_n, :emit_sn, :emit_z,
-	  :emit_a, :emit_ad, :emit_au
-
-  def strftime(fmt='%F')
-    fmt.gsub(/%([-_0^#]+)?(\d+)?[EO]?(:{1,3}z|.)/m) do |m|
-      f = {}
-      s, w, c = $1, $2, $3
-      if s
-	s.scan(/./) do |k|
-	  case k
-	  when '-'; f[:p] = '-'
-	  when '_'; f[:p] = "\s"
-	  when '0'; f[:p] = '0'
-	  when '^'; f[:u] = true
-	  when '#'; f[:x] = true
-	  end
-	end
-      end
-      if w
-	f[:w] = w.to_i
-      end
-      case c
-      when 'A'; emit_ad(DAYNAMES[wday], 0, f)
-      when 'a'; emit_ad(ABBR_DAYNAMES[wday], 0, f)
-      when 'B'; emit_ad(MONTHNAMES[mon], 0, f)
-      when 'b'; emit_ad(ABBR_MONTHNAMES[mon], 0, f)
-      when 'C'; emit_sn((year / 100).floor, 2, f)
-      when 'c'; emit_a(strftime('%a %b %e %H:%M:%S %Y'), 0, f)
-      when 'D'; emit_a(strftime('%m/%d/%y'), 0, f)
-      when 'd'; emit_n(mday, 2, f)
-      when 'e'; emit_a(mday, 2, f)
-      when 'F'
-	if m == '%F'
-	  format('%.4d-%02d-%02d', year, mon, mday) # 4p
-	else
-	  emit_a(strftime('%Y-%m-%d'), 0, f)
-	end
-      when 'G'; emit_sn(cwyear, 4, f)
-      when 'g'; emit_n(cwyear % 100, 2, f)
-      when 'H'; emit_n(hour, 2, f)
-      when 'h'; emit_ad(strftime('%b'), 0, f)
-      when 'I'; emit_n((hour % 12).nonzero? || 12, 2, f)
-      when 'j'; emit_n(yday, 3, f)
-      when 'k'; emit_a(hour, 2, f)
-      when 'L'
-	emit_n((sec_fraction / (1.to_r/86400/(10**3))).round, 3, f)
-      when 'l'; emit_a((hour % 12).nonzero? || 12, 2, f)
-      when 'M'; emit_n(min, 2, f)
-      when 'm'; emit_n(mon, 2, f)
-      when 'N'
-	emit_n((sec_fraction / (1.to_r/86400/(10**9))).round, 9, f)
-      when 'n'; "\n"
-      when 'P'; emit_ad(strftime('%p').downcase, 0, f)
-      when 'p'; emit_au(if hour < 12 then 'AM' else 'PM' end, 0, f)
-      when 'Q'
-	d = ajd - self.class.jd_to_ajd(self.class::UNIXEPOCH, 0)
-	s = (d * 86400*10**3).to_i
-	emit_sn(s, 1, f)
-      when 'R'; emit_a(strftime('%H:%M'), 0, f)
-      when 'r'; emit_a(strftime('%I:%M:%S %p'), 0, f)
-      when 'S'; emit_n(sec, 2, f)
-      when 's'
-	d = ajd - self.class.jd_to_ajd(self.class::UNIXEPOCH, 0)
-	s = (d * 86400).to_i
-	emit_sn(s, 1, f)
-      when 'T'
-	if m == '%T'
-	  format('%02d:%02d:%02d', hour, min, sec) # 4p
-	else
-	  emit_a(strftime('%H:%M:%S'), 0, f)
-	end
-      when 't'; "\t"
-      when 'U', 'W'
-	emit_n(if c == 'U' then wnum0 else wnum1 end, 2, f)
-      when 'u'; emit_n(cwday, 1, f)
-      when 'V'; emit_n(cweek, 2, f)
-      when 'v'; emit_a(strftime('%e-%b-%Y'), 0, f)
-      when 'w'; emit_n(wday, 1, f)
-      when 'X'; emit_a(strftime('%H:%M:%S'), 0, f)
-      when 'x'; emit_a(strftime('%m/%d/%y'), 0, f)
-      when 'Y'; emit_sn(year, 4, f)
-      when 'y'; emit_n(year % 100, 2, f)
-      when 'Z'; emit_au(strftime('%:z'), 0, f)
-      when /\A(:{0,3})z/
-	t = $1.size
-	sign = if offset < 0 then -1 else +1 end
-	fr = offset.abs
-	hh, fr = fr.divmod(1.to_r/24)
-	mm, fr = fr.divmod(1.to_r/1440)
-	ss, fr = fr.divmod(1.to_r/86400)
-	if t == 3
-	  if    ss.nonzero? then t =  2
-	  elsif mm.nonzero? then t =  1
-	  else                   t = -1
-	  end
-	end
-	case t
-	when -1
-	  tail = []
-	  sep = ''
-	when 0
-	  f[:w] -= 2 if f[:w]
-	  tail = ['%02d' % mm]
-	  sep = ''
-	when 1
-	  f[:w] -= 3 if f[:w]
-	  tail = ['%02d' % mm]
-	  sep = ':'
-	when 2
-	  f[:w] -= 6 if f[:w]
-	  tail = ['%02d' % mm, '%02d' % ss]
-	  sep = ':'
-	end
-	([emit_z(sign * hh, 2, f)] + tail).join(sep)
-      when '%'; emit_a('%', 0, f)
-      when '+'; emit_a(strftime('%a %b %e %H:%M:%S %Z %Y'), 0, f)
-      when '1'
-	if $VERBOSE
-	  warn("warning: strftime: %1 is deprecated; forget this")
-	end
-	emit_n(jd, 1, f)
-      when '2'
-	if $VERBOSE
-	  warn("warning: strftime: %2 is deprecated; use '%Y-%j'")
-	end
-	emit_a(strftime('%Y-%j'), 0, f)
-      when '3'
-	if $VERBOSE
-	  warn("warning: strftime: %3 is deprecated; use '%F'")
-	end
-	emit_a(strftime('%F'), 0, f)
-      else
-	c
-      end
-    end
-  end
-
-# alias_method :format, :strftime
-
-  def asctime() strftime('%c') end
-
-  alias_method :ctime, :asctime
-
-=begin
-  def iso8601() strftime('%F') end
-
-  def rfc3339() iso8601 end
-
-  def rfc2822() strftime('%a, %-d %b %Y %T %z') end
-
-  alias_method :rfc822, :rfc2822
-
-  def jisx0301
-    if jd < 2405160
-      iso8601
-    else
-      case jd
-      when 2405160...2419614
-	g = 'M%02d' % (year - 1867)
-      when 2419614...2424875
-	g = 'T%02d' % (year - 1911)
-      when 2424875...2447535
-	g = 'S%02d' % (year - 1925)
-      else
-	g = 'H%02d' % (year - 1988)
-      end
-      g + strftime('.%m.%d')
-    end
-  end
-
-  def beat(n=0)
-    i, f = (new_offset(1.to_r/24).day_fraction * 1000).divmod(1)
-    ('@%03d' % i) +
-      if n < 1
-	''
-      else
-	'.%0*d' % [n, (f / (1.to_r/(10**n))).round]
-      end
-  end
-=end
-
-  def self.num_pattern? (s) # :nodoc:
-    /\A%[EO]?[CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy\d]/ =~ s || /\A\d/ =~ s
-  end
-
-  private_class_method :num_pattern?
-
-  def self._strptime_i(str, fmt, e) # :nodoc:
-    fmt.scan(/%[EO]?(:{1,3}z|.)|(.)/m) do |s, c|
-      if s
-	case s
-	when 'A', 'a'
-	  return unless str.sub!(/\A(#{Format::DAYS.keys.join('|')})/io, '') ||
-			str.sub!(/\A(#{Format::ABBR_DAYS.keys.join('|')})/io, '')
-	  val = Format::DAYS[$1.downcase] || Format::ABBR_DAYS[$1.downcase]
-	  return unless val
-	  e.wday = val
-	when 'B', 'b', 'h'
-	  return unless str.sub!(/\A(#{Format::MONTHS.keys.join('|')})/io, '') ||
-			str.sub!(/\A(#{Format::ABBR_MONTHS.keys.join('|')})/io, '')
-	  val = Format::MONTHS[$1.downcase] || Format::ABBR_MONTHS[$1.downcase]
-	  return unless val
-	  e.mon = val
-	when 'C'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,2})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e._cent = val
-	when 'c'
-	  return unless _strptime_i(str, '%a %b %e %H:%M:%S %Y', e)
-	when 'D'
-	  return unless _strptime_i(str, '%m/%d/%y', e)
-	when 'd', 'e'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..31) === val
-	  e.mday = val
-	when 'F'
-	  return unless _strptime_i(str, '%Y-%m-%d', e)
-	when 'G'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,4})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e.cwyear = val
-	when 'g'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..99) === val
-	  e.cwyear = val
-	  e._cent ||= if val >= 69 then 19 else 20 end
-	when 'H', 'k'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..24) === val
-	  e.hour = val
-	when 'I', 'l'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..12) === val
-	  e.hour = val
-	when 'j'
-	  return unless str.sub!(/\A(\d{1,3})/, '')
-	  val = $1.to_i
-	  return unless (1..366) === val
-	  e.yday = val
-	when 'L'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,3})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-#	  val = $1.to_i.to_r / (10**3)
-	  val = $1.to_i.to_r / (10**$1.size)
-	  e.sec_fraction = val
-	when 'M'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..59) === val
-	  e.min = val
-	when 'm'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..12) === val
-	  e.mon = val
-	when 'N'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,9})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-#	  val = $1.to_i.to_r / (10**9)
-	  val = $1.to_i.to_r / (10**$1.size)
-	  e.sec_fraction = val
-	when 'n', 't'
-	  return unless _strptime_i(str, "\s", e)
-	when 'P', 'p'
-	  return unless str.sub!(/\A([ap])(?:m\b|\.m\.)/i, '')
-	  e._merid = if $1.downcase == 'a' then 0 else 12 end
-	when 'Q'
-	  return unless str.sub!(/\A(-?\d{1,})/, '')
-	  val = $1.to_i.to_r / 10**3
-	  e.seconds = val
-	when 'R'
-	  return unless _strptime_i(str, '%H:%M', e)
-	when 'r'
-	  return unless _strptime_i(str, '%I:%M:%S %p', e)
-	when 'S'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..60) === val
-	  e.sec = val
-	when 's'
-	  return unless str.sub!(/\A(-?\d{1,})/, '')
-	  val = $1.to_i
-	  e.seconds = val
-	when 'T'
-	  return unless _strptime_i(str, '%H:%M:%S', e)
-	when 'U', 'W'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..53) === val
-	  e.__send__(if s == 'U' then :wnum0= else :wnum1= end, val)
-	when 'u'
-	  return unless str.sub!(/\A(\d{1})/, '')
-	  val = $1.to_i
-	  return unless (1..7) === val
-	  e.cwday = val
-	when 'V'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..53) === val
-	  e.cweek = val
-	when 'v'
-	  return unless _strptime_i(str, '%e-%b-%Y', e)
-	when 'w'
-	  return unless str.sub!(/\A(\d{1})/, '')
-	  val = $1.to_i
-	  return unless (0..6) === val
-	  e.wday = val
-	when 'X'
-	  return unless _strptime_i(str, '%H:%M:%S', e)
-	when 'x'
-	  return unless _strptime_i(str, '%m/%d/%y', e)
-	when 'Y'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,4})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e.year = val
-	when 'y'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..99) === val
-	  e.year = val
-	  e._cent ||= if val >= 69 then 19 else 20 end
-	when 'Z', /\A:{0,3}z/
-	  return unless str.sub!(/\A((?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
-				    |[a-z.\s]+(?:standard|daylight)\s+time\b
-				    |[a-z]+(?:\s+dst)?\b
-				    )/ix, '')
-	  val = $1
-	  e.zone = val
-	  offset = zone_to_diff(val)
-	  e.offset = offset
-	when '%'
-	  return unless str.sub!(/\A%/, '')
-	when '+'
-	  return unless _strptime_i(str, '%a %b %e %H:%M:%S %Z %Y', e)
-	when '1'
-	  if $VERBOSE
-	    warn("warning: strptime: %1 is deprecated; forget this")
-	  end
-	  return unless str.sub!(/\A(\d+)/, '')
-	  val = $1.to_i
-	  e.jd = val
-	when '2'
-	  if $VERBOSE
-	    warn("warning: strptime: %2 is deprecated; use '%Y-%j'")
-	  end
-	  return unless _strptime_i(str, '%Y-%j', e)
-	when '3'
-	  if $VERBOSE
-	    warn("warning: strptime: %3 is deprecated; use '%F'")
-	  end
-	  return unless _strptime_i(str, '%F', e)
-	else
-	  return unless str.sub!(Regexp.new('\\A' + Regexp.quote(s)), '')
-	end
-      else
-	case c
-	when /\A[\s\v]/
-	  str.sub!(/\A[\s\v]+/, '')
-	else
-	  return unless str.sub!(Regexp.new('\\A' + Regexp.quote(c)), '')
-	end
-      end
-    end
-  end
-
-  private_class_method :_strptime_i
-
-  def self._strptime(str, fmt='%F')
-    e = Format::Bag.new
-    return unless _strptime_i(str.dup, fmt, e)
-
-    if e._cent
-      if e.cwyear
-	e.cwyear += e._cent * 100
-      end
-      if e.year
-	e.  year += e._cent * 100
-      end
-    end
-
-    if e._merid
-      if e.hour
-	e.hour %= 12
-	e.hour += e._merid
-      end
-    end
-
-    e.to_hash
-  end
-
-  def self.s3e(e, y, m, d, bc=false)
-    unless String === m
-      m = m.to_s
-    end
-
-    if y == nil
-      if d && d.size > 2
-	y = d
-	d = nil
-      end
-      if d && d[0,1] == "'"
-	y = d
-	d = nil
-      end
-    end
-
-    if y
-      y.scan(/(\d+)(.+)?/)
-      if $2
-	y, d = d, $1
-      end
-    end
-
-    if m
-      if m[0,1] == "'" || m.size > 2
-	y, m, d = m, d, y # us -> be
-      end
-    end
-
-    if d
-      if d[0,1] == "'" || d.size > 2
-	y, d = d, y
-      end
-    end
-
-    if y
-      y =~ /([-+])?(\d+)/
-      if $1 || $2.size > 2
-	c = false
-      end
-      iy = $&.to_i
-      if bc
-	iy = -iy + 1
-      end
-      e.year = iy
-    end
-
-    if m
-      m =~ /\d+/
-      e.mon = $&.to_i
-    end
-
-    if d
-      d =~ /\d+/
-      e.mday = $&.to_i
-    end
-
-    if c != nil
-      e._comp = c
-    end
-
-  end
-
-  private_class_method :s3e
-
-  def self._parse_day(str, e) # :nodoc:
-    if str.sub!(/\b(#{Format::ABBR_DAYS.keys.join('|')})[^-\d\s]*/ino, ' ')
-      e.wday = Format::ABBR_DAYS[$1.downcase]
-      true
-=begin
-    elsif str.sub!(/\b(?!\dth)(su|mo|tu|we|th|fr|sa)\b/in, ' ')
-      e.wday = %w(su mo tu we th fr sa).index($1.downcase)
-      true
-=end
-    end
-  end
-
-  def self._parse_time(str, e) # :nodoc:
-    if str.sub!(
-		/(
-		   (?:
-		     \d+\s*:\s*\d+
-		     (?:
-		       \s*:\s*\d+(?:[,.]\d*)?
-		     )?
-		   |
-		     \d+\s*h(?:\s*\d+m?(?:\s*\d+s?)?)?
-		   )
-		   (?:
-		     \s*
-		     [ap](?:m\b|\.m\.)
-		   )?
-		 |
-		   \d+\s*[ap](?:m\b|\.m\.)
-		 )
-		 (?:
-		   \s*
-		   (
-		     (?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
-		   |
-		     [a-z.\s]+(?:standard|daylight)\stime\b
-		   |
-		     [a-z]+(?:\sdst)?\b
-		   )
-		 )?
-		/inx,
-		' ')
-
-      t = $1
-      e.zone = $2 if $2
-
-      t =~ /\A(\d+)h?
-	      (?:\s*:?\s*(\d+)m?
-		(?:
-		  \s*:?\s*(\d+)(?:[,.](\d+))?s?
-		)?
-	      )?
-	    (?:\s*([ap])(?:m\b|\.m\.))?/inx
-
-      e.hour = $1.to_i
-      e.min = $2.to_i if $2
-      e.sec = $3.to_i if $3
-      e.sec_fraction = $4.to_i.to_r / (10**$4.size) if $4
-
-      if $5
-	e.hour %= 12
-	if $5.downcase == 'p'
-	  e.hour += 12
-	end
-      end
-      true
-    end
-  end
-
-  def self._parse_beat(str, e) # :nodoc:
-    if str.sub!(/@\s*(\d+)(?:[,.](\d*))?/, ' ')
-      beat = $1.to_i.to_r
-      beat += $2.to_i.to_r / (10**$2.size) if $2
-      secs = beat.to_r / 1000
-      h, min, s, fr = self.day_fraction_to_time(secs)
-      e.hour = h
-      e.min = min
-      e.sec = s
-      e.sec_fraction = fr * 86400
-      e.zone = '+01:00'
-      true
-    end
-  end
-
-  def self._parse_eu(str, e) # :nodoc:
-    if str.sub!(
-		/'?(\d+)[^-\d\s]*
-		 \s*
-		 (#{Format::ABBR_MONTHS.keys.join('|')})[^-\d\s']*
-		 (?:
-		   \s*
-		   (c(?:e|\.e\.)|b(?:ce|\.c\.e\.)|a(?:d|\.d\.)|b(?:c|\.c\.))?
-		   \s*
-		   ('?-?\d+(?:(?:st|nd|rd|th)\b)?)
-		 )?
-		/inox,
-		' ') # '
-      s3e(e, $4, Format::ABBR_MONTHS[$2.downcase], $1,
-	  $3 && $3[0,1].downcase == 'b')
-      true
-    end
-  end
-
-  def self._parse_us(str, e) # :nodoc:
-    if str.sub!(
-		/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-\d\s']*
-		 \s*
-		 ('?\d+)[^-\d\s']*
-		 (?:
-		   \s*
-		   (c(?:e|\.e\.)|b(?:ce|\.c\.e\.)|a(?:d|\.d\.)|b(?:c|\.c\.))?
-		   \s*
-		   ('?-?\d+)
-		 )?
-		/inox,
-		' ') # '
-      s3e(e, $4, Format::ABBR_MONTHS[$1.downcase], $2,
-	  $3 && $3[0,1].downcase == 'b')
-      true
-    end
-  end
-
-  def self._parse_iso(str, e) # :nodoc:
-    if str.sub!(/('?[-+]?\d+)-(\d+)-('?-?\d+)/n, ' ')
-      s3e(e, $1, $2, $3)
-      true
-    end
-  end
-
-  def self._parse_iso2(str, e) # :nodoc:
-    if str.sub!(/\b(\d{2}|\d{4})?-?w(\d{2})(?:-?(\d+))?/in, ' ')
-      e.cwyear = $1.to_i if $1
-      e.cweek = $2.to_i
-      e.cwday = $3.to_i if $3
-      true
-    elsif str.sub!(/--(\d{2})-(\d{2})\b/n, ' ')
-      e.mon = $1.to_i
-      e.mday = $2.to_i
-      true
-    elsif str.sub!(/\b(\d{2}|\d{4})-(\d{2,3})\b/n, ' ')
-      e.year = $1.to_i
-      if $2.size < 3
-	e.mon = $2.to_i
-      else
-	e.yday = $2.to_i
-      end
-      true
-    end
-  end
-
-  def self._parse_jis(str, e) # :nodoc:
-    if str.sub!(/\b([MTSH])(\d+)\.(\d+)\.(\d+)/in, ' ')
-      era = { 'm'=>1867,
-	      't'=>1911,
-	      's'=>1925,
-	      'h'=>1988
-	  }[$1.downcase]
-      e.year = $2.to_i + era
-      e.mon = $3.to_i
-      e.mday = $4.to_i
-      true
-    end
-  end
-
-  def self._parse_vms(str, e) # :nodoc:
-    if str.sub!(/('?-?\d+)-(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-		-('?-?\d+)/inox, ' ')
-      s3e(e, $3, Format::ABBR_MONTHS[$2.downcase], $1)
-      true
-    elsif str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-		-('?-?\d+)(?:-('?-?\d+))?/inox, ' ')
-      s3e(e, $3, Format::ABBR_MONTHS[$1.downcase], $2)
-      true
-    end
-  end
-
-  def self._parse_sla_ja(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $1, $2, $3)
-      true
-    end
-  end
-
-  def self._parse_sla_eu(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $3, $2, $1)
-      true
-    end
-  end
-
-  def self._parse_sla_us(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $3, $1, $2)
-      true
-    end
-  end
-
-  def self._parse_year(str, e) # :nodoc:
-    if str.sub!(/'(\d+)\b/in, ' ')
-      e.year = $1.to_i
-      true
-    end
-  end
-
-  def self._parse_mon(str, e) # :nodoc:
-    if str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})\S*/ino, ' ')
-      e.mon = Format::ABBR_MONTHS[$1.downcase]
-      true
-    end
-  end
-
-  def self._parse_mday(str, e) # :nodoc:
-    if str.sub!(/(\d+)(st|nd|rd|th)\b/in, ' ')
-      e.mday = $1.to_i
-      true
-    end
-  end
-
-  def self._parse_ddd(str, e) # :nodoc:
-    if str.sub!(
-		/([-+]?)(\d{2,14})
-		  (?:
-		    \s*
-		    T?
-		    \s*
-		    (\d{2,6})(?:[,.](\d*))?
-		  )?
-		  (?:
-		    \s*
-		    (
-		      Z
-		    |
-		      [-+]\d{1,4}
-		    )
-		    \b
-		  )?
-		/inx,
-		' ')
-      case $2.size
-      when 2
-	e.mday = $2[ 0, 2].to_i
-      when 4
-	e.mon  = $2[ 0, 2].to_i
-	e.mday = $2[ 2, 2].to_i
-      when 6
-	e.year = ($1 + $2[ 0, 2]).to_i
-	e.mon  = $2[ 2, 2].to_i
-	e.mday = $2[ 4, 2].to_i
-      when 8, 10, 12, 14
-	e.year = ($1 + $2[ 0, 4]).to_i
-	e.mon  = $2[ 4, 2].to_i
-	e.mday = $2[ 6, 2].to_i
-	e.hour = $2[ 8, 2].to_i if $2.size >= 10
-	e.min  = $2[10, 2].to_i if $2.size >= 12
-	e.sec  = $2[12, 2].to_i if $2.size >= 14
-	e._comp = false
-      when 3
-	e.yday = $2[ 0, 3].to_i
-      when 5
-	e.year = ($1 + $2[ 0, 2]).to_i
-	e.yday = $2[ 2, 3].to_i
-      when 7
-	e.year = ($1 + $2[ 0, 4]).to_i
-	e.yday = $2[ 4, 3].to_i
-      end
-      if $3
-	case $3.size
-	when 2, 4, 6
-	  e.hour = $3[ 0, 2].to_i
-	  e.min  = $3[ 2, 2].to_i if $3.size >= 4
-	  e.sec  = $3[ 4, 2].to_i if $3.size >= 6
-	end
-      end
-      if $4
-	e.sec_fraction = $4.to_i.to_r / (10**$4.size)
-      end
-      if $5
-	e.zone = $5
-      end
-      true
-    end
-  end
-
-  private_class_method :_parse_day, :_parse_time, :_parse_beat,
-	:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
-	:_parse_jis, :_parse_vms,
-	:_parse_sla_ja, :_parse_sla_eu, :_parse_sla_us,
-	:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd
-
-  def self._parse(str, comp=false)
-    str = str.dup
-
-    e = Format::Bag.new
-
-    e._comp = comp
-
-    str.gsub!(/[^-+',.\/:0-9 at a-z\x80-\xff]+/in, ' ')
-
-    _parse_time(str, e) # || _parse_beat(str, e)
-    _parse_day(str, e)
-
-    _parse_eu(str, e)     ||
-    _parse_us(str, e)     ||
-    _parse_iso(str, e)    ||
-    _parse_jis(str, e)    ||
-    _parse_vms(str, e)    ||
-    _parse_sla_us(str, e) ||
-    _parse_iso2(str, e)   ||
-    _parse_year(str, e)   ||
-    _parse_mon(str, e)    ||
-    _parse_mday(str, e)   ||
-    _parse_ddd(str, e)
-
-    if str.sub!(/\b(bc\b|bce\b|b\.c\.|b\.c\.e\.)/in, ' ')
-      if e.year
-	e.year = -e.year + 1
-      end
-    end
-
-    if str.sub!(/\A\s*(\d{1,2})\s*\z/n, ' ')
-      if e.hour && !e.mday
-	v = $1.to_i
-	if (1..31) === v
-	  e.mday = v
-	end
-      end
-      if e.mday && !e.hour
-	v = $1.to_i
-	if (0..24) === v
-	  e.hour = v
-	end
-      end
-    end
-
-    if e._comp and e.year
-      if e.year >= 0 and e.year <= 99
-	if e.year >= 69
-	  e.year += 1900
-	else
-	  e.year += 2000
-	end
-      end
-    end
-
-    e.offset ||= zone_to_diff(e.zone) if e.zone
-
-    e.to_hash
-  end
-
-  def self.zone_to_diff(zone) # :nodoc:
-    zone = zone.downcase
-    if zone.sub!(/\s+(standard|daylight)\s+time\z/, '')
-      dst = $1 == 'daylight'
-    else
-      dst = zone.sub!(/\s+dst\z/, '')
-    end
-    if Format::ZONES.include?(zone)
-      offset = Format::ZONES[zone]
-      offset += 3600 if dst
-    elsif zone.sub!(/\A(?:gmt|utc?)?([-+])/, '')
-      sign = $1
-      if zone.include?(':')
-	hour, min, sec, = zone.split(':')
-      elsif zone.include?(',') || zone.include?('.')
-	hour, fr, = zone.split(/[,.]/)
-	min = fr.to_i.to_r / (10**fr.size) * 60
-      else
-	case zone.size
-	when 3
-	  hour = zone[0,1]
-	  min = zone[1,2]
-	else
-	  hour = zone[0,2]
-	  min = zone[2,2]
-	  sec = zone[4,2]
-	end
-      end
-      offset = hour.to_i * 3600 + min.to_i * 60 + sec.to_i
-      offset *= -1 if sign == '-'
-    end
-    offset
-  end
-
-end
-
-class DateTime < Date
-
-  def strftime(fmt='%FT%T%:z')
-    super(fmt)
-  end
-
-  def self._strptime(str, fmt='%FT%T%z')
-    super(str, fmt)
-  end
-
-=begin
-  def iso8601_timediv(n) # :nodoc:
-    strftime('T%T' +
-	     if n < 1
-	       ''
-	     else
-	       '.%0*d' % [n, (sec_fraction / (1.to_r/86400/(10**n))).round]
-	     end +
-	     '%:z')
-  end
-
-  private :iso8601_timediv
-
-  def iso8601(n=0)
-    super() + iso8601_timediv(n)
-  end
-
-  def rfc3339(n=0) iso8601(n) end
-
-  def jisx0301(n=0)
-    super() + iso8601_timediv(n)
-  end
-=end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date2.rb
deleted file mode 100644
index f7da78f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/date2.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# date2 was overridden by date.
-# To be precise, date was overridden by date2,
-# and date2 was renamed to date.
-
-require 'date'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/debug.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/debug.rb
deleted file mode 100644
index 9ae119f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/debug.rb
+++ /dev/null
@@ -1,947 +0,0 @@
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-# Copyright (C) 2000-2003  NAKAMURA, Hiroshi  <nahi at ruby-lang.org>
-
-if $SAFE > 0
-  STDERR.print "-r debug.rb is not available in safe mode\n"
-  exit 1
-end
-
-require 'tracer'
-require 'pp'
-
-class Tracer
-  def Tracer.trace_func(*vars)
-    Single.trace_func(*vars)
-  end
-end
-
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
-
-class DEBUGGER__
-class Mutex
-  def initialize
-    @locker = nil
-    @waiting = []
-    @locked = false;
-  end
-
-  def locked?
-    @locked
-  end
-
-  def lock
-    return if Thread.critical
-    return if @locker == Thread.current
-    while (Thread.critical = true; @locked)
-      @waiting.push Thread.current
-      Thread.stop
-    end
-    @locked = true
-    @locker = Thread.current
-    Thread.critical = false
-    self
-  end
-
-  def unlock
-    return if Thread.critical
-    return unless @locked
-    unless @locker == Thread.current
-      raise RuntimeError, "unlocked by other"
-    end
-    Thread.critical = true
-    t = @waiting.shift
-    @locked = false
-    @locker = nil
-    Thread.critical = false
-    t.run if t
-    self
-  end
-end
-MUTEX = Mutex.new
-
-class Context
-  DEBUG_LAST_CMD = []
-
-  begin
-    require 'readline'
-    def readline(prompt, hist)
-      Readline::readline(prompt, hist)
-    end
-  rescue LoadError
-    def readline(prompt, hist)
-      STDOUT.print prompt
-      STDOUT.flush
-      line = STDIN.gets
-      exit unless line
-      line.chomp!
-      line
-    end
-    USE_READLINE = false
-  end
-
-  def initialize
-    if Thread.current == Thread.main
-      @stop_next = 1
-    else
-      @stop_next = 0
-    end
-    @last_file = nil
-    @file = nil
-    @line = nil
-    @no_step = nil
-    @frames = []
-    @finish_pos = 0
-    @trace = false
-    @catch = "StandardError"
-    @suspend_next = false
-  end
-
-  def stop_next(n=1)
-    @stop_next = n
-  end
-
-  def set_suspend
-    @suspend_next = true
-  end
-
-  def clear_suspend
-    @suspend_next = false
-  end
-
-  def suspend_all
-    DEBUGGER__.suspend
-  end
-
-  def resume_all
-    DEBUGGER__.resume
-  end
-
-  def check_suspend
-    return if Thread.critical
-    while (Thread.critical = true; @suspend_next)
-      DEBUGGER__.waiting.push Thread.current
-      @suspend_next = false
-      Thread.stop
-    end
-    Thread.critical = false
-  end
-
-  def trace?
-    @trace
-  end
-
-  def set_trace(arg)
-    @trace = arg
-  end
-
-  def stdout
-    DEBUGGER__.stdout
-  end
-
-  def break_points
-    DEBUGGER__.break_points
-  end
-
-  def display
-    DEBUGGER__.display
-  end
-
-  def context(th)
-    DEBUGGER__.context(th)
-  end
-
-  def set_trace_all(arg)
-    DEBUGGER__.set_trace(arg)
-  end
-
-  def set_last_thread(th)
-    DEBUGGER__.set_last_thread(th)
-  end
-
-  def debug_eval(str, binding)
-    begin
-      val = eval(str, binding)
-    rescue StandardError, ScriptError => e
-      at = eval("caller(1)", binding)
-      stdout.printf "%s:%s\n", at.shift, e.to_s.sub(/\(eval\):1:(in `.*?':)?/, '')
-      for i in at
-	stdout.printf "\tfrom %s\n", i
-      end
-      throw :debug_error
-    end
-  end
-
-  def debug_silent_eval(str, binding)
-    begin
-      eval(str, binding)
-    rescue StandardError, ScriptError
-      nil
-    end
-  end
-
-  def var_list(ary, binding)
-    ary.sort!
-    for v in ary
-      stdout.printf "  %s => %s\n", v, eval(v, binding).inspect
-    end
-  end
-
-  def debug_variable_info(input, binding)
-    case input
-    when /^\s*g(?:lobal)?\s*$/
-      var_list(global_variables, binding)
-
-    when /^\s*l(?:ocal)?\s*$/
-      var_list(eval("local_variables", binding), binding)
-
-    when /^\s*i(?:nstance)?\s+/
-      obj = debug_eval($', binding)
-      var_list(obj.instance_variables, obj.instance_eval{binding()})
-
-    when /^\s*c(?:onst(?:ant)?)?\s+/
-      obj = debug_eval($', binding)
-      unless obj.kind_of? Module
-	stdout.print "Should be Class/Module: ", $', "\n"
-      else
-	var_list(obj.constants, obj.module_eval{binding()})
-      end
-    end
-  end
-
-  def debug_method_info(input, binding)
-    case input
-    when /^i(:?nstance)?\s+/
-      obj = debug_eval($', binding)
-
-      len = 0
-      for v in obj.methods.sort
-	len += v.size + 1
-	if len > 70
-	  len = v.size + 1
-	  stdout.print "\n"
-	end
-	stdout.print v, " "
-      end
-      stdout.print "\n"
-
-    else
-      obj = debug_eval(input, binding)
-      unless obj.kind_of? Module
-	stdout.print "Should be Class/Module: ", input, "\n"
-      else
-	len = 0
-	for v in obj.instance_methods(false).sort
-	  len += v.size + 1
-	  if len > 70
-	    len = v.size + 1
-	    stdout.print "\n"
-	  end
-	  stdout.print v, " "
-	end
-	stdout.print "\n"
-      end
-    end
-  end
-
-  def thnum
-    num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-    unless num
-      DEBUGGER__.make_thread_list
-      num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-    end
-    num
-  end
-
-  def debug_command(file, line, id, binding)
-    MUTEX.lock
-    unless defined?($debugger_restart) and $debugger_restart
-      callcc{|c| $debugger_restart = c} 
-    end
-    set_last_thread(Thread.current)
-    frame_pos = 0
-    binding_file = file
-    binding_line = line
-    previous_line = nil
-    if ENV['EMACS']
-      stdout.printf "\032\032%s:%d:\n", binding_file, binding_line
-    else
-      stdout.printf "%s:%d:%s", binding_file, binding_line,
-	line_at(binding_file, binding_line)
-    end
-    @frames[0] = [binding, file, line, id]
-    display_expressions(binding)
-    prompt = true
-    while prompt and input = readline("(rdb:%d) "%thnum(), true)
-      catch(:debug_error) do
-	if input == ""
-          next unless DEBUG_LAST_CMD[0]
-	  input = DEBUG_LAST_CMD[0]
-	  stdout.print input, "\n"
-	else
-	  DEBUG_LAST_CMD[0] = input
-	end
-
-	case input
-	when /^\s*tr(?:ace)?(?:\s+(on|off))?(?:\s+(all))?$/
-          if defined?( $2 )
-            if $1 == 'on'
-              set_trace_all true
-            else
-              set_trace_all false
-            end
-          elsif defined?( $1 )
-            if $1 == 'on'
-              set_trace true
-            else
-              set_trace false
-            end
-          end
-          if trace?
-            stdout.print "Trace on.\n"
-          else
-            stdout.print "Trace off.\n"
-          end
-
-	when /^\s*b(?:reak)?\s+(?:(.+):)?([^.:]+)$/
-	  pos = $2
-          if $1
-            klass = debug_silent_eval($1, binding)
-            file = $1
-          end
-	  if pos =~ /^\d+$/
-	    pname = pos
-	    pos = pos.to_i
-	  else
-	    pname = pos = pos.intern.id2name
-	  end
-	  break_points.push [true, 0, klass || file, pos]
-	  stdout.printf "Set breakpoint %d at %s:%s\n", break_points.size, klass || file, pname
-
-	when /^\s*b(?:reak)?\s+(.+)[#.]([^.:]+)$/
-	  pos = $2.intern.id2name
-	  klass = debug_eval($1, binding)
-	  break_points.push [true, 0, klass, pos]
-	  stdout.printf "Set breakpoint %d at %s.%s\n", break_points.size, klass, pos
-
-	when /^\s*wat(?:ch)?\s+(.+)$/
-	  exp = $1
-	  break_points.push [true, 1, exp]
-	  stdout.printf "Set watchpoint %d:%s\n", break_points.size, exp
-
-	when /^\s*b(?:reak)?$/
-	  if break_points.find{|b| b[1] == 0}
-	    n = 1
-	    stdout.print "Breakpoints:\n"
-	    for b in break_points
-	      if b[0] and b[1] == 0
-		stdout.printf "  %d %s:%s\n", n, b[2], b[3] 
-	      end
-	      n += 1
-	    end
-	  end
-	  if break_points.find{|b| b[1] == 1}
-	    n = 1
-	    stdout.print "\n"
-	    stdout.print "Watchpoints:\n"
-	    for b in break_points
-	      if b[0] and b[1] == 1
-		stdout.printf "  %d %s\n", n, b[2]
-	      end
-	      n += 1
-	    end
-	  end
-	  if break_points.size == 0
-	    stdout.print "No breakpoints\n"
-	  else
-	    stdout.print "\n"
-	  end
-
-	when /^\s*del(?:ete)?(?:\s+(\d+))?$/
-	  pos = $1
-	  unless pos
-	    input = readline("Clear all breakpoints? (y/n) ", false)
-	    if input == "y"
-	      for b in break_points
-		b[0] = false
-	      end
-	    end
-	  else
-	    pos = pos.to_i
-	    if break_points[pos-1]
-	      break_points[pos-1][0] = false
-	    else
-	      stdout.printf "Breakpoint %d is not defined\n", pos
-	    end
-	  end
-
-	when /^\s*disp(?:lay)?\s+(.+)$/
-	  exp = $1
-	  display.push [true, exp]
-	  stdout.printf "%d: ", display.size
-	  display_expression(exp, binding)
-
-	when /^\s*disp(?:lay)?$/
-	  display_expressions(binding)
-
-	when /^\s*undisp(?:lay)?(?:\s+(\d+))?$/
-	  pos = $1
-	  unless pos
-	    input = readline("Clear all expressions? (y/n) ", false)
-	    if input == "y"
-	      for d in display
-		d[0] = false
-	      end
-	    end
-	  else
-	    pos = pos.to_i
-	    if display[pos-1]
-	      display[pos-1][0] = false
-	    else
-	      stdout.printf "Display expression %d is not defined\n", pos
-	    end
-	  end
-
-	when /^\s*c(?:ont)?$/
-	  prompt = false
-
-	when /^\s*s(?:tep)?(?:\s+(\d+))?$/
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  @stop_next = lev
-	  prompt = false
-
-	when /^\s*n(?:ext)?(?:\s+(\d+))?$/
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  @stop_next = lev
-	  @no_step = @frames.size - frame_pos
-	  prompt = false
-
-	when /^\s*w(?:here)?$/, /^\s*f(?:rame)?$/
-	  display_frames(frame_pos)
-
-	when /^\s*l(?:ist)?(?:\s+(.+))?$/
-	  if not $1
-	    b = previous_line ? previous_line + 10 : binding_line - 5
-	    e = b + 9
-	  elsif $1 == '-'
-	    b = previous_line ? previous_line - 10 : binding_line - 5
-	    e = b + 9
-	  else
-	    b, e = $1.split(/[-,]/)
-	    if e
-	      b = b.to_i
-	      e = e.to_i
-	    else
-	      b = b.to_i - 5
-	      e = b + 9
-	    end
-	  end
-	  previous_line = b
-	  display_list(b, e, binding_file, binding_line)
-
-	when /^\s*up(?:\s+(\d+))?$/
-	  previous_line = nil
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  frame_pos += lev
-	  if frame_pos >= @frames.size
-	    frame_pos = @frames.size - 1
-	    stdout.print "At toplevel\n"
-	  end
-	  binding, binding_file, binding_line = @frames[frame_pos]
-	  stdout.print format_frame(frame_pos)
-
-	when /^\s*down(?:\s+(\d+))?$/
-	  previous_line = nil
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  frame_pos -= lev
-	  if frame_pos < 0
-	    frame_pos = 0
-	    stdout.print "At stack bottom\n"
-	  end
-	  binding, binding_file, binding_line = @frames[frame_pos]
-	  stdout.print format_frame(frame_pos)
-
-	when /^\s*fin(?:ish)?$/
-	  if frame_pos == @frames.size
-	    stdout.print "\"finish\" not meaningful in the outermost frame.\n"
-	  else
-	    @finish_pos = @frames.size - frame_pos
-	    frame_pos = 0
-	    prompt = false
-	  end
-
-	when /^\s*cat(?:ch)?(?:\s+(.+))?$/
-	  if $1
-	    excn = $1
-	    if excn == 'off'
-	      @catch = nil
-	      stdout.print "Clear catchpoint.\n"
-	    else
-	      @catch = excn
-	      stdout.printf "Set catchpoint %s.\n", @catch
-	    end
-	  else
-	    if @catch
-	      stdout.printf "Catchpoint %s.\n", @catch
-	    else
-	      stdout.print "No catchpoint.\n"
-	    end
-	  end
-
-	when /^\s*q(?:uit)?$/
-	  input = readline("Really quit? (y/n) ", false)
-	  if input == "y"
-	    exit!	# exit -> exit!: No graceful way to stop threads...
-	  end
-
-	when /^\s*v(?:ar)?\s+/
-	  debug_variable_info($', binding)
-
-	when /^\s*m(?:ethod)?\s+/
-	  debug_method_info($', binding)
-
-	when /^\s*th(?:read)?\s+/
-	  if DEBUGGER__.debug_thread_info($', binding) == :cont
-	    prompt = false
-	  end
-
-	when /^\s*pp\s+/
-	  PP.pp(debug_eval($', binding), stdout)
-
-	when /^\s*p\s+/
-	  stdout.printf "%s\n", debug_eval($', binding).inspect
-
-	when /^\s*r(?:estart)?$/
-          $debugger_restart.call
-
-	when /^\s*h(?:elp)?$/
-	  debug_print_help()
-
-	else
-	  v = debug_eval(input, binding)
-	  stdout.printf "%s\n", v.inspect
-	end
-      end
-    end
-    MUTEX.unlock
-    resume_all
-  end
-
-  def debug_print_help
-    stdout.print <<EOHELP
-Debugger help v.-0.002b
-Commands
-  b[reak] [file:|class:]<line|method>
-  b[reak] [class.]<line|method>
-                             set breakpoint to some position
-  wat[ch] <expression>       set watchpoint to some expression
-  cat[ch] (<exception>|off)  set catchpoint to an exception
-  b[reak]                    list breakpoints
-  cat[ch]                    show catchpoint
-  del[ete][ nnn]             delete some or all breakpoints
-  disp[lay] <expression>     add expression into display expression list
-  undisp[lay][ nnn]          delete one particular or all display expressions
-  c[ont]                     run until program ends or hit breakpoint
-  s[tep][ nnn]               step (into methods) one line or till line nnn
-  n[ext][ nnn]               go over one line or till line nnn
-  w[here]                    display frames
-  f[rame]                    alias for where
-  l[ist][ (-|nn-mm)]         list program, - lists backwards
-                             nn-mm lists given lines
-  up[ nn]                    move to higher frame
-  down[ nn]                  move to lower frame
-  fin[ish]                   return to outer frame
-  tr[ace] (on|off)           set trace mode of current thread
-  tr[ace] (on|off) all       set trace mode of all threads
-  q[uit]                     exit from debugger
-  v[ar] g[lobal]             show global variables
-  v[ar] l[ocal]              show local variables
-  v[ar] i[nstance] <object>  show instance variables of object
-  v[ar] c[onst] <object>     show constants of object
-  m[ethod] i[nstance] <obj>  show methods of object
-  m[ethod] <class|module>    show instance methods of class or module
-  th[read] l[ist]            list all threads
-  th[read] c[ur[rent]]       show current thread
-  th[read] [sw[itch]] <nnn>  switch thread context to nnn
-  th[read] stop <nnn>        stop thread nnn
-  th[read] resume <nnn>      resume thread nnn
-  p expression               evaluate expression and print its value
-  h[elp]                     print this help
-  <everything else>          evaluate
-EOHELP
-  end
-
-  def display_expressions(binding)
-    n = 1
-    for d in display
-      if d[0]
-	stdout.printf "%d: ", n
-	display_expression(d[1], binding)
-      end
-      n += 1
-    end
-  end
-
-  def display_expression(exp, binding)
-    stdout.printf "%s = %s\n", exp, debug_silent_eval(exp, binding).to_s
-  end
-
-  def frame_set_pos(file, line)
-    if @frames[0]
-      @frames[0][1] = file
-      @frames[0][2] = line
-    end
-  end
-
-  def display_frames(pos)
-    0.upto(@frames.size - 1) do |n|
-      if n == pos
-	stdout.print "--> "
-      else
-	stdout.print "    "
-      end
-      stdout.print format_frame(n)
-    end
-  end
-
-  def format_frame(pos)
-    bind, file, line, id = @frames[pos]
-    sprintf "#%d %s:%s%s\n", pos + 1, file, line,
-      (id ? ":in `#{id.id2name}'" : "")
-  end
-
-  def display_list(b, e, file, line)
-    stdout.printf "[%d, %d] in %s\n", b, e, file
-    if lines = SCRIPT_LINES__[file] and lines != true
-      n = 0
-      b.upto(e) do |n|
-	if n > 0 && lines[n-1]
-	  if n == line
-	    stdout.printf "=> %d  %s\n", n, lines[n-1].chomp
-	  else
-	    stdout.printf "   %d  %s\n", n, lines[n-1].chomp
-	  end
-	end
-      end
-    else
-      stdout.printf "No sourcefile available for %s\n", file
-    end
-  end
-
-  def line_at(file, line)
-    lines = SCRIPT_LINES__[file]
-    if lines
-      return "\n" if lines == true
-      line = lines[line-1]
-      return "\n" unless line
-      return line
-    end
-    return "\n"
-  end
-
-  def debug_funcname(id)
-    if id.nil?
-      "toplevel"
-    else
-      id.id2name
-    end
-  end
-
-  def check_break_points(file, klass, pos, binding, id)
-    return false if break_points.empty?
-    n = 1
-    for b in break_points
-      if b[0]		# valid
-	if b[1] == 0	# breakpoint
-	  if (b[2] == file and b[3] == pos) or
-	      (klass and b[2] == klass and b[3] == pos)
-	    stdout.printf "Breakpoint %d, %s at %s:%s\n", n, debug_funcname(id), file, pos
-	    return true
-	  end
-	elsif b[1] == 1	# watchpoint
-	  if debug_silent_eval(b[2], binding)
-	    stdout.printf "Watchpoint %d, %s at %s:%s\n", n, debug_funcname(id), file, pos
-	    return true
-	  end
-	end
-      end
-      n += 1
-    end
-    return false
-  end
-
-  def excn_handle(file, line, id, binding)
-    if $!.class <= SystemExit
-      set_trace_func nil
-      exit
-    end
-
-    if @catch and ($!.class.ancestors.find { |e| e.to_s == @catch })
-      stdout.printf "%s:%d: `%s' (%s)\n", file, line, $!, $!.class
-      fs = @frames.size
-      tb = caller(0)[-fs..-1]
-      if tb
-	for i in tb
-	  stdout.printf "\tfrom %s\n", i
-	end
-      end
-      suspend_all
-      debug_command(file, line, id, binding)
-    end
-  end
-
-  def trace_func(event, file, line, id, binding, klass)
-    Tracer.trace_func(event, file, line, id, binding, klass) if trace?
-    context(Thread.current).check_suspend
-    @file = file
-    @line = line
-    case event
-    when 'line'
-      frame_set_pos(file, line)
-      if !@no_step or @frames.size == @no_step
-	@stop_next -= 1
-	@stop_next = -1 if @stop_next < 0
-      elsif @frames.size < @no_step
-	@stop_next = 0		# break here before leaving...
-      else
-	# nothing to do. skipped.
-      end
-      if @stop_next == 0 or check_break_points(file, nil, line, binding, id)
-	@no_step = nil
-	suspend_all
-	debug_command(file, line, id, binding)
-      end
-
-    when 'call'
-      @frames.unshift [binding, file, line, id]
-      if check_break_points(file, klass, id.id2name, binding, id)
-	suspend_all
-	debug_command(file, line, id, binding)
-      end
-
-    when 'c-call'
-      frame_set_pos(file, line)
-
-    when 'class'
-      @frames.unshift [binding, file, line, id]
-
-    when 'return', 'end'
-      if @frames.size == @finish_pos
-	@stop_next = 1
-	@finish_pos = 0
-      end
-      @frames.shift
-
-    when 'end'
-      @frames.shift
-
-    when 'raise' 
-      excn_handle(file, line, id, binding)
-
-    end
-    @last_file = file
-  end
-end
-
-trap("INT") { DEBUGGER__.interrupt }
- at last_thread = Thread::main
- at max_thread = 1
- at thread_list = {Thread::main => 1}
- at break_points = []
- at display = []
- at waiting = []
- at stdout = STDOUT
-
-class << DEBUGGER__
-  def stdout
-    @stdout
-  end
-
-  def stdout=(s)
-    @stdout = s
-  end
-
-  def display
-    @display
-  end
-
-  def break_points
-    @break_points
-  end
-
-  def waiting
-    @waiting
-  end
-
-  def set_trace( arg )
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      context(th).set_trace arg
-    end
-    Thread.critical = saved_crit
-    arg
-  end
-
-  def set_last_thread(th)
-    @last_thread = th
-  end
-
-  def suspend
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      next if th == Thread.current
-      context(th).set_suspend
-    end
-    Thread.critical = saved_crit
-    # Schedule other threads to suspend as soon as possible.
-    Thread.pass unless Thread.critical
-  end
-
-  def resume
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      next if th == Thread.current
-      context(th).clear_suspend
-    end
-    waiting.each do |th|
-      th.run
-    end
-    waiting.clear
-    Thread.critical = saved_crit
-    # Schedule other threads to restart as soon as possible.
-    Thread.pass
-  end
-
-  def context(thread=Thread.current)
-    c = thread[:__debugger_data__]
-    unless c
-      thread[:__debugger_data__] = c = Context.new
-    end
-    c
-  end
-
-  def interrupt
-    context(@last_thread).stop_next
-  end
-
-  def get_thread(num)
-    th = @thread_list.index(num)
-    unless th
-      @stdout.print "No thread ##{num}\n"
-      throw :debug_error
-    end
-    th
-  end
-
-  def thread_list(num)
-    th = get_thread(num)
-    if th == Thread.current
-      @stdout.print "+"
-    else
-      @stdout.print " "
-    end
-    @stdout.printf "%d ", num
-    @stdout.print th.inspect, "\t"
-    file = context(th).instance_eval{@file}
-    if file
-      @stdout.print file,":",context(th).instance_eval{@line}
-    end
-    @stdout.print "\n"
-  end
-
-  def thread_list_all
-    for th in @thread_list.values.sort
-      thread_list(th)
-    end
-  end
-
-  def make_thread_list
-    hash = {}
-    for th in Thread::list
-      if @thread_list.key? th
-	hash[th] = @thread_list[th]
-      else
-	@max_thread += 1
-	hash[th] = @max_thread
-      end
-    end
-    @thread_list = hash
-  end
-
-  def debug_thread_info(input, binding)
-    case input
-    when /^l(?:ist)?/
-      make_thread_list
-      thread_list_all
-
-    when /^c(?:ur(?:rent)?)?$/
-      make_thread_list
-      thread_list(@thread_list[Thread.current])
-
-    when /^(?:sw(?:itch)?\s+)?(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      else
-	thread_list(@thread_list[th])
-	context(th).stop_next
-	th.run
-	return :cont
-      end
-
-    when /^stop\s+(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      elsif th.stop?
-	@stdout.print "Already stopped.\n"
-      else
-	thread_list(@thread_list[th])
-	context(th).suspend 
-      end
-
-    when /^resume\s+(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      elsif !th.stop?
-	@stdout.print "Already running."
-      else
-	thread_list(@thread_list[th])
-	th.run
-      end
-    end
-  end
-end
-
-stdout.printf "Debug.rb\n"
-stdout.printf "Emacs support available.\n\n"
-set_trace_func proc { |event, file, line, id, binding, klass, *rest|
-  DEBUGGER__.context.trace_func event, file, line, id, binding, klass
-}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/delegate.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/delegate.rb
deleted file mode 100644
index ee5fe8d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/delegate.rb
+++ /dev/null
@@ -1,339 +0,0 @@
-# = delegate -- Support for the Delegation Pattern
-#
-# Documentation by James Edward Gray II and Gavin Sinclair
-#
-# == Introduction
-#
-# This library provides three different ways to delegate method calls to an
-# object.  The easiest to use is SimpleDelegator.  Pass an object to the
-# constructor and all methods supported by the object will be delegated.  This
-# object can be changed later.
-#
-# Going a step further, the top level DelegateClass method allows you to easily
-# setup delegation through class inheritance.  This is considerably more
-# flexible and thus probably the most common use for this library.
-#
-# Finally, if you need full control over the delegation scheme, you can inherit
-# from the abstract class Delegator and customize as needed.  (If you find
-# yourself needing this control, have a look at _forwardable_, also in the
-# standard library.  It may suit your needs better.)
-#
-# == Notes
-#
-# Be advised, RDoc will not detect delegated methods.
-#
-# <b>delegate.rb provides full-class delegation via the
-# DelegateClass() method.  For single-method delegation via
-# def_delegator(), see forwardable.rb.</b>
-#
-# == Examples
-#
-# === SimpleDelegator
-#
-# Here's a simple example that takes advantage of the fact that
-# SimpleDelegator's delegation object can be changed at any time.
-#
-#   class Stats
-#     def initialize
-#       @source = SimpleDelegator.new([])
-#     end
-#     
-#     def stats( records )
-#       @source.__setobj__(records)
-#       	
-#       "Elements:  #{@source.size}\n" +
-#       " Non-Nil:  #{@source.compact.size}\n" +
-#       "  Unique:  #{@source.uniq.size}\n"
-#     end
-#   end
-#   
-#   s = Stats.new
-#   puts s.stats(%w{James Edward Gray II})
-#   puts
-#   puts s.stats([1, 2, 3, nil, 4, 5, 1, 2])
-#
-# <i>Prints:</i>
-#
-#   Elements:  4
-#    Non-Nil:  4
-#     Unique:  4
-# 
-#   Elements:  8
-#    Non-Nil:  7
-#     Unique:  6
-#
-# === DelegateClass()
-#
-# Here's a sample of use from <i>tempfile.rb</i>.
-#
-# A _Tempfile_ object is really just a _File_ object with a few special rules
-# about storage location and/or when the File should be deleted.  That makes for
-# an almost textbook perfect example of how to use delegation.
-#
-#   class Tempfile < DelegateClass(File)
-#     # constant and class member data initialization...
-#   
-#     def initialize(basename, tmpdir=Dir::tmpdir)
-#       # build up file path/name in var tmpname...
-#     
-#       @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
-#     
-#       # ...
-#     
-#       super(@tmpfile)
-#     
-#       # below this point, all methods of File are supported...
-#     end
-#   
-#     # ...
-#   end
-#
-# === Delegator
-#
-# SimpleDelegator's implementation serves as a nice example here.
-#
-#    class SimpleDelegator < Delegator
-#      def initialize(obj)
-#        super             # pass obj to Delegator constructor, required
-#        @_sd_obj = obj    # store obj for future use
-#      end
-# 
-#      def __getobj__
-#        @_sd_obj          # return object we are delegating to, required
-#      end
-# 
-#      def __setobj__(obj)
-#        @_sd_obj = obj    # change delegation object, a feature we're providing
-#      end
-# 
-#      # ...
-#    end
-
-#
-# Delegator is an abstract class used to build delegator pattern objects from
-# subclasses.  Subclasses should redefine \_\_getobj\_\_.  For a concrete
-# implementation, see SimpleDelegator.
-#
-class Delegator
-
-  #
-  # Pass in the _obj_ to delegate method calls to.  All methods supported by
-  # _obj_ will be delegated to.
-  #
-  def initialize(obj)
-    preserved = ::Kernel.public_instance_methods(false)
-    preserved -= ["to_s","to_a","inspect","==","=~","==="]
-    for t in self.class.ancestors
-      preserved |= t.public_instance_methods(false)
-      preserved |= t.private_instance_methods(false)
-      preserved |= t.protected_instance_methods(false)
-      break if t == Delegator
-    end
-    preserved << "singleton_method_added"
-    for method in obj.methods
-      next if preserved.include? method
-      begin
-	eval <<-EOS
-	  def self.#{method}(*args, &block)
-	    begin
-	      __getobj__.__send__(:#{method}, *args, &block)
-	    rescue Exception
-	      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-	      Kernel::raise
-	    end
-	  end
-	EOS
-      rescue SyntaxError
-        raise NameError, "invalid identifier %s" % method, caller(4)
-      end
-    end
-  end
-  alias initialize_methods initialize
-
-  # Handles the magic of delegation through \_\_getobj\_\_.
-  def method_missing(m, *args)
-    target = self.__getobj__
-    unless target.respond_to?(m)
-      super(m, *args)
-    end
-    target.__send__(m, *args)
-  end
-
-  # 
-  # Checks for a method provided by this the delegate object by fowarding the 
-  # call through \_\_getobj\_\_.
-  # 
-  def respond_to?(m, include_private = false)
-    return true if super
-    return self.__getobj__.respond_to?(m, include_private)
-  end
-
-  #
-  # This method must be overridden by subclasses and should return the object
-  # method calls are being delegated to.
-  #
-  def __getobj__
-    raise NotImplementedError, "need to define `__getobj__'"
-  end
-
-  # Serialization support for the object returned by \_\_getobj\_\_.
-  def marshal_dump
-    __getobj__
-  end
-  # Reinitializes delegation from a serialized object.
-  def marshal_load(obj)
-    initialize_methods(obj)
-    __setobj__(obj)
-  end
-end
-
-#
-# A concrete implementation of Delegator, this class provides the means to
-# delegate all supported method calls to the object passed into the constructor
-# and even to change the object being delegated to at a later time with
-# \_\_setobj\_\_ .
-#
-class SimpleDelegator<Delegator
-
-  # Pass in the _obj_ you would like to delegate method calls to.
-  def initialize(obj)
-    super
-    @_sd_obj = obj
-  end
-
-  # Returns the current object method calls are being delegated to.
-  def __getobj__
-    @_sd_obj
-  end
-
-  #
-  # Changes the delegate object to _obj_.
-  #
-  # It's important to note that this does *not* cause SimpleDelegator's methods
-  # to change.  Because of this, you probably only want to change delegation
-  # to objects of the same type as the original delegate.
-  #
-  # Here's an example of changing the delegation object.
-  #
-  #   names = SimpleDelegator.new(%w{James Edward Gray II})
-  #   puts names[1]    # => Edward
-  #   names.__setobj__(%w{Gavin Sinclair})
-  #   puts names[1]    # => Sinclair
-  #
-  def __setobj__(obj)
-    raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
-    @_sd_obj = obj
-  end
-
-  # Clone support for the object returned by \_\_getobj\_\_.
-  def clone
-    new = super
-    new.__setobj__(__getobj__.clone)
-    new
-  end
-  # Duplication support for the object returned by \_\_getobj\_\_.
-  def dup
-    new = super
-    new.__setobj__(__getobj__.clone)
-    new
-  end
-end
-
-# :stopdoc:
-# backward compatibility ^_^;;;
-Delegater = Delegator
-SimpleDelegater = SimpleDelegator
-# :startdoc:
-
-#
-# The primary interface to this library.  Use to setup delegation when defining
-# your class.
-#
-#   class MyClass < DelegateClass( ClassToDelegateTo )    # Step 1
-#     def initiaize
-#       super(obj_of_ClassToDelegateTo)                   # Step 2
-#     end
-#   end
-#
-def DelegateClass(superclass)
-  klass = Class.new
-  methods = superclass.public_instance_methods(true)
-  methods -= ::Kernel.public_instance_methods(false)
-  methods |= ["to_s","to_a","inspect","==","=~","==="]
-  klass.module_eval {
-    def initialize(obj)  # :nodoc:
-      @_dc_obj = obj
-    end
-    def method_missing(m, *args)  # :nodoc:
-      unless @_dc_obj.respond_to?(m)
-        super(m, *args)
-      end
-      @_dc_obj.__send__(m, *args)
-    end
-    def respond_to?(m, include_private = false)  # :nodoc:
-      return true if super
-      return @_dc_obj.respond_to?(m, include_private)
-    end
-    def __getobj__  # :nodoc:
-      @_dc_obj
-    end
-    def __setobj__(obj)  # :nodoc:
-      raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
-      @_dc_obj = obj
-    end
-    def clone  # :nodoc:
-      new = super
-      new.__setobj__(__getobj__.clone)
-      new
-    end
-    def dup  # :nodoc:
-      new = super
-      new.__setobj__(__getobj__.clone)
-      new
-    end
-  }
-  for method in methods
-    begin
-      klass.module_eval <<-EOS
-        def #{method}(*args, &block)
-	  begin
-	    @_dc_obj.__send__(:#{method}, *args, &block)
-	  rescue
-	    $@[0,2] = nil
-	    raise
-	  end
-	end
-      EOS
-    rescue SyntaxError
-      raise NameError, "invalid identifier %s" % method, caller(3)
-    end
-  end
-  return klass
-end
-
-# :enddoc:
-
-if __FILE__ == $0
-  class ExtArray<DelegateClass(Array)
-    def initialize()
-      super([])
-    end
-  end
-
-  ary = ExtArray.new
-  p ary.class
-  ary.push 25
-  p ary
-
-  foo = Object.new
-  def foo.test
-    25
-  end
-  def foo.error
-    raise 'this is OK'
-  end
-  foo2 = SimpleDelegator.new(foo)
-  p foo.test == foo2.test	# => true
-  foo2.error			# raise error!
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest.rb
deleted file mode 100644
index 0c4ee3c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'digest.so'
-
-module Digest
-  def self.const_missing(name)
-    case name
-    when :SHA256, :SHA384, :SHA512
-      lib = 'digest/sha2.so'
-    else
-      lib = File.join('digest', name.to_s.downcase)
-    end
-
-    begin
-      require lib
-    rescue LoadError => e
-      raise LoadError, "library not found for class Digest::#{name} -- #{lib}", caller(1)
-    end
-    unless Digest.const_defined?(name)
-      raise NameError, "uninitialized constant Digest::#{name}", caller(1)
-    end
-    Digest.const_get(name)
-  end
-
-  class ::Digest::Class
-    # creates a digest object and reads a given file, _name_.
-    # 
-    #  p Digest::SHA256.file("X11R6.8.2-src.tar.bz2").hexdigest
-    #  # => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
-    def self.file(name)
-      new.file(name)
-    end
-  end
-
-  module Instance
-    # updates the digest with the contents of a given file _name_ and
-    # returns self.
-    def file(name)
-      File.open(name, "rb") {|f|
-        buf = ""
-        while f.read(16384, buf)
-          update buf
-        end
-      }
-      self
-    end
-  end
-end
-
-def Digest(name)
-  Digest.const_get(name)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest/sha2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest/sha2.rb
deleted file mode 100644
index c16305d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/digest/sha2.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-#--
-# sha2.rb - defines Digest::SHA2 class which wraps up the SHA256,
-#           SHA384, and SHA512 classes.
-#++
-# Copyright (c) 2006 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under the same
-# terms as Ruby.
-#
-#   $Id: sha2.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'digest'
-
-module Digest
-  #
-  # A meta digest provider class for SHA256, SHA384 and SHA512.
-  #
-  class SHA2 < Digest::Class
-    # call-seq:
-    #     Digest::SHA2.new(bitlen = 256) -> digest_obj
-    #
-    # Creates a new SHA2 hash object with a given bit length.
-    def initialize(bitlen = 256)
-      case bitlen
-      when 256
-        @sha2 = Digest::SHA256.new
-      when 384
-        @sha2 = Digest::SHA384.new
-      when 512
-        @sha2 = Digest::SHA512.new
-      else
-        raise ArgumentError, "unsupported bit length: %s" % bitlen.inspect
-      end
-      @bitlen = bitlen
-    end
-
-    # :nodoc:
-    def reset
-      @sha2.reset
-      self
-    end
-
-    # :nodoc:
-    def update(str)
-      @sha2.update(str)
-      self
-    end
-    alias << update
-
-    def finish
-      @sha2.digest!
-    end
-    private :finish
-
-    def block_length
-      @sha2.block_length
-    end
-
-    def digest_length
-      @sha2.digest_length
-    end
-
-    # :nodoc:
-    def initialize_copy(other)
-      @sha2 = other.instance_eval { @sha2.clone }
-    end
-
-    # :nodoc:
-    def inspect
-      "#<%s:%d %s>" % [self.class.name, @bitlen, hexdigest]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/import.rb
deleted file mode 100644
index 01ee249..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/import.rb
+++ /dev/null
@@ -1,225 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-require 'dl/types'
-
-module DL
-  module Importable
-    LIB_MAP = {}
-
-    module Internal
-      def init_types()
-	@types ||= ::DL::Types.new
-      end
-
-      def init_sym()
-	@SYM ||= {}
-      end
-
-      def [](name)
-	return @SYM[name.to_s][0]
-      end
-
-      def dlload(*libnames)
-	if( !defined?(@LIBS) )
-	  @LIBS = []
-	end
-	libnames.each{|libname|
-	  if( !LIB_MAP[libname] )
-	    LIB_MAP[libname] = DL.dlopen(libname)
-	  end
-	  @LIBS.push(LIB_MAP[libname])
-	}
-      end
-      alias dllink :dlload
-
-      def parse_cproto(proto)
-	proto = proto.gsub(/\s+/, " ").strip
-	case proto
-	when /^([\d\w\*_\s]+)\(([\d\w\*_\s\,\[\]]*)\)$/
-	  ret = $1
-	  args = $2.strip()
-	  ret = ret.split(/\s+/)
-	  args = args.split(/\s*,\s*/)
-	  func = ret.pop()
-	  if( func =~ /^\*/ )
-	    func.gsub!(/^\*+/,"")
-	    ret.push("*")
-	  end
-	  ret  = ret.join(" ")
-	  return [func, ret, args]
-	else
-	  raise(RuntimeError,"can't parse the function prototype: #{proto}")
-	end
-      end
-
-      # example:
-      #   extern "int strlen(char*)"
-      #
-      def extern(proto)
-	func,ret,args = parse_cproto(proto)
-	return import(func, ret, args)
-      end
-
-      # example:
-      #   callback "int method_name(int, char*)"
-      #
-      def callback(proto)
-	func,ret,args = parse_cproto(proto)
-
-	init_types()
-	init_sym()
-
-	rty,renc,rdec = @types.encode_return_type(ret)
-        if( !rty )
-          raise(TypeError, "unsupported type: #{ret}")
-        end
-	ty,enc,dec = encode_argument_types(args)
-	symty = rty + ty
-
-	module_eval("module_function :#{func}")
-	sym = module_eval([
-	  "DL::callback(\"#{symty}\"){|*args|",
-	  "  sym,rdec,enc,dec  = @SYM['#{func}']",
-	  "  args = enc.call(args) if enc",
-	  "  r,rs = #{func}(*args)",
-	  "  r  = renc.call(r) if rdec",
-	  "  rs = dec.call(rs) if (dec && rs)",
-	  "  @retval = r",
-	  "  @args   = rs",
-	  "  r",
-	  "}",
-	].join("\n"))
-
-	@SYM[func] = [sym,rdec,enc,dec]
-
-	return sym
-      end
-
-      # example:
-      #  typealias("uint", "unsigned int")
-      #
-      def typealias(alias_type, ty1, enc1=nil, dec1=nil, ty2=nil, enc2=nil, dec2=nil)
-	init_types()
-	@types.typealias(alias_type, ty1, enc1, dec1,
-                                     ty2||ty1, enc2, dec2)
-      end
-
-      # example:
-      #  symbol "foo_value"
-      #  symbol "foo_func", "IIP"
-      #
-      def symbol(name, ty = nil)
-	sym = nil
-	@LIBS.each{|lib|
-	  begin
-	    if( ty )
-	      sym = lib[name, ty]
-	    else
-	      sym = lib[name]
-	    end
-	  rescue
-	    next
-	  end
-	}
-	if( !sym )
-	  raise(RuntimeError, "can't find the symbol `#{name}'")
-	end
-	return sym
-      end
-
-      # example:
-      #   import("get_length", "int", ["void*", "int"])
-      #
-      def import(name, rettype, argtypes = nil)
-	init_types()
-	init_sym()
-
-	rty,_,rdec = @types.encode_return_type(rettype)
-        if( !rty )
-          raise(TypeError, "unsupported type: #{rettype}")
-        end
-	ty,enc,dec = encode_argument_types(argtypes)
-	symty = rty + ty
-
-	sym = symbol(name, symty)
-
-	mname = name.dup
-	if( ?A <= mname[0] && mname[0] <= ?Z )
-	  mname[0,1] = mname[0,1].downcase
-	end
-	@SYM[mname] = [sym,rdec,enc,dec]
-	
-	module_eval [
-	  "def #{mname}(*args)",
-	  "  sym,rdec,enc,dec  = @SYM['#{mname}']",
-	  "  args = enc.call(args) if enc",
-	  if( $DEBUG )
-	    "  p \"[DL] call #{mname} with \#{args.inspect}\""
-	  else
-	    ""
-	  end,
-	  "  r,rs = sym.call(*args)",
-	  if( $DEBUG )
-	    "  p \"[DL] retval=\#{r.inspect} args=\#{rs.inspect}\""
-	  else
-	    ""
-	  end,
-	  "  r  = rdec.call(r) if rdec",
-	  "  rs = dec.call(rs) if dec",
-	  "  @retval = r",
-	  "  @args   = rs",
-	  "  return r",
-	  "end",
-	  "module_function :#{mname}",
-	].join("\n")
-
-	return sym
-      end
-
-      def _args_
-	return @args
-      end
-
-      def _retval_
-	return @retval
-      end
-
-      def encode_argument_types(tys)
-	init_types()
-	encty = []
-	enc = nil
-	dec = nil
-	tys.each_with_index{|ty,idx|
-	  ty,c1,c2 = @types.encode_argument_type(ty)
-          if( !ty )
-            raise(TypeError, "unsupported type: #{ty}")
-          end
-	  encty.push(ty)
-	  if( enc )
-	    if( c1 )
-	      conv1 = enc
-	      enc = proc{|v| v = conv1.call(v); v[idx] = c1.call(v[idx]); v}
-	    end
-	  else
-	    if( c1 )
-	      enc = proc{|v| v[idx] = c1.call(v[idx]); v}
-	    end
-	  end
-	  if( dec )
-	    if( c2 )
-	      conv2 = dec
-	      dec = proc{|v| v = conv2.call(v); v[idx] = c2.call(v[idx]); v}
-	    end
-	  else
-	    if( c2 )
-	      dec = proc{|v| v[idx] = c2.call(v[idx]); v}
-	    end
-	  end
-	}
-	return [encty.join, enc, dec]
-      end
-    end # end of Internal
-    include Internal
-  end # end of Importable
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/struct.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/struct.rb
deleted file mode 100644
index 33f303f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/struct.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-require 'dl/import'
-
-module DL
-  module Importable
-    module Internal
-      def define_struct(contents)
-	init_types()
-	Struct.new(@types, contents)
-      end
-      alias struct define_struct
-
-      def define_union(contents)
-	init_types()
-	Union.new(@types, contents)
-      end
-      alias union define_union
-
-      class Memory
-	def initialize(ptr, names, ty, len, enc, dec)
-	  @ptr = ptr
-	  @names = names
-	  @ty    = ty
-	  @len   = len
-	  @enc   = enc
-	  @dec   = dec
-
-	  # define methods
-	  @names.each{|name|
-	    instance_eval [
-	      "def #{name}",
-	      "  v = @ptr[\"#{name}\"]",
-	      "  if( @len[\"#{name}\"] )",
-	      "    v = v.collect{|x| @dec[\"#{name}\"] ? @dec[\"#{name}\"].call(x) : x }",
-              "  else",
-	      "    v = @dec[\"#{name}\"].call(v) if @dec[\"#{name}\"]",
-	      "  end",
-	      "  return v",
-	      "end",
-	      "def #{name}=(v)",
-	      "  if( @len[\"#{name}\"] )",
-	      "    v = v.collect{|x| @enc[\"#{name}\"] ? @enc[\"#{name}\"].call(x) : x }",
-	      "  else",
-	      "    v = @enc[\"#{name}\"].call(v) if @enc[\"#{name}\"]",
-              "  end",
-	      "  @ptr[\"#{name}\"] = v",
-	      "  return v",
-	      "end",
-	    ].join("\n")
-	  }
-	end
-
-	def to_ptr
-	  return @ptr
-	end
-
-	def size
-	  return @ptr.size
-	end
-      end
-
-      class Struct
-	def initialize(types, contents)
-	  @names = []
-	  @ty   = {}
-	  @len  = {}
-	  @enc  = {}
-	  @dec  = {}
-	  @size = 0
-	  @tys  = ""
-	  @types = types
-	  parse(contents)
-	end
-
-	def size
-	  return @size
-	end
-
-	def members
-	  return @names
-	end
-
-	# ptr must be a PtrData object.
-	def new(ptr)
-	  ptr.struct!(@tys, *@names)
-	  mem = Memory.new(ptr, @names, @ty, @len, @enc, @dec)
-	  return mem
-	end
-
-	def malloc(size = nil)
-	  if( !size )
-	    size = @size
-	  end
-	  ptr = DL::malloc(size)
-	  return new(ptr)
-	end
-
-	def parse(contents)
-	  contents.each{|elem|
-	    name,ty,num,enc,dec = parse_elem(elem)
-	    @names.push(name)
-	    @ty[name]  = ty
-	    @len[name] = num
-	    @enc[name] = enc
-	    @dec[name] = dec
-	    if( num )
-	      @tys += "#{ty}#{num}"
-	    else
-	      @tys += ty
-	    end
-	  }
-	  @size = DL.sizeof(@tys)
-	end
-	
-	def parse_elem(elem)
-	  elem.strip!
-	  case elem
-	  when /^([\w\d_\*]+)([\*\s]+)([\w\d_]+)$/
-	    ty = ($1 + $2).strip
-	    name = $3
-	    num = nil;
-	  when /^([\w\d_\*]+)([\*\s]+)([\w\d_]+)\[(\d+)\]$/
-	    ty = ($1 + $2).strip
-	    name = $3
-	    num = $4.to_i
-	  else
-	    raise(RuntimeError, "invalid element: #{elem}")
-	  end
-	  ty,enc,dec = @types.encode_struct_type(ty)
-          if( !ty )
-            raise(TypeError, "unsupported type: #{ty}")
-          end
-	  return [name,ty,num,enc,dec]
-	end
-      end  # class Struct
-      
-      class Union < Struct
-	def new
-	  ptr = DL::malloc(@size)
-	  ptr.union!(@tys, *@names)
-	  mem = Memory.new(ptr, @names, @ty, @len, @enc, @dec)
-	  return mem
-	end
-      end
-    end  # module Internal
-  end  # module Importable
-end  # module DL
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/types.rb
deleted file mode 100644
index 1144917..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/types.rb
+++ /dev/null
@@ -1,245 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-
-module DL
-  class Types
-    TYPES = [
-      # FORMAT:
-      # ["alias name",
-      #  "type name", encoding_method, decoding_method,   for function prototypes
-      #  "type name", encoding_method, decoding_method]   for structures (not implemented)
-      
-      # for Windows
-      ["DWORD",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["PDWORD", "unsigned long *", nil, nil,
-                 "unsigned long *", nil, nil],
-      ["WORD",   "unsigned short", nil, nil,
-                 "unsigned short", nil, nil],
-      ["PWORD",  "unsigned int *", nil, nil,
-                 "unsigned int *", nil, nil],
-      ["BYTE",   "unsigned char",   nil, nil,
-                 "unsigned char", nil, nil],
-      ["PBYTE",  "unsigned char *", nil, nil,
-                 "unsigned char *", nil, nil],
-      ["BOOL",   "ibool", nil, nil,
-                 "ibool", nil, nil],
-      ["ATOM",   "int", nil, nil,
-                 "int", nil, nil],
-      ["BYTE",   "unsigned char", nil, nil,
-                 "unsigned char", nil, nil],
-      ["PBYTE",  "unsigned char *", nil, nil,
-                 "unsigned char *", nil, nil],
-      ["UINT",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["ULONG",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["UCHAR",  "unsigned char", nil, nil,
-                 "unsigned char", nil, nil],
-      ["HANDLE", "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["PHANDLE","void*", nil, nil,
-                 "void*", nil, nil],
-      ["PVOID",  "void*", nil, nil,
-                 "void*", nil, nil],
-      ["LPCSTR", "char*", nil, nil,
-                 "char*", nil, nil],
-      ["HDC",    "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["HWND",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      
-      # Others
-      ["uint",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["u_int",  "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["ulong",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["u_long", "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-
-      # DL::Importable primitive types
-      ["ibool",
-        "I",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "I",
-	proc{|v| v ? 1 : 0 },
-	proc{|v| (v != 0) ? true : false} ],
-      ["cbool",
-        "C",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "C",
-	proc{|v,len| v ? 1 : 0},
-	proc{|v,len| (v != 0) ? true : false}],
-      ["lbool",
-        "L",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "L",
-	proc{|v,len| v ? 1 : 0},
-	proc{|v,len| (v != 0) ? true : false}],
-      ["unsigned char",
-        "C",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]},
-        "C",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]}],
-      ["unsigned short",
-        "H",
-	proc{|v| [v].pack("S").unpack("s")[0]},
-	proc{|v| [v].pack("s").unpack("S")[0]},
-        "H",
-	proc{|v| [v].pack("S").unpack("s")[0]},
-	proc{|v| [v].pack("s").unpack("S")[0]}],
-      ["unsigned int",
-        "I",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]},
-        "I",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]}],
-      ["unsigned long",
-        "L",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]},
-        "L",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]}],
-      ["unsigned char ref",
-        "c",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]},
-	nil, nil, nil],
-      ["unsigned int ref",
-        "i",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]},
-	nil, nil, nil],
-      ["unsigned long ref",
-        "l",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]},
-	nil, nil, nil],
-      ["char ref",  "c", nil, nil,
-                    nil, nil, nil],
-      ["short ref", "h", nil, nil,
-                    nil, nil, nil],
-      ["int ref",   "i", nil, nil,
-                    nil, nil, nil],
-      ["long ref",  "l", nil, nil,
-                    nil, nil, nil],
-      ["float ref", "f", nil, nil,
-                    nil, nil, nil],
-      ["double ref","d", nil, nil,
-                    nil, nil, nil],
-      ["char",   "C", nil, nil,
-                 "C", nil, nil],
-      ["short",  "H", nil, nil,
-                 "H", nil, nil],
-      ["int",    "I", nil, nil,
-                 "I", nil, nil],
-      ["long",   "L", nil, nil,
-                 "L", nil, nil],
-      ["float",  "F", nil, nil,
-                 "F", nil, nil],
-      ["double", "D", nil, nil,
-                 "D", nil, nil],
-      [/^char\s*\*$/,"s",nil, nil,
-                     "S",nil, nil],
-      [/^const char\s*\*$/,"S",nil, nil,
-                           "S",nil, nil],
-      [/^.+\*$/,   "P", nil, nil,
-                   "P", nil, nil],
-      [/^.+\[\]$/, "a", nil, nil,
-                   "a", nil, nil],
-      ["void",   "0", nil, nil,
-                 nil, nil, nil],
-    ]
-
-    def initialize
-      init_types()
-    end
-
-    def typealias(ty1, ty2, enc=nil, dec=nil, ty3=nil, senc=nil, sdec=nil)
-      @TYDEFS.unshift([ty1, ty2, enc, dec, ty3, senc, sdec])
-    end
-
-    def init_types
-      @TYDEFS = TYPES.dup
-    end
-
-    def encode_argument_type(alias_type)
-      proc_encode = nil
-      proc_decode = nil
-      @TYDEFS.each{|aty,ty,enc,dec,_,_,_|
-	if( (aty.is_a?(Regexp) && (aty =~ alias_type)) || (aty == alias_type) )
-	  alias_type = alias_type.gsub(aty,ty) if ty
-          alias_type.strip! if alias_type
-	  if( proc_encode )
-	    if( enc )
-	      conv1 = proc_encode
-	      proc_encode = proc{|v| enc.call(conv1.call(v))}
-	    end
-	  else
-	    if( enc )
-	      proc_encode = enc
-	    end
-	  end
-	  if( proc_decode )
-	    if( dec )
-	      conv2 = proc_decode
-	      proc_decode = proc{|v| dec.call(conv2.call(v))}
-	    end
-	  else
-	    if( dec )
-	      proc_decode = dec
-	    end
-	  end
-	end
-      }
-      return [alias_type, proc_encode, proc_decode]
-    end
-
-    def encode_return_type(ty)
-      ty, enc, dec = encode_argument_type(ty)
-      return [ty, enc, dec]
-    end
-
-    def encode_struct_type(alias_type)
-      proc_encode = nil
-      proc_decode = nil
-      @TYDEFS.each{|aty,_,_,_,ty,enc,dec|
-	if( (aty.is_a?(Regexp) && (aty =~ alias_type)) || (aty == alias_type) )
-	  alias_type = alias_type.gsub(aty,ty) if ty
-          alias_type.strip! if alias_type
-	  if( proc_encode )
-	    if( enc )
-	      conv1 = proc_encode
-	      proc_encode = proc{|v| enc.call(conv1.call(v))}
-	    end
-	  else
-	    if( enc )
-	      proc_encode = enc
-	    end
-	  end
-	  if( proc_decode )
-	    if( dec )
-	      conv2 = proc_decode
-	      proc_decode = proc{|v| dec.call(conv2.call(v))}
-	    end
-	  else
-	    if( dec )
-	      proc_decode = dec
-	    end
-	  end
-	end
-      }
-      return [alias_type, proc_encode, proc_decode]
-    end
-  end # end of Types
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/win32.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/win32.rb
deleted file mode 100644
index 0fed47c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/dl/win32.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-
-class Win32API
-  DLL = {}
-
-  def initialize(dllname, func, import, export = "0")
-    prototype = (export + import.to_s).tr("VPpNnLlIi", "0SSI").sub(/^(.)0*$/, '\1')
-    handle = DLL[dllname] ||= DL::Handle.new(dllname)
-    @sym = handle.sym(func, prototype)
-  end
-
-  def call(*args)
-    import = @sym.proto.split("", 2)[1]
-    args.each_with_index do |x, i|
-      args[i] = nil if x == 0 and import[i] == ?S
-      args[i], = [x].pack("I").unpack("i") if import[i] == ?I
-    end
-    ret, = @sym.call(*args)
-    return ret || 0
-  end
-
-  alias Call call
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb.rb
deleted file mode 100644
index 93cc811..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'drb/drb'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/acl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/acl.rb
deleted file mode 100644
index 861c8a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/acl.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-# acl-2.0 - simple Access Control List
-#
-# Copyright (c) 2000,2002,2003 Masatoshi SEKI
-#
-# acl.rb is copyrighted free software by Masatoshi SEKI.
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-require 'ipaddr'
-
-class ACL
-  VERSION=["2.0.0"]
-  class ACLEntry
-    def initialize(str)
-      if str == '*' or str == 'all'
-	@pat = [:all]
-      elsif str.include?('*')
-        @pat = [:name, dot_pat(str)]
-      else
-	begin
-	  @pat = [:ip, IPAddr.new(str)]
-	rescue ArgumentError
-	  @pat = [:name, dot_pat(str)]
-	end
-      end
-    end
-
-    private
-    def dot_pat_str(str)
-      list = str.split('.').collect { |s|
-	(s == '*') ? '.+' : s
-      }
-      list.join("\\.")
-    end
-
-    private
-    def dot_pat(str)
-      exp = "^" + dot_pat_str(str) + "$"
-      Regexp.new(exp)
-    end
-
-    public
-    def match(addr)
-      case @pat[0]
-      when :all
-	true
-      when :ip
-	begin
-	  ipaddr = IPAddr.new(addr[3])
-	  ipaddr = ipaddr.ipv4_mapped if @pat[1].ipv6? && ipaddr.ipv4?
-	rescue ArgumentError
-	  return false
-	end
-	(@pat[1].include?(ipaddr)) ? true : false
-      when :name
-	(@pat[1] =~ addr[2]) ? true : false
-      else
-	false
-      end
-    end
-  end
-
-  class ACLList
-    def initialize
-      @list = []
-    end
-
-    public
-    def match(addr)
-      @list.each do |e|
-	return true if e.match(addr)
-      end
-      false
-    end
-
-    public
-    def add(str)
-      @list.push(ACLEntry.new(str))
-    end
-  end
-
-  DENY_ALLOW = 0
-  ALLOW_DENY = 1
-
-  def initialize(list=nil, order = DENY_ALLOW)
-    @order = order
-    @deny = ACLList.new
-    @allow = ACLList.new
-    install_list(list) if list
-  end
-
-  public
-  def allow_socket?(soc)
-    allow_addr?(soc.peeraddr)
-  end
-
-  public
-  def allow_addr?(addr)
-    case @order
-    when DENY_ALLOW
-      return true if @allow.match(addr)
-      return false if @deny.match(addr)
-      return true
-    when ALLOW_DENY
-      return false if @deny.match(addr)
-      return true if @allow.match(addr)
-      return false
-    else
-      false
-    end
-  end
-
-  public
-  def install_list(list)
-    i = 0
-    while i < list.size
-      permission, domain = list.slice(i,2)
-      case permission.downcase
-      when 'allow'
-	@allow.add(domain)
-      when 'deny'
-	@deny.add(domain)
-      else
-	raise "Invalid ACL entry #{list.to_s}"
-      end
-      i += 2
-    end
-  end
-end
-
-if __FILE__ == $0
-  # example
-  list = %w(deny all
-	    allow 192.168.1.1
-            allow ::ffff:192.168.1.2
-            allow 192.168.1.3
-            )
-
-  addr = ["AF_INET", 10, "lc630", "192.168.1.3"]
-
-  acl = ACL.new
-  p acl.allow_addr?(addr)
-
-  acl = ACL.new(list, ACL::DENY_ALLOW)
-  p acl.allow_addr?(addr)
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/drb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/drb.rb
deleted file mode 100644
index 25fbb3f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/drb.rb
+++ /dev/null
@@ -1,1763 +0,0 @@
-#
-# = drb/drb.rb
-#
-# Distributed Ruby: _dRuby_ version 2.0.4
-#
-# Copyright (c) 1999-2003 Masatoshi SEKI.  You can redistribute it and/or
-# modify it under the same terms as Ruby.
-#
-# Author:: Masatoshi SEKI
-#
-# Documentation:: William Webber (william at williamwebber.com)
-#
-# == Overview
-#
-# dRuby is a distributed object system for Ruby.  It allows an object in one
-# Ruby process to invoke methods on an object in another Ruby process on the
-# same or a different machine.
-#
-# The Ruby standard library contains the core classes of the dRuby package.
-# However, the full package also includes access control lists and the
-# Rinda tuple-space distributed task management system, as well as a 
-# large number of samples.  The full dRuby package can be downloaded from
-# the dRuby home page (see *References*).
-#
-# For an introduction and examples of usage see the documentation to the
-# DRb module.
-#
-# == References
-#
-# [http://www2a.biglobe.ne.jp/~seki/ruby/druby.html]
-#    The dRuby home page, in Japanese.  Contains the full dRuby package
-#    and links to other Japanese-language sources.
-#
-# [http://www2a.biglobe.ne.jp/~seki/ruby/druby.en.html]
-#    The English version of the dRuby home page.
-#
-# [http://www.chadfowler.com/ruby/drb.html]
-#    A quick tutorial introduction to using dRuby by Chad Fowler.
-#
-# [http://www.linux-mag.com/2002-09/ruby_05.html]
-#   A tutorial introduction to dRuby in Linux Magazine by Dave Thomas.
-#   Includes a discussion of Rinda.
-#
-# [http://www.eng.cse.dmu.ac.uk/~hgs/ruby/dRuby/]
-#   Links to English-language Ruby material collected by Hugh Sasse.
-#
-# [http://www.rubycentral.com/book/ospace.html]
-#   The chapter from *Programming* *Ruby* by Dave Thomas and Andy Hunt
-#   which discusses dRuby.
-#
-# [http://www.clio.ne.jp/home/web-i31s/Flotuard/Ruby/PRC2K_seki/dRuby.en.html]
-#   Translation of presentation on Ruby by Masatoshi Seki.
-
-require 'socket'
-require 'thread'
-require 'fcntl'
-require 'drb/eq'
-
-#
-# == Overview
-#
-# dRuby is a distributed object system for Ruby.  It is written in
-# pure Ruby and uses its own protocol.  No add-in services are needed
-# beyond those provided by the Ruby runtime, such as TCP sockets.  It
-# does not rely on or interoperate with other distributed object
-# systems such as CORBA, RMI, or .NET.
-#
-# dRuby allows methods to be called in one Ruby process upon a Ruby
-# object located in another Ruby process, even on another machine.
-# References to objects can be passed between processes.  Method
-# arguments and return values are dumped and loaded in marshalled
-# format.  All of this is done transparently to both the caller of the
-# remote method and the object that it is called upon.
-#
-# An object in a remote process is locally represented by a
-# DRb::DRbObject instance.  This acts as a sort of proxy for the
-# remote object.  Methods called upon this DRbObject instance are
-# forwarded to its remote object.  This is arranged dynamically at run
-# time.  There are no statically declared interfaces for remote
-# objects, such as CORBA's IDL.
-#
-# dRuby calls made into a process are handled by a DRb::DRbServer
-# instance within that process.  This reconstitutes the method call,
-# invokes it upon the specified local object, and returns the value to
-# the remote caller.  Any object can receive calls over dRuby.  There
-# is no need to implement a special interface, or mixin special
-# functionality.  Nor, in the general case, does an object need to
-# explicitly register itself with a DRbServer in order to receive
-# dRuby calls.
-#
-# One process wishing to make dRuby calls upon another process must
-# somehow obtain an initial reference to an object in the remote
-# process by some means other than as the return value of a remote
-# method call, as there is initially no remote object reference it can
-# invoke a method upon.  This is done by attaching to the server by
-# URI.  Each DRbServer binds itself to a URI such as
-# 'druby://example.com:8787'.  A DRbServer can have an object attached
-# to it that acts as the server's *front* *object*.  A DRbObject can
-# be explicitly created from the server's URI.  This DRbObject's
-# remote object will be the server's front object.  This front object
-# can then return references to other Ruby objects in the DRbServer's
-# process.
-#
-# Method calls made over dRuby behave largely the same as normal Ruby
-# method calls made within a process.  Method calls with blocks are
-# supported, as are raising exceptions.  In addition to a method's
-# standard errors, a dRuby call may also raise one of the
-# dRuby-specific errors, all of which are subclasses of DRb::DRbError.
-#
-# Any type of object can be passed as an argument to a dRuby call or
-# returned as its return value.  By default, such objects are dumped
-# or marshalled at the local end, then loaded or unmarshalled at the
-# remote end.  The remote end therefore receives a copy of the local
-# object, not a distributed reference to it; methods invoked upon this
-# copy are executed entirely in the remote process, not passed on to
-# the local original.  This has semantics similar to pass-by-value.
-#
-# However, if an object cannot be marshalled, a dRuby reference to it
-# is passed or returned instead.  This will turn up at the remote end
-# as a DRbObject instance.  All methods invoked upon this remote proxy
-# are forwarded to the local object, as described in the discussion of
-# DRbObjects.  This has semantics similar to the normal Ruby
-# pass-by-reference.
-# 
-# The easiest way to signal that we want an otherwise marshallable
-# object to be passed or returned as a DRbObject reference, rather
-# than marshalled and sent as a copy, is to include the
-# DRb::DRbUndumped mixin module.
-#
-# dRuby supports calling remote methods with blocks.  As blocks (or
-# rather the Proc objects that represent them) are not marshallable,
-# the block executes in the local, not the remote, context.  Each
-# value yielded to the block is passed from the remote object to the
-# local block, then the value returned by each block invocation is
-# passed back to the remote execution context to be collected, before
-# the collected values are finally returned to the local context as
-# the return value of the method invocation.
-# 
-# == Examples of usage
-#
-# For more dRuby samples, see the +samples+ directory in the full
-# dRuby distribution.
-#
-# === dRuby in client/server mode
-#
-# This illustrates setting up a simple client-server drb
-# system.  Run the server and client code in different terminals,
-# starting the server code first.
-#
-# ==== Server code
-#    
-#   require 'drb/drb'
-#     
-#   # The URI for the server to connect to
-#   URI="druby://localhost:8787" 
-#     
-#   class TimeServer
-#     
-#     def get_current_time
-#       return Time.now
-#     end
-#     
-#   end
-#     
-#   # The object that handles requests on the server
-#   FRONT_OBJECT=TimeServer.new
-#
-#   $SAFE = 1   # disable eval() and friends
-#   
-#   DRb.start_service(URI, FRONT_OBJECT)
-#   # Wait for the drb server thread to finish before exiting.
-#   DRb.thread.join
-#
-# ==== Client code
-#     
-#   require 'drb/drb'
-#   
-#   # The URI to connect to
-#   SERVER_URI="druby://localhost:8787"
-#
-#   # Start a local DRbServer to handle callbacks.
-#   #
-#   # Not necessary for this small example, but will be required
-#   # as soon as we pass a non-marshallable object as an argument
-#   # to a dRuby call.
-#   DRb.start_service
-#   
-#   timeserver = DRbObject.new_with_uri(SERVER_URI)
-#   puts timeserver.get_current_time 
-#
-# === Remote objects under dRuby
-#
-# This example illustrates returning a reference to an object
-# from a dRuby call.  The Logger instances live in the server
-# process.  References to them are returned to the client process,
-# where methods can be invoked upon them.  These methods are 
-# executed in the server process.
-#
-# ==== Server code
-#   
-#   require 'drb/drb'
-#   
-#   URI="druby://localhost:8787"
-#   
-#   class Logger
-#
-#       # Make dRuby send Logger instances as dRuby references,
-#       # not copies.
-#       include DRb::DRbUndumped
-#   
-#       def initialize(n, fname)
-#           @name = n
-#           @filename = fname
-#       end
-#   
-#       def log(message)
-#           File.open(@filename, "a") do |f|
-#               f.puts("#{Time.now}: #{@name}: #{message}")
-#           end
-#       end
-#   
-#   end
-#   
-#   # We have a central object for creating and retrieving loggers.
-#   # This retains a local reference to all loggers created.  This
-#   # is so an existing logger can be looked up by name, but also
-#   # to prevent loggers from being garbage collected.  A dRuby
-#   # reference to an object is not sufficient to prevent it being
-#   # garbage collected!
-#   class LoggerFactory
-#   
-#       def initialize(bdir)
-#           @basedir = bdir
-#           @loggers = {}
-#       end
-#   
-#       def get_logger(name)
-#           if !@loggers.has_key? name
-#               # make the filename safe, then declare it to be so
-#               fname = name.gsub(/[.\/]/, "_").untaint
-#               @loggers[name] = Logger.new(name, @basedir + "/" + fname)
-#           end
-#           return @loggers[name]
-#       end
-#   
-#   end
-#   
-#   FRONT_OBJECT=LoggerFactory.new("/tmp/dlog")
-#
-#   $SAFE = 1   # disable eval() and friends
-#   
-#   DRb.start_service(URI, FRONT_OBJECT)
-#   DRb.thread.join
-#
-# ==== Client code
-#
-#   require 'drb/drb'
-#   
-#   SERVER_URI="druby://localhost:8787"
-#
-#   DRb.start_service
-#   
-#   log_service=DRbObject.new_with_uri(SERVER_URI)
-#   
-#   ["loga", "logb", "logc"].each do |logname|
-#   
-#       logger=log_service.get_logger(logname)
-#   
-#       logger.log("Hello, world!")
-#       logger.log("Goodbye, world!")
-#       logger.log("=== EOT ===")
-#   
-#   end
-#
-# == Security
-#
-# As with all network services, security needs to be considered when
-# using dRuby.  By allowing external access to a Ruby object, you are
-# not only allowing outside clients to call the methods you have
-# defined for that object, but by default to execute arbitrary Ruby
-# code on your server.  Consider the following:
-#
-#    # !!! UNSAFE CODE !!!
-#    ro = DRbObject::new_with_uri("druby://your.server.com:8989")
-#    class << ro
-#      undef :instance_eval  # force call to be passed to remote object
-#    end
-#    ro.instance_eval("`rm -rf *`")
-#
-# The dangers posed by instance_eval and friends are such that a
-# DRbServer should generally be run with $SAFE set to at least 
-# level 1.  This will disable eval() and related calls on strings 
-# passed across the wire.  The sample usage code given above follows 
-# this practice.
-#
-# A DRbServer can be configured with an access control list to
-# selectively allow or deny access from specified IP addresses.  The
-# main druby distribution provides the ACL class for this purpose.  In
-# general, this mechanism should only be used alongside, rather than
-# as a replacement for, a good firewall.
-#
-# == dRuby internals
-#
-# dRuby is implemented using three main components: a remote method
-# call marshaller/unmarshaller; a transport protocol; and an
-# ID-to-object mapper.  The latter two can be directly, and the first
-# indirectly, replaced, in order to provide different behaviour and
-# capabilities.
-#
-# Marshalling and unmarshalling of remote method calls is performed by
-# a DRb::DRbMessage instance.  This uses the Marshal module to dump
-# the method call before sending it over the transport layer, then
-# reconstitute it at the other end.  There is normally no need to
-# replace this component, and no direct way is provided to do so.
-# However, it is possible to implement an alternative marshalling
-# scheme as part of an implementation of the transport layer.
-#
-# The transport layer is responsible for opening client and server
-# network connections and forwarding dRuby request across them.
-# Normally, it uses DRb::DRbMessage internally to manage marshalling
-# and unmarshalling.  The transport layer is managed by
-# DRb::DRbProtocol.  Multiple protocols can be installed in
-# DRbProtocol at the one time; selection between them is determined by
-# the scheme of a dRuby URI.  The default transport protocol is
-# selected by the scheme 'druby:', and implemented by
-# DRb::DRbTCPSocket.  This uses plain TCP/IP sockets for
-# communication.  An alternative protocol, using UNIX domain sockets,
-# is implemented by DRb::DRbUNIXSocket in the file drb/unix.rb, and
-# selected by the scheme 'drbunix:'.  A sample implementation over
-# HTTP can be found in the samples accompanying the main dRuby
-# distribution.
-#
-# The ID-to-object mapping component maps dRuby object ids to the
-# objects they refer to, and vice versa.  The implementation to use
-# can be specified as part of a DRb::DRbServer's configuration.  The
-# default implementation is provided by DRb::DRbIdConv.  It uses an
-# object's ObjectSpace id as its dRuby id.  This means that the dRuby
-# reference to that object only remains meaningful for the lifetime of
-# the object's process and the lifetime of the object within that
-# process.  A modified implementation is provided by DRb::TimerIdConv
-# in the file drb/timeridconv.rb.  This implementation retains a local
-# reference to all objects exported over dRuby for a configurable
-# period of time (defaulting to ten minutes), to prevent them being
-# garbage-collected within this time.  Another sample implementation
-# is provided in sample/name.rb in the main dRuby distribution.  This
-# allows objects to specify their own id or "name".  A dRuby reference
-# can be made persistent across processes by having each process
-# register an object using the same dRuby name.
-#
-module DRb
-
-  # Superclass of all errors raised in the DRb module.
-  class DRbError < RuntimeError; end
-
-  # Error raised when an error occurs on the underlying communication
-  # protocol.
-  class DRbConnError < DRbError; end
-
-  # Class responsible for converting between an object and its id.
-  #
-  # This, the default implementation, uses an object's local ObjectSpace
-  # __id__ as its id.  This means that an object's identification over
-  # drb remains valid only while that object instance remains alive 
-  # within the server runtime.
-  #
-  # For alternative mechanisms, see DRb::TimerIdConv in rdb/timeridconv.rb
-  # and DRbNameIdConv in sample/name.rb in the full drb distribution.
-  class DRbIdConv
-
-    # Convert an object reference id to an object.
-    #
-    # This implementation looks up the reference id in the local object
-    # space and returns the object it refers to.
-    def to_obj(ref)
-      ObjectSpace._id2ref(ref)
-    end
-    
-    # Convert an object into a reference id.
-    #
-    # This implementation returns the object's __id__ in the local
-    # object space.
-    def to_id(obj)
-      obj.nil? ? nil : obj.__id__
-    end
-  end
-
-  # Mixin module making an object undumpable or unmarshallable.
-  #
-  # If an object which includes this module is returned by method
-  # called over drb, then the object remains in the server space
-  # and a reference to the object is returned, rather than the
-  # object being marshalled and moved into the client space.
-  module DRbUndumped 
-    def _dump(dummy)  # :nodoc:
-      raise TypeError, 'can\'t dump'
-    end
-  end
-
-  # Error raised by the DRb module when an attempt is made to refer to
-  # the context's current drb server but the context does not have one.
-  # See #current_server.
-  class DRbServerNotFound < DRbError; end
-
-  # Error raised by the DRbProtocol module when it cannot find any
-  # protocol implementation support the scheme specified in a URI.
-  class DRbBadURI < DRbError; end
-
-  # Error raised by a dRuby protocol when it doesn't support the
-  # scheme specified in a URI.  See DRb::DRbProtocol.
-  class DRbBadScheme < DRbError; end
-
-  # An exception wrapping a DRb::DRbUnknown object
-  class DRbUnknownError < DRbError
-
-    # Create a new DRbUnknownError for the DRb::DRbUnknown object +unknown+
-    def initialize(unknown)
-      @unknown = unknown
-      super(unknown.name)
-    end
-
-    # Get the wrapped DRb::DRbUnknown object.
-    attr_reader :unknown
-
-    def self._load(s)  # :nodoc:
-      Marshal::load(s)
-    end
-    
-    def _dump(lv) # :nodoc:
-      Marshal::dump(@unknown)
-    end
-  end
-
-  # An exception wrapping an error object
-  class DRbRemoteError < DRbError
-    def initialize(error)
-      @reason = error.class.to_s
-      super("#{error.message} (#{error.class})")
-      set_backtrace(error.backtrace)
-    end
-
-    # the class of the error, as a string.
-    attr_reader :reason
-  end
-
-  # Class wrapping a marshalled object whose type is unknown locally.
-  #
-  # If an object is returned by a method invoked over drb, but the
-  # class of the object is unknown in the client namespace, or
-  # the object is a constant unknown in the client namespace, then
-  # the still-marshalled object is returned wrapped in a DRbUnknown instance.
-  #
-  # If this object is passed as an argument to a method invoked over
-  # drb, then the wrapped object is passed instead.
-  #
-  # The class or constant name of the object can be read from the
-  # +name+ attribute.  The marshalled object is held in the +buf+
-  # attribute.
-  class DRbUnknown
-    
-    # Create a new DRbUnknown object.
-    #
-    # +buf+ is a string containing a marshalled object that could not
-    # be unmarshalled.  +err+ is the error message that was raised 
-    # when the unmarshalling failed.  It is used to determine the
-    # name of the unmarshalled object.
-    def initialize(err, buf)
-      case err.to_s
-      when /uninitialized constant (\S+)/
-	@name = $1
-      when /undefined class\/module (\S+)/
-	@name = $1
-      else
-	@name = nil
-      end
-      @buf = buf
-    end
-
-    # The name of the unknown thing.
-    #
-    # Class name for unknown objects; variable name for unknown
-    # constants.
-    attr_reader :name
-
-    # Buffer contained the marshalled, unknown object.
-    attr_reader :buf
-
-    def self._load(s) # :nodoc:
-      begin
-	Marshal::load(s)
-      rescue NameError, ArgumentError
-	DRbUnknown.new($!, s)
-      end
-    end
-
-    def _dump(lv) # :nodoc:
-      @buf
-    end
-
-    # Attempt to load the wrapped marshalled object again.
-    #
-    # If the class of the object is now known locally, the object
-    # will be unmarshalled and returned.  Otherwise, a new 
-    # but identical DRbUnknown object will be returned.
-    def reload
-      self.class._load(@buf)
-    end
-
-    # Create a DRbUnknownError exception containing this object.
-    def exception
-      DRbUnknownError.new(self)
-    end
-  end
-
-  class DRbArray
-    def initialize(ary)
-      @ary = ary.collect { |obj| 
-	if obj.kind_of? DRbUndumped
-	  DRbObject.new(obj)
-	else
-	  begin
-	    Marshal.dump(obj)
-	    obj
-	  rescue
-	    DRbObject.new(obj)
-	  end
-	end
-      }
-    end
-
-    def self._load(s)
-      Marshal::load(s)
-    end
-
-    def _dump(lv)
-      Marshal.dump(@ary)
-    end
-  end
-
-  # Handler for sending and receiving drb messages.
-  #
-  # This takes care of the low-level marshalling and unmarshalling
-  # of drb requests and responses sent over the wire between server
-  # and client.  This relieves the implementor of a new drb
-  # protocol layer with having to deal with these details.
-  #
-  # The user does not have to directly deal with this object in
-  # normal use.
-  class DRbMessage
-    def initialize(config) # :nodoc:
-      @load_limit = config[:load_limit]
-      @argc_limit = config[:argc_limit]
-    end
-
-    def dump(obj, error=false)  # :nodoc:
-      obj = make_proxy(obj, error) if obj.kind_of? DRbUndumped
-      begin
-	str = Marshal::dump(obj)
-      rescue
-	str = Marshal::dump(make_proxy(obj, error))
-      end
-      [str.size].pack('N') + str
-    end
-
-    def load(soc)  # :nodoc:
-      begin
-        sz = soc.read(4)	# sizeof (N)
-      rescue
-        raise(DRbConnError, $!.message, $!.backtrace)
-      end
-      raise(DRbConnError, 'connection closed') if sz.nil?
-      raise(DRbConnError, 'premature header') if sz.size < 4
-      sz = sz.unpack('N')[0]
-      raise(DRbConnError, "too large packet #{sz}") if @load_limit < sz
-      begin
-        str = soc.read(sz)
-      rescue
-        raise(DRbConnError, $!.message, $!.backtrace)
-      end
-      raise(DRbConnError, 'connection closed') if str.nil?
-      raise(DRbConnError, 'premature marshal format(can\'t read)') if str.size < sz
-      Thread.exclusive do
-        begin
-          save = Thread.current[:drb_untaint]
-          Thread.current[:drb_untaint] = []
-          Marshal::load(str)
-        rescue NameError, ArgumentError
-          DRbUnknown.new($!, str)
-        ensure
-          Thread.current[:drb_untaint].each do |x|
-            x.untaint
-          end
-          Thread.current[:drb_untaint] = save
-        end
-      end
-    end
-
-    def send_request(stream, ref, msg_id, arg, b) # :nodoc:
-      ary = []
-      ary.push(dump(ref.__drbref))
-      ary.push(dump(msg_id.id2name))
-      ary.push(dump(arg.length))
-      arg.each do |e|
-	ary.push(dump(e))
-      end
-      ary.push(dump(b))
-      stream.write(ary.join(''))
-    rescue
-      raise(DRbConnError, $!.message, $!.backtrace)
-    end
-    
-    def recv_request(stream) # :nodoc:
-      ref = load(stream)
-      ro = DRb.to_obj(ref)
-      msg = load(stream)
-      argc = load(stream)
-      raise ArgumentError, 'too many arguments' if @argc_limit < argc
-      argv = Array.new(argc, nil)
-      argc.times do |n|
-	argv[n] = load(stream)
-      end
-      block = load(stream)
-      return ro, msg, argv, block
-    end
-
-    def send_reply(stream, succ, result)  # :nodoc:
-      stream.write(dump(succ) + dump(result, !succ))
-    rescue
-      raise(DRbConnError, $!.message, $!.backtrace)
-    end
-
-    def recv_reply(stream)  # :nodoc:
-      succ = load(stream)
-      result = load(stream)
-      [succ, result]
-    end
-
-    private
-    def make_proxy(obj, error=false)
-      if error
-        DRbRemoteError.new(obj)
-      else
-        DRbObject.new(obj)
-      end
-    end
-  end
-
-  # Module managing the underlying network protocol(s) used by drb.
-  #
-  # By default, drb uses the DRbTCPSocket protocol.  Other protocols
-  # can be defined.  A protocol must define the following class methods:
-  #
-  #   [open(uri, config)] Open a client connection to the server at +uri+,
-  #                       using configuration +config+.  Return a protocol
-  #                       instance for this connection.
-  #   [open_server(uri, config)] Open a server listening at +uri+,
-  #                              using configuration +config+.  Return a
-  #                              protocol instance for this listener.
-  #   [uri_option(uri, config)] Take a URI, possibly containing an option
-  #                             component (e.g. a trailing '?param=val'), 
-  #                             and return a [uri, option] tuple.
-  #
-  # All of these methods should raise a DRbBadScheme error if the URI 
-  # does not identify the protocol they support (e.g. "druby:" for
-  # the standard Ruby protocol).  This is how the DRbProtocol module,
-  # given a URI, determines which protocol implementation serves that
-  # protocol.
-  #
-  # The protocol instance returned by #open_server must have the
-  # following methods:
-  #
-  # [accept] Accept a new connection to the server.  Returns a protocol
-  #          instance capable of communicating with the client.
-  # [close] Close the server connection.
-  # [uri] Get the URI for this server.
-  #
-  # The protocol instance returned by #open must have the following methods:
-  #
-  # [send_request (ref, msg_id, arg, b)] 
-  #      Send a request to +ref+ with the given message id and arguments.
-  #      This is most easily implemented by calling DRbMessage.send_request,
-  #      providing a stream that sits on top of the current protocol.
-  # [recv_reply]
-  #      Receive a reply from the server and return it as a [success-boolean,
-  #      reply-value] pair.  This is most easily implemented by calling
-  #      DRb.recv_reply, providing a stream that sits on top of the 
-  #      current protocol.
-  # [alive?]
-  #      Is this connection still alive?
-  # [close]
-  #      Close this connection.
-  #
-  # The protocol instance returned by #open_server().accept() must have
-  # the following methods:
-  #
-  # [recv_request]
-  #     Receive a request from the client and return a [object, message,
-  #     args, block] tuple.  This is most easily implemented by calling
-  #     DRbMessage.recv_request, providing a stream that sits on top of
-  #     the current protocol.
-  # [send_reply(succ, result)]
-  #     Send a reply to the client.  This is most easily implemented
-  #     by calling DRbMessage.send_reply, providing a stream that sits
-  #     on top of the current protocol.
-  # [close]
-  #     Close this connection.
-  #
-  # A new protocol is registered with the DRbProtocol module using
-  # the add_protocol method.
-  #
-  # For examples of other protocols, see DRbUNIXSocket in drb/unix.rb,
-  # and HTTP0 in sample/http0.rb and sample/http0serv.rb in the full
-  # drb distribution.
-  module DRbProtocol
-
-    # Add a new protocol to the DRbProtocol module.
-    def add_protocol(prot)
-      @protocol.push(prot)
-    end
-    module_function :add_protocol
-
-    # Open a client connection to +uri+ with the configuration +config+.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to open the URI.  Each protocol signals that it does not handle that
-    # URI by raising a DRbBadScheme error.  If no protocol recognises the
-    # URI, then a DRbBadURI error is raised.  If a protocol accepts the
-    # URI, but an error occurs in opening it, a DRbConnError is raised.
-    def open(uri, config, first=true) 
-      @protocol.each do |prot|
-	begin
-	  return prot.open(uri, config)
-	rescue DRbBadScheme
-	rescue DRbConnError
-	  raise($!)
-	rescue
-	  raise(DRbConnError, "#{uri} - #{$!.inspect}")
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-	return open(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :open
-
-    # Open a server listening for connections at +uri+ with 
-    # configuration +config+.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to open a server at the URI.  Each protocol signals that it does 
-    # not handle that URI by raising a DRbBadScheme error.  If no protocol 
-    # recognises the URI, then a DRbBadURI error is raised.  If a protocol 
-    # accepts the URI, but an error occurs in opening it, the underlying 
-    # error is passed on to the caller.
-    def open_server(uri, config, first=true)
-      @protocol.each do |prot|
-	begin
-	  return prot.open_server(uri, config)
-	rescue DRbBadScheme
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-	return open_server(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :open_server
-
-    # Parse +uri+ into a [uri, option] pair.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to parse the URI.  Each protocol signals that it does not handle that
-    # URI by raising a DRbBadScheme error.  If no protocol recognises the
-    # URI, then a DRbBadURI error is raised.  
-    def uri_option(uri, config, first=true)
-      @protocol.each do |prot|
-	begin
-	  uri, opt = prot.uri_option(uri, config)
-	  # opt = nil if opt == ''
-	  return uri, opt
-	rescue DRbBadScheme
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-        return uri_option(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :uri_option
-
-    def auto_load(uri, config)  # :nodoc:
-      if uri =~ /^drb([a-z0-9]+):/
-	require("drb/#{$1}") rescue nil
-      end
-    end
-    module_function :auto_load
-  end
-
-  # The default drb protocol.
-  #
-  # Communicates over a TCP socket.
-  class DRbTCPSocket
-    private
-    def self.parse_uri(uri)
-      if uri =~ /^druby:\/\/(.*?):(\d+)(\?(.*))?$/
-	host = $1
-	port = $2.to_i
-	option = $4
-	[host, port, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^druby:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    public
-
-    # Open a client connection to +uri+ using configuration +config+.
-    def self.open(uri, config)
-      host, port, option = parse_uri(uri)
-      host.untaint
-      port.untaint
-      soc = TCPSocket.open(host, port)
-      self.new(uri, soc, config)
-    end
-
-    def self.getservername
-      host = Socket::gethostname
-      begin
-        Socket::gethostbyname(host)[0]
-      rescue
-        'localhost'
-      end
-    end
-
-    def self.open_server_inaddr_any(host, port)
-      infos = Socket::getaddrinfo(host, nil, 
-                                  Socket::AF_UNSPEC,
-                                  Socket::SOCK_STREAM, 
-                                  0,
-                                  Socket::AI_PASSIVE)
-      family = infos.collect { |af, *_| af }.uniq
-      case family
-      when ['AF_INET']
-        return TCPServer.open('0.0.0.0', port)
-      when ['AF_INET6']
-        return TCPServer.open('::', port)
-      else
-        return TCPServer.open(port)
-      end
-    end
-
-    # Open a server listening for connections at +uri+ using 
-    # configuration +config+.
-    def self.open_server(uri, config)
-      uri = 'druby://:0' unless uri
-      host, port, opt = parse_uri(uri)
-      if host.size == 0
-        host = getservername
-        soc = open_server_inaddr_any(host, port)
-      else
-	soc = TCPServer.open(host, port)
-      end
-      port = soc.addr[1] if port == 0
-      uri = "druby://#{host}:#{port}"
-      self.new(uri, soc, config)
-    end
-
-    # Parse +uri+ into a [uri, option] pair.
-    def self.uri_option(uri, config)
-      host, port, option = parse_uri(uri)
-      return "druby://#{host}:#{port}", option
-    end
-
-    # Create a new DRbTCPSocket instance.
-    #
-    # +uri+ is the URI we are connected to.
-    # +soc+ is the tcp socket we are bound to.  +config+ is our
-    # configuration.
-    def initialize(uri, soc, config={})
-      @uri = uri
-      @socket = soc
-      @config = config
-      @acl = config[:tcp_acl]
-      @msg = DRbMessage.new(config)
-      set_sockopt(@socket)
-    end
-
-    # Get the URI that we are connected to.
-    attr_reader :uri
-
-    # Get the address of our TCP peer (the other end of the socket
-    # we are bound to.
-    def peeraddr
-      @socket.peeraddr
-    end
-    
-    # Get the socket.
-    def stream; @socket; end
-
-    # On the client side, send a request to the server.
-    def send_request(ref, msg_id, arg, b)
-      @msg.send_request(stream, ref, msg_id, arg, b)
-    end
-    
-    # On the server side, receive a request from the client.
-    def recv_request
-      @msg.recv_request(stream)
-    end
-
-    # On the server side, send a reply to the client.
-    def send_reply(succ, result)
-      @msg.send_reply(stream, succ, result)
-    end
-
-    # On the client side, receive a reply from the server.
-    def recv_reply
-      @msg.recv_reply(stream)
-    end
-
-    public
-
-    # Close the connection.
-    #
-    # If this is an instance returned by #open_server, then this stops
-    # listening for new connections altogether.  If this is an instance
-    # returned by #open or by #accept, then it closes this particular
-    # client-server session.
-    def close
-      if @socket
-	@socket.close
-	@socket = nil
-      end
-    end
-    
-    # On the server side, for an instance returned by #open_server, 
-    # accept a client connection and return a new instance to handle
-    # the server's side of this client-server session.
-    def accept
-      while true
-	s = @socket.accept
-	break if (@acl ? @acl.allow_socket?(s) : true) 
-	s.close
-      end
-      self.class.new(nil, s, @config)
-    end
-
-    # Check to see if this connection is alive.
-    def alive?
-      return false unless @socket
-      if IO.select([@socket], nil, nil, 0)
-	close
-	return false
-      end
-      true
-    end
-
-    def set_sockopt(soc) # :nodoc:
-      soc.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
-      soc.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::FD_CLOEXEC
-    end
-  end
-
-  module DRbProtocol
-    @protocol = [DRbTCPSocket] # default
-  end
-
-  class DRbURIOption  # :nodoc:  I don't understand the purpose of this class...
-    def initialize(option)
-      @option = option.to_s
-    end
-    attr :option
-    def to_s; @option; end
-    
-    def ==(other)
-      return false unless DRbURIOption === other
-      @option == other.option
-    end
-    
-    def hash
-      @option.hash
-    end
-    
-    alias eql? ==
-  end
-
-  # Object wrapping a reference to a remote drb object.
-  #
-  # Method calls on this object are relayed to the remote
-  # object that this object is a stub for.
-  class DRbObject
-
-    # Unmarshall a marshalled DRbObject.
-    #
-    # If the referenced object is located within the local server, then
-    # the object itself is returned.  Otherwise, a new DRbObject is
-    # created to act as a stub for the remote referenced object.
-    def self._load(s)
-      uri, ref = Marshal.load(s)
-      
-      if DRb.here?(uri)
-	obj = DRb.to_obj(ref)
-        if ((! obj.tainted?) && Thread.current[:drb_untaint])
-          Thread.current[:drb_untaint].push(obj)
-        end
-        return obj
-      end
-
-      self.new_with(uri, ref)
-    end
-
-    def self.new_with(uri, ref)
-      it = self.allocate
-      it.instance_variable_set('@uri', uri)
-      it.instance_variable_set('@ref', ref)
-      it
-    end
-
-    # Create a new DRbObject from a URI alone.
-    def self.new_with_uri(uri)
-      self.new(nil, uri)
-    end
-
-    # Marshall this object.
-    #
-    # The URI and ref of the object are marshalled.
-    def _dump(lv)
-      Marshal.dump([@uri, @ref])
-    end
-
-    # Create a new remote object stub.
-    #
-    # +obj+ is the (local) object we want to create a stub for.  Normally
-    # this is +nil+.  +uri+ is the URI of the remote object that this
-    # will be a stub for.
-    def initialize(obj, uri=nil)
-      @uri = nil
-      @ref = nil
-      if obj.nil?
-	return if uri.nil?
-	@uri, option = DRbProtocol.uri_option(uri, DRb.config)
-	@ref = DRbURIOption.new(option) unless option.nil?
-      else
-	@uri = uri ? uri : (DRb.uri rescue nil)
-	@ref = obj ? DRb.to_id(obj) : nil
-      end
-    end
-
-    # Get the URI of the remote object.
-    def __drburi 
-      @uri
-    end
-
-    # Get the reference of the object, if local.
-    def __drbref
-      @ref
-    end
-
-    undef :to_s
-    undef :to_a if respond_to?(:to_a)
-
-    def respond_to?(msg_id, priv=false)
-      case msg_id
-      when :_dump
-        true
-      when :marshal_dump
-        false
-      else
-        method_missing(:respond_to?, msg_id, priv)
-      end
-    end
-
-    # Routes method calls to the referenced object.
-    def method_missing(msg_id, *a, &b)
-      if DRb.here?(@uri)
-	obj = DRb.to_obj(@ref)
-	DRb.current_server.check_insecure_method(obj, msg_id)
-	return obj.__send__(msg_id, *a, &b) 
-      end
-
-      succ, result = self.class.with_friend(@uri) do
-        DRbConn.open(@uri) do |conn|
-          conn.send_message(self, msg_id, a, b)
-        end
-      end
-
-      if succ
-        return result
-      elsif DRbUnknown === result
-        raise result
-      else
-        bt = self.class.prepare_backtrace(@uri, result)
-	result.set_backtrace(bt + caller)
-        raise result
-      end
-    end
-
-    def self.with_friend(uri)
-      friend = DRb.fetch_server(uri)
-      return yield() unless friend
-      
-      save = Thread.current['DRb']
-      Thread.current['DRb'] = { 'server' => friend }
-      return yield
-    ensure
-      Thread.current['DRb'] = save if friend
-    end
-
-    def self.prepare_backtrace(uri, result)
-      prefix = "(#{uri}) "
-      bt = []
-      result.backtrace.each do |x|
-        break if /`__send__'$/ =~ x 
-        if /^\(druby:\/\// =~ x
-          bt.push(x)
-        else
-          bt.push(prefix + x)
-        end
-      end
-      bt
-    end
-
-    def pretty_print(q)   # :nodoc:
-      q.pp_object(self)
-    end
-
-    def pretty_print_cycle(q)   # :nodoc:
-      q.object_address_group(self) {
-        q.breakable
-        q.text '...'
-      }
-    end
-  end
-
-  # Class handling the connection between a DRbObject and the
-  # server the real object lives on.
-  #
-  # This class maintains a pool of connections, to reduce the
-  # overhead of starting and closing down connections for each
-  # method call.
-  #
-  # This class is used internally by DRbObject.  The user does
-  # not normally need to deal with it directly.
-  class DRbConn
-    POOL_SIZE = 16  # :nodoc:
-    @mutex = Mutex.new
-    @pool = []
-
-    def self.open(remote_uri)  # :nodoc:
-      begin
-	conn = nil
-
-	@mutex.synchronize do
-	  #FIXME
-	  new_pool = []
-	  @pool.each do |c|
-	    if conn.nil? and c.uri == remote_uri
-	      conn = c if c.alive?
-	    else
-	      new_pool.push c
-	    end
-	  end
-	  @pool = new_pool
-	end
-
-	conn = self.new(remote_uri) unless conn
-	succ, result = yield(conn)
-	return succ, result
-
-      ensure
-	if conn
-	  if succ
-	    @mutex.synchronize do
-	      @pool.unshift(conn)
-	      @pool.pop.close while @pool.size > POOL_SIZE
-	    end
-	  else
-	    conn.close
-	  end
-	end
-      end
-    end
-
-    def initialize(remote_uri)  # :nodoc:
-      @uri = remote_uri
-      @protocol = DRbProtocol.open(remote_uri, DRb.config)
-    end
-    attr_reader :uri  # :nodoc:
-
-    def send_message(ref, msg_id, arg, block)  # :nodoc:
-      @protocol.send_request(ref, msg_id, arg, block)
-      @protocol.recv_reply
-    end
-
-    def close  # :nodoc:
-      @protocol.close
-      @protocol = nil
-    end
-
-    def alive?  # :nodoc:
-      @protocol.alive?
-    end
-  end
-
-  # Class representing a drb server instance.
-  #
-  # A DRbServer must be running in the local process before any incoming
-  # dRuby calls can be accepted, or any local objects can be passed as
-  # dRuby references to remote processes, even if those local objects are
-  # never actually called remotely. You do not need to start a DRbServer
-  # in the local process if you are only making outgoing dRuby calls
-  # passing marshalled parameters.
-  #
-  # Unless multiple servers are being used, the local DRbServer is normally
-  # started by calling DRb.start_service.
-  class DRbServer
-    @@acl = nil
-    @@idconv = DRbIdConv.new
-    @@secondary_server = nil
-    @@argc_limit = 256
-    @@load_limit = 256 * 102400
-    @@verbose = false
-    @@safe_level = 0
-
-    # Set the default value for the :argc_limit option.
-    #
-    # See #new().  The initial default value is 256.
-    def self.default_argc_limit(argc)
-      @@argc_limit = argc
-    end
-
-    # Set the default value for the :load_limit option.
-    #
-    # See #new().  The initial default value is 25 MB.
-    def self.default_load_limit(sz)
-      @@load_limit = sz
-    end
-
-    # Set the default value for the :acl option.
-    #
-    # See #new().  The initial default value is nil.
-    def self.default_acl(acl)
-      @@acl = acl
-    end
-
-    # Set the default value for the :id_conv option.
-    #
-    # See #new().  The initial default value is a DRbIdConv instance.
-    def self.default_id_conv(idconv)
-      @@idconv = idconv
-    end
-
-    def self.default_safe_level(level)
-      @@safe_level = level
-    end
-
-    # Set the default value of the :verbose option.
-    #
-    # See #new().  The initial default value is false.
-    def self.verbose=(on)
-      @@verbose = on
-    end
-    
-    # Get the default value of the :verbose option.
-    def self.verbose
-      @@verbose
-    end
-
-    def self.make_config(hash={})  # :nodoc:
-      default_config = { 
-	:idconv => @@idconv,
-	:verbose => @@verbose,
-	:tcp_acl => @@acl,
-	:load_limit => @@load_limit,
-	:argc_limit => @@argc_limit,
-        :safe_level => @@safe_level
-      }
-      default_config.update(hash)
-    end
-
-    # Create a new DRbServer instance.
-    #
-    # +uri+ is the URI to bind to.  This is normally of the form
-    # 'druby://<hostname>:<port>' where <hostname> is a hostname of
-    # the local machine.  If nil, then the system's default hostname
-    # will be bound to, on a port selected by the system; these value
-    # can be retrieved from the +uri+ attribute.  'druby:' specifies
-    # the default dRuby transport protocol: another protocol, such
-    # as 'drbunix:', can be specified instead.
-    #
-    # +front+ is the front object for the server, that is, the object
-    # to which remote method calls on the server will be passed.  If
-    # nil, then the server will not accept remote method calls.
-    #
-    # If +config_or_acl+ is a hash, it is the configuration to
-    # use for this server.  The following options are recognised:
-    #
-    # :idconv :: an id-to-object conversion object.  This defaults
-    #            to an instance of the class DRb::DRbIdConv.
-    # :verbose :: if true, all unsuccessful remote calls on objects
-    #             in the server will be logged to $stdout. false
-    #             by default.
-    # :tcp_acl :: the access control list for this server.  See
-    #             the ACL class from the main dRuby distribution.
-    # :load_limit :: the maximum message size in bytes accepted by
-    #                the server.  Defaults to 25 MB (26214400).
-    # :argc_limit :: the maximum number of arguments to a remote
-    #                method accepted by the server.  Defaults to
-    #                256.
-    #
-    # The default values of these options can be modified on
-    # a class-wide basis by the class methods #default_argc_limit,
-    # #default_load_limit, #default_acl, #default_id_conv,
-    # and #verbose=
-    #
-    # If +config_or_acl+ is not a hash, but is not nil, it is
-    # assumed to be the access control list for this server.
-    # See the :tcp_acl option for more details.
-    #
-    # If no other server is currently set as the primary server,
-    # this will become the primary server.
-    #
-    # The server will immediately start running in its own thread.
-    def initialize(uri=nil, front=nil, config_or_acl=nil)
-      if Hash === config_or_acl
-	config = config_or_acl.dup
-      else
-	acl = config_or_acl || @@acl
-	config = {
-	  :tcp_acl => acl
-	}
-      end
-
-      @config = self.class.make_config(config)
-
-      @protocol = DRbProtocol.open_server(uri, @config)
-      @uri = @protocol.uri
-
-      @front = front
-      @idconv = @config[:idconv]
-      @safe_level = @config[:safe_level]
-
-      @grp = ThreadGroup.new
-      @thread = run
-
-      DRb.regist_server(self)
-    end
-
-    # The URI of this DRbServer.
-    attr_reader :uri
-
-    # The main thread of this DRbServer.
-    #
-    # This is the thread that listens for and accepts connections
-    # from clients, not that handles each client's request-response
-    # session.
-    attr_reader :thread
-
-    # The front object of the DRbServer.
-    # 
-    # This object receives remote method calls made on the server's
-    # URI alone, with an object id.
-    attr_reader :front
-
-    # The configuration of this DRbServer
-    attr_reader :config
-
-    attr_reader :safe_level
-
-    # Set whether to operate in verbose mode.
-    #
-    # In verbose mode, failed calls are logged to stdout.
-    def verbose=(v); @config[:verbose]=v; end
-
-    # Get whether the server is in verbose mode.
-    #
-    # In verbose mode, failed calls are logged to stdout.
-    def verbose; @config[:verbose]; end
-
-    # Is this server alive?
-    def alive?
-      @thread.alive?
-    end
-
-    # Stop this server.
-    def stop_service
-      DRb.remove_server(self)
-      if  Thread.current['DRb'] && Thread.current['DRb']['server'] == self
-        Thread.current['DRb']['stop_service'] = true
-      else
-        @thread.kill
-      end
-    end
-
-    # Convert a dRuby reference to the local object it refers to.
-    def to_obj(ref)
-      return front if ref.nil?
-      return front[ref.to_s] if DRbURIOption === ref
-      @idconv.to_obj(ref)
-    end
-
-    # Convert a local object to a dRuby reference.
-    def to_id(obj)
-      return nil if obj.__id__ == front.__id__
-      @idconv.to_id(obj)
-    end
-
-    private
-    def kill_sub_thread
-      Thread.new do
-	grp = ThreadGroup.new
-	grp.add(Thread.current)
-	list = @grp.list
-	while list.size > 0
-	  list.each do |th|
-	    th.kill if th.alive?
-	  end
-	  list = @grp.list
-	end
-      end
-    end
-
-    def run
-      Thread.start do
-	begin
-	  while true
-	    main_loop
-	  end
-	ensure
-	  @protocol.close if @protocol
-	  kill_sub_thread
-	end
-      end
-    end
-
-    # List of insecure methods.
-    #
-    # These methods are not callable via dRuby.
-    INSECURE_METHOD = [
-      :__send__
-    ]
-
-    # Has a method been included in the list of insecure methods?
-    def insecure_method?(msg_id)
-      INSECURE_METHOD.include?(msg_id)
-    end
-
-    # Coerce an object to a string, providing our own representation if
-    # to_s is not defined for the object.
-    def any_to_s(obj)
-      obj.to_s + ":#{obj.class}"
-    rescue
-      sprintf("#<%s:0x%lx>", obj.class, obj.__id__)      
-    end
-
-    # Check that a method is callable via dRuby.
-    #
-    # +obj+ is the object we want to invoke the method on. +msg_id+ is the
-    # method name, as a Symbol.
-    #
-    # If the method is an insecure method (see #insecure_method?) a 
-    # SecurityError is thrown.  If the method is private or undefined,
-    # a NameError is thrown.
-    def check_insecure_method(obj, msg_id)
-      return true if Proc === obj && msg_id == :__drb_yield
-      raise(ArgumentError, "#{any_to_s(msg_id)} is not a symbol") unless Symbol == msg_id.class
-      raise(SecurityError, "insecure method `#{msg_id}'") if insecure_method?(msg_id)
-      
-      if obj.private_methods.include?(msg_id.to_s)
-	desc = any_to_s(obj)
-        raise NoMethodError, "private method `#{msg_id}' called for #{desc}"
-      elsif obj.protected_methods.include?(msg_id.to_s)
-	desc = any_to_s(obj)
-        raise NoMethodError, "protected method `#{msg_id}' called for #{desc}"
-      else
-        true
-      end
-    end
-    public :check_insecure_method
-    
-    class InvokeMethod  # :nodoc:
-      def initialize(drb_server, client)
-	@drb_server = drb_server
-        @safe_level = drb_server.safe_level
-	@client = client
-      end
-
-      def perform
-	@result = nil
-	@succ = false
-	setup_message
-
-        if $SAFE < @safe_level
-          info = Thread.current['DRb']
-          if @block
-            @result = Thread.new {
-              Thread.current['DRb'] = info
-              $SAFE = @safe_level
-              perform_with_block
-            }.value
-          else
-            @result = Thread.new { 
-              Thread.current['DRb'] = info
-              $SAFE = @safe_level
-              perform_without_block
-            }.value
-          end
-        else
-          if @block
-            @result = perform_with_block
-          else
-            @result = perform_without_block
-          end
-        end
-	@succ = true
-	if @msg_id == :to_ary && @result.class == Array
-	  @result = DRbArray.new(@result) 
-	end
-	return @succ, @result
-      rescue StandardError, ScriptError, Interrupt
-	@result = $!
-	return @succ, @result
-      end
-
-      private
-      def init_with_client
-	obj, msg, argv, block = @client.recv_request
-        @obj = obj
-        @msg_id = msg.intern
-        @argv = argv
-        @block = block
-      end
-      
-      def check_insecure_method
-        @drb_server.check_insecure_method(@obj, @msg_id)
-      end
-
-      def setup_message
-	init_with_client
-	check_insecure_method
-      end
-      
-      def perform_without_block
-	if Proc === @obj && @msg_id == :__drb_yield
-          if @argv.size == 1
-	    ary = @argv
-	  else
-	    ary = [@argv]
-	  end
-	  ary.collect(&@obj)[0]
-	else
-	  @obj.__send__(@msg_id, *@argv)
-	end
-      end
-
-    end
-
-    if RUBY_VERSION >= '1.8'
-      require 'drb/invokemethod'
-      class InvokeMethod
-        include InvokeMethod18Mixin
-      end
-    else
-      require 'drb/invokemethod16'
-      class InvokeMethod
-        include InvokeMethod16Mixin
-      end
-    end
-
-    # The main loop performed by a DRbServer's internal thread.
-    #
-    # Accepts a connection from a client, and starts up its own
-    # thread to handle it.  This thread loops, receiving requests
-    # from the client, invoking them on a local object, and
-    # returning responses, until the client closes the connection
-    # or a local method call fails.
-    def main_loop
-      Thread.start(@protocol.accept) do |client|
-	@grp.add Thread.current
-	Thread.current['DRb'] = { 'client' => client ,
-	                          'server' => self }
-	loop do
-	  begin
-	    succ = false
-	    invoke_method = InvokeMethod.new(self, client)
-	    succ, result = invoke_method.perform
-	    if !succ && verbose
-	      p result
-	      result.backtrace.each do |x|
-		puts x
-	      end
-	    end
-	    client.send_reply(succ, result) rescue nil
-	  ensure
-            client.close unless succ
-            if Thread.current['DRb']['stop_service']
-              Thread.new { stop_service }
-            end
-            break unless succ
-	  end
-	end
-      end
-    end
-  end
-
-  @primary_server = nil
-
-  # Start a dRuby server locally.
-  #
-  # The new dRuby server will become the primary server, even
-  # if another server is currently the primary server.
-  #
-  # +uri+ is the URI for the server to bind to.  If nil,
-  # the server will bind to random port on the default local host
-  # name and use the default dRuby protocol.
-  #
-  # +front+ is the server's front object.  This may be nil.
-  #
-  # +config+ is the configuration for the new server.  This may
-  # be nil.
-  #
-  # See DRbServer::new.
-  def start_service(uri=nil, front=nil, config=nil)
-    @primary_server = DRbServer.new(uri, front, config)
-  end
-  module_function :start_service
-
-  # The primary local dRuby server.
-  #
-  # This is the server created by the #start_service call.  
-  attr_accessor :primary_server
-  module_function :primary_server=, :primary_server
-
-  # Get the 'current' server.
-  #
-  # In the context of execution taking place within the main
-  # thread of a dRuby server (typically, as a result of a remote
-  # call on the server or one of its objects), the current
-  # server is that server.  Otherwise, the current server is
-  # the primary server.
-  #
-  # If the above rule fails to find a server, a DRbServerNotFound
-  # error is raised.
-  def current_server
-    drb = Thread.current['DRb'] 
-    server = (drb && drb['server']) ? drb['server'] : @primary_server 
-    raise DRbServerNotFound unless server
-    return server
-  end
-  module_function :current_server
-
-  # Stop the local dRuby server.
-  #
-  # This operates on the primary server.  If there is no primary
-  # server currently running, it is a noop.
-  def stop_service
-    @primary_server.stop_service if @primary_server
-    @primary_server = nil
-  end
-  module_function :stop_service
-
-  # Get the URI defining the local dRuby space.
-  #
-  # This is the URI of the current server.  See #current_server.
-  def uri
-    current_server.uri
-  end
-  module_function :uri
-
-  # Is +uri+ the URI for the current local server?
-  def here?(uri)
-    (current_server.uri rescue nil) == uri
-  end
-  module_function :here?
-
-  # Get the configuration of the current server.
-  #
-  # If there is no current server, this returns the default configuration.
-  # See #current_server and DRbServer::make_config.
-  def config
-    current_server.config
-  rescue
-    DRbServer.make_config
-  end
-  module_function :config
-  
-  # Get the front object of the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def front
-    current_server.front
-  end
-  module_function :front
-
-  # Convert a reference into an object using the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def to_obj(ref)
-    current_server.to_obj(ref)
-  end
-
-  # Get a reference id for an object using the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def to_id(obj)
-    current_server.to_id(obj)
-  end
-  module_function :to_id
-  module_function :to_obj
-
-  # Get the thread of the primary server.
-  #
-  # This returns nil if there is no primary server.  See #primary_server.
-  def thread
-    @primary_server ? @primary_server.thread : nil
-  end
-  module_function :thread
-
-  # Set the default id conv object.
-  #
-  # See DRbServer#default_id_conv.
-  def install_id_conv(idconv)
-    DRbServer.default_id_conv(idconv)
-  end
-  module_function :install_id_conv
-
-  # Set the default acl.
-  #
-  # See DRb::DRbServer.default_acl.
-  def install_acl(acl)
-    DRbServer.default_acl(acl)
-  end
-  module_function :install_acl
-
-  @server = {}
-  def regist_server(server)
-    @server[server.uri] = server
-    Thread.exclusive do
-      @primary_server = server unless @primary_server
-    end
-  end
-  module_function :regist_server
-
-  def remove_server(server)
-    @server.delete(server.uri)
-  end
-  module_function :remove_server
-  
-  def fetch_server(uri)
-    @server[uri]
-  end
-  module_function :fetch_server
-end
-
-DRbObject = DRb::DRbObject
-DRbUndumped = DRb::DRbUndumped
-DRbIdConv = DRb::DRbIdConv
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/eq.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/eq.rb
deleted file mode 100644
index e24512d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/eq.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'drb/drb'
-
-module DRb
-  class DRbObject
-    def ==(other)
-      return false unless DRbObject === other
-     (@ref == other.__drbref) && (@uri == other.__drburi)
-    end
-
-    def hash
-      [@uri, @ref].hash
-    end
-
-    alias eql? ==
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extserv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extserv.rb
deleted file mode 100644
index 7da8130..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extserv.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-=begin
- external service
- 	Copyright (c) 2000,2002 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-module DRb
-  class ExtServ
-    include DRbUndumped
-
-    def initialize(there, name, server=nil)
-      @server = server || DRb::primary_server
-      @name = name
-      ro = DRbObject.new(nil, there)
-      @invoker = ro.regist(name, DRbObject.new(self, @server.uri))
-    end
-    attr_reader :server
-
-    def front
-      DRbObject.new(nil, @server.uri)
-    end
-
-    def stop_service
-      @invoker.unregist(@name)
-      server = @server
-      @server = nil
-      server.stop_service
-      true
-    end
-
-    def alive?
-      @server ? @server.alive? : false
-    end
-  end
-end
-
-if __FILE__ == $0
-  class Foo
-    include DRbUndumped
-
-    def initialize(str)
-      @str = str
-    end
-
-    def hello(it)
-      "#{it}: #{self}"
-    end
-
-    def to_s
-      @str
-    end
-  end
-
-  cmd = ARGV.shift
-  case cmd
-  when 'itest1', 'itest2'
-    front = Foo.new(cmd)
-    manager = DRb::DRbServer.new(nil, front)
-    es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, manager)
-    es.server.thread.join
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extservm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extservm.rb
deleted file mode 100644
index 7066f84..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/extservm.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-=begin
- external service manager
- 	Copyright (c) 2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'thread'
-
-module DRb
-  class ExtServManager
-    include DRbUndumped
-
-    @@command = {}
-
-    def self.command
-      @@command
-    end
-
-    def self.command=(cmd)
-      @@command = cmd
-    end
-      
-    def initialize
-      @servers = {}
-      @waiting = []
-      @queue = Queue.new
-      @thread = invoke_thread
-      @uri = nil
-    end
-    attr_accessor :uri
-
-    def service(name)
-      while true
-	server = nil
-	Thread.exclusive do
-	  server = @servers[name] if @servers[name]
-	end
-	return server if server && server.alive?
-	invoke_service(name)
-      end
-    end
-
-    def regist(name, ro)
-      ary = nil
-      Thread.exclusive do
-	@servers[name] = ro
-	ary = @waiting
-	@waiting = []
-      end
-      ary.each do |th|
-	begin
-	  th.run
-	rescue ThreadError
-	end
-      end
-      self
-    end
-    
-    def unregist(name)
-      Thread.exclusive do
-	@servers.delete(name)
-      end
-    end
-
-    private
-    def invoke_thread
-      Thread.new do
-	while true
-	  name = @queue.pop
-	  invoke_service_command(name, @@command[name])
-	end
-      end
-    end
-
-    def invoke_service(name)
-      Thread.critical = true
-      @waiting.push Thread.current
-      @queue.push name
-      Thread.stop
-    end
-
-    def invoke_service_command(name, command)
-      raise "invalid command. name: #{name}" unless command
-      Thread.exclusive do
-	return if @servers.include?(name)
-	@servers[name] = false
-      end
-      uri = @uri || DRb.uri
-      if RUBY_PLATFORM =~ /mswin32/ && /NT/ =~ ENV["OS"]
-        system(%Q'cmd /c start "ruby" /b #{command} #{uri} #{name}')
-      else
-	system("#{command} #{uri} #{name} &")
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/gw.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/gw.rb
deleted file mode 100644
index b7a5f53..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/gw.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'drb/drb'
-require 'monitor'
-
-module DRb
-  class GWIdConv < DRbIdConv
-    def to_obj(ref)
-      if Array === ref && ref[0] == :DRbObject
-        return DRbObject.new_with(ref[1], ref[2])
-      end
-      super(ref)
-    end
-  end
-
-  class GW
-    include MonitorMixin
-    def initialize
-      super()
-      @hash = {}
-    end
-
-    def [](key)
-      synchronize do
-        @hash[key]
-      end
-    end
-
-    def []=(key, v)
-      synchronize do
-        @hash[key] = v
-      end
-    end
-  end
-
-  class DRbObject
-    def self._load(s)
-      uri, ref = Marshal.load(s)
-      if DRb.uri == uri
-        return ref ? DRb.to_obj(ref) : DRb.front
-      end
-
-      self.new_with(DRb.uri, [:DRbObject, uri, ref])
-    end
-
-    def _dump(lv)
-      if DRb.uri == @uri
-        if Array === @ref && @ref[0] == :DRbObject
-          Marshal.dump([@ref[1], @ref[2]])
-        else
-          Marshal.dump([@uri, @ref]) # ??
-        end
-      else
-        Marshal.dump([DRb.uri, [:DRbObject, @uri, @ref]])
-      end
-    end
-  end
-end
-
-=begin
-DRb.install_id_conv(DRb::GWIdConv.new)
-
-front = DRb::GW.new
-
-s1 = DRb::DRbServer.new('drbunix:/tmp/gw_b_a', front)
-s2 = DRb::DRbServer.new('drbunix:/tmp/gw_b_c', front)
-
-s1.thread.join
-s2.thread.join
-=end
-
-=begin
-# foo.rb
-
-require 'drb/drb'
-
-class Foo
-  include DRbUndumped
-  def initialize(name, peer=nil)
-    @name = name
-    @peer = peer
-  end
-
-  def ping(obj)
-    puts "#{@name}: ping: #{obj.inspect}"
-    @peer.ping(self) if @peer
-  end
-end
-=end
-
-=begin
-# gw_a.rb
-require 'drb/unix'
-require 'foo'
-
-obj = Foo.new('a')
-DRb.start_service("drbunix:/tmp/gw_a", obj)
-
-robj = DRbObject.new_with_uri('drbunix:/tmp/gw_b_a')
-robj[:a] = obj
-
-DRb.thread.join
-=end
-
-=begin
-# gw_c.rb
-require 'drb/unix'
-require 'foo'
-
-foo = Foo.new('c', nil)
-
-DRb.start_service("drbunix:/tmp/gw_c", nil)
-
-robj = DRbObject.new_with_uri("drbunix:/tmp/gw_b_c")
-
-puts "c->b"
-a = robj[:a]
-sleep 2
-
-a.ping(foo)
-
-DRb.thread.join
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/invokemethod.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/invokemethod.rb
deleted file mode 100644
index 412b2ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/invokemethod.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# for ruby-1.8.0
-
-module DRb
-  class DRbServer
-    module InvokeMethod18Mixin
-      def block_yield(x)
-	if x.size == 1 && x[0].class == Array
-	  x[0] = DRbArray.new(x[0])
-	end
-        block_value = @block.call(*x)
-      end
-      
-      def perform_with_block
-        @obj.__send__(@msg_id, *@argv) do |*x|
-          jump_error = nil
-          begin
-            block_value = block_yield(x)
-          rescue LocalJumpError
-            jump_error = $!
-          end
-          if jump_error
-            case jump_error.reason
-            when :retry
-              retry
-            when :break
-              break(jump_error.exit_value)
-            else
-              raise jump_error
-            end
-          end
-          block_value
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/observer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/observer.rb
deleted file mode 100644
index e7f1668..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/observer.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'observer'
-
-module DRb
-  module DRbObservable
-    include Observable
-
-    def notify_observers(*arg)
-      if defined? @observer_state and @observer_state
-	if defined? @observer_peers
-	  for i in @observer_peers.dup
-	    begin
-	      i.update(*arg)
-	    rescue
-	      delete_observer(i)
-	    end
-	  end
-	end
-	@observer_state = false
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/ssl.rb
deleted file mode 100644
index 58d6b7d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/ssl.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-require 'socket'
-require 'openssl'
-require 'drb/drb'
-require 'singleton'
-
-module DRb
-
-  class DRbSSLSocket < DRbTCPSocket
-
-    class SSLConfig
-
-      DEFAULT = {
-	:SSLCertificate       => nil,
-	:SSLPrivateKey        => nil,
-	:SSLClientCA          => nil,
-	:SSLCACertificatePath => nil,
-	:SSLCACertificateFile => nil,
-	:SSLVerifyMode        => ::OpenSSL::SSL::VERIFY_NONE, 
-	:SSLVerifyDepth       => nil,
-	:SSLVerifyCallback    => nil,   # custom verification
-        :SSLCertificateStore  => nil,
-	# Must specify if you use auto generated certificate.
-	:SSLCertName          => nil,   # e.g. [["CN","fqdn.example.com"]]
-	:SSLCertComment       => "Generated by Ruby/OpenSSL"
-      }
-
-      def initialize(config)
-	@config  = config
-        @cert    = config[:SSLCertificate]
-        @pkey    = config[:SSLPrivateKey]
-        @ssl_ctx = nil
-      end
-
-      def [](key); 
-	@config[key] || DEFAULT[key]
-      end
-
-      def connect(tcp)
-	ssl = ::OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
-	ssl.sync = true
-	ssl.connect
-	ssl
-      end
-      
-      def accept(tcp)
-	ssl = OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
-	ssl.sync = true
-	ssl.accept
-	ssl
-      end
-      
-      def setup_certificate
-        if @cert && @pkey
-          return
-        end
-
-	rsa = OpenSSL::PKey::RSA.new(512){|p, n|
-	  next unless self[:verbose]
-	  case p
-	  when 0; $stderr.putc "."  # BN_generate_prime
-	  when 1; $stderr.putc "+"  # BN_generate_prime
-	  when 2; $stderr.putc "*"  # searching good prime,
-	                            # n = #of try,
-                          	    # but also data from BN_generate_prime
-	  when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
-                         	    # but also data from BN_generate_prime
-	  else;   $stderr.putc "*"  # BN_generate_prime
-	  end
-	}
-
-	cert = OpenSSL::X509::Certificate.new
-	cert.version = 3
-	cert.serial = 0
-	name = OpenSSL::X509::Name.new(self[:SSLCertName])
-	cert.subject = name
-	cert.issuer = name
-	cert.not_before = Time.now
-	cert.not_after = Time.now + (365*24*60*60)
-	cert.public_key = rsa.public_key
-	
-	ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
-	cert.extensions = [
-	  ef.create_extension("basicConstraints","CA:FALSE"),
-	  ef.create_extension("subjectKeyIdentifier", "hash") ]
-	ef.issuer_certificate = cert
-	cert.add_extension(ef.create_extension("authorityKeyIdentifier",
-					       "keyid:always,issuer:always"))
-	if comment = self[:SSLCertComment]
-	  cert.add_extension(ef.create_extension("nsComment", comment))
-	end
-	cert.sign(rsa, OpenSSL::Digest::SHA1.new)
-	
-	@cert = cert
-        @pkey = rsa
-      end
-
-      def setup_ssl_context
-        ctx = ::OpenSSL::SSL::SSLContext.new
-        ctx.cert            = @cert
-        ctx.key             = @pkey
-	ctx.client_ca       = self[:SSLClientCA]
-	ctx.ca_path         = self[:SSLCACertificatePath]
-	ctx.ca_file         = self[:SSLCACertificateFile]
-	ctx.verify_mode     = self[:SSLVerifyMode]
-	ctx.verify_depth    = self[:SSLVerifyDepth]
-	ctx.verify_callback = self[:SSLVerifyCallback]
-        ctx.cert_store      = self[:SSLCertificateStore]
-        @ssl_ctx = ctx
-      end
-    end
-
-    def self.parse_uri(uri)
-      if uri =~ /^drbssl:\/\/(.*?):(\d+)(\?(.*))?$/
-	host = $1
-	port = $2.to_i
-	option = $4
-	[host, port, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^drbssl:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    def self.open(uri, config)
-      host, port, option = parse_uri(uri)
-      host.untaint
-      port.untaint
-      soc = TCPSocket.open(host, port)
-      ssl_conf = SSLConfig::new(config)
-      ssl_conf.setup_ssl_context
-      ssl = ssl_conf.connect(soc)
-      self.new(uri, ssl, ssl_conf, true)
-    end
-
-    def self.open_server(uri, config)
-      uri = 'drbssl://:0' unless uri
-      host, port, opt = parse_uri(uri)
-      if host.size == 0
-        host = getservername
-        soc = open_server_inaddr_any(host, port)
-      else
-	soc = TCPServer.open(host, port)
-      end
-      port = soc.addr[1] if port == 0
-      @uri = "drbssl://#{host}:#{port}"
-      
-      ssl_conf = SSLConfig.new(config)
-      ssl_conf.setup_certificate
-      ssl_conf.setup_ssl_context
-      self.new(@uri, soc, ssl_conf, false)
-    end
-
-    def self.uri_option(uri, config)
-      host, port, option = parse_uri(uri)
-      return "drbssl://#{host}:#{port}", option
-    end
-
-    def initialize(uri, soc, config, is_established)
-      @ssl = is_established ? soc : nil
-      super(uri, soc.to_io, config)
-    end
-    
-    def stream; @ssl; end
-
-    def close
-      if @ssl
-	@ssl.close
-	@ssl = nil
-      end
-      super
-    end
-      
-    def accept
-      begin
-      while true
-	soc = @socket.accept
-	break if (@acl ? @acl.allow_socket?(soc) : true) 
-	soc.close
-      end
-      ssl = @config.accept(soc)
-      self.class.new(uri, ssl, @config, true)
-      rescue OpenSSL::SSL::SSLError
-	warn("#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})") if @config[:verbose]
-	retry
-      end
-    end
-  end
-  
-  DRbProtocol.add_protocol(DRbSSLSocket)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/timeridconv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/timeridconv.rb
deleted file mode 100644
index bb2c48d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/timeridconv.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'drb/drb'
-require 'monitor'
-
-module DRb
-  class TimerIdConv < DRbIdConv
-    class TimerHolder2
-      include MonitorMixin
-
-      class InvalidIndexError < RuntimeError; end
-
-      def initialize(timeout=600)
-	super()
-	@sentinel = Object.new
-	@gc = {}
-	@curr = {}
-	@renew = {}
-	@timeout = timeout
-	@keeper = keeper
-      end
-
-      def add(obj)
-	synchronize do 
-	  key = obj.__id__
-	  @curr[key] = obj
-	  return key
-	end
-      end
-
-      def fetch(key, dv=@sentinel)
-	synchronize do 
-	  obj = peek(key)
-	  if obj == @sentinel
-	    return dv unless dv == @sentinel
-	    raise InvalidIndexError
-	  end
-	  @renew[key] = obj # KeepIt
-	  return obj
-	end
-      end
-
-      def include?(key)
-	synchronize do 
-	  obj = peek(key)
-	  return false if obj == @sentinel
-	  true
-	end
-      end
-
-      def peek(key)
-	synchronize do 
-	  return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel)))
-	end
-      end
-
-      private
-      def alternate
-	synchronize do
-	  @gc = @curr       # GCed
-	  @curr = @renew
-	  @renew = {}
-	end
-      end
-
-      def keeper
-	Thread.new do
-	  loop do
-	    size = alternate
-	    sleep(@timeout)
-	  end
-	end
-      end
-    end
-
-    def initialize(timeout=600)
-      @holder = TimerHolder2.new(timeout)
-    end
-
-    def to_obj(ref)
-      return super if ref.nil?
-      @holder.fetch(ref)
-    rescue TimerHolder2::InvalidIndexError
-      raise "invalid reference"
-    end
-
-    def to_id(obj)
-      return @holder.add(obj)
-    end
-  end
-end
-
-# DRb.install_id_conv(TimerIdConv.new)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/unix.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/unix.rb
deleted file mode 100644
index 57feed8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/drb/unix.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-require 'socket'
-require 'drb/drb'
-require 'tmpdir'
-
-raise(LoadError, "UNIXServer is required") unless defined?(UNIXServer)
-
-module DRb
-
-  class DRbUNIXSocket < DRbTCPSocket
-    def self.parse_uri(uri)
-      if /^drbunix:(.*?)(\?(.*))?$/ =~ uri 
-	filename = $1
-	option = $3
-	[filename, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^drbunix:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    def self.open(uri, config)
-      filename, option = parse_uri(uri)
-      filename.untaint
-      soc = UNIXSocket.open(filename)
-      self.new(uri, soc, config)
-    end
-
-    def self.open_server(uri, config)
-      filename, option = parse_uri(uri)
-      if filename.size == 0
-	soc = temp_server
-        filename = soc.path
-	uri = 'drbunix:' + soc.path
-      else
-	soc = UNIXServer.open(filename)
-      end
-      owner = config[:UNIXFileOwner]
-      group = config[:UNIXFileGroup]
-      if owner || group
-        require 'etc'
-        owner = Etc.getpwnam( owner ).uid  if owner
-        group = Etc.getgrnam( group ).gid  if group
-        File.chown owner, group, filename
-      end
-      mode = config[:UNIXFileMode]
-      File.chmod(mode, filename) if mode
-
-      self.new(uri, soc, config, true)
-    end
-
-    def self.uri_option(uri, config)
-      filename, option = parse_uri(uri)
-      return "drbunix:#{filename}", option
-    end
-
-    def initialize(uri, soc, config={}, server_mode = false)
-      super(uri, soc, config)
-      set_sockopt(@socket)
-      @server_mode = server_mode
-      @acl = nil
-    end
-    
-    # import from tempfile.rb
-    Max_try = 10
-    private
-    def self.temp_server
-      tmpdir = Dir::tmpdir
-      n = 0
-      while true
-	begin
-	  tmpname = sprintf('%s/druby%d.%d', tmpdir, $$, n)
-	  lock = tmpname + '.lock'
-	  unless File.exist?(tmpname) or File.exist?(lock)
-	    Dir.mkdir(lock)
-	    break
-	  end
-	rescue
-	  raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
-	  #sleep(1)
-	end
-	n += 1
-      end
-      soc = UNIXServer.new(tmpname)
-      Dir.rmdir(lock)
-      soc
-    end
-
-    public
-    def close
-      return unless @socket
-      path = @socket.path if @server_mode
-      @socket.close
-      File.unlink(path) if @server_mode
-      @socket = nil
-    end
-
-    def accept
-      s = @socket.accept
-      self.class.new(nil, s, @config)
-    end
-
-    def set_sockopt(soc)
-      soc.fcntl(Fcntl::F_SETFL, Fcntl::FD_CLOEXEC) if defined? Fcntl::FD_CLOEXEC
-    end
-  end
-
-  DRbProtocol.add_protocol(DRbUNIXSocket)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/e2mmap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/e2mmap.rb
deleted file mode 100644
index 3e2604a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/e2mmap.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-#   e2mmap.rb - for ruby 1.1
-#   	$Release Version: 2.0$
-#   	$Revision: 1.10 $
-#   	$Date: 1999/02/17 12:33:17 $
-#   	by Keiju ISHITSUKA
-#
-# --
-#   Usage:
-#
-# U1)
-#   class Foo
-#     extend Exception2MessageMapper
-#     def_e2message ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#
-# U2)
-#   module Error
-#     extend Exception2MessageMapper
-#     def_e2meggage ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#   class Foo
-#     include Error
-#     ...
-#   end
-#
-#   foo = Foo.new
-#   foo.Fail ....
-#
-# U3)
-#   module Error
-#     extend Exception2MessageMapper
-#     def_e2message ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#   class Foo
-#     extend Exception2MessageMapper
-#     include Error
-#     ...
-#   end
-#
-#   Foo.Fail NewExceptionClass, arg...
-#   Foo.Fail ExistingExceptionClass, arg...
-#
-#
-fail "Use Ruby 1.1" if VERSION < "1.1"
-
-module Exception2MessageMapper
-  @RCS_ID='-$Id: e2mmap.rb,v 1.10 1999/02/17 12:33:17 keiju Exp keiju $-'
-
-  E2MM = Exception2MessageMapper
-
-  def E2MM.extend_object(cl)
-    super
-    cl.bind(self) unless cl == E2MM
-  end
-  
-  # backward compatibility
-  def E2MM.extend_to(b)
-    c = eval("self", b)
-    c.extend(self)
-  end
-
-  def bind(cl)
-    self.module_eval %[
-      def Raise(err = nil, *rest)
-	Exception2MessageMapper.Raise(self.class, err, *rest)
-      end
-      alias Fail Raise
-
-      def self.included(mod)
-	mod.extend Exception2MessageMapper
-      end
-    ]
-  end
-
-  # Fail(err, *rest)
-  #	err:	exception
-  #	rest:	message arguments
-  #
-  def Raise(err = nil, *rest)
-    E2MM.Raise(self, err, *rest)
-  end
-  alias Fail Raise
-
-  # backward compatibility
-  alias fail! fail
-  def fail(err = nil, *rest)
-    begin 
-      E2MM.Fail(self, err, *rest)
-    rescue E2MM::ErrNotRegisteredException
-      super
-    end
-  end
-  class << self
-    public :fail
-  end
-
-  
-  # def_e2message(c, m)
-  #	    c:  exception
-  #	    m:  message_form
-  #	define exception c with message m.
-  #
-  def def_e2message(c, m)
-    E2MM.def_e2message(self, c, m)
-  end
-  
-  # def_exception(n, m, s)
-  #	    n:  exception_name
-  #	    m:  message_form
-  #	    s:	superclass(default: StandardError)
-  #	define exception named ``c'' with message m.
-  #
-  def def_exception(n, m, s = StandardError)
-    E2MM.def_exception(self, n, m, s)
-  end
-
-  #
-  # Private definitions.
-  #
-  # {[class, exp] => message, ...}
-  @MessageMap = {}
-
-  # E2MM.def_exception(k, e, m)
-  #	    k:  class to define exception under.
-  #	    e:  exception
-  #	    m:  message_form
-  #	define exception c with message m.
-  #
-  def E2MM.def_e2message(k, c, m)
-    E2MM.instance_eval{@MessageMap[[k, c]] = m}
-    c
-  end
-  
-  # E2MM.def_exception(k, n, m, s)
-  #	    k:  class to define exception under.
-  #	    n:  exception_name
-  #	    m:  message_form
-  #	    s:	superclass(default: StandardError)
-  #	define exception named ``c'' with message m.
-  #
-  def E2MM.def_exception(k, n, m, s = StandardError)
-    n = n.id2name if n.kind_of?(Fixnum)
-    e = Class.new(s)
-    E2MM.instance_eval{@MessageMap[[k, e]] = m}
-    k.const_set(n, e)
-  end
-
-  # Fail(klass, err, *rest)
-  #	klass:  class to define exception under.
-  #	err:	exception
-  #	rest:	message arguments
-  #
-  def E2MM.Raise(klass = E2MM, err = nil, *rest)
-    if form = e2mm_message(klass, err)
-      $! = err.new(sprintf(form, *rest))
-      $@ = caller(1) if $@.nil?
-      #p $@
-      #p __FILE__
-      $@.shift if $@[0] =~ /^#{Regexp.quote(__FILE__)}:/
-      raise
-    else
-      E2MM.Fail E2MM, ErrNotRegisteredException, err.inspect
-    end
-  end
-  class <<E2MM
-    alias Fail Raise
-  end
-
-  def E2MM.e2mm_message(klass, exp)
-    for c in klass.ancestors
-      if mes = @MessageMap[[c,exp]]
-	#p mes
-	m = klass.instance_eval('"' + mes + '"')
-	return m
-      end
-    end
-    nil
-  end
-  class <<self
-    alias message e2mm_message
-  end
-
-  E2MM.def_exception(E2MM, 
-		     :ErrNotRegisteredException, 
-		     "not registerd exception(%s)")
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/erb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/erb.rb
deleted file mode 100644
index 5b4c7ed..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/erb.rb
+++ /dev/null
@@ -1,827 +0,0 @@
-# = ERB -- Ruby Templating
-#
-# Author:: Masatoshi SEKI
-# Documentation:: James Edward Gray II and Gavin Sinclair
-#
-# See ERB for primary documentation and ERB::Util for a couple of utility
-# routines.
-#
-# Copyright (c) 1999-2000,2002,2003 Masatoshi SEKI
-#
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-#
-# = ERB -- Ruby Templating
-#
-# == Introduction
-#
-# ERB provides an easy to use but powerful templating system for Ruby.  Using
-# ERB, actual Ruby code can be added to any plain text document for the
-# purposes of generating document information details and/or flow control.
-#
-# A very simple example is this:
-# 
-#   require 'erb'
-#
-#   x = 42
-#   template = ERB.new <<-EOF
-#     The value of x is: <%= x %>
-#   EOF
-#   puts template.result(binding)
-#
-# <em>Prints:</em> The value of x is: 42
-#
-# More complex examples are given below.
-#
-#
-# == Recognized Tags
-#
-# ERB recognizes certain tags in the provided template and converts them based
-# on the rules below:
-#
-#   <% Ruby code -- inline with output %>
-#   <%= Ruby expression -- replace with result %>
-#   <%# comment -- ignored -- useful in testing %>
-#   % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new)
-#   %% replaced with % if first thing on a line and % processing is used
-#   <%% or %%> -- replace with <% or %> respectively
-#
-# All other text is passed through ERB filtering unchanged.
-#
-#
-# == Options
-#
-# There are several settings you can change when you use ERB:
-# * the nature of the tags that are recognized;
-# * the value of <tt>$SAFE</tt> under which the template is run;
-# * the binding used to resolve local variables in the template.
-#
-# See the ERB.new and ERB#result methods for more detail.
-#
-#
-# == Examples
-#
-# === Plain Text
-#
-# ERB is useful for any generic templating situation.  Note that in this example, we use the
-# convenient "% at start of line" tag, and we quote the template literally with
-# <tt>%q{...}</tt> to avoid trouble with the backslash.
-#
-#   require "erb"
-#   
-#   # Create template.
-#   template = %q{
-#     From:  James Edward Gray II <james at grayproductions.net>
-#     To:  <%= to %>
-#     Subject:  Addressing Needs
-#   
-#     <%= to[/\w+/] %>:
-#   
-#     Just wanted to send a quick note assuring that your needs are being
-#     addressed.
-#   
-#     I want you to know that my team will keep working on the issues,
-#     especially:
-#   
-#     <%# ignore numerous minor requests -- focus on priorities %>
-#     % priorities.each do |priority|
-#       * <%= priority %>
-#     % end
-#   
-#     Thanks for your patience.
-#   
-#     James Edward Gray II
-#   }.gsub(/^  /, '')
-#   
-#   message = ERB.new(template, 0, "%<>")
-#   
-#   # Set up template data.
-#   to = "Community Spokesman <spokesman at ruby_community.org>"
-#   priorities = [ "Run Ruby Quiz",
-#                  "Document Modules",
-#                  "Answer Questions on Ruby Talk" ]
-#   
-#   # Produce result.
-#   email = message.result
-#   puts email
-#
-# <i>Generates:</i>
-#
-#   From:  James Edward Gray II <james at grayproductions.net>
-#   To:  Community Spokesman <spokesman at ruby_community.org>
-#   Subject:  Addressing Needs
-#   
-#   Community:
-#   
-#   Just wanted to send a quick note assuring that your needs are being addressed.
-#   
-#   I want you to know that my team will keep working on the issues, especially:
-#   
-#       * Run Ruby Quiz
-#       * Document Modules
-#       * Answer Questions on Ruby Talk
-#   
-#   Thanks for your patience.
-#   
-#   James Edward Gray II
-#
-# === Ruby in HTML
-#
-# ERB is often used in <tt>.rhtml</tt> files (HTML with embedded Ruby).  Notice the need in
-# this example to provide a special binding when the template is run, so that the instance
-# variables in the Product object can be resolved.
-#
-#   require "erb"
-#   
-#   # Build template data class.
-#   class Product
-#     def initialize( code, name, desc, cost )
-#       @code = code
-#       @name = name
-#       @desc = desc
-#       @cost = cost
-#        	
-#       @features = [ ]
-#     end
-#   
-#     def add_feature( feature )
-#       @features << feature
-#     end
-#   
-#     # Support templating of member data.
-#     def get_binding
-#       binding
-#     end
-#   
-#     # ...
-#   end
-#   
-#   # Create template.
-#   template = %{
-#     <html>
-#       <head><title>Ruby Toys -- <%= @name %></title></head>
-#       <body>
-#   
-#         <h1><%= @name %> (<%= @code %>)</h1>
-#         <p><%= @desc %></p>
-#   
-#         <ul>
-#           <% @features.each do |f| %>
-#             <li><b><%= f %></b></li>
-#           <% end %>
-#         </ul>
-#   
-#         <p>
-#           <% if @cost < 10 %>
-#             <b>Only <%= @cost %>!!!</b>
-#           <% else %>
-#              Call for a price, today!
-#           <% end %>
-#         </p>
-#    
-#       </body>
-#     </html>
-#   }.gsub(/^  /, '')
-#   
-#   rhtml = ERB.new(template)
-#   
-#   # Set up template data.
-#   toy = Product.new( "TZ-1002",
-#                      "Rubysapien",
-#                      "Geek's Best Friend!  Responds to Ruby commands...",
-#                      999.95 )
-#   toy.add_feature("Listens for verbal commands in the Ruby language!")
-#   toy.add_feature("Ignores Perl, Java, and all C variants.")
-#   toy.add_feature("Karate-Chop Action!!!")
-#   toy.add_feature("Matz signature on left leg.")
-#   toy.add_feature("Gem studded eyes... Rubies, of course!")
-#   
-#   # Produce result.
-#   rhtml.run(toy.get_binding)
-#
-# <i>Generates (some blank lines removed):</i>
-#
-#    <html>
-#      <head><title>Ruby Toys -- Rubysapien</title></head>
-#      <body>
-#    
-#        <h1>Rubysapien (TZ-1002)</h1>
-#        <p>Geek's Best Friend!  Responds to Ruby commands...</p>
-#    
-#        <ul>
-#            <li><b>Listens for verbal commands in the Ruby language!</b></li>
-#            <li><b>Ignores Perl, Java, and all C variants.</b></li>
-#            <li><b>Karate-Chop Action!!!</b></li>
-#            <li><b>Matz signature on left leg.</b></li>
-#            <li><b>Gem studded eyes... Rubies, of course!</b></li>
-#        </ul>
-#    
-#        <p>
-#             Call for a price, today!
-#        </p>
-#    
-#      </body>
-#    </html>
-#
-# 
-# == Notes
-#
-# There are a variety of templating solutions available in various Ruby projects:
-# * ERB's big brother, eRuby, works the same but is written in C for speed;
-# * Amrita (smart at producing HTML/XML);
-# * cs/Template (written in C for speed);
-# * RDoc, distributed with Ruby, uses its own template engine, which can be reused elsewhere;
-# * and others; search the RAA.
-#
-# Rails, the web application framework, uses ERB to create views.
-#
-class ERB
-  Revision = '$Date: 2008-06-24 16:16:52 +0900 (Tue, 24 Jun 2008) $' 	#'
-
-  # Returns revision information for the erb.rb module.
-  def self.version
-    "erb.rb [2.0.4 #{ERB::Revision.split[1]}]"
-  end
-end
-
-#--
-# ERB::Compiler
-class ERB
-  class Compiler # :nodoc:
-    class PercentLine # :nodoc:
-      def initialize(str)
-        @value = str
-      end
-      attr_reader :value
-      alias :to_s :value
-    end
-
-    class Scanner # :nodoc:
-      SplitRegexp = /(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>)|(\n)/
-
-      @scanner_map = {}
-      def self.regist_scanner(klass, trim_mode, percent)
-	@scanner_map[[trim_mode, percent]] = klass
-      end
-
-      def self.default_scanner=(klass)
-	@default_scanner = klass
-      end
-
-      def self.make_scanner(src, trim_mode, percent)
-	klass = @scanner_map.fetch([trim_mode, percent], @default_scanner)
-	klass.new(src, trim_mode, percent)
-      end
-
-      def initialize(src, trim_mode, percent)
-	@src = src
-	@stag = nil
-      end
-      attr_accessor :stag
-
-      def scan; end
-    end
-
-    class TrimScanner < Scanner # :nodoc:
-      TrimSplitRegexp = /(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>\n)|(%>)|(\n)/
-
-      def initialize(src, trim_mode, percent)
-	super
-	@trim_mode = trim_mode
-	@percent = percent
-	if @trim_mode == '>'
-	  @scan_line = self.method(:trim_line1)
-	elsif @trim_mode == '<>'
-	  @scan_line = self.method(:trim_line2)
-	elsif @trim_mode == '-'
-	  @scan_line = self.method(:explicit_trim_line)
-	else
-	  @scan_line = self.method(:scan_line)
-	end
-      end
-      attr_accessor :stag
-      
-      def scan(&block)
-	@stag = nil
-	if @percent
-	  @src.each do |line|
-	    percent_line(line, &block)
-	  end
-	else
-	  @src.each do |line|
-	    @scan_line.call(line, &block)
-	  end
-	end
-	nil
-      end
-
-      def percent_line(line, &block)
-	if @stag || line[0] != ?%
-	  return @scan_line.call(line, &block)
-	end
-
-	line[0] = ''
-	if line[0] == ?%
-	  @scan_line.call(line, &block)
-	else
-          yield(PercentLine.new(line.chomp))
-	end
-      end
-
-      def scan_line(line)
-	line.split(SplitRegexp).each do |token|
-	  next if token.empty?
-	  yield(token)
-	end
-      end
-
-      def trim_line1(line)
-	line.split(TrimSplitRegexp).each do |token|
-	  next if token.empty?
-	  if token == "%>\n"
-	    yield('%>')
-	    yield(:cr)
-	    break
-	  end
-	  yield(token)
-	end
-      end
-
-      def trim_line2(line)
-	head = nil
-	line.split(TrimSplitRegexp).each do |token|
-	  next if token.empty?
-	  head = token unless head
-	  if token == "%>\n"
-	    yield('%>')
-	    if  is_erb_stag?(head)
-	      yield(:cr)
-	    else
-	      yield("\n")
-	    end
-	    break
-	  end
-	  yield(token)
-	end
-      end
-
-      def explicit_trim_line(line)
-        line.scan(/(.*?)(^[ \t]*<%\-|<%\-|<%%|%%>|<%=|<%#|<%|-%>\n|-%>|%>|\z)/m) do |tokens|
-          tokens.each do |token|
-            next if token.empty?
-            if @stag.nil? && /[ \t]*<%-/ =~ token
-              yield('<%')
-            elsif @stag && token == "-%>\n"
-              yield('%>')
-              yield(:cr)
-            elsif @stag && token == '-%>'
-              yield('%>')
-            else
-              yield(token)
-            end
-          end
-        end
-      end
-
-      ERB_STAG = %w(<%= <%# <%)
-      def is_erb_stag?(s)
-	ERB_STAG.member?(s)
-      end
-    end
-
-    Scanner.default_scanner = TrimScanner
-
-    class SimpleScanner < Scanner # :nodoc:
-      def scan
-	@src.each do |line|
-	  line.split(SplitRegexp).each do |token|
-	    next if token.empty?
-	    yield(token)
-	  end
-	end
-      end
-    end
-    
-    Scanner.regist_scanner(SimpleScanner, nil, false)
-
-    begin
-      require 'strscan'
-      class SimpleScanner2 < Scanner # :nodoc:
-        def scan
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-            scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-            yield(text) unless text.empty?
-            yield(elem) unless elem.empty?
-          end
-        end
-      end
-      Scanner.regist_scanner(SimpleScanner2, nil, false)
-
-      class PercentScanner < Scanner # :nodoc:
-	def scan
-	  new_line = true
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-	    if new_line && @stag.nil?
-	      if scanner.scan(/%%/)
-		yield('%')
-		new_line = false
-		next
-	      elsif scanner.scan(/%/)
-		yield(PercentLine.new(scanner.scan(/.*?(\n|\z)/).chomp))
-		next
-	      end
-	    end
-	    scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-            yield(text) unless text.empty?
-            yield(elem) unless elem.empty?
-	    new_line = (elem == "\n")
-          end
-        end
-      end
-      Scanner.regist_scanner(PercentScanner, nil, true)
-
-      class ExplicitScanner < Scanner # :nodoc:
-	def scan
-	  new_line = true
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%-|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|-%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-	    if new_line && @stag.nil? && scanner.scan(/[ \t]*<%-/)
-	      yield('<%')
-	      new_line = false
-	      next
-	    end
-	    scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-	    new_line = (elem == "\n")
-            yield(text) unless text.empty?
-	    if elem == '-%>'
-	      yield('%>')
-	      if scanner.scan(/(\n|\z)/)
-		yield(:cr)
-		new_line = true
-	      end
-	    elsif elem == '<%-'
-	      yield('<%')
-	    else
-	      yield(elem) unless elem.empty?
-	    end
-          end
-        end
-      end
-      Scanner.regist_scanner(ExplicitScanner, '-', false)
-
-    rescue LoadError
-    end
-
-    class Buffer # :nodoc:
-      def initialize(compiler)
-	@compiler = compiler
-	@line = []
-	@script = ""
-	@compiler.pre_cmd.each do |x|
-	  push(x)
-	end
-      end
-      attr_reader :script
-
-      def push(cmd)
-	@line << cmd
-      end
-      
-      def cr
-	@script << (@line.join('; '))
-	@line = []
-	@script << "\n"
-      end
-      
-      def close
-	return unless @line
-	@compiler.post_cmd.each do |x|
-	  push(x)
-	end
-	@script << (@line.join('; '))
-	@line = nil
-      end
-    end
-
-    def compile(s)
-      out = Buffer.new(self)
-
-      content = ''
-      scanner = make_scanner(s)
-      scanner.scan do |token|
-	if scanner.stag.nil?
-	  case token
-          when PercentLine
-	    out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-	    content = ''
-            out.push(token.to_s)
-            out.cr
-	  when :cr
-	    out.cr
-	  when '<%', '<%=', '<%#'
-	    scanner.stag = token
-	    out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-	    content = ''
-	  when "\n"
-	    content << "\n"
-	    out.push("#{@put_cmd} #{content.dump}")
-	    out.cr
-	    content = ''
-	  when '<%%'
-	    content << '<%'
-	  else
-	    content << token
-	  end
-	else
-	  case token
-	  when '%>'
-	    case scanner.stag
-	    when '<%'
-	      if content[-1] == ?\n
-		content.chop!
-		out.push(content)
-		out.cr
-	      else
-		out.push(content)
-	      end
-	    when '<%='
-	      out.push("#{@insert_cmd}((#{content}).to_s)")
-	    when '<%#'
-	      # out.push("# #{content.dump}")
-	    end
-	    scanner.stag = nil
-	    content = ''
-	  when '%%>'
-	    content << '%>'
-	  else
-	    content << token
-	  end
-	end
-      end
-      out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-      out.close
-      out.script
-    end
-
-    def prepare_trim_mode(mode)
-      case mode
-      when 1
-	return [false, '>']
-      when 2
-	return [false, '<>']
-      when 0
-	return [false, nil]
-      when String
-	perc = mode.include?('%')
-	if mode.include?('-')
-	  return [perc, '-']
-	elsif mode.include?('<>')
-	  return [perc, '<>']
-	elsif mode.include?('>')
-	  return [perc, '>']
-	else
-	  [perc, nil]
-	end
-      else
-	return [false, nil]
-      end
-    end
-
-    def make_scanner(src)
-      Scanner.make_scanner(src, @trim_mode, @percent)
-    end
-
-    def initialize(trim_mode)
-      @percent, @trim_mode = prepare_trim_mode(trim_mode)
-      @put_cmd = 'print'
-      @insert_cmd = @put_cmd
-      @pre_cmd = []
-      @post_cmd = []
-    end
-    attr_reader :percent, :trim_mode
-    attr_accessor :put_cmd, :insert_cmd, :pre_cmd, :post_cmd
-  end
-end
-
-#--
-# ERB
-class ERB
-  #
-  # Constructs a new ERB object with the template specified in _str_.
-  # 
-  # An ERB object works by building a chunk of Ruby code that will output
-  # the completed template when run. If _safe_level_ is set to a non-nil value,
-  # ERB code will be run in a separate thread with <b>$SAFE</b> set to the
-  # provided level.
-  # 
-  # If _trim_mode_ is passed a String containing one or more of the following
-  # modifiers, ERB will adjust its code generation as listed:
-  # 
-  # 	%  enables Ruby code processing for lines beginning with %
-  # 	<> omit newline for lines starting with <% and ending in %>
-  # 	>  omit newline for lines ending in %>
-  # 
-  # _eoutvar_ can be used to set the name of the variable ERB will build up
-  # its output in.  This is useful when you need to run multiple ERB
-  # templates through the same binding and/or when you want to control where
-  # output ends up.  Pass the name of the variable to be used inside a String.
-  #
-  # === Example
-  #
-  #  require "erb"
-  #  
-  #  # build data class
-  #  class Listings
-  #    PRODUCT = { :name => "Chicken Fried Steak",
-  #                :desc => "A well messages pattie, breaded and fried.",
-  #                :cost => 9.95 }
-  #  
-  #    attr_reader :product, :price
-  #    
-  #    def initialize( product = "", price = "" )
-  #      @product = product
-  #      @price = price
-  #    end
-  #    
-  #    def build
-  #      b = binding
-  #      # create and run templates, filling member data variebles
-  #      ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), 0, "", "@product").result b
-  #        <%= PRODUCT[:name] %>
-  #        <%= PRODUCT[:desc] %>
-  #      END_PRODUCT
-  #      ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), 0, "", "@price").result b
-  #        <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %>
-  #        <%= PRODUCT[:desc] %>
-  #      END_PRICE
-  #    end
-  #  end
-  #  
-  #  # setup template data
-  #  listings = Listings.new
-  #  listings.build
-  #  
-  #  puts listings.product + "\n" + listings.price
-  #
-  # _Generates_
-  #
-  #  Chicken Fried Steak
-  #  A well messages pattie, breaded and fried.
-  #  
-  #  Chicken Fried Steak -- 9.95
-  #  A well messages pattie, breaded and fried.
-  #  
-  def initialize(str, safe_level=nil, trim_mode=nil, eoutvar='_erbout')
-    @safe_level = safe_level
-    compiler = ERB::Compiler.new(trim_mode)
-    set_eoutvar(compiler, eoutvar)
-    @src = compiler.compile(str)
-    @filename = nil
-  end
-
-  # The Ruby code generated by ERB
-  attr_reader :src
-
-  # The optional _filename_ argument passed to Kernel#eval when the ERB code
-  # is run
-  attr_accessor :filename
-
-  #
-  # Can be used to set _eoutvar_ as described in ERB#new.  It's probably easier
-  # to just use the constructor though, since calling this method requires the
-  # setup of an ERB _compiler_ object.
-  #
-  def set_eoutvar(compiler, eoutvar = '_erbout')
-    compiler.put_cmd = "#{eoutvar}.concat"
-    compiler.insert_cmd = "#{eoutvar}.concat"
-
-    cmd = []
-    cmd.push "#{eoutvar} = ''"
-    
-    compiler.pre_cmd = cmd
-
-    cmd = []
-    cmd.push(eoutvar)
-
-    compiler.post_cmd = cmd
-  end
-
-  # Generate results and print them. (see ERB#result)
-  def run(b=TOPLEVEL_BINDING)
-    print self.result(b)
-  end
-
-  #
-  # Executes the generated ERB code to produce a completed template, returning
-  # the results of that code.  (See ERB#new for details on how this process can
-  # be affected by _safe_level_.)
-  # 
-  # _b_ accepts a Binding or Proc object which is used to set the context of
-  # code evaluation.
-  #
-  def result(b=TOPLEVEL_BINDING)
-    if @safe_level
-      th = Thread.start { 
-	$SAFE = @safe_level
-	eval(@src, b, (@filename || '(erb)'), 1)
-      }
-      return th.value
-    else
-      return eval(@src, b, (@filename || '(erb)'), 1)
-    end
-  end
-
-  def def_method(mod, methodname, fname='(ERB)')  # :nodoc:
-    mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, 0)
-  end
-
-  def def_module(methodname='erb')  # :nodoc:
-    mod = Module.new
-    def_method(mod, methodname)
-    mod
-  end
-
-  def def_class(superklass=Object, methodname='result')  # :nodoc:
-    cls = Class.new(superklass)
-    def_method(cls, methodname)
-    cls
-  end
-end
-
-#--
-# ERB::Util
-class ERB
-  # A utility module for conversion routines, often handy in HTML generation.
-  module Util
-    public
-    #
-    # A utility method for escaping HTML tag characters in _s_.
-    # 
-    # 	require "erb"
-    # 	include ERB::Util
-    # 	
-    # 	puts html_escape("is a > 0 & a < 10?")
-    # 
-    # _Generates_
-    # 
-    # 	is a > 0 & a < 10?
-    #
-    def html_escape(s)
-      s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-    end
-    alias h html_escape
-    module_function :h
-    module_function :html_escape
-    
-    #
-    # A utility method for encoding the String _s_ as a URL.
-    # 
-    # 	require "erb"
-    # 	include ERB::Util
-    # 	
-    # 	puts url_encode("Programming Ruby:  The Pragmatic Programmer's Guide")
-    # 
-    # _Generates_
-    # 
-    # 	Programming%20Ruby%3A%20%20The%20Pragmatic%20Programmer%27s%20Guide
-    #
-    def url_encode(s)
-      s.to_s.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
-    end
-    alias u url_encode
-    module_function :u
-    module_function :url_encode
-  end
-end
-
-#--
-# ERB::DefMethod
-class ERB
-  module DefMethod  # :nodoc:
-    public
-    def def_erb_method(methodname, erb)
-      if erb.kind_of? String
-	fname = erb
-	File.open(fname) {|f| erb = ERB.new(f.read) }
-	erb.def_method(self, methodname, fname)
-      else
-	erb.def_method(self, methodname)
-      end
-    end
-    module_function :def_erb_method
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/eregex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/eregex.rb
deleted file mode 100644
index cc7a7f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/eregex.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# this is just a proof of concept toy.
-
-class RegOr
-  def initialize(re1, re2)
-    @re1 = re1
-    @re2 = re2
-  end
-
-  def =~ (str)
-    @re1 =~ str or @re2 =~ str
-  end
-end
-
-class RegAnd
-  def initialize(re1, re2)
-    @re1 = re1
-    @re2 = re2
-  end
-
-  def =~ (str)
-    @re1 =~ str and @re2 =~ str
-  end
-end
-
-class Regexp
-  def |(other)
-    RegOr.new(self, other)
-  end
-  def &(other)
-    RegAnd.new(self, other)
-  end
-end
-
-if __FILE__ == $0
-  p "abc" =~ /b/|/c/
-  p "abc" =~ /b/&/c/
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/fileutils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/fileutils.rb
deleted file mode 100644
index 3fdb6cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/fileutils.rb
+++ /dev/null
@@ -1,1591 +0,0 @@
-# 
-# = fileutils.rb
-# 
-# Copyright (c) 2000-2006 Minero Aoki
-# 
-# This program is free software.
-# You can distribute/modify this program under the same terms of ruby.
-# 
-# == module FileUtils
-# 
-# Namespace for several file utility methods for copying, moving, removing, etc.
-# 
-# === Module Functions
-# 
-#   cd(dir, options)
-#   cd(dir, options) {|dir| .... }
-#   pwd()
-#   mkdir(dir, options)
-#   mkdir(list, options)
-#   mkdir_p(dir, options)
-#   mkdir_p(list, options)
-#   rmdir(dir, options)
-#   rmdir(list, options)
-#   ln(old, new, options)
-#   ln(list, destdir, options)
-#   ln_s(old, new, options)
-#   ln_s(list, destdir, options)
-#   ln_sf(src, dest, options)
-#   cp(src, dest, options)
-#   cp(list, dir, options)
-#   cp_r(src, dest, options)
-#   cp_r(list, dir, options)
-#   mv(src, dest, options)
-#   mv(list, dir, options)
-#   rm(list, options)
-#   rm_r(list, options)
-#   rm_rf(list, options)
-#   install(src, dest, mode = <src's>, options)
-#   chmod(mode, list, options)
-#   chmod_R(mode, list, options)
-#   chown(user, group, list, options)
-#   chown_R(user, group, list, options)
-#   touch(list, options)
-#
-# The <tt>options</tt> parameter is a hash of options, taken from the list
-# <tt>:force</tt>, <tt>:noop</tt>, <tt>:preserve</tt>, and <tt>:verbose</tt>.
-# <tt>:noop</tt> means that no changes are made.  The other two are obvious.
-# Each method documents the options that it honours.
-#
-# All methods that have the concept of a "source" file or directory can take
-# either one file or a list of files in that argument.  See the method
-# documentation for examples.
-#
-# There are some `low level' methods, which do not accept any option:
-#
-#   copy_entry(src, dest, preserve = false, dereference = false)
-#   copy_file(src, dest, preserve = false, dereference = true)
-#   copy_stream(srcstream, deststream)
-#   remove_entry(path, force = false)
-#   remove_entry_secure(path, force = false)
-#   remove_file(path, force = false)
-#   compare_file(path_a, path_b)
-#   compare_stream(stream_a, stream_b)
-#   uptodate?(file, cmp_list)
-#
-# == module FileUtils::Verbose
-# 
-# This module has all methods of FileUtils module, but it outputs messages
-# before acting.  This equates to passing the <tt>:verbose</tt> flag to methods
-# in FileUtils.
-# 
-# == module FileUtils::NoWrite
-# 
-# This module has all methods of FileUtils module, but never changes
-# files/directories.  This equates to passing the <tt>:noop</tt> flag to methods
-# in FileUtils.
-# 
-# == module FileUtils::DryRun
-# 
-# This module has all methods of FileUtils module, but never changes
-# files/directories.  This equates to passing the <tt>:noop</tt> and
-# <tt>:verbose</tt> flags to methods in FileUtils.
-# 
-
-module FileUtils
-
-  def self.private_module_function(name)   #:nodoc:
-    module_function name
-    private_class_method name
-  end
-
-  # This hash table holds command options.
-  OPT_TABLE = {}   #:nodoc: internal use only
-
-  #
-  # Options: (none)
-  #
-  # Returns the name of the current directory.
-  #
-  def pwd
-    Dir.pwd
-  end
-  module_function :pwd
-
-  alias getwd pwd
-  module_function :getwd
-
-  #
-  # Options: verbose
-  # 
-  # Changes the current directory to the directory +dir+.
-  # 
-  # If this method is called with block, resumes to the old
-  # working directory after the block execution finished.
-  # 
-  #   FileUtils.cd('/', :verbose => true)   # chdir and report it
-  # 
-  def cd(dir, options = {}, &block) # :yield: dir
-    fu_check_options options, OPT_TABLE['cd']
-    fu_output_message "cd #{dir}" if options[:verbose]
-    Dir.chdir(dir, &block)
-    fu_output_message 'cd -' if options[:verbose] and block
-  end
-  module_function :cd
-
-  alias chdir cd
-  module_function :chdir
-
-  OPT_TABLE['cd']    =
-  OPT_TABLE['chdir'] = [:verbose]
-
-  #
-  # Options: (none)
-  # 
-  # Returns true if +newer+ is newer than all +old_list+.
-  # Non-existent files are older than any file.
-  # 
-  #   FileUtils.uptodate?('hello.o', %w(hello.c hello.h)) or \
-  #       system 'make hello.o'
-  # 
-  def uptodate?(new, old_list, options = nil)
-    raise ArgumentError, 'uptodate? does not accept any option' if options
-
-    return false unless File.exist?(new)
-    new_time = File.mtime(new)
-    old_list.each do |old|
-      if File.exist?(old)
-        return false unless new_time > File.mtime(old)
-      end
-    end
-    true
-  end
-  module_function :uptodate?
-
-  #
-  # Options: mode noop verbose
-  # 
-  # Creates one or more directories.
-  # 
-  #   FileUtils.mkdir 'test'
-  #   FileUtils.mkdir %w( tmp data )
-  #   FileUtils.mkdir 'notexist', :noop => true  # Does not really create.
-  #   FileUtils.mkdir 'tmp', :mode => 0700
-  # 
-  def mkdir(list, options = {})
-    fu_check_options options, OPT_TABLE['mkdir']
-    list = fu_list(list)
-    fu_output_message "mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-
-    list.each do |dir|
-      fu_mkdir dir, options[:mode]
-    end
-  end
-  module_function :mkdir
-
-  OPT_TABLE['mkdir'] = [:mode, :noop, :verbose]
-
-  #
-  # Options: mode noop verbose
-  # 
-  # Creates a directory and all its parent directories.
-  # For example,
-  # 
-  #   FileUtils.mkdir_p '/usr/local/lib/ruby'
-  # 
-  # causes to make following directories, if it does not exist.
-  #     * /usr
-  #     * /usr/local
-  #     * /usr/local/lib
-  #     * /usr/local/lib/ruby
-  #
-  # You can pass several directories at a time in a list.
-  # 
-  def mkdir_p(list, options = {})
-    fu_check_options options, OPT_TABLE['mkdir_p']
-    list = fu_list(list)
-    fu_output_message "mkdir -p #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
-    return *list if options[:noop]
-
-    list.map {|path| path.sub(%r</\z>, '') }.each do |path|
-      # optimize for the most common case
-      begin
-        fu_mkdir path, options[:mode]
-        next
-      rescue SystemCallError
-        next if File.directory?(path)
-      end
-
-      stack = []
-      until path == stack.last   # dirname("/")=="/", dirname("C:/")=="C:/"
-        stack.push path
-        path = File.dirname(path)
-      end
-      stack.reverse_each do |path|
-        begin
-          fu_mkdir path, options[:mode]
-        rescue SystemCallError => err
-          raise unless File.directory?(path)
-        end
-      end
-    end
-
-    return *list
-  end
-  module_function :mkdir_p
-
-  alias mkpath    mkdir_p
-  alias makedirs  mkdir_p
-  module_function :mkpath
-  module_function :makedirs
-
-  OPT_TABLE['mkdir_p']  =
-  OPT_TABLE['mkpath']   =
-  OPT_TABLE['makedirs'] = [:mode, :noop, :verbose]
-
-  def fu_mkdir(path, mode)   #:nodoc:
-    path = path.sub(%r</\z>, '')
-    if mode
-      Dir.mkdir path, mode
-      File.chmod mode, path
-    else
-      Dir.mkdir path
-    end
-  end
-  private_module_function :fu_mkdir
-
-  #
-  # Options: noop, verbose
-  # 
-  # Removes one or more directories.
-  # 
-  #   FileUtils.rmdir 'somedir'
-  #   FileUtils.rmdir %w(somedir anydir otherdir)
-  #   # Does not really remove directory; outputs message.
-  #   FileUtils.rmdir 'somedir', :verbose => true, :noop => true
-  # 
-  def rmdir(list, options = {})
-    fu_check_options options, OPT_TABLE['rmdir']
-    list = fu_list(list)
-    fu_output_message "rmdir #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-    list.each do |dir|
-      Dir.rmdir dir.sub(%r</\z>, '')
-    end
-  end
-  module_function :rmdir
-
-  OPT_TABLE['rmdir'] = [:noop, :verbose]
-
-  #
-  # Options: force noop verbose
-  #
-  # <b><tt>ln(old, new, options = {})</tt></b>
-  #
-  # Creates a hard link +new+ which points to +old+.
-  # If +new+ already exists and it is a directory, creates a link +new/old+.
-  # If +new+ already exists and it is not a directory, raises Errno::EEXIST.
-  # But if :force option is set, overwrite +new+.
-  # 
-  #   FileUtils.ln 'gcc', 'cc', :verbose => true
-  #   FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
-  # 
-  # <b><tt>ln(list, destdir, options = {})</tt></b>
-  # 
-  # Creates several hard links in a directory, with each one pointing to the
-  # item in +list+.  If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  # 
-  #   include FileUtils
-  #   cd '/sbin'
-  #   FileUtils.ln %w(cp mv mkdir), '/bin'   # Now /sbin/cp and /bin/cp are linked.
-  # 
-  def ln(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln']
-    fu_output_message "ln#{options[:force] ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest0(src, dest) do |s,d|
-      remove_file d, true if options[:force]
-      File.link s, d
-    end
-  end
-  module_function :ln
-
-  alias link ln
-  module_function :link
-
-  OPT_TABLE['ln']   =
-  OPT_TABLE['link'] = [:force, :noop, :verbose]
-
-  #
-  # Options: force noop verbose
-  #
-  # <b><tt>ln_s(old, new, options = {})</tt></b>
-  # 
-  # Creates a symbolic link +new+ which points to +old+.  If +new+ already
-  # exists and it is a directory, creates a symbolic link +new/old+.  If +new+
-  # already exists and it is not a directory, raises Errno::EEXIST.  But if
-  # :force option is set, overwrite +new+.
-  # 
-  #   FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby'
-  #   FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force => true
-  # 
-  # <b><tt>ln_s(list, destdir, options = {})</tt></b>
-  # 
-  # Creates several symbolic links in a directory, with each one pointing to the
-  # item in +list+.  If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  #
-  # If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  # 
-  #   FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'
-  # 
-  def ln_s(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln_s']
-    fu_output_message "ln -s#{options[:force] ? 'f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest0(src, dest) do |s,d|
-      remove_file d, true if options[:force]
-      File.symlink s, d
-    end
-  end
-  module_function :ln_s
-
-  alias symlink ln_s
-  module_function :symlink
-
-  OPT_TABLE['ln_s']    =
-  OPT_TABLE['symlink'] = [:force, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Same as
-  #   #ln_s(src, dest, :force)
-  # 
-  def ln_sf(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln_sf']
-    options = options.dup
-    options[:force] = true
-    ln_s src, dest, options
-  end
-  module_function :ln_sf
-
-  OPT_TABLE['ln_sf'] = [:noop, :verbose]
-
-  #
-  # Options: preserve noop verbose
-  #
-  # Copies a file content +src+ to +dest+.  If +dest+ is a directory,
-  # copies +src+ to +dest/src+.
-  #
-  # If +src+ is a list of files, then +dest+ must be a directory.
-  #
-  #   FileUtils.cp 'eval.c', 'eval.c.org'
-  #   FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
-  #   FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6', :verbose => true
-  #   FileUtils.cp 'symlink', 'dest'   # copy content, "dest" is not a symlink
-  # 
-  def cp(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['cp']
-    fu_output_message "cp#{options[:preserve] ? ' -p' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      copy_file s, d, options[:preserve]
-    end
-  end
-  module_function :cp
-
-  alias copy cp
-  module_function :copy
-
-  OPT_TABLE['cp']   =
-  OPT_TABLE['copy'] = [:preserve, :noop, :verbose]
-
-  #
-  # Options: preserve noop verbose dereference_root remove_destination
-  # 
-  # Copies +src+ to +dest+. If +src+ is a directory, this method copies
-  # all its contents recursively. If +dest+ is a directory, copies
-  # +src+ to +dest/src+.
-  #
-  # +src+ can be a list of files.
-  # 
-  #   # Installing ruby library "mylib" under the site_ruby
-  #   FileUtils.rm_r site_ruby + '/mylib', :force
-  #   FileUtils.cp_r 'lib/', site_ruby + '/mylib'
-  # 
-  #   # Examples of copying several files to target directory.
-  #   FileUtils.cp_r %w(mail.rb field.rb debug/), site_ruby + '/tmail'
-  #   FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop => true, :verbose => true
-  #
-  #   # If you want to copy all contents of a directory instead of the
-  #   # directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
-  #   # use following code.
-  #   FileUtils.cp_r 'src/.', 'dest'     # cp_r('src', 'dest') makes src/dest,
-  #                                      # but this doesn't.
-  # 
-  def cp_r(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['cp_r']
-    fu_output_message "cp -r#{options[:preserve] ? 'p' : ''}#{options[:remove_destination] ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    options[:dereference_root] = true unless options.key?(:dereference_root)
-    fu_each_src_dest(src, dest) do |s, d|
-      copy_entry s, d, options[:preserve], options[:dereference_root], options[:remove_destination]
-    end
-  end
-  module_function :cp_r
-
-  OPT_TABLE['cp_r'] = [:preserve, :noop, :verbose,
-                       :dereference_root, :remove_destination]
-
-  #
-  # Copies a file system entry +src+ to +dest+.
-  # If +src+ is a directory, this method copies its contents recursively.
-  # This method preserves file types, c.f. symlink, directory...
-  # (FIFO, device files and etc. are not supported yet)
-  #
-  # Both of +src+ and +dest+ must be a path name.
-  # +src+ must exist, +dest+ must not exist.
-  #
-  # If +preserve+ is true, this method preserves owner, group, permissions
-  # and modified time.
-  #
-  # If +dereference_root+ is true, this method dereference tree root.
-  #
-  # If +remove_destination+ is true, this method removes each destination file before copy.
-  #
-  def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
-    Entry_.new(src, nil, dereference_root).traverse do |ent|
-      destent = Entry_.new(dest, ent.rel, false)
-      File.unlink destent.path if remove_destination && File.file?(destent.path)
-      ent.copy destent.path
-      ent.copy_metadata destent.path if preserve
-    end
-  end
-  module_function :copy_entry
-
-  #
-  # Copies file contents of +src+ to +dest+.
-  # Both of +src+ and +dest+ must be a path name.
-  #
-  def copy_file(src, dest, preserve = false, dereference = true)
-    ent = Entry_.new(src, nil, dereference)
-    ent.copy_file dest
-    ent.copy_metadata dest if preserve
-  end
-  module_function :copy_file
-
-  #
-  # Copies stream +src+ to +dest+.
-  # +src+ must respond to #read(n) and
-  # +dest+ must respond to #write(str).
-  #
-  def copy_stream(src, dest)
-    fu_copy_stream0 src, dest, fu_stream_blksize(src, dest)
-  end
-  module_function :copy_stream
-
-  #
-  # Options: force noop verbose
-  # 
-  # Moves file(s) +src+ to +dest+.  If +file+ and +dest+ exist on the different
-  # disk partition, the file is copied instead.
-  # 
-  #   FileUtils.mv 'badname.rb', 'goodname.rb'
-  #   FileUtils.mv 'stuff.rb', '/notexist/lib/ruby', :force => true  # no error
-  # 
-  #   FileUtils.mv %w(junk.txt dust.txt), '/home/aamine/.trash/'
-  #   FileUtils.mv Dir.glob('test*.rb'), 'test', :noop => true, :verbose => true
-  # 
-  def mv(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['mv']
-    fu_output_message "mv#{options[:force] ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      destent = Entry_.new(d, nil, true)
-      begin
-        if destent.exist?
-          if destent.directory?
-            raise Errno::EEXIST, dest
-          else
-            destent.remove_file if rename_cannot_overwrite_file?
-          end
-        end
-        begin
-          File.rename s, d
-        rescue Errno::EXDEV
-          copy_entry s, d, true
-          if options[:secure]
-            remove_entry_secure s, options[:force]
-          else
-            remove_entry s, options[:force]
-          end
-        end
-      rescue SystemCallError
-        raise unless options[:force]
-      end
-    end
-  end
-  module_function :mv
-
-  alias move mv
-  module_function :move
-
-  OPT_TABLE['mv']   =
-  OPT_TABLE['move'] = [:force, :noop, :verbose, :secure]
-
-  def rename_cannot_overwrite_file?   #:nodoc:
-    /djgpp|cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
-  end
-  private_module_function :rename_cannot_overwrite_file?
-
-  #
-  # Options: force noop verbose
-  # 
-  # Remove file(s) specified in +list+.  This method cannot remove directories.
-  # All StandardErrors are ignored when the :force option is set.
-  # 
-  #   FileUtils.rm %w( junk.txt dust.txt )
-  #   FileUtils.rm Dir.glob('*.so')
-  #   FileUtils.rm 'NotExistFile', :force => true   # never raises exception
-  # 
-  def rm(list, options = {})
-    fu_check_options options, OPT_TABLE['rm']
-    list = fu_list(list)
-    fu_output_message "rm#{options[:force] ? ' -f' : ''} #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-
-    list.each do |path|
-      remove_file path, options[:force]
-    end
-  end
-  module_function :rm
-
-  alias remove rm
-  module_function :remove
-
-  OPT_TABLE['rm']     =
-  OPT_TABLE['remove'] = [:force, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Equivalent to
-  #
-  #   #rm(list, :force => true)
-  #
-  def rm_f(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_f']
-    options = options.dup
-    options[:force] = true
-    rm list, options
-  end
-  module_function :rm_f
-
-  alias safe_unlink rm_f
-  module_function :safe_unlink
-
-  OPT_TABLE['rm_f']        =
-  OPT_TABLE['safe_unlink'] = [:noop, :verbose]
-
-  #
-  # Options: force noop verbose secure
-  # 
-  # remove files +list+[0] +list+[1]... If +list+[n] is a directory,
-  # removes its all contents recursively. This method ignores
-  # StandardError when :force option is set.
-  # 
-  #   FileUtils.rm_r Dir.glob('/tmp/*')
-  #   FileUtils.rm_r '/', :force => true          #  :-)
-  #
-  # WARNING: This method causes local vulnerability
-  # if one of parent directories or removing directory tree are world
-  # writable (including /tmp, whose permission is 1777), and the current
-  # process has strong privilege such as Unix super user (root), and the
-  # system has symbolic link.  For secure removing, read the documentation
-  # of #remove_entry_secure carefully, and set :secure option to true.
-  # Default is :secure=>false.
-  #
-  # NOTE: This method calls #remove_entry_secure if :secure option is set.
-  # See also #remove_entry_secure.
-  # 
-  def rm_r(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_r']
-    # options[:secure] = true unless options.key?(:secure)
-    list = fu_list(list)
-    fu_output_message "rm -r#{options[:force] ? 'f' : ''} #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-    list.each do |path|
-      if options[:secure]
-        remove_entry_secure path, options[:force]
-      else
-        remove_entry path, options[:force]
-      end
-    end
-  end
-  module_function :rm_r
-
-  OPT_TABLE['rm_r'] = [:force, :noop, :verbose, :secure]
-
-  #
-  # Options: noop verbose secure
-  # 
-  # Equivalent to
-  #
-  #   #rm_r(list, :force => true)
-  #
-  # WARNING: This method causes local vulnerability.
-  # Read the documentation of #rm_r first.
-  # 
-  def rm_rf(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_rf']
-    options = options.dup
-    options[:force] = true
-    rm_r list, options
-  end
-  module_function :rm_rf
-
-  alias rmtree rm_rf
-  module_function :rmtree
-
-  OPT_TABLE['rm_rf']  =
-  OPT_TABLE['rmtree'] = [:noop, :verbose, :secure]
-
-  #
-  # This method removes a file system entry +path+.  +path+ shall be a
-  # regular file, a directory, or something.  If +path+ is a directory,
-  # remove it recursively.  This method is required to avoid TOCTTOU
-  # (time-of-check-to-time-of-use) local security vulnerability of #rm_r.
-  # #rm_r causes security hole when:
-  #
-  #   * Parent directory is world writable (including /tmp).
-  #   * Removing directory tree includes world writable directory.
-  #   * The system has symbolic link.
-  #
-  # To avoid this security hole, this method applies special preprocess.
-  # If +path+ is a directory, this method chown(2) and chmod(2) all
-  # removing directories.  This requires the current process is the
-  # owner of the removing whole directory tree, or is the super user (root).
-  #
-  # WARNING: You must ensure that *ALL* parent directories are not
-  # world writable.  Otherwise this method does not work.
-  # Only exception is temporary directory like /tmp and /var/tmp,
-  # whose permission is 1777.
-  #
-  # WARNING: Only the owner of the removing directory tree, or Unix super
-  # user (root) should invoke this method.  Otherwise this method does not
-  # work.
-  #
-  # For details of this security vulnerability, see Perl's case:
-  #
-  #   http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0448
-  #   http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0452
-  #
-  # For fileutils.rb, this vulnerability is reported in [ruby-dev:26100].
-  #
-  def remove_entry_secure(path, force = false)
-    unless fu_have_symlink?
-      remove_entry path, force
-      return
-    end
-    fullpath = File.expand_path(path)
-    st = File.lstat(fullpath)
-    unless st.directory?
-      File.unlink fullpath
-      return
-    end
-    # is a directory.
-    parent_st = File.stat(File.dirname(fullpath))
-    unless fu_world_writable?(parent_st)
-      remove_entry path, force
-      return
-    end
-    unless parent_st.sticky?
-      raise ArgumentError, "parent directory is world writable, FileUtils#remove_entry_secure does not work; abort: #{path.inspect} (parent directory mode #{'%o' % parent_st.mode})"
-    end
-    # freeze tree root
-    euid = Process.euid
-    File.open(fullpath + '/.') {|f|
-      unless fu_stat_identical_entry?(st, f.stat)
-        # symlink (TOC-to-TOU attack?)
-        File.unlink fullpath
-        return
-      end
-      f.chown euid, -1
-      f.chmod 0700
-    }
-    # ---- tree root is frozen ----
-    root = Entry_.new(path)
-    root.preorder_traverse do |ent|
-      if ent.directory?
-        ent.chown euid, -1
-        ent.chmod 0700
-      end
-    end
-    root.postorder_traverse do |ent|
-      begin
-        ent.remove
-      rescue
-        raise unless force
-      end
-    end
-  rescue
-    raise unless force
-  end
-  module_function :remove_entry_secure
-
-  def fu_world_writable?(st)
-    (st.mode & 0002) != 0
-  end
-  private_module_function :fu_world_writable?
-
-  def fu_have_symlink?   #:nodoc
-    File.symlink nil, nil
-  rescue NotImplementedError
-    return false
-  rescue
-    return true
-  end
-  private_module_function :fu_have_symlink?
-
-  def fu_stat_identical_entry?(a, b)   #:nodoc:
-    a.dev == b.dev and a.ino == b.ino
-  end
-  private_module_function :fu_stat_identical_entry?
-
-  #
-  # This method removes a file system entry +path+.
-  # +path+ might be a regular file, a directory, or something.
-  # If +path+ is a directory, remove it recursively.
-  #
-  # See also #remove_entry_secure.
-  #
-  def remove_entry(path, force = false)
-    Entry_.new(path).postorder_traverse do |ent|
-      begin
-        ent.remove
-      rescue
-        raise unless force
-      end
-    end
-  rescue
-    raise unless force
-  end
-  module_function :remove_entry
-
-  #
-  # Removes a file +path+.
-  # This method ignores StandardError if +force+ is true.
-  #
-  def remove_file(path, force = false)
-    Entry_.new(path).remove_file
-  rescue
-    raise unless force
-  end
-  module_function :remove_file
-
-  #
-  # Removes a directory +dir+ and its contents recursively.
-  # This method ignores StandardError if +force+ is true.
-  #
-  def remove_dir(path, force = false)
-    remove_entry path, force   # FIXME?? check if it is a directory
-  end
-  module_function :remove_dir
-
-  #
-  # Returns true if the contents of a file A and a file B are identical.
-  # 
-  #   FileUtils.compare_file('somefile', 'somefile')  #=> true
-  #   FileUtils.compare_file('/bin/cp', '/bin/mv')    #=> maybe false
-  #
-  def compare_file(a, b)
-    return false unless File.size(a) == File.size(b)
-    File.open(a, 'rb') {|fa|
-      File.open(b, 'rb') {|fb|
-        return compare_stream(fa, fb)
-      }
-    }
-  end
-  module_function :compare_file
-
-  alias identical? compare_file
-  alias cmp compare_file
-  module_function :identical?
-  module_function :cmp
-
-  #
-  # Returns true if the contents of a stream +a+ and +b+ are identical.
-  #
-  def compare_stream(a, b)
-    bsize = fu_stream_blksize(a, b)
-    sa = sb = nil
-    while sa == sb
-      sa = a.read(bsize)
-      sb = b.read(bsize)
-      unless sa and sb
-        if sa.nil? and sb.nil?
-          return true
-        end
-      end
-    end
-    false
-  end
-  module_function :compare_stream
-
-  #
-  # Options: mode preserve noop verbose
-  # 
-  # If +src+ is not same as +dest+, copies it and changes the permission
-  # mode to +mode+.  If +dest+ is a directory, destination is +dest+/+src+.
-  # This method removes destination before copy.
-  # 
-  #   FileUtils.install 'ruby', '/usr/local/bin/ruby', :mode => 0755, :verbose => true
-  #   FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose => true
-  # 
-  def install(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['install']
-    fu_output_message "install -c#{options[:preserve] && ' -p'}#{options[:mode] ? (' -m 0%o' % options[:mode]) : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      unless File.exist?(d) and compare_file(s, d)
-        remove_file d, true
-        st = File.stat(s) if options[:preserve]
-        copy_file s, d
-        File.utime st.atime, st.mtime, d if options[:preserve]
-        File.chmod options[:mode], d if options[:mode]
-      end
-    end
-  end
-  module_function :install
-
-  OPT_TABLE['install'] = [:mode, :preserve, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Changes permission bits on the named files (in +list+) to the bit pattern
-  # represented by +mode+.
-  # 
-  #   FileUtils.chmod 0755, 'somecommand'
-  #   FileUtils.chmod 0644, %w(my.rb your.rb his.rb her.rb)
-  #   FileUtils.chmod 0755, '/usr/bin/ruby', :verbose => true
-  # 
-  def chmod(mode, list, options = {})
-    fu_check_options options, OPT_TABLE['chmod']
-    list = fu_list(list)
-    fu_output_message sprintf('chmod %o %s', mode, list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    list.each do |path|
-      Entry_.new(path).chmod mode
-    end
-  end
-  module_function :chmod
-
-  OPT_TABLE['chmod'] = [:noop, :verbose]
-
-  #
-  # Options: noop verbose force
-  # 
-  # Changes permission bits on the named files (in +list+)
-  # to the bit pattern represented by +mode+.
-  # 
-  #   FileUtils.chmod_R 0700, "/tmp/app.#{$$}"
-  # 
-  def chmod_R(mode, list, options = {})
-    fu_check_options options, OPT_TABLE['chmod_R']
-    list = fu_list(list)
-    fu_output_message sprintf('chmod -R%s %o %s',
-                              (options[:force] ? 'f' : ''),
-                              mode, list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    list.each do |root|
-      Entry_.new(root).traverse do |ent|
-        begin
-          ent.chmod mode
-        rescue
-          raise unless options[:force]
-        end
-      end
-    end
-  end
-  module_function :chmod_R
-
-  OPT_TABLE['chmod_R'] = [:noop, :verbose, :force]
-
-  #
-  # Options: noop verbose
-  # 
-  # Changes owner and group on the named files (in +list+)
-  # to the user +user+ and the group +group+.  +user+ and +group+
-  # may be an ID (Integer/String) or a name (String).
-  # If +user+ or +group+ is nil, this method does not change
-  # the attribute.
-  # 
-  #   FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby'
-  #   FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), :verbose => true
-  # 
-  def chown(user, group, list, options = {})
-    fu_check_options options, OPT_TABLE['chown']
-    list = fu_list(list)
-    fu_output_message sprintf('chown %s%s',
-                              [user,group].compact.join(':') + ' ',
-                              list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    uid = fu_get_uid(user)
-    gid = fu_get_gid(group)
-    list.each do |path|
-      Entry_.new(path).chown uid, gid
-    end
-  end
-  module_function :chown
-
-  OPT_TABLE['chown'] = [:noop, :verbose]
-
-  #
-  # Options: noop verbose force
-  # 
-  # Changes owner and group on the named files (in +list+)
-  # to the user +user+ and the group +group+ recursively.
-  # +user+ and +group+ may be an ID (Integer/String) or
-  # a name (String).  If +user+ or +group+ is nil, this
-  # method does not change the attribute.
-  # 
-  #   FileUtils.chown_R 'www', 'www', '/var/www/htdocs'
-  #   FileUtils.chown_R 'cvs', 'cvs', '/var/cvs', :verbose => true
-  # 
-  def chown_R(user, group, list, options = {})
-    fu_check_options options, OPT_TABLE['chown_R']
-    list = fu_list(list)
-    fu_output_message sprintf('chown -R%s %s%s',
-                              (options[:force] ? 'f' : ''),
-                              [user,group].compact.join(':') + ' ',
-                              list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    uid = fu_get_uid(user)
-    gid = fu_get_gid(group)
-    return unless uid or gid
-    list.each do |root|
-      Entry_.new(root).traverse do |ent|
-        begin
-          ent.chown uid, gid
-        rescue
-          raise unless options[:force]
-        end
-      end
-    end
-  end
-  module_function :chown_R
-
-  OPT_TABLE['chown_R'] = [:noop, :verbose, :force]
-
-  begin
-    require 'etc'
-
-    def fu_get_uid(user)   #:nodoc:
-      return nil unless user
-      user = user.to_s
-      if /\A\d+\z/ =~ user
-      then user.to_i
-      else Etc.getpwnam(user).uid
-      end
-    end
-    private_module_function :fu_get_uid
-
-    def fu_get_gid(group)   #:nodoc:
-      return nil unless group
-      if /\A\d+\z/ =~ group
-      then group.to_i
-      else Etc.getgrnam(group).gid
-      end
-    end
-    private_module_function :fu_get_gid
-
-  rescue LoadError
-    # need Win32 support???
-
-    def fu_get_uid(user)   #:nodoc:
-      user    # FIXME
-    end
-    private_module_function :fu_get_uid
-
-    def fu_get_gid(group)   #:nodoc:
-      group   # FIXME
-    end
-    private_module_function :fu_get_gid
-  end
-
-  #
-  # Options: noop verbose
-  # 
-  # Updates modification time (mtime) and access time (atime) of file(s) in
-  # +list+.  Files are created if they don't exist.
-  # 
-  #   FileUtils.touch 'timestamp'
-  #   FileUtils.touch Dir.glob('*.c');  system 'make'
-  # 
-  def touch(list, options = {})
-    fu_check_options options, OPT_TABLE['touch']
-    list = fu_list(list)
-    created = nocreate = options[:nocreate]
-    t = options[:mtime]
-    if options[:verbose]
-      fu_output_message "touch #{nocreate ? ' -c' : ''}#{t ? t.strftime(' -t %Y%m%d%H%M.%S') : ''}#{list.join ' '}"
-    end
-    return if options[:noop]
-    list.each do |path|
-      created = nocreate
-      begin
-        File.utime(t, t, path)
-      rescue Errno::ENOENT
-        raise if created
-        File.open(path, 'a') {
-          ;
-        }
-        created = true
-        retry if t
-      end
-    end
-  end
-  module_function :touch
-
-  OPT_TABLE['touch'] = [:noop, :verbose, :mtime, :nocreate]
-
-  private
-
-  module StreamUtils_
-    private
-
-    def fu_windows?
-      /mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
-    end
-
-    def fu_copy_stream0(src, dest, blksize)   #:nodoc:
-      # FIXME: readpartial?
-      while s = src.read(blksize)
-        dest.write s
-      end
-    end
-
-    def fu_stream_blksize(*streams)
-      streams.each do |s|
-        next unless s.respond_to?(:stat)
-        size = fu_blksize(s.stat)
-        return size if size
-      end
-      fu_default_blksize()
-    end
-
-    def fu_blksize(st)
-      s = st.blksize
-      return nil unless s
-      return nil if s == 0
-      s
-    end
-
-    def fu_default_blksize
-      1024
-    end
-  end
-
-  include StreamUtils_
-  extend StreamUtils_
-
-  class Entry_   #:nodoc: internal use only
-    include StreamUtils_
-
-    def initialize(a, b = nil, deref = false)
-      @prefix = @rel = @path = nil
-      if b
-        @prefix = a
-        @rel = b
-      else
-        @path = a
-      end
-      @deref = deref
-      @stat = nil
-      @lstat = nil
-    end
-
-    def inspect
-      "\#<#{self.class} #{path()}>"
-    end
-
-    def path
-      if @path
-        @path.to_str
-      else
-        join(@prefix, @rel)
-      end
-    end
-
-    def prefix
-      @prefix || @path
-    end
-
-    def rel
-      @rel
-    end
-
-    def dereference?
-      @deref
-    end
-
-    def exist?
-      lstat! ? true : false
-    end
-
-    def file?
-      s = lstat!
-      s and s.file?
-    end
-
-    def directory?
-      s = lstat!
-      s and s.directory?
-    end
-
-    def symlink?
-      s = lstat!
-      s and s.symlink?
-    end
-
-    def chardev?
-      s = lstat!
-      s and s.chardev?
-    end
-
-    def blockdev?
-      s = lstat!
-      s and s.blockdev?
-    end
-
-    def socket?
-      s = lstat!
-      s and s.socket?
-    end
-
-    def pipe?
-      s = lstat!
-      s and s.pipe?
-    end
-
-    S_IF_DOOR = 0xD000
-
-    def door?
-      s = lstat!
-      s and (s.mode & 0xF000 == S_IF_DOOR)
-    end
-
-    def entries
-      Dir.entries(path())\
-          .reject {|n| n == '.' or n == '..' }\
-          .map {|n| Entry_.new(prefix(), join(rel(), n.untaint)) }
-    end
-
-    def stat
-      return @stat if @stat
-      if lstat() and lstat().symlink?
-        @stat = File.stat(path())
-      else
-        @stat = lstat()
-      end
-      @stat
-    end
-
-    def stat!
-      return @stat if @stat
-      if lstat! and lstat!.symlink?
-        @stat = File.stat(path())
-      else
-        @stat = lstat!
-      end
-      @stat
-    rescue SystemCallError
-      nil
-    end
-
-    def lstat
-      if dereference?
-        @lstat ||= File.stat(path())
-      else
-        @lstat ||= File.lstat(path())
-      end
-    end
-
-    def lstat!
-      lstat()
-    rescue SystemCallError
-      nil
-    end
-
-    def chmod(mode)
-      if symlink?
-        File.lchmod mode, path() if have_lchmod?
-      else
-        File.chmod mode, path()
-      end
-    end
-
-    def chown(uid, gid)
-      if symlink?
-        File.lchown uid, gid, path() if have_lchown?
-      else
-        File.chown uid, gid, path()
-      end
-    end
-
-    def copy(dest)
-      case
-      when file?
-        copy_file dest
-      when directory?
-        begin
-          Dir.mkdir dest
-        rescue
-          raise unless File.directory?(dest)
-        end
-      when symlink?
-        File.symlink File.readlink(path()), dest
-      when chardev?
-        raise "cannot handle device file" unless File.respond_to?(:mknod)
-        mknod dest, ?c, 0666, lstat().rdev
-      when blockdev?
-        raise "cannot handle device file" unless File.respond_to?(:mknod)
-        mknod dest, ?b, 0666, lstat().rdev
-      when socket?
-        raise "cannot handle socket" unless File.respond_to?(:mknod)
-        mknod dest, nil, lstat().mode, 0
-      when pipe?
-        raise "cannot handle FIFO" unless File.respond_to?(:mkfifo)
-        mkfifo dest, 0666
-      when door?
-        raise "cannot handle door: #{path()}"
-      else
-        raise "unknown file type: #{path()}"
-      end
-    end
-
-    def copy_file(dest)
-      st = stat()
-      File.open(path(),  'rb') {|r|
-        File.open(dest, 'wb', st.mode) {|w|
-          fu_copy_stream0 r, w, (fu_blksize(st) || fu_default_blksize())
-        }
-      }
-    end
-
-    def copy_metadata(path)
-      st = lstat()
-      File.utime st.atime, st.mtime, path
-      begin
-        File.chown st.uid, st.gid, path
-      rescue Errno::EPERM
-        # clear setuid/setgid
-        File.chmod st.mode & 01777, path
-      else
-        File.chmod st.mode, path
-      end
-    end
-
-    def remove
-      if directory?
-        remove_dir1
-      else
-        remove_file
-      end
-    end
-
-    def remove_dir1
-      platform_support {
-        Dir.rmdir path().sub(%r</\z>, '')
-      }
-    end
-
-    def remove_file
-      platform_support {
-        File.unlink path
-      }
-    end
-
-    def platform_support
-      return yield unless fu_windows?
-      first_time_p = true
-      begin
-        yield
-      rescue Errno::ENOENT
-        raise
-      rescue => err
-        if first_time_p
-          first_time_p = false
-          begin
-            File.chmod 0700, path()   # Windows does not have symlink
-            retry
-          rescue SystemCallError
-          end
-        end
-        raise err
-      end
-    end
-
-    def preorder_traverse
-      stack = [self]
-      while ent = stack.pop
-        yield ent
-        stack.concat ent.entries.reverse if ent.directory?
-      end
-    end
-
-    alias traverse preorder_traverse
-
-    def postorder_traverse
-      if directory?
-        entries().each do |ent|
-          ent.postorder_traverse do |e|
-            yield e
-          end
-        end
-      end
-      yield self
-    end
-
-    private
-
-    $fileutils_rb_have_lchmod = nil
-
-    def have_lchmod?
-      # This is not MT-safe, but it does not matter.
-      if $fileutils_rb_have_lchmod == nil
-        $fileutils_rb_have_lchmod = check_have_lchmod?
-      end
-      $fileutils_rb_have_lchmod
-    end
-
-    def check_have_lchmod?
-      return false unless File.respond_to?(:lchmod)
-      File.lchmod 0
-      return true
-    rescue NotImplementedError
-      return false
-    end
-
-    $fileutils_rb_have_lchown = nil
-
-    def have_lchown?
-      # This is not MT-safe, but it does not matter.
-      if $fileutils_rb_have_lchown == nil
-        $fileutils_rb_have_lchown = check_have_lchown?
-      end
-      $fileutils_rb_have_lchown
-    end
-
-    def check_have_lchown?
-      return false unless File.respond_to?(:lchown)
-      File.lchown nil, nil
-      return true
-    rescue NotImplementedError
-      return false
-    end
-
-    def join(dir, base)
-      return dir.to_str if not base or base == '.'
-      return base.to_str if not dir or dir == '.'
-      File.join(dir, base)
-    end
-  end   # class Entry_
-
-  def fu_list(arg)   #:nodoc:
-    [arg].flatten.map {|path| path.to_str }
-  end
-  private_module_function :fu_list
-
-  def fu_each_src_dest(src, dest)   #:nodoc:
-    fu_each_src_dest0(src, dest) do |s, d|
-      raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d)
-      yield s, d
-    end
-  end
-  private_module_function :fu_each_src_dest
-
-  def fu_each_src_dest0(src, dest)   #:nodoc:
-    if src.is_a?(Array)
-      src.each do |s|
-        s = s.to_str
-        yield s, File.join(dest, File.basename(s))
-      end
-    else
-      src = src.to_str
-      if File.directory?(dest)
-        yield src, File.join(dest, File.basename(src))
-      else
-        yield src, dest.to_str
-      end
-    end
-  end
-  private_module_function :fu_each_src_dest0
-
-  def fu_same?(a, b)   #:nodoc:
-    if fu_have_st_ino?
-      st1 = File.stat(a)
-      st2 = File.stat(b)
-      st1.dev == st2.dev and st1.ino == st2.ino
-    else
-      File.expand_path(a) == File.expand_path(b)
-    end
-  rescue Errno::ENOENT
-    return false
-  end
-  private_module_function :fu_same?
-
-  def fu_have_st_ino?   #:nodoc:
-    not fu_windows?
-  end
-  private_module_function :fu_have_st_ino?
-
-  def fu_check_options(options, optdecl)   #:nodoc:
-    h = options.dup
-    optdecl.each do |opt|
-      h.delete opt
-    end
-    raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless h.empty?
-  end
-  private_module_function :fu_check_options
-
-  def fu_update_option(args, new)   #:nodoc:
-    if args.last.is_a?(Hash)
-      args[-1] = args.last.dup.update(new)
-    else
-      args.push new
-    end
-    args
-  end
-  private_module_function :fu_update_option
-
-  @fileutils_output = $stderr
-  @fileutils_label  = ''
-
-  def fu_output_message(msg)   #:nodoc:
-    @fileutils_output ||= $stderr
-    @fileutils_label  ||= ''
-    @fileutils_output.puts @fileutils_label + msg
-  end
-  private_module_function :fu_output_message
-
-  #
-  # Returns an Array of method names which have any options.
-  #
-  #   p FileUtils.commands  #=> ["chmod", "cp", "cp_r", "install", ...]
-  #
-  def FileUtils.commands
-    OPT_TABLE.keys
-  end
-
-  #
-  # Returns an Array of option names.
-  #
-  #   p FileUtils.options  #=> ["noop", "force", "verbose", "preserve", "mode"]
-  #
-  def FileUtils.options
-    OPT_TABLE.values.flatten.uniq.map {|sym| sym.to_s }
-  end
-
-  #
-  # Returns true if the method +mid+ have an option +opt+.
-  #
-  #   p FileUtils.have_option?(:cp, :noop)     #=> true
-  #   p FileUtils.have_option?(:rm, :force)    #=> true
-  #   p FileUtils.have_option?(:rm, :perserve) #=> false
-  #
-  def FileUtils.have_option?(mid, opt)
-    li = OPT_TABLE[mid.to_s] or raise ArgumentError, "no such method: #{mid}"
-    li.include?(opt)
-  end
-
-  #
-  # Returns an Array of option names of the method +mid+.
-  #
-  #   p FileUtils.options(:rm)  #=> ["noop", "verbose", "force"]
-  #
-  def FileUtils.options_of(mid)
-    OPT_TABLE[mid.to_s].map {|sym| sym.to_s }
-  end
-
-  #
-  # Returns an Array of method names which have the option +opt+.
-  #
-  #   p FileUtils.collect_method(:preserve) #=> ["cp", "cp_r", "copy", "install"]
-  #
-  def FileUtils.collect_method(opt)
-    OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) }
-  end
-
-  METHODS = singleton_methods() - %w( private_module_function
-      commands options have_option? options_of collect_method )
-
-  # 
-  # This module has all methods of FileUtils module, but it outputs messages
-  # before acting.  This equates to passing the <tt>:verbose</tt> flag to
-  # methods in FileUtils.
-  # 
-  module Verbose
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:verbose).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :verbose => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-  # 
-  # This module has all methods of FileUtils module, but never changes
-  # files/directories.  This equates to passing the <tt>:noop</tt> flag
-  # to methods in FileUtils.
-  # 
-  module NoWrite
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:noop).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :noop => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-  # 
-  # This module has all methods of FileUtils module, but never changes
-  # files/directories, with printing message before acting.
-  # This equates to passing the <tt>:noop</tt> and <tt>:verbose</tt> flag
-  # to methods in FileUtils.
-  # 
-  module DryRun
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:noop).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :noop => true, :verbose => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/finalize.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/finalize.rb
deleted file mode 100644
index 9b6b302..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/finalize.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-#--
-#   finalizer.rb - 
-#   	$Release Version: 0.3$
-#   	$Revision: 1.4 $
-#   	$Date: 1998/02/27 05:34:33 $
-#   	by Keiju ISHITSUKA
-#++
-#
-# Usage:
-#
-# add dependency R_method(obj, dependant)
-#   add(obj, dependant, method = :finalize, *opt)
-#   add_dependency(obj, dependant, method = :finalize, *opt)
-#
-# delete dependency R_method(obj, dependant)
-#   delete(obj_or_id, dependant, method = :finalize)
-#   delete_dependency(obj_or_id, dependant, method = :finalize)
-#
-# delete dependency R_*(obj, dependant)
-#   delete_all_dependency(obj_or_id, dependant)
-#
-# delete dependency R_method(*, dependant)
-#   delete_by_dependant(dependant, method = :finalize)
-#
-# delete dependency R_*(*, dependant)
-#   delete_all_by_dependant(dependant)
-#
-# delete all dependency R_*(*, *)
-#   delete_all
-#
-# finalize the dependant connected by dependency R_method(obj, dependtant).
-#   finalize(obj_or_id, dependant, method = :finalize)
-#   finalize_dependency(obj_or_id, dependant, method = :finalize)
-#
-# finalize all dependants connected by dependency R_*(obj, dependtant).
-#   finalize_all_dependency(obj_or_id, dependant)
-#
-# finalize the dependant connected by dependency R_method(*, dependtant).
-#   finalize_by_dependant(dependant, method = :finalize)
-#
-# finalize all dependants connected by dependency R_*(*, dependant).
-#   finalize_all_by_dependant(dependant)
-#
-# finalize all dependency registered to the Finalizer.
-#   finalize_all
-#
-# stop invoking Finalizer on GC.
-#   safe{..}
-#
-
-module Finalizer
-  RCS_ID='-$Id: finalize.rb,v 1.4 1998/02/27 05:34:33 keiju Exp keiju $-'
-
-  class <<self
-    # @dependency: {id => [[dependant, method, *opt], ...], ...}
-
-    # add dependency R_method(obj, dependant)
-    def add_dependency(obj, dependant, method = :finalize, *opt)
-      ObjectSpace.call_finalizer(obj)
-      method = method.intern unless method.kind_of?(Integer)
-      assoc = [dependant, method].concat(opt)
-      if dep = @dependency[obj.object_id]
-	dep.push assoc
-      else
-	@dependency[obj.object_id] = [assoc]
-      end
-    end
-    alias add add_dependency
-
-    # delete dependency R_method(obj, dependant)
-    def delete_dependency(id, dependant, method = :finalize)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d == dependant && m == method
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-    alias delete delete_dependency
-
-    # delete dependency R_*(obj, dependant)
-    def delete_all_dependency(id, dependant)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d == dependant
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-
-    # delete dependency R_method(*, dependant)
-    def delete_by_dependant(dependant, method = :finalize)
-      method = method.intern unless method.kind_of?(Integer)
-      for id in @dependency.keys
-	delete(id, dependant, method)
-      end
-    end
-
-    # delete dependency R_*(*, dependant)
-    def delete_all_by_dependant(dependant)
-      for id in @dependency.keys
-	delete_all_dependency(id, dependant)
-      end
-    end
-
-    # finalize the depandant connected by dependency R_method(obj, dependtant)
-    def finalize_dependency(id, dependant, method = :finalize)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assocs in @dependency[id]
-	assocs.delete_if do
-	  |d, m, *o|
-	  d.send(m, id, *o) if ret = d == dependant && m == method
-	  ret
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-    alias finalize finalize_dependency
-
-    # finalize all dependants connected by dependency R_*(obj, dependtant)
-    def finalize_all_dependency(id, dependant)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d.send(m, id, *o) if ret = d == dependant
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-
-    # finalize the dependant connected by dependency R_method(*, dependtant)
-    def finalize_by_dependant(dependant, method = :finalize)
-      method = method.intern unless method.kind_of?(Integer)
-      for id in @dependency.keys
-	finalize(id, dependant, method)
-      end
-    end
-
-    # finalize all dependants connected by dependency R_*(*, dependtant)
-    def finalize_all_by_dependant(dependant)
-      for id in @dependency.keys
-	finalize_all_dependency(id, dependant)
-      end
-    end
-
-    # finalize all dependants registered to the Finalizer.
-    def finalize_all
-      for id, assocs in @dependency
-	for dependant, method, *opt in assocs
-	  dependant.send(method, id, *opt)
-	end
-	assocs.clear
-      end
-    end
-
-    # method to call finalize_* safely.
-    def safe
-      old_status = Thread.critical
-      Thread.critical = true
-      ObjectSpace.remove_finalizer(@proc)
-      begin
-	yield
-      ensure
-	ObjectSpace.add_finalizer(@proc)
-	Thread.critical = old_status
-      end
-    end
-
-    private
-
-    # registering function to ObjectSpace#add_finalizer
-    def final_of(id)
-      if assocs = @dependency.delete(id)
-	for dependant, method, *opt in assocs
-	  dependant.send(method, id, *opt)
-	end
-      end
-    end
-
-  end
-  @dependency = Hash.new
-  @proc = proc{|id| final_of(id)}
-  ObjectSpace.add_finalizer(@proc)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/find.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/find.rb
deleted file mode 100644
index 0d22dd6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/find.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# find.rb: the Find module for processing all files under a given directory.
-#
-
-#
-# The +Find+ module supports the top-down traversal of a set of file paths.
-#
-# For example, to total the size of all files under your home directory,
-# ignoring anything in a "dot" directory (e.g. $HOME/.ssh):
-#
-#   require 'find'
-#
-#   total_size = 0
-#
-#   Find.find(ENV["HOME"]) do |path|
-#     if FileTest.directory?(path)
-#       if File.basename(path)[0] == ?.
-#         Find.prune       # Don't look any further into this directory.
-#       else
-#         next
-#       end
-#     else
-#       total_size += FileTest.size(path)
-#     end
-#   end
-#
-module Find
-
-  #
-  # Calls the associated block with the name of every file and directory listed
-  # as arguments, then recursively on their subdirectories, and so on.
-  #
-  # See the +Find+ module documentation for an example.
-  #
-  def find(*paths) # :yield: path
-    paths.collect!{|d| d.dup}
-    while file = paths.shift
-      catch(:prune) do
-	yield file.dup.taint
-        next unless File.exist? file
-	begin
-	  if File.lstat(file).directory? then
-	    d = Dir.open(file)
-	    begin
-	      for f in d
-		next if f == "." or f == ".."
-		if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then
-		  f = file + f
-		elsif file == "/" then
-		  f = "/" + f
-		else
-		  f = File.join(file, f)
-		end
-		paths.unshift f.untaint
-	      end
-	    ensure
-	      d.close
-	    end
-	  end
-        rescue Errno::ENOENT, Errno::EACCES
-	end
-      end
-    end
-  end
-
-  #
-  # Skips the current file or directory, restarting the loop with the next
-  # entry. If the current file is a directory, that directory will not be
-  # recursively entered. Meaningful only within the block associated with
-  # Find::find.
-  #
-  # See the +Find+ module documentation for an example.
-  #
-  def prune
-    throw :prune
-  end
-
-  module_function :find, :prune
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/forwardable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/forwardable.rb
deleted file mode 100644
index e2a2727..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/forwardable.rb
+++ /dev/null
@@ -1,218 +0,0 @@
-# = forwardable - Support for the Delegation Pattern
-#
-#    $Release Version: 1.1$
-#    $Revision: 11708 $
-#    $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#    by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-#    Documentation by James Edward Gray II and Gavin Sinclair
-#
-# == Introduction
-#
-# This library allows you delegate method calls to an object, on a method by
-# method basis.  You can use Forwardable to setup this delegation at the class
-# level, or SingleForwardable to handle it at the object level.
-#
-# == Notes
-#
-# Be advised, RDoc will not detect delegated methods.
-#
-# <b>forwardable.rb provides single-method delegation via the
-# def_delegator() and def_delegators() methods.  For full-class
-# delegation via DelegateClass(), see delegate.rb.</b>
-#
-# == Examples
-#
-# === Forwardable
-#
-# Forwardable makes building a new class based on existing work, with a proper
-# interface, almost trivial.  We want to rely on what has come before obviously,
-# but with delegation we can take just the methods we need and even rename them
-# as appropriate.  In many cases this is preferable to inheritance, which gives
-# us the entire old interface, even if much of it isn't needed.
-#
-#   class Queue
-#     extend Forwardable
-#     
-#     def initialize
-#       @q = [ ]    # prepare delegate object
-#     end
-#     
-#     # setup prefered interface, enq() and deq()...
-#     def_delegator :@q, :push, :enq
-#     def_delegator :@q, :shift, :deq
-#     
-#     # support some general Array methods that fit Queues well
-#     def_delegators :@q, :clear, :first, :push, :shift, :size
-#   end
-# 
-#   q = Queue.new
-#   q.enq 1, 2, 3, 4, 5
-#   q.push 6
-# 
-#   q.shift    # => 1
-#   while q.size > 0
-#     puts q.deq
-#   end
-# 
-#   q.enq "Ruby", "Perl", "Python"
-#   puts q.first
-#   q.clear
-#   puts q.first
-#
-# <i>Prints:</i>
-#
-#   2
-#   3
-#   4
-#   5
-#   6
-#   Ruby
-#   nil
-#
-# === SingleForwardable
-#
-#    printer = String.new
-#    printer.extend SingleForwardable        # prepare object for delegation
-#    printer.def_delegator "STDOUT", "puts"  # add delegation for STDOUT.puts()
-#    printer.puts "Howdy!"
-#
-# <i>Prints:</i>
-#
-#    Howdy!
-
-#
-# The Forwardable module provides delegation of specified
-# methods to a designated object, using the methods #def_delegator
-# and #def_delegators.
-#
-# For example, say you have a class RecordCollection which
-# contains an array <tt>@records</tt>.  You could provide the lookup method
-# #record_number(), which simply calls #[] on the <tt>@records</tt>
-# array, like this:
-#
-#   class RecordCollection
-#     extend Forwardable
-#     def_delegator :@records, :[], :record_number
-#   end
-#
-# Further, if you wish to provide the methods #size, #<<, and #map,
-# all of which delegate to @records, this is how you can do it:
-#
-#   class RecordCollection
-#     # extend Forwardable, but we did that above
-#     def_delegators :@records, :size, :<<, :map
-#   end
-#
-# Also see the example at forwardable.rb.
-#
-module Forwardable
-
-  @debug = nil
-  class<<self
-    # force Forwardable to show up in stack backtraces of delegated methods
-    attr_accessor :debug
-  end
-
-  #
-  # Shortcut for defining multiple delegator methods, but with no
-  # provision for using a different name.  The following two code
-  # samples have the same effect:
-  #
-  #   def_delegators :@records, :size, :<<, :map
-  #
-  #   def_delegator :@records, :size
-  #   def_delegator :@records, :<<
-  #   def_delegator :@records, :map
-  #
-  # See the examples at Forwardable and forwardable.rb.
-  #
-  def def_instance_delegators(accessor, *methods)
-    for method in methods
-      def_instance_delegator(accessor, method)
-    end
-  end
-
-  #
-  # Defines a method _method_ which delegates to _obj_ (i.e. it calls
-  # the method of the same name in _obj_).  If _new_name_ is
-  # provided, it is used as the name for the delegate method.
-  #
-  # See the examples at Forwardable and forwardable.rb.
-  #
-  def def_instance_delegator(accessor, method, ali = method)
-    accessor = accessor.id2name if accessor.kind_of?(Integer)
-    method = method.id2name if method.kind_of?(Integer)
-    ali = ali.id2name if ali.kind_of?(Integer)
-
-    module_eval(<<-EOS, "(__FORWARDABLE__)", 1)
-      def #{ali}(*args, &block)
-	begin
-	  #{accessor}.__send__(:#{method}, *args, &block)
-	rescue Exception
-	  $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
-	  Kernel::raise
-	end
-      end
-    EOS
-  end
-
-  alias def_delegators def_instance_delegators
-  alias def_delegator def_instance_delegator
-end
-
-#
-# The SingleForwardable module provides delegation of specified
-# methods to a designated object, using the methods #def_delegator
-# and #def_delegators.  This module is similar to Forwardable, but it works on
-# objects themselves, instead of their defining classes.
-#
-# Also see the example at forwardable.rb.
-#
-module SingleForwardable
-  #
-  # Shortcut for defining multiple delegator methods, but with no
-  # provision for using a different name.  The following two code
-  # samples have the same effect:
-  #
-  #   single_forwardable.def_delegators :@records, :size, :<<, :map
-  #
-  #   single_forwardable.def_delegator :@records, :size
-  #   single_forwardable.def_delegator :@records, :<<
-  #   single_forwardable.def_delegator :@records, :map
-  #
-  # See the example at forwardable.rb.
-  #
-  def def_singleton_delegators(accessor, *methods)
-    for method in methods
-      def_singleton_delegator(accessor, method)
-    end
-  end
-
-  #
-  # Defines a method _method_ which delegates to _obj_ (i.e. it calls
-  # the method of the same name in _obj_).  If _new_name_ is
-  # provided, it is used as the name for the delegate method.
-  #
-  # See the example at forwardable.rb.
-  #
-  def def_singleton_delegator(accessor, method, ali = method)
-    accessor = accessor.id2name if accessor.kind_of?(Integer)
-    method = method.id2name if method.kind_of?(Integer)
-    ali = ali.id2name if ali.kind_of?(Integer)
-
-    instance_eval(<<-EOS, "(__FORWARDABLE__)", 1)
-       def #{ali}(*args, &block)
-	 begin
-	   #{accessor}.__send__(:#{method}, *args,&block)
-	 rescue Exception
-	   $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
-	   Kernel::raise
-	 end
-       end
-    EOS
-  end
-
-  alias def_delegators def_singleton_delegators
-  alias def_delegator def_singleton_delegator
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ftools.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ftools.rb
deleted file mode 100644
index 5f08233..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ftools.rb
+++ /dev/null
@@ -1,261 +0,0 @@
-# 
-# = ftools.rb: Extra tools for the File class
-#
-# Author:: WATANABE, Hirofumi
-# Documentation:: Zachary Landau
-#
-# This library can be distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# It is included in the Ruby standard library.
-#
-# == Description
-#
-# ftools adds several (class, not instance) methods to the File class, for
-# copying, moving, deleting, installing, and comparing files, as well as
-# creating a directory path.  See the File class for details.
-#
-# FileUtils contains all or nearly all the same functionality and more, and
-# is a recommended option over ftools 
-#
-# When you
-#
-#   require 'ftools'
-#
-# then the File class aquires some utility methods for copying, moving, and
-# deleting files, and more.
-#
-# See the method descriptions below, and consider using FileUtils as it is
-# more comprehensive.
-#
-class File
-end
-
-class << File
-
-  BUFSIZE = 8 * 1024
-
-  #
-  # If +to+ is a valid directory, +from+ will be appended to +to+, adding
-  # and escaping backslashes as necessary. Otherwise, +to+ will be returned.
-  # Useful for appending +from+ to +to+ only if the filename was not specified
-  # in +to+. 
-  #
-  def catname(from, to)
-    if directory? to
-      join to.sub(%r([/\\]$), ''), basename(from)
-    else
-      to
-    end
-  end
-
-  #
-  # Copies a file +from+ to +to+. If +to+ is a directory, copies +from+
-  # to <tt>to/from</tt>.
-  #
-  def syscopy(from, to)
-    to = catname(from, to)
-
-    fmode = stat(from).mode
-    tpath = to
-    not_exist = !exist?(tpath)
-
-    from = open(from, "rb")
-    to = open(to, "wb")
-
-    begin
-      while true
-	to.syswrite from.sysread(BUFSIZE)
-      end
-    rescue EOFError
-      ret = true
-    rescue
-      ret = false
-    ensure
-      to.close
-      from.close
-    end
-    chmod(fmode, tpath) if not_exist
-    ret
-  end
-
-  #
-  # Copies a file +from+ to +to+ using #syscopy. If +to+ is a directory,
-  # copies +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from -> to</tt>
-  # is printed.
-  #
-  def copy(from, to, verbose = false)
-    $stderr.print from, " -> ", catname(from, to), "\n" if verbose
-    syscopy from, to
-  end
-
-  alias cp copy
-
-  #
-  # Moves a file +from+ to +to+ using #syscopy. If +to+ is a directory,
-  # copies from +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from ->
-  # to</tt> is printed.
-  #
-  def move(from, to, verbose = false)
-    to = catname(from, to)
-    $stderr.print from, " -> ", to, "\n" if verbose
-
-    if RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/ and file? to
-      unlink to
-    end
-    fstat = stat(from)
-    begin
-      rename from, to
-    rescue
-      begin
-        symlink readlink(from), to and unlink from
-      rescue
-	from_stat = stat(from)
-	syscopy from, to and unlink from
-	utime(from_stat.atime, from_stat.mtime, to)
-	begin
-	  chown(fstat.uid, fstat.gid, to)
-	rescue
-	end
-      end
-    end
-  end
-
-  alias mv move
-
-  #
-  # Returns +true+ if and only if the contents of files +from+ and +to+ are
-  # identical. If +verbose+ is +true+, <tt>from <=> to</tt> is printed.
-  #
-  def compare(from, to, verbose = false)
-    $stderr.print from, " <=> ", to, "\n" if verbose
-
-    return false if stat(from).size != stat(to).size
-
-    from = open(from, "rb")
-    to = open(to, "rb")
-
-    ret = false
-    fr = tr = ''
-
-    begin
-      while fr == tr
-	fr = from.read(BUFSIZE)
-	if fr
-	  tr = to.read(fr.size)
-	else
-	  ret = to.read(BUFSIZE)
-	  ret = !ret || ret.length == 0
-	  break
-	end
-      end
-    rescue
-      ret = false
-    ensure
-      to.close
-      from.close
-    end
-    ret
-  end
-
-  alias cmp compare
-
-  #
-  # Removes a list of files. Each parameter should be the name of the file to
-  # delete. If the last parameter isn't a String, verbose mode will be enabled.
-  # Returns the number of files deleted.
-  #
-  def safe_unlink(*files)
-    verbose = if files[-1].is_a? String then false else files.pop end
-    files.each do |file|
-      begin
-        unlink file
-        $stderr.print "removing ", file, "\n" if verbose
-      rescue Errno::EACCES # for Windows
-        continue if symlink? file
-        begin
-          mode = stat(file).mode
-          o_chmod mode | 0200, file
-          unlink file
-          $stderr.print "removing ", file, "\n" if verbose
-        rescue
-          o_chmod mode, file rescue nil
-        end
-      rescue
-      end
-    end
-  end
-
-  alias rm_f safe_unlink
-
-  #
-  # Creates a directory and all its parent directories.
-  # For example,
-  #
-  #	File.makedirs '/usr/lib/ruby'
-  #
-  # causes the following directories to be made, if they do not exist.
-  #	* /usr
-  #	* /usr/lib
-  #	* /usr/lib/ruby
-  #
-  # You can pass several directories, each as a parameter. If the last
-  # parameter isn't a String, verbose mode will be enabled.
-  #
-  def makedirs(*dirs)
-    verbose = if dirs[-1].is_a? String then false else dirs.pop end
-    mode = 0755
-    for dir in dirs
-      parent = dirname(dir)
-      next if parent == dir or directory? dir
-      makedirs parent unless directory? parent
-      $stderr.print "mkdir ", dir, "\n" if verbose
-      if basename(dir) != ""
-        begin
-          Dir.mkdir dir, mode
-        rescue SystemCallError
-          raise unless directory? dir
-        end
-      end
-    end
-  end
-
-  alias mkpath makedirs
-
-  alias o_chmod chmod
-
-  vsave, $VERBOSE = $VERBOSE, false
-
-  #
-  # Changes permission bits on +files+ to the bit pattern represented
-  # by +mode+. If the last parameter isn't a String, verbose mode will
-  # be enabled.
-  #
-  #   File.chmod 0755, 'somecommand'
-  #   File.chmod 0644, 'my.rb', 'your.rb', true
-  #
-  def chmod(mode, *files)
-    verbose = if files[-1].is_a? String then false else files.pop end
-    $stderr.printf "chmod %04o %s\n", mode, files.join(" ") if verbose
-    o_chmod mode, *files
-  end
-  $VERBOSE = vsave
-
-  #
-  # If +src+ is not the same as +dest+, copies it and changes the permission
-  # mode to +mode+. If +dest+ is a directory, destination is <tt>dest/src</tt>.
-  # If +mode+ is not set, default is used. If +verbose+ is set to true, the
-  # name of each file copied will be printed.
-  #
-  def install(from, to, mode = nil, verbose = false)
-    to = catname(from, to)
-    unless exist? to and cmp from, to
-      safe_unlink to if exist? to
-      cp from, to, verbose
-      chmod mode, to, verbose if mode
-    end
-  end
-
-end
-
-# vi:set sw=2:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/generator.rb
deleted file mode 100644
index fcc2c64..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/generator.rb
+++ /dev/null
@@ -1,380 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# $Idaemons: /home/cvs/rb/generator.rb,v 1.8 2001/10/03 08:54:32 knu Exp $
-# $RoughId: generator.rb,v 1.10 2003/10/14 19:36:58 knu Exp $
-# $Id: generator.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#++
-#
-# = generator.rb: convert an internal iterator to an external one
-#
-# Copyright (c) 2001,2003 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under
-# the same terms as Ruby.
-#
-# == Overview
-#
-# This library provides the Generator class, which converts an
-# internal iterator (i.e. an Enumerable object) to an external
-# iterator.  In that form, you can roll many iterators independently.
-#
-# The SyncEnumerator class, which is implemented using Generator,
-# makes it easy to roll many Enumerable objects synchronously.
-#
-# See the respective classes for examples of usage.
-
-
-#
-# Generator converts an internal iterator (i.e. an Enumerable object)
-# to an external iterator.
-#
-# Note that it is not very fast since it is implemented using
-# continuations, which are currently slow.
-#
-# == Example
-#
-#   require 'generator'
-#
-#   # Generator from an Enumerable object
-#   g = Generator.new(['A', 'B', 'C', 'Z'])
-#
-#   while g.next?
-#     puts g.next
-#   end
-#
-#   # Generator from a block
-#   g = Generator.new { |g|
-#     for i in 'A'..'C'
-#       g.yield i
-#     end
-#
-#     g.yield 'Z'
-#   }
-#
-#   # The same result as above
-#   while g.next?
-#     puts g.next
-#   end
-#   
-class Generator
-  include Enumerable
-
-  # Creates a new generator either from an Enumerable object or from a
-  # block.
-  #
-  # In the former, block is ignored even if given.
-  #
-  # In the latter, the given block is called with the generator
-  # itself, and expected to call the +yield+ method for each element.
-  def initialize(enum = nil, &block)
-    if enum
-      @block = proc { |g|
-	enum.each { |x| g.yield x }
-      }
-    else
-      @block = block
-    end
-
-    @index = 0
-    @queue = []
-    @cont_next = @cont_yield = @cont_endp = nil
-
-    if @cont_next = callcc { |c| c }
-      @block.call(self)
-
-      @cont_endp.call(nil) if @cont_endp
-    end
-
-    self
-  end
-
-  # Yields an element to the generator.
-  def yield(value)
-    if @cont_yield = callcc { |c| c }
-      @queue << value
-      @cont_next.call(nil)
-    end
-
-    self
-  end
-
-  # Returns true if the generator has reached the end.
-  def end?()
-    if @cont_endp = callcc { |c| c }
-      @cont_yield.nil? && @queue.empty?
-    else
-      @queue.empty?
-    end
-  end
-
-  # Returns true if the generator has not reached the end yet.
-  def next?()
-    !end?
-  end
-
-  # Returns the current index (position) counting from zero.
-  def index()
-    @index
-  end
-
-  # Returns the current index (position) counting from zero.
-  def pos()
-    @index
-  end
-
-  # Returns the element at the current position and moves forward.
-  def next()
-    if end?
-      raise EOFError, "no more elements available"
-    end
-
-    if @cont_next = callcc { |c| c }
-      @cont_yield.call(nil) if @cont_yield
-    end
-
-    @index += 1
-
-    @queue.shift
-  end
-
-  # Returns the element at the current position.
-  def current()
-    if @queue.empty?
-      raise EOFError, "no more elements available"
-    end
-
-    @queue.first
-  end
-
-  # Rewinds the generator.
-  def rewind()
-    initialize(nil, &@block) if @index.nonzero?
-
-    self
-  end
-
-  # Rewinds the generator and enumerates the elements.
-  def each
-    rewind
-
-    until end?
-      yield self.next
-    end
-
-    self
-  end
-end
-
-#
-# SyncEnumerator creates an Enumerable object from multiple Enumerable
-# objects and enumerates them synchronously.
-#
-# == Example
-#
-#   require 'generator'
-#
-#   s = SyncEnumerator.new([1,2,3], ['a', 'b', 'c'])
-#
-#   # Yields [1, 'a'], [2, 'b'], and [3,'c']
-#   s.each { |row| puts row.join(', ') }
-#
-class SyncEnumerator
-  include Enumerable
-
-  # Creates a new SyncEnumerator which enumerates rows of given
-  # Enumerable objects.
-  def initialize(*enums)
-    @gens = enums.map { |e| Generator.new(e) }
-  end
-
-  # Returns the number of enumerated Enumerable objects, i.e. the size
-  # of each row.
-  def size
-    @gens.size
-  end
-
-  # Returns the number of enumerated Enumerable objects, i.e. the size
-  # of each row.
-  def length
-    @gens.length
-  end
-
-  # Returns true if the given nth Enumerable object has reached the
-  # end.  If no argument is given, returns true if any of the
-  # Enumerable objects has reached the end.
-  def end?(i = nil)
-    if i.nil?
-      @gens.detect { |g| g.end? } ? true : false
-    else
-      @gens[i].end?
-    end
-  end
-
-  # Enumerates rows of the Enumerable objects.
-  def each
-    @gens.each { |g| g.rewind }
-
-    loop do
-      count = 0
-
-      ret = @gens.map { |g|
-	if g.end?
-	  count += 1
-	  nil
-	else
-	  g.next
-	end
-      }
-
-      if count == @gens.size
-	break
-      end
-
-      yield ret
-    end
-
-    self
-  end
-end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-
-class TC_Generator < Test::Unit::TestCase
-  def test_block1
-    g = Generator.new { |g|
-      # no yield's
-    }
-
-    assert_equal(0, g.pos)
-    assert_raises(EOFError) { g.current }
-  end
-
-  def test_block2
-    g = Generator.new { |g|
-      for i in 'A'..'C'
-        g.yield i
-      end
-
-      g.yield 'Z'
-    }
-
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-
-    assert_equal(true, g.next?)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.next)
-
-    assert_equal(1, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.current)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.next)
-
-    assert_equal(g, g.rewind)
-
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-
-    assert_equal(true, g.next?)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.next)
-
-    assert_equal(1, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.current)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.next)
-
-    assert_equal(2, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(2, g.pos)
-    assert_equal('C', g.current)
-    assert_equal(2, g.pos)
-    assert_equal('C', g.next)
-
-    assert_equal(3, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(3, g.pos)
-    assert_equal('Z', g.current)
-    assert_equal(3, g.pos)
-    assert_equal('Z', g.next)
-
-    assert_equal(4, g.pos)
-    assert_equal(false, g.next?)
-    assert_raises(EOFError) { g.next }
-  end
-
-  def test_each
-    a = [5, 6, 7, 8, 9]
-
-    g = Generator.new(a)
-
-    i = 0
-
-    g.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-
-      break if i == 3
-    }
-
-    assert_equal(3, i)
-
-    i = 0
-
-    g.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-    }
-
-    assert_equal(5, i)
-  end
-end
-
-class TC_SyncEnumerator < Test::Unit::TestCase
-  def test_each
-    r = ['a'..'f', 1..10, 10..20]
-    ra = r.map { |x| x.to_a }
-
-    a = (0...(ra.map {|x| x.size}.max)).map { |i| ra.map { |x| x[i] } }
-
-    s = SyncEnumerator.new(*r)
-
-    i = 0
-
-    s.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-
-      break if i == 3
-    }
-
-    assert_equal(3, i)
-
-    i = 0
-
-    s.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-    }
-
-    assert_equal(a.size, i)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getoptlong.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getoptlong.rb
deleted file mode 100644
index 4d00441..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getoptlong.rb
+++ /dev/null
@@ -1,621 +0,0 @@
-#
-# GetoptLong for Ruby
-#
-# Copyright (C) 1998, 1999, 2000  Motoyuki Kasahara.
-#
-# You may redistribute and/or modify this library under the same license
-# terms as Ruby.
-#
-# See GetoptLong for documentation.
-#
-# Additional documents and the latest version of `getoptlong.rb' can be
-# found at http://www.sra.co.jp/people/m-kasahr/ruby/getoptlong/
-
-# The GetoptLong class allows you to parse command line options similarly to
-# the GNU getopt_long() C library call. Note, however, that GetoptLong is a 
-# pure Ruby implementation.
-#
-# GetoptLong allows for POSIX-style options like <tt>--file</tt> as well 
-# as single letter options like <tt>-f</tt>
-#
-# The empty option <tt>--</tt> (two minus symbols) is used to end option
-# processing. This can be particularly important if options have optional
-# arguments.
-#
-# Here is a simple example of usage:
-#
-#     # == Synopsis
-#     #
-#     # hello: greets user, demonstrates command line parsing
-#     #
-#     # == Usage
-#     #
-#     # hello [OPTION] ... DIR
-#     #
-#     # -h, --help:
-#     #    show help
-#     #
-#     # --repeat x, -n x:
-#     #    repeat x times
-#     #
-#     # --name [name]:
-#     #    greet user by name, if name not supplied default is John
-#     #
-#     # DIR: The directory in which to issue the greeting.
-#     
-#     require 'getoptlong'
-#     require 'rdoc/usage'
-#     
-#     opts = GetoptLong.new(
-#       [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
-#       [ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
-#       [ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
-#     )
-#     
-#     dir = nil
-#     name = nil
-#     repetitions = 1
-#     opts.each do |opt, arg|
-#       case opt
-#         when '--help'
-#           RDoc::usage
-#         when '--repeat'
-#           repetitions = arg.to_i
-#         when '--name'
-#           if arg == ''
-#             name = 'John'
-#           else
-#             name = arg
-#           end
-#       end
-#     end
-#     
-#     if ARGV.length != 1
-#       puts "Missing dir argument (try --help)"
-#       exit 0
-#     end
-#     
-#     dir = ARGV.shift
-#     
-#     Dir.chdir(dir)
-#     for i in (1..repetitions)
-#       print "Hello"
-#       if name
-#         print ", #{name}"
-#       end
-#       puts
-#     end
-#
-# Example command line:
-#
-#     hello -n 6 --name -- /tmp
-#
-class GetoptLong
-  #
-  # Orderings.
-  #
-  ORDERINGS = [REQUIRE_ORDER = 0, PERMUTE = 1, RETURN_IN_ORDER = 2]
-
-  #
-  # Argument flags.
-  #
-  ARGUMENT_FLAGS = [NO_ARGUMENT = 0, REQUIRED_ARGUMENT = 1,
-    OPTIONAL_ARGUMENT = 2]
-
-  #
-  # Status codes.
-  #
-  STATUS_YET, STATUS_STARTED, STATUS_TERMINATED = 0, 1, 2
-
-  #
-  # Error types.
-  #
-  class Error  < StandardError; end
-  class AmbigousOption   < Error; end
-  class NeedlessArgument < Error; end
-  class MissingArgument  < Error; end
-  class InvalidOption    < Error; end
-
-  #
-  # Set up option processing.
-  #
-  # The options to support are passed to new() as an array of arrays.
-  # Each sub-array contains any number of String option names which carry 
-  # the same meaning, and one of the following flags:
-  #
-  # GetoptLong::NO_ARGUMENT :: Option does not take an argument.
-  #
-  # GetoptLong::REQUIRED_ARGUMENT :: Option always takes an argument.
-  #
-  # GetoptLong::OPTIONAL_ARGUMENT :: Option may or may not take an argument.
-  #
-  # The first option name is considered to be the preferred (canonical) name.
-  # Other than that, the elements of each sub-array can be in any order.
-  #
-  def initialize(*arguments)
-    #
-    # Current ordering.
-    #
-    if ENV.include?('POSIXLY_CORRECT')
-      @ordering = REQUIRE_ORDER
-    else
-      @ordering = PERMUTE
-    end
-
-    #
-    # Hash table of option names.
-    # Keys of the table are option names, and their values are canonical
-    # names of the options.
-    #
-    @canonical_names = Hash.new
-
-    #
-    # Hash table of argument flags.
-    # Keys of the table are option names, and their values are argument
-    # flags of the options.
-    #
-    @argument_flags = Hash.new
-
-    #
-    # Whether error messages are output to $deferr.
-    #
-    @quiet = FALSE
-
-    #
-    # Status code.
-    #
-    @status = STATUS_YET
-
-    #
-    # Error code.
-    #
-    @error = nil
-
-    #
-    # Error message.
-    #
-    @error_message = nil
-
-    #
-    # Rest of catenated short options.
-    #
-    @rest_singles = ''
-
-    #
-    # List of non-option-arguments.
-    # Append them to ARGV when option processing is terminated.
-    #
-    @non_option_arguments = Array.new
-
-    if 0 < arguments.length
-      set_options(*arguments)
-    end
-  end
-
-  #
-  # Set the handling of the ordering of options and arguments.
-  # A RuntimeError is raised if option processing has already started.
-  #
-  # The supplied value must be a member of GetoptLong::ORDERINGS. It alters
-  # the processing of options as follows:
-  #
-  # <b>REQUIRE_ORDER</b> :
-  # 
-  # Options are required to occur before non-options.
-  #
-  # Processing of options ends as soon as a word is encountered that has not
-  # been preceded by an appropriate option flag.
-  #
-  # For example, if -a and -b are options which do not take arguments,
-  # parsing command line arguments of '-a one -b two' would result in 
-  # 'one', '-b', 'two' being left in ARGV, and only ('-a', '') being 
-  # processed as an option/arg pair.
-  #
-  # This is the default ordering, if the environment variable
-  # POSIXLY_CORRECT is set. (This is for compatibility with GNU getopt_long.)
-  #
-  # <b>PERMUTE</b> :
-  #  
-  # Options can occur anywhere in the command line parsed. This is the 
-  # default behavior.
-  #
-  # Every sequence of words which can be interpreted as an option (with or
-  # without argument) is treated as an option; non-option words are skipped.
-  #
-  # For example, if -a does not require an argument and -b optionally takes
-  # an argument, parsing '-a one -b two three' would result in ('-a','') and
-  # ('-b', 'two') being processed as option/arg pairs, and 'one','three'
-  # being left in ARGV.
-  #
-  # If the ordering is set to PERMUTE but the environment variable
-  # POSIXLY_CORRECT is set, REQUIRE_ORDER is used instead. This is for
-  # compatibility with GNU getopt_long.
-  #
-  # <b>RETURN_IN_ORDER</b> :
-  #
-  # All words on the command line are processed as options. Words not 
-  # preceded by a short or long option flag are passed as arguments
-  # with an option of '' (empty string).
-  #
-  # For example, if -a requires an argument but -b does not, a command line
-  # of '-a one -b two three' would result in option/arg pairs of ('-a', 'one')
-  # ('-b', ''), ('', 'two'), ('', 'three') being processed.
-  #
-  def ordering=(ordering)
-    #
-    # The method is failed if option processing has already started.
-    #
-    if @status != STATUS_YET
-      set_error(ArgumentError, "argument error")
-      raise RuntimeError,
-	"invoke ordering=, but option processing has already started"
-    end
-
-    #
-    # Check ordering.
-    #
-    if !ORDERINGS.include?(ordering)
-      raise ArgumentError, "invalid ordering `#{ordering}'"
-    end
-    if ordering == PERMUTE && ENV.include?('POSIXLY_CORRECT')
-      @ordering = REQUIRE_ORDER
-    else
-      @ordering = ordering
-    end
-  end
-
-  #
-  # Return ordering.
-  #
-  attr_reader :ordering
-
-  #
-  # Set options. Takes the same argument as GetoptLong.new.
-  #
-  # Raises a RuntimeError if option processing has already started.
-  #
-  def set_options(*arguments)
-    #
-    # The method is failed if option processing has already started.
-    #
-    if @status != STATUS_YET
-      raise RuntimeError, 
-	"invoke set_options, but option processing has already started"
-    end
-
-    #
-    # Clear tables of option names and argument flags.
-    #
-    @canonical_names.clear
-    @argument_flags.clear
-
-    arguments.each do |arg|
-      #
-      # Each argument must be an Array.
-      #
-      if !arg.is_a?(Array)
-	raise ArgumentError, "the option list contains non-Array argument"
-      end
-
-      #
-      # Find an argument flag and it set to `argument_flag'.
-      #
-      argument_flag = nil
-      arg.each do |i|
-	if ARGUMENT_FLAGS.include?(i)
-	  if argument_flag != nil
-	    raise ArgumentError, "too many argument-flags"
-	  end
-	  argument_flag = i
-	end
-      end
-      raise ArgumentError, "no argument-flag" if argument_flag == nil
-
-      canonical_name = nil
-      arg.each do |i|
-	#
-	# Check an option name.
-	#
-	next if i == argument_flag
-	begin
-	  if !i.is_a?(String) || i !~ /^-([^-]|-.+)$/
-	    raise ArgumentError, "an invalid option `#{i}'"
-	  end
-	  if (@canonical_names.include?(i))
-	    raise ArgumentError, "option redefined `#{i}'"
-	  end
-	rescue
-	  @canonical_names.clear
-	  @argument_flags.clear
-	  raise
-	end
-
-	#
-	# Register the option (`i') to the `@canonical_names' and 
-	# `@canonical_names' Hashes.
-	#
-	if canonical_name == nil
-	  canonical_name = i
-	end
-	@canonical_names[i] = canonical_name
-	@argument_flags[i] = argument_flag
-      end
-      raise ArgumentError, "no option name" if canonical_name == nil
-    end
-    return self
-  end
-
-  #
-  # Set/Unset `quiet' mode.
-  #
-  attr_writer :quiet
-
-  #
-  # Return the flag of `quiet' mode.
-  #
-  attr_reader :quiet
-
-  #
-  # `quiet?' is an alias of `quiet'.
-  #
-  alias quiet? quiet
-
-  #
-  # Explicitly terminate option processing.
-  #
-  def terminate
-    return nil if @status == STATUS_TERMINATED
-    raise RuntimeError, "an error has occured" if @error != nil
-
-    @status = STATUS_TERMINATED
-    @non_option_arguments.reverse_each do |argument|
-      ARGV.unshift(argument)
-    end
-
-    @canonical_names = nil
-    @argument_flags = nil
-    @rest_singles = nil
-    @non_option_arguments = nil
-
-    return self
-  end
-
-  #
-  # Returns true if option processing has terminated, false otherwise.
-  #
-  def terminated?
-    return @status == STATUS_TERMINATED
-  end
-
-  #
-  # Set an error (protected).
-  #
-  def set_error(type, message)
-    $deferr.print("#{$0}: #{message}\n") if !@quiet
-
-    @error = type
-    @error_message = message
-    @canonical_names = nil
-    @argument_flags = nil
-    @rest_singles = nil
-    @non_option_arguments = nil
-
-    raise type, message
-  end
-  protected :set_error
-
-  #
-  # Examine whether an option processing is failed.
-  #
-  attr_reader :error
-
-  #
-  # `error?' is an alias of `error'.
-  #
-  alias error? error
-
-  # Return the appropriate error message in POSIX-defined format.
-  # If no error has occurred, returns nil.
-  #
-  def error_message
-    return @error_message
-  end
-
-  #
-  # Get next option name and its argument, as an Array of two elements.
-  #
-  # The option name is always converted to the first (preferred)
-  # name given in the original options to GetoptLong.new.
-  #
-  # Example: ['--option', 'value']
-  #
-  # Returns nil if the processing is complete (as determined by
-  # STATUS_TERMINATED).
-  #
-  def get
-    option_name, option_argument = nil, ''
-
-    #
-    # Check status.
-    #
-    return nil if @error != nil
-    case @status
-    when STATUS_YET
-      @status = STATUS_STARTED
-    when STATUS_TERMINATED
-      return nil
-    end
-
-    #
-    # Get next option argument.
-    #
-    if 0 < @rest_singles.length
-      argument = '-' + @rest_singles
-    elsif (ARGV.length == 0)
-      terminate
-      return nil
-    elsif @ordering == PERMUTE
-      while 0 < ARGV.length && ARGV[0] !~ /^-./
-	@non_option_arguments.push(ARGV.shift)
-      end
-      if ARGV.length == 0
-	terminate
-	return nil
-      end
-      argument = ARGV.shift
-    elsif @ordering == REQUIRE_ORDER 
-      if (ARGV[0] !~ /^-./)
-	terminate
-	return nil
-      end
-      argument = ARGV.shift
-    else
-      argument = ARGV.shift
-    end
-
-    #
-    # Check the special argument `--'.
-    # `--' indicates the end of the option list.
-    #
-    if argument == '--' && @rest_singles.length == 0
-      terminate
-      return nil
-    end
-
-    #
-    # Check for long and short options.
-    #
-    if argument =~ /^(--[^=]+)/ && @rest_singles.length == 0
-      #
-      # This is a long style option, which start with `--'.
-      #
-      pattern = $1
-      if @canonical_names.include?(pattern)
-	option_name = pattern
-      else
-	#
-	# The option `option_name' is not registered in `@canonical_names'.
-	# It may be an abbreviated.
-	#
-	match_count = 0
-	@canonical_names.each_key do |key|
-	  if key.index(pattern) == 0
-	    option_name = key
-	    match_count += 1
-	  end
-	end
-	if 2 <= match_count
-	  set_error(AmbigousOption, "option `#{argument}' is ambiguous")
-	elsif match_count == 0
-	  set_error(InvalidOption, "unrecognized option `#{argument}'")
-	end
-      end
-
-      #
-      # Check an argument to the option.
-      #
-      if @argument_flags[option_name] == REQUIRED_ARGUMENT
-	if argument =~ /=(.*)$/
-	  option_argument = $1
-	elsif 0 < ARGV.length
-	  option_argument = ARGV.shift
-	else
-	  set_error(MissingArgument,
-	            "option `#{argument}' requires an argument")
-	end
-      elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
-	if argument =~ /=(.*)$/
-	  option_argument = $1
-	elsif 0 < ARGV.length && ARGV[0] !~ /^-./
-	  option_argument = ARGV.shift
-	else
-	  option_argument = ''
-	end
-      elsif argument =~ /=(.*)$/
-	set_error(NeedlessArgument,
-		  "option `#{option_name}' doesn't allow an argument")
-      end
-
-    elsif argument =~ /^(-(.))(.*)/
-      #
-      # This is a short style option, which start with `-' (not `--').
-      # Short options may be catenated (e.g. `-l -g' is equivalent to
-      # `-lg').
-      #
-      option_name, ch, @rest_singles = $1, $2, $3
-
-      if @canonical_names.include?(option_name)
-	#
-	# The option `option_name' is found in `@canonical_names'.
-	# Check its argument.
-	#
-	if @argument_flags[option_name] == REQUIRED_ARGUMENT
-	  if 0 < @rest_singles.length
-	    option_argument = @rest_singles
-	    @rest_singles = ''
-	  elsif 0 < ARGV.length
-	    option_argument = ARGV.shift
-	  else
-	    # 1003.2 specifies the format of this message.
-	    set_error(MissingArgument, "option requires an argument -- #{ch}")
-	  end
-	elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
-	  if 0 < @rest_singles.length
-	    option_argument = @rest_singles
-	    @rest_singles = ''
-	  elsif 0 < ARGV.length && ARGV[0] !~ /^-./
-	    option_argument = ARGV.shift
-	  else
-	    option_argument = ''
-	  end
-	end
-      else
-	#
-	# This is an invalid option.
-	# 1003.2 specifies the format of this message.
-	#
-	if ENV.include?('POSIXLY_CORRECT')
-	  set_error(InvalidOption, "illegal option -- #{ch}")
-	else
-	  set_error(InvalidOption, "invalid option -- #{ch}")
-	end
-      end
-    else
-      #
-      # This is a non-option argument.
-      # Only RETURN_IN_ORDER falled into here.
-      #
-      return '', argument
-    end
-
-    return @canonical_names[option_name], option_argument
-  end
-
-  #
-  # `get_option' is an alias of `get'.
-  #
-  alias get_option get
-
-  # Iterator version of `get'.
-  #
-  # The block is called repeatedly with two arguments:
-  # The first is the option name.
-  # The second is the argument which followed it (if any). 
-  # Example: ('--opt', 'value')
-  #
-  # The option name is always converted to the first (preferred)
-  # name given in the original options to GetoptLong.new.
-  #
-  def each
-    loop do
-      option_name, option_argument = get_option
-      break if option_name == nil
-      yield option_name, option_argument
-    end
-  end
-
-  #
-  # `each_option' is an alias of `each'.
-  #
-  alias each_option each
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getopts.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getopts.rb
deleted file mode 100644
index a857a42..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/getopts.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-#               getopts.rb - 
-#                       $Release Version: $
-#                       $Revision: 11708 $
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
-#
-# --
-# this is obsolete; use getoptlong
-#
-# 2000-03-21
-# modified by Minero Aoki <aamine at dp.u-netsurf.ne.jp>
-#
-# 2002-03-05
-# rewritten by Akinori MUSHA <knu at ruby-lang.org>
-#
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: getopts is deprecated after Ruby 1.8.1; use optparse instead" if caller[0] and $VERBOSE
-
-$RCS_ID=%q$Header$
-
-# getopts is obsolete. Use GetoptLong.
-
-def getopts(single_options, *options)
-  boolopts = {}
-  valopts = {}
-
-  #
-  # set defaults
-  #
-  single_options.scan(/.:?/) do |opt|
-    if opt.size == 1
-      boolopts[opt] = false
-    else
-      valopts[opt[0, 1]] = nil
-    end
-  end if single_options
-
-  options.each do |arg|
-    opt, val = arg.split(':', 2)
-
-    if val
-      valopts[opt] = val.empty? ? nil : val
-    else
-      boolopts[opt] = false
-    end
-  end
-
-  #
-  # scan
-  #
-  c = 0
-  argv = ARGV
-
-  while arg = argv.shift
-    case arg
-    when /\A--(.*)/
-      if $1.empty?			# xinit -- -bpp 24
-	break
-      end
-
-      opt, val = $1.split('=', 2)
-
-      if opt.size == 1
-	argv.unshift arg
-	return nil
-      elsif valopts.key? opt		# imclean --src +trash
-	valopts[opt] = val || argv.shift or return nil
-      elsif boolopts.key? opt		# ruby --verbose
-	boolopts[opt] = true
-      else
-	argv.unshift arg
-	return nil
-      end
-
-      c += 1
-    when /\A-(.+)/
-      opts = $1
-
-      until opts.empty?
-	opt = opts.slice!(0, 1)
-
-	if valopts.key? opt
-	  val = opts
-
-	  if val.empty?			# ruby -e 'p $:'
-	    valopts[opt] = argv.shift or return nil
-	  else				# cc -ohello ...
-	    valopts[opt] = val
-	  end
-
-	  c += 1
-	  break
-	elsif boolopts.key? opt
-	  boolopts[opt] = true		# ruby -h
-	  c += 1
-	else
-	  argv.unshift arg
-	  return nil
-	end
-      end
-    else
-      argv.unshift arg
-      break
-    end
-  end
-
-  #
-  # set
-  #
-  $OPT = {}
-
-  boolopts.each do |opt, val|
-    $OPT[opt] = val
-
-    sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
-    eval "$OPT_#{sopt} = val"
-  end
-  valopts.each do |opt, val|
-    $OPT[opt] = val
-
-    sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
-    eval "$OPT_#{sopt} = val"
-  end
-
-  c
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/gserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/gserver.rb
deleted file mode 100644
index eb5f31b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/gserver.rb
+++ /dev/null
@@ -1,253 +0,0 @@
-#
-# Copyright (C) 2001 John W. Small All Rights Reserved
-#
-# Author::        John W. Small
-# Documentation:: Gavin Sinclair
-# Licence::       Freeware.
-#
-# See the class GServer for documentation.
-#
-
-require "socket"
-require "thread"
-
-#
-# GServer implements a generic server, featuring thread pool management,
-# simple logging, and multi-server management.  See HttpServer in 
-# <tt>xmlrpc/httpserver.rb</tt> in the Ruby standard library for an example of
-# GServer in action.
-#
-# Any kind of application-level server can be implemented using this class.
-# It accepts multiple simultaneous connections from clients, up to an optional
-# maximum number.  Several _services_ (i.e. one service per TCP port) can be
-# run simultaneously, and stopped at any time through the class method
-# <tt>GServer.stop(port)</tt>.  All the threading issues are handled, saving
-# you the effort.  All events are optionally logged, but you can provide your
-# own event handlers if you wish.
-#
-# === Example
-#
-# Using GServer is simple.  Below we implement a simple time server, run it,
-# query it, and shut it down.  Try this code in +irb+:
-#
-#   require 'gserver'
-#
-#   #
-#   # A server that returns the time in seconds since 1970.
-#   # 
-#   class TimeServer < GServer
-#     def initialize(port=10001, *args)
-#       super(port, *args)
-#     end
-#     def serve(io)
-#       io.puts(Time.now.to_i)
-#     end
-#   end
-#
-#   # Run the server with logging enabled (it's a separate thread).
-#   server = TimeServer.new
-#   server.audit = true                  # Turn logging on.
-#   server.start 
-#
-#   # *** Now point your browser to http://localhost:10001 to see it working ***
-#
-#   # See if it's still running. 
-#   GServer.in_service?(10001)           # -> true
-#   server.stopped?                      # -> false
-#
-#   # Shut the server down gracefully.
-#   server.shutdown
-#   
-#   # Alternatively, stop it immediately.
-#   GServer.stop(10001)
-#   # or, of course, "server.stop".
-#
-# All the business of accepting connections and exception handling is taken
-# care of.  All we have to do is implement the method that actually serves the
-# client.
-#
-# === Advanced
-#
-# As the example above shows, the way to use GServer is to subclass it to
-# create a specific server, overriding the +serve+ method.  You can override
-# other methods as well if you wish, perhaps to collect statistics, or emit
-# more detailed logging.
-#
-#   connecting
-#   disconnecting
-#   starting
-#   stopping
-#
-# The above methods are only called if auditing is enabled.
-#
-# You can also override +log+ and +error+ if, for example, you wish to use a
-# more sophisticated logging system.
-#
-class GServer
-
-  DEFAULT_HOST = "127.0.0.1"
-
-  def serve(io)
-  end
-
-  @@services = {}   # Hash of opened ports, i.e. services
-  @@servicesMutex = Mutex.new
-
-  def GServer.stop(port, host = DEFAULT_HOST)
-    @@servicesMutex.synchronize {
-      @@services[host][port].stop
-    }
-  end
-
-  def GServer.in_service?(port, host = DEFAULT_HOST)
-    @@services.has_key?(host) and
-      @@services[host].has_key?(port)
-  end
-
-  def stop
-    @connectionsMutex.synchronize  {
-      if @tcpServerThread
-        @tcpServerThread.raise "stop"
-      end
-    }
-  end
-
-  def stopped?
-    @tcpServerThread == nil
-  end
-
-  def shutdown
-    @shutdown = true
-  end
-
-  def connections
-    @connections.size
-  end
-
-  def join
-    @tcpServerThread.join if @tcpServerThread
-  end
-
-  attr_reader :port, :host, :maxConnections
-  attr_accessor :stdlog, :audit, :debug
-
-  def connecting(client)
-    addr = client.peeraddr
-    log("#{self.class.to_s} #{@host}:#{@port} client:#{addr[1]} " +
-        "#{addr[2]}<#{addr[3]}> connect")
-    true
-  end
-
-  def disconnecting(clientPort)
-    log("#{self.class.to_s} #{@host}:#{@port} " +
-      "client:#{clientPort} disconnect")
-  end
-
-  protected :connecting, :disconnecting
-
-  def starting()
-    log("#{self.class.to_s} #{@host}:#{@port} start")
-  end
-
-  def stopping()
-    log("#{self.class.to_s} #{@host}:#{@port} stop")
-  end
-
-  protected :starting, :stopping
-
-  def error(detail)
-    log(detail.backtrace.join("\n"))
-  end
-
-  def log(msg)
-    if @stdlog
-      @stdlog.puts("[#{Time.new.ctime}] %s" % msg)
-      @stdlog.flush
-    end
-  end
-
-  protected :error, :log
-
-  def initialize(port, host = DEFAULT_HOST, maxConnections = 4,
-    stdlog = $stderr, audit = false, debug = false)
-    @tcpServerThread = nil
-    @port = port
-    @host = host
-    @maxConnections = maxConnections
-    @connections = []
-    @connectionsMutex = Mutex.new
-    @connectionsCV = ConditionVariable.new
-    @stdlog = stdlog
-    @audit = audit
-    @debug = debug
-  end
-
-  def start(maxConnections = -1)
-    raise "running" if !stopped?
-    @shutdown = false
-    @maxConnections = maxConnections if maxConnections > 0
-    @@servicesMutex.synchronize  {
-      if GServer.in_service?(@port, at host)
-        raise "Port already in use: #{host}:#{@port}!"
-      end
-      @tcpServer = TCPServer.new(@host, at port)
-      @port = @tcpServer.addr[1]
-      @@services[@host] = {} unless @@services.has_key?(@host)
-      @@services[@host][@port] = self;
-    }
-    @tcpServerThread = Thread.new {
-      begin
-        starting if @audit
-        while !@shutdown
-          @connectionsMutex.synchronize  {
-             while @connections.size >= @maxConnections
-               @connectionsCV.wait(@connectionsMutex)
-             end
-          }
-          client = @tcpServer.accept
-          @connections << Thread.new(client)  { |myClient|
-            begin
-              myPort = myClient.peeraddr[1]
-              serve(myClient) if !@audit or connecting(myClient)
-            rescue => detail
-              error(detail) if @debug
-            ensure
-              begin
-                myClient.close
-              rescue
-              end
-              @connectionsMutex.synchronize {
-                @connections.delete(Thread.current)
-                @connectionsCV.signal
-              }
-              disconnecting(myPort) if @audit
-            end
-          }
-        end
-      rescue => detail
-        error(detail) if @debug
-      ensure
-        begin
-          @tcpServer.close
-        rescue
-        end
-        if @shutdown
-          @connectionsMutex.synchronize  {
-             while @connections.size > 0
-               @connectionsCV.wait(@connectionsMutex)
-             end
-          }
-        else
-          @connections.each { |c| c.raise "stop" }
-        end
-        @tcpServerThread = nil
-        @@servicesMutex.synchronize  {
-          @@services[@host].delete(@port)
-        }
-        stopping if @audit
-      end
-    }
-    self
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/importenv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/importenv.rb
deleted file mode 100644
index 8e1ba33..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/importenv.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# importenv.rb -- imports environment variables as global variables, Perlish ;(
-#
-# Usage:
-#
-#  require 'importenv'
-#  p $USER
-#  $USER = "matz"
-#  p ENV["USER"]
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: importenv is deprecated after Ruby 1.8.1 (no replacement)"
-
-for k,v in ENV
-  next unless /^[a-zA-Z][_a-zA-Z0-9]*/ =~ k
-  eval <<EOS
-  $#{k} = v
-  trace_var "$#{k}", proc{|v|
-    ENV[%q!#{k}!] = v
-    $#{k} = v
-    if v == nil
-      untrace_var "$#{k}"
-    end
-  }
-EOS
-end
-
-if __FILE__ == $0
-  p $TERM
-  $TERM = nil
-  p $TERM
-  p ENV["TERM"]
-  $TERM = "foo"
-  p ENV["TERM"]
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/io/nonblock.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/io/nonblock.rb
deleted file mode 100644
index 2103fdf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/io/nonblock.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require "fcntl"
-class IO
-  def nonblock?
-    (fcntl(Fcntl::F_GETFL) & File::NONBLOCK) != 0
-  end
-
-  def nonblock=(nb)
-    f = fcntl(Fcntl::F_GETFL)
-    if nb
-      f |= File::NONBLOCK
-    else
-      f &= ~File::NONBLOCK
-    end
-    fcntl(Fcntl::F_SETFL, f)
-  end
-
-  def nonblock(nb = true)
-    nb, self.nonblock = nonblock?, nb
-    yield
-  ensure
-    self.nonblock = nb
-  end
-end if defined?(Fcntl::F_GETFL)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ipaddr.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ipaddr.rb
deleted file mode 100644
index 1e77319..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ipaddr.rb
+++ /dev/null
@@ -1,766 +0,0 @@
-#
-# ipaddr.rb - A class to manipulate an IP address
-#
-# Copyright (c) 2002 Hajimu UMEMOTO <ume at mahoroba.org>.
-# All rights reserved.
-#
-# You can redistribute and/or modify it under the same terms as Ruby.
-#
-# $Id: ipaddr.rb 18047 2008-07-12 15:07:29Z shyouhei $
-#
-# TODO:
-#   - scope_id support
-require 'socket'
-
-unless Socket.const_defined? "AF_INET6"
-  class Socket
-    AF_INET6 = Object.new
-  end
-
-  class << IPSocket
-    def valid_v4?(addr)
-      if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr
-        return $~.captures.all? {|i| i.to_i < 256}
-      end
-      return false
-    end
-
-    def valid_v6?(addr)
-      # IPv6 (normal)
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*\Z/ =~ addr
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
-      return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
-      # IPv6 (IPv4 compat)
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:/ =~ addr && valid_v4?($')
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
-      return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
-
-      false
-    end
-
-    def valid?(addr)
-      valid_v4?(addr) || valid_v6?(addr)
-    end
-
-    alias getaddress_orig getaddress
-    def getaddress(s)
-      if valid?(s)
-        s
-      elsif /\A[-A-Za-z\d.]+\Z/ =~ s
-        getaddress_orig(s)
-      else
-        raise ArgumentError, "invalid address"
-      end
-    end
-  end
-end
-
-# IPAddr provides a set of methods to manipulate an IP address.  Both IPv4 and
-# IPv6 are supported.
-#
-# == Example
-#
-#   require 'ipaddr'
-#   
-#   ipaddr1 = IPAddr.new "3ffe:505:2::1"
-#   
-#   p ipaddr1			#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
-#   
-#   p ipaddr1.to_s		#=> "3ffe:505:2::1"
-#   
-#   ipaddr2 = ipaddr1.mask(48)	#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>
-#   
-#   p ipaddr2.to_s		#=> "3ffe:505:2::"
-#   
-#   ipaddr3 = IPAddr.new "192.168.2.0/24"
-#   
-#   p ipaddr3			#=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
-
-class IPAddr
-
-  IN4MASK = 0xffffffff
-  IN6MASK = 0xffffffffffffffffffffffffffffffff
-  IN6FORMAT = (["%.4x"] * 8).join(':')
-
-  # Returns the address family of this IP address.
-  attr :family
-
-  # Creates a new ipaddr containing the given network byte ordered
-  # string form of an IP address.
-  def IPAddr::new_ntoh(addr)
-    return IPAddr.new(IPAddr::ntop(addr))
-  end
-
-  # Convert a network byte ordered string form of an IP address into
-  # human readable form.
-  def IPAddr::ntop(addr)
-    case addr.size
-    when 4
-      s = addr.unpack('C4').join('.')
-    when 16
-      s = IN6FORMAT % addr.unpack('n8')
-    else
-      raise ArgumentError, "unsupported address family"
-    end
-    return s
-  end
-
-  # Returns a new ipaddr built by bitwise AND.
-  def &(other)
-    return self.clone.set(@addr & other.to_i)
-  end
-
-  # Returns a new ipaddr built by bitwise OR.
-  def |(other)
-    return self.clone.set(@addr | other.to_i)
-  end
-
-  # Returns a new ipaddr built by bitwise right-shift.
-  def >>(num)
-    return self.clone.set(@addr >> num)
-  end
-
-  # Returns a new ipaddr built by bitwise left shift.
-  def <<(num)
-    return self.clone.set(addr_mask(@addr << num))
-  end
-
-  # Returns a new ipaddr built by bitwise negation.
-  def ~
-    return self.clone.set(addr_mask(~@addr))
-  end
-
-  # Returns true if two ipaddr are equal.
-  def ==(other)
-    if other.kind_of?(IPAddr) && @family != other.family
-      return false
-    end
-    return (@addr == other.to_i)
-  end
-
-  # Returns a new ipaddr built by masking IP address with the given
-  # prefixlen/netmask. (e.g. 8, 64, "255.255.255.0", etc.)
-  def mask(prefixlen)
-    return self.clone.mask!(prefixlen)
-  end
-
-  # Returns true if the given ipaddr is in the range.
-  #
-  # e.g.:
-  #   require 'ipaddr'
-  #   net1 = IPAddr.new("192.168.2.0/24")
-  #   p net1.include?(IPAddr.new("192.168.2.0"))	#=> true
-  #   p net1.include?(IPAddr.new("192.168.2.255"))	#=> true
-  #   p net1.include?(IPAddr.new("192.168.3.0"))	#=> false
-  def include?(other)
-    if ipv4_mapped?
-      if (@mask_addr >> 32) != 0xffffffffffffffffffffffff
-	return false
-      end
-      mask_addr = (@mask_addr & IN4MASK)
-      addr = (@addr & IN4MASK)
-      family = Socket::AF_INET
-    else
-      mask_addr = @mask_addr
-      addr = @addr
-      family = @family
-    end
-    if other.kind_of?(IPAddr)
-      if other.ipv4_mapped?
-	other_addr = (other.to_i & IN4MASK)
-	other_family = Socket::AF_INET
-      else
-	other_addr = other.to_i
-	other_family = other.family
-      end
-    else # Not IPAddr - assume integer in same family as us
-      other_addr   = other.to_i
-      other_family = family
-    end
-
-    if family != other_family
-      return false
-    end
-    return ((addr & mask_addr) == (other_addr & mask_addr))
-  end
-  alias === include?
-
-  # Returns the integer representation of the ipaddr.
-  def to_i
-    return @addr
-  end
-
-  # Returns a string containing the IP address representation.
-  def to_s
-    str = to_string
-    return str if ipv4?
-
-    str.gsub!(/\b0{1,3}([\da-f]+)\b/i, '\1')
-    loop do
-      break if str.sub!(/\A0:0:0:0:0:0:0:0\Z/, '::')
-      break if str.sub!(/\b0:0:0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0\b/, ':')
-      break if str.sub!(/\b0:0\b/, ':')
-      break
-    end
-    str.sub!(/:{3,}/, '::')
-
-    if /\A::(ffff:)?([\da-f]{1,4}):([\da-f]{1,4})\Z/i =~ str
-      str = sprintf('::%s%d.%d.%d.%d', $1, $2.hex / 256, $2.hex % 256, $3.hex / 256, $3.hex % 256)
-    end
-
-    str
-  end
-
-  # Returns a string containing the IP address representation in
-  # canonical form.
-  def to_string
-    return _to_string(@addr)
-  end
-
-  # Returns a network byte ordered string form of the IP address.
-  def hton
-    case @family
-    when Socket::AF_INET
-      return [@addr].pack('N')
-    when Socket::AF_INET6
-      return (0..7).map { |i|
-	(@addr >> (112 - 16 * i)) & 0xffff
-      }.pack('n8')
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  # Returns true if the ipaddr is an IPv4 address.
-  def ipv4?
-    return @family == Socket::AF_INET
-  end
-
-  # Returns true if the ipaddr is an IPv6 address.
-  def ipv6?
-    return @family == Socket::AF_INET6
-  end
-
-  # Returns true if the ipaddr is an IPv4-mapped IPv6 address.
-  def ipv4_mapped?
-    return ipv6? && (@addr >> 32) == 0xffff
-  end
-
-  # Returns true if the ipaddr is an IPv4-compatible IPv6 address.
-  def ipv4_compat?
-    if !ipv6? || (@addr >> 32) != 0
-      return false
-    end
-    a = (@addr & IN4MASK)
-    return a != 0 && a != 1
-  end
-
-  # Returns a new ipaddr built by converting the native IPv4 address
-  # into an IPv4-mapped IPv6 address.
-  def ipv4_mapped
-    if !ipv4?
-      raise ArgumentError, "not an IPv4 address"
-    end
-    return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
-  end
-
-  # Returns a new ipaddr built by converting the native IPv4 address
-  # into an IPv4-compatible IPv6 address.
-  def ipv4_compat
-    if !ipv4?
-      raise ArgumentError, "not an IPv4 address"
-    end
-    return self.clone.set(@addr, Socket::AF_INET6)
-  end
-
-  # Returns a new ipaddr built by converting the IPv6 address into a
-  # native IPv4 address.  If the IP address is not an IPv4-mapped or
-  # IPv4-compatible IPv6 address, returns self.
-  def native
-    if !ipv4_mapped? && !ipv4_compat?
-      return self
-    end
-    return self.clone.set(@addr & IN4MASK, Socket::AF_INET)
-  end
-
-  # Returns a string for DNS reverse lookup.  It returns a string in
-  # RFC3172 form for an IPv6 address.
-  def reverse
-    case @family
-    when Socket::AF_INET
-      return _reverse + ".in-addr.arpa"
-    when Socket::AF_INET6
-      return ip6_arpa
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  # Returns a string for DNS reverse lookup compatible with RFC3172.
-  def ip6_arpa
-    if !ipv6?
-      raise ArgumentError, "not an IPv6 address"
-    end
-    return _reverse + ".ip6.arpa"
-  end
-
-  # Returns a string for DNS reverse lookup compatible with RFC1886.
-  def ip6_int
-    if !ipv6?
-      raise ArgumentError, "not an IPv6 address"
-    end
-    return _reverse + ".ip6.int"
-  end
-
-  # Returns a string containing a human-readable representation of the
-  # ipaddr. ("#<IPAddr: family:address/mask>")
-  def inspect
-    case @family
-    when Socket::AF_INET
-      af = "IPv4"
-    when Socket::AF_INET6
-      af = "IPv6"
-    else
-      raise "unsupported address family"
-    end
-    return sprintf("#<%s: %s:%s/%s>", self.class.name,
-		   af, _to_string(@addr), _to_string(@mask_addr))
-  end
-
-  protected
-
-  def set(addr, *family)
-    case family[0] ? family[0] : @family
-    when Socket::AF_INET
-      if addr < 0 || addr > IN4MASK
-	raise ArgumentError, "invalid address"
-      end
-    when Socket::AF_INET6
-      if addr < 0 || addr > IN6MASK
-	raise ArgumentError, "invalid address"
-      end
-    else
-      raise ArgumentError, "unsupported address family"
-    end
-    @addr = addr
-    if family[0]
-      @family = family[0]
-    end
-    return self
-  end
-
-  def mask!(mask)
-    if mask.kind_of?(String)
-      if mask =~ /^\d+$/
-	prefixlen = mask.to_i
-      else
-	m = IPAddr.new(mask)
-	if m.family != @family
-	  raise ArgumentError, "address family is not same"
-	end
-	@mask_addr = m.to_i
-	@addr &= @mask_addr
-	return self
-      end
-    else
-      prefixlen = mask
-    end
-    case @family
-    when Socket::AF_INET
-      if prefixlen < 0 || prefixlen > 32
-	raise ArgumentError, "invalid length"
-      end
-      masklen = 32 - prefixlen
-      @mask_addr = ((IN4MASK >> masklen) << masklen)
-    when Socket::AF_INET6
-      if prefixlen < 0 || prefixlen > 128
-	raise ArgumentError, "invalid length"
-      end
-      masklen = 128 - prefixlen
-      @mask_addr = ((IN6MASK >> masklen) << masklen)
-    else
-      raise "unsupported address family"
-    end
-    @addr = ((@addr >> masklen) << masklen)
-    return self
-  end
-
-  private
-
-  # Creates a new ipaddr containing the given human readable form of
-  # an IP address.  It also accepts `address/prefixlen' and
-  # `address/mask'.  When prefixlen or mask is specified, it returns a
-  # masked ipaddr.  IPv6 address may beenclosed with `[' and `]'.
-  #
-  # Although an address family is determined automatically from a
-  # specified address, you can specify an address family explicitly by
-  # the optional second argument.
-  def initialize(addr = '::', family = Socket::AF_UNSPEC)
-    if !addr.kind_of?(String)
-      if family != Socket::AF_INET6 && family != Socket::AF_INET
-	raise ArgumentError, "unsupported address family"
-      end
-      set(addr, family)
-      @mask_addr = (family == Socket::AF_INET) ? IN4MASK : IN6MASK
-      return
-    end
-    prefix, prefixlen = addr.split('/')
-    if prefix =~ /^\[(.*)\]$/i
-      prefix = $1
-      family = Socket::AF_INET6
-    end
-    # It seems AI_NUMERICHOST doesn't do the job.
-    #Socket.getaddrinfo(left, nil, Socket::AF_INET6, Socket::SOCK_STREAM, nil,
-    #		       Socket::AI_NUMERICHOST)
-    begin
-      IPSocket.getaddress(prefix)		# test if address is vaild
-    rescue
-      raise ArgumentError, "invalid address"
-    end
-    @addr = @family = nil
-    if family == Socket::AF_UNSPEC || family == Socket::AF_INET
-      @addr = in_addr(prefix)
-      if @addr
-	@family = Socket::AF_INET
-      end
-    end
-    if !@addr && (family == Socket::AF_UNSPEC || family == Socket::AF_INET6)
-      @addr = in6_addr(prefix)
-      @family = Socket::AF_INET6
-    end
-    if family != Socket::AF_UNSPEC && @family != family
-      raise ArgumentError, "address family unmatch"
-    end
-    if prefixlen
-      mask!(prefixlen)
-    else
-      @mask_addr = (@family == Socket::AF_INET) ? IN4MASK : IN6MASK
-    end
-  end
-
-  def in_addr(addr)
-    if addr =~ /^\d+\.\d+\.\d+\.\d+$/
-      n = 0
-      addr.split('.').each { |i|
-	n <<= 8
-	n += i.to_i
-      }
-      return n
-    end
-    return nil
-  end
-
-  def in6_addr(left)
-    case left
-    when /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i
-      return in_addr($1) + 0xffff00000000
-    when /^::(\d+\.\d+\.\d+\.\d+)$/i
-      return in_addr($1)
-    when /[^0-9a-f:]/i
-      raise ArgumentError, "invalid address"
-    when /^(.*)::(.*)$/
-      left, right = $1, $2
-    else
-      right = ''
-    end
-    l = left.split(':')
-    r = right.split(':')
-    rest = 8 - l.size - r.size
-    if rest < 0
-      return nil
-    end
-    a = [l, Array.new(rest, '0'), r].flatten!
-    n = 0
-    a.each { |i|
-      n <<= 16
-      n += i.hex
-    }
-    return n
-  end
-
-  def addr_mask(addr)
-    case @family
-    when Socket::AF_INET
-      addr &= IN4MASK
-    when Socket::AF_INET6
-      addr &= IN6MASK
-    else
-      raise "unsupported address family"
-    end
-    return addr
-  end
-
-  def _reverse
-    case @family
-    when Socket::AF_INET
-      return (0..3).map { |i|
-	(@addr >> (8 * i)) & 0xff
-      }.join('.')
-    when Socket::AF_INET6
-      return ("%.32x" % @addr).reverse!.gsub!(/.(?!$)/, '\&.')
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  def _to_string(addr)
-    case @family
-    when Socket::AF_INET
-      return (0..3).map { |i|
-	(addr >> (24 - 8 * i)) & 0xff
-      }.join('.')
-    when Socket::AF_INET6
-      return (("%.32x" % addr).gsub!(/.{4}(?!$)/, '\&:'))
-    else
-      raise "unsupported address family"
-    end
-  end
-
-end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-require 'test/unit/ui/console/testrunner'
-
-class TC_IPAddr < Test::Unit::TestCase
-  def test_s_new
-    assert_nothing_raised {
-      IPAddr.new("3FFE:505:ffff::/48")
-      IPAddr.new("0:0:0:1::")
-      IPAddr.new("2001:200:300::/48")
-    }
-
-    a = IPAddr.new
-    assert_equal("::", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("0123:4567:89ab:cdef:0ABC:DEF0:1234:5678")
-    assert_equal("123:4567:89ab:cdef:abc:def0:1234:5678", a.to_s)
-    assert_equal("0123:4567:89ab:cdef:0abc:def0:1234:5678", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("3ffe:505:2::/48")
-    assert_equal("3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(false, a.ipv4?)
-    assert_equal(true, a.ipv6?)
-    assert_equal("#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>", a.inspect)
-
-    a = IPAddr.new("3ffe:505:2::/ffff:ffff:ffff::")
-    assert_equal("3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("0.0.0.0")
-    assert_equal("0.0.0.0", a.to_s)
-    assert_equal("0.0.0.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-
-    a = IPAddr.new("192.168.1.2")
-    assert_equal("192.168.1.2", a.to_s)
-    assert_equal("192.168.1.2", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-    assert_equal(true, a.ipv4?)
-    assert_equal(false, a.ipv6?)
-
-    a = IPAddr.new("192.168.1.2/24")
-    assert_equal("192.168.1.0", a.to_s)
-    assert_equal("192.168.1.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-    assert_equal("#<IPAddr: IPv4:192.168.1.0/255.255.255.0>", a.inspect)
-
-    a = IPAddr.new("192.168.1.2/255.255.255.0")
-    assert_equal("192.168.1.0", a.to_s)
-    assert_equal("192.168.1.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-
-    assert_equal("0:0:0:1::", IPAddr.new("0:0:0:1::").to_s)
-    assert_equal("2001:200:300::", IPAddr.new("2001:200:300::/48").to_s)
-
-    assert_equal("2001:200:300::", IPAddr.new("[2001:200:300::]/48").to_s)
-
-    [
-      ["fe80::1%fxp0"],
-      ["::1/255.255.255.0"],
-      ["::1:192.168.1.2/120"],
-      [IPAddr.new("::1").to_i],
-      ["::ffff:192.168.1.2/120", Socket::AF_INET],
-      ["[192.168.1.2]/120"],
-    ].each { |args|
-      assert_raises(ArgumentError) {
-	IPAddr.new(*args)
-      }
-    }
-  end
-
-  def test_s_new_ntoh
-    addr = ''
-    IPAddr.new("1234:5678:9abc:def0:1234:5678:9abc:def0").hton.each_byte { |c|
-      addr += sprintf("%02x", c)
-    }
-    assert_equal("123456789abcdef0123456789abcdef0", addr)
-    addr = ''
-    IPAddr.new("123.45.67.89").hton.each_byte { |c|
-      addr += sprintf("%02x", c)
-    }
-    assert_equal(sprintf("%02x%02x%02x%02x", 123, 45, 67, 89), addr)
-    a = IPAddr.new("3ffe:505:2::")
-    assert_equal("3ffe:505:2::", IPAddr.new_ntoh(a.hton).to_s)
-    a = IPAddr.new("192.168.2.1")
-    assert_equal("192.168.2.1", IPAddr.new_ntoh(a.hton).to_s)
-  end
-
-  def test_ipv4_compat
-    a = IPAddr.new("::192.168.1.2")
-    assert_equal("::192.168.1.2", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:0000:c0a8:0102", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(true, a.ipv4_compat?)
-    b = a.native
-    assert_equal("192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET, b.family)
-    assert_equal(false, b.ipv4_compat?)
-
-    a = IPAddr.new("192.168.1.2")
-    b = a.ipv4_compat
-    assert_equal("::192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET6, b.family)
-  end
-
-  def test_ipv4_mapped
-    a = IPAddr.new("::ffff:192.168.1.2")
-    assert_equal("::ffff:192.168.1.2", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:ffff:c0a8:0102", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(true, a.ipv4_mapped?)
-    b = a.native
-    assert_equal("192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET, b.family)
-    assert_equal(false, b.ipv4_mapped?)
-
-    a = IPAddr.new("192.168.1.2")
-    b = a.ipv4_mapped
-    assert_equal("::ffff:192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET6, b.family)
-  end
-
-  def test_reverse
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").reverse)
-    assert_equal("1.2.168.192.in-addr.arpa", IPAddr.new("192.168.2.1").reverse)
-  end
-
-  def test_ip6_arpa
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").ip6_arpa)
-    assert_raises(ArgumentError) {
-      IPAddr.new("192.168.2.1").ip6_arpa
-    }
-  end
-
-  def test_ip6_int
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddr.new("3ffe:505:2::f").ip6_int)
-    assert_raises(ArgumentError) {
-      IPAddr.new("192.168.2.1").ip6_int
-    }
-  end
-
-  def test_to_s
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0001", IPAddr.new("3ffe:505:2::1").to_string)
-    assert_equal("3ffe:505:2::1", IPAddr.new("3ffe:505:2::1").to_s)
-  end
-end
-
-class TC_Operator < Test::Unit::TestCase
-
-  IN6MASK32  = "ffff:ffff::"
-  IN6MASK128 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
-
-  def setup
-    @in6_addr_any = IPAddr.new()
-    @a = IPAddr.new("3ffe:505:2::/48")
-    @b = IPAddr.new("0:0:0:1::")
-    @c = IPAddr.new(IN6MASK32)
-  end
-  alias set_up setup
-
-  def test_or
-    assert_equal("3ffe:505:2:1::", (@a | @b).to_s)
-    a = @a
-    a |= @b
-    assert_equal("3ffe:505:2:1::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-    assert_equal("3ffe:505:2:1::",
-		 (@a | 0x00000000000000010000000000000000).to_s)
-  end
-
-  def test_and
-    assert_equal("3ffe:505::", (@a & @c).to_s)
-    a = @a
-    a &= @c
-    assert_equal("3ffe:505::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-    assert_equal("3ffe:505::", (@a & 0xffffffff000000000000000000000000).to_s)
-  end
-
-  def test_shift_right
-    assert_equal("0:3ffe:505:2::", (@a >> 16).to_s)
-    a = @a
-    a >>= 16
-    assert_equal("0:3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_shift_left
-    assert_equal("505:2::", (@a << 16).to_s)
-    a = @a
-    a <<= 16
-    assert_equal("505:2::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_carrot
-    a = ~@in6_addr_any
-    assert_equal(IN6MASK128, a.to_s)
-    assert_equal("::", @in6_addr_any.to_s)
-  end
-
-  def test_equal
-    assert_equal(true, @a == IPAddr.new("3ffe:505:2::"))
-    assert_equal(false, @a == IPAddr.new("3ffe:505:3::"))
-    assert_equal(true, @a != IPAddr.new("3ffe:505:3::"))
-    assert_equal(false, @a != IPAddr.new("3ffe:505:2::"))
-  end
-
-  def test_mask
-    a = @a.mask(32)
-    assert_equal("3ffe:505::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_include?
-    assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::")))
-    assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::1")))
-    assert_equal(false, @a.include?(IPAddr.new("3ffe:505:3::")))
-    net1 = IPAddr.new("192.168.2.0/24")
-    assert_equal(true, net1.include?(IPAddr.new("192.168.2.0")))
-    assert_equal(true, net1.include?(IPAddr.new("192.168.2.255")))
-    assert_equal(false, net1.include?(IPAddr.new("192.168.3.0")))
-    # test with integer parameter
-    int = (192 << 24) + (168 << 16) + (2 << 8) + 13
-
-    assert_equal(true, net1.include?(int))
-    assert_equal(false, net1.include?(int+255))
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb.rb
deleted file mode 100644
index 9ca2313..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb.rb
+++ /dev/null
@@ -1,346 +0,0 @@
-#
-#   irb.rb - irb main module
-#   	$Release Version: 0.9.5 $
-#   	$Revision: 17127 $
-#   	$Date: 2008-06-13 12:02:17 +0900 (Fri, 13 Jun 2008) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#
-#
-require "e2mmap"
-
-require "irb/init"
-require "irb/context"
-require "irb/extend-command"
-#require "irb/workspace"
-
-require "irb/ruby-lex"
-require "irb/input-method"
-require "irb/locale"
-
-STDOUT.sync = true
-
-module IRB
-  @RCS_ID='-$Id: irb.rb 17127 2008-06-13 03:02:17Z shyouhei $-'
-
-  class Abort < Exception;end
-
-  #
-  @CONF = {}
-
-  def IRB.conf
-    @CONF
-  end
-
-  # IRB version method
-  def IRB.version
-    if v = @CONF[:VERSION] then return v end
-
-    require "irb/version"
-    rv = @RELEASE_VERSION.sub(/\.0/, "")
-    @CONF[:VERSION] = format("irb %s(%s)", rv, @LAST_UPDATE_DATE)
-  end
-
-  def IRB.CurrentContext
-    IRB.conf[:MAIN_CONTEXT]
-  end
-
-  # initialize IRB and start TOP_LEVEL irb
-  def IRB.start(ap_path = nil)
-    $0 = File::basename(ap_path, ".rb") if ap_path
-
-    IRB.setup(ap_path)
-
-    if @CONF[:SCRIPT]
-      irb = Irb.new(nil, @CONF[:SCRIPT])
-    else
-      irb = Irb.new
-    end
-
-    @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
-    @CONF[:MAIN_CONTEXT] = irb.context
-
-    trap("SIGINT") do
-      irb.signal_handle
-    end
-    
-    catch(:IRB_EXIT) do
-      irb.eval_input
-    end
-#    print "\n"
-  end
-
-  def IRB.irb_exit(irb, ret)
-    throw :IRB_EXIT, ret
-  end
-
-  def IRB.irb_abort(irb, exception = Abort)
-    if defined? Thread
-      irb.context.thread.raise exception, "abort then interrupt!!"
-    else
-      raise exception, "abort then interrupt!!"
-    end
-  end
-
-  #
-  # irb interpriter main routine 
-  #
-  class Irb
-    def initialize(workspace = nil, input_method = nil, output_method = nil)
-      @context = Context.new(self, workspace, input_method, output_method)
-      @context.main.extend ExtendCommandBundle
-      @signal_status = :IN_IRB
-
-      @scanner = RubyLex.new
-      @scanner.exception_on_syntax_error = false
-    end
-    attr_reader :context
-    attr_accessor :scanner
-
-    def eval_input
-      @scanner.set_prompt do
-	|ltype, indent, continue, line_no|
-	if ltype
-	  f = @context.prompt_s
-	elsif continue
-	  f = @context.prompt_c
-	elsif indent > 0
-	  f = @context.prompt_n
-	else @context.prompt_i
-	  f = @context.prompt_i
-	end
-	f = "" unless f
-	if @context.prompting?
-	  @context.io.prompt = p = prompt(f, ltype, indent, line_no)
-	else
-	  @context.io.prompt = p = ""
-	end
-	if @context.auto_indent_mode
-	  unless ltype
-            ind = prompt(@context.prompt_i, ltype, indent, line_no)[/.*\z/].size +
-	      indent * 2 - p.size
-	    ind += 2 if continue
-	    @context.io.prompt = p + " " * ind if ind > 0
-	  end
-	end
-      end
-       
-      @scanner.set_input(@context.io) do
-	signal_status(:IN_INPUT) do
-	  if l = @context.io.gets
-	    print l if @context.verbose?
-	  else
-	    if @context.ignore_eof? and @context.io.readable_atfer_eof?
-	      l = "\n"
-	      if @context.verbose?
-		printf "Use \"exit\" to leave %s\n", @context.ap_name
-	      end
-	    end
-	  end
-	  l
-	end
-      end
-
-      @scanner.each_top_level_statement do |line, line_no|
-	signal_status(:IN_EVAL) do
-	  begin
-            line.untaint
-	    @context.evaluate(line, line_no)
-	    output_value if @context.echo?
-	    exc = nil
-	  rescue Interrupt => exc
-	  rescue SystemExit, SignalException
-	    raise
-	  rescue Exception => exc
-	  end
-	  if exc
-	    print exc.class, ": ", exc, "\n"
-	    if exc.backtrace[0] =~ /irb(2)?(\/.*|-.*|\.rb)?:/ && exc.class.to_s !~ /^IRB/
-	      irb_bug = true 
-	    else
-	      irb_bug = false
-	    end
-	    
-	    messages = []
-	    lasts = []
-	    levels = 0
-	    for m in exc.backtrace
-	      m = @context.workspace.filter_backtrace(m) unless irb_bug
-	      if m
-		if messages.size < @context.back_trace_limit
-		  messages.push "\tfrom "+m
-		else
-		  lasts.push "\tfrom "+m
-		  if lasts.size > @context.back_trace_limit
-		    lasts.shift 
-		    levels += 1
-		  end
-		end
-	      end
-	    end
-	    print messages.join("\n"), "\n"
-	    unless lasts.empty?
-	      printf "... %d levels...\n", levels if levels > 0
-	      print lasts.join("\n")
-	    end
-	    print "Maybe IRB bug!!\n" if irb_bug
-	  end
-          if $SAFE > 2
-            abort "Error: irb does not work for $SAFE level higher than 2"
-          end
-	end
-      end
-    end
-
-    def suspend_name(path = nil, name = nil)
-      @context.irb_path, back_path = path, @context.irb_path if path
-      @context.irb_name, back_name = name, @context.irb_name if name
-      begin
-	yield back_path, back_name
-      ensure
-	@context.irb_path = back_path if path
-	@context.irb_name = back_name if name
-      end
-    end
-
-    def suspend_workspace(workspace)
-      @context.workspace, back_workspace = workspace, @context.workspace
-      begin
-	yield back_workspace
-      ensure
-	@context.workspace = back_workspace
-      end
-    end
-
-    def suspend_input_method(input_method)
-      back_io = @context.io
-      @context.instance_eval{@io = input_method}
-      begin
-	yield back_io
-      ensure
-	@context.instance_eval{@io = back_io}
-      end
-    end
-
-    def suspend_context(context)
-      @context, back_context = context, @context
-      begin
-	yield back_context
-      ensure
-	@context = back_context
-      end
-    end
-
-    def signal_handle
-      unless @context.ignore_sigint?
-	print "\nabort!!\n" if @context.verbose?
-	exit
-      end
-
-      case @signal_status
-      when :IN_INPUT
-	print "^C\n"
-	raise RubyLex::TerminateLineInput
-      when :IN_EVAL
-	IRB.irb_abort(self)
-      when :IN_LOAD
-	IRB.irb_abort(self, LoadAbort)
-      when :IN_IRB
-	# ignore
-      else
-	# ignore other cases as well
-      end
-    end
-
-    def signal_status(status)
-      return yield if @signal_status == :IN_LOAD
-
-      signal_status_back = @signal_status
-      @signal_status = status
-      begin
-	yield
-      ensure
-	@signal_status = signal_status_back
-      end
-    end
-
-    def prompt(prompt, ltype, indent, line_no)
-      p = prompt.dup
-      p.gsub!(/%([0-9]+)?([a-zA-Z])/) do
-	case $2
-	when "N"
-	  @context.irb_name
-	when "m"
-	  @context.main.to_s
-	when "M"
-	  @context.main.inspect
-	when "l"
-	  ltype
-	when "i"
-	  if $1 
-	    format("%" + $1 + "d", indent)
-	  else
-	    indent.to_s
-	  end
-	when "n"
-	  if $1 
-	    format("%" + $1 + "d", line_no)
-	  else
-	    line_no.to_s
-	  end
-	when "%"
-	  "%"
-	end
-      end
-      p
-    end
-
-    def output_value
-      if @context.inspect?
-        printf @context.return_format, @context.last_value.inspect
-      else
-        printf @context.return_format, @context.last_value
-      end
-    end
-
-    def inspect
-      ary = []
-      for iv in instance_variables
-	case iv
-	when "@signal_status"
-	  ary.push format("%s=:%s", iv, @signal_status.id2name)
-	when "@context"
-	  ary.push format("%s=%s", iv, eval(iv).__to_s__)
-	else
-	  ary.push format("%s=%s", iv, eval(iv))
-	end
-      end
-      format("#<%s: %s>", self.class, ary.join(", "))
-    end
-  end
-
-  # Singleton method
-  def @CONF.inspect
-    IRB.version unless self[:VERSION]
-
-    array = []
-    for k, v in sort{|a1, a2| a1[0].id2name <=> a2[0].id2name}
-      case k
-      when :MAIN_CONTEXT, :__TMP__EHV__
-	array.push format("CONF[:%s]=...myself...", k.id2name)
-      when :PROMPT
-	s = v.collect{
-	  |kk, vv|
-	  ss = vv.collect{|kkk, vvv| ":#{kkk.id2name}=>#{vvv.inspect}"}
-	  format(":%s=>{%s}", kk.id2name, ss.join(", "))
-	}
-	array.push format("CONF[:%s]={%s}", k.id2name, s.join(", "))
-      else
-	array.push format("CONF[:%s]=%s", k.id2name, v.inspect)
-      end
-    end
-    array.join("\n")
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/chws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/chws.rb
deleted file mode 100644
index 772d4da..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/chws.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#   change-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/change-ws.rb"
-
-module IRB
-  module ExtendCommand
-
-    class CurrentWorkingWorkspace<Nop
-      def execute(*obj)
-	irb_context.main
-      end
-    end
-
-    class ChangeWorkspace<Nop
-      def execute(*obj)
-	irb_context.change_workspace(*obj)
-	irb_context.main
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/fork.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/fork.rb
deleted file mode 100644
index c55344b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/fork.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   fork.rb - 
-#   	$Release Version: 0.9.5 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
- at RCS_ID='-$Id: fork.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-
-module IRB
-  module ExtendCommand
-    class Fork<Nop
-      def execute(&block)
-	pid = send ExtendCommand.irb_original_method_name("fork")
-	unless pid 
-	  class<<self
-	    alias_method :exit, ExtendCommand.irb_original_method_name('exit')
-	  end
-	  if iterator?
-	    begin
-	      yield
-	    ensure
-	      exit
-	    end
-	  end
-	end
-	pid
-      end
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/help.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/help.rb
deleted file mode 100644
index bfb2981..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/help.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-#   help.rb - helper using ri
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#
-# --
-#
-#   
-#
-
-require 'rdoc/ri/ri_driver'
-
-module IRB
-  module ExtendCommand
-    module Help
-      begin
-        @ri = RiDriver.new
-      rescue SystemExit
-      else
-        def self.execute(context, *names)
-          names.each do |name|
-            begin
-              @ri.get_info_for(name.to_s)
-            rescue RiError
-              puts $!.message
-            end
-          end
-          nil
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/load.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/load.rb
deleted file mode 100644
index 317129e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/load.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#   load.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/loader"
-
-module IRB
-  module ExtendCommand
-    class Load<Nop
-      include IrbLoader
-
-      def execute(file_name, priv = nil)
-#	return ruby_load(file_name) unless IRB.conf[:USE_LOADER]
-	return irb_load(file_name, priv)
-      end
-    end
-
-    class Require<Nop
-      include IrbLoader
-      
-      def execute(file_name)
-#	return ruby_require(file_name) unless IRB.conf[:USE_LOADER]
-
-	rex = Regexp.new("#{Regexp.quote(file_name)}(\.o|\.rb)?")
-	return false if $".find{|f| f =~ rex}
-
-	case file_name
-	when /\.rb$/
-	  begin
-	    if irb_load(file_name)
-	      $".push file_name
-	      return true
-	    end
-	  rescue LoadError
-	  end
-	when /\.(so|o|sl)$/
-	  return ruby_require(file_name)
-	end
-	
-	begin
-	  irb_load(f = file_name + ".rb")
-	  $".push f
-	  return true
-	rescue LoadError
-	  return ruby_require(file_name)
-	end
-      end
-    end
-
-    class Source<Nop
-      include IrbLoader
-      def execute(file_name)
-	source_file(file_name)
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/nop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/nop.rb
deleted file mode 100644
index 8c68c43..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/nop.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   nop.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  module ExtendCommand
-    class Nop
-      
-      @RCS_ID='-$Id: nop.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-      def self.execute(conf, *opts)
-	command = new(conf)
-	command.execute(*opts)
-      end
-
-      def initialize(conf)
-	@irb_context = conf
-      end
-
-      attr_reader :irb_context
-
-      def irb
-	@irb_context.irb
-      end
-
-      def execute(*opts)
-	#nop
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/pushws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/pushws.rb
deleted file mode 100644
index f15776a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/pushws.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   change-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/workspaces.rb"
-
-module IRB
-  module ExtendCommand
-    class Workspaces<Nop
-      def execute(*obj)
-	irb_context.workspaces.collect{|ws| ws.main}
-      end
-    end
-
-    class PushWorkspace<Workspaces
-      def execute(*obj)
-	irb_context.push_workspace(*obj)
-	super
-      end
-    end
-
-    class PopWorkspace<Workspaces
-      def execute(*obj)
-	irb_context.pop_workspace(*obj)
-	super
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/subirb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/subirb.rb
deleted file mode 100644
index 0b8744c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/cmd/subirb.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#   multi.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/multi-irb"
-
-module IRB
-  module ExtendCommand
-    class IrbCommand<Nop
-      def execute(*obj)
-	IRB.irb(nil, *obj)
-      end
-    end
-
-    class Jobs<Nop
-      def execute
-	IRB.JobManager
-      end
-    end
-
-    class Foreground<Nop
-      def execute(key)
-	IRB.JobManager.switch(key)
-      end
-    end
-
-    class Kill<Nop
-      def execute(*keys)
-	IRB.JobManager.kill(*keys)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/completion.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/completion.rb
deleted file mode 100644
index 8b381a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/completion.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-#
-#   irb/completor.rb - 
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#       From Original Idea of shugo at ruby-lang.org
-#
-
-require "readline"
-
-module IRB
-  module InputCompletor
-
-    @RCS_ID='-$Id: completion.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    ReservedWords = [
-      "BEGIN", "END",
-      "alias", "and", 
-      "begin", "break", 
-      "case", "class",
-      "def", "defined", "do",
-      "else", "elsif", "end", "ensure",
-      "false", "for", 
-      "if", "in", 
-      "module", 
-      "next", "nil", "not",
-      "or", 
-      "redo", "rescue", "retry", "return",
-      "self", "super",
-      "then", "true",
-      "undef", "unless", "until",
-      "when", "while",
-      "yield",
-    ]
-      
-    CompletionProc = proc { |input|
-      bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
-      
-#      puts "input: #{input}"
-
-      case input
-      when /^(\/[^\/]*\/)\.([^.]*)$/
-	# Regexp
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Regexp.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^([^\]]*\])\.([^.]*)$/
-	# Array
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Array.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^([^\}]*\})\.([^.]*)$/
-	# Proc or Hash
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
-	select_message(receiver, message, candidates)
-	
-      when /^(:[^:.]*)$/
- 	# Symbol
-	if Symbol.respond_to?(:all_symbols)
-	  sym = $1
-	  candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
-	  candidates.grep(/^#{sym}/)
-	else
-	  []
-	end
-
-      when /^::([A-Z][^:\.\(]*)$/
-	# Absolute Constant or class methods
-	receiver = $1
-	candidates = Object.constants
-	candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
-
-      when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
-	# Constant or class methods
-	receiver = $1
-	message = Regexp.quote($4)
-	begin
-	  candidates = eval("#{receiver}.constants | #{receiver}.methods", bind)
-	rescue Exception
-	  candidates = []
-	end
-	candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
-
-      when /^(:[^:.]+)\.([^.]*)$/
-	# Symbol
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Symbol.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)\.([^.]*)$/
-	# Numeric
-	receiver = $1
-	message = Regexp.quote($5)
-
-	begin
-	  candidates = eval(receiver, bind).methods
-	rescue Exception
-	  candidates = []
-	end
-	select_message(receiver, message, candidates)
-
-      when /^(-?0x[0-9a-fA-F_]+)\.([^.]*)$/
-	# Numeric(0xFFFF)
-	receiver = $1
-	message = Regexp.quote($2)
-
-	begin
-	  candidates = eval(receiver, bind).methods
-	rescue Exception
-	  candidates = []
-	end
-	select_message(receiver, message, candidates)
-
-      when /^(\$[^.]*)$/
-	candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
-
-#      when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
-      when /^((\.?[^.]+)+)\.([^.]*)$/
-	# variable
-	receiver = $1
-	message = Regexp.quote($3)
-
-	gv = eval("global_variables", bind)
-	lv = eval("local_variables", bind)
-	cv = eval("self.class.constants", bind)
-	
-	if (gv | lv | cv).include?(receiver)
-	  # foo.func and foo is local var.
-	  candidates = eval("#{receiver}.methods", bind)
-	elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
-	  # Foo::Bar.func
-	  begin
-	    candidates = eval("#{receiver}.methods", bind)
-	  rescue Exception
-	    candidates = []
-	  end
-	else
-	  # func1.func2
-	  candidates = []
-	  ObjectSpace.each_object(Module){|m|
-	    begin
-	      name = m.name
-	    rescue Exception
-	      name = ""
-	    end
-	    next if name != "IRB::Context" and 
-	      /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
-	    candidates.concat m.instance_methods(false)
-	  }
-	  candidates.sort!
-	  candidates.uniq!
-	end
-	select_message(receiver, message, candidates)
-
-      when /^\.([^.]*)$/
-	# unknown(maybe String)
-
-	receiver = ""
-	message = Regexp.quote($1)
-
-	candidates = String.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      else
-	candidates = eval("methods | private_methods | local_variables | self.class.constants", bind)
-			  
-	(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
-      end
-    }
-
-    Operators = ["%", "&", "*", "**", "+",  "-",  "/",
-      "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
-      "[]", "[]=", "^",]
-
-    def self.select_message(receiver, message, candidates)
-      candidates.grep(/^#{message}/).collect do |e|
-	case e
-	when /^[a-zA-Z_]/
-	  receiver + "." + e
-	when /^[0-9]/
-	when *Operators
-	  #receiver + " " + e
-	end
-      end
-    end
-  end
-end
-
-if Readline.respond_to?("basic_word_break_characters=")
-  Readline.basic_word_break_characters= " \t\n\"\\'`><=;|&{("
-end
-Readline.completion_append_character = nil
-Readline.completion_proc = IRB::InputCompletor::CompletionProc
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/context.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/context.rb
deleted file mode 100644
index de70945..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/context.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-#
-#   irb/context.rb - irb context
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "irb/workspace"
-
-module IRB
-  class Context
-    #
-    # Arguments:
-    #   input_method: nil -- stdin or readline
-    #		      String -- File
-    #		      other -- using this as InputMethod
-    #
-    def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
-      @irb = irb
-      if workspace
-	@workspace = workspace
-      else
-	@workspace = WorkSpace.new
-      end
-      @thread = Thread.current if defined? Thread
-#      @irb_level = 0
-
-      # copy of default configuration
-      @ap_name = IRB.conf[:AP_NAME]
-      @rc = IRB.conf[:RC]
-      @load_modules = IRB.conf[:LOAD_MODULES]
-
-      @use_readline = IRB.conf[:USE_READLINE]
-      @inspect_mode = IRB.conf[:INSPECT_MODE]
-
-      self.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_MODE]
-      self.use_tracer = IRB.conf[:USE_TRACER] if IRB.conf[:USE_TRACER]
-      self.use_loader = IRB.conf[:USE_LOADER] if IRB.conf[:USE_LOADER]
-      self.eval_history = IRB.conf[:EVAL_HISTORY] if IRB.conf[:EVAL_HISTORY]
-
-      @ignore_sigint = IRB.conf[:IGNORE_SIGINT]
-      @ignore_eof = IRB.conf[:IGNORE_EOF]
-
-      @back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT]
-      
-      self.prompt_mode = IRB.conf[:PROMPT_MODE]
-
-      if IRB.conf[:SINGLE_IRB] or !defined?(JobManager)
-	@irb_name = IRB.conf[:IRB_NAME]
-      else
-	@irb_name = "irb#"+IRB.JobManager.n_jobs.to_s
-      end
-      @irb_path = "(" + @irb_name + ")"
-
-      case input_method
-      when nil
-	case use_readline?
-	when nil
-	  if (defined?(ReadlineInputMethod) && STDIN.tty? &&
-	      IRB.conf[:PROMPT_MODE] != :INF_RUBY)
-	    @io = ReadlineInputMethod.new
-	  else
-	    @io = StdioInputMethod.new
-	  end
-	when false
-	  @io = StdioInputMethod.new
-	when true
-	  if defined?(ReadlineInputMethod)
-	    @io = ReadlineInputMethod.new
-	  else
-	    @io = StdioInputMethod.new
-	  end
-	end
-
-      when String
-	@io = FileInputMethod.new(input_method)
-	@irb_name = File.basename(input_method)
-	@irb_path = input_method
-      else
-	@io = input_method
-      end
-      self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
-
-      if output_method
-	@output_method = output_method
-      else
-	@output_method = StdioOutputMethod.new
-      end
-
-      @verbose = IRB.conf[:VERBOSE] 
-      @echo = IRB.conf[:ECHO]
-      if @echo.nil?
-	@echo = true
-      end
-      @debug_level = IRB.conf[:DEBUG_LEVEL]
-    end
-
-    def main
-      @workspace.main
-    end
-
-    attr_reader :workspace_home
-    attr_accessor :workspace
-    attr_reader :thread
-    attr_accessor :io
-    
-    attr_accessor :irb
-    attr_accessor :ap_name
-    attr_accessor :rc
-    attr_accessor :load_modules
-    attr_accessor :irb_name
-    attr_accessor :irb_path
-
-    attr_reader :use_readline
-    attr_reader :inspect_mode
-
-    attr_reader :prompt_mode
-    attr_accessor :prompt_i
-    attr_accessor :prompt_s
-    attr_accessor :prompt_c
-    attr_accessor :prompt_n
-    attr_accessor :auto_indent_mode
-    attr_accessor :return_format
-
-    attr_accessor :ignore_sigint
-    attr_accessor :ignore_eof
-    attr_accessor :echo
-    attr_accessor :verbose
-    attr_reader :debug_level
-
-    attr_accessor :back_trace_limit
-
-    alias use_readline? use_readline
-    alias rc? rc
-    alias ignore_sigint? ignore_sigint
-    alias ignore_eof? ignore_eof
-    alias echo? echo
-
-    def verbose?
-      if @verbose.nil?
-	if defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod) 
-	  false
-	elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
-	  true
-	else
-	  false
-	end
-      end
-    end
-
-    def prompting?
-      verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
-		(defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
-    end
-
-    attr_reader :last_value
-
-    def set_last_value(value)
-      @last_value = value
-      @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
-    end
-
-    attr_reader :irb_name
-
-    def prompt_mode=(mode)
-      @prompt_mode = mode
-      pconf = IRB.conf[:PROMPT][mode]
-      @prompt_i = pconf[:PROMPT_I]
-      @prompt_s = pconf[:PROMPT_S]
-      @prompt_c = pconf[:PROMPT_C]
-      @prompt_n = pconf[:PROMPT_N]
-      @return_format = pconf[:RETURN]
-      if ai = pconf.include?(:AUTO_INDENT)
-	@auto_indent_mode = ai
-      else
-	@auto_indent_mode = IRB.conf[:AUTO_INDENT]
-      end
-    end
-    
-    def inspect?
-      @inspect_mode.nil? or @inspect_mode
-    end
-
-    def file_input?
-      @io.class == FileInputMethod
-    end
-
-    def inspect_mode=(opt)
-      if opt
-	@inspect_mode = opt
-      else
-	@inspect_mode = !@inspect_mode
-      end
-      print "Switch to#{unless @inspect_mode; ' non';end} inspect mode.\n" if verbose?
-      @inspect_mode
-    end
-
-    def use_readline=(opt)
-      @use_readline = opt
-      print "use readline module\n" if @use_readline
-    end
-
-    def debug_level=(value)
-      @debug_level = value
-      RubyLex.debug_level = value
-      SLex.debug_level = value
-    end
-
-    def debug?
-      @debug_level > 0
-    end
-
-    def evaluate(line, line_no)
-      @line_no = line_no
-      set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
-#      @workspace.evaluate("_ = IRB.conf[:MAIN_CONTEXT]._")
-#      @_ = @workspace.evaluate(line, irb_path, line_no)
-    end
-
-    alias __exit__ exit
-    def exit(ret = 0)
-      IRB.irb_exit(@irb, ret)
-    end
-
-    NOPRINTING_IVARS = ["@last_value"]
-    NO_INSPECTING_IVARS = ["@irb", "@io"]
-    IDNAME_IVARS = ["@prompt_mode"]
-
-    alias __inspect__ inspect
-    def inspect
-      array = []
-      for ivar in instance_variables.sort{|e1, e2| e1 <=> e2}
-	name = ivar.sub(/^@(.*)$/){$1}
-	val = instance_eval(ivar)
-	case ivar
-	when *NOPRINTING_IVARS
-	  array.push format("conf.%s=%s", name, "...")
-	when *NO_INSPECTING_IVARS
-	  array.push format("conf.%s=%s", name, val.to_s)
-	when *IDNAME_IVARS
-	  array.push format("conf.%s=:%s", name, val.id2name)
-	else
-	  array.push format("conf.%s=%s", name, val.inspect)
-	end
-      end
-      array.join("\n")
-    end
-    alias __to_s__ to_s
-    alias to_s inspect
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/change-ws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/change-ws.rb
deleted file mode 100644
index 0fbdd81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/change-ws.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-#   irb/ext/cb.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-  class Context
-
-    def home_workspace
-      if defined? @home_workspace
-	@home_workspace
-      else
-	@home_workspace = @workspace
-      end
-    end
-
-    def change_workspace(*_main)
-      if _main.empty?
-	@workspace = home_workspace 
-	return main
-      end
-      
-      @workspace = WorkSpace.new(_main[0])
-      
-      if !(class<<main;ancestors;end).include?(ExtendCommandBundle)
-	main.extend ExtendCommandBundle
-      end
-    end
-
-#     def change_binding(*_main)
-#       back = @workspace
-#       @workspace = WorkSpace.new(*_main)
-#       unless _main.empty?
-# 	begin
-# 	  main.extend ExtendCommandBundle
-# 	rescue
-# 	  print "can't change binding to: ", main.inspect, "\n"
-# 	  @workspace = back
-# 	  return nil
-# 	end
-#       end
-#       @irb_level += 1
-#       begin
-# 	catch(:SU_EXIT) do
-# 	  @irb.eval_input
-# 	end
-#       ensure
-# 	@irb_level -= 1
-#  	@workspace = back
-#       end
-#     end
-#     alias change_workspace change_binding
-   end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/history.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/history.rb
deleted file mode 100644
index dd014ee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/history.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-#   history.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-
-  class Context
-
-    NOPRINTING_IVARS.push "@eval_history_values"
-
-    alias _set_last_value set_last_value
-
-    def set_last_value(value)
-      _set_last_value(value)
-
-#      @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
-      if @eval_history #and !@eval_history_values.equal?(llv)
- 	@eval_history_values.push @line_no, @last_value
- 	@workspace.evaluate self, "__ = IRB.CurrentContext.instance_eval{@eval_history_values}"
-      end
-
-      @last_value
-    end
-
-    attr_reader :eval_history
-    def eval_history=(no)
-      if no
-	if defined?(@eval_history) && @eval_history
-	  @eval_history_values.size(no)
-	else
-	  @eval_history_values = History.new(no)
-	  IRB.conf[:__TMP__EHV__] = @eval_history_values
-	  @workspace.evaluate(self, "__ = IRB.conf[:__TMP__EHV__]")
-	  IRB.conf.delete(:__TMP_EHV__)
-	end
-      else
-	@eval_history_values = nil
-      end
-      @eval_history = no
-    end
-  end
-
-  class History
-    @RCS_ID='-$Id: history.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize(size = 16)
-      @size = size
-      @contents = []
-    end
-
-    def size(size)
-      if size != 0 && size < @size 
-	@contents = @contents[@size - size .. @size]
-      end
-      @size = size
-    end
-
-    def [](idx)
-      begin
-	if idx >= 0
-	  @contents.find{|no, val| no == idx}[1]
-	else
-	  @contents[idx][1]
-	end
-      rescue NameError
-	nil
-      end
-    end
-
-    def push(no, val)
-      @contents.push [no, val]
-      @contents.shift if @size != 0 && @contents.size > @size
-    end
-    
-    alias real_inspect inspect
-
-    def inspect
-      if @contents.empty?
-	return real_inspect
-      end
-
-      unless (last = @contents.pop)[1].equal?(self)
-	@contents.push last
-	last = nil
-      end
-      str = @contents.collect{|no, val|
-	if val.equal?(self)
-	  "#{no} ...self-history..."
-	else
-	  "#{no} #{val.inspect}"
-	end
-      }.join("\n")
-      if str == ""
-	str = "Empty."
-      end
-      @contents.push last if last
-      str
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/loader.rb
deleted file mode 100644
index 465a793..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/loader.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-#   loader.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-
-module IRB
-  class LoadAbort < Exception;end
-
-  module IrbLoader
-    @RCS_ID='-$Id: loader.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    alias ruby_load load
-    alias ruby_require require
-
-    def irb_load(fn, priv = nil)
-      path = search_file_from_ruby_path(fn)
-      raise LoadError, "No such file to load -- #{fn}" unless path
-
-      load_file(path, priv)
-    end
-
-    def search_file_from_ruby_path(fn)
-      if /^#{Regexp.quote(File::Separator)}/ =~ fn
-	return fn if File.exist?(fn)
-	return nil
-      end
-
-      for path in $:
-	if File.exist?(f = File.join(path, fn))
-	  return f
-	end
-      end
-      return nil
-    end
-
-    def source_file(path)
-      irb.suspend_name(path, File.basename(path)) do
-	irb.suspend_input_method(FileInputMethod.new(path)) do
-	  |back_io|
-	  irb.signal_status(:IN_LOAD) do 
-	    if back_io.kind_of?(FileInputMethod)
-	      irb.eval_input
-	    else
-	      begin
-		irb.eval_input
-	      rescue LoadAbort
-		print "load abort!!\n"
-	      end
-	    end
-	  end
-	end
-      end
-    end
-
-    def load_file(path, priv = nil)
-      irb.suspend_name(path, File.basename(path)) do
-	
-	if priv
-	  ws = WorkSpace.new(Module.new)
-	else
-	  ws = WorkSpace.new
-	end
-	irb.suspend_workspace(ws) do
-	  irb.suspend_input_method(FileInputMethod.new(path)) do
-	    |back_io|
-	    irb.signal_status(:IN_LOAD) do 
-#	      p irb.conf
-	      if back_io.kind_of?(FileInputMethod)
-		irb.eval_input
-	      else
-		begin
-		  irb.eval_input
-		rescue LoadAbort
-		  print "load abort!!\n"
-		end
-	      end
-	    end
-	  end
-	end
-      end
-    end
-
-    def old
-      back_io = @io
-      back_path = @irb_path
-      back_name = @irb_name
-      back_scanner = @irb.scanner
-      begin
- 	@io = FileInputMethod.new(path)
- 	@irb_name = File.basename(path)
-	@irb_path = path
-	@irb.signal_status(:IN_LOAD) do
-	  if back_io.kind_of?(FileInputMethod)
-	    @irb.eval_input
-	  else
-	    begin
-	      @irb.eval_input
-	    rescue LoadAbort
-	      print "load abort!!\n"
-	    end
-	  end
-	end
-      ensure
- 	@io = back_io
- 	@irb_name = back_name
- 	@irb_path = back_path
-	@irb.scanner = back_scanner
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/math-mode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/math-mode.rb
deleted file mode 100644
index ccef2a1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/math-mode.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-#   math-mode.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "mathn"
-
-module IRB
-  class Context
-    attr_reader :math_mode
-    alias math? math_mode
-
-    def math_mode=(opt)
-      if @math_mode == true && opt == false
-	IRB.fail CantReturnToNormalMode
-	return
-      end
-
-      @math_mode = opt
-      if math_mode
-	main.extend Math
-	print "start math mode\n" if verbose?
-      end
-    end
-
-    def inspect?
-      @inspect_mode.nil? && !@math_mode or @inspect_mode
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/multi-irb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/multi-irb.rb
deleted file mode 100644
index b0d0ed8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/multi-irb.rb
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-#   irb/multi-irb.rb - multiple irb module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-IRB.fail CantShiftToMultiIrbMode unless defined?(Thread)
-require "thread"
-
-module IRB
-  # job management class
-  class JobManager
-    @RCS_ID='-$Id: multi-irb.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize
-      # @jobs = [[thread, irb],...]
-      @jobs = []
-      @current_job = nil
-    end
-
-    attr_accessor :current_job
-
-    def n_jobs
-      @jobs.size
-    end
-
-    def thread(key)
-      th, irb = search(key)
-      th
-    end
-
-    def irb(key)
-      th, irb = search(key)
-      irb
-    end
-
-    def main_thread
-      @jobs[0][0]
-    end
-
-    def main_irb
-      @jobs[0][1]
-    end
-
-    def insert(irb)
-      @jobs.push [Thread.current, irb]
-    end
-
-    def switch(key)
-      th, irb = search(key)
-      IRB.fail IrbAlreadyDead unless th.alive?
-      IRB.fail IrbSwitchedToCurrentThread if th == Thread.current
-      @current_job = irb
-      th.run
-      Thread.stop
-      @current_job = irb(Thread.current)
-    end
-
-    def kill(*keys)
-      for key in keys
-	th, irb = search(key)
-	IRB.fail IrbAlreadyDead unless th.alive?
-	th.exit
-      end
-    end    
-
-    def search(key)
-      case key
-      when Integer
-	@jobs[key]
-      when Irb
-	@jobs.find{|k, v| v.equal?(key)}
-      when Thread
-	@jobs.assoc(key)
-      else
-	assoc = @jobs.find{|k, v| v.context.main.equal?(key)}
-	IRB.fail NoSuchJob, key if assoc.nil?
-	assoc
-      end
-    end
-
-    def delete(key)
-      case key
-      when Integer
-	IRB.fail NoSuchJob, key unless @jobs[key]
-	@jobs[key] = nil
-      else
-	catch(:EXISTS) do
-	  @jobs.each_index do
-	    |i|
-	    if @jobs[i] and (@jobs[i][0] == key ||
-			     @jobs[i][1] == key ||
-			     @jobs[i][1].context.main.equal?(key))
-	      @jobs[i] = nil
-	      throw :EXISTS
-	    end
-	  end
-	  IRB.fail NoSuchJob, key
-	end
-      end
-      until assoc = @jobs.pop; end unless @jobs.empty?
-      @jobs.push assoc
-    end
-
-    def inspect
-      ary = []
-      @jobs.each_index do
-	|i|
-	th, irb = @jobs[i]
-	next if th.nil?
-
-	if th.alive?
-	  if th.stop?
-	    t_status = "stop"
-	  else
-	    t_status = "running"
-	  end
-	else
-	  t_status = "exited"
-	end
-	ary.push format("#%d->%s on %s (%s: %s)",
-			i, 
-			irb.context.irb_name, 
-			irb.context.main,
-			th,
-			t_status)
-      end
-      ary.join("\n")
-    end
-  end
-
-  @JobManager = JobManager.new
-
-  def IRB.JobManager
-    @JobManager
-  end
-
-  def IRB.CurrentContext
-    IRB.JobManager.irb(Thread.current).context
-  end
-
-  # invoke multi-irb 
-  def IRB.irb(file = nil, *main)
-    workspace = WorkSpace.new(*main)
-    parent_thread = Thread.current
-    Thread.start do
-      begin
-	irb = Irb.new(workspace, file)
-      rescue 
-	print "Subirb can't start with context(self): ", workspace.main.inspect, "\n"
-	print "return to main irb\n"
-	Thread.pass
-	Thread.main.wakeup
-	Thread.exit
-      end
-      @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
-      @JobManager.insert(irb)
-      @JobManager.current_job = irb
-      begin
-	system_exit = false
-	catch(:IRB_EXIT) do
-	  irb.eval_input
-	end
-      rescue SystemExit
-	system_exit = true
-	raise
-	#fail
-      ensure
-	unless system_exit
-	  @JobManager.delete(irb)
-	  if parent_thread.alive?
-	    @JobManager.current_job = @JobManager.irb(parent_thread)
-	    parent_thread.run
-	  else
-	    @JobManager.current_job = @JobManager.main_irb
-	    @JobManager.main_thread.run
-	  end
-	end
-      end
-    end
-    Thread.stop
-    @JobManager.current_job = @JobManager.irb(Thread.current)
-  end
-
-#   class Context
-#     def set_last_value(value)
-#       @last_value = value
-#       @workspace.evaluate "_ = IRB.JobManager.irb(Thread.current).context.last_value"
-#       if @eval_history #and !@__.equal?(@last_value)
-# 	@eval_history_values.push @line_no, @last_value
-# 	@workspace.evaluate "__ = IRB.JobManager.irb(Thread.current).context.instance_eval{@eval_history_values}"
-#       end
-#       @last_value
-#     end
-#   end
-
-#  module ExtendCommand
-#     def irb_context
-#       IRB.JobManager.irb(Thread.current).context
-#     end
-# #    alias conf irb_context
-#   end
-
-  @CONF[:SINGLE_IRB_MODE] = false
-  @JobManager.insert(@CONF[:MAIN_CONTEXT].irb)
-  @JobManager.current_job = @CONF[:MAIN_CONTEXT].irb
-
-  class Irb
-    def signal_handle
-      unless @context.ignore_sigint?
-	print "\nabort!!\n" if @context.verbose?
-	exit
-      end
-
-      case @signal_status
-      when :IN_INPUT
-	print "^C\n"
-	IRB.JobManager.thread(self).raise RubyLex::TerminateLineInput
-      when :IN_EVAL
-	IRB.irb_abort(self)
-      when :IN_LOAD
-	IRB.irb_abort(self, LoadAbort)
-      when :IN_IRB
-	# ignore
-      else
-	# ignore other cases as well
-      end
-    end
-  end
-
-  trap("SIGINT") do
-    @JobManager.current_job.signal_handle
-    Thread.stop
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/save-history.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/save-history.rb
deleted file mode 100644
index f615ea2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/save-history.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#   save-history.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKAkeiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "readline"
-
-module IRB
-  module HistorySavingAbility
-    @RCS_ID='-$Id: save-history.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-  end
-
-  class Context
-    def init_save_history
-      unless (class<<@io;self;end).include?(HistorySavingAbility)
-	@io.extend(HistorySavingAbility)
-      end
-    end
-
-    def save_history
-      IRB.conf[:SAVE_HISTORY]
-    end
-
-    def save_history=(val)
-      IRB.conf[:SAVE_HISTORY] = val
-      if val
-	main_context = IRB.conf[:MAIN_CONTEXT]
-	main_context = self unless main_context
-	main_context.init_save_history
-      end
-    end
-
-    def history_file
-      IRB.conf[:HISTORY_FILE]
-    end
-
-    def history_file=(hist)
-      IRB.conf[:HISTORY_FILE] = hist
-    end
-  end
-
-  module HistorySavingAbility
-    include Readline
-
-    def HistorySavingAbility.create_finalizer
-      proc do
-	if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
-	  if hf = IRB.conf[:HISTORY_FILE]
-	    file = File.expand_path(hf)
-	  end
-	  file = IRB.rc_file("_history") unless file
-	  open(file, 'w' ) do |f|
-	    hist = HISTORY.to_a
-	    f.puts(hist[-num..-1] || hist)
-	  end
-	end
-      end
-    end
-
-    def HistorySavingAbility.extended(obj)
-      ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
-      obj.load_history
-      obj
-    end
-
-    def load_history
-      hist = IRB.conf[:HISTORY_FILE]
-      hist = IRB.rc_file("_history") unless hist
-      if File.exist?(hist)
-	open(hist) do |f|
-	  f.each {|l| HISTORY << l.chomp}
-	end
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/tracer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/tracer.rb
deleted file mode 100644
index a860ffd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/tracer.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#   irb/lib/tracer.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "tracer"
-
-module IRB
-
-  # initialize tracing function
-  def IRB.initialize_tracer
-    Tracer.verbose = false
-    Tracer.add_filter {
-      |event, file, line, id, binding, *rests|
-      /^#{Regexp.quote(@CONF[:IRB_LIB_PATH])}/ !~ file and
-	File::basename(file) != "irb.rb"
-    }
-  end
-
-  class Context
-    attr_reader :use_tracer
-    alias use_tracer? use_tracer
-
-    def use_tracer=(opt)
-      if opt
-	Tracer.set_get_line_procs(@irb_path) {
-	  |line_no, *rests|
-	  @io.line(line_no)
-	}
-      elsif !opt && @use_tracer
-	Tracer.off
-      end
-      @use_tracer=opt
-    end
-  end
-
-  class WorkSpace
-    alias __evaluate__ evaluate
-    def evaluate(context, statements, file = nil, line = nil)
-      if context.use_tracer? && file != nil && line != nil
-	Tracer.on 
-	begin
-	  __evaluate__(context, statements, file, line)
-	ensure
-	  Tracer.off
-	end
-      else
-	__evaluate__(context, statements, file || __FILE__, line || __LINE__)
-      end
-    end
-  end
-
-  IRB.initialize_tracer
-end
-	
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/use-loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/use-loader.rb
deleted file mode 100644
index a709819..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/use-loader.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-#   use-loader.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/load"
-require "irb/ext/loader"
-
-class Object
-  alias __original__load__IRB_use_loader__ load
-  alias __original__require__IRB_use_loader__ require
-end
-
-module IRB
-  module ExtendCommandBundle
-    def irb_load(*opts, &b)
-      ExtendCommand::Load.execute(irb_context, *opts, &b)
-    end
-    def irb_require(*opts, &b)
-      ExtendCommand::Require.execute(irb_context, *opts, &b)
-    end
-  end
-
-  class Context
-
-    IRB.conf[:USE_LOADER] = false
-    
-    def use_loader
-      IRB.conf[:USE_LOADER]
-    end
-
-    alias use_loader? use_loader
-
-    def use_loader=(opt)
-
-      if IRB.conf[:USE_LOADER] != opt
-	IRB.conf[:USE_LOADER] = opt
-	if opt
-	  if !$".include?("irb/cmd/load")
-	  end
-	  (class<<@workspace.main;self;end).instance_eval {
-	    alias_method :load, :irb_load
-	    alias_method :require, :irb_require
-	  }
-	else
-	  (class<<@workspace.main;self;end).instance_eval {
-	    alias_method :load, :__original__load__IRB_use_loader__
-	    alias_method :require, :__original__require__IRB_use_loader__
-	  }
-	end
-      end
-      print "Switch to load/require#{unless use_loader; ' non';end} trace mode.\n" if verbose?
-      opt
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/workspaces.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/workspaces.rb
deleted file mode 100644
index 7bb6411..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ext/workspaces.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-#   push-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-  class Context
-
-    def irb_level
-      workspace_stack.size
-    end
-
-    def workspaces
-      if defined? @workspaces
-	@workspaces
-      else
-	@workspaces = []
-      end
-    end
-
-    def push_workspace(*_main)
-      if _main.empty?
-	if workspaces.empty?
-	  print "No other workspace\n"
-	  return nil
-	end
-	ws = workspaces.pop
-	workspaces.push @workspace
-	@workspace = ws
-	return workspaces
-      end
-
-      workspaces.push @workspace
-      @workspace = WorkSpace.new(@workspace.binding, _main[0])
-      if !(class<<main;ancestors;end).include?(ExtendCommandBundle)
-	main.extend ExtendCommandBundle
-      end
-    end
-
-    def pop_workspace
-      if workspaces.empty?
-	print "workspace stack empty\n"
-	return
-      end
-      @workspace = workspaces.pop
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/extend-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/extend-command.rb
deleted file mode 100644
index e83716e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/extend-command.rb
+++ /dev/null
@@ -1,264 +0,0 @@
-#
-#   irb/extend-command.rb - irb extend command 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  #
-  # IRB extended command
-  #
-  module ExtendCommandBundle
-    EXCB = ExtendCommandBundle
-
-    NO_OVERRIDE = 0
-    OVERRIDE_PRIVATE_ONLY = 0x01
-    OVERRIDE_ALL = 0x02
-
-    def irb_exit(ret = 0)
-      irb_context.exit(ret)
-    end
-
-    def irb_context
-      IRB.CurrentContext
-    end
-
-    @ALIASES = [
-      [:context, :irb_context, NO_OVERRIDE],
-      [:conf, :irb_context, NO_OVERRIDE],
-      [:irb_quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-      [:exit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-      [:quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-    ]
-
-    @EXTEND_COMMANDS = [
-      [:irb_current_working_workspace, :CurrentWorkingWorkspace, "irb/cmd/chws",
-	[:irb_print_working_workspace, OVERRIDE_ALL],
-	[:irb_cwws, OVERRIDE_ALL],
-	[:irb_pwws, OVERRIDE_ALL],
-#	[:irb_cww, OVERRIDE_ALL],
-#	[:irb_pww, OVERRIDE_ALL],
-	[:cwws, NO_OVERRIDE],
-	[:pwws, NO_OVERRIDE],
-#	[:cww, NO_OVERRIDE],
-#	[:pww, NO_OVERRIDE],
-	[:irb_current_working_binding, OVERRIDE_ALL],
-	[:irb_print_working_binding, OVERRIDE_ALL],
-	[:irb_cwb, OVERRIDE_ALL],
-	[:irb_pwb, OVERRIDE_ALL],
-#	[:cwb, NO_OVERRIDE],
-#	[:pwb, NO_OVERRIDE]
-      ],
-      [:irb_change_workspace, :ChangeWorkspace, "irb/cmd/chws",
-	[:irb_chws, OVERRIDE_ALL],
-#	[:irb_chw, OVERRIDE_ALL],
-	[:irb_cws, OVERRIDE_ALL],
-#	[:irb_cw, OVERRIDE_ALL],
-	[:chws, NO_OVERRIDE],
-#	[:chw, NO_OVERRIDE],
-	[:cws, NO_OVERRIDE],
-#	[:cw, NO_OVERRIDE],
-	[:irb_change_binding, OVERRIDE_ALL],
-	[:irb_cb, OVERRIDE_ALL],
-	[:cb, NO_OVERRIDE]],
-
-      [:irb_workspaces, :Workspaces, "irb/cmd/pushws",
-	[:workspaces, NO_OVERRIDE],
-	[:irb_bindings, OVERRIDE_ALL],
-	[:bindings, NO_OVERRIDE]],
-      [:irb_push_workspace, :PushWorkspace, "irb/cmd/pushws",
-	[:irb_pushws, OVERRIDE_ALL],
-#	[:irb_pushw, OVERRIDE_ALL],
-	[:pushws, NO_OVERRIDE],
-#	[:pushw, NO_OVERRIDE],
-	[:irb_push_binding, OVERRIDE_ALL],
-	[:irb_pushb, OVERRIDE_ALL],
-	[:pushb, NO_OVERRIDE]],
-      [:irb_pop_workspace, :PopWorkspace, "irb/cmd/pushws",
-	[:irb_popws, OVERRIDE_ALL],
-#	[:irb_popw, OVERRIDE_ALL],
-	[:popws, NO_OVERRIDE],
-#	[:popw, NO_OVERRIDE],
-	[:irb_pop_binding, OVERRIDE_ALL],
-	[:irb_popb, OVERRIDE_ALL],
-	[:popb, NO_OVERRIDE]],
-
-      [:irb_load, :Load, "irb/cmd/load"],
-      [:irb_require, :Require, "irb/cmd/load"],
-      [:irb_source, :Source, "irb/cmd/load", 
-	[:source, NO_OVERRIDE]],
-
-      [:irb, :IrbCommand, "irb/cmd/subirb"],
-      [:irb_jobs, :Jobs, "irb/cmd/subirb", 
-	[:jobs, NO_OVERRIDE]],
-      [:irb_fg, :Foreground, "irb/cmd/subirb", 
-	[:fg, NO_OVERRIDE]],
-      [:irb_kill, :Kill, "irb/cmd/subirb", 
-	[:kill, OVERRIDE_PRIVATE_ONLY]],
-
-      [:irb_help, :Help, "irb/cmd/help",
-        [:help, NO_OVERRIDE]],
-
-    ]
-
-    def self.install_extend_commands
-      for args in @EXTEND_COMMANDS
-	def_extend_command(*args)
-      end
-    end
-
-    # aliases = [commans_alias, flag], ...
-    def self.def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases)
-      case cmd_class
-      when Symbol
-	cmd_class = cmd_class.id2name
-      when String
-      when Class
-	cmd_class = cmd_class.name
-      end
-
-      if load_file
-	eval %[
-	  def #{cmd_name}(*opts, &b)
-	    require "#{load_file}"
-	    eval %[
-	      def #{cmd_name}(*opts, &b)
-		ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
-	      end
-	    ]
-	    send :#{cmd_name}, *opts, &b
-	  end
-	]
-      else
-	eval %[
-	  def #{cmd_name}(*opts, &b)
-	    ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
-	  end
-	]
-      end
-
-      for ali, flag in aliases
-	@ALIASES.push [ali, cmd_name, flag]
-      end
-    end
-
-    # override = {NO_OVERRIDE, OVERRIDE_PRIVATE_ONLY, OVERRIDE_ALL}
-    def install_alias_method(to, from, override = NO_OVERRIDE)
-      to = to.id2name unless to.kind_of?(String)
-      from = from.id2name unless from.kind_of?(String)
-
-      if override == OVERRIDE_ALL or
-	  (override == OVERRIDE_PRIVATE_ONLY) && !respond_to?(to) or
-	  (override == NO_OVERRIDE) &&  !respond_to?(to, true)
-	target = self
-	(class<<self;self;end).instance_eval{
-	  if target.respond_to?(to, true) && 
-	      !target.respond_to?(EXCB.irb_original_method_name(to), true)
-	    alias_method(EXCB.irb_original_method_name(to), to) 
-	  end
-	  alias_method to, from
-	}
-      else
-	print "irb: warn: can't alias #{to} from #{from}.\n"
-      end
-    end
-
-    def self.irb_original_method_name(method_name)
-      "irb_" + method_name + "_org"
-    end
-
-    def self.extend_object(obj)
-      unless (class<<obj;ancestors;end).include?(EXCB)
-	super
-	for ali, com, flg in @ALIASES
-	  obj.install_alias_method(ali, com, flg)
-	end
-      end
-    end
-
-    install_extend_commands
-  end
-
-  # extension support for Context
-  module ContextExtender
-    CE = ContextExtender
-
-    @EXTEND_COMMANDS = [
-      [:eval_history=, "irb/ext/history.rb"],
-      [:use_tracer=, "irb/ext/tracer.rb"],
-      [:math_mode=, "irb/ext/math-mode.rb"],
-      [:use_loader=, "irb/ext/use-loader.rb"],
-      [:save_history=, "irb/ext/save-history.rb"],
-    ]
-
-    def self.install_extend_commands
-      for args in @EXTEND_COMMANDS
-	def_extend_command(*args)
-      end
-    end
-
-    def self.def_extend_command(cmd_name, load_file, *aliases)
-      Context.module_eval %[
-        def #{cmd_name}(*opts, &b)
-	  Context.module_eval {remove_method(:#{cmd_name})}
-	  require "#{load_file}"
-	  send :#{cmd_name}, *opts, &b
-	end
-	for ali in aliases
-	  alias_method ali, cmd_name
-	end
-      ]
-    end
-
-    CE.install_extend_commands
-  end
-
-  module MethodExtender
-    def def_pre_proc(base_method, extend_method)
-      base_method = base_method.to_s
-      extend_method = extend_method.to_s
-
-      alias_name = new_alias_name(base_method)
-      module_eval %[
-        alias_method alias_name, base_method
-        def #{base_method}(*opts)
-	  send :#{extend_method}, *opts
-	  send :#{alias_name}, *opts
-	end
-      ]
-    end
-
-    def def_post_proc(base_method, extend_method)
-      base_method = base_method.to_s
-      extend_method = extend_method.to_s
-
-      alias_name = new_alias_name(base_method)
-      module_eval %[
-        alias_method alias_name, base_method
-        def #{base_method}(*opts)
-	  send :#{alias_name}, *opts
-	  send :#{extend_method}, *opts
-	end
-      ]
-    end
-
-    # return #{prefix}#{name}#{postfix}<num>
-    def new_alias_name(name, prefix = "__alias_of__", postfix = "__")
-      base_name = "#{prefix}#{name}#{postfix}"
-      all_methods = instance_methods(true) + private_instance_methods(true)
-      same_methods = all_methods.grep(/^#{Regexp.quote(base_name)}[0-9]*$/)
-      return base_name if same_methods.empty?
-      no = same_methods.size
-      while !same_methods.include?(alias_name = base_name + no)
-	no += 1
-      end
-      alias_name
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/frame.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/frame.rb
deleted file mode 100644
index 34bf103..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/frame.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#   frame.rb - 
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-module IRB
-  class Frame
-    extend Exception2MessageMapper
-    def_exception :FrameOverflow, "frame overflow"
-    def_exception :FrameUnderflow, "frame underflow"
-
-    INIT_STACK_TIMES = 3
-    CALL_STACK_OFFSET = 3
-
-    def initialize
-      @frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES
-    end
-
-    def trace_func(event, file, line, id, binding)
-      case event
-      when 'call', 'class'
-	@frames.push binding
-      when 'return', 'end'
-	@frames.pop
-      end
-    end
-
-    def top(n = 0)
-      bind = @frames[-(n + CALL_STACK_OFFSET)]
-      Fail FrameUnderflow unless bind
-      bind
-    end
-
-    def bottom(n = 0)
-      bind = @frames[n]
-      Fail FrameOverflow unless bind
-      bind
-    end
-
-    # singleton functions
-    def Frame.bottom(n = 0)
-      @backtrace.bottom(n)
-    end
-
-    def Frame.top(n = 0)
-      @backtrace.top(n)
-    end
-
-    def Frame.sender
-      eval "self", @backtrace.top
-    end
-
-    @backtrace = Frame.new
-    set_trace_func proc{|event, file, line, id, binding, klass|
-      @backtrace.trace_func(event, file, line, id, binding)
-    }
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/help.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/help.rb
deleted file mode 100644
index 9a32fd8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/help.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#   irb/help.rb - print usase module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#
-#   
-#
-
-module IRB
-  def IRB.print_usage
-    lc = IRB.conf[:LC_MESSAGES]
-    path = lc.find("irb/help-message")
-    space_line = false
-    File.foreach(path) do
-      |l|
-      if /^\s*$/ =~ l
-	lc.puts l unless space_line
-	space_line = true
-	next
-      end
-      space_line = false
-      
-      l.sub!(/#.*$/, "")
-      next if /^\s*$/ =~ l
-      lc.puts l
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/init.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/init.rb
deleted file mode 100644
index 60974cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/init.rb
+++ /dev/null
@@ -1,259 +0,0 @@
-#
-#   irb/init.rb - irb initialize module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-
-  # initialize config
-  def IRB.setup(ap_path)
-    IRB.init_config(ap_path)
-    IRB.init_error
-    IRB.parse_opts
-    IRB.run_config
-    IRB.load_modules
-
-    unless @CONF[:PROMPT][@CONF[:PROMPT_MODE]]
-      IRB.fail(UndefinedPromptMode, @CONF[:PROMPT_MODE]) 
-    end
-  end
-
-  # @CONF default setting
-  def IRB.init_config(ap_path)
-    # class instance variables
-    @TRACER_INITIALIZED = false
-
-    # default configurations
-    unless ap_path and @CONF[:AP_NAME]
-      ap_path = File.join(File.dirname(File.dirname(__FILE__)), "irb.rb")
-    end
-    @CONF[:AP_NAME] = File::basename(ap_path, ".rb")
-
-    @CONF[:IRB_NAME] = "irb"
-    @CONF[:IRB_LIB_PATH] = File.dirname(__FILE__)
-
-    @CONF[:RC] = true
-    @CONF[:LOAD_MODULES] = []
-    @CONF[:IRB_RC] = nil
-
-    @CONF[:MATH_MODE] = false
-    @CONF[:USE_READLINE] = false unless defined?(ReadlineInputMethod)
-    @CONF[:INSPECT_MODE] = nil
-    @CONF[:USE_TRACER] = false
-    @CONF[:USE_LOADER] = false
-    @CONF[:IGNORE_SIGINT] = true
-    @CONF[:IGNORE_EOF] = false
-    @CONF[:ECHO] = nil
-    @CONF[:VERBOSE] = nil
-
-    @CONF[:EVAL_HISTORY] = nil
-    @CONF[:SAVE_HISTORY] = nil
-
-    @CONF[:BACK_TRACE_LIMIT] = 16
-
-    @CONF[:PROMPT] = {
-      :NULL => {
-	:PROMPT_I => nil,
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "%s\n"
-      },
-      :DEFAULT => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_S => "%N(%m):%03n:%i%l ",
-	:PROMPT_C => "%N(%m):%03n:%i* ",
-	:RETURN => "=> %s\n"
-      },
-      :CLASSIC => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_S => "%N(%m):%03n:%i%l ",
-	:PROMPT_C => "%N(%m):%03n:%i* ",
-	:RETURN => "%s\n"
-      },
-      :SIMPLE => {
-	:PROMPT_I => ">> ",
-	:PROMPT_N => ">> ",
-	:PROMPT_S => nil,
-	:PROMPT_C => "?> ",
-	:RETURN => "=> %s\n"
-      },
-      :INF_RUBY => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-#	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "%s\n",
-	:AUTO_INDENT => true
-      },
-      :XMP => {
-	:PROMPT_I => nil,
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "    ==>%s\n"
-      }
-    }
-
-    @CONF[:PROMPT_MODE] = (STDIN.tty? ? :DEFAULT : :NULL)
-    @CONF[:AUTO_INDENT] = false
-
-    @CONF[:CONTEXT_MODE] = 3 # use binding in function on TOPLEVEL_BINDING
-    @CONF[:SINGLE_IRB] = false
-
-#    @CONF[:LC_MESSAGES] = "en"
-    @CONF[:LC_MESSAGES] = Locale.new
-    
-    @CONF[:DEBUG_LEVEL] = 1
-  end
-
-  def IRB.init_error
-    @CONF[:LC_MESSAGES].load("irb/error.rb")
-  end
-
-  FEATURE_IOPT_CHANGE_VERSION = "1.9.0"
-
-  # option analyzing
-  def IRB.parse_opts
-    load_path = []
-    while opt = ARGV.shift
-      case opt
-      when "-f"
-	@CONF[:RC] = false
-      when "-m"
-	@CONF[:MATH_MODE] = true
-      when "-d"
-	$DEBUG = true
-      when /^-r(.+)?/
-	opt = $1 || ARGV.shift
-	@CONF[:LOAD_MODULES].push opt if opt
-      when /^-I(.+)?/
-        opt = $1 || ARGV.shift
-	load_path.concat(opt.split(File::PATH_SEPARATOR)) if opt
-      when /^-K(.)/
-	$KCODE = $1
-      when "--inspect"
-	@CONF[:INSPECT_MODE] = true
-      when "--noinspect"
-	@CONF[:INSPECT_MODE] = false
-      when "--readline"
-	@CONF[:USE_READLINE] = true
-      when "--noreadline"
-	@CONF[:USE_READLINE] = false
-      when "--echo"
-	@CONF[:ECHO] = true
-      when "--noecho"
-	@CONF[:ECHO] = false
-      when "--verbose"
-	@CONF[:VERBOSE] = true
-      when "--noverbose"
-	@CONF[:VERBOSE] = false
-      when "--prompt-mode", "--prompt"
-	prompt_mode = ARGV.shift.upcase.tr("-", "_").intern
-	@CONF[:PROMPT_MODE] = prompt_mode
-      when "--noprompt"
-	@CONF[:PROMPT_MODE] = :NULL
-      when "--inf-ruby-mode"
-	@CONF[:PROMPT_MODE] = :INF_RUBY
-      when "--sample-book-mode", "--simple-prompt"
-	@CONF[:PROMPT_MODE] = :SIMPLE
-      when "--tracer"
-	@CONF[:USE_TRACER] = true
-      when "--back-trace-limit"
-	@CONF[:BACK_TRACE_LIMIT] = ARGV.shift.to_i
-      when "--context-mode"
-	@CONF[:CONTEXT_MODE] = ARGV.shift.to_i
-      when "--single-irb"
-	@CONF[:SINGLE_IRB] = true
-      when "--irb_debug"
-	@CONF[:DEBUG_LEVEL] = ARGV.shift.to_i
-      when "-v", "--version"
-	print IRB.version, "\n"
-	exit 0
-      when "-h", "--help"
-	require "irb/help"
-	IRB.print_usage
-	exit 0
-      when /^-/
-	IRB.fail UnrecognizedSwitch, opt
-      else
-	@CONF[:SCRIPT] = opt
-	$0 = opt
-	break
-      end
-    end
-    if RUBY_VERSION >= FEATURE_IOPT_CHANGE_VERSION
-      load_path.collect! do |path|
-	/\A\.\// =~ path ? path : File.expand_path(path)
-      end
-    end
-    $LOAD_PATH.unshift(*load_path)
-  end
-
-  # running config
-  def IRB.run_config
-    if @CONF[:RC]
-      begin
-	load rc_file
-      rescue LoadError, Errno::ENOENT
-      rescue
-	print "load error: #{rc_file}\n"
-	print $!.class, ": ", $!, "\n"
-	for err in $@[0, $@.size - 2]
-	  print "\t", err, "\n"
-	end
-      end
-    end
-  end
-
-  IRBRC_EXT = "rc"
-  def IRB.rc_file(ext = IRBRC_EXT)
-    if !@CONF[:RC_NAME_GENERATOR]
-      rc_file_generators do |rcgen|
-	@CONF[:RC_NAME_GENERATOR] ||= rcgen
-	if File.exist?(rcgen.call(IRBRC_EXT))
-	  @CONF[:RC_NAME_GENERATOR] = rcgen
-	  break
-	end
-      end
-    end
-    @CONF[:RC_NAME_GENERATOR].call ext
-  end
-
-  # enumerate possible rc-file base name generators
-  def IRB.rc_file_generators
-    if irbrc = ENV["IRBRC"]
-      yield proc{|rc|  rc == "rc" ? irbrc : irbrc+rc}
-    end
-    if home = ENV["HOME"]
-      yield proc{|rc| home+"/.irb#{rc}"} 
-    end
-    home = Dir.pwd
-    yield proc{|rc| home+"/.irb#{rc}"}
-    yield proc{|rc| home+"/irb#{rc.sub(/\A_?/, '.')}"}
-    yield proc{|rc| home+"/_irb#{rc}"}
-    yield proc{|rc| home+"/$irb#{rc}"}
-  end
-
-  # loading modules
-  def IRB.load_modules
-    for m in @CONF[:LOAD_MODULES]
-      begin
-	require m
-      rescue
-	print $@[0], ":", $!.class, ": ", $!, "\n"
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/input-method.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/input-method.rb
deleted file mode 100644
index 2e50499..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/input-method.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-#   irb/input-method.rb - input methods used irb
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  # 
-  # InputMethod
-  #	StdioInputMethod
-  #	FileInputMethod
-  #	(ReadlineInputMethod)
-  #
-  STDIN_FILE_NAME = "(line)"
-  class InputMethod
-    @RCS_ID='-$Id: input-method.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize(file = STDIN_FILE_NAME)
-      @file_name = file
-    end
-    attr_reader :file_name
-
-    attr_accessor :prompt
-    
-    def gets
-      IRB.fail NotImplementedError, "gets"
-    end
-    public :gets
-
-    def readable_atfer_eof?
-      false
-    end
-  end
-  
-  class StdioInputMethod < InputMethod
-    def initialize
-      super
-      @line_no = 0
-      @line = []
-    end
-
-    def gets
-      print @prompt
-      @line[@line_no += 1] = $stdin.gets
-    end
-
-    def eof?
-      $stdin.eof?
-    end
-
-    def readable_atfer_eof?
-      true
-    end
-
-    def line(line_no)
-      @line[line_no]
-    end
-  end
-  
-  class FileInputMethod < InputMethod
-    def initialize(file)
-      super
-      @io = open(file)
-    end
-    attr_reader :file_name
-
-    def eof?
-      @io.eof?
-    end
-
-    def gets
-      print @prompt
-      l = @io.gets
-#      print @prompt, l
-      l
-    end
-  end
-
-  begin
-    require "readline"
-    class ReadlineInputMethod < InputMethod
-      include Readline 
-      def initialize
-	super
-
-	@line_no = 0
-	@line = []
-	@eof = false
-      end
-
-      def gets
-	if l = readline(@prompt, false)
-          HISTORY.push(l) if !l.empty?
-	  @line[@line_no += 1] = l + "\n"
-	else
-	  @eof = true
-	  l
-	end
-      end
-
-      def eof?
-	@eof
-      end
-
-      def readable_atfer_eof?
-	true
-      end
-
-      def line(line_no)
-	@line[line_no]
-      end
-    end
-  rescue LoadError
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/error.rb
deleted file mode 100644
index 8054f59..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/error.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#   irb/lc/error.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "e2mmap"
-
-module IRB
-
-  # exceptions
-  extend Exception2MessageMapper
-  def_exception :UnrecognizedSwitch, "Unrecognized switch: %s"
-  def_exception :NotImplementedError, "Need to define `%s'"
-  def_exception :CantReturnToNormalMode, "Can't return to normal mode."
-  def_exception :IllegalParameter, "Illegal parameter(%s)."
-  def_exception :IrbAlreadyDead, "Irb is already dead."
-  def_exception :IrbSwitchedToCurrentThread, "Switched to current thread."
-  def_exception :NoSuchJob, "No such job(%s)."
-  def_exception :CantShiftToMultiIrbMode, "Can't shift to multi irb mode."
-  def_exception :CantChangeBinding, "Can't change binding to (%s)."
-  def_exception :UndefinedPromptMode, "Undefined prompt mode(%s)."
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/help-message b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/help-message
deleted file mode 100644
index 5188ff3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/help-message
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-#   irb/lc/help-message.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-Usage:  irb.rb [options] [programfile] [arguments]
-  -f		    Suppress read of ~/.irbrc 
-  -m		    Bc mode (load mathn, fraction or matrix are available)
-  -d                Set $DEBUG to true (same as `ruby -d')
-  -r load-module    Same as `ruby -r'
-  -I path           Specify $LOAD_PATH directory
-  --inspect	    Use `inspect' for output (default except for bc mode)
-  --noinspect	    Don't use inspect for output
-  --readline	    Use Readline extension module
-  --noreadline	    Don't use Readline extension module
-  --prompt prompt-mode
-  --prompt-mode prompt-mode
-		    Switch prompt mode. Pre-defined prompt modes are
-		    `default', `simple', `xmp' and `inf-ruby'
-  --inf-ruby-mode   Use prompt appropriate for inf-ruby-mode on emacs. 
-		    Suppresses --readline. 
-  --simple-prompt   Simple prompt mode
-  --noprompt	    No prompt mode
-  --tracer	    Display trace for each execution of commands.
-  --back-trace-limit n
-		    Display backtrace top n and tail n. The default
-		    value is 16. 
-  --irb_debug n	    Set internal debug level to n (not for popular use)
-  -v, --version	    Print the version of irb
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/error.rb
deleted file mode 100644
index b8652b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/error.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-#   irb/lc/ja/error.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "e2mmap"
-
-module IRB
-  # exceptions
-  extend Exception2MessageMapper
-  def_exception :UnrecognizedSwitch, '$B%9%$%C%A(B(%s)$B$,J,$j$^$;$s(B'
-  def_exception :NotImplementedError, '`%s\'$B$NDj5A$,I,MW$G$9(B'
-  def_exception :CantReturnToNormalMode, 'Normal$B%b!<%I$KLa$l$^$;$s(B.'
-  def_exception :IllegalParameter, '$B%Q%i%a!<%?(B(%s)$B$,4V0c$C$F$$$^$9(B.'
-  def_exception :IrbAlreadyDead, 'Irb$B$O4{$K;`$s$G$$$^$9(B.'
-  def_exception :IrbSwitchedToCurrentThread, '$B%+%l%s%H%9%l%C%I$K at Z$jBX$o$j$^$7$?(B.'
-  def_exception :NoSuchJob, '$B$=$N$h$&$J%8%g%V(B(%s)$B$O$"$j$^$;$s(B.'
-  def_exception :CantShiftToMultiIrbMode, 'multi-irb mode$B$K0\$l$^$;$s(B.'
-  def_exception :CantChangeBinding, '$B%P%$%s%G%#%s%0(B(%s)$B$KJQ99$G$-$^$;$s(B.'
-  def_exception :UndefinedPromptMode, '$B%W%m%s%W%H%b!<%I(B(%s)$B$ODj5A$5$l$F$$$^$;$s(B.'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/help-message b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/help-message
deleted file mode 100644
index 719796c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/lc/ja/help-message
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#   irb/lc/ja/help-message.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-Usage:  irb.rb [options] [programfile] [arguments]
-  -f		    ~/.irbrc $B$rFI$_9~$^$J$$(B.
-  -m		    bc$B%b!<%I(B($BJ,?t(B, $B9TNs$N7W;;$,$G$-$k(B)
-  -d                $DEBUG $B$r(Btrue$B$K$9$k(B(ruby -d $B$HF1$8(B)
-  -r load-module    ruby -r $B$HF1$8(B.
-  -I path           $LOAD_PATH $B$K(B path $B$rDI2C$9$k(B.
-  --inspect	    $B7k2L=PNO$K(Binspect$B$rMQ$$$k(B(bc$B%b!<%I0J30$O%G%U%)%k%H(B). 
-  --noinspect	    $B7k2L=PNO$K(Binspect$B$rMQ$$$J$$(B.
-  --readline	    readline$B%i%$%V%i%j$rMxMQ$9$k(B.
-  --noreadline	    readline$B%i%$%V%i%j$rMxMQ$7$J$$(B. 
-  --prompt prompt-mode/--prompt-mode prompt-mode
-		    $B%W%m%s%W%H%b!<%I$r at ZBX$($^$9(B. $B8=:_Dj5A$5$l$F$$$k%W(B
-		    $B%m%s%W%H%b!<%I$O(B, default, simple, xmp, inf-ruby$B$,(B
-		    $BMQ0U$5$l$F$$$^$9(B. 
-  --inf-ruby-mode   emacs$B$N(Binf-ruby-mode$BMQ$N%W%m%s%W%HI=<($r9T$J$&(B. $BFC(B
-		    $B$K;XDj$,$J$$8B$j(B, readline$B%i%$%V%i%j$O;H$o$J$/$J$k(B.
-  --simple-prompt   $BHs>o$K%7%s%W%k$J%W%m%s%W%H$rMQ$$$k%b!<%I$G$9(B.
-  --noprompt	    $B%W%m%s%W%HI=<($r9T$J$o$J$$(B.
-  --tracer	    $B%3%^%s%I<B9T;~$K%H%l!<%9$r9T$J$&(B.
-  --back-trace-limit n
-		    $B%P%C%/%H%l!<%9I=<($r%P%C%/%H%l!<%9$NF,$+$i(B n, $B8e$m(B
-		    $B$+$i(Bn$B$@$19T$J$&(B. $B%G%U%)%k%H$O(B16 
-  --irb_debug n	    irb$B$N%G%P%C%0%G%P%C%0%l%Y%k$r(Bn$B$K at _Dj$9$k(B($BMxMQ$7$J(B
-		    $B$$J}$,L5Fq$G$7$g$&(B).
-  -v, --version	    irb$B$N%P!<%8%g%s$rI=<($9$k(B
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/locale.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/locale.rb
deleted file mode 100644
index bdc6351..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/locale.rb
+++ /dev/null
@@ -1,184 +0,0 @@
-#
-#   irb/locale.rb - internationalization module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-autoload :Kconv, "kconv"
-
-module IRB
-  class Locale
-    @RCS_ID='-$Id: locale.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    JPDefaultLocale = "ja"
-    LOCALE_DIR = "/lc/"
-
-    def initialize(locale = nil)
-      @lang = locale || ENV["IRB_LANG"] || ENV["LC_MESSAGES"] || ENV["LC_ALL"] || ENV["LANG"] || "C" 
-    end
-
-    attr_reader :lang
-
-    def lc2kconv(lang)
-      case lang
-      when "ja_JP.ujis", "ja_JP.euc", "ja_JP.eucJP"
-        Kconv::EUC
-      when "ja_JP.sjis", "ja_JP.SJIS"
-        Kconv::SJIS
-      when /ja_JP.utf-?8/i
-	Kconv::UTF8
-      end
-    end
-    private :lc2kconv
-
-    def String(mes)
-      mes = super(mes)
-      case @lang
-      when /^ja/
-	mes = Kconv::kconv(mes, lc2kconv(@lang))
-      else
-	mes
-      end
-      mes
-    end
-
-    def format(*opts)
-      String(super(*opts))
-    end
-
-    def gets(*rs)
-      String(super(*rs))
-    end
-
-    def readline(*rs)
-      String(super(*rs))
-    end
-
-    def print(*opts)
-      ary = opts.collect{|opt| String(opt)}
-      super(*ary)
-    end
-
-    def printf(*opts)
-      s = format(*opts)
-      print s
-    end
-
-    def puts(*opts)
-      ary = opts.collect{|opt| String(opt)}
-      super(*ary)
-    end
-
-    def require(file, priv = nil)
-      rex = Regexp.new("lc/#{Regexp.quote(file)}\.(so|o|sl|rb)?")
-      return false if $".find{|f| f =~ rex}
-
-      case file
-      when /\.rb$/
-	begin
-	  load(file, priv)
-	  $".push file
-	  return true
-	rescue LoadError
-	end
-      when /\.(so|o|sl)$/
-	return super
-      end
-
-      begin
-	load(f = file + ".rb")
-	$".push f  #"
-	return true
-      rescue LoadError
-	return ruby_require(file)
-      end
-    end
-
-    alias toplevel_load load
-    
-    def load(file, priv=nil)
-      dir = File.dirname(file)
-      dir = "" if dir == "."
-      base = File.basename(file)
-
-      if /^ja(_JP)?$/ =~ @lang
- 	back, @lang = @lang, "C"
-      end
-      begin
-	if dir[0] == ?/ #/
-	  lc_path = search_file(dir, base)
-	  return real_load(lc_path, priv) if lc_path
-	end
-	
-	for path in $:
-	  lc_path = search_file(path + "/" + dir, base)
-	  return real_load(lc_path, priv) if lc_path
-	end
-      ensure
-	@lang = back if back
-      end
-      raise LoadError, "No such file to load -- #{file}"
-    end 
-
-    def real_load(path, priv)
-      src = self.String(File.read(path))
-      if priv
-	eval("self", TOPLEVEL_BINDING).extend(Module.new {eval(src, nil, path)})
-      else
-	eval(src, TOPLEVEL_BINDING, path)
-      end
-    end
-    private :real_load
-
-    def find(file , paths = $:)
-      dir = File.dirname(file)
-      dir = "" if dir == "."
-      base = File.basename(file)
-      if dir[0] == ?/ #/
-	  return lc_path = search_file(dir, base)
-      else
-	for path in $:
-	  if lc_path = search_file(path + "/" + dir, base)
-	    return lc_path
-	  end
-	end
-      end
-      nil
-    end
-
-    def search_file(path, file)
-      if File.exist?(p1 = path + lc_path(file, "C"))
-	if File.exist?(p2 = path + lc_path(file))
-	  return p2
-	else
-	end
-	return p1
-      else
-      end
-      nil
-    end
-    private :search_file
-
-    def lc_path(file = "", lc = @lang)
-      case lc
-      when "C"
-	LOCALE_DIR + file
-      when /^ja/
-	LOCALE_DIR + "ja/" + file
-      else
-	LOCALE_DIR + @lang + "/" + file
-      end
-    end
-    private :lc_path
-  end
-end
-
-
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/notifier.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/notifier.rb
deleted file mode 100644
index 7e297af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/notifier.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-#
-#   notifier.rb - optput methods used by irb 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/output-method"
-
-module IRB
-  module Notifier
-    extend Exception2MessageMapper
-    def_exception :ErrUndefinedNotifier, 
-      "undefined notifier level: %d is specified"
-    def_exception :ErrUnrecognizedLevel, 
-      "unrecognized notifier level: %s is specified"
-
-    def def_notifier(prefix = "", output_method = StdioOutputMethod.new)
-      CompositeNotifier.new(prefix, output_method)
-    end
-    module_function :def_notifier
-  
-    class AbstructNotifier
-      def initialize(prefix, base_notifier)
-	@prefix = prefix
-	@base_notifier = base_notifier
-      end
-
-      attr_reader :prefix
-
-      def notify?
-	true
-      end
-
-      def print(*opts)
-	@base_notifier.print prefix, *opts if notify?
-      end
-
-      def printn(*opts)
-	@base_notifier.printn prefix, *opts if notify?
-      end
-
-      def printf(format, *opts)
-	@base_notifier.printf(prefix + format, *opts) if notify?
-      end
-
-      def puts(*objs)
-	if notify?
-	  @base_notifier.puts(*objs.collect{|obj| prefix + obj.to_s})
-	end
-      end
-
-      def pp(*objs)
-	if notify?
-	  @base_notifier.ppx @prefix, *objs
-	end
-      end
-
-      def ppx(prefix, *objs)
-	if notify?
-	  @base_notifier.ppx @prefix+prefix, *objs
-	end
-      end
-
-      def exec_if
-	yield(@base_notifier) if notify?
-      end
-    end
-
-    class CompositeNotifier<AbstructNotifier
-      def initialize(prefix, base_notifier)
-	super
-
-	@notifiers = [D_NOMSG]
-	@level_notifier = D_NOMSG
-      end
-
-      attr_reader :notifiers
-
-      def def_notifier(level, prefix = "")
-	notifier = LeveledNotifier.new(self, level, prefix)
-	@notifiers[level] = notifier
-	notifier
-      end
-
-      attr_reader :level_notifier
-      alias level level_notifier
-
-      def level_notifier=(value)
-	case value
-	when AbstructNotifier
-	  @level_notifier = value
-	when Integer
-	  l = @notifiers[value]
-	  Notifier.Raise ErrUndefinedNotifer, value unless l
-	  @level_notifier = l
-	else
-	  Notifier.Raise ErrUnrecognizedLevel, value unless l
-	end
-      end
-
-      alias level= level_notifier=
-    end
-
-    class LeveledNotifier<AbstructNotifier
-      include Comparable
-
-      def initialize(base, level, prefix)
-	super(prefix, base)
-	
-	@level = level
-      end
-
-      attr_reader :level
-
-      def <=>(other)
-	@level <=> other.level
-      end
-      
-      def notify?
-	@base_notifier.level >= self
-      end
-    end
-
-    class NoMsgNotifier<LeveledNotifier
-      def initialize
-	@base_notifier = nil
-	@level = 0
-	@prefix = ""
-      end
-
-      def notify?
-	false
-      end
-    end
-
-    D_NOMSG = NoMsgNotifier.new
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/output-method.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/output-method.rb
deleted file mode 100644
index a43f139..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/output-method.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-#   output-method.rb - optput methods used by irb 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-module IRB
-  # OutputMethod
-  #   StdioOutputMethod
-
-  class OutputMethod
-    @RCS_ID='-$Id: output-method.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def print(*opts)
-      IRB.fail NotImplementError, "print"
-    end
-
-    def printn(*opts)
-      print opts.join(" "), "\n"
-    end
-
-    # extend printf
-    def printf(format, *opts)
-      if /(%*)%I/ =~ format
-	format, opts = parse_printf_format(format, opts)
-      end
-      print sprintf(format, *opts)
-    end
-
-    # %
-    # <¥Õ¥é¥°>  [#0- +]
-    # <ºÇ¾®¥Õ¥£¡¼¥ë¥ÉÉý> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
-    # <ÀºÅÙ>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
-    # #<Ťµ½¤ÀµÊ¸»ú>(hh|h|l|ll|L|q|j|z|t)
-    # <ÊÑ´¹½¤ÀµÊ¸»ú>[diouxXeEfgGcsb%] 
-    def parse_printf_format(format, opts)
-      return format, opts if $1.size % 2 == 1
-    end
-
-    def foo(format)
-      pos = 0
-      inspects = []
-      format.scan(/%[#0\-+ ]?(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9]))?(\.(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9])))?(([1-9][0-9]*\$)*)([diouxXeEfgGcsb%])/) {|f, p, pp, pos, new_pos, c|
-	puts [f, p, pp, pos, new_pos, c].join("!")
-	pos = new_pos if new_pos
-	if c == "I"
-	  inspects.push pos.to_i 
-	  (f||"")+(p||"")+(pp||"")+(pos||"")+"s"
-	else
-	  $&
-	end
-      }
-    end
-
-    def puts(*objs)
-      for obj in objs
-	print(*obj)
-	print "\n"
-      end
-    end
-
-    def pp(*objs)
-      puts(*objs.collect{|obj| obj.inspect})
-    end
-
-    def ppx(prefix, *objs)
-      puts(*objs.collect{|obj| prefix+obj.inspect})
-    end
-
-  end
-
-  class StdioOutputMethod<OutputMethod
-    def print(*opts)
-      STDOUT.print(*opts)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-lex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-lex.rb
deleted file mode 100644
index efcd01e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-lex.rb
+++ /dev/null
@@ -1,1149 +0,0 @@
-#
-#   irb/ruby-lex.rb - ruby lexcal analizer
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/slex"
-require "irb/ruby-token"
-
-class RubyLex
-  @RCS_ID='-$Id: ruby-lex.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-  extend Exception2MessageMapper
-  def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
-  def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkReading2TokenDuplicateError, 
-		"key duplicate(token_n='%s', key='%s')")
-  def_exception(:SyntaxError, "%s")
-
-  def_exception(:TerminateLineInput, "Terminate Line Input")
-  
-  include RubyToken
-
-  class << self
-    attr_accessor :debug_level
-    def debug?
-      @debug_level > 0
-    end
-  end
-  @debug_level = 0
-
-  def initialize
-    lex_init
-    set_input(STDIN)
-
-    @seek = 0
-    @exp_line_no = @line_no = 1
-    @base_char_no = 0
-    @char_no = 0
-    @rests = []
-    @readed = []
-    @here_readed = []
-
-    @indent = 0
-    @indent_stack = []
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    @here_header = false
-    
-    @continue = false
-    @line = ""
-
-    @skip_space = false
-    @readed_auto_clean_up = false
-    @exception_on_syntax_error = true
-
-    @prompt = nil
-  end
-
-  attr_accessor :skip_space
-  attr_accessor :readed_auto_clean_up
-  attr_accessor :exception_on_syntax_error
-
-  attr_reader :seek
-  attr_reader :char_no
-  attr_reader :line_no
-  attr_reader :indent
-
-  # io functions
-  def set_input(io, p = nil, &block)
-    @io = io
-    if p.respond_to?(:call)
-      @input = p
-    elsif block_given?
-      @input = block
-    else
-      @input = Proc.new{@io.gets}
-    end
-  end
-
-  def get_readed
-    if idx = @readed.reverse.index("\n")
-      @base_char_no = idx
-    else
-      @base_char_no += @readed.size
-    end
-    
-    readed = @readed.join("")
-    @readed = []
-    readed
-  end
-
-  def getc
-    while @rests.empty?
-#      return nil unless buf_input
-      @rests.push nil unless buf_input
-    end
-    c = @rests.shift
-    if @here_header
-      @here_readed.push c
-    else
-      @readed.push c
-    end
-    @seek += 1
-    if c == "\n"
-      @line_no += 1 
-      @char_no = 0
-    else
-      @char_no += 1
-    end
-    c
-  end
-
-  def gets
-    l = ""
-    while c = getc
-      l.concat(c)
-      break if c == "\n"
-    end
-    return nil if l == "" and c.nil?
-    l
-  end
-
-  def eof?
-    @io.eof?
-  end
-
-  def getc_of_rests
-    if @rests.empty?
-      nil
-    else
-      getc
-    end
-  end
-
-  def ungetc(c = nil)
-    if @here_readed.empty?
-      c2 = @readed.pop
-    else
-      c2 = @here_readed.pop
-    end
-    c = c2 unless c
-    @rests.unshift c #c = 
-      @seek -= 1
-    if c == "\n"
-      @line_no -= 1 
-      if idx = @readed.reverse.index("\n")
-	@char_no = @readed.size - idx
-      else
-	@char_no = @base_char_no + @readed.size
-      end
-    else
-      @char_no -= 1
-    end
-  end
-
-  def peek_equal?(str)
-    chrs = str.split(//)
-    until @rests.size >= chrs.size
-      return false unless buf_input
-    end
-    @rests[0, chrs.size] == chrs
-  end
-
-  def peek_match?(regexp)
-    while @rests.empty?
-      return false unless buf_input
-    end
-    regexp =~ @rests.join("")
-  end
-
-  def peek(i = 0)
-    while @rests.size <= i
-      return nil unless buf_input
-    end
-    @rests[i]
-  end
-
-  def buf_input
-    prompt
-    line = @input.call
-    return nil unless line
-    @rests.concat line.split(//)
-    true
-  end
-  private :buf_input
-
-  def set_prompt(p = nil, &block)
-    p = block if block_given?
-    if p.respond_to?(:call)
-      @prompt = p
-    else
-      @prompt = Proc.new{print p}
-    end
-  end
-
-  def prompt
-    if @prompt
-      @prompt.call(@ltype, @indent, @continue, @line_no)
-    end
-  end
-
-  def initialize_input
-    @ltype = nil
-    @quoted = nil
-    @indent = 0
-    @indent_stack = []
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    @here_header = false
-    
-    @continue = false
-    prompt
-
-    @line = ""
-    @exp_line_no = @line_no
-  end
-  
-  def each_top_level_statement
-    initialize_input
-    catch(:TERM_INPUT) do
-      loop do
-	begin
-	  @continue = false
-	  prompt
-	  unless l = lex
-	    throw :TERM_INPUT if @line == ''
-	  else
-	    #p l
-	    @line.concat l
-	    if @ltype or @continue or @indent > 0
-	      next
-	    end
-	  end
-	  if @line != "\n"
-	    yield @line, @exp_line_no
-	  end
-	  break unless l
-	  @line = ''
-	  @exp_line_no = @line_no
-
-	  @indent = 0
-	  @indent_stack = []
-	  prompt
-	rescue TerminateLineInput
-	  initialize_input
-	  prompt
-	  get_readed
-	end
-      end
-    end
-  end
-
-  def lex
-    until (((tk = token).kind_of?(TkNL) || tk.kind_of?(TkEND_OF_SCRIPT)) &&
-	     !@continue or
-	     tk.nil?)
-      #p tk
-      #p @lex_state
-      #p self
-    end
-    line = get_readed
-    #      print self.inspect
-    if line == "" and tk.kind_of?(TkEND_OF_SCRIPT) || tk.nil?
-      nil
-    else
-      line
-    end
-  end
-
-  def token
-    #      require "tracer"
-    #      Tracer.on
-    @prev_seek = @seek
-    @prev_line_no = @line_no
-    @prev_char_no = @char_no
-    begin
-      begin
-	tk = @OP.match(self)
-	@space_seen = tk.kind_of?(TkSPACE)
-      rescue SyntaxError
-	raise if @exception_on_syntax_error
-	tk = TkError.new(@seek, @line_no, @char_no)
-      end
-    end while @skip_space and tk.kind_of?(TkSPACE)
-    if @readed_auto_clean_up
-      get_readed
-    end
-    #      Tracer.off
-    tk
-  end
-  
-  ENINDENT_CLAUSE = [
-    "case", "class", "def", "do", "for", "if",
-    "module", "unless", "until", "while", "begin" #, "when"
-  ]
-  DEINDENT_CLAUSE = ["end" #, "when"
-  ]
-
-  PERCENT_LTYPE = {
-    "q" => "\'",
-    "Q" => "\"",
-    "x" => "\`",
-    "r" => "/",
-    "w" => "]",
-    "W" => "]",
-    "s" => ":"
-  }
-  
-  PERCENT_PAREN = {
-    "{" => "}",
-    "[" => "]",
-    "<" => ">",
-    "(" => ")"
-  }
-
-  Ltype2Token = {
-    "\'" => TkSTRING,
-    "\"" => TkSTRING,
-    "\`" => TkXSTRING,
-    "/" => TkREGEXP,
-    "]" => TkDSTRING,
-    ":" => TkSYMBOL
-  }
-  DLtype2Token = {
-    "\"" => TkDSTRING,
-    "\`" => TkDXSTRING,
-    "/" => TkDREGEXP,
-  }
-
-  def lex_init()
-    @OP = IRB::SLex.new
-    @OP.def_rules("\0", "\004", "\032") do |op, io|
-      Token(TkEND_OF_SCRIPT)
-    end
-
-    @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |op, io|
-      @space_seen = true
-      while getc =~ /[ \t\f\r\13]/; end
-      ungetc
-      Token(TkSPACE)
-    end
-
-    @OP.def_rule("#") do |op, io|
-      identify_comment
-    end
-
-    @OP.def_rule("=begin",
-		 proc{|op, io| @prev_char_no == 0 && peek(0) =~ /\s/}) do 
-      |op, io|
-      @ltype = "="
-      until getc == "\n"; end
-      until peek_equal?("=end") && peek(4) =~ /\s/
-	until getc == "\n"; end
-      end
-      gets
-      @ltype = nil
-      Token(TkRD_COMMENT)
-    end
-
-    @OP.def_rule("\n") do |op, io|
-      print "\\n\n" if RubyLex.debug?
-      case @lex_state
-      when EXPR_BEG, EXPR_FNAME, EXPR_DOT
-	@continue = true
-      else
-	@continue = false
-	@lex_state = EXPR_BEG
-	until (@indent_stack.empty? || 
-	       [TkLPAREN, TkLBRACK, TkLBRACE, 
-		 TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
-	  @indent_stack.pop
-	end
-      end
-      @here_header = false
-      @here_readed = []
-      Token(TkNL)
-    end
-
-    @OP.def_rules("*", "**",	
-		  "=", "==", "===", 
-		  "=~", "<=>",	
-		  "<", "<=",
-		  ">", ">=", ">>") do
-      |op, io|
-      case @lex_state
-      when EXPR_FNAME, EXPR_DOT
-	@lex_state = EXPR_ARG
-      else
-	@lex_state = EXPR_BEG
-      end
-      Token(op)
-    end
-
-    @OP.def_rules("!", "!=", "!~") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    @OP.def_rules("<<") do
-      |op, io|
-      tk = nil
-      if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
-	  (@lex_state != EXPR_ARG || @space_seen)
-	c = peek(0)
-	if /\S/ =~ c && (/["'`]/ =~ c || /[\w_]/ =~ c || c == "-")
-	  tk = identify_here_document
-	end
-      end
-      unless tk
-	tk = Token(op)
-	case @lex_state
-	when EXPR_FNAME, EXPR_DOT
-	  @lex_state = EXPR_ARG
-	else
-	  @lex_state = EXPR_BEG
-	end
-      end
-      tk
-    end
-
-    @OP.def_rules("'", '"') do
-      |op, io|
-      identify_string(op)
-    end
-
-    @OP.def_rules("`") do
-      |op, io|
-      if @lex_state == EXPR_FNAME
-	@lex_state = EXPR_END
-	Token(op)
-      else
-	identify_string(op)
-      end
-    end
-
-    @OP.def_rules('?') do
-      |op, io|
-      if @lex_state == EXPR_END
-	@lex_state = EXPR_BEG
-	Token(TkQUESTION)
-      else
-	ch = getc
-	if @lex_state == EXPR_ARG && ch =~ /\s/
-	  ungetc
-	  @lex_state = EXPR_BEG;
-	  Token(TkQUESTION)
-	else
-	  if (ch == '\\') 
-	    read_escape
-	  end
-	  @lex_state = EXPR_END
-	  Token(TkINTEGER)
-	end
-      end
-    end
-
-    @OP.def_rules("&", "&&", "|", "||") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-    
-    @OP.def_rules("+=", "-=", "*=", "**=", 
-		  "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      op =~ /^(.*)=$/
-      Token(TkOPASGN, $1)
-    end
-
-    @OP.def_rule("+@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token(op)
-    end
-
-    @OP.def_rule("-@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token(op)
-    end
-
-    @OP.def_rules("+", "-") do
-      |op, io|
-      catch(:RET) do
-	if @lex_state == EXPR_ARG
-	  if @space_seen and peek(0) =~ /[0-9]/
-	    throw :RET, identify_number
-	  else
-	    @lex_state = EXPR_BEG
-	  end
-	elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
-	  throw :RET, identify_number
-	else
-	  @lex_state = EXPR_BEG
-	end
-	Token(op)
-      end
-    end
-
-    @OP.def_rule(".") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      if peek(0) =~ /[0-9]/
-	ungetc
-	identify_number
-      else
-	# for "obj.if" etc.
-	@lex_state = EXPR_DOT
-	Token(TkDOT)
-      end
-    end
-
-    @OP.def_rules("..", "...") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    lex_int2
-  end
-  
-  def lex_int2
-    @OP.def_rules("]", "}", ")") do
-      |op, io|
-      @lex_state = EXPR_END
-      @indent -= 1
-      @indent_stack.pop
-      Token(op)
-    end
-
-    @OP.def_rule(":") do
-      |op, io|
-      if @lex_state == EXPR_END || peek(0) =~ /\s/
-	@lex_state = EXPR_BEG
-	Token(TkCOLON)
-      else
-	@lex_state = EXPR_FNAME;
-	Token(TkSYMBEG)
-      end
-    end
-
-    @OP.def_rule("::") do
-       |op, io|
-#      p @lex_state.id2name, @space_seen
-      if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
-	@lex_state = EXPR_BEG
-	Token(TkCOLON3)
-      else
-	@lex_state = EXPR_DOT
-	Token(TkCOLON2)
-      end
-    end
-
-    @OP.def_rule("/") do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_string(op)
-      elsif peek(0) == '='
-	getc
-	@lex_state = EXPR_BEG
-	Token(TkOPASGN, "/") #/)
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_string(op)
-      else 
-	@lex_state = EXPR_BEG
-	Token("/") #/)
-      end
-    end
-
-    @OP.def_rules("^") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("^")
-    end
-
-    #       @OP.def_rules("^=") do
-    # 	@lex_state = EXPR_BEG
-    # 	Token(OP_ASGN, :^)
-    #       end
-    
-    @OP.def_rules(",") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    @OP.def_rules(";") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      until (@indent_stack.empty? || 
-	     [TkLPAREN, TkLBRACK, TkLBRACE, 
-	       TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
-	@indent_stack.pop
-      end
-      Token(op)
-    end
-
-    @OP.def_rule("~") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("~")
-    end
-
-    @OP.def_rule("~@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("~")
-    end
-    
-    @OP.def_rule("(") do
-      |op, io|
-      @indent += 1
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	@lex_state = EXPR_BEG
-	tk_c = TkfLPAREN
-      else
-	@lex_state = EXPR_BEG
-	tk_c = TkLPAREN
-      end
-      @indent_stack.push tk_c
-      tk = Token(tk_c)
-    end
-
-    @OP.def_rule("[]", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token("[]")
-    end
-
-    @OP.def_rule("[]=", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token("[]=")
-    end
-
-    @OP.def_rule("[") do
-      |op, io|
-      @indent += 1
-      if @lex_state == EXPR_FNAME
-	tk_c = TkfLBRACK
-      else
-	if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	  tk_c = TkLBRACK
-	elsif @lex_state == EXPR_ARG && @space_seen
-	  tk_c = TkLBRACK
-	else
-	  tk_c = TkfLBRACK
-	end
-	@lex_state = EXPR_BEG
-      end
-      @indent_stack.push tk_c
-      Token(tk_c)
-    end
-
-    @OP.def_rule("{") do
-      |op, io|
-      @indent += 1
-      if @lex_state != EXPR_END && @lex_state != EXPR_ARG
-	tk_c = TkLBRACE
-      else
-	tk_c = TkfLBRACE
-      end
-      @lex_state = EXPR_BEG
-      @indent_stack.push tk_c
-      Token(tk_c)
-    end
-
-    @OP.def_rule('\\') do
-      |op, io|
-      if getc == "\n"
-	@space_seen = true
-	@continue = true
-	Token(TkSPACE)
-      else
-	ungetc
-	Token("\\")
-      end
-    end
-
-    @OP.def_rule('%') do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_quotation
-      elsif peek(0) == '='
-	getc
-	Token(TkOPASGN, :%)
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_quotation
-      else
-	@lex_state = EXPR_BEG
-	Token("%") #))
-      end
-    end
-
-    @OP.def_rule('$') do
-      |op, io|
-      identify_gvar
-    end
-
-    @OP.def_rule('@') do
-      |op, io|
-      if peek(0) =~ /[\w_@]/
-	ungetc
-	identify_identifier
-      else
-	Token("@")
-      end
-    end
-
-    #       @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do 
-    # 	|op, io|
-    # 	@indent += 1
-    # 	@lex_state = EXPR_FNAME
-    # #	@lex_state = EXPR_END
-    # #	until @rests[0] == "\n" or @rests[0] == ";"
-    # #	  rests.shift
-    # #	end
-    #       end
-
-    @OP.def_rule("") do
-      |op, io|
-      printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
-      if peek(0) =~ /[0-9]/
-	t = identify_number
-      elsif peek(0) =~ /[\w_]/
-	t = identify_identifier
-      end
-      printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
-      t
-    end
-    
-    p @OP if RubyLex.debug?
-  end
-  
-  def identify_gvar
-    @lex_state = EXPR_END
-    
-    case ch = getc
-    when /[~_*$?!@\/\\;,=:<>".]/   #"
-      Token(TkGVAR, "$" + ch)
-    when "-"
-      Token(TkGVAR, "$-" + getc)
-    when "&", "`", "'", "+"
-      Token(TkBACK_REF, "$"+ch)
-    when /[1-9]/
-      while getc =~ /[0-9]/; end
-      ungetc
-      Token(TkNTH_REF)
-    when /\w/
-      ungetc
-      ungetc
-      identify_identifier
-    else 
-      ungetc
-      Token("$")
-    end
-  end
-  
-  def identify_identifier
-    token = ""
-    if peek(0) =~ /[$@]/
-      token.concat(c = getc)
-      if c == "@" and peek(0) == "@"
-	token.concat getc
-      end
-    end
-
-    while (ch = getc) =~ /\w|_/
-      print ":", ch, ":" if RubyLex.debug?
-      token.concat ch
-    end
-    ungetc
-    
-    if (ch == "!" || ch == "?") && token[0,1] =~ /\w/ && peek(0) != "="
-      token.concat getc
-    end
-
-    # almost fix token
-
-    case token
-    when /^\$/
-      return Token(TkGVAR, token)
-    when /^\@\@/
-      @lex_state = EXPR_END
-      # p Token(TkCVAR, token)
-      return Token(TkCVAR, token)
-    when /^\@/
-      @lex_state = EXPR_END
-      return Token(TkIVAR, token)
-    end
-    
-    if @lex_state != EXPR_DOT
-      print token, "\n" if RubyLex.debug?
-
-      token_c, *trans = TkReading2Token[token]
-      if token_c
-	# reserved word?
-
-	if (@lex_state != EXPR_BEG &&
-	    @lex_state != EXPR_FNAME &&
-	    trans[1])
-	  # modifiers
-	  token_c = TkSymbol2Token[trans[1]]
-	  @lex_state = trans[0]
-	else
-	  if @lex_state != EXPR_FNAME
-	    if ENINDENT_CLAUSE.include?(token)
-	      # check for ``class = val'' etc.
-	      valid = true
-	      case token
-	      when "class"
-		valid = false unless peek_match?(/^\s*(<<|\w|::)/)
-	      when "def"
-		valid = false if peek_match?(/^\s*(([+-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
-	      when "do"
-		valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&)/)
-	      when *ENINDENT_CLAUSE
-		valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&|\|)/)
-	      else
-		# no nothing
-	      end
-	      if valid
-		if token == "do"
-		  if ![TkFOR, TkWHILE, TkUNTIL].include?(@indent_stack.last)
-		    @indent += 1
-		    @indent_stack.push token_c
-		  end
-		else
-		  @indent += 1
-		  @indent_stack.push token_c
-		end
-#		p @indent_stack
-	      end
-
-	    elsif DEINDENT_CLAUSE.include?(token)
-	      @indent -= 1
-	      @indent_stack.pop
-	    end
-	    @lex_state = trans[0]
-	  else
-	    @lex_state = EXPR_END
-	  end
-	end
-	return Token(token_c, token)
-      end
-    end
-
-    if @lex_state == EXPR_FNAME
-      @lex_state = EXPR_END
-      if peek(0) == '='
-	token.concat getc
-      end
-    elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
-      @lex_state = EXPR_ARG
-    else
-      @lex_state = EXPR_END
-    end
-
-    if token[0, 1] =~ /[A-Z]/
-      return Token(TkCONSTANT, token)
-    elsif token[token.size - 1, 1] =~ /[!?]/
-      return Token(TkFID, token)
-    else
-      return Token(TkIDENTIFIER, token)
-    end
-  end
-
-  def identify_here_document
-    ch = getc
-#    if lt = PERCENT_LTYPE[ch]
-    if ch == "-"
-      ch = getc
-      indent = true
-    end
-    if /['"`]/ =~ ch
-      lt = ch
-      quoted = ""
-      while (c = getc) && c != lt
-	quoted.concat c
-      end
-    else
-      lt = '"'
-      quoted = ch.dup
-      while (c = getc) && c =~ /\w/
-	quoted.concat c
-      end
-      ungetc
-    end
-
-    ltback, @ltype = @ltype, lt
-    reserve = []
-    while ch = getc
-      reserve.push ch
-      if ch == "\\"
-	reserve.push ch = getc
-      elsif ch == "\n"
-	break
-      end
-    end
-
-    @here_header = false
-    while l = gets
-      l = l.sub(/(:?\r)?\n\z/, '')
-      if (indent ? l.strip : l) == quoted
- 	break
-      end
-    end
-
-    @here_header = true
-    @here_readed.concat reserve
-    while ch = reserve.pop
-      ungetc ch
-    end
-
-    @ltype = ltback
-    @lex_state = EXPR_END
-    Token(Ltype2Token[lt])
-  end
-  
-  def identify_quotation
-    ch = getc
-    if lt = PERCENT_LTYPE[ch]
-      ch = getc
-    elsif ch =~ /\W/
-      lt = "\""
-    else
-      RubyLex.fail SyntaxError, "unknown type of %string"
-    end
-#     if ch !~ /\W/
-#       ungetc
-#       next
-#     end
-    #@ltype = lt
-    @quoted = ch unless @quoted = PERCENT_PAREN[ch]
-    identify_string(lt, @quoted)
-  end
-
-  def identify_number
-    @lex_state = EXPR_END
-
-    if peek(0) == "0" && peek(1) !~ /[.eE]/
-      getc
-      case peek(0)
-      when /[xX]/
-	ch = getc
-	match = /[0-9a-fA-F_]/
-      when /[bB]/
-	ch = getc
-	match = /[01_]/
-      when /[oO]/
-	ch = getc
-	match = /[0-7_]/
-      when /[dD]/
-	ch = getc
-	match = /[0-9_]/
-      when /[0-7]/
-	match = /[0-7_]/
-      when /[89]/
-	RubyLex.fail SyntaxError, "Illegal octal digit"
-      else 
-	return Token(TkINTEGER)
-      end
-      
-      len0 = true
-      non_digit = false
-      while ch = getc
-	if match =~ ch
-	  if ch == "_"
-	    if non_digit
-	      RubyLex.fail SyntaxError, "trailing `#{ch}' in number"
-	    else
-	      non_digit = ch
-	    end
-	  else
-	    non_digit = false
-	    len0 = false
-	  end
-	else
-	  ungetc
-	  if len0
-	    RubyLex.fail SyntaxError, "numeric literal without digits"
-	  end
-	  if non_digit
-	    RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	  end
-	  break
-	end
-      end
-      return Token(TkINTEGER)
-    end
-    
-    type = TkINTEGER
-    allow_point = true
-    allow_e = true
-    non_digit = false
-    while ch = getc
-      case ch
-      when /[0-9]/
-	non_digit = false
-      when "_"
-	non_digit = ch
-      when allow_point && "."
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	type = TkFLOAT
-	if peek(0) !~ /[0-9]/
-	  type = TkINTEGER
-	  ungetc
-	  break
-	end
-	allow_point = false
-      when allow_e && "e", allow_e && "E"
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	type = TkFLOAT
-	if peek(0) =~ /[+-]/
-	  getc
-	end
-	allow_e = false
-	allow_point = false
-	non_digit = ch
-      else
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	ungetc
-	break
-      end
-    end
-    Token(type)
-  end
-  
-  def identify_string(ltype, quoted = ltype)
-    @ltype = ltype
-    @quoted = quoted
-    subtype = nil
-    begin
-      nest = 0
-      while ch = getc
-	if @quoted == ch and nest == 0
-	  break
-	elsif @ltype != "'" && @ltype != "]" && @ltype != ":" and ch == "#"
-	  subtype = true
-	elsif ch == '\\' #'
-	  read_escape
-	end
-	if PERCENT_PAREN.values.include?(@quoted) 
-	  if PERCENT_PAREN[ch] == @quoted
-	    nest += 1
-	  elsif ch == @quoted
-	    nest -= 1
-	  end
-	end
-      end
-      if @ltype == "/"
-	if peek(0) =~ /i|m|x|o|e|s|u|n/
-	  getc
-	end
-      end
-      if subtype
-	Token(DLtype2Token[ltype])
-      else
-	Token(Ltype2Token[ltype])
-      end
-    ensure
-      @ltype = nil
-      @quoted = nil
-      @lex_state = EXPR_END
-    end
-  end
-  
-  def identify_comment
-    @ltype = "#"
-
-    while ch = getc
-#      if ch == "\\" #"
-#	read_escape
-#      end
-      if ch == "\n"
-	@ltype = nil
-	ungetc
-	break
-      end
-    end
-    return Token(TkCOMMENT)
-  end
-  
-  def read_escape
-    case ch = getc
-    when "\n", "\r", "\f"
-    when "\\", "n", "t", "r", "f", "v", "a", "e", "b", "s" #"
-    when /[0-7]/
-      ungetc ch
-      3.times do
-	case ch = getc
-	when /[0-7]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-      end
-      
-    when "x"
-      2.times do
-	case ch = getc
-	when /[0-9a-fA-F]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-      end
-
-    when "M"
-      if (ch = getc) != '-'
-	ungetc
-      else
-	if (ch = getc) == "\\" #"
-	  read_escape
-	end
-      end
-
-    when "C", "c" #, "^"
-      if ch == "C" and (ch = getc) != "-"
-	ungetc
-      elsif (ch = getc) == "\\" #"
-	read_escape
-      end
-    else
-      # other characters 
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-token.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-token.rb
deleted file mode 100644
index 32308bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ruby-token.rb
+++ /dev/null
@@ -1,273 +0,0 @@
-#
-#   irb/ruby-token.rb - ruby tokens 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module RubyToken
-  EXPR_BEG = :EXPR_BEG
-  EXPR_MID = :EXPR_MID
-  EXPR_END = :EXPR_END
-  EXPR_ARG = :EXPR_ARG
-  EXPR_FNAME = :EXPR_FNAME
-  EXPR_DOT = :EXPR_DOT
-  EXPR_CLASS = :EXPR_CLASS
-
-  # for ruby 1.4X
-  if !defined?(Symbol)
-    Symbol = Integer
-  end
-  
-  class Token
-    def initialize(seek, line_no, char_no)
-      @seek = seek
-      @line_no = line_no
-      @char_no = char_no
-    end
-    attr :seek
-    attr :line_no
-    attr :char_no
-  end
-
-  class TkNode < Token
-    def initialize(seek, line_no, char_no)
-      super
-    end
-    attr :node
-  end
-
-  class TkId < Token
-    def initialize(seek, line_no, char_no, name)
-      super(seek, line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkVal < Token
-    def initialize(seek, line_no, char_no, value = nil)
-      super(seek, line_no, char_no)
-      @value = value
-    end
-    attr :value
-  end
-
-  class TkOp < Token
-    attr :name, true
-  end
-
-  class TkOPASGN < TkOp
-    def initialize(seek, line_no, char_no, op)
-      super(seek, line_no, char_no)
-      op = TkReading2Token[op][0] unless op.kind_of?(Symbol)
-      @op = op
-    end
-    attr :op
-  end
-
-  class TkUnknownChar < Token
-    def initialize(seek, line_no, char_no, id)
-      super(seek, line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkError < Token
-  end
-
-  def Token(token, value = nil)
-    case token
-    when String
-      if (tk = TkReading2Token[token]).nil?
-	IRB.fail TkReading2TokenNoKey, token
-      end
-      tk = Token(tk[0], value) 
-      if tk.kind_of?(TkOp)
-	tk.name = token
-      end
-      return tk
-    when Symbol
-      if (tk = TkSymbol2Token[token]).nil?
-	IRB.fail TkSymbol2TokenNoKey, token
-      end
-      return Token(tk[0], value) 
-    else 
-      if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
-	token.new(@prev_seek, @prev_line_no, @prev_char_no)
-      else
-	token.new(@prev_seek, @prev_line_no, @prev_char_no, value)
-      end
-    end
-  end
-
-  TokenDefinitions = [
-    [:TkCLASS,      TkId,  "class",  EXPR_CLASS],
-    [:TkMODULE,     TkId,  "module", EXPR_BEG],
-    [:TkDEF,	    TkId,  "def",    EXPR_FNAME],
-    [:TkUNDEF,      TkId,  "undef",  EXPR_FNAME],
-    [:TkBEGIN,      TkId,  "begin",  EXPR_BEG],
-    [:TkRESCUE,     TkId,  "rescue", EXPR_MID],
-    [:TkENSURE,     TkId,  "ensure", EXPR_BEG],
-    [:TkEND,	    TkId,  "end",    EXPR_END],
-    [:TkIF,         TkId,  "if",     EXPR_BEG, :TkIF_MOD],
-    [:TkUNLESS,     TkId,  "unless", EXPR_BEG, :TkUNLESS_MOD],
-    [:TkTHEN,	    TkId,  "then",   EXPR_BEG],
-    [:TkELSIF,      TkId,  "elsif",  EXPR_BEG],
-    [:TkELSE,	    TkId,  "else",   EXPR_BEG],
-    [:TkCASE,	    TkId,  "case",   EXPR_BEG],
-    [:TkWHEN,	    TkId,  "when",   EXPR_BEG],
-    [:TkWHILE,      TkId,  "while",  EXPR_BEG, :TkWHILE_MOD],
-    [:TkUNTIL,      TkId,  "until",  EXPR_BEG, :TkUNTIL_MOD],
-    [:TkFOR,	    TkId,  "for",    EXPR_BEG],
-    [:TkBREAK,      TkId,  "break",  EXPR_END],
-    [:TkNEXT,	    TkId,  "next",   EXPR_END],
-    [:TkREDO,	    TkId,  "redo",   EXPR_END],
-    [:TkRETRY,      TkId,  "retry",  EXPR_END],
-    [:TkIN,	    TkId,  "in",     EXPR_BEG],
-    [:TkDO,	    TkId,  "do",     EXPR_BEG],
-    [:TkRETURN,     TkId,  "return", EXPR_MID],
-    [:TkYIELD,      TkId,  "yield",  EXPR_END],
-    [:TkSUPER,      TkId,  "super",  EXPR_END],
-    [:TkSELF,	    TkId,  "self",   EXPR_END],
-    [:TkNIL, 	    TkId,  "nil",    EXPR_END],
-    [:TkTRUE,	    TkId,  "true",   EXPR_END],
-    [:TkFALSE,      TkId,  "false",  EXPR_END],
-    [:TkAND,	    TkId,  "and",    EXPR_BEG],
-    [:TkOR, 	    TkId,  "or",     EXPR_BEG],
-    [:TkNOT,	    TkId,  "not",    EXPR_BEG],
-    [:TkIF_MOD,     TkId],
-    [:TkUNLESS_MOD, TkId],
-    [:TkWHILE_MOD,  TkId],
-    [:TkUNTIL_MOD,  TkId],
-    [:TkALIAS,      TkId,  "alias",    EXPR_FNAME],
-    [:TkDEFINED,    TkId,  "defined?", EXPR_END],
-    [:TklBEGIN,     TkId,  "BEGIN",    EXPR_END],
-    [:TklEND,	    TkId,  "END",      EXPR_END],
-    [:Tk__LINE__,   TkId,  "__LINE__", EXPR_END],
-    [:Tk__FILE__,   TkId,  "__FILE__", EXPR_END],
-
-    [:TkIDENTIFIER, TkId],
-    [:TkFID,	    TkId],
-    [:TkGVAR,	    TkId],
-    [:TkCVAR,	    TkId],
-    [:TkIVAR,	    TkId],
-    [:TkCONSTANT,   TkId],
-
-    [:TkINTEGER,    TkVal],
-    [:TkFLOAT,      TkVal],
-    [:TkSTRING,     TkVal],
-    [:TkXSTRING,    TkVal],
-    [:TkREGEXP,     TkVal],
-    [:TkSYMBOL,     TkVal],
-
-    [:TkDSTRING,    TkNode],
-    [:TkDXSTRING,   TkNode],
-    [:TkDREGEXP,    TkNode],
-    [:TkNTH_REF,    TkNode],
-    [:TkBACK_REF,   TkNode],
-
-    [:TkUPLUS,      TkOp,   "+@"],
-    [:TkUMINUS,     TkOp,   "-@"],
-    [:TkPOW,	    TkOp,   "**"],
-    [:TkCMP,	    TkOp,   "<=>"],
-    [:TkEQ,	    TkOp,   "=="],
-    [:TkEQQ,	    TkOp,   "==="],
-    [:TkNEQ,	    TkOp,   "!="],
-    [:TkGEQ,	    TkOp,   ">="],
-    [:TkLEQ,	    TkOp,   "<="],
-    [:TkANDOP,      TkOp,   "&&"],
-    [:TkOROP,	    TkOp,   "||"],
-    [:TkMATCH,      TkOp,   "=~"],
-    [:TkNMATCH,     TkOp,   "!~"],
-    [:TkDOT2,	    TkOp,   ".."],
-    [:TkDOT3,	    TkOp,   "..."],
-    [:TkAREF,	    TkOp,   "[]"],
-    [:TkASET,	    TkOp,   "[]="],
-    [:TkLSHFT,      TkOp,   "<<"],
-    [:TkRSHFT,      TkOp,   ">>"],
-    [:TkCOLON2,     TkOp],
-    [:TkCOLON3,     TkOp],
-#   [:OPASGN,	    TkOp],               # +=, -=  etc. #
-    [:TkASSOC,      TkOp,   "=>"],
-    [:TkQUESTION,   TkOp,   "?"],	 #?
-    [:TkCOLON,      TkOp,   ":"],        #:
-    
-    [:TkfLPAREN],         # func( #
-    [:TkfLBRACK],         # func[ #
-    [:TkfLBRACE],         # func{ #
-    [:TkSTAR],            # *arg
-    [:TkAMPER],           # &arg #
-    [:TkSYMBEG],          # :SYMBOL
-
-    [:TkGT,	    TkOp,   ">"],
-    [:TkLT,	    TkOp,   "<"],
-    [:TkPLUS,	    TkOp,   "+"],
-    [:TkMINUS,      TkOp,   "-"],
-    [:TkMULT,	    TkOp,   "*"],
-    [:TkDIV,	    TkOp,   "/"],
-    [:TkMOD,	    TkOp,   "%"],
-    [:TkBITOR,      TkOp,   "|"],
-    [:TkBITXOR,     TkOp,   "^"],
-    [:TkBITAND,     TkOp,   "&"],
-    [:TkBITNOT,     TkOp,   "~"],
-    [:TkNOTOP,      TkOp,   "!"],
-
-    [:TkBACKQUOTE,  TkOp,   "`"],
-
-    [:TkASSIGN,     Token,  "="],
-    [:TkDOT,	    Token,  "."],
-    [:TkLPAREN,     Token,  "("],  #(exp)
-    [:TkLBRACK,     Token,  "["],  #[arry]
-    [:TkLBRACE,     Token,  "{"],  #{hash}
-    [:TkRPAREN,     Token,  ")"],
-    [:TkRBRACK,     Token,  "]"],
-    [:TkRBRACE,     Token,  "}"],
-    [:TkCOMMA,      Token,  ","],
-    [:TkSEMICOLON,  Token,  ";"],
-
-    [:TkCOMMENT],
-    [:TkRD_COMMENT],
-    [:TkSPACE],
-    [:TkNL],
-    [:TkEND_OF_SCRIPT],
-
-    [:TkBACKSLASH,  TkUnknownChar,  "\\"],
-    [:TkAT,	    TkUnknownChar,  "@"],
-    [:TkDOLLAR,     TkUnknownChar,  "$"],
-  ]
-
-  # {reading => token_class}
-  # {reading => [token_class, *opt]}
-  TkReading2Token = {}
-  TkSymbol2Token = {}
-
-  def RubyToken.def_token(token_n, super_token = Token, reading = nil, *opts)
-    token_n = token_n.id2name if token_n.kind_of?(Symbol)
-    if RubyToken.const_defined?(token_n)
-      IRB.fail AlreadyDefinedToken, token_n
-    end
-    token_c = eval("class #{token_n} < #{super_token}; end; #{token_n}")
-    
-    if reading
-      if TkReading2Token[reading]
-	IRB.fail TkReading2TokenDuplicateError, token_n, reading
-      end
-      if opts.empty?
-	TkReading2Token[reading] = [token_c]
-      else
-	TkReading2Token[reading] = [token_c].concat(opts)
-      end
-    end
-    TkSymbol2Token[token_n.intern] = token_c
-  end
-
-  for defs in TokenDefinitions
-    def_token(*defs)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/slex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/slex.rb
deleted file mode 100644
index 0b8eb24..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/slex.rb
+++ /dev/null
@@ -1,285 +0,0 @@
-#
-#   irb/slex.rb - symple lex analizer
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/notifier"
-
-module IRB
-  class SLex
-    @RCS_ID='-$Id: slex.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    extend Exception2MessageMapper
-    def_exception :ErrNodeNothing, "node nothing"
-    def_exception :ErrNodeAlreadyExists, "node already exists"
-
-    DOUT = Notifier::def_notifier("SLex::")
-    D_WARN = DOUT::def_notifier(1, "Warn: ")
-    D_DEBUG = DOUT::def_notifier(2, "Debug: ")
-    D_DETAIL = DOUT::def_notifier(4, "Detail: ")
-    
-    DOUT.level = Notifier::D_NOMSG
-
-    def initialize
-      @head = Node.new("")
-    end
-    
-    def def_rule(token, preproc = nil, postproc = nil, &block)
-      D_DETAIL.pp token
-
-      postproc = block if block_given?
-      node = create(token, preproc, postproc)
-    end
-    
-    def def_rules(*tokens, &block)
-      if block_given?
-	p = block
-      end
-      for token in tokens
-	def_rule(token, nil, p)
-      end
-    end
-    
-    def preproc(token, proc)
-      node = search(token)
-      node.preproc=proc
-    end
-    
-    #$BMW%A%'%C%/(B? 
-    def postproc(token)
-      node = search(token, proc)
-      node.postproc=proc
-    end
-    
-    def search(token)
-      @head.search(token.split(//))
-    end
-
-    def create(token, preproc = nil, postproc = nil)
-      @head.create_subnode(token.split(//), preproc, postproc)
-    end
-    
-    def match(token)
-      case token
-      when Array
-      when String
-	return match(token.split(//))
-      else
-	return @head.match_io(token)
-      end
-      ret = @head.match(token)
-      D_DETAIL.exec_if{D_DEATIL.printf "match end: %s:%s\n", ret, token.inspect}
-      ret
-    end
-    
-    def inspect
-      format("<SLex: @head = %s>", @head.inspect)
-    end
-
-    #----------------------------------------------------------------------
-    #
-    #   class Node - 
-    #
-    #----------------------------------------------------------------------
-    class Node
-      # if postproc is nil, this node is an abstract node.
-      # if postproc is non-nil, this node is a real node.
-      def initialize(preproc = nil, postproc = nil)
-	@Tree = {}
-	@preproc = preproc
-	@postproc = postproc
-      end
-
-      attr_accessor :preproc
-      attr_accessor :postproc
-      
-      def search(chrs, opt = nil)
-	return self if chrs.empty?
-	ch = chrs.shift
-	if node = @Tree[ch]
-	  node.search(chrs, opt)
-	else
-	  if opt
-	    chrs.unshift ch
-	    self.create_subnode(chrs)
-	  else
-	    SLex.fail ErrNodeNothing
-	  end
-	end
-      end
-      
-      def create_subnode(chrs, preproc = nil, postproc = nil)
-	if chrs.empty?
-	  if @postproc
-	    D_DETAIL.pp node
-	    SLex.fail ErrNodeAlreadyExists
-	  else
-	    D_DEBUG.puts "change abstract node to real node."
-	    @preproc = preproc
-	    @postproc = postproc
-	  end
-	  return self
-	end
-	
-	ch = chrs.shift
-	if node = @Tree[ch]
-	  if chrs.empty?
-	    if node.postproc
-	      DebugLogger.pp node
-	      DebugLogger.pp self
-	      DebugLogger.pp ch
-	      DebugLogger.pp chrs
-	      SLex.fail ErrNodeAlreadyExists
-	    else
-	      D_WARN.puts "change abstract node to real node"
-	      node.preproc = preproc
-	      node.postproc = postproc
-	    end
-	  else
-	    node.create_subnode(chrs, preproc, postproc)
-	  end
-	else
-	  if chrs.empty?
-	    node = Node.new(preproc, postproc)
-	  else
-	    node = Node.new
-	    node.create_subnode(chrs, preproc, postproc)
-	  end
-	  @Tree[ch] = node
-	end
-	node
-      end
-
-      #
-      # chrs: String
-      #       character array
-      #       io must have getc()/ungetc(); and ungetc() must be
-      #       able to be called arbitrary number of times. 
-      #
-      def match(chrs, op = "")
-	D_DETAIL.print "match>: ", chrs, "op:", op, "\n"
-	if chrs.empty?
-	  if @preproc.nil? || @preproc.call(op, chrs)
-	    DOUT.printf(D_DETAIL, "op1: %s\n", op)
-	    @postproc.call(op, chrs)
-	  else
-	    nil
-	  end
-	else
-	  ch = chrs.shift
-	  if node = @Tree[ch]
-	    if ret = node.match(chrs, op+ch)
-	      return ret
-	    else
-	      chrs.unshift ch
-	      if @postproc and @preproc.nil? || @preproc.call(op, chrs)
-		DOUT.printf(D_DETAIL, "op2: %s\n", op.inspect)
-		ret = @postproc.call(op, chrs)
-		return ret
-	      else
-		return nil
-	      end
-	    end
-	  else
-	    chrs.unshift ch
-	    if @postproc and @preproc.nil? || @preproc.call(op, chrs)
-	      DOUT.printf(D_DETAIL, "op3: %s\n", op)
-	      @postproc.call(op, chrs)
-	      return ""
-	    else
-	      return nil
-	    end
-	  end
-	end
-      end
-
-      def match_io(io, op = "")
-	if op == ""
-	  ch = io.getc
-	  if ch == nil
-	    return nil
-	  end
-	else
-	  ch = io.getc_of_rests
-	end
-	if ch.nil?
-	  if @preproc.nil? || @preproc.call(op, io)
-	    D_DETAIL.printf("op1: %s\n", op)
-	    @postproc.call(op, io)
-	  else
-	    nil
-	  end
-	else
-	  if node = @Tree[ch]
-	    if ret = node.match_io(io, op+ch)
-	      ret
-	    else
-	      io.ungetc ch
-	      if @postproc and @preproc.nil? || @preproc.call(op, io)
-		DOUT.exec_if{D_DETAIL.printf "op2: %s\n", op.inspect}
-		@postproc.call(op, io)
-	      else
-		nil
-	      end
-	    end
-	  else
-	    io.ungetc ch
-	    if @postproc and @preproc.nil? || @preproc.call(op, io)
-	      D_DETAIL.printf("op3: %s\n", op)
-	      @postproc.call(op, io)
-	    else
-	      nil
-	    end
-	  end
-	end
-      end
-    end
-  end
-end
-
-SLex=IRB::SLex
-
-if $0 == __FILE__
-  #    Tracer.on
-  case $1
-  when "1"
-    tr = SLex.new
-    print "0: ", tr.inspect, "\n"
-    tr.def_rule("=") {print "=\n"}
-    print "1: ", tr.inspect, "\n"
-    tr.def_rule("==") {print "==\n"}
-    print "2: ", tr.inspect, "\n"
-    
-    print "case 1:\n"
-    print tr.match("="), "\n"
-    print "case 2:\n"
-    print tr.match("=="), "\n"
-    print "case 3:\n"
-    print tr.match("=>"), "\n"
-    
-  when "2"
-    tr = SLex.new
-    print "0: ", tr.inspect, "\n"
-    tr.def_rule("=") {print "=\n"}
-    print "1: ", tr.inspect, "\n"
-    tr.def_rule("==", proc{false}) {print "==\n"}
-    print "2: ", tr.inspect, "\n"
-    
-    print "case 1:\n"
-    print tr.match("="), "\n"
-    print "case 2:\n"
-    print tr.match("=="), "\n"
-    print "case 3:\n"
-    print tr.match("=>"), "\n"
-  end
-  exit
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/version.rb
deleted file mode 100644
index dc3646e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/version.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#   irb/version.rb - irb version definition file
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#
-#   
-#
-
-module IRB
-  @RELEASE_VERSION = "0.9.5"
-  @LAST_UPDATE_DATE = "05/04/13"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/workspace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/workspace.rb
deleted file mode 100644
index d1a3a3e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/workspace.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#   irb/workspace-binding.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  class WorkSpace
-    # create new workspace. set self to main if specified, otherwise
-    # inherit main from TOPLEVEL_BINDING.
-    def initialize(*main)
-      if main[0].kind_of?(Binding)
-	@binding = main.shift
-      elsif IRB.conf[:SINGLE_IRB]
-	@binding = TOPLEVEL_BINDING
-      else
-	case IRB.conf[:CONTEXT_MODE]
-	when 0	# binding in proc on TOPLEVEL_BINDING
-	  @binding = eval("proc{binding}.call",
-		      TOPLEVEL_BINDING, 
-		      __FILE__,
-		      __LINE__)
-	when 1	# binding in loaded file
-	  require "tempfile"
-	  f = Tempfile.open("irb-binding")
-	  f.print <<EOF
-	  $binding = binding
-EOF
-	  f.close
-	  load f.path
-	  @binding = $binding
-
-	when 2	# binding in loaded file(thread use)
-	  unless defined? BINDING_QUEUE
-	    require "thread"
-	    
-	    IRB.const_set("BINDING_QUEUE", SizedQueue.new(1))
-	    Thread.abort_on_exception = true
-	    Thread.start do
-	      eval "require \"irb/ws-for-case-2\"", TOPLEVEL_BINDING, __FILE__, __LINE__
-	    end
-	    Thread.pass
-	  end
-	  @binding = BINDING_QUEUE.pop
-
-	when 3	# binging in function on TOPLEVEL_BINDING(default)
-	  @binding = eval("def irb_binding; binding; end; irb_binding",
-		      TOPLEVEL_BINDING, 
-		      __FILE__,
-		      __LINE__ - 3)
-	end
-      end
-      if main.empty?
-	@main = eval("self", @binding)
-      else
-	@main = main[0]
-	IRB.conf[:__MAIN__] = @main
-	case @main
-	when Module
-	  @binding = eval("IRB.conf[:__MAIN__].module_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
-	else
-	  begin 
-	    @binding = eval("IRB.conf[:__MAIN__].instance_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
-	  rescue TypeError
-	    IRB.fail CantChangeBinding, @main.inspect
-	  end
-	end
-      end
-      eval("_=nil", @binding)
-    end
-
-    attr_reader :binding
-    attr_reader :main
-
-    def evaluate(context, statements, file = __FILE__, line = __LINE__)
-      eval(statements, @binding, file, line)
-    end
-  
-    # error message manipulator
-    def filter_backtrace(bt)
-      case IRB.conf[:CONTEXT_MODE]
-      when 0
-	return nil if bt =~ /\(irb_local_binding\)/
-      when 1
-	if(bt =~ %r!/tmp/irb-binding! or
-	   bt =~ %r!irb/.*\.rb! or
-	   bt =~ /irb\.rb/)
-	  return nil
-	end
-      when 2
-	return nil if bt =~ /irb\/.*\.rb/
-      when 3
-	return nil if bt =~ /irb\/.*\.rb/
-	bt.sub!(/:\s*in `irb_binding'/){""} 
-      end
-      bt
-    end
-
-    def IRB.delete_caller
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ws-for-case-2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ws-for-case-2.rb
deleted file mode 100644
index 8d6af6c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/ws-for-case-2.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-#   irb/ws-for-case-2.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-while true
-  IRB::BINDING_QUEUE.push b = binding
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/xmp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/xmp.rb
deleted file mode 100644
index 879503d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/irb/xmp.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-#   xmp.rb - irb version of gotoken xmp
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "irb"
-require "irb/frame"
-
-class XMP
-  @RCS_ID='-$Id: xmp.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-  def initialize(bind = nil)
-    IRB.init_config(nil)
-    #IRB.parse_opts
-    #IRB.load_modules
-
-    IRB.conf[:PROMPT_MODE] = :XMP
-
-    bind = IRB::Frame.top(1) unless bind
-    ws = IRB::WorkSpace.new(bind)
-    @io = StringInputMethod.new
-    @irb = IRB::Irb.new(ws, @io)
-    @irb.context.ignore_sigint = false
-
-#    IRB.conf[:IRB_RC].call(@irb.context) if IRB.conf[:IRB_RC]
-    IRB.conf[:MAIN_CONTEXT] = @irb.context
-  end
-
-  def puts(exps)
-    @io.puts exps
-
-    if @irb.context.ignore_sigint
-      begin
-	trap_proc_b = trap("SIGINT"){@irb.signal_handle}
-	catch(:IRB_EXIT) do
-	  @irb.eval_input
-	end
-      ensure
-	trap("SIGINT", trap_proc_b)
-      end
-    else
-      catch(:IRB_EXIT) do
-	@irb.eval_input
-      end
-    end
-  end
-
-  class StringInputMethod < IRB::InputMethod
-    def initialize
-      super
-      @exps = []
-    end
-
-    def eof?
-      @exps.empty?
-    end
-
-    def gets
-      while l = @exps.shift
-	next if /^\s+$/ =~ l
-	l.concat "\n"
-	print @prompt, l
-	break
-      end
-      l
-    end
-
-    def puts(exps)
-      @exps.concat exps.split(/\n/)
-    end
-  end
-end
-
-def xmp(exps, bind = nil)
-  bind = IRB::Frame.top(1) unless bind
-  xmp = XMP.new(bind)
-  xmp.puts exps
-  xmp
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/jcode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/jcode.rb
deleted file mode 100644
index 78422f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/jcode.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-# jcode.rb - ruby code to handle japanese (EUC/SJIS) string
-
-if $VERBOSE && $KCODE == "NONE"
-  warn "Warning: $KCODE is NONE."
-end
-
-$vsave, $VERBOSE = $VERBOSE, false
-class String
-  warn "feel free for some warnings:\n" if $VERBOSE
-
-  def _regex_quote(str)
-    str.gsub(/(\\[\[\]\-\\])|\\(.)|([\[\]\\])/) do
-      $1 || $2 || '\\' + $3
-    end
-  end
-  private :_regex_quote
-
-  PATTERN_SJIS = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'
-  PATTERN_EUC = '[\xa1-\xfe][\xa1-\xfe]'
-  PATTERN_UTF8 = '[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf]'
-
-  RE_SJIS = Regexp.new(PATTERN_SJIS, 0, 'n')
-  RE_EUC = Regexp.new(PATTERN_EUC, 0, 'n')
-  RE_UTF8 = Regexp.new(PATTERN_UTF8, 0, 'n')
-
-  SUCC = {}
-  SUCC['s'] = Hash.new(1)
-  for i in 0 .. 0x3f
-    SUCC['s'][i.chr] = 0x40 - i
-  end
-  SUCC['s']["\x7e"] = 0x80 - 0x7e
-  SUCC['s']["\xfd"] = 0x100 - 0xfd
-  SUCC['s']["\xfe"] = 0x100 - 0xfe
-  SUCC['s']["\xff"] = 0x100 - 0xff
-  SUCC['e'] = Hash.new(1)
-  for i in 0 .. 0xa0
-    SUCC['e'][i.chr] = 0xa1 - i
-  end
-  SUCC['e']["\xfe"] = 2
-  SUCC['u'] = Hash.new(1)
-  for i in 0 .. 0x7f
-    SUCC['u'][i.chr] = 0x80 - i
-  end
-  SUCC['u']["\xbf"] = 0x100 - 0xbf
-
-  def mbchar?
-    case $KCODE[0]
-    when ?s, ?S
-      self =~ RE_SJIS
-    when ?e, ?E
-      self =~ RE_EUC
-    when ?u, ?U
-      self =~ RE_UTF8
-    else
-      nil
-    end
-  end
-
-  def end_regexp
-    case $KCODE[0]
-    when ?s, ?S
-      /#{PATTERN_SJIS}$/on
-    when ?e, ?E
-      /#{PATTERN_EUC}$/on
-    when ?u, ?U
-      /#{PATTERN_UTF8}$/on
-    else
-      /.$/on
-    end
-  end
-
-  alias original_succ! succ!
-  private :original_succ!
-
-  alias original_succ succ
-  private :original_succ
-
-  def succ!
-    reg = end_regexp
-    if  $KCODE != 'NONE' && self =~ reg
-      succ_table = SUCC[$KCODE[0,1].downcase]
-      begin
-	self[-1] += succ_table[self[-1]]
-	self[-2] += 1 if self[-1] == 0
-      end while self !~ reg
-      self
-    else
-      original_succ!
-    end
-  end
-
-  def succ
-    str = self.dup
-    str.succ! or str
-  end
-
-  private
-
-  def _expand_ch str
-    a = []
-    str.scan(/(?:\\(.)|([^\\]))-(?:\\(.)|([^\\]))|(?:\\(.)|(.))/m) do
-      from = $1 || $2
-      to = $3 || $4
-      one = $5 || $6
-      if one
-	a.push one
-      elsif from.length != to.length
-	next
-      elsif from.length == 1
-	from[0].upto(to[0]) { |c| a.push c.chr }
-      else
-	from.upto(to) { |c| a.push c }
-      end
-    end
-    a
-  end
-
-  def expand_ch_hash from, to
-    h = {}
-    afrom = _expand_ch(from)
-    ato = _expand_ch(to)
-    afrom.each_with_index do |x,i| h[x] = ato[i] || ato[-1] end
-    h
-  end
-
-  HashCache = {}
-  TrPatternCache = {}
-  DeletePatternCache = {}
-  SqueezePatternCache = {}
-
-  public
-
-  def tr!(from, to)
-    return nil if from == ""
-    return self.delete!(from) if to == ""
-
-    pattern = TrPatternCache[from] ||= /[#{_regex_quote(from)}]/
-    if from[0] == ?^
-      last = /.$/.match(to)[0]
-      self.gsub!(pattern, last)
-    else
-      h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
-      self.gsub!(pattern) do |c| h[c] end
-    end
-  end
-
-  def tr(from, to)
-    (str = self.dup).tr!(from, to) or str
-  end
-
-  def delete!(del)
-    return nil if del == ""
-    self.gsub!(DeletePatternCache[del] ||= /[#{_regex_quote(del)}]+/, '')
-  end
-
-  def delete(del)
-    (str = self.dup).delete!(del) or str
-  end
-
-  def squeeze!(del=nil)
-    return nil if del == ""
-    pattern =
-      if del
-	SqueezePatternCache[del] ||= /([#{_regex_quote(del)}])\1+/
-      else
-	/(.|\n)\1+/
-      end
-    self.gsub!(pattern, '\1')
-  end
-
-  def squeeze(del=nil)
-    (str = self.dup).squeeze!(del) or str
-  end
-
-  def tr_s!(from, to)
-    return self.delete!(from) if to.length == 0
-
-    pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1*/
-    if from[0] == ?^
-      last = /.$/.match(to)[0]
-      self.gsub!(pattern, last)
-    else
-      h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
-      self.gsub!(pattern) do h[$1] end
-    end
-  end
-
-  def tr_s(from, to)
-    (str = self.dup).tr_s!(from,to) or str
-  end
-
-  def chop!
-    self.gsub!(/(?:.|\r?\n)\z/, '')
-  end
-
-  def chop
-    (str = self.dup).chop! or str
-  end
-
-  def jlength
-    self.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
-  end
-  alias jsize jlength
-
-  def jcount(str)
-    self.delete("^#{str}").jlength
-  end
-
-  def each_char
-    if block_given?
-      scan(/./m) do |x|
-        yield x
-      end
-    else
-      scan(/./m)
-    end
-  end
-
-end
-$VERBOSE = $vsave
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/kconv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/kconv.rb
deleted file mode 100644
index 168f9ca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/kconv.rb
+++ /dev/null
@@ -1,367 +0,0 @@
-#
-# kconv.rb - Kanji Converter.
-#
-# $Id: kconv.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# ----
-#
-# kconv.rb implements the Kconv class for Kanji Converter.  Additionally,
-# some methods in String classes are added to allow easy conversion.
-#
-
-require 'nkf'
-
-#
-# Kanji Converter for Ruby.
-#
-module Kconv
-  #
-  # Public Constants
-  #
-  
-  #Constant of Encoding
-  
-  # Auto-Detect
-  AUTO = NKF::AUTO
-  # ISO-2022-JP
-  JIS = NKF::JIS
-  # EUC-JP
-  EUC = NKF::EUC
-  # Shift_JIS
-  SJIS = NKF::SJIS
-  # BINARY
-  BINARY = NKF::BINARY
-  # NOCONV
-  NOCONV = NKF::NOCONV
-  # ASCII
-  ASCII = NKF::ASCII
-  # UTF-8
-  UTF8 = NKF::UTF8
-  # UTF-16
-  UTF16 = NKF::UTF16
-  # UTF-32
-  UTF32 = NKF::UTF32
-  # UNKNOWN
-  UNKNOWN = NKF::UNKNOWN
-
-  #
-  # Private Constants
-  #
-  
-  # Revision of kconv.rb
-  REVISION = %q$Revision: 11708 $
-  
-  #Regexp of Encoding
-  
-  # Regexp of Shift_JIS string (private constant)
-  RegexpShiftjis = /\A(?:
-		       [\x00-\x7f\xa1-\xdf] |
-		       [\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc] 
-		      )*\z/nx
-
-  # Regexp of EUC-JP string (private constant)
-  RegexpEucjp = /\A(?:
-		    [\x00-\x7f]                         |
-		    \x8e        [\xa1-\xdf]             |
-		    \x8f        [\xa1-\xfe] [\xa1-\xfe] |
-		    [\xa1-\xfe] [\xa1-\xfe]
-		   )*\z/nx
-
-  # Regexp of UTF-8 string (private constant)
-  RegexpUtf8  = /\A(?:
-		    [\x00-\x7f]                                     |
-		    [\xc2-\xdf] [\x80-\xbf]                         |
-		    \xe0        [\xa0-\xbf] [\x80-\xbf]             |
-		    [\xe1-\xef] [\x80-\xbf] [\x80-\xbf]             |
-		    \xf0        [\x90-\xbf] [\x80-\xbf] [\x80-\xbf] |
-		    [\xf1-\xf3] [\x80-\xbf] [\x80-\xbf] [\x80-\xbf] |
-		    \xf4        [\x80-\x8f] [\x80-\xbf] [\x80-\xbf]
-		   )*\z/nx
-
-  #
-  # Public Methods
-  #
-  
-  # call-seq:
-  #    Kconv.kconv(str, out_code, in_code = Kconv::AUTO)
-  #
-  # Convert <code>str</code> to out_code.
-  # <code>out_code</code> and <code>in_code</code> are given as constants of Kconv.
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want to decode them, use NKF.nkf.
-  def kconv(str, out_code, in_code = AUTO)
-    opt = '-'
-    case in_code
-    when ::NKF::JIS
-      opt << 'J'
-    when ::NKF::EUC
-      opt << 'E'
-    when ::NKF::SJIS
-      opt << 'S'
-    when ::NKF::UTF8
-      opt << 'W'
-    when ::NKF::UTF16
-      opt << 'W16'
-    end
-
-    case out_code
-    when ::NKF::JIS
-      opt << 'j'
-    when ::NKF::EUC
-      opt << 'e'
-    when ::NKF::SJIS
-      opt << 's'
-    when ::NKF::UTF8
-      opt << 'w'
-    when ::NKF::UTF16
-      opt << 'w16'
-    when ::NKF::NOCONV
-      return str
-    end
-
-    opt = '' if opt == '-'
-
-    ::NKF::nkf(opt, str)
-  end
-  module_function :kconv
-
-  #
-  # Encode to
-  #
-
-  # call-seq:
-  #    Kconv.tojis(str)   -> string
-  #
-  # Convert <code>str</code> to ISO-2022-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-jxm0', str).
-  def tojis(str)
-    ::NKF::nkf('-jm', str)
-  end
-  module_function :tojis
-
-  # call-seq:
-  #    Kconv.toeuc(str)   -> string
-  #
-  # Convert <code>str</code> to EUC-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-exm0', str).
-  def toeuc(str)
-    ::NKF::nkf('-em', str)
-  end
-  module_function :toeuc
-
-  # call-seq:
-  #    Kconv.tosjis(str)   -> string
-  #
-  # Convert <code>str</code> to Shift_JIS
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-sxm0', str).
-  def tosjis(str)
-    ::NKF::nkf('-sm', str)
-  end
-  module_function :tosjis
-
-  # call-seq:
-  #    Kconv.toutf8(str)   -> string
-  #
-  # Convert <code>str</code> to UTF-8
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-wxm0', str).
-  def toutf8(str)
-    ::NKF::nkf('-wm', str)
-  end
-  module_function :toutf8
-
-  # call-seq:
-  #    Kconv.toutf16(str)   -> string
-  #
-  # Convert <code>str</code> to UTF-16
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-w16xm0', str).
-  def toutf16(str)
-    ::NKF::nkf('-w16m', str)
-  end
-  module_function :toutf16
-
-  #
-  # guess
-  #
-
-  # call-seq:
-  #    Kconv.guess(str)   -> integer
-  #
-  # Guess input encoding by NKF.guess2
-  def guess(str)
-    ::NKF::guess(str)
-  end
-  module_function :guess
-
-  # call-seq:
-  #    Kconv.guess_old(str)   -> integer
-  #
-  # Guess input encoding by NKF.guess1
-  def guess_old(str)
-    ::NKF::guess1(str)
-  end
-  module_function :guess_old
-
-  #
-  # isEncoding
-  #
-
-  # call-seq:
-  #    Kconv.iseuc(str)   -> obj or nil
-  #
-  # Returns whether input encoding is EUC-JP or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def iseuc(str)
-    RegexpEucjp.match( str )
-  end
-  module_function :iseuc
-
-  # call-seq:
-  #    Kconv.issjis(str)   -> obj or nil
-  #
-  # Returns whether input encoding is Shift_JIS or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def issjis(str)
-    RegexpShiftjis.match( str )
-  end
-  module_function :issjis
-
-  # call-seq:
-  #    Kconv.isutf8(str)   -> obj or nil
-  #
-  # Returns whether input encoding is UTF-8 or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def isutf8(str)
-    RegexpUtf8.match( str )
-  end
-  module_function :isutf8
-
-end
-
-class String
-  # call-seq:
-  #    String#kconv(out_code, in_code = Kconv::AUTO)
-  #
-  # Convert <code>self</code> to out_code.
-  # <code>out_code</code> and <code>in_code</code> are given as constants of Kconv.
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want to decode them, use NKF.nkf.
-  def kconv(out_code, in_code=Kconv::AUTO)
-    Kconv::kconv(self, out_code, in_code)
-  end
-  
-  #
-  # to Encoding
-  #
-  
-  # call-seq:
-  #    String#tojis   -> string
-  #
-  # Convert <code>self</code> to ISO-2022-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-jxm0', str).
-  def tojis; Kconv.tojis(self) end
-
-  # call-seq:
-  #    String#toeuc   -> string
-  #
-  # Convert <code>self</code> to EUC-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-exm0', str).
-  def toeuc; Kconv.toeuc(self) end
-
-  # call-seq:
-  #    String#tosjis   -> string
-  #
-  # Convert <code>self</code> to Shift_JIS
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-sxm0', str).
-  def tosjis; Kconv.tosjis(self) end
-
-  # call-seq:
-  #    String#toutf8   -> string
-  #
-  # Convert <code>self</code> to UTF-8
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-wxm0', str).
-  def toutf8; Kconv.toutf8(self) end
-
-  # call-seq:
-  #    String#toutf16   -> string
-  #
-  # Convert <code>self</code> to UTF-16
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-w16xm0', str).
-  def toutf16; Kconv.toutf16(self) end
-
-  #
-  # is Encoding
-  #
-
-  # call-seq:
-  #    String#iseuc   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is EUC-JP or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def iseuc;	Kconv.iseuc(self) end
-
-  # call-seq:
-  #    String#issjis   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is Shift_JIS or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def issjis;	Kconv.issjis(self) end
-
-  # call-seq:
-  #    String#isutf8   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is UTF-8 or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def isutf8;	Kconv.isutf8(self) end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/logger.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/logger.rb
deleted file mode 100644
index 6fdd6c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/logger.rb
+++ /dev/null
@@ -1,703 +0,0 @@
-# logger.rb - saimple logging utility
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nakahiro at sarion.co.jp>.
-
-require 'monitor'
-
-# Simple logging utility.
-#
-# Author:: NAKAMURA, Hiroshi  <nakahiro at sarion.co.jp>
-# Documentation:: NAKAMURA, Hiroshi and Gavin Sinclair
-# License::
-#   You can redistribute it and/or modify it under the same terms of Ruby's
-#   license; either the dual license version in 2003, or any later version.
-# Revision:: $Id: logger.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# == Description
-#
-# The Logger class provides a simple but sophisticated logging utility that
-# anyone can use because it's included in the Ruby 1.8.x standard library.
-#
-# The HOWTOs below give a code-based overview of Logger's usage, but the basic
-# concept is as follows.  You create a Logger object (output to a file or
-# elsewhere), and use it to log messages.  The messages will have varying
-# levels (+info+, +error+, etc), reflecting their varying importance.  The
-# levels, and their meanings, are:
-#
-# +FATAL+:: an unhandleable error that results in a program crash
-# +ERROR+:: a handleable error condition
-# +WARN+::  a warning
-# +INFO+::  generic (useful) information about system operation
-# +DEBUG+:: low-level information for developers
-#
-# So each message has a level, and the Logger itself has a level, which acts
-# as a filter, so you can control the amount of information emitted from the
-# logger without having to remove actual messages.
-#
-# For instance, in a production system, you may have your logger(s) set to
-# +INFO+ (or +WARN+ if you don't want the log files growing large with
-# repetitive information).  When you are developing it, though, you probably
-# want to know about the program's internal state, and would set them to
-# +DEBUG+.
-#
-# === Example
-#
-# A simple example demonstrates the above explanation:
-#
-#   log = Logger.new(STDOUT)
-#   log.level = Logger::WARN
-#
-#   log.debug("Created logger")
-#   log.info("Program started")
-#   log.warn("Nothing to do!")
-#
-#   begin
-#     File.each_line(path) do |line|
-#       unless line =~ /^(\w+) = (.*)$/
-#         log.error("Line in wrong format: #{line}")
-#       end
-#     end
-#   rescue => err
-#     log.fatal("Caught exception; exiting")
-#     log.fatal(err)
-#   end
-#
-# Because the Logger's level is set to +WARN+, only the warning, error, and
-# fatal messages are recorded.  The debug and info messages are silently
-# discarded.
-#
-# === Features
-#
-# There are several interesting features that Logger provides, like
-# auto-rolling of log files, setting the format of log messages, and
-# specifying a program name in conjunction with the message.  The next section
-# shows you how to achieve these things.
-#
-#
-# == HOWTOs
-#
-# === How to create a logger
-#
-# The options below give you various choices, in more or less increasing
-# complexity.
-#
-# 1. Create a logger which logs messages to STDERR/STDOUT.
-#
-#      logger = Logger.new(STDERR)
-#      logger = Logger.new(STDOUT)
-#
-# 2. Create a logger for the file which has the specified name.
-#
-#      logger = Logger.new('logfile.log')
-#
-# 3. Create a logger for the specified file.
-#
-#      file = File.open('foo.log', File::WRONLY | File::APPEND)
-#      # To create new (and to remove old) logfile, add File::CREAT like;
-#      #   file = open('foo.log', File::WRONLY | File::APPEND | File::CREAT)
-#      logger = Logger.new(file)
-#
-# 4. Create a logger which ages logfile once it reaches a certain size.  Leave
-#    10 "old log files" and each file is about 1,024,000 bytes.
-#
-#      logger = Logger.new('foo.log', 10, 1024000)
-#
-# 5. Create a logger which ages logfile daily/weekly/monthly.
-#
-#      logger = Logger.new('foo.log', 'daily')
-#      logger = Logger.new('foo.log', 'weekly')
-#      logger = Logger.new('foo.log', 'monthly')
-#
-# === How to log a message
-#
-# Notice the different methods (+fatal+, +error+, +info+) being used to log
-# messages of various levels.  Other methods in this family are +warn+ and
-# +debug+.  +add+ is used below to log a message of an arbitrary (perhaps
-# dynamic) level.
-#
-# 1. Message in block.
-#
-#      logger.fatal { "Argument 'foo' not given." }
-#
-# 2. Message as a string.
-#
-#      logger.error "Argument #{ @foo } mismatch."
-#
-# 3. With progname.
-#
-#      logger.info('initialize') { "Initializing..." }
-#
-# 4. With severity.
-#
-#      logger.add(Logger::FATAL) { 'Fatal error!' }
-#
-# === How to close a logger
-#
-#      logger.close
-#
-# === Setting severity threshold
-#
-# 1. Original interface.
-#
-#      logger.sev_threshold = Logger::WARN
-#
-# 2. Log4r (somewhat) compatible interface.
-#
-#      logger.level = Logger::INFO
-#      
-#      DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
-#
-#
-# == Format
-#
-# Log messages are rendered in the output stream in a certain format.  The
-# default format and a sample are shown below:
-#
-# Log format:
-#   SeverityID, [Date Time mSec #pid] SeverityLabel -- ProgName: message
-#
-# Log sample:
-#   I, [Wed Mar 03 02:34:24 JST 1999 895701 #19074]  INFO -- Main: info.
-#
-# You may change the date and time format in this manner:
-#
-#   logger.datetime_format = "%Y-%m-%d %H:%M:%S"
-#         # e.g. "2004-01-03 00:54:26"
-#
-# There is currently no supported way to change the overall format, but you may
-# have some luck hacking the Format constant.
-#
-
-
-class Logger
-  VERSION = "1.2.6"
-  /: (\S+),v (\S+)/ =~ %q$Id: logger.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  ProgName = "#{$1}/#{$2}"
-
-  class Error < RuntimeError; end
-  class ShiftingError < Error; end
-
-  # Logging severity.
-  module Severity
-    DEBUG = 0
-    INFO = 1
-    WARN = 2
-    ERROR = 3
-    FATAL = 4
-    UNKNOWN = 5
-  end
-  include Severity
-
-  # Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
-  attr_accessor :level
-
-  # Logging program name.
-  attr_accessor :progname
-
-  # Logging date-time format (string passed to +strftime+).
-  def datetime_format=(datetime_format)
-    @default_formatter.datetime_format = datetime_format
-  end
-
-  def datetime_format
-    @default_formatter.datetime_format
-  end
-
-  # Logging formatter.  formatter#call is invoked with 4 arguments; severity,
-  # time, progname and msg for each log.  Bear in mind that time is a Time and
-  # msg is an Object that user passed and it could not be a String.  It is
-  # expected to return a logdev#write-able Object.  Default formatter is used
-  # when no formatter is set.
-  attr_accessor :formatter
-
-  alias sev_threshold level
-  alias sev_threshold= level=
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +DEBUG+ messages.
-  def debug?; @level <= DEBUG; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +INFO+ messages.
-  def info?; @level <= INFO; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +WARN+ messages.
-  def warn?; @level <= WARN; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +ERROR+ messages.
-  def error?; @level <= ERROR; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +FATAL+ messages.
-  def fatal?; @level <= FATAL; end
-
-  #
-  # === Synopsis
-  #
-  #   Logger.new(name, shift_age = 7, shift_size = 1048576)
-  #   Logger.new(name, shift_age = 'weekly')
-  #
-  # === Args
-  #
-  # +logdev+::
-  #   The log device.  This is a filename (String) or IO object (typically
-  #   +STDOUT+, +STDERR+, or an open file).
-  # +shift_age+::
-  #   Number of old log files to keep, *or* frequency of rotation (+daily+,
-  #   +weekly+ or +monthly+).
-  # +shift_size+::
-  #   Maximum logfile size (only applies when +shift_age+ is a number).
-  #
-  # === Description
-  #
-  # Create an instance.
-  #
-  def initialize(logdev, shift_age = 0, shift_size = 1048576)
-    @progname = nil
-    @level = DEBUG
-    @default_formatter = Formatter.new
-    @formatter = nil
-    @logdev = nil
-    if logdev
-      @logdev = LogDevice.new(logdev, :shift_age => shift_age,
-        :shift_size => shift_size)
-    end
-  end
-
-  #
-  # === Synopsis
-  #
-  #   Logger#add(severity, message = nil, progname = nil) { ... }
-  #
-  # === Args
-  #
-  # +severity+::
-  #   Severity.  Constants are defined in Logger namespace: +DEBUG+, +INFO+,
-  #   +WARN+, +ERROR+, +FATAL+, or +UNKNOWN+.
-  # +message+::
-  #   The log message.  A String or Exception.
-  # +progname+::
-  #   Program name string.  Can be omitted.  Treated as a message if no +message+ and
-  #   +block+ are given.
-  # +block+::
-  #   Can be omitted.  Called to get a message string if +message+ is nil.
-  #
-  # === Return
-  #
-  # +true+ if successful, +false+ otherwise.
-  #
-  # When the given severity is not high enough (for this particular logger), log
-  # no message, and return +true+.
-  #
-  # === Description
-  #
-  # Log a message if the given severity is high enough.  This is the generic
-  # logging method.  Users will be more inclined to use #debug, #info, #warn,
-  # #error, and #fatal.
-  #
-  # <b>Message format</b>: +message+ can be any object, but it has to be
-  # converted to a String in order to log it.  Generally, +inspect+ is used
-  # if the given object is not a String.
-  # A special case is an +Exception+ object, which will be printed in detail,
-  # including message, class, and backtrace.  See #msg2str for the
-  # implementation if required.
-  #
-  # === Bugs
-  #
-  # * Logfile is not locked.
-  # * Append open does not need to lock file.
-  # * But on the OS which supports multi I/O, records possibly be mixed.
-  #
-  def add(severity, message = nil, progname = nil, &block)
-    severity ||= UNKNOWN
-    if @logdev.nil? or severity < @level
-      return true
-    end
-    progname ||= @progname
-    if message.nil?
-      if block_given?
-	message = yield
-      else
-	message = progname
-	progname = @progname
-      end
-    end
-    @logdev.write(
-      format_message(format_severity(severity), Time.now, progname, message))
-    true
-  end
-  alias log add
-
-  #
-  # Dump given message to the log device without any formatting.  If no log
-  # device exists, return +nil+.
-  #
-  def <<(msg)
-    unless @logdev.nil?
-      @logdev.write(msg)
-    end
-  end
-
-  #
-  # Log a +DEBUG+ message.
-  #
-  # See #info for more information.
-  #
-  def debug(progname = nil, &block)
-    add(DEBUG, nil, progname, &block)
-  end
-
-  #
-  # Log an +INFO+ message.
-  #
-  # The message can come either from the +progname+ argument or the +block+.  If
-  # both are provided, then the +block+ is used as the message, and +progname+
-  # is used as the program name.
-  #
-  # === Examples
-  #
-  #   logger.info("MainApp") { "Received connection from #{ip}" }
-  #   # ...
-  #   logger.info "Waiting for input from user"
-  #   # ...
-  #   logger.info { "User typed #{input}" }
-  #
-  # You'll probably stick to the second form above, unless you want to provide a
-  # program name (which you can do with <tt>Logger#progname=</tt> as well).
-  #
-  # === Return
-  #
-  # See #add.
-  #
-  def info(progname = nil, &block)
-    add(INFO, nil, progname, &block)
-  end
-
-  #
-  # Log a +WARN+ message.
-  #
-  # See #info for more information.
-  #
-  def warn(progname = nil, &block)
-    add(WARN, nil, progname, &block)
-  end
-
-  #
-  # Log an +ERROR+ message.
-  #
-  # See #info for more information.
-  #
-  def error(progname = nil, &block)
-    add(ERROR, nil, progname, &block)
-  end
-
-  #
-  # Log a +FATAL+ message.
-  #
-  # See #info for more information.
-  #
-  def fatal(progname = nil, &block)
-    add(FATAL, nil, progname, &block)
-  end
-
-  #
-  # Log an +UNKNOWN+ message.  This will be printed no matter what the logger
-  # level.
-  #
-  # See #info for more information.
-  #
-  def unknown(progname = nil, &block)
-    add(UNKNOWN, nil, progname, &block)
-  end
-
-  #
-  # Close the logging device.
-  #
-  def close
-    @logdev.close if @logdev
-  end
-
-private
-
-  # Severity label for logging. (max 5 char)
-  SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL ANY)
-
-  def format_severity(severity)
-    SEV_LABEL[severity] || 'ANY'
-  end
-
-  def format_message(severity, datetime, progname, msg)
-    (@formatter || @default_formatter).call(severity, datetime, progname, msg)
-  end
-
-
-  class Formatter
-    Format = "%s, [%s#%d] %5s -- %s: %s\n"
-
-    attr_accessor :datetime_format
-
-    def initialize
-      @datetime_format = nil
-    end
-
-    def call(severity, time, progname, msg)
-      Format % [severity[0..0], format_datetime(time), $$, severity, progname,
-        msg2str(msg)]
-    end
-
-  private
-
-    def format_datetime(time)
-      if @datetime_format.nil?
-        time.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d " % time.usec
-      else
-        time.strftime(@datetime_format)
-      end
-    end
-
-    def msg2str(msg)
-      case msg
-      when ::String
-        msg
-      when ::Exception
-        "#{ msg.message } (#{ msg.class })\n" <<
-          (msg.backtrace || []).join("\n")
-      else
-        msg.inspect
-      end
-    end
-  end
-
-
-  class LogDevice
-    attr_reader :dev
-    attr_reader :filename
-
-    class LogDeviceMutex
-      include MonitorMixin
-    end
-
-    def initialize(log = nil, opt = {})
-      @dev = @filename = @shift_age = @shift_size = nil
-      @mutex = LogDeviceMutex.new
-      if log.respond_to?(:write) and log.respond_to?(:close)
-	@dev = log
-      else
-	@dev = open_logfile(log)
-	@dev.sync = true
-	@filename = log
-	@shift_age = opt[:shift_age] || 7
-	@shift_size = opt[:shift_size] || 1048576
-      end
-    end
-
-    def write(message)
-      @mutex.synchronize do
-        if @shift_age and @dev.respond_to?(:stat)
-          begin
-            check_shift_log
-          rescue
-            raise Logger::ShiftingError.new("Shifting failed. #{$!}")
-          end
-        end
-        @dev.write(message)
-      end
-    end
-
-    def close
-      @mutex.synchronize do
-        @dev.close
-      end
-    end
-
-  private
-
-    def open_logfile(filename)
-      if (FileTest.exist?(filename))
-     	open(filename, (File::WRONLY | File::APPEND))
-      else
-       	create_logfile(filename)
-      end
-    end
-
-    def create_logfile(filename)
-      logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
-      logdev.sync = true
-      add_log_header(logdev)
-      logdev
-    end
-
-    def add_log_header(file)
-      file.write(
-     	"# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
-    )
-    end
-
-    SiD = 24 * 60 * 60
-
-    def check_shift_log
-      if @shift_age.is_a?(Integer)
-        # Note: always returns false if '0'.
-        if @filename && (@shift_age > 0) && (@dev.stat.size > @shift_size)
-          shift_log_age
-        end
-      else
-        now = Time.now
-        if @dev.stat.mtime <= previous_period_end(now)
-          shift_log_period(now)
-        end
-      end
-    end
-
-    def shift_log_age
-      (@shift_age-3).downto(0) do |i|
-        if FileTest.exist?("#{@filename}.#{i}")
-          File.rename("#{@filename}.#{i}", "#{@filename}.#{i+1}")
-        end
-      end
-      @dev.close
-      File.rename("#{@filename}", "#{@filename}.0")
-      @dev = create_logfile(@filename)
-      return true
-    end
-
-    def shift_log_period(now)
-      postfix = previous_period_end(now).strftime("%Y%m%d")	# YYYYMMDD
-      age_file = "#{@filename}.#{postfix}"
-      if FileTest.exist?(age_file)
-        raise RuntimeError.new("'#{ age_file }' already exists.")
-      end
-      @dev.close
-      File.rename("#{@filename}", age_file)
-      @dev = create_logfile(@filename)
-      return true
-    end
-
-    def previous_period_end(now)
-      case @shift_age
-      when /^daily$/
-        eod(now - 1 * SiD)
-      when /^weekly$/
-        eod(now - ((now.wday + 1) * SiD))
-      when /^monthly$/
-        eod(now - now.mday * SiD)
-      else
-        now
-      end
-    end
-
-    def eod(t)
-      Time.mktime(t.year, t.month, t.mday, 23, 59, 59)
-    end
-  end
-
-
-  #
-  # == Description
-  #
-  # Application -- Add logging support to your application.
-  #
-  # == Usage
-  #
-  # 1. Define your application class as a sub-class of this class.
-  # 2. Override 'run' method in your class to do many things.
-  # 3. Instantiate it and invoke 'start'.
-  #
-  # == Example
-  #
-  #   class FooApp < Application
-  #     def initialize(foo_app, application_specific, arguments)
-  #       super('FooApp') # Name of the application.
-  #     end
-  #
-  #     def run
-  #       ...
-  #       log(WARN, 'warning', 'my_method1')
-  #       ...
-  #       @log.error('my_method2') { 'Error!' }
-  #       ...
-  #     end
-  #   end
-  #
-  #   status = FooApp.new(....).start
-  #
-  class Application
-    include Logger::Severity
-
-    attr_reader :appname
-    attr_reader :logdev
-
-    #
-    # == Synopsis
-    #
-    #   Application.new(appname = '')
-    #
-    # == Args
-    #
-    # +appname+:: Name of the application.
-    #
-    # == Description
-    #
-    # Create an instance.  Log device is +STDERR+ by default.  This can be
-    # changed with #set_log.
-    #
-    def initialize(appname = nil)
-      @appname = appname
-      @log = Logger.new(STDERR)
-      @log.progname = @appname
-      @level = @log.level
-    end
-
-    #
-    # Start the application.  Return the status code.
-    #
-    def start
-      status = -1
-      begin
-	log(INFO, "Start of #{ @appname }.")
-	status = run
-      rescue
-	log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n"))
-      ensure
-	log(INFO, "End of #{ @appname }. (status: #{ status.to_s })")
-      end
-      status
-    end
-
-    #
-    # Sets the log device for this application.  See the class Logger for an
-    # explanation of the arguments.
-    #
-    def set_log(logdev, shift_age = 0, shift_size = 1024000)
-      @log = Logger.new(logdev, shift_age, shift_size)
-      @log.progname = @appname
-      @log.level = @level
-    end
-
-    def log=(logdev)
-      set_log(logdev)
-    end
-
-    #
-    # Set the logging threshold, just like <tt>Logger#level=</tt>.
-    #
-    def level=(level)
-      @level = level
-      @log.level = @level
-    end
-
-    #
-    # See Logger#add.  This application's +appname+ is used.
-    #
-    def log(severity, message = nil, &block)
-      @log.add(severity, message, @appname, &block) if @log
-    end
-
-  private
-
-    def run
-      raise RuntimeError.new('Method run must be defined in the derived class.')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mailread.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mailread.rb
deleted file mode 100644
index 08b33c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mailread.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-# The Mail class represents an internet mail message (as per RFC822, RFC2822)
-# with headers and a body. 
-class Mail
-
-  # Create a new Mail where +f+ is either a stream which responds to gets(),
-  # or a path to a file.  If +f+ is a path it will be opened.
-  #
-  # The whole message is read so it can be made available through the #header,
-  # #[] and #body methods.
-  #
-  # The "From " line is ignored if the mail is in mbox format.
-  def initialize(f)
-    unless defined? f.gets
-      f = open(f, "r")
-      opened = true
-    end
-
-    @header = {}
-    @body = []
-    begin
-      while line = f.gets()
-	line.chop!
-	next if /^From /=~line	# skip From-line
-	break if /^$/=~line	# end of header
-
-	if /^(\S+?):\s*(.*)/=~line
-	  (attr = $1).capitalize!
-	  @header[attr] = $2
-	elsif attr
-	  line.sub!(/^\s*/, '')
-	  @header[attr] += "\n" + line
-	end
-      end
-  
-      return unless line
-
-      while line = f.gets()
-	break if /^From /=~line
-	@body.push(line)
-      end
-    ensure
-      f.close if opened
-    end
-  end
-
-  # Return the headers as a Hash.
-  def header
-    return @header
-  end
-
-  # Return the message body as an Array of lines
-  def body
-    return @body
-  end
-
-  # Return the header corresponding to +field+. 
-  #
-  # Matching is case-insensitive.
-  def [](field)
-    @header[field.capitalize]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mathn.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mathn.rb
deleted file mode 100644
index a5a121c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mathn.rb
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-#   mathn.rb - 
-#   	$Release Version: 0.5 $
-#   	$Revision: 1.1.1.1.4.1 $
-#   	$Date: 1998/01/16 12:36:05 $
-#   	by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# --
-#
-#   
-#
-
-require "complex.rb"
-require "rational.rb"
-require "matrix.rb"
-
-class Integer
-
-  def gcd2(int)
-    a = self.abs
-    b = int.abs
-    a, b = b, a if a < b
-    
-    pd_a = a.prime_division
-    pd_b = b.prime_division
-    
-    gcd = 1
-    for pair in pd_a
-      as = pd_b.assoc(pair[0])
-      if as
-	gcd *= as[0] ** [as[1], pair[1]].min
-      end
-    end
-    return gcd
-  end
-  
-  def Integer.from_prime_division(pd)
-    value = 1
-    for prime, index in pd
-      value *= prime**index
-    end
-    value
-  end
-  
-  def prime_division
-    raise ZeroDivisionError if self == 0
-    ps = Prime.new
-    value = self
-    pv = []
-    for prime in ps
-      count = 0
-      while (value1, mod = value.divmod(prime)
-	     mod) == 0
-	value = value1
-	count += 1
-      end
-      if count != 0
-	pv.push [prime, count]
-      end
-      break if prime * prime  >= value
-    end
-    if value > 1
-      pv.push [value, 1]
-    end
-    return pv
-  end
-end
-  
-class Prime
-  include Enumerable
-
-  def initialize
-    @seed = 1
-    @primes = []
-    @counts = []
-  end
-  
-  def succ
-    i = -1
-    size = @primes.size
-    while i < size
-      if i == -1
-	@seed += 1
-	i += 1
-      else
-	while @seed > @counts[i]
-	  @counts[i] += @primes[i]
-	end
-	if @seed != @counts[i]
-	  i += 1
-	else
-	  i = -1
-	end
-      end
-    end
-    @primes.push @seed
-    @counts.push @seed + @seed
-    return @seed
-  end
-  alias next succ
-
-  def each
-    loop do
-      yield succ
-    end
-  end
-end
-
-class Fixnum
-  alias / quo
-end
-
-class Bignum
-  alias / quo
-end
-
-class Rational
-  Unify = true
-
-  def inspect
-    format "%s/%s", numerator.inspect, denominator.inspect
-  end
-
-  alias power! **
-
-  def ** (other)
-    if other.kind_of?(Rational)
-      other2 = other
-      if self < 0
-	return Complex.new!(self, 0) ** other
-      elsif other == 0
-	return Rational(1,1)
-      elsif self == 0
-	return Rational(0,1)
-      elsif self == 1
-	return Rational(1,1)
-      end
-      
-      npd = numerator.prime_division
-      dpd = denominator.prime_division
-      if other < 0
-	other = -other
-	npd, dpd = dpd, npd
-      end
-      
-      for elm in npd
-	elm[1] = elm[1] * other
-	if !elm[1].kind_of?(Integer) and elm[1].denominator != 1
-         return Float(self) ** other2
-	end
-	elm[1] = elm[1].to_i
-      end
-      
-      for elm in dpd
-	elm[1] = elm[1] * other
-	if !elm[1].kind_of?(Integer) and elm[1].denominator != 1
-         return Float(self) ** other2
-	end
-	elm[1] = elm[1].to_i
-      end
-      
-      num = Integer.from_prime_division(npd)
-      den = Integer.from_prime_division(dpd)
-      
-      Rational(num,den)
-      
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = numerator ** other
-	den = denominator ** other
-      elsif other < 0
-	num = denominator ** -other
-	den = numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x , y = other.coerce(self)
-      x ** y
-    end
-  end
-
-  def power2(other)
-    if other.kind_of?(Rational)
-      if self < 0
-	return Complex(self, 0) ** other
-      elsif other == 0
-	return Rational(1,1)
-      elsif self == 0
-	return Rational(0,1)
-      elsif self == 1
-	return Rational(1,1)
-      end
-      
-      dem = nil
-      x = self.denominator.to_f.to_i
-      neard = self.denominator.to_f ** (1.0/other.denominator.to_f)
-      loop do
-	if (neard**other.denominator == self.denominator)
-	  dem = neaed
-	  break
-	end
-      end
-      nearn = self.numerator.to_f ** (1.0/other.denominator.to_f)
-      Rational(num,den)
-      
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = numerator ** other
-	den = denominator ** other
-      elsif other < 0
-	num = denominator ** -other
-	den = numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x , y = other.coerce(self)
-      x ** y
-    end
-  end
-end
-
-module Math
-  def sqrt(a)
-    if a.kind_of?(Complex)
-      abs = sqrt(a.real*a.real + a.image*a.image)
-#      if not abs.kind_of?(Rational)
-#	return a**Rational(1,2)
-#      end
-      x = sqrt((a.real + abs)/Rational(2))
-      y = sqrt((-a.real + abs)/Rational(2))
-#      if !(x.kind_of?(Rational) and y.kind_of?(Rational))
-#	return a**Rational(1,2)
-#      end
-      if a.image >= 0 
-	Complex(x, y)
-      else
-	Complex(x, -y)
-      end
-    elsif a >= 0
-      rsqrt(a)
-    else
-      Complex(0,rsqrt(-a))
-    end
-  end
-  
-  def rsqrt(a)
-    if a.kind_of?(Float)
-      sqrt!(a)
-    elsif a.kind_of?(Rational)
-      rsqrt(a.numerator)/rsqrt(a.denominator)
-    else
-      src = a
-      max = 2 ** 32
-      byte_a = [src & 0xffffffff]
-      # ruby's bug
-      while (src >= max) and (src >>= 32)
-	byte_a.unshift src & 0xffffffff
-      end
-      
-      answer = 0
-      main = 0
-      side = 0
-      for elm in byte_a
-	main = (main << 32) + elm
-	side <<= 16
-	if answer != 0
-	  if main * 4  < side * side
-	    applo = main.div(side)
-	  else 
-	    applo = ((sqrt!(side * side + 4 * main) - side)/2.0).to_i + 1
-	  end
-	else
-	  applo = sqrt!(main).to_i + 1
-	end
-	
-	while (x = (side + applo) * applo) > main
-	  applo -= 1
-	end
-	main -= x
-	answer = (answer << 16) + applo
-	side += applo * 2
-      end
-      if main == 0
-	answer
-      else
-	sqrt!(a)
-      end
-    end
-  end
-
-  module_function :sqrt
-  module_function :rsqrt
-end
-
-class Complex
-  Unify = true
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/matrix.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/matrix.rb
deleted file mode 100644
index c62acdf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/matrix.rb
+++ /dev/null
@@ -1,1272 +0,0 @@
-#!/usr/local/bin/ruby
-#--
-#   matrix.rb - 
-#       $Release Version: 1.0$
-#       $Revision: 1.11 $
-#       $Date: 1999/10/06 11:01:53 $
-#       Original Version from Smalltalk-80 version
-#          on July 23, 1985 at 8:37:17 am
-#       by Keiju ISHITSUKA
-#++
-#
-# = matrix.rb
-#
-# An implementation of Matrix and Vector classes.
-#
-# Author:: Keiju ISHITSUKA
-# Documentation:: Gavin Sinclair (sourced from <i>Ruby in a Nutshell</i> (Matsumoto, O'Reilly)) 
-#
-# See classes Matrix and Vector for documentation. 
-#
-
-
-require "e2mmap.rb"
-
-module ExceptionForMatrix # :nodoc:
-  extend Exception2MessageMapper
-  def_e2message(TypeError, "wrong argument type %s (expected %s)")
-  def_e2message(ArgumentError, "Wrong # of arguments(%d for %d)")
-  
-  def_exception("ErrDimensionMismatch", "\#{self.name} dimension mismatch")
-  def_exception("ErrNotRegular", "Not Regular Matrix")
-  def_exception("ErrOperationNotDefined", "This operation(%s) can\\'t defined")
-end
-
-#
-# The +Matrix+ class represents a mathematical matrix, and provides methods for creating
-# special-case matrices (zero, identity, diagonal, singular, vector), operating on them
-# arithmetically and algebraically, and determining their mathematical properties (trace, rank,
-# inverse, determinant).
-#
-# Note that although matrices should theoretically be rectangular, this is not
-# enforced by the class.
-#
-# Also note that the determinant of integer matrices may be incorrectly calculated unless you
-# also <tt>require 'mathn'</tt>.  This may be fixed in the future.
-#
-# == Method Catalogue
-#
-# To create a matrix:
-# * <tt> Matrix[*rows]                  </tt>
-# * <tt> Matrix.[](*rows)               </tt>
-# * <tt> Matrix.rows(rows, copy = true) </tt>
-# * <tt> Matrix.columns(columns)        </tt>
-# * <tt> Matrix.diagonal(*values)       </tt>
-# * <tt> Matrix.scalar(n, value)        </tt>
-# * <tt> Matrix.scalar(n, value)        </tt>
-# * <tt> Matrix.identity(n)             </tt>
-# * <tt> Matrix.unit(n)                 </tt>
-# * <tt> Matrix.I(n)                    </tt>
-# * <tt> Matrix.zero(n)                 </tt>
-# * <tt> Matrix.row_vector(row)         </tt>
-# * <tt> Matrix.column_vector(column)   </tt>
-#
-# To access Matrix elements/columns/rows/submatrices/properties: 
-# * <tt>  [](i, j)                      </tt>
-# * <tt> #row_size                      </tt>
-# * <tt> #column_size                   </tt>
-# * <tt> #row(i)                        </tt>
-# * <tt> #column(j)                     </tt>
-# * <tt> #collect                       </tt>
-# * <tt> #map                           </tt>
-# * <tt> #minor(*param)                 </tt>
-#
-# Properties of a matrix:
-# * <tt> #regular?                      </tt>
-# * <tt> #singular?                     </tt>
-# * <tt> #square?                       </tt>
-#
-# Matrix arithmetic:
-# * <tt>  *(m)                          </tt>
-# * <tt>  +(m)                          </tt>
-# * <tt>  -(m)                          </tt>
-# * <tt> #/(m)                          </tt>
-# * <tt> #inverse                       </tt>
-# * <tt> #inv                           </tt>
-# * <tt>  **                            </tt>
-#
-# Matrix functions:
-# * <tt> #determinant                   </tt>
-# * <tt> #det                           </tt>
-# * <tt> #rank                          </tt>
-# * <tt> #trace                         </tt>
-# * <tt> #tr                            </tt>
-# * <tt> #transpose                     </tt>
-# * <tt> #t                             </tt>
-#
-# Conversion to other data types:
-# * <tt> #coerce(other)                 </tt>
-# * <tt> #row_vectors                   </tt>
-# * <tt> #column_vectors                </tt>
-# * <tt> #to_a                          </tt>
-#
-# String representations:
-# * <tt> #to_s                          </tt>
-# * <tt> #inspect                       </tt>
-#
-class Matrix
-  @RCS_ID='-$Id: matrix.rb,v 1.11 1999/10/06 11:01:53 keiju Exp keiju $-'
-  
-#  extend Exception2MessageMapper
-  include ExceptionForMatrix
-  
-  # instance creations
-  private_class_method :new
-  
-  #
-  # Creates a matrix where each argument is a row.
-  #   Matrix[ [25, 93], [-1, 66] ]
-  #      =>  25 93
-  #          -1 66
-  #
-  def Matrix.[](*rows)
-    new(:init_rows, rows, false)
-  end
-  
-  #
-  # Creates a matrix where +rows+ is an array of arrays, each of which is a row
-  # to the matrix.  If the optional argument +copy+ is false, use the given
-  # arrays as the internal structure of the matrix without copying.
-  #   Matrix.rows([[25, 93], [-1, 66]])
-  #      =>  25 93
-  #          -1 66
-  def Matrix.rows(rows, copy = true)
-    new(:init_rows, rows, copy)
-  end
-  
-  #
-  # Creates a matrix using +columns+ as an array of column vectors.
-  #   Matrix.columns([[25, 93], [-1, 66]])
-  #      =>  25 -1
-  #          93 66
-  #
-  #
-  def Matrix.columns(columns)
-    rows = (0 .. columns[0].size - 1).collect {
-      |i|
-      (0 .. columns.size - 1).collect {
-        |j|
-        columns[j][i]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-  
-  #
-  # Creates a matrix where the diagonal elements are composed of +values+.
-  #   Matrix.diagonal(9, 5, -3)
-  #     =>  9  0  0
-  #         0  5  0
-  #         0  0 -3
-  #
-  def Matrix.diagonal(*values)
-    size = values.size
-    rows = (0 .. size  - 1).collect {
-      |j|
-      row = Array.new(size).fill(0, 0, size)
-      row[j] = values[j]
-      row
-    }
-    rows(rows, false)
-  end
-  
-  #
-  # Creates an +n+ by +n+ diagonal matrix where each diagonal element is
-  # +value+.
-  #   Matrix.scalar(2, 5)
-  #     => 5 0
-  #        0 5
-  #
-  def Matrix.scalar(n, value)
-    Matrix.diagonal(*Array.new(n).fill(value, 0, n))
-  end
-
-  #
-  # Creates an +n+ by +n+ identity matrix.
-  #   Matrix.identity(2)
-  #     => 1 0
-  #        0 1
-  #
-  def Matrix.identity(n)
-    Matrix.scalar(n, 1)
-  end
-  class << Matrix 
-    alias unit identity
-    alias I identity
-  end
-  
-  #
-  # Creates an +n+ by +n+ zero matrix.
-  #   Matrix.zero(2)
-  #     => 0 0
-  #        0 0
-  #
-  def Matrix.zero(n)
-    Matrix.scalar(n, 0)
-  end
-  
-  #
-  # Creates a single-row matrix where the values of that row are as given in
-  # +row+.
-  #   Matrix.row_vector([4,5,6])
-  #     => 4 5 6
-  #
-  def Matrix.row_vector(row)
-    case row
-    when Vector
-      Matrix.rows([row.to_a], false)
-    when Array
-      Matrix.rows([row.dup], false)
-    else
-      Matrix.rows([[row]], false)
-    end
-  end
-  
-  #
-  # Creates a single-column matrix where the values of that column are as given
-  # in +column+.
-  #   Matrix.column_vector([4,5,6])
-  #     => 4
-  #        5
-  #        6
-  #
-  def Matrix.column_vector(column)
-    case column
-    when Vector
-      Matrix.columns([column.to_a])
-    when Array
-      Matrix.columns([column])
-    else
-      Matrix.columns([[column]])
-    end
-  end
-
-  #
-  # This method is used by the other methods that create matrices, and is of no
-  # use to general users.
-  #
-  def initialize(init_method, *argv)
-    self.send(init_method, *argv)
-  end
-  
-  def init_rows(rows, copy)
-    if copy
-      @rows = rows.collect{|row| row.dup}
-    else
-      @rows = rows
-    end
-    self
-  end
-  private :init_rows
-  
-  #
-  # Returns element (+i+,+j+) of the matrix.  That is: row +i+, column +j+.
-  #
-  def [](i, j)
-    @rows[i][j]
-  end
-
-  #
-  # Returns the number of rows.
-  #
-  def row_size
-    @rows.size
-  end
-  
-  #
-  # Returns the number of columns.  Note that it is possible to construct a
-  # matrix with uneven columns (e.g. Matrix[ [1,2,3], [4,5] ]), but this is
-  # mathematically unsound.  This method uses the first row to determine the
-  # result.
-  #
-  def column_size
-    @rows[0].size
-  end
-
-  #
-  # Returns row vector number +i+ of the matrix as a Vector (starting at 0 like
-  # an array).  When a block is given, the elements of that vector are iterated.
-  #
-  def row(i) # :yield: e
-    if block_given?
-      for e in @rows[i]
-        yield e
-      end
-    else
-      Vector.elements(@rows[i])
-    end
-  end
-
-  #
-  # Returns column vector number +j+ of the matrix as a Vector (starting at 0
-  # like an array).  When a block is given, the elements of that vector are
-  # iterated.
-  #
-  def column(j) # :yield: e
-    if block_given?
-      0.upto(row_size - 1) do
-        |i|
-        yield @rows[i][j]
-      end
-    else
-      col = (0 .. row_size - 1).collect {
-        |i|
-        @rows[i][j]
-      }
-      Vector.elements(col, false)
-    end
-  end
-  
-  #
-  # Returns a matrix that is the result of iteration of the given block over all
-  # elements of the matrix.
-  #   Matrix[ [1,2], [3,4] ].collect { |i| i**2 }
-  #     => 1  4
-  #        9 16
-  #
-  def collect # :yield: e
-    rows = @rows.collect{|row| row.collect{|e| yield e}}
-    Matrix.rows(rows, false)
-  end
-  alias map collect
-  
-  #
-  # Returns a section of the matrix.  The parameters are either:
-  # *  start_row, nrows, start_col, ncols; OR
-  # *  col_range, row_range
-  #
-  #   Matrix.diagonal(9, 5, -3).minor(0..1, 0..2)
-  #     => 9 0 0
-  #        0 5 0
-  #
-  def minor(*param)
-    case param.size
-    when 2
-      from_row = param[0].first
-      size_row = param[0].end - from_row
-      size_row += 1 unless param[0].exclude_end?
-      from_col = param[1].first
-      size_col = param[1].end - from_col
-      size_col += 1 unless param[1].exclude_end?
-    when 4
-      from_row = param[0]
-      size_row = param[1]
-      from_col = param[2]
-      size_col = param[3]
-    else
-      Matrix.Raise ArgumentError, param.inspect
-    end
-    
-    rows = @rows[from_row, size_row].collect{
-      |row|
-      row[from_col, size_col]
-    }
-    Matrix.rows(rows, false)
-  end
- 
-  #--
-  # TESTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ if this is a regular matrix.
-  #
-  def regular?
-    square? and rank == column_size
-  end
-  
-  #
-  # Returns +true+ is this is a singular (i.e. non-regular) matrix.
-  #
-  def singular?
-    not regular?
-  end
-
-  #
-  # Returns +true+ is this is a square matrix.  See note in column_size about this
-  # being unreliable, though.
-  #
-  def square?
-    column_size == row_size
-  end
-  
-  #--
-  # OBJECT METHODS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ if and only if the two matrices contain equal elements.
-  #
-  def ==(other)
-    return false unless Matrix === other
-    
-    other.compare_by_row_vectors(@rows)
-  end
-  alias eql? ==
-  
-  #
-  # Not really intended for general consumption.
-  #
-  def compare_by_row_vectors(rows)
-    return false unless @rows.size == rows.size
-    
-    0.upto(@rows.size - 1) do
-      |i|
-      return false unless @rows[i] == rows[i]
-    end
-    true
-  end
-  
-  #
-  # Returns a clone of the matrix, so that the contents of each do not reference
-  # identical objects.
-  #
-  def clone
-    Matrix.rows(@rows)
-  end
-  
-  #
-  # Returns a hash-code for the matrix.
-  #
-  def hash
-    value = 0
-    for row in @rows
-      for e in row
-        value ^= e.hash
-      end
-    end
-    return value
-  end
-  
-  #--
-  # ARITHMETIC -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Matrix multiplication.
-  #   Matrix[[2,4], [6,8]] * Matrix.identity(2)
-  #     => 2 4
-  #        6 8
-  #
-  def *(m) # m is matrix or vector or number
-    case(m)
-    when Numeric
-      rows = @rows.collect {
-        |row|
-        row.collect {
-          |e|
-          e * m
-        }
-      }
-      return Matrix.rows(rows, false)
-    when Vector
-      m = Matrix.column_vector(m)
-      r = self * m
-      return r.column(0)
-    when Matrix
-      Matrix.Raise ErrDimensionMismatch if column_size != m.row_size
-    
-      rows = (0 .. row_size - 1).collect {
-        |i|
-        (0 .. m.column_size - 1).collect {
-          |j|
-          vij = 0
-          0.upto(column_size - 1) do
-            |k|
-            vij += self[i, k] * m[k, j]
-          end
-          vij
-        }
-      }
-      return Matrix.rows(rows, false)
-    else
-      x, y = m.coerce(self)
-      return x * y
-    end
-  end
-  
-  #
-  # Matrix addition.
-  #   Matrix.scalar(2,5) + Matrix[[1,0], [-4,7]]
-  #     =>  6  0
-  #        -4 12
-  #
-  def +(m)
-    case m
-    when Numeric
-      Matrix.Raise ErrOperationNotDefined, "+"
-    when Vector
-      m = Matrix.column_vector(m)
-    when Matrix
-    else
-      x, y = m.coerce(self)
-      return x + y
-    end
-    
-    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
-    
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      (0 .. column_size - 1).collect {
-        |j|
-        self[i, j] + m[i, j]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-
-  #
-  # Matrix subtraction.
-  #   Matrix[[1,5], [4,2]] - Matrix[[9,3], [-4,1]]
-  #     => -8  2
-  #         8  1
-  #
-  def -(m)
-    case m
-    when Numeric
-      Matrix.Raise ErrOperationNotDefined, "-"
-    when Vector
-      m = Matrix.column_vector(m)
-    when Matrix
-    else
-      x, y = m.coerce(self)
-      return x - y
-    end
-    
-    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
-    
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      (0 .. column_size - 1).collect {
-        |j|
-        self[i, j] - m[i, j]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-  
-  #
-  # Matrix division (multiplication by the inverse).
-  #   Matrix[[7,6], [3,9]] / Matrix[[2,9], [3,1]]
-  #     => -7  1
-  #        -3 -6
-  #
-  def /(other)
-    case other
-    when Numeric
-      rows = @rows.collect {
-        |row|
-        row.collect {
-          |e|
-          e / other
-        }
-      }
-      return Matrix.rows(rows, false)
-    when Matrix
-      return self * other.inverse
-    else
-      x, y = other.coerce(self)
-      rerurn x / y
-    end
-  end
-
-  #
-  # Returns the inverse of the matrix.
-  #   Matrix[[1, 2], [2, 1]].inverse
-  #     => -1  1
-  #         0 -1
-  #
-  def inverse
-    Matrix.Raise ErrDimensionMismatch unless square?
-    Matrix.I(row_size).inverse_from(self)
-  end
-  alias inv inverse
-
-  #
-  # Not for public consumption?
-  #
-  def inverse_from(src)
-    size = row_size - 1
-    a = src.to_a
-    
-    for k in 0..size
-      if (akk = a[k][k]) == 0
-        i = k
-        begin
-          Matrix.Raise ErrNotRegular if (i += 1) > size
-        end while a[i][k] == 0
-        a[i], a[k] = a[k], a[i]
-        @rows[i], @rows[k] = @rows[k], @rows[i]
-        akk = a[k][k]
-      end
-      
-      for i in 0 .. size
-        next if i == k
-        q = a[i][k] / akk
-        a[i][k] = 0
-        
-        (k + 1).upto(size) do   
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-        0.upto(size) do
-          |j|
-          @rows[i][j] -= @rows[k][j] * q
-        end
-      end
-      
-      (k + 1).upto(size) do
-        |j|
-        a[k][j] /= akk
-      end
-      0.upto(size) do
-        |j|
-        @rows[k][j] /= akk
-      end
-    end
-    self
-  end
-  #alias reciprocal inverse
-  
-  #
-  # Matrix exponentiation.  Defined for integer powers only.  Equivalent to
-  # multiplying the matrix by itself N times.
-  #   Matrix[[7,6], [3,9]] ** 2
-  #     => 67 96
-  #        48 99
-  #
-  def ** (other)
-    if other.kind_of?(Integer)
-      x = self
-      if other <= 0
-        x = self.inverse
-        return Matrix.identity(self.column_size) if other == 0
-        other = -other
-      end
-      z = x
-      n = other  - 1
-      while n != 0
-        while (div, mod = n.divmod(2)
-               mod == 0)
-          x = x * x
-          n = div
-        end
-        z *= x
-        n -= 1
-      end
-      z
-    elsif other.kind_of?(Float) || defined?(Rational) && other.kind_of?(Rational)
-      Matrix.Raise ErrOperationNotDefined, "**"
-    else
-      Matrix.Raise ErrOperationNotDefined, "**"
-    end
-  end
-  
-  #--
-  # MATRIX FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Returns the determinant of the matrix.  If the matrix is not square, the
-  # result is 0.
-  #   Matrix[[7,6], [3,9]].determinant
-  #     => 63
-  #
-  def determinant
-    return 0 unless square?
-    
-    size = row_size - 1
-    a = to_a
-    
-    det = 1
-    k = 0
-    begin 
-      if (akk = a[k][k]) == 0
-        i = k
-        begin
-          return 0 if (i += 1) > size
-        end while a[i][k] == 0
-        a[i], a[k] = a[k], a[i]
-        akk = a[k][k]
-        det *= -1
-      end
-      (k + 1).upto(size) do
-        |i|
-        q = a[i][k] / akk
-        (k + 1).upto(size) do
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-      end
-      det *= akk
-    end while (k += 1) <= size
-    det
-  end
-  alias det determinant
-        
-  #
-  # Returns the rank of the matrix.  Beware that using Float values, with their
-  # usual lack of precision, can affect the value returned by this method.  Use
-  # Rational values instead if this is important to you.
-  #   Matrix[[7,6], [3,9]].rank
-  #     => 2
-  #
-  def rank
-    if column_size > row_size
-      a = transpose.to_a
-      a_column_size = row_size
-      a_row_size = column_size
-    else
-      a = to_a
-      a_column_size = column_size
-      a_row_size = row_size
-    end
-    rank = 0
-    k = 0
-    begin
-      if (akk = a[k][k]) == 0
-        i = k
-        exists = true
-        begin
-          if (i += 1) > a_column_size - 1
-            exists = false
-            break
-          end
-        end while a[i][k] == 0
-        if exists
-          a[i], a[k] = a[k], a[i]
-          akk = a[k][k]
-        else
-          i = k
-          exists = true
-          begin
-            if (i += 1) > a_row_size - 1
-              exists = false
-              break
-            end
-          end while a[k][i] == 0
-          if exists
-            k.upto(a_column_size - 1) do
-              |j|
-              a[j][k], a[j][i] = a[j][i], a[j][k]
-            end
-            akk = a[k][k]
-          else
-            next
-          end
-        end
-      end
-      (k + 1).upto(a_row_size - 1) do
-        |i|
-        q = a[i][k] / akk
-        (k + 1).upto(a_column_size - 1) do
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-      end
-      rank += 1
-    end while (k += 1) <= a_column_size - 1
-    return rank
-  end
-
-  #
-  # Returns the trace (sum of diagonal elements) of the matrix.
-  #   Matrix[[7,6], [3,9]].trace
-  #     => 16
-  #
-  def trace
-    tr = 0
-    0.upto(column_size - 1) do
-      |i|
-      tr += @rows[i][i]
-    end
-    tr
-  end
-  alias tr trace
-  
-  #
-  # Returns the transpose of the matrix.
-  #   Matrix[[1,2], [3,4], [5,6]]
-  #     => 1 2
-  #        3 4
-  #        5 6
-  #   Matrix[[1,2], [3,4], [5,6]].transpose
-  #     => 1 3 5
-  #        2 4 6
-  #
-  def transpose
-    Matrix.columns(@rows)
-  end
-  alias t transpose
-  
-  #--
-  # CONVERTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # FIXME: describe #coerce.
-  #
-  def coerce(other)
-    case other
-    when Numeric
-      return Scalar.new(other), self
-    else
-      raise TypeError, "#{self.class} can't be coerced into #{other.class}"
-    end
-  end
-
-  #
-  # Returns an array of the row vectors of the matrix.  See Vector.
-  #
-  def row_vectors
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      row(i)
-    }
-    rows
-  end
-  
-  #
-  # Returns an array of the column vectors of the matrix.  See Vector.
-  #
-  def column_vectors
-    columns = (0 .. column_size - 1).collect {
-      |i|
-      column(i)
-    }
-    columns
-  end
-  
-  #
-  # Returns an array of arrays that describe the rows of the matrix.
-  #
-  def to_a
-    @rows.collect{|row| row.collect{|e| e}}
-  end
-  
-  #--
-  # PRINTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Overrides Object#to_s
-  #
-  def to_s
-    "Matrix[" + @rows.collect{
-      |row|
-      "[" + row.collect{|e| e.to_s}.join(", ") + "]"
-    }.join(", ")+"]"
-  end
-  
-  #
-  # Overrides Object#inspect
-  #
-  def inspect
-    "Matrix"+ at rows.inspect
-  end
-  
-  # Private CLASS
-  
-  class Scalar < Numeric # :nodoc:
-    include ExceptionForMatrix
-    
-    def initialize(value)
-      @value = value
-    end
-    
-    # ARITHMETIC
-    def +(other)
-      case other
-      when Numeric
-        Scalar.new(@value + other)
-      when Vector, Matrix
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar"
-      when Scalar
-        Scalar.new(@value + other.value)
-      else
-        x, y = other.coerce(self)
-        x + y
-      end
-    end
-    
-    def -(other)
-      case other
-      when Numeric
-        Scalar.new(@value - other)
-      when Vector, Matrix
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar"
-      when Scalar
-        Scalar.new(@value - other.value)
-      else
-        x, y = other.coerce(self)
-        x - y
-      end
-    end
-    
-    def *(other)
-      case other
-      when Numeric
-        Scalar.new(@value * other)
-      when Vector, Matrix
-        other.collect{|e| @value * e}
-      else
-        x, y = other.coerce(self)
-        x * y
-      end
-    end
-    
-    def / (other)
-      case other
-      when Numeric
-        Scalar.new(@value / other)
-      when Vector
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix"
-      when Matrix
-        self * _M.inverse
-      else
-        x, y = other.coerce(self)
-        x / y
-      end
-    end
-    
-    def ** (other)
-      case other
-      when Numeric
-        Scalar.new(@value ** other)
-      when Vector
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix"
-      when Matrix
-        other.powered_by(self)
-      else
-        x, y = other.coerce(self)
-        x ** y
-      end
-    end
-  end
-end
-
-
-#
-# The +Vector+ class represents a mathematical vector, which is useful in its own right, and
-# also constitutes a row or column of a Matrix.
-#
-# == Method Catalogue
-#
-# To create a Vector:
-# * <tt>  Vector.[](*array)                   </tt>
-# * <tt>  Vector.elements(array, copy = true) </tt>
-#
-# To access elements:
-# * <tt>  [](i)                               </tt>
-#
-# To enumerate the elements:
-# * <tt> #each2(v)                            </tt>
-# * <tt> #collect2(v)                         </tt>
-#
-# Vector arithmetic:
-# * <tt>  *(x) "is matrix or number"          </tt>
-# * <tt>  +(v)                                </tt>
-# * <tt>  -(v)                                </tt>
-#
-# Vector functions:
-# * <tt> #inner_product(v)                    </tt>
-# * <tt> #collect                             </tt>
-# * <tt> #map                                 </tt>
-# * <tt> #map2(v)                             </tt>
-# * <tt> #r                                   </tt>
-# * <tt> #size                                </tt>
-#
-# Conversion to other data types:
-# * <tt> #covector                            </tt>
-# * <tt> #to_a                                </tt>
-# * <tt> #coerce(other)                       </tt>
-#
-# String representations:
-# * <tt> #to_s                                </tt>
-# * <tt> #inspect                             </tt>
-#
-class Vector
-  include ExceptionForMatrix
-  
-  #INSTANCE CREATION
-  
-  private_class_method :new
-
-  #
-  # Creates a Vector from a list of elements.
-  #   Vector[7, 4, ...]
-  #
-  def Vector.[](*array)
-    new(:init_elements, array, copy = false)
-  end
-  
-  #
-  # Creates a vector from an Array.  The optional second argument specifies
-  # whether the array itself or a copy is used internally.
-  #
-  def Vector.elements(array, copy = true)
-    new(:init_elements, array, copy)
-  end
-  
-  #
-  # For internal use.
-  #
-  def initialize(method, array, copy)
-    self.send(method, array, copy)
-  end
-  
-  #
-  # For internal use.
-  #
-  def init_elements(array, copy)
-    if copy
-      @elements = array.dup
-    else
-      @elements = array
-    end
-  end
-  
-  # ACCESSING
-         
-  #
-  # Returns element number +i+ (starting at zero) of the vector.
-  #
-  def [](i)
-    @elements[i]
-  end
-  
-  #
-  # Returns the number of elements in the vector.
-  #
-  def size
-    @elements.size
-  end
-  
-  #--
-  # ENUMERATIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Iterate over the elements of this vector and +v+ in conjunction.
-  #
-  def each2(v) # :yield: e1, e2
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    0.upto(size - 1) do
-      |i|
-      yield @elements[i], v[i]
-    end
-  end
-  
-  #
-  # Collects (as in Enumerable#collect) over the elements of this vector and +v+
-  # in conjunction.
-  #
-  def collect2(v) # :yield: e1, e2
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    (0 .. size - 1).collect do
-      |i|
-      yield @elements[i], v[i]
-    end
-  end
-
-  #--
-  # COMPARING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ iff the two vectors have the same elements in the same order.
-  #
-  def ==(other)
-    return false unless Vector === other
-    
-    other.compare_by(@elements)
-  end
-  alias eqn? ==
-  
-  #
-  # For internal use.
-  #
-  def compare_by(elements)
-    @elements == elements
-  end
-  
-  #
-  # Return a copy of the vector.
-  #
-  def clone
-    Vector.elements(@elements)
-  end
-  
-  #
-  # Return a hash-code for the vector.
-  #
-  def hash
-    @elements.hash
-  end
-  
-  #--
-  # ARITHMETIC -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Multiplies the vector by +x+, where +x+ is a number or another vector.
-  #
-  def *(x)
-    case x
-    when Numeric
-      els = @elements.collect{|e| e * x}
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) * x
-    else
-      s, x = x.coerce(self)
-      s * x
-    end
-  end
-
-  #
-  # Vector addition.
-  #
-  def +(v)
-    case v
-    when Vector
-      Vector.Raise ErrDimensionMismatch if size != v.size
-      els = collect2(v) {
-        |v1, v2|
-        v1 + v2
-      }
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) + v
-    else
-      s, x = v.coerce(self)
-      s + x
-    end
-  end
-
-  #
-  # Vector subtraction.
-  #
-  def -(v)
-    case v
-    when Vector
-      Vector.Raise ErrDimensionMismatch if size != v.size
-      els = collect2(v) {
-        |v1, v2|
-        v1 - v2
-      }
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) - v
-    else
-      s, x = v.coerce(self)
-      s - x
-    end
-  end
-  
-  #--
-  # VECTOR FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Returns the inner product of this vector with the other.
-  #   Vector[4,7].inner_product Vector[10,1]  => 47
-  #
-  def inner_product(v)
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    
-    p = 0
-    each2(v) {
-      |v1, v2|
-      p += v1 * v2
-    }
-    p
-  end
-  
-  #
-  # Like Array#collect.
-  #
-  def collect # :yield: e
-    els = @elements.collect {
-      |v|
-      yield v
-    }
-    Vector.elements(els, false)
-  end
-  alias map collect
-  
-  #
-  # Like Vector#collect2, but returns a Vector instead of an Array.
-  #
-  def map2(v) # :yield: e1, e2
-    els = collect2(v) {
-      |v1, v2|
-      yield v1, v2
-    }
-    Vector.elements(els, false)
-  end
-  
-  #
-  # Returns the modulus (Pythagorean distance) of the vector.
-  #   Vector[5,8,2].r => 9.643650761
-  #
-  def r
-    v = 0
-    for e in @elements
-      v += e*e
-    end
-    return Math.sqrt(v)
-  end
-  
-  #--
-  # CONVERTING
-  #++
-
-  #
-  # Creates a single-row matrix from this vector.
-  #
-  def covector
-    Matrix.row_vector(self)
-  end
-  
-  #
-  # Returns the elements of the vector in an array.
-  #
-  def to_a
-    @elements.dup
-  end
-  
-  #
-  # FIXME: describe Vector#coerce.
-  #
-  def coerce(other)
-    case other
-    when Numeric
-      return Scalar.new(other), self
-    else
-      raise TypeError, "#{self.class} can't be coerced into #{other.class}"
-    end
-  end
-  
-  #--
-  # PRINTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Overrides Object#to_s
-  #
-  def to_s
-    "Vector[" + @elements.join(", ") + "]"
-  end
-  
-  #
-  # Overrides Object#inspect
-  #
-  def inspect
-    str = "Vector"+ at elements.inspect
-  end
-end
-
-
-# Documentation comments:
-#  - Matrix#coerce and Vector#coerce need to be documented
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/md5.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/md5.rb
deleted file mode 100644
index e3fc278..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/md5.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# just for compatibility; requiring "md5" is obsoleted
-#
-# $RoughId: md5.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
-# $Id: md5.rb 12008 2007-03-06 10:12:12Z knu $
-
-require 'digest/md5'
-
-class MD5 < Digest::MD5
-  class << self
-    alias orig_new new
-    def new(str = nil)
-      if str
-        orig_new.update(str)
-      else
-        orig_new
-      end
-    end
-
-    def md5(*args)
-      new(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mkmf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mkmf.rb
deleted file mode 100644
index 31f4878..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mkmf.rb
+++ /dev/null
@@ -1,1554 +0,0 @@
-# module to create Makefile for extension modules
-# invoke like: ruby -r mkmf extconf.rb
-
-require 'rbconfig'
-require 'fileutils'
-require 'shellwords'
-
-CONFIG = Config::MAKEFILE_CONFIG
-ORIG_LIBPATH = ENV['LIB']
-
-CXX_EXT = %w[cc cxx cpp]
-if /mswin|bccwin|mingw|msdosdjgpp|human|os2/ !~ CONFIG['build_os']
-  CXX_EXT.concat(%w[C])
-end
-SRC_EXT = %w[c m] << CXX_EXT
-$static = $config_h = nil
-$default_static = $static
-
-unless defined? $configure_args
-  $configure_args = {}
-  args = CONFIG["configure_args"]
-  if ENV["CONFIGURE_ARGS"]
-    args << " " << ENV["CONFIGURE_ARGS"]
-  end
-  for arg in Shellwords::shellwords(args)
-    arg, val = arg.split('=', 2)
-    next unless arg
-    arg.tr!('_', '-')
-    if arg.sub!(/^(?!--)/, '--')
-      val or next
-      arg.downcase!
-    end
-    next if /^--(?:top|topsrc|src|cur)dir$/ =~ arg
-    $configure_args[arg] = val || true
-  end
-  for arg in ARGV
-    arg, val = arg.split('=', 2)
-    next unless arg
-    arg.tr!('_', '-')
-    if arg.sub!(/^(?!--)/, '--')
-      val or next
-      arg.downcase!
-    end
-    $configure_args[arg] = val || true
-  end
-end
-
-$libdir = CONFIG["libdir"]
-$rubylibdir = CONFIG["rubylibdir"]
-$archdir = CONFIG["archdir"]
-$sitedir = CONFIG["sitedir"]
-$sitelibdir = CONFIG["sitelibdir"]
-$sitearchdir = CONFIG["sitearchdir"]
-
-$mswin = /mswin/ =~ RUBY_PLATFORM
-$bccwin = /bccwin/ =~ RUBY_PLATFORM
-$mingw = /mingw/ =~ RUBY_PLATFORM
-$cygwin = /cygwin/ =~ RUBY_PLATFORM
-$human = /human/ =~ RUBY_PLATFORM
-$netbsd = /netbsd/ =~ RUBY_PLATFORM
-$os2 = /os2/ =~ RUBY_PLATFORM
-$beos = /beos/ =~ RUBY_PLATFORM
-$solaris = /solaris/ =~ RUBY_PLATFORM
-$dest_prefix_pattern = (File::PATH_SEPARATOR == ';' ? /\A([[:alpha:]]:)?/ : /\A/)
-
-def config_string(key, config = CONFIG)
-  s = config[key] and !s.empty? and block_given? ? yield(s) : s
-end
-
-def dir_re(dir)
-  Regexp.new('\$(?:\('+dir+'\)|\{'+dir+'\})(?:\$(?:\(target_prefix\)|\{target_prefix\}))?')
-end
-
-INSTALL_DIRS = [
-  [dir_re('commondir'), "$(RUBYCOMMONDIR)"],
-  [dir_re("sitedir"), "$(RUBYCOMMONDIR)"],
-  [dir_re('rubylibdir'), "$(RUBYLIBDIR)"],
-  [dir_re('archdir'), "$(RUBYARCHDIR)"],
-  [dir_re('sitelibdir'), "$(RUBYLIBDIR)"],
-  [dir_re('sitearchdir'), "$(RUBYARCHDIR)"]
-]
-
-def install_dirs(target_prefix = nil)
-  if $extout
-    dirs = [
-      ['RUBYCOMMONDIR', '$(extout)/common'],
-      ['RUBYLIBDIR',    '$(RUBYCOMMONDIR)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(extout)/$(arch)$(target_prefix)'],
-      ['extout',        "#$extout"],
-      ['extout_prefix', "#$extout_prefix"],
-    ]
-  elsif $extmk
-    dirs = [
-      ['RUBYCOMMONDIR', '$(rubylibdir)'],
-      ['RUBYLIBDIR',    '$(rubylibdir)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(archdir)$(target_prefix)'],
-    ]
-  else
-    dirs = [
-      ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'],
-      ['RUBYLIBDIR',    '$(sitelibdir)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(sitearchdir)$(target_prefix)'],
-    ]
-  end
-  dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")]
-  dirs
-end
-
-def map_dir(dir, map = nil)
-  map ||= INSTALL_DIRS
-  map.inject(dir) {|dir, (orig, new)| dir.gsub(orig, new)}
-end
-
-topdir = File.dirname(libdir = File.dirname(__FILE__))
-extdir = File.expand_path("ext", topdir)
-$extmk = File.expand_path($0)[0, extdir.size+1] == extdir+"/"
-if not $extmk and File.exist?(Config::CONFIG["archdir"] + "/ruby.h")
-  $hdrdir = $topdir = Config::CONFIG["archdir"]
-elsif File.exist?(($top_srcdir ||= topdir)  + "/ruby.h") and
-    File.exist?(($topdir ||= Config::CONFIG["topdir"]) + "/config.h")
-  $hdrdir = $top_srcdir
-else
-  abort "can't find header files for ruby."
-end
-
-OUTFLAG = CONFIG['OUTFLAG']
-CPPOUTFILE = CONFIG['CPPOUTFILE']
-
-CONFTEST_C = "conftest.c"
-
-class String
-  def quote
-    /\s/ =~ self ? "\"#{self}\"" : self
-  end
-end
-class Array
-  def quote
-    map {|s| s.quote}
-  end
-end
-
-def rm_f(*files)
-  FileUtils.rm_f(Dir[files.join("\0")])
-end
-
-def modified?(target, times)
-  (t = File.mtime(target)) rescue return nil
-  Array === times or times = [times]
-  t if times.all? {|n| n <= t}
-end
-
-def merge_libs(*libs)
-  libs.inject([]) do |x, y|
-    xy = x & y
-    xn = yn = 0
-    y = y.inject([]) {|ary, e| ary.last == e ? ary : ary << e}
-    y.each_with_index do |v, yi|
-      if xy.include?(v)
-        xi = [x.index(v), xn].max()
-        x[xi, 1] = y[yn..yi]
-        xn, yn = xi + (yi - yn + 1), yi + 1
-      end
-    end
-    x.concat(y[yn..-1] || [])
-  end
-end
-
-module Logging
-  @log = nil
-  @logfile = 'mkmf.log'
-  @orgerr = $stderr.dup
-  @orgout = $stdout.dup
-  @postpone = 0
-
-  def self::open
-    @log ||= File::open(@logfile, 'w')
-    @log.sync = true
-    $stderr.reopen(@log)
-    $stdout.reopen(@log)
-    yield
-  ensure
-    $stderr.reopen(@orgerr)
-    $stdout.reopen(@orgout)
-  end
-
-  def self::message(*s)
-    @log ||= File::open(@logfile, 'w')
-    @log.sync = true
-    @log.printf(*s)
-  end
-
-  def self::logfile file
-    @logfile = file
-    if @log and not @log.closed?
-      @log.flush
-      @log.close
-      @log = nil
-    end
-  end
-  
-  def self::postpone
-    tmplog = "mkmftmp#{@postpone += 1}.log"
-    open do
-      log, *save = @log, @logfile, @orgout, @orgerr
-      @log, @logfile, @orgout, @orgerr = nil, tmplog, log, log
-      begin
-        log.print(open {yield})
-        @log.close
-        File::open(tmplog) {|t| FileUtils.copy_stream(t, log)}
-      ensure
-        @log, @logfile, @orgout, @orgerr = log, *save
-        @postpone -= 1
-        rm_f tmplog
-      end
-    end
-  end
-end
-
-def xsystem command
-  Logging::open do
-    puts command.quote
-    system(command)
-  end
-end
-
-def xpopen command, *mode, &block
-  Logging::open do
-    case mode[0]
-    when nil, /^r/
-      puts "#{command} |"
-    else
-      puts "| #{command}"
-    end
-    IO.popen(command, *mode, &block)
-  end
-end
-
-def log_src(src)
-  src = src.split(/^/)
-  fmt = "%#{src.size.to_s.size}d: %s"
-  Logging::message <<"EOM"
-checked program was:
-/* begin */
-EOM
-  src.each_with_index {|line, no| Logging::message fmt, no+1, line}
-  Logging::message <<"EOM"
-/* end */
-
-EOM
-end
-
-def create_tmpsrc(src)
-  src = yield(src) if block_given?
-  src = src.gsub(/[ \t]+$/, '').gsub(/\A\n+|^\n+$/, '').sub(/[^\n]\z/, "\\&\n")
-  open(CONFTEST_C, "wb") do |cfile|
-    cfile.print src
-  end
-  src
-end
-
-def try_do(src, command, &b)
-  src = create_tmpsrc(src, &b)
-  xsystem(command)
-ensure
-  log_src(src)
-end
-
-def link_command(ldflags, opt="", libpath=$DEFLIBPATH|$LIBPATH)
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote,
-                              'src' => CONFTEST_C,
-                              'INCFLAGS' => $INCFLAGS,
-                              'CPPFLAGS' => $CPPFLAGS,
-                              'CFLAGS' => "#$CFLAGS",
-                              'ARCH_FLAG' => "#$ARCH_FLAG",
-                              'LDFLAGS' => "#$LDFLAGS #{ldflags}",
-                              'LIBPATH' => libpathflag(libpath),
-                              'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
-                              'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
-  Config::expand(TRY_LINK.dup, conf)
-end
-
-def cc_command(opt="")
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)
-  Config::expand("$(CC) #$INCFLAGS #$CPPFLAGS #$CFLAGS #$ARCH_FLAG #{opt} -c #{CONFTEST_C}",
-		 conf)
-end
-
-def cpp_command(outfile, opt="")
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)
-  Config::expand("$(CPP) #$INCFLAGS #$CPPFLAGS #$CFLAGS #{opt} #{CONFTEST_C} #{outfile}",
-		 conf)
-end
-
-def libpathflag(libpath=$DEFLIBPATH|$LIBPATH)
-  libpath.map{|x|
-    case x
-    when "$(topdir)", /\A\./
-      LIBPATHFLAG
-    else
-      LIBPATHFLAG+RPATHFLAG
-    end % x.quote
-  }.join
-end
-
-def try_link0(src, opt="", &b)
-  try_do(src, link_command("", opt), &b)
-end
-
-def try_link(src, opt="", &b)
-  try_link0(src, opt, &b)
-ensure
-  rm_f "conftest*", "c0x32*"
-end
-
-def try_compile(src, opt="", &b)
-  try_do(src, cc_command(opt), &b)
-ensure
-  rm_f "conftest*"
-end
-
-def try_cpp(src, opt="", &b)
-  try_do(src, cpp_command(CPPOUTFILE, opt), &b)
-ensure
-  rm_f "conftest*"
-end
-
-def cpp_include(header)
-  if header
-    header = [header] unless header.kind_of? Array
-    header.map {|h| "#include <#{h}>\n"}.join
-  else
-    ""
-  end
-end
-
-def with_cppflags(flags)
-  cppflags = $CPPFLAGS
-  $CPPFLAGS = flags
-  ret = yield
-ensure
-  $CPPFLAGS = cppflags unless ret
-end
-
-def with_cflags(flags)
-  cflags = $CFLAGS
-  $CFLAGS = flags
-  ret = yield
-ensure
-  $CFLAGS = cflags unless ret
-end
-
-def with_ldflags(flags)
-  ldflags = $LDFLAGS
-  $LDFLAGS = flags
-  ret = yield
-ensure
-  $LDFLAGS = ldflags unless ret
-end
-
-def try_static_assert(expr, headers = nil, opt = "", &b)
-  headers = cpp_include(headers)
-  try_compile(<<SRC, opt, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int conftest_const[(#{expr}) ? 1 : -1];
-SRC
-end
-
-def try_constant(const, headers = nil, opt = "", &b)
-  includes = cpp_include(headers)
-  if CROSS_COMPILING
-    if try_static_assert("#{const} > 0", headers, opt)
-      # positive constant
-    elsif try_static_assert("#{const} < 0", headers, opt)
-      neg = true
-      const = "-(#{const})"
-    elsif try_static_assert("#{const} == 0", headers, opt)
-      return 0
-    else
-      # not a constant
-      return nil
-    end
-    upper = 1
-    lower = 0
-    until try_static_assert("#{const} <= #{upper}", headers, opt)
-      lower = upper
-      upper <<= 1
-    end
-    return nil unless lower
-    while upper > lower + 1
-      mid = (upper + lower) / 2
-      if try_static_assert("#{const} > #{mid}", headers, opt)
-        lower = mid
-      else
-        upper = mid
-      end
-    end
-    upper = -upper if neg
-    return upper
-  else
-    src = %{#{COMMON_HEADERS}
-#{includes}
-#include <stdio.h>
-/*top*/
-int conftest_const = (int)(#{const});
-int main() {printf("%d\\n", conftest_const); return 0;}
-}
-    if try_link0(src, opt, &b)
-      xpopen("./conftest") do |f|
-        return Integer(f.gets)
-      end
-    end
-  end
-  nil
-end
-
-def try_func(func, libs, headers = nil, &b)
-  headers = cpp_include(headers)
-  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { void ((*volatile p)()); p = (void ((*)()))#{func}; return 0; }
-SRC
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { #{func}(); return 0; }
-SRC
-end
-
-def try_var(var, headers = nil, &b)
-  headers = cpp_include(headers)
-  try_compile(<<"SRC", &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { const volatile void *volatile p; p = &(&#{var})[0]; return 0; }
-SRC
-end
-
-def egrep_cpp(pat, src, opt = "", &b)
-  src = create_tmpsrc(src, &b)
-  xpopen(cpp_command('', opt)) do |f|
-    if Regexp === pat
-      puts("    ruby -ne 'print if #{pat.inspect}'")
-      f.grep(pat) {|l|
-	puts "#{f.lineno}: #{l}"
-	return true
-      }
-      false
-    else
-      puts("    egrep '#{pat}'")
-      begin
-	stdin = $stdin.dup
-	$stdin.reopen(f)
-	system("egrep", pat)
-      ensure
-	$stdin.reopen(stdin)
-      end
-    end
-  end
-ensure
-  rm_f "conftest*"
-  log_src(src)
-end
-
-def macro_defined?(macro, src, opt = "", &b)
-  src = src.sub(/[^\n]\z/, "\\&\n")
-  try_compile(src + <<"SRC", opt, &b)
-/*top*/
-#ifndef #{macro}
-# error
->>>>>> #{macro} undefined <<<<<<
-#endif
-SRC
-end
-
-def try_run(src, opt = "", &b)
-  if try_link0(src, opt, &b)
-    xsystem("./conftest")
-  else
-    nil
-  end
-ensure
-  rm_f "conftest*"
-end
-
-def install_files(mfile, ifiles, map = nil, srcprefix = nil)
-  ifiles or return
-  srcprefix ||= '$(srcdir)'
-  Config::expand(srcdir = srcprefix.dup)
-  dirs = []
-  path = Hash.new {|h, i| h[i] = dirs.push([i])[-1]}
-  ifiles.each do |files, dir, prefix|
-    dir = map_dir(dir, map)
-    prefix = %r|\A#{Regexp.quote(prefix)}/?| if prefix
-    if /\A\.\// =~ files
-      # install files which are in current working directory.
-      files = files[2..-1]
-      len = nil
-    else
-      # install files which are under the $(srcdir).
-      files = File.join(srcdir, files)
-      len = srcdir.size
-    end
-    f = nil
-    Dir.glob(files) do |f|
-      f[0..len] = "" if len
-      d = File.dirname(f)
-      d.sub!(prefix, "") if prefix
-      d = (d.empty? || d == ".") ? dir : File.join(dir, d)
-      f = File.join(srcprefix, f) if len
-      path[d] << f
-    end
-    unless len or f
-      d = File.dirname(files)
-      d.sub!(prefix, "") if prefix
-      d = (d.empty? || d == ".") ? dir : File.join(dir, d)
-      path[d] << files
-    end
-  end
-  dirs
-end
-
-def install_rb(mfile, dest, srcdir = nil)
-  install_files(mfile, [["lib/**/*.rb", dest, "lib"]], nil, srcdir)
-end
-
-def append_library(libs, lib)
-  format(LIBARG, lib) + " " + libs
-end
-
-def message(*s)
-  unless $extmk and not $VERBOSE
-    printf(*s)
-    $stdout.flush
-  end
-end
-
-def checking_for(m, fmt = nil)
-  f = caller[0][/in `(.*)'$/, 1] and f << ": " #` for vim
-  m = "checking #{/\Acheck/ =~ f ? '' : 'for '}#{m}... "
-  message "%s", m
-  a = r = nil
-  Logging::postpone do
-    r = yield
-    a = (fmt ? fmt % r : r ? "yes" : "no") << "\n"
-    "#{f}#{m}-------------------- #{a}\n"
-  end
-  message(a)
-  Logging::message "--------------------\n\n"
-  r
-end
-
-def checking_message(target, place = nil, opt = nil)
-  [["in", place], ["with", opt]].inject("#{target}") do |msg, (pre, noun)|
-    if noun
-      [[:to_str], [:join, ","], [:to_s]].each do |meth, *args|
-        if noun.respond_to?(meth)
-          break noun = noun.send(meth, *args)
-        end
-      end
-      msg << " #{pre} #{noun}" unless noun.empty?
-    end
-    msg
-  end
-end
-
-# Returns whether or not +macro+ is defined either in the common header
-# files or within any +headers+ you provide.
-#
-# Any options you pass to +opt+ are passed along to the compiler.
-#
-def have_macro(macro, headers = nil, opt = "", &b)
-  checking_for checking_message(macro, headers, opt) do
-    macro_defined?(macro, cpp_include(headers), opt, &b)
-  end
-end
-
-# Returns whether or not the given entry point +func+ can be found within
-# +lib+.  If +func+ is nil, the 'main()' entry point is used by default.
-# If found, it adds the library to list of libraries to be used when linking
-# your extension.
-#
-# If +headers+ are provided, it will include those header files as the
-# header files it looks in when searching for +func+.
-#
-# Real name of the library to be linked can be altered by
-# '--with-FOOlib' configuration option.
-#
-def have_library(lib, func = nil, headers = nil, &b)
-  func = "main" if !func or func.empty?
-  lib = with_config(lib+'lib', lib)
-  checking_for checking_message("#{func}()", LIBARG%lib) do
-    if COMMON_LIBS.include?(lib)
-      true
-    else
-      libs = append_library($libs, lib)
-      if try_func(func, libs, headers, &b)
-        $libs = libs
-        true
-      else
-        false
-      end
-    end
-  end
-end
-
-# Returns whether or not the entry point +func+ can be found within the library
-# +lib+ in one of the +paths+ specified, where +paths+ is an array of strings.
-# If +func+ is nil , then the main() function is used as the entry point.
-#
-# If +lib+ is found, then the path it was found on is added to the list of
-# library paths searched and linked against.
-#
-def find_library(lib, func, *paths, &b)
-  func = "main" if !func or func.empty?
-  lib = with_config(lib+'lib', lib)
-  paths = paths.collect {|path| path.split(File::PATH_SEPARATOR)}.flatten
-  checking_for "#{func}() in #{LIBARG%lib}" do
-    libpath = $LIBPATH
-    libs = append_library($libs, lib)
-    begin
-      until r = try_func(func, libs, &b) or paths.empty?
-	$LIBPATH = libpath | [paths.shift]
-      end
-      if r
-	$libs = libs
-	libpath = nil
-      end
-    ensure
-      $LIBPATH = libpath if libpath
-    end
-    r
-  end
-end
-
-# Returns whether or not the function +func+ can be found in the common
-# header files, or within any +headers+ that you provide.  If found, a
-# macro is passed as a preprocessor constant to the compiler using the
-# function name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_func('foo') returned true, then the HAVE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_func(func, headers = nil, &b)
-  checking_for checking_message("#{func}()", headers) do
-    if try_func(func, $libs, headers, &b)
-      $defs.push(format("-DHAVE_%s", func.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the variable +var+ can be found in the common
-# header files, or within any +headers+ that you provide.  If found, a
-# macro is passed as a preprocessor constant to the compiler using the
-# variable name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_var('foo') returned true, then the HAVE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_var(var, headers = nil, &b)
-  checking_for checking_message(var, headers) do
-    if try_var(var, headers, &b)
-      $defs.push(format("-DHAVE_%s", var.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the given +header+ file can be found on your system.
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the header file name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_header('foo.h') returned true, then the HAVE_FOO_H
-# preprocessor macro would be passed to the compiler.
-#
-def have_header(header, &b)
-  checking_for header do
-    if try_cpp(cpp_include(header), &b)
-      $defs.push(format("-DHAVE_%s", header.tr("a-z./\055", "A-Z___")))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Instructs mkmf to search for the given +header+ in any of the +paths+
-# provided, and returns whether or not it was found in those paths.
-#
-# If the header is found then the path it was found on is added to the list
-# of included directories that are sent to the compiler (via the -I switch).
-#
-def find_header(header, *paths)
-  header = cpp_include(header)
-  checking_for header do
-    if try_cpp(header)
-      true
-    else
-      found = false
-      paths.each do |dir|
-        opt = "-I#{dir}".quote
-        if try_cpp(header, opt)
-          $INCFLAGS << " " << opt
-          found = true
-          break
-        end
-      end
-      found
-    end
-  end
-end
-
-# Returns whether or not the struct of type +type+ contains +member+.  If
-# it does not, or the struct type can't be found, then false is returned.  You
-# may optionally specify additional +headers+ in which to look for the struct
-# (in addition to the common header files).
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the member name, in uppercase, prepended with 'HAVE_ST_'.
-#
-# For example, if have_struct_member('foo', 'bar') returned true, then the
-# HAVE_ST_BAR preprocessor macro would be passed to the compiler.
-# 
-def have_struct_member(type, member, headers = nil, &b)
-  checking_for checking_message("#{type}.#{member}", headers) do
-    if try_compile(<<"SRC", &b)
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-int main() { return 0; }
-int s = (char *)&((#{type}*)0)->#{member} - (char *)0;
-SRC
-      $defs.push(format("-DHAVE_ST_%s", member.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the static type +type+ is defined.  You may
-# optionally pass additional +headers+ to check against in addition to the
-# common header files.
-#
-# You may also pass additional flags to +opt+ which are then passed along to
-# the compiler.
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the type name, in uppercase, prepended with 'HAVE_TYPE_'.
-#
-# For example, if have_type('foo') returned true, then the HAVE_TYPE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_type(type, headers = nil, opt = "", &b)
-  checking_for checking_message(type, headers, opt) do
-    headers = cpp_include(headers)
-    if try_compile(<<"SRC", opt, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-typedef #{type} conftest_type;
-static conftest_type conftestval[sizeof(conftest_type)?1:-1];
-SRC
-      $defs.push(format("-DHAVE_TYPE_%s", type.strip.upcase.tr_s("^A-Z0-9_", "_")))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns the size of the given +type+.  You may optionally specify additional
-# +headers+ to search in for the +type+.
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the type name, in uppercase, prepended with 'SIZEOF_', followed by the type
-# name, followed by '=X' where 'X' is the actual size.
-#
-# For example, if check_sizeof('mystruct') returned 12, then the
-# SIZEOF_MYSTRUCT=12 preprocessor macro would be passed to the compiler.
-#
-def check_sizeof(type, headers = nil, &b)
-  expr = "sizeof(#{type})"
-  fmt = "%d"
-  def fmt.%(x)
-    x ? super : "failed"
-  end
-  checking_for checking_message("size of #{type}", headers), fmt do
-    if size = try_constant(expr, headers, &b)
-      $defs.push(format("-DSIZEOF_%s=%d", type.upcase.tr_s("^A-Z0-9_", "_"), size))
-      size
-    end
-  end
-end
-
-def scalar_ptr_type?(type, member = nil, headers = nil, &b)
-  try_compile(<<"SRC", &b)   # pointer
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-volatile #{type} conftestval;
-int main() { return 0; }
-int t() {return (int)(1-*(conftestval#{member ? ".#{member}" : ""}));}
-SRC
-end
-
-def scalar_type?(type, member = nil, headers = nil, &b)
-  try_compile(<<"SRC", &b)   # pointer
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-volatile #{type} conftestval;
-int main() { return 0; }
-int t() {return (int)(1-(conftestval#{member ? ".#{member}" : ""}));}
-SRC
-end
-
-def what_type?(type, member = nil, headers = nil, &b)
-  m = "#{type}"
-  name = type
-  if member
-    m << "." << member
-    name = "(((#{type} *)0)->#{member})"
-  end
-  fmt = "seems %s"
-  def fmt.%(x)
-    x ? super : "unknown"
-  end
-  checking_for checking_message(m, headers), fmt do
-    if scalar_ptr_type?(type, member, headers, &b)
-      if try_static_assert("sizeof(*#{name}) == 1", headers)
-        "string"
-      end
-    elsif scalar_type?(type, member, headers, &b)
-      if try_static_assert("sizeof(#{name}) > sizeof(long)", headers)
-        "long long"
-      elsif try_static_assert("sizeof(#{name}) > sizeof(int)", headers)
-        "long"
-      elsif try_static_assert("sizeof(#{name}) > sizeof(short)", headers)
-        "int"
-      elsif try_static_assert("sizeof(#{name}) > 1", headers)
-        "short"
-      else
-        "char"
-      end
-    end
-  end
-end
-
-def find_executable0(bin, path = nil)
-  ext = config_string('EXEEXT')
-  if File.expand_path(bin) == bin
-    return bin if File.executable?(bin)
-    ext and File.executable?(file = bin + ext) and return file
-    return nil
-  end
-  if path ||= ENV['PATH']
-    path = path.split(File::PATH_SEPARATOR)
-  else
-    path = %w[/usr/local/bin /usr/ucb /usr/bin /bin]
-  end
-  file = nil
-  path.each do |dir|
-    return file if File.executable?(file = File.join(dir, bin))
-    return file if ext and File.executable?(file << ext)
-  end
-  nil
-end
-
-def find_executable(bin, path = nil)
-  checking_for checking_message(bin, path) do
-    find_executable0(bin, path)
-  end
-end
-
-def arg_config(config, *defaults, &block)
-  $arg_config << [config, *defaults]
-  defaults << nil if !block and defaults.empty?
-  $configure_args.fetch(config.tr('_', '-'), *defaults, &block)
-end
-
-def with_config(config, *defaults)
-  config = config.sub(/^--with[-_]/, '')
-  val = arg_config("--with-"+config) do
-    if arg_config("--without-"+config)
-      false
-    elsif block_given?
-      yield(config, *defaults)
-    else
-      break *defaults
-    end
-  end
-  case val
-  when "yes"
-    true
-  when "no"
-    false
-  else
-    val
-  end
-end
-
-def enable_config(config, *defaults)
-  if arg_config("--enable-"+config)
-    true
-  elsif arg_config("--disable-"+config)
-    false
-  elsif block_given?
-    yield(config, *defaults)
-  else
-    return *defaults
-  end
-end
-
-def create_header(header = "extconf.h")
-  message "creating %s\n", header
-  sym = header.tr("a-z./\055", "A-Z___")
-  hdr = ["#ifndef #{sym}\n#define #{sym}\n"]
-  for line in $defs
-    case line
-    when /^-D([^=]+)(?:=(.*))?/
-      hdr << "#define #$1 #{$2 ? Shellwords.shellwords($2)[0] : 1}\n"
-    when /^-U(.*)/
-      hdr << "#undef #$1\n"
-    end
-  end
-  hdr << "#endif\n"
-  hdr = hdr.join
-  unless (IO.read(header) == hdr rescue false)
-    open(header, "w") do |hfile|
-      hfile.write(hdr)
-    end
-  end
-  $extconf_h = header
-end
-
-# Sets a +target+ name that the user can then use to configure various 'with'
-# options with on the command line by using that name.  For example, if the
-# target is set to "foo", then the user could use the --with-foo-dir command
-# line option.
-#
-# You may pass along additional 'include' or 'lib' defaults via the +idefault+
-# and +ldefault+ parameters, respectively.
-#
-# Note that dir_config only adds to the list of places to search for libraries
-# and include files.  It does not link the libraries into your application.
-#
-def dir_config(target, idefault=nil, ldefault=nil)
-  if dir = with_config(target + "-dir", (idefault unless ldefault))
-    defaults = Array === dir ? dir : dir.split(File::PATH_SEPARATOR)
-    idefault = ldefault = nil
-  end
-
-  idir = with_config(target + "-include", idefault)
-  $arg_config.last[1] ||= "${#{target}-dir}/include"
-  ldir = with_config(target + "-lib", ldefault)
-  $arg_config.last[1] ||= "${#{target}-dir}/lib"
-
-  idirs = idir ? Array === idir ? idir : idir.split(File::PATH_SEPARATOR) : []
-  if defaults
-    idirs.concat(defaults.collect {|dir| dir + "/include"})
-    idir = ([idir] + idirs).compact.join(File::PATH_SEPARATOR)
-  end
-  unless idirs.empty?
-    idirs.collect! {|dir| "-I" + dir}
-    idirs -= Shellwords.shellwords($CPPFLAGS)
-    unless idirs.empty?
-      $CPPFLAGS = (idirs.quote << $CPPFLAGS).join(" ")
-    end
-  end
-
-  ldirs = ldir ? Array === ldir ? ldir : ldir.split(File::PATH_SEPARATOR) : []
-  if defaults
-    ldirs.concat(defaults.collect {|dir| dir + "/lib"})
-    ldir = ([ldir] + ldirs).compact.join(File::PATH_SEPARATOR)
-  end
-  $LIBPATH = ldirs | $LIBPATH
-
-  [idir, ldir]
-end
-
-def pkg_config(pkg)
-  if pkgconfig = with_config("#{pkg}-config") and find_executable0(pkgconfig)
-    # iff package specific config command is given
-    get = proc {|opt| `#{pkgconfig} --#{opt}`.chomp}
-  elsif ($PKGCONFIG ||= 
-         (pkgconfig = with_config("pkg-config", ("pkg-config" unless CROSS_COMPILING))) &&
-         find_executable0(pkgconfig) && pkgconfig) and
-      system("#{$PKGCONFIG} --exists #{pkg}")
-    # default to pkg-config command
-    get = proc {|opt| `#{$PKGCONFIG} --#{opt} #{pkg}`.chomp}
-  elsif find_executable0(pkgconfig = "#{pkg}-config")
-    # default to package specific config command, as a last resort.
-    get = proc {|opt| `#{pkgconfig} --#{opt}`.chomp}
-  end
-  if get
-    cflags = get['cflags']
-    ldflags = get['libs']
-    libs = get['libs-only-l']
-    ldflags = (Shellwords.shellwords(ldflags) - Shellwords.shellwords(libs)).quote.join(" ")
-    $CFLAGS += " " << cflags
-    $LDFLAGS += " " << ldflags
-    $libs += " " << libs
-    Logging::message "package configuration for %s\n", pkg
-    Logging::message "cflags: %s\nldflags: %s\nlibs: %s\n\n",
-                     cflags, ldflags, libs
-    [cflags, ldflags, libs]
-  else
-    Logging::message "package configuration for %s is not found\n", pkg
-    nil
-  end
-end
-
-def with_destdir(dir)
-  dir = dir.sub($dest_prefix_pattern, '')
-  /\A\$[\(\{]/ =~ dir ? dir : "$(DESTDIR)"+dir
-end
-
-def winsep(s)
-  s.tr('/', '\\')
-end
-
-def configuration(srcdir)
-  mk = []
-  vpath = %w[$(srcdir) $(topdir) $(hdrdir)]
-  if !CROSS_COMPILING
-    case CONFIG['build_os']
-    when 'cygwin'
-      if CONFIG['target_os'] != 'cygwin'
-        vpath.each {|p| p.sub!(/.*/, '$(shell cygpath -u \&)')}
-      end
-    when 'msdosdjgpp', 'mingw32'
-      CONFIG['PATH_SEPARATOR'] = ';'
-    end
-  end
-  mk << %{
-SHELL = /bin/sh
-
-#### Start of system configuration section. ####
-
-srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {CONFIG[$1||$2]}.quote}
-topdir = #{($extmk ? CONFIG["topdir"] : $topdir).quote}
-hdrdir = #{$extmk ? CONFIG["hdrdir"].quote : '$(topdir)'}
-VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])}
-}
-  if $extmk
-    mk << "RUBYLIB = -\nRUBYOPT = -rpurelib.rb\n"
-  end
-  if destdir = CONFIG["prefix"][$dest_prefix_pattern, 1]
-    mk << "\nDESTDIR = #{destdir}\n"
-  end
-  CONFIG.each do |key, var|
-    next unless /prefix$/ =~ key
-    mk << "#{key} = #{with_destdir(var)}\n"
-  end
-  CONFIG.each do |key, var|
-    next if /^abs_/ =~ key
-    next unless /^(?:src|top|hdr|(.*))dir$/ =~ key and $1
-    mk << "#{key} = #{with_destdir(var)}\n"
-  end
-  if !$extmk and !$configure_args.has_key?('--ruby') and
-      sep = config_string('BUILD_FILE_SEPARATOR')
-    sep = ":/=#{sep}"
-  else
-    sep = ""
-  end
-  extconf_h = $extconf_h ? "-DRUBY_EXTCONF_H=\\\"$(RUBY_EXTCONF_H)\\\" " : $defs.join(" ")<<" "
-  mk << %{
-CC = #{CONFIG['CC']}
-LIBRUBY = #{CONFIG['LIBRUBY']}
-LIBRUBY_A = #{CONFIG['LIBRUBY_A']}
-LIBRUBYARG_SHARED = #$LIBRUBYARG_SHARED
-LIBRUBYARG_STATIC = #$LIBRUBYARG_STATIC
-
-RUBY_EXTCONF_H = #{$extconf_h}
-CFLAGS   = #{$static ? '' : CONFIG['CCDLFLAGS']} #$CFLAGS #$ARCH_FLAG
-INCFLAGS = -I. #$INCFLAGS
-DEFS     = #{CONFIG['DEFS']}
-CPPFLAGS = #{extconf_h}#{$CPPFLAGS}
-CXXFLAGS = $(CFLAGS) #{CONFIG['CXXFLAGS']}
-DLDFLAGS = #$LDFLAGS #$DLDFLAGS #$ARCH_FLAG
-LDSHARED = #{CONFIG['LDSHARED']}
-AR = #{CONFIG['AR']}
-EXEEXT = #{CONFIG['EXEEXT']}
-
-RUBY_INSTALL_NAME = #{CONFIG['RUBY_INSTALL_NAME']}
-RUBY_SO_NAME = #{CONFIG['RUBY_SO_NAME']}
-arch = #{CONFIG['arch']}
-sitearch = #{CONFIG['sitearch']}
-ruby_version = #{Config::CONFIG['ruby_version']}
-ruby = #{$ruby}
-RUBY = $(ruby#{sep})
-RM = #{config_string('RM') || '$(RUBY) -run -e rm -- -f'}
-MAKEDIRS = #{config_string('MAKEDIRS') || '@$(RUBY) -run -e mkdir -- -p'}
-INSTALL = #{config_string('INSTALL') || '@$(RUBY) -run -e install -- -vp'}
-INSTALL_PROG = #{config_string('INSTALL_PROG') || '$(INSTALL) -m 0755'}
-INSTALL_DATA = #{config_string('INSTALL_DATA') || '$(INSTALL) -m 0644'}
-COPY = #{config_string('CP') || '@$(RUBY) -run -e cp -- -v'}
-
-#### End of system configuration section. ####
-
-preload = #{$preload ? $preload.join(' ') : ''}
-}
-  if $nmake == ?b
-    mk.each do |x|
-      x.gsub!(/^(MAKEDIRS|INSTALL_(?:PROG|DATA))+\s*=.*\n/) do
-        "!ifndef " + $1 + "\n" +
-        $& +
-	"!endif\n"
-      end
-    end
-  end
-  mk
-end
-
-def dummy_makefile(srcdir)
-  configuration(srcdir) << <<RULES << CLEANINGS
-CLEANFILES = #{$cleanfiles.join(' ')}
-DISTCLEANFILES = #{$distcleanfiles.join(' ')}
-
-all install static install-so install-rb: Makefile
-
-RULES
-end
-
-# Generates the Makefile for your extension, passing along any options and
-# preprocessor constants that you may have generated through other methods.
-#
-# The +target+ name should correspond the name of the global function name
-# defined within your C extension, minus the 'Init_'.  For example, if your
-# C extension is defined as 'Init_foo', then your target would simply be 'foo'.
-#
-# If any '/' characters are present in the target name, only the last name
-# is interpreted as the target name, and the rest are considered toplevel
-# directory names, and the generated Makefile will be altered accordingly to
-# follow that directory structure.
-#
-# For example, if you pass 'test/foo' as a target name, your extension will
-# be installed under the 'test' directory.  This means that in order to
-# load the file within a Ruby program later, that directory structure will
-# have to be followed, e.g. "require 'test/foo'".
-#
-def create_makefile(target, srcprefix = nil)
-  $target = target
-  libpath = $DEFLIBPATH|$LIBPATH
-  message "creating Makefile\n"
-  rm_f "conftest*"
-  if CONFIG["DLEXT"] == $OBJEXT
-    for lib in libs = $libs.split
-      lib.sub!(/-l(.*)/, %%"lib\\1.#{$LIBEXT}"%)
-    end
-    $defs.push(format("-DEXTLIB='%s'", libs.join(",")))
-  end
-
-  if target.include?('/')
-    target_prefix, target = File.split(target)
-    target_prefix[0,0] = '/'
-  else
-    target_prefix = ""
-  end
-
-  srcprefix ||= '$(srcdir)'
-  Config::expand(srcdir = srcprefix.dup)
-
-  if not $objs
-    $objs = []
-    srcs = Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-    for f in srcs
-      obj = File.basename(f, ".*") << ".o"
-      $objs.push(obj) unless $objs.index(obj)
-    end
-  elsif !(srcs = $srcs)
-    srcs = $objs.collect {|obj| obj.sub(/\.o\z/, '.c')}
-  end
-  $srcs = srcs
-  for i in $objs
-    i.sub!(/\.o\z/, ".#{$OBJEXT}")
-  end
-  $objs = $objs.join(" ")
-
-  target = nil if $objs == ""
-
-  if target and EXPORT_PREFIX
-    if File.exist?(File.join(srcdir, target + '.def'))
-      deffile = "$(srcdir)/$(TARGET).def"
-      unless EXPORT_PREFIX.empty?
-        makedef = %{-pe "sub!(/^(?=\\w)/,'#{EXPORT_PREFIX}') unless 1../^EXPORTS$/i"}
-      end
-    else
-      makedef = %{-e "puts 'EXPORTS', '#{EXPORT_PREFIX}Init_$(TARGET)'"}
-    end
-    if makedef
-      $distcleanfiles << '$(DEFFILE)'
-      origdef = deffile
-      deffile = "$(TARGET)-$(arch).def"
-    end
-  end
-  origdef ||= ''
-
-  libpath = libpathflag(libpath)
-
-  dllib = target ? "$(TARGET).#{CONFIG['DLEXT']}" : ""
-  staticlib = target ? "$(TARGET).#$LIBEXT" : ""
-  mfile = open("Makefile", "wb")
-  mfile.print configuration(srcprefix)
-  mfile.print "
-libpath = #{($DEFLIBPATH|$LIBPATH).join(" ")}
-LIBPATH = #{libpath}
-DEFFILE = #{deffile}
-
-CLEANFILES = #{$cleanfiles.join(' ')}
-DISTCLEANFILES = #{$distcleanfiles.join(' ')}
-
-extout = #{$extout}
-extout_prefix = #{$extout_prefix}
-target_prefix = #{target_prefix}
-LOCAL_LIBS = #{$LOCAL_LIBS}
-LIBS = #{$LIBRUBYARG} #{$libs} #{$LIBS}
-SRCS = #{srcs.collect(&File.method(:basename)).join(' ')}
-OBJS = #{$objs}
-TARGET = #{target}
-DLLIB = #{dllib}
-EXTSTATIC = #{$static || ""}
-STATIC_LIB = #{staticlib unless $static.nil?}
-#{!$extout && defined?($installed_list) ? "INSTALLED_LIST = #{$installed_list}\n" : ""}
-"
-  install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]}
-  n = ($extout ? '$(RUBYARCHDIR)/' : '') + '$(TARGET).'
-  mfile.print "
-TARGET_SO     = #{($extout ? '$(RUBYARCHDIR)/' : '')}$(DLLIB)
-CLEANLIBS     = #{n}#{CONFIG['DLEXT']} #{n}il? #{n}tds #{n}map
-CLEANOBJS     = *.#{$OBJEXT} *.#{$LIBEXT} *.s[ol] *.pdb *.exp *.bak
-
-all:		#{$extout ? "install" : target ? "$(DLLIB)" : "Makefile"}
-static:		$(STATIC_LIB)#{$extout ? " install-rb" : ""}
-"
-  mfile.print CLEANINGS
-  dirs = []
-  mfile.print "install: install-so install-rb\n\n"
-  sodir = (dir = "$(RUBYARCHDIR)").dup
-  mfile.print("install-so: #{dir}\n")
-  if target
-    f = "$(DLLIB)"
-    dest = "#{dir}/#{f}"
-    mfile.print "install-so: #{dest}\n"
-    unless $extout
-      mfile.print "#{dest}: #{f}\n"
-      if (sep = config_string('BUILD_FILE_SEPARATOR'))
-        f.gsub!("/", sep)
-        dir.gsub!("/", sep)
-        sep = ":/="+sep
-        f.gsub!(/(\$\(\w+)(\))/) {$1+sep+$2}
-        f.gsub!(/(\$\{\w+)(\})/) {$1+sep+$2}
-        dir.gsub!(/(\$\(\w+)(\))/) {$1+sep+$2}
-        dir.gsub!(/(\$\{\w+)(\})/) {$1+sep+$2}
-      end
-      mfile.print "\t$(INSTALL_PROG) #{f} #{dir}\n"
-      if defined?($installed_list)
-	mfile.print "\t at echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
-      end
-    end
-  end
-  mfile.print("install-rb: pre-install-rb install-rb-default\n")
-  mfile.print("install-rb-default: pre-install-rb-default\n")
-  mfile.print("pre-install-rb: Makefile\n")
-  mfile.print("pre-install-rb-default: Makefile\n")
-  for sfx, i in [["-default", [["lib/**/*.rb", "$(RUBYLIBDIR)", "lib"]]], ["", $INSTALLFILES]]
-    files = install_files(mfile, i, nil, srcprefix) or next
-    for dir, *files in files
-      unless dirs.include?(dir)
-	dirs << dir
-	mfile.print "pre-install-rb#{sfx}: #{dir}\n"
-      end
-      files.each do |f|
-	dest = "#{dir}/#{File.basename(f)}"
-	mfile.print("install-rb#{sfx}: #{dest}\n")
-	mfile.print("#{dest}: #{f}\n\t$(#{$extout ? 'COPY' : 'INSTALL_DATA'}) ")
-	sep = config_string('BUILD_FILE_SEPARATOR')
-	if sep
-	  f = f.gsub("/", sep)
-	  sep = ":/="+sep
-	  f = f.gsub(/(\$\(\w+)(\))/) {$1+sep+$2}
-	  f = f.gsub(/(\$\{\w+)(\})/) {$1+sep+$2}
-	else
-	  sep = ""
-	end
-	mfile.print("#{f} $(@D#{sep})\n")
-	if defined?($installed_list) and !$extout
-	  mfile.print("\t at echo #{dest}>>$(INSTALLED_LIST)\n")
-	end
-      end
-    end
-  end
-  dirs.unshift(sodir) if target and !dirs.include?(sodir)
-  dirs.each {|dir| mfile.print "#{dir}:\n\t$(MAKEDIRS) $@\n"}
-
-  mfile.print <<-SITEINSTALL
-
-site-install: site-install-so site-install-rb
-site-install-so: install-so
-site-install-rb: install-rb
-
-  SITEINSTALL
-
-  return unless target
-
-  mfile.puts SRC_EXT.collect {|ext| ".path.#{ext} = $(VPATH)"} if $nmake == ?b
-  mfile.print ".SUFFIXES: .#{SRC_EXT.join(' .')} .#{$OBJEXT}\n"
-  mfile.print "\n"
-
-  CXX_EXT.each do |ext|
-    COMPILE_RULES.each do |rule|
-      mfile.printf(rule, ext, $OBJEXT)
-      mfile.printf("\n\t%s\n\n", COMPILE_CXX)
-    end
-  end
-  %w[c].each do |ext|
-    COMPILE_RULES.each do |rule|
-      mfile.printf(rule, ext, $OBJEXT)
-      mfile.printf("\n\t%s\n\n", COMPILE_C)
-    end
-  end
-
-  mfile.print "$(RUBYARCHDIR)/" if $extout
-  mfile.print "$(DLLIB): ", (makedef ? "$(DEFFILE) " : ""), "$(OBJS)\n"
-  mfile.print "\t at -$(RM) $@\n"
-  mfile.print "\t at -$(MAKEDIRS) $(@D)\n" if $extout
-  link_so = LINK_SO.gsub(/^/, "\t")
-  mfile.print link_so, "\n\n"
-  unless $static.nil?
-    mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
-    mfile.print "$(AR) #{config_string('ARFLAGS') || 'cru '}$@ $(OBJS)"
-    config_string('RANLIB') do |ranlib|
-      mfile.print "\n\t at -#{ranlib} $(DLLIB) 2> /dev/null || true"
-    end
-  end
-  mfile.print "\n\n"
-  if makedef
-    mfile.print "$(DEFFILE): #{origdef}\n"
-    mfile.print "\t$(RUBY) #{makedef} #{origdef} > $@\n\n"
-  end
-
-  depend = File.join(srcdir, "depend")
-  if File.exist?(depend)
-    suffixes = []
-    depout = []
-    open(depend, "r") do |dfile|
-      mfile.printf "###\n"
-      cont = implicit = nil
-      impconv = proc do
-	COMPILE_RULES.each {|rule| depout << (rule % implicit[0]) << implicit[1]}
-	implicit = nil
-      end
-      ruleconv = proc do |line|
-	if implicit
-	  if /\A\t/ =~ line
-	    implicit[1] << line
-	    next
-	  else
-	    impconv[]
-	  end
-	end
-	if m = /\A\.(\w+)\.(\w+)(?:\s*:)/.match(line)
-	  suffixes << m[1] << m[2]
-	  implicit = [[m[1], m[2]], [m.post_match]]
-	  next
-	elsif RULE_SUBST and /\A(?!\s*\w+\s*=)[$\w][^#]*:/ =~ line
-	  line.gsub!(%r"(\s)(?!\.)([^$(){}+=:\s\/\\,]+)(?=\s|\z)") {$1 + RULE_SUBST % $2}
-	end
-	depout << line
-      end
-      while line = dfile.gets()
-	line.gsub!(/\.o\b/, ".#{$OBJEXT}")
-	line.gsub!(/\$\(hdrdir\)\/config.h/, $config_h) if $config_h
-	if /(?:^|[^\\])(?:\\\\)*\\$/ =~ line
-	  (cont ||= []) << line
-	  next
-	elsif cont
-	  line = (cont << line).join
-	  cont = nil
-	end
-	ruleconv.call(line)
-      end
-      if cont
-	ruleconv.call(cont.join)
-      elsif implicit
-	impconv.call
-      end
-    end
-    unless suffixes.empty?
-      mfile.print ".SUFFIXES: .", suffixes.uniq.join(" ."), "\n\n"
-    end
-    mfile.print "$(OBJS): $(RUBY_EXTCONF_H)\n\n" if $extconf_h
-    mfile.print depout
-  else
-    headers = %w[ruby.h defines.h]
-    if RULE_SUBST
-      headers.each {|h| h.sub!(/.*/) {|*m| RULE_SUBST % m}}
-    end
-    headers << $config_h if $config_h
-    headers << "$(RUBY_EXTCONF_H)" if $extconf_h
-    mfile.print "$(OBJS): ", headers.join(' '), "\n"
-  end
-
-  $makefile_created = true
-ensure
-  mfile.close if mfile
-end
-
-def init_mkmf(config = CONFIG)
-  $makefile_created = false
-  $arg_config = []
-  $enable_shared = config['ENABLE_SHARED'] == 'yes'
-  $defs = []
-  $extconf_h = nil
-  $CFLAGS = with_config("cflags", arg_config("CFLAGS", config["CFLAGS"])).dup
-  $ARCH_FLAG = with_config("arch_flag", arg_config("ARCH_FLAG", config["ARCH_FLAG"])).dup
-  $CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS", config["CPPFLAGS"])).dup
-  $LDFLAGS = with_config("ldflags", arg_config("LDFLAGS", config["LDFLAGS"])).dup
-  $INCFLAGS = "-I$(topdir) -I$(hdrdir) -I$(srcdir)"
-  $DLDFLAGS = with_config("dldflags", arg_config("DLDFLAGS", config["DLDFLAGS"])).dup
-  $LIBEXT = config['LIBEXT'].dup
-  $OBJEXT = config["OBJEXT"].dup
-  $LIBS = "#{config['LIBS']} #{config['DLDLIBS']}"
-  $LIBRUBYARG = ""
-  $LIBRUBYARG_STATIC = config['LIBRUBYARG_STATIC']
-  $LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED']
-  $DEFLIBPATH = $extmk ? ["$(topdir)"] : CROSS_COMPILING ? [] : ["$(libdir)"]
-  $DEFLIBPATH.unshift(".")
-  $LIBPATH = []
-  $INSTALLFILES = nil
-
-  $objs = nil
-  $srcs = nil
-  $libs = ""
-  if $enable_shared or Config.expand(config["LIBRUBY"].dup) != Config.expand(config["LIBRUBY_A"].dup)
-    $LIBRUBYARG = config['LIBRUBYARG']
-  end
-
-  $LOCAL_LIBS = ""
-
-  $cleanfiles = config_string('CLEANFILES') {|s| Shellwords.shellwords(s)} || []
-  $cleanfiles << "mkmf.log"
-  $distcleanfiles = config_string('DISTCLEANFILES') {|s| Shellwords.shellwords(s)} || []
-
-  $extout ||= nil
-  $extout_prefix ||= nil
-
-  $arg_config.clear
-  dir_config("opt")
-end
-
-FailedMessage = <<MESSAGE
-Could not create Makefile due to some reason, probably lack of
-necessary libraries and/or headers.  Check the mkmf.log file for more
-details.  You may need configuration options.
-
-Provided configuration options:
-MESSAGE
-
-def mkmf_failed(path)
-  unless $makefile_created or File.exist?("Makefile")
-    opts = $arg_config.collect {|t, n| "\t#{t}#{n ? "=#{n}" : ""}\n"}
-    abort "*** #{path} failed ***\n" + FailedMessage + opts.join
-  end
-end
-
-init_mkmf
-
-$make = with_config("make-prog", ENV["MAKE"] || "make")
-make, = Shellwords.shellwords($make)
-$nmake = nil
-case
-when $mswin
-  $nmake = ?m if /nmake/i =~ make
-when $bccwin
-  $nmake = ?b if /Borland/i =~ `#{make} -h`
-end
-
-Config::CONFIG["srcdir"] = CONFIG["srcdir"] =
-  $srcdir = arg_config("--srcdir", File.dirname($0))
-$configure_args["--topsrcdir"] ||= $srcdir
-if $curdir = arg_config("--curdir")
-  Config.expand(curdir = $curdir.dup)
-else
-  curdir = $curdir = "."
-end
-unless File.expand_path(Config::CONFIG["topdir"]) == File.expand_path(curdir)
-  CONFIG["topdir"] = $curdir
-  Config::CONFIG["topdir"] = curdir
-end
-$configure_args["--topdir"] ||= $curdir
-$ruby = arg_config("--ruby", File.join(Config::CONFIG["bindir"], CONFIG["ruby_install_name"]))
-
-split = Shellwords.method(:shellwords).to_proc
-
-EXPORT_PREFIX = config_string('EXPORT_PREFIX') {|s| s.strip}
-
-hdr = []
-config_string('COMMON_MACROS') do |s|
-  Shellwords.shellwords(s).each do |w|
-    hdr << "#define " + w.split(/=/, 2).join(" ")
-  end
-end
-config_string('COMMON_HEADERS') do |s|
-  Shellwords.shellwords(s).each {|s| hdr << "#include <#{s}>"}
-end
-COMMON_HEADERS = hdr.join("\n")
-COMMON_LIBS = config_string('COMMON_LIBS', &split) || []
-
-COMPILE_RULES = config_string('COMPILE_RULES', &split) || %w[.%s.%s:]
-RULE_SUBST = config_string('RULE_SUBST')
-COMPILE_C = config_string('COMPILE_C') || '$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<'
-COMPILE_CXX = config_string('COMPILE_CXX') || '$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<'
-TRY_LINK = config_string('TRY_LINK') ||
-  "$(CC) #{OUTFLAG}conftest $(INCFLAGS) $(CPPFLAGS) " \
-  "$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) $(LOCAL_LIBS) $(LIBS)"
-LINK_SO = config_string('LINK_SO') ||
-  if CONFIG["DLEXT"] == $OBJEXT
-    "ld $(DLDFLAGS) -r -o $@ $(OBJS)\n"
-  else
-    "$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \
-    "$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)"
-  end
-LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"'
-RPATHFLAG = config_string('RPATHFLAG') || ''
-LIBARG = config_string('LIBARG') || '-l%s'
-
-sep = config_string('BUILD_FILE_SEPARATOR') {|sep| ":/=#{sep}" if sep != "/"} || ""
-CLEANINGS = "
-clean:
-		@-$(RM) $(CLEANLIBS#{sep}) $(CLEANOBJS#{sep}) $(CLEANFILES#{sep})
-
-distclean:	clean
-		@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
-		@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES#{sep})
-
-realclean:	distclean
-"
-
-if not $extmk and /\A(extconf|makefile).rb\z/ =~ File.basename($0)
-  END {mkmf_failed($0)}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/monitor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/monitor.rb
deleted file mode 100644
index 4c146c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/monitor.rb
+++ /dev/null
@@ -1,352 +0,0 @@
-=begin
-
-= monitor.rb
-
-Copyright (C) 2001  Shugo Maeda <shugo at ruby-lang.org>
-
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
-
-== example
-
-This is a simple example.
-
-  require 'monitor.rb'
-  
-  buf = []
-  buf.extend(MonitorMixin)
-  empty_cond = buf.new_cond
-  
-  # consumer
-  Thread.start do
-    loop do
-      buf.synchronize do
-        empty_cond.wait_while { buf.empty? }
-        print buf.shift
-      end
-    end
-  end
-  
-  # producer
-  while line = ARGF.gets
-    buf.synchronize do
-      buf.push(line)
-      empty_cond.signal
-    end
-  end
-
-The consumer thread waits for the producer thread to push a line
-to buf while buf.empty?, and the producer thread (main thread)
-reads a line from ARGF and push it to buf, then call
-empty_cond.signal.
-
-=end
-  
-
-#
-# Adds monitor functionality to an arbitrary object by mixing the module with
-# +include+.  For example:
-#
-#    require 'monitor.rb'
-#    
-#    buf = []
-#    buf.extend(MonitorMixin)
-#    empty_cond = buf.new_cond
-#    
-#    # consumer
-#    Thread.start do
-#      loop do
-#        buf.synchronize do
-#          empty_cond.wait_while { buf.empty? }
-#          print buf.shift
-#        end
-#      end
-#    end
-#    
-#    # producer
-#    while line = ARGF.gets
-#      buf.synchronize do
-#        buf.push(line)
-#        empty_cond.signal
-#      end
-#    end
-# 
-# The consumer thread waits for the producer thread to push a line
-# to buf while buf.empty?, and the producer thread (main thread)
-# reads a line from ARGF and push it to buf, then call
-# empty_cond.signal.
-#
-module MonitorMixin
-  #
-  # FIXME: This isn't documented in Nutshell.
-  #
-  # Since MonitorMixin.new_cond returns a ConditionVariable, and the example
-  # above calls while_wait and signal, this class should be documented.
-  #
-  class ConditionVariable
-    class Timeout < Exception; end
-    
-    # Create a new timer with the argument timeout, and add the
-    # current thread to the list of waiters.  Then the thread is
-    # stopped.  It will be resumed when a corresponding #signal 
-    # occurs.
-    def wait(timeout = nil)
-      @monitor.instance_eval {mon_check_owner()}
-      timer = create_timer(timeout)
-      
-      Thread.critical = true
-      count = @monitor.instance_eval {mon_exit_for_cond()}
-      @waiters.push(Thread.current)
-
-      begin
-	Thread.stop
-        return true
-      rescue Timeout
-        return false
-      ensure
-	Thread.critical = true
-	begin
-	  if timer && timer.alive?
-	    Thread.kill(timer)
-	  end
-	  if @waiters.include?(Thread.current)  # interrupted?
-	    @waiters.delete(Thread.current)
-	  end
-	  @monitor.instance_eval {mon_enter_for_cond(count)}
-	ensure
-	  Thread.critical = false
-	end
-      end
-    end
-    
-
-    # call #wait while the supplied block returns +true+.
-    def wait_while
-      while yield
-	wait
-      end
-    end
-    
-    # call #wait until the supplied block returns +true+.
-    def wait_until
-      until yield
-	wait
-      end
-    end
-    
-    # Wake up and run the next waiter
-    def signal
-      @monitor.instance_eval {mon_check_owner()}
-      Thread.critical = true
-      t = @waiters.shift
-      t.wakeup if t
-      Thread.critical = false
-      Thread.pass
-    end
-    
-    # Wake up all the waiters.
-    def broadcast
-      @monitor.instance_eval {mon_check_owner()}
-      Thread.critical = true
-      for t in @waiters
-	t.wakeup
-      end
-      @waiters.clear
-      Thread.critical = false
-      Thread.pass
-    end
-    
-    def count_waiters
-      return @waiters.length
-    end
-    
-    private
-
-    def initialize(monitor)
-      @monitor = monitor
-      @waiters = []
-    end
-
-    def create_timer(timeout)
-      if timeout
-	waiter = Thread.current
-	return Thread.start {
-	  Thread.pass
-	  sleep(timeout)
-	  Thread.critical = true
-	  waiter.raise(Timeout.new)
-	}
-      else
-        return nil
-      end
-    end
-  end
-  
-  def self.extend_object(obj)
-    super(obj)
-    obj.instance_eval {mon_initialize()}
-  end
-  
-  #
-  # Attempts to enter exclusive section.  Returns +false+ if lock fails.
-  #
-  def mon_try_enter
-    result = false
-    Thread.critical = true
-    if @mon_owner.nil?
-      @mon_owner = Thread.current
-    end
-    if @mon_owner == Thread.current
-      @mon_count += 1
-      result = true
-    end
-    Thread.critical = false
-    return result
-  end
-  # For backward compatibility
-  alias try_mon_enter mon_try_enter
-
-  #
-  # Enters exclusive section.
-  #
-  def mon_enter
-    Thread.critical = true
-    mon_acquire(@mon_entering_queue)
-    @mon_count += 1
-  ensure
-    Thread.critical = false
-  end
-  
-  #
-  # Leaves exclusive section.
-  #
-  def mon_exit
-    mon_check_owner
-    Thread.critical = true
-    @mon_count -= 1
-    if @mon_count == 0
-      mon_release
-    end
-    Thread.critical = false
-    Thread.pass
-  end
-
-  #
-  # Enters exclusive section and executes the block.  Leaves the exclusive
-  # section automatically when the block exits.  See example under
-  # +MonitorMixin+.
-  #
-  def mon_synchronize
-    mon_enter
-    begin
-      yield
-    ensure
-      mon_exit
-    end
-  end
-  alias synchronize mon_synchronize
-  
-  #
-  # FIXME: This isn't documented in Nutshell.
-  # 
-  # Create a new condition variable for this monitor.
-  # This facilitates control of the monitor with #signal and #wait.
-  #
-  def new_cond
-    return ConditionVariable.new(self)
-  end
-
-  private
-
-  def initialize(*args)
-    super
-    mon_initialize
-  end
-
-  # called by initialize method to set defaults for instance variables.
-  def mon_initialize
-    @mon_owner = nil
-    @mon_count = 0
-    @mon_entering_queue = []
-    @mon_waiting_queue = []
-  end
-
-  # Throw a ThreadError exception if the current thread
-  # does't own the monitor
-  def mon_check_owner
-    if @mon_owner != Thread.current
-      raise ThreadError, "current thread not owner"
-    end
-  end
-
-  def mon_acquire(queue)
-    while @mon_owner && @mon_owner != Thread.current
-      queue.push(Thread.current)
-      Thread.stop
-      Thread.critical = true
-    end
-    @mon_owner = Thread.current
-  end
-
-  def mon_release
-    @mon_owner = nil
-    t = @mon_waiting_queue.shift
-    t = @mon_entering_queue.shift unless t
-    t.wakeup if t
-  end
-
-  def mon_enter_for_cond(count)
-    mon_acquire(@mon_waiting_queue)
-    @mon_count = count
-  end
-
-  def mon_exit_for_cond
-    count = @mon_count
-    @mon_count = 0
-    return count
-  ensure
-    mon_release
-  end
-end
-
-# Monitors provide means of mutual exclusion for Thread programming.
-# A critical region is created by means of the synchronize method,
-# which takes a block.
-# The condition variables (created with #new_cond) may be used 
-# to control the execution of a monitor with #signal and #wait.
-#
-# the Monitor class wraps MonitorMixin, and provides aliases
-#  alias try_enter try_mon_enter
-#  alias enter mon_enter
-#  alias exit mon_exit
-# to access its methods more concisely.
-class Monitor
-  include MonitorMixin
-  alias try_enter try_mon_enter
-  alias enter mon_enter
-  alias exit mon_exit
-end
-
-
-# Documentation comments:
-#  - All documentation comes from Nutshell.
-#  - MonitorMixin.new_cond appears in the example, but is not documented in
-#    Nutshell.
-#  - All the internals (internal modules Accessible and Initializable, class
-#    ConditionVariable) appear in RDoc.  It might be good to hide them, by
-#    making them private, or marking them :nodoc:, etc.
-#  - The entire example from the RD section at the top is replicated in the RDoc
-#    comment for MonitorMixin.  Does the RD section need to remain?
-#  - RDoc doesn't recognise aliases, so we have mon_synchronize documented, but
-#    not synchronize.
-#  - mon_owner is in Nutshell, but appears as an accessor in a separate module
-#    here, so is hard/impossible to RDoc.  Some other useful accessors
-#    (mon_count and some queue stuff) are also in this module, and don't appear
-#    directly in the RDoc output.
-#  - in short, it may be worth changing the code layout in this file to make the
-#    documentation easier
-
-# Local variables:
-# mode: Ruby
-# tab-width: 8
-# End:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mutex_m.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mutex_m.rb
deleted file mode 100644
index 8e0d42b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/mutex_m.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-#--
-#   mutex_m.rb - 
-#   	$Release Version: 3.0$
-#   	$Revision: 1.7 $
-#   	$Date: 1998/02/27 04:28:57 $
-#       Original from mutex.rb
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#       modified by matz
-#       patched by akira yamada
-#++
-#
-# == Usage
-#
-# Extend an object and use it like a Mutex object:
-#
-#   require "mutex_m.rb"
-#   obj = Object.new
-#   obj.extend Mutex_m
-#   # ...
-#
-# Or, include Mutex_m in a class to have its instances behave like a Mutex
-# object:
-#
-#   class Foo
-#     include Mutex_m
-#     # ...
-#   end
-#   
-#   obj = Foo.new
-
-module Mutex_m
-  def Mutex_m.define_aliases(cl)
-    cl.module_eval %q{
-      alias locked? mu_locked?
-      alias lock mu_lock
-      alias unlock mu_unlock
-      alias try_lock mu_try_lock
-      alias synchronize mu_synchronize
-    }
-  end  
-
-  def Mutex_m.append_features(cl)
-    super
-    define_aliases(cl) unless cl.instance_of?(Module)
-  end
-  
-  def Mutex_m.extend_object(obj)
-    super
-    obj.mu_extended
-  end
-
-  def mu_extended
-    unless (defined? locked? and
-	    defined? lock and
-	    defined? unlock and
-	    defined? try_lock and
-	    defined? synchronize)
-      Mutex_m.define_aliases(class<<self;self;end)
-    end
-    mu_initialize
-  end
-  
-  # locking 
-  def mu_synchronize
-    begin
-      mu_lock
-      yield
-    ensure
-      mu_unlock
-    end
-  end
-  
-  def mu_locked?
-    @mu_locked
-  end
-  
-  def mu_try_lock
-    result = false
-    Thread.critical = true
-    unless @mu_locked
-      @mu_locked = true
-      result = true
-    end
-    Thread.critical = false
-    result
-  end
-  
-  def mu_lock
-    while (Thread.critical = true; @mu_locked)
-      @mu_waiting.push Thread.current
-      Thread.stop
-    end
-    @mu_locked = true
-    Thread.critical = false
-    self
-  end
-  
-  def mu_unlock
-    return unless @mu_locked
-    Thread.critical = true
-    wait = @mu_waiting
-    @mu_waiting = []
-    @mu_locked = false
-    Thread.critical = false
-    for w in wait
-      w.run
-    end
-    self
-  end
-  
-  private
-  
-  def mu_initialize
-    @mu_waiting = []
-    @mu_locked = false;
-  end
-
-  def initialize(*args)
-    mu_initialize
-    super
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftp.rb
deleted file mode 100644
index bee60d5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftp.rb
+++ /dev/null
@@ -1,920 +0,0 @@
-# 
-# = net/ftp.rb - FTP Client Library
-# 
-# Written by Shugo Maeda <shugo at ruby-lang.org>.
-#
-# Documentation by Gavin Sinclair, sourced from "Programming Ruby" (Hunt/Thomas)
-# and "Ruby In a Nutshell" (Matsumoto), used with permission.
-# 
-# This library is distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# It is included in the Ruby standard library.
-#
-# See the Net::FTP class for an overview.
-#
-
-require "socket"
-require "monitor"
-
-module Net
-
-  # :stopdoc:
-  class FTPError < StandardError; end
-  class FTPReplyError < FTPError; end
-  class FTPTempError < FTPError; end 
-  class FTPPermError < FTPError; end 
-  class FTPProtoError < FTPError; end
-  # :startdoc:
-
-  #
-  # This class implements the File Transfer Protocol.  If you have used a
-  # command-line FTP program, and are familiar with the commands, you will be
-  # able to use this class easily.  Some extra features are included to take
-  # advantage of Ruby's style and strengths.
-  #
-  # == Example
-  # 
-  #   require 'net/ftp'
-  #
-  # === Example 1
-  #  
-  #   ftp = Net::FTP.new('ftp.netlab.co.jp')
-  #   ftp.login
-  #   files = ftp.chdir('pub/lang/ruby/contrib')
-  #   files = ftp.list('n*')
-  #   ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
-  #   ftp.close
-  #
-  # === Example 2
-  #
-  #   Net::FTP.open('ftp.netlab.co.jp') do |ftp|
-  #     ftp.login
-  #     files = ftp.chdir('pub/lang/ruby/contrib')
-  #     files = ftp.list('n*')
-  #     ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
-  #   end
-  #
-  # == Major Methods
-  #
-  # The following are the methods most likely to be useful to users:
-  # - FTP.open
-  # - #getbinaryfile
-  # - #gettextfile
-  # - #putbinaryfile
-  # - #puttextfile
-  # - #chdir
-  # - #nlst
-  # - #size
-  # - #rename
-  # - #delete
-  #
-  class FTP
-    include MonitorMixin
-    
-    # :stopdoc:
-    FTP_PORT = 21
-    CRLF = "\r\n"
-    DEFAULT_BLOCKSIZE = 4096
-    # :startdoc:
-    
-    # When +true+, transfers are performed in binary mode.  Default: +true+.
-    attr_accessor :binary
-
-    # When +true+, the connection is in passive mode.  Default: +false+.
-    attr_accessor :passive
-
-    # When +true+, all traffic to and from the server is written
-    # to +$stdout+.  Default: +false+.
-    attr_accessor :debug_mode
-
-    # Sets or retrieves the +resume+ status, which decides whether incomplete
-    # transfers are resumed or restarted.  Default: +false+.
-    attr_accessor :resume
-
-    # The server's welcome message.
-    attr_reader :welcome
-
-    # The server's last response code.
-    attr_reader :last_response_code
-    alias lastresp last_response_code
-
-    # The server's last response.
-    attr_reader :last_response
-    
-    #
-    # A synonym for <tt>FTP.new</tt>, but with a mandatory host parameter.
-    #
-    # If a block is given, it is passed the +FTP+ object, which will be closed
-    # when the block finishes, or when an exception is raised.
-    #
-    def FTP.open(host, user = nil, passwd = nil, acct = nil)
-      if block_given?
-        ftp = new(host, user, passwd, acct)
-        begin
-          yield ftp
-        ensure
-          ftp.close
-        end
-      else
-        new(host, user, passwd, acct)
-      end
-    end
-    
-    #
-    # Creates and returns a new +FTP+ object. If a +host+ is given, a connection
-    # is made. Additionally, if the +user+ is given, the given user name,
-    # password, and (optionally) account are used to log in.  See #login.
-    #
-    def initialize(host = nil, user = nil, passwd = nil, acct = nil)
-      super()
-      @binary = true
-      @passive = false
-      @debug_mode = false
-      @resume = false
-      if host
-	connect(host)
-	if user
-	  login(user, passwd, acct)
-	end
-      end
-    end
-
-    # Obsolete
-    def return_code
-      $stderr.puts("warning: Net::FTP#return_code is obsolete and do nothing")
-      return "\n"
-    end
-
-    # Obsolete
-    def return_code=(s)
-      $stderr.puts("warning: Net::FTP#return_code= is obsolete and do nothing")
-    end
-
-    def open_socket(host, port)
-      if defined? SOCKSsocket and ENV["SOCKS_SERVER"]
-	@passive = true
-	return SOCKSsocket.open(host, port)
-      else
-	return TCPSocket.open(host, port)
-      end
-    end
-    private :open_socket
-    
-    #
-    # Establishes an FTP connection to host, optionally overriding the default
-    # port. If the environment variable +SOCKS_SERVER+ is set, sets up the
-    # connection through a SOCKS proxy. Raises an exception (typically
-    # <tt>Errno::ECONNREFUSED</tt>) if the connection cannot be established.
-    #
-    def connect(host, port = FTP_PORT)
-      if @debug_mode
-	print "connect: ", host, ", ", port, "\n"
-      end
-      synchronize do
-	@sock = open_socket(host, port)
-	voidresp
-      end
-    end
-
-    #
-    # WRITEME or make private
-    #
-    def set_socket(sock, get_greeting = true)
-      synchronize do
-	@sock = sock
-	if get_greeting
-	  voidresp
-	end
-      end
-    end
-
-    def sanitize(s)
-      if s =~ /^PASS /i
-	return s[0, 5] + "*" * (s.length - 5)
-      else
-	return s
-      end
-    end
-    private :sanitize
-    
-    def putline(line)
-      if @debug_mode
-	print "put: ", sanitize(line), "\n"
-      end
-      line = line + CRLF
-      @sock.write(line)
-    end
-    private :putline
-    
-    def getline
-      line = @sock.readline # if get EOF, raise EOFError
-      line.sub!(/(\r\n|\n|\r)\z/n, "")
-      if @debug_mode
-	print "get: ", sanitize(line), "\n"
-      end
-      return line
-    end
-    private :getline
-    
-    def getmultiline
-      line = getline
-      buff = line
-      if line[3] == ?-
-	  code = line[0, 3]
-	begin
-	  line = getline
-	  buff << "\n" << line
-	end until line[0, 3] == code and line[3] != ?-
-      end
-      return buff << "\n"
-    end
-    private :getmultiline
-    
-    def getresp
-      @last_response = getmultiline
-      @last_response_code = @last_response[0, 3]
-      case @last_response_code
-      when /\A[123]/
-	return @last_response
-      when /\A4/
-	raise FTPTempError, @last_response
-      when /\A5/
-	raise FTPPermError, @last_response
-      else
-	raise FTPProtoError, @last_response
-      end
-    end
-    private :getresp
-    
-    def voidresp
-      resp = getresp
-      if resp[0] != ?2
-	raise FTPReplyError, resp
-      end
-    end
-    private :voidresp
-    
-    #
-    # Sends a command and returns the response.
-    #
-    def sendcmd(cmd)
-      synchronize do
-	putline(cmd)
-	return getresp
-      end
-    end
-    
-    #
-    # Sends a command and expect a response beginning with '2'.
-    #
-    def voidcmd(cmd)
-      synchronize do
-	putline(cmd)
-	voidresp
-      end
-    end
-    
-    def sendport(host, port)
-      af = (@sock.peeraddr)[0]
-      if af == "AF_INET"
-	cmd = "PORT " + (host.split(".") + port.divmod(256)).join(",")
-      elsif af == "AF_INET6"
-	cmd = sprintf("EPRT |2|%s|%d|", host, port)
-      else
-	raise FTPProtoError, host
-      end
-      voidcmd(cmd)
-    end
-    private :sendport
-    
-    def makeport
-      sock = TCPServer.open(@sock.addr[3], 0)
-      port = sock.addr[1]
-      host = sock.addr[3]
-      resp = sendport(host, port)
-      return sock
-    end
-    private :makeport
-    
-    def makepasv
-      if @sock.peeraddr[0] == "AF_INET"
-	host, port = parse227(sendcmd("PASV"))
-      else
-	host, port = parse229(sendcmd("EPSV"))
-	#     host, port = parse228(sendcmd("LPSV"))
-      end
-      return host, port
-    end
-    private :makepasv
-    
-    def transfercmd(cmd, rest_offset = nil)
-      if @passive
-	host, port = makepasv
-	conn = open_socket(host, port)
-	if @resume and rest_offset
-	  resp = sendcmd("REST " + rest_offset.to_s) 
-	  if resp[0] != ?3
-	    raise FTPReplyError, resp
-	  end
-	end
-	resp = sendcmd(cmd)
-	if resp[0] != ?1
-	  raise FTPReplyError, resp
-	end
-      else
-	sock = makeport
-	if @resume and rest_offset
-	  resp = sendcmd("REST " + rest_offset.to_s) 
-	  if resp[0] != ?3
-	    raise FTPReplyError, resp
-	  end
-	end
-	resp = sendcmd(cmd)
-	if resp[0] != ?1
-	  raise FTPReplyError, resp
-	end
-	conn = sock.accept
-	sock.close
-      end
-      return conn
-    end
-    private :transfercmd
-    
-    def getaddress
-      thishost = Socket.gethostname
-      if not thishost.index(".")
-	thishost = Socket.gethostbyname(thishost)[0]
-      end
-      if ENV.has_key?("LOGNAME")
-	realuser = ENV["LOGNAME"]
-      elsif ENV.has_key?("USER")
-	realuser = ENV["USER"]
-      else
-	realuser = "anonymous"
-      end
-      return realuser + "@" + thishost
-    end
-    private :getaddress
-    
-    #
-    # Logs in to the remote host. The session must have been previously
-    # connected.  If +user+ is the string "anonymous" and the +password+ is
-    # +nil+, a password of <tt>user at host</tt> is synthesized. If the +acct+
-    # parameter is not +nil+, an FTP ACCT command is sent following the
-    # successful login.  Raises an exception on error (typically
-    # <tt>Net::FTPPermError</tt>).
-    #
-    def login(user = "anonymous", passwd = nil, acct = nil)
-      if user == "anonymous" and passwd == nil
-	passwd = getaddress
-      end
-      
-      resp = ""
-      synchronize do
-	resp = sendcmd('USER ' + user)
-	if resp[0] == ?3
-	  resp = sendcmd('PASS ' + passwd)
-	end
-	if resp[0] == ?3
-	  resp = sendcmd('ACCT ' + acct)
-	end
-      end
-      if resp[0] != ?2
-	raise FTPReplyError, resp
-      end
-      @welcome = resp
-    end
-    
-    #
-    # Puts the connection into binary (image) mode, issues the given command,
-    # and fetches the data returned, passing it to the associated block in
-    # chunks of +blocksize+ characters. Note that +cmd+ is a server command
-    # (such as "RETR myfile").
-    #
-    def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
-      synchronize do
-	voidcmd("TYPE I")
-	conn = transfercmd(cmd, rest_offset)
-	loop do
-	  data = conn.read(blocksize)
-	  break if data == nil
-	  yield(data)
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into ASCII (text) mode, issues the given command, and
-    # passes the resulting data, one line at a time, to the associated block. If
-    # no block is given, prints the lines. Note that +cmd+ is a server command
-    # (such as "RETR myfile").
-    #
-    def retrlines(cmd) # :yield: line
-      synchronize do
-	voidcmd("TYPE A")
-	conn = transfercmd(cmd)
-	loop do
-	  line = conn.gets
-	  break if line == nil
-	  if line[-2, 2] == CRLF
-	    line = line[0 .. -3]
-	  elsif line[-1] == ?\n
-	    line = line[0 .. -2]
-	  end
-	  yield(line)
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into binary (image) mode, issues the given server-side
-    # command (such as "STOR myfile"), and sends the contents of the file named
-    # +file+ to the server. If the optional block is given, it also passes it
-    # the data, in chunks of +blocksize+ characters.
-    #
-    def storbinary(cmd, file, blocksize, rest_offset = nil, &block) # :yield: data
-      if rest_offset
-        file.seek(rest_offset, IO::SEEK_SET)
-      end
-      synchronize do
-	voidcmd("TYPE I")
-	conn = transfercmd(cmd, rest_offset)
-	loop do
-	  buf = file.read(blocksize)
-	  break if buf == nil
-	  conn.write(buf)
-	  yield(buf) if block
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into ASCII (text) mode, issues the given server-side
-    # command (such as "STOR myfile"), and sends the contents of the file
-    # named +file+ to the server, one line at a time. If the optional block is
-    # given, it also passes it the lines.
-    #
-    def storlines(cmd, file, &block) # :yield: line
-      synchronize do
-	voidcmd("TYPE A")
-	conn = transfercmd(cmd)
-	loop do
-	  buf = file.gets
-	  break if buf == nil
-	  if buf[-2, 2] != CRLF
-	    buf = buf.chomp + CRLF
-	  end
-	  conn.write(buf)
-	  yield(buf) if block
-	end
-	conn.close
-	voidresp
-      end
-    end
-
-    #
-    # Retrieves +remotefile+ in binary mode, storing the result in +localfile+.
-    # If a block is supplied, it is passed the retrieved data in +blocksize+
-    # chunks.
-    #
-    def getbinaryfile(remotefile, localfile = File.basename(remotefile),
-		      blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      if @resume
-	rest_offset = File.size?(localfile)
-	f = open(localfile, "a")
-      else
-	rest_offset = nil
-	f = open(localfile, "w")
-      end
-      begin
-	f.binmode
-	retrbinary("RETR " + remotefile, blocksize, rest_offset) do |data|
-	  f.write(data)
-	  yield(data) if block
-	end
-      ensure
-	f.close
-      end
-    end
-    
-    #
-    # Retrieves +remotefile+ in ASCII (text) mode, storing the result in
-    # +localfile+. If a block is supplied, it is passed the retrieved data one
-    # line at a time.
-    #
-    def gettextfile(remotefile, localfile = File.basename(remotefile), &block) # :yield: line
-      f = open(localfile, "w")
-      begin
-	retrlines("RETR " + remotefile) do |line|
-	  f.puts(line)
-	  yield(line) if block
-	end
-      ensure
-	f.close
-      end
-    end
-
-    #
-    # Retrieves +remotefile+ in whatever mode the session is set (text or
-    # binary).  See #gettextfile and #getbinaryfile.
-    #
-    def get(remotefile, localfile = File.basename(remotefile),
-	    blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      unless @binary
-	gettextfile(remotefile, localfile, &block)
-      else
-	getbinaryfile(remotefile, localfile, blocksize, &block)
-      end
-    end
-    
-    #
-    # Transfers +localfile+ to the server in binary mode, storing the result in
-    # +remotefile+. If a block is supplied, calls it, passing in the transmitted
-    # data in +blocksize+ chunks.
-    #
-    def putbinaryfile(localfile, remotefile = File.basename(localfile),
-		      blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      if @resume
-        begin
-          rest_offset = size(remotefile)
-        rescue Net::FTPPermError
-          rest_offset = nil
-        end
-      else
-	rest_offset = nil
-      end
-      f = open(localfile)
-      begin
-	f.binmode
-	storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block)
-      ensure
-	f.close
-      end
-    end
-    
-    #
-    # Transfers +localfile+ to the server in ASCII (text) mode, storing the result
-    # in +remotefile+. If callback or an associated block is supplied, calls it,
-    # passing in the transmitted data one line at a time.
-    #
-    def puttextfile(localfile, remotefile = File.basename(localfile), &block) # :yield: line
-      f = open(localfile)
-      begin
-	storlines("STOR " + remotefile, f, &block)
-      ensure
-	f.close
-      end
-    end
-
-    #
-    # Transfers +localfile+ to the server in whatever mode the session is set
-    # (text or binary).  See #puttextfile and #putbinaryfile.
-    #
-    def put(localfile, remotefile = File.basename(localfile),
-	    blocksize = DEFAULT_BLOCKSIZE, &block)
-      unless @binary
-	puttextfile(localfile, remotefile, &block)
-      else
-	putbinaryfile(localfile, remotefile, blocksize, &block)
-      end
-    end
-
-    #
-    # Sends the ACCT command.  TODO: more info.
-    #
-    def acct(account)
-      cmd = "ACCT " + account
-      voidcmd(cmd)
-    end
-    
-    #
-    # Returns an array of filenames in the remote directory.
-    #
-    def nlst(dir = nil)
-      cmd = "NLST"
-      if dir
-	cmd = cmd + " " + dir
-      end
-      files = []
-      retrlines(cmd) do |line|
-	files.push(line)
-      end
-      return files
-    end
-    
-    #
-    # Returns an array of file information in the directory (the output is like
-    # `ls -l`).  If a block is given, it iterates through the listing.
-    #
-    def list(*args, &block) # :yield: line
-      cmd = "LIST"
-      args.each do |arg|
-	cmd = cmd + " " + arg
-      end
-      if block
-	retrlines(cmd, &block)
-      else
-	lines = []
-	retrlines(cmd) do |line|
-	  lines << line
-	end
-	return lines
-      end
-    end
-    alias ls list
-    alias dir list
-    
-    #
-    # Renames a file on the server.
-    #
-    def rename(fromname, toname)
-      resp = sendcmd("RNFR " + fromname)
-      if resp[0] != ?3
-	raise FTPReplyError, resp
-      end
-      voidcmd("RNTO " + toname)
-    end
-    
-    #
-    # Deletes a file on the server.
-    #
-    def delete(filename)
-      resp = sendcmd("DELE " + filename)
-      if resp[0, 3] == "250"
-	return
-      elsif resp[0] == ?5
-	raise FTPPermError, resp
-      else
-	raise FTPReplyError, resp
-      end
-    end
-    
-    #
-    # Changes the (remote) directory.
-    #
-    def chdir(dirname)
-      if dirname == ".."
-	begin
-	  voidcmd("CDUP")
-	  return
-	rescue FTPPermError
-	  if $![0, 3] != "500"
-	    raise FTPPermError, $!
-	  end
-	end
-      end
-      cmd = "CWD " + dirname
-      voidcmd(cmd)
-    end
-    
-    #
-    # Returns the size of the given (remote) filename.
-    #
-    def size(filename)
-      voidcmd("TYPE I")
-      resp = sendcmd("SIZE " + filename)
-      if resp[0, 3] != "213" 
-	raise FTPReplyError, resp
-      end
-      return resp[3..-1].strip.to_i
-    end
-    
-    MDTM_REGEXP = /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/  # :nodoc:
-    
-    #
-    # Returns the last modification time of the (remote) file.  If +local+ is
-    # +true+, it is returned as a local time, otherwise it's a UTC time.
-    #
-    def mtime(filename, local = false)
-      str = mdtm(filename)
-      ary = str.scan(MDTM_REGEXP)[0].collect {|i| i.to_i}
-      return local ? Time.local(*ary) : Time.gm(*ary)
-    end
-    
-    #
-    # Creates a remote directory.
-    #
-    def mkdir(dirname)
-      resp = sendcmd("MKD " + dirname)
-      return parse257(resp)
-    end
-    
-    #
-    # Removes a remote directory.
-    #
-    def rmdir(dirname)
-      voidcmd("RMD " + dirname)
-    end
-    
-    #
-    # Returns the current remote directory.
-    #
-    def pwd
-      resp = sendcmd("PWD")
-      return parse257(resp)
-    end
-    alias getdir pwd
-    
-    #
-    # Returns system information.
-    #
-    def system
-      resp = sendcmd("SYST")
-      if resp[0, 3] != "215"
-	raise FTPReplyError, resp
-      end
-      return resp[4 .. -1]
-    end
-    
-    #
-    # Aborts the previous command (ABOR command).
-    #
-    def abort
-      line = "ABOR" + CRLF
-      print "put: ABOR\n" if @debug_mode
-      @sock.send(line, Socket::MSG_OOB)
-      resp = getmultiline
-      unless ["426", "226", "225"].include?(resp[0, 3])
-	raise FTPProtoError, resp
-      end
-      return resp
-    end
-    
-    #
-    # Returns the status (STAT command).
-    #
-    def status
-      line = "STAT" + CRLF
-      print "put: STAT\n" if @debug_mode
-      @sock.send(line, Socket::MSG_OOB)
-      return getresp
-    end
-    
-    #
-    # Issues the MDTM command.  TODO: more info.
-    #
-    def mdtm(filename)
-      resp = sendcmd("MDTM " + filename)
-      if resp[0, 3] == "213"
-	return resp[3 .. -1].strip
-      end
-    end
-    
-    #
-    # Issues the HELP command.
-    #
-    def help(arg = nil)
-      cmd = "HELP"
-      if arg
-	cmd = cmd + " " + arg
-      end
-      sendcmd(cmd)
-    end
-    
-    #
-    # Exits the FTP session.
-    #
-    def quit
-      voidcmd("QUIT")
-    end
-
-    #
-    # Issues a NOOP command.
-    #
-    def noop
-      voidcmd("NOOP")
-    end
-
-    #
-    # Issues a SITE command.
-    #
-    def site(arg)
-      cmd = "SITE " + arg
-      voidcmd(cmd)
-    end
-    
-    #
-    # Closes the connection.  Further operations are impossible until you open
-    # a new connection with #connect.
-    #
-    def close
-      @sock.close if @sock and not @sock.closed?
-    end
-    
-    #
-    # Returns +true+ iff the connection is closed.
-    #
-    def closed?
-      @sock == nil or @sock.closed?
-    end
-    
-    def parse227(resp)
-      if resp[0, 3] != "227"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(",")
-      if numbers.length != 6
-	raise FTPProtoError, resp
-      end
-      host = numbers[0, 4].join(".")
-      port = (numbers[4].to_i << 8) + numbers[5].to_i
-      return host, port
-    end
-    private :parse227
-    
-    def parse228(resp)
-      if resp[0, 3] != "228"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(",")
-      if numbers[0] == "4"
-	if numbers.length != 9 || numbers[1] != "4" || numbers[2 + 4] != "2"
-	  raise FTPProtoError, resp
-	end
-	host = numbers[2, 4].join(".")
-	port = (numbers[7].to_i << 8) + numbers[8].to_i
-      elsif numbers[0] == "6"
-	if numbers.length != 21 || numbers[1] != "16" || numbers[2 + 16] != "2"
-	  raise FTPProtoError, resp
-	end
-	v6 = ["", "", "", "", "", "", "", ""]
-	for i in 0 .. 7
-	  v6[i] = sprintf("%02x%02x", numbers[(i * 2) + 2].to_i,
-			  numbers[(i * 2) + 3].to_i)
-	end
-	host = v6[0, 8].join(":")
-	port = (numbers[19].to_i << 8) + numbers[20].to_i
-      end 
-      return host, port
-    end
-    private :parse228
-    
-    def parse229(resp)
-      if resp[0, 3] != "229"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(resp[left + 1, 1])
-      if numbers.length != 4
-	raise FTPProtoError, resp
-      end
-      port = numbers[3].to_i
-      host = (@sock.peeraddr())[3]
-      return host, port
-    end
-    private :parse229
-    
-    def parse257(resp)
-      if resp[0, 3] != "257"
-	raise FTPReplyError, resp
-      end
-      if resp[3, 2] != ' "'
-	return ""
-      end
-      dirname = ""
-      i = 5
-      n = resp.length
-      while i < n
-	c = resp[i, 1]
-	i = i + 1
-	if c == '"'
-	  if i > n or resp[i, 1] != '"'
-	    break
-	  end
-	  i = i + 1
-	end
-	dirname = dirname + c
-      end
-      return dirname
-    end
-    private :parse257
-  end
-
-end
-
-
-# Documentation comments:
-#  - sourced from pickaxe and nutshell, with improvements (hopefully)
-#  - three methods should be private (search WRITEME)
-#  - two methods need more information (search TODO)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftptls.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftptls.rb
deleted file mode 100644
index 4c24542..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/ftptls.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-=begin
-= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2003 Blaz Grilc <farmer at gmx.co.uk>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Requirements
-
-= Version
-  $Id: ftptls.rb 16878 2008-06-07 16:16:46Z shyouhei $
-  
-= Notes
-  Tested on FreeBSD 5-CURRENT and 4-STABLE
-  - ruby 1.6.8 (2003-01-17) [i386-freebsd5]
-  - OpenSSL 0.9.7a Feb 19 2003
-  - ruby-openssl-0.2.0.p0
-  tested on ftp server: glftpd 1.30
-=end
-
-require 'socket'
-require 'openssl'
-require 'net/ftp'
-
-module Net
-  class FTPTLS < FTP
-    def connect(host, port=FTP_PORT)
-      @hostname = host
-      super
-    end
-
-    def login(user = "anonymous", passwd = nil, acct = nil)
-       store = OpenSSL::X509::Store.new
-       store.set_default_paths
-       ctx = OpenSSL::SSL::SSLContext.new('SSLv23')
-       ctx.cert_store = store
-       ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
-       ctx.key = nil
-       ctx.cert = nil
-       voidcmd("AUTH TLS")
-       @sock = OpenSSL::SSL::SSLSocket.new(@sock, ctx)
-       @sock.connect
-       @sock.post_connection_check(@hostname)
-       super(user, passwd, acct)
-       voidcmd("PBSZ 0")
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/http.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/http.rb
deleted file mode 100644
index 7831618..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/http.rb
+++ /dev/null
@@ -1,2277 +0,0 @@
-#
-# = net/http.rb
-#
-# Copyright (c) 1999-2006 Yukihiro Matsumoto
-# Copyright (c) 1999-2006 Minero Aoki
-# Copyright (c) 2001 GOTOU Yuuzou
-# 
-# Written and maintained by Minero Aoki <aamine at loveruby.net>.
-# HTTPS support added by GOTOU Yuuzou <gotoyuzo at notwork.org>.
-#
-# This file is derived from "http-access.rb".
-#
-# Documented by Minero Aoki; converted to RDoc by William Webber.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms of ruby itself ---
-# Ruby Distribution License or GNU General Public License.
-#
-# See Net::HTTP for an overview and examples. 
-# 
-# NOTE: You can find Japanese version of this document here:
-# http://www.ruby-lang.org/ja/man/?cmd=view;name=net%2Fhttp.rb
-# 
-#--
-# $Id: http.rb 16878 2008-06-07 16:16:46Z shyouhei $
-#++ 
-
-require 'net/protocol'
-require 'uri'
-
-module Net   #:nodoc:
-
-  # :stopdoc:
-  class HTTPBadResponse < StandardError; end
-  class HTTPHeaderSyntaxError < StandardError; end
-  # :startdoc:
-
-  # == What Is This Library?
-  # 
-  # This library provides your program functions to access WWW
-  # documents via HTTP, Hyper Text Transfer Protocol version 1.1.
-  # For details of HTTP, refer [RFC2616]
-  # (http://www.ietf.org/rfc/rfc2616.txt).
-  # 
-  # == Examples
-  # 
-  # === Getting Document From WWW Server
-  # 
-  # Example #1: Simple GET+print
-  # 
-  #     require 'net/http'
-  #     Net::HTTP.get_print 'www.example.com', '/index.html'
-  # 
-  # Example #2: Simple GET+print by URL
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #     Net::HTTP.get_print URI.parse('http://www.example.com/index.html')
-  # 
-  # Example #3: More generic GET+print
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #
-  #     url = URI.parse('http://www.example.com/index.html')
-  #     res = Net::HTTP.start(url.host, url.port) {|http|
-  #       http.get('/index.html')
-  #     }
-  #     puts res.body
-  #
-  # Example #4: More generic GET+print
-  # 
-  #     require 'net/http'
-  #
-  #     url = URI.parse('http://www.example.com/index.html')
-  #     req = Net::HTTP::Get.new(url.path)
-  #     res = Net::HTTP.start(url.host, url.port) {|http|
-  #       http.request(req)
-  #     }
-  #     puts res.body
-  # 
-  # === Posting Form Data
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #
-  #     #1: Simple POST
-  #     res = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),
-  #                               {'q'=>'ruby', 'max'=>'50'})
-  #     puts res.body
-  #
-  #     #2: POST with basic authentication
-  #     res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),
-  #                                         {'from'=>'2005-01-01', 'to'=>'2005-03-31'})
-  #     puts res.body
-  #
-  #     #3: Detailed control
-  #     url = URI.parse('http://www.example.com/todo.cgi')
-  #     req = Net::HTTP::Post.new(url.path)
-  #     req.basic_auth 'jack', 'pass'
-  #     req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
-  #     res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
-  #     case res
-  #     when Net::HTTPSuccess, Net::HTTPRedirection
-  #       # OK
-  #     else
-  #       res.error!
-  #     end
-  # 
-  # === Accessing via Proxy
-  # 
-  # Net::HTTP.Proxy creates http proxy class. It has same
-  # methods of Net::HTTP but its instances always connect to
-  # proxy, instead of given host.
-  # 
-  #     require 'net/http'
-  # 
-  #     proxy_addr = 'your.proxy.host'
-  #     proxy_port = 8080
-  #             :
-  #     Net::HTTP::Proxy(proxy_addr, proxy_port).start('www.example.com') {|http|
-  #       # always connect to your.proxy.addr:8080
-  #             :
-  #     }
-  # 
-  # Since Net::HTTP.Proxy returns Net::HTTP itself when proxy_addr is nil,
-  # there's no need to change code if there's proxy or not.
-  # 
-  # There are two additional parameters in Net::HTTP.Proxy which allow to
-  # specify proxy user name and password:
-  # 
-  #     Net::HTTP::Proxy(proxy_addr, proxy_port, proxy_user = nil, proxy_pass = nil)
-  # 
-  # You may use them to work with authorization-enabled proxies:
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #     
-  #     proxy_host = 'your.proxy.host'
-  #     proxy_port = 8080
-  #     uri = URI.parse(ENV['http_proxy'])
-  #     proxy_user, proxy_pass = uri.userinfo.split(/:/) if uri.userinfo
-  #     Net::HTTP::Proxy(proxy_host, proxy_port,
-  #                      proxy_user, proxy_pass).start('www.example.com') {|http|
-  #       # always connect to your.proxy.addr:8080 using specified username and password
-  #             :
-  #     }
-  #
-  # Note that net/http never rely on HTTP_PROXY environment variable.
-  # If you want to use proxy, set it explicitly.
-  # 
-  # === Following Redirection
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  # 
-  #     def fetch(uri_str, limit = 10)
-  #       # You should choose better exception. 
-  #       raise ArgumentError, 'HTTP redirect too deep' if limit == 0
-  # 
-  #       response = Net::HTTP.get_response(URI.parse(uri_str))
-  #       case response
-  #       when Net::HTTPSuccess     then response
-  #       when Net::HTTPRedirection then fetch(response['location'], limit - 1)
-  #       else
-  #         response.error!
-  #       end
-  #     end
-  # 
-  #     print fetch('http://www.ruby-lang.org')
-  # 
-  # Net::HTTPSuccess and Net::HTTPRedirection is a HTTPResponse class.
-  # All HTTPResponse objects belong to its own response class which
-  # indicate HTTP result status. For details of response classes,
-  # see section "HTTP Response Classes".
-  # 
-  # === Basic Authentication
-  # 
-  #     require 'net/http'
-  # 
-  #     Net::HTTP.start('www.example.com') {|http|
-  #       req = Net::HTTP::Get.new('/secret-page.html')
-  #       req.basic_auth 'account', 'password'
-  #       response = http.request(req)
-  #       print response.body
-  #     }
-  # 
-  # === HTTP Request Classes
-  #
-  # Here is HTTP request class hierarchy.
-  #
-  #   Net::HTTPRequest
-  #       Net::HTTP::Get
-  #       Net::HTTP::Head
-  #       Net::HTTP::Post
-  #       Net::HTTP::Put
-  #       Net::HTTP::Proppatch
-  #       Net::HTTP::Lock
-  #       Net::HTTP::Unlock
-  #       Net::HTTP::Options
-  #       Net::HTTP::Propfind
-  #       Net::HTTP::Delete
-  #       Net::HTTP::Move
-  #       Net::HTTP::Copy
-  #       Net::HTTP::Mkcol
-  #       Net::HTTP::Trace
-  #
-  # === HTTP Response Classes
-  #
-  # Here is HTTP response class hierarchy.
-  # All classes are defined in Net module.
-  #
-  #   HTTPResponse
-  #       HTTPUnknownResponse
-  #       HTTPInformation                    # 1xx
-  #           HTTPContinue                       # 100
-  #           HTTPSwitchProtocl                  # 101
-  #       HTTPSuccess                        # 2xx
-  #           HTTPOK                             # 200
-  #           HTTPCreated                        # 201
-  #           HTTPAccepted                       # 202
-  #           HTTPNonAuthoritativeInformation    # 203
-  #           HTTPNoContent                      # 204
-  #           HTTPResetContent                   # 205
-  #           HTTPPartialContent                 # 206
-  #       HTTPRedirection                    # 3xx
-  #           HTTPMultipleChoice                 # 300
-  #           HTTPMovedPermanently               # 301
-  #           HTTPFound                          # 302
-  #           HTTPSeeOther                       # 303
-  #           HTTPNotModified                    # 304
-  #           HTTPUseProxy                       # 305
-  #           HTTPTemporaryRedirect              # 307
-  #       HTTPClientError                    # 4xx
-  #           HTTPBadRequest                     # 400
-  #           HTTPUnauthorized                   # 401
-  #           HTTPPaymentRequired                # 402
-  #           HTTPForbidden                      # 403
-  #           HTTPNotFound                       # 404
-  #           HTTPMethodNotAllowed               # 405
-  #           HTTPNotAcceptable                  # 406
-  #           HTTPProxyAuthenticationRequired    # 407
-  #           HTTPRequestTimeOut                 # 408
-  #           HTTPConflict                       # 409
-  #           HTTPGone                           # 410
-  #           HTTPLengthRequired                 # 411
-  #           HTTPPreconditionFailed             # 412
-  #           HTTPRequestEntityTooLarge          # 413
-  #           HTTPRequestURITooLong              # 414
-  #           HTTPUnsupportedMediaType           # 415
-  #           HTTPRequestedRangeNotSatisfiable   # 416
-  #           HTTPExpectationFailed              # 417
-  #       HTTPServerError                    # 5xx
-  #           HTTPInternalServerError            # 500
-  #           HTTPNotImplemented                 # 501
-  #           HTTPBadGateway                     # 502
-  #           HTTPServiceUnavailable             # 503
-  #           HTTPGatewayTimeOut                 # 504
-  #           HTTPVersionNotSupported            # 505
-  # 
-  # == Switching Net::HTTP versions
-  # 
-  # You can use net/http.rb 1.1 features (bundled with Ruby 1.6)
-  # by calling HTTP.version_1_1. Calling Net::HTTP.version_1_2
-  # allows you to use 1.2 features again.
-  # 
-  #     # example
-  #     Net::HTTP.start {|http1| ...(http1 has 1.2 features)... }
-  # 
-  #     Net::HTTP.version_1_1
-  #     Net::HTTP.start {|http2| ...(http2 has 1.1 features)... }
-  # 
-  #     Net::HTTP.version_1_2
-  #     Net::HTTP.start {|http3| ...(http3 has 1.2 features)... }
-  # 
-  # This function is NOT thread-safe.
-  #
-  class HTTP < Protocol
-
-    # :stopdoc:
-    Revision = %q$Revision: 16878 $.split[1]
-    HTTPVersion = '1.1'
-    @newimpl = true
-    # :startdoc:
-
-    # Turns on net/http 1.2 (ruby 1.8) features.
-    # Defaults to ON in ruby 1.8.
-    #
-    # I strongly recommend to call this method always.
-    #
-    #   require 'net/http'
-    #   Net::HTTP.version_1_2
-    #
-    def HTTP.version_1_2
-      @newimpl = true
-    end
-
-    # Turns on net/http 1.1 (ruby 1.6) features.
-    # Defaults to OFF in ruby 1.8.
-    def HTTP.version_1_1
-      @newimpl = false
-    end
-
-    # true if net/http is in version 1.2 mode.
-    # Defaults to true.
-    def HTTP.version_1_2?
-      @newimpl
-    end
-
-    # true if net/http is in version 1.1 compatible mode.
-    # Defaults to true.
-    def HTTP.version_1_1?
-      not @newimpl
-    end
-
-    class << HTTP
-      alias is_version_1_1? version_1_1?   #:nodoc:
-      alias is_version_1_2? version_1_2?   #:nodoc:
-    end
-
-    #
-    # short cut methods
-    #
-
-    #
-    # Get body from target and output it to +$stdout+.  The
-    # target can either be specified as (+uri+), or as
-    # (+host+, +path+, +port+ = 80); so: 
-    #
-    #    Net::HTTP.get_print URI.parse('http://www.example.com/index.html')
-    #
-    # or:
-    #
-    #    Net::HTTP.get_print 'www.example.com', '/index.html'
-    #
-    def HTTP.get_print(uri_or_host, path = nil, port = nil)
-      get_response(uri_or_host, path, port) {|res|
-        res.read_body do |chunk|
-          $stdout.print chunk
-        end
-      }
-      nil
-    end
-
-    # Send a GET request to the target and return the response
-    # as a string.  The target can either be specified as
-    # (+uri+), or as (+host+, +path+, +port+ = 80); so:
-    # 
-    #    print Net::HTTP.get(URI.parse('http://www.example.com/index.html'))
-    #
-    # or:
-    #
-    #    print Net::HTTP.get('www.example.com', '/index.html')
-    #
-    def HTTP.get(uri_or_host, path = nil, port = nil)
-      get_response(uri_or_host, path, port).body
-    end
-
-    # Send a GET request to the target and return the response
-    # as a Net::HTTPResponse object.  The target can either be specified as
-    # (+uri+), or as (+host+, +path+, +port+ = 80); so:
-    # 
-    #    res = Net::HTTP.get_response(URI.parse('http://www.example.com/index.html'))
-    #    print res.body
-    #
-    # or:
-    #
-    #    res = Net::HTTP.get_response('www.example.com', '/index.html')
-    #    print res.body
-    #
-    def HTTP.get_response(uri_or_host, path = nil, port = nil, &block)
-      if path
-        host = uri_or_host
-        new(host, port || HTTP.default_port).start {|http|
-          return http.request_get(path, &block)
-        }
-      else
-        uri = uri_or_host
-        new(uri.host, uri.port).start {|http|
-          return http.request_get(uri.request_uri, &block)
-        }
-      end
-    end
-
-    # Posts HTML form data to the +URL+.
-    # Form data must be represented as a Hash of String to String, e.g:
-    #
-    #   { "cmd" => "search", "q" => "ruby", "max" => "50" }
-    #
-    # This method also does Basic Authentication iff +URL+.user exists.
-    #
-    # Example:
-    #
-    #   require 'net/http'
-    #   require 'uri'
-    #
-    #   HTTP.post_form URI.parse('http://www.example.com/search.cgi'),
-    #                  { "q" => "ruby", "max" => "50" }
-    #
-    def HTTP.post_form(url, params)
-      req = Post.new(url.path)
-      req.form_data = params
-      req.basic_auth url.user, url.password if url.user
-      new(url.host, url.port).start {|http|
-        http.request(req)
-      }
-    end
-
-    #
-    # HTTP session management
-    #
-
-    # The default port to use for HTTP requests; defaults to 80.
-    def HTTP.default_port
-      http_default_port()
-    end
-
-    # The default port to use for HTTP requests; defaults to 80.
-    def HTTP.http_default_port
-      80
-    end
-
-    # The default port to use for HTTPS requests; defaults to 443.
-    def HTTP.https_default_port
-      443
-    end
-
-    def HTTP.socket_type   #:nodoc: obsolete
-      BufferedIO
-    end
-
-    # creates a new Net::HTTP object and opens its TCP connection and 
-    # HTTP session.  If the optional block is given, the newly 
-    # created Net::HTTP object is passed to it and closed when the 
-    # block finishes.  In this case, the return value of this method
-    # is the return value of the block.  If no block is given, the
-    # return value of this method is the newly created Net::HTTP object
-    # itself, and the caller is responsible for closing it upon completion.
-    def HTTP.start(address, port = nil, p_addr = nil, p_port = nil, p_user = nil, p_pass = nil, &block) # :yield: +http+
-      new(address, port, p_addr, p_port, p_user, p_pass).start(&block)
-    end
-
-    class << HTTP
-      alias newobj new
-    end
-
-    # Creates a new Net::HTTP object.
-    # If +proxy_addr+ is given, creates an Net::HTTP object with proxy support.
-    # This method does not open the TCP connection.
-    def HTTP.new(address, port = nil, p_addr = nil, p_port = nil, p_user = nil, p_pass = nil)
-      h = Proxy(p_addr, p_port, p_user, p_pass).newobj(address, port)
-      h.instance_eval {
-        @newimpl = ::Net::HTTP.version_1_2?
-      }
-      h
-    end
-
-    # Creates a new Net::HTTP object for the specified +address+.
-    # This method does not open the TCP connection.
-    def initialize(address, port = nil)
-      @address = address
-      @port    = (port || HTTP.default_port)
-      @curr_http_version = HTTPVersion
-      @seems_1_0_server = false
-      @close_on_empty_response = false
-      @socket  = nil
-      @started = false
-      @open_timeout = nil
-      @read_timeout = 60
-      @debug_output = nil
-      @use_ssl = false
-      @ssl_context = nil
-    end
-
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} open=#{started?}>"
-    end
-
-    # *WARNING* This method causes serious security hole.
-    # Never use this method in production code.
-    #
-    # Set an output stream for debugging.
-    #
-    #   http = Net::HTTP.new
-    #   http.set_debug_output $stderr
-    #   http.start { .... }
-    #
-    def set_debug_output(output)
-      warn 'Net::HTTP#set_debug_output called after HTTP started' if started?
-      @debug_output = output
-    end
-
-    # The host name to connect to.
-    attr_reader :address
-
-    # The port number to connect to.
-    attr_reader :port
-
-    # Seconds to wait until connection is opened.
-    # If the HTTP object cannot open a connection in this many seconds,
-    # it raises a TimeoutError exception.
-    attr_accessor :open_timeout
-
-    # Seconds to wait until reading one block (by one read(2) call).
-    # If the HTTP object cannot open a connection in this many seconds,
-    # it raises a TimeoutError exception.
-    attr_reader :read_timeout
-
-    # Setter for the read_timeout attribute.
-    def read_timeout=(sec)
-      @socket.read_timeout = sec if @socket
-      @read_timeout = sec
-    end
-
-    # returns true if the HTTP session is started.
-    def started?
-      @started
-    end
-
-    alias active? started?   #:nodoc: obsolete
-
-    attr_accessor :close_on_empty_response
-
-    # returns true if use SSL/TLS with HTTP.
-    def use_ssl?
-      false   # redefined in net/https
-    end
-
-    # Opens TCP connection and HTTP session.
-    # 
-    # When this method is called with block, gives a HTTP object
-    # to the block and closes the TCP connection / HTTP session
-    # after the block executed.
-    #
-    # When called with a block, returns the return value of the
-    # block; otherwise, returns self.
-    #
-    def start  # :yield: http
-      raise IOError, 'HTTP session already opened' if @started
-      if block_given?
-        begin
-          do_start
-          return yield(self)
-        ensure
-          do_finish
-        end
-      end
-      do_start
-      self
-    end
-
-    def do_start
-      connect
-      @started = true
-    end
-    private :do_start
-
-    def connect
-      D "opening connection to #{conn_address()}..."
-      s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) }
-      D "opened"
-      if use_ssl?
-        unless @ssl_context.verify_mode
-          warn "warning: peer certificate won't be verified in this SSL session"
-          @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
-        end
-        s = OpenSSL::SSL::SSLSocket.new(s, @ssl_context)
-        s.sync_close = true
-      end
-      @socket = BufferedIO.new(s)
-      @socket.read_timeout = @read_timeout
-      @socket.debug_output = @debug_output
-      if use_ssl?
-        if proxy?
-          @socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
-                                    @address, @port, HTTPVersion)
-          @socket.writeline "Host: #{@address}:#{@port}"
-          if proxy_user
-            credential = ["#{proxy_user}:#{proxy_pass}"].pack('m')
-            credential.delete!("\r\n")
-            @socket.writeline "Proxy-Authorization: Basic #{credential}"
-          end
-          @socket.writeline ''
-          HTTPResponse.read_new(@socket).value
-        end
-        s.connect
-        if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
-          s.post_connection_check(@address)
-        end
-      end
-      on_connect
-    end
-    private :connect
-
-    def on_connect
-    end
-    private :on_connect
-
-    # Finishes HTTP session and closes TCP connection.
-    # Raises IOError if not started.
-    def finish
-      raise IOError, 'HTTP session not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      @started = false
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    #
-    # proxy
-    #
-
-    public
-
-    # no proxy
-    @is_proxy_class = false
-    @proxy_addr = nil
-    @proxy_port = nil
-    @proxy_user = nil
-    @proxy_pass = nil
-
-    # Creates an HTTP proxy class.
-    # Arguments are address/port of proxy host and username/password
-    # if authorization on proxy server is required.
-    # You can replace the HTTP class with created proxy class.
-    # 
-    # If ADDRESS is nil, this method returns self (Net::HTTP).
-    # 
-    #     # Example
-    #     proxy_class = Net::HTTP::Proxy('proxy.example.com', 8080)
-    #                     :
-    #     proxy_class.start('www.ruby-lang.org') {|http|
-    #       # connecting proxy.foo.org:8080
-    #                     :
-    #     }
-    # 
-    def HTTP.Proxy(p_addr, p_port = nil, p_user = nil, p_pass = nil)
-      return self unless p_addr
-      delta = ProxyDelta
-      proxyclass = Class.new(self)
-      proxyclass.module_eval {
-        include delta
-        # with proxy
-        @is_proxy_class = true
-        @proxy_address = p_addr
-        @proxy_port    = p_port || default_port()
-        @proxy_user    = p_user
-        @proxy_pass    = p_pass
-      }
-      proxyclass
-    end
-
-    class << HTTP
-      # returns true if self is a class which was created by HTTP::Proxy.
-      def proxy_class?
-        @is_proxy_class
-      end
-
-      attr_reader :proxy_address
-      attr_reader :proxy_port
-      attr_reader :proxy_user
-      attr_reader :proxy_pass
-    end
-
-    # True if self is a HTTP proxy class.
-    def proxy?
-      self.class.proxy_class?
-    end
-
-    # Address of proxy host. If self does not use a proxy, nil.
-    def proxy_address
-      self.class.proxy_address
-    end
-
-    # Port number of proxy host. If self does not use a proxy, nil.
-    def proxy_port
-      self.class.proxy_port
-    end
-
-    # User name for accessing proxy. If self does not use a proxy, nil.
-    def proxy_user
-      self.class.proxy_user
-    end
-
-    # User password for accessing proxy. If self does not use a proxy, nil.
-    def proxy_pass
-      self.class.proxy_pass
-    end
-
-    alias proxyaddr proxy_address   #:nodoc: obsolete
-    alias proxyport proxy_port      #:nodoc: obsolete
-
-    private
-
-    # without proxy
-
-    def conn_address
-      address()
-    end
-
-    def conn_port
-      port()
-    end
-
-    def edit_path(path)
-      path
-    end
-
-    module ProxyDelta   #:nodoc: internal use only
-      private
-
-      def conn_address
-        proxy_address()
-      end
-
-      def conn_port
-        proxy_port()
-      end
-
-      def edit_path(path)
-        use_ssl? ? path : "http://#{addr_port()}#{path}"
-      end
-    end
-
-    #
-    # HTTP operations
-    #
-
-    public
-
-    # Gets data from +path+ on the connected-to host.
-    # +header+ must be a Hash like { 'Accept' => '*/*', ... }.
-    #
-    # In version 1.1 (ruby 1.6), this method returns a pair of objects,
-    # a Net::HTTPResponse object and the entity body string.
-    # In version 1.2 (ruby 1.8), this method returns a Net::HTTPResponse
-    # object.
-    #
-    # If called with a block, yields each fragment of the
-    # entity body in turn as a string as it is read from
-    # the socket.  Note that in this case, the returned response
-    # object will *not* contain a (meaningful) body.
-    #
-    # +dest+ argument is obsolete.
-    # It still works but you must not use it.
-    #
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). In this case you can get a HTTPResponse object
-    # by "anException.response".
-    #
-    # In version 1.2, this method never raises exception.
-    #
-    #     # version 1.1 (bundled with Ruby 1.6)
-    #     response, body = http.get('/index.html')
-    #
-    #     # version 1.2 (bundled with Ruby 1.8 or later)
-    #     response = http.get('/index.html')
-    #     
-    #     # using block
-    #     File.open('result.txt', 'w') {|f|
-    #       http.get('/~foo/') do |str|
-    #         f.write str
-    #       end
-    #     }
-    #
-    def get(path, initheader = nil, dest = nil, &block) # :yield: +body_segment+
-      res = nil
-      request(Get.new(path, initheader)) {|r|
-        r.read_body dest, &block
-        res = r
-      }
-      unless @newimpl
-        res.value
-        return res, res.body
-      end
-
-      res
-    end
-
-    # Gets only the header from +path+ on the connected-to host.
-    # +header+ is a Hash like { 'Accept' => '*/*', ... }.
-    # 
-    # This method returns a Net::HTTPResponse object.
-    # 
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). On the case you can get a HTTPResponse object
-    # by "anException.response".
-    # In version 1.2, this method never raises an exception.
-    # 
-    #     response = nil
-    #     Net::HTTP.start('some.www.server', 80) {|http|
-    #       response = http.head('/index.html')
-    #     }
-    #     p response['content-type']
-    #
-    def head(path, initheader = nil) 
-      res = request(Head.new(path, initheader))
-      res.value unless @newimpl
-      res
-    end
-
-    # Posts +data+ (must be a String) to +path+. +header+ must be a Hash
-    # like { 'Accept' => '*/*', ... }.
-    # 
-    # In version 1.1 (ruby 1.6), this method returns a pair of objects, a
-    # Net::HTTPResponse object and an entity body string.
-    # In version 1.2 (ruby 1.8), this method returns a Net::HTTPResponse object.
-    # 
-    # If called with a block, yields each fragment of the
-    # entity body in turn as a string as it are read from
-    # the socket.  Note that in this case, the returned response
-    # object will *not* contain a (meaningful) body.
-    #
-    # +dest+ argument is obsolete.
-    # It still works but you must not use it.
-    # 
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). In this case you can get an HTTPResponse object
-    # by "anException.response".
-    # In version 1.2, this method never raises exception.
-    # 
-    #     # version 1.1
-    #     response, body = http.post('/cgi-bin/search.rb', 'query=foo')
-    # 
-    #     # version 1.2
-    #     response = http.post('/cgi-bin/search.rb', 'query=foo')
-    # 
-    #     # using block
-    #     File.open('result.txt', 'w') {|f|
-    #       http.post('/cgi-bin/search.rb', 'query=foo') do |str|
-    #         f.write str
-    #       end
-    #     }
-    #
-    # You should set Content-Type: header field for POST.
-    # If no Content-Type: field given, this method uses
-    # "application/x-www-form-urlencoded" by default.
-    #
-    def post(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+
-      res = nil
-      request(Post.new(path, initheader), data) {|r|
-        r.read_body dest, &block
-        res = r
-      }
-      unless @newimpl
-        res.value
-        return res, res.body
-      end
-      res
-    end
-
-    def put(path, data, initheader = nil)   #:nodoc:
-      res = request(Put.new(path, initheader), data)
-      res.value unless @newimpl
-      res
-    end
-
-    # Sends a PROPPATCH request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def proppatch(path, body, initheader = nil)
-      request(Proppatch.new(path, initheader), body)
-    end
-
-    # Sends a LOCK request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def lock(path, body, initheader = nil)
-      request(Lock.new(path, initheader), body)
-    end
-
-    # Sends a UNLOCK request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def unlock(path, body, initheader = nil)
-      request(Unlock.new(path, initheader), body)
-    end
-
-    # Sends a OPTIONS request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def options(path, initheader = nil)
-      request(Options.new(path, initheader))
-    end
-
-    # Sends a PROPFIND request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def propfind(path, body = nil, initheader = {'Depth' => '0'})
-      request(Propfind.new(path, initheader), body)
-    end
-
-    # Sends a DELETE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def delete(path, initheader = {'Depth' => 'Infinity'})
-      request(Delete.new(path, initheader))
-    end
-
-    # Sends a MOVE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def move(path, initheader = nil)
-      request(Move.new(path, initheader))
-    end
-
-    # Sends a COPY request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def copy(path, initheader = nil)
-      request(Copy.new(path, initheader))
-    end
-
-    # Sends a MKCOL request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def mkcol(path, body = nil, initheader = nil)
-      request(Mkcol.new(path, initheader), body)
-    end
-
-    # Sends a TRACE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def trace(path, initheader = nil)
-      request(Trace.new(path, initheader))
-    end
-
-    # Sends a GET request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     response = http.request_get('/index.html')
-    #     # The entity body is already read here.
-    #     p response['content-type']
-    #     puts response.body
-    # 
-    #     # using block
-    #     http.request_get('/index.html') {|response|
-    #       p response['content-type']
-    #       response.read_body do |str|   # read body now
-    #         print str
-    #       end
-    #     }
-    #
-    def request_get(path, initheader = nil, &block) # :yield: +response+
-      request(Get.new(path, initheader), &block)
-    end
-
-    # Sends a HEAD request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     response = http.request_head('/index.html')
-    #     p response['content-type']
-    #
-    def request_head(path, initheader = nil, &block)
-      request(Head.new(path, initheader), &block)
-    end
-
-    # Sends a POST request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     # example
-    #     response = http.request_post('/cgi-bin/nice.rb', 'datadatadata...')
-    #     p response.status
-    #     puts response.body          # body is already read
-    # 
-    #     # using block
-    #     http.request_post('/cgi-bin/nice.rb', 'datadatadata...') {|response|
-    #       p response.status
-    #       p response['content-type']
-    #       response.read_body do |str|   # read body now
-    #         print str
-    #       end
-    #     }
-    #
-    def request_post(path, data, initheader = nil, &block) # :yield: +response+
-      request Post.new(path, initheader), data, &block
-    end
-
-    def request_put(path, data, initheader = nil, &block)   #:nodoc:
-      request Put.new(path, initheader), data, &block
-    end
-
-    alias get2   request_get    #:nodoc: obsolete
-    alias head2  request_head   #:nodoc: obsolete
-    alias post2  request_post   #:nodoc: obsolete
-    alias put2   request_put    #:nodoc: obsolete
-
-
-    # Sends an HTTP request to the HTTP server.
-    # This method also sends DATA string if DATA is given.
-    #
-    # Returns a HTTPResponse object.
-    # 
-    # This method never raises Net::* exceptions.
-    #
-    #    response = http.send_request('GET', '/index.html')
-    #    puts response.body
-    #
-    def send_request(name, path, data = nil, header = nil)
-      r = HTTPGenericRequest.new(name,(data ? true : false),true,path,header)
-      request r, data
-    end
-
-    # Sends an HTTPRequest object REQUEST to the HTTP server.
-    # This method also sends DATA string if REQUEST is a post/put request.
-    # Giving DATA for get/head request causes ArgumentError.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns a HTTPResponse object.
-    # 
-    # This method never raises Net::* exceptions.
-    #
-    def request(req, body = nil, &block)  # :yield: +response+
-      unless started?
-        start {
-          req['connection'] ||= 'close'
-          return request(req, body, &block)
-        }
-      end
-      if proxy_user()
-        unless use_ssl?
-          req.proxy_basic_auth proxy_user(), proxy_pass()
-        end
-      end
-
-      req.set_body_internal body
-      begin_transport req
-        req.exec @socket, @curr_http_version, edit_path(req.path)
-        begin
-          res = HTTPResponse.read_new(@socket)
-        end while res.kind_of?(HTTPContinue)
-        res.reading_body(@socket, req.response_body_permitted?) {
-          yield res if block_given?
-        }
-      end_transport req, res
-
-      res
-    end
-
-    private
-
-    def begin_transport(req)
-      if @socket.closed?
-        connect
-      end
-      if @seems_1_0_server
-        req['connection'] ||= 'close'
-      end
-      if not req.response_body_permitted? and @close_on_empty_response
-        req['connection'] ||= 'close'
-      end
-      req['host'] ||= addr_port()
-    end
-
-    def end_transport(req, res)
-      @curr_http_version = res.http_version
-      if not res.body and @close_on_empty_response
-        D 'Conn close'
-        @socket.close
-      elsif keep_alive?(req, res)
-        D 'Conn keep-alive'
-        if @socket.closed?
-          D 'Conn (but seems 1.0 server)'
-          @seems_1_0_server = true
-        end
-      else
-        D 'Conn close'
-        @socket.close
-      end
-    end
-
-    def keep_alive?(req, res)
-      return false if /close/i =~ req['connection'].to_s
-      return false if @seems_1_0_server
-      return true  if /keep-alive/i =~ res['connection'].to_s
-      return false if /close/i      =~ res['connection'].to_s
-      return true  if /keep-alive/i =~ res['proxy-connection'].to_s
-      return false if /close/i      =~ res['proxy-connection'].to_s
-      (@curr_http_version == '1.1')
-    end
-
-    #
-    # utils
-    #
-
-    private
-
-    def addr_port
-      if use_ssl?
-        address() + (port == HTTP.https_default_port ? '' : ":#{port()}")
-      else
-        address() + (port == HTTP.http_default_port ? '' : ":#{port()}")
-      end
-    end
-
-    def D(msg)
-      return unless @debug_output
-      @debug_output << msg
-      @debug_output << "\n"
-    end
-
-  end
-
-  HTTPSession = HTTP
-
-
-  #
-  # Header module.
-  #
-  # Provides access to @header in the mixed-into class as a hash-like
-  # object, except with case-insensitive keys.  Also provides
-  # methods for accessing commonly-used header values in a more
-  # convenient format.
-  #
-  module HTTPHeader
-
-    def initialize_http_header(initheader)
-      @header = {}
-      return unless initheader
-      initheader.each do |key, value|
-        warn "net/http: warning: duplicated HTTP header: #{key}" if key?(key) and $VERBOSE
-        @header[key.downcase] = [value.strip]
-      end
-    end
-
-    def size   #:nodoc: obsolete
-      @header.size
-    end
-
-    alias length size   #:nodoc: obsolete
-
-    # Returns the header field corresponding to the case-insensitive key.
-    # For example, a key of "Content-Type" might return "text/html"
-    def [](key)
-      a = @header[key.downcase] or return nil
-      a.join(', ')
-    end
-
-    # Sets the header field corresponding to the case-insensitive key.
-    def []=(key, val)
-      unless val
-        @header.delete key.downcase
-        return val
-      end
-      @header[key.downcase] = [val]
-    end
-
-    # [Ruby 1.8.3]
-    # Adds header field instead of replace.
-    # Second argument +val+ must be a String.
-    # See also #[]=, #[] and #get_fields.
-    #
-    #   request.add_field 'X-My-Header', 'a'
-    #   p request['X-My-Header']              #=> "a"
-    #   p request.get_fields('X-My-Header')   #=> ["a"]
-    #   request.add_field 'X-My-Header', 'b'
-    #   p request['X-My-Header']              #=> "a, b"
-    #   p request.get_fields('X-My-Header')   #=> ["a", "b"]
-    #   request.add_field 'X-My-Header', 'c'
-    #   p request['X-My-Header']              #=> "a, b, c"
-    #   p request.get_fields('X-My-Header')   #=> ["a", "b", "c"]
-    #
-    def add_field(key, val)
-      if @header.key?(key.downcase)
-        @header[key.downcase].push val
-      else
-        @header[key.downcase] = [val]
-      end
-    end
-
-    # [Ruby 1.8.3]
-    # Returns an array of header field strings corresponding to the
-    # case-insensitive +key+.  This method allows you to get duplicated
-    # header fields without any processing.  See also #[].
-    #
-    #   p response.get_fields('Set-Cookie')
-    #     #=> ["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23",
-    #          "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"]
-    #   p response['Set-Cookie']
-    #     #=> "session=al98axx; expires=Fri, 31-Dec-1999 23:58:23, query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"
-    #
-    def get_fields(key)
-      return nil unless @header[key.downcase]
-      @header[key.downcase].dup
-    end
-
-    # Returns the header field corresponding to the case-insensitive key.
-    # Returns the default value +args+, or the result of the block, or nil,
-    # if there's no header field named key.  See Hash#fetch
-    def fetch(key, *args, &block)   #:yield: +key+
-      a = @header.fetch(key.downcase, *args, &block)
-      a.join(', ')
-    end
-
-    # Iterates for each header names and values.
-    def each_header   #:yield: +key+, +value+
-      @header.each do |k,va|
-        yield k, va.join(', ')
-      end
-    end
-
-    alias each each_header
-
-    # Iterates for each header names.
-    def each_name(&block)   #:yield: +key+
-      @header.each_key(&block)
-    end
-
-    alias each_key each_name
-
-    # Iterates for each capitalized header names.
-    def each_capitalized_name(&block)   #:yield: +key+
-      @header.each_key do |k|
-        yield capitalize(k)
-      end
-    end
-
-    # Iterates for each header values.
-    def each_value   #:yield: +value+
-      @header.each_value do |va|
-        yield va.join(', ')
-      end
-    end
-
-    # Removes a header field.
-    def delete(key)
-      @header.delete(key.downcase)
-    end
-
-    # true if +key+ header exists.
-    def key?(key)
-      @header.key?(key.downcase)
-    end
-
-    # Returns a Hash consist of header names and values.
-    def to_hash
-      @header.dup
-    end
-
-    # As for #each_header, except the keys are provided in capitalized form.
-    def each_capitalized
-      @header.each do |k,v|
-        yield capitalize(k), v.join(', ')
-      end
-    end
-
-    alias canonical_each each_capitalized
-
-    def capitalize(name)
-      name.split(/-/).map {|s| s.capitalize }.join('-')
-    end
-    private :capitalize
-
-    # Returns an Array of Range objects which represents Range: header field,
-    # or +nil+ if there is no such header.
-    def range
-      return nil unless @header['range']
-      self['Range'].split(/,/).map {|spec|
-        m = /bytes\s*=\s*(\d+)?\s*-\s*(\d+)?/i.match(spec) or
-                raise HTTPHeaderSyntaxError, "wrong Range: #{spec}"
-        d1 = m[1].to_i
-        d2 = m[2].to_i
-        if    m[1] and m[2] then  d1..d2
-        elsif m[1]          then  d1..-1
-        elsif          m[2] then -d2..-1
-        else
-          raise HTTPHeaderSyntaxError, 'range is not specified'
-        end
-      }
-    end
-
-    # Set Range: header from Range (arg r) or beginning index and
-    # length from it (arg idx&len).
-    #
-    #   req.range = (0..1023)
-    #   req.set_range 0, 1023
-    #
-    def set_range(r, e = nil)
-      unless r
-        @header.delete 'range'
-        return r
-      end
-      r = (r...r+e) if e
-      case r
-      when Numeric
-        n = r.to_i
-        rangestr = (n > 0 ? "0-#{n-1}" : "-#{-n}")
-      when Range
-        first = r.first
-        last = r.last
-        last -= 1 if r.exclude_end?
-        if last == -1
-          rangestr = (first > 0 ? "#{first}-" : "-#{-first}")
-        else
-          raise HTTPHeaderSyntaxError, 'range.first is negative' if first < 0
-          raise HTTPHeaderSyntaxError, 'range.last is negative' if last < 0
-          raise HTTPHeaderSyntaxError, 'must be .first < .last' if first > last
-          rangestr = "#{first}-#{last}"
-        end
-      else
-        raise TypeError, 'Range/Integer is required'
-      end
-      @header['range'] = ["bytes=#{rangestr}"]
-      r
-    end
-
-    alias range= set_range
-
-    # Returns an Integer object which represents the Content-Length: header field
-    # or +nil+ if that field is not provided.
-    def content_length
-      return nil unless key?('Content-Length')
-      len = self['Content-Length'].slice(/\d+/) or
-          raise HTTPHeaderSyntaxError, 'wrong Content-Length format'
-      len.to_i
-    end
-    
-    def content_length=(len)
-      unless len
-        @header.delete 'content-length'
-        return nil
-      end
-      @header['content-length'] = [len.to_i.to_s]
-    end
-
-    # Returns "true" if the "transfer-encoding" header is present and
-    # set to "chunked".  This is an HTTP/1.1 feature, allowing the 
-    # the content to be sent in "chunks" without at the outset
-    # stating the entire content length.
-    def chunked?
-      return false unless @header['transfer-encoding']
-      field = self['Transfer-Encoding']
-      (/(?:\A|[^\-\w])chunked(?![\-\w])/i =~ field) ? true : false
-    end
-
-    # Returns a Range object which represents Content-Range: header field.
-    # This indicates, for a partial entity body, where this fragment
-    # fits inside the full entity body, as range of byte offsets.
-    def content_range
-      return nil unless @header['content-range']
-      m = %r<bytes\s+(\d+)-(\d+)/(\d+|\*)>i.match(self['Content-Range']) or
-          raise HTTPHeaderSyntaxError, 'wrong Content-Range format'
-      m[1].to_i .. m[2].to_i + 1
-    end
-
-    # The length of the range represented in Content-Range: header.
-    def range_length
-      r = content_range() or return nil
-      r.end - r.begin
-    end
-
-    # Returns a content type string such as "text/html".
-    # This method returns nil if Content-Type: header field does not exist.
-    def content_type
-      return nil unless main_type()
-      if sub_type()
-      then "#{main_type()}/#{sub_type()}"
-      else main_type()
-      end
-    end
-
-    # Returns a content type string such as "text".
-    # This method returns nil if Content-Type: header field does not exist.
-    def main_type
-      return nil unless @header['content-type']
-      self['Content-Type'].split(';').first.to_s.split('/')[0].to_s.strip
-    end
-    
-    # Returns a content type string such as "html".
-    # This method returns nil if Content-Type: header field does not exist
-    # or sub-type is not given (e.g. "Content-Type: text").
-    def sub_type
-      return nil unless @header['content-type']
-      main, sub = *self['Content-Type'].split(';').first.to_s.split('/')
-      return nil unless sub
-      sub.strip
-    end
-
-    # Returns content type parameters as a Hash as like
-    # {"charset" => "iso-2022-jp"}.
-    def type_params
-      result = {}
-      list = self['Content-Type'].to_s.split(';')
-      list.shift
-      list.each do |param|
-        k, v = *param.split('=', 2)
-        result[k.strip] = v.strip
-      end
-      result
-    end
-
-    # Set Content-Type: header field by +type+ and +params+.
-    # +type+ must be a String, +params+ must be a Hash.
-    def set_content_type(type, params = {})
-      @header['content-type'] = [type + params.map{|k,v|"; #{k}=#{v}"}.join('')]
-    end
-
-    alias content_type= set_content_type
-
-    # Set header fields and a body from HTML form data.
-    # +params+ should be a Hash containing HTML form data.
-    # Optional argument +sep+ means data record separator.
-    #
-    # This method also set Content-Type: header field to
-    # application/x-www-form-urlencoded.
-    def set_form_data(params, sep = '&')
-      self.body = params.map {|k,v| "#{urlencode(k.to_s)}=#{urlencode(v.to_s)}" }.join(sep)
-      self.content_type = 'application/x-www-form-urlencoded'
-    end
-
-    alias form_data= set_form_data
-
-    def urlencode(str)
-      str.gsub(/[^a-zA-Z0-9_\.\-]/n) {|s| sprintf('%%%02x', s[0]) }
-    end
-    private :urlencode
-
-    # Set the Authorization: header for "Basic" authorization.
-    def basic_auth(account, password)
-      @header['authorization'] = [basic_encode(account, password)]
-    end
-
-    # Set Proxy-Authorization: header for "Basic" authorization.
-    def proxy_basic_auth(account, password)
-      @header['proxy-authorization'] = [basic_encode(account, password)]
-    end
-
-    def basic_encode(account, password)
-      'Basic ' + ["#{account}:#{password}"].pack('m').delete("\r\n")
-    end
-    private :basic_encode
-
-  end
-
-
-  #
-  # Parent of HTTPRequest class.  Do not use this directly; use
-  # a subclass of HTTPRequest.
-  #
-  # Mixes in the HTTPHeader module.
-  #
-  class HTTPGenericRequest
-
-    include HTTPHeader
-
-    def initialize(m, reqbody, resbody, path, initheader = nil)
-      @method = m
-      @request_has_body = reqbody
-      @response_has_body = resbody
-      raise ArgumentError, "HTTP request path is empty" if path.empty?
-      @path = path
-      initialize_http_header initheader
-      self['Accept'] ||= '*/*'
-      @body = nil
-      @body_stream = nil
-    end
-
-    attr_reader :method
-    attr_reader :path
-
-    def inspect
-      "\#<#{self.class} #{@method}>"
-    end
-
-    def request_body_permitted?
-      @request_has_body
-    end
-
-    def response_body_permitted?
-      @response_has_body
-    end
-
-    def body_exist?
-      warn "Net::HTTPRequest#body_exist? is obsolete; use response_body_permitted?" if $VERBOSE
-      response_body_permitted?
-    end
-
-    attr_reader :body
-
-    def body=(str)
-      @body = str
-      @body_stream = nil
-      str
-    end
-
-    attr_reader :body_stream
-
-    def body_stream=(input)
-      @body = nil
-      @body_stream = input
-      input
-    end
-
-    def set_body_internal(str)   #:nodoc: internal use only
-      raise ArgumentError, "both of body argument and HTTPRequest#body set" if str and (@body or @body_stream)
-      self.body = str if str
-    end
-
-    #
-    # write
-    #
-
-    def exec(sock, ver, path)   #:nodoc: internal use only
-      if @body
-        send_request_with_body sock, ver, path, @body
-      elsif @body_stream
-        send_request_with_body_stream sock, ver, path, @body_stream
-      else
-        write_header sock, ver, path
-      end
-    end
-
-    private
-
-    def send_request_with_body(sock, ver, path, body)
-      self.content_length = body.length
-      delete 'Transfer-Encoding'
-      supply_default_content_type
-      write_header sock, ver, path
-      sock.write body
-    end
-
-    def send_request_with_body_stream(sock, ver, path, f)
-      unless content_length() or chunked?
-        raise ArgumentError,
-            "Content-Length not given and Transfer-Encoding is not `chunked'"
-      end
-      supply_default_content_type
-      write_header sock, ver, path
-      if chunked?
-        while s = f.read(1024)
-          sock.write(sprintf("%x\r\n", s.length) << s << "\r\n")
-        end
-        sock.write "0\r\n\r\n"
-      else
-        while s = f.read(1024)
-          sock.write s
-        end
-      end
-    end
-
-    def supply_default_content_type
-      return if content_type()
-      warn 'net/http: warning: Content-Type did not set; using application/x-www-form-urlencoded' if $VERBOSE
-      set_content_type 'application/x-www-form-urlencoded'
-    end
-
-    def write_header(sock, ver, path)
-      buf = "#{@method} #{path} HTTP/#{ver}\r\n"
-      each_capitalized do |k,v|
-        buf << "#{k}: #{v}\r\n"
-      end
-      buf << "\r\n"
-      sock.write buf
-    end
-  
-  end
-
-
-  # 
-  # HTTP request class. This class wraps request header and entity path.
-  # You *must* use its subclass, Net::HTTP::Get, Post, Head.
-  # 
-  class HTTPRequest < HTTPGenericRequest
-
-    # Creates HTTP request object.
-    def initialize(path, initheader = nil)
-      super self.class::METHOD,
-            self.class::REQUEST_HAS_BODY,
-            self.class::RESPONSE_HAS_BODY,
-            path, initheader
-    end
-  end
-
-
-  class HTTP   # reopen
-    #
-    # HTTP 1.1 methods --- RFC2616
-    #
-
-    class Get < HTTPRequest
-      METHOD = 'GET'
-      REQUEST_HAS_BODY  = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Head < HTTPRequest
-      METHOD = 'HEAD'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = false
-    end
-
-    class Post < HTTPRequest
-      METHOD = 'POST'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Put < HTTPRequest
-      METHOD = 'PUT'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Delete < HTTPRequest
-      METHOD = 'DELETE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Options < HTTPRequest
-      METHOD = 'OPTIONS'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = false
-    end
-
-    class Trace < HTTPRequest
-      METHOD = 'TRACE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    #
-    # WebDAV methods --- RFC2518
-    #
-
-    class Propfind < HTTPRequest
-      METHOD = 'PROPFIND'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Proppatch < HTTPRequest
-      METHOD = 'PROPPATCH'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Mkcol < HTTPRequest
-      METHOD = 'MKCOL'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Copy < HTTPRequest
-      METHOD = 'COPY'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Move < HTTPRequest
-      METHOD = 'MOVE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Lock < HTTPRequest
-      METHOD = 'LOCK'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Unlock < HTTPRequest
-      METHOD = 'UNLOCK'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-  end
-
-
-  ###
-  ### Response
-  ###
-
-  # HTTP exception class.
-  # You must use its subclasses.
-  module HTTPExceptions
-    def initialize(msg, res)   #:nodoc:
-      super msg
-      @response = res
-    end
-    attr_reader :response
-    alias data response    #:nodoc: obsolete
-  end
-  class HTTPError < ProtocolError
-    include HTTPExceptions
-  end
-  class HTTPRetriableError < ProtoRetriableError
-    include HTTPExceptions
-  end
-  class HTTPServerException < ProtoServerError
-    # We cannot use the name "HTTPServerError", it is the name of the response.
-    include HTTPExceptions
-  end
-  class HTTPFatalError < ProtoFatalError
-    include HTTPExceptions
-  end
-
-
-  # HTTP response class. This class wraps response header and entity.
-  # Mixes in the HTTPHeader module, which provides access to response
-  # header values both via hash-like methods and individual readers.
-  # Note that each possible HTTP response code defines its own 
-  # HTTPResponse subclass.  These are listed below.
-  # All classes are
-  # defined under the Net module. Indentation indicates inheritance.
-  # 
-  #   xxx        HTTPResponse
-  # 
-  #     1xx        HTTPInformation
-  #       100        HTTPContinue    
-  #       101        HTTPSwitchProtocol
-  # 
-  #     2xx        HTTPSuccess
-  #       200        HTTPOK
-  #       201        HTTPCreated
-  #       202        HTTPAccepted
-  #       203        HTTPNonAuthoritativeInformation
-  #       204        HTTPNoContent
-  #       205        HTTPResetContent
-  #       206        HTTPPartialContent
-  # 
-  #     3xx        HTTPRedirection
-  #       300        HTTPMultipleChoice
-  #       301        HTTPMovedPermanently
-  #       302        HTTPFound
-  #       303        HTTPSeeOther
-  #       304        HTTPNotModified
-  #       305        HTTPUseProxy
-  #       307        HTTPTemporaryRedirect
-  # 
-  #     4xx        HTTPClientError
-  #       400        HTTPBadRequest
-  #       401        HTTPUnauthorized
-  #       402        HTTPPaymentRequired
-  #       403        HTTPForbidden
-  #       404        HTTPNotFound
-  #       405        HTTPMethodNotAllowed
-  #       406        HTTPNotAcceptable
-  #       407        HTTPProxyAuthenticationRequired
-  #       408        HTTPRequestTimeOut
-  #       409        HTTPConflict
-  #       410        HTTPGone
-  #       411        HTTPLengthRequired
-  #       412        HTTPPreconditionFailed
-  #       413        HTTPRequestEntityTooLarge
-  #       414        HTTPRequestURITooLong
-  #       415        HTTPUnsupportedMediaType
-  #       416        HTTPRequestedRangeNotSatisfiable
-  #       417        HTTPExpectationFailed
-  # 
-  #     5xx        HTTPServerError
-  #       500        HTTPInternalServerError
-  #       501        HTTPNotImplemented
-  #       502        HTTPBadGateway
-  #       503        HTTPServiceUnavailable
-  #       504        HTTPGatewayTimeOut
-  #       505        HTTPVersionNotSupported
-  # 
-  #     xxx        HTTPUnknownResponse
-  #
-  class HTTPResponse
-    # true if the response has body.
-    def HTTPResponse.body_permitted?
-      self::HAS_BODY
-    end
-
-    def HTTPResponse.exception_type   # :nodoc: internal use only
-      self::EXCEPTION_TYPE
-    end
-  end   # reopened after
-
-  # :stopdoc:
-
-  class HTTPUnknownResponse < HTTPResponse
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPInformation < HTTPResponse           # 1xx
-    HAS_BODY = false
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPSuccess < HTTPResponse               # 2xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPRedirection < HTTPResponse           # 3xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPRetriableError
-  end
-  class HTTPClientError < HTTPResponse           # 4xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPServerException   # for backward compatibility
-  end
-  class HTTPServerError < HTTPResponse           # 5xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPFatalError    # for backward compatibility
-  end
-
-  class HTTPContinue < HTTPInformation           # 100
-    HAS_BODY = false
-  end
-  class HTTPSwitchProtocol < HTTPInformation     # 101
-    HAS_BODY = false
-  end
-
-  class HTTPOK < HTTPSuccess                            # 200
-    HAS_BODY = true
-  end
-  class HTTPCreated < HTTPSuccess                       # 201
-    HAS_BODY = true
-  end
-  class HTTPAccepted < HTTPSuccess                      # 202
-    HAS_BODY = true
-  end
-  class HTTPNonAuthoritativeInformation < HTTPSuccess   # 203
-    HAS_BODY = true
-  end
-  class HTTPNoContent < HTTPSuccess                     # 204
-    HAS_BODY = false
-  end
-  class HTTPResetContent < HTTPSuccess                  # 205
-    HAS_BODY = false
-  end
-  class HTTPPartialContent < HTTPSuccess                # 206
-    HAS_BODY = true
-  end
-
-  class HTTPMultipleChoice < HTTPRedirection     # 300
-    HAS_BODY = true
-  end
-  class HTTPMovedPermanently < HTTPRedirection   # 301
-    HAS_BODY = true
-  end
-  class HTTPFound < HTTPRedirection              # 302
-    HAS_BODY = true
-  end
-  HTTPMovedTemporarily = HTTPFound
-  class HTTPSeeOther < HTTPRedirection           # 303
-    HAS_BODY = true
-  end
-  class HTTPNotModified < HTTPRedirection        # 304
-    HAS_BODY = false
-  end
-  class HTTPUseProxy < HTTPRedirection           # 305
-    HAS_BODY = false
-  end
-  # 306 unused
-  class HTTPTemporaryRedirect < HTTPRedirection  # 307
-    HAS_BODY = true
-  end
-
-  class HTTPBadRequest < HTTPClientError                    # 400
-    HAS_BODY = true
-  end
-  class HTTPUnauthorized < HTTPClientError                  # 401
-    HAS_BODY = true
-  end
-  class HTTPPaymentRequired < HTTPClientError               # 402
-    HAS_BODY = true
-  end
-  class HTTPForbidden < HTTPClientError                     # 403
-    HAS_BODY = true
-  end
-  class HTTPNotFound < HTTPClientError                      # 404
-    HAS_BODY = true
-  end
-  class HTTPMethodNotAllowed < HTTPClientError              # 405
-    HAS_BODY = true
-  end
-  class HTTPNotAcceptable < HTTPClientError                 # 406
-    HAS_BODY = true
-  end
-  class HTTPProxyAuthenticationRequired < HTTPClientError   # 407
-    HAS_BODY = true
-  end
-  class HTTPRequestTimeOut < HTTPClientError                # 408
-    HAS_BODY = true
-  end
-  class HTTPConflict < HTTPClientError                      # 409
-    HAS_BODY = true
-  end
-  class HTTPGone < HTTPClientError                          # 410
-    HAS_BODY = true
-  end
-  class HTTPLengthRequired < HTTPClientError                # 411
-    HAS_BODY = true
-  end
-  class HTTPPreconditionFailed < HTTPClientError            # 412
-    HAS_BODY = true
-  end
-  class HTTPRequestEntityTooLarge < HTTPClientError         # 413
-    HAS_BODY = true
-  end
-  class HTTPRequestURITooLong < HTTPClientError             # 414
-    HAS_BODY = true
-  end
-  HTTPRequestURITooLarge = HTTPRequestURITooLong
-  class HTTPUnsupportedMediaType < HTTPClientError          # 415
-    HAS_BODY = true
-  end
-  class HTTPRequestedRangeNotSatisfiable < HTTPClientError  # 416
-    HAS_BODY = true
-  end
-  class HTTPExpectationFailed < HTTPClientError             # 417
-    HAS_BODY = true
-  end
-
-  class HTTPInternalServerError < HTTPServerError   # 500
-    HAS_BODY = true
-  end
-  class HTTPNotImplemented < HTTPServerError        # 501
-    HAS_BODY = true
-  end
-  class HTTPBadGateway < HTTPServerError            # 502
-    HAS_BODY = true
-  end
-  class HTTPServiceUnavailable < HTTPServerError    # 503
-    HAS_BODY = true
-  end
-  class HTTPGatewayTimeOut < HTTPServerError        # 504
-    HAS_BODY = true
-  end
-  class HTTPVersionNotSupported < HTTPServerError   # 505
-    HAS_BODY = true
-  end
-
-  # :startdoc:
-
-
-  class HTTPResponse   # reopen
-
-    CODE_CLASS_TO_OBJ = {
-      '1' => HTTPInformation,
-      '2' => HTTPSuccess,
-      '3' => HTTPRedirection,
-      '4' => HTTPClientError,
-      '5' => HTTPServerError
-    }
-    CODE_TO_OBJ = {
-      '100' => HTTPContinue,
-      '101' => HTTPSwitchProtocol,
-
-      '200' => HTTPOK,
-      '201' => HTTPCreated,
-      '202' => HTTPAccepted,
-      '203' => HTTPNonAuthoritativeInformation,
-      '204' => HTTPNoContent,
-      '205' => HTTPResetContent,
-      '206' => HTTPPartialContent,
-
-      '300' => HTTPMultipleChoice,
-      '301' => HTTPMovedPermanently,
-      '302' => HTTPFound,
-      '303' => HTTPSeeOther,
-      '304' => HTTPNotModified,
-      '305' => HTTPUseProxy,
-      '307' => HTTPTemporaryRedirect,
-
-      '400' => HTTPBadRequest,
-      '401' => HTTPUnauthorized,
-      '402' => HTTPPaymentRequired,
-      '403' => HTTPForbidden,
-      '404' => HTTPNotFound,
-      '405' => HTTPMethodNotAllowed,
-      '406' => HTTPNotAcceptable,
-      '407' => HTTPProxyAuthenticationRequired,
-      '408' => HTTPRequestTimeOut,
-      '409' => HTTPConflict,
-      '410' => HTTPGone,
-      '411' => HTTPLengthRequired,
-      '412' => HTTPPreconditionFailed,
-      '413' => HTTPRequestEntityTooLarge,
-      '414' => HTTPRequestURITooLong,
-      '415' => HTTPUnsupportedMediaType,
-      '416' => HTTPRequestedRangeNotSatisfiable,
-      '417' => HTTPExpectationFailed,
-
-      '500' => HTTPInternalServerError,
-      '501' => HTTPNotImplemented,
-      '502' => HTTPBadGateway,
-      '503' => HTTPServiceUnavailable,
-      '504' => HTTPGatewayTimeOut,
-      '505' => HTTPVersionNotSupported
-    }
-
-    class << HTTPResponse
-      def read_new(sock)   #:nodoc: internal use only
-        httpv, code, msg = read_status_line(sock)
-        res = response_class(code).new(httpv, code, msg)
-        each_response_header(sock) do |k,v|
-          res.add_field k, v
-        end
-        res
-      end
-
-      private
-
-      def read_status_line(sock)
-        str = sock.readline
-        m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)\s*(.*)\z/in.match(str) or
-          raise HTTPBadResponse, "wrong status line: #{str.dump}"
-        m.captures
-      end
-
-      def response_class(code)
-        CODE_TO_OBJ[code] or
-        CODE_CLASS_TO_OBJ[code[0,1]] or
-        HTTPUnknownResponse
-      end
-
-      def each_response_header(sock)
-        while true
-          line = sock.readuntil("\n", true).sub(/\s+\z/, '')
-          break if line.empty?
-          m = /\A([^:]+):\s*/.match(line) or
-              raise HTTPBadResponse, 'wrong header line format'
-          yield m[1], m.post_match
-        end
-      end
-    end
-
-    # next is to fix bug in RDoc, where the private inside class << self
-    # spills out.
-    public 
-
-    include HTTPHeader
-
-    def initialize(httpv, code, msg)   #:nodoc: internal use only
-      @http_version = httpv
-      @code         = code
-      @message      = msg
-      initialize_http_header nil
-      @body = nil
-      @read = false
-    end
-
-    # The HTTP version supported by the server.
-    attr_reader :http_version
-
-    # HTTP result code string. For example, '302'.  You can also
-    # determine the response type by which response subclass the
-    # response object is an instance of.
-    attr_reader :code
-
-    # HTTP result message. For example, 'Not Found'.
-    attr_reader :message
-    alias msg message   # :nodoc: obsolete
-
-    def inspect
-      "#<#{self.class} #{@code} #{@message} readbody=#{@read}>"
-    end
-
-    # For backward compatibility.
-    # To allow Net::HTTP 1.1 style assignment
-    # e.g.
-    #    response, body = Net::HTTP.get(....)
-    # 
-    def to_ary
-      warn "net/http.rb: warning: Net::HTTP v1.1 style assignment found at #{caller(1)[0]}; use `response = http.get(...)' instead." if $VERBOSE
-      res = self.dup
-      class << res
-        undef to_ary
-      end
-      [res, res.body]
-    end
-
-    #
-    # response <-> exception relationship
-    #
-
-    def code_type   #:nodoc:
-      self.class
-    end
-
-    def error!   #:nodoc:
-      raise error_type().new(@code + ' ' + @message.dump, self)
-    end
-
-    def error_type   #:nodoc:
-      self.class::EXCEPTION_TYPE
-    end
-
-    # Raises HTTP error if the response is not 2xx.
-    def value
-      error! unless self.kind_of?(HTTPSuccess)
-    end
-
-    #
-    # header (for backward compatibility only; DO NOT USE)
-    #
-
-    def response   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#response is obsolete" if $VERBOSE
-      self
-    end
-
-    def header   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#header is obsolete" if $VERBOSE
-      self
-    end
-
-    def read_header   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#read_header is obsolete" if $VERBOSE
-      self
-    end
-
-    #
-    # body
-    #
-
-    def reading_body(sock, reqmethodallowbody)  #:nodoc: internal use only
-      @socket = sock
-      @body_exist = reqmethodallowbody && self.class.body_permitted?
-      begin
-        yield
-        self.body   # ensure to read body
-      ensure
-        @socket = nil
-      end
-    end
-
-    # Gets entity body.  If the block given, yields it to +block+.
-    # The body is provided in fragments, as it is read in from the socket.
-    #
-    # Calling this method a second or subsequent time will return the
-    # already read string.
-    #
-    #   http.request_get('/index.html') {|res|
-    #     puts res.read_body
-    #   }
-    #
-    #   http.request_get('/index.html') {|res|
-    #     p res.read_body.object_id   # 538149362
-    #     p res.read_body.object_id   # 538149362
-    #   }
-    #
-    #   # using iterator
-    #   http.request_get('/index.html') {|res|
-    #     res.read_body do |segment|
-    #       print segment
-    #     end
-    #   }
-    #
-    def read_body(dest = nil, &block)
-      if @read
-        raise IOError, "#{self.class}\#read_body called twice" if dest or block
-        return @body
-      end
-      to = procdest(dest, block)
-      stream_check
-      if @body_exist
-        read_body_0 to
-        @body = to
-      else
-        @body = nil
-      end
-      @read = true
-
-      @body
-    end
-
-    # Returns the entity body.
-    #
-    # Calling this method a second or subsequent time will return the
-    # already read string.
-    #
-    #   http.request_get('/index.html') {|res|
-    #     puts res.body
-    #   }
-    #
-    #   http.request_get('/index.html') {|res|
-    #     p res.body.object_id   # 538149362
-    #     p res.body.object_id   # 538149362
-    #   }
-    #
-    def body
-      read_body()
-    end
-
-    alias entity body   #:nodoc: obsolete
-
-    private
-
-    def read_body_0(dest)
-      if chunked?
-        read_chunked dest
-        return
-      end
-      clen = content_length()
-      if clen
-        @socket.read clen, dest, true   # ignore EOF
-        return
-      end
-      clen = range_length()
-      if clen
-        @socket.read clen, dest
-        return
-      end
-      @socket.read_all dest
-    end
-
-    def read_chunked(dest)
-      len = nil
-      total = 0
-      while true
-        line = @socket.readline
-        hexlen = line.slice(/[0-9a-fA-F]+/) or
-            raise HTTPBadResponse, "wrong chunk size line: #{line}"
-        len = hexlen.hex
-        break if len == 0
-        @socket.read len, dest; total += len
-        @socket.read 2   # \r\n
-      end
-      until @socket.readline.empty?
-        # none
-      end
-    end
-
-    def stream_check
-      raise IOError, 'attempt to read body out of block' if @socket.closed?
-    end
-
-    def procdest(dest, block)
-      raise ArgumentError, 'both arg and block given for HTTP method' \
-          if dest and block
-      if block
-        ReadAdapter.new(block)
-      else
-        dest || ''
-      end
-    end
-
-  end
-
-
-  # :enddoc:
-
-  #--
-  # for backward compatibility
-  class HTTP
-    ProxyMod = ProxyDelta
-  end
-  module NetPrivate
-    HTTPRequest = ::Net::HTTPRequest
-  end
-
-  HTTPInformationCode = HTTPInformation
-  HTTPSuccessCode     = HTTPSuccess
-  HTTPRedirectionCode = HTTPRedirection
-  HTTPRetriableCode   = HTTPRedirection
-  HTTPClientErrorCode = HTTPClientError
-  HTTPFatalErrorCode  = HTTPClientError
-  HTTPServerErrorCode = HTTPServerError
-  HTTPResponceReceiver = HTTPResponse
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/https.rb
deleted file mode 100644
index a9b182b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/https.rb
+++ /dev/null
@@ -1,173 +0,0 @@
-=begin
-
-= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP.
-
-== Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU Yuuzou <gotoyuzo at notwork.org>
-  All rights reserved.
-
-== Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-== Requirements
-  This program requires Net 1.2.0 or higher version.
-  You can get it from RAA or Ruby's CVS repository.
-
-== Version
-  $Id: https.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  
-  2001-11-06: Contiributed to Ruby/OpenSSL project.
-  2004-03-06: Some code is merged in to net/http.
-
-== Example
-
-Here is a simple HTTP client:
-
-    require 'net/http'
-    require 'uri'
-
-    uri = URI.parse(ARGV[0] || 'http://localhost/')
-    http = Net::HTTP.new(uri.host, uri.port)
-    http.start {
-      http.request_get(uri.path) {|res|
-        print res.body
-      }
-    }
-
-It can be replaced by the following code:
-
-    require 'net/https'
-    require 'uri'
-
-    uri = URI.parse(ARGV[0] || 'https://localhost/')
-    http = Net::HTTP.new(uri.host, uri.port)
-    http.use_ssl = true if uri.scheme == "https"  # enable SSL/TLS
-    http.start {
-      http.request_get(uri.path) {|res|
-        print res.body
-      }
-    }
-
-== class Net::HTTP
-
-=== Instance Methods
-
-: use_ssl?
-    returns true if use SSL/TLS with HTTP.
-
-: use_ssl=((|true_or_false|))
-    sets use_ssl.
-
-: peer_cert
-    return the X.509 certificates the server presented.
-
-: key, key=((|key|))
-    Sets an OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
-    (This method is appeared in Michal Rokos's OpenSSL extention.)
-
-: cert, cert=((|cert|))
-    Sets an OpenSSL::X509::Certificate object as client certificate
-    (This method is appeared in Michal Rokos's OpenSSL extention).
-
-: ca_file, ca_file=((|path|))
-    Sets path of a CA certification file in PEM format.
-    The file can contrain several CA certificats.
-
-: ca_path, ca_path=((|path|))
-    Sets path of a CA certification directory containing certifications
-    in PEM format.
-
-: verify_mode, verify_mode=((|mode|))
-    Sets the flags for server the certification verification at
-    begining of SSL/TLS session.
-    OpenSSL::SSL::VERIFY_NONE or OpenSSL::SSL::VERIFY_PEER is acceptable.
-
-: verify_callback, verify_callback=((|proc|))
-    Sets the verify callback for the server certification verification.
-
-: verify_depth, verify_depth=((|num|))
-    Sets the maximum depth for the certificate chain verification.
-
-: cert_store, cert_store=((|store|))
-    Sets the X509::Store to verify peer certificate.
-
-: ssl_timeout, ssl_timeout=((|sec|))
-    Sets the SSL timeout seconds.
-
-=end
-
-require 'net/http'
-require 'openssl'
-
-module Net
-
-  class HTTP
-    remove_method :use_ssl?
-    def use_ssl?
-      @use_ssl
-    end
-
-    # For backward compatibility.
-    alias use_ssl use_ssl?
-
-    # Turn on/off SSL.
-    # This flag must be set before starting session.
-    # If you change use_ssl value after session started,
-    # a Net::HTTP object raises IOError.
-    def use_ssl=(flag)
-      flag = (flag ? true : false)
-      raise IOError, "use_ssl value changed, but session already started" \
-          if started? and @use_ssl != flag
-      if flag and not @ssl_context
-        @ssl_context = OpenSSL::SSL::SSLContext.new
-      end
-      @use_ssl = flag
-    end
-
-    def self.ssl_context_accessor(name)
-      module_eval(<<-End, __FILE__, __LINE__ + 1)
-        def #{name}
-          return nil unless @ssl_context
-          @ssl_context.#{name}
-        end
-
-        def #{name}=(val)
-          @ssl_context ||= OpenSSL::SSL::SSLContext.new
-          @ssl_context.#{name} = val
-        end
-      End
-    end
-
-    ssl_context_accessor :key
-    ssl_context_accessor :cert
-    ssl_context_accessor :ca_file
-    ssl_context_accessor :ca_path
-    ssl_context_accessor :verify_mode
-    ssl_context_accessor :verify_callback
-    ssl_context_accessor :verify_depth
-    ssl_context_accessor :cert_store
-
-    def ssl_timeout
-      return nil unless @ssl_context
-      @ssl_context.timeout
-    end
-
-    def ssl_timeout=(sec)
-      raise ArgumentError, 'Net::HTTP#ssl_timeout= called but use_ssl=false' \
-          unless use_ssl?
-      @ssl_context ||= OpenSSL::SSL::SSLContext.new
-      @ssl_context.timeout = sec
-    end
-
-    # For backward compatibility
-    alias timeout= ssl_timeout=
-
-    def peer_cert
-      return nil if not use_ssl? or not @socket
-      @socket.io.peer_cert
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/imap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/imap.rb
deleted file mode 100644
index f8c0d3b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/imap.rb
+++ /dev/null
@@ -1,3371 +0,0 @@
-#
-# = net/imap.rb
-#
-# Copyright (C) 2000  Shugo Maeda <shugo at ruby-lang.org>
-#
-# This library is distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# Documentation: Shugo Maeda, with RDoc conversion and overview by William
-# Webber.
-#
-# See Net::IMAP for documentation. 
-#
-
-
-require "socket"
-require "monitor"
-require "digest/md5"
-begin
-  require "openssl"
-rescue LoadError
-end
-
-module Net
-
-  #
-  # Net::IMAP implements Internet Message Access Protocol (IMAP) client
-  # functionality.  The protocol is described in [IMAP].
-  #
-  # == IMAP Overview
-  #
-  # An IMAP client connects to a server, and then authenticates
-  # itself using either #authenticate() or #login().  Having
-  # authenticated itself, there is a range of commands
-  # available to it.  Most work with mailboxes, which may be
-  # arranged in an hierarchical namespace, and each of which
-  # contains zero or more messages.  How this is implemented on
-  # the server is implementation-dependent; on a UNIX server, it
-  # will frequently be implemented as a files in mailbox format
-  # within a hierarchy of directories.
-  #
-  # To work on the messages within a mailbox, the client must
-  # first select that mailbox, using either #select() or (for
-  # read-only access) #examine().  Once the client has successfully
-  # selected a mailbox, they enter _selected_ state, and that
-  # mailbox becomes the _current_ mailbox, on which mail-item
-  # related commands implicitly operate.  
-  #
-  # Messages have two sorts of identifiers: message sequence
-  # numbers, and UIDs.  
-  #
-  # Message sequence numbers number messages within a mail box 
-  # from 1 up to the number of items in the mail box.  If new
-  # message arrives during a session, it receives a sequence
-  # number equal to the new size of the mail box.  If messages
-  # are expunged from the mailbox, remaining messages have their
-  # sequence numbers "shuffled down" to fill the gaps.
-  #
-  # UIDs, on the other hand, are permanently guaranteed not to
-  # identify another message within the same mailbox, even if 
-  # the existing message is deleted.  UIDs are required to
-  # be assigned in ascending (but not necessarily sequential)
-  # order within a mailbox; this means that if a non-IMAP client
-  # rearranges the order of mailitems within a mailbox, the
-  # UIDs have to be reassigned.  An IMAP client cannot thus
-  # rearrange message orders.
-  #
-  # == Examples of Usage
-  #
-  # === List sender and subject of all recent messages in the default mailbox
-  #
-  #   imap = Net::IMAP.new('mail.example.com')
-  #   imap.authenticate('LOGIN', 'joe_user', 'joes_password')
-  #   imap.examine('INBOX')
-  #   imap.search(["RECENT"]).each do |message_id|
-  #     envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
-  #     puts "#{envelope.from[0].name}: \t#{envelope.subject}"
-  #   end
-  #
-  # === Move all messages from April 2003 from "Mail/sent-mail" to "Mail/sent-apr03"
-  #
-  #   imap = Net::IMAP.new('mail.example.com')
-  #   imap.authenticate('LOGIN', 'joe_user', 'joes_password')
-  #   imap.select('Mail/sent-mail')
-  #   if not imap.list('Mail/', 'sent-apr03')
-  #     imap.create('Mail/sent-apr03')
-  #   end
-  #   imap.search(["BEFORE", "30-Apr-2003", "SINCE", "1-Apr-2003"]).each do |message_id|
-  #     imap.copy(message_id, "Mail/sent-apr03")
-  #     imap.store(message_id, "+FLAGS", [:Deleted])
-  #   end
-  #   imap.expunge
-  # 
-  # == Thread Safety
-  #
-  # Net::IMAP supports concurrent threads. For example,
-  # 
-  #   imap = Net::IMAP.new("imap.foo.net", "imap2")
-  #   imap.authenticate("cram-md5", "bar", "password")
-  #   imap.select("inbox")
-  #   fetch_thread = Thread.start { imap.fetch(1..-1, "UID") }
-  #   search_result = imap.search(["BODY", "hello"])
-  #   fetch_result = fetch_thread.value
-  #   imap.disconnect
-  # 
-  # This script invokes the FETCH command and the SEARCH command concurrently.
-  #
-  # == Errors
-  #
-  # An IMAP server can send three different types of responses to indicate
-  # failure:
-  #
-  # NO:: the attempted command could not be successfully completed.  For
-  #      instance, the username/password used for logging in are incorrect;
-  #      the selected mailbox does not exists; etc.  
-  #
-  # BAD:: the request from the client does not follow the server's 
-  #       understanding of the IMAP protocol.  This includes attempting
-  #       commands from the wrong client state; for instance, attempting
-  #       to perform a SEARCH command without having SELECTed a current
-  #       mailbox.  It can also signal an internal server
-  #       failure (such as a disk crash) has occurred.
-  #
-  # BYE:: the server is saying goodbye.  This can be part of a normal
-  #       logout sequence, and can be used as part of a login sequence
-  #       to indicate that the server is (for some reason) unwilling
-  #       to accept our connection.  As a response to any other command,
-  #       it indicates either that the server is shutting down, or that
-  #       the server is timing out the client connection due to inactivity.
-  #
-  # These three error response are represented by the errors
-  # Net::IMAP::NoResponseError, Net::IMAP::BadResponseError, and
-  # Net::IMAP::ByeResponseError, all of which are subclasses of
-  # Net::IMAP::ResponseError.  Essentially, all methods that involve
-  # sending a request to the server can generate one of these errors.
-  # Only the most pertinent instances have been documented below.
-  #
-  # Because the IMAP class uses Sockets for communication, its methods
-  # are also susceptible to the various errors that can occur when
-  # working with sockets.  These are generally represented as
-  # Errno errors.  For instance, any method that involves sending a
-  # request to the server and/or receiving a response from it could
-  # raise an Errno::EPIPE error if the network connection unexpectedly
-  # goes down.  See the socket(7), ip(7), tcp(7), socket(2), connect(2),
-  # and associated man pages.
-  #
-  # Finally, a Net::IMAP::DataFormatError is thrown if low-level data
-  # is found to be in an incorrect format (for instance, when converting
-  # between UTF-8 and UTF-16), and Net::IMAP::ResponseParseError is 
-  # thrown if a server response is non-parseable. 
-  #
-  #
-  # == References
-  #
-  # [[IMAP]]
-  #    M. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
-  #    RFC 2060, December 1996.  (Note: since obsoleted by RFC 3501)
-  #
-  # [[LANGUAGE-TAGS]]
-  #    Alvestrand, H., "Tags for the Identification of
-  #    Languages", RFC 1766, March 1995.
-  #
-  # [[MD5]]
-  #    Myers, J., and M. Rose, "The Content-MD5 Header Field", RFC
-  #    1864, October 1995.
-  #
-  # [[MIME-IMB]]
-  #    Freed, N., and N. Borenstein, "MIME (Multipurpose Internet
-  #    Mail Extensions) Part One: Format of Internet Message Bodies", RFC
-  #    2045, November 1996.
-  #
-  # [[RFC-822]]
-  #    Crocker, D., "Standard for the Format of ARPA Internet Text
-  #    Messages", STD 11, RFC 822, University of Delaware, August 1982.
-  #
-  # [[RFC-2087]]
-  #    Myers, J., "IMAP4 QUOTA extension", RFC 2087, January 1997.
-  #
-  # [[RFC-2086]]
-  #    Myers, J., "IMAP4 ACL extension", RFC 2086, January 1997.
-  #
-  # [[RFC-2195]]
-  #    Klensin, J., Catoe, R., and Krumviede, P., "IMAP/POP AUTHorize Extension
-  #    for Simple Challenge/Response", RFC 2195, September 1997.
-  #
-  # [[SORT-THREAD-EXT]]
-  #    Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - SORT and THREAD
-  #    Extensions", draft-ietf-imapext-sort, May 2003.
-  #
-  # [[OSSL]]
-  #    http://www.openssl.org
-  #
-  # [[RSSL]]
-  #    http://savannah.gnu.org/projects/rubypki
-  #
-  # [[UTF7]]
-  #    Goldsmith, D. and Davis, M., "UTF-7: A Mail-Safe Transformation Format of
-  #    Unicode", RFC 2152, May 1997.
-  #
-  class IMAP
-    include MonitorMixin
-    if defined?(OpenSSL)
-      include OpenSSL
-      include SSL
-    end
-
-    #  Returns an initial greeting response from the server.
-    attr_reader :greeting
-
-    # Returns recorded untagged responses.  For example:
-    #
-    #   imap.select("inbox")
-    #   p imap.responses["EXISTS"][-1]
-    #   #=> 2
-    #   p imap.responses["UIDVALIDITY"][-1]
-    #   #=> 968263756
-    attr_reader :responses
-
-    # Returns all response handlers.
-    attr_reader :response_handlers
-
-    # The thread to receive exceptions.
-    attr_accessor :client_thread
-
-    # Flag indicating a message has been seen
-    SEEN = :Seen
-
-    # Flag indicating a message has been answered
-    ANSWERED = :Answered
-
-    # Flag indicating a message has been flagged for special or urgent
-    # attention
-    FLAGGED = :Flagged
-
-    # Flag indicating a message has been marked for deletion.  This
-    # will occur when the mailbox is closed or expunged.
-    DELETED = :Deleted
-
-    # Flag indicating a message is only a draft or work-in-progress version.
-    DRAFT = :Draft
-
-    # Flag indicating that the message is "recent", meaning that this
-    # session is the first session in which the client has been notified
-    # of this message.
-    RECENT = :Recent
-
-    # Flag indicating that a mailbox context name cannot contain
-    # children.
-    NOINFERIORS = :Noinferiors
-
-    # Flag indicating that a mailbox is not selected.
-    NOSELECT = :Noselect
-
-    # Flag indicating that a mailbox has been marked "interesting" by
-    # the server; this commonly indicates that the mailbox contains
-    # new messages.
-    MARKED = :Marked
-
-    # Flag indicating that the mailbox does not contains new messages.
-    UNMARKED = :Unmarked
-
-    # Returns the debug mode.
-    def self.debug
-      return @@debug
-    end
-
-    # Sets the debug mode.
-    def self.debug=(val)
-      return @@debug = val
-    end
-
-    # Adds an authenticator for Net::IMAP#authenticate.  +auth_type+
-    # is the type of authentication this authenticator supports
-    # (for instance, "LOGIN").  The +authenticator+ is an object
-    # which defines a process() method to handle authentication with
-    # the server.  See Net::IMAP::LoginAuthenticator and 
-    # Net::IMAP::CramMD5Authenticator for examples.
-    #
-    # If +auth_type+ refers to an existing authenticator, it will be
-    # replaced by the new one.
-    def self.add_authenticator(auth_type, authenticator)
-      @@authenticators[auth_type] = authenticator
-    end
-
-    # Disconnects from the server.
-    def disconnect
-      if SSL::SSLSocket === @sock
-        @sock.io.shutdown
-      else
-        @sock.shutdown
-      end
-      @receiver_thread.join
-      @sock.close
-    end
-
-    # Returns true if disconnected from the server.
-    def disconnected?
-      return @sock.closed?
-    end
-
-    # Sends a CAPABILITY command, and returns an array of
-    # capabilities that the server supports.  Each capability
-    # is a string.  See [IMAP] for a list of possible
-    # capabilities.
-    #
-    # Note that the Net::IMAP class does not modify its
-    # behaviour according to the capabilities of the server;
-    # it is up to the user of the class to ensure that 
-    # a certain capability is supported by a server before
-    # using it.
-    def capability
-      synchronize do
-        send_command("CAPABILITY")
-        return @responses.delete("CAPABILITY")[-1]
-      end
-    end
-
-    # Sends a NOOP command to the server. It does nothing.
-    def noop
-      send_command("NOOP")
-    end
-
-    # Sends a LOGOUT command to inform the server that the client is
-    # done with the connection.
-    def logout
-      send_command("LOGOUT")
-    end
-
-    # Sends an AUTHENTICATE command to authenticate the client.
-    # The +auth_type+ parameter is a string that represents
-    # the authentication mechanism to be used. Currently Net::IMAP
-    # supports authentication mechanisms:
-    #
-    #   LOGIN:: login using cleartext user and password. 
-    #   CRAM-MD5:: login with cleartext user and encrypted password
-    #              (see [RFC-2195] for a full description).  This
-    #              mechanism requires that the server have the user's
-    #              password stored in clear-text password.
-    #
-    # For both these mechanisms, there should be two +args+: username
-    # and (cleartext) password.  A server may not support one or other
-    # of these mechanisms; check #capability() for a capability of
-    # the form "AUTH=LOGIN" or "AUTH=CRAM-MD5".
-    #
-    # Authentication is done using the appropriate authenticator object:
-    # see @@authenticators for more information on plugging in your own
-    # authenticator.
-    #
-    # For example:
-    #
-    #    imap.authenticate('LOGIN', user, password)
-    #
-    # A Net::IMAP::NoResponseError is raised if authentication fails.
-    def authenticate(auth_type, *args)
-      auth_type = auth_type.upcase
-      unless @@authenticators.has_key?(auth_type)
-        raise ArgumentError,
-          format('unknown auth type - "%s"', auth_type)
-      end
-      authenticator = @@authenticators[auth_type].new(*args)
-      send_command("AUTHENTICATE", auth_type) do |resp|
-        if resp.instance_of?(ContinuationRequest)
-          data = authenticator.process(resp.data.text.unpack("m")[0])
-          s = [data].pack("m").gsub(/\n/, "")
-          send_string_data(s)
-          put_string(CRLF)
-        end
-      end
-    end
-
-    # Sends a LOGIN command to identify the client and carries
-    # the plaintext +password+ authenticating this +user+.  Note
-    # that, unlike calling #authenticate() with an +auth_type+
-    # of "LOGIN", #login() does *not* use the login authenticator.
-    #
-    # A Net::IMAP::NoResponseError is raised if authentication fails.
-    def login(user, password)
-      send_command("LOGIN", user, password)
-    end
-
-    # Sends a SELECT command to select a +mailbox+ so that messages
-    # in the +mailbox+ can be accessed. 
-    #
-    # After you have selected a mailbox, you may retrieve the
-    # number of items in that mailbox from @responses["EXISTS"][-1],
-    # and the number of recent messages from @responses["RECENT"][-1].
-    # Note that these values can change if new messages arrive
-    # during a session; see #add_response_handler() for a way of
-    # detecting this event.
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does not
-    # exist or is for some reason non-selectable.
-    def select(mailbox)
-      synchronize do
-        @responses.clear
-        send_command("SELECT", mailbox)
-      end
-    end
-
-    # Sends a EXAMINE command to select a +mailbox+ so that messages
-    # in the +mailbox+ can be accessed.  Behaves the same as #select(),
-    # except that the selected +mailbox+ is identified as read-only.
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does not
-    # exist or is for some reason non-examinable.
-    def examine(mailbox)
-      synchronize do
-        @responses.clear
-        send_command("EXAMINE", mailbox)
-      end
-    end
-
-    # Sends a CREATE command to create a new +mailbox+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with that name
-    # cannot be created.
-    def create(mailbox)
-      send_command("CREATE", mailbox)
-    end
-
-    # Sends a DELETE command to remove the +mailbox+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with that name
-    # cannot be deleted, either because it does not exist or because the
-    # client does not have permission to delete it.
-    def delete(mailbox)
-      send_command("DELETE", mailbox)
-    end
-
-    # Sends a RENAME command to change the name of the +mailbox+ to
-    # +newname+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with the 
-    # name +mailbox+ cannot be renamed to +newname+ for whatever
-    # reason; for instance, because +mailbox+ does not exist, or
-    # because there is already a mailbox with the name +newname+.
-    def rename(mailbox, newname)
-      send_command("RENAME", mailbox, newname)
-    end
-
-    # Sends a SUBSCRIBE command to add the specified +mailbox+ name to
-    # the server's set of "active" or "subscribed" mailboxes as returned
-    # by #lsub().
-    #
-    # A Net::IMAP::NoResponseError is raised if +mailbox+ cannot be
-    # subscribed to, for instance because it does not exist.
-    def subscribe(mailbox)
-      send_command("SUBSCRIBE", mailbox)
-    end
-
-    # Sends a UNSUBSCRIBE command to remove the specified +mailbox+ name
-    # from the server's set of "active" or "subscribed" mailboxes.
-    #
-    # A Net::IMAP::NoResponseError is raised if +mailbox+ cannot be
-    # unsubscribed from, for instance because the client is not currently
-    # subscribed to it.
-    def unsubscribe(mailbox)
-      send_command("UNSUBSCRIBE", mailbox)
-    end
-
-    # Sends a LIST command, and returns a subset of names from
-    # the complete set of all names available to the client.
-    # +refname+ provides a context (for instance, a base directory
-    # in a directory-based mailbox hierarchy).  +mailbox+ specifies
-    # a mailbox or (via wildcards) mailboxes under that context.
-    # Two wildcards may be used in +mailbox+: '*', which matches
-    # all characters *including* the hierarchy delimiter (for instance,
-    # '/' on a UNIX-hosted directory-based mailbox hierarchy); and '%',
-    # which matches all characters *except* the hierarchy delimiter.
-    #
-    # If +refname+ is empty, +mailbox+ is used directly to determine
-    # which mailboxes to match.  If +mailbox+ is empty, the root
-    # name of +refname+ and the hierarchy delimiter are returned.
-    #
-    # The return value is an array of +Net::IMAP::MailboxList+. For example:
-    #
-    #   imap.create("foo/bar")
-    #   imap.create("foo/baz")
-    #   p imap.list("", "foo/%")
-    #   #=> [#<Net::IMAP::MailboxList attr=[:Noselect], delim="/", name="foo/">, \\ 
-    #        #<Net::IMAP::MailboxList attr=[:Noinferiors, :Marked], delim="/", name="foo/bar">, \\ 
-    #        #<Net::IMAP::MailboxList attr=[:Noinferiors], delim="/", name="foo/baz">]
-    def list(refname, mailbox)
-      synchronize do
-        send_command("LIST", refname, mailbox)
-        return @responses.delete("LIST")
-      end
-    end
-
-    # Sends the GETQUOTAROOT command along with specified +mailbox+.
-    # This command is generally available to both admin and user.
-    # If mailbox exists, returns an array containing objects of
-    # Net::IMAP::MailboxQuotaRoot and Net::IMAP::MailboxQuota.
-    def getquotaroot(mailbox)
-      synchronize do
-        send_command("GETQUOTAROOT", mailbox)
-        result = []
-        result.concat(@responses.delete("QUOTAROOT"))
-        result.concat(@responses.delete("QUOTA"))
-        return result
-      end
-    end
-
-    # Sends the GETQUOTA command along with specified +mailbox+.
-    # If this mailbox exists, then an array containing a
-    # Net::IMAP::MailboxQuota object is returned.  This
-    # command generally is only available to server admin.
-    def getquota(mailbox)
-      synchronize do
-        send_command("GETQUOTA", mailbox)
-        return @responses.delete("QUOTA")
-      end
-    end
-
-    # Sends a SETQUOTA command along with the specified +mailbox+ and
-    # +quota+.  If +quota+ is nil, then quota will be unset for that
-    # mailbox.  Typically one needs to be logged in as server admin
-    # for this to work.  The IMAP quota commands are described in
-    # [RFC-2087].
-    def setquota(mailbox, quota)
-      if quota.nil?
-        data = '()'
-      else
-        data = '(STORAGE ' + quota.to_s + ')'
-      end
-      send_command("SETQUOTA", mailbox, RawData.new(data))
-    end
-
-    # Sends the SETACL command along with +mailbox+, +user+ and the
-    # +rights+ that user is to have on that mailbox.  If +rights+ is nil,
-    # then that user will be stripped of any rights to that mailbox.
-    # The IMAP ACL commands are described in [RFC-2086].
-    def setacl(mailbox, user, rights)
-      if rights.nil? 
-        send_command("SETACL", mailbox, user, "")
-      else
-        send_command("SETACL", mailbox, user, rights)
-      end
-    end
-
-    # Send the GETACL command along with specified +mailbox+.
-    # If this mailbox exists, an array containing objects of
-    # Net::IMAP::MailboxACLItem will be returned.
-    def getacl(mailbox)
-      synchronize do
-        send_command("GETACL", mailbox)
-        return @responses.delete("ACL")[-1]
-      end
-    end
-
-    # Sends a LSUB command, and returns a subset of names from the set
-    # of names that the user has declared as being "active" or
-    # "subscribed".  +refname+ and +mailbox+ are interpreted as 
-    # for #list().
-    # The return value is an array of +Net::IMAP::MailboxList+.
-    def lsub(refname, mailbox)
-      synchronize do
-        send_command("LSUB", refname, mailbox)
-        return @responses.delete("LSUB")
-      end
-    end
-
-    # Sends a STATUS command, and returns the status of the indicated
-    # +mailbox+. +attr+ is a list of one or more attributes that
-    # we are request the status of.  Supported attributes include:
-    #
-    #   MESSAGES:: the number of messages in the mailbox.
-    #   RECENT:: the number of recent messages in the mailbox.
-    #   UNSEEN:: the number of unseen messages in the mailbox.
-    #
-    # The return value is a hash of attributes. For example:
-    #
-    #   p imap.status("inbox", ["MESSAGES", "RECENT"])
-    #   #=> {"RECENT"=>0, "MESSAGES"=>44}
-    #
-    # A Net::IMAP::NoResponseError is raised if status values 
-    # for +mailbox+ cannot be returned, for instance because it
-    # does not exist.
-    def status(mailbox, attr)
-      synchronize do
-        send_command("STATUS", mailbox, attr)
-        return @responses.delete("STATUS")[-1].attr
-      end
-    end
-
-    # Sends a APPEND command to append the +message+ to the end of
-    # the +mailbox+. The optional +flags+ argument is an array of 
-    # flags to initially passing to the new message.  The optional
-    # +date_time+ argument specifies the creation time to assign to the 
-    # new message; it defaults to the current time.
-    # For example:
-    #
-    #   imap.append("inbox", <<EOF.gsub(/\n/, "\r\n"), [:Seen], Time.now)
-    #   Subject: hello
-    #   From: shugo at ruby-lang.org
-    #   To: shugo at ruby-lang.org
-    #   
-    #   hello world
-    #   EOF
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does
-    # not exist (it is not created automatically), or if the flags,
-    # date_time, or message arguments contain errors.
-    def append(mailbox, message, flags = nil, date_time = nil)
-      args = []
-      if flags
-        args.push(flags)
-      end
-      args.push(date_time) if date_time
-      args.push(Literal.new(message))
-      send_command("APPEND", mailbox, *args)
-    end
-
-    # Sends a CHECK command to request a checkpoint of the currently
-    # selected mailbox.  This performs implementation-specific
-    # housekeeping, for instance, reconciling the mailbox's 
-    # in-memory and on-disk state.
-    def check
-      send_command("CHECK")
-    end
-
-    # Sends a CLOSE command to close the currently selected mailbox.
-    # The CLOSE command permanently removes from the mailbox all
-    # messages that have the \Deleted flag set.
-    def close
-      send_command("CLOSE")
-    end
-
-    # Sends a EXPUNGE command to permanently remove from the currently
-    # selected mailbox all messages that have the \Deleted flag set.
-    def expunge
-      synchronize do
-        send_command("EXPUNGE")
-        return @responses.delete("EXPUNGE")
-      end
-    end
-
-    # Sends a SEARCH command to search the mailbox for messages that
-    # match the given searching criteria, and returns message sequence
-    # numbers.  +keys+ can either be a string holding the entire 
-    # search string, or a single-dimension array of search keywords and 
-    # arguments.  The following are some common search criteria;
-    # see [IMAP] section 6.4.4 for a full list.
-    #
-    # <message set>:: a set of message sequence numbers.  ',' indicates
-    #                 an interval, ':' indicates a range.  For instance,
-    #                 '2,10:12,15' means "2,10,11,12,15".
-    #
-    # BEFORE <date>:: messages with an internal date strictly before
-    #                 <date>.  The date argument has a format similar
-    #                 to 8-Aug-2002.
-    #
-    # BODY <string>:: messages that contain <string> within their body.
-    #
-    # CC <string>:: messages containing <string> in their CC field.
-    #
-    # FROM <string>:: messages that contain <string> in their FROM field.
-    #
-    # NEW:: messages with the \Recent, but not the \Seen, flag set.
-    #
-    # NOT <search-key>:: negate the following search key.
-    #
-    # OR <search-key> <search-key>:: "or" two search keys together.
-    #
-    # ON <date>:: messages with an internal date exactly equal to <date>, 
-    #             which has a format similar to 8-Aug-2002.
-    #
-    # SINCE <date>:: messages with an internal date on or after <date>.
-    #
-    # SUBJECT <string>:: messages with <string> in their subject.
-    #
-    # TO <string>:: messages with <string> in their TO field.
-    # 
-    # For example:
-    #
-    #   p imap.search(["SUBJECT", "hello", "NOT", "NEW"])
-    #   #=> [1, 6, 7, 8]
-    def search(keys, charset = nil)
-      return search_internal("SEARCH", keys, charset)
-    end
-
-    # As for #search(), but returns unique identifiers.
-    def uid_search(keys, charset = nil)
-      return search_internal("UID SEARCH", keys, charset)
-    end
-
-    # Sends a FETCH command to retrieve data associated with a message
-    # in the mailbox. The +set+ parameter is a number or an array of
-    # numbers or a Range object. The number is a message sequence
-    # number.  +attr+ is a list of attributes to fetch; see the
-    # documentation for Net::IMAP::FetchData for a list of valid
-    # attributes.
-    # The return value is an array of Net::IMAP::FetchData. For example:
-    #
-    #   p imap.fetch(6..8, "UID")
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"UID"=>98}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=7, attr={"UID"=>99}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=8, attr={"UID"=>100}>]
-    #   p imap.fetch(6, "BODY[HEADER.FIELDS (SUBJECT)]")
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"BODY[HEADER.FIELDS (SUBJECT)]"=>"Subject: test\r\n\r\n"}>]
-    #   data = imap.uid_fetch(98, ["RFC822.SIZE", "INTERNALDATE"])[0]
-    #   p data.seqno
-    #   #=> 6
-    #   p data.attr["RFC822.SIZE"]
-    #   #=> 611
-    #   p data.attr["INTERNALDATE"]
-    #   #=> "12-Oct-2000 22:40:59 +0900"
-    #   p data.attr["UID"]
-    #   #=> 98
-    def fetch(set, attr)
-      return fetch_internal("FETCH", set, attr)
-    end
-
-    # As for #fetch(), but +set+ contains unique identifiers.
-    def uid_fetch(set, attr)
-      return fetch_internal("UID FETCH", set, attr)
-    end
-
-    # Sends a STORE command to alter data associated with messages
-    # in the mailbox, in particular their flags. The +set+ parameter 
-    # is a number or an array of numbers or a Range object. Each number 
-    # is a message sequence number.  +attr+ is the name of a data item 
-    # to store: 'FLAGS' means to replace the message's flag list
-    # with the provided one; '+FLAGS' means to add the provided flags;
-    # and '-FLAGS' means to remove them.  +flags+ is a list of flags.
-    #
-    # The return value is an array of Net::IMAP::FetchData. For example:
-    #
-    #   p imap.store(6..8, "+FLAGS", [:Deleted])
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=7, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\  
-    #        #<Net::IMAP::FetchData seqno=8, attr={"FLAGS"=>[:Seen, :Deleted]}>]
-    def store(set, attr, flags)
-      return store_internal("STORE", set, attr, flags)
-    end
-
-    # As for #store(), but +set+ contains unique identifiers.
-    def uid_store(set, attr, flags)
-      return store_internal("UID STORE", set, attr, flags)
-    end
-
-    # Sends a COPY command to copy the specified message(s) to the end
-    # of the specified destination +mailbox+. The +set+ parameter is
-    # a number or an array of numbers or a Range object. The number is
-    # a message sequence number.
-    def copy(set, mailbox)
-      copy_internal("COPY", set, mailbox)
-    end
-
-    # As for #copy(), but +set+ contains unique identifiers.
-    def uid_copy(set, mailbox)
-      copy_internal("UID COPY", set, mailbox)
-    end
-
-    # Sends a SORT command to sort messages in the mailbox.
-    # Returns an array of message sequence numbers. For example:
-    #
-    #   p imap.sort(["FROM"], ["ALL"], "US-ASCII")
-    #   #=> [1, 2, 3, 5, 6, 7, 8, 4, 9]
-    #   p imap.sort(["DATE"], ["SUBJECT", "hello"], "US-ASCII")
-    #   #=> [6, 7, 8, 1]
-    #
-    # See [SORT-THREAD-EXT] for more details.
-    def sort(sort_keys, search_keys, charset)
-      return sort_internal("SORT", sort_keys, search_keys, charset)
-    end
-
-    # As for #sort(), but returns an array of unique identifiers.
-    def uid_sort(sort_keys, search_keys, charset)
-      return sort_internal("UID SORT", sort_keys, search_keys, charset)
-    end
-
-    # Adds a response handler. For example, to detect when 
-    # the server sends us a new EXISTS response (which normally
-    # indicates new messages being added to the mail box), 
-    # you could add the following handler after selecting the
-    # mailbox.
-    #
-    #   imap.add_response_handler { |resp|
-    #     if resp.kind_of?(Net::IMAP::UntaggedResponse) and resp.name == "EXISTS"
-    #       puts "Mailbox now has #{resp.data} messages"
-    #     end
-    #   }
-    #
-    def add_response_handler(handler = Proc.new)
-      @response_handlers.push(handler)
-    end
-
-    # Removes the response handler.
-    def remove_response_handler(handler)
-      @response_handlers.delete(handler)
-    end
-
-    # As for #search(), but returns message sequence numbers in threaded
-    # format, as a Net::IMAP::ThreadMember tree.  The supported algorithms
-    # are:
-    #
-    # ORDEREDSUBJECT:: split into single-level threads according to subject,
-    #                  ordered by date.
-    # REFERENCES:: split into threads by parent/child relationships determined
-    #              by which message is a reply to which.
-    #
-    # Unlike #search(), +charset+ is a required argument.  US-ASCII
-    # and UTF-8 are sample values.
-    #
-    # See [SORT-THREAD-EXT] for more details.
-    def thread(algorithm, search_keys, charset)
-      return thread_internal("THREAD", algorithm, search_keys, charset)
-    end
-
-    # As for #thread(), but returns unique identifiers instead of 
-    # message sequence numbers.
-    def uid_thread(algorithm, search_keys, charset)
-      return thread_internal("UID THREAD", algorithm, search_keys, charset)
-    end
-
-    # Decode a string from modified UTF-7 format to UTF-8.
-    #
-    # UTF-7 is a 7-bit encoding of Unicode [UTF7].  IMAP uses a
-    # slightly modified version of this to encode mailbox names
-    # containing non-ASCII characters; see [IMAP] section 5.1.3.
-    #
-    # Net::IMAP does _not_ automatically encode and decode
-    # mailbox names to and from utf7.
-    def self.decode_utf7(s)
-      return s.gsub(/&(.*?)-/n) {
-        if $1.empty?
-          "&"
-        else
-          base64 = $1.tr(",", "/")
-          x = base64.length % 4
-          if x > 0
-            base64.concat("=" * (4 - x))
-          end
-          u16tou8(base64.unpack("m")[0])
-        end
-      }
-    end
-
-    # Encode a string from UTF-8 format to modified UTF-7.
-    def self.encode_utf7(s)
-      return s.gsub(/(&)|([^\x20-\x25\x27-\x7e]+)/n) { |x|
-        if $1
-          "&-"
-        else
-          base64 = [u8tou16(x)].pack("m")
-          "&" + base64.delete("=\n").tr("/", ",") + "-"
-        end
-      }
-    end
-
-    private
-
-    CRLF = "\r\n"      # :nodoc:
-    PORT = 143         # :nodoc:
-
-    @@debug = false
-    @@authenticators = {}
-
-    # Creates a new Net::IMAP object and connects it to the specified
-    # +port+ (143 by default) on the named +host+.  If +usessl+ is true, 
-    # then an attempt will
-    # be made to use SSL (now TLS) to connect to the server.  For this
-    # to work OpenSSL [OSSL] and the Ruby OpenSSL [RSSL]
-    # extensions need to be installed.  The +certs+ parameter indicates
-    # the path or file containing the CA cert of the server, and the
-    # +verify+ parameter is for the OpenSSL verification callback.
-    #
-    # The most common errors are:
-    #
-    # Errno::ECONNREFUSED:: connection refused by +host+ or an intervening
-    #                       firewall.
-    # Errno::ETIMEDOUT:: connection timed out (possibly due to packets
-    #                    being dropped by an intervening firewall).
-    # Errno::ENETUNREACH:: there is no route to that network.
-    # SocketError:: hostname not known or other socket error.
-    # Net::IMAP::ByeResponseError:: we connected to the host, but they 
-    #                               immediately said goodbye to us.
-    def initialize(host, port = PORT, usessl = false, certs = nil, verify = false)
-      super()
-      @host = host
-      @port = port
-      @tag_prefix = "RUBY"
-      @tagno = 0
-      @parser = ResponseParser.new
-      @sock = TCPSocket.open(host, port)
-      if usessl
-        unless defined?(OpenSSL)
-          raise "SSL extension not installed"
-        end
-        @usessl = true
-
-        # verify the server.
-        context = SSLContext::new()
-        context.ca_file = certs if certs && FileTest::file?(certs)
-        context.ca_path = certs if certs && FileTest::directory?(certs)
-        context.verify_mode = VERIFY_PEER if verify
-        if defined?(VerifyCallbackProc)
-          context.verify_callback = VerifyCallbackProc 
-        end
-        @sock = SSLSocket.new(@sock, context)
-        @sock.connect   # start ssl session.
-        @sock.post_connection_check(@host) if verify
-      else
-        @usessl = false
-      end
-      @responses = Hash.new([].freeze)
-      @tagged_responses = {}
-      @response_handlers = []
-      @response_arrival = new_cond
-      @continuation_request = nil
-      @logout_command_tag = nil
-      @debug_output_bol = true
-
-      @greeting = get_response
-      if @greeting.name == "BYE"
-        @sock.close
-        raise ByeResponseError, @greeting.raw_data
-      end
-
-      @client_thread = Thread.current
-      @receiver_thread = Thread.start {
-        receive_responses
-      }
-    end
-
-    def receive_responses
-      while true
-        begin
-          resp = get_response
-        rescue Exception
-          @sock.close
-          @client_thread.raise($!)
-          break
-        end
-        break unless resp
-        begin
-          synchronize do
-            case resp
-            when TaggedResponse
-              @tagged_responses[resp.tag] = resp
-              @response_arrival.broadcast
-              if resp.tag == @logout_command_tag
-                return
-              end
-            when UntaggedResponse
-              record_response(resp.name, resp.data)
-              if resp.data.instance_of?(ResponseText) &&
-                  (code = resp.data.code)
-                record_response(code.name, code.data)
-              end
-              if resp.name == "BYE" && @logout_command_tag.nil?
-                @sock.close
-                raise ByeResponseError, resp.raw_data
-              end
-            when ContinuationRequest
-              @continuation_request = resp
-              @response_arrival.broadcast
-            end
-            @response_handlers.each do |handler|
-              handler.call(resp)
-            end
-          end
-        rescue Exception
-          @client_thread.raise($!)
-        end
-      end
-    end
-
-    def get_tagged_response(tag)
-      until @tagged_responses.key?(tag)
-        @response_arrival.wait
-      end
-      return pick_up_tagged_response(tag)
-    end
-
-    def pick_up_tagged_response(tag)
-      resp = @tagged_responses.delete(tag)
-      case resp.name
-      when /\A(?:NO)\z/ni
-        raise NoResponseError, resp.data.text
-      when /\A(?:BAD)\z/ni
-        raise BadResponseError, resp.data.text
-      else
-        return resp
-      end
-    end
-
-    def get_response
-      buff = ""
-      while true
-        s = @sock.gets(CRLF)
-        break unless s
-        buff.concat(s)
-        if /\{(\d+)\}\r\n/n =~ s
-          s = @sock.read($1.to_i)
-          buff.concat(s)
-        else
-          break
-        end
-      end
-      return nil if buff.length == 0
-      if @@debug
-        $stderr.print(buff.gsub(/^/n, "S: "))
-      end
-      return @parser.parse(buff)
-    end
-
-    def record_response(name, data)
-      unless @responses.has_key?(name)
-        @responses[name] = []
-      end
-      @responses[name].push(data)
-    end
-
-    def send_command(cmd, *args, &block)
-      synchronize do
-        tag = Thread.current[:net_imap_tag] = generate_tag
-        put_string(tag + " " + cmd)
-        args.each do |i|
-          put_string(" ")
-          send_data(i)
-        end
-        put_string(CRLF)
-        if cmd == "LOGOUT"
-          @logout_command_tag = tag
-        end
-        if block
-          add_response_handler(block)
-        end
-        begin
-          return get_tagged_response(tag)
-        ensure
-          if block
-            remove_response_handler(block)
-          end
-        end
-      end
-    end
-
-    def generate_tag
-      @tagno += 1
-      return format("%s%04d", @tag_prefix, @tagno)
-    end
-    
-    def put_string(str)
-      @sock.print(str)
-      if @@debug
-        if @debug_output_bol
-          $stderr.print("C: ")
-        end
-        $stderr.print(str.gsub(/\n(?!\z)/n, "\nC: "))
-        if /\r\n\z/n.match(str)
-          @debug_output_bol = true
-        else
-          @debug_output_bol = false
-        end
-      end
-    end
-
-    def send_data(data)
-      case data
-      when nil
-        put_string("NIL")
-      when String
-        send_string_data(data)
-      when Integer
-        send_number_data(data)
-      when Array
-        send_list_data(data)
-      when Time
-        send_time_data(data)
-      when Symbol
-        send_symbol_data(data)
-      else
-        data.send_data(self)
-      end
-    end
-
-    def send_string_data(str)
-      case str
-      when ""
-        put_string('""')
-      when /[\x80-\xff\r\n]/n
-        # literal
-        send_literal(str)
-      when /[(){ \x00-\x1f\x7f%*"\\]/n
-        # quoted string
-        send_quoted_string(str)
-      else
-        put_string(str)
-      end
-    end
-    
-    def send_quoted_string(str)
-      put_string('"' + str.gsub(/["\\]/n, "\\\\\\&") + '"')
-    end
-
-    def send_literal(str)
-      put_string("{" + str.length.to_s + "}" + CRLF)
-      while @continuation_request.nil? &&
-        !@tagged_responses.key?(Thread.current[:net_imap_tag])
-        @response_arrival.wait
-      end
-      if @continuation_request.nil?
-        pick_up_tagged_response(Thread.current[:net_imap_tag])
-        raise ResponseError.new("expected continuation request")
-      end
-      @continuation_request = nil
-      put_string(str)
-    end
-
-    def send_number_data(num)
-      if num < 0 || num >= 4294967296
-        raise DataFormatError, num.to_s
-      end
-      put_string(num.to_s)
-    end
-
-    def send_list_data(list)
-      put_string("(")
-      first = true
-      list.each do |i|
-        if first
-          first = false
-        else
-          put_string(" ")
-        end
-        send_data(i)
-      end
-      put_string(")")
-    end
-
-    DATE_MONTH = %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
-
-    def send_time_data(time)
-      t = time.dup.gmtime
-      s = format('"%2d-%3s-%4d %02d:%02d:%02d +0000"',
-                 t.day, DATE_MONTH[t.month - 1], t.year,
-                 t.hour, t.min, t.sec)
-      put_string(s)
-    end
-
-    def send_symbol_data(symbol)
-      put_string("\\" + symbol.to_s)
-    end
-
-    def search_internal(cmd, keys, charset)
-      if keys.instance_of?(String)
-        keys = [RawData.new(keys)]
-      else
-        normalize_searching_criteria(keys)
-      end
-      synchronize do
-        if charset
-          send_command(cmd, "CHARSET", charset, *keys)
-        else
-          send_command(cmd, *keys)
-        end
-        return @responses.delete("SEARCH")[-1]
-      end
-    end
-
-    def fetch_internal(cmd, set, attr)
-      if attr.instance_of?(String)
-        attr = RawData.new(attr)
-      end
-      synchronize do
-        @responses.delete("FETCH")
-        send_command(cmd, MessageSet.new(set), attr)
-        return @responses.delete("FETCH")
-      end
-    end
-
-    def store_internal(cmd, set, attr, flags)
-      if attr.instance_of?(String)
-        attr = RawData.new(attr)
-      end
-      synchronize do
-        @responses.delete("FETCH")
-        send_command(cmd, MessageSet.new(set), attr, flags)
-        return @responses.delete("FETCH")
-      end
-    end
-
-    def copy_internal(cmd, set, mailbox)
-      send_command(cmd, MessageSet.new(set), mailbox)
-    end
-
-    def sort_internal(cmd, sort_keys, search_keys, charset)
-      if search_keys.instance_of?(String)
-        search_keys = [RawData.new(search_keys)]
-      else
-        normalize_searching_criteria(search_keys)
-      end
-      normalize_searching_criteria(search_keys)
-      synchronize do
-        send_command(cmd, sort_keys, charset, *search_keys)
-        return @responses.delete("SORT")[-1]
-      end
-    end
-
-    def thread_internal(cmd, algorithm, search_keys, charset)
-      if search_keys.instance_of?(String)
-        search_keys = [RawData.new(search_keys)]
-      else
-        normalize_searching_criteria(search_keys)
-      end
-      normalize_searching_criteria(search_keys)
-      send_command(cmd, algorithm, charset, *search_keys)
-      return @responses.delete("THREAD")[-1]
-    end
-
-    def normalize_searching_criteria(keys)
-      keys.collect! do |i|
-        case i
-        when -1, Range, Array
-          MessageSet.new(i)
-        else
-          i
-        end
-      end
-    end
-
-    def self.u16tou8(s)
-      len = s.length
-      if len < 2
-        return ""
-      end
-      buf = ""
-      i = 0
-      while i < len
-        c = s[i] << 8 | s[i + 1]
-        i += 2
-        if c == 0xfeff
-          next
-        elsif c < 0x0080
-          buf.concat(c)
-        elsif c < 0x0800
-          b2 = c & 0x003f
-          b1 = c >> 6
-          buf.concat(b1 | 0xc0)
-          buf.concat(b2 | 0x80)
-        elsif c >= 0xdc00 && c < 0xe000
-          raise DataFormatError, "invalid surrogate detected"
-        elsif c >= 0xd800 && c < 0xdc00
-          if i + 2 > len
-            raise DataFormatError, "invalid surrogate detected"
-          end
-          low = s[i] << 8 | s[i + 1]
-          i += 2
-          if low < 0xdc00 || low > 0xdfff
-            raise DataFormatError, "invalid surrogate detected"
-          end
-          c = (((c & 0x03ff)) << 10 | (low & 0x03ff)) + 0x10000
-          b4 = c & 0x003f
-          b3 = (c >> 6) & 0x003f
-          b2 = (c >> 12) & 0x003f
-          b1 = c >> 18;
-          buf.concat(b1 | 0xf0)
-          buf.concat(b2 | 0x80)
-          buf.concat(b3 | 0x80)
-          buf.concat(b4 | 0x80)
-        else # 0x0800-0xffff
-          b3 = c & 0x003f
-          b2 = (c >> 6) & 0x003f
-          b1 = c >> 12
-          buf.concat(b1 | 0xe0)
-          buf.concat(b2 | 0x80)
-          buf.concat(b3 | 0x80)
-        end
-      end
-      return buf
-    end
-    private_class_method :u16tou8
-
-    def self.u8tou16(s)
-      len = s.length
-      buf = ""
-      i = 0
-      while i < len
-        c = s[i]
-        if (c & 0x80) == 0
-          buf.concat(0x00)
-          buf.concat(c)
-          i += 1
-        elsif (c & 0xe0) == 0xc0 &&
-            len >= 2 &&
-            (s[i + 1] & 0xc0) == 0x80
-          if c == 0xc0 || c == 0xc1
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x1f) << 6) | (s[i + 1] & 0x3f)
-          buf.concat(u >> 8)
-          buf.concat(u & 0x00ff)
-          i += 2
-        elsif (c & 0xf0) == 0xe0 &&
-            i + 2 < len &&
-            (s[i + 1] & 0xc0) == 0x80 &&
-            (s[i + 2] & 0xc0) == 0x80
-          if c == 0xe0 && s[i + 1] < 0xa0
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x0f) << 12) | ((s[i + 1] & 0x3f) << 6) | (s[i + 2] & 0x3f)
-          # surrogate chars
-          if u >= 0xd800 && u <= 0xdfff
-            raise DataFormatError, format("none-UTF-16 char detected (%04x)", u)
-          end
-          buf.concat(u >> 8)
-          buf.concat(u & 0x00ff)
-          i += 3
-        elsif (c & 0xf8) == 0xf0 &&
-            i + 3 < len &&
-            (s[i + 1] & 0xc0) == 0x80 &&
-            (s[i + 2] & 0xc0) == 0x80 &&
-            (s[i + 3] & 0xc0) == 0x80
-          if c == 0xf0 && s[i + 1] < 0x90
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x07) << 18) | ((s[i + 1] & 0x3f) << 12) |
-            ((s[i + 2] & 0x3f) << 6) | (s[i + 3] & 0x3f)
-          if u < 0x10000
-            buf.concat(u >> 8)
-            buf.concat(u & 0x00ff)
-          elsif u < 0x110000
-            high = ((u - 0x10000) >> 10) | 0xd800
-            low = (u & 0x03ff) | 0xdc00
-            buf.concat(high >> 8)
-            buf.concat(high & 0x00ff)
-            buf.concat(low >> 8)
-            buf.concat(low & 0x00ff)
-          else
-            raise DataFormatError, format("none-UTF-16 char detected (%04x)", u)
-          end
-          i += 4
-        else
-          raise DataFormatError, format("illegal UTF-8 sequence (%02x)", c)
-        end
-      end
-      return buf
-    end
-    private_class_method :u8tou16
-
-    class RawData # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class Atom # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class QuotedString # :nodoc:
-      def send_data(imap)
-        imap.send(:send_quoted_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class Literal # :nodoc:
-      def send_data(imap)
-        imap.send(:send_literal, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class MessageSet # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, format_internal(@data))
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-
-      def format_internal(data)
-        case data
-        when "*"
-          return data
-        when Integer
-          ensure_nz_number(data)
-          if data == -1
-            return "*"
-          else
-            return data.to_s
-          end
-        when Range
-          return format_internal(data.first) +
-            ":" + format_internal(data.last)
-        when Array
-          return data.collect {|i| format_internal(i)}.join(",")
-        when ThreadMember
-          return data.seqno.to_s +
-            ":" + data.children.collect {|i| format_internal(i).join(",")}
-        else
-          raise DataFormatError, data.inspect
-        end
-      end
-
-      def ensure_nz_number(num)
-        if num < -1 || num == 0 || num >= 4294967296
-          msg = "nz_number must be non-zero unsigned 32-bit integer: " +
-                num.inspect
-          raise DataFormatError, msg
-        end
-      end
-    end
-
-    # Net::IMAP::ContinuationRequest represents command continuation requests.
-    # 
-    # The command continuation request response is indicated by a "+" token
-    # instead of a tag.  This form of response indicates that the server is
-    # ready to accept the continuation of a command from the client.  The
-    # remainder of this response is a line of text.
-    # 
-    #   continue_req    ::= "+" SPACE (resp_text / base64)
-    # 
-    # ==== Fields:
-    # 
-    # data:: Returns the data (Net::IMAP::ResponseText).
-    # 
-    # raw_data:: Returns the raw data string.
-    ContinuationRequest = Struct.new(:data, :raw_data)
-
-    # Net::IMAP::UntaggedResponse represents untagged responses.
-    # 
-    # Data transmitted by the server to the client and status responses
-    # that do not indicate command completion are prefixed with the token
-    # "*", and are called untagged responses.
-    # 
-    #   response_data   ::= "*" SPACE (resp_cond_state / resp_cond_bye /
-    #                       mailbox_data / message_data / capability_data)
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the name such as "FLAGS", "LIST", "FETCH"....
-    # 
-    # data:: Returns the data such as an array of flag symbols,
-    #         a ((<Net::IMAP::MailboxList>)) object....
-    # 
-    # raw_data:: Returns the raw data string.
-    UntaggedResponse = Struct.new(:name, :data, :raw_data)
-     
-    # Net::IMAP::TaggedResponse represents tagged responses.
-    # 
-    # The server completion result response indicates the success or
-    # failure of the operation.  It is tagged with the same tag as the
-    # client command which began the operation.
-    # 
-    #   response_tagged ::= tag SPACE resp_cond_state CRLF
-    #   
-    #   tag             ::= 1*<any ATOM_CHAR except "+">
-    #   
-    #   resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text
-    # 
-    # ==== Fields:
-    # 
-    # tag:: Returns the tag.
-    # 
-    # name:: Returns the name. the name is one of "OK", "NO", "BAD".
-    # 
-    # data:: Returns the data. See ((<Net::IMAP::ResponseText>)).
-    # 
-    # raw_data:: Returns the raw data string.
-    #
-    TaggedResponse = Struct.new(:tag, :name, :data, :raw_data)
-     
-    # Net::IMAP::ResponseText represents texts of responses.
-    # The text may be prefixed by the response code.
-    # 
-    #   resp_text       ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text)
-    #                       ;; text SHOULD NOT begin with "[" or "="
-    # 
-    # ==== Fields:
-    # 
-    # code:: Returns the response code. See ((<Net::IMAP::ResponseCode>)).
-    #       
-    # text:: Returns the text.
-    # 
-    ResponseText = Struct.new(:code, :text)
-
-    # 
-    # Net::IMAP::ResponseCode represents response codes.
-    # 
-    #   resp_text_code  ::= "ALERT" / "PARSE" /
-    #                       "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" /
-    #                       "READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
-    #                       "UIDVALIDITY" SPACE nz_number /
-    #                       "UNSEEN" SPACE nz_number /
-    #                       atom [SPACE 1*<any TEXT_CHAR except "]">]
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the name such as "ALERT", "PERMANENTFLAGS", "UIDVALIDITY"....
-    # 
-    # data:: Returns the data if it exists.
-    #
-    ResponseCode = Struct.new(:name, :data)
-
-    # Net::IMAP::MailboxList represents contents of the LIST response.
-    # 
-    #   mailbox_list    ::= "(" #("\Marked" / "\Noinferiors" /
-    #                       "\Noselect" / "\Unmarked" / flag_extension) ")"
-    #                       SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox
-    # 
-    # ==== Fields:
-    # 
-    # attr:: Returns the name attributes. Each name attribute is a symbol
-    #        capitalized by String#capitalize, such as :Noselect (not :NoSelect).
-    # 
-    # delim:: Returns the hierarchy delimiter
-    # 
-    # name:: Returns the mailbox name.
-    #
-    MailboxList = Struct.new(:attr, :delim, :name)
-
-    # Net::IMAP::MailboxQuota represents contents of GETQUOTA response.
-    # This object can also be a response to GETQUOTAROOT.  In the syntax
-    # specification below, the delimiter used with the "#" construct is a
-    # single space (SPACE).
-    # 
-    #    quota_list      ::= "(" #quota_resource ")"
-    # 
-    #    quota_resource  ::= atom SPACE number SPACE number
-    # 
-    #    quota_response  ::= "QUOTA" SPACE astring SPACE quota_list
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: The mailbox with the associated quota.
-    # 
-    # usage:: Current storage usage of mailbox.
-    # 
-    # quota:: Quota limit imposed on mailbox.
-    #
-    MailboxQuota = Struct.new(:mailbox, :usage, :quota)
-
-    # Net::IMAP::MailboxQuotaRoot represents part of the GETQUOTAROOT
-    # response. (GETQUOTAROOT can also return Net::IMAP::MailboxQuota.)
-    # 
-    #    quotaroot_response ::= "QUOTAROOT" SPACE astring *(SPACE astring)
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: The mailbox with the associated quota.
-    # 
-    # quotaroots:: Zero or more quotaroots that effect the quota on the
-    #              specified mailbox.
-    #
-    MailboxQuotaRoot = Struct.new(:mailbox, :quotaroots)
-
-    # Net::IMAP::MailboxACLItem represents response from GETACL.
-    # 
-    #    acl_data        ::= "ACL" SPACE mailbox *(SPACE identifier SPACE rights)
-    # 
-    #    identifier      ::= astring
-    # 
-    #    rights          ::= astring
-    # 
-    # ==== Fields:
-    # 
-    # user:: Login name that has certain rights to the mailbox
-    #        that was specified with the getacl command.
-    # 
-    # rights:: The access rights the indicated user has to the
-    #          mailbox.
-    #
-    MailboxACLItem = Struct.new(:user, :rights)
-
-    # Net::IMAP::StatusData represents contents of the STATUS response.
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: Returns the mailbox name.
-    # 
-    # attr:: Returns a hash. Each key is one of "MESSAGES", "RECENT", "UIDNEXT",
-    #        "UIDVALIDITY", "UNSEEN". Each value is a number.
-    # 
-    StatusData = Struct.new(:mailbox, :attr)
-
-    # Net::IMAP::FetchData represents contents of the FETCH response.
-    # 
-    # ==== Fields:
-    # 
-    # seqno:: Returns the message sequence number.
-    #         (Note: not the unique identifier, even for the UID command response.)
-    # 
-    # attr:: Returns a hash. Each key is a data item name, and each value is
-    #        its value.
-    # 
-    #        The current data items are:
-    # 
-    #        [BODY]
-    #           A form of BODYSTRUCTURE without extension data.
-    #        [BODY[<section>]<<origin_octet>>]
-    #           A string expressing the body contents of the specified section.
-    #        [BODYSTRUCTURE]
-    #           An object that describes the [MIME-IMB] body structure of a message.
-    #           See Net::IMAP::BodyTypeBasic, Net::IMAP::BodyTypeText,
-    #           Net::IMAP::BodyTypeMessage, Net::IMAP::BodyTypeMultipart.
-    #        [ENVELOPE]
-    #           A Net::IMAP::Envelope object that describes the envelope
-    #           structure of a message.
-    #        [FLAGS]
-    #           A array of flag symbols that are set for this message. flag symbols
-    #           are capitalized by String#capitalize.
-    #        [INTERNALDATE]
-    #           A string representing the internal date of the message.
-    #        [RFC822]
-    #           Equivalent to BODY[].
-    #        [RFC822.HEADER]
-    #           Equivalent to BODY.PEEK[HEADER].
-    #        [RFC822.SIZE]
-    #           A number expressing the [RFC-822] size of the message.
-    #        [RFC822.TEXT]
-    #           Equivalent to BODY[TEXT].
-    #        [UID]
-    #           A number expressing the unique identifier of the message.
-    # 
-    FetchData = Struct.new(:seqno, :attr)
-
-    # Net::IMAP::Envelope represents envelope structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # date:: Returns a string that represents the date.
-    # 
-    # subject:: Returns a string that represents the subject.
-    # 
-    # from:: Returns an array of Net::IMAP::Address that represents the from.
-    # 
-    # sender:: Returns an array of Net::IMAP::Address that represents the sender.
-    # 
-    # reply_to:: Returns an array of Net::IMAP::Address that represents the reply-to.
-    # 
-    # to:: Returns an array of Net::IMAP::Address that represents the to.
-    # 
-    # cc:: Returns an array of Net::IMAP::Address that represents the cc.
-    # 
-    # bcc:: Returns an array of Net::IMAP::Address that represents the bcc.
-    # 
-    # in_reply_to:: Returns a string that represents the in-reply-to.
-    # 
-    # message_id:: Returns a string that represents the message-id.
-    # 
-    Envelope = Struct.new(:date, :subject, :from, :sender, :reply_to,
-                          :to, :cc, :bcc, :in_reply_to, :message_id)
-
-    # 
-    # Net::IMAP::Address represents electronic mail addresses.
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the phrase from [RFC-822] mailbox.
-    # 
-    # route:: Returns the route from [RFC-822] route-addr.
-    # 
-    # mailbox:: nil indicates end of [RFC-822] group.
-    #           If non-nil and host is nil, returns [RFC-822] group name.
-    #           Otherwise, returns [RFC-822] local-part
-    # 
-    # host:: nil indicates [RFC-822] group syntax.
-    #        Otherwise, returns [RFC-822] domain name.
-    #
-    Address = Struct.new(:name, :route, :mailbox, :host)
-
-    # 
-    # Net::IMAP::ContentDisposition represents Content-Disposition fields.
-    # 
-    # ==== Fields:
-    # 
-    # dsp_type:: Returns the disposition type.
-    # 
-    # param:: Returns a hash that represents parameters of the Content-Disposition
-    #         field.
-    # 
-    ContentDisposition = Struct.new(:dsp_type, :param)
-
-    # Net::IMAP::ThreadMember represents a thread-node returned 
-    # by Net::IMAP#thread
-    #
-    # ==== Fields:
-    #
-    # seqno:: The sequence number of this message.
-    #
-    # children:: an array of Net::IMAP::ThreadMember objects for mail
-    # items that are children of this in the thread.
-    #
-    ThreadMember = Struct.new(:seqno, :children)
-
-    # Net::IMAP::BodyTypeBasic represents basic body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # media_type:: Returns the content media type name as defined in [MIME-IMB].
-    # 
-    # subtype:: Returns the content subtype name as defined in [MIME-IMB].
-    # 
-    # param:: Returns a hash that represents parameters as defined in [MIME-IMB].
-    # 
-    # content_id:: Returns a string giving the content id as defined in [MIME-IMB].
-    # 
-    # description:: Returns a string giving the content description as defined in
-    #               [MIME-IMB].
-    # 
-    # encoding:: Returns a string giving the content transfer encoding as defined in
-    #            [MIME-IMB].
-    # 
-    # size:: Returns a number giving the size of the body in octets.
-    # 
-    # md5:: Returns a string giving the body MD5 value as defined in [MD5].
-    # 
-    # disposition:: Returns a Net::IMAP::ContentDisposition object giving
-    #               the content disposition.
-    # 
-    # language:: Returns a string or an array of strings giving the body
-    #            language value as defined in [LANGUAGE-TAGS].
-    # 
-    # extension:: Returns extension data.
-    # 
-    # multipart?:: Returns false.
-    # 
-    class BodyTypeBasic < Struct.new(:media_type, :subtype,
-                                     :param, :content_id,
-                                     :description, :encoding, :size,
-                                     :md5, :disposition, :language,
-                                     :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeText represents TEXT body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # lines:: Returns the size of the body in text lines.
-    # 
-    # And Net::IMAP::BodyTypeText has all fields of Net::IMAP::BodyTypeBasic.
-    # 
-    class BodyTypeText < Struct.new(:media_type, :subtype,
-                                    :param, :content_id,
-                                    :description, :encoding, :size,
-                                    :lines,
-                                    :md5, :disposition, :language,
-                                    :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeMessage represents MESSAGE/RFC822 body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # envelope:: Returns a Net::IMAP::Envelope giving the envelope structure.
-    # 
-    # body:: Returns an object giving the body structure.
-    # 
-    # And Net::IMAP::BodyTypeMessage has all methods of Net::IMAP::BodyTypeText.
-    #
-    class BodyTypeMessage < Struct.new(:media_type, :subtype,
-                                       :param, :content_id,
-                                       :description, :encoding, :size,
-                                       :envelope, :body, :lines,
-                                       :md5, :disposition, :language,
-                                       :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeMultipart represents multipart body structures 
-    # of messages.
-    # 
-    # ==== Fields:
-    # 
-    # media_type:: Returns the content media type name as defined in [MIME-IMB].
-    # 
-    # subtype:: Returns the content subtype name as defined in [MIME-IMB].
-    # 
-    # parts:: Returns multiple parts.
-    # 
-    # param:: Returns a hash that represents parameters as defined in [MIME-IMB].
-    # 
-    # disposition:: Returns a Net::IMAP::ContentDisposition object giving
-    #               the content disposition.
-    # 
-    # language:: Returns a string or an array of strings giving the body
-    #            language value as defined in [LANGUAGE-TAGS].
-    # 
-    # extension:: Returns extension data.
-    # 
-    # multipart?:: Returns true.
-    # 
-    class BodyTypeMultipart < Struct.new(:media_type, :subtype,
-                                         :parts,
-                                         :param, :disposition, :language,
-                                         :extension)
-      def multipart?
-        return true
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    class ResponseParser # :nodoc:
-      def parse(str)
-        @str = str
-        @pos = 0
-        @lex_state = EXPR_BEG
-        @token = nil
-        return response
-      end
-
-      private
-
-      EXPR_BEG          = :EXPR_BEG
-      EXPR_DATA         = :EXPR_DATA
-      EXPR_TEXT         = :EXPR_TEXT
-      EXPR_RTEXT        = :EXPR_RTEXT
-      EXPR_CTEXT        = :EXPR_CTEXT
-
-      T_SPACE   = :SPACE
-      T_NIL     = :NIL
-      T_NUMBER  = :NUMBER
-      T_ATOM    = :ATOM
-      T_QUOTED  = :QUOTED
-      T_LPAR    = :LPAR
-      T_RPAR    = :RPAR
-      T_BSLASH  = :BSLASH
-      T_STAR    = :STAR
-      T_LBRA    = :LBRA
-      T_RBRA    = :RBRA
-      T_LITERAL = :LITERAL
-      T_PLUS    = :PLUS
-      T_PERCENT = :PERCENT
-      T_CRLF    = :CRLF
-      T_EOF     = :EOF
-      T_TEXT    = :TEXT
-
-      BEG_REGEXP = /\G(?:\
-(?# 1:  SPACE   )( +)|\
-(?# 2:  NIL     )(NIL)(?=[\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+])|\
-(?# 3:  NUMBER  )(\d+)(?=[\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+])|\
-(?# 4:  ATOM    )([^\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+]+)|\
-(?# 5:  QUOTED  )"((?:[^\x00\r\n"\\]|\\["\\])*)"|\
-(?# 6:  LPAR    )(\()|\
-(?# 7:  RPAR    )(\))|\
-(?# 8:  BSLASH  )(\\)|\
-(?# 9:  STAR    )(\*)|\
-(?# 10: LBRA    )(\[)|\
-(?# 11: RBRA    )(\])|\
-(?# 12: LITERAL )\{(\d+)\}\r\n|\
-(?# 13: PLUS    )(\+)|\
-(?# 14: PERCENT )(%)|\
-(?# 15: CRLF    )(\r\n)|\
-(?# 16: EOF     )(\z))/ni
-
-      DATA_REGEXP = /\G(?:\
-(?# 1:  SPACE   )( )|\
-(?# 2:  NIL     )(NIL)|\
-(?# 3:  NUMBER  )(\d+)|\
-(?# 4:  QUOTED  )"((?:[^\x00\r\n"\\]|\\["\\])*)"|\
-(?# 5:  LITERAL )\{(\d+)\}\r\n|\
-(?# 6:  LPAR    )(\()|\
-(?# 7:  RPAR    )(\)))/ni
-
-      TEXT_REGEXP = /\G(?:\
-(?# 1:  TEXT    )([^\x00\r\n]*))/ni
-
-      RTEXT_REGEXP = /\G(?:\
-(?# 1:  LBRA    )(\[)|\
-(?# 2:  TEXT    )([^\x00\r\n]*))/ni
-
-      CTEXT_REGEXP = /\G(?:\
-(?# 1:  TEXT    )([^\x00\r\n\]]*))/ni
-
-      Token = Struct.new(:symbol, :value)
-
-      def response
-        token = lookahead
-        case token.symbol
-        when T_PLUS
-          result = continue_req
-        when T_STAR
-          result = response_untagged
-        else
-          result = response_tagged
-        end
-        match(T_CRLF)
-        match(T_EOF)
-        return result
-      end
-
-      def continue_req
-        match(T_PLUS)
-        match(T_SPACE)
-        return ContinuationRequest.new(resp_text, @str)
-      end
-
-      def response_untagged
-        match(T_STAR)
-        match(T_SPACE)
-        token = lookahead
-        if token.symbol == T_NUMBER
-          return numeric_response
-        elsif token.symbol == T_ATOM
-          case token.value
-          when /\A(?:OK|NO|BAD|BYE|PREAUTH)\z/ni
-            return response_cond
-          when /\A(?:FLAGS)\z/ni
-            return flags_response
-          when /\A(?:LIST|LSUB)\z/ni
-            return list_response
-          when /\A(?:QUOTA)\z/ni
-            return getquota_response
-          when /\A(?:QUOTAROOT)\z/ni
-            return getquotaroot_response
-          when /\A(?:ACL)\z/ni
-            return getacl_response
-          when /\A(?:SEARCH|SORT)\z/ni
-            return search_response
-          when /\A(?:THREAD)\z/ni
-            return thread_response
-          when /\A(?:STATUS)\z/ni
-            return status_response
-          when /\A(?:CAPABILITY)\z/ni
-            return capability_response
-          else
-            return text_response
-          end
-        else
-          parse_error("unexpected token %s", token.symbol)
-        end
-      end
-
-      def response_tagged
-        tag = atom
-        match(T_SPACE)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return TaggedResponse.new(tag, name, resp_text, @str)
-      end
-
-      def response_cond
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, resp_text, @str)
-      end
-
-      def numeric_response
-        n = number
-        match(T_SPACE)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        case name
-        when "EXISTS", "RECENT", "EXPUNGE"
-          return UntaggedResponse.new(name, n, @str)
-        when "FETCH"
-          shift_token
-          match(T_SPACE)
-          data = FetchData.new(n, msg_att)
-          return UntaggedResponse.new(name, data, @str)
-        end
-      end
-
-      def msg_att
-        match(T_LPAR)
-        attr = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-            token = lookahead
-          end
-          case token.value
-          when /\A(?:ENVELOPE)\z/ni
-            name, val = envelope_data
-          when /\A(?:FLAGS)\z/ni
-            name, val = flags_data
-          when /\A(?:INTERNALDATE)\z/ni
-            name, val = internaldate_data
-          when /\A(?:RFC822(?:\.HEADER|\.TEXT)?)\z/ni
-            name, val = rfc822_text
-          when /\A(?:RFC822\.SIZE)\z/ni
-            name, val = rfc822_size
-          when /\A(?:BODY(?:STRUCTURE)?)\z/ni
-            name, val = body_data
-          when /\A(?:UID)\z/ni
-            name, val = uid_data
-          else
-            parse_error("unknown attribute `%s'", token.value)
-          end
-          attr[name] = val
-        end
-        return attr
-      end
-
-      def envelope_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, envelope
-      end
-
-      def envelope
-        @lex_state = EXPR_DATA
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          result = nil
-        else
-          match(T_LPAR)
-          date = nstring
-          match(T_SPACE)
-          subject = nstring
-          match(T_SPACE)
-          from = address_list
-          match(T_SPACE)
-          sender = address_list
-          match(T_SPACE)
-          reply_to = address_list
-          match(T_SPACE)
-          to = address_list
-          match(T_SPACE)
-          cc = address_list
-          match(T_SPACE)
-          bcc = address_list
-          match(T_SPACE)
-          in_reply_to = nstring
-          match(T_SPACE)
-          message_id = nstring
-          match(T_RPAR)
-          result = Envelope.new(date, subject, from, sender, reply_to,
-                                to, cc, bcc, in_reply_to, message_id)
-        end
-        @lex_state = EXPR_BEG
-        return result
-      end
-
-      def flags_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, flag_list
-      end
-
-      def internaldate_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        token = match(T_QUOTED)
-        return name, token.value
-      end
-
-      def rfc822_text
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, nstring
-      end
-
-      def rfc822_size
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, number
-      end
-
-      def body_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          return name, body
-        end
-        name.concat(section)
-        token = lookahead
-        if token.symbol == T_ATOM
-          name.concat(token.value)
-          shift_token
-        end
-        match(T_SPACE)
-        data = nstring
-        return name, data
-      end
-
-      def body
-        @lex_state = EXPR_DATA
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          result = nil
-        else
-          match(T_LPAR)
-          token = lookahead
-          if token.symbol == T_LPAR
-            result = body_type_mpart
-          else
-            result = body_type_1part
-          end
-          match(T_RPAR)
-        end
-        @lex_state = EXPR_BEG
-        return result
-      end
-
-      def body_type_1part
-        token = lookahead
-        case token.value
-        when /\A(?:TEXT)\z/ni
-          return body_type_text
-        when /\A(?:MESSAGE)\z/ni
-          return body_type_msg
-        else
-          return body_type_basic
-        end
-      end
-
-      def body_type_basic
-        mtype, msubtype = media_type
-        token = lookahead
-        if token.symbol == T_RPAR
-          return BodyTypeBasic.new(mtype, msubtype)
-        end
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeBasic.new(mtype, msubtype,
-                                 param, content_id,
-                                 desc, enc, size,
-                                 md5, disposition, language, extension)
-      end
-
-      def body_type_text
-        mtype, msubtype = media_type
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        match(T_SPACE)
-        lines = number
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeText.new(mtype, msubtype,
-                                param, content_id,
-                                desc, enc, size,
-                                lines,
-                                md5, disposition, language, extension)
-      end
-
-      def body_type_msg
-        mtype, msubtype = media_type
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        match(T_SPACE)
-        env = envelope
-        match(T_SPACE)
-        b = body
-        match(T_SPACE)
-        lines = number
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeMessage.new(mtype, msubtype,
-                                   param, content_id,
-                                   desc, enc, size,
-                                   env, b, lines,
-                                   md5, disposition, language, extension)
-      end
-
-      def body_type_mpart
-        parts = []
-        while true
-          token = lookahead
-          if token.symbol == T_SPACE
-            shift_token
-            break
-          end
-          parts.push(body)
-        end
-        mtype = "MULTIPART"
-        msubtype = case_insensitive_string
-        param, disposition, language, extension = body_ext_mpart
-        return BodyTypeMultipart.new(mtype, msubtype, parts,
-                                     param, disposition, language,
-                                     extension)
-      end
-
-      def media_type
-        mtype = case_insensitive_string
-        match(T_SPACE)
-        msubtype = case_insensitive_string
-        return mtype, msubtype
-      end
-
-      def body_fields
-        param = body_fld_param
-        match(T_SPACE)
-        content_id = nstring
-        match(T_SPACE)
-        desc = nstring
-        match(T_SPACE)
-        enc = case_insensitive_string
-        match(T_SPACE)
-        size = number
-        return param, content_id, desc, enc, size
-      end
-
-      def body_fld_param
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        match(T_LPAR)
-        param = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-          end
-          name = case_insensitive_string
-          match(T_SPACE)
-          val = string
-          param[name] = val
-        end
-        return param
-      end
-
-      def body_ext_1part
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return nil
-        end
-        md5 = nstring
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5
-        end
-        disposition = body_fld_dsp
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5, disposition
-        end
-        language = body_fld_lang
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5, disposition, language
-        end
-
-        extension = body_extensions
-        return md5, disposition, language, extension
-      end
-
-      def body_ext_mpart
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return nil
-        end
-        param = body_fld_param
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return param
-        end
-        disposition = body_fld_dsp
-        match(T_SPACE)
-        language = body_fld_lang
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return param, disposition, language
-        end
-
-        extension = body_extensions
-        return param, disposition, language, extension
-      end
-
-      def body_fld_dsp
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        match(T_LPAR)
-        dsp_type = case_insensitive_string
-        match(T_SPACE)
-        param = body_fld_param
-        match(T_RPAR)
-        return ContentDisposition.new(dsp_type, param)
-      end
-
-      def body_fld_lang
-        token = lookahead
-        if token.symbol == T_LPAR
-          shift_token
-          result = []
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              shift_token
-              return result
-            when T_SPACE
-              shift_token
-            end
-            result.push(case_insensitive_string)
-          end
-        else
-          lang = nstring
-          if lang
-            return lang.upcase
-          else
-            return lang
-          end
-        end
-      end
-
-      def body_extensions
-        result = []
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            return result
-          when T_SPACE
-            shift_token
-          end
-          result.push(body_extension)
-        end
-      end
-
-      def body_extension
-        token = lookahead
-        case token.symbol
-        when T_LPAR
-          shift_token
-          result = body_extensions
-          match(T_RPAR)
-          return result
-        when T_NUMBER
-          return number
-        else
-          return nstring
-        end
-      end
-
-      def section
-        str = ""
-        token = match(T_LBRA)
-        str.concat(token.value)
-        token = match(T_ATOM, T_NUMBER, T_RBRA)
-        if token.symbol == T_RBRA
-          str.concat(token.value)
-          return str
-        end
-        str.concat(token.value)
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          str.concat(token.value)
-          token = match(T_LPAR)
-          str.concat(token.value)
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              str.concat(token.value)
-              shift_token
-              break
-            when T_SPACE
-              shift_token
-              str.concat(token.value)
-            end
-            str.concat(format_string(astring))
-          end
-        end
-        token = match(T_RBRA)
-        str.concat(token.value)
-        return str
-      end
-
-      def format_string(str)
-        case str
-        when ""
-          return '""'
-        when /[\x80-\xff\r\n]/n
-          # literal
-          return "{" + str.length.to_s + "}" + CRLF + str
-        when /[(){ \x00-\x1f\x7f%*"\\]/n
-          # quoted string
-          return '"' + str.gsub(/["\\]/n, "\\\\\\&") + '"'
-        else
-          # atom
-          return str
-        end
-      end
-
-      def uid_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, number
-      end
-
-      def text_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        @lex_state = EXPR_TEXT
-        token = match(T_TEXT)
-        @lex_state = EXPR_BEG
-        return UntaggedResponse.new(name, token.value)
-      end
-
-      def flags_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, flag_list, @str)
-      end
-
-      def list_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, mailbox_list, @str)
-      end
-
-      def mailbox_list
-        attr = flag_list
-        match(T_SPACE)
-        token = match(T_QUOTED, T_NIL)
-        if token.symbol == T_NIL
-          delim = nil
-        else
-          delim = token.value
-        end
-        match(T_SPACE)
-        name = astring
-        return MailboxList.new(attr, delim, name)
-      end
-
-      def getquota_response
-        # If quota never established, get back
-        # `NO Quota root does not exist'.
-        # If quota removed, get `()' after the
-        # folder spec with no mention of `STORAGE'.
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        match(T_SPACE)
-        match(T_LPAR)
-        token = lookahead
-        case token.symbol
-        when T_RPAR
-          shift_token
-          data = MailboxQuota.new(mailbox, nil, nil)
-          return UntaggedResponse.new(name, data, @str)
-        when T_ATOM
-          shift_token
-          match(T_SPACE)
-          token = match(T_NUMBER)
-          usage = token.value
-          match(T_SPACE)
-          token = match(T_NUMBER)
-          quota = token.value
-          match(T_RPAR)
-          data = MailboxQuota.new(mailbox, usage, quota)
-          return UntaggedResponse.new(name, data, @str)
-        else
-          parse_error("unexpected token %s", token.symbol)
-        end
-      end
-
-      def getquotaroot_response
-        # Similar to getquota, but only admin can use getquota.
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        quotaroots = []
-        while true
-          token = lookahead
-          break unless token.symbol == T_SPACE
-          shift_token
-          quotaroots.push(astring)
-        end
-        data = MailboxQuotaRoot.new(mailbox, quotaroots)
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def getacl_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        data = []
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          while true
-            token = lookahead
-            case token.symbol
-            when T_CRLF
-              break
-            when T_SPACE
-              shift_token
-            end
-            user = astring
-            match(T_SPACE)
-            rights = astring
-            ##XXX data.push([user, rights])
-            data.push(MailboxACLItem.new(user, rights))
-          end
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def search_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          data = []
-          while true
-            token = lookahead
-            case token.symbol
-            when T_CRLF
-              break
-            when T_SPACE
-              shift_token
-            end
-            data.push(number)
-          end
-        else
-          data = []
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def thread_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-
-        if token.symbol == T_SPACE
-          threads = []
-
-          while true
-            shift_token
-            token = lookahead
-
-            case token.symbol
-            when T_LPAR
-              threads << thread_branch(token)
-            when T_CRLF
-              break
-            end
-          end
-        else
-          # no member
-          threads = []
-        end
-
-        return UntaggedResponse.new(name, threads, @str)
-      end
-
-      def thread_branch(token)
-        rootmember = nil
-        lastmember = nil
-        
-        while true
-          shift_token    # ignore first T_LPAR
-          token = lookahead
-          
-          case token.symbol
-          when T_NUMBER
-            # new member
-            newmember = ThreadMember.new(number, [])
-            if rootmember.nil?
-              rootmember = newmember
-            else    
-              lastmember.children << newmember
-            end     
-            lastmember = newmember
-          when T_SPACE 
-            # do nothing 
-          when T_LPAR
-            if rootmember.nil?
-              # dummy member
-              lastmember = rootmember = ThreadMember.new(nil, [])
-            end     
-            
-            lastmember.children << thread_branch(token)
-          when T_RPAR
-            break   
-          end     
-        end
-        
-        return rootmember
-      end
-
-      def status_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        match(T_SPACE)
-        match(T_LPAR)
-        attr = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-          end
-          token = match(T_ATOM)
-          key = token.value.upcase
-          match(T_SPACE)
-          val = number
-          attr[key] = val
-        end
-        data = StatusData.new(mailbox, attr)
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def capability_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        data = []
-        while true
-          token = lookahead
-          case token.symbol
-          when T_CRLF
-            break
-          when T_SPACE
-            shift_token
-          end
-          data.push(atom.upcase)
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def resp_text
-        @lex_state = EXPR_RTEXT
-        token = lookahead
-        if token.symbol == T_LBRA
-          code = resp_text_code
-        else
-          code = nil
-        end
-        token = match(T_TEXT)
-        @lex_state = EXPR_BEG
-        return ResponseText.new(code, token.value)
-      end
-
-      def resp_text_code
-        @lex_state = EXPR_BEG
-        match(T_LBRA)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        case name
-        when /\A(?:ALERT|PARSE|READ-ONLY|READ-WRITE|TRYCREATE|NOMODSEQ)\z/n
-          result = ResponseCode.new(name, nil)
-        when /\A(?:PERMANENTFLAGS)\z/n
-          match(T_SPACE)
-          result = ResponseCode.new(name, flag_list)
-        when /\A(?:UIDVALIDITY|UIDNEXT|UNSEEN)\z/n
-          match(T_SPACE)
-          result = ResponseCode.new(name, number)
-        else
-          match(T_SPACE)
-          @lex_state = EXPR_CTEXT
-          token = match(T_TEXT)
-          @lex_state = EXPR_BEG
-          result = ResponseCode.new(name, token.value)
-        end
-        match(T_RBRA)
-        @lex_state = EXPR_RTEXT
-        return result
-      end
-
-      def address_list
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        else
-          result = []
-          match(T_LPAR)
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              shift_token
-              break
-            when T_SPACE
-              shift_token
-            end
-            result.push(address)
-          end
-          return result
-        end
-      end
-
-      ADDRESS_REGEXP = /\G\
-(?# 1: NAME     )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 2: ROUTE    )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 3: MAILBOX  )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 4: HOST     )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)")\
-\)/ni
-
-      def address
-        match(T_LPAR)
-        if @str.index(ADDRESS_REGEXP, @pos)
-          # address does not include literal.
-          @pos = $~.end(0)
-          name = $1
-          route = $2
-          mailbox = $3
-          host = $4
-          for s in [name, route, mailbox, host]
-            if s
-              s.gsub!(/\\(["\\])/n, "\\1")
-            end
-          end
-        else
-          name = nstring
-          match(T_SPACE)
-          route = nstring
-          match(T_SPACE)
-          mailbox = nstring
-          match(T_SPACE)
-          host = nstring
-          match(T_RPAR)
-        end
-        return Address.new(name, route, mailbox, host)
-      end
-
-#        def flag_list
-#       result = []
-#       match(T_LPAR)
-#       while true
-#         token = lookahead
-#         case token.symbol
-#         when T_RPAR
-#           shift_token
-#           break
-#         when T_SPACE
-#           shift_token
-#         end
-#         result.push(flag)
-#       end
-#       return result
-#        end
-
-#        def flag
-#       token = lookahead
-#       if token.symbol == T_BSLASH
-#         shift_token
-#         token = lookahead
-#         if token.symbol == T_STAR
-#           shift_token
-#           return token.value.intern
-#         else
-#           return atom.intern
-#         end
-#       else
-#         return atom
-#       end
-#        end
-
-      FLAG_REGEXP = /\
-(?# FLAG        )\\([^\x80-\xff(){ \x00-\x1f\x7f%"\\]+)|\
-(?# ATOM        )([^\x80-\xff(){ \x00-\x1f\x7f%*"\\]+)/n
-
-      def flag_list
-        if @str.index(/\(([^)]*)\)/ni, @pos)
-          @pos = $~.end(0)
-          return $1.scan(FLAG_REGEXP).collect { |flag, atom|
-            atom || flag.capitalize.intern
-          }
-        else
-          parse_error("invalid flag list")
-        end
-      end
-
-      def nstring
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        else
-          return string
-        end
-      end
-
-      def astring
-        token = lookahead
-        if string_token?(token)
-          return string
-        else
-          return atom
-        end
-      end
-
-      def string
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_QUOTED, T_LITERAL)
-        return token.value
-      end
-
-      STRING_TOKENS = [T_QUOTED, T_LITERAL, T_NIL]
-
-      def string_token?(token)
-        return STRING_TOKENS.include?(token.symbol)
-      end
-
-      def case_insensitive_string
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_QUOTED, T_LITERAL)
-        return token.value.upcase
-      end
-
-      def atom
-        result = ""
-        while true
-          token = lookahead
-          if atom_token?(token)
-            result.concat(token.value)
-            shift_token
-          else
-            if result.empty?
-              parse_error("unexpected token %s", token.symbol)
-            else
-              return result
-            end
-          end
-        end
-      end
-
-      ATOM_TOKENS = [
-        T_ATOM,
-        T_NUMBER,
-        T_NIL,
-        T_LBRA,
-        T_RBRA,
-        T_PLUS
-      ]
-
-      def atom_token?(token)
-        return ATOM_TOKENS.include?(token.symbol)
-      end
-
-      def number
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_NUMBER)
-        return token.value.to_i
-      end
-
-      def nil_atom
-        match(T_NIL)
-        return nil
-      end
-
-      def match(*args)
-        token = lookahead
-        unless args.include?(token.symbol)
-          parse_error('unexpected token %s (expected %s)',
-                      token.symbol.id2name,
-                      args.collect {|i| i.id2name}.join(" or "))
-        end
-        shift_token
-        return token
-      end
-
-      def lookahead
-        unless @token
-          @token = next_token
-        end
-        return @token
-      end
-
-      def shift_token
-        @token = nil
-      end
-
-      def next_token
-        case @lex_state
-        when EXPR_BEG
-          if @str.index(BEG_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_SPACE, $+)
-            elsif $2
-              return Token.new(T_NIL, $+)
-            elsif $3
-              return Token.new(T_NUMBER, $+)
-            elsif $4
-              return Token.new(T_ATOM, $+)
-            elsif $5
-              return Token.new(T_QUOTED,
-                               $+.gsub(/\\(["\\])/n, "\\1"))
-            elsif $6
-              return Token.new(T_LPAR, $+)
-            elsif $7
-              return Token.new(T_RPAR, $+)
-            elsif $8
-              return Token.new(T_BSLASH, $+)
-            elsif $9
-              return Token.new(T_STAR, $+)
-            elsif $10
-              return Token.new(T_LBRA, $+)
-            elsif $11
-              return Token.new(T_RBRA, $+)
-            elsif $12
-              len = $+.to_i
-              val = @str[@pos, len]
-              @pos += len
-              return Token.new(T_LITERAL, val)
-            elsif $13
-              return Token.new(T_PLUS, $+)
-            elsif $14
-              return Token.new(T_PERCENT, $+)
-            elsif $15
-              return Token.new(T_CRLF, $+)
-            elsif $16
-              return Token.new(T_EOF, $+)
-            else
-              parse_error("[Net::IMAP BUG] BEG_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_DATA
-          if @str.index(DATA_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_SPACE, $+)
-            elsif $2
-              return Token.new(T_NIL, $+)
-            elsif $3
-              return Token.new(T_NUMBER, $+)
-            elsif $4
-              return Token.new(T_QUOTED,
-                               $+.gsub(/\\(["\\])/n, "\\1"))
-            elsif $5
-              len = $+.to_i
-              val = @str[@pos, len]
-              @pos += len
-              return Token.new(T_LITERAL, val)
-            elsif $6
-              return Token.new(T_LPAR, $+)
-            elsif $7
-              return Token.new(T_RPAR, $+)
-            else
-              parse_error("[Net::IMAP BUG] DATA_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_TEXT
-          if @str.index(TEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] TEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_RTEXT
-          if @str.index(RTEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_LBRA, $+)
-            elsif $2
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] RTEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_CTEXT
-          if @str.index(CTEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] CTEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos) #/
-            parse_error("unknown token - %s", $&.dump)
-          end
-        else
-          parse_error("illegal @lex_state - %s", @lex_state.inspect)
-        end
-      end
-
-      def parse_error(fmt, *args)
-        if IMAP.debug
-          $stderr.printf("@str: %s\n", @str.dump)
-          $stderr.printf("@pos: %d\n", @pos)
-          $stderr.printf("@lex_state: %s\n", @lex_state)
-          if @token
-            $stderr.printf("@token.symbol: %s\n", @token.symbol)
-            $stderr.printf("@token.value: %s\n", @token.value.inspect)
-          end
-        end
-        raise ResponseParseError, format(fmt, *args)
-      end
-    end
-
-    # Authenticator for the "LOGIN" authentication type.  See
-    # #authenticate().
-    class LoginAuthenticator
-      def process(data)
-        case @state
-        when STATE_USER
-          @state = STATE_PASSWORD
-          return @user
-        when STATE_PASSWORD
-          return @password
-        end
-      end
-
-      private
-
-      STATE_USER = :USER
-      STATE_PASSWORD = :PASSWORD
-
-      def initialize(user, password)
-        @user = user
-        @password = password
-        @state = STATE_USER
-      end
-    end
-    add_authenticator "LOGIN", LoginAuthenticator
-
-    # Authenticator for the "CRAM-MD5" authentication type.  See
-    # #authenticate().
-    class CramMD5Authenticator
-      def process(challenge)
-        digest = hmac_md5(challenge, @password)
-        return @user + " " + digest
-      end
-
-      private
-
-      def initialize(user, password)
-        @user = user
-        @password = password
-      end
-
-      def hmac_md5(text, key)
-        if key.length > 64
-          key = Digest::MD5.digest(key)
-        end
-
-        k_ipad = key + "\0" * (64 - key.length)
-        k_opad = key + "\0" * (64 - key.length)
-        for i in 0..63
-          k_ipad[i] ^= 0x36
-          k_opad[i] ^= 0x5c
-        end
-
-        digest = Digest::MD5.digest(k_ipad + text)
-
-        return Digest::MD5.hexdigest(k_opad + digest)
-      end
-    end
-    add_authenticator "CRAM-MD5", CramMD5Authenticator
-
-    # Superclass of IMAP errors.
-    class Error < StandardError
-    end
-
-    # Error raised when data is in the incorrect format.
-    class DataFormatError < Error
-    end
-
-    # Error raised when a response from the server is non-parseable.
-    class ResponseParseError < Error
-    end
-
-    # Superclass of all errors used to encapsulate "fail" responses
-    # from the server.
-    class ResponseError < Error
-    end
-
-    # Error raised upon a "NO" response from the server, indicating
-    # that the client command could not be completed successfully.
-    class NoResponseError < ResponseError
-    end
-
-    # Error raised upon a "BAD" response from the server, indicating
-    # that the client command violated the IMAP protocol, or an internal
-    # server failure has occurred.
-    class BadResponseError < ResponseError
-    end
-
-    # Error raised upon a "BYE" response from the server, indicating 
-    # that the client is not being allowed to login, or has been timed
-    # out due to inactivity.
-    class ByeResponseError < ResponseError
-    end
-  end
-end
-
-if __FILE__ == $0
-  # :enddoc:
-  require "getoptlong"
-
-  $stdout.sync = true
-  $port = nil
-  $user = ENV["USER"] || ENV["LOGNAME"]
-  $auth = "login"
-  $ssl = false
-
-  def usage
-    $stderr.print <<EOF
-usage: #{$0} [options] <host>
-
-  --help                        print this message
-  --port=PORT                   specifies port
-  --user=USER                   specifies user
-  --auth=AUTH                   specifies auth type
-  --ssl                         use ssl
-EOF
-  end
-
-  def get_password
-    print "password: "
-    system("stty", "-echo")
-    begin
-      return gets.chop
-    ensure
-      system("stty", "echo")
-      print "\n"
-    end
-  end
-
-  def get_command
-    printf("%s@%s> ", $user, $host)
-    if line = gets
-      return line.strip.split(/\s+/)
-    else
-      return nil
-    end
-  end
-
-  parser = GetoptLong.new
-  parser.set_options(['--debug', GetoptLong::NO_ARGUMENT],
-                     ['--help', GetoptLong::NO_ARGUMENT],
-                     ['--port', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--user', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--auth', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--ssl', GetoptLong::NO_ARGUMENT])
-  begin
-    parser.each_option do |name, arg|
-      case name
-      when "--port"
-        $port = arg
-      when "--user"
-        $user = arg
-      when "--auth"
-        $auth = arg
-      when "--ssl"
-        $ssl = true
-      when "--debug"
-        Net::IMAP.debug = true
-      when "--help"
-        usage
-        exit(1)
-      end
-    end
-  rescue
-    usage
-    exit(1)
-  end
-
-  $host = ARGV.shift
-  unless $host
-    usage
-    exit(1)
-  end
-  $port ||= $ssl ? 993 : 143
-    
-  imap = Net::IMAP.new($host, $port, $ssl)
-  begin
-    password = get_password
-    imap.authenticate($auth, $user, password)
-    while true
-      cmd, *args = get_command
-      break unless cmd
-      begin
-        case cmd
-        when "list"
-          for mbox in imap.list("", args[0] || "*")
-            if mbox.attr.include?(Net::IMAP::NOSELECT)
-              prefix = "!"
-            elsif mbox.attr.include?(Net::IMAP::MARKED)
-              prefix = "*"
-            else
-              prefix = " "
-            end
-            print prefix, mbox.name, "\n"
-          end
-        when "select"
-          imap.select(args[0] || "inbox")
-          print "ok\n"
-        when "close"
-          imap.close
-          print "ok\n"
-        when "summary"
-          unless messages = imap.responses["EXISTS"][-1]
-            puts "not selected"
-            next
-          end
-          if messages > 0
-            for data in imap.fetch(1..-1, ["ENVELOPE"])
-              print data.seqno, ": ", data.attr["ENVELOPE"].subject, "\n"
-            end
-          else
-            puts "no message"
-          end
-        when "fetch"
-          if args[0]
-            data = imap.fetch(args[0].to_i, ["RFC822.HEADER", "RFC822.TEXT"])[0]
-            puts data.attr["RFC822.HEADER"]
-            puts data.attr["RFC822.TEXT"]
-          else
-            puts "missing argument"
-          end
-        when "logout", "exit", "quit"
-          break
-        when "help", "?"
-          print <<EOF
-list [pattern]                  list mailboxes
-select [mailbox]                select mailbox
-close                           close mailbox
-summary                         display summary
-fetch [msgno]                   display message
-logout                          logout
-help, ?                         display help message
-EOF
-        else
-          print "unknown command: ", cmd, "\n"
-        end
-      rescue Net::IMAP::Error
-        puts $!
-      end
-    end
-  ensure
-    imap.logout
-    imap.disconnect
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/pop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/pop.rb
deleted file mode 100644
index c879352..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/pop.rb
+++ /dev/null
@@ -1,881 +0,0 @@
-# = net/pop.rb
-#
-# Copyright (c) 1999-2003 Yukihiro Matsumoto.
-#
-# Copyright (c) 1999-2003 Minero Aoki.
-# 
-# Written & maintained by Minero Aoki <aamine at loveruby.net>.
-#
-# Documented by William Webber and Minero Aoki.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-# 
-# NOTE: You can find Japanese version of this document in
-# the doc/net directory of the standard ruby interpreter package.
-# 
-#   $Id: pop.rb 17230 2008-06-15 12:27:56Z shyouhei $
-#
-# See Net::POP3 for documentation.
-#
-
-require 'net/protocol'
-require 'digest/md5'
-
-module Net
-
-  # Non-authentication POP3 protocol error
-  # (reply code "-ERR", except authentication).
-  class POPError < ProtocolError; end
-
-  # POP3 authentication error.
-  class POPAuthenticationError < ProtoAuthError; end
-
-  # Unexpected response from the server.
-  class POPBadResponse < POPError; end
-
-  #
-  # = Net::POP3
-  #
-  # == What is This Library?
-  # 
-  # This library provides functionality for retrieving 
-  # email via POP3, the Post Office Protocol version 3. For details
-  # of POP3, see [RFC1939] (http://www.ietf.org/rfc/rfc1939.txt).
-  # 
-  # == Examples
-  # 
-  # === Retrieving Messages 
-  # 
-  # This example retrieves messages from the server and deletes them 
-  # on the server.
-  #
-  # Messages are written to files named 'inbox/1', 'inbox/2', ....
-  # Replace 'pop.example.com' with your POP3 server address, and
-  # 'YourAccount' and 'YourPassword' with the appropriate account
-  # details.
-  # 
-  #     require 'net/pop'
-  # 
-  #     pop = Net::POP3.new('pop.example.com')
-  #     pop.start('YourAccount', 'YourPassword')             # (1)
-  #     if pop.mails.empty?
-  #       puts 'No mail.'
-  #     else
-  #       i = 0
-  #       pop.each_mail do |m|   # or "pop.mails.each ..."   # (2)
-  #         File.open("inbox/#{i}", 'w') do |f|
-  #           f.write m.pop
-  #         end
-  #         m.delete
-  #         i += 1
-  #       end
-  #       puts "#{pop.mails.size} mails popped."
-  #     end
-  #     pop.finish                                           # (3)
-  # 
-  # 1. Call Net::POP3#start and start POP session.
-  # 2. Access messages by using POP3#each_mail and/or POP3#mails.
-  # 3. Close POP session by calling POP3#finish or use the block form of #start.
-  # 
-  # === Shortened Code
-  # 
-  # The example above is very verbose. You can shorten the code by using
-  # some utility methods. First, the block form of Net::POP3.start can
-  # be used instead of POP3.new, POP3#start and POP3#finish.
-  # 
-  #     require 'net/pop'
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'YourAccount', 'YourPassword') do |pop|
-  #       if pop.mails.empty?
-  #         puts 'No mail.'
-  #       else
-  #         i = 0
-  #         pop.each_mail do |m|   # or "pop.mails.each ..."
-  #           File.open("inbox/#{i}", 'w') do |f|
-  #             f.write m.pop
-  #           end
-  #           m.delete
-  #           i += 1
-  #         end
-  #         puts "#{pop.mails.size} mails popped."
-  #       end
-  #     end
-  # 
-  # POP3#delete_all is an alternative for #each_mail and #delete.
-  # 
-  #     require 'net/pop'
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'YourAccount', 'YourPassword') do |pop|
-  #       if pop.mails.empty?
-  #         puts 'No mail.'
-  #       else
-  #         i = 1
-  #         pop.delete_all do |m|
-  #           File.open("inbox/#{i}", 'w') do |f|
-  #             f.write m.pop
-  #           end
-  #           i += 1
-  #         end
-  #       end
-  #     end
-  # 
-  # And here is an even shorter example.
-  # 
-  #     require 'net/pop'
-  # 
-  #     i = 0
-  #     Net::POP3.delete_all('pop.example.com', 110,
-  #                          'YourAccount', 'YourPassword') do |m|
-  #       File.open("inbox/#{i}", 'w') do |f|
-  #         f.write m.pop
-  #       end
-  #       i += 1
-  #     end
-  # 
-  # === Memory Space Issues
-  # 
-  # All the examples above get each message as one big string.
-  # This example avoids this.
-  # 
-  #     require 'net/pop'
-  # 
-  #     i = 1
-  #     Net::POP3.delete_all('pop.example.com', 110,
-  #                          'YourAccount', 'YourPassword') do |m|
-  #       File.open("inbox/#{i}", 'w') do |f|
-  #         m.pop do |chunk|    # get a message little by little.
-  #           f.write chunk
-  #         end
-  #         i += 1
-  #       end
-  #     end
-  # 
-  # === Using APOP
-  # 
-  # The net/pop library supports APOP authentication.
-  # To use APOP, use the Net::APOP class instead of the Net::POP3 class.
-  # You can use the utility method, Net::POP3.APOP(). For example:
-  # 
-  #     require 'net/pop'
-  # 
-  #     # Use APOP authentication if $isapop == true
-  #     pop = Net::POP3.APOP($is_apop).new('apop.example.com', 110)
-  #     pop.start(YourAccount', 'YourPassword') do |pop|
-  #       # Rest of the code is the same.
-  #     end
-  # 
-  # === Fetch Only Selected Mail Using 'UIDL' POP Command
-  # 
-  # If your POP server provides UIDL functionality,
-  # you can grab only selected mails from the POP server.
-  # e.g.
-  # 
-  #     def need_pop?( id )
-  #       # determine if we need pop this mail...
-  #     end
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'Your account', 'Your password') do |pop|
-  #       pop.mails.select { |m| need_pop?(m.unique_id) }.each do |m|
-  #         do_something(m.pop)
-  #       end
-  #     end
-  # 
-  # The POPMail#unique_id() method returns the unique-id of the message as a
-  # String. Normally the unique-id is a hash of the message.
-  # 
-  class POP3 < Protocol
-
-    Revision = %q$Revision: 17230 $.split[1]
-
-    #
-    # Class Parameters
-    #
-
-    # The default port for POP3 connections, port 110
-    def POP3.default_port
-      110
-    end
-
-    def POP3.socket_type   #:nodoc: obsolete
-      Net::InternetMessageIO
-    end
-
-    #
-    # Utilities
-    #
-
-    # Returns the APOP class if +isapop+ is true; otherwise, returns
-    # the POP class.  For example:
-    #
-    #     # Example 1
-    #     pop = Net::POP3::APOP($is_apop).new(addr, port)
-    #
-    #     # Example 2
-    #     Net::POP3::APOP($is_apop).start(addr, port) do |pop|
-    #       ....
-    #     end
-    #
-    def POP3.APOP( isapop )
-      isapop ? APOP : POP3
-    end
-
-    # Starts a POP3 session and iterates over each POPMail object,
-    # yielding it to the +block+.
-    # This method is equivalent to:
-    #
-    #     Net::POP3.start(address, port, account, password) do |pop|
-    #       pop.each_mail do |m|
-    #         yield m
-    #       end
-    #     end
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    #
-    # === Example
-    #
-    #     Net::POP3.foreach('pop.example.com', 110,
-    #                       'YourAccount', 'YourPassword') do |m|
-    #       file.write m.pop
-    #       m.delete if $DELETE
-    #     end
-    #
-    def POP3.foreach( address, port = nil,
-                      account = nil, password = nil,
-                      isapop = false, &block )  # :yields: message
-      start(address, port, account, password, isapop) {|pop|
-        pop.each_mail(&block)
-      }
-    end
-
-    # Starts a POP3 session and deletes all messages on the server.
-    # If a block is given, each POPMail object is yielded to it before
-    # being deleted.
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    #
-    # === Example
-    #
-    #     Net::POP3.delete_all('pop.example.com', 110,
-    #                          'YourAccount', 'YourPassword') do |m|
-    #       file.write m.pop
-    #     end
-    #
-    def POP3.delete_all( address, port = nil,
-                         account = nil, password = nil,
-                         isapop = false, &block )
-      start(address, port, account, password, isapop) {|pop|
-        pop.delete_all(&block)
-      }
-    end
-
-    # Opens a POP3 session, attempts authentication, and quits.
-    #
-    # This method raises POPAuthenticationError if authentication fails.
-    #
-    # === Example: normal POP3
-    #
-    #     Net::POP3.auth_only('pop.example.com', 110,
-    #                         'YourAccount', 'YourPassword')
-    #
-    # === Example: APOP
-    #
-    #     Net::POP3.auth_only('pop.example.com', 110,
-    #                         'YourAccount', 'YourPassword', true)
-    #
-    def POP3.auth_only( address, port = nil,
-                        account = nil, password = nil,
-                        isapop = false )
-      new(address, port, isapop).auth_only account, password
-    end
-
-    # Starts a pop3 session, attempts authentication, and quits.
-    # This method must not be called while POP3 session is opened.
-    # This method raises POPAuthenticationError if authentication fails.
-    def auth_only( account, password )
-      raise IOError, 'opening previously opened POP session' if started?
-      start(account, password) {
-        ;
-      }
-    end
-
-    #
-    # Session management
-    #
-
-    # Creates a new POP3 object and open the connection.  Equivalent to 
-    #
-    #   Net::POP3.new(address, port, isapop).start(account, password)
-    #
-    # If +block+ is provided, yields the newly-opened POP3 object to it,
-    # and automatically closes it at the end of the session.
-    #
-    # === Example
-    #
-    #    Net::POP3.start(addr, port, account, password) do |pop|
-    #      pop.each_mail do |m|
-    #        file.write m.pop
-    #        m.delete
-    #      end
-    #    end
-    #
-    def POP3.start( address, port = nil,
-                    account = nil, password = nil,
-                    isapop = false, &block ) # :yield: pop
-      new(address, port, isapop).start(account, password, &block)
-    end
-
-    # Creates a new POP3 object.
-    #
-    # +address+ is the hostname or ip address of your POP3 server.
-    #
-    # The optional +port+ is the port to connect to; it defaults to 110.
-    #
-    # The optional +isapop+ specifies whether this connection is going
-    # to use APOP authentication; it defaults to +false+.
-    #
-    # This method does *not* open the TCP connection.
-    def initialize( addr, port = nil, isapop = false )
-      @address = addr
-      @port = port || self.class.default_port
-      @apop = isapop
-
-      @command = nil
-      @socket = nil
-      @started = false
-      @open_timeout = 30
-      @read_timeout = 60
-      @debug_output = nil
-
-      @mails = nil
-      @n_mails = nil
-      @n_bytes = nil
-    end
-
-    # Does this instance use APOP authentication?
-    def apop?
-      @apop
-    end
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} open=#{@started}>"
-    end
-
-    # *WARNING*: This method causes a serious security hole.
-    # Use this method only for debugging.
-    #
-    # Set an output stream for debugging.
-    #
-    # === Example
-    #
-    #   pop = Net::POP.new(addr, port)
-    #   pop.set_debug_output $stderr
-    #   pop.start(account, passwd) do |pop|
-    #     ....
-    #   end
-    #
-    def set_debug_output( arg )
-      @debug_output = arg
-    end
-
-    # The address to connect to.
-    attr_reader :address
-
-    # The port number to connect to.
-    attr_reader :port
-
-    # Seconds to wait until a connection is opened.
-    # If the POP3 object cannot open a connection within this time,
-    # it raises a TimeoutError exception.
-    attr_accessor :open_timeout
-
-    # Seconds to wait until reading one block (by one read(1) call).
-    # If the POP3 object cannot complete a read() within this time,
-    # it raises a TimeoutError exception.
-    attr_reader :read_timeout
-
-    # Set the read timeout.
-    def read_timeout=( sec )
-      @command.socket.read_timeout = sec if @command
-      @read_timeout = sec
-    end
-
-    # +true+ if the POP3 session has started.
-    def started?
-      @started
-    end
-
-    alias active? started?   #:nodoc: obsolete
-
-    # Starts a POP3 session.
-    #
-    # When called with block, gives a POP3 object to the block and
-    # closes the session after block call finishes.
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    def start( account, password ) # :yield: pop
-      raise IOError, 'POP session already started' if @started
-
-      if block_given?
-        begin
-          do_start account, password
-          return yield(self)
-        ensure
-          do_finish
-        end
-      else
-        do_start account, password
-        return self
-      end
-    end
-
-    def do_start( account, password )
-      @socket = self.class.socket_type.old_open(@address, @port,
-                                   @open_timeout, @read_timeout, @debug_output)
-      on_connect
-      @command = POP3Command.new(@socket)
-      if apop?
-        @command.apop account, password
-      else
-        @command.auth account, password
-      end
-      @started = true
-    ensure
-      do_finish if not @started
-    end
-    private :do_start
-
-    def on_connect
-    end
-    private :on_connect
-
-    # Finishes a POP3 session and closes TCP connection.
-    def finish
-      raise IOError, 'POP session not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      @mails = nil
-      @n_mails = nil
-      @n_bytes = nil
-      @command.quit if @command
-    ensure
-      @started = false
-      @command = nil
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    def command
-      raise IOError, 'POP session not opened yet' \
-                                      if not @socket or @socket.closed?
-      @command
-    end
-    private :command
-
-    #
-    # POP protocol wrapper
-    #
-
-    # Returns the number of messages on the POP server.
-    def n_mails
-      return @n_mails if @n_mails
-      @n_mails, @n_bytes = command().stat
-      @n_mails
-    end
-
-    # Returns the total size in bytes of all the messages on the POP server.
-    def n_bytes
-      return @n_bytes if @n_bytes
-      @n_mails, @n_bytes = command().stat
-      @n_bytes
-    end
-
-    # Returns an array of Net::POPMail objects, representing all the
-    # messages on the server.  This array is renewed when the session
-    # restarts; otherwise, it is fetched from the server the first time
-    # this method is called (directly or indirectly) and cached.
-    #
-    # This method raises a POPError if an error occurs.
-    def mails
-      return @mails.dup if @mails
-      if n_mails() == 0
-        # some popd raises error for LIST on the empty mailbox.
-        @mails = []
-        return []
-      end
-
-      @mails = command().list.map {|num, size|
-        POPMail.new(num, size, self, command())
-      }
-      @mails.dup
-    end
-
-    # Yields each message to the passed-in block in turn.
-    # Equivalent to:
-    # 
-    #   pop3.mails.each do |popmail|
-    #     ....
-    #   end
-    #
-    # This method raises a POPError if an error occurs.
-    def each_mail( &block )  # :yield: message
-      mails().each(&block)
-    end
-
-    alias each each_mail
-
-    # Deletes all messages on the server.
-    #
-    # If called with a block, yields each message in turn before deleting it.
-    #
-    # === Example
-    #
-    #     n = 1
-    #     pop.delete_all do |m|
-    #       File.open("inbox/#{n}") do |f|
-    #         f.write m.pop
-    #       end
-    #       n += 1
-    #     end
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    def delete_all # :yield: message
-      mails().each do |m|
-        yield m if block_given?
-        m.delete unless m.deleted?
-      end
-    end
-
-    # Resets the session.  This clears all "deleted" marks from messages.
-    #
-    # This method raises a POPError if an error occurs.
-    def reset
-      command().rset
-      mails().each do |m|
-        m.instance_eval {
-          @deleted = false
-        }
-      end
-    end
-
-    def set_all_uids   #:nodoc: internal use only (called from POPMail#uidl)
-      command().uidl.each do |num, uid|
-        @mails.find {|m| m.number == num }.uid = uid
-      end
-    end
-
-  end   # class POP3
-
-  # class aliases
-  POP = POP3
-  POPSession  = POP3
-  POP3Session = POP3
-
-  #
-  # This class is equivalent to POP3, except that it uses APOP authentication.
-  #
-  class APOP < POP3
-    # Always returns true.
-    def apop?
-      true
-    end
-  end
-
-  # class aliases
-  APOPSession = APOP
-
-  #
-  # This class represents a message which exists on the POP server.
-  # Instances of this class are created by the POP3 class; they should
-  # not be directly created by the user.
-  #
-  class POPMail
-
-    def initialize( num, len, pop, cmd )   #:nodoc:
-      @number = num
-      @length = len
-      @pop = pop
-      @command = cmd
-      @deleted = false
-      @uid = nil
-    end
-
-    # The sequence number of the message on the server.
-    attr_reader :number
-
-    # The length of the message in octets.
-    attr_reader :length
-    alias size length
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
-    end
-
-    #
-    # This method fetches the message.  If called with a block, the
-    # message is yielded to the block one chunk at a time.  If called
-    # without a block, the message is returned as a String.  The optional 
-    # +dest+ argument will be prepended to the returned String; this
-    # argument is essentially obsolete.
-    #
-    # === Example without block
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           f.write popmail.pop              
-    #         end
-    #         popmail.delete
-    #         n += 1
-    #       end
-    #     end
-    #
-    # === Example with block
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           popmail.pop do |chunk|            ####
-    #             f.write chunk
-    #           end
-    #         end
-    #         n += 1
-    #       end
-    #     end
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    def pop( dest = '', &block ) # :yield: message_chunk
-      if block_given?
-        @command.retr(@number, &block)
-        nil
-      else
-        @command.retr(@number) do |chunk|
-          dest << chunk
-        end
-        dest
-      end
-    end
-
-    alias all pop    #:nodoc: obsolete
-    alias mail pop   #:nodoc: obsolete
-
-    # Fetches the message header and +lines+ lines of body. 
-    #
-    # The optional +dest+ argument is obsolete.
-    #
-    # This method raises a POPError if an error occurs.
-    def top( lines, dest = '' )
-      @command.top(@number, lines) do |chunk|
-        dest << chunk
-      end
-      dest
-    end
-
-    # Fetches the message header.     
-    #
-    # The optional +dest+ argument is obsolete.
-    #
-    # This method raises a POPError if an error occurs.
-    def header( dest = '' )
-      top(0, dest)
-    end
-
-    # Marks a message for deletion on the server.  Deletion does not
-    # actually occur until the end of the session; deletion may be
-    # cancelled for _all_ marked messages by calling POP3#reset().
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    # === Example
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           f.write popmail.pop
-    #         end
-    #         popmail.delete         ####
-    #         n += 1
-    #       end
-    #     end
-    #
-    def delete
-      @command.dele @number
-      @deleted = true
-    end
-
-    alias delete! delete    #:nodoc: obsolete
-
-    # True if the mail has been deleted.
-    def deleted?
-      @deleted
-    end
-
-    # Returns the unique-id of the message.
-    # Normally the unique-id is a hash string of the message.
-    #
-    # This method raises a POPError if an error occurs.
-    def unique_id
-      return @uid if @uid
-      @pop.set_all_uids
-      @uid
-    end
-
-    alias uidl unique_id
-
-    def uid=( uid )   #:nodoc: internal use only (used from POP3#set_all_uids)
-      @uid = uid
-    end
-
-  end   # class POPMail
-
-
-  class POP3Command   #:nodoc: internal use only
-
-    def initialize( sock )
-      @socket = sock
-      @error_occured = false
-      res = check_response(critical { recv_response() })
-      @apop_stamp = res.slice(/<.+>/)
-    end
-
-    def inspect
-      "#<#{self.class} socket=#{@socket}>"
-    end
-
-    def auth( account, password )
-      check_response_auth(critical {
-        check_response_auth(get_response('USER %s', account))
-        get_response('PASS %s', password)
-      })
-    end
-
-    def apop( account, password )
-      raise POPAuthenticationError, 'not APOP server; cannot login' \
-                                                      unless @apop_stamp
-      check_response_auth(critical {
-        get_response('APOP %s %s',
-                     account,
-                     Digest::MD5.hexdigest(@apop_stamp + password))
-      })
-    end
-
-    def list
-      critical {
-        getok 'LIST'
-        list = []
-        @socket.each_list_item do |line|
-          m = /\A(\d+)[ \t]+(\d+)/.match(line) or
-                  raise POPBadResponse, "bad response: #{line}"
-          list.push  [m[1].to_i, m[2].to_i]
-        end
-        return list
-      }
-    end
-
-    def stat
-      res = check_response(critical { get_response('STAT') })
-      m = /\A\+OK\s+(\d+)\s+(\d+)/.match(res) or
-              raise POPBadResponse, "wrong response format: #{res}"
-      [m[1].to_i, m[2].to_i]
-    end
-
-    def rset
-      check_response(critical { get_response 'RSET' })
-    end
-
-    def top( num, lines = 0, &block )
-      critical {
-        getok('TOP %d %d', num, lines)
-        @socket.each_message_chunk(&block)
-      }
-    end
-
-    def retr( num, &block )
-      critical {
-        getok('RETR %d', num)
-        @socket.each_message_chunk(&block)
-      }
-    end
-    
-    def dele( num )
-      check_response(critical { get_response('DELE %d', num) })
-    end
-
-    def uidl( num = nil )
-      if num
-        res = check_response(critical { get_response('UIDL %d', num) })
-        return res.split(/ /)[1]
-      else
-        critical {
-          getok('UIDL')
-          table = {}
-          @socket.each_list_item do |line|
-            num, uid = line.split
-            table[num.to_i] = uid
-          end
-          return table
-        }
-      end
-    end
-
-    def quit
-      check_response(critical { get_response('QUIT') })
-    end
-
-    private
-
-    def getok( fmt, *fargs )
-      @socket.writeline sprintf(fmt, *fargs)
-      check_response(recv_response())
-    end
-
-    def get_response( fmt, *fargs )
-      @socket.writeline sprintf(fmt, *fargs)
-      recv_response()
-    end
-
-    def recv_response
-      @socket.readline
-    end
-
-    def check_response( res )
-      raise POPError, res unless /\A\+OK/i === res
-      res
-    end
-
-    def check_response_auth( res )
-      raise POPAuthenticationError, res unless /\A\+OK/i === res
-      res
-    end
-
-    def critical
-      return '+OK dummy ok response' if @error_occured
-      begin
-        return yield()
-      rescue Exception
-        @error_occured = true
-        raise
-      end
-    end
-
-  end   # class POP3Command
-
-end   # module Net
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/protocol.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/protocol.rb
deleted file mode 100644
index b898030..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/protocol.rb
+++ /dev/null
@@ -1,390 +0,0 @@
-#
-# = net/protocol.rb
-#
-#--
-# Copyright (c) 1999-2005 Yukihiro Matsumoto
-# Copyright (c) 1999-2005 Minero Aoki
-#
-# written and maintained by Minero Aoki <aamine at loveruby.net>
-#
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-#
-# $Id: protocol.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#++
-#
-# WARNING: This file is going to remove.
-# Do not rely on the implementation written in this file.
-#
-
-require 'socket'
-require 'timeout'
-
-module Net # :nodoc:
-
-  class Protocol   #:nodoc: internal use only
-    private
-    def Protocol.protocol_param(name, val)
-      module_eval(<<-End, __FILE__, __LINE__ + 1)
-        def #{name}
-          #{val}
-        end
-      End
-    end
-  end
-
-
-  class ProtocolError          < StandardError; end
-  class ProtoSyntaxError       < ProtocolError; end
-  class ProtoFatalError        < ProtocolError; end
-  class ProtoUnknownError      < ProtocolError; end
-  class ProtoServerError       < ProtocolError; end
-  class ProtoAuthError         < ProtocolError; end
-  class ProtoCommandError      < ProtocolError; end
-  class ProtoRetriableError    < ProtocolError; end
-  ProtocRetryError = ProtoRetriableError
-
-
-  class BufferedIO   #:nodoc: internal use only
-    def initialize(io)
-      @io = io
-      @read_timeout = 60
-      @debug_output = nil
-      @rbuf = ''
-    end
-
-    attr_reader :io
-    attr_accessor :read_timeout
-    attr_accessor :debug_output
-
-    def inspect
-      "#<#{self.class} io=#{@io}>"
-    end
-
-    def closed?
-      @io.closed?
-    end
-
-    def close
-      @io.close
-    end
-
-    #
-    # Read
-    #
-
-    public
-
-    def read(len, dest = '', ignore_eof = false)
-      LOG "reading #{len} bytes..."
-      read_bytes = 0
-      begin
-        while read_bytes + @rbuf.size < len
-          dest << (s = rbuf_consume(@rbuf.size))
-          read_bytes += s.size
-          rbuf_fill
-        end
-        dest << (s = rbuf_consume(len - read_bytes))
-        read_bytes += s.size
-      rescue EOFError
-        raise unless ignore_eof
-      end
-      LOG "read #{read_bytes} bytes"
-      dest
-    end
-
-    def read_all(dest = '')
-      LOG 'reading all...'
-      read_bytes = 0
-      begin
-        while true
-          dest << (s = rbuf_consume(@rbuf.size))
-          read_bytes += s.size
-          rbuf_fill
-        end
-      rescue EOFError
-        ;
-      end
-      LOG "read #{read_bytes} bytes"
-      dest
-    end
-
-    def readuntil(terminator, ignore_eof = false)
-      begin
-        until idx = @rbuf.index(terminator)
-          rbuf_fill
-        end
-        return rbuf_consume(idx + terminator.size)
-      rescue EOFError
-        raise unless ignore_eof
-        return rbuf_consume(@rbuf.size)
-      end
-    end
-        
-    def readline
-      readuntil("\n").chop
-    end
-
-    private
-
-    def rbuf_fill
-      timeout(@read_timeout) {
-        @rbuf << @io.sysread(1024)
-      }
-    end
-
-    def rbuf_consume(len)
-      s = @rbuf.slice!(0, len)
-      @debug_output << %Q[-> #{s.dump}\n] if @debug_output
-      s
-    end
-
-    #
-    # Write
-    #
-
-    public
-
-    def write(str)
-      writing {
-        write0 str
-      }
-    end
-
-    def writeline(str)
-      writing {
-        write0 str + "\r\n"
-      }
-    end
-
-    private
-
-    def writing
-      @written_bytes = 0
-      @debug_output << '<- ' if @debug_output
-      yield
-      @debug_output << "\n" if @debug_output
-      bytes = @written_bytes
-      @written_bytes = nil
-      bytes
-    end
-
-    def write0(str)
-      @debug_output << str.dump if @debug_output
-      len = @io.write(str)
-      @written_bytes += len
-      len
-    end
-
-    #
-    # Logging
-    #
-
-    private
-
-    def LOG_off
-      @save_debug_out = @debug_output
-      @debug_output = nil
-    end
-
-    def LOG_on
-      @debug_output = @save_debug_out
-    end
-
-    def LOG(msg)
-      return unless @debug_output
-      @debug_output << msg + "\n"
-    end
-  end
-
-
-  class InternetMessageIO < BufferedIO   #:nodoc: internal use only
-    def InternetMessageIO.old_open(addr, port,
-        open_timeout = nil, read_timeout = nil, debug_output = nil)
-      debug_output << "opening connection to #{addr}...\n" if debug_output
-      s = timeout(open_timeout) { TCPsocket.new(addr, port) }
-      io = new(s)
-      io.read_timeout = read_timeout
-      io.debug_output = debug_output
-      io
-    end
-
-    def initialize(io)
-      super
-      @wbuf = nil
-    end
-
-    #
-    # Read
-    #
-
-    def each_message_chunk
-      LOG 'reading message...'
-      LOG_off()
-      read_bytes = 0
-      while (line = readuntil("\r\n")) != ".\r\n"
-        read_bytes += line.size
-        yield line.sub(/\A\./, '')
-      end
-      LOG_on()
-      LOG "read message (#{read_bytes} bytes)"
-    end
-  
-    # *library private* (cannot handle 'break')
-    def each_list_item
-      while (str = readuntil("\r\n")) != ".\r\n"
-        yield str.chop
-      end
-    end
-
-    def write_message_0(src)
-      prev = @written_bytes
-      each_crlf_line(src) do |line|
-        write0 line.sub(/\A\./, '..')
-      end
-      @written_bytes - prev
-    end
-
-    #
-    # Write
-    #
-
-    def write_message(src)
-      LOG "writing message from #{src.class}"
-      LOG_off()
-      len = writing {
-        using_each_crlf_line {
-          write_message_0 src
-        }
-      }
-      LOG_on()
-      LOG "wrote #{len} bytes"
-      len
-    end
-
-    def write_message_by_block(&block)
-      LOG 'writing message from block'
-      LOG_off()
-      len = writing {
-        using_each_crlf_line {
-          begin
-            block.call(WriteAdapter.new(self, :write_message_0))
-          rescue LocalJumpError
-            # allow `break' from writer block
-          end
-        }
-      }
-      LOG_on()
-      LOG "wrote #{len} bytes"
-      len
-    end
-
-    private
-
-    def using_each_crlf_line
-      @wbuf = ''
-      yield
-      if not @wbuf.empty?   # unterminated last line
-        write0 @wbuf.chomp + "\r\n"
-      elsif @written_bytes == 0   # empty src
-        write0 "\r\n"
-      end
-      write0 ".\r\n"
-      @wbuf = nil
-    end
-
-    def each_crlf_line(src)
-      buffer_filling(@wbuf, src) do
-        while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
-          yield line.chomp("\n") + "\r\n"
-        end
-      end
-    end
-
-    def buffer_filling(buf, src)
-      case src
-      when String    # for speeding up.
-        0.step(src.size - 1, 1024) do |i|
-          buf << src[i, 1024]
-          yield
-        end
-      when File    # for speeding up.
-        while s = src.read(1024)
-          buf << s
-          yield
-        end
-      else    # generic reader
-        src.each do |s|
-          buf << s
-          yield if buf.size > 1024
-        end
-        yield unless buf.empty?
-      end
-    end
-  end
-
-
-  #
-  # The writer adapter class
-  #
-  class WriteAdapter
-    def initialize(socket, method)
-      @socket = socket
-      @method_id = method
-    end
-
-    def inspect
-      "#<#{self.class} socket=#{@socket.inspect}>"
-    end
-
-    def write(str)
-      @socket.__send__(@method_id, str)
-    end
-
-    alias print write
-
-    def <<(str)
-      write str
-      self
-    end
-
-    def puts(str = '')
-      write str.chomp("\n") + "\n"
-    end
-
-    def printf(*args)
-      write sprintf(*args)
-    end
-  end
-
-
-  class ReadAdapter   #:nodoc: internal use only
-    def initialize(block)
-      @block = block
-    end
-
-    def inspect
-      "#<#{self.class}>"
-    end
-
-    def <<(str)
-      call_block(str, &@block) if @block
-    end
-
-    private
-
-    # This method is needed because @block must be called by yield,
-    # not Proc#call.  You can see difference when using `break' in
-    # the block.
-    def call_block(str)
-      yield str
-    end
-  end
-
-
-  module NetPrivate   #:nodoc: obsolete
-    Socket = ::Net::InternetMessageIO
-  end
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/smtp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/smtp.rb
deleted file mode 100644
index b667af3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/smtp.rb
+++ /dev/null
@@ -1,696 +0,0 @@
-# = net/smtp.rb
-# 
-# Copyright (c) 1999-2003 Yukihiro Matsumoto.
-#
-# Copyright (c) 1999-2003 Minero Aoki.
-# 
-# Written & maintained by Minero Aoki <aamine at loveruby.net>.
-#
-# Documented by William Webber and Minero Aoki.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-# 
-# NOTE: You can find Japanese version of this document in
-# the doc/net directory of the standard ruby interpreter package.
-# 
-# $Id: smtp.rb 18116 2008-07-17 12:40:40Z shyouhei $
-#
-# See Net::SMTP for documentation. 
-# 
-
-require 'net/protocol'
-require 'digest/md5'
-
-module Net
-
-  # Module mixed in to all SMTP error classes
-  module SMTPError
-    # This *class* is module for some reason.
-    # In ruby 1.9.x, this module becomes a class.
-  end
-
-  # Represents an SMTP authentication error.
-  class SMTPAuthenticationError < ProtoAuthError
-    include SMTPError
-  end
-
-  # Represents SMTP error code 420 or 450, a temporary error.
-  class SMTPServerBusy < ProtoServerError
-    include SMTPError
-  end
-
-  # Represents an SMTP command syntax error (error code 500)
-  class SMTPSyntaxError < ProtoSyntaxError
-    include SMTPError
-  end
-
-  # Represents a fatal SMTP error (error code 5xx, except for 500)
-  class SMTPFatalError < ProtoFatalError
-    include SMTPError
-  end
-
-  # Unexpected reply code returned from server.
-  class SMTPUnknownError < ProtoUnknownError
-    include SMTPError
-  end
-
-  #
-  # = Net::SMTP
-  #
-  # == What is This Library?
-  # 
-  # This library provides functionality to send internet
-  # mail via SMTP, the Simple Mail Transfer Protocol. For details of
-  # SMTP itself, see [RFC2821] (http://www.ietf.org/rfc/rfc2821.txt).
-  # 
-  # == What is This Library NOT?
-  # 
-  # This library does NOT provide functions to compose internet mails.
-  # You must create them by yourself. If you want better mail support,
-  # try RubyMail or TMail. You can get both libraries from RAA.
-  # (http://www.ruby-lang.org/en/raa.html)
-  # 
-  # FYI: the official documentation on internet mail is: [RFC2822] (http://www.ietf.org/rfc/rfc2822.txt).
-  # 
-  # == Examples
-  # 
-  # === Sending Messages
-  # 
-  # You must open a connection to an SMTP server before sending messages.
-  # The first argument is the address of your SMTP server, and the second 
-  # argument is the port number. Using SMTP.start with a block is the simplest 
-  # way to do this. This way, the SMTP connection is closed automatically 
-  # after the block is executed.
-  # 
-  #     require 'net/smtp'
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       # Use the SMTP object smtp only in this block.
-  #     end
-  # 
-  # Replace 'your.smtp.server' with your SMTP server. Normally
-  # your system manager or internet provider supplies a server
-  # for you.
-  # 
-  # Then you can send messages.
-  # 
-  #     msgstr = <<END_OF_MESSAGE
-  #     From: Your Name <your at mail.address>
-  #     To: Destination Address <someone at example.com>
-  #     Subject: test message
-  #     Date: Sat, 23 Jun 2001 16:26:43 +0900
-  #     Message-Id: <unique.message.id.string at example.com>
-  # 
-  #     This is a test message.
-  #     END_OF_MESSAGE
-  # 
-  #     require 'net/smtp'
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       smtp.send_message msgstr,
-  #                         'your at mail.address',
-  #                         'his_addess at example.com'
-  #     end
-  # 
-  # === Closing the Session
-  # 
-  # You MUST close the SMTP session after sending messages, by calling 
-  # the #finish method:
-  # 
-  #     # using SMTP#finish
-  #     smtp = Net::SMTP.start('your.smtp.server', 25)
-  #     smtp.send_message msgstr, 'from at address', 'to at address'
-  #     smtp.finish
-  # 
-  # You can also use the block form of SMTP.start/SMTP#start.  This closes
-  # the SMTP session automatically:
-  # 
-  #     # using block form of SMTP.start
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       smtp.send_message msgstr, 'from at address', 'to at address'
-  #     end
-  # 
-  # I strongly recommend this scheme.  This form is simpler and more robust.
-  # 
-  # === HELO domain
-  # 
-  # In almost all situations, you must provide a third argument
-  # to SMTP.start/SMTP#start. This is the domain name which you are on
-  # (the host to send mail from). It is called the "HELO domain".
-  # The SMTP server will judge whether it should send or reject
-  # the SMTP session by inspecting the HELO domain.
-  # 
-  #     Net::SMTP.start('your.smtp.server', 25,
-  #                     'mail.from.domain') { |smtp| ... }
-  # 
-  # === SMTP Authentication
-  # 
-  # The Net::SMTP class supports three authentication schemes;
-  # PLAIN, LOGIN and CRAM MD5.  (SMTP Authentication: [RFC2554])
-  # To use SMTP authentication, pass extra arguments to 
-  # SMTP.start/SMTP#start.
-  # 
-  #     # PLAIN
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :plain)
-  #     # LOGIN
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :login)
-  # 
-  #     # CRAM MD5
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :cram_md5)
-  #
-  class SMTP
-
-    Revision = %q$Revision: 18116 $.split[1]
-
-    # The default SMTP port, port 25.
-    def SMTP.default_port
-      25
-    end
-
-    #
-    # Creates a new Net::SMTP object.
-    #
-    # +address+ is the hostname or ip address of your SMTP
-    # server.  +port+ is the port to connect to; it defaults to
-    # port 25.
-    #
-    # This method does not open the TCP connection.  You can use
-    # SMTP.start instead of SMTP.new if you want to do everything
-    # at once.  Otherwise, follow SMTP.new with SMTP#start.
-    #
-    def initialize( address, port = nil )
-      @address = address
-      @port = (port || SMTP.default_port)
-      @esmtp = true
-      @socket = nil
-      @started = false
-      @open_timeout = 30
-      @read_timeout = 60
-      @error_occured = false
-      @debug_output = nil
-    end
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} started=#{@started}>"
-    end
-
-    # +true+ if the SMTP object uses ESMTP (which it does by default).
-    def esmtp?
-      @esmtp
-    end
-
-    #
-    # Set whether to use ESMTP or not.  This should be done before 
-    # calling #start.  Note that if #start is called in ESMTP mode,
-    # and the connection fails due to a ProtocolError, the SMTP
-    # object will automatically switch to plain SMTP mode and
-    # retry (but not vice versa).
-    #
-    def esmtp=( bool )
-      @esmtp = bool
-    end
-
-    alias esmtp esmtp?
-
-    # The address of the SMTP server to connect to.
-    attr_reader :address
-
-    # The port number of the SMTP server to connect to.
-    attr_reader :port
-
-    # Seconds to wait while attempting to open a connection.
-    # If the connection cannot be opened within this time, a
-    # TimeoutError is raised.
-    attr_accessor :open_timeout
-
-    # Seconds to wait while reading one block (by one read(2) call).
-    # If the read(2) call does not complete within this time, a
-    # TimeoutError is raised.
-    attr_reader :read_timeout
-
-    # Set the number of seconds to wait until timing-out a read(2)
-    # call.
-    def read_timeout=( sec )
-      @socket.read_timeout = sec if @socket
-      @read_timeout = sec
-    end
-
-    #
-    # WARNING: This method causes serious security holes.
-    # Use this method for only debugging.
-    #
-    # Set an output stream for debug logging.
-    # You must call this before #start.
-    #
-    #   # example
-    #   smtp = Net::SMTP.new(addr, port)
-    #   smtp.set_debug_output $stderr
-    #   smtp.start do |smtp|
-    #     ....
-    #   end
-    #
-    def set_debug_output( arg )
-      @debug_output = arg
-    end
-
-    #
-    # SMTP session control
-    #
-
-    #
-    # Creates a new Net::SMTP object and connects to the server.
-    #
-    # This method is equivalent to:
-    # 
-    #   Net::SMTP.new(address, port).start(helo_domain, account, password, authtype)
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('your.smtp.server') do |smtp|
-    #       smtp.send_message msgstr, 'from at example.com', ['dest at example.com']
-    #     end
-    #
-    # === Block Usage
-    #
-    # If called with a block, the newly-opened Net::SMTP object is yielded
-    # to the block, and automatically closed when the block finishes.  If called
-    # without a block, the newly-opened Net::SMTP object is returned to
-    # the caller, and it is the caller's responsibility to close it when
-    # finished.
-    #
-    # === Parameters
-    #
-    # +address+ is the hostname or ip address of your smtp server.
-    #
-    # +port+ is the port to connect to; it defaults to port 25.
-    #
-    # +helo+ is the _HELO_ _domain_ provided by the client to the
-    # server (see overview comments); it defaults to 'localhost.localdomain'. 
-    #
-    # The remaining arguments are used for SMTP authentication, if required
-    # or desired.  +user+ is the account name; +secret+ is your password
-    # or other authentication token; and +authtype+ is the authentication
-    # type, one of :plain, :login, or :cram_md5.  See the discussion of
-    # SMTP Authentication in the overview notes.
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPAuthenticationError
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def SMTP.start(address, port = nil, helo = 'localhost.localdomain',
-                   user = nil, secret = nil, authtype = nil,
-                   &block)   # :yield: smtp
-      new(address, port).start(helo, user, secret, authtype, &block)
-    end
-
-    # +true+ if the SMTP session has been started.
-    def started?
-      @started
-    end
-
-    #
-    # Opens a TCP connection and starts the SMTP session.
-    #
-    # === Parameters
-    #
-    # +helo+ is the _HELO_ _domain_ that you'll dispatch mails from; see
-    # the discussion in the overview notes.
-    #
-    # If both of +user+ and +secret+ are given, SMTP authentication 
-    # will be attempted using the AUTH command.  +authtype+ specifies 
-    # the type of authentication to attempt; it must be one of
-    # :login, :plain, and :cram_md5.  See the notes on SMTP Authentication
-    # in the overview. 
-    #
-    # === Block Usage
-    #
-    # When this methods is called with a block, the newly-started SMTP
-    # object is yielded to the block, and automatically closed after
-    # the block call finishes.  Otherwise, it is the caller's 
-    # responsibility to close the session when finished.
-    #
-    # === Example
-    #
-    # This is very similar to the class method SMTP.start.
-    #
-    #     require 'net/smtp' 
-    #     smtp = Net::SMTP.new('smtp.mail.server', 25)
-    #     smtp.start(helo_domain, account, password, authtype) do |smtp|
-    #       smtp.send_message msgstr, 'from at example.com', ['dest at example.com']
-    #     end 
-    #
-    # The primary use of this method (as opposed to SMTP.start)
-    # is probably to set debugging (#set_debug_output) or ESMTP
-    # (#esmtp=), which must be done before the session is
-    # started.  
-    #
-    # === Errors
-    #
-    # If session has already been started, an IOError will be raised.
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPAuthenticationError
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def start(helo = 'localhost.localdomain',
-              user = nil, secret = nil, authtype = nil)   # :yield: smtp
-      if block_given?
-        begin
-          do_start(helo, user, secret, authtype)
-          return yield(self)
-        ensure
-          do_finish
-        end
-      else
-        do_start(helo, user, secret, authtype)
-        return self
-      end
-    end
-
-    def do_start( helodomain, user, secret, authtype )
-      raise IOError, 'SMTP session already started' if @started
-      check_auth_args user, secret, authtype if user or secret
-
-      @socket = InternetMessageIO.old_open(@address, @port,
-                                       @open_timeout, @read_timeout,
-                                       @debug_output)
-      check_response(critical { recv_response() })
-      begin
-        if @esmtp
-          ehlo helodomain
-        else
-          helo helodomain
-        end
-      rescue ProtocolError
-        if @esmtp
-          @esmtp = false
-          @error_occured = false
-          retry
-        end
-        raise
-      end
-      authenticate user, secret, authtype if user
-      @started = true
-    ensure
-      @socket.close if not @started and @socket and not @socket.closed?
-    end
-    private :do_start
-
-    # Finishes the SMTP session and closes TCP connection.
-    # Raises IOError if not started.
-    def finish
-      raise IOError, 'not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      quit if @socket and not @socket.closed? and not @error_occured
-    ensure
-      @started = false
-      @error_occured = false
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    #
-    # message send
-    #
-
-    public
-
-    #
-    # Sends +msgstr+ as a message.  Single CR ("\r") and LF ("\n") found
-    # in the +msgstr+, are converted into the CR LF pair.  You cannot send a
-    # binary message with this method. +msgstr+ should include both 
-    # the message headers and body.
-    #
-    # +from_addr+ is a String representing the source mail address.
-    #
-    # +to_addr+ is a String or Strings or Array of Strings, representing
-    # the destination mail address or addresses.
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('smtp.example.com') do |smtp|
-    #       smtp.send_message msgstr,
-    #                         'from at example.com',
-    #                         ['dest at example.com', 'dest2 at example.com']
-    #     end
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def send_message( msgstr, from_addr, *to_addrs )
-      send0(from_addr, to_addrs.flatten) {
-        @socket.write_message msgstr
-      }
-    end
-
-    alias send_mail send_message
-    alias sendmail send_message   # obsolete
-
-    #
-    # Opens a message writer stream and gives it to the block.
-    # The stream is valid only in the block, and has these methods:
-    #
-    # puts(str = '')::       outputs STR and CR LF.
-    # print(str)::           outputs STR.
-    # printf(fmt, *args)::   outputs sprintf(fmt,*args).
-    # write(str)::           outputs STR and returns the length of written bytes.
-    # <<(str)::              outputs STR and returns self.
-    #
-    # If a single CR ("\r") or LF ("\n") is found in the message,
-    # it is converted to the CR LF pair.  You cannot send a binary
-    # message with this method.
-    #
-    # === Parameters
-    #
-    # +from_addr+ is a String representing the source mail address.
-    #
-    # +to_addr+ is a String or Strings or Array of Strings, representing
-    # the destination mail address or addresses.
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('smtp.example.com', 25) do |smtp|
-    #       smtp.open_message_stream('from at example.com', ['dest at example.com']) do |f|
-    #         f.puts 'From: from at example.com'
-    #         f.puts 'To: dest at example.com'
-    #         f.puts 'Subject: test message'
-    #         f.puts
-    #         f.puts 'This is a test message.'
-    #       end
-    #     end
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def open_message_stream( from_addr, *to_addrs, &block ) # :yield: stream
-      send0(from_addr, to_addrs.flatten) {
-        @socket.write_message_by_block(&block)
-      }
-    end
-
-    alias ready open_message_stream   # obsolete
-
-    private
-
-    def send0( from_addr, to_addrs )
-      raise IOError, 'closed session' unless @socket
-      raise ArgumentError, 'mail destination not given' if to_addrs.empty?
-      if $SAFE > 0
-        raise SecurityError, 'tainted from_addr' if from_addr.tainted?
-        to_addrs.each do |to| 
-          raise SecurityError, 'tainted to_addr' if to.tainted?
-        end
-      end
-
-      mailfrom from_addr
-      to_addrs.each do |to|
-        rcptto to
-      end
-      res = critical {
-        check_response(get_response('DATA'), true)
-        yield
-        recv_response()
-      }
-      check_response(res)
-    end
-
-    #
-    # auth
-    #
-
-    private
-
-    def check_auth_args( user, secret, authtype )
-      raise ArgumentError, 'both user and secret are required'\
-                      unless user and secret
-      auth_method = "auth_#{authtype || 'cram_md5'}"
-      raise ArgumentError, "wrong auth type #{authtype}"\
-                      unless respond_to?(auth_method, true)
-    end
-
-    def authenticate( user, secret, authtype )
-      __send__("auth_#{authtype || 'cram_md5'}", user, secret)
-    end
-
-    def auth_plain( user, secret )
-      res = critical { get_response('AUTH PLAIN %s',
-                                    base64_encode("\0#{user}\0#{secret}")) }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def auth_login( user, secret )
-      res = critical {
-        check_response(get_response('AUTH LOGIN'), true)
-        check_response(get_response(base64_encode(user)), true)
-        get_response(base64_encode(secret))
-      }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def auth_cram_md5( user, secret )
-      # CRAM-MD5: [RFC2195]
-      res = nil
-      critical {
-        res = check_response(get_response('AUTH CRAM-MD5'), true)
-        challenge = res.split(/ /)[1].unpack('m')[0]
-        secret = Digest::MD5.digest(secret) if secret.size > 64
-
-        isecret = secret + "\0" * (64 - secret.size)
-        osecret = isecret.dup
-        0.upto(63) do |i|
-          isecret[i] ^= 0x36
-          osecret[i] ^= 0x5c
-        end
-        tmp = Digest::MD5.digest(isecret + challenge)
-        tmp = Digest::MD5.hexdigest(osecret + tmp)
-
-        res = get_response(base64_encode(user + ' ' + tmp))
-      }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def base64_encode( str )
-      # expects "str" may not become too long
-      [str].pack('m').gsub(/\s+/, '')
-    end
-
-    #
-    # SMTP command dispatcher
-    #
-
-    private
-
-    def helo( domain )
-      getok('HELO %s', domain)
-    end
-
-    def ehlo( domain )
-      getok('EHLO %s', domain)
-    end
-
-    def mailfrom( fromaddr )
-      getok('MAIL FROM:<%s>', fromaddr)
-    end
-
-    def rcptto( to )
-      getok('RCPT TO:<%s>', to)
-    end
-
-    def quit
-      getok('QUIT')
-    end
-
-    #
-    # row level library
-    #
-
-    private
-
-    def getok( fmt, *args )
-      res = critical {
-        @socket.writeline sprintf(fmt, *args)
-        recv_response()
-      }
-      return check_response(res)
-    end
-
-    def get_response( fmt, *args )
-      @socket.writeline sprintf(fmt, *args)
-      recv_response()
-    end
-
-    def recv_response
-      res = ''
-      while true
-        line = @socket.readline
-        res << line << "\n"
-        break unless line[3] == ?-   # "210-PIPELINING"
-      end
-      res
-    end
-
-    def check_response( res, allow_continue = false )
-      return res if /\A2/ === res
-      return res if allow_continue and /\A3/ === res
-      err = case res
-            when /\A4/  then SMTPServerBusy
-            when /\A50/ then SMTPSyntaxError
-            when /\A55/ then SMTPFatalError
-            else SMTPUnknownError
-            end
-      raise err, res
-    end
-
-    def critical( &block )
-      return '200 dummy reply code' if @error_occured
-      begin
-        return yield()
-      rescue Exception
-        @error_occured = true
-        raise
-      end
-    end
-
-  end   # class SMTP
-
-  SMTPSession = SMTP
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnet.rb
deleted file mode 100644
index 1fe464c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnet.rb
+++ /dev/null
@@ -1,749 +0,0 @@
-# = net/telnet.rb - Simple Telnet Client Library
-# 
-# Author:: Wakou Aoyama <wakou at ruby-lang.org>
-# Documentation:: William Webber and Wakou Aoyama 
-#
-# This file holds the class Net::Telnet, which provides client-side
-# telnet functionality.
-#
-# For documentation, see Net::Telnet.
-#
-
-require "socket"
-require "delegate"
-require "timeout"
-require "English"
- 
-module Net
-
-  #
-  # == Net::Telnet
-  #
-  # Provides telnet client functionality.
-  #
-  # This class also has, through delegation, all the methods of a
-  # socket object (by default, a +TCPSocket+, but can be set by the
-  # +Proxy+ option to <tt>new()</tt>).  This provides methods such as
-  # <tt>close()</tt> to end the session and <tt>sysread()</tt> to read
-  # data directly from the host, instead of via the <tt>waitfor()</tt>
-  # mechanism.  Note that if you do use <tt>sysread()</tt> directly
-  # when in telnet mode, you should probably pass the output through
-  # <tt>preprocess()</tt> to extract telnet command sequences.
-  #
-  # == Overview
-  #
-  # The telnet protocol allows a client to login remotely to a user
-  # account on a server and execute commands via a shell.  The equivalent
-  # is done by creating a Net::Telnet class with the +Host+ option
-  # set to your host, calling #login() with your user and password,
-  # issuing one or more #cmd() calls, and then calling #close()
-  # to end the session.  The #waitfor(), #print(), #puts(), and
-  # #write() methods, which #cmd() is implemented on top of, are
-  # only needed if you are doing something more complicated.
-  #
-  # A Net::Telnet object can also be used to connect to non-telnet
-  # services, such as SMTP or HTTP.  In this case, you normally
-  # want to provide the +Port+ option to specify the port to
-  # connect to, and set the +Telnetmode+ option to false to prevent
-  # the client from attempting to interpret telnet command sequences.
-  # Generally, #login() will not work with other protocols, and you
-  # have to handle authentication yourself.
-  #
-  # For some protocols, it will be possible to specify the +Prompt+
-  # option once when you create the Telnet object and use #cmd() calls; 
-  # for others, you will have to specify the response sequence to
-  # look for as the Match option to every #cmd() call, or call
-  # #puts() and #waitfor() directly; for yet others, you will have 
-  # to use #sysread() instead of #waitfor() and parse server 
-  # responses yourself.
-  #
-  # It is worth noting that when you create a new Net::Telnet object,
-  # you can supply a proxy IO channel via the Proxy option.  This
-  # can be used to attach the Telnet object to other Telnet objects,
-  # to already open sockets, or to any read-write IO object.  This
-  # can be useful, for instance, for setting up a test fixture for
-  # unit testing.
-  # 
-  # == Examples
-  # 
-  # === Log in and send a command, echoing all output to stdout
-  # 
-  #   localhost = Net::Telnet::new("Host" => "localhost",
-  #                                "Timeout" => 10,
-  #                                "Prompt" => /[$%#>] \z/n)
-  #   localhost.login("username", "password") { |c| print c }
-  #   localhost.cmd("command") { |c| print c }
-  #   localhost.close
-  # 
-  # 
-  # === Check a POP server to see if you have mail
-  # 
-  #   pop = Net::Telnet::new("Host" => "your_destination_host_here",
-  #                          "Port" => 110,
-  #                          "Telnetmode" => false,
-  #                          "Prompt" => /^\+OK/n)
-  #   pop.cmd("user " + "your_username_here") { |c| print c }
-  #   pop.cmd("pass " + "your_password_here") { |c| print c }
-  #   pop.cmd("list") { |c| print c }
-  #
-  # == References
-  #
-  # There are a large number of RFCs relevant to the Telnet protocol.
-  # RFCs 854-861 define the base protocol.  For a complete listing
-  # of relevant RFCs, see
-  # http://www.omnifarious.org/~hopper/technical/telnet-rfc.html
-  #
-  class Telnet < SimpleDelegator
-
-    # :stopdoc:
-    IAC   = 255.chr # "\377" # "\xff" # interpret as command
-    DONT  = 254.chr # "\376" # "\xfe" # you are not to use option 
-    DO    = 253.chr # "\375" # "\xfd" # please, you use option 
-    WONT  = 252.chr # "\374" # "\xfc" # I won't use option 
-    WILL  = 251.chr # "\373" # "\xfb" # I will use option 
-    SB    = 250.chr # "\372" # "\xfa" # interpret as subnegotiation 
-    GA    = 249.chr # "\371" # "\xf9" # you may reverse the line 
-    EL    = 248.chr # "\370" # "\xf8" # erase the current line 
-    EC    = 247.chr # "\367" # "\xf7" # erase the current character 
-    AYT   = 246.chr # "\366" # "\xf6" # are you there 
-    AO    = 245.chr # "\365" # "\xf5" # abort output--but let prog finish 
-    IP    = 244.chr # "\364" # "\xf4" # interrupt process--permanently 
-    BREAK = 243.chr # "\363" # "\xf3" # break 
-    DM    = 242.chr # "\362" # "\xf2" # data mark--for connect. cleaning 
-    NOP   = 241.chr # "\361" # "\xf1" # nop 
-    SE    = 240.chr # "\360" # "\xf0" # end sub negotiation 
-    EOR   = 239.chr # "\357" # "\xef" # end of record (transparent mode) 
-    ABORT = 238.chr # "\356" # "\xee" # Abort process 
-    SUSP  = 237.chr # "\355" # "\xed" # Suspend process 
-    EOF   = 236.chr # "\354" # "\xec" # End of file 
-    SYNCH = 242.chr # "\362" # "\xf2" # for telfunc calls 
-
-    OPT_BINARY         =   0.chr # "\000" # "\x00" # Binary Transmission 
-    OPT_ECHO           =   1.chr # "\001" # "\x01" # Echo 
-    OPT_RCP            =   2.chr # "\002" # "\x02" # Reconnection 
-    OPT_SGA            =   3.chr # "\003" # "\x03" # Suppress Go Ahead 
-    OPT_NAMS           =   4.chr # "\004" # "\x04" # Approx Message Size Negotiation 
-    OPT_STATUS         =   5.chr # "\005" # "\x05" # Status 
-    OPT_TM             =   6.chr # "\006" # "\x06" # Timing Mark 
-    OPT_RCTE           =   7.chr # "\a"   # "\x07" # Remote Controlled Trans and Echo 
-    OPT_NAOL           =   8.chr # "\010" # "\x08" # Output Line Width 
-    OPT_NAOP           =   9.chr # "\t"   # "\x09" # Output Page Size 
-    OPT_NAOCRD         =  10.chr # "\n"   # "\x0a" # Output Carriage-Return Disposition 
-    OPT_NAOHTS         =  11.chr # "\v"   # "\x0b" # Output Horizontal Tab Stops 
-    OPT_NAOHTD         =  12.chr # "\f"   # "\x0c" # Output Horizontal Tab Disposition 
-    OPT_NAOFFD         =  13.chr # "\r"   # "\x0d" # Output Formfeed Disposition 
-    OPT_NAOVTS         =  14.chr # "\016" # "\x0e" # Output Vertical Tabstops 
-    OPT_NAOVTD         =  15.chr # "\017" # "\x0f" # Output Vertical Tab Disposition 
-    OPT_NAOLFD         =  16.chr # "\020" # "\x10" # Output Linefeed Disposition 
-    OPT_XASCII         =  17.chr # "\021" # "\x11" # Extended ASCII 
-    OPT_LOGOUT         =  18.chr # "\022" # "\x12" # Logout 
-    OPT_BM             =  19.chr # "\023" # "\x13" # Byte Macro 
-    OPT_DET            =  20.chr # "\024" # "\x14" # Data Entry Terminal 
-    OPT_SUPDUP         =  21.chr # "\025" # "\x15" # SUPDUP 
-    OPT_SUPDUPOUTPUT   =  22.chr # "\026" # "\x16" # SUPDUP Output 
-    OPT_SNDLOC         =  23.chr # "\027" # "\x17" # Send Location 
-    OPT_TTYPE          =  24.chr # "\030" # "\x18" # Terminal Type 
-    OPT_EOR            =  25.chr # "\031" # "\x19" # End of Record 
-    OPT_TUID           =  26.chr # "\032" # "\x1a" # TACACS User Identification 
-    OPT_OUTMRK         =  27.chr # "\e"   # "\x1b" # Output Marking 
-    OPT_TTYLOC         =  28.chr # "\034" # "\x1c" # Terminal Location Number 
-    OPT_3270REGIME     =  29.chr # "\035" # "\x1d" # Telnet 3270 Regime 
-    OPT_X3PAD          =  30.chr # "\036" # "\x1e" # X.3 PAD 
-    OPT_NAWS           =  31.chr # "\037" # "\x1f" # Negotiate About Window Size 
-    OPT_TSPEED         =  32.chr # " "    # "\x20" # Terminal Speed 
-    OPT_LFLOW          =  33.chr # "!"    # "\x21" # Remote Flow Control 
-    OPT_LINEMODE       =  34.chr # "\""   # "\x22" # Linemode 
-    OPT_XDISPLOC       =  35.chr # "#"    # "\x23" # X Display Location 
-    OPT_OLD_ENVIRON    =  36.chr # "$"    # "\x24" # Environment Option 
-    OPT_AUTHENTICATION =  37.chr # "%"    # "\x25" # Authentication Option 
-    OPT_ENCRYPT        =  38.chr # "&"    # "\x26" # Encryption Option 
-    OPT_NEW_ENVIRON    =  39.chr # "'"    # "\x27" # New Environment Option 
-    OPT_EXOPL          = 255.chr # "\377" # "\xff" # Extended-Options-List 
-
-    NULL = "\000" 
-    CR   = "\015"   
-    LF   = "\012" 
-    EOL  = CR + LF 
-    REVISION = '$Id: telnet.rb 17270 2008-06-15 13:34:40Z shyouhei $'
-    # :startdoc:
-
-    #
-    # Creates a new Net::Telnet object.
-    #
-    # Attempts to connect to the host (unless the Proxy option is
-    # provided: see below).  If a block is provided, it is yielded
-    # status messages on the attempt to connect to the server, of
-    # the form:
-    # 
-    #   Trying localhost...
-    #   Connected to localhost.
-    #
-    # +options+ is a hash of options.  The following example lists
-    # all options and their default values.
-    # 
-    #   host = Net::Telnet::new(
-    #            "Host"       => "localhost",  # default: "localhost"
-    #            "Port"       => 23,           # default: 23
-    #            "Binmode"    => false,        # default: false
-    #            "Output_log" => "output_log", # default: nil (no output)
-    #            "Dump_log"   => "dump_log",   # default: nil (no output)
-    #            "Prompt"     => /[$%#>] \z/n, # default: /[$%#>] \z/n
-    #            "Telnetmode" => true,         # default: true
-    #            "Timeout"    => 10,           # default: 10
-    #              # if ignore timeout then set "Timeout" to false.
-    #            "Waittime"   => 0,            # default: 0
-    #            "Proxy"      => proxy         # default: nil
-    #                            # proxy is Net::Telnet or IO object
-    #          )
-    #
-    # The options have the following meanings:
-    #
-    # Host:: the hostname or IP address of the host to connect to, as a String. 
-    #        Defaults to "localhost".
-    #
-    # Port:: the port to connect to.  Defaults to 23.
-    #
-    # Binmode:: if false (the default), newline substitution is performed.  
-    #           Outgoing LF is
-    #           converted to CRLF, and incoming CRLF is converted to LF.  If
-    #           true, this substitution is not performed.  This value can
-    #           also be set with the #binmode() method.  The 
-    #           outgoing conversion only applies to the #puts() and #print()
-    #           methods, not the #write() method.  The precise nature of
-    #           the newline conversion is also affected by the telnet options
-    #           SGA and BIN.
-    #
-    # Output_log:: the name of the file to write connection status messages
-    #              and all received traffic to.  In the case of a proper
-    #              Telnet session, this will include the client input as
-    #              echoed by the host; otherwise, it only includes server
-    #              responses.  Output is appended verbatim to this file.  
-    #              By default, no output log is kept.
-    #
-    # Dump_log:: as for Output_log, except that output is written in hexdump
-    #            format (16 bytes per line as hex pairs, followed by their
-    #            printable equivalent), with connection status messages
-    #            preceded by '#', sent traffic preceded by '>', and 
-    #            received traffic preceded by '<'.  By default, not dump log
-    #            is kept.
-    #
-    # Prompt:: a regular expression matching the host's command-line prompt
-    #          sequence.  This is needed by the Telnet class to determine
-    #          when the output from a command has finished and the host is
-    #          ready to receive a new command.  By default, this regular
-    #          expression is /[$%#>] \z/n.
-    #
-    # Telnetmode:: a boolean value, true by default.  In telnet mode, 
-    #              traffic received from the host is parsed for special
-    #              command sequences, and these sequences are escaped
-    #              in outgoing traffic sent using #puts() or #print()
-    #              (but not #write()).  If you are using the Net::Telnet
-    #              object to connect to a non-telnet service (such as
-    #              SMTP or POP), this should be set to "false" to prevent
-    #              undesired data corruption.  This value can also be set
-    #              by the #telnetmode() method.
-    #
-    # Timeout:: the number of seconds to wait before timing out both the
-    #           initial attempt to connect to host (in this constructor),
-    #           and all attempts to read data from the host (in #waitfor(),
-    #           #cmd(), and #login()).  Exceeding this timeout causes a
-    #           TimeoutError to be raised.  The default value is 10 seconds.
-    #           You can disable the timeout by setting this value to false.
-    #           In this case, the connect attempt will eventually timeout
-    #           on the underlying connect(2) socket call with an
-    #           Errno::ETIMEDOUT error (but generally only after a few
-    #           minutes), but other attempts to read data from the host
-    #           will hand indefinitely if no data is forthcoming.
-    #
-    # Waittime:: the amount of time to wait after seeing what looks like a 
-    #            prompt (that is, received data that matches the Prompt
-    #            option regular expression) to see if more data arrives.
-    #            If more data does arrive in this time, Net::Telnet assumes
-    #            that what it saw was not really a prompt.  This is to try to 
-    #            avoid false matches, but it can also lead to missing real
-    #            prompts (if, for instance, a background process writes to
-    #            the terminal soon after the prompt is displayed).  By
-    #            default, set to 0, meaning not to wait for more data.
-    #
-    # Proxy:: a proxy object to used instead of opening a direct connection
-    #         to the host.  Must be either another Net::Telnet object or
-    #         an IO object.  If it is another Net::Telnet object, this 
-    #         instance will use that one's socket for communication.  If an
-    #         IO object, it is used directly for communication.  Any other
-    #         kind of object will cause an error to be raised.
-    #
-    def initialize(options) # :yield: mesg 
-      @options = options
-      @options["Host"]       = "localhost"   unless @options.has_key?("Host")
-      @options["Port"]       = 23            unless @options.has_key?("Port")
-      @options["Prompt"]     = /[$%#>] \z/n  unless @options.has_key?("Prompt")
-      @options["Timeout"]    = 10            unless @options.has_key?("Timeout")
-      @options["Waittime"]   = 0             unless @options.has_key?("Waittime")
-      unless @options.has_key?("Binmode")
-        @options["Binmode"]    = false         
-      else
-        unless (true == @options["Binmode"] or false == @options["Binmode"])
-          raise ArgumentError, "Binmode option must be true or false"
-        end
-      end
-
-      unless @options.has_key?("Telnetmode")
-        @options["Telnetmode"] = true          
-      else
-        unless (true == @options["Telnetmode"] or false == @options["Telnetmode"])
-          raise ArgumentError, "Telnetmode option must be true or false"
-        end
-      end
-
-      @telnet_option = { "SGA" => false, "BINARY" => false }
-
-      if @options.has_key?("Output_log")
-        @log = File.open(@options["Output_log"], 'a+')
-        @log.sync = true
-        @log.binmode
-      end
-
-      if @options.has_key?("Dump_log")
-        @dumplog = File.open(@options["Dump_log"], 'a+')
-        @dumplog.sync = true
-        @dumplog.binmode
-        def @dumplog.log_dump(dir, x)  # :nodoc:
-          len = x.length
-          addr = 0
-          offset = 0
-          while 0 < len
-            if len < 16
-              line = x[offset, len]
-            else
-              line = x[offset, 16]
-            end
-            hexvals = line.unpack('H*')[0]
-            hexvals += ' ' * (32 - hexvals.length)
-            hexvals = format("%s %s %s %s  " * 4, *hexvals.unpack('a2' * 16))
-            line = line.gsub(/[\000-\037\177-\377]/n, '.')
-            printf "%s 0x%5.5x: %s%s\n", dir, addr, hexvals, line
-            addr += 16
-            offset += 16
-            len -= 16
-          end
-          print "\n"
-        end
-      end
-
-      if @options.has_key?("Proxy")
-        if @options["Proxy"].kind_of?(Net::Telnet)
-          @sock = @options["Proxy"].sock
-        elsif @options["Proxy"].kind_of?(IO)
-          @sock = @options["Proxy"]
-        else
-          raise "Error: Proxy must be an instance of Net::Telnet or IO."
-        end
-      else
-        message = "Trying " + @options["Host"] + "...\n"
-        yield(message) if block_given?
-        @log.write(message) if @options.has_key?("Output_log")
-        @dumplog.log_dump('#', message) if @options.has_key?("Dump_log")
-
-        begin
-          if @options["Timeout"] == false
-            @sock = TCPSocket.open(@options["Host"], @options["Port"])
-          else
-            timeout(@options["Timeout"]) do
-              @sock = TCPSocket.open(@options["Host"], @options["Port"])
-            end
-          end
-        rescue TimeoutError
-          raise TimeoutError, "timed out while opening a connection to the host"
-        rescue
-          @log.write($ERROR_INFO.to_s + "\n") if @options.has_key?("Output_log")
-          @dumplog.log_dump('#', $ERROR_INFO.to_s + "\n") if @options.has_key?("Dump_log")
-          raise
-        end
-        @sock.sync = true
-        @sock.binmode
-
-        message = "Connected to " + @options["Host"] + ".\n"
-        yield(message) if block_given?
-        @log.write(message) if @options.has_key?("Output_log")
-        @dumplog.log_dump('#', message) if @options.has_key?("Dump_log")
-      end
-
-      super(@sock)
-    end # initialize
-
-    # The socket the Telnet object is using.  Note that this object becomes
-    # a delegate of the Telnet object, so normally you invoke its methods
-    # directly on the Telnet object.
-    attr :sock 
-
-    # Set telnet command interpretation on (+mode+ == true) or off
-    # (+mode+ == false), or return the current value (+mode+ not
-    # provided).  It should be on for true telnet sessions, off if
-    # using Net::Telnet to connect to a non-telnet service such
-    # as SMTP.
-    def telnetmode(mode = nil)
-      case mode
-      when nil
-        @options["Telnetmode"]
-      when true, false
-        @options["Telnetmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false, or missing"
-      end
-    end
-
-    # Turn telnet command interpretation on (true) or off (false).  It
-    # should be on for true telnet sessions, off if using Net::Telnet
-    # to connect to a non-telnet service such as SMTP.
-    def telnetmode=(mode)
-      if (true == mode or false == mode)
-        @options["Telnetmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Turn newline conversion on (+mode+ == false) or off (+mode+ == true),
-    # or return the current value (+mode+ is not specified).
-    def binmode(mode = nil)
-      case mode
-      when nil
-        @options["Binmode"] 
-      when true, false
-        @options["Binmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Turn newline conversion on (false) or off (true).
-    def binmode=(mode)
-      if (true == mode or false == mode)
-        @options["Binmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Preprocess received data from the host.
-    #
-    # Performs newline conversion and detects telnet command sequences.
-    # Called automatically by #waitfor().  You should only use this 
-    # method yourself if you have read input directly using sysread()
-    # or similar, and even then only if in telnet mode.
-    def preprocess(string)
-      # combine CR+NULL into CR
-      string = string.gsub(/#{CR}#{NULL}/no, CR) if @options["Telnetmode"]
-
-      # combine EOL into "\n"
-      string = string.gsub(/#{EOL}/no, "\n") unless @options["Binmode"]
-
-      string.gsub(/#{IAC}(
-                   [#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]|
-                   [#{DO}#{DONT}#{WILL}#{WONT}]
-                     [#{OPT_BINARY}-#{OPT_NEW_ENVIRON}#{OPT_EXOPL}]|
-                   #{SB}[^#{IAC}]*#{IAC}#{SE}
-                 )/xno) do
-        if    IAC == $1  # handle escaped IAC characters
-          IAC
-        elsif AYT == $1  # respond to "IAC AYT" (are you there)
-          self.write("nobody here but us pigeons" + EOL)
-          ''
-        elsif DO[0] == $1[0]  # respond to "IAC DO x"
-          if OPT_BINARY[0] == $1[1]
-            @telnet_option["BINARY"] = true
-            self.write(IAC + WILL + OPT_BINARY)
-          else
-            self.write(IAC + WONT + $1[1..1])
-          end
-          ''
-        elsif DONT[0] == $1[0]  # respond to "IAC DON'T x" with "IAC WON'T x"
-          self.write(IAC + WONT + $1[1..1])
-          ''
-        elsif WILL[0] == $1[0]  # respond to "IAC WILL x"
-          if    OPT_BINARY[0] == $1[1]
-            self.write(IAC + DO + OPT_BINARY)
-          elsif OPT_ECHO[0] == $1[1]
-            self.write(IAC + DO + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = true
-            self.write(IAC + DO + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif WONT[0] == $1[0]  # respond to "IAC WON'T x"
-          if    OPT_ECHO[0] == $1[1]
-            self.write(IAC + DONT + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = false
-            self.write(IAC + DONT + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        else
-          ''
-        end
-      end
-    end # preprocess
-
-    # Read data from the host until a certain sequence is matched.
-    #
-    # If a block is given, the received data will be yielded as it
-    # is read in (not necessarily all in one go), or nil if EOF 
-    # occurs before any data is received.  Whether a block is given
-    # or not, all data read will be returned in a single string, or again 
-    # nil if EOF occurs before any data is received.  Note that
-    # received data includes the matched sequence we were looking for.
-    #
-    # +options+ can be either a regular expression or a hash of options.
-    # If a regular expression, this specifies the data to wait for.
-    # If a hash, this can specify the following options:
-    #
-    # Match:: a regular expression, specifying the data to wait for.
-    # Prompt:: as for Match; used only if Match is not specified.
-    # String:: as for Match, except a string that will be converted
-    #          into a regular expression.  Used only if Match and
-    #          Prompt are not specified.
-    # Timeout:: the number of seconds to wait for data from the host
-    #           before raising a TimeoutError.  If set to false, 
-    #           no timeout will occur.  If not specified, the
-    #           Timeout option value specified when this instance
-    #           was created will be used, or, failing that, the
-    #           default value of 10 seconds.
-    # Waittime:: the number of seconds to wait after matching against
-    #            the input data to see if more data arrives.  If more
-    #            data arrives within this time, we will judge ourselves
-    #            not to have matched successfully, and will continue
-    #            trying to match.  If not specified, the Waittime option
-    #            value specified when this instance was created will be
-    #            used, or, failing that, the default value of 0 seconds,
-    #            which means not to wait for more input.
-    #           
-    def waitfor(options) # :yield: recvdata
-      time_out = @options["Timeout"]
-      waittime = @options["Waittime"]
-
-      if options.kind_of?(Hash)
-        prompt   = if options.has_key?("Match")
-                     options["Match"]
-                   elsif options.has_key?("Prompt")
-                     options["Prompt"]
-                   elsif options.has_key?("String")
-                     Regexp.new( Regexp.quote(options["String"]) )
-                   end
-        time_out = options["Timeout"]  if options.has_key?("Timeout")
-        waittime = options["Waittime"] if options.has_key?("Waittime")
-      else
-        prompt = options
-      end
-
-      if time_out == false
-        time_out = nil
-      end
-
-      line = ''
-      buf = ''
-      rest = ''
-      until(prompt === line and not IO::select([@sock], nil, nil, waittime))
-        unless IO::select([@sock], nil, nil, time_out)
-          raise TimeoutError, "timed out while waiting for more data"
-        end
-        begin
-          c = @sock.readpartial(1024 * 1024)
-          @dumplog.log_dump('<', c) if @options.has_key?("Dump_log")
-          if @options["Telnetmode"]
-            c = rest + c
-            if Integer(c.rindex(/#{IAC}#{SE}/no)) <
-               Integer(c.rindex(/#{IAC}#{SB}/no))
-              buf = preprocess(c[0 ... c.rindex(/#{IAC}#{SB}/no)])
-              rest = c[c.rindex(/#{IAC}#{SB}/no) .. -1]
-            elsif pt = c.rindex(/#{IAC}[^#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]?\z/no) ||
-                       c.rindex(/\r\z/no)
-              buf = preprocess(c[0 ... pt])
-              rest = c[pt .. -1]
-            else
-              buf = preprocess(c)
-              rest = ''
-            end
-         else
-           # Not Telnetmode.
-           #
-           # We cannot use preprocess() on this data, because that
-           # method makes some Telnetmode-specific assumptions.
-           buf = rest + c
-           rest = ''
-           unless @options["Binmode"]
-             if pt = buf.rindex(/\r\z/no)
-               buf = buf[0 ... pt]
-               rest = buf[pt .. -1]
-             end
-             buf.gsub!(/#{EOL}/no, "\n")
-           end
-          end
-          @log.print(buf) if @options.has_key?("Output_log")
-          line += buf
-          yield buf if block_given?
-        rescue EOFError # End of file reached
-          if line == ''
-            line = nil
-            yield nil if block_given?
-          end
-          break
-        end
-      end
-      line
-    end
-
-    # Write +string+ to the host.
-    #
-    # Does not perform any conversions on +string+.  Will log +string+ to the
-    # dumplog, if the Dump_log option is set.
-    def write(string)
-      length = string.length
-      while 0 < length
-        IO::select(nil, [@sock])
-        @dumplog.log_dump('>', string[-length..-1]) if @options.has_key?("Dump_log")
-        length -= @sock.syswrite(string[-length..-1])
-      end
-    end
-
-    # Sends a string to the host.
-    #
-    # This does _not_ automatically append a newline to the string.  Embedded
-    # newlines may be converted and telnet command sequences escaped 
-    # depending upon the values of telnetmode, binmode, and telnet options
-    # set by the host.
-    def print(string)
-      string = string.gsub(/#{IAC}/no, IAC + IAC) if @options["Telnetmode"]
-
-      if @options["Binmode"]
-        self.write(string)
-      else
-        if @telnet_option["BINARY"] and @telnet_option["SGA"]
-          # IAC WILL SGA IAC DO BIN send EOL --> CR
-          self.write(string.gsub(/\n/n, CR))
-        elsif @telnet_option["SGA"]
-          # IAC WILL SGA send EOL --> CR+NULL
-          self.write(string.gsub(/\n/n, CR + NULL))
-        else
-          # NONE send EOL --> CR+LF
-          self.write(string.gsub(/\n/n, EOL))
-        end
-      end
-    end
-
-    # Sends a string to the host.
-    #
-    # Same as #print(), but appends a newline to the string.
-    def puts(string)
-      self.print(string + "\n")
-    end
-
-    # Send a command to the host.
-    #
-    # More exactly, sends a string to the host, and reads in all received
-    # data until is sees the prompt or other matched sequence.
-    #
-    # If a block is given, the received data will be yielded to it as
-    # it is read in.  Whether a block is given or not, the received data 
-    # will be return as a string.  Note that the received data includes
-    # the prompt and in most cases the host's echo of our command.
-    #
-    # +options+ is either a String, specified the string or command to
-    # send to the host; or it is a hash of options.  If a hash, the
-    # following options can be specified:
-    #
-    # String:: the command or other string to send to the host.
-    # Match:: a regular expression, the sequence to look for in
-    #         the received data before returning.  If not specified,
-    #         the Prompt option value specified when this instance
-    #         was created will be used, or, failing that, the default
-    #         prompt of /[$%#>] \z/n.
-    # Timeout:: the seconds to wait for data from the host before raising
-    #           a Timeout error.  If not specified, the Timeout option
-    #           value specified when this instance was created will be
-    #           used, or, failing that, the default value of 10 seconds.
-    #
-    # The command or other string will have the newline sequence appended
-    # to it.
-    def cmd(options) # :yield: recvdata
-      match    = @options["Prompt"]
-      time_out = @options["Timeout"]
-
-      if options.kind_of?(Hash)
-        string   = options["String"]
-        match    = options["Match"]   if options.has_key?("Match")
-        time_out = options["Timeout"] if options.has_key?("Timeout")
-      else
-        string = options
-      end
-
-      self.puts(string)
-      if block_given?
-        waitfor({"Prompt" => match, "Timeout" => time_out}){|c| yield c }
-      else
-        waitfor({"Prompt" => match, "Timeout" => time_out})
-      end
-    end
-
-    # Login to the host with a given username and password.
-    #
-    # The username and password can either be provided as two string
-    # arguments in that order, or as a hash with keys "Name" and
-    # "Password".    
-    #
-    # This method looks for the strings "login" and "Password" from the
-    # host to determine when to send the username and password.  If the
-    # login sequence does not follow this pattern (for instance, you
-    # are connecting to a service other than telnet), you will need
-    # to handle login yourself.
-    #
-    # The password can be omitted, either by only
-    # provided one String argument, which will be used as the username,
-    # or by providing a has that has no "Password" key.  In this case,
-    # the method will not look for the "Password:" prompt; if it is
-    # sent, it will have to be dealt with by later calls.
-    #
-    # The method returns all data received during the login process from
-    # the host, including the echoed username but not the password (which
-    # the host should not echo).  If a block is passed in, this received
-    # data is also yielded to the block as it is received.
-    def login(options, password = nil) # :yield: recvdata
-      login_prompt = /[Ll]ogin[: ]*\z/n
-      password_prompt = /[Pp]ass(?:word|phrase)[: ]*\z/n
-      if options.kind_of?(Hash)
-        username = options["Name"]
-        password = options["Password"]
-	login_prompt = options["LoginPrompt"] if options["LoginPrompt"]
-	password_prompt = options["PasswordPrompt"] if options["PasswordPrompt"]
-      else
-        username = options
-      end
-
-      if block_given?
-        line = waitfor(login_prompt){|c| yield c }
-        if password
-          line += cmd({"String" => username,
-                       "Match" => password_prompt}){|c| yield c }
-          line += cmd(password){|c| yield c }
-        else
-          line += cmd(username){|c| yield c }
-        end
-      else
-        line = waitfor(login_prompt)
-        if password
-          line += cmd({"String" => username,
-                       "Match" => password_prompt})
-          line += cmd(password)
-        else
-          line += cmd(username)
-        end
-      end
-      line
-    end
-
-  end  # class Telnet
-end  # module Net
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnets.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnets.rb
deleted file mode 100644
index 694f45c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/net/telnets.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-=begin
-= $RCSfile$ -- SSL/TLS enhancement for Net::Telnet.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: telnets.rb 16878 2008-06-07 16:16:46Z shyouhei $
-  
-  2001/11/06: Contiributed to Ruby/OpenSSL project.
-
-== class Net::Telnet
-
-This class will initiate SSL/TLS session automaticaly if the server
-sent OPT_STARTTLS. Some options are added for SSL/TLS.
-
-  host = Net::Telnet::new({
-           "Host"       => "localhost",
-           "Port"       => "telnets",
-           ## follows are new options.
-           'CertFile'   => "user.crt",
-           'KeyFile'    => "user.key",
-           'CAFile'     => "/some/where/certs/casert.pem",
-           'CAPath'     => "/some/where/caserts",
-           'VerifyMode' => SSL::VERIFY_PEER,
-           'VerifyCallback' => verify_proc
-         })
-
-Or, the new options ('Cert', 'Key' and 'CACert') are available from
-Michal Rokos's OpenSSL module.
-
-  cert_data = File.open("user.crt"){|io| io.read }
-  pkey_data = File.open("user.key"){|io| io.read }
-  cacert_data = File.open("your_ca.pem"){|io| io.read }
-  host = Net::Telnet::new({
-           "Host"       => "localhost",
-           "Port"       => "telnets",
-           'Cert'       => OpenSSL::X509::Certificate.new(cert_data)
-           'Key'        => OpenSSL::PKey::RSA.new(pkey_data)
-           'CACert'     => OpenSSL::X509::Certificate.new(cacert_data)
-           'CAFile'     => "/some/where/certs/casert.pem",
-           'CAPath'     => "/some/where/caserts",
-           'VerifyMode' => SSL::VERIFY_PEER,
-           'VerifyCallback' => verify_proc
-         })
-
-This class is expected to be a superset of usual Net::Telnet.
-=end
-
-require "net/telnet"
-require "openssl"
-
-module Net
-  class Telnet
-    attr_reader :ssl
-
-    OPT_STARTTLS       =  46.chr # "\056" # "\x2e" # Start TLS
-    TLS_FOLLOWS        =   1.chr # "\001" # "\x01" # FOLLOWS (for STARTTLS)
-
-    alias preprocess_orig preprocess
-
-    def ssl?; @ssl; end
-
-    def preprocess(string)
-      # combine CR+NULL into CR
-      string = string.gsub(/#{CR}#{NULL}/no, CR) if @options["Telnetmode"]
-
-      # combine EOL into "\n"
-      string = string.gsub(/#{EOL}/no, "\n") unless @options["Binmode"]
-
-      string.gsub(/#{IAC}(
-                   [#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]|
-                   [#{DO}#{DONT}#{WILL}#{WONT}][#{OPT_BINARY}-#{OPT_EXOPL}]|
-                   #{SB}[#{OPT_BINARY}-#{OPT_EXOPL}]
-                     (#{IAC}#{IAC}|[^#{IAC}])+#{IAC}#{SE}
-                 )/xno) do
-        if    IAC == $1  # handle escaped IAC characters
-          IAC
-        elsif AYT == $1  # respond to "IAC AYT" (are you there)
-          self.write("nobody here but us pigeons" + EOL)
-          ''
-        elsif DO[0] == $1[0]  # respond to "IAC DO x"
-          if    OPT_BINARY[0] == $1[1]
-            @telnet_option["BINARY"] = true
-            self.write(IAC + WILL + OPT_BINARY)
-          elsif OPT_STARTTLS[0] == $1[1]
-            self.write(IAC + WILL + OPT_STARTTLS)
-            self.write(IAC + SB + OPT_STARTTLS + TLS_FOLLOWS + IAC + SE)
-          else
-            self.write(IAC + WONT + $1[1..1])
-          end
-          ''
-        elsif DONT[0] == $1[0]  # respond to "IAC DON'T x" with "IAC WON'T x"
-          self.write(IAC + WONT + $1[1..1])
-          ''
-        elsif WILL[0] == $1[0]  # respond to "IAC WILL x"
-          if    OPT_BINARY[0] == $1[1]
-            self.write(IAC + DO + OPT_BINARY)
-          elsif OPT_ECHO[0] == $1[1]
-            self.write(IAC + DO + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = true
-            self.write(IAC + DO + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif WONT[0] == $1[0]  # respond to "IAC WON'T x"
-          if    OPT_ECHO[0] == $1[1]
-            self.write(IAC + DONT + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = false
-            self.write(IAC + DONT + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif SB[0] == $1[0]    # respond to "IAC SB xxx IAC SE"
-          if    OPT_STARTTLS[0] == $1[1] && TLS_FOLLOWS[0] == $2[0]
-            @sock = OpenSSL::SSL::SSLSocket.new(@sock)
-            @sock.cert            = @options['Cert'] unless @sock.cert
-            @sock.key             = @options['Key'] unless @sock.key
-            @sock.ca_cert         = @options['CACert']
-            @sock.ca_file         = @options['CAFile']
-            @sock.ca_path         = @options['CAPath']
-            @sock.timeout         = @options['Timeout']
-            @sock.verify_mode     = @options['VerifyMode']
-            @sock.verify_callback = @options['VerifyCallback']
-            @sock.verify_depth    = @options['VerifyDepth']
-            @sock.connect
-            if @options['VerifyMode'] != OpenSSL::SSL::VERIFY_NONE
-              @sock.post_connection_check(@options['Host'])
-            end
-            @ssl = true
-          end
-          ''
-        else
-          ''
-        end
-      end
-    end # preprocess
-    
-    alias waitfor_org waitfor
-
-    def waitfor(options)
-      time_out = @options["Timeout"]
-      waittime = @options["Waittime"]
-
-      if options.kind_of?(Hash)
-        prompt   = if options.has_key?("Match")
-                     options["Match"]
-                   elsif options.has_key?("Prompt")
-                     options["Prompt"]
-                   elsif options.has_key?("String")
-                     Regexp.new( Regexp.quote(options["String"]) )
-                   end
-        time_out = options["Timeout"]  if options.has_key?("Timeout")
-        waittime = options["Waittime"] if options.has_key?("Waittime")
-      else
-        prompt = options
-      end
-
-      if time_out == false
-        time_out = nil
-      end
-
-      line = ''
-      buf = ''
-      @rest = '' unless @rest
-
-      until(prompt === line and not IO::select([@sock], nil, nil, waittime))
-        unless IO::select([@sock], nil, nil, time_out)
-          raise TimeoutError, "timed-out; wait for the next data"
-        end
-        begin
-          c = @rest + @sock.sysread(1024 * 1024)
-          @dumplog.log_dump('<', c) if @options.has_key?("Dump_log")
-          if @options["Telnetmode"]   
-            pos = 0
-            catch(:next){
-              while true
-                case c[pos]
-                when IAC[0]
-                  case c[pos+1]
-                  when DO[0], DONT[0], WILL[0], WONT[0]
-                    throw :next unless c[pos+2]
-                    pos += 3
-                  when SB[0]
-                    ret = detect_sub_negotiation(c, pos)
-                    throw :next unless ret
-                    pos = ret
-                  when nil
-                    throw :next
-                  else
-                    pos += 2
-                  end
-                when nil
-                  throw :next
-                else
-                  pos += 1
-                end
-              end
-            }
-
-            buf = preprocess(c[0...pos])
-            @rest = c[pos..-1]
-          end
-          @log.print(buf) if @options.has_key?("Output_log")
-          line.concat(buf)
-          yield buf if block_given?   
-        rescue EOFError # End of file reached
-          if line == ''
-            line = nil
-            yield nil if block_given? 
-          end
-          break
-        end
-      end
-      line
-    end
-
-    private
-
-    def detect_sub_negotiation(data, pos)
-      return nil if data.length < pos+6  # IAC SB x param IAC SE
-      pos += 3
-      while true
-        case data[pos]
-        when IAC[0]
-          if data[pos+1] == SE[0]
-            pos += 2
-            return pos
-          else
-            pos += 2
-          end
-        when nil
-          return nil
-        else
-          pos += 1
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/observer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/observer.rb
deleted file mode 100644
index 64c7d81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/observer.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-#
-# observer.rb implements the _Observer_ object-oriented design pattern.  The
-# following documentation is copied, with modifications, from "Programming
-# Ruby", by Hunt and Thomas; http://www.rubycentral.com/book/lib_patterns.html.
-#
-# == About
-#
-# The Observer pattern, also known as Publish/Subscribe, provides a simple
-# mechanism for one object to inform a set of interested third-party objects
-# when its state changes. 
-#
-# == Mechanism
-#
-# In the Ruby implementation, the notifying class mixes in the +Observable+
-# module, which provides the methods for managing the associated observer
-# objects.
-#
-# The observers must implement the +update+ method to receive notifications.
-#
-# The observable object must:
-# * assert that it has +changed+
-# * call +notify_observers+
-#
-# == Example
-#
-# The following example demonstrates this nicely.  A +Ticker+, when run,
-# continually receives the stock +Price+ for its + at symbol+.  A +Warner+ is a
-# general observer of the price, and two warners are demonstrated, a +WarnLow+
-# and a +WarnHigh+, which print a warning if the price is below or above their
-# set limits, respectively.
-#
-# The +update+ callback allows the warners to run without being explicitly
-# called.  The system is set up with the +Ticker+ and several observers, and the
-# observers do their duty without the top-level code having to interfere.
-#
-# Note that the contract between publisher and subscriber (observable and
-# observer) is not declared or enforced.  The +Ticker+ publishes a time and a
-# price, and the warners receive that.  But if you don't ensure that your
-# contracts are correct, nothing else can warn you.
-#
-#   require "observer"
-#   
-#   class Ticker          ### Periodically fetch a stock price.
-#     include Observable
-#   
-#     def initialize(symbol)
-#       @symbol = symbol
-#     end
-#   
-#     def run
-#       lastPrice = nil
-#       loop do
-#         price = Price.fetch(@symbol)
-#         print "Current price: #{price}\n"
-#         if price != lastPrice
-#           changed                 # notify observers
-#           lastPrice = price
-#           notify_observers(Time.now, price)
-#         end
-#         sleep 1
-#       end
-#     end
-#   end
-#
-#   class Price           ### A mock class to fetch a stock price (60 - 140).
-#     def Price.fetch(symbol)
-#       60 + rand(80)
-#     end
-#   end
-#   
-#   class Warner          ### An abstract observer of Ticker objects.
-#     def initialize(ticker, limit)
-#       @limit = limit
-#       ticker.add_observer(self)
-#     end
-#   end
-#   
-#   class WarnLow < Warner
-#     def update(time, price)       # callback for observer
-#       if price < @limit
-#         print "--- #{time.to_s}: Price below #@limit: #{price}\n"
-#       end
-#     end
-#   end
-#   
-#   class WarnHigh < Warner
-#     def update(time, price)       # callback for observer
-#       if price > @limit
-#         print "+++ #{time.to_s}: Price above #@limit: #{price}\n"
-#       end
-#     end
-#   end
-#
-#   ticker = Ticker.new("MSFT")
-#   WarnLow.new(ticker, 80)
-#   WarnHigh.new(ticker, 120)
-#   ticker.run
-#
-# Produces:
-#
-#   Current price: 83
-#   Current price: 75
-#   --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 75
-#   Current price: 90
-#   Current price: 134
-#   +++ Sun Jun 09 00:10:25 CDT 2002: Price above 120: 134
-#   Current price: 134
-#   Current price: 112
-#   Current price: 79
-#   --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 79
-
-
-#
-# Implements the Observable design pattern as a mixin so that other objects can
-# be notified of changes in state.  See observer.rb for details and an example.
-#
-module Observable
-
-  #
-  # Add +observer+ as an observer on this object. +observer+ will now receive
-  # notifications.
-  #
-  def add_observer(observer)
-    @observer_peers = [] unless defined? @observer_peers
-    unless observer.respond_to? :update
-      raise NoMethodError, "observer needs to respond to `update'" 
-    end
-    @observer_peers.push observer
-  end
-
-  #
-  # Delete +observer+ as an observer on this object. It will no longer receive
-  # notifications.
-  #
-  def delete_observer(observer)
-    @observer_peers.delete observer if defined? @observer_peers
-  end
-
-  #
-  # Delete all observers associated with this object.
-  #
-  def delete_observers
-    @observer_peers.clear if defined? @observer_peers
-  end
-
-  #
-  # Return the number of observers associated with this object.
-  #
-  def count_observers
-    if defined? @observer_peers
-      @observer_peers.size
-    else
-      0
-    end
-  end
-
-  #
-  # Set the changed state of this object.  Notifications will be sent only if
-  # the changed +state+ is +true+.
-  #
-  def changed(state=true)
-    @observer_state = state
-  end
-
-  #
-  # Query the changed state of this object.
-  #
-  def changed?
-    if defined? @observer_state and @observer_state
-      true
-    else
-      false
-    end
-  end
-
-  #
-  # If this object's changed state is +true+, invoke the update method in each
-  # currently associated observer in turn, passing it the given arguments. The
-  # changed state is then set to +false+.
-  #
-  def notify_observers(*arg)
-    if defined? @observer_state and @observer_state
-      if defined? @observer_peers
-	for i in @observer_peers.dup
-	  i.update(*arg)
-	end
-      end
-      @observer_state = false
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open-uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open-uri.rb
deleted file mode 100644
index 0dae95b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open-uri.rb
+++ /dev/null
@@ -1,678 +0,0 @@
-require 'uri'
-require 'stringio'
-require 'time'
-
-module Kernel
-  private
-  alias open_uri_original_open open # :nodoc:
-
-  # makes possible to open various resources including URIs.
-  # If the first argument respond to `open' method,
-  # the method is called with the rest arguments.
-  #
-  # If the first argument is a string which begins with xxx://,
-  # it is parsed by URI.parse.  If the parsed object respond to `open' method,
-  # the method is called with the rest arguments.
-  #
-  # Otherwise original open is called.
-  #
-  # Since open-uri.rb provides URI::HTTP#open, URI::HTTPS#open and
-  # URI::FTP#open,
-  # Kernel[#.]open can accepts such URIs and strings which begins with
-  # http://, https:// and ftp://.
-  # In these case, the opened file object is extended by OpenURI::Meta.
-  def open(name, *rest, &block) # :doc:
-    if name.respond_to?(:open)
-      name.open(*rest, &block)
-    elsif name.respond_to?(:to_str) &&
-          %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
-          (uri = URI.parse(name)).respond_to?(:open)
-      uri.open(*rest, &block)
-    else
-      open_uri_original_open(name, *rest, &block)
-    end
-  end
-  module_function :open
-end
-
-# OpenURI is an easy-to-use wrapper for net/http, net/https and net/ftp.
-#
-#== Example
-#
-# It is possible to open http/https/ftp URL as usual like opening a file:
-#
-#   open("http://www.ruby-lang.org/") {|f|
-#     f.each_line {|line| p line}
-#   }
-#
-# The opened file has several methods for meta information as follows since
-# it is extended by OpenURI::Meta.
-#
-#   open("http://www.ruby-lang.org/en") {|f|
-#     f.each_line {|line| p line}
-#     p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
-#     p f.content_type     # "text/html"
-#     p f.charset          # "iso-8859-1"
-#     p f.content_encoding # []
-#     p f.last_modified    # Thu Dec 05 02:45:02 UTC 2002
-#   }
-#
-# Additional header fields can be specified by an optional hash argument.
-#
-#   open("http://www.ruby-lang.org/en/",
-#     "User-Agent" => "Ruby/#{RUBY_VERSION}",
-#     "From" => "foo at bar.invalid",
-#     "Referer" => "http://www.ruby-lang.org/") {|f|
-#     # ...
-#   }
-#
-# The environment variables such as http_proxy, https_proxy and ftp_proxy
-# are in effect by default.  :proxy => nil disables proxy.
-#
-#   open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
-#     # ...
-#   }
-#
-# URI objects can be opened in a similar way.
-#
-#   uri = URI.parse("http://www.ruby-lang.org/en/")
-#   uri.open {|f|
-#     # ...
-#   }
-#
-# URI objects can be read directly. The returned string is also extended by
-# OpenURI::Meta.
-#
-#   str = uri.read
-#   p str.base_uri
-#
-# Author:: Tanaka Akira <akr at m17n.org>
-
-module OpenURI
-  Options = {
-    :proxy => true,
-    :progress_proc => true,
-    :content_length_proc => true,
-    :http_basic_authentication => true,
-  }
-
-  def OpenURI.check_options(options) # :nodoc:
-    options.each {|k, v|
-      next unless Symbol === k
-      unless Options.include? k
-        raise ArgumentError, "unrecognized option: #{k}"
-      end
-    }
-  end
-
-  def OpenURI.scan_open_optional_arguments(*rest) # :nodoc:
-    if !rest.empty? && (String === rest.first || Integer === rest.first)
-      mode = rest.shift
-      if !rest.empty? && Integer === rest.first
-        perm = rest.shift
-      end
-    end
-    return mode, perm, rest
-  end
-
-  def OpenURI.open_uri(name, *rest) # :nodoc:
-    uri = URI::Generic === name ? name : URI.parse(name)
-    mode, perm, rest = OpenURI.scan_open_optional_arguments(*rest)
-    options = rest.shift if !rest.empty? && Hash === rest.first
-    raise ArgumentError.new("extra arguments") if !rest.empty?
-    options ||= {}
-    OpenURI.check_options(options)
-
-    unless mode == nil ||
-           mode == 'r' || mode == 'rb' ||
-           mode == File::RDONLY
-      raise ArgumentError.new("invalid access mode #{mode} (#{uri.class} resource is read only.)")
-    end
-
-    io = open_loop(uri, options)
-    if block_given?
-      begin
-        yield io
-      ensure
-        io.close
-      end
-    else
-      io
-    end
-  end
-
-  def OpenURI.open_loop(uri, options) # :nodoc:
-    case opt_proxy = options.fetch(:proxy, true)
-    when true
-      find_proxy = lambda {|u| u.find_proxy}
-    when nil, false
-      find_proxy = lambda {|u| nil}
-    when String
-      opt_proxy = URI.parse(opt_proxy)
-      find_proxy = lambda {|u| opt_proxy}
-    when URI::Generic
-      find_proxy = lambda {|u| opt_proxy}
-    else
-      raise ArgumentError.new("Invalid proxy option: #{opt_proxy}")
-    end
-
-    uri_set = {}
-    buf = nil
-    while true
-      redirect = catch(:open_uri_redirect) {
-        buf = Buffer.new
-        uri.buffer_open(buf, find_proxy.call(uri), options)
-        nil
-      }
-      if redirect
-        if redirect.relative?
-          # Although it violates RFC2616, Location: field may have relative
-          # URI.  It is converted to absolute URI using uri as a base URI.
-          redirect = uri + redirect
-        end
-        unless OpenURI.redirectable?(uri, redirect)
-          raise "redirection forbidden: #{uri} -> #{redirect}"
-        end
-        if options.include? :http_basic_authentication
-          # send authentication only for the URI directly specified.
-          options = options.dup
-          options.delete :http_basic_authentication
-        end
-        uri = redirect
-        raise "HTTP redirection loop: #{uri}" if uri_set.include? uri.to_s
-        uri_set[uri.to_s] = true
-      else
-        break
-      end
-    end
-    io = buf.io
-    io.base_uri = uri
-    io
-  end
-
-  def OpenURI.redirectable?(uri1, uri2) # :nodoc:
-    # This test is intended to forbid a redirection from http://... to
-    # file:///etc/passwd.
-    # However this is ad hoc.  It should be extensible/configurable.
-    uri1.scheme.downcase == uri2.scheme.downcase ||
-    (/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:http|ftp)\z/i =~ uri2.scheme)
-  end
-
-  def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
-    if proxy
-      raise "Non-HTTP proxy URI: #{proxy}" if proxy.class != URI::HTTP
-    end
-
-    if target.userinfo && "1.9.0" <= RUBY_VERSION
-      # don't raise for 1.8 because compatibility.
-      raise ArgumentError, "userinfo not supported.  [RFC3986]"
-    end
-
-    require 'net/http'
-    klass = Net::HTTP
-    if URI::HTTP === target
-      # HTTP or HTTPS
-      if proxy
-        klass = Net::HTTP::Proxy(proxy.host, proxy.port)
-      end
-      target_host = target.host
-      target_port = target.port
-      request_uri = target.request_uri
-    else
-      # FTP over HTTP proxy
-      target_host = proxy.host
-      target_port = proxy.port
-      request_uri = target.to_s
-    end
-
-    http = klass.new(target_host, target_port)
-    if target.class == URI::HTTPS
-      require 'net/https'
-      http.use_ssl = true
-      http.verify_mode = OpenSSL::SSL::VERIFY_PEER
-      store = OpenSSL::X509::Store.new
-      store.set_default_paths
-      http.cert_store = store
-    end
-
-    header = {}
-    options.each {|k, v| header[k] = v if String === k }
-
-    resp = nil
-    http.start {
-      req = Net::HTTP::Get.new(request_uri, header)
-      if options.include? :http_basic_authentication
-        user, pass = options[:http_basic_authentication]
-        req.basic_auth user, pass
-      end
-      http.request(req) {|response|
-        resp = response
-        if options[:content_length_proc] && Net::HTTPSuccess === resp
-          if resp.key?('Content-Length')
-            options[:content_length_proc].call(resp['Content-Length'].to_i)
-          else
-            options[:content_length_proc].call(nil)
-          end
-        end
-        resp.read_body {|str|
-          buf << str
-          if options[:progress_proc] && Net::HTTPSuccess === resp
-            options[:progress_proc].call(buf.size)
-          end
-        }
-      }
-    }
-    io = buf.io
-    io.rewind
-    io.status = [resp.code, resp.message]
-    resp.each {|name,value| buf.io.meta_add_field name, value }
-    case resp
-    when Net::HTTPSuccess
-    when Net::HTTPMovedPermanently, # 301
-         Net::HTTPFound, # 302
-         Net::HTTPSeeOther, # 303
-         Net::HTTPTemporaryRedirect # 307
-      throw :open_uri_redirect, URI.parse(resp['location'])
-    else
-      raise OpenURI::HTTPError.new(io.status.join(' '), io)
-    end
-  end
-
-  class HTTPError < StandardError
-    def initialize(message, io)
-      super(message)
-      @io = io
-    end
-    attr_reader :io
-  end
-
-  class Buffer # :nodoc:
-    def initialize
-      @io = StringIO.new
-      @size = 0
-    end
-    attr_reader :size
-
-    StringMax = 10240
-    def <<(str)
-      @io << str
-      @size += str.length
-      if StringIO === @io && StringMax < @size
-        require 'tempfile'
-        io = Tempfile.new('open-uri')
-        io.binmode
-        Meta.init io, @io if @io.respond_to? :meta
-        io << @io.string
-        @io = io
-      end
-    end
-
-    def io
-      Meta.init @io unless @io.respond_to? :meta
-      @io
-    end
-  end
-
-  # Mixin for holding meta-information.
-  module Meta
-    def Meta.init(obj, src=nil) # :nodoc:
-      obj.extend Meta
-      obj.instance_eval {
-        @base_uri = nil
-        @meta = {}
-      }
-      if src
-        obj.status = src.status
-        obj.base_uri = src.base_uri
-        src.meta.each {|name, value|
-          obj.meta_add_field(name, value)
-        }
-      end
-    end
-
-    # returns an Array which consists status code and message.
-    attr_accessor :status
-
-    # returns a URI which is base of relative URIs in the data.
-    # It may differ from the URI supplied by a user because redirection.
-    attr_accessor :base_uri
-
-    # returns a Hash which represents header fields.
-    # The Hash keys are downcased for canonicalization.
-    attr_reader :meta
-
-    def meta_add_field(name, value) # :nodoc:
-      @meta[name.downcase] = value
-    end
-
-    # returns a Time which represents Last-Modified field.
-    def last_modified
-      if v = @meta['last-modified']
-        Time.httpdate(v)
-      else
-        nil
-      end
-    end
-
-    RE_LWS = /[\r\n\t ]+/n
-    RE_TOKEN = %r{[^\x00- ()<>@,;:\\"/\[\]?={}\x7f]+}n
-    RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
-    RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
-
-    def content_type_parse # :nodoc:
-      v = @meta['content-type']
-      # The last (?:;#{RE_LWS}?)? matches extra ";" which violates RFC2045.
-      if v && %r{\A#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?/(#{RE_TOKEN})#{RE_LWS}?(#{RE_PARAMETERS})(?:;#{RE_LWS}?)?\z}no =~ v
-        type = $1.downcase
-        subtype = $2.downcase
-        parameters = []
-        $3.scan(/;#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?=#{RE_LWS}?(?:(#{RE_TOKEN})|(#{RE_QUOTED_STRING}))/no) {|att, val, qval|
-          val = qval.gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/) { $1 ? $1[1,1] : $& } if qval
-          parameters << [att.downcase, val]
-        }
-        ["#{type}/#{subtype}", *parameters]
-      else
-        nil
-      end
-    end
-
-    # returns "type/subtype" which is MIME Content-Type.
-    # It is downcased for canonicalization.
-    # Content-Type parameters are stripped.
-    def content_type
-      type, *parameters = content_type_parse
-      type || 'application/octet-stream'
-    end
-
-    # returns a charset parameter in Content-Type field.
-    # It is downcased for canonicalization.
-    #
-    # If charset parameter is not given but a block is given,
-    # the block is called and its result is returned.
-    # It can be used to guess charset.
-    #
-    # If charset parameter and block is not given,
-    # nil is returned except text type in HTTP.
-    # In that case, "iso-8859-1" is returned as defined by RFC2616 3.7.1.
-    def charset
-      type, *parameters = content_type_parse
-      if pair = parameters.assoc('charset')
-        pair.last.downcase
-      elsif block_given?
-        yield
-      elsif type && %r{\Atext/} =~ type &&
-            @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
-        "iso-8859-1" # RFC2616 3.7.1
-      else
-        nil
-      end
-    end
-
-    # returns a list of encodings in Content-Encoding field
-    # as an Array of String.
-    # The encodings are downcased for canonicalization.
-    def content_encoding
-      v = @meta['content-encoding']
-      if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
-        v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
-      else
-        []
-      end
-    end
-  end
-
-  # Mixin for HTTP and FTP URIs.
-  module OpenRead
-    # OpenURI::OpenRead#open provides `open' for URI::HTTP and URI::FTP.
-    #
-    # OpenURI::OpenRead#open takes optional 3 arguments as:
-    # OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
-    #
-    # `mode', `perm' is same as Kernel#open.
-    #
-    # However, `mode' must be read mode because OpenURI::OpenRead#open doesn't
-    # support write mode (yet).
-    # Also `perm' is just ignored because it is meaningful only for file
-    # creation.
-    #
-    # `options' must be a hash.
-    #
-    # Each pairs which key is a string in the hash specify a extra header
-    # field for HTTP.
-    # I.e. it is ignored for FTP without HTTP proxy.
-    #
-    # The hash may include other options which key is a symbol:
-    #
-    # [:proxy]
-    #  Synopsis:
-    #    :proxy => "http://proxy.foo.com:8000/"
-    #    :proxy => URI.parse("http://proxy.foo.com:8000/")
-    #    :proxy => true
-    #    :proxy => false
-    #    :proxy => nil
-    #   
-    #  If :proxy option is specified, the value should be String, URI,
-    #  boolean or nil.
-    #  When String or URI is given, it is treated as proxy URI.
-    #  When true is given or the option itself is not specified,
-    #  environment variable `scheme_proxy' is examined.
-    #  `scheme' is replaced by `http', `https' or `ftp'.
-    #  When false or nil is given, the environment variables are ignored and
-    #  connection will be made to a server directly.
-    #
-    # [:http_basic_authentication]
-    #  Synopsis:
-    #    :http_basic_authentication=>[user, password]
-    #
-    #  If :http_basic_authentication is specified,
-    #  the value should be an array which contains 2 strings:
-    #  username and password.
-    #  It is used for HTTP Basic authentication defined by RFC 2617.
-    #
-    # [:content_length_proc]
-    #  Synopsis:
-    #    :content_length_proc => lambda {|content_length| ... }
-    # 
-    #  If :content_length_proc option is specified, the option value procedure
-    #  is called before actual transfer is started.
-    #  It takes one argument which is expected content length in bytes.
-    # 
-    #  If two or more transfer is done by HTTP redirection, the procedure
-    #  is called only one for a last transfer.
-    # 
-    #  When expected content length is unknown, the procedure is called with
-    #  nil.
-    #  It is happen when HTTP response has no Content-Length header.
-    #
-    # [:progress_proc]
-    #  Synopsis:
-    #    :progress_proc => lambda {|size| ...}
-    #
-    #  If :progress_proc option is specified, the proc is called with one
-    #  argument each time when `open' gets content fragment from network.
-    #  The argument `size' `size' is a accumulated transfered size in bytes.
-    #
-    #  If two or more transfer is done by HTTP redirection, the procedure
-    #  is called only one for a last transfer.
-    #
-    #  :progress_proc and :content_length_proc are intended to be used for
-    #  progress bar.
-    #  For example, it can be implemented as follows using Ruby/ProgressBar.
-    #
-    #    pbar = nil
-    #    open("http://...",
-    #      :content_length_proc => lambda {|t|
-    #        if t && 0 < t
-    #          pbar = ProgressBar.new("...", t)
-    #          pbar.file_transfer_mode
-    #        end
-    #      },
-    #      :progress_proc => lambda {|s|
-    #        pbar.set s if pbar
-    #      }) {|f| ... }
-    #
-    # OpenURI::OpenRead#open returns an IO like object if block is not given.
-    # Otherwise it yields the IO object and return the value of the block.
-    # The IO object is extended with OpenURI::Meta.
-    def open(*rest, &block)
-      OpenURI.open_uri(self, *rest, &block)
-    end
-
-    # OpenURI::OpenRead#read([options]) reads a content referenced by self and
-    # returns the content as string.
-    # The string is extended with OpenURI::Meta.
-    # The argument `options' is same as OpenURI::OpenRead#open.
-    def read(options={})
-      self.open(options) {|f|
-        str = f.read
-        Meta.init str, f
-        str
-      }
-    end
-  end
-end
-
-module URI
-  class Generic
-    # returns a proxy URI.
-    # The proxy URI is obtained from environment variables such as http_proxy,
-    # ftp_proxy, no_proxy, etc.
-    # If there is no proper proxy, nil is returned.
-    #
-    # Note that capitalized variables (HTTP_PROXY, FTP_PROXY, NO_PROXY, etc.)
-    # are examined too.
-    #
-    # But http_proxy and HTTP_PROXY is treated specially under CGI environment.
-    # It's because HTTP_PROXY may be set by Proxy: header.
-    # So HTTP_PROXY is not used.
-    # http_proxy is not used too if the variable is case insensitive.
-    # CGI_HTTP_PROXY can be used instead.
-    def find_proxy
-      name = self.scheme.downcase + '_proxy'
-      proxy_uri = nil
-      if name == 'http_proxy' && ENV.include?('REQUEST_METHOD') # CGI?
-        # HTTP_PROXY conflicts with *_proxy for proxy settings and
-        # HTTP_* for header information in CGI.
-        # So it should be careful to use it.
-        pairs = ENV.reject {|k, v| /\Ahttp_proxy\z/i !~ k }
-        case pairs.length
-        when 0 # no proxy setting anyway.
-          proxy_uri = nil
-        when 1
-          k, v = pairs.shift
-          if k == 'http_proxy' && ENV[k.upcase] == nil
-            # http_proxy is safe to use because ENV is case sensitive.
-            proxy_uri = ENV[name]
-          else
-            proxy_uri = nil
-          end
-        else # http_proxy is safe to use because ENV is case sensitive.
-          proxy_uri = ENV[name]
-        end
-        if !proxy_uri
-          # Use CGI_HTTP_PROXY.  cf. libwww-perl.
-          proxy_uri = ENV["CGI_#{name.upcase}"]
-        end
-      elsif name == 'http_proxy'
-        unless proxy_uri = ENV[name]
-          if proxy_uri = ENV[name.upcase]
-            warn 'The environment variable HTTP_PROXY is discouraged.  Use http_proxy.'
-          end
-        end
-      else
-        proxy_uri = ENV[name] || ENV[name.upcase]
-      end
-
-      if proxy_uri && self.host
-        require 'socket'
-        begin
-          addr = IPSocket.getaddress(self.host)
-          proxy_uri = nil if /\A127\.|\A::1\z/ =~ addr
-        rescue SocketError
-        end
-      end
-
-      if proxy_uri
-        proxy_uri = URI.parse(proxy_uri)
-        name = 'no_proxy'
-        if no_proxy = ENV[name] || ENV[name.upcase]
-          no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port|
-            if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host &&
-               (!port || self.port == port.to_i)
-              proxy_uri = nil
-              break
-            end
-          }
-        end
-        proxy_uri
-      else
-        nil
-      end
-    end
-  end
-
-  class HTTP
-    def buffer_open(buf, proxy, options) # :nodoc:
-      OpenURI.open_http(buf, self, proxy, options)
-    end
-
-    include OpenURI::OpenRead
-  end
-
-  class FTP
-    def buffer_open(buf, proxy, options) # :nodoc:
-      if proxy
-        OpenURI.open_http(buf, self, proxy, options)
-        return
-      end
-      require 'net/ftp'
-
-      directories = self.path.split(%r{/}, -1)
-      directories.shift if directories[0] == '' # strip a field before leading slash
-      directories.each {|d|
-        d.gsub!(/%([0-9A-Fa-f][0-9A-Fa-f])/) { [$1].pack("H2") }
-      }
-      unless filename = directories.pop
-        raise ArgumentError, "no filename: #{self.inspect}"
-      end
-      directories.each {|d|
-        if /[\r\n]/ =~ d
-          raise ArgumentError, "invalid directory: #{d.inspect}"
-        end
-      }
-      if /[\r\n]/ =~ filename
-        raise ArgumentError, "invalid filename: #{filename.inspect}"
-      end
-      typecode = self.typecode
-      if typecode && /\A[aid]\z/ !~ typecode
-        raise ArgumentError, "invalid typecode: #{typecode.inspect}"
-      end
-
-      # The access sequence is defined by RFC 1738
-      ftp = Net::FTP.open(self.host)
-      # todo: extract user/passwd from .netrc.
-      user = 'anonymous'
-      passwd = nil
-      user, passwd = self.userinfo.split(/:/) if self.userinfo
-      ftp.login(user, passwd)
-      directories.each {|cwd|
-        ftp.voidcmd("CWD #{cwd}")
-      }
-      if typecode
-        # xxx: typecode D is not handled.
-        ftp.voidcmd("TYPE #{typecode.upcase}")
-      end
-      if options[:content_length_proc]
-        options[:content_length_proc].call(ftp.size(filename))
-      end
-      ftp.retrbinary("RETR #{filename}", 4096) { |str|
-        buf << str
-        options[:progress_proc].call(buf.size) if options[:progress_proc]
-      }
-      ftp.close
-      buf.io.rewind
-    end
-
-    include OpenURI::OpenRead
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open3.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open3.rb
deleted file mode 100644
index c4dacc9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/open3.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# = open3.rb: Popen, but with stderr, too
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Konrad Meyer
-#
-# Open3 gives you access to stdin, stdout, and stderr when running other
-# programs.
-#
-
-#
-# Open3 grants you access to stdin, stdout, and stderr when running another
-# program. Example:
-#
-#   require "open3"
-#   include Open3
-#   
-#   stdin, stdout, stderr = popen3('nroff -man')
-#
-# Open3.popen3 can also take a block which will receive stdin, stdout and
-# stderr as parameters.  This ensures stdin, stdout and stderr are closed
-# once the block exits. Example:
-#
-#   require "open3"
-#
-#   Open3.popen3('nroff -man') { |stdin, stdout, stderr| ... }
-#
-
-module Open3
-  # 
-  # Open stdin, stdout, and stderr streams and start external executable.
-  # Non-block form:
-  #   
-  #   require 'open3'
-  #
-  #   [stdin, stdout, stderr] = Open3.popen3(cmd)
-  #
-  # Block form:
-  #
-  #   require 'open3'
-  #
-  #   Open3.popen3(cmd) { |stdin, stdout, stderr| ... }
-  #
-  # The parameter +cmd+ is passed directly to Kernel#exec.
-  #
-  def popen3(*cmd)
-    pw = IO::pipe   # pipe[0] for read, pipe[1] for write
-    pr = IO::pipe
-    pe = IO::pipe
-
-    pid = fork{
-      # child
-      fork{
-	# grandchild
-	pw[1].close
-	STDIN.reopen(pw[0])
-	pw[0].close
-
-	pr[0].close
-	STDOUT.reopen(pr[1])
-	pr[1].close
-
-	pe[0].close
-	STDERR.reopen(pe[1])
-	pe[1].close
-
-	exec(*cmd)
-      }
-      exit!(0)
-    }
-
-    pw[0].close
-    pr[1].close
-    pe[1].close
-    Process.waitpid(pid)
-    pi = [pw[1], pr[0], pe[0]]
-    pw[1].sync = true
-    if defined? yield
-      begin
-	return yield(*pi)
-      ensure
-	pi.each{|p| p.close unless p.closed?}
-      end
-    end
-    pi
-  end
-  module_function :popen3
-end
-
-if $0 == __FILE__
-  a = Open3.popen3("nroff -man")
-  Thread.start do
-    while line = gets
-      a[0].print line
-    end
-    a[0].close
-  end
-  while line = a[1].gets
-    print ":", line
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl.rb
deleted file mode 100644
index 411c0db..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-=begin
-= $RCSfile$ -- Loader for all OpenSSL C-space and Ruby-space definitions
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: openssl.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-require 'openssl.so'
-
-require 'openssl/bn'
-require 'openssl/cipher'
-require 'openssl/digest'
-require 'openssl/ssl'
-require 'openssl/x509'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/bn.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/bn.rb
deleted file mode 100644
index cf44a09..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/bn.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for BN
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: bn.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  class BN
-    include Comparable
-  end # BN
-end # OpenSSL
-
-##
-# Add double dispatch to Integer
-#
-class Integer
-  def to_bn
-    OpenSSL::BN::new(self)
-  end
-end # Integer
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/buffering.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/buffering.rb
deleted file mode 100644
index 2c66a75..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/buffering.rb
+++ /dev/null
@@ -1,239 +0,0 @@
-=begin
-= $RCSfile$ -- Buffering mix-in module.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: buffering.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-module Buffering
-  include Enumerable
-  attr_accessor :sync
-  BLOCK_SIZE = 1024*16
-
-  def initialize(*args)
-    @eof = false
-    @rbuffer = ""
-    @sync = @io.sync
-  end
-
-  #
-  # for reading.
-  #
-  private
-
-  def fill_rbuff
-    begin
-      @rbuffer << self.sysread(BLOCK_SIZE)
-    rescue Errno::EAGAIN
-      retry
-    rescue EOFError
-      @eof = true
-    end
-  end
-
-  def consume_rbuff(size=nil)
-    if @rbuffer.empty?
-      nil
-    else
-      size = @rbuffer.size unless size
-      ret = @rbuffer[0, size]
-      @rbuffer[0, size] = ""
-      ret
-    end
-  end
-
-  public
-
-  def read(size=nil, buf=nil)
-    if size == 0
-      if buf
-        buf.clear
-      else
-        buf = ""
-      end
-      return @eof ? nil : buf
-    end
-    until @eof
-      break if size && size <= @rbuffer.size
-      fill_rbuff
-    end
-    ret = consume_rbuff(size) || ""
-    if buf
-      buf.replace(ret)
-      ret = buf
-    end
-    (size && ret.empty?) ? nil : ret
-  end
-
-  def readpartial(maxlen, buf=nil)
-    if maxlen == 0
-      if buf
-        buf.clear
-      else
-        buf = ""
-      end
-      return @eof ? nil : buf
-    end
-    if @rbuffer.empty?
-      begin
-        return sysread(maxlen, buf)
-      rescue Errno::EAGAIN
-        retry
-      end
-    end
-    ret = consume_rbuff(maxlen)
-    if buf
-      buf.replace(ret)
-      ret = buf
-    end
-    raise EOFError if ret.empty?
-    ret
-  end
-
-  def gets(eol=$/)
-    idx = @rbuffer.index(eol)
-    until @eof
-      break if idx
-      fill_rbuff
-      idx = @rbuffer.index(eol)
-    end
-    if eol.is_a?(Regexp)
-      size = idx ? idx+$&.size : nil
-    else
-      size = idx ? idx+eol.size : nil
-    end
-    consume_rbuff(size)
-  end
-
-  def each(eol=$/)
-    while line = self.gets(eol)
-      yield line
-    end
-  end
-  alias each_line each
-
-  def readlines(eol=$/)
-    ary = []
-    while line = self.gets(eol)
-      ary << line
-    end
-    ary
-  end
-
-  def readline(eol=$/)
-    raise EOFError if eof?
-    gets(eol)
-  end
-
-  def getc
-    c = read(1)
-    c ? c[0] : nil
-  end
-
-  def each_byte
-    while c = getc
-      yield(c)
-    end
-  end
-
-  def readchar
-    raise EOFError if eof?
-    getc
-  end
-
-  def ungetc(c)
-    @rbuffer[0,0] = c.chr
-  end
-
-  def eof?
-    fill_rbuff if !@eof && @rbuffer.empty?
-    @eof && @rbuffer.empty?
-  end
-  alias eof eof?
-
-  #
-  # for writing.
-  #
-  private
-
-  def do_write(s)
-    @wbuffer = "" unless defined? @wbuffer
-    @wbuffer << s
-    @sync ||= false
-    if @sync or @wbuffer.size > BLOCK_SIZE or idx = @wbuffer.rindex($/)
-      remain = idx ? idx + $/.size : @wbuffer.length
-      nwritten = 0
-      while remain > 0
-        str = @wbuffer[nwritten,remain]
-        begin
-          nwrote = syswrite(str)
-        rescue Errno::EAGAIN
-          retry
-        end
-        remain -= nwrote
-        nwritten += nwrote
-      end
-      @wbuffer[0,nwritten] = ""
-    end
-  end
-
-  public
-
-  def write(s)
-    do_write(s)
-    s.length
-  end
-
-  def << (s)
-    do_write(s)
-    self
-  end
-
-  def puts(*args)
-    s = ""
-    if args.empty?
-      s << "\n"
-    end
-    args.each{|arg|
-      s << arg.to_s
-      if $/ && /\n\z/ !~ s
-        s << "\n"
-      end
-    }
-    do_write(s)
-    nil
-  end
-
-  def print(*args)
-    s = ""
-    args.each{ |arg| s << arg.to_s }
-    do_write(s)
-    nil
-  end
-
-  def printf(s, *args)
-    do_write(s % args)
-    nil
-  end
-
-  def flush
-    osync = @sync
-    @sync = true
-    do_write ""
-    @sync = osync
-  end
-
-  def close
-    flush rescue nil
-    sysclose
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/cipher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/cipher.rb
deleted file mode 100644
index fb924e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/cipher.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space predefined Cipher subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: cipher.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  module Cipher
-    %w(AES CAST5 BF DES IDEA RC2 RC4 RC5).each{|name|
-      klass = Class.new(Cipher){
-        define_method(:initialize){|*args|
-          cipher_name = args.inject(name){|n, arg| "#{n}-#{arg}" }
-          super(cipher_name)
-        }
-      }
-      const_set(name, klass)
-    }
-
-    %w(128 192 256).each{|keylen|
-      klass = Class.new(Cipher){
-        define_method(:initialize){|mode|
-          mode ||= "CBC"
-          cipher_name = "AES-#{keylen}-#{mode}"
-          super(cipher_name)
-        }
-      }
-      const_set("AES#{keylen}", klass)
-    }
-
-    class Cipher
-      def random_key
-        str = OpenSSL::Random.random_bytes(self.key_len)
-        self.key = str
-        return str
-      end
-
-      def random_iv
-        str = OpenSSL::Random.random_bytes(self.iv_len)
-        self.iv = str
-        return str
-      end
-    end
-  end # Cipher
-end # OpenSSL
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/digest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/digest.rb
deleted file mode 100644
index 0d7e751..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/digest.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space predefined Digest subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: digest.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  module Digest
-
-    alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1)
-    if OPENSSL_VERSION_NUMBER > 0x00908000
-      alg += %w(SHA224 SHA256 SHA384 SHA512)
-    end
-
-    alg.each{|name|
-      klass = Class.new(Digest){
-        define_method(:initialize){|*data|
-          if data.length > 1
-            raise ArgumentError,
-              "wrong number of arguments (#{data.length} for 1)"
-          end
-          super(name, data.first)
-        }
-      }
-      singleton = (class <<klass; self; end)
-      singleton.class_eval{
-        define_method(:digest){|data| Digest.digest(name, data) }
-        define_method(:hexdigest){|data| Digest.hexdigest(name, data) }
-      }
-      const_set(name, klass)
-    }
-
-  end # Digest
-end # OpenSSL
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/ssl.rb
deleted file mode 100644
index bf5d2f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/ssl.rb
+++ /dev/null
@@ -1,135 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for SSL
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: ssl.rb 13504 2007-09-24 08:12:24Z shyouhei $
-=end
-
-require "openssl"
-require "openssl/buffering"
-require "fcntl"
-
-module OpenSSL
-  module SSL
-    module SocketForwarder
-      def addr
-        to_io.addr
-      end
-
-      def peeraddr
-        to_io.peeraddr
-      end
-
-      def setsockopt(level, optname, optval)
-        to_io.setsockopt(level, optname, optval)
-      end
-
-      def getsockopt(level, optname)
-        to_io.getsockopt(level, optname)
-      end
-
-      def fcntl(*args)
-        to_io.fcntl(*args)
-      end
-
-      def closed?
-        to_io.closed?
-      end
-
-      def do_not_reverse_lookup=(flag)
-        to_io.do_not_reverse_lookup = flag
-      end
-    end
-
-    module Nonblock
-      def initialize(*args)
-        flag = File::NONBLOCK
-        flag |= @io.fcntl(Fcntl::F_GETFL) if defined?(Fcntl::F_GETFL)
-        @io.fcntl(Fcntl::F_SETFL, flag)
-        super
-      end
-    end
-
-    class SSLSocket
-      include Buffering
-      include SocketForwarder
-      include Nonblock
-
-      def post_connection_check(hostname)
-        check_common_name = true
-        cert = peer_cert
-        cert.extensions.each{|ext|
-          next if ext.oid != "subjectAltName"
-          ext.value.split(/,\s+/).each{|general_name|
-            if /\ADNS:(.*)/ =~ general_name
-              check_common_name = false
-              reg = Regexp.escape($1).gsub(/\\\*/, "[^.]+")
-              return true if /\A#{reg}\z/i =~ hostname
-            elsif /\AIP Address:(.*)/ =~ general_name
-              check_common_name = false
-              return true if $1 == hostname
-            end
-          }
-        }
-        if check_common_name
-          cert.subject.to_a.each{|oid, value|
-            if oid == "CN"
-              reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+")
-              return true if /\A#{reg}\z/i =~ hostname
-            end
-          }
-        end
-        raise SSLError, "hostname was not match with the server certificate"
-      end
-    end
-
-    class SSLServer
-      include SocketForwarder
-      attr_accessor :start_immediately
-
-      def initialize(svr, ctx)
-        @svr = svr
-        @ctx = ctx
-        unless ctx.session_id_context
-          session_id = OpenSSL::Digest::MD5.hexdigest($0)
-          @ctx.session_id_context = session_id
-        end
-        @start_immediately = true
-      end
-
-      def to_io
-        @svr
-      end
-
-      def listen(backlog=5)
-        @svr.listen(backlog)
-      end
-
-      def accept
-        sock = @svr.accept
-        begin
-          ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
-          ssl.sync_close = true
-          ssl.accept if @start_immediately
-          ssl
-        rescue SSLError => ex
-          sock.close
-          raise ex
-        end
-      end
-
-      def close
-        @svr.close
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/x509.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/x509.rb
deleted file mode 100644
index 99f239c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/openssl/x509.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for X509 and subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: x509.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-require "openssl"
-
-module OpenSSL
-  module X509
-    class ExtensionFactory
-      def create_extension(*arg)
-        if arg.size > 1
-          create_ext(*arg)
-        else
-          send("create_ext_from_"+arg[0].class.name.downcase, arg[0])
-        end
-      end
-
-      def create_ext_from_array(ary)
-        raise ExtensionError, "unexpected array form" if ary.size > 3 
-        create_ext(ary[0], ary[1], ary[2])
-      end
-
-      def create_ext_from_string(str) # "oid = critical, value"
-        oid, value = str.split(/=/, 2)
-        oid.strip!
-        value.strip!
-        create_ext(oid, value)
-      end
-      
-      def create_ext_from_hash(hash)
-        create_ext(hash["oid"], hash["value"], hash["critical"])
-      end
-    end
-    
-    class Extension
-      def to_s # "oid = critical, value"
-        str = self.oid
-        str << " = "
-        str << "critical, " if self.critical?
-        str << self.value.gsub(/\n/, ", ")
-      end
-        
-      def to_h # {"oid"=>sn|ln, "value"=>value, "critical"=>true|false}
-        {"oid"=>self.oid,"value"=>self.value,"critical"=>self.critical?}
-      end
-
-      def to_a
-        [ self.oid, self.value, self.critical? ]
-      end
-    end
-
-    class Name
-      module RFC2253DN
-        Special = ',=+<>#;'
-        HexChar = /[0-9a-fA-F]/
-        HexPair = /#{HexChar}#{HexChar}/
-        HexString = /#{HexPair}+/
-        Pair = /\\(?:[#{Special}]|\\|"|#{HexPair})/
-        StringChar = /[^#{Special}\\"]/
-        QuoteChar = /[^\\"]/
-        AttributeType = /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/
-        AttributeValue = /
-          (?!["#])((?:#{StringChar}|#{Pair})*)|
-          \#(#{HexString})|
-          "((?:#{QuoteChar}|#{Pair})*)"
-        /x
-        TypeAndValue = /\A(#{AttributeType})=#{AttributeValue}/
-
-        module_function
-
-        def expand_pair(str)
-          return nil unless str
-          return str.gsub(Pair){|pair|
-            case pair.size
-            when 2 then pair[1,1]
-            when 3 then Integer("0x#{pair[1,2]}").chr
-            else raise OpenSSL::X509::NameError, "invalid pair: #{str}"
-            end
-          }
-        end
-
-        def expand_hexstring(str)
-          return nil unless str
-          der = str.gsub(HexPair){|hex| Integer("0x#{hex}").chr }
-          a1 = OpenSSL::ASN1.decode(der)
-          return a1.value, a1.tag
-        end
-
-        def expand_value(str1, str2, str3)
-          value = expand_pair(str1)
-          value, tag = expand_hexstring(str2) unless value
-          value = expand_pair(str3) unless value
-          return value, tag
-        end
-
-        def scan(dn)
-          str = dn
-          ary = []
-          while true
-            if md = TypeAndValue.match(str)
-              matched = md.to_s
-              remain = md.post_match
-              type = md[1]
-              value, tag = expand_value(md[2], md[3], md[4]) rescue nil
-              if value
-                type_and_value = [type, value]
-                type_and_value.push(tag) if tag
-                ary.unshift(type_and_value)
-                if remain.length > 2 && remain[0] == ?,
-                  str = remain[1..-1]
-                  next
-                elsif remain.length > 2 && remain[0] == ?+
-                  raise OpenSSL::X509::NameError,
-                    "multi-valued RDN is not supported: #{dn}"
-                elsif remain.empty?
-                  break
-                end
-              end
-            end
-            msg_dn = dn[0, dn.length - str.length] + " =>" + str
-            raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}"
-          end
-          return ary
-        end
-      end
-
-      class <<self
-        def parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE)
-          ary = OpenSSL::X509::Name::RFC2253DN.scan(str)
-          self.new(ary, template)
-        end
-
-        def parse_openssl(str, template=OBJECT_TYPE_TEMPLATE)
-          ary = str.scan(/\s*([^\/,]+)\s*/).collect{|i| i[0].split("=", 2) }
-          self.new(ary, template)
-        end
-
-        alias parse parse_openssl
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse.rb
deleted file mode 100644
index 36b2ca0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse.rb
+++ /dev/null
@@ -1,1789 +0,0 @@
-#
-# optparse.rb - command-line option analysis with the OptionParser class.
-# 
-# Author:: Nobu Nakada
-# Documentation:: Nobu Nakada and Gavin Sinclair.
-#
-# See OptionParser for documentation. 
-#
-
-
-# == Developer Documentation (not for RDoc output) 
-# 
-# === Class tree
-#
-# - OptionParser:: front end
-# - OptionParser::Switch:: each switches
-# - OptionParser::List:: options list
-# - OptionParser::ParseError:: errors on parsing
-#   - OptionParser::AmbiguousOption
-#   - OptionParser::NeedlessArgument
-#   - OptionParser::MissingArgument
-#   - OptionParser::InvalidOption
-#   - OptionParser::InvalidArgument
-#     - OptionParser::AmbiguousArgument
-#
-# === Object relationship diagram
-#
-#   +--------------+
-#   | OptionParser |<>-----+
-#   +--------------+       |                      +--------+
-#                          |                    ,-| Switch |
-#        on_head -------->+---------------+    /  +--------+
-#        accept/reject -->| List          |<|>-
-#                         |               |<|>-  +----------+
-#        on ------------->+---------------+    `-| argument |
-#                           :           :        |  class   |
-#                         +---------------+      |==========|
-#        on_tail -------->|               |      |pattern   |
-#                         +---------------+      |----------|
-#   OptionParser.accept ->| DefaultList   |      |converter |
-#                reject   |(shared between|      +----------+
-#                         | all instances)|
-#                         +---------------+
-#
-# == OptionParser
-#
-# === Introduction
-#
-# OptionParser is a class for command-line option analysis.  It is much more
-# advanced, yet also easier to use, than GetoptLong, and is a more Ruby-oriented
-# solution.
-#
-# === Features
-# 
-# 1. The argument specification and the code to handle it are written in the
-#    same place.
-# 2. It can output an option summary; you don't need to maintain this string
-#    separately.
-# 3. Optional and mandatory arguments are specified very gracefully.
-# 4. Arguments can be automatically converted to a specified class.
-# 5. Arguments can be restricted to a certain set.
-#
-# All of these features are demonstrated in the examples below.
-#
-# === Minimal example
-#
-#   require 'optparse'
-#
-#   options = {}
-#   OptionParser.new do |opts|
-#     opts.banner = "Usage: example.rb [options]"
-#
-#     opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
-#       options[:verbose] = v
-#     end
-#   end.parse!
-#
-#   p options
-#   p ARGV
-#
-# === Complete example
-#
-# The following example is a complete Ruby program.  You can run it and see the
-# effect of specifying various options.  This is probably the best way to learn
-# the features of +optparse+.
-#
-#   require 'optparse'
-#   require 'optparse/time'
-#   require 'ostruct'
-#   require 'pp'
-#   
-#   class OptparseExample
-#   
-#     CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary]
-#     CODE_ALIASES = { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
-#   
-#     #
-#     # Return a structure describing the options.
-#     #
-#     def self.parse(args)
-#       # The options specified on the command line will be collected in *options*.
-#       # We set default values here.
-#       options = OpenStruct.new
-#       options.library = []
-#       options.inplace = false
-#       options.encoding = "utf8"
-#       options.transfer_type = :auto
-#       options.verbose = false
-#       
-#       opts = OptionParser.new do |opts|
-#         opts.banner = "Usage: example.rb [options]"
-#       
-#         opts.separator ""
-#         opts.separator "Specific options:"
-#       
-#         # Mandatory argument.
-#         opts.on("-r", "--require LIBRARY",
-#                 "Require the LIBRARY before executing your script") do |lib|
-#           options.library << lib
-#         end
-#       
-#         # Optional argument; multi-line description.
-#         opts.on("-i", "--inplace [EXTENSION]",
-#                 "Edit ARGV files in place",
-#                 "  (make backup if EXTENSION supplied)") do |ext|
-#           options.inplace = true
-#           options.extension = ext || ''
-#           options.extension.sub!(/\A\.?(?=.)/, ".")  # Ensure extension begins with dot.
-#         end
-#       
-#         # Cast 'delay' argument to a Float.
-#         opts.on("--delay N", Float, "Delay N seconds before executing") do |n|
-#           options.delay = n
-#         end
-#       
-#         # Cast 'time' argument to a Time object.
-#         opts.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time|
-#           options.time = time
-#         end
-#       
-#         # Cast to octal integer.
-#         opts.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger,
-#                 "Specify record separator (default \\0)") do |rs|
-#           options.record_separator = rs
-#         end
-#       
-#         # List of arguments.
-#         opts.on("--list x,y,z", Array, "Example 'list' of arguments") do |list|
-#           options.list = list
-#         end
-#       
-#         # Keyword completion.  We are specifying a specific set of arguments (CODES
-#         # and CODE_ALIASES - notice the latter is a Hash), and the user may provide
-#         # the shortest unambiguous text.
-#         code_list = (CODE_ALIASES.keys + CODES).join(',')
-#         opts.on("--code CODE", CODES, CODE_ALIASES, "Select encoding",
-#                 "  (#{code_list})") do |encoding|
-#           options.encoding = encoding
-#         end
-#       
-#         # Optional argument with keyword completion.
-#         opts.on("--type [TYPE]", [:text, :binary, :auto],
-#                 "Select transfer type (text, binary, auto)") do |t|
-#           options.transfer_type = t
-#         end
-#       
-#         # Boolean switch.
-#         opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
-#           options.verbose = v
-#         end
-#       
-#         opts.separator ""
-#         opts.separator "Common options:"
-#       
-#         # No argument, shows at tail.  This will print an options summary.
-#         # Try it and see!
-#         opts.on_tail("-h", "--help", "Show this message") do
-#           puts opts
-#           exit
-#         end
-#       
-#         # Another typical switch to print the version.
-#         opts.on_tail("--version", "Show version") do
-#           puts OptionParser::Version.join('.')
-#           exit
-#         end
-#       end
-#       
-#       opts.parse!(args)
-#       options
-#     end  # parse()
-#   
-#   end  # class OptparseExample
-#   
-#   options = OptparseExample.parse(ARGV)
-#   pp options
-#
-# === Further documentation
-#
-# The above examples should be enough to learn how to use this class.  If you
-# have any questions, email me (gsinclair at soyabean.com.au) and I will update
-# this document.
-#
-class OptionParser
-  # :stopdoc:
-  RCSID = %w$Id: optparse.rb 18108 2008-07-17 12:30:12Z shyouhei $[1..-1].each {|s| s.freeze}.freeze
-  Version = (RCSID[1].split('.').collect {|s| s.to_i}.extend(Comparable).freeze if RCSID[1])
-  LastModified = (Time.gm(*RCSID[2, 2].join('-').scan(/\d+/).collect {|s| s.to_i}) if RCSID[2])
-  Release = RCSID[2]
-
-  NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
-  RequiredArgument = [REQUIRED_ARGUMENT = :REQUIRED, true].freeze
-  OptionalArgument = [OPTIONAL_ARGUMENT = :OPTIONAL, false].freeze
-  # :startdoc:
-
-  #
-  # Keyword completion module.  This allows partial arguments to be specified
-  # and resolved against a list of acceptable values.
-  #
-  module Completion
-    def complete(key, icase = false, pat = nil)
-      pat ||= Regexp.new('\A' + Regexp.quote(key).gsub(/\w+\b/, '\&\w*'),
-                         icase)
-      canon, sw, k, v, cn = nil
-      candidates = []
-      each do |k, *v|
-        (if Regexp === k
-           kn = nil
-           k === key
-         else
-           kn = defined?(k.id2name) ? k.id2name : k
-           pat === kn
-         end) or next
-        v << k if v.empty?
-        candidates << [k, v, kn]
-      end
-      candidates = candidates.sort_by {|k, v, kn| kn.size}
-      if candidates.size == 1
-        canon, sw, * = candidates[0]
-      elsif candidates.size > 1
-        canon, sw, cn = candidates.shift
-        candidates.each do |k, v, kn|
-          next if sw == v
-          if String === cn and String === kn
-            if cn.rindex(kn, 0)
-              canon, sw, cn = k, v, kn
-              next
-            elsif kn.rindex(cn, 0)
-              next
-            end
-          end
-          throw :ambiguous, key
-        end
-      end
-      if canon
-        block_given? or return key, *sw
-        yield(key, *sw)
-      end
-    end
-
-    def convert(opt = nil, val = nil, *)
-      val
-    end
-  end
-
-
-  #
-  # Map from option/keyword string to object with completion.
-  #
-  class OptionMap < Hash
-    include Completion
-  end
-
-
-  #
-  # Individual switch class.  Not important to the user.
-  #
-  # Defined within Switch are several Switch-derived classes: NoArgument,
-  # RequiredArgument, etc. 
-  #
-  class Switch
-    attr_reader :pattern, :conv, :short, :long, :arg, :desc, :block
-
-    #
-    # Guesses argument style from +arg+.  Returns corresponding
-    # OptionParser::Switch class (OptionalArgument, etc.).
-    #
-    def self.guess(arg)
-      case arg
-      when ""
-        t = self
-      when /\A=?\[/
-        t = Switch::OptionalArgument
-      when /\A\s+\[/
-        t = Switch::PlacedArgument
-      else
-        t = Switch::RequiredArgument
-      end
-      self >= t or incompatible_argument_styles(arg, t)
-      t
-    end
-
-    def self.incompatible_argument_styles(arg, t)
-      raise ArgumentError, "#{arg}: incompatible argument styles\n  #{self}, #{t}"
-    end
-
-    def self.pattern
-      NilClass
-    end
-
-    def initialize(pattern = nil, conv = nil,
-                   short = nil, long = nil, arg = nil,
-                   desc = ([] if short or long), block = Proc.new)
-      raise if Array === pattern
-      @pattern, @conv, @short, @long, @arg, @desc, @block =
-        pattern, conv, short, long, arg, desc, block
-    end
-
-    #
-    # Parses +arg+ and returns rest of +arg+ and matched portion to the
-    # argument pattern. Yields when the pattern doesn't match substring.
-    #
-    def parse_arg(arg)
-      pattern or return nil, arg
-      unless m = pattern.match(arg)
-        yield(InvalidArgument, arg)
-        return arg, nil
-      end
-      if String === m
-        m = [s = m]
-      else
-        m = m.to_a
-        s = m[0]
-        return nil, m unless String === s
-      end
-      raise InvalidArgument, arg unless arg.rindex(s, 0)
-      return nil, m if s.length == arg.length
-      yield(InvalidArgument, arg) # didn't match whole arg
-      return arg[s.length..-1], m
-    end
-    private :parse_arg
-
-    #
-    # Parses argument, converts and returns +arg+, +block+ and result of
-    # conversion. Yields at semi-error condition instead of raising an
-    # exception.
-    #
-    def conv_arg(arg, val = nil)
-      if conv
-        val = conv.call(*val)
-      else
-        val = proc {|val| val}.call(*val)
-      end
-      return arg, block, val
-    end
-    private :conv_arg
-
-    #
-    # Produces the summary text. Each line of the summary is yielded to the
-    # block (without newline).
-    #
-    # +sdone+::  Already summarized short style options keyed hash.
-    # +ldone+::  Already summarized long style options keyed hash.
-    # +width+::  Width of left side (option part). In other words, the right
-    #            side (description part) starts after +width+ columns.
-    # +max+::    Maximum width of left side -> the options are filled within
-    #            +max+ columns.
-    # +indent+:: Prefix string indents all summarized lines.
-    #
-    def summarize(sdone = [], ldone = [], width = 1, max = width - 1, indent = "")
-      sopts, lopts, s = [], [], nil
-      @short.each {|s| sdone.fetch(s) {sopts << s}; sdone[s] = true} if @short
-      @long.each {|s| ldone.fetch(s) {lopts << s}; ldone[s] = true} if @long
-      return if sopts.empty? and lopts.empty? # completely hidden
-
-      left = [sopts.join(', ')]
-      right = desc.dup
-
-      while s = lopts.shift
-        l = left[-1].length + s.length
-        l += arg.length if left.size == 1 && arg
-        l < max or sopts.empty? or left << ''
-        left[-1] << if left[-1].empty? then ' ' * 4 else ', ' end << s
-      end
-
-      left[0] << arg if arg
-      mlen = left.collect {|s| s.length}.max.to_i
-      while mlen > width and l = left.shift
-        mlen = left.collect {|s| s.length}.max.to_i if l.length == mlen
-        yield(indent + l)
-      end
-
-      while begin l = left.shift; r = right.shift; l or r end
-        l = l.to_s.ljust(width) + ' ' + r if r and !r.empty?
-        yield(indent + l)
-      end
-
-      self
-    end
-
-    def add_banner(to)  # :nodoc:
-      unless @short or @long
-        s = desc.join
-        to << " [" + s + "]..." unless s.empty?
-      end
-      to
-    end
-
-    def match_nonswitch?(str) # :nodoc:
-      @pattern =~ str unless @short or @long
-    end
-
-    #
-    # Main name of the switch.
-    #
-    def switch_name
-      (long.first || short.first).sub(/\A-+(?:\[no-\])?/, '')
-    end
-
-    #
-    # Switch that takes no arguments.
-    #
-    class NoArgument < self
-
-      #
-      # Raises an exception if any arguments given.
-      #
-      def parse(arg, argv)
-        yield(NeedlessArgument, arg) if arg
-        conv_arg(arg)
-      end
-
-      def self.incompatible_argument_styles(*)
-      end
-
-      def self.pattern
-        Object
-      end
-    end
-
-    #
-    # Switch that takes an argument.
-    #
-    class RequiredArgument < self
-
-      #
-      # Raises an exception if argument is not present.
-      #
-      def parse(arg, argv)
-        unless arg
-          raise MissingArgument if argv.empty?
-          arg = argv.shift
-        end
-        conv_arg(*parse_arg(arg) {|*exc| raise(*exc)})
-      end
-    end
-
-    #
-    # Switch that can omit argument.
-    #
-    class OptionalArgument < self
-
-      #
-      # Parses argument if given, or uses default value.
-      #
-      def parse(arg, argv, &error)
-        if arg
-          conv_arg(*parse_arg(arg, &error))
-        else
-          conv_arg(arg)
-        end
-      end
-    end
-
-    #
-    # Switch that takes an argument, which does not begin with '-'.
-    #
-    class PlacedArgument < self
-
-      #
-      # Returns nil if argument is not present or begins with '-'.
-      #
-      def parse(arg, argv, &error)
-        if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
-          return nil, block, nil
-        end
-        opt = (val = parse_arg(val, &error))[1]
-        val = conv_arg(*val)
-        if opt and !arg
-          argv.shift
-        else
-          val[0] = nil
-        end
-        val
-      end
-    end
-  end
-
-  #
-  # Simple option list providing mapping from short and/or long option
-  # string to OptionParser::Switch and mapping from acceptable argument to
-  # matching pattern and converter pair. Also provides summary feature.
-  #
-  class List
-    # Map from acceptable argument types to pattern and converter pairs.
-    attr_reader :atype
-    
-    # Map from short style option switches to actual switch objects.
-    attr_reader :short
-    
-    # Map from long style option switches to actual switch objects.
-    attr_reader :long
-    
-    # List of all switches and summary string.
-    attr_reader :list
-
-    #
-    # Just initializes all instance variables.
-    #
-    def initialize
-      @atype = {}
-      @short = OptionMap.new
-      @long = OptionMap.new
-      @list = []
-    end
-
-    #
-    # See OptionParser.accept.
-    #
-    def accept(t, pat = /.*/nm, &block)
-      if pat
-        pat.respond_to?(:match) or raise TypeError, "has no `match'"
-      else
-        pat = t if t.respond_to?(:match)
-      end
-      unless block
-        block = pat.method(:convert).to_proc if pat.respond_to?(:convert)
-      end
-      @atype[t] = [pat, block]
-    end
-
-    #
-    # See OptionParser.reject.
-    #
-    def reject(t)
-      @atype.delete(t)
-    end
-
-    #
-    # Adds +sw+ according to +sopts+, +lopts+ and +nlopts+.
-    #
-    # +sw+::     OptionParser::Switch instance to be added.
-    # +sopts+::  Short style option list.
-    # +lopts+::  Long style option list.
-    # +nlopts+:: Negated long style options list.
-    #
-    def update(sw, sopts, lopts, nsw = nil, nlopts = nil)
-      o = nil
-      sopts.each {|o| @short[o] = sw} if sopts
-      lopts.each {|o| @long[o] = sw} if lopts
-      nlopts.each {|o| @long[o] = nsw} if nsw and nlopts
-      used = @short.invert.update(@long.invert)
-      @list.delete_if {|o| Switch === o and !used[o]}
-    end
-    private :update
-
-    #
-    # Inserts +switch+ at the head of the list, and associates short, long
-    # and negated long options. Arguments are:
-    # 
-    # +switch+::      OptionParser::Switch instance to be inserted.
-    # +short_opts+::  List of short style options.
-    # +long_opts+::   List of long style options.
-    # +nolong_opts+:: List of long style options with "no-" prefix.
-    #
-    #   prepend(switch, short_opts, long_opts, nolong_opts)
-    #
-    def prepend(*args)
-      update(*args)
-      @list.unshift(args[0])
-    end
-
-    #
-    # Appends +switch+ at the tail of the list, and associates short, long
-    # and negated long options. Arguments are:
-    # 
-    # +switch+::      OptionParser::Switch instance to be inserted.
-    # +short_opts+::  List of short style options.
-    # +long_opts+::   List of long style options.
-    # +nolong_opts+:: List of long style options with "no-" prefix.
-    #
-    #   append(switch, short_opts, long_opts, nolong_opts)
-    #
-    def append(*args)
-      update(*args)
-      @list.push(args[0])
-    end
-
-    #
-    # Searches +key+ in +id+ list. The result is returned or yielded if a
-    # block is given. If it isn't found, nil is returned.
-    #
-    def search(id, key)
-      if list = __send__(id)
-        val = list.fetch(key) {return nil}
-        block_given? ? yield(val) : val
-      end
-    end
-
-    #
-    # Searches list +id+ for +opt+ and the optional patterns for completion
-    # +pat+. If +icase+ is true, the search is case insensitive. The result
-    # is returned or yielded if a block is given. If it isn't found, nil is
-    # returned.
-    #
-    def complete(id, opt, icase = false, *pat, &block)
-      __send__(id).complete(opt, icase, *pat, &block)
-    end
-
-    #
-    # Iterates over each option, passing the option to the +block+.
-    #
-    def each_option(&block)
-      list.each(&block)
-    end
-
-    #
-    # Creates the summary table, passing each line to the +block+ (without
-    # newline). The arguments +args+ are passed along to the summarize
-    # method which is called on every option.
-    #
-    def summarize(*args, &block)
-      list.each do |opt|
-        if opt.respond_to?(:summarize) # perhaps OptionParser::Switch
-          opt.summarize(*args, &block)
-        elsif !opt or opt.empty?
-          yield("")
-        else
-          opt.each(&block)
-        end
-      end
-    end
-
-    def add_banner(to)  # :nodoc:
-      list.each do |opt|
-        if opt.respond_to?(:add_banner)
-          opt.add_banner(to)
-        end
-      end
-      to
-    end
-  end
-
-  #
-  # Hash with completion search feature. See OptionParser::Completion.
-  #
-  class CompletingHash < Hash
-    include Completion
-
-    #
-    # Completion for hash key.
-    #
-    def match(key)
-      return key, *fetch(key) {
-        raise AmbiguousArgument, catch(:ambiguous) {return complete(key)}
-      }
-    end
-  end
-
-  # :stopdoc:
-
-  #
-  # Enumeration of acceptable argument styles. Possible values are:
-  #
-  # NO_ARGUMENT::       The switch takes no arguments. (:NONE)
-  # REQUIRED_ARGUMENT:: The switch requires an argument. (:REQUIRED)
-  # OPTIONAL_ARGUMENT:: The switch requires an optional argument. (:OPTIONAL)
-  #
-  # Use like --switch=argument (long style) or -Xargument (short style). For
-  # short style, only portion matched to argument pattern is dealed as
-  # argument.
-  #
-  ArgumentStyle = {}
-  NoArgument.each {|el| ArgumentStyle[el] = Switch::NoArgument}
-  RequiredArgument.each {|el| ArgumentStyle[el] = Switch::RequiredArgument}
-  OptionalArgument.each {|el| ArgumentStyle[el] = Switch::OptionalArgument}
-  ArgumentStyle.freeze
-
-  #
-  # Switches common used such as '--', and also provides default
-  # argument classes
-  #
-  DefaultList = List.new
-  DefaultList.short['-'] = Switch::NoArgument.new {}
-  DefaultList.long[''] = Switch::NoArgument.new {throw :terminate}
-
-  #
-  # Default options for ARGV, which never appear in option summary.
-  #
-  Officious = {}
-
-  #
-  # --help
-  # Shows option summary.
-  #
-  Officious['help'] = proc do |parser|
-    Switch::NoArgument.new do
-      puts parser.help
-      exit
-    end
-  end
-
-  #
-  # --version
-  # Shows version string if Version is defined.
-  #
-  Officious['version'] = proc do |parser|
-    Switch::OptionalArgument.new do |pkg|
-      if pkg
-        begin
-          require 'optparse/version'
-        rescue LoadError
-        else
-          show_version(*pkg.split(/,/)) or
-            abort("#{parser.program_name}: no version found in package #{pkg}")
-          exit
-        end
-      end
-      v = parser.ver or abort("#{parser.program_name}: version unknown")
-      puts v
-      exit
-    end
-  end
-
-  # :startdoc:
-
-  #
-  # Class methods
-  #
-
-  #
-  # Initializes a new instance and evaluates the optional block in context
-  # of the instance. Arguments +args+ are passed to #new, see there for
-  # description of parameters.
-  # 
-  # This method is *deprecated*, its behavior corresponds to the older #new
-  # method.
-  #
-  def self.with(*args, &block)
-    opts = new(*args)
-    opts.instance_eval(&block)
-    opts
-  end
-
-  #
-  # Returns an incremented value of +default+ according to +arg+.
-  #
-  def self.inc(arg, default = nil)
-    case arg
-    when Integer
-      arg.nonzero?
-    when nil
-      default.to_i + 1
-    end
-  end
-  def inc(*args)
-    self.class.inc(*args)
-  end
-
-  #
-  # Initializes the instance and yields itself if called with a block.
-  #
-  # +banner+:: Banner message.
-  # +width+::  Summary width.
-  # +indent+:: Summary indent.
-  #
-  def initialize(banner = nil, width = 32, indent = ' ' * 4)
-    @stack = [DefaultList, List.new, List.new]
-    @program_name = nil
-    @banner = banner
-    @summary_width = width
-    @summary_indent = indent
-    @default_argv = ARGV
-    add_officious
-    yield self if block_given?
-  end
-
-  def add_officious  # :nodoc:
-    list = base()
-    Officious.each do |opt, block|
-      list.long[opt] ||= block.call(self)
-    end
-  end
-
-  #
-  # Terminates option parsing. Optional parameter +arg+ is a string pushed
-  # back to be the first non-option argument.
-  #
-  def terminate(arg = nil)
-    self.class.terminate(arg)
-  end
-  def self.terminate(arg = nil)
-    throw :terminate, arg
-  end
-
-  @stack = [DefaultList]
-  def self.top() DefaultList end
-
-  #
-  # Directs to accept specified class +t+. The argument string is passed to
-  # the block in which it should be converted to the desired class.
-  #
-  # +t+::   Argument class specifier, any object including Class.
-  # +pat+:: Pattern for argument, defaults to +t+ if it responds to match.
-  #
-  #   accept(t, pat, &block)
-  #
-  def accept(*args, &blk) top.accept(*args, &blk) end
-  #
-  # See #accept.
-  #
-  def self.accept(*args, &blk) top.accept(*args, &blk) end
-
-  #
-  # Directs to reject specified class argument.
-  #
-  # +t+:: Argument class speficier, any object including Class.
-  #
-  #   reject(t)
-  #
-  def reject(*args, &blk) top.reject(*args, &blk) end
-  #
-  # See #reject.
-  #
-  def self.reject(*args, &blk) top.reject(*args, &blk) end
-
-  #
-  # Instance methods
-  #
-
-  # Heading banner preceding summary.
-  attr_writer :banner
-
-  # Program name to be emitted in error message and default banner,
-  # defaults to $0.
-  attr_writer :program_name
-
-  # Width for option list portion of summary. Must be Numeric.
-  attr_accessor :summary_width
-
-  # Indentation for summary. Must be String (or have + String method).
-  attr_accessor :summary_indent
-
-  # Strings to be parsed in default.
-  attr_accessor :default_argv
-
-  #
-  # Heading banner preceding summary.
-  #
-  def banner
-    unless @banner
-      @banner = "Usage: #{program_name} [options]"
-      visit(:add_banner, @banner)
-    end
-    @banner
-  end
-
-  #
-  # Program name to be emitted in error message and default banner, defaults
-  # to $0.
-  #
-  def program_name
-    @program_name || File.basename($0, '.*')
-  end
-
-  # for experimental cascading :-)
-  alias set_banner banner=
-  alias set_program_name program_name=
-  alias set_summary_width summary_width=
-  alias set_summary_indent summary_indent=
-
-  # Version
-  attr_writer :version
-  # Release code
-  attr_writer :release
-
-  #
-  # Version
-  #
-  def version
-    @version || (defined?(::Version) && ::Version)
-  end
-
-  #
-  # Release code
-  #
-  def release
-    @release || (defined?(::Release) && ::Release) || (defined?(::RELEASE) && ::RELEASE)
-  end
-
-  #
-  # Returns version string from program_name, version and release.
-  #
-  def ver
-    if v = version
-      str = "#{program_name} #{[v].join('.')}"
-      str << " (#{v})" if v = release
-      str
-    end
-  end
-
-  def warn(mesg = $!)
-    super("#{program_name}: #{mesg}")
-  end
-
-  def abort(mesg = $!)
-    super("#{program_name}: #{mesg}")
-  end
-
-  #
-  # Subject of #on / #on_head, #accept / #reject
-  #
-  def top
-    @stack[-1]
-  end
-
-  #
-  # Subject of #on_tail.
-  #
-  def base
-    @stack[1]
-  end
-
-  #
-  # Pushes a new List.
-  #
-  def new
-    @stack.push(List.new)
-    if block_given?
-      yield self
-    else
-      self
-    end
-  end
-
-  #
-  # Removes the last List.
-  #
-  def remove
-    @stack.pop
-  end
-
-  #
-  # Puts option summary into +to+ and returns +to+. Yields each line if
-  # a block is given.
-  #
-  # +to+:: Output destination, which must have method <<. Defaults to [].
-  # +width+:: Width of left side, defaults to @summary_width.
-  # +max+:: Maximum length allowed for left side, defaults to +width+ - 1.
-  # +indent+:: Indentation, defaults to @summary_indent.
-  #
-  def summarize(to = [], width = @summary_width, max = width - 1, indent = @summary_indent, &blk)
-    visit(:summarize, {}, {}, width, max, indent, &(blk || proc {|l| to << l + $/}))
-    to
-  end
-
-  #
-  # Returns option summary string.
-  #
-  def help; summarize(banner.to_s.sub(/\n?\z/, "\n")) end
-  alias to_s help
-
-  #
-  # Returns option summary list.
-  #
-  def to_a; summarize(banner.to_a.dup) end
-
-  #
-  # Checks if an argument is given twice, in which case an ArgumentError is
-  # raised. Called from OptionParser#switch only.
-  #
-  # +obj+:: New argument.
-  # +prv+:: Previously specified argument.
-  # +msg+:: Exception message.
-  #
-  def notwice(obj, prv, msg)
-    unless !prv or prv == obj
-      begin
-        raise ArgumentError, "argument #{msg} given twice: #{obj}"
-      rescue
-        $@[0, 2] = nil
-        raise
-      end
-    end
-    obj
-  end
-  private :notwice
-
-  #
-  # Creates an OptionParser::Switch from the parameters. The parsed argument
-  # value is passed to the given block, where it can be processed.
-  #
-  # See at the beginning of OptionParser for some full examples.
-  #
-  # +opts+ can include the following elements:
-  #
-  # [Argument style:]
-  #   One of the following:
-  #     :NONE, :REQUIRED, :OPTIONAL
-  #
-  # [Argument pattern:]
-  #   Acceptable option argument format, must be pre-defined with
-  #   OptionParser.accept or OptionParser#accept, or Regexp. This can appear
-  #   once or assigned as String if not present, otherwise causes an
-  #   ArgumentError. Examples:
-  #     Float, Time, Array
-  #
-  # [Possible argument values:]
-  #   Hash or Array.
-  #     [:text, :binary, :auto]
-  #     %w[iso-2022-jp shift_jis euc-jp utf8 binary]
-  #     { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
-  #
-  # [Long style switch:]
-  #   Specifies a long style switch which takes a mandatory, optional or no
-  #   argument. It's a string of the following form:
-  #     "--switch=MANDATORY" or "--switch MANDATORY"
-  #     "--switch[=OPTIONAL]"
-  #     "--switch"
-  #
-  # [Short style switch:]
-  #   Specifies short style switch which takes a mandatory, optional or no
-  #   argument. It's a string of the following form:
-  #     "-xMANDATORY"
-  #     "-x[OPTIONAL]"
-  #     "-x"
-  #   There is also a special form which matches character range (not full
-  #   set of regural expression):
-  #     "-[a-z]MANDATORY"
-  #     "-[a-z][OPTIONAL]" 
-  #     "-[a-z]"
-  #
-  # [Argument style and description:]
-  #   Instead of specifying mandatory or optional orguments directly in the
-  #   switch parameter, this separate parameter can be used.
-  #     "=MANDATORY"
-  #     "=[OPTIONAL]"
-  #
-  # [Description:]
-  #   Description string for the option.
-  #     "Run verbosely"
-  # 
-  # [Handler:]
-  #   Handler for the parsed argument value. Either give a block or pass a
-  #   Proc or Method as an argument.
-  #
-  def make_switch(opts, block = nil)
-    short, long, nolong, style, pattern, conv, not_pattern, not_conv, not_style = [], [], []
-    ldesc, sdesc, desc, arg = [], [], []
-    default_style = Switch::NoArgument
-    default_pattern = nil
-    klass = nil
-    o = nil
-    n, q, a = nil
-
-    opts.each do |o|
-      # argument class
-      next if search(:atype, o) do |pat, c|
-        klass = notwice(o, klass, 'type')
-        if not_style and not_style != Switch::NoArgument
-          not_pattern, not_conv = pat, c
-        else
-          default_pattern, conv = pat, c
-        end
-      end
-
-      # directly specified pattern(any object possible to match)
-      if !(String === o) and o.respond_to?(:match)
-        pattern = notwice(o, pattern, 'pattern')
-        conv = (pattern.method(:convert).to_proc if pattern.respond_to?(:convert))
-        next
-      end
-
-      # anything others
-      case o
-      when Proc, Method
-        block = notwice(o, block, 'block')
-      when Array, Hash
-        case pattern
-        when CompletingHash
-        when nil
-          pattern = CompletingHash.new
-          conv = (pattern.method(:convert).to_proc if pattern.respond_to?(:convert))
-        else
-          raise ArgumentError, "argument pattern given twice"
-        end
-        o.each {|(o, *v)| pattern[o] = v.fetch(0) {o}}
-      when Module
-        raise ArgumentError, "unsupported argument type: #{o}"
-      when *ArgumentStyle.keys
-        style = notwice(ArgumentStyle[o], style, 'style')
-      when /^--no-([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        o = notwice(a ? Object : TrueClass, klass, 'type')
-        not_pattern, not_conv = search(:atype, o) unless not_style
-        not_style = (not_style || default_style).guess(arg = a) if a
-        default_style = Switch::NoArgument
-        default_pattern, conv = search(:atype, FalseClass) unless default_pattern
-        ldesc << "--no-#{q}"
-        long << 'no-' + (q = q.downcase)
-        nolong << q
-      when /^--\[no-\]([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        o = notwice(a ? Object : TrueClass, klass, 'type')
-        if a
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        ldesc << "--[no-]#{q}"
-        long << (o = q.downcase)
-        not_pattern, not_conv = search(:atype, FalseClass) unless not_style
-        not_style = Switch::NoArgument
-        nolong << 'no-' + o
-      when /^--([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        if a
-          o = notwice(NilClass, klass, 'type')
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        ldesc << "--#{q}"
-        long << (o = q.downcase)
-      when /^-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/
-        q, a = $1, $2
-        o = notwice(Object, klass, 'type')
-        if a
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        sdesc << "-#{q}"
-        short << Regexp.new(q)
-      when /^-(.)(.+)?/
-        q, a = $1, $2
-        if a
-          o = notwice(NilClass, klass, 'type')
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        sdesc << "-#{q}"
-        short << q
-      when /^=/
-        style = notwice(default_style.guess(arg = o), style, 'style')
-        default_pattern, conv = search(:atype, Object) unless default_pattern
-      else
-        desc.push(o)
-      end
-    end
-
-    default_pattern, conv = search(:atype, default_style.pattern) unless default_pattern
-    if !(short.empty? and long.empty?)
-      s = (style || default_style).new(pattern || default_pattern,
-                                       conv, sdesc, ldesc, arg, desc, block)
-    elsif !block
-      raise ArgumentError, "no switch given" if style or pattern
-      s = desc
-    else
-      short << pattern
-      s = (style || default_style).new(pattern,
-                                       conv, nil, nil, arg, desc, block)
-    end
-    return s, short, long,
-      (not_style.new(not_pattern, not_conv, sdesc, ldesc, nil, desc, block) if not_style),
-      nolong
-  end
-
-  def define(*opts, &block)
-    top.append(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch and handler. See #make_switch for an explanation of
-  # parameters.
-  #
-  def on(*opts, &block)
-    define(*opts, &block)
-    self
-  end
-  alias def_option define
-
-  def define_head(*opts, &block)
-    top.prepend(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch like with #on, but at head of summary.
-  #
-  def on_head(*opts, &block)
-    define_head(*opts, &block)
-    self
-  end
-  alias def_head_option define_head
-
-  def define_tail(*opts, &block)
-    base.append(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch like with #on, but at tail of summary.
-  #
-  def on_tail(*opts, &block)
-    define_tail(*opts, &block)
-    self
-  end
-  alias def_tail_option define_tail
-
-  #
-  # Add separator in summary.
-  #
-  def separator(string)
-    top.append(string, nil, nil)
-  end
-
-  #
-  # Parses command line arguments +argv+ in order. When a block is given,
-  # each non-option argument is yielded.
-  #
-  # Returns the rest of +argv+ left unparsed.
-  #
-  def order(*argv, &block)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    order!(argv, &block)
-  end
-
-  #
-  # Same as #order, but removes switches destructively.
-  #
-  def order!(argv = default_argv, &nonopt)
-    parse_in_order(argv, &nonopt)
-  end
-
-  def parse_in_order(argv = default_argv, setter = nil, &nonopt)  # :nodoc:
-    opt, arg, sw, val, rest = nil
-    nonopt ||= proc {|arg| throw :terminate, arg}
-    argv.unshift(arg) if arg = catch(:terminate) {
-      while arg = argv.shift
-        case arg
-        # long option
-        when /\A--([^=]*)(?:=(.*))?/nm
-          opt, rest = $1, $2
-          begin
-            sw, = complete(:long, opt, true)
-          rescue ParseError
-            raise $!.set_option(arg, true)
-          end
-          begin
-            opt, cb, val = sw.parse(rest, argv) {|*exc| raise(*exc)}
-            val = cb.call(val) if cb
-            setter.call(sw.switch_name, val) if setter
-          rescue ParseError
-            raise $!.set_option(arg, rest)
-          end
-
-        # short option
-        when /\A-(.)((=).*|.+)?/nm
-          opt, has_arg, eq, val, rest = $1, $3, $3, $2, $2
-          begin
-            sw, = search(:short, opt)
-            unless sw
-              begin
-                sw, = complete(:short, opt)
-                # short option matched.
-                val = arg.sub(/\A-/, '')
-                has_arg = true
-              rescue InvalidOption
-                # if no short options match, try completion with long
-                # options.
-                sw, = complete(:long, opt)
-                eq ||= !rest
-              end
-            end
-          rescue ParseError
-            raise $!.set_option(arg, true)
-          end
-          begin
-            opt, cb, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
-            raise InvalidOption, arg if has_arg and !eq and arg == "-#{opt}"
-            argv.unshift(opt) if opt and (opt = opt.sub(/\A-*/, '-')) != '-'
-            val = cb.call(val) if cb
-            setter.call(sw.switch_name, val) if setter
-          rescue ParseError
-            raise $!.set_option(arg, arg.length > 2)
-          end
-
-        # non-option argument
-        else
-          catch(:prune) do
-            visit(:each_option) do |sw|
-              sw.block.call(arg) if Switch === sw and sw.match_nonswitch?(arg)
-            end
-            nonopt.call(arg)
-          end
-        end
-      end
-
-      nil
-    }
-
-    visit(:search, :short, nil) {|sw| sw.block.call(*argv) if !sw.pattern}
-
-    argv
-  end
-  private :parse_in_order
-
-  #
-  # Parses command line arguments +argv+ in permutation mode and returns
-  # list of non-option arguments.
-  #
-  def permute(*argv)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    permute!(argv)
-  end
-
-  #
-  # Same as #permute, but removes switches destructively.
-  #
-  def permute!(argv = default_argv)
-    nonopts = []
-    arg = nil
-    order!(argv) {|arg| nonopts << arg}
-    argv[0, 0] = nonopts
-    argv
-  end
-
-  #
-  # Parses command line arguments +argv+ in order when environment variable
-  # POSIXLY_CORRECT is set, and in permutation mode otherwise.
-  #
-  def parse(*argv)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    parse!(argv)
-  end
-
-  #
-  # Same as #parse, but removes switches destructively.
-  #
-  def parse!(argv = default_argv)
-    if ENV.include?('POSIXLY_CORRECT')
-      order!(argv)
-    else
-      permute!(argv)
-    end
-  end
-
-  #
-  # Wrapper method for getopts.rb.
-  #
-  #   params = ARGV.getopts("ab:", "foo", "bar:")
-  #   # params[:a] = true   # -a
-  #   # params[:b] = "1"    # -b1
-  #   # params[:foo] = "1"  # --foo
-  #   # params[:bar] = "x"  # --bar x
-  #
-  def getopts(*args)
-    argv = Array === args.first ? args.shift : default_argv
-    single_options, *long_options = *args
-
-    result = {}
-
-    single_options.scan(/(.)(:)?/) do |opt, val|
-      if val
-        result[opt] = nil
-        define("-#{opt} VAL")
-      else
-        result[opt] = false
-        define("-#{opt}")
-      end
-    end if single_options
-
-    long_options.each do |arg|
-      opt, val = arg.split(':', 2)
-      if val
-        result[opt] = val.empty? ? nil : val
-        define("--#{opt} VAL")
-      else
-        result[opt] = false
-        define("--#{opt}")
-      end
-    end
-
-    parse_in_order(argv, result.method(:[]=))
-    result
-  end
-
-  #
-  # See #getopts.
-  #
-  def self.getopts(*args)
-    new.getopts(*args)
-  end
-
-  #
-  # Traverses @stack, sending each element method +id+ with +args+ and
-  # +block+.
-  #
-  def visit(id, *args, &block)
-    el = nil
-    @stack.reverse_each do |el|
-      el.send(id, *args, &block)
-    end
-    nil
-  end
-  private :visit
-
-  #
-  # Searches +key+ in @stack for +id+ hash and returns or yields the result.
-  #
-  def search(id, key)
-    block_given = block_given?
-    visit(:search, id, key) do |k|
-      return block_given ? yield(k) : k
-    end
-  end
-  private :search
-
-  #
-  # Completes shortened long style option switch and returns pair of
-  # canonical switch and switch descriptor OptionParser::Switch.
-  #
-  # +id+::    Searching table.
-  # +opt+::   Searching key.
-  # +icase+:: Search case insensitive if true.
-  # +pat+::   Optional pattern for completion.
-  #
-  def complete(typ, opt, icase = false, *pat)
-    if pat.empty?
-      search(typ, opt) {|sw| return [sw, opt]} # exact match or...
-    end
-    raise AmbiguousOption, catch(:ambiguous) {
-      visit(:complete, typ, opt, icase, *pat) {|opt, *sw| return sw}
-      raise InvalidOption, opt
-    }
-  end
-  private :complete
-
-  #
-  # Loads options from file names as +filename+. Does nothing when the file
-  # is not present. Returns whether successfully loaded.
-  #
-  # +filename+ defaults to basename of the program without suffix in a
-  # directory ~/.options.
-  #
-  def load(filename = nil)
-    begin
-      filename ||= File.expand_path(File.basename($0, '.*'), '~/.options')
-    rescue
-      return false
-    end
-    begin
-      parse(*IO.readlines(filename).each {|s| s.chomp!})
-      true
-    rescue Errno::ENOENT, Errno::ENOTDIR
-      false
-    end
-  end
-
-  #
-  # Parses environment variable +env+ or its uppercase with splitting like a
-  # shell.
-  #
-  # +env+ defaults to the basename of the program.
-  #
-  def environment(env = File.basename($0, '.*'))
-    env = ENV[env] || ENV[env.upcase] or return
-    require 'shellwords'
-    parse(*Shellwords.shellwords(env))
-  end
-
-  #
-  # Acceptable argument classes
-  #
-
-  #
-  # Any string and no conversion. This is fall-back.
-  #
-  accept(Object) {|s,|s or s.nil?}
-
-  accept(NilClass) {|s,|s}
-
-  #
-  # Any non-empty string, and no conversion.
-  #
-  accept(String, /.+/nm) {|s,*|s}
-
-  #
-  # Ruby/C-like integer, octal for 0-7 sequence, binary for 0b, hexadecimal
-  # for 0x, and decimal for others; with optional sign prefix. Converts to
-  # Integer.
-  #
-  decimal = '\d+(?:_\d+)*'
-  binary = 'b[01]+(?:_[01]+)*'
-  hex = 'x[\da-f]+(?:_[\da-f]+)*'
-  octal = "0(?:[0-7]*(?:_[0-7]+)*|#{binary}|#{hex})"
-  integer = "#{octal}|#{decimal}"
-  accept(Integer, %r"\A[-+]?(?:#{integer})"io) {|s,| Integer(s) if s}
-
-  #
-  # Float number format, and converts to Float.
-  #
-  float = "(?:#{decimal}(?:\\.(?:#{decimal})?)?|\\.#{decimal})(?:E[-+]?#{decimal})?"
-  floatpat = %r"\A[-+]?#{float}"io
-  accept(Float, floatpat) {|s,| s.to_f if s}
-
-  #
-  # Generic numeric format, converts to Integer for integer format, Float
-  # for float format.
-  #
-  accept(Numeric, %r"\A[-+]?(?:#{octal}|#{float})"io) {|s,| eval(s) if s}
-
-  #
-  # Decimal integer format, to be converted to Integer.
-  #
-  DecimalInteger = /\A[-+]?#{decimal}/io
-  accept(DecimalInteger) {|s,| s.to_i if s}
-
-  #
-  # Ruby/C like octal/hexadecimal/binary integer format, to be converted to
-  # Integer.
-  #
-  OctalInteger = /\A[-+]?(?:[0-7]+(?:_[0-7]+)*|0(?:#{binary}|#{hex}))/io
-  accept(OctalInteger) {|s,| s.oct if s}
-
-  #
-  # Decimal integer/float number format, to be converted to Integer for
-  # integer format, Float for float format.
-  #
-  DecimalNumeric = floatpat     # decimal integer is allowed as float also.
-  accept(DecimalNumeric) {|s,| eval(s) if s}
-
-  #
-  # Boolean switch, which means whether it is present or not, whether it is
-  # absent or not with prefix no-, or it takes an argument
-  # yes/no/true/false/+/-.
-  #
-  yesno = CompletingHash.new
-  %w[- no false].each {|el| yesno[el] = false}
-  %w[+ yes true].each {|el| yesno[el] = true}
-  yesno['nil'] = false          # shoud be nil?
-  accept(TrueClass, yesno) {|arg, val| val == nil or val}
-  #
-  # Similar to TrueClass, but defaults to false.
-  #
-  accept(FalseClass, yesno) {|arg, val| val != nil and val}
-
-  #
-  # List of strings separated by ",".
-  #
-  accept(Array) do |s,|
-    if s
-      s = s.split(',').collect {|s| s unless s.empty?}
-    end
-    s
-  end
-
-  #
-  # Regular expression with options.
-  #
-  accept(Regexp, %r"\A/((?:\\.|[^\\])*)/([[:alpha:]]+)?\z|.*") do |all, s, o|
-    f = 0
-    if o
-      f |= Regexp::IGNORECASE if /i/ =~ o
-      f |= Regexp::MULTILINE if /m/ =~ o
-      f |= Regexp::EXTENDED if /x/ =~ o
-      k = o.delete("^imx")
-    end
-    Regexp.new(s || all, f, k)
-  end
-
-  #
-  # Exceptions
-  #
-
-  #
-  # Base class of exceptions from OptionParser.
-  #
-  class ParseError < RuntimeError
-    # Reason which caused the error.
-    Reason = 'parse error'.freeze
-
-    def initialize(*args)
-      @args = args
-      @reason = nil
-    end
-
-    attr_reader :args
-    attr_writer :reason
-
-    #
-    # Pushes back erred argument(s) to +argv+.
-    #
-    def recover(argv)
-      argv[0, 0] = @args
-      argv
-    end
-
-    def set_option(opt, eq)
-      if eq
-        @args[0] = opt
-      else
-        @args.unshift(opt)
-      end
-      self
-    end
-
-    #
-    # Returns error reason. Override this for I18N.
-    #
-    def reason
-      @reason || self.class::Reason
-    end
-
-    def inspect
-      "#<#{self.class.to_s}: #{args.join(' ')}>"
-    end
-
-    #
-    # Default stringizing method to emit standard error message.
-    #
-    def message
-      reason + ': ' + args.join(' ')
-    end
-
-    alias to_s message
-  end
-
-  #
-  # Raises when ambiguously completable string is encountered.
-  #
-  class AmbiguousOption < ParseError
-    const_set(:Reason, 'ambiguous option'.freeze)
-  end
-
-  #
-  # Raises when there is an argument for a switch which takes no argument.
-  #
-  class NeedlessArgument < ParseError
-    const_set(:Reason, 'needless argument'.freeze)
-  end
-
-  #
-  # Raises when a switch with mandatory argument has no argument.
-  #
-  class MissingArgument < ParseError
-    const_set(:Reason, 'missing argument'.freeze)
-  end
-
-  #
-  # Raises when switch is undefined.
-  #
-  class InvalidOption < ParseError
-    const_set(:Reason, 'invalid option'.freeze)
-  end
-
-  #
-  # Raises when the given argument does not match required format.
-  #
-  class InvalidArgument < ParseError
-    const_set(:Reason, 'invalid argument'.freeze)
-  end
-
-  #
-  # Raises when the given argument word can't be completed uniquely.
-  #
-  class AmbiguousArgument < InvalidArgument
-    const_set(:Reason, 'ambiguous argument'.freeze)
-  end
-
-  #
-  # Miscellaneous
-  #
-
-  #
-  # Extends command line arguments array (ARGV) to parse itself.
-  #
-  module Arguable
-
-    #
-    # Sets OptionParser object, when +opt+ is +false+ or +nil+, methods
-    # OptionParser::Arguable#options and OptionParser::Arguable#options= are
-    # undefined. Thus, there is no ways to access the OptionParser object
-    # via the receiver object.
-    #
-    def options=(opt)
-      unless @optparse = opt
-        class << self
-          undef_method(:options)
-          undef_method(:options=)
-        end
-      end
-    end
-
-    #
-    # Actual OptionParser object, automatically created if nonexistent.
-    #
-    # If called with a block, yields the OptionParser object and returns the
-    # result of the block. If an OptionParser::ParseError exception occurs
-    # in the block, it is rescued, a error message printed to STDERR and
-    # +nil+ returned.
-    #
-    def options
-      @optparse ||= OptionParser.new
-      @optparse.default_argv = self
-      block_given? or return @optparse
-      begin
-        yield @optparse
-      rescue ParseError
-        @optparse.warn $!
-        nil
-      end
-    end
-
-    #
-    # Parses +self+ destructively in order and returns +self+ containing the
-    # rest arguments left unparsed.
-    #
-    def order!(&blk) options.order!(self, &blk) end
-
-    #
-    # Parses +self+ destructively in permutation mode and returns +self+
-    # containing the rest arguments left unparsed.
-    #
-    def permute!() options.permute!(self) end
-
-    #
-    # Parses +self+ destructively and returns +self+ containing the
-    # rest arguments left unparsed.
-    #
-    def parse!() options.parse!(self) end
-
-    #
-    # Substitution of getopts is possible as follows. Also see
-    # OptionParser#getopts.
-    #
-    #   def getopts(*args)
-    #     ($OPT = ARGV.getopts(*args)).each do |opt, val|
-    #       eval "$OPT_#{opt.gsub(/[^A-Za-z0-9_]/, '_')} = val"
-    #     end
-    #   rescue OptionParser::ParseError
-    #   end
-    #
-    def getopts(*args)
-      options.getopts(self, *args)
-    end
-
-    #
-    # Initializes instance variable.
-    #
-    def self.extend_object(obj)
-      super
-      obj.instance_eval {@optparse = nil}
-    end
-    def initialize(*args)
-      super
-      @optparse = nil
-    end
-  end
-
-  #
-  # Acceptable argument classes. Now contains DecimalInteger, OctalInteger
-  # and DecimalNumeric. See Acceptable argument classes (in source code).
-  #
-  module Acceptables
-    const_set(:DecimalInteger, OptionParser::DecimalInteger)
-    const_set(:OctalInteger, OptionParser::OctalInteger)
-    const_set(:DecimalNumeric, OptionParser::DecimalNumeric)
-  end
-end
-
-# ARGV is arguable by OptionParser
-ARGV.extend(OptionParser::Arguable)
-
-if $0 == __FILE__
-  Version = OptionParser::Version
-  ARGV.options {|q|
-    q.parse!.empty? or puts "what's #{ARGV.join(' ')}?"
-  } or abort(ARGV.options.to_s)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/date.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/date.rb
deleted file mode 100644
index d680559..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/date.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'optparse'
-require 'date'
-
-OptionParser.accept(DateTime) do |s,|
-  begin
-    DateTime.parse(s) if s
-  rescue ArgumentError
-    raise OptionParser::InvalidArgument, s
-  end
-end
-OptionParser.accept(Date) do |s,|
-  begin
-    Date.parse(s) if s
-  rescue ArgumentError
-    raise OptionParser::InvalidArgument, s
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/shellwords.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/shellwords.rb
deleted file mode 100644
index 0422d7c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/shellwords.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- ruby -*-
-
-require 'shellwords'
-require 'optparse'
-
-OptionParser.accept(Shellwords) {|s,| Shellwords.shellwords(s)}
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/time.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/time.rb
deleted file mode 100644
index 402cadc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/time.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'optparse'
-require 'time'
-
-OptionParser.accept(Time) do |s,|
-  begin
-    (Time.httpdate(s) rescue Time.parse(s)) if s
-  rescue
-    raise OptionParser::InvalidArgument, s
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/uri.rb
deleted file mode 100644
index 024dc69..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/uri.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- ruby -*-
-
-require 'optparse'
-require 'uri'
-
-OptionParser.accept(URI) {|s,| URI.parse(s) if s}
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/version.rb
deleted file mode 100644
index 558d9d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/optparse/version.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# OptionParser internal utility
-
-class << OptionParser
-  def show_version(*pkg)
-    progname = ARGV.options.program_name
-    result = false
-    show = proc do |klass, cname, version|
-      str = "#{progname}"
-      unless klass == ::Object and cname == :VERSION
-        version = version.join(".") if Array === version
-        str << ": #{klass}" unless klass == Object
-        str << " version #{version}"
-      end
-      [:Release, :RELEASE].find do |rel|
-        if klass.const_defined?(rel)
-          str << " (#{klass.const_get(rel)})"
-        end
-      end
-      puts str
-      result = true
-    end
-    if pkg.size == 1 and pkg[0] == "all"
-      self.search_const(::Object, /\AV(?:ERSION|ersion)\z/) do |klass, cname, version|
-        unless cname[1] == ?e and klass.const_defined?(:Version)
-          show.call(klass, cname.intern, version)
-        end
-      end
-    else
-      pkg.each do |pkg|
-        begin
-          pkg = pkg.split(/::|\//).inject(::Object) {|m, c| m.const_get(c)}
-          v = case
-              when pkg.const_defined?(:Version)
-                pkg.const_get(n = :Version)
-              when pkg.const_defined?(:VERSION)
-                pkg.const_get(n = :VERSION)
-              else
-                n = nil
-                "unknown"
-              end
-          show.call(pkg, n, v)
-        rescue NameError
-        end
-      end
-    end
-    result
-  end
-
-  def each_const(path, klass = ::Object)
-    path.split(/::|\//).inject(klass) do |klass, name|
-      raise NameError, path unless Module === klass
-      klass.constants.grep(/#{name}/i) do |c|
-        klass.const_defined?(c) or next
-        c = klass.const_get(c)
-      end
-    end
-  end
-
-  def search_const(klass, name)
-    klasses = [klass]
-    while klass = klasses.shift
-      klass.constants.each do |cname|
-        klass.const_defined?(cname) or next
-        const = klass.const_get(cname)
-        yield klass, cname, const if name === cname
-        klasses << const if Module === const and const != ::Object
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ostruct.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ostruct.rb
deleted file mode 100644
index 6af5bbd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ostruct.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-#
-# = ostruct.rb: OpenStruct implementation
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Gavin Sinclair
-#
-# OpenStruct allows the creation of data objects with arbitrary attributes.
-# See OpenStruct for an example.
-#
-
-#
-# OpenStruct allows you to create data objects and set arbitrary attributes.
-# For example:
-#
-#   require 'ostruct' 
-#
-#   record = OpenStruct.new
-#   record.name    = "John Smith"
-#   record.age     = 70
-#   record.pension = 300
-#   
-#   puts record.name     # -> "John Smith"
-#   puts record.address  # -> nil
-#
-# It is like a hash with a different way to access the data.  In fact, it is
-# implemented with a hash, and you can initialize it with one.
-#
-#   hash = { "country" => "Australia", :population => 20_000_000 }
-#   data = OpenStruct.new(hash)
-#
-#   p data        # -> <OpenStruct country="Australia" population=20000000>
-#
-class OpenStruct
-  #
-  # Create a new OpenStruct object.  The optional +hash+, if given, will
-  # generate attributes and values.  For example.
-  #
-  #   require 'ostruct'
-  #   hash = { "country" => "Australia", :population => 20_000_000 }
-  #   data = OpenStruct.new(hash)
-  #
-  #   p data        # -> <OpenStruct country="Australia" population=20000000>
-  #
-  # By default, the resulting OpenStruct object will have no attributes. 
-  #
-  def initialize(hash=nil)
-    @table = {}
-    if hash
-      for k,v in hash
-        @table[k.to_sym] = v
-        new_ostruct_member(k)
-      end
-    end
-  end
-
-  # Duplicate an OpenStruct object members. 
-  def initialize_copy(orig)
-    super
-    @table = @table.dup
-  end
-
-  def marshal_dump
-    @table
-  end
-  def marshal_load(x)
-    @table = x
-    @table.each_key{|key| new_ostruct_member(key)}
-  end
-
-  def new_ostruct_member(name)
-    name = name.to_sym
-    unless self.respond_to?(name)
-      meta = class << self; self; end
-      meta.send(:define_method, name) { @table[name] }
-      meta.send(:define_method, :"#{name}=") { |x| @table[name] = x }
-    end
-  end
-
-  def method_missing(mid, *args) # :nodoc:
-    mname = mid.id2name
-    len = args.length
-    if mname =~ /=$/
-      if len != 1
-        raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
-      end
-      if self.frozen?
-        raise TypeError, "can't modify frozen #{self.class}", caller(1)
-      end
-      mname.chop!
-      self.new_ostruct_member(mname)
-      @table[mname.intern] = args[0]
-    elsif len == 0
-      @table[mid]
-    else
-      raise NoMethodError, "undefined method `#{mname}' for #{self}", caller(1)
-    end
-  end
-
-  #
-  # Remove the named field from the object.
-  #
-  def delete_field(name)
-    @table.delete name.to_sym
-  end
-
-  InspectKey = :__inspect_key__ # :nodoc:
-
-  #
-  # Returns a string containing a detailed summary of the keys and values.
-  #
-  def inspect
-    str = "#<#{self.class}"
-
-    Thread.current[InspectKey] ||= []
-    if Thread.current[InspectKey].include?(self) then
-      str << " ..."
-    else
-      first = true
-      for k,v in @table
-        str << "," unless first
-        first = false
-
-        Thread.current[InspectKey] << v
-        begin
-          str << " #{k}=#{v.inspect}"
-        ensure
-          Thread.current[InspectKey].pop
-        end
-      end
-    end
-
-    str << ">"
-  end
-  alias :to_s :inspect
-
-  attr_reader :table # :nodoc:
-  protected :table
-
-  #
-  # Compare this object and +other+ for equality.
-  #
-  def ==(other)
-    return false unless(other.kind_of?(OpenStruct))
-    return @table == other.table
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsearg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsearg.rb
deleted file mode 100644
index 9c4d0f1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsearg.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-#		parsearg.rb - parse arguments
-#			$Release Version: $
-#			$Revision: 11708 $
-#			$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#			by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
-#
-# --
-#
-#	
-#
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: parsearg is deprecated after Ruby 1.8.1; use optparse instead"
-
-$RCS_ID=%q$Header$
-
-require "getopts"
-
-def printUsageAndExit()
-  if $USAGE
-    eval($USAGE)
-  end
-  exit()
-end
-
-def setParenthesis(ex, opt, c)
-  if opt != ""
-    ex = sprintf("%s$OPT_%s%s", ex, opt, c)
-  else
-    ex = sprintf("%s%s", ex, c)
-  end
-  return ex
-end
-
-def setOrAnd(ex, opt, c)
-  if opt != ""
-    ex = sprintf("%s$OPT_%s %s%s ", ex, opt, c, c)
-  else
-    ex = sprintf("%s %s%s ", ex, c, c)
-  end
-  return ex
-end
-
-def setExpression(ex, opt, op)
-  if !op
-    ex = sprintf("%s$OPT_%s", ex, opt)
-    return ex
-  end
-  case op.chr
-  when "(", ")"
-    ex = setParenthesis(ex, opt, op.chr)
-  when "|", "&"
-    ex = setOrAnd(ex, opt, op.chr)
-  else
-    return nil
-  end
-  return ex
-end
-
-# parseArgs is obsolete.  Use OptionParser instead.
-
-def parseArgs(argc, nopt, single_opts, *opts)
-  if (noOptions = getopts(single_opts, *opts)) == nil
-    printUsageAndExit()
-  end
-  if nopt
-    ex = nil
-    pos = 0
-    for o in nopt.split(/[()|&]/)
-      pos += o.length
-      ex = setExpression(ex, o, nopt[pos])
-      pos += 1
-    end
-    begin
-      if !eval(ex)
-	printUsageAndExit()
-      end
-    rescue
-      print "Format Error!! : \"" + nopt + "\"\t[parseArgs]\n"
-      exit!(-1)
-    end
-  end
-  if ARGV.length < argc
-    printUsageAndExit()
-  end
-  return noOptions
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsedate.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsedate.rb
deleted file mode 100644
index b52a79b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/parsedate.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# = parsedate.rb: Parses dates
-#
-# Author:: Tadayoshi Funaba
-# Documentation:: Konrad Meyer
-#
-# ParseDate munches on a date and turns it into an array of values.
-#
-
-#
-# ParseDate converts a date into an array of values.
-# For example:
-#
-#   require 'parsedate'
-#
-#   ParseDate.parsedate "Tuesday, July 6th, 2007, 18:35:20 UTC"
-#   # => [2007, 7, 6, 18, 35, 20, "UTC", 2]
-#
-# The order is of the form [year, month, day of month, hour, minute, second,
-# timezone, day of the week].
-
-require 'date/format'
-
-module ParseDate
-  #
-  # Parse a string representation of a date into values.
-  # For example:
-  #
-  #   require 'parsedate'
-  #
-  #   ParseDate.parsedate "Tuesday, July 5th, 2007, 18:35:20 UTC"
-  #   # => [2007, 7, 5, 18, 35, 20, "UTC", 2]
-  #
-  # The order is of the form [year, month, day of month, hour, minute,
-  # second, timezone, day of week].
-  #
-  # ParseDate.parsedate can also take a second argument, +comp+, which
-  # is a boolean telling the method to compensate for dates with years
-  # expressed as two digits. Example:
-  #
-  #   require 'parsedate'
-  #
-  #   ParseDate.parsedate "Mon Dec 25 00 06:53:24 UTC", true
-  #   # => [2000, 12, 25, 6, 53, 24, "UTC", 1]
-  #
-  def parsedate(str, comp=false)
-    Date._parse(str, comp).
-      values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :wday)
-  end
-
-  module_function :parsedate
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pathname.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pathname.rb
deleted file mode 100644
index e4ca548..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pathname.rb
+++ /dev/null
@@ -1,1062 +0,0 @@
-#
-# = pathname.rb
-#
-# Object-Oriented Pathname Class
-#
-# Author:: Tanaka Akira <akr at m17n.org>
-# Documentation:: Author and Gavin Sinclair
-#
-# For documentation, see class Pathname.
-#
-# <tt>pathname.rb</tt> is distributed with Ruby since 1.8.0.
-#
-
-#
-# == Pathname
-#
-# Pathname represents a pathname which locates a file in a filesystem.
-# The pathname depends on OS: Unix, Windows, etc.
-# Pathname library works with pathnames of local OS.
-# However non-Unix pathnames are supported experimentally.
-#
-# It does not represent the file itself.
-# A Pathname can be relative or absolute.  It's not until you try to
-# reference the file that it even matters whether the file exists or not.
-#
-# Pathname is immutable.  It has no method for destructive update.
-#
-# The value of this class is to manipulate file path information in a neater
-# way than standard Ruby provides.  The examples below demonstrate the
-# difference.  *All* functionality from File, FileTest, and some from Dir and
-# FileUtils is included, in an unsurprising way.  It is essentially a facade for
-# all of these, and more.
-#
-# == Examples
-#
-# === Example 1: Using Pathname
-#
-#   require 'pathname'
-#   p = Pathname.new("/usr/bin/ruby")
-#   size = p.size              # 27662
-#   isdir = p.directory?       # false
-#   dir  = p.dirname           # Pathname:/usr/bin
-#   base = p.basename          # Pathname:ruby
-#   dir, base = p.split        # [Pathname:/usr/bin, Pathname:ruby]
-#   data = p.read
-#   p.open { |f| _ } 
-#   p.each_line { |line| _ }
-#
-# === Example 2: Using standard Ruby
-#
-#   p = "/usr/bin/ruby"
-#   size = File.size(p)        # 27662
-#   isdir = File.directory?(p) # false
-#   dir  = File.dirname(p)     # "/usr/bin"
-#   base = File.basename(p)    # "ruby"
-#   dir, base = File.split(p)  # ["/usr/bin", "ruby"]
-#   data = File.read(p)
-#   File.open(p) { |f| _ } 
-#   File.foreach(p) { |line| _ }
-#
-# === Example 3: Special features
-#
-#   p1 = Pathname.new("/usr/lib")   # Pathname:/usr/lib
-#   p2 = p1 + "ruby/1.8"            # Pathname:/usr/lib/ruby/1.8
-#   p3 = p1.parent                  # Pathname:/usr
-#   p4 = p2.relative_path_from(p3)  # Pathname:lib/ruby/1.8
-#   pwd = Pathname.pwd              # Pathname:/home/gavin
-#   pwd.absolute?                   # true
-#   p5 = Pathname.new "."           # Pathname:.
-#   p5 = p5 + "music/../articles"   # Pathname:music/../articles
-#   p5.cleanpath                    # Pathname:articles
-#   p5.realpath                     # Pathname:/home/gavin/articles
-#   p5.children                     # [Pathname:/home/gavin/articles/linux, ...]
-# 
-# == Breakdown of functionality
-#
-# === Core methods
-#
-# These methods are effectively manipulating a String, because that's all a path
-# is.  Except for #mountpoint?, #children, and #realpath, they don't access the
-# filesystem.
-#
-# - +
-# - #join
-# - #parent
-# - #root?
-# - #absolute?
-# - #relative?
-# - #relative_path_from
-# - #each_filename
-# - #cleanpath
-# - #realpath
-# - #children
-# - #mountpoint?
-#
-# === File status predicate methods
-#
-# These methods are a facade for FileTest:
-# - #blockdev?
-# - #chardev?
-# - #directory?
-# - #executable?
-# - #executable_real?
-# - #exist?
-# - #file?
-# - #grpowned?
-# - #owned?
-# - #pipe?
-# - #readable?
-# - #world_readable?
-# - #readable_real?
-# - #setgid?
-# - #setuid?
-# - #size
-# - #size?
-# - #socket?
-# - #sticky?
-# - #symlink?
-# - #writable?
-# - #world_writable?
-# - #writable_real?
-# - #zero?
-#
-# === File property and manipulation methods
-#
-# These methods are a facade for File:
-# - #atime
-# - #ctime
-# - #mtime
-# - #chmod(mode)
-# - #lchmod(mode)
-# - #chown(owner, group)
-# - #lchown(owner, group)
-# - #fnmatch(pattern, *args)
-# - #fnmatch?(pattern, *args)
-# - #ftype
-# - #make_link(old)
-# - #open(*args, &block)
-# - #readlink
-# - #rename(to)
-# - #stat
-# - #lstat
-# - #make_symlink(old)
-# - #truncate(length)
-# - #utime(atime, mtime)
-# - #basename(*args)
-# - #dirname
-# - #extname
-# - #expand_path(*args)
-# - #split
-#
-# === Directory methods
-#
-# These methods are a facade for Dir:
-# - Pathname.glob(*args)
-# - Pathname.getwd / Pathname.pwd
-# - #rmdir
-# - #entries
-# - #each_entry(&block)
-# - #mkdir(*args)
-# - #opendir(*args)
-#
-# === IO
-#
-# These methods are a facade for IO:
-# - #each_line(*args, &block)
-# - #read(*args)
-# - #readlines(*args)
-# - #sysopen(*args)
-#
-# === Utilities
-#
-# These methods are a mixture of Find, FileUtils, and others:
-# - #find(&block)
-# - #mkpath
-# - #rmtree
-# - #unlink / #delete
-#
-#
-# == Method documentation
-#
-# As the above section shows, most of the methods in Pathname are facades.  The
-# documentation for these methods generally just says, for instance, "See
-# FileTest.writable?", as you should be familiar with the original method
-# anyway, and its documentation (e.g. through +ri+) will contain more
-# information.  In some cases, a brief description will follow.
-#
-class Pathname
-
-  # :stopdoc:
-  if RUBY_VERSION < "1.9"
-    TO_PATH = :to_str
-  else
-    # to_path is implemented so Pathname objects are usable with File.open, etc.
-    TO_PATH = :to_path
-  end
-  # :startdoc:
-
-  #
-  # Create a Pathname object from the given String (or String-like object).
-  # If +path+ contains a NUL character (<tt>\0</tt>), an ArgumentError is raised.
-  #
-  def initialize(path)
-    path = path.__send__(TO_PATH) if path.respond_to? TO_PATH
-    @path = path.dup
-
-    if /\0/ =~ @path
-      raise ArgumentError, "pathname contains \\0: #{@path.inspect}"
-    end
-
-    self.taint if @path.tainted?
-  end
-
-  def freeze() super; @path.freeze; self end
-  def taint() super; @path.taint; self end
-  def untaint() super; @path.untaint; self end
-
-  #
-  # Compare this pathname with +other+.  The comparison is string-based.
-  # Be aware that two different paths (<tt>foo.txt</tt> and <tt>./foo.txt</tt>)
-  # can refer to the same file.
-  #
-  def ==(other)
-    return false unless Pathname === other
-    other.to_s == @path
-  end
-  alias === ==
-  alias eql? ==
-
-  # Provides for comparing pathnames, case-sensitively.
-  def <=>(other)
-    return nil unless Pathname === other
-    @path.tr('/', "\0") <=> other.to_s.tr('/', "\0")
-  end
-
-  def hash # :nodoc:
-    @path.hash
-  end
-
-  # Return the path as a String.
-  def to_s
-    @path.dup
-  end
-
-  # to_path is implemented so Pathname objects are usable with File.open, etc.
-  alias_method TO_PATH, :to_s
-
-  def inspect # :nodoc:
-    "#<#{self.class}:#{@path}>"
-  end
-
-  # Return a pathname which is substituted by String#sub.
-  def sub(pattern, *rest, &block)
-    self.class.new(@path.sub(pattern, *rest, &block))
-  end
-
-  if File::ALT_SEPARATOR
-    SEPARATOR_PAT = /[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]/
-  else
-    SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
-  end
-
-  # chop_basename(path) -> [pre-basename, basename] or nil
-  def chop_basename(path)
-    base = File.basename(path)
-    if /\A#{SEPARATOR_PAT}?\z/ =~ base
-      return nil
-    else
-      return path[0, path.rindex(base)], base
-    end
-  end
-  private :chop_basename
-
-  # split_names(path) -> prefix, [name, ...]
-  def split_names(path)
-    names = []
-    while r = chop_basename(path)
-      path, basename = r
-      names.unshift basename
-    end
-    return path, names
-  end
-  private :split_names
-
-  def prepend_prefix(prefix, relpath)
-    if relpath.empty?
-      File.dirname(prefix)
-    elsif /#{SEPARATOR_PAT}/ =~ prefix
-      prefix = File.dirname(prefix)
-      prefix = File.join(prefix, "") if File.basename(prefix + 'a') != 'a'
-      prefix + relpath
-    else
-      prefix + relpath
-    end
-  end
-  private :prepend_prefix
-
-  # Returns clean pathname of +self+ with consecutive slashes and useless dots
-  # removed.  The filesystem is not accessed.
-  #
-  # If +consider_symlink+ is +true+, then a more conservative algorithm is used
-  # to avoid breaking symbolic linkages.  This may retain more <tt>..</tt>
-  # entries than absolutely necessary, but without accessing the filesystem,
-  # this can't be avoided.  See #realpath.
-  #
-  def cleanpath(consider_symlink=false)
-    if consider_symlink
-      cleanpath_conservative
-    else
-      cleanpath_aggressive
-    end
-  end
-
-  #
-  # Clean the path simply by resolving and removing excess "." and ".." entries.
-  # Nothing more, nothing less.
-  #
-  def cleanpath_aggressive
-    path = @path
-    names = []
-    pre = path
-    while r = chop_basename(pre)
-      pre, base = r
-      case base
-      when '.'
-      when '..'
-        names.unshift base
-      else
-        if names[0] == '..'
-          names.shift
-        else
-          names.unshift base
-        end
-      end
-    end
-    if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
-      names.shift while names[0] == '..'
-    end
-    self.class.new(prepend_prefix(pre, File.join(*names)))
-  end
-  private :cleanpath_aggressive
-
-  # has_trailing_separator?(path) -> bool
-  def has_trailing_separator?(path)
-    if r = chop_basename(path)
-      pre, basename = r
-      pre.length + basename.length < path.length
-    else
-      false
-    end
-  end
-  private :has_trailing_separator?
-
-  # add_trailing_separator(path) -> path
-  def add_trailing_separator(path)
-    if File.basename(path + 'a') == 'a'
-      path
-    else
-      File.join(path, "") # xxx: Is File.join is appropriate to add separator?
-    end
-  end
-  private :add_trailing_separator
-
-  def del_trailing_separator(path)
-    if r = chop_basename(path)
-      pre, basename = r
-      pre + basename
-    elsif /#{SEPARATOR_PAT}+\z/o =~ path
-      $` + File.dirname(path)[/#{SEPARATOR_PAT}*\z/o]
-    else
-      path
-    end
-  end
-  private :del_trailing_separator
-
-  def cleanpath_conservative
-    path = @path
-    names = []
-    pre = path
-    while r = chop_basename(pre)
-      pre, base = r
-      names.unshift base if base != '.'
-    end
-    if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
-      names.shift while names[0] == '..'
-    end
-    if names.empty?
-      self.class.new(File.dirname(pre))
-    else
-      if names.last != '..' && File.basename(path) == '.'
-        names << '.'
-      end
-      result = prepend_prefix(pre, File.join(*names))
-      if /\A(?:\.|\.\.)\z/ !~ names.last && has_trailing_separator?(path)
-        self.class.new(add_trailing_separator(result))
-      else
-        self.class.new(result)
-      end
-    end
-  end
-  private :cleanpath_conservative
-
-  def realpath_rec(prefix, unresolved, h)
-    resolved = []
-    until unresolved.empty?
-      n = unresolved.shift
-      if n == '.'
-        next
-      elsif n == '..'
-        resolved.pop
-      else
-        path = prepend_prefix(prefix, File.join(*(resolved + [n])))
-        if h.include? path
-          if h[path] == :resolving
-            raise Errno::ELOOP.new(path)
-          else
-            prefix, *resolved = h[path]
-          end
-        else
-          s = File.lstat(path)
-          if s.symlink?
-            h[path] = :resolving
-            link_prefix, link_names = split_names(File.readlink(path))
-            if link_prefix == ''
-              prefix, *resolved = h[path] = realpath_rec(prefix, resolved + link_names, h)
-            else
-              prefix, *resolved = h[path] = realpath_rec(link_prefix, link_names, h)
-            end
-          else
-            resolved << n
-            h[path] = [prefix, *resolved]
-          end
-        end
-      end
-    end
-    return prefix, *resolved
-  end
-  private :realpath_rec
-
-  #
-  # Returns a real (absolute) pathname of +self+ in the actual filesystem.
-  # The real pathname doesn't contain symlinks or useless dots.
-  #
-  # No arguments should be given; the old behaviour is *obsoleted*. 
-  #
-  def realpath
-    path = @path
-    prefix, names = split_names(path)
-    if prefix == ''
-      prefix, names2 = split_names(Dir.pwd)
-      names = names2 + names
-    end
-    prefix, *names = realpath_rec(prefix, names, {})
-    self.class.new(prepend_prefix(prefix, File.join(*names)))
-  end
-
-  # #parent returns the parent directory.
-  #
-  # This is same as <tt>self + '..'</tt>.
-  def parent
-    self + '..'
-  end
-
-  # #mountpoint? returns +true+ if <tt>self</tt> points to a mountpoint.
-  def mountpoint?
-    begin
-      stat1 = self.lstat
-      stat2 = self.parent.lstat
-      stat1.dev == stat2.dev && stat1.ino == stat2.ino ||
-        stat1.dev != stat2.dev
-    rescue Errno::ENOENT
-      false
-    end
-  end
-
-  #
-  # #root? is a predicate for root directories.  I.e. it returns +true+ if the
-  # pathname consists of consecutive slashes.
-  #
-  # It doesn't access actual filesystem.  So it may return +false+ for some
-  # pathnames which points to roots such as <tt>/usr/..</tt>.
-  #
-  def root?
-    !!(chop_basename(@path) == nil && /#{SEPARATOR_PAT}/o =~ @path)
-  end
-
-  # Predicate method for testing whether a path is absolute.
-  # It returns +true+ if the pathname begins with a slash.
-  def absolute?
-    !relative?
-  end
-
-  # The opposite of #absolute?
-  def relative?
-    path = @path
-    while r = chop_basename(path)
-      path, basename = r
-    end
-    path == ''
-  end
-
-  #
-  # Iterates over each component of the path.
-  #
-  #   Pathname.new("/usr/bin/ruby").each_filename {|filename| ... }
-  #     # yields "usr", "bin", and "ruby".
-  #
-  def each_filename # :yield: filename
-    prefix, names = split_names(@path)
-    names.each {|filename| yield filename }
-    nil
-  end
-
-  # Iterates over and yields a new Pathname object
-  # for each element in the given path in descending order.
-  #
-  #  Pathname.new('/path/to/some/file.rb').descend {|v| p v}
-  #     #<Pathname:/>
-  #     #<Pathname:/path>
-  #     #<Pathname:/path/to>
-  #     #<Pathname:/path/to/some>
-  #     #<Pathname:/path/to/some/file.rb>
-  #
-  #  Pathname.new('path/to/some/file.rb').descend {|v| p v}
-  #     #<Pathname:path>
-  #     #<Pathname:path/to>
-  #     #<Pathname:path/to/some>
-  #     #<Pathname:path/to/some/file.rb>
-  #
-  # It doesn't access actual filesystem.
-  #
-  # This method is available since 1.8.5.
-  #
-  def descend
-    vs = []
-    ascend {|v| vs << v }
-    vs.reverse_each {|v| yield v }
-    nil
-  end
-
-  # Iterates over and yields a new Pathname object
-  # for each element in the given path in ascending order.
-  #
-  #  Pathname.new('/path/to/some/file.rb').ascend {|v| p v}
-  #     #<Pathname:/path/to/some/file.rb>
-  #     #<Pathname:/path/to/some>
-  #     #<Pathname:/path/to>
-  #     #<Pathname:/path>
-  #     #<Pathname:/>
-  #
-  #  Pathname.new('path/to/some/file.rb').ascend {|v| p v}
-  #     #<Pathname:path/to/some/file.rb>
-  #     #<Pathname:path/to/some>
-  #     #<Pathname:path/to>
-  #     #<Pathname:path>
-  #
-  # It doesn't access actual filesystem.
-  #
-  # This method is available since 1.8.5.
-  #
-  def ascend
-    path = @path
-    yield self
-    while r = chop_basename(path)
-      path, name = r
-      break if path.empty?
-      yield self.class.new(del_trailing_separator(path))
-    end
-  end
-
-  #
-  # Pathname#+ appends a pathname fragment to this one to produce a new Pathname
-  # object.
-  #
-  #   p1 = Pathname.new("/usr")      # Pathname:/usr
-  #   p2 = p1 + "bin/ruby"           # Pathname:/usr/bin/ruby
-  #   p3 = p1 + "/etc/passwd"        # Pathname:/etc/passwd
-  #
-  # This method doesn't access the file system; it is pure string manipulation. 
-  #
-  def +(other)
-    other = Pathname.new(other) unless Pathname === other
-    Pathname.new(plus(@path, other.to_s))
-  end
-
-  def plus(path1, path2) # -> path
-    prefix2 = path2
-    index_list2 = []
-    basename_list2 = []
-    while r2 = chop_basename(prefix2)
-      prefix2, basename2 = r2
-      index_list2.unshift prefix2.length
-      basename_list2.unshift basename2
-    end
-    return path2 if prefix2 != ''
-    prefix1 = path1
-    while true
-      while !basename_list2.empty? && basename_list2.first == '.'
-        index_list2.shift
-        basename_list2.shift
-      end
-      break unless r1 = chop_basename(prefix1)
-      prefix1, basename1 = r1
-      next if basename1 == '.'
-      if basename1 == '..' || basename_list2.empty? || basename_list2.first != '..'
-        prefix1 = prefix1 + basename1
-        break
-      end
-      index_list2.shift
-      basename_list2.shift
-    end
-    r1 = chop_basename(prefix1)
-    if !r1 && /#{SEPARATOR_PAT}/o =~ File.basename(prefix1)
-      while !basename_list2.empty? && basename_list2.first == '..'
-        index_list2.shift
-        basename_list2.shift
-      end
-    end
-    if !basename_list2.empty?
-      suffix2 = path2[index_list2.first..-1]
-      r1 ? File.join(prefix1, suffix2) : prefix1 + suffix2
-    else
-      r1 ? prefix1 : File.dirname(prefix1)
-    end
-  end
-  private :plus
-
-  #
-  # Pathname#join joins pathnames.
-  #
-  # <tt>path0.join(path1, ..., pathN)</tt> is the same as
-  # <tt>path0 + path1 + ... + pathN</tt>.
-  #
-  def join(*args)
-    args.unshift self
-    result = args.pop
-    result = Pathname.new(result) unless Pathname === result
-    return result if result.absolute?
-    args.reverse_each {|arg|
-      arg = Pathname.new(arg) unless Pathname === arg
-      result = arg + result
-      return result if result.absolute?
-    }
-    result
-  end
-
-  #
-  # Returns the children of the directory (files and subdirectories, not
-  # recursive) as an array of Pathname objects.  By default, the returned
-  # pathnames will have enough information to access the files.  If you set
-  # +with_directory+ to +false+, then the returned pathnames will contain the
-  # filename only.
-  #
-  # For example:
-  #   p = Pathname("/usr/lib/ruby/1.8")
-  #   p.children
-  #       # -> [ Pathname:/usr/lib/ruby/1.8/English.rb,
-  #              Pathname:/usr/lib/ruby/1.8/Env.rb,
-  #              Pathname:/usr/lib/ruby/1.8/abbrev.rb, ... ]
-  #   p.children(false)
-  #       # -> [ Pathname:English.rb, Pathname:Env.rb, Pathname:abbrev.rb, ... ]
-  #
-  # Note that the result never contain the entries <tt>.</tt> and <tt>..</tt> in
-  # the directory because they are not children.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def children(with_directory=true)
-    with_directory = false if @path == '.'
-    result = []
-    Dir.foreach(@path) {|e|
-      next if e == '.' || e == '..'
-      if with_directory
-        result << self.class.new(File.join(@path, e))
-      else
-        result << self.class.new(e)
-      end
-    }
-    result
-  end
-
-  #
-  # #relative_path_from returns a relative path from the argument to the
-  # receiver.  If +self+ is absolute, the argument must be absolute too.  If
-  # +self+ is relative, the argument must be relative too.
-  #
-  # #relative_path_from doesn't access the filesystem.  It assumes no symlinks.
-  #
-  # ArgumentError is raised when it cannot find a relative path.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def relative_path_from(base_directory)
-    dest_directory = self.cleanpath.to_s
-    base_directory = base_directory.cleanpath.to_s
-    dest_prefix = dest_directory
-    dest_names = []
-    while r = chop_basename(dest_prefix)
-      dest_prefix, basename = r
-      dest_names.unshift basename if basename != '.'
-    end
-    base_prefix = base_directory
-    base_names = []
-    while r = chop_basename(base_prefix)
-      base_prefix, basename = r
-      base_names.unshift basename if basename != '.'
-    end
-    if dest_prefix != base_prefix
-      raise ArgumentError, "different prefix: #{dest_prefix.inspect} and #{base_directory.inspect}"
-    end
-    while !dest_names.empty? &&
-          !base_names.empty? &&
-          dest_names.first == base_names.first
-      dest_names.shift
-      base_names.shift
-    end
-    if base_names.include? '..'
-      raise ArgumentError, "base_directory has ..: #{base_directory.inspect}"
-    end
-    base_names.fill('..')
-    relpath_names = base_names + dest_names
-    if relpath_names.empty?
-      Pathname.new('.')
-    else
-      Pathname.new(File.join(*relpath_names))
-    end
-  end
-end
-
-class Pathname    # * IO *
-  #
-  # #each_line iterates over the line in the file.  It yields a String object
-  # for each line.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def each_line(*args, &block) # :yield: line
-    IO.foreach(@path, *args, &block)
-  end
-
-  # Pathname#foreachline is *obsoleted* at 1.8.1.  Use #each_line.
-  def foreachline(*args, &block)
-    warn "Pathname#foreachline is obsoleted.  Use Pathname#each_line."
-    each_line(*args, &block)
-  end
-
-  # See <tt>IO.read</tt>.  Returns all the bytes from the file, or the first +N+
-  # if specified.
-  def read(*args) IO.read(@path, *args) end
-
-  # See <tt>IO.readlines</tt>.  Returns all the lines from the file.
-  def readlines(*args) IO.readlines(@path, *args) end
-
-  # See <tt>IO.sysopen</tt>.
-  def sysopen(*args) IO.sysopen(@path, *args) end
-end
-
-
-class Pathname    # * File *
-
-  # See <tt>File.atime</tt>.  Returns last access time.
-  def atime() File.atime(@path) end
-
-  # See <tt>File.ctime</tt>.  Returns last (directory entry, not file) change time.
-  def ctime() File.ctime(@path) end
-
-  # See <tt>File.mtime</tt>.  Returns last modification time.
-  def mtime() File.mtime(@path) end
-
-  # See <tt>File.chmod</tt>.  Changes permissions.
-  def chmod(mode) File.chmod(mode, @path) end
-
-  # See <tt>File.lchmod</tt>.
-  def lchmod(mode) File.lchmod(mode, @path) end
-
-  # See <tt>File.chown</tt>.  Change owner and group of file.
-  def chown(owner, group) File.chown(owner, group, @path) end
-
-  # See <tt>File.lchown</tt>.
-  def lchown(owner, group) File.lchown(owner, group, @path) end
-
-  # See <tt>File.fnmatch</tt>.  Return +true+ if the receiver matches the given
-  # pattern.
-  def fnmatch(pattern, *args) File.fnmatch(pattern, @path, *args) end
-
-  # See <tt>File.fnmatch?</tt> (same as #fnmatch).
-  def fnmatch?(pattern, *args) File.fnmatch?(pattern, @path, *args) end
-
-  # See <tt>File.ftype</tt>.  Returns "type" of file ("file", "directory",
-  # etc).
-  def ftype() File.ftype(@path) end
-
-  # See <tt>File.link</tt>.  Creates a hard link.
-  def make_link(old) File.link(old, @path) end
-
-  # See <tt>File.open</tt>.  Opens the file for reading or writing.
-  def open(*args, &block) # :yield: file
-    File.open(@path, *args, &block)
-  end
-
-  # See <tt>File.readlink</tt>.  Read symbolic link.
-  def readlink() self.class.new(File.readlink(@path)) end
-
-  # See <tt>File.rename</tt>.  Rename the file.
-  def rename(to) File.rename(@path, to) end
-
-  # See <tt>File.stat</tt>.  Returns a <tt>File::Stat</tt> object.
-  def stat() File.stat(@path) end
-
-  # See <tt>File.lstat</tt>.
-  def lstat() File.lstat(@path) end
-
-  # See <tt>File.symlink</tt>.  Creates a symbolic link.
-  def make_symlink(old) File.symlink(old, @path) end
-
-  # See <tt>File.truncate</tt>.  Truncate the file to +length+ bytes.
-  def truncate(length) File.truncate(@path, length) end
-
-  # See <tt>File.utime</tt>.  Update the access and modification times.
-  def utime(atime, mtime) File.utime(atime, mtime, @path) end
-
-  # See <tt>File.basename</tt>.  Returns the last component of the path.
-  def basename(*args) self.class.new(File.basename(@path, *args)) end
-
-  # See <tt>File.dirname</tt>.  Returns all but the last component of the path.
-  def dirname() self.class.new(File.dirname(@path)) end
-
-  # See <tt>File.extname</tt>.  Returns the file's extension.
-  def extname() File.extname(@path) end
-
-  # See <tt>File.expand_path</tt>.
-  def expand_path(*args) self.class.new(File.expand_path(@path, *args)) end
-
-  # See <tt>File.split</tt>.  Returns the #dirname and the #basename in an
-  # Array.
-  def split() File.split(@path).map {|f| self.class.new(f) } end
-
-  # Pathname#link is confusing and *obsoleted* because the receiver/argument
-  # order is inverted to corresponding system call.
-  def link(old)
-    warn 'Pathname#link is obsoleted.  Use Pathname#make_link.'
-    File.link(old, @path)
-  end
-
-  # Pathname#symlink is confusing and *obsoleted* because the receiver/argument
-  # order is inverted to corresponding system call.
-  def symlink(old)
-    warn 'Pathname#symlink is obsoleted.  Use Pathname#make_symlink.'
-    File.symlink(old, @path)
-  end
-end
-
-
-class Pathname    # * FileTest *
-
-  # See <tt>FileTest.blockdev?</tt>.
-  def blockdev?() FileTest.blockdev?(@path) end
-
-  # See <tt>FileTest.chardev?</tt>.
-  def chardev?() FileTest.chardev?(@path) end
-
-  # See <tt>FileTest.executable?</tt>.
-  def executable?() FileTest.executable?(@path) end
-
-  # See <tt>FileTest.executable_real?</tt>.
-  def executable_real?() FileTest.executable_real?(@path) end
-
-  # See <tt>FileTest.exist?</tt>.
-  def exist?() FileTest.exist?(@path) end
-
-  # See <tt>FileTest.grpowned?</tt>.
-  def grpowned?() FileTest.grpowned?(@path) end
-
-  # See <tt>FileTest.directory?</tt>.
-  def directory?() FileTest.directory?(@path) end
-
-  # See <tt>FileTest.file?</tt>.
-  def file?() FileTest.file?(@path) end
-
-  # See <tt>FileTest.pipe?</tt>.
-  def pipe?() FileTest.pipe?(@path) end
-
-  # See <tt>FileTest.socket?</tt>.
-  def socket?() FileTest.socket?(@path) end
-
-  # See <tt>FileTest.owned?</tt>.
-  def owned?() FileTest.owned?(@path) end
-
-  # See <tt>FileTest.readable?</tt>.
-  def readable?() FileTest.readable?(@path) end
-
-  # See <tt>FileTest.world_readable?</tt>.
-  def world_readable?() FileTest.world_readable?(@path) end
-
-  # See <tt>FileTest.readable_real?</tt>.
-  def readable_real?() FileTest.readable_real?(@path) end
-
-  # See <tt>FileTest.setuid?</tt>.
-  def setuid?() FileTest.setuid?(@path) end
-
-  # See <tt>FileTest.setgid?</tt>.
-  def setgid?() FileTest.setgid?(@path) end
-
-  # See <tt>FileTest.size</tt>.
-  def size() FileTest.size(@path) end
-
-  # See <tt>FileTest.size?</tt>.
-  def size?() FileTest.size?(@path) end
-
-  # See <tt>FileTest.sticky?</tt>.
-  def sticky?() FileTest.sticky?(@path) end
-
-  # See <tt>FileTest.symlink?</tt>.
-  def symlink?() FileTest.symlink?(@path) end
-
-  # See <tt>FileTest.writable?</tt>.
-  def writable?() FileTest.writable?(@path) end
-
-  # See <tt>FileTest.world_writable?</tt>.
-  def world_writable?() FileTest.world_writable?(@path) end
-
-  # See <tt>FileTest.writable_real?</tt>.
-  def writable_real?() FileTest.writable_real?(@path) end
-
-  # See <tt>FileTest.zero?</tt>.
-  def zero?() FileTest.zero?(@path) end
-end
-
-
-class Pathname    # * Dir *
-  # See <tt>Dir.glob</tt>.  Returns or yields Pathname objects.
-  def Pathname.glob(*args) # :yield: p
-    if block_given?
-      Dir.glob(*args) {|f| yield self.new(f) }
-    else
-      Dir.glob(*args).map {|f| self.new(f) }
-    end
-  end
-
-  # See <tt>Dir.getwd</tt>.  Returns the current working directory as a Pathname.
-  def Pathname.getwd() self.new(Dir.getwd) end
-  class << self; alias pwd getwd end
-
-  # Pathname#chdir is *obsoleted* at 1.8.1.
-  def chdir(&block)
-    warn "Pathname#chdir is obsoleted.  Use Dir.chdir."
-    Dir.chdir(@path, &block)
-  end
-
-  # Pathname#chroot is *obsoleted* at 1.8.1.
-  def chroot
-    warn "Pathname#chroot is obsoleted.  Use Dir.chroot."
-    Dir.chroot(@path)
-  end
-
-  # Return the entries (files and subdirectories) in the directory, each as a
-  # Pathname object.
-  def entries() Dir.entries(@path).map {|f| self.class.new(f) } end
-
-  # Iterates over the entries (files and subdirectories) in the directory.  It
-  # yields a Pathname object for each entry.
-  #
-  # This method has existed since 1.8.1.
-  def each_entry(&block) # :yield: p
-    Dir.foreach(@path) {|f| yield self.class.new(f) }
-  end
-
-  # Pathname#dir_foreach is *obsoleted* at 1.8.1.
-  def dir_foreach(*args, &block)
-    warn "Pathname#dir_foreach is obsoleted.  Use Pathname#each_entry."
-    each_entry(*args, &block)
-  end
-
-  # See <tt>Dir.mkdir</tt>.  Create the referenced directory.
-  def mkdir(*args) Dir.mkdir(@path, *args) end
-
-  # See <tt>Dir.rmdir</tt>.  Remove the referenced directory.
-  def rmdir() Dir.rmdir(@path) end
-
-  # See <tt>Dir.open</tt>.
-  def opendir(&block) # :yield: dir
-    Dir.open(@path, &block)
-  end
-end
-
-
-class Pathname    # * Find *
-  #
-  # Pathname#find is an iterator to traverse a directory tree in a depth first
-  # manner.  It yields a Pathname for each file under "this" directory.
-  #
-  # Since it is implemented by <tt>find.rb</tt>, <tt>Find.prune</tt> can be used
-  # to control the traverse.
-  #
-  # If +self+ is <tt>.</tt>, yielded pathnames begin with a filename in the
-  # current directory, not <tt>./</tt>.
-  #
-  def find(&block) # :yield: p
-    require 'find'
-    if @path == '.'
-      Find.find(@path) {|f| yield self.class.new(f.sub(%r{\A\./}, '')) }
-    else
-      Find.find(@path) {|f| yield self.class.new(f) }
-    end
-  end
-end
-
-
-class Pathname    # * FileUtils *
-  # See <tt>FileUtils.mkpath</tt>.  Creates a full path, including any
-  # intermediate directories that don't yet exist.
-  def mkpath
-    require 'fileutils'
-    FileUtils.mkpath(@path)
-    nil
-  end
-
-  # See <tt>FileUtils.rm_r</tt>.  Deletes a directory and all beneath it.
-  def rmtree
-    # The name "rmtree" is borrowed from File::Path of Perl.
-    # File::Path provides "mkpath" and "rmtree".
-    require 'fileutils'
-    FileUtils.rm_r(@path)
-    nil
-  end
-end
-
-
-class Pathname    # * mixed *
-  # Removes a file or directory, using <tt>File.unlink</tt> or
-  # <tt>Dir.unlink</tt> as necessary.
-  def unlink()
-    begin
-      Dir.unlink @path
-    rescue Errno::ENOTDIR
-      File.unlink @path
-    end
-  end
-  alias delete unlink
-
-  # This method is *obsoleted* at 1.8.1.  Use #each_line or #each_entry.
-  def foreach(*args, &block)
-    warn "Pathname#foreach is obsoleted.  Use each_line or each_entry."
-    if FileTest.directory? @path
-      # For polymorphism between Dir.foreach and IO.foreach,
-      # Pathname#foreach doesn't yield Pathname object.
-      Dir.foreach(@path, *args, &block)
-    else
-      IO.foreach(@path, *args, &block)
-    end
-  end
-end
-
-module Kernel
-  # create a pathname object.
-  #
-  # This method is available since 1.8.5.
-  def Pathname(path) # :doc:
-    Pathname.new(path)
-  end
-  private :Pathname
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ping.rb
deleted file mode 100644
index c2966b6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/ping.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# = ping.rb: Check a host for upness
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Konrad Meyer
-# 
-# Performs the function of the basic network testing tool, ping.
-# See: Ping.
-#
-
-require 'timeout'
-require "socket"
-
-# 
-# Ping contains routines to test for the reachability of remote hosts.
-# Currently the only routine implemented is pingecho().
-#
-# Ping.pingecho uses a TCP echo (not an ICMP echo) to determine if the
-# remote host is reachable. This is usually adequate to tell that a remote
-# host is available to telnet, ftp, or ssh to.
-#
-# Warning: Ping.pingecho may block for a long time if DNS resolution is
-# slow. Requiring 'resolv-replace' allows non-blocking name resolution.
-#
-# Usage:
-# 
-#   require 'ping'
-#
-#   puts "'jimmy' is alive and kicking" if Ping.pingecho('jimmy', 10)
-#
-module Ping
-
-  # 
-  # Return true if we can open a connection to the hostname or IP address
-  # +host+ on port +service+ (which defaults to the "echo" port) waiting up
-  # to +timeout+ seconds.
-  #
-  # Example:
-  #
-  #   require 'ping'
-  #
-  #   Ping.pingecho "google.com", 10, 80
-  #
-  def pingecho(host, timeout=5, service="echo")
-    begin
-      timeout(timeout) do
-	s = TCPSocket.new(host, service)
-	s.close
-      end
-    rescue Errno::ECONNREFUSED
-      return true
-    rescue Timeout::Error, StandardError
-      return false
-    end
-    return true
-  end
-  module_function :pingecho
-end
-
-if $0 == __FILE__
-  host = ARGV[0]
-  host ||= "localhost"
-  printf("%s alive? - %s\n", host,  Ping::pingecho(host, 5))
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pp.rb
deleted file mode 100644
index 8080d87..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pp.rb
+++ /dev/null
@@ -1,647 +0,0 @@
-# == Pretty-printer for Ruby objects.
-# 
-# = Which seems better?
-# 
-# non-pretty-printed output by #p is:
-#   #<PP:0x81fedf0 @genspace=#<Proc:0x81feda0>, @group_queue=#<PrettyPrint::GroupQueue:0x81fed3c @queue=[[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], []]>, @buffer=[], @newline="\n", @group_stack=[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], @buffer_width=0, @indent=0, @maxwidth=79, @output_width=2, @output=#<IO:0x8114ee4>>
-# 
-# pretty-printed output by #pp is:
-#   #<PP:0x81fedf0
-#    @buffer=[],
-#    @buffer_width=0,
-#    @genspace=#<Proc:0x81feda0>,
-#    @group_queue=
-#     #<PrettyPrint::GroupQueue:0x81fed3c
-#      @queue=
-#       [[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
-#        []]>,
-#    @group_stack=
-#     [#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
-#    @indent=0,
-#    @maxwidth=79,
-#    @newline="\n",
-#    @output=#<IO:0x8114ee4>,
-#    @output_width=2>
-# 
-# I like the latter.  If you do too, this library is for you.
-# 
-# = Usage
-# 
-#   pp(obj)
-#
-# output +obj+ to +$>+ in pretty printed format.
-# 
-# It returns +nil+.
-# 
-# = Output Customization
-# To define your customized pretty printing function for your classes,
-# redefine a method #pretty_print(+pp+) in the class.
-# It takes an argument +pp+ which is an instance of the class PP.
-# The method should use PP#text, PP#breakable, PP#nest, PP#group and
-# PP#pp to print the object.
-#
-# = Author
-# Tanaka Akira <akr at m17n.org>
-
-require 'prettyprint'
-
-module Kernel
-  # returns a pretty printed object as a string.
-  def pretty_inspect
-    PP.pp(self, '')
-  end
-
-  private
-  # prints arguments in pretty form.
-  #
-  # pp returns nil.
-  def pp(*objs) # :doc:
-    objs.each {|obj|
-      PP.pp(obj)
-    }
-    nil
-  end
-  module_function :pp
-end
-
-class PP < PrettyPrint
-  # Outputs +obj+ to +out+ in pretty printed format of
-  # +width+ columns in width.
-  # 
-  # If +out+ is omitted, +$>+ is assumed.
-  # If +width+ is omitted, 79 is assumed.
-  # 
-  # PP.pp returns +out+.
-  def PP.pp(obj, out=$>, width=79)
-    q = PP.new(out, width)
-    q.guard_inspect_key {q.pp obj}
-    q.flush
-    #$pp = q
-    out << "\n"
-  end
-
-  # Outputs +obj+ to +out+ like PP.pp but with no indent and
-  # newline.
-  # 
-  # PP.singleline_pp returns +out+.
-  def PP.singleline_pp(obj, out=$>)
-    q = SingleLine.new(out)
-    q.guard_inspect_key {q.pp obj}
-    q.flush
-    out
-  end
-
-  # :stopdoc:
-  def PP.mcall(obj, mod, meth, *args, &block)
-    mod.instance_method(meth).bind(obj).call(*args, &block)
-  end
-  # :startdoc:
-
-  @sharing_detection = false
-  class << self
-    # Returns the sharing detection flag as a boolean value.
-    # It is false by default.
-    attr_accessor :sharing_detection
-  end
-
-  module PPMethods
-    InspectKey = :__inspect_key__
-
-    def guard_inspect_key
-      if Thread.current[InspectKey] == nil
-        Thread.current[InspectKey] = []
-      end
-
-      save = Thread.current[InspectKey]
-
-      begin
-        Thread.current[InspectKey] = []
-        yield
-      ensure
-        Thread.current[InspectKey] = save
-      end
-    end
-
-    # Adds +obj+ to the pretty printing buffer
-    # using Object#pretty_print or Object#pretty_print_cycle.
-    # 
-    # Object#pretty_print_cycle is used when +obj+ is already
-    # printed, a.k.a the object reference chain has a cycle.
-    def pp(obj)
-      id = obj.__id__
-
-      if Thread.current[InspectKey].include? id
-        group {obj.pretty_print_cycle self}
-        return
-      end
-
-      begin
-        Thread.current[InspectKey] << id
-        group {obj.pretty_print self}
-      ensure
-        Thread.current[InspectKey].pop unless PP.sharing_detection
-      end
-    end
-
-    # A convenience method which is same as follows:
-    # 
-    #   group(1, '#<' + obj.class.name, '>') { ... }
-    def object_group(obj, &block) # :yield:
-      group(1, '#<' + obj.class.name, '>', &block)
-    end
-
-    def object_address_group(obj, &block)
-      id = "%x" % (obj.__id__ * 2)
-      id.sub!(/\Af(?=[[:xdigit:]]{2}+\z)/, '') if id.sub!(/\A\.\./, '')
-      group(1, "\#<#{obj.class}:0x#{id}", '>', &block)
-    end
-
-    # A convenience method which is same as follows:
-    # 
-    #   text ','
-    #   breakable
-    def comma_breakable
-      text ','
-      breakable
-    end
-
-    # Adds a separated list.
-    # The list is separated by comma with breakable space, by default.
-    # 
-    # #seplist iterates the +list+ using +iter_method+.
-    # It yields each object to the block given for #seplist.
-    # The procedure +separator_proc+ is called between each yields.
-    # 
-    # If the iteration is zero times, +separator_proc+ is not called at all.
-    # 
-    # If +separator_proc+ is nil or not given,
-    # +lambda { comma_breakable }+ is used.
-    # If +iter_method+ is not given, :each is used.
-    # 
-    # For example, following 3 code fragments has similar effect.
-    # 
-    #   q.seplist([1,2,3]) {|v| xxx v }
-    # 
-    #   q.seplist([1,2,3], lambda { comma_breakable }, :each) {|v| xxx v }
-    # 
-    #   xxx 1
-    #   q.comma_breakable
-    #   xxx 2
-    #   q.comma_breakable
-    #   xxx 3
-    def seplist(list, sep=nil, iter_method=:each) # :yield: element
-      sep ||= lambda { comma_breakable }
-      first = true
-      list.__send__(iter_method) {|*v|
-        if first
-          first = false
-        else
-          sep.call
-        end
-        yield(*v)
-      }
-    end
-
-    def pp_object(obj)
-      object_address_group(obj) {
-        seplist(obj.pretty_print_instance_variables, lambda { text ',' }) {|v|
-          breakable
-          v = v.to_s if Symbol === v
-          text v
-          text '='
-          group(1) {
-            breakable ''
-            pp(obj.instance_eval(v))
-          }
-        }
-      }
-    end
-
-    def pp_hash(obj)
-      group(1, '{', '}') {
-        seplist(obj, nil, :each_pair) {|k, v|
-          group {
-            pp k
-            text '=>'
-            group(1) {
-              breakable ''
-              pp v
-            }
-          }
-        }
-      }
-    end
-  end
-
-  include PPMethods
-
-  class SingleLine < PrettyPrint::SingleLine
-    include PPMethods
-  end
-
-  module ObjectMixin
-    # 1. specific pretty_print
-    # 2. specific inspect
-    # 3. specific to_s if instance variable is empty
-    # 4. generic pretty_print
-
-    # A default pretty printing method for general objects.
-    # It calls #pretty_print_instance_variables to list instance variables.
-    # 
-    # If +self+ has a customized (redefined) #inspect method,
-    # the result of self.inspect is used but it obviously has no
-    # line break hints.
-    # 
-    # This module provides predefined #pretty_print methods for some of
-    # the most commonly used built-in classes for convenience.
-    def pretty_print(q)
-      if /\(Kernel\)#/ !~ method(:inspect).inspect
-        q.text self.inspect
-      elsif /\(Kernel\)#/ !~ method(:to_s).inspect && instance_variables.empty?
-        q.text self.to_s
-      else
-        q.pp_object(self)
-      end
-    end
-
-    # A default pretty printing method for general objects that are
-    # detected as part of a cycle.
-    def pretty_print_cycle(q)
-      q.object_address_group(self) {
-        q.breakable
-        q.text '...'
-      }
-    end
-
-    # Returns a sorted array of instance variable names.
-    # 
-    # This method should return an array of names of instance variables as symbols or strings as:
-    # +[:@a, :@b]+.
-    def pretty_print_instance_variables
-      instance_variables.sort
-    end
-
-    # Is #inspect implementation using #pretty_print.
-    # If you implement #pretty_print, it can be used as follows.
-    # 
-    #   alias inspect pretty_print_inspect
-    #
-    # However, doing this requires that every class that #inspect is called on
-    # implement #pretty_print, or a RuntimeError will be raised.
-    def pretty_print_inspect
-      if /\(PP::ObjectMixin\)#/ =~ method(:pretty_print).inspect
-        raise "pretty_print is not overridden for #{self.class}"
-      end
-      PP.singleline_pp(self, '')
-    end
-  end
-end
-
-class Array
-  def pretty_print(q)
-    q.group(1, '[', ']') {
-      q.seplist(self) {|v|
-        q.pp v
-      }
-    }
-  end
-
-  def pretty_print_cycle(q)
-    q.text(empty? ? '[]' : '[...]')
-  end
-end
-
-class Hash
-  def pretty_print(q)
-    q.pp_hash self
-  end
-
-  def pretty_print_cycle(q)
-    q.text(empty? ? '{}' : '{...}')
-  end
-end
-
-class << ENV
-  def pretty_print(q)
-    q.pp_hash self
-  end
-end
-
-class Struct
-  def pretty_print(q)
-    q.group(1, '#<struct ' + PP.mcall(self, Kernel, :class).name, '>') {
-      q.seplist(PP.mcall(self, Struct, :members), lambda { q.text "," }) {|member|
-        q.breakable
-        q.text member.to_s
-        q.text '='
-        q.group(1) {
-          q.breakable ''
-          q.pp self[member]
-        }
-      }
-    }
-  end
-
-  def pretty_print_cycle(q)
-    q.text sprintf("#<struct %s:...>", PP.mcall(self, Kernel, :class).name)
-  end
-end
-
-class Range
-  def pretty_print(q)
-    q.pp self.begin
-    q.breakable ''
-    q.text(self.exclude_end? ? '...' : '..')
-    q.breakable ''
-    q.pp self.end
-  end
-end
-
-class File
-  class Stat
-    def pretty_print(q)
-      require 'etc.so'
-      q.object_group(self) {
-        q.breakable
-        q.text sprintf("dev=0x%x", self.dev); q.comma_breakable
-        q.text "ino="; q.pp self.ino; q.comma_breakable
-        q.group {
-          m = self.mode
-          q.text sprintf("mode=0%o", m)
-          q.breakable
-          q.text sprintf("(%s %c%c%c%c%c%c%c%c%c)",
-            self.ftype,
-            (m & 0400 == 0 ? ?- : ?r),
-            (m & 0200 == 0 ? ?- : ?w),
-            (m & 0100 == 0 ? (m & 04000 == 0 ? ?- : ?S) :
-                             (m & 04000 == 0 ? ?x : ?s)),
-            (m & 0040 == 0 ? ?- : ?r),
-            (m & 0020 == 0 ? ?- : ?w),
-            (m & 0010 == 0 ? (m & 02000 == 0 ? ?- : ?S) :
-                             (m & 02000 == 0 ? ?x : ?s)),
-            (m & 0004 == 0 ? ?- : ?r),
-            (m & 0002 == 0 ? ?- : ?w),
-            (m & 0001 == 0 ? (m & 01000 == 0 ? ?- : ?T) :
-                             (m & 01000 == 0 ? ?x : ?t)))
-        }
-        q.comma_breakable
-        q.text "nlink="; q.pp self.nlink; q.comma_breakable
-        q.group {
-          q.text "uid="; q.pp self.uid
-          begin
-            pw = Etc.getpwuid(self.uid)
-          rescue ArgumentError
-          end
-          if pw
-            q.breakable; q.text "(#{pw.name})"
-          end
-        }
-        q.comma_breakable
-        q.group {
-          q.text "gid="; q.pp self.gid
-          begin
-            gr = Etc.getgrgid(self.gid)
-          rescue ArgumentError
-          end
-          if gr
-            q.breakable; q.text "(#{gr.name})"
-          end
-        }
-        q.comma_breakable
-        q.group {
-          q.text sprintf("rdev=0x%x", self.rdev)
-          q.breakable
-          q.text sprintf('(%d, %d)', self.rdev_major, self.rdev_minor)
-        }
-        q.comma_breakable
-        q.text "size="; q.pp self.size; q.comma_breakable
-        q.text "blksize="; q.pp self.blksize; q.comma_breakable
-        q.text "blocks="; q.pp self.blocks; q.comma_breakable
-        q.group {
-          t = self.atime
-          q.text "atime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-        q.comma_breakable
-        q.group {
-          t = self.mtime
-          q.text "mtime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-        q.comma_breakable
-        q.group {
-          t = self.ctime
-          q.text "ctime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-      }
-    end
-  end
-end
-
-class MatchData
-  def pretty_print(q)
-    q.object_group(self) {
-      q.breakable
-      q.seplist(1..self.size, lambda { q.breakable }) {|i|
-        q.pp self[i-1]
-      }
-    }
-  end
-end
-
-class Object
-  include PP::ObjectMixin
-end
-
-[Numeric, Symbol, FalseClass, TrueClass, NilClass, Module].each {|c|
-  c.class_eval {
-    def pretty_print_cycle(q)
-      q.text inspect
-    end
-  }
-}
-
-[Numeric, FalseClass, TrueClass, Module].each {|c|
-  c.class_eval {
-    def pretty_print(q)
-      q.text inspect
-    end
-  }
-}
-
-# :enddoc:
-if __FILE__ == $0
-  require 'test/unit'
-
-  class PPTest < Test::Unit::TestCase
-    def test_list0123_12
-      assert_equal("[0, 1, 2, 3]\n", PP.pp([0,1,2,3], '', 12))
-    end
-
-    def test_list0123_11
-      assert_equal("[0,\n 1,\n 2,\n 3]\n", PP.pp([0,1,2,3], '', 11))
-    end
-
-    OverriddenStruct = Struct.new("OverriddenStruct", :members, :class)
-    def test_struct_override_members # [ruby-core:7865]
-      a = OverriddenStruct.new(1,2)
-      assert_equal("#<struct Struct::OverriddenStruct members=1, class=2>\n", PP.pp(a, ''))
-    end
-  end
-
-  class HasInspect
-    def initialize(a)
-      @a = a
-    end
-
-    def inspect
-      return "<inspect:#{@a.inspect}>"
-    end
-  end
-
-  class HasPrettyPrint
-    def initialize(a)
-      @a = a
-    end
-
-    def pretty_print(q)
-      q.text "<pretty_print:"
-      q.pp @a
-      q.text ">"
-    end
-  end
-
-  class HasBoth
-    def initialize(a)
-      @a = a
-    end
-
-    def inspect
-      return "<inspect:#{@a.inspect}>"
-    end
-
-    def pretty_print(q)
-      q.text "<pretty_print:"
-      q.pp @a
-      q.text ">"
-    end
-  end
-
-  class PrettyPrintInspect < HasPrettyPrint
-    alias inspect pretty_print_inspect
-  end
-
-  class PrettyPrintInspectWithoutPrettyPrint
-    alias inspect pretty_print_inspect
-  end
-
-  class PPInspectTest < Test::Unit::TestCase
-    def test_hasinspect
-      a = HasInspect.new(1)
-      assert_equal("<inspect:1>\n", PP.pp(a, ''))
-    end
-
-    def test_hasprettyprint
-      a = HasPrettyPrint.new(1)
-      assert_equal("<pretty_print:1>\n", PP.pp(a, ''))
-    end
-
-    def test_hasboth
-      a = HasBoth.new(1)
-      assert_equal("<pretty_print:1>\n", PP.pp(a, ''))
-    end
-
-    def test_pretty_print_inspect
-      a = PrettyPrintInspect.new(1)
-      assert_equal("<pretty_print:1>", a.inspect)
-      a = PrettyPrintInspectWithoutPrettyPrint.new
-      assert_raise(RuntimeError) { a.inspect }
-    end
-
-    def test_proc
-      a = proc {1}
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_to_s_with_iv
-      a = Object.new
-      def a.to_s() "aaa" end
-      a.instance_eval { @a = nil }
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-      assert_match(/\A#<Object.*>\n\z/m, result)
-      a = 1.0
-      a.instance_eval { @a = nil }
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-    end
-    
-    def test_to_s_without_iv
-      a = Object.new
-      def a.to_s() "aaa" end
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-      assert_equal("aaa\n", result)
-    end
-  end
-
-  class PPCycleTest < Test::Unit::TestCase
-    def test_array
-      a = []
-      a << a
-      assert_equal("[[...]]\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_hash
-      a = {}
-      a[0] = a
-      assert_equal("{0=>{...}}\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    S = Struct.new("S", :a, :b)
-    def test_struct
-      a = S.new(1,2)
-      a.b = a
-      assert_equal("#<struct Struct::S a=1, b=#<struct Struct::S:...>>\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_object
-      a = Object.new
-      a.instance_eval {@a = a}
-      assert_equal(a.inspect + "\n", PP.pp(a, ''))
-    end
-
-    def test_anonymous
-      a = Class.new.new
-      assert_equal(a.inspect + "\n", PP.pp(a, ''))
-    end
-
-    def test_withinspect
-      a = []
-      a << HasInspect.new(a)
-      assert_equal("[<inspect:[...]>]\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_share_nil
-      begin
-        PP.sharing_detection = true
-        a = [nil, nil]
-        assert_equal("[nil, nil]\n", PP.pp(a, ''))
-      ensure
-        PP.sharing_detection = false
-      end
-    end
-  end
-
-  class PPSingleLineTest < Test::Unit::TestCase
-    def test_hash
-      assert_equal("{1=>1}", PP.singleline_pp({ 1 => 1}, '')) # [ruby-core:02699]
-      assert_equal("[1#{', 1'*99}]", PP.singleline_pp([1]*100, ''))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/prettyprint.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/prettyprint.rb
deleted file mode 100644
index 315c422..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/prettyprint.rb
+++ /dev/null
@@ -1,896 +0,0 @@
-# $Id$
-
-# This class implements a pretty printing algorithm. It finds line breaks and
-# nice indentations for grouped structure.
-# 
-# By default, the class assumes that primitive elements are strings and each
-# byte in the strings have single column in width. But it can be used for
-# other situations by giving suitable arguments for some methods:
-# * newline object and space generation block for PrettyPrint.new
-# * optional width argument for PrettyPrint#text
-# * PrettyPrint#breakable
-#
-# There are several candidate uses:
-# * text formatting using proportional fonts
-# * multibyte characters which has columns different to number of bytes
-# * non-string formatting
-#
-# == Bugs
-# * Box based formatting?
-# * Other (better) model/algorithm?
-# 
-# == References
-# Christian Lindig, Strictly Pretty, March 2000,
-# http://www.st.cs.uni-sb.de/~lindig/papers/#pretty
-# 
-# Philip Wadler, A prettier printer, March 1998,
-# http://homepages.inf.ed.ac.uk/wadler/topics/language-design.html#prettier
-# 
-# == Author
-# Tanaka Akira <akr at m17n.org>
-# 
-class PrettyPrint
-
-  # This is a convenience method which is same as follows:
-  # 
-  #   begin
-  #     q = PrettyPrint.new(output, maxwidth, newline, &genspace)
-  #     ...
-  #     q.flush
-  #     output
-  #   end
-  # 
-  def PrettyPrint.format(output='', maxwidth=79, newline="\n", genspace=lambda {|n| ' ' * n})
-    q = PrettyPrint.new(output, maxwidth, newline, &genspace)
-    yield q
-    q.flush
-    output
-  end
-
-  # This is similar to PrettyPrint::format but the result has no breaks.
-  #
-  # +maxwidth+, +newline+ and +genspace+ are ignored.
-  #
-  # The invocation of +breakable+ in the block doesn't break a line and is
-  # treated as just an invocation of +text+.
-  #
-  def PrettyPrint.singleline_format(output='', maxwidth=nil, newline=nil, genspace=nil)
-    q = SingleLine.new(output)
-    yield q
-    output
-  end
-
-  # Creates a buffer for pretty printing.
-  #
-  # +output+ is an output target. If it is not specified, '' is assumed. It
-  # should have a << method which accepts the first argument +obj+ of
-  # PrettyPrint#text, the first argument +sep+ of PrettyPrint#breakable, the
-  # first argument +newline+ of PrettyPrint.new, and the result of a given
-  # block for PrettyPrint.new.
-  #
-  # +maxwidth+ specifies maximum line length. If it is not specified, 79 is
-  # assumed. However actual outputs may overflow +maxwidth+ if long
-  # non-breakable texts are provided.
-  #
-  # +newline+ is used for line breaks. "\n" is used if it is not specified.
-  #
-  # The block is used to generate spaces. {|width| ' ' * width} is used if it
-  # is not given.
-  #
-  def initialize(output='', maxwidth=79, newline="\n", &genspace)
-    @output = output
-    @maxwidth = maxwidth
-    @newline = newline
-    @genspace = genspace || lambda {|n| ' ' * n}
-
-    @output_width = 0
-    @buffer_width = 0
-    @buffer = []
-
-    root_group = Group.new(0)
-    @group_stack = [root_group]
-    @group_queue = GroupQueue.new(root_group)
-    @indent = 0
-  end
-  attr_reader :output, :maxwidth, :newline, :genspace
-  attr_reader :indent, :group_queue
-
-  def current_group
-    @group_stack.last
-  end
-
-  # first? is a predicate to test the call is a first call to first? with
-  # current group.
-  #
-  # It is useful to format comma separated values as:
-  #
-  #   q.group(1, '[', ']') {
-  #     xxx.each {|yyy|
-  #       unless q.first?
-  #         q.text ','
-  #         q.breakable
-  #       end
-  #       ... pretty printing yyy ...
-  #     }
-  #   }
-  #
-  # first? is obsoleted in 1.8.2.
-  #
-  def first?
-    warn "PrettyPrint#first? is obsoleted at 1.8.2."
-    current_group.first?
-  end
-
-  def break_outmost_groups
-    while @maxwidth < @output_width + @buffer_width
-      return unless group = @group_queue.deq
-      until group.breakables.empty?
-        data = @buffer.shift
-        @output_width = data.output(@output, @output_width)
-        @buffer_width -= data.width
-      end
-      while !@buffer.empty? && Text === @buffer.first
-        text = @buffer.shift
-        @output_width = text.output(@output, @output_width)
-        @buffer_width -= text.width
-      end
-    end
-  end
-
-  # This adds +obj+ as a text of +width+ columns in width.
-  #
-  # If +width+ is not specified, obj.length is used.
-  #
-  def text(obj, width=obj.length)
-    if @buffer.empty?
-      @output << obj
-      @output_width += width
-    else
-      text = @buffer.last
-      unless Text === text
-        text = Text.new
-        @buffer << text
-      end
-      text.add(obj, width)
-      @buffer_width += width
-      break_outmost_groups
-    end
-  end
-
-  def fill_breakable(sep=' ', width=sep.length)
-    group { breakable sep, width }
-  end
-
-  # This tells "you can break a line here if necessary", and a +width+\-column
-  # text +sep+ is inserted if a line is not broken at the point.
-  #
-  # If +sep+ is not specified, " " is used.
-  #
-  # If +width+ is not specified, +sep.length+ is used. You will have to
-  # specify this when +sep+ is a multibyte character, for example.
-  #
-  def breakable(sep=' ', width=sep.length)
-    group = @group_stack.last
-    if group.break?
-      flush
-      @output << @newline
-      @output << @genspace.call(@indent)
-      @output_width = @indent
-      @buffer_width = 0
-    else
-      @buffer << Breakable.new(sep, width, self)
-      @buffer_width += width
-      break_outmost_groups
-    end
-  end
-
-  # Groups line break hints added in the block. The line break hints are all
-  # to be used or not.
-  #
-  # If +indent+ is specified, the method call is regarded as nested by
-  # nest(indent) { ... }.
-  #
-  # If +open_obj+ is specified, <tt>text open_obj, open_width</tt> is called
-  # before grouping. If +close_obj+ is specified, <tt>text close_obj,
-  # close_width</tt> is called after grouping.
-  #
-  def group(indent=0, open_obj='', close_obj='', open_width=open_obj.length, close_width=close_obj.length)
-    text open_obj, open_width
-    group_sub {
-      nest(indent) {
-        yield
-      }
-    }
-    text close_obj, close_width
-  end
-
-  def group_sub
-    group = Group.new(@group_stack.last.depth + 1)
-    @group_stack.push group
-    @group_queue.enq group
-    begin
-      yield
-    ensure
-      @group_stack.pop
-      if group.breakables.empty?
-        @group_queue.delete group
-      end
-    end
-  end
-
-  # Increases left margin after newline with +indent+ for line breaks added in
-  # the block.
-  #
-  def nest(indent)
-    @indent += indent
-    begin
-      yield
-    ensure
-      @indent -= indent
-    end
-  end
-
-  # outputs buffered data.
-  #
-  def flush
-    @buffer.each {|data|
-      @output_width = data.output(@output, @output_width)
-    }
-    @buffer.clear
-    @buffer_width = 0
-  end
-
-  class Text
-    def initialize
-      @objs = []
-      @width = 0
-    end
-    attr_reader :width
-
-    def output(out, output_width)
-      @objs.each {|obj| out << obj}
-      output_width + @width
-    end
-
-    def add(obj, width)
-      @objs << obj
-      @width += width
-    end
-  end
-
-  class Breakable
-    def initialize(sep, width, q)
-      @obj = sep
-      @width = width
-      @pp = q
-      @indent = q.indent
-      @group = q.current_group
-      @group.breakables.push self
-    end
-    attr_reader :obj, :width, :indent
-
-    def output(out, output_width)
-      @group.breakables.shift
-      if @group.break?
-        out << @pp.newline
-        out << @pp.genspace.call(@indent)
-        @indent
-      else
-        @pp.group_queue.delete @group if @group.breakables.empty?
-        out << @obj
-        output_width + @width
-      end
-    end
-  end
-
-  class Group
-    def initialize(depth)
-      @depth = depth
-      @breakables = []
-      @break = false
-    end
-    attr_reader :depth, :breakables
-
-    def break
-      @break = true
-    end
-
-    def break?
-      @break
-    end
-
-    def first?
-      if defined? @first
-        false
-      else
-        @first = false
-        true
-      end
-    end
-  end
-
-  class GroupQueue
-    def initialize(*groups)
-      @queue = []
-      groups.each {|g| enq g}
-    end
-
-    def enq(group)
-      depth = group.depth
-      @queue << [] until depth < @queue.length
-      @queue[depth] << group
-    end
-
-    def deq
-      @queue.each {|gs|
-        (gs.length-1).downto(0) {|i|
-          unless gs[i].breakables.empty?
-            group = gs.slice!(i, 1).first
-            group.break
-            return group
-          end
-        }
-        gs.each {|group| group.break}
-        gs.clear
-      }
-      return nil
-    end
-
-    def delete(group)
-      @queue[group.depth].delete(group)
-    end
-  end
-
-  class SingleLine
-    def initialize(output, maxwidth=nil, newline=nil)
-      @output = output
-      @first = [true]
-    end
-
-    def text(obj, width=nil)
-      @output << obj
-    end
-
-    def breakable(sep=' ', width=nil)
-      @output << sep
-    end
-
-    def nest(indent)
-      yield
-    end
-
-    def group(indent=nil, open_obj='', close_obj='', open_width=nil, close_width=nil)
-      @first.push true
-      @output << open_obj
-      yield
-      @output << close_obj
-      @first.pop
-    end
-
-    def flush
-    end
-
-    def first?
-      result = @first[-1]
-      @first[-1] = false
-      result
-    end
-  end
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class WadlerExample < Test::Unit::TestCase # :nodoc:
-    def setup
-      @tree = Tree.new("aaaa", Tree.new("bbbbb", Tree.new("ccc"),
-                                                 Tree.new("dd")),
-                               Tree.new("eee"),
-                               Tree.new("ffff", Tree.new("gg"),
-                                                Tree.new("hhh"),
-                                                Tree.new("ii")))
-    end
-
-    def hello(width)
-      PrettyPrint.format('', width) {|hello|
-        hello.group {
-          hello.group {
-            hello.group {
-              hello.group {
-                hello.text 'hello'
-                hello.breakable; hello.text 'a'
-              }
-              hello.breakable; hello.text 'b'
-            }
-            hello.breakable; hello.text 'c'
-          }
-          hello.breakable; hello.text 'd'
-        }
-      }
-    end
-
-    def test_hello_00_06
-      expected = <<'End'.chomp
-hello
-a
-b
-c
-d
-End
-      assert_equal(expected, hello(0))
-      assert_equal(expected, hello(6))
-    end
-
-    def test_hello_07_08
-      expected = <<'End'.chomp
-hello a
-b
-c
-d
-End
-      assert_equal(expected, hello(7))
-      assert_equal(expected, hello(8))
-    end
-
-    def test_hello_09_10
-      expected = <<'End'.chomp
-hello a b
-c
-d
-End
-      out = hello(9); assert_equal(expected, out)
-      out = hello(10); assert_equal(expected, out)
-    end
-
-    def test_hello_11_12
-      expected = <<'End'.chomp
-hello a b c
-d
-End
-      assert_equal(expected, hello(11))
-      assert_equal(expected, hello(12))
-    end
-
-    def test_hello_13
-      expected = <<'End'.chomp
-hello a b c d
-End
-      assert_equal(expected, hello(13))
-    end
-
-    def tree(width)
-      PrettyPrint.format('', width) {|q| @tree.show(q)}
-    end
-
-    def test_tree_00_19
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc,
-           dd],
-     eee,
-     ffff[gg,
-          hhh,
-          ii]]
-End
-      assert_equal(expected, tree(0))
-      assert_equal(expected, tree(19))
-    end
-
-    def test_tree_20_22
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc, dd],
-     eee,
-     ffff[gg,
-          hhh,
-          ii]]
-End
-      assert_equal(expected, tree(20))
-      assert_equal(expected, tree(22))
-    end
-
-    def test_tree_23_43
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc, dd],
-     eee,
-     ffff[gg, hhh, ii]]
-End
-      assert_equal(expected, tree(23))
-      assert_equal(expected, tree(43))
-    end
-
-    def test_tree_44
-      assert_equal(<<'End'.chomp, tree(44))
-aaaa[bbbbb[ccc, dd], eee, ffff[gg, hhh, ii]]
-End
-    end
-
-    def tree_alt(width)
-      PrettyPrint.format('', width) {|q| @tree.altshow(q)}
-    end
-
-    def test_tree_alt_00_18
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[
-    ccc,
-    dd
-  ],
-  eee,
-  ffff[
-    gg,
-    hhh,
-    ii
-  ]
-]
-End
-      assert_equal(expected, tree_alt(0))
-      assert_equal(expected, tree_alt(18))
-    end
-
-    def test_tree_alt_19_20
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[ ccc, dd ],
-  eee,
-  ffff[
-    gg,
-    hhh,
-    ii
-  ]
-]
-End
-      assert_equal(expected, tree_alt(19))
-      assert_equal(expected, tree_alt(20))
-    end
-
-    def test_tree_alt_20_49
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[ ccc, dd ],
-  eee,
-  ffff[ gg, hhh, ii ]
-]
-End
-      assert_equal(expected, tree_alt(21))
-      assert_equal(expected, tree_alt(49))
-    end
-
-    def test_tree_alt_50
-      expected = <<'End'.chomp
-aaaa[ bbbbb[ ccc, dd ], eee, ffff[ gg, hhh, ii ] ]
-End
-      assert_equal(expected, tree_alt(50))
-    end
-
-    class Tree # :nodoc:
-      def initialize(string, *children)
-        @string = string
-        @children = children
-      end
-
-      def show(q)
-        q.group {
-          q.text @string
-          q.nest(@string.length) {
-            unless @children.empty?
-              q.text '['
-              q.nest(1) {
-                first = true
-                @children.each {|t|
-                  if first
-                    first = false
-                  else
-                    q.text ','
-                    q.breakable
-                  end
-                  t.show(q)
-                }
-              }
-              q.text ']'
-            end
-          }
-        }
-      end
-
-      def altshow(q)
-        q.group {
-          q.text @string
-          unless @children.empty?
-            q.text '['
-            q.nest(2) {
-              q.breakable
-              first = true
-              @children.each {|t|
-                if first
-                  first = false
-                else
-                  q.text ','
-                  q.breakable
-                end
-                t.altshow(q)
-              }
-            }
-            q.breakable
-            q.text ']'
-          end
-        }
-      end
-
-    end
-  end
-
-  class StrictPrettyExample < Test::Unit::TestCase # :nodoc:
-    def prog(width)
-      PrettyPrint.format('', width) {|q|
-        q.group {
-          q.group {q.nest(2) {
-                       q.text "if"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "=="}
-                           q.breakable; q.text "b"}}}}
-          q.breakable
-          q.group {q.nest(2) {
-                       q.text "then"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "<<"}
-                           q.breakable; q.text "2"}}}}
-          q.breakable
-          q.group {q.nest(2) {
-                       q.text "else"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "+"}
-                           q.breakable; q.text "b"}}}}}
-      }
-    end
-
-    def test_00_04
-      expected = <<'End'.chomp
-if
-  a
-    ==
-    b
-then
-  a
-    <<
-    2
-else
-  a
-    +
-    b
-End
-      assert_equal(expected, prog(0))
-      assert_equal(expected, prog(4))
-    end
-
-    def test_05
-      expected = <<'End'.chomp
-if
-  a
-    ==
-    b
-then
-  a
-    <<
-    2
-else
-  a +
-    b
-End
-      assert_equal(expected, prog(5))
-    end
-
-    def test_06
-      expected = <<'End'.chomp
-if
-  a ==
-    b
-then
-  a <<
-    2
-else
-  a +
-    b
-End
-      assert_equal(expected, prog(6))
-    end
-
-    def test_07
-      expected = <<'End'.chomp
-if
-  a ==
-    b
-then
-  a <<
-    2
-else
-  a + b
-End
-      assert_equal(expected, prog(7))
-    end
-
-    def test_08
-      expected = <<'End'.chomp
-if
-  a == b
-then
-  a << 2
-else
-  a + b
-End
-      assert_equal(expected, prog(8))
-    end
-
-    def test_09
-      expected = <<'End'.chomp
-if a == b
-then
-  a << 2
-else
-  a + b
-End
-      assert_equal(expected, prog(9))
-    end
-
-    def test_10
-      expected = <<'End'.chomp
-if a == b
-then
-  a << 2
-else a + b
-End
-      assert_equal(expected, prog(10))
-    end
-
-    def test_11_31
-      expected = <<'End'.chomp
-if a == b
-then a << 2
-else a + b
-End
-      assert_equal(expected, prog(11))
-      assert_equal(expected, prog(15))
-      assert_equal(expected, prog(31))
-    end
-
-    def test_32
-      expected = <<'End'.chomp
-if a == b then a << 2 else a + b
-End
-      assert_equal(expected, prog(32))
-    end
-
-  end
-
-  class TailGroup < Test::Unit::TestCase # :nodoc:
-    def test_1
-      out = PrettyPrint.format('', 10) {|q|
-        q.group {
-          q.group {
-            q.text "abc"
-            q.breakable
-            q.text "def"
-          }
-          q.group {
-            q.text "ghi"
-            q.breakable
-            q.text "jkl"
-          }
-        }
-      }
-      assert_equal("abc defghi\njkl", out)
-    end
-  end
-
-  class NonString < Test::Unit::TestCase # :nodoc:
-    def format(width)
-      PrettyPrint.format([], width, 'newline', lambda {|n| "#{n} spaces"}) {|q|
-        q.text(3, 3)
-        q.breakable(1, 1)
-        q.text(3, 3)
-      }
-    end
-
-    def test_6
-      assert_equal([3, "newline", "0 spaces", 3], format(6))
-    end
-
-    def test_7
-      assert_equal([3, 1, 3], format(7))
-    end
-
-  end
-
-  class Fill < Test::Unit::TestCase # :nodoc:
-    def format(width)
-      PrettyPrint.format('', width) {|q|
-        q.group {
-          q.text 'abc'
-          q.fill_breakable
-          q.text 'def'
-          q.fill_breakable
-          q.text 'ghi'
-          q.fill_breakable
-          q.text 'jkl'
-          q.fill_breakable
-          q.text 'mno'
-          q.fill_breakable
-          q.text 'pqr'
-          q.fill_breakable
-          q.text 'stu'
-        }
-      }
-    end
-
-    def test_00_06
-      expected = <<'End'.chomp
-abc
-def
-ghi
-jkl
-mno
-pqr
-stu
-End
-      assert_equal(expected, format(0))
-      assert_equal(expected, format(6))
-    end
-
-    def test_07_10
-      expected = <<'End'.chomp
-abc def
-ghi jkl
-mno pqr
-stu
-End
-      assert_equal(expected, format(7))
-      assert_equal(expected, format(10))
-    end
-
-    def test_11_14
-      expected = <<'End'.chomp
-abc def ghi
-jkl mno pqr
-stu
-End
-      assert_equal(expected, format(11))
-      assert_equal(expected, format(14))
-    end
-
-    def test_15_18
-      expected = <<'End'.chomp
-abc def ghi jkl
-mno pqr stu
-End
-      assert_equal(expected, format(15))
-      assert_equal(expected, format(18))
-    end
-
-    def test_19_22
-      expected = <<'End'.chomp
-abc def ghi jkl mno
-pqr stu
-End
-      assert_equal(expected, format(19))
-      assert_equal(expected, format(22))
-    end
-
-    def test_23_26
-      expected = <<'End'.chomp
-abc def ghi jkl mno pqr
-stu
-End
-      assert_equal(expected, format(23))
-      assert_equal(expected, format(26))
-    end
-
-    def test_27
-      expected = <<'End'.chomp
-abc def ghi jkl mno pqr stu
-End
-      assert_equal(expected, format(27))
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profile.rb
deleted file mode 100644
index 104cb20..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profile.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require 'profiler'
-
-END {
-  Profiler__::print_profile(STDERR)
-}
-Profiler__::start_profile
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profiler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profiler.rb
deleted file mode 100644
index 9762fa1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/profiler.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-module Profiler__
-  # internal values
-  @@start = @@stack = @@map = nil
-  PROFILE_PROC = proc{|event, file, line, id, binding, klass|
-    case event
-    when "call", "c-call"
-      now = Process.times[0]
-      @@stack.push [now, 0.0]
-    when "return", "c-return"
-      now = Process.times[0]
-      key = [klass, id]
-      if tick = @@stack.pop
-        data = (@@map[key] ||= [0, 0.0, 0.0, key])
-        data[0] += 1
-        cost = now - tick[0]
-        data[1] += cost
-        data[2] += cost - tick[1]
-        @@stack[-1][1] += cost if @@stack[-1]
-      end
-    end
-  }
-module_function
-  def start_profile
-    @@start = Process.times[0]
-    @@stack = []
-    @@map = {}
-    set_trace_func PROFILE_PROC
-  end
-  def stop_profile
-    set_trace_func nil
-  end
-  def print_profile(f)
-    stop_profile
-    total = Process.times[0] - @@start
-    if total == 0 then total = 0.01 end
-    data = @@map.values
-    data.sort!{|a,b| b[2] <=> a[2]}
-    sum = 0
-    f.printf "  %%   cumulative   self              self     total\n"
-    f.printf " time   seconds   seconds    calls  ms/call  ms/call  name\n"
-    for d in data
-      sum += d[2]
-      f.printf "%6.2f %8.2f  %8.2f %8d ", d[2]/total*100, sum, d[2], d[0]
-      f.printf "%8.2f %8.2f  %s\n", d[2]*1000/d[0], d[1]*1000/d[0], get_name(*d[3])
-    end
-    f.printf "%6.2f %8.2f  %8.2f %8d ", 0.0, total, 0.0, 1     # ???
-    f.printf "%8.2f %8.2f  %s\n", 0.0, total*1000, "#toplevel" # ???
-  end
-  def get_name(klass, id)
-    name = klass.to_s || ""
-    if klass.kind_of? Class
-      name += "#"
-    else
-      name += "."
-    end
-    name + id.id2name
-  end
-  private :get_name
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pstore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pstore.rb
deleted file mode 100644
index 6df6447..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/pstore.rb
+++ /dev/null
@@ -1,395 +0,0 @@
-# = PStore -- Transactional File Storage for Ruby Objects
-#
-# pstore.rb -
-#   originally by matz
-#   documentation by Kev Jackson and James Edward Gray II
-#
-# See PStore for documentation.
-
-
-require "fileutils"
-require "digest/md5"
-
-#
-# PStore implements a file based persistance mechanism based on a Hash.  User
-# code can store hierarchies of Ruby objects (values) into the data store file
-# by name (keys).  An object hierarchy may be just a single object.  User code 
-# may later read values back from the data store or even update data, as needed.
-# 
-# The transactional behavior ensures that any changes succeed or fail together.
-# This can be used to ensure that the data store is not left in a transitory
-# state, where some values were upated but others were not.
-# 
-# Behind the scenes, Ruby objects are stored to the data store file with 
-# Marshal.  That carries the usual limitations.  Proc objects cannot be 
-# marshalled, for example.
-#
-# == Usage example:
-# 
-#  require "pstore"
-#  
-#  # a mock wiki object...
-#  class WikiPage
-#    def initialize( page_name, author, contents )
-#      @page_name = page_name
-#      @revisions = Array.new
-#      
-#      add_revision(author, contents)
-#    end
-#    
-#    attr_reader :page_name
-#    
-#    def add_revision( author, contents )
-#      @revisions << { :created  => Time.now,
-#                      :author   => author,
-#                      :contents => contents }
-#    end
-#    
-#    def wiki_page_references
-#      [@page_name] + @revisions.last[:contents].scan(/\b(?:[A-Z]+[a-z]+){2,}/)
-#    end
-#    
-#    # ...
-#  end
-#  
-#  # create a new page...
-#  home_page = WikiPage.new( "HomePage", "James Edward Gray II",
-#                            "A page about the JoysOfDocumentation..." )
-#  
-#  # then we want to update page data and the index together, or not at all...
-#  wiki = PStore.new("wiki_pages.pstore")
-#  wiki.transaction do  # begin transaction; do all of this or none of it
-#    # store page...
-#    wiki[home_page.page_name] = home_page
-#    # ensure that an index has been created...
-#    wiki[:wiki_index] ||= Array.new
-#    # update wiki index...
-#    wiki[:wiki_index].push(*home_page.wiki_page_references)
-#  end                   # commit changes to wiki data store file
-#  
-#  ### Some time later... ###
-#  
-#  # read wiki data...
-#  wiki.transaction(true) do  # begin read-only transaction, no changes allowed
-#    wiki.roots.each do |data_root_name|
-#      p data_root_name
-#      p wiki[data_root_name]
-#    end
-#  end
-#
-class PStore
-  binmode = defined?(File::BINARY) ? File::BINARY : 0
-  RDWR_ACCESS = File::RDWR | File::CREAT | binmode
-  RD_ACCESS = File::RDONLY | binmode
-  WR_ACCESS = File::WRONLY | File::CREAT | File::TRUNC | binmode
-
-  # The error type thrown by all PStore methods.
-  class Error < StandardError
-  end
-
-  # 
-  # To construct a PStore object, pass in the _file_ path where you would like 
-  # the data to be stored.
-  # 
-  def initialize(file)
-    dir = File::dirname(file)
-    unless File::directory? dir
-      raise PStore::Error, format("directory %s does not exist", dir)
-    end
-    if File::exist? file and not File::readable? file
-      raise PStore::Error, format("file %s not readable", file)
-    end
-    @transaction = false
-    @filename = file
-    @abort = false
-  end
-
-  # Raises PStore::Error if the calling code is not in a PStore#transaction.
-  def in_transaction
-    raise PStore::Error, "not in transaction" unless @transaction
-  end
-  # 
-  # Raises PStore::Error if the calling code is not in a PStore#transaction or
-  # if the code is in a read-only PStore#transaction.
-  # 
-  def in_transaction_wr()
-    in_transaction()
-    raise PStore::Error, "in read-only transaction" if @rdonly
-  end
-  private :in_transaction, :in_transaction_wr
-
-  #
-  # Retrieves a value from the PStore file data, by _name_.  The hierarchy of 
-  # Ruby objects stored under that root _name_ will be returned.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def [](name)
-    in_transaction
-    @table[name]
-  end
-  #
-  # This method is just like PStore#[], save that you may also provide a 
-  # _default_ value for the object.  In the event the specified _name_ is not 
-  # found in the data store, your _default_ will be returned instead.  If you do 
-  # not specify a default, PStore::Error will be raised if the object is not 
-  # found.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def fetch(name, default=PStore::Error)
-    in_transaction
-    unless @table.key? name
-      if default==PStore::Error
-	raise PStore::Error, format("undefined root name `%s'", name)
-      else
-	return default
-      end
-    end
-    @table[name]
-  end
-  #
-  # Stores an individual Ruby object or a hierarchy of Ruby objects in the data
-  # store file under the root _name_.  Assigning to a _name_ already in the data
-  # store clobbers the old data.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #  
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    # load some data into the store...
-  #    store[:single_object] = "My data..."
-  #    store[:obj_heirarchy] = { "Kev Jackson" => ["rational.rb", "pstore.rb"],
-  #                              "James Gray"  => ["erb.rb", "pstore.rb"] }
-  #  end                   # commit changes to data store file
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction and it cannot
-  # be read-only.  It will raise PStore::Error if called at any other time.
-  #
-  def []=(name, value)
-    in_transaction_wr()
-    @table[name] = value
-  end
-  #
-  # Removes an object hierarchy from the data store, by _name_.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction and it cannot
-  # be read-only.  It will raise PStore::Error if called at any other time.
-  #
-  def delete(name)
-    in_transaction_wr()
-    @table.delete name
-  end
-
-  #
-  # Returns the names of all object hierarchies currently in the store.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def roots
-    in_transaction
-    @table.keys
-  end
-  #
-  # Returns true if the supplied _name_ is currently in the data store.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def root?(name)
-    in_transaction
-    @table.key? name
-  end
-  # Returns the path to the data store file.
-  def path
-    @filename
-  end
-
-  #
-  # Ends the current PStore#transaction, committing any changes to the data
-  # store immediately.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #   
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    # load some data into the store...
-  #    store[:one] = 1
-  #    store[:two] = 2
-  #  
-  #    store.commit        # end transaction here, committing changes
-  #  
-  #    store[:three] = 3   # this change is never reached
-  #  end
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def commit
-    in_transaction
-    @abort = false
-    throw :pstore_abort_transaction
-  end
-  #
-  # Ends the current PStore#transaction, discarding any changes to the data
-  # store.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #   
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    store[:one] = 1     # this change is not applied, see below...
-  #    store[:two] = 2     # this change is not applied, see below...
-  #  
-  #    store.abort         # end transaction here, discard all changes
-  #  
-  #    store[:three] = 3   # this change is never reached
-  #  end
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def abort
-    in_transaction
-    @abort = true
-    throw :pstore_abort_transaction
-  end
-
-  #
-  # Opens a new transaction for the data store.  Code executed inside a block
-  # passed to this method may read and write data to and from the data store 
-  # file.
-  # 
-  # At the end of the block, changes are committed to the data store
-  # automatically.  You may exit the transaction early with a call to either 
-  # PStore#commit or PStore#abort.  See those methods for details about how
-  # changes are handled.  Raising an uncaught Exception in the block is 
-  # equivalent to calling PStore#abort.
-  # 
-  # If _read_only_ is set to +true+, you will only be allowed to read from the
-  # data store during the transaction and any attempts to change the data will
-  # raise a PStore::Error.
-  # 
-  # Note that PStore does not support nested transactions.
-  #
-  def transaction(read_only=false)  # :yields:  pstore
-    raise PStore::Error, "nested transaction" if @transaction
-    begin
-      @rdonly = read_only
-      @abort = false
-      @transaction = true
-      value = nil
-      new_file = @filename + ".new"
-
-      content = nil
-      unless read_only
-        file = File.open(@filename, RDWR_ACCESS)
-        file.flock(File::LOCK_EX)
-        commit_new(file) if FileTest.exist?(new_file)
-        content = file.read()
-      else
-        begin
-          file = File.open(@filename, RD_ACCESS)
-          file.flock(File::LOCK_SH)
-          content = (File.open(new_file, RD_ACCESS) {|n| n.read} rescue file.read())
-        rescue Errno::ENOENT
-          content = ""
-        end
-      end
-
-      if content != ""
-	@table = load(content)
-        if !read_only
-          size = content.size
-          md5 = Digest::MD5.digest(content)
-        end
-      else
-	@table = {}
-      end
-      content = nil		# unreference huge data
-
-      begin
-	catch(:pstore_abort_transaction) do
-	  value = yield(self)
-	end
-      rescue Exception
-	@abort = true
-	raise
-      ensure
-	if !read_only and !@abort
-          tmp_file = @filename + ".tmp"
-	  content = dump(@table)
-	  if !md5 || size != content.size || md5 != Digest::MD5.digest(content)
-            File.open(tmp_file, WR_ACCESS) {|t| t.write(content)}
-            File.rename(tmp_file, new_file)
-            commit_new(file)
-          end
-          content = nil		# unreference huge data
-	end
-      end
-    ensure
-      @table = nil
-      @transaction = false
-      file.close if file
-    end
-    value
-  end
-
-  # This method is just a wrapped around Marshal.dump.
-  def dump(table)  # :nodoc:
-    Marshal::dump(table)
-  end
-
-  # This method is just a wrapped around Marshal.load.
-  def load(content)  # :nodoc:
-    Marshal::load(content)
-  end
-
-  # This method is just a wrapped around Marshal.load.
-  def load_file(file)  # :nodoc:
-    Marshal::load(file)
-  end
-
-  private
-  # Commits changes to the data store file.
-  def commit_new(f)
-    f.truncate(0)
-    f.rewind
-    new_file = @filename + ".new"
-    File.open(new_file, RD_ACCESS) do |nf|
-      FileUtils.copy_stream(nf, f)
-    end
-    File.unlink(new_file)
-  end
-end
-
-# :enddoc:
-
-if __FILE__ == $0
-  db = PStore.new("/tmp/foo")
-  db.transaction do
-    p db.roots
-    ary = db["root"] = [1,2,3,4]
-    ary[1] = [1,1.5]
-  end
-
-  1000.times do
-    db.transaction do
-      db["root"][0] += 1
-      p db["root"][0]
-    end
-  end
-
-  db.transaction(true) do
-    p db["root"]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/racc/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/racc/parser.rb
deleted file mode 100644
index a7408dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/racc/parser.rb
+++ /dev/null
@@ -1,442 +0,0 @@
-#
-# $originalId: parser.rb,v 1.8 2006/07/06 11:42:07 aamine Exp $
-#
-# Copyright (c) 1999-2006 Minero Aoki
-#
-# This program is free software.
-# You can distribute/modify this program under the same terms of ruby.
-#
-# As a special exception, when this code is copied by Racc
-# into a Racc output file, you may use that output file
-# without restriction.
-#
-
-unless defined?(NotImplementedError)
-  NotImplementedError = NotImplementError
-end
-
-module Racc
-  class ParseError < StandardError; end
-end
-unless defined?(::ParseError)
-  ParseError = Racc::ParseError
-end
-
-module Racc
-
-  unless defined?(Racc_No_Extentions)
-    Racc_No_Extentions = false
-  end
-
-  class Parser
-
-    Racc_Runtime_Version = '1.4.5'
-    Racc_Runtime_Revision = '$originalRevision: 1.8 $'.split[1]
-
-    Racc_Runtime_Core_Version_R = '1.4.5'
-    Racc_Runtime_Core_Revision_R = '$originalRevision: 1.8 $'.split[1]
-    begin
-      require 'racc/cparse'
-    # Racc_Runtime_Core_Version_C  = (defined in extention)
-      Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
-      unless new.respond_to?(:_racc_do_parse_c, true)
-        raise LoadError, 'old cparse.so'
-      end
-      if Racc_No_Extentions
-        raise LoadError, 'selecting ruby version of racc runtime core'
-      end
-
-      Racc_Main_Parsing_Routine    = :_racc_do_parse_c
-      Racc_YY_Parse_Method         = :_racc_yyparse_c
-      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_C
-      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_C
-      Racc_Runtime_Type            = 'c'
-    rescue LoadError
-      Racc_Main_Parsing_Routine    = :_racc_do_parse_rb
-      Racc_YY_Parse_Method         = :_racc_yyparse_rb
-      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_R
-      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_R
-      Racc_Runtime_Type            = 'ruby'
-    end
-
-    def Parser.racc_runtime_type
-      Racc_Runtime_Type
-    end
-
-    private
-
-    def _racc_setup
-      @yydebug = false unless self.class::Racc_debug_parser
-      @yydebug = false unless defined?(@yydebug)
-      if @yydebug
-        @racc_debug_out = $stderr unless defined?(@racc_debug_out)
-        @racc_debug_out ||= $stderr
-      end
-      arg = self.class::Racc_arg
-      arg[13] = true if arg.size < 14
-      arg
-    end
-
-    def _racc_init_sysvars
-      @racc_state  = [0]
-      @racc_tstack = []
-      @racc_vstack = []
-
-      @racc_t = nil
-      @racc_val = nil
-
-      @racc_read_next = true
-
-      @racc_user_yyerror = false
-      @racc_error_status = 0
-    end
-
-    ###
-    ### do_parse
-    ###
-
-    def do_parse
-      __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
-    end
-
-    def next_token
-      raise NotImplementedError, "#{self.class}\#next_token is not defined"
-    end
-
-    def _racc_do_parse_rb(arg, in_debug)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-
-      _racc_init_sysvars
-      tok = act = i = nil
-      nerr = 0
-
-      catch(:racc_end_parse) {
-        while true
-          if i = action_pointer[@racc_state[-1]]
-            if @racc_read_next
-              if @racc_t != 0   # not EOF
-                tok, @racc_val = next_token()
-                unless tok      # EOF
-                  @racc_t = 0
-                else
-                  @racc_t = (token_table[tok] or 1)   # error token
-                end
-                racc_read_token(@racc_t, tok, @racc_val) if @yydebug
-                @racc_read_next = false
-              end
-            end
-            i += @racc_t
-            unless i >= 0 and
-                   act = action_table[i] and
-                   action_check[i] == @racc_state[-1]
-              act = action_default[@racc_state[-1]]
-            end
-          else
-            act = action_default[@racc_state[-1]]
-          end
-          while act = _racc_evalact(act, arg)
-            ;
-          end
-        end
-      }
-    end
-
-    ###
-    ### yyparse
-    ###
-
-    def yyparse(recv, mid)
-      __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
-    end
-
-    def _racc_yyparse_rb(recv, mid, arg, c_debug)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-
-      _racc_init_sysvars
-      tok = nil
-      act = nil
-      i = nil
-      nerr = 0
-
-      catch(:racc_end_parse) {
-        until i = action_pointer[@racc_state[-1]]
-          while act = _racc_evalact(action_default[@racc_state[-1]], arg)
-            ;
-          end
-        end
-        recv.__send__(mid) do |tok, val|
-          unless tok
-            @racc_t = 0
-          else
-            @racc_t = (token_table[tok] or 1)   # error token
-          end
-          @racc_val = val
-          @racc_read_next = false
-
-          i += @racc_t
-          unless i >= 0 and
-                 act = action_table[i] and
-                 action_check[i] == @racc_state[-1]
-            act = action_default[@racc_state[-1]]
-          end
-          while act = _racc_evalact(act, arg)
-            ;
-          end
-
-          while not (i = action_pointer[@racc_state[-1]]) or
-                not @racc_read_next or
-                @racc_t == 0   # $
-            unless i and i += @racc_t and
-                   i >= 0 and
-                   act = action_table[i] and
-                   action_check[i] == @racc_state[-1]
-              act = action_default[@racc_state[-1]]
-            end
-            while act = _racc_evalact(act, arg)
-              ;
-            end
-          end
-        end
-      }
-    end
-
-    ###
-    ### common
-    ###
-
-    def _racc_evalact(act, arg)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-      nerr = 0   # tmp
-
-      if act > 0 and act < shift_n
-        #
-        # shift
-        #
-        if @racc_error_status > 0
-          @racc_error_status -= 1 unless @racc_t == 1   # error token
-        end
-        @racc_vstack.push @racc_val
-        @racc_state.push act
-        @racc_read_next = true
-        if @yydebug
-          @racc_tstack.push @racc_t
-          racc_shift @racc_t, @racc_tstack, @racc_vstack
-        end
-
-      elsif act < 0 and act > -reduce_n
-        #
-        # reduce
-        #
-        code = catch(:racc_jump) {
-          @racc_state.push _racc_do_reduce(arg, act)
-          false
-        }
-        if code
-          case code
-          when 1 # yyerror
-            @racc_user_yyerror = true   # user_yyerror
-            return -reduce_n
-          when 2 # yyaccept
-            return shift_n
-          else
-            raise '[Racc Bug] unknown jump code'
-          end
-        end
-
-      elsif act == shift_n
-        #
-        # accept
-        #
-        racc_accept if @yydebug
-        throw :racc_end_parse, @racc_vstack[0]
-
-      elsif act == -reduce_n
-        #
-        # error
-        #
-        case @racc_error_status
-        when 0
-          unless arg[21]    # user_yyerror
-            nerr += 1
-            on_error @racc_t, @racc_val, @racc_vstack
-          end
-        when 3
-          if @racc_t == 0   # is $
-            throw :racc_end_parse, nil
-          end
-          @racc_read_next = true
-        end
-        @racc_user_yyerror = false
-        @racc_error_status = 3
-        while true
-          if i = action_pointer[@racc_state[-1]]
-            i += 1   # error token
-            if  i >= 0 and
-                (act = action_table[i]) and
-                action_check[i] == @racc_state[-1]
-              break
-            end
-          end
-          throw :racc_end_parse, nil if @racc_state.size <= 1
-          @racc_state.pop
-          @racc_vstack.pop
-          if @yydebug
-            @racc_tstack.pop
-            racc_e_pop @racc_state, @racc_tstack, @racc_vstack
-          end
-        end
-        return act
-
-      else
-        raise "[Racc Bug] unknown action #{act.inspect}"
-      end
-
-      racc_next_state(@racc_state[-1], @racc_state) if @yydebug
-
-      nil
-    end
-
-    def _racc_do_reduce(arg, act)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-      state = @racc_state
-      vstack = @racc_vstack
-      tstack = @racc_tstack
-
-      i = act * -3
-      len       = reduce_table[i]
-      reduce_to = reduce_table[i+1]
-      method_id = reduce_table[i+2]
-      void_array = []
-
-      tmp_t = tstack[-len, len] if @yydebug
-      tmp_v = vstack[-len, len]
-      tstack[-len, len] = void_array if @yydebug
-      vstack[-len, len] = void_array
-      state[-len, len]  = void_array
-
-      # tstack must be updated AFTER method call
-      if use_result
-        vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
-      else
-        vstack.push __send__(method_id, tmp_v, vstack)
-      end
-      tstack.push reduce_to
-
-      racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
-
-      k1 = reduce_to - nt_base
-      if i = goto_pointer[k1]
-        i += state[-1]
-        if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
-          return curstate
-        end
-      end
-      goto_default[k1]
-    end
-
-    def on_error(t, val, vstack)
-      raise ParseError, sprintf("\nparse error on value %s (%s)",
-                                val.inspect, token_to_str(t) || '?')
-    end
-
-    def yyerror
-      throw :racc_jump, 1
-    end
-
-    def yyaccept
-      throw :racc_jump, 2
-    end
-
-    def yyerrok
-      @racc_error_status = 0
-    end
-
-    #
-    # for debugging output
-    #
-
-    def racc_read_token(t, tok, val)
-      @racc_debug_out.print 'read    '
-      @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
-      @racc_debug_out.puts val.inspect
-      @racc_debug_out.puts
-    end
-
-    def racc_shift(tok, tstack, vstack)
-      @racc_debug_out.puts "shift   #{racc_token2str tok}"
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_reduce(toks, sim, tstack, vstack)
-      out = @racc_debug_out
-      out.print 'reduce '
-      if toks.empty?
-        out.print ' <none>'
-      else
-        toks.each {|t| out.print ' ', racc_token2str(t) }
-      end
-      out.puts " --> #{racc_token2str(sim)}"
-          
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_accept
-      @racc_debug_out.puts 'accept'
-      @racc_debug_out.puts
-    end
-
-    def racc_e_pop(state, tstack, vstack)
-      @racc_debug_out.puts 'error recovering mode: pop token'
-      racc_print_states state
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_next_state(curstate, state)
-      @racc_debug_out.puts  "goto    #{curstate}"
-      racc_print_states state
-      @racc_debug_out.puts
-    end
-
-    def racc_print_stacks(t, v)
-      out = @racc_debug_out
-      out.print '        ['
-      t.each_index do |i|
-        out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
-      end
-      out.puts ' ]'
-    end
-
-    def racc_print_states(s)
-      out = @racc_debug_out
-      out.print '        ['
-      s.each {|st| out.print ' ', st }
-      out.puts ' ]'
-    end
-
-    def racc_token2str(tok)
-      self.class::Racc_token_to_s_table[tok] or
-          raise "[Racc Bug] can't convert token #{tok} to string"
-    end
-
-    def token_to_str(t)
-      self.class::Racc_token_to_s_table[t]
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rational.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rational.rb
deleted file mode 100644
index ce754cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rational.rb
+++ /dev/null
@@ -1,530 +0,0 @@
-#
-#   rational.rb -
-#       $Release Version: 0.5 $
-#       $Revision: 1.7 $
-#       $Date: 1999/08/24 12:49:28 $
-#       by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# Documentation by Kevin Jackson and Gavin Sinclair.
-# 
-# When you <tt>require 'rational'</tt>, all interactions between numbers
-# potentially return a rational result.  For example:
-#
-#   1.quo(2)              # -> 0.5
-#   require 'rational'
-#   1.quo(2)              # -> Rational(1,2)
-# 
-# See Rational for full documentation.
-#
-
-
-#
-# Creates a Rational number (i.e. a fraction).  +a+ and +b+ should be Integers:
-# 
-#   Rational(1,3)           # -> 1/3
-#
-# Note: trying to construct a Rational with floating point or real values
-# produces errors:
-#
-#   Rational(1.1, 2.3)      # -> NoMethodError
-#
-def Rational(a, b = 1)
-  if a.kind_of?(Rational) && b == 1
-    a
-  else
-    Rational.reduce(a, b)
-  end
-end
-
-#
-# Rational implements a rational class for numbers.
-#
-# <em>A rational number is a number that can be expressed as a fraction p/q
-# where p and q are integers and q != 0.  A rational number p/q is said to have
-# numerator p and denominator q.  Numbers that are not rational are called
-# irrational numbers.</em> (http://mathworld.wolfram.com/RationalNumber.html)
-#
-# To create a Rational Number:
-#   Rational(a,b)             # -> a/b
-#   Rational.new!(a,b)        # -> a/b
-#
-# Examples:
-#   Rational(5,6)             # -> 5/6
-#   Rational(5)               # -> 5/1
-# 
-# Rational numbers are reduced to their lowest terms:
-#   Rational(6,10)            # -> 3/5
-#
-# But not if you use the unusual method "new!":
-#   Rational.new!(6,10)       # -> 6/10
-#
-# Division by zero is obviously not allowed:
-#   Rational(3,0)             # -> ZeroDivisionError
-#
-class Rational < Numeric
-  @RCS_ID='-$Id: rational.rb,v 1.7 1999/08/24 12:49:28 keiju Exp keiju $-'
-
-  #
-  # Reduces the given numerator and denominator to their lowest terms.  Use
-  # Rational() instead.
-  #
-  def Rational.reduce(num, den = 1)
-    raise ZeroDivisionError, "denominator is zero" if den == 0
-
-    if den < 0
-      num = -num
-      den = -den
-    end
-    gcd = num.gcd(den)
-    num = num.div(gcd)
-    den = den.div(gcd)
-    if den == 1 && defined?(Unify)
-      num
-    else
-      new!(num, den)
-    end
-  end
-
-  #
-  # Implements the constructor.  This method does not reduce to lowest terms or
-  # check for division by zero.  Therefore #Rational() should be preferred in
-  # normal use.
-  #
-  def Rational.new!(num, den = 1)
-    new(num, den)
-  end
-
-  private_class_method :new
-
-  #
-  # This method is actually private.
-  #
-  def initialize(num, den)
-    if den < 0
-      num = -num
-      den = -den
-    end
-    if num.kind_of?(Integer) and den.kind_of?(Integer)
-      @numerator = num
-      @denominator = den
-    else
-      @numerator = num.to_i
-      @denominator = den.to_i
-    end
-  end
-
-  #
-  # Returns the addition of this value and +a+.
-  #
-  # Examples:
-  #   r = Rational(3,4)      # -> Rational(3,4)
-  #   r + 1                  # -> Rational(7,4)
-  #   r + 0.5                # -> 1.25
-  #
-  def + (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      num_a = a.numerator * @denominator
-      Rational(num + num_a, @denominator * a.denominator)
-    elsif a.kind_of?(Integer)
-      self + Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) + a
-    else
-      x, y = a.coerce(self)
-      x + y
-    end
-  end
-
-  #
-  # Returns the difference of this value and +a+.
-  # subtracted.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r - 1                # -> Rational(-1,4)
-  #   r - 0.5              # -> 0.25
-  #
-  def - (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      num_a = a.numerator * @denominator
-      Rational(num - num_a, @denominator*a.denominator)
-    elsif a.kind_of?(Integer)
-      self - Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) - a
-    else
-      x, y = a.coerce(self)
-      x - y
-    end
-  end
-
-  #
-  # Returns the product of this value and +a+.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r * 2                # -> Rational(3,2)
-  #   r * 4                # -> Rational(3,1)
-  #   r * 0.5              # -> 0.375
-  #   r * Rational(1,2)    # -> Rational(3,8)
-  #
-  def * (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.numerator
-      den = @denominator * a.denominator
-      Rational(num, den)
-    elsif a.kind_of?(Integer)
-      self * Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) * a
-    else
-      x, y = a.coerce(self)
-      x * y
-    end
-  end
-
-  #
-  # Returns the quotient of this value and +a+.
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r / 2                # -> Rational(3,8)
-  #   r / 2.0              # -> 0.375
-  #   r / Rational(1,2)    # -> Rational(3,2)
-  #
-  def / (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      den = @denominator * a.numerator
-      Rational(num, den)
-    elsif a.kind_of?(Integer)
-      raise ZeroDivisionError, "division by zero" if a == 0
-      self / Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) / a
-    else
-      x, y = a.coerce(self)
-      x / y
-    end
-  end
-
-  #
-  # Returns this value raised to the given power.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r ** 2               # -> Rational(9,16)
-  #   r ** 2.0             # -> 0.5625
-  #   r ** Rational(1,2)   # -> 0.866025403784439
-  #
-  def ** (other)
-    if other.kind_of?(Rational)
-      Float(self) ** other
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = @numerator ** other
-	den = @denominator ** other
-      elsif other < 0
-	num = @denominator ** -other
-	den = @numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x, y = other.coerce(self)
-      x ** y
-    end
-  end
-
-  #
-  # Returns the remainder when this value is divided by +other+.
-  #
-  # Examples:
-  #   r = Rational(7,4)    # -> Rational(7,4)
-  #   r % Rational(1,2)    # -> Rational(1,4)
-  #   r % 1                # -> Rational(3,4)
-  #   r % Rational(1,7)    # -> Rational(1,28)
-  #   r % 0.26             # -> 0.19
-  #
-  def % (other)
-    value = (self / other).to_i
-    return self - other * value
-  end
-
-  #
-  # Returns the quotient _and_ remainder.
-  #
-  # Examples:
-  #   r = Rational(7,4)        # -> Rational(7,4)
-  #   r.divmod Rational(1,2)   # -> [3, Rational(1,4)]
-  #
-  def divmod(other)
-    value = (self / other).to_i
-    return value, self - other * value
-  end
-
-  #
-  # Returns the absolute value.
-  #
-  def abs
-    if @numerator > 0
-      Rational.new!(@numerator, @denominator)
-    else
-      Rational.new!(- at numerator, @denominator)
-    end
-  end
-
-  #
-  # Returns +true+ iff this value is numerically equal to +other+.
-  #
-  # But beware:
-  #   Rational(1,2) == Rational(4,8)          # -> true
-  #   Rational(1,2) == Rational.new!(4,8)     # -> false
-  #
-  # Don't use Rational.new!
-  #
-  def == (other)
-    if other.kind_of?(Rational)
-      @numerator == other.numerator and @denominator == other.denominator
-    elsif other.kind_of?(Integer)
-      self == Rational.new!(other, 1)
-    elsif other.kind_of?(Float)
-      Float(self) == other
-    else
-      other == self
-    end
-  end
-
-  #
-  # Standard comparison operator.
-  #
-  def <=> (other)
-    if other.kind_of?(Rational)
-      num = @numerator * other.denominator
-      num_a = other.numerator * @denominator
-      v = num - num_a
-      if v > 0
-	return 1
-      elsif v < 0
-	return  -1
-      else
-	return 0
-      end
-    elsif other.kind_of?(Integer)
-      return self <=> Rational.new!(other, 1)
-    elsif other.kind_of?(Float)
-      return Float(self) <=> other
-    elsif defined? other.coerce
-      x, y = other.coerce(self)
-      return x <=> y
-    else
-      return nil
-    end
-  end
-
-  def coerce(other)
-    if other.kind_of?(Float)
-      return other, self.to_f
-    elsif other.kind_of?(Integer)
-      return Rational.new!(other, 1), self
-    else
-      super
-    end
-  end
-
-  #
-  # Converts the rational to an Integer.  Not the _nearest_ integer, the
-  # truncated integer.  Study the following example carefully:
-  #   Rational(+7,4).to_i             # -> 1
-  #   Rational(-7,4).to_i             # -> -2
-  #   (-1.75).to_i                    # -> -1
-  #
-  # In other words:
-  #   Rational(-7,4) == -1.75                 # -> true
-  #   Rational(-7,4).to_i == (-1.75).to_i     # false
-  #
-  def to_i
-    Integer(@numerator.div(@denominator))
-  end
-
-  #
-  # Converts the rational to a Float.
-  #
-  def to_f
-    @numerator.to_f/@denominator.to_f
-  end
-
-  #
-  # Returns a string representation of the rational number.
-  #
-  # Example:
-  #   Rational(3,4).to_s          #  "3/4"
-  #   Rational(8).to_s            #  "8"
-  #
-  def to_s
-    if @denominator == 1
-      @numerator.to_s
-    else
-      @numerator.to_s+"/"+ at denominator.to_s
-    end
-  end
-
-  #
-  # Returns +self+.
-  #
-  def to_r
-    self
-  end
-
-  #
-  # Returns a reconstructable string representation:
-  #
-  #   Rational(5,8).inspect     # -> "Rational(5, 8)"
-  #
-  def inspect
-    sprintf("Rational(%s, %s)", @numerator.inspect, @denominator.inspect)
-  end
-
-  #
-  # Returns a hash code for the object.
-  #
-  def hash
-    @numerator.hash ^ @denominator.hash
-  end
-
-  attr :numerator
-  attr :denominator
-
-  private :initialize
-end
-
-class Integer
-  #
-  # In an integer, the value _is_ the numerator of its rational equivalent.
-  # Therefore, this method returns +self+.
-  #
-  def numerator
-    self
-  end
-
-  #
-  # In an integer, the denominator is 1.  Therefore, this method returns 1.
-  #
-  def denominator
-    1
-  end
-
-  #
-  # Returns a Rational representation of this integer.
-  #
-  def to_r
-    Rational(self, 1)
-  end
-
-  #
-  # Returns the <em>greatest common denominator</em> of the two numbers (+self+
-  # and +n+).
-  #
-  # Examples:
-  #   72.gcd 168           # -> 24
-  #   19.gcd 36            # -> 1
-  #
-  # The result is positive, no matter the sign of the arguments.
-  #
-  def gcd(other)
-    min = self.abs
-    max = other.abs
-    while min > 0
-      tmp = min
-      min = max % min
-      max = tmp
-    end
-    max
-  end
-
-  #
-  # Returns the <em>lowest common multiple</em> (LCM) of the two arguments
-  # (+self+ and +other+).
-  #
-  # Examples:
-  #   6.lcm 7        # -> 42
-  #   6.lcm 9        # -> 18
-  #
-  def lcm(other)
-    if self.zero? or other.zero?
-      0
-    else
-      (self.div(self.gcd(other)) * other).abs
-    end
-  end
-
-  #
-  # Returns the GCD _and_ the LCM (see #gcd and #lcm) of the two arguments
-  # (+self+ and +other+).  This is more efficient than calculating them
-  # separately.
-  #
-  # Example:
-  #   6.gcdlcm 9     # -> [3, 18]
-  #
-  def gcdlcm(other)
-    gcd = self.gcd(other)
-    if self.zero? or other.zero?
-      [gcd, 0]
-    else
-      [gcd, (self.div(gcd) * other).abs]
-    end
-  end
-end
-
-class Fixnum
-  undef quo
-  # If Rational is defined, returns a Rational number instead of a Fixnum.
-  def quo(other)
-    Rational.new!(self,1) / other
-  end
-  alias rdiv quo
-
-  # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
-  def rpower (other)
-    if other >= 0
-      self.power!(other)
-    else
-      Rational.new!(self,1)**other
-    end
-  end
-
-  unless defined? 1.power!
-    alias power! **
-    alias ** rpower
-  end
-end
-
-class Bignum
-  unless defined? Complex
-    alias power! **
-  end
-
-  undef quo
-  # If Rational is defined, returns a Rational number instead of a Bignum.
-  def quo(other)
-    Rational.new!(self,1) / other
-  end
-  alias rdiv quo
-
-  # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
-  def rpower (other)
-    if other >= 0
-      self.power!(other)
-    else
-      Rational.new!(self, 1)**other
-    end
-  end
-
-  unless defined? Complex
-    alias ** rpower
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rbconfig.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rbconfig.rb
deleted file mode 100644
index 6814412..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rbconfig.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-
-# This file was created by mkconfig.rb when ruby was built.  Any
-# changes made to this file will be lost the next time ruby is built.
-
-module Config
-  RUBY_VERSION == "1.8.6" or
-    raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
-
-  TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mswin32")
-  DESTDIR = TOPDIR && TOPDIR[/\A[a-z]:/i] || '' unless defined? DESTDIR
-  CONFIG = {}
-  CONFIG["DESTDIR"] = DESTDIR
-  CONFIG["MAJOR"] = "1"
-  CONFIG["MINOR"] = "8"
-  CONFIG["TEENY"] = "6"
-  CONFIG["PATCHLEVEL"] = "111"
-  CONFIG["prefix"] = (TOPDIR || DESTDIR + "")
-  CONFIG["EXEEXT"] = ".exe"
-  CONFIG["ruby_install_name"] = "ruby"
-  CONFIG["RUBY_INSTALL_NAME"] = "ruby"
-  CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
-  CONFIG["SHELL"] = "$(COMSPEC)"
-  CONFIG["BUILD_FILE_SEPARATOR"] = "\\"
-  CONFIG["PATH_SEPARATOR"] = ";"
-  CONFIG["CFLAGS"] = "-MD -Zi -O2b2xg- -G6"
-  CONFIG["CPPFLAGS"] = ""
-  CONFIG["CXXFLAGS"] = ""
-  CONFIG["FFLAGS"] = ""
-  CONFIG["LDFLAGS"] = ""
-  CONFIG["LIBS"] = "oldnames.lib user32.lib advapi32.lib ws2_32.lib "
-  CONFIG["exec_prefix"] = "$(prefix)"
-  CONFIG["bindir"] = "$(exec_prefix)/bin"
-  CONFIG["sbindir"] = "$(exec_prefix)/sbin"
-  CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
-  CONFIG["datadir"] = "$(prefix)/share"
-  CONFIG["sysconfdir"] = "$(prefix)/etc"
-  CONFIG["sharedstatedir"] = "$(DESTDIR)/etc"
-  CONFIG["localstatedir"] = "$(DESTDIR)/var"
-  CONFIG["libdir"] = "$(exec_prefix)/lib"
-  CONFIG["includedir"] = "$(prefix)/include"
-  CONFIG["oldincludedir"] = "/usr/include"
-  CONFIG["infodir"] = "$(prefix)/info"
-  CONFIG["mandir"] = "$(prefix)/man"
-  CONFIG["build"] = "i686-pc-mswin32"
-  CONFIG["build_alias"] = "i686-mswin32"
-  CONFIG["build_cpu"] = "i686"
-  CONFIG["build_vendor"] = "pc"
-  CONFIG["build_os"] = "mswin32"
-  CONFIG["host"] = "i686-pc-mswin32"
-  CONFIG["host_alias"] = "i686-mswin32"
-  CONFIG["host_cpu"] = "i686"
-  CONFIG["host_vendor"] = "pc"
-  CONFIG["host_os"] = "mswin32"
-  CONFIG["target"] = "i386-pc-mswin32"
-  CONFIG["target_alias"] = "i386-mswin32"
-  CONFIG["target_cpu"] = "i386"
-  CONFIG["target_vendor"] = "pc"
-  CONFIG["target_os"] = "mswin32"
-  CONFIG["CC"] = "cl -nologo"
-  CONFIG["CPP"] = "cl -nologo -E"
-  CONFIG["YACC"] = "byacc"
-  CONFIG["RANLIB"] = ""
-  CONFIG["AR"] = "lib -nologo"
-  CONFIG["ARFLAGS"] = "-machine:x86 -out:"
-  CONFIG["LN_S"] = ""
-  CONFIG["SET_MAKE"] = ""
-  CONFIG["CP"] = "copy > nul"
-  CONFIG["ALLOCA"] = ""
-  CONFIG["DEFAULT_KCODE"] = ""
-  CONFIG["OBJEXT"] = "obj"
-  CONFIG["XCFLAGS"] = "-DRUBY_EXPORT -I. -IC:/develop/win/ruby/ruby-1.8.6-p111 -IC:/develop/win/ruby/ruby-1.8.6-p111/missing"
-  CONFIG["XLDFLAGS"] = "-stack:0x2000000"
-  CONFIG["DLDFLAGS"] = "-link -incremental:no -debug -opt:ref -opt:icf -dll $(LIBPATH) -def:$(DEFFILE) -implib:$(*F:.so=)-$(arch).lib -pdb:$(*F:.so=)-$(arch).pdb"
-  CONFIG["ARCH_FLAG"] = ""
-  CONFIG["STATIC"] = ""
-  CONFIG["CCDLFLAGS"] = ""
-  CONFIG["LDSHARED"] = "cl -nologo -LD"
-  CONFIG["DLEXT"] = "so"
-  CONFIG["DLEXT2"] = "dll"
-  CONFIG["LIBEXT"] = "lib"
-  CONFIG["STRIP"] = ""
-  CONFIG["EXTSTATIC"] = ""
-  CONFIG["setup"] = "Setup"
-  CONFIG["MINIRUBY"] = ".\\miniruby.exe "
-  CONFIG["PREP"] = "miniruby.exe"
-  CONFIG["RUNRUBY"] = ".\\ruby.exe \"C:/develop/win/ruby/ruby-1.8.6-p111/runruby.rb\" --extout=\".ext\" --"
-  CONFIG["EXTOUT"] = ".ext"
-  CONFIG["ARCHFILE"] = ""
-  CONFIG["RDOCTARGET"] = "install-nodoc"
-  CONFIG["LIBRUBY_LDSHARED"] = "cl -nologo -LD"
-  CONFIG["LIBRUBY_DLDFLAGS"] = " -def:msvcrt-ruby18.def"
-  CONFIG["rubyw_install_name"] = "rubyw"
-  CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
-  CONFIG["LIBRUBY_A"] = "$(RUBY_SO_NAME)-static.lib"
-  CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
-  CONFIG["LIBRUBY_ALIASES"] = ""
-  CONFIG["LIBRUBY"] = "$(RUBY_SO_NAME).lib"
-  CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
-  CONFIG["LIBRUBYARG_STATIC"] = "$(LIBRUBY_A)"
-  CONFIG["LIBRUBYARG_SHARED"] = "$(LIBRUBY)"
-  CONFIG["SOLIBS"] = ""
-  CONFIG["DLDLIBS"] = ""
-  CONFIG["ENABLE_SHARED"] = "yes"
-  CONFIG["OUTFLAG"] = "-Fe"
-  CONFIG["CPPOUTFILE"] = "-P"
-  CONFIG["LIBPATHFLAG"] = " -libpath:\"%s\""
-  CONFIG["RPATHFLAG"] = ""
-  CONFIG["LIBARG"] = "%s.lib"
-  CONFIG["LINK_SO"] = "$(LDSHARED) -Fe$(@) $(OBJS) $(LIBS) $(LOCAL_LIBS) $(DLDFLAGS)"
-  CONFIG["COMPILE_C"] = "$(CC) $(INCFLAGS) $(CFLAGS) $(CPPFLAGS) -c -Tc$(<:\\=/)"
-  CONFIG["COMPILE_CXX"] = "$(CXX) $(INCFLAGS) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\\=/)"
-  CONFIG["COMPILE_RULES"] = "{$(srcdir)}.%s{}.%s: {$(topdir)}.%s{}.%s: {$(hdrdir)}.%s{}.%s: .%s.%s:"
-  CONFIG["RULE_SUBST"] = "{.;$(srcdir);$(topdir);$(hdrdir)}%s"
-  CONFIG["TRY_LINK"] = "$(CC) -Feconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS) $(CFLAGS) $(src) $(LOCAL_LIBS) $(LIBS) -link $(LDFLAGS) $(LIBPATH) $(XLDFLAGS)"
-  CONFIG["COMMON_LIBS"] = "m"
-  CONFIG["COMMON_MACROS"] = "WIN32_LEAN_AND_MEAN"
-  CONFIG["COMMON_HEADERS"] = "winsock2.h windows.h"
-  CONFIG["DISTCLEANFILES"] = "vc*.pdb"
-  CONFIG["EXPORT_PREFIX"] = " "
-  CONFIG["arch"] = "i386-mswin32"
-  CONFIG["sitearch"] = "i386-msvcrt"
-  CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
-  CONFIG["configure_args"] = "--with-make-prog=nmake --enable-shared --with-winsock2"
-  CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
-  CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
-  CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
-  CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
-  CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
-  CONFIG["topdir"] = File.dirname(__FILE__)
-  MAKEFILE_CONFIG = {}
-  CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
-  def Config::expand(val, config = CONFIG)
-    val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
-      if !(v = $1 || $2)
-	'$'
-      elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
-	pat, sub = $1, $2
-	config[v] = false
-	Config::expand(key, config)
-	config[v] = key
-	key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
-	key
-      else
-	var
-      end
-    end
-    val
-  end
-  CONFIG.each_value do |val|
-    Config::expand(val)
-  end
-end
-RbConfig = Config # compatibility for ruby-1.9
-CROSS_COMPILING = nil unless defined? CROSS_COMPILING
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/code_objects.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/code_objects.rb
deleted file mode 100644
index d6c4f1b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/code_objects.rb
+++ /dev/null
@@ -1,765 +0,0 @@
-# We represent the various high-level code constructs that appear
-# in Ruby programs: classes, modules, methods, and so on.
-
-require 'rdoc/tokenstream'
-
-module RDoc
-
-
-  # We contain the common stuff for contexts (which are containers)
-  # and other elements (methods, attributes and so on)
-  #
-  class CodeObject
-
-    attr_accessor :parent
-
-    # We are the model of the code, but we know that at some point
-    # we will be worked on by viewers. By implementing the Viewable
-    # protocol, viewers can associated themselves with these objects.
-
-    attr_accessor :viewer
-
-    # are we done documenting (ie, did we come across a :enddoc:)?
-
-    attr_accessor :done_documenting
-
-    # Which section are we in
-
-    attr_accessor :section
-
-    # do we document ourselves?
-
-    attr_reader :document_self
-
-    def document_self=(val)
-      @document_self = val
-      if !val
-	remove_methods_etc
-      end
-    end
-
-    # set and cleared by :startdoc: and :enddoc:, this is used to toggle
-    # the capturing of documentation
-    def start_doc
-      @document_self = true
-      @document_children = true
-    end
-
-    def stop_doc
-      @document_self = false
-      @document_children = false
-    end
-
-    # do we document ourselves and our children
-
-    attr_reader :document_children
-
-    def document_children=(val)
-      @document_children = val
-      if !val
-	remove_classes_and_modules
-      end
-    end
-
-    # Do we _force_ documentation, even is we wouldn't normally show the entity
-    attr_accessor :force_documentation
-
-    # Default callbacks to nothing, but this is overridden for classes
-    # and modules
-    def remove_classes_and_modules
-    end
-
-    def remove_methods_etc
-    end
-
-    def initialize
-      @document_self = true
-      @document_children = true
-      @force_documentation = false
-      @done_documenting = false
-    end
-
-    # Access the code object's comment
-    attr_reader :comment
-
-    # Update the comment, but don't overwrite a real comment
-    # with an empty one
-    def comment=(comment)
-      @comment = comment unless comment.empty?
-    end
-
-    # There's a wee trick we pull. Comment blocks can have directives that
-    # override the stuff we extract during the parse. So, we have a special
-    # class method, attr_overridable, that lets code objects list
-    # those directives. Wehn a comment is assigned, we then extract
-    # out any matching directives and update our object
-
-    def CodeObject.attr_overridable(name, *aliases)
-      @overridables ||= {}
-
-      attr_accessor name
-
-      aliases.unshift name
-      aliases.each do |directive_name|
-        @overridables[directive_name.to_s] = name
-      end
-    end
-
-  end
-
-  # A Context is something that can hold modules, classes, methods, 
-  # attributes, aliases, requires, and includes. Classes, modules, and
-  # files are all Contexts.
-
-  class Context < CodeObject
-    attr_reader   :name, :method_list, :attributes, :aliases, :constants
-    attr_reader   :requires, :includes, :in_files, :visibility
-
-    attr_reader   :sections
-
-    class Section
-      attr_reader :title, :comment, :sequence
-
-      @@sequence = "SEC00000"
-
-      def initialize(title, comment)
-        @title = title
-        @@sequence.succ!
-        @sequence = @@sequence.dup
-        set_comment(comment)
-      end
-
-      private
-
-      # Set the comment for this section from the original comment block
-      # If the first line contains :section:, strip it and use the rest. Otherwise
-      # remove lines up to the line containing :section:, and look for 
-      # those lines again at the end and remove them. This lets us write
-      #
-      #   # ---------------------
-      #   # :SECTION: The title
-      #   # The body
-      #   # ---------------------
-
-      def set_comment(comment)
-        return unless comment
-
-        if comment =~ /^.*?:section:.*$/
-          start = $`
-          rest = $'
-          if start.empty?
-            @comment = rest
-          else
-            @comment = rest.sub(/#{start.chomp}\Z/, '')
-          end
-        else
-          @comment = comment
-        end
-        @comment = nil if @comment.empty?
-      end
-    end
-
-
-    def initialize
-      super()
-
-      @in_files    = []
-
-      @name    ||= "unknown"
-      @comment ||= ""
-      @parent  = nil
-      @visibility = :public
-
-      @current_section = Section.new(nil, nil)
-      @sections = [ @current_section ]
-
-      initialize_methods_etc
-      initialize_classes_and_modules
-    end
-
-    # map the class hash to an array externally
-    def classes
-      @classes.values
-    end
-
-    # map the module hash to an array externally
-    def modules
-      @modules.values
-    end
-
-    # Change the default visibility for new methods
-    def ongoing_visibility=(vis)
-      @visibility = vis
-    end
-
-    # Given an array +methods+ of method names, set the
-    # visibility of the corresponding AnyMethod object
-
-    def set_visibility_for(methods, vis, singleton=false)
-      count = 0
-      @method_list.each do |m|
-        if methods.include?(m.name) && m.singleton == singleton
-          m.visibility = vis
-          count += 1
-        end
-      end
-
-      return if count == methods.size || singleton
-
-      # perhaps we need to look at attributes
-
-      @attributes.each do |a|
-        if methods.include?(a.name)
-          a.visibility = vis
-          count += 1
-        end
-      end
-    end
-
-    # Record the file that we happen to find it in
-    def record_location(toplevel)
-      @in_files << toplevel unless @in_files.include?(toplevel)
-    end
-
-    # Return true if at least part of this thing was defined in +file+
-    def defined_in?(file)
-      @in_files.include?(file)
-    end
-
-    def add_class(class_type, name, superclass)
-      add_class_or_module(@classes, class_type, name, superclass)
-    end
-
-    def add_module(class_type, name)
-      add_class_or_module(@modules, class_type, name, nil)
-    end
-
-    def add_method(a_method)
-      puts "Adding #@visibility method #{a_method.name} to #@name" if $DEBUG
-      a_method.visibility = @visibility
-      add_to(@method_list, a_method)
-    end
-
-    def add_attribute(an_attribute)
-      add_to(@attributes, an_attribute)
-    end
-
-    def add_alias(an_alias)
-      meth = find_instance_method_named(an_alias.old_name)
-      if meth
-        new_meth = AnyMethod.new(an_alias.text, an_alias.new_name)
-        new_meth.is_alias_for = meth
-        new_meth.singleton    = meth.singleton
-        new_meth.params       = meth.params
-        new_meth.comment = "Alias for \##{meth.name}"
-        meth.add_alias(new_meth)
-        add_method(new_meth)
-      else
-        add_to(@aliases, an_alias)
-      end
-    end
-
-    def add_include(an_include)
-      add_to(@includes, an_include)
-    end
-
-    def add_constant(const)
-      add_to(@constants, const)
-    end
-
-    # Requires always get added to the top-level (file) context
-    def add_require(a_require)
-      if self.kind_of? TopLevel
-        add_to(@requires, a_require)
-      else
-        parent.add_require(a_require)
-      end
-    end
-
-    def add_class_or_module(collection, class_type, name, superclass=nil)
-      cls = collection[name]
-      if cls
-        puts "Reusing class/module #{name}" if $DEBUG
-      else
-        cls = class_type.new(name, superclass)
-        puts "Adding class/module #{name} to #@name" if $DEBUG
-#        collection[name] = cls if @document_self  && !@done_documenting
-        collection[name] = cls if !@done_documenting
-        cls.parent = self
-        cls.section = @current_section
-      end
-      cls
-    end
-
-    def add_to(array, thing)
-      array <<  thing if @document_self  && !@done_documenting
-      thing.parent = self
-      thing.section = @current_section
-    end
-
-    # If a class's documentation is turned off after we've started
-    # collecting methods etc., we need to remove the ones
-    # we have
-
-    def remove_methods_etc
-      initialize_methods_etc
-    end
-
-    def initialize_methods_etc
-      @method_list = []
-      @attributes  = []
-      @aliases     = []
-      @requires    = []
-      @includes    = []
-      @constants   = []
-    end
-
-    # and remove classes and modules when we see a :nodoc: all
-    def remove_classes_and_modules
-      initialize_classes_and_modules
-    end
-
-    def initialize_classes_and_modules
-      @classes     = {}
-      @modules     = {}
-    end
-
-    # Find a named module
-    def find_module_named(name)
-      return self if self.name == name
-      res = @modules[name] || @classes[name]
-      return res if res
-      find_enclosing_module_named(name)
-    end
-
-    # find a module at a higher scope
-    def find_enclosing_module_named(name)
-      parent && parent.find_module_named(name)
-    end
-
-    # Iterate over all the classes and modules in
-    # this object
-
-    def each_classmodule
-      @modules.each_value {|m| yield m}
-      @classes.each_value {|c| yield c}
-    end
-
-    def each_method
-      @method_list.each {|m| yield m}
-    end
-
-    def each_attribute 
-      @attributes.each {|a| yield a}
-    end
-
-    def each_constant
-      @constants.each {|c| yield c}
-    end
-
-    # Return the toplevel that owns us
-
-    def toplevel
-      return @toplevel if defined? @toplevel
-      @toplevel = self
-      @toplevel = @toplevel.parent until TopLevel === @toplevel
-      @toplevel
-    end
-
-    # allow us to sort modules by name
-    def <=>(other)
-      name <=> other.name
-    end
-
-    # Look up the given symbol. If method is non-nil, then
-    # we assume the symbol references a module that
-    # contains that method
-    def find_symbol(symbol, method=nil)
-      result = nil
-      case symbol
-      when /^::(.*)/
-        result = toplevel.find_symbol($1)
-      when /::/
-        modules = symbol.split(/::/)
-        unless modules.empty?
-          module_name = modules.shift
-          result = find_module_named(module_name)
-          if result
-            modules.each do |module_name|
-              result = result.find_module_named(module_name)
-              break unless result
-            end
-          end
-        end
-      else
-        # if a method is specified, then we're definitely looking for
-        # a module, otherwise it could be any symbol
-        if method
-          result = find_module_named(symbol)
-        else
-          result = find_local_symbol(symbol)
-          if result.nil?
-            if symbol =~ /^[A-Z]/
-              result = parent
-              while result && result.name != symbol
-                result = result.parent
-              end
-            end
-          end
-        end
-      end
-      if result && method
-        if !result.respond_to?(:find_local_symbol)
-          p result.name
-          p method
-          fail
-        end
-        result = result.find_local_symbol(method)
-      end
-      result
-    end
-           
-    def find_local_symbol(symbol)
-      res = find_method_named(symbol) ||
-            find_constant_named(symbol) ||
-            find_attribute_named(symbol) ||
-            find_module_named(symbol) 
-    end
-
-    # Handle sections
-
-    def set_current_section(title, comment)
-      @current_section = Section.new(title, comment)
-      @sections << @current_section
-    end
-
-    private
-
-    # Find a named method, or return nil
-    def find_method_named(name)
-      @method_list.find {|meth| meth.name == name}
-    end
-
-    # Find a named instance method, or return nil
-    def find_instance_method_named(name)
-      @method_list.find {|meth| meth.name == name && !meth.singleton}
-    end
-
-    # Find a named constant, or return nil
-    def find_constant_named(name)
-      @constants.find {|m| m.name == name}
-    end
-
-    # Find a named attribute, or return nil
-    def find_attribute_named(name)
-      @attributes.find {|m| m.name == name}
-    end
-    
-  end
-
-
-  # A TopLevel context is a source file
-
-  class TopLevel < Context
-    attr_accessor :file_stat
-    attr_accessor :file_relative_name
-    attr_accessor :file_absolute_name
-    attr_accessor :diagram
-    
-    @@all_classes = {}
-    @@all_modules = {}
-
-    def TopLevel::reset
-      @@all_classes = {}
-      @@all_modules = {}
-    end
-
-    def initialize(file_name)
-      super()
-      @name = "TopLevel"
-      @file_relative_name = file_name
-      @file_absolute_name = file_name
-      @file_stat          = File.stat(file_name)
-      @diagram            = nil
-    end
-
-    def full_name
-      nil
-    end
-
-    # Adding a class or module to a TopLevel is special, as we only
-    # want one copy of a particular top-level class. For example,
-    # if both file A and file B implement class C, we only want one
-    # ClassModule object for C. This code arranges to share
-    # classes and modules between files.
-
-    def add_class_or_module(collection, class_type, name, superclass)
-      cls = collection[name]
-      if cls
-        puts "Reusing class/module #{name}" if $DEBUG
-      else
-        if class_type == NormalModule
-          all = @@all_modules
-        else
-          all = @@all_classes
-        end
-        cls = all[name]
-        if !cls
-          cls = class_type.new(name, superclass)
-          all[name] = cls  unless @done_documenting
-        end
-        puts "Adding class/module #{name} to #@name" if $DEBUG
-        collection[name] = cls unless @done_documenting
-        cls.parent = self
-      end
-      cls
-    end
-
-    def TopLevel.all_classes_and_modules
-      @@all_classes.values + @@all_modules.values
-    end
-
-    def TopLevel.find_class_named(name)
-     @@all_classes.each_value do |c|
-        res = c.find_class_named(name) 
-        return res if res
-      end
-      nil
-    end
-
-    def find_local_symbol(symbol)
-      find_class_or_module_named(symbol) || super
-    end
-
-    def find_class_or_module_named(symbol)
-      @@all_classes.each_value {|c| return c if c.name == symbol}
-      @@all_modules.each_value {|m| return m if m.name == symbol}
-      nil
-    end
-
-    # Find a named module
-    def find_module_named(name)
-      find_class_or_module_named(name) || find_enclosing_module_named(name)
-    end
-
-
-  end
-
-  # ClassModule is the base class for objects representing either a
-  # class or a module.
-
-  class ClassModule < Context
-
-    attr_reader   :superclass
-    attr_accessor :diagram
-
-    def initialize(name, superclass = nil)
-      @name       = name
-      @diagram    = nil
-      @superclass = superclass
-      @comment    = ""
-      super()
-    end
-
-    # Return the fully qualified name of this class or module
-    def full_name
-      if @parent && @parent.full_name
-        @parent.full_name + "::" + @name
-      else
-        @name
-      end
-    end
-
-    def http_url(prefix)
-      path = full_name.split("::")
-      File.join(prefix, *path) + ".html"
-    end
-
-    # Return +true+ if this object represents a module
-    def is_module?
-      false
-    end
-
-    # to_s is simply for debugging
-    def to_s
-      res = self.class.name + ": " + @name 
-      res << @comment.to_s
-      res << super
-      res
-    end
-
-    def find_class_named(name)
-      return self if full_name == name
-      @classes.each_value {|c| return c if c.find_class_named(name) }
-      nil
-    end
-  end
-
-  # Anonymous classes
-  class AnonClass < ClassModule
-  end
-
-  # Normal classes
-  class NormalClass < ClassModule
-  end
-
-  # Singleton classes
-  class SingleClass < ClassModule
-  end
-
-  # Module
-  class NormalModule < ClassModule
-    def is_module?
-      true
-    end
-  end
-
-
-  # AnyMethod is the base class for objects representing methods
-
-  class AnyMethod < CodeObject
-    attr_accessor :name
-    attr_accessor :visibility
-    attr_accessor :block_params
-    attr_accessor :dont_rename_initialize
-    attr_accessor :singleton
-    attr_reader   :aliases           # list of other names for this method
-    attr_accessor :is_alias_for      # or a method we're aliasing
-
-    attr_overridable :params, :param, :parameters, :parameter
-
-    attr_accessor :call_seq
-
-
-    include TokenStream
-
-    def initialize(text, name)
-      super()
-      @text = text
-      @name = name
-      @token_stream  = nil
-      @visibility    = :public
-      @dont_rename_initialize = false
-      @block_params  = nil
-      @aliases       = []
-      @is_alias_for  = nil
-      @comment = ""
-      @call_seq = nil
-    end
-
-    def <=>(other)
-      @name <=> other.name
-    end
-
-    def to_s
-      res = self.class.name + ": " + @name + " (" + @text + ")\n"
-      res << @comment.to_s
-      res
-    end
-
-    def param_seq
-      p = params.gsub(/\s*\#.*/, '')
-      p = p.tr("\n", " ").squeeze(" ")
-      p = "(" + p + ")" unless p[0] == ?(
-
-      if (block = block_params)
-        # If this method has explicit block parameters, remove any
-        # explicit &block
-$stderr.puts p
-        p.sub!(/,?\s*&\w+/)
-$stderr.puts p
-
-        block.gsub!(/\s*\#.*/, '')
-        block = block.tr("\n", " ").squeeze(" ")
-        if block[0] == ?(
-          block.sub!(/^\(/, '').sub!(/\)/, '')
-        end
-        p << " {|#{block}| ...}"
-      end
-      p
-    end
-
-    def add_alias(method)
-      @aliases << method
-    end
-  end
-
-
-  # Represent an alias, which is an old_name/ new_name pair associated
-  # with a particular context
-  class Alias < CodeObject
-    attr_accessor :text, :old_name, :new_name, :comment
-    
-    def initialize(text, old_name, new_name, comment)
-      super()
-      @text = text
-      @old_name = old_name
-      @new_name = new_name
-      self.comment = comment
-    end
-
-    def to_s
-      "alias: #{self.old_name} ->  #{self.new_name}\n#{self.comment}"
-    end
-  end
-
-  # Represent a constant
-  class Constant < CodeObject
-    attr_accessor :name, :value
-
-    def initialize(name, value, comment)
-      super()
-      @name = name
-      @value = value
-      self.comment = comment
-    end
-  end
-
-  # Represent attributes
-  class Attr < CodeObject
-    attr_accessor :text, :name, :rw, :visibility
-
-    def initialize(text, name, rw, comment)
-      super()
-      @text = text
-      @name = name
-      @rw = rw
-      @visibility = :public
-      self.comment = comment
-    end
-
-    def to_s
-      "attr: #{self.name} #{self.rw}\n#{self.comment}"
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-  end
-
-  # a required file
-
-  class Require < CodeObject
-    attr_accessor :name
-
-    def initialize(name, comment)
-      super()
-      @name = name.gsub(/'|"/, "") #'
-      self.comment = comment
-    end
-
-  end
-
-  # an included module
-  class Include < CodeObject
-    attr_accessor :name
-
-    def initialize(name, comment)
-      super()
-      @name = name
-      self.comment = comment
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/diagram.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/diagram.rb
deleted file mode 100644
index 9fdc49c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/diagram.rb
+++ /dev/null
@@ -1,335 +0,0 @@
-# A wonderful hack by to draw package diagrams using the dot package.
-# Originally written by  Jah, team Enticla.
-#
-# You must have the V1.7 or later in your path
-# http://www.research.att.com/sw/tools/graphviz/
-
-require "rdoc/dot/dot"
-require 'rdoc/options'
-
-module RDoc
-
-  # Draw a set of diagrams representing the modules and classes in the
-  # system. We draw one diagram for each file, and one for each toplevel
-  # class or module. This means there will be overlap. However, it also
-  # means that you'll get better context for objects.
-  #
-  # To use, simply
-  #
-  #   d = Diagram.new(info)   # pass in collection of top level infos
-  #   d.draw
-  #
-  # The results will be written to the +dot+ subdirectory. The process
-  # also sets the +diagram+ attribute in each object it graphs to
-  # the name of the file containing the image. This can be used
-  # by output generators to insert images.
-
-  class Diagram
-
-    FONT = "Arial"
-
-    DOT_PATH = "dot"
-
-    # Pass in the set of top level objects. The method also creates
-    # the subdirectory to hold the images
-
-    def initialize(info, options)
-      @info = info
-      @options = options
-      @counter = 0
-      File.makedirs(DOT_PATH)
-      @diagram_cache = {}
-    end
-
-    # Draw the diagrams. We traverse the files, drawing a diagram for
-    # each. We also traverse each top-level class and module in that
-    # file drawing a diagram for these too. 
-
-    def draw
-      unless @options.quiet
-        $stderr.print "Diagrams: "
-        $stderr.flush
-      end
-
-      @info.each_with_index do |i, file_count|
-        @done_modules = {}
-        @local_names = find_names(i)
-        @global_names = []
-        @global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
-                                    'fontname' => FONT,
-                                    'fontsize' => '8',
-                                    'bgcolor'  => 'lightcyan1',
-                                    'compound' => 'true')
-        
-        # it's a little hack %) i'm too lazy to create a separate class
-        # for default node
-        graph << DOT::DOTNode.new('name' => 'node',
-                                  'fontname' => FONT,
-                                  'color' => 'black',
-                                  'fontsize' => 8)
-        
-        i.modules.each do |mod|
-          draw_module(mod, graph, true, i.file_relative_name)
-        end
-        add_classes(i, graph, i.file_relative_name)
-
-        i.diagram = convert_to_png("f_#{file_count}", graph)
-        
-        # now go through and document each top level class and
-        # module independently
-        i.modules.each_with_index do |mod, count|
-          @done_modules = {}
-          @local_names = find_names(mod)
-          @global_names = []
-
-          @global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
-                                      'fontname' => FONT,
-                                      'fontsize' => '8',
-                                      'bgcolor'  => 'lightcyan1',
-                                      'compound' => 'true')
-
-          graph << DOT::DOTNode.new('name' => 'node',
-                                    'fontname' => FONT,
-                                    'color' => 'black',
-                                    'fontsize' => 8)
-          draw_module(mod, graph, true)
-          mod.diagram = convert_to_png("m_#{file_count}_#{count}", 
-                                       graph) 
-        end
-      end
-      $stderr.puts unless @options.quiet
-    end
-
-    #######
-    private
-    #######
-
-    def find_names(mod)
-      return [mod.full_name] + mod.classes.collect{|cl| cl.full_name} +
-        mod.modules.collect{|m| find_names(m)}.flatten
-    end
-
-    def find_full_name(name, mod)
-      full_name = name.dup
-      return full_name if @local_names.include?(full_name)
-      mod_path = mod.full_name.split('::')[0..-2]
-      unless mod_path.nil?
-        until mod_path.empty?
-          full_name = mod_path.pop + '::' + full_name
-          return full_name if @local_names.include?(full_name)
-        end
-      end
-      return name
-    end
-
-    def draw_module(mod, graph, toplevel = false, file = nil)
-      return if  @done_modules[mod.full_name] and not toplevel
-
-      @counter += 1
-      url = mod.http_url("classes")
-      m = DOT::DOTSubgraph.new('name' => "cluster_#{mod.full_name.gsub( /:/,'_' )}",
-                               'label' => mod.name,
-                               'fontname' => FONT,
-                               'color' => 'blue', 
-                               'style' => 'filled', 
-                               'URL'   => %{"#{url}"},
-                               'fillcolor' => toplevel ? 'palegreen1' : 'palegreen3')
-      
-      @done_modules[mod.full_name] = m
-      add_classes(mod, m, file)
-      graph << m
-
-      unless mod.includes.empty?
-        mod.includes.each do |m|
-          m_full_name = find_full_name(m.name, mod)
-          if @local_names.include?(m_full_name)
-            @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{mod.full_name.gsub( /:/,'_' )}",
-                                      'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}",
-                                      'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
-          else
-            unless @global_names.include?(m_full_name)
-              path = m_full_name.split("::")
-              url = File.join('classes', *path) + ".html"
-              @global_graph << DOT::DOTNode.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
-                                        'shape' => 'box',
-                                        'label' => "#{m_full_name}",
-                                        'URL'   => %{"#{url}"})
-              @global_names << m_full_name
-            end
-            @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{mod.full_name.gsub( /:/,'_' )}",
-                                      'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
-          end
-        end
-      end
-    end
-
-    def add_classes(container, graph, file = nil )
-
-      use_fileboxes = Options.instance.fileboxes
-
-      files = {}
-
-      # create dummy node (needed if empty and for module includes)
-      if container.full_name
-        graph << DOT::DOTNode.new('name'     => "#{container.full_name.gsub( /:/,'_' )}",
-                                  'label'    => "",
-                                  'width'  => (container.classes.empty? and 
-                                               container.modules.empty?) ? 
-                                  '0.75' : '0.01',
-                                  'height' => '0.01',
-                                  'shape' => 'plaintext')
-      end
-      container.classes.each_with_index do |cl, cl_index|
-        last_file = cl.in_files[-1].file_relative_name
-
-        if use_fileboxes && !files.include?(last_file)
-          @counter += 1
-          files[last_file] =
-            DOT::DOTSubgraph.new('name'     => "cluster_#{@counter}",
-                                 'label'    => "#{last_file}",
-                                 'fontname' => FONT,
-                                 'color'=>
-                                 last_file == file ? 'red' : 'black')
-        end
-
-        next if cl.name == 'Object' || cl.name[0,2] == "<<"
-
-        url = cl.http_url("classes")
-        
-        label = cl.name.dup
-        if use_fileboxes && cl.in_files.length > 1
-          label <<  '\n[' + 
-                        cl.in_files.collect {|i|
-                             i.file_relative_name 
-                        }.sort.join( '\n' ) +
-                    ']'
-        end 
-                
-        attrs = {
-          'name' => "#{cl.full_name.gsub( /:/, '_' )}",
-          'fontcolor' => 'black',
-          'style'=>'filled',
-          'color'=>'palegoldenrod',
-          'label' => label,
-          'shape' => 'ellipse',
-          'URL'   => %{"#{url}"}
-        }
-
-        c = DOT::DOTNode.new(attrs)
-        
-        if use_fileboxes
-          files[last_file].push c 
-        else
-          graph << c
-        end
-      end
-      
-      if use_fileboxes
-        files.each_value do |val|
-          graph << val
-        end
-      end
-      
-      unless container.classes.empty?
-        container.classes.each_with_index do |cl, cl_index|
-          cl.includes.each do |m|
-            m_full_name = find_full_name(m.name, cl)
-            if @local_names.include?(m_full_name)
-              @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{cl.full_name.gsub( /:/,'_' )}",
-                                      'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}")
-            else
-              unless @global_names.include?(m_full_name)
-                path = m_full_name.split("::")
-                url = File.join('classes', *path) + ".html"
-                @global_graph << DOT::DOTNode.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
-                                          'shape' => 'box',
-                                          'label' => "#{m_full_name}",
-                                          'URL'   => %{"#{url}"})
-                @global_names << m_full_name
-              end
-              @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{cl.full_name.gsub( /:/, '_')}")
-            end
-          end
-
-          sclass = cl.superclass
-          next if sclass.nil? || sclass == 'Object'
-          sclass_full_name = find_full_name(sclass,cl)
-          unless @local_names.include?(sclass_full_name) or @global_names.include?(sclass_full_name)
-            path = sclass_full_name.split("::")
-            url = File.join('classes', *path) + ".html"
-            @global_graph << DOT::DOTNode.new(
-                       'name' => "#{sclass_full_name.gsub( /:/, '_' )}",
-                       'label' => sclass_full_name,
-                       'URL'   => %{"#{url}"})
-            @global_names << sclass_full_name
-          end
-          @global_graph << DOT::DOTEdge.new('from' => "#{sclass_full_name.gsub( /:/,'_' )}",
-                                    'to' => "#{cl.full_name.gsub( /:/, '_')}")
-        end
-      end
-
-      container.modules.each do |submod|
-        draw_module(submod, graph)
-      end
-      
-    end
-
-    def convert_to_png(file_base, graph)
-      str = graph.to_s
-      return @diagram_cache[str] if @diagram_cache[str]
-      op_type = Options.instance.image_format
-      dotfile = File.join(DOT_PATH, file_base)
-      src = dotfile + ".dot"
-      dot = dotfile + "." + op_type
-
-      unless @options.quiet
-        $stderr.print "."
-        $stderr.flush
-      end
-
-      File.open(src, 'w+' ) do |f|
-        f << str << "\n"
-      end
-      
-      system "dot", "-T#{op_type}", src, "-o", dot
-
-      # Now construct the imagemap wrapper around
-      # that png
-
-      ret = wrap_in_image_map(src, dot)
-      @diagram_cache[str] = ret
-      return ret
-    end
-
-    # Extract the client-side image map from dot, and use it
-    # to generate the imagemap proper. Return the whole
-    # <map>..<img> combination, suitable for inclusion on
-    # the page
-
-    def wrap_in_image_map(src, dot)
-      res = %{<map id="map" name="map">\n}
-      dot_map = `dot -Tismap #{src}`
-      dot_map.each do |area|
-        unless area =~ /^rectangle \((\d+),(\d+)\) \((\d+),(\d+)\) ([\/\w.]+)\s*(.*)/
-          $stderr.puts "Unexpected output from dot:\n#{area}"
-          return nil
-        end
-        
-        xs, ys = [$1.to_i, $3.to_i], [$2.to_i, $4.to_i]
-        url, area_name = $5, $6
-
-        res <<  %{  <area shape="rect" coords="#{xs.min},#{ys.min},#{xs.max},#{ys.max}" }
-        res <<  %{     href="#{url}" alt="#{area_name}" />\n}
-      end
-      res << "</map>\n"
-#      map_file = src.sub(/.dot/, '.map')
-#      system("dot -Timap #{src} -o #{map_file}")
-      res << %{<img src="#{dot}" usemap="#map" border="0" alt="#{dot}">}
-      return res
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/dot/dot.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/dot/dot.rb
deleted file mode 100644
index 6dbb7cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/dot/dot.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-module DOT
-
-    # these glogal vars are used to make nice graph source
-    $tab = '    '
-    $tab2 = $tab * 2
-
-    # if we don't like 4 spaces, we can change it any time
-    def change_tab( t )
-        $tab = t
-        $tab2 = t * 2
-    end
-
-    # options for node declaration
-    NODE_OPTS = [
-        'bgcolor',
-        'color',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'height',
-        'width',
-        'label',
-        'layer',
-        'rank',
-        'shape',
-        'shapefile',
-        'style',
-        'URL',
-    ]
-
-    # options for edge declaration
-    EDGE_OPTS = [
-        'color',
-        'decorate',
-        'dir',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'id',
-        'label',
-        'layer',
-        'lhead',
-        'ltail',
-        'minlen',
-        'style',
-        'weight'
-    ]
-
-    # options for graph declaration
-    GRAPH_OPTS = [
-        'bgcolor',
-        'center',
-        'clusterrank',
-        'color',
-        'compound',
-        'concentrate',
-        'fillcolor',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'label',
-        'layerseq',
-        'margin',
-        'mclimit',
-        'nodesep',
-        'nslimit',
-        'ordering',
-        'orientation',
-        'page',
-        'rank',
-        'rankdir',
-        'ranksep',
-        'ratio',
-        'size',
-        'style',
-        'URL'
-    ]
-
-    # a root class for any element in dot notation
-    class DOTSimpleElement
-        attr_accessor :name
-
-        def initialize( params = {} )
-            @label = params['name'] ? params['name'] : ''
-        end
-
-        def to_s
-            @name
-        end
-    end
-
-    # an element that has options ( node, edge or graph )
-    class DOTElement < DOTSimpleElement
-        #attr_reader :parent
-        attr_accessor :name, :options
-
-        def initialize( params = {}, option_list = [] )
-            super( params )
-            @name = params['name'] ? params['name'] : nil
-            @parent = params['parent'] ? params['parent'] : nil
-            @options = {}
-            option_list.each{ |i|
-                @options[i] = params[i] if params[i]
-            }
-            @options['label'] ||= @name if @name != 'node'
-        end
-
-        def each_option
-            @options.each{ |i| yield i }
-        end
-
-        def each_option_pair
-            @options.each_pair{ |key, val| yield key, val }
-        end
-
-        #def parent=( thing )
-        #    @parent.delete( self ) if defined?( @parent ) and @parent
-        #    @parent = thing
-        #end
-    end
-
-
-    # this is used when we build nodes that have shape=record
-    # ports don't have options :)
-    class DOTPort < DOTSimpleElement
-        attr_accessor :label
-
-        def initialize( params = {} )
-            super( params )
-            @name = params['label'] ? params['label'] : ''
-        end
-        def to_s
-            ( @name && @name != "" ? "<#{@name}>" : "" ) + "#{@label}"
-        end
-    end
-
-    # node element
-    class DOTNode < DOTElement
-
-        def initialize( params = {}, option_list = NODE_OPTS )
-            super( params, option_list )
-            @ports = params['ports'] ? params['ports'] : []
-        end
-
-        def each_port
-            @ports.each{ |i| yield i }
-        end
-
-        def << ( thing )
-            @ports << thing
-        end
-
-        def push ( thing )
-            @ports.push( thing )
-        end
-
-        def pop
-            @ports.pop
-        end
-
-        def to_s( t = '' )
-
-            label = @options['shape'] != 'record' && @ports.length == 0 ?
-                @options['label'] ?
-                    t + $tab + "label = \"#{@options['label']}\"\n" :
-                    '' :
-                t + $tab + 'label = "' + " \\\n" +
-                t + $tab2 + "#{@options['label']}| \\\n" +
-                @ports.collect{ |i|
-                    t + $tab2 + i.to_s
-                }.join( "| \\\n" ) + " \\\n" +
-                t + $tab + '"' + "\n"
-
-            t + "#{@name} [\n" +
-            @options.to_a.collect{ |i|
-                i[1] && i[0] != 'label' ?
-                    t + $tab + "#{i[0]} = #{i[1]}" : nil
-            }.compact.join( ",\n" ) + ( label != '' ? ",\n" : "\n" ) +
-            label +
-            t + "]\n"
-        end
-    end
-
-    # subgraph element is the same to graph, but has another header in dot
-    # notation
-    class DOTSubgraph < DOTElement
-
-        def initialize( params = {}, option_list = GRAPH_OPTS )
-            super( params, option_list )
-            @nodes = params['nodes'] ? params['nodes'] : []
-            @dot_string = 'subgraph'
-        end
-
-        def each_node
-            @nodes.each{ |i| yield i }
-        end
-
-        def << ( thing )
-            @nodes << thing
-        end
-
-        def push( thing )
-            @nodes.push( thing )
-        end
-
-        def pop
-            @nodes.pop
-        end
-
-        def to_s( t = '' )
-          hdr = t + "#{@dot_string} #{@name} {\n"
-
-          options = @options.to_a.collect{ |name, val|
-            val && name != 'label' ?
-            t + $tab + "#{name} = #{val}" :
-              name ? t + $tab + "#{name} = \"#{val}\"" : nil
-          }.compact.join( "\n" ) + "\n"
-
-          nodes = @nodes.collect{ |i|
-            i.to_s( t + $tab )
-          }.join( "\n" ) + "\n"
-          hdr + options + nodes + t + "}\n"
-        end
-    end
-
-    # this is graph
-    class DOTDigraph < DOTSubgraph
-        def initialize( params = {}, option_list = GRAPH_OPTS )
-            super( params, option_list )
-            @dot_string = 'digraph'
-        end
-    end
-
-    # this is edge
-    class DOTEdge < DOTElement
-        attr_accessor :from, :to
-        def initialize( params = {}, option_list = EDGE_OPTS )
-            super( params, option_list )
-            @from = params['from'] ? params['from'] : nil
-            @to = params['to'] ? params['to'] : nil
-        end
-
-        def to_s( t = '' )
-            t + "#{@from} -> #{to} [\n" +
-            @options.to_a.collect{ |i|
-                i[1] && i[0] != 'label' ?
-                    t + $tab + "#{i[0]} = #{i[1]}" :
-                    i[1] ? t + $tab + "#{i[0]} = \"#{i[1]}\"" : nil
-            }.compact.join( "\n" ) + "\n" + t + "]\n"
-        end
-    end
-end
-
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/chm_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/chm_generator.rb
deleted file mode 100644
index 51eeda8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/chm_generator.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-require 'rdoc/generators/html_generator'
-
-module Generators
-
-  class CHMGenerator < HTMLGenerator
-
-    HHC_PATH = "c:/Program Files/HTML Help Workshop/hhc.exe"
-
-    # Standard generator factory
-    def CHMGenerator.for(options)
-      CHMGenerator.new(options)
-    end
-
-    
-    def initialize(*args)
-      super
-      @op_name = @options.op_name || "rdoc"
-      check_for_html_help_workshop
-    end
-
-    def check_for_html_help_workshop
-      stat = File.stat(HHC_PATH)
-    rescue
-      $stderr <<
-	"\n.chm output generation requires that Microsoft's Html Help\n" <<
-	"Workshop is installed. RDoc looks for it in:\n\n    " <<
-	HHC_PATH <<
-	"\n\nYou can download a copy for free from:\n\n" <<
-	"    http://msdn.microsoft.com/library/default.asp?" <<
-	"url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp\n\n"
-      
-      exit 99
-    end
-
-    # Generate the html as normal, then wrap it
-    # in a help project
-    def generate(info)
-      super
-      @project_name = @op_name + ".hhp"
-      create_help_project
-    end
-
-    # The project contains the project file, a table of contents
-    # and an index
-    def create_help_project
-      create_project_file
-      create_contents_and_index
-      compile_project
-    end
-
-    # The project file links together all the various
-    # files that go to make up the help.
-
-    def create_project_file
-      template = TemplatePage.new(RDoc::Page::HPP_FILE)
-      values = { "title" => @options.title, "opname" => @op_name }
-      files = []
-      @files.each do |f|
-	files << { "html_file_name" => f.path }
-      end
-
-      values['all_html_files'] = files
-      
-      File.open(@project_name, "w") do |f|
-        template.write_html_on(f, values)
-      end
-    end
-
-    # The contents is a list of all files and modules.
-    # For each we include  as sub-entries the list
-    # of methods they contain. As we build the contents
-    # we also build an index file
-
-    def create_contents_and_index
-      contents = []
-      index    = []
-
-      (@files+ at classes).sort.each do |entry|
-	content_entry = { "c_name" => entry.name, "ref" => entry.path }
-	index << { "name" => entry.name, "aref" => entry.path }
-
-	internals = []
-
-	methods = entry.build_method_summary_list(entry.path)
-
-	content_entry["methods"] = methods unless methods.empty?
-        contents << content_entry
-	index.concat methods
-      end
-
-      values = { "contents" => contents }
-      template = TemplatePage.new(RDoc::Page::CONTENTS)
-      File.open("contents.hhc", "w") do |f|
-	template.write_html_on(f, values)
-      end
-
-      values = { "index" => index }
-      template = TemplatePage.new(RDoc::Page::CHM_INDEX)
-      File.open("index.hhk", "w") do |f|
-	template.write_html_on(f, values)
-      end      
-    end
-
-    # Invoke the windows help compiler to compiler the project
-    def compile_project
-      system(HHC_PATH, @project_name)
-    end
-
-  end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/html_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/html_generator.rb
deleted file mode 100644
index 1f9b808..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/html_generator.rb
+++ /dev/null
@@ -1,1509 +0,0 @@
-# We're responsible for generating all the HTML files
-# from the object tree defined in code_objects.rb. We
-# generate:
-#
-# [files]   an html file for each input file given. These
-#           input files appear as objects of class
-#           TopLevel
-#
-# [classes] an html file for each class or module encountered.
-#           These classes are not grouped by file: if a file
-#           contains four classes, we'll generate an html
-#           file for the file itself, and four html files 
-#           for the individual classes. 
-#
-# [indices] we generate three indices for files, classes,
-#           and methods. These are displayed in a browser
-#           like window with three index panes across the
-#           top and the selected description below
-#
-# Method descriptions appear in whatever entity (file, class,
-# or module) that contains them.
-#
-# We generate files in a structure below a specified subdirectory,
-# normally +doc+.
-#
-#  opdir
-#     |
-#     |___ files
-#     |       |__  per file summaries
-#     |
-#     |___ classes
-#             |__ per class/module descriptions
-#
-# HTML is generated using the Template class.
-#
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/template'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-require 'cgi'
-
-module Generators
-
-  # Name of sub-direcories that hold file and class/module descriptions
-
-  FILE_DIR  = "files"
-  CLASS_DIR = "classes"
-  CSS_NAME  = "rdoc-style.css"
-  
-
-  ##
-  # Build a hash of all items that can be cross-referenced.
-  # This is used when we output required and included names: 
-  # if the names appear in this hash, we can generate
-  # an html cross reference to the appropriate description.
-  # We also use this when parsing comment blocks: any decorated 
-  # words matching an entry in this list are hyperlinked.
-
-  class AllReferences
-    @@refs = {}
-    
-    def AllReferences::reset
-      @@refs = {}
-    end
-
-    def AllReferences.add(name, html_class)
-      @@refs[name] = html_class
-    end
-
-    def AllReferences.[](name)
-      @@refs[name]
-    end
-
-    def AllReferences.keys
-      @@refs.keys
-    end
-  end
-
-
-  ##
-  # Subclass of the SM::ToHtml class that supports looking
-  # up words in the AllReferences list. Those that are
-  # found (like AllReferences in this comment) will
-  # be hyperlinked
-
-  class HyperlinkHtml < SM::ToHtml
-    # We need to record the html path of our caller so we can generate
-    # correct relative paths for any hyperlinks that we find
-    def initialize(from_path, context)
-      super()
-      @from_path = from_path
-
-      @parent_name = context.parent_name
-      @parent_name += "::" if @parent_name
-      @context = context
-    end
-
-    # We're invoked when any text matches the CROSSREF pattern
-    # (defined in MarkUp). If we fine the corresponding reference,
-    # generate a hyperlink. If the name we're looking for contains
-    # no punctuation, we look for it up the module/class chain. For
-    # example, HyperlinkHtml is found, even without the Generators::
-    # prefix, because we look for it in module Generators first.
-
-    def handle_special_CROSSREF(special)
-      name = special.text
-      if name[0,1] == '#'
-        lookup = name[1..-1]
-        name = lookup unless Options.instance.show_hash
-      else
-        lookup = name
-      end
-
-      # Find class, module, or method in class or module.
-      if /([A-Z]\w*)[.\#](\w+[!?=]?)/ =~ lookup
-        container = $1
-        method = $2
-        ref = @context.find_symbol(container, method)
-      elsif /([A-Za-z]\w*)[.\#](\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?)/ =~ lookup
-        container = $1
-        method = $2
-        ref = @context.find_symbol(container, method)
-      else
-        ref = @context.find_symbol(lookup)
-      end
-
-      if ref and ref.document_self
-        "<a href=\"#{ref.as_href(@from_path)}\">#{name}</a>"
-      else
-        name
-      end
-    end
-
-
-    # Generate a hyperlink for url, labeled with text. Handle the
-    # special cases for img: and link: described under handle_special_HYPEDLINK
-    def gen_url(url, text)
-      if url =~ /([A-Za-z]+):(.*)/
-        type = $1
-        path = $2
-      else
-        type = "http"
-        path = url
-        url  = "http://#{url}"
-      end
-
-      if type == "link"
-        if path[0,1] == '#'     # is this meaningful?
-          url = path
-        else
-          url = HTMLGenerator.gen_url(@from_path, path)
-        end
-      end
-
-      if (type == "http" || type == "link") && 
-          url =~ /\.(gif|png|jpg|jpeg|bmp)$/
-
-        "<img src=\"#{url}\" />"
-      else
-        "<a href=\"#{url}\">#{text.sub(%r{^#{type}:/*}, '')}</a>"
-      end
-    end
-
-    # And we're invoked with a potential external hyperlink mailto:
-    # just gets inserted. http: links are checked to see if they
-    # reference an image. If so, that image gets inserted using an
-    # <img> tag. Otherwise a conventional <a href> is used.  We also
-    # support a special type of hyperlink, link:, which is a reference
-    # to a local file whose path is relative to the --op directory.
-
-    def handle_special_HYPERLINK(special)
-      url = special.text
-      gen_url(url, url)
-    end
-
-    # HEre's a hypedlink where the label is different to the URL
-    #  <label>[url]
-    #
-    
-    def handle_special_TIDYLINK(special)
-      text = special.text
-#      unless text =~ /(\S+)\[(.*?)\]/
-      unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/ 
-        return text
-      end
-      label = $1
-      url   = $2
-      gen_url(url, label)
-    end
-
-  end
-
-
-  
-  #####################################################################
-  #
-  # Handle common markup tasks for the various Html classes
-  #
-
-  module MarkUp
-
-    # Convert a string in markup format into HTML. We keep a cached
-    # SimpleMarkup object lying around after the first time we're
-    # called per object.
-
-    def markup(str, remove_para=false)
-      return '' unless str
-      unless defined? @markup
-        @markup = SM::SimpleMarkup.new
-
-        # class names, variable names, or instance variables
-        @markup.add_special(/(
-                               \w+(::\w+)*[.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator in Fortran95)
-                             | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
-                             | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
-                             | \b([A-Z]\w+(::\w+)*)       #    A::B..
-                             | \#\w+[!?=]?                #    #meth_name 
-                             | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
-                             )/x, 
-                            :CROSSREF)
-
-        # external hyperlinks
-        @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
-
-        # and links of the form  <text>[<url>]
-        @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
-#        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
-
-      end
-      unless defined? @html_formatter
-        @html_formatter = HyperlinkHtml.new(self.path, self)
-      end
-
-      # Convert leading comment markers to spaces, but only
-      # if all non-blank lines have them
-
-      if str =~ /^(?>\s*)[^\#]/
-        content = str
-      else
-        content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
-      end
-
-      res = @markup.convert(content, @html_formatter)
-      if remove_para
-        res.sub!(/^<p>/, '')
-        res.sub!(/<\/p>$/, '')
-      end
-      res
-    end
-
-    # Qualify a stylesheet URL; if if +css_name+ does not begin with '/' or
-    # 'http[s]://', prepend a prefix relative to +path+. Otherwise, return it
-    # unmodified.
-
-    def style_url(path, css_name=nil)
-#      $stderr.puts "style_url( #{path.inspect}, #{css_name.inspect} )"
-      css_name ||= CSS_NAME
-      if %r{^(https?:/)?/} =~ css_name
-        return css_name
-      else
-        return HTMLGenerator.gen_url(path, css_name)
-      end
-    end
-
-    # Build a webcvs URL with the given 'url' argument. URLs with a '%s' in them
-    # get the file's path sprintfed into them; otherwise they're just catenated
-    # together.
-
-    def cvs_url(url, full_path)
-      if /%s/ =~ url
-        return sprintf( url, full_path )
-      else
-        return url + full_path
-      end
-    end
-  end
-
-
-  #####################################################################
-  #
-  # A Context is built by the parser to represent a container: contexts
-  # hold classes, modules, methods, require lists and include lists.
-  # ClassModule and TopLevel are the context objects we process here
-  # 
-  class ContextUser
-
-    include MarkUp
-
-    attr_reader :context
-    
-    def initialize(context, options)
-      @context = context
-      @options = options
-    end
-      
-    # convenience method to build a hyperlink
-    def href(link, cls, name)
-      %{<a href="#{link}" class="#{cls}">#{name}</a>} #"
-    end
-
-    # return a reference to outselves to be used as an href=
-    # the form depends on whether we're all in one file
-    # or in multiple files
-
-    def as_href(from_path)
-      if @options.all_one_file
-        "#" + path
-      else
-        HTMLGenerator.gen_url(from_path, path)
-      end
-    end
-
-    # Create a list of HtmlMethod objects for each method
-    # in the corresponding context object. If the @options.show_all
-    # variable is set (corresponding to the <tt>--all</tt> option,
-    # we include all methods, otherwise just the public ones.
-
-    def collect_methods
-      list = @context.method_list
-      unless @options.show_all
-        list = list.find_all {|m| m.visibility == :public || m.visibility == :protected || m.force_documentation }
-      end
-      @methods = list.collect {|m| HtmlMethod.new(m, self, @options) }
-    end
-
-    # Build a summary list of all the methods in this context
-    def build_method_summary_list(path_prefix="")
-      collect_methods unless @methods
-      meths = @methods.sort
-      res = []
-      meths.each do |meth|
-	res << {
-          "name" => CGI.escapeHTML(meth.name),
-          "aref" => "#{path_prefix}\##{meth.aref}" 
-        }
-      end
-      res
-    end
-
-
-    # Build a list of aliases for which we couldn't find a
-    # corresponding method
-    def build_alias_summary_list(section)
-      values = []
-      @context.aliases.each do |al|
-        next unless al.section == section
-        res = {
-          'old_name' => al.old_name,
-          'new_name' => al.new_name,
-        }
-        if al.comment && !al.comment.empty?
-          res['desc'] = markup(al.comment, true)
-        end
-        values << res
-      end
-      values
-    end
-    
-    # Build a list of constants
-    def build_constants_summary_list(section)
-      values = []
-      @context.constants.each do |co|
-        next unless co.section == section
-        res = {
-          'name'  => co.name,
-          'value' => CGI.escapeHTML(co.value)
-        }
-        res['desc'] = markup(co.comment, true) if co.comment && !co.comment.empty?
-        values << res
-      end
-      values
-    end
-    
-    def build_requires_list(context)
-      potentially_referenced_list(context.requires) {|fn| [fn + ".rb"] }
-    end
-
-    def build_include_list(context)
-      potentially_referenced_list(context.includes)
-    end
-
-    # Build a list from an array of <i>Htmlxxx</i> items. Look up each
-    # in the AllReferences hash: if we find a corresponding entry,
-    # we generate a hyperlink to it, otherwise just output the name.
-    # However, some names potentially need massaging. For example,
-    # you may require a Ruby file without the .rb extension,
-    # but the file names we know about may have it. To deal with
-    # this, we pass in a block which performs the massaging,
-    # returning an array of alternative names to match
-
-    def potentially_referenced_list(array)
-      res = []
-      array.each do |i|
-        ref = AllReferences[i.name] 
-#         if !ref
-#           container = @context.parent
-#           while !ref && container
-#             name = container.name + "::" + i.name
-#             ref = AllReferences[name] 
-#             container = container.parent
-#           end
-#         end
-
-        ref = @context.find_symbol(i.name)
-        ref = ref.viewer if ref
-
-        if !ref && block_given?
-          possibles = yield(i.name)
-          while !ref and !possibles.empty?
-            ref = AllReferences[possibles.shift]
-          end
-        end
-        h_name = CGI.escapeHTML(i.name)
-        if ref and ref.document_self
-          path = url(ref.path)
-          res << { "name" => h_name, "aref" => path }
-        else
-          res << { "name" => h_name }
-        end
-      end
-      res
-    end
-
-    # Build an array of arrays of method details. The outer array has up
-    # to six entries, public, private, and protected for both class
-    # methods, the other for instance methods. The inner arrays contain
-    # a hash for each method
-
-    def build_method_detail_list(section)
-      outer = []
-
-      methods = @methods.sort
-      for singleton in [true, false]
-        for vis in [ :public, :protected, :private ] 
-          res = []
-          methods.each do |m|
-            if m.section == section and
-                m.document_self and 
-                m.visibility == vis and 
-                m.singleton == singleton
-              row = {}
-              if m.call_seq
-                row["callseq"] = m.call_seq.gsub(/->/, '→')
-              else
-                row["name"]        = CGI.escapeHTML(m.name)
-                row["params"]      = m.params
-              end
-              desc = m.description.strip
-              row["m_desc"]      = desc unless desc.empty?
-              row["aref"]        = m.aref
-              row["visibility"]  = m.visibility.to_s
-
-              alias_names = []
-              m.aliases.each do |other|
-                if other.viewer   # won't be if the alias is private
-                  alias_names << {
-                    'name' => other.name,
-                    'aref'  => other.viewer.as_href(path)
-                  } 
-                end
-              end
-              unless alias_names.empty?
-                row["aka"] = alias_names
-              end
-
-              if @options.inline_source
-                code = m.source_code
-                row["sourcecode"] = code if code
-              else
-                code = m.src_url
-                if code
-                  row["codeurl"] = code
-                  row["imgurl"]  = m.img_url
-                end
-              end
-              res << row
-            end
-          end
-          if res.size > 0 
-            outer << {
-              "type"    => vis.to_s.capitalize,
-              "category"    => singleton ? "Class" : "Instance",
-              "methods" => res
-            }
-          end
-        end
-      end
-      outer
-    end
-
-    # Build the structured list of classes and modules contained
-    # in this context. 
-
-    def build_class_list(level, from, section, infile=nil)
-      res = ""
-      prefix = "  ::" * level;
-
-      from.modules.sort.each do |mod|
-        next unless mod.section == section
-        next if infile && !mod.defined_in?(infile)
-        if mod.document_self
-          res << 
-            prefix <<
-            "Module " <<
-            href(url(mod.viewer.path), "link", mod.full_name) <<
-            "<br />\n" <<
-            build_class_list(level + 1, mod, section, infile)
-        end
-      end
-
-      from.classes.sort.each do |cls|
-        next unless cls.section == section
-        next if infile && !cls.defined_in?(infile)
-        if cls.document_self
-          res      <<
-            prefix << 
-            "Class " <<
-            href(url(cls.viewer.path), "link", cls.full_name) <<
-            "<br />\n" <<
-            build_class_list(level + 1, cls, section, infile)
-        end
-      end
-
-      res
-    end
-    
-    def url(target)
-      HTMLGenerator.gen_url(path, target)
-    end
-
-    def aref_to(target)
-      if @options.all_one_file
-        "#" + target
-      else
-        url(target)
-      end
-    end
-
-    def document_self
-      @context.document_self
-    end
-
-    def diagram_reference(diagram)
-      res = diagram.gsub(/((?:src|href)=")(.*?)"/) {
-        $1 + url($2) + '"'
-      }
-      res
-    end
-
-
-    # Find a symbol in ourselves or our parent
-    def find_symbol(symbol, method=nil)
-      res = @context.find_symbol(symbol, method)
-      if res
-        res = res.viewer
-      end
-      res
-    end
-
-    # create table of contents if we contain sections
-      
-    def add_table_of_sections
-      toc = []
-      @context.sections.each do |section|
-        if section.title
-          toc << {
-            'secname' => section.title,
-            'href'    => section.sequence
-          }
-        end
-      end
-      
-      @values['toc'] = toc unless toc.empty?
-    end
-
-
-  end
-
-  #####################################################################
-  #
-  # Wrap a ClassModule context
-
-  class HtmlClass < ContextUser
-
-    attr_reader :path
-
-    def initialize(context, html_file, prefix, options)
-      super(context, options)
-
-      @html_file = html_file
-      @is_module = context.is_module?
-      @values    = {}
-
-      context.viewer = self
-
-      if options.all_one_file
-        @path = context.full_name
-      else
-        @path = http_url(context.full_name, prefix)
-      end
-
-      collect_methods
-
-      AllReferences.add(name, self)
-    end
-
-    # return the relative file name to store this class in,
-    # which is also its url
-    def http_url(full_name, prefix)
-      path = full_name.dup
-      if path['<<']
-        path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
-      end
-      File.join(prefix, path.split("::")) + ".html"
-    end
-
-
-    def name
-      @context.full_name
-    end
-
-    def parent_name
-      @context.parent.full_name
-    end
-
-    def index_name
-      name
-    end
-
-    def write_on(f)
-      value_hash
-      template = TemplatePage.new(RDoc::Page::BODY,
-                                      RDoc::Page::CLASS_PAGE,
-                                      RDoc::Page::METHOD_LIST)
-      template.write_html_on(f, @values)
-    end
-
-    def value_hash
-      class_attribute_values
-      add_table_of_sections
-
-      @values["charset"] = @options.charset
-      @values["style_url"] = style_url(path, @options.css)
-
-      d = markup(@context.comment)
-      @values["description"] = d unless d.empty?
-
-      ml = build_method_summary_list
-      @values["methods"] = ml unless ml.empty?
-
-      il = build_include_list(@context)
-      @values["includes"] = il unless il.empty?
-
-      @values["sections"] = @context.sections.map do |section|
-
-        secdata = {
-          "sectitle" => section.title,
-          "secsequence" => section.sequence,
-          "seccomment" => markup(section.comment)
-        }
-
-        al = build_alias_summary_list(section)
-        secdata["aliases"] = al unless al.empty?
-        
-        co = build_constants_summary_list(section)
-        secdata["constants"] = co unless co.empty?
-        
-        al = build_attribute_list(section)
-        secdata["attributes"] = al unless al.empty?
-        
-        cl = build_class_list(0, @context, section)
-        secdata["classlist"] = cl unless cl.empty?
-        
-        mdl = build_method_detail_list(section)
-        secdata["method_list"] = mdl unless mdl.empty?
-
-        secdata
-      end
-
-      @values
-    end
-
-    def build_attribute_list(section)
-      atts = @context.attributes.sort
-      res = []
-      atts.each do |att|
-        next unless att.section == section
-        if att.visibility == :public || att.visibility == :protected || @options.show_all
-          entry = {
-            "name"   => CGI.escapeHTML(att.name), 
-            "rw"     => att.rw, 
-            "a_desc" => markup(att.comment, true)
-          }
-          unless att.visibility == :public || att.visibility == :protected
-            entry["rw"] << "-"
-          end
-          res << entry
-        end
-      end
-      res
-    end
-
-    def class_attribute_values
-      h_name = CGI.escapeHTML(name)
-
-      @values["classmod"]  = @is_module ? "Module" : "Class"
-      @values["title"]     = "#{@values['classmod']}: #{h_name}"
-
-      c = @context
-      c = c.parent while c and !c.diagram
-      if c && c.diagram
-        @values["diagram"] = diagram_reference(c.diagram)
-      end
-
-      @values["full_name"] = h_name
-
-      parent_class = @context.superclass
-
-      if parent_class
-	@values["parent"] = CGI.escapeHTML(parent_class)
-
-	if parent_name
-	  lookup = parent_name + "::" + parent_class
-	else
-	  lookup = parent_class
-	end
-
-	parent_url = AllReferences[lookup] || AllReferences[parent_class]
-
-	if parent_url and parent_url.document_self
-	  @values["par_url"] = aref_to(parent_url.path)
-	end
-      end
-
-      files = []
-      @context.in_files.each do |f|
-        res = {}
-        full_path = CGI.escapeHTML(f.file_absolute_name)
-
-        res["full_path"]     = full_path
-        res["full_path_url"] = aref_to(f.viewer.path) if f.document_self
-
-        if @options.webcvs
-          res["cvsurl"] = cvs_url( @options.webcvs, full_path )
-        end
-
-        files << res
-      end
-
-      @values['infiles'] = files
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-
-  end
-
-  #####################################################################
-  #
-  # Handles the mapping of a file's information to HTML. In reality,
-  # a file corresponds to a +TopLevel+ object, containing modules,
-  # classes, and top-level methods. In theory it _could_ contain
-  # attributes and aliases, but we ignore these for now.
-
-  class HtmlFile < ContextUser
-
-    attr_reader :path
-    attr_reader :name
-
-    def initialize(context, options, file_dir)
-      super(context, options)
-
-      @values = {}
-
-      if options.all_one_file
-        @path = filename_to_label
-      else
-        @path = http_url(file_dir)
-      end
-
-      @name = @context.file_relative_name
-
-      collect_methods
-      AllReferences.add(name, self)
-      context.viewer = self
-    end
-
-    def http_url(file_dir)
-      File.join(file_dir, @context.file_relative_name.tr('.', '_')) +
-        ".html"
-    end
-
-    def filename_to_label
-      @context.file_relative_name.gsub(/%|\/|\?|\#/) {|s| '%' + ("%x" % s[0]) }
-    end
-
-    def index_name
-      name
-    end
-
-    def parent_name
-      nil
-    end
-
-    def value_hash
-      file_attribute_values
-      add_table_of_sections
-
-      @values["charset"]   = @options.charset
-      @values["href"]      = path
-      @values["style_url"] = style_url(path, @options.css)
-
-      if @context.comment
-        d = markup(@context.comment)
-        @values["description"] = d if d.size > 0
-      end
-
-      ml = build_method_summary_list
-      @values["methods"] = ml unless ml.empty?
-
-      il = build_include_list(@context)
-      @values["includes"] = il unless il.empty?
-
-      rl = build_requires_list(@context)
-      @values["requires"] = rl unless rl.empty?
-
-      if @options.promiscuous
-        file_context = nil
-      else
-        file_context = @context
-      end
-
-
-      @values["sections"] = @context.sections.map do |section|
-
-        secdata = {
-          "sectitle" => section.title,
-          "secsequence" => section.sequence,
-          "seccomment" => markup(section.comment)
-        }
-
-        cl = build_class_list(0, @context, section, file_context)
-        @values["classlist"] = cl unless cl.empty?
-
-        mdl = build_method_detail_list(section)
-        secdata["method_list"] = mdl unless mdl.empty?
-
-        al = build_alias_summary_list(section)
-        secdata["aliases"] = al unless al.empty?
-        
-        co = build_constants_summary_list(section)
-        @values["constants"] = co unless co.empty?
-
-        secdata
-      end
-      
-      @values
-    end
-    
-    def write_on(f)
-      value_hash
-      template = TemplatePage.new(RDoc::Page::BODY,
-                                  RDoc::Page::FILE_PAGE,
-                                  RDoc::Page::METHOD_LIST)
-      template.write_html_on(f, @values)
-    end
-
-    def file_attribute_values
-      full_path = @context.file_absolute_name
-      short_name = File.basename(full_path)
-      
-      @values["title"] = CGI.escapeHTML("File: #{short_name}")
-
-      if @context.diagram
-        @values["diagram"] = diagram_reference(@context.diagram)
-      end
-
-      @values["short_name"]   = CGI.escapeHTML(short_name)
-      @values["full_path"]    = CGI.escapeHTML(full_path)
-      @values["dtm_modified"] = @context.file_stat.mtime.to_s
-
-      if @options.webcvs
-        @values["cvsurl"] = cvs_url( @options.webcvs, @values["full_path"] )
-      end
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-  end
-
-  #####################################################################
-
-  class HtmlMethod
-    include MarkUp
-
-    attr_reader :context
-    attr_reader :src_url
-    attr_reader :img_url
-    attr_reader :source_code
-
-    @@seq = "M000000"
-
-    @@all_methods = []
-
-    def HtmlMethod::reset
-      @@all_methods = []
-    end
-
-    def initialize(context, html_class, options)
-      @context    = context
-      @html_class = html_class
-      @options    = options
-      @@seq       = @@seq.succ
-      @seq        = @@seq
-      @@all_methods << self
-
-      context.viewer = self
-
-      if (ts = @context.token_stream)
-        @source_code = markup_code(ts)
-        unless @options.inline_source
-          @src_url = create_source_code_file(@source_code)
-          @img_url = HTMLGenerator.gen_url(path, 'source.png')
-        end
-      end
-
-      AllReferences.add(name, self)
-    end
-    
-    # return a reference to outselves to be used as an href=
-    # the form depends on whether we're all in one file
-    # or in multiple files
-
-    def as_href(from_path)
-      if @options.all_one_file
-        "#" + path
-      else
-        HTMLGenerator.gen_url(from_path, path)
-      end
-    end
-
-    def name
-      @context.name
-    end
-
-    def section
-      @context.section
-    end
-
-    def index_name
-      "#{@context.name} (#{@html_class.name})"
-    end
-
-    def parent_name
-      if @context.parent.parent
-        @context.parent.parent.full_name
-      else
-        nil
-      end
-    end
-
-    def aref
-      @seq
-    end
-
-    def path
-      if @options.all_one_file
-	aref
-      else
-	@html_class.path + "#" + aref
-      end
-    end
-
-    def description
-      markup(@context.comment)
-    end
-
-    def visibility
-      @context.visibility
-    end
-
-    def singleton
-      @context.singleton
-    end
-
-    def call_seq
-      cs = @context.call_seq
-      if cs
-        cs.gsub(/\n/, "<br />\n")
-      else
-        nil
-      end
-    end
-
-    def params
-      # params coming from a call-seq in 'C' will start with the
-      # method name
-      p = @context.params
-      if p !~ /^\w/
-        p = @context.params.gsub(/\s*\#.*/, '')
-        p = p.tr("\n", " ").squeeze(" ")
-        p = "(" + p + ")" unless p[0] == ?(
-        
-        if (block = @context.block_params)
-         # If this method has explicit block parameters, remove any
-         # explicit &block
-
-         p.sub!(/,?\s*&\w+/, '')
-
-          block.gsub!(/\s*\#.*/, '')
-          block = block.tr("\n", " ").squeeze(" ")
-          if block[0] == ?(
-            block.sub!(/^\(/, '').sub!(/\)/, '')
-          end
-          p << " {|#{block.strip}| ...}"
-        end
-      end
-      CGI.escapeHTML(p)
-    end
-    
-    def create_source_code_file(code_body)
-      meth_path = @html_class.path.sub(/\.html$/, '.src')
-      File.makedirs(meth_path)
-      file_path = File.join(meth_path, @seq) + ".html"
-
-      template = TemplatePage.new(RDoc::Page::SRC_PAGE)
-      File.open(file_path, "w") do |f|
-        values = {
-          'title'     => CGI.escapeHTML(index_name),
-          'code'      => code_body,
-          'style_url' => style_url(file_path, @options.css),
-          'charset'   => @options.charset
-        }
-        template.write_html_on(f, values)
-      end
-      HTMLGenerator.gen_url(path, file_path)
-    end
-
-    def HtmlMethod.all_methods
-      @@all_methods
-    end
-
-    def <=>(other)
-      @context <=> other.context
-    end
-
-    ##
-    # Given a sequence of source tokens, mark up the source code
-    # to make it look purty.
-
-
-    def markup_code(tokens)
-      src = ""
-      tokens.each do |t|
-        next unless t
-        #    p t.class
-#        style = STYLE_MAP[t.class]
-        style = case t
-                when RubyToken::TkCONSTANT then "ruby-constant"
-                when RubyToken::TkKW       then "ruby-keyword kw"
-                when RubyToken::TkIVAR     then "ruby-ivar"
-                when RubyToken::TkOp       then "ruby-operator"
-                when RubyToken::TkId       then "ruby-identifier"
-                when RubyToken::TkNode     then "ruby-node"
-                when RubyToken::TkCOMMENT  then "ruby-comment cmt"
-                when RubyToken::TkREGEXP   then "ruby-regexp re"
-                when RubyToken::TkSTRING   then "ruby-value str"
-                when RubyToken::TkVal      then "ruby-value"
-                else
-                    nil
-                end
-
-        text = CGI.escapeHTML(t.text)
-
-        if style
-          src << "<span class=\"#{style}\">#{text}</span>"
-        else
-          src << text
-        end
-      end
-
-      add_line_numbers(src) if Options.instance.include_line_numbers
-      src
-    end
-
-    # we rely on the fact that the first line of a source code
-    # listing has 
-    #    # File xxxxx, line dddd
-
-    def add_line_numbers(src)
-      if src =~ /\A.*, line (\d+)/
-        first = $1.to_i - 1
-        last  = first + src.count("\n")
-        size = last.to_s.length
-        real_fmt = "%#{size}d: "
-        fmt = " " * (size+2)
-        src.gsub!(/^/) do
-          res = sprintf(fmt, first) 
-          first += 1
-          fmt = real_fmt
-          res
-        end
-      end
-    end
-
-    def document_self
-      @context.document_self
-    end
-
-    def aliases
-      @context.aliases
-    end
-
-    def find_symbol(symbol, method=nil)
-      res = @context.parent.find_symbol(symbol, method)
-      if res
-        res = res.viewer
-      end
-      res
-    end
-  end
-
-  #####################################################################
-
-  class HTMLGenerator
-
-    include MarkUp
-
-    ##
-    # convert a target url to one that is relative to a given
-    # path
-    
-    def HTMLGenerator.gen_url(path, target)
-      from          = File.dirname(path)
-      to, to_file   = File.split(target)
-      
-      from = from.split("/")
-      to   = to.split("/")
-      
-      while from.size > 0 and to.size > 0 and from[0] == to[0]
-        from.shift
-        to.shift
-      end
-      
-      from.fill("..")
-      from.concat(to)
-      from << to_file
-      File.join(*from)
-    end
-
-    # Generators may need to return specific subclasses depending
-    # on the options they are passed. Because of this
-    # we create them using a factory
-
-    def HTMLGenerator.for(options)
-      AllReferences::reset
-      HtmlMethod::reset
-
-      if options.all_one_file
-        HTMLGeneratorInOne.new(options)
-      else
-        HTMLGenerator.new(options)
-      end
-    end
-
-    class <<self
-      protected :new
-    end
-
-    # Set up a new HTML generator. Basically all we do here is load
-    # up the correct output temlate
-
-    def initialize(options) #:not-new:
-      @options    = options
-      load_html_template
-    end
-
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(toplevels)
-      @toplevels  = toplevels
-      @files      = []
-      @classes    = []
-
-      write_style_sheet
-      gen_sub_directories()
-      build_indices
-      generate_html
-    end
-
-    private
-
-    ##
-    # Load up the HTML template specified in the options.
-    # If the template name contains a slash, use it literally
-    #
-    def load_html_template
-      template = @options.template
-      unless template =~ %r{/|\\}
-        template = File.join("rdoc/generators/template",
-                             @options.generator.key, template)
-      end
-      require template
-      extend RDoc::Page
-    rescue LoadError
-      $stderr.puts "Could not find HTML template '#{template}'"
-      exit 99
-    end
-
-    ##
-    # Write out the style sheet used by the main frames
-    #
-    
-    def write_style_sheet
-      template = TemplatePage.new(RDoc::Page::STYLE)
-      unless @options.css
-        File.open(CSS_NAME, "w") do |f|
-          values = { "fonts" => RDoc::Page::FONTS }
-          template.write_html_on(f, values)
-        end
-      end
-    end
-
-    ##
-    # See the comments at the top for a description of the
-    # directory structure
-
-    def gen_sub_directories
-      File.makedirs(FILE_DIR, CLASS_DIR)
-    rescue 
-      $stderr.puts $!.message
-      exit 1
-    end
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @toplevels.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML
-    #
-    def generate_html
-      # the individual descriptions for files and classes
-      gen_into(@files)
-      gen_into(@classes)
-      # and the index files
-      gen_file_index
-      gen_class_index
-      gen_method_index
-      gen_main_index
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-    end
-
-    def gen_into(list)
-      list.each do |item|
-        if item.document_self
-          op_file = item.path
-          File.makedirs(File.dirname(op_file))
-          File.open(op_file, "w") { |file| item.write_on(file) }
-        end
-      end
-
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files', 
-                   RDoc::Page::FILE_INDEX, 
-                   "fr_file_index.html")
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes',
-                   RDoc::Page::CLASS_INDEX,
-                   "fr_class_index.html")
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods', 
-                   RDoc::Page::METHOD_INDEX,
-                   "fr_method_index.html")
-    end
-
-    
-    def gen_an_index(collection, title, template, filename)
-      template = TemplatePage.new(RDoc::Page::FR_INDEX_BODY, template)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      values = {
-        "entries"    => res,
-        'list_title' => CGI.escapeHTML(title),
-        'index_url'  => main_url,
-        'charset'    => @options.charset,
-        'style_url'  => style_url('', @options.css),
-      }
-
-      File.open(filename, "w") do |f|
-        template.write_html_on(f, values)
-      end
-    end
-
-    # The main index page is mostly a template frameset, but includes
-    # the initial page. If the <tt>--main</tt> option was given,
-    # we use this as our main page, otherwise we use the
-    # first file specified on the command line.
-
-    def gen_main_index
-      template = TemplatePage.new(RDoc::Page::INDEX)
-      File.open("index.html", "w") do |f|
-        values = {
-          "initial_page" => main_url,
-          'title'        => CGI.escapeHTML(@options.title),
-          'charset'      => @options.charset
-        }
-        if @options.inline_source
-          values['inline_source'] = true
-        end
-        template.write_html_on(f, values)
-      end
-    end
-
-    # return the url of the main page
-    def main_url
-      main_page = @options.main_page
-      ref = nil
-      if main_page
-        ref = AllReferences[main_page]
-        if ref
-          ref = ref.path
-        else
-          $stderr.puts "Could not find main page #{main_page}"
-        end
-      end
-
-      unless ref
-        for file in @files
-          if file.document_self
-            ref = file.path 
-            break
-          end
-        end
-      end
-
-      unless ref
-        $stderr.puts "Couldn't find anything to document"
-        $stderr.puts "Perhaps you've used :stopdoc: in all classes"
-        exit(1)
-      end
-
-      ref
-    end
-
-
-  end
-
-
-  ######################################################################
-
-
-  class HTMLGeneratorInOne < HTMLGenerator
-
-    def initialize(*args)
-      super
-    end
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(info)
-      @toplevels  = info
-      @files      = []
-      @classes    = []
-      @hyperlinks = {}
-
-      build_indices
-      generate_xml
-    end
-
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @toplevels.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML. For the one-file case, we generate
-    # all the information in to one big hash
-    #
-    def generate_xml
-      values = { 
-        'charset' => @options.charset,
-        'files'   => gen_into(@files),
-        'classes' => gen_into(@classes),
-        'title'        => CGI.escapeHTML(@options.title),
-      }
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-
-      template = TemplatePage.new(RDoc::Page::ONE_PAGE)
-
-      if @options.op_name
-        opfile = File.open(@options.op_name, "w")
-      else
-        opfile = $stdout
-      end
-      template.write_html_on(opfile, values)
-    end
-
-    def gen_into(list)
-      res = []
-      list.each do |item|
-        res << item.value_hash
-      end
-      res
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files')
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes')
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods')
-    end
-
-    
-    def gen_an_index(collection, title)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      return {
-        "entries" => res,
-        'list_title' => title,
-        'index_url'  => main_url,
-      }
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/ri_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/ri_generator.rb
deleted file mode 100644
index c7d0bbd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/ri_generator.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-# We're responsible for generating all the HTML files
-# from the object tree defined in code_objects.rb. We
-# generate:
-#
-# [files]   an html file for each input file given. These
-#           input files appear as objects of class
-#           TopLevel
-#
-# [classes] an html file for each class or module encountered.
-#           These classes are not grouped by file: if a file
-#           contains four classes, we'll generate an html
-#           file for the file itself, and four html files 
-#           for the individual classes. 
-#
-# [indices] we generate three indices for files, classes,
-#           and methods. These are displayed in a browser
-#           like window with three index panes across the
-#           top and the selected description below
-#
-# Method descriptions appear in whatever entity (file, class,
-# or module) that contains them.
-#
-# We generate files in a structure below a specified subdirectory,
-# normally +doc+.
-#
-#  opdir
-#     |
-#     |___ files
-#     |       |__  per file summaries
-#     |
-#     |___ classes
-#             |__ per class/module descriptions
-#
-# HTML is generated using the Template class.
-#
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/template'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_flow'
-require 'cgi'
-
-require 'rdoc/ri/ri_cache'
-require 'rdoc/ri/ri_reader'
-require 'rdoc/ri/ri_writer'
-require 'rdoc/ri/ri_descriptions'
-
-module Generators
-
-
-  class RIGenerator
-
-    # Generators may need to return specific subclasses depending
-    # on the options they are passed. Because of this
-    # we create them using a factory
-
-    def RIGenerator.for(options)
-      new(options)
-    end
-
-    class <<self
-      protected :new
-    end
-
-    # Set up a new HTML generator. Basically all we do here is load
-    # up the correct output temlate
-
-    def initialize(options) #:not-new:
-      @options   = options
-      @ri_writer = RI::RiWriter.new(".")
-      @markup    = SM::SimpleMarkup.new
-      @to_flow   = SM::ToFlow.new
-    end
-
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(toplevels)
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        process_class(cls)
-      end
-    end
-
-    def process_class(from_class)
-      generate_class_info(from_class)
-
-      # now recure into this classes constituent classess
-      from_class.each_classmodule do |mod|
-        process_class(mod)
-      end
-    end
-
-    def generate_class_info(cls)
-      if cls === RDoc::NormalModule
-        cls_desc = RI::ModuleDescription.new
-      else
-        cls_desc = RI::ClassDescription.new
-        cls_desc.superclass  = cls.superclass
-      end
-      cls_desc.name        = cls.name
-      cls_desc.full_name   = cls.full_name
-      cls_desc.comment     = markup(cls.comment)
-
-      cls_desc.attributes =cls.attributes.sort.map do |a|
-        RI::Attribute.new(a.name, a.rw, markup(a.comment))
-      end
-
-      cls_desc.constants = cls.constants.map do |c|
-        RI::Constant.new(c.name, c.value, markup(c.comment))
-      end
-
-      cls_desc.includes = cls.includes.map do |i|
-        RI::IncludedModule.new(i.name)
-      end
-
-      class_methods, instance_methods = method_list(cls)
-
-      cls_desc.class_methods = class_methods.map do |m|
-        RI::MethodSummary.new(m.name)
-      end
-      cls_desc.instance_methods = instance_methods.map do |m|
-        RI::MethodSummary.new(m.name)
-      end
-
-      update_or_replace(cls_desc)
-
-      class_methods.each do |m|
-        generate_method_info(cls_desc, m)
-      end
-
-      instance_methods.each do |m|
-        generate_method_info(cls_desc, m)
-      end
-    end
-
-
-    def generate_method_info(cls_desc, method)
-      meth_desc = RI::MethodDescription.new
-      meth_desc.name = method.name
-      meth_desc.full_name = cls_desc.full_name
-      if method.singleton
-        meth_desc.full_name += "::"
-      else
-        meth_desc.full_name += "#"
-      end
-      meth_desc.full_name << method.name
-
-      meth_desc.comment = markup(method.comment)
-      meth_desc.params = params_of(method)
-      meth_desc.visibility = method.visibility.to_s
-      meth_desc.is_singleton = method.singleton
-      meth_desc.block_params = method.block_params
-
-      meth_desc.aliases = method.aliases.map do |a|
-        RI::AliasName.new(a.name)
-      end
-
-      @ri_writer.add_method(cls_desc, meth_desc)
-    end
-
-    private
-
-    # return a list of class and instance methods that we'll be
-    # documenting
-
-    def method_list(cls)
-      list = cls.method_list
-      unless @options.show_all
-        list = list.find_all do |m|
-          m.visibility == :public || m.visibility == :protected || m.force_documentation
-        end
-      end
-
-      c = []
-      i = []
-      list.sort.each do |m|
-        if m.singleton
-          c << m
-        else
-          i << m
-        end
-      end
-      return c,i
-    end
-    
-    def params_of(method)
-      if method.call_seq
-        method.call_seq
-      else
-        params = method.params || ""
-        
-        p = params.gsub(/\s*\#.*/, '')
-        p = p.tr("\n", " ").squeeze(" ")
-        p = "(" + p + ")" unless p[0] == ?(
-        
-        if (block = method.block_params)
-          block.gsub!(/\s*\#.*/, '')
-          block = block.tr("\n", " ").squeeze(" ")
-          if block[0] == ?(
-            block.sub!(/^\(/, '').sub!(/\)/, '')
-          end
-          p << " {|#{block.strip}| ...}"
-        end
-        p
-      end
-    end
-
-    def markup(comment)
-      return nil if !comment || comment.empty?
-
-      # Convert leading comment markers to spaces, but only
-      # if all non-blank lines have them
-      
-      if comment =~ /^(?>\s*)[^\#]/
-        content = comment
-      else
-        content = comment.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
-      end
-      @markup.convert(content, @to_flow)
-    end
-
-
-    # By default we replace existing classes with the
-    # same name. If the --merge option was given, we instead
-    # merge this definition into an existing class. We add
-    # our methods, aliases, etc to that class, but do not
-    # change the class's description.
-
-    def update_or_replace(cls_desc)
-      old_cls = nil
-
-      if @options.merge
-        rdr = RI::RiReader.new(RI::RiCache.new(@options.op_dir))
-
-        namespace = rdr.top_level_namespace
-        namespace = rdr.lookup_namespace_in(cls_desc.name, namespace)
-        if namespace.empty?
-          $stderr.puts "You asked me to merge this source into existing "
-          $stderr.puts "documentation. This file references a class or "
-          $stderr.puts "module called #{cls_desc.name} which I don't"
-          $stderr.puts "have existing documentation for."
-          $stderr.puts 
-          $stderr.puts "Perhaps you need to generate its documentation first"
-          exit 1
-        else
-          old_cls = namespace[0]
-        end
-      end
-
-      if old_cls.nil?
-        # no merge: simply overwrite
-        @ri_writer.remove_class(cls_desc)
-        @ri_writer.add_class(cls_desc)
-      else
-        # existing class: merge in
-        old_desc = rdr.get_class(old_cls)
-
-        old_desc.merge_in(cls_desc)
-        @ri_writer.add_class(old_desc)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/chm/chm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/chm/chm.rb
deleted file mode 100644
index 4a89c26..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/chm/chm.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-module RDoc
-module Page
-
-require "rdoc/generators/template/html/html"
-
-# This is a nasty little hack, but hhc doesn't support the <?xml
-# tag, so...
-
-BODY.sub!(/<\?xml.*\?>/, '')
-SRC_PAGE.sub!(/<\?xml.*\?>/, '')
-
-HPP_FILE = %{
-[OPTIONS]
-Auto Index = Yes
-Compatibility=1.1 or later
-Compiled file=%opname%.chm
-Contents file=contents.hhc
-Full-text search=Yes
-Index file=index.hhk
-Language=0x409 English(United States)
-Title=%title%
-
-[FILES]
-START:all_html_files
-%html_file_name%
-END:all_html_files
-}
-
-CONTENTS = %{
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
-	<param name="Foreground" value="0x80">
-	<param name="Window Styles" value="0x800025">
-	<param name="ImageType" value="Folder">
-</OBJECT>
-<UL>
-START:contents
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%c_name%">
-		<param name="Local" value="%ref%">
-		</OBJECT>
-IF:methods
-<ul>
-START:methods
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%name%">
-		<param name="Local" value="%aref%">
-		</OBJECT>
-END:methods
-</ul>
-ENDIF:methods
-        </LI>
-END:contents
-</UL>
-</BODY></HTML>
-}
-
-
-CHM_INDEX  = %{
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
-	<param name="Foreground" value="0x80">
-	<param name="Window Styles" value="0x800025">
-	<param name="ImageType" value="Folder">
-</OBJECT>
-<UL>
-START:index
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%name%">
-		<param name="Local" value="%aref%">
-		</OBJECT>
-END:index
-</UL>
-</BODY></HTML>
-}
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/hefss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/hefss.rb
deleted file mode 100644
index e68ca85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/hefss.rb
+++ /dev/null
@@ -1,418 +0,0 @@
-module RDoc
-module Page
-
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,p { font-family: Verdana, Arial, Helvetica, sans-serif; 
-       color: #000040; background: #BBBBBB;
-}
-
-td { font-family: Verdana, Arial, Helvetica, sans-serif; 
-       color: #000040;
-}
-
-.attr-rw { font-size: small; color: #444488 }
-
-.title-row {color:      #eeeeff;
-	    background: #BBBBDD;
-}
-
-.big-title-font { color: white;
-                  font-family: Verdana, Arial, Helvetica, sans-serif;
-                  font-size: large; 
-                  height: 50px}
-
-.small-title-font { color: purple;
-                    font-family: Verdana, Arial, Helvetica, sans-serif;
-                    font-size: small; }
-
-.aqua { color: purple }
-
-.method-name, attr-name {
-      font-family: monospace; font-weight: bold;
-}
-
-.tablesubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: large;
-   color: purple;
-   background: #BBBBCC;
-}
-
-.tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: medium;
-   color: white;
-   background: #BBBBCC;
-}
-
-.name-list {
-  font-family: monospace;
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.description {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.methodtitle {
-  font-size: medium;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #0000AA;
-}
-
-.column-title {
-  font-size: medium;
-  font-weight: bold;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #3333CC;
-  }
-
-.variable-name {
-  font-family: monospace;
-  font-size: medium;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #0000AA;
-}
-
-.row-name {
-  font-size: medium;
-  font-weight: medium;
-  font-family: monospace;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-}
-
-
-############################################################################
-
-
-BODY = %{
-<html><head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    parent.frames.source.location = url
-  }
-  //-->
-  </script>
-</head>
-<body bgcolor="#BBBBBB">
-
-!INCLUDE!  <!-- banner header -->
-
-IF:diagram
-<table width="100%"><tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table><br />
-<div class="name-list">
-START:requires
-HREF:aref:name:
-END:requires
-ENDIF:requires
-</div>
-
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Subroutines and Functions</td></tr>
-</table><br />
-<div class="name-list">
-START:methods
-HREF:aref:name:,
-END:methods
-</div>
-ENDIF:methods
-
-IF:attributes
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Arguments</td></tr>
-</table><br />
-<table cellspacing="5">
-START:attributes
-     <tr valign="top">
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td class="attr-name">%name%</td>
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Modules</td></tr>
-</table><br />
-%classlist%<br />
-ENDIF:classlist
-
-  !INCLUDE!  <!-- method descriptions -->
-
-</body>
-</html>
-}
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table width="100%">
- <tr class="title-row">
- <td><table width="100%"><tr>
-   <td class="big-title-font" colspan="2"><font size="-3"><b>File</b><br /></font>%short_name%</td>
-   <td align="right"><table cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table><br />
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <font size="-3"><b>%classmod%</b><br /></font>%full_name%
- </td>
- <td align="right">
-   <table cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-HREF:full_path_url:full_path:
-IF:cvsurl
- (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="cyan">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table><br />
-}
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<div class="tablesubsubtitle">Uses</div><br />
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%">
-<b>%name%</b>%params% 
-IF:codeurl
-<a href="%codeurl%" target="source" class="srclink">src</a>
-ENDIF:codeurl
-</a></td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<html>
-<head><title>%title%</title>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-  .kw { color: #3333FF; font-weight: bold }
-  .cmt { color: green; font-style: italic }
-  .str { color: #662222; font-style: italic }
-  .re  { color: #662222; }
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-</style>
-</head>
-<body bgcolor="#BBBBBB">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-<!--
-  body {
-background-color: #bbbbbb;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #bbbbcc;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-  
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner">%list_title%</div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-</head>
-
-<frameset cols="20%,*">
-    <frameset rows="15%,35%,50%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Modules">
-        <frame src="fr_method_index.html" name="Subroutines and Functions">
-    </frameset>
-    <frameset rows="80%,20%">
-      <frame  src="%initial_page%" name="docwin">
-      <frame  src="blank.html" name="source">
-    </frameset>
-    <noframes>
-          <body bgcolor="#BBBBBB">
-            Click <a href="html/index.html">here</a> for a non-frames
-            version of this page.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-# and a blank page to use as a target
-BLANK = %{
-<html><body bgcolor="#BBBBBB"></body></html>
-}
-
-def write_extra_pages
-  template = TemplatePage.new(BLANK)
-  File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
-end
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/html.rb
deleted file mode 100644
index 7f9e599..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/html.rb
+++ /dev/null
@@ -1,711 +0,0 @@
-#
-# = CSS2 RDoc HTML template
-#
-# This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a
-# bit more of the appearance of the output to cascading stylesheets than the
-# default. It was designed for clean inline code display, and uses DHTMl to
-# toggle the visbility of each method's source with each click on the '[source]'
-# link.
-#
-# == Authors
-#
-# * Michael Granger <ged at FaerieMUD.org>
-#
-# Copyright (c) 2002, 2003 The FaerieMUD Consortium. Some rights reserved.
-#
-# This work is licensed under the Creative Commons Attribution License. To view
-# a copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or
-# send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
-# 94305, USA.
-#
-
-module RDoc
-  module Page
-
-    FONTS = "Verdana,Arial,Helvetica,sans-serif"
-
-STYLE = %{
-body {
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size:   90%;
-    margin: 0;
-    margin-left: 40px;
-    padding: 0;
-    background: white;
-}
-
-h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
-h1 { font-size: 150%; }
-h2,h3,h4 { margin-top: 1em; }
-
-a { background: #eef; color: #039; text-decoration: none; }
-a:hover { background: #039; color: #eef; }
-
-/* Override the base stylesheet's Anchor inside a table cell */
-td > a {
-  background: transparent;
-  color: #039;
-  text-decoration: none;
-}
-
-/* and inside a section title */
-.section-title > a {
-  background: transparent;
-  color: #eee;
-  text-decoration: none;
-}
-
-/* === Structural elements =================================== */
-
-div#index {
-    margin: 0;
-    margin-left: -40px;
-    padding: 0;
-    font-size: 90%;
-}
-
-
-div#index a {
-    margin-left: 0.7em;
-}
-
-div#index .section-bar {
-   margin-left: 0px;
-   padding-left: 0.7em;
-   background: #ccc;
-   font-size: small;
-}
-
-
-div#classHeader, div#fileHeader {
-    width: auto;
-    color: white;
-    padding: 0.5em 1.5em 0.5em 1.5em;
-    margin: 0;
-    margin-left: -40px;
-    border-bottom: 3px solid #006;
-}
-
-div#classHeader a, div#fileHeader a {
-    background: inherit;
-    color: white;
-}
-
-div#classHeader td, div#fileHeader td {
-    background: inherit;
-    color: white;
-}
-
-
-div#fileHeader {
-    background: #057;
-}
-
-div#classHeader {
-    background: #048;
-}
-
-
-.class-name-in-header {
-  font-size:  180%;
-  font-weight: bold;
-}
-
-
-div#bodyContent {
-    padding: 0 1.5em 0 1.5em;
-}
-
-div#description {
-    padding: 0.5em 1.5em;
-    background: #efefef;
-    border: 1px dotted #999;
-}
-
-div#description h1,h2,h3,h4,h5,h6 {
-    color: #125;;
-    background: transparent;
-}
-
-div#validator-badges {
-    text-align: center;
-}
-div#validator-badges img { border: 0; }
-
-div#copyright {
-    color: #333;
-    background: #efefef;
-    font: 0.75em sans-serif;
-    margin-top: 5em;
-    margin-bottom: 0;
-    padding: 0.5em 2em;
-}
-
-
-/* === Classes =================================== */
-
-table.header-table {
-    color: white;
-    font-size: small;
-}
-
-.type-note {
-    font-size: small;
-    color: #DEDEDE;
-}
-
-.xxsection-bar {
-    background: #eee;
-    color: #333;
-    padding: 3px;
-}
-
-.section-bar {
-   color: #333;
-   border-bottom: 1px solid #999;
-    margin-left: -20px;
-}
-
-
-.section-title {
-    background: #79a;
-    color: #eee;
-    padding: 3px;
-    margin-top: 2em;
-    margin-left: -30px;
-    border: 1px solid #999;
-}
-
-.top-aligned-row {  vertical-align: top }
-.bottom-aligned-row { vertical-align: bottom }
-
-/* --- Context section classes ----------------------- */
-
-.context-row { }
-.context-item-name { font-family: monospace; font-weight: bold; color: black; }
-.context-item-value { font-size: small; color: #448; }
-.context-item-desc { color: #333; padding-left: 2em; }
-
-/* --- Method classes -------------------------- */
-.method-detail {
-    background: #efefef;
-    padding: 0;
-    margin-top: 0.5em;
-    margin-bottom: 1em;
-    border: 1px dotted #ccc;
-}
-.method-heading {
-  color: black;
-  background: #ccc;
-  border-bottom: 1px solid #666;
-  padding: 0.2em 0.5em 0 0.5em;
-}
-.method-signature { color: black; background: inherit; }
-.method-name { font-weight: bold; }
-.method-args { font-style: italic; }
-.method-description { padding: 0 0.5em 0 0.5em; }
-
-/* --- Source code sections -------------------- */
-
-a.source-toggle { font-size: 90%; }
-div.method-source-code {
-    background: #262626;
-    color: #ffdead;
-    margin: 1em;
-    padding: 0.5em;
-    border: 1px dashed #999;
-    overflow: hidden;
-}
-
-div.method-source-code pre { color: #ffdead; overflow: hidden; }
-
-/* --- Ruby keyword styles --------------------- */
-
-.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
-
-.ruby-constant  { color: #7fffd4; background: transparent; }
-.ruby-keyword { color: #00ffff; background: transparent; }
-.ruby-ivar    { color: #eedd82; background: transparent; }
-.ruby-operator  { color: #00ffee; background: transparent; }
-.ruby-identifier { color: #ffdead; background: transparent; }
-.ruby-node    { color: #ffa07a; background: transparent; }
-.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
-.ruby-regexp  { color: #ffa07a; background: transparent; }
-.ruby-value   { color: #7fffd4; background: transparent; }
-}
-
-
-#####################################################################
-### H E A D E R   T E M P L A T E  
-#####################################################################
-
-XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
-<!DOCTYPE html 
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-}
-
-HEADER = XHTML_PREAMBLE + %{
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <meta http-equiv="Content-Script-Type" content="text/javascript" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript">
-  // <![CDATA[
-
-  function popupCode( url ) {
-    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
-  }
-
-  function toggleCode( id ) {
-    if ( document.getElementById )
-      elem = document.getElementById( id );
-    else if ( document.all )
-      elem = eval( "document.all." + id );
-    else
-      return false;
-
-    elemStyle = elem.style;
-    
-    if ( elemStyle.display != "block" ) {
-      elemStyle.display = "block"
-    } else {
-      elemStyle.display = "none"
-    }
-
-    return true;
-  }
-  
-  // Make codeblocks hidden by default
-  document.writeln( "<style type=\\"text/css\\">div.method-source-code { display: none }</style>" )
-  
-  // ]]>
-  </script>
-
-</head>
-<body>
-}
-
-
-#####################################################################
-### C O N T E X T   C O N T E N T   T E M P L A T E
-#####################################################################
-
-CONTEXT_CONTENT = %{
-}
-
-
-#####################################################################
-### F O O T E R   T E M P L A T E
-#####################################################################
-FOOTER = %{
-<div id="validator-badges">
-  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
-</div>
-
-</body>
-</html>
-}
-
-
-#####################################################################
-### F I L E   P A G E   H E A D E R   T E M P L A T E
-#####################################################################
-
-FILE_PAGE = %{
-  <div id="fileHeader">
-    <h1>%short_name%</h1>
-    <table class="header-table">
-    <tr class="top-aligned-row">
-      <td><strong>Path:</strong></td>
-      <td>%full_path%
-IF:cvsurl
-         (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-      </td>
-    </tr>
-    <tr class="top-aligned-row">
-      <td><strong>Last Update:</strong></td>
-      <td>%dtm_modified%</td>
-    </tr>
-    </table>
-  </div>
-}
-
-
-#####################################################################
-### C L A S S   P A G E   H E A D E R   T E M P L A T E
-#####################################################################
-
-CLASS_PAGE = %{
-    <div id="classHeader">
-        <table class="header-table">
-        <tr class="top-aligned-row">
-          <td><strong>%classmod%</strong></td>
-          <td class="class-name-in-header">%full_name%</td>
-        </tr>
-        <tr class="top-aligned-row">
-            <td><strong>In:</strong></td>
-            <td>
-START:infiles
-IF:full_path_url
-                <a href="%full_path_url%">
-ENDIF:full_path_url
-                %full_path%
-IF:full_path_url
-                </a>
-ENDIF:full_path_url
-IF:cvsurl
-         (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-        <br />
-END:infiles
-            </td>
-        </tr>
-
-IF:parent
-        <tr class="top-aligned-row">
-            <td><strong>Parent:</strong></td>
-            <td>
-IF:par_url
-                <a href="%par_url%">
-ENDIF:par_url
-                %parent%
-IF:par_url
-               </a>
-ENDIF:par_url
-            </td>
-        </tr>
-ENDIF:parent
-        </table>
-    </div>
-}
-
-
-#####################################################################
-### M E T H O D   L I S T   T E M P L A T E
-#####################################################################
-
-METHOD_LIST = %{
-
-  <div id="contextContent">
-IF:diagram
-    <div id="diagram">
-      %diagram%
-    </div>
-ENDIF:diagram
-
-IF:description
-    <div id="description">
-      %description%
-    </div>
-ENDIF:description
-
-IF:requires
-    <div id="requires-list">
-      <h3 class="section-bar">Required files</h3>
-
-      <div class="name-list">
-START:requires
-      HREF:aref:name:  
-END:requires
-      </div>
-    </div>
-ENDIF:requires
-
-IF:toc
-    <div id="contents-list">
-      <h3 class="section-bar">Contents</h3>
-      <ul>
-START:toc
-      <li><a href="#%href%">%secname%</a></li>
-END:toc
-     </ul>
-ENDIF:toc
-   </div>
-
-IF:methods
-    <div id="method-list">
-      <h3 class="section-bar">Methods</h3>
-
-      <div class="name-list">
-START:methods
-      HREF:aref:name:  
-END:methods
-      </div>
-    </div>
-ENDIF:methods
-
-  </div>
-
-
-    <!-- if includes -->
-IF:includes
-    <div id="includes">
-      <h3 class="section-bar">Included Modules</h3>
-
-      <div id="includes-list">
-START:includes
-        <span class="include-name">HREF:aref:name:</span>
-END:includes
-      </div>
-    </div>
-ENDIF:includes
-
-START:sections
-    <div id="section">
-IF:sectitle
-      <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
-IF:seccomment
-      <div class="section-comment">
-        %seccomment%
-      </div>      
-ENDIF:seccomment
-ENDIF:sectitle
-
-IF:classlist
-    <div id="class-list">
-      <h3 class="section-bar">Classes and Modules</h3>
-
-      %classlist%
-    </div>
-ENDIF:classlist
-
-IF:constants
-    <div id="constants-list">
-      <h3 class="section-bar">Constants</h3>
-
-      <div class="name-list">
-        <table summary="Constants">
-START:constants
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%name%</td>
-          <td>=</td>
-          <td class="context-item-value">%value%</td>
-IF:desc
-          <td width="3em"> </td>
-          <td class="context-item-desc">%desc%</td>
-ENDIF:desc
-        </tr>
-END:constants
-        </table>
-      </div>
-    </div>
-ENDIF:constants
-
-IF:aliases
-    <div id="aliases-list">
-      <h3 class="section-bar">External Aliases</h3>
-
-      <div class="name-list">
-                        <table summary="aliases">
-START:aliases
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%old_name%</td>
-          <td>-></td>
-          <td class="context-item-value">%new_name%</td>
-        </tr>
-IF:desc
-      <tr class="top-aligned-row context-row">
-        <td> </td>
-        <td colspan="2" class="context-item-desc">%desc%</td>
-      </tr>
-ENDIF:desc
-END:aliases
-                        </table>
-      </div>
-    </div>
-ENDIF:aliases
-
-
-IF:attributes
-    <div id="attribute-list">
-      <h3 class="section-bar">Attributes</h3>
-
-      <div class="name-list">
-        <table>
-START:attributes
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%name%</td>
-IF:rw
-          <td class="context-item-value"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-          <td class="context-item-value">  </td>
-ENDIF:rw
-          <td class="context-item-desc">%a_desc%</td>
-        </tr>
-END:attributes
-        </table>
-      </div>
-    </div>
-ENDIF:attributes
-      
-
-
-    <!-- if method_list -->
-IF:method_list
-    <div id="methods">
-START:method_list
-IF:methods
-      <h3 class="section-bar">%type% %category% methods</h3>
-
-START:methods
-      <div id="method-%aref%" class="method-detail">
-        <a name="%aref%"></a>
-
-        <div class="method-heading">
-IF:codeurl
-          <a href="%codeurl%" target="Code" class="method-signature"
-            onclick="popupCode('%codeurl%');return false;">
-ENDIF:codeurl
-IF:sourcecode
-          <a href="#%aref%" class="method-signature">
-ENDIF:sourcecode
-IF:callseq
-          <span class="method-name">%callseq%</span>
-ENDIF:callseq
-IFNOT:callseq
-          <span class="method-name">%name%</span><span class="method-args">%params%</span>
-ENDIF:callseq
-IF:codeurl
-          </a>
-ENDIF:codeurl
-IF:sourcecode
-          </a>
-ENDIF:sourcecode
-        </div>
-      
-        <div class="method-description">
-IF:m_desc
-          %m_desc%
-ENDIF:m_desc
-IF:sourcecode
-          <p><a class="source-toggle" href="#"
-            onclick="toggleCode('%aref%-source');return false;">[Source]</a></p>
-          <div class="method-source-code" id="%aref%-source">
-<pre>
-%sourcecode%
-</pre>
-          </div>
-ENDIF:sourcecode
-        </div>
-      </div>
-
-END:methods
-ENDIF:methods
-END:method_list
-
-    </div>
-ENDIF:method_list
-END:sections
-}
-
-
-#####################################################################
-### B O D Y   T E M P L A T E
-#####################################################################
-
-BODY = HEADER + %{
-
-!INCLUDE!  <!-- banner header -->
-
-  <div id="bodyContent">
-
-} +  METHOD_LIST + %{
-
-  </div>
-
-} + FOOTER
-
-
-
-#####################################################################
-### S O U R C E   C O D E   T E M P L A T E
-#####################################################################
-
-SRC_PAGE = XHTML_PREAMBLE + %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-</head>
-<body class="standalone-code">
-  <pre>%code%</pre>
-</body>
-</html>
-}
-
-
-#####################################################################
-### I N D E X   F I L E   T E M P L A T E S
-#####################################################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = XHTML_PREAMBLE + %{
-<!--
-
-    %list_title%
-
-  -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%list_title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" />
-  <base target="docwin" />
-</head>
-<body>
-<div id="index">
-  <h1 class="section-bar">%list_title%</h1>
-  <div id="index-entries">
-START:entries
-    <a href="%href%">%name%</a><br />
-END:entries
-  </div>
-</div>
-</body>
-</html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{<?xml version="1.0" encoding="%charset%"?>
-<!DOCTYPE html 
-     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-
-<!--
-
-    %title%
-
-  -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-</head>
-<frameset rows="20%, 80%">
-    <frameset cols="25%,35%,45%">
-        <frame src="fr_file_index.html"   title="Files" name="Files" />
-        <frame src="fr_class_index.html"  name="Classes" />
-        <frame src="fr_method_index.html" name="Methods" />
-    </frameset>
-    <frame src="%initial_page%" name="docwin" />
-</frameset>
-</html>
-}
-
-
-
-  end # module Page
-end # class RDoc
-
-require 'rdoc/generators/template/html/one_page_html'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/kilmer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/kilmer.rb
deleted file mode 100644
index 55071fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/kilmer.rb
+++ /dev/null
@@ -1,435 +0,0 @@
-module RDoc
-module Page
-
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,td,p { font-family: %fonts%; 
-       color: #000040;
-}
-
-.attr-rw { font-size: xx-small; color: #444488 }
-
-.title-row { background-color: #CCCCFF;
-             color:      #000010;
-}
-
-.big-title-font { 
-  color: black;
-  font-weight: bold;
-  font-family: %fonts%; 
-  font-size: large; 
-  height: 60px;
-  padding: 10px 3px 10px 3px;
-}
-
-.small-title-font { color: black;
-                    font-family: %fonts%;
-                    font-size:10; }
-
-.aqua { color: black }
-
-.method-name, .attr-name {
-      font-family: font-family: %fonts%; 
-      font-weight: bold;
-      font-size: small;
-      margin-left: 20px;
-      color: #000033;
-}
-
-.tablesubtitle, .tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 3px;
-   font-size: large;
-   color: black;
-   background-color: #CCCCFF;
-   border: thin;
-}
-
-.name-list {
-  margin-left: 5px;
-  margin-bottom: 2ex;
-  line-height: 105%;
-}
-
-.description {
-  margin-left: 5px;
-  margin-bottom: 2ex;
-  line-height: 105%;
-  font-size: small;
-}
-
-.methodtitle {
-  font-size: small;
-  font-weight: bold;
-  text-decoration: none;
-  color: #000033;
-  background-color: white; 
-}
-
-.srclink {
-  font-size: small;
-  font-weight: bold;
-  text-decoration: none;
-  color: #0000DD;
-  background-color: white;
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-}
-
-
-############################################################################
-
-
-BODY = %{
-<html><head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    parent.frames.source.location = url
-  }
-  //-->
-  </script>
-</head>
-<body bgcolor="white">
-
-!INCLUDE!  <!-- banner header -->
-
-IF:diagram
-<table width="100%"><tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table><br />
-<div class="name-list">
-START:requires
-HREF:aref:name:
-END:requires
-ENDIF:requires
-</div>
-
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Methods</td></tr>
-</table><br />
-<div class="name-list">
-START:methods
-HREF:aref:name:,
-END:methods
-</div>
-ENDIF:methods
-
-
-START:sections
-    <div id="section">
-IF:sectitle
-      <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
-IF:seccomment
-      <div class="section-comment">
-        %seccomment%
-      </div>      
-ENDIF:seccomment
-ENDIF:sectitle
-
-IF:attributes
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Attributes</td></tr>
-</table><br />
-<table cellspacing="5">
-START:attributes
-     <tr valign="top">
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td class="attr-name">%name%</td>
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Classes and Modules</td></tr>
-</table><br />
-%classlist%<br />
-ENDIF:classlist
-
-  !INCLUDE!  <!-- method descriptions -->
-
-END:sections
-
-</body>
-</html>
-}
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table width="100%">
- <tr class="title-row">
- <td><table width="100%"><tr>
-   <td class="big-title-font" colspan="2"><font size="-3"><b>File</b><br /></font>%short_name%</td>
-   <td align="right"><table cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table><br />
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <font size="-3"><b>%classmod%</b><br /></font>%full_name%
- </td>
- <td align="right">
-   <table cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-HREF:full_path_url:full_path:
-IF:cvsurl
- (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="cyan">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table><br />
-}
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<div class="tablesubsubtitle">Included modules</div><br />
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table cellpadding=5 width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%">
-IF:callseq
-<b>%callseq%</b>
-ENDIF:callseq
-IFNOT:callseq
- <b>%name%</b>%params%
-ENDIF:callseq
-IF:codeurl
-<a href="%codeurl%" target="source" class="srclink">src</a>
-ENDIF:codeurl
-</a></td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-IF:aka
-<div class="aka">
-This method is also aliased as
-START:aka
-<a href="%aref%">%name%</a>
-END:aka
-</div>
-ENDIF:aka
-IF:sourcecode
-<pre class="source">
-%sourcecode%
-</pre>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<html>
-<head><title>%title%</title>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-  .kw { color: #3333FF; font-weight: bold }
-  .cmt { color: green; font-style: italic }
-  .str { color: #662222; font-style: italic }
-  .re  { color: #662222; }
-</style>
-</head>
-<body bgcolor="white">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style>
-<!--
-  body {
-background-color: #ddddff;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #0000aa;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-  
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner">%list_title%</div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-</head>
-
-<frameset cols="20%,*">
-    <frameset rows="15%,35%,50%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Classes">
-        <frame src="fr_method_index.html" name="Methods">
-    </frameset>
-IF:inline_source
-      <frame  src="%initial_page%" name="docwin">
-ENDIF:inline_source
-IFNOT:inline_source
-    <frameset rows="80%,20%">
-      <frame  src="%initial_page%" name="docwin">
-      <frame  src="blank.html" name="source">
-    </frameset>
-ENDIF:inline_source
-    <noframes>
-          <body bgcolor="white">
-            Click <a href="html/index.html">here</a> for a non-frames
-            version of this page.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-# and a blank page to use as a target
-BLANK = %{
-<html><body bgcolor="white"></body></html>
-}
-
-def write_extra_pages
-  template = TemplatePage.new(BLANK)
-  File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
-end
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/old_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/old_html.rb
deleted file mode 100644
index ca66302..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/old_html.rb
+++ /dev/null
@@ -1,728 +0,0 @@
-module RDoc
-
-# This is how you define the HTML that RDoc generates. Simply create
-# a file in rdoc/generators/html_templates that creates the
-# module RDoc::Page and populate it as described below. Then invoke
-# rdoc using the --template <name of your file> option, and
-# your template will be used.
-#
-# The constants defining pages use a simple templating system:
-#
-# * The templating system is passed a hash. Keys in the hash correspond
-#   to tags on this page. The tag %abc% is looked up in the hash,
-#   and is replaced by the corresponding hash value.
-#
-# * Some tags are optional. You can detect this using IF/ENDIF
-#
-#      IF: title
-#      The value of title is %title%
-#      ENDIF: title
-#
-# * Some entries in the hash have values that are arrays, where each
-#   entry in the array is itself a hash. These are used to generate
-#   lists using the START: construct. For example, given a hash
-#   containing
-# 
-#      { 'people' => [ { 'name' => 'Fred', 'age' => '12' },
-#                      { 'name' => 'Mary', 'age' => '21' } ]
-#
-#   You could generate a simple table using
-#
-#      <table>
-#      START:people
-#        <tr><td>%name%<td>%age%</tr>
-#      END:people
-#      </table>
-#
-#   These lists can be nested to an arbitrary depth
-#
-# * the construct HREF:url:name: generates <a href="%url%">%name%</a>
-#   if +url+ is defined in the hash, or %name% otherwise.
-#
-#
-# Your file must contain the following constants
-#
-# [*FONTS*]  a list of fonts to be used
-# [*STYLE*]  a CSS section (without the <style> or comments). This is
-#            used to generate a style.css file
-#
-# [*BODY*] 
-#   The main body of all non-index RDoc pages. BODY will contain
-#   two !INCLUDE!s. The first is used to include a document-type
-#   specific header (FILE_PAGE or CLASS_PAGE). The second include
-#   is for the method list (METHOD_LIST). THe body is passed:
-#
-#   %title%::
-#       the page's title
-#
-#   %style_url%::
-#       the url of a style sheet for this page
-#
-#   %diagram%::
-#       the optional URL of a diagram for this page
-#
-#   %description%::
-#       a (potentially multi-paragraph) string containing the
-#       description for th file/class/module.
-#
-#   %requires%::
-#       an optional list of %aref%/%name% pairs, one for each module
-#       required by this file.
-#
-#   %methods%::
-#       an optional list of %aref%/%name%, one for each method
-#       documented on this page. This is intended to be an index.
-#
-#   %attributes%::  
-#       An optional list. For each attribute it contains:
-#       %name%::   the attribute name
-#       %rw%::     r/o, w/o, or r/w
-#       %a_desc%:: description of the attribute
-#
-#   %classlist%:: 
-#       An optional string containing an already-formatted list of
-#       classes and modules documented in this file
-#
-#   For FILE_PAGE entries, the body will be passed
-#
-#   %short_name%::  
-#       The name of the file
-#
-#   %full_path%::
-#       The full path to the file
-#
-#   %dtm_modified%::
-#       The date/time the file was last changed
-#
-#   For class and module pages, the body will be passed
-#
-#   %classmod%::
-#       The name of the class or module
-#
-#   %files%::
-#       A list. For each file this class is defined in, it contains:
-#       %full_path_url%:: an (optional) URL of the RDoc page
-#                         for this file
-#       %full_path%::     the name of the file
-#
-#   %par_url%::
-#       The (optional) URL of the RDoc page documenting this class's
-#       parent class
-#
-#   %parent%::
-#       The name of this class's parent.
-#
-#   For both files and classes, the body is passed the following information
-#   on includes and methods:
-#
-#   %includes%::    
-#       Optional list of included modules. For each, it receives
-#       %aref%:: optional URL to RDoc page for the module
-#       %name%:: the name of the module
-#
-#   %method_list%::
-#       Optional list of methods of a particular class and category.
-#
-#   Each method list entry contains:
-#
-#   %type%::        public/private/protected
-#   %category%::    instance/class
-#   %methods%::     a list of method descriptions
-#
-#   Each method description contains:
-#
-#   %aref%::        a target aref, used when referencing this method
-#                   description. You should code this as <a name="%aref%">
-#   %codeurl%::     the optional URL to the page containing this method's
-#                   source code.
-#   %name%::        the method's name
-#   %params%::      the method's parameters
-#   %callseq%::     a full calling sequence
-#   %m_desc%::      the (potentially multi-paragraph) description of
-#                   this method.
-#
-# [*CLASS_PAGE*]
-#         Header for pages documenting classes and modules. See
-#         BODY above for the available parameters.
-#
-# [*FILE_PAGE*]
-#         Header for pages documenting files. See
-#         BODY above for the available parameters.
-#
-# [*METHOD_LIST*]
-#         Controls the display of the listing of methods. See BODY for
-#         parameters.
-#
-# [*INDEX*]
-#         The top-level index page. For a browser-like environment
-#         define a frame set that includes the file, class, and 
-#         method indices. Passed
-#         %title%:: title of page
-#         %initial_page% :: url of initial page to display
-#
-# [*CLASS_INDEX*]
-#         Individual files for the three indexes. Passed:
-#         %index_url%:: URL of main index page
-#         %entries%::   List of
-#                       %name%:: name of an index entry
-#                       %href%:: url of corresponding page
-# [*METHOD_INDEX*]
-#         Same as CLASS_INDEX for methods
-#
-# [*FILE_INDEX*]
-#         Same as CLASS_INDEX for methods
-#
-# [*FR_INDEX_BODY*]
-#         A wrapper around CLASS_INDEX, METHOD_INDEX, and FILE_INDEX.
-#         If those index strings contain the complete HTML for the
-#         output, then FR_INDEX_BODY can simply be !INCLUDE!
-#
-# [*SRC_PAGE*]
-#         Page used to display source code. Passed %title% and %code%,
-#         the latter being a multi-line string of code.
-
-module Page
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,td,p { font-family: %fonts%; 
-       color: #000040;
-}
-
-.attr-rw { font-size: x-small; color: #444488 }
-
-.title-row { background: #0000aa;
-             color:      #eeeeff;
-}
-
-.big-title-font { color: white;
-                  font-family: %fonts%;
-                  font-size: large; 
-                  height: 50px}
-
-.small-title-font { color: aqua;
-                    font-family: %fonts%;
-                    font-size: xx-small; }
-
-.aqua { color: aqua }
-
-.method-name, attr-name {
-      font-family: monospace; font-weight: bold;
-}
-
-.tablesubtitle, .tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: large;
-   color: aqua;
-   background: #3333cc;
-}
-
-.name-list {
-  font-family: monospace;
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.description {
-  margin-left: 40px;
-  margin-top: -2ex;
-  margin-bottom: 2ex;
-}
-
-.description p {
-  line-height: 140%;
-}
-
-.aka {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 100%;
-  font-size:   small;
-  color:       #808080;
-}
-
-.methodtitle {
-  font-size: medium;
-  text-decoration: none;
-  color: #0000AA;
-  background: white; 
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-pre { font-size: 1.2em; }
-tt  { font-size: 1.2em; }
-
-pre.source {
-  border-style: groove;
-  background-color: #ddddff;
-  margin-left:  40px;
-  padding: 1em 0em 1em 2em;
-}
-
-.classlist {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-li {
-  display:    list-item;
-  margin-top: .6em;
-}
-
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-
-}
-
-
-############################################################################
-
-
-HEADER = %{
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel=StyleSheet href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    window.open(url, "Code", 
-          "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
-  }
-  //-->
-  </script>
-</head>
-}
-
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<table summary="Included modules" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Included modules</td></tr>
-</table>
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table summary="Method list" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table summary="method"  width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%"></a>
-IF:codeurl
-<a href="%codeurl%" target="Code" class="methodtitle"
- onClick="popCode('%codeurl%');return false;">
-ENDIF:codeurl
-IF:callseq
-<b>%callseq%</b>
-ENDIF:callseq
-IFNOT:callseq
-<b>%name%</b>%params%
-ENDIF:callseq
-IF:codeurl
-</a>
-ENDIF:codeurl
-</td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-IF:aka
-<div class="aka">
-This method is also aliased as
-START:aka
-<a href="%aref%">%name%</a>
-END:aka
-</div>
-ENDIF:aka
-IF:sourcecode
-<pre class="source">
-%sourcecode%
-</pre>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-###################################################################
-
-CONTEXT_CONTENT = %{
-IF:diagram
-<table summary="Diagram of classes and modules" width="100%">
-<tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table summary="Requires" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table>
-<div class="name-list">
-START:requires
-HREF:aref:name:   
-END:requires
-</div>
-ENDIF:requires
-
-IF:methods
-<table summary="Methods" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Methods</td></tr>
-</table>
-<div class="name-list">
-START:methods
-HREF:aref:name:   
-END:methods
-</div>
-ENDIF:methods
-
-IF:constants
-<table summary="Constants" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Constants</td></tr>
-</table>
-<table cellpadding="5">
-START:constants
-<tr valign="top"><td>%name%</td><td>=</td><td>%value%</td></tr>
-IF:desc
-<tr><td></td><td></td><td>%desc%</td></tr>
-ENDIF:desc
-END:constants
-</table>
-ENDIF:constants
-
-IF:aliases
-<table summary="Aliases" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">External Aliases</td></tr>
-</table>
-<div class="name-list">
-START:aliases
-%old_name% -> %new_name%<br />
-END:aliases
-</div>
-ENDIF:aliases
-
-IF:attributes
-<table summary="Attributes" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Attributes</td></tr>
-</table>
-<table summary="Attribute details" cellspacing="5">
-START:attributes
-     <tr valign="top">
-       <td class="attr-name">%name%</td>
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table summary="List of classes" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Classes and Modules</td></tr>
-</table>
-<div class="classlist">
-%classlist%
-</div>
-ENDIF:classlist
-}
-
-###############################################################################
-
-BODY = HEADER + %{
-<body bgcolor="white">
-!INCLUDE!  <!-- banner header -->
-} +
-CONTEXT_CONTENT + METHOD_LIST +
-%{
-</body>
-</html>
-}
-
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table summary="Information on file" width="100%">
- <tr class="title-row">
- <td><table summary="layout" width="100%"><tr>
-   <td class="big-title-font" colspan="2">%short_name%</td>
-   <td align="right"><table summary="layout" cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table>
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table summary="Information on class" width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <sup><font color="aqua">%classmod%</font></sup> %full_name%
- </td>
- <td align="right">
-   <table summary="layout" cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-IF:full_path_url
-        <a href="%full_path_url%" class="aqua">
-ENDIF:full_path_url
-%full_path%
-IF:full_path_url
-         </a>
-ENDIF:full_path_url
-IF:cvsurl
-          (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-<br />
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="aqua">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table>
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%title%</title>
-<link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-</head>
-<body bgcolor="white">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%list_title%</title>
-<style type="text/css">
-<!--
-  body {
-background-color: #ddddff;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #0000aa;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-
-A.xx { color: white; font-weight: bold; }
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner"><a href="%index_url%" class="xx">%list_title%</a></div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%title%</title></head>
-
-<frameset rows="20%, 80%">
-    <frameset cols="25%,35%,45%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Classes">
-        <frame src="fr_method_index.html" name="Methods">
-    </frameset>
-    <frame  src="%initial_page%" name="docwin">
-    <noframes>
-          <body bgcolor="white">
-            Sorry, RDoc currently only generates HTML using frames.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-######################################################################
-#
-# The following is used for the -1 option
-#
-
-CONTENTS_XML = %{
-IF:description
-%description%
-ENDIF:description
-
-IF:requires
-<h4>Requires:</h4>
-<ul>
-START:requires
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:requires
-</ul>
-ENDIF:requires
-
-IF:attributes
-<h4>Attributes</h4>
-<table>
-START:attributes
-<tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:includes
-<h4>Includes</h4>
-<ul>
-START:includes
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:includes
-</ul>
-ENDIF:includes
-
-IF:method_list
-<h3>Methods</h3>
-START:method_list
-IF:methods
-START:methods
-<h4>%type% %category% method: <a name="%aref%">%name%%params%</a></h4>
-
-IF:m_desc
-%m_desc%
-ENDIF:m_desc
-
-IF:sourcecode
-<blockquote><pre>
-%sourcecode%
-</pre></blockquote>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-
-end
-end
-
-require 'rdoc/generators/template/html/one_page_html'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/one_page_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/one_page_html.rb
deleted file mode 100644
index 19441f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/html/one_page_html.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-module RDoc
-module Page
-######################################################################
-#
-# The following is used for the -1 option
-#
-
-CONTENTS_XML = %{
-IF:description
-%description%
-ENDIF:description
-
-IF:requires
-<h4>Requires:</h4>
-<ul>
-START:requires
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:requires
-</ul>
-ENDIF:requires
-
-IF:attributes
-<h4>Attributes</h4>
-<table>
-START:attributes
-<tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:includes
-<h4>Includes</h4>
-<ul>
-START:includes
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:includes
-</ul>
-ENDIF:includes
-
-IF:method_list
-<h3>Methods</h3>
-START:method_list
-IF:methods
-START:methods
-<h4>%type% %category% method: 
-IF:callseq
-<a name="%aref%">%callseq%</a>
-ENDIF:callseq
-IFNOT:callseq
-<a name="%aref%">%name%%params%</a></h4>
-ENDIF:callseq
-
-IF:m_desc
-%m_desc%
-ENDIF:m_desc
-
-IF:sourcecode
-<blockquote><pre>
-%sourcecode%
-</pre></blockquote>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-########################################################################
-
-ONE_PAGE = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-</head>
-<body>
-START:files
-<h2>File: %short_name%</h2>
-<table>
-  <tr><td>Path:</td><td>%full_path%</td></tr>
-  <tr><td>Modified:</td><td>%dtm_modified%</td></tr>
-</table>
-} + CONTENTS_XML + %{
-END:files
-
-IF:classes
-<h2>Classes</h2>
-START:classes
-IF:parent
-<h3>%classmod% %full_name% < HREF:par_url:parent:</h3>
-ENDIF:parent
-IFNOT:parent
-<h3>%classmod% %full_name%</h3>
-ENDIF:parent
-
-IF:infiles
-(in files
-START:infiles
-HREF:full_path_url:full_path:
-END:infiles
-)
-ENDIF:infiles
-} + CONTENTS_XML + %{
-END:classes
-ENDIF:classes
-</body>
-</html>
-}
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/rdf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/rdf.rb
deleted file mode 100644
index 1545d81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/rdf.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-module RDoc
-module Page
-
-
-
-CONTENTS_RDF = %{
-IF:description
-    <description rd:parseType="Literal">
-%description%
-    </description>
-ENDIF:description
-
-IF:requires
-START:requires
-         <rd:required-file rd:name="%name%" />
-END:requires
-ENDIF:requires
-
-IF:attributes
-START:attributes
-        <contents>
-        <Attribute rd:name="%name%">
-IF:rw
-          <attribute-rw>%rw%</attribute-rw>
-ENDIF:rw
-          <description rdf:parseType="Literal">%a_desc%</description>
-        </Attribute>
-        </contents>
-END:attributes
-ENDIF:attributes
-
-IF:includes
-      <IncludedModuleList>
-START:includes
-        <included-module rd:name="%name%"  />
-END:includes
-      </IncludedModuleList>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-START:methods
-	<contents>
-        <Method rd:name="%name%" rd:visibility="%type%"
-                rd:category="%category%" rd:id="%aref%">
-          <parameters>%params%</parameters>
-IF:m_desc
-          <description rdf:parseType="Literal">
-%m_desc%
-          </description>
-ENDIF:m_desc
-IF:sourcecode
-          <source-code-listing rdf:parseType="Literal">
-%sourcecode%
-          </source-code-listing>
-ENDIF:sourcecode
-        </Method>
-       </contents>
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-     <!-- end method list -->
-}
-
-########################################################################
-
-ONE_PAGE = %{<?xml version="1.0" encoding="utf-8"?>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-        xmlns="http://pragprog.com/rdoc/rdoc.rdf#"
-        xmlns:rd="http://pragprog.com/rdoc/rdoc.rdf#">
-
-<!-- RDoc -->
-START:files
-  <rd:File rd:name="%short_name%" rd:id="%href%">
-      <path>%full_path%</path>
-      <dtm-modified>%dtm_modified%</dtm-modified>
-} + CONTENTS_RDF + %{
-  </rd:File>
-END:files
-START:classes
-  <%classmod% rd:name="%full_name%" rd:id="%full_name%">
-    <classmod-info>
-IF:infiles
-      <InFiles>
-START:infiles
-        <infile>
-          <File rd:name="%full_path%"
-IF:full_path_url
-                rdf:about="%full_path_url%"
-ENDIF:full_path_url
-           />
-         </infile>
-END:infiles
-      </InFiles>
-ENDIF:infiles
-IF:parent
-     <superclass>HREF:par_url:parent:</superclass>
-ENDIF:parent
-    </classmod-info>
-} + CONTENTS_RDF + %{
-  </%classmod%>
-END:classes
-<!-- /RDoc -->
-</rdf:RDF>
-}
-
-
-end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/xml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/xml.rb
deleted file mode 100644
index 4a0c8c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/template/xml/xml.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-module RDoc
-module Page
-
-
-
-CONTENTS_XML = %{
-IF:description
-    <description>
-%description%
-    </description>
-ENDIF:description
-    <contents>
-IF:requires
-      <required-file-list>
-START:requires
-         <required-file name="%name%"
-IF:aref 
-                        href="%aref%"
-ENDIF:aref
-         />
-END:requires
-      </required-file-list>
-ENDIF:requires
-IF:attributes
-      <attribute-list>
-START:attributes
-        <attribute name="%name%">
-IF:rw
-          <attribute-rw>%rw%</attribute-rw>
-ENDIF:rw
-          <description>%a_desc%</description>
-        </attribute>
-END:attributes
-      </attribute-list>
-ENDIF:attributes
-IF:includes
-      <included-module-list>
-START:includes
-        <included-module name="%name%"
-IF:aref
-                         href="%aref%"
-ENDIF:aref
-        />
-END:includes
-      </included-module-list>
-ENDIF:includes
-IF:method_list
-      <method-list>
-START:method_list
-IF:methods
-START:methods
-        <method name="%name%" type="%type%" category="%category%" id="%aref%">
-          <parameters>%params%</parameters>
-IF:m_desc
-          <description>
-%m_desc%
-          </description>
-ENDIF:m_desc
-IF:sourcecode
-          <source-code-listing>
-%sourcecode%
-          </source-code-listing>
-ENDIF:sourcecode
-        </method>
-END:methods
-ENDIF:methods
-END:method_list
-      </method-list>
-ENDIF:method_list
-     </contents>
-}
-
-########################################################################
-
-ONE_PAGE = %{<?xml version="1.0" encoding="utf-8"?>
-<rdoc>
-<file-list>
-START:files
-  <file name="%short_name%" id="%href%">
-    <file-info>
-      <path>%full_path%</path>
-      <dtm-modified>%dtm_modified%</dtm-modified>
-    </file-info>
-} + CONTENTS_XML + %{
-  </file>
-END:files
-</file-list>
-<class-module-list>
-START:classes
-  <%classmod% name="%full_name%" id="%full_name%">
-    <classmod-info>
-IF:infiles
-      <infiles>      
-START:infiles
-        <infile>HREF:full_path_url:full_path:</infile>
-END:infiles
-      </infiles>
-ENDIF:infiles
-IF:parent
-     <superclass>HREF:par_url:parent:</superclass>
-ENDIF:parent
-    </classmod-info>
-} + CONTENTS_XML + %{
-  </%classmod%>
-END:classes
-</class-module-list>
-</rdoc>
-}
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/xml_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/xml_generator.rb
deleted file mode 100644
index 8c1a76d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/generators/xml_generator.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-require 'rdoc/generators/html_generator'
-
-module Generators
-
-  # Generate XML output as one big file
-
-  class XMLGenerator < HTMLGenerator
-
-    # Standard generator factory
-    def XMLGenerator.for(options)
-      XMLGenerator.new(options)
-    end
-
-    
-    def initialize(*args)
-      super
-    end
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(info)
-      @info       = info
-      @files      = []
-      @classes    = []
-      @hyperlinks = {}
-
-      build_indices
-      generate_xml
-    end
-
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @info.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML. For the one-file case, we generate
-    # all the information in to one big hash
-    #
-    def generate_xml
-      values = { 
-        'charset' => @options.charset,
-        'files'   => gen_into(@files),
-        'classes' => gen_into(@classes)
-      }
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-
-      template = TemplatePage.new(RDoc::Page::ONE_PAGE)
-
-      if @options.op_name
-        opfile = File.open(@options.op_name, "w")
-      else
-        opfile = $stdout
-      end
-      template.write_html_on(opfile, values)
-    end
-
-    def gen_into(list)
-      res = []
-      list.each do |item|
-        res << item.value_hash
-      end
-      res
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files')
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes')
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods')
-    end
-
-    
-    def gen_an_index(collection, title)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      return {
-        "entries" => res,
-        'list_title' => title,
-        'index_url'  => main_url,
-      }
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb
deleted file mode 100644
index 26563b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/local/bin/ruby
-# Illustration of a script to convert an RDoc-style file to a LaTeX
-# document
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_latex'
-
-p = SM::SimpleMarkup.new
-h = SM::ToLaTeX.new
-
-#puts "\\documentclass{report}"
-#puts "\\usepackage{tabularx}"
-#puts "\\usepackage{parskip}"
-#puts "\\begin{document}"
-puts p.convert(ARGF.read, h)
-#puts "\\end{document}"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/sample.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/sample.rb
deleted file mode 100644
index a375b54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/sample/sample.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# This program illustrates the basic use of the SimpleMarkup
-# class. It extracts the first comment block from the 
-# simple_markup.rb file and converts it into HTML on
-# standard output. Run it using
-#
-#  % ruby sample.rb
-#
-# You should be in the sample/ directory when you do this,
-# as it hardwires the path to the files it needs to require.
-# This isn't necessary in the code you write once you've 
-# installed the package.
-#
-# For a better way of formatting code comment blocks (and more)
-# see the rdoc package.
-#
-
-$:.unshift "../../.."
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-
-# Extract the comment block from the source file
-
-input_string = ""
-
-File.foreach("../simple_markup.rb") do |line|
-  break unless line.gsub!(/^\# ?/, '')
-  input_string << line
-end
-
-# Create a markup object
-markup = SM::SimpleMarkup.new
-
-# Attach it to an HTML formatter
-h = SM::ToHtml.new
-
-# And convert out comment block to html. Wrap it a body
-# tag pair to let browsers view it
-
-puts "<html><body>"
-puts markup.convert(input_string, h)
-puts "</body></html>"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup.rb
deleted file mode 100644
index 8193ca0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup.rb
+++ /dev/null
@@ -1,476 +0,0 @@
-# = Introduction
-#
-# SimpleMarkup parses plain text documents and attempts to decompose
-# them into their constituent parts. Some of these parts are high-level:
-# paragraphs, chunks of verbatim text, list entries and the like. Other
-# parts happen at the character level: a piece of bold text, a word in
-# code font. This markup is similar in spirit to that used on WikiWiki
-# webs, where folks create web pages using a simple set of formatting
-# rules.
-#
-# SimpleMarkup itself does no output formatting: this is left to a
-# different set of classes.
-#
-# SimpleMarkup is extendable at runtime: you can add new markup
-# elements to be recognised in the documents that SimpleMarkup parses.
-#
-# SimpleMarkup is intended to be the basis for a family of tools which
-# share the common requirement that simple, plain-text should be
-# rendered in a variety of different output formats and media. It is
-# envisaged that SimpleMarkup could be the basis for formating RDoc
-# style comment blocks, Wiki entries, and online FAQs.
-#
-# = Basic Formatting
-#
-# * SimpleMarkup looks for a document's natural left margin. This is
-#   used as the initial margin for the document.
-#
-# * Consecutive lines starting at this margin are considered to be a
-#   paragraph.
-#
-# * If a paragraph starts with a "*", "-", or with "<digit>.", then it is
-#   taken to be the start of a list. The margin in increased to be the
-#   first non-space following the list start flag. Subsequent lines
-#   should be indented to this new margin until the list ends. For
-#   example:
-#
-#      * this is a list with three paragraphs in
-#        the first item. This is the first paragraph.
-#
-#        And this is the second paragraph.
-#
-#        1. This is an indented, numbered list.
-#        2. This is the second item in that list
-#
-#        This is the third conventional paragraph in the
-#        first list item.
-#
-#      * This is the second item in the original list
-#
-# * You can also construct labeled lists, sometimes called description
-#   or definition lists. Do this by putting the label in square brackets
-#   and indenting the list body:
-#
-#       [cat]  a small furry mammal
-#              that seems to sleep a lot
-#
-#       [ant]  a little insect that is known
-#              to enjoy picnics
-#
-#   A minor variation on labeled lists uses two colons to separate the
-#   label from the list body:
-#
-#       cat::  a small furry mammal
-#              that seems to sleep a lot
-#
-#       ant::  a little insect that is known
-#              to enjoy picnics
-#     
-#   This latter style guarantees that the list bodies' left margins are
-#   aligned: think of them as a two column table.
-#
-# * Any line that starts to the right of the current margin is treated
-#   as verbatim text. This is useful for code listings. The example of a
-#   list above is also verbatim text.
-#
-# * A line starting with an equals sign (=) is treated as a
-#   heading. Level one headings have one equals sign, level two headings
-#   have two,and so on.
-#
-# * A line starting with three or more hyphens (at the current indent)
-#   generates a horizontal rule. THe more hyphens, the thicker the rule
-#   (within reason, and if supported by the output device)
-#
-# * You can use markup within text (except verbatim) to change the
-#   appearance of parts of that text. Out of the box, SimpleMarkup
-#   supports word-based and general markup.
-#
-#   Word-based markup uses flag characters around individual words:
-#
-#   [\*word*]  displays word in a *bold* font
-#   [\_word_]  displays word in an _emphasized_ font
-#   [\+word+]  displays word in a +code+ font
-#
-#   General markup affects text between a start delimiter and and end
-#   delimiter. Not surprisingly, these delimiters look like HTML markup.
-#
-#   [\<b>text...</b>]    displays word in a *bold* font
-#   [\<em>text...</em>]  displays word in an _emphasized_ font
-#   [\<i>text...</i>]    displays word in an _emphasized_ font
-#   [\<tt>text...</tt>]  displays word in a +code+ font
-#
-#   Unlike conventional Wiki markup, general markup can cross line
-#   boundaries. You can turn off the interpretation of markup by
-#   preceding the first character with a backslash, so \\\<b>bold
-#   text</b> and \\\*bold* produce \<b>bold text</b> and \*bold
-#   respectively.
-#
-# = Using SimpleMarkup
-#
-# For information on using SimpleMarkup programatically, 
-# see SM::SimpleMarkup.
-#
-# Author::   Dave Thomas,  dave at pragmaticprogrammer.com
-# Version::  0.0
-# License::  Ruby license
-
-
-
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/lines.rb'
-
-module SM  #:nodoc:
-
-  # == Synopsis
-  #
-  # This code converts <tt>input_string</tt>, which is in the format
-  # described in markup/simple_markup.rb, to HTML. The conversion
-  # takes place in the +convert+ method, so you can use the same
-  # SimpleMarkup object to convert multiple input strings.
-  #
-  #   require 'rdoc/markup/simple_markup'
-  #   require 'rdoc/markup/simple_markup/to_html'
-  #
-  #   p = SM::SimpleMarkup.new
-  #   h = SM::ToHtml.new
-  #
-  #   puts p.convert(input_string, h)
-  #
-  # You can extend the SimpleMarkup parser to recognise new markup
-  # sequences, and to add special processing for text that matches a
-  # regular epxression. Here we make WikiWords significant to the parser,
-  # and also make the sequences {word} and \<no>text...</no> signify
-  # strike-through text. When then subclass the HTML output class to deal
-  # with these:
-  #
-  #   require 'rdoc/markup/simple_markup'
-  #   require 'rdoc/markup/simple_markup/to_html'
-  #
-  #   class WikiHtml < SM::ToHtml
-  #     def handle_special_WIKIWORD(special)
-  #       "<font color=red>" + special.text + "</font>"
-  #     end
-  #   end
-  #
-  #   p = SM::SimpleMarkup.new
-  #   p.add_word_pair("{", "}", :STRIKE)
-  #   p.add_html("no", :STRIKE)
-  #
-  #   p.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
-  #
-  #   h = WikiHtml.new
-  #   h.add_tag(:STRIKE, "<strike>", "</strike>")
-  #
-  #   puts "<body>" + p.convert(ARGF.read, h) + "</body>"
-  #
-  # == Output Formatters
-  #
-  # _missing_
-  #
-  #
-
-  class SimpleMarkup
-
-    SPACE = ?\s
-
-    # List entries look like:
-    #  *       text
-    #  1.      text
-    #  [label] text
-    #  label:: text
-    #
-    # Flag it as a list entry, and
-    # work out the indent for subsequent lines
-
-    SIMPLE_LIST_RE = /^(
-                  (  \*          (?# bullet)
-                    |-           (?# bullet)
-                    |\d+\.       (?# numbered )
-                    |[A-Za-z]\.  (?# alphabetically numbered )
-                  )
-                  \s+
-                )\S/x
-
-    LABEL_LIST_RE = /^(
-                        (  \[.*?\]    (?# labeled  )
-                          |\S.*::     (?# note     )
-                        )(?:\s+|$)
-                      )/x
-
-
-    ##
-    # take a block of text and use various heuristics to determine
-    # it's structure (paragraphs, lists, and so on). Invoke an
-    # event handler as we identify significant chunks.
-    #
-
-    def initialize
-      @am = AttributeManager.new
-      @output = nil
-    end
-
-    ##
-    # Add to the sequences used to add formatting to an individual word 
-    # (such as *bold*). Matching entries will generate attibutes
-    # that the output formatters can recognize by their +name+
-
-    def add_word_pair(start, stop, name)
-      @am.add_word_pair(start, stop, name)
-    end
-
-    ##
-    # Add to the sequences recognized as general markup
-    #
-
-    def add_html(tag, name)
-      @am.add_html(tag, name)
-    end
-
-    ##
-    # Add to other inline sequences. For example, we could add
-    # WikiWords using something like:
-    #
-    #    parser.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
-    #
-    # Each wiki word will be presented to the output formatter 
-    # via the accept_special method
-    #
-
-    def add_special(pattern, name)
-      @am.add_special(pattern, name)
-    end
-
-
-    # We take a string, split it into lines, work out the type of
-    # each line, and from there deduce groups of lines (for example
-    # all lines in a paragraph). We then invoke the output formatter
-    # using a Visitor to display the result
-
-    def convert(str, op)
-      @lines = Lines.new(str.split(/\r?\n/).collect { |aLine| 
-                           Line.new(aLine) })
-      return "" if @lines.empty?
-      @lines.normalize
-      assign_types_to_lines
-      group = group_lines
-      # call the output formatter to handle the result
-      #      group.to_a.each {|i| p i}
-      group.accept(@am, op)
-    end
-
-
-    #######
-    private
-    #######
-
-
-    ##
-    # Look through the text at line indentation. We flag each line as being
-    # Blank, a paragraph, a list element, or verbatim text
-    #
-
-    def assign_types_to_lines(margin = 0, level = 0)
-
-      while line = @lines.next
-        if line.isBlank?
-          line.stamp(Line::BLANK, level)
-          next
-        end
-        
-        # if a line contains non-blanks before the margin, then it must belong
-        # to an outer level
-
-        text = line.text
-        
-        for i in 0...margin
-          if text[i] != SPACE
-            @lines.unget
-            return
-          end
-        end
-
-        active_line = text[margin..-1]
-
-        # Rules (horizontal lines) look like
-        #
-        #  ---   (three or more hyphens)
-        #
-        # The more hyphens, the thicker the rule
-        #
-
-        if /^(---+)\s*$/ =~ active_line
-          line.stamp(Line::RULE, level, $1.length-2)
-          next
-        end
-
-        # Then look for list entries. First the ones that have to have
-        # text following them (* xxx, - xxx, and dd. xxx)
-
-        if SIMPLE_LIST_RE =~ active_line
-
-          offset = margin + $1.length
-          prefix = $2
-          prefix_length = prefix.length
-
-          flag = case prefix
-                 when "*","-" then ListBase::BULLET
-                 when /^\d/   then ListBase::NUMBER
-                 when /^[A-Z]/ then ListBase::UPPERALPHA
-                 when /^[a-z]/ then ListBase::LOWERALPHA
-                 else raise "Invalid List Type: #{self.inspect}"
-                 end
-
-          line.stamp(Line::LIST, level+1, prefix, flag)
-          text[margin, prefix_length] = " " * prefix_length
-          assign_types_to_lines(offset, level + 1)
-          next
-        end
-
-
-        if LABEL_LIST_RE =~ active_line
-          offset = margin + $1.length
-          prefix = $2
-          prefix_length = prefix.length
-
-          next if handled_labeled_list(line, level, margin, offset, prefix)
-        end
-
-        # Headings look like
-        # = Main heading
-        # == Second level
-        # === Third
-        #
-        # Headings reset the level to 0
-
-        if active_line[0] == ?= and active_line =~ /^(=+)\s*(.*)/
-          prefix_length = $1.length
-          prefix_length = 6 if prefix_length > 6
-          line.stamp(Line::HEADING, 0, prefix_length)
-          line.strip_leading(margin + prefix_length)
-          next
-        end
-        
-        # If the character's a space, then we have verbatim text,
-        # otherwise 
-
-        if active_line[0] == SPACE
-          line.strip_leading(margin) if margin > 0
-          line.stamp(Line::VERBATIM, level)
-        else
-          line.stamp(Line::PARAGRAPH, level)
-        end
-      end
-    end
-
-    # Handle labeled list entries, We have a special case
-    # to deal with. Because the labels can be long, they force
-    # the remaining block of text over the to right:
-    #
-    # this is a long label that I wrote:: and here is the
-    #                                     block of text with
-    #                                     a silly margin
-    #
-    # So we allow the special case. If the label is followed
-    # by nothing, and if the following line is indented, then
-    # we take the indent of that line as the new margin
-    #
-    # this is a long label that I wrote::
-    #     here is a more reasonably indented block which
-    #     will ab attached to the label.
-    #
-    
-    def handled_labeled_list(line, level, margin, offset, prefix)
-      prefix_length = prefix.length
-      text = line.text
-      flag = nil
-      case prefix
-      when /^\[/
-        flag = ListBase::LABELED
-        prefix = prefix[1, prefix.length-2]
-      when /:$/
-        flag = ListBase::NOTE
-        prefix.chop!
-      else raise "Invalid List Type: #{self.inspect}"
-      end
-      
-      # body is on the next line
-      
-      if text.length <= offset
-        original_line = line
-        line = @lines.next
-        return(false) unless line
-        text = line.text
-        
-        for i in 0..margin
-          if text[i] != SPACE
-            @lines.unget
-            return false
-          end
-        end
-        i = margin
-        i += 1 while text[i] == SPACE
-        if i >= text.length
-          @lines.unget
-          return false
-        else
-          offset = i
-          prefix_length = 0
-          @lines.delete(original_line)
-        end
-      end
-      
-      line.stamp(Line::LIST, level+1, prefix, flag)
-      text[margin, prefix_length] = " " * prefix_length
-      assign_types_to_lines(offset, level + 1)
-      return true
-    end
-
-    # Return a block consisting of fragments which are
-    # paragraphs, list entries or verbatim text. We merge consecutive
-    # lines of the same type and level together. We are also slightly
-    # tricky with lists: the lines following a list introduction
-    # look like paragraph lines at the next level, and we remap them
-    # into list entries instead
-
-    def group_lines
-      @lines.rewind
-
-      inList = false
-      wantedType = wantedLevel = nil
-
-      block = LineCollection.new
-      group = nil
-
-      while line = @lines.next
-        if line.level == wantedLevel and line.type == wantedType
-          group.add_text(line.text)
-        else
-          group = block.fragment_for(line)
-          block.add(group)
-          if line.type == Line::LIST
-            wantedType = Line::PARAGRAPH
-          else
-            wantedType = line.type
-          end
-          wantedLevel = line.type == Line::HEADING ? line.param : line.level
-        end
-      end
-
-      block.normalize
-      block
-    end
-
-    ## for debugging, we allow access to our line contents as text
-    def content
-      @lines.as_text
-    end
-    public :content
-
-    ## for debugging, return the list of line types
-    def get_line_types
-      @lines.line_types
-    end
-    public :get_line_types
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/fragments.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/fragments.rb
deleted file mode 100644
index 6ca0638..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/fragments.rb
+++ /dev/null
@@ -1,328 +0,0 @@
-require 'rdoc/markup/simple_markup/lines.rb'
-#require 'rdoc/markup/simple_markup/to_flow.rb'
-
-module SM
-
-  ##
-  # A Fragment is a chunk of text, subclassed as a paragraph, a list
-  # entry, or verbatim text
-
-  class Fragment
-    attr_reader   :level, :param, :txt
-    attr_accessor :type
-
-    def initialize(level, param, type, txt)
-      @level = level
-      @param = param
-      @type  = type
-      @txt   = ""
-      add_text(txt) if txt
-    end
-
-    def add_text(txt)
-      @txt << " " if @txt.length > 0
-      @txt << txt.tr_s("\n ", "  ").strip
-    end
-
-    def to_s
-      "L#@level: #{self.class.name.split('::')[-1]}\n#@txt"
-    end
-
-    ######
-    # This is a simple factory system that lets us associate fragement
-    # types (a string) with a subclass of fragment
-
-    TYPE_MAP = {}
-
-    def Fragment.type_name(name)
-      TYPE_MAP[name] = self
-    end
-
-    def Fragment.for(line)
-      klass =  TYPE_MAP[line.type] ||
-        raise("Unknown line type: '#{line.type.inspect}:' '#{line.text}'")
-      return klass.new(line.level, line.param, line.flag, line.text)
-    end
-  end
-
-  ##
-  # A paragraph is a fragment which gets wrapped to fit. We remove all
-  # newlines when we're created, and have them put back on output
-
-  class Paragraph < Fragment
-    type_name Line::PARAGRAPH
-  end
-
-  class BlankLine < Paragraph
-    type_name Line::BLANK
-  end
-
-  class Heading < Paragraph
-    type_name Line::HEADING
-
-    def head_level
-      @param.to_i
-    end
-  end
-
-  ##
-  # A List is a fragment with some kind of label
-  #
-
-  class ListBase < Paragraph
-    # List types
-    BULLET  = :BULLET
-    NUMBER  = :NUMBER
-    UPPERALPHA  = :UPPERALPHA
-    LOWERALPHA  = :LOWERALPHA
-    LABELED = :LABELED
-    NOTE    = :NOTE
-  end
-
-  class ListItem < ListBase
-    type_name Line::LIST
-
-    #  def label
-    #    am = AttributeManager.new(@param)
-    #    am.flow
-    #  end
-  end
-
-  class ListStart < ListBase
-    def initialize(level, param, type)
-      super(level, param, type, nil)
-    end
-  end
-
-  class ListEnd < ListBase
-    def initialize(level, type)
-      super(level, "", type, nil)
-    end
-  end
-
-  ##
-  # Verbatim code contains lines that don't get wrapped.
-
-  class Verbatim < Fragment
-    type_name  Line::VERBATIM
-
-    def add_text(txt)
-      @txt << txt.chomp << "\n"
-    end
-
-  end
-
-  ##
-  # A horizontal rule
-  class Rule < Fragment
-    type_name Line::RULE
-  end
-
-
-  # Collect groups of lines together. Each group
-  # will end up containing a flow of text
-
-  class LineCollection
-    
-    def initialize
-      @fragments = []
-    end
-
-    def add(fragment)
-      @fragments << fragment
-    end
-
-    def each(&b)
-      @fragments.each(&b)
-    end
-
-    # For testing
-    def to_a
-      @fragments.map {|fragment| fragment.to_s}
-    end
-
-    # Factory for different fragment types
-    def fragment_for(*args)
-      Fragment.for(*args)
-    end
-
-    # tidy up at the end
-    def normalize
-      change_verbatim_blank_lines
-      add_list_start_and_ends
-      add_list_breaks
-      tidy_blank_lines
-    end
-
-    def to_s
-      @fragments.join("\n----\n")
-    end
-
-    def accept(am, visitor)
-
-      visitor.start_accepting
-
-      @fragments.each do |fragment|
-        case fragment
-        when Verbatim
-          visitor.accept_verbatim(am, fragment)
-        when Rule
-          visitor.accept_rule(am, fragment)
-        when ListStart
-          visitor.accept_list_start(am, fragment)
-        when ListEnd
-          visitor.accept_list_end(am, fragment)
-        when ListItem
-          visitor.accept_list_item(am, fragment)
-        when BlankLine
-          visitor.accept_blank_line(am, fragment)
-        when Heading
-          visitor.accept_heading(am, fragment)
-        when Paragraph
-          visitor.accept_paragraph(am, fragment)
-        end
-      end
-
-      visitor.end_accepting
-    end
-    #######
-    private
-    #######
-
-    # If you have:
-    #
-    #    normal paragraph text.
-    #
-    #       this is code
-    #   
-    #       and more code
-    #
-    # You'll end up with the fragments Paragraph, BlankLine, 
-    # Verbatim, BlankLine, Verbatim, BlankLine, etc
-    #
-    # The BlankLine in the middle of the verbatim chunk needs to
-    # be changed to a real verbatim newline, and the two
-    # verbatim blocks merged
-    #
-    #    
-    def change_verbatim_blank_lines
-      frag_block = nil
-      blank_count = 0
-      @fragments.each_with_index do |frag, i|
-        if frag_block.nil?
-          frag_block = frag if Verbatim === frag
-        else
-          case frag
-          when Verbatim
-            blank_count.times { frag_block.add_text("\n") }
-            blank_count = 0
-            frag_block.add_text(frag.txt)
-            @fragments[i] = nil    # remove out current fragment
-          when BlankLine
-            if frag_block
-              blank_count += 1
-              @fragments[i] = nil
-            end
-          else
-            frag_block = nil
-            blank_count = 0
-          end
-        end
-      end
-      @fragments.compact!
-    end
-
-    # List nesting is implicit given the level of
-    # Make it explicit, just to make life a tad
-    # easier for the output processors
-
-    def add_list_start_and_ends
-      level = 0
-      res = []
-      type_stack = []
-
-      @fragments.each do |fragment|
-        # $stderr.puts "#{level} : #{fragment.class.name} : #{fragment.level}"
-        new_level = fragment.level
-        while (level < new_level)
-          level += 1
-          type = fragment.type
-          res << ListStart.new(level, fragment.param, type) if type
-          type_stack.push type
-          # $stderr.puts "Start: #{level}"
-        end
-
-        while level > new_level
-          type = type_stack.pop
-          res << ListEnd.new(level, type) if type
-          level -= 1
-          # $stderr.puts "End: #{level}, #{type}"
-        end
-
-        res << fragment
-        level = fragment.level
-      end
-      level.downto(1) do |i|
-        type = type_stack.pop
-        res << ListEnd.new(i, type) if type
-      end
-
-      @fragments = res
-    end
-
-    # now insert start/ends between list entries at the
-    # same level that have different element types
-
-    def add_list_breaks
-      res = @fragments
-
-      @fragments = []
-      list_stack = []
-
-      res.each do |fragment|
-        case fragment
-        when ListStart
-          list_stack.push fragment
-        when ListEnd
-          start = list_stack.pop
-          fragment.type = start.type
-        when ListItem
-          l = list_stack.last
-          if fragment.type != l.type
-            @fragments << ListEnd.new(l.level, l.type)
-            start = ListStart.new(l.level, fragment.param, fragment.type)
-            @fragments << start
-            list_stack.pop
-            list_stack.push start
-          end
-        else
-          ;
-        end
-        @fragments << fragment
-      end
-    end
-
-    # Finally tidy up the blank lines:
-    # * change Blank/ListEnd into ListEnd/Blank
-    # * remove blank lines at the front
-
-    def tidy_blank_lines
-      (@fragments.size - 1).times do |i|
-        if @fragments[i].kind_of?(BlankLine) and 
-            @fragments[i+1].kind_of?(ListEnd)
-          @fragments[i], @fragments[i+1] = @fragments[i+1], @fragments[i] 
-        end
-      end
-
-      # remove leading blanks
-      @fragments.each_with_index do |f, i|
-        break unless f.kind_of? BlankLine
-        @fragments[i] = nil
-      end
-
-      @fragments.compact!
-    end
-
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/inline.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/inline.rb
deleted file mode 100644
index d54fe1e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/inline.rb
+++ /dev/null
@@ -1,340 +0,0 @@
-module SM
-
-  # We manage a set of attributes. Each attribute has a symbol name
-  # and a bit value
-
-  class Attribute
-    SPECIAL = 1
-
-    @@name_to_bitmap = { :_SPECIAL_ => SPECIAL }
-    @@next_bitmap = 2
-
-    def Attribute.bitmap_for(name)
-      bitmap = @@name_to_bitmap[name]
-      if !bitmap
-        bitmap = @@next_bitmap
-        @@next_bitmap <<= 1
-        @@name_to_bitmap[name] = bitmap
-      end
-      bitmap
-    end
-
-    def Attribute.as_string(bitmap)
-      return "none" if bitmap.zero?
-      res = []
-      @@name_to_bitmap.each do |name, bit|
-        res << name if (bitmap & bit) != 0
-      end
-      res.join(",")
-    end
-
-    def Attribute.each_name_of(bitmap)
-      @@name_to_bitmap.each do |name, bit|
-        next if bit == SPECIAL
-        yield name.to_s if (bitmap & bit) != 0
-      end
-    end
-  end
-
-
-  # An AttrChanger records a change in attributes. It contains
-  # a bitmap of the attributes to turn on, and a bitmap of those to
-  # turn off
-
-  AttrChanger = Struct.new(:turn_on, :turn_off)
-  class AttrChanger
-    def to_s
-      "Attr: +#{Attribute.as_string(@turn_on)}/-#{Attribute.as_string(@turn_on)}"
-    end
-  end
-
-  # An array of attributes which parallels the characters in a string
-  class AttrSpan
-    def initialize(length)
-      @attrs = Array.new(length, 0)
-    end
-
-    def set_attrs(start, length, bits)
-      for i in start ... (start+length)
-        @attrs[i] |= bits
-      end
-    end
-
-    def [](n)
-      @attrs[n]
-    end
-  end
-
-  ##
-  # Hold details of a special sequence
-
-  class Special
-    attr_reader   :type
-    attr_accessor :text
-
-    def initialize(type, text)
-      @type, @text = type, text
-    end
-
-    def ==(o)
-      self.text == o.text && self.type == o.type
-    end
-
-    def to_s
-      "Special: type=#{type}, text=#{text.dump}"
-    end
-  end
-  
-  class AttributeManager
-
-    NULL = "\000".freeze
-
-    ##
-    # We work by substituting non-printing characters in to the
-    # text. For now I'm assuming that I can substitute
-    # a character in the range 0..8 for a 7 bit character
-    # without damaging the encoded string, but this might
-    # be optimistic
-    #
-
-    A_PROTECT  = 004
-    PROTECT_ATTR  = A_PROTECT.chr
-
-    # This maps delimiters that occur around words (such as
-    # *bold* or +tt+) where the start and end delimiters
-    # and the same. This lets us optimize the regexp
-    MATCHING_WORD_PAIRS = {}
-
-    # And this is used when the delimiters aren't the same. In this
-    # case the hash maps a pattern to the attribute character
-    WORD_PAIR_MAP = {}
-
-    # This maps HTML tags to the corresponding attribute char
-    HTML_TAGS = {}
-
-    # And this maps _special_ sequences to a name. A special sequence
-    # is something like a WikiWord
-    SPECIAL = {}
-
-    # Return an attribute object with the given turn_on
-    # and turn_off bits set
-
-    def attribute(turn_on, turn_off)
-      AttrChanger.new(turn_on, turn_off)
-    end
-
-
-    def change_attribute(current, new)
-      diff = current ^ new
-      attribute(new & diff, current & diff)
-    end
-
-    def changed_attribute_by_name(current_set, new_set)
-      current = new = 0
-      current_set.each {|name| current |= Attribute.bitmap_for(name) }
-      new_set.each {|name| new |= Attribute.bitmap_for(name) }
-      change_attribute(current, new)
-    end
-
-    def copy_string(start_pos, end_pos)
-      res = @str[start_pos...end_pos]
-      res.gsub!(/\000/, '')
-      res
-    end
-
-    # Map attributes like <b>text</b>to the sequence \001\002<char>\001\003<char>,
-    # where <char> is a per-attribute specific character
-
-    def convert_attrs(str, attrs)
-      # first do matching ones
-      tags = MATCHING_WORD_PAIRS.keys.join("")
-      re = "(^|\\W)([#{tags}])([A-Za-z_]+?)\\2(\\W|\$)"
-#      re = "(^|\\W)([#{tags}])(\\S+?)\\2(\\W|\$)"
-      1 while str.gsub!(Regexp.new(re)) {
-        attr = MATCHING_WORD_PAIRS[$2];
-        attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
-        $1 + NULL*$2.length + $3 + NULL*$2.length + $4
-      }
-
-      # then non-matching
-      unless WORD_PAIR_MAP.empty?
-        WORD_PAIR_MAP.each do |regexp, attr|
-          str.gsub!(regexp) { 
-            attrs.set_attrs($`.length + $1.length, $2.length, attr)
-            NULL*$1.length + $2 + NULL*$3.length
-          }
-        end
-      end
-    end
-
-    def convert_html(str, attrs)
-      tags = HTML_TAGS.keys.join("|")
-      re = "<(#{tags})>(.*?)</\\1>"
-      1 while str.gsub!(Regexp.new(re, Regexp::IGNORECASE)) {
-        attr = HTML_TAGS[$1.downcase]
-        html_length = $1.length + 2
-        seq = NULL * html_length
-        attrs.set_attrs($`.length + html_length, $2.length, attr)
-        seq + $2 + seq + NULL
-      }
-    end
-
-    def convert_specials(str, attrs)
-      unless SPECIAL.empty?
-        SPECIAL.each do |regexp, attr|
-          str.scan(regexp) do
-            attrs.set_attrs($`.length, $&.length, attr | Attribute::SPECIAL)
-          end
-        end
-      end
-    end
-
-    # A \ in front of a character that would normally be
-    # processed turns off processing. We do this by turning
-    # \< into <#{PROTECT}
-    
-    PROTECTABLE = [ "<" << "\\" ]  #"
-
-
-    def mask_protected_sequences
-      protect_pattern = Regexp.new("\\\\([#{Regexp.escape(PROTECTABLE.join(''))}])")
-      @str.gsub!(protect_pattern, "\\1#{PROTECT_ATTR}")
-    end
-
-    def unmask_protected_sequences
-      @str.gsub!(/(.)#{PROTECT_ATTR}/, "\\1\000")
-    end
-
-    def initialize
-      add_word_pair("*", "*", :BOLD)
-      add_word_pair("_", "_", :EM)
-      add_word_pair("+", "+", :TT)
-      
-      add_html("em", :EM)
-      add_html("i",  :EM)
-      add_html("b",  :BOLD)
-      add_html("tt",   :TT)
-      add_html("code", :TT)
-
-      add_special(/<!--(.*?)-->/, :COMMENT)
-    end
-
-    def add_word_pair(start, stop, name)
-      raise "Word flags may not start '<'" if start[0] == ?<
-      bitmap = Attribute.bitmap_for(name)
-      if start == stop
-        MATCHING_WORD_PAIRS[start] = bitmap
-      else
-        pattern = Regexp.new("(" + Regexp.escape(start) + ")" +
-#                             "([A-Za-z]+)" +
-                             "(\\S+)" +
-                             "(" + Regexp.escape(stop) +")")
-        WORD_PAIR_MAP[pattern] = bitmap
-      end
-      PROTECTABLE << start[0,1]
-      PROTECTABLE.uniq!
-    end
-
-    def add_html(tag, name)
-      HTML_TAGS[tag.downcase] = Attribute.bitmap_for(name)
-    end
-
-    def add_special(pattern, name)
-      SPECIAL[pattern] = Attribute.bitmap_for(name)
-    end
-
-    def flow(str)
-      @str = str
-
-      puts("Before flow, str='#{@str.dump}'") if $DEBUG
-      mask_protected_sequences
- 
-      @attrs = AttrSpan.new(@str.length)
-
-      puts("After protecting, str='#{@str.dump}'") if $DEBUG
-      convert_attrs(@str, @attrs)
-      convert_html(@str, @attrs)
-      convert_specials(str, @attrs)
-      unmask_protected_sequences
-      puts("After flow, str='#{@str.dump}'") if $DEBUG
-      return split_into_flow
-    end
-
-    def display_attributes
-      puts
-      puts @str.tr(NULL, "!")
-      bit = 1
-      16.times do |bno|
-        line = ""
-        @str.length.times do |i|
-          if (@attrs[i] & bit) == 0
-            line << " "
-          else
-            if bno.zero?
-              line << "S"
-            else
-              line << ("%d" % (bno+1))
-            end
-          end
-        end
-        puts(line) unless line =~ /^ *$/
-        bit <<= 1
-      end
-    end
-
-    def split_into_flow
-
-      display_attributes if $DEBUG
-
-      res = []
-      current_attr = 0
-      str = ""
-
-      
-      str_len = @str.length
-
-      # skip leading invisible text
-      i = 0
-      i += 1 while i < str_len and @str[i].zero?
-      start_pos = i
-
-      # then scan the string, chunking it on attribute changes
-      while i < str_len
-        new_attr = @attrs[i]
-        if new_attr != current_attr
-          if i > start_pos
-            res << copy_string(start_pos, i)
-            start_pos = i
-          end
-
-          res << change_attribute(current_attr, new_attr)
-          current_attr = new_attr
-
-          if (current_attr & Attribute::SPECIAL) != 0
-            i += 1 while i < str_len and (@attrs[i] & Attribute::SPECIAL) != 0
-            res << Special.new(current_attr, copy_string(start_pos, i))
-            start_pos = i
-            next
-          end
-        end
-
-        # move on, skipping any invisible characters
-        begin
-          i += 1
-        end while i < str_len and @str[i].zero?
-      end
-      
-      # tidy up trailing text
-      if start_pos < str_len
-        res << copy_string(start_pos, str_len)
-      end
-
-      # and reset to all attributes off
-      res << change_attribute(current_attr, 0) if current_attr != 0
-
-      return res
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/lines.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/lines.rb
deleted file mode 100644
index 4e294f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/lines.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-##########################################################################
-#
-# We store the lines we're working on as objects of class Line.
-# These contain the text of the line, along with a flag indicating the
-# line type, and an indentation level
-
-module SM
-
-  class Line
-    INFINITY = 9999
-
-    BLANK     = :BLANK
-    HEADING   = :HEADING
-    LIST      = :LIST
-    RULE      = :RULE
-    PARAGRAPH = :PARAGRAPH
-    VERBATIM  = :VERBATIM
-    
-    # line type
-    attr_accessor :type
-
-    # The indentation nesting level
-    attr_accessor :level
-
-    # The contents
-    attr_accessor :text
-
-    # A prefix or parameter. For LIST lines, this is
-    # the text that introduced the list item (the label)
-    attr_accessor  :param
-
-    # A flag. For list lines, this is the type of the list
-    attr_accessor :flag
-
-    # the number of leading spaces
-    attr_accessor :leading_spaces
-
-    # true if this line has been deleted from the list of lines
-    attr_accessor :deleted
-    
-
-    def initialize(text)
-      @text    = text.dup
-      @deleted = false
-
-      # expand tabs
-      1 while @text.gsub!(/\t+/) { ' ' * (8*$&.length - $`.length % 8)}  && $~ #`
-
-      # Strip trailing whitespace
-      @text.sub!(/\s+$/, '')
-
-      # and look for leading whitespace
-      if @text.length > 0
-        @text =~ /^(\s*)/
-        @leading_spaces = $1.length
-      else
-        @leading_spaces = INFINITY
-      end
-    end
-
-    # Return true if this line is blank
-    def isBlank?
-      @text.length.zero?
-    end
-
-    # stamp a line with a type, a level, a prefix, and a flag
-    def stamp(type, level, param="", flag=nil)
-      @type, @level, @param, @flag = type, level, param, flag
-    end
-
-    ##
-    # Strip off the leading margin
-    #
-
-    def strip_leading(size)
-      if @text.size > size
-        @text[0,size] = ""
-      else
-        @text = ""
-      end
-    end
-
-    def to_s
-      "#@type#@level: #@text"
-    end
-  end
-
-  ###############################################################################
-  #
-  # A container for all the lines
-  #
-
-  class Lines
-    include Enumerable
-
-    attr_reader :lines   # for debugging
-
-    def initialize(lines)
-      @lines = lines
-      rewind
-    end
-
-    def empty?
-      @lines.size.zero?
-    end
-
-    def each
-      @lines.each do |line|
-        yield line unless line.deleted
-      end
-    end
-
-#    def [](index)
-#      @lines[index]
-#    end
-
-    def rewind
-      @nextline = 0
-    end
-
-    def next
-      begin
-        res = @lines[@nextline]
-        @nextline += 1 if @nextline < @lines.size
-      end while res and res.deleted and @nextline < @lines.size
-      res
-    end
-
-    def unget
-      @nextline -= 1
-    end
-
-    def delete(a_line)
-      a_line.deleted = true
-    end
-
-    def normalize
-      margin = @lines.collect{|l| l.leading_spaces}.min
-      margin = 0 if margin == Line::INFINITY
-      @lines.each {|line| line.strip_leading(margin) } if margin > 0
-    end
-
-    def as_text
-      @lines.map {|l| l.text}.join("\n")
-    end
-
-    def line_types
-      @lines.map {|l| l.type }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb
deleted file mode 100644
index 101c9bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module SM
-
-  ## 
-  # Handle common directives that can occur in a block of text:
-  #
-  # : include : filename
-  #
-
-  class PreProcess
-
-    def initialize(input_file_name, include_path)
-      @input_file_name = input_file_name
-      @include_path = include_path
-    end
-
-    # Look for common options in a chunk of text. Options that
-    # we don't handle are passed back to our caller
-    # as |directive, param| 
-
-    def handle(text)
-      text.gsub!(/^([ \t#]*):(\w+):\s*(.+)?\n/) do 
-        prefix    = $1
-        directive = $2.downcase
-        param     = $3
-
-        case directive
-        when "include"
-          filename = param.split[0]
-          include_file(filename, prefix)
-
-        else
-          yield(directive, param)
-        end
-      end
-    end
-
-    #######
-    private
-    #######
-
-    # Include a file, indenting it correctly
-
-    def include_file(name, indent)
-      if (full_name = find_include_file(name))
-        content = File.open(full_name) {|f| f.read}
-        # strip leading '#'s, but only if all lines start with them
-        if content =~ /^[^#]/
-          content.gsub(/^/, indent)
-        else
-          content.gsub(/^#?/, indent)
-        end
-      else
-        $stderr.puts "Couldn't find file to include: '#{name}'"
-        ''
-      end
-    end
-
-    # Look for the given file in the directory containing the current
-    # file, and then in each of the directories specified in the
-    # RDOC_INCLUDE path
-
-    def find_include_file(name)
-      to_search = [ File.dirname(@input_file_name) ].concat @include_path
-      to_search.each do |dir|
-        full_name = File.join(dir, name)
-        stat = File.stat(full_name) rescue next
-        return full_name if stat.readable?
-      end
-      nil
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb
deleted file mode 100644
index 048e71a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb
+++ /dev/null
@@ -1,188 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-require 'cgi'
-
-module SM
-
-  module Flow
-    P = Struct.new(:body)
-    VERB = Struct.new(:body)
-    RULE = Struct.new(:width)
-    class LIST
-      attr_reader :type, :contents
-      def initialize(type)
-        @type = type
-        @contents = []
-      end
-      def <<(stuff)
-        @contents << stuff
-      end
-    end
-    LI = Struct.new(:label, :body)
-    H = Struct.new(:level, :text)
-  end
-
-  class ToFlow
-    LIST_TYPE_TO_HTML = {
-      SM::ListBase::BULLET     =>  [ "<ul>", "</ul>" ],
-      SM::ListBase::NUMBER     =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::UPPERALPHA =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::LOWERALPHA =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::LABELED    =>  [ "<dl>", "</dl>" ],
-      SM::ListBase::NOTE       =>  [ "<table>", "</table>" ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-    end
-
-    ##
-    # Set up the standard mapping of attributes to HTML tags
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   "<tt>", "</tt>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   "<em>", "</em>"),
-      ]
-    end
-
-    ##
-    # Add a new set of HTML tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-    ##
-    # Given an HTML tag, decorate it with class information
-    # and the like if required. This is a no-op in the base
-    # class, but is overridden in HTML output classes that
-    # implement style sheets
-
-    def annotate(tag)
-      tag
-    end
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = []
-      @list_stack = []
-    end
-
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << Flow::P.new((convert_flow(am.flow(fragment.txt))))
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << Flow::VERB.new((convert_flow(am.flow(fragment.txt))))
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << Flow::RULE.new(size)
-    end
-
-    def accept_list_start(am, fragment)
-      @list_stack.push(@res)
-      list = Flow::LIST.new(fragment.type)
-      @res << list
-      @res = list
-    end
-
-    def accept_list_end(am, fragment)
-      @res = @list_stack.pop
-    end
-
-    def accept_list_item(am, fragment)
-      @res << Flow::LI.new(fragment.param, convert_flow(am.flow(fragment.txt)))
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << annotate("<p />") << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << Flow::H.new(fragment.head_level, convert_flow(am.flow(fragment.txt)))
-    end
-
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.on)
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.off)
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-      CGI.escapeHTML(item)
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_html.rb
deleted file mode 100644
index 26b5f4c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_html.rb
+++ /dev/null
@@ -1,289 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-
-require 'cgi'
-
-module SM
-
-  class ToHtml
-
-    LIST_TYPE_TO_HTML = {
-      ListBase::BULLET =>  [ "<ul>", "</ul>" ],
-      ListBase::NUMBER =>  [ "<ol>", "</ol>" ],
-      ListBase::UPPERALPHA =>  [ "<ol>", "</ol>" ],
-      ListBase::LOWERALPHA =>  [ "<ol>", "</ol>" ],
-      ListBase::LABELED => [ "<dl>", "</dl>" ],
-      ListBase::NOTE    => [ "<table>", "</table>" ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-    end
-
-    ##
-    # Set up the standard mapping of attributes to HTML tags
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   "<tt>", "</tt>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   "<em>", "</em>"),
-      ]
-    end
-
-    ##
-    # Add a new set of HTML tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-    ##
-    # Given an HTML tag, decorate it with class information
-    # and the like if required. This is a no-op in the base
-    # class, but is overridden in HTML output classes that
-    # implement style sheets
-
-    def annotate(tag)
-      tag
-    end
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = ""
-      @in_list_entry = []
-    end
-
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << annotate("<p>") + "\n"
-      @res << wrap(convert_flow(am.flow(fragment.txt)))
-      @res << annotate("</p>") + "\n"
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << annotate("<pre>") + "\n"
-      @res << CGI.escapeHTML(fragment.txt)
-      @res << annotate("</pre>") << "\n"
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << "<hr size=\"#{size}\"></hr>"
-    end
-
-    def accept_list_start(am, fragment)
-      @res << html_list_name(fragment.type, true) <<"\n"
-      @in_list_entry.push false
-    end
-
-    def accept_list_end(am, fragment)
-      if tag = @in_list_entry.pop
-        @res << annotate(tag) << "\n"
-      end
-      @res << html_list_name(fragment.type, false) <<"\n"
-    end
-
-    def accept_list_item(am, fragment)
-      if tag = @in_list_entry.last
-        @res << annotate(tag) << "\n"
-      end
-      @res << list_item_start(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
-      @in_list_entry[-1] = list_end_for(fragment.type)
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << annotate("<p />") << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
-    end
-
-    # This is a higher speed (if messier) version of wrap
-
-    def wrap(txt, line_len = 76)
-      res = ""
-      sp = 0
-      ep = txt.length
-      while sp < ep
-        # scan back for a space
-        p = sp + line_len - 1
-        if p >= ep
-          p = ep
-        else
-          while p > sp and txt[p] != ?\s
-            p -= 1
-          end
-          if p <= sp
-            p = sp + line_len
-            while p < ep and txt[p] != ?\s
-              p += 1
-            end
-          end
-        end
-        res << txt[sp...p] << "\n"
-        sp = p
-        sp += 1 while sp < ep and txt[sp] == ?\s
-      end
-      res
-    end
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.on)
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.off)
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-      CGI.escapeHTML(item).
-      
-      
-      # convert -- to em-dash, (-- to en-dash)
-        gsub(/---?/, '—'). #gsub(/--/, '–').
-
-      # convert ... to elipsis (and make sure .... becomes .<elipsis>)
-        gsub(/\.\.\.\./, '.…').gsub(/\.\.\./, '…').
-
-      # convert single closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'}) { "#$1’" }.
-        gsub(%r{\'(?=\W|s\b)}) { "’" }.
-
-      # convert single opening quote
-        gsub(/'/, '‘').
-
-      # convert double closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'(?=\W)}) { "#$1”" }.
-
-      # convert double opening quote
-        gsub(/'/, '“').
-
-      # convert copyright
-        gsub(/\(c\)/, '©').
-
-      # convert and registered trademark
-        gsub(/\(r\)/, '®')
-
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-    def convert_heading(level, flow)
-      res =
-        annotate("<h#{level}>") + 
-        convert_flow(flow) + 
-        annotate("</h#{level}>\n")
-    end
-
-    def html_list_name(list_type, is_open_tag)
-      tags = LIST_TYPE_TO_HTML[list_type] || raise("Invalid list type: #{list_type.inspect}")
-      annotate(tags[ is_open_tag ? 0 : 1])
-    end
-
-    def list_item_start(am, fragment)
-      case fragment.type
-      when ListBase::BULLET, ListBase::NUMBER
-        annotate("<li>")
-
-      when ListBase::UPPERALPHA
-	annotate("<li type=\"A\">")
-
-      when ListBase::LOWERALPHA
-	annotate("<li type=\"a\">")
-
-      when ListBase::LABELED
-        annotate("<dt>") +
-          convert_flow(am.flow(fragment.param)) + 
-          annotate("</dt>") +
-          annotate("<dd>")
-
-      when ListBase::NOTE
-        annotate("<tr>") +
-          annotate("<td valign=\"top\">") +
-          convert_flow(am.flow(fragment.param)) + 
-          annotate("</td>") +
-          annotate("<td>")
-      else
-        raise "Invalid list type"
-      end
-    end
-
-    def list_end_for(fragment_type)
-      case fragment_type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA
-        "</li>"
-      when ListBase::LABELED
-        "</dd>"
-      when ListBase::NOTE
-        "</td></tr>"
-      else
-        raise "Invalid list type"
-      end
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb
deleted file mode 100644
index 6c16278..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-
-require 'cgi'
-
-module SM
-
-  # Convert SimpleMarkup to basic LaTeX report format
-
-  class ToLaTeX
-
-    BS = "\020"   # \
-    OB = "\021"   # {
-    CB = "\022"   # }
-    DL = "\023"   # Dollar
-
-    BACKSLASH   = "#{BS}symbol#{OB}92#{CB}"
-    HAT         = "#{BS}symbol#{OB}94#{CB}"
-    BACKQUOTE   = "#{BS}symbol#{OB}0#{CB}"
-    TILDE       = "#{DL}#{BS}sim#{DL}"
-    LESSTHAN    = "#{DL}<#{DL}"
-    GREATERTHAN = "#{DL}>#{DL}"
-
-    def self.l(str)
-      str.tr('\\', BS).tr('{', OB).tr('}', CB).tr('$', DL)
-    end
-
-    def l(arg)
-      SM::ToLaTeX.l(arg)
-    end
-
-    LIST_TYPE_TO_LATEX = {
-      ListBase::BULLET =>  [ l("\\begin{itemize}"), l("\\end{itemize}") ],
-      ListBase::NUMBER =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\arabic" ],
-      ListBase::UPPERALPHA =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\Alph" ],
-      ListBase::LOWERALPHA =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\alph" ],
-      ListBase::LABELED => [ l("\\begin{description}"), l("\\end{description}") ],
-      ListBase::NOTE    => [
-        l("\\begin{tabularx}{\\linewidth}{@{} l X @{}}"), 
-        l("\\end{tabularx}") ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-      @list_depth = 0
-      @prev_list_types = []
-    end
-
-    ##
-    # Set up the standard mapping of attributes to LaTeX
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), l("\\textbf{"), l("}")),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   l("\\texttt{"), l("}")),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   l("\\emph{"), l("}")),
-      ]
-    end
-
-    ##
-    # Escape a LaTeX string
-    def escape(str)
-# $stderr.print "FE: ", str
-      s = str.
-#        sub(/\s+$/, '').
-        gsub(/([_\${}&%#])/, "#{BS}\\1").
-        gsub(/\\/, BACKSLASH).
-        gsub(/\^/, HAT).
-        gsub(/~/,  TILDE).
-        gsub(/</,  LESSTHAN).
-        gsub(/>/,  GREATERTHAN).
-        gsub(/,,/, ",{},").
-        gsub(/\`/,  BACKQUOTE)
-# $stderr.print "-> ", s, "\n"
-      s
-    end
-
-    ##
-    # Add a new set of LaTeX tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = ""
-      @in_list_entry = []
-    end
-
-    def end_accepting
-      @res.tr(BS, '\\').tr(OB, '{').tr(CB, '}').tr(DL, '$')
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt)))
-      @res << "\n"
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << "\n\\begin{code}\n"
-      @res << fragment.txt.sub(/[\n\s]+\Z/, '')
-      @res << "\n\\end{code}\n\n"
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << "\n\n\\rule{\\linewidth}{#{size}pt}\n\n"
-    end
-
-    def accept_list_start(am, fragment)
-      @res << list_name(fragment.type, true) <<"\n"
-      @in_list_entry.push false
-    end
-
-    def accept_list_end(am, fragment)
-      if tag = @in_list_entry.pop
-        @res << tag << "\n"
-      end
-      @res << list_name(fragment.type, false) <<"\n"
-    end
-
-    def accept_list_item(am, fragment)
-      if tag = @in_list_entry.last
-        @res << tag << "\n"
-      end
-      @res << list_item_start(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
-      @in_list_entry[-1] = list_end_for(fragment.type)
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
-    end
-
-    # This is a higher speed (if messier) version of wrap
-
-    def wrap(txt, line_len = 76)
-      res = ""
-      sp = 0
-      ep = txt.length
-      while sp < ep
-        # scan back for a space
-        p = sp + line_len - 1
-        if p >= ep
-          p = ep
-        else
-          while p > sp and txt[p] != ?\s
-            p -= 1
-          end
-          if p <= sp
-            p = sp + line_len
-            while p < ep and txt[p] != ?\s
-              p += 1
-            end
-          end
-        end
-        res << txt[sp...p] << "\n"
-        sp = p
-        sp += 1 while sp < ep and txt[sp] == ?\s
-      end
-      res
-    end
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << tag.on
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << tag.off
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-#          $stderr.puts "Converting '#{item}'"
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-
-      escape(item).
-      
-      
-      # convert ... to elipsis (and make sure .... becomes .<elipsis>)
-        gsub(/\.\.\.\./, '.\ldots{}').gsub(/\.\.\./, '\ldots{}').
-
-      # convert single closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'}) { "#$1'" }.
-        gsub(%r{\'(?=\W|s\b)}) { "'" }.
-
-      # convert single opening quote
-        gsub(/'/, '`').
-
-      # convert double closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\"(?=\W)}) { "#$1''" }.
-
-      # convert double opening quote
-        gsub(/"/, "``").
-
-      # convert copyright
-        gsub(/\(c\)/, '\copyright{}')
-
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-    def convert_heading(level, flow)
-      res =
-        case level
-        when 1 then "\\chapter{"
-        when 2 then "\\section{"
-        when 3 then "\\subsection{"
-        when 4 then "\\subsubsection{"
-        else  "\\paragraph{"
-        end +
-        convert_flow(flow) + 
-        "}\n"
-    end
-
-    def list_name(list_type, is_open_tag)
-      tags = LIST_TYPE_TO_LATEX[list_type] || raise("Invalid list type: #{list_type.inspect}")
-      if tags[2] # enumerate
-        if is_open_tag
-          @list_depth += 1
-          if @prev_list_types[@list_depth] != tags[2]
-            case @list_depth
-            when 1
-              roman = "i"
-            when 2
-              roman = "ii"
-            when 3
-              roman = "iii"
-            when 4
-              roman = "iv"
-            else
-              raise("Too deep list: level #{@list_depth}")
-            end
-            @prev_list_types[@list_depth] = tags[2]
-            return l("\\renewcommand{\\labelenum#{roman}}{#{tags[2]}{enum#{roman}}}") + "\n" + tags[0]
-          end
-        else
-          @list_depth -= 1
-        end
-      end
-      tags[ is_open_tag ? 0 : 1]
-    end
-
-    def list_item_start(am, fragment)
-      case fragment.type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA
-        "\\item "
-
-      when ListBase::LABELED
-        "\\item[" + convert_flow(am.flow(fragment.param)) + "] "
-
-      when ListBase::NOTE
-          convert_flow(am.flow(fragment.param)) + " & "
-      else
-        raise "Invalid list type"
-      end
-    end
-
-    def list_end_for(fragment_type)
-      case fragment_type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA, ListBase::LABELED
-        ""
-      when ListBase::NOTE
-        "\\\\\n"
-      else
-        raise "Invalid list type"
-      end
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/AllTests.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/AllTests.rb
deleted file mode 100644
index b9c8c9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/AllTests.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'TestParse.rb'
-require 'TestInline.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestInline.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestInline.rb
deleted file mode 100644
index a067d4c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestInline.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require "test/unit"
-
-$:.unshift "../../.."
-
-require "rdoc/markup/simple_markup/inline"
-
-class TestInline < Test::Unit::TestCase
-
-
-  def setup
-    @am = SM::AttributeManager.new
-
-    @bold_on  = @am.changed_attribute_by_name([], [:BOLD])
-    @bold_off = @am.changed_attribute_by_name([:BOLD], [])
-    
-    @tt_on    = @am.changed_attribute_by_name([], [:TT])
-    @tt_off   = @am.changed_attribute_by_name([:TT], [])
-    
-    @em_on    = @am.changed_attribute_by_name([], [:EM])
-    @em_off   = @am.changed_attribute_by_name([:EM], [])
-    
-    @bold_em_on   = @am.changed_attribute_by_name([], [:BOLD] | [:EM])
-    @bold_em_off  = @am.changed_attribute_by_name([:BOLD] | [:EM], [])
-    
-    @em_then_bold = @am.changed_attribute_by_name([:EM], [:EM] | [:BOLD])
-    
-    @em_to_bold   = @am.changed_attribute_by_name([:EM], [:BOLD])
-    
-    @am.add_word_pair("{", "}", :WOMBAT)
-    @wombat_on    = @am.changed_attribute_by_name([], [:WOMBAT])
-    @wombat_off   = @am.changed_attribute_by_name([:WOMBAT], [])
-  end
-
-  def crossref(text)
-    [ @am.changed_attribute_by_name([], [:CROSSREF] | [:_SPECIAL_]),
-      SM::Special.new(33, text),
-      @am.changed_attribute_by_name([:CROSSREF] | [:_SPECIAL_], [])
-    ]
-  end
-
-  def test_special
-    # class names, variable names, file names, or instance variables
-    @am.add_special(/(
-                       \b([A-Z]\w+(::\w+)*)
-                       | \#\w+[!?=]?
-                       | \b\w+([_\/\.]+\w+)+[!?=]?
-                      )/x, 
-                    :CROSSREF)
-    
-    assert_equal(["cat"], @am.flow("cat"))
-
-    assert_equal(["cat ", crossref("#fred"), " dog"].flatten,
-                  @am.flow("cat #fred dog"))
-
-    assert_equal([crossref("#fred"), " dog"].flatten,
-                  @am.flow("#fred dog"))
-
-    assert_equal(["cat ", crossref("#fred")].flatten, @am.flow("cat #fred"))
-  end
-
-  def test_basic
-    assert_equal(["cat"], @am.flow("cat"))
-
-    assert_equal(["cat ", @bold_on, "and", @bold_off, " dog"],
-                  @am.flow("cat *and* dog"))
-
-    assert_equal(["cat ", @bold_on, "AND", @bold_off, " dog"],
-                  @am.flow("cat *AND* dog"))
-
-    assert_equal(["cat ", @em_on, "And", @em_off, " dog"],
-                  @am.flow("cat _And_ dog"))
-
-    assert_equal(["cat *and dog*"], @am.flow("cat *and dog*"))
-
-    assert_equal(["*cat and* dog"], @am.flow("*cat and* dog"))
-
-    assert_equal(["cat *and ", @bold_on, "dog", @bold_off],
-                  @am.flow("cat *and *dog*"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " dog"],
-                  @am.flow("cat _and_ dog"))
-
-    assert_equal(["cat_and_dog"],
-                  @am.flow("cat_and_dog"))
-
-    assert_equal(["cat ", @tt_on, "and", @tt_off, " dog"],
-                  @am.flow("cat +and+ dog"))
-
-    assert_equal(["cat ", @bold_on, "a_b_c", @bold_off, " dog"],
-                  @am.flow("cat *a_b_c* dog"))
-
-    assert_equal(["cat __ dog"],
-                  @am.flow("cat __ dog"))
-
-    assert_equal(["cat ", @em_on, "_", @em_off, " dog"],
-                  @am.flow("cat ___ dog"))
-
-  end
-
-  def test_combined
-    assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off],
-                  @am.flow("cat _and_ *dog*"))
-
-    assert_equal(["cat ", @em_on, "a__nd", @em_off, " ", @bold_on, "dog", @bold_off], 
-                  @am.flow("cat _a__nd_ *dog*"))
-  end
-
-  def test_html_like
-    assert_equal(["cat ", @tt_on, "dog", @tt_off], @am.flow("cat <tt>dog</Tt>"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off], 
-                  @am.flow("cat <i>and</i> <B>dog</b>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off], 
-                  @am.flow("cat <i>and <B>dog</B></I>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("cat <i>and </i><b>dog</b>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("cat <i>and <b></i>dog</b>"))
-    
-    assert_equal([@tt_on, "cat", @tt_off, " ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("<tt>cat</tt> <i>and <b></i>dog</b>"))
-
-    assert_equal(["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off], 
-                  @am.flow("cat <i>and <b>dog</b></i>"))
-    
-    assert_equal(["cat ", @bold_em_on, "and", @bold_em_off, " dog"], 
-                  @am.flow("cat <i><b>and</b></i> dog"))
-    
-    
-  end
-
-  def test_protect
-    assert_equal(['cat \\ dog'], @am.flow('cat \\ dog'))
-
-    assert_equal(["cat <tt>dog</Tt>"], @am.flow("cat \\<tt>dog</Tt>"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " <B>dog</b>"], 
-                  @am.flow("cat <i>and</i> \\<B>dog</b>"))
-    
-    assert_equal(["*word* or <b>text</b>"], @am.flow("\\*word* or \\<b>text</b>"))
-
-    assert_equal(["_cat_", @em_on, "dog", @em_off], 
-                  @am.flow("\\_cat_<i>dog</i>"))
-  end
-
-  def test_adding
-    assert_equal(["cat ", @wombat_on, "and", @wombat_off, " dog" ],
-                  @am.flow("cat {and} dog"))
-#    assert_equal(["cat {and} dog" ], @am.flow("cat \\{and} dog"))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestParse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestParse.rb
deleted file mode 100644
index 3ec541c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/markup/test/TestParse.rb
+++ /dev/null
@@ -1,503 +0,0 @@
-require 'test/unit'
-
-$:.unshift "../../.."
-
-require 'rdoc/markup/simple_markup'
-
-include SM
-
-class TestParse < Test::Unit::TestCase
-
-  class MockOutput
-    def start_accepting
-      @res = []
-      end
-    
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_start(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_end(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_item(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_blank_line(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_heading(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_rule(am, fragment)
-      @res << fragment.to_s
-    end
-
-  end
-
-  def basic_conv(str)
-    sm = SimpleMarkup.new
-    mock = MockOutput.new
-    sm.convert(str, mock)
-    sm.content
-  end
-
-  def line_types(str, expected)
-    p = SimpleMarkup.new
-    mock = MockOutput.new
-    p.convert(str, mock)
-    assert_equal(expected, p.get_line_types.map{|type| type.to_s[0,1]}.join(''))
-  end
-
-  def line_groups(str, expected)
-    p = SimpleMarkup.new
-    mock = MockOutput.new
-
-    block = p.convert(str, mock)
-
-    if block != expected
-      rows = (0...([expected.size, block.size].max)).collect{|i|
-        [expected[i]||"nil", block[i]||"nil"] 
-      }
-      printf "\n\n%35s %35s\n", "Expected", "Got"
-      rows.each {|e,g| printf "%35s %35s\n", e.dump, g.dump }
-    end
-
-    assert_equal(expected, block)
-  end
-
-  def test_tabs
-    str = "hello\n  dave"
-    assert_equal(str, basic_conv(str))
-    str = "hello\n\tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n  \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n   \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n    \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n     \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n      \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n       \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n        \tdave"
-    assert_equal("hello\n                dave", basic_conv(str))
-    str = ".\t\t."
-    assert_equal(".               .", basic_conv(str))
-  end
-
-  def test_whitespace
-    assert_equal("hello", basic_conv("hello"))
-    assert_equal("hello", basic_conv(" hello "))
-    assert_equal("hello", basic_conv(" \t \t hello\t\t"))
-
-    assert_equal("1\n 2\n  3", basic_conv("1\n 2\n  3"))
-    assert_equal("1\n 2\n  3", basic_conv("  1\n   2\n    3"))
-
-    assert_equal("1\n 2\n  3\n1\n 2", basic_conv("1\n 2\n  3\n1\n 2"))
-    assert_equal("1\n 2\n  3\n1\n 2", basic_conv("  1\n   2\n    3\n  1\n   2"))
-
-    assert_equal("1\n 2\n\n  3", basic_conv("  1\n   2\n\n    3"))
-  end
-
-  def test_types
-    str = "now is the time"
-    line_types(str, 'P')
-
-    str = "now is the time\nfor all good men"
-    line_types(str, 'PP')
-
-    str = "now is the time\n  code\nfor all good men"
-    line_types(str, 'PVP')
-
-    str = "now is the time\n  code\n more code\nfor all good men"
-    line_types(str, 'PVVP')
-
-    str = "now is\n---\nthe time"
-    line_types(str, 'PRP')
-
-    str = %{\
-       now is
-       * l1
-       * l2
-       the time}
-    line_types(str, 'PLLP')
-
-    str = %{\
-       now is
-       * l1
-         l1+
-       * l2
-       the time}
-    line_types(str, 'PLPLP')
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-       * l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-           text
-             code
-             code
-
-           text
-       * l2
-       the time}
-    line_types(str, 'PLLPVVBPLP')
-
-    str = %{\
-       now is
-       1. l1
-          * l1.1
-       2. l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       [cat] l1
-             * l1.1
-       [dog] l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       [cat] l1
-             continuation
-       [dog] l2
-       the time}
-    line_types(str, 'PLPLP')
-  end
-
-  def test_groups
-    str = "now is the time"
-    line_groups(str, ["L0: Paragraph\nnow is the time"] )
-
-    str = "now is the time\nfor all good men"
-    line_groups(str, ["L0: Paragraph\nnow is the time for all good men"] )
-
-    str = %{\
-      now is the time
-        code _line_ here
-      for all good men}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is the time",
-                  "L0: Verbatim\n  code _line_ here\n",
-                  "L0: Paragraph\nfor all good men"
-                ] )
-
-    str = "now is the time\n  code\n more code\nfor all good men"
-    line_groups(str,
-                [ "L0: Paragraph\nnow is the time",
-                  "L0: Verbatim\n  code\n more code\n",
-                  "L0: Paragraph\nfor all good men"
-                ] )
-
-    str = %{\
-       now is
-       * l1
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       * l1
-         l1+
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1 l1+",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-           text
-             code
-               code
-
-           text
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1 text",
-                  "L2: Verbatim\n  code\n    code\n",
-                  "L2: Paragraph\ntext",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-       1. l1
-          * l1.1
-       2. l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       [cat] l1
-             * l1.1
-       [dog] l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       [cat] l1
-             continuation
-       [dog] l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1 continuation",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    
-  end
-
-  def test_verbatim_merge
-    str = %{\
-       now is
-          code
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-          code1
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-
-          code2
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n\n   code2\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    # Folds multiple blank lines
-    str = %{\
-       now is
-          code
-
-
-          code1
-
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-  end
- 
-  def test_list_split
-    str = %{\
-       now is
-       * l1
-       1. n1
-       2. n2
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L1: ListEnd\n",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nn1",
-                  "L1: ListItem\nn2",
-                  "L1: ListEnd\n",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-  end
-
-
-  def test_headings
-    str = "= heading one"
-    line_groups(str, 
-                [ "L0: Heading\nheading one"
-                ])
-
-    str = "=== heading three"
-    line_groups(str, 
-                [ "L0: Heading\nheading three"
-                ])
-
-    str = "text\n   === heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   === heading three\n"
-                ])
-
-    str = "text\n   code\n   === heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   code\n   === heading three\n"
-                ])
-
-    str = "text\n   code\n=== heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   code\n",
-                  "L0: Heading\nheading three"
-                ])
-
-  end
-
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/options.rb
deleted file mode 100644
index bea7e6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/options.rb
+++ /dev/null
@@ -1,586 +0,0 @@
-# We handle the parsing of options, and subsequently as a singleton
-# object to be queried for option values
-
-require "rdoc/ri/ri_paths"
-
-class Options
-
-  require 'singleton'
-  require 'getoptlong'
-
-  include Singleton
-
-  # files matching this pattern will be excluded
-  attr_accessor :exclude
-
-  # the name of the output directory
-  attr_accessor :op_dir
-  
-  # the name to use for the output
-  attr_reader :op_name
-
-  # include private and protected methods in the
-  # output
-  attr_accessor :show_all
-  
-  # name of the file, class or module to display in
-  # the initial index page (if not specified
-  # the first file we encounter is used)
-  attr_accessor :main_page
-
-  # merge into classes of the name name when generating ri
-  attr_reader :merge
-
-  # Don't display progress as we process the files
-  attr_reader :quiet
-
-  # description of the output generator (set with the <tt>-fmt</tt>
-  # option
-  attr_accessor :generator
-
-  # and the list of files to be processed
-  attr_reader :files
-
-  # array of directories to search for files to satisfy an :include:
-  attr_reader :rdoc_include
-
-  # title to be used out the output
-  #attr_writer :title
-
-  # template to be used when generating output
-  attr_reader :template
-
-  # should diagrams be drawn
-  attr_reader :diagram
-
-  # should we draw fileboxes in diagrams
-  attr_reader :fileboxes
-
-  # include the '#' at the front of hyperlinked instance method names
-  attr_reader :show_hash
-
-  # image format for diagrams
-  attr_reader :image_format
-
-  # character-set
-  attr_reader :charset
-
-  # should source code be included inline, or displayed in a popup
-  attr_reader :inline_source
-
-  # should the output be placed into a single file
-  attr_reader :all_one_file
-
-  # the number of columns in a tab
-  attr_reader :tab_width
-
-  # include line numbers in the source listings
-  attr_reader :include_line_numbers
-
-  # pattern for additional attr_... style methods
-  attr_reader :extra_accessors
-  attr_reader :extra_accessor_flags
-
-  # URL of stylesheet
-  attr_reader :css
-
-  # URL of web cvs frontend
-  attr_reader :webcvs
-
-  # Are we promiscuous about showing module contents across
-  # multiple files
-  attr_reader :promiscuous
-
-  # scan newer sources than the flag file if true.
-  attr_reader :force_update
-
-  module OptionList
-
-    OPTION_LIST = [
-      [ "--accessor",      "-A",   "accessorname[,..]",
-        "comma separated list of additional class methods\n" +
-        "that should be treated like 'attr_reader' and\n" +
-        "friends. Option may be repeated. Each accessorname\n" +
-        "may have '=text' appended, in which case that text\n" +
-        "appears where the r/w/rw appears for normal accessors."],
-                                                                   
-      [ "--all",           "-a",   nil,
-        "include all methods (not just public)\nin the output" ],
-
-      [ "--charset",       "-c",   "charset",
-        "specifies HTML character-set" ],
-
-      [ "--debug",         "-D",   nil,
-        "displays lots on internal stuff" ],
-
-      [ "--diagram",       "-d",   nil,
-        "Generate diagrams showing modules and classes.\n" +
-        "You need dot V1.8.6 or later to use the --diagram\n" +
-        "option correctly. Dot is available from\n"+
-        "http://www.research.att.com/sw/tools/graphviz/" ],
-
-      [ "--exclude",       "-x",   "pattern",
-        "do not process files or directories matching\n" +
-        "pattern. Files given explicitly on the command\n" +
-        "line will never be excluded." ],
-
-      [ "--extension",     "-E",   "new=old",
-        "Treat files ending with .new as if they ended with\n" +
-        ".old. Using '-E cgi=rb' will cause xxx.cgi to be\n" +
-        "parsed as a Ruby file"],
-
-      [ "--fileboxes",     "-F",   nil,
-        "classes are put in boxes which represents\n" +
-        "files, where these classes reside. Classes\n" +
-        "shared between more than one file are\n" +
-        "shown with list of files that sharing them.\n" +
-        "Silently discarded if --diagram is not given\n" +
-        "Experimental." ],
-
-      [ "--force-update",  "-U",   nil,
-        "forces to scan all sources even if newer than\n" +
-        "the flag file." ],
-
-      [ "--fmt",           "-f",   "format name",
-        "set the output formatter (see below)" ],
-
-      [ "--help",          "-h",   nil,
-        "you're looking at it" ],
-
-      [ "--help-output",   "-O",   nil,
-        "explain the various output options" ],
-
-      [ "--image-format",  "-I",   "gif/png/jpg/jpeg",
-        "Sets output image format for diagrams. Can\n" +
-        "be png, gif, jpeg, jpg. If this option is\n" +
-        "omitted, png is used. Requires --diagram." ],
-
-      [ "--include",       "-i",   "dir[,dir...]",
-        "set (or add to) the list of directories\n" +
-        "to be searched when satisfying :include:\n" +
-        "requests. Can be used more than once." ],
-
-      [ "--inline-source", "-S",   nil,
-        "Show method source code inline, rather\n" +
-        "than via a popup link" ],
-
-      [ "--line-numbers", "-N", nil,
-        "Include line numbers in the source code" ],
-
-      [ "--main",          "-m",   "name",
-        "'name' will be the initial page displayed" ],
-
-      [ "--merge",         "-M",   nil,
-        "when creating ri output, merge processed classes\n" +
-        "into previously documented classes of the name name"],
-
-      [ "--one-file",      "-1",   nil,
-        "put all the output into a single file" ],
-
-      [ "--op",            "-o",   "dir",
-        "set the output directory" ],
-
-      [ "--opname",       "-n",    "name",
-        "Set the 'name' of the output. Has no\n" +
-        "effect for HTML." ],
-
-      [ "--promiscuous",   "-p",   nil,
-        "When documenting a file that contains a module\n" +
-        "or class also defined in other files, show\n" +
-        "all stuff for that module/class in each files\n" +
-        "page. By default, only show stuff defined in\n" +
-        "that particular file." ],
-
-      [ "--quiet",         "-q",   nil,
-        "don't show progress as we parse" ],
-
-      [ "--ri",            "-r",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in the '.rdoc' directory under your home\n"+
-       "directory unless overridden by a subsequent\n" +
-       "--op parameter, so no special privileges are needed." ],
-
-      [ "--ri-site",       "-R",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in a site-wide directory, making them accessible\n"+
-       "to others, so special privileges are needed." ],
-
-      [ "--ri-system",     "-Y",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in a system-level directory, making them accessible\n"+
-       "to others, so special privileges are needed. This option\n"+
-       "is intended to be used during Ruby installations" ],
-
-      [ "--show-hash",     "-H",   nil,
-        "A name of the form #name in a comment\n" +
-        "is a possible hyperlink to an instance\n" +
-        "method name. When displayed, the '#' is\n" +
-        "removed unless this option is specified" ],
-
-      [ "--style",         "-s",   "stylesheet url",
-        "specifies the URL of a separate stylesheet." ],
-
-      [ "--tab-width",     "-w",   "n",
-        "Set the width of tab characters (default 8)"],
-
-      [ "--template",      "-T",   "template name",
-        "Set the template used when generating output" ],
-
-      [ "--title",         "-t",   "text",
-        "Set 'txt' as the title for the output" ],
-
-      [ "--version",       "-v",   nil,
-        "display  RDoc's version" ],
-
-      [ "--webcvs",        "-W",   "url",
-        "Specify a URL for linking to a web frontend\n" +
-        "to CVS. If the URL contains a '\%s', the\n" +
-        "name of the current file will be substituted;\n" +
-        "if the URL doesn't contain a '\%s', the\n" +
-        "filename will be appended to it." ],
-    ]
-
-    def OptionList.options
-      OPTION_LIST.map do |long, short, arg,|
-        [ long, 
-          short, 
-          arg ? GetoptLong::REQUIRED_ARGUMENT : GetoptLong::NO_ARGUMENT 
-        ]
-      end
-    end
-
-
-    def OptionList.strip_output(text)
-      text =~ /^\s+/
-      leading_spaces = $&
-      text.gsub!(/^#{leading_spaces}/, '')
-      $stdout.puts text
-    end
-
-
-    # Show an error and exit
-
-    def OptionList.error(msg)
-      $stderr.puts
-      $stderr.puts msg
-      $stderr.puts "\nFor help on options, try 'rdoc --help'\n\n"
-      exit 1
-    end
-
-    # Show usage and exit
-    
-    def OptionList.usage(generator_names)
-      
-      puts
-      puts(VERSION_STRING)
-      puts
-
-      name = File.basename($0)
-      OptionList.strip_output(<<-EOT)
-          Usage:
-
-            #{name} [options]  [names...]
-
-          Files are parsed, and the information they contain
-          collected, before any output is produced. This allows cross
-          references between all files to be resolved. If a name is a
-          directory, it is traversed. If no names are specified, all
-          Ruby files in the current directory (and subdirectories) are
-          processed.
-
-          Options:
-
-      EOT
-
-      OPTION_LIST.each do |long, short, arg, desc|
-        opt = sprintf("%20s", "#{long}, #{short}")
-        oparg = sprintf("%-7s", arg)
-        print "#{opt} #{oparg}"
-        desc = desc.split("\n")
-        if arg.nil? || arg.length < 7
-          puts desc.shift
-        else
-          puts
-        end
-        desc.each do |line|
-          puts(" "*28 + line)
-        end
-        puts
-      end
-
-      puts "\nAvailable output formatters: " +
-        generator_names.sort.join(', ') + "\n\n"
-
-      puts "For information on where the output goes, use\n\n"
-      puts "   rdoc --help-output\n\n"
-
-      exit 0
-    end
-
-    def OptionList.help_output
-      OptionList.strip_output(<<-EOT)
-      How RDoc generates output depends on the output formatter being
-      used, and on the options you give.
-
-      - HTML output is normally produced into a number of separate files
-        (one per class, module, and file, along with various indices). 
-        These files will appear in the directory given by the --op
-        option (doc/ by default).
-
-      - XML output by default is written to standard output. If a
-        --opname option is given, the output will instead be written
-        to a file with that name in the output directory.
-
-      - .chm files (Windows help files) are written in the --op directory.
-        If an --opname parameter is present, that name is used, otherwise
-        the file will be called rdoc.chm.
-
-      For information on other RDoc options, use "rdoc --help".
-      EOT
-      exit 0
-    end
-  end
-
-  # Parse command line options. We're passed a hash containing
-  # output generators, keyed by the generator name
-
-  def parse(argv, generators)
-    old_argv = ARGV.dup
-    begin
-      ARGV.replace(argv)
-      @op_dir = "doc"
-      @op_name = nil
-      @show_all = false
-      @main_page = nil
-      @marge     = false
-      @exclude   = []
-      @quiet = false
-      @generator_name = 'html'
-      @generator = generators[@generator_name]
-      @rdoc_include = []
-      @title = nil
-      @template = nil
-      @diagram = false
-      @fileboxes = false
-      @show_hash = false
-      @image_format = 'png'
-      @inline_source = false
-      @all_one_file  = false
-      @tab_width = 8
-      @include_line_numbers = false
-      @extra_accessor_flags = {}
-      @promiscuous = false
-      @force_update = false
-
-      @css = nil
-      @webcvs = nil
-
-      @charset = case $KCODE
-                 when /^S/i
-                   'Shift_JIS'
-                 when /^E/i
-                   'EUC-JP'
-                 else
-                   'iso-8859-1'
-                 end
-
-      accessors = []
-
-      go = GetoptLong.new(*OptionList.options)
-      go.quiet = true
-
-      go.each do |opt, arg|
-	case opt
-        when "--all"           then @show_all      = true
-        when "--charset"       then @charset       = arg
-        when "--debug"         then $DEBUG         = true
-        when "--exclude"       then @exclude       << Regexp.new(arg)
-        when "--inline-source" then @inline_source = true
-        when "--line-numbers"  then @include_line_numbers = true
-        when "--main"          then @main_page     = arg
-        when "--merge"         then @merge         = true
-        when "--one-file"      then @all_one_file  = @inline_source = true
-        when "--op"            then @op_dir        = arg
-        when "--opname"        then @op_name       = arg
-        when "--promiscuous"   then @promiscuous   = true
-        when "--quiet"         then @quiet         = true
-        when "--show-hash"     then @show_hash     = true
-        when "--style"         then @css           = arg
-        when "--template"      then @template      = arg
-        when "--title"         then @title         = arg
-        when "--webcvs"        then @webcvs        = arg
-
-        when "--accessor" 
-          arg.split(/,/).each do |accessor|
-            if accessor =~ /^(\w+)(=(.*))?$/
-              accessors << $1
-              @extra_accessor_flags[$1] = $3
-            end
-          end
-
-        when "--diagram"
-          check_diagram
-          @diagram = true
-
-        when "--fileboxes"
-          @fileboxes = true if @diagram
-
-	when "--fmt"
-          @generator_name = arg.downcase
-          setup_generator(generators)
-
-        when "--help"      
-          OptionList.usage(generators.keys)
-
-        when "--help-output"      
-          OptionList.help_output
-
-        when "--image-format"
-          if ['gif', 'png', 'jpeg', 'jpg'].include?(arg)
-            @image_format = arg
-          else
-            raise GetoptLong::InvalidOption.new("unknown image format: #{arg}")
-          end
-
-        when "--include"   
-          @rdoc_include.concat arg.split(/\s*,\s*/)
-
-        when "--ri", "--ri-site", "--ri-system"
-          @generator_name = "ri"
-          @op_dir = case opt
-                    when "--ri" then RI::Paths::HOMEDIR 
-                    when "--ri-site" then RI::Paths::SITEDIR
-                    when "--ri-system" then RI::Paths::SYSDIR
-                    else fail opt
-                    end
-          setup_generator(generators)
-
-        when "--tab-width"
-          begin
-            @tab_width     = Integer(arg)
-          rescue 
-            $stderr.puts "Invalid tab width: '#{arg}'"
-            exit 1
-          end
-
-        when "--extension"
-          new, old = arg.split(/=/, 2)
-          OptionList.error("Invalid parameter to '-E'") unless new && old
-          unless RDoc::ParserFactory.alias_extension(old, new)
-            OptionList.error("Unknown extension .#{old} to -E")
-          end
-
-        when "--force-update"
-          @force_update = true
-
-	when "--version"
-	  puts VERSION_STRING
-	  exit
-	end
-
-      end
-
-      @files = ARGV.dup
-
-      @rdoc_include << "." if @rdoc_include.empty?
-
-      if @exclude.empty?
-        @exclude = nil
-      else
-        @exclude = Regexp.new(@exclude.join("|"))
-      end
-
-      check_files
-
-      # If no template was specified, use the default
-      # template for the output formatter
-
-      @template ||= @generator_name
-
-      # Generate a regexp from the accessors
-      unless accessors.empty?
-        re = '^(' + accessors.map{|a| Regexp.quote(a)}.join('|') + ')$' 
-        @extra_accessors = Regexp.new(re)
-      end
-
-    rescue GetoptLong::InvalidOption, GetoptLong::MissingArgument => error
-      OptionList.error(error.message)
-
-    ensure
-      ARGV.replace(old_argv)
-    end
-  end
-
-
-  def title
-    @title ||= "RDoc Documentation"
-  end
-  
-  # Set the title, but only if not already set. This means that a title set from 
-  # the command line trumps one set in a source file
-
-  def title=(string)
-    @title ||= string
-  end
-
-
-  private
-
-  # Set up an output generator for the format in @generator_name
-  def setup_generator(generators)
-    @generator = generators[@generator_name]
-    if !@generator
-      OptionList.error("Invalid output formatter")
-    end
-    
-    if @generator_name == "xml"
-      @all_one_file = true
-      @inline_source = true
-    end
-  end
-
-  # Check that the right version of 'dot' is available.
-  # Unfortuately this doesn't work correctly under Windows NT, 
-  # so we'll bypass the test under Windows
-
-  def check_diagram
-    return if RUBY_PLATFORM =~ /win/
-
-    ok = false
-    ver = nil
-    IO.popen("dot -V 2>&1") do |io|
-      ver = io.read
-      if ver =~ /dot.+version(?:\s+gviz)?\s+(\d+)\.(\d+)/
-        ok = ($1.to_i > 1) || ($1.to_i == 1 && $2.to_i >= 8)
-      end
-    end
-    unless ok
-      if ver =~ /^dot.+version/
-        $stderr.puts "Warning: You may need dot V1.8.6 or later to use\n",
-          "the --diagram option correctly. You have:\n\n   ",
-          ver,
-          "\nDiagrams might have strange background colors.\n\n"
-      else
-        $stderr.puts "You need the 'dot' program to produce diagrams.",
-          "(see http://www.research.att.com/sw/tools/graphviz/)\n\n"
-        exit
-      end
-#      exit
-    end
-  end
-  
-  # Check that the files on the command line exist
-  
-  def check_files
-    @files.each do |f|
-      stat = File.stat f rescue error("File not found: #{f}")
-      error("File '#{f}' not readable") unless stat.readable?
-    end
-  end
-
-  def error(str)
-    $stderr.puts str
-    exit(1)
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_c.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_c.rb
deleted file mode 100644
index 25fc66a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_c.rb
+++ /dev/null
@@ -1,773 +0,0 @@
-# Classes and modules built in to the interpreter. We need
-# these to define superclasses of user objects
-
-require "rdoc/code_objects"
-require "rdoc/parsers/parserfactory"
-require "rdoc/options"
-require "rdoc/rdoc"
-
-module RDoc
-
-  ##
-  # Ruby's built-in classes.
-
-  KNOWN_CLASSES = {
-    "rb_cObject"           => "Object",
-    "rb_cArray"            => "Array",
-    "rb_cBignum"           => "Bignum",
-    "rb_cClass"            => "Class",
-    "rb_cDir"              => "Dir",
-    "rb_cData"             => "Data",
-    "rb_cFalseClass"       => "FalseClass",
-    "rb_cFile"             => "File",
-    "rb_cFixnum"           => "Fixnum",
-    "rb_cFloat"            => "Float",
-    "rb_cHash"             => "Hash",
-    "rb_cInteger"          => "Integer",
-    "rb_cIO"               => "IO",
-    "rb_cModule"           => "Module",
-    "rb_cNilClass"         => "NilClass",
-    "rb_cNumeric"          => "Numeric",
-    "rb_cProc"             => "Proc",
-    "rb_cRange"            => "Range",
-    "rb_cRegexp"           => "Regexp",
-    "rb_cString"           => "String",
-    "rb_cSymbol"           => "Symbol",
-    "rb_cThread"           => "Thread",
-    "rb_cTime"             => "Time",
-    "rb_cTrueClass"        => "TrueClass",
-    "rb_cStruct"           => "Struct",
-    "rb_eException"        => "Exception",
-    "rb_eStandardError"    => "StandardError",
-    "rb_eSystemExit"       => "SystemExit",
-    "rb_eInterrupt"        => "Interrupt",
-    "rb_eSignal"           => "Signal",
-    "rb_eFatal"            => "Fatal",
-    "rb_eArgError"         => "ArgError",
-    "rb_eEOFError"         => "EOFError",
-    "rb_eIndexError"       => "IndexError",
-    "rb_eRangeError"       => "RangeError",
-    "rb_eIOError"          => "IOError",
-    "rb_eRuntimeError"     => "RuntimeError",
-    "rb_eSecurityError"    => "SecurityError",
-    "rb_eSystemCallError"  => "SystemCallError",
-    "rb_eTypeError"        => "TypeError",
-    "rb_eZeroDivError"     => "ZeroDivError",
-    "rb_eNotImpError"      => "NotImpError",
-    "rb_eNoMemError"       => "NoMemError",
-    "rb_eFloatDomainError" => "FloatDomainError",
-    "rb_eScriptError"      => "ScriptError",
-    "rb_eNameError"        => "NameError",
-    "rb_eSyntaxError"      => "SyntaxError",
-    "rb_eLoadError"        => "LoadError",
-
-    "rb_mKernel"           => "Kernel",
-    "rb_mComparable"       => "Comparable",
-    "rb_mEnumerable"       => "Enumerable",
-    "rb_mPrecision"        => "Precision",
-    "rb_mErrno"            => "Errno",
-    "rb_mFileTest"         => "FileTest",
-    "rb_mGC"               => "GC",
-    "rb_mMath"             => "Math",
-    "rb_mProcess"          => "Process"
-  }
-
-  ##
-  # We attempt to parse C extension files. Basically we look for
-  # the standard patterns that you find in extensions: <tt>rb_define_class,
-  # rb_define_method</tt> and so on. We also try to find the corresponding
-  # C source for the methods and extract comments, but if we fail
-  # we don't worry too much.
-  #
-  # The comments associated with a Ruby method are extracted from the C
-  # comment block associated with the routine that _implements_ that
-  # method, that is to say the method whose name is given in the
-  # <tt>rb_define_method</tt> call. For example, you might write:
-  #
-  #  /*
-  #   * 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.
-  #   *
-  #   *    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]
-  #   */
-  #   static VALUE
-  #   rb_ary_flatten(ary)
-  #       VALUE ary;
-  #   {
-  #       ary = rb_obj_dup(ary);
-  #       rb_ary_flatten_bang(ary);
-  #       return ary;
-  #   }
-  #
-  #   ...
-  #
-  #   void
-  #   Init_Array()
-  #   {
-  #     ...
-  #     rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
-  #
-  # Here RDoc will determine from the rb_define_method line that there's a
-  # method called "flatten" in class Array, and will look for the implementation
-  # in the method rb_ary_flatten. It will then use the comment from that
-  # method in the HTML output. This method must be in the same source file
-  # as the rb_define_method.
-  #
-  # C classes can be diagramed (see /tc/dl/ruby/ruby/error.c), and RDoc
-  # integrates C and Ruby source into one tree
-  #
-  # The comment blocks may include special direcives:
-  #
-  # [Document-class: <i>name</i>]
-  #   This comment block is documentation for the given class. Use this
-  #   when the <tt>Init_xxx</tt> method is not named after the class.
-  #
-  # [Document-method: <i>name</i>]
-  #   This comment documents the named method. Use when RDoc cannot
-  #   automatically find the method from it's declaration
-  #
-  # [call-seq:  <i>text up to an empty line</i>]
-  #   Because C source doesn't give descripive names to Ruby-level parameters,
-  #   you need to document the calling sequence explicitly
-  #
-  # In additon, RDoc assumes by default that the C method implementing a 
-  # Ruby function is in the same source file as the rb_define_method call.
-  # If this isn't the case, add the comment 
-  #
-  #    rb_define_method(....);  // in: filename
-  #
-  # As an example, we might have an extension that defines multiple classes
-  # in its Init_xxx method. We could document them using
-  #
-  #  
-  #  /*
-  #   * Document-class:  MyClass
-  #   *
-  #   * Encapsulate the writing and reading of the configuration
-  #   * file. ...
-  #   */
-  #  
-  #  /*
-  #   * Document-method: read_value
-  #   *
-  #   * call-seq:
-  #   *   cfg.read_value(key)            -> value
-  #   *   cfg.read_value(key} { |key| }  -> value
-  #   *
-  #   * Return the value corresponding to +key+ from the configuration.
-  #   * In the second form, if the key isn't found, invoke the
-  #   * block and return its value.
-  #   */
-  #
-
-  class C_Parser
-
-    attr_accessor :progress
-
-    extend ParserFactory
-    parse_files_matching(/\.(?:([CcHh])\1?|c([+xp])\2|y)\z/)
-
-    @@known_bodies = {}
-
-    # prepare to parse a C file
-    def initialize(top_level, file_name, body, options, stats)
-      @known_classes = KNOWN_CLASSES.dup
-      @body = handle_tab_width(handle_ifdefs_in(body))
-      @options = options
-      @stats   = stats
-      @top_level = top_level
-      @classes = Hash.new
-      @file_dir = File.dirname(file_name)
-      @progress = $stderr unless options.quiet
-    end
-
-    # Extract the classes/modules and methods from a C file
-    # and return the corresponding top-level object
-    def scan
-      remove_commented_out_lines
-      do_classes
-      do_constants
-      do_methods
-      do_includes
-      do_aliases
-      @top_level
-    end
-
-    #######
-    private
-    #######
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-        @progress.flush
-      end
-    end
-
-    def warn(msg)
-      $stderr.puts
-      $stderr.puts msg
-      $stderr.flush
-    end
-
-    def remove_private_comments(comment)
-       comment.gsub!(/\/?\*--(.*?)\/?\*\+\+/m, '')
-       comment.sub!(/\/?\*--.*/m, '')
-    end
-
-    ##
-    # removes lines that are commented out that might otherwise get picked up
-    # when scanning for classes and methods
-
-    def remove_commented_out_lines
-      @body.gsub!(%r{//.*rb_define_}, '//')
-    end
-    
-    def handle_class_module(var_name, class_mod, class_name, parent, in_module)
-      progress(class_mod[0, 1])
-
-      parent_name = @known_classes[parent] || parent
-
-      if in_module
-        enclosure = @classes[in_module]
-        unless enclosure
-          if enclosure = @known_classes[in_module]
-            handle_class_module(in_module, (/^rb_m/ =~ in_module ? "module" : "class"),
-                                enclosure, nil, nil)
-            enclosure = @classes[in_module]
-          end
-        end
-        unless enclosure
-          warn("Enclosing class/module '#{in_module}' for " +
-                "#{class_mod} #{class_name} not known")
-          return
-        end
-      else
-        enclosure = @top_level
-      end
-
-      if class_mod == "class" 
-        cm = enclosure.add_class(NormalClass, class_name, parent_name)
-        @stats.num_classes += 1
-      else
-        cm = enclosure.add_module(NormalModule, class_name)
-        @stats.num_modules += 1
-      end
-      cm.record_location(enclosure.toplevel)
-
-      find_class_comment(cm.full_name, cm)
-      @classes[var_name] = cm
-      @known_classes[var_name] = cm.full_name
-    end
-
-    ##
-    # Look for class or module documentation above Init_+class_name+(void),
-    # in a Document-class +class_name+ (or module) comment or above an
-    # rb_define_class (or module).  If a comment is supplied above a matching
-    # Init_ and a rb_define_class the Init_ comment is used.
-    #
-    #   /*
-    #    * This is a comment for Foo
-    #    */
-    #   Init_Foo(void) {
-    #       VALUE cFoo = rb_define_class("Foo", rb_cObject);
-    #   }
-    #
-    #   /*
-    #    * Document-class: Foo
-    #    * This is a comment for Foo
-    #    */
-    #   Init_foo(void) {
-    #       VALUE cFoo = rb_define_class("Foo", rb_cObject);
-    #   }
-    #
-    #   /*
-    #    * This is a comment for Foo
-    #    */
-    #   VALUE cFoo = rb_define_class("Foo", rb_cObject);
-
-    def find_class_comment(class_name, class_meth)
-      comment = nil
-      if @body =~ %r{((?>/\*.*?\*/\s+))
-                     (static\s+)?void\s+Init_#{class_name}\s*(?:_\(\s*)?\(\s*(?:void\s*)?\)}xmi
-        comment = $1
-      elsif @body =~ %r{Document-(class|module):\s#{class_name}\s*?\n((?>.*?\*/))}m
-        comment = $2
-      else
-        if @body =~ /rb_define_(class|module)/m then
-          class_name = class_name.split("::").last
-          comments = []
-          @body.split(/(\/\*.*?\*\/)\s*?\n/m).each_with_index do |chunk, index|
-            comments[index] = chunk
-            if chunk =~ /rb_define_(class|module).*?"(#{class_name})"/m then
-              comment = comments[index-1]
-              break
-            end
-          end
-        end
-      end
-      class_meth.comment = mangle_comment(comment) if comment
-    end
-    
-    ############################################################
-
-    def do_classes
-      @body.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do 
-        |var_name, class_name|
-        handle_class_module(var_name, "module", class_name, nil, nil)
-      end
-      
-      # The '.' lets us handle SWIG-generated files
-      @body.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
-                \( 
-                   \s*"(\w+)",
-                   \s*(\w+)\s*
-                \)/mx) do 
-        
-        |var_name, class_name, parent|
-        handle_class_module(var_name, "class", class_name, parent, nil)
-      end
-      
-      @body.scan(/(\w+)\s*=\s*boot_defclass\s*\(\s*"(\w+?)",\s*(\w+?)\s*\)/) do
-        |var_name, class_name, parent|
-        parent = nil if parent == "0"
-        handle_class_module(var_name, "class", class_name, parent, nil)
-      end
-
-      @body.scan(/(\w+)\s* = \s*rb_define_module_under\s*
-                \( 
-                   \s*(\w+),
-                   \s*"(\w+)"
-                \s*\)/mx) do 
-        
-        |var_name, in_module, class_name|
-        handle_class_module(var_name, "module", class_name, nil, in_module)
-      end
-      
-      @body.scan(/([\w\.]+)\s* = \s*rb_define_class_under\s*
-                \( 
-                   \s*(\w+),
-                   \s*"(\w+)",
-                   \s*(\w+)\s*
-                \s*\)/mx) do 
-        
-        |var_name, in_module, class_name, parent|
-        handle_class_module(var_name, "class", class_name, parent, in_module)
-      end
-      
-    end
-
-		###########################################################
-
-    def do_constants
-      @body.scan(%r{\Wrb_define_
-                     (
-                        variable |
-                        readonly_variable |
-                        const |
-                        global_const |
-                      )
-                 \s*\( 
-                   (?:\s*(\w+),)?
-                   \s*"(\w+)",
-                   \s*(.*?)\s*\)\s*;
-                   }xm) do
-        
-        |type, var_name, const_name, definition|
-        var_name = "rb_cObject" if !var_name or var_name == "rb_mKernel"
-				handle_constants(type, var_name, const_name, definition)
-      end
-    end
-    
-    ############################################################
-    
-    def do_methods
-
-      @body.scan(%r{rb_define_
-                     (
-                        singleton_method |
-                        method           |
-                        module_function  |
-                        private_method
-                     )
-                     \s*\(\s*([\w\.]+),
-                       \s*"([^"]+)",
-                       \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                       \s*(-?\w+)\s*\)
-                     (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
-                   }xm) do
-        |type, var_name, meth_name, meth_body, param_count, source_file|
-       #" 
-
-        # Ignore top-object and weird struct.c dynamic stuff
-        next if var_name == "ruby_top_self" 
-        next if var_name == "nstr"
-        next if var_name == "envtbl"
-        next if var_name == "argf"   # it'd be nice to handle this one
-
-        var_name = "rb_cObject" if var_name == "rb_mKernel"
-        handle_method(type, var_name, meth_name, 
-                      meth_body, param_count, source_file)
-      end
-
-      @body.scan(%r{rb_define_attr\(
-                               \s*([\w\.]+),
-                               \s*"([^"]+)",
-                               \s*(\d+),
-                               \s*(\d+)\s*\);
-                  }xm) do  #"
-        |var_name, attr_name, attr_reader, attr_writer|
-        
-        #var_name = "rb_cObject" if var_name == "rb_mKernel"
-        handle_attr(var_name, attr_name,
-                    attr_reader.to_i != 0,
-                    attr_writer.to_i != 0)
-      end
-
-      @body.scan(%r{rb_define_global_function\s*\(
-                               \s*"([^"]+)",
-                               \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                               \s*(-?\w+)\s*\)
-                  (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
-                  }xm) do  #"
-        |meth_name, meth_body, param_count, source_file|
-        handle_method("method", "rb_mKernel", meth_name, 
-                      meth_body, param_count, source_file)
-      end
-  
-      @body.scan(/define_filetest_function\s*\(
-                               \s*"([^"]+)",
-                               \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                               \s*(-?\w+)\s*\)/xm) do  #"
-        |meth_name, meth_body, param_count|
-        
-        handle_method("method", "rb_mFileTest", meth_name, meth_body, param_count)
-        handle_method("singleton_method", "rb_cFile", meth_name, meth_body, param_count)
-      end
-   end
-
-    ############################################################
-    
-    def do_aliases
-      @body.scan(%r{rb_define_alias\s*\(\s*(\w+),\s*"([^"]+)",\s*"([^"]+)"\s*\)}m) do
-        |var_name, new_name, old_name|
-        @stats.num_methods += 1
-        class_name = @known_classes[var_name] || var_name
-        class_obj  = find_class(var_name, class_name)
-
-        class_obj.add_alias(Alias.new("", old_name, new_name, ""))
-      end
-   end
-
-    ##
-    # Adds constant comments.  By providing some_value: at the start ofthe
-    # comment you can override the C value of the comment to give a friendly
-    # definition.
-    #
-    #   /* 300: The perfect score in bowling */
-    #   rb_define_const(cFoo, "PERFECT", INT2FIX(300);
-    #
-    # Will override +INT2FIX(300)+ with the value +300+ in the output RDoc.
-    # Values may include quotes and escaped colons (\:).
-
-    def handle_constants(type, var_name, const_name, definition)
-      #@stats.num_constants += 1
-      class_name = @known_classes[var_name]
-      
-      return unless class_name
-
-      class_obj  = find_class(var_name, class_name)
-
-      unless class_obj
-        warn("Enclosing class/module '#{const_name}' for not known")
-        return
-      end
-      
-      comment = find_const_comment(type, const_name)
-
-      # In the case of rb_define_const, the definition and comment are in
-      # "/* definition: comment */" form.  The literal ':' and '\' characters
-      # can be escaped with a backslash.
-      if type.downcase == 'const' then
-         elements = mangle_comment(comment).split(':')
-         if elements.nil? or elements.empty? then
-            con = Constant.new(const_name, definition, mangle_comment(comment))
-         else
-            new_definition = elements[0..-2].join(':')
-            if new_definition.empty? then # Default to literal C definition
-               new_definition = definition
-            else
-               new_definition.gsub!("\:", ":")
-               new_definition.gsub!("\\", '\\')
-            end
-            new_definition.sub!(/\A(\s+)/, '')
-            new_comment = $1.nil? ? elements.last : "#{$1}#{elements.last.lstrip}"
-            con = Constant.new(const_name, new_definition,
-                               mangle_comment(new_comment))
-         end
-      else
-         con = Constant.new(const_name, definition, mangle_comment(comment))
-      end
-
-      class_obj.add_constant(con)
-    end
-
-    ##
-    # Finds a comment matching +type+ and +const_name+ either above the
-    # comment or in the matching Document- section.
-
-    def find_const_comment(type, const_name)
-      if @body =~ %r{((?>^\s*/\*.*?\*/\s+))
-                     rb_define_#{type}\((?:\s*(\w+),)?\s*"#{const_name}"\s*,.*?\)\s*;}xmi
-        $1
-      elsif @body =~ %r{Document-(?:const|global|variable):\s#{const_name}\s*?\n((?>.*?\*/))}m
-        $1
-      else
-        ''
-      end
-    end
-
-    ###########################################################
-
-    def handle_attr(var_name, attr_name, reader, writer)
-      rw = ''
-      if reader 
-        #@stats.num_methods += 1
-        rw << 'R'
-      end
-      if writer
-        #@stats.num_methods += 1
-        rw << 'W'
-      end
-
-      class_name = @known_classes[var_name]
-
-      return unless class_name
-      
-      class_obj  = find_class(var_name, class_name)
-
-      if class_obj
-        comment = find_attr_comment(attr_name)
-        unless comment.empty?
-          comment = mangle_comment(comment)
-        end
-        att = Attr.new('', attr_name, rw, comment)
-        class_obj.add_attribute(att)
-      end
-
-    end
-
-    ###########################################################
-
-    def find_attr_comment(attr_name)
-      if @body =~ %r{((?>/\*.*?\*/\s+))
-                     rb_define_attr\((?:\s*(\w+),)?\s*"#{attr_name}"\s*,.*?\)\s*;}xmi
-        $1
-      elsif @body =~ %r{Document-attr:\s#{attr_name}\s*?\n((?>.*?\*/))}m
-        $1
-      else
-        ''
-      end
-    end
-
-    ###########################################################
-
-    def handle_method(type, var_name, meth_name, 
-                      meth_body, param_count, source_file = nil)
-      progress(".")
-
-      @stats.num_methods += 1
-      class_name = @known_classes[var_name]
-
-      return unless class_name
-
-      class_obj  = find_class(var_name, class_name)
-      
-      if class_obj
-        if meth_name == "initialize"
-          meth_name = "new"
-          type = "singleton_method"
-        end
-        meth_obj = AnyMethod.new("", meth_name)
-        meth_obj.singleton =
-	  %w{singleton_method module_function}.include?(type) 
-        
-        p_count = (Integer(param_count) rescue -1)
-        
-        if p_count < 0
-          meth_obj.params = "(...)"
-        elsif p_count == 0
-          meth_obj.params = "()"
-        else
-          meth_obj.params = "(" +
-                            (1..p_count).map{|i| "p#{i}"}.join(", ") + 
-                                                ")"
-        end
-
-        if source_file
-          file_name = File.join(@file_dir, source_file)
-          body = (@@known_bodies[source_file] ||= File.read(file_name))
-        else
-          body = @body
-        end
-        if find_body(meth_body, meth_obj, body) and meth_obj.document_self
-          class_obj.add_method(meth_obj)
-        end
-      end
-    end
-    
-    ############################################################
-
-    # Find the C code corresponding to a Ruby method
-    def find_body(meth_name, meth_obj, body, quiet = false)
-      case body
-      when %r{((?>/\*.*?\*/\s*))(?:static\s+)?VALUE\s+#{meth_name}
-              \s*(\(.*?\)).*?^}xm
-        comment, params = $1, $2
-        body_text = $&
-
-        remove_private_comments(comment) if comment
-
-        # see if we can find the whole body
-        
-        re = Regexp.escape(body_text) + '[^(]*^\{.*?^\}'
-        if Regexp.new(re, Regexp::MULTILINE).match(body)
-          body_text = $&
-        end
-
-        # The comment block may have been overridden with a
-        # 'Document-method' block. This happens in the interpreter
-        # when multiple methods are vectored through to the same
-        # C method but those methods are logically distinct (for
-        # example Kernel.hash and Kernel.object_id share the same
-        # implementation
-
-        override_comment = find_override_comment(meth_obj.name)
-        comment = override_comment if override_comment
-
-        find_modifiers(comment, meth_obj) if comment
-        
-#        meth_obj.params = params
-        meth_obj.start_collecting_tokens
-        meth_obj.add_token(RubyToken::Token.new(1,1).set_text(body_text))
-        meth_obj.comment = mangle_comment(comment)
-      when %r{((?>/\*.*?\*/\s*))^\s*\#\s*define\s+#{meth_name}\s+(\w+)}m
-        comment = $1
-        find_body($2, meth_obj, body, true)
-        find_modifiers(comment, meth_obj)
-        meth_obj.comment = mangle_comment(comment) + meth_obj.comment
-      when %r{^\s*\#\s*define\s+#{meth_name}\s+(\w+)}m
-        unless find_body($1, meth_obj, body, true)
-          warn "No definition for #{meth_name}" unless quiet
-          return false
-        end
-      else
-
-        # No body, but might still have an override comment
-        comment = find_override_comment(meth_obj.name)
-
-        if comment
-          find_modifiers(comment, meth_obj)
-          meth_obj.comment = mangle_comment(comment)
-        else
-          warn "No definition for #{meth_name}" unless quiet
-          return false
-        end
-      end
-      true
-    end
-
-
-    ##
-    # If the comment block contains a section that looks like:
-    #
-    #    call-seq:
-    #        Array.new
-    #        Array.new(10)
-    #
-    # use it for the parameters.
-
-    def find_modifiers(comment, meth_obj)
-      if comment.sub!(/:nodoc:\s*^\s*\*?\s*$/m, '') or
-         comment.sub!(/\A\/\*\s*:nodoc:\s*\*\/\Z/, '')
-        meth_obj.document_self = false
-      end
-      if comment.sub!(/call-seq:(.*?)^\s*\*?\s*$/m, '') or
-         comment.sub!(/\A\/\*\s*call-seq:(.*?)\*\/\Z/, '')
-        seq = $1
-        seq.gsub!(/^\s*\*\s*/, '')
-        meth_obj.call_seq = seq
-      end
-    end
-
-    ############################################################
-
-    def find_override_comment(meth_name)
-      name = Regexp.escape(meth_name)
-      if @body =~ %r{Document-method:\s#{name}\s*?\n((?>.*?\*/))}m
-        $1
-      end
-    end
-
-    ##
-    # Look for includes of the form:
-    #
-    #     rb_include_module(rb_cArray, rb_mEnumerable);
-
-    def do_includes
-      @body.scan(/rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/) do |c,m|
-        if cls = @classes[c]
-          m = @known_classes[m] || m
-          cls.add_include(Include.new(m, ""))
-        end
-      end
-    end
-
-    ##
-    # Remove the /*'s and leading asterisks from C comments
-    
-    def mangle_comment(comment)
-      comment.sub!(%r{/\*+}) { " " * $&.length }
-      comment.sub!(%r{\*+/}) { " " * $&.length }
-      comment.gsub!(/^[ \t]*\*/m) { " " * $&.length }
-      comment
-    end
-
-    def find_class(raw_name, name)
-      unless @classes[raw_name]
-        if raw_name =~ /^rb_m/ 
-          @classes[raw_name] = @top_level.add_module(NormalModule, name)
-        else
-          @classes[raw_name] = @top_level.add_class(NormalClass, name, nil)
-        end
-      end
-      @classes[raw_name]
-    end
-
-    def handle_tab_width(body)
-      if /\t/ =~ body
-        tab_width = Options.instance.tab_width
-        body.split(/\n/).map do |line|
-          1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)}  && $~ #`
-          line
-        end .join("\n")
-      else
-        body
-      end
-    end
-
-    ##
-    # Removes #ifdefs that would otherwise confuse us
-    
-    def handle_ifdefs_in(body)
-      body.gsub(/^#ifdef HAVE_PROTOTYPES.*?#else.*?\n(.*?)#endif.*?\n/m) { $1 }
-    end
-    
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_f95.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_f95.rb
deleted file mode 100644
index f3f6d76..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_f95.rb
+++ /dev/null
@@ -1,1841 +0,0 @@
-#= parse_f95.rb - Fortran95 Parser
-#
-#== Overview
-#
-#"parse_f95.rb" parses Fortran95 files with suffixes "f90", "F90", "f95"
-#and "F95". Fortran95 files are expected to be conformed to Fortran95
-#standards.
-#
-#== Rules
-#
-#Fundamental rules are same as that of the Ruby parser.
-#But comment markers are '!' not '#'.
-#
-#=== Correspondence between RDoc documentation and Fortran95 programs
-#
-#"parse_f95.rb" parses main programs, modules, subroutines, functions,
-#derived-types, public variables, public constants,
-#defined operators and defined assignments.
-#These components are described in items of RDoc documentation, as follows.
-#
-#Files :: Files (same as Ruby)
-#Classes :: Modules
-#Methods :: Subroutines, functions, variables, constants, derived-types, defined operators, defined assignments
-#Required files :: Files in which imported modules, external subroutines and external functions are defined.
-#Included Modules :: List of imported modules
-#Attributes :: List of derived-types, List of imported modules all of whose components are published again
-#
-#Components listed in 'Methods' (subroutines, functions, ...)
-#defined in modules are described in the item of 'Classes'.
-#On the other hand, components defined in main programs or
-#as external procedures are described in the item of 'Files'.
-#
-#=== Components parsed by default
-#
-#By default, documentation on public components (subroutines, functions, 
-#variables, constants, derived-types, defined operators, 
-#defined assignments) are generated. 
-#With "--all" option, documentation on all components
-#are generated (almost same as the Ruby parser).
-#
-#=== Information parsed automatically
-#
-#The following information is automatically parsed.
-#
-#* Types of arguments
-#* Types of variables and constants
-#* Types of variables in the derived types, and initial values
-#* NAMELISTs and types of variables in them, and initial values
-#
-#Aliases by interface statement are described in the item of 'Methods'.
-#
-#Components which are imported from other modules and published again 
-#are described in the item of 'Methods'.
-#
-#=== Format of comment blocks
-#
-#Comment blocks should be written as follows.
-#Comment blocks are considered to be ended when the line without '!'
-#appears.
-#The indentation is not necessary.
-#
-#     ! (Top of file)
-#     !
-#     ! Comment blocks for the files.
-#     !
-#     !--
-#     ! The comment described in the part enclosed by
-#     ! "!--" and "!++" is ignored.
-#     !++
-#     !
-#     module hogehoge
-#       !
-#       ! Comment blocks for the modules (or the programs).
-#       !
-#
-#       private
-#
-#       logical            :: a     ! a private variable
-#       real, public       :: b     ! a public variable
-#       integer, parameter :: c = 0 ! a public constant
-#
-#       public :: c
-#       public :: MULTI_ARRAY
-#       public :: hoge, foo
-#
-#       type MULTI_ARRAY
-#         !
-#         ! Comment blocks for the derived-types.
-#         !
-#         real, pointer :: var(:) =>null() ! Comments block for the variables.
-#         integer       :: num = 0
-#       end type MULTI_ARRAY
-#
-#     contains
-#
-#       subroutine hoge( in,   &   ! Comment blocks between continuation lines are ignored.
-#           &            out )
-#         !
-#         ! Comment blocks for the subroutines or functions
-#         !
-#         character(*),intent(in):: in ! Comment blocks for the arguments.
-#         character(*),intent(out),allocatable,target  :: in
-#                                      ! Comment blocks can be
-#                                      ! written under Fortran statements.
-#
-#         character(32) :: file ! This comment parsed as a variable in below NAMELIST.
-#         integer       :: id
-#
-#         namelist /varinfo_nml/ file, id
-#                 !
-#                 ! Comment blocks for the NAMELISTs.
-#                 ! Information about variables are described above.
-#                 !
-#
-#       ....
-#
-#       end subroutine hoge
-#
-#       integer function foo( in )
-#         !
-#         ! This part is considered as comment block.
-#
-#         ! Comment blocks under blank lines are ignored.
-#         !
-#         integer, intent(in):: inA ! This part is considered as comment block.
-#
-#                                   ! This part is ignored.
-#
-#       end function foo
-#
-#       subroutine hide( in,   &
-#         &              out )      !:nodoc:
-#         !
-#         ! If "!:nodoc:" is described at end-of-line in subroutine
-#         ! statement as above, the subroutine is ignored.
-#         ! This assignment can be used to modules, subroutines,
-#         ! functions, variables, constants, derived-types,
-#         ! defined operators, defined assignments,
-#         ! list of imported modules ("use" statement).
-#         !
-#
-#       ....
-#
-#       end subroutine hide
-#
-#     end module hogehoge
-#
-
-
-require "rdoc/code_objects"
-
-module RDoc
-
-  class Token
-
-    NO_TEXT = "??".freeze
-
-    def initialize(line_no, char_no)
-      @line_no = line_no
-      @char_no = char_no
-      @text    = NO_TEXT
-    end
-    # Because we're used in contexts that expect to return a token,
-    # we set the text string and then return ourselves
-    def set_text(text)
-      @text = text
-      self
-    end
-
-    attr_reader :line_no, :char_no, :text
-
-  end
-
-  # See rdoc/parsers/parse_f95.rb
-
-  class Fortran95parser
-
-    extend ParserFactory
-    parse_files_matching(/\.((f|F)9(0|5)|F)$/)
-
-    @@external_aliases = []
-    @@public_methods   = []
-
-    # "false":: Comments are below source code
-    # "true" :: Comments are upper source code
-    COMMENTS_ARE_UPPER  = false
-
-    # Internal alias message
-    INTERNAL_ALIAS_MES = "Alias for"
-
-    # External alias message
-    EXTERNAL_ALIAS_MES = "The entity is"
-
-    # prepare to parse a Fortran 95 file
-    def initialize(top_level, file_name, body, options, stats)
-      @body = body
-      @stats = stats
-      @file_name  = file_name
-      @options = options
-      @top_level = top_level
-      @progress = $stderr unless options.quiet
-    end
-
-    # devine code constructs
-    def scan
-
-      # remove private comment
-      remaining_code = remove_private_comments(@body)
-
-      # continuation lines are united to one line
-      remaining_code = united_to_one_line(remaining_code)
-
-      # semicolons are replaced to line feed
-      remaining_code = semicolon_to_linefeed(remaining_code)
-
-      # collect comment for file entity
-      whole_comment, remaining_code = collect_first_comment(remaining_code)
-      @top_level.comment = whole_comment
-
-      # String "remaining_code" is converted to Array "remaining_lines"
-      remaining_lines = remaining_code.split("\n")
-
-      # "module" or "program" parts are parsed (new)
-      #
-      level_depth = 0
-      block_searching_flag = nil
-      block_searching_lines = []
-      pre_comment = []
-      module_program_trailing = ""
-      module_program_name = ""
-      other_block_level_depth = 0
-      other_block_searching_flag = nil
-      remaining_lines.collect!{|line|
-        if !block_searching_flag && !other_block_searching_flag
-          if line =~ /^\s*?module\s+(\w+)\s*?(!.*?)?$/i
-            block_searching_flag = :module
-            block_searching_lines << line
-            module_program_name = $1
-            module_program_trailing = find_comments($2)
-            next false
-          elsif line =~ /^\s*?program\s+(\w+)\s*?(!.*?)?$/i ||
-                 line =~ /^\s*?\w/ && !block_start?(line)
-            block_searching_flag = :program
-            block_searching_lines << line
-            module_program_name = $1 || ""
-            module_program_trailing = find_comments($2)
-            next false
-
-          elsif block_start?(line)
-            other_block_searching_flag = true
-            next line
-
-          elsif line =~ /^\s*?!\s?(.*)/
-            pre_comment << line
-            next line
-          else
-            pre_comment = []
-            next line
-          end
-        elsif other_block_searching_flag
-          other_block_level_depth += 1 if block_start?(line)
-          other_block_level_depth -= 1 if block_end?(line)
-          if other_block_level_depth < 0
-            other_block_level_depth = 0
-            other_block_searching_flag = nil
-          end
-          next line
-        end
-
-        block_searching_lines << line
-        level_depth += 1 if block_start?(line)
-        level_depth -= 1 if block_end?(line)
-        if level_depth >= 0
-          next false
-        end
-
-        # "module_program_code" is formatted.
-        # ":nodoc:" flag is checked.
-        #
-        module_program_code = block_searching_lines.join("\n")
-        module_program_code = remove_empty_head_lines(module_program_code)
-        if module_program_trailing =~ /^:nodoc:/
-          # next loop to search next block
-          level_depth = 0
-          block_searching_flag = false
-          block_searching_lines = []
-          pre_comment = []
-          next false
-        end
-
-        # NormalClass is created, and added to @top_level
-        #
-        if block_searching_flag == :module
-          module_name = module_program_name
-          module_code = module_program_code
-          module_trailing = module_program_trailing
-          progress "m"
-          @stats.num_modules += 1
-          f9x_module = @top_level.add_module NormalClass, module_name
-          f9x_module.record_location @top_level
-
-          f9x_comment = COMMENTS_ARE_UPPER ? 
-            find_comments(pre_comment.join("\n"))  + "\n" + module_trailing :
-              module_trailing + "\n" + find_comments(module_code.sub(/^.*$\n/i, ''))
-          f9x_module.comment = f9x_comment
-          parse_program_or_module(f9x_module, module_code)
-
-          TopLevel.all_files.each do |name, toplevel|
-            if toplevel.include_includes?(module_name, @options.ignore_case)
-              if !toplevel.include_requires?(@file_name, @options.ignore_case)
-                toplevel.add_require(Require.new(@file_name, ""))
-              end
-            end
-            toplevel.each_classmodule{|m|
-              if m.include_includes?(module_name, @options.ignore_case)
-                if !m.include_requires?(@file_name, @options.ignore_case)
-                  m.add_require(Require.new(@file_name, ""))
-                end
-              end
-            }
-          end
-        elsif block_searching_flag == :program
-          program_name = module_program_name
-          program_code = module_program_code
-          program_trailing = module_program_trailing
-          progress "p"
-          program_comment = COMMENTS_ARE_UPPER ? 
-            find_comments(pre_comment.join("\n")) + "\n" + program_trailing : 
-              program_trailing + "\n" + find_comments(program_code.sub(/^.*$\n/i, ''))
-          program_comment = "\n\n= <i>Program</i> <tt>#{program_name}</tt>\n\n" \
-                            + program_comment
-          @top_level.comment << program_comment
-          parse_program_or_module(@top_level, program_code, :private)
-        end
-
-        # next loop to search next block
-        level_depth = 0
-        block_searching_flag = false
-        block_searching_lines = []
-        pre_comment = []
-        next false
-      }
-
-      remaining_lines.delete_if{ |line|
-        line == false
-      }
-
-      # External subprograms and functions are parsed
-      #
-      parse_program_or_module(@top_level, remaining_lines.join("\n"),
-                              :public, true)
-
-      @top_level
-    end  # End of scan
-
-    private
-
-    def parse_program_or_module(container, code,
-                                visibility=:public, external=nil)
-      return unless container
-      return unless code
-      remaining_lines = code.split("\n")
-      remaining_code = "#{code}"
-
-      #
-      # Parse variables before "contains" in module
-      #
-      level_depth = 0
-      before_contains_lines = []
-      before_contains_code = nil
-      before_contains_flag = nil
-      remaining_lines.each{ |line|
-        if !before_contains_flag
-          if line =~ /^\s*?module\s+\w+\s*?(!.*?)?$/i
-            before_contains_flag = true
-          end
-        else
-          break if line =~ /^\s*?contains\s*?(!.*?)?$/i
-          level_depth += 1 if block_start?(line)
-          level_depth -= 1 if block_end?(line)
-          break if level_depth < 0
-          before_contains_lines << line
-        end
-      }
-      before_contains_code = before_contains_lines.join("\n")
-      if before_contains_code
-        before_contains_code.gsub!(/^\s*?interface\s+.*?\s+end\s+interface.*?$/im, "")
-        before_contains_code.gsub!(/^\s*?type[\s\,]+.*?\s+end\s+type.*?$/im, "")
-      end
-
-      #
-      # Parse global "use"
-      #
-      use_check_code = "#{before_contains_code}"
-      cascaded_modules_list = []
-      while use_check_code =~ /^\s*?use\s+(\w+)(.*?)(!.*?)?$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_list = $2 || ""
-        used_trailing = $3 || ""
-        next if used_trailing =~ /!:nodoc:/
-        if !container.include_includes?(used_mod_name, @options.ignore_case)
-          progress "."
-          container.add_include Include.new(used_mod_name, "")
-        end
-        if ! (used_list =~ /\,\s*?only\s*?:/i )
-          cascaded_modules_list << "\#" + used_mod_name
-        end
-      end
-
-      #
-      # Parse public and private, and store information.
-      # This information is used when "add_method" and
-      # "set_visibility_for" are called.
-      #
-      visibility_default, visibility_info = 
-                parse_visibility(remaining_lines.join("\n"), visibility, container)
-      @@public_methods.concat visibility_info
-      if visibility_default == :public
-        if !cascaded_modules_list.empty?
-          cascaded_modules = 
-            Attr.new("Cascaded Modules",
-                     "Imported modules all of whose components are published again",
-                     "",
-                     cascaded_modules_list.join(", "))
-          container.add_attribute(cascaded_modules)
-        end
-      end
-
-      #
-      # Check rename elements
-      #
-      use_check_code = "#{before_contains_code}"
-      while use_check_code =~ /^\s*?use\s+(\w+)\s*?\,(.+)$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_elements = $2.sub(/\s*?only\s*?:\s*?/i, '')
-        used_elements.split(",").each{ |used|
-          if /\s*?(\w+)\s*?=>\s*?(\w+)\s*?/ =~ used
-            local = $1
-            org = $2
-            @@public_methods.collect!{ |pub_meth|
-              if local == pub_meth["name"] ||
-                  local.upcase == pub_meth["name"].upcase &&
-                  @options.ignore_case
-                pub_meth["name"] = org
-                pub_meth["local_name"] = local
-              end
-              pub_meth
-            }
-          end
-        }
-      end
-
-      #
-      # Parse private "use"
-      #
-      use_check_code = remaining_lines.join("\n")
-      while use_check_code =~ /^\s*?use\s+(\w+)(.*?)(!.*?)?$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_trailing = $3 || ""
-        next if used_trailing =~ /!:nodoc:/
-        if !container.include_includes?(used_mod_name, @options.ignore_case)
-          progress "."
-          container.add_include Include.new(used_mod_name, "")
-        end
-      end
-
-      container.each_includes{ |inc|
-        TopLevel.all_files.each do |name, toplevel|
-          indicated_mod = toplevel.find_symbol(inc.name,
-                                               nil, @options.ignore_case)
-          if indicated_mod
-            indicated_name = indicated_mod.parent.file_relative_name
-            if !container.include_requires?(indicated_name, @options.ignore_case)
-              container.add_require(Require.new(indicated_name, ""))
-            end
-            break
-          end
-        end
-      }
-
-      #
-      # Parse derived-types definitions
-      #
-      derived_types_comment = ""
-      remaining_code = remaining_lines.join("\n")
-      while remaining_code =~ /^\s*?
-                                    type[\s\,]+(public|private)?\s*?(::)?\s*?
-                                    (\w+)\s*?(!.*?)?$
-                                    (.*?)
-                                    ^\s*?end\s+type.*?$
-                              /imx
-        remaining_code = $~.pre_match
-        remaining_code << $~.post_match
-        typename = $3.chomp.strip
-        type_elements = $5 || ""
-        type_code = remove_empty_head_lines($&)
-        type_trailing = find_comments($4)
-        next if type_trailing =~ /^:nodoc:/
-        type_visibility = $1
-        type_comment = COMMENTS_ARE_UPPER ? 
-          find_comments($~.pre_match) + "\n" + type_trailing :
-            type_trailing + "\n" + find_comments(type_code.sub(/^.*$\n/i, ''))
-        type_element_visibility_public = true
-        type_code.split("\n").each{ |line|
-          if /^\s*?private\s*?$/ =~ line
-            type_element_visibility_public = nil
-            break
-          end
-        } if type_code
-
-        args_comment = ""
-        type_args_info = nil
-
-        if @options.show_all
-          args_comment = find_arguments(nil, type_code, true)
-        else
-          type_public_args_list = []
-          type_args_info = definition_info(type_code)
-          type_args_info.each{ |arg|
-            arg_is_public = type_element_visibility_public
-            arg_is_public = true if arg.include_attr?("public")
-            arg_is_public = nil if arg.include_attr?("private")
-            type_public_args_list << arg.varname if arg_is_public
-          }
-          args_comment = find_arguments(type_public_args_list, type_code)
-        end
-
-        type = AnyMethod.new("type #{typename}", typename)
-        type.singleton = false
-        type.params = ""
-        type.comment = "<b><em> Derived Type </em></b> :: <tt></tt>\n"
-        type.comment << args_comment if args_comment
-        type.comment << type_comment if type_comment
-        progress "t"
-        @stats.num_methods += 1
-        container.add_method type
-
-        set_visibility(container, typename, visibility_default, @@public_methods)
-
-        if type_visibility
-          type_visibility.gsub!(/\s/,'')
-          type_visibility.gsub!(/\,/,'')
-          type_visibility.gsub!(/:/,'')
-          type_visibility.downcase!
-          if type_visibility == "public"
-            container.set_visibility_for([typename], :public)
-          elsif type_visibility == "private"
-            container.set_visibility_for([typename], :private)
-          end
-        end
-
-        check_public_methods(type, container.name)
-
-        if @options.show_all
-          derived_types_comment << ", " unless derived_types_comment.empty?
-          derived_types_comment << typename
-        else
-          if type.visibility == :public
-          derived_types_comment << ", " unless derived_types_comment.empty?
-          derived_types_comment << typename
-          end
-        end
-
-      end
-
-      if !derived_types_comment.empty?
-        derived_types_table = 
-          Attr.new("Derived Types", "Derived_Types", "", 
-                   derived_types_comment)
-        container.add_attribute(derived_types_table)
-      end
-
-      #
-      # move interface scope
-      #
-      interface_code = ""
-      while remaining_code =~ /^\s*?
-                                   interface(
-                                              \s+\w+                      |
-                                              \s+operator\s*?\(.*?\)       |
-                                              \s+assignment\s*?\(\s*?=\s*?\)
-                                            )?\s*?$
-                                   (.*?)
-                                   ^\s*?end\s+interface.*?$
-                              /imx
-        interface_code << remove_empty_head_lines($&) + "\n"
-        remaining_code = $~.pre_match
-        remaining_code << $~.post_match
-      end
-
-      #
-      # Parse global constants or variables in modules
-      #
-      const_var_defs = definition_info(before_contains_code)
-      const_var_defs.each{|defitem|
-        next if defitem.nodoc
-        const_or_var_type = "Variable"
-        const_or_var_progress = "v"
-        if defitem.include_attr?("parameter")
-          const_or_var_type = "Constant"
-          const_or_var_progress = "c"
-        end
-        const_or_var = AnyMethod.new(const_or_var_type, defitem.varname)
-        const_or_var.singleton = false
-        const_or_var.params = ""
-        self_comment = find_arguments([defitem.varname], before_contains_code)
-        const_or_var.comment = "<b><em>" + const_or_var_type + "</em></b> :: <tt></tt>\n"
-        const_or_var.comment << self_comment if self_comment
-        progress const_or_var_progress
-        @stats.num_methods += 1
-        container.add_method const_or_var
-
-        set_visibility(container, defitem.varname, visibility_default, @@public_methods)
-
-        if defitem.include_attr?("public")
-          container.set_visibility_for([defitem.varname], :public)
-        elsif defitem.include_attr?("private")
-          container.set_visibility_for([defitem.varname], :private)
-        end
-
-        check_public_methods(const_or_var, container.name)
-
-      } if const_var_defs
-
-      remaining_lines = remaining_code.split("\n")
-
-      # "subroutine" or "function" parts are parsed (new)
-      #
-      level_depth = 0
-      block_searching_flag = nil
-      block_searching_lines = []
-      pre_comment = []
-      procedure_trailing = ""
-      procedure_name = ""
-      procedure_params = ""
-      procedure_prefix = ""
-      procedure_result_arg = ""
-      procedure_type = ""
-      contains_lines = []
-      contains_flag = nil
-      remaining_lines.collect!{|line|
-        if !block_searching_flag
-          # subroutine
-          if line =~ /^\s*?
-                           (recursive|pure|elemental)?\s*?
-                           subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                     /ix
-            block_searching_flag = :subroutine
-            block_searching_lines << line
-
-            procedure_name = $2.chomp.strip
-            procedure_params = $3 || ""
-            procedure_prefix = $1 || ""
-            procedure_trailing = $4 || "!"
-            next false
-
-          # function
-          elsif line =~ /^\s*?
-                         (recursive|pure|elemental)?\s*?
-                         (
-                             character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | type\s*?\([\w\s]+?\)\s+
-                           | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | double\s+precision\s+
-                           | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                         )?
-                         function\s+(\w+)\s*?
-                         (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                        /ix
-            block_searching_flag = :function
-            block_searching_lines << line
-
-            procedure_prefix = $1 || ""
-            procedure_type = $2 ? $2.chomp.strip : nil
-            procedure_name = $8.chomp.strip
-            procedure_params = $9 || ""
-            procedure_result_arg = $11 ? $11.chomp.strip : procedure_name
-            procedure_trailing = $12 || "!"
-            next false
-          elsif line =~ /^\s*?!\s?(.*)/
-            pre_comment << line
-            next line
-          else
-            pre_comment = []
-            next line
-          end
-        end
-        contains_flag = true if line =~ /^\s*?contains\s*?(!.*?)?$/
-        block_searching_lines << line
-        contains_lines << line if contains_flag
-
-        level_depth += 1 if block_start?(line)
-        level_depth -= 1 if block_end?(line)
-        if level_depth >= 0
-          next false
-        end
-
-        # "procedure_code" is formatted.
-        # ":nodoc:" flag is checked.
-        #
-        procedure_code = block_searching_lines.join("\n")
-        procedure_code = remove_empty_head_lines(procedure_code)
-        if procedure_trailing =~ /^!:nodoc:/
-          # next loop to search next block
-          level_depth = 0
-          block_searching_flag = nil
-          block_searching_lines = []
-          pre_comment = []
-          procedure_trailing = ""
-          procedure_name = ""
-          procedure_params = ""
-          procedure_prefix = ""
-          procedure_result_arg = ""
-          procedure_type = ""
-          contains_lines = []
-          contains_flag = nil
-          next false
-        end
-
-        # AnyMethod is created, and added to container
-        #
-        subroutine_function = nil
-        if block_searching_flag == :subroutine
-          subroutine_prefix   = procedure_prefix
-          subroutine_name     = procedure_name
-          subroutine_params   = procedure_params
-          subroutine_trailing = procedure_trailing
-          subroutine_code     = procedure_code
-
-          subroutine_comment = COMMENTS_ARE_UPPER ? 
-            pre_comment.join("\n") + "\n" + subroutine_trailing : 
-              subroutine_trailing + "\n" + subroutine_code.sub(/^.*$\n/i, '')
-          subroutine = AnyMethod.new("subroutine", subroutine_name)
-          parse_subprogram(subroutine, subroutine_params,
-                           subroutine_comment, subroutine_code,
-                           before_contains_code, nil, subroutine_prefix)
-          progress "s"
-          @stats.num_methods += 1
-          container.add_method subroutine
-          subroutine_function = subroutine
-
-        elsif block_searching_flag == :function
-          function_prefix     = procedure_prefix
-          function_type       = procedure_type
-          function_name       = procedure_name
-          function_params_org = procedure_params
-          function_result_arg = procedure_result_arg
-          function_trailing   = procedure_trailing
-          function_code_org   = procedure_code
-
-          function_comment = COMMENTS_ARE_UPPER ?
-            pre_comment.join("\n") + "\n" + function_trailing :
-              function_trailing + "\n " + function_code_org.sub(/^.*$\n/i, '')
-
-          function_code = "#{function_code_org}"
-          if function_type
-            function_code << "\n" + function_type + " :: " + function_result_arg
-          end
-
-          function_params =
-            function_params_org.sub(/^\(/, "\(#{function_result_arg}, ")
-
-          function = AnyMethod.new("function", function_name)
-          parse_subprogram(function, function_params,
-                           function_comment, function_code,
-                           before_contains_code, true, function_prefix)
-
-          # Specific modification due to function
-          function.params.sub!(/\(\s*?#{function_result_arg}\s*?,\s*?/, "\( ")
-          function.params << " result(" + function_result_arg + ")"
-          function.start_collecting_tokens
-          function.add_token Token.new(1,1).set_text(function_code_org)
-
-          progress "f"
-          @stats.num_methods += 1
-          container.add_method function
-          subroutine_function = function
-
-        end
-
-        # The visibility of procedure is specified
-        #
-        set_visibility(container, procedure_name, 
-                       visibility_default, @@public_methods)
-
-        # The alias for this procedure from external modules
-        #
-        check_external_aliases(procedure_name,
-                               subroutine_function.params,
-                               subroutine_function.comment, subroutine_function) if external
-        check_public_methods(subroutine_function, container.name)
-
-
-        # contains_lines are parsed as private procedures
-        if contains_flag
-          parse_program_or_module(container,
-                                  contains_lines.join("\n"), :private)
-        end
-
-        # next loop to search next block
-        level_depth = 0
-        block_searching_flag = nil
-        block_searching_lines = []
-        pre_comment = []
-        procedure_trailing = ""
-        procedure_name = ""
-        procedure_params = ""
-        procedure_prefix = ""
-        procedure_result_arg = ""
-        contains_lines = []
-        contains_flag = nil
-        next false
-      } # End of remaining_lines.collect!{|line|
-
-      # Array remains_lines is converted to String remains_code again
-      #
-      remaining_code = remaining_lines.join("\n")
-
-      #
-      # Parse interface
-      #
-      interface_scope = false
-      generic_name = ""
-      interface_code.split("\n").each{ |line|
-        if /^\s*?
-                 interface(
-                            \s+\w+|
-                            \s+operator\s*?\(.*?\)|
-                            \s+assignment\s*?\(\s*?=\s*?\)
-                          )?
-                 \s*?(!.*?)?$
-           /ix =~ line
-          generic_name = $1 ? $1.strip.chomp : nil
-          interface_trailing = $2 || "!"
-          interface_scope = true
-          interface_scope = false if interface_trailing =~ /!:nodoc:/
-#          if generic_name =~ /operator\s*?\((.*?)\)/i
-#            operator_name = $1
-#            if operator_name && !operator_name.empty?
-#              generic_name = "#{operator_name}"
-#            end
-#          end
-#          if generic_name =~ /assignment\s*?\((.*?)\)/i
-#            assignment_name = $1
-#            if assignment_name && !assignment_name.empty?
-#              generic_name = "#{assignment_name}"
-#            end
-#          end
-        end
-        if /^\s*?end\s+interface/i =~ line
-          interface_scope = false
-          generic_name = nil
-        end
-        # internal alias
-        if interface_scope && /^\s*?module\s+procedure\s+(.*?)(!.*?)?$/i =~ line
-          procedures = $1.strip.chomp
-          procedures_trailing = $2 || "!"
-          next if procedures_trailing =~ /!:nodoc:/
-          procedures.split(",").each{ |proc|
-            proc.strip!
-            proc.chomp!
-            next if generic_name == proc || !generic_name
-            old_meth = container.find_symbol(proc, nil, @options.ignore_case)
-            next if !old_meth
-            nolink = old_meth.visibility == :private ? true : nil
-            nolink = nil if @options.show_all
-            new_meth = 
-               initialize_external_method(generic_name, proc, 
-                                          old_meth.params, nil, 
-                                          old_meth.comment, 
-                                          old_meth.clone.token_stream[0].text, 
-                                          true, nolink)
-            new_meth.singleton = old_meth.singleton
-
-            progress "i"
-            @stats.num_methods += 1
-            container.add_method new_meth
-
-            set_visibility(container, generic_name, visibility_default, @@public_methods)
-
-            check_public_methods(new_meth, container.name)
-
-          }
-        end
-
-        # external aliases
-        if interface_scope
-          # subroutine
-          proc = nil
-          params = nil
-          procedures_trailing = nil
-          if line =~ /^\s*?
-                           (recursive|pure|elemental)?\s*?
-                           subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                     /ix
-            proc = $2.chomp.strip
-            generic_name = proc unless generic_name
-            params = $3 || ""
-            procedures_trailing = $4 || "!"
-
-          # function
-          elsif line =~ /^\s*?
-                         (recursive|pure|elemental)?\s*?
-                         (
-                             character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | type\s*?\([\w\s]+?\)\s+
-                           | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | double\s+precision\s+
-                           | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                         )?
-                         function\s+(\w+)\s*?
-                         (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                        /ix
-            proc = $8.chomp.strip
-            generic_name = proc unless generic_name
-            params = $9 || ""
-            procedures_trailing = $12 || "!"
-          else
-            next
-          end
-          next if procedures_trailing =~ /!:nodoc:/
-          indicated_method = nil
-          indicated_file   = nil
-          TopLevel.all_files.each do |name, toplevel|
-            indicated_method = toplevel.find_local_symbol(proc, @options.ignore_case)
-            indicated_file = name
-            break if indicated_method
-          end
-
-          if indicated_method
-            external_method = 
-              initialize_external_method(generic_name, proc, 
-                                         indicated_method.params, 
-                                         indicated_file, 
-                                         indicated_method.comment)
-
-            progress "e"
-            @stats.num_methods += 1
-            container.add_method external_method
-            set_visibility(container, generic_name, visibility_default, @@public_methods)
-            if !container.include_requires?(indicated_file, @options.ignore_case)
-              container.add_require(Require.new(indicated_file, ""))
-            end
-            check_public_methods(external_method, container.name)
-
-          else
-            @@external_aliases << {
-              "new_name"  => generic_name,
-              "old_name"  => proc,
-              "file_or_module" => container,
-              "visibility" => find_visibility(container, generic_name, @@public_methods) || visibility_default
-            }
-          end
-        end
-
-      } if interface_code # End of interface_code.split("\n").each ...
-
-      #
-      # Already imported methods are removed from @@public_methods.
-      # Remainders are assumed to be imported from other modules.
-      #
-      @@public_methods.delete_if{ |method| method["entity_is_discovered"]}
-
-      @@public_methods.each{ |pub_meth|
-        next unless pub_meth["file_or_module"].name == container.name
-        pub_meth["used_modules"].each{ |used_mod|
-          TopLevel.all_classes_and_modules.each{ |modules|
-            if modules.name == used_mod ||
-                modules.name.upcase == used_mod.upcase &&
-                @options.ignore_case
-              modules.method_list.each{ |meth|
-                if meth.name == pub_meth["name"] ||
-                    meth.name.upcase == pub_meth["name"].upcase &&
-                    @options.ignore_case
-                  new_meth = initialize_public_method(meth,
-                                                      modules.name)
-                  if pub_meth["local_name"]
-                    new_meth.name = pub_meth["local_name"]
-                  end
-                  progress "e"
-                  @stats.num_methods += 1
-                  container.add_method new_meth
-                end
-              }
-            end
-          }
-        }
-      }
-
-      container
-    end  # End of parse_program_or_module
-
-    #
-    # Parse arguments, comment, code of subroutine and function.
-    # Return AnyMethod object.
-    #
-    def parse_subprogram(subprogram, params, comment, code, 
-                         before_contains=nil, function=nil, prefix=nil)
-      subprogram.singleton = false
-      prefix = "" if !prefix
-      arguments = params.sub(/\(/, "").sub(/\)/, "").split(",") if params
-      args_comment, params_opt = 
-        find_arguments(arguments, code.sub(/^s*?contains\s*?(!.*?)?$.*/im, ""),
-                       nil, nil, true)
-      params_opt = "( " + params_opt + " ) " if params_opt
-      subprogram.params = params_opt || ""
-      namelist_comment = find_namelists(code, before_contains)
-
-      block_comment = find_comments comment
-      if function
-        subprogram.comment = "<b><em> Function </em></b> :: <em>#{prefix}</em>\n"
-      else
-        subprogram.comment = "<b><em> Subroutine </em></b> :: <em>#{prefix}</em>\n"
-      end
-      subprogram.comment << args_comment if args_comment
-      subprogram.comment << block_comment if block_comment
-      subprogram.comment << namelist_comment if namelist_comment
-
-      # For output source code
-      subprogram.start_collecting_tokens
-      subprogram.add_token Token.new(1,1).set_text(code)
-
-      subprogram
-    end
-
-    #
-    # Collect comment for file entity
-    #
-    def collect_first_comment(body)
-      comment = ""
-      not_comment = ""
-      comment_start = false
-      comment_end   = false
-      body.split("\n").each{ |line|
-        if comment_end
-          not_comment << line
-          not_comment << "\n"
-        elsif /^\s*?!\s?(.*)$/i =~ line
-          comment_start = true
-          comment << $1
-          comment << "\n"
-        elsif /^\s*?$/i =~ line
-          comment_end = true if comment_start && COMMENTS_ARE_UPPER
-        else
-          comment_end = true
-          not_comment << line
-          not_comment << "\n"
-        end
-      }
-      return comment, not_comment
-    end
-
-
-    # Return comments of definitions of arguments
-    #
-    # If "all" argument is true, information of all arguments are returned.
-    # If "modified_params" is true, list of arguments are decorated,
-    # for exameple, optional arguments are parenthetic as "[arg]".
-    #
-    def find_arguments(args, text, all=nil, indent=nil, modified_params=nil)
-      return unless args || all
-      indent = "" unless indent
-      args = ["all"] if all
-      params = "" if modified_params
-      comma = ""
-      return unless text
-      args_rdocforms = "\n"
-      remaining_lines = "#{text}"
-      definitions = definition_info(remaining_lines)
-      args.each{ |arg|
-        arg.strip!
-        arg.chomp!
-        definitions.each { |defitem|
-          if arg == defitem.varname.strip.chomp || all
-            args_rdocforms << <<-"EOF"
-
-#{indent}<tt><b>#{defitem.varname.chomp.strip}#{defitem.arraysuffix}</b> #{defitem.inivalue}</tt> :: 
-#{indent}   <tt>#{defitem.types.chomp.strip}</tt>
-EOF
-            if !defitem.comment.chomp.strip.empty?
-              comment = ""
-              defitem.comment.split("\n").each{ |line|
-                comment << "       " + line + "\n"
-              }
-              args_rdocforms << <<-"EOF"
-
-#{indent}   <tt></tt> :: 
-#{indent}       <tt></tt>
-#{indent}       #{comment.chomp.strip}
-EOF
-            end
-
-            if modified_params
-              if defitem.include_attr?("optional")
-                params << "#{comma}[#{arg}]"
-              else
-                params << "#{comma}#{arg}"
-              end
-              comma = ", "
-            end
-          end
-        }
-      }
-      if modified_params
-        return args_rdocforms, params
-      else
-        return args_rdocforms
-      end
-    end
-
-    # Return comments of definitions of namelists
-    #
-    def find_namelists(text, before_contains=nil)
-      return nil if !text
-      result = ""
-      lines = "#{text}"
-      before_contains = "" if !before_contains
-      while lines =~ /^\s*?namelist\s+\/\s*?(\w+)\s*?\/([\s\w\,]+)$/i
-        lines = $~.post_match
-        nml_comment = COMMENTS_ARE_UPPER ? 
-            find_comments($~.pre_match) : find_comments($~.post_match)
-        nml_name = $1
-        nml_args = $2.split(",")
-        result << "\n\n=== NAMELIST <tt><b>" + nml_name + "</tt></b>\n\n"
-        result << nml_comment + "\n" if nml_comment
-        if lines.split("\n")[0] =~ /^\//i
-          lines = "namelist " + lines
-        end
-        result << find_arguments(nml_args, "#{text}" + "\n" + before_contains)
-      end
-      return result
-    end
-
-    #
-    # Comments just after module or subprogram, or arguments are
-    # returnd. If "COMMENTS_ARE_UPPER" is true, comments just before
-    # modules or subprograms are returnd
-    #
-    def find_comments text
-      return "" unless text
-      lines = text.split("\n")
-      lines.reverse! if COMMENTS_ARE_UPPER
-      comment_block = Array.new
-      lines.each do |line|
-        break if line =~ /^\s*?\w/ || line =~ /^\s*?$/
-        if COMMENTS_ARE_UPPER
-          comment_block.unshift line.sub(/^\s*?!\s?/,"")
-        else
-          comment_block.push line.sub(/^\s*?!\s?/,"")
-        end
-      end
-      nice_lines = comment_block.join("\n").split "\n\s*?\n"
-      nice_lines[0] ||= ""
-      nice_lines.shift
-    end
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-        @progress.flush
-      end
-    end
-
-    #
-    # Create method for internal alias
-    #
-    def initialize_public_method(method, parent)
-      return if !method || !parent
-
-      new_meth = AnyMethod.new("External Alias for module", method.name)
-      new_meth.singleton    = method.singleton
-      new_meth.params       = method.params.clone
-      new_meth.comment      = remove_trailing_alias(method.comment.clone)
-      new_meth.comment      << "\n\n#{EXTERNAL_ALIAS_MES} #{parent.strip.chomp}\##{method.name}"
-
-      return new_meth
-    end
-
-    #
-    # Create method for external alias
-    #
-    # If argument "internal" is true, file is ignored.
-    #
-    def initialize_external_method(new, old, params, file, comment, token=nil,
-                                   internal=nil, nolink=nil)
-      return nil unless new || old
-
-      if internal
-        external_alias_header = "#{INTERNAL_ALIAS_MES} "
-        external_alias_text   = external_alias_header + old 
-      elsif file
-        external_alias_header = "#{EXTERNAL_ALIAS_MES} "
-        external_alias_text   = external_alias_header + file + "#" + old
-      else
-        return nil
-      end
-      external_meth = AnyMethod.new(external_alias_text, new)
-      external_meth.singleton    = false
-      external_meth.params       = params
-      external_comment = remove_trailing_alias(comment) + "\n\n" if comment
-      external_meth.comment = external_comment || ""
-      if nolink && token
-        external_meth.start_collecting_tokens
-        external_meth.add_token Token.new(1,1).set_text(token)
-      else
-        external_meth.comment << external_alias_text
-      end
-
-      return external_meth
-    end
-
-
-
-    #
-    # Parse visibility
-    #
-    def parse_visibility(code, default, container)
-      result = []
-      visibility_default = default || :public
-
-      used_modules = []
-      container.includes.each{|i| used_modules << i.name} if container
-
-      remaining_code = code.gsub(/^\s*?type[\s\,]+.*?\s+end\s+type.*?$/im, "")
-      remaining_code.split("\n").each{ |line|
-        if /^\s*?private\s*?$/ =~ line
-          visibility_default = :private
-          break
-        end
-      } if remaining_code
-
-      remaining_code.split("\n").each{ |line|
-        if /^\s*?private\s*?(::)?\s+(.*)\s*?(!.*?)?/i =~ line
-          methods = $2.sub(/!.*$/, '')
-          methods.split(",").each{ |meth|
-            meth.sub!(/!.*$/, '')
-            meth.gsub!(/:/, '')
-            result << {
-              "name" => meth.chomp.strip,
-              "visibility" => :private,
-              "used_modules" => used_modules.clone,
-              "file_or_module" => container,
-              "entity_is_discovered" => nil,
-              "local_name" => nil
-            }
-          }
-        elsif /^\s*?public\s*?(::)?\s+(.*)\s*?(!.*?)?/i =~ line
-          methods = $2.sub(/!.*$/, '')
-          methods.split(",").each{ |meth|
-            meth.sub!(/!.*$/, '')
-            meth.gsub!(/:/, '')
-            result << {
-              "name" => meth.chomp.strip,
-              "visibility" => :public,
-              "used_modules" => used_modules.clone,
-              "file_or_module" => container,
-              "entity_is_discovered" => nil,
-              "local_name" => nil
-            }
-          }
-        end
-      } if remaining_code
-
-      if container
-        result.each{ |vis_info|
-          vis_info["parent"] = container.name
-        }
-      end
-
-      return visibility_default, result
-    end
-
-    #
-    # Set visibility
-    #
-    # "subname" element of "visibility_info" is deleted.
-    #
-    def set_visibility(container, subname, visibility_default, visibility_info)
-      return unless container || subname || visibility_default || visibility_info
-      not_found = true
-      visibility_info.collect!{ |info|
-        if info["name"] == subname ||
-            @options.ignore_case && info["name"].upcase == subname.upcase
-          if info["file_or_module"].name == container.name
-            container.set_visibility_for([subname], info["visibility"])
-            info["entity_is_discovered"] = true
-            not_found = false
-          end
-        end
-        info
-      }
-      if not_found
-        return container.set_visibility_for([subname], visibility_default)
-      else
-        return container
-      end
-    end
-
-    #
-    # Find visibility
-    #
-    def find_visibility(container, subname, visibility_info)
-      return nil if !subname || !visibility_info
-      visibility_info.each{ |info|
-        if info["name"] == subname ||
-            @options.ignore_case && info["name"].upcase == subname.upcase
-          if info["parent"] == container.name
-            return info["visibility"]
-          end
-        end
-      }
-      return nil
-    end
-
-    #
-    # Check external aliases
-    #
-    def check_external_aliases(subname, params, comment, test=nil)
-      @@external_aliases.each{ |alias_item|
-        if subname == alias_item["old_name"] ||
-                    subname.upcase == alias_item["old_name"].upcase &&
-                            @options.ignore_case
-
-          new_meth = initialize_external_method(alias_item["new_name"], 
-                                                subname, params, @file_name, 
-                                                comment)
-          new_meth.visibility = alias_item["visibility"]
-
-          progress "e"
-          @stats.num_methods += 1
-          alias_item["file_or_module"].add_method(new_meth)
-
-          if !alias_item["file_or_module"].include_requires?(@file_name, @options.ignore_case)
-            alias_item["file_or_module"].add_require(Require.new(@file_name, ""))
-          end
-        end
-      }
-    end
-
-    #
-    # Check public_methods
-    #
-    def check_public_methods(method, parent)
-      return if !method || !parent
-      @@public_methods.each{ |alias_item|
-        parent_is_used_module = nil
-        alias_item["used_modules"].each{ |used_module|
-          if used_module == parent ||
-              used_module.upcase == parent.upcase &&
-              @options.ignore_case
-            parent_is_used_module = true
-          end
-        }
-        next if !parent_is_used_module
-
-        if method.name == alias_item["name"] ||
-            method.name.upcase == alias_item["name"].upcase &&
-            @options.ignore_case
-
-          new_meth = initialize_public_method(method, parent)
-          if alias_item["local_name"]
-            new_meth.name = alias_item["local_name"]
-          end
-
-          progress "e"
-          @stats.num_methods += 1
-          alias_item["file_or_module"].add_method new_meth
-        end
-      }
-    end
-
-    #
-    # Continuous lines are united.
-    #
-    # Comments in continuous lines are removed.
-    #
-    def united_to_one_line(f90src)
-      return "" unless f90src
-      lines = f90src.split("\n")
-      previous_continuing = false
-      now_continuing = false
-      body = ""
-      lines.each{ |line|
-        words = line.split("")
-        next if words.empty? && previous_continuing
-        commentout = false
-        brank_flag = true ; brank_char = ""
-        squote = false    ; dquote = false
-        ignore = false
-        words.collect! { |char|
-          if previous_continuing && brank_flag
-            now_continuing = true
-            ignore         = true
-            case char
-            when "!"                       ; break
-            when " " ; brank_char << char  ; next ""
-            when "&"
-              brank_flag = false
-              now_continuing = false
-              next ""
-            else 
-              brank_flag     = false
-              now_continuing = false
-              ignore         = false
-              next brank_char + char
-            end
-          end
-          ignore = false
-
-          if now_continuing
-            next ""
-          elsif !(squote) && !(dquote) && !(commentout)
-            case char
-            when "!" ; commentout = true     ; next char
-            when "\""; dquote = true         ; next char
-            when "\'"; squote = true         ; next char
-            when "&" ; now_continuing = true ; next ""
-            else next char
-            end
-          elsif commentout
-            next char
-          elsif squote
-            case char
-            when "\'"; squote = false ; next char
-            else next char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; next char
-            else next char
-            end
-          end
-        }
-        if !ignore && !previous_continuing || !brank_flag
-          if previous_continuing
-            body << words.join("")
-          else
-            body << "\n" + words.join("")
-          end
-        end
-        previous_continuing = now_continuing ? true : nil
-        now_continuing = nil
-      }
-      return body
-    end
-
-
-    #
-    # Continuous line checker
-    #
-    def continuous_line?(line)
-      continuous = false
-      if /&\s*?(!.*)?$/ =~ line
-        continuous = true
-        if comment_out?($~.pre_match)
-          continuous = false
-        end
-      end
-      return continuous
-    end
-
-    #
-    # Comment out checker
-    #
-    def comment_out?(line)
-      return nil unless line
-      commentout = false
-      squote = false ; dquote = false
-      line.split("").each { |char|
-        if !(squote) && !(dquote)
-          case char
-          when "!" ; commentout = true ; break
-          when "\""; dquote = true
-          when "\'"; squote = true
-          else next
-          end
-        elsif squote
-          case char
-          when "\'"; squote = false
-          else next
-          end
-        elsif dquote
-          case char
-          when "\""; dquote = false
-          else next
-          end
-        end
-      }
-      return commentout
-    end
-
-    #
-    # Semicolons are replaced to line feed.
-    #
-    def semicolon_to_linefeed(text)
-      return "" unless text
-      lines = text.split("\n")
-      lines.collect!{ |line|
-        words = line.split("")
-        commentout = false
-        squote = false ; dquote = false
-        words.collect! { |char|
-          if !(squote) && !(dquote) && !(commentout)
-            case char
-            when "!" ; commentout = true ; next char
-            when "\""; dquote = true     ; next char
-            when "\'"; squote = true     ; next char
-            when ";" ;                     "\n"
-            else next char
-            end
-          elsif commentout
-            next char
-          elsif squote
-            case char
-            when "\'"; squote = false ; next char
-            else next char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; next char
-            else next char
-            end
-          end
-        }
-        words.join("")
-      }
-      return lines.join("\n")
-    end
-
-    #
-    # Which "line" is start of block (module, program, block data,
-    # subroutine, function) statement ?
-    #
-    def block_start?(line)
-      return nil if !line
-
-      if line =~ /^\s*?module\s+(\w+)\s*?(!.*?)?$/i    ||
-          line =~ /^\s*?program\s+(\w+)\s*?(!.*?)?$/i  ||
-          line =~ /^\s*?block\s+data(\s+\w+)?\s*?(!.*?)?$/i     ||
-          line =~ \
-                  /^\s*?
-                   (recursive|pure|elemental)?\s*?
-                   subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                  /ix ||
-          line =~ \
-                  /^\s*?
-                   (recursive|pure|elemental)?\s*?
-                   (
-                       character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | type\s*?\([\w\s]+?\)\s+
-                     | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | double\s+precision\s+
-                     | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                   )?
-                   function\s+(\w+)\s*?
-                   (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                  /ix
-        return true
-      end
-
-      return nil
-    end
-
-    #
-    # Which "line" is end of block (module, program, block data,
-    # subroutine, function) statement ?
-    #
-    def block_end?(line)
-      return nil if !line
-
-      if line =~ /^\s*?end\s*?(!.*?)?$/i                 ||
-          line =~ /^\s*?end\s+module(\s+\w+)?\s*?(!.*?)?$/i       ||
-          line =~ /^\s*?end\s+program(\s+\w+)?\s*?(!.*?)?$/i      ||
-          line =~ /^\s*?end\s+block\s+data(\s+\w+)?\s*?(!.*?)?$/i  ||
-          line =~ /^\s*?end\s+subroutine(\s+\w+)?\s*?(!.*?)?$/i   ||
-          line =~ /^\s*?end\s+function(\s+\w+)?\s*?(!.*?)?$/i
-        return true
-      end
-
-      return nil
-    end
-
-    #
-    # Remove "Alias for" in end of comments
-    #
-    def remove_trailing_alias(text)
-      return "" if !text
-      lines = text.split("\n").reverse
-      comment_block = Array.new
-      checked = false
-      lines.each do |line|
-        if !checked 
-          if /^\s?#{INTERNAL_ALIAS_MES}/ =~ line ||
-              /^\s?#{EXTERNAL_ALIAS_MES}/ =~ line
-            checked = true
-            next
-          end
-        end
-        comment_block.unshift line
-      end
-      nice_lines = comment_block.join("\n")
-      nice_lines ||= ""
-      return nice_lines
-    end
-
-    # Empty lines in header are removed
-    def remove_empty_head_lines(text)
-      return "" unless text
-      lines = text.split("\n")
-      header = true
-      lines.delete_if{ |line|
-        header = false if /\S/ =~ line
-        header && /^\s*?$/ =~ line
-      }
-      lines.join("\n")
-    end
-
-
-    # header marker "=", "==", ... are removed
-    def remove_header_marker(text)
-      return text.gsub(/^\s?(=+)/, '<tt></tt>\1')
-    end
-
-    def remove_private_comments(body)
-      body.gsub!(/^\s*!--\s*?$.*?^\s*!\+\+\s*?$/m, '')
-      return body
-    end
-
-
-    #
-    # Information of arguments of subroutines and functions in Fortran95
-    #
-    class Fortran95Definition
-
-      # Name of variable
-      #
-      attr_reader   :varname
-
-      # Types of variable
-      #
-      attr_reader   :types
-
-      # Initial Value
-      #
-      attr_reader   :inivalue
-
-      # Suffix of array
-      #
-      attr_reader   :arraysuffix
-
-      # Comments
-      #
-      attr_accessor   :comment
-
-      # Flag of non documentation
-      #
-      attr_accessor   :nodoc
-
-      def initialize(varname, types, inivalue, arraysuffix, comment,
-                     nodoc=false)
-        @varname = varname
-        @types = types
-        @inivalue = inivalue
-        @arraysuffix = arraysuffix
-        @comment = comment
-        @nodoc = nodoc
-      end
-
-      def to_s
-        return <<-EOF
-<Fortran95Definition: 
-  varname=#{@varname}, types=#{types},
-  inivalue=#{@inivalue}, arraysuffix=#{@arraysuffix}, nodoc=#{@nodoc}, 
-  comment=
-#{@comment}
->
-EOF
-      end
-
-      #
-      # If attr is included, true is returned
-      #
-      def include_attr?(attr)
-        return if !attr
-        @types.split(",").each{ |type|
-          return true if type.strip.chomp.upcase == attr.strip.chomp.upcase
-        }
-        return nil
-      end
-
-    end # End of Fortran95Definition
-
-    #
-    # Parse string argument "text", and Return Array of
-    # Fortran95Definition object
-    #
-    def definition_info(text)
-      return nil unless text
-      lines = "#{text}"
-      defs = Array.new
-      comment = ""
-      trailing_comment = ""
-      under_comment_valid = false
-      lines.split("\n").each{ |line|
-        if /^\s*?!\s?(.*)/ =~ line
-          if COMMENTS_ARE_UPPER
-            comment << remove_header_marker($1)
-            comment << "\n"
-          elsif defs[-1] && under_comment_valid
-            defs[-1].comment << "\n"
-            defs[-1].comment << remove_header_marker($1)
-          end
-          next
-        elsif /^\s*?$/ =~ line
-          comment = ""
-          under_comment_valid = false
-          next
-        end
-        type = ""
-        characters = ""
-        if line =~ /^\s*?
-                    (
-                        character\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | type\s*?\([\w\s]+?\)[\s\,]*
-                      | integer\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | real\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | double\s+precision[\s\,]*
-                      | logical\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | complex\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                    )
-                    (.*?::)?
-                    (.+)$
-                   /ix
-          characters = $8
-          type = $1
-          type << $7.gsub(/::/, '').gsub(/^\s*?\,/, '') if $7
-        else
-          under_comment_valid = false
-          next
-        end
-        squote = false ; dquote = false ; bracket = 0
-        iniflag = false; commentflag = false
-        varname = "" ; arraysuffix = "" ; inivalue = ""
-        start_pos = defs.size
-        characters.split("").each { |char|
-          if !(squote) && !(dquote) && bracket <= 0 && !(iniflag) && !(commentflag)
-            case char
-            when "!" ; commentflag = true
-            when "(" ; bracket += 1       ; arraysuffix = char
-            when "\""; dquote = true
-            when "\'"; squote = true
-            when "=" ; iniflag = true     ; inivalue << char
-            when ","
-              defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-              varname = "" ; arraysuffix = "" ; inivalue = ""
-              under_comment_valid = true
-            when " " ; next
-            else     ; varname << char
-            end
-          elsif commentflag
-            comment << remove_header_marker(char)
-            trailing_comment << remove_header_marker(char)
-          elsif iniflag
-            if dquote
-              case char
-              when "\"" ; dquote = false ; inivalue << char
-              else      ; inivalue << char
-              end
-            elsif squote
-              case char
-              when "\'" ; squote = false ; inivalue << char
-              else      ; inivalue << char
-              end
-            elsif bracket > 0
-              case char
-              when "(" ; bracket += 1 ; inivalue << char
-              when ")" ; bracket -= 1 ; inivalue << char
-              else     ; inivalue << char
-              end
-            else
-              case char
-              when ","
-                defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-                varname = "" ; arraysuffix = "" ; inivalue = ""
-                iniflag = false
-                under_comment_valid = true
-              when "(" ; bracket += 1 ; inivalue << char
-              when "\""; dquote = true  ; inivalue << char
-              when "\'"; squote = true  ; inivalue << char
-              when "!" ; commentflag = true
-              else     ; inivalue << char
-              end
-            end
-          elsif !(squote) && !(dquote) && bracket > 0
-            case char
-            when "(" ; bracket += 1 ; arraysuffix << char
-            when ")" ; bracket -= 1 ; arraysuffix << char
-            else     ; arraysuffix << char
-            end
-          elsif squote
-            case char
-            when "\'"; squote = false ; inivalue << char
-            else     ; inivalue << char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; inivalue << char
-            else     ; inivalue << char
-            end
-          end
-        }
-        defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-        if trailing_comment =~ /^:nodoc:/
-          defs[start_pos..-1].collect!{ |defitem|
-            defitem.nodoc = true
-          }
-        end
-        varname = "" ; arraysuffix = "" ; inivalue = ""
-        comment = ""
-        under_comment_valid = true
-        trailing_comment = ""
-      }
-      return defs
-    end
-
-
-  end # class Fortran95parser
-
-end # module RDoc
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_rb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_rb.rb
deleted file mode 100644
index 750c483..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_rb.rb
+++ /dev/null
@@ -1,2609 +0,0 @@
-#!/usr/local/bin/ruby
-
-# Parse a Ruby source file, building a set of objects
-# representing the modules, classes, methods,
-# requires, and includes we find (these classes
-# are defined in code_objects.rb).
-
-# This file contains stuff stolen outright from:
-#
-#   rtags.rb - 
-#   ruby-lex.rb - ruby lexcal analizer
-#   ruby-token.rb - ruby tokens 
-#   	by Keiju ISHITSUKA (Nippon Rational Inc.)
-#
-
-require "e2mmap"
-require "irb/slex"
-
-require "rdoc/code_objects"
-require "rdoc/tokenstream"
-
-require "rdoc/markup/simple_markup/preprocess"
-
-require "rdoc/parsers/parserfactory"
-
-$TOKEN_DEBUG = $DEBUG
-
-# Definitions of all tokens involved in the lexical analysis
-
-module RubyToken
-  EXPR_BEG   = :EXPR_BEG
-  EXPR_MID   = :EXPR_MID
-  EXPR_END   = :EXPR_END
-  EXPR_ARG   = :EXPR_ARG
-  EXPR_FNAME = :EXPR_FNAME
-  EXPR_DOT   = :EXPR_DOT
-  EXPR_CLASS = :EXPR_CLASS
-  
-  class Token
-    NO_TEXT = "??".freeze
-    attr :text
-
-    def initialize(line_no, char_no)
-      @line_no = line_no
-      @char_no = char_no
-      @text    = NO_TEXT
-    end
-
-    # Because we're used in contexts that expect to return a token,
-    # we set the text string and then return ourselves
-    def set_text(text)
-      @text = text
-      self
-    end
-
-    attr_reader :line_no, :char_no, :text
-  end
-
-  class TkNode < Token
-    attr :node
-  end
-
-  class TkId < Token
-    def initialize(line_no, char_no, name)
-      super(line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkKW < TkId
-  end
-
-  class TkVal < Token
-    def initialize(line_no, char_no, value = nil)
-      super(line_no, char_no)
-      set_text(value)
-    end
-  end
-
-  class TkOp < Token
-    def name
-      self.class.op_name
-    end
-  end
-
-  class TkOPASGN < TkOp
-    def initialize(line_no, char_no, op)
-      super(line_no, char_no)
-      op = TkReading2Token[op] unless op.kind_of?(Symbol)
-      @op = op
-    end
-    attr :op
-  end
-
-  class TkUnknownChar < Token
-    def initialize(line_no, char_no, id)
-      super(line_no, char_no)
-      @name = char_no.chr
-    end
-    attr :name
-  end
-
-  class TkError < Token
-  end
-
-  def set_token_position(line, char)
-    @prev_line_no = line
-    @prev_char_no = char
-  end
-
-  def Token(token, value = nil)
-    tk = nil
-    case token
-    when String, Symbol
-      source = token.kind_of?(String) ? TkReading2Token : TkSymbol2Token
-      if (tk = source[token]).nil?
-	IRB.fail TkReading2TokenNoKey, token
-      end
-      tk = Token(tk[0], value) 
-    else 
-      tk = if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
-             token.new(@prev_line_no, @prev_char_no)
-           else
-             token.new(@prev_line_no, @prev_char_no, value)
-           end
-    end
-    tk
-  end
-
-  TokenDefinitions = [
-    [:TkCLASS,      TkKW,  "class",  EXPR_CLASS],
-    [:TkMODULE,     TkKW,  "module", EXPR_BEG],
-    [:TkDEF,	    TkKW,  "def",    EXPR_FNAME],
-    [:TkUNDEF,      TkKW,  "undef",  EXPR_FNAME],
-    [:TkBEGIN,      TkKW,  "begin",  EXPR_BEG],
-    [:TkRESCUE,     TkKW,  "rescue", EXPR_MID],
-    [:TkENSURE,     TkKW,  "ensure", EXPR_BEG],
-    [:TkEND,	    TkKW,  "end",    EXPR_END],
-    [:TkIF,         TkKW,  "if",     EXPR_BEG, :TkIF_MOD],
-    [:TkUNLESS,     TkKW,  "unless", EXPR_BEG, :TkUNLESS_MOD],
-    [:TkTHEN,	    TkKW,  "then",   EXPR_BEG],
-    [:TkELSIF,      TkKW,  "elsif",  EXPR_BEG],
-    [:TkELSE,	    TkKW,  "else",   EXPR_BEG],
-    [:TkCASE,	    TkKW,  "case",   EXPR_BEG],
-    [:TkWHEN,	    TkKW,  "when",   EXPR_BEG],
-    [:TkWHILE,      TkKW,  "while",  EXPR_BEG, :TkWHILE_MOD],
-    [:TkUNTIL,      TkKW,  "until",  EXPR_BEG, :TkUNTIL_MOD],
-    [:TkFOR,	    TkKW,  "for",    EXPR_BEG],
-    [:TkBREAK,      TkKW,  "break",  EXPR_END],
-    [:TkNEXT,	    TkKW,  "next",   EXPR_END],
-    [:TkREDO,	    TkKW,  "redo",   EXPR_END],
-    [:TkRETRY,      TkKW,  "retry",  EXPR_END],
-    [:TkIN,	    TkKW,  "in",     EXPR_BEG],
-    [:TkDO,	    TkKW,  "do",     EXPR_BEG],
-    [:TkRETURN,     TkKW,  "return", EXPR_MID],
-    [:TkYIELD,      TkKW,  "yield",  EXPR_END],
-    [:TkSUPER,      TkKW,  "super",  EXPR_END],
-    [:TkSELF,	    TkKW,  "self",   EXPR_END],
-    [:TkNIL, 	    TkKW,  "nil",    EXPR_END],
-    [:TkTRUE,	    TkKW,  "true",   EXPR_END],
-    [:TkFALSE,      TkKW,  "false",  EXPR_END],
-    [:TkAND,	    TkKW,  "and",    EXPR_BEG],
-    [:TkOR, 	    TkKW,  "or",     EXPR_BEG],
-    [:TkNOT,	    TkKW,  "not",    EXPR_BEG],
-    [:TkIF_MOD,     TkKW],
-    [:TkUNLESS_MOD, TkKW],
-    [:TkWHILE_MOD,  TkKW],
-    [:TkUNTIL_MOD,  TkKW],
-    [:TkALIAS,      TkKW,  "alias",    EXPR_FNAME],
-    [:TkDEFINED,    TkKW,  "defined?", EXPR_END],
-    [:TklBEGIN,     TkKW,  "BEGIN",    EXPR_END],
-    [:TklEND,	    TkKW,  "END",      EXPR_END],
-    [:Tk__LINE__,   TkKW,  "__LINE__", EXPR_END],
-    [:Tk__FILE__,   TkKW,  "__FILE__", EXPR_END],
-
-    [:TkIDENTIFIER, TkId],
-    [:TkFID,	    TkId],
-    [:TkGVAR,	    TkId],
-    [:TkIVAR,	    TkId],
-    [:TkCONSTANT,   TkId],
-
-    [:TkINTEGER,    TkVal],
-    [:TkFLOAT,      TkVal],
-    [:TkSTRING,     TkVal],
-    [:TkXSTRING,    TkVal],
-    [:TkREGEXP,     TkVal],
-    [:TkCOMMENT,    TkVal],
-
-    [:TkDSTRING,    TkNode],
-    [:TkDXSTRING,   TkNode],
-    [:TkDREGEXP,    TkNode],
-    [:TkNTH_REF,    TkId],
-    [:TkBACK_REF,   TkId],
-
-    [:TkUPLUS,      TkOp,   "+@"],
-    [:TkUMINUS,     TkOp,   "-@"],
-    [:TkPOW,	    TkOp,   "**"],
-    [:TkCMP,	    TkOp,   "<=>"],
-    [:TkEQ,	    TkOp,   "=="],
-    [:TkEQQ,	    TkOp,   "==="],
-    [:TkNEQ,	    TkOp,   "!="],
-    [:TkGEQ,	    TkOp,   ">="],
-    [:TkLEQ,	    TkOp,   "<="],
-    [:TkANDOP,      TkOp,   "&&"],
-    [:TkOROP,	    TkOp,   "||"],
-    [:TkMATCH,      TkOp,   "=~"],
-    [:TkNMATCH,     TkOp,   "!~"],
-    [:TkDOT2,	    TkOp,   ".."],
-    [:TkDOT3,	    TkOp,   "..."],
-    [:TkAREF,	    TkOp,   "[]"],
-    [:TkASET,	    TkOp,   "[]="],
-    [:TkLSHFT,      TkOp,   "<<"],
-    [:TkRSHFT,      TkOp,   ">>"],
-    [:TkCOLON2,     TkOp],
-    [:TkCOLON3,     TkOp],
-#   [:OPASGN,	    TkOp],               # +=, -=  etc. #
-    [:TkASSOC,      TkOp,   "=>"],
-    [:TkQUESTION,   TkOp,   "?"],	 #?
-    [:TkCOLON,      TkOp,   ":"],        #:
-    
-    [:TkfLPAREN],         # func( #
-    [:TkfLBRACK],         # func[ #
-    [:TkfLBRACE],         # func{ #
-    [:TkSTAR],            # *arg
-    [:TkAMPER],           # &arg #
-    [:TkSYMBOL,     TkId],          # :SYMBOL
-    [:TkSYMBEG,     TkId], 
-    [:TkGT,	    TkOp,   ">"],
-    [:TkLT,	    TkOp,   "<"],
-    [:TkPLUS,	    TkOp,   "+"],
-    [:TkMINUS,      TkOp,   "-"],
-    [:TkMULT,	    TkOp,   "*"],
-    [:TkDIV,	    TkOp,   "/"],
-    [:TkMOD,	    TkOp,   "%"],
-    [:TkBITOR,      TkOp,   "|"],
-    [:TkBITXOR,     TkOp,   "^"],
-    [:TkBITAND,     TkOp,   "&"],
-    [:TkBITNOT,     TkOp,   "~"],
-    [:TkNOTOP,      TkOp,   "!"],
-
-    [:TkBACKQUOTE,  TkOp,   "`"],
-
-    [:TkASSIGN,     Token,  "="],
-    [:TkDOT,	    Token,  "."],
-    [:TkLPAREN,     Token,  "("],  #(exp)
-    [:TkLBRACK,     Token,  "["],  #[arry]
-    [:TkLBRACE,     Token,  "{"],  #{hash}
-    [:TkRPAREN,     Token,  ")"],
-    [:TkRBRACK,     Token,  "]"],
-    [:TkRBRACE,     Token,  "}"],
-    [:TkCOMMA,      Token,  ","],
-    [:TkSEMICOLON,  Token,  ";"],
-
-    [:TkRD_COMMENT],
-    [:TkSPACE],
-    [:TkNL],
-    [:TkEND_OF_SCRIPT],
-
-    [:TkBACKSLASH,  TkUnknownChar,  "\\"],
-    [:TkAT,	    TkUnknownChar,  "@"],
-    [:TkDOLLAR,     TkUnknownChar,  "\$"], #"
-  ]
-
-  # {reading => token_class}
-  # {reading => [token_class, *opt]}
-  TkReading2Token = {}
-  TkSymbol2Token = {}
-
-  def RubyToken.def_token(token_n, super_token = Token, reading = nil, *opts)
-    token_n = token_n.id2name unless token_n.kind_of?(String)
-    if RubyToken.const_defined?(token_n)
-      IRB.fail AlreadyDefinedToken, token_n
-    end
-
-    token_c =  Class.new super_token
-    RubyToken.const_set token_n, token_c
-#    token_c.inspect
- 
-    if reading
-      if TkReading2Token[reading]
-	IRB.fail TkReading2TokenDuplicateError, token_n, reading
-      end
-      if opts.empty?
-	TkReading2Token[reading] = [token_c]
-      else
-	TkReading2Token[reading] = [token_c].concat(opts)
-      end
-    end
-    TkSymbol2Token[token_n.intern] = token_c
-
-    if token_c <= TkOp
-      token_c.class_eval %{
-        def self.op_name; "#{reading}"; end
-      }
-    end
-  end
-
-  for defs in TokenDefinitions
-    def_token(*defs)
-  end
-
-  NEWLINE_TOKEN = TkNL.new(0,0)
-  NEWLINE_TOKEN.set_text("\n")
-
-end
-
-
-
-# Lexical analyzer for Ruby source
-
-class RubyLex
-
-  ######################################################################
-  #
-  # Read an input stream character by character. We allow for unlimited
-  # ungetting of characters just read.
-  #
-  # We simplify the implementation greatly by reading the entire input
-  # into a buffer initially, and then simply traversing it using
-  # pointers.
-  #
-  # We also have to allow for the <i>here document diversion</i>. This
-  # little gem comes about when the lexer encounters a here
-  # document. At this point we effectively need to split the input
-  # stream into two parts: one to read the body of the here document,
-  # the other to read the rest of the input line where the here
-  # document was initially encountered. For example, we might have
-  #
-  #   do_something(<<-A, <<-B)
-  #     stuff
-  #     for
-  #   A
-  #     stuff
-  #     for
-  #   B
-  #
-  # When the lexer encounters the <<A, it reads until the end of the
-  # line, and keeps it around for later. It then reads the body of the
-  # here document.  Once complete, it needs to read the rest of the
-  # original line, but then skip the here document body.
-  #
-  
-  class BufferedReader
-    
-    attr_reader :line_num
-    
-    def initialize(content)
-      if /\t/ =~ content
-        tab_width = Options.instance.tab_width
-        content = content.split(/\n/).map do |line|
-          1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)}  && $~ #`
-          line
-        end .join("\n")
-      end
-      @content   = content
-      @content << "\n" unless @content[-1,1] == "\n"
-      @size      = @content.size
-      @offset    = 0
-      @hwm       = 0
-      @line_num  = 1
-      @read_back_offset = 0
-      @last_newline = 0
-      @newline_pending = false
-    end
-    
-    def column
-      @offset - @last_newline
-    end
-    
-    def getc
-      return nil if @offset >= @size
-      ch = @content[@offset, 1]
-      
-      @offset += 1
-      @hwm = @offset if @hwm < @offset
-      
-      if @newline_pending
-        @line_num += 1
-        @last_newline = @offset - 1
-        @newline_pending = false
-      end
-      
-      if ch == "\n"
-        @newline_pending = true
-      end
-      ch
-    end
-    
-    def getc_already_read
-      getc
-    end
-    
-    def ungetc(ch)
-      raise "unget past beginning of file" if @offset <= 0
-      @offset -= 1
-      if @content[@offset] == ?\n
-        @newline_pending = false
-      end
-    end
-    
-    def get_read
-      res = @content[@read_back_offset... at offset]
-      @read_back_offset = @offset
-      res
-    end
-    
-    def peek(at)
-      pos = @offset + at
-      if pos >= @size
-        nil
-      else
-        @content[pos, 1]
-      end
-    end
-    
-    def peek_equal(str)
-      @content[@offset, str.length] == str
-    end
-    
-    def divert_read_from(reserve)
-      @content[@offset, 0] = reserve
-      @size      = @content.size
-    end
-  end
-
-  # end of nested class BufferedReader
-
-  extend Exception2MessageMapper
-  def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
-  def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkReading2TokenDuplicateError, 
-		"key duplicate(token_n='%s', key='%s')")
-  def_exception(:SyntaxError, "%s")
-  
-  include RubyToken
-  include IRB
-
-  attr_reader :continue
-  attr_reader :lex_state
-
-  def RubyLex.debug?
-    false
-  end
-
-  def initialize(content)
-    lex_init
-
-    @reader = BufferedReader.new(content)
-
-    @exp_line_no = @line_no = 1
-    @base_char_no = 0
-    @indent = 0
-
-    @ltype = nil
-    @quoted = nil
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    
-    @continue = false
-    @line = ""
-
-    @skip_space = false
-    @read_auto_clean_up = false
-    @exception_on_syntax_error = true
-  end
-
-  attr :skip_space, true
-  attr :read_auto_clean_up, true
-  attr :exception_on_syntax_error, true
-
-  attr :indent
-
-  # io functions
-  def line_no
-    @reader.line_num
-  end
-
-  def char_no
-    @reader.column
-  end
-
-  def get_read
-    @reader.get_read
-  end
-
-  def getc
-    @reader.getc
-  end
-
-  def getc_of_rests
-    @reader.getc_already_read
-  end
-
-  def gets
-    c = getc or return
-    l = ""
-    begin
-      l.concat c unless c == "\r"
-      break if c == "\n"
-    end while c = getc
-    l
-  end
-
-
-  def ungetc(c = nil)
-    @reader.ungetc(c)
-  end
-
-  def peek_equal?(str)
-    @reader.peek_equal(str)
-  end
-
-  def peek(i = 0)
-    @reader.peek(i)
-  end
-
-  def lex
-    until (((tk = token).kind_of?(TkNL) || tk.kind_of?(TkEND_OF_SCRIPT)) &&
-	     !@continue or
-	     tk.nil?)
-    end
-    line = get_read
-
-    if line == "" and tk.kind_of?(TkEND_OF_SCRIPT) || tk.nil?
-      nil
-    else
-      line
-    end
-  end
-
-  def token
-    set_token_position(line_no, char_no)
-    begin
-      begin
-	tk = @OP.match(self)
-	@space_seen = tk.kind_of?(TkSPACE)
-      rescue SyntaxError
-	abort if @exception_on_syntax_error
-	tk = TkError.new(line_no, char_no)
-      end
-    end while @skip_space and tk.kind_of?(TkSPACE)
-    if @read_auto_clean_up
-      get_read
-    end
-#   throw :eof unless tk
-    p tk if $DEBUG
-    tk
-  end
-  
-  ENINDENT_CLAUSE = [
-    "case", "class", "def", "do", "for", "if",
-    "module", "unless", "until", "while", "begin" #, "when"
-  ]
-  DEINDENT_CLAUSE = ["end" #, "when"
-  ]
-
-  PERCENT_LTYPE = {
-    "q" => "\'",
-    "Q" => "\"",
-    "x" => "\`",
-    "r" => "/",
-    "w" => "]"
-  }
-  
-  PERCENT_PAREN = {
-    "{" => "}",
-    "[" => "]",
-    "<" => ">",
-    "(" => ")"
-  }
-
-  Ltype2Token = {
-    "\'" => TkSTRING,
-    "\"" => TkSTRING,
-    "\`" => TkXSTRING,
-    "/" => TkREGEXP,
-    "]" => TkDSTRING
-  }
-  Ltype2Token.default = TkSTRING
-
-  DLtype2Token = {
-    "\"" => TkDSTRING,
-    "\`" => TkDXSTRING,
-    "/" => TkDREGEXP,
-  }
-
-  def lex_init()
-    @OP = SLex.new
-    @OP.def_rules("\0", "\004", "\032") do |chars, io|
-      Token(TkEND_OF_SCRIPT).set_text(chars)
-    end
-
-    @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |chars, io|
-      @space_seen = TRUE
-      while (ch = getc) =~ /[ \t\f\r\13]/
-        chars << ch
-      end
-      ungetc
-      Token(TkSPACE).set_text(chars)
-    end
-
-    @OP.def_rule("#") do
-      |op, io|
-      identify_comment
-    end
-
-    @OP.def_rule("=begin", proc{@prev_char_no == 0 && peek(0) =~ /\s/}) do
-      |op, io|
-      str = op
-      @ltype = "="
-
-
-      begin
-        line = ""
-        begin
-          ch = getc
-          line << ch
-        end until ch == "\n"
-        str << line
-      end until line =~ /^=end/
-
-      ungetc
-
-      @ltype = nil
-
-      if str =~ /\A=begin\s+rdoc/i
-        str.sub!(/\A=begin.*\n/, '')
-        str.sub!(/^=end.*/m, '')
-        Token(TkCOMMENT).set_text(str)
-      else
-        Token(TkRD_COMMENT)#.set_text(str)
-      end
-    end
-
-    @OP.def_rule("\n") do
-      print "\\n\n" if RubyLex.debug?
-      case @lex_state
-      when EXPR_BEG, EXPR_FNAME, EXPR_DOT
-	@continue = TRUE
-      else
-	@continue = FALSE
-	@lex_state = EXPR_BEG
-      end
-      Token(TkNL).set_text("\n")
-    end
-
-    @OP.def_rules("*", "**",	
-		  "!", "!=", "!~",
-		  "=", "==", "===", 
-		  "=~", "<=>",	
-		  "<", "<=",
-		  ">", ">=", ">>") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rules("<<") do
-      |op, io|
-      tk = nil
-      if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
-	  (@lex_state != EXPR_ARG || @space_seen)
-	c = peek(0)
-	if /[-\w_\"\'\`]/ =~ c
-	  tk = identify_here_document
-	end
-      end
-      if !tk
-        @lex_state = EXPR_BEG
-        tk = Token(op).set_text(op)
-      end
-      tk
-    end
-
-    @OP.def_rules("'", '"') do
-      |op, io|
-      identify_string(op)
-    end
-
-    @OP.def_rules("`") do
-      |op, io|
-      if @lex_state == EXPR_FNAME
-	Token(op).set_text(op)
-      else
-	identify_string(op)
-      end
-    end
-
-    @OP.def_rules('?') do
-      |op, io|
-      if @lex_state == EXPR_END
-	@lex_state = EXPR_BEG
-	Token(TkQUESTION).set_text(op)
-      else
-	ch = getc
-	if @lex_state == EXPR_ARG && ch !~ /\s/
-	  ungetc
-	  @lex_state = EXPR_BEG;
-	  Token(TkQUESTION).set_text(op)
-	else
-          str = op
-          str << ch
-	  if (ch == '\\') #'
-	    str << read_escape
-	  end
-	  @lex_state = EXPR_END
-	  Token(TkINTEGER).set_text(str)
-	end
-      end
-    end
-
-    @OP.def_rules("&", "&&", "|", "||") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-    
-    @OP.def_rules("+=", "-=", "*=", "**=", 
-		  "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      op =~ /^(.*)=$/
-      Token(TkOPASGN, $1).set_text(op)
-    end
-
-    @OP.def_rule("+@", proc{@lex_state == EXPR_FNAME}) do |op, io|
-      Token(TkUPLUS).set_text(op)
-    end
-
-    @OP.def_rule("-@", proc{@lex_state == EXPR_FNAME}) do |op, io|
-      Token(TkUMINUS).set_text(op)
-    end
-
-    @OP.def_rules("+", "-") do
-      |op, io|
-      catch(:RET) do
-	if @lex_state == EXPR_ARG
-	  if @space_seen and peek(0) =~ /[0-9]/
-	    throw :RET, identify_number(op)
-	  else
-	    @lex_state = EXPR_BEG
-	  end
-	elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
-	  throw :RET, identify_number(op)
-	else
-	  @lex_state = EXPR_BEG
-	end
-	Token(op).set_text(op)
-      end
-    end
-
-    @OP.def_rule(".") do
-      @lex_state = EXPR_BEG
-      if peek(0) =~ /[0-9]/
-	ungetc
-	identify_number("")
-      else
-	# for obj.if
-	@lex_state = EXPR_DOT
-	Token(TkDOT).set_text(".")
-      end
-    end
-
-    @OP.def_rules("..", "...") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    lex_int2
-  end
-  
-  def lex_int2
-    @OP.def_rules("]", "}", ")") do
-      |op, io|
-      @lex_state = EXPR_END
-      @indent -= 1
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rule(":") do
-      if @lex_state == EXPR_END || peek(0) =~ /\s/
-	@lex_state = EXPR_BEG
-	tk = Token(TkCOLON)
-      else
-	@lex_state = EXPR_FNAME;
-	tk = Token(TkSYMBEG)
-      end
-      tk.set_text(":")
-    end
-
-    @OP.def_rule("::") do
-#      p @lex_state.id2name, @space_seen
-      if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
-	@lex_state = EXPR_BEG
-	tk = Token(TkCOLON3)
-      else
-	@lex_state = EXPR_DOT
-	tk = Token(TkCOLON2)
-      end
-      tk.set_text("::")
-    end
-
-    @OP.def_rule("/") do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_string(op)
-      elsif peek(0) == '='
-	getc
-	@lex_state = EXPR_BEG
-	Token(TkOPASGN, :/).set_text("/=") #")
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_string(op)
-      else 
-	@lex_state = EXPR_BEG
-        Token("/").set_text(op)
-      end
-    end
-
-    @OP.def_rules("^") do
-      @lex_state = EXPR_BEG
-      Token("^").set_text("^")
-    end
-
-    #       @OP.def_rules("^=") do
-    # 	@lex_state = EXPR_BEG
-    # 	Token(TkOPASGN, :^)
-    #       end
-    
-    @OP.def_rules(",", ";") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rule("~") do
-      @lex_state = EXPR_BEG
-      Token("~").set_text("~")
-    end
-
-    @OP.def_rule("~@", proc{@lex_state = EXPR_FNAME}) do
-      @lex_state = EXPR_BEG
-      Token("~").set_text("~@")
-    end
-    
-    @OP.def_rule("(") do
-      @indent += 1
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	@lex_state = EXPR_BEG
-	tk = Token(TkfLPAREN)
-      else
-	@lex_state = EXPR_BEG
-	tk = Token(TkLPAREN)
-      end
-      tk.set_text("(")
-    end
-
-    @OP.def_rule("[]", proc{@lex_state == EXPR_FNAME}) do
-      Token("[]").set_text("[]")
-    end
-
-    @OP.def_rule("[]=", proc{@lex_state == EXPR_FNAME}) do
-      Token("[]=").set_text("[]=")
-    end
-
-    @OP.def_rule("[") do
-      @indent += 1
-      if @lex_state == EXPR_FNAME
-	t = Token(TkfLBRACK)
-      else
-	if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	  t = Token(TkLBRACK)
-	elsif @lex_state == EXPR_ARG && @space_seen
-	  t = Token(TkLBRACK)
-	else
-	  t = Token(TkfLBRACK)
-	end
-	@lex_state = EXPR_BEG
-      end
-      t.set_text("[")
-    end
-
-    @OP.def_rule("{") do
-      @indent += 1
-      if @lex_state != EXPR_END && @lex_state != EXPR_ARG
-	t = Token(TkLBRACE)
-      else
-	t = Token(TkfLBRACE)
-      end
-      @lex_state = EXPR_BEG
-      t.set_text("{")
-    end
-
-    @OP.def_rule('\\') do   #'
-      if getc == "\n" 
-	@space_seen = true
-	@continue = true
-	Token(TkSPACE).set_text("\\\n")
-      else 
-	ungetc
-	Token("\\").set_text("\\")  #"
-      end 
-    end 
-
-    @OP.def_rule('%') do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_quotation('%')
-      elsif peek(0) == '='
-	getc
-	Token(TkOPASGN, "%").set_text("%=")
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_quotation('%')
-      else
-	@lex_state = EXPR_BEG
-	Token("%").set_text("%")
-      end
-    end
-
-    @OP.def_rule('$') do  #'
-      identify_gvar
-    end
-
-    @OP.def_rule('@') do
-      if peek(0) =~ /[@\w_]/
-	ungetc
-	identify_identifier
-      else
-	Token("@").set_text("@")
-      end
-    end
-
-    #       @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do 
-    # 	|op, io|
-    # 	@indent += 1
-    # 	@lex_state = EXPR_FNAME
-    # #	@lex_state = EXPR_END
-    # #	until @rests[0] == "\n" or @rests[0] == ";"
-    # #	  rests.shift
-    # #	end
-    #       end
-
-    @OP.def_rule("__END__", proc{@prev_char_no == 0 && peek(0) =~ /[\r\n]/}) do
-      throw :eof
-    end
-
-    @OP.def_rule("") do
-      |op, io|
-      printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
-      if peek(0) =~ /[0-9]/
-	t = identify_number("")
-      elsif peek(0) =~ /[\w_]/
-	t = identify_identifier
-      end
-      printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
-      t
-    end
-    
-    p @OP if RubyLex.debug?
-  end
-  
-  def identify_gvar
-    @lex_state = EXPR_END
-    str = "$"
-
-    tk = case ch = getc
-         when /[~_*$?!@\/\\;,=:<>".]/   #"
-           str << ch
-           Token(TkGVAR, str)
-           
-         when "-"
-           str << "-" << getc
-           Token(TkGVAR, str)
-           
-         when "&", "`", "'", "+"
-           str << ch
-           Token(TkBACK_REF, str)
-           
-         when /[1-9]/
-           str << ch
-           while (ch = getc) =~ /[0-9]/
-             str << ch
-           end
-           ungetc
-           Token(TkNTH_REF)
-         when /\w/
-           ungetc
-           ungetc
-           return identify_identifier
-         else 
-           ungetc
-           Token("$")     
-         end
-    tk.set_text(str)
-  end
-  
-  def identify_identifier
-    token = ""
-    token.concat getc if peek(0) =~ /[$@]/
-    token.concat getc if peek(0) == "@"
-
-    while (ch = getc) =~ /\w|_/
-      print ":", ch, ":" if RubyLex.debug?
-      token.concat ch
-    end
-    ungetc
-    
-    if ch == "!" or ch == "?"
-      token.concat getc
-    end
-    # fix token
-
-    # $stderr.puts "identifier - #{token}, state = #@lex_state"
-
-    case token
-    when /^\$/
-      return Token(TkGVAR, token).set_text(token)
-    when /^\@/
-      @lex_state = EXPR_END
-      return Token(TkIVAR, token).set_text(token)
-    end
-    
-    if @lex_state != EXPR_DOT
-      print token, "\n" if RubyLex.debug?
-
-      token_c, *trans = TkReading2Token[token]
-      if token_c
-	# reserved word?
-
-	if (@lex_state != EXPR_BEG &&
-	    @lex_state != EXPR_FNAME &&
-	    trans[1])
-	  # modifiers
-	  token_c = TkSymbol2Token[trans[1]]
-	  @lex_state = trans[0]
-	else
-	  if @lex_state != EXPR_FNAME
-	    if ENINDENT_CLAUSE.include?(token)
-	      @indent += 1
-	    elsif DEINDENT_CLAUSE.include?(token)
-	      @indent -= 1
-	    end
-	    @lex_state = trans[0]
-	  else
-	    @lex_state = EXPR_END
-	  end
-	end
-	return Token(token_c, token).set_text(token)
-      end
-    end
-
-    if @lex_state == EXPR_FNAME
-      @lex_state = EXPR_END
-      if peek(0) == '='
-	token.concat getc
-      end
-    elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
-      @lex_state = EXPR_ARG
-    else
-      @lex_state = EXPR_END
-    end
-
-    if token[0, 1] =~ /[A-Z]/
-      return Token(TkCONSTANT, token).set_text(token)
-    elsif token[token.size - 1, 1] =~ /[!?]/
-      return Token(TkFID, token).set_text(token)
-    else
-      return Token(TkIDENTIFIER, token).set_text(token)
-    end
-  end
-
-  def identify_here_document
-    ch = getc
-    if ch == "-"
-      ch = getc
-      indent = true
-    end
-    if /['"`]/ =~ ch            # '
-      lt = ch
-      quoted = ""
-      while (c = getc) && c != lt
-	quoted.concat c
-      end
-    else
-      lt = '"'
-      quoted = ch.dup
-      while (c = getc) && c =~ /\w/
-	quoted.concat c
-      end
-      ungetc
-    end
-
-    ltback, @ltype = @ltype, lt
-    reserve = ""
-
-    while ch = getc
-      reserve << ch
-      if ch == "\\"    #"
-        ch = getc
-	reserve << ch
-      elsif ch == "\n"
-	break
-      end
-    end
-
-    str = ""
-    while (l = gets)
-      l.chomp!
-      l.strip! if indent
-      break if l == quoted
-      str << l.chomp << "\n"
-    end
-
-    @reader.divert_read_from(reserve)
-
-    @ltype = ltback
-    @lex_state = EXPR_END
-    Token(Ltype2Token[lt], str).set_text(str.dump)
-  end
-  
-  def identify_quotation(initial_char)
-    ch = getc
-    if lt = PERCENT_LTYPE[ch]
-      initial_char += ch
-      ch = getc
-    elsif ch =~ /\W/
-      lt = "\""
-    else
-      RubyLex.fail SyntaxError, "unknown type of %string ('#{ch}')"
-    end
-#     if ch !~ /\W/
-#       ungetc
-#       next
-#     end
-    #@ltype = lt
-    @quoted = ch unless @quoted = PERCENT_PAREN[ch]
-    identify_string(lt, @quoted, ch, initial_char)
-  end
-
-  def identify_number(start)
-    str = start.dup
-
-    if start == "+" or start == "-" or start == ""
-      start = getc
-      str << start
-    end
-
-    @lex_state = EXPR_END
-
-    if start == "0"
-      if peek(0) == "x"
-        ch = getc
-        str << ch
-        match = /[0-9a-f_]/
-      else
-        match = /[0-7_]/
-      end
-      while ch = getc
-        if ch !~ match
-          ungetc
-          break
-        else
-          str << ch
-        end
-      end
-      return Token(TkINTEGER).set_text(str)
-    end
-
-    type = TkINTEGER
-    allow_point = TRUE
-    allow_e = TRUE
-    while ch = getc
-      case ch
-      when /[0-9_]/
-        str << ch
-
-      when allow_point && "."
-	type = TkFLOAT
-	if peek(0) !~ /[0-9]/
-	  ungetc
-	  break
-	end
-        str << ch
-	allow_point = false
-
-      when allow_e && "e", allow_e && "E"
-        str << ch
-	type = TkFLOAT
-	if peek(0) =~ /[+-]/
-	  str << getc
-	end
-	allow_e = false
-	allow_point = false
-      else
-	ungetc
-	break
-      end
-    end
-    Token(type).set_text(str)
-  end
-  
-  def identify_string(ltype, quoted = ltype, opener=nil, initial_char = nil)
-    @ltype = ltype
-    @quoted = quoted
-    subtype = nil
-
-    str = ""
-    str << initial_char if initial_char
-    str << (opener||quoted)
-
-    nest = 0
-    begin
-      while ch = getc 
-	str << ch
-	if @quoted == ch 
-          if nest == 0
-            break
-          else
-            nest -= 1
-          end
-        elsif opener == ch
-          nest += 1
-	elsif @ltype != "'" && @ltype != "]" and ch == "#"
-          ch = getc
-          if ch == "{"
-            subtype = true
-            str << ch << skip_inner_expression
-          else
-            ungetc(ch)
-          end
-	elsif ch == '\\' #'
-	  str << read_escape
-	end
-      end
-      if @ltype == "/"
-	if peek(0) =~ /i|o|n|e|s/
-	  str << getc
-	end
-      end
-      if subtype
-	Token(DLtype2Token[ltype], str)
-      else
-	Token(Ltype2Token[ltype], str)
-      end.set_text(str)
-    ensure
-      @ltype = nil
-      @quoted = nil
-      @lex_state = EXPR_END
-    end
-  end
-
-  def skip_inner_expression
-    res = ""
-    nest = 0
-    while (ch = getc)
-      res << ch
-      if ch == '}'
-        break if nest.zero?
-        nest -= 1
-      elsif ch == '{'
-        nest += 1
-      end
-    end
-    res
-  end
-
-  def identify_comment
-    @ltype = "#"
-    comment = "#"
-    while ch = getc
-      if ch == "\\"
-        ch = getc
-        if ch == "\n"
-          ch = " "
-        else
-          comment << "\\" 
-        end
-      else
-        if ch == "\n"
-          @ltype = nil
-          ungetc
-          break
-        end
-      end
-      comment << ch
-    end
-    return Token(TkCOMMENT).set_text(comment)
-  end
-  
-  def read_escape
-    res = ""
-    case ch = getc
-    when /[0-7]/
-      ungetc ch
-      3.times do
-	case ch = getc
-	when /[0-7]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-        res << ch
-      end
-      
-    when "x"
-      res << ch
-      2.times do
-	case ch = getc
-	when /[0-9a-fA-F]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-        res << ch
-      end
-
-    when "M"
-      res << ch
-      if (ch = getc) != '-'
-	ungetc
-      else
-        res << ch
-	if (ch = getc) == "\\" #"
-          res << ch
-	  res << read_escape
-        else
-          res << ch
-	end
-      end
-
-    when "C", "c" #, "^"
-      res << ch
-      if ch == "C" and (ch = getc) != "-"
-	ungetc
-      else
-        res << ch
-        if (ch = getc) == "\\" #"
-          res << ch
-          res << read_escape
-        else
-          res << ch
-        end
-      end
-    else
-      res << ch
-    end
-    res
-  end
-end
-
-
-
-# Extract code elements from a source file, returning a TopLevel
-# object containing the constituent file elements.
-#
-# This file is based on rtags
-
-module RDoc
-
-  GENERAL_MODIFIERS = [ 'nodoc' ].freeze
-
-  CLASS_MODIFIERS = GENERAL_MODIFIERS
-
-  ATTR_MODIFIERS  = GENERAL_MODIFIERS
-
-  CONSTANT_MODIFIERS = GENERAL_MODIFIERS
-
-  METHOD_MODIFIERS = GENERAL_MODIFIERS + 
-    [ 'arg', 'args', 'yield', 'yields', 'notnew', 'not-new', 'not_new', 'doc' ]
-
-
-  class RubyParser
-    include RubyToken
-    include TokenStream
-
-    extend ParserFactory
-
-    parse_files_matching(/\.rbw?$/)
-
-
-    def initialize(top_level, file_name, content, options, stats)
-      @options = options
-      @stats   = stats
-      @size = 0
-      @token_listeners = nil
-      @input_file_name = file_name
-      @scanner = RubyLex.new(content)
-      @scanner.exception_on_syntax_error = false
-      @top_level = top_level
-      @progress = $stderr unless options.quiet
-    end
-
-    def scan
-      @tokens = []
-      @unget_read = []
-      @read = []
-      catch(:eof) do
-        catch(:enddoc) do
-          begin
-            parse_toplevel_statements(@top_level)
-          rescue Exception => e
-            $stderr.puts "\n\n"
-            $stderr.puts "RDoc failure in #@input_file_name at or around " +
-                         "line #{@scanner.line_no} column #{@scanner.char_no}"
-            $stderr.puts 
-            $stderr.puts "Before reporting this, could you check that the file"
-            $stderr.puts "you're documenting compiles cleanly--RDoc is not a"
-            $stderr.puts "full Ruby parser, and gets confused easily if fed"
-            $stderr.puts "invalid programs."
-            $stderr.puts
-            $stderr.puts "The internal error was:\n\n"
-            
-            e.set_backtrace(e.backtrace[0,4])
-            raise
-          end
-        end
-      end
-      @top_level
-    end
-
-    private 
-
-    def make_message(msg)
-      prefix = "\n" + @input_file_name + ":"
-      if @scanner
-        prefix << "#{@scanner.line_no}:#{@scanner.char_no}: "
-      end
-      return prefix + msg
-    end
-
-    def warn(msg)
-      return if @options.quiet
-      msg = make_message msg
-      $stderr.puts msg
-    end
-
-    def error(msg)
-      msg = make_message msg
-      $stderr.puts msg
-      exit(1)
-    end
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-	@progress.flush
-      end
-    end
-
-    def add_token_listener(obj)
-      @token_listeners ||= []
-      @token_listeners << obj
-    end
-
-    def remove_token_listener(obj)
-      @token_listeners.delete(obj)
-    end
-
-    def get_tk
-      tk = nil
-      if @tokens.empty?
-	tk = @scanner.token
-	@read.push @scanner.get_read
-	puts "get_tk1 => #{tk.inspect}" if $TOKEN_DEBUG
-      else
-	@read.push @unget_read.shift
-	tk = @tokens.shift
-	puts "get_tk2 => #{tk.inspect}" if $TOKEN_DEBUG
-      end
-
-      if tk.kind_of?(TkSYMBEG)
-        set_token_position(tk.line_no, tk.char_no)
-        tk1 = get_tk
-        if tk1.kind_of?(TkId) || tk1.kind_of?(TkOp)
-          tk = Token(TkSYMBOL).set_text(":" + tk1.name)
-          # remove the identifier we just read (we're about to
-          # replace it with a symbol)
-          @token_listeners.each do |obj|
-            obj.pop_token
-          end if @token_listeners
-        else
-          warn("':' not followed by identifier or operator")
-          tk = tk1
-        end
-      end
-
-      # inform any listeners of our shiny new token
-      @token_listeners.each do |obj|
-        obj.add_token(tk)
-      end if @token_listeners
-
-      tk
-    end
-
-    def peek_tk
-      unget_tk(tk = get_tk)
-      tk
-    end
-
-    def unget_tk(tk)
-      @tokens.unshift tk
-      @unget_read.unshift @read.pop
-
-      # Remove this token from any listeners
-      @token_listeners.each do |obj|
-        obj.pop_token
-      end if @token_listeners
-    end
-
-    def skip_tkspace(skip_nl = true)
-      tokens = []
-      while ((tk = get_tk).kind_of?(TkSPACE) ||
-	     (skip_nl && tk.kind_of?(TkNL)))
-	tokens.push tk
-      end
-      unget_tk(tk)
-      tokens
-    end
-
-    def get_tkread
-      read = @read.join("")
-      @read = []
-      read
-    end
-
-    def peek_read
-      @read.join('')
-    end
-
-    NORMAL = "::"
-    SINGLE = "<<"
-
-    # Look for the first comment in a file that isn't
-    # a shebang line.
-
-    def collect_first_comment
-      skip_tkspace
-      res = ''
-      first_line = true
-
-      tk = get_tk
-      while tk.kind_of?(TkCOMMENT)
-        if first_line && /\A#!/ =~ tk.text
-          skip_tkspace
-          tk = get_tk
-        elsif first_line && /\A#\s*-\*-/ =~ tk.text
-          first_line = false
-          skip_tkspace
-          tk = get_tk
-        else
-          first_line = false
-          res << tk.text << "\n"
-          tk = get_tk
-          if tk.kind_of? TkNL
-            skip_tkspace(false)
-            tk = get_tk
-          end
-        end
-      end
-      unget_tk(tk)
-      res
-    end
-
-    def parse_toplevel_statements(container)
-      comment = collect_first_comment
-      look_for_directives_in(container, comment)
-      container.comment = comment unless comment.empty?
-      parse_statements(container, NORMAL, nil, comment)
-    end
-    
-    def parse_statements(container, single=NORMAL, current_method=nil, comment='')
-      nest = 1
-      save_visibility = container.visibility
-      
-#      if container.kind_of?(TopLevel)
-#      else
-#        comment = ''
-#      end
-
-      non_comment_seen = true
-      
-      while tk = get_tk
-        
-        keep_comment = false
-        
-        non_comment_seen = true unless tk.kind_of?(TkCOMMENT)
-        
-	case tk
-
-        when TkNL
-          skip_tkspace(true)   # Skip blanks and newlines
-          tk = get_tk
-          if tk.kind_of?(TkCOMMENT)
-            if non_comment_seen
-              comment = ''
-              non_comment_seen = false
-            end
-            while tk.kind_of?(TkCOMMENT)
-              comment << tk.text << "\n"
-              tk = get_tk          # this is the newline 
-              skip_tkspace(false)  # leading spaces
-              tk = get_tk
-            end
-            unless comment.empty?
-              look_for_directives_in(container, comment) 
-              if container.done_documenting
-                container.ongoing_visibility = save_visibility
-#                return
-              end
-            end
-            keep_comment = true
-          else
-            non_comment_seen = true
-          end
-          unget_tk(tk)
-          keep_comment = true
-
-
-	when TkCLASS
-	  if container.document_children
-            parse_class(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-	when TkMODULE
-	  if container.document_children
-            parse_module(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-	when TkDEF
-	  if container.document_self
-	    parse_method(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-        when TkCONSTANT
-          if container.document_self
-            parse_constant(container, single, tk, comment)
-          end
-
-	when TkALIAS
- 	  if container.document_self
-	    parse_alias(container, single, tk, comment)
-	  end
-
-        when TkYIELD
-          if current_method.nil?
-            warn("Warning: yield outside of method") if container.document_self
-          else
-            parse_yield(container, single, tk, current_method)
-          end
-
-          # Until and While can have a 'do', which shouldn't increas
-          # the nesting. We can't solve the general case, but we can
-          # handle most occurrences by ignoring a do at the end of a line
-
-        when  TkUNTIL, TkWHILE
-          nest += 1
-          puts "FOUND #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-          skip_optional_do_after_expression
-
-          # 'for' is trickier
-        when TkFOR
-          nest += 1
-          puts "FOUND #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-          skip_for_variable
-          skip_optional_do_after_expression
-
-	when TkCASE, TkDO, TkIF, TkUNLESS, TkBEGIN
-	  nest += 1
-          puts "Found #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-
-	when TkIDENTIFIER
-          if nest == 1 and current_method.nil?
-            case tk.name
-            when "private", "protected", "public",
-                 "private_class_method", "public_class_method"
-              parse_visibility(container, single, tk)
-              keep_comment = true
-            when "attr"
-              parse_attr(container, single, tk, comment)
-            when /^attr_(reader|writer|accessor)$/, @options.extra_accessors
-              parse_attr_accessor(container, single, tk, comment)
-            when "alias_method"
-              if container.document_self
-	        parse_alias(container, single, tk, comment)
-	      end
-            end
-	  end
-	  
-	  case tk.name
-	  when "require"
-	    parse_require(container, comment)
-	  when "include"
-	    parse_include(container, comment)
-	  end
-
-
-	when TkEND
-          nest -= 1
-          puts "Found 'end' in #{container.name}, nest = #{nest}, line #{tk.line_no}" if $DEBUG
-          puts "Method = #{current_method.name}" if $DEBUG and current_method
-	  if nest == 0
-            read_documentation_modifiers(container, CLASS_MODIFIERS)
-            container.ongoing_visibility = save_visibility
-            return
-          end
-
-	end
-
-        comment = '' unless keep_comment
-	begin
-	  get_tkread
-	  skip_tkspace(false)
-	end while peek_tk == TkNL
-
-      end
-    end
-    
-    def parse_class(container, single, tk, comment, &block)
-      progress("c")
-
-      @stats.num_classes += 1
-
-      container, name_t = get_class_or_module(container)
-
-      case name_t
-      when TkCONSTANT
-	name = name_t.name
-        superclass = "Object"
-
-        if peek_tk.kind_of?(TkLT)
-          get_tk
-          skip_tkspace(true)
-          superclass = get_class_specification
-          superclass = "<unknown>" if superclass.empty?
-        end
-
-	if single == SINGLE
-	  cls_type = SingleClass
-	else
-	  cls_type = NormalClass
-	end
-
-        cls = container.add_class(cls_type, name, superclass)
-        read_documentation_modifiers(cls, CLASS_MODIFIERS)
-        cls.record_location(@top_level)
-	parse_statements(cls)
-        cls.comment = comment
-
-      when TkLSHFT
-	case name = get_class_specification
-	when "self", container.name
-	  parse_statements(container, SINGLE, &block)
-	else
-          other = TopLevel.find_class_named(name)
-          unless other
-#            other = @top_level.add_class(NormalClass, name, nil)
-#            other.record_location(@top_level)
-#            other.comment = comment
-            other = NormalClass.new("Dummy", nil)
-          end
-          read_documentation_modifiers(other, CLASS_MODIFIERS)
-          parse_statements(other, SINGLE, &block)
-	end
-
-      else
-	warn("Expected class name or '<<'. Got #{name_t.class}: #{name_t.text.inspect}")
-      end
-    end
-
-    def parse_module(container, single, tk, comment)
-      progress("m")
-      @stats.num_modules += 1
-      container, name_t  = get_class_or_module(container)
-#      skip_tkspace
-      name = name_t.name
-      mod = container.add_module(NormalModule, name)
-      mod.record_location(@top_level)
-      read_documentation_modifiers(mod, CLASS_MODIFIERS)
-      parse_statements(mod)
-      mod.comment = comment
-    end
-
-    # Look for the name of a class of module (optionally with a leading :: or
-    # with :: separated named) and return the ultimate name and container
-
-    def get_class_or_module(container)
-      skip_tkspace
-      name_t = get_tk
-
-      # class ::A -> A is in the top level
-      if name_t.kind_of?(TkCOLON2)
-        name_t = get_tk
-        container = @top_level
-      end
-
-      skip_tkspace(false)
-
-      while peek_tk.kind_of?(TkCOLON2)
-        prev_container = container
-        container = container.find_module_named(name_t.name)
-        if !container
-#          warn("Couldn't find module #{name_t.name}")
-          container = prev_container.add_module(NormalModule, name_t.name)
-        end
-        get_tk
-        name_t = get_tk
-      end
-      skip_tkspace(false)
-      return [container, name_t]
-    end
-
-    def parse_constant(container, single, tk, comment)
-      name = tk.name
-      skip_tkspace(false)
-      eq_tk = get_tk
-
-      unless eq_tk.kind_of?(TkASSIGN)
-        unget_tk(eq_tk)
-        return
-      end
-
-
-      nest = 0
-      get_tkread
-
-      tk = get_tk
-      if tk.kind_of? TkGT
-        unget_tk(tk)
-        unget_tk(eq_tk)
-        return
-      end
-
-      loop do
-        puts("Param: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}")  if $DEBUG
-
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when TkRPAREN
-          nest -= 1
-        when TkCOMMENT
-          if nest <= 0 && @scanner.lex_state == EXPR_END
-            unget_tk(tk)
-            break
-          end
-        when TkNL
-          if (@scanner.lex_state == EXPR_END and nest <= 0) || !@scanner.continue
-            unget_tk(tk)
-            break
-          end
-        end
-        tk = get_tk
-      end
-
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      con = Constant.new(name, res, comment)
-      read_documentation_modifiers(con, CONSTANT_MODIFIERS)
-      if con.document_self
-	container.add_constant(con)
-      end
-    end
-
-    def parse_method(container, single, tk, comment)
-      progress(".")
-      @stats.num_methods += 1
-      line_no = tk.line_no
-      column  = tk.char_no
-      
-      start_collecting_tokens
-      add_token(tk)
-      add_token_listener(self)
-      
-      @scanner.instance_eval{@lex_state = EXPR_FNAME}
-      skip_tkspace(false)
-      name_t = get_tk
-      back_tk = skip_tkspace
-      meth = nil
-      added_container = false
-
-      dot = get_tk
-      if dot.kind_of?(TkDOT) or dot.kind_of?(TkCOLON2)
-	@scanner.instance_eval{@lex_state = EXPR_FNAME}
-	skip_tkspace
-	name_t2 = get_tk
-	case name_t
-	when TkSELF
-	  name = name_t2.name
-	when TkCONSTANT
-          name = name_t2.name
-          prev_container = container
-          container = container.find_module_named(name_t.name)
-          if !container
-            added_container = true
-            obj = name_t.name.split("::").inject(Object) do |state, item|
-              state.const_get(item)
-            end rescue nil
-
-            type = obj.class == Class ? NormalClass : NormalModule
-            if not [Class, Module].include?(obj.class)
-              warn("Couldn't find #{name_t.name}. Assuming it's a module")
-            end
-
-            if type == NormalClass then
-              container = prev_container.add_class(type, name_t.name, obj.superclass.name)
-            else
-              container = prev_container.add_module(type, name_t.name)
-            end
-          end
-	else
-	  # warn("Unexpected token '#{name_t2.inspect}'")
-	  # break
-          skip_method(container)
-          return
-	end
-	meth =  AnyMethod.new(get_tkread, name)
-        meth.singleton = true
-      else
-	unget_tk dot
-	back_tk.reverse_each do
-	  |tk|
-	  unget_tk tk
-	end
-	name = name_t.name
-
-        meth =  AnyMethod.new(get_tkread, name)
-        meth.singleton = (single == SINGLE)
-      end
-
-      remove_token_listener(self)
-
-      meth.start_collecting_tokens
-      indent = TkSPACE.new(1,1)
-      indent.set_text(" " * column)
-
-      meth.add_tokens([TkCOMMENT.new(line_no,
-                                     1,
-                                     "# File #{@top_level.file_absolute_name}, line #{line_no}"),
-                        NEWLINE_TOKEN,
-                        indent])
-
-      meth.add_tokens(@token_stream)
-
-      add_token_listener(meth)
-
-      @scanner.instance_eval{@continue = false}
-      parse_method_parameters(meth)
-
-      if meth.document_self
-        container.add_method(meth)
-      elsif added_container
-        container.document_self = false
-      end
-
-      # Having now read the method parameters and documentation modifiers, we
-      # now know whether we have to rename #initialize to ::new
-
-      if name == "initialize" && !meth.singleton
-        if meth.dont_rename_initialize
-          meth.visibility = :protected
-        else
-          meth.singleton = true
-          meth.name = "new"
-          meth.visibility = :public
-        end
-      end
-      
-      parse_statements(container, single, meth)
-      
-      remove_token_listener(meth)
-
-      # Look for a 'call-seq' in the comment, and override the
-      # normal parameter stuff
-
-      if comment.sub!(/:?call-seq:(.*?)^\s*\#?\s*$/m, '')
-        seq = $1
-        seq.gsub!(/^\s*\#\s*/, '')
-        meth.call_seq = seq
-      end
-      
-      meth.comment = comment
-
-    end
-    
-    def skip_method(container)
-      meth =  AnyMethod.new("", "anon")
-      parse_method_parameters(meth)
-      parse_statements(container, false, meth)
-    end
-    
-    # Capture the method's parameters. Along the way,
-    # look for a comment containing 
-    #
-    #    # yields: ....
-    #
-    # and add this as the block_params for the method
-
-    def parse_method_parameters(method)
-      res = parse_method_or_yield_parameters(method)
-      res = "(" + res + ")" unless res[0] == ?(
-      method.params = res unless method.params
-      if method.block_params.nil?
-          skip_tkspace(false)
-	  read_documentation_modifiers(method, METHOD_MODIFIERS)
-      end
-    end
-
-    def parse_method_or_yield_parameters(method=nil, modifiers=METHOD_MODIFIERS)
-      skip_tkspace(false)
-      tk = get_tk
-
-      # Little hack going on here. In the statement
-      #  f = 2*(1+yield)
-      # We see the RPAREN as the next token, so we need
-      # to exit early. This still won't catch all cases
-      # (such as "a = yield + 1"
-      end_token = case tk
-                  when TkLPAREN, TkfLPAREN
-                    TkRPAREN
-                  when TkRPAREN
-                    return ""
-                  else
-                    TkNL
-                  end
-      nest = 0
-
-      loop do
-        puts("Param: #{tk.inspect}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}")  if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLBRACE
-          nest += 1
-        when TkRBRACE
-          # we might have a.each {|i| yield i }
-          unget_tk(tk) if nest.zero?
-          nest -= 1
-          break if nest <= 0
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest <= 0
-          else
-            break unless @scanner.continue
-          end
-        when method && method.block_params.nil? && TkCOMMENT
-	  unget_tk(tk)
-	  read_documentation_modifiers(method, modifiers)
-        end
-        tk = get_tk
-      end
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      res
-    end
-
-    # skip the var [in] part of a 'for' statement
-    def skip_for_variable
-      skip_tkspace(false)
-      tk = get_tk
-      skip_tkspace(false)
-      tk = get_tk
-      unget_tk(tk) unless tk.kind_of?(TkIN)
-    end
-
-    # while, until, and for have an optional 
-    def skip_optional_do_after_expression
-      skip_tkspace(false)
-      tk = get_tk
-      case tk
-      when TkLPAREN, TkfLPAREN
-        end_token = TkRPAREN
-      else
-        end_token = TkNL
-      end
-
-      nest = 0
-      @scanner.instance_eval{@continue = false}
-
-      loop do
-        puts("\nWhile: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}") if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when TkDO
-          break if nest.zero?
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest.zero?
-          else
-            break unless @scanner.continue
-          end
-        end
-        tk = get_tk
-      end
-      skip_tkspace(false)
-      if peek_tk.kind_of? TkDO
-        get_tk
-      end
-    end
-    
-    # Return a superclass, which can be either a constant
-    # of an expression
-
-    def get_class_specification
-      tk = get_tk
-      return "self" if tk.kind_of?(TkSELF)
-        
-      res = ""
-      while tk.kind_of?(TkCOLON2) ||
-          tk.kind_of?(TkCOLON3)   ||
-          tk.kind_of?(TkCONSTANT)   
-        
-        res += tk.text
-        tk = get_tk
-      end
-
-      unget_tk(tk)
-      skip_tkspace(false)
-
-      get_tkread # empty out read buffer
-
-      tk = get_tk
-
-      case tk
-      when TkNL, TkCOMMENT, TkSEMICOLON
-        unget_tk(tk)
-        return res
-      end
-
-      res += parse_call_parameters(tk)
-      res
-    end
-
-    def parse_call_parameters(tk)
-
-      end_token = case tk
-                  when TkLPAREN, TkfLPAREN
-                    TkRPAREN
-                  when TkRPAREN
-                    return ""
-                  else
-                    TkNL
-                  end
-      nest = 0
-
-      loop do
-        puts("Call param: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}") if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest <= 0
-          else
-            break unless @scanner.continue
-          end
-        when TkCOMMENT
-	  unget_tk(tk)
-	  break
-        end
-        tk = get_tk
-      end
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      res
-    end
-
-
-    # Parse a constant, which might be qualified by
-    # one or more class or module names
-
-    def get_constant
-      res = ""
-      skip_tkspace(false)
-      tk = get_tk
-
-      while tk.kind_of?(TkCOLON2) ||
-          tk.kind_of?(TkCOLON3)   ||
-          tk.kind_of?(TkCONSTANT)          
-        
-        res += tk.text
-        tk = get_tk
-      end
-
-#      if res.empty?
-#        warn("Unexpected token #{tk} in constant")
-#      end 
-      unget_tk(tk)
-      res
-    end
-
-    # Get a constant that may be surrounded by parens
-    
-    def get_constant_with_optional_parens
-      skip_tkspace(false)
-      nest = 0
-      while (tk = peek_tk).kind_of?(TkLPAREN)  || tk.kind_of?(TkfLPAREN)
-        get_tk
-        skip_tkspace(true)
-        nest += 1
-      end
-
-      name = get_constant
-
-      while nest > 0
-        skip_tkspace(true)
-        tk = get_tk
-        nest -= 1 if tk.kind_of?(TkRPAREN)
-      end
-      name
-    end
-
-    # Directives are modifier comments that can appear after class, module,
-    # or method names. For example
-    #
-    #   def fred    # :yields:  a, b
-    #
-    # or
-    #
-    #   class SM  # :nodoc:
-    #
-    # we return the directive name and any parameters as a two element array
-    
-    def read_directive(allowed)
-      tk = get_tk
-      puts "directive: #{tk.inspect}" if $DEBUG
-      result = nil
-      if tk.kind_of?(TkCOMMENT) 
-        if tk.text =~ /\s*:?(\w+):\s*(.*)/
-          directive = $1.downcase
-          if allowed.include?(directive)
-            result = [directive, $2]
-          end
-        end
-      else
-        unget_tk(tk)
-      end
-      result
-    end
-
-    
-    def read_documentation_modifiers(context, allow)
-      dir = read_directive(allow)
-
-      case dir[0]
-
-      when "notnew", "not_new", "not-new"
-        context.dont_rename_initialize = true
-
-      when "nodoc"
-        context.document_self = false
-	if dir[1].downcase == "all"
-	  context.document_children = false
-	end
-
-      when "doc"
-        context.document_self = true
-        context.force_documentation = true
-
-      when "yield", "yields"
-        unless context.params.nil?
-          context.params.sub!(/(,|)\s*&\w+/,'') # remove parameter &proc
-        end
-	context.block_params = dir[1]
-
-      when "arg", "args"
-        context.params = dir[1]
-      end if dir
-    end
-
-    
-    # Look for directives in a normal comment block:
-    #
-    #   #--       - don't display comment from this point forward
-    #  
-    #
-    # This routine modifies it's parameter
-
-    def look_for_directives_in(context, comment)
-
-      preprocess = SM::PreProcess.new(@input_file_name,
-                                      @options.rdoc_include)
-
-      preprocess.handle(comment) do |directive, param|
-        case directive
-        when "stopdoc"
-          context.stop_doc
-          ""
-        when "startdoc"
-          context.start_doc
-          context.force_documentation = true
-          ""
-
-        when "enddoc"
-          #context.done_documenting = true
-          #""
-          throw :enddoc
-
-        when "main"
-          options = Options.instance
-          options.main_page = param
-	  ""
-
-        when "title"
-          options = Options.instance
-          options.title = param
-          ""
-
-        when "section"
-          context.set_current_section(param, comment)
-          comment.replace("") # 1.8 doesn't support #clear
-          break 
-        else
-          warn "Unrecognized directive '#{directive}'"
-          break
-        end
-      end
-
-      remove_private_comments(comment)
-    end
-
-    def remove_private_comments(comment)
-      comment.gsub!(/^#--.*?^#\+\+/m, '')
-      comment.sub!(/^#--.*/m, '')
-    end
-
-
-
-    def get_symbol_or_name
-      tk = get_tk
-      case tk
-      when  TkSYMBOL
-        tk.text.sub(/^:/, '')
-      when TkId, TkOp
-        tk.name
-      when TkSTRING
-        tk.text
-      else
-        raise "Name or symbol expected (got #{tk})"
-      end
-    end
-    
-    def parse_alias(context, single, tk, comment)
-      skip_tkspace
-      if (peek_tk.kind_of? TkLPAREN)
-        get_tk
-        skip_tkspace
-      end
-      new_name = get_symbol_or_name
-      @scanner.instance_eval{@lex_state = EXPR_FNAME}
-      skip_tkspace
-      if (peek_tk.kind_of? TkCOMMA)
-        get_tk
-        skip_tkspace
-      end
-      old_name = get_symbol_or_name
-
-      al = Alias.new(get_tkread, old_name, new_name, comment)
-      read_documentation_modifiers(al, ATTR_MODIFIERS)
-      if al.document_self
-	context.add_alias(al)
-      end
-    end
-
-    def parse_yield_parameters
-      parse_method_or_yield_parameters
-    end
-
-  def parse_yield(context, single, tk, method)
-    if method.block_params.nil?
-      get_tkread
-      @scanner.instance_eval{@continue = false}
-      method.block_params = parse_yield_parameters
-    end
-  end
-
-  def parse_require(context, comment)
-    skip_tkspace_comment
-    tk = get_tk
-    if tk.kind_of? TkLPAREN
-      skip_tkspace_comment
-      tk = get_tk
-    end
-
-    name = nil
-    case tk
-    when TkSTRING
-      name = tk.text
-#    when TkCONSTANT, TkIDENTIFIER, TkIVAR, TkGVAR
-#      name = tk.name
-    when TkDSTRING
-      warn "Skipping require of dynamic string: #{tk.text}"
- #   else
- #     warn "'require' used as variable"
-    end
-    if name
-      context.add_require(Require.new(name, comment))
-    else
-      unget_tk(tk)
-    end
-  end
-
-  def parse_include(context, comment)
-    loop do
-      skip_tkspace_comment
-      name = get_constant_with_optional_parens
-      unless name.empty?
-        context.add_include(Include.new(name, comment))
-      end
-      return unless peek_tk.kind_of?(TkCOMMA)
-      get_tk
-    end
-  end
-
-    def get_bool
-      skip_tkspace
-      tk = get_tk
-      case tk
-      when TkTRUE
-        true
-      when TkFALSE, TkNIL
-        false
-      else
-        unget_tk tk
-        true
-      end
-    end
-
-    def parse_attr(context, single, tk, comment)
-      args = parse_symbol_arg(1)
-      if args.size > 0
-	name = args[0]
-        rw = "R"
-        skip_tkspace(false)
-        tk = get_tk
-        if tk.kind_of? TkCOMMA
-          rw = "RW" if get_bool
-        else
-          unget_tk tk
-        end
-	att = Attr.new(get_tkread, name, rw, comment)
-	read_documentation_modifiers(att, ATTR_MODIFIERS)
-	if att.document_self
-	  context.add_attribute(att)
-	end
-      else
-	warn("'attr' ignored - looks like a variable")
-      end    
-
-    end
-
-    def parse_visibility(container, single, tk)
-      singleton = (single == SINGLE)
-      vis = case tk.name
-            when "private"   then :private
-            when "protected" then :protected
-            when "public"    then :public
-            when "private_class_method"
-              singleton = true
-              :private
-            when "public_class_method"
-              singleton = true
-              :public
-            else raise "Invalid visibility: #{tk.name}"
-            end
-            
-      skip_tkspace_comment(false)
-      case peek_tk
-        # Ryan Davis suggested the extension to ignore modifiers, because he
-        # often writes
-        #
-        #   protected unless $TESTING
-        #
-      when TkNL, TkUNLESS_MOD, TkIF_MOD
-#        error("Missing argument") if singleton        
-        container.ongoing_visibility = vis
-      else
-        args = parse_symbol_arg
-        container.set_visibility_for(args, vis, singleton)
-      end
-    end
-
-    def parse_attr_accessor(context, single, tk, comment)
-      args = parse_symbol_arg
-      read = get_tkread
-      rw = "?"
-
-      # If nodoc is given, don't document any of them
-
-      tmp = CodeObject.new
-      read_documentation_modifiers(tmp, ATTR_MODIFIERS)
-      return unless tmp.document_self
-
-      case tk.name
-      when "attr_reader"   then rw = "R"
-      when "attr_writer"   then rw = "W"
-      when "attr_accessor" then rw = "RW"
-      else
-        rw = @options.extra_accessor_flags[tk.name]
-      end
-      
-      for name in args
-	att = Attr.new(get_tkread, name, rw, comment)
-        context.add_attribute(att)
-      end    
-    end
-
-    def skip_tkspace_comment(skip_nl = true)
-      loop do
-        skip_tkspace(skip_nl)
-        return unless peek_tk.kind_of? TkCOMMENT
-        get_tk
-      end
-    end
-
-    def parse_symbol_arg(no = nil)
-
-      args = []
-      skip_tkspace_comment
-      case tk = get_tk
-      when TkLPAREN
-	loop do
-	  skip_tkspace_comment
-	  if tk1 = parse_symbol_in_arg
-	    args.push tk1
-	    break if no and args.size >= no
-	  end
-	  
-	  skip_tkspace_comment
-	  case tk2 = get_tk
-	  when TkRPAREN
-	    break
-	  when TkCOMMA
-	  else
-           warn("unexpected token: '#{tk2.inspect}'") if $DEBUG
-	    break
-	  end
-	end
-      else
-	unget_tk tk
-	if tk = parse_symbol_in_arg
-	  args.push tk
-	  return args if no and args.size >= no
-	end
-
-	loop do
-#	  skip_tkspace_comment(false)
-	  skip_tkspace(false)
-
-	  tk1 = get_tk
-	  unless tk1.kind_of?(TkCOMMA) 
-	    unget_tk tk1
-	    break
-	  end
-	  
-	  skip_tkspace_comment
-	  if tk = parse_symbol_in_arg
-	    args.push tk
-	    break if no and args.size >= no
-	  end
-	end
-      end
-      args
-    end
-
-    def parse_symbol_in_arg
-      case tk = get_tk
-      when TkSYMBOL
-        tk.text.sub(/^:/, '')
-      when TkSTRING
-	eval @read[-1]
-      else
-	warn("Expected symbol or string, got #{tk.inspect}") if $DEBUG
-	nil
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_simple.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_simple.rb
deleted file mode 100644
index 3f1a546..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parse_simple.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# Parse a non-source file. We basically take the whole thing 
-# as one big comment. If the first character in the file
-# is '#', we strip leading pound signs.
-
-
-require "rdoc/code_objects"
-require "rdoc/markup/simple_markup/preprocess"
-
-module RDoc
-  # See rdoc/parsers/parse_c.rb
-
-  class SimpleParser
-    
-    # prepare to parse a plain file
-    def initialize(top_level, file_name, body, options, stats)
-      
-      preprocess = SM::PreProcess.new(file_name, options.rdoc_include)
-      
-      preprocess.handle(body) do |directive, param|
-        $stderr.puts "Unrecognized directive '#{directive}' in #{file_name}"
-      end
-      
-      @body = body
-      @options = options
-      @top_level = top_level
-    end
-    
-    # Extract the file contents and attach them to the toplevel as a
-    # comment
-    
-    def scan
-      #    @body.gsub(/^(\s\n)+/, '')
-      @top_level.comment = remove_private_comments(@body)
-      @top_level
-    end
-
-    def remove_private_comments(comment)
-      comment.gsub(/^--.*?^\+\+/m, '').sub(/^--.*/m, '')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parserfactory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parserfactory.rb
deleted file mode 100644
index 00a82cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/parsers/parserfactory.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require "rdoc/parsers/parse_simple"
-
-module RDoc
-
-  # A parser is simple a class that implements
-  #
-  #   #initialize(file_name, body, options)
-  #
-  # and
-  #
-  #   #scan
-  #
-  # The initialize method takes a file name to be used, the body of the
-  # file, and an RDoc::Options object. The scan method is then called
-  # to return an appropriately parsed TopLevel code object.
-  #
-  # The ParseFactory is used to redirect to the correct parser given a filename
-  # extension. This magic works because individual parsers have to register 
-  # themselves with us as they are loaded in. The do this using the following
-  # incantation
-  #
-  #
-  #    require "rdoc/parsers/parsefactory"
-  #    
-  #    module RDoc
-  #    
-  #      class XyzParser
-  #        extend ParseFactory                  <<<<
-  #        parse_files_matching /\.xyz$/        <<<<
-  #    
-  #        def initialize(file_name, body, options)
-  #          ...
-  #        end
-  #    
-  #        def scan
-  #          ...
-  #        end
-  #      end
-  #    end
-  #
-  # Just to make life interesting, if we suspect a plain text file, we
-  # also look for a shebang line just in case it's a potential
-  # shell script
-
-
-
-  module ParserFactory
-
-    @@parsers = []
-
-    Parsers = Struct.new(:regexp, :parser)
-
-    # Record the fact that a particular class parses files that
-    # match a given extension
-
-    def parse_files_matching(regexp)
-      @@parsers.unshift Parsers.new(regexp, self)
-    end
-
-    # Return a parser that can handle a particular extension
-
-    def ParserFactory.can_parse(file_name)
-      @@parsers.find {|p| p.regexp.match(file_name) }
-    end
-
-    # Alias an extension to another extension. After this call,
-    # files ending "new_ext" will be parsed using the same parser
-    # as "old_ext"
-
-    def ParserFactory.alias_extension(old_ext, new_ext)
-      parser = ParserFactory.can_parse("xxx.#{old_ext}")
-      return false unless parser
-      @@parsers.unshift Parsers.new(Regexp.new("\\.#{new_ext}$"), parser.parser)
-      true
-    end
-
-    # Find the correct parser for a particular file name. Return a 
-    # SimpleParser for ones that we don't know
-
-    def ParserFactory.parser_for(top_level, file_name, body, options, stats)
-      # If no extension, look for shebang
-      if file_name !~ /\.\w+$/ && body =~ %r{\A#!(.+)}
-        shebang = $1
-        case shebang
-        when %r{env\s+ruby}, %r{/ruby}
-          file_name = "dummy.rb"
-        end
-      end
-      parser_description = can_parse(file_name)
-      if parser_description
-        parser = parser_description.parser 
-      else
-        parser = SimpleParser
-      end
-
-      parser.new(top_level, file_name, body, options, stats)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/rdoc.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/rdoc.rb
deleted file mode 100644
index 91f5611..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/rdoc.rb
+++ /dev/null
@@ -1,298 +0,0 @@
-# See README.
-#
- 
-
-VERSION_STRING = %{RDoc V1.0.1 - 20041108}
-
-
-require 'rdoc/parsers/parse_rb.rb'
-require 'rdoc/parsers/parse_c.rb'
-require 'rdoc/parsers/parse_f95.rb'
-
-require 'rdoc/parsers/parse_simple.rb'
-require 'rdoc/options'
-
-require 'rdoc/diagram'
-
-require 'find'
-require 'ftools'
-require 'time'
-
-# We put rdoc stuff in the RDoc module to avoid namespace
-# clutter.
-#
-# ToDo: This isn't universally true.
-#
-# :include: README
-
-module RDoc
-
-  # Name of the dotfile that contains the description of files to be
-  # processed in the current directory
-  DOT_DOC_FILENAME = ".document"
-
-  # Simple stats collector
-  class Stats
-    attr_accessor :num_files, :num_classes, :num_modules, :num_methods
-    def initialize
-      @num_files = @num_classes = @num_modules = @num_methods = 0
-      @start = Time.now
-    end
-    def print
-      puts "Files:   #@num_files"
-      puts "Classes: #@num_classes"
-      puts "Modules: #@num_modules"
-      puts "Methods: #@num_methods"
-      puts "Elapsed: " + sprintf("%0.3fs", Time.now - @start)
-    end
-  end
-
-
-  # Exception thrown by any rdoc error. Only the #message part is
-  # of use externally.
-
-  class RDocError < Exception
-  end
-
-  # Encapsulate the production of rdoc documentation. Basically
-  # you can use this as you would invoke rdoc from the command
-  # line:
-  #
-  #    rdoc = RDoc::RDoc.new
-  #    rdoc.document(args)
-  #
-  # where _args_ is an array of strings, each corresponding to
-  # an argument you'd give rdoc on the command line. See rdoc/rdoc.rb 
-  # for details.
-  
-  class RDoc
-
-    ##
-    # This is the list of output generators that we
-    # support
-    
-    Generator = Struct.new(:file_name, :class_name, :key)
-    
-    GENERATORS = {}
-    $:.collect {|d|
-      File::expand_path(d)
-    }.find_all {|d|
-      File::directory?("#{d}/rdoc/generators")
-    }.each {|dir|
-      Dir::entries("#{dir}/rdoc/generators").each {|gen|
-        next unless /(\w+)_generator.rb$/ =~ gen
-        type = $1
-        unless GENERATORS.has_key? type
-          GENERATORS[type] = Generator.new("rdoc/generators/#{gen}",
-                                           "#{type.upcase}Generator".intern,
-                                           type)
-        end
-      }
-    }                                                    
-
-    #######
-    private
-    #######
-
-    ##
-    # Report an error message and exit
-    
-    def error(msg)
-      raise RDocError.new(msg)
-    end
-    
-    ##
-    # Create an output dir if it doesn't exist. If it does
-    # exist, but doesn't contain the flag file <tt>created.rid</tt>
-    # then we refuse to use it, as we may clobber some
-    # manually generated documentation
-    
-    def setup_output_dir(op_dir, force)
-      flag_file = output_flag_file(op_dir)
-      if File.exist?(op_dir)
-        unless File.directory?(op_dir)
-          error "'#{op_dir}' exists, and is not a directory" 
-        end
-        begin
-          created = File.read(flag_file)
-        rescue SystemCallError
-          error "\nDirectory #{op_dir} already exists, but it looks like it\n" +
-            "isn't an RDoc directory. Because RDoc doesn't want to risk\n" +
-            "destroying any of your existing files, you'll need to\n" +
-            "specify a different output directory name (using the\n" +
-            "--op <dir> option).\n\n"
-        else
-          last = (Time.parse(created) unless force rescue nil)
-        end
-      else
-        File.makedirs(op_dir)
-      end
-      last
-    end
-
-    # Update the flag file in an output directory.
-    def update_output_dir(op_dir, time)
-      File.open(output_flag_file(op_dir), "w") {|f| f.puts time.rfc2822 }
-    end
-
-    # Return the path name of the flag file in an output directory.
-    def output_flag_file(op_dir)
-      File.join(op_dir, "created.rid")
-    end
-
-    # The .document file contains a list of file and directory name
-    # patterns, representing candidates for documentation. It may
-    # also contain comments (starting with '#')
-    def parse_dot_doc_file(in_dir, filename, options)
-      # read and strip comments
-      patterns = File.read(filename).gsub(/#.*/, '')
-
-      result = []
-
-      patterns.split.each do |patt|
-        candidates = Dir.glob(File.join(in_dir, patt))
-        result.concat(normalized_file_list(options,  candidates))
-      end
-      result
-    end
-
-
-    # Given a list of files and directories, create a list
-    # of all the Ruby files they contain. 
-    #
-    # If +force_doc+ is true, we always add the given files.
-    # If false, only add files that we guarantee we can parse
-    # It is true when looking at files given on the command line,
-    # false when recursing through subdirectories. 
-    #
-    # The effect of this is that if you want a file with a non-
-    # standard extension parsed, you must name it explicity.
-    #
-
-    def normalized_file_list(options, relative_files, force_doc = false, exclude_pattern=nil)
-      file_list = []
-
-      relative_files.each do |rel_file_name|
-        next if exclude_pattern && exclude_pattern =~ rel_file_name
-        stat = File.stat(rel_file_name)
-        case type = stat.ftype
-        when "file"
-          next if @last_created and stat.mtime < @last_created
-          file_list << rel_file_name.sub(/^\.\//, '') if force_doc || ParserFactory.can_parse(rel_file_name)
-        when "directory"
-          next if rel_file_name == "CVS" || rel_file_name == ".svn"
-          dot_doc = File.join(rel_file_name, DOT_DOC_FILENAME)
-          if File.file?(dot_doc)
-            file_list.concat(parse_dot_doc_file(rel_file_name, dot_doc, options))
-          else
-            file_list.concat(list_files_in_directory(rel_file_name, options))
-          end
-        else
-          raise RDocError.new("I can't deal with a #{type} #{rel_file_name}")
-        end
-      end
-      file_list
-    end
-
-    # Return a list of the files to be processed in
-    # a directory. We know that this directory doesn't have
-    # a .document file, so we're looking for real files. However
-    # we may well contain subdirectories which must
-    # be tested for .document files
-    def list_files_in_directory(dir, options)
-      normalized_file_list(options, Dir.glob(File.join(dir, "*")), false, options.exclude)
-    end
-
-
-    # Parse each file on the command line, recursively entering
-    # directories
-
-    def parse_files(options)
- 
-      file_info = []
-
-      files = options.files
-      files = ["."] if files.empty?
-
-      file_list = normalized_file_list(options, files, true)
-
-      file_list.each do |fn|
-        $stderr.printf("\n%35s: ", File.basename(fn)) unless options.quiet
-        
-        content = File.open(fn, "r") {|f| f.read}
-
-        top_level = TopLevel.new(fn)
-        parser = ParserFactory.parser_for(top_level, fn, content, options, @stats)
-        file_info << parser.scan
-        @stats.num_files += 1
-      end
-
-      file_info
-    end
-
-
-    public
-
-    ###################################################################
-    #
-    # Format up one or more files according to the given arguments.
-    # For simplicity, _argv_ is an array of strings, equivalent to the
-    # strings that would be passed on the command line. (This isn't a
-    # coincidence, as we _do_ pass in ARGV when running
-    # interactively). For a list of options, see rdoc/rdoc.rb. By
-    # default, output will be stored in a directory called +doc+ below
-    # the current directory, so make sure you're somewhere writable
-    # before invoking.
-    #
-    # Throws: RDocError on error
-
-    def document(argv)
-
-      TopLevel::reset
-
-      @stats = Stats.new
-
-      options = Options.instance
-      options.parse(argv, GENERATORS)
-
-      @last_created = nil
-      unless options.all_one_file
-        @last_created = setup_output_dir(options.op_dir, options.force_update)
-      end
-      start_time = Time.now
-
-      file_info = parse_files(options)
-
-      if file_info.empty?
-        $stderr.puts "\nNo newer files." unless options.quiet
-      else
-        gen = options.generator
-
-        $stderr.puts "\nGenerating #{gen.key.upcase}..." unless options.quiet
-
-        require gen.file_name
-
-        gen_class = Generators.const_get(gen.class_name)
-        gen = gen_class.for(options)
-
-        pwd = Dir.pwd
-
-        Dir.chdir(options.op_dir)  unless options.all_one_file
-
-        begin
-          Diagram.new(file_info, options).draw if options.diagram
-          gen.generate(file_info)
-          update_output_dir(".", start_time)
-        ensure
-          Dir.chdir(pwd)
-        end
-      end
-
-      unless options.quiet
-        puts
-        @stats.print
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_cache.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_cache.rb
deleted file mode 100644
index 1844ac9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_cache.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-module RI
-
-  class ClassEntry
-
-    attr_reader :name
-    attr_reader :path_names
-    
-    def initialize(path_name, name, in_class)
-      @path_names = [ path_name ]
-      @name = name
-      @in_class = in_class
-      @class_methods    = []
-      @instance_methods = []
-      @inferior_classes = []
-    end
-
-    # We found this class in more tha one place, so add
-    # in the name from there.
-    def add_path(path)
-      @path_names << path
-    end
-
-    # read in our methods and any classes
-    # and modules in our namespace. Methods are
-    # stored in files called name-c|i.yaml,
-    # where the 'name' portion is the external
-    # form of the method name and the c|i is a class|instance
-    # flag
-
-    def load_from(dir)
-      Dir.foreach(dir) do |name|
-        next if name =~ /^\./
-
-        # convert from external to internal form, and
-        # extract the instance/class flag
-
-        if name =~ /^(.*?)-(c|i).yaml$/
-          external_name = $1
-          is_class_method = $2 == "c"
-          internal_name = RiWriter.external_to_internal(external_name)
-          list = is_class_method ? @class_methods : @instance_methods
-          path = File.join(dir, name)
-          list << MethodEntry.new(path, internal_name, is_class_method, self)
-        else
-          full_name = File.join(dir, name)
-          if File.directory?(full_name)
-            inf_class = @inferior_classes.find {|c| c.name == name }
-            if inf_class
-              inf_class.add_path(full_name)
-            else
-              inf_class = ClassEntry.new(full_name, name, self)
-              @inferior_classes << inf_class
-            end
-            inf_class.load_from(full_name)
-          end
-        end
-      end
-    end
-
-    # Return a list of any classes or modules that we contain
-    # that match a given string
-
-    def contained_modules_matching(name)
-      @inferior_classes.find_all {|c| c.name[name]}
-    end
-
-    def classes_and_modules
-      @inferior_classes
-    end
-
-    # Return an exact match to a particular name
-    def contained_class_named(name)
-      @inferior_classes.find {|c| c.name == name}
-    end
-
-    # return the list of local methods matching name
-    # We're split into two because we need distinct behavior
-    # when called from the _toplevel_
-    def methods_matching(name, is_class_method)
-      local_methods_matching(name, is_class_method)
-    end
-
-    # Find methods matching 'name' in ourselves and in
-    # any classes we contain
-    def recursively_find_methods_matching(name, is_class_method)
-      res = local_methods_matching(name, is_class_method)
-      @inferior_classes.each do |c|
-        res.concat(c.recursively_find_methods_matching(name, is_class_method))
-      end
-      res
-    end
-
-
-    # Return our full name
-    def full_name
-      res = @in_class.full_name
-      res << "::" unless res.empty?
-      res << @name
-    end
-
-    # Return a list of all out method names
-    def all_method_names
-      res = @class_methods.map {|m| m.full_name }
-      @instance_methods.each {|m| res << m.full_name}
-      res
-    end
-
-    private
-
-    # Return a list of all our methods matching a given string.
-    # Is +is_class_methods+ if 'nil', we don't care if the method
-    # is a class method or not, otherwise we only return
-    # those methods that match
-    def local_methods_matching(name, is_class_method)
-
-      list = case is_class_method
-             when nil then  @class_methods + @instance_methods
-             when true then @class_methods
-             when false then @instance_methods
-             else fail "Unknown is_class_method: #{is_class_method.inspect}"
-             end
-
-      list.find_all {|m| m.name;  m.name[name]}
-    end
-  end
-
-  # A TopLevelEntry is like a class entry, but when asked to search
-  # for methods searches all classes, not just itself
-
-  class TopLevelEntry < ClassEntry
-    def methods_matching(name, is_class_method)
-      res = recursively_find_methods_matching(name, is_class_method)
-    end
-
-    def full_name
-      ""
-    end
-
-    def module_named(name)
-      
-    end
-
-  end
-
-  class MethodEntry
-    attr_reader :name
-    attr_reader :path_name
-
-    def initialize(path_name, name, is_class_method, in_class)
-      @path_name = path_name
-      @name = name
-      @is_class_method = is_class_method
-      @in_class = in_class
-    end
-
-    def full_name
-      res = @in_class.full_name
-      unless res.empty?
-        if @is_class_method
-          res << "::"
-        else
-          res << "#"
-        end
-      end
-      res << @name
-    end
-  end
-
-  # We represent everything know about all 'ri' files
-  # accessible to this program
-
-  class RiCache
-
-    attr_reader :toplevel
-
-    def initialize(dirs)
-      # At the top level we have a dummy module holding the
-      # overall namespace
-      @toplevel = TopLevelEntry.new('', '::', nil)
-
-      dirs.each do |dir|
-        @toplevel.load_from(dir)
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_descriptions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_descriptions.rb
deleted file mode 100644
index e5ea9f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_descriptions.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require 'yaml'
-require 'rdoc/markup/simple_markup/fragments'
-
-# Descriptions are created by RDoc (in ri_generator) and
-# written out in serialized form into the documentation
-# tree. ri then reads these to generate the documentation
-
-module RI
-  class NamedThing
-    attr_reader :name
-    def initialize(name)
-      @name = name
-    end
-    def <=>(other)
-      @name <=> other.name
-    end
-
-    def hash
-      @name.hash
-    end
-
-    def eql?(other)
-      @name.eql?(other)
-    end
-  end
-
-#  Alias          = Struct.new(:old_name, :new_name)
-
-  class AliasName < NamedThing
-  end
-
-  class Attribute < NamedThing
-    attr_reader :rw, :comment
-    def initialize(name, rw, comment)
-      super(name)
-      @rw = rw
-      @comment = comment
-    end
-  end
-
-  class Constant < NamedThing
-    attr_reader :value, :comment
-    def initialize(name, value, comment)
-      super(name)
-      @value = value
-      @comment = comment
-    end
-  end
-
-  class IncludedModule < NamedThing
-  end
-
-
-  class MethodSummary < NamedThing
-    def initialize(name="")
-      super
-    end
-  end
-
-
-
-  class Description
-    attr_accessor :name
-    attr_accessor :full_name
-    attr_accessor :comment
-
-    def serialize
-      self.to_yaml
-    end
-
-    def Description.deserialize(from)
-      YAML.load(from)
-    end
-
-    def <=>(other)
-      @name <=> other.name
-    end
-  end
-  
-  class ModuleDescription < Description
-    
-    attr_accessor :class_methods
-    attr_accessor :instance_methods
-    attr_accessor :attributes
-    attr_accessor :constants
-    attr_accessor :includes
-
-    # merge in another class desscription into this one
-    def merge_in(old)
-      merge(@class_methods, old.class_methods)
-      merge(@instance_methods, old.instance_methods)
-      merge(@attributes, old.attributes)
-      merge(@constants, old.constants)
-      merge(@includes, old.includes)
-      if @comment.nil? || @comment.empty?
-        @comment = old.comment
-      else
-        unless old.comment.nil? or old.comment.empty? then
-          @comment << SM::Flow::RULE.new
-          @comment.concat old.comment
-        end
-      end
-    end
-
-    def display_name
-      "Module"
-    end
-
-    # the 'ClassDescription' subclass overrides this
-    # to format up the name of a parent
-    def superclass_string
-      nil
-    end
-
-    private
-
-    def merge(into, from)
-      names = {}
-      into.each {|i| names[i.name] = i }
-      from.each {|i| names[i.name] = i }
-      into.replace(names.keys.sort.map {|n| names[n]})
-    end
-  end
-  
-  class ClassDescription < ModuleDescription
-    attr_accessor :superclass
-
-    def display_name
-      "Class"
-    end
-
-    def superclass_string
-      if @superclass && @superclass != "Object"
-        @superclass
-      else
-        nil
-      end
-    end
-  end
-
-
-  class MethodDescription < Description
-    
-    attr_accessor :is_class_method
-    attr_accessor :visibility
-    attr_accessor :block_params
-    attr_accessor :is_singleton
-    attr_accessor :aliases
-    attr_accessor :is_alias_for
-    attr_accessor :params
-
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_display.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_display.rb
deleted file mode 100644
index 67962fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_display.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-require 'rdoc/ri/ri_util'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-
-# This is a kind of 'flag' module. If you want to write your
-# own 'ri' display module (perhaps because you'r writing
-# an IDE or somesuch beast), you simply write a class
-# which implements the various 'display' methods in 'DefaultDisplay',
-# and include the 'RiDisplay' module in that class. 
-#
-# To access your class from the command line, you can do
-#
-#    ruby -r <your source file>  ../ri ....
-#
-# If folks _really_ want to do this from the command line,
-# I'll build an option in
-
-module RiDisplay
-  @@display_class = nil
-
-  def RiDisplay.append_features(display_class)
-    @@display_class = display_class
-  end
-
-  def RiDisplay.new(*args)
-    @@display_class.new(*args)
-  end
-end
-
-######################################################################
-#
-# A paging display module. Uses the ri_formatter class to do the
-# actual presentation
-#
-
-class  DefaultDisplay
-
-  include RiDisplay
-
-  def initialize(options)
-    @options = options
-    @formatter = @options.formatter.new(@options, "     ")
-  end    
-  
-  
-  ######################################################################
-  
-  def display_usage
-    page do
-      RI::Options::OptionList.usage(short_form=true)
-    end
-  end
-
-
-  ######################################################################
-  
-  def display_method_info(method)
-    page do
-      @formatter.draw_line(method.full_name)
-      display_params(method)
-      @formatter.draw_line
-      display_flow(method.comment)
-      if method.aliases && !method.aliases.empty?
-        @formatter.blankline
-        aka = "(also known as "
-        aka << method.aliases.map {|a| a.name }.join(", ") 
-        aka << ")"
-        @formatter.wrap(aka)
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  def display_class_info(klass, ri_reader)
-    page do 
-      superclass = klass.superclass_string
-      
-      if superclass
-        superclass = " < " + superclass
-      else
-        superclass = ""
-      end
-      
-      @formatter.draw_line(klass.display_name + ": " +
-                           klass.full_name + superclass)
-      
-      display_flow(klass.comment)
-      @formatter.draw_line 
-    
-      unless klass.includes.empty?
-        @formatter.blankline
-        @formatter.display_heading("Includes:", 2, "")
-        incs = []
-        klass.includes.each do |inc|
-          inc_desc = ri_reader.find_class_by_name(inc.name)
-          if inc_desc
-            str = inc.name + "("
-            str << inc_desc.instance_methods.map{|m| m.name}.join(", ")
-            str << ")"
-            incs << str
-          else
-            incs << inc.name
-          end
-      end
-        @formatter.wrap(incs.sort.join(', '))
-      end
-      
-      unless klass.constants.empty?
-        @formatter.blankline
-        @formatter.display_heading("Constants:", 2, "")
-        len = 0
-        klass.constants.each { |c| len = c.name.length if c.name.length > len }
-        len += 2
-        klass.constants.each do |c|
-          @formatter.wrap(c.value, 
-                          @formatter.indent+((c.name+":").ljust(len)))
-        end 
-      end
-      
-      unless klass.class_methods.empty?
-        @formatter.blankline
-        @formatter.display_heading("Class methods:", 2, "")
-        @formatter.wrap(klass.class_methods.map{|m| m.name}.sort.join(', '))
-      end
-      
-      unless klass.instance_methods.empty?
-        @formatter.blankline
-        @formatter.display_heading("Instance methods:", 2, "")
-        @formatter.wrap(klass.instance_methods.map{|m| m.name}.sort.join(', '))
-      end
-      
-      unless klass.attributes.empty?
-        @formatter.blankline
-        @formatter.wrap("Attributes:", "")
-        @formatter.wrap(klass.attributes.map{|a| a.name}.sort.join(', '))
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  # Display a list of method names
-  
-  def display_method_list(methods)
-    page do
-      puts "More than one method matched your request. You can refine"
-      puts "your search by asking for information on one of:\n\n"
-      @formatter.wrap(methods.map {|m| m.full_name} .join(", "))
-    end
-  end
-  
-  ######################################################################
-  
-  def display_class_list(namespaces)
-    page do
-      puts "More than one class or module matched your request. You can refine"
-      puts "your search by asking for information on one of:\n\n"
-      @formatter.wrap(namespaces.map {|m| m.full_name}.join(", "))
-    end
-  end
-  
-  ######################################################################
-
-  def list_known_classes(classes)
-    if classes.empty?
-      warn_no_database
-    else
-      page do 
-        @formatter.draw_line("Known classes and modules")
-        @formatter.blankline
-        @formatter.wrap(classes.sort.join(", "))
-      end
-    end
-  end
-
-  ######################################################################
-
-  def list_known_names(names)
-    if names.empty?
-      warn_no_database
-    else
-      page do 
-        names.each {|n| @formatter.raw_print_line(n)}
-      end
-    end
-  end
-
-  ######################################################################
-
-  private
-
-  ######################################################################
-
-  def page
-    return yield unless pager = setup_pager
-    begin
-      save_stdout = STDOUT.clone
-      STDOUT.reopen(pager)
-      yield
-    ensure
-      STDOUT.reopen(save_stdout)
-      save_stdout.close
-      pager.close
-    end
-  end
-
-  ######################################################################
-
-  def setup_pager
-    unless @options.use_stdout
-      for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
-        return IO.popen(pager, "w") rescue nil
-      end
-      @options.use_stdout = true
-      nil
-    end
-  end
-
-  ######################################################################
-  
-  def display_params(method)
-
-    params = method.params
-
-    if params[0,1] == "("
-      if method.is_singleton
-        params = method.full_name + params
-      else
-        params = method.name + params
-      end
-    end
-    params.split(/\n/).each do |p|
-      @formatter.wrap(p) 
-      @formatter.break_to_newline
-    end
-  end
-  ######################################################################
-  
-  def display_flow(flow)
-    if !flow || flow.empty?
-      @formatter.wrap("(no description...)")
-    else
-      @formatter.display_flow(flow)
-    end
-  end
-
-  ######################################################################
-  
-  def warn_no_database
-    puts "Before using ri, you need to generate documentation"
-    puts "using 'rdoc' with the --ri option"
-  end
-end  # class RiDisplay
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_driver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_driver.rb
deleted file mode 100644
index a00f20e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_driver.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-require 'rdoc/ri/ri_paths'
-require 'rdoc/usage'
-require 'rdoc/ri/ri_cache'
-require 'rdoc/ri/ri_util'
-require 'rdoc/ri/ri_reader'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-
-######################################################################
-
-class  RiDriver
-
-  def initialize
-    @options = RI::Options.instance
-
-    args = ARGV
-    if ENV["RI"]
-      args = ENV["RI"].split.concat(ARGV)
-    end
-
-    @options.parse(args)
-
-    path = @options.path
-    report_missing_documentation @options.raw_path if path.empty?
-
-    @ri_reader = RI::RiReader.new(RI::RiCache.new(path))
-    @display   = @options.displayer
-  end
-  
-  # Couldn't find documentation in +path+, so tell the user what to do
-
-  def report_missing_documentation(path)
-    STDERR.puts "No ri documentation found in:"
-    path.each do |d|
-      STDERR.puts "     #{d}"
-    end
-    STDERR.puts "\nWas rdoc run to create documentation?\n\n"
-    RDoc::usage("Installing Documentation")
-  end
-  
-  ######################################################################
-  
-  # If the list of matching methods contains exactly one entry, or
-  # if it contains an entry that exactly matches the requested method,
-  # then display that entry, otherwise display the list of
-  # matching method names
-  
-  def report_method_stuff(requested_method_name, methods)
-    if methods.size == 1
-      method = @ri_reader.get_method(methods[0])
-      @display.display_method_info(method)
-    else
-      entries = methods.find_all {|m| m.name == requested_method_name}
-      if entries.size == 1
-        method = @ri_reader.get_method(entries[0])
-        @display.display_method_info(method)
-      else
-        @display.display_method_list(methods)
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  def report_class_stuff(namespaces)
-    if namespaces.size == 1
-      klass = @ri_reader.get_class(namespaces[0])
-      @display.display_class_info(klass, @ri_reader)
-    else 
-#      entries = namespaces.find_all {|m| m.full_name == requested_class_name}
-#      if entries.size == 1
-#        klass = @ri_reader.get_class(entries[0])
-#        @display.display_class_info(klass, @ri_reader)
-#      else
-        @display.display_class_list(namespaces)
-#      end
-    end
-  end
-  
-  ######################################################################
-  
-  
-  def get_info_for(arg)
-    desc = NameDescriptor.new(arg)
-
-    namespaces = @ri_reader.top_level_namespace
-    
-    for class_name in desc.class_names
-      namespaces = @ri_reader.lookup_namespace_in(class_name, namespaces)
-      if namespaces.empty?
-        raise RiError.new("Nothing known about #{arg}")
-      end
-    end
-
-    # at this point, if we have multiple possible namespaces, but one
-    # is an exact match for our requested class, prune down to just it
-
-    full_class_name = desc.full_class_name
-    entries = namespaces.find_all {|m| m.full_name == full_class_name}
-    namespaces = entries if entries.size == 1
-
-    if desc.method_name.nil?
-      report_class_stuff(namespaces)
-    else
-      methods = @ri_reader.find_methods(desc.method_name, 
-                                        desc.is_class_method,
-                                        namespaces)
-
-      if methods.empty?
-        raise RiError.new("Nothing known about #{arg}")
-      else
-        report_method_stuff(desc.method_name, methods)
-      end
-    end
-  end
-
-  ######################################################################
-
-  def process_args
-    if @options.list_classes
-      classes = @ri_reader.full_class_names
-      @display.list_known_classes(classes)
-    elsif @options.list_names
-      names = @ri_reader.all_names
-      @display.list_known_names(names)
-    else
-      if ARGV.size.zero?
-        @display.display_usage
-      else
-        begin
-          ARGV.each do |arg|
-            get_info_for(arg)
-          end
-        rescue RiError => e
-          STDERR.puts(e.message)
-          exit(1)
-        end
-      end
-    end
-  end
-
-end  # class RiDriver
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_formatter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_formatter.rb
deleted file mode 100644
index 34eb561..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_formatter.rb
+++ /dev/null
@@ -1,672 +0,0 @@
-module RI
-  class TextFormatter
-
-    attr_reader :indent
-    
-    def initialize(options, indent)
-      @options = options
-      @width   = options.width
-      @indent  = indent
-    end
-    
-    
-    ######################################################################
-    
-    def draw_line(label=nil)
-      len = @width
-      len -= (label.size+1) if label
-      print "-"*len
-      if label
-        print(" ")
-        bold_print(label) 
-      end
-      puts
-    end
-    
-    ######################################################################
-    
-    def wrap(txt,  prefix=@indent, linelen=@width)
-      return unless txt && !txt.empty?
-      work = conv_markup(txt)
-      textLen = linelen - prefix.length
-      patt = Regexp.new("^(.{0,#{textLen}})[ \n]")
-      next_prefix = prefix.tr("^ ", " ")
-
-      res = []
-
-      while work.length > textLen
-        if work =~ patt
-          res << $1
-          work.slice!(0, $&.length)
-        else
-          res << work.slice!(0, textLen)
-        end
-      end
-      res << work if work.length.nonzero?
-      puts(prefix + res.join("\n" + next_prefix))
-    end
-
-    ######################################################################
-
-    def blankline
-      puts
-    end
-    
-    ######################################################################
-
-    # called when we want to ensure a nbew 'wrap' starts on a newline
-    # Only needed for HtmlFormatter, because the rest do their
-    # own line breaking
-
-    def break_to_newline
-    end
-    
-    ######################################################################
-
-    def bold_print(txt)
-      print txt
-    end
-
-    ######################################################################
-
-    def raw_print_line(txt)
-      puts txt
-    end
-
-    ######################################################################
-
-    # convert HTML entities back to ASCII
-    def conv_html(txt)
-      txt.
-          gsub(/>/, '>').
-          gsub(/</, '<').
-          gsub(/"/, '"').
-          gsub(/&/, '&')
-          
-    end
-
-    # convert markup into display form
-    def conv_markup(txt)
-      txt.
-          gsub(%r{<tt>(.*?)</tt>}) { "+#$1+" } .
-          gsub(%r{<code>(.*?)</code>}) { "+#$1+" } .
-          gsub(%r{<b>(.*?)</b>}) { "*#$1*" } .
-          gsub(%r{<em>(.*?)</em>}) { "_#$1_" }
-    end
-
-    ######################################################################
-
-    def display_list(list)
-      case list.type
-
-      when SM::ListBase::BULLET 
-        prefixer = proc { |ignored| @indent + "*   " }
-
-      when SM::ListBase::NUMBER,
-      SM::ListBase::UPPERALPHA,
-      SM::ListBase::LOWERALPHA
-
-        start = case list.type
-                when SM::ListBase::NUMBER      then 1
-                when  SM::ListBase::UPPERALPHA then 'A'
-                when SM::ListBase::LOWERALPHA  then 'a'
-                end
-        prefixer = proc do |ignored|
-          res = @indent + "#{start}.".ljust(4)
-          start = start.succ
-          res
-        end
-        
-      when SM::ListBase::LABELED
-        prefixer = proc do |li|
-          li.label
-        end
-
-      when SM::ListBase::NOTE
-        longest = 0
-        list.contents.each do |item|
-          if item.kind_of?(SM::Flow::LI) && item.label.length > longest
-            longest = item.label.length
-          end
-        end
-
-        prefixer = proc do |li|
-          @indent + li.label.ljust(longest+1)
-        end
-
-      else
-        fail "unknown list type"
-
-      end
-
-      list.contents.each do |item|
-        if item.kind_of? SM::Flow::LI
-          prefix = prefixer.call(item)
-          display_flow_item(item, prefix)
-        else
-          display_flow_item(item)
-        end
-       end
-    end
-
-    ######################################################################
-
-    def display_flow_item(item, prefix=@indent)
-      case item
-      when SM::Flow::P, SM::Flow::LI
-        wrap(conv_html(item.body), prefix)
-        blankline
-        
-      when SM::Flow::LIST
-        display_list(item)
-
-      when SM::Flow::VERB
-        display_verbatim_flow_item(item, @indent)
-
-      when SM::Flow::H
-        display_heading(conv_html(item.text), item.level, @indent)
-
-      when SM::Flow::RULE
-        draw_line
-
-      else
-        fail "Unknown flow element: #{item.class}"
-      end
-    end
-
-    ######################################################################
-
-    def display_verbatim_flow_item(item, prefix=@indent)
-        item.body.split(/\n/).each do |line|
-          print @indent, conv_html(line), "\n"
-        end
-        blankline
-    end
-
-    ######################################################################
-
-    def display_heading(text, level, indent)
-      text = strip_attributes(text)
-      case level
-      when 1
-        ul = "=" * text.length
-        puts
-        puts text.upcase
-        puts ul
-#        puts
-        
-      when 2
-        ul = "-" * text.length
-        puts
-        puts text
-        puts ul
-#        puts
-      else
-        print indent, text, "\n"
-      end
-    end
-
-
-    def display_flow(flow)
-      flow.each do |f|
-        display_flow_item(f)
-      end
-    end
-
-    def strip_attributes(txt)
-      tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
-      text = [] 
-      attributes = 0
-      tokens.each do |tok|
-        case tok
-        when %r{^</(\w+)>$}, %r{^<(\w+)>$}
-          ;
-        else
-          text << tok
-        end
-      end
-      text.join
-    end
-
-
-  end
-  
-  
-  ######################################################################
-  # Handle text with attributes. We're a base class: there are
-  # different presentation classes (one, for example, uses overstrikes
-  # to handle bold and underlining, while another using ANSI escape
-  # sequences
-  
-  class AttributeFormatter < TextFormatter
-    
-    BOLD      = 1
-    ITALIC    = 2
-    CODE      = 4
-
-    ATTR_MAP = {
-      "b"    => BOLD,
-      "code" => CODE,
-      "em"   => ITALIC,
-      "i"    => ITALIC,
-      "tt"   => CODE
-    }
-
-    # TODO: struct?
-    class AttrChar
-      attr_reader :char
-      attr_reader :attr
-
-      def initialize(char, attr)
-        @char = char
-        @attr = attr
-      end
-    end
-
-    
-    class AttributeString
-      attr_reader :txt
-
-      def initialize
-        @txt = []
-        @optr = 0
-      end
-
-      def <<(char)
-        @txt << char
-      end
-
-      def empty?
-        @optr >= @txt.length
-      end
-
-      # accept non space, then all following spaces
-      def next_word
-        start = @optr
-        len = @txt.length
-
-        while @optr < len && @txt[@optr].char != " "
-          @optr += 1
-        end
-
-        while @optr < len && @txt[@optr].char == " "
-          @optr += 1
-        end
-
-        @txt[start... at optr]
-      end
-    end
-
-    ######################################################################
-    # overrides base class. Looks for <tt>...</tt> etc sequences
-    # and generates an array of AttrChars. This array is then used
-    # as the basis for the split
-
-    def wrap(txt,  prefix=@indent, linelen=@width)
-      return unless txt && !txt.empty?
-
-      txt = add_attributes_to(txt)
-      next_prefix = prefix.tr("^ ", " ")
-      linelen -= prefix.size
-
-      line = []
-
-      until txt.empty?
-        word = txt.next_word
-        if word.size + line.size > linelen
-          write_attribute_text(prefix, line)
-          prefix = next_prefix
-          line = []
-        end
-        line.concat(word)
-      end
-
-      write_attribute_text(prefix, line) if line.length > 0
-    end
-
-    protected
-
-    # overridden in specific formatters
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      line.each do |achar|
-        print achar.char
-      end
-      puts
-    end
-
-    # again, overridden
-
-    def bold_print(txt)
-      print txt
-    end
-
-    private
-
-    def add_attributes_to(txt)
-      tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
-      text = AttributeString.new
-      attributes = 0
-      tokens.each do |tok|
-        case tok
-        when %r{^</(\w+)>$} then attributes &= ~(ATTR_MAP[$1]||0)
-        when %r{^<(\w+)>$}  then attributes  |= (ATTR_MAP[$1]||0)
-        else
-          tok.split(//).each {|ch| text << AttrChar.new(ch, attributes)}
-        end
-      end
-      text
-    end
-
-  end
-
-
-  ##################################################
-  
-  # This formatter generates overstrike-style formatting, which
-  # works with pagers such as man and less.
-
-  class OverstrikeFormatter < AttributeFormatter
-
-    BS = "\C-h"
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      line.each do |achar|
-        attr = achar.attr
-        if (attr & (ITALIC+CODE)) != 0
-          print "_", BS
-        end
-        if (attr & BOLD) != 0
-          print achar.char, BS
-        end
-        print achar.char
-      end
-      puts
-    end
-
-    # draw a string in bold
-    def bold_print(text)
-      text.split(//).each do |ch|
-        print ch, BS, ch
-      end
-    end
-  end
-
-  ##################################################
-  
-  # This formatter uses ANSI escape sequences
-  # to colorize stuff
-  # works with pages such as man and less.
-
-  class AnsiFormatter < AttributeFormatter
-
-    def initialize(*args)
-      print "\033[0m"
-      super
-    end
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      curr_attr = 0
-      line.each do |achar|
-        attr = achar.attr
-        if achar.attr != curr_attr
-          update_attributes(achar.attr)
-          curr_attr = achar.attr
-        end
-        print achar.char
-      end
-      update_attributes(0) unless curr_attr.zero?
-      puts
-    end
-
-
-    def bold_print(txt)
-      print "\033[1m#{txt}\033[m"
-    end
-
-    HEADINGS = {
-      1 => [ "\033[1;32m", "\033[m" ] ,
-      2 => ["\033[4;32m", "\033[m" ],
-      3 => ["\033[32m", "\033[m" ]
-    }
-
-    def display_heading(text, level, indent)
-      level = 3 if level > 3
-      heading = HEADINGS[level]
-      print indent
-      print heading[0]
-      print strip_attributes(text)
-      puts heading[1]
-    end
-    
-    private
-
-    ATTR_MAP = {
-      BOLD   => "1",
-      ITALIC => "33",
-      CODE   => "36"
-    }
-
-    def update_attributes(attr)
-      str = "\033["
-      for quality in [ BOLD, ITALIC, CODE]
-        unless (attr & quality).zero?
-          str << ATTR_MAP[quality]
-        end
-      end
-      print str, "m"
-    end
-  end
-
-  ##################################################
-  
-  # This formatter uses HTML.
-
-  class HtmlFormatter < AttributeFormatter
-
-    def initialize(*args)
-      super
-    end
-
-    def write_attribute_text(prefix, line)
-      curr_attr = 0
-      line.each do |achar|
-        attr = achar.attr
-        if achar.attr != curr_attr
-          update_attributes(curr_attr, achar.attr)
-          curr_attr = achar.attr
-        end
-        print(escape(achar.char))
-      end
-      update_attributes(curr_attr, 0) unless curr_attr.zero?
-    end
-
-    def draw_line(label=nil)
-      if label != nil
-        bold_print(label)
-      end
-      puts("<hr>")
-    end
-
-    def bold_print(txt)
-      tag("b") { txt }
-    end
-
-    def blankline()
-      puts("<p>")
-    end
-
-    def break_to_newline
-      puts("<br>")
-    end
-
-    def display_heading(text, level, indent)
-      level = 4 if level > 4
-      tag("h#{level}") { text }
-      puts
-    end
-    
-    ######################################################################
-
-    def display_list(list)
-
-      case list.type
-      when SM::ListBase::BULLET 
-        list_type = "ul"
-        prefixer = proc { |ignored| "<li>" }
-
-      when SM::ListBase::NUMBER,
-      SM::ListBase::UPPERALPHA,
-      SM::ListBase::LOWERALPHA
-        list_type = "ol"
-        prefixer = proc { |ignored| "<li>" }
-        
-      when SM::ListBase::LABELED
-        list_type = "dl"
-        prefixer = proc do |li|
-          "<dt><b>" + escape(li.label) + "</b><dd>"
-        end
-
-      when SM::ListBase::NOTE
-        list_type = "table"
-        prefixer = proc do |li|
-          %{<tr valign="top"><td>#{li.label.gsub(/ /, ' ')}</td><td>}
-        end
-      else
-        fail "unknown list type"
-      end
-
-      print "<#{list_type}>"
-      list.contents.each do |item|
-        if item.kind_of? SM::Flow::LI
-          prefix = prefixer.call(item)
-          print prefix
-          display_flow_item(item, prefix)
-        else
-          display_flow_item(item)
-        end
-      end
-      print "</#{list_type}>"
-    end
-
-    def display_verbatim_flow_item(item, prefix=@indent)
-        print("<pre>")
-        puts item.body
-        puts("</pre>")
-    end
-
-    private
-
-    ATTR_MAP = {
-      BOLD   => "b>",
-      ITALIC => "i>",
-      CODE   => "tt>"
-    }
-
-    def update_attributes(current, wanted)
-      str = ""
-      # first turn off unwanted ones
-      off = current & ~wanted
-      for quality in [ BOLD, ITALIC, CODE]
-        if (off & quality) > 0
-          str << "</" + ATTR_MAP[quality]
-        end
-      end
-
-      # now turn on wanted
-      for quality in [ BOLD, ITALIC, CODE]
-        unless (wanted & quality).zero?
-          str << "<" << ATTR_MAP[quality]
-        end
-      end
-      print str
-    end
-
-    def tag(code)
-        print("<#{code}>")
-        print(yield)
-        print("</#{code}>")
-    end
-
-    def escape(str)
-      str.
-          gsub(/&/n, '&').
-          gsub(/\"/n, '"').
-          gsub(/>/n, '>').
-          gsub(/</n, '<')
-    end
-
-  end
-
-  ##################################################
-  
-  # This formatter reduces extra lines for a simpler output.
-  # It improves way output looks for tools like IRC bots.
-
-  class SimpleFormatter < TextFormatter
-
-    ######################################################################
-
-    # No extra blank lines
-
-    def blankline
-    end
-
-    ######################################################################
-
-    # Display labels only, no lines
-
-    def draw_line(label=nil)
-      unless label.nil? then
-        bold_print(label) 
-        puts
-      end
-    end
-
-    ######################################################################
-
-    # Place heading level indicators inline with heading.
-
-    def display_heading(text, level, indent)
-      text = strip_attributes(text)
-      case level
-      when 1
-        puts "= " + text.upcase
-      when 2
-        puts "-- " + text
-      else
-        print indent, text, "\n"
-      end
-    end
-
-  end
-
-
-  # Finally, fill in the list of known formatters
-
-  class TextFormatter
-
-    FORMATTERS = {
-      "ansi"   => AnsiFormatter,
-      "bs"     => OverstrikeFormatter,
-      "html"   => HtmlFormatter,
-      "plain"  => TextFormatter,
-      "simple" => SimpleFormatter,
-    }
-      
-    def TextFormatter.list
-      FORMATTERS.keys.sort.join(", ")
-    end
-
-    def TextFormatter.for(name)
-      FORMATTERS[name.downcase]
-    end
-
-  end
-
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_options.rb
deleted file mode 100644
index db9f4af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_options.rb
+++ /dev/null
@@ -1,313 +0,0 @@
-# We handle the parsing of options, and subsequently as a singleton
-# object to be queried for option values
-
-module RI
-
-  require 'rdoc/ri/ri_paths'
-  require 'rdoc/ri/ri_display'
-
-  VERSION_STRING = "ri v1.0.1 - 20041108"
-
-  class Options
-    
-    require 'singleton'
-    require 'getoptlong'
-    
-    include Singleton
-
-    # No not use a pager. Writable, because ri sets it if it
-    # can't find a pager
-    attr_accessor :use_stdout
-
-    # should we just display a class list and exit
-    attr_reader :list_classes
-
-    # should we display a list of all names
-    attr_reader :list_names
-
-    # The width of the output line
-    attr_reader :width
-
-    # the formatting we apply to the output
-    attr_reader :formatter
-
-    # the directory we search for original documentation
-    attr_reader :doc_dir
-
-    module OptionList
-      
-      OPTION_LIST = [
-        [ "--help",          "-h",   nil,
-          "you're looking at it" ],
-
-        [ "--classes",      "-c",   nil,
-          "Display the names of classes and modules we\n" +
-          "know about"],
-
-        [ "--doc-dir",      "-d",   "<dirname>",
-          "A directory to search for documentation. If not\n" +
-          "specified, we search the standard rdoc/ri directories.\n" +
-          "May be repeated."],
-
-        [ "--system",       nil,    nil,
-          "Include documentation from Ruby's standard library:\n  " +
-          RI::Paths::SYSDIR ],
-
-        [ "--site",         nil,    nil,
-          "Include documentation from libraries installed in site_lib:\n  " +
-          RI::Paths::SITEDIR ],
-
-        [ "--home",         nil,    nil,
-          "Include documentation stored in ~/.rdoc:\n  " +
-          (RI::Paths::HOMEDIR || "No ~/.rdoc found") ],
-
-        [ "--gems",         nil,    nil,
-          "Include documentation from Rubygems:\n  " +
-          (RI::Paths::GEMDIRS ? "#{Gem.path}/doc/*/ri" :
-                                "No Rubygems ri found.") ],
-                                                           
-        [ "--format",       "-f",   "<name>",
-          "Format to use when displaying output:\n" +
-          "   " + RI::TextFormatter.list + "\n" +
-          "Use 'bs' (backspace) with most pager programs.\n" +
-          "To use ANSI, either also use the -T option, or\n" +
-          "tell your pager to allow control characters\n" +
-          "(for example using the -R option to less)"],
-
-        [ "--list-names",    "-l",   nil,
-          "List all the names known to RDoc, one per line"
-        ],
-
-        [ "--no-pager",      "-T",   nil,
-          "Send output directly to stdout." 
-        ],
-
-        [ "--width",         "-w",   "output width",
-        "Set the width of the output" ],
-
-        [ "--version",       "-v",   nil,
-         "Display the version of ri"
-        ],
-
-      ]
-
-      def OptionList.options
-        OPTION_LIST.map do |long, short, arg,|
-          option = []
-          option << long
-          option << short unless short.nil?
-          option << (arg ? GetoptLong::REQUIRED_ARGUMENT :
-                           GetoptLong::NO_ARGUMENT)
-          option
-        end
-      end
-
-
-      def OptionList.strip_output(text)
-        text =~ /^\s+/
-        leading_spaces = $&
-        text.gsub!(/^#{leading_spaces}/, '')
-        $stdout.puts text
-      end
-      
-      
-      # Show an error and exit
-      
-      def OptionList.error(msg)
-        $stderr.puts
-        $stderr.puts msg
-        $stderr.puts "\nFor help on options, try 'ri --help'\n\n"
-        exit 1
-      end
-      
-      # Show usage and exit
-      
-      def OptionList.usage(short_form=false)
-        
-        puts
-        puts(RI::VERSION_STRING)
-        puts
-        
-        name = File.basename($0)
-
-        directories = [
-          RI::Paths::SYSDIR,
-          RI::Paths::SITEDIR,
-          RI::Paths::HOMEDIR
-        ]
-
-        directories << "#{Gem.path}/doc/*/ri" if RI::Paths::GEMDIRS
-
-        directories = directories.join("\n    ")
-
-        OptionList.strip_output(<<-EOT)
-          Usage:
-
-            #{name} [options]  [names...]
-
-          Display information on Ruby classes, modules, and methods.
-          Give the names of classes or methods to see their documentation.
-          Partial names may be given: if the names match more than
-          one entity, a list will be shown, otherwise details on
-          that entity will be displayed.
-
-          Nested classes and modules can be specified using the normal
-          Name::Name notation, and instance methods can be distinguished
-          from class methods using "." (or "#") instead of "::".
-
-          For example:
-
-              ri  File
-              ri  File.new
-              ri  F.n
-              ri  zip
-
-          Note that shell quoting may be required for method names
-          containing punctuation:
-
-              ri 'Array.[]'
-              ri compact\\!
-
-          By default ri searches for documentation in the following
-          directories:
-
-              #{directories}
-
-          Specifying the --system, --site, --home, --gems or --doc-dir
-          options will limit ri to searching only the specified
-          directories.
-
-        EOT
-
-        if short_form
-          puts "For help on options, type 'ri -h'"
-          puts "For a list of classes I know about, type 'ri -c'"
-        else
-          puts "Options:\n\n"
-          OPTION_LIST.each do|long, short, arg, desc|
-            opt = ''
-            opt << (short ? sprintf("%15s", "#{long}, #{short}") :
-                            sprintf("%15s", long))
-            if arg
-              opt << " " << arg
-            end
-            print opt
-            desc = desc.split("\n")
-            if opt.size < 17
-              print " "*(18-opt.size)
-              puts desc.shift
-            else
-              puts
-            end
-            desc.each do |line|
-              puts(" "*18 + line)
-            end
-            puts
-          end
-          puts "Options may also be passed in the 'RI' environment variable"
-          exit 0
-        end
-      end
-    end
-
-    # Show the version and exit
-    def show_version
-      puts VERSION_STRING
-      exit(0)
-    end
-
-    def initialize
-      @use_stdout   = !STDOUT.tty?
-      @width        = 72
-      @formatter    = RI::TextFormatter.for("plain") 
-      @list_classes = false
-      @list_names   = false
-
-      # By default all paths are used.  If any of these are true, only those
-      # directories are used.
-      @use_system = false
-      @use_site = false
-      @use_home = false
-      @use_gems = false
-      @doc_dirs = []
-    end
-
-    # Parse command line options.
-
-    def parse(args)
-    
-      old_argv = ARGV.dup
-
-      ARGV.replace(args)
-
-      begin
-
-        go = GetoptLong.new(*OptionList.options)
-        go.quiet = true
-
-        go.each do |opt, arg|
-          case opt
-          when "--help"       then OptionList.usage
-          when "--version"    then show_version
-          when "--list-names" then @list_names = true
-          when "--no-pager"   then @use_stdout = true
-          when "--classes"    then @list_classes = true
-
-          when "--system"     then @use_system = true
-          when "--site"       then @use_site = true
-          when "--home"       then @use_home = true
-          when "--gems"       then @use_gems = true
-
-          when "--doc-dir"
-            if File.directory?(arg)
-              @doc_dirs << arg
-            else
-              $stderr.puts "Invalid directory: #{arg}"
-              exit 1
-            end
-
-          when "--format"
-            @formatter = RI::TextFormatter.for(arg)
-            unless @formatter
-              $stderr.print "Invalid formatter (should be one of "
-              $stderr.puts RI::TextFormatter.list + ")"
-              exit 1
-            end
-          when "--width"
-            begin
-              @width = Integer(arg)
-            rescue 
-              $stderr.puts "Invalid width: '#{arg}'"
-              exit 1
-            end
-          end
-        end
-
-      rescue GetoptLong::InvalidOption, GetoptLong::MissingArgument => error
-        OptionList.error(error.message)
-
-      end
-    end
-
-    # Return the selected documentation directories.
-
-    def path
-      RI::Paths.path(@use_system, @use_site, @use_home, @use_gems, *@doc_dirs)
-    end
-
-    def raw_path
-      RI::Paths.raw_path(@use_system, @use_site, @use_home, @use_gems,
-                         *@doc_dirs)
-    end
-
-    # Return an instance of the displayer (the thing that actually writes
-    # the information). This allows us to load in new displayer classes
-    # at runtime (for example to help with IDE integration)
-    
-    def displayer
-      ::RiDisplay.new(self)
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_paths.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_paths.rb
deleted file mode 100644
index 32363bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_paths.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-module RI
-
-  # Encapsulate all the strangeness to do with finding out
-  # where to find RDoc files
-  #
-  # We basically deal with three directories:
-  #
-  # 1. The 'system' documentation directory, which holds
-  #    the documentation distributed with Ruby, and which
-  #    is managed by the Ruby install process
-  # 2. The 'site' directory, which contains site-wide
-  #    documentation added locally.
-  # 3. The 'user' documentation directory, stored under the
-  #    user's own home directory.
-  #
-  # There's contention about all this, but for now:
-  #
-  # system:: $datadir/ri/<ver>/system/...
-  # site::   $datadir/ri/<ver>/site/...
-  # user::   ~/.rdoc
-
-  module Paths
-
-    #:stopdoc:
-    require 'rbconfig'
-    
-    DOC_DIR  = "doc/rdoc"
-
-    version = Config::CONFIG['ruby_version']
-
-    base    = File.join(Config::CONFIG['datadir'], "ri", version)
-    SYSDIR  = File.join(base, "system")
-    SITEDIR = File.join(base, "site")
-    homedir = ENV['HOME'] || ENV['USERPROFILE'] || ENV['HOMEPATH']
-
-    if homedir
-      HOMEDIR = File.join(homedir, ".rdoc")
-    else
-      HOMEDIR = nil
-    end
-
-    # This is the search path for 'ri'
-    PATH = [ SYSDIR, SITEDIR, HOMEDIR ].find_all {|p| p && File.directory?(p)}
-
-    begin
-      require 'rubygems'
-      GEMDIRS = Dir["#{Gem.path}/doc/*/ri"]
-      GEMDIRS.each { |path| RI::Paths::PATH << path }
-    rescue LoadError
-      GEMDIRS = nil
-    end
-
-    # Returns the selected documentation directories as an Array, or PATH if no
-    # overriding directories were given.
-
-    def self.path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      path = raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      return path.select { |path| File.directory? path }
-    end
-
-    # Returns the selected documentation directories including nonexistent
-    # directories.  Used to print out what paths were searched if no ri was
-    # found.
-
-    def self.raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      return PATH unless use_system or use_site or use_home or use_gems or
-                         not extra_dirs.empty?
-
-      path = []
-      path << extra_dirs unless extra_dirs.empty?
-      path << RI::Paths::SYSDIR if use_system
-      path << RI::Paths::SITEDIR if use_site
-      path << RI::Paths::HOMEDIR if use_home
-      path << RI::Paths::GEMDIRS if use_gems
-
-      return path.flatten.compact
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_reader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_reader.rb
deleted file mode 100644
index fb2c373..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_reader.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'rdoc/ri/ri_descriptions'
-require 'rdoc/ri/ri_writer'
-require 'rdoc/markup/simple_markup/to_flow'
-
-module RI
-  class RiReader
-
-    def initialize(ri_cache)
-      @cache = ri_cache
-    end
-
-    def top_level_namespace
-      [ @cache.toplevel ]
-    end
-
-    def lookup_namespace_in(target, namespaces)
-      result = []
-      for n in namespaces
-        result.concat(n.contained_modules_matching(target))
-      end
-      result
-    end
-
-    def find_class_by_name(full_name)
-      names = full_name.split(/::/)
-      ns = @cache.toplevel
-      for name in names
-        ns = ns.contained_class_named(name)
-        return nil if ns.nil?
-      end
-      get_class(ns)
-    end
-
-    def find_methods(name, is_class_method, namespaces)
-      result = []
-      namespaces.each do |ns|
-        result.concat ns.methods_matching(name, is_class_method)
-      end
-      result
-    end
-
-    # return the MethodDescription for a given MethodEntry
-    # by deserializing the YAML
-    def get_method(method_entry)
-      path = method_entry.path_name
-      File.open(path) { |f| RI::Description.deserialize(f) }
-    end
-
-    # Return a class description
-    def get_class(class_entry)
-      result = nil
-      for path in class_entry.path_names
-        path = RiWriter.class_desc_path(path, class_entry)
-        desc = File.open(path) {|f| RI::Description.deserialize(f) }
-        if result
-          result.merge_in(desc)
-        else
-          result = desc
-        end
-      end
-      result
-    end
-
-    # return the names of all classes and modules
-    def full_class_names
-      res = []
-      find_classes_in(res, @cache.toplevel)
-    end
-
-    # return a list of all classes, modules, and methods
-    def all_names
-      res = []
-      find_names_in(res, @cache.toplevel)
-    end
-
-    # ----
-    private
-    # ----
-
-    def find_classes_in(res, klass)
-      classes = klass.classes_and_modules
-      for c in classes
-        res << c.full_name
-        find_classes_in(res, c)
-      end
-      res
-    end
-
-    def find_names_in(res, klass)
-      classes = klass.classes_and_modules
-      for c in classes
-        res << c.full_name
-        res.concat c.all_method_names
-        find_names_in(res, c)
-      end
-      res
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_util.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_util.rb
deleted file mode 100644
index 8a01255..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_util.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-######################################################################
-
-class RiError < Exception; end
-#
-# Break argument into its constituent class or module names, an
-# optional method type, and a method name
-
-class NameDescriptor
-
-  attr_reader :class_names
-  attr_reader :method_name
-
-  # true and false have the obvious meaning. nil means we don't care
-  attr_reader :is_class_method
-
-  # arg may be
-  # 1. a class or module name (optionally qualified with other class
-  #    or module names (Kernel, File::Stat etc)
-  # 2. a method name
-  # 3. a method name qualified by a optionally fully qualified class
-  #    or module name
-  #
-  # We're fairly casual about delimiters: folks can say Kernel::puts,
-  # Kernel.puts, or Kernel\#puts for example. There's one exception:
-  # if you say IO::read, we look for a class method, but if you
-  # say IO.read, we look for an instance method
-
-  def initialize(arg)
-    @class_names = []
-    separator = nil
-
-    tokens = arg.split(/(\.|::|#)/)
-
-    # Skip leading '::', '#' or '.', but remember it might
-    # be a method name qualifier
-    separator = tokens.shift if tokens[0] =~ /^(\.|::|#)/
-
-    # Skip leading '::', but remember we potentially have an inst
-
-    # leading stuff must be class names
-    
-    while tokens[0] =~ /^[A-Z]/
-      @class_names << tokens.shift
-      unless tokens.empty?
-        separator = tokens.shift
-        break unless separator == "::"
-      end
-    end
-    
-    # Now must have a single token, the method name, or an empty
-    # array
-    unless tokens.empty?
-      @method_name = tokens.shift
-      # We may now have a trailing !, ?, or = to roll into
-      # the method name
-      if !tokens.empty? && tokens[0] =~ /^[!?=]$/
-        @method_name << tokens.shift
-      end
-
-      if @method_name =~ /::|\.|#/ or !tokens.empty?
-        raise RiError.new("Bad argument: #{arg}") 
-      end
-      if separator && separator != '.'
-        @is_class_method = separator == "::"
-      end
-    end
-  end
-
-  # Return the full class name (with '::' between the components)
-  # or "" if there's no class name
-
-  def full_class_name
-    @class_names.join("::")
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_writer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_writer.rb
deleted file mode 100644
index 78c68e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/ri/ri_writer.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'fileutils'
-
-module RI
-  class RiWriter
-
-    def RiWriter.class_desc_path(dir, class_desc)
-      File.join(dir, "cdesc-" + class_desc.name + ".yaml")
-    end
-
-    
-    # Convert a name from internal form (containing punctuation)
-    # to an external form (where punctuation is replaced
-    # by %xx)
-
-    def RiWriter.internal_to_external(name)
-      name.gsub(/\W/) { sprintf("%%%02x", $&[0]) }
-    end
-
-    # And the reverse operation
-    def RiWriter.external_to_internal(name)
-      name.gsub(/%([0-9a-f]{2,2})/) { $1.to_i(16).chr }
-    end
-
-    def initialize(base_dir)
-      @base_dir = base_dir
-    end
-
-    def remove_class(class_desc)
-      FileUtils.rm_rf(path_to_dir(class_desc.full_name))
-    end
-
-    def add_class(class_desc)
-      dir = path_to_dir(class_desc.full_name)
-      FileUtils.mkdir_p(dir)
-      class_file_name = RiWriter.class_desc_path(dir, class_desc)
-      File.open(class_file_name, "w") do |f|
-        f.write(class_desc.serialize)
-      end
-    end
-
-    def add_method(class_desc, method_desc)
-      dir = path_to_dir(class_desc.full_name)
-      file_name = RiWriter.internal_to_external(method_desc.name)
-      meth_file_name = File.join(dir, file_name)
-      if method_desc.is_singleton
-        meth_file_name += "-c.yaml"
-      else
-        meth_file_name += "-i.yaml"
-      end
-
-      File.open(meth_file_name, "w") do |f|
-        f.write(method_desc.serialize)
-      end
-    end
-
-    private
-
-    def path_to_dir(class_name)
-      File.join(@base_dir, *class_name.split('::'))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/template.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/template.rb
deleted file mode 100644
index 469e10f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/template.rb
+++ /dev/null
@@ -1,234 +0,0 @@
-# Cheap-n-cheerful HTML page template system. You create a 
-# template containing:
-#
-# * variable names between percent signs (<tt>%fred%</tt>)
-# * blocks of repeating stuff:
-#
-#     START:key
-#       ... stuff
-#     END:key
-#
-# You feed the code a hash. For simple variables, the values
-# are resolved directly from the hash. For blocks, the hash entry
-# corresponding to +key+ will be an array of hashes. The block will
-# be generated once for each entry. Blocks can be nested arbitrarily
-# deeply.
-#
-# The template may also contain
-#
-#   IF:key
-#     ... stuff
-#   ENDIF:key
-#
-# _stuff_ will only be included in the output if the corresponding
-# key is set in the value hash.
-#
-# Usage:  Given a set of templates <tt>T1, T2,</tt> etc
-#
-#            values = { "name" => "Dave", state => "TX" }
-#
-#            t = TemplatePage.new(T1, T2, T3)
-#            File.open(name, "w") {|f| t.write_html_on(f, values)}
-#         or
-#            res = ''
-#            t.write_html_on(res, values)
-#
-#
-
-class TemplatePage
-
-  ##########
-  # A context holds a stack of key/value pairs (like a symbol
-  # table). When asked to resolve a key, it first searches the top of
-  # the stack, then the next level, and so on until it finds a match
-  # (or runs out of entries)
-
-  class Context
-    def initialize
-      @stack = []
-    end
-
-    def push(hash)
-      @stack.push(hash)
-    end
-
-    def pop
-      @stack.pop
-    end
-
-    # Find a scalar value, throwing an exception if not found. This
-    # method is used when substituting the %xxx% constructs
-
-    def find_scalar(key)
-      @stack.reverse_each do |level|
-        if val = level[key]
-          return val unless val.kind_of? Array
-        end
-      end
-      raise "Template error: can't find variable '#{key}'"
-    end
-
-    # Lookup any key in the stack of hashes
-
-    def lookup(key)
-      @stack.reverse_each do |level|
-        val = level[key]
-        return val if val
-      end
-      nil
-    end
-  end
-
-  #########
-  # Simple class to read lines out of a string
-
-  class LineReader
-    # we're initialized with an array of lines
-    def initialize(lines)
-      @lines = lines
-    end
-
-    # read the next line 
-    def read
-      @lines.shift
-    end
-
-    # Return a list of lines up to the line that matches
-    # a pattern. That last line is discarded.
-    def read_up_to(pattern)
-      res = []
-      while line = read
-        if pattern.match(line)
-          return LineReader.new(res) 
-        else
-          res << line
-        end
-      end
-      raise "Missing end tag in template: #{pattern.source}"
-    end
-
-    # Return a copy of ourselves that can be modified without
-    # affecting us
-    def dup
-      LineReader.new(@lines.dup)
-    end
-  end
-
-
-
-  # +templates+ is an array of strings containing the templates.
-  # We start at the first, and substitute in subsequent ones
-  # where the string <tt>!INCLUDE!</tt> occurs. For example,
-  # we could have the overall page template containing
-  #
-  #   <html><body>
-  #     <h1>Master</h1>
-  #     !INCLUDE!
-  #   </bost></html>
-  #
-  # and substitute subpages in to it by passing [master, sub_page].
-  # This gives us a cheap way of framing pages
-
-  def initialize(*templates)
-    result = "!INCLUDE!"
-    templates.each do |content|
-      result.sub!(/!INCLUDE!/, content)
-    end
-    @lines = LineReader.new(result.split($/))
-  end
-
-  # Render the templates into HTML, storing the result on +op+ 
-  # using the method <tt><<</tt>. The <tt>value_hash</tt> contains
-  # key/value pairs used to drive the substitution (as described above)
-
-  def write_html_on(op, value_hash)
-    @context = Context.new
-    op << substitute_into(@lines, value_hash).tr("\000", '\\')
-  end
-
-
-  # Substitute a set of key/value pairs into the given template. 
-  # Keys with scalar values have them substituted directly into
-  # the page. Those with array values invoke <tt>substitute_array</tt>
-  # (below), which examples a block of the template once for each 
-  # row in the array.
-  #
-  # This routine also copes with the <tt>IF:</tt>_key_ directive,
-  # removing chunks of the template if the corresponding key
-  # does not appear in the hash, and the START: directive, which
-  # loops its contents for each value in an array
-
-  def substitute_into(lines, values)
-    @context.push(values)
-    skip_to = nil
-    result = []
-
-    while line = lines.read
-
-      case line
-
-      when /^IF:(\w+)/
-        lines.read_up_to(/^ENDIF:#$1/) unless @context.lookup($1)
-
-    when /^IFNOT:(\w+)/
-        lines.read_up_to(/^ENDIF:#$1/) if @context.lookup($1)
-
-      when /^ENDIF:/
-        ;
-
-      when /^START:(\w+)/
-        tag = $1
-        body = lines.read_up_to(/^END:#{tag}/)
-        inner_values = @context.lookup(tag)
-        raise "unknown tag: #{tag}" unless inner_values
-        raise "not array: #{tag}"   unless inner_values.kind_of?(Array)
-        inner_values.each do |vals|
-          result << substitute_into(body.dup, vals)
-        end
-      else
-        result << expand_line(line.dup)
-      end
-    end
-
-    @context.pop
-
-    result.join("\n")
-  end
-
-  # Given an individual line, we look for %xxx% constructs and 
-  # HREF:ref:name: constructs, substituting for each.
-
-  def expand_line(line)
-    # Generate a cross reference if a reference is given,
-    # otherwise just fill in the name part
-
-    line.gsub!(/HREF:(\w+?):(\w+?):/) {
-      ref = @context.lookup($1)
-      name = @context.find_scalar($2)
-
-      if ref and !ref.kind_of?(Array)
-	"<a href=\"#{ref}\">#{name}</a>"
-      else
-	name
-      end
-    }
-
-    # Substitute in values for %xxx% constructs.  This is made complex
-    # because the replacement string may contain characters that are
-    # meaningful to the regexp (like \1)
-
-    line = line.gsub(/%([a-zA-Z]\w*)%/) {
-      val = @context.find_scalar($1) 
-      val.tr('\\', "\000")
-    }
-
-
-    line
-  rescue Exception => e
-    $stderr.puts "Error in template: #{e}"
-    $stderr.puts "Original line: #{line}"
-    exit
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/tokenstream.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/tokenstream.rb
deleted file mode 100644
index 0a0720d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/tokenstream.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# A TokenStream is a list of tokens, gathered during the parse
-# of some entity (say a method). Entities populate these streams
-# by being registered with the lexer. Any class can collect tokens
-# by including TokenStream. From the outside, you use such an object
-# by calling the start_collecting_tokens method, followed by calls
-# to add_token and pop_token
-
-module TokenStream
-  def token_stream
-    @token_stream
-  end
-
-  def start_collecting_tokens
-    @token_stream = []
-  end
-  def add_token(tk)
-    @token_stream << tk
-  end
-  def add_tokens(tks)
-    tks.each  {|tk| add_token(tk)}
-  end
-  def pop_token
-    @token_stream.pop
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/usage.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/usage.rb
deleted file mode 100644
index def516b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rdoc/usage.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# = Synopsis
-#
-# This library allows command-line tools to encapsulate their usage
-# as a comment at the top of the main file. Calling <tt>RDoc::usage</tt>
-# then displays some or all of that comment, and optionally exits
-# the program with an exit status. We always look for the comment
-# in the main program file, so it is safe to call this method
-# from anywhere in the executing program.
-#
-# = Usage
-#
-#   RDoc::usage( [ exit_status ], [ section, ...])
-#   RDoc::usage_no_exit( [ section, ...])
-#
-# where:
-#
-# exit_status::
-#     the integer exit code (default zero). RDoc::usage will exit
-#     the calling program with this status.
-#
-# section::
-#     an optional list of section names. If specified, only the
-#     sections with the given names as headings will be output.
-#     For example, this section is named 'Usage', and the next
-#     section is named 'Examples'. The section names are case
-#     insensitive.
-#
-# = Examples
-#
-#    # Comment block describing usage
-#    # with (optional) section headings
-#    # . . .
-#
-#    require 'rdoc/usage'
-#
-#    # Display all usage and exit with a status of 0
-#
-#    RDoc::usage
-#
-#    # Display all usage and exit with a status of 99
-#
-#    RDoc::usage(99)
-#
-#    # Display usage in the 'Summary' section only, then
-#    # exit with a status of 99
-#
-#    RDoc::usage(99, 'Summary')
-#
-#    # Display information in the Author and Copyright
-#    # sections, then exit 0.
-#    
-#    RDoc::usage('Author', 'Copyright')
-#
-#    # Display information in the Author and Copyright
-#    # sections, but don't exit
-#  
-#    RDoc::usage_no_exit('Author', 'Copyright')
-#
-# = Author
-#
-# Dave Thomas, The Pragmatic Programmers, LLC
-#
-# = Copyright
-#
-# Copyright (c) 2004 Dave Thomas.
-# Licensed under the same terms as Ruby
-#
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_flow'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-module RDoc
-
-  # Display usage information from the comment at the top of
-  # the file. String arguments identify specific sections of the
-  # comment to display. An optional integer first argument
-  # specifies the exit status  (defaults to 0)
-
-  def RDoc.usage(*args)
-    exit_code = 0
-
-    if args.size > 0
-      status = args[0]
-      if status.respond_to?(:to_int)
-        exit_code = status.to_int
-        args.shift
-      end
-    end
-
-    # display the usage and exit with the given code
-    usage_no_exit(*args)
-    exit(exit_code)
-  end
-
-  # Display usage
-  def RDoc.usage_no_exit(*args)
-    main_program_file = caller[-1].sub(/:\d+$/, '')
-    comment = File.open(main_program_file) do |file|
-      find_comment(file)
-    end
-
-    comment = comment.gsub(/^\s*#/, '')
-
-    markup = SM::SimpleMarkup.new
-    flow_convertor = SM::ToFlow.new
-    
-    flow = markup.convert(comment, flow_convertor)
-
-    format = "plain"
-
-    unless args.empty?
-      flow = extract_sections(flow, args)
-    end
-
-    options = RI::Options.instance
-    if args = ENV["RI"]
-      options.parse(args.split)
-    end
-    formatter = options.formatter.new(options, "")
-    formatter.display_flow(flow)
-  end
-
-  ######################################################################
-
-  private
-
-  # Find the first comment in the file (that isn't a shebang line)
-  # If the file doesn't start with a comment, report the fact
-  # and return empty string
-
-  def RDoc.gets(file)
-    if (line = file.gets) && (line =~ /^#!/) # shebang
-      throw :exit, find_comment(file)
-    else
-      line
-    end
-  end
-
-  def RDoc.find_comment(file)
-    catch(:exit) do
-      # skip leading blank lines
-      0 while (line = gets(file)) && (line =~ /^\s*$/)
-
-      comment = []
-      while line && line =~ /^\s*#/
-        comment << line
-        line = gets(file)
-      end
-
-      0 while line && (line = gets(file))
-      return no_comment if comment.empty?
-      return comment.join
-    end
-  end
-
-
-  #####
-  # Given an array of flow items and an array of section names, extract those
-  # sections from the flow which have headings corresponding to
-  # a section name in the list. Return them in the order
-  # of names in the +sections+ array.
-
-  def RDoc.extract_sections(flow, sections)
-    result = []
-    sections.each do |name|
-      name = name.downcase
-      copy_upto_level = nil
-
-      flow.each do |item|
-        case item
-        when SM::Flow::H
-          if copy_upto_level && item.level >= copy_upto_level
-            copy_upto_level = nil
-          else
-            if item.text.downcase == name
-              result << item
-              copy_upto_level = item.level
-            end
-          end
-        else
-          if copy_upto_level
-            result << item
-          end
-        end
-      end
-    end
-    if result.empty?
-      puts "Note to developer: requested section(s) [#{sections.join(', ')}] " +
-           "not found"
-      result = flow
-    end
-    result
-  end
-
-  #####
-  # Report the fact that no doc comment count be found
-  def RDoc.no_comment
-    $stderr.puts "No usage information available for this program"
-    ""
-  end
-end
-
-
-if $0 == __FILE__
-
-  RDoc::usage(*ARGV)
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/readbytes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/readbytes.rb
deleted file mode 100644
index ebb5fc0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/readbytes.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# TruncatedDataError is raised when IO#readbytes fails to read enough data.
-
-class TruncatedDataError<IOError
-  def initialize(mesg, data) # :nodoc:
-    @data = data
-    super(mesg)
-  end
-
-  # The read portion of an IO#readbytes attempt.
-  attr_reader :data
-end
-
-class IO
-  # Reads exactly +n+ bytes.
-  #
-  # If the data read is nil an EOFError is raised.
-  #
-  # If the data read is too short a TruncatedDataError is raised and the read
-  # data is obtainable via its #data method.
-  def readbytes(n)
-    str = read(n)
-    if str == nil
-      raise EOFError, "End of file reached"
-    end
-    if str.size < n
-      raise TruncatedDataError.new("data truncated", str) 
-    end
-    str
-  end
-end
-
-if __FILE__ == $0
-  begin
-    loop do
-      print STDIN.readbytes(6)
-    end
-  rescue TruncatedDataError
-    p $!.data
-    raise
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv-replace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv-replace.rb
deleted file mode 100644
index 63d58ce..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv-replace.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'socket'
-require 'resolv'
-
-class << IPSocket
-  alias original_resolv_getaddress getaddress
-  def getaddress(host)
-    begin
-      return Resolv.getaddress(host).to_s
-    rescue Resolv::ResolvError
-      raise SocketError, "Hostname not known: #{host}"
-    end
-  end
-end
-
-class TCPSocket
-  alias original_resolv_initialize initialize
-  def initialize(host, serv, *rest)
-    rest[0] = IPSocket.getaddress(rest[0]) unless rest.empty?
-    original_resolv_initialize(IPSocket.getaddress(host), serv, *rest)
-  end
-end
-
-class UDPSocket
-  alias original_resolv_bind bind
-  def bind(host, port)
-    host = IPSocket.getaddress(host) if host != ""
-    original_resolv_bind(host, port)
-  end
-
-  alias original_resolv_connect connect
-  def connect(host, port)
-    original_resolv_connect(IPSocket.getaddress(host), port)
-  end
-
-  alias original_resolv_send send
-  def send(mesg, flags, *rest)
-    if rest.length == 2
-      host, port = rest
-      begin
-        addrs = Resolv.getaddresses(host)
-      rescue Resolv::ResolvError
-        raise SocketError, "Hostname not known: #{host}"
-      end
-      err = nil
-      addrs[0...-1].each {|addr|
-        begin
-          return original_resolv_send(mesg, flags, addr, port)
-        rescue SystemCallError
-        end
-      }
-      original_resolv_send(mesg, flags, addrs[-1], port)
-    else
-      original_resolv_send(mesg, flags, *rest)
-    end
-  end
-end
-
-class SOCKSSocket
-  alias original_resolv_initialize initialize
-  def initialize(host, serv)
-    original_resolv_initialize(IPSocket.getaddress(host), port)
-  end
-end if defined? SOCKSSocket
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv.rb
deleted file mode 100644
index 3f79ecc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/resolv.rb
+++ /dev/null
@@ -1,1930 +0,0 @@
-=begin
-= resolv library
-resolv.rb is a resolver library written in Ruby.
-Since it is written in Ruby, it is thread-aware.
-I.e. it can resolv many hostnames concurrently.
-
-It is possible to lookup various resources of DNS using DNS module directly.
-
-== example
-  p Resolv.getaddress("www.ruby-lang.org")
-  p Resolv.getname("210.251.121.214")
-
-  Resolv::DNS.open {|dns|
-    p dns.getresources("www.ruby-lang.org", Resolv::DNS::Resource::IN::A).collect {|r| r.address}
-    p dns.getresources("ruby-lang.org", Resolv::DNS::Resource::IN::MX).collect {|r| [r.exchange.to_s, r.preference]}
-  }
-
-== Resolv class
-
-=== class methods
---- Resolv.getaddress(name)
---- Resolv.getaddresses(name)
---- Resolv.each_address(name) {|address| ...}
-    They lookups IP addresses of ((|name|)) which represents a hostname
-    as a string by default resolver.
-
-    getaddress returns first entry of lookupped addresses.
-    getaddresses returns lookupped addresses as an array.
-    each_address iterates over lookupped addresses.
-
---- Resolv.getname(address)
---- Resolv.getnames(address)
---- Resolv.each_name(address) {|name| ...}
-    lookups hostnames of ((|address|)) which represents IP address as a string.
-
-    getname returns first entry of lookupped names.
-    getnames returns lookupped names as an array.
-    each_names iterates over lookupped names.
-
-== Resolv::Hosts class
-hostname resolver using /etc/hosts format.
-
-=== class methods
---- Resolv::Hosts.new(hosts='/etc/hosts')
-
-=== methods
---- Resolv::Hosts#getaddress(name)
---- Resolv::Hosts#getaddresses(name)
---- Resolv::Hosts#each_address(name) {|address| ...}
-    address lookup methods.
-
---- Resolv::Hosts#getname(address)
---- Resolv::Hosts#getnames(address)
---- Resolv::Hosts#each_name(address) {|name| ...}
-    hostnames lookup methods.
-
-== Resolv::DNS class
-DNS stub resolver.
-
-=== class methods
---- Resolv::DNS.new(config_info=nil)
-
-    ((|config_info|)) should be nil, a string or a hash.
-    If nil is given, /etc/resolv.conf and platform specific information is used.
-    If a string is given, it should be a filename which format is same as /etc/resolv.conf.
-    If a hash is given, it may contains information for nameserver, search and ndots as follows.
-
-      Resolv::DNS.new({:nameserver=>["210.251.121.21"], :search=>["ruby-lang.org"], :ndots=>1})
-
---- Resolv::DNS.open(config_info=nil)
---- Resolv::DNS.open(config_info=nil) {|dns| ...}
-
-=== methods
---- Resolv::DNS#close
-
---- Resolv::DNS#getaddress(name)
---- Resolv::DNS#getaddresses(name)
---- Resolv::DNS#each_address(name) {|address| ...}
-    address lookup methods.
-
-    ((|name|)) must be a instance of Resolv::DNS::Name or String.  Lookupped
-    address is represented as an instance of Resolv::IPv4 or Resolv::IPv6.
-
---- Resolv::DNS#getname(address)
---- Resolv::DNS#getnames(address)
---- Resolv::DNS#each_name(address) {|name| ...}
-    hostnames lookup methods.
-
-    ((|address|)) must be a instance of Resolv::IPv4, Resolv::IPv6 or String.
-    Lookupped name is represented as an instance of Resolv::DNS::Name.
-
---- Resolv::DNS#getresource(name, typeclass)
---- Resolv::DNS#getresources(name, typeclass)
---- Resolv::DNS#each_resource(name, typeclass) {|resource| ...}
-    They lookup DNS resources of ((|name|)).
-    ((|name|)) must be a instance of Resolv::Name or String.
-
-    ((|typeclass|)) should be one of follows:
-    * Resolv::DNS::Resource::IN::ANY
-    * Resolv::DNS::Resource::IN::NS
-    * Resolv::DNS::Resource::IN::CNAME
-    * Resolv::DNS::Resource::IN::SOA
-    * Resolv::DNS::Resource::IN::HINFO
-    * Resolv::DNS::Resource::IN::MINFO
-    * Resolv::DNS::Resource::IN::MX
-    * Resolv::DNS::Resource::IN::TXT
-    * Resolv::DNS::Resource::IN::ANY
-    * Resolv::DNS::Resource::IN::A
-    * Resolv::DNS::Resource::IN::WKS
-    * Resolv::DNS::Resource::IN::PTR
-    * Resolv::DNS::Resource::IN::AAAA
-
-    Lookupped resource is represented as an instance of (a subclass of)
-    Resolv::DNS::Resource. 
-    (Resolv::DNS::Resource::IN::A, etc.)
-
-== Resolv::DNS::Resource::IN::NS class
---- name
-== Resolv::DNS::Resource::IN::CNAME class
---- name
-== Resolv::DNS::Resource::IN::SOA class
---- mname
---- rname
---- serial
---- refresh
---- retry
---- expire
---- minimum
-== Resolv::DNS::Resource::IN::HINFO class
---- cpu
---- os
-== Resolv::DNS::Resource::IN::MINFO class
---- rmailbx
---- emailbx
-== Resolv::DNS::Resource::IN::MX class
---- preference
---- exchange
-== Resolv::DNS::Resource::IN::TXT class
---- data
-== Resolv::DNS::Resource::IN::A class
---- address
-== Resolv::DNS::Resource::IN::WKS class
---- address
---- protocol
---- bitmap
-== Resolv::DNS::Resource::IN::PTR class
---- name
-== Resolv::DNS::Resource::IN::AAAA class
---- address
-
-== Resolv::DNS::Name class
-
-=== class methods
---- Resolv::DNS::Name.create(name)
-
-=== methods
---- Resolv::DNS::Name#to_s
-
-== Resolv::DNS::Resource class
-
-== Resolv::IPv4 class
-=== class methods
---- Resolv::IPv4.create(address)
-
-=== methods
---- Resolv::IPv4#to_s
---- Resolv::IPv4#to_name
-
-=== constants
---- Resolv::IPv4::Regex
-    regular expression for IPv4 address.
-
-== Resolv::IPv6 class
-=== class methods
---- Resolv::IPv6.create(address)
-
-=== methods
---- Resolv::IPv6#to_s
---- Resolv::IPv6#to_name
-
-=== constants
---- Resolv::IPv6::Regex
-    regular expression for IPv6 address.
-
-== Bugs
-* NIS is not supported.
-* /etc/nsswitch.conf is not supported.
-* IPv6 is not supported.
-
-=end
-
-require 'socket'
-require 'fcntl'
-require 'timeout'
-require 'thread'
-
-begin
-  require 'securerandom'
-rescue LoadError
-end
-
-class Resolv
-  def self.getaddress(name)
-    DefaultResolver.getaddress(name)
-  end
-
-  def self.getaddresses(name)
-    DefaultResolver.getaddresses(name)
-  end
-
-  def self.each_address(name, &block)
-    DefaultResolver.each_address(name, &block)
-  end
-
-  def self.getname(address)
-    DefaultResolver.getname(address)
-  end
-
-  def self.getnames(address)
-    DefaultResolver.getnames(address)
-  end
-
-  def self.each_name(address, &proc)
-    DefaultResolver.each_name(address, &proc)
-  end
-
-  def initialize(resolvers=[Hosts.new, DNS.new])
-    @resolvers = resolvers
-  end
-
-  def getaddress(name)
-    each_address(name) {|address| return address}
-    raise ResolvError.new("no address for #{name}")
-  end
-
-  def getaddresses(name)
-    ret = []
-    each_address(name) {|address| ret << address}
-    return ret
-  end
-
-  def each_address(name)
-    if AddressRegex =~ name
-      yield name
-      return
-    end
-    yielded = false
-    @resolvers.each {|r|
-      r.each_address(name) {|address|
-        yield address.to_s
-        yielded = true
-      }
-      return if yielded
-    }
-  end
-
-  def getname(address)
-    each_name(address) {|name| return name}
-    raise ResolvError.new("no name for #{address}")
-  end
-
-  def getnames(address)
-    ret = []
-    each_name(address) {|name| ret << name}
-    return ret
-  end
-
-  def each_name(address)
-    yielded = false
-    @resolvers.each {|r|
-      r.each_name(address) {|name|
-        yield name.to_s
-        yielded = true
-      }
-      return if yielded
-    }
-  end
-
-  class ResolvError < StandardError
-  end
-
-  class ResolvTimeout < TimeoutError
-  end
-
-  class Hosts
-    if /mswin32|mingw|bccwin/ =~ RUBY_PLATFORM
-      require 'win32/resolv'
-      DefaultFileName = Win32::Resolv.get_hosts_path
-    else
-      DefaultFileName = '/etc/hosts'
-    end
-
-    def initialize(filename = DefaultFileName)
-      @filename = filename
-      @mutex = Mutex.new
-      @initialized = nil
-    end
-
-    def lazy_initialize
-      @mutex.synchronize {
-        unless @initialized
-          @name2addr = {}
-          @addr2name = {}
-          open(@filename) {|f|
-            f.each {|line|
-              line.sub!(/#.*/, '')
-              addr, hostname, *aliases = line.split(/\s+/)
-              next unless addr
-              addr.untaint
-              hostname.untaint
-              @addr2name[addr] = [] unless @addr2name.include? addr
-              @addr2name[addr] << hostname
-              @addr2name[addr] += aliases
-              @name2addr[hostname] = [] unless @name2addr.include? hostname
-              @name2addr[hostname] << addr
-              aliases.each {|n|
-                n.untaint
-                @name2addr[n] = [] unless @name2addr.include? n
-                @name2addr[n] << addr
-              }
-            }
-          }
-          @name2addr.each {|name, arr| arr.reverse!}
-          @initialized = true
-        end
-      }
-      self
-    end
-
-    def getaddress(name)
-      each_address(name) {|address| return address}
-      raise ResolvError.new("#{@filename} has no name: #{name}")
-    end
-
-    def getaddresses(name)
-      ret = []
-      each_address(name) {|address| ret << address}
-      return ret
-    end
-
-    def each_address(name, &proc)
-      lazy_initialize
-      if @name2addr.include?(name)
-        @name2addr[name].each(&proc)
-      end
-    end
-
-    def getname(address)
-      each_name(address) {|name| return name}
-      raise ResolvError.new("#{@filename} has no address: #{address}")
-    end
-
-    def getnames(address)
-      ret = []
-      each_name(address) {|name| ret << name}
-      return ret
-    end
-
-    def each_name(address, &proc)
-      lazy_initialize
-      if @addr2name.include?(address)
-        @addr2name[address].each(&proc)
-      end
-    end
-  end
-
-  class DNS
-    # STD0013 (RFC 1035, etc.)
-    # ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
-
-    Port = 53
-    UDPSize = 512
-
-    DNSThreadGroup = ThreadGroup.new
-
-    def self.open(*args)
-      dns = new(*args)
-      return dns unless block_given?
-      begin
-        yield dns
-      ensure
-        dns.close
-      end
-    end
-
-    def initialize(config_info=nil)
-      @mutex = Mutex.new
-      @config = Config.new(config_info)
-      @initialized = nil
-    end
-
-    def lazy_initialize
-      @mutex.synchronize {
-        unless @initialized
-          @config.lazy_initialize
-          @initialized = true
-        end
-      }
-      self
-    end
-
-    def close
-      @mutex.synchronize {
-        if @initialized
-          @initialized = false
-        end
-      }
-    end
-
-    def getaddress(name)
-      each_address(name) {|address| return address}
-      raise ResolvError.new("DNS result has no information for #{name}")
-    end
-
-    def getaddresses(name)
-      ret = []
-      each_address(name) {|address| ret << address}
-      return ret
-    end
-
-    def each_address(name)
-      each_resource(name, Resource::IN::A) {|resource| yield resource.address}
-    end
-
-    def getname(address)
-      each_name(address) {|name| return name}
-      raise ResolvError.new("DNS result has no information for #{address}")
-    end
-
-    def getnames(address)
-      ret = []
-      each_name(address) {|name| ret << name}
-      return ret
-    end
-
-    def each_name(address)
-      case address
-      when Name
-        ptr = address
-      when IPv4::Regex
-        ptr = IPv4.create(address).to_name
-      when IPv6::Regex
-        ptr = IPv6.create(address).to_name
-      else
-        raise ResolvError.new("cannot interpret as address: #{address}")
-      end
-      each_resource(ptr, Resource::IN::PTR) {|resource| yield resource.name}
-    end
-
-    def getresource(name, typeclass)
-      each_resource(name, typeclass) {|resource| return resource}
-      raise ResolvError.new("DNS result has no information for #{name}")
-    end
-
-    def getresources(name, typeclass)
-      ret = []
-      each_resource(name, typeclass) {|resource| ret << resource}
-      return ret
-    end
-
-    def each_resource(name, typeclass, &proc)
-      lazy_initialize
-      requester = make_requester
-      senders = {}
-      begin
-        @config.resolv(name) {|candidate, tout, nameserver|
-          msg = Message.new
-          msg.rd = 1
-          msg.add_question(candidate, typeclass)
-          unless sender = senders[[candidate, nameserver]]
-            sender = senders[[candidate, nameserver]] =
-              requester.sender(msg, candidate, nameserver)
-          end
-          reply, reply_name = requester.request(sender, tout)
-          case reply.rcode
-          when RCode::NoError
-            extract_resources(reply, reply_name, typeclass, &proc)
-            return
-          when RCode::NXDomain
-            raise Config::NXDomain.new(reply_name.to_s)
-          else
-            raise Config::OtherResolvError.new(reply_name.to_s)
-          end
-        }
-      ensure
-        requester.close
-      end
-    end
-
-    def make_requester # :nodoc:
-      if nameserver = @config.single?
-        Requester::ConnectedUDP.new(nameserver)
-      else
-        Requester::UnconnectedUDP.new
-      end
-    end
-
-    def extract_resources(msg, name, typeclass)
-      if typeclass < Resource::ANY
-        n0 = Name.create(name)
-        msg.each_answer {|n, ttl, data|
-          yield data if n0 == n
-        }
-      end
-      yielded = false
-      n0 = Name.create(name)
-      msg.each_answer {|n, ttl, data|
-        if n0 == n
-          case data
-          when typeclass
-            yield data
-            yielded = true
-          when Resource::CNAME
-            n0 = data.name
-          end
-        end
-      }
-      return if yielded
-      msg.each_answer {|n, ttl, data|
-        if n0 == n
-          case data
-          when typeclass
-            yield data
-          end
-        end
-      }
-    end
-
-    if defined? SecureRandom
-      def self.random(arg) # :nodoc:
-        begin
-          SecureRandom.random_number(arg)
-        rescue NotImplementedError
-          rand(arg)
-        end
-      end
-    else
-      def self.random(arg) # :nodoc:
-        rand(arg)
-      end
-    end
-
-    def self.rangerand(range) # :nodoc:
-      base = range.begin
-      len = range.end - range.begin
-      if !range.exclude_end?
-        len += 1
-      end
-      base + random(len)
-    end
-
-    RequestID = {}
-    RequestIDMutex = Mutex.new
-
-    def self.allocate_request_id(host, port) # :nodoc:
-      id = nil
-      RequestIDMutex.synchronize {
-        h = (RequestID[[host, port]] ||= {})
-        begin
-          id = rangerand(0x0000..0xffff)
-        end while h[id] 
-        h[id] = true
-      }
-      id
-    end
-
-    def self.free_request_id(host, port, id) # :nodoc:
-      RequestIDMutex.synchronize {
-        key = [host, port]
-        if h = RequestID[key]
-          h.delete id
-          if h.empty?
-            RequestID.delete key
-          end
-        end
-      }
-    end
-
-    def self.bind_random_port(udpsock) # :nodoc:
-      begin
-        port = rangerand(1024..65535)
-        udpsock.bind("", port)
-      rescue Errno::EADDRINUSE
-        retry
-      end
-    end
-
-    class Requester
-      def initialize
-        @senders = {}
-        @sock = nil
-      end
-
-      def request(sender, tout)
-        timelimit = Time.now + tout
-        sender.send
-        while (now = Time.now) < timelimit
-          timeout = timelimit - now
-          if !IO.select([@sock], nil, nil, timeout)
-            raise ResolvTimeout
-          end
-          reply, from = recv_reply
-          begin
-            msg = Message.decode(reply)
-          rescue DecodeError
-            next # broken DNS message ignored
-          end
-          if s = @senders[[from,msg.id]]
-            break
-          else
-            # unexpected DNS message ignored
-          end
-        end
-        return msg, s.data
-      end
-
-      def close
-        sock = @sock
-        @sock = nil
-        sock.close if sock
-      end
-
-      class Sender # :nodoc:
-        def initialize(msg, data, sock)
-          @msg = msg
-          @data = data
-          @sock = sock
-        end
-      end
-
-      class UnconnectedUDP < Requester
-        def initialize
-          super()
-          @sock = UDPSocket.new
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-          DNS.bind_random_port(@sock)
-        end
-
-        def recv_reply
-          reply, from = @sock.recvfrom(UDPSize)
-          return reply, [from[3],from[1]]
-        end
-
-        def sender(msg, data, host, port=Port)
-          service = [host, port]
-          id = DNS.allocate_request_id(host, port)
-          request = msg.encode
-          request[0,2] = [id].pack('n')
-          return @senders[[service, id]] =
-            Sender.new(request, data, @sock, host, port)
-        end
-
-        def close
-          super
-          @senders.each_key {|service, id|
-            DNS.free_request_id(service[0], service[1], id)
-          }
-        end
-
-        class Sender < Requester::Sender
-          def initialize(msg, data, sock, host, port)
-            super(msg, data, sock)
-            @host = host
-            @port = port
-          end
-          attr_reader :data
-
-          def send
-            @sock.send(@msg, 0, @host, @port)
-          end
-        end
-      end
-
-      class ConnectedUDP < Requester
-        def initialize(host, port=Port)
-          super()
-          @host = host
-          @port = port
-          @sock = UDPSocket.new(host.index(':') ? Socket::AF_INET6 : Socket::AF_INET)
-          DNS.bind_random_port(@sock)
-          @sock.connect(host, port)
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-        end
-
-        def recv_reply
-          reply = @sock.recv(UDPSize)
-          return reply, nil
-        end
-
-        def sender(msg, data, host=@host, port=@port)
-          unless host == @host && port == @port
-            raise RequestError.new("host/port don't match: #{host}:#{port}")
-          end
-          id = DNS.allocate_request_id(@host, @port)
-          request = msg.encode
-          request[0,2] = [id].pack('n')
-          return @senders[[nil,id]] = Sender.new(request, data, @sock)
-        end
-
-        def close
-          super
-          @senders.each_key {|from, id|
-            DNS.free_request_id(@host, @port, id)
-          }
-        end
-
-        class Sender < Requester::Sender
-          def send
-            @sock.send(@msg, 0)
-          end
-          attr_reader :data
-        end
-      end
-
-      class TCP < Requester
-        def initialize(host, port=Port)
-          super()
-          @host = host
-          @port = port
-          @sock = TCPSocket.new(@host, @port)
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-          @senders = {}
-        end
-
-        def recv_reply
-          len = @sock.read(2).unpack('n')[0]
-          reply = @sock.read(len)
-          return reply, nil
-        end
-
-        def sender(msg, data, host=@host, port=@port)
-          unless host == @host && port == @port
-            raise RequestError.new("host/port don't match: #{host}:#{port}")
-          end
-          id = DNS.allocate_request_id(@host, @port)
-          request = msg.encode
-          request[0,2] = [request.length, id].pack('nn')
-          return @senders[[nil,id]] = Sender.new(request, data, @sock)
-        end
-
-        class Sender < Requester::Sender
-          def send
-            @sock.print(@msg)
-            @sock.flush
-          end
-          attr_reader :data
-        end
-
-        def close
-          super
-          @senders.each_key {|from,id|
-            DNS.free_request_id(@host, @port, id)
-          }
-        end
-      end
-
-      class RequestError < StandardError
-      end
-    end
-
-    class Config
-      def initialize(config_info=nil)
-        @mutex = Mutex.new
-        @config_info = config_info
-        @initialized = nil
-      end
-
-      def Config.parse_resolv_conf(filename)
-        nameserver = []
-        search = nil
-        ndots = 1
-        open(filename) {|f|
-          f.each {|line|
-            line.sub!(/[#;].*/, '')
-            keyword, *args = line.split(/\s+/)
-            args.each { |arg|
-              arg.untaint
-            }
-            next unless keyword
-            case keyword
-            when 'nameserver'
-              nameserver += args
-            when 'domain'
-              next if args.empty?
-              search = [args[0]]
-            when 'search'
-              next if args.empty?
-              search = args
-            when 'options'
-              args.each {|arg|
-                case arg
-                when /\Andots:(\d+)\z/
-                  ndots = $1.to_i
-                end
-              }
-            end
-          }
-        }
-        return { :nameserver => nameserver, :search => search, :ndots => ndots }
-      end
-
-      def Config.default_config_hash(filename="/etc/resolv.conf")
-        if File.exist? filename
-          config_hash = Config.parse_resolv_conf(filename)
-        else
-          if /mswin32|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM
-            require 'win32/resolv'
-            search, nameserver = Win32::Resolv.get_resolv_info
-            config_hash = {}
-            config_hash[:nameserver] = nameserver if nameserver
-            config_hash[:search] = [search].flatten if search
-          end
-        end
-        config_hash
-      end
-
-      def lazy_initialize
-        @mutex.synchronize {
-          unless @initialized
-            @nameserver = []
-            @search = nil
-            @ndots = 1
-            case @config_info
-            when nil
-              config_hash = Config.default_config_hash
-            when String
-              config_hash = Config.parse_resolv_conf(@config_info)
-            when Hash
-              config_hash = @config_info.dup
-              if String === config_hash[:nameserver]
-                config_hash[:nameserver] = [config_hash[:nameserver]]
-              end
-              if String === config_hash[:search]
-                config_hash[:search] = [config_hash[:search]]
-              end
-            else
-              raise ArgumentError.new("invalid resolv configuration: #{@config_info.inspect}")
-            end
-            @nameserver = config_hash[:nameserver] if config_hash.include? :nameserver
-            @search = config_hash[:search] if config_hash.include? :search
-            @ndots = config_hash[:ndots] if config_hash.include? :ndots
-
-            @nameserver = ['0.0.0.0'] if @nameserver.empty?
-            if @search
-              @search = @search.map {|arg| Label.split(arg) }
-            else
-              hostname = Socket.gethostname
-              if /\./ =~ hostname
-                @search = [Label.split($')]
-              else
-                @search = [[]]
-              end
-            end
-
-            if !@nameserver.kind_of?(Array) ||
-               !@nameserver.all? {|ns| String === ns }
-              raise ArgumentError.new("invalid nameserver config: #{@nameserver.inspect}")
-            end
-
-            if !@search.kind_of?(Array) ||
-               !@search.all? {|ls| ls.all? {|l| Label::Str === l } }
-              raise ArgumentError.new("invalid search config: #{@search.inspect}")
-            end
-
-            if !@ndots.kind_of?(Integer)
-              raise ArgumentError.new("invalid ndots config: #{@ndots.inspect}")
-            end
-
-            @initialized = true
-          end
-        }
-        self
-      end
-
-      def single?
-        lazy_initialize
-        if @nameserver.length == 1
-          return @nameserver[0]
-        else
-          return nil
-        end
-      end
-
-      def generate_candidates(name)
-        candidates = nil
-        name = Name.create(name)
-        if name.absolute?
-          candidates = [name]
-        else
-          if @ndots <= name.length - 1
-            candidates = [Name.new(name.to_a)]
-          else
-            candidates = []
-          end
-          candidates.concat(@search.map {|domain| Name.new(name.to_a + domain)})
-        end
-        return candidates
-      end
-
-      InitialTimeout = 5
-
-      def generate_timeouts
-        ts = [InitialTimeout]
-        ts << ts[-1] * 2 / @nameserver.length
-        ts << ts[-1] * 2
-        ts << ts[-1] * 2
-        return ts
-      end
-
-      def resolv(name)
-        candidates = generate_candidates(name)
-        timeouts = generate_timeouts
-        begin
-          candidates.each {|candidate|
-            begin
-              timeouts.each {|tout|
-                @nameserver.each {|nameserver|
-                  begin
-                    yield candidate, tout, nameserver
-                  rescue ResolvTimeout
-                  end
-                }
-              }
-              raise ResolvError.new("DNS resolv timeout: #{name}")
-            rescue NXDomain
-            end
-          }
-        rescue ResolvError
-        end
-      end
-
-      class NXDomain < ResolvError
-      end
-
-      class OtherResolvError < ResolvError
-      end
-    end
-
-    module OpCode
-      Query = 0
-      IQuery = 1
-      Status = 2
-      Notify = 4
-      Update = 5
-    end
-
-    module RCode
-      NoError = 0
-      FormErr = 1
-      ServFail = 2
-      NXDomain = 3
-      NotImp = 4
-      Refused = 5
-      YXDomain = 6
-      YXRRSet = 7
-      NXRRSet = 8
-      NotAuth = 9
-      NotZone = 10
-      BADVERS = 16
-      BADSIG = 16
-      BADKEY = 17
-      BADTIME = 18
-      BADMODE = 19
-      BADNAME = 20
-      BADALG = 21
-    end
-
-    class DecodeError < StandardError
-    end
-
-    class EncodeError < StandardError
-    end
-
-    module Label
-      def self.split(arg)
-        labels = []
-        arg.scan(/[^\.]+/) {labels << Str.new($&)}
-        return labels
-      end
-
-      class Str
-        def initialize(string)
-          @string = string
-          @downcase = string.downcase
-        end
-        attr_reader :string, :downcase
-
-        def to_s
-          return @string
-        end
-
-        def inspect
-          return "#<#{self.class} #{self.to_s}>"
-        end
-
-        def ==(other)
-          return @downcase == other.downcase
-        end
-
-        def eql?(other)
-          return self == other
-        end
-
-        def hash
-          return @downcase.hash
-        end
-      end
-    end
-
-    class Name
-      def self.create(arg)
-        case arg
-        when Name
-          return arg
-        when String
-          return Name.new(Label.split(arg), /\.\z/ =~ arg ? true : false)
-        else
-          raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
-        end
-      end
-
-      def initialize(labels, absolute=true)
-        @labels = labels
-        @absolute = absolute
-      end
-
-      def inspect
-        "#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>"
-      end
-
-      def absolute?
-        return @absolute
-      end
-
-      def ==(other)
-        return false unless Name === other
-        return @labels == other.to_a && @absolute == other.absolute?
-      end
-      alias eql? ==
-
-      # tests subdomain-of relation.
-      #
-      #   domain = Resolv::DNS::Name.create("y.z")
-      #   p Resolv::DNS::Name.create("w.x.y.z").subdomain_of?(domain) #=> true
-      #   p Resolv::DNS::Name.create("x.y.z").subdomain_of?(domain) #=> true
-      #   p Resolv::DNS::Name.create("y.z").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("z").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("x.y.z.").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("w.z").subdomain_of?(domain) #=> false
-      #
-      def subdomain_of?(other)
-        raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other
-        return false if @absolute != other.absolute?
-        other_len = other.length
-        return false if @labels.length <= other_len
-        return @labels[-other_len, other_len] == other.to_a
-      end
-
-      def hash
-        return @labels.hash ^ @absolute.hash
-      end
-
-      def to_a
-        return @labels
-      end
-
-      def length
-        return @labels.length
-      end
-
-      def [](i)
-        return @labels[i]
-      end
-
-      # returns the domain name as a string.
-      #
-      # The domain name doesn't have a trailing dot even if the name object is
-      # absolute.
-      #
-      #   p Resolv::DNS::Name.create("x.y.z.").to_s #=> "x.y.z"
-      #   p Resolv::DNS::Name.create("x.y.z").to_s #=> "x.y.z"
-      #
-      def to_s
-        return @labels.join('.')
-      end
-    end
-
-    class Message
-      @@identifier = -1
-
-      def initialize(id = (@@identifier += 1) & 0xffff)
-        @id = id
-        @qr = 0
-        @opcode = 0
-        @aa = 0
-        @tc = 0
-        @rd = 0 # recursion desired
-        @ra = 0 # recursion available
-        @rcode = 0
-        @question = []
-        @answer = []
-        @authority = []
-        @additional = []
-      end
-
-      attr_accessor :id, :qr, :opcode, :aa, :tc, :rd, :ra, :rcode
-      attr_reader :question, :answer, :authority, :additional
-
-      def ==(other)
-        return @id == other.id &&
-               @qr == other.qr &&
-               @opcode == other.opcode &&
-               @aa == other.aa &&
-               @tc == other.tc &&
-               @rd == other.rd &&
-               @ra == other.ra &&
-               @rcode == other.rcode &&
-               @question == other.question &&
-               @answer == other.answer &&
-               @authority == other.authority &&
-               @additional == other.additional
-      end
-
-      def add_question(name, typeclass)
-        @question << [Name.create(name), typeclass]
-      end
-
-      def each_question
-        @question.each {|name, typeclass|
-          yield name, typeclass
-        }
-      end
-
-      def add_answer(name, ttl, data)
-        @answer << [Name.create(name), ttl, data]
-      end
-
-      def each_answer
-        @answer.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def add_authority(name, ttl, data)
-        @authority << [Name.create(name), ttl, data]
-      end
-
-      def each_authority
-        @authority.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def add_additional(name, ttl, data)
-        @additional << [Name.create(name), ttl, data]
-      end
-
-      def each_additional
-        @additional.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def each_resource
-        each_answer {|name, ttl, data| yield name, ttl, data}
-        each_authority {|name, ttl, data| yield name, ttl, data}
-        each_additional {|name, ttl, data| yield name, ttl, data}
-      end
-
-      def encode
-        return MessageEncoder.new {|msg|
-          msg.put_pack('nnnnnn',
-            @id,
-            (@qr & 1) << 15 |
-            (@opcode & 15) << 11 |
-            (@aa & 1) << 10 |
-            (@tc & 1) << 9 |
-            (@rd & 1) << 8 |
-            (@ra & 1) << 7 |
-            (@rcode & 15),
-            @question.length,
-            @answer.length,
-            @authority.length,
-            @additional.length)
-          @question.each {|q|
-            name, typeclass = q
-            msg.put_name(name)
-            msg.put_pack('nn', typeclass::TypeValue, typeclass::ClassValue)
-          }
-          [@answer, @authority, @additional].each {|rr|
-            rr.each {|r|
-              name, ttl, data = r
-              msg.put_name(name)
-              msg.put_pack('nnN', data.class::TypeValue, data.class::ClassValue, ttl)
-              msg.put_length16 {data.encode_rdata(msg)}
-            }
-          }
-        }.to_s
-      end
-
-      class MessageEncoder
-        def initialize
-          @data = ''
-          @names = {}
-          yield self
-        end
-
-        def to_s
-          return @data
-        end
-
-        def put_bytes(d)
-          @data << d
-        end
-
-        def put_pack(template, *d)
-          @data << d.pack(template)
-        end
-
-        def put_length16
-          length_index = @data.length
-          @data << "\0\0"
-          data_start = @data.length
-          yield
-          data_end = @data.length
-          @data[length_index, 2] = [data_end - data_start].pack("n")
-        end
-
-        def put_string(d)
-          self.put_pack("C", d.length)
-          @data << d
-        end
-
-        def put_string_list(ds)
-          ds.each {|d|
-            self.put_string(d)
-          }
-        end
-
-        def put_name(d)
-          put_labels(d.to_a)
-        end
-
-        def put_labels(d)
-          d.each_index {|i|
-            domain = d[i..-1]
-            if idx = @names[domain]
-              self.put_pack("n", 0xc000 | idx)
-              return
-            else
-              @names[domain] = @data.length
-              self.put_label(d[i])
-            end
-          }
-          @data << "\0"
-        end
-
-        def put_label(d)
-          self.put_string(d.string)
-        end
-      end
-
-      def Message.decode(m)
-        o = Message.new(0)
-        MessageDecoder.new(m) {|msg|
-          id, flag, qdcount, ancount, nscount, arcount =
-            msg.get_unpack('nnnnnn')
-          o.id = id
-          o.qr = (flag >> 15) & 1
-          o.opcode = (flag >> 11) & 15
-          o.aa = (flag >> 10) & 1
-          o.tc = (flag >> 9) & 1
-          o.rd = (flag >> 8) & 1
-          o.ra = (flag >> 7) & 1
-          o.rcode = flag & 15
-          (1..qdcount).each {
-            name, typeclass = msg.get_question
-            o.add_question(name, typeclass)
-          }
-          (1..ancount).each {
-            name, ttl, data = msg.get_rr
-            o.add_answer(name, ttl, data)
-          }
-          (1..nscount).each {
-            name, ttl, data = msg.get_rr
-            o.add_authority(name, ttl, data)
-          }
-          (1..arcount).each {
-            name, ttl, data = msg.get_rr
-            o.add_additional(name, ttl, data)
-          }
-        }
-        return o
-      end
-
-      class MessageDecoder
-        def initialize(data)
-          @data = data
-          @index = 0
-          @limit = data.length
-          yield self
-        end
-
-        def get_length16
-          len, = self.get_unpack('n')
-          save_limit = @limit
-          @limit = @index + len
-          d = yield(len)
-          if @index < @limit
-            raise DecodeError.new("junk exists")
-          elsif @limit < @index
-            raise DecodeError.new("limit exceeded")
-          end
-          @limit = save_limit
-          return d
-        end
-
-        def get_bytes(len = @limit - @index)
-          d = @data[@index, len]
-          @index += len
-          return d
-        end
-
-        def get_unpack(template)
-          len = 0
-          template.each_byte {|byte|
-            case byte
-            when ?c, ?C
-              len += 1
-            when ?n
-              len += 2
-            when ?N
-              len += 4
-            else
-              raise StandardError.new("unsupported template: '#{byte.chr}' in '#{template}'")
-            end
-          }
-          raise DecodeError.new("limit exceeded") if @limit < @index + len
-          arr = @data.unpack("@#{@index}#{template}")
-          @index += len
-          return arr
-        end
-
-        def get_string
-          len = @data[@index]
-          raise DecodeError.new("limit exceeded") if @limit < @index + 1 + len
-          d = @data[@index + 1, len]
-          @index += 1 + len
-          return d
-        end
-
-        def get_string_list
-          strings = []
-          while @index < @limit
-            strings << self.get_string
-          end
-          strings
-        end
-
-        def get_name
-          return Name.new(self.get_labels)
-        end
-
-        def get_labels(limit=nil)
-          limit = @index if !limit || @index < limit
-          d = []
-          while true
-            case @data[@index]
-            when 0
-              @index += 1
-              return d
-            when 192..255
-              idx = self.get_unpack('n')[0] & 0x3fff
-              if limit <= idx
-                raise DecodeError.new("non-backward name pointer")
-              end
-              save_index = @index
-              @index = idx
-              d += self.get_labels(limit)
-              @index = save_index
-              return d
-            else
-              d << self.get_label
-            end
-          end
-          return d
-        end
-
-        def get_label
-          return Label::Str.new(self.get_string)
-        end
-
-        def get_question
-          name = self.get_name
-          type, klass = self.get_unpack("nn")
-          return name, Resource.get_class(type, klass)
-        end
-
-        def get_rr
-          name = self.get_name
-          type, klass, ttl = self.get_unpack('nnN')
-          typeclass = Resource.get_class(type, klass)
-          return name, ttl, self.get_length16 {typeclass.decode_rdata(self)}
-        end
-      end
-    end
-
-    class Query
-      def encode_rdata(msg)
-        raise EncodeError.new("#{self.class} is query.") 
-      end
-
-      def self.decode_rdata(msg)
-        raise DecodeError.new("#{self.class} is query.") 
-      end
-    end
-
-    class Resource < Query
-      ClassHash = {}
-
-      def encode_rdata(msg)
-        raise NotImplementedError.new
-      end
-
-      def self.decode_rdata(msg)
-        raise NotImplementedError.new
-      end
-
-      def ==(other)
-        return self.class == other.class &&
-          self.instance_variables == other.instance_variables &&
-          self.instance_variables.collect {|name| self.instance_eval name} ==
-            other.instance_variables.collect {|name| other.instance_eval name}
-      end
-
-      def eql?(other)
-        return self == other
-      end
-
-      def hash
-        h = 0
-        self.instance_variables.each {|name|
-          h ^= self.instance_eval("#{name}.hash")
-        }
-        return h
-      end
-
-      def self.get_class(type_value, class_value)
-        return ClassHash[[type_value, class_value]] ||
-               Generic.create(type_value, class_value)
-      end
-
-      class Generic < Resource
-        def initialize(data)
-          @data = data
-        end
-        attr_reader :data
-
-        def encode_rdata(msg)
-          msg.put_bytes(data)
-        end
-
-        def self.decode_rdata(msg)
-          return self.new(msg.get_bytes)
-        end
-
-        def self.create(type_value, class_value)
-          c = Class.new(Generic)
-          c.const_set(:TypeValue, type_value)
-          c.const_set(:ClassValue, class_value)
-          Generic.const_set("Type#{type_value}_Class#{class_value}", c)
-          ClassHash[[type_value, class_value]] = c
-          return c
-        end
-      end
-
-      class DomainName < Resource
-        def initialize(name)
-          @name = name
-        end
-        attr_reader :name
-
-        def encode_rdata(msg)
-          msg.put_name(@name)
-        end
-
-        def self.decode_rdata(msg)
-          return self.new(msg.get_name)
-        end
-      end
-
-      # Standard (class generic) RRs
-      ClassValue = nil
-
-      class NS < DomainName
-        TypeValue = 2
-      end
-
-      class CNAME < DomainName
-        TypeValue = 5
-      end
-
-      class SOA < Resource
-        TypeValue = 6
-
-        def initialize(mname, rname, serial, refresh, retry_, expire, minimum)
-          @mname = mname
-          @rname = rname
-          @serial = serial
-          @refresh = refresh
-          @retry = retry_
-          @expire = expire
-          @minimum = minimum
-        end
-        attr_reader :mname, :rname, :serial, :refresh, :retry, :expire, :minimum
-
-        def encode_rdata(msg)
-          msg.put_name(@mname)
-          msg.put_name(@rname)
-          msg.put_pack('NNNNN', @serial, @refresh, @retry, @expire, @minimum)
-        end
-
-        def self.decode_rdata(msg)
-          mname = msg.get_name
-          rname = msg.get_name
-          serial, refresh, retry_, expire, minimum = msg.get_unpack('NNNNN')
-          return self.new(
-            mname, rname, serial, refresh, retry_, expire, minimum)
-        end
-      end
-
-      class PTR < DomainName
-        TypeValue = 12
-      end
-
-      class HINFO < Resource
-        TypeValue = 13
-
-        def initialize(cpu, os)
-          @cpu = cpu
-          @os = os
-        end
-        attr_reader :cpu, :os
-
-        def encode_rdata(msg)
-          msg.put_string(@cpu)
-          msg.put_string(@os)
-        end
-
-        def self.decode_rdata(msg)
-          cpu = msg.get_string
-          os = msg.get_string
-          return self.new(cpu, os)
-        end
-      end
-
-      class MINFO < Resource
-        TypeValue = 14
-
-        def initialize(rmailbx, emailbx)
-          @rmailbx = rmailbx
-          @emailbx = emailbx
-        end
-        attr_reader :rmailbx, :emailbx
-
-        def encode_rdata(msg)
-          msg.put_name(@rmailbx)
-          msg.put_name(@emailbx)
-        end
-
-        def self.decode_rdata(msg)
-          rmailbx = msg.get_string
-          emailbx = msg.get_string
-          return self.new(rmailbx, emailbx)
-        end
-      end
-
-      class MX < Resource
-        TypeValue= 15
-
-        def initialize(preference, exchange)
-          @preference = preference
-          @exchange = exchange
-        end
-        attr_reader :preference, :exchange
-
-        def encode_rdata(msg)
-          msg.put_pack('n', @preference)
-          msg.put_name(@exchange)
-        end
-
-        def self.decode_rdata(msg)
-          preference, = msg.get_unpack('n')
-          exchange = msg.get_name
-          return self.new(preference, exchange)
-        end
-      end
-
-      class TXT < Resource
-        TypeValue = 16
-
-        def initialize(first_string, *rest_strings)
-          @strings = [first_string, *rest_strings]
-        end
-        attr_reader :strings
-
-        def data
-          @strings[0]
-        end
-
-        def encode_rdata(msg)
-          msg.put_string_list(@strings)
-        end
-
-        def self.decode_rdata(msg)
-          strings = msg.get_string_list
-          return self.new(*strings)
-        end
-      end
-
-      class ANY < Query
-        TypeValue = 255
-      end
-
-      ClassInsensitiveTypes = [
-        NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, ANY
-      ]
-
-      # ARPA Internet specific RRs
-      module IN
-        ClassValue = 1
-
-        ClassInsensitiveTypes.each {|s|
-          c = Class.new(s)
-          c.const_set(:TypeValue, s::TypeValue)
-          c.const_set(:ClassValue, ClassValue)
-          ClassHash[[s::TypeValue, ClassValue]] = c
-          self.const_set(s.name.sub(/.*::/, ''), c)
-        }
-
-        class A < Resource
-          ClassHash[[TypeValue = 1, ClassValue = ClassValue]] = self
-
-          def initialize(address)
-            @address = IPv4.create(address)
-          end
-          attr_reader :address
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-          end
-
-          def self.decode_rdata(msg)
-            return self.new(IPv4.new(msg.get_bytes(4)))
-          end
-        end
-
-        class WKS < Resource
-          ClassHash[[TypeValue = 11, ClassValue = ClassValue]] = self
-
-          def initialize(address, protocol, bitmap)
-            @address = IPv4.create(address)
-            @protocol = protocol
-            @bitmap = bitmap
-          end
-          attr_reader :address, :protocol, :bitmap
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-            msg.put_pack("n", @protocol)
-            msg.put_bytes(@bitmap)
-          end
-
-          def self.decode_rdata(msg)
-            address = IPv4.new(msg.get_bytes(4))
-            protocol, = msg.get_unpack("n")
-            bitmap = msg.get_bytes
-            return self.new(address, protocol, bitmap)
-          end
-        end
-
-        class AAAA < Resource
-          ClassHash[[TypeValue = 28, ClassValue = ClassValue]] = self
-
-          def initialize(address)
-            @address = IPv6.create(address)
-          end
-          attr_reader :address
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-          end
-
-          def self.decode_rdata(msg)
-            return self.new(IPv6.new(msg.get_bytes(16)))
-          end
-        end
-
-        # SRV resource record defined in RFC 2782
-        # 
-        # These records identify the hostname and port that a service is
-        # available at.
-        # 
-        # The format is:
-        #   _Service._Proto.Name TTL Class SRV Priority Weight Port Target
-        #
-        # The fields specific to SRV are defined in RFC 2782 as meaning:
-        # - +priority+ The priority of this target host.  A client MUST attempt
-        #   to contact the target host with the lowest-numbered priority it can
-        #   reach; target hosts with the same priority SHOULD be tried in an
-        #   order defined by the weight field.  The range is 0-65535.  Note that
-        #   it is not widely implemented and should be set to zero.
-        # 
-        # - +weight+ A server selection mechanism.  The weight field specifies
-        #   a relative weight for entries with the same priority. Larger weights
-        #   SHOULD be given a proportionately higher probability of being
-        #   selected. The range of this number is 0-65535.  Domain administrators
-        #   SHOULD use Weight 0 when there isn't any server selection to do, to
-        #   make the RR easier to read for humans (less noisy). Note that it is
-        #   not widely implemented and should be set to zero.
-        #
-        # - +port+  The port on this target host of this service.  The range is 0-
-        #   65535.
-        # 
-        # - +target+ The domain name of the target host. A target of "." means
-        #   that the service is decidedly not available at this domain.
-        class SRV < Resource
-          ClassHash[[TypeValue = 33, ClassValue = ClassValue]] = self
-
-          # Create a SRV resource record.
-          def initialize(priority, weight, port, target)
-            @priority = priority.to_int
-            @weight = weight.to_int
-            @port = port.to_int
-            @target = Name.create(target)
-          end
-
-          attr_reader :priority, :weight, :port, :target
-
-          def encode_rdata(msg)
-            msg.put_pack("n", @priority)
-            msg.put_pack("n", @weight)
-            msg.put_pack("n", @port)
-            msg.put_name(@target)
-          end
-
-          def self.decode_rdata(msg)
-            priority, = msg.get_unpack("n")
-            weight,   = msg.get_unpack("n")
-            port,     = msg.get_unpack("n")
-            target    = msg.get_name
-            return self.new(priority, weight, port, target)
-          end
-        end
-
-      end
-    end
-  end
-
-  class IPv4
-    Regex = /\A(\d+)\.(\d+)\.(\d+)\.(\d+)\z/
-
-    def self.create(arg)
-      case arg
-      when IPv4
-        return arg
-      when Regex
-        if (0..255) === (a = $1.to_i) &&
-           (0..255) === (b = $2.to_i) &&
-           (0..255) === (c = $3.to_i) &&
-           (0..255) === (d = $4.to_i)
-          return self.new([a, b, c, d].pack("CCCC"))
-        else
-          raise ArgumentError.new("IPv4 address with invalid value: " + arg)
-        end
-      else
-        raise ArgumentError.new("cannot interpret as IPv4 address: #{arg.inspect}")
-      end
-    end
-
-    def initialize(address)
-      unless address.kind_of?(String) && address.length == 4
-        raise ArgumentError.new('IPv4 address must be 4 bytes')
-      end
-      @address = address
-    end
-    attr_reader :address
-
-    def to_s
-      return sprintf("%d.%d.%d.%d", *@address.unpack("CCCC"))
-    end
-
-    def inspect
-      return "#<#{self.class} #{self.to_s}>"
-    end
-
-    def to_name
-      return DNS::Name.create(
-        '%d.%d.%d.%d.in-addr.arpa.' % @address.unpack('CCCC').reverse)
-    end
-
-    def ==(other)
-      return @address == other.address
-    end
-
-    def eql?(other)
-      return self == other
-    end
-
-    def hash
-      return @address.hash
-    end
-  end
-
-  class IPv6
-    Regex_8Hex = /\A
-      (?:[0-9A-Fa-f]{1,4}:){7}
-         [0-9A-Fa-f]{1,4}
-      \z/x
-
-    Regex_CompressedHex = /\A
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)
-      \z/x
-
-    Regex_6Hex4Dec = /\A
-      ((?:[0-9A-Fa-f]{1,4}:){6,6})
-      (\d+)\.(\d+)\.(\d+)\.(\d+)
-      \z/x
-
-    Regex_CompressedHex4Dec = /\A
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::
-      ((?:[0-9A-Fa-f]{1,4}:)*)
-      (\d+)\.(\d+)\.(\d+)\.(\d+)
-      \z/x
-
-    Regex = /
-      (?:#{Regex_8Hex}) |
-      (?:#{Regex_CompressedHex}) |
-      (?:#{Regex_6Hex4Dec}) |
-      (?:#{Regex_CompressedHex4Dec})/x
-
-    def self.create(arg)
-      case arg
-      when IPv6
-        return arg
-      when String
-        address = ''
-        if Regex_8Hex =~ arg
-          arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
-        elsif Regex_CompressedHex =~ arg
-          prefix = $1
-          suffix = $2
-          a1 = ''
-          a2 = ''
-          prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
-          suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
-          omitlen = 16 - a1.length - a2.length
-          address << a1 << "\0" * omitlen << a2
-        elsif Regex_6Hex4Dec =~ arg
-          prefix, a, b, c, d = $1, $2.to_i, $3.to_i, $4.to_i, $5.to_i
-          if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
-            prefix.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
-            address << [a, b, c, d].pack('CCCC')
-          else
-            raise ArgumentError.new("not numeric IPv6 address: " + arg)
-          end
-        elsif Regex_CompressedHex4Dec =~ arg
-          prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i
-          if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
-            a1 = ''
-            a2 = ''
-            prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
-            suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
-            omitlen = 12 - a1.length - a2.length
-            address << a1 << "\0" * omitlen << a2 << [a, b, c, d].pack('CCCC')
-          else
-            raise ArgumentError.new("not numeric IPv6 address: " + arg)
-          end
-        else
-          raise ArgumentError.new("not numeric IPv6 address: " + arg)
-        end
-        return IPv6.new(address)
-      else
-        raise ArgumentError.new("cannot interpret as IPv6 address: #{arg.inspect}")
-      end
-    end
-
-    def initialize(address)
-      unless address.kind_of?(String) && address.length == 16
-        raise ArgumentError.new('IPv6 address must be 16 bytes')
-      end
-      @address = address
-    end
-    attr_reader :address
-
-    def to_s
-      address = sprintf("%X:%X:%X:%X:%X:%X:%X:%X", *@address.unpack("nnnnnnnn"))
-      unless address.sub!(/(^|:)0(:0)+(:|$)/, '::')
-        address.sub!(/(^|:)0(:|$)/, '::')
-      end
-      return address
-    end
-
-    def inspect
-      return "#<#{self.class} #{self.to_s}>"
-    end
-
-    def to_name
-      # ip6.arpa should be searched too. [RFC3152]
-      return DNS::Name.new(
-        @address.unpack("H32")[0].split(//).reverse + ['ip6', 'int'])
-    end
-
-    def ==(other)
-      return @address == other.address
-    end
-
-    def eql?(other)
-      return self == other
-    end
-
-    def hash
-      return @address.hash
-    end
-  end
-
-  DefaultResolver = self.new
-  AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attlistdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attlistdecl.rb
deleted file mode 100644
index d4b5c38..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attlistdecl.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-#vim:ts=2 sw=2 noexpandtab:
-require 'rexml/child'
-require 'rexml/source'
-
-module REXML
-	# This class needs:
-	# * Documentation
-	# * Work!  Not all types of attlists are intelligently parsed, so we just
-	# spew back out what we get in.  This works, but it would be better if
-	# we formatted the output ourselves.
-	#
-	# AttlistDecls provide *just* enough support to allow namespace
-	# declarations.  If you need some sort of generalized support, or have an
-	# interesting idea about how to map the hideous, terrible design of DTD
-	# AttlistDecls onto an intuitive Ruby interface, let me know.  I'm desperate
-	# for anything to make DTDs more palateable.
-	class AttlistDecl < Child
-		include Enumerable
-
-		# What is this?  Got me.
-		attr_reader :element_name
-
-		# Create an AttlistDecl, pulling the information from a Source.  Notice
-		# that this isn't very convenient; to create an AttlistDecl, you basically
-		# have to format it yourself, and then have the initializer parse it.
-		# Sorry, but for the forseeable future, DTD support in REXML is pretty
-		# weak on convenience.  Have I mentioned how much I hate DTDs?
-		def initialize(source)
-			super()
-			if (source.kind_of? Array)
-				@element_name, @pairs, @contents = *source
-			end
-		end
-	
-		# Access the attlist attribute/value pairs.
-		#  value = attlist_decl[ attribute_name ]
-		def [](key)
-			@pairs[key]
-		end
-
-		# Whether an attlist declaration includes the given attribute definition
-		#  if attlist_decl.include? "xmlns:foobar"
-		def include?(key)
-			@pairs.keys.include? key
-		end
-
-		# Itterate over the key/value pairs:
-		#  attlist_decl.each { |attribute_name, attribute_value| ... }
-		def each(&block)
-			@pairs.each(&block)
-		end
-
-		# Write out exactly what we got in.
-		def write out, indent=-1
-			out << @contents
-		end
-
-		def node_type
-			:attlistdecl
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attribute.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attribute.rb
deleted file mode 100644
index 22ecfc2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/attribute.rb
+++ /dev/null
@@ -1,185 +0,0 @@
-require "rexml/namespace"
-require 'rexml/text'
-
-module REXML
-	# Defines an Element Attribute; IE, a attribute=value pair, as in:
-	# <element attribute="value"/>.  Attributes can be in their own
-	# namespaces.  General users of REXML will not interact with the
-	# Attribute class much.
-	class Attribute
-		include Node
-		include Namespace
-
-		# The element to which this attribute belongs
-		attr_reader :element
-		# The normalized value of this attribute.  That is, the attribute with
-		# entities intact.
-		attr_writer :normalized	
-		PATTERN = /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\2/um
-
-		# Constructor.
-    # FIXME: The parser doesn't catch illegal characters in attributes
-    #
-    # first:: 
-    #   Either: an Attribute, which this new attribute will become a
-    #   clone of; or a String, which is the name of this attribute
-    # second::
-    #   If +first+ is an Attribute, then this may be an Element, or nil.
-    #   If nil, then the Element parent of this attribute is the parent
-    #   of the +first+ Attribute.  If the first argument is a String, 
-    #   then this must also be a String, and is the content of the attribute.  
-    #   If this is the content, it must be fully normalized (contain no
-    #   illegal characters).
-    # parent::
-    #   Ignored unless +first+ is a String; otherwise, may be the Element 
-    #   parent of this attribute, or nil.
-    #
-		#
-		#  Attribute.new( attribute_to_clone )
-		#  Attribute.new( attribute_to_clone, parent_element )
-		#  Attribute.new( "attr", "attr_value" )
-		#  Attribute.new( "attr", "attr_value", parent_element )
-		def initialize( first, second=nil, parent=nil )
-			@normalized = @unnormalized = @element = nil
-			if first.kind_of? Attribute
-				self.name = first.expanded_name
-				@unnormalized = first.value
-				if second.kind_of? Element
-					@element = second
-				else
-					@element = first.element
-				end
-			elsif first.kind_of? String
-				@element = parent
-				self.name = first
-				@normalized = second.to_s
-			else
-				raise "illegal argument #{first.class.name} to Attribute constructor"
-			end
-		end
-
-		# Returns the namespace of the attribute.
-		# 
-		#  e = Element.new( "elns:myelement" )
-		#  e.add_attribute( "nsa:a", "aval" )
-		#  e.add_attribute( "b", "bval" )
-		#  e.attributes.get_attribute( "a" ).prefix   # -> "nsa"
-		#  e.attributes.get_attribute( "b" ).prefix   # -> "elns"
-		#  a = Attribute.new( "x", "y" )
-		#  a.prefix                                   # -> ""
-		def prefix
-			pf = super
-			if pf == ""
-				pf = @element.prefix if @element
-			end
-			pf
-		end
-
-		# Returns the namespace URL, if defined, or nil otherwise
-		# 
-		#  e = Element.new("el")
-		#  e.add_attributes({"xmlns:ns", "http://url"})
-		#  e.namespace( "ns" )              # -> "http://url"
-		def namespace arg=nil
-			arg = prefix if arg.nil?
-			@element.namespace arg
-		end
-
-		# Returns true if other is an Attribute and has the same name and value,
-		# false otherwise.
-		def ==( other )
-			other.kind_of?(Attribute) and other.name==name and other.value==value
-		end
-
-		# Creates (and returns) a hash from both the name and value
-		def hash
-			name.hash ^ value.hash
-		end
-
-		# Returns this attribute out as XML source, expanding the name
-		#
-		#  a = Attribute.new( "x", "y" )
-		#  a.to_string     # -> "x='y'"
-		#  b = Attribute.new( "ns:x", "y" )
-		#  b.to_string     # -> "ns:x='y'"
-		def to_string
-			if @element and @element.context and @element.context[:attribute_quote] == :quote
-				%Q^#@expanded_name="#{to_s().gsub(/"/, '"e;')}"^
-			else
-				"#@expanded_name='#{to_s().gsub(/'/, ''')}'"
-			end
-		end
-
-		# Returns the attribute value, with entities replaced
-		def to_s
-			return @normalized if @normalized
-
-			doctype = nil
-			if @element
-				doc = @element.document
-				doctype = doc.doctype if doc
-			end
-
-			@normalized = Text::normalize( @unnormalized, doctype )
-			@unnormalized = nil
-      @normalized
-		end
-
-		# Returns the UNNORMALIZED value of this attribute.  That is, entities
-		# have been expanded to their values
-		def value
-			return @unnormalized if @unnormalized
-			doctype = nil
-			if @element
-				doc = @element.document
-				doctype = doc.doctype if doc
-			end
-			@unnormalized = Text::unnormalize( @normalized, doctype )
-			@normalized = nil
-      @unnormalized
-		end
-
-		# Returns a copy of this attribute
-		def clone
-			Attribute.new self
-		end
-
-		# Sets the element of which this object is an attribute.  Normally, this
-		# is not directly called.
-		#
-		# Returns this attribute
-		def element=( element )
-			@element = element
-			self
-		end
-
-		# Removes this Attribute from the tree, and returns true if successfull
-		# 
-		# This method is usually not called directly.
-		def remove
-			@element.attributes.delete self.name unless @element.nil?
-		end
-
-		# Writes this attribute (EG, puts 'key="value"' to the output)
-		def write( output, indent=-1 )
-			output << to_string
-		end
-
-    def node_type
-      :attribute
-    end
-
-    def inspect
-      rv = ""
-      write( rv )
-      rv
-    end
-
-    def xpath
-      path = @element.xpath
-      path += "/@#{self.expanded_name}"
-      return path
-    end
-	end
-end
-#vim:ts=2 sw=2 noexpandtab:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/cdata.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/cdata.rb
deleted file mode 100644
index efcb711..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/cdata.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require "rexml/text"
-
-module REXML
-	class CData < Text
-		START = '<![CDATA['
-		STOP = ']]>'
-		ILLEGAL = /(\]\]>)/
-
-		#	Constructor.  CData is data between <![CDATA[ ... ]]>
-		#
-		# _Examples_
-		#  CData.new( source )
-		#  CData.new( "Here is some CDATA" )
-		#  CData.new( "Some unprocessed data", respect_whitespace_TF, parent_element )
-		def initialize( first, whitespace=true, parent=nil )
-			super( first, whitespace, parent, true, true, ILLEGAL )
-		end
-
-		# Make a copy of this object
-		# 
-		# _Examples_
-		#  c = CData.new( "Some text" )
-		#  d = c.clone
-		#  d.to_s        # -> "Some text"
-		def clone
-			CData.new self
-		end
-
-		# Returns the content of this CData object
-		#
-		# _Examples_
-		#  c = CData.new( "Some text" )
-		#  c.to_s        # -> "Some text"
-		def to_s
-			@string
-		end
-
-    def value
-      @string
-    end
-
-    # == DEPRECATED
-    # See the rexml/formatters package
-    #
-		# Generates XML output of this object
-		#
-		# output::
-		#   Where to write the string.  Defaults to $stdout
-		# indent::
-    #   The amount to indent this node by
-		# transitive::
-    #   Ignored
-		# ie_hack::
-    #   Ignored
-		#
-		# _Examples_
-		#  c = CData.new( " Some text " )
-		#  c.write( $stdout )     #->  <![CDATA[ Some text ]]>
-		def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
-      Kernel.warn( "#{self.class.name}.write is deprecated" )
-			indent( output, indent )
-			output << START
-			output << @string
-			output << STOP
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/child.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/child.rb
deleted file mode 100644
index 6d3c9df..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/child.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require "rexml/node"
-
-module REXML
-	##
-	# A Child object is something contained by a parent, and this class
-	# contains methods to support that.  Most user code will not use this
-	# class directly.
-	class Child
-		include Node
-		attr_reader :parent		# The Parent of this object
-
-		# Constructor.  Any inheritors of this class should call super to make
-		# sure this method is called.
-		# parent::
-		#   if supplied, the parent of this child will be set to the
-		#   supplied value, and self will be added to the parent
-		def initialize( parent = nil )
-			@parent = nil  
-			# Declare @parent, but don't define it.  The next line sets the 
-			# parent.
-			parent.add( self ) if parent
-		end
-
-		# Replaces this object with another object.  Basically, calls
-		# Parent.replace_child
-		#
-		# Returns:: self
-		def replace_with( child )
-			@parent.replace_child( self, child )
-			self
-		end
-
-		# Removes this child from the parent.
-		#
-		# Returns:: self
-		def remove
-			unless @parent.nil?
-				@parent.delete self
-			end
-			self
-		end
-
-		# Sets the parent of this child to the supplied argument.
-		#
-		# other::
-		#   Must be a Parent object.  If this object is the same object as the
-		#   existing parent of this child, no action is taken. Otherwise, this
-		#   child is removed from the current parent (if one exists), and is added
-		#   to the new parent.
-		# Returns:: The parent added
-		def parent=( other )
-			return @parent if @parent == other
-			@parent.delete self if defined? @parent and @parent
-			@parent = other
-		end
-
-		alias :next_sibling :next_sibling_node
-		alias :previous_sibling :previous_sibling_node
-
-		# Sets the next sibling of this child.  This can be used to insert a child
-		# after some other child.
-		#  a = Element.new("a")
-		#  b = a.add_element("b")
-		#  c = Element.new("c")
-		#  b.next_sibling = c
-		#  # => <a><b/><c/></a>
-		def next_sibling=( other )
-		  parent.insert_after self, other
-		end
-
-		# Sets the previous sibling of this child.  This can be used to insert a 
-		# child before some other child.
-		#  a = Element.new("a")
-		#  b = a.add_element("b")
-		#  c = Element.new("c")
-		#  b.previous_sibling = c
-		#  # => <a><b/><c/></a>
-		def previous_sibling=(other)
-		  parent.insert_before self, other
-		end
-
-		# Returns:: the document this child belongs to, or nil if this child
-		# belongs to no document
-		def document
-			return parent.document unless parent.nil?
-			nil
-		end
-
-		# This doesn't yet handle encodings
-		def bytes
-			encoding = document.encoding
-
-			to_s
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/comment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/comment.rb
deleted file mode 100644
index 2b9b4b8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/comment.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require "rexml/child"
-
-module REXML
-	##
-	# Represents an XML comment; that is, text between \<!-- ... -->
-	class Comment < Child
-		include Comparable
-		START = "<!--"
-		STOP = "-->"
-
-		# The content text
-
-		attr_accessor :string
-
-		##
-		# Constructor.  The first argument can be one of three types:
-		# @param first If String, the contents of this comment are set to the 
-		# argument.  If Comment, the argument is duplicated.  If
-		# Source, the argument is scanned for a comment.
-		# @param second If the first argument is a Source, this argument 
-		# should be nil, not supplied, or a Parent to be set as the parent 
-		# of this object
-		def initialize( first, second = nil )
-			#puts "IN COMMENT CONSTRUCTOR; SECOND IS #{second.type}"
-			super(second)
-			if first.kind_of? String
-				@string = first
-			elsif first.kind_of? Comment
-				@string = first.string
-			end
-		end
-
-		def clone
-			Comment.new self
-		end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-		# output::
-		#	 Where to write the string
-		# indent::
-		#	 An integer.	If -1, no indenting will be used; otherwise, the
-		#	 indentation will be this number of spaces, and children will be
-		#	 indented an additional amount.
-		# transitive::
-		#	 Ignored by this class.	The contents of comments are never modified.
-		# ie_hack::
-		#	 Needed for conformity to the child API, but not used by this class.
-		def write( output, indent=-1, transitive=false, ie_hack=false )
-      Kernel.warn("Comment.write is deprecated.  See REXML::Formatters")
-			indent( output, indent )
-			output << START
-			output << @string
-			output << STOP
-		end
-
-		alias :to_s :string
-
-		##
-		# Compares this Comment to another; the contents of the comment are used
-		# in the comparison.
-		def <=>(other)
-			other.to_s <=> @string
-		end
-
-		##
-		# Compares this Comment to another; the contents of the comment are used
-		# in the comparison.
-		def ==( other )
-			other.kind_of? Comment and
-			(other <=> self) == 0
-		end
-
-    def node_type
-      :comment
-    end
-	end
-end
-#vim:ts=2 sw=2 noexpandtab:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/doctype.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/doctype.rb
deleted file mode 100644
index 05cd4ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/doctype.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-require "rexml/parent"
-require "rexml/parseexception"
-require "rexml/namespace"
-require 'rexml/entity'
-require 'rexml/attlistdecl'
-require 'rexml/xmltokens'
-
-module REXML
-  # Represents an XML DOCTYPE declaration; that is, the contents of <!DOCTYPE
-  # ... >.  DOCTYPES can be used to declare the DTD of a document, as well as
-  # being used to declare entities used in the document.
-  class DocType < Parent
-    include XMLTokens
-    START = "<!DOCTYPE"
-    STOP = ">"
-    SYSTEM = "SYSTEM"
-    PUBLIC = "PUBLIC"
-    DEFAULT_ENTITIES = { 
-      'gt'=>EntityConst::GT, 
-      'lt'=>EntityConst::LT, 
-      'quot'=>EntityConst::QUOT, 
-      "apos"=>EntityConst::APOS 
-    }
-
-    # name is the name of the doctype
-    # external_id is the referenced DTD, if given
-    attr_reader :name, :external_id, :entities, :namespaces
-
-    # Constructor
-    #
-    #   dt = DocType.new( 'foo', '-//I/Hate/External/IDs' )
-    #   # <!DOCTYPE foo '-//I/Hate/External/IDs'>
-    #   dt = DocType.new( doctype_to_clone )
-    #   # Incomplete.  Shallow clone of doctype
-    #
-    # +Note+ that the constructor: 
-    #
-    #  Doctype.new( Source.new( "<!DOCTYPE foo 'bar'>" ) )
-    #
-    # is _deprecated_.  Do not use it.  It will probably disappear.
-    def initialize( first, parent=nil )
-      @entities = DEFAULT_ENTITIES
-      @long_name = @uri = nil
-      if first.kind_of? String
-        super()
-        @name = first
-        @external_id = parent
-      elsif first.kind_of? DocType
-        super( parent )
-        @name = first.name
-        @external_id = first.external_id
-      elsif first.kind_of? Array
-        super( parent )
-        @name = first[0]
-        @external_id = first[1]
-        @long_name = first[2]
-        @uri = first[3]
-      elsif first.kind_of? Source
-        super( parent )
-        parser = Parsers::BaseParser.new( first )
-        event = parser.pull
-        if event[0] == :start_doctype
-          @name, @external_id, @long_name, @uri, = event[1..-1]
-        end
-      else
-        super()
-      end
-    end
-
-    def node_type
-      :doctype
-    end
-
-    def attributes_of element
-      rv = []
-      each do |child|
-        child.each do |key,val|
-          rv << Attribute.new(key,val)
-        end if child.kind_of? AttlistDecl and child.element_name == element
-      end
-      rv
-    end
-
-    def attribute_of element, attribute
-      att_decl = find do |child|
-        child.kind_of? AttlistDecl and
-        child.element_name == element and
-        child.include? attribute
-      end
-      return nil unless att_decl
-      att_decl[attribute]
-    end
-
-    def clone
-      DocType.new self
-    end
-
-    # output::
-    #   Where to write the string
-    # indent::
-    #   An integer.  If -1, no indentation will be used; otherwise, the
-    #   indentation will be this number of spaces, and children will be
-    #   indented an additional amount.
-    # transitive::
-    #   Ignored
-    # ie_hack::
-    #   Ignored
-    def write( output, indent=0, transitive=false, ie_hack=false )
-      f = REXML::Formatters::Default.new
-      indent( output, indent )
-      output << START
-      output << ' '
-      output << @name
-      output << " #@external_id" if @external_id
-      output << " #{@long_name.inspect}" if @long_name
-      output << " #{@uri.inspect}" if @uri
-      unless @children.empty?
-        next_indent = indent + 1
-        output << ' ['
-        child = nil    # speed
-        @children.each { |child|
-          output << "\n"
-          f.write( child, output )
-        }
-        output << "\n]"
-      end
-      output << STOP
-    end
-
-    def context
-      @parent.context
-    end
-
-    def entity( name )
-      @entities[name].unnormalized if @entities[name]
-    end
-
-    def add child
-      super(child)
-      @entities = DEFAULT_ENTITIES.clone if @entities == DEFAULT_ENTITIES
-      @entities[ child.name ] = child if child.kind_of? Entity
-    end
-    
-    # This method retrieves the public identifier identifying the document's 
-    # DTD.
-    #
-    # Method contributed by Henrik Martensson
-    def public
-      case @external_id
-      when "SYSTEM"
-        nil
-      when "PUBLIC"
-        strip_quotes(@long_name)
-      end
-    end
-    
-    # This method retrieves the system identifier identifying the document's DTD
-    #
-    # Method contributed by Henrik Martensson
-    def system
-      case @external_id
-      when "SYSTEM"
-        strip_quotes(@long_name)
-      when "PUBLIC"
-        @uri.kind_of?(String) ? strip_quotes(@uri) : nil
-      end
-    end
-    
-    # This method returns a list of notations that have been declared in the
-    # _internal_ DTD subset. Notations in the external DTD subset are not 
-    # listed.
-    #
-    # Method contributed by Henrik Martensson
-    def notations
-      children().select {|node| node.kind_of?(REXML::NotationDecl)}
-    end
-    
-    # Retrieves a named notation. Only notations declared in the internal
-    # DTD subset can be retrieved.
-    #
-    # Method contributed by Henrik Martensson
-    def notation(name)
-      notations.find { |notation_decl|
-        notation_decl.name == name
-      }
-    end
-    
-    private
-    
-    # Method contributed by Henrik Martensson
-    def strip_quotes(quoted_string)
-      quoted_string =~ /^[\'\"].*[\´\"]$/ ?
-        quoted_string[1, quoted_string.length-2] :
-        quoted_string
-    end
-  end
-
-  # We don't really handle any of these since we're not a validating
-  # parser, so we can be pretty dumb about them.  All we need to be able
-  # to do is spew them back out on a write()
-
-  # This is an abstract class.  You never use this directly; it serves as a
-  # parent class for the specific declarations.
-  class Declaration < Child
-    def initialize src
-      super()
-      @string = src
-    end
-
-    def to_s
-      @string+'>'
-    end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    def write( output, indent )
-      output << to_s
-    end
-  end
-  
-  public
-  class ElementDecl < Declaration
-    def initialize( src )
-      super
-    end
-  end
-
-  class ExternalEntity < Child
-    def initialize( src )
-      super()
-      @entity = src
-    end
-    def to_s
-      @entity
-    end
-    def write( output, indent )
-      output << @entity
-    end
-  end
-
-  class NotationDecl < Child
-    attr_accessor :public, :system
-    def initialize name, middle, pub, sys
-      super(nil)
-      @name = name
-      @middle = middle
-      @public = pub
-      @system = sys
-    end
-
-    def to_s
-      "<!NOTATION #@name #@middle#{
-        @public ? ' ' + public.inspect : '' 
-      }#{
-        @system ? ' ' + at system.inspect : ''
-      }>"
-    end
-
-    def write( output, indent=-1 )
-      output << to_s
-    end
-    
-    # This method retrieves the name of the notation.
-    #
-    # Method contributed by Henrik Martensson
-    def name
-      @name
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/document.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/document.rb
deleted file mode 100644
index fbb1330..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/document.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-require "rexml/element"
-require "rexml/xmldecl"
-require "rexml/source"
-require "rexml/comment"
-require "rexml/doctype"
-require "rexml/instruction"
-require "rexml/rexml"
-require "rexml/parseexception"
-require "rexml/output"
-require "rexml/parsers/baseparser"
-require "rexml/parsers/streamparser"
-require "rexml/parsers/treeparser"
-
-module REXML
-  # Represents a full XML document, including PIs, a doctype, etc.  A
-  # Document has a single child that can be accessed by root().
-  # Note that if you want to have an XML declaration written for a document
-  # you create, you must add one; REXML documents do not write a default
-	# declaration for you.  See |DECLARATION| and |write|.
-	class Document < Element
-		# A convenient default XML declaration.  If you want an XML declaration,
-		# the easiest way to add one is mydoc << Document::DECLARATION
-    # +DEPRECATED+
-    # Use: mydoc << XMLDecl.default
-		DECLARATION = XMLDecl.default
-
-		# Constructor
-		# @param source if supplied, must be a Document, String, or IO. 
-		# Documents have their context and Element attributes cloned.
-	  # Strings are expected to be valid XML documents.  IOs are expected
-	  # to be sources of valid XML documents.
-	  # @param context if supplied, contains the context of the document;
-	  # this should be a Hash.
-		def initialize( source = nil, context = {} )
-			super()
-			@context = context
-			return if source.nil?
-			if source.kind_of? Document
-				@context = source.context
-				super source
-			else
-				build(  source )
-			end
-		end
-
-    def node_type
-      :document
-    end
-
-		# Should be obvious
-		def clone
-			Document.new self
-		end
-
-		# According to the XML spec, a root node has no expanded name
-		def expanded_name
-			''
-			#d = doc_type
-			#d ? d.name : "UNDEFINED"
-		end
-
-		alias :name :expanded_name
-
-		# We override this, because XMLDecls and DocTypes must go at the start
-		# of the document
-		def add( child )
-			if child.kind_of? XMLDecl
-				@children.unshift child
-        child.parent = self
-			elsif child.kind_of? DocType
-        # Find first Element or DocType node and insert the decl right 
-        # before it.  If there is no such node, just insert the child at the
-        # end.  If there is a child and it is an DocType, then replace it.
-        insert_before_index = 0
-        @children.find { |x| 
-          insert_before_index += 1
-          x.kind_of?(Element) || x.kind_of?(DocType)
-        }
-        if @children[ insert_before_index ] # Not null = not end of list
-          if @children[ insert_before_index ].kind_of DocType
-            @children[ insert_before_index ] = child
-          else
-            @children[ index_before_index-1, 0 ] = child
-          end
-        else  # Insert at end of list
-          @children[insert_before_index] = child
-        end
-				child.parent = self
-			else
-				rv = super
-				raise "attempted adding second root element to document" if @elements.size > 1
-				rv
-			end
-		end
-		alias :<< :add
-
-		def add_element(arg=nil, arg2=nil)
-			rv = super
-			raise "attempted adding second root element to document" if @elements.size > 1
-			rv
-		end
-
-		# @return the root Element of the document, or nil if this document
-		# has no children.
-		def root
-      elements[1]
-      #self
-      #@children.find { |item| item.kind_of? Element }
-		end
-
-		# @return the DocType child of the document, if one exists,
-		# and nil otherwise.
-		def doctype
-			@children.find { |item| item.kind_of? DocType }
-		end
-
-		# @return the XMLDecl of this document; if no XMLDecl has been
-		# set, the default declaration is returned.
-		def xml_decl
-			rv = @children[0]
-      return rv if rv.kind_of? XMLDecl
-      rv = @children.unshift(XMLDecl.default)[0]
-		end
-
-		# @return the XMLDecl version of this document as a String.
-		# If no XMLDecl has been set, returns the default version.
-		def version
-			xml_decl().version
-		end
-
-		# @return the XMLDecl encoding of this document as a String.
-		# If no XMLDecl has been set, returns the default encoding.
-		def encoding
-			xml_decl().encoding
-		end
-
-		# @return the XMLDecl standalone value of this document as a String.
-		# If no XMLDecl has been set, returns the default setting.
-		def stand_alone?
-			xml_decl().stand_alone?
-		end
-
-    # Write the XML tree out, optionally with indent.  This writes out the
-    # entire XML document, including XML declarations, doctype declarations,
-    # and processing instructions (if any are given).
-    #
-    # A controversial point is whether Document should always write the XML
-    # declaration (<?xml version='1.0'?>) whether or not one is given by the
-    # user (or source document).  REXML does not write one if one was not
-    # specified, because it adds unneccessary bandwidth to applications such
-    # as XML-RPC.
-    #
-    # See also the classes in the rexml/formatters package for the proper way
-    # to change the default formatting of XML output
-    #
-    # _Examples_
-    #   Document.new("<a><b/></a>").serialize
-    #
-    #   output_string = ""
-    #   tr = Transitive.new( output_string )
-    #   Document.new("<a><b/></a>").serialize( tr )
-    #
-    # output::
-    #	  output an object which supports '<< string'; this is where the
-    #   document will be written.
-    # indent::
-    #   An integer.  If -1, no indenting will be used; otherwise, the
-    #   indentation will be twice this number of spaces, and children will be
-    #   indented an additional amount.  For a value of 3, every item will be 
-    #   indented 3 more levels, or 6 more spaces (2 * 3). Defaults to -1
-    # trans::
-    #   If transitive is true and indent is >= 0, then the output will be
-    #   pretty-printed in such a way that the added whitespace does not affect
-    #   the absolute *value* of the document -- that is, it leaves the value
-    #   and number of Text nodes in the document unchanged.
-    # ie_hack::
-    #   Internet Explorer is the worst piece of #### to have ever been
-    #   written, with the possible exception of Windows itself.  Since IE is
-    #   unable to parse proper XML, we have to provide a hack to generate XML
-    #   that IE's limited abilities can handle.  This hack inserts a space 
-    #   before the /> on empty tags.  Defaults to false
-		def write( output=$stdout, indent=-1, trans=false, ie_hack=false )
-      if xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
-        output = Output.new( output, xml_decl.encoding )
-      end
-      formatter = if indent > -1
-          if trans
-            REXML::Formatters::Transitive.new( indent, ie_hack )
-          else
-            REXML::Formatters::Pretty.new( indent, ie_hack )
-          end
-        else
-          REXML::Formatters::Default.new( ie_hack )
-        end
-      formatter.write( self, output )
-		end
-
-		
-		def Document::parse_stream( source, listener )
-			Parsers::StreamParser.new( source, listener ).parse
-		end
-
-		private
-		def build( source )
-      Parsers::TreeParser.new( source, self ).parse
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/attlistdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/attlistdecl.rb
deleted file mode 100644
index e176bb0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/attlistdecl.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class AttlistDecl < Child
-			START = "<!ATTLIST"
-			START_RE = /^\s*#{START}/um
-			PATTERN_RE = /\s*(#{START}.*?>)/um
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/dtd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/dtd.rb
deleted file mode 100644
index 4f735d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/dtd.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require "rexml/dtd/elementdecl"
-require "rexml/dtd/entitydecl"
-require "rexml/comment"
-require "rexml/dtd/notationdecl"
-require "rexml/dtd/attlistdecl"
-require "rexml/parent"
-
-module REXML
-	module DTD
-		class Parser
-			def Parser.parse( input )
-				case input
-				when String
-					parse_helper input
-				when File
-					parse_helper input.read
-				end
-			end
-
-			# Takes a String and parses it out
-			def Parser.parse_helper( input )
-				contents = Parent.new
-				while input.size > 0
-					case input
-					when ElementDecl.PATTERN_RE
-						match = $&
-						source = $'
-						contents << ElementDecl.new( match )
-					when AttlistDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << AttlistDecl.new( matchdata )
-					when EntityDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << EntityDecl.new( matchdata )
-					when Comment.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << Comment.new( matchdata )
-					when NotationDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << NotationDecl.new( matchdata )
-					end
-				end
-				contents
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/elementdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/elementdecl.rb
deleted file mode 100644
index c4e620f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/elementdecl.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class ElementDecl < Child
-			START = "<!ELEMENT"
-			START_RE = /^\s*#{START}/um
-			PATTERN_RE = /^\s*(#{START}.*?)>/um
-			PATTERN_RE = /^\s*#{START}\s+((?:[:\w_][-\.\w_]*:)?[-!\*\.\w_]*)(.*?)>/
-			#\s*((((["']).*?\5)|[^\/'">]*)*?)(\/)?>/um, true)
-
-			def initialize match
-				@name = match[1]
-				@rest = match[2]
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/entitydecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/entitydecl.rb
deleted file mode 100644
index a5f1520..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/entitydecl.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class EntityDecl < Child
-			START = "<!ENTITY"
-			START_RE = /^\s*#{START}/um
-			PUBLIC = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+PUBLIC\s+((["']).*?\3)\s+((["']).*?\5)\s*>/um
-			SYSTEM = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+SYSTEM\s+((["']).*?\3)(?:\s+NDATA\s+\w+)?\s*>/um
-			PLAIN = /^\s*#{START}\s+(\w+)\s+((["']).*?\3)\s*>/um
-			PERCENT = /^\s*#{START}\s+%\s+(\w+)\s+((["']).*?\3)\s*>/um
-			# <!ENTITY name SYSTEM "...">
-			# <!ENTITY name "...">
-			def initialize src
-				super()
-				md = nil
-				if src.match( PUBLIC )
-					md = src.match( PUBLIC, true )
-					@middle = "PUBLIC"
-					@content = "#{md[2]} #{md[4]}"
-				elsif src.match( SYSTEM )
-					md = src.match( SYSTEM, true )
-					@middle = "SYSTEM"
-					@content = md[2]
-				elsif src.match( PLAIN )
-					md = src.match( PLAIN, true )
-					@middle = ""
-					@content = md[2]
-				elsif src.match( PERCENT )
-					md = src.match( PERCENT, true )
-					@middle = ""
-					@content = md[2]
-				end
-				raise ParseException.new("failed Entity match", src) if md.nil?
-				@name = md[1]
-			end
-
-			def to_s
-				rv = "<!ENTITY #@name "
-				rv << "#@middle " if @middle.size > 0
-				rv << @content
-				rv
-			end
-
-			def write( output, indent )
-        indent( output, indent )
-				output << to_s
-			end
-
-			def EntityDecl.parse_source source, listener
-				md = source.match( PATTERN_RE, true )
-				thing = md[0].squeeze(" \t\n\r")
-				listener.send inspect.downcase, thing 
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/notationdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/notationdecl.rb
deleted file mode 100644
index a47ff8f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/dtd/notationdecl.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class NotationDecl < Child
-			START = "<!NOTATION"
-			START_RE = /^\s*#{START}/um
-			PUBLIC = /^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
-			SYSTEM = /^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um
-			def initialize src
-				super()
-				if src.match( PUBLIC )
-					md = src.match( PUBLIC, true )
-				elsif src.match( SYSTEM )
-					md = src.match( SYSTEM, true )
-				else
-					raise ParseException.new( "error parsing notation: no matching pattern", src )
-				end
-				@name = md[1]
-				@middle = md[2]
-				@rest = md[3]
-			end
-
-			def to_s
-				"<!NOTATION #@name #@middle #@rest>"
-			end
-
-			def write( output, indent )
-        indent( output, indent )
-				output << to_s
-			end
-
-			def NotationDecl.parse_source source, listener
-				md = source.match( PATTERN_RE, true )
-				thing = md[0].squeeze(" \t\n\r")
-				listener.send inspect.downcase, thing 
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/element.rb
deleted file mode 100644
index 9764d34..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/element.rb
+++ /dev/null
@@ -1,1227 +0,0 @@
-require "rexml/parent"
-require "rexml/namespace"
-require "rexml/attribute"
-require "rexml/cdata"
-require "rexml/xpath"
-require "rexml/parseexception"
-
-module REXML
-  # An implementation note about namespaces:
-  # As we parse, when we find namespaces we put them in a hash and assign
-  # them a unique ID.  We then convert the namespace prefix for the node
-  # to the unique ID.  This makes namespace lookup much faster for the
-  # cost of extra memory use.  We save the namespace prefix for the
-  # context node and convert it back when we write it.
-  @@namespaces = {}
-
-  # Represents a tagged XML element.  Elements are characterized by
-  # having children, attributes, and names, and can themselves be
-  # children.
-  class Element < Parent
-    include Namespace
-
-    UNDEFINED = "UNDEFINED";		# The default name
-
-    # Mechanisms for accessing attributes and child elements of this
-    # element.
-    attr_reader :attributes, :elements
-    # The context holds information about the processing environment, such as
-    # whitespace handling.
-    attr_accessor :context
-
-    # Constructor
-    # arg:: 
-    # 	if not supplied, will be set to the default value.
-    # 	If a String, the name of this object will be set to the argument.
-    # 	If an Element, the object will be shallowly cloned; name, 
-    # 	attributes, and namespaces will be copied.  Children will +not+ be
-    # 	copied.
-    # parent:: 
-    # 	if supplied, must be a Parent, and will be used as
-    # 	the parent of this object.
-    # context::
-    # 	If supplied, must be a hash containing context items.  Context items
-    # 	include:
-    # * <tt>:respect_whitespace</tt> the value of this is :+all+ or an array of
-    #   strings being the names of the elements to respect
-    #   whitespace for.  Defaults to :+all+.
-    # * <tt>:compress_whitespace</tt> the value can be :+all+ or an array of
-    #   strings being the names of the elements to ignore whitespace on.
-    #   Overrides :+respect_whitespace+.
-    # * <tt>:ignore_whitespace_nodes</tt> the value can be :+all+ or an array
-    #   of strings being the names of the elements in which to ignore
-    #   whitespace-only nodes.  If this is set, Text nodes which contain only
-    #   whitespace will not be added to the document tree.
-    # * <tt>:raw</tt> can be :+all+, or an array of strings being the names of
-    #   the elements to process in raw mode.  In raw mode, special
-    #   characters in text is not converted to or from entities.
-    def initialize( arg = UNDEFINED, parent=nil, context=nil )
-      super(parent)
-
-      @elements = Elements.new(self)
-      @attributes = Attributes.new(self)
-      @context = context
-
-      if arg.kind_of? String
-        self.name = arg
-      elsif arg.kind_of? Element
-        self.name = arg.expanded_name
-        arg.attributes.each_attribute{ |attribute|
-          @attributes << Attribute.new( attribute )
-        }
-        @context = arg.context
-      end
-    end
-
-    def inspect
-      rv = "<#@expanded_name"
-
-      @attributes.each_attribute do |attr|
-        rv << " "
-        attr.write( rv, 0 )
-      end
-
-      if children.size > 0
-        rv << "> ... </>"
-      else
-        rv << "/>"
-      end
-    end
-
-
-    # Creates a shallow copy of self.
-    #   d = Document.new "<a><b/><b/><c><d/></c></a>"
-    #   new_a = d.root.clone
-    #   puts new_a  # => "<a/>"
-    def clone
-      self.class.new self
-    end
-
-    # Evaluates to the root node of the document that this element 
-    # belongs to. If this element doesn't belong to a document, but does
-    # belong to another Element, the parent's root will be returned, until the
-    # earliest ancestor is found.
-    #
-    # Note that this is not the same as the document element.
-    # In the following example, <a> is the document element, and the root
-    # node is the parent node of the document element.  You may ask yourself
-    # why the root node is useful: consider the doctype and XML declaration,
-    # and any processing instructions before the document element... they
-    # are children of the root node, or siblings of the document element.
-    # The only time this isn't true is when an Element is created that is
-    # not part of any Document.  In this case, the ancestor that has no
-    # parent acts as the root node.
-    #  d = Document.new '<a><b><c/></b></a>'
-    #  a = d[1] ; c = a[1][1]
-    #  d.root_node == d   # TRUE
-    #  a.root_node        # namely, d
-    #  c.root_node        # again, d
-    def root_node
-      parent.nil? ? self : parent.root_node
-    end
-
-    def root
-      return elements[1] if self.kind_of? Document
-      return self if parent.kind_of? Document or parent.nil?
-      return parent.root
-    end
-
-    # Evaluates to the document to which this element belongs, or nil if this
-    # element doesn't belong to a document.
-    def document
-      rt = root
-      rt.parent if rt
-    end
-
-    # Evaluates to +true+ if whitespace is respected for this element.  This
-    # is the case if:
-    # 1. Neither :+respect_whitespace+ nor :+compress_whitespace+ has any value
-    # 2. The context has :+respect_whitespace+ set to :+all+ or
-    #    an array containing the name of this element, and 
-    #    :+compress_whitespace+ isn't set to :+all+ or an array containing the 
-    #    name of this element.
-    # The evaluation is tested against +expanded_name+, and so is namespace
-    # sensitive.
-    def whitespace
-      @whitespace = nil
-      if @context
-        if @context[:respect_whitespace]
-          @whitespace = (@context[:respect_whitespace] == :all or
-                         @context[:respect_whitespace].include? expanded_name)
-        end
-        @whitespace = false if (@context[:compress_whitespace] and
-                                (@context[:compress_whitespace] == :all or
-                                 @context[:compress_whitespace].include? expanded_name)
-                               )
-      end
-      @whitespace = true unless @whitespace == false
-      @whitespace
-    end
-
-    def ignore_whitespace_nodes
-      @ignore_whitespace_nodes = false
-      if @context
-        if @context[:ignore_whitespace_nodes]
-          @ignore_whitespace_nodes = 
-            (@context[:ignore_whitespace_nodes] == :all or
-             @context[:ignore_whitespace_nodes].include? expanded_name)
-        end
-      end
-    end
-
-    # Evaluates to +true+ if raw mode is set for this element.  This
-    # is the case if the context has :+raw+ set to :+all+ or
-    # an array containing the name of this element.
-    #
-    # The evaluation is tested against +expanded_name+, and so is namespace
-    # sensitive.
-    def raw
-      @raw = (@context and @context[:raw] and
-              (@context[:raw] == :all or
-               @context[:raw].include? expanded_name))
-               @raw
-    end
-
-    #once :whitespace, :raw, :ignore_whitespace_nodes
-
-    #################################################
-    # Namespaces                                    #
-    #################################################
-
-    # Evaluates to an +Array+ containing the prefixes (names) of all defined
-    # namespaces at this context node.
-    #  doc = Document.new("<a xmlns:x='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
-    #  doc.elements['//b'].prefixes # -> ['x', 'y']
-    def prefixes
-      prefixes = []
-      prefixes = parent.prefixes if parent
-      prefixes |= attributes.prefixes
-      return prefixes
-    end
-
-    def namespaces
-      namespaces = {}
-      namespaces = parent.namespaces if parent
-      namespaces = namespaces.merge( attributes.namespaces )
-      return namespaces
-    end
-
-    # Evalutas to the URI for a prefix, or the empty string if no such 
-    # namespace is declared for this element. Evaluates recursively for
-    # ancestors.  Returns the default namespace, if there is one.
-    # prefix:: 
-    #   the prefix to search for.  If not supplied, returns the default
-    #   namespace if one exists
-    # Returns:: 
-    #   the namespace URI as a String, or nil if no such namespace
-    #   exists.  If the namespace is undefined, returns an empty string
-    #  doc = Document.new("<a xmlns='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
-    #  b = doc.elements['//b']
-    #  b.namespace           # -> '1'
-    #  b.namespace("y")      # -> '2'
-    def namespace(prefix=nil)
-      if prefix.nil?
-        prefix = prefix()
-      end
-      if prefix == ''
-        prefix = "xmlns"
-      else
-        prefix = "xmlns:#{prefix}" unless prefix[0,5] == 'xmlns'
-      end
-      ns = attributes[ prefix ]
-      ns = parent.namespace(prefix) if ns.nil? and parent
-      ns = '' if ns.nil? and prefix == 'xmlns'
-      return ns
-    end
-
-    # Adds a namespace to this element.
-    # prefix:: 
-    #   the prefix string, or the namespace URI if +uri+ is not
-    #   supplied
-    # uri::    
-    #   the namespace URI.  May be nil, in which +prefix+ is used as
-    #   the URI
-    # Evaluates to: this Element
-    #  a = Element.new("a")
-    #  a.add_namespace("xmlns:foo", "bar" )
-    #  a.add_namespace("foo", "bar")  # shorthand for previous line
-    #  a.add_namespace("twiddle")
-    #  puts a   #-> <a xmlns:foo='bar' xmlns='twiddle'/>
-    def add_namespace( prefix, uri=nil )
-      unless uri
-        @attributes["xmlns"] = prefix
-      else
-        prefix = "xmlns:#{prefix}" unless prefix =~ /^xmlns:/
-        @attributes[ prefix ] = uri
-      end
-      self
-    end
-
-    # Removes a namespace from this node.  This only works if the namespace is
-    # actually declared in this node.  If no argument is passed, deletes the
-    # default namespace.
-    #
-    # Evaluates to: this element
-    #  doc = Document.new "<a xmlns:foo='bar' xmlns='twiddle'/>"
-    #  doc.root.delete_namespace
-    #  puts doc     # -> <a xmlns:foo='bar'/>
-    #  doc.root.delete_namespace 'foo'
-    #  puts doc     # -> <a/>
-    def delete_namespace namespace="xmlns"
-      namespace = "xmlns:#{namespace}" unless namespace == 'xmlns'
-      attribute = attributes.get_attribute(namespace)
-      attribute.remove unless attribute.nil?
-      self
-    end
-
-    #################################################
-    # Elements                                      #
-    #################################################
-
-    # Adds a child to this element, optionally setting attributes in
-    # the element.
-    # element:: 
-    #   optional.  If Element, the element is added.
-    #   Otherwise, a new Element is constructed with the argument (see
-    #   Element.initialize).
-    # attrs:: 
-    #   If supplied, must be a Hash containing String name,value 
-    #   pairs, which will be used to set the attributes of the new Element.
-    # Returns:: the Element that was added
-    #  el = doc.add_element 'my-tag'
-    #  el = doc.add_element 'my-tag', {'attr1'=>'val1', 'attr2'=>'val2'}
-    #  el = Element.new 'my-tag'
-    #  doc.add_element el
-    def add_element element, attrs=nil
-      raise "First argument must be either an element name, or an Element object" if element.nil?
-      el = @elements.add(element)
-      attrs.each do |key, value|
-        el.attributes[key]=Attribute.new(key,value,self)
-      end	if attrs.kind_of? Hash
-      el
-    end
-
-    # Deletes a child element.
-    # element:: 
-    #   Must be an +Element+, +String+, or +Integer+.  If Element, 
-    #   the element is removed.  If String, the element is found (via XPath) 
-    #   and removed.  <em>This means that any parent can remove any
-    #   descendant.<em>  If Integer, the Element indexed by that number will be
-    #   removed.
-    # Returns:: the element that was removed.
-    #  doc.delete_element "/a/b/c[@id='4']"
-    #  doc.delete_element doc.elements["//k"]
-    #  doc.delete_element 1
-    def delete_element element
-      @elements.delete element
-    end
-
-    # Evaluates to +true+ if this element has at least one child Element
-    #  doc = Document.new "<a><b/><c>Text</c></a>"
-    #  doc.root.has_elements               # -> true
-    #  doc.elements["/a/b"].has_elements   # -> false
-    #  doc.elements["/a/c"].has_elements   # -> false
-    def has_elements?
-      !@elements.empty?
-    end
-
-    # Iterates through the child elements, yielding for each Element that
-    # has a particular attribute set.
-    # key:: 
-    #   the name of the attribute to search for
-    # value:: 
-    #   the value of the attribute
-    # max:: 
-    #   (optional) causes this method to return after yielding 
-    #   for this number of matching children
-    # name:: 
-    #   (optional) if supplied, this is an XPath that filters
-    #   the children to check.
-    #
-    #  doc = Document.new "<a><b @id='1'/><c @id='2'/><d @id='1'/><e/></a>"
-    #  # Yields b, c, d
-    #  doc.root.each_element_with_attribute( 'id' ) {|e| p e}
-    #  # Yields b, d
-    #  doc.root.each_element_with_attribute( 'id', '1' ) {|e| p e}
-    #  # Yields b
-    #  doc.root.each_element_with_attribute( 'id', '1', 1 ) {|e| p e}
-    #  # Yields d
-    #  doc.root.each_element_with_attribute( 'id', '1', 0, 'd' ) {|e| p e}
-    def each_element_with_attribute( key, value=nil, max=0, name=nil, &block ) # :yields: Element
-      each_with_something( proc {|child| 
-        if value.nil?
-          child.attributes[key] != nil
-        else
-          child.attributes[key]==value
-        end
-      }, max, name, &block )
-    end
-
-    # Iterates through the children, yielding for each Element that
-    # has a particular text set.
-    # text:: 
-    #   the text to search for.  If nil, or not supplied, will itterate
-    #   over all +Element+ children that contain at least one +Text+ node.
-    # max:: 
-    #   (optional) causes this method to return after yielding
-    #   for this number of matching children
-    # name:: 
-    #   (optional) if supplied, this is an XPath that filters
-    #   the children to check.
-    #
-    #  doc = Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
-    #  # Yields b, c, d
-    #  doc.each_element_with_text {|e|p e}
-    #  # Yields b, c
-    #  doc.each_element_with_text('b'){|e|p e}
-    #  # Yields b
-    #  doc.each_element_with_text('b', 1){|e|p e}
-    #  # Yields d
-    #  doc.each_element_with_text(nil, 0, 'd'){|e|p e}
-    def each_element_with_text( text=nil, max=0, name=nil, &block ) # :yields: Element
-      each_with_something( proc {|child| 
-        if text.nil?
-          child.has_text?
-        else
-          child.text == text
-        end
-      }, max, name, &block )
-    end
-
-    # Synonym for Element.elements.each
-    def each_element( xpath=nil, &block ) # :yields: Element
-      @elements.each( xpath, &block )
-    end
-
-    # Synonym for Element.to_a
-    # This is a little slower than calling elements.each directly.
-    # xpath:: any XPath by which to search for elements in the tree
-    # Returns:: an array of Elements that match the supplied path
-    def get_elements( xpath )
-      @elements.to_a( xpath )
-    end
-
-    # Returns the next sibling that is an element, or nil if there is
-    # no Element sibling after this one
-    #  doc = Document.new '<a><b/>text<c/></a>'
-    #  doc.root.elements['b'].next_element          #-> <c/>
-    #  doc.root.elements['c'].next_element          #-> nil
-    def next_element
-      element = next_sibling
-      element = element.next_sibling until element.nil? or element.kind_of? Element 
-      return element
-    end
-
-    # Returns the previous sibling that is an element, or nil if there is
-    # no Element sibling prior to this one
-    #  doc = Document.new '<a><b/>text<c/></a>'
-    #  doc.root.elements['c'].previous_element          #-> <b/>
-    #  doc.root.elements['b'].previous_element          #-> nil
-    def previous_element
-      element = previous_sibling
-      element = element.previous_sibling until element.nil? or element.kind_of? Element
-      return element
-    end
-
-
-    #################################################
-    # Text                                          #
-    #################################################
-
-    # Evaluates to +true+ if this element has at least one Text child
-    def has_text?
-      not text().nil?
-    end
-
-    # A convenience method which returns the String value of the _first_
-    # child text element, if one exists, and +nil+ otherwise.
-    #
-    # <em>Note that an element may have multiple Text elements, perhaps
-    # separated by other children</em>.  Be aware that this method only returns
-    # the first Text node.
-    #
-    # This method returns the +value+ of the first text child node, which
-    # ignores the +raw+ setting, so always returns normalized text. See
-    # the Text::value documentation.
-    #
-    #  doc = Document.new "<p>some text <b>this is bold!</b> more text</p>"
-    #  # The element 'p' has two text elements, "some text " and " more text".
-    #  doc.root.text              #-> "some text "
-    def text( path = nil )
-      rv = get_text(path)
-      return rv.value unless rv.nil?
-      nil
-    end
-
-    # Returns the first child Text node, if any, or +nil+ otherwise.
-    # This method returns the actual +Text+ node, rather than the String content.
-    #  doc = Document.new "<p>some text <b>this is bold!</b> more text</p>"
-    #  # The element 'p' has two text elements, "some text " and " more text".
-    #  doc.root.get_text.value            #-> "some text "
-    def get_text path = nil
-      rv = nil
-      if path
-        element = @elements[ path ]
-        rv = element.get_text unless element.nil?
-      else
-        rv = @children.find { |node| node.kind_of? Text }
-      end
-      return rv
-    end
-
-    # Sets the first Text child of this object.  See text() for a
-    # discussion about Text children.
-    #
-    # If a Text child already exists, the child is replaced by this
-    # content.  This means that Text content can be deleted by calling
-    # this method with a nil argument.  In this case, the next Text
-    # child becomes the first Text child.  In no case is the order of
-    # any siblings disturbed.
-    # text:: 
-    #   If a String, a new Text child is created and added to
-    #   this Element as the first Text child.  If Text, the text is set
-    #   as the first Child element.  If nil, then any existing first Text
-    #   child is removed.
-    # Returns:: this Element.
-    #  doc = Document.new '<a><b/></a>'
-    #  doc.root.text = 'Sean'      #-> '<a><b/>Sean</a>'
-    #  doc.root.text = 'Elliott'   #-> '<a><b/>Elliott</a>'
-    #  doc.root.add_element 'c'    #-> '<a><b/>Elliott<c/></a>'
-    #  doc.root.text = 'Russell'   #-> '<a><b/>Russell<c/></a>'
-    #  doc.root.text = nil         #-> '<a><b/><c/></a>'
-    def text=( text )
-      if text.kind_of? String
-        text = Text.new( text, whitespace(), nil, raw() )
-      elsif text and !text.kind_of? Text
-        text = Text.new( text.to_s, whitespace(), nil, raw() )
-      end
-      old_text = get_text
-      if text.nil?
-        old_text.remove unless old_text.nil?
-      else
-        if old_text.nil?
-          self << text
-        else
-          old_text.replace_with( text )
-        end
-      end
-      return self
-    end
-
-    # A helper method to add a Text child.  Actual Text instances can
-    # be added with regular Parent methods, such as add() and <<()
-    # text::
-    #   if a String, a new Text instance is created and added
-    #   to the parent.  If Text, the object is added directly.
-    # Returns:: this Element
-    #  e = Element.new('a')          #-> <e/>
-    #  e.add_text 'foo'              #-> <e>foo</e>
-    #  e.add_text Text.new(' bar')    #-> <e>foo bar</e>
-    # Note that at the end of this example, the branch has <b>3</b> nodes; the 'e'
-    # element and <b>2</b> Text node children.
-    def add_text( text )
-      if text.kind_of? String 
-        if @children[-1].kind_of? Text
-          @children[-1] << text
-          return
-        end
-        text = Text.new( text, whitespace(), nil, raw() )
-      end
-      self << text unless text.nil?
-      return self
-    end
-
-    def node_type
-      :element
-    end
-
-    def xpath
-      path_elements = []
-      cur = self
-      path_elements << __to_xpath_helper( self )
-      while cur.parent
-        cur = cur.parent
-        path_elements << __to_xpath_helper( cur )
-      end
-      return path_elements.reverse.join( "/" )
-    end
-
-    #################################################
-    # Attributes                                    #
-    #################################################
-
-    def attribute( name, namespace=nil )
-      prefix = nil
-      prefix = namespaces.index(namespace) if namespace
-      prefix = nil if prefix == 'xmlns'
-      attributes.get_attribute( "#{prefix ? prefix + ':' : ''}#{name}" )
-    end
-
-    # Evaluates to +true+ if this element has any attributes set, false
-    # otherwise.
-    def has_attributes?
-      return !@attributes.empty?
-    end
-
-    # Adds an attribute to this element, overwriting any existing attribute
-    # by the same name.
-    # key::
-    #   can be either an Attribute or a String.  If an Attribute,
-    #   the attribute is added to the list of Element attributes.  If String,
-    #   the argument is used as the name of the new attribute, and the value
-    #   parameter must be supplied.
-    # value:: 
-    #   Required if +key+ is a String, and ignored if the first argument is
-    #   an Attribute.  This is a String, and is used as the value
-    #   of the new Attribute.  This should be the unnormalized value of the
-    #   attribute (without entities).
-    # Returns:: the Attribute added
-    #  e = Element.new 'e'
-    #  e.add_attribute( 'a', 'b' )               #-> <e a='b'/>
-    #  e.add_attribute( 'x:a', 'c' )             #-> <e a='b' x:a='c'/>
-    #  e.add_attribute Attribute.new('b', 'd')   #-> <e a='b' x:a='c' b='d'/>
-    def add_attribute( key, value=nil )
-      if key.kind_of? Attribute
-        @attributes << key
-      else
-        @attributes[key] = value
-      end
-    end
-
-    # Add multiple attributes to this element.
-    # hash:: is either a hash, or array of arrays
-    #  el.add_attributes( {"name1"=>"value1", "name2"=>"value2"} )
-    #  el.add_attributes( [ ["name1","value1"], ["name2"=>"value2"] ] )
-    def add_attributes hash
-      if hash.kind_of? Hash
-        hash.each_pair {|key, value| @attributes[key] = value }
-      elsif hash.kind_of? Array
-        hash.each { |value| @attributes[ value[0] ] = value[1] }
-      end
-    end
-
-    # Removes an attribute
-    # key::
-    #   either an Attribute or a String.  In either case, the
-    #   attribute is found by matching the attribute name to the argument,
-    #   and then removed.  If no attribute is found, no action is taken.
-    # Returns:: 
-    #   the attribute removed, or nil if this Element did not contain
-    #   a matching attribute
-    #  e = Element.new('E')
-    #  e.add_attribute( 'name', 'Sean' )             #-> <E name='Sean'/>
-    #  r = e.add_attribute( 'sur:name', 'Russell' )  #-> <E name='Sean' sur:name='Russell'/>
-    #  e.delete_attribute( 'name' )                  #-> <E sur:name='Russell'/>
-    #  e.delete_attribute( r )                       #-> <E/>
-    def delete_attribute(key)
-      attr = @attributes.get_attribute(key)
-      attr.remove unless attr.nil?
-    end
-
-    #################################################
-    # Other Utilities                               #
-    #################################################
-
-    # Get an array of all CData children.  
-    # IMMUTABLE
-    def cdatas
-      find_all { |child| child.kind_of? CData }.freeze
-    end
-
-    # Get an array of all Comment children.
-    # IMMUTABLE
-    def comments
-      find_all { |child| child.kind_of? Comment }.freeze
-    end
-
-    # Get an array of all Instruction children.
-    # IMMUTABLE
-    def instructions
-      find_all { |child| child.kind_of? Instruction }.freeze
-    end
-
-    # Get an array of all Text children.
-    # IMMUTABLE
-    def texts
-      find_all { |child| child.kind_of? Text }.freeze
-    end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    # Writes out this element, and recursively, all children.
-    # output::
-    #	  output an object which supports '<< string'; this is where the
-    #   document will be written.
-    # indent::
-    #   An integer.  If -1, no indenting will be used; otherwise, the
-    #   indentation will be this number of spaces, and children will be
-    #   indented an additional amount.  Defaults to -1
-    # transitive::
-    #   If transitive is true and indent is >= 0, then the output will be
-    #   pretty-printed in such a way that the added whitespace does not affect
-    #   the parse tree of the document
-    # ie_hack::
-    #   Internet Explorer is the worst piece of #### to have ever been
-    #   written, with the possible exception of Windows itself.  Since IE is
-    #   unable to parse proper XML, we have to provide a hack to generate XML
-    #   that IE's limited abilities can handle.  This hack inserts a space 
-    #   before the /> on empty tags.  Defaults to false
-    #
-    #  out = ''
-    #  doc.write( out )     #-> doc is written to the string 'out'
-    #  doc.write( $stdout ) #-> doc written to the console
-    def write(writer=$stdout, indent=-1, transitive=false, ie_hack=false)
-      Kernel.warn("#{self.class.name}.write is deprecated.  See REXML::Formatters")
-      formatter = if indent > -1
-          if transitive
-            REXML::Formatters::Transitive.new( indent, ie_hack )
-          else
-            REXML::Formatters::Pretty.new( indent, ie_hack )
-          end
-        else
-          REXML::Formatters::Default.new( ie_hack )
-        end
-      formatter.write( self, output )
-    end
-
-
-    private
-    def __to_xpath_helper node
-      rv = node.expanded_name.clone
-      if node.parent
-        results = node.parent.find_all {|n| 
-          n.kind_of?(REXML::Element) and n.expanded_name == node.expanded_name 
-        }
-        if results.length > 1
-          idx = results.index( node )
-          rv << "[#{idx+1}]"
-        end
-      end
-      rv
-    end
-
-    # A private helper method
-    def each_with_something( test, max=0, name=nil )
-      num = 0
-      child=nil
-      @elements.each( name ){ |child|
-        yield child if test.call(child) and num += 1
-        return if max>0 and num == max
-      }
-    end
-  end
-
-  ########################################################################
-  # ELEMENTS                                                             #
-  ########################################################################
-
-  # A class which provides filtering of children for Elements, and
-  # XPath search support.  You are expected to only encounter this class as
-  # the <tt>element.elements</tt> object.  Therefore, you are 
-  # _not_ expected to instantiate this yourself.
-  class Elements
-    include Enumerable
-    # Constructor
-    # parent:: the parent Element
-    def initialize parent
-      @element = parent
-    end
-
-    # Fetches a child element.  Filters only Element children, regardless of
-    # the XPath match.
-    # index:: 
-    #   the search parameter.  This is either an Integer, which
-    #   will be used to find the index'th child Element, or an XPath,
-    #   which will be used to search for the Element.  <em>Because
-    #   of the nature of XPath searches, any element in the connected XML
-    #   document can be fetched through any other element.</em>  <b>The
-    #   Integer index is 1-based, not 0-based.</b>  This means that the first
-    #   child element is at index 1, not 0, and the +n+th element is at index
-    #   +n+, not <tt>n-1</tt>.  This is because XPath indexes element children
-    #   starting from 1, not 0, and the indexes should be the same.
-    # name:: 
-    #   optional, and only used in the first argument is an
-    #   Integer.  In that case, the index'th child Element that has the
-    #   supplied name will be returned.  Note again that the indexes start at 1.
-    # Returns:: the first matching Element, or nil if no child matched
-    #  doc = Document.new '<a><b/><c id="1"/><c id="2"/><d/></a>'
-    #  doc.root.elements[1]       #-> <b/>
-    #  doc.root.elements['c']     #-> <c id="1"/>
-    #  doc.root.elements[2,'c']   #-> <c id="2"/>
-    def []( index, name=nil)
-      if index.kind_of? Integer
-        raise "index (#{index}) must be >= 1" if index < 1
-        name = literalize(name) if name
-        num = 0
-        child = nil
-        @element.find { |child|
-          child.kind_of? Element and
-          (name.nil? ? true : child.has_name?( name )) and 
-          (num += 1) == index
-        }
-      else
-        return XPath::first( @element, index )
-        #{ |element| 
-        #	return element if element.kind_of? Element
-        #}
-        #return nil
-      end
-    end
-
-    # Sets an element, replacing any previous matching element.  If no
-    # existing element is found ,the element is added.
-    # index:: Used to find a matching element to replace.  See []().
-    # element:: 
-    #   The element to replace the existing element with
-    #   the previous element
-    # Returns:: nil if no previous element was found.
-    #
-    #  doc = Document.new '<a/>'
-    #  doc.root.elements[10] = Element.new('b')    #-> <a><b/></a>
-    #  doc.root.elements[1]                        #-> <b/>
-    #  doc.root.elements[1] = Element.new('c')     #-> <a><c/></a>
-    #  doc.root.elements['c'] = Element.new('d')   #-> <a><d/></a>
-    def []=( index, element )
-      previous = self[index]
-      if previous.nil?
-        @element.add element
-      else
-        previous.replace_with element
-      end
-      return previous
-    end
-
-    # Returns +true+ if there are no +Element+ children, +false+ otherwise
-    def empty?
-      @element.find{ |child| child.kind_of? Element}.nil?
-    end
-
-    # Returns the index of the supplied child (starting at 1), or -1 if 
-    # the element is not a child
-    # element:: an +Element+ child
-    def index element
-      rv = 0
-      found = @element.find do |child| 
-        child.kind_of? Element and
-        (rv += 1) and
-        child == element
-      end
-      return rv if found == element
-      return -1
-    end
-
-    # Deletes a child Element
-    # element:: 
-    #   Either an Element, which is removed directly; an
-    #   xpath, where the first matching child is removed; or an Integer,
-    #   where the n'th Element is removed.
-    # Returns:: the removed child
-    #  doc = Document.new '<a><b/><c/><c id="1"/></a>'
-    #  b = doc.root.elements[1]
-    #  doc.root.elements.delete b           #-> <a><c/><c id="1"/></a>
-    #  doc.elements.delete("a/c[@id='1']")  #-> <a><c/></a>
-    #  doc.root.elements.delete 1           #-> <a/>
-    def delete element
-      if element.kind_of? Element
-        @element.delete element
-      else
-        el = self[element]
-        el.remove if el
-      end
-    end
-
-    # Removes multiple elements.  Filters for Element children, regardless of
-    # XPath matching.
-    # xpath:: all elements matching this String path are removed.
-    # Returns:: an Array of Elements that have been removed
-    #  doc = Document.new '<a><c/><c/><c/><c/></a>'
-    #  deleted = doc.elements.delete_all 'a/c' #-> [<c/>, <c/>, <c/>, <c/>]
-    def delete_all( xpath )
-      rv = []
-      XPath::each( @element, xpath) {|element| 
-        rv << element if element.kind_of? Element
-      }
-      rv.each do |element|
-        @element.delete element
-        element.remove
-      end
-      return rv
-    end
-
-    # Adds an element
-    # element:: 
-    #   if supplied, is either an Element, String, or
-    #   Source (see Element.initialize).  If not supplied or nil, a
-    #   new, default Element will be constructed
-    # Returns:: the added Element
-    #  a = Element.new('a')
-    #  a.elements.add(Element.new('b'))  #-> <a><b/></a>
-    #  a.elements.add('c')               #-> <a><b/><c/></a>
-    def add element=nil
-      rv = nil
-      if element.nil?
-        Element.new("", self, @element.context)
-      elsif not element.kind_of?(Element)
-        Element.new(element, self, @element.context)
-      else
-        @element << element
-        element.context = @element.context
-        element
-      end
-    end
-
-    alias :<< :add
-
-    # Iterates through all of the child Elements, optionally filtering
-    # them by a given XPath
-    # xpath:: 
-    #   optional.  If supplied, this is a String XPath, and is used to 
-    #   filter the children, so that only matching children are yielded.  Note
-    #   that XPaths are automatically filtered for Elements, so that
-    #   non-Element children will not be yielded
-    #  doc = Document.new '<a><b/><c/><d/>sean<b/><c/><d/></a>'
-    #  doc.root.each {|e|p e}       #-> Yields b, c, d, b, c, d elements
-    #  doc.root.each('b') {|e|p e}  #-> Yields b, b elements
-    #  doc.root.each('child::node()')  {|e|p e}
-    #  #-> Yields <b/>, <c/>, <d/>, <b/>, <c/>, <d/>
-    #  XPath.each(doc.root, 'child::node()', &block)
-    #  #-> Yields <b/>, <c/>, <d/>, sean, <b/>, <c/>, <d/>
-    def each( xpath=nil, &block)
-      XPath::each( @element, xpath ) {|e| yield e if e.kind_of? Element }
-    end
-
-    def collect( xpath=nil, &block )
-      collection = []
-      XPath::each( @element, xpath ) {|e| 
-        collection << yield(e)  if e.kind_of?(Element) 
-      }
-      collection
-    end
-
-    def inject( xpath=nil, initial=nil, &block )
-      first = true
-      XPath::each( @element, xpath ) {|e|
-        if (e.kind_of? Element)
-          if (first and initial == nil)
-            initial = e
-            first = false
-          else
-            initial = yield( initial, e ) if e.kind_of? Element
-          end
-        end
-      }
-      initial
-    end
-
-    # Returns the number of +Element+ children of the parent object.
-    #  doc = Document.new '<a>sean<b/>elliott<b/>russell<b/></a>'
-    #  doc.root.size            #-> 6, 3 element and 3 text nodes
-    #  doc.root.elements.size   #-> 3
-    def size
-      count = 0
-      @element.each {|child| count+=1 if child.kind_of? Element }
-      count
-    end
-
-    # Returns an Array of Element children.  An XPath may be supplied to
-    # filter the children.  Only Element children are returned, even if the
-    # supplied XPath matches non-Element children.
-    #  doc = Document.new '<a>sean<b/>elliott<c/></a>'
-    #  doc.root.elements.to_a                  #-> [ <b/>, <c/> ]
-    #  doc.root.elements.to_a("child::node()") #-> [ <b/>, <c/> ] 
-    #  XPath.match(doc.root, "child::node()")  #-> [ sean, <b/>, elliott, <c/> ]
-    def to_a( xpath=nil )
-      rv = XPath.match( @element, xpath )
-      return rv.find_all{|e| e.kind_of? Element} if xpath
-      rv
-    end
-
-    private
-    # Private helper class.  Removes quotes from quoted strings
-    def literalize name
-      name = name[1..-2] if name[0] == ?' or name[0] == ?"               #'
-      name
-    end
-  end
-
-  ########################################################################
-  # ATTRIBUTES                                                           #
-  ########################################################################
-
-  # A class that defines the set of Attributes of an Element and provides 
-  # operations for accessing elements in that set.
-  class Attributes < Hash
-    # Constructor
-    # element:: the Element of which this is an Attribute
-    def initialize element
-      @element = element
-    end
-
-    # Fetches an attribute value.  If you want to get the Attribute itself,
-    # use get_attribute()
-    # name:: an XPath attribute name.  Namespaces are relevant here.
-    # Returns:: 
-    #   the String value of the matching attribute, or +nil+ if no
-    #   matching attribute was found.  This is the unnormalized value
-    #   (with entities expanded).
-    # 
-    #  doc = Document.new "<a foo:att='1' bar:att='2' att='<'/>"
-    #  doc.root.attributes['att']         #-> '<'
-    #  doc.root.attributes['bar:att']     #-> '2'
-    def [](name)
-      attr = get_attribute(name)
-      return attr.value unless attr.nil?
-      return nil
-    end
-
-    def to_a
-      values.flatten
-    end
-
-    # Returns the number of attributes the owning Element contains.
-    #  doc = Document "<a x='1' y='2' foo:x='3'/>"
-    #  doc.root.attributes.length        #-> 3
-    def length
-      c = 0
-      each_attribute { c+=1 }
-      c
-    end
-    alias :size :length
-
-    # Itterates over the attributes of an Element.  Yields actual Attribute
-    # nodes, not String values.
-    # 
-    #  doc = Document.new '<a x="1" y="2"/>'
-    #  doc.root.attributes.each_attribute {|attr|
-    #    p attr.expanded_name+" => "+attr.value
-    #  }
-    def each_attribute # :yields: attribute
-      each_value do |val|
-        if val.kind_of? Attribute
-          yield val
-        else
-          val.each_value { |atr| yield atr }
-        end
-      end
-    end
-
-    # Itterates over each attribute of an Element, yielding the expanded name
-    # and value as a pair of Strings.
-    #
-    #  doc = Document.new '<a x="1" y="2"/>'
-    #  doc.root.attributes.each {|name, value| p name+" => "+value }
-    def each
-      each_attribute do |attr|
-        yield attr.expanded_name, attr.value
-      end
-    end
-
-    # Fetches an attribute
-    # name:: 
-    #   the name by which to search for the attribute.  Can be a
-    #   <tt>prefix:name</tt> namespace name.
-    # Returns:: The first matching attribute, or nil if there was none.  This
-    # value is an Attribute node, not the String value of the attribute.
-    #  doc = Document.new '<a x:foo="1" foo="2" bar="3"/>'
-    #  doc.root.attributes.get_attribute("foo").value    #-> "2"
-    #  doc.root.attributes.get_attribute("x:foo").value  #-> "1"
-    def get_attribute( name )
-      attr = fetch( name, nil )
-      if attr.nil?
-        return nil if name.nil?
-        # Look for prefix
-        name =~ Namespace::NAMESPLIT
-        prefix, n = $1, $2
-        if prefix
-          attr = fetch( n, nil )
-          # check prefix
-          if attr == nil
-          elsif attr.kind_of? Attribute
-            return attr if prefix == attr.prefix
-          else
-            attr = attr[ prefix ]
-            return attr
-          end
-        end
-        element_document = @element.document
-        if element_document and element_document.doctype
-          expn = @element.expanded_name
-          expn = element_document.doctype.name if expn.size == 0
-          attr_val = element_document.doctype.attribute_of(expn, name)
-          return Attribute.new( name, attr_val ) if attr_val
-        end
-        return nil
-      end
-      if attr.kind_of? Hash
-        attr = attr[ @element.prefix ]
-      end
-      return attr
-    end
-
-    # Sets an attribute, overwriting any existing attribute value by the
-    # same name.  Namespace is significant.
-    # name:: the name of the attribute
-    # value:: 
-    #   (optional) If supplied, the value of the attribute.  If
-    #   nil, any existing matching attribute is deleted.
-    # Returns:: 
-    #   Owning element
-    #  doc = Document.new "<a x:foo='1' foo='3'/>"
-    #  doc.root.attributes['y:foo'] = '2'
-    #  doc.root.attributes['foo'] = '4'
-    #  doc.root.attributes['x:foo'] = nil
-    def []=( name, value )
-      if value.nil?		# Delete the named attribute
-        attr = get_attribute(name)
-        delete attr
-        return
-      end
-      element_document = @element.document
-      unless value.kind_of? Attribute
-        if @element.document and @element.document.doctype
-          value = Text::normalize( value, @element.document.doctype )
-        else
-          value = Text::normalize( value, nil )
-        end
-        value = Attribute.new(name, value)
-      end
-      value.element = @element
-      old_attr = fetch(value.name, nil)
-      if old_attr.nil?
-        store(value.name, value)
-      elsif old_attr.kind_of? Hash
-        old_attr[value.prefix] = value
-      elsif old_attr.prefix != value.prefix
-        # Check for conflicting namespaces
-        raise ParseException.new( 
-          "Namespace conflict in adding attribute \"#{value.name}\": "+
-          "Prefix \"#{old_attr.prefix}\" = "+
-          "\"#{@element.namespace(old_attr.prefix)}\" and prefix "+
-          "\"#{value.prefix}\" = \"#{@element.namespace(value.prefix)}\"") if 
-          value.prefix != "xmlns" and old_attr.prefix != "xmlns" and
-          @element.namespace( old_attr.prefix ) == 
-            @element.namespace( value.prefix )
-          store value.name, { old_attr.prefix	=> old_attr,
-            value.prefix		=> value }
-      else
-        store value.name, value
-      end
-      return @element
-    end
-
-    # Returns an array of Strings containing all of the prefixes declared 
-    # by this set of # attributes.  The array does not include the default
-    # namespace declaration, if one exists.
-    #  doc = Document.new("<a xmlns='foo' xmlns:x='bar' xmlns:y='twee' "+
-    #        "z='glorp' p:k='gru'/>")
-    #  prefixes = doc.root.attributes.prefixes    #-> ['x', 'y']
-    def prefixes
-      ns = []
-      each_attribute do |attribute|
-        ns << attribute.name if attribute.prefix == 'xmlns'
-      end
-      if @element.document and @element.document.doctype
-        expn = @element.expanded_name
-        expn = @element.document.doctype.name if expn.size == 0
-        @element.document.doctype.attributes_of(expn).each {
-          |attribute|
-          ns << attribute.name if attribute.prefix == 'xmlns'
-        }
-      end
-      ns
-    end
-
-    def namespaces
-      namespaces = {}
-      each_attribute do |attribute|
-        namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
-      end
-      if @element.document and @element.document.doctype
-        expn = @element.expanded_name
-        expn = @element.document.doctype.name if expn.size == 0
-        @element.document.doctype.attributes_of(expn).each {
-          |attribute|
-          namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
-        }
-      end
-      namespaces
-    end
-
-    # Removes an attribute
-    # attribute:: 
-    #   either a String, which is the name of the attribute to remove --
-    #   namespaces are significant here -- or the attribute to remove.
-    # Returns:: the owning element
-    #  doc = Document.new "<a y:foo='0' x:foo='1' foo='3' z:foo='4'/>"
-    #  doc.root.attributes.delete 'foo'   #-> <a y:foo='0' x:foo='1' z:foo='4'/>"
-    #  doc.root.attributes.delete 'x:foo' #-> <a y:foo='0' z:foo='4'/>"
-    #  attr = doc.root.attributes.get_attribute('y:foo')
-    #  doc.root.attributes.delete attr    #-> <a z:foo='4'/>"
-    def delete( attribute )
-      name = nil
-      prefix = nil
-      if attribute.kind_of? Attribute
-        name = attribute.name
-        prefix = attribute.prefix
-      else
-        attribute =~ Namespace::NAMESPLIT
-        prefix, name = $1, $2
-        prefix = '' unless prefix
-      end
-      old = fetch(name, nil)
-      attr = nil
-      if old.kind_of? Hash # the supplied attribute is one of many
-        attr = old.delete(prefix)
-        if old.size == 1
-          repl = nil
-          old.each_value{|v| repl = v}
-          store name, repl
-        end
-      elsif old.nil?
-        return @element
-      else # the supplied attribute is a top-level one
-        attr = old
-        res = super(name)
-      end
-      @element
-    end
-
-    # Adds an attribute, overriding any existing attribute by the
-    # same name.  Namespaces are significant.
-    # attribute:: An Attribute
-    def add( attribute )
-      self[attribute.name] = attribute
-    end
-
-    alias :<< :add
-
-    # Deletes all attributes matching a name.  Namespaces are significant.
-    # name:: 
-    #   A String; all attributes that match this path will be removed
-    # Returns:: an Array of the Attributes that were removed
-    def delete_all( name )
-      rv = []
-      each_attribute { |attribute| 
-        rv << attribute if attribute.expanded_name == name
-      }
-      rv.each{ |attr| attr.remove }
-      return rv
-    end
-
-    # The +get_attribute_ns+ method retrieves a method by its namespace
-    # and name. Thus it is possible to reliably identify an attribute
-    # even if an XML processor has changed the prefix.
-    # 
-    # Method contributed by Henrik Martensson
-    def get_attribute_ns(namespace, name)
-      each_attribute() { |attribute|
-        if name == attribute.name &&
-          namespace == attribute.namespace()
-          return attribute
-        end
-      }
-      nil
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encoding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encoding.rb
deleted file mode 100644
index a01763b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encoding.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 2; indent-tabs-mode: t; tab-width: 2 -*- vim: sw=2 ts=2
-module REXML
-  module Encoding
-    @encoding_methods = {}
-    def self.register(enc, &block)
-      @encoding_methods[enc] = block
-    end
-    def self.apply(obj, enc)
-      @encoding_methods[enc][obj]
-    end
-    def self.encoding_method(enc)
-      @encoding_methods[enc]
-    end
-
-    # Native, default format is UTF-8, so it is declared here rather than in
-    # an encodings/ definition.
-    UTF_8 = 'UTF-8'
-    UTF_16 = 'UTF-16'
-    UNILE = 'UNILE'
-
-    # ID ---> Encoding name
-    attr_reader :encoding
-    def encoding=( enc )
-      old_verbosity = $VERBOSE
-      begin
-        $VERBOSE = false
-        enc = enc.nil? ? nil : enc.upcase
-        return false if defined? @encoding and enc == @encoding
-        if enc and enc != UTF_8
-          @encoding = enc
-          raise ArgumentError, "Bad encoding name #@encoding" unless @encoding =~ /^[\w-]+$/
-          @encoding.untaint 
-          begin
-            require 'rexml/encodings/ICONV.rb'
-            Encoding.apply(self, "ICONV")
-          rescue LoadError, Exception
-            begin
-              enc_file = File.join( "rexml", "encodings", "#@encoding.rb" )
-              require enc_file
-              Encoding.apply(self, @encoding)
-            rescue LoadError => err
-              puts err.message
-              raise ArgumentError, "No decoder found for encoding #@encoding.  Please install iconv."
-            end
-          end
-        else
-          @encoding = UTF_8
-          require 'rexml/encodings/UTF-8.rb'
-          Encoding.apply(self, @encoding)
-        end
-      ensure
-        $VERBOSE = old_verbosity
-      end
-      true
-    end
-
-    def check_encoding str
-      # We have to recognize UTF-16, LSB UTF-16, and UTF-8
-      if str[0] == 0xfe && str[1] == 0xff
-        str[0,2] = ""
-        return UTF_16
-      elsif str[0] == 0xff && str[1] == 0xfe
-        str[0,2] = ""
-        return UNILE
-      end
-      str =~ /^\s*<\?xml\s+version\s*=\s*(['"]).*?\1\s+encoding\s*=\s*(["'])(.*?)\2/um
-      return $3.upcase if $3
-      return UTF_8
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/CP-1252.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/CP-1252.rb
deleted file mode 100644
index 8675f9f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/CP-1252.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-#
-# This class was contributed by Mikko Tiihonen mikko DOT tiihonen AT hut DOT fi
-#
-module REXML
-  module Encoding
-  	register( "CP-1252" ) do |o|
-  		class << o
-  			alias encode encode_cp1252
-			alias decode decode_cp1252
-  		end
-  	end
-
-    # Convert from UTF-8
-    def encode_cp1252(content)
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        case num
-          # shortcut first bunch basic characters
-        when 0..0xFF; array_enc << num
-          # characters added compared to iso-8859-1
-        when 0x20AC; array_enc << 0x80 # 0xe2 0x82 0xac
-        when 0x201A; array_enc << 0x82 # 0xe2 0x82 0x9a
-        when 0x0192; array_enc << 0x83 # 0xc6 0x92
-        when 0x201E; array_enc << 0x84 # 0xe2 0x82 0x9e
-        when 0x2026; array_enc << 0x85 # 0xe2 0x80 0xa6
-        when 0x2020; array_enc << 0x86 # 0xe2 0x80 0xa0
-        when 0x2021; array_enc << 0x87 # 0xe2 0x80 0xa1
-        when 0x02C6; array_enc << 0x88 # 0xcb 0x86
-        when 0x2030; array_enc << 0x89 # 0xe2 0x80 0xb0
-        when 0x0160; array_enc << 0x8A # 0xc5 0xa0
-        when 0x2039; array_enc << 0x8B # 0xe2 0x80 0xb9
-        when 0x0152; array_enc << 0x8C # 0xc5 0x92
-        when 0x017D; array_enc << 0x8E # 0xc5 0xbd
-        when 0x2018; array_enc << 0x91 # 0xe2 0x80 0x98
-        when 0x2019; array_enc << 0x92 # 0xe2 0x80 0x99
-        when 0x201C; array_enc << 0x93 # 0xe2 0x80 0x9c
-        when 0x201D; array_enc << 0x94 # 0xe2 0x80 0x9d
-        when 0x2022; array_enc << 0x95 # 0xe2 0x80 0xa2
-        when 0x2013; array_enc << 0x96 # 0xe2 0x80 0x93
-        when 0x2014; array_enc << 0x97 # 0xe2 0x80 0x94
-        when 0x02DC; array_enc << 0x98 # 0xcb 0x9c
-        when 0x2122; array_enc << 0x99 # 0xe2 0x84 0xa2
-        when 0x0161; array_enc << 0x9A # 0xc5 0xa1
-        when 0x203A; array_enc << 0x9B # 0xe2 0x80 0xba
-        when 0x0152; array_enc << 0x9C # 0xc5 0x93
-        when 0x017E; array_enc << 0x9E # 0xc5 0xbe
-        when 0x0178; array_enc << 0x9F # 0xc5 0xb8
-        else
-          # all remaining basic characters can be used directly
-          if num <= 0xFF
-            array_enc << num
-          else
-            # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-            array_enc.concat "&\##{num};".unpack('C*')
-          end
-        end
-      end
-      array_enc.pack('C*')
-    end
-    
-    # Convert to UTF-8
-    def decode_cp1252(str)
-      array_latin9 = str.unpack('C*')
-      array_enc = []
-      array_latin9.each do |num|
-        case num
-          # characters that added compared to iso-8859-1
-        when 0x80; array_enc << 0x20AC # 0xe2 0x82 0xac
-        when 0x82; array_enc << 0x201A # 0xe2 0x82 0x9a
-        when 0x83; array_enc << 0x0192 # 0xc6 0x92
-        when 0x84; array_enc << 0x201E # 0xe2 0x82 0x9e
-        when 0x85; array_enc << 0x2026 # 0xe2 0x80 0xa6
-        when 0x86; array_enc << 0x2020 # 0xe2 0x80 0xa0
-        when 0x87; array_enc << 0x2021 # 0xe2 0x80 0xa1
-        when 0x88; array_enc << 0x02C6 # 0xcb 0x86
-        when 0x89; array_enc << 0x2030 # 0xe2 0x80 0xb0
-        when 0x8A; array_enc << 0x0160 # 0xc5 0xa0
-        when 0x8B; array_enc << 0x2039 # 0xe2 0x80 0xb9
-        when 0x8C; array_enc << 0x0152 # 0xc5 0x92
-        when 0x8E; array_enc << 0x017D # 0xc5 0xbd
-        when 0x91; array_enc << 0x2018 # 0xe2 0x80 0x98
-        when 0x92; array_enc << 0x2019 # 0xe2 0x80 0x99
-        when 0x93; array_enc << 0x201C # 0xe2 0x80 0x9c
-        when 0x94; array_enc << 0x201D # 0xe2 0x80 0x9d
-        when 0x95; array_enc << 0x2022 # 0xe2 0x80 0xa2
-        when 0x96; array_enc << 0x2013 # 0xe2 0x80 0x93
-        when 0x97; array_enc << 0x2014 # 0xe2 0x80 0x94
-        when 0x98; array_enc << 0x02DC # 0xcb 0x9c
-        when 0x99; array_enc << 0x2122 # 0xe2 0x84 0xa2
-        when 0x9A; array_enc << 0x0161 # 0xc5 0xa1
-        when 0x9B; array_enc << 0x203A # 0xe2 0x80 0xba
-        when 0x9C; array_enc << 0x0152 # 0xc5 0x93
-        when 0x9E; array_enc << 0x017E # 0xc5 0xbe
-        when 0x9F; array_enc << 0x0178 # 0xc5 0xb8
-        else
-          array_enc << num
-        end
-      end
-      array_enc.pack('U*')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/EUC-JP.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/EUC-JP.rb
deleted file mode 100644
index db37b6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/EUC-JP.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module REXML
-  module Encoding
-    begin
-      require 'uconv'
-
-      def decode_eucjp(str)
-        Uconv::euctou8(str)
-      end
-
-      def encode_eucjp content
-        Uconv::u8toeuc(content)
-      end
-    rescue LoadError
-      require 'nkf'
-
-      EUCTOU8 = '-Ewm0'
-      U8TOEUC = '-Wem0'
-
-      def decode_eucjp(str)
-        NKF.nkf(EUCTOU8, str)
-      end
-
-      def encode_eucjp content
-        NKF.nkf(U8TOEUC, content)
-      end
-    end
-
-    register("EUC-JP") do |obj|
-      class << obj
-        alias decode decode_eucjp
-        alias encode encode_eucjp
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ICONV.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ICONV.rb
deleted file mode 100644
index 172fba7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ICONV.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require "iconv"
-raise LoadError unless defined? Iconv
-
-module REXML
-  module Encoding
-    def decode_iconv(str)
-      Iconv.conv(UTF_8, @encoding, str)
-    end
-
-    def encode_iconv(content)
-      Iconv.conv(@encoding, UTF_8, content)
-    end
-
-    register("ICONV") do |obj|
-      Iconv.conv(UTF_8, obj.encoding, nil)
-      class << obj
-        alias decode decode_iconv
-        alias encode encode_iconv
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-1.rb
deleted file mode 100644
index 2873d13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-1.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rexml/encodings/US-ASCII'
-
-module REXML
-  module Encoding
-    register("ISO-8859-1", &encoding_method("US-ASCII"))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-15.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-15.rb
deleted file mode 100644
index 8dea0d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/ISO-8859-15.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# This class was contributed by Mikko Tiihonen mikko DOT tiihonen AT hut DOT fi
-#
-module REXML
-  module Encoding
-  	register("ISO-8859-15") do |o|
-  		alias encode to_iso_8859_15
-      alias decode from_iso_8859_15
-  	end
-
-    # Convert from UTF-8
-    def to_iso_8859_15(content)
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        case num
-          # shortcut first bunch basic characters
-        when 0..0xA3; array_enc << num
-          # characters removed compared to iso-8859-1
-        when 0xA4; array_enc << '¤'
-        when 0xA6; array_enc << '¦'
-        when 0xA8; array_enc << '¨'
-        when 0xB4; array_enc << '´'
-        when 0xB8; array_enc << '¸'
-        when 0xBC; array_enc << '¼'
-        when 0xBD; array_enc << '½'
-        when 0xBE; array_enc << '¾'
-          # characters added compared to iso-8859-1
-        when 0x20AC; array_enc << 0xA4 # 0xe2 0x82 0xac
-        when 0x0160; array_enc << 0xA6 # 0xc5 0xa0
-        when 0x0161; array_enc << 0xA8 # 0xc5 0xa1
-        when 0x017D; array_enc << 0xB4 # 0xc5 0xbd
-        when 0x017E; array_enc << 0xB8 # 0xc5 0xbe
-        when 0x0152; array_enc << 0xBC # 0xc5 0x92
-        when 0x0153; array_enc << 0xBD # 0xc5 0x93
-        when 0x0178; array_enc << 0xBE # 0xc5 0xb8
-        else
-          # all remaining basic characters can be used directly
-          if num <= 0xFF
-            array_enc << num
-          else
-            # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-            array_enc.concat "&\##{num};".unpack('C*')
-          end
-        end
-      end
-      array_enc.pack('C*')
-    end
-    
-    # Convert to UTF-8
-    def from_iso_8859_15(str)
-      array_latin9 = str.unpack('C*')
-      array_enc = []
-      array_latin9.each do |num|
-        case num
-          # characters that differ compared to iso-8859-1
-        when 0xA4; array_enc << 0x20AC
-        when 0xA6; array_enc << 0x0160
-        when 0xA8; array_enc << 0x0161
-        when 0xB4; array_enc << 0x017D
-        when 0xB8; array_enc << 0x017E
-        when 0xBC; array_enc << 0x0152
-        when 0xBD; array_enc << 0x0153
-        when 0xBE; array_enc << 0x0178
-        else
-          array_enc << num
-        end
-      end
-      array_enc.pack('U*')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT-JIS.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT-JIS.rb
deleted file mode 100644
index 9e0f4af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT-JIS.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module REXML
-  module Encoding
-    begin
-      require 'uconv'
-
-      def decode_sjis content
-        Uconv::sjistou8(content)
-      end
-
-      def encode_sjis(str)
-        Uconv::u8tosjis(str)
-      end
-    rescue LoadError
-      require 'nkf'
-
-      SJISTOU8 = '-Swm0x'
-      U8TOSJIS = '-Wsm0x'
-
-      def decode_sjis(str)
-        NKF.nkf(SJISTOU8, str)
-      end
-
-      def encode_sjis content
-        NKF.nkf(U8TOSJIS, content)
-      end
-    end
-
-    b = proc do |obj|
-      class << obj
-        alias decode decode_sjis
-        alias encode encode_sjis
-      end
-    end
-    register("SHIFT-JIS", &b)
-    register("SHIFT_JIS", &b)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT_JIS.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT_JIS.rb
deleted file mode 100644
index e355704..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/SHIFT_JIS.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'rexml/encodings/SHIFT-JIS'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UNILE.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UNILE.rb
deleted file mode 100644
index d054140..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UNILE.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-module REXML
-  module Encoding
-    def encode_unile content
-      array_utf8 = content.unpack("U*")
-      array_enc = []
-      array_utf8.each do |num|
-        if ((num>>16) > 0)
-          array_enc << ??
-          array_enc << 0
-        else
-          array_enc << (num & 0xFF)
-          array_enc << (num >> 8)
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    def decode_unile(str)
-      array_enc=str.unpack('C*')
-      array_utf8 = []
-      0.step(array_enc.size-1, 2){|i| 
-        array_utf8 << (array_enc.at(i) + array_enc.at(i+1)*0x100)
-      }
-      array_utf8.pack('U*')
-    end
-
-    register(UNILE) do |obj|
-      class << obj
-        alias decode decode_unile
-        alias encode encode_unile
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/US-ASCII.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/US-ASCII.rb
deleted file mode 100644
index fb4c217..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/US-ASCII.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-module REXML
-  module Encoding
-    # Convert from UTF-8
-    def encode_ascii content
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        if num <= 0x7F
-          array_enc << num
-        else
-          # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-          array_enc.concat "&\##{num};".unpack('C*')
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    # Convert to UTF-8
-    def decode_ascii(str)
-      str.unpack('C*').pack('U*')
-    end
-
-    register("US-ASCII") do |obj|
-      class << obj
-        alias decode decode_ascii
-        alias encode encode_ascii
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-16.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-16.rb
deleted file mode 100644
index 007c493..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-16.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module REXML
-  module Encoding
-    def encode_utf16 content
-      array_utf8 = content.unpack("U*")
-      array_enc = []
-      array_utf8.each do |num|
-        if ((num>>16) > 0)
-          array_enc << 0
-          array_enc << ??
-        else
-          array_enc << (num >> 8)
-          array_enc << (num & 0xFF)
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    def decode_utf16(str)
-      str = str[2..-1] if /^\376\377/n =~ str
-      array_enc=str.unpack('C*')
-      array_utf8 = []
-      0.step(array_enc.size-1, 2){|i| 
-        array_utf8 << (array_enc.at(i+1) + array_enc.at(i)*0x100)
-      }
-      array_utf8.pack('U*')
-    end
-
-    register(UTF_16) do |obj|
-      class << obj
-        alias decode decode_utf16
-        alias encode encode_utf16
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-8.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-8.rb
deleted file mode 100644
index bb08f44..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/encodings/UTF-8.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module REXML
-  module Encoding
-    def encode_utf8 content
-      content
-    end
-
-    def decode_utf8(str)
-      str
-    end
-
-    register(UTF_8) do |obj|
-      class << obj
-        alias decode decode_utf8
-        alias encode encode_utf8
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/entity.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/entity.rb
deleted file mode 100644
index 4f47e65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/entity.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require 'rexml/child'
-require 'rexml/source'
-require 'rexml/xmltokens'
-
-module REXML
-	# God, I hate DTDs.  I really do.  Why this ##### standard still
-	# plagues us is beyond me.
-	class Entity < Child
-		include XMLTokens
-		PUBIDCHAR = "\x20\x0D\x0Aa-zA-Z0-9\\-()+,./:=?;!*@$_%#"
-		SYSTEMLITERAL = %Q{((?:"[^"]*")|(?:'[^']*'))}
-		PUBIDLITERAL = %Q{("[#{PUBIDCHAR}']*"|'[#{PUBIDCHAR}]*')}
-		EXTERNALID = "(?:(?:(SYSTEM)\\s+#{SYSTEMLITERAL})|(?:(PUBLIC)\\s+#{PUBIDLITERAL}\\s+#{SYSTEMLITERAL}))"
-		NDATADECL = "\\s+NDATA\\s+#{NAME}"
-		PEREFERENCE = "%#{NAME};"
-		ENTITYVALUE = %Q{((?:"(?:[^%&"]|#{PEREFERENCE}|#{REFERENCE})*")|(?:'([^%&']|#{PEREFERENCE}|#{REFERENCE})*'))}
-		PEDEF = "(?:#{ENTITYVALUE}|#{EXTERNALID})"
-		ENTITYDEF = "(?:#{ENTITYVALUE}|(?:#{EXTERNALID}(#{NDATADECL})?))"
-		PEDECL = "<!ENTITY\\s+(%)\\s+#{NAME}\\s+#{PEDEF}\\s*>"
-		GEDECL = "<!ENTITY\\s+#{NAME}\\s+#{ENTITYDEF}\\s*>"
-		ENTITYDECL = /\s*(?:#{GEDECL})|(?:#{PEDECL})/um
-
-		attr_reader :name, :external, :ref, :ndata, :pubid
-
-		# Create a new entity.  Simple entities can be constructed by passing a
-		# name, value to the constructor; this creates a generic, plain entity
-		# reference. For anything more complicated, you have to pass a Source to
-		# the constructor with the entity definiton, or use the accessor methods.
-		# +WARNING+: There is no validation of entity state except when the entity
-		# is read from a stream.  If you start poking around with the accessors,
-		# you can easily create a non-conformant Entity.  The best thing to do is
-		# dump the stupid DTDs and use XMLSchema instead.
-		# 
-		#  e = Entity.new( 'amp', '&' )
-		def initialize stream, value=nil, parent=nil, reference=false
-			super(parent)
-			@ndata = @pubid = @value = @external = nil
-			if stream.kind_of? Array
-				@name = stream[1]
-				if stream[-1] == '%'
-					@reference = true 
-					stream.pop
-				else
-					@reference = false
-				end
-				if stream[2] =~ /SYSTEM|PUBLIC/
-					@external = stream[2]
-					if @external == 'SYSTEM'
-						@ref = stream[3]
-						@ndata = stream[4] if stream.size == 5
-					else
-						@pubid = stream[3]
-						@ref = stream[4]
-					end
-				else
-					@value = stream[2]
-				end
-			else
-				@reference = reference
-				@external = nil
-				@name = stream
-				@value = value
-			end
-		end
-
-		# Evaluates whether the given string matchs an entity definition,
-		# returning true if so, and false otherwise.
-		def Entity::matches? string
-			(ENTITYDECL =~ string) == 0
-		end
-
-		# Evaluates to the unnormalized value of this entity; that is, replacing
-		# all entities -- both %ent; and &ent; entities.  This differs from
-		# +value()+ in that +value+ only replaces %ent; entities.
-		def unnormalized
-			v = value()
-			return nil if v.nil?
-			@unnormalized = Text::unnormalize(v, parent)
-			@unnormalized
-		end
-
-		#once :unnormalized
-
-		# Returns the value of this entity unprocessed -- raw.  This is the
-		# normalized value; that is, with all %ent; and &ent; entities intact
-		def normalized
-			@value
-		end
-
-		# Write out a fully formed, correct entity definition (assuming the Entity
-		# object itself is valid.)
-    #
-    # out::
-    #   An object implementing <TT><<<TT> to which the entity will be
-    #   output
-    # indent::
-    #   *DEPRECATED* and ignored
-		def write out, indent=-1
-			out << '<!ENTITY '
-			out << '% ' if @reference
-			out << @name
-			out << ' '
-			if @external
-				out << @external << ' '
-				if @pubid
-					q = @pubid.include?('"')?"'":'"'
-					out << q << @pubid << q << ' '
-				end
-				q = @ref.include?('"')?"'":'"'
-				out << q << @ref << q
-				out << ' NDATA ' << @ndata if @ndata
-			else
-				q = @value.include?('"')?"'":'"'
-				out << q << @value << q
-			end
-			out << '>'
-		end
-
-		# Returns this entity as a string.  See write().
-		def to_s
-			rv = ''
-			write rv
-			rv
-		end
-
-		PEREFERENCE_RE = /#{PEREFERENCE}/um
-		# Returns the value of this entity.  At the moment, only internal entities
-		# are processed.  If the value contains internal references (IE,
-		# %blah;), those are replaced with their values.  IE, if the doctype
-		# contains:
-		#  <!ENTITY % foo "bar">
-		#  <!ENTITY yada "nanoo %foo; nanoo>
-		# then:
-		#  doctype.entity('yada').value   #-> "nanoo bar nanoo"
-		def value
-			if @value
-				matches = @value.scan(PEREFERENCE_RE)
-				rv = @value.clone
-				if @parent
-					matches.each do |entity_reference|
-						entity_value = @parent.entity( entity_reference[0] )
-						rv.gsub!( /%#{entity_reference};/um, entity_value )
-					end
-				end
-				return rv
-			end
-			nil
-		end
-	end
-
-	# This is a set of entity constants -- the ones defined in the XML
-	# specification.  These are +gt+, +lt+, +amp+, +quot+ and +apos+.
-	module EntityConst
-		# +>+
-		GT = Entity.new( 'gt', '>' )
-		# +<+
-		LT = Entity.new( 'lt', '<' )
-		# +&+
-		AMP = Entity.new( 'amp', '&' )
-		# +"+
-		QUOT = Entity.new( 'quot', '"' )
-		# +'+
-		APOS = Entity.new( 'apos', "'" )
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/default.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/default.rb
deleted file mode 100644
index 77381bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/default.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-module REXML
-  module Formatters
-    class Default
-      # Prints out the XML document with no formatting -- except if id_hack is
-      # set.
-      #
-      # ie_hack::
-      #   If set to true, then inserts whitespace before the close of an empty
-      #   tag, so that IE's bad XML parser doesn't choke.
-      def initialize( ie_hack=false )
-        @ie_hack = ie_hack
-      end
-
-      # Writes the node to some output.
-      #
-      # node::
-      #   The node to write
-      # output::
-      #   A class implementing <TT><<</TT>.  Pass in an Output object to
-      #   change the output encoding.
-      def write( node, output )
-        case node
-
-        when Document 
-          if node.xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
-            output = Output.new( output, node.xml_decl.encoding )
-          end
-          write_document( node, output )
-
-        when Element
-          write_element( node, output )
-
-        when Declaration, ElementDecl, NotationDecl, ExternalEntity, Entity,
-             Attribute, AttlistDecl
-          node.write( output,-1 )
-
-        when Instruction
-          write_instruction( node, output )
-
-        when DocType, XMLDecl
-          node.write( output )
-
-        when Comment
-          write_comment( node, output )
-
-        when CData
-          write_cdata( node, output )
-
-        when Text
-          write_text( node, output )
-
-        else
-          raise Exception.new("XML FORMATTING ERROR")
-
-        end
-      end
-
-      protected
-      def write_document( node, output )
-        node.children.each { |child| write( child, output ) }
-      end
-
-      def write_element( node, output )
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        if node.children.empty?
-          output << " " if @ie_hack
-          output << "/" 
-        else
-          output << ">"
-          node.children.each { |child|
-            write( child, output )
-          }
-          output << "</#{node.expanded_name}"
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        output << node.to_s()
-      end
-
-      def write_comment( node, output )
-        output << Comment::START
-        output << node.to_s
-        output << Comment::STOP
-      end
-
-      def write_cdata( node, output )
-        output << CData::START
-        output << node.to_s
-        output << CData::STOP
-      end
-
-      def write_instruction( node, output )
-        output << Instruction::START.sub(/\\/u, '')
-        output << node.target
-        output << ' '
-        output << node.content
-        output << Instruction::STOP.sub(/\\/u, '')
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/pretty.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/pretty.rb
deleted file mode 100644
index 22b6d85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/pretty.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-require 'rexml/formatters/default'
-
-module REXML
-  module Formatters
-    # Pretty-prints an XML document.  This destroys whitespace in text nodes
-    # and will insert carriage returns and indentations.
-    #
-    # TODO: Add an option to print attributes on new lines
-    class Pretty < Default
-
-      # If compact is set to true, then the formatter will attempt to use as
-      # little space as possible
-      attr_accessor :compact
-      # The width of a page.  Used for formatting text
-      attr_accessor :width
-
-      # Create a new pretty printer.
-      #
-      # output::
-      #   An object implementing '<<(String)', to which the output will be written.
-      # indentation::
-      #   An integer greater than 0.  The indentation of each level will be
-      #   this number of spaces.  If this is < 1, the behavior of this object
-      #   is undefined.  Defaults to 2.
-      # ie_hack::
-      #   If true, the printer will insert whitespace before closing empty
-      #   tags, thereby allowing Internet Explorer's feeble XML parser to
-      #   function. Defaults to false.
-      def initialize( indentation=2, ie_hack=false )
-        @indentation = indentation
-        @level = 0
-        @ie_hack = ie_hack
-        @width = 80
-      end
-
-      protected
-      def write_element(node, output)
-        output << ' '*@level
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        if node.children.empty?
-          if @ie_hack
-            output << " "
-          end
-          output << "/" 
-        else
-          output << ">"
-          # If compact and all children are text, and if the formatted output
-          # is less than the specified width, then try to print everything on
-          # one line
-          skip = false
-          if compact
-            if node.children.inject(true) {|s,c| s & c.kind_of?(Text)}
-              string = ""
-              old_level = @level
-              @level = 0
-              node.children.each { |child| write( child, string ) }
-              @level = old_level
-              if string.length < @width
-                output << string
-                skip = true
-              end
-            end
-          end
-          unless skip
-            output << "\n"
-            @level += @indentation
-            node.children.each { |child|
-              next if child.kind_of?(Text) and child.to_s.strip.length == 0
-              write( child, output )
-              output << "\n"
-            }
-            @level -= @indentation
-            output << ' '*@level
-          end
-          output << "</#{node.expanded_name}"
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        s = node.to_s()
-        s.gsub!(/\s/,' ')
-        s.squeeze!(" ")
-        s = wrap(s, 80- at level)
-        s = indent_text(s, @level, " ", true)
-        output << (' '*@level + s)
-      end
-
-      def write_comment( node, output)
-        output << ' ' * @level
-        super
-      end
-
-      def write_cdata( node, output)
-        output << ' ' * @level
-        super
-      end
-
-      def write_document( node, output )
-        # Ok, this is a bit odd.  All XML documents have an XML declaration,
-        # but it may not write itself if the user didn't specifically add it,
-        # either through the API or in the input document.  If it doesn't write
-        # itself, then we don't need a carriage return... which makes this
-        # logic more complex.
-        node.children.each { |child|
-          next if child == node.children[-1] and child.instance_of?(Text)
-          unless child == node.children[0] or child.instance_of?(Text) or
-            (child == node.children[1] and !node.children[0].writethis)
-            output << "\n"
-          end
-          write( child, output )
-        }
-      end
-
-      private
-      def indent_text(string, level=1, style="\t", indentfirstline=true)
-        return string if level < 0
-        string.gsub(/\n/, "\n#{style*level}")
-      end
-
-      def wrap(string, width)
-        # Recursivly wrap string at width.
-        return string if string.length <= width
-        place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
-        return string[0,place] + "\n" + wrap(string[place+1..-1], width)
-      end
-
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/transitive.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/transitive.rb
deleted file mode 100644
index 1d80f21..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/formatters/transitive.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rexml/formatters/pretty'
-
-module REXML
-  module Formatters
-    # The Transitive formatter writes an XML document that parses to an
-    # identical document as the source document.  This means that no extra
-    # whitespace nodes are inserted, and whitespace within text nodes is
-    # preserved.  Within these constraints, the document is pretty-printed,
-    # with whitespace inserted into the metadata to introduce formatting.
-    #
-    # Note that this is only useful if the original XML is not already
-    # formatted.  Since this formatter does not alter whitespace nodes, the
-    # results of formatting already formatted XML will be odd.
-    class Transitive < Default
-      def initialize( indentation=2 )
-        @indentation = indentation
-        @level = 0
-      end
-
-      protected
-      def write_element( node, output )
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        output << "\n"
-        output << ' '*@level
-        if node.children.empty?
-          output << "/" 
-        else
-          output << ">"
-          # If compact and all children are text, and if the formatted output
-          # is less than the specified width, then try to print everything on
-          # one line
-          skip = false
-          @level += @indentation
-          node.children.each { |child|
-            write( child, output )
-          }
-          @level -= @indentation
-          output << "</#{node.expanded_name}"
-          output << "\n"
-          output << ' '*@level
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        output << node.to_s()
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/functions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/functions.rb
deleted file mode 100644
index 8293e9c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/functions.rb
+++ /dev/null
@@ -1,382 +0,0 @@
-module REXML
-  # If you add a method, keep in mind two things:
-  # (1) the first argument will always be a list of nodes from which to
-  # filter.  In the case of context methods (such as position), the function
-  # should return an array with a value for each child in the array.
-  # (2) all method calls from XML will have "-" replaced with "_".
-  # Therefore, in XML, "local-name()" is identical (and actually becomes)
-  # "local_name()"
-  module Functions
-    @@context = nil
-    @@namespace_context = {}
-    @@variables = {}
-
-    def Functions::namespace_context=(x) ; @@namespace_context=x ; end
-    def Functions::variables=(x) ; @@variables=x ; end
-    def Functions::namespace_context ; @@namespace_context ; end
-    def Functions::variables ; @@variables ; end
-
-    def Functions::context=(value); @@context = value; end
-
-    def Functions::text( )
-      if @@context[:node].node_type == :element
-        return @@context[:node].find_all{|n| n.node_type == :text}.collect{|n| n.value}
-      elsif @@context[:node].node_type == :text
-        return @@context[:node].value
-      else
-        return false
-      end
-    end
-
-    def Functions::last( )
-      @@context[:size]
-    end
-
-    def Functions::position( )
-      @@context[:index]
-    end
-
-    def Functions::count( node_set )
-      node_set.size
-    end
-
-    # Since REXML is non-validating, this method is not implemented as it
-    # requires a DTD
-    def Functions::id( object )
-    end
-
-    # UNTESTED
-    def Functions::local_name( node_set=nil )
-      get_namespace( node_set ) do |node|
-        return node.local_name 
-      end
-    end
-
-    def Functions::namespace_uri( node_set=nil )
-      get_namespace( node_set ) {|node| node.namespace}
-    end
-
-    def Functions::name( node_set=nil )
-      get_namespace( node_set ) do |node| 
-        node.expanded_name
-      end
-    end
-
-    # Helper method.
-    def Functions::get_namespace( node_set = nil )
-      if node_set == nil
-        yield @@context[:node] if defined? @@context[:node].namespace
-      else  
-        if node_set.respond_to? :each
-          node_set.each { |node| yield node if defined? node.namespace }
-        elsif node_set.respond_to? :namespace
-          yield node_set
-        end
-      end
-    end
-
-    # A node-set is converted to a string by returning the string-value of the
-    # node in the node-set that is first in document order. If the node-set is
-    # empty, an empty string is returned.
-    #
-    # A number is converted to a string as follows
-    #
-    # NaN is converted to the string NaN 
-    #
-    # positive zero is converted to the string 0 
-    #
-    # negative zero is converted to the string 0 
-    #
-    # positive infinity is converted to the string Infinity 
-    #
-    # negative infinity is converted to the string -Infinity 
-    #
-    # if the number is an integer, the number is represented in decimal form
-    # as a Number with no decimal point and no leading zeros, preceded by a
-    # minus sign (-) if the number is negative
-    #
-    # otherwise, the number is represented in decimal form as a Number
-    # including a decimal point with at least one digit before the decimal
-    # point and at least one digit after the decimal point, preceded by a
-    # minus sign (-) if the number is negative; there must be no leading zeros
-    # before the decimal point apart possibly from the one required digit
-    # immediately before the decimal point; beyond the one required digit
-    # after the decimal point there must be as many, but only as many, more
-    # digits as are needed to uniquely distinguish the number from all other
-    # IEEE 754 numeric values.
-    #
-    # The boolean false value is converted to the string false. The boolean
-    # true value is converted to the string true.
-    #
-    # An object of a type other than the four basic types is converted to a
-    # string in a way that is dependent on that type.
-    def Functions::string( object=nil )
-      #object = @context unless object
-      if object.instance_of? Array
-        string( object[0] )
-      elsif defined? object.node_type
-        if object.node_type == :attribute
-          object.value
-        elsif object.node_type == :element || object.node_type == :document
-          string_value(object)
-        else
-          object.to_s
-        end
-      elsif object.nil?
-        return ""
-      else
-        object.to_s
-      end
-    end
-
-    def Functions::string_value( o )
-      rv = ""
-      o.children.each { |e|
-        if e.node_type == :text
-          rv << e.to_s
-        elsif e.node_type == :element
-          rv << string_value( e )
-        end
-      }
-      rv
-    end
-
-    # UNTESTED
-    def Functions::concat( *objects )
-      objects.join
-    end
-
-    # Fixed by Mike Stok
-    def Functions::starts_with( string, test )
-      string(string).index(string(test)) == 0
-    end
-
-    # Fixed by Mike Stok
-    def Functions::contains( string, test )
-      string(string).include?(string(test))
-    end
-
-    # Kouhei fixed this 
-    def Functions::substring_before( string, test )
-      ruby_string = string(string)
-      ruby_index = ruby_string.index(string(test))
-      if ruby_index.nil?
-        ""
-      else
-        ruby_string[ 0...ruby_index ]
-      end
-    end
- 
-    # Kouhei fixed this too
-    def Functions::substring_after( string, test )
-      ruby_string = string(string)
-      test_string = string(test)
-      return $1 if ruby_string =~ /#{test}(.*)/
-      ""
-    end
-
-    # Take equal portions of Mike Stok and Sean Russell; mix 
-    # vigorously, and pour into a tall, chilled glass.  Serves 10,000.
-    def Functions::substring( string, start, length=nil )
-      ruby_string = string(string)
-      ruby_length = if length.nil? 
-                      ruby_string.length.to_f
-                    else
-                      number(length)
-                    end
-      ruby_start = number(start)
-
-      # Handle the special cases
-      return '' if (
-        ruby_length.nan? or 
-        ruby_start.nan? or
-        ruby_start.infinite?
-      )
-
-      infinite_length = ruby_length.infinite? == 1
-      ruby_length = ruby_string.length if infinite_length
-        
-      # Now, get the bounds.  The XPath bounds are 1..length; the ruby bounds 
-      # are 0..length.  Therefore, we have to offset the bounds by one.
-      ruby_start = ruby_start.round - 1
-      ruby_length = ruby_length.round
-
-      if ruby_start < 0
-       ruby_length += ruby_start unless infinite_length
-       ruby_start = 0
-      end
-      return '' if ruby_length <= 0
-      ruby_string[ruby_start,ruby_length]
-    end
-
-    # UNTESTED
-    def Functions::string_length( string )
-      string(string).length
-    end
-
-    # UNTESTED
-    def Functions::normalize_space( string=nil )
-      string = string(@@context[:node]) if string.nil?
-      if string.kind_of? Array
-        string.collect{|x| string.to_s.strip.gsub(/\s+/um, ' ') if string}
-      else
-        string.to_s.strip.gsub(/\s+/um, ' ')
-      end
-    end
-
-    # This is entirely Mike Stok's beast
-    def Functions::translate( string, tr1, tr2 )
-      from = string(tr1)
-      to = string(tr2)
-
-      # the map is our translation table.
-      #
-      # if a character occurs more than once in the
-      # from string then we ignore the second &
-      # subsequent mappings
-      #
-      # if a charactcer maps to nil then we delete it
-      # in the output.  This happens if the from
-      # string is longer than the to string
-      #
-      # there's nothing about - or ^ being special in
-      # http://www.w3.org/TR/xpath#function-translate
-      # so we don't build ranges or negated classes
-
-      map = Hash.new
-      0.upto(from.length - 1) { |pos|
-        from_char = from[pos]
-        unless map.has_key? from_char
-          map[from_char] = 
-          if pos < to.length
-            to[pos]
-          else
-            nil
-          end
-        end
-      }
-
-      string(string).unpack('U*').collect { |c|
-        if map.has_key? c then map[c] else c end
-      }.compact.pack('U*')
-    end
-
-    # UNTESTED
-    def Functions::boolean( object=nil )
-      if object.kind_of? String
-        if object =~ /\d+/u
-          return object.to_f != 0
-        else
-          return object.size > 0
-        end
-      elsif object.kind_of? Array
-        object = object.find{|x| x and true}
-      end
-      return object ? true : false
-    end
-
-    # UNTESTED
-    def Functions::not( object )
-      not boolean( object )
-    end
-
-    # UNTESTED
-    def Functions::true( )
-      true
-    end
-
-    # UNTESTED
-    def Functions::false(  )
-      false
-    end
-
-    # UNTESTED
-    def Functions::lang( language )
-      lang = false
-      node = @@context[:node]
-      attr = nil
-      until node.nil?
-        if node.node_type == :element
-          attr = node.attributes["xml:lang"]
-          unless attr.nil?
-            lang = compare_language(string(language), attr)
-            break
-          else
-          end
-        end
-        node = node.parent
-      end
-      lang
-    end
-
-    def Functions::compare_language lang1, lang2
-      lang2.downcase.index(lang1.downcase) == 0
-    end
-
-    # a string that consists of optional whitespace followed by an optional
-    # minus sign followed by a Number followed by whitespace is converted to
-    # the IEEE 754 number that is nearest (according to the IEEE 754
-    # round-to-nearest rule) to the mathematical value represented by the
-    # string; any other string is converted to NaN
-    #
-    # boolean true is converted to 1; boolean false is converted to 0
-    #
-    # a node-set is first converted to a string as if by a call to the string
-    # function and then converted in the same way as a string argument
-    #
-    # an object of a type other than the four basic types is converted to a
-    # number in a way that is dependent on that type
-    def Functions::number( object=nil )
-      object = @@context[:node] unless object
-      case object
-      when true
-        Float(1)
-      when false
-        Float(0)
-      when Array
-        number(string( object ))
-      when Numeric
-        object.to_f
-      else
-        str = string( object )
-        # If XPath ever gets scientific notation...
-        #if str =~ /^\s*-?(\d*\.?\d+|\d+\.)([Ee]\d*)?\s*$/
-        if str =~ /^\s*-?(\d*\.?\d+|\d+\.)\s*$/
-          str.to_f
-        else
-          (0.0 / 0.0)
-        end
-      end
-    end
-
-    def Functions::sum( nodes )
-      nodes = [nodes] unless nodes.kind_of? Array
-      nodes.inject(0) { |r,n| r += number(string(n)) }
-    end
-    
-    def Functions::floor( number )
-      number(number).floor
-    end
-
-    def Functions::ceiling( number )
-      number(number).ceil
-    end
-
-    def Functions::round( number )
-      begin
-        number(number).round
-      rescue FloatDomainError
-        number(number)
-      end
-    end
-
-    def Functions::processing_instruction( node )
-      node.node_type == :processing_instruction
-    end
-
-    def Functions::method_missing( id )
-      puts "METHOD MISSING #{id.id2name}"
-      XPath.match( @@context[:node], id.id2name )
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/instruction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/instruction.rb
deleted file mode 100644
index c16b894..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/instruction.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require "rexml/child"
-require "rexml/source"
-
-module REXML
-	# Represents an XML Instruction; IE, <? ... ?>
-	# TODO: Add parent arg (3rd arg) to constructor
-	class Instruction < Child
-		START = '<\?'
-		STOP = '\?>'
-
-		# target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
-		# content is everything else.
-		attr_accessor :target, :content
-
-		# Constructs a new Instruction
-		# @param target can be one of a number of things.  If String, then 
-		# the target of this instruction is set to this.  If an Instruction,
-		# then the Instruction is shallowly cloned (target and content are
-		# copied).  If a Source, then the source is scanned and parsed for
-		# an Instruction declaration.
-		# @param content Must be either a String, or a Parent.  Can only
-		# be a Parent if the target argument is a Source.  Otherwise, this
-		# String is set as the content of this instruction.
-		def initialize(target, content=nil)
-			if target.kind_of? String
-				super()
-				@target = target
-				@content = content
-			elsif target.kind_of? Instruction
-				super(content)
-				@target = target.target
-				@content = target.content
-			end
-			@content.strip! if @content
-		end
-
-		def clone
-			Instruction.new self
-		end
-		
-    # == DEPRECATED
-    # See the rexml/formatters package
-    #
-		def write writer, indent=-1, transitive=false, ie_hack=false
-      Kernel.warn( "#{self.class.name}.write is deprecated" )
-			indent(writer, indent)
-			writer << START.sub(/\\/u, '')
-			writer << @target
-			writer << ' '
-			writer << @content
-			writer << STOP.sub(/\\/u, '')
-		end
-
-		# @return true if other is an Instruction, and the content and target
-		# of the other matches the target and content of this object.
-		def ==( other )
-			other.kind_of? Instruction and
-			other.target == @target and
-			other.content == @content
-		end
-
-    def node_type
-      :processing_instruction
-    end
-
-    def inspect
-      "<?p-i #{target} ...?>"
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/light/node.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/light/node.rb
deleted file mode 100644
index 943ec5f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/light/node.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-require 'rexml/xmltokens'
-require 'rexml/light/node'
-
-# [ :element, parent, name, attributes, children* ]
-	# a = Node.new
-	# a << "B"		# => <a>B</a>
-	# a.b			# => <a>B<b/></a>
-	# a.b[1]			# => <a>B<b/><b/><a>
-	# a.b[1]["x"] = "y"	# => <a>B<b/><b x="y"/></a>
-	# a.b[0].c		# => <a>B<b><c/></b><b x="y"/></a>
-	# a.b.c << "D"		# => <a>B<b><c>D</c></b><b x="y"/></a>
-module REXML
-	module Light
-		# Represents a tagged XML element.  Elements are characterized by
-		# having children, attributes, and names, and can themselves be
-		# children.
-		class Node
-			NAMESPLIT = /^(?:(#{XMLTokens::NCNAME_STR}):)?(#{XMLTokens::NCNAME_STR})/u
-			PARENTS = [ :element, :document, :doctype ]
-			# Create a new element.
-			def initialize node=nil
-				@node = node
-				if node.kind_of? String
-					node = [ :text, node ]
-				elsif node.nil?
-					node = [ :document, nil, nil ]
-				elsif node[0] == :start_element
-					node[0] = :element
-				elsif node[0] == :start_doctype
-					node[0] = :doctype
-				elsif node[0] == :start_document
-					node[0] = :document
-				end
-			end
-
-			def size
-				if PARENTS.include? @node[0]
-					@node[-1].size
-				else
-					0
-				end
-			end
-
-			def each( &block )
-				size.times { |x| yield( at(x+4) ) }
-			end
-
-			def name
-				at(2)
-			end
-
-			def name=( name_str, ns=nil )
-				pfx = ''
-				pfx = "#{prefix(ns)}:" if ns
-				_old_put(2, "#{pfx}#{name_str}")
-			end
-
-			def parent=( node )
-				_old_put(1,node)
-			end
-
-			def local_name
-				namesplit
-				@name
-			end
-
-			def local_name=( name_str )
-				_old_put( 1, "#@prefix:#{name_str}" )
-			end
-
-			def prefix( namespace=nil )
-				prefix_of( self, namespace )
-			end
-
-			def namespace( prefix=prefix() )
-				namespace_of( self, prefix )
-			end
-
-			def namespace=( namespace )
-				@prefix = prefix( namespace )
-				pfx = ''
-				pfx = "#@prefix:" if @prefix.size > 0
-				_old_put(1, "#{pfx}#@name")
-			end
-
-			def []( reference, ns=nil )
-				if reference.kind_of? String
-					pfx = ''
-					pfx = "#{prefix(ns)}:" if ns
-					at(3)["#{pfx}#{reference}"]
-				elsif reference.kind_of? Range
-					_old_get( Range.new(4+reference.begin, reference.end, reference.exclude_end?) )
-				else
-					_old_get( 4+reference )
-				end
-			end
-
-			def =~( path )
-				XPath.match( self, path )
-			end
-
-			# Doesn't handle namespaces yet
-			def []=( reference, ns, value=nil )
-				if reference.kind_of? String
-					value = ns unless value
-					at( 3 )[reference] = value
-				elsif reference.kind_of? Range
-					_old_put( Range.new(3+reference.begin, reference.end, reference.exclude_end?), ns )
-				else
-					if value
-						_old_put( 4+reference, ns, value )
-					else
-						_old_put( 4+reference, ns )
-					end
-				end
-			end
-
-			# Append a child to this element, optionally under a provided namespace.
-			# The namespace argument is ignored if the element argument is an Element
-			# object.  Otherwise, the element argument is a string, the namespace (if
-			# provided) is the namespace the element is created in.
-			def << element
-				if node_type() == :text
-					at(-1) << element
-				else
-					newnode = Node.new( element )
-					newnode.parent = self
-					self.push( newnode )
-				end
-				at(-1)
-			end
-
-			def node_type
-				_old_get(0)
-			end
-
-			def text=( foo )
-				replace = at(4).kind_of?(String)? 1 : 0
-				self._old_put(4,replace, normalizefoo)
-			end
-
-			def root
-				context = self
-				context = context.at(1) while context.at(1)
-			end
-
-			def has_name?( name, namespace = '' )
-				at(3) == name and namespace() == namespace
-			end
-
-			def children
-				self
-			end
-
-			def parent
-				at(1)
-			end
-
-			def to_s
-
-			end
-
-			private
-
-			def namesplit
-				return if @name.defined?
-				at(2) =~ NAMESPLIT
-				@prefix = '' || $1
-				@name = $2
-			end
-
-			def namespace_of( node, prefix=nil )
-				if not prefix
-					name = at(2)
-					name =~ NAMESPLIT
-					prefix = $1
-				end
-				to_find = 'xmlns'
-				to_find = "xmlns:#{prefix}" if not prefix.nil?
-				ns = at(3)[ to_find ]
-				ns ? ns : namespace_of( @node[0], prefix )
-			end
-
-			def prefix_of( node, namespace=nil )
-				if not namespace
-					name = node.name
-					name =~ NAMESPLIT
-					$1
-				else
-					ns = at(3).find { |k,v| v == namespace }
-					ns ? ns : prefix_of( node.parent, namespace )
-				end
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/namespace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/namespace.rb
deleted file mode 100644
index 3e87905..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/namespace.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'rexml/xmltokens'
-
-module REXML
-	# Adds named attributes to an object.
-	module Namespace
-		# The name of the object, valid if set
-		attr_reader :name, :expanded_name
-		# The expanded name of the object, valid if name is set
-		attr_accessor :prefix
-		include XMLTokens
-		NAMESPLIT = /^(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})/u
-
-		# Sets the name and the expanded name
-		def name=( name )
-			@expanded_name = name
-			name =~ NAMESPLIT
-			if $1
-				@prefix = $1
-			else
-				@prefix = ""
-				@namespace = ""
-			end
-			@name = $2
-		end
-
-		# Compares names optionally WITH namespaces
-		def has_name?( other, ns=nil )
-			if ns
-				return (namespace() == ns and name() == other)
-			elsif other.include? ":"
-				return fully_expanded_name == other
-			else
-				return name == other
-			end
-		end
-
-		alias :local_name :name
-
-		# Fully expand the name, even if the prefix wasn't specified in the
-		# source file.
-		def fully_expanded_name
-			ns = prefix
-			return "#{ns}:#@name" if ns.size > 0 
-			return @name
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/node.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/node.rb
deleted file mode 100644
index 9780376..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/node.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require "rexml/parseexception"
-require "rexml/formatters/pretty"
-require "rexml/formatters/default"
-
-module REXML
-	# Represents a node in the tree.  Nodes are never encountered except as
-	# superclasses of other objects.  Nodes have siblings.
-	module Node
-		# @return the next sibling (nil if unset)
-		def next_sibling_node
-			return nil if @parent.nil?
-			@parent[ @parent.index(self) + 1 ]
-		end
-
-		# @return the previous sibling (nil if unset)
-		def previous_sibling_node
-			return nil if @parent.nil?
-			ind = @parent.index(self)
-			return nil if ind == 0
-			@parent[ ind - 1 ]
-		end
-
-    # indent::
-    #   *DEPRECATED* This parameter is now ignored.  See the formatters in the
-    #   REXML::Formatters package for changing the output style.
-		def to_s indent=nil
-      unless indent.nil?
-        Kernel.warn( "#{self.class.name}.to_s(indent) parameter is deprecated" )
-        f = REXML::Formatters::Pretty.new( indent )
-        f.write( self, rv, indent )
-      else
-        f = REXML::Formatters::Default.new
-        f.write( self, rv = "" )
-      end
-      return rv
-		end
-
-		def indent to, ind
- 			if @parent and @parent.context and not @parent.context[:indentstyle].nil? then
- 				indentstyle = @parent.context[:indentstyle]
- 			else
- 				indentstyle = '  '
- 			end
- 			to << indentstyle*ind unless ind<1
-		end
-
-		def parent?
-			false;
-		end
-
-
-		# Visit all subnodes of +self+ recursively
-		def each_recursive(&block) # :yields: node
-			self.elements.each {|node|
-				block.call(node)
-				node.each_recursive(&block)
-			}
-		end
-
-		# Find (and return) first subnode (recursively) for which the block 
-    # evaluates to true. Returns +nil+ if none was found.
-		def find_first_recursive(&block) # :yields: node
-      each_recursive {|node|
-        return node if block.call(node)
-      }
-      return nil
-    end
-
-    # Returns the position that +self+ holds in its parent's array, indexed
-    # from 1.
-    def index_in_parent
-      parent.index(self)+1
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/output.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/output.rb
deleted file mode 100644
index be4d23d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/output.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'rexml/encoding'
-
-module REXML
-	class Output
-		include Encoding
-    
-    attr_reader :encoding
-
-		def initialize real_IO, encd="iso-8859-1"
-			@output = real_IO
-			self.encoding = encd
-
-			@to_utf = encd == UTF_8 ? false : true
-		end
-
-		def <<( content )
-			@output << (@to_utf ? self.encode(content) : content)
-		end
-
-    def to_s
-      "Output[#{encoding}]"
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parent.rb
deleted file mode 100644
index a20aaae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parent.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-require "rexml/child"
-
-module REXML
-  # A parent has children, and has methods for accessing them.  The Parent
-  # class is never encountered except as the superclass for some other
-  # object.
-  class Parent < Child
-    include Enumerable
-    
-    # Constructor
-    # @param parent if supplied, will be set as the parent of this object
-    def initialize parent=nil
-      super(parent)
-      @children = []
-    end
-    
-    def add( object )
-      #puts "PARENT GOTS #{size} CHILDREN"
-      object.parent = self
-      @children << object
-      #puts "PARENT NOW GOTS #{size} CHILDREN"
-      object
-    end
-    
-    alias :push :add
-    alias :<< :push
-    
-    def unshift( object )
-      object.parent = self
-      @children.unshift object
-    end
-    
-    def delete( object )
-      found = false
-      @children.delete_if {|c| c.equal?(object) and found = true }
-      object.parent = nil if found
-    end
-    
-    def each(&block)
-      @children.each(&block)
-    end
-    
-    def delete_if( &block )
-      @children.delete_if(&block)
-    end
-    
-    def delete_at( index )
-      @children.delete_at index
-    end
-    
-    def each_index( &block )
-      @children.each_index(&block)
-    end
-    
-    # Fetches a child at a given index
-    # @param index the Integer index of the child to fetch
-    def []( index )
-      @children[index]
-    end
-    
-    alias :each_child :each
-    
-    
-    
-    # Set an index entry.  See Array.[]=
-    # @param index the index of the element to set
-    # @param opt either the object to set, or an Integer length
-    # @param child if opt is an Integer, this is the child to set
-    # @return the parent (self)
-    def []=( *args )
-      args[-1].parent = self
-      @children[*args[0..-2]] = args[-1]
-    end
-    
-    # Inserts an child before another child
-    # @param child1 this is either an xpath or an Element.  If an Element,
-    # child2 will be inserted before child1 in the child list of the parent.
-    # If an xpath, child2 will be inserted before the first child to match
-    # the xpath.
-    # @param child2 the child to insert
-    # @return the parent (self)
-    def insert_before( child1, child2 )
-      if child1.kind_of? String
-        child1 = XPath.first( self, child1 )
-        child1.parent.insert_before child1, child2
-      else
-        ind = index(child1)
-        child2.parent.delete(child2) if child2.parent
-        @children[ind,0] = child2
-        child2.parent = self
-      end
-      self
-    end
-    
-    # Inserts an child after another child
-    # @param child1 this is either an xpath or an Element.  If an Element,
-    # child2 will be inserted after child1 in the child list of the parent.
-    # If an xpath, child2 will be inserted after the first child to match
-    # the xpath.
-    # @param child2 the child to insert
-    # @return the parent (self)
-    def insert_after( child1, child2 )
-      if child1.kind_of? String
-        child1 = XPath.first( self, child1 )
-        child1.parent.insert_after child1, child2
-      else
-        ind = index(child1)+1
-        child2.parent.delete(child2) if child2.parent
-        @children[ind,0] = child2
-        child2.parent = self
-      end
-      self
-    end
-    
-    def to_a
-      @children.dup
-    end
-    
-    # Fetches the index of a given child
-    # @param child the child to get the index of
-    # @return the index of the child, or nil if the object is not a child
-    # of this parent.
-    def index( child )
-      count = -1
-      @children.find { |i| count += 1 ; i.hash == child.hash }
-      count
-    end
-    
-    # @return the number of children of this parent
-    def size
-      @children.size
-    end
-    
-    alias :length :size
-    
-    # Replaces one child with another, making sure the nodelist is correct
-    # @param to_replace the child to replace (must be a Child)
-    # @param replacement the child to insert into the nodelist (must be a 
-    # Child)
-    def replace_child( to_replace, replacement )
-      @children.map! {|c| c.equal?( to_replace ) ? replacement : c }
-      to_replace.parent = nil
-      replacement.parent = self
-    end
-    
-    # Deeply clones this object.  This creates a complete duplicate of this
-    # Parent, including all descendants.
-    def deep_clone
-      cl = clone()
-      each do |child|
-        if child.kind_of? Parent
-          cl << child.deep_clone
-        else
-          cl << child.clone
-        end
-      end
-      cl
-    end
-    
-    alias :children :to_a
-    
-    def parent?
-      true
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parseexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parseexception.rb
deleted file mode 100644
index feb7a7e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parseexception.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module REXML
-  class ParseException < RuntimeError
-    attr_accessor :source, :parser, :continued_exception
-
-    def initialize( message, source=nil, parser=nil, exception=nil )
-      super(message)
-      @source = source
-      @parser = parser
-      @continued_exception = exception
-    end
-
-    def to_s
-      # Quote the original exception, if there was one
-      if @continued_exception
-        err = @continued_exception.inspect
-        err << "\n"
-        err << @continued_exception.backtrace.join("\n")
-        err << "\n...\n"
-      else
-        err = ""
-      end
-
-      # Get the stack trace and error message
-      err << super
-
-      # Add contextual information
-      if @source
-        err << "\nLine: #{line}\n"
-        err << "Position: #{position}\n"
-        err << "Last 80 unconsumed characters:\n"
-        err << @source.buffer[0..80].gsub(/\n/, ' ')
-      end
-      
-      err
-    end
-
-    def position
-      @source.current_line[0] if @source and defined? @source.current_line and
-      @source.current_line
-    end
-
-    def line
-      @source.current_line[2] if @source and defined? @source.current_line and 
-      @source.current_line
-    end
-
-    def context
-      @source.current_line
-    end
-  end  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/baseparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/baseparser.rb
deleted file mode 100644
index fc2354a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/baseparser.rb
+++ /dev/null
@@ -1,503 +0,0 @@
-require 'rexml/parseexception'
-require 'rexml/undefinednamespaceexception'
-require 'rexml/source'
-require 'set'
-
-module REXML
-  module Parsers
-    # = Using the Pull Parser
-    # <em>This API is experimental, and subject to change.</em>
-    #  parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    puts res[1]['att'] if res.start_tag? and res[0] == 'b'
-    #  end
-    # See the PullEvent class for information on the content of the results.
-    # The data is identical to the arguments passed for the various events to
-    # the StreamListener API.
-    #
-    # Notice that:
-    #  parser = PullParser.new( "<a>BAD DOCUMENT" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    raise res[1] if res.error?
-    #  end
-    #
-    # Nat Price gave me some good ideas for the API.
-    class BaseParser
-      NCNAME_STR= '[\w:][\-\w\d.]*'
-      NAME_STR= "(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})"
-      UNAME_STR= "(?:#{NCNAME_STR}:)?#{NCNAME_STR}"
-
-      NAMECHAR = '[\-\w\d\.:]'
-      NAME = "([\\w:]#{NAMECHAR}*)"
-      NMTOKEN = "(?:#{NAMECHAR})+"
-      NMTOKENS = "#{NMTOKEN}(\\s+#{NMTOKEN})*"
-      REFERENCE = "(?:&#{NAME};|&#\\d+;|&#x[0-9a-fA-F]+;)"
-      REFERENCE_RE = /#{REFERENCE}/
-
-      DOCTYPE_START = /\A\s*<!DOCTYPE\s/um
-      DOCTYPE_PATTERN = /\s*<!DOCTYPE\s+(.*?)(\[|>)/um
-      ATTRIBUTE_PATTERN = /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\4/um
-      COMMENT_START = /\A<!--/u
-      COMMENT_PATTERN = /<!--(.*?)-->/um
-      CDATA_START = /\A<!\[CDATA\[/u
-      CDATA_END = /^\s*\]\s*>/um
-      CDATA_PATTERN = /<!\[CDATA\[(.*?)\]\]>/um
-      XMLDECL_START = /\A<\?xml\s/u;
-      XMLDECL_PATTERN = /<\?xml\s+(.*?)\?>/um
-      INSTRUCTION_START = /\A<\?/u
-      INSTRUCTION_PATTERN = /<\?(.*?)(\s+.*?)?\?>/um
-      TAG_MATCH = /^<((?>#{NAME_STR}))\s*((?>\s+#{UNAME_STR}\s*=\s*(["']).*?\5)*)\s*(\/)?>/um
-      CLOSE_MATCH = /^\s*<\/(#{NAME_STR})\s*>/um
-
-      VERSION = /\bversion\s*=\s*["'](.*?)['"]/um
-      ENCODING = /\bencoding\s*=\s*["'](.*?)['"]/um
-      STANDALONE = /\bstandalone\s*=\s["'](.*?)['"]/um
-
-      ENTITY_START = /^\s*<!ENTITY/
-      IDENTITY = /^([!\*\w\-]+)(\s+#{NCNAME_STR})?(\s+["'](.*?)['"])?(\s+['"](.*?)["'])?/u
-      ELEMENTDECL_START = /^\s*<!ELEMENT/um
-      ELEMENTDECL_PATTERN = /^\s*(<!ELEMENT.*?)>/um
-      SYSTEMENTITY = /^\s*(%.*?;)\s*$/um
-      ENUMERATION = "\\(\\s*#{NMTOKEN}(?:\\s*\\|\\s*#{NMTOKEN})*\\s*\\)"
-      NOTATIONTYPE = "NOTATION\\s+\\(\\s*#{NAME}(?:\\s*\\|\\s*#{NAME})*\\s*\\)"
-      ENUMERATEDTYPE = "(?:(?:#{NOTATIONTYPE})|(?:#{ENUMERATION}))"
-      ATTTYPE = "(CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS|#{ENUMERATEDTYPE})"
-      ATTVALUE = "(?:\"((?:[^<&\"]|#{REFERENCE})*)\")|(?:'((?:[^<&']|#{REFERENCE})*)')"
-      DEFAULTDECL = "(#REQUIRED|#IMPLIED|(?:(#FIXED\\s+)?#{ATTVALUE}))"
-      ATTDEF = "\\s+#{NAME}\\s+#{ATTTYPE}\\s+#{DEFAULTDECL}"
-      ATTDEF_RE = /#{ATTDEF}/
-      ATTLISTDECL_START = /^\s*<!ATTLIST/um
-      ATTLISTDECL_PATTERN = /^\s*<!ATTLIST\s+#{NAME}(?:#{ATTDEF})*\s*>/um
-      NOTATIONDECL_START = /^\s*<!NOTATION/um
-      PUBLIC = /^\s*<!NOTATION\s+(\w[\-\w]*)\s+(PUBLIC)\s+(["'])(.*?)\3(?:\s+(["'])(.*?)\5)?\s*>/um
-      SYSTEM = /^\s*<!NOTATION\s+(\w[\-\w]*)\s+(SYSTEM)\s+(["'])(.*?)\3\s*>/um
-
-      TEXT_PATTERN = /\A([^<]*)/um
-
-      # Entity constants
-      PUBIDCHAR = "\x20\x0D\x0Aa-zA-Z0-9\\-()+,./:=?;!*@$_%#"
-      SYSTEMLITERAL = %Q{((?:"[^"]*")|(?:'[^']*'))}
-      PUBIDLITERAL = %Q{("[#{PUBIDCHAR}']*"|'[#{PUBIDCHAR}]*')}
-      EXTERNALID = "(?:(?:(SYSTEM)\\s+#{SYSTEMLITERAL})|(?:(PUBLIC)\\s+#{PUBIDLITERAL}\\s+#{SYSTEMLITERAL}))"
-      NDATADECL = "\\s+NDATA\\s+#{NAME}"
-      PEREFERENCE = "%#{NAME};"
-      ENTITYVALUE = %Q{((?:"(?:[^%&"]|#{PEREFERENCE}|#{REFERENCE})*")|(?:'([^%&']|#{PEREFERENCE}|#{REFERENCE})*'))}
-      PEDEF = "(?:#{ENTITYVALUE}|#{EXTERNALID})"
-      ENTITYDEF = "(?:#{ENTITYVALUE}|(?:#{EXTERNALID}(#{NDATADECL})?))"
-      PEDECL = "<!ENTITY\\s+(%)\\s+#{NAME}\\s+#{PEDEF}\\s*>"
-      GEDECL = "<!ENTITY\\s+#{NAME}\\s+#{ENTITYDEF}\\s*>"
-      ENTITYDECL = /\s*(?:#{GEDECL})|(?:#{PEDECL})/um
-
-      EREFERENCE = /&(?!#{NAME};)/
-
-      DEFAULT_ENTITIES = { 
-        'gt' => [/>/, '>', '>', />/], 
-        'lt' => [/</, '<', '<', /</], 
-        'quot' => [/"/, '"', '"', /"/], 
-        "apos" => [/'/, "'", "'", /'/] 
-      }
-
-
-      ######################################################################
-      # These are patterns to identify common markup errors, to make the
-      # error messages more informative.
-      ######################################################################
-      MISSING_ATTRIBUTE_QUOTES = /^<#{NAME_STR}\s+#{NAME_STR}\s*=\s*[^"']/um
-
-      def initialize( source )
-        self.stream = source
-      end
-
-      def add_listener( listener )
-        if !defined?(@listeners) or !@listeners
-          @listeners = []
-          instance_eval <<-EOL
-            alias :_old_pull :pull
-            def pull
-              event = _old_pull
-              @listeners.each do |listener|
-                listener.receive event
-              end
-              event
-            end
-          EOL
-        end
-        @listeners << listener
-      end
-
-      attr_reader :source
-
-      def stream=( source )
-        @source = SourceFactory.create_from( source )
-        @closed = nil
-        @document_status = nil
-        @tags = []
-        @stack = []
-        @entities = []
-        @nsstack = []
-      end
-
-      def position
-        if @source.respond_to? :position
-          @source.position
-        else
-          # FIXME
-          0
-        end
-      end
-
-      # Returns true if there are no more events
-      def empty?
-        return (@source.empty? and @stack.empty?)
-      end
-
-      # Returns true if there are more events.  Synonymous with !empty?
-      def has_next?
-        return !(@source.empty? and @stack.empty?)
-      end
-
-      # Push an event back on the head of the stream.  This method
-      # has (theoretically) infinite depth.
-      def unshift token
-        @stack.unshift(token)
-      end
-
-      # Peek at the +depth+ event in the stack.  The first element on the stack
-      # is at depth 0.  If +depth+ is -1, will parse to the end of the input
-      # stream and return the last event, which is always :end_document.
-      # Be aware that this causes the stream to be parsed up to the +depth+ 
-      # event, so you can effectively pre-parse the entire document (pull the 
-      # entire thing into memory) using this method.  
-      def peek depth=0
-        raise %Q[Illegal argument "#{depth}"] if depth < -1
-        temp = []
-        if depth == -1
-          temp.push(pull()) until empty?
-        else
-          while @stack.size+temp.size < depth+1
-            temp.push(pull())
-          end
-        end
-        @stack += temp if temp.size > 0
-        @stack[depth]
-      end
-
-      # Returns the next event.  This is a +PullEvent+ object.
-      def pull
-        if @closed
-          x, @closed = @closed, nil
-          return [ :end_element, x ]
-        end
-        return [ :end_document ] if empty?
-        return @stack.shift if @stack.size > 0
-        #STDERR.puts @source.encoding
-        @source.read if @source.buffer.size<2
-        #STDERR.puts "BUFFER = #{@source.buffer.inspect}"
-        if @document_status == nil
-          #@source.consume( /^\s*/um )
-          word = @source.match( /^((?:\s+)|(?:<[^>]*>))/um )
-          word = word[1] unless word.nil?
-          #STDERR.puts "WORD = #{word.inspect}"
-          case word
-          when COMMENT_START
-            return [ :comment, @source.match( COMMENT_PATTERN, true )[1] ]
-          when XMLDECL_START
-            #STDERR.puts "XMLDECL"
-            results = @source.match( XMLDECL_PATTERN, true )[1]
-            version = VERSION.match( results )
-            version = version[1] unless version.nil?
-            encoding = ENCODING.match(results)
-            encoding = encoding[1] unless encoding.nil?
-            @source.encoding = encoding
-            standalone = STANDALONE.match(results)
-            standalone = standalone[1] unless standalone.nil?
-            return [ :xmldecl, version, encoding, standalone ]
-          when INSTRUCTION_START
-            return [ :processing_instruction, *@source.match(INSTRUCTION_PATTERN, true)[1,2] ]
-          when DOCTYPE_START
-            md = @source.match( DOCTYPE_PATTERN, true )
-            @nsstack.unshift(curr_ns=Set.new)
-            identity = md[1]
-            close = md[2]
-            identity =~ IDENTITY
-            name = $1
-            raise REXML::ParseException.new("DOCTYPE is missing a name") if name.nil?
-            pub_sys = $2.nil? ? nil : $2.strip
-            long_name = $4.nil? ? nil : $4.strip
-            uri = $6.nil? ? nil : $6.strip
-            args = [ :start_doctype, name, pub_sys, long_name, uri ]
-            if close == ">"
-              @document_status = :after_doctype
-              @source.read if @source.buffer.size<2
-              md = @source.match(/^\s*/um, true)
-              @stack << [ :end_doctype ]
-            else
-              @document_status = :in_doctype
-            end
-            return args
-          when /^\s+/
-          else
-            @document_status = :after_doctype
-            @source.read if @source.buffer.size<2
-            md = @source.match(/\s*/um, true)
-          end
-        end
-        if @document_status == :in_doctype
-          md = @source.match(/\s*(.*?>)/um)
-          case md[1]
-          when SYSTEMENTITY 
-            match = @source.match( SYSTEMENTITY, true )[1]
-            return [ :externalentity, match ]
-
-          when ELEMENTDECL_START
-            return [ :elementdecl, @source.match( ELEMENTDECL_PATTERN, true )[1] ]
-
-          when ENTITY_START
-            match = @source.match( ENTITYDECL, true ).to_a.compact
-            match[0] = :entitydecl
-            ref = false
-            if match[1] == '%'
-              ref = true
-              match.delete_at 1
-            end
-            # Now we have to sort out what kind of entity reference this is
-            if match[2] == 'SYSTEM'
-              # External reference
-              match[3] = match[3][1..-2] # PUBID
-              match.delete_at(4) if match.size > 4 # Chop out NDATA decl
-              # match is [ :entity, name, SYSTEM, pubid(, ndata)? ]
-            elsif match[2] == 'PUBLIC'
-              # External reference
-              match[3] = match[3][1..-2] # PUBID
-              match[4] = match[4][1..-2] # HREF
-              # match is [ :entity, name, PUBLIC, pubid, href ]
-            else
-              match[2] = match[2][1..-2]
-              match.pop if match.size == 4
-              # match is [ :entity, name, value ]
-            end
-            match << '%' if ref
-            return match
-          when ATTLISTDECL_START
-            md = @source.match( ATTLISTDECL_PATTERN, true )
-            raise REXML::ParseException.new( "Bad ATTLIST declaration!", @source ) if md.nil?
-            element = md[1]
-            contents = md[0]
-
-            pairs = {}
-            values = md[0].scan( ATTDEF_RE )
-            values.each do |attdef|
-              unless attdef[3] == "#IMPLIED"
-                attdef.compact!
-                val = attdef[3]
-                val = attdef[4] if val == "#FIXED "
-                pairs[attdef[0]] = val
-                if attdef[0] =~ /^xmlns:(.*)/
-                  @nsstack[0] << $1
-                end
-              end
-            end
-            return [ :attlistdecl, element, pairs, contents ]
-          when NOTATIONDECL_START
-            md = nil
-            if @source.match( PUBLIC )
-              md = @source.match( PUBLIC, true )
-              vals = [md[1],md[2],md[4],md[6]]
-            elsif @source.match( SYSTEM )
-              md = @source.match( SYSTEM, true )
-              vals = [md[1],md[2],nil,md[4]]
-            else
-              raise REXML::ParseException.new( "error parsing notation: no matching pattern", @source )
-            end
-            return [ :notationdecl, *vals ]
-          when CDATA_END
-            @document_status = :after_doctype
-            @source.match( CDATA_END, true )
-            return [ :end_doctype ]
-          end
-        end
-        begin
-          if @source.buffer[0] == ?<
-            if @source.buffer[1] == ?/
-              @nsstack.shift
-              last_tag = @tags.pop
-              #md = @source.match_to_consume( '>', CLOSE_MATCH)
-              md = @source.match( CLOSE_MATCH, true )
-              raise REXML::ParseException.new( "Missing end tag for "+
-                "'#{last_tag}' (got \"#{md[1]}\")", 
-                @source) unless last_tag == md[1]
-              return [ :end_element, last_tag ]
-            elsif @source.buffer[1] == ?!
-              md = @source.match(/\A(\s*[^>]*>)/um)
-              #STDERR.puts "SOURCE BUFFER = #{source.buffer}, #{source.buffer.size}"
-              raise REXML::ParseException.new("Malformed node", @source) unless md
-              if md[0][2] == ?-
-                md = @source.match( COMMENT_PATTERN, true )
-                return [ :comment, md[1] ] if md
-              else
-                md = @source.match( CDATA_PATTERN, true )
-                return [ :cdata, md[1] ] if md
-              end
-              raise REXML::ParseException.new( "Declarations can only occur "+
-                "in the doctype declaration.", @source)
-            elsif @source.buffer[1] == ??
-              md = @source.match( INSTRUCTION_PATTERN, true )
-              return [ :processing_instruction, md[1], md[2] ] if md
-              raise REXML::ParseException.new( "Bad instruction declaration",
-                @source)
-            else
-              # Get the next tag
-              md = @source.match(TAG_MATCH, true)
-              unless md
-                # Check for missing attribute quotes
-                raise REXML::ParseException.new("missing attribute quote", @source) if @source.match(MISSING_ATTRIBUTE_QUOTES )
-                raise REXML::ParseException.new("malformed XML: missing tag start", @source) 
-              end
-              attributes = {}
-              prefixes = Set.new
-              prefixes << md[2] if md[2]
-              @nsstack.unshift(curr_ns=Set.new)
-              if md[4].size > 0
-                attrs = md[4].scan( ATTRIBUTE_PATTERN )
-                raise REXML::ParseException.new( "error parsing attributes: [#{attrs.join ', '}], excess = \"#$'\"", @source) if $' and $'.strip.size > 0
-                attrs.each { |a,b,c,d,e| 
-                  if b == "xmlns"
-                    if c == "xml"
-                      if d != "http://www.w3.org/XML/1998/namespace"
-                        msg = "The 'xml' prefix must not be bound to any other namespace "+
-                        "(http://www.w3.org/TR/REC-xml-names/#ns-decl)"
-                        raise REXML::ParseException.new( msg, @source, self )
-                      end
-                    elsif c == "xmlns"
-                      msg = "The 'xmlns' prefix must not be declared "+
-                      "(http://www.w3.org/TR/REC-xml-names/#ns-decl)"
-                      raise REXML::ParseException.new( msg, @source, self)
-                    end
-                    curr_ns << c
-                  elsif b
-                    prefixes << b unless b == "xml"
-                  end
-                  attributes[a] = e 
-                }
-              end
-        
-              # Verify that all of the prefixes have been defined
-              for prefix in prefixes
-                unless @nsstack.find{|k| k.member?(prefix)}
-                  raise UndefinedNamespaceException.new(prefix, at source,self)
-                end
-              end
-
-              if md[6]
-                @closed = md[1]
-                @nsstack.shift
-              else
-                @tags.push( md[1] )
-              end
-              return [ :start_element, md[1], attributes ]
-            end
-          else
-            md = @source.match( TEXT_PATTERN, true )
-            if md[0].length == 0
-              @source.match( /(\s+)/, true )
-            end
-            #STDERR.puts "GOT #{md[1].inspect}" unless md[0].length == 0
-            #return [ :text, "" ] if md[0].length == 0
-            # unnormalized = Text::unnormalize( md[1], self )
-            # return PullEvent.new( :text, md[1], unnormalized )
-            return [ :text, md[1] ]
-          end
-        rescue REXML::UndefinedNamespaceException
-          raise
-        rescue REXML::ParseException
-          raise
-        rescue Exception, NameError => error
-          raise REXML::ParseException.new( "Exception parsing",
-            @source, self, (error ? error : $!) )
-        end
-        return [ :dummy ]
-      end
-
-      def entity( reference, entities )
-        value = nil
-        value = entities[ reference ] if entities
-        if not value
-          value = DEFAULT_ENTITIES[ reference ]
-          value = value[2] if value
-        end
-        unnormalize( value, entities ) if value
-      end
-
-      # Escapes all possible entities
-      def normalize( input, entities=nil, entity_filter=nil )
-        copy = input.clone
-        # Doing it like this rather than in a loop improves the speed
-        copy.gsub!( EREFERENCE, '&' )
-        entities.each do |key, value|
-          copy.gsub!( value, "&#{key};" ) unless entity_filter and 
-                                      entity_filter.include?(entity)
-        end if entities
-        copy.gsub!( EREFERENCE, '&' )
-        DEFAULT_ENTITIES.each do |key, value|
-          copy.gsub!( value[3], value[1] )
-        end
-        copy
-      end
-
-      # Unescapes all possible entities
-      def unnormalize( string, entities=nil, filter=nil )
-        rv = string.clone
-        rv.gsub!( /\r\n?/, "\n" )
-        matches = rv.scan( REFERENCE_RE )
-        return rv if matches.size == 0
-        rv.gsub!( /&#0*((?:\d+)|(?:x[a-fA-F0-9]+));/ ) {|m|
-          m=$1
-          m = "0#{m}" if m[0] == ?x
-          [Integer(m)].pack('U*')
-        }
-        matches.collect!{|x|x[0]}.compact!
-        if matches.size > 0
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = entity( entity_reference, entities )
-              if entity_value
-                re = /&#{entity_reference};/
-                rv.gsub!( re, entity_value )
-              end
-            end
-          end
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              er = DEFAULT_ENTITIES[entity_reference]
-              rv.gsub!( er[0], er[2] ) if er
-            end
-          end
-          rv.gsub!( /&/, '&' )
-        end
-        rv
-      end
-    end
-  end
-end
-
-=begin
-  case event[0]
-  when :start_element
-  when :text
-  when :end_element
-  when :processing_instruction
-  when :cdata
-  when :comment
-  when :xmldecl
-  when :start_doctype
-  when :end_doctype
-  when :externalentity
-  when :elementdecl
-  when :entity
-  when :attlistdecl
-  when :notationdecl
-  when :end_doctype
-  end
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/lightparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/lightparser.rb
deleted file mode 100644
index 0f35034..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/lightparser.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rexml/parsers/streamparser'
-require 'rexml/parsers/baseparser'
-require 'rexml/light/node'
-
-module REXML
-	module Parsers
-		class LightParser
-			def initialize stream
-				@stream = stream
-				@parser = REXML::Parsers::BaseParser.new( stream )
-			end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def rewind
-        @stream.rewind
-        @parser.stream = @stream
-      end
-
-			def parse
-				root = context = [ :document ]
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						break
-					when :end_doctype
-						context = context[1]
-					when :start_element, :start_doctype
-						new_node = event
-						context << new_node
-						new_node[1,0] = [context]
-						context = new_node
-					when :end_element, :end_doctype
-						context = context[1]
-					else
-						new_node = event
-						context << new_node
-						new_node[1,0] = [context]
-					end
-				end
-				root
-			end
-		end
-
-		# An element is an array.  The array contains:
-		#  0			The parent element
-		#  1			The tag name
-		#  2			A hash of attributes
-		#  3..-1	The child elements
-		# An element is an array of size > 3
-		# Text is a String
-		# PIs are [ :processing_instruction, target, data ]
-		# Comments are [ :comment, data ]
-		# DocTypes are DocType structs
-		# The root is an array with XMLDecls, Text, DocType, Array, Text
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/pullparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/pullparser.rb
deleted file mode 100644
index 36dc716..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/pullparser.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-require 'forwardable'
-
-require 'rexml/parseexception'
-require 'rexml/parsers/baseparser'
-require 'rexml/xmltokens'
-
-module REXML
-  module Parsers
-    # = Using the Pull Parser
-    # <em>This API is experimental, and subject to change.</em>
-    #  parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    puts res[1]['att'] if res.start_tag? and res[0] == 'b'
-    #  end
-    # See the PullEvent class for information on the content of the results.
-    # The data is identical to the arguments passed for the various events to
-    # the StreamListener API.
-    #
-    # Notice that:
-    #  parser = PullParser.new( "<a>BAD DOCUMENT" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    raise res[1] if res.error?
-    #  end
-    #
-    # Nat Price gave me some good ideas for the API.
-    class PullParser
-      include XMLTokens
-      extend Forwardable
-
-      def_delegators( :@parser, :has_next? )
-      def_delegators( :@parser, :entity )
-      def_delegators( :@parser, :empty? )
-      def_delegators( :@parser, :source )
-
-      def initialize stream
-        @entities = {}
-        @listeners = nil
-        @parser = BaseParser.new( stream )
-        @my_stack = []
-      end
-
-      def add_listener( listener )
-        @listeners = [] unless @listeners
-        @listeners << listener
-      end
-
-      def each
-        while has_next?
-          yield self.pull
-        end
-      end
-
-      def peek depth=0
-        if @my_stack.length <= depth
-          (depth - @my_stack.length + 1).times {
-            e = PullEvent.new(@parser.pull)
-            @my_stack.push(e)
-          }
-        end
-        @my_stack[depth]
-      end
-
-      def pull
-        return @my_stack.shift if @my_stack.length > 0
-
-        event = @parser.pull
-        case event[0]
-        when :entitydecl
-          @entities[ event[1] ] = 
-            event[2] unless event[2] =~ /PUBLIC|SYSTEM/
-        when :text
-          unnormalized = @parser.unnormalize( event[1], @entities )
-          event << unnormalized
-        end
-        PullEvent.new( event )
-      end
-
-      def unshift token
-        @my_stack.unshift token
-      end
-    end
-
-    # A parsing event.  The contents of the event are accessed as an +Array?,
-    # and the type is given either by the ...? methods, or by accessing the
-    # +type+ accessor.  The contents of this object vary from event to event,
-    # but are identical to the arguments passed to +StreamListener+s for each
-    # event.
-    class PullEvent
-      # The type of this event.  Will be one of :tag_start, :tag_end, :text,
-      # :processing_instruction, :comment, :doctype, :attlistdecl, :entitydecl,
-      # :notationdecl, :entity, :cdata, :xmldecl, or :error.
-      def initialize(arg)
-        @contents = arg
-      end
-
-      def []( start, endd=nil)
-        if start.kind_of? Range
-          @contents.slice( start.begin+1 .. start.end )
-        elsif start.kind_of? Numeric
-          if endd.nil?
-            @contents.slice( start+1 )
-          else
-            @contents.slice( start+1, endd )
-          end
-        else
-          raise "Illegal argument #{start.inspect} (#{start.class})"
-        end
-      end
-
-      def event_type
-        @contents[0]
-      end
-
-      # Content: [ String tag_name, Hash attributes ]
-      def start_element?
-        @contents[0] == :start_element
-      end
-
-      # Content: [ String tag_name ]
-      def end_element?
-        @contents[0] == :end_element
-      end
-
-      # Content: [ String raw_text, String unnormalized_text ]
-      def text?
-        @contents[0] == :text
-      end
-
-      # Content: [ String text ]
-      def instruction?
-        @contents[0] == :processing_instruction
-      end
-
-      # Content: [ String text ]
-      def comment?
-        @contents[0] == :comment
-      end
-
-      # Content: [ String name, String pub_sys, String long_name, String uri ]
-      def doctype?
-        @contents[0] == :start_doctype
-      end
-
-      # Content: [ String text ]
-      def attlistdecl?
-        @contents[0] == :attlistdecl
-      end
-
-      # Content: [ String text ]
-      def elementdecl?
-        @contents[0] == :elementdecl
-      end
-
-      # Due to the wonders of DTDs, an entity declaration can be just about
-      # anything.  There's no way to normalize it; you'll have to interpret the
-      # content yourself.  However, the following is true:
-      #
-      # * If the entity declaration is an internal entity:
-      #   [ String name, String value ]
-      # Content: [ String text ]
-      def entitydecl?
-        @contents[0] == :entitydecl
-      end
-
-      # Content: [ String text ]
-      def notationdecl?
-        @contents[0] == :notationdecl
-      end
-
-      # Content: [ String text ]
-      def entity?
-        @contents[0] == :entity
-      end
-
-      # Content: [ String text ]
-      def cdata?
-        @contents[0] == :cdata
-      end
-
-      # Content: [ String version, String encoding, String standalone ]
-      def xmldecl?
-        @contents[0] == :xmldecl
-      end
-
-      def error?
-        @contents[0] == :error
-      end
-
-      def inspect
-        @contents[0].to_s + ": " + @contents[1..-1].inspect
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/sax2parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/sax2parser.rb
deleted file mode 100644
index e402eb7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/sax2parser.rb
+++ /dev/null
@@ -1,238 +0,0 @@
-require 'rexml/parsers/baseparser'
-require 'rexml/parseexception'
-require 'rexml/namespace'
-require 'rexml/text'
-
-module REXML
-	module Parsers
-    # SAX2Parser
-		class SAX2Parser
-			def initialize source
-				@parser = BaseParser.new(source)
-				@listeners = []
-				@procs = []
-				@namespace_stack = []
-				@has_listeners = false
-				@tag_stack = []
-        @entities = {}
-			end
-
-      def source
-        @parser.source
-      end
-			
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-			# Listen arguments:
-			#
-			# Symbol, Array, Block
-			# 	Listen to Symbol events on Array elements
-			# Symbol, Block
-			#   Listen to Symbol events
-			# Array, Listener
-			# 	Listen to all events on Array elements
-			# Array, Block
-			# 	Listen to :start_element events on Array elements
-			# Listener
-			# 	Listen to All events
-			#
-			# Symbol can be one of: :start_element, :end_element,
-			# :start_prefix_mapping, :end_prefix_mapping, :characters,
-			# :processing_instruction, :doctype, :attlistdecl, :elementdecl,
-			# :entitydecl, :notationdecl, :cdata, :xmldecl, :comment
-      #
-      # There is an additional symbol that can be listened for: :progress.
-      # This will be called for every event generated, passing in the current 
-      # stream position.
-			#
-			# Array contains regular expressions or strings which will be matched
-			# against fully qualified element names.
-			#
-			# Listener must implement the methods in SAX2Listener
-			#
-			# Block will be passed the same arguments as a SAX2Listener method would
-			# be, where the method name is the same as the matched Symbol.
-			# See the SAX2Listener for more information.
-			def listen( *args, &blok )
-				if args[0].kind_of? Symbol
-					if args.size == 2
-						args[1].each { |match| @procs << [args[0], match, blok] }
-					else
-						add( [args[0], nil, blok] )
-					end
-				elsif args[0].kind_of? Array
-					if args.size == 2
-						args[0].each { |match| add( [nil, match, args[1]] ) }
-					else
-						args[0].each { |match| add( [ :start_element, match, blok ] ) }
-					end
-				else
-					add([nil, nil, args[0]])
-				end
-			end
-			
-			def deafen( listener=nil, &blok )
-				if listener
-					@listeners.delete_if {|item| item[-1] == listener }
-					@has_listeners = false if @listeners.size == 0
-				else
-					@procs.delete_if {|item| item[-1] == blok }
-				end
-			end
-			
-			def parse
-				@procs.each { |sym,match,block| block.call if sym == :start_document }
-				@listeners.each { |sym,match,block| 
-					block.start_document if sym == :start_document or sym.nil?
-				}
-				root = context = []
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						handle( :end_document )
-						break
-          when :start_doctype
-            handle( :doctype, *event[1..-1])
-					when :end_doctype
-						context = context[1]
-					when :start_element
-						@tag_stack.push(event[1])
-						# find the observers for namespaces
-						procs = get_procs( :start_prefix_mapping, event[1] )
-						listeners = get_listeners( :start_prefix_mapping, event[1] )
-						if procs or listeners
-							# break out the namespace declarations
-							# The attributes live in event[2]
-							event[2].each {|n, v| event[2][n] = @parser.normalize(v)}
-							nsdecl = event[2].find_all { |n, value| n =~ /^xmlns(:|$)/ }
-							nsdecl.collect! { |n, value| [ n[6..-1], value ] }
-							@namespace_stack.push({})
-							nsdecl.each do |n,v|
-								@namespace_stack[-1][n] = v
-								# notify observers of namespaces
-								procs.each { |ob| ob.call( n, v ) } if procs
-								listeners.each { |ob| ob.start_prefix_mapping(n, v) } if listeners
-							end
-						end
-						event[1] =~ Namespace::NAMESPLIT
-						prefix = $1
-						local = $2
-						uri = get_namespace(prefix)
-						# find the observers for start_element
-						procs = get_procs( :start_element, event[1] )
-						listeners = get_listeners( :start_element, event[1] )
-						# notify observers
-						procs.each { |ob| ob.call( uri, local, event[1], event[2] ) } if procs
-						listeners.each { |ob| 
-							ob.start_element( uri, local, event[1], event[2] ) 
-						} if listeners
-					when :end_element
-						@tag_stack.pop
-						event[1] =~ Namespace::NAMESPLIT
-						prefix = $1
-						local = $2
-						uri = get_namespace(prefix)
-						# find the observers for start_element
-						procs = get_procs( :end_element, event[1] )
-						listeners = get_listeners( :end_element, event[1] )
-						# notify observers
-						procs.each { |ob| ob.call( uri, local, event[1] ) } if procs
-						listeners.each { |ob| 
-							ob.end_element( uri, local, event[1] ) 
-						} if listeners
-
-						namespace_mapping = @namespace_stack.pop
-						# find the observers for namespaces
-						procs = get_procs( :end_prefix_mapping, event[1] )
-						listeners = get_listeners( :end_prefix_mapping, event[1] )
-						if procs or listeners
-							namespace_mapping.each do |prefix, uri|
-								# notify observers of namespaces
-								procs.each { |ob| ob.call( prefix ) } if procs
-								listeners.each { |ob| ob.end_prefix_mapping(prefix) } if listeners
-							end
-						end
-					when :text
-            #normalized = @parser.normalize( event[1] )
-            #handle( :characters, normalized )
-            copy = event[1].clone
-            @entities.each { |key, value| copy = copy.gsub("&#{key};", value) }
-            copy.gsub!( Text::NUMERICENTITY ) {|m|
-              m=$1
-              m = "0#{m}" if m[0] == ?x
-              [Integer(m)].pack('U*')
-            }
-            handle( :characters, copy )
-          when :entitydecl
-            @entities[ event[1] ] = event[2] if event.size == 3
-						handle( *event )
-					when :processing_instruction, :comment, :attlistdecl, 
-						:elementdecl, :cdata, :notationdecl, :xmldecl
-						handle( *event )
-					end
-          handle( :progress, @parser.position )
-				end
-			end
-
-			private
-			def handle( symbol, *arguments )
-				tag = @tag_stack[-1]
-				procs = get_procs( symbol, tag )
-				listeners = get_listeners( symbol, tag )
-				# notify observers
-				procs.each { |ob| ob.call( *arguments ) } if procs
-				listeners.each { |l| 
-					l.send( symbol.to_s, *arguments ) 
-				} if listeners
-			end
-
-			# The following methods are duplicates, but it is faster than using
-			# a helper
-			def get_procs( symbol, name )
-				return nil if @procs.size == 0
-				@procs.find_all do |sym, match, block|
-          #puts sym.inspect+"=="+symbol.inspect+ "\t"+match.inspect+"=="+name.inspect+ "\t"+( (sym.nil? or symbol == sym) and ((name.nil? and match.nil?) or match.nil? or ( (name == match) or (match.kind_of? Regexp and name =~ match)))).to_s
-					(
-						(sym.nil? or symbol == sym) and 
-						((name.nil? and match.nil?) or match.nil? or (
-							(name == match) or
-							(match.kind_of? Regexp and name =~ match)
-							)
-						)
-					)
-				end.collect{|x| x[-1]}
-			end
-			def get_listeners( symbol, name )
-				return nil if @listeners.size == 0
-				@listeners.find_all do |sym, match, block|
-					(
-						(sym.nil? or symbol == sym) and 
-						((name.nil? and match.nil?) or match.nil? or (
-							(name == match) or
-							(match.kind_of? Regexp and name =~ match)
-							)
-						)
-					)
-				end.collect{|x| x[-1]}
-			end
-
-			def add( pair )
-				if pair[-1].respond_to? :call
-					@procs << pair unless @procs.include? pair
-				else
-					@listeners << pair unless @listeners.include? pair
-					@has_listeners = true
-				end
-			end
-
-			def get_namespace( prefix ) 
-        uris = (@namespace_stack.find_all { |ns| not ns[prefix].nil? }) ||
-					(@namespace_stack.find { |ns| not ns[nil].nil? })
-				uris[-1][prefix] unless uris.nil? or 0 == uris.size
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/streamparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/streamparser.rb
deleted file mode 100644
index 256d0f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/streamparser.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module REXML
-  module Parsers
-    class StreamParser
-      def initialize source, listener
-        @listener = listener
-        @parser = BaseParser.new( source )
-      end
-      
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-      
-      def parse
-        # entity string
-        while true
-          event = @parser.pull
-          case event[0]
-          when :end_document
-            return
-          when :start_element
-            attrs = event[2].each do |n, v|
-              event[2][n] = @parser.unnormalize( v )
-            end
-            @listener.tag_start( event[1], attrs )
-          when :end_element
-            @listener.tag_end( event[1] )
-          when :text
-            normalized = @parser.unnormalize( event[1] )
-            @listener.text( normalized )
-          when :processing_instruction
-            @listener.instruction( *event[1,2] )
-          when :start_doctype
-            @listener.doctype( *event[1..-1] )
-          when :end_doctype
-            # FIXME: remove this condition for milestone:3.2
-            @listener.doctype_end if @listener.respond_to? :doctype_end
-          when :comment, :attlistdecl, :cdata, :xmldecl, :elementdecl
-            @listener.send( event[0].to_s, *event[1..-1] )
-          when :entitydecl, :notationdecl
-            @listener.send( event[0].to_s, event[1..-1] )
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/treeparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/treeparser.rb
deleted file mode 100644
index 5c3e142..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/treeparser.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require 'rexml/validation/validationexception'
-require 'rexml/undefinednamespaceexception'
-
-module REXML
-  module Parsers
-    class TreeParser
-      def initialize( source, build_context = Document.new )
-        @build_context = build_context
-        @parser = Parsers::BaseParser.new( source )
-      end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def parse
-        tag_stack = []
-        in_doctype = false
-        entities = nil
-        begin
-          while true
-            event = @parser.pull
-            #STDERR.puts "TREEPARSER GOT #{event.inspect}"
-            case event[0]
-            when :end_document
-              unless tag_stack.empty?
-                #raise ParseException.new("No close tag for #{tag_stack.inspect}")
-                raise ParseException.new("No close tag for #{@build_context.xpath}")
-              end
-              return
-            when :start_element
-              tag_stack.push(event[1])
-              el = @build_context = @build_context.add_element( event[1], event[2] )
-            when :end_element
-              tag_stack.pop
-              @build_context = @build_context.parent
-            when :text
-              if not in_doctype
-                if @build_context[-1].instance_of? Text
-                  @build_context[-1] << event[1]
-                else
-                  @build_context.add( 
-                    Text.new(event[1], @build_context.whitespace, nil, true) 
-                  ) unless (
-                    @build_context.ignore_whitespace_nodes and
-                    event[1].strip.size==0
-                  )
-                end
-              end
-            when :comment
-              c = Comment.new( event[1] )
-              @build_context.add( c )
-            when :cdata
-              c = CData.new( event[1] )
-              @build_context.add( c )
-            when :processing_instruction
-              @build_context.add( Instruction.new( event[1], event[2] ) )
-            when :end_doctype
-              in_doctype = false
-              entities.each { |k,v| entities[k] = @build_context.entities[k].value }
-              @build_context = @build_context.parent
-            when :start_doctype
-              doctype = DocType.new( event[1..-1], @build_context )
-              @build_context = doctype
-              entities = {}
-              in_doctype = true
-            when :attlistdecl
-              n = AttlistDecl.new( event[1..-1] )
-              @build_context.add( n )
-            when :externalentity
-              n = ExternalEntity.new( event[1] )
-              @build_context.add( n )
-            when :elementdecl
-              n = ElementDecl.new( event[1] )
-              @build_context.add(n)
-            when :entitydecl
-              entities[ event[1] ] = event[2] unless event[2] =~ /PUBLIC|SYSTEM/
-              @build_context.add(Entity.new(event))
-            when :notationdecl
-              n = NotationDecl.new( *event[1..-1] )
-              @build_context.add( n )
-            when :xmldecl
-              x = XMLDecl.new( event[1], event[2], event[3] )
-              @build_context.add( x )
-            end
-          end
-        rescue REXML::Validation::ValidationException
-          raise
-        rescue REXML::UndefinedNamespaceException
-          raise
-        rescue
-          raise ParseException.new( $!.message, @parser.source, @parser, $! )
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/ultralightparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/ultralightparser.rb
deleted file mode 100644
index adc4af1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/ultralightparser.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rexml/parsers/streamparser'
-require 'rexml/parsers/baseparser'
-
-module REXML
-	module Parsers
-		class UltraLightParser
-			def initialize stream
-				@stream = stream
-				@parser = REXML::Parsers::BaseParser.new( stream )
-			end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def rewind
-        @stream.rewind
-        @parser.stream = @stream
-      end
-
-			def parse
-				root = context = []
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						break
-					when :end_doctype
-						context = context[1]
-					when :start_element, :doctype
-						context << event
-						event[1,0] = [context]
-						context = event
-					when :end_element
-						context = context[1]
-					else
-						context << event
-					end
-				end
-				root
-			end
-		end
-
-		# An element is an array.  The array contains:
-		#  0			The parent element
-		#  1			The tag name
-		#  2			A hash of attributes
-		#  3..-1	The child elements
-		# An element is an array of size > 3
-		# Text is a String
-		# PIs are [ :processing_instruction, target, data ]
-		# Comments are [ :comment, data ]
-		# DocTypes are DocType structs
-		# The root is an array with XMLDecls, Text, DocType, Array, Text
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/xpathparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/xpathparser.rb
deleted file mode 100644
index de2530e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/parsers/xpathparser.rb
+++ /dev/null
@@ -1,698 +0,0 @@
-require 'rexml/namespace'
-require 'rexml/xmltokens'
-
-module REXML
-  module Parsers
-    # You don't want to use this class.  Really.  Use XPath, which is a wrapper
-    # for this class.  Believe me.  You don't want to poke around in here.
-    # There is strange, dark magic at work in this code.  Beware.  Go back!  Go
-    # back while you still can!
-    class XPathParser
-      include XMLTokens
-      LITERAL    = /^'([^']*)'|^"([^"]*)"/u
-
-      def namespaces=( namespaces )
-        Functions::namespace_context = namespaces
-        @namespaces = namespaces
-      end
-
-      def parse path
-        path.gsub!(/([\(\[])\s+/, '\1') # Strip ignorable spaces
-        path.gsub!( /\s+([\]\)])/, '\1' )
-        parsed = []
-        path = OrExpr(path, parsed)
-        parsed
-      end
-
-      def predicate path
-        parsed = []
-        Predicate( "[#{path}]", parsed )
-        parsed
-      end
-
-      def abbreviate( path )
-        path = path.kind_of?(String) ? parse( path ) : path
-        string = ""
-        document = false
-        while path.size > 0
-          op = path.shift
-          case op
-          when :node
-          when :attribute
-						string << "/" if string.size > 0
-						string << "@"
-          when :child
-						string << "/" if string.size > 0
-          when :descendant_or_self
-            string << "/"
-          when :self
-            string << "."
-          when :parent
-            string << ".."
-          when :any
-            string << "*"
-					when :text
-						string << "text()"
-          when :following, :following_sibling, 
-                :ancestor, :ancestor_or_self, :descendant, 
-                :namespace, :preceding, :preceding_sibling
-            string << "/" unless string.size == 0
-            string << op.to_s.tr("_", "-")
-            string << "::"
-          when :qname
-            prefix = path.shift
-            name = path.shift
-            string << prefix+":" if prefix.size > 0
-            string << name
-          when :predicate
-            string << '['
-            string << predicate_to_string( path.shift ) {|x| abbreviate( x ) }
-            string << ']'
-          when :document
-            document = true
-					when :function
-						string << path.shift
-						string << "( "
-						string << predicate_to_string( path.shift[0] ) {|x| abbreviate( x )}
-						string << " )"
-					when :literal
-						string << %Q{ "#{path.shift}" }
-          else
-            string << "/" unless string.size == 0
-            string << "UNKNOWN("
-            string << op.inspect
-            string << ")"
-          end
-        end
-				string = "/"+string if document
-        return string
-      end
-
-      def expand( path )
-        path = path.kind_of?(String) ? parse( path ) : path
-        string = ""
-        document = false
-        while path.size > 0
-          op = path.shift
-          case op
-          when :node
-            string << "node()"
-          when :attribute, :child, :following, :following_sibling, 
-                :ancestor, :ancestor_or_self, :descendant, :descendant_or_self,
-                :namespace, :preceding, :preceding_sibling, :self, :parent
-            string << "/" unless string.size == 0
-            string << op.to_s.tr("_", "-")
-            string << "::"
-          when :any
-            string << "*"
-          when :qname
-            prefix = path.shift
-            name = path.shift
-            string << prefix+":" if prefix.size > 0
-            string << name
-          when :predicate
-            string << '['
-            string << predicate_to_string( path.shift ) { |x| expand(x) }
-            string << ']'
-          when :document
-            document = true
-          else
-            string << "/" unless string.size == 0
-            string << "UNKNOWN("
-            string << op.inspect
-            string << ")"
-          end
-        end
-        string = "/"+string if document
-        return string
-      end
-
-      def predicate_to_string( path, &block )
-        string = ""
-        case path[0]
-        when :and, :or, :mult, :plus, :minus, :neq, :eq, :lt, :gt, :lteq, :gteq, :div, :mod, :union
-          op = path.shift
-          case op
-          when :eq
-            op = "="
-          when :lt
-            op = "<"
-          when :gt
-            op = ">"
-          when :lteq
-            op = "<="
-          when :gteq
-            op = ">="
-          when :neq
-            op = "!="
-          when :union
-            op = "|"
-          end
-          left = predicate_to_string( path.shift, &block )
-          right = predicate_to_string( path.shift, &block )
-          string << " "
-          string << left
-          string << " "
-          string << op.to_s
-          string << " "
-          string << right
-          string << " "
-        when :function
-          path.shift
-          name = path.shift
-          string << name
-          string << "( "
-          string << predicate_to_string( path.shift, &block )
-          string << " )"
-        when :literal
-          path.shift
-          string << " "
-          string << path.shift.inspect
-          string << " "
-        else
-          string << " "
-          string << yield( path )
-          string << " "
-        end
-        return string.squeeze(" ")
-      end
-
-      private
-      #LocationPath
-      #  | RelativeLocationPath
-      #  | '/' RelativeLocationPath?
-      #  | '//' RelativeLocationPath
-      def LocationPath path, parsed
-        #puts "LocationPath '#{path}'"
-        path = path.strip
-        if path[0] == ?/
-          parsed << :document
-          if path[1] == ?/
-            parsed << :descendant_or_self
-            parsed << :node
-            path = path[2..-1]
-          else
-            path = path[1..-1]
-          end
-        end
-        #puts parsed.inspect
-        return RelativeLocationPath( path, parsed ) if path.size > 0
-      end
-
-      #RelativeLocationPath
-      #  |                                                    Step
-      #    | (AXIS_NAME '::' | '@' | '')                     AxisSpecifier
-      #      NodeTest
-      #        Predicate
-      #    | '.' | '..'                                      AbbreviatedStep
-      #  |  RelativeLocationPath '/' Step
-      #  | RelativeLocationPath '//' Step
-      AXIS = /^(ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self)::/
-      def RelativeLocationPath path, parsed
-        #puts "RelativeLocationPath #{path}"
-        while path.size > 0
-          # (axis or @ or <child::>) nodetest predicate  >
-          # OR                                          >  / Step
-          # (. or ..)                                    >
-          if path[0] == ?.
-            if path[1] == ?.
-              parsed << :parent
-              parsed << :node
-              path = path[2..-1]
-            else
-              parsed << :self
-              parsed << :node
-              path = path[1..-1]
-            end
-          else
-            if path[0] == ?@
-              #puts "ATTRIBUTE"
-              parsed << :attribute
-              path = path[1..-1]
-              # Goto Nodetest
-            elsif path =~ AXIS
-              parsed << $1.tr('-','_').intern
-              path = $'
-              # Goto Nodetest
-            else
-              parsed << :child
-            end
-
-            #puts "NODETESTING '#{path}'"
-            n = []
-            path = NodeTest( path, n)
-            #puts "NODETEST RETURNED '#{path}'"
-
-            if path[0] == ?[
-              path = Predicate( path, n )
-            end
-
-            parsed.concat(n)
-          end
-          
-          if path.size > 0
-            if path[0] == ?/
-              if path[1] == ?/
-                parsed << :descendant_or_self
-                parsed << :node
-                path = path[2..-1]
-              else
-                path = path[1..-1]
-              end
-            else
-              return path
-            end
-          end
-        end
-        return path
-      end
-
-      # Returns a 1-1 map of the nodeset
-      # The contents of the resulting array are either:
-      #   true/false, if a positive match
-      #   String, if a name match
-      #NodeTest
-      #  | ('*' | NCNAME ':' '*' | QNAME)                NameTest
-      #  | NODE_TYPE '(' ')'                              NodeType
-      #  | PI '(' LITERAL ')'                            PI
-      #    | '[' expr ']'                                Predicate
-      NCNAMETEST= /^(#{NCNAME_STR}):\*/u
-      QNAME     = Namespace::NAMESPLIT
-      NODE_TYPE  = /^(comment|text|node)\(\s*\)/m
-      PI        = /^processing-instruction\(/
-      def NodeTest path, parsed
-        #puts "NodeTest with #{path}"
-        res = nil
-        case path
-        when /^\*/
-          path = $'
-          parsed << :any
-        when NODE_TYPE
-          type = $1
-          path = $'
-          parsed << type.tr('-', '_').intern
-        when PI
-          path = $'
-          literal = nil
-          if path !~ /^\s*\)/
-            path =~ LITERAL
-            literal = $1
-            path = $'
-            raise ParseException.new("Missing ')' after processing instruction") if path[0] != ?)
-            path = path[1..-1]
-          end
-          parsed << :processing_instruction
-          parsed << (literal || '')
-        when NCNAMETEST
-          #puts "NCNAMETEST"
-          prefix = $1
-          path = $'
-          parsed << :namespace
-          parsed << prefix
-        when QNAME
-          #puts "QNAME"
-          prefix = $1
-          name = $2
-          path = $'
-          prefix = "" unless prefix
-          parsed << :qname
-          parsed << prefix
-          parsed << name
-        end
-        return path
-      end
-
-      # Filters the supplied nodeset on the predicate(s)
-      def Predicate path, parsed
-        #puts "PREDICATE with #{path}"
-        return nil unless path[0] == ?[
-        predicates = []
-        while path[0] == ?[
-          path, expr = get_group(path)
-          predicates << expr[1..-2] if expr
-        end
-        #puts "PREDICATES = #{predicates.inspect}"
-        predicates.each{ |expr| 
-          #puts "ORING #{expr}"
-          preds = []
-          parsed << :predicate
-          parsed << preds
-          OrExpr(expr, preds) 
-        }
-        #puts "PREDICATES = #{predicates.inspect}"
-        path
-      end
-
-      # The following return arrays of true/false, a 1-1 mapping of the
-      # supplied nodeset, except for axe(), which returns a filtered
-      # nodeset
-
-      #| OrExpr S 'or' S AndExpr
-      #| AndExpr
-      def OrExpr path, parsed
-        #puts "OR >>> #{path}"
-        n = []
-        rest = AndExpr( path, n )
-        #puts "OR <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*( or )/
-            n = [ :or, n, [] ]
-            rest = AndExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| AndExpr S 'and' S EqualityExpr
-      #| EqualityExpr
-      def AndExpr path, parsed
-        #puts "AND >>> #{path}"
-        n = []
-        rest = EqualityExpr( path, n )
-        #puts "AND <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*( and )/
-            n = [ :and, n, [] ]
-            #puts "AND >>> #{rest}"
-            rest = EqualityExpr( $', n[-1] )
-            #puts "AND <<< #{rest}"
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| EqualityExpr ('=' | '!=')  RelationalExpr
-      #| RelationalExpr
-      def EqualityExpr path, parsed
-        #puts "EQUALITY >>> #{path}"
-        n = []
-        rest = RelationalExpr( path, n )
-        #puts "EQUALITY <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(!?=)\s*/
-            if $1[0] == ?!
-              n = [ :neq, n, [] ]
-            else
-              n = [ :eq, n, [] ]
-            end
-            rest = RelationalExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| RelationalExpr ('<' | '>' | '<=' | '>=') AdditiveExpr
-      #| AdditiveExpr
-      def RelationalExpr path, parsed
-        #puts "RELATION >>> #{path}"
-        n = []
-        rest = AdditiveExpr( path, n )
-        #puts "RELATION <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*([<>]=?)\s*/
-            if $1[0] == ?<
-              sym = "lt"
-            else
-              sym = "gt"
-            end
-            sym << "eq" if $1[-1] == ?=
-            n = [ sym.intern, n, [] ]
-            rest = AdditiveExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| AdditiveExpr ('+' | S '-') MultiplicativeExpr
-      #| MultiplicativeExpr
-      def AdditiveExpr path, parsed
-        #puts "ADDITIVE >>> #{path}"
-        n = []
-        rest = MultiplicativeExpr( path, n )
-        #puts "ADDITIVE <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\+| -)\s*/
-            if $1[0] == ?+
-              n = [ :plus, n, [] ]
-            else
-              n = [ :minus, n, [] ]
-            end
-            rest = MultiplicativeExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| MultiplicativeExpr ('*' | S ('div' | 'mod') S) UnaryExpr
-      #| UnaryExpr
-      def MultiplicativeExpr path, parsed
-        #puts "MULT >>> #{path}"
-        n = []
-        rest = UnaryExpr( path, n )
-        #puts "MULT <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\*| div | mod )\s*/
-            if $1[0] == ?*
-              n = [ :mult, n, [] ]
-            elsif $1.include?( "div" )
-              n = [ :div, n, [] ]
-            else
-              n = [ :mod, n, [] ]
-            end
-            rest = UnaryExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| '-' UnaryExpr
-      #| UnionExpr
-      def UnaryExpr path, parsed
-        path =~ /^(\-*)/
-        path = $'
-        if $1 and (($1.size % 2) != 0)
-          mult = -1
-        else
-          mult = 1
-        end
-        parsed << :neg if mult < 0
-
-        #puts "UNARY >>> #{path}"
-        n = []
-        path = UnionExpr( path, n )
-        #puts "UNARY <<< #{path}"
-        parsed.concat( n )
-        path
-      end
-
-      #| UnionExpr '|' PathExpr
-      #| PathExpr
-      def UnionExpr path, parsed
-        #puts "UNION >>> #{path}"
-        n = []
-        rest = PathExpr( path, n )
-        #puts "UNION <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\|)\s*/
-            n = [ :union, n, [] ]
-            rest = PathExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace( n )
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| LocationPath
-      #| FilterExpr ('/' | '//') RelativeLocationPath
-      def PathExpr path, parsed
-        path =~ /^\s*/
-        path = $'
-        #puts "PATH >>> #{path}"
-        n = []
-        rest = FilterExpr( path, n )
-        #puts "PATH <<< '#{rest}'"
-        if rest != path
-          if rest and rest[0] == ?/
-            return RelativeLocationPath(rest, n)
-          end
-        end
-        #puts "BEFORE WITH '#{rest}'"
-        rest = LocationPath(rest, n) if rest =~ /\A[\/\.\@\[\w_*]/
-        parsed.concat(n)
-        return rest
-      end
-
-      #| FilterExpr Predicate
-      #| PrimaryExpr
-      def FilterExpr path, parsed
-        #puts "FILTER >>> #{path}"
-        n = []
-        path = PrimaryExpr( path, n )
-        #puts "FILTER <<< #{path}"
-        path = Predicate(path, n) if path and path[0] == ?[
-        #puts "FILTER <<< #{path}"
-        parsed.concat(n)
-        path
-      end
-
-      #| VARIABLE_REFERENCE
-      #| '(' expr ')'
-      #| LITERAL
-      #| NUMBER
-      #| FunctionCall
-      VARIABLE_REFERENCE  = /^\$(#{NAME_STR})/u
-      NUMBER              = /^(\d*\.?\d+)/
-      NT        = /^comment|text|processing-instruction|node$/
-      def PrimaryExpr path, parsed
-        arry = []
-        case path
-        when VARIABLE_REFERENCE
-          varname = $1
-          path = $'
-          parsed << :variable
-          parsed << varname
-          #arry << @variables[ varname ]
-        when /^(\w[-\w]*)(?:\()/
-          #puts "PrimaryExpr :: Function >>> #$1 -- '#$''"
-          fname = $1
-          tmp = $'
-          #puts "#{fname} =~ #{NT.inspect}"
-          return path if fname =~ NT
-          path = tmp
-          parsed << :function
-          parsed << fname
-          path = FunctionCall(path, parsed)
-        when NUMBER
-          #puts "LITERAL or NUMBER: #$1"
-          varname = $1.nil? ? $2 : $1
-          path = $'
-          parsed << :literal 
-          parsed << (varname.include?('.') ? varname.to_f : varname.to_i)
-        when LITERAL
-          #puts "LITERAL or NUMBER: #$1"
-          varname = $1.nil? ? $2 : $1
-          path = $'
-          parsed << :literal 
-          parsed << varname
-        when /^\(/                                               #/
-          path, contents = get_group(path)
-          contents = contents[1..-2]
-          n = []
-          OrExpr( contents, n )
-          parsed.concat(n)
-        end
-        path
-      end
-
-      #| FUNCTION_NAME '(' ( expr ( ',' expr )* )? ')'
-      def FunctionCall rest, parsed
-        path, arguments = parse_args(rest)
-        argset = []
-        for argument in arguments
-          args = []
-          OrExpr( argument, args )
-          argset << args
-        end
-        parsed << argset
-        path
-      end
-
-      # get_group( '[foo]bar' ) -> ['bar', '[foo]']
-      def get_group string
-        ind = 0
-        depth = 0
-        st = string[0,1]
-        en = (st == "(" ? ")" : "]")
-        begin
-          case string[ind,1]
-          when st
-            depth += 1
-          when en
-            depth -= 1
-          end
-          ind += 1
-        end while depth > 0 and ind < string.length
-        return nil unless depth==0
-        [string[ind..-1], string[0..ind-1]]
-      end
-      
-      def parse_args( string )
-        arguments = []
-        ind = 0
-				inquot = false
-				inapos = false
-        depth = 1
-        begin
-          case string[ind]
-          when ?"
-          	inquot = !inquot unless inapos
-          when ?'
-          	inapos = !inapos unless inquot
-          else
-          	unless inquot or inapos
-          		case string[ind]
-							when ?(
-								depth += 1
-                if depth == 1
-                	string = string[1..-1]
-                	ind -= 1
-                end
-							when ?)
-								depth -= 1
-								if depth == 0
-									s = string[0,ind].strip
-									arguments << s unless s == ""
-									string = string[ind+1..-1]
-								end
-							when ?,
-								if depth == 1
-									s = string[0,ind].strip
-									arguments << s unless s == ""
-									string = string[ind+1..-1]
-									ind = -1 
-								end
-							end
-            end
-          end
-          ind += 1
-        end while depth > 0 and ind < string.length
-        return nil unless depth==0
-        [string,arguments]
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/quickpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/quickpath.rb
deleted file mode 100644
index c099db8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/quickpath.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-require 'rexml/functions'
-require 'rexml/xmltokens'
-
-module REXML
-	class QuickPath
-		include Functions
-		include XMLTokens
-
-		EMPTY_HASH = {}
-
-		def QuickPath::first element, path, namespaces=EMPTY_HASH
-			match(element, path, namespaces)[0]
-		end
-
-		def QuickPath::each element, path, namespaces=EMPTY_HASH, &block
-			path = "*" unless path
-			match(element, path, namespaces).each( &block )
-		end
-
-		def QuickPath::match element, path, namespaces=EMPTY_HASH
-			raise "nil is not a valid xpath" unless path
-			results = nil
-			Functions::namespace_context = namespaces
-			case path
-			when /^\/([^\/]|$)/u
-				# match on root
-				path = path[1..-1]
-				return [element.root.parent] if path == ''
-				results = filter([element.root], path)
-			when /^[-\w]*::/u
-				results = filter([element], path)
-			when /^\*/u
-				results = filter(element.to_a, path)
-			when /^[\[!\w:]/u
-				# match on child
-				matches = []
-				children = element.to_a
-				results = filter(children, path)
-			else
-				results = filter([element], path)
-			end
-			return results
-		end
-
-		# Given an array of nodes it filters the array based on the path. The
-		# result is that when this method returns, the array will contain elements
-		# which match the path
-		def QuickPath::filter elements, path
-			return elements if path.nil? or path == '' or elements.size == 0
-			case path
-			when /^\/\//u											# Descendant
-				return axe( elements, "descendant-or-self", $' )
-			when /^\/?\b(\w[-\w]*)\b::/u							# Axe
-				axe_name = $1
-				rest = $'
-				return axe( elements, $1, $' )
-			when /^\/(?=\b([:!\w][-\.\w]*:)?[-!\*\.\w]*\b([^:(]|$)|\*)/u	# Child
-				rest = $'
-				results = []
-				elements.each do |element|
-					results |= filter( element.to_a, rest )
-				end
-				return results
-			when /^\/?(\w[-\w]*)\(/u							# / Function
-				return function( elements, $1, $' )
-			when Namespace::NAMESPLIT		# Element name
-				name = $2
-				ns = $1
-				rest = $'
-				elements.delete_if do |element|
-					!(element.kind_of? Element and 
-						(element.expanded_name == name or
-						 (element.name == name and
-						  element.namespace == Functions.namespace_context[ns])))
-				end
-				return filter( elements, rest )
-			when /^\/\[/u
-				matches = []
-				elements.each do |element|
-					matches |= predicate( element.to_a, path[1..-1] ) if element.kind_of? Element
-				end
-				return matches
-			when /^\[/u												# Predicate
-				return predicate( elements, path )
-			when /^\/?\.\.\./u										# Ancestor
-				return axe( elements, "ancestor", $' )
-			when /^\/?\.\./u											# Parent
-				return filter( elements.collect{|e|e.parent}, $' )
-			when /^\/?\./u												# Self
-				return filter( elements, $' )
-			when /^\*/u													# Any
-				results = []
-				elements.each do |element|
-					results |= filter( [element], $' ) if element.kind_of? Element
-					#if element.kind_of? Element
-					#	children = element.to_a
-					#	children.delete_if { |child| !child.kind_of?(Element) }
-					#	results |= filter( children, $' )
-					#end
-				end
-				return results
-			end
-			return []
-		end
-
-		def QuickPath::axe( elements, axe_name, rest )
-			matches = []
-			matches = filter( elements.dup, rest ) if axe_name =~ /-or-self$/u
-			case axe_name
-			when /^descendant/u
-				elements.each do |element|
-					matches |= filter( element.to_a, "descendant-or-self::#{rest}" ) if element.kind_of? Element
-				end
-			when /^ancestor/u
-				elements.each do |element|
-					while element.parent
-						matches << element.parent
-						element = element.parent
-					end
-				end
-				matches = filter( matches, rest )
-			when "self"
-				matches = filter( elements, rest )
-			when "child"
-				elements.each do |element|
-					matches |= filter( element.to_a, rest ) if element.kind_of? Element
-				end
-			when "attribute"
-				elements.each do |element|
-					matches << element.attributes[ rest ] if element.kind_of? Element
-				end
-			when "parent"
-				matches = filter(elements.collect{|element| element.parent}.uniq, rest)
-			when "following-sibling"
-				matches = filter(elements.collect{|element| element.next_sibling}.uniq,
-					rest)
-			when "previous-sibling"
-				matches = filter(elements.collect{|element| 
-					element.previous_sibling}.uniq, rest )
-			end
-			return matches.uniq
-		end
-
-		# A predicate filters a node-set with respect to an axis to produce a
-		# new node-set. For each node in the node-set to be filtered, the 
-		# PredicateExpr is evaluated with that node as the context node, with 
-		# the number of nodes in the node-set as the context size, and with the 
-		# proximity position of the node in the node-set with respect to the
-		# axis as the context position; if PredicateExpr evaluates to true for
-		# that node, the node is included in the new node-set; otherwise, it is
-		# not included.
-		#
-		# A PredicateExpr is evaluated by evaluating the Expr and converting
-		# the result to a boolean. If the result is a number, the result will
-		# be converted to true if the number is equal to the context position
-		# and will be converted to false otherwise; if the result is not a
-		# number, then the result will be converted as if by a call to the
-		# boolean function. Thus a location path para[3] is equivalent to
-		# para[position()=3].
-		def QuickPath::predicate( elements, path ) 
-			ind = 1
-			bcount = 1
-			while bcount > 0
-				bcount += 1 if path[ind] == ?[
-				bcount -= 1 if path[ind] == ?]
-				ind += 1
-			end
-			ind -= 1
-			predicate = path[1..ind-1]
-			rest = path[ind+1..-1]
-
-			# have to change 'a [=<>] b [=<>] c' into 'a [=<>] b and b [=<>] c'
-			predicate.gsub!( /([^\s(and)(or)<>=]+)\s*([<>=])\s*([^\s(and)(or)<>=]+)\s*([<>=])\s*([^\s(and)(or)<>=]+)/u ) { 
-				"#$1 #$2 #$3 and #$3 #$4 #$5"
-			}
-			# Let's do some Ruby trickery to avoid some work:
-			predicate.gsub!( /&/u, "&&" )
-			predicate.gsub!( /=/u, "==" )
-			predicate.gsub!( /@(\w[-\w.]*)/u ) {
-				"attribute(\"#$1\")" 
-			}
-			predicate.gsub!( /\bmod\b/u, "%" )
-			predicate.gsub!( /\b(\w[-\w.]*\()/u ) {
-				fname = $1
-				fname.gsub( /-/u, "_" )
-			}
-			
-			Functions.pair = [ 0, elements.size ]
-			results = []
-			elements.each do |element|
-				Functions.pair[0] += 1
-				Functions.node = element
-				res = eval( predicate )
-				case res
-				when true
-					results << element
-				when Fixnum
-					results << element if Functions.pair[0] == res
-				when String
-					results << element
-				end
-			end
-			return filter( results, rest )
-		end
-
-		def QuickPath::attribute( name )
-			return Functions.node.attributes[name] if Functions.node.kind_of? Element
-		end
-
-		def QuickPath::name()
-			return Functions.node.name if Functions.node.kind_of? Element
-		end
-
-		def QuickPath::method_missing( id, *args )
-			begin
-				Functions.send( id.id2name, *args )
-			rescue Exception
-				raise "METHOD: #{id.id2name}(#{args.join ', '})\n#{$!.message}"
-			end
-		end
-
-		def QuickPath::function( elements, fname, rest )
-			args = parse_args( elements, rest )
-			Functions.pair = [0, elements.size]
-			results = []
-			elements.each do |element|
-				Functions.pair[0] += 1
-				Functions.node = element
-				res = Functions.send( fname, *args )
-				case res
-				when true
-					results << element
-				when Fixnum
-					results << element if Functions.pair[0] == res
-				end
-			end
-			return results
-		end
-
-		def QuickPath::parse_args( element, string )
-			# /.*?(?:\)|,)/
-			arguments = []
-			buffer = ""
-			while string and string != ""
-				c = string[0]
-				string.sub!(/^./u, "")
-				case c
-				when ?,
-					# if depth = 1, then we start a new argument
-					arguments << evaluate( buffer )
-					#arguments << evaluate( string[0..count] )
-				when ?(
-					# start a new method call
-					function( element, buffer, string )
-					buffer = ""
-				when ?)
-					# close the method call and return arguments
-					return arguments
-				else
-					buffer << c
-				end
-			end
-			""
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/rexml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/rexml.rb
deleted file mode 100644
index c7b9c62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/rexml.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-# REXML is an XML toolkit for Ruby[http://www.ruby-lang.org], in Ruby.
-#
-# REXML is a _pure_ Ruby, XML 1.0 conforming,
-# non-validating[http://www.w3.org/TR/2004/REC-xml-20040204/#sec-conformance]
-# toolkit with an intuitive API.  REXML passes 100% of the non-validating Oasis
-# tests[http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.shtml],
-# and provides tree, stream, SAX2, pull, and lightweight APIs.  REXML also 
-# includes a full XPath[http://www.w3c.org/tr/xpath] 1.0 implementation. Since 
-# Ruby 1.8, REXML is included in the standard Ruby distribution.
-#
-# Main page:: http://www.germane-software.com/software/rexml
-# Author:: Sean Russell <serATgermaneHYPHENsoftwareDOTcom>
-# Version:: 3.1.7.2
-# Date:: 2007/275
-# Revision:: $Revision: 13815 $
-# 
-# This API documentation can be downloaded from the REXML home page, or can
-# be accessed online[http://www.germane-software.com/software/rexml_doc]
-#
-# A tutorial is available in the REXML distribution in docs/tutorial.html,
-# or can be accessed 
-# online[http://www.germane-software.com/software/rexml/docs/tutorial.html]
-module REXML
-  COPYRIGHT = "Copyright \xC2\xA9 2001-2006 Sean Russell <ser at germane-software.com>"
-  VERSION = "3.1.7.2"
-  DATE = "2007/275"
-  REVISION = "$Revision: 13815 $".gsub(/\$Revision:|\$/,'').strip
-
-  Copyright = COPYRIGHT
-  Version = VERSION
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/sax2listener.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/sax2listener.rb
deleted file mode 100644
index 8db1389..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/sax2listener.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-module REXML
-	# A template for stream parser listeners.
-	# Note that the declarations (attlistdecl, elementdecl, etc) are trivially
-	# processed; REXML doesn't yet handle doctype entity declarations, so you 
-	# have to parse them out yourself.
-	# === Missing methods from SAX2
-	#  ignorable_whitespace
-	# === Methods extending SAX2 
-	# +WARNING+
-	# These methods are certainly going to change, until DTDs are fully
-	# supported.  Be aware of this.
-	#  start_document
-	#  end_document
-	#  doctype
-	#  elementdecl
-	#  attlistdecl
-	#  entitydecl
-	#  notationdecl
-	#  cdata
-	#  xmldecl
-	#  comment
-	module SAX2Listener
-		def start_document
-		end
-		def end_document
-		end
-		def start_prefix_mapping prefix, uri
-		end
-		def end_prefix_mapping prefix
-		end
-		def start_element uri, localname, qname, attributes
-		end
-		def end_element uri, localname, qname
-		end
-		def characters text
-		end
-		def processing_instruction target, data
-		end
-		# Handles a doctype declaration. Any attributes of the doctype which are
-		# not supplied will be nil.  # EG, <!DOCTYPE me PUBLIC "foo" "bar">
-		# @p name the name of the doctype; EG, "me"
-		# @p pub_sys "PUBLIC", "SYSTEM", or nil.  EG, "PUBLIC"
-		# @p long_name the supplied long name, or nil.  EG, "foo"
-		# @p uri the uri of the doctype, or nil.  EG, "bar"
-		def doctype name, pub_sys, long_name, uri
-		end
-		# If a doctype includes an ATTLIST declaration, it will cause this
-		# method to be called.  The content is the declaration itself, unparsed.
-		# EG, <!ATTLIST el attr CDATA #REQUIRED> will come to this method as "el
-		# attr CDATA #REQUIRED".  This is the same for all of the .*decl
-		# methods.
-		def attlistdecl(element, pairs, contents)
-		end
-		# <!ELEMENT ...>
-		def elementdecl content
-		end
-		# <!ENTITY ...>
-		# The argument passed to this method is an array of the entity
-		# declaration.  It can be in a number of formats, but in general it
-		# returns (example, result):
-		#  <!ENTITY % YN '"Yes"'>  
-		#  ["%", "YN", "'\"Yes\"'", "\""]
-		#  <!ENTITY % YN 'Yes'>
-		#  ["%", "YN", "'Yes'", "s"]
-		#  <!ENTITY WhatHeSaid "He said %YN;">
-		#  ["WhatHeSaid", "\"He said %YN;\"", "YN"]
-		#  <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "SYSTEM", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "PUBLIC", "\"-//Textuality//TEXT Standard open-hatch boilerplate//EN\"", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif>
-		#  ["hatch-pic", "SYSTEM", "\"../grafix/OpenHatch.gif\"", "\n\t\t\t\t\t\t\tNDATA gif", "gif"]
-		def entitydecl name, decl
-		end
-		# <!NOTATION ...>
-		def notationdecl content
-		end
-		# Called when <![CDATA[ ... ]]> is encountered in a document.
-		# @p content "..."
-		def cdata content
-		end
-		# Called when an XML PI is encountered in the document.
-		# EG: <?xml version="1.0" encoding="utf"?>
-		# @p version the version attribute value.  EG, "1.0"
-		# @p encoding the encoding attribute value, or nil.  EG, "utf"
-		# @p standalone the standalone attribute value, or nil.  EG, nil
-    # @p spaced the declaration is followed by a line break
-		def xmldecl version, encoding, standalone
-		end
-		# Called when a comment is encountered.
-		# @p comment The content of the comment
-		def comment comment
-		end
-    def progress position
-    end
-	end	
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/source.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/source.rb
deleted file mode 100644
index ce7a2c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/source.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-require 'rexml/encoding'
-
-module REXML
-  # Generates Source-s.  USE THIS CLASS.
-  class SourceFactory
-    # Generates a Source object
-    # @param arg Either a String, or an IO
-    # @return a Source, or nil if a bad argument was given
-    def SourceFactory::create_from(arg)
-      if arg.kind_of? String
-        Source.new(arg)
-      elsif arg.respond_to? :read and
-            arg.respond_to? :readline and
-            arg.respond_to? :nil? and
-            arg.respond_to? :eof?
-        IOSource.new(arg)
-      elsif arg.kind_of? Source
-        arg
-      else
-        raise "#{arg.class} is not a valid input stream.  It must walk \n"+
-          "like either a String, an IO, or a Source."
-      end
-    end
-  end
-
-  # A Source can be searched for patterns, and wraps buffers and other
-  # objects and provides consumption of text
-  class Source
-    include Encoding
-    # The current buffer (what we're going to read next)
-    attr_reader :buffer
-    # The line number of the last consumed text
-    attr_reader :line
-    attr_reader :encoding
-
-    # Constructor
-    # @param arg must be a String, and should be a valid XML document
-    # @param encoding if non-null, sets the encoding of the source to this
-    # value, overriding all encoding detection
-    def initialize(arg, encoding=nil)
-      @orig = @buffer = arg
-      if encoding
-        self.encoding = encoding
-      else
-        self.encoding = check_encoding( @buffer )
-      end
-      @line = 0
-    end
-
-
-    # Inherited from Encoding
-    # Overridden to support optimized en/decoding
-    def encoding=(enc)
-      return unless super
-      @line_break = encode( '>' )
-      if enc != UTF_8
-        @buffer = decode(@buffer)
-        @to_utf = true
-      else
-        @to_utf = false
-      end
-    end
-
-    # Scans the source for a given pattern.  Note, that this is not your
-    # usual scan() method.  For one thing, the pattern argument has some
-    # requirements; for another, the source can be consumed.  You can easily
-    # confuse this method.  Originally, the patterns were easier
-    # to construct and this method more robust, because this method 
-    # generated search regexes on the fly; however, this was 
-    # computationally expensive and slowed down the entire REXML package 
-    # considerably, since this is by far the most commonly called method.
-    # @param pattern must be a Regexp, and must be in the form of
-    # /^\s*(#{your pattern, with no groups})(.*)/.  The first group
-    # will be returned; the second group is used if the consume flag is
-    # set.
-    # @param consume if true, the pattern returned will be consumed, leaving
-    # everything after it in the Source.
-    # @return the pattern, if found, or nil if the Source is empty or the
-    # pattern is not found.
-    def scan(pattern, cons=false)
-      return nil if @buffer.nil?
-      rv = @buffer.scan(pattern)
-      @buffer = $' if cons and rv.size>0
-      rv
-    end
-
-    def read
-    end
-
-    def consume( pattern )
-      @buffer = $' if pattern.match( @buffer )
-    end
-
-    def match_to( char, pattern )
-      return pattern.match(@buffer)
-    end
-
-    def match_to_consume( char, pattern )
-      md = pattern.match(@buffer)
-      @buffer = $'
-      return md
-    end
-
-    def match(pattern, cons=false)
-      md = pattern.match(@buffer)
-      @buffer = $' if cons and md
-      return md
-    end
-
-    # @return true if the Source is exhausted
-    def empty?
-      @buffer == ""
-    end
-
-    def position
-      @orig.index( @buffer )
-    end
-
-    # @return the current line in the source
-    def current_line
-      lines = @orig.split
-      res = lines.grep @buffer[0..30]
-      res = res[-1] if res.kind_of? Array
-      lines.index( res ) if res
-    end
-  end
-
-  # A Source that wraps an IO.  See the Source class for method
-  # documentation
-  class IOSource < Source
-    #attr_reader :block_size
-
-    # block_size has been deprecated
-    def initialize(arg, block_size=500, encoding=nil)
-      @er_source = @source = arg
-      @to_utf = false
-
-      # Determining the encoding is a deceptively difficult issue to resolve.
-      # First, we check the first two bytes for UTF-16.  Then we
-      # assume that the encoding is at least ASCII enough for the '>', and
-      # we read until we get one of those.  This gives us the XML declaration,
-      # if there is one.  If there isn't one, the file MUST be UTF-8, as per
-      # the XML spec.  If there is one, we can determine the encoding from
-      # it.
-      @buffer = ""
-      str = @source.read( 2 )
-      if encoding
-        self.encoding = encoding
-      elsif 0xfe == str[0] && 0xff == str[1]
-        @line_break = "\000>"
-      elsif 0xff == str[0] && 0xfe == str[1]
-        @line_break = ">\000"
-      elsif 0xef == str[0] && 0xbb == str[1]
-        str += @source.read(1)
-        str = '' if (0xbf == str[2])
-        @line_break = ">"
-      else
-        @line_break = ">"
-      end
-      super str+ at source.readline( @line_break )
-    end
-
-    def scan(pattern, cons=false)
-      rv = super
-      # You'll notice that this next section is very similar to the same
-      # section in match(), but just a liiittle different.  This is
-      # because it is a touch faster to do it this way with scan()
-      # than the way match() does it; enough faster to warrent duplicating
-      # some code
-      if rv.size == 0
-        until @buffer =~ pattern or @source.nil?
-          begin
-            # READLINE OPT
-            #str = @source.read(@block_size)
-            str = @source.readline(@line_break)
-            str = decode(str) if @to_utf and str
-            @buffer << str
-          rescue Iconv::IllegalSequence
-            raise
-          rescue
-            @source = nil
-          end
-        end
-        rv = super
-      end
-      rv.taint
-      rv
-    end
-
-    def read
-      begin
-        str = @source.readline(@line_break)
-        str = decode(str) if @to_utf and str 
-        @buffer << str
-      rescue Exception, NameError
-        @source = nil
-      end
-    end
-
-    def consume( pattern )
-      match( pattern, true )
-    end
-
-    def match( pattern, cons=false )
-      rv = pattern.match(@buffer)
-      @buffer = $' if cons and rv
-      while !rv and @source
-        begin
-          str = @source.readline(@line_break)
-          str = decode(str) if @to_utf and str
-          @buffer << str
-          rv = pattern.match(@buffer)
-          @buffer = $' if cons and rv
-        rescue
-          @source = nil
-        end
-      end
-      rv.taint
-      rv
-    end
-    
-    def empty?
-      super and ( @source.nil? || @source.eof? )
-    end
-
-    def position
-      @er_source.stat.pipe? ? 0 : @er_source.pos
-    end
-
-    # @return the current line in the source
-    def current_line
-      begin
-        pos = @er_source.pos        # The byte position in the source
-        lineno = @er_source.lineno  # The XML < position in the source
-        @er_source.rewind
-        line = 0                    # The \r\n position in the source
-        begin
-          while @er_source.pos < pos
-            @er_source.readline
-            line += 1
-          end
-        rescue
-        end
-      rescue IOError
-        pos = -1
-        line = -1
-      end
-      [pos, lineno, line]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/streamlistener.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/streamlistener.rb
deleted file mode 100644
index 6f40112..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/streamlistener.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-module REXML
-	# A template for stream parser listeners.
-	# Note that the declarations (attlistdecl, elementdecl, etc) are trivially
-	# processed; REXML doesn't yet handle doctype entity declarations, so you 
-	# have to parse them out yourself.
-	module StreamListener
-		# Called when a tag is encountered.
-		# @p name the tag name
-		# @p attrs an array of arrays of attribute/value pairs, suitable for
-		# use with assoc or rassoc.  IE, <tag attr1="value1" attr2="value2">
-		# will result in 
-		# tag_start( "tag", # [["attr1","value1"],["attr2","value2"]])
-		def tag_start name, attrs
-		end
-		# Called when the end tag is reached.  In the case of <tag/>, tag_end
-		# will be called immidiately after tag_start
-		# @p the name of the tag
-		def tag_end name
-		end
-		# Called when text is encountered in the document
-		# @p text the text content.
-		def text text
-		end
-		# Called when an instruction is encountered.  EG: <?xsl sheet='foo'?>
-		# @p name the instruction name; in the example, "xsl"
-		# @p instruction the rest of the instruction.  In the example,
-		# "sheet='foo'"
-		def instruction name, instruction
-		end
-		# Called when a comment is encountered.
-		# @p comment The content of the comment
-		def comment comment
-		end
-		# Handles a doctype declaration. Any attributes of the doctype which are
-		# not supplied will be nil.  # EG, <!DOCTYPE me PUBLIC "foo" "bar">
-		# @p name the name of the doctype; EG, "me"
-		# @p pub_sys "PUBLIC", "SYSTEM", or nil.  EG, "PUBLIC"
-		# @p long_name the supplied long name, or nil.  EG, "foo"
-		# @p uri the uri of the doctype, or nil.  EG, "bar"
-		def doctype name, pub_sys, long_name, uri
-		end
-		# Called when the doctype is done
-		def doctype_end
-		end
-		# If a doctype includes an ATTLIST declaration, it will cause this
-		# method to be called.  The content is the declaration itself, unparsed.
-		# EG, <!ATTLIST el attr CDATA #REQUIRED> will come to this method as "el
-		# attr CDATA #REQUIRED".  This is the same for all of the .*decl
-		# methods.
-		def attlistdecl element_name, attributes, raw_content
-		end
-		# <!ELEMENT ...>
-		def elementdecl content
-		end
-		# <!ENTITY ...>
-		# The argument passed to this method is an array of the entity
-		# declaration.  It can be in a number of formats, but in general it
-		# returns (example, result):
-		#  <!ENTITY % YN '"Yes"'>  
-		#  ["%", "YN", "'\"Yes\"'", "\""]
-		#  <!ENTITY % YN 'Yes'>
-		#  ["%", "YN", "'Yes'", "s"]
-		#  <!ENTITY WhatHeSaid "He said %YN;">
-		#  ["WhatHeSaid", "\"He said %YN;\"", "YN"]
-		#  <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "SYSTEM", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "PUBLIC", "\"-//Textuality//TEXT Standard open-hatch boilerplate//EN\"", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif>
-		#  ["hatch-pic", "SYSTEM", "\"../grafix/OpenHatch.gif\"", "\n\t\t\t\t\t\t\tNDATA gif", "gif"]
-		def entitydecl content
-		end
-		# <!NOTATION ...>
-		def notationdecl content
-		end
-		# Called when %foo; is encountered in a doctype declaration.
-		# @p content "foo"
-		def entity content
-		end
-		# Called when <![CDATA[ ... ]]> is encountered in a document.
-		# @p content "..."
-		def cdata content
-		end
-		# Called when an XML PI is encountered in the document.
-		# EG: <?xml version="1.0" encoding="utf"?>
-		# @p version the version attribute value.  EG, "1.0"
-		# @p encoding the encoding attribute value, or nil.  EG, "utf"
-		# @p standalone the standalone attribute value, or nil.  EG, nil
-		def xmldecl version, encoding, standalone
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/syncenumerator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/syncenumerator.rb
deleted file mode 100644
index 955e006..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/syncenumerator.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-module REXML
-  class SyncEnumerator
-    include Enumerable
-
-    # Creates a new SyncEnumerator which enumerates rows of given
-    # Enumerable objects.
-    def initialize(*enums)
-      @gens = enums
-      @biggest = @gens[0]
-      @gens.each {|x| @biggest = x if x.size > @biggest.size }
-    end
-
-    # Returns the number of enumerated Enumerable objects, i.e. the size
-    # of each row.
-    def size
-      @gens.size
-    end
-
-    # Returns the number of enumerated Enumerable objects, i.e. the size
-    # of each row.
-    def length
-      @gens.length
-    end
-
-    # Enumerates rows of the Enumerable objects.
-    def each
-      @biggest.zip( *@gens ) {|a|
-        yield(*a[1..-1])
-      }
-      self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/text.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/text.rb
deleted file mode 100644
index 9804aa7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/text.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-require 'rexml/entity'
-require 'rexml/doctype'
-require 'rexml/child'
-require 'rexml/doctype'
-require 'rexml/parseexception'
-
-module REXML
-  # Represents text nodes in an XML document
-  class Text < Child
-    include Comparable
-    # The order in which the substitutions occur
-    SPECIALS = [ /&(?!#?[\w-]+;)/u, /</u, />/u, /"/u, /'/u, /\r/u ]
-    SUBSTITUTES = ['&', '<', '>', '"', ''', '
']
-    # Characters which are substituted in written strings
-    SLAICEPS = [ '<', '>', '"', "'", '&' ]
-    SETUTITSBUS = [ /</u, />/u, /"/u, /'/u, /&/u ]
-
-    # If +raw+ is true, then REXML leaves the value alone
-    attr_accessor :raw
-
-    ILLEGAL = /(<|&(?!(#{Entity::NAME})|(#0*((?:\d+)|(?:x[a-fA-F0-9]+)));))/um
-    NUMERICENTITY = /&#0*((?:\d+)|(?:x[a-fA-F0-9]+));/ 
-
-    # Constructor
-    # +arg+ if a String, the content is set to the String.  If a Text,
-    # the object is shallowly cloned.  
-    #
-    # +respect_whitespace+ (boolean, false) if true, whitespace is
-    # respected
-    #
-    # +parent+ (nil) if this is a Parent object, the parent
-    # will be set to this.  
-    #
-    # +raw+ (nil) This argument can be given three values.
-    # If true, then the value of used to construct this object is expected to 
-    # contain no unescaped XML markup, and REXML will not change the text. If 
-    # this value is false, the string may contain any characters, and REXML will
-    # escape any and all defined entities whose values are contained in the
-    # text.  If this value is nil (the default), then the raw value of the 
-    # parent will be used as the raw value for this node.  If there is no raw
-    # value for the parent, and no value is supplied, the default is false.
-    # Use this field if you have entities defined for some text, and you don't
-    # want REXML to escape that text in output.
-    #   Text.new( "<&", false, nil, false ) #-> "<&"
-    #   Text.new( "<&", false, nil, false ) #-> "&lt;&amp;"
-    #   Text.new( "<&", false, nil, true )  #-> Parse exception
-    #   Text.new( "<&", false, nil, true )  #-> "<&"
-    #   # Assume that the entity "s" is defined to be "sean"
-    #   # and that the entity    "r" is defined to be "russell"
-    #   Text.new( "sean russell" )          #-> "&s; &r;"
-    #   Text.new( "sean russell", false, nil, true ) #-> "sean russell"
-    #
-    # +entity_filter+ (nil) This can be an array of entities to match in the
-    # supplied text.  This argument is only useful if +raw+ is set to false.
-    #   Text.new( "sean russell", false, nil, false, ["s"] ) #-> "&s; russell"
-    #   Text.new( "sean russell", false, nil, true, ["s"] ) #-> "sean russell"
-    # In the last example, the +entity_filter+ argument is ignored.
-    #
-    # +pattern+ INTERNAL USE ONLY
-    def initialize(arg, respect_whitespace=false, parent=nil, raw=nil, 
-      entity_filter=nil, illegal=ILLEGAL )
-
-      @raw = false
-
-      if parent
-        super( parent )
-        @raw = parent.raw 
-      else
-        @parent = nil
-      end
-
-      @raw = raw unless raw.nil?
-      @entity_filter = entity_filter
-      @normalized = @unnormalized = nil
-
-      if arg.kind_of? String
-        @string = arg.clone
-        @string.squeeze!(" \n\t") unless respect_whitespace
-      elsif arg.kind_of? Text
-        @string = arg.to_s
-        @raw = arg.raw
-      elsif
-        raise "Illegal argument of type #{arg.type} for Text constructor (#{arg})"
-      end
-
-      @string.gsub!( /\r\n?/, "\n" )
-
-      # check for illegal characters
-      if @raw
-        if @string =~ illegal
-          raise "Illegal character '#{$1}' in raw string \"#{@string}\""
-        end
-      end
-    end
-
-    def node_type
-      :text
-    end
-
-    def empty?
-      @string.size==0
-    end
-
-
-    def clone
-      return Text.new(self)
-    end
-
-
-    # Appends text to this text node.  The text is appended in the +raw+ mode
-    # of this text node.
-    def <<( to_append )
-      @string << to_append.gsub( /\r\n?/, "\n" )
-    end
-
-
-    # +other+ a String or a Text
-    # +returns+ the result of (to_s <=> arg.to_s)
-    def <=>( other )
-      to_s() <=> other.to_s
-    end
-
-    REFERENCE = /#{Entity::REFERENCE}/
-    # Returns the string value of this text node.  This string is always
-    # escaped, meaning that it is a valid XML text node string, and all
-    # entities that can be escaped, have been inserted.  This method respects
-    # the entity filter set in the constructor.
-    #   
-    #   # Assume that the entity "s" is defined to be "sean", and that the 
-    #   # entity "r" is defined to be "russell"
-    #   t = Text.new( "< & sean russell", false, nil, false, ['s'] ) 
-    #   t.to_s   #-> "< & &s; russell"
-    #   t = Text.new( "< & &s; russell", false, nil, false ) 
-    #   t.to_s   #-> "< & &s; russell"
-    #   u = Text.new( "sean russell", false, nil, true )
-    #   u.to_s   #-> "sean russell"
-    def to_s
-      return @string if @raw
-      return @normalized if @normalized
-
-      doctype = nil
-      if @parent
-        doc = @parent.document
-        doctype = doc.doctype if doc
-      end
-
-      @normalized = Text::normalize( @string, doctype, @entity_filter )
-    end
-
-    def inspect
-      @string.inspect
-    end
-
-    # Returns the string value of this text.  This is the text without
-    # entities, as it might be used programmatically, or printed to the
-    # console.  This ignores the 'raw' attribute setting, and any
-    # entity_filter.
-    #
-    #   # Assume that the entity "s" is defined to be "sean", and that the 
-    #   # entity "r" is defined to be "russell"
-    #   t = Text.new( "< & sean russell", false, nil, false, ['s'] ) 
-    #   t.value   #-> "< & sean russell"
-    #   t = Text.new( "< & &s; russell", false, nil, false )
-    #   t.value   #-> "< & sean russell"
-    #   u = Text.new( "sean russell", false, nil, true )
-    #   u.value   #-> "sean russell"
-    def value
-      @unnormalized if @unnormalized
-      doctype = nil
-      if @parent
-        doc = @parent.document
-        doctype = doc.doctype if doc
-      end
-      @unnormalized = Text::unnormalize( @string, doctype )
-    end
-
-    # Sets the contents of this text node.  This expects the text to be 
-    # unnormalized.  It returns self.
-    #
-    #   e = Element.new( "a" )
-    #   e.add_text( "foo" )   # <a>foo</a>
-    #   e[0].value = "bar"    # <a>bar</a>
-    #   e[0].value = "<a>"    # <a><a></a>
-    def value=( val )
-      @string = val.gsub( /\r\n?/, "\n" )
-      @unnormalized = nil
-      @normalized = nil
-      @raw = false
-    end
- 
-     def wrap(string, width, addnewline=false)
-       # Recursivly wrap string at width.
-       return string if string.length <= width
-       place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
-       if addnewline then
-         return "\n" + string[0,place] + "\n" + wrap(string[place+1..-1], width)
-       else
-         return string[0,place] + "\n" + wrap(string[place+1..-1], width)
-       end
-     end
-
-    def indent_text(string, level=1, style="\t", indentfirstline=true)
-      return string if level < 0
-      new_string = ''
-      string.each { |line|
-        indent_string = style * level
-        new_line = (indent_string + line).sub(/[\s]+$/,'')
-        new_string << new_line
-      }
-      new_string.strip! unless indentfirstline
-      return new_string
-    end
- 
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    def write( writer, indent=-1, transitive=false, ie_hack=false ) 
-      Kernel.warn("#{self.class.name}.write is deprecated.  See REXML::Formatters")
-      formatter = if indent > -1
-          REXML::Formatters::Pretty.new( indent )
-        else
-          REXML::Formatters::Default.new
-        end
-      formatter.write( self, writer )
-    end
-
-    # FIXME
-    # This probably won't work properly
-    def xpath
-      path = @parent.xpath
-      path += "/text()"
-      return path
-    end
-
-    # Writes out text, substituting special characters beforehand.
-    # +out+ A String, IO, or any other object supporting <<( String )
-    # +input+ the text to substitute and the write out
-    #
-    #   z=utf8.unpack("U*")
-    #   ascOut=""
-    #   z.each{|r|
-    #     if r <  0x100
-    #       ascOut.concat(r.chr)
-    #     else
-    #       ascOut.concat(sprintf("&#x%x;", r))
-    #     end
-    #   }
-    #   puts ascOut
-    def write_with_substitution out, input
-      copy = input.clone
-      # Doing it like this rather than in a loop improves the speed
-      copy.gsub!( SPECIALS[0], SUBSTITUTES[0] )
-      copy.gsub!( SPECIALS[1], SUBSTITUTES[1] )
-      copy.gsub!( SPECIALS[2], SUBSTITUTES[2] )
-      copy.gsub!( SPECIALS[3], SUBSTITUTES[3] )
-      copy.gsub!( SPECIALS[4], SUBSTITUTES[4] )
-      copy.gsub!( SPECIALS[5], SUBSTITUTES[5] )
-      out << copy
-    end
-
-    # Reads text, substituting entities
-    def Text::read_with_substitution( input, illegal=nil )
-      copy = input.clone
-
-      if copy =~ illegal
-        raise ParseException.new( "malformed text: Illegal character #$& in \"#{copy}\"" )
-      end if illegal
-      
-      copy.gsub!( /\r\n?/, "\n" )
-      if copy.include? ?&
-        copy.gsub!( SETUTITSBUS[0], SLAICEPS[0] )
-        copy.gsub!( SETUTITSBUS[1], SLAICEPS[1] )
-        copy.gsub!( SETUTITSBUS[2], SLAICEPS[2] )
-        copy.gsub!( SETUTITSBUS[3], SLAICEPS[3] )
-        copy.gsub!( SETUTITSBUS[4], SLAICEPS[4] )
-        copy.gsub!( /&#0*((?:\d+)|(?:x[a-f0-9]+));/ ) {|m|
-          m=$1
-          #m='0' if m==''
-          m = "0#{m}" if m[0] == ?x
-          [Integer(m)].pack('U*')
-        }
-      end
-      copy
-    end
-
-    EREFERENCE = /&(?!#{Entity::NAME};)/
-    # Escapes all possible entities
-    def Text::normalize( input, doctype=nil, entity_filter=nil )
-      copy = input
-      # Doing it like this rather than in a loop improves the speed
-      #copy = copy.gsub( EREFERENCE, '&' )
-      copy = copy.gsub( "&", "&" )
-      if doctype
-        # Replace all ampersands that aren't part of an entity
-        doctype.entities.each_value do |entity|
-          copy = copy.gsub( entity.value, 
-            "&#{entity.name};" ) if entity.value and 
-              not( entity_filter and entity_filter.include?(entity) )
-        end
-      else
-        # Replace all ampersands that aren't part of an entity
-        DocType::DEFAULT_ENTITIES.each_value do |entity|
-          copy = copy.gsub(entity.value, "&#{entity.name};" )
-        end
-      end
-      copy
-    end
-
-    # Unescapes all possible entities
-    def Text::unnormalize( string, doctype=nil, filter=nil, illegal=nil )
-      rv = string.clone
-      rv.gsub!( /\r\n?/, "\n" )
-      matches = rv.scan( REFERENCE )
-      return rv if matches.size == 0
-      rv.gsub!( NUMERICENTITY ) {|m|
-        m=$1
-        m = "0#{m}" if m[0] == ?x
-        [Integer(m)].pack('U*')
-      }
-      matches.collect!{|x|x[0]}.compact!
-      if matches.size > 0
-        if doctype
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = doctype.entity( entity_reference )
-              re = /&#{entity_reference};/
-              rv.gsub!( re, entity_value ) if entity_value
-            end
-          end
-        else
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = DocType::DEFAULT_ENTITIES[ entity_reference ]
-              re = /&#{entity_reference};/
-              rv.gsub!( re, entity_value.value ) if entity_value
-            end
-          end
-        end
-        rv.gsub!( /&/, '&' )
-      end
-      rv
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/undefinednamespaceexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/undefinednamespaceexception.rb
deleted file mode 100644
index 8ebfdfd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/undefinednamespaceexception.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rexml/parseexception'
-module REXML
-  class UndefinedNamespaceException < ParseException
-    def initialize( prefix, source, parser )
-      super( "Undefined prefix #{prefix} found" )
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/relaxng.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/relaxng.rb
deleted file mode 100644
index 969f51b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/relaxng.rb
+++ /dev/null
@@ -1,559 +0,0 @@
-require "rexml/validation/validation"
-require "rexml/parsers/baseparser"
-
-module REXML
-  module Validation
-    # Implemented:
-    # * empty
-    # * element
-    # * attribute
-    # * text
-    # * optional
-    # * choice
-    # * oneOrMore
-    # * zeroOrMore
-    # * group
-    # * value
-    # * interleave
-    # * mixed
-    # * ref
-    # * grammar
-    # * start
-    # * define
-    #
-    # Not implemented:
-    # * data
-    # * param
-    # * include
-    # * externalRef
-    # * notAllowed
-    # * anyName
-    # * nsName
-    # * except
-    # * name
-    class RelaxNG
-      include Validator
-
-      INFINITY = 1.0 / 0.0
-      EMPTY = Event.new( nil )
-      TEXT = [:start_element, "text"]
-      attr_accessor :current
-      attr_accessor :count
-      attr_reader :references
-
-      # FIXME: Namespaces
-      def initialize source
-        parser = REXML::Parsers::BaseParser.new( source )
-
-        @count = 0
-        @references = {}
-        @root = @current = Sequence.new(self)
-        @root.previous = true
-        states = [ @current ]
-        begin
-          event = parser.pull
-          case event[0]
-          when :start_element
-            case event[1]
-            when "empty"
-            when "element", "attribute", "text", "value"
-              states[-1] << event
-            when "optional"
-              states << Optional.new( self )
-              states[-2] << states[-1]
-            when "choice"
-              states << Choice.new( self )
-              states[-2] << states[-1]
-            when "oneOrMore"
-              states << OneOrMore.new( self )
-              states[-2] << states[-1]
-            when "zeroOrMore"
-              states << ZeroOrMore.new( self )
-              states[-2] << states[-1]
-            when "group"
-              states << Sequence.new( self )
-              states[-2] << states[-1]
-            when "interleave"
-              states << Interleave.new( self )
-              states[-2] << states[-1]
-            when "mixed"
-              states << Interleave.new( self )
-              states[-2] << states[-1]
-              states[-1] << TEXT 
-            when "define"
-              states << [ event[2]["name"] ]
-            when "ref"
-              states[-1] << Ref.new( event[2]["name"] )
-            when "anyName"
-              states << AnyName.new( self )
-              states[-2] << states[-1]
-            when "nsName"
-            when "except"
-            when "name"
-            when "data"
-            when "param"
-            when "include"
-            when "grammar"
-            when "start"
-            when "externalRef"
-            when "notAllowed"
-            end
-          when :end_element
-            case event[1]
-            when "element", "attribute"
-              states[-1] << event
-            when "zeroOrMore", "oneOrMore", "choice", "optional", 
-              "interleave", "group", "mixed"
-              states.pop
-            when "define"
-              ref = states.pop
-              @references[ ref.shift ] = ref
-            #when "empty"
-            end
-          when :end_document
-            states[-1] << event
-          when :text
-            states[-1] << event
-          end
-        end while event[0] != :end_document
-      end
-
-      def receive event
-        validate( event )
-      end
-    end
-
-    class State
-      def initialize( context )
-        @previous = []
-        @events = []
-        @current = 0
-        @count = context.count += 1
-        @references = context.references
-        @value = false
-      end
-
-      def reset
-        return if @current == 0
-        @current = 0
-        @events.each {|s| s.reset if s.kind_of? State }
-      end
-
-      def previous=( previous ) 
-        @previous << previous
-      end
-
-      def next( event )
-        #print "In next with #{event.inspect}.  "
-        #puts "Next (#@current) is #{@events[@current]}"
-        #p @previous
-        return @previous.pop.next( event ) if @events[@current].nil?
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].kind_of? State )
-          @current += 1
-          @events[@current-1].previous = self
-          return @events[@current-1].next( event )
-        end
-        #puts "Current isn't a state"
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-            #puts "#{inspect[0,5]} 1RETURNING #{@previous.inspect[0,5]}"
-            return @previous.pop
-          elsif @events[@current].kind_of? State
-            @current += 1
-            #puts "#{inspect[0,5]} 2RETURNING (#{@current-1}) #{@events[@current-1].inspect[0,5]}; on return, next is #{@events[@current]}"
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            #puts "#{inspect[0,5]} RETURNING self w/ next(#@current) = #{@events[@current]}"
-            return self
-          end
-        else
-          return nil
-        end
-      end
-
-      def to_s
-        # Abbreviated:
-        self.class.name =~ /(?:::)(\w)\w+$/
-        # Full:
-        #self.class.name =~ /(?:::)(\w+)$/
-        "#$1.#@count"
-      end
-
-      def inspect
-        "< #{to_s} #{@events.collect{|e| 
-          pre = e == @events[@current] ? '#' : ''
-          pre + e.inspect unless self == e
-        }.join(', ')} >"
-      end
-
-      def expected
-        return [@events[@current]]
-      end
-
-      def <<( event )
-        add_event_to_arry( @events, event )
-      end
-
-
-      protected
-      def expand_ref_in( arry, ind )
-        new_events = []
-        @references[ arry[ind].to_s ].each{ |evt| 
-          add_event_to_arry(new_events,evt)
-        }
-        arry[ind,1] = new_events
-      end
-
-      def add_event_to_arry( arry, evt ) 
-        evt = generate_event( evt )
-        if evt.kind_of? String 
-          arry[-1].event_arg = evt if arry[-1].kind_of? Event and @value
-          @value = false
-        else
-          arry << evt
-        end
-      end
-
-      def generate_event( event )
-        return event if event.kind_of? State or event.class == Ref
-        evt = nil
-        arg = nil
-        case event[0]
-        when :start_element
-          case event[1]
-          when "element"
-            evt = :start_element
-            arg = event[2]["name"]
-          when "attribute"
-            evt = :start_attribute
-            arg = event[2]["name"]
-          when "text"
-            evt = :text
-          when "value"
-            evt = :text
-            @value = true
-          end
-        when :text
-          return event[1]
-        when :end_document
-          return Event.new( event[0] )
-        else # then :end_element
-          case event[1]
-          when "element"
-            evt = :end_element
-          when "attribute"
-            evt = :end_attribute
-          end
-        end
-        return Event.new( evt, arg )
-      end
-    end
-
-
-    class Sequence < State
-      def matches?(event)
-        @events[@current].matches?( event )
-      end
-    end
-
-
-    class Optional < State
-      def next( event )
-        if @current == 0
-          rv = super
-          return rv if rv
-          @prior = @previous.pop
-          return @prior.next( event )
-        end
-        super
-      end
-
-      def matches?(event)
-        @events[@current].matches?(event) || 
-        (@current == 0 and @previous[-1].matches?(event))
-      end
-
-      def expected
-        return [ @prior.expected, @events[0] ].flatten if @current == 0
-        return [@events[@current]]
-      end
-    end
-
-
-    class ZeroOrMore < Optional
-      def next( event )
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-            @current = 0
-            return self
-          elsif @events[@current].kind_of? State
-            @current += 1
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            return self
-          end
-        else
-          @prior = @previous.pop
-          return @prior.next( event ) if @current == 0
-          return nil
-        end
-      end
-
-      def expected
-        return [ @prior.expected, @events[0] ].flatten if @current == 0
-        return [@events[@current]]
-      end
-    end
-
-
-    class OneOrMore < State
-      def initialize context
-        super
-        @ord = 0
-      end
-
-      def reset
-        super 
-        @ord = 0
-      end
-
-      def next( event )
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          @ord += 1
-          if @events[@current].nil?
-            @current = 0
-            return self
-          elsif @events[@current].kind_of? State
-            @current += 1
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            return self
-          end
-        else
-          return @previous.pop.next( event ) if @current == 0 and @ord > 0
-          return nil
-        end
-      end
-
-      def matches?( event )
-        @events[@current].matches?(event) || 
-        (@current == 0 and @ord > 0 and @previous[-1].matches?(event))
-      end
-
-      def expected
-        if @current == 0 and @ord > 0
-          return [@previous[-1].expected, @events[0]].flatten
-        else
-          return [@events[@current]]
-        end
-      end
-    end
-
-
-    class Choice < State
-      def initialize context
-        super
-        @choices = []
-      end
-
-      def reset
-        super
-        @events = []
-        @choices.each { |c| c.each { |s| s.reset if s.kind_of? State } }
-      end
-
-      def <<( event )
-        add_event_to_arry( @choices, event )
-      end
-
-      def next( event )
-        # Make the choice if we haven't
-        if @events.size == 0
-          c = 0 ; max = @choices.size
-          while c < max
-            if @choices[c][0].class == Ref
-              expand_ref_in( @choices[c], 0 )
-              @choices += @choices[c]
-              @choices.delete( @choices[c] )
-              max -= 1
-            else
-              c += 1
-            end
-          end
-          @events = @choices.find { |evt| evt[0].matches? event }
-          # Remove the references
-          # Find the events
-        end
-        #puts "In next with #{event.inspect}."
-        #puts "events is #{@events.inspect}"
-        unless @events
-          @events = []
-          return nil
-        end
-        #puts "current = #@current"
-        super
-      end
-
-      def matches?( event )
-        return @events[@current].matches?( event ) if @events.size > 0
-        !@choices.find{|evt| evt[0].matches?(event)}.nil?
-      end
-
-      def expected
-        #puts "IN CHOICE EXPECTED"
-        #puts "EVENTS = #{@events.inspect}"
-        return [@events[@current]] if @events.size > 0
-        return @choices.collect do |x| 
-          if x[0].kind_of? State
-            x[0].expected
-          else
-            x[0]
-          end
-        end.flatten
-      end
-
-      def inspect
-        "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' or ')} >"
-      end
-
-      protected
-      def add_event_to_arry( arry, evt ) 
-        if evt.kind_of? State or evt.class == Ref
-          arry << [evt]
-        elsif evt[0] == :text 
-         if arry[-1] and
-            arry[-1][-1].kind_of?( Event ) and 
-            arry[-1][-1].event_type == :text and @value
-
-            arry[-1][-1].event_arg = evt[1]
-            @value = false
-          end
-        else
-          arry << [] if evt[0] == :start_element
-          arry[-1] << generate_event( evt )
-        end
-      end
-    end
-
-
-    class Interleave < Choice
-      def initialize context
-        super
-        @choice = 0
-      end
-
-      def reset
-        @choice = 0
-      end
-
-      def next_current( event )
-        # Expand references
-        c = 0 ; max = @choices.size
-        while c < max
-          if @choices[c][0].class == Ref
-            expand_ref_in( @choices[c], 0 )
-            @choices += @choices[c]
-            @choices.delete( @choices[c] )
-            max -= 1
-          else
-            c += 1
-          end
-        end
-        @events = @choices[@choice..-1].find { |evt| evt[0].matches? event }
-        @current = 0
-        if @events
-          # reorder the choices
-          old = @choices[@choice]
-          idx = @choices.index( @events )
-          @choices[@choice] = @events
-          @choices[idx] = old
-          @choice += 1
-        end
-        
-       #puts "In next with #{event.inspect}."
-       #puts "events is #{@events.inspect}"
-        @events = [] unless @events
-      end
-
-
-      def next( event )
-        # Find the next series
-        next_current(event) unless @events[@current]
-        return nil unless @events[@current]
-
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref 
-       #puts "In next with #{event.inspect}."
-       #puts "Next (#@current) is #{@events[@current]}"
-        if ( @events[@current].kind_of? State )
-          @current += 1
-          @events[@current-1].previous = self
-          return @events[@current-1].next( event )
-        end
-       #puts "Current isn't a state"
-        return @previous.pop.next( event ) if @events[@current].nil?
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-           #puts "#{inspect[0,5]} 1RETURNING self" unless @choices[@choice].nil?
-            return self unless @choices[@choice].nil?
-           #puts "#{inspect[0,5]} 1RETURNING #{@previous[-1].inspect[0,5]}"
-            return @previous.pop
-          elsif @events[@current].kind_of? State
-            @current += 1
-           #puts "#{inspect[0,5]} 2RETURNING (#{@current-1}) #{@events[@current-1].inspect[0,5]}; on return, next is #{@events[@current]}"
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-           #puts "#{inspect[0,5]} RETURNING self w/ next(#@current) = #{@events[@current]}"
-            return self
-          end
-        else
-          return nil
-        end
-      end
-
-      def matches?( event )
-        return @events[@current].matches?( event ) if @events[@current]
-        !@choices[@choice..-1].find{|evt| evt[0].matches?(event)}.nil?
-      end
-
-      def expected
-        #puts "IN CHOICE EXPECTED"
-        #puts "EVENTS = #{@events.inspect}"
-        return [@events[@current]] if @events[@current]
-        return @choices[@choice..-1].collect do |x| 
-          if x[0].kind_of? State
-            x[0].expected
-          else
-            x[0]
-          end
-        end.flatten
-      end
-
-      def inspect
-        "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' and ')} >"
-      end
-    end
-
-    class Ref
-      def initialize value
-        @value = value
-      end
-      def to_s
-        @value
-      end
-      def inspect
-        "{#{to_s}}"
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validation.rb
deleted file mode 100644
index 160ea96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validation.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-require 'rexml/validation/validationexception'
-
-module REXML
-  module Validation
-    module Validator
-      NILEVENT = [ nil ]
-      def reset
-        @current = @root
-        @root.reset
-        @root.previous = true
-        @attr_stack = []
-        self
-      end
-      def dump
-        puts @root.inspect
-      end
-      def validate( event ) 
-        #puts "Current: #@current"
-        #puts "Event: #{event.inspect}"
-        @attr_stack = [] unless defined? @attr_stack
-        match = @current.next(event)
-        raise ValidationException.new( "Validation error.  Expected: "+
-          @current.expected.join( " or " )+" from #{@current.inspect} "+
-          " but got #{Event.new( event[0], event[1] ).inspect}" ) unless match
-        @current = match
-
-        # Check for attributes
-        case event[0]
-        when :start_element
-          #puts "Checking attributes"
-          @attr_stack << event[2]
-          begin
-            sattr = [:start_attribute, nil]
-            eattr = [:end_attribute]
-            text = [:text, nil]
-            k,v = event[2].find { |k,v| 
-              sattr[1] = k
-              #puts "Looking for #{sattr.inspect}"
-              m = @current.next( sattr )
-              #puts "Got #{m.inspect}"
-              if m 
-                # If the state has text children...
-                #puts "Looking for #{eattr.inspect}"
-                #puts "Expect #{m.expected}"
-                if m.matches?( eattr )
-                  #puts "Got end"
-                  @current = m
-                else
-                  #puts "Didn't get end"
-                  text[1] = v
-                  #puts "Looking for #{text.inspect}"
-                  m = m.next( text )
-                  #puts "Got #{m.inspect}"
-                  text[1] = nil
-                  return false unless m
-                  @current = m if m
-                end
-                m = @current.next( eattr )
-                if m
-                  @current = m
-                  true
-                else
-                  false
-                end
-              else
-                false
-              end
-            }
-            event[2].delete(k) if k
-          end while k
-        when :end_element
-          attrs = @attr_stack.pop
-          raise ValidationException.new( "Validation error.  Illegal "+
-            " attributes: #{attrs.inspect}") if attrs.length > 0
-        end
-      end
-    end
-
-    class Event
-      def initialize(event_type, event_arg=nil )
-        @event_type = event_type
-        @event_arg = event_arg
-      end
-
-      attr_reader :event_type
-      attr_accessor :event_arg
-
-      def done?
-        @done
-      end
-
-      def single?
-        return (@event_type != :start_element and @event_type != :start_attribute)
-      end
-
-      def matches?( event )
-        #puts "#@event_type =? #{event[0]} && #@event_arg =? #{event[1]} "
-        return false unless event[0] == @event_type
-        case event[0]
-        when nil
-          return true
-        when :start_element
-          return true if event[1] == @event_arg
-        when :end_element
-          return true
-        when :start_attribute
-          return true if event[1] == @event_arg
-        when :end_attribute
-          return true
-        when :end_document
-          return true
-        when :text
-          return (@event_arg.nil? or @event_arg == event[1])
-=begin
-        when :processing_instruction
-          false
-        when :xmldecl
-          false
-        when :start_doctype
-          false
-        when :end_doctype
-          false
-        when :externalentity
-          false
-        when :elementdecl
-          false
-        when :entity
-          false
-        when :attlistdecl
-          false
-        when :notationdecl
-          false
-        when :end_doctype
-          false
-=end
-        else
-          false
-        end
-      end
-
-      def ==( other )
-        return false unless other.kind_of? Event
-        @event_type == other.event_type and @event_arg == other.event_arg
-      end
-
-      def to_s
-        inspect
-      end
-
-      def inspect
-        "#{@event_type.inspect}( #@event_arg )"
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validationexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validationexception.rb
deleted file mode 100644
index 4723d9e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/validation/validationexception.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module REXML
-  module Validation
-    class ValidationException < RuntimeError
-      def initialize msg
-        super
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmldecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmldecl.rb
deleted file mode 100644
index 427eb78..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmldecl.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-require 'rexml/encoding'
-require 'rexml/source'
-
-module REXML
-	# NEEDS DOCUMENTATION
-	class XMLDecl < Child
-		include Encoding
-
-		DEFAULT_VERSION = "1.0";
-		DEFAULT_ENCODING = "UTF-8";
-		DEFAULT_STANDALONE = "no";
-		START = '<\?xml';
-		STOP = '\?>';
-
-		attr_accessor :version, :standalone
-    attr_reader :writeencoding, :writethis
-
-		def initialize(version=DEFAULT_VERSION, encoding=nil, standalone=nil)
-      @writethis = true
-      @writeencoding = !encoding.nil?
-			if version.kind_of? XMLDecl
-				super()
-				@version = version.version
-				self.encoding = version.encoding
-        @writeencoding = version.writeencoding
-				@standalone = version.standalone
-			else
-				super()
-				@version = version
-				self.encoding = encoding
-				@standalone = standalone
-			end
-			@version = DEFAULT_VERSION if @version.nil?
-		end
-
-		def clone
-			XMLDecl.new(self)
-		end
-
-    # indent::
-    #   Ignored.  There must be no whitespace before an XML declaration
-    # transitive::
-    #   Ignored
-    # ie_hack::
-    #   Ignored
-		def write(writer, indent=-1, transitive=false, ie_hack=false)
-      return nil unless @writethis or writer.kind_of? Output
-			writer << START.sub(/\\/u, '')
-      if writer.kind_of? Output
-        writer << " #{content writer.encoding}"
-      else
-        writer << " #{content encoding}"
-      end
-			writer << STOP.sub(/\\/u, '')
-		end
-
-		def ==( other )
-		  other.kind_of?(XMLDecl) and
-		  other.version == @version and
-		  other.encoding == self.encoding and
-		  other.standalone == @standalone
-		end
-
-		def xmldecl version, encoding, standalone
-			@version = version
-			self.encoding = encoding
-			@standalone = standalone
-		end
-
-		def node_type
-			:xmldecl
-		end
-
-		alias :stand_alone? :standalone
-    alias :old_enc= :encoding=
-
-    def encoding=( enc )
-      if enc.nil?
-        self.old_enc = "UTF-8"
-        @writeencoding = false
-      else
-        self.old_enc = enc
-        @writeencoding = true
-      end
-      self.dowrite
-    end
-
-    # Only use this if you do not want the XML declaration to be written;
-    # this object is ignored by the XML writer.  Otherwise, instantiate your
-    # own XMLDecl and add it to the document.
-    #
-    # Note that XML 1.1 documents *must* include an XML declaration
-    def XMLDecl.default
-      rv = XMLDecl.new( "1.0" )
-      rv.nowrite
-      rv
-    end
-
-    def nowrite
-      @writethis = false
-    end
-
-    def dowrite
-      @writethis = true
-    end
-
-    def inspect
-      START.sub(/\\/u, '') + " ... " + STOP.sub(/\\/u, '')
-    end
-
-		private
-		def content(enc)
-			rv = "version='#@version'"
-			rv << " encoding='#{enc}'" if @writeencoding || enc !~ /utf-8/i
-			rv << " standalone='#@standalone'" if @standalone
-			rv
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmltokens.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmltokens.rb
deleted file mode 100644
index 6bbe5b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xmltokens.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module REXML
-	# Defines a number of tokens used for parsing XML.  Not for general
-	# consumption.
-	module XMLTokens
-		NCNAME_STR= '[\w:][\-\w\d.]*'
-		NAME_STR= "(?:#{NCNAME_STR}:)?#{NCNAME_STR}"
-
-		NAMECHAR = '[\-\w\d\.:]'
-		NAME = "([\\w:]#{NAMECHAR}*)"
-		NMTOKEN = "(?:#{NAMECHAR})+"
-		NMTOKENS = "#{NMTOKEN}(\\s+#{NMTOKEN})*"
-		REFERENCE = "(?:&#{NAME};|&#\\d+;|&#x[0-9a-fA-F]+;)"
-
-		#REFERENCE = "(?:#{ENTITYREF}|#{CHARREF})"
-		#ENTITYREF = "&#{NAME};"
-		#CHARREF = "&#\\d+;|&#x[0-9a-fA-F]+;"
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath.rb
deleted file mode 100644
index 939399e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'rexml/functions'
-require 'rexml/xpath_parser'
-
-module REXML
-	# Wrapper class.  Use this class to access the XPath functions.
-	class XPath
-		include Functions
-		EMPTY_HASH = {}
-
-		# Finds and returns the first node that matches the supplied xpath.
-		# element::
-		# 	The context element
-		# path::
-		# 	The xpath to search for.  If not supplied or nil, returns the first
-		# 	node matching '*'.
-		# namespaces::
-		# 	If supplied, a Hash which defines a namespace mapping.
-		#
-		#  XPath.first( node )
-		#  XPath.first( doc, "//b"} )
-		#  XPath.first( node, "a/x:b", { "x"=>"http://doofus" } )
-    def XPath::first element, path=nil, namespaces=nil, variables={}
-      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
-      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path, element).flatten[0]
-		end
-
-		# Itterates over nodes that match the given path, calling the supplied
-		# block with the match.
-		# element::
-		#   The context element
-		# path::
-		#   The xpath to search for.  If not supplied or nil, defaults to '*'
-		# namespaces::
-		# 	If supplied, a Hash which defines a namespace mapping
-		#
-		#  XPath.each( node ) { |el| ... }
-		#  XPath.each( node, '/*[@attr='v']' ) { |el| ... }
-		#  XPath.each( node, 'ancestor::x' ) { |el| ... }
-		def XPath::each element, path=nil, namespaces=nil, variables={}, &block
-      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
-      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path, element).each( &block )
-		end
-
-		# Returns an array of nodes matching a given XPath.  
-		def XPath::match element, path=nil, namespaces=nil, variables={}
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path,element)
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath_parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath_parser.rb
deleted file mode 100644
index eb608fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rexml/xpath_parser.rb
+++ /dev/null
@@ -1,792 +0,0 @@
-require 'rexml/namespace'
-require 'rexml/xmltokens'
-require 'rexml/attribute'
-require 'rexml/syncenumerator'
-require 'rexml/parsers/xpathparser'
-
-class Object
-  def dclone
-    clone
-  end
-end
-class Symbol
-  def dclone ; self ; end
-end
-class Fixnum
-  def dclone ; self ; end
-end
-class Float
-  def dclone ; self ; end
-end
-class Array
-  def dclone
-    klone = self.clone
-    klone.clear
-    self.each{|v| klone << v.dclone}
-    klone
-  end
-end
-
-module REXML
-  # You don't want to use this class.  Really.  Use XPath, which is a wrapper
-  # for this class.  Believe me.  You don't want to poke around in here.
-  # There is strange, dark magic at work in this code.  Beware.  Go back!  Go
-  # back while you still can!
-  class XPathParser
-    include XMLTokens
-    LITERAL    = /^'([^']*)'|^"([^"]*)"/u
-
-    def initialize( )
-      @parser = REXML::Parsers::XPathParser.new
-      @namespaces = nil
-      @variables = {}
-    end
-
-    def namespaces=( namespaces={} )
-      Functions::namespace_context = namespaces
-      @namespaces = namespaces
-    end
-
-    def variables=( vars={} )
-      Functions::variables = vars
-      @variables = vars
-    end
-
-    def parse path, nodeset
-     #puts "#"*40
-     path_stack = @parser.parse( path )
-     #puts "PARSE: #{path} => #{path_stack.inspect}"
-     #puts "PARSE: nodeset = #{nodeset.inspect}"
-     match( path_stack, nodeset )
-    end
-
-    def get_first path, nodeset
-     #puts "#"*40
-     path_stack = @parser.parse( path )
-     #puts "PARSE: #{path} => #{path_stack.inspect}"
-     #puts "PARSE: nodeset = #{nodeset.inspect}"
-     first( path_stack, nodeset )
-    end
-
-    def predicate path, nodeset
-      path_stack = @parser.parse( path )
-      expr( path_stack, nodeset )
-    end
-
-    def []=( variable_name, value )
-      @variables[ variable_name ] = value
-    end
-
-
-    # Performs a depth-first (document order) XPath search, and returns the
-    # first match.  This is the fastest, lightest way to return a single result.
-    #
-    # FIXME: This method is incomplete!
-    def first( path_stack, node )
-      #puts "#{depth}) Entering match( #{path.inspect}, #{tree.inspect} )"
-      return nil if path.size == 0
-
-      case path[0]
-      when :document
-        # do nothing 
-        return first( path[1..-1], node )
-      when :child
-        for c in node.children
-          #puts "#{depth}) CHILD checking #{name(c)}"
-          r = first( path[1..-1], c )
-          #puts "#{depth}) RETURNING #{r.inspect}" if r
-          return r if r
-        end
-      when :qname
-        name = path[2]
-        #puts "#{depth}) QNAME #{name(tree)} == #{name} (path => #{path.size})"
-        if node.name == name
-          #puts "#{depth}) RETURNING #{tree.inspect}" if path.size == 3
-          return node if path.size == 3
-          return first( path[3..-1], node )
-        else
-          return nil
-        end
-      when :descendant_or_self
-        r = first( path[1..-1], node )
-        return r if r
-        for c in node.children
-          r = first( path, c )
-          return r if r
-        end
-      when :node
-        return first( path[1..-1], node )
-      when :any
-        return first( path[1..-1], node )
-      end
-      return nil
-    end
-
-
-    def match( path_stack, nodeset ) 
-      #puts "MATCH: path_stack = #{path_stack.inspect}"
-      #puts "MATCH: nodeset = #{nodeset.inspect}"
-      r = expr( path_stack, nodeset )
-      #puts "MAIN EXPR => #{r.inspect}"
-      r
-    end
-
-    private
-
-
-    # Returns a String namespace for a node, given a prefix
-    # The rules are:
-    # 
-    #  1. Use the supplied namespace mapping first.
-    #  2. If no mapping was supplied, use the context node to look up the namespace
-    def get_namespace( node, prefix )
-      if @namespaces
-        return @namespaces[prefix] || ''
-      else
-        return node.namespace( prefix ) if node.node_type == :element
-        return ''
-      end
-    end
-
-
-    # Expr takes a stack of path elements and a set of nodes (either a Parent
-    # or an Array and returns an Array of matching nodes
-    ALL = [ :attribute, :element, :text, :processing_instruction, :comment ]
-    ELEMENTS = [ :element ]
-    def expr( path_stack, nodeset, context=nil )
-      #puts "#"*15
-      #puts "In expr with #{path_stack.inspect}"
-      #puts "Returning" if path_stack.length == 0 || nodeset.length == 0
-      node_types = ELEMENTS
-      return nodeset if path_stack.length == 0 || nodeset.length == 0
-      while path_stack.length > 0
-        #puts "#"*5
-        #puts "Path stack = #{path_stack.inspect}"
-        #puts "Nodeset is #{nodeset.inspect}"
-        if nodeset.length == 0
-          path_stack.clear
-          return []
-        end
-        case (op = path_stack.shift)
-        when :document
-          nodeset = [ nodeset[0].root_node ]
-          #puts ":document, nodeset = #{nodeset.inspect}"
-
-        when :qname
-          #puts "IN QNAME"
-          prefix = path_stack.shift
-          name = path_stack.shift
-          nodeset.delete_if do |node|
-            # FIXME: This DOUBLES the time XPath searches take
-            ns = get_namespace( node, prefix )
-            #puts "NS = #{ns.inspect}"
-            #puts "node.node_type == :element => #{node.node_type == :element}"
-            if node.node_type == :element
-              #puts "node.name == #{name} => #{node.name == name}"
-              if node.name == name
-                #puts "node.namespace == #{ns.inspect} => #{node.namespace == ns}"
-              end
-            end
-            !(node.node_type == :element and 
-              node.name == name and 
-              node.namespace == ns )
-          end
-          node_types = ELEMENTS
-
-        when :any
-          #puts "ANY 1: nodeset = #{nodeset.inspect}"
-          #puts "ANY 1: node_types = #{node_types.inspect}"
-          nodeset.delete_if { |node| !node_types.include?(node.node_type) }
-          #puts "ANY 2: nodeset = #{nodeset.inspect}"
-
-        when :self
-          # This space left intentionally blank
-
-        when :processing_instruction
-          target = path_stack.shift
-          nodeset.delete_if do |node|
-            (node.node_type != :processing_instruction) or 
-            ( target!='' and ( node.target != target ) )
-          end
-
-        when :text
-          nodeset.delete_if { |node| node.node_type != :text }
-
-        when :comment
-          nodeset.delete_if { |node| node.node_type != :comment }
-
-        when :node
-          # This space left intentionally blank
-          node_types = ALL
-
-        when :child
-          new_nodeset = []
-          nt = nil
-          for node in nodeset
-            nt = node.node_type
-            new_nodeset += node.children if nt == :element or nt == :document
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :literal
-          return path_stack.shift
-        
-        when :attribute
-          new_nodeset = []
-          case path_stack.shift
-          when :qname
-            prefix = path_stack.shift
-            name = path_stack.shift
-            for element in nodeset
-              if element.node_type == :element
-                #puts "Element name = #{element.name}"
-                #puts "get_namespace( #{element.inspect}, #{prefix} ) = #{get_namespace(element, prefix)}"
-                attrib = element.attribute( name, get_namespace(element, prefix) )
-                #puts "attrib = #{attrib.inspect}"
-                new_nodeset << attrib if attrib
-              end
-            end
-          when :any
-            #puts "ANY"
-            for element in nodeset
-              if element.node_type == :element
-                new_nodeset += element.attributes.to_a
-              end
-            end
-          end
-          nodeset = new_nodeset
-
-        when :parent
-          #puts "PARENT 1: nodeset = #{nodeset}"
-          nodeset = nodeset.collect{|n| n.parent}.compact
-          #nodeset = expr(path_stack.dclone, nodeset.collect{|n| n.parent}.compact)
-          #puts "PARENT 2: nodeset = #{nodeset.inspect}"
-          node_types = ELEMENTS
-
-        when :ancestor
-          new_nodeset = []
-          for node in nodeset
-            while node.parent
-              node = node.parent
-              new_nodeset << node unless new_nodeset.include? node
-            end
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :ancestor_or_self
-          new_nodeset = []
-          for node in nodeset
-            if node.node_type == :element
-              new_nodeset << node
-              while ( node.parent )
-                node = node.parent
-                new_nodeset << node unless new_nodeset.include? node
-              end
-            end
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :predicate
-          new_nodeset = []
-          subcontext = { :size => nodeset.size }
-          pred = path_stack.shift
-          nodeset.each_with_index { |node, index|
-            subcontext[ :node ] = node
-            #puts "PREDICATE SETTING CONTEXT INDEX TO #{index+1}"
-            subcontext[ :index ] = index+1
-            pc = pred.dclone
-            #puts "#{node.hash}) Recursing with #{pred.inspect} and [#{node.inspect}]"
-            result = expr( pc, [node], subcontext )
-            result = result[0] if result.kind_of? Array and result.length == 1
-            #puts "#{node.hash}) Result = #{result.inspect} (#{result.class.name})"
-            if result.kind_of? Numeric
-              #puts "Adding node #{node.inspect}" if result == (index+1)
-              new_nodeset << node if result == (index+1)
-            elsif result.instance_of? Array
-              if result.size > 0 and result.inject(false) {|k,s| s or k}
-                #puts "Adding node #{node.inspect}" if result.size > 0
-                new_nodeset << node if result.size > 0
-              end
-            else
-              #puts "Adding node #{node.inspect}" if result
-              new_nodeset << node if result
-            end
-          }
-          #puts "New nodeset = #{new_nodeset.inspect}"
-          #puts "Path_stack  = #{path_stack.inspect}"
-          nodeset = new_nodeset
-=begin
-          predicate = path_stack.shift
-          ns = nodeset.clone
-          result = expr( predicate, ns )
-          #puts "Result = #{result.inspect} (#{result.class.name})"
-          #puts "nodeset = #{nodeset.inspect}"
-          if result.kind_of? Array
-            nodeset = result.zip(ns).collect{|m,n| n if m}.compact
-          else
-            nodeset = result ? nodeset : []
-          end
-          #puts "Outgoing NS = #{nodeset.inspect}"
-=end
-
-        when :descendant_or_self
-          rv = descendant_or_self( path_stack, nodeset )
-          path_stack.clear
-          nodeset = rv
-          node_types = ELEMENTS
-
-        when :descendant
-          results = []
-          nt = nil
-          for node in nodeset
-            nt = node.node_type
-            results += expr( path_stack.dclone.unshift( :descendant_or_self ),
-              node.children ) if nt == :element or nt == :document
-          end
-          nodeset = results
-          node_types = ELEMENTS
-
-        when :following_sibling
-          #puts "FOLLOWING_SIBLING 1: nodeset = #{nodeset}"
-          results = []
-          nodeset.each do |node|
-            next if node.parent.nil?
-            all_siblings = node.parent.children
-            current_index = all_siblings.index( node )
-            following_siblings = all_siblings[ current_index+1 .. -1 ]
-            results += expr( path_stack.dclone, following_siblings )
-          end
-          #puts "FOLLOWING_SIBLING 2: nodeset = #{nodeset}"
-          nodeset = results
-
-        when :preceding_sibling
-          results = []
-          nodeset.each do |node|
-            next if node.parent.nil?
-            all_siblings = node.parent.children
-            current_index = all_siblings.index( node )
-            preceding_siblings = all_siblings[ 0, current_index ].reverse
-            results += preceding_siblings
-          end
-          nodeset = results
-          node_types = ELEMENTS
-
-        when :preceding
-          new_nodeset = []
-          for node in nodeset
-            new_nodeset += preceding( node )
-          end
-          #puts "NEW NODESET => #{new_nodeset.inspect}"
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :following
-          new_nodeset = []
-          for node in nodeset
-            new_nodeset += following( node )
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :namespace
-          #puts "In :namespace"
-          new_nodeset = []
-          prefix = path_stack.shift
-          for node in nodeset
-            if (node.node_type == :element or node.node_type == :attribute)
-              if @namespaces
-                namespaces = @namespaces
-              elsif (node.node_type == :element)
-                namespaces = node.namespaces
-              else
-                namespaces = node.element.namesapces
-              end
-              #puts "Namespaces = #{namespaces.inspect}"
-              #puts "Prefix = #{prefix.inspect}"
-              #puts "Node.namespace = #{node.namespace}"
-              if (node.namespace == namespaces[prefix])
-                new_nodeset << node
-              end
-            end
-          end
-          nodeset = new_nodeset
-
-        when :variable
-          var_name = path_stack.shift
-          return @variables[ var_name ]
-
-        # :and, :or, :eq, :neq, :lt, :lteq, :gt, :gteq
-				# TODO: Special case for :or and :and -- not evaluate the right
-				# operand if the left alone determines result (i.e. is true for
-				# :or and false for :and).
-        when :eq, :neq, :lt, :lteq, :gt, :gteq, :and, :or
-          left = expr( path_stack.shift, nodeset.dup, context )
-          #puts "LEFT => #{left.inspect} (#{left.class.name})"
-          right = expr( path_stack.shift, nodeset.dup, context )
-          #puts "RIGHT => #{right.inspect} (#{right.class.name})"
-          res = equality_relational_compare( left, op, right )
-          #puts "RES => #{res.inspect}"
-          return res
-
-        when :and
-          left = expr( path_stack.shift, nodeset.dup, context )
-          #puts "LEFT => #{left.inspect} (#{left.class.name})"
-          if left == false || left.nil? || !left.inject(false) {|a,b| a | b}
-            return []
-          end
-          right = expr( path_stack.shift, nodeset.dup, context )
-          #puts "RIGHT => #{right.inspect} (#{right.class.name})"
-          res = equality_relational_compare( left, op, right )
-          #puts "RES => #{res.inspect}"
-          return res
-
-        when :div
-          left = Functions::number(expr(path_stack.shift, nodeset, context)).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context)).to_f
-          return (left / right)
-
-        when :mod
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left % right)
-
-        when :mult
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left * right)
-
-        when :plus
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left + right)
-
-        when :minus
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left - right)
-
-        when :union
-          left = expr( path_stack.shift, nodeset, context )
-          right = expr( path_stack.shift, nodeset, context )
-          return (left | right)
-
-        when :neg
-          res = expr( path_stack, nodeset, context )
-          return -(res.to_f)
-
-        when :not
-        when :function
-          func_name = path_stack.shift.tr('-','_')
-          arguments = path_stack.shift
-          #puts "FUNCTION 0: #{func_name}(#{arguments.collect{|a|a.inspect}.join(', ')})" 
-          subcontext = context ? nil : { :size => nodeset.size }
-
-          res = []
-          cont = context
-          nodeset.each_with_index { |n, i| 
-            if subcontext
-              subcontext[:node]  = n
-              subcontext[:index] = i
-              cont = subcontext
-            end
-            arg_clone = arguments.dclone
-            args = arg_clone.collect { |arg| 
-              #puts "FUNCTION 1: Calling expr( #{arg.inspect}, [#{n.inspect}] )"
-              expr( arg, [n], cont ) 
-            }
-            #puts "FUNCTION 2: #{func_name}(#{args.collect{|a|a.inspect}.join(', ')})" 
-            Functions.context = cont
-            res << Functions.send( func_name, *args )
-            #puts "FUNCTION 3: #{res[-1].inspect}"
-          }
-          return res
-
-        end
-      end # while
-      #puts "EXPR returning #{nodeset.inspect}"
-      return nodeset
-    end
-
-
-    ##########################################################
-    # FIXME
-    # The next two methods are BAD MOJO!
-    # This is my achilles heel.  If anybody thinks of a better
-    # way of doing this, be my guest.  This really sucks, but 
-    # it is a wonder it works at all.
-    # ########################################################
-    
-    def descendant_or_self( path_stack, nodeset )
-      rs = []
-      #puts "#"*80
-      #puts "PATH_STACK = #{path_stack.inspect}"
-      #puts "NODESET = #{nodeset.collect{|n|n.inspect}.inspect}"
-      d_o_s( path_stack, nodeset, rs )
-      #puts "RS = #{rs.collect{|n|n.inspect}.inspect}"
-      document_order(rs.flatten.compact)
-      #rs.flatten.compact
-    end
-
-    def d_o_s( p, ns, r )
-      #puts "IN DOS with #{ns.inspect}; ALREADY HAVE #{r.inspect}"
-      nt = nil
-      ns.each_index do |i|
-        n = ns[i]
-        #puts "P => #{p.inspect}"
-        x = expr( p.dclone, [ n ] )
-        nt = n.node_type
-        d_o_s( p, n.children, x ) if nt == :element or nt == :document and n.children.size > 0
-        r.concat(x) if x.size > 0
-      end
-    end
-
-
-    # Reorders an array of nodes so that they are in document order
-    # It tries to do this efficiently.
-    #
-    # FIXME: I need to get rid of this, but the issue is that most of the XPath 
-    # interpreter functions as a filter, which means that we lose context going
-    # in and out of function calls.  If I knew what the index of the nodes was,
-    # I wouldn't have to do this.  Maybe add a document IDX for each node?
-    # Problems with mutable documents.  Or, rewrite everything.
-    def document_order( array_of_nodes )
-      new_arry = []
-      array_of_nodes.each { |node|
-        node_idx = [] 
-        np = node.node_type == :attribute ? node.element : node
-        while np.parent and np.parent.node_type == :element
-          node_idx << np.parent.index( np )
-          np = np.parent
-        end
-        new_arry << [ node_idx.reverse, node ]
-      }
-      #puts "new_arry = #{new_arry.inspect}"
-      new_arry.sort{ |s1, s2| s1[0] <=> s2[0] }.collect{ |s| s[1] }
-    end
-
-
-    def recurse( nodeset, &block )
-      for node in nodeset
-        yield node
-        recurse( node, &block ) if node.node_type == :element
-      end
-    end
-
-
-
-    # Builds a nodeset of all of the preceding nodes of the supplied node,
-    # in reverse document order
-    # preceding:: includes every element in the document that precedes this node, 
-    # except for ancestors
-    def preceding( node )
-      #puts "IN PRECEDING"
-      ancestors = []
-      p = node.parent
-      while p
-        ancestors << p
-        p = p.parent
-      end
-
-      acc = []
-      p = preceding_node_of( node )
-      #puts "P = #{p.inspect}"
-      while p
-        if ancestors.include? p
-          ancestors.delete(p)
-        else
-          acc << p
-        end
-        p = preceding_node_of( p )
-        #puts "P = #{p.inspect}"
-      end
-      acc
-    end
-
-    def preceding_node_of( node )
-     #puts "NODE: #{node.inspect}"
-     #puts "PREVIOUS NODE: #{node.previous_sibling_node.inspect}"
-     #puts "PARENT NODE: #{node.parent}"
-      psn = node.previous_sibling_node 
-      if psn.nil?
-        if node.parent.nil? or node.parent.class == Document 
-          return nil
-        end
-        return node.parent
-        #psn = preceding_node_of( node.parent )
-      end
-      while psn and psn.kind_of? Element and psn.children.size > 0
-        psn = psn.children[-1]
-      end
-      psn
-    end
-
-    def following( node )
-      #puts "IN PRECEDING"
-      acc = []
-      p = next_sibling_node( node )
-      #puts "P = #{p.inspect}"
-      while p
-        acc << p
-        p = following_node_of( p )
-        #puts "P = #{p.inspect}"
-      end
-      acc
-    end
-
-    def following_node_of( node )
-      #puts "NODE: #{node.inspect}"
-      #puts "PREVIOUS NODE: #{node.previous_sibling_node.inspect}"
-      #puts "PARENT NODE: #{node.parent}"
-      if node.kind_of? Element and node.children.size > 0
-        return node.children[0]
-      end
-      return next_sibling_node(node)
-    end
-
-    def next_sibling_node(node)
-      psn = node.next_sibling_node 
-      while psn.nil?
-        if node.parent.nil? or node.parent.class == Document 
-          return nil
-        end
-        node = node.parent
-        psn = node.next_sibling_node
-        #puts "psn = #{psn.inspect}"
-      end
-      return psn
-    end
-
-    def norm b
-      case b
-      when true, false
-        return b
-      when 'true', 'false'
-        return Functions::boolean( b )
-      when /^\d+(\.\d+)?$/
-        return Functions::number( b )
-      else
-        return Functions::string( b )
-      end
-    end
-
-    def equality_relational_compare( set1, op, set2 )
-      #puts "EQ_REL_COMP(#{set1.inspect} #{op.inspect} #{set2.inspect})"
-      if set1.kind_of? Array and set2.kind_of? Array
-			  #puts "#{set1.size} & #{set2.size}"
-        if set1.size == 1 and set2.size == 1
-          set1 = set1[0]
-          set2 = set2[0]
-        elsif set1.size == 0 or set2.size == 0
-          nd = set1.size==0 ? set2 : set1
-          rv = nd.collect { |il| compare( il, op, nil ) }
-          #puts "RV = #{rv.inspect}"
-          return rv
-        else
-          res = []
-          enum = SyncEnumerator.new( set1, set2 ).each { |i1, i2|
-            #puts "i1 = #{i1.inspect} (#{i1.class.name})"
-            #puts "i2 = #{i2.inspect} (#{i2.class.name})"
-            i1 = norm( i1 )
-            i2 = norm( i2 )
-            res << compare( i1, op, i2 )
-          }
-          return res
-        end
-      end
-		  #puts "EQ_REL_COMP: #{set1.inspect} (#{set1.class.name}), #{op}, #{set2.inspect} (#{set2.class.name})"
-      #puts "COMPARING VALUES"
-      # If one is nodeset and other is number, compare number to each item
-      # in nodeset s.t. number op number(string(item))
-      # If one is nodeset and other is string, compare string to each item
-      # in nodeset s.t. string op string(item)
-      # If one is nodeset and other is boolean, compare boolean to each item
-      # in nodeset s.t. boolean op boolean(item)
-      if set1.kind_of? Array or set2.kind_of? Array
-			  #puts "ISA ARRAY"
-        if set1.kind_of? Array
-          a = set1
-          b = set2
-        else
-          a = set2
-          b = set1
-        end
-
-        case b
-        when true, false
-          return a.collect {|v| compare( Functions::boolean(v), op, b ) }
-        when Numeric
-          return a.collect {|v| compare( Functions::number(v), op, b )}
-        when /^\d+(\.\d+)?$/
-          b = Functions::number( b )
-          #puts "B = #{b.inspect}"
-          return a.collect {|v| compare( Functions::number(v), op, b )}
-        else
-				  #puts "Functions::string( #{b}(#{b.class.name}) ) = #{Functions::string(b)}"
-          b = Functions::string( b )
-          return a.collect { |v| compare( Functions::string(v), op, b ) }
-        end
-      else
-        # If neither is nodeset,
-        #   If op is = or !=
-        #     If either boolean, convert to boolean
-        #     If either number, convert to number
-        #     Else, convert to string
-        #   Else
-        #     Convert both to numbers and compare
-        s1 = set1.to_s
-        s2 = set2.to_s
-        #puts "EQ_REL_COMP: #{set1}=>#{s1}, #{set2}=>#{s2}"
-        if s1 == 'true' or s1 == 'false' or s2 == 'true' or s2 == 'false'
-          #puts "Functions::boolean(#{set1})=>#{Functions::boolean(set1)}"
-          #puts "Functions::boolean(#{set2})=>#{Functions::boolean(set2)}"
-          set1 = Functions::boolean( set1 )
-          set2 = Functions::boolean( set2 )
-        else
-          if op == :eq or op == :neq
-            if s1 =~ /^\d+(\.\d+)?$/ or s2 =~ /^\d+(\.\d+)?$/
-              set1 = Functions::number( s1 )
-              set2 = Functions::number( s2 )
-            else
-              set1 = Functions::string( set1 )
-              set2 = Functions::string( set2 )
-            end
-          else
-            set1 = Functions::number( set1 )
-            set2 = Functions::number( set2 )
-          end
-        end
-        #puts "EQ_REL_COMP: #{set1} #{op} #{set2}"
-        #puts ">>> #{compare( set1, op, set2 )}"
-        return compare( set1, op, set2 )
-      end
-      return false
-    end
-
-    def compare a, op, b
-      #puts "COMPARE #{a.inspect}(#{a.class.name}) #{op} #{b.inspect}(#{b.class.name})"
-      case op
-      when :eq
-        a == b
-      when :neq
-        a != b
-      when :lt
-        a < b
-      when :lteq
-        a <= b
-      when :gt
-        a > b
-      when :gteq
-        a >= b
-      when :and
-        a and b
-      when :or
-        a or b
-      else
-        false
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/rinda.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/rinda.rb
deleted file mode 100644
index 6c59e68..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/rinda.rb
+++ /dev/null
@@ -1,283 +0,0 @@
-require 'drb/drb'
-require 'thread'
-
-##
-# A module to implement the Linda distributed computing paradigm in Ruby.
-#
-# Rinda is part of DRb (dRuby).
-#
-# == Example(s)
-#
-# See the sample/drb/ directory in the Ruby distribution, from 1.8.2 onwards.
-#
-#--
-# TODO
-# == Introduction to Linda/rinda?
-#
-# == Why is this library separate from DRb?
-
-module Rinda
-
-  ##
-  # Rinda error base class
-
-  class RindaError < RuntimeError; end
-
-  ##
-  # Raised when a hash-based tuple has an invalid key.
-
-  class InvalidHashTupleKey < RindaError; end
-
-  ##
-  # Raised when trying to use a canceled tuple.
-
-  class RequestCanceledError < ThreadError; end
-
-  ##
-  # Raised when trying to use an expired tuple.
-
-  class RequestExpiredError < ThreadError; end
-
-  ##
-  # A tuple is the elementary object in Rinda programming.
-  # Tuples may be matched against templates if the tuple and
-  # the template are the same size.
-
-  class Tuple
-
-    ##
-    # Creates a new Tuple from +ary_or_hash+ which must be an Array or Hash.
-
-    def initialize(ary_or_hash)
-      if hash?(ary_or_hash)
-        init_with_hash(ary_or_hash)
-      else
-        init_with_ary(ary_or_hash)
-      end
-    end
-
-    ##
-    # The number of elements in the tuple.
-    
-    def size
-      @tuple.size
-    end
-
-    ##
-    # Accessor method for elements of the tuple.
-
-    def [](k)
-      @tuple[k]
-    end
-
-    ##
-    # Fetches item +k+ from the tuple.
-
-    def fetch(k)
-      @tuple.fetch(k)
-    end
-
-    ##
-    # Iterate through the tuple, yielding the index or key, and the
-    # value, thus ensuring arrays are iterated similarly to hashes.
-
-    def each # FIXME
-      if Hash === @tuple
-        @tuple.each { |k, v| yield(k, v) }
-      else
-        @tuple.each_with_index { |v, k| yield(k, v) }
-      end
-    end
-
-    ##
-    # Return the tuple itself
-    def value
-      @tuple
-    end
-
-    private
-
-    def hash?(ary_or_hash)
-      ary_or_hash.respond_to?(:keys)
-    end
-
-    ##
-    # Munges +ary+ into a valid Tuple.
-
-    def init_with_ary(ary)
-      @tuple = Array.new(ary.size)
-      @tuple.size.times do |i|
-        @tuple[i] = ary[i]
-      end
-    end
-
-    ##
-    # Ensures +hash+ is a valid Tuple.
-
-    def init_with_hash(hash)
-      @tuple = Hash.new
-      hash.each do |k, v|
-        raise InvalidHashTupleKey unless String === k
-        @tuple[k] = v
-      end
-    end
-
-  end
-
-  ##
-  # Templates are used to match tuples in Rinda.
-
-  class Template < Tuple
-
-    ##
-    # Matches this template against +tuple+.  The +tuple+ must be the same
-    # size as the template.  An element with a +nil+ value in a template acts
-    # as a wildcard, matching any value in the corresponding position in the
-    # tuple.  Elements of the template match the +tuple+ if the are #== or
-    # #===.
-    #
-    #   Template.new([:foo, 5]).match   Tuple.new([:foo, 5]) # => true
-    #   Template.new([:foo, nil]).match Tuple.new([:foo, 5]) # => true
-    #   Template.new([String]).match    Tuple.new(['hello']) # => true
-    #
-    #   Template.new([:foo]).match      Tuple.new([:foo, 5]) # => false
-    #   Template.new([:foo, 6]).match   Tuple.new([:foo, 5]) # => false
-    #   Template.new([:foo, nil]).match Tuple.new([:foo])    # => false
-    #   Template.new([:foo, 6]).match   Tuple.new([:foo])    # => false
-
-    def match(tuple)
-      return false unless tuple.respond_to?(:size)
-      return false unless tuple.respond_to?(:fetch)
-      return false unless self.size == tuple.size
-      each do |k, v|
-        begin
-          it = tuple.fetch(k)
-        rescue
-          return false
-        end
-        next if v.nil?
-        next if v == it
-        next if v === it
-        return false
-      end
-      return true
-    end
-    
-    ##
-    # Alias for #match.
-
-    def ===(tuple)
-      match(tuple)
-    end
-
-  end
-  
-  ##
-  # <i>Documentation?</i>
-
-  class DRbObjectTemplate
-
-    ##
-    # Creates a new DRbObjectTemplate that will match against +uri+ and +ref+.
-
-    def initialize(uri=nil, ref=nil)
-      @drb_uri = uri
-      @drb_ref = ref
-    end
-    
-    ##
-    # This DRbObjectTemplate matches +ro+ if the remote object's drburi and
-    # drbref are the same.  +nil+ is used as a wildcard.
-
-    def ===(ro)
-      return true if super(ro)
-      unless @drb_uri.nil?
-        return false unless (@drb_uri === ro.__drburi rescue false)
-      end
-      unless @drb_ref.nil?
-        return false unless (@drb_ref === ro.__drbref rescue false)
-      end
-      true
-    end
-
-  end
-
-  ##
-  # TupleSpaceProxy allows a remote Tuplespace to appear as local.
-
-  class TupleSpaceProxy
-
-    ##
-    # Creates a new TupleSpaceProxy to wrap +ts+.
-
-    def initialize(ts)
-      @ts = ts
-    end
-    
-    ##
-    # Adds +tuple+ to the proxied TupleSpace.  See TupleSpace#write.
-
-    def write(tuple, sec=nil)
-      @ts.write(tuple, sec)
-    end
-    
-    ##
-    # Takes +tuple+ from the proxied TupleSpace.  See TupleSpace#take.
-
-    def take(tuple, sec=nil, &block)
-      port = []
-      @ts.move(DRbObject.new(port), tuple, sec, &block)
-      port[0]
-    end
-    
-    ##
-    # Reads +tuple+ from the proxied TupleSpace.  See TupleSpace#read.
-
-    def read(tuple, sec=nil, &block)
-      @ts.read(tuple, sec, &block)
-    end
-    
-    ##
-    # Reads all tuples matching +tuple+ from the proxied TupleSpace.  See
-    # TupleSpace#read_all.
-
-    def read_all(tuple)
-      @ts.read_all(tuple)
-    end
-    
-    ##
-    # Registers for notifications of event +ev+ on the proxied TupleSpace.
-    # See TupleSpace#notify
-
-    def notify(ev, tuple, sec=nil)
-      @ts.notify(ev, tuple, sec)
-    end
-
-  end
-
-  ##
-  # An SimpleRenewer allows a TupleSpace to check if a TupleEntry is still
-  # alive.
-
-  class SimpleRenewer
-
-    include DRbUndumped
-
-    ##
-    # Creates a new SimpleRenewer that keeps an object alive for another +sec+
-    # seconds.
-
-    def initialize(sec=180)
-      @sec = sec
-    end
-
-    ##
-    # Called by the TupleSpace to check if the object is still alive.
-
-    def renew
-      @sec
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/ring.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/ring.rb
deleted file mode 100644
index ac8a716..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/ring.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-#
-# Note: Rinda::Ring API is unstable.
-#
-require 'drb/drb'
-require 'rinda/rinda'
-require 'thread'
-
-module Rinda
-
-  ##
-  # The default port Ring discovery will use.
-
-  Ring_PORT = 7647
-
-  ##
-  # A RingServer allows a Rinda::TupleSpace to be located via UDP broadcasts.
-  # Service location uses the following steps:
-  #
-  # 1. A RingServer begins listening on the broadcast UDP address.
-  # 2. A RingFinger sends a UDP packet containing the DRb URI where it will
-  #    listen for a reply.
-  # 3. The RingServer recieves the UDP packet and connects back to the
-  #    provided DRb URI with the DRb service.
-
-  class RingServer
-
-    include DRbUndumped
-
-    ##
-    # Advertises +ts+ on the UDP broadcast address at +port+.
-
-    def initialize(ts, port=Ring_PORT)
-      @ts = ts
-      @soc = UDPSocket.open
-      @soc.bind('', port)
-      @w_service = write_service
-      @r_service = reply_service
-    end
-
-    ##
-    # Creates a thread that picks up UDP packets and passes them to do_write
-    # for decoding.
-
-    def write_service
-      Thread.new do
-	loop do
-	  msg = @soc.recv(1024)
-	  do_write(msg)
-	end
-      end
-    end
-  
-    ##
-    # Extracts the response URI from +msg+ and adds it to TupleSpace where it
-    # will be picked up by +reply_service+ for notification.
-
-    def do_write(msg)
-      Thread.new do
-	begin
-	  tuple, sec = Marshal.load(msg)
-	  @ts.write(tuple, sec)
-	rescue
-	end
-      end
-    end
-
-    ##
-    # Creates a thread that notifies waiting clients from the TupleSpace.
-
-    def reply_service
-      Thread.new do
-	loop do
-	  do_reply
-	end
-      end
-    end
-    
-    ##
-    # Pulls lookup tuples out of the TupleSpace and sends their DRb object the
-    # address of the local TupleSpace.
-
-    def do_reply
-      tuple = @ts.take([:lookup_ring, nil])
-      Thread.new { tuple[1].call(@ts) rescue nil}
-    rescue
-    end
-
-  end
-
-  ##
-  # RingFinger is used by RingServer clients to discover the RingServer's
-  # TupleSpace.  Typically, all a client needs to do is call
-  # RingFinger.primary to retrieve the remote TupleSpace, which it can then
-  # begin using.
-
-  class RingFinger
-
-    @@broadcast_list = ['<broadcast>', 'localhost']
-
-    @@finger = nil
-
-    ##
-    # Creates a singleton RingFinger and looks for a RingServer.  Returns the
-    # created RingFinger.
-
-    def self.finger
-      unless @@finger 
-	@@finger = self.new
-	@@finger.lookup_ring_any
-      end
-      @@finger
-    end
-
-    ##
-    # Returns the first advertised TupleSpace.
-
-    def self.primary
-      finger.primary
-    end
-
-    ##
-    # Contains all discoverd TupleSpaces except for the primary.
-
-    def self.to_a
-      finger.to_a
-    end
-
-    ##
-    # The list of addresses where RingFinger will send query packets.
-
-    attr_accessor :broadcast_list
-
-    ##
-    # The port that RingFinger will send query packets to.
-
-    attr_accessor :port
-
-    ##
-    # Contain the first advertised TupleSpace after lookup_ring_any is called.
-
-    attr_accessor :primary
-
-    ##
-    # Creates a new RingFinger that will look for RingServers at +port+ on
-    # the addresses in +broadcast_list+.
-
-    def initialize(broadcast_list=@@broadcast_list, port=Ring_PORT)
-      @broadcast_list = broadcast_list || ['localhost']
-      @port = port
-      @primary = nil
-      @rings = []
-    end
-
-    ##
-    # Contains all discovered TupleSpaces except for the primary.
-
-    def to_a
-      @rings
-    end
-
-    ##
-    # Iterates over all discovered TupleSpaces starting with the primary.
-
-    def each
-      lookup_ring_any unless @primary
-      return unless @primary
-      yield(@primary)
-      @rings.each { |x| yield(x) }
-    end
-
-    ##
-    # Looks up RingServers waiting +timeout+ seconds.  RingServers will be
-    # given +block+ as a callback, which will be called with the remote
-    # TupleSpace.
-
-    def lookup_ring(timeout=5, &block)
-      return lookup_ring_any(timeout) unless block_given?
-
-      msg = Marshal.dump([[:lookup_ring, DRbObject.new(block)], timeout])
-      @broadcast_list.each do |it|
-	soc = UDPSocket.open
-	begin
-	  soc.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
-	  soc.send(msg, 0, it, @port)
-	rescue
-	  nil
-	ensure
-	  soc.close
-	end
-      end
-      sleep(timeout)
-    end
-
-    ##
-    # Returns the first found remote TupleSpace.  Any further recovered
-    # TupleSpaces can be found by calling +to_a+.
-
-    def lookup_ring_any(timeout=5)
-      queue = Queue.new
-
-      th = Thread.new do
-	self.lookup_ring(timeout) do |ts|
-	  queue.push(ts)
-	end
-	queue.push(nil)
-	while it = queue.pop
-	  @rings.push(it)
-	end
-      end
-      
-      @primary = queue.pop
-      raise('RingNotFound') if @primary.nil?
-      @primary
-    end
-
-  end
-
-  ##
-  # RingProvider uses a RingServer advertised TupleSpace as a name service.
-  # TupleSpace clients can register themselves with the remote TupleSpace and
-  # look up other provided services via the remote TupleSpace.
-  #
-  # Services are registered with a tuple of the format [:name, klass,
-  # DRbObject, description].
-
-  class RingProvider
-
-    ##
-    # Creates a RingProvider that will provide a +klass+ service running on
-    # +front+, with a +description+.  +renewer+ is optional.
-
-    def initialize(klass, front, desc, renewer = nil)
-      @tuple = [:name, klass, front, desc]
-      @renewer = renewer || Rinda::SimpleRenewer.new
-    end
-
-    ##
-    # Advertises this service on the primary remote TupleSpace.
-
-    def provide
-      ts = Rinda::RingFinger.primary
-      ts.write(@tuple, @renewer)
-    end
-
-  end
-
-end
-
-if __FILE__ == $0
-  DRb.start_service
-  case ARGV.shift
-  when 's'
-    require 'rinda/tuplespace'
-    ts = Rinda::TupleSpace.new
-    place = Rinda::RingServer.new(ts)
-    $stdin.gets
-  when 'w'
-    finger = Rinda::RingFinger.new(nil)
-    finger.lookup_ring do |ts|
-      p ts
-      ts.write([:hello, :world])
-    end
-  when 'r'
-    finger = Rinda::RingFinger.new(nil)
-    finger.lookup_ring do |ts|
-      p ts
-      p ts.take([nil, nil])
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/tuplespace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/tuplespace.rb
deleted file mode 100644
index 6d58a0f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rinda/tuplespace.rb
+++ /dev/null
@@ -1,592 +0,0 @@
-require 'monitor'
-require 'thread'
-require 'drb/drb'
-require 'rinda/rinda'
-
-module Rinda
-
-  ##
-  # A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace)
-  # together with expiry and cancellation data.
-
-  class TupleEntry
-
-    include DRbUndumped
-
-    attr_accessor :expires
-
-    ##
-    # Creates a TupleEntry based on +ary+ with an optional renewer or expiry
-    # time +sec+.
-    #
-    # A renewer must implement the +renew+ method which returns a Numeric,
-    # nil, or true to indicate when the tuple has expired.
-
-    def initialize(ary, sec=nil)
-      @cancel = false
-      @expires = nil
-      @tuple = make_tuple(ary)
-      @renewer = nil
-      renew(sec)
-    end
-
-    ##
-    # Marks this TupleEntry as canceled.
-
-    def cancel
-      @cancel = true
-    end
-
-    ##
-    # A TupleEntry is dead when it is canceled or expired.
-
-    def alive?
-      !canceled? && !expired?
-    end
-
-    ##
-    # Return the object which makes up the tuple itself: the Array
-    # or Hash.
-
-    def value; @tuple.value; end
-
-    ##
-    # Returns the canceled status.
-
-    def canceled?; @cancel; end
-
-    ##
-    # Has this tuple expired? (true/false).
-    #
-    # A tuple has expired when its expiry timer based on the +sec+ argument to
-    # #initialize runs out.
-
-    def expired?
-      return true unless @expires
-      return false if @expires > Time.now
-      return true if @renewer.nil?
-      renew(@renewer)
-      return true unless @expires
-      return @expires < Time.now
-    end
-
-    ##
-    # Reset the expiry time according to +sec_or_renewer+.  
-    #
-    # +nil+::    it is set to expire in the far future.
-    # +false+::  it has expired.
-    # Numeric::  it will expire in that many seconds.
-    #
-    # Otherwise the argument refers to some kind of renewer object
-    # which will reset its expiry time. 
-
-    def renew(sec_or_renewer)
-      sec, @renewer = get_renewer(sec_or_renewer)
-      @expires = make_expires(sec)
-    end
-
-    ##
-    # Returns an expiry Time based on +sec+ which can be one of:
-    # Numeric:: +sec+ seconds into the future
-    # +true+::  the expiry time is the start of 1970 (i.e. expired)
-    # +nil+::   it is  Tue Jan 19 03:14:07 GMT Standard Time 2038 (i.e. when
-    #           UNIX clocks will die)
-
-    def make_expires(sec=nil)
-      case sec
-      when Numeric
-        Time.now + sec
-      when true
-        Time.at(1)
-      when nil
-        Time.at(2**31-1)
-      end
-    end
-
-    ##
-    # Retrieves +key+ from the tuple.
-
-    def [](key)
-      @tuple[key]
-    end
-
-    ##
-    # Fetches +key+ from the tuple.
-
-    def fetch(key)
-      @tuple.fetch(key)
-    end
-
-    ##
-    # The size of the tuple.
-
-    def size
-      @tuple.size
-    end
-
-    ##
-    # Creates a Rinda::Tuple for +ary+.
-
-    def make_tuple(ary)
-      Rinda::Tuple.new(ary)
-    end
-
-    private
-
-    ##
-    # Returns a valid argument to make_expires and the renewer or nil.
-    #
-    # Given +true+, +nil+, or Numeric, returns that value and +nil+ (no actual
-    # renewer).  Otherwise it returns an expiry value from calling +it.renew+
-    # and the renewer.
-
-    def get_renewer(it)
-      case it
-      when Numeric, true, nil
-        return it, nil
-      else
-        begin
-          return it.renew, it
-        rescue Exception
-          return it, nil
-        end
-      end
-    end
-
-  end
-
-  ##
-  # A TemplateEntry is a Template together with expiry and cancellation data.
-
-  class TemplateEntry < TupleEntry
-    ##
-    # Matches this TemplateEntry against +tuple+.  See Template#match for
-    # details on how a Template matches a Tuple.
-
-    def match(tuple)
-      @tuple.match(tuple)
-    end
-    
-    alias === match
-
-    def make_tuple(ary) # :nodoc:
-      Rinda::Template.new(ary)
-    end
-
-  end
-
-  ##
-  # <i>Documentation?</i>
-
-  class WaitTemplateEntry < TemplateEntry
-
-    attr_reader :found
-
-    def initialize(place, ary, expires=nil)
-      super(ary, expires)
-      @place = place
-      @cond = place.new_cond
-      @found = nil
-    end
-
-    def cancel
-      super
-      signal
-    end
-
-    def wait
-      @cond.wait
-    end
-
-    def read(tuple)
-      @found = tuple
-      signal
-    end
-
-    def signal
-      @place.synchronize do
-        @cond.signal
-      end
-    end
-
-  end
-
-  ##
-  # A NotifyTemplateEntry is returned by TupleSpace#notify and is notified of
-  # TupleSpace changes.  You may receive either your subscribed event or the
-  # 'close' event when iterating over notifications.
-  #
-  # See TupleSpace#notify_event for valid notification types.
-  #
-  # == Example
-  #
-  #   ts = Rinda::TupleSpace.new
-  #   observer = ts.notify 'write', [nil]
-  #   
-  #   Thread.start do
-  #     observer.each { |t| p t }
-  #   end
-  #   
-  #   3.times { |i| ts.write [i] }
-  #
-  # Outputs:
-  #
-  #   ['write', [0]]
-  #   ['write', [1]]
-  #   ['write', [2]]
-
-  class NotifyTemplateEntry < TemplateEntry
-
-    ##
-    # Creates a new NotifyTemplateEntry that watches +place+ for +event+s that
-    # match +tuple+.
-
-    def initialize(place, event, tuple, expires=nil)
-      ary = [event, Rinda::Template.new(tuple)]
-      super(ary, expires)
-      @queue = Queue.new
-      @done = false
-    end
-
-    ##
-    # Called by TupleSpace to notify this NotifyTemplateEntry of a new event.
-
-    def notify(ev)
-      @queue.push(ev)
-    end
-
-    ##
-    # Retrieves a notification.  Raises RequestExpiredError when this
-    # NotifyTemplateEntry expires.
-
-    def pop
-      raise RequestExpiredError if @done
-      it = @queue.pop
-      @done = true if it[0] == 'close'
-      return it
-    end
-
-    ##
-    # Yields event/tuple pairs until this NotifyTemplateEntry expires.
-
-    def each # :yields: event, tuple
-      while !@done
-        it = pop
-        yield(it)
-      end
-    rescue 
-    ensure
-      cancel
-    end
-
-  end
-
-  ##
-  # TupleBag is an unordered collection of tuples. It is the basis
-  # of Tuplespace.
-
-  class TupleBag
-
-    def initialize # :nodoc:
-      @hash = {}
-    end
-
-    ##
-    # +true+ if the TupleBag to see if it has any expired entries.
-
-    def has_expires?
-      @hash.each do |k, v|
-        v.each do |tuple|
-          return true if tuple.expires
-        end
-      end
-      false
-    end
-
-    ##
-    # Add +ary+ to the TupleBag.
-
-    def push(ary)
-      size = ary.size
-      @hash[size] ||= []
-      @hash[size].push(ary)
-    end
-
-    ##
-    # Removes +ary+ from the TupleBag.
-
-    def delete(ary)
-      size = ary.size
-      @hash.fetch(size, []).delete(ary)
-    end
-
-    ##
-    # Finds all live tuples that match +template+.
-
-    def find_all(template)
-      @hash.fetch(template.size, []).find_all do |tuple|
-        tuple.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Finds a live tuple that matches +template+.
-
-    def find(template)
-      @hash.fetch(template.size, []).find do |tuple|
-        tuple.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Finds all tuples in the TupleBag which when treated as templates, match
-    # +tuple+ and are alive.
-
-    def find_all_template(tuple)
-      @hash.fetch(tuple.size, []).find_all do |template|
-        template.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Delete tuples which dead tuples from the TupleBag, returning the deleted
-    # tuples.
-
-    def delete_unless_alive
-      deleted = []
-      @hash.keys.each do |size|
-        ary = []
-        @hash[size].each do |tuple|
-          if tuple.alive?
-            ary.push(tuple)
-          else
-            deleted.push(tuple)
-          end
-        end
-        @hash[size] = ary
-      end
-      deleted
-    end
-
-  end
-
-  ##
-  # The Tuplespace manages access to the tuples it contains,
-  # ensuring mutual exclusion requirements are met.
-  #
-  # The +sec+ option for the write, take, move, read and notify methods may
-  # either be a number of seconds or a Renewer object.
-
-  class TupleSpace
-
-    include DRbUndumped
-    include MonitorMixin
-
-    ##
-    # Creates a new TupleSpace.  +period+ is used to control how often to look
-    # for dead tuples after modifications to the TupleSpace.
-    #
-    # If no dead tuples are found +period+ seconds after the last
-    # modification, the TupleSpace will stop looking for dead tuples.
-
-    def initialize(period=60)
-      super()
-      @bag = TupleBag.new
-      @read_waiter = TupleBag.new
-      @take_waiter = TupleBag.new
-      @notify_waiter = TupleBag.new
-      @period = period
-      @keeper = nil
-    end
-
-    ##
-    # Adds +tuple+
-
-    def write(tuple, sec=nil)
-      entry = TupleEntry.new(tuple, sec)
-      synchronize do
-        if entry.expired?
-          @read_waiter.find_all_template(entry).each do |template|
-            template.read(tuple)
-          end
-          notify_event('write', entry.value)
-          notify_event('delete', entry.value)
-        else
-          @bag.push(entry)
-          start_keeper if entry.expires
-          @read_waiter.find_all_template(entry).each do |template|
-            template.read(tuple)
-          end
-          @take_waiter.find_all_template(entry).each do |template|
-            template.signal
-          end
-          notify_event('write', entry.value)
-        end
-      end
-      entry
-    end
-
-    ##
-    # Removes +tuple+
-
-    def take(tuple, sec=nil, &block)
-      move(nil, tuple, sec, &block)
-    end
-
-    ##
-    # Moves +tuple+ to +port+.
-
-    def move(port, tuple, sec=nil)
-      template = WaitTemplateEntry.new(self, tuple, sec)
-      yield(template) if block_given?
-      synchronize do
-        entry = @bag.find(template)
-        if entry
-          port.push(entry.value) if port
-          @bag.delete(entry)
-          notify_event('take', entry.value)
-          return entry.value
-        end
-        raise RequestExpiredError if template.expired?
-
-        begin
-          @take_waiter.push(template)
-          start_keeper if template.expires
-          while true
-            raise RequestCanceledError if template.canceled?
-            raise RequestExpiredError if template.expired?
-            entry = @bag.find(template)
-            if entry
-              port.push(entry.value) if port
-              @bag.delete(entry)
-              notify_event('take', entry.value)
-              return entry.value
-            end
-            template.wait
-          end
-        ensure
-          @take_waiter.delete(template)
-        end
-      end
-    end
-
-    ##
-    # Reads +tuple+, but does not remove it.
-
-    def read(tuple, sec=nil)
-      template = WaitTemplateEntry.new(self, tuple, sec)
-      yield(template) if block_given?
-      synchronize do
-        entry = @bag.find(template)
-        return entry.value if entry
-        raise RequestExpiredError if template.expired?
-
-        begin
-          @read_waiter.push(template)
-          start_keeper if template.expires
-          template.wait
-          raise RequestCanceledError if template.canceled?
-          raise RequestExpiredError if template.expired?
-          return template.found
-        ensure
-          @read_waiter.delete(template)
-        end
-      end
-    end
-
-    ##
-    # Returns all tuples matching +tuple+.  Does not remove the found tuples.
-
-    def read_all(tuple)
-      template = WaitTemplateEntry.new(self, tuple, nil)
-      synchronize do
-        entry = @bag.find_all(template)
-        entry.collect do |e|
-          e.value
-        end
-      end
-    end
-
-    ##
-    # Registers for notifications of +event+.  Returns a NotifyTemplateEntry.
-    # See NotifyTemplateEntry for examples of how to listen for notifications.
-    #
-    # +event+ can be:
-    # 'write'::  A tuple was added
-    # 'take'::   A tuple was taken or moved
-    # 'delete':: A tuple was lost after being overwritten or expiring
-    #
-    # The TupleSpace will also notify you of the 'close' event when the
-    # NotifyTemplateEntry has expired.
-
-    def notify(event, tuple, sec=nil)
-      template = NotifyTemplateEntry.new(self, event, tuple, sec)
-      synchronize do
-        @notify_waiter.push(template)
-      end
-      template
-    end
-
-    private
-
-    ##
-    # Removes dead tuples.
-
-    def keep_clean
-      synchronize do
-        @read_waiter.delete_unless_alive.each do |e|
-          e.signal
-        end
-        @take_waiter.delete_unless_alive.each do |e|
-          e.signal
-        end
-        @notify_waiter.delete_unless_alive.each do |e|
-          e.notify(['close'])
-        end
-        @bag.delete_unless_alive.each do |e|
-          notify_event('delete', e.value)
-        end
-      end
-    end
-
-    ##
-    # Notifies all registered listeners for +event+ of a status change of
-    # +tuple+.
-
-    def notify_event(event, tuple)
-      ev = [event, tuple]
-      @notify_waiter.find_all_template(ev).each do |template|
-        template.notify(ev)
-      end
-    end
-
-    ##
-    # Creates a thread that scans the tuplespace for expired tuples.
-
-    def start_keeper
-      return if @keeper && @keeper.alive?
-      @keeper = Thread.new do
-        while true
-          synchronize do
-            break unless need_keeper?
-            keep_clean
-          end
-          sleep(@period)
-        end
-      end
-    end
-
-    ##
-    # Checks the tuplespace to see if it needs cleaning.
-
-    def need_keeper?
-      return true if @bag.has_expires?
-      return true if @read_waiter.has_expires?
-      return true if @take_waiter.has_expires?
-      return true if @notify_waiter.has_expires?
-    end
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss.rb
deleted file mode 100644
index 495edb1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2003-2005 Kouhei Sutou.  You can redistribute it and/or
-# modify it under the same terms as Ruby.
-#
-# Author:: Kouhei Sutou <kou at cozmixng.org>
-# Tutorial:: http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3ATutorial.en
-
-require 'rss/1.0'
-require 'rss/2.0'
-require 'rss/content'
-require 'rss/dublincore'
-require 'rss/image'
-require 'rss/syndication'
-#require 'rss/taxonomy'
-require 'rss/trackback'
-
-require "rss/maker"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/0.9.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/0.9.rb
deleted file mode 100644
index 69e01dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/0.9.rb
+++ /dev/null
@@ -1,422 +0,0 @@
-require "rss/parser"
-
-module RSS
-
-  module RSS09
-    NSPOOL = {}
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-      
-      klass.install_must_call_validator('', "")
-    end
-  end
-
-  class Rss < Element
-
-    include RSS09
-    include RootElementMixin
-
-    %w(channel).each do |name|
-      install_have_child_element(name, "", nil)
-    end
-
-    attr_accessor :rss_version, :version, :encoding, :standalone
-    
-    def initialize(rss_version, version=nil, encoding=nil, standalone=nil)
-      super
-    end
-
-    def items
-      if @channel
-        @channel.items
-      else
-        []
-      end
-    end
-
-    def image
-      if @channel
-        @channel.image
-      else
-        nil
-      end
-    end
-
-    def textinput
-      if @channel
-        @channel.textInput
-      else
-        nil
-      end
-    end
-
-    def setup_maker_elements(maker)
-      super
-      items.each do |item|
-        item.setup_maker(maker.items)
-      end
-    end
-
-    private
-    def _attrs
-      [
-        ["version", true, "rss_version"],
-      ]
-    end
-
-    class Channel < Element
-
-      include RSS09
-
-      [
-        ["title", nil, :text],
-        ["link", nil, :text],
-        ["description", nil, :text],
-        ["language", nil, :text],
-        ["copyright", "?", :text],
-        ["managingEditor", "?", :text],
-        ["webMaster", "?", :text],
-        ["rating", "?", :text],
-        ["pubDate", "?", :date, :rfc822],
-        ["lastBuildDate", "?", :date, :rfc822],
-        ["docs", "?", :text],
-        ["cloud", "?", :have_attribute],
-        ["skipDays", "?", :have_child],
-        ["skipHours", "?", :have_child],
-        ["image", nil, :have_child],
-        ["item", "*", :have_children],
-        ["textInput", "?", :have_child],
-      ].each do |name, occurs, type, *args|
-        __send__("install_#{type}_element", name, "", occurs, name, *args)
-      end
-      alias date pubDate
-      alias date= pubDate=
-
-      private
-      def maker_target(maker)
-        maker.channel
-      end
-
-      def setup_maker_elements(channel)
-        super
-        [
-          [skipDays, "day"],
-          [skipHours, "hour"],
-        ].each do |skip, key|
-          if skip
-            skip.__send__("#{key}s").each do |val|
-              target_skips = channel.__send__("skip#{key.capitalize}s")
-              new_target = target_skips.__send__("new_#{key}")
-              new_target.content = val.content
-            end
-          end
-        end
-      end
-
-      def not_need_to_call_setup_maker_variables
-        %w(image textInput)
-      end
-    
-      class SkipDays < Element
-        include RSS09
-
-        [
-          ["day", "*"]
-        ].each do |name, occurs|
-          install_have_children_element(name, "", occurs)
-        end
-
-        class Day < Element
-          include RSS09
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-      
-        end
-        
-      end
-      
-      class SkipHours < Element
-        include RSS09
-
-        [
-          ["hour", "*"]
-        ].each do |name, occurs|
-          install_have_children_element(name, "", occurs)
-        end
-
-        class Hour < Element
-          include RSS09
-
-          content_setup(:integer)
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-        end
-        
-      end
-      
-      class Image < Element
-
-        include RSS09
-        
-        %w(url title link).each do |name|
-          install_text_element(name, "", nil)
-        end
-        [
-          ["width", :integer],
-          ["height", :integer],
-          ["description"],
-        ].each do |name, type|
-          install_text_element(name, "", "?", name, type)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.url = args[0]
-            self.title = args[1]
-            self.link = args[2]
-            self.width = args[3]
-            self.height = args[4]
-            self.description = args[5]
-          end
-        end
-
-        private
-        def maker_target(maker)
-          maker.image
-        end
-      end
-
-      class Cloud < Element
-
-        include RSS09
-
-        [
-          ["domain", "", true],
-          ["port", "", true, :integer],
-          ["path", "", true],
-          ["registerProcedure", "", true],
-          ["protocol", "", true],
-        ].each do |name, uri, required, type|
-          install_get_attribute(name, uri, required, type)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.domain = args[0]
-            self.port = args[1]
-            self.path = args[2]
-            self.registerProcedure = args[3]
-            self.protocol = args[4]
-          end
-        end
-      end
-      
-      class Item < Element
-        
-        include RSS09
-
-        [
-          ["title", '?', :text],
-          ["link", '?', :text],
-          ["description", '?', :text],
-          ["category", '*', :have_children, "categories"],
-          ["source", '?', :have_child],
-          ["enclosure", '?', :have_child],
-        ].each do |tag, occurs, type, *args|
-          __send__("install_#{type}_element", tag, "", occurs, tag, *args)
-        end
-
-        private
-        def maker_target(items)
-          if items.respond_to?("items")
-            # For backward compatibility
-            items = items.items
-          end
-          items.new_item
-        end
-
-        def setup_maker_element(item)
-          super
-          @enclosure.setup_maker(item) if @enclosure
-          @source.setup_maker(item) if @source
-        end
-        
-        class Source < Element
-
-          include RSS09
-
-          [
-            ["url", "", true]
-          ].each do |name, uri, required|
-            install_get_attribute(name, uri, required)
-          end
-          
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.url = args[0]
-              self.content = args[1]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.source
-          end
-
-          def setup_maker_attributes(source)
-            source.url = url
-            source.content = content
-          end
-        end
-
-        class Enclosure < Element
-
-          include RSS09
-
-          [
-            ["url", "", true],
-            ["length", "", true, :integer],
-            ["type", "", true],
-          ].each do |name, uri, required, type|
-            install_get_attribute(name, uri, required, type)
-          end
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.url = args[0]
-              self.length = args[1]
-              self.type = args[2]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.enclosure
-          end
-
-          def setup_maker_attributes(enclosure)
-            enclosure.url = url
-            enclosure.length = length
-            enclosure.type = type
-          end
-        end
-
-        class Category < Element
-
-          include RSS09
-          
-          [
-            ["domain", "", false]
-          ].each do |name, uri, required|
-            install_get_attribute(name, uri, required)
-          end
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.domain = args[0]
-              self.content = args[1]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.new_category
-          end
-
-          def setup_maker_attributes(category)
-            category.domain = domain
-            category.content = content
-          end
-          
-        end
-
-      end
-      
-      class TextInput < Element
-
-        include RSS09
-
-        %w(title description name link).each do |name|
-          install_text_element(name, "", nil)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.title = args[0]
-            self.description = args[1]
-            self.name = args[2]
-            self.link = args[3]
-          end
-        end
-
-        private
-        def maker_target(maker)
-          maker.textinput
-        end
-      end
-      
-    end
-    
-  end
-
-  RSS09::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element("", name, "#{name}=")
-  end
-
-  module ListenerMixin
-    private
-    def start_rss(tag_name, prefix, attrs, ns)
-      check_ns(tag_name, prefix, ns, "")
-      
-      @rss = Rss.new(attrs['version'], @version, @encoding, @standalone)
-      @rss.do_validate = @do_validate
-      @rss.xml_stylesheets = @xml_stylesheets
-      @last_element = @rss
-      @proc_stack.push Proc.new { |text, tags|
-        @rss.validate_for_stream(tags, @ignore_unknown_element) if @do_validate
-      }
-    end
-    
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/1.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/1.0.rb
deleted file mode 100644
index a945434..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/1.0.rb
+++ /dev/null
@@ -1,451 +0,0 @@
-require "rss/parser"
-
-module RSS
-
-  module RSS10
-    NSPOOL = {}
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-      
-      klass.install_must_call_validator('', ::RSS::URI)
-    end
-
-  end
-
-  class RDF < Element
-
-    include RSS10
-    include RootElementMixin
-
-    class << self
-
-      def required_uri
-        URI
-      end
-
-    end
-
-    @tag_name = 'RDF'
-
-    PREFIX = 'rdf'
-    URI = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-
-    install_ns('', ::RSS::URI)
-    install_ns(PREFIX, URI)
-
-    [
-      ["channel", nil],
-      ["image", "?"],
-      ["item", "+", :children],
-      ["textinput", "?"],
-    ].each do |tag, occurs, type|
-      type ||= :child
-      __send__("install_have_#{type}_element", tag, ::RSS::URI, occurs)
-    end
-
-    attr_accessor :rss_version, :version, :encoding, :standalone
-    
-    def initialize(version=nil, encoding=nil, standalone=nil)
-      super('1.0', version, encoding, standalone)
-    end
-
-    def full_name
-      tag_name_with_prefix(PREFIX)
-    end
-
-    class Li < Element
-
-      include RSS10
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-      
-      [
-        ["resource", [URI, ""], true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required)
-      end
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-    end
-
-    class Seq < Element
-
-      include RSS10
-
-      Li = ::RSS::RDF::Li
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-
-      @tag_name = 'Seq'
-      
-      install_have_children_element("li", URI, "*")
-      install_must_call_validator('rdf', ::RSS::RDF::URI)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          @li = args[0] if args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-      
-      def setup_maker(target)
-        lis.each do |li|
-          target << li.resource
-        end
-      end
-    end
-
-    class Bag < Element
-
-      include RSS10
-
-      Li = ::RSS::RDF::Li
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-
-      @tag_name = 'Bag'
-      
-      install_have_children_element("li", URI, "*")
-      install_must_call_validator('rdf', URI)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          @li = args[0] if args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-      
-      def setup_maker(target)
-        lis.each do |li|
-          target << li.resource
-        end
-      end
-    end
-
-    class Channel < Element
-
-      include RSS10
-      
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      [
-        ['title', nil, :text],
-        ['link', nil, :text],
-        ['description', nil, :text],
-        ['image', '?', :have_child],
-        ['items', nil, :have_child],
-        ['textinput', '?', :have_child],
-      ].each do |tag, occurs, type|
-        __send__("install_#{type}_element", tag, ::RSS::URI, occurs)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.channel
-      end
-      
-      def setup_maker_attributes(channel)
-        channel.about = about
-      end
-
-      class Image < Element
-        
-        include RSS10
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-
-        end
-
-        [
-          ["resource", URI, true]
-        ].each do |name, uri, required|
-          install_get_attribute(name, uri, required, nil, nil,
-                                "#{PREFIX}:#{name}")
-        end
-      
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.resource = args[0]
-          end
-        end
-      end
-
-      class Textinput < Element
-        
-        include RSS10
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-
-        end
-
-        [
-          ["resource", URI, true]
-        ].each do |name, uri, required|
-          install_get_attribute(name, uri, required, nil, nil,
-                                "#{PREFIX}:#{name}")
-        end
-      
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.resource = args[0]
-          end
-        end
-      end
-      
-      class Items < Element
-
-        include RSS10
-
-        Seq = ::RSS::RDF::Seq
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-          
-        end
-
-        install_have_child_element("Seq", URI, nil)
-        install_must_call_validator('rdf', URI)
-        
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.Seq = args[0]
-          end
-          self.Seq ||= Seq.new
-        end
-
-        def resources
-          if @Seq
-            @Seq.lis.collect do |li|
-              li.resource
-            end
-          else
-            []
-          end
-        end
-      end
-    end
-
-    class Image < Element
-
-      include RSS10
-
-      class << self
-        
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      %w(title url link).each do |name|
-        install_text_element(name, ::RSS::URI, nil)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.image
-      end
-    end
-
-    class Item < Element
-
-      include RSS10
-
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-        
-      end
-
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      [
-        ["title", nil],
-        ["link", nil],
-        ["description", "?"],
-      ].each do |tag, occurs|
-        install_text_element(tag, ::RSS::URI, occurs)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(items)
-        if items.respond_to?("items")
-          # For backward compatibility
-          items = items.items
-        end
-        items.new_item
-      end
-    end
-
-    class Textinput < Element
-
-      include RSS10
-
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      %w(title description name link).each do |name|
-        install_text_element(name, ::RSS::URI, nil)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.textinput
-      end
-    end
-
-  end
-
-  RSS10::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element(URI, name, "#{name}=")
-  end
-
-  module ListenerMixin
-    private
-    def start_RDF(tag_name, prefix, attrs, ns)
-      check_ns(tag_name, prefix, ns, RDF::URI)
-
-      @rss = RDF.new(@version, @encoding, @standalone)
-      @rss.do_validate = @do_validate
-      @rss.xml_stylesheets = @xml_stylesheets
-      @last_element = @rss
-      @proc_stack.push Proc.new { |text, tags|
-        @rss.validate_for_stream(tags, @ignore_unknown_element) if @do_validate
-      }
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/2.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/2.0.rb
deleted file mode 100644
index 44bdb4f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/2.0.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require "rss/0.9"
-
-module RSS
-
-  class Rss
-
-    class Channel
-
-      [
-        ["generator"],
-        ["ttl", :integer],
-      ].each do |name, type|
-        install_text_element(name, "", "?", name, type)
-      end
-
-      [
-        %w(category categories),
-      ].each do |name, plural_name|
-        install_have_children_element(name, "", "*", name, plural_name)
-      end
-
-      [
-        ["image", "?"],
-        ["language", "?"],
-      ].each do |name, occurs|
-        install_model(name, "", occurs)
-      end
-
-      Category = Item::Category
-
-      class Item
-      
-        [
-          ["comments", "?"],
-          ["author", "?"],
-        ].each do |name, occurs|
-          install_text_element(name, "", occurs)
-        end
-
-        [
-          ["pubDate", '?'],
-        ].each do |name, occurs|
-          install_date_element(name, "", occurs, name, 'rfc822')
-        end
-        alias date pubDate
-        alias date= pubDate=
-
-        [
-          ["guid", '?'],
-        ].each do |name, occurs|
-          install_have_child_element(name, "", occurs)
-        end
-
-        private
-        alias _setup_maker_element setup_maker_element
-        def setup_maker_element(item)
-          _setup_maker_element(item)
-          @guid.setup_maker(item) if @guid
-        end
-        
-        class Guid < Element
-          
-          include RSS09
-
-          [
-            ["isPermaLink", "", false, :boolean]
-          ].each do |name, uri, required, type|
-            install_get_attribute(name, uri, required, type)
-          end
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.isPermaLink = args[0]
-              self.content = args[1]
-            end
-          end
-
-          alias_method :_PermaLink?, :PermaLink?
-          private :_PermaLink?
-          def PermaLink?
-            perma = _PermaLink?
-            perma or perma.nil?
-          end
-
-          private
-          def maker_target(item)
-            item.guid
-          end
-
-          def setup_maker_attributes(guid)
-            guid.isPermaLink = isPermaLink
-            guid.content = content
-          end
-        end
-
-      end
-
-    end
-
-  end
-
-  RSS09::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element("", name, "#{name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/content.rb
deleted file mode 100644
index 1b13f39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/content.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  CONTENT_PREFIX = 'content'
-  CONTENT_URI = "http://purl.org/rss/1.0/modules/content/"
-
-  RDF.install_ns(CONTENT_PREFIX, CONTENT_URI)
-
-  module ContentModel
-
-    extend BaseModel
-
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(CONTENT_PREFIX, CONTENT_URI)
-      %w(encoded).each do |name|
-        klass.install_text_element(name, CONTENT_URI, "?",
-                                   "#{CONTENT_PREFIX}_#{name}")
-      end
-    end
-  end
-
-  class RDF
-    class Item; include ContentModel; end
-  end
-
-  prefix_size = CONTENT_PREFIX.size + 1
-  ContentModel::ELEMENTS.uniq!
-  ContentModel::ELEMENTS.each do |full_name|
-    name = full_name[prefix_size..-1]
-    BaseListener.install_get_text_element(CONTENT_URI, name, "#{full_name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/converter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/converter.rb
deleted file mode 100644
index d928c48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/converter.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-require "rss/utils"
-
-module RSS
-
-  class Converter
-    
-    include Utils
-
-    def initialize(to_enc, from_enc=nil)
-      normalized_to_enc = to_enc.downcase.gsub(/-/, '_')
-      from_enc ||= 'utf-8'
-      normalized_from_enc = from_enc.downcase.gsub(/-/, '_')
-      if normalized_to_enc == normalized_from_enc
-        def_same_enc()
-      else
-        def_diff_enc = "def_to_#{normalized_to_enc}_from_#{normalized_from_enc}"
-        if respond_to?(def_diff_enc)
-          __send__(def_diff_enc)
-        else
-          def_else_enc(to_enc, from_enc)
-        end
-      end
-    end
-
-    def convert(value)
-      value
-    end
-
-    def def_convert(depth=0)
-      instance_eval(<<-EOC, *get_file_and_line_from_caller(depth))
-      def convert(value)
-        if value.kind_of?(String)
-          #{yield('value')}
-        else
-          value
-        end
-      end
-      EOC
-    end
-
-    def def_iconv_convert(to_enc, from_enc, depth=0)
-      begin
-        require "iconv"
-        @iconv = Iconv.new(to_enc, from_enc)
-        def_convert(depth+1) do |value|
-          <<-EOC
-          begin
-            @iconv.iconv(#{value})
-          rescue Iconv::Failure
-            raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
-          end
-          EOC
-        end
-      rescue LoadError, ArgumentError, SystemCallError
-        raise UnknownConversionMethodError.new(to_enc, from_enc)
-      end
-    end
-    
-    def def_else_enc(to_enc, from_enc)
-      def_iconv_convert(to_enc, from_enc, 0)
-    end
-    
-    def def_same_enc()
-      def_convert do |value|
-        value
-      end
-    end
-
-    def def_uconv_convert_if_can(meth, to_enc, from_enc, nkf_arg)
-      begin
-        require "uconv"
-        def_convert(1) do |value|
-          <<-EOC
-          begin
-            Uconv.#{meth}(#{value})
-          rescue Uconv::Error
-            raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
-          end
-          EOC
-        end
-      rescue LoadError
-        require 'nkf'
-        def_convert(1) do |value|
-          "NKF.nkf(#{nkf_arg.dump}, #{value})"
-        end
-      end
-    end
-
-    def def_to_euc_jp_from_utf_8
-      def_uconv_convert_if_can('u8toeuc', 'EUC-JP', 'UTF-8', '-We')
-    end
-    
-    def def_to_utf_8_from_euc_jp
-      def_uconv_convert_if_can('euctou8', 'UTF-8', 'EUC-JP', '-Ew')
-    end
-    
-    def def_to_shift_jis_from_utf_8
-      def_uconv_convert_if_can('u8tosjis', 'Shift_JIS', 'UTF-8', '-Ws')
-    end
-    
-    def def_to_utf_8_from_shift_jis
-      def_uconv_convert_if_can('sjistou8', 'UTF-8', 'Shift_JIS', '-Sw')
-    end
-    
-    def def_to_euc_jp_from_shift_jis
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Se', #{value})"
-      end
-    end
-    
-    def def_to_shift_jis_from_euc_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Es', #{value})"
-      end
-    end
-    
-    def def_to_euc_jp_from_iso_2022_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Je', #{value})"
-      end
-    end
-    
-    def def_to_iso_2022_jp_from_euc_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Ej', #{value})"
-      end
-    end
-
-    def def_to_utf_8_from_iso_8859_1
-      def_convert do |value|
-        "#{value}.unpack('C*').pack('U*')"
-      end
-    end
-    
-    def def_to_iso_8859_1_from_utf_8
-      def_convert do |value|
-        <<-EOC
-        array_utf8 = #{value}.unpack('U*')
-        array_enc = []
-        array_utf8.each do |num|
-          if num <= 0xFF
-            array_enc << num
-          else
-            array_enc.concat "&\#\#{num};".unpack('C*')
-          end
-        end
-        array_enc.pack('C*')
-        EOC
-      end
-    end
-    
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/dublincore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/dublincore.rb
deleted file mode 100644
index 8a4afd4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/dublincore.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  DC_PREFIX = 'dc'
-  DC_URI = "http://purl.org/dc/elements/1.1/"
-  
-  RDF.install_ns(DC_PREFIX, DC_URI)
-
-  module BaseDublinCoreModel
-    def append_features(klass)
-      super
-
-      return if klass.instance_of?(Module)
-      DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-        plural = plural_name || "#{name}s"
-        full_name = "#{DC_PREFIX}_#{name}"
-        full_plural_name = "#{DC_PREFIX}_#{plural}"
-        klass_name = "DublinCore#{Utils.to_class_name(name)}"
-        klass.install_must_call_validator(DC_PREFIX, DC_URI)
-        klass.install_have_children_element(name, DC_URI, "*",
-                                            full_name, full_plural_name)
-        klass.module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-          remove_method :#{full_name}
-          remove_method :#{full_name}=
-          remove_method :set_#{full_name}
-
-          def #{full_name}
-            @#{full_name}.first and @#{full_name}.first.value
-          end
-          
-          def #{full_name}=(new_value)
-            @#{full_name}[0] = Utils.new_with_value_if_need(#{klass_name}, new_value)
-          end
-          alias set_#{full_name} #{full_name}=
-        EOC
-      end
-      klass.module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        alias date #{DC_PREFIX}_date
-        alias date= #{DC_PREFIX}_date=
-      EOC
-    end
-  end
-  
-  module DublinCoreModel
-
-    extend BaseModel
-    extend BaseDublinCoreModel
-
-    TEXT_ELEMENTS = {
-      "title" => nil,
-      "description" => nil,
-      "creator" => nil,
-      "subject" => nil,
-      "publisher" => nil,
-      "contributor" => nil,
-      "type" => nil,
-      "format" => nil,
-      "identifier" => nil,
-      "source" => nil,
-      "language" => nil,
-      "relation" => nil,
-      "coverage" => nil,
-      "rights" => "rightses" # FIXME
-    }
-
-    DATE_ELEMENTS = {
-      "date" => "w3cdtf",
-    }
-    
-    ELEMENT_NAME_INFOS = DublinCoreModel::TEXT_ELEMENTS.to_a
-    DublinCoreModel::DATE_ELEMENTS.each do |name, |
-      ELEMENT_NAME_INFOS << [name, nil]
-    end
-    
-    ELEMENTS = TEXT_ELEMENTS.keys + DATE_ELEMENTS.keys
-
-    ELEMENTS.each do |name, plural_name|
-      module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        class DublinCore#{Utils.to_class_name(name)} < Element
-          include RSS10
-          
-          content_setup
-
-          class << self
-            def required_prefix
-              DC_PREFIX
-            end
-        
-            def required_uri
-              DC_URI
-            end
-          end
-
-          @tag_name = #{name.dump}
-
-          alias_method(:value, :content)
-          alias_method(:value=, :content=)
-          
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-      
-          def full_name
-            tag_name_with_prefix(DC_PREFIX)
-          end
-
-          def maker_target(target)
-            target.new_#{name}
-          end
-
-          def setup_maker_attributes(#{name})
-            #{name}.content = content
-          end
-        end
-      EOC
-    end
-
-    DATE_ELEMENTS.each do |name, type|
-      module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        class DublinCore#{Utils.to_class_name(name)} < Element
-          remove_method(:content=)
-          remove_method(:value=)
-
-          date_writer("content", #{type.dump}, #{name.dump})
-          
-          alias_method(:value=, :content=)
-        end
-      EOC
-    end
-  end
-
-  # For backward compatibility
-  DublincoreModel = DublinCoreModel
-
-  class RDF
-    class Channel; include DublinCoreModel; end
-    class Image; include DublinCoreModel; end
-    class Item; include DublinCoreModel; end
-    class Textinput; include DublinCoreModel; end
-  end
-
-  DublinCoreModel::ELEMENTS.each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(DC_URI, name, "DublinCore#{class_name}")
-  end
-
-  DublinCoreModel::ELEMENTS.collect! {|name| "#{DC_PREFIX}_#{name}"}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/image.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/image.rb
deleted file mode 100644
index a9e9e90..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/image.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-require 'rss/1.0'
-require 'rss/dublincore'
-
-module RSS
-
-  IMAGE_PREFIX = 'image'
-  IMAGE_URI = 'http://web.resource.org/rss/1.0/modules/image/'
-
-  RDF.install_ns(IMAGE_PREFIX, IMAGE_URI)
-
-  IMAGE_ELEMENTS = []
-
-  %w(item favicon).each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(IMAGE_URI, name, "Image#{class_name}")
-    IMAGE_ELEMENTS << "#{IMAGE_PREFIX}_#{name}"
-  end
-  
-  module ImageModelUtils
-    def validate_one_tag_name(ignore_unknown_element, name, tags)
-      if !ignore_unknown_element
-        invalid = tags.find {|tag| tag != name}
-        raise UnknownTagError.new(invalid, IMAGE_URI) if invalid
-      end
-      raise TooMuchTagError.new(name, tag_name) if tags.size > 1
-    end
-  end
-  
-  module ImageItemModel
-    include ImageModelUtils
-    extend BaseModel
-
-    def self.append_features(klass)
-      super
-
-      klass.install_have_child_element("item", IMAGE_URI, "?",
-                                       "#{IMAGE_PREFIX}_item")
-      klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-    end
-
-    class ImageItem < Element
-      include RSS10
-      include DublinCoreModel
-
-      @tag_name = "item"
-      
-      class << self
-        def required_prefix
-          IMAGE_PREFIX
-        end
-        
-        def required_uri
-          IMAGE_URI
-        end
-      end
-
-      install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-
-      [
-        ["about", ::RSS::RDF::URI, true],
-        ["resource", ::RSS::RDF::URI, false],
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      %w(width height).each do |tag|
-        full_name = "#{IMAGE_PREFIX}_#{tag}"
-        disp_name = "#{IMAGE_PREFIX}:#{tag}"
-        install_text_element(tag, IMAGE_URI, "?",
-                             full_name, :integer, disp_name)
-        BaseListener.install_get_text_element(IMAGE_URI, tag, "#{full_name}=")
-      end
-
-      alias width= image_width=
-      alias width image_width
-      alias height= image_height=
-      alias height image_height
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-          self.resource = args[1]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(IMAGE_PREFIX)
-      end
-
-      private
-      def maker_target(target)
-        target.image_item
-      end
-
-      def setup_maker_attributes(item)
-        item.about = self.about
-        item.resource = self.resource
-      end
-    end
-  end
-  
-  module ImageFaviconModel
-    include ImageModelUtils
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-
-      unless klass.class == Module
-        klass.install_have_child_element("favicon", IMAGE_URI, "?",
-                                         "#{IMAGE_PREFIX}_favicon")
-        klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-      end
-    end
-
-    class ImageFavicon < Element
-      include RSS10
-      include DublinCoreModel
-
-      @tag_name = "favicon"
-      
-      class << self
-        def required_prefix
-          IMAGE_PREFIX
-        end
-        
-        def required_uri
-          IMAGE_URI
-        end
-      end
-
-      [
-        ["about", ::RSS::RDF::URI, true, ::RSS::RDF::PREFIX],
-        ["size", IMAGE_URI, true, IMAGE_PREFIX],
-      ].each do |name, uri, required, prefix|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{prefix}:#{name}")
-      end
-
-      AVAILABLE_SIZES = %w(small medium large)
-      alias_method :_size=, :size=
-      private :_size=
-      def size=(new_value)
-        if @do_validate and !new_value.nil?
-          new_value = new_value.strip
-          unless AVAILABLE_SIZES.include?(new_value)
-            attr_name = "#{IMAGE_PREFIX}:size"
-            raise NotAvailableValueError.new(full_name, new_value, attr_name)
-          end
-        end
-        __send__(:_size=, new_value)
-      end
-      
-      alias image_size= size=
-      alias image_size size
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-          self.size = args[1]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(IMAGE_PREFIX)
-      end
-
-      private
-      def maker_target(target)
-        target.image_favicon
-      end
-
-      def setup_maker_attributes(favicon)
-        favicon.about = self.about
-        favicon.size = self.size
-      end
-    end
-
-  end
-
-  class RDF
-    class Channel; include ImageFaviconModel; end
-    class Item; include ImageItemModel; end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker.rb
deleted file mode 100644
index 9ed799a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require "rss/rss"
-
-module RSS
-
-  module Maker
-
-    MAKERS = {}
-    
-    class << self
-      def make(version, &block)
-        maker(version).make(&block)
-      end
-
-      def maker(version)
-        MAKERS[version]
-      end
-
-      def add_maker(version, maker)
-        MAKERS[version] = maker
-      end
-
-      def filename_to_version(filename)
-        File.basename(filename, ".*")
-      end
-    end
-  end
-  
-end
-
-require "rss/maker/1.0"
-require "rss/maker/2.0"
-require "rss/maker/content"
-require "rss/maker/dublincore"
-require "rss/maker/syndication"
-require "rss/maker/taxonomy"
-require "rss/maker/trackback"
-require "rss/maker/image"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/0.9.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/0.9.rb
deleted file mode 100644
index b82585f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/0.9.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-require "rss/0.9"
-
-require "rss/maker/base"
-
-module RSS
-  module Maker
-    
-    class RSS09 < RSSBase
-      
-      def initialize(rss_version="0.91")
-        super
-      end
-      
-      private
-      def make_rss
-        Rss.new(@rss_version, @version, @encoding, @standalone)
-      end
-
-      def setup_elements(rss)
-        setup_channel(rss)
-      end
-
-      class Channel < ChannelBase
-        
-        def to_rss(rss)
-          channel = Rss::Channel.new
-          set = setup_values(channel)
-          if set
-            rss.channel = channel
-            setup_items(rss)
-            setup_image(rss)
-            setup_textinput(rss)
-            setup_other_elements(rss)
-            if rss.channel.image
-              rss
-            else
-              nil
-            end
-          elsif variable_is_set?
-            raise NotSetError.new("maker.channel", not_set_required_variables)
-          end
-        end
-        
-        def have_required_values?
-          @title and @link and @description and @language
-        end
-        
-        private
-        def setup_items(rss)
-          @maker.items.to_rss(rss)
-        end
-        
-        def setup_image(rss)
-          @maker.image.to_rss(rss)
-        end
-        
-        def setup_textinput(rss)
-          @maker.textinput.to_rss(rss)
-        end
-        
-        def variables
-          super + ["pubDate"]
-        end
-
-        def required_variable_names
-          %w(title link description language)
-        end
-        
-        class SkipDays < SkipDaysBase
-          def to_rss(rss, channel)
-            unless @days.empty?
-              skipDays = Rss::Channel::SkipDays.new
-              channel.skipDays = skipDays
-              @days.each do |day|
-                day.to_rss(rss, skipDays.days)
-              end
-            end
-          end
-          
-          class Day < DayBase
-            def to_rss(rss, days)
-              day = Rss::Channel::SkipDays::Day.new
-              set = setup_values(day)
-              if set
-                days << day
-                setup_other_elements(rss)
-              end
-            end
-
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-        class SkipHours < SkipHoursBase
-          def to_rss(rss, channel)
-            unless @hours.empty?
-              skipHours = Rss::Channel::SkipHours.new
-              channel.skipHours = skipHours
-              @hours.each do |hour|
-                hour.to_rss(rss, skipHours.hours)
-              end
-            end
-          end
-          
-          class Hour < HourBase
-            def to_rss(rss, hours)
-              hour = Rss::Channel::SkipHours::Hour.new
-              set = setup_values(hour)
-              if set
-                hours << hour
-                setup_other_elements(rss)
-              end
-            end
-
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-        class Cloud < CloudBase
-          def to_rss(*args)
-          end
-        end
-
-        class Categories < CategoriesBase
-          def to_rss(*args)
-          end
-
-          class Category < CategoryBase
-          end
-        end
-      end
-      
-      class Image < ImageBase
-        def to_rss(rss)
-          image = Rss::Channel::Image.new
-          set = setup_values(image)
-          if set
-            image.link = link
-            rss.channel.image = image
-            setup_other_elements(rss)
-          end
-        end
-        
-        def have_required_values?
-          @url and @title and link
-        end
-      end
-      
-      class Items < ItemsBase
-        def to_rss(rss)
-          if rss.channel
-            normalize.each do |item|
-              item.to_rss(rss)
-            end
-            setup_other_elements(rss)
-          end
-        end
-        
-        class Item < ItemBase
-          def to_rss(rss)
-            item = Rss::Channel::Item.new
-            set = setup_values(item)
-            if set
-              rss.items << item
-              setup_other_elements(rss)
-            end
-          end
-          
-          private
-          def have_required_values?
-            @title and @link
-          end
-
-          class Guid < GuidBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Enclosure < EnclosureBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Source < SourceBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Categories < CategoriesBase
-            def to_rss(*args)
-            end
-
-            class Category < CategoryBase
-            end
-          end
-          
-        end
-      end
-      
-      class Textinput < TextinputBase
-        def to_rss(rss)
-          textInput = Rss::Channel::TextInput.new
-          set = setup_values(textInput)
-          if set
-            rss.channel.textInput = textInput
-            setup_other_elements(rss)
-          end
-        end
-
-        private
-        def have_required_values?
-          @title and @description and @name and @link
-        end
-      end
-    end
-    
-    add_maker(filename_to_version(__FILE__), RSS09)
-    add_maker(filename_to_version(__FILE__) + "1", RSS09)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/1.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/1.0.rb
deleted file mode 100644
index 3e6542a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/1.0.rb
+++ /dev/null
@@ -1,204 +0,0 @@
-require "rss/1.0"
-
-require "rss/maker/base"
-
-module RSS
-  module Maker
-
-    class RSS10 < RSSBase
-
-      def initialize
-        super("1.0")
-      end
-
-      private
-      def make_rss
-        RDF.new(@version, @encoding, @standalone)
-      end
-
-      def setup_elements(rss)
-        setup_channel(rss)
-        setup_image(rss)
-        setup_items(rss)
-        setup_textinput(rss)
-      end
-
-      class Channel < ChannelBase
-
-        def to_rss(rss)
-          set = false
-          if @about
-            channel = RDF::Channel.new(@about)
-            set = setup_values(channel)
-            if set
-              channel.dc_dates.clear
-              rss.channel = channel
-              setup_items(rss)
-              setup_image(rss)
-              setup_textinput(rss)
-              setup_other_elements(rss)
-            end
-          end
-
-          if (!@about or !set) and variable_is_set?
-            raise NotSetError.new("maker.channel", not_set_required_variables)
-          end
-        end
-
-        def have_required_values?
-          @about and @title and @link and @description
-        end
-
-        private
-        def setup_items(rss)
-          items = RDF::Channel::Items.new
-          seq = items.Seq
-          @maker.items.normalize.each do |item|
-            seq.lis << RDF::Channel::Items::Seq::Li.new(item.link)
-          end
-          rss.channel.items = items
-        end
-        
-        def setup_image(rss)
-          if @maker.image.have_required_values?
-            rss.channel.image = RDF::Channel::Image.new(@maker.image.url)
-          end
-        end
-
-        def setup_textinput(rss)
-          if @maker.textinput.have_required_values?
-            textinput = RDF::Channel::Textinput.new(@maker.textinput.link)
-            rss.channel.textinput = textinput
-          end
-        end
-
-        def required_variable_names
-          %w(about title link description)
-        end
-        
-        class SkipDays < SkipDaysBase
-          def to_rss(*args)
-          end
-          
-          class Day < DayBase
-          end
-        end
-        
-        class SkipHours < SkipHoursBase
-          def to_rss(*args)
-          end
-
-          class Hour < HourBase
-          end
-        end
-        
-        class Cloud < CloudBase
-          def to_rss(*args)
-          end
-        end
-
-        class Categories < CategoriesBase
-          def to_rss(*args)
-          end
-
-          class Category < CategoryBase
-          end
-        end
-      end
-
-      class Image < ImageBase
-        def to_rss(rss)
-          if @url
-            image = RDF::Image.new(@url)
-            set = setup_values(image)
-            if set
-              rss.image = image
-              setup_other_elements(rss)
-            end
-          end
-        end
-
-        def have_required_values?
-          @url and @title and link and @maker.channel.have_required_values?
-        end
-
-        private
-        def variables
-          super + ["link"]
-        end
-      end
-
-      class Items < ItemsBase
-        def to_rss(rss)
-          if rss.channel
-            normalize.each do |item|
-              item.to_rss(rss)
-            end
-            setup_other_elements(rss)
-          end
-        end
-
-        class Item < ItemBase
-          def to_rss(rss)
-            if @link
-              item = RDF::Item.new(@link)
-              set = setup_values(item)
-              if set
-                item.dc_dates.clear
-                rss.items << item
-                setup_other_elements(rss)
-              end
-            end
-          end
-
-          def have_required_values?
-            @title and @link
-          end
-
-          class Guid < GuidBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Enclosure < EnclosureBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Source < SourceBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Categories < CategoriesBase
-            def to_rss(*args)
-            end
-
-            class Category < CategoryBase
-            end
-          end
-        end
-      end
-      
-      class Textinput < TextinputBase
-        def to_rss(rss)
-          if @link
-            textinput = RDF::Textinput.new(@link)
-            set = setup_values(textinput)
-            if set
-              rss.textinput = textinput
-              setup_other_elements(rss)
-            end
-          end
-        end
-
-        def have_required_values?
-          @title and @description and @name and @link and
-            @maker.channel.have_required_values?
-        end
-      end
-    end
-
-    add_maker(filename_to_version(__FILE__), RSS10)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/2.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/2.0.rb
deleted file mode 100644
index a958661..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/2.0.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-require "rss/2.0"
-
-require "rss/maker/0.9"
-
-module RSS
-  module Maker
-    
-    class RSS20 < RSS09
-      
-      def initialize(rss_version="2.0")
-        super
-      end
-
-      class Channel < RSS09::Channel
-
-        def have_required_values?
-          @title and @link and @description
-        end
-
-        def required_variable_names
-          %w(title link description)
-        end
-        
-        class SkipDays < RSS09::Channel::SkipDays
-          class Day < RSS09::Channel::SkipDays::Day
-          end
-        end
-        
-        class SkipHours < RSS09::Channel::SkipHours
-          class Hour < RSS09::Channel::SkipHours::Hour
-          end
-        end
-        
-        class Cloud < RSS09::Channel::Cloud
-          def to_rss(rss, channel)
-            cloud = Rss::Channel::Cloud.new
-            set = setup_values(cloud)
-            if set
-              channel.cloud = cloud
-              setup_other_elements(rss)
-            end
-          end
-
-          def have_required_values?
-            @domain and @port and @path and
-              @registerProcedure and @protocol
-          end
-        end
-
-        class Categories < RSS09::Channel::Categories
-          def to_rss(rss, channel)
-            @categories.each do |category|
-              category.to_rss(rss, channel)
-            end
-          end
-          
-          class Category < RSS09::Channel::Categories::Category
-            def to_rss(rss, channel)
-              category = Rss::Channel::Category.new
-              set = setup_values(category)
-              if set
-                channel.categories << category
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-      end
-      
-      class Image < RSS09::Image
-      end
-      
-      class Items < RSS09::Items
-        
-        class Item < RSS09::Items::Item
-
-          def have_required_values?
-            @title or @description
-          end
-
-          private
-          def variables
-            super + ["pubDate"]
-          end
-
-          class Guid < RSS09::Items::Item::Guid
-            def to_rss(rss, item)
-              guid = Rss::Channel::Item::Guid.new
-              set = setup_values(guid)
-              if set
-                item.guid = guid
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @content
-            end
-          end
-
-          class Enclosure < RSS09::Items::Item::Enclosure
-            def to_rss(rss, item)
-              enclosure = Rss::Channel::Item::Enclosure.new
-              set = setup_values(enclosure)
-              if set
-                item.enclosure = enclosure
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @url and @length and @type
-            end
-          end
-
-          class Source < RSS09::Items::Item::Source
-            def to_rss(rss, item)
-              source = Rss::Channel::Item::Source.new
-              set = setup_values(source)
-              if set
-                item.source = source
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @url and @content
-            end
-          end
-
-          class Categories < RSS09::Items::Item::Categories
-            def to_rss(rss, item)
-              @categories.each do |category|
-                category.to_rss(rss, item)
-              end
-            end
-          
-            class Category < RSS09::Items::Item::Categories::Category
-              def to_rss(rss, item)
-                category = Rss::Channel::Item::Category.new
-                set = setup_values(category)
-                if set
-                  item.categories << category
-                  setup_other_elements(rss)
-                end
-              end
-              
-              def have_required_values?
-                @content
-              end
-            end
-          end
-        end
-        
-      end
-      
-      class Textinput < RSS09::Textinput
-      end
-    end
-    
-    add_maker(filename_to_version(__FILE__), RSS20)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/base.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/base.rb
deleted file mode 100644
index 2327dd9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/base.rb
+++ /dev/null
@@ -1,546 +0,0 @@
-require 'forwardable'
-
-require 'rss/rss'
-
-module RSS
-  module Maker
-
-    module Base
-
-      def self.append_features(klass)
-        super
-
-        klass.module_eval(<<-EOC, __FILE__, __LINE__)
-
-        OTHER_ELEMENTS = []
-        NEED_INITIALIZE_VARIABLES = []
-
-        def self.inherited(subclass)
-          subclass.const_set("OTHER_ELEMENTS", [])
-          subclass.const_set("NEED_INITIALIZE_VARIABLES", [])
-
-          subclass.module_eval(<<-EOEOC, __FILE__, __LINE__)
-            def self.other_elements
-              OTHER_ELEMENTS + super
-            end
-
-            def self.need_initialize_variables
-              NEED_INITIALIZE_VARIABLES + super
-            end
-          EOEOC
-        end
-
-        def self.add_other_element(variable_name)
-          OTHER_ELEMENTS << variable_name
-        end
-
-        def self.other_elements
-          OTHER_ELEMENTS
-        end
-
-        def self.add_need_initialize_variable(variable_name, init_value="nil")
-          NEED_INITIALIZE_VARIABLES << [variable_name, init_value]
-        end
-
-        def self.need_initialize_variables
-          NEED_INITIALIZE_VARIABLES
-        end
-
-        def self.def_array_element(name)
-          include Enumerable
-          extend Forwardable
-
-          def_delegators("@\#{name}", :<<, :[], :[]=, :first, :last)
-          def_delegators("@\#{name}", :push, :pop, :shift, :unshift)
-          def_delegators("@\#{name}", :each, :size)
-          
-          add_need_initialize_variable(name, "[]")
-        end
-        EOC
-      end
-      
-      def initialize(maker)
-        @maker = maker
-        initialize_variables
-      end
-
-      def have_required_values?
-        true
-      end
-      
-      private
-      def initialize_variables
-        self.class.need_initialize_variables.each do |variable_name, init_value|
-          instance_eval("@#{variable_name} = #{init_value}", __FILE__, __LINE__)
-        end
-      end
-
-      def setup_other_elements(rss)
-        self.class.other_elements.each do |element|
-          __send__("setup_#{element}", rss, current_element(rss))
-        end
-      end
-
-      def current_element(rss)
-        rss
-      end
-      
-      def setup_values(target)
-        set = false
-        if have_required_values?
-          variables.each do |var|
-            setter = "#{var}="
-            if target.respond_to?(setter)
-              value = __send__(var)
-              if value
-                target.__send__(setter, value)
-                set = true
-              end
-            end
-          end
-        end
-        set
-      end
-
-      def variables
-        self.class.need_initialize_variables.find_all do |name, init|
-          "nil" == init
-        end.collect do |name, init|
-          name
-        end
-      end
-
-      def variable_is_set?
-        variables.find {|var| !__send__(var).nil?}
-      end
-
-      def not_set_required_variables
-        required_variable_names.find_all do |var|
-          __send__(var).nil?
-        end
-      end
-
-      def required_variables_are_set?
-        required_variable_names.each do |var|
-          return false if __send__(var).nil?
-        end
-        true
-      end
-      
-    end
-
-    class RSSBase
-      include Base
-
-      class << self
-        def make(&block)
-          new.make(&block)
-        end
-      end
-
-      %w(xml_stylesheets channel image items textinput).each do |element|
-        attr_reader element
-        add_need_initialize_variable(element, "make_#{element}")
-        module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss)
-            @#{element}.to_rss(rss)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(self)
-          end
-EOC
-      end
-      
-      attr_reader :rss_version
-      attr_accessor :version, :encoding, :standalone
-      
-      def initialize(rss_version)
-        super(self)
-        @rss_version = rss_version
-        @version = "1.0"
-        @encoding = "UTF-8"
-        @standalone = nil
-      end
-      
-      def make
-        if block_given?
-          yield(self)
-          to_rss
-        else
-          nil
-        end
-      end
-
-      def to_rss
-        rss = make_rss
-        setup_xml_stylesheets(rss)
-        setup_elements(rss)
-        setup_other_elements(rss)
-        if rss.channel
-          rss
-        else
-          nil
-        end
-      end
-      
-      private
-      remove_method :make_xml_stylesheets
-      def make_xml_stylesheets
-        XMLStyleSheets.new(self)
-      end
-      
-    end
-
-    class XMLStyleSheets
-      include Base
-
-      def_array_element("xml_stylesheets")
-
-      def to_rss(rss)
-        @xml_stylesheets.each do |xss|
-          xss.to_rss(rss)
-        end
-      end
-
-      def new_xml_stylesheet
-        xss = XMLStyleSheet.new(@maker)
-        @xml_stylesheets << xss
-        if block_given?
-          yield xss
-        else
-          xss
-        end
-      end
-
-      class XMLStyleSheet
-        include Base
-
-        ::RSS::XMLStyleSheet::ATTRIBUTES.each do |attribute|
-          attr_accessor attribute
-          add_need_initialize_variable(attribute)
-        end
-        
-        def to_rss(rss)
-          xss = ::RSS::XMLStyleSheet.new
-          guess_type_if_need(xss)
-          set = setup_values(xss)
-          if set
-            rss.xml_stylesheets << xss
-          end
-        end
-
-        def have_required_values?
-          @href and @type
-        end
-
-        private
-        def guess_type_if_need(xss)
-          if @type.nil?
-            xss.href = @href
-            @type = xss.type
-          end
-        end
-      end
-    end
-    
-    class ChannelBase
-      include Base
-
-      %w(cloud categories skipDays skipHours).each do |element|
-        attr_reader element
-        add_other_element(element)
-        add_need_initialize_variable(element, "make_#{element}")
-        module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss, current)
-            @#{element}.to_rss(rss, current)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(@maker)
-          end
-EOC
-      end
-
-      %w(about title link description language copyright
-         managingEditor webMaster rating docs date
-         lastBuildDate generator ttl).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-
-      alias_method(:pubDate, :date)
-      alias_method(:pubDate=, :date=)
-
-      def current_element(rss)
-        rss.channel
-      end
-
-      class SkipDaysBase
-        include Base
-
-        def_array_element("days")
-
-        def new_day
-          day = self.class::Day.new(@maker)
-          @days << day
-          if block_given?
-            yield day
-          else
-            day
-          end
-        end
-        
-        def current_element(rss)
-          rss.channel.skipDays
-        end
-
-        class DayBase
-          include Base
-          
-          %w(content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-
-          def current_element(rss)
-            rss.channel.skipDays.last
-          end
-
-        end
-      end
-      
-      class SkipHoursBase
-        include Base
-
-        def_array_element("hours")
-
-        def new_hour
-          hour = self.class::Hour.new(@maker)
-          @hours << hour
-          if block_given?
-            yield hour
-          else
-            hour
-          end
-        end
-        
-        def current_element(rss)
-          rss.channel.skipHours
-        end
-
-        class HourBase
-          include Base
-          
-          %w(content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-
-          def current_element(rss)
-            rss.channel.skipHours.last
-          end
-
-        end
-      end
-      
-      class CloudBase
-        include Base
-        
-        %w(domain port path registerProcedure protocol).each do |element|
-          attr_accessor element
-          add_need_initialize_variable(element)
-        end
-        
-        def current_element(rss)
-          rss.channel.cloud
-        end
-
-      end
-
-      class CategoriesBase
-        include Base
-        
-        def_array_element("categories")
-
-        def new_category
-          category = self.class::Category.new(@maker)
-          @categories << category
-          if block_given?
-            yield category
-          else
-            category
-          end
-        end
-
-        class CategoryBase
-          include Base
-
-          %w(domain content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      end
-    end
-    
-    class ImageBase
-      include Base
-
-      %w(title url width height description).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-      
-      def link
-        @maker.channel.link
-      end
-
-      def current_element(rss)
-        rss.image
-      end
-    end
-    
-    class ItemsBase
-      include Base
-
-      def_array_element("items")
-      
-      attr_accessor :do_sort, :max_size
-      
-      def initialize(maker)
-        super
-        @do_sort = false
-        @max_size = -1
-      end
-      
-      def normalize
-        if @max_size >= 0
-          sort_if_need[0... at max_size]
-        else
-          sort_if_need[0.. at max_size]
-        end
-      end
-      
-      def current_element(rss)
-        rss.items
-      end
-
-      def new_item
-        item = self.class::Item.new(@maker)
-        @items << item
-        if block_given?
-          yield item
-        else
-          item
-        end
-      end
-      
-      private
-      def sort_if_need
-        if @do_sort.respond_to?(:call)
-          @items.sort do |x, y|
-            @do_sort.call(x, y)
-          end
-        elsif @do_sort
-          @items.sort do |x, y|
-            y <=> x
-          end
-        else
-          @items
-        end
-      end
-
-      class ItemBase
-        include Base
-        
-        %w(guid enclosure source categories).each do |element|
-          attr_reader element
-          add_other_element(element)
-          add_need_initialize_variable(element, "make_#{element}")
-          module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss, current)
-            @#{element}.to_rss(rss, current)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(@maker)
-          end
-EOC
-        end
-      
-        %w(title link description date author comments).each do |element|
-          attr_accessor element
-          add_need_initialize_variable(element)
-        end
-
-        alias_method(:pubDate, :date)
-        alias_method(:pubDate=, :date=)
-
-        def <=>(other)
-          if date and other.date
-            date <=> other.date
-          elsif date
-            1
-          elsif other.date
-            -1
-          else
-            0
-          end
-        end
-      
-        def current_element(rss)
-          rss.items.last
-        end
-
-        class GuidBase
-          include Base
-
-          %w(isPermaLink content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        class EnclosureBase
-          include Base
-
-          %w(url length type).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        class SourceBase
-          include Base
-
-          %w(url content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        CategoriesBase = ChannelBase::CategoriesBase
-      
-      end
-    end
-
-    class TextinputBase
-      include Base
-
-      %w(title description name link).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-      
-      def current_element(rss)
-        rss.textinput
-      end
-
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/content.rb
deleted file mode 100644
index 18590d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/content.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rss/content'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module ContentModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::ContentModel::ELEMENTS.each do |element|
-          klass.add_need_initialize_variable(element)
-          klass.add_other_element(element)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{element}
-            def setup_#{element}(rss, current)
-              if #{element} and current.respond_to?(:#{element}=)
-                current.#{element} = @#{element} if @#{element}
-              end
-            end
-          EOC
-        end
-      end
-    end
-
-    class ItemsBase
-      class ItemBase; include ContentModel; end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/dublincore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/dublincore.rb
deleted file mode 100644
index 0cf1255..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/dublincore.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-require 'rss/dublincore'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module DublinCoreModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-          plural_name ||= "#{name}s"
-          full_name = "#{RSS::DC_PREFIX}_#{name}"
-          full_plural_name = "#{RSS::DC_PREFIX}_#{plural_name}"
-          klass_name = Utils.to_class_name(name)
-          plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-          full_plural_klass_name = "self.class::#{plural_klass_name}"
-          full_klass_name = "#{full_plural_klass_name}::#{klass_name}"
-          klass.add_need_initialize_variable(full_plural_name,
-                                             "make_#{full_plural_name}")
-          klass.add_other_element(full_plural_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{full_plural_name}
-            def make_#{full_plural_name}
-              #{full_plural_klass_name}.new(@maker)
-            end
-            
-            def setup_#{full_plural_name}(rss, current)
-              @#{full_plural_name}.to_rss(rss, current)
-            end
-
-            def #{full_name}
-              @#{full_plural_name}[0] and @#{full_plural_name}[0].value
-            end
-            
-            def #{full_name}=(new_value)
-              @#{full_plural_name}[0] = #{full_klass_name}.new(self)
-              @#{full_plural_name}[0].value = new_value
-            end
-EOC
-        end
-      end
-
-      ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-        plural_name ||= "#{name}s"
-        klass_name = Utils.to_class_name(name)
-        plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-        module_eval(<<-EOC, __FILE__, __LINE__)
-        class #{plural_klass_name}Base
-          include Base
-
-          def_array_element(#{plural_name.dump})
-                            
-          def new_#{name}
-            #{name} = self.class::#{klass_name}.new(self)
-            @#{plural_name} << #{name}
-            if block_given?
-              yield #{name}
-            else
-              #{name}
-            end
-          end
-
-          def to_rss(rss, current)
-            @#{plural_name}.each do |#{name}|
-              #{name}.to_rss(rss, current)
-            end
-          end
-        
-          class #{klass_name}Base
-            include Base
-
-            attr_accessor :value
-            add_need_initialize_variable("value")
-            alias_method(:content, :value)
-            alias_method(:content=, :value=)
-
-            def have_required_values?
-              @value
-            end
-          end
-        end
-        EOC
-      end
-
-      def self.install_dublin_core(klass)
-        ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-          plural_name ||= "#{name}s"
-          klass_name = Utils.to_class_name(name)
-          plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-          full_klass_name = "DublinCore#{klass_name}"
-          klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class #{plural_klass_name} < #{plural_klass_name}Base
-            class #{klass_name} < #{klass_name}Base
-              def to_rss(rss, current)
-                if value and current.respond_to?(:dc_#{name})
-                  new_item = current.class::#{full_klass_name}.new(value)
-                  current.dc_#{plural_name} << new_item
-                end
-              end
-            end
-          end
-EOC
-        end
-      end
-    end
-
-    class ChannelBase
-      include DublinCoreModel
-      
-      remove_method(:date)
-      remove_method(:date=)
-      alias_method(:date, :dc_date)
-      alias_method(:date=, :dc_date=)
-    end
-    
-    class ImageBase; include DublinCoreModel; end
-    class ItemsBase
-      class ItemBase
-        include DublinCoreModel
-        
-        remove_method(:date)
-        remove_method(:date=)
-        alias_method(:date, :dc_date)
-        alias_method(:date=, :dc_date=)
-      end
-    end
-    class TextinputBase; include DublinCoreModel; end
-
-    class RSS10
-      class Channel
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Image
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Items
-        class Item
-          DublinCoreModel.install_dublin_core(self)
-        end
-      end
-
-      class Textinput
-        DublinCoreModel.install_dublin_core(self)
-      end
-    end
-    
-    class RSS09
-      class Channel
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Image
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Items
-        class Item
-          DublinCoreModel.install_dublin_core(self)
-        end
-      end
-
-      class Textinput
-        DublinCoreModel.install_dublin_core(self)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/image.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/image.rb
deleted file mode 100644
index ed51c8e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/image.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require 'rss/image'
-require 'rss/maker/1.0'
-require 'rss/maker/dublincore'
-
-module RSS
-  module Maker
-    module ImageItemModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::IMAGE_PREFIX}_item"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_reader :#{name}
-          def setup_#{name}(rss, current)
-            if @#{name}
-              @#{name}.to_rss(rss, current)
-            end
-          end
-
-          def make_#{name}
-            self.class::#{Utils.to_class_name(name)}.new(@maker)
-          end
-EOC
-      end
-
-      class ImageItemBase
-        include Base
-        include Maker::DublinCoreModel
-
-        attr_accessor :about, :resource, :image_width, :image_height
-        add_need_initialize_variable("about")
-        add_need_initialize_variable("resource")
-        add_need_initialize_variable("image_width")
-        add_need_initialize_variable("image_height")
-        alias width= image_width=
-        alias width image_width
-        alias height= image_height=
-        alias height image_height
-
-        def have_required_values?
-          @about
-        end
-      end
-    end
-
-    module ImageFaviconModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::IMAGE_PREFIX}_favicon"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_reader :#{name}
-          def setup_#{name}(rss, current)
-            if @#{name}
-              @#{name}.to_rss(rss, current)
-            end
-          end
-
-          def make_#{name}
-            self.class::#{Utils.to_class_name(name)}.new(@maker)
-          end
-EOC
-      end
-
-      class ImageFaviconBase
-        include Base
-        include Maker::DublinCoreModel
-
-        attr_accessor :about, :image_size
-        add_need_initialize_variable("about")
-        add_need_initialize_variable("image_size")
-        alias size image_size
-        alias size= image_size=
-
-        def have_required_values?
-          @about and @image_size
-        end
-      end
-    end
-
-    class ChannelBase; include Maker::ImageFaviconModel; end
-    
-    class ItemsBase
-      class ItemBase; include Maker::ImageItemModel; end
-    end
-
-    class RSS10
-      class Items
-        class Item
-          class ImageItem < ImageItemBase
-            DublinCoreModel.install_dublin_core(self)
-            def to_rss(rss, current)
-              if @about
-                item = ::RSS::ImageItemModel::ImageItem.new(@about, @resource)
-                setup_values(item)
-                setup_other_elements(item)
-                current.image_item = item
-              end
-            end
-          end
-        end
-      end
-      
-      class Channel
-        class ImageFavicon < ImageFaviconBase
-          DublinCoreModel.install_dublin_core(self)
-          def to_rss(rss, current)
-            if @about and @image_size
-              args = [@about, @image_size]
-              favicon = ::RSS::ImageFaviconModel::ImageFavicon.new(*args)
-              setup_values(favicon)
-              setup_other_elements(favicon)
-              current.image_favicon = favicon
-            end
-          end
-        end
-      end
-    end
-
-    class RSS09
-      class Items
-        class Item
-          class ImageItem < ImageItemBase
-            DublinCoreModel.install_dublin_core(self)
-            def to_rss(*args)
-            end
-          end
-        end
-      end
-      
-      class Channel
-        class ImageFavicon < ImageFaviconBase
-          DublinCoreModel.install_dublin_core(self)
-          def to_rss(*args)
-          end
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/syndication.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/syndication.rb
deleted file mode 100644
index 3717086..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/syndication.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'rss/syndication'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module SyndicationModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::SyndicationModel::ELEMENTS.each do |element|
-          klass.add_need_initialize_variable(element)
-          klass.add_other_element(element)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{element}
-            def setup_#{element}(rss, current)
-              if #{element} and current.respond_to?(:#{element}=)
-                current.#{element} = @#{element} if @#{element}
-              end
-            end
-          EOC
-        end
-      end
-    end
-
-    class ChannelBase; include SyndicationModel; end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/taxonomy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/taxonomy.rb
deleted file mode 100644
index f272996..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/taxonomy.rb
+++ /dev/null
@@ -1,182 +0,0 @@
-require 'rss/taxonomy'
-require 'rss/maker/1.0'
-require 'rss/maker/dublincore'
-
-module RSS
-  module Maker
-    module TaxonomyTopicsModel
-      def self.append_features(klass)
-        super
-
-        klass.add_need_initialize_variable("taxo_topics", "make_taxo_topics")
-        klass.add_other_element("taxo_topics")
-        klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
-          attr_reader :taxo_topics
-          def make_taxo_topics
-            self.class::TaxonomyTopics.new(@maker)
-          end
-            
-          def setup_taxo_topics(rss, current)
-            @taxo_topics.to_rss(rss, current)
-          end
-EOC
-      end
-
-      def self.install_taxo_topics(klass)
-        klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class TaxonomyTopics < TaxonomyTopicsBase
-            def to_rss(rss, current)
-              if current.respond_to?(:taxo_topics)
-                topics = current.class::TaxonomyTopics.new
-                bag = topics.Bag
-                @resources.each do |resource|
-                  bag.lis << RDF::Bag::Li.new(resource)
-                end
-                current.taxo_topics = topics
-              end
-            end
-          end
-EOC
-      end
-
-      class TaxonomyTopicsBase
-        include Base
-
-        attr_reader :resources
-        def_array_element("resources")
-      end
-    end
-
-    module TaxonomyTopicModel
-      def self.append_features(klass)
-        super
-
-        klass.add_need_initialize_variable("taxo_topics", "make_taxo_topics")
-        klass.add_other_element("taxo_topics")
-        klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
-          attr_reader :taxo_topics
-          def make_taxo_topics
-            self.class::TaxonomyTopics.new(@maker)
-          end
-            
-          def setup_taxo_topics(rss, current)
-            @taxo_topics.to_rss(rss, current)
-          end
-
-          def taxo_topic
-            @taxo_topics[0] and @taxo_topics[0].value
-          end
-            
-          def taxo_topic=(new_value)
-            @taxo_topic[0] = self.class::TaxonomyTopic.new(self)
-            @taxo_topic[0].value = new_value
-          end
-EOC
-      end
-    
-      def self.install_taxo_topic(klass)
-        klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class TaxonomyTopics < TaxonomyTopicsBase
-            class TaxonomyTopic < TaxonomyTopicBase
-              DublinCoreModel.install_dublin_core(self)
-              TaxonomyTopicsModel.install_taxo_topics(self)
-
-              def to_rss(rss, current)
-                if current.respond_to?(:taxo_topics)
-                  topic = current.class::TaxonomyTopic.new(value)
-                  topic.taxo_link = value
-                  taxo_topics.to_rss(rss, topic) if taxo_topics
-                  current.taxo_topics << topic
-                  setup_other_elements(rss)
-                end
-              end
-
-              def current_element(rss)
-                super.taxo_topics.last
-              end
-            end
-          end
-EOC
-      end
-
-      class TaxonomyTopicsBase
-        include Base
-        
-        def_array_element("taxo_topics")
-                            
-        def new_taxo_topic
-          taxo_topic = self.class::TaxonomyTopic.new(self)
-          @taxo_topics << taxo_topic
-          if block_given?
-            yield taxo_topic
-          else
-            taxo_topic
-          end
-        end
-
-        def to_rss(rss, current)
-          @taxo_topics.each do |taxo_topic|
-            taxo_topic.to_rss(rss, current)
-          end
-        end
-        
-        class TaxonomyTopicBase
-          include Base
-          include DublinCoreModel
-          include TaxonomyTopicsModel
-          
-          attr_accessor :value
-          add_need_initialize_variable("value")
-          alias_method(:taxo_link, :value)
-          alias_method(:taxo_link=, :value=)
-          
-          def have_required_values?
-            @value
-          end
-        end
-      end
-    end
-
-    class RSSBase
-      include TaxonomyTopicModel
-    end
-    
-    class ChannelBase
-      include TaxonomyTopicsModel
-    end
-    
-    class ItemsBase
-      class ItemBase
-        include TaxonomyTopicsModel
-      end
-    end
-
-    class RSS10
-      TaxonomyTopicModel.install_taxo_topic(self)
-      
-      class Channel
-        TaxonomyTopicsModel.install_taxo_topics(self)
-      end
-
-      class Items
-        class Item
-          TaxonomyTopicsModel.install_taxo_topics(self)
-        end
-      end
-    end
-    
-    class RSS09
-      TaxonomyTopicModel.install_taxo_topic(self)
-      
-      class Channel
-        TaxonomyTopicsModel.install_taxo_topics(self)
-      end
-
-      class Items
-        class Item
-          TaxonomyTopicsModel.install_taxo_topics(self)
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/trackback.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/trackback.rb
deleted file mode 100644
index 4ae6164..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/maker/trackback.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-require 'rss/trackback'
-require 'rss/maker/1.0'
-require 'rss/maker/2.0'
-
-module RSS
-  module Maker
-    module TrackBackModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::TRACKBACK_PREFIX}_ping"
-        klass.add_need_initialize_variable(name)
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_accessor :#{name}
-          def setup_#{name}(rss, current)
-            if #{name} and current.respond_to?(:#{name}=)
-              current.#{name} = #{name}
-            end
-          end
-        EOC
-
-        name = "#{RSS::TRACKBACK_PREFIX}_abouts"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_accessor :#{name}
-          def make_#{name}
-            self.class::TrackBackAbouts.new(self)
-          end
-
-          def setup_#{name}(rss, current)
-            @#{name}.to_rss(rss, current)
-          end
-        EOC
-      end
-
-      class TrackBackAboutsBase
-        include Base
-
-        def_array_element("abouts")
-        
-        def new_about
-          about = self.class::TrackBackAbout.new(@maker)
-          @abouts << about
-          if block_given?
-            yield about
-          else
-            about
-          end
-        end
-
-        def to_rss(rss, current)
-          @abouts.each do |about|
-            about.to_rss(rss, current)
-          end
-        end
-        
-        class TrackBackAboutBase
-          include Base
-
-          attr_accessor :value
-          add_need_initialize_variable("value")
-          
-          alias_method(:resource, :value)
-          alias_method(:resource=, :value=)
-          alias_method(:content, :value)
-          alias_method(:content=, :value=)
-        
-          def have_required_values?
-            @value
-          end
-          
-        end
-      end
-    end
-
-    class ItemsBase
-      class ItemBase; include TrackBackModel; end
-    end
-
-    class RSS10
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            class TrackBackAbout < TrackBackAboutBase
-              def to_rss(rss, current)
-                if resource
-                  about = ::RSS::TrackBackModel10::TrackBackAbout.new(resource)
-                  current.trackback_abouts << about
-                end
-              end
-            end
-          end
-        end
-      end
-    end
-
-    class RSS09
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            def to_rss(*args)
-            end
-            class TrackBackAbout < TrackBackAboutBase
-            end
-          end
-        end
-      end
-    end
-    
-    class RSS20
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            class TrackBackAbout < TrackBackAboutBase
-              def to_rss(rss, current)
-                if content
-                  about = ::RSS::TrackBackModel20::TrackBackAbout.new(content)
-                  current.trackback_abouts << about
-                end
-              end
-            end
-          end
-        end
-      end
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/parser.rb
deleted file mode 100644
index 033bc12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/parser.rb
+++ /dev/null
@@ -1,476 +0,0 @@
-require "forwardable"
-require "open-uri"
-
-require "rss/rss"
-
-module RSS
-
-  class NotWellFormedError < Error
-    attr_reader :line, :element
-
-    # Create a new NotWellFormedError for an error at +line+
-    # in +element+.  If a block is given the return value of
-    # the block ends up in the error message.
-    def initialize(line=nil, element=nil)
-      message = "This is not well formed XML"
-      if element or line
-        message << "\nerror occurred"
-        message << " in #{element}" if element
-        message << " at about #{line} line" if line
-      end
-      message << "\n#{yield}" if block_given?
-      super(message)
-    end
-  end
-
-  class XMLParserNotFound < Error
-    def initialize
-      super("available XML parser was not found in " <<
-            "#{AVAILABLE_PARSER_LIBRARIES.inspect}.")
-    end
-  end
-
-  class NotValidXMLParser < Error
-    def initialize(parser)
-      super("#{parser} is not an available XML parser. " <<
-            "Available XML parser"<<
-            (AVAILABLE_PARSERS.size > 1 ? "s are ": " is ") <<
-            "#{AVAILABLE_PARSERS.inspect}.")
-    end
-  end
-
-  class NSError < InvalidRSSError
-    attr_reader :tag, :prefix, :uri
-    def initialize(tag, prefix, require_uri)
-      @tag, @prefix, @uri = tag, prefix, require_uri
-      super("prefix <#{prefix}> doesn't associate uri " <<
-            "<#{require_uri}> in tag <#{tag}>")
-    end
-  end
-
-  class Parser
-
-    extend Forwardable
-
-    class << self
-
-      @@default_parser = nil
-
-      def default_parser
-        @@default_parser || AVAILABLE_PARSERS.first
-      end
-
-      # Set @@default_parser to new_value if it is one of the
-      # available parsers. Else raise NotValidXMLParser error.
-      def default_parser=(new_value)
-        if AVAILABLE_PARSERS.include?(new_value)
-          @@default_parser = new_value
-        else
-          raise NotValidXMLParser.new(new_value)
-        end
-      end
-
-      def parse(rss, do_validate=true, ignore_unknown_element=true,
-                parser_class=default_parser)
-        parser = new(rss, parser_class)
-        parser.do_validate = do_validate
-        parser.ignore_unknown_element = ignore_unknown_element
-        parser.parse
-      end
-    end
-
-    def_delegators(:@parser, :parse, :rss,
-                   :ignore_unknown_element,
-                   :ignore_unknown_element=, :do_validate,
-                   :do_validate=)
-
-    def initialize(rss, parser_class=self.class.default_parser)
-      @parser = parser_class.new(normalize_rss(rss))
-    end
-
-    private
-
-    # Try to get the XML associated with +rss+.
-    # Return +rss+ if it already looks like XML, or treat it as a URI,
-    # or a file to get the XML,
-    def normalize_rss(rss)
-      return rss if maybe_xml?(rss)
-
-      uri = to_uri(rss)
-      
-      if uri.respond_to?(:read)
-        uri.read
-      elsif !rss.tainted? and File.readable?(rss)
-        File.open(rss) {|f| f.read}
-      else
-        rss
-      end
-    end
-
-    # maybe_xml? tests if source is a string that looks like XML.
-    def maybe_xml?(source)
-      source.is_a?(String) and /</ =~ source
-    end
-
-    # Attempt to convert rss to a URI, but just return it if 
-    # there's a ::URI::Error
-    def to_uri(rss)
-      return rss if rss.is_a?(::URI::Generic)
-
-      begin
-        URI(rss)
-      rescue ::URI::Error
-        rss
-      end
-    end
-  end
-
-  class BaseParser
-
-    class << self
-      def raise_for_undefined_entity?
-        listener.raise_for_undefined_entity?
-      end
-    end
-    
-    def initialize(rss)
-      @listener = self.class.listener.new
-      @rss = rss
-    end
-
-    def rss
-      @listener.rss
-    end
-
-    def ignore_unknown_element
-      @listener.ignore_unknown_element
-    end
-
-    def ignore_unknown_element=(new_value)
-      @listener.ignore_unknown_element = new_value
-    end
-
-    def do_validate
-      @listener.do_validate
-    end
-
-    def do_validate=(new_value)
-      @listener.do_validate = new_value
-    end
-
-    def parse
-      if @listener.rss.nil?
-        _parse
-      end
-      @listener.rss
-    end
-
-  end
-
-  class BaseListener
-
-    extend Utils
-
-    class << self
-
-      @@setters = {}
-      @@registered_uris = {}
-      @@class_names = {}
-
-      # return the setter for the uri, tag_name pair, or nil.
-      def setter(uri, tag_name)
-        begin
-          @@setters[uri][tag_name]
-        rescue NameError
-          nil
-        end
-      end
-
-
-      # return the tag_names for setters associated with uri
-      def available_tags(uri)
-        begin
-          @@setters[uri].keys
-        rescue NameError
-          []
-        end
-      end
-      
-      # register uri against this name.
-      def register_uri(uri, name)
-        @@registered_uris[name] ||= {}
-        @@registered_uris[name][uri] = nil
-      end
-      
-      # test if this uri is registered against this name
-      def uri_registered?(uri, name)
-        @@registered_uris[name].has_key?(uri)
-      end
-
-      # record class_name for the supplied uri and tag_name
-      def install_class_name(uri, tag_name, class_name)
-        @@class_names[uri] ||= {}
-        @@class_names[uri][tag_name] = class_name
-      end
-
-      # retrieve class_name for the supplied uri and tag_name
-      # If it doesn't exist, capitalize the tag_name
-      def class_name(uri, tag_name)
-        begin
-          @@class_names[uri][tag_name]
-        rescue NameError
-          tag_name[0,1].upcase + tag_name[1..-1]
-        end
-      end
-
-      def install_get_text_element(uri, name, setter)
-        install_setter(uri, name, setter)
-        def_get_text_element(uri, name, *get_file_and_line_from_caller(1))
-      end
-      
-      def raise_for_undefined_entity?
-        true
-      end
-    
-      private
-      # set the setter for the uri, tag_name pair
-      def install_setter(uri, tag_name, setter)
-        @@setters[uri] ||= {}
-        @@setters[uri][tag_name] = setter
-      end
-
-      def def_get_text_element(uri, name, file, line)
-        register_uri(uri, name)
-        unless private_instance_methods(false).include?("start_#{name}")
-          module_eval(<<-EOT, file, line)
-          def start_#{name}(name, prefix, attrs, ns)
-            uri = _ns(ns, prefix)
-            if self.class.uri_registered?(uri, #{name.inspect})
-              start_get_text_element(name, prefix, ns, uri)
-            else
-              start_else_element(name, prefix, attrs, ns)
-            end
-          end
-          EOT
-          __send__("private", "start_#{name}")
-        end
-      end
-
-    end
-
-  end
-
-  module ListenerMixin
-
-    attr_reader :rss
-
-    attr_accessor :ignore_unknown_element
-    attr_accessor :do_validate
-
-    def initialize
-      @rss = nil
-      @ignore_unknown_element = true
-      @do_validate = true
-      @ns_stack = [{}]
-      @tag_stack = [[]]
-      @text_stack = ['']
-      @proc_stack = []
-      @last_element = nil
-      @version = @encoding = @standalone = nil
-      @xml_stylesheets = []
-    end
-    
-    # set instance vars for version, encoding, standalone
-    def xmldecl(version, encoding, standalone)
-      @version, @encoding, @standalone = version, encoding, standalone
-    end
-
-    def instruction(name, content)
-      if name == "xml-stylesheet"
-        params = parse_pi_content(content)
-        if params.has_key?("href")
-          @xml_stylesheets << XMLStyleSheet.new(*params)
-        end
-      end
-    end
-
-    def tag_start(name, attributes)
-      @text_stack.push('')
-
-      ns = @ns_stack.last.dup
-      attrs = {}
-      attributes.each do |n, v|
-        if /\Axmlns(?:\z|:)/ =~ n
-          ns[$POSTMATCH] = v
-        else
-          attrs[n] = v
-        end
-      end
-      @ns_stack.push(ns)
-
-      prefix, local = split_name(name)
-      @tag_stack.last.push([_ns(ns, prefix), local])
-      @tag_stack.push([])
-      if respond_to?("start_#{local}", true)
-        __send__("start_#{local}", local, prefix, attrs, ns.dup)
-      else
-        start_else_element(local, prefix, attrs, ns.dup)
-      end
-    end
-
-    def tag_end(name)
-      if DEBUG
-        p "end tag #{name}"
-        p @tag_stack
-      end
-      text = @text_stack.pop
-      tags = @tag_stack.pop
-      pr = @proc_stack.pop
-      pr.call(text, tags) unless pr.nil?
-      @ns_stack.pop
-    end
-
-    def text(data)
-      @text_stack.last << data
-    end
-
-    private
-    def _ns(ns, prefix)
-      ns.fetch(prefix, "")
-    end
-
-    CONTENT_PATTERN = /\s*([^=]+)=(["'])([^\2]+?)\2/
-    # Extract the first name="value" pair from content.
-    # Works with single quotes according to the constant
-    # CONTENT_PATTERN. Return a Hash.
-    def parse_pi_content(content)
-      params = {}
-      content.scan(CONTENT_PATTERN) do |name, quote, value|
-        params[name] = value
-      end
-      params
-    end
-
-    def start_else_element(local, prefix, attrs, ns)
-      class_name = self.class.class_name(_ns(ns, prefix), local)
-      current_class = @last_element.class
-      if current_class.constants.include?(class_name)
-        next_class = current_class.const_get(class_name)
-        start_have_something_element(local, prefix, attrs, ns, next_class)
-      else
-        if !@do_validate or @ignore_unknown_element
-          @proc_stack.push(nil)
-        else
-          parent = "ROOT ELEMENT???"
-          if current_class.tag_name
-            parent = current_class.tag_name
-          end
-          raise NotExpectedTagError.new(local, _ns(ns, prefix), parent)
-        end
-      end
-    end
-
-    NAMESPLIT = /^(?:([\w:][-\w\d.]*):)?([\w:][-\w\d.]*)/
-    def split_name(name)
-      name =~ NAMESPLIT
-      [$1 || '', $2]
-    end
-
-    def check_ns(tag_name, prefix, ns, require_uri)
-      if @do_validate
-        if _ns(ns, prefix) == require_uri
-          #ns.delete(prefix)
-        else
-          raise NSError.new(tag_name, prefix, require_uri)
-        end
-      end
-    end
-
-    def start_get_text_element(tag_name, prefix, ns, required_uri)
-      @proc_stack.push Proc.new {|text, tags|
-        setter = self.class.setter(required_uri, tag_name)
-        if @last_element.respond_to?(setter)
-          @last_element.__send__(setter, text.to_s)
-        else
-          if @do_validate and !@ignore_unknown_element
-            raise NotExpectedTagError.new(tag_name, _ns(ns, prefix),
-                                          @last_element.tag_name)
-          end
-        end
-      }
-    end
-
-    def start_have_something_element(tag_name, prefix, attrs, ns, klass)
-
-      check_ns(tag_name, prefix, ns, klass.required_uri)
-
-      attributes = {}
-      klass.get_attributes.each do |a_name, a_uri, required, element_name|
-
-        if a_uri.is_a?(String) or !a_uri.respond_to?(:include?)
-          a_uri = [a_uri]
-        end
-        unless a_uri == [""]
-          for prefix, uri in ns
-            if a_uri.include?(uri)
-              val = attrs["#{prefix}:#{a_name}"]
-              break if val
-            end
-          end
-        end
-        if val.nil? and a_uri.include?("")
-          val = attrs[a_name]
-        end
-
-        if @do_validate and required and val.nil?
-          unless a_uri.include?("")
-            for prefix, uri in ns
-              if a_uri.include?(uri)
-                a_name = "#{prefix}:#{a_name}"
-              end
-            end
-          end
-          raise MissingAttributeError.new(tag_name, a_name)
-        end
-
-        attributes[a_name] = val
-      end
-
-      previous = @last_element
-      next_element = klass.new(@do_validate, attributes)
-      previous.instance_eval {set_next_element(tag_name, next_element)}
-      @last_element = next_element
-      @proc_stack.push Proc.new { |text, tags|
-        p(@last_element.class) if DEBUG
-        @last_element.content = text if klass.have_content?
-        if @do_validate
-          @last_element.validate_for_stream(tags, @ignore_unknown_element)
-        end
-        @last_element = previous
-      }
-    end
-
-  end
-
-  unless const_defined? :AVAILABLE_PARSER_LIBRARIES
-    AVAILABLE_PARSER_LIBRARIES = [
-      ["rss/xmlparser", :XMLParserParser],
-      ["rss/xmlscanner", :XMLScanParser],
-      ["rss/rexmlparser", :REXMLParser],
-    ]
-  end
-
-  AVAILABLE_PARSERS = []
-
-  AVAILABLE_PARSER_LIBRARIES.each do |lib, parser|
-    begin
-      require lib
-      AVAILABLE_PARSERS.push(const_get(parser))
-    rescue LoadError
-    end
-  end
-
-  if AVAILABLE_PARSERS.empty?
-    raise XMLParserNotFound
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rexmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rexmlparser.rb
deleted file mode 100644
index 4dabf59..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rexmlparser.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require "rexml/document"
-require "rexml/streamlistener"
-
-/\A(\d+)\.(\d+)(?:\.\d+)+\z/ =~ REXML::Version
-if ([$1.to_i, $2.to_i] <=> [2, 5]) < 0
-  raise LoadError, "needs REXML 2.5 or later (#{REXML::Version})"
-end
-
-module RSS
-  
-  class REXMLParser < BaseParser
-
-    class << self
-      def listener
-        REXMLListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        REXML::Document.parse_stream(@rss, @listener)
-      rescue RuntimeError => e
-        raise NotWellFormedError.new{e.message}
-      rescue REXML::ParseException => e
-        context = e.context
-        line = context[0] if context
-        raise NotWellFormedError.new(line){e.message}
-      end
-    end
-    
-  end
-  
-  class REXMLListener < BaseListener
-
-    include REXML::StreamListener
-    include ListenerMixin
-
-    class << self
-      def raise_for_undefined_entity?
-        false
-      end
-    end
-    
-    def xmldecl(version, encoding, standalone)
-      super(version, encoding, standalone == "yes")
-      # Encoding is converted to UTF-8 when REXML parse XML.
-      @encoding = 'UTF-8'
-    end
-
-    alias_method(:cdata, :text)
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rss.rb
deleted file mode 100644
index a06985a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/rss.rb
+++ /dev/null
@@ -1,1015 +0,0 @@
-require "time"
-
-class Time
-  class << self
-    unless respond_to?(:w3cdtf)
-      def w3cdtf(date)
-        if /\A\s*
-            (-?\d+)-(\d\d)-(\d\d)
-            (?:T
-            (\d\d):(\d\d)(?::(\d\d))?
-            (\.\d+)?
-            (Z|[+-]\d\d:\d\d)?)?
-            \s*\z/ix =~ date and (($5 and $8) or (!$5 and !$8))
-          datetime = [$1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i] 
-          datetime << $7.to_f * 1000000 if $7
-          if $8
-            Time.utc(*datetime) - zone_offset($8)
-          else
-            Time.local(*datetime)
-          end
-        else
-          raise ArgumentError.new("invalid date: #{date.inspect}")
-        end
-      end
-    end
-  end
-
-  unless instance_methods.include?("w3cdtf")
-    alias w3cdtf iso8601
-  end
-end
-
-require "English"
-require "rss/utils"
-require "rss/converter"
-require "rss/xml-stylesheet"
-
-module RSS
-
-  VERSION = "0.1.6"
-
-  URI = "http://purl.org/rss/1.0/"
-
-  DEBUG = false
-
-  class Error < StandardError; end
-
-  class OverlappedPrefixError < Error
-    attr_reader :prefix
-    def initialize(prefix)
-      @prefix = prefix
-    end
-  end
-
-  class InvalidRSSError < Error; end
-
-  class MissingTagError < InvalidRSSError
-    attr_reader :tag, :parent
-    def initialize(tag, parent)
-      @tag, @parent = tag, parent
-      super("tag <#{tag}> is missing in tag <#{parent}>")
-    end
-  end
-
-  class TooMuchTagError < InvalidRSSError
-    attr_reader :tag, :parent
-    def initialize(tag, parent)
-      @tag, @parent = tag, parent
-      super("tag <#{tag}> is too much in tag <#{parent}>")
-    end
-  end
-
-  class MissingAttributeError < InvalidRSSError
-    attr_reader :tag, :attribute
-    def initialize(tag, attribute)
-      @tag, @attribute = tag, attribute
-      super("attribute <#{attribute}> is missing in tag <#{tag}>")
-    end
-  end
-
-  class UnknownTagError < InvalidRSSError
-    attr_reader :tag, :uri
-    def initialize(tag, uri)
-      @tag, @uri = tag, uri
-      super("tag <#{tag}> is unknown in namespace specified by uri <#{uri}>")
-    end
-  end
-
-  class NotExpectedTagError < InvalidRSSError
-    attr_reader :tag, :uri, :parent
-    def initialize(tag, uri, parent)
-      @tag, @uri, @parent = tag, uri, parent
-      super("tag <{#{uri}}#{tag}> is not expected in tag <#{parent}>")
-    end
-  end
-  # For backward compatibility :X
-  NotExceptedTagError = NotExpectedTagError
-
-  class NotAvailableValueError < InvalidRSSError
-    attr_reader :tag, :value, :attribute
-    def initialize(tag, value, attribute=nil)
-      @tag, @value, @attribute = tag, value, attribute
-      message = "value <#{value}> of "
-      message << "attribute <#{attribute}> of " if attribute
-      message << "tag <#{tag}> is not available."
-      super(message)
-    end
-  end
-
-  class UnknownConversionMethodError < Error
-    attr_reader :to, :from
-    def initialize(to, from)
-      @to = to
-      @from = from
-      super("can't convert to #{to} from #{from}.")
-    end
-  end
-  # for backward compatibility
-  UnknownConvertMethod = UnknownConversionMethodError
-
-  class ConversionError < Error
-    attr_reader :string, :to, :from
-    def initialize(string, to, from)
-      @string = string
-      @to = to
-      @from = from
-      super("can't convert #{@string} to #{to} from #{from}.")
-    end
-  end
-
-  class NotSetError < Error
-    attr_reader :name, :variables
-    def initialize(name, variables)
-      @name = name
-      @variables = variables
-      super("required variables of #{@name} are not set: #{@variables.join(', ')}")
-    end
-  end
-  
-  module BaseModel
-
-    include Utils
-
-    def install_have_child_element(tag_name, uri, occurs, name=nil)
-      name ||= tag_name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      attr_accessor name
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          "\#{@#{n}.to_s(need_convert, indent)}"
-        else
-          ''
-        end
-EOC
-      end
-    end
-    alias_method(:install_have_attribute_element, :install_have_child_element)
-
-    def install_have_children_element(tag_name, uri, occurs, name=nil, plural_name=nil)
-      name ||= tag_name
-      plural_name ||= "#{name}s"
-      add_have_children_element(name, plural_name)
-      add_plural_form(name, plural_name)
-      install_model(tag_name, uri, occurs, plural_name)
-
-      def_children_accessor(name, plural_name)
-      install_element(name, "s") do |n, elem_name|
-        <<-EOC
-        rv = []
-        @#{n}.each do |x|
-          value = "\#{x.to_s(need_convert, indent)}"
-          rv << value if /\\A\\s*\\z/ !~ value
-        end
-        rv.join("\n")
-EOC
-      end
-    end
-
-    def install_text_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
-      name ||= tag_name
-      disp_name ||= name
-      self::ELEMENTS << name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      def_corresponded_attr_writer name, type, disp_name
-      convert_attr_reader name
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          rv = "\#{indent}<#{elem_name}>"
-          value = html_escape(@#{n})
-          if need_convert
-            rv << convert(value)
-          else
-            rv << value
-          end
-    	    rv << "</#{elem_name}>"
-          rv
-        else
-          ''
-        end
-EOC
-      end
-    end
-
-    def install_date_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
-      name ||= tag_name
-      type ||= :w3cdtf
-      disp_name ||= name
-      self::ELEMENTS << name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      # accessor
-      convert_attr_reader name
-      date_writer(name, type, disp_name)
-      
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          rv = "\#{indent}<#{elem_name}>"
-          value = html_escape(@#{n}.#{type})
-          if need_convert
-            rv << convert(value)
-          else
-            rv << value
-          end
-    	    rv << "</#{elem_name}>"
-          rv
-        else
-          ''
-        end
-EOC
-      end
-
-    end
-
-    private
-    def install_element(name, postfix="")
-      elem_name = name.sub('_', ':')
-      method_name = "#{name}_element#{postfix}"
-      add_to_element_method(method_name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{method_name}(need_convert=true, indent='')
-        #{yield(name, elem_name)}
-      end
-      private :#{method_name}
-EOC
-    end
-
-    def convert_attr_reader(*attrs)
-      attrs.each do |attr|
-        attr = attr.id2name if attr.kind_of?(Integer)
-        module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-        def #{attr}
-          if @converter
-            @converter.convert(@#{attr})
-          else
-            @#{attr}
-          end
-        end
-EOC
-      end
-    end
-
-    def date_writer(name, type, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil? or new_value.kind_of?(Time)
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              @#{name} = Time.__send__('#{type}', new_value)
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = nil
-            if /\\A\\s*\\z/ !~ new_value.to_s
-              begin
-                @#{name} = Time.parse(new_value)
-              rescue ArgumentError
-              end
-            end
-          end
-        end
-
-        # Is it need?
-        if @#{name}
-          class << @#{name}
-            undef_method(:to_s)
-            alias_method(:to_s, :#{type})
-          end
-        end
-
-      end
-EOC
-    end
-
-    def integer_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              @#{name} = Integer(new_value)
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = new_value.to_i
-          end
-        end
-      end
-EOC
-    end
-
-    def positive_integer_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              tmp = Integer(new_value)
-              raise ArgumentError if tmp <= 0
-              @#{name} = tmp
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = new_value.to_i
-          end
-        end
-      end
-EOC
-    end
-
-    def boolean_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate and
-              ![true, false, "true", "false"].include?(new_value)
-            raise NotAvailableValueError.new('#{disp_name}', new_value)
-          end
-          if [true, false].include?(new_value)
-            @#{name} = new_value
-          else
-            @#{name} = new_value == "true"
-          end
-        end
-      end
-EOC
-    end
-
-    def def_children_accessor(accessor_name, plural_name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{plural_name}
-        @#{accessor_name}
-      end
-
-      def #{accessor_name}(*args)
-        if args.empty?
-          @#{accessor_name}.first
-        else
-          @#{accessor_name}[*args]
-        end
-      end
-
-      def #{accessor_name}=(*args)
-        warn("Warning:\#{caller.first.sub(/:in `.*'\z/, '')}: " \
-             "Don't use `#{accessor_name} = XXX'/`set_#{accessor_name}(XXX)'. " \
-             "Those APIs are not sense of Ruby. " \
-             "Use `#{plural_name} << XXX' instead of them.")
-        if args.size == 1
-          @#{accessor_name}.push(args[0])
-        else
-          @#{accessor_name}.__send__("[]=", *args)
-        end
-      end
-      alias_method(:set_#{accessor_name}, :#{accessor_name}=)
-EOC
-    end
-  end
-
-  class Element
-
-    extend BaseModel
-    include Utils
-
-    INDENT = "  "
-    
-    MUST_CALL_VALIDATORS = {}
-    MODELS = []
-    GET_ATTRIBUTES = []
-    HAVE_CHILDREN_ELEMENTS = []
-    TO_ELEMENT_METHODS = []
-    NEED_INITIALIZE_VARIABLES = []
-    PLURAL_FORMS = {}
-    
-    class << self
-
-      def must_call_validators
-        MUST_CALL_VALIDATORS
-      end
-      def models
-        MODELS
-      end
-      def get_attributes
-        GET_ATTRIBUTES
-      end
-      def have_children_elements
-        HAVE_CHILDREN_ELEMENTS
-      end
-      def to_element_methods
-        TO_ELEMENT_METHODS
-      end
-      def need_initialize_variables
-        NEED_INITIALIZE_VARIABLES
-      end
-      def plural_forms
-        PLURAL_FORMS
-      end
-
-      
-      def inherited(klass)
-        klass.const_set("MUST_CALL_VALIDATORS", {})
-        klass.const_set("MODELS", [])
-        klass.const_set("GET_ATTRIBUTES", [])
-        klass.const_set("HAVE_CHILDREN_ELEMENTS", [])
-        klass.const_set("TO_ELEMENT_METHODS", [])
-        klass.const_set("NEED_INITIALIZE_VARIABLES", [])
-        klass.const_set("PLURAL_FORMS", {})
-
-        klass.module_eval(<<-EOC)
-        public
-        
-        @tag_name = name.split(/::/).last
-        @tag_name[0,1] = @tag_name[0,1].downcase
-        @have_content = false
-
-        def self.must_call_validators
-          super.merge(MUST_CALL_VALIDATORS)
-        end
-        def self.models
-          MODELS + super
-        end
-        def self.get_attributes
-          GET_ATTRIBUTES + super
-        end
-        def self.have_children_elements
-          HAVE_CHILDREN_ELEMENTS + super
-        end
-        def self.to_element_methods
-          TO_ELEMENT_METHODS + super
-        end
-        def self.need_initialize_variables
-          NEED_INITIALIZE_VARIABLES + super
-        end
-        def self.plural_forms
-          super.merge(PLURAL_FORMS)
-        end
-
-      
-        def self.install_must_call_validator(prefix, uri)
-          MUST_CALL_VALIDATORS[uri] = prefix
-        end
-        
-        def self.install_model(tag, uri, occurs=nil, getter=nil)
-          getter ||= tag
-          if m = MODELS.find {|t, u, o, g| t == tag and u == uri}
-            m[2] = occurs
-          else
-            MODELS << [tag, uri, occurs, getter]
-          end
-        end
-
-        def self.install_get_attribute(name, uri, required=true,
-                                       type=nil, disp_name=nil,
-                                       element_name=nil)
-          disp_name ||= name
-          element_name ||= name
-          def_corresponded_attr_writer name, type, disp_name
-          convert_attr_reader name
-          if type == :boolean and /^is/ =~ name
-            alias_method "\#{$POSTMATCH}?", name
-          end
-          GET_ATTRIBUTES << [name, uri, required, element_name]
-          add_need_initialize_variable(disp_name)
-        end
-
-        def self.def_corresponded_attr_writer(name, type=nil, disp_name=name)
-          case type
-          when :integer
-            integer_writer name, disp_name
-          when :positive_integer
-            positive_integer_writer name, disp_name
-          when :boolean
-            boolean_writer name, disp_name
-          when :w3cdtf, :rfc822, :rfc2822
-            date_writer name, type, disp_name
-          else
-            attr_writer name
-          end
-        end
-
-        def self.content_setup(type=nil)
-          def_corresponded_attr_writer "content", type
-          convert_attr_reader :content
-          @have_content = true
-        end
-
-        def self.have_content?
-          @have_content
-        end
-
-        def self.add_have_children_element(variable_name, plural_name)
-          HAVE_CHILDREN_ELEMENTS << [variable_name, plural_name]
-        end
-        
-        def self.add_to_element_method(method_name)
-          TO_ELEMENT_METHODS << method_name
-        end
-
-        def self.add_need_initialize_variable(variable_name)
-          NEED_INITIALIZE_VARIABLES << variable_name
-        end
-        
-        def self.add_plural_form(singular, plural)
-          PLURAL_FORMS[singular] = plural
-        end
-        
-        EOC
-      end
-
-      def required_prefix
-        nil
-      end
-
-      def required_uri
-        ""
-      end
-      
-      def install_ns(prefix, uri)
-        if self::NSPOOL.has_key?(prefix)
-          raise OverlappedPrefixError.new(prefix)
-        end
-        self::NSPOOL[prefix] = uri
-      end
-
-      def tag_name
-        @tag_name
-      end
-    end
-
-    attr_accessor :do_validate
-
-    def initialize(do_validate=true, attrs={})
-      @converter = nil
-      @do_validate = do_validate
-      initialize_variables(attrs)
-    end
-
-    def tag_name
-      self.class.tag_name
-    end
-
-    def full_name
-      tag_name
-    end
-    
-    def converter=(converter)
-      @converter = converter
-      targets = children.dup
-      self.class.have_children_elements.each do |variable_name, plural_name|
-        targets.concat(__send__(plural_name))
-      end
-      targets.each do |target|
-        target.converter = converter unless target.nil?
-      end
-    end
-
-    def convert(value)
-      if @converter
-        @converter.convert(value)
-      else
-        value
-      end
-    end
-    
-    def validate(ignore_unknown_element=true)
-      validate_attribute
-      __validate(ignore_unknown_element)
-    end
-    
-    def validate_for_stream(tags, ignore_unknown_element=true)
-      validate_attribute
-      __validate(ignore_unknown_element, tags, false)
-    end
-
-    def setup_maker(maker)
-      target = maker_target(maker)
-      unless target.nil?
-        setup_maker_attributes(target)
-        setup_maker_element(target)
-        setup_maker_elements(target)
-      end
-    end
-
-    def to_s(need_convert=true, indent='')
-      if self.class.have_content?
-        return "" unless @content
-        rv = tag(indent) do |next_indent|
-          h(@content)
-        end
-      else
-        rv = tag(indent) do |next_indent|
-          self.class.to_element_methods.collect do |method_name|
-            __send__(method_name, false, next_indent)
-          end
-        end
-      end
-      rv = convert(rv) if need_convert
-      rv
-    end
-
-    private
-    def initialize_variables(attrs)
-      normalized_attrs = {}
-      attrs.each do |key, value|
-        normalized_attrs[key.to_s] = value
-      end
-      self.class.need_initialize_variables.each do |variable_name|
-        value = normalized_attrs[variable_name.to_s]
-        if value
-          __send__("#{variable_name}=", value)
-        else
-          instance_eval("@#{variable_name} = nil")
-        end
-      end
-      initialize_have_children_elements
-      @content = "" if self.class.have_content?
-    end
-
-    def initialize_have_children_elements
-      self.class.have_children_elements.each do |variable_name, plural_name|
-        instance_eval("@#{variable_name} = []")
-      end
-    end
-
-    def tag(indent, additional_attrs={}, &block)
-      next_indent = indent + INDENT
-
-      attrs = collect_attrs
-      return "" if attrs.nil?
-
-      attrs.update(additional_attrs)
-      start_tag = make_start_tag(indent, next_indent, attrs)
-
-      if block
-        content = block.call(next_indent)
-      else
-        content = []
-      end
-
-      if content.is_a?(String)
-        content = [content]
-        start_tag << ">"
-        end_tag = "</#{full_name}>"
-      else
-        content = content.reject{|x| x.empty?}
-        if content.empty?
-          end_tag = "/>"
-        else
-          start_tag << ">\n"
-          end_tag = "\n#{indent}</#{full_name}>"
-        end
-      end
-      
-      start_tag + content.join("\n") + end_tag
-    end
-
-    def make_start_tag(indent, next_indent, attrs)
-      start_tag = ["#{indent}<#{full_name}"]
-      unless attrs.empty?
-        start_tag << attrs.collect do |key, value|
-          %Q[#{h key}="#{h value}"]
-        end.join("\n#{next_indent}")
-      end
-      start_tag.join(" ")
-    end
-
-    def collect_attrs
-      attrs = {}
-      _attrs.each do |name, required, alias_name|
-        value = __send__(alias_name || name)
-        return nil if required and value.nil?
-        next if value.nil?
-        return nil if attrs.has_key?(name)
-        attrs[name] = value
-      end
-      attrs
-    end
-    
-    def tag_name_with_prefix(prefix)
-      "#{prefix}:#{tag_name}"
-    end
-
-    # For backward compatibility
-    def calc_indent
-      ''
-    end
-
-    def maker_target(maker)
-      nil
-    end
-    
-    def setup_maker_attributes(target)
-    end
-    
-    def setup_maker_element(target)
-      self.class.need_initialize_variables.each do |var|
-        value = __send__(var)
-        if value.respond_to?("setup_maker") and
-            !not_need_to_call_setup_maker_variables.include?(var)
-          value.setup_maker(target)
-        else
-          setter = "#{var}="
-          if target.respond_to?(setter)
-            target.__send__(setter, value)
-          end
-        end
-      end
-    end
-
-    def not_need_to_call_setup_maker_variables
-      []
-    end
-    
-    def setup_maker_elements(parent)
-      self.class.have_children_elements.each do |name, plural_name|
-        if parent.respond_to?(plural_name)
-          target = parent.__send__(plural_name)
-          __send__(plural_name).each do |elem|
-            elem.setup_maker(target)
-          end
-        end
-      end
-    end
-
-    def set_next_element(tag_name, next_element)
-      klass = next_element.class
-      prefix = ""
-      prefix << "#{klass.required_prefix}_" if klass.required_prefix
-      key = "#{prefix}#{tag_name}"
-      if self.class.plural_forms.has_key?(key)
-        ary = __send__("#{self.class.plural_forms[key]}")
-        ary << next_element
-      else
-        __send__("#{prefix}#{tag_name}=", next_element)
-      end
-    end
-
-    def children
-      rv = []
-      self.class.models.each do |name, uri, occurs, getter|
-        value = __send__(getter)
-        next if value.nil?
-        value = [value] unless value.is_a?(Array)
-        value.each do |v|
-          rv << v if v.is_a?(Element)
-        end
-      end
-      rv
-    end
-
-    def _tags
-      rv = []
-      self.class.models.each do |name, uri, occurs, getter|
-        value = __send__(getter)
-        next if value.nil?
-        if value.is_a?(Array)
-          rv.concat([[uri, name]] * value.size)
-        else
-          rv << [uri, name]
-        end
-      end
-      rv
-    end
-
-    def _attrs
-      self.class.get_attributes.collect do |name, uri, required, element_name|
-        [element_name, required, name]
-      end
-    end
-
-    def __validate(ignore_unknown_element, tags=_tags, recursive=true)
-      if recursive
-        children.compact.each do |child|
-          child.validate
-        end
-      end
-      must_call_validators = self.class.must_call_validators
-      tags = tag_filter(tags.dup)
-      p tags if DEBUG
-      must_call_validators.each do |uri, prefix|
-        _validate(ignore_unknown_element, tags[uri], uri)
-        meth = "#{prefix}_validate"
-        if respond_to?(meth, true)
-          __send__(meth, ignore_unknown_element, tags[uri], uri)
-        end
-      end
-    end
-
-    def validate_attribute
-      _attrs.each do |a_name, required, alias_name|
-        if required and __send__(alias_name || a_name).nil?
-          raise MissingAttributeError.new(tag_name, a_name)
-        end
-      end
-    end
-
-    def _validate(ignore_unknown_element, tags, uri, models=self.class.models)
-      count = 1
-      do_redo = false
-      not_shift = false
-      tag = nil
-      models = models.find_all {|model| model[1] == uri}
-      element_names = models.collect {|model| model[0]}
-      if tags
-        tags_size = tags.size
-        tags = tags.sort_by {|x| element_names.index(x) || tags_size}
-      end
-
-      models.each_with_index do |model, i|
-        name, model_uri, occurs, getter = model
-
-        if DEBUG
-          p "before" 
-          p tags
-          p model
-        end
-
-        if not_shift
-          not_shift = false
-        elsif tags
-          tag = tags.shift
-        end
-
-        if DEBUG
-          p "mid"
-          p count
-        end
-
-        case occurs
-        when '?'
-          if count > 2
-            raise TooMuchTagError.new(name, tag_name)
-          else
-            if name == tag
-              do_redo = true
-            else
-              not_shift = true
-            end
-          end
-        when '*'
-          if name == tag
-            do_redo = true
-          else
-            not_shift = true
-          end
-        when '+'
-          if name == tag
-            do_redo = true
-          else
-            if count > 1
-              not_shift = true
-            else
-              raise MissingTagError.new(name, tag_name)
-            end
-          end
-        else
-          if name == tag
-            if models[i+1] and models[i+1][0] != name and
-                tags and tags.first == name
-              raise TooMuchTagError.new(name, tag_name)
-            end
-          else
-            raise MissingTagError.new(name, tag_name)
-          end
-        end
-
-        if DEBUG
-          p "after"
-          p not_shift
-          p do_redo
-          p tag
-        end
-
-        if do_redo
-          do_redo = false
-          count += 1
-          redo
-        else
-          count = 1
-        end
-
-      end
-
-      if !ignore_unknown_element and !tags.nil? and !tags.empty?
-        raise NotExpectedTagError.new(tags.first, uri, tag_name)
-      end
-
-    end
-
-    def tag_filter(tags)
-      rv = {}
-      tags.each do |tag|
-        rv[tag[0]] = [] unless rv.has_key?(tag[0])
-        rv[tag[0]].push(tag[1])
-      end
-      rv
-    end
-
-  end
-
-  module RootElementMixin
-
-    include XMLStyleSheetMixin
-    
-    attr_reader :output_encoding
-
-    def initialize(rss_version, version=nil, encoding=nil, standalone=nil)
-      super()
-      @rss_version = rss_version
-      @version = version || '1.0'
-      @encoding = encoding
-      @standalone = standalone
-      @output_encoding = nil
-    end
-
-    def output_encoding=(enc)
-      @output_encoding = enc
-      self.converter = Converter.new(@output_encoding, @encoding)
-    end
-
-    def setup_maker(maker)
-      maker.version = version
-      maker.encoding = encoding
-      maker.standalone = standalone
-
-      xml_stylesheets.each do |xss|
-        xss.setup_maker(maker)
-      end
-
-      setup_maker_elements(maker)
-    end
-
-    def to_xml(version=nil, &block)
-      if version.nil? or version == @rss_version
-        to_s
-      else
-        RSS::Maker.make(version) do |maker|
-          setup_maker(maker)
-          block.call(maker) if block
-        end.to_s
-      end
-    end
-
-    private
-    def tag(indent, attrs={}, &block)
-      rv = xmldecl + xml_stylesheet_pi
-      rv << super(indent, ns_declarations.merge(attrs), &block)
-      rv
-    end
-
-    def xmldecl
-      rv = %Q[<?xml version="#{@version}"]
-      if @output_encoding or @encoding
-        rv << %Q[ encoding="#{@output_encoding or @encoding}"]
-      end
-      rv << %Q[ standalone="yes"] if @standalone
-      rv << "?>\n"
-      rv
-    end
-    
-    def ns_declarations
-      decls = {}
-      self.class::NSPOOL.collect do |prefix, uri|
-        prefix = ":#{prefix}" unless prefix.empty?
-        decls["xmlns#{prefix}"] = uri
-      end
-      decls
-    end
-    
-    def setup_maker_elements(maker)
-      channel.setup_maker(maker) if channel
-      image.setup_maker(maker) if image
-      textinput.setup_maker(maker) if textinput
-      super(maker)
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/syndication.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/syndication.rb
deleted file mode 100644
index 93d35c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/syndication.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  SY_PREFIX = 'sy'
-  SY_URI = "http://purl.org/rss/1.0/modules/syndication/"
-
-  RDF.install_ns(SY_PREFIX, SY_URI)
-
-  module SyndicationModel
-    
-    extend BaseModel
-    
-    ELEMENTS = []
-    
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(SY_PREFIX, SY_URI)
-      klass.module_eval do
-        [
-          ["updatePeriod"],
-          ["updateFrequency", :positive_integer]
-        ].each do |name, type|
-          install_text_element(name, SY_URI, "?",
-                               "#{SY_PREFIX}_#{name}", type,
-                               "#{SY_PREFIX}:#{name}")
-        end
-
-        %w(updateBase).each do |name|
-          install_date_element(name, SY_URI, "?",
-                               "#{SY_PREFIX}_#{name}", 'w3cdtf', name)
-        end
-
-        alias_method(:_sy_updatePeriod=, :sy_updatePeriod=)
-        def sy_updatePeriod=(new_value)
-          new_value = new_value.strip
-          validate_sy_updatePeriod(new_value) if @do_validate
-          self._sy_updatePeriod = new_value
-        end
-      end
-    end
-
-    private
-    SY_UPDATEPERIOD_AVAILABLE_VALUES = %w(hourly daily weekly monthly yearly)
-    def validate_sy_updatePeriod(value)
-      unless SY_UPDATEPERIOD_AVAILABLE_VALUES.include?(value)
-        raise NotAvailableValueError.new("updatePeriod", value)
-      end
-    end
-  end
-
-  class RDF
-    class Channel; include SyndicationModel; end
-  end
-
-  prefix_size = SY_PREFIX.size + 1
-  SyndicationModel::ELEMENTS.uniq!
-  SyndicationModel::ELEMENTS.each do |full_name|
-    name = full_name[prefix_size..-1]
-    BaseListener.install_get_text_element(SY_URI, name, "#{full_name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/taxonomy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/taxonomy.rb
deleted file mode 100644
index 8caa25e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/taxonomy.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require "rss/1.0"
-require "rss/dublincore"
-
-module RSS
-
-  TAXO_PREFIX = "taxo"
-  TAXO_URI = "http://purl.org/rss/1.0/modules/taxonomy/"
-
-  RDF.install_ns(TAXO_PREFIX, TAXO_URI)
-
-  TAXO_ELEMENTS = []
-
-  %w(link).each do |name|
-    full_name = "#{TAXO_PREFIX}_#{name}"
-    BaseListener.install_get_text_element(TAXO_URI, name, "#{full_name}=")
-    TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
-  end
-
-  %w(topic topics).each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(TAXO_URI, name, "Taxonomy#{class_name}")
-    TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
-  end
-
-  module TaxonomyTopicsModel
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(TAXO_PREFIX, TAXO_URI)
-      %w(topics).each do |name|
-        klass.install_have_child_element(name, TAXO_URI, "?",
-                                         "#{TAXO_PREFIX}_#{name}")
-      end
-    end
-
-    class TaxonomyTopics < Element
-      include RSS10
-      
-      Bag = ::RSS::RDF::Bag
-
-      class << self
-        def required_prefix
-          TAXO_PREFIX
-        end
-        
-        def required_uri
-          TAXO_URI
-        end
-      end
-
-      @tag_name = "topics"
-      
-      install_have_child_element("Bag", RDF::URI, nil)
-      install_must_call_validator('rdf', RDF::URI)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.Bag = args[0]
-        end
-        self.Bag ||= Bag.new
-      end
-
-      def full_name
-        tag_name_with_prefix(TAXO_PREFIX)
-      end
-
-      def maker_target(target)
-        target.taxo_topics
-      end
-
-      def resources
-        if @Bag
-          @Bag.lis.collect do |li|
-            li.resource
-          end
-        else
-          []
-        end
-      end
-    end
-  end
-  
-  module TaxonomyTopicModel
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-      var_name = "#{TAXO_PREFIX}_topic"
-      klass.install_have_children_element("topic", TAXO_URI, "*", var_name)
-    end
-
-    class TaxonomyTopic < Element
-      include RSS10
-
-      include DublinCoreModel
-      include TaxonomyTopicsModel
-      
-      class << self
-        def required_prefix
-          TAXO_PREFIX
-        end
-        
-        def required_uri
-          TAXO_URI
-        end
-      end
-
-      @tag_name = "topic"
-
-      install_get_attribute("about", ::RSS::RDF::URI, true, nil, nil,
-                            "#{RDF::PREFIX}:about")
-      install_text_element("link", TAXO_URI, "?", "#{TAXO_PREFIX}_link")
-        
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TAXO_PREFIX)
-      end
-
-      def maker_target(target)
-        target.new_taxo_topic
-      end
-    end
-  end
-
-  class RDF
-    include TaxonomyTopicModel
-    class Channel
-      include TaxonomyTopicsModel
-    end
-    class Item; include TaxonomyTopicsModel; end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/trackback.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/trackback.rb
deleted file mode 100644
index ee2491f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/trackback.rb
+++ /dev/null
@@ -1,288 +0,0 @@
-require 'rss/1.0'
-require 'rss/2.0'
-
-module RSS
-
-  TRACKBACK_PREFIX = 'trackback'
-  TRACKBACK_URI = 'http://madskills.com/public/xml/rss/module/trackback/'
-
-  RDF.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
-  Rss.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
-
-  module TrackBackUtils
-    private
-    def trackback_validate(ignore_unknown_element, tags, uri)
-      return if tags.nil?
-      if tags.find {|tag| tag == "about"} and
-          !tags.find {|tag| tag == "ping"}
-        raise MissingTagError.new("#{TRACKBACK_PREFIX}:ping", tag_name)
-      end
-    end
-  end
-
-  module BaseTrackBackModel
-
-    ELEMENTS = %w(ping about)
-    
-    def append_features(klass)
-      super
-
-      unless klass.class == Module
-        klass.module_eval {include TrackBackUtils}
-
-        klass.install_must_call_validator(TRACKBACK_PREFIX, TRACKBACK_URI)
-        %w(ping).each do |name|
-          var_name = "#{TRACKBACK_PREFIX}_#{name}"
-          klass_name = "TrackBack#{Utils.to_class_name(name)}"
-          klass.install_have_child_element(name, TRACKBACK_URI, "?", var_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__)
-            remove_method :#{var_name}
-            def #{var_name}
-              @#{var_name} and @#{var_name}.value
-            end
-
-            remove_method :#{var_name}=
-            def #{var_name}=(value)
-              @#{var_name} = Utils.new_with_value_if_need(#{klass_name}, value)
-            end
-          EOC
-        end
-        
-        [%w(about s)].each do |name, postfix|
-          var_name = "#{TRACKBACK_PREFIX}_#{name}"
-          klass_name = "TrackBack#{Utils.to_class_name(name)}"
-          klass.install_have_children_element(name, TRACKBACK_URI, "*",
-                                              var_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__)
-            remove_method :#{var_name}
-            def #{var_name}(*args)
-              if args.empty?
-                @#{var_name}.first and @#{var_name}.first.value
-              else
-                ret = @#{var_name}.__send__("[]", *args)
-                if ret.is_a?(Array)
-                  ret.collect {|x| x.value}
-                else
-                  ret.value
-                end
-              end
-            end
-
-            remove_method :#{var_name}=
-            remove_method :set_#{var_name}
-            def #{var_name}=(*args)
-              if args.size == 1
-                item = Utils.new_with_value_if_need(#{klass_name}, args[0])
-                @#{var_name}.push(item)
-              else
-                new_val = args.last
-                if new_val.is_a?(Array)
-                  new_val = new_value.collect do |val|
-                    Utils.new_with_value_if_need(#{klass_name}, val)
-                  end
-                else
-                  new_val = Utils.new_with_value_if_need(#{klass_name}, new_val)
-                end
-                @#{var_name}.__send__("[]=", *(args[0..-2] + [new_val]))
-              end
-            end
-            alias set_#{var_name} #{var_name}=
-          EOC
-        end
-      end
-    end
-  end
-
-  module TrackBackModel10
-    extend BaseModel
-    extend BaseTrackBackModel
-
-    class TrackBackPing < Element
-      include RSS10
-
-      class << self
-
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-
-      @tag_name = "ping"
-
-      [
-        ["resource", ::RSS::RDF::URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      alias_method(:value, :resource)
-      alias_method(:value=, :resource=)
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-    end
-
-    class TrackBackAbout < Element
-      include RSS10
-
-      class << self
-        
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-      
-      @tag_name = "about"
-
-      [
-        ["resource", ::RSS::RDF::URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      alias_method(:value, :resource)
-      alias_method(:value=, :resource=)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-
-      private
-      def maker_target(abouts)
-        abouts.new_about
-      end
-
-      def setup_maker_attributes(about)
-        about.resource = self.resource
-      end
-      
-    end
-  end
-
-  module TrackBackModel20
-    extend BaseModel
-    extend BaseTrackBackModel
-
-    class TrackBackPing < Element
-      include RSS09
-
-      @tag_name = "ping"
-      
-      content_setup
-
-      class << self
-
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-      
-      alias_method(:value, :content)
-      alias_method(:value=, :content=)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.content = args[0]
-        end
-      end
-      
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-      
-    end
-
-    class TrackBackAbout < Element
-      include RSS09
-
-      @tag_name = "about"
-      
-      content_setup
-
-      class << self
-        
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-
-      alias_method(:value, :content)
-      alias_method(:value=, :content=)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.content = args[0]
-        end
-      end
-      
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-      
-    end
-  end
-
-  class RDF
-    class Item; include TrackBackModel10; end
-  end
-
-  class Rss
-    class Channel
-      class Item; include TrackBackModel20; end
-    end
-  end
-
-  BaseTrackBackModel::ELEMENTS.each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(TRACKBACK_URI, name,
-                                    "TrackBack#{class_name}")
-  end
-
-  BaseTrackBackModel::ELEMENTS.collect! {|name| "#{TRACKBACK_PREFIX}_#{name}"}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/utils.rb
deleted file mode 100644
index b242a72..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/utils.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module RSS
-  module Utils
-    module_function
-
-    # Convert a name_with_underscores to CamelCase.
-    def to_class_name(name)
-      name.split(/_/).collect do |part|
-        "#{part[0, 1].upcase}#{part[1..-1]}"
-      end.join("")
-    end
-    
-    def get_file_and_line_from_caller(i=0)
-      file, line, = caller[i].split(':')
-      [file, line.to_i]
-    end
-
-    # escape '&', '"', '<' and '>' for use in HTML.
-    def html_escape(s)
-      s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-    end
-    alias h html_escape
-    
-    # If +value+ is an instance of class +klass+, return it, else
-    # create a new instance of +klass+ with value +value+.
-    def new_with_value_if_need(klass, value)
-      if value.is_a?(klass)
-        value
-      else
-        klass.new(value)
-      end
-    end
-
-    def element_initialize_arguments?(args)
-      [true, false].include?(args[0]) and args[1].is_a?(Hash)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xml-stylesheet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xml-stylesheet.rb
deleted file mode 100644
index 66e3161..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xml-stylesheet.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-require "rss/utils"
-
-module RSS
-
-  module XMLStyleSheetMixin
-    attr_accessor :xml_stylesheets
-    def initialize(*args)
-      super
-      @xml_stylesheets = []
-    end
-    
-    private
-    def xml_stylesheet_pi
-      xsss = @xml_stylesheets.collect do |xss|
-        pi = xss.to_s
-        pi = nil if /\A\s*\z/ =~ pi
-        pi
-      end.compact
-      xsss.push("") unless xsss.empty?
-      xsss.join("\n")
-    end
-  end
-
-  class XMLStyleSheet
-
-    include Utils
-
-    ATTRIBUTES = %w(href type title media charset alternate)
-
-    GUESS_TABLE = {
-      "xsl" => "text/xsl",
-      "css" => "text/css",
-    }
-
-    attr_accessor(*ATTRIBUTES)
-    attr_accessor(:do_validate)
-    def initialize(*attrs)
-      @do_validate = true
-      ATTRIBUTES.each do |attr|
-        __send__("#{attr}=", nil)
-      end
-      vars = ATTRIBUTES.dup
-      vars.unshift(:do_validate)
-      attrs.each do |name, value|
-        if vars.include?(name.to_s)
-          __send__("#{name}=", value)
-        end
-      end
-    end
-
-    def to_s
-      rv = ""
-      if @href
-        rv << %Q[<?xml-stylesheet]
-        ATTRIBUTES.each do |name|
-          if __send__(name)
-            rv << %Q[ #{name}="#{h __send__(name)}"]
-          end
-        end
-        rv << %Q[?>]
-      end
-      rv
-    end
-
-    remove_method(:href=)
-    def href=(value)
-      @href = value
-      if @href and @type.nil?
-        @type = guess_type(@href)
-      end
-      @href
-    end
-
-    remove_method(:alternate=)
-    def alternate=(value)
-      if value.nil? or /\A(?:yes|no)\z/ =~ value
-        @alternate = value
-      else
-        if @do_validate
-          args = ["?xml-stylesheet?", %Q[alternate="#{value}"]]
-          raise NotAvailableValueError.new(*args)
-        end
-      end
-      @alternate
-    end
-
-    def setup_maker(maker)
-      xss = maker.xml_stylesheets.new_xml_stylesheet
-      ATTRIBUTES.each do |attr|
-        xss.__send__("#{attr}=", __send__(attr))
-      end
-    end
-    
-    private
-    def guess_type(filename)
-      /\.([^.]+)$/ =~ filename
-      GUESS_TABLE[$1]
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlparser.rb
deleted file mode 100644
index 3dfe7d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlparser.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-begin
-  require "xml/parser"
-rescue LoadError
-  require "xmlparser"
-end
-
-begin
-  require "xml/encoding-ja"
-rescue LoadError
-  require "xmlencoding-ja"
-  if defined?(Kconv)
-    module XMLEncoding_ja
-      class SJISHandler
-        include Kconv
-      end
-    end
-  end
-end
-
-module XML
-  class Parser
-    unless defined?(Error)
-      Error = ::XMLParserError
-    end
-  end
-end
-
-module RSS
-  
-  class REXMLLikeXMLParser < ::XML::Parser
-    
-    include ::XML::Encoding_ja
-
-    def listener=(listener)
-      @listener = listener
-    end
-
-    def startElement(name, attrs)
-      @listener.tag_start(name, attrs)
-    end
-    
-    def endElement(name)
-      @listener.tag_end(name)
-    end
-
-    def character(data)
-      @listener.text(data)
-    end
-
-    def xmlDecl(version, encoding, standalone)
-      @listener.xmldecl(version, encoding, standalone == 1)
-    end
-
-    def processingInstruction(target, content)
-      @listener.instruction(target, content)
-    end
-
-  end
-
-  class XMLParserParser < BaseParser
-
-    class << self
-      def listener
-        XMLParserListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        parser = REXMLLikeXMLParser.new
-        parser.listener = @listener
-        parser.parse(@rss)
-      rescue ::XML::Parser::Error => e
-        raise NotWellFormedError.new(parser.line){e.message}
-      end
-    end
-    
-  end
-  
-  class XMLParserListener < BaseListener
-
-    include ListenerMixin
-    
-    def xmldecl(version, encoding, standalone)
-      super
-      # Encoding is converted to UTF-8 when XMLParser parses XML.
-      @encoding = 'UTF-8'
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlscanner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlscanner.rb
deleted file mode 100644
index 61b9fa6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rss/xmlscanner.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-require 'xmlscan/scanner'
-require 'stringio'
-
-module RSS
-  
-  class XMLScanParser < BaseParser
-    
-    class << self
-      def listener
-        XMLScanListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        if @rss.is_a?(String)
-          input = StringIO.new(@rss)
-        else
-          input = @rss
-        end
-        scanner = XMLScan::XMLScanner.new(@listener)
-        scanner.parse(input)
-      rescue XMLScan::Error => e
-        lineno = e.lineno || scanner.lineno || input.lineno
-        raise NotWellFormedError.new(lineno){e.message}
-      end
-    end
-    
-  end
-
-  class XMLScanListener < BaseListener
-    
-    include XMLScan::Visitor
-    include ListenerMixin
-
-    ENTITIES = {
-      'lt' => '<',
-      'gt' => '>',
-      'amp' => '&',
-      'quot' => '"',
-      'apos' => '\''
-    }
-
-    def on_xmldecl_version(str)
-      @version = str
-    end
-
-    def on_xmldecl_encoding(str)
-      @encoding = str
-    end
-
-    def on_xmldecl_standalone(str)
-      @standalone = str
-    end
-
-    def on_xmldecl_end
-      xmldecl(@version, @encoding, @standalone == "yes")
-    end
-
-    alias_method(:on_pi, :instruction)
-    alias_method(:on_chardata, :text)
-    alias_method(:on_cdata, :text)
-
-    def on_etag(name)
-      tag_end(name)
-    end
-
-    def on_entityref(ref)
-      text(entity(ref))
-    end
-
-    def on_charref(code)
-      text([code].pack('U'))
-    end
-
-    alias_method(:on_charref_hex, :on_charref)
-
-    def on_stag(name)
-      @attrs = {}
-    end
-
-    def on_attribute(name)
-      @attrs[name] = @current_attr = ''
-    end
-
-    def on_attr_value(str)
-      @current_attr << str
-    end
-
-    def on_attr_entityref(ref)
-      @current_attr << entity(ref)
-    end
-
-    def on_attr_charref(code)
-      @current_attr << [code].pack('U')
-    end
-
-    alias_method(:on_attr_charref_hex, :on_attr_charref)
-
-    def on_stag_end(name)
-      tag_start(name, @attrs)
-    end
-
-    def on_stag_end_empty(name)
-      tag_start(name, @attrs)
-      tag_end(name)
-    end
-
-    private
-    def entity(ref)
-      ent = ENTITIES[ref]
-      if ent
-        ent
-      else
-        wellformed_error("undefined entity: #{ref}")
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rubyunit.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rubyunit.rb
deleted file mode 100644
index 1aca378..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/rubyunit.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'runit/testcase'
-require 'test/unit'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/assert.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/assert.rb
deleted file mode 100644
index c752b19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/assert.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertions'
-require 'runit/error'
-
-module RUNIT
-  module Assert
-    include Test::Unit::Assertions
-
-    def setup_assert
-    end
-
-    def assert_no_exception(*args, &block)
-      assert_nothing_raised(*args, &block)
-    end
-
-    # To deal with the fact that RubyUnit does not check that the
-    # regular expression is, indeed, a regular expression, if it is
-    # not, we do our own assertion using the same semantics as
-    # RubyUnit
-    def assert_match(actual_string, expected_re, message="")
-      _wrap_assertion {
-        full_message = build_message(message, "Expected <?> to match <?>", actual_string, expected_re)
-        assert_block(full_message) {
-          expected_re =~ actual_string
-        }
-        Regexp.last_match
-      }
-    end
-
-    def assert_not_nil(actual, message="")
-      assert(!actual.nil?, message)
-    end
-
-    def assert_not_match(actual_string, expected_re, message="")
-      assert_no_match(expected_re, actual_string, message)
-    end
-
-    def assert_matches(*args)
-      assert_match(*args)
-    end
-
-    def assert_fail(message="")
-      flunk(message)
-    end
-
-    def assert_equal_float(expected, actual, delta, message="")
-      assert_in_delta(expected, actual, delta, message)
-    end
-
-    def assert_send(object, method, *args)
-      super([object, method, *args])
-    end
-
-    def assert_exception(exception, message="", &block)
-      assert_raises(exception, message, &block)
-    end
-
-    def assert_respond_to(method, object, message="")
-      if (called_internally?)
-        super
-      else
-        super(object, method, message)
-      end
-    end
-
-    def called_internally?
-      /assertions\.rb/.match(caller[1])
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/cui/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/cui/testrunner.rb
deleted file mode 100644
index d521ec1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/cui/testrunner.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/ui/console/testrunner'
-require 'runit/testresult'
-
-module RUNIT
-  module CUI
-    class TestRunner < Test::Unit::UI::Console::TestRunner
-      @@quiet_mode = false
-      
-      def self.run(suite)
-        self.new().run(suite)
-      end
-      
-      def initialize
-        super nil
-      end
-      
-      def run(suite, quiet_mode=@@quiet_mode)
-        @suite = suite
-        def @suite.suite
-          self
-        end
-        @output_level = (quiet_mode ? Test::Unit::UI::PROGRESS_ONLY : Test::Unit::UI::VERBOSE)
-        start
-      end
-      
-      def create_mediator(suite)
-        mediator = Test::Unit::UI::TestRunnerMediator.new(suite)
-        class << mediator
-          attr_writer :result_delegate
-          def create_result
-            return @result_delegate.create_result
-          end
-        end
-        mediator.result_delegate = self
-        return mediator
-      end
-      
-      def create_result
-        return RUNIT::TestResult.new
-      end
-      
-      def self.quiet_mode=(boolean)
-        @@quiet_mode = boolean
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/error.rb
deleted file mode 100644
index 4a727fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/error.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertionfailederror.rb'
-
-module RUNIT
-  AssertionFailedError = Test::Unit::AssertionFailedError
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testcase.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testcase.rb
deleted file mode 100644
index 4576cb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testcase.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'runit/testresult'
-require 'runit/testsuite'
-require 'runit/assert'
-require 'runit/error'
-require 'test/unit/testcase'
-
-module RUNIT
-  class TestCase < Test::Unit::TestCase  
-    include RUNIT::Assert
-    
-    def self.suite
-      method_names = instance_methods(true)
-      tests = method_names.delete_if { |method_name| method_name !~ /^test/ }
-      suite = TestSuite.new(name)
-      tests.each {
-        |test|
-        catch(:invalid_test) {
-          suite << new(test, name)
-        }
-      }
-      return suite
-    end
-    
-    def initialize(test_name, suite_name=self.class.name)
-      super(test_name)
-    end
-    
-    def assert_equals(*args)
-      assert_equal(*args)
-    end
-    
-    def name
-      super.sub(/^(.*?)\((.*)\)$/, '\2#\1')
-    end
-    
-    def run(result, &progress_block)
-      progress_block = proc {} unless (block_given?)
-      super(result, &progress_block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testresult.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testresult.rb
deleted file mode 100644
index 7f70778..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testresult.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/testresult'
-
-module RUNIT
-  class TestResult < Test::Unit::TestResult
-    attr_reader(:errors, :failures)
-    def succeed?
-      return passed?
-    end
-    def failure_size
-      return failure_count
-    end
-    def run_asserts
-      return assertion_count
-    end
-    def error_size
-      return error_count
-    end
-    def run_tests
-      return run_count
-    end
-    def add_failure(failure)
-      def failure.at
-        return location
-      end
-      def failure.err
-        return message
-      end
-      super(failure)
-    end
-    def add_error(error)
-      def error.at
-        return location
-      end
-      def error.err
-        return exception
-      end
-      super(error)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testsuite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testsuite.rb
deleted file mode 100644
index 63baf65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/testsuite.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/testsuite'
-
-module RUNIT
-  class TestSuite < Test::Unit::TestSuite
-    def add_test(*args)
-      add(*args)
-    end
-    
-    def add(*args)
-      self.<<(*args)
-    end
-    
-    def count_test_cases
-      return size
-    end
-    
-    def run(result, &progress_block)
-      progress_block = proc {} unless (block_given?)
-      super(result, &progress_block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/topublic.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/topublic.rb
deleted file mode 100644
index 566f0dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/runit/topublic.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module RUNIT
-  module ToPublic
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/scanf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/scanf.rb
deleted file mode 100644
index a49ce69..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/scanf.rb
+++ /dev/null
@@ -1,702 +0,0 @@
-# scanf for Ruby
-#
-# $Revision: 11708 $
-# $Id: scanf.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# $Author: shyouhei $
-# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#
-# A product of the Austin Ruby Codefest (Austin, Texas, August 2002)
-
-=begin
-
-=scanf for Ruby
-
-==Description
-
-scanf for Ruby is an implementation of the C function scanf(3),
-modified as necessary for Ruby compatibility.
-
-The methods provided are String#scanf, IO#scanf, and
-Kernel#scanf. Kernel#scanf is a wrapper around STDIN.scanf.  IO#scanf
-can be used on any IO stream, including file handles and sockets.
-scanf can be called either with or without a block.
-
-scanf for Ruby scans an input string or stream according to a
-<b>format</b>, as described below ("Conversions"), and returns an
-array of matches between the format and the input.  The format is
-defined in a string, and is similar (though not identical) to the
-formats used in Kernel#printf and Kernel#sprintf.
-
-The format may contain <b>conversion specifiers</b>, which tell scanf
-what form (type) each particular matched substring should be converted
-to (e.g., decimal integer, floating point number, literal string,
-etc.)  The matches and conversions take place from left to right, and
-the conversions themselves are returned as an array.
-
-The format string may also contain characters other than those in the
-conversion specifiers.  White space (blanks, tabs, or newlines) in the
-format string matches any amount of white space, including none, in
-the input.  Everything else matches only itself.
-
-Scanning stops, and scanf returns, when any input character fails to
-match the specifications in the format string, or when input is
-exhausted, or when everything in the format string has been
-matched. All matches found up to the stopping point are returned in
-the return array (or yielded to the block, if a block was given).
-
-
-==Basic usage
-
-   require 'scanf.rb'
-
-   # String#scanf and IO#scanf take a single argument (a format string)
-   array = aString.scanf("%d%s")
-   array = anIO.scanf("%d%s")
-
-   # Kernel#scanf reads from STDIN
-   array = scanf("%d%s")
-
-==Block usage
-
-When called with a block, scanf keeps scanning the input, cycling back
-to the beginning of the format string, and yields a new array of
-conversions to the block every time the format string is matched
-(including partial matches, but not including complete failures).  The
-actual return value of scanf when called with a block is an array
-containing the results of all the executions of the block. 
-
-   str = "123 abc 456 def 789 ghi"
-   str.scanf("%d%s") { |num,str| [ num * 2, str.upcase ] }
-     # => [[246, "ABC"], [912, "DEF"], [1578, "GHI"]]
-
-==Conversions
-
-The single argument to scanf is a format string, which generally
-includes one or more conversion specifiers. Conversion specifiers
-begin with the percent character ('%') and include information about
-what scanf should next scan for (string, decimal number, single
-character, etc.).
-
-There may be an optional maximum field width, expressed as a decimal
-integer, between the % and the conversion. If no width is given, a
-default of `infinity' is used (with the exception of the %c specifier;
-see below).  Otherwise, given a field width of <em>n</em> for a given
-conversion, at most <em>n</em> characters are scanned in processing
-that conversion.  Before conversion begins, most conversions skip
-white space in the input string; this white space is not counted
-against the field width.
-
-The following conversions are available. (See the files EXAMPLES
-and <tt>tests/scanftests.rb</tt> for examples.)
-
-[%]
-  Matches a literal `%'. That is, `%%' in the format string matches a
-  single input `%' character. No conversion is done, and the resulting
-  '%' is not included in the return array.
-
-[d]
-  Matches an optionally signed decimal integer.
-
-[u]
-  Same as d.
-
-[i] 
-  Matches an optionally signed integer. The integer is read in base
-  16 if it begins with `0x' or `0X', in base 8 if it begins with `0',
-  and in base 10 other- wise. Only characters that correspond to the
-  base are recognized.
-
-[o]
-  Matches an optionally signed octal integer.
-
-[x,X]
-  Matches an optionally signed hexadecimal integer,
-
-[f,g,e,E]
-  Matches an optionally signed floating-point number.
-
-[s]
-  Matches a sequence of non-white-space character. The input string stops at
-  white space or at the maximum field width, whichever occurs first.
-
-[c]
-  Matches a single character, or a sequence of <em>n</em> characters if a
-  field width of <em>n</em> is specified. The usual skip of leading white
-  space is suppressed. To skip white space first, use an explicit space in
-  the format.
-
-[<tt>[</tt>]
-  Matches a nonempty sequence of characters from the specified set
-  of accepted characters.  The usual skip of leading white space is
-  suppressed.  This bracketed sub-expression is interpreted exactly like a
-  character class in a Ruby regular expression.  (In fact, it is placed as-is
-  in a regular expression.)  The matching against the input string ends with
-  the appearance of a character not in (or, with a circumflex, in) the set,
-  or when the field width runs out, whichever comes first.
-
-===Assignment suppression
-
-To require that a particular match occur, but without including the result
-in the return array, place the <b>assignment suppression flag</b>, which is
-the star character ('*'), immediately after the leading '%' of a format
-specifier (just before the field width, if any).
-
-==Examples
-
-See the files <tt>EXAMPLES</tt> and <tt>tests/scanftests.rb</tt>.
-
-==scanf for Ruby compared with scanf in C
-
-scanf for Ruby is based on the C function scanf(3), but with modifications,
-dictated mainly by the underlying differences between the languages.
-
-===Unimplemented flags and specifiers
-
-* The only flag implemented in scanf for Ruby is '<tt>*</tt>' (ignore
-  upcoming conversion). Many of the flags available in C versions of scanf(4)
-  have to do with the type of upcoming pointer arguments, and are literally
-  meaningless in Ruby.
-
-* The <tt>n</tt> specifier (store number of characters consumed so far in
-  next pointer) is not implemented.
-
-* The <tt>p</tt> specifier (match a pointer value) is not implemented.
-
-===Altered specifiers
-
-[o,u,x,X]
-  In scanf for Ruby, all of these specifiers scan for an optionally signed
-  integer, rather than for an unsigned integer like their C counterparts.
-
-===Return values
-
-scanf for Ruby returns an array of successful conversions, whereas
-scanf(3) returns the number of conversions successfully
-completed. (See below for more details on scanf for Ruby's return
-values.)
-
-==Return values
-
-Without a block, scanf returns an array containing all the conversions
-it has found. If none are found, scanf will return an empty array. An
-unsuccesful match is never ignored, but rather always signals the end
-of the scanning operation. If the first unsuccessful match takes place
-after one or more successful matches have already taken place, the
-returned array will contain the results of those successful matches.
-
-With a block scanf returns a 'map'-like array of transformations from
-the block -- that is, an array reflecting what the block did with each
-yielded result from the iterative scanf operation.  (See "Block
-usage", above.)
-
-==Test suite
-
-scanf for Ruby includes a suite of unit tests (requiring the
-<tt>TestUnit</tt> package), which can be run with the command <tt>ruby
-tests/scanftests.rb</tt> or the command <tt>make test</tt>.
-
-==Current limitations and bugs
-
-When using IO#scanf under Windows, make sure you open your files in
-binary mode:
-
-    File.open("filename", "rb")
-
-so that scanf can keep track of characters correctly.
-
-Support for character classes is reasonably complete (since it
-essentially piggy-backs on Ruby's regular expression handling of
-character classes), but users are advised that character class testing
-has not been exhaustive, and that they should exercise some caution
-in using any of the more complex and/or arcane character class
-idioms.
-
-
-==Technical notes
-
-===Rationale behind scanf for Ruby
-
-The impetus for a scanf implementation in Ruby comes chiefly from the fact
-that existing pattern matching operations, such as Regexp#match and
-String#scan, return all results as strings, which have to be converted to
-integers or floats explicitly in cases where what's ultimately wanted are
-integer or float values.
-
-===Design of scanf for Ruby
-
-scanf for Ruby is essentially a <format string>-to-<regular
-expression> converter.
-
-When scanf is called, a FormatString object is generated from the
-format string ("%d%s...") argument. The FormatString object breaks the
-format string down into atoms ("%d", "%5f", "blah", etc.), and from
-each atom it creates a FormatSpecifier object, which it
-saves.
-
-Each FormatSpecifier has a regular expression fragment and a "handler"
-associated with it. For example, the regular expression fragment
-associated with the format "%d" is "([-+]?\d+)", and the handler
-associated with it is a wrapper around String#to_i. scanf itself calls
-FormatString#match, passing in the input string. FormatString#match
-iterates through its FormatSpecifiers; for each one, it matches the
-corresponding regular expression fragment against the string. If
-there's a match, it sends the matched string to the handler associated
-with the FormatSpecifier.
-
-Thus, to follow up the "%d" example: if "123" occurs in the input
-string when a FormatSpecifier consisting of "%d" is reached, the "123"
-will be matched against "([-+]?\d+)", and the matched string will be
-rendered into an integer by a call to to_i.
-
-The rendered match is then saved to an accumulator array, and the
-input string is reduced to the post-match substring. Thus the string
-is "eaten" from the left as the FormatSpecifiers are applied in
-sequence.  (This is done to a duplicate string; the original string is
-not altered.)
-
-As soon as a regular expression fragment fails to match the string, or
-when the FormatString object runs out of FormatSpecifiers, scanning
-stops and results accumulated so far are returned in an array.
-
-==License and copyright
-
-Copyright:: (c) 2002-2003 David Alan Black
-License:: Distributed on the same licensing terms as Ruby itself
-
-==Warranty disclaimer
-
-This software is provided "as is" and without any express or implied
-warranties, including, without limitation, the implied warranties of
-merchantibility and fitness for a particular purpose.
-
-==Credits and acknowledgements
-
-scanf for Ruby was developed as the major activity of the Austin
-Ruby Codefest (Austin, Texas, August 2002).
-
-Principal author:: David Alan Black (mailto:dblack at superlink.net)
-Co-author:: Hal Fulton (mailto:hal9000 at hypermetrics.com)
-Project contributors:: Nolan Darilek, Jason Johnston
-
-Thanks to Hal Fulton for hosting the Codefest.
-
-Thanks to Matz for suggestions about the class design.  
-
-Thanks to Gavin Sinclair for some feedback on the documentation.
-
-The text for parts of this document, especially the Description and
-Conversions sections, above, were adapted from the Linux Programmer's
-Manual manpage for scanf(3), dated 1995-11-01.
-
-==Bugs and bug reports
-
-scanf for Ruby is based on something of an amalgam of C scanf
-implementations and documentation, rather than on a single canonical
-description. Suggestions for features and behaviors which appear in
-other scanfs, and would be meaningful in Ruby, are welcome, as are
-reports of suspicious behaviors and/or bugs. (Please see "Credits and
-acknowledgements", above, for email addresses.)
-
-=end
-
-module Scanf
-
-  class FormatSpecifier
-
-    attr_reader :re_string, :matched_string, :conversion, :matched
-
-    private
-
-    def skip;  /^\s*%\*/.match(@spec_string); end
-
-    def extract_float(s); s.to_f if s &&! skip; end
-    def extract_decimal(s); s.to_i if s &&! skip; end
-    def extract_hex(s); s.hex if s &&! skip; end
-    def extract_octal(s); s.oct if s &&! skip; end
-    def extract_integer(s); Integer(s) if s &&! skip; end
-    def extract_plain(s); s unless skip; end
-
-    def nil_proc(s); nil; end
-
-    public
-
-    def to_s
-      @spec_string
-    end
-
-    def count_space?
-      /(?:\A|\S)%\*?\d*c|\[/.match(@spec_string)
-    end
-
-    def initialize(str)
-      @spec_string = str
-      h = '[A-Fa-f0-9]'
-
-      @re_string, @handler = 
-        case @spec_string
-
-          # %[[:...:]]
-        when /%\*?(\[\[:[a-z]+:\]\])/
-          [ "(#{$1}+)", :extract_plain ]
-
-          # %5[[:...:]]
-        when /%\*?(\d+)(\[\[:[a-z]+:\]\])/
-          [ "(#{$2}{1,#{$1}})", :extract_plain ]
-
-          # %[...]
-        when /%\*?\[([^\]]*)\]/
-          yes = $1
-          if /^\^/.match(yes) then no = yes[1..-1] else no = '^' + yes end
-          [ "([#{yes}]+)(?=[#{no}]|\\z)", :extract_plain ]
-
-          # %5[...]
-        when /%\*?(\d+)\[([^\]]*)\]/
-          yes = $2
-          w = $1
-          [ "([#{yes}]{1,#{w}})", :extract_plain ]
-
-          # %i
-        when /%\*?i/
-          [ "([-+]?(?:(?:0[0-7]+)|(?:0[Xx]#{h}+)|(?:[1-9]\\d+)))", :extract_integer ]
-
-          # %5i
-        when /%\*?(\d+)i/
-          n = $1.to_i
-          s = "("
-          if n > 1 then s += "[1-9]\\d{1,#{n-1}}|" end
-          if n > 1 then s += "0[0-7]{1,#{n-1}}|" end
-          if n > 2 then s += "[-+]0[0-7]{1,#{n-2}}|" end
-          if n > 2 then s += "[-+][1-9]\\d{1,#{n-2}}|" end
-          if n > 2 then s += "0[Xx]#{h}{1,#{n-2}}|" end
-          if n > 3 then s += "[-+]0[Xx]#{h}{1,#{n-3}}|" end
-          s += "\\d"
-          s += ")"
-          [ s, :extract_integer ]
-
-          # %d, %u
-        when /%\*?[du]/
-          [ '([-+]?\d+)', :extract_decimal ]
-
-          # %5d, %5u
-        when /%\*?(\d+)[du]/
-          n = $1.to_i
-          s = "("
-          if n > 1 then s += "[-+]\\d{1,#{n-1}}|" end
-          s += "\\d{1,#{$1}})"
-          [ s, :extract_decimal ]
-
-          # %x
-        when /%\*?[Xx]/
-          [ "([-+]?(?:0[Xx])?#{h}+)", :extract_hex ]
-
-          # %5x
-        when /%\*?(\d+)[Xx]/
-          n = $1.to_i
-          s = "("
-          if n > 3 then s += "[-+]0[Xx]#{h}{1,#{n-3}}|" end
-          if n > 2 then s += "0[Xx]#{h}{1,#{n-2}}|" end
-          if n > 1 then s += "[-+]#{h}{1,#{n-1}}|" end
-          s += "#{h}{1,#{n}}"
-          s += ")"
-          [ s, :extract_hex ]
-
-          # %o
-        when /%\*?o/
-          [ '([-+]?[0-7]+)', :extract_octal ]
-
-          # %5o
-        when /%\*?(\d+)o/
-          [ "([-+][0-7]{1,#{$1.to_i-1}}|[0-7]{1,#{$1}})", :extract_octal ]
-
-          # %f
-        when /%\*?f/
-          [ '([-+]?((\d+(?>(?=[^\d.]|$)))|(\d*(\.(\d*([eE][-+]?\d+)?)))))', :extract_float ]
-
-          # %5f
-        when /%\*?(\d+)f/
-          [ "(\\S{1,#{$1}})", :extract_float ]
-
-          # %5s
-        when /%\*?(\d+)s/
-          [ "(\\S{1,#{$1}})", :extract_plain ]
-
-          # %s
-        when /%\*?s/
-          [ '(\S+)', :extract_plain ]
-
-          # %c
-        when /\s%\*?c/
-          [ "\\s*(.)", :extract_plain ]
-
-          # %c
-        when /%\*?c/
-          [ "(.)", :extract_plain ]
-
-          # %5c (whitespace issues are handled by the count_*_space? methods)
-        when /%\*?(\d+)c/
-          [ "(.{1,#{$1}})", :extract_plain ]
-
-          # %%
-        when /%%/
-          [ '(\s*%)', :nil_proc ]
-
-          # literal characters
-        else
-          [ "(#{Regexp.escape(@spec_string)})", :nil_proc ]
-        end
-
-      @re_string = '\A' + @re_string
-    end
-
-    def to_re
-      Regexp.new(@re_string,Regexp::MULTILINE)
-    end
-
-    def match(str)
-      @matched = false
-      s = str.dup
-      s.sub!(/\A\s+/,'') unless count_space?
-      res = to_re.match(s)
-      if res
-        @conversion = send(@handler, res[1])
-        @matched_string = @conversion.to_s
-        @matched = true
-      end
-      res
-    end
-
-    def letter
-      /%\*?\d*([a-z\[])/.match(@spec_string).to_a[1]
-    end
-
-    def width
-      w = /%\*?(\d+)/.match(@spec_string).to_a[1]
-      w && w.to_i
-    end
-
-    def mid_match?
-      return false unless @matched
-      cc_no_width    = letter == '[' &&! width
-      c_or_cc_width  = (letter == 'c' || letter == '[') && width
-      width_left     = c_or_cc_width && (matched_string.size < width)
-
-      return width_left || cc_no_width
-    end
-    
-  end
-
-  class FormatString
-
-    attr_reader :string_left, :last_spec_tried,
-                :last_match_tried, :matched_count, :space
-
-    SPECIFIERS = 'diuXxofeEgsc'
-    REGEX = /
-        # possible space, followed by...
-          (?:\s*
-          # percent sign, followed by...
-            %
-            # another percent sign, or...
-              (?:%|
-        	 # optional assignment suppression flag
-        	 \*?
-        	 # optional maximum field width
-        	 \d*
-        	   # named character class, ...
-        	   (?:\[\[:\w+:\]\]|
-        	   # traditional character class, or...
-        	      \[[^\]]*\]|
-        	   # specifier letter.
-        	      [#{SPECIFIERS}])))|
-            # or miscellaneous characters
-              [^%\s]+/ix
-
-    def initialize(str)
-      @specs = []
-      @i = 1
-      s = str.to_s
-      return unless /\S/.match(s)
-      @space = true if /\s\z/.match(s)
-      @specs.replace s.scan(REGEX).map {|spec| FormatSpecifier.new(spec) }
-    end
-
-    def to_s
-      @specs.join('')
-    end
-
-    def prune(n=matched_count)
-      n.times { @specs.shift }
-    end
-
-    def spec_count
-      @specs.size
-    end
-
-    def last_spec
-      @i == spec_count - 1
-    end
-
-    def match(str)
-      accum = []
-      @string_left = str
-      @matched_count = 0
-
-      @specs.each_with_index do |spec, at i|
-        @last_spec_tried = spec
-        @last_match_tried = spec.match(@string_left)
-        break unless @last_match_tried
-        @matched_count += 1
-
-        accum << spec.conversion
-
-        @string_left = @last_match_tried.post_match
-        break if @string_left.empty?
-      end
-      return accum.compact
-    end
-  end
-end
-
-class IO
-
-# The trick here is doing a match where you grab one *line*
-# of input at a time.  The linebreak may or may not occur
-# at the boundary where the string matches a format specifier.
-# And if it does, some rule about whitespace may or may not
-# be in effect...
-#
-# That's why this is much more elaborate than the string
-# version.
-#
-# For each line:
-# Match succeeds (non-emptily)
-# and the last attempted spec/string sub-match succeeded:
-#
-#   could the last spec keep matching?
-#     yes: save interim results and continue (next line)
-#
-# The last attempted spec/string did not match:
-#
-# are we on the next-to-last spec in the string?
-#   yes:
-#     is fmt_string.string_left all spaces?
-#       yes: does current spec care about input space?
-#         yes: fatal failure
-#         no: save interim results and continue
-#   no: continue  [this state could be analyzed further]
-#
-#
-
-  def scanf(str,&b)
-    return block_scanf(str,&b) if b
-    return [] unless str.size > 0
-
-    start_position = pos rescue 0
-    matched_so_far = 0
-    source_buffer = ""
-    result_buffer = []
-    final_result = []
-
-    fstr = Scanf::FormatString.new(str)
-
-    loop do
-      if eof || (tty? &&! fstr.match(source_buffer))
-        final_result.concat(result_buffer)
-        break
-      end
-
-      source_buffer << gets
-
-      current_match = fstr.match(source_buffer)
-
-      spec = fstr.last_spec_tried
-
-      if spec.matched
-        if spec.mid_match?
-          result_buffer.replace(current_match)
-          next
-        end
-
-      elsif (fstr.matched_count == fstr.spec_count - 1)
-        if /\A\s*\z/.match(fstr.string_left)
-          break if spec.count_space?
-          result_buffer.replace(current_match)
-          next
-        end
-      end
-
-      final_result.concat(current_match)
-
-      matched_so_far += source_buffer.size
-      source_buffer.replace(fstr.string_left)
-      matched_so_far -= source_buffer.size
-      break if fstr.last_spec
-      fstr.prune
-    end
-    seek(start_position + matched_so_far, IO::SEEK_SET) rescue Errno::ESPIPE
-    soak_up_spaces if fstr.last_spec && fstr.space
-
-    return final_result
-  end
-
-  private
-
-  def soak_up_spaces
-    c = getc
-    ungetc(c) if c
-    until eof ||! c || /\S/.match(c.chr)
-      c = getc
-    end
-    ungetc(c) if (c && /\S/.match(c.chr))
-  end
-
-  def block_scanf(str)
-    final = []
-# Sub-ideal, since another FS gets created in scanf.
-# But used here to determine the number of specifiers.
-    fstr = Scanf::FormatString.new(str)
-    last_spec = fstr.last_spec
-    begin
-      current = scanf(str)
-      break if current.empty?
-      final.push(yield(current))
-    end until eof || fstr.last_spec_tried == last_spec
-    return final
-  end
-end
-
-class String
-
-  def scanf(fstr,&b)
-    if b
-      block_scanf(fstr,&b)
-    else
-      fs = 
-        if fstr.is_a? Scanf::FormatString
-          fstr 
-        else 
-          Scanf::FormatString.new(fstr)
-        end
-      fs.match(self)
-    end
-  end
-
-  def block_scanf(fstr,&b)
-    fs = Scanf::FormatString.new(fstr)
-    str = self.dup
-    final = []
-    begin
-      current = str.scanf(fs)
-      final.push(yield(current)) unless current.empty?
-      str = fs.string_left
-    end until current.empty? || str.empty?
-    return final
-  end
-end
-
-module Kernel
-  private
-  def scanf(fs,&b)
-    STDIN.scanf(fs,&b)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/set.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/set.rb
deleted file mode 100644
index ac8950a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/set.rb
+++ /dev/null
@@ -1,1250 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# set.rb - defines the Set class
-#++
-# Copyright (c) 2002 Akinori MUSHA <knu at iDaemons.org>
-#
-# Documentation by Akinori MUSHA and Gavin Sinclair. 
-#
-# All rights reserved.  You can redistribute and/or modify it under the same
-# terms as Ruby.
-#
-#   $Id: set.rb 17648 2008-06-29 08:06:28Z shyouhei $
-#
-# == Overview 
-# 
-# This library provides the Set class, which deals with a collection
-# of unordered values with no duplicates.  It is a hybrid of Array's
-# intuitive inter-operation facilities and Hash's fast lookup.  If you
-# need to keep values ordered, use the SortedSet class.
-#
-# The method +to_set+ is added to Enumerable for convenience.
-#
-# See the Set class for an example of usage.
-
-
-#
-# Set implements a collection of unordered values with no duplicates.
-# This is a hybrid of Array's intuitive inter-operation facilities and
-# Hash's fast lookup.
-#
-# Several methods accept any Enumerable object (implementing +each+)
-# for greater flexibility: new, replace, merge, subtract, |, &, -, ^.
-#
-# The equality of each couple of elements is determined according to
-# Object#eql? and Object#hash, since Set uses Hash as storage.
-#
-# Finally, if you are using class Set, you can also use Enumerable#to_set
-# for convenience.
-#
-# == Example
-#
-#   require 'set'
-#   s1 = Set.new [1, 2]                   # -> #<Set: {1, 2}>
-#   s2 = [1, 2].to_set                    # -> #<Set: {1, 2}>
-#   s1 == s2                              # -> true
-#   s1.add("foo")                         # -> #<Set: {1, 2, "foo"}>
-#   s1.merge([2, 6])                      # -> #<Set: {6, 1, 2, "foo"}>
-#   s1.subset? s2                         # -> false
-#   s2.subset? s1                         # -> true
-#
-class Set
-  include Enumerable
-
-  # Creates a new set containing the given objects.
-  def self.[](*ary)
-    new(ary)
-  end
-
-  # Creates a new set containing the elements of the given enumerable
-  # object.
-  #
-  # If a block is given, the elements of enum are preprocessed by the
-  # given block.
-  def initialize(enum = nil, &block) # :yields: o
-    @hash ||= Hash.new
-
-    enum.nil? and return
-
-    if block
-      enum.each { |o| add(block[o]) }
-    else
-      merge(enum)
-    end
-  end
-
-  # Copy internal hash.
-  def initialize_copy(orig)
-    @hash = orig.instance_eval{@hash}.dup
-  end
-
-  # Returns the number of elements.
-  def size
-    @hash.size
-  end
-  alias length size
-
-  # Returns true if the set contains no elements.
-  def empty?
-    @hash.empty?
-  end
-
-  # Removes all elements and returns self.
-  def clear
-    @hash.clear
-    self
-  end
-
-  # Replaces the contents of the set with the contents of the given
-  # enumerable object and returns self.
-  def replace(enum)
-    if enum.class == self.class
-      @hash.replace(enum.instance_eval { @hash })
-    else
-      enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-      clear
-      enum.each { |o| add(o) }
-    end
-
-    self
-  end
-
-  # Converts the set to an array.  The order of elements is uncertain.
-  def to_a
-    @hash.keys
-  end
-
-  def flatten_merge(set, seen = Set.new)
-    set.each { |e|
-      if e.is_a?(Set)
-	if seen.include?(e_id = e.object_id)
-	  raise ArgumentError, "tried to flatten recursive Set"
-	end
-
-	seen.add(e_id)
-	flatten_merge(e, seen)
-	seen.delete(e_id)
-      else
-	add(e)
-      end
-    }
-
-    self
-  end
-  protected :flatten_merge
-
-  # Returns a new set that is a copy of the set, flattening each
-  # containing set recursively.
-  def flatten
-    self.class.new.flatten_merge(self)
-  end
-
-  # Equivalent to Set#flatten, but replaces the receiver with the
-  # result in place.  Returns nil if no modifications were made.
-  def flatten!
-    if detect { |e| e.is_a?(Set) }
-      replace(flatten())
-    else
-      nil
-    end
-  end
-
-  # Returns true if the set contains the given object.
-  def include?(o)
-    @hash.include?(o)
-  end
-  alias member? include?
-
-  # Returns true if the set is a superset of the given set.
-  def superset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if size < set.size
-    set.all? { |o| include?(o) }
-  end
-
-  # Returns true if the set is a proper superset of the given set.
-  def proper_superset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if size <= set.size
-    set.all? { |o| include?(o) }
-  end
-
-  # Returns true if the set is a subset of the given set.
-  def subset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if set.size < size
-    all? { |o| set.include?(o) }
-  end
-
-  # Returns true if the set is a proper subset of the given set.
-  def proper_subset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if set.size <= size
-    all? { |o| set.include?(o) }
-  end
-
-  # Calls the given block once for each element in the set, passing
-  # the element as parameter.
-  def each
-    @hash.each_key { |o| yield(o) }
-    self
-  end
-
-  # Adds the given object to the set and returns self.  Use +merge+ to
-  # add several elements at once.
-  def add(o)
-    @hash[o] = true
-    self
-  end
-  alias << add
-
-  # Adds the given object to the set and returns self.  If the
-  # object is already in the set, returns nil.
-  def add?(o)
-    if include?(o)
-      nil
-    else
-      add(o)
-    end
-  end
-
-  # Deletes the given object from the set and returns self.  Use +subtract+ to
-  # delete several items at once.
-  def delete(o)
-    @hash.delete(o)
-    self
-  end
-
-  # Deletes the given object from the set and returns self.  If the
-  # object is not in the set, returns nil.
-  def delete?(o)
-    if include?(o)
-      delete(o)
-    else
-      nil
-    end
-  end
-
-  # Deletes every element of the set for which block evaluates to
-  # true, and returns self.
-  def delete_if
-    to_a.each { |o| @hash.delete(o) if yield(o) }
-    self
-  end
-
-  # Do collect() destructively.
-  def collect!
-    set = self.class.new
-    each { |o| set << yield(o) }
-    replace(set)
-  end
-  alias map! collect!
-
-  # Equivalent to Set#delete_if, but returns nil if no changes were
-  # made.
-  def reject!
-    n = size
-    delete_if { |o| yield(o) }
-    size == n ? nil : self
-  end
-
-  # Merges the elements of the given enumerable object to the set and
-  # returns self.
-  def merge(enum)
-    if enum.is_a?(Set)
-      @hash.update(enum.instance_eval { @hash })
-    else
-      enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-      enum.each { |o| add(o) }
-    end
-
-    self
-  end
-
-  # Deletes every element that appears in the given enumerable object
-  # and returns self.
-  def subtract(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    enum.each { |o| delete(o) }
-    self
-  end
-
-  # Returns a new set built by merging the set and the elements of the
-  # given enumerable object.
-  def |(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    dup.merge(enum)
-  end
-  alias + |		##
-  alias union |		##
-
-  # Returns a new set built by duplicating the set, removing every
-  # element that appears in the given enumerable object.
-  def -(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    dup.subtract(enum)
-  end
-  alias difference -	##
-
-  # Returns a new set containing elements common to the set and the
-  # given enumerable object.
-  def &(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    n = self.class.new
-    enum.each { |o| n.add(o) if include?(o) }
-    n
-  end
-  alias intersection &	##
-
-  # Returns a new set containing elements exclusive between the set
-  # and the given enumerable object.  (set ^ enum) is equivalent to
-  # ((set | enum) - (set & enum)).
-  def ^(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    n = Set.new(enum)
-    each { |o| if n.include?(o) then n.delete(o) else n.add(o) end }
-    n
-  end
-
-  # Returns true if two sets are equal.  The equality of each couple
-  # of elements is defined according to Object#eql?.
-  def ==(set)
-    equal?(set) and return true
-
-    set.is_a?(Set) && size == set.size or return false
-
-    hash = @hash.dup
-    set.all? { |o| hash.include?(o) }
-  end
-
-  def hash	# :nodoc:
-    @hash.hash
-  end
-
-  def eql?(o)	# :nodoc:
-    return false unless o.is_a?(Set)
-    @hash.eql?(o.instance_eval{@hash})
-  end
-
-  # Classifies the set by the return value of the given block and
-  # returns a hash of {value => set of elements} pairs.  The block is
-  # called once for each element of the set, passing the element as
-  # parameter.
-  #
-  # e.g.:
-  #
-  #   require 'set'
-  #   files = Set.new(Dir.glob("*.rb"))
-  #   hash = files.classify { |f| File.mtime(f).year }
-  #   p hash    # => {2000=>#<Set: {"a.rb", "b.rb"}>,
-  #             #     2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>,
-  #             #     2002=>#<Set: {"f.rb"}>}
-  def classify # :yields: o
-    h = {}
-
-    each { |i|
-      x = yield(i)
-      (h[x] ||= self.class.new).add(i)
-    }
-
-    h
-  end
-
-  # Divides the set into a set of subsets according to the commonality
-  # defined by the given block.
-  #
-  # If the arity of the block is 2, elements o1 and o2 are in common
-  # if block.call(o1, o2) is true.  Otherwise, elements o1 and o2 are
-  # in common if block.call(o1) == block.call(o2).
-  #
-  # e.g.:
-  #
-  #   require 'set'
-  #   numbers = Set[1, 3, 4, 6, 9, 10, 11]
-  #   set = numbers.divide { |i,j| (i - j).abs == 1 }
-  #   p set     # => #<Set: {#<Set: {1}>,
-  #             #            #<Set: {11, 9, 10}>,
-  #             #            #<Set: {3, 4}>,
-  #             #            #<Set: {6}>}>
-  def divide(&func)
-    if func.arity == 2
-      require 'tsort'
-
-      class << dig = {}		# :nodoc:
-	include TSort
-
-	alias tsort_each_node each_key
-	def tsort_each_child(node, &block)
-	  fetch(node).each(&block)
-	end
-      end
-
-      each { |u|
-	dig[u] = a = []
-	each{ |v| func.call(u, v) and a << v }
-      }
-
-      set = Set.new()
-      dig.each_strongly_connected_component { |css|
-	set.add(self.class.new(css))
-      }
-      set
-    else
-      Set.new(classify(&func).values)
-    end
-  end
-
-  InspectKey = :__inspect_key__         # :nodoc:
-
-  # Returns a string containing a human-readable representation of the
-  # set. ("#<Set: {element1, element2, ...}>")
-  def inspect
-    ids = (Thread.current[InspectKey] ||= [])
-
-    if ids.include?(object_id)
-      return sprintf('#<%s: {...}>', self.class.name)
-    end
-
-    begin
-      ids << object_id
-      return sprintf('#<%s: {%s}>', self.class, to_a.inspect[1..-2])
-    ensure
-      ids.pop
-    end
-  end
-
-  def pretty_print(pp)	# :nodoc:
-    pp.text sprintf('#<%s: {', self.class.name)
-    pp.nest(1) {
-      pp.seplist(self) { |o|
-	pp.pp o
-      }
-    }
-    pp.text "}>"
-  end
-
-  def pretty_print_cycle(pp)	# :nodoc:
-    pp.text sprintf('#<%s: {%s}>', self.class.name, empty? ? '' : '...')
-  end
-end
-
-# SortedSet implements a set which elements are sorted in order.  See Set.
-class SortedSet < Set
-  @@setup = false
-
-  class << self
-    def [](*ary)	# :nodoc:
-      new(ary)
-    end
-
-    def setup	# :nodoc:
-      @@setup and return
-
-      module_eval {
-        # a hack to shut up warning
-        alias old_init initialize
-        remove_method :old_init
-      }
-      begin
-	require 'rbtree'
-
-	module_eval %{
-	  def initialize(*args, &block)
-	    @hash = RBTree.new
-	    super
-	  end
-	}
-      rescue LoadError
-	module_eval %{
-	  def initialize(*args, &block)
-	    @keys = nil
-	    super
-	  end
-
-	  def clear
-	    @keys = nil
-	    super
-	  end
-
-	  def replace(enum)
-	    @keys = nil
-	    super
-	  end
-
-	  def add(o)
-	    @keys = nil
-	    @hash[o] = true
-	    self
-	  end
-	  alias << add
-
-	  def delete(o)
-	    @keys = nil
-	    @hash.delete(o)
-	    self
-	  end
-
-	  def delete_if
-	    n = @hash.size
-	    super
-	    @keys = nil if @hash.size != n
-	    self
-	  end
-
-	  def merge(enum)
-	    @keys = nil
-	    super
-	  end
-
-	  def each
-	    to_a.each { |o| yield(o) }
-	    self
-	  end
-
-	  def to_a
-	    (@keys = @hash.keys).sort! unless @keys
-	    @keys
-	  end
-	}
-      end
-
-      @@setup = true
-    end
-  end
-
-  def initialize(*args, &block)	# :nodoc:
-    SortedSet.setup
-    initialize(*args, &block)
-  end
-end
-
-module Enumerable
-  # Makes a set from the enumerable object with given arguments.
-  # Needs to +require "set"+ to use this method.
-  def to_set(klass = Set, *args, &block)
-    klass.new(self, *args, &block)
-  end
-end
-
-# =begin
-# == RestricedSet class
-# RestricedSet implements a set with restrictions defined by a given
-# block.
-# 
-# === Super class
-#     Set
-# 
-# === Class Methods
-# --- RestricedSet::new(enum = nil) { |o| ... }
-# --- RestricedSet::new(enum = nil) { |rset, o| ... }
-#     Creates a new restricted set containing the elements of the given
-#     enumerable object.  Restrictions are defined by the given block.
-# 
-#     If the block's arity is 2, it is called with the RestrictedSet
-#     itself and an object to see if the object is allowed to be put in
-#     the set.
-# 
-#     Otherwise, the block is called with an object to see if the object
-#     is allowed to be put in the set.
-# 
-# === Instance Methods
-# --- restriction_proc
-#     Returns the restriction procedure of the set.
-# 
-# =end
-# 
-# class RestricedSet < Set
-#   def initialize(*args, &block)
-#     @proc = block or raise ArgumentError, "missing a block"
-# 
-#     if @proc.arity == 2
-#       instance_eval %{
-# 	def add(o)
-# 	  @hash[o] = true if @proc.call(self, o)
-# 	  self
-# 	end
-# 	alias << add
-# 
-# 	def add?(o)
-# 	  if include?(o) || !@proc.call(self, o)
-# 	    nil
-# 	  else
-# 	    @hash[o] = true
-# 	    self
-# 	  end
-# 	end
-# 
-# 	def replace(enum)
-# 	  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-# 	  clear
-# 	  enum.each { |o| add(o) }
-# 
-# 	  self
-# 	end
-# 
-# 	def merge(enum)
-# 	  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-# 	  enum.each { |o| add(o) }
-# 
-# 	  self
-# 	end
-#       }
-#     else
-#       instance_eval %{
-# 	def add(o)
-#         if @proc.call(o)
-# 	    @hash[o] = true 
-#         end
-# 	  self
-# 	end
-# 	alias << add
-# 
-# 	def add?(o)
-# 	  if include?(o) || !@proc.call(o)
-# 	    nil
-# 	  else
-# 	    @hash[o] = true
-# 	    self
-# 	  end
-# 	end
-#       }
-#     end
-# 
-#     super(*args)
-#   end
-# 
-#   def restriction_proc
-#     @proc
-#   end
-# end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-
-class TC_Set < Test::Unit::TestCase
-  def test_aref
-    assert_nothing_raised {
-      Set[]
-      Set[nil]
-      Set[1,2,3]
-    }
-
-    assert_equal(0, Set[].size)
-    assert_equal(1, Set[nil].size)
-    assert_equal(1, Set[[]].size)
-    assert_equal(1, Set[[nil]].size)
-
-    set = Set[2,4,6,4]
-    assert_equal(Set.new([2,4,6]), set)
-  end
-
-  def test_s_new
-    assert_nothing_raised {
-      Set.new()
-      Set.new(nil)
-      Set.new([])
-      Set.new([1,2])
-      Set.new('a'..'c')
-      Set.new('XYZ')
-    }
-    assert_raises(ArgumentError) {
-      Set.new(false)
-    }
-    assert_raises(ArgumentError) {
-      Set.new(1)
-    }
-    assert_raises(ArgumentError) {
-      Set.new(1,2)
-    }
-
-    assert_equal(0, Set.new().size)
-    assert_equal(0, Set.new(nil).size)
-    assert_equal(0, Set.new([]).size)
-    assert_equal(1, Set.new([nil]).size)
-
-    ary = [2,4,6,4]
-    set = Set.new(ary)
-    ary.clear
-    assert_equal(false, set.empty?)
-    assert_equal(3, set.size)
-
-    ary = [1,2,3]
-
-    s = Set.new(ary) { |o| o * 2 }
-    assert_equal([2,4,6], s.sort)
-  end
-
-  def test_clone
-    set1 = Set.new
-    set2 = set1.clone
-    set1 << 'abc'
-    assert_equal(Set.new, set2)
-  end
-
-  def test_dup
-    set1 = Set[1,2]
-    set2 = set1.dup
-
-    assert_not_same(set1, set2)
-
-    assert_equal(set1, set2)
-
-    set1.add(3)
-
-    assert_not_equal(set1, set2)
-  end
-
-  def test_size
-    assert_equal(0, Set[].size)
-    assert_equal(2, Set[1,2].size)
-    assert_equal(2, Set[1,2,1].size)
-  end
-
-  def test_empty?
-    assert_equal(true, Set[].empty?)
-    assert_equal(false, Set[1, 2].empty?)
-  end
-
-  def test_clear
-    set = Set[1,2]
-    ret = set.clear
-
-    assert_same(set, ret)
-    assert_equal(true, set.empty?)
-  end
-
-  def test_replace
-    set = Set[1,2]
-    ret = set.replace('a'..'c')
-
-    assert_same(set, ret)
-    assert_equal(Set['a','b','c'], set)
-  end
-
-  def test_to_a
-    set = Set[1,2,3,2]
-    ary = set.to_a
-
-    assert_equal([1,2,3], ary.sort)
-  end
-
-  def test_flatten
-    # test1
-    set1 = Set[
-      1,
-      Set[
-	5,
-	Set[7,
-	  Set[0]
-	],
-	Set[6,2],
-	1
-      ],
-      3,
-      Set[3,4]
-    ]
-
-    set2 = set1.flatten
-    set3 = Set.new(0..7)
-
-    assert_not_same(set2, set1)
-    assert_equal(set3, set2)
-
-    # test2; destructive
-    orig_set1 = set1
-    set1.flatten!
-
-    assert_same(orig_set1, set1)
-    assert_equal(set3, set1)
-
-    # test3; multiple occurrences of a set in an set
-    set1 = Set[1, 2]
-    set2 = Set[set1, Set[set1, 4], 3]
-
-    assert_nothing_raised {
-      set2.flatten!
-    }
-
-    assert_equal(Set.new(1..4), set2)
-
-    # test4; recursion
-    set2 = Set[]
-    set1 = Set[1, set2]
-    set2.add(set1)
-
-    assert_raises(ArgumentError) {
-      set1.flatten!
-    }
-
-    # test5; miscellaneous
-    empty = Set[]
-    set =  Set[Set[empty, "a"],Set[empty, "b"]]
-
-    assert_nothing_raised {
-      set.flatten
-    }
-
-    set1 = empty.merge(Set["no_more", set])
-
-    assert_nil(Set.new(0..31).flatten!)
-
-    x = Set[Set[],Set[1,2]].flatten!
-    y = Set[1,2]
-
-    assert_equal(x, y)
-  end
-
-  def test_include?
-    set = Set[1,2,3]
-
-    assert_equal(true, set.include?(1))
-    assert_equal(true, set.include?(2))
-    assert_equal(true, set.include?(3))
-    assert_equal(false, set.include?(0))
-    assert_equal(false, set.include?(nil))
-
-    set = Set["1",nil,"2",nil,"0","1",false]
-    assert_equal(true, set.include?(nil))
-    assert_equal(true, set.include?(false))
-    assert_equal(true, set.include?("1"))
-    assert_equal(false, set.include?(0))
-    assert_equal(false, set.include?(true))
-  end
-
-  def test_superset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.superset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.superset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.superset?([2])
-    }
-
-    assert_equal(true, set.superset?(Set[]))
-    assert_equal(true, set.superset?(Set[1,2]))
-    assert_equal(true, set.superset?(Set[1,2,3]))
-    assert_equal(false, set.superset?(Set[1,2,3,4]))
-    assert_equal(false, set.superset?(Set[1,4]))
-
-    assert_equal(true, Set[].superset?(Set[]))
-  end
-
-  def test_proper_superset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?([2])
-    }
-
-    assert_equal(true, set.proper_superset?(Set[]))
-    assert_equal(true, set.proper_superset?(Set[1,2]))
-    assert_equal(false, set.proper_superset?(Set[1,2,3]))
-    assert_equal(false, set.proper_superset?(Set[1,2,3,4]))
-    assert_equal(false, set.proper_superset?(Set[1,4]))
-
-    assert_equal(false, Set[].proper_superset?(Set[]))
-  end
-
-  def test_subset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.subset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.subset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.subset?([2])
-    }
-
-    assert_equal(true, set.subset?(Set[1,2,3,4]))
-    assert_equal(true, set.subset?(Set[1,2,3]))
-    assert_equal(false, set.subset?(Set[1,2]))
-    assert_equal(false, set.subset?(Set[]))
-
-    assert_equal(true, Set[].subset?(Set[1]))
-    assert_equal(true, Set[].subset?(Set[]))
-  end
-
-  def test_proper_subset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?([2])
-    }
-
-    assert_equal(true, set.proper_subset?(Set[1,2,3,4]))
-    assert_equal(false, set.proper_subset?(Set[1,2,3]))
-    assert_equal(false, set.proper_subset?(Set[1,2]))
-    assert_equal(false, set.proper_subset?(Set[]))
-
-    assert_equal(false, Set[].proper_subset?(Set[]))
-  end
-
-  def test_each
-    ary = [1,3,5,7,10,20]
-    set = Set.new(ary)
-
-    assert_raises(LocalJumpError) {
-      set.each
-    }
-
-    assert_nothing_raised {
-      set.each { |o|
-	ary.delete(o) or raise "unexpected element: #{o}"
-      }
-
-      ary.empty? or raise "forgotten elements: #{ary.join(', ')}"
-    }
-  end
-
-  def test_add
-    set = Set[1,2,3]
-
-    ret = set.add(2)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.add?(2)
-    assert_nil(ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.add(4)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4], set)
-
-    ret = set.add?(5)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4,5], set)
-  end
-
-  def test_delete
-    set = Set[1,2,3]
-
-    ret = set.delete(4)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.delete?(4)
-    assert_nil(ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.delete(2)
-    assert_equal(set, ret)
-    assert_equal(Set[1,3], set)
-
-    ret = set.delete?(1)
-    assert_equal(set, ret)
-    assert_equal(Set[3], set)
-  end
-
-  def test_delete_if
-    set = Set.new(1..10)
-    ret = set.delete_if { |i| i > 10 }
-    assert_same(set, ret)
-    assert_equal(Set.new(1..10), set)
-
-    set = Set.new(1..10)
-    ret = set.delete_if { |i| i % 3 == 0 }
-    assert_same(set, ret)
-    assert_equal(Set[1,2,4,5,7,8,10], set)
-  end
-
-  def test_collect!
-    set = Set[1,2,3,'a','b','c',-1..1,2..4]
-
-    ret = set.collect! { |i|
-      case i
-      when Numeric
-	i * 2
-      when String
-	i.upcase
-      else
-	nil
-      end
-    }
-
-    assert_same(set, ret)
-    assert_equal(Set[2,4,6,'A','B','C',nil], set)
-  end
-
-  def test_reject!
-    set = Set.new(1..10)
-
-    ret = set.reject! { |i| i > 10 }
-    assert_nil(ret)
-    assert_equal(Set.new(1..10), set)
-
-    ret = set.reject! { |i| i % 3 == 0 }
-    assert_same(set, ret)
-    assert_equal(Set[1,2,4,5,7,8,10], set)
-  end
-
-  def test_merge
-    set = Set[1,2,3]
-
-    ret = set.merge([2,4,6])
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4,6], set)
-  end
-
-  def test_subtract
-    set = Set[1,2,3]
-
-    ret = set.subtract([2,4,6])
-    assert_same(set, ret)
-    assert_equal(Set[1,3], set)
-  end
-
-  def test_plus
-    set = Set[1,2,3]
-
-    ret = set + [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,2,3,4,6], ret)
-  end
-
-  def test_minus
-    set = Set[1,2,3]
-
-    ret = set - [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,3], ret)
-  end
-
-  def test_and
-    set = Set[1,2,3,4]
-
-    ret = set & [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[2,4], ret)
-  end
-
-  def test_xor
-    set = Set[1,2,3,4]
-    ret = set ^ [2,4,5,5]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,3,5], ret)
-  end
-
-  def test_eq
-    set1 = Set[2,3,1]
-    set2 = Set[1,2,3]
-
-    assert_equal(set1, set1)
-    assert_equal(set1, set2)
-    assert_not_equal(Set[1], [1])
-
-    set1 = Class.new(Set)["a", "b"]
-    set2 = Set["a", "b", set1]
-    set1 = set1.add(set1.clone)
-
-#    assert_equal(set1, set2)
-#    assert_equal(set2, set1)
-    assert_equal(set2, set2.clone)
-    assert_equal(set1.clone, set1)
-
-    assert_not_equal(Set[Exception.new,nil], Set[Exception.new,Exception.new], "[ruby-dev:26127]")
-  end
-
-  # def test_hash
-  # end
-
-  # def test_eql?
-  # end
-
-  def test_classify
-    set = Set.new(1..10)
-    ret = set.classify { |i| i % 3 }
-
-    assert_equal(3, ret.size)
-    assert_instance_of(Hash, ret)
-    ret.each_value { |value| assert_instance_of(Set, value) }
-    assert_equal(Set[3,6,9], ret[0])
-    assert_equal(Set[1,4,7,10], ret[1])
-    assert_equal(Set[2,5,8], ret[2])
-  end
-
-  def test_divide
-    set = Set.new(1..10)
-    ret = set.divide { |i| i % 3 }
-
-    assert_equal(3, ret.size)
-    n = 0
-    ret.each { |s| n += s.size }
-    assert_equal(set.size, n)
-    assert_equal(set, ret.flatten)
-
-    set = Set[7,10,5,11,1,3,4,9,0]
-    ret = set.divide { |a,b| (a - b).abs == 1 }
-
-    assert_equal(4, ret.size)
-    n = 0
-    ret.each { |s| n += s.size }
-    assert_equal(set.size, n)
-    assert_equal(set, ret.flatten)
-    ret.each { |s|
-      if s.include?(0)
-	assert_equal(Set[0,1], s)
-      elsif s.include?(3)
-	assert_equal(Set[3,4,5], s)
-      elsif s.include?(7)
-	assert_equal(Set[7], s)
-      elsif s.include?(9)
-	assert_equal(Set[9,10,11], s)
-      else
-	raise "unexpected group: #{s.inspect}"
-      end
-    }
-  end
-
-  def test_inspect
-    set1 = Set[1]
-
-    assert_equal('#<Set: {1}>', set1.inspect)
-
-    set2 = Set[Set[0], 1, 2, set1]
-    assert_equal(false, set2.inspect.include?('#<Set: {...}>'))
-
-    set1.add(set2)
-    assert_equal(true, set1.inspect.include?('#<Set: {...}>'))
-  end
-
-  # def test_pretty_print
-  # end
-
-  # def test_pretty_print_cycle
-  # end
-end
-
-class TC_SortedSet < Test::Unit::TestCase
-  def test_sortedset
-    s = SortedSet[4,5,3,1,2]
-
-    assert_equal([1,2,3,4,5], s.to_a)
-
-    prev = nil
-    s.each { |o| assert(prev < o) if prev; prev = o }
-    assert_not_nil(prev)
-
-    s.map! { |o| -2 * o }
-
-    assert_equal([-10,-8,-6,-4,-2], s.to_a)
-
-    prev = nil
-    ret = s.each { |o| assert(prev < o) if prev; prev = o }
-    assert_not_nil(prev)
-    assert_same(s, ret)
-
-    s = SortedSet.new([2,1,3]) { |o| o * -2 }
-    assert_equal([-6,-4,-2], s.to_a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.delete_if { |o| a << o; o[0] == ?t }
-    assert_same(s, ret)
-    assert_equal(['four', 'one'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.reject! { |o| a << o; o[0] == ?t }
-    assert_same(s, ret)
-    assert_equal(['four', 'one'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.reject! { |o| a << o; false }
-    assert_same(nil, ret)
-    assert_equal(['four', 'one', 'three', 'two'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-  end
-end
-
-class TC_Enumerable < Test::Unit::TestCase
-  def test_to_set
-    ary = [2,5,4,3,2,1,3]
-
-    set = ary.to_set
-    assert_instance_of(Set, set)
-    assert_equal([1,2,3,4,5], set.sort)
-
-    set = ary.to_set { |o| o * -2 }
-    assert_instance_of(Set, set)
-    assert_equal([-10,-8,-6,-4,-2], set.sort)
-
-    set = ary.to_set(SortedSet)
-    assert_instance_of(SortedSet, set)
-    assert_equal([1,2,3,4,5], set.to_a)
-
-    set = ary.to_set(SortedSet) { |o| o * -2 }
-    assert_instance_of(SortedSet, set)
-    assert_equal([-10,-8,-6,-4,-2], set.sort)
-  end
-end
-
-# class TC_RestricedSet < Test::Unit::TestCase
-#   def test_s_new
-#     assert_raises(ArgumentError) { RestricedSet.new }
-# 
-#     s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
-#     assert_equal([2,3], s.sort)
-#   end
-# 
-#   def test_restriction_proc
-#     s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
-# 
-#     f = s.restriction_proc
-#     assert_instance_of(Proc, f)
-#     assert(f[1])
-#     assert(!f[0])
-#   end
-# 
-#   def test_replace
-#     s = RestricedSet.new(-3..3) { |o| o > 0 }
-#     assert_equal([1,2,3], s.sort)
-# 
-#     s.replace([-2,0,3,4,5])
-#     assert_equal([3,4,5], s.sort)
-#   end
-# 
-#   def test_merge
-#     s = RestricedSet.new { |o| o > 0 }
-#     s.merge(-5..5)
-#     assert_equal([1,2,3,4,5], s.sort)
-# 
-#     s.merge([10,-10,-8,8])
-#     assert_equal([1,2,3,4,5,8,10], s.sort)
-#   end
-# end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sha1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sha1.rb
deleted file mode 100644
index af04158..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sha1.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# just for compatibility; requiring "sha1" is obsoleted
-#
-# $RoughId: sha1.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
-# $Id: sha1.rb 12008 2007-03-06 10:12:12Z knu $
-
-require 'digest/sha1'
-
-class SHA1 < Digest::SHA1
-  class << self
-    alias orig_new new
-    def new(str = nil)
-      if str
-        orig_new.update(str)
-      else
-        orig_new
-      end
-    end
-
-    def sha1(*args)
-      new(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell.rb
deleted file mode 100644
index 039f849..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell.rb
+++ /dev/null
@@ -1,269 +0,0 @@
-#
-#   shell.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 1.8 $
-#   	$Date: 2001/03/19 09:01:11 $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "thread"
-
-require "shell/error"
-require "shell/command-processor"
-require "shell/process-controller"
-
-class Shell
-  @RCS_ID='-$Id: shell.rb,v 1.8 2001/03/19 09:01:11 keiju Exp keiju $-'
-
-  include Error
-  extend Exception2MessageMapper
-
-#  @cascade = true
-  # debug: true -> normal debug
-  # debug: 1    -> eval definition debug
-  # debug: 2    -> detail inspect debug
-  @debug = false
-  @verbose = true
-
-  class << Shell
-    attr :cascade, true
-    attr :debug, true
-    attr :verbose, true
-
-#    alias cascade? cascade
-    alias debug? debug
-    alias verbose? verbose
-    @verbose = true
-
-    def debug=(val)
-      @debug = val
-      @verbose = val if val
-    end
-
-    def cd(path)
-      sh = new
-      sh.cd path
-      sh
-    end
-
-    def default_system_path
-      if @default_system_path
-	@default_system_path
-      else
-	ENV["PATH"].split(":")
-      end
-    end
-
-    def default_system_path=(path)
-      @default_system_path = path
-    end
-
-    def default_record_separator
-      if @default_record_separator
-	@default_record_separator
-      else
-	$/
-      end
-    end
-
-    def default_record_separator=(rs)
-      @default_record_separator = rs
-    end
-  end
-
-  def initialize
-    @cwd = Dir.pwd
-    @dir_stack = []
-    @umask = nil
-
-    @system_path = Shell.default_system_path
-    @record_separator = Shell.default_record_separator
-
-    @command_processor = CommandProcessor.new(self)
-    @process_controller = ProcessController.new(self)
-
-    @verbose = Shell.verbose
-    @debug = Shell.debug
-  end
-
-  attr_reader :system_path
-
-  def system_path=(path)
-    @system_path = path
-    rehash
-  end
-
-  attr :umask, true
-  attr :record_separator, true
-
-  attr :verbose, true
-  attr :debug, true
-
-  def debug=(val)
-    @debug = val
-    @verbose = val if val
-  end
-
-  alias verbose? verbose
-  alias debug? debug
-
-  attr_reader :command_processor
-  attr_reader :process_controller
-
-  def expand_path(path)
-    File.expand_path(path, @cwd)
-  end
-
-  # Most Shell commands are defined via CommandProcessor
-
-  #
-  # Dir related methods
-  #
-  # Shell#cwd/dir/getwd/pwd
-  # Shell#chdir/cd
-  # Shell#pushdir/pushd
-  # Shell#popdir/popd
-  # Shell#mkdir
-  # Shell#rmdir
-
-  attr :cwd
-  alias dir cwd
-  alias getwd cwd
-  alias pwd cwd
-
-  attr :dir_stack
-  alias dirs dir_stack
-
-  # If called as iterator, it restores the current directory when the
-  # block ends.
-  def chdir(path = nil)
-    if iterator?
-      cwd_old = @cwd
-      begin
-	chdir(path)
-	yield
-      ensure
-	chdir(cwd_old)
-      end
-    else
-      path = "~" unless path
-      @cwd = expand_path(path)
-      notify "current dir: #{@cwd}"
-      rehash
-      self
-    end
-  end
-  alias cd chdir
-
-  def pushdir(path = nil)
-    if iterator?
-      pushdir(path)
-      begin
-	yield
-      ensure
-	popdir
-      end
-    elsif path
-      @dir_stack.push @cwd
-      chdir path
-      notify "dir stack: [#{@dir_stack.join ', '}]"
-      self
-    else
-      if pop = @dir_stack.pop
-	@dir_stack.push @cwd
-	chdir pop
-	notify "dir stack: [#{@dir_stack.join ', '}]"
-	self
-      else
-	Shell.Fail DirStackEmpty
-      end
-    end
-  end
-  alias pushd pushdir
-
-  def popdir
-    if pop = @dir_stack.pop
-      chdir pop
-      notify "dir stack: [#{@dir_stack.join ', '}]"
-      self
-    else
-      Shell.Fail DirStackEmpty
-    end
-  end
-  alias popd popdir
-
-
-  #
-  # process management
-  #
-  def jobs
-    @process_controller.jobs
-  end
-
-  def kill(sig, command)
-    @process_controller.kill_job(sig, command)
-  end
-
-  #
-  # command definitions
-  #
-  def Shell.def_system_command(command, path = command)
-    CommandProcessor.def_system_command(command, path)
-  end
-
-  def Shell.undef_system_command(command)
-    CommandProcessor.undef_system_command(command)
-  end
-
-  def Shell.alias_command(ali, command, *opts, &block)
-    CommandProcessor.alias_command(ali, command, *opts, &block)
-  end
-
-  def Shell.unalias_command(ali)
-    CommandProcessor.unalias_command(ali)
-  end
-
-  def Shell.install_system_commands(pre = "sys_")
-    CommandProcessor.install_system_commands(pre)
-  end
-
-  #
-  def inspect
-    if debug.kind_of?(Integer) && debug > 2
-      super
-    else
-      to_s
-    end
-  end
-
-  def self.notify(*opts, &block)
-    Thread.exclusive do
-    if opts[-1].kind_of?(String)
-      yorn = verbose?
-    else
-      yorn = opts.pop
-    end
-    return unless yorn
-
-    _head = true
-    print opts.collect{|mes|
-      mes = mes.dup
-      yield mes if iterator?
-      if _head
-	_head = false
-	"shell: " + mes
-      else
-	"       " + mes
-      end
-    }.join("\n")+"\n"
-    end
-  end
-
-  CommandProcessor.initialize
-  CommandProcessor.run_config
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/builtin-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/builtin-command.rb
deleted file mode 100644
index 2e1b361..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/builtin-command.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-#   shell/builtin-command.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "shell/filter"
-
-class Shell
-  class BuiltInCommand<Filter
-    def wait?
-      false
-    end
-    def active?
-      true
-    end
-  end
-
-  class Echo < BuiltInCommand
-    def initialize(sh, *strings)
-      super sh
-      @strings = strings
-    end
-    
-    def each(rs = nil)
-      rs =  @shell.record_separator unless rs
-      for str  in @strings
-	yield str + rs
-      end
-    end
-  end
-
-  class Cat < BuiltInCommand
-    def initialize(sh, *filenames)
-      super sh
-      @cat_files = filenames
-    end
-
-    def each(rs = nil)
-      if @cat_files.empty?
-	super
-      else
-	for src in @cat_files
-	  @shell.foreach(src, rs){|l| yield l}
-	end
-      end
-    end
-  end
-
-  class Glob < BuiltInCommand
-    def initialize(sh, pattern)
-      super sh
-
-      @pattern = pattern
-      Thread.critical = true
-      back = Dir.pwd
-      begin
-	Dir.chdir @shell.cwd
-	@files = Dir[pattern]
-      ensure
-	Dir.chdir back
-	Thread.critical = false
-      end
-    end
-
-    def each(rs = nil)
-      rs =  @shell.record_separator unless rs
-      for f  in @files
-	yield f+rs
-      end
-    end
-  end
-
-#   class Sort < Cat
-#     def initialize(sh, *filenames)
-#       super
-#     end
-#
-#     def each(rs = nil)
-#       ary = []
-#       super{|l|	ary.push l}
-#       for l in ary.sort!
-# 	yield l
-#       end
-#     end
-#   end
-
-  class AppendIO < BuiltInCommand
-    def initialize(sh, io, filter)
-      super sh
-      @input = filter
-      @io = io
-    end
-
-    def input=(filter)
-      @input.input=filter
-      for l in @input
-	@io << l
-      end
-    end
-
-  end
-
-  class AppendFile < AppendIO
-    def initialize(sh, to_filename, filter)
-      @file_name = to_filename
-      io = sh.open(to_filename, "a")
-      super(sh, io, filter)
-    end
-
-    def input=(filter)
-      begin
-	super
-      ensure
-	@io.close
-      end
-    end
-  end
-
-  class Tee < BuiltInCommand
-    def initialize(sh, filename)
-      super sh
-      @to_filename = filename
-    end
-
-    def each(rs = nil)
-      to = @shell.open(@to_filename, "w")
-      begin
-	super{|l| to << l; yield l}
-      ensure
-	to.close
-      end
-    end
-  end
-
-  class Concat < BuiltInCommand
-    def initialize(sh, *jobs)
-      super(sh)
-      @jobs = jobs
-    end
-
-    def each(rs = nil)
-      while job = @jobs.shift
-	job.each{|l| yield l}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/command-processor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/command-processor.rb
deleted file mode 100644
index 085af30..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/command-processor.rb
+++ /dev/null
@@ -1,592 +0,0 @@
-#
-#   shell/command-controller.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "ftools"
-require "thread"
-
-require "shell/error"
-require "shell/filter"
-require "shell/system-command"
-require "shell/builtin-command"
-
-class Shell
-  class CommandProcessor
-#    include Error
-
-    #
-    # initialize of Shell and related classes.
-    #
-    NoDelegateMethods = ["initialize", "expand_path"]
-    def self.initialize
-
-      install_builtin_commands
-
-      # define CommandProccessor#methods to Shell#methods and Filter#methods
-      for m in CommandProcessor.instance_methods(false) - NoDelegateMethods
-	add_delegate_command_to_shell(m)
-      end
-      
-      def self.method_added(id)
-	add_delegate_command_to_shell(id)
-      end
-    end
-
-    #
-    # include run file.
-    #
-    def self.run_config
-      begin
-	load File.expand_path("~/.rb_shell") if ENV.key?("HOME")
-      rescue LoadError, Errno::ENOENT
-      rescue
-	print "load error: #{rc}\n"
-	print $!.class, ": ", $!, "\n"
-	for err in $@[0, $@.size - 2]
-	  print "\t", err, "\n"
-	end
-      end
-    end
-
-    def initialize(shell)
-      @shell = shell
-      @system_commands = {}
-    end
-
-    #
-    # CommandProcessor#expand_path(path)
-    #	  path:	  String
-    #	  return: String
-    #	returns the absolute path for <path>
-    #
-    def expand_path(path)
-      @shell.expand_path(path)
-    end
-
-    #
-    # File related commands
-    # Shell#foreach
-    # Shell#open
-    # Shell#unlink
-    # Shell#test
-    #
-    # -
-    #	
-    # CommandProcessor#foreach(path, rs)
-    #	  path: String
-    #	  rs:	String - record separator
-    #	  iterator
-    #	Same as:
-    #	  File#foreach (when path is file)
-    #	  Dir#foreach (when path is directory)
-    #	path is relative to pwd
-    #
-    def foreach(path = nil, *rs)
-      path = "." unless path
-      path = expand_path(path)
-
-      if File.directory?(path)
-	Dir.foreach(path){|fn| yield fn}
-      else
-	IO.foreach(path, *rs){|l| yield l}
-      end
-    end
-
-    #
-    # CommandProcessor#open(path, mode)
-    #	  path:	  String
-    #	  mode:	  String
-    #	  return: File or Dir
-    #	Same as:
-    #	  File#open (when path is file)
-    #	  Dir#open  (when path is directory)
-    #	mode has an effect only when path is a file
-    #
-    def open(path, mode)
-      path = expand_path(path)
-      if File.directory?(path)
-	Dir.open(path)
-      else
-	effect_umask do
-	  File.open(path, mode)
-	end
-      end
-    end
-    #  public :open
-
-    #
-    # CommandProcessor#unlink(path)
-    #	same as:
-    #	  Dir#unlink  (when path is directory)
-    #	  File#unlink (when path is file)
-    #
-    def unlink(path)
-      path = expand_path(path)
-      if File.directory?(path)
-	Dir.unlink(path)
-      else
-	IO.unlink(path)
-      end
-    end
-
-    #
-    # CommandProcessor#test(command, file1, file2)
-    # CommandProcessor#[command, file1, file2]
-    #	  command: char or String or Symbol
-    #	  file1:   String
-    #	  file2:   String(optional)
-    #	  return: Boolean
-    #	same as:
-    #	  test()	   (when command is char or length 1 string or symbol)
-    #	  FileTest.command (others)
-    #	example:
-    #	  sh[?e, "foo"]
-    #	  sh[:e, "foo"]
-    #	  sh["e", "foo"]
-    #	  sh[:exists?, "foo"]
-    #	  sh["exists?", "foo"]
-    #	  
-    def test(command, file1, file2=nil)
-      file1 = expand_path(file1)
-      file2 = expand_path(file2) if file2
-      command = command.id2name if command.kind_of?(Symbol)
-
-      case command
-      when Integer
-	top_level_test(command, file1, file2)
-      when String
-	if command.size == 1
-	  if file2
-	    top_level_test(command, file1, file2)
-	  else
-	    top_level_test(command, file1)
-	  end
-	else
-	  if file2
-	    FileTest.send(command, file1, file2)
-	  else
-	    FileTest.send(command, file1)
-	  end
-	end
-      end
-    end
-    alias [] test
-
-    #
-    # Dir related methods
-    #
-    # Shell#mkdir
-    # Shell#rmdir
-    #
-    #--
-    #
-    # CommandProcessor#mkdir(*path)
-    #	  path: String
-    #	same as Dir.mkdir()
-    #	  
-    def mkdir(*path)
-      for dir in path
-	Dir.mkdir(expand_path(dir))
-      end
-    end
-
-    #
-    # CommandProcessor#rmdir(*path)
-    #	  path: String
-    #	same as Dir.rmdir()
-    #	  
-    def rmdir(*path)
-      for dir in path
-	Dir.rmdir(expand_path(dir))
-      end
-    end
-
-    #
-    # CommandProcessor#system(command, *opts)
-    #	  command: String
-    #	  opts:	   String
-    #	  return:  SystemCommand
-    #	Same as system() function
-    #	example:
-    #	  print sh.system("ls", "-l")
-    #	  sh.system("ls", "-l") | sh.head > STDOUT
-    # 
-    def system(command, *opts)
-      if opts.empty?
-	if command =~ /\*|\?|\{|\}|\[|\]|<|>|\(|\)|~|&|\||\\|\$|;|'|`|"|\n/
-	  return SystemCommand.new(@shell, find_system_command("sh"), "-c", command)
-	else
-	  command, *opts = command.split(/\s+/)
-	end
-      end
-      SystemCommand.new(@shell, find_system_command(command), *opts)
-    end
-
-    #
-    # ProcessCommand#rehash
-    #	clear command hash table.
-    #
-    def rehash
-      @system_commands = {}
-    end
-
-    #
-    # ProcessCommand#transact
-    #
-    def check_point
-      @shell.process_controller.wait_all_jobs_execution
-    end
-    alias finish_all_jobs check_point
-
-    def transact(&block)
-      begin
-	@shell.instance_eval(&block)
-      ensure
-	check_point
-      end
-    end
-
-    #
-    # internal commands
-    #
-    def out(dev = STDOUT, &block)
-      dev.print transact(&block)
-    end
-
-    def echo(*strings)
-      Echo.new(@shell, *strings)
-    end
-
-    def cat(*filenames)
-      Cat.new(@shell, *filenames)
-    end
-
-    #   def sort(*filenames)
-    #     Sort.new(self, *filenames)
-    #   end
-
-    def glob(pattern)
-      Glob.new(@shell, pattern)
-    end
-
-    def append(to, filter)
-      case to
-      when String
-	AppendFile.new(@shell, to, filter)
-      when IO
-	AppendIO.new(@shell, to, filter)
-      else
-	Shell.Fail Error::CantApplyMethod, "append", to.class
-      end
-    end
-
-    def tee(file)
-      Tee.new(@shell, file)
-    end
-
-    def concat(*jobs)
-      Concat.new(@shell, *jobs)
-    end
-
-    # %pwd, %cwd -> @pwd
-    def notify(*opts, &block)
-      Thread.exclusive do
-	Shell.notify(*opts) {|mes|
-	  yield mes if iterator?
-	
-	  mes.gsub!("%pwd", "#{@cwd}")
-	  mes.gsub!("%cwd", "#{@cwd}")
-	}
-      end
-    end
-
-    #
-    # private functions
-    #
-    def effect_umask
-      if @shell.umask
-	Thread.critical = true
-	save = File.umask
-	begin
-	  yield
-	ensure
-	  File.umask save
-	  Thread.critical = false
-	end
-      else
-	yield
-      end
-    end
-    private :effect_umask
-
-    def find_system_command(command)
-      return command if /^\// =~ command
-      case path = @system_commands[command]
-      when String
-	if exists?(path)
-	  return path
-	else
-	  Shell.Fail Error::CommandNotFound, command
-	end
-      when false
-	Shell.Fail Error::CommandNotFound, command
-      end
-
-      for p in @shell.system_path
-	path = join(p, command)
-	if FileTest.exists?(path)
-	  @system_commands[command] = path
-	  return path
-	end
-      end
-      @system_commands[command] = false
-      Shell.Fail Error::CommandNotFound, command
-    end
-
-    #
-    # CommandProcessor.def_system_command(command, path)
-    #	  command:  String
-    #	  path:	    String
-    #	define 'command()' method as method.
-    #
-    def self.def_system_command(command, path = command)
-      begin
-	eval((d = %Q[def #{command}(*opts)
-     	          SystemCommand.new(@shell, '#{path}', *opts)
-               end]), nil, __FILE__, __LINE__ - 1)
-      rescue SyntaxError
-	Shell.notify "warn: Can't define #{command} path: #{path}." 
-      end
-      Shell.notify "Define #{command} path: #{path}.", Shell.debug?
-      Shell.notify("Definition of #{command}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-    end
-
-    def self.undef_system_command(command)
-      command = command.id2name if command.kind_of?(Symbol)
-      remove_method(command)
-      Shell.module_eval{remove_method(command)}
-      Filter.module_eval{remove_method(command)}
-      self
-    end
-
-    # define command alias
-    # ex)
-    # def_alias_command("ls_c", "ls", "-C", "-F")
-    # def_alias_command("ls_c", "ls"){|*opts| ["-C", "-F", *opts]}
-    #
-    @alias_map = {}
-    def self.alias_map
-      @alias_map
-    end
-    def self.alias_command(ali, command, *opts, &block)
-      ali = ali.id2name if ali.kind_of?(Symbol)
-      command = command.id2name if command.kind_of?(Symbol)
-      begin
-	if iterator?
-	  @alias_map[ali.intern] = proc
-
-	  eval((d = %Q[def #{ali}(*opts)
-                          @shell.__send__(:#{command},
-                                          *(CommandProcessor.alias_map[:#{ali}].call *opts))
-	                end]), nil, __FILE__, __LINE__ - 1)
-    
-	else
-           args = opts.collect{|opt| '"' + opt + '"'}.join(",")
-           eval((d = %Q[def #{ali}(*opts)
-                          @shell.__send__(:#{command}, #{args}, *opts)
-                        end]), nil, __FILE__, __LINE__ - 1)
-	end
-      rescue SyntaxError
-	Shell.notify "warn: Can't alias #{ali} command: #{command}." 
-	Shell.notify("Definition of #{ali}: ", d)
-	raise
-      end
-      Shell.notify "Define #{ali} command: #{command}.", Shell.debug?
-      Shell.notify("Definition of #{ali}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-      self
-    end
-   
-    def self.unalias_command(ali)
-      ali = ali.id2name if ali.kind_of?(Symbol)
-      @alias_map.delete ali.intern
-      undef_system_command(ali)
-    end
-   
-    #
-    # CommandProcessor.def_builtin_commands(delegation_class, command_specs)
-    #	  delegation_class: Class or Module
-    #	  command_specs: [[command_name, [argument,...]],...]
-    #	     command_name: String
-    #	     arguments:	   String
-    #		FILENAME?? -> expand_path(filename??)
-    #		*FILENAME?? -> filename??.collect{|f|expand_path(f)}.join(", ")
-    #	define command_name(argument,...) as
-    #	    delegation_class.command_name(argument,...)
-    #
-    def self.def_builtin_commands(delegation_class, command_specs)
-      for meth, args in command_specs
-	arg_str = args.collect{|arg| arg.downcase}.join(", ")
-	call_arg_str = args.collect{
-	  |arg|
-	  case arg
-	  when /^(FILENAME.*)$/
-	    format("expand_path(%s)", $1.downcase)
-	  when /^(\*FILENAME.*)$/
-	    # \*FILENAME* -> filenames.collect{|fn| expand_path(fn)}.join(", ")
-	    $1.downcase + '.collect{|fn| expand_path(fn)}'
-	  else
-	    arg
-	  end
-	}.join(", ")
-	d = %Q[def #{meth}(#{arg_str})
-		    #{delegation_class}.#{meth}(#{call_arg_str})
-		 end]
-	Shell.notify "Define #{meth}(#{arg_str})", Shell.debug?
-	Shell.notify("Definition of #{meth}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-	eval d
-      end
-    end
-
-    #
-    # CommandProcessor.install_system_commands(pre)
-    #	    pre: String - command name prefix
-    # defines every command which belongs in default_system_path via
-    # CommandProcessor.command().  It doesn't define already defined
-    # methods twice.  By default, "pre_" is prefixes to each method
-    # name.  Characters that may not be used in a method name are
-    # all converted to '_'.  Definition errors are just ignored.
-    #
-    def self.install_system_commands(pre = "sys_")
-      defined_meth = {}
-      for m in Shell.methods
-	defined_meth[m] = true
-      end
-      sh = Shell.new
-      for path in Shell.default_system_path
-	next unless sh.directory? path
-	sh.cd path
-	sh.foreach do
-	  |cn|
-	  if !defined_meth[pre + cn] && sh.file?(cn) && sh.executable?(cn)
-	    command = (pre + cn).gsub(/\W/, "_").sub(/^([0-9])/, '_\1')
-	    begin
-	      def_system_command(command, sh.expand_path(cn))
-	    rescue
-	      Shell.notify "warn: Can't define #{command} path: #{cn}"
-	    end
-	    defined_meth[command] = command
-	  end
-	end
-      end
-    end
-
-    #----------------------------------------------------------------------
-    #
-    #  class initializing methods  - 
-    #
-    #----------------------------------------------------------------------
-    def self.add_delegate_command_to_shell(id)
-      id = id.intern if id.kind_of?(String)
-      name = id.id2name
-      if Shell.method_defined?(id)
-	Shell.notify "warn: override definnition of Shell##{name}."
-	Shell.notify "warn: alias Shell##{name} to Shell##{name}_org.\n"
-	Shell.module_eval "alias #{name}_org #{name}"
-      end
-      Shell.notify "method added: Shell##{name}.", Shell.debug?
-      Shell.module_eval(%Q[def #{name}(*args, &block)
-			    begin
-			      @command_processor.__send__(:#{name}, *args, &block)
-			    rescue Exception
-			      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	                      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-			    raise
-			    end
-                          end], __FILE__, __LINE__)
-
-      if Shell::Filter.method_defined?(id)
-	Shell.notify "warn: override definnition of Shell::Filter##{name}."
-	Shell.notify "warn: alias Shell##{name} to Shell::Filter##{name}_org."
-	Filter.module_eval "alias #{name}_org #{name}"
-      end
-      Shell.notify "method added: Shell::Filter##{name}.", Shell.debug?
-      Filter.module_eval(%Q[def #{name}(*args, &block)
-			    begin
-			      self | @shell.__send__(:#{name}, *args, &block)
-			    rescue Exception
-			      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	                      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-			    raise
-			    end
-                          end], __FILE__, __LINE__)
-    end
-
-    #
-    # define default builtin commands
-    #
-    def self.install_builtin_commands
-      # method related File.
-      #	(exclude open/foreach/unlink)
-      normal_delegation_file_methods = [
-	["atime", ["FILENAME"]],
-	["basename", ["fn", "*opts"]],
-	["chmod", ["mode", "*FILENAMES"]], 
-	["chown", ["owner", "group", "*FILENAME"]],
-	["ctime", ["FILENAMES"]],
-	["delete", ["*FILENAMES"]],
-	["dirname", ["FILENAME"]],
-	["ftype", ["FILENAME"]],
-	["join", ["*items"]],
-	["link", ["FILENAME_O", "FILENAME_N"]],
-	["lstat", ["FILENAME"]],
-	["mtime", ["FILENAME"]],
-	["readlink", ["FILENAME"]],
-	["rename", ["FILENAME_FROM", "FILENAME_TO"]],
-	#      ["size", ["FILENAME"]],
-	["split", ["pathname"]],
-	["stat", ["FILENAME"]],
-	["symlink", ["FILENAME_O", "FILENAME_N"]],
-	["truncate", ["FILENAME", "length"]],
-	["utime", ["atime", "mtime", "*FILENAMES"]]]
-
-      def_builtin_commands(File, normal_delegation_file_methods)
-      alias_method :rm, :delete
-
-      # method related FileTest
-      def_builtin_commands(FileTest, 
-		   FileTest.singleton_methods(false).collect{|m| [m, ["FILENAME"]]})
-
-      # method related ftools
-      normal_delegation_ftools_methods = [
-	["syscopy", ["FILENAME_FROM", "FILENAME_TO"]],
-	["copy", ["FILENAME_FROM", "FILENAME_TO"]],
-	["move", ["FILENAME_FROM", "FILENAME_TO"]],
-	["compare", ["FILENAME_FROM", "FILENAME_TO"]],
-	["safe_unlink", ["*FILENAMES"]],
-	["makedirs", ["*FILENAMES"]],
-	#    ["chmod", ["mode", "*FILENAMES"]],
-	["install", ["FILENAME_FROM", "FILENAME_TO", "mode"]],
-      ]
-      def_builtin_commands(File,
-		   normal_delegation_ftools_methods)
-      alias_method :cmp, :compare
-      alias_method :mv, :move
-      alias_method :cp, :copy
-      alias_method :rm_f, :safe_unlink
-      alias_method :mkpath, :makedirs
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/error.rb
deleted file mode 100644
index 959f926..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/error.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-#   shell/error.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-class Shell
-  module Error
-    extend Exception2MessageMapper
-    def_e2message TypeError, "wrong argument type %s (expected %s)"
-
-    def_exception :DirStackEmpty, "Directory stack empty."
-    def_exception :CantDefine, "Can't define method(%s, %s)."
-    def_exception :CantApplyMethod, "This method(%s) does not apply to this type(%s)."
-    def_exception :CommandNotFound, "Command not found(%s)."
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/filter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/filter.rb
deleted file mode 100644
index 1d2c0b9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/filter.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-#   shell/filter.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-class Shell
-  #
-  # Filter
-  # A method to require
-  #    each()
-  #
-  class Filter
-    include Enumerable
-
-    def initialize(sh)
-      @shell = sh	  # parent shell
-      @input = nil	  # input filter
-    end
-
-    attr_reader :input
-
-    def input=(filter)
-      @input = filter
-    end
-    
-    def each(rs = nil)
-      rs = @shell.record_separator unless rs
-      if @input
-	@input.each(rs){|l| yield l}
-      end
-    end
-
-    def < (src)
-      case src
-      when String
-	cat = Cat.new(@shell, src)
-	cat | self
-      when IO
-	self.input = src
-	self
-      else
-	Shell.Fail Error::CantApplyMethod, "<", to.class
-      end
-    end
-
-    def > (to)
-      case to
-      when String
-	dst = @shell.open(to, "w")
-	begin
-	  each(){|l| dst << l}
-	ensure
-	  dst.close
-	end
-      when IO
-	each(){|l| to << l}
-      else
-	Shell.Fail Error::CantApplyMethod, ">", to.class
-      end
-      self
-    end
-
-    def >> (to)
-      begin
-	Shell.cd(@shell.pwd).append(to, self)
-      rescue CantApplyMethod
-	Shell.Fail Error::CantApplyMethod, ">>", to.class
-      end
-    end
-
-    def | (filter)
-      filter.input = self
-      if active?
-	@shell.process_controller.start_job filter
-      end
-      filter
-    end
-
-    def + (filter)
-      Join.new(@shell, self, filter)
-    end
-
-    def to_a
-      ary = []
-      each(){|l| ary.push l}
-      ary
-    end
-
-    def to_s
-      str = ""
-      each(){|l| str.concat l}
-      str
-    end
-
-    def inspect
-      if @shell.debug.kind_of?(Integer) && @shell.debug > 2
-	super
-      else
-	to_s
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/process-controller.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/process-controller.rb
deleted file mode 100644
index 0ae975c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/process-controller.rb
+++ /dev/null
@@ -1,260 +0,0 @@
-#
-#   shell/process-controller.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 12008 $
-#   	$Date: 2007-03-06 19:12:12 +0900 (Tue, 06 Mar 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "mutex_m"
-require "monitor"
-require "sync"
-
-class Shell
-  class ProcessController
-
-    @ProcessControllers = {}
-    @ProcessControllers.extend Mutex_m
-
-    class<<self
-
-      def process_controllers_exclusive
-	begin
-	  @ProcessControllers.lock unless Thread.critical 
-	  yield
-	ensure
-	  @ProcessControllers.unlock unless Thread.critical 
-	end
-      end
-
-      def activate(pc)
-	process_controllers_exclusive do
-	  @ProcessControllers[pc] ||= 0
-	  @ProcessControllers[pc] += 1
-	end
-      end
-
-      def inactivate(pc)
-	process_controllers_exclusive do
-	  if @ProcessControllers[pc]
-	    if (@ProcessControllers[pc] -= 1) == 0
-	      @ProcessControllers.delete(pc)
-	    end
-	  end
-	end
-      end
-
-      def each_active_object
-	process_controllers_exclusive do
-	  for ref in @ProcessControllers.keys
-	    yield ref
-	  end
-	end
-      end
-    end
-
-    def initialize(shell)
-      @shell = shell
-      @waiting_jobs = []
-      @active_jobs = []
-      @jobs_sync = Sync.new
-
-      @job_monitor = Mutex.new
-      @job_condition = ConditionVariable.new
-    end
-
-    def jobs
-      jobs = []
-      @jobs_sync.synchronize(:SH) do
-	jobs.concat @waiting_jobs
-	jobs.concat @active_jobs
-      end
-      jobs
-    end
-
-    def active_jobs
-      @active_jobs
-    end
-
-    def waiting_jobs
-      @waiting_jobs
-    end
-    
-    def jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.empty? or @waiting_jobs.empty?
-      end
-    end
-
-    def active_jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.empty?
-      end
-    end
-
-    def waiting_jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@waiting_jobs.empty?
-      end
-    end
-
-    # schedule a command
-    def add_schedule(command)
-      @jobs_sync.synchronize(:EX) do
-	ProcessController.activate(self)
-	if @active_jobs.empty?
-	  start_job command
-	else
-	  @waiting_jobs.push(command)
-	end
-      end
-    end
-
-    # start a job
-    def start_job(command = nil)
-      @jobs_sync.synchronize(:EX) do
-	if command
-	  return if command.active?
-	  @waiting_jobs.delete command
-	else
-	  command = @waiting_jobs.shift
-	  return unless command
-	end
-	@active_jobs.push command
-	command.start
-
-	# start all jobs that input from the job
-	for job in @waiting_jobs
-	  start_job(job) if job.input == command
-	end
-      end
-    end
-
-    def waiting_job?(job)
-      @jobs_sync.synchronize(:SH) do
-	@waiting_jobs.include?(job)
-      end
-    end
-
-    def active_job?(job)
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.include?(job)
-      end
-    end
-
-    # terminate a job
-    def terminate_job(command)
-      @jobs_sync.synchronize(:EX) do
-	@active_jobs.delete command
-	ProcessController.inactivate(self)
-	if @active_jobs.empty?
-	  start_job
-	end
-      end
-    end
-
-    # kill a job
-    def kill_job(sig, command)
-      @jobs_sync.synchronize(:SH) do
-	if @waiting_jobs.delete command
-	  ProcessController.inactivate(self)
-	  return
-	elsif @active_jobs.include?(command)
-	  begin
-	    r = command.kill(sig)
-	    ProcessController.inactivate(self)
-	  rescue
-	    print "Shell: Warn: $!\n" if @shell.verbose?
-	    return nil
-	  end
-	  @active_jobs.delete command
-	  r
-	end
-      end
-    end
-
-    # wait for all jobs to terminate
-    def wait_all_jobs_execution
-      @job_monitor.synchronize do
-	begin
-	  while !jobs.empty?
-	    @job_condition.wait(@job_monitor)
-	  end
-	ensure
-	  redo unless jobs.empty?
-	end
-      end
-    end
-
-    # simple fork
-    def sfork(command, &block)
-      pipe_me_in, pipe_peer_out = IO.pipe
-      pipe_peer_in, pipe_me_out = IO.pipe
-      Thread.critical = true
-
-      STDOUT.flush
-      ProcessController.each_active_object do |pc|
-	for jobs in pc.active_jobs
-	  jobs.flush
-	end
-      end
-      
-      pid = fork {
-	Thread.critical = true
-
-	Thread.list.each do |th| 
-	  th.kill unless [Thread.main, Thread.current].include?(th)
-	end
-
-	STDIN.reopen(pipe_peer_in)
-	STDOUT.reopen(pipe_peer_out)
-
-	ObjectSpace.each_object(IO) do |io| 
-	  if ![STDIN, STDOUT, STDERR].include?(io)
-	    io.close unless io.closed?
-	  end
-	end
-	yield
-      }
-
-      pipe_peer_in.close
-      pipe_peer_out.close
-      command.notify "job(%name:##{pid}) start", @shell.debug?
-      Thread.critical = false
-
-      th = Thread.start {
-	Thread.critical = true
-	begin
-	  _pid = nil
-	  command.notify("job(%id) start to waiting finish.", @shell.debug?)
-	  Thread.critical = false
-	  _pid = Process.waitpid(pid, nil)
-	rescue Errno::ECHILD
-	  command.notify "warn: job(%id) was done already waitipd."
-	  _pid = true
-	ensure
-	  # when the process ends, wait until the command termintes
-	  if _pid
-	  else
-	    command.notify("notice: Process finishing...",
-			   "wait for Job[%id] to finish.",
-			   "You can use Shell#transact or Shell#check_point for more safe execution.")
-	    redo
-	  end
-	  Thread.exclusive do
-	    @job_monitor.synchronize do 
-	      terminate_job(command)
-	      @job_condition.signal
-	      command.notify "job(%id) finish.", @shell.debug?
-	    end
-	  end
-	end
-      }
-      return pid, pipe_me_in, pipe_me_out
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/system-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/system-command.rb
deleted file mode 100644
index 997d549..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/system-command.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-#
-#   shell/system-command.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "shell/filter"
-
-class Shell
-  class SystemCommand < Filter
-    def initialize(sh, command, *opts)
-      if t = opts.find{|opt| !opt.kind_of?(String) && opt.class}
-	Shell.Fail Error::TypeError, t.class, "String"
-      end
-      super(sh)
-      @command = command
-      @opts = opts
-      
-      @input_queue = Queue.new
-      @pid = nil
-
-      sh.process_controller.add_schedule(self)
-    end
-
-    attr_reader :command
-    alias name command
-
-    def wait?
-      @shell.process_controller.waiting_job?(self)
-    end
-
-    def active?
-      @shell.process_controller.active_job?(self)
-    end
-
-    def input=(inp)
-      super
-      if active?
-	start_export
-      end
-    end
-
-    def start
-      @pid, @pipe_in, @pipe_out = @shell.process_controller.sfork(self) {
-	Dir.chdir @shell.pwd
-	exec(@command, *@opts)
-      }
-      if @input
-	start_export
-      end
-      start_import
-    end
-
-    def flush
-      @pipe_out.flush if @pipe_out and !@pipe_out.closed?
-    end
-
-    def terminate
-      begin
-	@pipe_in.close
-      rescue IOError
-      end
-      begin
-	@pipe_out.close
-      rescue IOError
-      end
-    end
-
-    def kill(sig)
-      if @pid
-	Process.kill(sig, @pid)
-      end
-    end
-
-
-    def start_import
-#      Thread.critical = true
-      notify "Job(%id) start imp-pipe.", @shell.debug?
-      rs = @shell.record_separator unless rs
-      _eop = true
-#      Thread.critical = false
-      th = Thread.start {
-	Thread.critical = true
-	begin
-	  Thread.critical = false
-	  while l = @pipe_in.gets
-	    @input_queue.push l
-	  end
-	  _eop = false
-	rescue Errno::EPIPE
-	  _eop = false
-	ensure
-	  if _eop
-	    notify("warn: Process finishing...",
-		   "wait for Job[%id] to finish pipe importing.",
-		   "You can use Shell#transact or Shell#check_point for more safe execution.")
-#	    Tracer.on
-	    Thread.current.run
-	    redo
-	  end
-	  Thread.exclusive do
-	    notify "job(%id}) close imp-pipe.", @shell.debug?
-	    @input_queue.push :EOF
-	    @pipe_in.close
-	  end
-	end
-      }
-    end
-
-    def start_export
-      notify "job(%id) start exp-pipe.", @shell.debug?
-      _eop = true
-      th = Thread.start{
-	Thread.critical = true
-	begin
-	  Thread.critical = false
-	  @input.each{|l| @pipe_out.print l}
-	  _eop = false
-	rescue Errno::EPIPE
-	  _eop = false
-	ensure
-	  if _eop
-	    notify("shell: warn: Process finishing...",
-		   "wait for Job(%id) to finish pipe exporting.",
-		   "You can use Shell#transact or Shell#check_point for more safe execution.")
-#	    Tracer.on
-	    redo
-	  end
-	  Thread.exclusive do
-	    notify "job(%id) close exp-pipe.", @shell.debug?
-	    @pipe_out.close
-	  end
-	end
-      }
-    end
-
-    alias super_each each
-    def each(rs = nil)
-      while (l = @input_queue.pop) != :EOF
-	yield l
-      end
-    end
-
-    # ex)
-    #    if you wish to output: 
-    #	    "shell: job(#{@command}:#{@pid}) close pipe-out."
-    #	 then 
-    #	    mes: "job(%id) close pipe-out."
-    #    yorn: Boolean(@shell.debug? or @shell.verbose?)
-    def notify(*opts, &block)
-      Thread.exclusive do
-	@shell.notify(*opts) {|mes|
-	  yield mes if iterator?
-
-	  mes.gsub!("%id", "#{@command}:##{@pid}")
-	  mes.gsub!("%name", "#{@command}")
-	  mes.gsub!("%pid", "#{@pid}")
-	}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/version.rb
deleted file mode 100644
index 09c216f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shell/version.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#   version.rb - shell version definition file
-#   	$Release Version: 0.6.0$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-class Shell
-  @RELEASE_VERSION = "0.6.0"
-  @LAST_UPDATE_DATE = "01/03/19"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shellwords.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shellwords.rb
deleted file mode 100644
index e87b9e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/shellwords.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# shellwords.rb: Split text into an array of tokens a la UNIX shell
-#
-
-#
-# This module is originally a port of shellwords.pl, but modified to
-# conform to POSIX / SUSv3 (IEEE Std 1003.1-2001).
-#
-# Examples:
-#
-#   require 'shellwords'
-#   words = Shellwords.shellwords(line)
-#
-# or
-#
-#   require 'shellwords'
-#   include Shellwords
-#   words = shellwords(line)
-#
-module Shellwords
-
-  #
-  # Split text into an array of tokens in the same way the UNIX Bourne
-  # shell does.
-  #
-  # See the +Shellwords+ module documentation for an example.
-  #
-  def shellwords(line)
-    line = String.new(line) rescue
-      raise(ArgumentError, "Argument must be a string")
-    line.lstrip!
-    words = []
-    until line.empty?
-      field = ''
-      loop do
-	if line.sub!(/\A"(([^"\\]|\\.)*)"/, '') then
-	  snippet = $1.gsub(/\\(.)/, '\1')
-	elsif line =~ /\A"/ then
-	  raise ArgumentError, "Unmatched double quote: #{line}"
-	elsif line.sub!(/\A'([^']*)'/, '') then
-	  snippet = $1
-	elsif line =~ /\A'/ then
-	  raise ArgumentError, "Unmatched single quote: #{line}"
-	elsif line.sub!(/\A\\(.)?/, '') then
-	  snippet = $1 || '\\'
-	elsif line.sub!(/\A([^\s\\'"]+)/, '') then
-	  snippet = $1
-	else
-	  line.lstrip!
-	  break
-	end
-	field.concat(snippet)
-      end
-      words.push(field)
-    end
-    words
-  end
-
-  module_function :shellwords
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/singleton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/singleton.rb
deleted file mode 100644
index 31fb950..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/singleton.rb
+++ /dev/null
@@ -1,359 +0,0 @@
-# The Singleton module implements the Singleton pattern.
-#
-# Usage:
-#    class Klass
-#       include Singleton
-#       # ...
-#    end
-#
-# *  this ensures that only one instance of Klass lets call it
-#    ``the instance'' can be created.
-#
-#    a,b  = Klass.instance, Klass.instance
-#    a == b   # => true
-#    a.new    #  NoMethodError - new is private ...
-#
-# *  ``The instance'' is created at instantiation time, in other
-#    words the first call of Klass.instance(), thus
-#
-#      class OtherKlass
-#        include Singleton
-#        # ...
-#      end
-#      ObjectSpace.each_object(OtherKlass){} # => 0.
-#
-# *  This behavior is preserved under inheritance and cloning.
-#
-#
-#
-# This is achieved by marking
-# *  Klass.new and Klass.allocate - as private
-#
-# Providing (or modifying) the class methods
-# *  Klass.inherited(sub_klass) and Klass.clone()  - 
-#    to ensure that the Singleton pattern is properly
-#    inherited and cloned.
-#
-# *  Klass.instance()  -  returning ``the instance''. After a
-#    successful self modifying (normally the first) call the
-#    method body is a simple:
-#
-#       def Klass.instance()
-#         return @__instance__
-#       end
-#
-# *  Klass._load(str)  -  calling Klass.instance()
-#
-# *  Klass._instantiate?()  -  returning ``the instance'' or
-#    nil. This hook method puts a second (or nth) thread calling
-#    Klass.instance() on a waiting loop. The return value
-#    signifies the successful completion or premature termination
-#    of the first, or more generally, current "instantiation thread".
-#
-#
-# The instance method of Singleton are
-# * clone and dup - raising TypeErrors to prevent cloning or duping
-#
-# *  _dump(depth) - returning the empty string.  Marshalling strips
-#    by default all state information, e.g. instance variables and
-#    taint state, from ``the instance''.  Providing custom _load(str)
-#    and _dump(depth) hooks allows the (partially) resurrections of
-#    a previous state of ``the instance''.
-
-
-
-module Singleton
-  #  disable build-in copying methods
-  def clone
-    raise TypeError, "can't clone instance of singleton #{self.class}"
-  end
-  def dup
-    raise TypeError, "can't dup instance of singleton #{self.class}"
-  end
-
-  #  default marshalling strategy
-  def _dump(depth=-1) 
-    ''
-  end
-end
-
-
-class << Singleton
-  #  Method body of first instance call.
-  FirstInstanceCall = proc do
-    #  @__instance__ takes on one of the following values
-    #  * nil     -  before and after a failed creation
-    #  * false  -  during creation
-    #  * sub_class instance  -  after a successful creation
-    #  the form makes up for the lack of returns in progs
-    Thread.critical = true
-    if  @__instance__.nil?
-      @__instance__  = false
-      Thread.critical = false
-      begin
-        @__instance__ = new
-      ensure
-        if @__instance__
-          class <<self
-            remove_method :instance
-            def instance; @__instance__ end
-          end
-        else
-          @__instance__ = nil #  failed instance creation
-        end
-      end
-    elsif  _instantiate?()
-      Thread.critical = false    
-    else
-      @__instance__  = false
-      Thread.critical = false
-      begin
-        @__instance__ = new
-      ensure
-        if @__instance__
-          class <<self
-            remove_method :instance
-            def instance; @__instance__ end
-          end
-        else
-          @__instance__ = nil
-        end
-      end
-    end
-    @__instance__
-  end
-  
-  module SingletonClassMethods  
-    # properly clone the Singleton pattern - did you know
-    # that duping doesn't copy class methods?  
-    def clone
-      Singleton.__init__(super)
-    end
-    
-    private
-    
-    #  ensure that the Singleton pattern is properly inherited   
-    def inherited(sub_klass)
-      super
-      Singleton.__init__(sub_klass)
-    end
-    
-    def _load(str) 
-      instance 
-    end
-    
-    # waiting-loop hook
-    def _instantiate?()
-      while false.equal?(@__instance__)
-        Thread.critical = false
-        sleep(0.08)   # timeout
-        Thread.critical = true
-      end
-      @__instance__
-    end
-  end
-  
-  def __init__(klass)
-    klass.instance_eval { @__instance__ = nil }
-    class << klass
-      define_method(:instance,FirstInstanceCall)
-    end
-    klass
-  end
-  
-  private
-  #  extending an object with Singleton is a bad idea
-  undef_method :extend_object
-  
-  def append_features(mod)
-    #  help out people counting on transitive mixins
-    unless mod.instance_of?(Class)
-      raise TypeError, "Inclusion of the OO-Singleton module in module #{mod}"
-    end
-    super
-  end
-  
-  def included(klass)
-    super
-    klass.private_class_method  :new, :allocate
-    klass.extend SingletonClassMethods
-    Singleton.__init__(klass)
-  end
-end
- 
-
-
-if __FILE__ == $0
-
-def num_of_instances(klass)
-    "#{ObjectSpace.each_object(klass){}} #{klass} instance(s)"
-end 
-
-# The basic and most important example.
-
-class SomeSingletonClass
-  include Singleton
-end
-puts "There are #{num_of_instances(SomeSingletonClass)}" 
-
-a = SomeSingletonClass.instance
-b = SomeSingletonClass.instance # a and b are same object
-puts "basic test is #{a == b}"
-
-begin
-  SomeSingletonClass.new
-rescue  NoMethodError => mes
-  puts mes
-end
-
-
-
-puts "\nThreaded example with exception and customized #_instantiate?() hook"; p
-Thread.abort_on_exception = false
-
-class Ups < SomeSingletonClass
-  def initialize
-    self.class.__sleep
-    puts "initialize called by thread ##{Thread.current[:i]}"
-  end
-end
-  
-class << Ups
-  def _instantiate?
-    @enter.push Thread.current[:i]
-    while false.equal?(@__instance__)
-      Thread.critical = false
-      sleep 0.08 
-      Thread.critical = true
-    end
-    @leave.push Thread.current[:i]
-    @__instance__
-  end
-  
-  def __sleep
-    sleep(rand(0.08))
-  end
-  
-  def new
-    begin
-      __sleep
-      raise  "boom - thread ##{Thread.current[:i]} failed to create instance"
-    ensure
-      # simple flip-flop
-      class << self
-        remove_method :new
-      end
-    end
-  end
-  
-  def instantiate_all
-    @enter = []
-    @leave = []
-    1.upto(9) {|i|  
-      Thread.new { 
-        begin
-          Thread.current[:i] = i
-          __sleep
-          instance
-        rescue RuntimeError => mes
-          puts mes
-        end
-      }
-    }
-    puts "Before there were #{num_of_instances(self)}"
-    sleep 3
-    puts "Now there is #{num_of_instances(self)}"
-    puts "#{@enter.join '; '} was the order of threads entering the waiting loop"
-    puts "#{@leave.join '; '} was the order of threads leaving the waiting loop"
-  end
-end
-
-
-Ups.instantiate_all
-# results in message like
-# Before there were 0 Ups instance(s)
-# boom - thread #6 failed to create instance
-# initialize called by thread #3
-# Now there is 1 Ups instance(s)
-# 3; 2; 1; 8; 4; 7; 5 was the order of threads entering the waiting loop
-# 3; 2; 1; 7; 4; 8; 5 was the order of threads leaving the waiting loop
-
-
-puts "\nLets see if class level cloning really works"
-Yup = Ups.clone
-def Yup.new
-  begin
-    __sleep
-    raise  "boom - thread ##{Thread.current[:i]} failed to create instance"
-  ensure
-    # simple flip-flop
-    class << self
-      remove_method :new
-    end
-  end
-end
-Yup.instantiate_all
-
-
-puts "\n\n","Customized marshalling"
-class A
-  include Singleton
-  attr_accessor :persist, :die
-  def _dump(depth)
-    # this strips the @die information from the instance
-    Marshal.dump(@persist,depth)
-  end
-end
-
-def A._load(str)
-  instance.persist = Marshal.load(str)
-  instance
-end
-
-a = A.instance
-a.persist = ["persist"]
-a.die = "die"
-a.taint
-
-stored_state = Marshal.dump(a)
-# change state
-a.persist = nil
-a.die = nil
-b = Marshal.load(stored_state)
-p a == b  #  => true
-p a.persist  #  => ["persist"]
-p a.die      #  => nil
-
-
-puts "\n\nSingleton with overridden default #inherited() hook"
-class Up
-end
-def Up.inherited(sub_klass)
-  puts "#{sub_klass} subclasses #{self}"
-end
-
-
-class Middle < Up
-  include Singleton
-end
-
-class Down < Middle; end
-
-puts  "and basic \"Down test\" is #{Down.instance == Down.instance}\n
-Various exceptions"  
-
-begin
-  module AModule
-    include Singleton
-  end
-rescue TypeError => mes
-  puts mes  #=> Inclusion of the OO-Singleton module in module AModule
-end
-
-begin
-  'aString'.extend Singleton
-rescue NoMethodError => mes
-  puts mes  #=> undefined method `extend_object' for Singleton:Module
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/attachment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/attachment.rb
deleted file mode 100644
index 1a59b14..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/attachment.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-# soap/attachment.rb: SOAP4R - SwA implementation.
-# Copyright (C) 2002, 2003  Jamie Herre and NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping'
-
-
-module SOAP
-
-
-class SOAPAttachment < SOAPExternalReference
-  attr_reader :data
-
-  def initialize(value)
-    super()
-    @data = value
-  end
-
-private
-
-  def external_contentid
-    @data.contentid
-  end
-end
-
-
-class Attachment
-  attr_reader :io
-  attr_accessor :contenttype
-
-  def initialize(string_or_readable = nil)
-    @string_or_readable = string_or_readable
-    @contenttype = "application/octet-stream"
-    @contentid = nil
-  end
-
-  def contentid
-    @contentid ||= Attachment.contentid(self)
-  end
-
-  def contentid=(contentid)
-    @contentid = contentid
-  end
-
-  def mime_contentid
-    '<' + contentid + '>'
-  end
-
-  def content
-    if @content == nil and @string_or_readable != nil
-      @content = @string_or_readable.respond_to?(:read) ?
-	@string_or_readable.read : @string_or_readable
-    end
-    @content
-  end
-
-  def to_s
-    content
-  end
-
-  def write(out)
-    out.write(content)
-  end
-
-  def save(filename)
-    File.open(filename, "wb") do |f|
-      write(f)
-    end
-  end
-
-  def self.contentid(obj)
-    # this needs to be fixed
-    [obj.__id__.to_s, Process.pid.to_s].join('.')
-  end
-
-  def self.mime_contentid(obj)
-    '<' + contentid(obj) + '>'
-  end
-end
-
-
-module Mapping
-  class AttachmentFactory < SOAP::Mapping::Factory
-    def obj2soap(soap_class, obj, info, map)
-      soap_obj = soap_class.new(obj)
-      mark_marshalled_obj(obj, soap_obj)
-      soap_obj
-    end
-
-    def soap2obj(obj_class, node, info, map)
-      obj = node.data
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    end
-  end
-
-  DefaultRegistry.add(::SOAP::Attachment, ::SOAP::SOAPAttachment,
-    AttachmentFactory.new, nil)
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/baseData.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/baseData.rb
deleted file mode 100644
index 0e8b00d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/baseData.rb
+++ /dev/null
@@ -1,942 +0,0 @@
-# soap/baseData.rb: SOAP4R - Base type library
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'soap/soap'
-
-
-module SOAP
-
-
-###
-## Mix-in module for SOAP base type classes.
-#
-module SOAPModuleUtils
-  include SOAP
-
-public
-
-  def decode(elename)
-    d = self.new
-    d.elename = elename
-    d
-  end
-end
-
-
-###
-## for SOAP type(base and compound)
-#
-module SOAPType
-  attr_accessor :encodingstyle
-  attr_accessor :elename
-  attr_accessor :id
-  attr_reader :precedents
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :position
-  attr_reader :extraattr
-  attr_accessor :definedtype
-
-  def initialize(*arg)
-    super
-    @encodingstyle = nil
-    @elename = XSD::QName::EMPTY
-    @id = nil
-    @precedents = []
-    @root = false
-    @parent = nil
-    @position = nil
-    @definedtype = nil
-    @extraattr = {}
-  end
-
-  def inspect
-    if self.is_a?(XSD::NSDBase)
-      sprintf("#<%s:0x%x %s %s>", self.class.name, __id__, self.elename, self.type)
-    else
-      sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename)
-    end
-  end
-
-  def rootnode
-    node = self
-    while node = node.parent
-      break if SOAPEnvelope === node
-    end
-    node
-  end
-end
-
-
-###
-## for SOAP base type
-#
-module SOAPBasetype
-  include SOAPType
-  include SOAP
-
-  def initialize(*arg)
-    super
-  end
-end
-
-
-###
-## for SOAP compound type
-#
-module SOAPCompoundtype
-  include SOAPType
-  include SOAP
-
-  def initialize(*arg)
-    super
-  end
-end
-
-
-###
-## Convenience datatypes.
-#
-class SOAPReference < XSD::NSDBase
-  include SOAPBasetype
-  extend SOAPModuleUtils
-
-public
-
-  attr_accessor :refid
-
-  # Override the definition in SOAPBasetype.
-  def initialize(obj = nil)
-    super()
-    @type = XSD::QName::EMPTY
-    @refid = nil
-    @obj = nil
-    __setobj__(obj) if obj
-  end
-
-  def __getobj__
-    @obj
-  end
-
-  def __setobj__(obj)
-    @obj = obj
-    @refid = @obj.id || SOAPReference.create_refid(@obj)
-    @obj.id = @refid unless @obj.id
-    @obj.precedents << self
-    # Copies NSDBase information
-    @obj.type = @type unless @obj.type
-  end
-
-  # Why don't I use delegate.rb?
-  # -> delegate requires target object type at initialize time.
-  # Why don't I use forwardable.rb?
-  # -> forwardable requires a list of forwarding methods.
-  #
-  # ToDo: Maybe I should use forwardable.rb and give it a methods list like
-  # delegate.rb...
-  #
-  def method_missing(msg_id, *params)
-    if @obj
-      @obj.send(msg_id, *params)
-    else
-      nil
-    end
-  end
-
-  def refidstr
-    '#' + @refid
-  end
-
-  def self.create_refid(obj)
-    'id' + obj.__id__.to_s
-  end
-
-  def self.decode(elename, refidstr)
-    if /\A#(.*)\z/ =~ refidstr
-      refid = $1
-    elsif /\Acid:(.*)\z/ =~ refidstr
-      refid = $1
-    else
-      raise ArgumentError.new("illegal refid #{refidstr}")
-    end
-    d = super(elename)
-    d.refid = refid
-    d
-  end
-end
-
-
-class SOAPExternalReference < XSD::NSDBase
-  include SOAPBasetype
-  extend SOAPModuleUtils
-
-  def initialize
-    super()
-    @type = XSD::QName::EMPTY
-  end
-
-  def referred
-    rootnode.external_content[external_contentid] = self
-  end
-
-  def refidstr
-    'cid:' + external_contentid
-  end
-
-private
-
-  def external_contentid
-    raise NotImplementedError.new
-  end
-end
-
-
-class SOAPNil < XSD::XSDNil
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-# SOAPRawString is for sending raw string.  In contrast to SOAPString,
-# SOAP4R does not do XML encoding and does not convert its CES.  The string it
-# holds is embedded to XML instance directly as a 'xsd:string'.
-class SOAPRawString < XSD::XSDString
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-###
-## Basic datatypes.
-#
-class SOAPAnySimpleType < XSD::XSDAnySimpleType
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPString < XSD::XSDString
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPBoolean < XSD::XSDBoolean
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDecimal < XSD::XSDDecimal
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPFloat < XSD::XSDFloat
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDouble < XSD::XSDDouble
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDuration < XSD::XSDDuration
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDateTime < XSD::XSDDateTime
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPTime < XSD::XSDTime
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDate < XSD::XSDDate
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGYearMonth < XSD::XSDGYearMonth
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGYear < XSD::XSDGYear
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGMonthDay < XSD::XSDGMonthDay
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGDay < XSD::XSDGDay
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGMonth < XSD::XSDGMonth
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPHexBinary < XSD::XSDHexBinary
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPBase64 < XSD::XSDBase64Binary
-  include SOAPBasetype
-  extend SOAPModuleUtils
-  Type = QName.new(EncodingNamespace, Base64Literal)
-
-public
-  # Override the definition in SOAPBasetype.
-  def initialize(value = nil)
-    super(value)
-    @type = Type
-  end
-
-  def as_xsd
-    @type = XSD::XSDBase64Binary::Type
-  end
-end
-
-class SOAPAnyURI < XSD::XSDAnyURI
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPQName < XSD::XSDQName
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-class SOAPInteger < XSD::XSDInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNonPositiveInteger < XSD::XSDNonPositiveInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNegativeInteger < XSD::XSDNegativeInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPLong < XSD::XSDLong
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPInt < XSD::XSDInt
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPShort < XSD::XSDShort
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPByte < XSD::XSDByte
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNonNegativeInteger < XSD::XSDNonNegativeInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedLong < XSD::XSDUnsignedLong
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedInt < XSD::XSDUnsignedInt
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedShort < XSD::XSDUnsignedShort
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedByte < XSD::XSDUnsignedByte
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPPositiveInteger < XSD::XSDPositiveInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-###
-## Compound datatypes.
-#
-class SOAPStruct < XSD::NSDBase
-  include SOAPCompoundtype
-  include Enumerable
-
-public
-
-  def initialize(type = nil)
-    super()
-    @type = type || XSD::QName::EMPTY
-    @array = []
-    @data = []
-  end
-
-  def to_s()
-    str = ''
-    self.each do |key, data|
-      str << "#{key}: #{data}\n"
-    end
-    str
-  end
-
-  def add(name, value)
-    add_member(name, value)
-  end
-
-  def [](idx)
-    if idx.is_a?(Range)
-      @data[idx]
-    elsif idx.is_a?(Integer)
-      if (idx > @array.size)
-        raise ArrayIndexOutOfBoundsError.new('In ' << @type.name)
-      end
-      @data[idx]
-    else
-      if @array.include?(idx)
-	@data[@array.index(idx)]
-      else
-	nil
-      end
-    end
-  end
-
-  def []=(idx, data)
-    if @array.include?(idx)
-      data.parent = self if data.respond_to?(:parent=)
-      @data[@array.index(idx)] = data
-    else
-      add(idx, data)
-    end
-  end
-
-  def key?(name)
-    @array.include?(name)
-  end
-
-  def members
-    @array
-  end
-
-  def to_obj
-    hash = {}
-    proptype = {}
-    each do |k, v|
-      value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
-      case proptype[k]
-      when :single
-        hash[k] = [hash[k], value]
-        proptype[k] = :multi
-      when :multi
-        hash[k] << value
-      else
-        hash[k] = value
-        proptype[k] = :single
-      end
-    end
-    hash
-  end
-
-  def each
-    idx = 0
-    while idx < @array.length
-      yield(@array[idx], @data[idx])
-      idx += 1
-    end
-  end
-
-  def replace
-    members.each do |member|
-      self[member] = yield(self[member])
-    end
-  end
-
-  def self.decode(elename, type)
-    s = SOAPStruct.new(type)
-    s.elename = elename
-    s
-  end
-
-private
-
-  def add_member(name, value = nil)
-    value = SOAPNil.new() if value.nil?
-    @array.push(name)
-    value.elename = value.elename.dup_name(name)
-    @data.push(value)
-    value.parent = self if value.respond_to?(:parent=)
-    value
-  end
-end
-
-
-# SOAPElement is not typed so it is not derived from NSDBase.
-class SOAPElement
-  include Enumerable
-
-  attr_accessor :encodingstyle
-
-  attr_accessor :elename
-  attr_accessor :id
-  attr_reader :precedents
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :position
-  attr_accessor :extraattr
-
-  attr_accessor :qualified
-
-  def initialize(elename, text = nil)
-    if !elename.is_a?(XSD::QName)
-      elename = XSD::QName.new(nil, elename)
-    end
-    @encodingstyle = LiteralNamespace
-    @elename = elename
-    @id = nil
-    @precedents = []
-    @root = false
-    @parent = nil
-    @position = nil
-    @extraattr = {}
-
-    @qualified = nil
-
-    @array = []
-    @data = []
-    @text = text
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename)
-  end
-
-  # Text interface.
-  attr_accessor :text
-  alias data text
-
-  # Element interfaces.
-  def add(value)
-    add_member(value.elename.name, value)
-  end
-
-  def [](idx)
-    if @array.include?(idx)
-      @data[@array.index(idx)]
-    else
-      nil
-    end
-  end
-
-  def []=(idx, data)
-    if @array.include?(idx)
-      data.parent = self if data.respond_to?(:parent=)
-      @data[@array.index(idx)] = data
-    else
-      add(data)
-    end
-  end
-
-  def key?(name)
-    @array.include?(name)
-  end
-
-  def members
-    @array
-  end
-
-  def to_obj
-    if members.empty?
-      @text
-    else
-      hash = {}
-      proptype = {}
-      each do |k, v|
-        value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
-        case proptype[k]
-        when :single
-          hash[k] = [hash[k], value]
-          proptype[k] = :multi
-        when :multi
-          hash[k] << value
-        else
-          hash[k] = value
-          proptype[k] = :single
-        end
-      end
-      hash
-    end
-  end
-
-  def each
-    idx = 0
-    while idx < @array.length
-      yield(@array[idx], @data[idx])
-      idx += 1
-    end
-  end
-
-  def self.decode(elename)
-    o = SOAPElement.new(elename)
-    o
-  end
-
-  def self.from_obj(obj, namespace = nil)
-    o = SOAPElement.new(nil)
-    case obj
-    when nil
-      o.text = nil
-    when Hash
-      obj.each do |elename, value|
-        if value.is_a?(Array)
-          value.each do |subvalue|
-            child = from_obj(subvalue, namespace)
-            child.elename = to_elename(elename, namespace)
-            o.add(child)
-          end
-        else
-          child = from_obj(value, namespace)
-          child.elename = to_elename(elename, namespace)
-          o.add(child)
-        end
-      end
-    else
-      o.text = obj.to_s
-    end
-    o
-  end
-
-  def self.to_elename(obj, namespace = nil)
-    if obj.is_a?(XSD::QName)
-      obj
-    elsif /\A(.+):([^:]+)\z/ =~ obj.to_s
-      XSD::QName.new($1, $2)
-    else
-      XSD::QName.new(namespace, obj.to_s)
-    end
-  end
-
-private
-
-  def add_member(name, value)
-    add_accessor(name)
-    @array.push(name)
-    @data.push(value)
-    value.parent = self if value.respond_to?(:parent=)
-    value
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def add_accessor(name)
-      methodname = name
-      if self.respond_to?(methodname)
-        methodname = safe_accessor_name(methodname)
-      end
-      Mapping.define_singleton_method(self, methodname) do
-        @data[@array.index(name)]
-      end
-      Mapping.define_singleton_method(self, methodname + '=') do |value|
-        @data[@array.index(name)] = value
-      end
-    end
-  else
-    def add_accessor(name)
-      methodname = safe_accessor_name(name)
-      instance_eval <<-EOS
-        def #{methodname}
-          @data[@array.index(#{name.dump})]
-        end
-
-        def #{methodname}=(value)
-          @data[@array.index(#{name.dump})] = value
-        end
-      EOS
-    end
-  end
-
-  def safe_accessor_name(name)
-    "var_" << name.gsub(/[^a-zA-Z0-9_]/, '')
-  end
-end
-
-
-class SOAPArray < XSD::NSDBase
-  include SOAPCompoundtype
-  include Enumerable
-
-public
-
-  attr_accessor :sparse
-
-  attr_reader :offset, :rank
-  attr_accessor :size, :size_fixed
-  attr_reader :arytype
-
-  def initialize(type = nil, rank = 1, arytype = nil)
-    super()
-    @type = type || ValueArrayName
-    @rank = rank
-    @data = Array.new
-    @sparse = false
-    @offset = Array.new(rank, 0)
-    @size = Array.new(rank, 0)
-    @size_fixed = false
-    @position = nil
-    @arytype = arytype
-  end
-
-  def offset=(var)
-    @offset = var
-    @sparse = true
-  end
-
-  def add(value)
-    self[*(@offset)] = value
-  end
-
-  def [](*idxary)
-    if idxary.size != @rank
-      raise ArgumentError.new("given #{idxary.size} params does not match rank: #{@rank}")
-    end
-
-    retrieve(idxary)
-  end
-
-  def []=(*idxary)
-    value = idxary.slice!(-1)
-
-    if idxary.size != @rank
-      raise ArgumentError.new("given #{idxary.size} params(#{idxary})" +
-        " does not match rank: #{@rank}")
-    end
-
-    idx = 0
-    while idx < idxary.size
-      if idxary[idx] + 1 > @size[idx]
-	@size[idx] = idxary[idx] + 1
-      end
-      idx += 1
-    end
-
-    data = retrieve(idxary[0, idxary.size - 1])
-    data[idxary.last] = value
-
-    if value.is_a?(SOAPType)
-      value.elename = ITEM_NAME
-      # Sync type
-      unless @type.name
-	@type = XSD::QName.new(value.type.namespace,
-	  SOAPArray.create_arytype(value.type.name, @rank))
-      end
-      value.type ||= @type
-    end
-
-    @offset = idxary
-    value.parent = self if value.respond_to?(:parent=)
-    offsetnext
-  end
-
-  def each
-    @data.each do |data|
-      yield(data)
-    end
-  end
-
-  def to_a
-    @data.dup
-  end
-
-  def replace
-    @data = deep_map(@data) do |ele|
-      yield(ele)
-    end
-  end
-
-  def deep_map(ary, &block)
-    ary.collect do |ele|
-      if ele.is_a?(Array)
-	deep_map(ele, &block)
-      else
-	new_obj = block.call(ele)
-	new_obj.elename = ITEM_NAME
-	new_obj
-      end
-    end
-  end
-
-  def include?(var)
-    traverse_data(@data) do |v, *rank|
-      if v.is_a?(SOAPBasetype) && v.data == var
-	return true
-      end
-    end
-    false
-  end
-
-  def traverse
-    traverse_data(@data) do |v, *rank|
-      unless @sparse
-       yield(v)
-      else
-       yield(v, *rank) if v && !v.is_a?(SOAPNil)
-      end
-    end
-  end
-
-  def soap2array(ary)
-    traverse_data(@data) do |v, *position|
-      iteary = ary
-      rank = 1
-      while rank < position.size
-	idx = position[rank - 1]
-	if iteary[idx].nil?
-	  iteary = iteary[idx] = Array.new
-	else
-	  iteary = iteary[idx]
-	end
-        rank += 1
-      end
-      if block_given?
-	iteary[position.last] = yield(v)
-      else
-	iteary[position.last] = v
-      end
-    end
-  end
-
-  def position
-    @position
-  end
-
-private
-
-  ITEM_NAME = XSD::QName.new(nil, 'item')
-
-  def retrieve(idxary)
-    data = @data
-    rank = 1
-    while rank <= idxary.size
-      idx = idxary[rank - 1]
-      if data[idx].nil?
-	data = data[idx] = Array.new
-      else
-	data = data[idx]
-      end
-      rank += 1
-    end
-    data
-  end
-
-  def traverse_data(data, rank = 1)
-    idx = 0
-    while idx < ranksize(rank)
-      if rank < @rank
-	traverse_data(data[idx], rank + 1) do |*v|
-	  v[1, 0] = idx
-       	  yield(*v)
-	end
-      else
-	yield(data[idx], idx)
-      end
-      idx += 1
-    end
-  end
-
-  def ranksize(rank)
-    @size[rank - 1]
-  end
-
-  def offsetnext
-    move = false
-    idx = @offset.size - 1
-    while !move && idx >= 0
-      @offset[idx] += 1
-      if @size_fixed
-	if @offset[idx] < @size[idx]
-	  move = true
-	else
-	  @offset[idx] = 0
-	  idx -= 1
-	end
-      else
-	move = true
-      end
-    end
-  end
-
-  # Module function
-
-public
-
-  def self.decode(elename, type, arytype)
-    typestr, nofary = parse_type(arytype.name)
-    rank = nofary.count(',') + 1
-    plain_arytype = XSD::QName.new(arytype.namespace, typestr)
-    o = SOAPArray.new(type, rank, plain_arytype)
-    size = []
-    nofary.split(',').each do |s|
-      if s.empty?
-	size.clear
-	break
-      else
-	size << s.to_i
-      end
-    end
-    unless size.empty?
-      o.size = size
-      o.size_fixed = true
-    end
-    o.elename = elename
-    o
-  end
-
-private
-
-  def self.create_arytype(typename, rank)
-    "#{typename}[" << ',' * (rank - 1) << ']'
-  end
-
-  TypeParseRegexp = Regexp.new('^(.+)\[([\d,]*)\]$')
-
-  def self.parse_type(string)
-    TypeParseRegexp =~ string
-    return $1, $2
-  end
-end
-
-
-require 'soap/mapping/typeMap'
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/element.rb
deleted file mode 100644
index cc58b5d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/element.rb
+++ /dev/null
@@ -1,258 +0,0 @@
-# SOAP4R - SOAP elements library
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'soap/baseData'
-
-
-module SOAP
-
-
-###
-## SOAP elements
-#
-module SOAPEnvelopeElement; end
-
-class SOAPFault < SOAPStruct
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-public
-
-  def faultcode
-    self['faultcode']
-  end
-
-  def faultstring
-    self['faultstring']
-  end
-
-  def faultactor
-    self['faultactor']
-  end
-
-  def detail
-    self['detail']
-  end
-
-  def faultcode=(rhs)
-    self['faultcode'] = rhs
-  end
-
-  def faultstring=(rhs)
-    self['faultstring'] = rhs
-  end
-
-  def faultactor=(rhs)
-    self['faultactor'] = rhs
-  end
-
-  def detail=(rhs)
-    self['detail'] = rhs
-  end
-
-  def initialize(faultcode = nil, faultstring = nil, faultactor = nil, detail = nil)
-    super(EleFaultName)
-    @elename = EleFaultName
-    @encodingstyle = EncodingNamespace
-
-    if faultcode
-      self.faultcode = faultcode
-      self.faultstring = faultstring
-      self.faultactor = faultactor
-      self.detail = detail
-      self.faultcode.elename = EleFaultCodeName if self.faultcode
-      self.faultstring.elename = EleFaultStringName if self.faultstring
-      self.faultactor.elename = EleFaultActorName if self.faultactor
-      self.detail.elename = EleFaultDetailName if self.detail
-    end
-    faultcode.parent = self if faultcode
-    faultstring.parent = self if faultstring
-    faultactor.parent = self if faultactor
-    detail.parent = self if detail
-  end
-
-  def encode(generator, ns, attrs = {})
-    SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace)
-    SOAPGenerator.assign_ns(attrs, ns, EncodingNamespace)
-    attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    yield(self.faultcode)
-    yield(self.faultstring)
-    yield(self.faultactor)
-    yield(self.detail) if self.detail
-    generator.encode_tag_end(name, true)
-  end
-end
-
-
-class SOAPBody < SOAPStruct
-  include SOAPEnvelopeElement
-
-  def initialize(data = nil, is_fault = false)
-    super(nil)
-    @elename = EleBodyName
-    @encodingstyle = nil
-    if data
-      if data.respond_to?(:elename)
-        add(data.elename.name, data)
-      else
-        data.to_a.each do |datum|
-          add(datum.elename.name, datum)
-        end
-      end
-    end
-    @is_fault = is_fault
-  end
-
-  def encode(generator, ns, attrs = {})
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    if @is_fault
-      yield(@data)
-    else
-      @data.each do |data|
-	yield(data)
-      end
-    end
-    generator.encode_tag_end(name, true)
-  end
-
-  def root_node
-    @data.each do |node|
-      if node.root == 1
-	return node
-      end
-    end
-    # No specified root...
-    @data.each do |node|
-      if node.root != 0
-	return node
-      end
-    end
-
-    raise Parser::FormatDecodeError.new('no root element')
-  end
-end
-
-
-class SOAPHeaderItem < XSD::NSDBase
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-public
-
-  attr_accessor :element
-  attr_accessor :mustunderstand
-  attr_accessor :encodingstyle
-
-  def initialize(element, mustunderstand = true, encodingstyle = nil)
-    super()
-    @type = nil
-    @element = element
-    @mustunderstand = mustunderstand
-    @encodingstyle = encodingstyle
-    element.parent = self if element
-  end
-
-  def encode(generator, ns, attrs = {})
-    attrs.each do |key, value|
-      @element.extraattr[key] = value
-    end
-    @element.extraattr[ns.name(AttrMustUnderstandName)] =
-      (@mustunderstand ? '1' : '0')
-    if @encodingstyle
-      @element.extraattr[ns.name(AttrEncodingStyleName)] = @encodingstyle
-    end
-    @element.encodingstyle = @encodingstyle if !@element.encodingstyle
-    yield(@element)
-  end
-end
-
-
-class SOAPHeader < SOAPStruct
-  include SOAPEnvelopeElement
-
-  def initialize
-    super(nil)
-    @elename = EleHeaderName
-    @encodingstyle = nil
-  end
-
-  def encode(generator, ns, attrs = {})
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    @data.each do |data|
-      yield(data)
-    end
-    generator.encode_tag_end(name, true)
-  end
-
-  def add(name, value)
-    mu = (value.extraattr[AttrMustUnderstandName] == '1')
-    encstyle = value.extraattr[AttrEncodingStyleName]
-    item = SOAPHeaderItem.new(value, mu, encstyle)
-    super(name, item)
-  end
-
-  def length
-    @data.length
-  end
-  alias size length
-end
-
-
-class SOAPEnvelope < XSD::NSDBase
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-  attr_reader :header
-  attr_reader :body
-  attr_reader :external_content
-
-  def initialize(header = nil, body = nil)
-    super()
-    @type = nil
-    @elename = EleEnvelopeName
-    @encodingstyle = nil
-    @header = header
-    @body = body
-    @external_content = {}
-    header.parent = self if header
-    body.parent = self if body
-  end
-
-  def header=(header)
-    header.parent = self
-    @header = header
-  end
-
-  def body=(body)
-    body.parent = self
-    @body = body
-  end
-
-  def encode(generator, ns, attrs = {})
-    SOAPGenerator.assign_ns(attrs, ns, elename.namespace, SOAPNamespaceTag)
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-
-    yield(@header) if @header and @header.length > 0
-    yield(@body)
-
-    generator.encode_tag_end(name, true)
-  end
-
-  def to_ary
-    [header, body]
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb
deleted file mode 100644
index fd7e0fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb
+++ /dev/null
@@ -1,213 +0,0 @@
-# SOAP4R - ASP.NET EncodingStyle handler library
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class ASPDotNetHandler < Handler
-  Namespace = 'http://tempuri.org/ASP.NET'
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @textbuf = ''
-    @decode_typemap = nil
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = {}
-    # ASPDotNetHandler is intended to be used for accessing an ASP.NET doc/lit
-    # service as an rpc/encoded service.  in the situation, local elements
-    # should be qualified.  propagate parent's namespace to children.
-    if data.elename.namespace.nil?
-      data.elename.namespace = parent.elename.namespace
-    end
-    name = generator.encode_name(ns, data, attrs)
-    case data
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      generator.encode_string(@charset ?
-        XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = nil
-        generator.encode_child(ns, child, data)
-      end
-    else
-      raise EncodingStyleError.new(
-        "unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = data.is_a?(SOAPCompoundtype)
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-
-    def initialize
-      @parent = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    def initialize(handler, elename)
-      super()
-      @handler = handler
-      @elename = elename
-    end
-
-    def as_struct
-      o = SOAPStruct.decode(@elename, XSD::AnyTypeName)
-      o.parent = @parent
-      o.type.name = @name
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.parent = @parent
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.parent = @parent
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    o = SOAPUnknown.new(self, elename)
-    o.parent = parent
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = o.as_string
-#	if /\A\s*\z/ =~ @textbuf
-#	  o.as_struct
-#	else
-#	  o.as_string
-#	end
-      node.replace_node(newnode)
-      o = node.node
-    end
-
-    decode_textbuf(o)
-    @textbuf = ''
-  end
-
-  def decode_text(ns, text)
-    # @textbuf is set at decode_tag_end.
-    @textbuf << text
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-
-  def decode_parent(parent, node)
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_struct
-      node.parent = newparent
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-
-    when SOAPStruct
-      data = parent.node[node.elename.name]
-      case data
-      when nil
-	parent.node.add(node.elename.name, node)
-      when SOAPArray
-	name, type_ns = node.elename.name, node.type.namespace
-	data.add(node)
-	node.elename, node.type.namespace = name, type_ns
-      else
-	parent.node[node.elename.name] = SOAPArray.new
-	name, type_ns = data.elename.name, data.type.namespace
-	parent.node[node.elename.name].add(data)
-	data.elename.name, data.type.namespace = name, type_ns
-	name, type_ns = node.elename.name, node.type.namespace
-	parent.node[node.elename.name].add(node)
-	node.elename.name, node.type.namespace = name, type_ns
-      end
-
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-
-    when SOAPBasetype
-      raise EncodingStyleError.new("SOAP base type must not have a child")
-
-    else
-      # SOAPUnknown does not have parent.
-      # raise EncodingStyleError.new("illegal parent: #{parent}")
-    end
-  end
-
-private
-
-  def decode_textbuf(node)
-    if node.is_a?(XSD::XSDString)
-      if @charset
-	node.set(XSD::Charset.encoding_from_xml(@textbuf, @charset))
-      else
-	node.set(@textbuf)
-      end
-    else
-      # Nothing to do...
-    end
-  end
-end
-
-ASPDotNetHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/handler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/handler.rb
deleted file mode 100644
index c015417..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/handler.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-# SOAP4R - EncodingStyle handler library
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/element'
-
-
-module SOAP
-module EncodingStyle
-
-
-class Handler
-  @@handlers = {}
-
-  class EncodingStyleError < Error; end
-
-  class << self
-    def uri
-      self::Namespace
-    end
-
-    def handler(uri)
-      @@handlers[uri]
-    end
-
-    def each
-      @@handlers.each do |key, value|
-	yield(value)
-      end
-    end
-
-  private
-
-    def add_handler
-      @@handlers[self.uri] = self
-    end
-  end
-
-  attr_reader :charset
-  attr_accessor :generate_explicit_type
-  def decode_typemap=(definedtypes)
-    @decode_typemap = definedtypes
-  end
-
-  def initialize(charset)
-    @charset = charset
-    @generate_explicit_type = true
-    @decode_typemap = nil
-  end
-
-  ###
-  ## encode interface.
-  #
-  # Returns a XML instance as a string.
-  def encode_data(generator, ns, data, parent)
-    raise NotImplementError
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    raise NotImplementError
-  end
-
-  def encode_prologue
-  end
-
-  def encode_epilogue
-  end
-
-  ###
-  ## decode interface.
-  #
-  # Returns SOAP/OM data.
-  def decode_tag(ns, name, attrs, parent)
-    raise NotImplementError.new('Method decode_tag must be defined in derived class.')
-  end
-
-  def decode_tag_end(ns, name)
-    raise NotImplementError.new('Method decode_tag_end must be defined in derived class.')
-  end
-
-  def decode_text(ns, text)
-    raise NotImplementError.new('Method decode_text must be defined in derived class.')
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/literalHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/literalHandler.rb
deleted file mode 100644
index 59c7205..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/literalHandler.rb
+++ /dev/null
@@ -1,226 +0,0 @@
-# SOAP4R - XML Literal EncodingStyle handler library
-# Copyright (C) 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class LiteralHandler < Handler
-  Namespace = SOAP::LiteralNamespace
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @textbuf = ''
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = {}
-    name = generator.encode_name(ns, data, attrs)
-    data.extraattr.each do |k, v|
-      # ToDo: check generator.attributeformdefault here
-      if k.is_a?(XSD::QName)
-        if k.namespace
-          SOAPGenerator.assign_ns(attrs, ns, k.namespace)
-          k = ns.name(k)
-        else
-          k = k.name
-        end
-      end
-      attrs[k] = v
-    end
-    case data
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      str = data.to_s
-      str = XSD::Charset.encoding_to_xml(str, @charset) if @charset
-      generator.encode_string(str)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = nil
-        generator.encode_child(ns, child, data)
-      end
-    when SOAPElement
-      # passes 2 times for simplifying namespace definition
-      data.each do |key, value|
-        if value.elename.namespace
-          SOAPGenerator.assign_ns(attrs, ns, value.elename.namespace)
-        end
-      end
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.text) if data.text
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    else
-      raise EncodingStyleError.new(
-        "unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = (data.is_a?(SOAPCompoundtype) or
-      (data.is_a?(SOAPElement) and !data.text))
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-
-    def initialize
-      @parent = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    def initialize(handler, elename, extraattr)
-      super()
-      @handler = handler
-      @elename = elename
-      @extraattr = extraattr
-    end
-
-    def as_element
-      o = SOAPElement.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    o = SOAPUnknown.new(self, elename, decode_attrs(ns, attrs))
-    o.parent = parent
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = if /\A\s*\z/ =~ @textbuf
-	  o.as_element
-	else
-	  o.as_string
-	end
-      node.replace_node(newnode)
-      o = node.node
-    end
-
-    decode_textbuf(o)
-    @textbuf = ''
-  end
-
-  def decode_text(ns, text)
-    # @textbuf is set at decode_tag_end.
-    @textbuf << text
-  end
-
-  def decode_attrs(ns, attrs)
-    extraattr = {}
-    attrs.each do |key, value|
-      qname = ns.parse_local(key)
-      extraattr[qname] = value
-    end
-    extraattr
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-
-  def decode_parent(parent, node)
-    return unless parent.node
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_element
-      node.parent = newparent
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-    when SOAPElement
-      parent.node.add(node)
-      node.parent = parent.node
-    when SOAPStruct
-      parent.node.add(node.elename.name, node)
-      node.parent = parent.node
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-      node.parent = parent.node
-    else
-      raise EncodingStyleError.new("illegal parent: #{parent.node}")
-    end
-  end
-
-private
-
-  def decode_textbuf(node)
-    if node.is_a?(XSD::XSDString)
-      if @charset
-	node.set(XSD::Charset.encoding_from_xml(@textbuf, @charset))
-      else
-	node.set(@textbuf)
-      end
-    else
-      # Nothing to do...
-    end
-  end
-end
-
-LiteralHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/soapHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/soapHandler.rb
deleted file mode 100644
index a522392..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/encodingstyle/soapHandler.rb
+++ /dev/null
@@ -1,582 +0,0 @@
-# SOAP4R - SOAP EncodingStyle handler library
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class SOAPHandler < Handler
-  Namespace = SOAP::EncodingNamespace
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @refpool = []
-    @idpool = []
-    @textbuf = ''
-    @is_first_top_ele = true
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = encode_attrs(generator, ns, data, parent)
-    if parent && parent.is_a?(SOAPArray) && parent.position
-      attrs[ns.name(AttrPositionName)] = "[#{parent.position.join(',')}]"
-    end
-    name = generator.encode_name(ns, data, attrs)
-    case data
-    when SOAPReference
-      attrs['href'] = data.refidstr
-      generator.encode_tag(name, attrs)
-    when SOAPExternalReference
-      data.referred
-      attrs['href'] = data.refidstr
-      generator.encode_tag(name, attrs)
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      generator.encode_string(@charset ?
-	XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = data.sparse ? rank : nil
-        generator.encode_child(ns, child, data)
-      end
-    else
-      raise EncodingStyleError.new(
-	"unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = data.is_a?(SOAPCompoundtype)
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-    attr_accessor :position
-    attr_accessor :id
-    attr_accessor :root
-
-    def initialize
-      @parent = nil
-      @position = nil
-      @id = nil
-      @root = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    attr_reader :type
-    attr_accessor :definedtype
-    attr_reader :extraattr
-
-    def initialize(handler, elename, type, extraattr)
-      super()
-      @handler = handler
-      @elename = elename
-      @type = type
-      @extraattr = extraattr
-      @definedtype = nil
-    end
-
-    def as_struct
-      o = SOAPStruct.decode(@elename, @type)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    is_nil, type, arytype, root, offset, position, href, id, extraattr =
-      decode_attrs(ns, attrs)
-    o = nil
-    if is_nil
-      o = SOAPNil.decode(elename)
-    elsif href
-      o = SOAPReference.decode(elename, href)
-      @refpool << o
-    elsif @decode_typemap
-      o = decode_tag_by_wsdl(ns, elename, type, parent.node, arytype, extraattr)
-    else
-      o = decode_tag_by_type(ns, elename, type, parent.node, arytype, extraattr)
-    end
-
-    if o.is_a?(SOAPArray)
-      if offset
-	o.offset = decode_arypos(offset)
-	o.sparse = true
-      else
-	o.sparse = false
-      end
-    end
-
-    o.parent = parent
-    o.id = id
-    o.root = root
-    o.position = position
-
-    unless o.is_a?(SOAPTemporalObject)
-      @idpool << o if o.id
-      decode_parent(parent, o)
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = if /\A\s*\z/ =~ @textbuf
-	o.as_struct
-      else
-	o.as_string
-      end
-      if newnode.id
-	@idpool << newnode
-      end
-      node.replace_node(newnode)
-      o = node.node
-    end
-    decode_textbuf(o)
-    # unlink definedtype
-    o.definedtype = nil
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-
-  def decode_prologue
-    @refpool.clear
-    @idpool.clear
-    @is_first_top_ele = true
-  end
-
-  def decode_epilogue
-    decode_resolve_id
-  end
-
-  def decode_parent(parent, node)
-    return unless parent.node
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_struct
-      node.parent = newparent
-      if newparent.id
-	@idpool << newparent
-      end
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-    when SOAPStruct
-      parent.node.add(node.elename.name, node)
-      node.parent = parent.node
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-      node.parent = parent.node
-    else
-      raise EncodingStyleError.new("illegal parent: #{parent.node}")
-    end
-  end
-
-private
-
-  def content_ranksize(typename)
-    typename.scan(/\[[\d,]*\]$/)[0]
-  end
-
-  def content_typename(typename)
-    typename.sub(/\[,*\]$/, '')
-  end
-
-  def create_arytype(ns, data)
-    XSD::QName.new(data.arytype.namespace,
-      content_typename(data.arytype.name) + "[#{data.size.join(',')}]")
-  end
-
-  def encode_attrs(generator, ns, data, parent)
-    attrs = {}
-    return attrs if data.is_a?(SOAPReference)
-
-    if !parent || parent.encodingstyle != EncodingNamespace
-      if @generate_explicit_type
-        SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace)
-        attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
-      end
-      data.encodingstyle = EncodingNamespace
-    end
-
-    if data.is_a?(SOAPNil)
-      attrs[ns.name(XSD::AttrNilName)] = XSD::NilValue
-    elsif @generate_explicit_type
-      if data.type.namespace
-        SOAPGenerator.assign_ns(attrs, ns, data.type.namespace)
-      end
-      if data.is_a?(SOAPArray)
-	if data.arytype.namespace
-          SOAPGenerator.assign_ns(attrs, ns, data.arytype.namespace)
-   	end
-	SOAPGenerator.assign_ns(attrs, ns, EncodingNamespace)
-	attrs[ns.name(AttrArrayTypeName)] = ns.name(create_arytype(ns, data))
-	if data.type.name
-	  attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
-	end
-      elsif parent && parent.is_a?(SOAPArray) && (parent.arytype == data.type)
-	# No need to add.
-      elsif !data.type.namespace
-	# No need to add.
-      else
-	attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
-      end
-    end
-
-    data.extraattr.each do |key, value|
-      SOAPGenerator.assign_ns(attrs, ns, key.namespace)
-      attrs[ns.name(key)] = encode_attr_value(generator, ns, key, value)
-    end
-    if data.id
-      attrs['id'] = data.id
-    end
-    attrs
-  end
-
-  def encode_attr_value(generator, ns, qname, value)
-    if value.is_a?(SOAPType)
-      ref = SOAPReference.new(value)
-      generator.add_reftarget(qname.name, value)
-      ref.refidstr
-    else
-      value.to_s
-    end
-  end
-
-  def decode_tag_by_wsdl(ns, elename, typestr, parent, arytypestr, extraattr)
-    o = nil
-    if parent.class == SOAPBody
-      # root element: should branch by root attribute?
-      if @is_first_top_ele
-	# Unqualified name is allowed here.
-	@is_first_top_ele = false
-	type = @decode_typemap[elename] ||
-	  @decode_typemap.find_name(elename.name)
-	if type
-	  o = SOAPStruct.new(elename)
-	  o.definedtype = type
-	  return o
-	end
-      end
-      # multi-ref element.
-      if typestr
-	typename = ns.parse(typestr)
-	typedef = @decode_typemap[typename]
-	if typedef
-          return decode_definedtype(elename, typename, typedef, arytypestr)
-	end
-      end
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    if parent.type == XSD::AnyTypeName
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    # parent.definedtype == nil means the parent is SOAPUnknown.  SOAPUnknown
-    # is generated by decode_tag_by_type when its type is anyType.
-    parenttype = parent.definedtype || @decode_typemap[parent.type]
-    unless parenttype
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    definedtype_name = parenttype.child_type(elename)
-    if definedtype_name and (klass = TypeMap[definedtype_name])
-      return decode_basetype(klass, elename)
-    elsif definedtype_name == XSD::AnyTypeName
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    if definedtype_name
-      typedef = @decode_typemap[definedtype_name]
-    else
-      typedef = parenttype.child_defined_complextype(elename)
-    end
-    decode_definedtype(elename, definedtype_name, typedef, arytypestr)
-  end
-
-  def decode_definedtype(elename, typename, typedef, arytypestr)
-    unless typedef
-      raise EncodingStyleError.new("unknown type '#{typename}'")
-    end
-    if typedef.is_a?(::WSDL::XMLSchema::SimpleType)
-      decode_defined_simpletype(elename, typename, typedef, arytypestr)
-    else
-      decode_defined_complextype(elename, typename, typedef, arytypestr)
-    end
-  end
-
-  def decode_basetype(klass, elename)
-    klass.decode(elename)
-  end
-
-  def decode_defined_simpletype(elename, typename, typedef, arytypestr)
-    o = decode_basetype(TypeMap[typedef.base], elename)
-    o.definedtype = typedef
-    o
-  end
-
-  def decode_defined_complextype(elename, typename, typedef, arytypestr)
-    case typedef.compoundtype
-    when :TYPE_STRUCT, :TYPE_MAP
-      o = SOAPStruct.decode(elename, typename)
-      o.definedtype = typedef
-      return o
-    when :TYPE_ARRAY
-      expected_arytype = typedef.find_arytype
-      if arytypestr
-	actual_arytype = XSD::QName.new(expected_arytype.namespace,
-	  content_typename(expected_arytype.name) <<
-	  content_ranksize(arytypestr))
-	o = SOAPArray.decode(elename, typename, actual_arytype)
-      else
-	o = SOAPArray.new(typename, 1, expected_arytype)
-	o.elename = elename
-      end
-      o.definedtype = typedef
-      return o
-    when :TYPE_EMPTY
-      o = SOAPNil.decode(elename)
-      o.definedtype = typedef
-      return o
-    else
-      raise RuntimeError.new(
-        "Unknown kind of complexType: #{typedef.compoundtype}")
-    end
-    nil
-  end
-
-  def decode_tag_by_type(ns, elename, typestr, parent, arytypestr, extraattr)
-    if arytypestr
-      type = typestr ? ns.parse(typestr) : ValueArrayName
-      node = SOAPArray.decode(elename, type, ns.parse(arytypestr))
-      node.extraattr.update(extraattr)
-      return node
-    end
-
-    type = nil
-    if typestr
-      type = ns.parse(typestr)
-    elsif parent.is_a?(SOAPArray)
-      type = parent.arytype
-    else
-      # Since it's in dynamic(without any type) encoding process,
-      # assumes entity as its type itself.
-      #   <SOAP-ENC:Array ...> => type Array in SOAP-ENC.
-      #   <Country xmlns="foo"> => type Country in foo.
-      type = elename
-    end
-
-    if (klass = TypeMap[type])
-      node = decode_basetype(klass, elename)
-      node.extraattr.update(extraattr)
-      return node
-    end
-
-    # Unknown type... Struct or String
-    SOAPUnknown.new(self, elename, type, extraattr)
-  end
-
-  def decode_textbuf(node)
-    case node
-    when XSD::XSDHexBinary, XSD::XSDBase64Binary
-      node.set_encoded(@textbuf)
-    when XSD::XSDString
-      if @charset
-	@textbuf = XSD::Charset.encoding_from_xml(@textbuf, @charset)
-      end
-      if node.definedtype
-        node.definedtype.check_lexical_format(@textbuf)
-      end
-      node.set(@textbuf)
-    when SOAPNil
-      # Nothing to do.
-    when SOAPBasetype
-      node.set(@textbuf)
-    else
-      # Nothing to do...
-    end
-    @textbuf = ''
-  end
-
-  NilLiteralMap = {
-    'true' => true,
-    '1' => true,
-    'false' => false,
-    '0' => false
-  }
-  RootLiteralMap = {
-    '1' => 1,
-    '0' => 0
-  }
-  def decode_attrs(ns, attrs)
-    is_nil = false
-    type = nil
-    arytype = nil
-    root = nil
-    offset = nil
-    position = nil
-    href = nil
-    id = nil
-    extraattr = {}
-
-    attrs.each do |key, value|
-      qname = ns.parse(key)
-      case qname.namespace
-      when XSD::InstanceNamespace
-        case qname.name
-        when XSD::NilLiteral
-          is_nil = NilLiteralMap[value] or
-            raise EncodingStyleError.new("cannot accept attribute value: #{value} as the value of xsi:#{XSD::NilLiteral} (expected 'true', 'false', '1', or '0')")
-          next
-        when XSD::AttrType
-          type = value
-          next
-        end
-      when EncodingNamespace
-        case qname.name
-        when AttrArrayType
-          arytype = value
-          next
-        when AttrRoot
-          root = RootLiteralMap[value] or
-            raise EncodingStyleError.new(
-	      "illegal root attribute value: #{value}")
-          next
-        when AttrOffset
-          offset = value
-          next
-        when AttrPosition
-          position = value
-          next
-        end
-      end
-      if key == 'href'
-        href = value
-        next
-      elsif key == 'id'
-        id = value
-        next
-      end
-      qname = ns.parse_local(key)
-      extraattr[qname] = decode_attr_value(ns, qname, value)
-    end
-
-    return is_nil, type, arytype, root, offset, position, href, id, extraattr
-  end
-
-  def decode_attr_value(ns, qname, value)
-    if /\A#/ =~ value
-      o = SOAPReference.decode(nil, value)
-      @refpool << o
-      o
-    else
-      value
-    end
-  end
-
-  def decode_arypos(position)
-    /^\[(.+)\]$/ =~ position
-    $1.split(',').collect { |s| s.to_i }
-  end
-
-  def decode_resolve_id
-    count = @refpool.length	# To avoid infinite loop
-    while !@refpool.empty? && count > 0
-      @refpool = @refpool.find_all { |ref|
-	o = @idpool.find { |item|
-	  item.id == ref.refid
-	}
-	if o.is_a?(SOAPReference)
-	  true	# link of link.
-	elsif o
-	  ref.__setobj__(o)
-	  false
-	elsif o = ref.rootnode.external_content[ref.refid]
-	  ref.__setobj__(o)
-      	  false
-	else
-	  raise EncodingStyleError.new("unresolved reference: #{ref.refid}")
-	end
-      }
-      count -= 1
-    end
-  end
-end
-
-SOAPHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/generator.rb
deleted file mode 100644
index f179555..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/generator.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-# SOAP4R - SOAP XML Instance Generator library.
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/ns'
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-
-
-###
-## CAUTION: MT-unsafe
-#
-class SOAPGenerator
-  include SOAP
-
-  class FormatEncodeError < Error; end
-
-public
-
-  attr_accessor :charset
-  attr_accessor :default_encodingstyle
-  attr_accessor :generate_explicit_type
-  attr_accessor :use_numeric_character_reference
-
-  def initialize(opt = {})
-    @reftarget = nil
-    @handlers = {}
-    @charset = opt[:charset] || XSD::Charset.xml_encoding_label
-    @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace
-    @generate_explicit_type =
-      opt.key?(:generate_explicit_type) ? opt[:generate_explicit_type] : true
-    @elementformdefault = opt[:elementformdefault]
-    @attributeformdefault = opt[:attributeformdefault]
-    @use_numeric_character_reference = opt[:use_numeric_character_reference]
-    @indentstr = opt[:no_indent] ? '' : '  '
-    @buf = @indent = @curr = nil
-  end
-
-  def generate(obj, io = nil)
-    @buf = io || ''
-    @indent = ''
-
-    prologue
-    @handlers.each do |uri, handler|
-      handler.encode_prologue
-    end
-
-    ns = XSD::NS.new
-    @buf << xmldecl
-    encode_data(ns, obj, nil)
-
-    @handlers.each do |uri, handler|
-      handler.encode_epilogue
-    end
-    epilogue
-
-    @buf
-  end
-
-  def encode_data(ns, obj, parent)
-    if obj.is_a?(SOAPEnvelopeElement)
-      encode_element(ns, obj, parent)
-      return
-    end
-    if @reftarget && !obj.precedents.empty?
-      add_reftarget(obj.elename.name, obj)
-      ref = SOAPReference.new(obj)
-      ref.elename = ref.elename.dup_name(obj.elename.name)
-      obj.precedents.clear	# Avoid cyclic delay.
-      obj.encodingstyle = parent.encodingstyle
-      # SOAPReference is encoded here.
-      obj = ref
-    end
-    encodingstyle = obj.encodingstyle
-    # Children's encodingstyle is derived from its parent.
-    encodingstyle ||= parent.encodingstyle if parent
-    obj.encodingstyle = encodingstyle
-    handler = find_handler(encodingstyle || @default_encodingstyle)
-    unless handler
-      raise FormatEncodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-    if !obj.elename.name
-      raise FormatEncodeError.new("Element name not defined: #{ obj }.")
-    end
-    handler.encode_data(self, ns, obj, parent)
-    handler.encode_data_end(self, ns, obj, parent)
-  end
-
-  def add_reftarget(name, node)
-    unless @reftarget
-      raise FormatEncodeError.new("Reftarget is not defined.")
-    end
-    @reftarget.add(name, node)
-  end
-
-  def encode_child(ns, child, parent)
-    indent_backup, @indent = @indent, @indent + @indentstr
-    encode_data(ns.clone_ns, child, parent)
-    @indent = indent_backup
-  end
-
-  def encode_element(ns, obj, parent)
-    attrs = {}
-    if obj.is_a?(SOAPBody)
-      @reftarget = obj
-      obj.encode(self, ns, attrs) do |child|
-	indent_backup, @indent = @indent, @indent + @indentstr
-        encode_data(ns.clone_ns, child, obj)
-	@indent = indent_backup
-      end
-      @reftarget = nil
-    else
-      if obj.is_a?(SOAPEnvelope)
-        # xsi:nil="true" can appear even if dumping without explicit type.
-        SOAPGenerator.assign_ns(attrs, ns,
-	  XSD::InstanceNamespace, XSINamespaceTag)
-        if @generate_explicit_type
-          SOAPGenerator.assign_ns(attrs, ns, XSD::Namespace, XSDNamespaceTag)
-        end
-      end
-      obj.encode(self, ns, attrs) do |child|
-	indent_backup, @indent = @indent, @indent + @indentstr
-        encode_data(ns.clone_ns, child, obj)
-	@indent = indent_backup
-      end
-    end
-  end
-
-  def encode_name(ns, data, attrs)
-    if element_local?(data)
-      data.elename.name
-    else
-      if element_qualified?(data)
-        SOAPGenerator.assign_ns(attrs, ns, data.elename.namespace, '')
-      else
-        SOAPGenerator.assign_ns(attrs, ns, data.elename.namespace)
-      end
-      ns.name(data.elename)
-    end
-  end
-
-  def encode_name_end(ns, data)
-    if element_local?(data)
-      data.elename.name
-    else
-      ns.name(data.elename)
-    end
-  end
-
-  def encode_tag(elename, attrs = nil)
-    if !attrs or attrs.empty?
-      @buf << "\n#{ @indent }<#{ elename }>"
-    elsif attrs.size == 1
-      key, value = attrs.shift
-      @buf << %Q[\n#{ @indent }<#{ elename } #{ key }="#{ value }">]
-    else
-      @buf << "\n#{ @indent }<#{ elename } " <<
-        attrs.collect { |key, value|
-          %Q[#{ key }="#{ value }"]
-        }.join("\n#{ @indent }#{ @indentstr * 2 }") <<
-	'>'
-    end
-  end
-
-  def encode_tag_end(elename, cr = nil)
-    if cr
-      @buf << "\n#{ @indent }</#{ elename }>"
-    else
-      @buf << "</#{ elename }>"
-    end
-  end
-
-  def encode_rawstring(str)
-    @buf << str
-  end
-
-  EncodeMap = {
-    '&' => '&',
-    '<' => '<',
-    '>' => '>',
-    '"' => '"',
-    '\'' => ''',
-    "\r" => '&#xd;'
-  }
-  EncodeCharRegexp = Regexp.new("[#{EncodeMap.keys.join}]")
-  def encode_string(str)
-    if @use_numeric_character_reference and !XSD::Charset.is_us_ascii(str)
-      str.gsub!(EncodeCharRegexp) { |c| EncodeMap[c] }
-      @buf << str.unpack("U*").collect { |c|
-        if c == 0x9 or c == 0xa or c == 0xd or (c >= 0x20 and c <= 0x7f)
-          c.chr
-        else
-          sprintf("&#x%x;", c)
-        end
-      }.join
-    else
-      @buf << str.gsub(EncodeCharRegexp) { |c| EncodeMap[c] }
-    end
-  end
-
-  def element_local?(element)
-    element.elename.namespace.nil?
-  end
-
-  def element_qualified?(element)
-    if element.respond_to?(:qualified)
-      if element.qualified.nil?
-        @elementformdefault
-      else
-        element.qualified
-      end
-    else
-      @elementformdefault
-    end
-  end
-
-  def self.assign_ns(attrs, ns, namespace, tag = nil)
-    if namespace.nil?
-      raise FormatEncodeError.new("empty namespace")
-    end
-    unless ns.assigned?(namespace)
-      tag = ns.assign(namespace, tag)
-      if tag == ''
-        attr = 'xmlns'
-      else
-        attr = "xmlns:#{tag}"
-      end
-      attrs[attr] = namespace
-    end
-  end
-
-private
-
-  def prologue
-  end
-
-  def epilogue
-  end
-
-  def find_handler(encodingstyle)
-    unless @handlers.key?(encodingstyle)
-      handler = SOAP::EncodingStyle::Handler.handler(encodingstyle).new(@charset)
-      handler.generate_explicit_type = @generate_explicit_type
-      handler.encode_prologue
-      @handlers[encodingstyle] = handler
-    end
-    @handlers[encodingstyle]
-  end
-
-  def xmldecl
-    if @charset
-      %Q[<?xml version="1.0" encoding="#{ @charset }" ?>]
-    else
-      %Q[<?xml version="1.0" ?>]
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handler.rb
deleted file mode 100644
index 7da2836..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handler.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOAP4R - SOAP Header handler item
-# Copyright (C) 2003, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/element'
-
-
-module SOAP
-module Header
-
-
-class Handler
-  attr_reader :elename
-  attr_reader :mustunderstand
-  attr_reader :encodingstyle
-
-  def initialize(elename)
-    @elename = elename
-    @mustunderstand = false
-    @encodingstyle = nil
-  end
-
-  # Should return a SOAP/OM, a SOAPHeaderItem or nil.
-  def on_outbound
-    nil
-  end
-
-  # Given header is a SOAPHeaderItem or nil.
-  def on_inbound(header, mustunderstand = false)
-    # do something.
-  end
-
-  def on_outbound_headeritem
-    item = on_outbound
-    if item.nil?
-      nil
-    elsif item.is_a?(::SOAP::SOAPHeaderItem)
-      item.elename = @elename
-      item
-    else
-      item.elename = @elename
-      ::SOAP::SOAPHeaderItem.new(item, @mustunderstand, @encodingstyle)
-    end
-  end
-
-  def on_inbound_headeritem(header)
-    on_inbound(header.element, header.mustunderstand)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handlerset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handlerset.rb
deleted file mode 100644
index a8eee03..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/handlerset.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# SOAP4R - SOAP Header handler set
-# Copyright (C) 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/namedelements'
-
-
-module SOAP
-module Header
-
-
-class HandlerSet
-  def initialize
-    @store = XSD::NamedElements.new
-  end
-
-  def dup
-    obj = HandlerSet.new
-    obj.store = @store.dup
-    obj
-  end
-
-  def add(handler)
-    @store << handler
-  end
-  alias << add
-
-  def delete(handler)
-    @store.delete(handler)
-  end
-
-  def include?(handler)
-    @store.include?(handler)
-  end
-
-  # returns: Array of SOAPHeaderItem
-  def on_outbound
-    @store.collect { |handler|
-      handler.on_outbound_headeritem
-    }.compact
-  end
-
-  # headers: SOAPHeaderItem enumerable object
-  def on_inbound(headers)
-    headers.each do |name, item|
-      handler = @store.find { |handler|
-        handler.elename == item.element.elename
-      }
-      if handler
-        handler.on_inbound_headeritem(item)
-      elsif item.mustunderstand
-        raise UnhandledMustUnderstandHeaderError.new(item.element.elename.to_s)
-      end
-    end
-  end
-
-protected
-
-  def store=(store)
-    @store = store
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/simplehandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/simplehandler.rb
deleted file mode 100644
index 7b206f7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/header/simplehandler.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOAP4R - SOAP Simple header item handler
-# Copyright (C) 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/header/handler'
-require 'soap/baseData'
-
-
-module SOAP
-module Header
-
-
-class SimpleHandler < SOAP::Header::Handler
-  def initialize(elename)
-    super(elename)
-  end
-
-  # Should return a Hash, String or nil.
-  def on_simple_outbound
-    nil
-  end
-
-  # Given header is a Hash, String or nil.
-  def on_simple_inbound(header, mustunderstand)
-  end
-
-  def on_outbound
-    h = on_simple_outbound
-    h ? SOAPElement.from_obj(h, elename.namespace) : nil
-  end
-
-  def on_inbound(header, mustunderstand)
-    h = header.respond_to?(:to_obj) ? header.to_obj : header.data
-    on_simple_inbound(h, mustunderstand)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/httpconfigloader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/httpconfigloader.rb
deleted file mode 100644
index cd7bca8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/httpconfigloader.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOAP4R - HTTP config loader.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/property'
-
-
-module SOAP
-
-
-module HTTPConfigLoader
-module_function
-
-  def set_options(client, options)
-    client.proxy = options["proxy"]
-    options.add_hook("proxy") do |key, value|
-      client.proxy = value
-    end
-    client.no_proxy = options["no_proxy"]
-    options.add_hook("no_proxy") do |key, value|
-      client.no_proxy = value
-    end
-    if client.respond_to?(:protocol_version=)
-      client.protocol_version = options["protocol_version"]
-      options.add_hook("protocol_version") do |key, value|
-        client.protocol_version = value
-      end
-    end
-    ssl_config = options["ssl_config"] ||= ::SOAP::Property.new
-    set_ssl_config(client, ssl_config)
-    ssl_config.add_hook(true) do |key, value|
-      set_ssl_config(client, ssl_config)
-    end
-    basic_auth = options["basic_auth"] ||= ::SOAP::Property.new
-    set_basic_auth(client, basic_auth)
-    basic_auth.add_hook do |key, value|
-      set_basic_auth(client, basic_auth)
-    end
-    options.add_hook("connect_timeout") do |key, value|
-      client.connect_timeout = value
-    end
-    options.add_hook("send_timeout") do |key, value|
-      client.send_timeout = value
-    end
-    options.add_hook("receive_timeout") do |key, value|
-      client.receive_timeout = value
-    end
-  end
-
-  def set_basic_auth(client, basic_auth)
-    basic_auth.values.each do |url, userid, passwd|
-      client.set_basic_auth(url, userid, passwd)
-    end
-  end
-
-  def set_ssl_config(client, ssl_config)
-    ssl_config.each do |key, value|
-      cfg = client.ssl_config
-      if cfg.nil?
-        raise NotImplementedError.new("SSL not supported")
-      end
-      case key
-      when 'client_cert'
-        cfg.client_cert = cert_from_file(value)
-      when 'client_key'
-        cfg.client_key = key_from_file(value)
-      when 'client_ca'
-        cfg.client_ca = value
-      when 'ca_path'
-        cfg.set_trust_ca(value)
-      when 'ca_file'
-        cfg.set_trust_ca(value)
-      when 'crl'
-        cfg.set_crl(value)
-      when 'verify_mode'
-        cfg.verify_mode = ssl_config_int(value)
-      when 'verify_depth'
-        cfg.verify_depth = ssl_config_int(value)
-      when 'options'
-        cfg.options = value
-      when 'ciphers'
-        cfg.ciphers = value
-      when 'verify_callback'
-        cfg.verify_callback = value
-      when 'cert_store'
-        cfg.cert_store = value
-      else
-        raise ArgumentError.new("unknown ssl_config property #{key}")
-      end
-    end
-  end
-
-  def ssl_config_int(value)
-    if value.nil? or value.to_s.empty?
-      nil
-    else
-      begin
-        Integer(value)
-      rescue ArgumentError
-        ::SOAP::Property::Util.const_from_name(value.to_s)
-      end
-    end
-  end
-
-  def cert_from_file(filename)
-    OpenSSL::X509::Certificate.new(File.open(filename) { |f| f.read })
-  end
-
-  def key_from_file(filename)
-    OpenSSL::PKey::RSA.new(File.open(filename) { |f| f.read })
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping.rb
deleted file mode 100644
index b83f8b4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# SOAP4R - Ruby type mapping utility.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/mapping/mapping'
-require 'soap/mapping/registry'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/factory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/factory.rb
deleted file mode 100644
index 978b303..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/factory.rb
+++ /dev/null
@@ -1,355 +0,0 @@
-# SOAP4R - Mapping factory.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-module Mapping
-
-
-class Factory
-  include TraverseSupport
-
-  def initialize
-    # nothing to do
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    raise NotImplementError.new
-    # return soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    raise NotImplementError.new
-    # return convert_succeeded_or_not, obj
-  end
-
-  def setiv2obj(obj, node, map)
-    return if node.nil?
-    if obj.is_a?(Array)
-      setiv2ary(obj, node, map)
-    else
-      setiv2struct(obj, node, map)
-    end
-  end
-
-  def setiv2soap(node, obj, map)
-    if obj.class.class_variables.include?('@@schema_element')
-      obj.class.class_eval('@@schema_element').each do |name, info|
-        type, qname = info
-        if qname
-          elename = qname.name
-        else
-          elename = Mapping.name2elename(name)
-        end
-        node.add(elename,
-          Mapping._obj2soap(obj.instance_variable_get('@' + name), map))
-      end
-    else
-      # should we sort instance_variables?
-      obj.instance_variables.each do |var|
-        name = var.sub(/^@/, '')
-        elename = Mapping.name2elename(name)
-        node.add(elename,
-          Mapping._obj2soap(obj.instance_variable_get(var), map))
-      end
-    end
-  end
-
-private
-
-  def setiv2ary(obj, node, map)
-    node.each do |name, value|
-      Array.instance_method(:<<).bind(obj).call(Mapping._soap2obj(value, map))
-    end
-  end
-
-  def setiv2struct(obj, node, map)
-    vars = {}
-    node.each do |name, value|
-      vars[Mapping.elename2name(name)] = Mapping._soap2obj(value, map)
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-end
-
-class StringFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    begin
-      unless XSD::Charset.is_ces(obj, Thread.current[:SOAPExternalCES])
-        return nil
-      end
-      encoded = XSD::Charset.encoding_conv(obj,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = soap_class.new(encoded)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    mark_marshalled_obj(obj, soap_obj)
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = Mapping.create_empty_object(obj_class)
-    decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding,
-      Thread.current[:SOAPExternalCES])
-    obj.replace(decoded)
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class BasetypeFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    soap_obj = nil
-    begin
-      soap_obj = soap_class.new(obj)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    if @allow_original_mapping
-      # Basetype except String should not be multiref-ed in SOAP/1.1.
-      mark_marshalled_obj(obj, soap_obj)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.data
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class DateTimeFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and
-	Time === obj and !obj.instance_variables.empty?
-      return nil
-    end
-    soap_obj = nil
-    begin
-      soap_obj = soap_class.new(obj)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    mark_marshalled_obj(obj, soap_obj)
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    if node.respond_to?(:to_obj)
-      obj = node.to_obj(obj_class)
-      return false if obj.nil?
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    else
-      return false
-    end
-  end
-end
-
-class Base64Factory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    return nil unless obj.instance_variables.empty?
-    soap_obj = soap_class.new(obj)
-    mark_marshalled_obj(obj, soap_obj) if soap_obj
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.string
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class URIFactory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    soap_obj = soap_class.new(obj)
-    mark_marshalled_obj(obj, soap_obj) if soap_obj
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.data
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class ArrayFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  # [[1], [2]] is converted to Array of Array, not 2-D Array.
-  # To create M-D Array, you must call Mapping.ary2md.
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    arytype = Mapping.obj2element(obj)
-    if arytype.name
-      arytype.namespace ||= RubyTypeNamespace
-    else
-      arytype = XSD::AnyTypeName
-    end
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |item|
-      soap_obj.add(Mapping._obj2soap(item, map))
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    node.soap2array(obj) do |elem|
-      elem ? Mapping._soap2obj(elem, map) : nil
-    end
-    return true, obj
-  end
-end
-
-class TypedArrayFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    arytype = info[:type] || info[0]
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |var|
-      soap_obj.add(Mapping._obj2soap(var, map))
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    if node.rank > 1
-      return false
-    end
-    arytype = info[:type] || info[0]
-    unless node.arytype == arytype
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    node.soap2array(obj) do |elem|
-      elem ? Mapping._soap2obj(elem, map) : nil
-    end
-    return true, obj
-  end
-end
-
-class TypedStructFactory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    type = info[:type] || info[0]
-    soap_obj = soap_class.new(type)
-    mark_marshalled_obj(obj, soap_obj)
-    if obj.class <= SOAP::Marshallable
-      setiv2soap(soap_obj, obj, map)
-    else
-      setiv2soap(soap_obj, obj, map)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    type = info[:type] || info[0]
-    unless node.type == type
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    setiv2obj(obj, node, map)
-    return true, obj
-  end
-end
-
-MapQName = XSD::QName.new(ApacheSOAPTypeNamespace, 'Map')
-class HashFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    if !obj.default.nil? or
-	(obj.respond_to?(:default_proc) and obj.default_proc)
-      return nil
-    end
-    soap_obj = SOAPStruct.new(MapQName)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |key, value|
-      elem = SOAPStruct.new
-      elem.add("key", Mapping._obj2soap(key, map))
-      elem.add("value", Mapping._obj2soap(value, map))
-      # ApacheAxis allows only 'item' here.
-      soap_obj.add("item", elem)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    unless node.type == MapQName
-      return false
-    end
-    if node.class == SOAPStruct and node.key?('default')
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    if node.class == SOAPStruct
-      node.each do |key, value|
-	obj[Mapping._soap2obj(value['key'], map)] =
-	  Mapping._soap2obj(value['value'], map)
-      end
-    else
-      node.each do |value|
-	obj[Mapping._soap2obj(value['key'], map)] =
-	  Mapping._soap2obj(value['value'], map)
-      end
-    end
-    return true, obj
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/mapping.rb
deleted file mode 100644
index 65d6bb4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/mapping.rb
+++ /dev/null
@@ -1,381 +0,0 @@
-# SOAP4R - Ruby type mapping utility.
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-
-
-module SOAP
-
-
-module Mapping
-  RubyTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/1.6'
-  RubyTypeInstanceNamespace =
-    'http://www.ruby-lang.org/xmlns/ruby/type-instance'
-  RubyCustomTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/custom'
-  ApacheSOAPTypeNamespace = 'http://xml.apache.org/xml-soap'
-
-
-  # TraverseSupport breaks following thread variables.
-  #   Thread.current[:SOAPMarshalDataKey]
-  module TraverseSupport
-    def mark_marshalled_obj(obj, soap_obj)
-      raise if obj.nil?
-      Thread.current[:SOAPMarshalDataKey][obj.__id__] = soap_obj
-    end
-
-    def mark_unmarshalled_obj(node, obj)
-      return if obj.nil?
-      # node.id is not Object#id but SOAPReference#id
-      Thread.current[:SOAPMarshalDataKey][node.id] = obj
-    end
-  end
-
-
-  EMPTY_OPT = {}
-  def self.obj2soap(obj, registry = nil, type = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    soap_obj = nil
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      soap_obj = _obj2soap(obj, registry, type)
-    end
-    soap_obj
-  end
-
-  def self.soap2obj(node, registry = nil, klass = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    obj = nil
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      obj = _soap2obj(node, registry, klass)
-    end
-    obj
-  end
-
-  def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    type = XSD::QName.new(type_ns, typename)
-    soap_ary = SOAPArray.new(ValueArrayName, 1, type)
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      ary.each do |ele|
-        soap_ary.add(_obj2soap(ele, registry, type))
-      end
-    end
-    soap_ary
-  end
-
-  def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    type = XSD::QName.new(type_ns, typename)
-    md_ary = SOAPArray.new(ValueArrayName, rank, type)
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      add_md_ary(md_ary, ary, [], registry)
-    end
-    md_ary
-  end
-
-  def self.fault2exception(fault, registry = nil)
-    registry ||= Mapping::DefaultRegistry
-    detail = if fault.detail
-        soap2obj(fault.detail, registry) || ""
-      else
-        ""
-      end
-    if detail.is_a?(Mapping::SOAPException)
-      begin
-        e = detail.to_e
-	remote_backtrace = e.backtrace
-        e.set_backtrace(nil)
-        raise e # ruby sets current caller as local backtrace of e => e2.
-      rescue Exception => e
-	e.set_backtrace(remote_backtrace + e.backtrace[1..-1])
-        raise
-      end
-    else
-      fault.detail = detail
-      fault.set_backtrace(
-        if detail.is_a?(Array)
-	  detail
-        else
-          [detail.to_s]
-        end
-      )
-      raise
-    end
-  end
-
-  def self._obj2soap(obj, registry, type = nil)
-    if referent = Thread.current[:SOAPMarshalDataKey][obj.__id__] and
-        !Thread.current[:SOAPMarshalNoReference]
-      SOAPReference.new(referent)
-    elsif registry
-      registry.obj2soap(obj, type)
-    else
-      raise MappingError.new("no mapping registry given")
-    end
-  end
-
-  def self._soap2obj(node, registry, klass = nil)
-    if node.nil?
-      return nil
-    elsif node.is_a?(SOAPReference)
-      target = node.__getobj__
-      # target.id is not Object#id but SOAPReference#id
-      if referent = Thread.current[:SOAPMarshalDataKey][target.id] and
-          !Thread.current[:SOAPMarshalNoReference]
-        return referent
-      else
-        return _soap2obj(target, registry, klass)
-      end
-    end
-    return registry.soap2obj(node, klass)
-  end
-
-  if Object.respond_to?(:allocate)
-    # ruby/1.7 or later.
-    def self.create_empty_object(klass)
-      klass.allocate
-    end
-  else
-    MARSHAL_TAG = {
-      String => ['"', 1],
-      Regexp => ['/', 2],
-      Array => ['[', 1],
-      Hash => ['{', 1]
-    }
-    def self.create_empty_object(klass)
-      if klass <= Struct
-	name = klass.name
-	return ::Marshal.load(sprintf("\004\006S:%c%s\000", name.length + 5, name))
-      end
-      if MARSHAL_TAG.has_key?(klass)
-	tag, terminate = MARSHAL_TAG[klass]
-	return ::Marshal.load(sprintf("\004\006%s%s", tag, "\000" * terminate))
-      end
-      MARSHAL_TAG.each do |k, v|
-	if klass < k
-	  name = klass.name
-	  tag, terminate = v
-	  return ::Marshal.load(sprintf("\004\006C:%c%s%s%s", name.length + 5, name, tag, "\000" * terminate))
-	end
-      end
-      name = klass.name
-      ::Marshal.load(sprintf("\004\006o:%c%s\000", name.length + 5, name))
-    end
-  end
-
-  # Allow only (Letter | '_') (Letter | Digit | '-' | '_')* here.
-  # Caution: '.' is not allowed here.
-  # To follow XML spec., it should be NCName.
-  #   (denied chars) => .[0-F][0-F]
-  #   ex. a.b => a.2eb
-  #
-  def self.name2elename(name)
-    name.gsub(/([^a-zA-Z0-9:_\-]+)/n) {
-      '.' << $1.unpack('H2' * $1.size).join('.')
-    }.gsub(/::/n, '..')
-  end
-
-  def self.elename2name(name)
-    name.gsub(/\.\./n, '::').gsub(/((?:\.[0-9a-fA-F]{2})+)/n) {
-      [$1.delete('.')].pack('H*')
-    }
-  end
-
-  def self.const_from_name(name, lenient = false)
-    const = ::Object
-    name.sub(/\A::/, '').split('::').each do |const_str|
-      if XSD::CodeGen::GenSupport.safeconstname?(const_str)
-        if const.const_defined?(const_str)
-          const = const.const_get(const_str)
-          next
-        end
-      elsif lenient
-        const_str = XSD::CodeGen::GenSupport.safeconstname(const_str)
-        if const.const_defined?(const_str)
-          const = const.const_get(const_str)
-          next
-        end
-      end
-      return nil
-    end
-    const
-  end
-
-  def self.class_from_name(name, lenient = false)
-    const = const_from_name(name, lenient)
-    if const.is_a?(::Class)
-      const
-    else
-      nil
-    end
-  end
-
-  def self.module_from_name(name, lenient = false)
-    const = const_from_name(name, lenient)
-    if const.is_a?(::Module)
-      const
-    else
-      nil
-    end
-  end
-
-  def self.class2qname(klass)
-    name = schema_type_definition(klass)
-    namespace = schema_ns_definition(klass)
-    XSD::QName.new(namespace, name)
-  end
-
-  def self.class2element(klass)
-    type = Mapping.class2qname(klass)
-    type.name ||= Mapping.name2elename(klass.name)
-    type.namespace ||= RubyCustomTypeNamespace
-    type
-  end
-
-  def self.obj2element(obj)
-    name = namespace = nil
-    ivars = obj.instance_variables
-    if ivars.include?('@schema_type')
-      name = obj.instance_variable_get('@schema_type')
-    end
-    if ivars.include?('@schema_ns')
-      namespace = obj.instance_variable_get('@schema_ns')
-    end
-    if !name or !namespace
-      class2qname(obj.class)
-    else
-      XSD::QName.new(namespace, name)
-    end
-  end
-
-  def self.define_singleton_method(obj, name, &block)
-    sclass = (class << obj; self; end)
-    sclass.class_eval {
-      define_method(name, &block)
-    }
-  end
-
-  def self.get_attribute(obj, attr_name)
-    if obj.is_a?(::Hash)
-      obj[attr_name] || obj[attr_name.intern]
-    else
-      name = XSD::CodeGen::GenSupport.safevarname(attr_name)
-      if obj.instance_variables.include?('@' + name)
-        obj.instance_variable_get('@' + name)
-      elsif ((obj.is_a?(::Struct) or obj.is_a?(Marshallable)) and
-          obj.respond_to?(name))
-        obj.__send__(name)
-      end
-    end
-  end
-
-  def self.set_attributes(obj, values)
-    if obj.is_a?(::SOAP::Mapping::Object)
-      values.each do |attr_name, value|
-        obj.__add_xmlele_value(attr_name, value)
-      end
-    else
-      values.each do |attr_name, value|
-        name = XSD::CodeGen::GenSupport.safevarname(attr_name)
-        setter = name + "="
-        if obj.respond_to?(setter)
-          obj.__send__(setter, value)
-        else
-          obj.instance_variable_set('@' + name, value)
-          begin
-            define_attr_accessor(obj, name,
-              proc { instance_variable_get('@' + name) },
-              proc { |value| instance_variable_set('@' + name, value) })
-          rescue TypeError
-            # singleton class may not exist (e.g. Float)
-          end
-        end
-      end
-    end
-  end
-
-  def self.define_attr_accessor(obj, name, getterproc, setterproc = nil)
-    define_singleton_method(obj, name, &getterproc)
-    define_singleton_method(obj, name + '=', &setterproc) if setterproc
-  end
-
-  def self.schema_type_definition(klass)
-    class_schema_variable(:schema_type, klass)
-  end
-
-  def self.schema_ns_definition(klass)
-    class_schema_variable(:schema_ns, klass)
-  end
-
-  def self.schema_element_definition(klass)
-    schema_element = class_schema_variable(:schema_element, klass) or return nil
-    schema_ns = schema_ns_definition(klass)
-    elements = []
-    as_array = []
-    schema_element.each do |varname, definition|
-      class_name, name = definition
-      if /\[\]$/ =~ class_name
-        class_name = class_name.sub(/\[\]$/, '')
-        as_array << (name ? name.name : varname)
-      end
-      elements << [name || XSD::QName.new(schema_ns, varname), class_name]
-    end
-    [elements, as_array]
-  end
-
-  def self.schema_attribute_definition(klass)
-    class_schema_variable(:schema_attribute, klass)
-  end
-
-  class << Mapping
-  private
-
-    def class_schema_variable(sym, klass)
-      var = "@@#{sym}"
-      klass.class_variables.include?(var) ? klass.class_eval(var) : nil
-    end
-
-    def protect_threadvars(*symbols)
-      backup = {}
-      begin
-        symbols.each do |sym|
-          backup[sym] = Thread.current[sym]
-        end
-        yield
-      ensure
-        symbols.each do |sym|
-          Thread.current[sym] = backup[sym]
-        end
-      end
-    end
-
-    def add_md_ary(md_ary, ary, indices, registry)
-      for idx in 0..(ary.size - 1)
-        if ary[idx].is_a?(Array)
-          add_md_ary(md_ary, ary[idx], indices + [idx], registry)
-        else
-          md_ary[*(indices + [idx])] = _obj2soap(ary[idx], registry)
-        end
-      end
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/registry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/registry.rb
deleted file mode 100644
index 823e806..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/registry.rb
+++ /dev/null
@@ -1,541 +0,0 @@
-# SOAP4R - Mapping registry.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-require 'soap/mapping/factory'
-require 'soap/mapping/rubytypeFactory'
-
-
-module SOAP
-
-
-module Marshallable
-  # @@type_ns = Mapping::RubyCustomTypeNamespace
-end
-
-
-module Mapping
-
-  
-module MappedException; end
-
-
-RubyTypeName = XSD::QName.new(RubyTypeInstanceNamespace, 'rubyType')
-RubyExtendName = XSD::QName.new(RubyTypeInstanceNamespace, 'extends')
-RubyIVarName = XSD::QName.new(RubyTypeInstanceNamespace, 'ivars')
-
-
-# Inner class to pass an exception.
-class SOAPException; include Marshallable
-  attr_reader :excn_type_name, :cause
-  def initialize(e)
-    @excn_type_name = Mapping.name2elename(e.class.to_s)
-    @cause = e
-  end
-
-  def to_e
-    if @cause.is_a?(::Exception)
-      @cause.extend(::SOAP::Mapping::MappedException)
-      return @cause
-    elsif @cause.respond_to?(:message) and @cause.respond_to?(:backtrace)
-      e = RuntimeError.new(@cause.message)
-      e.set_backtrace(@cause.backtrace)
-      return e
-    end
-    klass = Mapping.class_from_name(Mapping.elename2name(@excn_type_name.to_s))
-    if klass.nil? or not klass <= ::Exception
-      return RuntimeError.new(@cause.inspect)
-    end
-    obj = klass.new(@cause.message)
-    obj.extend(::SOAP::Mapping::MappedException)
-    obj
-  end
-end
-
-
-# For anyType object: SOAP::Mapping::Object not ::Object
-class Object; include Marshallable
-  def initialize
-    @__xmlele_type = {}
-    @__xmlele = []
-    @__xmlattr = {}
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x%s>", self.class.name, __id__,
-      @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join)
-  end
-
-  def __xmlattr
-    @__xmlattr
-  end
-
-  def __xmlele
-    @__xmlele
-  end
-
-  def [](qname)
-    unless qname.is_a?(XSD::QName)
-      qname = XSD::QName.new(nil, qname)
-    end
-    @__xmlele.each do |k, v|
-      return v if k == qname
-    end
-    # fallback
-    @__xmlele.each do |k, v|
-      return v if k.name == qname.name
-    end
-    nil
-  end
-
-  def []=(qname, value)
-    unless qname.is_a?(XSD::QName)
-      qname = XSD::QName.new(nil, qname)
-    end
-    found = false
-    @__xmlele.each do |pair|
-      if pair[0] == qname
-        found = true
-        pair[1] = value
-      end
-    end
-    unless found
-      __define_attr_accessor(qname)
-      @__xmlele << [qname, value]
-    end
-    @__xmlele_type[qname] = :single
-  end
-
-  def __add_xmlele_value(qname, value)
-    found = false
-    @__xmlele.map! do |k, v|
-      if k == qname
-        found = true
-        [k, __set_xmlele_value(k, v, value)]
-      else
-        [k, v]
-      end
-    end
-    unless found
-      __define_attr_accessor(qname)
-      @__xmlele << [qname, value]
-      @__xmlele_type[qname] = :single
-    end
-    value
-  end
-
-private
-
-  if RUBY_VERSION > "1.7.0"
-    def __define_attr_accessor(qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      Mapping.define_attr_accessor(self, name,
-        proc { self[qname] },
-        proc { |value| self[qname] = value })
-    end
-  else
-    def __define_attr_accessor(qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      instance_eval <<-EOS
-        def #{name}
-          self[#{qname.dump}]
-        end
-
-        def #{name}=(value)
-          self[#{qname.dump}] = value
-        end
-      EOS
-    end
-  end
-
-  def __set_xmlele_value(key, org, value)
-    case @__xmlele_type[key]
-    when :multi
-      org << value
-      org
-    when :single
-      @__xmlele_type[key] = :multi
-      [org, value]
-    else
-      raise RuntimeError.new("unknown type")
-    end
-  end
-end
-
-
-class MappingError < Error; end
-
-
-class Registry
-  class Map
-    def initialize(registry)
-      @obj2soap = {}
-      @soap2obj = {}
-      @registry = registry
-    end
-
-    def obj2soap(obj)
-      klass = obj.class
-      if map = @obj2soap[klass]
-        map.each do |soap_class, factory, info|
-          ret = factory.obj2soap(soap_class, obj, info, @registry)
-          return ret if ret
-        end
-      end
-      ancestors = klass.ancestors
-      ancestors.delete(klass)
-      ancestors.delete(::Object)
-      ancestors.delete(::Kernel)
-      ancestors.each do |klass|
-        if map = @obj2soap[klass]
-          map.each do |soap_class, factory, info|
-            if info[:derived_class]
-              ret = factory.obj2soap(soap_class, obj, info, @registry)
-              return ret if ret
-            end
-          end
-        end
-      end
-      nil
-    end
-
-    def soap2obj(node, klass = nil)
-      if map = @soap2obj[node.class]
-        map.each do |obj_class, factory, info|
-          next if klass and obj_class != klass
-          conv, obj = factory.soap2obj(obj_class, node, info, @registry)
-          return true, obj if conv
-        end
-      end
-      return false, nil
-    end
-
-    # Give priority to former entry.
-    def init(init_map = [])
-      clear
-      init_map.reverse_each do |obj_class, soap_class, factory, info|
-        add(obj_class, soap_class, factory, info)
-      end
-    end
-
-    # Give priority to latter entry.
-    def add(obj_class, soap_class, factory, info)
-      info ||= {}
-      (@obj2soap[obj_class] ||= []).unshift([soap_class, factory, info])
-      (@soap2obj[soap_class] ||= []).unshift([obj_class, factory, info])
-    end
-
-    def clear
-      @obj2soap.clear
-      @soap2obj.clear
-    end
-
-    def find_mapped_soap_class(target_obj_class)
-      map = @obj2soap[target_obj_class]
-      map.empty? ? nil : map[0][1]
-    end
-
-    def find_mapped_obj_class(target_soap_class)
-      map = @soap2obj[target_soap_class]
-      map.empty? ? nil : map[0][0]
-    end
-  end
-
-  StringFactory = StringFactory_.new
-  BasetypeFactory = BasetypeFactory_.new
-  DateTimeFactory = DateTimeFactory_.new
-  ArrayFactory = ArrayFactory_.new
-  Base64Factory = Base64Factory_.new
-  URIFactory = URIFactory_.new
-  TypedArrayFactory = TypedArrayFactory_.new
-  TypedStructFactory = TypedStructFactory_.new
-
-  HashFactory = HashFactory_.new
-
-  SOAPBaseMap = [
-    [::NilClass,     ::SOAP::SOAPNil,        BasetypeFactory],
-    [::TrueClass,    ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::FalseClass,   ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPString,     StringFactory],
-    [::DateTime,     ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Date,         ::SOAP::SOAPDate,       DateTimeFactory],
-    [::Time,         ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Time,         ::SOAP::SOAPTime,       DateTimeFactory],
-    [::Float,        ::SOAP::SOAPDouble,     BasetypeFactory,
-      {:derived_class => true}],
-    [::Float,        ::SOAP::SOAPFloat,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInt,        BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPLong,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInteger,    BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPShort,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPByte,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedLong, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedInt, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedShort, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedByte, BasetypeFactory,
-      {:derived_class => true}],
-    [::URI::Generic, ::SOAP::SOAPAnyURI,     URIFactory,
-      {:derived_class => true}],
-    [::String,       ::SOAP::SOAPBase64,     Base64Factory],
-    [::String,       ::SOAP::SOAPHexBinary,  Base64Factory],
-    [::String,       ::SOAP::SOAPDecimal,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPDuration,   BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYearMonth, BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYear,      BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonthDay,  BasetypeFactory],
-    [::String,       ::SOAP::SOAPGDay,       BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonth,     BasetypeFactory],
-    [::String,       ::SOAP::SOAPQName,      BasetypeFactory],
-
-    [::Hash,         ::SOAP::SOAPArray,      HashFactory],
-    [::Hash,         ::SOAP::SOAPStruct,     HashFactory],
-
-    [::Array,        ::SOAP::SOAPArray,      ArrayFactory,
-      {:derived_class => true}],
-
-    [::SOAP::Mapping::SOAPException,
-		     ::SOAP::SOAPStruct,     TypedStructFactory,
-      {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
- ]
-
-  RubyOriginalMap = [
-    [::NilClass,     ::SOAP::SOAPNil,        BasetypeFactory],
-    [::TrueClass,    ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::FalseClass,   ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPString,     StringFactory],
-    [::DateTime,     ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Date,         ::SOAP::SOAPDate,       DateTimeFactory],
-    [::Time,         ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Time,         ::SOAP::SOAPTime,       DateTimeFactory],
-    [::Float,        ::SOAP::SOAPDouble,     BasetypeFactory,
-      {:derived_class => true}],
-    [::Float,        ::SOAP::SOAPFloat,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInt,        BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPLong,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInteger,    BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPShort,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPByte,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedLong, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedInt, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedShort, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedByte, BasetypeFactory,
-      {:derived_class => true}],
-    [::URI::Generic, ::SOAP::SOAPAnyURI,     URIFactory,
-      {:derived_class => true}],
-    [::String,       ::SOAP::SOAPBase64,     Base64Factory],
-    [::String,       ::SOAP::SOAPHexBinary,  Base64Factory],
-    [::String,       ::SOAP::SOAPDecimal,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPDuration,   BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYearMonth, BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYear,      BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonthDay,  BasetypeFactory],
-    [::String,       ::SOAP::SOAPGDay,       BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonth,     BasetypeFactory],
-    [::String,       ::SOAP::SOAPQName,      BasetypeFactory],
-
-    [::Hash,         ::SOAP::SOAPArray,      HashFactory],
-    [::Hash,         ::SOAP::SOAPStruct,     HashFactory],
-
-    # Does not allow Array's subclass here.
-    [::Array,        ::SOAP::SOAPArray,      ArrayFactory],
-
-    [::SOAP::Mapping::SOAPException,
-                     ::SOAP::SOAPStruct,     TypedStructFactory,
-      {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
-  ]
-
-  attr_accessor :default_factory
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(config = {})
-    @config = config
-    @map = Map.new(self)
-    if @config[:allow_original_mapping]
-      @allow_original_mapping = true
-      @map.init(RubyOriginalMap)
-    else
-      @allow_original_mapping = false
-      @map.init(SOAPBaseMap)
-    end
-    @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
-      @config[:allow_untyped_struct] : true
-    @rubytype_factory = RubytypeFactory.new(
-      :allow_untyped_struct => @allow_untyped_struct,
-      :allow_original_mapping => @allow_original_mapping
-    )
-    @default_factory = @rubytype_factory
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-  end
-
-  def add(obj_class, soap_class, factory, info = nil)
-    @map.add(obj_class, soap_class, factory, info)
-  end
-  alias set add
-
-  # general Registry ignores type_qname
-  def obj2soap(obj, type_qname = nil)
-    soap = _obj2soap(obj)
-    if @allow_original_mapping
-      addextend2soap(soap, obj)
-    end
-    soap
-  end
-
-  def soap2obj(node, klass = nil)
-    obj = _soap2obj(node, klass)
-    if @allow_original_mapping
-      addextend2obj(obj, node.extraattr[RubyExtendName])
-      addiv2obj(obj, node.extraattr[RubyIVarName])
-    end
-    obj
-  end
-
-  def find_mapped_soap_class(obj_class)
-    @map.find_mapped_soap_class(obj_class)
-  end
-
-  def find_mapped_obj_class(soap_class)
-    @map.find_mapped_obj_class(soap_class)
-  end
-
-private
-
-  def _obj2soap(obj)
-    ret = nil
-    if obj.is_a?(SOAPStruct) or obj.is_a?(SOAPArray)
-      obj.replace do |ele|
-        Mapping._obj2soap(ele, self)
-      end
-      return obj
-    elsif obj.is_a?(SOAPBasetype)
-      return obj
-    end
-    begin 
-      ret = @map.obj2soap(obj) ||
-        @default_factory.obj2soap(nil, obj, nil, self)
-      return ret if ret
-    rescue MappingError
-    end
-    if @excn_handler_obj2soap
-      ret = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping._obj2soap(yield_obj, self)
-      }
-      return ret if ret
-    end
-    raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.")
-  end
-
-  # Might return nil as a mapping result.
-  def _soap2obj(node, klass = nil)
-    if node.extraattr.key?(RubyTypeName)
-      conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
-      return obj if conv
-    else
-      conv, obj = @map.soap2obj(node, klass)
-      return obj if conv
-      conv, obj = @default_factory.soap2obj(nil, node, nil, self)
-      return obj if conv
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping._soap2obj(yield_node, self)
-	  }
-      rescue Exception
-      end
-    end
-    raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.")
-  end
-
-  def addiv2obj(obj, attr)
-    return unless attr
-    vars = {}
-    attr.__getobj__.each do |name, value|
-      vars[name] = Mapping._soap2obj(value, self)
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  if RUBY_VERSION >= '1.8.0'
-    def addextend2obj(obj, attr)
-      return unless attr
-      attr.split(/ /).reverse_each do |mstr|
-	obj.extend(Mapping.module_from_name(mstr))
-      end
-    end
-  else
-    # (class < false; self; end).ancestors includes "TrueClass" under 1.6...
-    def addextend2obj(obj, attr)
-      return unless attr
-      attr.split(/ /).reverse_each do |mstr|
-	m = Mapping.module_from_name(mstr)
-	obj.extend(m)
-      end
-    end
-  end
-
-  def addextend2soap(node, obj)
-    return if obj.is_a?(Symbol) or obj.is_a?(Fixnum)
-    list = (class << obj; self; end).ancestors - obj.class.ancestors
-    unless list.empty?
-      node.extraattr[RubyExtendName] = list.collect { |c|
-	if c.name.empty?
-  	  raise TypeError.new("singleton can't be dumped #{ obj }")
-   	end
-	c.name
-      }.join(" ")
-    end
-  end
-
-end
-
-
-DefaultRegistry = Registry.new
-RubyOriginalRegistry = Registry.new(:allow_original_mapping => true)
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/rubytypeFactory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/rubytypeFactory.rb
deleted file mode 100644
index 61c21d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/rubytypeFactory.rb
+++ /dev/null
@@ -1,475 +0,0 @@
-# SOAP4R - Ruby type mapping factory.
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-module Mapping
-
-
-class RubytypeFactory < Factory
-  TYPE_STRING = XSD::QName.new(RubyTypeNamespace, 'String')
-  TYPE_TIME = XSD::QName.new(RubyTypeNamespace, 'Time')
-  TYPE_ARRAY = XSD::QName.new(RubyTypeNamespace, 'Array')
-  TYPE_REGEXP = XSD::QName.new(RubyTypeNamespace, 'Regexp')
-  TYPE_RANGE = XSD::QName.new(RubyTypeNamespace, 'Range')
-  TYPE_CLASS = XSD::QName.new(RubyTypeNamespace, 'Class')
-  TYPE_MODULE = XSD::QName.new(RubyTypeNamespace, 'Module')
-  TYPE_SYMBOL = XSD::QName.new(RubyTypeNamespace, 'Symbol')
-  TYPE_STRUCT = XSD::QName.new(RubyTypeNamespace, 'Struct')
-  TYPE_HASH = XSD::QName.new(RubyTypeNamespace, 'Map')
-
-  def initialize(config = {})
-    @config = config
-    @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
-      @config[:allow_untyped_struct] : true
-    @allow_original_mapping = @config.key?(:allow_original_mapping) ?
-      @config[:allow_original_mapping] : false
-    @string_factory = StringFactory_.new(true)
-    @basetype_factory = BasetypeFactory_.new(true)
-    @datetime_factory = DateTimeFactory_.new(true)
-    @array_factory = ArrayFactory_.new(true)
-    @hash_factory = HashFactory_.new(true)
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    param = nil
-    case obj
-    when ::String
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @string_factory.obj2soap(SOAPString, obj, info, map)
-      if obj.class != String
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Time
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @datetime_factory.obj2soap(SOAPDateTime, obj, info, map)
-      if obj.class != Time
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Array
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @array_factory.obj2soap(nil, obj, info, map)
-      if obj.class != Array
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::NilClass
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPNil, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::FalseClass, ::TrueClass
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPBoolean, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::Integer
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPInt, obj, info, map)
-      param ||= @basetype_factory.obj2soap(SOAPInteger, obj, info, map)
-      param ||= @basetype_factory.obj2soap(SOAPDecimal, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::Float
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPDouble, obj, info, map)
-      if obj.class != Float
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Hash
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.respond_to?(:default_proc) && obj.default_proc
-        raise TypeError.new("cannot dump hash with default proc")
-      end
-      param = SOAPStruct.new(TYPE_HASH)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Hash
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      obj.each do |key, value|
-        elem = SOAPStruct.new # Undefined type.
-        elem.add("key", Mapping._obj2soap(key, map))
-        elem.add("value", Mapping._obj2soap(value, map))
-        param.add("item", elem)
-      end
-      param.add('default', Mapping._obj2soap(obj.default, map))
-      addiv2soapattr(param, obj, map)
-    when ::Regexp
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_REGEXP)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Regexp
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      param.add('source', SOAPBase64.new(obj.source))
-      if obj.respond_to?('options')
-        # Regexp#options is from Ruby/1.7
-        options = obj.options
-      else
-        options = 0
-        obj.inspect.sub(/^.*\//, '').each_byte do |c|
-          options += case c
-            when ?i
-              1
-            when ?x
-              2
-            when ?m
-              4
-            when ?n
-              16
-            when ?e
-              32
-            when ?s
-              48
-            when ?u
-              64
-            end
-        end
-      end
-      param.add('options', SOAPInt.new(options))
-      addiv2soapattr(param, obj, map)
-    when ::Range
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_RANGE)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Range
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      param.add('begin', Mapping._obj2soap(obj.begin, map))
-      param.add('end', Mapping._obj2soap(obj.end, map))
-      param.add('exclude_end', SOAP::SOAPBoolean.new(obj.exclude_end?))
-      addiv2soapattr(param, obj, map)
-    when ::Class
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.to_s[0] == ?#
-        raise TypeError.new("can't dump anonymous class #{obj}")
-      end
-      param = SOAPStruct.new(TYPE_CLASS)
-      mark_marshalled_obj(obj, param)
-      param.add('name', SOAPString.new(obj.name))
-      addiv2soapattr(param, obj, map)
-    when ::Module
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.to_s[0] == ?#
-        raise TypeError.new("can't dump anonymous module #{obj}")
-      end
-      param = SOAPStruct.new(TYPE_MODULE)
-      mark_marshalled_obj(obj, param)
-      param.add('name', SOAPString.new(obj.name))
-      addiv2soapattr(param, obj, map)
-    when ::Symbol
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_SYMBOL)
-      mark_marshalled_obj(obj, param)
-      param.add('id', SOAPString.new(obj.id2name))
-      addiv2soapattr(param, obj, map)
-    when ::Struct
-      unless @allow_original_mapping
-        # treat it as an user defined class. [ruby-talk:104980]
-        #param = unknownobj2soap(soap_class, obj, info, map)
-        param = SOAPStruct.new(XSD::AnyTypeName)
-        mark_marshalled_obj(obj, param)
-        obj.members.each do |member|
-          param.add(Mapping.name2elename(member),
-            Mapping._obj2soap(obj[member], map))
-        end
-      else
-        param = SOAPStruct.new(TYPE_STRUCT)
-        mark_marshalled_obj(obj, param)
-        param.add('type', ele_type = SOAPString.new(obj.class.to_s))
-        ele_member = SOAPStruct.new
-        obj.members.each do |member|
-          ele_member.add(Mapping.name2elename(member),
-            Mapping._obj2soap(obj[member], map))
-        end
-        param.add('member', ele_member)
-        addiv2soapattr(param, obj, map)
-      end
-    when ::IO, ::Binding, ::Continuation, ::Data, ::Dir, ::File::Stat,
-        ::MatchData, Method, ::Proc, ::Thread, ::ThreadGroup
-        # from 1.8: Process::Status, UnboundMethod
-      return nil
-    when ::SOAP::Mapping::Object
-      param = SOAPStruct.new(XSD::AnyTypeName)
-      mark_marshalled_obj(obj, param)
-      obj.__xmlele.each do |key, value|
-        param.add(key.name, Mapping._obj2soap(value, map))
-      end
-      obj.__xmlattr.each do |key, value|
-        param.extraattr[key] = value
-      end
-    when ::Exception
-      typestr = Mapping.name2elename(obj.class.to_s)
-      param = SOAPStruct.new(XSD::QName.new(RubyTypeNamespace, typestr))
-      mark_marshalled_obj(obj, param)
-      param.add('message', Mapping._obj2soap(obj.message, map))
-      param.add('backtrace', Mapping._obj2soap(obj.backtrace, map))
-      addiv2soapattr(param, obj, map)
-    else
-      param = unknownobj2soap(soap_class, obj, info, map)
-    end
-    param
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    rubytype = node.extraattr[RubyTypeName]
-    if rubytype or node.type.namespace == RubyTypeNamespace
-      rubytype2obj(node, info, map, rubytype)
-    elsif node.type == XSD::AnyTypeName or node.type == XSD::AnySimpleTypeName
-      anytype2obj(node, info, map)
-    else
-      unknowntype2obj(node, info, map)
-    end
-  end
-
-private
-
-  def addiv2soapattr(node, obj, map)
-    return if obj.instance_variables.empty?
-    ivars = SOAPStruct.new    # Undefined type.
-    setiv2soap(ivars, obj, map)
-    node.extraattr[RubyIVarName] = ivars
-  end
-
-  def unknownobj2soap(soap_class, obj, info, map)
-    if obj.class.name.empty?
-      raise TypeError.new("can't dump anonymous class #{obj}")
-    end
-    singleton_class = class << obj; self; end
-    if !singleton_methods_true(obj).empty? or
-	!singleton_class.instance_variables.empty?
-      raise TypeError.new("singleton can't be dumped #{obj}")
-    end
-    if !(singleton_class.ancestors - obj.class.ancestors).empty?
-      typestr = Mapping.name2elename(obj.class.to_s)
-      type = XSD::QName.new(RubyTypeNamespace, typestr)
-    else
-      type = Mapping.class2element(obj.class)
-    end
-    param = SOAPStruct.new(type)
-    mark_marshalled_obj(obj, param)
-    setiv2soap(param, obj, map)
-    param
-  end
-
-  if RUBY_VERSION >= '1.8.0'
-    def singleton_methods_true(obj)
-      obj.singleton_methods(true)
-    end
-  else
-    def singleton_methods_true(obj)
-      obj.singleton_methods
-    end
-  end
-
-  def rubytype2obj(node, info, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : nil
-    obj = nil
-    case node
-    when SOAPString
-      return @string_factory.soap2obj(klass || String, node, info, map)
-    when SOAPDateTime
-      #return @datetime_factory.soap2obj(klass || Time, node, info, map)
-      klass ||= Time
-      t = node.to_time
-      arg = [t.year, t.month, t.mday, t.hour, t.min, t.sec, t.usec]
-      obj = t.gmt? ? klass.gm(*arg) : klass.local(*arg)
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    when SOAPArray
-      return @array_factory.soap2obj(klass || Array, node, info, map)
-    when SOAPNil, SOAPBoolean, SOAPInt, SOAPInteger, SOAPDecimal, SOAPDouble
-      return @basetype_factory.soap2obj(nil, node, info, map)
-    when SOAPStruct
-      return rubytypestruct2obj(node, info, map, rubytype)
-    else
-      raise
-    end
-  end
-
-  def rubytypestruct2obj(node, info, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : nil
-    obj = nil
-    case node.type
-    when TYPE_HASH
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Hash
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      node.each do |key, value|
-        next unless key == 'item'
-        obj[Mapping._soap2obj(value['key'], map)] =
-          Mapping._soap2obj(value['value'], map)
-      end
-      if node.key?('default')
-        obj.default = Mapping._soap2obj(node['default'], map)
-      end
-    when TYPE_REGEXP
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Regexp
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      source = node['source'].string
-      options = node['options'].data || 0
-      Regexp.instance_method(:initialize).bind(obj).call(source, options)
-    when TYPE_RANGE
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Range
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      first = Mapping._soap2obj(node['begin'], map)
-      last = Mapping._soap2obj(node['end'], map)
-      exclude_end = node['exclude_end'].data
-      Range.instance_method(:initialize).bind(obj).call(first, last, exclude_end)
-    when TYPE_CLASS
-      obj = Mapping.class_from_name(node['name'].data)
-    when TYPE_MODULE
-      obj = Mapping.class_from_name(node['name'].data)
-    when TYPE_SYMBOL
-      obj = node['id'].data.intern
-    when TYPE_STRUCT
-      typestr = Mapping.elename2name(node['type'].data)
-      klass = Mapping.class_from_name(typestr)
-      if klass.nil?
-        return false
-      end
-      unless klass <= ::Struct
-        return false
-      end
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      node['member'].each do |name, value|
-        obj[Mapping.elename2name(name)] = Mapping._soap2obj(value, map)
-      end
-    else
-      return unknowntype2obj(node, info, map)
-    end
-    return true, obj
-  end
-
-  def anytype2obj(node, info, map)
-    case node
-    when SOAPBasetype
-      return true, node.data
-    when SOAPStruct
-      klass = ::SOAP::Mapping::Object
-      obj = klass.new
-      mark_unmarshalled_obj(node, obj)
-      node.each do |name, value|
-        obj.__add_xmlele_value(XSD::QName.new(nil, name),
-          Mapping._soap2obj(value, map))
-      end
-      unless node.extraattr.empty?
-        obj.instance_variable_set('@__xmlattr', node.extraattr)
-      end
-      return true, obj
-    else
-      return false
-    end
-  end
-
-  def unknowntype2obj(node, info, map)
-    case node
-    when SOAPBasetype
-      return true, node.data
-    when SOAPArray
-      return @array_factory.soap2obj(Array, node, info, map)
-    when SOAPStruct
-      obj = unknownstruct2obj(node, info, map)
-      return true, obj if obj
-      if !@allow_untyped_struct
-        return false
-      end
-      return anytype2obj(node, info, map)
-    else
-      # Basetype which is not defined...
-      return false
-    end
-  end
-
-  def unknownstruct2obj(node, info, map)
-    unless node.type.name
-      return nil
-    end
-    typestr = Mapping.elename2name(node.type.name)
-    klass = Mapping.class_from_name(typestr)
-    if klass.nil? and @allow_untyped_struct
-      klass = Mapping.class_from_name(typestr, true)    # lenient
-    end
-    if klass.nil?
-      return nil
-    end
-    if klass <= ::Exception
-      return exception2obj(klass, node, map)
-    end
-    klass_type = Mapping.class2qname(klass)
-    return nil unless node.type.match(klass_type)
-    obj = nil
-    begin
-      obj = Mapping.create_empty_object(klass)
-    rescue
-      # type name "data" tries Data.new which raises TypeError
-      nil
-    end
-    mark_unmarshalled_obj(node, obj)
-    setiv2obj(obj, node, map)
-    obj
-  end
-
-  def exception2obj(klass, node, map)
-    message = Mapping._soap2obj(node['message'], map)
-    backtrace = Mapping._soap2obj(node['backtrace'], map)
-    obj = Mapping.create_empty_object(klass)
-    obj = obj.exception(message)
-    mark_unmarshalled_obj(node, obj)
-    obj.set_backtrace(backtrace)
-    obj
-  end
-
-  # Only creates empty array.  Do String#replace it with real string.
-  def array2obj(node, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : Array
-    obj = Mapping.create_empty_object(klass)
-    mark_unmarshalled_obj(node, obj)
-    obj
-  end
-
-  # Only creates empty string.  Do String#replace it with real string.
-  def string2obj(node, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : String
-    obj = Mapping.create_empty_object(klass)
-    mark_unmarshalled_obj(node, obj)
-    obj
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/typeMap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/typeMap.rb
deleted file mode 100644
index 34db19a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/typeMap.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# SOAP4R - Base type mapping definition
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-TypeMap = {
-  XSD::XSDAnySimpleType::Type => SOAPAnySimpleType,
-  XSD::XSDString::Type => SOAPString,
-  XSD::XSDBoolean::Type => SOAPBoolean,
-  XSD::XSDDecimal::Type => SOAPDecimal,
-  XSD::XSDFloat::Type => SOAPFloat,
-  XSD::XSDDouble::Type => SOAPDouble,
-  XSD::XSDDuration::Type => SOAPDuration,
-  XSD::XSDDateTime::Type => SOAPDateTime,
-  XSD::XSDTime::Type => SOAPTime,
-  XSD::XSDDate::Type => SOAPDate,
-  XSD::XSDGYearMonth::Type => SOAPGYearMonth,
-  XSD::XSDGYear::Type => SOAPGYear,
-  XSD::XSDGMonthDay::Type => SOAPGMonthDay,
-  XSD::XSDGDay::Type => SOAPGDay,
-  XSD::XSDGMonth::Type => SOAPGMonth,
-  XSD::XSDHexBinary::Type => SOAPHexBinary,
-  XSD::XSDBase64Binary::Type => SOAPBase64,
-  XSD::XSDAnyURI::Type => SOAPAnyURI,
-  XSD::XSDQName::Type => SOAPQName,
-  XSD::XSDInteger::Type => SOAPInteger,
-  XSD::XSDNonPositiveInteger::Type => SOAPNonPositiveInteger,
-  XSD::XSDNegativeInteger::Type => SOAPNegativeInteger,
-  XSD::XSDLong::Type => SOAPLong,
-  XSD::XSDInt::Type => SOAPInt,
-  XSD::XSDShort::Type => SOAPShort,
-  XSD::XSDByte::Type => SOAPByte,
-  XSD::XSDNonNegativeInteger::Type => SOAPNonNegativeInteger,
-  XSD::XSDUnsignedLong::Type => SOAPUnsignedLong,
-  XSD::XSDUnsignedInt::Type => SOAPUnsignedInt,
-  XSD::XSDUnsignedShort::Type => SOAPUnsignedShort,
-  XSD::XSDUnsignedByte::Type => SOAPUnsignedByte,
-  XSD::XSDPositiveInteger::Type => SOAPPositiveInteger,
-
-  SOAP::SOAPBase64::Type => SOAPBase64,
-}
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlencodedregistry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlencodedregistry.rb
deleted file mode 100644
index 4efb601..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlencodedregistry.rb
+++ /dev/null
@@ -1,280 +0,0 @@
-# SOAP4R - WSDL encoded mapping registry.
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/namedelements'
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-
-
-module SOAP
-module Mapping
-
-
-class WSDLEncodedRegistry < Registry
-  include TraverseSupport
-
-  attr_reader :definedelements
-  attr_reader :definedtypes
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(definedtypes = XSD::NamedElements::Empty)
-    @definedtypes = definedtypes
-    # @definedelements = definedelements  needed?
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-    # For mapping AnyType element.
-    @rubytype_factory = RubytypeFactory.new(
-      :allow_untyped_struct => true,
-      :allow_original_mapping => true
-    )
-    @schema_element_cache = {}
-  end
-
-  def obj2soap(obj, qname = nil)
-    soap_obj = nil
-    if type = @definedtypes[qname]
-      soap_obj = obj2typesoap(obj, type)
-    else
-      soap_obj = any2soap(obj, qname)
-    end
-    return soap_obj if soap_obj
-    if @excn_handler_obj2soap
-      soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping._obj2soap(yield_obj, self)
-      }
-      return soap_obj if soap_obj
-    end
-    if qname
-      raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
-    else
-      raise MappingError.new("cannot map #{obj.class.name} to SOAP/OM")
-    end
-  end
-
-  # map anything for now: must refer WSDL while mapping.  [ToDo]
-  def soap2obj(node, obj_class = nil)
-    begin
-      return any2obj(node, obj_class)
-    rescue MappingError
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping._soap2obj(yield_node, self)
-	  }
-      rescue Exception
-      end
-    end
-    raise MappingError.new("cannot map #{node.type.name} to Ruby object")
-  end
-
-private
-
-  def any2soap(obj, qname)
-    if obj.nil?
-      SOAPNil.new
-    elsif qname.nil? or qname == XSD::AnyTypeName
-      @rubytype_factory.obj2soap(nil, obj, nil, self)
-    elsif obj.is_a?(XSD::NSDBase)
-      soap2soap(obj, qname)
-    elsif (type = TypeMap[qname])
-      base2soap(obj, type)
-    else
-      nil
-    end
-  end
-
-  def soap2soap(obj, type_qname)
-    if obj.is_a?(SOAPBasetype)
-      obj
-    elsif obj.is_a?(SOAPStruct) && (type = @definedtypes[type_qname])
-      soap_obj = obj
-      mark_marshalled_obj(obj, soap_obj)
-      elements2soap(obj, soap_obj, type.content.elements)
-      soap_obj
-    elsif obj.is_a?(SOAPArray) && (type = @definedtypes[type_qname])
-      soap_obj = obj
-      contenttype = type.child_type
-      mark_marshalled_obj(obj, soap_obj)
-      obj.replace do |ele|
-	Mapping._obj2soap(ele, self, contenttype)
-      end
-      soap_obj
-    else
-      nil
-    end
-  end
-
-  def obj2typesoap(obj, type)
-    if type.is_a?(::WSDL::XMLSchema::SimpleType)
-      simpleobj2soap(obj, type)
-    else
-      complexobj2soap(obj, type)
-    end
-  end
-
-  def simpleobj2soap(obj, type)
-    type.check_lexical_format(obj)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    o = base2soap(obj, TypeMap[type.base])
-    o
-  end
-
-  def complexobj2soap(obj, type)
-    case type.compoundtype
-    when :TYPE_STRUCT
-      struct2soap(obj, type.name, type)
-    when :TYPE_ARRAY
-      array2soap(obj, type.name, type)
-    when :TYPE_MAP
-      map2soap(obj, type.name, type)
-    when :TYPE_SIMPLE
-      simpleobj2soap(obj, type.simplecontent)
-    when :TYPE_EMPTY
-      raise MappingError.new("should be empty") unless obj.nil?
-      SOAPNil.new
-    else
-      raise MappingError.new("unknown compound type: #{type.compoundtype}")
-    end
-  end
-
-  def base2soap(obj, type)
-    soap_obj = nil
-    if type <= XSD::XSDString
-      str = XSD::Charset.encoding_conv(obj.to_s,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = type.new(str)
-      mark_marshalled_obj(obj, soap_obj)
-    else
-      soap_obj = type.new(obj)
-    end
-    soap_obj
-  end
-
-  def struct2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    soap_obj = SOAPStruct.new(type_qname)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      elements2soap(obj, soap_obj, type.content.elements)
-    end
-    soap_obj
-  end
-
-  def array2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    arytype = type.child_type
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      obj.each do |item|
-        soap_obj.add(Mapping._obj2soap(item, self, arytype))
-      end
-    end
-    soap_obj
-  end
-
-  MapKeyName = XSD::QName.new(nil, "key")
-  MapValueName = XSD::QName.new(nil, "value")
-  def map2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    keytype = type.child_type(MapKeyName) || XSD::AnyTypeName
-    valuetype = type.child_type(MapValueName) || XSD::AnyTypeName
-    soap_obj = SOAPStruct.new(MapQName)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      obj.each do |key, value|
-        elem = SOAPStruct.new
-        elem.add("key", Mapping._obj2soap(key, self, keytype))
-        elem.add("value", Mapping._obj2soap(value, self, valuetype))
-        # ApacheAxis allows only 'item' here.
-        soap_obj.add("item", elem)
-      end
-    end
-    soap_obj
-  end
-
-  def elements2soap(obj, soap_obj, elements)
-    elements.each do |element|
-      name = element.name.name
-      child_obj = Mapping.get_attribute(obj, name)
-      soap_obj.add(name,
-        Mapping._obj2soap(child_obj, self, element.type || element.name))
-    end
-  end
-
-  def any2obj(node, obj_class)
-    unless obj_class
-      typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name)
-      obj_class = Mapping.class_from_name(typestr)
-    end
-    if obj_class and obj_class.class_variables.include?('@@schema_element')
-      soap2stubobj(node, obj_class)
-    else
-      Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class)
-    end
-  end
-
-  def soap2stubobj(node, obj_class)
-    obj = Mapping.create_empty_object(obj_class)
-    unless node.is_a?(SOAPNil)
-      add_elements2stubobj(node, obj)
-    end
-    obj
-  end
-
-  def add_elements2stubobj(node, obj)
-    elements, as_array = schema_element_definition(obj.class)
-    vars = {}
-    node.each do |name, value|
-      item = elements.find { |k, v| k.name == name }
-      if item
-        elename, class_name = item
-        if klass = Mapping.class_from_name(class_name)
-          # klass must be a SOAPBasetype or a class
-          if klass.ancestors.include?(::SOAP::SOAPBasetype)
-            if value.respond_to?(:data)
-              child = klass.new(value.data).data
-            else
-              child = klass.new(nil).data
-            end
-          else
-            child = Mapping._soap2obj(value, self, klass)
-          end
-        elsif klass = Mapping.module_from_name(class_name)
-          # simpletype
-          if value.respond_to?(:data)
-            child = value.data
-          else
-            raise MappingError.new(
-              "cannot map to a module value: #{class_name}")
-          end
-        else
-          raise MappingError.new("unknown class: #{class_name}")
-        end
-      else      # untyped element is treated as anyType.
-        child = Mapping._soap2obj(value, self)
-      end
-      vars[name] = child
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  # it caches @@schema_element.  this means that @@schema_element must not be
-  # changed while a lifetime of a WSDLLiteralRegistry.
-  def schema_element_definition(klass)
-    @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlliteralregistry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlliteralregistry.rb
deleted file mode 100644
index 7bb8e12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mapping/wsdlliteralregistry.rb
+++ /dev/null
@@ -1,418 +0,0 @@
-# SOAP4R - WSDL literal mapping registry.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-require 'xsd/codegen/gensupport'
-require 'xsd/namedelements'
-
-
-module SOAP
-module Mapping
-
-
-class WSDLLiteralRegistry < Registry
-  attr_reader :definedelements
-  attr_reader :definedtypes
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(definedtypes = XSD::NamedElements::Empty,
-      definedelements = XSD::NamedElements::Empty)
-    @definedtypes = definedtypes
-    @definedelements = definedelements
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-    @schema_element_cache = {}
-    @schema_attribute_cache = {}
-  end
-
-  def obj2soap(obj, qname)
-    soap_obj = nil
-    if ele = @definedelements[qname]
-      soap_obj = obj2elesoap(obj, ele)
-    elsif type = @definedtypes[qname]
-      soap_obj = obj2typesoap(obj, type, true)
-    else
-      soap_obj = any2soap(obj, qname)
-    end
-    return soap_obj if soap_obj
-    if @excn_handler_obj2soap
-      soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping.obj2soap(yield_obj, nil, nil, MAPPING_OPT)
-      }
-      return soap_obj if soap_obj
-    end
-    raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
-  end
-
-  # node should be a SOAPElement
-  def soap2obj(node, obj_class = nil)
-    # obj_class is given when rpc/literal service.  but ignored for now.
-    begin
-      return any2obj(node)
-    rescue MappingError
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping.soap2obj(yield_node, nil, nil, MAPPING_OPT)
-	  }
-      rescue Exception
-      end
-    end
-    if node.respond_to?(:type)
-      raise MappingError.new("cannot map #{node.type.name} to Ruby object")
-    else
-      raise MappingError.new("cannot map #{node.elename.name} to Ruby object")
-    end
-  end
-
-private
-
-  MAPPING_OPT = { :no_reference => true }
-
-  def obj2elesoap(obj, ele)
-    o = nil
-    qualified = (ele.elementform == 'qualified')
-    if ele.type
-      if type = @definedtypes[ele.type]
-        o = obj2typesoap(obj, type, qualified)
-      elsif type = TypeMap[ele.type]
-        o = base2soap(obj, type)
-      else
-        raise MappingError.new("cannot find type #{ele.type}")
-      end
-    elsif ele.local_complextype
-      o = obj2typesoap(obj, ele.local_complextype, qualified)
-      add_attributes2soap(obj, o)
-    elsif ele.local_simpletype
-      o = obj2typesoap(obj, ele.local_simpletype, qualified)
-    else
-      raise MappingError.new('illegal schema?')
-    end
-    o.elename = ele.name
-    o
-  end
-
-  def obj2typesoap(obj, type, qualified)
-    if type.is_a?(::WSDL::XMLSchema::SimpleType)
-      simpleobj2soap(obj, type)
-    else
-      complexobj2soap(obj, type, qualified)
-    end
-  end
-
-  def simpleobj2soap(obj, type)
-    type.check_lexical_format(obj)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    o = base2soap(obj, TypeMap[type.base])
-    o
-  end
-
-  def complexobj2soap(obj, type, qualified)
-    o = SOAPElement.new(type.name)
-    o.qualified = qualified
-    type.each_element do |child_ele|
-      child = Mapping.get_attribute(obj, child_ele.name.name)
-      if child.nil?
-        if child_ele.nillable
-          # ToDo: test
-          # add empty element
-          child_soap = obj2elesoap(nil, child_ele)
-          o.add(child_soap)
-        elsif Integer(child_ele.minoccurs) == 0
-          # nothing to do
-        else
-          raise MappingError.new("nil not allowed: #{child_ele.name.name}")
-        end
-      elsif child_ele.map_as_array?
-        child.each do |item|
-          child_soap = obj2elesoap(item, child_ele)
-          o.add(child_soap)
-        end
-      else
-        child_soap = obj2elesoap(child, child_ele)
-        o.add(child_soap)
-      end
-    end
-    o
-  end
-
-  def any2soap(obj, qname)
-    if obj.is_a?(SOAPElement)
-      obj
-    elsif obj.class.class_variables.include?('@@schema_element')
-      stubobj2soap(obj, qname)
-    elsif obj.is_a?(SOAP::Mapping::Object)
-      mappingobj2soap(obj, qname)
-    elsif obj.is_a?(Hash)
-      ele = SOAPElement.from_obj(obj)
-      ele.elename = qname
-      ele
-    else
-      # expected to be a basetype or an anyType.
-      # SOAPStruct, etc. is used instead of SOAPElement.
-      begin
-        ele = Mapping.obj2soap(obj, nil, nil, MAPPING_OPT)
-        ele.elename = qname
-        ele
-      rescue MappingError
-        ele = SOAPElement.new(qname, obj.to_s)
-      end
-      if obj.respond_to?(:__xmlattr)
-        obj.__xmlattr.each do |key, value|
-          ele.extraattr[key] = value
-        end
-      end
-      ele
-    end
-  end
-
-  def stubobj2soap(obj, qname)
-    ele = SOAPElement.new(qname)
-    ele.qualified =
-      (obj.class.class_variables.include?('@@schema_qualified') and
-      obj.class.class_eval('@@schema_qualified'))
-    add_elements2soap(obj, ele)
-    add_attributes2soap(obj, ele)
-    ele
-  end
-
-  def mappingobj2soap(obj, qname)
-    ele = SOAPElement.new(qname)
-    obj.__xmlele.each do |key, value|
-      if value.is_a?(::Array)
-        value.each do |item|
-          ele.add(obj2soap(item, key))
-        end
-      else
-        ele.add(obj2soap(value, key))
-      end
-    end
-    obj.__xmlattr.each do |key, value|
-      ele.extraattr[key] = value
-    end
-    ele
-  end
-
-  def add_elements2soap(obj, ele)
-    elements, as_array = schema_element_definition(obj.class)
-    if elements
-      elements.each do |elename, type|
-        if child = Mapping.get_attribute(obj, elename.name)
-          if as_array.include?(elename.name)
-            child.each do |item|
-              ele.add(obj2soap(item, elename))
-            end
-          else
-            ele.add(obj2soap(child, elename))
-          end
-        elsif obj.is_a?(::Array) and as_array.include?(elename.name)
-          obj.each do |item|
-            ele.add(obj2soap(item, elename))
-          end
-        end
-      end
-    end
-  end
-  
-  def add_attributes2soap(obj, ele)
-    attributes = schema_attribute_definition(obj.class)
-    if attributes
-      attributes.each do |qname, param|
-        attr = obj.__send__('xmlattr_' +
-          XSD::CodeGen::GenSupport.safevarname(qname.name))
-        ele.extraattr[qname] = attr
-      end
-    end
-  end
-
-  def base2soap(obj, type)
-    soap_obj = nil
-    if type <= XSD::XSDString
-      str = XSD::Charset.encoding_conv(obj.to_s,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = type.new(str)
-    else
-      soap_obj = type.new(obj)
-    end
-    soap_obj
-  end
-
-  def anytype2obj(node)
-    if node.is_a?(::SOAP::SOAPBasetype)
-      return node.data
-    end
-    klass = ::SOAP::Mapping::Object
-    obj = klass.new
-    obj
-  end
-
-  def any2obj(node, obj_class = nil)
-    unless obj_class
-      typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name)
-      obj_class = Mapping.class_from_name(typestr)
-    end
-    if obj_class and obj_class.class_variables.include?('@@schema_element')
-      soapele2stubobj(node, obj_class)
-    elsif node.is_a?(SOAPElement) or node.is_a?(SOAPStruct)
-        # SOAPArray for literal?
-      soapele2plainobj(node)
-    else
-      obj = Mapping.soap2obj(node, nil, obj_class, MAPPING_OPT)
-      add_attributes2plainobj(node, obj)
-      obj
-    end
-  end
-
-  def soapele2stubobj(node, obj_class)
-    obj = Mapping.create_empty_object(obj_class)
-    add_elements2stubobj(node, obj)
-    add_attributes2stubobj(node, obj)
-    obj
-  end
-
-  def soapele2plainobj(node)
-    obj = anytype2obj(node)
-    add_elements2plainobj(node, obj)
-    add_attributes2plainobj(node, obj)
-    obj
-  end
-
-  def add_elements2stubobj(node, obj)
-    elements, as_array = schema_element_definition(obj.class)
-    vars = {}
-    node.each do |name, value|
-      item = elements.find { |k, v| k.name == name }
-      if item
-        elename, class_name = item
-        if klass = Mapping.class_from_name(class_name)
-          # klass must be a SOAPBasetype or a class
-          if klass.ancestors.include?(::SOAP::SOAPBasetype)
-            if value.respond_to?(:data)
-              child = klass.new(value.data).data
-            else
-              child = klass.new(nil).data
-            end
-          else
-            child = any2obj(value, klass)
-          end
-        elsif klass = Mapping.module_from_name(class_name)
-          # simpletype
-          if value.respond_to?(:data)
-            child = value.data
-          else
-            raise MappingError.new(
-              "cannot map to a module value: #{class_name}")
-          end
-        else
-          raise MappingError.new("unknown class/module: #{class_name}")
-        end
-      else      # untyped element is treated as anyType.
-        child = any2obj(value)
-      end
-      if as_array.include?(elename.name)
-        (vars[name] ||= []) << child
-      else
-        vars[name] = child
-      end
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  def add_attributes2stubobj(node, obj)
-    if attributes = schema_attribute_definition(obj.class)
-      define_xmlattr(obj)
-      attributes.each do |qname, class_name|
-        attr = node.extraattr[qname]
-        next if attr.nil? or attr.empty?
-        klass = Mapping.class_from_name(class_name)
-        if klass.ancestors.include?(::SOAP::SOAPBasetype)
-          child = klass.new(attr).data
-        else
-          child = attr
-        end
-        obj.__xmlattr[qname] = child
-        define_xmlattr_accessor(obj, qname)
-      end
-    end
-  end
-
-  def add_elements2plainobj(node, obj)
-    node.each do |name, value|
-      obj.__add_xmlele_value(value.elename, any2obj(value))
-    end
-  end
-
-  def add_attributes2plainobj(node, obj)
-    return if node.extraattr.empty?
-    define_xmlattr(obj)
-    node.extraattr.each do |qname, value|
-      obj.__xmlattr[qname] = value
-      define_xmlattr_accessor(obj, qname)
-    end
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def define_xmlattr_accessor(obj, qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      Mapping.define_attr_accessor(obj, 'xmlattr_' + name,
-        proc { @__xmlattr[qname] },
-        proc { |value| @__xmlattr[qname] = value })
-    end
-  else
-    def define_xmlattr_accessor(obj, qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      obj.instance_eval <<-EOS
-        def #{name}
-          @__xmlattr[#{qname.dump}]
-        end
-
-        def #{name}=(value)
-          @__xmlattr[#{qname.dump}] = value
-        end
-      EOS
-    end
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def define_xmlattr(obj)
-      obj.instance_variable_set('@__xmlattr', {})
-      unless obj.respond_to?(:__xmlattr)
-        Mapping.define_attr_accessor(obj, :__xmlattr, proc { @__xmlattr })
-      end
-    end
-  else
-    def define_xmlattr(obj)
-      obj.instance_variable_set('@__xmlattr', {})
-      unless obj.respond_to?(:__xmlattr)
-        obj.instance_eval <<-EOS
-          def __xmlattr
-            @__xmlattr
-          end
-        EOS
-      end
-    end
-  end
-
-  # it caches @@schema_element.  this means that @@schema_element must not be
-  # changed while a lifetime of a WSDLLiteralRegistry.
-  def schema_element_definition(klass)
-    @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass)
-  end
-
-  def schema_attribute_definition(klass)
-    @schema_attribute_cache[klass] ||= Mapping.schema_attribute_definition(klass)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/marshal.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/marshal.rb
deleted file mode 100644
index 1c3d5b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/marshal.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOAP4R - Marshalling/Unmarshalling Ruby's object using SOAP Encoding.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require "soap/mapping"
-require "soap/processor"
-
-
-module SOAP
-
-
-module Marshal
-  # Trying xsd:dateTime data to be recovered as aTime.
-  MarshalMappingRegistry = Mapping::Registry.new(
-    :allow_original_mapping => true)
-  MarshalMappingRegistry.add(
-    Time,
-    ::SOAP::SOAPDateTime,
-    ::SOAP::Mapping::Registry::DateTimeFactory
-  )
-
-  class << self
-  public
-    def dump(obj, io = nil)
-      marshal(obj, MarshalMappingRegistry, io)
-    end
-
-    def load(stream)
-      unmarshal(stream, MarshalMappingRegistry)
-    end
-
-    def marshal(obj, mapping_registry = MarshalMappingRegistry, io = nil)
-      elename = Mapping.name2elename(obj.class.to_s)
-      soap_obj = Mapping.obj2soap(obj, mapping_registry)
-      body = SOAPBody.new
-      body.add(elename, soap_obj)
-      env = SOAPEnvelope.new(nil, body)
-      SOAP::Processor.marshal(env, {}, io)
-    end
-
-    def unmarshal(stream, mapping_registry = MarshalMappingRegistry)
-      env = SOAP::Processor.unmarshal(stream)
-      if env.nil?
-	raise ArgumentError.new("Illegal SOAP marshal format.")
-      end
-      Mapping.soap2obj(env.body.root_node, mapping_registry)
-    end
-  end
-end
-
-
-end
-
-
-SOAPMarshal = SOAP::Marshal
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mimemessage.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mimemessage.rb
deleted file mode 100644
index acb4322..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/mimemessage.rb
+++ /dev/null
@@ -1,240 +0,0 @@
-# SOAP4R - MIME Message implementation.
-# Copyright (C) 2002  Jamie Herre.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/attachment'
-
-
-module SOAP
-
-
-# Classes for MIME message handling.  Should be put somewhere else!
-# Tried using the 'tmail' module but found that I needed something
-# lighter in weight.
-
-
-class MIMEMessage
-  class MIMEMessageError < StandardError; end
-
-  MultipartContentType = 'multipart/\w+'
-
-  class Header
-    attr_accessor :str, :key, :root
-
-    def initialize
-      @attrs = {}
-    end
-
-    def [](key)
-      @attrs[key]
-    end
-
-    def []=(key, value)
-      @attrs[key] = value
-    end
-
-    def to_s
-      @key + ": " + @str
-    end
-  end
-
-  class Headers < Hash
-    def self.parse(str)
-      new.parse(str)
-    end
-
-    def parse(str)
-      header_cache = nil
-      str.each do |line|
-	case line
-	when /^\A[^\: \t]+:\s*.+$/
-	  parse_line(header_cache) if header_cache
-	  header_cache = line.sub(/\r?\n\z/, '')
-	when /^\A\s+(.*)$/
-	  # a continuous line at the beginning line crashes here.
-	  header_cache << line
-	else
-	  raise RuntimeError.new("unexpected header: #{line.inspect}")
-	end
-      end
-      parse_line(header_cache) if header_cache
-      self
-    end
-
-    def parse_line(line)
-      if /^\A([^\: \t]+):\s*(.+)\z/ =~ line
-    	header = parse_rhs($2.strip)
-	header.key = $1.strip
-	self[header.key.downcase] = header
-      else
-	raise RuntimeError.new("unexpected header line: #{line.inspect}")
-      end
-    end
-
-    def parse_rhs(str)
-      a = str.split(/;+\s+/)
-      header = Header.new
-      header.str = str
-      header.root = a.shift
-      a.each do |pair|
-	if pair =~ /(\w+)\s*=\s*"?([^"]+)"?/
-	  header[$1.downcase] = $2
-	else
-	  raise RuntimeError.new("unexpected header component: #{pair.inspect}")
-	end
-      end
-      header
-    end
-
-    def add(key, value)
-      if key != nil and value != nil
-	header = parse_rhs(value)
-	header.key = key
-	self[key.downcase] = header
-      end
-    end
-
-    def to_s
-      self.values.collect { |hdr|
-	hdr.to_s
-      }.join("\r\n")
-    end
-  end
-
-  class Part
-    attr_accessor :headers, :body
-
-    def initialize
-      @headers = Headers.new
-      @headers.add("Content-Transfer-Encoding", "8bit")
-      @body = nil
-      @contentid = nil
-    end
-
-    def self.parse(str)
-      new.parse(str)
-    end
-
-    def parse(str)
-      headers, body = str.split(/\r\n\r\n/s)
-      if headers != nil and body != nil
-	@headers = Headers.parse(headers)
-	@body = body.sub(/\r\n\z/, '')
-      else
-	raise RuntimeError.new("unexpected part: #{str.inspect}")
-      end
-      self
-    end
-
-    def contentid
-      if @contentid == nil and @headers.key?('content-id')
-	@contentid = @headers['content-id'].str
-	@contentid = $1 if @contentid =~ /^<(.+)>$/
-      end
-      @contentid
-    end
-
-    alias content body
-
-    def to_s
-      @headers.to_s + "\r\n\r\n" + @body
-    end
-  end
-
-  def initialize
-    @parts = []
-    @headers = Headers.new
-    @root = nil
-  end
-
-  def self.parse(head, str)
-    new.parse(head, str)
-  end
-
-  attr_reader :parts, :headers
-
-  def close
-    @headers.add(
-      "Content-Type",
-      "multipart/related; type=\"text/xml\"; boundary=\"#{boundary}\"; start=\"#{@parts[0].contentid}\""
-    )
-  end
-
-  def parse(head, str)
-    @headers = Headers.parse(head + "\r\n" + "From: jfh\r\n")
-    boundary = @headers['content-type']['boundary']
-    if boundary != nil
-      parts = str.split(/--#{Regexp.quote(boundary)}\s*(?:\r\n|--\r\n)/)
-      part = parts.shift	# preamble must be ignored.
-      @parts = parts.collect { |part| Part.parse(part) }
-    else
-      @parts = [Part.parse(str)]
-    end
-    if @parts.length < 1
-      raise MIMEMessageError.new("This message contains no valid parts!")
-    end
-    self
-  end
-
-  def root
-    if @root == nil
-      start = @headers['content-type']['start']
-      @root = (start && @parts.find { |prt| prt.contentid == start }) ||
-	@parts[0]
-    end
-    @root
-  end
-
-  def boundary
-    if @boundary == nil
-      @boundary = "----=Part_" + __id__.to_s + rand.to_s
-    end
-    @boundary
-  end
-
-  def add_part(content)
-    part = Part.new
-    part.headers.add("Content-Type",
-      "text/xml; charset=" + XSD::Charset.xml_encoding_label)
-    part.headers.add("Content-ID", Attachment.contentid(part))
-    part.body = content
-    @parts.unshift(part)
-  end
-
-  def add_attachment(attach)
-    part = Part.new
-    part.headers.add("Content-Type", attach.contenttype)
-    part.headers.add("Content-ID", attach.mime_contentid)
-    part.body = attach.content
-    @parts.unshift(part)
-  end
-
-  def has_parts?
-    (@parts.length > 0)
-  end
-
-  def headers_str
-    @headers.to_s
-  end
-
-  def content_str
-    str = ''
-    @parts.each do |prt|
-      str << "--" + boundary + "\r\n"
-      str << prt.to_s + "\r\n"
-    end
-    str << '--' + boundary + "--\r\n"
-    str
-  end
-
-  def to_s
-    str = headers_str + "\r\n\r\n" + conent_str
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/netHttpClient.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/netHttpClient.rb
deleted file mode 100644
index 10d68e2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/netHttpClient.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-# SOAP4R - net/http wrapper
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'net/http'
-
-
-module SOAP
-
-
-class NetHttpClient
-
-  SSLEnabled = begin
-      require 'net/https'
-      true
-    rescue LoadError
-      false
-    end
-
-  attr_reader :proxy
-  attr_accessor :no_proxy
-  attr_accessor :debug_dev
-  attr_accessor :ssl_config		# ignored for now.
-  attr_accessor :protocol_version	# ignored for now.
-  attr_accessor :connect_timeout
-  attr_accessor :send_timeout           # ignored for now.
-  attr_accessor :receive_timeout
-
-  def initialize(proxy = nil, agent = nil)
-    @proxy = proxy ? URI.parse(proxy) : nil
-    @agent = agent
-    @debug_dev = nil
-    @session_manager = SessionManager.new
-    @no_proxy = @ssl_config = @protocol_version = nil
-    @connect_timeout = @send_timeout = @receive_timeout = nil
-  end
-
-  def test_loopback_response
-    raise NotImplementedError.new("not supported for now")
-  end
-  
-  def proxy=(proxy)
-    if proxy.nil?
-      @proxy = nil
-    else
-      if proxy.is_a?(URI)
-        @proxy = proxy
-      else
-        @proxy = URI.parse(proxy)
-      end
-      if @proxy.scheme == nil or @proxy.scheme.downcase != 'http' or
-	  @proxy.host == nil or @proxy.port == nil
-	raise ArgumentError.new("unsupported proxy `#{proxy}'")
-      end
-    end
-    reset_all
-    @proxy
-  end
-
-  def set_basic_auth(uri, user_id, passwd)
-    # net/http does not handle url.
-    @basic_auth = [user_id, passwd]
-    raise NotImplementedError.new("basic_auth is not supported under soap4r + net/http.")
-  end
-
-  def set_cookie_store(filename)
-    raise NotImplementedError.new
-  end
-
-  def save_cookie_store(filename)
-    raise NotImplementedError.new
-  end
-
-  def reset(url)
-    # no persistent connection.  ignored.
-  end
-
-  def reset_all
-    # no persistent connection.  ignored.
-  end
-
-  def post(url, req_body, header = {})
-    unless url.is_a?(URI)
-      url = URI.parse(url)
-    end
-    extra = header.dup
-    extra['User-Agent'] = @agent if @agent
-    res = start(url) { |http|
-      http.post(url.request_uri, req_body, extra)
-    }
-    Response.new(res)
-  end
-
-  def get_content(url, header = {})
-    unless url.is_a?(URI)
-      url = URI.parse(url)
-    end
-    extra = header.dup
-    extra['User-Agent'] = @agent if @agent
-    res = start(url) { |http|
-	http.get(url.request_uri, extra)
-      }
-    res.body
-  end
-
-private
-
-  def start(url)
-    http = create_connection(url)
-    response = nil
-    http.start { |worker|
-      response = yield(worker)
-      worker.finish
-    }
-    @debug_dev << response.body if @debug_dev
-    response
-  end
-
-  def create_connection(url)
-    proxy_host = proxy_port = nil
-    unless no_proxy?(url)
-      proxy_host = @proxy.host
-      proxy_port = @proxy.port
-    end
-    http = Net::HTTP::Proxy(proxy_host, proxy_port).new(url.host, url.port)
-    if http.respond_to?(:set_debug_output)
-      http.set_debug_output(@debug_dev)
-    end
-    http.open_timeout = @connect_timeout if @connect_timeout
-    http.read_timeout = @receive_timeout if @receive_timeout
-    case url
-    when URI::HTTPS
-      if SSLEnabled
-	http.use_ssl = true
-      else
-	raise RuntimeError.new("Cannot connect to #{url} (OpenSSL is not installed.)")
-      end
-    when URI::HTTP
-      # OK
-    else
-      raise RuntimeError.new("Cannot connect to #{url} (Not HTTP.)")
-    end
-    http
-  end
-
-  NO_PROXY_HOSTS = ['localhost']
-
-  def no_proxy?(uri)
-    if !@proxy or NO_PROXY_HOSTS.include?(uri.host)
-      return true
-    end
-    if @no_proxy
-      @no_proxy.scan(/([^:,]*)(?::(\d+))?/) do |host, port|
-  	if /(\A|\.)#{Regexp.quote(host)}\z/i =~ uri.host &&
-	    (!port || uri.port == port.to_i)
-	  return true
-	end
-      end
-    else
-      false
-    end
-  end
-
-  class SessionManager
-    attr_accessor :connect_timeout
-    attr_accessor :send_timeout
-    attr_accessor :receive_timeout
-  end
-
-  class Response
-    attr_reader :content
-    attr_reader :status
-    attr_reader :reason
-    attr_reader :contenttype
-
-    def initialize(res)
-      @status = res.code.to_i
-      @reason = res.message
-      @contenttype = res['content-type']
-      @content = res.body
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/parser.rb
deleted file mode 100644
index 412fd48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/parser.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-# SOAP4R - SOAP XML Instance Parser library.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/ns'
-require 'xsd/xmlparser'
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-
-
-class Parser
-  include SOAP
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnexpectedElementError < ParseError; end
-
-private
-
-  class ParseFrame
-    attr_reader :node
-    attr_reader :name
-    attr_reader :ns, :encodingstyle
-
-    class NodeContainer
-      def initialize(node)
-	@node = node
-      end
-
-      def node
-	@node
-      end
-
-      def replace_node(node)
-	@node = node
-      end
-    end
-
-  public
-
-    def initialize(ns, name, node, encodingstyle)
-      @ns = ns
-      @name = name
-      self.node = node
-      @encodingstyle = encodingstyle
-    end
-
-    def node=(node)
-      @node = NodeContainer.new(node)
-    end
-  end
-
-public
-
-  attr_accessor :envelopenamespace
-  attr_accessor :default_encodingstyle
-  attr_accessor :decode_typemap
-  attr_accessor :allow_unqualified_element
-
-  def initialize(opt = {})
-    @opt = opt
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @handlers = {}
-    @envelopenamespace = opt[:envelopenamespace] || EnvelopeNamespace
-    @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace
-    @decode_typemap = opt[:decode_typemap] || nil
-    @allow_unqualified_element = opt[:allow_unqualified_element] || false
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-
-    @handlers.each do |uri, handler|
-      handler.decode_prologue
-    end
-
-    @parser.do_parse(string_or_readable)
-
-    unless @parsestack.empty?
-      raise FormatDecodeError.new("Unbalanced tag in XML.")
-    end
-
-    @handlers.each do |uri, handler|
-      handler.decode_epilogue
-    end
-
-    @lastnode
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = parent_encodingstyle = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-      parent_encodingstyle = lastframe.encodingstyle
-    else
-      ns = XSD::NS.new
-      parent = ParseFrame::NodeContainer.new(nil)
-      parent_encodingstyle = nil
-    end
-
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    encodingstyle = find_encodingstyle(ns, attrs)
-
-    # Children's encodingstyle is derived from its parent.
-    if encodingstyle.nil?
-      if parent.node.is_a?(SOAPHeader)
-        encodingstyle = LiteralNamespace
-      else
-        encodingstyle = parent_encodingstyle || @default_encodingstyle
-      end
-    end
-
-    node = decode_tag(ns, name, attrs, parent, encodingstyle)
-
-    @parsestack << ParseFrame.new(ns, name, node, encodingstyle)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      decode_text(lastframe.ns, text, lastframe.encodingstyle)
-    else
-      # Ignore Text outside of SOAP Envelope.
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("Closing element name '#{ name }' does not match with opening element '#{ lastframe.name }'.")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node, lastframe.encodingstyle)
-    @lastnode = lastframe.node.node
-  end
-
-private
-
-  def find_encodingstyle(ns, attrs)
-    attrs.each do |key, value|
-      if (ns.compare(@envelopenamespace, AttrEncodingStyle, key))
-	return value
-      end
-    end
-    nil
-  end
-
-  def decode_tag(ns, name, attrs, parent, encodingstyle)
-    ele = ns.parse(name)
-
-    # Envelope based parsing.
-    if ((ele.namespace == @envelopenamespace) ||
-	(@allow_unqualified_element && ele.namespace.nil?))
-      o = decode_soap_envelope(ns, ele, attrs, parent)
-      return o if o
-    end
-
-    # Encoding based parsing.
-    handler = find_handler(encodingstyle)
-    if handler
-      return handler.decode_tag(ns, ele, attrs, parent)
-    else
-      raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-  end
-
-  def decode_tag_end(ns, node, encodingstyle)
-    return unless encodingstyle
-
-    handler = find_handler(encodingstyle)
-    if handler
-      return handler.decode_tag_end(ns, node)
-    else
-      raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-  end
-
-  def decode_text(ns, text, encodingstyle)
-    handler = find_handler(encodingstyle)
-
-    if handler
-      handler.decode_text(ns, text)
-    else
-      # How should I do?
-    end
-  end
-
-  def decode_soap_envelope(ns, ele, attrs, parent)
-    o = nil
-    if ele.name == EleEnvelope
-      o = SOAPEnvelope.new
-      if ext = @opt[:external_content]
-	ext.each do |k, v|
-	  o.external_content[k] = v
-	end
-      end
-    elsif ele.name == EleHeader
-      unless parent.node.is_a?(SOAPEnvelope)
-	raise FormatDecodeError.new("Header should be a child of Envelope.")
-      end
-      o = SOAPHeader.new
-      parent.node.header = o
-    elsif ele.name == EleBody
-      unless parent.node.is_a?(SOAPEnvelope)
-	raise FormatDecodeError.new("Body should be a child of Envelope.")
-      end
-      o = SOAPBody.new
-      parent.node.body = o
-    elsif ele.name == EleFault
-      unless parent.node.is_a?(SOAPBody)
-	raise FormatDecodeError.new("Fault should be a child of Body.")
-      end
-      o = SOAPFault.new
-      parent.node.fault = o
-    end
-    o
-  end
-
-  def find_handler(encodingstyle)
-    unless @handlers.key?(encodingstyle)
-      handler_factory = SOAP::EncodingStyle::Handler.handler(encodingstyle) ||
-	SOAP::EncodingStyle::Handler.handler(EncodingNamespace)
-      handler = handler_factory.new(@parser.charset)
-      handler.decode_typemap = @decode_typemap
-      handler.decode_prologue
-      @handlers[encodingstyle] = handler
-    end
-    @handlers[encodingstyle]
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/processor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/processor.rb
deleted file mode 100644
index 3c6dbed..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/processor.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# SOAP4R - marshal/unmarshal interface.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'soap/soap'
-require 'soap/element'
-require 'soap/parser'
-require 'soap/generator'
-require 'soap/encodingstyle/soapHandler'
-require 'soap/encodingstyle/literalHandler'
-require 'soap/encodingstyle/aspDotNetHandler'
-
-
-module SOAP
-
-
-module Processor
-  @@default_parser_option = {}
-
-  class << self
-  public
-
-    def marshal(env, opt = {}, io = nil)
-      generator = create_generator(opt)
-      marshalled_str = generator.generate(env, io)
-      unless env.external_content.empty?
-	opt[:external_content] = env.external_content
-      end
-      marshalled_str
-    end
-
-    def unmarshal(stream, opt = {})
-      parser = create_parser(opt)
-      parser.parse(stream)
-    end
-
-    def default_parser_option=(rhs)
-      @@default_parser_option = rhs
-    end
-
-    def default_parser_option
-      @@default_parser_option
-    end
-
-  private
-
-    def create_generator(opt)
-      SOAPGenerator.new(opt)
-    end
-
-    def create_parser(opt)
-      if opt.empty?
-	opt = @@default_parser_option
-      end
-      ::SOAP::Parser.new(opt)
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/property.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/property.rb
deleted file mode 100644
index 882dcc6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/property.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-# soap/property.rb: SOAP4R - Property implementation.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-# Property stream format:
-#
-#   line separator is \r?\n.  1 line per a property.
-#   line which begins with '#' is a comment line.  empty line is ignored, too.
-#   key/value separator is ':' or '='.
-#   '\' as escape character.  but line separator cannot be escaped.
-#   \s at the head/tail of key/value are trimmed.
-#
-#   '[' + key + ']' indicates property section.  for example,
-#
-#     [aaa.bbb]
-#     ccc = ddd
-#     eee.fff = ggg
-#     []
-#     aaa.hhh = iii
-#
-#   is the same as;
-#
-#     aaa.bbb.ccc = ddd
-#     aaa.bbb.eee.fff = ggg
-#     aaa.hhh = iii
-#
-class Property
-  FrozenError = (RUBY_VERSION >= "1.9.0") ? RuntimeError : TypeError
-
-  include Enumerable
-
-  module Util
-    def const_from_name(fqname)
-      fqname.split("::").inject(Kernel) { |klass, name| klass.const_get(name) }
-    end
-    module_function :const_from_name
-
-    def require_from_name(fqname)
-      require File.join(fqname.split("::").collect { |ele| ele.downcase })
-    end
-    module_function :require_from_name
-  end
-
-  def self.load(stream)
-    new.load(stream)
-  end
-
-  def self.loadproperty(propname)
-    new.loadproperty(propname)
-  end
-
-  def initialize
-    @store = Hash.new
-    @hook = Hash.new
-    @self_hook = Array.new
-    @locked = false
-  end
-
-  KEY_REGSRC = '([^=:\\\\]*(?:\\\\.[^=:\\\\]*)*)'
-  DEF_REGSRC = '\\s*' + KEY_REGSRC + '\\s*[=:]\\s*(.*)'
-  COMMENT_REGEXP = Regexp.new('^(?:#.*|)$')
-  CATDEF_REGEXP = Regexp.new("^\\[\\s*#{KEY_REGSRC}\\s*\\]$")
-  LINE_REGEXP = Regexp.new("^#{DEF_REGSRC}$")
-  def load(stream)
-    key_prefix = ""
-    stream.each_with_index do |line, lineno|
-      line.sub!(/\r?\n\z/, '')
-      case line
-      when COMMENT_REGEXP
-	next
-      when CATDEF_REGEXP
-	key_prefix = $1.strip
-      when LINE_REGEXP
-	key, value = $1.strip, $2.strip
-	key = "#{key_prefix}.#{key}" unless key_prefix.empty?
-	key, value = loadstr(key), loadstr(value)
-	self[key] = value
-      else
-	raise TypeError.new(
-	  "property format error at line #{lineno + 1}: `#{line}'")
-      end
-    end
-    self
-  end
-
-  # find property from $:.
-  def loadproperty(propname)
-    return loadpropertyfile(propname) if File.file?(propname)
-    $:.each do |path|
-      if File.file?(file = File.join(path, propname))
-        return loadpropertyfile(file)
-      end
-    end
-    nil
-  end
-
-  # name: a Symbol, String or an Array
-  def [](name)
-    referent(name_to_a(name))
-  end
-
-  # name: a Symbol, String or an Array
-  # value: an Object
-  def []=(name, value)
-    name_pair = name_to_a(name).freeze
-    hooks = assign(name_pair, value)
-    hooks.each do |hook|
-      hook.call(name_pair, value)
-    end
-    value
-  end
-
-  # value: an Object
-  # key is generated by property
-  def <<(value)
-    self[generate_new_key] = value
-  end
-
-  # name: a Symbol, String or an Array; nil means hook to the root
-  # cascade: true/false; for cascading hook of sub key
-  # hook: block which will be called with 2 args, name and value
-  def add_hook(name = nil, cascade = false, &hook)
-    if name == nil or name == true or name == false
-      cascade = name
-      assign_self_hook(cascade, &hook)
-    else
-      assign_hook(name_to_a(name), cascade, &hook)
-    end
-  end
-
-  def each
-    @store.each do |key, value|
-      yield(key, value)
-    end
-  end
-
-  def empty?
-    @store.empty?
-  end
-
-  def keys
-    @store.keys
-  end
-
-  def values
-    @store.values
-  end
-
-  def lock(cascade = false)
-    if cascade
-      each_key do |key|
-	key.lock(cascade)
-      end
-    end
-    @locked = true
-    self
-  end
-
-  def unlock(cascade = false)
-    @locked = false
-    if cascade
-      each_key do |key|
-	key.unlock(cascade)
-      end
-    end
-    self
-  end
-
-  def locked?
-    @locked
-  end
-
-protected
-
-  def deref_key(key)
-    check_lock(key)
-    ref = @store[key] ||= self.class.new
-    unless propkey?(ref)
-      raise ArgumentError.new("key `#{key}' already defined as a value")
-    end
-    ref
-  end
-
-  def local_referent(key)
-    check_lock(key)
-    if propkey?(@store[key]) and @store[key].locked?
-      raise FrozenError.new("cannot split any key from locked property")
-    end
-    @store[key]
-  end
-
-  def local_assign(key, value)
-    check_lock(key)
-    if @locked
-      if propkey?(value)
-	raise FrozenError.new("cannot add any key to locked property")
-      elsif propkey?(@store[key])
-	raise FrozenError.new("cannot override any key in locked property")
-      end
-    end
-    @store[key] = value
-  end
-
-  def local_hook(key, direct)
-    hooks = []
-    (@self_hook + (@hook[key] || NO_HOOK)).each do |hook, cascade|
-      hooks << hook if direct or cascade
-    end
-    hooks
-  end
-
-  def local_assign_hook(key, cascade, &hook)
-    check_lock(key)
-    @store[key] ||= nil
-    (@hook[key] ||= []) << [hook, cascade]
-  end
-
-private
-
-  NO_HOOK = [].freeze
-
-  def referent(ary)
-    ary[0..-2].inject(self) { |ref, name|
-      ref.deref_key(to_key(name))
-    }.local_referent(to_key(ary.last))
-  end
-
-  def assign(ary, value)
-    ref = self
-    hook = NO_HOOK
-    ary[0..-2].each do |name|
-      key = to_key(name)
-      hook += ref.local_hook(key, false)
-      ref = ref.deref_key(key)
-    end
-    last_key = to_key(ary.last)
-    ref.local_assign(last_key, value)
-    hook + ref.local_hook(last_key, true)
-  end
-
-  def assign_hook(ary, cascade, &hook)
-    ary[0..-2].inject(self) { |ref, name|
-      ref.deref_key(to_key(name))
-    }.local_assign_hook(to_key(ary.last), cascade, &hook)
-  end
-
-  def assign_self_hook(cascade, &hook)
-    check_lock(nil)
-    @self_hook << [hook, cascade]
-  end
-
-  def each_key
-    self.each do |key, value|
-      if propkey?(value)
-	yield(value)
-      end
-    end
-  end
-
-  def check_lock(key)
-    if @locked and (key.nil? or !@store.key?(key))
-      raise FrozenError.new("cannot add any key to locked property")
-    end
-  end
-
-  def propkey?(value)
-    value.is_a?(::SOAP::Property)
-  end
-
-  def name_to_a(name)
-    case name
-    when Symbol
-      [name]
-    when String
-      name.scan(/[^.\\]+(?:\\.[^.\\])*/)	# split with unescaped '.'
-    when Array
-      name
-    else
-      raise ArgumentError.new("Unknown name #{name}(#{name.class})")
-    end
-  end
-
-  def to_key(name)
-    name.to_s.downcase
-  end
-
-  def generate_new_key
-    if @store.empty?
-      "0"
-    else
-      (key_max + 1).to_s
-    end
-  end
-
-  def key_max
-    (@store.keys.max { |l, r| l.to_s.to_i <=> r.to_s.to_i }).to_s.to_i
-  end
-
-  def loadpropertyfile(file)
-    puts "find property at #{file}" if $DEBUG
-    File.open(file) do |f|
-      load(f)
-    end
-  end
-
-  def loadstr(str)
-    str.gsub(/\\./) { |c| eval("\"#{c}\"") }
-  end
-end
-
-
-end
-
-
-# for ruby/1.6.
-unless Enumerable.instance_methods.include?('inject')
-  module Enumerable
-    def inject(init)
-      result = init
-      each do |item|
-	result = yield(result, item)
-      end
-      result
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/cgistub.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/cgistub.rb
deleted file mode 100644
index 487f05a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/cgistub.rb
+++ /dev/null
@@ -1,206 +0,0 @@
-# SOAP4R - CGI/mod_ruby stub library
-# Copyright (C) 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/streamHandler'
-require 'webrick/httpresponse'
-require 'webrick/httpstatus'
-require 'logger'
-require 'soap/rpc/soaplet'
-
-
-module SOAP
-module RPC
-
-
-###
-# SYNOPSIS
-#   CGIStub.new
-#
-# DESCRIPTION
-#   To be written...
-#
-class CGIStub < Logger::Application
-  include SOAP
-  include WEBrick
-
-  class SOAPRequest
-    attr_reader :body
-
-    def [](var); end
-
-    def meta_vars; end
-  end
-
-  class SOAPStdinRequest < SOAPRequest
-    attr_reader :body
-
-    def initialize(stream)
-      size = ENV['CONTENT_LENGTH'].to_i || 0
-      @body = stream.read(size)
-    end
-
-    def [](var)
-      ENV[var.gsub(/-/, '_').upcase]
-    end
-
-    def meta_vars
-      {
-        'HTTP_SOAPACTION' => ENV['HTTP_SOAPAction']
-      }
-    end
-  end
-
-  class SOAPFCGIRequest < SOAPRequest
-    attr_reader :body
-
-    def initialize(request)
-      @request = request
-      @body = @request.in.read
-    end
-
-    def [](var)
-      @request.env[var.gsub(/-/, '_').upcase]
-    end
-
-    def meta_vars
-      {
-        'HTTP_SOAPACTION' => @request.env['HTTP_SOAPAction']
-      }
-    end
-  end
-
-  def initialize(appname, default_namespace)
-    super(appname)
-    set_log(STDERR)
-    self.level = ERROR
-    @default_namespace = default_namespace
-    @remote_host = ENV['REMOTE_HOST'] || ENV['REMOTE_ADDR'] || 'unknown'
-    @router = ::SOAP::RPC::Router.new(self.class.name)
-    @soaplet = ::SOAP::RPC::SOAPlet.new(@router)
-    on_init
-  end
-  
-  def on_init
-    # do extra initialization in a derived class if needed.
-  end
-
-  def mapping_registry
-    @router.mapping_registry
-  end
-
-  def mapping_registry=(value)
-    @router.mapping_registry = value
-  end
-
-  def generate_explicit_type
-    @router.generate_explicit_type
-  end
-
-  def generate_explicit_type=(generate_explicit_type)
-    @router.generate_explicit_type = generate_explicit_type
-  end
-
-  # servant entry interface
-
-  def add_rpc_servant(obj, namespace = @default_namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-  alias add_servant add_rpc_servant
-
-  def add_headerhandler(obj)
-    @router.add_headerhandler(obj)
-  end
-  alias add_rpc_headerhandler add_headerhandler
-
-  # method entry interface
-
-  def add_rpc_method(obj, name, *param)
-    add_rpc_method_with_namespace_as(@default_namespace, obj, name, name, *param)
-  end
-  alias add_method add_rpc_method
-
-  def add_rpc_method_as(obj, name, name_as, *param)
-    add_rpc_method_with_namespace_as(@default_namespace, obj, name, name_as, *param)
-  end
-  alias add_method_as add_rpc_method_as
-
-  def add_rpc_method_with_namespace(namespace, obj, name, *param)
-    add_rpc_method_with_namespace_as(namespace, obj, name, name, *param)
-  end
-  alias add_method_with_namespace add_rpc_method_with_namespace
-
-  def add_rpc_method_with_namespace_as(namespace, obj, name, name_as, *param)
-    qname = XSD::QName.new(namespace, name_as)
-    soapaction = nil
-    param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    @router.add_rpc_operation(obj, qname, soapaction, name, param_def)
-  end
-  alias add_method_with_namespace_as add_rpc_method_with_namespace_as
-
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    @router.add_document_operation(receiver, soapaction, name, param_def, opt)
-  end
-
-  def set_fcgi_request(request)
-    @fcgi = request
-  end
-
-private
-
-  HTTPVersion = WEBrick::HTTPVersion.new('1.0')       # dummy; ignored
-
-  def run
-    res = WEBrick::HTTPResponse.new({:HTTPVersion => HTTPVersion})
-    begin
-      @log.info { "received a request from '#{ @remote_host }'" }
-      if @fcgi
-        req = SOAPFCGIRequest.new(@fcgi)
-      else
-        req = SOAPStdinRequest.new($stdin)
-      end
-      @soaplet.do_POST(req, res)
-    rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex
-      res.set_error(ex)
-    rescue HTTPStatus::Error => ex
-      res.set_error(ex)
-    rescue HTTPStatus::Status => ex
-      res.status = ex.code
-    rescue StandardError, NameError => ex # for Ruby 1.6
-      res.set_error(ex, true)
-    ensure
-      if defined?(MOD_RUBY)
-        r = Apache.request
-        r.status = res.status
-        r.content_type = res.content_type
-        r.send_http_header
-        buf = res.body
-      else
-        buf = ''
-        res.send_response(buf)
-        buf.sub!(/^[^\r]+\r\n/, '')       # Trim status line.
-      end
-      @log.debug { "SOAP CGI Response:\n#{ buf }" }
-      if @fcgi
-        @fcgi.out.print buf
-        @fcgi.finish
-        @fcgi = nil
-      else
-        print buf
-      end
-    end
-    0
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/driver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/driver.rb
deleted file mode 100644
index 0fb4e82..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/driver.rb
+++ /dev/null
@@ -1,254 +0,0 @@
-# SOAP4R - SOAP RPC driver
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/mapping'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/rpc'
-require 'soap/rpc/proxy'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/property'
-require 'soap/header/handlerset'
-
-
-module SOAP
-module RPC
-
-
-class Driver
-  class << self
-    if RUBY_VERSION >= "1.7.0"
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        define_method(name) {
-          @proxy.__send__(name)
-        }
-        if assignable
-          aname = name + '='
-          define_method(aname) { |rhs|
-            @proxy.__send__(aname, rhs)
-          }
-        end
-      end
-    else
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @proxy.#{name}
-          end
-        EOS
-        if assignable
-          module_eval <<-EOS
-            def #{name}=(value)
-              @proxy.#{name} = value
-            end
-          EOS
-        end
-      end
-    end
-  end
-
-  __attr_proxy :endpoint_url, true
-  __attr_proxy :mapping_registry, true
-  __attr_proxy :default_encodingstyle, true
-  __attr_proxy :generate_explicit_type, true
-  __attr_proxy :allow_unqualified_element, true
-  __attr_proxy :headerhandler
-  __attr_proxy :streamhandler
-  __attr_proxy :test_loopback_response
-  __attr_proxy :reset_stream
-
-  attr_reader :proxy
-  attr_reader :options
-  attr_accessor :soapaction
-
-  def inspect
-    "#<#{self.class}:#{@proxy.inspect}>"
-  end
-
-  def httpproxy
-    options["protocol.http.proxy"]
-  end
-
-  def httpproxy=(httpproxy)
-    options["protocol.http.proxy"] = httpproxy
-  end
-
-  def wiredump_dev
-    options["protocol.http.wiredump_dev"]
-  end
-
-  def wiredump_dev=(wiredump_dev)
-    options["protocol.http.wiredump_dev"] = wiredump_dev
-  end
-
-  def mandatorycharset
-    options["protocol.mandatorycharset"]
-  end
-
-  def mandatorycharset=(mandatorycharset)
-    options["protocol.mandatorycharset"] = mandatorycharset
-  end
-
-  def wiredump_file_base
-    options["protocol.wiredump_file_base"]
-  end
-
-  def wiredump_file_base=(wiredump_file_base)
-    options["protocol.wiredump_file_base"] = wiredump_file_base
-  end
-
-  def initialize(endpoint_url, namespace = nil, soapaction = nil)
-    @namespace = namespace
-    @soapaction = soapaction
-    @options = setup_options
-    @wiredump_file_base = nil
-    @proxy = Proxy.new(endpoint_url, @soapaction, @options)
-  end
-
-  def loadproperty(propertyname)
-    unless options.loadproperty(propertyname)
-      raise LoadError.new("No such property to load -- #{propertyname}")
-    end
-  end
-
-  def add_rpc_method(name, *params)
-    add_rpc_method_with_soapaction_as(name, name, @soapaction, *params)
-  end
-
-  def add_rpc_method_as(name, name_as, *params)
-    add_rpc_method_with_soapaction_as(name, name_as, @soapaction, *params)
-  end
-
-  def add_rpc_method_with_soapaction(name, soapaction, *params)
-    add_rpc_method_with_soapaction_as(name, name, soapaction, *params)
-  end
-
-  def add_rpc_method_with_soapaction_as(name, name_as, soapaction, *params)
-    param_def = SOAPMethod.create_rpc_param_def(params)
-    qname = XSD::QName.new(@namespace, name_as)
-    @proxy.add_rpc_method(qname, soapaction, name, param_def)
-    add_rpc_method_interface(name, param_def)
-  end
-
-  # add_method is for shortcut of typical rpc/encoded method definition.
-  alias add_method add_rpc_method
-  alias add_method_as add_rpc_method_as
-  alias add_method_with_soapaction add_rpc_method_with_soapaction
-  alias add_method_with_soapaction_as add_rpc_method_with_soapaction_as
-
-  def add_document_method(name, soapaction, req_qname, res_qname)
-    param_def = SOAPMethod.create_doc_param_def(req_qname, res_qname)
-    @proxy.add_document_method(soapaction, name, param_def)
-    add_document_method_interface(name, param_def)
-  end
-
-  def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
-    @proxy.add_rpc_operation(qname, soapaction, name, param_def, opt)
-    add_rpc_method_interface(name, param_def)
-  end
-
-  def add_document_operation(soapaction, name, param_def, opt = {})
-    @proxy.add_document_operation(soapaction, name, param_def, opt)
-    add_document_method_interface(name, param_def)
-  end
-
-  def invoke(headers, body)
-    if headers and !headers.is_a?(SOAPHeader)
-      headers = create_header(headers)
-    end
-    set_wiredump_file_base(body.elename.name)
-    env = @proxy.invoke(headers, body)
-    if env.nil?
-      return nil, nil
-    else
-      return env.header, env.body
-    end
-  end
-
-  def call(name, *params)
-    set_wiredump_file_base(name)
-    @proxy.call(name, *params)
-  end
-
-private
-
-  def set_wiredump_file_base(name)
-    if @wiredump_file_base
-      @proxy.set_wiredump_file_base("#{@wiredump_file_base}_#{name}")
-    end
-  end
-
-  def create_header(headers)
-    header = SOAPHeader.new()
-    headers.each do |content, mustunderstand, encodingstyle|
-      header.add(SOAPHeaderItem.new(content, mustunderstand, encodingstyle))
-    end
-    header
-  end
-
-  def setup_options
-    if opt = Property.loadproperty(::SOAP::PropertyName)
-      opt = opt["client"]
-    end
-    opt ||= Property.new
-    opt.add_hook("protocol.mandatorycharset") do |key, value|
-      @proxy.mandatorycharset = value
-    end
-    opt.add_hook("protocol.wiredump_file_base") do |key, value|
-      @wiredump_file_base = value
-    end
-    opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
-    opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
-    opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
-    opt
-  end
-
-  def add_rpc_method_interface(name, param_def)
-    param_count = RPC::SOAPMethod.param_count(param_def,
-      RPC::SOAPMethod::IN, RPC::SOAPMethod::INOUT)
-    add_method_interface(name, param_count)
-  end
-
-  def add_document_method_interface(name, param_def)
-    param_count = RPC::SOAPMethod.param_count(param_def, RPC::SOAPMethod::IN)
-    add_method_interface(name, param_count)
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def add_method_interface(name, param_count)
-      ::SOAP::Mapping.define_singleton_method(self, name) do |*arg|
-        unless arg.size == param_count
-          raise ArgumentError.new(
-          "wrong number of arguments (#{arg.size} for #{param_count})")
-        end
-        call(name, *arg)
-      end
-      self.method(name)
-    end
-  else
-    def add_method_interface(name, param_count)
-      instance_eval <<-EOS
-        def #{name}(*arg)
-          unless arg.size == #{param_count}
-            raise ArgumentError.new(
-              "wrong number of arguments (\#{arg.size} for #{param_count})")
-          end
-          call(#{name.dump}, *arg)
-        end
-      EOS
-      self.method(name)
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/element.rb
deleted file mode 100644
index c224b03..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/element.rb
+++ /dev/null
@@ -1,325 +0,0 @@
-# SOAP4R - RPC element definition.
-# Copyright (C) 2000, 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-
-
-module SOAP
-
-# Add method definitions for RPC to common definition in element.rb
-class SOAPBody < SOAPStruct
-  public
-
-  def request
-    root_node
-  end
-
-  def response
-    root = root_node
-    if !@is_fault
-      if root.nil?
-        nil
-      elsif root.is_a?(SOAPBasetype)
-        root
-      else
-        # Initial element is [retval].
-        root[0]
-      end
-    else
-      root
-    end
-  end
-
-  def outparams
-    root = root_node
-    if !@is_fault and !root.nil? and !root.is_a?(SOAPBasetype)
-      op = root[1..-1]
-      op = nil if op && op.empty?
-      op
-    else
-      nil
-    end
-  end
-
-  def fault
-    if @is_fault
-      self['fault']
-    else
-      nil
-    end
-  end
-
-  def fault=(fault)
-    @is_fault = true
-    add_member('fault', fault)
-  end
-end
-
-
-module RPC
-
-
-class RPCError < Error; end
-class MethodDefinitionError < RPCError; end
-class ParameterError < RPCError; end
-
-class SOAPMethod < SOAPStruct
-  RETVAL = 'retval'
-  IN = 'in'
-  OUT = 'out'
-  INOUT = 'inout'
-
-  attr_reader :param_def
-  attr_reader :inparam
-  attr_reader :outparam
-  attr_reader :retval_name
-  attr_reader :retval_class_name
-
-  def initialize(qname, param_def = nil)
-    super(nil)
-    @elename = qname
-    @encodingstyle = nil
-
-    @param_def = param_def
-
-    @signature = []
-    @inparam_names = []
-    @inoutparam_names = []
-    @outparam_names = []
-
-    @inparam = {}
-    @outparam = {}
-    @retval_name = nil
-    @retval_class_name = nil
-
-    init_param(@param_def) if @param_def
-  end
-
-  def have_outparam?
-    @outparam_names.size > 0
-  end
-
-  def input_params
-    collect_params(IN, INOUT)
-  end
-
-  def output_params
-    collect_params(OUT, INOUT)
-  end
-
-  def set_param(params)
-    params.each do |param, data|
-      @inparam[param] = data
-      data.elename.name = param
-      data.parent = self
-    end
-  end
-
-  def set_outparam(params)
-    params.each do |param, data|
-      @outparam[param] = data
-      data.elename.name = param
-    end
-  end
-
-  def SOAPMethod.param_count(param_def, *type)
-    count = 0
-    param_def.each do |io_type, name, param_type|
-      if type.include?(io_type)
-        count += 1
-      end
-    end
-    count
-  end
-
-  def SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    if param.size == 1 and param[0].is_a?(Array)
-      return param[0]
-    end
-    if param.empty?
-      method = obj.method(name)
-      param_names = (1..method.arity.abs).collect { |i| "p#{i}" }
-    else
-      param_names = param
-    end
-    create_rpc_param_def(param_names)
-  end
-
-  def SOAPMethod.create_rpc_param_def(param_names)
-    param_def = []
-    param_names.each do |param_name|
-      param_def.push([IN, param_name, nil])
-    end
-    param_def.push([RETVAL, 'return', nil])
-    param_def
-  end
-
-  def SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
-    req_qnames = [req_qnames] if req_qnames.is_a?(XSD::QName)
-    res_qnames = [res_qnames] if res_qnames.is_a?(XSD::QName)
-    param_def = []
-    req_qnames.each do |qname|
-      param_def << [IN, qname.name, [nil, qname.namespace, qname.name]]
-    end
-    res_qnames.each do |qname|
-      param_def << [OUT, qname.name, [nil, qname.namespace, qname.name]]
-    end
-    param_def
-  end
-
-private
-
-  def collect_params(*type)
-    names = []
-    @signature.each do |io_type, name, param_type|
-      names << name if type.include?(io_type)
-    end
-    names
-  end
-
-  def init_param(param_def)
-    param_def.each do |io_type, name, param_type|
-      case io_type
-      when IN
-        @signature.push([IN, name, param_type])
-        @inparam_names.push(name)
-      when OUT
-        @signature.push([OUT, name, param_type])
-        @outparam_names.push(name)
-      when INOUT
-        @signature.push([INOUT, name, param_type])
-        @inoutparam_names.push(name)
-      when RETVAL
-        if @retval_name
-          raise MethodDefinitionError.new('duplicated retval')
-        end
-        @retval_name = name
-        @retval_class_name = nil
-        if param_type
-          if param_type[0].is_a?(String)
-            @retval_class_name = Mapping.class_from_name(param_type[0])
-          else
-            @retval_class_name = param_type[0]
-          end
-        end
-      else
-        raise MethodDefinitionError.new("unknown type: #{io_type}")
-      end
-    end
-  end
-end
-
-
-class SOAPMethodRequest < SOAPMethod
-  attr_accessor :soapaction
-
-  def SOAPMethodRequest.create_request(qname, *params)
-    param_def = []
-    param_value = []
-    i = 0
-    params.each do |param|
-      param_name = "p#{i}"
-      i += 1
-      param_def << [IN, param_name, nil]
-      param_value << [param_name, param]
-    end
-    param_def << [RETVAL, 'return', nil]
-    o = new(qname, param_def)
-    o.set_param(param_value)
-    o
-  end
-
-  def initialize(qname, param_def = nil, soapaction = nil)
-    check_elename(qname)
-    super(qname, param_def)
-    @soapaction = soapaction
-  end
-
-  def each
-    input_params.each do |name|
-      unless @inparam[name]
-        raise ParameterError.new("parameter: #{name} was not given")
-      end
-      yield(name, @inparam[name])
-    end
-  end
-
-  def dup
-    req = self.class.new(@elename.dup, @param_def, @soapaction)
-    req.encodingstyle = @encodingstyle
-    req
-  end
-
-  def create_method_response(response_name = nil)
-    response_name ||=
-      XSD::QName.new(@elename.namespace, @elename.name + 'Response')
-    SOAPMethodResponse.new(response_name, @param_def)
-  end
-
-private
-
-  def check_elename(qname)
-    # NCName & ruby's method name
-    unless /\A[\w_][\w\d_\-]*\z/ =~ qname.name
-      raise MethodDefinitionError.new("element name '#{qname.name}' not allowed")
-    end
-  end
-end
-
-
-class SOAPMethodResponse < SOAPMethod
-
-  def initialize(qname, param_def = nil)
-    super(qname, param_def)
-    @retval = nil
-  end
-
-  def retval=(retval)
-    @retval = retval
-    @retval.elename = @retval.elename.dup_name(@retval_name || 'return')
-    retval.parent = self
-    retval
-  end
-
-  def each
-    if @retval_name and !@retval.is_a?(SOAPVoid)
-      yield(@retval_name, @retval)
-    end
-
-    output_params.each do |name|
-      unless @outparam[name]
-        raise ParameterError.new("parameter: #{name} was not given")
-      end
-      yield(name, @outparam[name])
-    end
-  end
-end
-
-
-# To return(?) void explicitly.
-#  def foo(input_var)
-#    ...
-#    return SOAP::RPC::SOAPVoid.new
-#  end
-class SOAPVoid < XSD::XSDAnySimpleType
-  include SOAPBasetype
-  extend SOAPModuleUtils
-  Name = XSD::QName.new(Mapping::RubyCustomTypeNamespace, nil)
-
-public
-  def initialize()
-    @elename = Name
-    @id = nil
-    @precedents = []
-    @parent = nil
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/httpserver.rb
deleted file mode 100644
index 6d2a72e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/httpserver.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-# SOAP4R - WEBrick HTTP Server
-# Copyright (C) 2003, 2004 by NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'logger'
-require 'soap/rpc/soaplet'
-require 'soap/streamHandler'
-require 'webrick'
-
-
-module SOAP
-module RPC
-
-
-class HTTPServer < Logger::Application
-  attr_reader :server
-  attr_accessor :default_namespace
-
-  def initialize(config)
-    super(config[:SOAPHTTPServerApplicationName] || self.class.name)
-    @default_namespace = config[:SOAPDefaultNamespace]
-    @webrick_config = config.dup
-    self.level = Logger::Severity::ERROR # keep silent by default
-    @webrick_config[:Logger] ||= @log
-    @log = @webrick_config[:Logger]     # sync logger of App and HTTPServer
-    @router = ::SOAP::RPC::Router.new(self.class.name)
-    @soaplet = ::SOAP::RPC::SOAPlet.new(@router)
-    on_init
-    @server = WEBrick::HTTPServer.new(@webrick_config)
-    @server.mount('/', @soaplet)
-  end
-
-  def on_init
-    # do extra initialization in a derived class if needed.
-  end
-
-  def status
-    @server.status if @server
-  end
-
-  def shutdown
-    @server.shutdown if @server
-  end
-
-  def mapping_registry
-    @router.mapping_registry
-  end
-
-  def mapping_registry=(mapping_registry)
-    @router.mapping_registry = mapping_registry
-  end
-
-  def generate_explicit_type
-    @router.generate_explicit_type
-  end
-
-  def generate_explicit_type=(generate_explicit_type)
-    @router.generate_explicit_type = generate_explicit_type
-  end
-
-  # servant entry interface
-
-  def add_rpc_request_servant(factory, namespace = @default_namespace)
-    @router.add_rpc_request_servant(factory, namespace)
-  end
-
-  def add_rpc_servant(obj, namespace = @default_namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-  
-  def add_request_headerhandler(factory)
-    @router.add_request_headerhandler(factory)
-  end
-
-  def add_headerhandler(obj)
-    @router.add_headerhandler(obj)
-  end
-  alias add_rpc_headerhandler add_headerhandler
-
-  # method entry interface
-
-  def add_rpc_method(obj, name, *param)
-    add_rpc_method_as(obj, name, name, *param)
-  end
-  alias add_method add_rpc_method
-
-  def add_rpc_method_as(obj, name, name_as, *param)
-    qname = XSD::QName.new(@default_namespace, name_as)
-    soapaction = nil
-    param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    @router.add_rpc_operation(obj, qname, soapaction, name, param_def)
-  end
-  alias add_method_as add_rpc_method_as
-
-  def add_document_method(obj, soapaction, name, req_qnames, res_qnames)
-    param_def = SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
-    @router.add_document_operation(obj, soapaction, name, param_def)
-  end
-
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    @router.add_document_operation(receiver, soapaction, name, param_def, opt)
-  end
-
-  def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
-    @router.add_document_request_operation(factory, soapaction, name, param_def, opt)
-  end
-
-private
-
-  def run
-    @server.start
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/proxy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/proxy.rb
deleted file mode 100644
index 7dfda62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/proxy.rb
+++ /dev/null
@@ -1,497 +0,0 @@
-# SOAP4R - RPC Proxy library.
-# Copyright (C) 2000, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/rpc/rpc'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/mimemessage'
-
-
-module SOAP
-module RPC
-
-
-class Proxy
-  include SOAP
-
-public
-
-  attr_accessor :soapaction
-  attr_accessor :mandatorycharset
-  attr_accessor :allow_unqualified_element
-  attr_accessor :default_encodingstyle
-  attr_accessor :generate_explicit_type
-  attr_reader :headerhandler
-  attr_reader :streamhandler
-
-  attr_accessor :mapping_registry
-  attr_accessor :literal_mapping_registry
-
-  attr_reader :operation
-
-  def initialize(endpoint_url, soapaction, options)
-    @endpoint_url = endpoint_url
-    @soapaction = soapaction
-    @options = options
-    @streamhandler = HTTPStreamHandler.new(
-      @options["protocol.http"] ||= ::SOAP::Property.new)
-    @operation = {}
-    @mandatorycharset = nil
-    @allow_unqualified_element = true
-    @default_encodingstyle = nil
-    @generate_explicit_type = true
-    @headerhandler = Header::HandlerSet.new
-    @mapping_registry = nil
-    @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new
-  end
-
-  def inspect
-    "#<#{self.class}:#{@endpoint_url}>"
-  end
-
-  def endpoint_url
-    @endpoint_url
-  end
-
-  def endpoint_url=(endpoint_url)
-    @endpoint_url = endpoint_url
-    reset_stream
-  end
-
-  def reset_stream
-    @streamhandler.reset(@endpoint_url)
-  end
-
-  def set_wiredump_file_base(wiredump_file_base)
-    @streamhandler.wiredump_file_base = wiredump_file_base
-  end
-
-  def test_loopback_response
-    @streamhandler.test_loopback_response
-  end
-
-  def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
-    opt[:request_qname] = qname
-    opt[:request_style] ||= :rpc
-    opt[:response_style] ||= :rpc
-    opt[:request_use] ||= :encoded
-    opt[:response_use] ||= :encoded
-    @operation[name] = Operation.new(soapaction, param_def, opt)
-  end
-
-  def add_document_operation(soapaction, name, param_def, opt = {})
-    opt[:request_style] ||= :document
-    opt[:response_style] ||= :document
-    opt[:request_use] ||= :literal
-    opt[:response_use] ||= :literal
-    # default values of these values are unqualified in XML Schema.
-    # set true for backward compatibility.
-    unless opt.key?(:elementformdefault)
-      opt[:elementformdefault] = true
-    end
-    unless opt.key?(:attributeformdefault)
-      opt[:attributeformdefault] = true
-    end
-    @operation[name] = Operation.new(soapaction, param_def, opt)
-  end
-
-  # add_method is for shortcut of typical rpc/encoded method definition.
-  alias add_method add_rpc_operation
-  alias add_rpc_method add_rpc_operation
-  alias add_document_method add_document_operation
-
-  def invoke(req_header, req_body, opt = nil)
-    opt ||= create_encoding_opt
-    route(req_header, req_body, opt, opt)
-  end
-
-  def call(name, *params)
-    unless op_info = @operation[name]
-      raise MethodDefinitionError, "method: #{name} not defined"
-    end
-    mapping_opt = create_mapping_opt
-    req_header = create_request_header
-    req_body = SOAPBody.new(
-      op_info.request_body(params, @mapping_registry,
-        @literal_mapping_registry, mapping_opt)
-    )
-    reqopt = create_encoding_opt(
-      :soapaction => op_info.soapaction || @soapaction,
-      :envelopenamespace => @options["soap.envelope.requestnamespace"],
-      :default_encodingstyle =>
-        @default_encodingstyle || op_info.request_default_encodingstyle,
-      :elementformdefault => op_info.elementformdefault,
-      :attributeformdefault => op_info.attributeformdefault
-    )
-    resopt = create_encoding_opt(
-      :envelopenamespace => @options["soap.envelope.responsenamespace"],
-      :default_encodingstyle =>
-        @default_encodingstyle || op_info.response_default_encodingstyle,
-      :elementformdefault => op_info.elementformdefault,
-      :attributeformdefault => op_info.attributeformdefault
-    )
-    env = route(req_header, req_body, reqopt, resopt)
-    raise EmptyResponseError unless env
-    receive_headers(env.header)
-    begin
-      check_fault(env.body)
-    rescue ::SOAP::FaultError => e
-      op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry)
-    end
-    op_info.response_obj(env.body, @mapping_registry,
-      @literal_mapping_registry, mapping_opt)
-  end
-
-  def route(req_header, req_body, reqopt, resopt)
-    req_env = ::SOAP::SOAPEnvelope.new(req_header, req_body)
-    unless reqopt[:envelopenamespace].nil?
-      set_envelopenamespace(req_env, reqopt[:envelopenamespace])
-    end
-    reqopt[:external_content] = nil
-    conn_data = marshal(req_env, reqopt)
-    if ext = reqopt[:external_content]
-      mime = MIMEMessage.new
-      ext.each do |k, v|
-      	mime.add_attachment(v.data)
-      end
-      mime.add_part(conn_data.send_string + "\r\n")
-      mime.close
-      conn_data.send_string = mime.content_str
-      conn_data.send_contenttype = mime.headers['content-type'].str
-    end
-    conn_data = @streamhandler.send(@endpoint_url, conn_data,
-      reqopt[:soapaction])
-    if conn_data.receive_string.empty?
-      return nil
-    end
-    unmarshal(conn_data, resopt)
-  end
-
-  def check_fault(body)
-    if body.fault
-      raise SOAP::FaultError.new(body.fault)
-    end
-  end
-
-private
-
-  def set_envelopenamespace(env, namespace)
-    env.elename = XSD::QName.new(namespace, env.elename.name)
-    if env.header
-      env.header.elename = XSD::QName.new(namespace, env.header.elename.name)
-    end
-    if env.body
-      env.body.elename = XSD::QName.new(namespace, env.body.elename.name)
-    end
-  end
-
-  def create_request_header
-    headers = @headerhandler.on_outbound
-    if headers.empty?
-      nil
-    else
-      h = ::SOAP::SOAPHeader.new
-      headers.each do |header|
-        h.add(header.elename.name, header)
-      end
-      h
-    end
-  end
-
-  def receive_headers(headers)
-    @headerhandler.on_inbound(headers) if headers
-  end
-
-  def marshal(env, opt)
-    send_string = Processor.marshal(env, opt)
-    StreamHandler::ConnectionData.new(send_string)
-  end
-
-  def unmarshal(conn_data, opt)
-    contenttype = conn_data.receive_contenttype
-    if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
-      opt[:external_content] = {}
-      mime = MIMEMessage.parse("Content-Type: " + contenttype,
-	conn_data.receive_string)
-      mime.parts.each do |part|
-	value = Attachment.new(part.content)
-	value.contentid = part.contentid
-	obj = SOAPAttachment.new(value)
-	opt[:external_content][value.contentid] = obj if value.contentid
-      end
-      opt[:charset] = @mandatorycharset ||
-	StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
-      env = Processor.unmarshal(mime.root.content, opt)
-    else
-      opt[:charset] = @mandatorycharset ||
-	::SOAP::StreamHandler.parse_media_type(contenttype)
-      env = Processor.unmarshal(conn_data.receive_string, opt)
-    end
-    unless env.is_a?(::SOAP::SOAPEnvelope)
-      raise ResponseFormatError.new(
-        "response is not a SOAP envelope: #{conn_data.receive_string}")
-    end
-    env
-  end
-
-  def create_header(headers)
-    header = SOAPHeader.new()
-    headers.each do |content, mustunderstand, encodingstyle|
-      header.add(SOAPHeaderItem.new(content, mustunderstand, encodingstyle))
-    end
-    header
-  end
-
-  def create_encoding_opt(hash = nil)
-    opt = {}
-    opt[:default_encodingstyle] = @default_encodingstyle
-    opt[:allow_unqualified_element] = @allow_unqualified_element
-    opt[:generate_explicit_type] = @generate_explicit_type
-    opt[:no_indent] = @options["soap.envelope.no_indent"]
-    opt[:use_numeric_character_reference] =
-      @options["soap.envelope.use_numeric_character_reference"]
-    opt.update(hash) if hash
-    opt
-  end
-
-  def create_mapping_opt(hash = nil)
-    opt = {
-      :external_ces => @options["soap.mapping.external_ces"]
-    }
-    opt.update(hash) if hash
-    opt
-  end
-
-  class Operation
-    attr_reader :soapaction
-    attr_reader :request_style
-    attr_reader :response_style
-    attr_reader :request_use
-    attr_reader :response_use
-    attr_reader :elementformdefault
-    attr_reader :attributeformdefault
-
-    def initialize(soapaction, param_def, opt)
-      @soapaction = soapaction
-      @request_style = opt[:request_style]
-      @response_style = opt[:response_style]
-      @request_use = opt[:request_use]
-      @response_use = opt[:response_use]
-      # set nil(unqualified) by default
-      @elementformdefault = opt[:elementformdefault]
-      @attributeformdefault = opt[:attributeformdefault]
-      check_style(@request_style)
-      check_style(@response_style)
-      check_use(@request_use)
-      check_use(@response_use)
-      if @request_style == :rpc
-        @rpc_request_qname = opt[:request_qname]
-        if @rpc_request_qname.nil?
-          raise MethodDefinitionError.new("rpc_request_qname must be given")
-        end
-        @rpc_method_factory =
-          RPC::SOAPMethodRequest.new(@rpc_request_qname, param_def, @soapaction)
-      else
-        @doc_request_qnames = []
-        @doc_request_qualified = []
-        @doc_response_qnames = []
-        @doc_response_qualified = []
-        param_def.each do |inout, paramname, typeinfo, eleinfo|
-          klass_not_used, nsdef, namedef = typeinfo
-          qualified = eleinfo
-          if namedef.nil?
-            raise MethodDefinitionError.new("qname must be given")
-          end
-          case inout
-          when SOAPMethod::IN
-            @doc_request_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_request_qualified << qualified
-          when SOAPMethod::OUT
-            @doc_response_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_response_qualified << qualified
-          else
-            raise MethodDefinitionError.new(
-              "illegal inout definition for document style: #{inout}")
-          end
-        end
-      end
-    end
-
-    def request_default_encodingstyle
-      (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def response_default_encodingstyle
-      (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def request_body(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_style == :rpc
-        request_rpc(values, mapping_registry, literal_mapping_registry, opt)
-      else
-        request_doc(values, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_obj(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_style == :rpc
-        response_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      else
-        response_doc(body, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-    def raise_fault(e, mapping_registry, literal_mapping_registry)
-      if @response_style == :rpc
-        Mapping.fault2exception(e, mapping_registry)
-      else
-        Mapping.fault2exception(e, literal_mapping_registry)
-      end
-    end
-
-  private
-
-    def check_style(style)
-      unless [:rpc, :document].include?(style)
-        raise MethodDefinitionError.new("unknown style: #{style}")
-      end
-    end
-
-    def check_use(use)
-      unless [:encoded, :literal].include?(use)
-        raise MethodDefinitionError.new("unknown use: #{use}")
-      end
-    end
-
-    def request_rpc(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_use == :encoded
-        request_rpc_enc(values, mapping_registry, opt)
-      else
-        request_rpc_lit(values, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_doc(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_use == :encoded
-        request_doc_enc(values, mapping_registry, opt)
-      else
-        request_doc_lit(values, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_rpc_enc(values, mapping_registry, opt)
-      method = @rpc_method_factory.dup
-      names = method.input_params
-      obj = create_request_obj(names, values)
-      soap = Mapping.obj2soap(obj, mapping_registry, @rpc_request_qname, opt)
-      method.set_param(soap)
-      method
-    end
-
-    def request_rpc_lit(values, mapping_registry, opt)
-      method = @rpc_method_factory.dup
-      params = {}
-      idx = 0
-      method.input_params.each do |name|
-        params[name] = Mapping.obj2soap(values[idx], mapping_registry, 
-          XSD::QName.new(nil, name), opt)
-        idx += 1
-      end
-      method.set_param(params)
-      method
-    end
-
-    def request_doc_enc(values, mapping_registry, opt)
-      (0...values.size).collect { |idx|
-        ele = Mapping.obj2soap(values[idx], mapping_registry, nil, opt)
-        ele.elename = @doc_request_qnames[idx]
-        ele
-      }
-    end
-
-    def request_doc_lit(values, mapping_registry, opt)
-      (0...values.size).collect { |idx|
-        ele = Mapping.obj2soap(values[idx], mapping_registry,
-          @doc_request_qnames[idx], opt)
-        ele.encodingstyle = LiteralNamespace
-        if ele.respond_to?(:qualified)
-          ele.qualified = @doc_request_qualified[idx]
-        end
-        ele
-      }
-    end
-
-    def response_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        response_rpc_enc(body, mapping_registry, opt)
-      else
-        response_rpc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_doc(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        return *response_doc_enc(body, mapping_registry, opt)
-      else
-        return *response_doc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_rpc_enc(body, mapping_registry, opt)
-      ret = nil
-      if body.response
-        ret = Mapping.soap2obj(body.response, mapping_registry,
-          @rpc_method_factory.retval_class_name, opt)
-      end
-      if body.outparams
-        outparams = body.outparams.collect { |outparam|
-          Mapping.soap2obj(outparam, mapping_registry, nil, opt)
-        }
-        [ret].concat(outparams)
-      else
-        ret
-      end
-    end
-
-    def response_rpc_lit(body, mapping_registry, opt)
-      body.root_node.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry,
-          @rpc_method_factory.retval_class_name, opt)
-      }
-    end
-
-    def response_doc_enc(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def response_doc_lit(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry)
-      }
-    end
-
-    def create_request_obj(names, params)
-      o = Object.new
-      idx = 0
-      while idx < params.length
-        o.instance_variable_set('@' + names[idx], params[idx])
-        idx += 1
-      end
-      o
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/router.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/router.rb
deleted file mode 100644
index 71c6eb6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/router.rb
+++ /dev/null
@@ -1,594 +0,0 @@
-# SOAP4R - RPC Routing library
-# Copyright (C) 2001, 2002, 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/rpc'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/mimemessage'
-require 'soap/header/handlerset'
-
-
-module SOAP
-module RPC
-
-
-class Router
-  include SOAP
-
-  attr_reader :actor
-  attr_accessor :mapping_registry
-  attr_accessor :literal_mapping_registry
-  attr_accessor :generate_explicit_type
-  attr_accessor :external_ces
-
-  def initialize(actor)
-    @actor = actor
-    @mapping_registry = nil
-    @headerhandler = Header::HandlerSet.new
-    @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new
-    @generate_explicit_type = true
-    @external_ces = nil
-    @operation_by_soapaction = {}
-    @operation_by_qname = {}
-    @headerhandlerfactory = []
-  end
-
-  ###
-  ## header handler interface
-  #
-  def add_request_headerhandler(factory)
-    unless factory.respond_to?(:create)
-      raise TypeError.new("factory must respond to 'create'")
-    end
-    @headerhandlerfactory << factory
-  end
-
-  def add_headerhandler(handler)
-    @headerhandler.add(handler)
-  end
-
-  ###
-  ## servant definition interface
-  #
-  def add_rpc_request_servant(factory, namespace)
-    unless factory.respond_to?(:create)
-      raise TypeError.new("factory must respond to 'create'")
-    end
-    obj = factory.create        # a dummy instance for introspection
-    ::SOAP::RPC.defined_methods(obj).each do |name|
-      begin
-        qname = XSD::QName.new(namespace, name)
-        param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
-        opt = create_styleuse_option(:rpc, :encoded)
-        add_rpc_request_operation(factory, qname, nil, name, param_def, opt)
-      rescue SOAP::RPC::MethodDefinitionError => e
-        p e if $DEBUG
-      end
-    end
-  end
-
-  def add_rpc_servant(obj, namespace)
-    ::SOAP::RPC.defined_methods(obj).each do |name|
-      begin
-        qname = XSD::QName.new(namespace, name)
-        param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
-        opt = create_styleuse_option(:rpc, :encoded)
-        add_rpc_operation(obj, qname, nil, name, param_def, opt)
-      rescue SOAP::RPC::MethodDefinitionError => e
-        p e if $DEBUG
-      end
-    end
-  end
-  alias add_servant add_rpc_servant
-
-  ###
-  ## operation definition interface
-  #
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    ensure_styleuse_option(opt, :rpc, :encoded)
-    opt[:request_qname] = qname
-    op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
-      opt)
-    if opt[:request_style] != :rpc
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, qname, op)
-  end
-  alias add_method add_rpc_operation
-  alias add_rpc_method add_rpc_operation
-
-  def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
-    ensure_styleuse_option(opt, :rpc, :encoded)
-    opt[:request_qname] = qname
-    op = RequestScopeOperation.new(soapaction, factory, name, param_def, opt)
-    if opt[:request_style] != :rpc
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, qname, op)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    #
-    # adopt workaround for doc/lit wrapper method
-    # (you should consider to simply use rpc/lit service)
-    #
-    #unless soapaction
-    #  raise RPCRoutingError.new("soapaction is a must for document method")
-    #end
-    ensure_styleuse_option(opt, :document, :literal)
-    op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
-      opt)
-    if opt[:request_style] != :document
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, first_input_part_qname(param_def), op)
-  end
-  alias add_document_method add_document_operation
-
-  def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
-    #
-    # adopt workaround for doc/lit wrapper method
-    # (you should consider to simply use rpc/lit service)
-    #
-    #unless soapaction
-    #  raise RPCRoutingError.new("soapaction is a must for document method")
-    #end
-    ensure_styleuse_option(opt, :document, :literal)
-    op = RequestScopeOperation.new(soapaction, receiver, name, param_def, opt)
-    if opt[:request_style] != :document
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, first_input_part_qname(param_def), op)
-  end
-
-  def route(conn_data)
-    # we cannot set request_default_encodingsyle before parsing the content.
-    env = unmarshal(conn_data)
-    if env.nil?
-      raise ArgumentError.new("illegal SOAP marshal format")
-    end
-    op = lookup_operation(conn_data.soapaction, env.body)
-    headerhandler = @headerhandler.dup
-    @headerhandlerfactory.each do |f|
-      headerhandler.add(f.create)
-    end
-    receive_headers(headerhandler, env.header)
-    soap_response = default_encodingstyle = nil
-    begin
-      soap_response =
-        op.call(env.body, @mapping_registry, @literal_mapping_registry,
-          create_mapping_opt)
-      default_encodingstyle = op.response_default_encodingstyle
-    rescue Exception
-      soap_response = fault($!)
-      default_encodingstyle = nil
-    end
-    conn_data.is_fault = true if soap_response.is_a?(SOAPFault)
-    header = call_headers(headerhandler)
-    body = SOAPBody.new(soap_response)
-    env = SOAPEnvelope.new(header, body)
-    marshal(conn_data, env, default_encodingstyle)
-  end
-
-  # Create fault response string.
-  def create_fault_response(e)
-    env = SOAPEnvelope.new(SOAPHeader.new, SOAPBody.new(fault(e)))
-    opt = {}
-    opt[:external_content] = nil
-    response_string = Processor.marshal(env, opt)
-    conn_data = StreamHandler::ConnectionData.new(response_string)
-    conn_data.is_fault = true
-    if ext = opt[:external_content]
-      mimeize(conn_data, ext)
-    end
-    conn_data
-  end
-
-private
-
-  def first_input_part_qname(param_def)
-    param_def.each do |inout, paramname, typeinfo|
-      if inout == SOAPMethod::IN
-        klass, nsdef, namedef = typeinfo
-        return XSD::QName.new(nsdef, namedef)
-      end
-    end
-    nil
-  end
-
-  def create_styleuse_option(style, use)
-    opt = {}
-    opt[:request_style] = opt[:response_style] = style
-    opt[:request_use] = opt[:response_use] = use
-    opt
-  end
-
-  def ensure_styleuse_option(opt, style, use)
-    opt[:request_style] ||= style
-    opt[:response_style] ||= style
-    opt[:request_use] ||= use
-    opt[:response_use] ||= use
-  end
-
-  def assign_operation(soapaction, qname, op)
-    assigned = false
-    if soapaction and !soapaction.empty?
-      @operation_by_soapaction[soapaction] = op
-      assigned = true
-    end
-    if qname
-      @operation_by_qname[qname] = op
-      assigned = true
-    end
-    unless assigned
-      raise RPCRoutingError.new("cannot assign operation")
-    end
-  end
-
-  def lookup_operation(soapaction, body)
-    if op = @operation_by_soapaction[soapaction]
-      return op
-    end
-    qname = body.root_node.elename
-    if op = @operation_by_qname[qname]
-      return op
-    end
-    if soapaction
-      raise RPCRoutingError.new(
-        "operation: #{soapaction} #{qname} not supported")
-    else
-      raise RPCRoutingError.new("operation: #{qname} not supported")
-    end
-  end
-
-  def call_headers(headerhandler)
-    headers = headerhandler.on_outbound
-    if headers.empty?
-      nil
-    else
-      h = ::SOAP::SOAPHeader.new
-      headers.each do |header|
-        h.add(header.elename.name, header)
-      end
-      h
-    end
-  end
-
-  def receive_headers(headerhandler, headers)
-    headerhandler.on_inbound(headers) if headers
-  end
-
-  def unmarshal(conn_data)
-    opt = {}
-    contenttype = conn_data.receive_contenttype
-    if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
-      opt[:external_content] = {}
-      mime = MIMEMessage.parse("Content-Type: " + contenttype,
-        conn_data.receive_string)
-      mime.parts.each do |part|
-	value = Attachment.new(part.content)
-	value.contentid = part.contentid
-	obj = SOAPAttachment.new(value)
-	opt[:external_content][value.contentid] = obj if value.contentid
-      end
-      opt[:charset] =
-	StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
-      env = Processor.unmarshal(mime.root.content, opt)
-    else
-      opt[:charset] = ::SOAP::StreamHandler.parse_media_type(contenttype)
-      env = Processor.unmarshal(conn_data.receive_string, opt)
-    end
-    charset = opt[:charset]
-    conn_data.send_contenttype = "text/xml; charset=\"#{charset}\""
-    env
-  end
-
-  def marshal(conn_data, env, default_encodingstyle = nil)
-    opt = {}
-    opt[:external_content] = nil
-    opt[:default_encodingstyle] = default_encodingstyle
-    opt[:generate_explicit_type] = @generate_explicit_type
-    response_string = Processor.marshal(env, opt)
-    conn_data.send_string = response_string
-    if ext = opt[:external_content]
-      mimeize(conn_data, ext)
-    end
-    conn_data
-  end
-
-  def mimeize(conn_data, ext)
-    mime = MIMEMessage.new
-    ext.each do |k, v|
-      mime.add_attachment(v.data)
-    end
-    mime.add_part(conn_data.send_string + "\r\n")
-    mime.close
-    conn_data.send_string = mime.content_str
-    conn_data.send_contenttype = mime.headers['content-type'].str
-    conn_data
-  end
-
-  # Create fault response.
-  def fault(e)
-    detail = Mapping::SOAPException.new(e)
-    SOAPFault.new(
-      SOAPString.new('Server'),
-      SOAPString.new(e.to_s),
-      SOAPString.new(@actor),
-      Mapping.obj2soap(detail, @mapping_registry))
-  end
-
-  def create_mapping_opt
-    { :external_ces => @external_ces }
-  end
-
-  class Operation
-    attr_reader :name
-    attr_reader :soapaction
-    attr_reader :request_style
-    attr_reader :response_style
-    attr_reader :request_use
-    attr_reader :response_use
-
-    def initialize(soapaction, name, param_def, opt)
-      @soapaction = soapaction
-      @name = name
-      @request_style = opt[:request_style]
-      @response_style = opt[:response_style]
-      @request_use = opt[:request_use]
-      @response_use = opt[:response_use]
-      check_style(@request_style)
-      check_style(@response_style)
-      check_use(@request_use)
-      check_use(@response_use)
-      if @response_style == :rpc
-        request_qname = opt[:request_qname] or raise
-        @rpc_method_factory =
-          RPC::SOAPMethodRequest.new(request_qname, param_def, @soapaction)
-        @rpc_response_qname = opt[:response_qname]
-      else
-        @doc_request_qnames = []
-        @doc_request_qualified = []
-        @doc_response_qnames = []
-        @doc_response_qualified = []
-        param_def.each do |inout, paramname, typeinfo, eleinfo|
-          klass, nsdef, namedef = typeinfo
-          qualified = eleinfo
-          case inout
-          when SOAPMethod::IN
-            @doc_request_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_request_qualified << qualified
-          when SOAPMethod::OUT
-            @doc_response_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_response_qualified << qualified
-          else
-            raise ArgumentError.new(
-              "illegal inout definition for document style: #{inout}")
-          end
-        end
-      end
-    end
-
-    def request_default_encodingstyle
-      (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def response_default_encodingstyle
-      (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def call(body, mapping_registry, literal_mapping_registry, opt)
-      if @request_style == :rpc
-        values = request_rpc(body, mapping_registry, literal_mapping_registry,
-          opt)
-      else
-        values = request_document(body, mapping_registry,
-          literal_mapping_registry, opt)
-      end
-      result = receiver.method(@name.intern).call(*values)
-      return result if result.is_a?(SOAPFault)
-      if @response_style == :rpc
-        response_rpc(result, mapping_registry, literal_mapping_registry, opt)
-      else
-        response_doc(result, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-  private
-
-    def receiver
-      raise NotImplementedError.new('must be defined in derived class')
-    end
-
-    def request_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      request = body.request
-      unless request.is_a?(SOAPStruct)
-        raise RPCRoutingError.new("not an RPC style")
-      end
-      if @request_use == :encoded
-        request_rpc_enc(request, mapping_registry, opt)
-      else
-        request_rpc_lit(request, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_document(body, mapping_registry, literal_mapping_registry, opt)
-      # ToDo: compare names with @doc_request_qnames
-      if @request_use == :encoded
-        request_doc_enc(body, mapping_registry, opt)
-      else
-        request_doc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_rpc_enc(request, mapping_registry, opt)
-      param = Mapping.soap2obj(request, mapping_registry, nil, opt)
-      request.collect { |key, value|
-        param[key]
-      }
-    end
-
-    def request_rpc_lit(request, mapping_registry, opt)
-      request.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def request_doc_enc(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def request_doc_lit(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def response_rpc(result, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        response_rpc_enc(result, mapping_registry, opt)
-      else
-        response_rpc_lit(result, literal_mapping_registry, opt)
-      end
-    end
-    
-    def response_doc(result, mapping_registry, literal_mapping_registry, opt)
-      if @doc_response_qnames.size == 1 and !result.is_a?(Array)
-        result = [result]
-      end
-      if result.size != @doc_response_qnames.size
-        raise "required #{@doc_response_qnames.size} responses " +
-          "but #{result.size} given"
-      end
-      if @response_use == :encoded
-        response_doc_enc(result, mapping_registry, opt)
-      else
-        response_doc_lit(result, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_rpc_enc(result, mapping_registry, opt)
-      soap_response =
-        @rpc_method_factory.create_method_response(@rpc_response_qname)
-      if soap_response.have_outparam?
-        unless result.is_a?(Array)
-          raise RPCRoutingError.new("out parameter was not returned")
-        end
-        outparams = {}
-        i = 1
-        soap_response.output_params.each do |outparam|
-          outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
-            nil, opt)
-          i += 1
-        end
-        soap_response.set_outparam(outparams)
-        soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
-          nil, opt)
-      else
-        soap_response.retval = Mapping.obj2soap(result, mapping_registry, nil,
-          opt)
-      end
-      soap_response
-    end
-
-    def response_rpc_lit(result, mapping_registry, opt)
-      soap_response =
-        @rpc_method_factory.create_method_response(@rpc_response_qname)
-      if soap_response.have_outparam?
-        unless result.is_a?(Array)
-          raise RPCRoutingError.new("out parameter was not returned")
-        end
-        outparams = {}
-        i = 1
-        soap_response.output_params.each do |outparam|
-          outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
-            XSD::QName.new(nil, outparam), opt)
-          i += 1
-        end
-        soap_response.set_outparam(outparams)
-        soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
-          XSD::QName.new(nil, soap_response.elename), opt)
-      else
-        soap_response.retval = Mapping.obj2soap(result, mapping_registry,
-          XSD::QName.new(nil, soap_response.elename), opt)
-      end
-      soap_response
-    end
-
-    def response_doc_enc(result, mapping_registry, opt)
-      (0...result.size).collect { |idx|
-        ele = Mapping.obj2soap(result[idx], mapping_registry, nil, opt)
-        ele.elename = @doc_response_qnames[idx]
-        ele
-      }
-    end
-
-    def response_doc_lit(result, mapping_registry, opt)
-      (0...result.size).collect { |idx|
-        ele = Mapping.obj2soap(result[idx], mapping_registry,
-          @doc_response_qnames[idx])
-        ele.encodingstyle = LiteralNamespace
-        if ele.respond_to?(:qualified)
-          ele.qualified = @doc_response_qualified[idx]
-        end
-        ele
-      }
-    end
-
-    def check_style(style)
-      unless [:rpc, :document].include?(style)
-        raise ArgumentError.new("unknown style: #{style}")
-      end
-    end
-
-    def check_use(use)
-      unless [:encoded, :literal].include?(use)
-        raise ArgumentError.new("unknown use: #{use}")
-      end
-    end
-  end
-
-  class ApplicationScopeOperation < Operation
-    def initialize(soapaction, receiver, name, param_def, opt)
-      super(soapaction, name, param_def, opt)
-      @receiver = receiver
-    end
-
-  private
-
-    def receiver
-      @receiver
-    end
-  end
-
-  class RequestScopeOperation < Operation
-    def initialize(soapaction, receiver_factory, name, param_def, opt)
-      super(soapaction, name, param_def, opt)
-      unless receiver_factory.respond_to?(:create)
-        raise TypeError.new("factory must respond to 'create'")
-      end
-      @receiver_factory = receiver_factory
-    end
-
-  private
-
-    def receiver
-      @receiver_factory.create
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/rpc.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/rpc.rb
deleted file mode 100644
index a48b525..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/rpc.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# SOAP4R - RPC utility.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-module RPC
-  ServerException = Mapping::MappedException
-
-  def self.defined_methods(obj)
-    if obj.is_a?(Module)
-      obj.methods - Module.methods
-    else
-      obj.methods - Object.instance_methods(true)
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/soaplet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/soaplet.rb
deleted file mode 100644
index 7cccdd3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/soaplet.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-# SOAP4R - SOAP handler servlet for WEBrick
-# Copyright (C) 2001-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'webrick/httpservlet/abstract'
-require 'webrick/httpstatus'
-require 'soap/rpc/router'
-require 'soap/streamHandler'
-begin
-  require 'stringio'
-  require 'zlib'
-rescue LoadError
-  warn("Loading stringio or zlib failed.  No gzipped response supported.") if $DEBUG
-end
-
-
-warn("Overriding WEBrick::Log#debug") if $DEBUG
-require 'webrick/log'
-module WEBrick
-  class Log < BasicLog
-    alias __debug debug
-    def debug(msg = nil)
-      if block_given? and msg.nil?
-        __debug(yield)
-      else
-        __debug(msg)
-      end
-    end
-  end
-end
-
-
-module SOAP
-module RPC
-
-
-class SOAPlet < WEBrick::HTTPServlet::AbstractServlet
-public
-  attr_reader :options
-
-  def initialize(router = nil)
-    @router = router || ::SOAP::RPC::Router.new(self.class.name)
-    @options = {}
-    @config = {}
-  end
-
-  # for backward compatibility
-  def app_scope_router
-    @router
-  end
-
-  # for backward compatibility
-  def add_servant(obj, namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-
-  def allow_content_encoding_gzip=(allow)
-    @options[:allow_content_encoding_gzip] = allow
-  end
-
-  ###
-  ## Servlet interfaces for WEBrick.
-  #
-  def get_instance(config, *options)
-    @config = config
-    self
-  end
-
-  def require_path_info?
-    false
-  end
-
-  def do_GET(req, res)
-    res.header['Allow'] = 'POST'
-    raise WEBrick::HTTPStatus::MethodNotAllowed, "GET request not allowed"
-  end
-
-  def do_POST(req, res)
-    logger.debug { "SOAP request: " + req.body } if logger
-    begin
-      conn_data = ::SOAP::StreamHandler::ConnectionData.new
-      setup_req(conn_data, req)
-      @router.external_ces = @options[:external_ces]
-      conn_data = @router.route(conn_data)
-      setup_res(conn_data, req, res)
-    rescue Exception => e
-      conn_data = @router.create_fault_response(e)
-      res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
-      res.body = conn_data.send_string
-      res['content-type'] = conn_data.send_contenttype || "text/xml"
-    end
-    if res.body.is_a?(IO)
-      res.chunked = true
-      logger.debug { "SOAP response: (chunked response not logged)" } if logger
-    else
-      logger.debug { "SOAP response: " + res.body } if logger
-    end
-  end
-
-private
-
-  def logger
-    @config[:Logger]
-  end
-
-  def setup_req(conn_data, req)
-    conn_data.receive_string = req.body
-    conn_data.receive_contenttype = req['content-type']
-    conn_data.soapaction = parse_soapaction(req.meta_vars['HTTP_SOAPACTION'])
-  end
-
-  def setup_res(conn_data, req, res)
-    res['content-type'] = conn_data.send_contenttype
-    if conn_data.is_fault
-      res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
-    end
-    if outstring = encode_gzip(req, conn_data.send_string)
-      res['content-encoding'] = 'gzip'
-      res['content-length'] = outstring.size
-      res.body = outstring
-    else
-      res.body = conn_data.send_string
-    end
-  end
-
-  def parse_soapaction(soapaction)
-    if !soapaction.nil? and !soapaction.empty?
-      if /^"(.+)"$/ =~ soapaction
-        return $1
-      end
-    end
-    nil
-  end
-
-  def encode_gzip(req, outstring)
-    unless encode_gzip?(req)
-      return nil
-    end
-    begin
-      ostream = StringIO.new
-      gz = Zlib::GzipWriter.new(ostream)
-      gz.write(outstring)
-      ostream.string
-    ensure
-      gz.close
-    end
-  end
-
-  def encode_gzip?(req)
-    @options[:allow_content_encoding_gzip] and defined?(::Zlib) and
-      req['accept-encoding'] and
-      req['accept-encoding'].split(/,\s*/).include?('gzip')
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/standaloneServer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/standaloneServer.rb
deleted file mode 100644
index 080343b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/rpc/standaloneServer.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOAP4R - WEBrick Server
-# Copyright (C) 2003 by NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/rpc/httpserver'
-
-
-module SOAP
-module RPC
-
-
-class StandaloneServer < HTTPServer
-  def initialize(appname, default_namespace, host = "0.0.0.0", port = 8080)
-    @appname = appname
-    @default_namespace = default_namespace
-    @host = host
-    @port = port
-    super(create_config)
-  end
-
-  alias add_servant add_rpc_servant
-  alias add_headerhandler add_rpc_headerhandler
-
-private
-
-  def create_config
-    {
-      :BindAddress => @host,
-      :Port => @port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => @default_namespace,
-      :SOAPHTTPServerApplicationName => @appname,
-    }
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/soap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/soap.rb
deleted file mode 100644
index 12e09ec..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/soap.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# soap/soap.rb: SOAP4R - Base definitions.
-# Copyright (C) 2000-2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/charset'
-
-
-module SOAP
-
-
-VERSION = Version = '1.5.5'
-PropertyName = 'soap/property'
-
-EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
-EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
-LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
-
-NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
-
-EleEnvelope = 'Envelope'
-EleHeader = 'Header'
-EleBody = 'Body'
-EleFault = 'Fault'
-EleFaultString = 'faultstring'
-EleFaultActor = 'faultactor'
-EleFaultCode = 'faultcode'
-EleFaultDetail = 'detail'
-
-AttrMustUnderstand = 'mustUnderstand'
-AttrEncodingStyle = 'encodingStyle'
-AttrActor = 'actor'
-AttrRoot = 'root'
-AttrArrayType = 'arrayType'
-AttrOffset = 'offset'
-AttrPosition = 'position'
-ValueArray = 'Array'
-
-EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
-EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
-EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
-EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
-EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
-EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
-EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
-EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
-AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
-AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
-AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
-AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
-AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
-AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
-ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
-
-Base64Literal = 'base64'
-
-SOAPNamespaceTag = 'env'
-XSDNamespaceTag = 'xsd'
-XSINamespaceTag = 'xsi'
-
-MediaType = 'text/xml'
-
-class Error < StandardError; end
-
-class StreamError < Error; end
-class HTTPStreamError < StreamError; end
-class PostUnavailableError < HTTPStreamError; end
-class MPostUnavailableError < HTTPStreamError; end
-
-class ArrayIndexOutOfBoundsError < Error; end
-class ArrayStoreError < Error; end
-
-class RPCRoutingError < Error; end
-class EmptyResponseError < Error; end
-class ResponseFormatError < Error; end
-
-class UnhandledMustUnderstandHeaderError < Error; end
-
-class FaultError < Error
-  attr_reader :faultcode
-  attr_reader :faultstring
-  attr_reader :faultactor
-  attr_accessor :detail
-
-  def initialize(fault)
-    @faultcode = fault.faultcode
-    @faultstring = fault.faultstring
-    @faultactor = fault.faultactor
-    @detail = fault.detail
-    super(self.to_s)
-  end
-
-  def to_s
-    str = nil
-    if @faultstring and @faultstring.respond_to?('data')
-      str = @faultstring.data
-    end
-    str || '(No faultstring)'
-  end
-end
-
-
-module Env
-  def self.getenv(name)
-    ENV[name.downcase] || ENV[name.upcase]
-  end
-
-  use_proxy = getenv('soap_use_proxy') == 'on'
-  HTTP_PROXY = use_proxy ? getenv('http_proxy') : nil
-  NO_PROXY = use_proxy ? getenv('no_proxy') : nil
-end
-
-
-end
-
-
-unless Object.respond_to?(:instance_variable_get)
-  class Object
-    def instance_variable_get(ivarname)
-      instance_eval(ivarname)
-    end
-
-    def instance_variable_set(ivarname, value)
-      instance_eval("#{ivarname} = value")
-    end
-  end
-end
-
-
-unless Kernel.respond_to?(:warn)
-  module Kernel
-    def warn(msg)
-      STDERR.puts(msg + "\n") unless $VERBOSE.nil?
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/streamHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/streamHandler.rb
deleted file mode 100644
index 672396e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/streamHandler.rb
+++ /dev/null
@@ -1,229 +0,0 @@
-# SOAP4R - Stream handler.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/httpconfigloader'
-begin
-  require 'stringio'
-  require 'zlib'
-rescue LoadError
-  warn("Loading stringio or zlib failed.  No gzipped response support.") if $DEBUG
-end
-
-
-module SOAP
-
-
-class StreamHandler
-  RUBY_VERSION_STRING = "ruby #{ RUBY_VERSION } (#{ RUBY_RELEASE_DATE }) [#{ RUBY_PLATFORM }]"
-
-  class ConnectionData
-    attr_accessor :send_string
-    attr_accessor :send_contenttype
-    attr_accessor :receive_string
-    attr_accessor :receive_contenttype
-    attr_accessor :is_fault
-    attr_accessor :soapaction
-
-    def initialize(send_string = nil)
-      @send_string = send_string
-      @send_contenttype = nil
-      @receive_string = nil
-      @receive_contenttype = nil
-      @is_fault = false
-      @soapaction = nil
-    end
-  end
-
-  def self.parse_media_type(str)
-    if /^#{ MediaType }(?:\s*;\s*charset=([^"]+|"[^"]+"))?$/i !~ str
-      return nil
-    end
-    charset = $1
-    charset.gsub!(/"/, '') if charset
-    charset || 'us-ascii'
-  end
-
-  def self.create_media_type(charset)
-    "#{ MediaType }; charset=#{ charset }"
-  end
-end
-
-
-class HTTPStreamHandler < StreamHandler
-  include SOAP
-
-  begin
-    require 'http-access2'
-    if HTTPAccess2::VERSION < "2.0"
-      raise LoadError.new("http-access/2.0 or later is required.")
-    end
-    Client = HTTPAccess2::Client
-    RETRYABLE = true
-  rescue LoadError
-    warn("Loading http-access2 failed.  Net/http is used.") if $DEBUG
-    require 'soap/netHttpClient'
-    Client = SOAP::NetHttpClient
-    RETRYABLE = false
-  end
-
-
-public
-  
-  attr_reader :client
-  attr_accessor :wiredump_file_base
-  
-  MAX_RETRY_COUNT = 10       	# [times]
-
-  def initialize(options)
-    super()
-    @client = Client.new(nil, "SOAP4R/#{ Version }")
-    @wiredump_file_base = nil
-    @charset = @wiredump_dev = nil
-    @options = options
-    set_options
-    @client.debug_dev = @wiredump_dev
-    @cookie_store = nil
-    @accept_encoding_gzip = false
-  end
-
-  def test_loopback_response
-    @client.test_loopback_response
-  end
-
-  def accept_encoding_gzip=(allow)
-    @accept_encoding_gzip = allow
-  end
-
-  def inspect
-    "#<#{self.class}>"
-  end
-
-  def send(endpoint_url, conn_data, soapaction = nil, charset = @charset)
-    conn_data.soapaction ||= soapaction # for backward conpatibility
-    send_post(endpoint_url, conn_data, charset)
-  end
-
-  def reset(endpoint_url = nil)
-    if endpoint_url.nil?
-      @client.reset_all
-    else
-      @client.reset(endpoint_url)
-    end
-    @client.save_cookie_store if @cookie_store
-  end
-
-private
-
-  def set_options
-    HTTPConfigLoader.set_options(@client, @options)
-    @charset = @options["charset"] || XSD::Charset.xml_encoding_label
-    @options.add_hook("charset") do |key, value|
-      @charset = value
-    end
-    @wiredump_dev = @options["wiredump_dev"]
-    @options.add_hook("wiredump_dev") do |key, value|
-      @wiredump_dev = value
-      @client.debug_dev = @wiredump_dev
-    end
-    set_cookie_store_file(@options["cookie_store_file"])
-    @options.add_hook("cookie_store_file") do |key, value|
-      set_cookie_store_file(value)
-    end
-    ssl_config = @options["ssl_config"]
-    basic_auth = @options["basic_auth"]
-    @options.lock(true)
-    ssl_config.unlock
-    basic_auth.unlock
-  end
-
-  def set_cookie_store_file(value)
-    value = nil if value and value.empty?
-    @cookie_store = value
-    @client.set_cookie_store(@cookie_store) if @cookie_store
-  end
-
-  def send_post(endpoint_url, conn_data, charset)
-    conn_data.send_contenttype ||= StreamHandler.create_media_type(charset)
-
-    if @wiredump_file_base
-      filename = @wiredump_file_base + '_request.xml'
-      f = File.open(filename, "w")
-      f << conn_data.send_string
-      f.close
-    end
-
-    extra = {}
-    extra['Content-Type'] = conn_data.send_contenttype
-    extra['SOAPAction'] = "\"#{ conn_data.soapaction }\""
-    extra['Accept-Encoding'] = 'gzip' if send_accept_encoding_gzip?
-    send_string = conn_data.send_string
-    @wiredump_dev << "Wire dump:\n\n" if @wiredump_dev
-    begin
-      retry_count = 0
-      while true
-        res = @client.post(endpoint_url, send_string, extra)
-        if RETRYABLE and HTTP::Status.redirect?(res.status)
-          retry_count += 1
-          if retry_count >= MAX_RETRY_COUNT
-            raise HTTPStreamError.new("redirect count exceeded")
-          end
-          endpoint_url = res.header["location"][0]
-          puts "redirected to #{endpoint_url}" if $DEBUG
-        else
-          break
-        end
-      end
-    rescue
-      @client.reset(endpoint_url)
-      raise
-    end
-    @wiredump_dev << "\n\n" if @wiredump_dev
-    receive_string = res.content
-    if @wiredump_file_base
-      filename = @wiredump_file_base + '_response.xml'
-      f = File.open(filename, "w")
-      f << receive_string
-      f.close
-    end
-    case res.status
-    when 405
-      raise PostUnavailableError.new("#{ res.status }: #{ res.reason }")
-    when 200, 500
-      # Nothing to do.
-    else
-      raise HTTPStreamError.new("#{ res.status }: #{ res.reason }")
-    end
-    if res.respond_to?(:header) and !res.header['content-encoding'].empty? and
-        res.header['content-encoding'][0].downcase == 'gzip'
-      receive_string = decode_gzip(receive_string)
-    end
-    conn_data.receive_string = receive_string
-    conn_data.receive_contenttype = res.contenttype
-    conn_data
-  end
-
-  def send_accept_encoding_gzip?
-    @accept_encoding_gzip and defined?(::Zlib)
-  end
-
-  def decode_gzip(instring)
-    unless send_accept_encoding_gzip?
-      raise HTTPStreamError.new("Gzipped response content.")
-    end
-    begin
-      gz = Zlib::GzipReader.new(StringIO.new(instring))
-      gz.read
-    ensure
-      gz.close
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/wsdlDriver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/wsdlDriver.rb
deleted file mode 100644
index eba9608..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/soap/wsdlDriver.rb
+++ /dev/null
@@ -1,575 +0,0 @@
-# SOAP4R - SOAP WSDL driver
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/parser'
-require 'wsdl/importer'
-require 'xsd/qname'
-require 'xsd/codegen/gensupport'
-require 'soap/mapping/wsdlencodedregistry'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/driver'
-require 'wsdl/soap/methodDefCreator'
-
-
-module SOAP
-
-
-class WSDLDriverFactory
-  class FactoryError < StandardError; end
-
-  attr_reader :wsdl
-
-  def initialize(wsdl)
-    @wsdl = import(wsdl)
-    @methoddefcreator = WSDL::SOAP::MethodDefCreator.new(@wsdl)
-  end
-  
-  def inspect
-    "#<#{self.class}:#{@wsdl.name}>"
-  end
-
-  def create_rpc_driver(servicename = nil, portname = nil)
-    port = find_port(servicename, portname)
-    drv = SOAP::RPC::Driver.new(port.soap_address.location)
-    init_driver(drv, port)
-    add_operation(drv, port)
-    drv
-  end
-
-  # depricated old interface
-  def create_driver(servicename = nil, portname = nil)
-    warn("WSDLDriverFactory#create_driver is depricated.  Use create_rpc_driver instead.")
-    port = find_port(servicename, portname)
-    WSDLDriver.new(@wsdl, port, nil)
-  end
-
-  # Backward compatibility.
-  alias createDriver create_driver
-
-private
-
-  def find_port(servicename = nil, portname = nil)
-    service = port = nil
-    if servicename
-      service = @wsdl.service(
-        XSD::QName.new(@wsdl.targetnamespace, servicename))
-    else
-      service = @wsdl.services[0]
-    end
-    if service.nil?
-      raise FactoryError.new("service #{servicename} not found in WSDL")
-    end
-    if portname
-      port = service.ports[XSD::QName.new(@wsdl.targetnamespace, portname)]
-      if port.nil?
-        raise FactoryError.new("port #{portname} not found in WSDL")
-      end
-    else
-      port = service.ports.find { |port| !port.soap_address.nil? }
-      if port.nil?
-        raise FactoryError.new("no ports have soap:address")
-      end
-    end
-    if port.soap_address.nil?
-      raise FactoryError.new("soap:address element not found in WSDL")
-    end
-    port
-  end
-
-  def init_driver(drv, port)
-    wsdl_elements = @wsdl.collect_elements
-    wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
-    rpc_decode_typemap = wsdl_types +
-      @wsdl.soap_rpc_complextypes(port.find_binding)
-    drv.proxy.mapping_registry =
-      Mapping::WSDLEncodedRegistry.new(rpc_decode_typemap)
-    drv.proxy.literal_mapping_registry =
-      Mapping::WSDLLiteralRegistry.new(wsdl_types, wsdl_elements)
-  end
-
-  def add_operation(drv, port)
-    port.find_binding.operations.each do |op_bind|
-      op_name = op_bind.soapoperation_name
-      soapaction = op_bind.soapaction || ''
-      orgname = op_name.name
-      name = XSD::CodeGen::GenSupport.safemethodname(orgname)
-      param_def = create_param_def(op_bind)
-      opt = {
-        :request_style => op_bind.soapoperation_style,
-        :response_style => op_bind.soapoperation_style,
-        :request_use => op_bind.input.soapbody_use,
-        :response_use => op_bind.output.soapbody_use,
-        :elementformdefault => false,
-        :attributeformdefault => false
-      }
-      if op_bind.soapoperation_style == :rpc
-        drv.add_rpc_operation(op_name, soapaction, name, param_def, opt)
-      else
-        drv.add_document_operation(soapaction, name, param_def, opt)
-      end
-      if orgname != name and orgname.capitalize == name.capitalize
-        ::SOAP::Mapping.define_singleton_method(drv, orgname) do |*arg|
-          __send__(name, *arg)
-        end
-      end
-    end
-  end
-
-  def import(location)
-    WSDL::Importer.import(location)
-  end
-
-  def create_param_def(op_bind)
-    op = op_bind.find_operation
-    if op_bind.soapoperation_style == :rpc
-      param_def = @methoddefcreator.collect_rpcparameter(op)
-    else
-      param_def = @methoddefcreator.collect_documentparameter(op)
-    end
-    # the first element of typedef in param_def is a String like
-    # "::SOAP::SOAPStruct".  turn this String to a class.
-    param_def.collect { |io, name, typedef|
-      typedef[0] = Mapping.class_from_name(typedef[0])
-      [io, name, typedef]
-    }
-  end
-
-  def partqname(part)
-    if part.type
-      part.type
-    else
-      part.element
-    end
-  end
-
-  def param_def(type, name, klass, partqname)
-    [type, name, [klass, partqname.namespace, partqname.name]]
-  end
-
-  def filter_parts(partsdef, partssource)
-    parts = partsdef.split(/\s+/)
-    partssource.find_all { |part| parts.include?(part.name) }
-  end
-end
-
-
-class WSDLDriver
-  class << self
-    if RUBY_VERSION >= "1.7.0"
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        define_method(name) {
-          @servant.__send__(name)
-        }
-        if assignable
-          aname = name + '='
-          define_method(aname) { |rhs|
-            @servant.__send__(aname, rhs)
-          }
-        end
-      end
-    else
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @servant.#{name}
-          end
-        EOS
-        if assignable
-          module_eval <<-EOS
-            def #{name}=(value)
-              @servant.#{name} = value
-            end
-          EOS
-        end
-      end
-    end
-  end
-
-  __attr_proxy :options
-  __attr_proxy :headerhandler
-  __attr_proxy :streamhandler
-  __attr_proxy :test_loopback_response
-  __attr_proxy :endpoint_url, true
-  __attr_proxy :mapping_registry, true		# for RPC unmarshal
-  __attr_proxy :wsdl_mapping_registry, true	# for RPC marshal
-  __attr_proxy :default_encodingstyle, true
-  __attr_proxy :generate_explicit_type, true
-  __attr_proxy :allow_unqualified_element, true
-
-  def httpproxy
-    @servant.options["protocol.http.proxy"]
-  end
-
-  def httpproxy=(httpproxy)
-    @servant.options["protocol.http.proxy"] = httpproxy
-  end
-
-  def wiredump_dev
-    @servant.options["protocol.http.wiredump_dev"]
-  end
-
-  def wiredump_dev=(wiredump_dev)
-    @servant.options["protocol.http.wiredump_dev"] = wiredump_dev
-  end
-
-  def mandatorycharset
-    @servant.options["protocol.mandatorycharset"]
-  end
-
-  def mandatorycharset=(mandatorycharset)
-    @servant.options["protocol.mandatorycharset"] = mandatorycharset
-  end
-
-  def wiredump_file_base
-    @servant.options["protocol.wiredump_file_base"]
-  end
-
-  def wiredump_file_base=(wiredump_file_base)
-    @servant.options["protocol.wiredump_file_base"] = wiredump_file_base
-  end
-
-  def initialize(wsdl, port, logdev)
-    @servant = Servant__.new(self, wsdl, port, logdev)
-  end
-
-  def inspect
-    "#<#{self.class}:#{@servant.port.name}>"
-  end
-
-  def reset_stream
-    @servant.reset_stream
-  end
-
-  # Backward compatibility.
-  alias generateEncodeType= generate_explicit_type=
-
-  class Servant__
-    include SOAP
-
-    attr_reader :options
-    attr_reader :port
-
-    attr_accessor :soapaction
-    attr_accessor :default_encodingstyle
-    attr_accessor :allow_unqualified_element
-    attr_accessor :generate_explicit_type
-    attr_accessor :mapping_registry
-    attr_accessor :wsdl_mapping_registry
-
-    def initialize(host, wsdl, port, logdev)
-      @host = host
-      @wsdl = wsdl
-      @port = port
-      @logdev = logdev
-      @soapaction = nil
-      @options = setup_options
-      @default_encodingstyle = nil
-      @allow_unqualified_element = nil
-      @generate_explicit_type = false
-      @mapping_registry = nil		# for rpc unmarshal
-      @wsdl_mapping_registry = nil	# for rpc marshal
-      @wiredump_file_base = nil
-      @mandatorycharset = nil
-      @wsdl_elements = @wsdl.collect_elements
-      @wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
-      @rpc_decode_typemap = @wsdl_types +
-	@wsdl.soap_rpc_complextypes(port.find_binding)
-      @wsdl_mapping_registry = Mapping::WSDLEncodedRegistry.new(
-        @rpc_decode_typemap)
-      @doc_mapper = Mapping::WSDLLiteralRegistry.new(
-        @wsdl_types, @wsdl_elements)
-      endpoint_url = @port.soap_address.location
-      # Convert a map which key is QName, to a Hash which key is String.
-      @operation = {}
-      @port.inputoperation_map.each do |op_name, op_info|
-        orgname = op_name.name
-        name = XSD::CodeGen::GenSupport.safemethodname(orgname)
-	@operation[name] = @operation[orgname] = op_info
-	add_method_interface(op_info)
-      end
-      @proxy = ::SOAP::RPC::Proxy.new(endpoint_url, @soapaction, @options)
-    end
-
-    def inspect
-      "#<#{self.class}:#{@proxy.inspect}>"
-    end
-
-    def endpoint_url
-      @proxy.endpoint_url
-    end
-
-    def endpoint_url=(endpoint_url)
-      @proxy.endpoint_url = endpoint_url
-    end
-
-    def headerhandler
-      @proxy.headerhandler
-    end
-
-    def streamhandler
-      @proxy.streamhandler
-    end
-
-    def test_loopback_response
-      @proxy.test_loopback_response
-    end
-
-    def reset_stream
-      @proxy.reset_stream
-    end
-
-    def rpc_call(name, *values)
-      set_wiredump_file_base(name)
-      unless op_info = @operation[name]
-        raise RuntimeError, "method: #{name} not defined"
-      end
-      req_header = create_request_header
-      req_body = create_request_body(op_info, *values)
-      reqopt = create_options({
-        :soapaction => op_info.soapaction || @soapaction})
-      resopt = create_options({
-        :decode_typemap => @rpc_decode_typemap})
-      env = @proxy.route(req_header, req_body, reqopt, resopt)
-      raise EmptyResponseError unless env
-      receive_headers(env.header)
-      begin
-        @proxy.check_fault(env.body)
-      rescue ::SOAP::FaultError => e
-	Mapping.fault2exception(e)
-      end
-      ret = env.body.response ?
-	Mapping.soap2obj(env.body.response, @mapping_registry) : nil
-      if env.body.outparams
-	outparams = env.body.outparams.collect { |outparam|
-  	  Mapping.soap2obj(outparam)
-   	}
-    	return [ret].concat(outparams)
-      else
-      	return ret
-      end
-    end
-
-    # req_header: [[element, mustunderstand, encodingstyle(QName/String)], ...]
-    # req_body: SOAPBasetype/SOAPCompoundtype
-    def document_send(name, header_obj, body_obj)
-      set_wiredump_file_base(name)
-      unless op_info = @operation[name]
-        raise RuntimeError, "method: #{name} not defined"
-      end
-      req_header = header_obj ? header_from_obj(header_obj, op_info) : nil
-      req_body = body_from_obj(body_obj, op_info)
-      opt = create_options({
-        :soapaction => op_info.soapaction || @soapaction,
-        :decode_typemap => @wsdl_types})
-      env = @proxy.invoke(req_header, req_body, opt)
-      raise EmptyResponseError unless env
-      if env.body.fault
-	raise ::SOAP::FaultError.new(env.body.fault)
-      end
-      res_body_obj = env.body.response ?
-	Mapping.soap2obj(env.body.response, @mapping_registry) : nil
-      return env.header, res_body_obj
-    end
-
-  private
-
-    def create_options(hash = nil)
-      opt = {}
-      opt[:default_encodingstyle] = @default_encodingstyle
-      opt[:allow_unqualified_element] = @allow_unqualified_element
-      opt[:generate_explicit_type] = @generate_explicit_type
-      opt.update(hash) if hash
-      opt
-    end
-
-    def set_wiredump_file_base(name)
-      if @wiredump_file_base
-      	@proxy.set_wiredump_file_base(@wiredump_file_base + "_#{name}")
-      end
-    end
-
-    def create_request_header
-      headers = @proxy.headerhandler.on_outbound
-      if headers.empty?
-	nil
-      else
-	h = SOAPHeader.new
-	headers.each do |header|
-	  h.add(header.elename.name, header)
-	end
-	h
-      end
-    end
-
-    def receive_headers(headers)
-      @proxy.headerhandler.on_inbound(headers) if headers
-    end
-
-    def create_request_body(op_info, *values)
-      method = create_method_struct(op_info, *values)
-      SOAPBody.new(method)
-    end
-
-    def create_method_struct(op_info, *params)
-      parts_names = op_info.bodyparts.collect { |part| part.name }
-      obj = create_method_obj(parts_names, params)
-      method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.op_name)
-      if method.members.size != parts_names.size
-	new_method = SOAPStruct.new
-	method.each do |key, value|
-	  if parts_names.include?(key)
-	    new_method.add(key, value)
-	  end
-	end
-	method = new_method
-      end
-      method.elename = op_info.op_name
-      method.type = XSD::QName.new	# Request should not be typed.
-      method
-    end
-
-    def create_method_obj(names, params)
-      o = Object.new
-      idx = 0
-      while idx < params.length
-        o.instance_variable_set('@' + names[idx], params[idx])
-        idx += 1
-      end
-      o
-    end
-
-    def header_from_obj(obj, op_info)
-      if obj.is_a?(SOAPHeader)
-	obj
-      elsif op_info.headerparts.empty?
-	if obj.nil?
-	  nil
-	else
-	  raise RuntimeError.new("no header definition in schema: #{obj}")
-	end
-      elsif op_info.headerparts.size == 1
-       	part = op_info.headerparts[0]
-	header = SOAPHeader.new()
-	header.add(headeritem_from_obj(obj, part.element || part.eletype))
-	header
-      else
-	header = SOAPHeader.new()
-	op_info.headerparts.each do |part|
-	  child = Mapping.get_attribute(obj, part.name)
-	  ele = headeritem_from_obj(child, part.element || part.eletype)
-	  header.add(part.name, ele)
-	end
-	header
-      end
-    end
-
-    def headeritem_from_obj(obj, name)
-      if obj.nil?
-	SOAPElement.new(name)
-      elsif obj.is_a?(SOAPHeaderItem)
-	obj
-      else
-        Mapping.obj2soap(obj, @doc_mapper, name)
-      end
-    end
-
-    def body_from_obj(obj, op_info)
-      if obj.is_a?(SOAPBody)
-	obj
-      elsif op_info.bodyparts.empty?
-	if obj.nil?
-	  nil
-	else
-	  raise RuntimeError.new("no body found in schema")
-	end
-      elsif op_info.bodyparts.size == 1
-       	part = op_info.bodyparts[0]
-	ele = bodyitem_from_obj(obj, part.element || part.type)
-	SOAPBody.new(ele)
-      else
-	body = SOAPBody.new
-	op_info.bodyparts.each do |part|
-	  child = Mapping.get_attribute(obj, part.name)
-	  ele = bodyitem_from_obj(child, part.element || part.type)
-	  body.add(ele.elename.name, ele)
-	end
-	body
-      end
-    end
-
-    def bodyitem_from_obj(obj, name)
-      if obj.nil?
-	SOAPElement.new(name)
-      elsif obj.is_a?(SOAPElement)
-	obj
-      else
-        Mapping.obj2soap(obj, @doc_mapper, name)
-      end
-    end
-
-    def add_method_interface(op_info)
-      name = XSD::CodeGen::GenSupport.safemethodname(op_info.op_name.name)
-      orgname = op_info.op_name.name
-      parts_names = op_info.bodyparts.collect { |part| part.name }
-      case op_info.style
-      when :document
-        if orgname != name and orgname.capitalize == name.capitalize
-          add_document_method_interface(orgname, parts_names)
-        end
-	add_document_method_interface(name, parts_names)
-      when :rpc
-        if orgname != name and orgname.capitalize == name.capitalize
-          add_rpc_method_interface(orgname, parts_names)
-        end
-	add_rpc_method_interface(name, parts_names)
-      else
-	raise RuntimeError.new("unknown style: #{op_info.style}")
-      end
-    end
-
-    def add_rpc_method_interface(name, parts_names)
-      ::SOAP::Mapping.define_singleton_method(@host, name) do |*arg|
-        unless arg.size == parts_names.size
-          raise ArgumentError.new(
-            "wrong number of arguments (#{arg.size} for #{parts_names.size})")
-        end
-        @servant.rpc_call(name, *arg)
-      end
-      @host.method(name)
-    end
-
-    def add_document_method_interface(name, parts_names)
-      ::SOAP::Mapping.define_singleton_method(@host, name) do |h, b|
-        @servant.document_send(name, h, b)
-      end
-      @host.method(name)
-    end
-
-    def setup_options
-      if opt = Property.loadproperty(::SOAP::PropertyName)
-	opt = opt["client"]
-      end
-      opt ||= Property.new
-      opt.add_hook("protocol.mandatorycharset") do |key, value|
-	@mandatorycharset = value
-      end
-      opt.add_hook("protocol.wiredump_file_base") do |key, value|
-	@wiredump_file_base = value
-      end
-      opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
-      opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
-      opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
-      opt
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sync.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sync.rb
deleted file mode 100644
index ae46c48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/sync.rb
+++ /dev/null
@@ -1,311 +0,0 @@
-#
-#   sync.rb - 2 phase lock with counter
-#   	$Release Version: 1.0$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#  Sync_m, Synchronizer_m
-#  Usage:
-#   obj.extend(Sync_m)
-#   or
-#   class Foo
-#	include Sync_m
-#	:
-#   end
-#
-#   Sync_m#sync_mode
-#   Sync_m#sync_locked?, locked?
-#   Sync_m#sync_shared?, shared?
-#   Sync_m#sync_exclusive?, sync_exclusive?
-#   Sync_m#sync_try_lock, try_lock
-#   Sync_m#sync_lock, lock
-#   Sync_m#sync_unlock, unlock
-#
-#   Sync, Synchronicer:
-#	include Sync_m
-#   Usage:
-#   sync = Sync.new
-#
-#   Sync#mode
-#   Sync#locked?
-#   Sync#shared?
-#   Sync#exclusive?
-#   Sync#try_lock(mode) -- mode = :EX, :SH, :UN
-#   Sync#lock(mode)     -- mode = :EX, :SH, :UN
-#   Sync#unlock
-#   Sync#synchronize(mode) {...}
-#   
-#
-
-unless defined? Thread
-  fail "Thread not available for this ruby interpreter"
-end
-
-module Sync_m
-  RCS_ID='-$Header$-'
-  
-  # lock mode
-  UN = :UN
-  SH = :SH
-  EX = :EX
-  
-  # exceptions
-  class Err < StandardError
-    def Err.Fail(*opt)
-      fail self, sprintf(self::Message, *opt)
-    end
-    
-    class UnknownLocker < Err
-      Message = "Thread(%s) not locked."
-      def UnknownLocker.Fail(th)
-	super(th.inspect)
-      end
-    end
-    
-    class LockModeFailer < Err
-      Message = "Unknown lock mode(%s)"
-      def LockModeFailer.Fail(mode)
-	if mode.id2name
-	  mode = id2name
-	end
-	super(mode)
-      end
-    end
-  end
-  
-  def Sync_m.define_aliases(cl)
-    cl.module_eval %q{
-      alias locked? sync_locked?
-      alias shared? sync_shared?
-      alias exclusive? sync_exclusive?
-      alias lock sync_lock
-      alias unlock sync_unlock
-      alias try_lock sync_try_lock
-      alias synchronize sync_synchronize
-    }
-  end
-  
-  def Sync_m.append_features(cl)
-    super
-    unless cl.instance_of?(Module)
-      # do nothing for Modules
-      # make aliases and include the proper module.
-      define_aliases(cl)
-    end
-  end
-  
-  def Sync_m.extend_object(obj)
-    super
-    obj.sync_extended
-  end
-
-  def sync_extended
-    unless (defined? locked? and
-	    defined? shared? and
-	    defined? exclusive? and
-	    defined? lock and
-	    defined? unlock and
-	    defined? try_lock and
-	    defined? synchronize)
-      Sync_m.define_aliases(class<<self;self;end)
-    end
-    sync_initialize
-  end
-
-  # accessing
-  def sync_locked?
-    sync_mode != UN
-  end
-  
-  def sync_shared?
-    sync_mode == SH
-  end
-  
-  def sync_exclusive?
-    sync_mode == EX
-  end
-  
-  # locking methods.
-  def sync_try_lock(mode = EX)
-    return unlock if sync_mode == UN
-    
-    Thread.critical = true
-    ret = sync_try_lock_sub(sync_mode)
-    Thread.critical = false
-    ret
-  end
-  
-  def sync_lock(m = EX)
-    return unlock if m == UN
-
-    until (Thread.critical = true; sync_try_lock_sub(m))
-      if sync_sh_locker[Thread.current]
-	sync_upgrade_waiting.push [Thread.current, sync_sh_locker[Thread.current]]
-	sync_sh_locker.delete(Thread.current)
-      else
-	sync_waiting.push Thread.current
-      end
-      Thread.stop
-    end
-    Thread.critical = false
-    self
-  end
-  
-  def sync_unlock(m = EX)
-    Thread.critical = true
-    if sync_mode == UN
-      Thread.critical = false
-      Err::UnknownLocker.Fail(Thread.current)
-    end
-    
-    m = sync_mode if m == EX and sync_mode == SH
-    
-    runnable = false
-    case m
-    when UN
-      Thread.critical = false
-      Err::UnknownLocker.Fail(Thread.current)
-      
-    when EX
-      if sync_ex_locker == Thread.current
-	if (self.sync_ex_count = sync_ex_count - 1) == 0
-	  self.sync_ex_locker = nil
-	  if sync_sh_locker.include?(Thread.current)
-	    self.sync_mode = SH
-	  else
-	    self.sync_mode = UN
-	  end
-	  runnable = true
-	end
-      else
-	Err::UnknownLocker.Fail(Thread.current)
-      end
-      
-    when SH
-      if (count = sync_sh_locker[Thread.current]).nil?
-	Err::UnknownLocker.Fail(Thread.current)
-      else
-	if (sync_sh_locker[Thread.current] = count - 1) == 0 
-	  sync_sh_locker.delete(Thread.current)
-	  if sync_sh_locker.empty? and sync_ex_count == 0
-	    self.sync_mode = UN
-	    runnable = true
-	  end
-	end
-      end
-    end
-    
-    if runnable
-      if sync_upgrade_waiting.size > 0
-	for k, v in sync_upgrade_waiting
-	  sync_sh_locker[k] = v
-	end
-	wait = sync_upgrade_waiting
-	self.sync_upgrade_waiting = []
-	Thread.critical = false
-	
-	for w, v in wait
-	  w.run
-	end
-      else
-	wait = sync_waiting
-	self.sync_waiting = []
-	Thread.critical = false
-	for w in wait
-	  w.run
-	end
-      end
-    end
-    
-    Thread.critical = false
-    self
-  end
-  
-  def sync_synchronize(mode = EX)
-    begin
-      sync_lock(mode)
-      yield
-    ensure
-      sync_unlock
-    end
-  end
-
-  attr :sync_mode, true
-    
-  attr :sync_waiting, true
-  attr :sync_upgrade_waiting, true
-  attr :sync_sh_locker, true
-  attr :sync_ex_locker, true
-  attr :sync_ex_count, true
-    
-  private
-
-  def sync_initialize
-    @sync_mode = UN
-    @sync_waiting = []
-    @sync_upgrade_waiting = []
-    @sync_sh_locker = Hash.new
-    @sync_ex_locker = nil
-    @sync_ex_count = 0
-  end
-
-  def initialize(*args)
-    sync_initialize
-    super
-  end
-    
-  def sync_try_lock_sub(m)
-    case m
-    when SH
-      case sync_mode
-      when UN
-	self.sync_mode = m
-	sync_sh_locker[Thread.current] = 1
-	ret = true
-      when SH
-	count = 0 unless count = sync_sh_locker[Thread.current]
-	sync_sh_locker[Thread.current] = count + 1
-	ret = true
-      when EX
-	# in EX mode, lock will upgrade to EX lock
-	if sync_ex_locker == Thread.current
-	  self.sync_ex_count = sync_ex_count + 1
-	  ret = true
-	else
-	  ret = false
-	end
-      end
-    when EX
-      if sync_mode == UN or
-	sync_mode == SH && sync_sh_locker.size == 1 && sync_sh_locker.include?(Thread.current) 
-	self.sync_mode = m
-	self.sync_ex_locker = Thread.current
-	self.sync_ex_count = 1
-	ret = true
-      elsif sync_mode == EX && sync_ex_locker == Thread.current
-	self.sync_ex_count = sync_ex_count + 1
-	ret = true
-      else
-	ret = false
-      end
-    else
-      Thread.critical = false
-      Err::LockModeFailer.Fail mode
-    end
-    return ret
-  end
-end
-Synchronizer_m = Sync_m
-
-class Sync
-  #Sync_m.extend_class self
-  include Sync_m
-    
-  def initialize
-    super
-  end
-    
-end
-Synchronizer = Sync
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tempfile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tempfile.rb
deleted file mode 100644
index b02b249..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tempfile.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-#
-# tempfile - manipulates temporary files
-#
-# $Id: tempfile.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require 'delegate'
-require 'tmpdir'
-
-# A class for managing temporary files.  This library is written to be
-# thread safe.
-class Tempfile < DelegateClass(File)
-  MAX_TRY = 10
-  @@cleanlist = []
-
-  # Creates a temporary file of mode 0600 in the temporary directory
-  # whose name is basename.pid.n and opens with mode "w+".  A Tempfile
-  # object works just like a File object.
-  #
-  # If tmpdir is omitted, the temporary directory is determined by
-  # Dir::tmpdir provided by 'tmpdir.rb'.
-  # When $SAFE > 0 and the given tmpdir is tainted, it uses
-  # /tmp. (Note that ENV values are tainted by default)
-  def initialize(basename, tmpdir=Dir::tmpdir)
-    if $SAFE > 0 and tmpdir.tainted?
-      tmpdir = '/tmp'
-    end
-
-    lock = nil
-    n = failure = 0
-    
-    begin
-      Thread.critical = true
-
-      begin
-	tmpname = File.join(tmpdir, make_tmpname(basename, n))
-	lock = tmpname + '.lock'
-	n += 1
-      end while @@cleanlist.include?(tmpname) or
-	File.exist?(lock) or File.exist?(tmpname)
-
-      Dir.mkdir(lock)
-    rescue
-      failure += 1
-      retry if failure < MAX_TRY
-      raise "cannot generate tempfile `%s'" % tmpname
-    ensure
-      Thread.critical = false
-    end
-
-    @data = [tmpname]
-    @clean_proc = Tempfile.callback(@data)
-    ObjectSpace.define_finalizer(self, @clean_proc)
-
-    @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
-    @tmpname = tmpname
-    @@cleanlist << @tmpname
-    @data[1] = @tmpfile
-    @data[2] = @@cleanlist
-
-    super(@tmpfile)
-
-    # Now we have all the File/IO methods defined, you must not
-    # carelessly put bare puts(), etc. after this.
-
-    Dir.rmdir(lock)
-  end
-
-  def make_tmpname(basename, n)
-    sprintf('%s.%d.%d', basename, $$, n)
-  end
-  private :make_tmpname
-
-  # Opens or reopens the file with mode "r+".
-  def open
-    @tmpfile.close if @tmpfile
-    @tmpfile = File.open(@tmpname, 'r+')
-    @data[1] = @tmpfile
-    __setobj__(@tmpfile)
-  end
-
-  def _close	# :nodoc:
-    @tmpfile.close if @tmpfile
-    @data[1] = @tmpfile = nil
-  end    
-  protected :_close
-
-  # Closes the file.  If the optional flag is true, unlinks the file
-  # after closing.
-  #
-  # If you don't explicitly unlink the temporary file, the removal
-  # will be delayed until the object is finalized.
-  def close(unlink_now=false)
-    if unlink_now
-      close!
-    else
-      _close
-    end
-  end
-
-  # Closes and unlinks the file.
-  def close!
-    _close
-    @clean_proc.call
-    ObjectSpace.undefine_finalizer(self)
-  end
-
-  # Unlinks the file.  On UNIX-like systems, it is often a good idea
-  # to unlink a temporary file immediately after creating and opening
-  # it, because it leaves other programs zero chance to access the
-  # file.
-  def unlink
-    # keep this order for thread safeness
-    begin
-      File.unlink(@tmpname) if File.exist?(@tmpname)
-      @@cleanlist.delete(@tmpname)
-      @data = @tmpname = nil
-      ObjectSpace.undefine_finalizer(self)
-    rescue Errno::EACCES
-      # may not be able to unlink on Windows; just ignore
-    end
-  end
-  alias delete unlink
-
-  # Returns the full path name of the temporary file.
-  def path
-    @tmpname
-  end
-
-  # Returns the size of the temporary file.  As a side effect, the IO
-  # buffer is flushed before determining the size.
-  def size
-    if @tmpfile
-      @tmpfile.flush
-      @tmpfile.stat.size
-    else
-      0
-    end
-  end
-  alias length size
-
-  class << self
-    def callback(data)	# :nodoc:
-      pid = $$
-      lambda{
-	if pid == $$ 
-	  path, tmpfile, cleanlist = *data
-
-	  print "removing ", path, "..." if $DEBUG
-
-	  tmpfile.close if tmpfile
-
-	  # keep this order for thread safeness
-	  File.unlink(path) if File.exist?(path)
-	  cleanlist.delete(path) if cleanlist
-
-	  print "done\n" if $DEBUG
-	end
-      }
-    end
-
-    # If no block is given, this is a synonym for new().
-    #
-    # If a block is given, it will be passed tempfile as an argument,
-    # and the tempfile will automatically be closed when the block
-    # terminates.  In this case, open() returns nil.
-    def open(*args)
-      tempfile = new(*args)
-
-      if block_given?
-	begin
-	  yield(tempfile)
-	ensure
-	  tempfile.close
-	end
-
-	nil
-      else
-	tempfile
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-#  $DEBUG = true
-  f = Tempfile.new("foo")
-  f.print("foo\n")
-  f.close
-  f.open
-  p f.gets # => "foo\n"
-  f.close!
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit.rb
deleted file mode 100644
index b71f644..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit.rb
+++ /dev/null
@@ -1,280 +0,0 @@
-require 'test/unit/testcase'
-require 'test/unit/autorunner'
-
-module Test # :nodoc:
-  #
-  # = Test::Unit - Ruby Unit Testing Framework
-  # 
-  # == Introduction
-  # 
-  # Unit testing is making waves all over the place, largely due to the
-  # fact that it is a core practice of XP. While XP is great, unit testing
-  # has been around for a long time and has always been a good idea. One
-  # of the keys to good unit testing, though, is not just writing tests,
-  # but having tests. What's the difference? Well, if you just _write_ a
-  # test and throw it away, you have no guarantee that something won't
-  # change later which breaks your code. If, on the other hand, you _have_
-  # tests (obviously you have to write them first), and run them as often
-  # as possible, you slowly build up a wall of things that cannot break
-  # without you immediately knowing about it. This is when unit testing
-  # hits its peak usefulness.
-  # 
-  # Enter Test::Unit, a framework for unit testing in Ruby, helping you to
-  # design, debug and evaluate your code by making it easy to write and
-  # have tests for it.
-  # 
-  # 
-  # == Notes
-  # 
-  # Test::Unit has grown out of and superceded Lapidary.
-  # 
-  # 
-  # == Feedback
-  # 
-  # I like (and do my best to practice) XP, so I value early releases,
-  # user feedback, and clean, simple, expressive code. There is always
-  # room for improvement in everything I do, and Test::Unit is no
-  # exception. Please, let me know what you think of Test::Unit as it
-  # stands, and what you'd like to see expanded/changed/improved/etc. If
-  # you find a bug, let me know ASAP; one good way to let me know what the
-  # bug is is to submit a new test that catches it :-) Also, I'd love to
-  # hear about any successes you have with Test::Unit, and any
-  # documentation you might add will be greatly appreciated. My contact
-  # info is below.
-  # 
-  # 
-  # == Contact Information
-  # 
-  # A lot of discussion happens about Ruby in general on the ruby-talk
-  # mailing list (http://www.ruby-lang.org/en/ml.html), and you can ask
-  # any questions you might have there. I monitor the list, as do many
-  # other helpful Rubyists, and you're sure to get a quick answer. Of
-  # course, you're also welcome to email me (Nathaniel Talbott) directly
-  # at mailto:testunit at talbott.ws, and I'll do my best to help you out.
-  # 
-  # 
-  # == Credits
-  # 
-  # I'd like to thank...
-  # 
-  # Matz, for a great language!
-  # 
-  # Masaki Suketa, for his work on RubyUnit, which filled a vital need in
-  # the Ruby world for a very long time. I'm also grateful for his help in
-  # polishing Test::Unit and getting the RubyUnit compatibility layer
-  # right. His graciousness in allowing Test::Unit to supercede RubyUnit
-  # continues to be a challenge to me to be more willing to defer my own
-  # rights.
-  # 
-  # Ken McKinlay, for his interest and work on unit testing, and for his
-  # willingness to dialog about it. He was also a great help in pointing
-  # out some of the holes in the RubyUnit compatibility layer.
-  # 
-  # Dave Thomas, for the original idea that led to the extremely simple
-  # "require 'test/unit'", plus his code to improve it even more by
-  # allowing the selection of tests from the command-line. Also, without
-  # RDoc, the documentation for Test::Unit would stink a lot more than it
-  # does now.
-  # 
-  # Everyone who's helped out with bug reports, feature ideas,
-  # encouragement to continue, etc. It's a real privilege to be a part of
-  # the Ruby community.
-  # 
-  # The guys at RoleModel Software, for putting up with me repeating, "But
-  # this would be so much easier in Ruby!" whenever we're coding in Java.
-  # 
-  # My Creator, for giving me life, and giving it more abundantly.
-  # 
-  # 
-  # == License
-  # 
-  # Test::Unit is copyright (c) 2000-2003 Nathaniel Talbott. It is free
-  # software, and is distributed under the Ruby license. See the COPYING
-  # file in the standard Ruby distribution for details.
-  # 
-  # 
-  # == Warranty
-  # 
-  # This software is provided "as is" and without any express or
-  # implied warranties, including, without limitation, the implied
-  # warranties of merchantibility and fitness for a particular
-  # purpose.
-  # 
-  # 
-  # == Author
-  # 
-  # Nathaniel Talbott.
-  # Copyright (c) 2000-2003, Nathaniel Talbott
-  #
-  # ----
-  #
-  # = Usage
-  #
-  # The general idea behind unit testing is that you write a _test_
-  # _method_ that makes certain _assertions_ about your code, working
-  # against a _test_ _fixture_. A bunch of these _test_ _methods_ are
-  # bundled up into a _test_ _suite_ and can be run any time the
-  # developer wants. The results of a run are gathered in a _test_
-  # _result_ and displayed to the user through some UI. So, lets break
-  # this down and see how Test::Unit provides each of these necessary
-  # pieces.
-  #
-  #
-  # == Assertions
-  #
-  # These are the heart of the framework. Think of an assertion as a
-  # statement of expected outcome, i.e. "I assert that x should be equal
-  # to y". If, when the assertion is executed, it turns out to be
-  # correct, nothing happens, and life is good. If, on the other hand,
-  # your assertion turns out to be false, an error is propagated with
-  # pertinent information so that you can go back and make your
-  # assertion succeed, and, once again, life is good. For an explanation
-  # of the current assertions, see Test::Unit::Assertions.
-  #
-  #
-  # == Test Method & Test Fixture
-  #
-  # Obviously, these assertions have to be called within a context that
-  # knows about them and can do something meaningful with their
-  # pass/fail value. Also, it's handy to collect a bunch of related
-  # tests, each test represented by a method, into a common test class
-  # that knows how to run them. The tests will be in a separate class
-  # from the code they're testing for a couple of reasons. First of all,
-  # it allows your code to stay uncluttered with test code, making it
-  # easier to maintain. Second, it allows the tests to be stripped out
-  # for deployment, since they're really there for you, the developer,
-  # and your users don't need them. Third, and most importantly, it
-  # allows you to set up a common test fixture for your tests to run
-  # against.
-  #
-  # What's a test fixture? Well, tests do not live in a vacuum; rather,
-  # they're run against the code they are testing. Often, a collection
-  # of tests will run against a common set of data, also called a
-  # fixture. If they're all bundled into the same test class, they can
-  # all share the setting up and tearing down of that data, eliminating
-  # unnecessary duplication and making it much easier to add related
-  # tests.
-  #
-  # Test::Unit::TestCase wraps up a collection of test methods together
-  # and allows you to easily set up and tear down the same test fixture
-  # for each test. This is done by overriding #setup and/or #teardown,
-  # which will be called before and after each test method that is
-  # run. The TestCase also knows how to collect the results of your
-  # assertions into a Test::Unit::TestResult, which can then be reported
-  # back to you... but I'm getting ahead of myself. To write a test,
-  # follow these steps:
-  #
-  # * Make sure Test::Unit is in your library path.
-  # * require 'test/unit' in your test script.
-  # * Create a class that subclasses Test::Unit::TestCase.
-  # * Add a method that begins with "test" to your class.
-  # * Make assertions in your test method.
-  # * Optionally define #setup and/or #teardown to set up and/or tear
-  #   down your common test fixture.
-  # * You can now run your test as you would any other Ruby
-  #   script... try it and see!
-  #
-  # A really simple test might look like this (#setup and #teardown are
-  # commented out to indicate that they are completely optional):
-  #
-  #     require 'test/unit'
-  #     
-  #     class TC_MyTest < Test::Unit::TestCase
-  #       # def setup
-  #       # end
-  #     
-  #       # def teardown
-  #       # end
-  #     
-  #       def test_fail
-  #         assert(false, 'Assertion was false.')
-  #       end
-  #     end
-  #
-  #
-  # == Test Runners
-  #
-  # So, now you have this great test class, but you still need a way to
-  # run it and view any failures that occur during the run. This is
-  # where Test::Unit::UI::Console::TestRunner (and others, such as
-  # Test::Unit::UI::GTK::TestRunner) comes into play. The console test
-  # runner is automatically invoked for you if you require 'test/unit'
-  # and simply run the file. To use another runner, or to manually
-  # invoke a runner, simply call its run class method and pass in an
-  # object that responds to the suite message with a
-  # Test::Unit::TestSuite. This can be as simple as passing in your
-  # TestCase class (which has a class suite method). It might look
-  # something like this:
-  #
-  #    require 'test/unit/ui/console/testrunner'
-  #    Test::Unit::UI::Console::TestRunner.run(TC_MyTest)
-  #
-  #
-  # == Test Suite
-  #
-  # As more and more unit tests accumulate for a given project, it
-  # becomes a real drag running them one at a time, and it also
-  # introduces the potential to overlook a failing test because you
-  # forget to run it. Suddenly it becomes very handy that the
-  # TestRunners can take any object that returns a Test::Unit::TestSuite
-  # in response to a suite method. The TestSuite can, in turn, contain
-  # other TestSuites or individual tests (typically created by a
-  # TestCase). In other words, you can easily wrap up a group of
-  # TestCases and TestSuites like this:
-  #
-  #  require 'test/unit/testsuite'
-  #  require 'tc_myfirsttests'
-  #  require 'tc_moretestsbyme'
-  #  require 'ts_anothersetoftests'
-  #
-  #  class TS_MyTests
-  #    def self.suite
-  #      suite = Test::Unit::TestSuite.new
-  #      suite << TC_MyFirstTests.suite
-  #      suite << TC_MoreTestsByMe.suite
-  #      suite << TS_AnotherSetOfTests.suite
-  #      return suite
-  #    end
-  #  end
-  #  Test::Unit::UI::Console::TestRunner.run(TS_MyTests)
-  #
-  # Now, this is a bit cumbersome, so Test::Unit does a little bit more
-  # for you, by wrapping these up automatically when you require
-  # 'test/unit'. What does this mean? It means you could write the above
-  # test case like this instead:
-  #
-  #  require 'test/unit'
-  #  require 'tc_myfirsttests'
-  #  require 'tc_moretestsbyme'
-  #  require 'ts_anothersetoftests'
-  #
-  # Test::Unit is smart enough to find all the test cases existing in
-  # the ObjectSpace and wrap them up into a suite for you. It then runs
-  # the dynamic suite using the console TestRunner.
-  #
-  #
-  # == Questions?
-  #
-  # I'd really like to get feedback from all levels of Ruby
-  # practitioners about typos, grammatical errors, unclear statements,
-  # missing points, etc., in this document (or any other).
-  #
-
-  module Unit
-    # If set to false Test::Unit will not automatically run at exit.
-    def self.run=(flag)
-      @run = flag
-    end
-
-    # Automatically run tests at exit?
-    def self.run?
-      @run ||= false
-    end
-  end
-end
-
-at_exit do
-  unless $! || Test::Unit.run?
-    exit Test::Unit::AutoRunner.run
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertionfailederror.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertionfailederror.rb
deleted file mode 100644
index a21e4b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertionfailederror.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # Thrown by Test::Unit::Assertions when an assertion fails.
-    class AssertionFailedError < StandardError
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertions.rb
deleted file mode 100644
index aa97799..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/assertions.rb
+++ /dev/null
@@ -1,622 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertionfailederror'
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    ##
-    # Test::Unit::Assertions contains the standard Test::Unit assertions.
-    # Assertions is included in Test::Unit::TestCase.
-    #
-    # To include it in your own code and use its functionality, you simply
-    # need to rescue Test::Unit::AssertionFailedError. Additionally you may
-    # override add_assertion to get notified whenever an assertion is made.
-    #
-    # Notes:
-    # * The message to each assertion, if given, will be propagated with the
-    #   failure.
-    # * It is easy to add your own assertions based on assert_block().
-    #
-    # = Example Custom Assertion
-    #
-    #   def deny(boolean, message = nil)
-    #     message = build_message message, '<?> is not false or nil.', boolean
-    #     assert_block message do
-    #       not boolean
-    #     end
-    #   end
-
-    module Assertions
-
-      ##
-      # The assertion upon which all other assertions are based. Passes if the
-      # block yields true.
-      #
-      # Example:
-      #   assert_block "Couldn't do the thing" do
-      #     do_the_thing
-      #   end
-
-      public
-      def assert_block(message="assert_block failed.") # :yields: 
-        _wrap_assertion do
-          if (! yield)
-            raise AssertionFailedError.new(message.to_s)
-          end
-        end
-      end
-
-      ##
-      # Asserts that +boolean+ is not false or nil.
-      #
-      # Example:
-      #   assert [1, 2].include?(5)
-
-      public
-      def assert(boolean, message=nil)
-        _wrap_assertion do
-          assert_block("assert should not be called with a block.") { !block_given? }
-          assert_block(build_message(message, "<?> is not true.", boolean)) { boolean }
-        end
-      end
-
-      ##
-      # Passes if +expected+ == +actual.
-      #
-      # Note that the ordering of arguments is important, since a helpful
-      # error message is generated when this one fails that tells you the
-      # values of expected and actual.
-      #
-      # Example:
-      #   assert_equal 'MY STRING', 'my string'.upcase
-
-      public
-      def assert_equal(expected, actual, message=nil)
-        full_message = build_message(message, <<EOT, expected, actual)
-<?> expected but was
-<?>.
-EOT
-        assert_block(full_message) { expected == actual }
-      end
-
-      private
-      def _check_exception_class(args) # :nodoc:
-        args.partition do |klass|
-          next if klass.instance_of?(Module)
-          assert(Exception >= klass, "Should expect a class of exception, #{klass}")
-          true
-        end
-      end
-
-      private
-      def _expected_exception?(actual_exception, exceptions, modules) # :nodoc:
-        exceptions.include?(actual_exception.class) or
-          modules.any? {|mod| actual_exception.is_a?(mod)}
-      end
-
-      ##
-      # Passes if the block raises one of the given exceptions.
-      #
-      # Example:
-      #   assert_raise RuntimeError, LoadError do
-      #     raise 'Boom!!!'
-      #   end
-
-      public
-      def assert_raise(*args)
-        _wrap_assertion do
-          if Module === args.last
-            message = ""
-          else
-            message = args.pop
-          end
-          exceptions, modules = _check_exception_class(args)
-          expected = args.size == 1 ? args.first : args
-          actual_exception = nil
-          full_message = build_message(message, "<?> exception expected but none was thrown.", expected)
-          assert_block(full_message) do
-            begin
-              yield
-            rescue Exception => actual_exception
-              break
-            end
-            false
-          end
-          full_message = build_message(message, "<?> exception expected but was\n?", expected, actual_exception)
-          assert_block(full_message) {_expected_exception?(actual_exception, exceptions, modules)}
-          actual_exception
-        end
-      end
-
-      ##
-      # Alias of assert_raise.
-      #
-      # Will be deprecated in 1.9, and removed in 2.0.
-
-      public
-      def assert_raises(*args, &block)
-        assert_raise(*args, &block)
-      end
-
-      ##
-      # Passes if +object+ .instance_of? +klass+
-      #
-      # Example:
-      #   assert_instance_of String, 'foo'
-
-      public
-      def assert_instance_of(klass, object, message="")
-        _wrap_assertion do
-          assert_equal(Class, klass.class, "assert_instance_of takes a Class as its first argument")
-          full_message = build_message(message, <<EOT, object, klass, object.class)
-<?> expected to be an instance of
-<?> but was
-<?>.
-EOT
-          assert_block(full_message){object.instance_of?(klass)}
-        end
-      end
-
-      ##
-      # Passes if +object+ is nil.
-      #
-      # Example:
-      #   assert_nil [1, 2].uniq!
-
-      public
-      def assert_nil(object, message="")
-        assert_equal(nil, object, message)
-      end
-
-      ##
-      # Passes if +object+ .kind_of? +klass+
-      #
-      # Example:
-      #   assert_kind_of Object, 'foo'
-
-      public
-      def assert_kind_of(klass, object, message="")
-        _wrap_assertion do
-          assert(klass.kind_of?(Module), "The first parameter to assert_kind_of should be a kind_of Module.")
-          full_message = build_message(message, "<?>\nexpected to be kind_of\\?\n<?> but was\n<?>.", object, klass, object.class)
-          assert_block(full_message){object.kind_of?(klass)}
-        end
-      end
-
-      ##
-      # Passes if +object+ .respond_to? +method+
-      #
-      # Example:
-      #   assert_respond_to 'bugbear', :slice
-
-      public
-      def assert_respond_to(object, method, message="")
-        _wrap_assertion do
-          full_message = build_message(nil, "<?>\ngiven as the method name argument to #assert_respond_to must be a Symbol or #respond_to\\?(:to_str).", method)
-
-          assert_block(full_message) do
-            method.kind_of?(Symbol) || method.respond_to?(:to_str)
-          end
-          full_message = build_message(message, <<EOT, object, object.class, method)
-<?>
-of type <?>
-expected to respond_to\\?<?>.
-EOT
-          assert_block(full_message) { object.respond_to?(method) }
-        end
-      end
-
-      ##
-      # Passes if +string+ =~ +pattern+.
-      #
-      # Example:
-      #   assert_match(/\d+/, 'five, 6, seven')
-
-      public
-      def assert_match(pattern, string, message="")
-        _wrap_assertion do
-          pattern = case(pattern)
-            when String
-              Regexp.new(Regexp.escape(pattern))
-            else
-              pattern
-          end
-          full_message = build_message(message, "<?> expected to be =~\n<?>.", string, pattern)
-          assert_block(full_message) { string =~ pattern }
-        end
-      end
-
-      ##
-      # Passes if +actual+ .equal? +expected+ (i.e. they are the same
-      # instance).
-      #
-      # Example:
-      #   o = Object.new
-      #   assert_same o, o
-
-      public
-      def assert_same(expected, actual, message="")
-        full_message = build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__)
-<?>
-with id <?> expected to be equal\\? to
-<?>
-with id <?>.
-EOT
-        assert_block(full_message) { actual.equal?(expected) }
-      end
-
-      ##
-      # Compares the +object1+ with +object2+ using +operator+.
-      #
-      # Passes if object1.__send__(operator, object2) is true.
-      #
-      # Example:
-      #   assert_operator 5, :>=, 4
-
-      public
-      def assert_operator(object1, operator, object2, message="")
-        _wrap_assertion do
-          full_message = build_message(nil, "<?>\ngiven as the operator for #assert_operator must be a Symbol or #respond_to\\?(:to_str).", operator)
-          assert_block(full_message){operator.kind_of?(Symbol) || operator.respond_to?(:to_str)}
-          full_message = build_message(message, <<EOT, object1, AssertionMessage.literal(operator), object2)
-<?> expected to be
-?
-<?>.
-EOT
-          assert_block(full_message) { object1.__send__(operator, object2) }
-        end
-      end
-
-      ##
-      # Passes if block does not raise an exception.
-      #
-      # Example:
-      #   assert_nothing_raised do
-      #     [1, 2].uniq
-      #   end
-
-      public
-      def assert_nothing_raised(*args)
-        _wrap_assertion do
-          if Module === args.last
-            message = ""
-          else
-            message = args.pop
-          end
-          exceptions, modules = _check_exception_class(args)
-          begin
-            yield
-          rescue Exception => e
-            if ((args.empty? && !e.instance_of?(AssertionFailedError)) ||
-                _expected_exception?(e, exceptions, modules))
-              assert_block(build_message(message, "Exception raised:\n?", e)){false}
-            else
-              raise
-            end
-          end
-          nil
-        end
-      end
-
-      ##
-      # Flunk always fails.
-      #
-      # Example:
-      #   flunk 'Not done testing yet.'
-
-      public
-      def flunk(message="Flunked")
-        assert_block(build_message(message)){false}
-      end
-
-      ##
-      # Passes if ! +actual+ .equal? +expected+
-      #
-      # Example:
-      #   assert_not_same Object.new, Object.new
-
-      public
-      def assert_not_same(expected, actual, message="")
-        full_message = build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__)
-<?>
-with id <?> expected to not be equal\\? to
-<?>
-with id <?>.
-EOT
-        assert_block(full_message) { !actual.equal?(expected) }
-      end
-
-      ##
-      # Passes if +expected+ != +actual+
-      #
-      # Example:
-      #   assert_not_equal 'some string', 5
-
-      public
-      def assert_not_equal(expected, actual, message="")
-        full_message = build_message(message, "<?> expected to be != to\n<?>.", expected, actual)
-        assert_block(full_message) { expected != actual }
-      end
-
-      ##
-      # Passes if ! +object+ .nil?
-      #
-      # Example:
-      #   assert_not_nil '1 two 3'.sub!(/two/, '2')
-
-      public
-      def assert_not_nil(object, message="")
-        full_message = build_message(message, "<?> expected to not be nil.", object)
-        assert_block(full_message){!object.nil?}
-      end
-
-      ##
-      # Passes if +regexp+ !~ +string+ 
-      #
-      # Example:
-      #   assert_no_match(/two/, 'one 2 three')
-
-      public
-      def assert_no_match(regexp, string, message="")
-        _wrap_assertion do
-          assert_instance_of(Regexp, regexp, "The first argument to assert_no_match should be a Regexp.")
-          full_message = build_message(message, "<?> expected to not match\n<?>.", regexp, string)
-          assert_block(full_message) { regexp !~ string }
-        end
-      end
-
-      UncaughtThrow = {NameError => /^uncaught throw \`(.+)\'$/,
-                       ThreadError => /^uncaught throw \`(.+)\' in thread /} #`
-
-      ##
-      # Passes if the block throws +expected_symbol+
-      #
-      # Example:
-      #   assert_throws :done do
-      #     throw :done
-      #   end
-
-      public
-      def assert_throws(expected_symbol, message="", &proc)
-        _wrap_assertion do
-          assert_instance_of(Symbol, expected_symbol, "assert_throws expects the symbol that should be thrown for its first argument")
-          assert_block("Should have passed a block to assert_throws."){block_given?}
-          caught = true
-          begin
-            catch(expected_symbol) do
-              proc.call
-              caught = false
-            end
-            full_message = build_message(message, "<?> should have been thrown.", expected_symbol)
-            assert_block(full_message){caught}
-          rescue NameError, ThreadError => error
-            if UncaughtThrow[error.class] !~ error.message
-              raise error
-            end
-            full_message = build_message(message, "<?> expected to be thrown but\n<?> was thrown.", expected_symbol, $1.intern)
-            flunk(full_message)
-          end
-        end
-      end
-
-      ##
-      # Passes if block does not throw anything.
-      #
-      # Example:
-      #  assert_nothing_thrown do
-      #    [1, 2].uniq
-      #  end
-
-      public
-      def assert_nothing_thrown(message="", &proc)
-        _wrap_assertion do
-          assert(block_given?, "Should have passed a block to assert_nothing_thrown")
-          begin
-            proc.call
-          rescue NameError, ThreadError => error
-            if UncaughtThrow[error.class] !~ error.message
-              raise error
-            end
-            full_message = build_message(message, "<?> was thrown when nothing was expected", $1.intern)
-            flunk(full_message)
-          end
-          assert(true, "Expected nothing to be thrown")
-        end
-      end
-
-      ##
-      # Passes if +expected_float+ and +actual_float+ are equal
-      # within +delta+ tolerance.
-      #
-      # Example:
-      #   assert_in_delta 0.05, (50000.0 / 10**6), 0.00001
-
-      public
-      def assert_in_delta(expected_float, actual_float, delta, message="")
-        _wrap_assertion do
-          {expected_float => "first float", actual_float => "second float", delta => "delta"}.each do |float, name|
-            assert_respond_to(float, :to_f, "The arguments must respond to to_f; the #{name} did not")
-          end
-          assert_operator(delta, :>=, 0.0, "The delta should not be negative")
-          full_message = build_message(message, <<EOT, expected_float, actual_float, delta)
-<?> and
-<?> expected to be within
-<?> of each other.
-EOT
-          assert_block(full_message) { (expected_float.to_f - actual_float.to_f).abs <= delta.to_f }
-        end
-      end
-
-      ##
-      # Passes if the method send returns a true value.
-      #
-      # +send_array+ is composed of:
-      # * A receiver
-      # * A method
-      # * Arguments to the method
-      #
-      # Example:
-      #   assert_send [[1, 2], :include?, 4]
-
-      public
-      def assert_send(send_array, message="")
-        _wrap_assertion do
-          assert_instance_of(Array, send_array, "assert_send requires an array of send information")
-          assert(send_array.size >= 2, "assert_send requires at least a receiver and a message name")
-          full_message = build_message(message, <<EOT, send_array[0], AssertionMessage.literal(send_array[1].to_s), send_array[2..-1])
-<?> expected to respond to
-<?(?)> with a true value.
-EOT
-          assert_block(full_message) { send_array[0].__send__(send_array[1], *send_array[2..-1]) }
-        end
-      end
-
-      ##
-      # Builds a failure message.  +head+ is added before the +template+ and
-      # +arguments+ replaces the '?'s positionally in the template.
-
-      public
-      def build_message(head, template=nil, *arguments)
-        template &&= template.chomp
-        return AssertionMessage.new(head, template, arguments)
-      end
-
-      private
-      def _wrap_assertion
-        @_assertion_wrapped ||= false
-        unless (@_assertion_wrapped)
-          @_assertion_wrapped = true
-          begin
-            add_assertion
-            return yield
-          ensure
-            @_assertion_wrapped = false
-          end
-        else
-          return yield
-        end
-      end
-      
-      ##
-      # Called whenever an assertion is made.  Define this in classes that
-      # include Test::Unit::Assertions to record assertion counts.
-
-      private
-      def add_assertion
-      end
-
-      ##
-      # Select whether or not to use the pretty-printer. If this option is set
-      # to false before any assertions are made, pp.rb will not be required.
-
-      public
-      def self.use_pp=(value)
-        AssertionMessage.use_pp = value
-      end
-      
-      # :stopdoc:
-
-      class AssertionMessage
-        @use_pp = true
-        class << self
-          attr_accessor :use_pp
-        end
-
-        class Literal
-          def initialize(value)
-            @value = value
-          end
-          
-          def inspect
-            @value.to_s
-          end
-        end
-
-        class Template
-          def self.create(string)
-            parts = (string ? string.scan(/(?=[^\\])\?|(?:\\\?|[^\?])+/m) : [])
-            self.new(parts)
-          end
-
-          attr_reader :count
-
-          def initialize(parts)
-            @parts = parts
-            @count = parts.find_all{|e| e == '?'}.size
-          end
-
-          def result(parameters)
-            raise "The number of parameters does not match the number of substitutions." if(parameters.size != count)
-            params = parameters.dup
-            @parts.collect{|e| e == '?' ? params.shift : e.gsub(/\\\?/m, '?')}.join('')
-          end
-        end
-
-        def self.literal(value)
-          Literal.new(value)
-        end
-
-        include Util::BacktraceFilter
-
-        def initialize(head, template_string, parameters)
-          @head = head
-          @template_string = template_string
-          @parameters = parameters
-        end
-
-        def convert(object)
-          case object
-            when Exception
-              <<EOM.chop
-Class: <#{convert(object.class)}>
-Message: <#{convert(object.message)}>
----Backtrace---
-#{filter_backtrace(object.backtrace).join("\n")}
----------------
-EOM
-            else
-              if(self.class.use_pp)
-                begin
-                  require 'pp'
-                rescue LoadError
-                  self.class.use_pp = false
-                  return object.inspect
-                end unless(defined?(PP))
-                PP.pp(object, '').chomp
-              else
-                object.inspect
-              end
-          end
-        end
-
-        def template
-          @template ||= Template.create(@template_string)
-        end
-
-        def add_period(string)
-          (string =~ /\.\Z/ ? string : string + '.')
-        end
-
-        def to_s
-          message_parts = []
-          if (@head)
-            head = @head.to_s 
-            unless(head.empty?)
-              message_parts << add_period(head)
-            end
-          end
-          tail = template.result(@parameters.collect{|e| convert(e)})
-          message_parts << tail unless(tail.empty?)
-          message_parts.join("\n")
-        end
-      end
-
-      # :startdoc:
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/autorunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/autorunner.rb
deleted file mode 100644
index 86c9b12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/autorunner.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-require 'test/unit'
-require 'test/unit/ui/testrunnerutilities'
-require 'optparse'
-
-module Test
-  module Unit
-    class AutoRunner
-      def self.run(force_standalone=false, default_dir=nil, argv=ARGV, &block)
-        r = new(force_standalone || standalone?, &block)
-        r.base = default_dir
-        r.process_args(argv)
-        r.run
-      end
-      
-      def self.standalone?
-        return false unless("-e" == $0)
-        ObjectSpace.each_object(Class) do |klass|
-          return false if(klass < TestCase)
-        end
-        true
-      end
-
-      RUNNERS = {
-        :console => proc do |r|
-          require 'test/unit/ui/console/testrunner'
-          Test::Unit::UI::Console::TestRunner
-        end,
-        :gtk => proc do |r|
-          require 'test/unit/ui/gtk/testrunner'
-          Test::Unit::UI::GTK::TestRunner
-        end,
-        :gtk2 => proc do |r|
-          require 'test/unit/ui/gtk2/testrunner'
-          Test::Unit::UI::GTK2::TestRunner
-        end,
-        :fox => proc do |r|
-          require 'test/unit/ui/fox/testrunner'
-          Test::Unit::UI::Fox::TestRunner
-        end,
-        :tk => proc do |r|
-          require 'test/unit/ui/tk/testrunner'
-          Test::Unit::UI::Tk::TestRunner
-        end,
-      }
-
-      OUTPUT_LEVELS = [
-        [:silent, UI::SILENT],
-        [:progress, UI::PROGRESS_ONLY],
-        [:normal, UI::NORMAL],
-        [:verbose, UI::VERBOSE],
-      ]
-
-      COLLECTORS = {
-        :objectspace => proc do |r|
-          require 'test/unit/collector/objectspace'
-          c = Collector::ObjectSpace.new
-          c.filter = r.filters
-          c.collect($0.sub(/\.rb\Z/, ''))
-        end,
-        :dir => proc do |r|
-          require 'test/unit/collector/dir'
-          c = Collector::Dir.new
-          c.filter = r.filters
-          c.pattern.concat(r.pattern) if(r.pattern)
-          c.exclude.concat(r.exclude) if(r.exclude)
-          c.base = r.base
-          $:.push(r.base) if r.base
-          c.collect(*(r.to_run.empty? ? ['.'] : r.to_run))
-        end,
-      }
-
-      attr_reader :suite
-      attr_accessor :output_level, :filters, :to_run, :pattern, :exclude, :base, :workdir
-      attr_writer :runner, :collector
-
-      def initialize(standalone)
-        Unit.run = true
-        @standalone = standalone
-        @runner = RUNNERS[:console]
-        @collector = COLLECTORS[(standalone ? :dir : :objectspace)]
-        @filters = []
-        @to_run = []
-        @output_level = UI::NORMAL
-        @workdir = nil
-        yield(self) if(block_given?)
-      end
-
-      def process_args(args = ARGV)
-        begin
-          options.order!(args) {|arg| @to_run << arg}
-        rescue OptionParser::ParseError => e
-          puts e
-          puts options
-          $! = nil
-          abort
-        else
-          @filters << proc{false} unless(@filters.empty?)
-        end
-        not @to_run.empty?
-      end
-
-      def options
-        @options ||= OptionParser.new do |o|
-          o.banner = "Test::Unit automatic runner."
-          o.banner << "\nUsage: #{$0} [options] [-- untouched arguments]"
-
-          o.on
-          o.on('-r', '--runner=RUNNER', RUNNERS,
-               "Use the given RUNNER.",
-               "(" + keyword_display(RUNNERS) + ")") do |r|
-            @runner = r
-          end
-
-          if(@standalone)
-            o.on('-b', '--basedir=DIR', "Base directory of test suites.") do |b|
-              @base = b
-            end
-
-            o.on('-w', '--workdir=DIR', "Working directory to run tests.") do |w|
-              @workdir = w
-            end
-
-            o.on('-a', '--add=TORUN', Array,
-                 "Add TORUN to the list of things to run;",
-                 "can be a file or a directory.") do |a|
-              @to_run.concat(a)
-            end
-
-            @pattern = []
-            o.on('-p', '--pattern=PATTERN', Regexp,
-                 "Match files to collect against PATTERN.") do |e|
-              @pattern << e
-            end
-
-            @exclude = []
-            o.on('-x', '--exclude=PATTERN', Regexp,
-                 "Ignore files to collect against PATTERN.") do |e|
-              @exclude << e
-            end
-          end
-
-          o.on('-n', '--name=NAME', String,
-               "Runs tests matching NAME.",
-               "(patterns may be used).") do |n|
-            n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
-            case n
-            when Regexp
-              @filters << proc{|t| n =~ t.method_name ? true : nil}
-            else
-              @filters << proc{|t| n == t.method_name ? true : nil}
-            end
-          end
-
-          o.on('-t', '--testcase=TESTCASE', String,
-               "Runs tests in TestCases matching TESTCASE.",
-               "(patterns may be used).") do |n|
-            n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
-            case n
-            when Regexp
-              @filters << proc{|t| n =~ t.class.name ? true : nil}
-            else
-              @filters << proc{|t| n == t.class.name ? true : nil}
-            end
-          end
-
-          o.on('-I', "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
-               "Appends directory list to $LOAD_PATH.") do |dirs|
-            $LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
-          end
-
-          o.on('-v', '--verbose=[LEVEL]', OUTPUT_LEVELS,
-               "Set the output level (default is verbose).",
-               "(" + keyword_display(OUTPUT_LEVELS) + ")") do |l|
-            @output_level = l || UI::VERBOSE
-          end
-
-          o.on('--',
-               "Stop processing options so that the",
-               "remaining options will be passed to the",
-               "test."){o.terminate}
-
-          o.on('-h', '--help', 'Display this help.'){puts o; exit}
-
-          o.on_tail
-          o.on_tail('Deprecated options:')
-
-          o.on_tail('--console', 'Console runner (use --runner).') do
-            warn("Deprecated option (--console).")
-            @runner = RUNNERS[:console]
-          end
-
-          o.on_tail('--gtk', 'GTK runner (use --runner).') do
-            warn("Deprecated option (--gtk).")
-            @runner = RUNNERS[:gtk]
-          end
-
-          o.on_tail('--fox', 'Fox runner (use --runner).') do
-            warn("Deprecated option (--fox).")
-            @runner = RUNNERS[:fox]
-          end
-
-          o.on_tail
-        end
-      end
-
-      def keyword_display(array)
-        list = array.collect {|e, *| e.to_s}
-        Array === array or list.sort!
-        list.collect {|e| e.sub(/^(.)([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')}.join(", ")
-      end
-
-      def run
-        @suite = @collector[self]
-        result = @runner[self] or return false
-        Dir.chdir(@workdir) if @workdir
-        result.run(@suite, @output_level).passed?
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector.rb
deleted file mode 100644
index 9e9e654..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Test
-  module Unit
-    module Collector
-      def initialize
-        @filters = []
-      end
-
-      def filter=(filters)
-        @filters = case(filters)
-          when Proc
-            [filters]
-          when Array
-            filters
-        end
-      end
-
-      def add_suite(destination, suite)
-        to_delete = suite.tests.find_all{|t| !include?(t)}
-        to_delete.each{|t| suite.delete(t)}
-        destination << suite unless(suite.size == 0)
-      end
-
-      def include?(test)
-        return true if(@filters.empty?)
-        @filters.each do |filter|
-          result = filter[test]
-          if(result.nil?)
-            next
-          elsif(!result)
-            return false
-          else
-            return true
-          end
-        end
-        true
-      end
-
-      def sort(suites)
-        suites.sort_by{|s| s.name}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/dir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/dir.rb
deleted file mode 100644
index 97c8d28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/dir.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require 'test/unit/testsuite'
-require 'test/unit/collector'
-
-module Test
-  module Unit
-    module Collector
-      class Dir
-        include Collector
-
-        attr_reader :pattern, :exclude
-        attr_accessor :base
-
-        def initialize(dir=::Dir, file=::File, object_space=::ObjectSpace, req=nil)
-          super()
-          @dir = dir
-          @file = file
-          @object_space = object_space
-          @req = req
-          @pattern = [/\btest_.*\.rb\Z/m]
-          @exclude = []
-        end
-
-        def collect(*from)
-          basedir = @base
-          $:.push(basedir) if basedir
-          if(from.empty?)
-            recursive_collect('.', find_test_cases)
-          elsif(from.size == 1)
-            recursive_collect(from.first, find_test_cases)
-          else
-            suites = []
-            from.each do |f|
-              suite = recursive_collect(f, find_test_cases)
-              suites << suite unless(suite.tests.empty?)
-            end
-            suite = TestSuite.new("[#{from.join(', ')}]")
-            sort(suites).each{|s| suite << s}
-            suite
-          end
-        ensure
-          $:.delete_at($:.rindex(basedir)) if basedir
-        end
-
-        def find_test_cases(ignore=[])
-          cases = []
-          @object_space.each_object(Class) do |c|
-            cases << c if(c < TestCase && !ignore.include?(c))
-          end
-          ignore.concat(cases)
-          cases
-        end
-
-        def recursive_collect(name, already_gathered)
-          sub_suites = []
-          path = realdir(name)
-          if @file.directory?(path)
-	    dir_name = name unless name == '.'
-            @dir.entries(path).each do |e|
-              next if(e == '.' || e == '..')
-              e_name = dir_name ? @file.join(dir_name, e) : e
-              if @file.directory?(realdir(e_name))
-                next if /\ACVS\z/ =~ e
-                sub_suite = recursive_collect(e_name, already_gathered)
-                sub_suites << sub_suite unless(sub_suite.empty?)
-              else
-                next if /~\z/ =~ e_name or /\A\.\#/ =~ e
-                if @pattern and !@pattern.empty?
-                  next unless @pattern.any? {|pat| pat =~ e_name}
-                end
-                if @exclude and !@exclude.empty?
-                  next if @exclude.any? {|pat| pat =~ e_name}
-                end
-                collect_file(e_name, sub_suites, already_gathered)
-              end
-            end
-          else
-            collect_file(name, sub_suites, already_gathered)
-          end
-          suite = TestSuite.new(@file.basename(name))
-          sort(sub_suites).each{|s| suite << s}
-          suite
-        end
-
-        def collect_file(name, suites, already_gathered)
-          dir = @file.dirname(@file.expand_path(name, @base))
-          $:.unshift(dir)
-          if(@req)
-            @req.require(name)
-          else
-            require(name)
-          end
-          find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
-        ensure
-          $:.delete_at($:.rindex(dir)) if(dir)
-        end
-
-	def realdir(path)
-	  if @base
-	    @file.join(@base, path)
-	  else
-	    path
-	  end
-	end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/objectspace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/objectspace.rb
deleted file mode 100644
index d1127a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/collector/objectspace.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/collector'
-
-module Test
-  module Unit
-    module Collector
-      class ObjectSpace
-        include Collector
-        
-        NAME = 'collected from the ObjectSpace'
-        
-        def initialize(source=::ObjectSpace)
-          super()
-          @source = source
-        end
-        
-        def collect(name=NAME)
-          suite = TestSuite.new(name)
-          sub_suites = []
-          @source.each_object(Class) do |klass|
-            if(Test::Unit::TestCase > klass)
-              add_suite(sub_suites, klass.suite)
-            end
-          end
-          sort(sub_suites).each{|s| suite << s}
-          suite
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/error.rb
deleted file mode 100644
index 43a813f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/error.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    # Encapsulates an error in a test. Created by
-    # Test::Unit::TestCase when it rescues an exception thrown
-    # during the processing of a test.
-    class Error
-      include Util::BacktraceFilter
-
-      attr_reader(:test_name, :exception)
-
-      SINGLE_CHARACTER = 'E'
-
-      # Creates a new Error with the given test_name and
-      # exception.
-      def initialize(test_name, exception)
-        @test_name = test_name
-        @exception = exception
-      end
-
-      # Returns a single character representation of an error.
-      def single_character_display
-        SINGLE_CHARACTER
-      end
-
-      # Returns the message associated with the error.
-      def message
-        "#{@exception.class.name}: #{@exception.message}"
-      end
-
-      # Returns a brief version of the error description.
-      def short_display
-        "#@test_name: #{message.split("\n")[0]}"
-      end
-
-      # Returns a verbose version of the error description.
-      def long_display
-        backtrace = filter_backtrace(@exception.backtrace).join("\n    ")
-        "Error:\n#@test_name:\n#{message}\n    #{backtrace}"
-      end
-
-      # Overridden to return long_display.
-      def to_s
-        long_display
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/failure.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/failure.rb
deleted file mode 100644
index 832c998..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/failure.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # Encapsulates a test failure. Created by Test::Unit::TestCase
-    # when an assertion fails.
-    class Failure
-      attr_reader :test_name, :location, :message
-      
-      SINGLE_CHARACTER = 'F'
-
-      # Creates a new Failure with the given location and
-      # message.
-      def initialize(test_name, location, message)
-        @test_name = test_name
-        @location = location
-        @message = message
-      end
-      
-      # Returns a single character representation of a failure.
-      def single_character_display
-        SINGLE_CHARACTER
-      end
-
-      # Returns a brief version of the error description.
-      def short_display
-        "#@test_name: #{@message.split("\n")[0]}"
-      end
-
-      # Returns a verbose version of the error description.
-      def long_display
-        location_display = if(location.size == 1)
-          location[0].sub(/\A(.+:\d+).*/, ' [\\1]')
-        else
-          "\n    [#{location.join("\n     ")}]"
-        end
-        "Failure:\n#@test_name#{location_display}:\n#@message"
-      end
-
-      # Overridden to return long_display.
-      def to_s
-        long_display
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testcase.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testcase.rb
deleted file mode 100644
index f53b460..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testcase.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertions'
-require 'test/unit/failure'
-require 'test/unit/error'
-require 'test/unit/testsuite'
-require 'test/unit/assertionfailederror'
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    # Ties everything together. If you subclass and add your own
-    # test methods, it takes care of making them into tests and
-    # wrapping those tests into a suite. It also does the
-    # nitty-gritty of actually running an individual test and
-    # collecting its results into a Test::Unit::TestResult object.
-    class TestCase
-      include Assertions
-      include Util::BacktraceFilter
-      
-      attr_reader :method_name
-      
-      STARTED = name + "::STARTED"
-      FINISHED = name + "::FINISHED"
-
-      ##
-      # These exceptions are not caught by #run.
-
-      PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, Interrupt,
-                                SystemExit]
-
-      # Creates a new instance of the fixture for running the
-      # test represented by test_method_name.
-      def initialize(test_method_name)
-        unless(respond_to?(test_method_name) and
-               (method(test_method_name).arity == 0 ||
-                method(test_method_name).arity == -1))
-          throw :invalid_test
-        end
-        @method_name = test_method_name
-        @test_passed = true
-      end
-
-      # Rolls up all of the test* methods in the fixture into
-      # one suite, creating a new instance of the fixture for
-      # each method.
-      def self.suite
-        method_names = public_instance_methods(true)
-        tests = method_names.delete_if {|method_name| method_name !~ /^test./}
-        suite = TestSuite.new(name)
-        tests.sort.each do
-          |test|
-          catch(:invalid_test) do
-            suite << new(test)
-          end
-        end
-        if (suite.empty?)
-          catch(:invalid_test) do
-            suite << new("default_test")
-          end
-        end
-        return suite
-      end
-
-      # Runs the individual test method represented by this
-      # instance of the fixture, collecting statistics, failures
-      # and errors in result.
-      def run(result)
-        yield(STARTED, name)
-        @_result = result
-        begin
-          setup
-          __send__(@method_name)
-        rescue AssertionFailedError => e
-          add_failure(e.message, e.backtrace)
-        rescue Exception
-          raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
-          add_error($!)
-        ensure
-          begin
-            teardown
-          rescue AssertionFailedError => e
-            add_failure(e.message, e.backtrace)
-          rescue Exception
-            raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
-            add_error($!)
-          end
-        end
-        result.add_run
-        yield(FINISHED, name)
-      end
-
-      # Called before every test method runs. Can be used
-      # to set up fixture information.
-      def setup
-      end
-
-      # Called after every test method runs. Can be used to tear
-      # down fixture information.
-      def teardown
-      end
-      
-      def default_test
-        flunk("No tests were specified")
-      end
-
-      # Returns whether this individual test passed or
-      # not. Primarily for use in teardown so that artifacts
-      # can be left behind if the test fails.
-      def passed?
-        return @test_passed
-      end
-      private :passed?
-
-      def size
-        1
-      end
-
-      def add_assertion
-        @_result.add_assertion
-      end
-      private :add_assertion
-
-      def add_failure(message, all_locations=caller())
-        @test_passed = false
-        @_result.add_failure(Failure.new(name, filter_backtrace(all_locations), message))
-      end
-      private :add_failure
-
-      def add_error(exception)
-        @test_passed = false
-        @_result.add_error(Error.new(name, exception))
-      end
-      private :add_error
-
-      # Returns a human-readable name for the specific test that
-      # this instance of TestCase represents.
-      def name
-        "#{@method_name}(#{self.class.name})"
-      end
-
-      # Overridden to return #name.
-      def to_s
-        name
-      end
-      
-      # It's handy to be able to compare TestCase instances.
-      def ==(other)
-        return false unless(other.kind_of?(self.class))
-        return false unless(@method_name == other.method_name)
-        self.class == other.class
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testresult.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testresult.rb
deleted file mode 100644
index e3a472e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testresult.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-#--
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/observable'
-
-module Test
-  module Unit
-
-    # Collects Test::Unit::Failure and Test::Unit::Error so that
-    # they can be displayed to the user. To this end, observers
-    # can be added to it, allowing the dynamic updating of, say, a
-    # UI.
-    class TestResult
-      include Util::Observable
-
-      CHANGED = "CHANGED"
-      FAULT = "FAULT"
-
-      attr_reader(:run_count, :assertion_count)
-
-      # Constructs a new, empty TestResult.
-      def initialize
-        @run_count, @assertion_count = 0, 0
-        @failures, @errors = Array.new, Array.new
-      end
-
-      # Records a test run.
-      def add_run
-        @run_count += 1
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records a Test::Unit::Failure.
-      def add_failure(failure)
-        @failures << failure
-        notify_listeners(FAULT, failure)
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records a Test::Unit::Error.
-      def add_error(error)
-        @errors << error
-        notify_listeners(FAULT, error)
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records an individual assertion.
-      def add_assertion
-        @assertion_count += 1
-        notify_listeners(CHANGED, self)
-      end
-
-      # Returns a string contain the recorded runs, assertions,
-      # failures and errors in this TestResult.
-      def to_s
-        "#{run_count} tests, #{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
-      end
-
-      # Returns whether or not this TestResult represents
-      # successful completion.
-      def passed?
-        return @failures.empty? && @errors.empty?
-      end
-
-      # Returns the number of failures this TestResult has
-      # recorded.
-      def failure_count
-        return @failures.size
-      end
-
-      # Returns the number of errors this TestResult has
-      # recorded.
-      def error_count
-        return @errors.size
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testsuite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testsuite.rb
deleted file mode 100644
index 6fea976..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/testsuite.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # A collection of tests which can be #run.
-    #
-    # Note: It is easy to confuse a TestSuite instance with
-    # something that has a static suite method; I know because _I_
-    # have trouble keeping them straight. Think of something that
-    # has a suite method as simply providing a way to get a
-    # meaningful TestSuite instance.
-    class TestSuite
-      attr_reader :name, :tests
-      
-      STARTED = name + "::STARTED"
-      FINISHED = name + "::FINISHED"
-
-      # Creates a new TestSuite with the given name.
-      def initialize(name="Unnamed TestSuite")
-        @name = name
-        @tests = []
-      end
-
-      # Runs the tests and/or suites contained in this
-      # TestSuite.
-      def run(result, &progress_block)
-        yield(STARTED, name)
-        @tests.each do |test|
-          test.run(result, &progress_block)
-        end
-        yield(FINISHED, name)
-      end
-
-      # Adds the test to the suite.
-      def <<(test)
-        @tests << test
-        self
-      end
-
-      def delete(test)
-        @tests.delete(test)
-      end
-
-      # Retuns the rolled up number of tests in this suite;
-      # i.e. if the suite contains other suites, it counts the
-      # tests within those suites, not the suites themselves.
-      def size
-        total_size = 0
-        @tests.each { |test| total_size += test.size }
-        total_size
-      end
-      
-      def empty?
-        tests.empty?
-      end
-
-      # Overridden to return the name given the suite at
-      # creation.
-      def to_s
-        @name
-      end
-      
-      # It's handy to be able to compare TestSuite instances.
-      def ==(other)
-        return false unless(other.kind_of?(self.class))
-        return false unless(@name == other.name)
-        @tests == other.tests
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/console/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/console/testrunner.rb
deleted file mode 100644
index 6b600e3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/console/testrunner.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module Console
-
-        # Runs a Test::Unit::TestSuite on the console.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite. If quiet_mode is true, the output while
-          # running is limited to progress dots, errors and
-          # failures, and the final result. io specifies
-          # where runner output should go to; defaults to
-          # STDOUT.
-          def initialize(suite, output_level=NORMAL, io=STDOUT)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @output_level = output_level
-            @io = io
-            @already_outputted = false
-            @faults = []
-          end
-
-          # Begins the test run.
-          def start
-            setup_mediator
-            attach_to_mediator
-            return start_mediator
-          end
-
-          private
-          def setup_mediator
-            @mediator = create_mediator(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            output("Loaded suite #{suite_name}")
-          end
-          
-          def create_mediator(suite)
-            return TestRunnerMediator.new(suite)
-          end
-          
-          def attach_to_mediator
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-          end
-          
-          def start_mediator
-            return @mediator.run_suite
-          end
-          
-          def add_fault(fault)
-            @faults << fault
-            output_single(fault.single_character_display, PROGRESS_ONLY)
-            @already_outputted = true
-          end
-          
-          def started(result)
-            @result = result
-            output("Started")
-          end
-          
-          def finished(elapsed_time)
-            nl
-            output("Finished in #{elapsed_time} seconds.")
-            @faults.each_with_index do |fault, index|
-              nl
-              output("%3d) %s" % [index + 1, fault.long_display])
-            end
-            nl
-            output(@result)
-          end
-          
-          def test_started(name)
-            output_single(name + ": ", VERBOSE)
-          end
-          
-          def test_finished(name)
-            output_single(".", PROGRESS_ONLY) unless (@already_outputted)
-            nl(VERBOSE)
-            @already_outputted = false
-          end
-          
-          def nl(level=NORMAL)
-            output("", level)
-          end
-          
-          def output(something, level=NORMAL)
-            @io.puts(something) if (output?(level))
-            @io.flush
-          end
-          
-          def output_single(something, level=NORMAL)
-            @io.write(something) if (output?(level))
-            @io.flush
-          end
-          
-          def output?(level)
-            level <= @output_level
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Console::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/fox/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/fox/testrunner.rb
deleted file mode 100644
index a23a450..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/fox/testrunner.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'fox'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-include Fox
-
-module Test
-  module Unit
-    module UI
-      module Fox
-
-        # Runs a Test::Unit::TestSuite in a Fox UI. Obviously,
-        # this one requires you to have Fox
-        # (http://www.fox-toolkit.org/fox.html) and the Ruby
-        # Fox extension (http://fxruby.sourceforge.net/)
-        # installed.
-        class TestRunner
-
-          extend TestRunnerUtilities
-          
-          RED_STYLE = FXRGBA(0xFF,0,0,0xFF) #0xFF000000
-          GREEN_STYLE = FXRGBA(0,0xFF,0,0xFF) #0x00FF0000
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-
-            @result = nil
-            @red = false
-          end
-  
-          # Begins the test run.
-          def start
-            setup_ui
-            setup_mediator
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            @suite_name_entry.text = suite_name
-          end
-          
-          def attach_to_mediator
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-  
-          def start_ui
-            @application.create
-            @window.show(PLACEMENT_SCREEN)
-            @application.addTimeout(1) do
-              @mediator.run_suite
-            end
-            @application.run
-          end
-          
-          def stop
-            @application.exit(0)
-          end
-          
-          def reset_ui(count)
-            @test_progress_bar.barColor = GREEN_STYLE
-            @test_progress_bar.total = count
-            @test_progress_bar.progress = 0
-            @red = false
-  
-            @test_count_label.text = "0"
-            @assertion_count_label.text = "0"
-            @failure_count_label.text = "0"
-            @error_count_label.text = "0"
-  
-            @fault_list.clearItems
-          end
-          
-          def add_fault(fault)
-            if ( ! @red )
-              @test_progress_bar.barColor = RED_STYLE
-              @red = true
-            end
-            item = FaultListItem.new(fault)
-            @fault_list.appendItem(item)
-          end
-          
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-          
-          def raw_show_fault(string)
-            @detail_text.setText(string)
-          end
-          
-          def clear_fault
-            raw_show_fault("")
-          end
-          
-          def result_changed(result)
-            @test_progress_bar.progress = result.run_count
-  
-            @test_count_label.text = result.run_count.to_s
-            @assertion_count_label.text = result.assertion_count.to_s
-            @failure_count_label.text = result.failure_count.to_s
-            @error_count_label.text = result.error_count.to_s
-
-             # repaint now!
-             @info_panel.repaint
-             @application.flush
-          end
-          
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-          
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-          
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-          
-          def output_status(string)
-            @status_entry.text = string
-            @status_entry.repaint
-          end
-  
-          def setup_ui
-            @application = create_application
-            create_tooltip(@application)
-
-            @window = create_window(@application)
-            
-            @status_entry = create_entry(@window)
-            
-            main_panel = create_main_panel(@window)
-            
-            suite_panel = create_suite_panel(main_panel)
-            create_label(suite_panel, "Suite:")
-            @suite_name_entry = create_entry(suite_panel)
-            create_button(suite_panel, "&Run\tRun the current suite", proc { @mediator.run_suite })
-            
-            @test_progress_bar = create_progress_bar(main_panel)
-            
-            @info_panel = create_info_panel(main_panel)
-            create_label(@info_panel, "Tests:")
-            @test_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Assertions:")
-            @assertion_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Failures:")
-            @failure_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Errors:")
-            @error_count_label = create_label(@info_panel, "0")
-            
-            list_panel = create_list_panel(main_panel)
-            @fault_list = create_fault_list(list_panel)
-            
-            detail_panel = create_detail_panel(main_panel)
-            @detail_text = create_text(detail_panel)
-          end
-          
-          def create_application
-            app = FXApp.new("TestRunner", "Test::Unit")
-            app.init([])
-            app
-          end
-          
-          def create_window(app)
-            FXMainWindow.new(app, "Test::Unit TestRunner", nil, nil, DECOR_ALL, 0, 0, 450)
-          end
-          
-          def create_tooltip(app)
-            FXTooltip.new(app)
-          end
-  
-          def create_main_panel(parent)
-            panel = FXVerticalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y)
-            panel.vSpacing = 10
-            panel
-          end
-  
-          def create_suite_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_SIDE_LEFT | LAYOUT_FILL_X)
-          end
-          
-          def create_button(parent, text, action)
-            FXButton.new(parent, text).connect(SEL_COMMAND, &action)
-          end
-          
-          def create_progress_bar(parent)
-            FXProgressBar.new(parent, nil, 0, PROGRESSBAR_NORMAL | LAYOUT_FILL_X)
-          end
-          
-          def create_info_panel(parent)
-            FXMatrix.new(parent, 1, MATRIX_BY_ROWS | LAYOUT_FILL_X)
-          end
-          
-          def create_label(parent, text)
-            FXLabel.new(parent, text, nil, JUSTIFY_CENTER_X | LAYOUT_FILL_COLUMN)
-          end
-          
-          def create_list_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_FILL_X | FRAME_SUNKEN | FRAME_THICK)
-          end
-          
-          def create_fault_list(parent)
-            list = FXList.new(parent, 10, nil, 0, LIST_SINGLESELECT | LAYOUT_FILL_X) #, 0, 0, 0, 150)
-            list.connect(SEL_COMMAND) do |sender, sel, ptr|
-              if sender.retrieveItem(sender.currentItem).selected?
-                show_fault(sender.retrieveItem(sender.currentItem).fault)
-              else
-                clear_fault
-              end
-            end
-            list
-          end
-          
-          def create_detail_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK)
-          end
-          
-          def create_text(parent)
-            FXText.new(parent, nil, 0, TEXT_READONLY | LAYOUT_FILL_X | LAYOUT_FILL_Y)
-          end
-          
-          def create_entry(parent)
-            entry = FXTextField.new(parent, 30, nil, 0, TEXTFIELD_NORMAL | LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X)
-            entry.disable
-            entry
-          end
-        end
-  
-        class FaultListItem < FXListItem
-          attr_reader(:fault)
-          def initialize(fault)
-            super(fault.short_display)
-            @fault = fault
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Fox::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk/testrunner.rb
deleted file mode 100644
index 994328d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk/testrunner.rb
+++ /dev/null
@@ -1,416 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'gtk'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module GTK
-
-        # Runs a Test::Unit::TestSuite in a Gtk UI. Obviously,
-        # this one requires you to have Gtk
-        # (http://www.gtk.org/) and the Ruby Gtk extension
-        # (http://ruby-gnome.sourceforge.net/) installed.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              Gtk.main
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end
-
-          # Begins the test run.
-          def start
-            setup_mediator
-            setup_ui
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          private
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            suite_name_entry.set_text(suite_name)
-          end
-          
-          def attach_to_mediator
-            run_button.signal_connect("clicked", nil, &method(:run_test))
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-
-          def run_test(*)
-            @runner.raise(@restart_signal)
-          end
-          
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  run_button.child.text = "Stop"
-                  @mediator.run_suite
-                else
-                  run_button.child.text = "Run"
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end
-          
-          def stop(*)
-            Gtk.main_quit
-          end
-          
-          def reset_ui(count)
-            test_progress_bar.set_style(green_style)
-            test_progress_bar.configure(0, 0, count)
-            @red = false
-  
-            run_count_label.set_text("0")
-            assertion_count_label.set_text("0")
-            failure_count_label.set_text("0")
-            error_count_label.set_text("0")
-  
-            fault_list.remove_items(fault_list.children)
-          end
-          
-          def add_fault(fault)
-            if ( ! @red )
-              test_progress_bar.set_style(red_style)
-              @red = true
-            end
-            item = FaultListItem.new(fault)
-            item.show
-            fault_list.append_items([item])
-          end
-          
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-          
-          def raw_show_fault(string)
-            fault_detail_label.set_text(string)
-            outer_detail_sub_panel.queue_resize
-          end
-          
-          def clear_fault
-            raw_show_fault("")
-          end
-          
-          def result_changed(result)
-            run_count_label.set_text(result.run_count.to_s)
-            assertion_count_label.set_text(result.assertion_count.to_s)
-            failure_count_label.set_text(result.failure_count.to_s)
-            error_count_label.set_text(result.error_count.to_s)
-          end
-          
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-          
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-          
-          def test_finished(test_name)
-            test_progress_bar.set_value(test_progress_bar.get_value + 1)
-          end
-          
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-          
-          def output_status(string)
-            status_entry.set_text(string)
-          end
-  
-          def setup_ui
-            main_window.signal_connect("destroy", nil, &method(:stop))
-            main_window.show_all
-            fault_list.signal_connect("select-child", nil) {
-              | list, item, data |
-              show_fault(item.fault)
-            }
-            fault_list.signal_connect("unselect-child", nil) {
-              clear_fault
-            }
-            @red = false
-          end
-          
-          def main_window
-            lazy_initialize(:main_window) {
-              @main_window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
-              @main_window.set_title("Test::Unit TestRunner")
-              @main_window.set_usize(800, 600)
-              @main_window.set_uposition(20, 20)
-              @main_window.set_policy(true, true, false)
-              @main_window.add(main_panel)
-            }
-          end
-          
-          def main_panel
-            lazy_initialize(:main_panel) {
-              @main_panel = Gtk::VBox.new(false, 0)
-              @main_panel.pack_start(suite_panel, false, false, 0)
-              @main_panel.pack_start(progress_panel, false, false, 0)
-              @main_panel.pack_start(info_panel, false, false, 0)
-              @main_panel.pack_start(list_panel, false, false, 0)
-              @main_panel.pack_start(detail_panel, true, true, 0)
-              @main_panel.pack_start(status_panel, false, false, 0)
-            }
-          end
-          
-          def suite_panel
-            lazy_initialize(:suite_panel) {
-              @suite_panel = Gtk::HBox.new(false, 10)
-              @suite_panel.border_width(10)
-              @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0)
-              @suite_panel.pack_start(suite_name_entry, true, true, 0)
-              @suite_panel.pack_start(run_button, false, false, 0)
-            }
-          end
-          
-          def suite_name_entry
-            lazy_initialize(:suite_name_entry) {
-              @suite_name_entry = Gtk::Entry.new
-              @suite_name_entry.set_editable(false)
-            }
-          end
-          
-          def run_button
-            lazy_initialize(:run_button) {
-              @run_button = Gtk::Button.new("Run")
-            }
-          end
-          
-          def progress_panel
-            lazy_initialize(:progress_panel) {
-              @progress_panel = Gtk::HBox.new(false, 10)
-              @progress_panel.border_width(10)
-              @progress_panel.pack_start(test_progress_bar, true, true, 0)
-            }
-          end
-          
-          def test_progress_bar
-            lazy_initialize(:test_progress_bar) {
-              @test_progress_bar = EnhancedProgressBar.new
-              @test_progress_bar.set_usize(@test_progress_bar.allocation.width,
-                                           info_panel.size_request.height)
-              @test_progress_bar.set_style(green_style)
-            }
-          end
-          
-          def green_style
-            lazy_initialize(:green_style) {
-              @green_style = Gtk::Style.new
-              @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000)
-            }
-          end
-          
-          def red_style
-            lazy_initialize(:red_style) {
-              @red_style = Gtk::Style.new
-              @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000)
-            }
-          end
-          
-          def info_panel
-            lazy_initialize(:info_panel) {
-              @info_panel = Gtk::HBox.new(false, 0)
-              @info_panel.border_width(10)
-              @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0)
-              @info_panel.pack_start(run_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0)
-              @info_panel.pack_start(assertion_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0)
-              @info_panel.pack_start(failure_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0)
-              @info_panel.pack_start(error_count_label, true, false, 0)
-            }
-          end
-          
-          def run_count_label
-            lazy_initialize(:run_count_label) {
-              @run_count_label = Gtk::Label.new("0")
-              @run_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def assertion_count_label
-            lazy_initialize(:assertion_count_label) {
-              @assertion_count_label = Gtk::Label.new("0")
-              @assertion_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def failure_count_label
-            lazy_initialize(:failure_count_label) {
-              @failure_count_label = Gtk::Label.new("0")
-              @failure_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def error_count_label
-            lazy_initialize(:error_count_label) {
-              @error_count_label = Gtk::Label.new("0")
-              @error_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def list_panel
-            lazy_initialize(:list_panel) {
-              @list_panel = Gtk::HBox.new
-              @list_panel.border_width(10)
-              @list_panel.pack_start(list_scrolled_window, true, true, 0)
-            }
-          end
-          
-          def list_scrolled_window
-            lazy_initialize(:list_scrolled_window) {
-              @list_scrolled_window = Gtk::ScrolledWindow.new
-              @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @list_scrolled_window.set_usize(@list_scrolled_window.allocation.width, 150)
-              @list_scrolled_window.add_with_viewport(fault_list)
-            }
-          end
-          
-          def fault_list
-            lazy_initialize(:fault_list) {
-              @fault_list = Gtk::List.new
-            }
-          end
-          
-          def detail_panel
-            lazy_initialize(:detail_panel) {
-              @detail_panel = Gtk::HBox.new
-              @detail_panel.border_width(10)
-              @detail_panel.pack_start(detail_scrolled_window, true, true, 0)
-            }
-          end
-          
-          def detail_scrolled_window
-            lazy_initialize(:detail_scrolled_window) {
-              @detail_scrolled_window = Gtk::ScrolledWindow.new
-              @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @detail_scrolled_window.set_usize(400, @detail_scrolled_window.allocation.height)
-              @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel)
-            }
-          end
-          
-          def outer_detail_sub_panel
-            lazy_initialize(:outer_detail_sub_panel) {
-              @outer_detail_sub_panel = Gtk::VBox.new
-              @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0)
-            }
-          end
-          
-          def inner_detail_sub_panel
-            lazy_initialize(:inner_detail_sub_panel) {
-              @inner_detail_sub_panel = Gtk::HBox.new
-              @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0)
-            }
-          end
-          
-          def fault_detail_label
-            lazy_initialize(:fault_detail_label) {
-              @fault_detail_label = EnhancedLabel.new("")
-              style = Gtk::Style.new
-              font = Gdk::Font.font_load("-*-Courier New-medium-r-normal--*-120-*-*-*-*-*-*")
-              begin
-                style.set_font(font)
-              rescue ArgumentError; end
-              @fault_detail_label.set_style(style)
-              @fault_detail_label.set_justify(Gtk::JUSTIFY_LEFT)
-              @fault_detail_label.set_line_wrap(false)
-            }
-          end
-          
-          def status_panel
-            lazy_initialize(:status_panel) {
-              @status_panel = Gtk::HBox.new
-              @status_panel.border_width(10)
-              @status_panel.pack_start(status_entry, true, true, 0)
-            }
-          end
-          
-          def status_entry
-            lazy_initialize(:status_entry) {
-              @status_entry = Gtk::Entry.new
-              @status_entry.set_editable(false)
-            }
-          end
-  
-          def lazy_initialize(symbol)
-            if (!instance_eval("defined?(@#{symbol.to_s})"))
-              yield
-            end
-            return instance_eval("@" + symbol.to_s)
-          end
-        end
-  
-        class EnhancedProgressBar < Gtk::ProgressBar
-          def set_style(style)
-            super
-            hide
-            show
-          end
-        end
-  
-        class EnhancedLabel < Gtk::Label
-          def set_text(text)
-            super(text.gsub(/\n\t/, "\n" + (" " * 4)))
-          end
-        end
-  
-        class FaultListItem < Gtk::ListItem
-          attr_reader(:fault)
-          def initialize(fault)
-            super(fault.short_display)
-            @fault = fault
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::GTK::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk2/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk2/testrunner.rb
deleted file mode 100644
index b05549c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/gtk2/testrunner.rb
+++ /dev/null
@@ -1,465 +0,0 @@
-#--
-#
-# Author:: Kenta MURATA.
-# Copyright:: Copyright (c) 2000-2002 Kenta MURATA. All rights reserved.
-# License:: Ruby license.
-
-require "gtk2"
-require "test/unit/ui/testrunnermediator"
-require "test/unit/ui/testrunnerutilities"
-
-module Test
-  module Unit
-    module UI
-      module GTK2
-
-        Gtk.init
-
-        class EnhancedLabel < Gtk::Label
-          def set_text(text)
-            super(text.gsub(/\n\t/, "\n    "))
-          end
-        end
-
-        class FaultList < Gtk::TreeView
-          def initialize
-            @faults = []
-            @model = Gtk::ListStore.new(String, String)
-            super(@model)
-            column = Gtk::TreeViewColumn.new
-            column.visible = false
-            append_column(column)
-            renderer = Gtk::CellRendererText.new
-            column = Gtk::TreeViewColumn.new("Failures", renderer, {:text => 1})
-            append_column(column)
-            selection.mode = Gtk::SELECTION_SINGLE
-            set_rules_hint(true)
-            set_headers_visible(false)
-          end # def initialize
-
-          def add_fault(fault)
-            @faults.push(fault)
-            iter = @model.append
-            iter.set_value(0, (@faults.length - 1).to_s)
-            iter.set_value(1, fault.short_display)
-          end # def add_fault(fault)
-
-          def get_fault(iter)
-            @faults[iter.get_value(0).to_i]
-          end # def get_fault
-
-          def clear
-            model.clear
-          end # def clear
-        end
-
-        class TestRunner
-          extend TestRunnerUtilities
-
-          def lazy_initialize(symbol)
-            if !instance_eval("defined?(@#{symbol})") then
-              yield
-            end
-            return instance_eval("@#{symbol}")
-          end
-          private :lazy_initialize
-
-          def status_entry
-            lazy_initialize(:status_entry) do
-              @status_entry = Gtk::Entry.new
-              @status_entry.editable = false
-            end
-          end
-          private :status_entry
-
-          def status_panel
-            lazy_initialize(:status_panel) do
-              @status_panel = Gtk::HBox.new
-              @status_panel.border_width = 10
-              @status_panel.pack_start(status_entry, true, true, 0)
-            end
-          end
-          private :status_panel
-
-          def fault_detail_label
-            lazy_initialize(:fault_detail_label) do
-              @fault_detail_label = EnhancedLabel.new("")
-#              style = Gtk::Style.new
-#              font = Gdk::Font.
-#               font_load("-*-Courier 10 Pitch-medium-r-normal--*-120-*-*-*-*-*-*")
-#              style.set_font(font)
-#              @fault_detail_label.style = style
-              @fault_detail_label.justify = Gtk::JUSTIFY_LEFT
-              @fault_detail_label.wrap = false
-            end
-          end
-          private :fault_detail_label
-
-          def inner_detail_sub_panel
-            lazy_initialize(:inner_detail_sub_panel) do
-              @inner_detail_sub_panel = Gtk::HBox.new
-              @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0)
-            end
-          end
-          private :inner_detail_sub_panel
-
-          def outer_detail_sub_panel
-            lazy_initialize(:outer_detail_sub_panel) do
-              @outer_detail_sub_panel = Gtk::VBox.new
-              @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0)
-            end
-          end
-          private :outer_detail_sub_panel
-
-          def detail_scrolled_window
-            lazy_initialize(:detail_scrolled_window) do
-              @detail_scrolled_window = Gtk::ScrolledWindow.new
-              @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @detail_scrolled_window.
-                set_size_request(400, @detail_scrolled_window.allocation.height)
-              @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel)
-            end
-          end
-          private :detail_scrolled_window
-
-          def detail_panel
-            lazy_initialize(:detail_panel) do
-              @detail_panel = Gtk::HBox.new
-              @detail_panel.border_width = 10
-              @detail_panel.pack_start(detail_scrolled_window, true, true, 0)
-            end
-          end
-          private :detail_panel
-
-          def fault_list
-            lazy_initialize(:fault_list) do
-              @fault_list = FaultList.new
-            end
-          end
-          private :fault_list
-
-          def list_scrolled_window
-            lazy_initialize(:list_scrolled_window) do
-              @list_scrolled_window = Gtk::ScrolledWindow.new
-              @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @list_scrolled_window.
-                set_size_request(@list_scrolled_window.allocation.width, 150)
-              @list_scrolled_window.add_with_viewport(fault_list)
-            end
-          end
-          private :list_scrolled_window
-
-          def list_panel
-            lazy_initialize(:list_panel) do
-              @list_panel = Gtk::HBox.new
-              @list_panel.border_width = 10
-              @list_panel.pack_start(list_scrolled_window, true, true, 0)
-            end
-          end
-          private :list_panel
-
-          def error_count_label
-            lazy_initialize(:error_count_label) do
-              @error_count_label = Gtk::Label.new("0")
-              @error_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :error_count_label
-
-          def failure_count_label
-            lazy_initialize(:failure_count_label) do
-              @failure_count_label = Gtk::Label.new("0")
-              @failure_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :failure_count_label
-
-          def assertion_count_label
-            lazy_initialize(:assertion_count_label) do
-              @assertion_count_label = Gtk::Label.new("0")
-              @assertion_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :assertion_count_label
-
-          def run_count_label
-            lazy_initialize(:run_count_label) do
-              @run_count_label = Gtk::Label.new("0")
-              @run_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :run_count_label
-          
-          def info_panel
-            lazy_initialize(:info_panel) do
-              @info_panel = Gtk::HBox.new(false, 0)
-              @info_panel.border_width = 10
-              @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0)
-              @info_panel.pack_start(run_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0)
-              @info_panel.pack_start(assertion_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0)
-              @info_panel.pack_start(failure_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0)
-              @info_panel.pack_start(error_count_label, true, false, 0)
-            end
-          end # def info_panel
-          private :info_panel
-
-          def green_style
-            lazy_initialize(:green_style) do
-              @green_style = Gtk::Style.new
-              @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000)
-            end
-          end # def green_style
-          private :green_style
-          
-          def red_style
-            lazy_initialize(:red_style) do
-              @red_style = Gtk::Style.new
-              @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000)
-            end
-          end # def red_style
-          private :red_style
-          
-          def test_progress_bar
-            lazy_initialize(:test_progress_bar) {
-              @test_progress_bar = Gtk::ProgressBar.new
-              @test_progress_bar.fraction = 0.0
-              @test_progress_bar.
-                set_size_request(@test_progress_bar.allocation.width,
-                                 info_panel.size_request[1])
-              @test_progress_bar.style = green_style
-            }
-          end # def test_progress_bar
-          private :test_progress_bar
-          
-          def progress_panel
-            lazy_initialize(:progress_panel) do
-              @progress_panel = Gtk::HBox.new(false, 10)
-              @progress_panel.border_width = 10
-              @progress_panel.pack_start(test_progress_bar, true, true, 0)
-            end
-          end # def progress_panel
-
-          def run_button
-            lazy_initialize(:run_button) do
-              @run_button = Gtk::Button.new("Run")
-            end
-          end # def run_button
-
-          def suite_name_entry
-            lazy_initialize(:suite_name_entry) do
-              @suite_name_entry = Gtk::Entry.new
-              @suite_name_entry.editable = false
-            end
-          end # def suite_name_entry
-          private :suite_name_entry
-
-          def suite_panel
-            lazy_initialize(:suite_panel) do
-              @suite_panel = Gtk::HBox.new(false, 10)
-              @suite_panel.border_width = 10
-              @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0)
-              @suite_panel.pack_start(suite_name_entry, true, true, 0)
-              @suite_panel.pack_start(run_button, false, false, 0)
-            end
-          end # def suite_panel
-          private :suite_panel
-
-          def main_panel
-            lazy_initialize(:main_panel) do
-              @main_panel = Gtk::VBox.new(false, 0)
-              @main_panel.pack_start(suite_panel, false, false, 0)
-              @main_panel.pack_start(progress_panel, false, false, 0)
-              @main_panel.pack_start(info_panel, false, false, 0)
-              @main_panel.pack_start(list_panel, false, false, 0)
-              @main_panel.pack_start(detail_panel, true, true, 0)
-              @main_panel.pack_start(status_panel, false, false, 0)
-            end
-          end # def main_panel
-          private :main_panel
-
-          def main_window
-            lazy_initialize(:main_window) do
-              @main_window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
-              @main_window.set_title("Test::Unit TestRunner")
-              @main_window.set_default_size(800, 600)
-              @main_window.set_resizable(true)
-              @main_window.add(main_panel)
-            end
-          end # def main_window
-          private :main_window
-
-          def setup_ui
-            main_window.signal_connect("destroy", nil) { stop }
-            main_window.show_all
-            fault_list.selection.signal_connect("changed", nil) do
-              |selection, data|
-              if selection.selected then
-                show_fault(fault_list.get_fault(selection.selected))
-              else
-                clear_fault
-              end
-            end
-          end # def setup_ui
-          private :setup_ui
-
-          def output_status(string)
-            status_entry.set_text(string)
-          end # def output_status(string)
-          private :output_status
-
-          def finished(elapsed_time)
-            test_progress_bar.fraction = 1.0
-            output_status("Finished in #{elapsed_time} seconds")
-          end # def finished(elapsed_time)
-          private :finished
-
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end # def test_started(test_name)
-          private :test_started
-
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end # def started(result)
-          private :started
-
-          def test_finished(result)
-            test_progress_bar.fraction += 1.0 / @count
-          end # def test_finished(result)
-
-          def result_changed(result)
-            run_count_label.label = result.run_count.to_s
-            assertion_count_label.label = result.assertion_count.to_s
-            failure_count_label.label = result.failure_count.to_s
-            error_count_label.label = result.error_count.to_s
-          end # def result_changed(result)
-          private :result_changed
-
-          def clear_fault
-            raw_show_fault("")
-          end # def clear_fault
-          private :clear_fault
-
-          def raw_show_fault(string)
-            fault_detail_label.set_text(string)
-            outer_detail_sub_panel.queue_resize
-          end # def raw_show_fault(string)
-          private :raw_show_fault
-
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end # def show_fault(fault)
-          private :show_fault
-
-          def add_fault(fault)
-            if not @red then
-              test_progress_bar.style = red_style
-              @red = true
-            end
-            fault_list.add_fault(fault)
-          end # def add_fault(fault)
-          private :add_fault
-
-          def reset_ui(count)
-            test_progress_bar.style = green_style
-            test_progress_bar.fraction = 0.0
-            @count = count + 1
-            @red = false
-
-            run_count_label.set_text("0")
-            assertion_count_label.set_text("0")
-            failure_count_label.set_text("0")
-            error_count_label.set_text("0")
-
-            fault_list.clear
-          end # def reset_ui(count)
-          private :reset_ui
-
-          def stop
-            Gtk.main_quit
-          end # def stop
-          private :stop
-
-          def run_test
-            @runner.raise(@restart_signal)
-          end
-          private :run_test
-
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  run_button.child.text = "Stop"
-                  @mediator.run_suite
-                else
-                  run_button.child.text = "Run"
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end # def start_ui
-          private :start_ui
-
-          def attach_to_mediator
-            run_button.signal_connect("clicked", nil) { run_test }
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-          end # def attach_to_mediator
-          private :attach_to_mediator
-
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if @suite.kind_of?(Module) then
-              suite_name = @suite.name
-            end
-            suite_name_entry.set_text(suite_name)
-          end # def setup_mediator
-          private :setup_mediator
-
-          def start
-            setup_mediator
-            setup_ui
-            attach_to_mediator
-            start_ui
-            @result
-          end # def start
-
-          def initialize(suite, output_level = NORMAL)
-            if suite.respond_to?(:suite) then
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              Gtk.main
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end # def initialize(suite)
-
-        end # class TestRunner
-
-      end # module GTK2
-    end # module UI
-  end # module Unit
-end # module Test
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnermediator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnermediator.rb
deleted file mode 100644
index d34510d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnermediator.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'test/unit/util/observable'
-require 'test/unit/testresult'
-
-module Test
-  module Unit
-    module UI
-
-      # Provides an interface to write any given UI against,
-      # hopefully making it easy to write new UIs.
-      class TestRunnerMediator
-        RESET = name + "::RESET"
-        STARTED = name + "::STARTED"
-        FINISHED = name + "::FINISHED"
-        
-        include Util::Observable
-        
-        # Creates a new TestRunnerMediator initialized to run
-        # the passed suite.
-        def initialize(suite)
-          @suite = suite
-        end
-
-        # Runs the suite the TestRunnerMediator was created
-        # with.
-        def run_suite
-          Unit.run = true
-          begin_time = Time.now
-          notify_listeners(RESET, @suite.size)
-          result = create_result
-          notify_listeners(STARTED, result)
-          result_listener = result.add_listener(TestResult::CHANGED) do |updated_result|
-            notify_listeners(TestResult::CHANGED, updated_result)
-          end
-          
-          fault_listener = result.add_listener(TestResult::FAULT) do |fault|
-            notify_listeners(TestResult::FAULT, fault)
-          end
-          
-          @suite.run(result) do |channel, value|
-            notify_listeners(channel, value)
-          end
-          
-          result.remove_listener(TestResult::FAULT, fault_listener)
-          result.remove_listener(TestResult::CHANGED, result_listener)
-          end_time = Time.now
-          elapsed_time = end_time - begin_time
-          notify_listeners(FINISHED, elapsed_time) #"Finished in #{elapsed_time} seconds.")
-          return result
-        end
-
-        private
-        # A factory method to create the result the mediator
-        # should run with. Can be overridden by subclasses if
-        # one wants to use a different result.
-        def create_result
-          return TestResult.new
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnerutilities.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnerutilities.rb
deleted file mode 100644
index 70b885b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/testrunnerutilities.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-    module UI
-
-      SILENT = 0
-      PROGRESS_ONLY = 1
-      NORMAL = 2
-      VERBOSE = 3
-
-      # Provides some utilities common to most, if not all,
-      # TestRunners.
-      #
-      #--
-      #
-      # Perhaps there ought to be a TestRunner superclass? There
-      # seems to be a decent amount of shared code between test
-      # runners.
-
-      module TestRunnerUtilities
-
-        # Creates a new TestRunner and runs the suite.
-        def run(suite, output_level=NORMAL)
-          return new(suite, output_level).start
-        end
-
-        # Takes care of the ARGV parsing and suite
-        # determination necessary for running one of the
-        # TestRunners from the command line.
-        def start_command_line_test
-          if ARGV.empty?
-            puts "You should supply the name of a test suite file to the runner"
-            exit
-          end
-          require ARGV[0].gsub(/.+::/, '')
-          new(eval(ARGV[0])).start
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/tk/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/tk/testrunner.rb
deleted file mode 100644
index 4d05f2f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/ui/tk/testrunner.rb
+++ /dev/null
@@ -1,260 +0,0 @@
-#--
-#
-# Original Author:: Nathaniel Talbott.
-# Author:: Kazuhiro NISHIYAMA.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# Copyright:: Copyright (c) 2003 Kazuhiro NISHIYAMA. All rights reserved.
-# License:: Ruby license.
-
-require 'tk'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module Tk
-
-        # Runs a Test::Unit::TestSuite in a Tk UI. Obviously,
-        # this one requires you to have Tk
-        # and the Ruby Tk extension installed.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @red = false
-            @fault_detail_list = []
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              ::Tk.mainloop
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end
-
-          # Begins the test run.
-          def start
-            setup_ui
-            setup_mediator
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          private
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            @suite_name_entry.value = suite_name
-          end
-
-          def attach_to_mediator
-            @run_button.command(method(:run_test))
-            @fault_list.bind('ButtonPress-1', proc{|y|
-              fault = @fault_detail_list[@fault_list.nearest(y)]
-              if fault
-                show_fault(fault)
-              end
-            }, '%y')
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-
-          def run_test
-            @runner.raise(@restart_signal)
-          end
-
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  @run_button.configure('text'=>'Stop')
-                  @mediator.run_suite
-                else
-                  @run_button.configure('text'=>'Run')
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end
-
-          def stop
-            ::Tk.exit
-          end
-
-          def reset_ui(count)
-            @test_total_count = count.to_f
-            @test_progress_bar.configure('background'=>'green')
-            @test_progress_bar.place('relwidth'=>(count.zero? ? 0 : 0/count))
-            @red = false
-
-            @test_count_label.value = 0
-            @assertion_count_label.value = 0
-            @failure_count_label.value = 0
-            @error_count_label.value = 0
-
-            @fault_list.delete(0, 'end')
-            @fault_detail_list = []
-            clear_fault
-          end
-
-          def add_fault(fault)
-            if ( ! @red )
-              @test_progress_bar.configure('background'=>'red')
-              @red = true
-            end
-            @fault_detail_list.push fault
-            @fault_list.insert('end', fault.short_display)
-          end
-
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-
-          def raw_show_fault(string)
-            @detail_text.value = string
-          end
-
-          def clear_fault
-            raw_show_fault("")
-          end
-
-          def result_changed(result)
-            @test_count_label.value = result.run_count
-            @test_progress_bar.place('relwidth'=>result.run_count/@test_total_count)
-            @assertion_count_label.value = result.assertion_count
-            @failure_count_label.value = result.failure_count
-            @error_count_label.value = result.error_count
-          end
-
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-
-          def output_status(string)
-            @status_entry.value = string
-          end
-
-          def setup_ui
-            @status_entry = TkVariable.new
-            l = TkLabel.new(nil, 'textvariable'=>@status_entry, 'relief'=>'sunken')
-            l.pack('side'=>'bottom', 'fill'=>'x')
-
-            suite_frame = TkFrame.new.pack('fill'=>'x')
-
-            @run_button = TkButton.new(suite_frame, 'text'=>'Run')
-            @run_button.pack('side'=>'right')
-
-            TkLabel.new(suite_frame, 'text'=>'Suite:').pack('side'=>'left')
-            @suite_name_entry = TkVariable.new
-            l = TkLabel.new(suite_frame, 'textvariable'=>@suite_name_entry, 'relief'=>'sunken')
-            l.pack('side'=>'left', 'fill'=>'x', 'expand'=>true)
-
-            f = TkFrame.new(nil, 'relief'=>'sunken', 'borderwidth'=>3, 'height'=>20).pack('fill'=>'x', 'padx'=>1)
-            @test_progress_bar = TkFrame.new(f, 'background'=>'green').place('anchor'=>'nw', 'relwidth'=>0.0, 'relheight'=>1.0)
-
-            info_frame = TkFrame.new.pack('fill'=>'x')
-            @test_count_label = create_count_label(info_frame, 'Tests:')
-            @assertion_count_label = create_count_label(info_frame, 'Assertions:')
-            @failure_count_label = create_count_label(info_frame, 'Failures:')
-            @error_count_label = create_count_label(info_frame, 'Errors:')
-
-	    if (::Tk.info('command', TkPanedWindow::TkCommandNames[0]) != "")
-	      # use panedwindow
-	      paned_frame = TkPanedWindow.new("orient"=>"vertical").pack('fill'=>'both', 'expand'=>true)
-
-	      fault_list_frame = TkFrame.new(paned_frame)
-	      detail_frame = TkFrame.new(paned_frame)
-
-	      paned_frame.add(fault_list_frame, detail_frame)
-	    else
-	      # no panedwindow
-	      paned_frame = nil
-	      fault_list_frame = TkFrame.new.pack('fill'=>'both', 'expand'=>true)
-	      detail_frame = TkFrame.new.pack('fill'=>'both', 'expand'=>true)
-	    end
-
-	    TkGrid.rowconfigure(fault_list_frame, 0, 'weight'=>1, 'minsize'=>0)
-	    TkGrid.columnconfigure(fault_list_frame, 0, 'weight'=>1, 'minsize'=>0)
-
-            fault_scrollbar_y = TkScrollbar.new(fault_list_frame)
-            fault_scrollbar_x = TkScrollbar.new(fault_list_frame)
-            @fault_list = TkListbox.new(fault_list_frame)
-            @fault_list.yscrollbar(fault_scrollbar_y)
-            @fault_list.xscrollbar(fault_scrollbar_x)
-
-	    TkGrid.rowconfigure(detail_frame, 0, 'weight'=>1, 'minsize'=>0)
-	    TkGrid.columnconfigure(detail_frame, 0, 'weight'=>1, 'minsize'=>0)
-
-	    ::Tk.grid(@fault_list, fault_scrollbar_y, 'sticky'=>'news')
-	    ::Tk.grid(fault_scrollbar_x, 'sticky'=>'news')
-
-            detail_scrollbar_y = TkScrollbar.new(detail_frame)
-            detail_scrollbar_x = TkScrollbar.new(detail_frame)
-            @detail_text = TkText.new(detail_frame, 'height'=>10, 'wrap'=>'none') {
-              bindtags(bindtags - [TkText])
-	    }
-	    @detail_text.yscrollbar(detail_scrollbar_y)
-	    @detail_text.xscrollbar(detail_scrollbar_x)
-
-	    ::Tk.grid(@detail_text, detail_scrollbar_y, 'sticky'=>'news')
-	    ::Tk.grid(detail_scrollbar_x, 'sticky'=>'news')
-
-	    # rubber-style pane
-	    if paned_frame
-	      ::Tk.update
-	      @height = paned_frame.winfo_height
-	      paned_frame.bind('Configure', proc{|h|
-		paned_frame.sash_place(0, 0, paned_frame.sash_coord(0)[1] * h / @height)
-		@height = h
-	      }, '%h')
-	    end
-          end
-
-          def create_count_label(parent, label)
-            TkLabel.new(parent, 'text'=>label).pack('side'=>'left', 'expand'=>true)
-            v = TkVariable.new(0)
-            TkLabel.new(parent, 'textvariable'=>v).pack('side'=>'left', 'expand'=>true)
-            v
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Tk::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/backtracefilter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/backtracefilter.rb
deleted file mode 100644
index 7ebec2d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/backtracefilter.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module Test
-  module Unit
-    module Util
-      module BacktraceFilter
-        TESTUNIT_FILE_SEPARATORS = %r{[\\/:]}
-        TESTUNIT_PREFIX = __FILE__.split(TESTUNIT_FILE_SEPARATORS)[0..-3]
-        TESTUNIT_RB_FILE = /\.rb\Z/
-        
-        def filter_backtrace(backtrace, prefix=nil)
-          return ["No backtrace"] unless(backtrace)
-          split_p = if(prefix)
-            prefix.split(TESTUNIT_FILE_SEPARATORS)
-          else
-            TESTUNIT_PREFIX
-          end
-          match = proc do |e|
-            split_e = e.split(TESTUNIT_FILE_SEPARATORS)[0, split_p.size]
-            next false unless(split_e[0..-2] == split_p[0..-2])
-            split_e[-1].sub(TESTUNIT_RB_FILE, '') == split_p[-1]
-          end
-          return backtrace unless(backtrace.detect(&match))
-          found_prefix = false
-          new_backtrace = backtrace.reverse.reject do |e|
-            if(match[e])
-              found_prefix = true
-              true
-            elsif(found_prefix)
-              false
-            else
-              true
-            end
-          end.reverse
-          new_backtrace = (new_backtrace.empty? ? backtrace : new_backtrace)
-          new_backtrace = new_backtrace.reject(&match)
-          new_backtrace.empty? ? backtrace : new_backtrace
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/observable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/observable.rb
deleted file mode 100644
index 3567d34..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/observable.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/procwrapper'
-
-module Test
-  module Unit
-    module Util
-
-      # This is a utility class that allows anything mixing
-      # it in to notify a set of listeners about interesting
-      # events.
-      module Observable
-        # We use this for defaults since nil might mean something
-        NOTHING = "NOTHING/#{__id__}"
-
-        # Adds the passed proc as a listener on the
-        # channel indicated by channel_name. listener_key
-        # is used to remove the listener later; if none is
-        # specified, the proc itself is used.
-        #
-        # Whatever is used as the listener_key is
-        # returned, making it very easy to use the proc
-        # itself as the listener_key:
-        #
-        #  listener = add_listener("Channel") { ... }
-        #  remove_listener("Channel", listener)
-        def add_listener(channel_name, listener_key=NOTHING, &listener) # :yields: value
-          unless(block_given?)
-            raise ArgumentError.new("No callback was passed as a listener")
-          end
-      
-          key = listener_key
-          if (listener_key == NOTHING)
-            listener_key = listener
-            key = ProcWrapper.new(listener)
-          end
-      
-          channels[channel_name] ||= {}
-          channels[channel_name][key] = listener
-          return listener_key
-        end
-
-        # Removes the listener indicated by listener_key
-        # from the channel indicated by
-        # channel_name. Returns the registered proc, or
-        # nil if none was found.
-        def remove_listener(channel_name, listener_key)
-          channel = channels[channel_name]
-          return nil unless (channel)
-          key = listener_key
-          if (listener_key.instance_of?(Proc))
-            key = ProcWrapper.new(listener_key)
-          end
-          if (channel.has_key?(key))
-            return channel.delete(key)
-          end
-          return nil
-        end
-
-        # Calls all the procs registered on the channel
-        # indicated by channel_name. If value is
-        # specified, it is passed in to the procs,
-        # otherwise they are called with no arguments.
-        #
-        #--
-        #
-        # Perhaps this should be private? Would it ever
-        # make sense for an external class to call this
-        # method directly?
-        def notify_listeners(channel_name, *arguments)
-          channel = channels[channel_name]
-          return 0 unless (channel)
-          listeners = channel.values
-          listeners.each { |listener| listener.call(*arguments) }
-          return listeners.size
-        end
-
-        private
-        def channels
-          @channels ||= {}
-          return @channels
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/procwrapper.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/procwrapper.rb
deleted file mode 100644
index ad72521..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/test/unit/util/procwrapper.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-    module Util
-
-      # Allows the storage of a Proc passed through '&' in a
-      # hash.
-      #
-      # Note: this may be inefficient, since the hash being
-      # used is not necessarily very good. In Observable,
-      # efficiency is not too important, since the hash is
-      # only accessed when adding and removing listeners,
-      # not when notifying.
-
-      class ProcWrapper
-
-        # Creates a new wrapper for a_proc.
-        def initialize(a_proc)
-          @a_proc = a_proc
-          @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
-        end
-
-        def hash
-          return @hash
-        end
-
-        def ==(other)
-          case(other)
-            when ProcWrapper
-              return @a_proc == other.to_proc
-            else
-              return super
-          end
-        end
-        alias :eql? :==
-
-        def to_proc
-          return @a_proc
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thread.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thread.rb
deleted file mode 100644
index 6c533ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thread.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-unless defined? Thread
-  fail "Thread not available for this ruby interpreter"
-end
-
-require 'thread.so'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thwait.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thwait.rb
deleted file mode 100644
index 95d294a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/thwait.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-#   thwait.rb - thread synchronization class
-#   	$Release Version: 0.9 $
-#   	$Revision: 1.3 $
-#   	$Date: 1998/06/26 03:19:34 $
-#   	by Keiju ISHITSUKA(Nihpon Rational Software Co.,Ltd.)
-#
-# --
-#  feature:
-#  provides synchronization for multiple threads.
-#
-#  class methods:
-#  * ThreadsWait.all_waits(thread1,...)
-#    waits until all of specified threads are terminated.
-#    if a block is supplied for the method, evaluates it for
-#    each thread termination.
-#  * th = ThreadsWait.new(thread1,...)
-#    creates synchronization object, specifying thread(s) to wait.
-#  
-#  methods:
-#  * th.threads
-#    list threads to be synchronized
-#  * th.empty?
-#    is there any thread to be synchronized.
-#  * th.finished?
-#    is there already terminated thread.
-#  * th.join(thread1,...) 
-#    wait for specified thread(s).
-#  * th.join_nowait(threa1,...)
-#    specifies thread(s) to wait.  non-blocking.
-#  * th.next_wait
-#    waits until any of specified threads is terminated.
-#  * th.all_waits
-#    waits until all of specified threads are terminated.
-#    if a block is supplied for the method, evaluates it for
-#    each thread termination.
-#
-
-require "thread.rb"
-require "e2mmap.rb"
-
-#
-# This class watches for termination of multiple threads.  Basic functionality
-# (wait until specified threads have terminated) can be accessed through the
-# class method ThreadsWait::all_waits.  Finer control can be gained using
-# instance methods.
-#
-# Example:
-#
-#   ThreadsWait.all_wait(thr1, thr2, ...) do |t|
-#     STDERR.puts "Thread #{t} has terminated."
-#   end
-#
-class ThreadsWait
-  RCS_ID='-$Id: thwait.rb,v 1.3 1998/06/26 03:19:34 keiju Exp keiju $-'
-  
-  Exception2MessageMapper.extend_to(binding)
-  def_exception("ErrNoWaitingThread", "No threads for waiting.")
-  def_exception("ErrNoFinishedThread", "No finished threads.")
-  
-  #
-  # Waits until all specified threads have terminated.  If a block is provided,
-  # it is executed for each thread termination.
-  #
-  def ThreadsWait.all_waits(*threads) # :yield: thread
-    tw = ThreadsWait.new(*threads)
-    if block_given?
-      tw.all_waits do |th|
-	yield th
-      end
-    else
-      tw.all_waits
-    end
-  end
-  
-  #
-  # Creates a ThreadsWait object, specifying the threads to wait on.
-  # Non-blocking.
-  #
-  def initialize(*threads)
-    @threads = []
-    @wait_queue = Queue.new
-    join_nowait(*threads) unless threads.empty?
-  end
-  
-  # Returns the array of threads in the wait queue.
-  attr :threads
-  
-  #
-  # Returns +true+ if there are no threads to be synchronized.
-  #
-  def empty?
-    @threads.empty?
-  end
-  
-  #
-  # Returns +true+ if any thread has terminated.
-  #
-  def finished?
-    !@wait_queue.empty?
-  end
-  
-  #
-  # Waits for specified threads to terminate.
-  #
-  def join(*threads)
-    join_nowait(*threads)
-    next_wait
-  end
-  
-  #
-  # Specifies the threads that this object will wait for, but does not actually
-  # wait.
-  #
-  def join_nowait(*threads)
-    threads.flatten!
-    @threads.concat threads
-    for th in threads
-      Thread.start(th) do |t|
-	begin
-	  t.join
-	ensure
-	  @wait_queue.push t
-	end
-      end
-    end
-  end
-  
-  #
-  # Waits until any of the specified threads has terminated, and returns the one
-  # that does.
-  #
-  # If there is no thread to wait, raises +ErrNoWaitingThread+.  If +nonblock+
-  # is true, and there is no terminated thread, raises +ErrNoFinishedThread+.
-  #
-  def next_wait(nonblock = nil)
-    ThreadsWait.fail ErrNoWaitingThread if @threads.empty?
-    begin
-      @threads.delete(th = @wait_queue.pop(nonblock))
-      th
-    rescue ThreadError
-      ThreadsWait.fail ErrNoFinishedThread
-    end
-  end
-  
-  #
-  # Waits until all of the specified threads are terminated.  If a block is
-  # supplied for the method, it is executed for each thread termination.
-  #
-  # Raises exceptions in the same manner as +next_wait+.
-  #
-  def all_waits
-    until @threads.empty?
-      th = next_wait
-      yield th if block_given?
-    end
-  end
-end
-
-ThWait = ThreadsWait
-
-
-# Documentation comments:
-#  - Source of documentation is evenly split between Nutshell, existing
-#    comments, and my own rephrasing.
-#  - I'm not particularly confident that the comments are all exactly correct.
-#  - The history, etc., up the top appears in the RDoc output.  Perhaps it would
-#    be better to direct that not to appear, and put something else there
-#    instead.
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/time.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/time.rb
deleted file mode 100644
index dbc25f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/time.rb
+++ /dev/null
@@ -1,797 +0,0 @@
-
-#
-# == Introduction
-# 
-# This library extends the Time class:
-# * conversion between date string and time object.
-#   * date-time defined by RFC 2822
-#   * HTTP-date defined by RFC 2616
-#   * dateTime defined by XML Schema Part 2: Datatypes (ISO 8601)
-#   * various formats handled by Date._parse (string to time only)
-# 
-# == Design Issues
-# 
-# === Specialized interface
-# 
-# This library provides methods dedicated to special purposes:
-# * RFC 2822, RFC 2616 and XML Schema.
-# * They makes usual life easier.
-# 
-# === Doesn't depend on strftime
-# 
-# This library doesn't use +strftime+.  Especially #rfc2822 doesn't depend
-# on +strftime+ because:
-# 
-# * %a and %b are locale sensitive
-# 
-#   Since they are locale sensitive, they may be replaced to
-#   invalid weekday/month name in some locales.
-#   Since ruby-1.6 doesn't invoke setlocale by default,
-#   the problem doesn't arise until some external library invokes setlocale.
-#   Ruby/GTK is the example of such library.
-# 
-# * %z is not portable
-# 
-#   %z is required to generate zone in date-time of RFC 2822
-#   but it is not portable.
-#
-# == Revision Information
-#
-# $Id$
-#
-
-require 'parsedate'
-
-#
-# Implements the extensions to the Time class that are described in the
-# documentation for the time.rb library.
-#
-class Time
-  class << Time
-
-    ZoneOffset = {
-      'UTC' => 0,
-      # ISO 8601
-      'Z' => 0,
-      # RFC 822
-      'UT' => 0, 'GMT' => 0,
-      'EST' => -5, 'EDT' => -4,
-      'CST' => -6, 'CDT' => -5,
-      'MST' => -7, 'MDT' => -6,
-      'PST' => -8, 'PDT' => -7,
-      # Following definition of military zones is original one.
-      # See RFC 1123 and RFC 2822 for the error in RFC 822.
-      'A' => +1, 'B' => +2, 'C' => +3, 'D' => +4,  'E' => +5,  'F' => +6, 
-      'G' => +7, 'H' => +8, 'I' => +9, 'K' => +10, 'L' => +11, 'M' => +12,
-      'N' => -1, 'O' => -2, 'P' => -3, 'Q' => -4,  'R' => -5,  'S' => -6, 
-      'T' => -7, 'U' => -8, 'V' => -9, 'W' => -10, 'X' => -11, 'Y' => -12,
-    }
-    def zone_offset(zone, year=Time.now.year)
-      off = nil
-      zone = zone.upcase
-      if /\A([+-])(\d\d):?(\d\d)\z/ =~ zone
-        off = ($1 == '-' ? -1 : 1) * ($2.to_i * 60 + $3.to_i) * 60
-      elsif /\A[+-]\d\d\z/ =~ zone
-        off = zone.to_i * 3600
-      elsif ZoneOffset.include?(zone)
-        off = ZoneOffset[zone] * 3600
-      elsif ((t = Time.local(year, 1, 1)).zone.upcase == zone rescue false)
-        off = t.utc_offset
-      elsif ((t = Time.local(year, 7, 1)).zone.upcase == zone rescue false)
-        off = t.utc_offset
-      end
-      off
-    end
-
-    def zone_utc?(zone)
-      # * +0000 means localtime. [RFC 2822]
-      # * GMT is a localtime abbreviation in Europe/London, etc.
-      if /\A(?:-00:00|-0000|-00|UTC|Z|UT)\z/i =~ zone
-        true
-      else
-        false
-      end
-    end
-    private :zone_utc?
-
-    LeapYearMonthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-    CommonYearMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-    def month_days(y, m)
-      if ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)
-        LeapYearMonthDays[m-1]
-      else
-        CommonYearMonthDays[m-1]
-      end
-    end
-    private :month_days
-
-    def apply_offset(year, mon, day, hour, min, sec, off)
-      if off < 0
-        off = -off
-        off, o = off.divmod(60)
-        if o != 0 then sec += o; o, sec = sec.divmod(60); off += o end
-        off, o = off.divmod(60)
-        if o != 0 then min += o; o, min = min.divmod(60); off += o end
-        off, o = off.divmod(24)
-        if o != 0 then hour += o; o, hour = hour.divmod(24); off += o end
-        if off != 0
-          day += off
-          if month_days(year, mon) < day
-            mon += 1
-            if 12 < mon
-              mon = 1
-              year += 1
-            end
-            day = 1
-          end
-        end
-      elsif 0 < off
-        off, o = off.divmod(60)
-        if o != 0 then sec -= o; o, sec = sec.divmod(60); off -= o end
-        off, o = off.divmod(60)
-        if o != 0 then min -= o; o, min = min.divmod(60); off -= o end
-        off, o = off.divmod(24)
-        if o != 0 then hour -= o; o, hour = hour.divmod(24); off -= o end
-        if off != 0 then
-          day -= off
-          if day < 1
-            mon -= 1
-            if mon < 1
-              year -= 1
-              mon = 12
-            end
-            day = month_days(year, mon)
-          end
-        end
-      end
-      return year, mon, day, hour, min, sec
-    end
-    private :apply_offset
-
-    def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
-      usec = nil
-      usec = (sec_fraction * 1000000).to_i if sec_fraction
-      if now
-        begin
-          break if year; year = now.year
-          break if mon; mon = now.mon
-          break if day; day = now.day
-          break if hour; hour = now.hour
-          break if min; min = now.min
-          break if sec; sec = now.sec
-          break if sec_fraction; usec = now.tv_usec
-        end until true
-      end
-
-      year ||= 1970
-      mon ||= 1
-      day ||= 1
-      hour ||= 0
-      min ||= 0
-      sec ||= 0
-      usec ||= 0
-
-      off = nil
-      off = zone_offset(zone, year) if zone
-
-      if off
-        year, mon, day, hour, min, sec =
-          apply_offset(year, mon, day, hour, min, sec, off)
-        t = Time.utc(year, mon, day, hour, min, sec, usec)
-        t.localtime if !zone_utc?(zone)
-        t
-      else
-        self.local(year, mon, day, hour, min, sec, usec)
-      end
-    end
-    private :make_time
-
-    #
-    # Parses +date+ using Date._parse and converts it to a Time object.
-    #
-    # If a block is given, the year described in +date+ is converted by the
-    # block.  For example:
-    #
-    #     Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}
-    #
-    # If the upper components of the given time are broken or missing, they are
-    # supplied with those of +now+.  For the lower components, the minimum
-    # values (1 or 0) are assumed if broken or missing.  For example:
-    #
-    #     # Suppose it is "Thu Nov 29 14:33:20 GMT 2001" now and
-    #     # your timezone is GMT:
-    #     Time.parse("16:30")     #=> Thu Nov 29 16:30:00 GMT 2001
-    #     Time.parse("7/23")      #=> Mon Jul 23 00:00:00 GMT 2001
-    #     Time.parse("Aug 31")    #=> Fri Aug 31 00:00:00 GMT 2001
-    #
-    # Since there are numerous conflicts among locally defined timezone
-    # abbreviations all over the world, this method is not made to
-    # understand all of them.  For example, the abbreviation "CST" is
-    # used variously as:
-    #
-    #     -06:00 in America/Chicago,
-    #     -05:00 in America/Havana,
-    #     +08:00 in Asia/Harbin,
-    #     +09:30 in Australia/Darwin,
-    #     +10:30 in Australia/Adelaide,
-    #     etc.
-    #
-    # Based on the fact, this method only understands the timezone
-    # abbreviations described in RFC 822 and the system timezone, in the
-    # order named. (i.e. a definition in RFC 822 overrides the system
-    # timezone definition.)  The system timezone is taken from
-    # <tt>Time.local(year, 1, 1).zone</tt> and
-    # <tt>Time.local(year, 7, 1).zone</tt>.
-    # If the extracted timezone abbreviation does not match any of them,
-    # it is ignored and the given time is regarded as a local time.
-    #
-    # ArgumentError is raised if Date._parse cannot extract information from
-    # +date+ or Time class cannot represent specified date.
-    #
-    # This method can be used as fail-safe for other parsing methods as:
-    #
-    #   Time.rfc2822(date) rescue Time.parse(date)
-    #   Time.httpdate(date) rescue Time.parse(date)
-    #   Time.xmlschema(date) rescue Time.parse(date)
-    #
-    # A failure for Time.parse should be checked, though.
-    #
-    def parse(date, now=Time.now)
-      d = Date._parse(date, false)
-      year = d[:year]
-      year = yield(year) if year && block_given?
-      make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
-    end
-
-    MonthValue = {
-      'JAN' => 1, 'FEB' => 2, 'MAR' => 3, 'APR' => 4, 'MAY' => 5, 'JUN' => 6,
-      'JUL' => 7, 'AUG' => 8, 'SEP' => 9, 'OCT' =>10, 'NOV' =>11, 'DEC' =>12
-    }
-
-    #
-    # Parses +date+ as date-time defined by RFC 2822 and converts it to a Time
-    # object.  The format is identical to the date format defined by RFC 822 and
-    # updated by RFC 1123.
-    #
-    # ArgumentError is raised if +date+ is not compliant with RFC 2822
-    # or Time class cannot represent specified date.
-    #
-    # See #rfc2822 for more information on this format.
-    #
-    def rfc2822(date)
-      if /\A\s*
-          (?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*,\s*)?
-          (\d{1,2})\s+
-          (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+
-          (\d{2,})\s+
-          (\d{2})\s*
-          :\s*(\d{2})\s*
-          (?::\s*(\d{2}))?\s+
-          ([+-]\d{4}|
-           UT|GMT|EST|EDT|CST|CDT|MST|MDT|PST|PDT|[A-IK-Z])/ix =~ date
-        # Since RFC 2822 permit comments, the regexp has no right anchor.
-        day = $1.to_i
-        mon = MonthValue[$2.upcase]
-        year = $3.to_i
-        hour = $4.to_i
-        min = $5.to_i
-        sec = $6 ? $6.to_i : 0
-        zone = $7
-
-        # following year completion is compliant with RFC 2822.
-        year = if year < 50
-                 2000 + year
-               elsif year < 1000
-                 1900 + year
-               else
-                 year
-               end
-
-        year, mon, day, hour, min, sec =
-          apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
-        t = self.utc(year, mon, day, hour, min, sec)
-        t.localtime if !zone_utc?(zone)
-        t
-      else
-        raise ArgumentError.new("not RFC 2822 compliant date: #{date.inspect}")
-      end
-    end
-    alias rfc822 rfc2822
-
-    #
-    # Parses +date+ as HTTP-date defined by RFC 2616 and converts it to a Time
-    # object.
-    #
-    # ArgumentError is raised if +date+ is not compliant with RFC 2616 or Time
-    # class cannot represent specified date.
-    #
-    # See #httpdate for more information on this format.
-    #
-    def httpdate(date)
-      if /\A\s*
-          (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20
-          (\d{2})\x20
-          (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
-          (\d{4})\x20
-          (\d{2}):(\d{2}):(\d{2})\x20
-          GMT
-          \s*\z/ix =~ date
-        self.rfc2822(date)
-      elsif /\A\s*
-             (?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday),\x20
-             (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d)\x20
-             (\d\d):(\d\d):(\d\d)\x20
-             GMT
-             \s*\z/ix =~ date
-        self.parse(date)
-      elsif /\A\s*
-             (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
-             (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
-             (\d\d|\x20\d)\x20
-             (\d\d):(\d\d):(\d\d)\x20
-             (\d{4})
-             \s*\z/ix =~ date
-        self.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
-                 $3.to_i, $4.to_i, $5.to_i)
-      else
-        raise ArgumentError.new("not RFC 2616 compliant date: #{date.inspect}")
-      end
-    end
-
-    #
-    # Parses +date+ as dateTime defined by XML Schema and converts it to a Time
-    # object.  The format is restricted version of the format defined by ISO
-    # 8601.
-    #
-    # ArgumentError is raised if +date+ is not compliant with the format or Time
-    # class cannot represent specified date.
-    #
-    # See #xmlschema for more information on this format.
-    #
-    def xmlschema(date)
-      if /\A\s*
-          (-?\d+)-(\d\d)-(\d\d)
-          T
-          (\d\d):(\d\d):(\d\d)
-          (\.\d*)?
-          (Z|[+-]\d\d:\d\d)?
-          \s*\z/ix =~ date
-        year = $1.to_i
-        mon = $2.to_i
-        day = $3.to_i
-        hour = $4.to_i
-        min = $5.to_i
-        sec = $6.to_i
-        usec = 0
-        usec = $7.to_f * 1000000 if $7
-        if $8
-          zone = $8
-          year, mon, day, hour, min, sec =
-            apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
-          Time.utc(year, mon, day, hour, min, sec, usec)
-        else
-          Time.local(year, mon, day, hour, min, sec, usec)
-        end
-      else
-        raise ArgumentError.new("invalid date: #{date.inspect}")
-      end
-    end
-    alias iso8601 xmlschema
-  end # class << self
-
-  #
-  # Returns a string which represents the time as date-time defined by RFC 2822:
-  #
-  #   day-of-week, DD month-name CCYY hh:mm:ss zone
-  #
-  # where zone is [+-]hhmm.
-  #
-  # If +self+ is a UTC time, -0000 is used as zone.
-  #
-  def rfc2822
-    sprintf('%s, %02d %s %d %02d:%02d:%02d ',
-      RFC2822_DAY_NAME[wday],
-      day, RFC2822_MONTH_NAME[mon-1], year,
-      hour, min, sec) +
-    if utc?
-      '-0000'
-    else
-      off = utc_offset
-      sign = off < 0 ? '-' : '+'
-      sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
-    end
-  end
-  alias rfc822 rfc2822
-
-  RFC2822_DAY_NAME = [
-    'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
-  ]
-  RFC2822_MONTH_NAME = [
-    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-  ]
-
-  #
-  # Returns a string which represents the time as rfc1123-date of HTTP-date
-  # defined by RFC 2616: 
-  # 
-  #   day-of-week, DD month-name CCYY hh:mm:ss GMT
-  #
-  # Note that the result is always UTC (GMT).
-  #
-  def httpdate
-    t = dup.utc
-    sprintf('%s, %02d %s %d %02d:%02d:%02d GMT',
-      RFC2822_DAY_NAME[t.wday],
-      t.day, RFC2822_MONTH_NAME[t.mon-1], t.year,
-      t.hour, t.min, t.sec)
-  end
-
-  #
-  # Returns a string which represents the time as dateTime defined by XML
-  # Schema:
-  #
-  #   CCYY-MM-DDThh:mm:ssTZD
-  #   CCYY-MM-DDThh:mm:ss.sssTZD
-  #
-  # where TZD is Z or [+-]hh:mm.
-  #
-  # If self is a UTC time, Z is used as TZD.  [+-]hh:mm is used otherwise.
-  #
-  # +fractional_seconds+ specifies a number of digits of fractional seconds.
-  # Its default value is 0.
-  #
-  def xmlschema(fraction_digits=0)
-    sprintf('%d-%02d-%02dT%02d:%02d:%02d',
-      year, mon, day, hour, min, sec) +
-    if fraction_digits == 0
-      ''
-    elsif fraction_digits <= 6
-      '.' + sprintf('%06d', usec)[0, fraction_digits]
-    else
-      '.' + sprintf('%06d', usec) + '0' * (fraction_digits - 6)
-    end +
-    if utc?
-      'Z'
-    else
-      off = utc_offset
-      sign = off < 0 ? '-' : '+'
-      sprintf('%s%02d:%02d', sign, *(off.abs / 60).divmod(60))
-    end
-  end
-  alias iso8601 xmlschema
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class TimeExtentionTest < Test::Unit::TestCase # :nodoc:
-    def test_rfc822
-      assert_equal(Time.utc(1976, 8, 26, 14, 30) + 4 * 3600,
-                   Time.rfc2822("26 Aug 76 14:30 EDT"))
-      assert_equal(Time.utc(1976, 8, 27, 9, 32) + 7 * 3600,
-                   Time.rfc2822("27 Aug 76 09:32 PDT"))
-    end
-
-    def test_rfc2822
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 09:55:06 -0600"))
-      assert_equal(Time.utc(2003, 7, 1, 10, 52, 37) - 2 * 3600,
-                   Time.rfc2822("Tue, 1 Jul 2003 10:52:37 +0200"))
-      assert_equal(Time.utc(1997, 11, 21, 10, 1, 10) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 10:01:10 -0600"))
-      assert_equal(Time.utc(1997, 11, 21, 11, 0, 0) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 11:00:00 -0600"))
-      assert_equal(Time.utc(1997, 11, 24, 14, 22, 1) + 8 * 3600,
-                   Time.rfc2822("Mon, 24 Nov 1997 14:22:01 -0800"))
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        assert_equal(Time.utc(1969, 2, 13, 23, 32, 54) + 3 * 3600 + 30 * 60,
-                     Time.rfc2822("Thu, 13 Feb 1969 23:32:54 -0330"))
-        assert_equal(Time.utc(1969, 2, 13, 23, 32, 0) + 3 * 3600 + 30 * 60,
-                     Time.rfc2822(" Thu,
-        13
-          Feb
-            1969
-        23:32
-                 -0330 (Newfoundland Time)"))
-      end
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6),
-                   Time.rfc2822("21 Nov 97 09:55:06 GMT"))
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 09 :   55  :  06 -0600"))
-      assert_raise(ArgumentError) {
-        # inner comment is not supported.
-        Time.rfc2822("Fri, 21 Nov 1997 09(comment):   55  :  06 -0600")
-      }
-    end
-
-    def test_rfc2616
-      t = Time.utc(1994, 11, 6, 8, 49, 37)
-      assert_equal(t, Time.httpdate("Sun, 06 Nov 1994 08:49:37 GMT"))
-      assert_equal(t, Time.httpdate("Sunday, 06-Nov-94 08:49:37 GMT"))
-      assert_equal(t, Time.httpdate("Sun Nov  6 08:49:37 1994"))
-      assert_equal(Time.utc(1995, 11, 15, 6, 25, 24),
-                   Time.httpdate("Wed, 15 Nov 1995 06:25:24 GMT"))
-      assert_equal(Time.utc(1995, 11, 15, 4, 58, 8),
-                   Time.httpdate("Wed, 15 Nov 1995 04:58:08 GMT"))
-      assert_equal(Time.utc(1994, 11, 15, 8, 12, 31),
-                   Time.httpdate("Tue, 15 Nov 1994 08:12:31 GMT"))
-      assert_equal(Time.utc(1994, 12, 1, 16, 0, 0),
-                   Time.httpdate("Thu, 01 Dec 1994 16:00:00 GMT"))
-      assert_equal(Time.utc(1994, 10, 29, 19, 43, 31),
-                   Time.httpdate("Sat, 29 Oct 1994 19:43:31 GMT"))
-      assert_equal(Time.utc(1994, 11, 15, 12, 45, 26),
-                   Time.httpdate("Tue, 15 Nov 1994 12:45:26 GMT"))
-      assert_equal(Time.utc(1999, 12, 31, 23, 59, 59),
-                   Time.httpdate("Fri, 31 Dec 1999 23:59:59 GMT"))
-    end
-
-    def test_rfc3339
-      t = Time.utc(1985, 4, 12, 23, 20, 50, 520000)
-      s = "1985-04-12T23:20:50.52Z"
-      assert_equal(t, Time.iso8601(s))
-      assert_equal(s, t.iso8601(2))
-
-      t = Time.utc(1996, 12, 20, 0, 39, 57)
-      s = "1996-12-19T16:39:57-08:00"
-      assert_equal(t, Time.iso8601(s))
-      # There is no way to generate time string with arbitrary timezone.
-      s = "1996-12-20T00:39:57Z"
-      assert_equal(t, Time.iso8601(s))
-      assert_equal(s, t.iso8601)
-
-      t = Time.utc(1990, 12, 31, 23, 59, 60)
-      s = "1990-12-31T23:59:60Z"
-      assert_equal(t, Time.iso8601(s))
-      # leap second is representable only if timezone file has it.
-      s = "1990-12-31T15:59:60-08:00"
-      assert_equal(t, Time.iso8601(s))
-
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        t = Time.utc(1937, 1, 1, 11, 40, 27, 870000)
-        s = "1937-01-01T12:00:27.87+00:20"
-        assert_equal(t, Time.iso8601(s))
-      end
-    end
-
-    # http://www.w3.org/TR/xmlschema-2/
-    def test_xmlschema
-      assert_equal(Time.utc(1999, 5, 31, 13, 20, 0) + 5 * 3600,
-                   Time.xmlschema("1999-05-31T13:20:00-05:00"))
-      assert_equal(Time.local(2000, 1, 20, 12, 0, 0),
-                   Time.xmlschema("2000-01-20T12:00:00"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0),
-                   Time.xmlschema("2000-01-20T12:00:00Z"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) - 12 * 3600,
-                   Time.xmlschema("2000-01-20T12:00:00+12:00"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) + 13 * 3600,
-                   Time.xmlschema("2000-01-20T12:00:00-13:00"))
-      assert_equal(Time.utc(2000, 3, 4, 23, 0, 0) - 3 * 3600,
-                   Time.xmlschema("2000-03-04T23:00:00+03:00"))
-      assert_equal(Time.utc(2000, 3, 4, 20, 0, 0),
-                   Time.xmlschema("2000-03-04T20:00:00Z"))
-      assert_equal(Time.local(2000, 1, 15, 0, 0, 0),
-                   Time.xmlschema("2000-01-15T00:00:00"))
-      assert_equal(Time.local(2000, 2, 15, 0, 0, 0),
-                   Time.xmlschema("2000-02-15T00:00:00"))
-      assert_equal(Time.local(2000, 1, 15, 12, 0, 0),
-                   Time.xmlschema("2000-01-15T12:00:00"))
-      assert_equal(Time.utc(2000, 1, 16, 12, 0, 0),
-                   Time.xmlschema("2000-01-16T12:00:00Z"))
-      assert_equal(Time.local(2000, 1, 1, 12, 0, 0),
-                   Time.xmlschema("2000-01-01T12:00:00"))
-      assert_equal(Time.utc(1999, 12, 31, 23, 0, 0),
-                   Time.xmlschema("1999-12-31T23:00:00Z"))
-      assert_equal(Time.local(2000, 1, 16, 12, 0, 0),
-                   Time.xmlschema("2000-01-16T12:00:00"))
-      assert_equal(Time.local(2000, 1, 16, 0, 0, 0),
-                   Time.xmlschema("2000-01-16T00:00:00"))
-      assert_equal(Time.utc(2000, 1, 12, 12, 13, 14),
-                   Time.xmlschema("2000-01-12T12:13:14Z"))
-      assert_equal(Time.utc(2001, 4, 17, 19, 23, 17, 300000),
-                   Time.xmlschema("2001-04-17T19:23:17.3Z"))
-    end
-
-    def test_encode_xmlschema
-      t = Time.utc(2001, 4, 17, 19, 23, 17, 300000)
-      assert_equal("2001-04-17T19:23:17Z", t.xmlschema)
-      assert_equal("2001-04-17T19:23:17.3Z", t.xmlschema(1))
-      assert_equal("2001-04-17T19:23:17.300000Z", t.xmlschema(6))
-      assert_equal("2001-04-17T19:23:17.3000000Z", t.xmlschema(7))
-
-      t = Time.utc(2001, 4, 17, 19, 23, 17, 123456)
-      assert_equal("2001-04-17T19:23:17.1234560Z", t.xmlschema(7))
-      assert_equal("2001-04-17T19:23:17.123456Z", t.xmlschema(6))
-      assert_equal("2001-04-17T19:23:17.12345Z", t.xmlschema(5))
-      assert_equal("2001-04-17T19:23:17.1Z", t.xmlschema(1))
-
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        t = Time.utc(1960, 12, 31, 23, 0, 0, 123456)
-        assert_equal("1960-12-31T23:00:00.123456Z", t.xmlschema(6))
-      end
-    end
-
-    def test_completion
-      now = Time.local(2001,11,29,21,26,35)
-      assert_equal(Time.local( 2001,11,29,21,12),
-                   Time.parse("2001/11/29 21:12", now))
-      assert_equal(Time.local( 2001,11,29),
-                   Time.parse("2001/11/29", now))
-      assert_equal(Time.local( 2001,11,29),
-                   Time.parse(     "11/29", now))
-      #assert_equal(Time.local(2001,11,1), Time.parse("Nov", now))
-      assert_equal(Time.local( 2001,11,29,10,22),
-                   Time.parse(           "10:22", now))
-    end
-
-    def test_invalid
-      # They were actually used in some web sites.
-      assert_raise(ArgumentError) { Time.httpdate("1 Dec 2001 10:23:57 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Sat, 1 Dec 2001 10:25:42 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Sat,  1-Dec-2001 10:53:55 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-2001 10:15:34 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-101 11:10:07 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Fri, 30 Nov 2001 21:30:00 JST") }
-
-      # They were actually used in some mails.
-      assert_raise(ArgumentError) { Time.rfc2822("01-5-20") }
-      assert_raise(ArgumentError) { Time.rfc2822("7/21/00") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001-8-28") }
-      assert_raise(ArgumentError) { Time.rfc2822("00-5-6 1:13:06") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001-9-27 9:36:49") }
-      assert_raise(ArgumentError) { Time.rfc2822("2000-12-13 11:01:11") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001/10/17 04:29:55") }
-      assert_raise(ArgumentError) { Time.rfc2822("9/4/2001 9:23:19 PM") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 Nov 2001 09:04:31") }
-      assert_raise(ArgumentError) { Time.rfc2822("13 Feb 2001 16:4 GMT") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 Oct 00 5:41:19 PM") }
-      assert_raise(ArgumentError) { Time.rfc2822("2 Jul 00 00:51:37 JST") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 11 2001 06:55:57 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("18 \343\366\356\341\370 2000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, Oct 2001  18:53:32") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 2 Nov 2001 03:47:54") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 27 Jul 2001 11.14.14 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Thu, 2 Nov 2000 04:13:53 -600") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 5 Apr 2000 22:57:09 JST") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mon, 11 Sep 2000 19:47:33 00000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 28 Apr 2000 20:40:47 +-900") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 19 Jan 2001 8:15:36 AM -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("Thursday, Sep 27 2001 7:42:35 AM EST") }
-      assert_raise(ArgumentError) { Time.rfc2822("3/11/2001 1:31:57 PM Pacific Daylight Time") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mi, 28 Mrz 2001 11:51:36") }
-      assert_raise(ArgumentError) { Time.rfc2822("P, 30 sept 2001 23:03:14") }
-      assert_raise(ArgumentError) { Time.rfc2822("fr, 11 aug 2000 18:39:22") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fr, 21 Sep 2001 17:44:03 -1000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mo, 18 Jun 2001 19:21:40 -1000") }
-      assert_raise(ArgumentError) { Time.rfc2822("l\366, 12 aug 2000 18:53:20") }
-      assert_raise(ArgumentError) { Time.rfc2822("l\366, 26 maj 2001 00:15:58") }
-      assert_raise(ArgumentError) { Time.rfc2822("Dom, 30 Sep 2001 17:36:30") }
-      assert_raise(ArgumentError) { Time.rfc2822("%&, 31 %2/ 2000 15:44:47 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("dom, 26 ago 2001 03:57:07 -0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("ter, 04 set 2001 16:27:58 -0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
-      assert_raise(ArgumentError) { Time.rfc2822("ele, 11 h: 2000 12:42:15 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("Tue, 14 Aug 2001 3:55:3 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 25 Aug 2000 9:3:48 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 1 Dec 2000 0:57:50 EST") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mon, 7 May 2001 9:39:51 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 1 Aug 2001 16:9:15 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 23 Aug 2000 9:17:36 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 11 Aug 2000 10:4:42 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Sat, 15 Sep 2001 13:22:2 +0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed,16 \276\305\324\302 2001 20:06:25 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed,7 \312\256\322\273\324\302 2001 23:47:22 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=C5=DA),?= 10   2 2001 23:32:26 +0900 (JST)") }
-      assert_raise(ArgumentError) { Time.rfc2822("\307\341\314\343\332\311, 30 \344\346\335\343\310\321 2001 10:01:06") }
-      assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=BF=E5),?= 12  =?iso-8859-1?Q?9=B7=EE?= 2001 14:52:41\n+0900 (JST)") }
-    end
-
-    def test_zone_0000
-      assert_equal(true, Time.parse("2000-01-01T00:00:00Z").utc?)
-      assert_equal(true, Time.parse("2000-01-01T00:00:00-00:00").utc?)
-      assert_equal(false, Time.parse("2000-01-01T00:00:00+00:00").utc?)
-      assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
-      assert_equal(true, Time.parse("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
-      assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
-      assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
-      assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
-      assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
-      assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 UTC").utc?)
-    end
-
-    def test_parse_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.parse("Thu Dec 31 23:59:59 UTC 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:59 -0000 1998"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 08:59:59 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:59:59 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:59 +0000 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 22:59:59 -0100 1998"));t.utc
-      t += 1
-      assert_equal(t, Time.parse("Thu Dec 31 23:59:60 UTC 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:60 -0000 1998"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 08:59:60 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:59:60 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:60 +0000 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 22:59:60 -0100 1998"));t.utc
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.parse("Thu Jan  1 00:00:00 UTC 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:00:00 -0000 1999"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 09:00:00 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 01:00:00 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:00:00 +0000 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:00:00 -0100 1998"))
-    end
-
-    def test_rfc2822_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:59 UTC"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 08:59:59 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:59:59 +0100"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:59 -0100"));t.utc                                  
-      t += 1
-      assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:60 UTC"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 08:59:60 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:59:60 +0100"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:60 -0100"));t.utc                                  
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.rfc2822("Thu,  1 Jan 1999 00:00:00 UTC"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:00:00 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 09:00:00 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 01:00:00 +0100"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:00:00 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:00:00 -0100"))
-    end
-
-    def test_xmlschema_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59Z"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T08:59:59+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:59:59+01:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T22:59:59-01:00"));t.utc
-      t += 1
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60Z"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T08:59:60+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:59:60+01:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T22:59:60-01:00"));t.utc
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00Z"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T09:00:00+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T01:00:00+01:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:00:00-01:00"))
-    end
-
-    def test_ruby_talk_152866
-      t = Time::xmlschema('2005-08-30T22:48:00-07:00')
-      assert_equal(31, t.day)
-      assert_equal(8, t.mon)
-    end
-
-    def test_parse_fraction
-      assert_equal(500000, Time.parse("2000-01-01T00:00:00.5+00:00").tv_usec)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/timeout.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/timeout.rb
deleted file mode 100644
index 5a99c28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/timeout.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-#--
-# = timeout.rb
-#
-# execution timeout
-#
-# = Copyright
-#
-# Copyright:: (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright:: (C) 2000  Information-technology Promotion Agency, Japan
-#
-#++
-#
-# = Description
-#
-# A way of performing a potentially long-running operation in a thread, and
-# terminating it's execution if it hasn't finished within fixed amount of
-# time.
-#
-# Previous versions of timeout didn't use a module for namespace. This version
-# provides both Timeout.timeout, and a backwards-compatible #timeout.
-#
-# = Synopsis
-#
-#   require 'timeout'
-#   status = Timeout::timeout(5) {
-#     # Something that should be interrupted if it takes too much time...
-#   }
-#
-
-module Timeout
-
-  ##
-  # Raised by Timeout#timeout when the block times out.
-
-  class Error < Interrupt
-  end
-  class ExitException < ::Exception # :nodoc:
-  end
-
-  THIS_FILE = /\A#{Regexp.quote(__FILE__)}:/o
-  CALLER_OFFSET = ((c = caller[0]) && THIS_FILE =~ c) ? 1 : 0
-
-  ##
-  # Executes the method's block. If the block execution terminates before +sec+
-  # seconds has passed, it returns true. If not, it terminates the execution
-  # and raises +exception+ (which defaults to Timeout::Error).
-  #
-  # Note that this is both a method of module Timeout, so you can 'include
-  # Timeout' into your classes so they have a #timeout method, as well as a
-  # module method, so you can call it directly as Timeout.timeout().
-
-  def timeout(sec, klass = nil)
-    return yield if sec == nil or sec.zero?
-    raise ThreadError, "timeout within critical session" if Thread.critical
-    exception = klass || Class.new(ExitException)
-    begin
-      x = Thread.current
-      y = Thread.start {
-        sleep sec
-        x.raise exception, "execution expired" if x.alive?
-      }
-      yield sec
-      #    return true
-    rescue exception => e
-      rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
-      (bt = e.backtrace).reject! {|m| rej =~ m}
-      level = -caller(CALLER_OFFSET).size
-      while THIS_FILE =~ bt[level]
-        bt.delete_at(level)
-        level += 1
-      end
-      raise if klass            # if exception class is specified, it
-                                # would be expected outside.
-      raise Error, e.message, e.backtrace
-    ensure
-      y.kill if y and y.alive?
-    end
-  end
-
-  module_function :timeout
-
-end
-
-##
-# Identical to:
-#
-#   Timeout::timeout(n, e, &block).
-#
-# Defined for backwards compatibility with earlier versions of timeout.rb, see
-# Timeout#timeout.
-
-def timeout(n, e = nil, &block) # :nodoc:
-  Timeout::timeout(n, e, &block)
-end
-
-##
-# Another name for Timeout::Error, defined for backwards compatibility with
-# earlier versions of timeout.rb.
-
-TimeoutError = Timeout::Error # :nodoc:
-
-if __FILE__ == $0
-  p timeout(5) {
-    45
-  }
-  p timeout(5, TimeoutError) {
-    45
-  }
-  p timeout(nil) {
-    54
-  }
-  p timeout(0) {
-    54
-  }
-  p timeout(5) {
-    loop {
-      p 10
-      sleep 1
-    }
-  }
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tmpdir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tmpdir.rb
deleted file mode 100644
index 9f518ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tmpdir.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# tmpdir - retrieve temporary directory path
-#
-# $Id: tmpdir.rb 17799 2008-07-02 09:22:26Z shyouhei $
-#
-
-class Dir
-
-  @@systmpdir = '/tmp'
-
-  begin
-    require 'Win32API'
-    CSIDL_LOCAL_APPDATA = 0x001c
-    max_pathlen = 260
-    windir = ' '*(max_pathlen+1)
-    begin
-      getdir = Win32API.new('shell32', 'SHGetFolderPath', 'LLLLP', 'L')
-      raise RuntimeError if getdir.call(0, CSIDL_LOCAL_APPDATA, 0, 0, windir) != 0
-      windir = File.expand_path(windir.rstrip)
-    rescue RuntimeError
-      begin
-        getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L')
-      rescue RuntimeError
-        getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L')
-      end
-      len = getdir.call(windir, windir.size)
-      windir = File.expand_path(windir[0, len])
-    end
-    temp = File.join(windir.untaint, 'temp')
-    @@systmpdir = temp if File.directory?(temp) and File.writable?(temp)
-  rescue LoadError
-  end
-
-  ##
-  # Returns the operating system's temporary file path.
-
-  def Dir::tmpdir
-    tmp = '.'
-    if $SAFE > 0
-      tmp = @@systmpdir
-    else
-      for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'],
-	          ENV['USERPROFILE'], @@systmpdir, '/tmp']
-	if dir and File.directory?(dir) and File.writable?(dir)
-	  tmp = dir
-	  break
-	end
-      end
-      File.expand_path(tmp)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tracer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tracer.rb
deleted file mode 100644
index 71aa49c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tracer.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-#   tracer.rb - 
-#   	$Release Version: 0.2$
-#   	$Revision: 1.8 $
-#   	$Date: 1998/05/19 03:42:49 $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-#
-# tracer main class
-#
-class Tracer
-  @RCS_ID='-$Id: tracer.rb,v 1.8 1998/05/19 03:42:49 keiju Exp keiju $-'
-
-  @stdout = STDOUT
-  @verbose = false
-  class << self
-    attr :verbose, true
-    alias verbose? verbose
-    attr :stdout, true
-  end
-  
-  EVENT_SYMBOL = {
-    "line" => "-",
-    "call" => ">",
-    "return" => "<",
-    "class" => "C",
-    "end" => "E",
-    "c-call" => ">",
-    "c-return" => "<",
-  }
-  
-  def initialize
-    @threads = Hash.new
-    if defined? Thread.main
-      @threads[Thread.main.object_id] = 0
-    else
-      @threads[Thread.current.object_id] = 0
-    end
-
-    @get_line_procs = {}
-
-    @filters = []
-  end
-  
-  def stdout
-    Tracer.stdout
-  end
-
-  def on
-    if block_given?
-      on
-      begin
-	yield
-      ensure
-	off
-      end
-    else
-      set_trace_func method(:trace_func).to_proc
-      stdout.print "Trace on\n" if Tracer.verbose?
-    end
-  end
-  
-  def off
-    set_trace_func nil
-    stdout.print "Trace off\n" if Tracer.verbose?
-  end
-
-  def add_filter(p = proc)
-    @filters.push p
-  end
-
-  def set_get_line_procs(file, p = proc)
-    @get_line_procs[file] = p
-  end
-  
-  def get_line(file, line)
-    if p = @get_line_procs[file]
-      return p.call(line)
-    end
-
-    unless list = SCRIPT_LINES__[file]
-      begin
-	f = open(file)
-	begin 
-	  SCRIPT_LINES__[file] = list = f.readlines
-	ensure
-	  f.close
-	end
-      rescue
-	SCRIPT_LINES__[file] = list = []
-      end
-    end
-
-    if l = list[line - 1]
-      l
-    else
-      "-\n"
-    end
-  end
-  
-  def get_thread_no
-    if no = @threads[Thread.current.object_id]
-      no
-    else
-      @threads[Thread.current.object_id] = @threads.size
-    end
-  end
-  
-  def trace_func(event, file, line, id, binding, klass, *)
-    return if file == __FILE__
-    
-    for p in @filters
-      return unless p.call event, file, line, id, binding, klass
-    end
-    
-    saved_crit = Thread.critical
-    Thread.critical = true
-    stdout.printf("#%d:%s:%d:%s:%s: %s",
-      get_thread_no,
-      file,
-      line,
-      klass || '',
-      EVENT_SYMBOL[event],
-      get_line(file, line))
-    Thread.critical = saved_crit
-  end
-
-  Single = new
-  def Tracer.on
-    if block_given?
-      Single.on{yield}
-    else
-      Single.on
-    end
-  end
-  
-  def Tracer.off
-    Single.off
-  end
-  
-  def Tracer.set_get_line_procs(file_name, p = proc)
-    Single.set_get_line_procs(file_name, p)
-  end
-
-  def Tracer.add_filter(p = proc)
-    Single.add_filter(p)
-  end
-  
-end
-
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
-
-if $0 == __FILE__
-  # direct call
-    
-  $0 = ARGV[0]
-  ARGV.shift
-  Tracer.on
-  require $0
-elsif caller(0).size == 1
-  Tracer.on
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tsort.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tsort.rb
deleted file mode 100644
index a014e7f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/tsort.rb
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# tsort.rb - provides a module for topological sorting and strongly connected components.
-#++
-#
-
-#
-# TSort implements topological sorting using Tarjan's algorithm for
-# strongly connected components.
-#
-# TSort is designed to be able to be used with any object which can be
-# interpreted as a directed graph.
-#
-# TSort requires two methods to interpret an object as a graph,
-# tsort_each_node and tsort_each_child.
-#
-# * tsort_each_node is used to iterate for all nodes over a graph.
-# * tsort_each_child is used to iterate for child nodes of a given node.
-#
-# The equality of nodes are defined by eql? and hash since
-# TSort uses Hash internally.
-#
-# == A Simple Example
-#
-# The following example demonstrates how to mix the TSort module into an
-# existing class (in this case, Hash). Here, we're treating each key in
-# the hash as a node in the graph, and so we simply alias the required
-# #tsort_each_node method to Hash's #each_key method. For each key in the
-# hash, the associated value is an array of the node's child nodes. This
-# choice in turn leads to our implementation of the required #tsort_each_child
-# method, which fetches the array of child nodes and then iterates over that
-# array using the user-supplied block.
-#
-#   require 'tsort'
-#   
-#   class Hash
-#     include TSort
-#     alias tsort_each_node each_key
-#     def tsort_each_child(node, &block)
-#       fetch(node).each(&block)
-#     end
-#   end
-#   
-#   {1=>[2, 3], 2=>[3], 3=>[], 4=>[]}.tsort
-#   #=> [3, 2, 1, 4]
-#   
-#   {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}.strongly_connected_components
-#   #=> [[4], [2, 3], [1]]
-#
-# == A More Realistic Example
-#
-# A very simple `make' like tool can be implemented as follows:
-#
-#   require 'tsort'
-#   
-#   class Make
-#     def initialize
-#       @dep = {}
-#       @dep.default = []
-#     end
-#     
-#     def rule(outputs, inputs=[], &block)
-#       triple = [outputs, inputs, block]
-#       outputs.each {|f| @dep[f] = [triple]}
-#       @dep[triple] = inputs
-#     end
-#     
-#     def build(target)
-#       each_strongly_connected_component_from(target) {|ns|
-#         if ns.length != 1
-#           fs = ns.delete_if {|n| Array === n}
-#           raise TSort::Cyclic.new("cyclic dependencies: #{fs.join ', '}")
-#         end
-#         n = ns.first
-#         if Array === n
-#           outputs, inputs, block = n
-#           inputs_time = inputs.map {|f| File.mtime f}.max
-#           begin
-#             outputs_time = outputs.map {|f| File.mtime f}.min
-#           rescue Errno::ENOENT
-#             outputs_time = nil
-#           end
-#           if outputs_time == nil ||
-#              inputs_time != nil && outputs_time <= inputs_time
-#             sleep 1 if inputs_time != nil && inputs_time.to_i == Time.now.to_i
-#             block.call
-#           end
-#         end
-#       }
-#     end
-#     
-#     def tsort_each_child(node, &block)
-#       @dep[node].each(&block)
-#     end
-#     include TSort
-#   end
-#   
-#   def command(arg)
-#     print arg, "\n"
-#     system arg
-#   end
-#   
-#   m = Make.new
-#   m.rule(%w[t1]) { command 'date > t1' }
-#   m.rule(%w[t2]) { command 'date > t2' }
-#   m.rule(%w[t3]) { command 'date > t3' }
-#   m.rule(%w[t4], %w[t1 t3]) { command 'cat t1 t3 > t4' }
-#   m.rule(%w[t5], %w[t4 t2]) { command 'cat t4 t2 > t5' }
-#   m.build('t5')
-#
-# == Bugs
-#
-# * 'tsort.rb' is wrong name because this library uses
-#   Tarjan's algorithm for strongly connected components.
-#   Although 'strongly_connected_components.rb' is correct but too long.
-#
-# == References
-#
-# R. E. Tarjan, "Depth First Search and Linear Graph Algorithms",
-# <em>SIAM Journal on Computing</em>, Vol. 1, No. 2, pp. 146-160, June 1972.
-#
-
-module TSort
-  class Cyclic < StandardError
-  end
-
-  #
-  # Returns a topologically sorted array of nodes.
-  # The array is sorted from children to parents, i.e.
-  # the first element has no child and the last node has no parent.
-  #
-  # If there is a cycle, TSort::Cyclic is raised.
-  #
-  def tsort
-    result = []
-    tsort_each {|element| result << element}
-    result
-  end
-
-  #
-  # The iterator version of the #tsort method.
-  # <tt><em>obj</em>.tsort_each</tt> is similar to <tt><em>obj</em>.tsort.each</tt>, but
-  # modification of _obj_ during the iteration may lead to unexpected results.
-  #
-  # #tsort_each returns +nil+.
-  # If there is a cycle, TSort::Cyclic is raised.
-  #
-  def tsort_each # :yields: node
-    each_strongly_connected_component {|component|
-      if component.size == 1
-        yield component.first
-      else
-        raise Cyclic.new("topological sort failed: #{component.inspect}")
-      end
-    }
-  end
-
-  #
-  # Returns strongly connected components as an array of arrays of nodes.
-  # The array is sorted from children to parents.
-  # Each elements of the array represents a strongly connected component.
-  #
-  def strongly_connected_components
-    result = []
-    each_strongly_connected_component {|component| result << component}
-    result
-  end
-
-  #
-  # The iterator version of the #strongly_connected_components method.
-  # <tt><em>obj</em>.each_strongly_connected_component</tt> is similar to
-  # <tt><em>obj</em>.strongly_connected_components.each</tt>, but
-  # modification of _obj_ during the iteration may lead to unexpected results.
-  #
-  #
-  # #each_strongly_connected_component returns +nil+.
-  #
-  def each_strongly_connected_component # :yields: nodes
-    id_map = {}
-    stack = []
-    tsort_each_node {|node|
-      unless id_map.include? node
-        each_strongly_connected_component_from(node, id_map, stack) {|c|
-          yield c
-        }
-      end
-    }
-    nil
-  end
-
-  #
-  # Iterates over strongly connected component in the subgraph reachable from 
-  # _node_.
-  #
-  # Return value is unspecified.
-  #
-  # #each_strongly_connected_component_from doesn't call #tsort_each_node.
-  #
-  def each_strongly_connected_component_from(node, id_map={}, stack=[]) # :yields: nodes
-    minimum_id = node_id = id_map[node] = id_map.size
-    stack_length = stack.length
-    stack << node
-
-    tsort_each_child(node) {|child|
-      if id_map.include? child
-        child_id = id_map[child]
-        minimum_id = child_id if child_id && child_id < minimum_id
-      else
-        sub_minimum_id =
-          each_strongly_connected_component_from(child, id_map, stack) {|c|
-            yield c
-          }
-        minimum_id = sub_minimum_id if sub_minimum_id < minimum_id
-      end
-    }
-
-    if node_id == minimum_id
-      component = stack.slice!(stack_length .. -1)
-      component.each {|n| id_map[n] = nil}
-      yield component
-    end
-
-    minimum_id
-  end
-
-  #
-  # Should be implemented by a extended class.
-  #
-  # #tsort_each_node is used to iterate for all nodes over a graph.
-  #
-  def tsort_each_node # :yields: node
-    raise NotImplementedError.new
-  end
-
-  #
-  # Should be implemented by a extended class.
-  #
-  # #tsort_each_child is used to iterate for child nodes of _node_.
-  #
-  def tsort_each_child(node) # :yields: child
-    raise NotImplementedError.new
-  end
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class TSortHash < Hash # :nodoc:
-    include TSort
-    alias tsort_each_node each_key
-    def tsort_each_child(node, &block)
-      fetch(node).each(&block)
-    end
-  end
-
-  class TSortArray < Array # :nodoc:
-    include TSort
-    alias tsort_each_node each_index
-    def tsort_each_child(node, &block)
-      fetch(node).each(&block)
-    end
-  end
-
-  class TSortTest < Test::Unit::TestCase # :nodoc:
-    def test_dag
-      h = TSortHash[{1=>[2, 3], 2=>[3], 3=>[]}]
-      assert_equal([3, 2, 1], h.tsort)
-      assert_equal([[3], [2], [1]], h.strongly_connected_components)
-    end
-
-    def test_cycle
-      h = TSortHash[{1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}]
-      assert_equal([[4], [2, 3], [1]],
-        h.strongly_connected_components.map {|nodes| nodes.sort})
-      assert_raise(TSort::Cyclic) { h.tsort }
-    end
-
-    def test_array
-      a = TSortArray[[1], [0], [0], [2]]
-      assert_equal([[0, 1], [2], [3]],
-        a.strongly_connected_components.map {|nodes| nodes.sort})
-
-      a = TSortArray[[], [0]]
-      assert_equal([[0], [1]],
-        a.strongly_connected_components.map {|nodes| nodes.sort})
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/un.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/un.rb
deleted file mode 100644
index 9bf6c13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/un.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-# 
-# = un.rb
-# 
-# Copyright (c) 2003 WATANABE Hirofumi <eban at ruby-lang.org>
-# 
-# This program is free software.
-# You can distribute/modify this program under the same terms of Ruby.
-# 
-# == Utilities to replace common UNIX commands in Makefiles etc
-#
-# == SYNOPSIS
-#
-#   ruby -run -e cp -- [OPTION] SOURCE DEST
-#   ruby -run -e ln -- [OPTION] TARGET LINK_NAME
-#   ruby -run -e mv -- [OPTION] SOURCE DEST
-#   ruby -run -e rm -- [OPTION] FILE
-#   ruby -run -e mkdir -- [OPTION] DIRS
-#   ruby -run -e rmdir -- [OPTION] DIRS
-#   ruby -run -e install -- [OPTION] SOURCE DEST
-#   ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-#   ruby -run -e touch -- [OPTION] FILE
-#   ruby -run -e help [COMMAND]
-
-require "fileutils"
-require "optparse"
-
-module FileUtils
-#  @fileutils_label = ""
-  @fileutils_output = $stdout
-end
-
-def setup(options = "")
-  ARGV.map! do |x|
-    case x
-    when /^-/
-      x.delete "^-#{options}v"
-    when /[*?\[{]/
-      Dir[x]
-    else
-      x
-    end
-  end
-  ARGV.flatten!
-  ARGV.delete_if{|x| x == "-"}
-  opt_hash = {}
-  OptionParser.new do |o|
-    options.scan(/.:?/) do |s|
-      o.on("-" + s.tr(":", " ")) do |val|
-        opt_hash[s.delete(":").intern] = val
-      end
-    end
-    o.on("-v") do opt_hash[:verbose] = true end
-    o.parse!
-  end
-  yield ARGV, opt_hash
-end
-
-##
-# Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
-#
-#   ruby -run -e cp -- [OPTION] SOURCE DEST
-#
-#   -p		preserve file attributes if possible
-#   -r		copy recursively
-#   -v		verbose
-#
-
-def cp
-  setup("pr") do |argv, options|
-    cmd = "cp"
-    cmd += "_r" if options.delete :r
-    options[:preserve] = true if options.delete :p
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.send cmd, argv, dest, options
-  end
-end
-
-##
-# Create a link to the specified TARGET with LINK_NAME.
-#
-#   ruby -run -e ln -- [OPTION] TARGET LINK_NAME
-#
-#   -s		make symbolic links instead of hard links
-#   -f		remove existing destination files
-#   -v		verbose
-#
-
-def ln
-  setup("sf") do |argv, options|
-    cmd = "ln"
-    cmd += "_s" if options.delete :s
-    options[:force] = true if options.delete :f
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.send cmd, argv, dest, options
-  end
-end
-
-##
-# Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
-#
-#   ruby -run -e mv -- [OPTION] SOURCE DEST
-#
-#   -v		verbose
-#
-
-def mv
-  setup do |argv, options|
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.mv argv, dest, options
-  end
-end
-
-##
-# Remove the FILE
-#
-#   ruby -run -e rm -- [OPTION] FILE
-#
-#   -f		ignore nonexistent files
-#   -r		remove the contents of directories recursively
-#   -v		verbose
-#
-
-def rm
-  setup("fr") do |argv, options|
-    cmd = "rm"
-    cmd += "_r" if options.delete :r
-    options[:force] = true if options.delete :f
-    FileUtils.send cmd, argv, options
-  end
-end
-
-##
-# Create the DIR, if they do not already exist.
-#
-#   ruby -run -e mkdir -- [OPTION] DIR
-#
-#   -p		no error if existing, make parent directories as needed
-#   -v		verbose
-#
-
-def mkdir
-  setup("p") do |argv, options|
-    cmd = "mkdir"
-    cmd += "_p" if options.delete :p
-    FileUtils.send cmd, argv, options
-  end
-end
-
-##
-# Remove the DIR.
-#
-#   ruby -run -e rmdir -- [OPTION] DIR
-#
-#   -v		verbose
-#
-
-def rmdir
-  setup do |argv, options|
-    FileUtils.rmdir argv, options
-  end
-end
-
-##
-# Copy SOURCE to DEST.
-#
-#   ruby -run -e install -- [OPTION] SOURCE DEST
-#
-#   -p		apply access/modification times of SOURCE files to
-#  		corresponding destination files
-#   -m		set permission mode (as in chmod), instead of 0755
-#   -v		verbose
-#
-
-def install
-  setup("pm:") do |argv, options|
-    options[:mode] = (mode = options.delete :m) ? mode.oct : 0755
-    options[:preserve] = true if options.delete :p
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.install argv, dest, options
-  end
-end
-
-##
-# Change the mode of each FILE to OCTAL-MODE.
-#
-#   ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-#
-#   -v		verbose
-#
-
-def chmod
-  setup do |argv, options|
-    mode = argv.shift.oct
-    FileUtils.chmod mode, argv, options
-  end
-end
-
-##
-# Update the access and modification times of each FILE to the current time.
-#
-#   ruby -run -e touch -- [OPTION] FILE
-#
-#   -v		verbose
-#
-
-def touch
-  setup do |argv, options|
-    FileUtils.touch argv, options
-  end
-end
-
-##
-# Display help message.
-#
-#   ruby -run -e help [COMMAND]
-#
-
-def help
-  setup do |argv,|
-    all = argv.empty?
-    open(__FILE__) do |me|
-      while me.gets("##\n")
-	if help = me.gets("\n\n")
-	  if all or argv.delete help[/-e \w+/].sub(/-e /, "")
-	    print help.gsub(/^# ?/, "")
-	  end
-	end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri.rb
deleted file mode 100644
index d06fb40..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# URI support for Ruby
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# Documentation:: Akira Yamada <akira at ruby-lang.org>, Dmitry V. Sabanin <sdmitry at lrn.ru>
-# License:: 
-#  Copyright (c) 2001 akira yamada <akira at ruby-lang.org>
-#  You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: uri.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# 
-# See URI for documentation
-#
-
-module URI
-  # :stopdoc:
-  VERSION_CODE = '000911'.freeze
-  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
-  # :startdoc:
-
-end
-
-require 'uri/common'
-require 'uri/generic'
-require 'uri/ftp'
-require 'uri/http'
-require 'uri/https'
-require 'uri/ldap'
-require 'uri/mailto'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/common.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/common.rb
deleted file mode 100644
index 8b2ed96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/common.rb
+++ /dev/null
@@ -1,611 +0,0 @@
-# = uri/common.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# Revision:: $Id: common.rb 16982 2008-06-07 20:11:00Z shyouhei $
-# License:: 
-#   You can redistribute it and/or modify it under the same term as Ruby.
-#
-
-module URI
-  module REGEXP
-    #
-    # Patterns used to parse URI's
-    #
-    module PATTERN
-      # :stopdoc:
-
-      # RFC 2396 (URI Generic Syntax)
-      # RFC 2732 (IPv6 Literal Addresses in URL's)
-      # RFC 2373 (IPv6 Addressing Architecture)
-
-      # alpha         = lowalpha | upalpha
-      ALPHA = "a-zA-Z"
-      # alphanum      = alpha | digit
-      ALNUM = "#{ALPHA}\\d"
-
-      # hex           = digit | "A" | "B" | "C" | "D" | "E" | "F" |
-      #                         "a" | "b" | "c" | "d" | "e" | "f"
-      HEX     = "a-fA-F\\d"
-      # escaped       = "%" hex hex
-      ESCAPED = "%[#{HEX}]{2}"
-      # mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
-      #                 "(" | ")"
-      # unreserved    = alphanum | mark
-      UNRESERVED = "-_.!~*'()#{ALNUM}"
-      # reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
-      #                 "$" | ","
-      # reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | 
-      #                 "$" | "," | "[" | "]" (RFC 2732)
-      RESERVED = ";/?:@&=+$,\\[\\]"
-
-      # uric          = reserved | unreserved | escaped
-      URIC = "(?:[#{UNRESERVED}#{RESERVED}]|#{ESCAPED})"
-      # uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
-      #                 "&" | "=" | "+" | "$" | ","
-      URIC_NO_SLASH = "(?:[#{UNRESERVED};?:@&=+$,]|#{ESCAPED})"
-      # query         = *uric
-      QUERY = "#{URIC}*"
-      # fragment      = *uric
-      FRAGMENT = "#{URIC}*"
-
-      # domainlabel   = alphanum | alphanum *( alphanum | "-" ) alphanum
-      DOMLABEL = "(?:[#{ALNUM}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
-      # toplabel      = alpha | alpha *( alphanum | "-" ) alphanum
-      TOPLABEL = "(?:[#{ALPHA}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
-      # hostname      = *( domainlabel "." ) toplabel [ "." ]
-      HOSTNAME = "(?:#{DOMLABEL}\\.)*#{TOPLABEL}\\.?"
-
-      # RFC 2373, APPENDIX B:
-      # IPv6address = hexpart [ ":" IPv4address ]
-      # IPv4address   = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
-      # hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
-      # hexseq  = hex4 *( ":" hex4)
-      # hex4    = 1*4HEXDIG
-      #
-      # XXX: This definition has a flaw. "::" + IPv4address must be
-      # allowed too.  Here is a replacement.
-      #
-      # IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
-      IPV4ADDR = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"
-      # hex4     = 1*4HEXDIG
-      HEX4 = "[#{HEX}]{1,4}"
-      # lastpart = hex4 | IPv4address
-      LASTPART = "(?:#{HEX4}|#{IPV4ADDR})"
-      # hexseq1  = *( hex4 ":" ) hex4
-      HEXSEQ1 = "(?:#{HEX4}:)*#{HEX4}"
-      # hexseq2  = *( hex4 ":" ) lastpart
-      HEXSEQ2 = "(?:#{HEX4}:)*#{LASTPART}"
-      # IPv6address = hexseq2 | [ hexseq1 ] "::" [ hexseq2 ]
-      IPV6ADDR = "(?:#{HEXSEQ2}|(?:#{HEXSEQ1})?::(?:#{HEXSEQ2})?)"
-
-      # IPv6prefix  = ( hexseq1 | [ hexseq1 ] "::" [ hexseq1 ] ) "/" 1*2DIGIT
-      # unused
-
-      # ipv6reference = "[" IPv6address "]" (RFC 2732)
-      IPV6REF = "\\[#{IPV6ADDR}\\]"
-
-      # host          = hostname | IPv4address
-      # host          = hostname | IPv4address | IPv6reference (RFC 2732)
-      HOST = "(?:#{HOSTNAME}|#{IPV4ADDR}|#{IPV6REF})"
-      # port          = *digit
-      PORT = '\d*'
-      # hostport      = host [ ":" port ]
-      HOSTPORT = "#{HOST}(?::#{PORT})?"
-
-      # userinfo      = *( unreserved | escaped |
-      #                    ";" | ":" | "&" | "=" | "+" | "$" | "," )
-      USERINFO = "(?:[#{UNRESERVED};:&=+$,]|#{ESCAPED})*"
-
-      # pchar         = unreserved | escaped |
-      #                 ":" | "@" | "&" | "=" | "+" | "$" | ","
-      PCHAR = "(?:[#{UNRESERVED}:@&=+$,]|#{ESCAPED})"
-      # param         = *pchar
-      PARAM = "#{PCHAR}*"
-      # segment       = *pchar *( ";" param )
-      SEGMENT = "#{PCHAR}*(?:;#{PARAM})*"
-      # path_segments = segment *( "/" segment )
-      PATH_SEGMENTS = "#{SEGMENT}(?:/#{SEGMENT})*"
-
-      # server        = [ [ userinfo "@" ] hostport ]
-      SERVER = "(?:#{USERINFO}@)?#{HOSTPORT}"
-      # reg_name      = 1*( unreserved | escaped | "$" | "," |
-      #                     ";" | ":" | "@" | "&" | "=" | "+" )
-      REG_NAME = "(?:[#{UNRESERVED}$,;:@&=+]|#{ESCAPED})+"
-      # authority     = server | reg_name
-      AUTHORITY = "(?:#{SERVER}|#{REG_NAME})"
-
-      # rel_segment   = 1*( unreserved | escaped |
-      #                     ";" | "@" | "&" | "=" | "+" | "$" | "," )
-      REL_SEGMENT = "(?:[#{UNRESERVED};@&=+$,]|#{ESCAPED})+"
-
-      # scheme        = alpha *( alpha | digit | "+" | "-" | "." )
-      SCHEME = "[#{ALPHA}][-+.#{ALPHA}\\d]*"
-
-      # abs_path      = "/"  path_segments
-      ABS_PATH = "/#{PATH_SEGMENTS}"
-      # rel_path      = rel_segment [ abs_path ]
-      REL_PATH = "#{REL_SEGMENT}(?:#{ABS_PATH})?"
-      # net_path      = "//" authority [ abs_path ]
-      NET_PATH   = "//#{AUTHORITY}(?:#{ABS_PATH})?"
-
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      HIER_PART   = "(?:#{NET_PATH}|#{ABS_PATH})(?:\\?(?:#{QUERY}))?"
-      # opaque_part   = uric_no_slash *uric
-      OPAQUE_PART = "#{URIC_NO_SLASH}#{URIC}*"
-
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      ABS_URI   = "#{SCHEME}:(?:#{HIER_PART}|#{OPAQUE_PART})"
-      # relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
-      REL_URI = "(?:#{NET_PATH}|#{ABS_PATH}|#{REL_PATH})(?:\\?#{QUERY})?"
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-      URI_REF = "(?:#{ABS_URI}|#{REL_URI})?(?:##{FRAGMENT})?"
-
-      # XXX:
-      X_ABS_URI = "
-        (#{PATTERN::SCHEME}):                     (?# 1: scheme)
-        (?:
-           (#{PATTERN::OPAQUE_PART})              (?# 2: opaque)
-        |
-           (?:(?:
-             //(?:
-                 (?:(?:(#{PATTERN::USERINFO})@)?  (?# 3: userinfo)
-                   (?:(#{PATTERN::HOST})(?::(\\d*))?))?(?# 4: host, 5: port)
-               |
-                 (#{PATTERN::REG_NAME})           (?# 6: registry)
-               )
-             |
-             (?!//))                              (?# XXX: '//' is the mark for hostport)
-             (#{PATTERN::ABS_PATH})?              (?# 7: path)
-           )(?:\\?(#{PATTERN::QUERY}))?           (?# 8: query)
-        )
-        (?:\\#(#{PATTERN::FRAGMENT}))?            (?# 9: fragment)
-      "
-      X_REL_URI = "
-        (?:
-          (?:
-            //
-            (?:
-              (?:(#{PATTERN::USERINFO})@)?       (?# 1: userinfo)
-                (#{PATTERN::HOST})?(?::(\\d*))?  (?# 2: host, 3: port)
-            |
-              (#{PATTERN::REG_NAME})             (?# 4: registry)
-            )
-          )
-        |
-          (#{PATTERN::REL_SEGMENT})              (?# 5: rel_segment)
-        )?
-        (#{PATTERN::ABS_PATH})?                  (?# 6: abs_path)
-        (?:\\?(#{PATTERN::QUERY}))?              (?# 7: query)
-        (?:\\#(#{PATTERN::FRAGMENT}))?           (?# 8: fragment)
-      "
-      # :startdoc:
-    end # PATTERN
-
-    # :stopdoc:
-
-    # for URI::split
-    ABS_URI = Regexp.new('^' + PATTERN::X_ABS_URI + '$', #'
-                         Regexp::EXTENDED, 'N').freeze
-    REL_URI = Regexp.new('^' + PATTERN::X_REL_URI + '$', #'
-                         Regexp::EXTENDED, 'N').freeze
-
-    # for URI::extract
-    URI_REF     = Regexp.new(PATTERN::URI_REF, false, 'N').freeze
-    ABS_URI_REF = Regexp.new(PATTERN::X_ABS_URI, Regexp::EXTENDED, 'N').freeze
-    REL_URI_REF = Regexp.new(PATTERN::X_REL_URI, Regexp::EXTENDED, 'N').freeze
-
-    # for URI::escape/unescape
-    ESCAPED = Regexp.new(PATTERN::ESCAPED, false, 'N').freeze
-    UNSAFE  = Regexp.new("[^#{PATTERN::UNRESERVED}#{PATTERN::RESERVED}]",
-                         false, 'N').freeze
-
-    # for Generic#initialize
-    SCHEME   = Regexp.new("^#{PATTERN::SCHEME}$", false, 'N').freeze #"
-    USERINFO = Regexp.new("^#{PATTERN::USERINFO}$", false, 'N').freeze #"
-    HOST     = Regexp.new("^#{PATTERN::HOST}$", false, 'N').freeze #"
-    PORT     = Regexp.new("^#{PATTERN::PORT}$", false, 'N').freeze #"
-    OPAQUE   = Regexp.new("^#{PATTERN::OPAQUE_PART}$", false, 'N').freeze #"
-    REGISTRY = Regexp.new("^#{PATTERN::REG_NAME}$", false, 'N').freeze #"
-    ABS_PATH = Regexp.new("^#{PATTERN::ABS_PATH}$", false, 'N').freeze #"
-    REL_PATH = Regexp.new("^#{PATTERN::REL_PATH}$", false, 'N').freeze #"
-    QUERY    = Regexp.new("^#{PATTERN::QUERY}$", false, 'N').freeze #"
-    FRAGMENT = Regexp.new("^#{PATTERN::FRAGMENT}$", false, 'N').freeze #"
-    # :startdoc:
-  end # REGEXP
-
-  module Util # :nodoc:
-    def make_components_hash(klass, array_hash)
-      tmp = {}
-      if array_hash.kind_of?(Array) &&
-          array_hash.size == klass.component.size - 1
-        klass.component[1..-1].each_index do |i|
-          begin
-            tmp[klass.component[i + 1]] = array_hash[i].clone
-          rescue TypeError
-            tmp[klass.component[i + 1]] = array_hash[i]
-          end
-        end
-
-      elsif array_hash.kind_of?(Hash)
-        array_hash.each do |key, value|
-          begin
-            tmp[key] = value.clone
-          rescue TypeError
-            tmp[key] = value
-          end
-        end
-      else
-        raise ArgumentError, 
-          "expected Array of or Hash of components of #{klass.to_s} (#{klass.component[1..-1].join(', ')})"
-      end
-      tmp[:scheme] = klass.to_s.sub(/\A.*::/, '').downcase
-
-      return tmp
-    end
-    module_function :make_components_hash
-  end
-
-  module Escape
-    include REGEXP
-
-    #
-    # == Synopsis
-    #
-    #   URI.escape(str [, unsafe])
-    #
-    # == Args
-    #
-    # +str+::
-    #   String to replaces in.
-    # +unsafe+::
-    #   Regexp that matches all symbols that must be replaced with codes.
-    #   By default uses <tt>REGEXP::UNSAFE</tt>.
-    #   When this argument is a String, it represents a character set.
-    #
-    # == Description
-    #
-    # Escapes the string, replacing all unsafe characters with codes.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   enc_uri = URI.escape("http://example.com/?a=\11\15")
-    #   p enc_uri
-    #   # => "http://example.com/?a=%09%0D"
-    #
-    #   p URI.unescape(enc_uri)
-    #   # => "http://example.com/?a=\t\r"
-    #
-    #   p URI.escape("@?@!", "!?")
-    #   # => "@%3F@%21"
-    #
-    def escape(str, unsafe = UNSAFE)
-      unless unsafe.kind_of?(Regexp)
-        # perhaps unsafe is String object
-        unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
-      end
-      str.gsub(unsafe) do |us|
-        tmp = ''
-        us.each_byte do |uc|
-          tmp << sprintf('%%%02X', uc)
-        end
-        tmp
-      end
-    end
-    alias encode escape
-    #
-    # == Synopsis
-    #
-    #   URI.unescape(str)
-    #
-    # == Args
-    #
-    # +str+::
-    #   Unescapes the string.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   enc_uri = URI.escape("http://example.com/?a=\11\15")
-    #   p enc_uri
-    #   # => "http://example.com/?a=%09%0D"
-    #
-    #   p URI.unescape(enc_uri)
-    #   # => "http://example.com/?a=\t\r"
-    #
-    def unescape(str)
-      str.gsub(ESCAPED) do
-        $&[1,2].hex.chr
-      end
-    end
-    alias decode unescape
-  end
-
-  include REGEXP
-  extend Escape
-
-  @@schemes = {}
-  
-  #
-  # Base class for all URI exceptions.
-  #
-  class Error < StandardError; end
-  #
-  # Not a URI.
-  #
-  class InvalidURIError < Error; end
-  #
-  # Not a URI component.
-  #
-  class InvalidComponentError < Error; end
-  #
-  # URI is valid, bad usage is not.
-  #
-  class BadURIError < Error; end
-
-  #
-  # == Synopsis
-  #
-  #   URI::split(uri)
-  #
-  # == Args
-  #
-  # +uri+::
-  #   String with URI.
-  #
-  # == Description
-  #
-  # Splits the string on following parts and returns array with result:
-  #
-  #   * Scheme
-  #   * Userinfo
-  #   * Host
-  #   * Port
-  #   * Registry
-  #   * Path
-  #   * Opaque
-  #   * Query
-  #   * Fragment
-  # 
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   p URI.split("http://www.ruby-lang.org/")
-  #   # => ["http", nil, "www.ruby-lang.org", nil, nil, "/", nil, nil, nil]
-  #
-  def self.split(uri)
-    case uri
-    when ''
-      # null uri
-
-    when ABS_URI
-      scheme, opaque, userinfo, host, port, 
-        registry, path, query, fragment = $~[1..-1]
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      # opaque_part   = uric_no_slash *uric
-
-      # abs_path      = "/"  path_segments
-      # net_path      = "//" authority [ abs_path ]
-
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-
-      if !scheme
-        raise InvalidURIError, 
-          "bad URI(absolute but no scheme): #{uri}"
-      end
-      if !opaque && (!path && (!host && !registry))
-        raise InvalidURIError,
-          "bad URI(absolute but no path): #{uri}" 
-      end
-
-    when REL_URI
-      scheme = nil
-      opaque = nil
-
-      userinfo, host, port, registry, 
-        rel_segment, abs_path, query, fragment = $~[1..-1]
-      if rel_segment && abs_path
-        path = rel_segment + abs_path
-      elsif rel_segment
-        path = rel_segment
-      elsif abs_path
-        path = abs_path
-      end
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-
-      # relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
-
-      # net_path      = "//" authority [ abs_path ]
-      # abs_path      = "/"  path_segments
-      # rel_path      = rel_segment [ abs_path ]
-
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-
-    else
-      raise InvalidURIError, "bad URI(is not URI?): #{uri}"
-    end
-
-    path = '' if !path && !opaque # (see RFC2396 Section 5.2)
-    ret = [
-      scheme, 
-      userinfo, host, port,         # X
-      registry,                        # X
-      path,                         # Y
-      opaque,                        # Y
-      query,
-      fragment
-    ]
-    return ret
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::parse(uri_str)
-  #
-  # == Args
-  #
-  # +uri_str+::
-  #   String with URI.
-  #
-  # == Description
-  #
-  # Creates one of the URI's subclasses instance from the string.
-  #  
-  # == Raises
-  #
-  # URI::InvalidURIError
-  #   Raised if URI given is not a correct one.
-  #
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   uri = URI.parse("http://www.ruby-lang.org/")
-  #   p uri
-  #   # => #<URI::HTTP:0x202281be URL:http://www.ruby-lang.org/>
-  #   p uri.scheme 
-  #   # => "http" 
-  #   p uri.host 
-  #   # => "www.ruby-lang.org" 
-  # 
-  def self.parse(uri)
-    scheme, userinfo, host, port, 
-      registry, path, opaque, query, fragment = self.split(uri)
-
-    if scheme && @@schemes.include?(scheme.upcase)
-      @@schemes[scheme.upcase].new(scheme, userinfo, host, port, 
-                                   registry, path, opaque, query, 
-                                   fragment)
-    else
-      Generic.new(scheme, userinfo, host, port, 
-                  registry, path, opaque, query, 
-                  fragment)
-    end
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::join(str[, str, ...])
-  #
-  # == Args
-  #
-  # +str+::
-  #   String(s) to work with
-  #
-  # == Description
-  #
-  # Joins URIs.
-  #
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   p URI.join("http://localhost/","main.rbx")
-  #   # => #<URI::HTTP:0x2022ac02 URL:http://localhost/main.rbx>
-  #
-  def self.join(*str)
-    u = self.parse(str[0])
-    str[1 .. -1].each do |x|
-      u = u.merge(x)
-    end
-    u
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::extract(str[, schemes][,&blk])
-  #
-  # == Args
-  #
-  # +str+:: 
-  #   String to extract URIs from.
-  # +schemes+::
-  #   Limit URI matching to a specific schemes.
-  #
-  # == Description
-  #
-  # Extracts URIs from a string. If block given, iterates through all matched URIs.
-  # Returns nil if block given or array with matches.
-  #
-  # == Usage
-  #
-  #   require "uri"
-  #
-  #   URI.extract("text here http://foo.example.org/bla and here mailto:test at example.com and here also.")
-  #   # => ["http://foo.example.com/bla", "mailto:test at example.com"]
-  #
-  def self.extract(str, schemes = nil, &block)
-    if block_given?
-      str.scan(regexp(schemes)) { yield $& }
-      nil
-    else
-      result = []
-      str.scan(regexp(schemes)) { result.push $& }
-      result
-    end
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::regexp([match_schemes])
-  #
-  # == Args
-  #
-  # +match_schemes+:: 
-  #   Array of schemes. If given, resulting regexp matches to URIs
-  #   whose scheme is one of the match_schemes.
-  # 
-  # == Description
-  # Returns a Regexp object which matches to URI-like strings.
-  # The Regexp object returned by this method includes arbitrary
-  # number of capture group (parentheses).  Never rely on it's number.
-  # 
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   # extract first URI from html_string
-  #   html_string.slice(URI.regexp)
-  # 
-  #   # remove ftp URIs
-  #   html_string.sub(URI.regexp(['ftp'])
-  # 
-  #   # You should not rely on the number of parentheses
-  #   html_string.scan(URI.regexp) do |*matches|
-  #     p $&
-  #   end
-  #
-  def self.regexp(schemes = nil)
-    unless schemes
-      ABS_URI_REF
-    else
-      /(?=#{Regexp.union(*schemes)}:)#{PATTERN::X_ABS_URI}/xn
-    end
-  end
-
-end
-
-module Kernel
-  # alias for URI.parse.
-  #
-  # This method is introduced at 1.8.2.
-  def URI(uri_str) # :doc:
-    URI.parse(uri_str)
-  end
-  module_function :URI
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ftp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ftp.rb
deleted file mode 100644
index 4a6ecb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ftp.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-# = uri/ftp.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: ftp.rb 11757 2007-02-15 11:36:28Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # RFC1738 section 3.2.
-  #
-  class FTP < Generic
-    DEFAULT_PORT = 21
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port,
-      :path, :typecode
-    ].freeze
-    #
-    # Typecode is, "a", "i" or "d". 
-    # As for "a" the text, as for "i" binary, 
-    # as for "d" the directory is displayed. 
-    # "A" with the text, as for "i" being binary, 
-    # is because the respective data type was called ASCII and 
-    # IMAGE with the protocol of FTP.
-    #
-    TYPECODE = ['a', 'i', 'd'].freeze
-    TYPECODE_PREFIX = ';type='.freeze
-
-    def self.new2(user, password, host, port, path, 
-                  typecode = nil, arg_check = true)
-      typecode = nil if typecode.size == 0
-      if typecode && !TYPECODE.include?(typecode)
-        raise ArgumentError,
-          "bad typecode is specified: #{typecode}"
-      end
-
-      # do escape
-
-      self.new('ftp',
-               [user, password], 
-               host, port, nil, 
-               typecode ? path + TYPECODE_PREFIX + typecode : path, 
-               nil, nil, nil, arg_check)
-    end
-
-    #
-    # == Description
-    #
-    # Creates a new URI::FTP object from components of URI::FTP with
-    # check.  It is scheme, userinfo, host, port, path and typecode. It
-    # provided by an Array or a Hash. typecode is "a", "i" or "d".
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:typecode]
-        if tmp[:typecode].size == 1
-          tmp[:typecode] = TYPECODE_PREFIX + tmp[:typecode] 
-        end
-        tmp[:path] << tmp[:typecode]
-      end
-
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Create a new URI::FTP object from ``generic'' components with no
-    # check.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #   p ftp = URI.parse("ftp://ftp.ruby-lang.org/pub/ruby/;type=d") 
-    #   # => #<URI::FTP:0x201fad08 URL:ftp://ftp.ruby-lang.org/pub/ruby/;type=d>
-    #   p ftp.typecode
-    #   # => "d"
-    #
-    def initialize(*arg)
-      super(*arg)
-      @typecode = nil
-      tmp = @path.index(TYPECODE_PREFIX)
-      if tmp
-        typecode = @path[tmp + TYPECODE_PREFIX.size..-1]
-        self.set_path(@path[0..tmp - 1])
-        
-        if arg[-1]
-          self.typecode = typecode
-        else
-          self.set_typecode(typecode)
-        end
-      end
-    end
-    attr_reader :typecode
-
-    def check_typecode(v)
-      if TYPECODE.include?(v)
-        return true
-      else
-        raise InvalidComponentError,
-          "bad typecode(expected #{TYPECODE.join(', ')}): #{v}"
-      end
-    end
-    private :check_typecode
-
-    def set_typecode(v)
-      @typecode = v
-    end
-    protected :set_typecode
-
-    def typecode=(typecode)
-      check_typecode(typecode)
-      set_typecode(typecode)
-      typecode
-    end
-
-    def merge(oth) # :nodoc:
-      tmp = super(oth)
-      if self != tmp
-        tmp.set_typecode(oth.typecode)
-      end
-
-      return tmp
-    end
-
-    def to_s
-      save_path = nil
-      if @typecode
-        save_path = @path
-        @path = @path + TYPECODE_PREFIX + @typecode
-      end
-      str = super
-      if @typecode
-        @path = save_path
-      end
-
-      return str
-    end
-  end
-  @@schemes['FTP'] = FTP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/generic.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/generic.rb
deleted file mode 100644
index 9f0030d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/generic.rb
+++ /dev/null
@@ -1,1122 +0,0 @@
-#
-# = uri/generic.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: generic.rb 17096 2008-06-11 06:23:18Z shyouhei $
-#
-
-require 'uri/common'
-
-module URI
-  
-  #
-  # Base class for all URI classes.
-  # Implements generic URI syntax as per RFC 2396.
-  #
-  class Generic
-    include URI
-    include REGEXP
-
-    DEFAULT_PORT = nil
-
-    #
-    # Returns default port
-    #
-    def self.default_port
-      self::DEFAULT_PORT
-    end
-
-    def default_port
-      self.class.default_port
-    end
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port, :registry, 
-      :path, :opaque, 
-      :query, 
-      :fragment
-    ].freeze
-
-    #
-    # Components of the URI in the order.
-    #
-    def self.component
-      self::COMPONENT
-    end
-
-    USE_REGISTRY = false
-
-    #
-    # DOC: FIXME!
-    #
-    def self.use_registry
-      self::USE_REGISTRY
-    end
-
-    #
-    # == Synopsis
-    #
-    # See #new
-    #
-    # == Description
-    #
-    # At first, tries to create a new URI::Generic instance using
-    # URI::Generic::build. But, if exception URI::InvalidComponentError is raised, 
-    # then it URI::Escape.escape all URI components and tries again.
-    #
-    #
-    def self.build2(args)
-      begin
-        return self.build(args)
-      rescue InvalidComponentError
-        if args.kind_of?(Array)
-          return self.build(args.collect{|x| 
-            if x
-              URI.escape(x)
-            else
-              x
-            end
-          })
-        elsif args.kind_of?(Hash)
-          tmp = {}
-          args.each do |key, value|
-            tmp[key] = if value
-                URI.escape(value)
-              else
-                value
-              end
-          end
-          return self.build(tmp)
-        end
-      end
-    end
-
-    #
-    # == Synopsis
-    #
-    # See #new
-    #
-    # == Description
-    #
-    # Creates a new URI::Generic instance from components of URI::Generic
-    # with check.  Components are: scheme, userinfo, host, port, registry, path,
-    # opaque, query and fragment. You can provide arguments either by an Array or a Hash.
-    # See #new for hash keys to use or for order of array items.
-    #
-    def self.build(args)
-      if args.kind_of?(Array) &&
-          args.size == ::URI::Generic::COMPONENT.size
-        tmp = args
-      elsif args.kind_of?(Hash)
-        tmp = ::URI::Generic::COMPONENT.collect do |c|
-          if args.include?(c)
-            args[c]
-          else
-            nil
-          end
-        end
-      else
-        raise ArgumentError, 
-        "expected Array of or Hash of components of #{self.class} (#{self.class.component.join(', ')})"
-      end
-
-      tmp << true
-      return self.new(*tmp)
-    end
-    #
-    # == Args
-    #
-    # +scheme+::
-    #   Protocol scheme, i.e. 'http','ftp','mailto' and so on.
-    # +userinfo+::
-    #   User name and password, i.e. 'sdmitry:bla'
-    # +host+::
-    #   Server host name
-    # +port+::
-    #   Server port
-    # +registry+::
-    #   DOC: FIXME!
-    # +path+::
-    #   Path on server
-    # +opaque+::
-    #   DOC: FIXME!
-    # +query+::
-    #   Query data
-    # +fragment+::
-    #   A part of URI after '#' sign
-    # +arg_check+::
-    #   Check arguments [false by default]
-    #
-    # == Description
-    #
-    # Creates a new URI::Generic instance from ``generic'' components without check.
-    #
-    def initialize(scheme, 
-                   userinfo, host, port, registry, 
-                   path, opaque, 
-                   query, 
-                   fragment,
-                   arg_check = false)
-      @scheme = nil
-      @user = nil
-      @password = nil
-      @host = nil
-      @port = nil
-      @path = nil
-      @query = nil
-      @opaque = nil
-      @registry = nil
-      @fragment = nil
-
-      if arg_check
-        self.scheme = scheme
-        self.userinfo = userinfo
-        self.host = host
-        self.port = port
-        self.path = path
-        self.query = query
-        self.opaque = opaque
-        self.registry = registry
-        self.fragment = fragment
-      else
-        self.set_scheme(scheme)
-        self.set_userinfo(userinfo)
-        self.set_host(host)
-        self.set_port(port)
-        self.set_path(path)
-        self.set_query(query)
-        self.set_opaque(opaque)
-        self.set_registry(registry)
-        self.set_fragment(fragment)
-      end
-      if @registry && !self.class.use_registry
-        raise InvalidURIError, 
-          "the scheme #{@scheme} does not accept registry part: #{@registry} (or bad hostname?)"
-      end
-      
-      @scheme.freeze if @scheme
-      self.set_path('') if !@path && !@opaque # (see RFC2396 Section 5.2)
-      self.set_port(self.default_port) if self.default_port && !@port
-    end
-    attr_reader :scheme
-    attr_reader :host
-    attr_reader :port
-    attr_reader :registry
-    attr_reader :path
-    attr_reader :query
-    attr_reader :opaque
-    attr_reader :fragment
-
-    # replace self by other URI object
-    def replace!(oth)
-      if self.class != oth.class
-        raise ArgumentError, "expected #{self.class} object"
-      end
-
-      component.each do |c|
-        self.__send__("#{c}=", oth.__send__(c))
-      end
-    end
-    private :replace!
-
-    def component
-      self.class.component
-    end
-
-    def check_scheme(v)
-      if v && SCHEME !~ v
-        raise InvalidComponentError,
-          "bad component(expected scheme component): #{v}"
-      end
-
-      return true
-    end
-    private :check_scheme
-
-    def set_scheme(v)
-      @scheme = v
-    end
-    protected :set_scheme
-
-    def scheme=(v)
-      check_scheme(v)
-      set_scheme(v)
-      v
-    end
-
-    def check_userinfo(user, password = nil)
-      if !password
-        user, password = split_userinfo(user)
-      end
-      check_user(user)
-      check_password(password, user)
-
-      return true
-    end
-    private :check_userinfo
-
-    def check_user(v)
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set user with registry or opaque"
-      end
-
-      return v unless v
-
-      if USERINFO !~ v
-        raise InvalidComponentError,
-          "bad component(expected userinfo component or user component): #{v}"
-      end
-
-      return true
-    end
-    private :check_user
-
-    def check_password(v, user = @user)
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set password with registry or opaque"
-      end
-      return v unless v
-
-      if !user
-        raise InvalidURIError,
-          "password component depends user component"
-      end
-
-      if USERINFO !~ v
-        raise InvalidComponentError,
-          "bad component(expected user component): #{v}"
-      end
-
-      return true
-    end
-    private :check_password
-
-    #
-    # Sets userinfo, argument is string like 'name:pass'
-    #
-    def userinfo=(userinfo)
-      if userinfo.nil?
-        return nil
-      end
-      check_userinfo(*userinfo)
-      set_userinfo(*userinfo)
-      # returns userinfo
-    end
-
-    def user=(user)
-      check_user(user)
-      set_user(user)
-      # returns user
-    end
-    
-    def password=(password)
-      check_password(password)
-      set_password(password)
-      # returns password
-    end
-
-    def set_userinfo(user, password = nil)
-      unless password 
-        user, password = split_userinfo(user)
-      end
-      @user     = user
-      @password = password if password
-
-      [@user, @password]
-    end
-    protected :set_userinfo
-
-    def set_user(v)
-      set_userinfo(v, @password)
-      v
-    end
-    protected :set_user
-
-    def set_password(v)
-      @password = v
-      # returns v
-    end
-    protected :set_password
-
-    def split_userinfo(ui)
-      return nil, nil unless ui
-      user, password = ui.split(/:/, 2)
-
-      return user, password
-    end
-    private :split_userinfo
-
-    def escape_userpass(v)
-      v = URI.escape(v, /[@:\/]/o) # RFC 1738 section 3.1 #/
-    end
-    private :escape_userpass
-
-    def userinfo
-      if @user.nil?
-        nil
-      elsif @password.nil?
-        @user
-      else
-        @user + ':' + @password
-      end
-    end
-
-    def user
-      @user
-    end
-
-    def password
-      @password
-    end
-
-    def check_host(v)
-      return v unless v
-
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set host with registry or opaque"
-      elsif HOST !~ v
-        raise InvalidComponentError,
-          "bad component(expected host component): #{v}"
-      end
-
-      return true
-    end
-    private :check_host
-
-    def set_host(v)
-      @host = v
-    end
-    protected :set_host
-
-    def host=(v)
-      check_host(v)
-      set_host(v)
-      v
-    end
-
-    def check_port(v)
-      return v unless v
-
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set port with registry or opaque"
-      elsif !v.kind_of?(Fixnum) && PORT !~ v
-        raise InvalidComponentError,
-          "bad component(expected port component): #{v}"
-      end
-
-      return true
-    end
-    private :check_port
-
-    def set_port(v)
-      unless !v || v.kind_of?(Fixnum)
-        if v.empty?
-          v = nil
-        else
-          v = v.to_i
-        end
-      end
-      @port = v
-    end
-    protected :set_port
-
-    def port=(v)
-      check_port(v)
-      set_port(v)
-      port
-    end
-
-    def check_registry(v)
-      return v unless v
-
-      # raise if both server and registry are not nil, because:
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-      if @host || @port || @user # userinfo = @user + ':' + @password
-        raise InvalidURIError, 
-          "can not set registry with host, port, or userinfo"
-      elsif v && REGISTRY !~ v
-        raise InvalidComponentError,
-          "bad component(expected registry component): #{v}"
-      end
-
-      return true
-    end
-    private :check_registry
-
-    def set_registry(v)
-      @registry = v
-    end
-    protected :set_registry
-
-    def registry=(v)
-      check_registry(v)
-      set_registry(v)
-      v
-    end
-
-    def check_path(v)
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if v && @opaque
-        raise InvalidURIError, 
-          "path conflicts with opaque"
-      end
-
-      if @scheme
-        if v && v != '' && ABS_PATH !~ v
-          raise InvalidComponentError, 
-            "bad component(expected absolute path component): #{v}"
-        end
-      else
-        if v && v != '' && ABS_PATH !~ v && REL_PATH !~ v
-          raise InvalidComponentError, 
-            "bad component(expected relative path component): #{v}"
-        end
-      end
-
-      return true
-    end
-    private :check_path
-
-    def set_path(v)
-      @path = v
-    end
-    protected :set_path
-
-    def path=(v)
-      check_path(v)
-      set_path(v)
-      v
-    end
-
-    def check_query(v)
-      return v unless v
-
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if @opaque
-        raise InvalidURIError, 
-          "query conflicts with opaque"
-      end
-
-      if v && v != '' && QUERY !~ v
-          raise InvalidComponentError, 
-            "bad component(expected query component): #{v}"
-        end
-
-      return true
-    end
-    private :check_query
-
-    def set_query(v)
-      @query = v
-    end
-    protected :set_query
-
-    def query=(v)
-      check_query(v)
-      set_query(v)
-      v
-    end
-
-    def check_opaque(v)
-      return v unless v
-
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if @host || @port || @user || @path  # userinfo = @user + ':' + @password
-        raise InvalidURIError, 
-          "can not set opaque with host, port, userinfo or path"
-      elsif v && OPAQUE !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_opaque
-
-    def set_opaque(v)
-      @opaque = v
-    end
-    protected :set_opaque
-
-    def opaque=(v)
-      check_opaque(v)
-      set_opaque(v)
-      v
-    end
-
-    def check_fragment(v)
-      return v unless v
-
-      if v && v != '' && FRAGMENT !~ v
-        raise InvalidComponentError, 
-          "bad component(expected fragment component): #{v}"
-      end
-
-      return true
-    end
-    private :check_fragment
-
-    def set_fragment(v)
-      @fragment = v
-    end
-    protected :set_fragment
-
-    def fragment=(v)
-      check_fragment(v)
-      set_fragment(v)
-      v
-    end
-
-    #
-    # Checks if URI has a path
-    #
-    def hierarchical?
-      if @path
-        true
-      else
-        false
-      end
-    end
-
-    #
-    # Checks if URI is an absolute one
-    #
-    def absolute?
-      if @scheme
-        true
-      else
-        false
-      end
-    end
-    alias absolute absolute?
-
-    #
-    # Checks if URI is relative
-    #
-    def relative?
-      !absolute?
-    end
-
-    def split_path(path)
-      path.split(%r{/+}, -1)
-    end
-    private :split_path
-
-    def merge_path(base, rel)
-      # RFC2396, Section 5.2, 5)
-      if rel[0] == ?/ #/
-        # RFC2396, Section 5.2, 5)
-        return rel
-
-      else
-        # RFC2396, Section 5.2, 6)
-        base_path = split_path(base)
-        rel_path  = split_path(rel)
-
-        # RFC2396, Section 5.2, 6), a)
-	base_path << '' if base_path.last == '..'
-	while i = base_path.index('..')
-	  base_path.slice!(i - 1, 2)
-        end
-        if base_path.empty?
-          base_path = [''] # keep '/' for root directory
-        else
-	  base_path.pop
-        end
-
-        # RFC2396, Section 5.2, 6), c)
-        # RFC2396, Section 5.2, 6), d)
-        rel_path.push('') if rel_path.last == '.' || rel_path.last == '..'
-        rel_path.delete('.')
-
-        # RFC2396, Section 5.2, 6), e)
-        tmp = []
-        rel_path.each do |x|
-          if x == '..' &&
-              !(tmp.empty? || tmp.last == '..')
-            tmp.pop
-          else
-            tmp << x
-          end
-        end
-
-        add_trailer_slash = true
-        while x = tmp.shift
-          if x == '..' && base_path.size > 1
-            # RFC2396, Section 4
-            # a .. or . in an absolute path has no special meaning
-            base_path.pop
-          else
-            # if x == '..'
-            #   valid absolute (but abnormal) path "/../..."
-            # else
-            #   valid absolute path
-            # end
-            base_path << x
-            tmp.each {|t| base_path << t}
-            add_trailer_slash = false
-            break
-          end
-        end
-        base_path.push('') if add_trailer_slash
-
-        return base_path.join('/')
-      end
-    end
-    private :merge_path
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Destructive form of #merge
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("http://my.example.com")
-    #   uri.merge!("/main.rbx?page=1")
-    #   p uri
-    #   # =>  #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
-    #
-    def merge!(oth)
-      t = merge(oth)
-      if self == t
-        nil
-      else
-        replace!(t)
-        self
-      end
-    end
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Merges two URI's.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("http://my.example.com")
-    #   p uri.merge("/main.rbx?page=1")
-    #   # =>  #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
-    #
-    def merge(oth)
-      begin
-        base, rel = merge0(oth)
-      rescue
-        raise $!.class, $!.message
-      end
-
-      if base == rel
-        return base
-      end
-
-      authority = rel.userinfo || rel.host || rel.port
-
-      # RFC2396, Section 5.2, 2)
-      if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query
-        base.set_fragment(rel.fragment) if rel.fragment
-        return base
-      end
-
-      base.set_query(nil)
-      base.set_fragment(nil)
-
-      # RFC2396, Section 5.2, 4)
-      if !authority
-        base.set_path(merge_path(base.path, rel.path)) if base.path && rel.path
-      else
-        # RFC2396, Section 5.2, 4)
-        base.set_path(rel.path) if rel.path
-      end
-
-      # RFC2396, Section 5.2, 7)
-      base.set_userinfo(rel.userinfo) if rel.userinfo
-      base.set_host(rel.host)         if rel.host
-      base.set_port(rel.port)         if rel.port
-      base.set_query(rel.query)       if rel.query
-      base.set_fragment(rel.fragment) if rel.fragment
-
-      return base
-    end # merge
-    alias + merge
-
-    # return base and rel.
-    # you can modify `base', but can not `rel'.
-    def merge0(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      if self.relative? && oth.relative?
-        raise BadURIError, 
-          "both URI are relative"
-      end
-
-      if self.absolute? && oth.absolute?
-        #raise BadURIError, 
-        #  "both URI are absolute"
-        # hmm... should return oth for usability?
-        return oth, oth
-      end
-
-      if self.absolute?
-        return self.dup, oth
-      else
-        return oth, oth
-      end
-    end
-    private :merge0
-
-    def route_from_path(src, dst)
-      # RFC2396, Section 4.2
-      return '' if src == dst
-
-      src_path = split_path(src)
-      dst_path = split_path(dst)
-
-      # hmm... dst has abnormal absolute path, 
-      # like "/./", "/../", "/x/../", ...
-      if dst_path.include?('..') ||
-          dst_path.include?('.')
-        return dst.dup
-      end
-
-      src_path.pop
-
-      # discard same parts
-      while dst_path.first == src_path.first
-        break if dst_path.empty?
-
-        src_path.shift
-        dst_path.shift
-      end
-
-      tmp = dst_path.join('/')
-
-      # calculate
-      if src_path.empty?
-        if tmp.empty?
-          return './'
-        elsif dst_path.first.include?(':') # (see RFC2396 Section 5)
-          return './' + tmp
-        else
-          return tmp
-        end
-      end
-
-      return '../' * src_path.size + tmp
-    end
-    private :route_from_path
-
-    def route_from0(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      if self.relative?
-        raise BadURIError, 
-          "relative URI: #{self}"
-      end
-      if oth.relative?
-        raise BadURIError, 
-          "relative URI: #{oth}"
-      end
-
-      if self.scheme != oth.scheme
-        return self, self.dup
-      end
-      rel = URI::Generic.new(nil, # it is relative URI
-                             self.userinfo, self.host, self.port, 
-                             self.registry, self.path, self.opaque,
-                             self.query, self.fragment)
-
-      if rel.userinfo != oth.userinfo ||
-          rel.host.to_s.downcase != oth.host.to_s.downcase ||
-          rel.port != oth.port
-	if self.userinfo.nil? && self.host.nil?
-	  return self, self.dup
-	end
-        rel.set_port(nil) if rel.port == oth.default_port
-        return rel, rel
-      end
-      rel.set_userinfo(nil)
-      rel.set_host(nil)
-      rel.set_port(nil)
-
-      if rel.path && rel.path == oth.path
-        rel.set_path('')
-        rel.set_query(nil) if rel.query == oth.query
-        return rel, rel
-      elsif rel.opaque && rel.opaque == oth.opaque
-        rel.set_opaque('')
-        rel.set_query(nil) if rel.query == oth.query
-        return rel, rel
-      end
-
-      # you can modify `rel', but can not `oth'.
-      return oth, rel
-    end
-    private :route_from0
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Calculates relative path from oth to self
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://my.example.com/main.rbx?page=1')
-    #   p uri.route_from('http://my.example.com')
-    #   #=> #<URI::Generic:0x20218858 URL:/main.rbx?page=1>
-    #
-    def route_from(oth)
-      # you can modify `rel', but can not `oth'.
-      begin
-        oth, rel = route_from0(oth)
-      rescue
-        raise $!.class, $!.message
-      end
-      if oth == rel
-        return rel
-      end
-
-      rel.set_path(route_from_path(oth.path, self.path))
-      if rel.path == './' && self.query
-        # "./?foo" -> "?foo"
-        rel.set_path('')
-      end
-
-      return rel
-    end
-
-    alias - route_from
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Calculates relative path to oth from self
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://my.example.com')
-    #   p uri.route_to('http://my.example.com/main.rbx?page=1')
-    #   #=> #<URI::Generic:0x2020c2f6 URL:/main.rbx?page=1>
-    #    
-    def route_to(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      oth.route_from(self)
-    end
-
-    #
-    # Returns normalized URI
-    # 
-    def normalize
-      uri = dup
-      uri.normalize!
-      uri
-    end
-
-    #
-    # Destructive version of #normalize
-    #
-    def normalize!
-      if path && path == ''
-        set_path('/')
-      end
-      if host && host != host.downcase
-        set_host(self.host.downcase)
-      end        
-    end
-
-    def path_query
-      str = @path
-      if @query
-        str += '?' + @query
-      end
-      str
-    end
-    private :path_query
-
-    #
-    # Constructs String from URI
-    # 
-    def to_s
-      str = ''
-      if @scheme
-        str << @scheme
-        str << ':'
-      end
-
-      if @opaque
-        str << @opaque
-
-      else
-        if @registry
-          str << @registry
-        else
-          if @host
-            str << '//'
-          end
-          if self.userinfo
-            str << self.userinfo
-            str << '@'
-          end
-          if @host
-            str << @host
-          end
-          if @port && @port != self.default_port
-            str << ':'
-            str << @port.to_s
-          end
-        end
-
-        str << path_query
-      end
-
-      if @fragment
-        str << '#'
-        str << @fragment
-      end
-
-      str
-    end
-
-    #
-    # Compares to URI's
-    #
-    def ==(oth)
-      if self.class == oth.class
-        self.normalize.component_ary == oth.normalize.component_ary
-      else
-        false
-      end
-    end
-
-    def hash
-      self.component_ary.hash
-    end
-
-    def eql?(oth)
-      self.component_ary.eql?(oth.component_ary)
-    end
-
-=begin
-
---- URI::Generic#===(oth)
-
-=end
-#    def ===(oth)
-#      raise NotImplementedError
-#    end
-
-=begin
-=end
-    def component_ary
-      component.collect do |x|
-        self.send(x)
-      end
-    end
-    protected :component_ary
-
-    # == Args
-    #
-    # +components+::
-    #    Multiple Symbol arguments defined in URI::HTTP
-    #
-    # == Description
-    #
-    # Selects specified components from URI
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://myuser:mypass@my.example.com/test.rbx')
-    #   p uri.select(:userinfo, :host, :path)
-    #   # => ["myuser:mypass", "my.example.com", "/test.rbx"]
-    #
-    def select(*components)
-      components.collect do |c|
-        if component.include?(c)
-          self.send(c)
-        else
-          raise ArgumentError, 
-            "expected of components of #{self.class} (#{self.class.component.join(', ')})"
-        end
-      end
-    end
-
-    @@to_s = Kernel.instance_method(:to_s)
-    def inspect
-      @@to_s.bind(self).call.sub!(/>\z/) {" URL:#{self}>"}
-    end
-
-    def coerce(oth)
-      case oth
-      when String
-        oth = URI.parse(oth)
-      else
-        super
-      end
-
-      return oth, self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/http.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/http.rb
deleted file mode 100644
index dd2e792..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/http.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# = uri/http.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: http.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # The syntax of HTTP URIs is defined in RFC1738 section 3.3.
-  #
-  # Note that the Ruby URI library allows HTTP URLs containing usernames and
-  # passwords. This is not legal as per the RFC, but used to be 
-  # supported in Internet Explorer 5 and 6, before the MS04-004 security 
-  # update. See <URL:http://support.microsoft.com/kb/834489>.
-  #
-  class HTTP < Generic
-    DEFAULT_PORT = 80
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port, 
-      :path, 
-      :query, 
-      :fragment
-    ].freeze
-
-    #
-    # == Description
-    #
-    # Create a new URI::HTTP object from components, with syntax checking.
-    #
-    # The components accepted are userinfo, host, port, path, query and
-    # fragment.
-    #
-    # The components should be provided either as an Array, or as a Hash 
-    # with keys formed by preceding the component names with a colon. 
-    #
-    # If an Array is used, the components must be passed in the order
-    # [userinfo, host, port, path, query, fragment].
-    #
-    # Example:
-    #
-    #     newuri = URI::HTTP.build({:host => 'www.example.com', 
-    #       :path> => '/foo/bar'})
-    #
-    #     newuri = URI::HTTP.build([nil, "www.example.com", nil, "/path", 
-    #       "query", 'fragment'])
-    #
-    # Currently, if passed userinfo components this method generates 
-    # invalid HTTP URIs as per RFC 1738.
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Create a new URI::HTTP object from generic URI components as per
-    # RFC 2396. No HTTP-specific syntax checking (as per RFC 1738) is 
-    # performed.
-    #
-    # Arguments are +scheme+, +userinfo+, +host+, +port+, +registry+, +path+, 
-    # +opaque+, +query+ and +fragment+, in that order.
-    #
-    # Example:
-    #
-    #     uri = URI::HTTP.new(['http', nil, "www.example.com", nil, "/path",
-    #       "query", 'fragment'])
-    #
-    def initialize(*arg)
-      super(*arg)
-    end
-
-    #
-    # == Description
-    #
-    # Returns the full path for an HTTP request, as required by Net::HTTP::Get.
-    #
-    # If the URI contains a query, the full path is URI#path + '?' + URI#query.
-    # Otherwise, the path is simply URI#path.
-    #
-    def request_uri
-      r = path_query
-      if r[0] != ?/
-        r = '/' + r
-      end
-
-      r
-    end
-  end
-
-  @@schemes['HTTP'] = HTTP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/https.rb
deleted file mode 100644
index 5043ae6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/https.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# = uri/https.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: https.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/http'
-
-module URI
-
-  # The default port for HTTPS URIs is 443, and the scheme is 'https:' rather
-  # than 'http:'. Other than that, HTTPS URIs are identical to HTTP URIs;
-  # see URI::HTTP.
-  class HTTPS < HTTP
-    DEFAULT_PORT = 443
-  end
-  @@schemes['HTTPS'] = HTTPS
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ldap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ldap.rb
deleted file mode 100644
index 7c14ff8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/ldap.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-#
-# = uri/ldap.rb
-#
-# Author:: 
-#  Takaaki Tateishi <ttate at jaist.ac.jp>
-#  Akira Yamada <akira at ruby-lang.org>
-# License:: 
-#   URI::LDAP is copyrighted free software by Takaaki Tateishi and Akira Yamada.
-#   You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: ldap.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # LDAP URI SCHEMA (described in RFC2255)
-  # ldap://<host>/<dn>[?<attrs>[?<scope>[?<filter>[?<extensions>]]]]
-  #
-  class LDAP < Generic
-
-    DEFAULT_PORT = 389
-    
-    COMPONENT = [
-      :scheme,
-      :host, :port,
-      :dn,
-      :attributes,
-      :scope,
-      :filter,
-      :extensions,
-    ].freeze
-
-    SCOPE = [
-      SCOPE_ONE = 'one',
-      SCOPE_SUB = 'sub',
-      SCOPE_BASE = 'base',
-    ].freeze
-
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:dn]
-        tmp[:path] = tmp[:dn]
-      end
-
-      query = []
-      [:extensions, :filter, :scope, :attributes].collect do |x|
-        next if !tmp[x] && query.size == 0
-        query.unshift(tmp[x])
-      end
-
-      tmp[:query] = query.join('?')
-
-      return super(tmp)
-    end
-
-    def initialize(*arg)
-      super(*arg)
-
-      if @fragment
-        raise InvalidURIError, 'bad LDAP URL'
-      end
-
-      parse_dn
-      parse_query
-    end
-
-    def parse_dn
-      @dn = @path[1..-1]
-    end
-    private :parse_dn
-
-    def parse_query
-      @attributes = nil
-      @scope      = nil
-      @filter     = nil
-      @extensions = nil
-
-      if @query
-        attrs, scope, filter, extensions = @query.split('?')
-
-        @attributes = attrs if attrs && attrs.size > 0
-        @scope      = scope if scope && scope.size > 0
-        @filter     = filter if filter && filter.size > 0
-        @extensions = extensions if extensions && extensions.size > 0
-      end
-    end
-    private :parse_query
-
-    def build_path_query
-      @path = '/' + @dn
-
-      query = []
-      [@extensions, @filter, @scope, @attributes].each do |x|
-        next if !x && query.size == 0
-        query.unshift(x)
-      end
-      @query = query.join('?')
-    end
-    private :build_path_query
-
-    def dn
-      @dn
-    end
-
-    def set_dn(val)
-      @dn = val
-      build_path_query
-      @dn
-    end
-    protected :set_dn
-
-    def dn=(val)
-      set_dn(val)
-      val
-    end
-
-    def attributes
-      @attributes
-    end
-
-    def set_attributes(val)
-      @attributes = val
-      build_path_query
-      @attributes
-    end
-    protected :set_attributes
-
-    def attributes=(val)
-      set_attributes(val)
-      val
-    end
-
-    def scope
-      @scope
-    end
-
-    def set_scope(val)
-      @scope = val
-      build_path_query
-      @scope
-    end
-    protected :set_scope
-
-    def scope=(val)
-      set_scope(val)
-      val
-    end
-
-    def filter
-      @filter
-    end
-
-    def set_filter(val)
-      @filter = val
-      build_path_query
-      @filter
-    end
-    protected :set_filter
-
-    def filter=(val)
-      set_filter(val)
-      val
-    end
-
-    def extensions
-      @extensions
-    end
-
-    def set_extensions(val)
-      @extensions = val
-      build_path_query
-      @extensions
-    end
-    protected :set_extensions
-
-    def extensions=(val)
-      set_extensions(val)
-      val
-    end
-
-    def hierarchical?
-      false
-    end
-  end
-
-  @@schemes['LDAP'] = LDAP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/mailto.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/mailto.rb
deleted file mode 100644
index c8d3e3e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/uri/mailto.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-#
-# = uri/mailto.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: mailto.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # RFC2368, The mailto URL scheme
-  #
-  class MailTo < Generic
-    include REGEXP
-
-    DEFAULT_PORT = nil
-
-    COMPONENT = [ :scheme, :to, :headers ].freeze
-
-    # :stopdoc:
-    #  "hname" and "hvalue" are encodings of an RFC 822 header name and
-    #  value, respectively. As with "to", all URL reserved characters must
-    #  be encoded.
-    #
-    #  "#mailbox" is as specified in RFC 822 [RFC822]. This means that it
-    #  consists of zero or more comma-separated mail addresses, possibly
-    #  including "phrase" and "comment" components. Note that all URL
-    #  reserved characters in "to" must be encoded: in particular,
-    #  parentheses, commas, and the percent sign ("%"), which commonly occur
-    #  in the "mailbox" syntax.
-    #
-    #  Within mailto URLs, the characters "?", "=", "&" are reserved.
-
-    # hname      =  *urlc
-    # hvalue     =  *urlc
-    # header     =  hname "=" hvalue
-    HEADER_PATTERN = "(?:[^?=&]*=[^?=&]*)".freeze
-    HEADER_REGEXP  = Regexp.new(HEADER_PATTERN, 'N').freeze
-    # headers    =  "?" header *( "&" header )
-    # to         =  #mailbox
-    # mailtoURL  =  "mailto:" [ to ] [ headers ]
-    MAILBOX_PATTERN = "(?:#{PATTERN::ESCAPED}|[^(),%?=&])".freeze
-    MAILTO_REGEXP = Regexp.new(" # :nodoc:
-      \\A
-      (#{MAILBOX_PATTERN}*?)                          (?# 1: to)
-      (?:
-        \\?
-        (#{HEADER_PATTERN}(?:\\&#{HEADER_PATTERN})*)  (?# 2: headers)
-      )?
-      (?:
-        \\#
-        (#{PATTERN::FRAGMENT})                        (?# 3: fragment)
-      )?
-      \\z
-    ", Regexp::EXTENDED, 'N').freeze
-    # :startdoc:
-
-    #
-    # == Description
-    #
-    # Creates a new URI::MailTo object from components, with syntax checking.
-    #
-    # Components can be provided as an Array or Hash. If an Array is used,
-    # the components must be supplied as [to, headers].
-    #
-    # If a Hash is used, the keys are the component names preceded by colons.
-    #
-    # The headers can be supplied as a pre-encoded string, such as 
-    # "subject=subscribe&cc=address", or as an Array of Arrays like
-    # [['subject', 'subscribe'], ['cc', 'address']]
-    #
-    # Examples:
-    # 
-    #    require 'uri'
-    #    
-    #    m1 = URI::MailTo.build(['joe at example.com', 'subject=Ruby'])
-    #    puts m1.to_s  ->  mailto:joe at example.com?subject=Ruby
-    #    
-    #    m2 = URI::MailTo.build(['john at example.com', [['Subject', 'Ruby'], ['Cc', 'jack at example.com']]])
-    #    puts m2.to_s  ->  mailto:john at example.com?Subject=Ruby&Cc=jack at example.com
-    #    
-    #    m3 = URI::MailTo.build({:to => 'listman at example.com', :headers => [['subject', 'subscribe']]})
-    #    puts m3.to_s  ->  mailto:listman at example.com?subject=subscribe
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:to]
-        tmp[:opaque] = tmp[:to]
-      else
-        tmp[:opaque] = ''
-      end
-
-      if tmp[:headers]
-        tmp[:opaque] << '?'
-
-        if tmp[:headers].kind_of?(Array)
-          tmp[:opaque] << tmp[:headers].collect { |x|
-            if x.kind_of?(Array)
-              x[0] + '=' + x[1..-1].to_s
-            else
-              x.to_s
-            end
-          }.join('&')
-
-        elsif tmp[:headers].kind_of?(Hash)
-          tmp[:opaque] << tmp[:headers].collect { |h,v|
-            h + '=' + v
-          }.join('&')
-
-        else
-          tmp[:opaque] << tmp[:headers].to_s
-        end
-      end
-
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Creates a new URI::MailTo object from generic URL components with
-    # no syntax checking.
-    #
-    # This method is usually called from URI::parse, which checks
-    # the validity of each component.
-    #
-    def initialize(*arg)
-      super(*arg)
-
-      @to = nil
-      @headers = []
-
-      if MAILTO_REGEXP =~ @opaque
-         if arg[-1]
-          self.to = $1
-          self.headers = $2
-        else
-          set_to($1)
-          set_headers($2)
-        end
-
-      else
-        raise InvalidComponentError,
-          "unrecognised opaque part for mailtoURL: #{@opaque}"
-      end
-    end
-
-    # The primary e-mail address of the URL, as a String
-    attr_reader :to
-
-    # E-mail headers set by the URL, as an Array of Arrays
-    attr_reader :headers
-
-    def check_to(v)
-      return true unless v
-      return true if v.size == 0
-
-      if OPAQUE !~ v || /\A#{MAILBOX_PATTERN}*\z/o !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_to
-
-    def set_to(v)
-      @to = v
-    end
-    protected :set_to
-
-    def to=(v)
-      check_to(v)
-      set_to(v)
-      v
-    end
-
-    def check_headers(v)
-      return true unless v
-      return true if v.size == 0
-
-      if OPAQUE !~ v || 
-          /\A(#{HEADER_PATTERN}(?:\&#{HEADER_PATTERN})*)\z/o !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_headers
-
-    def set_headers(v)
-      @headers = []
-      if v
-        v.scan(HEADER_REGEXP) do |x|
-          @headers << x.split(/=/o, 2)
-        end
-      end
-    end
-    protected :set_headers
-
-    def headers=(v)
-      check_headers(v)
-      set_headers(v)
-      v
-    end
-
-    def to_s
-      @scheme + ':' + 
-        if @to 
-          @to
-        else
-          ''
-        end + 
-        if @headers.size > 0
-          '?' + @headers.collect{|x| x.join('=')}.join('&')
-        else
-          ''
-        end +
-        if @fragment
-          '#' + @fragment
-        else
-          ''
-        end
-    end
-    
-    # Returns the RFC822 e-mail text equivalent of the URL, as a String.
-    #
-    # Example:
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("mailto:ruby-list at ruby-lang.org?Subject=subscribe&cc=myaddr")
-    #   uri.to_mailtext
-    #   # => "To: ruby-list at ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n"
-    #
-    def to_mailtext
-      to = URI::unescape(@to)
-      head = ''
-      body = ''
-      @headers.each do |x|
-        case x[0]
-        when 'body'
-          body = URI::unescape(x[1])
-        when 'to'
-          to << ', ' + URI::unescape(x[1])
-        else
-          head << URI::unescape(x[0]).capitalize + ': ' +
-            URI::unescape(x[1])  + "\n"
-        end
-      end
-
-      return "To: #{to}
-#{head}
-#{body}
-"
-    end
-    alias to_rfc822text to_mailtext
-  end
-
-  @@schemes['MAILTO'] = MailTo
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/weakref.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/weakref.rb
deleted file mode 100644
index 591819c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/weakref.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require "delegate"
-
-# WeakRef is a class to represent a reference to an object that is not seen by
-# the tracing phase of the garbage collector.  This allows the referenced
-# object to be garbage collected as if nothing is referring to it. Because
-# WeakRef delegates method calls to the referenced object, it may be used in
-# place of that object, i.e. it is of the same duck type.
-#
-# Usage:
-#
-#   foo = Object.new
-#   foo = Object.new
-#   p foo.to_s			# original's class
-#   foo = WeakRef.new(foo)
-#   p foo.to_s			# should be same class
-#   ObjectSpace.garbage_collect
-#   p foo.to_s			# should raise exception (recycled)
-class WeakRef<Delegator
-
-  # RefError is raised if an object cannot be referenced by a WeakRef.
-  class RefError<StandardError
-  end
-
-  @@id_map =  {}                # obj -> [ref,...]
-  @@id_rev_map =  {}            # ref -> obj
-  @@final = lambda{|id|
-    __old_status = Thread.critical
-    Thread.critical = true
-    begin
-      rids = @@id_map[id]
-      if rids
-	for rid in rids
-	  @@id_rev_map.delete(rid)
-	end
-	@@id_map.delete(id)
-      end
-      rid = @@id_rev_map[id]
-      if rid
-	@@id_rev_map.delete(id)
-	@@id_map[rid].delete(id)
-	@@id_map.delete(rid) if @@id_map[rid].empty?
-      end
-    ensure
-      Thread.critical = __old_status
-    end
-  }
-
-  # Create a new WeakRef from +orig+.
-  def initialize(orig)
-    super
-    __setobj__(orig)
-  end
-
-  # Return the object this WeakRef references. Raises RefError if the object
-  # has been garbage collected.  The object returned is the object to which
-  # method calls are delegated (see Delegator).
-  def __getobj__
-    unless @@id_rev_map[self.__id__] == @__id
-      raise RefError, "Illegal Reference - probably recycled", caller(2)
-    end
-    begin
-      ObjectSpace._id2ref(@__id)
-    rescue RangeError
-      raise RefError, "Illegal Reference - probably recycled", caller(2)
-    end
-  end
-
-  def __setobj__(obj)
-    @__id = obj.__id__
-    __old_status = Thread.critical
-    begin
-      Thread.critical = true
-      unless @@id_rev_map.key?(self)
-        ObjectSpace.define_finalizer obj, @@final
-        ObjectSpace.define_finalizer self, @@final
-      end
-      @@id_map[@__id] = [] unless @@id_map[@__id]
-    ensure
-      Thread.critical = __old_status
-    end
-    @@id_map[@__id].push self.__id__
-    @@id_rev_map[self.__id__] = @__id
-  end
-
-  # Returns true if the referenced object still exists, and false if it has
-  # been garbage collected.
-  def weakref_alive?
-    @@id_rev_map[self.__id__] == @__id
-  end
-end
-
-if __FILE__ == $0
-  require 'thread'
-  foo = Object.new
-  p foo.to_s			# original's class
-  foo = WeakRef.new(foo)
-  p foo.to_s			# should be same class
-  ObjectSpace.garbage_collect
-  p foo.to_s			# should raise exception (recycled)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick.rb
deleted file mode 100644
index 8fca81b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# WEBrick -- WEB server toolkit.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: webrick.rb,v 1.12 2002/10/01 17:16:31 gotoyuzo Exp $
-
-require 'webrick/compat.rb'
-
-require 'webrick/version.rb'
-require 'webrick/config.rb'
-require 'webrick/log.rb'
-require 'webrick/server.rb'
-require 'webrick/utils.rb'
-require 'webrick/accesslog'
-
-require 'webrick/htmlutils.rb'
-require 'webrick/httputils.rb'
-require 'webrick/cookie.rb'
-require 'webrick/httpversion.rb'
-require 'webrick/httpstatus.rb'
-require 'webrick/httprequest.rb'
-require 'webrick/httpresponse.rb'
-require 'webrick/httpserver.rb'
-require 'webrick/httpservlet.rb'
-require 'webrick/httpauth.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/accesslog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/accesslog.rb
deleted file mode 100644
index f977695..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/accesslog.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# accesslog.rb -- Access log handling utilities
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 keita yamaguchi
-# Copyright (c) 2002 Internet Programming with Ruby writers
-#
-# $IPR: accesslog.rb,v 1.1 2002/10/01 17:16:32 gotoyuzo Exp $
-
-module WEBrick
-  module AccessLog
-    class AccessLogError < StandardError; end
-
-    CLF_TIME_FORMAT     = "[%d/%b/%Y:%H:%M:%S %Z]"
-    COMMON_LOG_FORMAT   = "%h %l %u %t \"%r\" %s %b"
-    CLF                 = COMMON_LOG_FORMAT
-    REFERER_LOG_FORMAT  = "%{Referer}i -> %U"
-    AGENT_LOG_FORMAT    = "%{User-Agent}i"
-    COMBINED_LOG_FORMAT = "#{CLF} \"%{Referer}i\" \"%{User-agent}i\""
-
-    module_function
-
-    # This format specification is a subset of mod_log_config of Apache.
-    #   http://httpd.apache.org/docs/mod/mod_log_config.html#formats
-    def setup_params(config, req, res)
-      params = Hash.new("")
-      params["a"] = req.peeraddr[3]
-      params["b"] = res.sent_size
-      params["e"] = ENV
-      params["f"] = res.filename || ""
-      params["h"] = req.peeraddr[2]
-      params["i"] = req
-      params["l"] = "-"
-      params["m"] = req.request_method
-      params["n"] = req.attributes
-      params["o"] = res
-      params["p"] = req.port
-      params["q"] = req.query_string
-      params["r"] = req.request_line.sub(/\x0d?\x0a\z/o, '')
-      params["s"] = res.status       # won't support "%>s"
-      params["t"] = req.request_time
-      params["T"] = Time.now - req.request_time
-      params["u"] = req.user || "-"
-      params["U"] = req.unparsed_uri
-      params["v"] = config[:ServerName]
-      params
-    end
-
-    def format(format_string, params)
-      format_string.gsub(/\%(?:\{(.*?)\})?>?([a-zA-Z%])/){
-         param, spec = $1, $2
-         case spec[0]
-         when ?e, ?i, ?n, ?o
-           raise AccessLogError,
-             "parameter is required for \"#{spec}\"" unless param
-           params[spec][param] || "-"
-         when ?t
-           params[spec].strftime(param || CLF_TIME_FORMAT)
-         when ?%
-           "%"
-         else
-           params[spec]
-         end
-      }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cgi.rb
deleted file mode 100644
index 3ece0e0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cgi.rb
+++ /dev/null
@@ -1,257 +0,0 @@
-#
-# cgi.rb -- Yet another CGI library
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $Id: cgi.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require "webrick/httprequest"
-require "webrick/httpresponse"
-require "webrick/config"
-require "stringio"
-
-module WEBrick
-  class CGI
-    CGIError = Class.new(StandardError)
-
-    attr_reader :config, :logger
-
-    def initialize(*args)
-      if defined?(MOD_RUBY)
-        unless ENV.has_key?("GATEWAY_INTERFACE")
-          Apache.request.setup_cgi_env
-        end
-      end
-      if %r{HTTP/(\d+\.\d+)} =~ ENV["SERVER_PROTOCOL"]
-        httpv = $1
-      end
-      @config = WEBrick::Config::HTTP.dup.update(
-        :ServerSoftware => ENV["SERVER_SOFTWARE"] || "null",
-        :HTTPVersion    => HTTPVersion.new(httpv || "1.0"),
-        :RunOnCGI       => true,   # to detect if it runs on CGI.
-        :NPH            => false   # set true to run as NPH script.
-      )
-      if config = args.shift
-        @config.update(config)
-      end
-      @config[:Logger] ||= WEBrick::BasicLog.new($stderr)
-      @logger = @config[:Logger]
-      @options = args
-    end
-
-    def [](key)
-      @config[key]
-    end
-
-    def start(env=ENV, stdin=$stdin, stdout=$stdout)
-      sock = WEBrick::CGI::Socket.new(@config, env, stdin, stdout)
-      req = HTTPRequest.new(@config)
-      res = HTTPResponse.new(@config)
-      unless @config[:NPH] or defined?(MOD_RUBY)
-        def res.setup_header
-          unless @header["status"]
-            phrase = HTTPStatus::reason_phrase(@status)
-            @header["status"] = "#{@status} #{phrase}"
-          end
-          super
-        end
-        def res.status_line
-          ""
-        end
-      end
-
-      begin
-        req.parse(sock)
-        req.script_name = (env["SCRIPT_NAME"] || File.expand_path($0)).dup
-        req.path_info = (env["PATH_INFO"] || "").dup
-        req.query_string = env["QUERY_STRING"]
-        req.user = env["REMOTE_USER"]
-        res.request_method = req.request_method
-        res.request_uri = req.request_uri
-        res.request_http_version = req.http_version
-        res.keep_alive = req.keep_alive?
-        self.service(req, res)
-      rescue HTTPStatus::Error => ex
-        res.set_error(ex)
-      rescue HTTPStatus::Status => ex
-        res.status = ex.code
-      rescue Exception => ex 
-        @logger.error(ex)
-        res.set_error(ex, true)
-      ensure
-        req.fixup
-        if defined?(MOD_RUBY)
-          res.setup_header
-          Apache.request.status_line = "#{res.status} #{res.reason_phrase}"
-          Apache.request.status = res.status
-          table = Apache.request.headers_out
-          res.header.each{|key, val|
-            case key
-            when /^content-encoding$/i
-              Apache::request.content_encoding = val
-            when /^content-type$/i
-              Apache::request.content_type = val
-            else
-              table[key] = val.to_s
-            end
-          }
-          res.cookies.each{|cookie|
-            table.add("Set-Cookie", cookie.to_s)
-          }
-          Apache.request.send_http_header
-          res.send_body(sock)
-        else
-          res.send_response(sock)
-        end
-      end
-    end
-
-    def service(req, res)
-      method_name = "do_" + req.request_method.gsub(/-/, "_")
-      if respond_to?(method_name)
-        __send__(method_name, req, res)
-      else
-        raise HTTPStatus::MethodNotAllowed,
-              "unsupported method `#{req.request_method}'."
-      end
-    end
-
-    class Socket
-      include Enumerable
-
-      private
-  
-      def initialize(config, env, stdin, stdout)
-        @config = config
-        @env = env
-        @header_part = StringIO.new
-        @body_part = stdin
-        @out_port = stdout
-        @out_port.binmode
-  
-        @server_addr = @env["SERVER_ADDR"] || "0.0.0.0"
-        @server_name = @env["SERVER_NAME"]
-        @server_port = @env["SERVER_PORT"]
-        @remote_addr = @env["REMOTE_ADDR"]
-        @remote_host = @env["REMOTE_HOST"] || @remote_addr
-        @remote_port = @env["REMOTE_PORT"] || 0
-
-        begin
-          @header_part << request_line << CRLF
-          setup_header
-          @header_part << CRLF
-          @header_part.rewind
-        rescue Exception => ex
-          raise CGIError, "invalid CGI environment"
-        end
-      end
-
-      def request_line
-        meth = @env["REQUEST_METHOD"] || "GET"
-        unless url = @env["REQUEST_URI"]
-          url = (@env["SCRIPT_NAME"] || File.expand_path($0)).dup
-          url << @env["PATH_INFO"].to_s
-          url = WEBrick::HTTPUtils.escape_path(url)
-          if query_string = @env["QUERY_STRING"]
-            unless query_string.empty?
-              url << "?" << query_string
-            end
-          end
-        end
-        # we cannot get real HTTP version of client ;)
-        httpv = @config[:HTTPVersion]
-        return "#{meth} #{url} HTTP/#{httpv}"
-      end
-  
-      def setup_header
-        add_header("CONTENT_TYPE", "Content-Type")
-        add_header("CONTENT_LENGTH", "Content-length")
-        @env.each_key{|name|
-          if /^HTTP_(.*)/ =~ name
-            add_header(name, $1.gsub(/_/, "-"))
-          end
-        }
-      end
-  
-      def add_header(envname, hdrname)
-        if value = @env[envname]
-          unless value.empty?
-            @header_part << hdrname << ": " << value << CRLF
-          end
-        end
-      end
-
-      def input
-        @header_part.eof? ? @body_part : @header_part
-      end
-  
-      public
-  
-      def peeraddr
-        [nil, @remote_port, @remote_host, @remote_addr]
-      end
-  
-      def addr
-        [nil, @server_port, @server_name, @server_addr]
-      end
-  
-      def gets(eol=LF)
-        input.gets(eol)
-      end
-  
-      def read(size=nil)
-        input.read(size)
-      end
-
-      def each
-        input.each{|line| yield(line) }
-      end
-  
-      def <<(data)
-        @out_port << data
-      end
-
-      def cert
-        return nil unless defined?(OpenSSL)
-        if pem = @env["SSL_SERVER_CERT"]
-          OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-        end
-      end
-
-      def peer_cert
-        return nil unless defined?(OpenSSL)
-        if pem = @env["SSL_CLIENT_CERT"]
-          OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-        end
-      end
-
-      def peer_cert_chain
-        return nil unless defined?(OpenSSL)
-        if @env["SSL_CLIENT_CERT_CHAIN_0"]
-          keys = @env.keys
-          certs = keys.sort.collect{|k|
-            if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k
-              if pem = @env[k]
-                OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-              end
-            end
-          }
-          certs.compact
-        end
-      end
-
-      def cipher
-        return nil unless defined?(OpenSSL)
-        if cipher = @env["SSL_CIPHER"]
-          ret = [ cipher ]
-          ret << @env["SSL_PROTOCOL"]
-          ret << @env["SSL_CIPHER_USEKEYSIZE"]
-          ret << @env["SSL_CIPHER_ALGKEYSIZE"]
-          ret
-        end
-      end
-    end
-  end 
-end  
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/compat.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/compat.rb
deleted file mode 100644
index ad7760b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/compat.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# compat.rb -- cross platform compatibility
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: compat.rb,v 1.6 2002/10/01 17:16:32 gotoyuzo Exp $
-
-module Errno
-  class EPROTO       < SystemCallError; end
-  class ECONNRESET   < SystemCallError; end
-  class ECONNABORTED < SystemCallError; end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/config.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/config.rb
deleted file mode 100644
index 5897b97..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/config.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# config.rb -- Default configurations.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: config.rb,v 1.52 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/version'
-require 'webrick/httpversion'
-require 'webrick/httputils'
-require 'webrick/utils'
-require 'webrick/log'
-
-module WEBrick
-  module Config
-    LIBDIR = File::dirname(__FILE__)
-
-    # for GenericServer
-    General = {
-      :ServerName     => Utils::getservername,
-      :BindAddress    => nil,   # "0.0.0.0" or "::" or nil
-      :Port           => nil,   # users MUST specifiy this!!
-      :MaxClients     => 100,   # maximum number of the concurrent connections
-      :ServerType     => nil,   # default: WEBrick::SimpleServer
-      :Logger         => nil,   # default: WEBrick::Log.new
-      :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " +
-                         "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})",
-      :TempDir        => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp',
-      :DoNotListen    => false,
-      :StartCallback  => nil,
-      :StopCallback   => nil,
-      :AcceptCallback => nil,
-    }
-
-    # for HTTPServer, HTTPRequest, HTTPResponse ...
-    HTTP = General.dup.update(
-      :Port           => 80,
-      :RequestTimeout => 30,
-      :HTTPVersion    => HTTPVersion.new("1.1"),
-      :AccessLog      => nil,
-      :MimeTypes      => HTTPUtils::DefaultMimeTypes,
-      :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"],
-      :DocumentRoot   => nil,
-      :DocumentRootOptions => { :FancyIndexing => true },
-      :RequestHandler => nil,
-      :RequestCallback => nil,  # alias of :RequestHandler
-      :ServerAlias    => nil,
-
-      # for HTTPProxyServer
-      :ProxyAuthProc  => nil,
-      :ProxyContentHandler => nil,
-      :ProxyVia       => true,
-      :ProxyTimeout   => true,
-      :ProxyURI       => nil,
-
-      :CGIInterpreter => nil,
-      :CGIPathEnv     => nil,
-
-      # workaround: if Request-URIs contain 8bit chars,
-      # they should be escaped before calling of URI::parse().
-      :Escape8bitURI  => false
-    )
-
-    FileHandler = {
-      :NondisclosureName => [".ht*", "*~"],
-      :FancyIndexing     => false,
-      :HandlerTable      => {},
-      :HandlerCallback   => nil,
-      :DirectoryCallback => nil,
-      :FileCallback      => nil,
-      :UserDir           => nil,  # e.g. "public_html"
-      :AcceptableLanguages => []  # ["en", "ja", ... ]
-    }
-
-    BasicAuth = {
-      :AutoReloadUserDB     => true,
-    }
-
-    DigestAuth = {
-      :Algorithm            => 'MD5-sess', # or 'MD5' 
-      :Domain               => nil,        # an array includes domain names.
-      :Qop                  => [ 'auth' ], # 'auth' or 'auth-int' or both.
-      :UseOpaque            => true,
-      :UseNextNonce         => false,
-      :CheckNc              => false,
-      :UseAuthenticationInfoHeader => true,
-      :AutoReloadUserDB     => true,
-      :NonceExpirePeriod    => 30*60,
-      :NonceExpireDelta     => 60,
-      :InternetExplorerHack => true,
-      :OperaHack            => true,
-    }
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cookie.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cookie.rb
deleted file mode 100644
index 814e664..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/cookie.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# cookie.rb -- Cookie class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: cookie.rb,v 1.16 2002/09/21 12:23:35 gotoyuzo Exp $
-
-require 'time'
-require 'webrick/httputils'
-
-module WEBrick
-  class Cookie
-
-    attr_reader :name
-    attr_accessor :value, :version
-    attr_accessor :domain, :path, :secure
-    attr_accessor :comment, :max_age
-    #attr_accessor :comment_url, :discard, :port
-
-    def initialize(name, value)
-      @name = name
-      @value = value
-      @version = 0     # Netscape Cookie
-
-      @domain = @path = @secure = @comment = @max_age =
-      @expires = @comment_url = @discard = @port = nil
-    end
-
-    def expires=(t)
-      @expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s)
-    end
-
-    def expires
-      @expires && Time.parse(@expires)
-    end
-
-    def to_s
-      ret = ""
-      ret << @name << "=" << @value
-      ret << "; " << "Version=" << @version.to_s if @version > 0
-      ret << "; " << "Domain="  << @domain  if @domain
-      ret << "; " << "Expires=" << @expires if @expires
-      ret << "; " << "Max-Age=" << @max_age.to_s if @max_age
-      ret << "; " << "Comment=" << @comment if @comment
-      ret << "; " << "Path="    << @path if @path
-      ret << "; " << "Secure"   if @secure
-      ret
-    end
-
-    # Cookie::parse()
-    #   It parses Cookie field sent from the user agent.
-    def self.parse(str)
-      if str
-        ret = []
-        cookie = nil
-        ver = 0
-        str.split(/[;,]\s+/).each{|x|
-          key, val = x.split(/=/,2)
-          val = val ? HTTPUtils::dequote(val) : ""
-          case key
-          when "$Version"; ver = val.to_i
-          when "$Path";    cookie.path = val
-          when "$Domain";  cookie.domain = val
-          when "$Port";    cookie.port = val
-          else
-            ret << cookie if cookie
-            cookie = self.new(key, val)
-            cookie.version = ver
-          end
-        }
-        ret << cookie if cookie
-        ret
-      end
-    end
-
-    def self.parse_set_cookie(str)
-      cookie_elem = str.split(/;/)
-      first_elem = cookie_elem.shift
-      first_elem.strip!
-      key, value = first_elem.split(/=/, 2)
-      cookie = new(key, HTTPUtils.dequote(value))
-      cookie_elem.each{|pair|
-        pair.strip!
-        key, value = pair.split(/=/, 2)
-        if value
-          value = HTTPUtils.dequote(value.strip)
-        end
-        case key.downcase
-        when "domain"  then cookie.domain  = value
-        when "path"    then cookie.path    = value
-        when "expires" then cookie.expires = value
-        when "max-age" then cookie.max_age = Integer(value)
-        when "comment" then cookie.comment = value
-        when "version" then cookie.version = Integer(value)
-        when "secure"  then cookie.secure = true
-        end
-      }
-      return cookie
-    end
-
-    def self.parse_set_cookies(str)
-      return str.split(/,(?=[^;,]*=)|,$/).collect{|c|
-        parse_set_cookie(c)
-      }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/htmlutils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/htmlutils.rb
deleted file mode 100644
index cf8d542..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/htmlutils.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# htmlutils.rb -- HTMLUtils Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htmlutils.rb,v 1.7 2002/09/21 12:23:35 gotoyuzo Exp $
-
-module WEBrick
-  module HTMLUtils
-
-    def escape(string)
-      str = string ? string.dup : ""
-      str.gsub!(/&/n, '&')
-      str.gsub!(/\"/n, '"')
-      str.gsub!(/>/n, '>')
-      str.gsub!(/</n, '<')
-      str
-    end
-    module_function :escape
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth.rb
deleted file mode 100644
index 147c040..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# httpauth.rb -- HTTP access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpauth.rb,v 1.14 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/httpauth/basicauth'
-require 'webrick/httpauth/digestauth'
-require 'webrick/httpauth/htpasswd'
-require 'webrick/httpauth/htdigest'
-require 'webrick/httpauth/htgroup'
-
-module WEBrick
-  module HTTPAuth
-    module_function
-
-    def _basic_auth(req, res, realm, req_field, res_field, err_type, block)
-      user = pass = nil
-      if /^Basic\s+(.*)/o =~ req[req_field]
-        userpass = $1
-        user, pass = userpass.unpack("m*")[0].split(":", 2)
-      end
-      if block.call(user, pass)
-        req.user = user
-        return
-      end
-      res[res_field] = "Basic realm=\"#{realm}\""
-      raise err_type
-    end
-
-    def basic_auth(req, res, realm, &block)
-      _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate",
-                  HTTPStatus::Unauthorized, block)
-    end
-
-    def proxy_basic_auth(req, res, realm, &block)
-      _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate",
-                  HTTPStatus::ProxyAuthenticationRequired, block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/authenticator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/authenticator.rb
deleted file mode 100644
index fe2dbf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/authenticator.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# httpauth/authenticator.rb -- Authenticator mix-in module.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: authenticator.rb,v 1.3 2003/02/20 07:15:47 gotoyuzo Exp $
-
-module WEBrick
-  module HTTPAuth
-    module Authenticator
-      RequestField      = "Authorization"
-      ResponseField     = "WWW-Authenticate"
-      ResponseInfoField = "Authentication-Info"
-      AuthException     = HTTPStatus::Unauthorized
-      AuthScheme        = nil # must override by the derived class
-
-      attr_reader :realm, :userdb, :logger
-
-      private
-
-      def check_init(config)
-        [:UserDB, :Realm].each{|sym|
-          unless config[sym]
-            raise ArgumentError, "Argument #{sym.inspect} missing."
-          end
-        } 
-        @realm     = config[:Realm]
-        @userdb    = config[:UserDB]
-        @logger    = config[:Logger] || Log::new($stderr)
-        @reload_db = config[:AutoReloadUserDB]
-        @request_field   = self::class::RequestField
-        @response_field  = self::class::ResponseField
-        @resp_info_field = self::class::ResponseInfoField
-        @auth_exception  = self::class::AuthException
-        @auth_scheme     = self::class::AuthScheme
-      end
-
-      def check_scheme(req)
-        unless credentials = req[@request_field]
-          error("no credentials in the request.")
-          return nil 
-        end  
-        unless match = /^#{@auth_scheme}\s+/.match(credentials)
-          error("invalid scheme in %s.", credentials)
-          info("%s: %s", @request_field, credentials) if $DEBUG
-          return nil
-        end
-        return match.post_match
-      end
-
-      def log(meth, fmt, *args)
-        msg = format("%s %s: ", @auth_scheme, @realm)
-        msg << fmt % args
-        @logger.send(meth, msg)
-      end
-
-      def error(fmt, *args)
-        if @logger.error?
-          log(:error, fmt, *args)
-        end
-      end                             
-
-      def info(fmt, *args)
-        if @logger.info?
-          log(:info, fmt, *args)
-        end
-      end
-    end
-
-    module ProxyAuthenticator
-      RequestField  = "Proxy-Authorization"
-      ResponseField = "Proxy-Authenticate"
-      InfoField     = "Proxy-Authentication-Info"
-      AuthException = HTTPStatus::ProxyAuthenticationRequired
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/basicauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/basicauth.rb
deleted file mode 100644
index e835361..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/basicauth.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# httpauth/basicauth.rb -- HTTP basic access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: basicauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
-
-require 'webrick/config'
-require 'webrick/httpstatus'
-require 'webrick/httpauth/authenticator'
-
-module WEBrick
-  module HTTPAuth
-    class BasicAuth
-      include Authenticator
-
-      AuthScheme = "Basic"
-
-      def self.make_passwd(realm, user, pass)
-        pass ||= ""
-        pass.crypt(Utils::random_string(2))
-      end
-
-      attr_reader :realm, :userdb, :logger
-
-      def initialize(config, default=Config::BasicAuth)
-        check_init(config)
-        @config = default.dup.update(config)
-      end
-
-      def authenticate(req, res)
-        unless basic_credentials = check_scheme(req)
-          challenge(req, res)
-        end
-        userid, password = basic_credentials.unpack("m*")[0].split(":", 2) 
-        password ||= ""
-        if userid.empty?
-          error("user id was not given.")
-          challenge(req, res)
-        end
-        unless encpass = @userdb.get_passwd(@realm, userid, @reload_db)
-          error("%s: the user is not allowed.", userid)
-          challenge(req, res)
-        end
-        if password.crypt(encpass) != encpass
-          error("%s: password unmatch.", userid)
-          challenge(req, res)
-        end
-        info("%s: authentication succeeded.", userid)
-        req.user = userid
-      end
-
-      def challenge(req, res)
-        res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\""
-        raise @auth_exception
-      end
-    end
-
-    class ProxyBasicAuth < BasicAuth
-      include ProxyAuthenticator
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/digestauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/digestauth.rb
deleted file mode 100644
index 318e0bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/digestauth.rb
+++ /dev/null
@@ -1,343 +0,0 @@
-#
-# httpauth/digestauth.rb -- HTTP digest access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers.
-# Copyright (c) 2003 H.M.
-#
-# The original implementation is provided by H.M.
-#   URL: http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=
-#        %C7%A7%BE%DA%B5%A1%C7%BD%A4%F2%B2%FE%C2%A4%A4%B7%A4%C6%A4%DF%A4%EB
-#
-# $IPR: digestauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
-
-require 'webrick/config'
-require 'webrick/httpstatus'
-require 'webrick/httpauth/authenticator'
-require 'digest/md5'
-require 'digest/sha1'
-
-module WEBrick
-  module HTTPAuth
-    class DigestAuth
-      include Authenticator
-
-      AuthScheme = "Digest"
-      OpaqueInfo = Struct.new(:time, :nonce, :nc)
-      attr_reader :algorithm, :qop
-
-      def self.make_passwd(realm, user, pass)
-        pass ||= ""
-        Digest::MD5::hexdigest([user, realm, pass].join(":"))
-      end
-
-      def initialize(config, default=Config::DigestAuth)
-        check_init(config)
-        @config                 = default.dup.update(config)
-        @algorithm              = @config[:Algorithm]
-        @domain                 = @config[:Domain]
-        @qop                    = @config[:Qop]
-        @use_opaque             = @config[:UseOpaque]
-        @use_next_nonce         = @config[:UseNextNonce]
-        @check_nc               = @config[:CheckNc]
-        @use_auth_info_header   = @config[:UseAuthenticationInfoHeader]
-        @nonce_expire_period    = @config[:NonceExpirePeriod]
-        @nonce_expire_delta     = @config[:NonceExpireDelta]
-        @internet_explorer_hack = @config[:InternetExplorerHack]
-        @opera_hack             = @config[:OperaHack]
-
-        case @algorithm
-        when 'MD5','MD5-sess'
-          @h = Digest::MD5
-        when 'SHA1','SHA1-sess'  # it is a bonus feature :-)
-          @h = Digest::SHA1
-        else
-          msg = format('Alogrithm "%s" is not supported.', @algorithm)
-          raise ArgumentError.new(msg)
-        end
-
-        @instance_key = hexdigest(self.__id__, Time.now.to_i, Process.pid)
-        @opaques = {}
-        @last_nonce_expire = Time.now
-        @mutex = Mutex.new
-      end
-
-      def authenticate(req, res)
-        unless result = @mutex.synchronize{ _authenticate(req, res) }
-          challenge(req, res)
-        end
-        if result == :nonce_is_stale
-          challenge(req, res, true)
-        end
-        return true
-      end
-
-      def challenge(req, res, stale=false)
-        nonce = generate_next_nonce(req)
-        if @use_opaque
-          opaque = generate_opaque(req)
-          @opaques[opaque].nonce = nonce
-        end
-
-        param = Hash.new
-        param["realm"]  = HTTPUtils::quote(@realm)
-        param["domain"] = HTTPUtils::quote(@domain.to_a.join(" ")) if @domain
-        param["nonce"]  = HTTPUtils::quote(nonce)
-        param["opaque"] = HTTPUtils::quote(opaque) if opaque
-        param["stale"]  = stale.to_s
-        param["algorithm"] = @algorithm
-        param["qop"]    = HTTPUtils::quote(@qop.to_a.join(",")) if @qop
-
-        res[@response_field] =
-          "#{@auth_scheme} " + param.map{|k,v| "#{k}=#{v}" }.join(", ")
-        info("%s: %s", @response_field, res[@response_field]) if $DEBUG
-        raise @auth_exception
-      end
-
-      private
-
-      MustParams = ['username','realm','nonce','uri','response']
-      MustParamsAuth = ['cnonce','nc']
-
-      def _authenticate(req, res)
-        unless digest_credentials = check_scheme(req)
-          return false
-        end
-
-        auth_req = split_param_value(digest_credentials)
-        if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-          req_params = MustParams + MustParamsAuth
-        else
-          req_params = MustParams
-        end
-        req_params.each{|key|
-          unless auth_req.has_key?(key)
-            error('%s: parameter missing. "%s"', auth_req['username'], key)
-            raise HTTPStatus::BadRequest
-          end
-        }
-
-        if !check_uri(req, auth_req)
-          raise HTTPStatus::BadRequest  
-        end
-
-        if auth_req['realm'] != @realm  
-          error('%s: realm unmatch. "%s" for "%s"',
-                auth_req['username'], auth_req['realm'], @realm)
-          return false
-        end
-
-        auth_req['algorithm'] ||= 'MD5' 
-        if auth_req['algorithm'] != @algorithm &&
-           (@opera_hack && auth_req['algorithm'] != @algorithm.upcase)
-          error('%s: algorithm unmatch. "%s" for "%s"',
-                auth_req['username'], auth_req['algorithm'], @algorithm)
-          return false
-        end
-
-        if (@qop.nil? && auth_req.has_key?('qop')) ||
-           (@qop && (! @qop.member?(auth_req['qop'])))
-          error('%s: the qop is not allowed. "%s"',
-                auth_req['username'], auth_req['qop'])
-          return false
-        end
-
-        password = @userdb.get_passwd(@realm, auth_req['username'], @reload_db)
-        unless password
-          error('%s: the user is not allowd.', auth_req['username'])
-          return false
-        end
-
-        nonce_is_invalid = false
-        if @use_opaque
-          info("@opaque = %s", @opaque.inspect) if $DEBUG
-          if !(opaque = auth_req['opaque'])
-            error('%s: opaque is not given.', auth_req['username'])
-            nonce_is_invalid = true
-          elsif !(opaque_struct = @opaques[opaque])
-            error('%s: invalid opaque is given.', auth_req['username'])
-            nonce_is_invalid = true
-          elsif !check_opaque(opaque_struct, req, auth_req)
-            @opaques.delete(auth_req['opaque'])
-            nonce_is_invalid = true
-          end
-        elsif !check_nonce(req, auth_req)
-          nonce_is_invalid = true
-        end
-
-        if /-sess$/ =~ auth_req['algorithm'] ||
-           (@opera_hack && /-SESS$/ =~ auth_req['algorithm'])
-          ha1 = hexdigest(password, auth_req['nonce'], auth_req['cnonce'])
-        else
-          ha1 = password
-        end
-
-        if auth_req['qop'] == "auth" || auth_req['qop'] == nil
-          ha2 = hexdigest(req.request_method, auth_req['uri'])
-          ha2_res = hexdigest("", auth_req['uri'])
-        elsif auth_req['qop'] == "auth-int"
-          ha2 = hexdigest(req.request_method, auth_req['uri'],
-                          hexdigest(req.body))
-          ha2_res = hexdigest("", auth_req['uri'], hexdigest(res.body))
-        end
-
-        if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-          param2 = ['nonce', 'nc', 'cnonce', 'qop'].map{|key|
-            auth_req[key]
-          }.join(':')
-          digest     = hexdigest(ha1, param2, ha2)
-          digest_res = hexdigest(ha1, param2, ha2_res)
-        else
-          digest     = hexdigest(ha1, auth_req['nonce'], ha2)
-          digest_res = hexdigest(ha1, auth_req['nonce'], ha2_res)
-        end
-
-        if digest != auth_req['response']
-          error("%s: digest unmatch.", auth_req['username'])
-          return false
-        elsif nonce_is_invalid
-          error('%s: digest is valid, but nonce is not valid.',
-                auth_req['username'])
-          return :nonce_is_stale
-        elsif @use_auth_info_header
-          auth_info = {
-            'nextnonce' => generate_next_nonce(req),
-            'rspauth'   => digest_res
-          }
-          if @use_opaque
-            opaque_struct.time  = req.request_time
-            opaque_struct.nonce = auth_info['nextnonce']
-            opaque_struct.nc    = "%08x" % (auth_req['nc'].hex + 1)
-          end
-          if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-            ['qop','cnonce','nc'].each{|key|
-              auth_info[key] = auth_req[key]
-            }
-          end
-          res[@resp_info_field] = auth_info.keys.map{|key|
-            if key == 'nc'
-              key + '=' + auth_info[key]
-            else
-              key + "=" + HTTPUtils::quote(auth_info[key])
-            end
-          }.join(', ')
-        end
-        info('%s: authentication scceeded.', auth_req['username'])
-        req.user = auth_req['username']
-        return true
-      end
-
-      def split_param_value(string)
-        ret = {}
-        while string.size != 0
-          case string           
-          when /^\s*([\w\-\.\*\%\!]+)=\s*\"((\\.|[^\"])*)\"\s*,?/
-            key = $1
-            matched = $2
-            string = $'
-            ret[key] = matched.gsub(/\\(.)/, "\\1")
-          when /^\s*([\w\-\.\*\%\!]+)=\s*([^,\"]*),?/
-            key = $1
-            matched = $2
-            string = $'
-            ret[key] = matched.clone
-          when /^s*^,/
-            string = $'
-          else
-            break
-          end
-        end
-        ret
-      end
-
-      def generate_next_nonce(req)
-        now = "%012d" % req.request_time.to_i
-        pk  = hexdigest(now, @instance_key)[0,32]
-        nonce = [now + ":" + pk].pack("m*").chop # it has 60 length of chars.
-        nonce
-      end
-
-      def check_nonce(req, auth_req)
-        username = auth_req['username']
-        nonce = auth_req['nonce']
-
-        pub_time, pk = nonce.unpack("m*")[0].split(":", 2)
-        if (!pub_time || !pk)
-          error("%s: empty nonce is given", username)
-          return false
-        elsif (hexdigest(pub_time, @instance_key)[0,32] != pk)
-          error("%s: invalid private-key: %s for %s",
-                username, hexdigest(pub_time, @instance_key)[0,32], pk)
-          return false
-        end
-
-        diff_time = req.request_time.to_i - pub_time.to_i
-        if (diff_time < 0)
-          error("%s: difference of time-stamp is negative.", username)
-          return false
-        elsif diff_time > @nonce_expire_period
-          error("%s: nonce is expired.", username)
-          return false
-        end
-
-        return true
-      end
-
-      def generate_opaque(req)
-        @mutex.synchronize{
-          now = req.request_time
-          if now - @last_nonce_expire > @nonce_expire_delta
-            @opaques.delete_if{|key,val|
-              (now - val.time) > @nonce_expire_period
-            }
-            @last_nonce_expire = now
-          end
-          begin
-            opaque = Utils::random_string(16)
-          end while @opaques[opaque]
-          @opaques[opaque] = OpaqueInfo.new(now, nil, '00000001')
-          opaque
-        }
-      end
-
-      def check_opaque(opaque_struct, req, auth_req)
-        if (@use_next_nonce && auth_req['nonce'] != opaque_struct.nonce)
-          error('%s: nonce unmatched. "%s" for "%s"',
-                auth_req['username'], auth_req['nonce'], opaque_struct.nonce)
-          return false
-        elsif !check_nonce(req, auth_req)
-          return false
-        end
-        if (@check_nc && auth_req['nc'] != opaque_struct.nc)
-          error('%s: nc unmatched."%s" for "%s"',
-                auth_req['username'], auth_req['nc'], opaque_struct.nc)
-          return false
-        end
-        true
-      end
-
-      def check_uri(req, auth_req)
-        uri = auth_req['uri']
-        if uri != req.request_uri.to_s && uri != req.unparsed_uri &&
-           (@internet_explorer_hack && uri != req.path)
-          error('%s: uri unmatch. "%s" for "%s"', auth_req['username'], 
-                auth_req['uri'], req.request_uri.to_s)
-          return false
-        end
-        true
-      end
-
-      def hexdigest(*args)
-        @h.hexdigest(args.join(":"))
-      end
-    end
-
-    class ProxyDigestAuth < DigestAuth
-      include ProxyAuthenticator
-
-      def check_uri(req, auth_req)
-        return true
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htdigest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htdigest.rb
deleted file mode 100644
index 3949756..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htdigest.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# httpauth/htdigest.rb -- Apache compatible htdigest file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htdigest.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $
-
-require 'webrick/httpauth/userdb'
-require 'webrick/httpauth/digestauth'
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htdigest
-      include UserDB
-
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @digest = Hash.new
-        @mutex = Mutex::new
-        @auth_type = DigestAuth
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        mtime = File::mtime(@path)
-        if mtime > @mtime
-          @digest.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              user, realm, pass = line.split(/:/, 3)
-              unless @digest[realm]
-                @digest[realm] = Hash.new
-              end
-              @digest[realm][user] = pass
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htpasswd", File::dirname(output))
-        begin
-          each{|item| tmp.puts(item.join(":")) }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def get_passwd(realm, user, reload_db)
-        reload() if reload_db
-        if hash = @digest[realm]
-          hash[user]
-        end
-      end
-
-      def set_passwd(realm, user, pass)
-        @mutex.synchronize{
-          unless @digest[realm]
-            @digest[realm] = Hash.new
-          end
-          @digest[realm][user] = make_passwd(realm, user, pass)
-        }
-      end
-
-      def delete_passwd(realm, user)
-        if hash = @digest[realm]
-          hash.delete(user)
-        end
-      end
-
-      def each
-        @digest.keys.sort.each{|realm|
-          hash = @digest[realm]
-          hash.keys.sort.each{|user|
-            yield([user, realm, hash[user]])
-          }
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htgroup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htgroup.rb
deleted file mode 100644
index c9270c6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htgroup.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# httpauth/htgroup.rb -- Apache compatible htgroup file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htgroup.rb,v 1.1 2003/02/16 22:22:56 gotoyuzo Exp $
-
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htgroup
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @group = Hash.new
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        if (mtime = File::mtime(@path)) > @mtime
-          @group.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              group, members = line.split(/:\s*/)
-              @group[group] = members.split(/\s+/)
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htgroup", File::dirname(output))
-        begin
-          @group.keys.sort.each{|group|
-            tmp.puts(format("%s: %s", group, self.members(group).join(" ")))
-          }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def members(group)
-        reload
-        @group[group] || []
-      end
-
-      def add(group, members)
-        @group[group] = members(group) | members
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htpasswd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htpasswd.rb
deleted file mode 100644
index 40f9297..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/htpasswd.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# httpauth/htpasswd -- Apache compatible htpasswd file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htpasswd.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $
-
-require 'webrick/httpauth/userdb'
-require 'webrick/httpauth/basicauth'
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htpasswd
-      include UserDB
-
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @passwd = Hash.new
-        @auth_type = BasicAuth
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        mtime = File::mtime(@path)
-        if mtime > @mtime
-          @passwd.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              case line
-              when %r!\A[^:]+:[a-zA-Z0-9./]{13}\z!
-                user, pass = line.split(":")
-              when /:\$/, /:\{SHA\}/
-                raise NotImplementedError,
-                      'MD5, SHA1 .htpasswd file not supported'
-              else
-                raise StandardError, 'bad .htpasswd file'
-              end
-              @passwd[user] = pass
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htpasswd", File::dirname(output))
-        begin
-          each{|item| tmp.puts(item.join(":")) }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def get_passwd(realm, user, reload_db)
-        reload() if reload_db
-        @passwd[user]
-      end
-
-      def set_passwd(realm, user, pass)
-        @passwd[user] = make_passwd(realm, user, pass)
-      end
-
-      def delete_passwd(realm, user)
-        @passwd.delete(user)
-      end
-
-      def each
-        @passwd.keys.sort.each{|user|
-          yield([user, @passwd[user]])
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/userdb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/userdb.rb
deleted file mode 100644
index 33e0140..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpauth/userdb.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# httpauth/userdb.rb -- UserDB mix-in module.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: userdb.rb,v 1.2 2003/02/20 07:15:48 gotoyuzo Exp $
-
-module WEBrick
-  module HTTPAuth
-    module UserDB
-      attr_accessor :auth_type # BasicAuth or DigestAuth
-
-      def make_passwd(realm, user, pass)
-        @auth_type::make_passwd(realm, user, pass)
-      end
-
-      def set_passwd(realm, user, pass)
-        self[user] = pass
-      end                             
-
-      def get_passwd(realm, user, reload_db=false)
-        # reload_db is dummy
-        make_passwd(realm, user, self[user])
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpproxy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpproxy.rb
deleted file mode 100644
index 14e3499..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpproxy.rb
+++ /dev/null
@@ -1,254 +0,0 @@
-#
-# httpproxy.rb -- HTTPProxy Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 GOTO Kentaro
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpproxy.rb,v 1.18 2003/03/08 18:58:10 gotoyuzo Exp $
-# $kNotwork: straw.rb,v 1.3 2002/02/12 15:13:07 gotoken Exp $
-
-require "webrick/httpserver"
-require "net/http"
-
-Net::HTTP::version_1_2 if RUBY_VERSION < "1.7"
-
-module WEBrick
-  NullReader = Object.new
-  class << NullReader
-    def read(*args)
-      nil
-    end
-    alias gets read
-  end
-
-  class HTTPProxyServer < HTTPServer
-    def initialize(config)
-      super
-      c = @config
-      @via = "#{c[:HTTPVersion]} #{c[:ServerName]}:#{c[:Port]}"
-    end
-
-    def service(req, res)
-      if req.request_method == "CONNECT"
-        proxy_connect(req, res)
-      elsif req.unparsed_uri =~ %r!^http://!
-        proxy_service(req, res)
-      else
-        super(req, res)
-      end
-    end
-
-    def proxy_auth(req, res)
-      if proc = @config[:ProxyAuthProc]
-        proc.call(req, res)
-      end
-      req.header.delete("proxy-authorization")
-    end
-
-    # Some header fields shuold not be transfered.
-    HopByHop = %w( connection keep-alive proxy-authenticate upgrade
-                   proxy-authorization te trailers transfer-encoding )
-    ShouldNotTransfer = %w( set-cookie proxy-connection )
-    def split_field(f) f ? f.split(/,\s+/).collect{|i| i.downcase } : [] end
-
-    def choose_header(src, dst)
-      connections = split_field(src['connection'])
-      src.each{|key, value|
-        key = key.downcase
-        if HopByHop.member?(key)          || # RFC2616: 13.5.1
-           connections.member?(key)       || # RFC2616: 14.10
-           ShouldNotTransfer.member?(key)    # pragmatics
-          @logger.debug("choose_header: `#{key}: #{value}'")
-          next
-        end
-        dst[key] = value
-      }
-    end
-
-    # Net::HTTP is stupid about the multiple header fields.
-    # Here is workaround:
-    def set_cookie(src, dst)
-      if str = src['set-cookie']
-        cookies = []
-        str.split(/,\s*/).each{|token|
-          if /^[^=]+;/o =~ token
-            cookies[-1] << ", " << token
-          elsif /=/o =~ token
-            cookies << token
-          else
-            cookies[-1] << ", " << token
-          end
-        }
-        dst.cookies.replace(cookies)
-      end
-    end
-
-    def set_via(h)
-      if @config[:ProxyVia]
-        if  h['via']
-          h['via'] << ", " << @via
-        else
-          h['via'] = @via
-        end
-      end
-    end
-
-    def proxy_uri(req, res)
-      @config[:ProxyURI]
-    end
-
-    def proxy_service(req, res)
-      # Proxy Authentication
-      proxy_auth(req, res)      
-
-      # Create Request-URI to send to the origin server
-      uri  = req.request_uri
-      path = uri.path.dup
-      path << "?" << uri.query if uri.query
-
-      # Choose header fields to transfer
-      header = Hash.new
-      choose_header(req, header)
-      set_via(header)
-
-      # select upstream proxy server
-      if proxy = proxy_uri(req, res)
-        proxy_host = proxy.host
-        proxy_port = proxy.port
-        if proxy.userinfo
-          credentials = "Basic " + [proxy.userinfo].pack("m*")
-          credentials.chomp!
-          header['proxy-authorization'] = credentials
-        end
-      end
-
-      response = nil
-      begin
-        http = Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port)
-        http.start{
-          if @config[:ProxyTimeout]
-            ##################################   these issues are 
-            http.open_timeout = 30   # secs  #   necessary (maybe bacause
-            http.read_timeout = 60   # secs  #   Ruby's bug, but why?)
-            ##################################
-          end
-          case req.request_method
-          when "GET"  then response = http.get(path, header)
-          when "POST" then response = http.post(path, req.body || "", header)
-          when "HEAD" then response = http.head(path, header)
-          else
-            raise HTTPStatus::MethodNotAllowed,
-              "unsupported method `#{req.request_method}'."
-          end
-        }
-      rescue => err
-        logger.debug("#{err.class}: #{err.message}")
-        raise HTTPStatus::ServiceUnavailable, err.message
-      end
-  
-      # Persistent connction requirements are mysterious for me.
-      # So I will close the connection in every response.
-      res['proxy-connection'] = "close"
-      res['connection'] = "close"
-
-      # Convert Net::HTTP::HTTPResponse to WEBrick::HTTPProxy
-      res.status = response.code.to_i
-      choose_header(response, res)
-      set_cookie(response, res)
-      set_via(res)
-      res.body = response.body
-
-      # Process contents
-      if handler = @config[:ProxyContentHandler]
-        handler.call(req, res)
-      end
-    end
-
-    def proxy_connect(req, res)
-      # Proxy Authentication
-      proxy_auth(req, res)
-
-      ua = Thread.current[:WEBrickSocket]  # User-Agent
-      raise HTTPStatus::InternalServerError,
-        "[BUG] cannot get socket" unless ua
-
-      host, port = req.unparsed_uri.split(":", 2)
-      # Proxy authentication for upstream proxy server
-      if proxy = proxy_uri(req, res)
-        proxy_request_line = "CONNECT #{host}:#{port} HTTP/1.0"
-        if proxy.userinfo
-          credentials = "Basic " + [proxy.userinfo].pack("m*")
-          credentials.chomp!
-        end
-        host, port = proxy.host, proxy.port
-      end
-
-      begin
-        @logger.debug("CONNECT: upstream proxy is `#{host}:#{port}'.")
-        os = TCPSocket.new(host, port)     # origin server
-
-        if proxy
-          @logger.debug("CONNECT: sending a Request-Line")
-          os << proxy_request_line << CRLF
-          @logger.debug("CONNECT: > #{proxy_request_line}")
-          if credentials
-            @logger.debug("CONNECT: sending a credentials")
-            os << "Proxy-Authorization: " << credentials << CRLF
-          end
-          os << CRLF
-          proxy_status_line = os.gets(LF)
-          @logger.debug("CONNECT: read a Status-Line form the upstream server")
-          @logger.debug("CONNECT: < #{proxy_status_line}")
-          if %r{^HTTP/\d+\.\d+\s+200\s*} =~ proxy_status_line
-            while line = os.gets(LF)
-              break if /\A(#{CRLF}|#{LF})\z/om =~ line
-            end
-          else
-            raise HTTPStatus::BadGateway
-          end
-        end
-        @logger.debug("CONNECT #{host}:#{port}: succeeded")
-        res.status = HTTPStatus::RC_OK
-      rescue => ex
-        @logger.debug("CONNECT #{host}:#{port}: failed `#{ex.message}'")
-        res.set_error(ex)
-        raise HTTPStatus::EOFError
-      ensure
-        if handler = @config[:ProxyContentHandler]
-          handler.call(req, res)
-        end
-        res.send_response(ua)
-        access_log(@config, req, res)
-
-        # Should clear request-line not to send the sesponse twice.
-        # see: HTTPServer#run
-        req.parse(NullReader) rescue nil
-      end
-
-      begin
-        while fds = IO::select([ua, os])
-          if fds[0].member?(ua)
-            buf = ua.sysread(1024);
-            @logger.debug("CONNECT: #{buf.size} byte from User-Agent")
-            os.syswrite(buf)
-          elsif fds[0].member?(os)
-            buf = os.sysread(1024);
-            @logger.debug("CONNECT: #{buf.size} byte from #{host}:#{port}")
-            ua.syswrite(buf)
-          end
-        end
-      rescue => ex
-        os.close
-        @logger.debug("CONNECT #{host}:#{port}: closed")
-      end
-
-      raise HTTPStatus::EOFError
-    end
-
-    def do_OPTIONS(req, res)
-      res['allow'] = "GET,HEAD,POST,OPTIONS,CONNECT"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httprequest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httprequest.rb
deleted file mode 100644
index 1d32293..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httprequest.rb
+++ /dev/null
@@ -1,365 +0,0 @@
-#
-# httprequest.rb -- HTTPRequest Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httprequest.rb,v 1.64 2003/07/13 17:18:22 gotoyuzo Exp $
-
-require 'timeout'
-require 'uri'
-
-require 'webrick/httpversion'
-require 'webrick/httpstatus'
-require 'webrick/httputils'
-require 'webrick/cookie'
-
-module WEBrick
-
-  class HTTPRequest
-    BODY_CONTAINABLE_METHODS = [ "POST", "PUT" ]
-    BUFSIZE = 1024*4
-
-    # Request line
-    attr_reader :request_line
-    attr_reader :request_method, :unparsed_uri, :http_version
-
-    # Request-URI
-    attr_reader :request_uri, :host, :port, :path
-    attr_accessor :script_name, :path_info, :query_string
-
-    # Header and entity body
-    attr_reader :raw_header, :header, :cookies
-    attr_reader :accept, :accept_charset
-    attr_reader :accept_encoding, :accept_language
-
-    # Misc
-    attr_accessor :user
-    attr_reader :addr, :peeraddr
-    attr_reader :attributes
-    attr_reader :keep_alive
-    attr_reader :request_time
-
-    def initialize(config)
-      @config = config
-      @logger = config[:Logger]
-
-      @request_line = @request_method =
-        @unparsed_uri = @http_version = nil
-
-      @request_uri = @host = @port = @path = nil
-      @script_name = @path_info = nil
-      @query_string = nil
-      @query = nil
-      @form_data = nil
-
-      @raw_header = Array.new
-      @header = nil
-      @cookies = []
-      @accept = []
-      @accept_charset = []
-      @accept_encoding = []
-      @accept_language = []
-      @body = ""
-
-      @addr = @peeraddr = nil
-      @attributes = {}
-      @user = nil
-      @keep_alive = false
-      @request_time = nil
-
-      @remaining_size = nil
-      @socket = nil
-    end
-
-    def parse(socket=nil)
-      @socket = socket
-      begin
-        @peeraddr = socket.respond_to?(:peeraddr) ? socket.peeraddr : []
-        @addr = socket.respond_to?(:addr) ? socket.addr : []
-      rescue Errno::ENOTCONN
-        raise HTTPStatus::EOFError
-      end
-
-      read_request_line(socket)
-      if @http_version.major > 0
-        read_header(socket)
-        @header['cookie'].each{|cookie|
-          @cookies += Cookie::parse(cookie)
-        }
-        @accept = HTTPUtils.parse_qvalues(self['accept'])
-        @accept_charset = HTTPUtils.parse_qvalues(self['accept-charset'])
-        @accept_encoding = HTTPUtils.parse_qvalues(self['accept-encoding'])
-        @accept_language = HTTPUtils.parse_qvalues(self['accept-language'])
-      end
-      return if @request_method == "CONNECT"
-      return if @unparsed_uri == "*"
-
-      begin
-        @request_uri = parse_uri(@unparsed_uri)
-        @path = HTTPUtils::unescape(@request_uri.path)
-        @path = HTTPUtils::normalize_path(@path)
-        @host = @request_uri.host
-        @port = @request_uri.port
-        @query_string = @request_uri.query
-        @script_name = ""
-        @path_info = @path.dup
-      rescue
-        raise HTTPStatus::BadRequest, "bad URI `#{@unparsed_uri}'."
-      end
-
-      if /close/io =~ self["connection"]
-        @keep_alive = false
-      elsif /keep-alive/io =~ self["connection"]
-        @keep_alive = true
-      elsif @http_version < "1.1"
-        @keep_alive = false
-      else
-        @keep_alive = true
-      end
-    end
-
-    def body(&block)
-      block ||= Proc.new{|chunk| @body << chunk }
-      read_body(@socket, block)
-      @body.empty? ? nil : @body
-    end
-
-    def query
-      unless @query
-        parse_query()
-      end
-      @query
-    end
-
-    def content_length
-      return Integer(self['content-length'])
-    end
-
-    def content_type
-      return self['content-type']
-    end
-
-    def [](header_name)
-      if @header
-        value = @header[header_name.downcase]
-        value.empty? ? nil : value.join(", ")
-      end
-    end
-
-    def each
-      @header.each{|k, v|
-        value = @header[k]
-        yield(k, value.empty? ? nil : value.join(", "))
-      }
-    end
-
-    def keep_alive?
-      @keep_alive
-    end
-
-    def to_s
-      ret = @request_line.dup
-      @raw_header.each{|line| ret << line }
-      ret << CRLF
-      ret << body if body
-      ret
-    end
-
-    def fixup()
-      begin
-        body{|chunk| }   # read remaining body
-      rescue HTTPStatus::Error => ex
-        @logger.error("HTTPRequest#fixup: #{ex.class} occured.")
-        @keep_alive = false
-      rescue => ex
-        @logger.error(ex)
-        @keep_alive = false
-      end
-    end
-
-    def meta_vars
-      # This method provides the metavariables defined by the revision 3
-      # of ``The WWW Common Gateway Interface Version 1.1''.
-      # (http://Web.Golux.Com/coar/cgi/)
-
-      meta = Hash.new
-
-      cl = self["Content-Length"]
-      ct = self["Content-Type"]
-      meta["CONTENT_LENGTH"]    = cl if cl.to_i > 0
-      meta["CONTENT_TYPE"]      = ct.dup if ct
-      meta["GATEWAY_INTERFACE"] = "CGI/1.1"
-      meta["PATH_INFO"]         = @path_info ? @path_info.dup : ""
-     #meta["PATH_TRANSLATED"]   = nil      # no plan to be provided
-      meta["QUERY_STRING"]      = @query_string ? @query_string.dup : ""
-      meta["REMOTE_ADDR"]       = @peeraddr[3]
-      meta["REMOTE_HOST"]       = @peeraddr[2]
-     #meta["REMOTE_IDENT"]      = nil      # no plan to be provided
-      meta["REMOTE_USER"]       = @user
-      meta["REQUEST_METHOD"]    = @request_method.dup
-      meta["REQUEST_URI"]       = @request_uri.to_s
-      meta["SCRIPT_NAME"]       = @script_name.dup
-      meta["SERVER_NAME"]       = @host
-      meta["SERVER_PORT"]       = @port.to_s
-      meta["SERVER_PROTOCOL"]   = "HTTP/" + @config[:HTTPVersion].to_s
-      meta["SERVER_SOFTWARE"]   = @config[:ServerSoftware].dup
-
-      self.each{|key, val|
-        next if /^content-type$/i =~ key
-        next if /^content-length$/i =~ key
-        name = "HTTP_" + key
-        name.gsub!(/-/o, "_")
-        name.upcase!
-        meta[name] = val
-      }
-
-      meta
-    end
-
-    private
-
-    def read_request_line(socket)
-      @request_line = read_line(socket) if socket
-      @request_time = Time.now
-      raise HTTPStatus::EOFError unless @request_line
-      if /^(\S+)\s+(\S+)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line
-        @request_method = $1
-        @unparsed_uri   = $2
-        @http_version   = HTTPVersion.new($3 ? $3 : "0.9")
-      else
-        rl = @request_line.sub(/\x0d?\x0a\z/o, '')
-        raise HTTPStatus::BadRequest, "bad Request-Line `#{rl}'."
-      end
-    end
-
-    def read_header(socket)
-      if socket
-        while line = read_line(socket)
-          break if /\A(#{CRLF}|#{LF})\z/om =~ line
-          @raw_header << line
-        end
-      end
-      begin
-        @header = HTTPUtils::parse_header(@raw_header)
-      rescue => ex
-        raise  HTTPStatus::BadRequest, ex.message
-      end
-    end
-
-    def parse_uri(str, scheme="http")
-      if @config[:Escape8bitURI]
-        str = HTTPUtils::escape8bit(str)
-      end
-      uri = URI::parse(str)
-      return uri if uri.absolute?
-      if self["host"]
-        pattern = /\A(#{URI::REGEXP::PATTERN::HOST})(?::(\d+))?\z/n
-        host, port = *self['host'].scan(pattern)[0]
-      elsif @addr.size > 0
-        host, port = @addr[2], @addr[1]
-      else
-        host, port = @config[:ServerName], @config[:Port]
-      end
-      uri.scheme = scheme
-      uri.host = host
-      uri.port = port ? port.to_i : nil
-      return URI::parse(uri.to_s)
-    end
-
-    def read_body(socket, block)
-      return unless socket
-      if tc = self['transfer-encoding']
-        case tc
-        when /chunked/io then read_chunked(socket, block)
-        else raise HTTPStatus::NotImplemented, "Transfer-Encoding: #{tc}."
-        end
-      elsif self['content-length'] || @remaining_size
-        @remaining_size ||= self['content-length'].to_i
-        while @remaining_size > 0 
-          sz = BUFSIZE < @remaining_size ? BUFSIZE : @remaining_size
-          break unless buf = read_data(socket, sz)
-          @remaining_size -= buf.size
-          block.call(buf)
-        end
-        if @remaining_size > 0 && @socket.eof?
-          raise HTTPStatus::BadRequest, "invalid body size."
-        end
-      elsif BODY_CONTAINABLE_METHODS.member?(@request_method)
-        raise HTTPStatus::LengthRequired
-      end
-      return @body
-    end
-
-    def read_chunk_size(socket)
-      line = read_line(socket)
-      if /^([0-9a-fA-F]+)(?:;(\S+))?/ =~ line
-        chunk_size = $1.hex
-        chunk_ext = $2
-        [ chunk_size, chunk_ext ]
-      else
-        raise HTTPStatus::BadRequest, "bad chunk `#{line}'."
-      end
-    end
-
-    def read_chunked(socket, block)
-      chunk_size, = read_chunk_size(socket)
-      while chunk_size > 0
-        data = ""
-        while data.size < chunk_size
-          tmp = read_data(socket, chunk_size-data.size) # read chunk-data
-          break unless tmp
-          data << tmp
-        end
-        if data.nil? || data.size != chunk_size
-          raise BadRequest, "bad chunk data size."
-        end
-        read_line(socket)                    # skip CRLF
-        block.call(data)
-        chunk_size, = read_chunk_size(socket)
-      end
-      read_header(socket)                    # trailer + CRLF
-      @header.delete("transfer-encoding")
-      @remaining_size = 0
-    end
-
-    def _read_data(io, method, arg)
-      begin
-        timeout(@config[:RequestTimeout]){
-          return io.__send__(method, arg)
-        }
-      rescue Errno::ECONNRESET
-        return nil
-      rescue TimeoutError
-        raise HTTPStatus::RequestTimeout
-      end
-    end
-
-    def read_line(io)
-      _read_data(io, :gets, LF)
-    end
-
-    def read_data(io, size)
-      _read_data(io, :read, size)
-    end
-
-    def parse_query()
-      begin
-        if @request_method == "GET" || @request_method == "HEAD"
-          @query = HTTPUtils::parse_query(@query_string)
-        elsif self['content-type'] =~ /^application\/x-www-form-urlencoded/
-          @query = HTTPUtils::parse_query(body)
-        elsif self['content-type'] =~ /^multipart\/form-data; boundary=(.+)/
-          boundary = HTTPUtils::dequote($1)
-          @query = HTTPUtils::parse_form_data(body, boundary)
-        else
-          @query = Hash.new
-        end
-      rescue => ex
-        raise HTTPStatus::BadRequest, ex.message
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpresponse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpresponse.rb
deleted file mode 100644
index d0f232d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpresponse.rb
+++ /dev/null
@@ -1,327 +0,0 @@
-#
-# httpresponse.rb -- HTTPResponse Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpresponse.rb,v 1.45 2003/07/11 11:02:25 gotoyuzo Exp $
-
-require 'time'
-require 'webrick/httpversion'
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  class HTTPResponse
-    BUFSIZE = 1024*4
-
-    attr_reader :http_version, :status, :header
-    attr_reader :cookies
-    attr_accessor :reason_phrase
-    attr_accessor :body
-
-    attr_accessor :request_method, :request_uri, :request_http_version
-    attr_accessor :filename
-    attr_accessor :keep_alive
-    attr_reader :config, :sent_size
-
-    def initialize(config)
-      @config = config
-      @logger = config[:Logger]
-      @header = Hash.new
-      @status = HTTPStatus::RC_OK
-      @reason_phrase = nil
-      @http_version = HTTPVersion::convert(@config[:HTTPVersion])
-      @body = ''
-      @keep_alive = true
-      @cookies = []
-      @request_method = nil
-      @request_uri = nil
-      @request_http_version = @http_version  # temporary
-      @chunked = false
-      @filename = nil
-      @sent_size = 0
-    end
-
-    def status_line
-      "HTTP/#@http_version #@status #@reason_phrase #{CRLF}"
-    end
-
-    def status=(status)
-      @status = status
-      @reason_phrase = HTTPStatus::reason_phrase(status)
-    end
-
-    def [](field)
-      @header[field.downcase]
-    end
-
-    def []=(field, value)
-      @header[field.downcase] = value.to_s
-    end
-
-    def content_length
-      if len = self['content-length']
-        return Integer(len)
-      end
-    end
-
-    def content_length=(len)
-      self['content-length'] = len.to_s
-    end
-
-    def content_type
-      self['content-type']
-    end
-
-    def content_type=(type)
-      self['content-type'] = type
-    end
-
-    def each
-      @header.each{|k, v|  yield(k, v) }
-    end
-
-    def chunked?
-      @chunked
-    end
-
-    def chunked=(val)
-      @chunked = val ? true : false
-    end
-
-    def keep_alive?
-      @keep_alive
-    end
-
-    def send_response(socket)
-      begin
-        setup_header()
-        send_header(socket)
-        send_body(socket)
-      rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ENOTCONN => ex
-        @logger.debug(ex)
-        @keep_alive = false
-      rescue Exception => ex
-        @logger.error(ex)
-        @keep_alive = false
-      end
-    end
-
-    def setup_header()
-      @reason_phrase    ||= HTTPStatus::reason_phrase(@status)
-      @header['server'] ||= @config[:ServerSoftware]
-      @header['date']   ||= Time.now.httpdate
-
-      # HTTP/0.9 features
-      if @request_http_version < "1.0"
-        @http_version = HTTPVersion.new("0.9")
-        @keep_alive = false
-      end
-
-      # HTTP/1.0 features
-      if @request_http_version < "1.1"
-        if chunked?
-          @chunked = false
-          ver = @request_http_version.to_s
-          msg = "chunked is set for an HTTP/#{ver} request. (ignored)"
-          @logger.warn(msg)
-        end
-      end
-
-      # Determin the message length (RFC2616 -- 4.4 Message Length)
-      if @status == 304 || @status == 204 || HTTPStatus::info?(@status)
-        @header.delete('content-length')
-        @body = ""
-      elsif chunked?
-        @header["transfer-encoding"] = "chunked"
-        @header.delete('content-length')
-      elsif %r{^multipart/byteranges} =~ @header['content-type']
-        @header.delete('content-length')
-      elsif @header['content-length'].nil?
-        unless @body.is_a?(IO)
-          @header['content-length'] = @body ? @body.size : 0
-        end
-      end
-
-      # Keep-Alive connection.
-      if @header['connection'] == "close"
-         @keep_alive = false
-      elsif keep_alive?
-        if chunked? || @header['content-length']
-          @header['connection'] = "Keep-Alive"
-        end
-      else
-        @header['connection'] = "close"
-      end
-
-      # Location is a single absoluteURI.
-      if location = @header['location']
-        if @request_uri
-          @header['location'] = @request_uri.merge(location)
-        end
-      end
-    end
-
-    def send_header(socket)
-      if @http_version.major > 0
-        data = status_line()
-        @header.each{|key, value|
-          tmp = key.gsub(/\bwww|^te$|\b\w/){|s| s.upcase }
-          data << "#{tmp}: #{value}" << CRLF
-        }
-        @cookies.each{|cookie|
-          data << "Set-Cookie: " << cookie.to_s << CRLF
-        }
-        data << CRLF
-        _write_data(socket, data)
-      end
-    end
-
-    def send_body(socket)
-      case @body
-      when IO then send_body_io(socket)
-      else send_body_string(socket)
-      end
-    end
-
-    def to_s
-      ret = ""
-      send_response(ret)
-      ret
-    end
-
-    def set_redirect(status, url)
-      @body = "<HTML><A HREF=\"#{url.to_s}\">#{url.to_s}</A>.</HTML>\n"
-      @header['location'] = url.to_s
-      raise status
-    end
-
-    def set_error(ex, backtrace=false)
-      case ex
-      when HTTPStatus::Status 
-        @keep_alive = false if HTTPStatus::error?(ex.code)
-        self.status = ex.code
-      else 
-        @keep_alive = false
-        self.status = HTTPStatus::RC_INTERNAL_SERVER_ERROR
-      end
-      @header['content-type'] = "text/html"
-
-      if respond_to?(:create_error_page)
-        create_error_page()
-        return
-      end
-
-      if @request_uri
-        host, port = @request_uri.host, @request_uri.port
-      else
-        host, port = @config[:ServerName], @config[:Port]
-      end
-
-      @body = ''
-      @body << <<-_end_of_html_
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-  <HEAD><TITLE>#{HTMLUtils::escape(@reason_phrase)}</TITLE></HEAD>
-  <BODY>
-    <H1>#{HTMLUtils::escape(@reason_phrase)}</H1>
-    #{HTMLUtils::escape(ex.message)}
-    <HR>
-      _end_of_html_
-
-      if backtrace && $DEBUG
-        @body << "backtrace of `#{HTMLUtils::escape(ex.class.to_s)}' "
-        @body << "#{HTMLUtils::escape(ex.message)}"
-        @body << "<PRE>"
-        ex.backtrace.each{|line| @body << "\t#{line}\n"}
-        @body << "</PRE><HR>"
-      end
-
-      @body << <<-_end_of_html_
-    <ADDRESS>
-     #{HTMLUtils::escape(@config[:ServerSoftware])} at
-     #{host}:#{port}
-    </ADDRESS>
-  </BODY>
-</HTML>
-      _end_of_html_
-    end
-
-    private
-
-    def send_body_io(socket)
-      begin
-        if @request_method == "HEAD"
-          # do nothing
-        elsif chunked?
-          while buf = @body.read(BUFSIZE)
-            next if buf.empty?
-            data = ""
-            data << format("%x", buf.size) << CRLF
-            data << buf << CRLF
-            _write_data(socket, data)
-            @sent_size += buf.size
-          end
-          _write_data(socket, "0#{CRLF}#{CRLF}")
-        else
-          size = @header['content-length'].to_i
-          _send_file(socket, @body, 0, size)
-          @sent_size = size
-        end
-      ensure
-        @body.close
-      end
-    end
-
-    def send_body_string(socket)
-      if @request_method == "HEAD"
-        # do nothing
-      elsif chunked?
-        remain = body ? @body.size : 0
-        while buf = @body[@sent_size, BUFSIZE]
-          break if buf.empty?
-          data = ""
-          data << format("%x", buf.size) << CRLF
-          data << buf << CRLF
-          _write_data(socket, data)
-          @sent_size += buf.size
-        end
-        _write_data(socket, "0#{CRLF}#{CRLF}")
-      else
-        if @body && @body.size > 0
-          _write_data(socket, @body)
-          @sent_size = @body.size
-        end
-      end
-    end
-
-    def _send_file(output, input, offset, size)
-      while offset > 0
-        sz = BUFSIZE < offset ? BUFSIZE : offset
-        buf = input.read(sz)
-        offset -= buf.size
-      end
-
-      if size == 0
-        while buf = input.read(BUFSIZE)
-          _write_data(output, buf)
-        end
-      else
-        while size > 0
-          sz = BUFSIZE < size ? BUFSIZE : size
-          buf = input.read(sz)
-          _write_data(output, buf)
-          size -= buf.size
-        end
-      end
-    end
-
-    def _write_data(socket, data)
-      socket << data
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/https.rb
deleted file mode 100644
index 81b65ce..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/https.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# https.rb -- SSL/TLS enhancement for HTTPServer
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: https.rb,v 1.15 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/ssl'
-
-module WEBrick
-  module Config
-    HTTP.update(SSL)
-  end
-
-  class HTTPRequest
-    attr_reader :cipher, :server_cert, :client_cert
-
-    alias orig_parse parse
-
-    def parse(socket=nil)
-      if socket.respond_to?(:cert)
-        @server_cert = socket.cert || @config[:SSLCertificate]
-        @client_cert = socket.peer_cert
-        @client_cert_chain = socket.peer_cert_chain
-        @cipher      = socket.cipher
-      end
-      orig_parse(socket)
-    end
-
-    alias orig_parse_uri parse_uri
-
-    def parse_uri(str, scheme="https")
-      if @server_cert
-        return orig_parse_uri(str, scheme)
-      end
-      return orig_parse_uri(str)
-    end
-
-    alias orig_meta_vars meta_vars
-
-    def meta_vars
-      meta = orig_meta_vars
-      if @server_cert
-        meta["HTTPS"] = "on"
-        meta["SSL_SERVER_CERT"] = @server_cert.to_pem
-        meta["SSL_CLIENT_CERT"] = @client_cert ? @client_cert.to_pem : ""
-        if @client_cert_chain
-          @client_cert_chain.each_with_index{|cert, i|
-            meta["SSL_CLIENT_CERT_CHAIN_#{i}"] = cert.to_pem
-          }
-        end
-        meta["SSL_CIPHER"] = @cipher[0]
-        meta["SSL_PROTOCOL"] = @cipher[1]
-        meta["SSL_CIPHER_USEKEYSIZE"] = @cipher[2].to_s
-        meta["SSL_CIPHER_ALGKEYSIZE"] = @cipher[3].to_s
-      end
-      meta
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpserver.rb
deleted file mode 100644
index 9edb001..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpserver.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# httpserver.rb -- HTTPServer Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpserver.rb,v 1.63 2002/10/01 17:16:32 gotoyuzo Exp $
-
-require 'webrick/server'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-require 'webrick/httprequest'
-require 'webrick/httpresponse'
-require 'webrick/httpservlet'
-require 'webrick/accesslog'
-
-module WEBrick
-  class HTTPServerError < ServerError; end
-
-  class HTTPServer < ::WEBrick::GenericServer
-    def initialize(config={}, default=Config::HTTP)
-      super
-      @http_version = HTTPVersion::convert(@config[:HTTPVersion])
-
-      @mount_tab = MountTable.new
-      if @config[:DocumentRoot]
-        mount("/", HTTPServlet::FileHandler, @config[:DocumentRoot],
-              @config[:DocumentRootOptions])
-      end
-
-      unless @config[:AccessLog]
-        @config[:AccessLog] = [
-          [ $stderr, AccessLog::COMMON_LOG_FORMAT ],
-          [ $stderr, AccessLog::REFERER_LOG_FORMAT ]
-        ]
-      end
- 
-      @virtual_hosts = Array.new
-    end
-
-    def run(sock)
-      while true 
-        res = HTTPResponse.new(@config)
-        req = HTTPRequest.new(@config)
-        server = self
-        begin
-          timeout = @config[:RequestTimeout]
-          while timeout > 0
-            break if IO.select([sock], nil, nil, 0.5)
-            timeout = 0 if @status != :Running
-            timeout -= 0.5
-          end
-          raise HTTPStatus::EOFError if timeout <= 0 || sock.eof?
-          req.parse(sock)
-          res.request_method = req.request_method
-          res.request_uri = req.request_uri
-          res.request_http_version = req.http_version
-          res.keep_alive = req.keep_alive?
-          server = lookup_server(req) || self
-          if callback = server[:RequestCallback] || server[:RequestHandler]
-            callback.call(req, res)
-          end
-          server.service(req, res)
-        rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex
-          res.set_error(ex)
-        rescue HTTPStatus::Error => ex
-          @logger.error(ex.message)
-          res.set_error(ex)
-        rescue HTTPStatus::Status => ex
-          res.status = ex.code
-        rescue StandardError => ex
-          @logger.error(ex)
-          res.set_error(ex, true)
-        ensure
-          if req.request_line
-            req.fixup()
-            res.send_response(sock)
-            server.access_log(@config, req, res)
-          end
-        end
-        break if @http_version < "1.1"
-        break unless req.keep_alive?
-        break unless res.keep_alive?
-      end
-    end
-
-    def service(req, res)
-      if req.unparsed_uri == "*"
-        if req.request_method == "OPTIONS"
-          do_OPTIONS(req, res)
-          raise HTTPStatus::OK
-        end
-        raise HTTPStatus::NotFound, "`#{req.unparsed_uri}' not found."
-      end
-
-      servlet, options, script_name, path_info = search_servlet(req.path)
-      raise HTTPStatus::NotFound, "`#{req.path}' not found." unless servlet
-      req.script_name = script_name
-      req.path_info = path_info
-      si = servlet.get_instance(self, *options)
-      @logger.debug(format("%s is invoked.", si.class.name))
-      si.service(req, res)
-    end
-
-    def do_OPTIONS(req, res)
-      res["allow"] = "GET,HEAD,POST,OPTIONS"
-    end
-
-    def mount(dir, servlet, *options)
-      @logger.debug(sprintf("%s is mounted on %s.", servlet.inspect, dir))
-      @mount_tab[dir] = [ servlet, options ]
-    end
-
-    def mount_proc(dir, proc=nil, &block)
-      proc ||= block
-      raise HTTPServerError, "must pass a proc or block" unless proc
-      mount(dir, HTTPServlet::ProcHandler.new(proc))
-    end
-
-    def unmount(dir)
-      @logger.debug(sprintf("unmount %s.", dir))
-      @mount_tab.delete(dir)
-    end
-    alias umount unmount
-
-    def search_servlet(path)
-      script_name, path_info = @mount_tab.scan(path)
-      servlet, options = @mount_tab[script_name]
-      if servlet
-        [ servlet, options, script_name, path_info ]
-      end
-    end
-
-    def virtual_host(server)
-      @virtual_hosts << server
-      @virtual_hosts = @virtual_hosts.sort_by{|s|
-        num = 0
-        num -= 4 if s[:BindAddress]
-        num -= 2 if s[:Port]
-        num -= 1 if s[:ServerName]
-        num
-      }
-    end
-
-    def lookup_server(req)
-      @virtual_hosts.find{|s|
-        (s[:BindAddress].nil? || req.addr[3] == s[:BindAddress]) &&
-        (s[:Port].nil?        || req.port == s[:Port])           &&
-        ((s[:ServerName].nil?  || req.host == s[:ServerName]) ||
-         (!s[:ServerAlias].nil? && s[:ServerAlias].find{|h| h === req.host}))
-      }
-    end
-
-    def access_log(config, req, res)
-      param = AccessLog::setup_params(config, req, res)
-      @config[:AccessLog].each{|logger, fmt|
-        logger << AccessLog::format(fmt+"\n", param)
-      }
-    end
-
-    class MountTable
-      def initialize
-        @tab = Hash.new
-        compile
-      end
-
-      def [](dir)
-        dir = normalize(dir)
-        @tab[dir]
-      end
-
-      def []=(dir, val)
-        dir = normalize(dir)
-        @tab[dir] = val
-        compile
-        val
-      end
-
-      def delete(dir)
-        dir = normalize(dir)
-        res = @tab.delete(dir)
-        compile
-        res
-      end
-
-      def scan(path)
-        @scanner =~ path
-        [ $&, $' ]
-      end
-
-      private
-
-      def compile
-        k = @tab.keys
-        k.sort!
-        k.reverse!
-        k.collect!{|path| Regexp.escape(path) }
-        @scanner = Regexp.new("^(" + k.join("|") +")(?=/|$)")
-      end
-
-      def normalize(dir)
-        ret = dir ? dir.dup : ""
-        ret.sub!(%r|/+$|, "")
-        ret
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet.rb
deleted file mode 100644
index ac7c022..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# httpservlet.rb -- HTTPServlet Utility File
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpservlet.rb,v 1.21 2003/02/23 12:24:46 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract'
-require 'webrick/httpservlet/filehandler'
-require 'webrick/httpservlet/cgihandler'
-require 'webrick/httpservlet/erbhandler'
-require 'webrick/httpservlet/prochandler'
-
-module WEBrick
-  module HTTPServlet
-    FileHandler.add_handler("cgi", CGIHandler)
-    FileHandler.add_handler("rhtml", ERBHandler)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/abstract.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/abstract.rb
deleted file mode 100644
index 5375c46..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/abstract.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# httpservlet.rb -- HTTPServlet Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: abstract.rb,v 1.24 2003/07/11 11:16:46 gotoyuzo Exp $
-
-require 'thread'
-
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  module HTTPServlet
-    class HTTPServletError < StandardError; end
-
-    class AbstractServlet
-      def self.get_instance(config, *options)
-        self.new(config, *options)
-      end
-
-      def initialize(server, *options)
-        @server = @config = server
-        @logger = @server[:Logger]
-        @options = options
-      end
-
-      def service(req, res)
-        method_name = "do_" + req.request_method.gsub(/-/, "_")
-        if respond_to?(method_name)
-          __send__(method_name, req, res)
-        else
-          raise HTTPStatus::MethodNotAllowed,
-                "unsupported method `#{req.request_method}'."
-        end
-      end
-
-      def do_GET(req, res)
-        raise HTTPStatus::NotFound, "not found."
-      end
-
-      def do_HEAD(req, res)
-        do_GET(req, res)
-      end
-
-      def do_OPTIONS(req, res)
-        m = self.methods.grep(/^do_[A-Z]+$/)
-        m.collect!{|i| i.sub(/do_/, "") }
-        m.sort!
-        res["allow"] = m.join(",")
-      end
-
-      private
-
-      def redirect_to_directory_uri(req, res)
-        if req.path[-1] != ?/
-          location = WEBrick::HTTPUtils.escape_path(req.path + "/")
-          if req.query_string && req.query_string.size > 0
-            location << "?" << req.query_string
-          end
-          res.set_redirect(HTTPStatus::MovedPermanently, location)
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgi_runner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgi_runner.rb
deleted file mode 100644
index 006abd4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgi_runner.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# cgi_runner.rb -- CGI launcher.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $
-
-def sysread(io, size)
-  buf = ""
-  while size > 0
-    tmp = io.sysread(size)
-    buf << tmp
-    size -= tmp.size
-  end
-  return buf
-end
-
-STDIN.binmode
-
-buf = ""
-len = sysread(STDIN, 8).to_i
-out = sysread(STDIN, len)
-STDOUT.reopen(open(out, "w"))
-
-len = sysread(STDIN, 8).to_i
-err = sysread(STDIN, len)
-STDERR.reopen(open(err, "w"))
-
-len  = sysread(STDIN, 8).to_i
-dump = sysread(STDIN, len)
-hash = Marshal.restore(dump)
-ENV.keys.each{|name| ENV.delete(name) }
-hash.each{|k, v| ENV[k] = v if v }
-
-dir = File::dirname(ENV["SCRIPT_FILENAME"])
-Dir::chdir dir
-
-if interpreter = ARGV[0]
-  argv = ARGV.dup
-  argv << ENV["SCRIPT_FILENAME"]
-  exec(*argv)
-  # NOTREACHED
-end
-exec ENV["SCRIPT_FILENAME"]
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgihandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgihandler.rb
deleted file mode 100644
index a35b59e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/cgihandler.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-# 
-# cgihandler.rb -- CGIHandler Class
-#       
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#   
-# $IPR: cgihandler.rb,v 1.27 2003/03/21 19:56:01 gotoyuzo Exp $
-
-require 'rbconfig'
-require 'tempfile'
-require 'webrick/config'
-require 'webrick/httpservlet/abstract'
-
-module WEBrick
-  module HTTPServlet
-
-    class CGIHandler < AbstractServlet
-      Ruby = File::join(::Config::CONFIG['bindir'],
-                        ::Config::CONFIG['ruby_install_name'])
-      Ruby << ::Config::CONFIG['EXEEXT']
-      CGIRunner = "\"#{Ruby}\" \"#{Config::LIBDIR}/httpservlet/cgi_runner.rb\""
-
-      def initialize(server, name)
-        super
-        @script_filename = name
-        @tempdir = server[:TempDir]
-        @cgicmd = "#{CGIRunner} #{server[:CGIInterpreter]}"
-      end
-
-      def do_GET(req, res)
-        data = nil
-        status = -1
-
-        cgi_in = IO::popen(@cgicmd, "wb")
-        cgi_out = Tempfile.new("webrick.cgiout.", @tempdir)
-        cgi_err = Tempfile.new("webrick.cgierr.", @tempdir)
-        begin
-          cgi_in.sync = true
-          meta = req.meta_vars
-          meta["SCRIPT_FILENAME"] = @script_filename
-          meta["PATH"] = @config[:CGIPathEnv]
-          if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM
-            meta["SystemRoot"] = ENV["SystemRoot"]
-          end
-          dump = Marshal.dump(meta)
-
-          cgi_in.write("%8d" % cgi_out.path.size)
-          cgi_in.write(cgi_out.path)
-          cgi_in.write("%8d" % cgi_err.path.size)
-          cgi_in.write(cgi_err.path)
-          cgi_in.write("%8d" % dump.size)
-          cgi_in.write(dump)
-
-          if req.body and req.body.size > 0
-            cgi_in.write(req.body)
-          end
-        ensure
-          cgi_in.close
-          status = $?.exitstatus
-          sleep 0.1 if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM
-          data = cgi_out.read
-          cgi_out.close(true)
-          if errmsg = cgi_err.read
-            if errmsg.size > 0
-              @logger.error("CGIHandler: #{@script_filename}:\n" + errmsg)
-            end
-          end 
-          cgi_err.close(true)
-        end
-        
-        if status != 0
-          @logger.error("CGIHandler: #{@script_filename} exit with #{status}")
-        end
-
-        data = "" unless data
-        raw_header, body = data.split(/^[\xd\xa]+/on, 2) 
-        raise HTTPStatus::InternalServerError,
-          "Premature end of script headers: #{@script_filename}" if body.nil?
-
-        begin
-          header = HTTPUtils::parse_header(raw_header)
-          if /^(\d+)/ =~ header['status'][0]
-            res.status = $1.to_i
-            header.delete('status')
-          end
-          if header.has_key?('set-cookie')
-            header['set-cookie'].each{|k|
-              res.cookies << Cookie.parse_set_cookie(k)
-            }
-            header.delete('set-cookie')
-          end
-          header.each{|key, val| res[key] = val.join(", ") }
-        rescue => ex
-          raise HTTPStatus::InternalServerError, ex.message
-        end
-        res.body = body
-      end
-      alias do_POST do_GET
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/erbhandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/erbhandler.rb
deleted file mode 100644
index b9d5e65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/erbhandler.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# 
-# erbhandler.rb -- ERBHandler Class
-# 
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-# 
-# $IPR: erbhandler.rb,v 1.25 2003/02/24 19:25:31 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract.rb'
-
-require 'erb'
-
-module WEBrick
-  module HTTPServlet
-
-    class ERBHandler < AbstractServlet
-      def initialize(server, name)
-        super
-        @script_filename = name
-      end
-
-      def do_GET(req, res)
-        unless defined?(ERB)
-          @logger.warn "#{self.class}: ERB not defined."
-          raise HTTPStatus::Forbidden, "ERBHandler cannot work."
-        end
-        begin
-          data = open(@script_filename){|io| io.read }
-          res.body = evaluate(ERB.new(data), req, res)
-          res['content-type'] =
-            HTTPUtils::mime_type(@script_filename, @config[:MimeTypes])
-        rescue StandardError => ex
-          raise
-        rescue Exception => ex
-          @logger.error(ex)
-          raise HTTPStatus::InternalServerError, ex.message
-        end
-      end
-
-      alias do_POST do_GET
-
-      private
-      def evaluate(erb, servlet_request, servlet_response)
-        Module.new.module_eval{
-          meta_vars = servlet_request.meta_vars
-          query = servlet_request.query
-          erb.result(binding)
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/filehandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/filehandler.rb
deleted file mode 100644
index 24f59d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/filehandler.rb
+++ /dev/null
@@ -1,435 +0,0 @@
-#
-# filehandler.rb -- FileHandler Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: filehandler.rb,v 1.44 2003/06/07 01:34:51 gotoyuzo Exp $
-
-require 'thread'
-require 'time'
-
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  module HTTPServlet
-
-    class DefaultFileHandler < AbstractServlet
-      def initialize(server, local_path)
-        super
-        @local_path = local_path
-      end
-
-      def do_GET(req, res)
-        st = File::stat(@local_path)
-        mtime = st.mtime
-        res['etag'] = sprintf("%x-%x-%x", st.ino, st.size, st.mtime.to_i)
-
-        if not_modified?(req, res, mtime, res['etag'])
-          res.body = ''
-          raise HTTPStatus::NotModified
-        elsif req['range'] 
-          make_partial_content(req, res, @local_path, st.size)
-          raise HTTPStatus::PartialContent
-        else
-          mtype = HTTPUtils::mime_type(@local_path, @config[:MimeTypes])
-          res['content-type'] = mtype
-          res['content-length'] = st.size
-          res['last-modified'] = mtime.httpdate
-          res.body = open(@local_path, "rb")
-        end
-      end
-
-      def not_modified?(req, res, mtime, etag)
-        if ir = req['if-range']
-          begin
-            if Time.httpdate(ir) >= mtime
-              return true
-            end
-          rescue
-            if HTTPUtils::split_header_value(ir).member?(res['etag'])
-              return true
-            end
-          end
-        end
-
-        if (ims = req['if-modified-since']) && Time.parse(ims) >= mtime
-          return true
-        end
-
-        if (inm = req['if-none-match']) &&
-           HTTPUtils::split_header_value(inm).member?(res['etag'])
-          return true
-        end
-
-        return false
-      end
-
-      def make_partial_content(req, res, filename, filesize)
-        mtype = HTTPUtils::mime_type(filename, @config[:MimeTypes])
-        unless ranges = HTTPUtils::parse_range_header(req['range'])
-          raise HTTPStatus::BadRequest,
-            "Unrecognized range-spec: \"#{req['range']}\""
-        end
-        open(filename, "rb"){|io|
-          if ranges.size > 1
-            time = Time.now
-            boundary = "#{time.sec}_#{time.usec}_#{Process::pid}"
-            body = ''
-            ranges.each{|range|
-              first, last = prepare_range(range, filesize)
-              next if first < 0
-              io.pos = first
-              content = io.read(last-first+1)
-              body << "--" << boundary << CRLF
-              body << "Content-Type: #{mtype}" << CRLF
-              body << "Content-Range: #{first}-#{last}/#{filesize}" << CRLF
-              body << CRLF
-              body << content
-              body << CRLF
-            }
-            raise HTTPStatus::RequestRangeNotSatisfiable if body.empty?
-            body << "--" << boundary << "--" << CRLF
-            res["content-type"] = "multipart/byteranges; boundary=#{boundary}"
-            res.body = body
-          elsif range = ranges[0]
-            first, last = prepare_range(range, filesize)
-            raise HTTPStatus::RequestRangeNotSatisfiable if first < 0
-            if last == filesize - 1
-              content = io.dup
-              content.pos = first
-            else
-              io.pos = first
-              content = io.read(last-first+1)
-            end
-            res['content-type'] = mtype
-            res['content-range'] = "#{first}-#{last}/#{filesize}"
-            res['content-length'] = last - first + 1
-            res.body = content
-          else
-            raise HTTPStatus::BadRequest
-          end
-        }
-      end
-
-      def prepare_range(range, filesize)
-        first = range.first < 0 ? filesize + range.first : range.first
-        return -1, -1 if first < 0 || first >= filesize
-        last = range.last < 0 ? filesize + range.last : range.last
-        last = filesize - 1 if last >= filesize
-        return first, last
-      end
-    end
-
-    class FileHandler < AbstractServlet
-      HandlerTable = Hash.new
-
-      def self.add_handler(suffix, handler)
-        HandlerTable[suffix] = handler
-      end
-
-      def self.remove_handler(suffix)
-        HandlerTable.delete(suffix)
-      end
-
-      def initialize(server, root, options={}, default=Config::FileHandler)
-        @config = server.config
-        @logger = @config[:Logger]
-        @root = File.expand_path(root)
-        if options == true || options == false
-          options = { :FancyIndexing => options }
-        end
-        @options = default.dup.update(options)
-      end
-
-      def service(req, res)
-        # if this class is mounted on "/" and /~username is requested.
-        # we're going to override path informations before invoking service.
-        if defined?(Etc) && @options[:UserDir] && req.script_name.empty?
-          if %r|^(/~([^/]+))| =~ req.path_info
-            script_name, user = $1, $2
-            path_info = $'
-            begin
-              passwd = Etc::getpwnam(user)
-              @root = File::join(passwd.dir, @options[:UserDir])
-              req.script_name = script_name
-              req.path_info = path_info
-            rescue
-              @logger.debug "#{self.class}#do_GET: getpwnam(#{user}) failed"
-            end
-          end
-        end
-        prevent_directory_traversal(req, res)
-        super(req, res)
-      end
-
-      def do_GET(req, res)
-        unless exec_handler(req, res)
-          set_dir_list(req, res)
-        end
-      end
-
-      def do_POST(req, res)
-        unless exec_handler(req, res)
-          raise HTTPStatus::NotFound, "`#{req.path}' not found."
-        end
-      end
-
-      def do_OPTIONS(req, res)
-        unless exec_handler(req, res)
-          super(req, res)
-        end
-      end
-
-      # ToDo
-      # RFC2518: HTTP Extensions for Distributed Authoring -- WEBDAV
-      #
-      # PROPFIND PROPPATCH MKCOL DELETE PUT COPY MOVE
-      # LOCK UNLOCK
-
-      # RFC3253: Versioning Extensions to WebDAV
-      #          (Web Distributed Authoring and Versioning)
-      #
-      # VERSION-CONTROL REPORT CHECKOUT CHECK_IN UNCHECKOUT
-      # MKWORKSPACE UPDATE LABEL MERGE ACTIVITY
-
-      private
-
-      def trailing_pathsep?(path)
-        # check for trailing path separator:
-        #   File.dirname("/aaaa/bbbb/")      #=> "/aaaa")
-        #   File.dirname("/aaaa/bbbb/x")     #=> "/aaaa/bbbb")
-        #   File.dirname("/aaaa/bbbb")       #=> "/aaaa")
-        #   File.dirname("/aaaa/bbbbx")      #=> "/aaaa")
-        return File.dirname(path) != File.dirname(path+"x")
-      end
-
-      def prevent_directory_traversal(req, res)
-        # Preventing directory traversal on Windows platforms;
-        # Backslashes (0x5c) in path_info are not interpreted as special
-        # character in URI notation. So the value of path_info should be
-        # normalize before accessing to the filesystem.
-
-        if trailing_pathsep?(req.path_info)
-          # File.expand_path removes the trailing path separator.
-          # Adding a character is a workaround to save it.
-          #  File.expand_path("/aaa/")        #=> "/aaa"
-          #  File.expand_path("/aaa/" + "x")  #=> "/aaa/x"
-          expanded = File.expand_path(req.path_info + "x")
-          expanded.chop!  # remove trailing "x"
-        else
-          expanded = File.expand_path(req.path_info)
-        end
-        req.path_info = expanded
-      end
-
-      def exec_handler(req, res)
-        raise HTTPStatus::NotFound, "`#{req.path}' not found" unless @root
-        if set_filename(req, res)
-          handler = get_handler(req, res)
-          call_callback(:HandlerCallback, req, res)
-          h = handler.get_instance(@config, res.filename)
-          h.service(req, res)
-          return true
-        end
-        call_callback(:HandlerCallback, req, res)
-        return false
-      end
-
-      def get_handler(req, res)
-        suffix1 = (/\.(\w+)\z/ =~ res.filename) && $1.downcase
-        if /\.(\w+)\.([\w\-]+)\z/ =~ res.filename
-          if @options[:AcceptableLanguages].include?($2.downcase)
-            suffix2 = $1.downcase
-          end
-        end
-        handler_table = @options[:HandlerTable]
-        return handler_table[suffix1] || handler_table[suffix2] ||
-               HandlerTable[suffix1] || HandlerTable[suffix2] ||
-               DefaultFileHandler
-      end
-
-      def set_filename(req, res)
-        res.filename = @root.dup
-        path_info = req.path_info.scan(%r|/[^/]*|)
-
-        path_info.unshift("")  # dummy for checking @root dir
-        while base = path_info.first
-          break if base == "/"
-          break unless File.directory?(File.expand_path(res.filename + base))
-          shift_path_info(req, res, path_info)
-          call_callback(:DirectoryCallback, req, res)
-        end
-
-        if base = path_info.first
-          if base == "/"
-            if file = search_index_file(req, res)
-              shift_path_info(req, res, path_info, file)
-              call_callback(:FileCallback, req, res)
-              return true
-            end
-            shift_path_info(req, res, path_info)
-          elsif file = search_file(req, res, base)
-            shift_path_info(req, res, path_info, file)
-            call_callback(:FileCallback, req, res)
-            return true
-          else
-            raise HTTPStatus::NotFound, "`#{req.path}' not found."
-          end
-        end
-
-        return false
-      end
-
-      def check_filename(req, res, name)
-        if nondisclosure_name?(name) || windows_ambiguous_name?(name)
-          @logger.warn("the request refers nondisclosure name `#{name}'.")
-          raise HTTPStatus::NotFound, "`#{req.path}' not found."
-        end
-      end
-
-      def shift_path_info(req, res, path_info, base=nil)
-        tmp = path_info.shift
-        base = base || tmp
-        req.path_info = path_info.join
-        req.script_name << base
-        res.filename = File.expand_path(res.filename + base)
-        check_filename(req, res, File.basename(res.filename))
-      end
-
-      def search_index_file(req, res)
-        @config[:DirectoryIndex].each{|index|
-          if file = search_file(req, res, "/"+index)
-            return file
-          end
-        }
-        return nil
-      end
-
-      def search_file(req, res, basename)
-        langs = @options[:AcceptableLanguages]
-        path = res.filename + basename
-        if File.file?(path)
-          return basename
-        elsif langs.size > 0
-          req.accept_language.each{|lang|
-            path_with_lang = path + ".#{lang}"
-            if langs.member?(lang) && File.file?(path_with_lang)
-              return basename + ".#{lang}"
-            end
-          }
-          (langs - req.accept_language).each{|lang|
-            path_with_lang = path + ".#{lang}"
-            if File.file?(path_with_lang)
-              return basename + ".#{lang}"
-            end
-          }
-        end
-        return nil
-      end
-
-      def call_callback(callback_name, req, res)
-        if cb = @options[callback_name]
-          cb.call(req, res)
-        end
-      end
-
-      def windows_ambiguous_name?(name)
-        return true if /[. ]+\z/ =~ name
-        return true if /::\$DATA\z/ =~ name
-        return false
-      end
-
-      def nondisclosure_name?(name)
-        @options[:NondisclosureName].each{|pattern|
-          if File.fnmatch(pattern, name, File::FNM_CASEFOLD)
-            return true
-          end
-        }
-        return false
-      end
-
-      def set_dir_list(req, res)
-        redirect_to_directory_uri(req, res)
-        unless @options[:FancyIndexing]
-          raise HTTPStatus::Forbidden, "no access permission to `#{req.path}'"
-        end
-        local_path = res.filename
-        list = Dir::entries(local_path).collect{|name|
-          next if name == "." || name == ".."
-          next if nondisclosure_name?(name)
-          next if windows_ambiguous_name?(name)
-          st = (File::stat(File.join(local_path, name)) rescue nil)
-          if st.nil?
-            [ name, nil, -1 ]
-          elsif st.directory?
-            [ name + "/", st.mtime, -1 ]
-          else
-            [ name, st.mtime, st.size ]
-          end
-        }
-        list.compact!
-
-        if    d0 = req.query["N"]; idx = 0
-        elsif d0 = req.query["M"]; idx = 1
-        elsif d0 = req.query["S"]; idx = 2
-        else  d0 = "A"           ; idx = 0
-        end
-        d1 = (d0 == "A") ? "D" : "A"
-
-        if d0 == "A"
-          list.sort!{|a,b| a[idx] <=> b[idx] }
-        else
-          list.sort!{|a,b| b[idx] <=> a[idx] }
-        end
-
-        res['content-type'] = "text/html"
-
-        res.body = <<-_end_of_html_
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-  <HEAD><TITLE>Index of #{HTMLUtils::escape(req.path)}</TITLE></HEAD>
-  <BODY>
-    <H1>Index of #{HTMLUtils::escape(req.path)}</H1>
-        _end_of_html_
-
-        res.body << "<PRE>\n"
-        res.body << " <A HREF=\"?N=#{d1}\">Name</A>                          "
-        res.body << "<A HREF=\"?M=#{d1}\">Last modified</A>         "
-        res.body << "<A HREF=\"?S=#{d1}\">Size</A>\n"
-        res.body << "<HR>\n"
-       
-        list.unshift [ "..", File::mtime(local_path+"/.."), -1 ]
-        list.each{ |name, time, size|
-          if name == ".."
-            dname = "Parent Directory"
-          elsif name.size > 25
-            dname = name.sub(/^(.{23})(.*)/){ $1 + ".." }
-          else
-            dname = name
-          end
-          s =  " <A HREF=\"#{HTTPUtils::escape(name)}\">#{dname}</A>"
-          s << " " * (30 - dname.size)
-          s << (time ? time.strftime("%Y/%m/%d %H:%M      ") : " " * 22)
-          s << (size >= 0 ? size.to_s : "-") << "\n"
-          res.body << s
-        }
-        res.body << "</PRE><HR>"
-
-        res.body << <<-_end_of_html_    
-    <ADDRESS>
-     #{HTMLUtils::escape(@config[:ServerSoftware])}<BR>
-     at #{req.host}:#{req.port}
-    </ADDRESS>
-  </BODY>
-</HTML>
-        _end_of_html_
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/prochandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/prochandler.rb
deleted file mode 100644
index 783cb27..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpservlet/prochandler.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# 
-# prochandler.rb -- ProcHandler Class
-#       
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#   
-# $IPR: prochandler.rb,v 1.7 2002/09/21 12:23:42 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract.rb'
-
-module WEBrick
-  module HTTPServlet
-
-    class ProcHandler < AbstractServlet
-      def get_instance(server, *options)
-        self
-      end  
-
-      def initialize(proc)
-        @proc = proc
-      end
-
-      def do_GET(request, response)
-        @proc.call(request, response)
-      end
-
-      alias do_POST do_GET
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpstatus.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpstatus.rb
deleted file mode 100644
index 0b22c99..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpstatus.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# httpstatus.rb -- HTTPStatus Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpstatus.rb,v 1.11 2003/03/24 20:18:55 gotoyuzo Exp $
-
-module WEBrick
-
-  module HTTPStatus
-
-    class Status      < StandardError; end
-    class Info        < Status; end
-    class Success     < Status; end
-    class Redirect    < Status; end
-    class Error       < Status; end
-    class ClientError < Error; end
-    class ServerError < Error; end
-    
-    class EOFError < StandardError; end
-
-    StatusMessage = {
-      100, 'Continue',
-      101, 'Switching Protocols',
-      200, 'OK',
-      201, 'Created',
-      202, 'Accepted',
-      203, 'Non-Authoritative Information',
-      204, 'No Content',
-      205, 'Reset Content',
-      206, 'Partial Content',
-      300, 'Multiple Choices',
-      301, 'Moved Permanently',
-      302, 'Found',
-      303, 'See Other',
-      304, 'Not Modified',
-      305, 'Use Proxy',
-      307, 'Temporary Redirect',
-      400, 'Bad Request',
-      401, 'Unauthorized',
-      402, 'Payment Required',
-      403, 'Forbidden',
-      404, 'Not Found',
-      405, 'Method Not Allowed',
-      406, 'Not Acceptable',
-      407, 'Proxy Authentication Required',
-      408, 'Request Timeout',
-      409, 'Conflict',
-      410, 'Gone',
-      411, 'Length Required',
-      412, 'Precondition Failed',
-      413, 'Request Entity Too Large',
-      414, 'Request-URI Too Large',
-      415, 'Unsupported Media Type',
-      416, 'Request Range Not Satisfiable',
-      417, 'Expectation Failed',
-      500, 'Internal Server Error',
-      501, 'Not Implemented',
-      502, 'Bad Gateway',
-      503, 'Service Unavailable',
-      504, 'Gateway Timeout',
-      505, 'HTTP Version Not Supported'
-    }
-
-    CodeToError = {}
-
-    StatusMessage.each{|code, message|
-      var_name = message.gsub(/[ \-]/,'_').upcase
-      err_name = message.gsub(/[ \-]/,'')
-
-      case code
-      when 100...200; parent = Info
-      when 200...300; parent = Success
-      when 300...400; parent = Redirect
-      when 400...500; parent = ClientError
-      when 500...600; parent = ServerError
-      end
-
-      eval %-
-        RC_#{var_name} = #{code}
-        class #{err_name} < #{parent}
-          def self.code() RC_#{var_name} end
-          def self.reason_phrase() StatusMessage[code] end
-          def code() self::class::code end 
-          def reason_phrase() self::class::reason_phrase end
-          alias to_i code
-        end
-      -
-
-      CodeToError[code] = const_get(err_name)
-    }
-
-    def reason_phrase(code)
-      StatusMessage[code.to_i]
-    end
-    def info?(code)
-      code.to_i >= 100 and code.to_i < 200
-    end
-    def success?(code)
-      code.to_i >= 200 and code.to_i < 300
-    end
-    def redirect?(code)
-      code.to_i >= 300 and code.to_i < 400
-    end
-    def error?(code)
-      code.to_i >= 400 and code.to_i < 600
-    end
-    def client_error?(code)
-      code.to_i >= 400 and code.to_i < 500
-    end
-    def server_error?(code)
-      code.to_i >= 500 and code.to_i < 600
-    end
-
-    def self.[](code)
-      CodeToError[code]
-    end
-
-    module_function :reason_phrase
-    module_function :info?, :success?, :redirect?, :error?
-    module_function :client_error?, :server_error?
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httputils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httputils.rb
deleted file mode 100644
index 976d3e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httputils.rb
+++ /dev/null
@@ -1,391 +0,0 @@
-#
-# httputils.rb -- HTTPUtils Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httputils.rb,v 1.34 2003/06/05 21:34:08 gotoyuzo Exp $
-
-require 'socket'
-require 'tempfile'
-
-module WEBrick
-  CR   = "\x0d"
-  LF   = "\x0a"
-  CRLF = "\x0d\x0a"
-
-  module HTTPUtils
-
-    def normalize_path(path)
-      raise "abnormal path `#{path}'" if path[0] != ?/
-      ret = path.dup
-
-      ret.gsub!(%r{/+}o, '/')                    # //      => /
-      while ret.sub!(%r'/\.(?:/|\Z)', '/'); end  # /.      => /
-      while ret.sub!(%r'/(?!\.\./)[^/]+/\.\.(?:/|\Z)', '/'); end # /foo/.. => /foo
-
-      raise "abnormal path `#{path}'" if %r{/\.\.(/|\Z)} =~ ret
-      ret
-    end
-    module_function :normalize_path
-
-    #####
-
-    DefaultMimeTypes = {
-      "ai"    => "application/postscript",
-      "asc"   => "text/plain",
-      "avi"   => "video/x-msvideo",
-      "bin"   => "application/octet-stream",
-      "bmp"   => "image/bmp",
-      "class" => "application/octet-stream",
-      "cer"   => "application/pkix-cert",
-      "crl"   => "application/pkix-crl",
-      "crt"   => "application/x-x509-ca-cert",
-     #"crl"   => "application/x-pkcs7-crl",
-      "css"   => "text/css",
-      "dms"   => "application/octet-stream",
-      "doc"   => "application/msword",
-      "dvi"   => "application/x-dvi",
-      "eps"   => "application/postscript",
-      "etx"   => "text/x-setext",
-      "exe"   => "application/octet-stream",
-      "gif"   => "image/gif",
-      "htm"   => "text/html",
-      "html"  => "text/html",
-      "jpe"   => "image/jpeg",
-      "jpeg"  => "image/jpeg",
-      "jpg"   => "image/jpeg",
-      "lha"   => "application/octet-stream",
-      "lzh"   => "application/octet-stream",
-      "mov"   => "video/quicktime",
-      "mpe"   => "video/mpeg",
-      "mpeg"  => "video/mpeg",
-      "mpg"   => "video/mpeg",
-      "pbm"   => "image/x-portable-bitmap",
-      "pdf"   => "application/pdf",
-      "pgm"   => "image/x-portable-graymap",
-      "png"   => "image/png",
-      "pnm"   => "image/x-portable-anymap",
-      "ppm"   => "image/x-portable-pixmap",
-      "ppt"   => "application/vnd.ms-powerpoint",
-      "ps"    => "application/postscript",
-      "qt"    => "video/quicktime",
-      "ras"   => "image/x-cmu-raster",
-      "rb"    => "text/plain",
-      "rd"    => "text/plain",
-      "rtf"   => "application/rtf",
-      "sgm"   => "text/sgml",
-      "sgml"  => "text/sgml",
-      "tif"   => "image/tiff",
-      "tiff"  => "image/tiff",
-      "txt"   => "text/plain",
-      "xbm"   => "image/x-xbitmap",
-      "xls"   => "application/vnd.ms-excel",
-      "xml"   => "text/xml",
-      "xpm"   => "image/x-xpixmap",
-      "xwd"   => "image/x-xwindowdump",
-      "zip"   => "application/zip",
-    }
-
-    # Load Apache compatible mime.types file.
-    def load_mime_types(file)
-      open(file){ |io|
-        hash = Hash.new
-        io.each{ |line|
-          next if /^#/ =~ line
-          line.chomp!
-          mimetype, ext0 = line.split(/\s+/, 2)
-          next unless ext0   
-          next if ext0.empty?
-          ext0.split(/\s+/).each{ |ext| hash[ext] = mimetype }
-        }
-        hash
-      }
-    end
-    module_function :load_mime_types
-
-    def mime_type(filename, mime_tab)
-      suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase)
-      suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase)
-      mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream"
-    end
-    module_function :mime_type
-
-    #####
-
-    def parse_header(raw)
-      header = Hash.new([].freeze)
-      field = nil
-      raw.each{|line|
-        case line
-        when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om
-          field, value = $1, $2
-          field.downcase!
-          header[field] = [] unless header.has_key?(field)
-          header[field] << value
-        when /^\s+(.*?)\s*\z/om
-          value = $1
-          unless field
-            raise "bad header '#{line.inspect}'."
-          end
-          header[field][-1] << " " << value
-        else
-          raise "bad header '#{line.inspect}'."
-        end
-      }
-      header.each{|key, values|
-        values.each{|value|
-          value.strip!
-          value.gsub!(/\s+/, " ")
-        }
-      }
-      header
-    end
-    module_function :parse_header
-
-    def split_header_value(str)
-      str.scan(%r'\G((?:"(?:\\.|[^"])+?"|[^",]+)+)
-                    (?:,\s*|\Z)'xn).flatten
-    end
-    module_function :split_header_value
-
-    def parse_range_header(ranges_specifier)
-      if /^bytes=(.*)/ =~ ranges_specifier
-        byte_range_set = split_header_value($1)
-        byte_range_set.collect{|range_spec|
-          case range_spec
-          when /^(\d+)-(\d+)/ then $1.to_i .. $2.to_i
-          when /^(\d+)-/      then $1.to_i .. -1
-          when /^-(\d+)/      then -($1.to_i) .. -1
-          else return nil
-          end
-        }
-      end
-    end
-    module_function :parse_range_header
-
-    def parse_qvalues(value)
-      tmp = []
-      if value
-        parts = value.split(/,\s*/)
-        parts.each {|part|
-          if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
-            val = m[1]
-            q = (m[2] or 1).to_f
-            tmp.push([val, q])
-          end
-        }
-        tmp = tmp.sort_by{|val, q| -q}
-        tmp.collect!{|val, q| val}
-      end
-      return tmp
-    end
-    module_function :parse_qvalues
-
-    #####
-
-    def dequote(str)
-      ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup
-      ret.gsub!(/\\(.)/, "\\1")
-      ret
-    end
-    module_function :dequote
-
-    def quote(str)
-      '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
-    end
-    module_function :quote
-
-    #####
-
-    class FormData < String
-      EmptyRawHeader = [].freeze
-      EmptyHeader = {}.freeze
-
-      attr_accessor :name, :filename, :next_data
-      protected :next_data
-
-      def initialize(*args)
-        @name = @filename = @next_data = nil
-        if args.empty?
-          @raw_header = []
-          @header = nil
-          super("")
-        else
-          @raw_header = EmptyRawHeader
-          @header = EmptyHeader 
-          super(args.shift)
-          unless args.empty?
-            @next_data = self.class.new(*args)
-          end
-        end
-      end
-
-      def [](*key)
-        begin
-          @header[key[0].downcase].join(", ")
-        rescue StandardError, NameError
-          super
-        end
-      end
-
-      def <<(str)
-        if @header
-          super
-        elsif str == CRLF
-          @header = HTTPUtils::parse_header(@raw_header)
-          if cd = self['content-disposition']
-            if /\s+name="(.*?)"/ =~ cd then @name = $1 end
-            if /\s+filename="(.*?)"/ =~ cd then @filename = $1 end
-          end
-        else
-          @raw_header << str
-        end
-        self
-      end
-
-      def append_data(data)
-        tmp = self
-        while tmp
-          unless tmp.next_data 
-            tmp.next_data = data
-            break
-          end
-          tmp = tmp.next_data
-        end
-        self
-      end
-
-      def each_data
-        tmp = self
-        while tmp
-          next_data = tmp.next_data
-          yield(tmp)
-          tmp = next_data
-        end
-      end
-
-      def list
-        ret = []
-        each_data{|data|
-          ret << data.to_s
-        }
-        ret
-      end
-
-      alias :to_ary :list
-
-      def to_s
-        String.new(self)
-      end
-    end
-
-    def parse_query(str)
-      query = Hash.new
-      if str
-        str.split(/[&;]/).each{|x|
-          next if x.empty? 
-          key, val = x.split(/=/,2)
-          key = unescape_form(key)
-          val = unescape_form(val.to_s)
-          val = FormData.new(val)
-          val.name = key
-          if query.has_key?(key)
-            query[key].append_data(val)
-            next
-          end
-          query[key] = val
-        }
-      end
-      query
-    end
-    module_function :parse_query
-
-    def parse_form_data(io, boundary)
-      boundary_regexp = /\A--#{boundary}(--)?#{CRLF}\z/
-      form_data = Hash.new
-      return form_data unless io
-      data = nil
-      io.each{|line|
-        if boundary_regexp =~ line
-          if data
-            data.chop!
-            key = data.name
-            if form_data.has_key?(key)
-              form_data[key].append_data(data)
-            else
-              form_data[key] = data 
-            end
-          end
-          data = FormData.new
-          next
-        else
-          if data
-            data << line
-          end
-        end
-      }
-      return form_data
-    end
-    module_function :parse_form_data
-
-    #####
-
-    reserved = ';/?:@&=+$,'
-    num      = '0123456789'
-    lowalpha = 'abcdefghijklmnopqrstuvwxyz'
-    upalpha  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-    mark     = '-_.!~*\'()'
-    unreserved = num + lowalpha + upalpha + mark
-    control  = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f"
-    space    = " "
-    delims   = '<>#%"'
-    unwise   = '{}|\\^[]`'
-    nonascii = (0x80..0xff).collect{|c| c.chr }.join
-
-    module_function
-
-    def _make_regex(str) /([#{Regexp.escape(str)}])/n end
-    def _make_regex!(str) /([^#{Regexp.escape(str)}])/n end
-    def _escape(str, regex) str.gsub(regex){ "%%%02X" % $1[0] } end
-    def _unescape(str, regex) str.gsub(regex){ $1.hex.chr } end
-
-    UNESCAPED = _make_regex(control+space+delims+unwise+nonascii)
-    UNESCAPED_FORM = _make_regex(reserved+control+delims+unwise+nonascii)
-    NONASCII  = _make_regex(nonascii)
-    ESCAPED   = /%([0-9a-fA-F]{2})/
-    UNESCAPED_PCHAR = _make_regex!(unreserved+":@&=+$,")
-
-    def escape(str)
-      _escape(str, UNESCAPED)
-    end
-
-    def unescape(str)
-      _unescape(str, ESCAPED)
-    end
-
-    def escape_form(str)
-      ret = _escape(str, UNESCAPED_FORM)
-      ret.gsub!(/ /, "+")
-      ret
-    end
-
-    def unescape_form(str)
-      _unescape(str.gsub(/\+/, " "), ESCAPED)
-    end
-
-    def escape_path(str)
-      result = ""
-      str.scan(%r{/([^/]*)}).each{|i|
-        result << "/" << _escape(i[0], UNESCAPED_PCHAR)
-      }
-      return result
-    end
-
-    def escape8bit(str)
-      _escape(str, NONASCII)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpversion.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpversion.rb
deleted file mode 100644
index 86907a2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/httpversion.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# HTTPVersion.rb -- presentation of HTTP version
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $
-
-module WEBrick
-  class HTTPVersion
-    include Comparable
-
-    attr_accessor :major, :minor
-
-    def self.convert(version)
-      version.is_a?(self) ? version : new(version)
-    end
-
-    def initialize(version)
-      case version
-      when HTTPVersion
-        @major, @minor = version.major, version.minor
-      when String
-        if /^(\d+)\.(\d+)$/ =~ version
-          @major, @minor = $1.to_i, $2.to_i
-        end
-      end
-      if @major.nil? || @minor.nil?
-        raise ArgumentError,
-          format("cannot convert %s into %s", version.class, self.class)
-      end
-    end
-
-    def <=>(other)
-      unless other.is_a?(self.class)
-        other = self.class.new(other)
-      end
-      if (ret = @major <=> other.major) == 0
-        return @minor <=> other.minor
-      end
-      return ret
-    end
-
-    def to_s
-      format("%d.%d", @major, @minor)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/log.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/log.rb
deleted file mode 100644
index 5d4fd0a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/log.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# log.rb -- Log Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: log.rb,v 1.26 2002/10/06 17:06:10 gotoyuzo Exp $
-
-module WEBrick
-  class BasicLog
-    # log-level constant
-    FATAL, ERROR, WARN, INFO, DEBUG = 1, 2, 3, 4, 5
-
-    attr_accessor :level
-
-    def initialize(log_file=nil, level=nil)
-      @level = level || INFO
-      case log_file
-      when String
-        @log = open(log_file, "a+")
-        @log.sync = true
-        @opened = true
-      when NilClass
-        @log = $stderr
-      else
-        @log = log_file  # requires "<<". (see BasicLog#log)
-      end
-    end
-
-    def close
-      @log.close if @opened
-      @log = nil
-    end
-
-    def log(level, data)
-      if @log && level <= @level
-        data += "\n" if /\n\Z/ !~ data
-        @log << data
-      end
-    end
-
-    def <<(obj)
-      log(INFO, obj.to_s)
-    end
-
-    def fatal(msg) log(FATAL, "FATAL " << format(msg)); end
-    def error(msg) log(ERROR, "ERROR " << format(msg)); end
-    def warn(msg)  log(WARN,  "WARN  " << format(msg)); end
-    def info(msg)  log(INFO,  "INFO  " << format(msg)); end
-    def debug(msg) log(DEBUG, "DEBUG " << format(msg)); end
-
-    def fatal?; @level >= FATAL; end
-    def error?; @level >= ERROR; end
-    def warn?;  @level >= WARN; end
-    def info?;  @level >= INFO; end
-    def debug?; @level >= DEBUG; end
-
-    private
-
-    def format(arg)
-      str = if arg.is_a?(Exception)
-        "#{arg.class}: #{arg.message}\n\t" <<
-        arg.backtrace.join("\n\t") << "\n"
-      elsif arg.respond_to?(:to_str)
-        arg.to_str
-      else
-        arg.inspect
-      end
-    end
-  end
-
-  class Log < BasicLog
-    attr_accessor :time_format 
-
-    def initialize(log_file=nil, level=nil)
-      super(log_file, level)
-      @time_format = "[%Y-%m-%d %H:%M:%S]"
-    end
-
-    def log(level, data)
-      tmp = Time.now.strftime(@time_format)
-      tmp << " " << data
-      super(level, tmp)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/server.rb
deleted file mode 100644
index 16dbd46..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/server.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-#
-# server.rb -- GenericServer Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: server.rb,v 1.62 2003/07/22 19:20:43 gotoyuzo Exp $
-
-require 'thread'
-require 'socket'
-require 'timeout'
-require 'webrick/config'
-require 'webrick/log'
-
-module WEBrick
-
-  class ServerError < StandardError; end
-
-  class SimpleServer
-    def SimpleServer.start
-      yield
-    end
-  end
-
-  class Daemon
-    def Daemon.start
-      exit!(0) if fork
-      Process::setsid
-      exit!(0) if fork
-      Dir::chdir("/")
-      File::umask(0)
-      STDIN.reopen("/dev/null")
-      STDOUT.reopen("/dev/null", "w")
-      STDERR.reopen("/dev/null", "w")
-      yield if block_given?
-    end
-  end
-
-  class GenericServer
-    attr_reader :status, :config, :logger, :tokens, :listeners
-
-    def initialize(config={}, default=Config::General)
-      @config = default.dup.update(config)
-      @status = :Stop
-      @config[:Logger] ||= Log::new
-      @logger = @config[:Logger]
-
-      @tokens = SizedQueue.new(@config[:MaxClients])
-      @config[:MaxClients].times{ @tokens.push(nil) }
-
-      webrickv = WEBrick::VERSION
-      rubyv = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
-      @logger.info("WEBrick #{webrickv}")
-      @logger.info("ruby #{rubyv}")
-
-      @listeners = []
-      unless @config[:DoNotListen]
-        if @config[:Listen]
-          warn(":Listen option is deprecated; use GenericServer#listen")
-        end
-        listen(@config[:BindAddress], @config[:Port])
-        if @config[:Port] == 0
-          @config[:Port] = @listeners[0].addr[1]
-        end
-      end
-    end
-
-    def [](key)
-      @config[key]
-    end
-
-    def listen(address, port)
-      @listeners += Utils::create_listeners(address, port, @logger)
-    end
-
-    def start(&block)
-      raise ServerError, "already started." if @status != :Stop
-      server_type = @config[:ServerType] || SimpleServer
-
-      server_type.start{
-        @logger.info \
-          "#{self.class}#start: pid=#{$$} port=#{@config[:Port]}"
-        call_callback(:StartCallback)
-
-        thgroup = ThreadGroup.new
-        @status = :Running
-        while @status == :Running
-          begin
-            if svrs = IO.select(@listeners, nil, nil, 2.0)
-              svrs[0].each{|svr|
-                @tokens.pop          # blocks while no token is there.
-                if sock = accept_client(svr)
-                  th = start_thread(sock, &block)
-                  th[:WEBrickThread] = true
-                  thgroup.add(th)
-                else
-                  @tokens.push(nil)
-                end
-              }
-            end
-          rescue Errno::EBADF, IOError => ex
-            # if the listening socket was closed in GenericServer#shutdown,
-            # IO::select raise it.
-          rescue Exception => ex
-            msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-            @logger.error msg
-          end
-        end
-
-        @logger.info "going to shutdown ..."
-        thgroup.list.each{|th| th.join if th[:WEBrickThread] }
-        call_callback(:StopCallback)
-        @logger.info "#{self.class}#start done."
-        @status = :Stop
-      }
-    end
-
-    def stop
-      if @status == :Running
-        @status = :Shutdown
-      end
-    end
-
-    def shutdown
-      stop
-      @listeners.each{|s|
-        if @logger.debug?
-          addr = s.addr
-          @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})")
-        end
-        s.close
-      }
-      @listeners.clear
-    end
-
-    def run(sock)
-      @logger.fatal "run() must be provided by user."
-    end
-
-    private
-
-    def accept_client(svr)
-      sock = nil
-      begin
-        sock = svr.accept
-        sock.sync = true
-        Utils::set_non_blocking(sock)
-        Utils::set_close_on_exec(sock)
-      rescue Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPROTO => ex
-        # TCP connection was established but RST segment was sent
-        # from peer before calling TCPServer#accept.
-      rescue Exception => ex
-        msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-        @logger.error msg
-      end
-      return sock
-    end
-
-    def start_thread(sock, &block)
-      Thread.start{
-        begin
-          Thread.current[:WEBrickSocket] = sock
-          begin
-            addr = sock.peeraddr
-            @logger.debug "accept: #{addr[3]}:#{addr[1]}"
-          rescue SocketError
-            @logger.debug "accept: <address unknown>"
-            raise
-          end
-          call_callback(:AcceptCallback, sock)
-          block ? block.call(sock) : run(sock)
-        rescue Errno::ENOTCONN
-          @logger.debug "Errno::ENOTCONN raised"
-        rescue ServerError => ex
-          msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-          @logger.error msg
-        rescue Exception => ex
-          @logger.error ex
-        ensure
-          @tokens.push(nil)
-          Thread.current[:WEBrickSocket] = nil
-          if addr
-            @logger.debug "close: #{addr[3]}:#{addr[1]}"
-          else
-            @logger.debug "close: <address unknown>"
-          end
-          sock.close
-        end
-      }
-    end
-
-    def call_callback(callback_name, *args)
-      if cb = @config[callback_name]
-        cb.call(*args)
-      end
-    end
-  end    # end of GenericServer
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/ssl.rb
deleted file mode 100644
index 4c71c87..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/ssl.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# ssl.rb -- SSL/TLS enhancement for GenericServer
-#
-# Copyright (c) 2003 GOTOU Yuuzou All rights reserved.
-# 
-# $Id: ssl.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'webrick'
-require 'openssl'
-
-module WEBrick
-  module Config
-    svrsoft = General[:ServerSoftware]
-    osslv = ::OpenSSL::OPENSSL_VERSION.split[1]
-    SSL = {
-      :ServerSoftware       => "#{svrsoft} OpenSSL/#{osslv}",
-      :SSLEnable            => false,
-      :SSLCertificate       => nil,
-      :SSLPrivateKey        => nil,
-      :SSLClientCA          => nil,
-      :SSLExtraChainCert    => nil,
-      :SSLCACertificateFile => nil,
-      :SSLCACertificatePath => nil,
-      :SSLCertificateStore  => nil,
-      :SSLVerifyClient      => ::OpenSSL::SSL::VERIFY_NONE,
-      :SSLVerifyDepth       => nil,
-      :SSLVerifyCallback    => nil,   # custom verification
-      :SSLTimeout           => nil,
-      :SSLOptions           => nil,
-      :SSLStartImmediately  => true,
-      # Must specify if you use auto generated certificate.
-      :SSLCertName          => nil,
-      :SSLCertComment       => "Generated by Ruby/OpenSSL"
-    }
-    General.update(SSL)
-  end
-
-  module Utils
-    def create_self_signed_cert(bits, cn, comment)
-      rsa = OpenSSL::PKey::RSA.new(bits){|p, n|
-        case p
-        when 0; $stderr.putc "."  # BN_generate_prime
-        when 1; $stderr.putc "+"  # BN_generate_prime
-        when 2; $stderr.putc "*"  # searching good prime,  
-                                  # n = #of try,
-                                  # but also data from BN_generate_prime
-        when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
-                                  # but also data from BN_generate_prime
-        else;   $stderr.putc "*"  # BN_generate_prime
-        end
-      }
-      cert = OpenSSL::X509::Certificate.new
-      cert.version = 3
-      cert.serial = 0
-      name = OpenSSL::X509::Name.new(cn)
-      cert.subject = name
-      cert.issuer = name
-      cert.not_before = Time.now
-      cert.not_after = Time.now + (365*24*60*60)
-      cert.public_key = rsa.public_key
-
-      ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
-      ef.issuer_certificate = cert
-      cert.extensions = [
-        ef.create_extension("basicConstraints","CA:FALSE"),
-        ef.create_extension("keyUsage", "keyEncipherment"),
-        ef.create_extension("subjectKeyIdentifier", "hash"),
-        ef.create_extension("extendedKeyUsage", "serverAuth"),
-        ef.create_extension("nsComment", comment),
-      ]
-      aki = ef.create_extension("authorityKeyIdentifier",
-                                "keyid:always,issuer:always")
-      cert.add_extension(aki)
-      cert.sign(rsa, OpenSSL::Digest::SHA1.new)
-
-      return [ cert, rsa ]
-    end
-    module_function :create_self_signed_cert
-  end
-
-  class GenericServer
-    def ssl_context
-      @ssl_context ||= nil
-    end
-
-    def listen(address, port)
-      listeners = Utils::create_listeners(address, port, @logger)
-      if @config[:SSLEnable]
-        unless ssl_context
-          @ssl_context = setup_ssl_context(@config)
-          @logger.info("\n" + @config[:SSLCertificate].to_text) 
-        end
-        listeners.collect!{|svr|
-          ssvr = ::OpenSSL::SSL::SSLServer.new(svr, ssl_context)
-          ssvr.start_immediately = @config[:SSLStartImmediately]
-          ssvr
-        }
-      end
-      @listeners += listeners
-    end
-
-    def setup_ssl_context(config)
-      unless config[:SSLCertificate]
-        cn = config[:SSLCertName]
-        comment = config[:SSLCertComment]
-        cert, key = Utils::create_self_signed_cert(1024, cn, comment)
-        config[:SSLCertificate] = cert
-        config[:SSLPrivateKey] = key
-      end
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.key = config[:SSLPrivateKey]
-      ctx.cert = config[:SSLCertificate]
-      ctx.client_ca = config[:SSLClientCA]
-      ctx.extra_chain_cert = config[:SSLExtraChainCert]
-      ctx.ca_file = config[:SSLCACertificateFile]
-      ctx.ca_path = config[:SSLCACertificatePath]
-      ctx.cert_store = config[:SSLCertificateStore]
-      ctx.verify_mode = config[:SSLVerifyClient]
-      ctx.verify_depth = config[:SSLVerifyDepth]
-      ctx.verify_callback = config[:SSLVerifyCallback]
-      ctx.timeout = config[:SSLTimeout]
-      ctx.options = config[:SSLOptions]
-      ctx
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/utils.rb
deleted file mode 100644
index cf9da6f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/utils.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# utils.rb -- Miscellaneous utilities
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $
-
-require 'socket'
-require 'fcntl'
-begin
-  require 'etc'
-rescue LoadError
-  nil
-end
-
-module WEBrick
-  module Utils
-    def set_non_blocking(io)
-      flag = File::NONBLOCK
-      if defined?(Fcntl::F_GETFL)
-        flag |= io.fcntl(Fcntl::F_GETFL)
-      end
-      io.fcntl(Fcntl::F_SETFL, flag)
-    end
-    module_function :set_non_blocking
-
-    def set_close_on_exec(io)
-      if defined?(Fcntl::FD_CLOEXEC)
-        io.fcntl(Fcntl::FD_CLOEXEC, 1)
-      end
-    end
-    module_function :set_close_on_exec
-
-    def su(user)
-      if defined?(Etc)
-        pw = Etc.getpwnam(user)
-        Process::initgroups(user, pw.gid)
-        Process::Sys::setgid(pw.gid)
-        Process::Sys::setuid(pw.uid)
-      else
-        warn("WEBrick::Utils::su doesn't work on this platform")
-      end
-    end
-    module_function :su
-
-    def getservername
-      host = Socket::gethostname
-      begin
-        Socket::gethostbyname(host)[0]
-      rescue
-        host
-      end
-    end
-    module_function :getservername
-
-    def create_listeners(address, port, logger=nil)
-      unless port
-        raise ArgumentError, "must specify port"
-      end
-      res = Socket::getaddrinfo(address, port,
-                                Socket::AF_UNSPEC,   # address family
-                                Socket::SOCK_STREAM, # socket type
-                                0,                   # protocol
-                                Socket::AI_PASSIVE)  # flag
-      last_error = nil
-      sockets = []
-      res.each{|ai|
-        begin
-          logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
-          sock = TCPServer.new(ai[3], port)
-          port = sock.addr[1] if port == 0
-          Utils::set_close_on_exec(sock)
-          sockets << sock
-        rescue => ex
-          logger.warn("TCPServer Error: #{ex}") if logger
-          last_error  = ex
-        end
-      }
-      raise last_error if sockets.empty?
-      return sockets
-    end
-    module_function :create_listeners
-
-    RAND_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
-                 "0123456789" +
-                 "abcdefghijklmnopqrstuvwxyz" 
-
-    def random_string(len)
-      rand_max = RAND_CHARS.size
-      ret = "" 
-      len.times{ ret << RAND_CHARS[rand(rand_max)] }
-      ret 
-    end
-    module_function :random_string
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/version.rb
deleted file mode 100644
index b2b9fd3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/webrick/version.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# version.rb -- version and release date
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: version.rb,v 1.74 2003/07/22 19:20:43 gotoyuzo Exp $
-
-module WEBrick
-  VERSION      = "1.3.1"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/binding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/binding.rb
deleted file mode 100644
index 58a21d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/binding.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - WSDL binding definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Binding < Info
-  attr_reader :name		# required
-  attr_reader :type		# required
-  attr_reader :operations
-  attr_reader :soapbinding
-
-  def initialize
-    super
-    @name = nil
-    @type = nil
-    @operations = XSD::NamedElements.new
-    @soapbinding = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when OperationName
-      o = OperationBinding.new
-      @operations << o
-      o
-    when SOAPBindingName
-      o = WSDL::SOAP::Binding.new
-      @soapbinding = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TypeAttrName
-      @type = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/data.rb
deleted file mode 100644
index 45eaad8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/data.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-# WSDL4R - WSDL data definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'wsdl/documentation'
-require 'wsdl/definitions'
-require 'wsdl/types'
-require 'wsdl/message'
-require 'wsdl/part'
-require 'wsdl/portType'
-require 'wsdl/operation'
-require 'wsdl/param'
-require 'wsdl/binding'
-require 'wsdl/operationBinding'
-require 'wsdl/service'
-require 'wsdl/port'
-require 'wsdl/import'
-
-
-module WSDL
-
-
-ArrayTypeAttrName = XSD::QName.new(Namespace, 'arrayType')
-BindingName = XSD::QName.new(Namespace, 'binding')
-DefinitionsName = XSD::QName.new(Namespace, 'definitions')
-DocumentationName = XSD::QName.new(Namespace, 'documentation')
-FaultName = XSD::QName.new(Namespace, 'fault')
-ImportName = XSD::QName.new(Namespace, 'import')
-InputName = XSD::QName.new(Namespace, 'input')
-MessageName = XSD::QName.new(Namespace, 'message')
-OperationName = XSD::QName.new(Namespace, 'operation')
-OutputName = XSD::QName.new(Namespace, 'output')
-PartName = XSD::QName.new(Namespace, 'part')
-PortName = XSD::QName.new(Namespace, 'port')
-PortTypeName = XSD::QName.new(Namespace, 'portType')
-ServiceName = XSD::QName.new(Namespace, 'service')
-TypesName = XSD::QName.new(Namespace, 'types')
-
-SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
-
-SOAPAddressName = XSD::QName.new(SOAPBindingNamespace, 'address')
-SOAPBindingName = XSD::QName.new(SOAPBindingNamespace, 'binding')
-SOAPHeaderName = XSD::QName.new(SOAPBindingNamespace, 'header')
-SOAPBodyName = XSD::QName.new(SOAPBindingNamespace, 'body')
-SOAPFaultName = XSD::QName.new(SOAPBindingNamespace, 'fault')
-SOAPOperationName = XSD::QName.new(SOAPBindingNamespace, 'operation')
-
-BindingAttrName = XSD::QName.new(nil, 'binding')
-ElementAttrName = XSD::QName.new(nil, 'element')
-LocationAttrName = XSD::QName.new(nil, 'location')
-MessageAttrName = XSD::QName.new(nil, 'message')
-NameAttrName = XSD::QName.new(nil, 'name')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-ParameterOrderAttrName = XSD::QName.new(nil, 'parameterOrder')
-TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
-TypeAttrName = XSD::QName.new(nil, 'type')
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/definitions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/definitions.rb
deleted file mode 100644
index 5235037..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/definitions.rb
+++ /dev/null
@@ -1,250 +0,0 @@
-# WSDL4R - WSDL definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Definitions < Info
-  attr_reader :name
-  attr_reader :targetnamespace
-  attr_reader :imports
-
-  attr_accessor :location
-  attr_reader :importedschema
-
-  def initialize
-    super
-    @name = nil
-    @targetnamespace = nil
-    @location = nil
-    @importedschema = {}
-
-    @types = nil
-    @imports = []
-    @messages = XSD::NamedElements.new
-    @porttypes = XSD::NamedElements.new
-    @bindings = XSD::NamedElements.new
-    @services = XSD::NamedElements.new
-
-    @anontypes = XSD::NamedElements.new
-    @root = self
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__, @name || '(unnamed)')
-  end
-
-  def targetnamespace=(targetnamespace)
-    @targetnamespace = targetnamespace
-    if @name
-      @name = XSD::QName.new(@targetnamespace, @name.name)
-    end
-  end
-
-  def collect_attributes
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_attributes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_attributes)
-    end
-    result
-  end
-
-  def collect_elements
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_elements)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_elements)
-    end
-    result
-  end
-
-  def collect_complextypes
-    result = @anontypes.dup
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_complextypes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_complextypes)
-    end
-    result
-  end
-
-  def collect_simpletypes
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_simpletypes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_simpletypes)
-    end
-    result
-  end
-
-  # ToDo: simpletype must be accepted...
-  def add_type(complextype)
-    @anontypes << complextype
-  end
-
-  def messages
-    result = @messages.dup
-    @imports.each do |import|
-      result.concat(import.content.messages) if self.class === import.content
-    end
-    result
-  end
-
-  def porttypes
-    result = @porttypes.dup
-    @imports.each do |import|
-      result.concat(import.content.porttypes) if self.class === import.content
-    end
-    result
-  end
-
-  def bindings
-    result = @bindings.dup
-    @imports.each do |import|
-      result.concat(import.content.bindings) if self.class === import.content
-    end
-    result
-  end
-
-  def services
-    result = @services.dup
-    @imports.each do |import|
-      result.concat(import.content.services) if self.class === import.content
-    end
-    result
-  end
-
-  def message(name)
-    message = @messages[name]
-    return message if message
-    @imports.each do |import|
-      message = import.content.message(name) if self.class === import.content
-      return message if message
-    end
-    nil
-  end
-
-  def porttype(name)
-    porttype = @porttypes[name]
-    return porttype if porttype
-    @imports.each do |import|
-      porttype = import.content.porttype(name) if self.class === import.content
-      return porttype if porttype
-    end
-    nil
-  end
-
-  def binding(name)
-    binding = @bindings[name]
-    return binding if binding
-    @imports.each do |import|
-      binding = import.content.binding(name) if self.class === import.content
-      return binding if binding
-    end
-    nil
-  end
-
-  def service(name)
-    service = @services[name]
-    return service if service
-    @imports.each do |import|
-      service = import.content.service(name) if self.class === import.content
-      return service if service
-    end
-    nil
-  end
-
-  def porttype_binding(name)
-    binding = @bindings.find { |item| item.type == name }
-    return binding if binding
-    @imports.each do |import|
-      binding = import.content.porttype_binding(name) if self.class === import.content
-      return binding if binding
-    end
-    nil
-  end
-
-  def parse_element(element)
-    case element
-    when ImportName
-      o = Import.new
-      @imports << o
-      o
-    when TypesName
-      o = Types.new
-      @types = o
-      o
-    when MessageName
-      o = Message.new
-      @messages << o
-      o
-    when PortTypeName
-      o = PortType.new
-      @porttypes << o
-      o
-    when BindingName
-      o = Binding.new
-      @bindings << o
-      o
-    when ServiceName
-      o = Service.new
-      @services << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TargetNamespaceAttrName
-      self.targetnamespace = value.source
-    else
-      nil
-    end
-  end
-
-  def self.parse_element(element)
-    if element == DefinitionsName
-      Definitions.new
-    else
-      nil
-    end
-  end
-
-private
-
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/documentation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/documentation.rb
deleted file mode 100644
index 3a7fd7d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/documentation.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# WSDL4R - WSDL SOAP documentation element.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Documentation < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/import.rb
deleted file mode 100644
index faf6087..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/import.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# WSDL4R - WSDL import definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/importer'
-
-
-module WSDL
-
-
-class Import < Info
-  attr_reader :namespace
-  attr_reader :location
-  attr_reader :content
-
-  def initialize
-    super
-    @namespace = nil
-    @location = nil
-    @content = nil
-    @web_client = nil
-  end
-
-  def parse_element(element)
-    case element
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NamespaceAttrName
-      @namespace = value.source
-      if @content
-	@content.targetnamespace = @namespace
-      end
-      @namespace
-    when LocationAttrName
-      @location = URI.parse(value.source)
-      if @location.relative? and !parent.location.nil? and
-          !parent.location.relative?
-        @location = parent.location + @location
-      end
-      if root.importedschema.key?(@location)
-        @content = root.importedschema[@location]
-      else
-        root.importedschema[@location] = nil      # placeholder
-        @content = import(@location)
-        if @content.is_a?(Definitions)
-          @content.root = root
-          if @namespace
-            @content.targetnamespace = @namespace
-          end
-        end
-        root.importedschema[@location] = @content
-      end
-      @location
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location, root)
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/importer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/importer.rb
deleted file mode 100644
index 481bd81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/importer.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# WSDL4R - WSDL importer library.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/importer'
-require 'wsdl/parser'
-
-
-module WSDL
-
-
-class Importer < WSDL::XMLSchema::Importer
-  def self.import(location, originalroot = nil)
-    new.import(location, originalroot)
-  end
-
-private
-
-  def parse(content, location, originalroot)
-    opt = {
-      :location => location,
-      :originalroot => originalroot
-    }
-    begin
-      WSDL::Parser.new(opt).parse(content)
-    rescue WSDL::Parser::ParseError
-      super(content, location, originalroot)
-    end
-  end
-
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/info.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/info.rb
deleted file mode 100644
index ffd9039..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/info.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# WSDL4R - WSDL information base.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module WSDL
-
-
-class Info
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :id
-
-  def initialize
-    @root = nil
-    @parent = nil
-    @id = nil
-  end
-
-  def inspect
-    if self.respond_to?(:name)
-      sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.name)
-    else
-      sprintf("#<%s:0x%x>", self.class.name, __id__)
-    end
-  end
-
-  def parse_element(element); end	# abstract
-  
-  def parse_attr(attr, value); end	# abstract
-
-  def parse_epilogue; end		# abstract
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/message.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/message.rb
deleted file mode 100644
index cecc602..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/message.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - WSDL message definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Message < Info
-  attr_reader :name	# required
-  attr_reader :parts
-
-  def initialize
-    super
-    @name = nil
-    @parts = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when PartName
-      o = Part.new
-      @parts << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(parent.targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operation.rb
deleted file mode 100644
index fb7f4a8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operation.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-# WSDL4R - WSDL operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Operation < Info
-  class NameInfo
-    attr_reader :op_name
-    attr_reader :optype_name
-    attr_reader :parts
-    def initialize(op_name, optype_name, parts)
-      @op_name = op_name
-      @optype_name = optype_name
-      @parts = parts
-    end
-  end
-
-  attr_reader :name		# required
-  attr_reader :parameter_order	# optional
-  attr_reader :input
-  attr_reader :output
-  attr_reader :fault
-  attr_reader :type		# required
-
-  def initialize
-    super
-    @name = nil
-    @type = nil
-    @parameter_order = nil
-    @input = nil
-    @output = nil
-    @fault = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def input_info
-    typename = input.find_message.name
-    NameInfo.new(@name, typename, inputparts)
-  end
-
-  def output_info
-    typename = output.find_message.name
-    NameInfo.new(@name, typename, outputparts)
-  end
-
-  def inputparts
-    sort_parts(input.find_message.parts)
-  end
-
-  def inputname
-    XSD::QName.new(targetnamespace, input.name ? input.name.name : @name.name)
-  end
-
-  def outputparts
-    sort_parts(output.find_message.parts)
-  end
-
-  def outputname
-    XSD::QName.new(targetnamespace,
-      output.name ? output.name.name : @name.name + 'Response')
-  end
-
-  def parse_element(element)
-    case element
-    when InputName
-      o = Param.new
-      @input = o
-      o
-    when OutputName
-      o = Param.new
-      @output = o
-      o
-    when FaultName
-      o = Param.new
-      @fault << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TypeAttrName
-      @type = value
-    when ParameterOrderAttrName
-      @parameter_order = value.source.split(/\s+/)
-    else
-      nil
-    end
-  end
-
-private
-
-  def sort_parts(parts)
-    return parts.dup unless parameter_order
-    result = []
-    parameter_order.each do |orderitem|
-      if (ele = parts.find { |part| part.name == orderitem })
-	result << ele
-      end
-    end
-    if result.length == 0
-      return parts.dup
-    end
-    # result length can be shorter than parts's.
-    # return part must not be a part of the parameterOrder.
-    result
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operationBinding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operationBinding.rb
deleted file mode 100644
index c2b8cd6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/operationBinding.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# WSDL4R - WSDL bound operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class OperationBinding < Info
-  attr_reader :name		# required
-  attr_reader :input
-  attr_reader :output
-  attr_reader :fault
-  attr_reader :soapoperation
-
-  def initialize
-    super
-    @name = nil
-    @input = nil
-    @output = nil
-    @fault = []
-    @soapoperation = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def porttype
-    root.porttype(parent.type)
-  end
-
-  def find_operation
-    porttype.operations[@name] or raise RuntimeError.new("#{@name} not found")
-  end
-
-  def soapoperation_name
-    if @soapoperation
-      @soapoperation.input_info.op_name
-    else
-      find_operation.name
-    end
-  end
-
-  def soapoperation_style
-    style = nil
-    if @soapoperation
-      style = @soapoperation.operation_style
-    elsif parent.soapbinding
-      style = parent.soapbinding.style
-    else
-      raise TypeError.new("operation style definition not found")
-    end
-    style || :document
-  end
-
-  def soapaction
-    if @soapoperation
-      @soapoperation.soapaction
-    else
-      nil
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when InputName
-      o = Param.new
-      @input = o
-      o
-    when OutputName
-      o = Param.new
-      @output = o
-      o
-    when FaultName
-      o = Param.new
-      @fault << o
-      o
-    when SOAPOperationName
-      o = WSDL::SOAP::Operation.new
-      @soapoperation = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/param.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/param.rb
deleted file mode 100644
index b6836b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/param.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# WSDL4R - WSDL param definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Param < Info
-  attr_reader :message	# required
-  attr_reader :name	# optional but required for fault.
-  attr_reader :soapbody
-  attr_reader :soapheader
-  attr_reader :soapfault
-
-  def initialize
-    super
-    @message = nil
-    @name = nil
-    @soapbody = nil
-    @soapheader = []
-    @soapfault = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def find_message
-    root.message(@message) or raise RuntimeError.new("#{@message} not found")
-  end
-
-  def soapbody_use
-    if @soapbody
-      @soapbody.use || :literal
-    else
-      raise RuntimeError.new("soap:body not found")
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when SOAPBodyName
-      o = WSDL::SOAP::Body.new
-      @soapbody = o
-      o
-    when SOAPHeaderName
-      o = WSDL::SOAP::Header.new
-      @soapheader << o
-      o
-    when SOAPFaultName
-      o = WSDL::SOAP::Fault.new
-      @soap_fault = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      if value.namespace.nil?
-        value = XSD::QName.new(targetnamespace, value.source)
-      end
-      @message = value
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/parser.rb
deleted file mode 100644
index f96e96e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/parser.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-# WSDL4R - WSDL XML Instance parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-require 'xsd/datatypes'
-require 'xsd/xmlparser'
-require 'wsdl/wsdl'
-require 'wsdl/data'
-require 'wsdl/xmlSchema/data'
-require 'wsdl/soap/data'
-
-
-module WSDL
-
-
-class Parser
-  include WSDL
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-  class AttributeConstraintError < FormatDecodeError; end
-
-private
-
-  class ParseFrame
-    attr_reader :ns
-    attr_reader :name
-    attr_accessor :node
-
-  private
-
-    def initialize(ns, name, node)
-      @ns = ns
-      @name = name
-      @node = node
-    end
-  end
-
-public
-
-  def initialize(opt = {})
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @ignored = {}
-    @location = opt[:location]
-    @originalroot = opt[:originalroot]
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-    @textbuf = ''
-    @parser.do_parse(string_or_readable)
-    @lastnode
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-    else
-      ns = XSD::NS.new
-      parent = nil
-    end
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    node = decode_tag(ns, name, attrs, parent)
-    @parsestack << ParseFrame.new(ns, name, node)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      ns = lastframe.ns
-      decode_text(ns, text)
-    else
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node)
-    @lastnode = lastframe.node
-  end
-
-private
-
-  def decode_tag(ns, name, attrs, parent)
-    o = nil
-    elename = ns.parse(name)
-    if !parent
-      if elename == DefinitionsName
-	o = Definitions.parse_element(elename)
-        o.location = @location
-      else
-	raise UnknownElementError.new("unknown element: #{elename}")
-      end
-      o.root = @originalroot if @originalroot   # o.root = o otherwise
-    else
-      if elename == XMLSchema::AnnotationName
-        # only the first annotation element is allowed for each xsd element.
-        o = XMLSchema::Annotation.new
-      else
-        o = parent.parse_element(elename)
-      end
-      unless o
-        unless @ignored.key?(elename)
-          warn("ignored element: #{elename}")
-          @ignored[elename] = elename
-        end
-	o = Documentation.new	# which accepts any element.
-      end
-      # node could be a pseudo element.  pseudo element has its own parent.
-      o.root = parent.root
-      o.parent = parent if o.parent.nil?
-    end
-    attrs.each do |key, value|
-      attr_ele = ns.parse(key, true)
-      value_ele = ns.parse(value, true)
-      value_ele.source = value  # for recovery; value may not be a QName
-      unless o.parse_attr(attr_ele, value_ele)
-        unless @ignored.key?(attr_ele)
-          warn("ignored attr: #{attr_ele}")
-          @ignored[attr_ele] = attr_ele
-        end
-      end
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    node.parse_epilogue
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/part.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/part.rb
deleted file mode 100644
index 5dafd4e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/part.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# WSDL4R - WSDL part definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Part < Info
-  attr_reader :name	# required
-  attr_reader :element	# optional
-  attr_reader :type	# optional
-
-  def initialize
-    super
-    @name = nil
-    @element = nil
-    @type = nil
-  end
-
-  def parse_element(element)
-    case element
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = value.source
-    when ElementAttrName
-      @element = value
-    when TypeAttrName
-      @type = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/port.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/port.rb
deleted file mode 100644
index 883cc32..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/port.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-# WSDL4R - WSDL port definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Port < Info
-  attr_reader :name		# required
-  attr_reader :binding		# required
-  attr_reader :soap_address
-
-  def initialize
-    super
-    @name = nil
-    @binding = nil
-    @soap_address = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def porttype
-    root.porttype(find_binding.type)
-  end
-
-  def find_binding
-    root.binding(@binding) or raise RuntimeError.new("#{@binding} not found")
-  end
-
-  def inputoperation_map
-    result = {}
-    find_binding.operations.each do |op_bind|
-      op_info = op_bind.soapoperation.input_info
-      result[op_info.op_name] = op_info
-    end
-    result
-  end
-
-  def outputoperation_map
-    result = {}
-    find_binding.operations.each do |op_bind|
-      op_info = op_bind.soapoperation.output_info
-      result[op_info.op_name] = op_info
-    end
-    result
-  end
-
-  def parse_element(element)
-    case element
-    when SOAPAddressName
-      o = WSDL::SOAP::Address.new
-      @soap_address = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when BindingAttrName
-      @binding = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/portType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/portType.rb
deleted file mode 100644
index 03e3769..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/portType.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - WSDL portType definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class PortType < Info
-  attr_reader :name		# required
-  attr_reader :operations
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def initialize
-    super
-    @name = nil
-    @operations = XSD::NamedElements.new
-  end
-
-  def find_binding
-    root.bindings.find { |item| item.type == @name } or
-      raise RuntimeError.new("#{@name} not found")
-  end
-
-  def locations
-    bind_name = find_binding.name
-    result = []
-    root.services.each do |service|
-      service.ports.each do |port|
-        if port.binding == bind_name
-          result << port.soap_address.location if port.soap_address
-        end
-      end
-    end
-    result
-  end
-
-  def parse_element(element)
-    case element
-    when OperationName
-      o = Operation.new
-      @operations << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/service.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/service.rb
deleted file mode 100644
index 652b127..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/service.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-# WSDL4R - WSDL service definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Service < Info
-  attr_reader :name		# required
-  attr_reader :ports
-  attr_reader :soap_address
-
-  def initialize
-    super
-    @name = nil
-    @ports = XSD::NamedElements.new
-    @soap_address = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when PortName
-      o = Port.new
-      @ports << o
-      o
-    when SOAPAddressName
-      o = WSDL::SOAP::Address.new
-      @soap_address = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/address.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/address.rb
deleted file mode 100644
index 0b2b59c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/address.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# WSDL4R - WSDL SOAP address definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Address < Info
-  attr_reader :location
-
-  def initialize
-    super
-    @location = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when LocationAttrName
-      @location = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/binding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/binding.rb
deleted file mode 100644
index 7e15a99..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/binding.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# WSDL4R - WSDL SOAP binding definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Binding < Info
-  attr_reader :style
-  attr_reader :transport
-
-  def initialize
-    super
-    @style = nil
-    @transport = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when StyleAttrName
-      if ["document", "rpc"].include?(value.source)
-	@style = value.source.intern
-      else
-	raise Parser::AttributeConstraintError.new(
-          "Unexpected value #{ value }.")
-      end
-    when TransportAttrName
-      @transport = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/body.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/body.rb
deleted file mode 100644
index 824f812..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/body.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Body < Info
-  attr_reader :parts
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @parts = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when PartsAttrName
-      @parts = value.source
-    when UseAttrName
-      if ['literal', 'encoded'].include?(value.source)
-        @use = value.source.intern
-      else
-        raise RuntimeError.new("unknown use of soap:body: #{value.source}")
-      end
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/cgiStubCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/cgiStubCreator.rb
deleted file mode 100644
index 2c4dff2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/cgiStubCreator.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# WSDL4R - Creating CGI stub code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class CGIStubCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    warn("CGI stub can have only 1 port.  Creating stub for the first port...  Rests are ignored.")
-    port = @definitions.service(service_name).ports[0]
-    dump_porttype(port.porttype.name)
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-    c1 = XSD::CodeGen::ClassDef.new(class_name)
-    c1.def_require("soap/rpc/cgistub")
-    c1.def_require("soap/mapping/registry")
-    c1.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c1.def_code(mr_creator.dump(types))
-    c1.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
-      "::SOAP::RPC::CGIStub")
-    c2.def_method("initialize", "*arg") do
-      <<-EOD
-        super(*arg)
-        servant = #{class_name}.new
-        #{class_name}::Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            @router.add_document_operation(servant, *definitions)
-          else
-            @router.add_rpc_operation(servant, *definitions)
-          end
-        end
-        self.mapping_registry = #{class_name}::MappingRegistry
-        self.level = Logger::Severity::ERROR
-      EOD
-    end
-    c1.dump + "\n" + c2.dump + format(<<-EOD)
-      #{class_name}App.new('app', nil).start
-    EOD
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreator.rb
deleted file mode 100644
index aeb67c0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreator.rb
+++ /dev/null
@@ -1,314 +0,0 @@
-# WSDL4R - Creating class definition from WSDL
-# Copyright (C) 2002, 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/data'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class ClassDefCreator
-  include ClassDefCreatorSupport
-
-  def initialize(definitions)
-    @elements = definitions.collect_elements
-    @simpletypes = definitions.collect_simpletypes
-    @complextypes = definitions.collect_complextypes
-    @faulttypes = nil
-    if definitions.respond_to?(:collect_faulttypes)
-      @faulttypes = definitions.collect_faulttypes
-    end
-  end
-
-  def dump(type = nil)
-    result = "require 'xsd/qname'\n"
-    if type
-      result = dump_classdef(type.name, type)
-    else
-      str = dump_element
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-      str = dump_complextype
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-      str = dump_simpletype
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-    end
-    result
-  end
-
-private
-
-  def dump_element
-    @elements.collect { |ele|
-      if ele.local_complextype
-        dump_classdef(ele.name, ele.local_complextype,
-          ele.elementform == 'qualified')
-      elsif ele.local_simpletype
-        dump_simpletypedef(ele.name, ele.local_simpletype)
-      else
-        nil
-      end
-    }.compact.join("\n")
-  end
-
-  def dump_simpletype
-    @simpletypes.collect { |type|
-      dump_simpletypedef(type.name, type)
-    }.compact.join("\n")
-  end
-
-  def dump_complextype
-    @complextypes.collect { |type|
-      case type.compoundtype
-      when :TYPE_STRUCT, :TYPE_EMPTY
-        dump_classdef(type.name, type)
-      when :TYPE_ARRAY
-        dump_arraydef(type)
-      when :TYPE_SIMPLE
-        dump_simpleclassdef(type)
-      when :TYPE_MAP
-        # mapped as a general Hash
-        nil
-      else
-        raise RuntimeError.new(
-          "unknown kind of complexContent: #{type.compoundtype}")
-      end
-    }.compact.join("\n")
-  end
-
-  def dump_simpletypedef(qname, simpletype)
-    if !simpletype.restriction or simpletype.restriction.enumeration.empty?
-      return nil
-    end
-    c = XSD::CodeGen::ModuleDef.new(create_class_name(qname))
-    c.comment = "#{qname}"
-    const = {}
-    simpletype.restriction.enumeration.each do |value|
-      constname = safeconstname(value)
-      const[constname] ||= 0
-      if (const[constname] += 1) > 1
-        constname += "_#{const[constname]}"
-      end
-      c.def_const(constname, ndq(value))
-    end
-    c.dump
-  end
-
-  def dump_simpleclassdef(type_or_element)
-    qname = type_or_element.name
-    base = create_class_name(type_or_element.simplecontent.base)
-    c = XSD::CodeGen::ClassDef.new(create_class_name(qname), base)
-    c.comment = "#{qname}"
-    c.dump
-  end
-
-  def dump_classdef(qname, typedef, qualified = false)
-    if @faulttypes and @faulttypes.index(qname)
-      c = XSD::CodeGen::ClassDef.new(create_class_name(qname),
-        '::StandardError')
-    else
-      c = XSD::CodeGen::ClassDef.new(create_class_name(qname))
-    end
-    c.comment = "#{qname}"
-    c.def_classvar('schema_type', ndq(qname.name))
-    c.def_classvar('schema_ns', ndq(qname.namespace))
-    c.def_classvar('schema_qualified', dq('true')) if qualified
-    schema_element = []
-    init_lines = ''
-    params = []
-    typedef.each_element do |element|
-      if element.type == XSD::AnyTypeName
-        type = nil
-      elsif klass = element_basetype(element)
-        type = klass.name
-      elsif element.type
-        type = create_class_name(element.type)
-      else
-        type = nil      # means anyType.
-        # do we define a class for local complexType from it's name?
-        #   type = create_class_name(element.name)
-        # <element>
-        #   <complexType>
-        #     <seq...>
-        #   </complexType>
-        # </element>
-      end
-      name = name_element(element).name
-      attrname = safemethodname?(name) ? name : safemethodname(name)
-      varname = safevarname(name)
-      c.def_attr(attrname, true, varname)
-      init_lines << "@#{varname} = #{varname}\n"
-      if element.map_as_array?
-        params << "#{varname} = []"
-        type << '[]' if type
-      else
-        params << "#{varname} = nil"
-      end
-      # nil means @@schema_ns + varname
-      eleqname =
-        (varname == name && element.name.namespace == qname.namespace) ?
-        nil : element.name
-      schema_element << [varname, eleqname, type]
-    end
-    unless typedef.attributes.empty?
-      define_attribute(c, typedef.attributes)
-      init_lines << "@__xmlattr = {}\n"
-    end
-    c.def_classvar('schema_element',
-      '[' +
-        schema_element.collect { |varname, name, type|
-          '[' +
-            (
-              if name
-                varname.dump + ', [' + ndq(type) + ', ' + dqname(name) + ']'
-              else
-                varname.dump + ', ' + ndq(type)
-              end
-            ) +
-          ']'
-        }.join(', ') +
-      ']'
-    )
-    c.def_method('initialize', *params) do
-      init_lines
-    end
-    c.dump
-  end
-
-  def element_basetype(ele)
-    if klass = basetype_class(ele.type)
-      klass
-    elsif ele.local_simpletype
-      basetype_class(ele.local_simpletype.base)
-    else
-      nil
-    end
-  end
-
-  def attribute_basetype(attr)
-    if klass = basetype_class(attr.type)
-      klass
-    elsif attr.local_simpletype
-      basetype_class(attr.local_simpletype.base)
-    else
-      nil
-    end
-  end
-
-  def basetype_class(type)
-    return nil if type.nil?
-    if simpletype = @simpletypes[type]
-      basetype_mapped_class(simpletype.base)
-    else
-      basetype_mapped_class(type)
-    end
-  end
-
-  def define_attribute(c, attributes)
-    schema_attribute = []
-    attributes.each do |attribute|
-      name = name_attribute(attribute)
-      if klass = attribute_basetype(attribute)
-        type = klass.name
-      else
-        type = nil
-      end
-      methodname = safemethodname('xmlattr_' + name.name)
-      c.def_method(methodname) do <<-__EOD__
-          (@__xmlattr ||= {})[#{dqname(name)}]
-        __EOD__
-      end
-      c.def_method(methodname + '=', 'value') do <<-__EOD__
-          (@__xmlattr ||= {})[#{dqname(name)}] = value
-        __EOD__
-      end
-      schema_attribute << [name, type]
-    end
-    c.def_classvar('schema_attribute',
-      '{' +
-        schema_attribute.collect { |name, type|
-          dqname(name) + ' => ' + ndq(type)
-        }.join(', ') +
-      '}'
-    )
-  end
-
-  def name_element(element)
-    return element.name if element.name 
-    return element.ref if element.ref
-    raise RuntimeError.new("cannot define name of #{element}")
-  end
-
-  def name_attribute(attribute)
-    return attribute.name if attribute.name 
-    return attribute.ref if attribute.ref
-    raise RuntimeError.new("cannot define name of #{attribute}")
-  end
-
-  DEFAULT_ITEM_NAME = XSD::QName.new(nil, 'item')
-
-  def dump_arraydef(complextype)
-    qname = complextype.name
-    c = XSD::CodeGen::ClassDef.new(create_class_name(qname), '::Array')
-    c.comment = "#{qname}"
-    child_type = complextype.child_type
-    c.def_classvar('schema_type', ndq(child_type.name))
-    c.def_classvar('schema_ns', ndq(child_type.namespace))
-    child_element = complextype.find_aryelement
-    schema_element = []
-    if child_type == XSD::AnyTypeName
-      type = nil
-    elsif child_element and (klass = element_basetype(child_element))
-      type = klass.name
-    elsif child_type
-      type = create_class_name(child_type)
-    else
-      type = nil
-    end
-    if child_element
-      if child_element.map_as_array?
-        type << '[]' if type
-      end
-      child_element_name = child_element.name
-    else
-      child_element_name = DEFAULT_ITEM_NAME
-    end
-    schema_element << [child_element_name.name, child_element_name, type]
-    c.def_classvar('schema_element',
-      '[' +
-        schema_element.collect { |varname, name, type|
-          '[' +
-            (
-              if name
-                varname.dump + ', [' + ndq(type) + ', ' + dqname(name) + ']'
-              else
-                varname.dump + ', ' + ndq(type)
-              end
-            ) +
-          ']'
-        }.join(', ') +
-      ']'
-    )
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb
deleted file mode 100644
index 8f33565..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-# WSDL4R - Creating class code support from WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'soap/mapping'
-require 'soap/mapping/typeMap'
-require 'xsd/codegen/gensupport'
-
-
-module WSDL
-module SOAP
-
-
-module ClassDefCreatorSupport
-  include XSD::CodeGen::GenSupport
-
-  def create_class_name(qname)
-    if klass = basetype_mapped_class(qname)
-      ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name
-    else
-      safeconstname(qname.name)
-    end
-  end
-
-  def basetype_mapped_class(name)
-    ::SOAP::TypeMap[name]
-  end
-
-  def dump_method_signature(operation)
-    name = operation.name.name
-    input = operation.input
-    output = operation.output
-    fault = operation.fault
-    signature = "#{ name }#{ dump_inputparam(input) }"
-    str = <<__EOD__
-# SYNOPSIS
-#   #{name}#{dump_inputparam(input)}
-#
-# ARGS
-#{dump_inout_type(input).chomp}
-#
-# RETURNS
-#{dump_inout_type(output).chomp}
-#
-__EOD__
-    unless fault.empty?
-      faultstr = (fault.collect { |f| dump_inout_type(f).chomp }).join(', ')
-      str <<<<__EOD__
-# RAISES
-#   #{faultstr}
-#
-__EOD__
-    end
-    str
-  end
-
-  def dq(ele)
-    ele.dump
-  end
-
-  def ndq(ele)
-    ele.nil? ? 'nil' : dq(ele)
-  end
-
-  def sym(ele)
-    ':' + ele
-  end
-
-  def dqname(qname)
-    qname.dump
-  end
-
-private
-
-  def dump_inout_type(param)
-    if param
-      message = param.find_message
-      params = ""
-      message.parts.each do |part|
-        name = safevarname(part.name)
-        if part.type
-          typename = safeconstname(part.type.name)
-          params << add_at("#   #{name}", "#{typename} - #{part.type}\n", 20)
-        elsif part.element
-          typename = safeconstname(part.element.name)
-          params << add_at("#   #{name}", "#{typename} - #{part.element}\n", 20)
-        end
-      end
-      unless params.empty?
-        return params
-      end
-    end
-    "#   N/A\n"
-  end
-
-  def dump_inputparam(input)
-    message = input.find_message
-    params = ""
-    message.parts.each do |part|
-      params << ", " unless params.empty?
-      params << safevarname(part.name)
-    end
-    if params.empty?
-      ""
-    else
-      "(#{ params })"
-    end
-  end
-
-  def add_at(base, str, pos)
-    if base.size >= pos
-      base + ' ' + str
-    else
-      base + ' ' * (pos - base.size) + str
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb
deleted file mode 100644
index 916f0d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# WSDL4R - Creating client skelton code from WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class ClientSkeltonCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    result = ""
-    @definitions.service(service_name).ports.each do |port|
-      result << dump_porttype(port.porttype.name)
-      result << "\n"
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    drv_name = create_class_name(name)
-
-    result = ""
-    result << <<__EOD__
-endpoint_url = ARGV.shift
-obj = #{ drv_name }.new(endpoint_url)
-
-# run ruby with -d to see SOAP wiredumps.
-obj.wiredump_dev = STDERR if $DEBUG
-
-__EOD__
-    @definitions.porttype(name).operations.each do |operation|
-      result << dump_method_signature(operation)
-      result << dump_input_init(operation.input) << "\n"
-      result << dump_operation(operation) << "\n\n"
-    end
-    result
-  end
-
-  def dump_operation(operation)
-    name = operation.name
-    input = operation.input
-    "puts obj.#{ safemethodname(name.name) }#{ dump_inputparam(input) }"
-  end
-
-  def dump_input_init(input)
-    result = input.find_message.parts.collect { |part|
-      safevarname(part.name)
-    }.join(" = ")
-    if result.empty?
-      ""
-    else
-      result << " = nil"
-    end
-    result
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/complexType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/complexType.rb
deleted file mode 100644
index b2e13d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/complexType.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-# WSDL4R - SOAP complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/complexType'
-require 'soap/mapping'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexType < Info
-  def compoundtype
-    @compoundtype ||= check_type
-  end
-
-  def check_type
-    if content
-      if attributes.empty? and
-          content.elements.size == 1 and content.elements[0].maxoccurs != '1'
-        if name == ::SOAP::Mapping::MapQName
-          :TYPE_MAP
-        else
-          :TYPE_ARRAY
-        end
-      else
-	:TYPE_STRUCT
-      end
-    elsif complexcontent
-      if complexcontent.base == ::SOAP::ValueArrayName
-        :TYPE_ARRAY
-      else
-        complexcontent.basetype.check_type
-      end
-    elsif simplecontent
-      :TYPE_SIMPLE
-    elsif !attributes.empty?
-      :TYPE_STRUCT
-    else # empty complexType definition (seen in partner.wsdl of salesforce)
-      :TYPE_EMPTY
-    end
-  end
-
-  def child_type(name = nil)
-    case compoundtype
-    when :TYPE_STRUCT
-      if ele = find_element(name)
-        ele.type
-      elsif ele = find_element_by_name(name.name)
-	ele.type
-      end
-    when :TYPE_ARRAY
-      @contenttype ||= content_arytype
-    when :TYPE_MAP
-      item_ele = find_element_by_name("item") or
-        raise RuntimeError.new("'item' element not found in Map definition.")
-      content = item_ele.local_complextype or
-        raise RuntimeError.new("No complexType definition for 'item'.")
-      if ele = content.find_element(name)
-        ele.type
-      elsif ele = content.find_element_by_name(name.name)
-        ele.type
-      end
-    else
-      raise NotImplementedError.new("Unknown kind of complexType.")
-    end
-  end
-
-  def child_defined_complextype(name)
-    ele = nil
-    case compoundtype
-    when :TYPE_STRUCT, :TYPE_MAP
-      unless ele = find_element(name)
-       	if name.namespace.nil?
-  	  ele = find_element_by_name(name.name)
-   	end
-      end
-    when :TYPE_ARRAY
-      if content.elements.size == 1
-	ele = content.elements[0]
-      else
-	raise RuntimeError.new("Assert: must not reach.")
-      end
-    else
-      raise RuntimeError.new("Assert: Not implemented.")
-    end
-    unless ele
-      raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
-    end
-    ele.local_complextype
-  end
-
-  def find_arytype
-    unless compoundtype == :TYPE_ARRAY
-      raise RuntimeError.new("Assert: not for array")
-    end
-    if complexcontent
-      complexcontent.attributes.each do |attribute|
-	if attribute.ref == ::SOAP::AttrArrayTypeName
-	  return attribute.arytype
-	end
-      end
-      if check_array_content(complexcontent.content)
-        return element_simpletype(complexcontent.content.elements[0])
-      end
-    elsif check_array_content(content)
-      return element_simpletype(content.elements[0])
-    end
-    raise RuntimeError.new("Assert: Unknown array definition.")
-  end
-
-  def find_aryelement
-    unless compoundtype == :TYPE_ARRAY
-      raise RuntimeError.new("Assert: not for array")
-    end
-    if complexcontent
-      if check_array_content(complexcontent.content)
-        return complexcontent.content.elements[0]
-      end
-    elsif check_array_content(content)
-      return content.elements[0]
-    end
-    nil # use default item name
-  end
-
-private
-
-  def element_simpletype(element)
-    if element.type
-      element.type 
-    elsif element.local_simpletype
-      element.local_simpletype.base
-    else
-      nil
-    end
-  end
-
-  def check_array_content(content)
-    content and content.elements.size == 1 and
-      content.elements[0].maxoccurs != '1'
-  end
-
-  def content_arytype
-    if arytype = find_arytype
-      ns = arytype.namespace
-      name = arytype.name.sub(/\[(?:,)*\]$/, '')
-      XSD::QName.new(ns, name)
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/data.rb
deleted file mode 100644
index 48512d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/data.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# WSDL4R - WSDL SOAP binding data definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'wsdl/soap/definitions'
-require 'wsdl/soap/binding'
-require 'wsdl/soap/operation'
-require 'wsdl/soap/body'
-require 'wsdl/soap/element'
-require 'wsdl/soap/header'
-require 'wsdl/soap/headerfault'
-require 'wsdl/soap/fault'
-require 'wsdl/soap/address'
-require 'wsdl/soap/complexType'
-
-
-module WSDL
-module SOAP
-
-
-HeaderFaultName = XSD::QName.new(SOAPBindingNamespace, 'headerfault')
-
-LocationAttrName = XSD::QName.new(nil, 'location')
-StyleAttrName = XSD::QName.new(nil, 'style')
-TransportAttrName = XSD::QName.new(nil, 'transport')
-UseAttrName = XSD::QName.new(nil, 'use')
-PartsAttrName = XSD::QName.new(nil, 'parts')
-PartAttrName = XSD::QName.new(nil, 'part')
-NameAttrName = XSD::QName.new(nil, 'name')
-MessageAttrName = XSD::QName.new(nil, 'message')
-EncodingStyleAttrName = XSD::QName.new(nil, 'encodingStyle')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-SOAPActionAttrName = XSD::QName.new(nil, 'soapAction')
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/definitions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/definitions.rb
deleted file mode 100644
index b014d5a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/definitions.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-# WSDL4R - WSDL additional definitions for SOAP.
-# Copyright (C) 2002-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-require 'soap/mapping'
-
-
-module WSDL
-
-
-class Definitions < Info
-  def self.soap_rpc_complextypes
-    types = XSD::NamedElements.new
-    types << array_complextype
-    types << fault_complextype
-    types << exception_complextype
-    types
-  end
-
-  def self.array_complextype
-    type = XMLSchema::ComplexType.new(::SOAP::ValueArrayName)
-    type.complexcontent = XMLSchema::ComplexContent.new
-    type.complexcontent.base = ::SOAP::ValueArrayName
-    attr = XMLSchema::Attribute.new
-    attr.ref = ::SOAP::AttrArrayTypeName
-    anytype = XSD::AnyTypeName.dup
-    anytype.name += '[]'
-    attr.arytype = anytype
-    type.complexcontent.attributes << attr
-    type
-  end
-
-=begin
-<xs:complexType name="Fault" final="extension">
-  <xs:sequence>
-    <xs:element name="faultcode" type="xs:QName" /> 
-    <xs:element name="faultstring" type="xs:string" /> 
-    <xs:element name="faultactor" type="xs:anyURI" minOccurs="0" /> 
-    <xs:element name="detail" type="tns:detail" minOccurs="0" /> 
-  </xs:sequence>
-</xs:complexType>
-=end
-  def self.fault_complextype
-    type = XMLSchema::ComplexType.new(::SOAP::EleFaultName)
-    faultcode = XMLSchema::Element.new(::SOAP::EleFaultCodeName, XSD::XSDQName::Type)
-    faultstring = XMLSchema::Element.new(::SOAP::EleFaultStringName, XSD::XSDString::Type)
-    faultactor = XMLSchema::Element.new(::SOAP::EleFaultActorName, XSD::XSDAnyURI::Type)
-    faultactor.minoccurs = 0
-    detail = XMLSchema::Element.new(::SOAP::EleFaultDetailName, XSD::AnyTypeName)
-    detail.minoccurs = 0
-    type.all_elements = [faultcode, faultstring, faultactor, detail]
-    type.final = 'extension'
-    type
-  end
-
-  def self.exception_complextype
-    type = XMLSchema::ComplexType.new(XSD::QName.new(
-	::SOAP::Mapping::RubyCustomTypeNamespace, 'SOAPException'))
-    excn_name = XMLSchema::Element.new(XSD::QName.new(nil, 'excn_type_name'), XSD::XSDString::Type)
-    cause = XMLSchema::Element.new(XSD::QName.new(nil, 'cause'), XSD::AnyTypeName)
-    backtrace = XMLSchema::Element.new(XSD::QName.new(nil, 'backtrace'), ::SOAP::ValueArrayName)
-    message = XMLSchema::Element.new(XSD::QName.new(nil, 'message'), XSD::XSDString::Type)
-    type.all_elements = [excn_name, cause, backtrace, message]
-    type
-  end
-
-  def soap_rpc_complextypes(binding)
-    types = rpc_operation_complextypes(binding)
-    types + self.class.soap_rpc_complextypes
-  end
-
-  def collect_faulttypes
-    result = []
-    collect_fault_messages.each do |name|
-      faultparts = message(name).parts
-      if faultparts.size != 1
-	raise RuntimeError.new("expecting fault message to have only 1 part")
-      end
-      if result.index(faultparts[0].type).nil?
-	result << faultparts[0].type
-      end
-    end
-    result
-  end
-
-private
-
-  def collect_fault_messages
-    result = []
-    porttypes.each do |porttype|
-      porttype.operations.each do |operation|
-	operation.fault.each do |fault|
-	  if result.index(fault.message).nil?
-	    result << fault.message
-	  end
-	end
-      end
-    end
-    result
-  end
-
-  def rpc_operation_complextypes(binding)
-    types = XSD::NamedElements.new
-    binding.operations.each do |op_bind|
-      if op_bind_rpc?(op_bind)
-	operation = op_bind.find_operation
-	if op_bind.input
-	  type = XMLSchema::ComplexType.new(op_bind.soapoperation_name)
-	  message = messages[operation.input.message]
-	  type.sequence_elements = elements_from_message(message)
-	  types << type
-	end
-	if op_bind.output
-	  type = XMLSchema::ComplexType.new(operation.outputname)
-	  message = messages[operation.output.message]
-	  type.sequence_elements = elements_from_message(message)
-	  types << type
-	end
-      end
-    end
-    types
-  end
-
-  def op_bind_rpc?(op_bind)
-    op_bind.soapoperation_style == :rpc
-  end
-
-  def elements_from_message(message)
-    message.parts.collect { |part|
-      if part.element
-        collect_elements[part.element]
-      elsif part.name.nil? or part.type.nil?
-	raise RuntimeError.new("part of a message must be an element or typed")
-      else
-        qname = XSD::QName.new(nil, part.name)
-        XMLSchema::Element.new(qname, part.type)
-      end
-    }
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/driverCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/driverCreator.rb
deleted file mode 100644
index eba7c15..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/driverCreator.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# WSDL4R - Creating driver code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class DriverCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(porttype = nil)
-    if porttype.nil?
-      result = ""
-      @definitions.porttypes.each do |type|
-	result << dump_porttype(type.name)
-	result << "\n"
-      end
-    else
-      result = dump_porttype(porttype)
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-    binding = @definitions.bindings.find { |item| item.type == name }
-    return '' unless binding.soapbinding        # not a SOAP binding
-    address = @definitions.porttype(name).locations[0]
-
-    c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
-    c.def_require("soap/rpc/driver")
-    c.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c.def_const("DefaultEndpointUrl", ndq(address))
-    c.def_code(mr_creator.dump(types))
-    c.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c.def_method("initialize", "endpoint_url = nil") do
-      <<-EOD
-        endpoint_url ||= DefaultEndpointUrl
-        super(endpoint_url, nil)
-        self.mapping_registry = MappingRegistry
-        init_methods
-      EOD
-    end
-    c.def_privatemethod("init_methods") do
-      <<-EOD
-        Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            add_document_operation(*definitions)
-          else
-            add_rpc_operation(*definitions)
-            qname = definitions[0]
-            name = definitions[2]
-            if qname.name != name and qname.name.capitalize == name.capitalize
-              ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
-                __send__(name, *arg)
-              end
-            end
-          end
-        end
-      EOD
-    end
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/element.rb
deleted file mode 100644
index 0fa6017..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/element.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# WSDL4R - XMLSchema element definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/element'
-
-
-module WSDL
-module XMLSchema
-
-
-class Element < Info
-  def map_as_array?
-    maxoccurs != '1'
-  end
-
-  def attributes
-    @local_complextype.attributes
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/fault.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/fault.rb
deleted file mode 100644
index 2862b65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/fault.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Fault < Info
-  attr_reader :name	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @name = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/header.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/header.rb
deleted file mode 100644
index 8d7c4e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/header.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Header < Info
-  attr_reader :headerfault
-
-  attr_reader :message	# required
-  attr_reader :part	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @message = nil
-    @part = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-    @headerfault = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def find_message
-    root.message(@message) or raise RuntimeError.new("#{@message} not found")
-  end
-
-  def find_part
-    find_message.parts.each do |part|
-      if part.name == @part
-	return part
-      end
-    end
-    raise RuntimeError.new("#{@part} not found")
-  end
-
-  def parse_element(element)
-    case element
-    when HeaderFaultName
-      o = WSDL::SOAP::HeaderFault.new
-      @headerfault = o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      if value.namespace.nil?
-        value = XSD::QName.new(targetnamespace, value.source)
-      end
-      @message = value
-    when PartAttrName
-      @part = value.source
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/headerfault.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/headerfault.rb
deleted file mode 100644
index d6b14f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/headerfault.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class HeaderFault < Info
-  attr_reader :message	# required
-  attr_reader :part	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @message = nil
-    @part = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      @message = value
-    when PartAttrName
-      @part = value.source
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb
deleted file mode 100644
index 8669339..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# WSDL4R - Creating MappingRegistry code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class MappingRegistryCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-    @complextypes = @definitions.collect_complextypes
-    @types = nil
-  end
-
-  def dump(types)
-    @types = types
-    map_cache = []
-    map = ""
-    @types.each do |type|
-      if map_cache.index(type).nil?
-	map_cache << type
-	if type.namespace != XSD::Namespace
-	  if typemap = dump_typemap(type)
-            map << typemap
-          end
-	end
-      end
-   end
-    return map
-  end
-
-private
-
-  def dump_typemap(type)
-    if definedtype = @complextypes[type]
-      case definedtype.compoundtype
-      when :TYPE_STRUCT
-        dump_struct_typemap(definedtype)
-      when :TYPE_ARRAY
-        dump_array_typemap(definedtype)
-      when :TYPE_MAP, :TYPE_EMPTY
-        nil
-      else
-        raise NotImplementedError.new("must not reach here")
-      end
-    end
-  end
-
-  def dump_struct_typemap(definedtype)
-    ele = definedtype.name
-    return <<__EOD__
-MappingRegistry.set(
-  #{create_class_name(ele)},
-  ::SOAP::SOAPStruct,
-  ::SOAP::Mapping::Registry::TypedStructFactory,
-  { :type => #{dqname(ele)} }
-)
-__EOD__
-  end
-
-  def dump_array_typemap(definedtype)
-    ele = definedtype.name
-    arytype = definedtype.find_arytype || XSD::AnyTypeName
-    type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, ''))
-    @types << type
-    return <<__EOD__
-MappingRegistry.set(
-  #{create_class_name(ele)},
-  ::SOAP::SOAPArray,
-  ::SOAP::Mapping::Registry::TypedArrayFactory,
-  { :type => #{dqname(type)} }
-)
-__EOD__
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/methodDefCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/methodDefCreator.rb
deleted file mode 100644
index f3ffadb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/methodDefCreator.rb
+++ /dev/null
@@ -1,228 +0,0 @@
-# WSDL4R - Creating driver code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'soap/rpc/element'
-
-
-module WSDL
-module SOAP
-
-
-class MethodDefCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-    @simpletypes = @definitions.collect_simpletypes
-    @complextypes = @definitions.collect_complextypes
-    @elements = @definitions.collect_elements
-    @types = []
-  end
-
-  def dump(porttype)
-    @types.clear
-    result = ""
-    operations = @definitions.porttype(porttype).operations
-    binding = @definitions.porttype_binding(porttype)
-    operations.each do |operation|
-      op_bind = binding.operations[operation.name]
-      next unless op_bind # no binding is defined
-      next unless op_bind.soapoperation # not a SOAP operation binding
-      result << ",\n" unless result.empty?
-      result << dump_method(operation, op_bind).chomp
-    end
-    return result, @types
-  end
-
-  def collect_rpcparameter(operation)
-    result = operation.inputparts.collect { |part|
-      collect_type(part.type)
-      param_set(::SOAP::RPC::SOAPMethod::IN, part.name, rpcdefinedtype(part))
-    }
-    outparts = operation.outputparts
-    if outparts.size > 0
-      retval = outparts[0]
-      collect_type(retval.type)
-      result << param_set(::SOAP::RPC::SOAPMethod::RETVAL, retval.name,
-        rpcdefinedtype(retval))
-      cdr(outparts).each { |part|
-	collect_type(part.type)
-	result << param_set(::SOAP::RPC::SOAPMethod::OUT, part.name,
-          rpcdefinedtype(part))
-      }
-    end
-    result
-  end
-
-  def collect_documentparameter(operation)
-    param = []
-    operation.inputparts.each do |input|
-      param << param_set(::SOAP::RPC::SOAPMethod::IN, input.name,
-        documentdefinedtype(input), elementqualified(input))
-    end
-    operation.outputparts.each do |output|
-      param << param_set(::SOAP::RPC::SOAPMethod::OUT, output.name,
-        documentdefinedtype(output), elementqualified(output))
-    end
-    param
-  end
-
-private
-
-  def dump_method(operation, binding)
-    name = safemethodname(operation.name.name)
-    name_as = operation.name.name
-    style = binding.soapoperation_style
-    inputuse = binding.input.soapbody_use
-    outputuse = binding.output.soapbody_use
-    namespace = binding.input.soapbody.namespace
-    if style == :rpc
-      qname = XSD::QName.new(namespace, name_as)
-      paramstr = param2str(collect_rpcparameter(operation))
-    else
-      qname = nil
-      paramstr = param2str(collect_documentparameter(operation))
-    end
-    if paramstr.empty?
-      paramstr = '[]'
-    else
-      paramstr = "[ " << paramstr.split(/\r?\n/).join("\n    ") << " ]"
-    end
-    definitions = <<__EOD__
-#{ndq(binding.soapaction)},
-  #{dq(name)},
-  #{paramstr},
-  { :request_style =>  #{sym(style.id2name)}, :request_use =>  #{sym(inputuse.id2name)},
-    :response_style => #{sym(style.id2name)}, :response_use => #{sym(outputuse.id2name)} }
-__EOD__
-    if style == :rpc
-      return <<__EOD__
-[ #{qname.dump},
-  #{definitions}]
-__EOD__
-    else
-      return <<__EOD__
-[ #{definitions}]
-__EOD__
-    end
-  end
-
-  def rpcdefinedtype(part)
-    if mapped = basetype_mapped_class(part.type)
-      ['::' + mapped.name]
-    elsif definedtype = @simpletypes[part.type]
-      ['::' + basetype_mapped_class(definedtype.base).name]
-    elsif definedtype = @elements[part.element]
-      #['::SOAP::SOAPStruct', part.element.namespace, part.element.name]
-      ['nil', part.element.namespace, part.element.name]
-    elsif definedtype = @complextypes[part.type]
-      case definedtype.compoundtype
-      when :TYPE_STRUCT, :TYPE_EMPTY    # ToDo: empty should be treated as void.
-        type = create_class_name(part.type)
-	[type, part.type.namespace, part.type.name]
-      when :TYPE_MAP
-	[Hash.name, part.type.namespace, part.type.name]
-      when :TYPE_ARRAY
-	arytype = definedtype.find_arytype || XSD::AnyTypeName
-	ns = arytype.namespace
-	name = arytype.name.sub(/\[(?:,)*\]$/, '')
-        type = create_class_name(XSD::QName.new(ns, name))
-	[type + '[]', ns, name]
-      else
-	raise NotImplementedError.new("must not reach here")
-      end
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def documentdefinedtype(part)
-    if mapped = basetype_mapped_class(part.type)
-      ['::' + mapped.name, nil, part.name]
-    elsif definedtype = @simpletypes[part.type]
-      ['::' + basetype_mapped_class(definedtype.base).name, nil, part.name]
-    elsif definedtype = @elements[part.element]
-      ['::SOAP::SOAPElement', part.element.namespace, part.element.name]
-    elsif definedtype = @complextypes[part.type]
-      ['::SOAP::SOAPElement', part.type.namespace, part.type.name]
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def elementqualified(part)
-    if mapped = basetype_mapped_class(part.type)
-      false
-    elsif definedtype = @simpletypes[part.type]
-      false
-    elsif definedtype = @elements[part.element]
-      definedtype.elementform == 'qualified'
-    elsif definedtype = @complextypes[part.type]
-      false
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def param_set(io_type, name, type, ele = nil)
-    [io_type, name, type, ele]
-  end
-
-  def collect_type(type)
-    # ignore inline type definition.
-    return if type.nil?
-    return if @types.include?(type)
-    @types << type
-    return unless @complextypes[type]
-    @complextypes[type].each_element do |element|
-      collect_type(element.type)
-    end
-  end
-
-  def param2str(params)
-    params.collect { |param|
-      io, name, type, ele = param
-      unless ele.nil?
-        "[#{dq(io)}, #{dq(name)}, #{type2str(type)}, #{ele2str(ele)}]"
-      else
-        "[#{dq(io)}, #{dq(name)}, #{type2str(type)}]"
-      end
-    }.join(",\n")
-  end
-
-  def type2str(type)
-    if type.size == 1
-      "[#{dq(type[0])}]" 
-    else
-      "[#{dq(type[0])}, #{ndq(type[1])}, #{dq(type[2])}]" 
-    end
-  end
-
-  def ele2str(ele)
-    qualified = ele
-    if qualified
-      "true"
-    else
-      "false"
-    end
-  end
-
-  def cdr(ary)
-    result = ary.dup
-    result.shift
-    result
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/operation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/operation.rb
deleted file mode 100644
index 502d34a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/operation.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-# WSDL4R - WSDL SOAP operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Operation < Info
-  class OperationInfo
-    attr_reader :style
-    attr_reader :op_name
-    attr_reader :optype_name
-    attr_reader :headerparts
-    attr_reader :bodyparts
-    attr_reader :faultpart
-    attr_reader :soapaction
-    
-    def initialize(style, op_name, optype_name, headerparts, bodyparts, faultpart, soapaction)
-      @style = style
-      @op_name = op_name
-      @optype_name = optype_name
-      @headerparts = headerparts
-      @bodyparts = bodyparts
-      @faultpart = faultpart
-      @soapaction = soapaction
-    end
-  end
-
-  attr_reader :soapaction
-  attr_reader :style
-
-  def initialize
-    super
-    @soapaction = nil
-    @style = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when StyleAttrName
-      if ["document", "rpc"].include?(value.source)
-	@style = value.source.intern
-      else
-	raise Parser::AttributeConstraintError.new(
-          "Unexpected value #{ value }.")
-      end
-    when SOAPActionAttrName
-      @soapaction = value.source
-    else
-      nil
-    end
-  end
-
-  def input_info
-    name_info = parent.find_operation.input_info
-    param_info(name_info, parent.input)
-  end
-
-  def output_info
-    name_info = parent.find_operation.output_info
-    param_info(name_info, parent.output)
-  end
-
-  def operation_style
-    return @style if @style
-    if parent_binding.soapbinding
-      return parent_binding.soapbinding.style
-    end
-    nil
-  end
-
-private
-
-  def parent_binding
-    parent.parent
-  end
-
-  def param_info(name_info, param)
-    op_name = name_info.op_name
-    optype_name = name_info.optype_name
-
-    soapheader = param.soapheader
-    headerparts = soapheader.collect { |item| item.find_part }
-
-    soapbody = param.soapbody
-    if soapbody.encodingstyle and
-	soapbody.encodingstyle != ::SOAP::EncodingNamespace
-      raise NotImplementedError.new(
-	"EncodingStyle '#{ soapbody.encodingstyle }' not supported.")
-    end
-    if soapbody.namespace
-      op_name = XSD::QName.new(soapbody.namespace, op_name.name)
-    end
-    if soapbody.parts
-      target = soapbody.parts.split(/\s+/)
-      bodyparts = name_info.parts.find_all { |part|
-	target.include?(part.name)
-      }
-    else
-      bodyparts = name_info.parts
-    end
-
-    faultpart = nil
-    OperationInfo.new(operation_style, op_name, optype_name, headerparts, bodyparts, faultpart, parent.soapaction)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb
deleted file mode 100644
index 88294ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-# WSDL4R - Creating servant skelton code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class ServantSkeltonCreator
-  include ClassDefCreatorSupport
-  include XSD::CodeGen::GenSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(porttype = nil)
-    if porttype.nil?
-      result = ""
-      @definitions.porttypes.each do |type|
-	result << dump_porttype(type.name)
-	result << "\n"
-      end
-    else
-      result = dump_porttype(porttype)
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    c = XSD::CodeGen::ClassDef.new(class_name)
-    operations = @definitions.porttype(name).operations
-    operations.each do |operation|
-      name = safemethodname(operation.name.name)
-      input = operation.input
-      params = input.find_message.parts.collect { |part|
-        safevarname(part.name)
-      }
-      m = XSD::CodeGen::MethodDef.new(name, params) do <<-EOD
-            p [#{params.join(", ")}]
-            raise NotImplementedError.new
-          EOD
-        end
-      m.comment = dump_method_signature(operation)
-      c.add_method(m)
-    end
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb
deleted file mode 100644
index 0b751b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# WSDL4R - Creating standalone server stub code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class StandaloneServerStubCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    warn("- Standalone stub can have only 1 port for now.  So creating stub for the first port and rests are ignored.")
-    warn("- Standalone server stub ignores port location defined in WSDL.  Location is http://localhost:10080/ by default.  Generated client from WSDL must be configured to point this endpoint manually.")
-    port = @definitions.service(service_name).ports[0]
-    dump_porttype(port.porttype.name)
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-
-    c1 = XSD::CodeGen::ClassDef.new(class_name)
-    c1.def_require("soap/rpc/standaloneServer")
-    c1.def_require("soap/mapping/registry")
-    c1.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c1.def_code(mr_creator.dump(types))
-    c1.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
-      "::SOAP::RPC::StandaloneServer")
-    c2.def_method("initialize", "*arg") do
-      <<-EOD
-        super(*arg)
-        servant = #{class_name}.new
-        #{class_name}::Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            @router.add_document_operation(servant, *definitions)
-          else
-            @router.add_rpc_operation(servant, *definitions)
-          end
-        end
-        self.mapping_registry = #{class_name}::MappingRegistry
-      EOD
-    end
-    c1.dump + "\n" + c2.dump + format(<<-EOD)
-
-      if $0 == __FILE__
-        # Change listen port.
-        server = #{class_name}App.new('app', nil, '0.0.0.0', 10080)
-        trap(:INT) do
-          server.shutdown
-        end
-        server.start
-      end
-    EOD
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/wsdl2ruby.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/wsdl2ruby.rb
deleted file mode 100644
index 16b05fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/soap/wsdl2ruby.rb
+++ /dev/null
@@ -1,176 +0,0 @@
-# WSDL4R - WSDL to ruby mapping library.
-# Copyright (C) 2002-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'logger'
-require 'xsd/qname'
-require 'wsdl/importer'
-require 'wsdl/soap/classDefCreator'
-require 'wsdl/soap/servantSkeltonCreator'
-require 'wsdl/soap/driverCreator'
-require 'wsdl/soap/clientSkeltonCreator'
-require 'wsdl/soap/standaloneServerStubCreator'
-require 'wsdl/soap/cgiStubCreator'
-
-
-module WSDL
-module SOAP
-
-
-class WSDL2Ruby
-  attr_accessor :location
-  attr_reader :opt
-  attr_accessor :logger
-  attr_accessor :basedir
-
-  def run
-    unless @location
-      raise RuntimeError, "WSDL location not given"
-    end
-    @wsdl = import(@location)
-    @name = @wsdl.name ? @wsdl.name.name : 'default'
-    create_file
-  end
-
-private
-
-  def initialize
-    @location = nil
-    @opt = {}
-    @logger = Logger.new(STDERR)
-    @basedir = nil
-    @wsdl = nil
-    @name = nil
-  end
-
-  def create_file
-    create_classdef if @opt.key?('classdef')
-    create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton')
-    create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub')
-    create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub')
-    create_driver(@opt['driver']) if @opt.key?('driver')
-    create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton')
-  end
-
-  def create_classdef
-    @logger.info { "Creating class definition." }
-    @classdef_filename = @name + '.rb'
-    check_file(@classdef_filename) or return
-    write_file(@classdef_filename) do |f|
-      f << WSDL::SOAP::ClassDefCreator.new(@wsdl).dump
-    end
-  end
-
-  def create_client_skelton(servicename)
-    @logger.info { "Creating client skelton." }
-    servicename ||= @wsdl.services[0].name.name
-    @client_skelton_filename = servicename + 'Client.rb'
-    check_file(@client_skelton_filename) or return
-    write_file(@client_skelton_filename) do |f|
-      f << shbang << "\n"
-      f << "require '#{@driver_filename}'\n\n" if @driver_filename
-      f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl).dump(
-	create_name(servicename))
-    end
-  end
-
-  def create_servant_skelton(porttypename)
-    @logger.info { "Creating servant skelton." }
-    @servant_skelton_filename = (porttypename || @name + 'Servant') + '.rb'
-    check_file(@servant_skelton_filename) or return
-    write_file(@servant_skelton_filename) do |f|
-      f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
-      f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl).dump(
-	create_name(porttypename))
-    end
-  end
-
-  def create_cgi_stub(servicename)
-    @logger.info { "Creating CGI stub." }
-    servicename ||= @wsdl.services[0].name.name
-    @cgi_stubFilename = servicename + '.cgi'
-    check_file(@cgi_stubFilename) or return
-    write_file(@cgi_stubFilename) do |f|
-      f << shbang << "\n"
-      if @servant_skelton_filename
-	f << "require '#{@servant_skelton_filename}'\n\n"
-      end
-      f << WSDL::SOAP::CGIStubCreator.new(@wsdl).dump(create_name(servicename))
-    end
-  end
-
-  def create_standalone_server_stub(servicename)
-    @logger.info { "Creating standalone stub." }
-    servicename ||= @wsdl.services[0].name.name
-    @standalone_server_stub_filename = servicename + '.rb'
-    check_file(@standalone_server_stub_filename) or return
-    write_file(@standalone_server_stub_filename) do |f|
-      f << shbang << "\n"
-      f << "require '#{@servant_skelton_filename}'\n\n" if @servant_skelton_filename
-      f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl).dump(
-	create_name(servicename))
-    end
-  end
-
-  def create_driver(porttypename)
-    @logger.info { "Creating driver." }
-    @driver_filename = (porttypename || @name) + 'Driver.rb'
-    check_file(@driver_filename) or return
-    write_file(@driver_filename) do |f|
-      f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
-      f << WSDL::SOAP::DriverCreator.new(@wsdl).dump(
-	create_name(porttypename))
-    end
-  end
-
-  def write_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    File.open(filename, "w") do |f|
-      yield f
-    end
-  end
-
-  def check_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    if FileTest.exist?(filename)
-      if @opt.key?('force')
-	@logger.warn {
-	  "File '#{filename}' exists but overrides it."
-	}
-	true
-      else
-	@logger.warn {
-	  "File '#{filename}' exists.  #{$0} did not override it."
-	}
-	false
-      end
-    else
-      @logger.info { "Creates file '#{filename}'." }
-      true
-    end
-  end
-
-  def shbang
-    "#!/usr/bin/env ruby"
-  end
-
-  def create_name(name)
-    name ? XSD::QName.new(@wsdl.targetnamespace, name) : nil
-  end
-
-  def import(location)
-    WSDL::Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/types.rb
deleted file mode 100644
index 96ae5a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/types.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# WSDL4R - WSDL types definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Types < Info
-  attr_reader :schemas
-
-  def initialize
-    super
-    @schemas = []
-  end
-
-  def parse_element(element)
-    case element
-    when SchemaName
-      o = XMLSchema::Schema.new
-      @schemas << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    nil
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/wsdl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/wsdl.rb
deleted file mode 100644
index eb13c18..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/wsdl.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# WSDL4R - Base definitions.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-
-
-module WSDL
-
-
-Version = '0.0.2'
-
-Namespace = 'http://schemas.xmlsoap.org/wsdl/'
-SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/'
-
-class Error < StandardError; end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/all.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/all.rb
deleted file mode 100644
index bb9566f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/all.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class All < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/annotation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/annotation.rb
deleted file mode 100644
index 633bd19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/annotation.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# WSDL4R - WSDL SOAP documentation element.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Annotation < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/any.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/any.rb
deleted file mode 100644
index 72d25e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/any.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - XMLSchema any definition for WSDL.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Any < Info
-  attr_accessor :maxoccurs
-  attr_accessor :minoccurs
-  attr_accessor :namespace
-  attr_accessor :process_contents
-
-  def initialize
-    super()
-    @maxoccurs = '1'
-    @minoccurs = '1'
-    @namespace = '##any'
-    @process_contents = 'strict'
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    when ProcessContentsAttrName
-      @process_contents = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/attribute.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/attribute.rb
deleted file mode 100644
index f904866..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/attribute.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-# WSDL4R - XMLSchema attribute definition for WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Attribute < Info
-  class << self
-    if RUBY_VERSION > "1.7.0"
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        define_method(name) {
-          instance_variable_get("@#{name}") ||
-            (refelement ? refelement.__send__(name) : nil)
-        }
-      end
-    else
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @#{name} || (refelement ? refelement.#{name} : nil)
-          end
-        EOS
-      end
-    end
-  end
-
-  attr_writer :use
-  attr_writer :form
-  attr_writer :name
-  attr_writer :type
-  attr_writer :local_simpletype
-  attr_writer :default
-  attr_writer :fixed
-
-  attr_reader_ref :use
-  attr_reader_ref :form
-  attr_reader_ref :name
-  attr_reader_ref :type
-  attr_reader_ref :local_simpletype
-  attr_reader_ref :default
-  attr_reader_ref :fixed
-
-  attr_accessor :ref
-  attr_accessor :arytype
-
-  def initialize
-    super
-    @use = nil
-    @form = nil
-    @name = nil
-    @type = nil
-    @local_simpletype = nil
-    @default = nil
-    @fixed = nil
-    @ref = nil
-    @refelement = nil
-    @arytype = nil
-  end
-
-  def refelement
-    @refelement ||= root.collect_attributes[@ref]
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when SimpleTypeName
-      @local_simpletype = SimpleType.new
-      @local_simpletype
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when RefAttrName
-      @ref = value
-    when UseAttrName
-      @use = value.source
-    when FormAttrName
-      @form = value.source
-    when NameAttrName
-      if directelement?
-        @name = XSD::QName.new(targetnamespace, value.source)
-      else
-        @name = XSD::QName.new(nil, value.source)
-      end
-    when TypeAttrName
-      @type = value
-    when DefaultAttrName
-      @default = value.source
-    when FixedAttrName
-      @fixed = value.source
-    when ArrayTypeAttrName
-      @arytype = if value.namespace.nil?
-          XSD::QName.new(XSD::Namespace, value.source)
-        else
-          value
-        end
-    else
-      nil
-    end
-  end
-
-private
-
-  def directelement?
-    parent.is_a?(Schema)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/choice.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/choice.rb
deleted file mode 100644
index f6d27fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/choice.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Choice < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexContent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexContent.rb
deleted file mode 100644
index f7fb6c1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexContent.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# WSDL4R - XMLSchema complexContent definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexContent < Info
-  attr_accessor :base
-  attr_reader :derivetype
-  attr_reader :content
-  attr_reader :attributes
-
-  def initialize
-    super
-    @base = nil
-    @derivetype = nil
-    @content = nil
-    @attributes = XSD::NamedElements.new
-    @basetype = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def basetype
-    @basetype ||= root.collect_complextypes[@base]
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName, ExtensionName
-      @derivetype = element.name
-      self
-    when AllName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = All.new
-      @content
-    when SequenceName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = Sequence.new
-      @content
-    when ChoiceName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = Choice.new
-      @content
-    when AttributeName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      o = Attribute.new
-      @attributes << o
-      o
-    end
-  end
-
-  def parse_attr(attr, value)
-    if @derivetype.nil?
-      return nil
-    end
-    case attr
-    when BaseAttrName
-      @base = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexType.rb
deleted file mode 100644
index dc9ec95..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/complexType.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/content'
-require 'wsdl/xmlSchema/element'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexType < Info
-  attr_accessor :name
-  attr_accessor :complexcontent
-  attr_accessor :simplecontent
-  attr_reader :content
-  attr_accessor :final
-  attr_accessor :mixed
-  attr_reader :attributes
-
-  def initialize(name = nil)
-    super()
-    @name = name
-    @complexcontent = nil
-    @simplecontent = nil
-    @content = nil
-    @final = nil
-    @mixed = false
-    @attributes = XSD::NamedElements.new
-  end
-
-  def targetnamespace
-    # inner elements can be qualified
-    # parent.is_a?(WSDL::XMLSchema::Element) ? nil : parent.targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
- 
-  AnyAsElement = Element.new(XSD::QName.new(nil, 'any'), XSD::AnyTypeName)
-  def each_element
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          yield(AnyAsElement)
-        else
-          yield(element)
-        end
-      end
-    end
-  end
-
-  def find_element(name)
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          return AnyAsElement if name == AnyAsElement.name
-        else
-          return element if name == element.name
-        end
-      end
-    end
-    nil
-  end
-
-  def find_element_by_name(name)
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          return AnyAsElement if name == AnyAsElement.name.name
-        else
-          return element if name == element.name.name
-        end
-      end
-    end
-    nil
-  end
-
-  def sequence_elements=(elements)
-    @content = Sequence.new
-    elements.each do |element|
-      @content << element
-    end
-  end
-
-  def all_elements=(elements)
-    @content = All.new
-    elements.each do |element|
-      @content << element
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when AllName
-      @content = All.new
-    when SequenceName
-      @content = Sequence.new
-    when ChoiceName
-      @content = Choice.new
-    when ComplexContentName
-      @complexcontent = ComplexContent.new
-    when SimpleContentName
-      @simplecontent = SimpleContent.new
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when FinalAttrName
-      @final = value.source
-    when MixedAttrName
-      @mixed = (value.source == 'true')
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/content.rb
deleted file mode 100644
index 2f1dfb4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/content.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Content < Info
-  attr_accessor :final
-  attr_accessor :mixed
-  attr_accessor :type
-  attr_reader :contents
-  attr_reader :elements
-
-  def initialize
-    super()
-    @final = nil
-    @mixed = false
-    @type = nil
-    @contents = []
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def <<(content)
-    @contents << content
-    update_elements
-  end
-
-  def each
-    @contents.each do |content|
-      yield content
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when AllName, SequenceName, ChoiceName
-      o = Content.new
-      o.type = element.name
-      @contents << o
-      o
-    when AnyName
-      o = Any.new
-      @contents << o
-      o
-    when ElementName
-      o = Element.new
-      @contents << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when FinalAttrName
-      @final = value.source
-    when MixedAttrName
-      @mixed = (value.source == 'true')
-    else
-      nil
-    end
-  end
-
-  def parse_epilogue
-    update_elements
-  end
-
-private
-
-  def update_elements
-    @elements = []
-    @contents.each do |content|
-      if content.is_a?(Element)
-	@elements << [content.name, content]
-      end
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/data.rb
deleted file mode 100644
index 23ab1ad..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/data.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# WSDL4R - XMLSchema data definitions.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'wsdl/xmlSchema/annotation'
-require 'wsdl/xmlSchema/schema'
-require 'wsdl/xmlSchema/import'
-require 'wsdl/xmlSchema/include'
-require 'wsdl/xmlSchema/simpleType'
-require 'wsdl/xmlSchema/simpleRestriction'
-require 'wsdl/xmlSchema/simpleExtension'
-require 'wsdl/xmlSchema/complexType'
-require 'wsdl/xmlSchema/complexContent'
-require 'wsdl/xmlSchema/simpleContent'
-require 'wsdl/xmlSchema/any'
-require 'wsdl/xmlSchema/element'
-require 'wsdl/xmlSchema/all'
-require 'wsdl/xmlSchema/choice'
-require 'wsdl/xmlSchema/sequence'
-require 'wsdl/xmlSchema/attribute'
-require 'wsdl/xmlSchema/unique'
-require 'wsdl/xmlSchema/enumeration'
-require 'wsdl/xmlSchema/length'
-require 'wsdl/xmlSchema/pattern'
-
-module WSDL
-module XMLSchema
-
-
-AllName = XSD::QName.new(XSD::Namespace, 'all')
-AnnotationName = XSD::QName.new(XSD::Namespace, 'annotation')
-AnyName = XSD::QName.new(XSD::Namespace, 'any')
-AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
-ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
-ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent')
-ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType')
-ElementName = XSD::QName.new(XSD::Namespace, 'element')
-EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
-ExtensionName = XSD::QName.new(XSD::Namespace, 'extension')
-ImportName = XSD::QName.new(XSD::Namespace, 'import')
-IncludeName = XSD::QName.new(XSD::Namespace, 'include')
-LengthName = XSD::QName.new(XSD::Namespace, 'length')
-PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
-RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction')
-SequenceName = XSD::QName.new(XSD::Namespace, 'sequence')
-SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
-SimpleContentName = XSD::QName.new(XSD::Namespace, 'simpleContent')
-SimpleTypeName = XSD::QName.new(XSD::Namespace, 'simpleType')
-UniqueName = XSD::QName.new(XSD::Namespace, 'unique')
-
-AttributeFormDefaultAttrName = XSD::QName.new(nil, 'attributeFormDefault')
-BaseAttrName = XSD::QName.new(nil, 'base')
-DefaultAttrName = XSD::QName.new(nil, 'default')
-ElementFormDefaultAttrName = XSD::QName.new(nil, 'elementFormDefault')
-FinalAttrName = XSD::QName.new(nil, 'final')
-FixedAttrName = XSD::QName.new(nil, 'fixed')
-FormAttrName = XSD::QName.new(nil, 'form')
-IdAttrName = XSD::QName.new(nil, 'id')
-MaxOccursAttrName = XSD::QName.new(nil, 'maxOccurs')
-MinOccursAttrName = XSD::QName.new(nil, 'minOccurs')
-MixedAttrName = XSD::QName.new(nil, 'mixed')
-NameAttrName = XSD::QName.new(nil, 'name')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-NillableAttrName = XSD::QName.new(nil, 'nillable')
-ProcessContentsAttrName = XSD::QName.new(nil, 'processContents')
-RefAttrName = XSD::QName.new(nil, 'ref')
-SchemaLocationAttrName = XSD::QName.new(nil, 'schemaLocation')
-TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
-TypeAttrName = XSD::QName.new(nil, 'type')
-UseAttrName = XSD::QName.new(nil, 'use')
-ValueAttrName = XSD::QName.new(nil, 'value')
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/element.rb
deleted file mode 100644
index fffb648..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/element.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-# WSDL4R - XMLSchema element definition for WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Element < Info
-  class << self
-    if RUBY_VERSION > "1.7.0"
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        define_method(name) {
-          instance_variable_get("@#{name}") ||
-            (refelement ? refelement.__send__(name) : nil)
-        }
-      end
-    else
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @#{name} || (refelement ? refelement.#{name} : nil)
-          end
-        EOS
-      end
-    end
-  end
-
-  attr_writer :name	# required
-  attr_writer :form
-  attr_writer :type
-  attr_writer :local_simpletype
-  attr_writer :local_complextype
-  attr_writer :constraint
-  attr_writer :maxoccurs
-  attr_writer :minoccurs
-  attr_writer :nillable
-
-  attr_reader_ref :name
-  attr_reader_ref :form
-  attr_reader_ref :type
-  attr_reader_ref :local_simpletype
-  attr_reader_ref :local_complextype
-  attr_reader_ref :constraint
-  attr_reader_ref :maxoccurs
-  attr_reader_ref :minoccurs
-  attr_reader_ref :nillable
-
-  attr_accessor :ref
-
-  def initialize(name = nil, type = nil)
-    super()
-    @name = name
-    @form = nil
-    @type = type
-    @local_simpletype = @local_complextype = nil
-    @constraint = nil
-    @maxoccurs = '1'
-    @minoccurs = '1'
-    @nillable = nil
-    @ref = nil
-    @refelement = nil
-  end
-
-  def refelement
-    @refelement ||= (@ref ? root.collect_elements[@ref] : nil)
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def elementform
-    self.form.nil? ? parent.elementformdefault : self.form
-  end
-
-  def parse_element(element)
-    case element
-    when SimpleTypeName
-      @local_simpletype = SimpleType.new
-      @local_simpletype
-    when ComplexTypeName
-      @type = nil
-      @local_complextype = ComplexType.new
-      @local_complextype
-    when UniqueName
-      @constraint = Unique.new
-      @constraint
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      # namespace may be nil
-      if directelement? or elementform == 'qualified'
-        @name = XSD::QName.new(targetnamespace, value.source)
-      else
-        @name = XSD::QName.new(nil, value.source)
-      end
-    when FormAttrName
-      @form = value.source
-    when TypeAttrName
-      @type = value
-    when RefAttrName
-      @ref = value
-    when MaxOccursAttrName
-      if parent.is_a?(All)
-	if value.source != '1'
-	  raise Parser::AttrConstraintError.new(
-            "cannot parse #{value} for #{attr}")
-	end
-      end
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      if parent.is_a?(All)
-	unless ['0', '1'].include?(value.source)
-	  raise Parser::AttrConstraintError.new(
-            "cannot parse #{value} for #{attr}")
-	end
-      end
-      @minoccurs = value.source
-    when NillableAttrName
-      @nillable = (value.source == 'true')
-    else
-      nil
-    end
-  end
-
-private
-
-  def directelement?
-    parent.is_a?(Schema)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/enumeration.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/enumeration.rb
deleted file mode 100644
index 5a16476..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/enumeration.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# WSDL4R - XMLSchema enumeration definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Enumeration < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      parent.enumeration << value.source
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/import.rb
deleted file mode 100644
index d3487af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/import.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - XMLSchema import definition.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/importer'
-
-
-module WSDL
-module XMLSchema
-
-
-class Import < Info
-  attr_reader :namespace
-  attr_reader :schemalocation
-  attr_reader :content
-
-  def initialize
-    super
-    @namespace = nil
-    @schemalocation = nil
-    @content = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NamespaceAttrName
-      @namespace = value.source
-    when SchemaLocationAttrName
-      @schemalocation = URI.parse(value.source)
-      if @schemalocation.relative? and !parent.location.nil? and
-          !parent.location.relative?
-        @schemalocation = parent.location + @schemalocation
-      end
-      if root.importedschema.key?(@schemalocation)
-        @content = root.importedschema[@schemalocation]
-      else
-        root.importedschema[@schemalocation] = nil      # placeholder
-        @content = import(@schemalocation)
-        root.importedschema[@schemalocation] = @content
-      end
-      @schemalocation
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location, root)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/importer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/importer.rb
deleted file mode 100644
index f57bfd9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/importer.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-# WSDL4R - XSD importer library.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/httpconfigloader'
-require 'wsdl/xmlSchema/parser'
-
-
-module WSDL
-module XMLSchema
-
-
-class Importer
-  def self.import(location, originalroot = nil)
-    new.import(location, originalroot)
-  end
-
-  def initialize
-    @web_client = nil
-  end
-
-  def import(location, originalroot = nil)
-    unless location.is_a?(URI)
-      location = URI.parse(location)
-    end
-    content = parse(fetch(location), location, originalroot)
-    content.location = location
-    content
-  end
-
-private
-
-  def parse(content, location, originalroot)
-    opt = {
-      :location => location,
-      :originalroot => originalroot
-    }
-    WSDL::XMLSchema::Parser.new(opt).parse(content)
-  end
-
-  def fetch(location)
-    warn("importing: #{location}") if $DEBUG
-    content = nil
-    if location.scheme == 'file' or
-        (location.relative? and FileTest.exist?(location.path))
-      content = File.open(location.path).read
-    elsif location.scheme and location.scheme.size == 1 and
-        FileTest.exist?(location.to_s)
-      # ToDo: remove this ugly workaround for a path with drive letter
-      # (D://foo/bar)
-      content = File.open(location.to_s).read
-    else
-      client = web_client.new(nil, "WSDL4R")
-      client.proxy = ::SOAP::Env::HTTP_PROXY
-      client.no_proxy = ::SOAP::Env::NO_PROXY
-      if opt = ::SOAP::Property.loadproperty(::SOAP::PropertyName)
-        ::SOAP::HTTPConfigLoader.set_options(client,
-          opt["client.protocol.http"])
-      end
-      content = client.get_content(location)
-    end
-    content
-  end
-
-  def web_client
-    @web_client ||= begin
-	require 'http-access2'
-	if HTTPAccess2::VERSION < "2.0"
-	  raise LoadError.new("http-access/2.0 or later is required.")
-	end
-	HTTPAccess2::Client
-      rescue LoadError
-	warn("Loading http-access2 failed.  Net/http is used.") if $DEBUG
-	require 'soap/netHttpClient'
-	::SOAP::NetHttpClient
-      end
-    @web_client
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/include.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/include.rb
deleted file mode 100644
index af1ef94..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/include.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - XMLSchema include definition.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/importer'
-
-
-module WSDL
-module XMLSchema
-
-
-class Include < Info
-  attr_reader :schemalocation
-  attr_reader :content
-
-  def initialize
-    super
-    @schemalocation = nil
-    @content = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when SchemaLocationAttrName
-      @schemalocation = URI.parse(value.source)
-      if @schemalocation.relative?
-        @schemalocation = parent.location + @schemalocation
-      end
-      @content = import(@schemalocation)
-      @schemalocation
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/length.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/length.rb
deleted file mode 100644
index 7f61602..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/length.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# WSDL4R - XMLSchema length definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Length < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/parser.rb
deleted file mode 100644
index 057d9d9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/parser.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# WSDL4R - WSDL XML Instance parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-require 'xsd/datatypes'
-require 'xsd/xmlparser'
-require 'wsdl/xmlSchema/data'
-
-
-module WSDL
-module XMLSchema
-
-
-class Parser
-  include XSD
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-  class AttributeConstraintError < FormatDecodeError; end
-
-private
-
-  class ParseFrame
-    attr_reader :ns
-    attr_reader :name
-    attr_accessor :node
-
-  private
-
-    def initialize(ns, name, node)
-      @ns = ns
-      @name = name
-      @node = node
-    end
-  end
-
-public
-
-  def initialize(opt = {})
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @ignored = {}
-    @location = opt[:location]
-    @originalroot = opt[:originalroot]
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-    @textbuf = ''
-    @parser.do_parse(string_or_readable)
-    @lastnode
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-    else
-      ns = XSD::NS.new
-      parent = nil
-    end
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    node = decode_tag(ns, name, attrs, parent)
-    @parsestack << ParseFrame.new(ns, name, node)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      ns = lastframe.ns
-      decode_text(ns, text)
-    else
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node)
-    @lastnode = lastframe.node
-  end
-
-private
-
-  def decode_tag(ns, name, attrs, parent)
-    o = nil
-    elename = ns.parse(name)
-    if !parent
-      if elename == SchemaName
-	o = Schema.parse_element(elename)
-        o.location = @location
-      else
-	raise UnknownElementError.new("unknown element: #{elename}")
-      end
-      o.root = @originalroot if @originalroot   # o.root = o otherwise
-    else
-      if elename == AnnotationName
-        # only the first annotation element is allowed for each element.
-        o = Annotation.new
-      else
-        o = parent.parse_element(elename)
-      end
-      unless o
-        unless @ignored.key?(elename)
-          warn("ignored element: #{elename} of #{parent.class}")
-          @ignored[elename] = elename
-        end
-	o = Documentation.new	# which accepts any element.
-      end
-      # node could be a pseudo element.  pseudo element has its own parent.
-      o.root = parent.root
-      o.parent = parent if o.parent.nil?
-    end
-    attrs.each do |key, value|
-      attr_ele = ns.parse(key, true)
-      value_ele = ns.parse(value, true)
-      value_ele.source = value  # for recovery; value may not be a QName
-      if attr_ele == IdAttrName
-	o.id = value_ele
-      else
-        unless o.parse_attr(attr_ele, value_ele)
-          unless @ignored.key?(attr_ele)
-            warn("ignored attr: #{attr_ele}")
-            @ignored[attr_ele] = attr_ele
-          end
-        end
-      end
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    node.parse_epilogue
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/pattern.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/pattern.rb
deleted file mode 100644
index f826be4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/pattern.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# WSDL4R - XMLSchema pattern definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Pattern < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      parent.pattern = /\A#{value.source}\z/n
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/schema.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/schema.rb
deleted file mode 100644
index ec97d07..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/schema.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-# WSDL4R - XMLSchema schema definition for WSDL.
-# Copyright (C) 2002, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class Schema < Info
-  attr_reader :targetnamespace	# required
-  attr_reader :complextypes
-  attr_reader :simpletypes
-  attr_reader :elements
-  attr_reader :attributes
-  attr_reader :imports
-  attr_accessor :attributeformdefault
-  attr_accessor :elementformdefault
-
-  attr_reader :importedschema
-
-  def initialize
-    super
-    @targetnamespace = nil
-    @complextypes = XSD::NamedElements.new
-    @simpletypes = XSD::NamedElements.new
-    @elements = XSD::NamedElements.new
-    @attributes = XSD::NamedElements.new
-    @imports = []
-    @attributeformdefault = "unqualified"
-    @elementformdefault = "unqualified"
-    @importedschema = {}
-    @location = nil
-    @root = self
-  end
-
-  def location
-    @location || (root.nil? ? nil : root.location)
-  end
-
-  def location=(location)
-    @location = location
-  end
-
-  def parse_element(element)
-    case element
-    when ImportName
-      o = Import.new
-      @imports << o
-      o
-    when IncludeName
-      o = Include.new
-      @imports << o
-      o
-    when ComplexTypeName
-      o = ComplexType.new
-      @complextypes << o
-      o
-    when SimpleTypeName
-      o = SimpleType.new
-      @simpletypes << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when TargetNamespaceAttrName
-      @targetnamespace = value.source
-    when AttributeFormDefaultAttrName
-      @attributeformdefault = value.source
-    when ElementFormDefaultAttrName
-      @elementformdefault = value.source
-    else
-      nil
-    end
-  end
-
-  def collect_attributes
-    result = XSD::NamedElements.new
-    result.concat(@attributes)
-    @imports.each do |import|
-      result.concat(import.content.collect_attributes) if import.content
-    end
-    result
-  end
-
-  def collect_elements
-    result = XSD::NamedElements.new
-    result.concat(@elements)
-    @imports.each do |import|
-      result.concat(import.content.collect_elements) if import.content
-    end
-    result
-  end
-
-  def collect_complextypes
-    result = XSD::NamedElements.new
-    result.concat(@complextypes)
-    @imports.each do |import|
-      result.concat(import.content.collect_complextypes) if import.content
-    end
-    result
-  end
-
-  def collect_simpletypes
-    result = XSD::NamedElements.new
-    result.concat(@simpletypes)
-    @imports.each do |import|
-      result.concat(import.content.collect_simpletypes) if import.content
-    end
-    result
-  end
-
-  def self.parse_element(element)
-    if element == SchemaName
-      Schema.new
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/sequence.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/sequence.rb
deleted file mode 100644
index 823fa3b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/sequence.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Sequence < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleContent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleContent.rb
deleted file mode 100644
index e1f35c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleContent.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - XMLSchema simpleContent definition for WSDL.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleContent < Info
-  attr_reader :restriction
-  attr_reader :extension
-
-  def check_lexical_format(value)
-    check(value)
-  end
-
-  def initialize
-    super
-    @restriction = nil
-    @extension = nil
-  end
-
-  def base
-    content.base
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName
-      @restriction = SimpleRestriction.new
-      @restriction
-    when ExtensionName
-      @extension = SimpleExtension.new
-      @extension
-    end
-  end
-
-private
-
-  def content
-    @restriction || @extension
-  end
-
-  def check(value)
-    unless content.valid?(value)
-      raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb
deleted file mode 100644
index 3c53a73..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - XMLSchema simpleType extension definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleExtension < Info
-  attr_reader :base
-  attr_reader :attributes
-
-  def initialize
-    super
-    @base = nil
-    @attributes = XSD::NamedElements.new
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-  
-  def valid?(value)
-    true
-  end
-
-  def parse_element(element)
-    case element
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when BaseAttrName
-      @base = value
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb
deleted file mode 100644
index e8bf3eb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - XMLSchema simpleContent restriction definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleRestriction < Info
-  attr_reader :base
-  attr_reader :enumeration
-  attr_accessor :length
-  attr_accessor :pattern
-
-  def initialize
-    super
-    @base = nil
-    @enumeration = []   # NamedElements?
-    @length = nil
-    @pattern = nil
-  end
-  
-  def valid?(value)
-    return false unless check_restriction(value)
-    return false unless check_length(value)
-    return false unless check_pattern(value)
-    true
-  end
-
-  def parse_element(element)
-    case element
-    when EnumerationName
-      Enumeration.new   # just a parsing handler
-    when LengthName
-      Length.new   # just a parsing handler
-    when PatternName
-      Pattern.new   # just a parsing handler
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when BaseAttrName
-      @base = value
-    end
-  end
-
-private
-
-  def check_restriction(value)
-    @enumeration.empty? or @enumeration.include?(value)
-  end
-
-  def check_length(value)
-    @length.nil? or value.size == @length
-  end
-
-  def check_pattern(value)
-    @pattern.nil? or @pattern =~ value
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleType.rb
deleted file mode 100644
index e808c31..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/simpleType.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - XMLSchema simpleType definition for WSDL.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleType < Info
-  attr_accessor :name
-  attr_reader :restriction
-
-  def check_lexical_format(value)
-    if @restriction
-      check_restriction(value)
-    else
-      raise ArgumentError.new("incomplete simpleType")
-    end
-  end
-
-  def base
-    if @restriction
-      @restriction.base
-    else
-      raise ArgumentError.new("incomplete simpleType")
-    end
-  end
-
-  def initialize(name = nil)
-    super()
-    @name = name
-    @restriction = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName
-      @restriction = SimpleRestriction.new
-      @restriction
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    end
-  end
-
-private
-
-  def check_restriction(value)
-    unless @restriction.valid?(value)
-      raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/unique.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/unique.rb
deleted file mode 100644
index 837ff22..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/unique.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# WSDL4R - XMLSchema unique element.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Unique < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb
deleted file mode 100644
index afe5fc5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-# XSD4R - XSD to ruby mapping library.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'wsdl/xmlSchema/importer'
-require 'wsdl/soap/classDefCreator'
-
-
-module WSDL
-module XMLSchema
-
-
-class XSD2Ruby
-  attr_accessor :location
-  attr_reader :opt
-  attr_accessor :logger
-  attr_accessor :basedir
-
-  def run
-    unless @location
-      raise RuntimeError, "XML Schema location not given"
-    end
-    @xsd = import(@location)
-    @name = create_classname(@xsd)
-    create_file
-  end
-
-private
-
-  def initialize
-    @location = nil
-    @opt = {}
-    @logger = Logger.new(STDERR)
-    @basedir = nil
-    @xsd = nil
-    @name = nil
-  end
-
-  def create_file
-    create_classdef
-  end
-
-  def create_classdef
-    @logger.info { "Creating class definition." }
-    @classdef_filename = @name + '.rb'
-    check_file(@classdef_filename) or return
-    write_file(@classdef_filename) do |f|
-      f << WSDL::SOAP::ClassDefCreator.new(@xsd).dump
-    end
-  end
-
-  def write_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    File.open(filename, "w") do |f|
-      yield f
-    end
-  end
-
-  def check_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    if FileTest.exist?(filename)
-      if @opt.key?('force')
-	@logger.warn {
-	  "File '#{filename}' exists but overrides it."
-	}
-	true
-      else
-	@logger.warn {
-	  "File '#{filename}' exists.  #{$0} did not override it."
-	}
-	false
-      end
-    else
-      @logger.info { "Creates file '#{filename}'." }
-      true
-    end
-  end
-
-  def create_classname(xsd)
-    name = nil
-    if xsd.targetnamespace
-      name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0]
-    end
-    if name.nil?
-      'default'
-    else
-      XSD::CodeGen::GenSupport.safevarname(name)
-    end
-  end
-
-  def import(location)
-    WSDL::XMLSchema::Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/base64.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/base64.rb
deleted file mode 100644
index 0fe5b82..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/base64.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-=begin
-= xmlrpc/base64.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::Base64>))
-
-= XMLRPC::Base64
-== Description
-This class is necessary for (('xmlrpc4r')) to determine that a string should 
-be transmitted base64-encoded and not as a raw-string. 
-You can use (({XMLRPC::Base64})) on the client and server-side as a 
-parameter and/or return-value.
-
-== Class Methods
---- XMLRPC::Base64.new( str, state = :dec )
-    Creates a new (({XMLRPC::Base64})) instance with string ((|str|)) as the
-    internal string. When ((|state|)) is (({:dec})) it assumes that the 
-    string ((|str|)) is not in base64 format (perhaps already decoded), 
-    otherwise if ((|state|)) is (({:enc})) it decodes ((|str|)) 
-    and stores it as the internal string.
-    
---- XMLRPC::Base64.decode( str )
-    Decodes string ((|str|)) with base64 and returns that value.
-
---- XMLRPC::Base64.encode( str )
-    Encodes string ((|str|)) with base64 and returns that value.
-
-== Instance Methods
---- XMLRPC::Base64#decoded
-    Returns the internal string decoded.
-
---- XMLRPC::Base64#encoded
-    Returns the internal string encoded with base64.
-
-=end
-
-module XMLRPC
-
-class Base64
-  
-  def initialize(str, state = :dec)
-    case state
-    when :enc
-      @str = Base64.decode(str)
-    when :dec
-      @str = str
-    else
-      raise ArgumentError, "wrong argument; either :enc or :dec"
-    end
-  end
-  
-  def decoded
-    @str  
-  end
-  
-  def encoded
-    Base64.encode(@str)
-  end
-
-
-  def Base64.decode(str)
-    str.gsub(/\s+/, "").unpack("m")[0]
-  end
-
-  def Base64.encode(str)
-    [str].pack("m")
-  end
-
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: base64.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/client.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/client.rb
deleted file mode 100644
index 816926b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/client.rb
+++ /dev/null
@@ -1,619 +0,0 @@
-=begin
-= xmlrpc/client.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::Client>))
-* ((<XMLRPC::Client::Proxy>))
-
-
-= XMLRPC::Client
-== Synopsis
-    require "xmlrpc/client"
-
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-    begin
-      param = server.call("michael.add", 4, 5)
-      puts "4 + 5 = #{param}"
-    rescue XMLRPC::FaultException => e
-      puts "Error:"
-      puts e.faultCode
-      puts e.faultString
-    end
-
-or
-
-    require "xmlrpc/client"
-  
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-    ok, param = server.call2("michael.add", 4, 5)
-    if ok then
-      puts "4 + 5 = #{param}"
-    else
-      puts "Error:"
-      puts param.faultCode
-      puts param.faultString
-    end
-
-== Description
-Class (({XMLRPC::Client})) provides remote procedure calls to a XML-RPC server.
-After setting the connection-parameters with ((<XMLRPC::Client.new>)) which
-creates a new (({XMLRPC::Client})) instance, you can execute a remote procedure 
-by sending the ((<call|XMLRPC::Client#call>)) or ((<call2|XMLRPC::Client#call2>))
-message to this new instance. The given parameters indicate which method to 
-call on the remote-side and of course the parameters for the remote procedure.
-
-== Class Methods
---- XMLRPC::Client.new( host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil, user=nil, password=nil, use_ssl=false, timeout =nil)
-    Creates an object which represents the remote XML-RPC server on the 
-    given host ((|host|)). If the server is CGI-based, ((|path|)) is the
-    path to the CGI-script, which will be called, otherwise (in the
-    case of a standalone server) ((|path|)) should be (({"/RPC2"})).
-    ((|port|)) is the port on which the XML-RPC server listens.
-    If ((|proxy_host|)) is given, then a proxy server listening at
-    ((|proxy_host|)) is used. ((|proxy_port|)) is the port of the
-    proxy server.
-
-    Default values for ((|host|)), ((|path|)) and ((|port|)) are 'localhost', '/RPC2' and
-    '80' respectively using SSL '443'.
-
-    If ((|user|)) and ((|password|)) are given, each time a request is send, 
-    a Authorization header is send. Currently only Basic Authentification is 
-    implemented no Digest.
-
-    If ((|use_ssl|)) is set to (({true})), comunication over SSL is enabled.
-    Note, that you need the SSL package from RAA installed.
-
-    Parameter ((|timeout|)) is the time to wait for a XML-RPC response, defaults to 30.
-
---- XMLRPC::Client.new2( uri, proxy=nil, timeout=nil)
---- XMLRPC::Client.new_from_uri( uri, proxy=nil, timeout=nil)
-:   uri
-    URI specifying protocol (http or https), host, port, path, user and password.
-    Example: https://user:password@host:port/path
-
-:   proxy
-    Is of the form "host:port".
- 
-:   timeout
-    Defaults to 30. 
-
---- XMLRPC::Client.new3( hash={} )
---- XMLRPC::Client.new_from_hash( hash={} )
-    Parameter ((|hash|)) has following case-insensitive keys:
-    * host
-    * path
-    * port
-    * proxy_host
-    * proxy_port
-    * user
-    * password
-    * use_ssl
-    * timeout
-
-    Calls ((<XMLRPC::Client.new>)) with the corresponding values.
-
-== Instance Methods
---- XMLRPC::Client#call( method, *args )
-    Invokes the method named ((|method|)) with the parameters given by 
-    ((|args|)) on the XML-RPC server.
-    The parameter ((|method|)) is converted into a (({String})) and should 
-    be a valid XML-RPC method-name.  
-    Each parameter of ((|args|)) must be of one of the following types,
-    where (({Hash})), (({Struct})) and (({Array})) can contain any of these listed ((:types:)):
-    * (({Fixnum})), (({Bignum}))
-    * (({TrueClass})), (({FalseClass})) ((({true})), (({false})))
-    * (({String})), (({Symbol}))
-    * (({Float}))
-    * (({Hash})), (({Struct}))
-    * (({Array}))
-    * (({Date})), (({Time})), (({XMLRPC::DateTime}))
-    * (({XMLRPC::Base64})) 
-    * A Ruby object which class includes XMLRPC::Marshallable (only if Config::ENABLE_MARSHALLABLE is (({true}))). 
-      That object is converted into a hash, with one additional key/value pair "___class___" which contains the class name
-      for restoring later that object.
-    
-    The method returns the return-value from the RPC 
-    ((-stands for Remote Procedure Call-)). 
-    The type of the return-value is one of the above shown,
-    only that a (({Bignum})) is only allowed when it fits in 32-bit and
-    that a XML-RPC (('dateTime.iso8601')) type is always returned as
-    a ((<(({XMLRPC::DateTime}))|URL:datetime.html>)) object and 
-    a (({Struct})) is never returned, only a (({Hash})), the same for a (({Symbol})), where
-    always a (({String})) is returned. 
-    A (({XMLRPC::Base64})) is returned as a (({String})) from xmlrpc4r version 1.6.1 on.
-    
-    If the remote procedure returned a fault-structure, then a 
-    (({XMLRPC::FaultException})) exception is raised, which has two accessor-methods
-    (({faultCode})) and (({faultString})) of type (({Integer})) and (({String})).
-
---- XMLRPC::Client#call2( method, *args )
-    The difference between this method and ((<call|XMLRPC::Client#call>)) is, that
-    this method do ((*not*)) raise a (({XMLRPC::FaultException})) exception.
-    The method returns an array of two values. The first value indicates if 
-    the second value is a return-value ((({true}))) or an object of type
-    (({XMLRPC::FaultException})). 
-    Both are explained in ((<call|XMLRPC::Client#call>)).
-
-    Simple to remember: The "2" in "call2" denotes the number of values it returns.
-
---- XMLRPC::Client#multicall( *methods )
-    You can use this method to execute several methods on a XMLRPC server which supports
-    the multi-call extension.
-    Example:
-
-      s.multicall(
-        ['michael.add', 3, 4],
-        ['michael.sub', 4, 5]
-      )
-      # => [7, -1]
-
---- XMLRPC::Client#multicall2( *methods )
-    Same as ((<XMLRPC::Client#multicall>)), but returns like ((<XMLRPC::Client#call2>)) two parameters 
-    instead of raising an (({XMLRPC::FaultException})).
-
---- XMLRPC::Client#proxy( prefix, *args )
-    Returns an object of class (({XMLRPC::Client::Proxy})), initialized with
-    ((|prefix|)) and ((|args|)). A proxy object returned by this method behaves
-    like ((<XMLRPC::Client#call>)), i.e. a call on that object will raise a
-    (({XMLRPC::FaultException})) when a fault-structure is returned by that call. 
-
---- XMLRPC::Client#proxy2( prefix, *args )
-    Almost the same like ((<XMLRPC::Client#proxy>)) only that a call on the returned
-    (({XMLRPC::Client::Proxy})) object behaves like ((<XMLRPC::Client#call2>)), i.e.
-    a call on that object will return two parameters. 
-
-
-
-
---- XMLRPC::Client#call_async(...)
---- XMLRPC::Client#call2_async(...)
---- XMLRPC::Client#multicall_async(...)
---- XMLRPC::Client#multicall2_async(...)
---- XMLRPC::Client#proxy_async(...)
---- XMLRPC::Client#proxy2_async(...)
-    In contrast to corresponding methods without "_async", these can be
-    called concurrently and use for each request a new connection, where the 
-    non-asynchronous counterparts use connection-alive (one connection for all requests)
-    if possible. 
-
-    Note, that you have to use Threads to call these methods concurrently. 
-    The following example calls two methods concurrently:
-    
-      Thread.new {
-        p client.call_async("michael.add", 4, 5)
-      }
- 
-      Thread.new {
-        p client.call_async("michael.div", 7, 9)
-      }
- 
-
---- XMLRPC::Client#timeout
---- XMLRPC::Client#user
---- XMLRPC::Client#password
-    Return the corresponding attributes.
-
---- XMLRPC::Client#timeout= (new_timeout)
---- XMLRPC::Client#user= (new_user)
---- XMLRPC::Client#password= (new_password)
-    Set the corresponding attributes.
-    
-
---- XMLRPC::Client#set_writer( writer )
-    Sets the XML writer to use for generating XML output.
-    Should be an instance of a class from module (({XMLRPC::XMLWriter})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_WRITER})) is used. 
-
---- XMLRPC::Client#set_parser( parser )
-    Sets the XML parser to use for parsing XML documents.
-    Should be an instance of a class from module (({XMLRPC::XMLParser})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_PARSER})) is used.
-
---- XMLRPC::Client#cookie
---- XMLRPC::Client#cookie= (cookieString)
-    Get and set the HTTP Cookie header.
-
---- XMLRPC::Client#http_header_extra= (additionalHeaders)
-    Set extra HTTP headers that are included in the request.
-
---- XMLRPC::Client#http_header_extra
-    Access the via ((<XMLRPC::Client#http_header_extra=>)) assigned header. 
-
---- XMLRPC::Client#http_last_response
-    Returns the (({Net::HTTPResponse})) object of the last RPC.
-
-= XMLRPC::Client::Proxy
-== Synopsis
-    require "xmlrpc/client"
-
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-
-    michael  = server.proxy("michael")
-    michael2 = server.proxy("michael", 4)
-
-    # both calls should return the same value '9'.
-    p michael.add(4,5)
-    p michael2.add(5)
-
-== Description
-Class (({XMLRPC::Client::Proxy})) makes XML-RPC calls look nicer!
-You can call any method onto objects of that class - the object handles 
-(({method_missing})) and will forward the method call to a XML-RPC server.
-Don't use this class directly, but use instead method ((<XMLRPC::Client#proxy>)) or
-((<XMLRPC::Client#proxy2>)).
-
-== Class Methods
---- XMLRPC::Client::Proxy.new( server, prefix, args=[], meth=:call, delim="." ) 
-    Creates an object which provides (({method_missing})).
-
-    ((|server|)) must be of type (({XMLRPC::Client})), which is the XML-RPC server to be used
-    for a XML-RPC call. ((|prefix|)) and ((|delim|)) will be prepended to the methodname
-    called onto this object. 
-
-    Parameter ((|meth|)) is the method (call, call2, call_async, call2_async) to use for
-    a RPC.
-
-    ((|args|)) are arguments which are automatically given
-    to every XML-RPC call before the arguments provides through (({method_missing})).
-    
-== Instance Methods
-Every method call is forwarded to the XML-RPC server defined in ((<new|XMLRPC::Client::Proxy#new>)).
-    
-Note: Inherited methods from class (({Object})) cannot be used as XML-RPC names, because they get around
-(({method_missing})). 
-          
-
-
-= History
-    $Id: client.rb 16907 2008-06-07 16:54:15Z shyouhei $
-
-=end
-
-
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"     # ParserWriterChooseMixin
-require "net/http"
-
-module XMLRPC
-
-  class Client
-   
-    USER_AGENT = "XMLRPC::Client (Ruby #{RUBY_VERSION})"
-
-    include ParserWriterChooseMixin
-    include ParseContentType
-
-
-    # Constructors -------------------------------------------------------------------
-
-    def initialize(host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil, 
-                   user=nil, password=nil, use_ssl=nil, timeout=nil)
-
-      @http_header_extra = nil
-      @http_last_response = nil 
-      @cookie = nil
-
-      @host       = host || "localhost"
-      @path       = path || "/RPC2"
-      @proxy_host = proxy_host
-      @proxy_port = proxy_port
-      @proxy_host ||= 'localhost' if @proxy_port != nil
-      @proxy_port ||= 8080 if @proxy_host != nil
-      @use_ssl    = use_ssl || false
-      @timeout    = timeout || 30
-
-      if use_ssl
-        require "net/https"
-        @port = port || 443
-      else
-        @port = port || 80
-      end
-
-      @user, @password = user, password
-
-      set_auth
-
-      # convert ports to integers
-      @port = @port.to_i if @port != nil
-      @proxy_port = @proxy_port.to_i if @proxy_port != nil
-
-      # HTTP object for synchronous calls
-      Net::HTTP.version_1_2
-      @http = Net::HTTP.new(@host, @port, @proxy_host, @proxy_port) 
-      @http.use_ssl = @use_ssl if @use_ssl
-      @http.read_timeout = @timeout
-      @http.open_timeout = @timeout
-
-      @parser = nil
-      @create = nil
-    end
-
-
-    class << self
-
-    def new2(uri, proxy=nil, timeout=nil)
-      if match = /^([^:]+):\/\/(([^@]+)@)?([^\/]+)(\/.*)?$/.match(uri)
-        proto = match[1]
-        user, passwd = (match[3] || "").split(":")
-        host, port = match[4].split(":") 
-        path = match[5]
-
-        if proto != "http" and proto != "https"
-          raise "Wrong protocol specified. Only http or https allowed!"
-        end
-
-      else
-        raise "Wrong URI as parameter!"
-      end
- 
-      proxy_host, proxy_port = (proxy || "").split(":")
-
-      self.new(host, path, port, proxy_host, proxy_port, user, passwd, (proto == "https"), timeout)
-    end
-
-    alias new_from_uri new2
-
-    def new3(hash={})
-
-      # convert all keys into lowercase strings
-      h = {}
-      hash.each { |k,v| h[k.to_s.downcase] = v }
-
-      self.new(h['host'], h['path'], h['port'], h['proxy_host'], h['proxy_port'], h['user'], h['password'],
-               h['use_ssl'], h['timeout'])
-    end
-
-    alias new_from_hash new3
-
-    end
-
-
-    # Attribute Accessors -------------------------------------------------------------------
-
-    # add additional HTTP headers to the request
-    attr_accessor :http_header_extra
-
-    # makes last HTTP response accessible
-    attr_reader :http_last_response
-
-    # Cookie support
-    attr_accessor :cookie
-    
-
-    attr_reader :timeout, :user, :password
-
-    def timeout=(new_timeout)
-      @timeout = new_timeout
-      @http.read_timeout = @timeout
-      @http.open_timeout = @timeout
-    end
-
-    def user=(new_user)
-      @user = new_user
-      set_auth
-    end
-
-    def password=(new_password)
-      @password = new_password
-      set_auth
-    end
-
-    # Call methods --------------------------------------------------------------
-
-    def call(method, *args)
-      ok, param = call2(method, *args) 
-      if ok
-        param
-      else
-        raise param
-      end
-    end 
-
-    def call2(method, *args)
-      request = create().methodCall(method, *args)
-      data = do_rpc(request, false)
-      parser().parseMethodResponse(data)
-    end
-
-    def call_async(method, *args)
-      ok, param = call2_async(method, *args) 
-      if ok
-        param
-      else
-        raise param
-      end
-    end 
-
-    def call2_async(method, *args)
-      request = create().methodCall(method, *args)
-      data = do_rpc(request, true)
-      parser().parseMethodResponse(data)
-    end
-
-
-    # Multicall methods --------------------------------------------------------------
-
-    def multicall(*methods)
-      ok, params = multicall2(*methods)
-      if ok
-        params
-      else
-        raise params
-      end
-    end
-
-    def multicall2(*methods)
-      gen_multicall(methods, false)
-    end
-
-    def multicall_async(*methods)
-      ok, params = multicall2_async(*methods)
-      if ok
-        params
-      else
-        raise params
-      end
-    end
-
-    def multicall2_async(*methods)
-      gen_multicall(methods, true)
-    end
-
-
-    # Proxy generating methods ------------------------------------------
-    
-    def proxy(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call)
-    end
-
-    def proxy2(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call2)
-    end
-
-    def proxy_async(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call_async)
-    end
-
-    def proxy2_async(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call2_async)
-    end
-
-
-    private # ----------------------------------------------------------
-
-    def set_auth
-      if @user.nil?
-        @auth = nil
-      else
-        a =  "#@user"
-        a << ":#@password" if @password != nil
-        @auth = ("Basic " + [a].pack("m")).chomp
-      end
-    end
-
-    def do_rpc(request, async=false)
-      header = {  
-       "User-Agent"     =>  USER_AGENT,
-       "Content-Type"   => "text/xml; charset=utf-8",
-       "Content-Length" => request.size.to_s, 
-       "Connection"     => (async ? "close" : "keep-alive")
-      }
-
-      header["Cookie"] = @cookie        if @cookie
-      header.update(@http_header_extra) if @http_header_extra
-
-      if @auth != nil
-        # add authorization header
-        header["Authorization"] = @auth
-      end
- 
-      resp = nil
-      @http_last_response = nil
-
-      if async
-        # use a new HTTP object for each call 
-        Net::HTTP.version_1_2
-        http = Net::HTTP.new(@host, @port, @proxy_host, @proxy_port) 
-        http.use_ssl = @use_ssl if @use_ssl
-        http.read_timeout = @timeout
-        http.open_timeout = @timeout
-        
-        # post request
-        http.start {
-          resp = http.post2(@path, request, header) 
-        }
-      else
-        # reuse the HTTP object for each call => connection alive is possible
-        # we must start connection explicitely first time so that http.request
-        # does not assume that we don't want keepalive
-        @http.start if not @http.started?
-        
-        # post request
-        resp = @http.post2(@path, request, header) 
-      end
-  
-      @http_last_response = resp
-
-      data = resp.body
-
-      if resp.code == "401"
-        # Authorization Required
-        raise "Authorization failed.\nHTTP-Error: #{resp.code} #{resp.message}" 
-      elsif resp.code[0,1] != "2"
-        raise "HTTP-Error: #{resp.code} #{resp.message}" 
-      end
-
-      ct = parse_content_type(resp["Content-Type"]).first
-      if ct != "text/xml"
-        if ct == "text/html"
-          raise "Wrong content-type (received '#{ct}' but expected 'text/xml'): \n#{data}"
-        else
-          raise "Wrong content-type (received '#{ct}' but expected 'text/xml')"
-        end
-      end
-
-      expected = resp["Content-Length"] || "<unknown>"
-      if data.nil? or data.size == 0 
-        raise "Wrong size. Was #{data.size}, should be #{expected}" 
-      elsif expected != "<unknown>" and expected.to_i != data.size and resp["Transfer-Encoding"].nil?
-        raise "Wrong size. Was #{data.size}, should be #{expected}"
-      end
-
-      c = resp["Set-Cookie"]
-      @cookie = c if c
-
-      return data
-    end
-
-    def gen_multicall(methods=[], async=false)
-      meth = :call2
-      meth = :call2_async if async
-
-      ok, params = self.send(meth, "system.multicall", 
-        methods.collect {|m| {'methodName' => m[0], 'params' => m[1..-1]} }
-      )
-
-      if ok 
-        params = params.collect do |param|
-          if param.is_a? Array
-            param[0]
-          elsif param.is_a? Hash
-            XMLRPC::FaultException.new(param["faultCode"], param["faultString"])
-          else
-            raise "Wrong multicall return value"
-          end 
-        end
-      end
-
-      return ok, params
-    end
-
-
-
-    class Proxy
-
-      def initialize(server, prefix, args=[], meth=:call, delim=".")
-	@server = server
-	@prefix = prefix ? prefix + delim : ""
-	@args   = args 
-        @meth   = meth
-      end
-
-      def method_missing(mid, *args)
-	pre = @prefix + mid.to_s
-	arg = @args + args
-	@server.send(@meth, pre, *arg)
-      end
-
-    end # class Proxy
-
-  end # class Client
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/config.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/config.rb
deleted file mode 100644
index 52f7340..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/config.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# $Id: config.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# Configuration file for XML-RPC for Ruby
-#
-
-module XMLRPC
-
-  module Config
-
-    DEFAULT_WRITER = XMLWriter::Simple            # or XMLWriter::XMLParser
-    
-    # available parser:
-    #   * XMLParser::NQXMLTreeParser
-    #   * XMLParser::NQXMLStreamParser
-    #   * XMLParser::XMLTreeParser
-    #   * XMLParser::XMLStreamParser (fastest)
-    #   * XMLParser::REXMLStreamParser
-    #   * XMLParser::XMLScanStreamParser
-    DEFAULT_PARSER = XMLParser::REXMLStreamParser
-
-    # enable <nil/> tag
-    ENABLE_NIL_CREATE    = false
-    ENABLE_NIL_PARSER    = false
-    
-    # allows integers greater than 32-bit if true
-    ENABLE_BIGINT        = false
-
-    # enable marshalling ruby objects which include XMLRPC::Marshallable
-    ENABLE_MARSHALLING   = true 
-
-    # enable multiCall extension by default
-    ENABLE_MULTICALL     = false
-    
-    # enable Introspection extension by default
-    ENABLE_INTROSPECTION = false
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/create.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/create.rb
deleted file mode 100644
index 0b007c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/create.rb
+++ /dev/null
@@ -1,290 +0,0 @@
-#
-# Creates XML-RPC call/response documents
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: create.rb 11820 2007-02-23 03:47:59Z knu $
-#
-
-require "date"
-require "xmlrpc/base64"
-
-module XMLRPC
-
-  module XMLWriter
-
-    class Abstract
-      def ele(name, *children)
-	element(name, nil, *children)
-      end
-
-      def tag(name, txt)
-	element(name, nil, text(txt))
-      end
-    end
-
-
-    class Simple < Abstract
-
-      def document_to_str(doc)
-	doc
-      end
-
-      def document(*params)
-	params.join("")
-      end
-
-      def pi(name, *params)
-	"<?#{name} " + params.join(" ") + " ?>"
-      end
-
-      def element(name, attrs, *children)
-	raise "attributes not yet implemented" unless attrs.nil?
-        if children.empty?
-          "<#{name}/>" 
-        else
-          "<#{name}>" + children.join("") + "</#{name}>"
-        end
-      end
-
-      def text(txt)
-        cleaned = txt.dup
-        cleaned.gsub!(/&/, '&')
-        cleaned.gsub!(/</, '<')
-        cleaned.gsub!(/>/, '>')
-        cleaned
-      end
-
-    end # class Simple
-
-
-    class XMLParser < Abstract
-
-      def initialize
-	require "xmltreebuilder"
-      end
-
-      def document_to_str(doc)
-	doc.to_s
-      end
-
-      def document(*params)
-	XML::SimpleTree::Document.new(*params) 
-      end
-
-      def pi(name, *params)
-	XML::SimpleTree::ProcessingInstruction.new(name, *params)
-      end
-
-      def element(name, attrs, *children)
-	XML::SimpleTree::Element.new(name, attrs, *children)
-      end
-
-      def text(txt)
-	XML::SimpleTree::Text.new(txt)
-      end
-
-    end # class XMLParser
-
-    Classes = [Simple, XMLParser]
-
-    # yields an instance of each installed XML writer
-    def self.each_installed_writer
-      XMLRPC::XMLWriter::Classes.each do |klass|
-        begin
-          yield klass.new
-        rescue LoadError
-        end
-      end
-    end
-
-  end # module XMLWriter
-
-  class Create
-
-    def initialize(xml_writer = nil)
-      @writer = xml_writer || Config::DEFAULT_WRITER.new
-    end
-
-
-    def methodCall(name, *params)
-      name = name.to_s
-
-      if name !~ /[a-zA-Z0-9_.:\/]+/
-	raise ArgumentError, "Wrong XML-RPC method-name"
-      end
-
-      parameter = params.collect do |param|
-	@writer.ele("param", conv2value(param))
-      end
-
-      tree = @writer.document(
-	       @writer.pi("xml", 'version="1.0"'),
-	       @writer.ele("methodCall",   
-		 @writer.tag("methodName", name),
-		 @writer.ele("params", *parameter)    
-	       )
-	     )
-
-      @writer.document_to_str(tree) + "\n"
-    end
-
-
-
-    #
-    # generates a XML-RPC methodResponse document
-    #
-    # if is_ret == false then the params array must
-    # contain only one element, which is a structure
-    # of a fault return-value.
-    # 
-    # if is_ret == true then a normal 
-    # return-value of all the given params is created.
-    #
-    def methodResponse(is_ret, *params)
-
-      if is_ret 
-	resp = params.collect do |param|
-	  @writer.ele("param", conv2value(param))
-	end
-     
-	resp = [@writer.ele("params", *resp)]
-      else
-	if params.size != 1 or params[0] === XMLRPC::FaultException 
-	  raise ArgumentError, "no valid fault-structure given"
-	end
-	resp = @writer.ele("fault", conv2value(params[0].to_h))
-      end
-
-	
-      tree = @writer.document(
-	       @writer.pi("xml", 'version="1.0"'),
-	       @writer.ele("methodResponse", resp) 
-	     )
-
-      @writer.document_to_str(tree) + "\n"
-    end
-
-
-
-    #####################################
-    private
-    #####################################
-
-    #
-    # converts a Ruby object into
-    # a XML-RPC <value> tag
-    #
-    def conv2value(param)
-
-	val = case param
-	when Fixnum 
-	  @writer.tag("i4", param.to_s)
-
-	when Bignum
-          if Config::ENABLE_BIGINT
-            @writer.tag("i4", param.to_s)
-          else
-            if param >= -(2**31) and param <= (2**31-1)
-              @writer.tag("i4", param.to_s)
-            else
-              raise "Bignum is too big! Must be signed 32-bit integer!"
-            end
-          end
-	when TrueClass, FalseClass
-	  @writer.tag("boolean", param ? "1" : "0")
-
-	when String 
-	  @writer.tag("string", param)
-
-	when Symbol 
-	  @writer.tag("string", param.to_s)
-
-        when NilClass
-          if Config::ENABLE_NIL_CREATE
-            @writer.ele("nil")
-          else
-            raise "Wrong type NilClass. Not allowed!"
-          end
-
-	when Float
-	  @writer.tag("double", param.to_s)
-
-	when Struct
-	  h = param.members.collect do |key| 
-	    value = param[key]
-	    @writer.ele("member", 
-	      @writer.tag("name", key.to_s),
-	      conv2value(value) 
-	    )
-	  end
-
-	  @writer.ele("struct", *h) 
-
-	when Hash
-	  # TODO: can a Hash be empty?
-	  
-	  h = param.collect do |key, value|
-	    @writer.ele("member", 
-	      @writer.tag("name", key.to_s),
-	      conv2value(value) 
-	    )
-	  end
-
-	  @writer.ele("struct", *h) 
-
-	when Array
-	  # TODO: can an Array be empty?
-	  a = param.collect {|v| conv2value(v) }
-	  
-	  @writer.ele("array", 
-	    @writer.ele("data", *a)
-	  )
-
-	when Time, Date, ::DateTime
-	  @writer.tag("dateTime.iso8601", param.strftime("%Y%m%dT%H:%M:%S"))  
-
-	when XMLRPC::DateTime
-	  @writer.tag("dateTime.iso8601", 
-	    format("%.4d%02d%02dT%02d:%02d:%02d", *param.to_a))
-   
-	when XMLRPC::Base64
-	  @writer.tag("base64", param.encoded) 
-
-	else 
-          if Config::ENABLE_MARSHALLING and param.class.included_modules.include? XMLRPC::Marshallable
-            # convert Ruby object into Hash
-            ret = {"___class___" => param.class.name}
-            param.instance_variables.each {|v| 
-              name = v[1..-1]
-              val = param.instance_variable_get(v)
-
-              if val.nil?
-                ret[name] = val if Config::ENABLE_NIL_CREATE
-              else
-                ret[name] = val
-              end
-            }
-            return conv2value(ret)
-          else 
-            ok, pa = wrong_type(param)
-            if ok
-              return conv2value(pa)
-            else 
-              raise "Wrong type!"
-            end
-          end
-	end
-	 
-	@writer.ele("value", val)
-    end
-
-    def wrong_type(value)
-      false
-    end
-
-    
-  end # class Create
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/datetime.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/datetime.rb
deleted file mode 100644
index 86342c2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/datetime.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-=begin
-= xmlrpc/datetime.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::DateTime>))
-
-= XMLRPC::DateTime
-== Description
-This class is important to handle XMLRPC (('dateTime.iso8601')) values,
-correcly, because normal UNIX-dates (class (({Date}))) only handle dates 
-from year 1970 on, and class (({Time})) handles dates without the time
-component. (({XMLRPC::DateTime})) is able to store a XMLRPC 
-(('dateTime.iso8601')) value correctly.
-
-== Class Methods
---- XMLRPC::DateTime.new( year, month, day, hour, min, sec )
-    Creates a new (({XMLRPC::DateTime})) instance with the
-    parameters ((|year|)), ((|month|)), ((|day|)) as date and 
-    ((|hour|)), ((|min|)), ((|sec|)) as time.
-    Raises (({ArgumentError})) if a parameter is out of range, or ((|year|)) is not
-    of type (({Integer})).
-    
-== Instance Methods
---- XMLRPC::DateTime#year
---- XMLRPC::DateTime#month
---- XMLRPC::DateTime#day
---- XMLRPC::DateTime#hour
---- XMLRPC::DateTime#min
---- XMLRPC::DateTime#sec
-    Return the value of the specified date/time component.
-
---- XMLRPC::DateTime#mon
-    Alias for ((<XMLRPC::DateTime#month>)).
-
---- XMLRPC::DateTime#year=( value )
---- XMLRPC::DateTime#month=( value )
---- XMLRPC::DateTime#day=( value )
---- XMLRPC::DateTime#hour=( value )
---- XMLRPC::DateTime#min=( value )
---- XMLRPC::DateTime#sec=( value )
-    Set ((|value|)) as the new date/time component.
-    Raises (({ArgumentError})) if ((|value|)) is out of range, or in the case
-    of (({XMLRPC::DateTime#year=})) if ((|value|)) is not of type (({Integer})).
-
---- XMLRPC::DateTime#mon=( value )
-    Alias for ((<XMLRPC::DateTime#month=>)).
-
---- XMLRPC::DateTime#to_time
-    Return a (({Time})) object of the date/time which (({self})) represents.
-    If the (('year')) is below 1970, this method returns (({nil})), 
-    because (({Time})) cannot handle years below 1970.
-    The used timezone is GMT.
-
---- XMLRPC::DateTime#to_date
-    Return a (({Date})) object of the date which (({self})) represents.
-    The (({Date})) object do ((*not*)) contain the time component (only date).
-
---- XMLRPC::DateTime#to_a
-    Returns all date/time components in an array.
-    Returns (({[year, month, day, hour, min, sec]})).
-=end
-
-require "date"
-
-module XMLRPC
-
-class DateTime
-  
-  attr_reader :year, :month, :day, :hour, :min, :sec
-
-  def year= (value)
-    raise ArgumentError, "date/time out of range" unless value.is_a? Integer
-    @year = value
-  end
-
-  def month= (value)
-    raise ArgumentError, "date/time out of range" unless (1..12).include? value
-    @month = value
-  end
-
-  def day= (value)
-    raise ArgumentError, "date/time out of range" unless (1..31).include? value
-    @day = value
-  end
-
-  def hour= (value)
-    raise ArgumentError, "date/time out of range" unless (0..24).include? value
-    @hour = value
-  end
-
-  def min= (value)
-    raise ArgumentError, "date/time out of range" unless (0..59).include? value
-    @min = value
-  end
-
-  def sec= (value)
-    raise ArgumentError, "date/time out of range" unless (0..59).include? value
-    @sec = value
-  end
-
-  alias mon  month
-  alias mon= month= 
- 
-
-  def initialize(year, month, day, hour, min, sec)
-    self.year, self.month, self.day = year, month, day
-    self.hour, self.min, self.sec   = hour, min, sec
-  end
- 
-  def to_time
-    if @year >= 1970
-      Time.gm(*to_a)
-    else
-      nil
-    end
-  end
-
-  def to_date
-    Date.new(*to_a[0,3])
-  end
-
-  def to_a
-    [@year, @month, @day, @hour, @min, @sec]
-  end
-
-  def ==(o)
-    Array(self) == Array(o)
-  end
-
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: datetime.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/httpserver.rb
deleted file mode 100644
index d98db89..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/httpserver.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-#
-# Implements a simple HTTP-server by using John W. Small's (jsmall at laser.net) 
-# ruby-generic-server.
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: httpserver.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-
-require "gserver"
-
-class HttpServer < GServer
-
-  ##
-  # handle_obj specifies the object, that receives calls to request_handler
-  # and ip_auth_handler 
-  def initialize(handle_obj, port = 8080, host = DEFAULT_HOST, maxConnections = 4, 
-                 stdlog = $stdout, audit = true, debug = true)
-    @handler = handle_obj
-    super(port, host, maxConnections, stdlog, audit, debug)
-  end
-
-private
-
-  # Constants -----------------------------------------------
-  
-  CRLF        = "\r\n"
-  HTTP_PROTO  = "HTTP/1.0"
-  SERVER_NAME = "HttpServer (Ruby #{RUBY_VERSION})"
-
-  DEFAULT_HEADER = {
-    "Server" => SERVER_NAME
-  }
-
-  ##
-  # Mapping of status code and error message
-  #
-  StatusCodeMapping = {
-    200 => "OK",
-    400 => "Bad Request",
-    403 => "Forbidden",
-    405 => "Method Not Allowed",
-    411 => "Length Required",
-    500 => "Internal Server Error"
-  }
-
-  # Classes -------------------------------------------------
-  
-  class Request
-    attr_reader :data, :header, :method, :path, :proto
-    
-    def initialize(data, method=nil, path=nil, proto=nil)
-      @header, @data = Table.new, data
-      @method, @path, @proto = method, path, proto
-    end
-    
-    def content_length
-      len = @header['Content-Length']
-      return nil if len.nil?
-      return len.to_i 
-    end
-    
-  end
-  
-  class Response
-    attr_reader   :header
-    attr_accessor :body, :status, :status_message
-    
-    def initialize(status=200)
-      @status = status
-      @status_message = nil
-      @header = Table.new
-    end
-  end
-
-
-  ##
-  # a case-insensitive Hash class for HTTP header
-  #
-  class Table
-    include Enumerable
-
-    def initialize(hash={})
-      @hash = hash 
-      update(hash)
-    end
-
-    def [](key)
-      @hash[key.to_s.capitalize]
-    end
-
-    def []=(key, value)
-      @hash[key.to_s.capitalize] = value
-    end
-
-    def update(hash)
-      hash.each {|k,v| self[k] = v}
-      self
-    end
-
-    def each
-      @hash.each {|k,v| yield k.capitalize, v }
-    end
-
-    def writeTo(port)
-      each { |k,v| port << "#{k}: #{v}" << CRLF }
-    end
-  end # class Table
-
-
-  # Helper Methods ------------------------------------------
-
-  def http_header(header=nil)
-    new_header = Table.new(DEFAULT_HEADER)
-    new_header.update(header) unless header.nil? 
-
-    new_header["Connection"] = "close"
-    new_header["Date"]       = http_date(Time.now)
-
-    new_header
-  end
-
-  def http_date( aTime )
-    aTime.gmtime.strftime( "%a, %d %b %Y %H:%M:%S GMT" )
-  end
-
-  def http_resp(status_code, status_message=nil, header=nil, body=nil)
-    status_message ||= StatusCodeMapping[status_code]
-    
-    str = ""
-    str << "#{HTTP_PROTO} #{status_code} #{status_message}" << CRLF
-    http_header(header).writeTo(str)
-    str << CRLF
-    str << body unless body.nil?
-    str
-  end
-
-  # Main Serve Loop -----------------------------------------
-  
-  def serve(io)  
-    # perform IP authentification
-    unless @handler.ip_auth_handler(io)
-      io << http_resp(403, "Forbidden")
-      return
-    end
-
-    # parse first line
-    if io.gets =~ /^(\S+)\s+(\S+)\s+(\S+)/
-      request = Request.new(io, $1, $2, $3)
-    else
-      io << http_resp(400, "Bad Request") 
-      return
-    end
-     
-    # parse HTTP headers
-    while (line=io.gets) !~ /^(\n|\r)/
-      if line =~ /^([\w-]+):\s*(.*)$/
-	request.header[$1] = $2.strip
-      end
-    end
-
-    io.binmode    
-    response = Response.new
-
-    # execute request handler
-    @handler.request_handler(request, response)
-   
-    # write response back to the client
-    io << http_resp(response.status, response.status_message,
-                    response.header, response.body) 
-
-  rescue Exception => e
-    io << http_resp(500, "Internal Server Error")
-  end
-
-end # class HttpServer
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/marshal.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/marshal.rb
deleted file mode 100644
index ba8c720..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/marshal.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Marshalling of XML-RPC methodCall and methodResponse
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: marshal.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"
-
-module XMLRPC
-
-  class Marshal
-    include ParserWriterChooseMixin
-
-    # class methods -------------------------------
-   
-    class << self
-
-      def dump_call( methodName, *params )
-        new.dump_call( methodName, *params )
-      end
-
-      def dump_response( param )
-        new.dump_response( param )
-      end
-
-      def load_call( stringOrReadable )
-        new.load_call( stringOrReadable )
-      end
-
-      def load_response( stringOrReadable )
-        new.load_response( stringOrReadable )
-      end
-
-      alias dump dump_response
-      alias load load_response
-
-    end # class self
-
-    # instance methods ----------------------------
-
-    def initialize( parser = nil, writer = nil )
-      set_parser( parser )
-      set_writer( writer )
-    end
-
-    def dump_call( methodName, *params )
-      create.methodCall( methodName, *params )
-    end
-
-    def dump_response( param ) 
-      create.methodResponse( ! param.kind_of?( XMLRPC::FaultException ) , param )
-    end
-
-    ##
-    # returns [ methodname, params ]
-    #
-    def load_call( stringOrReadable )
-      parser.parseMethodCall( stringOrReadable )
-    end
-
-    ##
-    # returns paramOrFault
-    #
-    def load_response( stringOrReadable )
-      parser.parseMethodResponse( stringOrReadable )[1]
-    end
-
-  end # class Marshal
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/parser.rb
deleted file mode 100644
index 5c0d9a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/parser.rb
+++ /dev/null
@@ -1,813 +0,0 @@
-#
-# Parser for XML-RPC call and response
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: parser.rb 16907 2008-06-07 16:54:15Z shyouhei $
-#
-
-
-require "date"
-require "xmlrpc/base64"
-require "xmlrpc/datetime"
-
-
-# add some methods to NQXML::Node
-module NQXML
-  class Node
-
-    def removeChild(node)
-      @children.delete(node)
-    end
-    def childNodes
-      @children
-    end
-    def hasChildNodes
-      not @children.empty?
-    end
-    def [] (index)
-      @children[index]
-    end
-
-    def nodeType
-      if @entity.instance_of? NQXML::Text then :TEXT
-      elsif @entity.instance_of? NQXML::Comment then :COMMENT
-      #elsif @entity.instance_of? NQXML::Element then :ELEMENT
-      elsif @entity.instance_of? NQXML::Tag then :ELEMENT
-      else :ELSE
-      end
-    end
-
-    def nodeValue
-      #TODO: error when wrong Entity-type
-      @entity.text
-    end
-    def nodeName
-      #TODO: error when wrong Entity-type
-      @entity.name
-    end
-  end # class Node
-end # module NQXML
-
-module XMLRPC
-
-  class FaultException < StandardError
-    attr_reader :faultCode, :faultString
-
-    alias message faultString
-
-    def initialize(faultCode, faultString)
-      @faultCode   = faultCode
-      @faultString = faultString
-    end
-    
-    # returns a hash
-    def to_h
-      {"faultCode" => @faultCode, "faultString" => @faultString}
-    end
-  end
-
-  module Convert
-    def self.int(str)
-      str.to_i
-    end
-
-    def self.boolean(str)
-      case str
-      when "0" then false
-      when "1" then true
-      else
-        raise "RPC-value of type boolean is wrong" 
-      end
-    end
-
-    def self.double(str)
-      str.to_f
-    end
-
-    def self.dateTime(str)
-      case str
-      when /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(?:Z|([+-])(\d\d):?(\d\d))?$/
-        a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
-        if $7
-          ofs = $8.to_i*3600 + $9.to_i*60
-          ofs = -ofs if $7=='+'
-          utc = Time.utc(*a) + ofs
-          a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ]
-        end
-        XMLRPC::DateTime.new(*a)
-      when /^(-?\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(Z|([+-]\d\d):(\d\d))?$/
-        a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
-        if a[0] < 70
-          a[0] += 2000
-        else
-          a[0] += 1900
-        end
-        if $7
-          ofs = $8.to_i*3600 + $9.to_i*60
-          ofs = -ofs if $7=='+'
-          utc = Time.utc(*a) + ofs
-          a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ]
-        end
-        XMLRPC::DateTime.new(*a)
-      else
-        raise "wrong dateTime.iso8601 format " + str
-      end
-    end
-
-    def self.base64(str)
-      XMLRPC::Base64.decode(str)
-    end
-
-    def self.struct(hash)
-      # convert to marhalled object
-      klass = hash["___class___"]
-      if klass.nil? or Config::ENABLE_MARSHALLING == false 
-        hash
-      else
-        begin
-          mod = Module
-          klass.split("::").each {|const| mod = mod.const_get(const.strip)}
-
-          obj = mod.allocate
-          
-          hash.delete "___class___"
-          hash.each {|key, value| 
-            obj.instance_variable_set("@#{ key }", value) if key =~ /^([\w_][\w_0-9]*)$/
-          }
-          obj
-        rescue
-          hash
-        end
-      end
-    end
-
-    def self.fault(hash)
-      if hash.kind_of? Hash and hash.size == 2 and 
-        hash.has_key? "faultCode" and hash.has_key? "faultString" and 
-        hash["faultCode"].kind_of? Integer and hash["faultString"].kind_of? String
-
-        XMLRPC::FaultException.new(hash["faultCode"], hash["faultString"]) 
-      else
-        raise "wrong fault-structure: #{hash.inspect}"
-      end
-    end
-
-  end # module Convert
-
-  module XMLParser
-
-    class AbstractTreeParser
-
-      def parseMethodResponse(str)
-	methodResponse_document(createCleanedTree(str))
-      end
-
-      def parseMethodCall(str)
-	methodCall_document(createCleanedTree(str))
-      end
-
-      private
-
-      #
-      # remove all whitespaces but in the tags i4, int, boolean....
-      # and all comments
-      #
-      def removeWhitespacesAndComments(node)
-	remove = []
-	childs = node.childNodes.to_a
-	childs.each do |nd|
-	  case _nodeType(nd)
-	  when :TEXT
-            # TODO: add nil?
-            unless %w(i4 int boolean string double dateTime.iso8601 base64).include? node.nodeName
-
-               if node.nodeName == "value" 
-                 if not node.childNodes.to_a.detect {|n| _nodeType(n) == :ELEMENT}.nil?
-                   remove << nd if nd.nodeValue.strip == "" 
-                 end
-               else
-                 remove << nd if nd.nodeValue.strip == ""
-               end
-	    end
-	  when :COMMENT
-	    remove << nd
-	  else
-	    removeWhitespacesAndComments(nd)
-	  end 
-	end
-
-	remove.each { |i| node.removeChild(i) }
-      end
-
-
-      def nodeMustBe(node, name)
-	cmp = case name
-	when Array 
-	  name.include?(node.nodeName)
-	when String
-	  name == node.nodeName
-	else
-	  raise "error"
-	end  
-
-	if not cmp then
-	  raise "wrong xml-rpc (name)"
-	end
-
-	node
-      end
-
-      #
-      # returns, when successfully the only child-node
-      #
-      def hasOnlyOneChild(node, name=nil)
-	if node.childNodes.to_a.size != 1
-	  raise "wrong xml-rpc (size)"
-	end
-	if name != nil then
-	  nodeMustBe(node.firstChild, name)
-	end
-      end
-
-
-      def assert(b)
-	if not b then
-	  raise "assert-fail" 
-	end
-      end
-
-      # the node `node` has empty string or string
-      def text_zero_one(node)
-	nodes = node.childNodes.to_a.size
-
-	if nodes == 1
-	  text(node.firstChild)
-	elsif nodes == 0
-	  ""
-	else
-	  raise "wrong xml-rpc (size)"
-	end
-      end
-     
-
-      def integer(node)
-	#TODO: check string for float because to_i returnsa
-	#      0 when wrong string
-	 nodeMustBe(node, %w(i4 int))    
-	hasOnlyOneChild(node)
-	
-	Convert.int(text(node.firstChild))
-      end
-
-      def boolean(node)
-	nodeMustBe(node, "boolean")    
-	hasOnlyOneChild(node)
-	
-        Convert.boolean(text(node.firstChild))
-      end
-
-      def v_nil(node)
-        nodeMustBe(node, "nil")
-	assert( node.childNodes.to_a.size == 0 )
-        nil
-      end
-
-      def string(node)
-	nodeMustBe(node, "string")    
-	text_zero_one(node)
-      end
-
-      def double(node)
-	#TODO: check string for float because to_f returnsa
-	#      0.0 when wrong string
-	nodeMustBe(node, "double")    
-	hasOnlyOneChild(node)
-	
-	Convert.double(text(node.firstChild))
-      end
-
-      def dateTime(node)
-	nodeMustBe(node, "dateTime.iso8601")
-	hasOnlyOneChild(node)
-	
-        Convert.dateTime( text(node.firstChild) )
-      end
-
-      def base64(node)
-	nodeMustBe(node, "base64")
-	#hasOnlyOneChild(node)
-	 
-        Convert.base64(text_zero_one(node))
-      end
-
-      def member(node)
-	nodeMustBe(node, "member")
-	assert( node.childNodes.to_a.size == 2 ) 
-
-	[ name(node[0]), value(node[1]) ]
-      end
-
-      def name(node)
-	nodeMustBe(node, "name")
-	#hasOnlyOneChild(node)
-	text_zero_one(node) 
-      end
-
-      def array(node)
-	nodeMustBe(node, "array")
-	hasOnlyOneChild(node, "data") 
-	data(node.firstChild)  
-      end
-
-      def data(node)
-	nodeMustBe(node, "data")
-
-	node.childNodes.to_a.collect do |val|
-	  value(val)
-	end 
-      end
-
-      def param(node)
-	nodeMustBe(node, "param")
-	hasOnlyOneChild(node, "value")
-	value(node.firstChild) 
-      end
- 
-      def methodResponse(node)
-	nodeMustBe(node, "methodResponse")
-	hasOnlyOneChild(node, %w(params fault))
-	child = node.firstChild
-
-	case child.nodeName
-	when "params"
-	  [ true, params(child,false) ] 
-	when "fault"
-	  [ false, fault(child) ]
-	else
-	  raise "unexpected error"
-	end
-
-      end
-
-      def methodName(node)
-	nodeMustBe(node, "methodName")
-	hasOnlyOneChild(node)
-	text(node.firstChild) 
-      end
-
-      def params(node, call=true)
-	nodeMustBe(node, "params")
-
-	if call 
-	  node.childNodes.to_a.collect do |n|
-	    param(n)
-	  end
-	else # response (only one param)
-	  hasOnlyOneChild(node)
-	  param(node.firstChild)
-	end
-      end
-
-      def fault(node)
-	nodeMustBe(node, "fault")
-	hasOnlyOneChild(node, "value")
-	f = value(node.firstChild) 
-        Convert.fault(f)
-      end
-
-
-
-      # _nodeType is defined in the subclass
-      def text(node)
-	assert( _nodeType(node) == :TEXT )
-	assert( node.hasChildNodes == false )
-	assert( node.nodeValue != nil )
-
-	node.nodeValue.to_s
-      end
-
-      def struct(node)
-	nodeMustBe(node, "struct")    
-
-	hash = {}
-	node.childNodes.to_a.each do |me|
-	  n, v = member(me)  
-	  hash[n] = v
-	end 
-
-        Convert.struct(hash)
-     end
-
-
-      def value(node)
-	nodeMustBe(node, "value")
-	nodes = node.childNodes.to_a.size
-        if nodes == 0 
-          return ""
-        elsif nodes > 1 
-	  raise "wrong xml-rpc (size)"
-        end
-
-	child = node.firstChild
-
-	case _nodeType(child)
-	when :TEXT
-          text_zero_one(node)
-	when :ELEMENT
-	  case child.nodeName
-	  when "i4", "int"        then integer(child)
-	  when "boolean"          then boolean(child)
-	  when "string"           then string(child)
-	  when "double"           then double(child)
-	  when "dateTime.iso8601" then dateTime(child)
-	  when "base64"           then base64(child)
-	  when "struct"           then struct(child)
-	  when "array"            then array(child) 
-          when "nil"              
-            if Config::ENABLE_NIL_PARSER
-              v_nil(child)
-            else
-              raise "wrong/unknown XML-RPC type 'nil'"
-            end
-	  else 
-	    raise "wrong/unknown XML-RPC type"
-	  end
-	else
-	  raise "wrong type of node"
-	end
-
-      end
-
-      def methodCall(node)
-	nodeMustBe(node, "methodCall")
-	assert( (1..2).include?( node.childNodes.to_a.size ) ) 
-	name = methodName(node[0])
-
-	if node.childNodes.to_a.size == 2 then
-	  pa = params(node[1])
-	else # no parameters given
-	  pa = []
-	end
-	[name, pa]
-      end
-
-    end # module TreeParserMixin
-
-    class AbstractStreamParser
-      def parseMethodResponse(str)
-        parser = @parser_class.new
-        parser.parse(str)
-        raise "No valid method response!" if parser.method_name != nil
-        if parser.fault != nil
-          # is a fault structure
-          [false, parser.fault] 
-        else
-          # is a normal return value
-          raise "Missing return value!" if parser.params.size == 0
-          raise "Too many return values. Only one allowed!" if parser.params.size > 1
-          [true, parser.params[0]]
-        end
-      end
-
-      def parseMethodCall(str)
-        parser = @parser_class.new
-        parser.parse(str)
-        raise "No valid method call - missing method name!" if parser.method_name.nil?
-        [parser.method_name, parser.params]
-      end
-    end
-
-    module StreamParserMixin
-      attr_reader :params
-      attr_reader :method_name
-      attr_reader :fault
-
-      def initialize(*a)
-        super(*a)
-        @params = []
-        @values = []
-        @val_stack = []
-
-        @names = []
-        @name = []
-
-        @structs = []
-        @struct = {}
-
-        @method_name = nil
-        @fault = nil
-
-        @data = nil
-      end
-
-      def startElement(name, attrs=[])
-        @data = nil
-        case name
-        when "value"
-          @value = nil
-        when "nil"
-          raise "wrong/unknown XML-RPC type 'nil'" unless Config::ENABLE_NIL_PARSER
-          @value = :nil 
-        when "array"
-          @val_stack << @values
-          @values = []
-        when "struct"
-          @names << @name
-          @name = []
-
-          @structs << @struct
-          @struct = {} 
-        end
-      end
-
-      def endElement(name)
-        @data ||= ""
-        case name
-        when "string"
-          @value = @data
-        when "i4", "int"
-          @value = Convert.int(@data)
-        when "boolean"
-          @value = Convert.boolean(@data)
-        when "double"
-          @value = Convert.double(@data)
-        when "dateTime.iso8601"
-          @value = Convert.dateTime(@data)
-        when "base64"
-          @value = Convert.base64(@data)
-        when "value"
-          @value = @data if @value.nil?
-          @values << (@value == :nil ? nil : @value) 
-        when "array"
-          @value = @values
-          @values = @val_stack.pop
-        when "struct"
-          @value = Convert.struct(@struct)
-
-          @name = @names.pop
-          @struct = @structs.pop
-        when "name"
-          @name[0] = @data 
-        when "member"
-          @struct[@name[0]] = @values.pop 
-
-        when "param"
-          @params << @values[0]
-          @values = []
-
-        when "fault"
-          @fault = Convert.fault(@values[0])
-
-        when "methodName"
-          @method_name = @data 
-        end
-
-        @data = nil
-      end
-
-      def character(data)
-        if @data
-          @data << data
-        else
-          @data = data
-        end
-      end
-
-    end # module StreamParserMixin
-
-    # ---------------------------------------------------------------------------
-    class XMLStreamParser < AbstractStreamParser
-      def initialize
-        require "xmlparser"
-        @parser_class = Class.new(::XMLParser) {
-          include StreamParserMixin
-        }
-      end
-    end # class XMLStreamParser
-    # ---------------------------------------------------------------------------
-    class NQXMLStreamParser < AbstractStreamParser
-      def initialize
-        require "nqxml/streamingparser"
-        @parser_class = XMLRPCParser
-      end
-
-      class XMLRPCParser 
-        include StreamParserMixin
-
-        def parse(str)
-          parser = NQXML::StreamingParser.new(str)
-          parser.each do |ele|
-            case ele
-            when NQXML::Text
-              @data = ele.text
-              #character(ele.text)
-            when NQXML::Tag
-              if ele.isTagEnd
-                endElement(ele.name)
-              else
-                startElement(ele.name, ele.attrs)
-              end
-            end
-          end # do
-        end # method parse
-      end # class XMLRPCParser
-
-    end # class NQXMLStreamParser
-    # ---------------------------------------------------------------------------
-    class XMLTreeParser < AbstractTreeParser
-
-      def initialize
-        require "xmltreebuilder"
-
-        # The new XMLParser library (0.6.2+) uses a slightly different DOM implementation. 
-        # The following code removes the differences between both versions.
-        if defined? XML::DOM::Builder 
-          return if defined? XML::DOM::Node::DOCUMENT # code below has been already executed
-          klass = XML::DOM::Node
-          klass.const_set("DOCUMENT", klass::DOCUMENT_NODE)
-          klass.const_set("TEXT", klass::TEXT_NODE)
-          klass.const_set("COMMENT", klass::COMMENT_NODE)
-          klass.const_set("ELEMENT", klass::ELEMENT_NODE)
-        end
-      end
-
-      private
-
-      def _nodeType(node)
-	tp = node.nodeType
-	if tp == XML::SimpleTree::Node::TEXT then :TEXT
-	elsif tp == XML::SimpleTree::Node::COMMENT then :COMMENT 
-	elsif tp == XML::SimpleTree::Node::ELEMENT then :ELEMENT 
-	else :ELSE
-	end
-      end
-
-
-      def methodResponse_document(node)
-	assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
-	hasOnlyOneChild(node, "methodResponse")
-	
-	methodResponse(node.firstChild)
-      end
-
-      def methodCall_document(node)
-	assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
-	hasOnlyOneChild(node, "methodCall")
-	
-	methodCall(node.firstChild)
-      end
-
-      def createCleanedTree(str)
-	doc = XML::SimpleTreeBuilder.new.parse(str)
-	doc.documentElement.normalize
-	removeWhitespacesAndComments(doc)
-	doc
-      end
-
-    end # class XMLParser
-    # ---------------------------------------------------------------------------
-    class NQXMLTreeParser < AbstractTreeParser
-
-      def initialize
-        require "nqxml/treeparser"
-      end
-
-      private
-
-      def _nodeType(node)
-	node.nodeType
-      end
-
-      def methodResponse_document(node)
-	methodResponse(node)
-      end
-
-      def methodCall_document(node)
-	methodCall(node)
-      end
-
-      def createCleanedTree(str)
-        doc = ::NQXML::TreeParser.new(str).document.rootNode 
-	removeWhitespacesAndComments(doc)
-	doc
-      end
-
-    end # class NQXMLTreeParser
-    # ---------------------------------------------------------------------------
-    class REXMLStreamParser < AbstractStreamParser
-      def initialize
-        require "rexml/document"
-        @parser_class = StreamListener
-      end
-
-      class StreamListener 
-        include StreamParserMixin
-
-        alias :tag_start :startElement
-        alias :tag_end :endElement
-        alias :text :character
-        alias :cdata :character
-
-        def method_missing(*a)
-          # ignore
-        end
-
-        def parse(str)
-          parser = REXML::Document.parse_stream(str, self)
-       end
-      end 
-
-    end
-    # ---------------------------------------------------------------------------
-    class XMLScanStreamParser < AbstractStreamParser
-      def initialize
-        require "xmlscan/parser"
-        @parser_class = XMLScanParser
-      end
-
-      class XMLScanParser
-        include StreamParserMixin
-
-        Entities = {
-          "lt"   => "<",
-          "gt"   => ">",
-          "amp"  => "&",
-          "quot" => '"',
-          "apos" => "'"
-        }
-
-        def parse(str)
-          parser  = XMLScan::XMLParser.new(self)
-          parser.parse(str)
-        end
-
-        alias :on_stag :startElement
- 	alias :on_etag :endElement
-
-        def on_stag_end(name); end
-
-        def on_stag_end_empty(name)
-          startElement(name)
-          endElement(name)
-        end
-       
-        def on_chardata(str)
-          character(str)
-        end
-
-        def on_cdata(str)
-          character(str)
-        end
-
-        def on_entityref(ent)
-          str = Entities[ent]
-          if str
-            character(str)
-          else
-            raise "unknown entity"
-          end
-        end
-
-        def on_charref(code)
-          character(code.chr)
-        end
-
-        def on_charref_hex(code)
-          character(code.chr)
-        end
-
-        def method_missing(*a)
-        end
-
-        # TODO: call/implement?
-        # valid_name?
-        # valid_chardata?
-        # valid_char?
-        # parse_error  
-
-      end
-    end
-    # ---------------------------------------------------------------------------
-    XMLParser   = XMLTreeParser
-    NQXMLParser = NQXMLTreeParser
-
-    Classes = [XMLStreamParser, XMLTreeParser, 
-               NQXMLStreamParser, NQXMLTreeParser, 
-               REXMLStreamParser, XMLScanStreamParser]
-
-    # yields an instance of each installed parser
-    def self.each_installed_parser
-      XMLRPC::XMLParser::Classes.each do |klass|
-        begin
-          yield klass.new
-        rescue LoadError
-        end
-      end
-    end
-
-  end # module XMLParser
-
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/server.rb
deleted file mode 100644
index d297431..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/server.rb
+++ /dev/null
@@ -1,780 +0,0 @@
-=begin
-= xmlrpc/server.rb
-Copyright (C) 2001, 2002, 2003, 2005 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::BasicServer>))
-* ((<XMLRPC::CGIServer>))
-* ((<XMLRPC::ModRubyServer>))
-* ((<XMLRPC::Server>))
-* ((<XMLRPC::WEBrickServlet>))
-
-= XMLRPC::BasicServer
-== Description
-Is the base class for all XML-RPC server-types (CGI, standalone).
-You can add handler and set a default handler. 
-Do not use this server, as this is/should be an abstract class.
-
-=== How the method to call is found
-The arity (number of accepted arguments) of a handler (method or (({Proc})) object) is 
-compared to the given arguments submitted by the client for a RPC ((-Remote Procedure Call-)). 
-A handler is only called if it accepts the number of arguments, otherwise the search 
-for another handler will go on. When at the end no handler was found, 
-the ((<default_handler|XMLRPC::BasicServer#set_default_handler>)) will be called.
-With this technique it is possible to do overloading by number of parameters, but
-only for (({Proc})) handler, because you cannot define two methods of the same name in
-the same class. 
-
-
-== Class Methods
---- XMLRPC::BasicServer.new( class_delim="." )
-    Creates a new (({XMLRPC::BasicServer})) instance, which should not be 
-    done, because (({XMLRPC::BasicServer})) is an abstract class. This
-    method should be called from a subclass indirectly by a (({super})) call
-    in the method (({initialize})). The paramter ((|class_delim|)) is used
-    in ((<add_handler|XMLRPC::BasicServer#add_handler>)) when an object is
-    added as handler, to delimit the object-prefix and the method-name.
-
-== Instance Methods
---- XMLRPC::BasicServer#add_handler( name, signature=nil, help=nil ) { aBlock }
-    Adds ((|aBlock|)) to the list of handlers, with ((|name|)) as the name of the method.
-    Parameters ((|signature|)) and ((|help|)) are used by the Introspection method if specified, 
-    where ((|signature|)) is either an Array containing strings each representing a type of it's 
-    signature (the first is the return value) or an Array of Arrays if the method has multiple 
-    signatures. Value type-names are "int, boolean, double, string, dateTime.iso8601, base64, array, struct".
-
-    Parameter ((|help|)) is a String with informations about how to call this method etc.
-
-    A handler method or code-block can return the types listed at
-    ((<XMLRPC::Client#call|URL:client.html#index:0>)). 
-    When a method fails, it can tell it the client by throwing an 
-    (({XMLRPC::FaultException})) like in this example:
-        s.add_handler("michael.div") do |a,b|
-          if b == 0
-            raise XMLRPC::FaultException.new(1, "division by zero")
-          else
-            a / b 
-          end
-        end 
-    The client gets in the case of (({b==0})) an object back of type
-    (({XMLRPC::FaultException})) that has a ((|faultCode|)) and ((|faultString|))
-    field.
-
---- XMLRPC::BasicServer#add_handler( prefix, obj )
-    This is the second form of ((<add_handler|XMLRPC::BasicServer#add_handler>)).
-    To add an object write:
-        server.add_handler("michael", MyHandlerClass.new)
-    All public methods of (({MyHandlerClass})) are accessible to
-    the XML-RPC clients by (('michael."name of method"')). This is 
-    where the ((|class_delim|)) in ((<new|XMLRPC::BasicServer.new>)) 
-    has it's role, a XML-RPC method-name is defined by 
-    ((|prefix|)) + ((|class_delim|)) + (('"name of method"')). 
-
---- XMLRPC::BasicServer#add_handler( interface, obj )
-    This is the third form of ((<add_handler|XMLRPC::BasicServer#add_handler>)).
-
-    Use (({XMLRPC::interface})) to generate an ServiceInterface object, which
-    represents an interface (with signature and help text) for a handler class.
-
-    Parameter ((|interface|)) must be of type (({XMLRPC::ServiceInterface})).
-    Adds all methods of ((|obj|)) which are defined in ((|interface|)) to the
-    server.
-
-    This is the recommended way of adding services to a server!
-
-
---- XMLRPC::BasicServer#get_default_handler
-    Returns the default-handler, which is called when no handler for
-    a method-name is found.
-    It is a (({Proc})) object or (({nil})).
-
---- XMLRPC::BasicServer#set_default_handler ( &handler )
-    Sets ((|handler|)) as the default-handler, which is called when 
-    no handler for a method-name is found. ((|handler|)) is a code-block.
-    The default-handler is called with the (XML-RPC) method-name as first argument, and
-    the other arguments are the parameters given by the client-call.
-  
-    If no block is specified the default of (({XMLRPC::BasicServer})) is used, which raises a
-    XMLRPC::FaultException saying "method missing".
-
-
---- XMLRPC::BasicServer#set_writer( writer )
-    Sets the XML writer to use for generating XML output.
-    Should be an instance of a class from module (({XMLRPC::XMLWriter})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_WRITER})) is used. 
-
---- XMLRPC::BasicServer#set_parser( parser )
-    Sets the XML parser to use for parsing XML documents.
-    Should be an instance of a class from module (({XMLRPC::XMLParser})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_PARSER})) is used.
-
---- XMLRPC::BasicServer#add_introspection
-    Adds the introspection handlers "system.listMethods", "system.methodSignature" and "system.methodHelp", 
-    where only the first one works.
-
---- XMLRPC::BasicServer#add_multicall
-    Adds the multi-call handler "system.multicall".
-
---- XMLRPC::BasicServer#get_service_hook
-    Returns the service-hook, which is called on each service request (RPC) unless it's (({nil})).
-
---- XMLRPC::BasicServer#set_service_hook ( &handler )
-    A service-hook is called for each service request (RPC).
-    You can use a service-hook for example to wrap existing methods and catch exceptions of them or
-    convert values to values recognized by XMLRPC. You can disable it by passing (({nil})) as parameter  
-    ((|handler|)) .
-
-    The service-hook is called with a (({Proc})) object and with the parameters for this (({Proc})).
-    An example:
-
-       server.set_service_hook {|obj, *args|
-         begin
-           ret = obj.call(*args)  # call the original service-method
-           # could convert the return value 
-         resuce
-           # rescue exceptions
-         end
-       }
-
-=end
-
-
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"         # ParserWriterChooseMixin
-
-
-
-module XMLRPC
-
-
-class BasicServer
-
-  include ParserWriterChooseMixin
-  include ParseContentType
-
-  ERR_METHOD_MISSING        = 1 
-  ERR_UNCAUGHT_EXCEPTION    = 2
-  ERR_MC_WRONG_PARAM        = 3
-  ERR_MC_MISSING_PARAMS     = 4
-  ERR_MC_MISSING_METHNAME   = 5
-  ERR_MC_RECURSIVE_CALL     = 6
-  ERR_MC_WRONG_PARAM_PARAMS = 7
-  ERR_MC_EXPECTED_STRUCT    = 8
-
-
-  def initialize(class_delim=".")
-    @handler = []
-    @default_handler = nil 
-    @service_hook = nil
-
-    @class_delim = class_delim
-    @create = nil
-    @parser = nil
-
-    add_multicall     if Config::ENABLE_MULTICALL
-    add_introspection if Config::ENABLE_INTROSPECTION
-  end
-
-  def add_handler(prefix, obj_or_signature=nil, help=nil, &block)
-    if block_given?
-      # proc-handler
-      @handler << [prefix, block, obj_or_signature, help]   
-    else
-      if prefix.kind_of? String
-        # class-handler
-        raise ArgumentError, "Expected non-nil value" if obj_or_signature.nil?
-        @handler << [prefix + @class_delim, obj_or_signature]
-      elsif prefix.kind_of? XMLRPC::Service::BasicInterface
-        # class-handler with interface
-        # add all methods
-        @handler += prefix.get_methods(obj_or_signature, @class_delim)
-      else
-        raise ArgumentError, "Wrong type for parameter 'prefix'"
-      end
-    end
-    self
-  end
-
-  def get_service_hook
-    @service_hook
-  end
-
-  def set_service_hook(&handler)
-    @service_hook = handler
-    self
-  end
- 
-  def get_default_handler
-    @default_handler
-  end
-
-  def set_default_handler (&handler)
-    @default_handler = handler
-    self
-  end  
-
-  def add_multicall
-    add_handler("system.multicall", %w(array array), "Multicall Extension") do |arrStructs|
-      unless arrStructs.is_a? Array 
-        raise XMLRPC::FaultException.new(ERR_MC_WRONG_PARAM, "system.multicall expects an array")
-      end
-
-      arrStructs.collect {|call|
-        if call.is_a? Hash
-          methodName = call["methodName"]
-          params     = call["params"]  
-
-          if params.nil?
-            multicall_fault(ERR_MC_MISSING_PARAMS, "Missing params")
-          elsif methodName.nil?
-            multicall_fault(ERR_MC_MISSING_METHNAME, "Missing methodName")
-          else
-            if methodName == "system.multicall"
-              multicall_fault(ERR_MC_RECURSIVE_CALL, "Recursive system.multicall forbidden")
-            else
-              unless params.is_a? Array
-                multicall_fault(ERR_MC_WRONG_PARAM_PARAMS, "Parameter params have to be an Array")
-              else
-                ok, val = call_method(methodName, *params)
-                if ok
-                  # correct return value
-                  [val]
-                else
-                  # exception
-                  multicall_fault(val.faultCode, val.faultString) 
-                end
-              end
-            end
-          end  
-           
-        else
-          multicall_fault(ERR_MC_EXPECTED_STRUCT, "system.multicall expected struct")
-        end
-      } 
-    end # end add_handler
-    self
-  end
-
-  def add_introspection
-    add_handler("system.listMethods",%w(array), "List methods available on this XML-RPC server") do
-      methods = []
-      @handler.each do |name, obj|
-        if obj.kind_of? Proc
-          methods << name
-        else
-          obj.methods.each {|meth| methods << name + meth}
-        end
-      end
-      methods
-    end
-
-    add_handler("system.methodSignature", %w(array string), "Returns method signature") do |meth|
-      sigs = []
-      @handler.each do |name, obj, sig|
-        if obj.kind_of? Proc and sig != nil and name == meth
-          if sig[0].kind_of? Array
-            # sig contains multiple signatures, e.g. [["array"], ["array", "string"]]
-            sig.each {|s| sigs << s}
-          else
-            # sig is a single signature, e.g. ["array"]
-            sigs << sig 
-          end
-        end
-      end
-      sigs.uniq! || sigs  # remove eventually duplicated signatures
-    end
-
-    add_handler("system.methodHelp", %w(string string), "Returns help on using this method") do |meth|
-      help = nil 
-      @handler.each do |name, obj, sig, hlp|
-        if obj.kind_of? Proc and name == meth 
-          help = hlp
-          break      
-        end
-      end
-      help || ""
-    end
-
-    self
-  end
-
-
-  
-  def process(data)
-    method, params = parser().parseMethodCall(data) 
-    handle(method, *params)
-  end
- 
-  private # --------------------------------------------------------------
-
-  def multicall_fault(nr, str)
-    {"faultCode" => nr, "faultString" => str}
-  end
- 
-  #
-  # method dispatch
-  #
-  def dispatch(methodname, *args)
-    for name, obj in @handler
-      if obj.kind_of? Proc
-        next unless methodname == name
-      else
-        next unless methodname =~ /^#{name}(.+)$/
-        next unless obj.respond_to? $1
-        obj = obj.method($1)
-      end
-
-      if check_arity(obj, args.size)
-        if @service_hook.nil?
-          return obj.call(*args) 
-        else
-          return @service_hook.call(obj, *args)
-        end
-      end
-    end 
- 
-    if @default_handler.nil?
-      raise XMLRPC::FaultException.new(ERR_METHOD_MISSING, "Method #{methodname} missing or wrong number of parameters!")
-    else
-      @default_handler.call(methodname, *args) 
-    end
-  end
-
-
-  #
-  # returns true, if the arity of "obj" matches
-  #
-  def check_arity(obj, n_args)
-    ary = obj.arity
-
-    if ary >= 0
-      n_args == ary
-    else
-      n_args >= (ary+1).abs 
-    end
-  end
-
-
-
-  def call_method(methodname, *args)
-    begin
-      [true, dispatch(methodname, *args)]
-    rescue XMLRPC::FaultException => e  
-      [false, e]  
-    rescue Exception => e
-      [false, XMLRPC::FaultException.new(ERR_UNCAUGHT_EXCEPTION, "Uncaught exception #{e.message} in method #{methodname}")]
-    end
-  end
-
-  #
-  #
-  #
-  def handle(methodname, *args)
-    create().methodResponse(*call_method(methodname, *args))
-  end
-
-
-end
-
-
-=begin
-= XMLRPC::CGIServer
-== Synopsis
-    require "xmlrpc/server"
- 
-    s = XMLRPC::CGIServer.new     
-
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
-  
-    s.serve
-
-== Description
-Implements a CGI-based XML-RPC server.
-
-== Superclass
-((<XMLRPC::BasicServer>))
-
-== Class Methods
---- XMLRPC::CGIServer.new( *a )
-    Creates a new (({XMLRPC::CGIServer})) instance. All parameters given
-    are by-passed to ((<XMLRPC::BasicServer.new>)). You can only create 
-    ((*one*)) (({XMLRPC::CGIServer})) instance, because more than one makes
-    no sense.
-
-== Instance Methods
---- XMLRPC::CGIServer#serve
-    Call this after you have added all you handlers to the server.
-    This method processes a XML-RPC methodCall and sends the answer
-    back to the client. 
-    Make sure that you don't write to standard-output in a handler, or in
-    any other part of your program, this would case a CGI-based server to fail!
-=end
-
-class CGIServer < BasicServer
-  @@obj = nil
-
-  def CGIServer.new(*a)
-    @@obj = super(*a) if @@obj.nil?
-    @@obj
-  end
-
-  def initialize(*a)
-    super(*a)
-  end
-  
-  def serve
-    catch(:exit_serve) {
-      length = ENV['CONTENT_LENGTH'].to_i
-
-      http_error(405, "Method Not Allowed") unless ENV['REQUEST_METHOD'] == "POST" 
-      http_error(400, "Bad Request")        unless parse_content_type(ENV['CONTENT_TYPE']).first == "text/xml"
-      http_error(411, "Length Required")    unless length > 0 
-
-      # TODO: do we need a call to binmode?
-      $stdin.binmode if $stdin.respond_to? :binmode
-      data = $stdin.read(length)
-
-      http_error(400, "Bad Request")        if data.nil? or data.size != length
-
-      http_write(process(data), "Content-type" => "text/xml; charset=utf-8")
-    }
-  end
-
-
-  private
-
-  def http_error(status, message)
-    err = "#{status} #{message}"
-    msg = <<-"MSGEND" 
-      <html>
-        <head>
-          <title>#{err}</title>
-        </head>
-        <body>
-          <h1>#{err}</h1>
-          <p>Unexpected error occured while processing XML-RPC request!</p>
-        </body>
-      </html>
-    MSGEND
-
-    http_write(msg, "Status" => err, "Content-type" => "text/html")
-    throw :exit_serve # exit from the #serve method
-  end
-
-  def http_write(body, header)
-    h = {}
-    header.each {|key, value| h[key.to_s.capitalize] = value}
-    h['Status']         ||= "200 OK"
-    h['Content-length'] ||= body.size.to_s 
-
-    str = ""
-    h.each {|key, value| str << "#{key}: #{value}\r\n"}
-    str << "\r\n#{body}"
-
-    print str
-  end
-
-end
-
-=begin
-= XMLRPC::ModRubyServer
-== Description
-Implements a XML-RPC server, which works with Apache mod_ruby.
-
-Use it in the same way as CGIServer!
-
-== Superclass
-((<XMLRPC::BasicServer>))
-=end 
-
-class ModRubyServer < BasicServer
-
-  def initialize(*a)
-    @ap = Apache::request
-    super(*a)
-  end
-
-  def serve
-    catch(:exit_serve) {
-      header = {}
-      @ap.headers_in.each {|key, value| header[key.capitalize] = value}
-
-      length = header['Content-length'].to_i
-
-      http_error(405, "Method Not Allowed") unless @ap.request_method  == "POST" 
-      http_error(400, "Bad Request")        unless parse_content_type(header['Content-type']).first == "text/xml"
-      http_error(411, "Length Required")    unless length > 0 
-
-      # TODO: do we need a call to binmode?
-      @ap.binmode
-      data = @ap.read(length)
-
-      http_error(400, "Bad Request")        if data.nil? or data.size != length
-
-      http_write(process(data), 200, "Content-type" => "text/xml; charset=utf-8")
-    }
-  end
-
-
-  private
-
-  def http_error(status, message)
-    err = "#{status} #{message}"
-    msg = <<-"MSGEND" 
-      <html>
-        <head>
-          <title>#{err}</title>
-        </head>
-        <body>
-          <h1>#{err}</h1>
-          <p>Unexpected error occured while processing XML-RPC request!</p>
-        </body>
-      </html>
-    MSGEND
-
-    http_write(msg, status, "Status" => err, "Content-type" => "text/html")
-    throw :exit_serve # exit from the #serve method
-  end
-
-  def http_write(body, status, header)
-    h = {}
-    header.each {|key, value| h[key.to_s.capitalize] = value}
-    h['Status']         ||= "200 OK"
-    h['Content-length'] ||= body.size.to_s 
-
-    h.each {|key, value| @ap.headers_out[key] = value }
-    @ap.content_type = h["Content-type"] 
-    @ap.status = status.to_i 
-    @ap.send_http_header 
-
-    @ap.print body
-  end
-
-end
-
-=begin
-= XMLRPC::Server
-== Synopsis
-    require "xmlrpc/server"
- 
-    s = XMLRPC::Server.new(8080) 
-
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
- 
-    s.serve
-
-== Description
-Implements a standalone XML-RPC server. The method (({serve}))) is left if a SIGHUP is sent to the
-program.
-
-== Superclass
-((<XMLRPC::WEBrickServlet>))
-
-== Class Methods
---- XMLRPC::Server.new( port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a )
-    Creates a new (({XMLRPC::Server})) instance, which is a XML-RPC server listening on
-    port ((|port|)) and accepts requests for the host ((|host|)), which is by default only the localhost. 
-    The server is not started, to start it you have to call ((<serve|XMLRPC::Server#serve>)).
-
-    Parameters ((|audit|)) and ((|debug|)) are obsolete!
-
-    All additionally given parameters in ((|*a|)) are by-passed to ((<XMLRPC::BasicServer.new>)). 
-    
-== Instance Methods
---- XMLRPC::Server#serve
-    Call this after you have added all you handlers to the server.
-    This method starts the server to listen for XML-RPC requests and answer them.
-
---- XMLRPC::Server#shutdown
-    Stops and shuts the server down.
-    
-=end
-
-class WEBrickServlet < BasicServer; end # forward declaration
-
-class Server < WEBrickServlet
-
-  def initialize(port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a)
-    super(*a)
-    require 'webrick'
-    @server = WEBrick::HTTPServer.new(:Port => port, :BindAddress => host, :MaxClients => maxConnections, 
-                                      :Logger => WEBrick::Log.new(stdlog))
-    @server.mount("/", self)
-  end
-  
-  def serve
-    if RUBY_PLATFORM =~ /mingw|mswin32/
-      signals = [1]
-    else
-      signals = %w[INT TERM HUP]
-    end
-    signals.each { |signal| trap(signal) { @server.shutdown } }
-
-    @server.start
-  end
-  
-  def shutdown
-    @server.shutdown
-  end
- 
-end
-
-=begin
-= XMLRPC::WEBrickServlet
-== Synopsis
-
-    require "webrick"
-    require "xmlrpc/server"
-
-    s = XMLRPC::WEBrickServlet.new
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
-
-    httpserver = WEBrick::HTTPServer.new(:Port => 8080)    
-    httpserver.mount("/RPC2", s)
-    trap("HUP") { httpserver.shutdown }   # use 1 instead of "HUP" on Windows
-    httpserver.start
-
-== Instance Methods
-
---- XMLRPC::WEBrickServlet#set_valid_ip( *ip_addr )
-    Specifies the valid IP addresses that are allowed to connect to the server.
-    Each IP is either a (({String})) or a (({Regexp})).
-
---- XMLRPC::WEBrickServlet#get_valid_ip
-    Return the via method ((<set_valid_ip|XMLRPC::Server#set_valid_ip>)) specified
-    valid IP addresses.
- 
-== Description
-Implements a servlet for use with WEBrick, a pure Ruby (HTTP-) server framework.
-
-== Superclass
-((<XMLRPC::BasicServer>))
-
-=end
-
-class WEBrickServlet < BasicServer
-  def initialize(*a)
-    super
-    require "webrick/httpstatus"
-    @valid_ip = nil
-  end
-
-  # deprecated from WEBrick/1.2.2. 
-  # but does not break anything.
-  def require_path_info?
-    false 
-  end
-
-  def get_instance(config, *options)
-    # TODO: set config & options
-    self
-  end
-
-  def set_valid_ip(*ip_addr)
-    if ip_addr.size == 1 and ip_addr[0].nil?
-      @valid_ip = nil
-    else
-      @valid_ip = ip_addr
-    end
-  end
-
-  def get_valid_ip
-    @valid_ip
-  end
-
-  def service(request, response)
-
-    if @valid_ip 
-      raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
-    end
-
-    if request.request_method != "POST"
-      raise WEBrick::HTTPStatus::MethodNotAllowed,
-            "unsupported method `#{request.request_method}'."
-    end
-
-    if parse_content_type(request['Content-type']).first != "text/xml" 
-      raise WEBrick::HTTPStatus::BadRequest
-    end 
-
-    length = (request['Content-length'] || 0).to_i
-
-    raise WEBrick::HTTPStatus::LengthRequired unless length > 0
-
-    data = request.body
-
-    if data.nil? or data.size != length
-      raise WEBrick::HTTPStatus::BadRequest
-    end
-
-    resp = process(data)
-    if resp.nil? or resp.size <= 0  
-      raise WEBrick::HTTPStatus::InternalServerError
-    end
-
-    response.status = 200
-    response['Content-Length'] = resp.size
-    response['Content-Type']   = "text/xml; charset=utf-8"
-    response.body = resp 
-  end
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: server.rb 16966 2008-06-07 19:56:11Z shyouhei $    
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/utils.rb
deleted file mode 100644
index ca74b88..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xmlrpc/utils.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# Defines ParserWriterChooseMixin, which makes it possible to choose a
-# different XML writer and/or XML parser then the default one.
-# The Mixin is used in client.rb (class Client) and server.rb (class 
-# BasicServer)
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: utils.rb 16907 2008-06-07 16:54:15Z shyouhei $ 
-#
-
-module XMLRPC
-
-  #
-  # This module enables a user-class to be marshalled
-  # by XML-RPC for Ruby into a Hash, with one additional
-  # key/value pair "___class___" => ClassName
-  # 
-  module Marshallable
-  end
-
-
-  module ParserWriterChooseMixin
-
-    def set_writer(writer)
-      @create = Create.new(writer)
-      self
-    end
-
-    def set_parser(parser)
-      @parser = parser
-      self
-    end
-
-    private
-
-    def create
-      # if set_writer was not already called then call it now
-      if @create.nil? then
-	set_writer(Config::DEFAULT_WRITER.new)
-      end
-      @create
-    end
-
-    def parser
-      # if set_parser was not already called then call it now
-      if @parser.nil? then
-	set_parser(Config::DEFAULT_PARSER.new)
-      end
-      @parser
-    end
-
-  end # module ParserWriterChooseMixin
-
-
-  module Service
-
-  #
-  # base class for Service Interface definitions, used
-  # by BasicServer#add_handler
-  #
-
-  class BasicInterface
-    attr_reader :prefix, :methods
-
-    def initialize(prefix)
-      @prefix = prefix
-      @methods = []
-    end
-
-    def add_method(sig, help=nil, meth_name=nil)
-      mname = nil
-      sig = [sig] if sig.kind_of? String
-
-      sig = sig.collect do |s| 
-        name, si = parse_sig(s)
-        raise "Wrong signatures!" if mname != nil and name != mname 
-        mname = name
-        si
-      end
-
-      @methods << [mname, meth_name || mname, sig, help]
-    end
-
-    private # ---------------------------------
-  
-    def parse_sig(sig)
-      # sig is a String
-      if sig =~ /^\s*(\w+)\s+([^(]+)(\(([^)]*)\))?\s*$/
-        params = [$1]
-        name   = $2.strip 
-        $4.split(",").each {|i| params << i.strip} if $4 != nil
-        return name, params
-      else
-        raise "Syntax error in signature"
-      end
-    end
-
-  end # class BasicInterface
-
-  #
-  # class which wraps a Service Interface definition, used
-  # by BasicServer#add_handler
-  #
-  class Interface < BasicInterface
-    def initialize(prefix, &p)
-      raise "No interface specified" if p.nil?
-      super(prefix)
-      instance_eval(&p)
-    end
-
-    def get_methods(obj, delim=".") 
-      prefix = @prefix + delim
-      @methods.collect { |name, meth, sig, help| 
-        [prefix + name, obj.method(meth).to_proc, sig, help] 
-      }
-    end
-
-    private # ---------------------------------
-
-    def meth(*a)
-      add_method(*a)
-    end
-
-  end # class Interface
-
-  class PublicInstanceMethodsInterface < BasicInterface
-    def initialize(prefix)
-      super(prefix)
-    end
-
-    def get_methods(obj, delim=".")
-      prefix = @prefix + delim
-      obj.class.public_instance_methods(false).collect { |name|
-        [prefix + name, obj.method(name).to_proc, nil, nil] 
-      }
-    end
-  end
-
-
-  end # module Service
-
-
-  # 
-  # short-form to create a Service::Interface
-  #
-  def self.interface(prefix, &p)
-    Service::Interface.new(prefix, &p)  
-  end
-
-  # short-cut for creating a PublicInstanceMethodsInterface
-  def self.iPIMethods(prefix)
-    Service::PublicInstanceMethodsInterface.new(prefix) 
-  end
-
-
-  module ParseContentType
-    def parse_content_type(str)
-      a, *b = str.split(";")
-      return a.strip.downcase, *b
-    end
-  end
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/charset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/charset.rb
deleted file mode 100644
index 15d5500..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/charset.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-# XSD4R - Charset handling library.
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-module Charset
-  @internal_encoding = $KCODE
-
-  class XSDError < StandardError; end
-  class CharsetError < XSDError; end
-  class UnknownCharsetError < CharsetError; end
-  class CharsetConversionError < CharsetError; end
-
-public
-
-  ###
-  ## Maps
-  #
-  EncodingConvertMap = {}
-  def Charset.init
-    EncodingConvertMap[['UTF8', 'X_ISO8859_1']] =
-      Proc.new { |str| str.unpack('U*').pack('C*') }
-    EncodingConvertMap[['X_ISO8859_1', 'UTF8']] =
-      Proc.new { |str| str.unpack('C*').pack('U*') }
-    begin
-      require 'xsd/iconvcharset'
-      @internal_encoding = 'UTF8'
-      sjtag = (/(mswin|bccwin|mingw|cygwin|emx)/ =~ RUBY_PLATFORM) ? 'cp932' :
-        'shift_jis'
-      EncodingConvertMap[['UTF8', 'EUC' ]] =
-        Proc.new { |str| IconvCharset.safe_iconv("euc-jp", "utf-8", str) }
-      EncodingConvertMap[['EUC' , 'UTF8']] =
-        Proc.new { |str| IconvCharset.safe_iconv("utf-8", "euc-jp", str) }
-      EncodingConvertMap[['EUC' , 'SJIS']] =
-        Proc.new { |str| IconvCharset.safe_iconv(sjtag, "euc-jp", str) }
-      EncodingConvertMap[['UTF8', 'SJIS']] =
-        Proc.new { |str| IconvCharset.safe_iconv(sjtag, "utf-8", str) }
-      EncodingConvertMap[['SJIS', 'UTF8']] =
-        Proc.new { |str| IconvCharset.safe_iconv("utf-8", sjtag, str) }
-      EncodingConvertMap[['SJIS', 'EUC' ]] =
-        Proc.new { |str| IconvCharset.safe_iconv("euc-jp", sjtag, str) }
-    rescue LoadError
-      begin
-       	require 'nkf'
-	EncodingConvertMap[['EUC' , 'SJIS']] =
-          Proc.new { |str| NKF.nkf('-sXm0', str) }
-	EncodingConvertMap[['SJIS', 'EUC' ]] =
-          Proc.new { |str| NKF.nkf('-eXm0', str) }
-      rescue LoadError
-      end
-  
-      begin
-	require 'uconv'
-	@internal_encoding = 'UTF8'
-	EncodingConvertMap[['UTF8', 'EUC' ]] = Uconv.method(:u8toeuc)
-	EncodingConvertMap[['UTF8', 'SJIS']] = Uconv.method(:u8tosjis)
-	EncodingConvertMap[['EUC' , 'UTF8']] = Uconv.method(:euctou8)
-	EncodingConvertMap[['SJIS', 'UTF8']] = Uconv.method(:sjistou8)
-      rescue LoadError
-      end
-    end
-  end
-  self.init
-
-  CharsetMap = {
-    'NONE' => 'us-ascii',
-    'EUC' => 'euc-jp',
-    'SJIS' => 'shift_jis',
-    'UTF8' => 'utf-8',
-    'X_ISO_8859_1' => 'iso-8859-1',
-    'X_UNKNOWN' => nil,
-  }
-
-
-  ###
-  ## handlers
-  #
-  def Charset.encoding
-    @internal_encoding
-  end
-
-  def Charset.encoding=(encoding)
-    warn("xsd charset is set to #{encoding}") if $DEBUG
-    @internal_encoding = encoding
-  end
-
-  def Charset.xml_encoding_label
-    charset_label(@internal_encoding)
-  end
-
-  def Charset.encoding_to_xml(str, charset)
-    encoding_conv(str, @internal_encoding, charset_str(charset))
-  end
-
-  def Charset.encoding_from_xml(str, charset)
-    encoding_conv(str, charset_str(charset), @internal_encoding)
-  end
-
-  def Charset.encoding_conv(str, enc_from, enc_to)
-    if enc_from == enc_to or enc_from == 'NONE' or enc_to == 'NONE'
-      str
-    elsif converter = EncodingConvertMap[[enc_from, enc_to]]
-      converter.call(str)
-    else
-      raise CharsetConversionError.new(
-	"Converter not found: #{enc_from} -> #{enc_to}")
-    end
-  end
-
-  def Charset.charset_label(encoding)
-    CharsetMap[encoding.upcase]
-  end
-
-  def Charset.charset_str(label)
-    if CharsetMap.respond_to?(:key)
-      CharsetMap.key(label.downcase) || 'X_UNKNOWN'
-    else
-      CharsetMap.index(label.downcase) || 'X_UNKNOWN'
-    end
-  end
-
-  # us_ascii = '[\x00-\x7F]'
-  us_ascii = '[\x9\xa\xd\x20-\x7F]'	# XML 1.0 restricted.
-  USASCIIRegexp = Regexp.new("\\A#{us_ascii}*\\z", nil, "NONE")
-
-  twobytes_euc = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'
-  threebytes_euc = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'
-  character_euc = "(?:#{us_ascii}|#{twobytes_euc}|#{threebytes_euc})"
-  EUCRegexp = Regexp.new("\\A#{character_euc}*\\z", nil, "NONE")
-
-  # onebyte_sjis = '[\x00-\x7F\xA1-\xDF]'
-  onebyte_sjis = '[\x9\xa\xd\x20-\x7F\xA1-\xDF]'	# XML 1.0 restricted.
-  twobytes_sjis = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'
-  character_sjis = "(?:#{onebyte_sjis}|#{twobytes_sjis})"
-  SJISRegexp = Regexp.new("\\A#{character_sjis}*\\z", nil, "NONE")
-
-  # 0xxxxxxx
-  # 110yyyyy 10xxxxxx
-  twobytes_utf8 = '(?:[\xC0-\xDF][\x80-\xBF])'
-  # 1110zzzz 10yyyyyy 10xxxxxx
-  threebytes_utf8 = '(?:[\xE0-\xEF][\x80-\xBF][\x80-\xBF])'
-  # 11110uuu 10uuuzzz 10yyyyyy 10xxxxxx
-  fourbytes_utf8 = '(?:[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF])'
-  character_utf8 =
-    "(?:#{us_ascii}|#{twobytes_utf8}|#{threebytes_utf8}|#{fourbytes_utf8})"
-  UTF8Regexp = Regexp.new("\\A#{character_utf8}*\\z", nil, "NONE")
-
-  def Charset.is_us_ascii(str)
-    USASCIIRegexp =~ str
-  end
-
-  def Charset.is_utf8(str)
-    UTF8Regexp =~ str
-  end
-
-  def Charset.is_euc(str)
-    EUCRegexp =~ str
-  end
-
-  def Charset.is_sjis(str)
-    SJISRegexp =~ str
-  end
-
-  def Charset.is_ces(str, code = $KCODE)
-    case code
-    when 'NONE'
-      is_us_ascii(str)
-    when 'UTF8'
-      is_utf8(str)
-    when 'EUC'
-      is_euc(str)
-    when 'SJIS'
-      is_sjis(str)
-    else
-      raise UnknownCharsetError.new("Unknown charset: #{code}")
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen.rb
deleted file mode 100644
index d820ebf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-# XSD4R - Generating code library
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/moduledef'
-require 'xsd/codegen/classdef'
-require 'xsd/codegen/methoddef'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/classdef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/classdef.rb
deleted file mode 100644
index 9eb1ce6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/classdef.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-# XSD4R - Generating class definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/moduledef'
-require 'xsd/codegen/methoddef'
-
-
-module XSD
-module CodeGen
-
-
-class ClassDef < ModuleDef
-  include GenSupport
-
-  def initialize(name, baseclass = nil)
-    super(name)
-    @baseclass = baseclass
-    @classvar = []
-    @attrdef = []
-  end
-
-  def def_classvar(var, value)
-    var = var.sub(/\A@@/, "")
-    unless safevarname?(var)
-      raise ArgumentError.new("#{var} seems to be unsafe")
-    end
-    @classvar << [var, value]
-  end
-
-  def def_attr(attrname, writable = true, varname = nil)
-    unless safevarname?(varname || attrname)
-      raise ArgumentError.new("#{varname || attrname} seems to be unsafe")
-    end
-    @attrdef << [attrname, writable, varname]
-  end
-
-  def dump
-    buf = ""
-    unless @requirepath.empty?
-      buf << dump_requirepath 
-    end
-    buf << dump_emptyline unless buf.empty?
-    package = @name.split(/::/)[0..-2]
-    buf << dump_package_def(package) unless package.empty?
-    buf << dump_comment if @comment
-    buf << dump_class_def
-    spacer = false
-    unless @classvar.empty?
-      spacer = true
-      buf << dump_classvar
-    end
-    unless @const.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_const
-    end
-    unless @code.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_code
-    end
-    unless @attrdef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_attributes
-    end
-    unless @methoddef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_methods
-    end
-    buf << dump_class_def_end
-    buf << dump_package_def_end(package) unless package.empty?
-    buf.gsub(/^\s+$/, '')
-  end
-
-private
-
-  def dump_class_def
-    name = @name.to_s.split(/::/)
-    if @baseclass
-      format("class #{name.last} < #{@baseclass}")
-    else
-      format("class #{name.last}")
-    end
-  end
-
-  def dump_class_def_end
-    str = format("end")
-  end
-
-  def dump_classvar
-    dump_static(
-      @classvar.collect { |var, value|
-        %Q(@@#{var.sub(/^@@/, "")} = #{dump_value(value)})
-      }.join("\n")
-    )
-  end
-
-  def dump_attributes
-    str = ""
-    @attrdef.each do |attrname, writable, varname|
-      varname ||= attrname
-      if attrname == varname
-        str << format(dump_accessor(attrname, writable), 2)
-      end
-    end
-    @attrdef.each do |attrname, writable, varname|
-      varname ||= attrname
-      if attrname != varname
-        str << "\n" unless str.empty?
-        str << format(dump_attribute(attrname, writable, varname), 2)
-      end
-    end
-    str
-  end
-
-  def dump_accessor(attrname, writable)
-    if writable
-      "attr_accessor :#{attrname}"
-    else
-      "attr_reader :#{attrname}"
-    end
-  end
-
-  def dump_attribute(attrname, writable, varname)
-    str = nil
-    mr = MethodDef.new(attrname)
-    mr.definition = "@#{varname}"
-    str = mr.dump
-    if writable
-      mw = MethodDef.new(attrname + "=", 'value')
-      mw.definition = "@#{varname} = value"
-      str << "\n" + mw.dump
-    end
-    str
-  end
-end
-
-
-end
-end
-
-
-if __FILE__ == $0
-  require 'xsd/codegen/classdef'
-  include XSD::CodeGen
-  c = ClassDef.new("Foo::Bar::HobbitName", String)
-  c.def_require("foo/bar")
-  c.comment = <<-EOD
-      foo
-    bar
-      baz
-  EOD
-  c.def_const("FOO", 1)
-  c.def_classvar("@@foo", "var".dump)
-  c.def_classvar("baz", "1".dump)
-  c.def_attr("Foo", true, "foo")
-  c.def_attr("bar")
-  c.def_attr("baz", true)
-  c.def_attr("Foo2", true, "foo2")
-  c.def_attr("foo3", false, "foo3")
-  c.def_method("foo") do
-    <<-EOD
-        foo.bar = 1
-\tbaz.each do |ele|
-\t  ele
-        end
-    EOD
-  end
-  c.def_method("baz", "qux") do
-    <<-EOD
-      [1, 2, 3].each do |i|
-        p i
-      end
-    EOD
-  end
-
-  m = MethodDef.new("qux", "quxx", "quxxx") do
-    <<-EOD
-    p quxx + quxxx
-    EOD
-  end
-  m.comment = "hello world\n123"
-  c.add_method(m)
-  c.def_code <<-EOD
-    Foo.new
-    Bar.z
-  EOD
-  c.def_code <<-EOD
-    Foo.new
-    Bar.z
-  EOD
-  c.def_privatemethod("foo", "baz", "*arg", "&block")
-
-  puts c.dump
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/commentdef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/commentdef.rb
deleted file mode 100644
index c9493a1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/commentdef.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# XSD4R - Generating comment definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-
-
-module XSD
-module CodeGen
-
-
-module CommentDef
-  include GenSupport
-
-  attr_accessor :comment
-
-private
-
-  def dump_comment
-    if /\A#/ =~ @comment
-      format(@comment)
-    else
-      format(@comment).gsub(/^/, '# ')
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/gensupport.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/gensupport.rb
deleted file mode 100644
index 1e85d36..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/gensupport.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# XSD4R - Code generation support
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-module CodeGen
-
-# from the file 'keywords' in 1.9.
-KEYWORD = {}
-%w(
-__LINE__
-__FILE__
-BEGIN
-END
-alias
-and
-begin
-break
-case
-class
-def
-defined?
-do
-else
-elsif
-end
-ensure
-false
-for
-if
-in
-module
-next
-nil
-not
-or
-redo
-rescue
-retry
-return
-self
-super
-then
-true
-undef
-unless
-until
-when
-while
-yield
-).each { |k| KEYWORD[k] = nil }
-
-module GenSupport
-  def capitalize(target)
-    target.sub(/^([a-z])/) { $1.tr!('[a-z]', '[A-Z]') }
-  end
-  module_function :capitalize
-
-  def uncapitalize(target)
-    target.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
-  end
-  module_function :uncapitalize
-
-  def safeconstname(name)
-    safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
-      GenSupport.capitalize(ele)
-    }.join
-    if /^[A-Z]/ !~ safename or keyword?(safename)
-      safename = "C_#{safename}"
-    end
-    safename
-  end
-  module_function :safeconstname
-
-  def safeconstname?(name)
-    /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
-  end
-  module_function :safeconstname?
-
-  def safemethodname(name)
-    safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
-    safename = uncapitalize(safename)
-    if /^[a-z]/ !~ safename
-      safename = "m_#{safename}"
-    end
-    safename
-  end
-  module_function :safemethodname
-
-  def safemethodname?(name)
-    /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name
-  end
-  module_function :safemethodname?
-
-  def safevarname(name)
-    safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
-    if /^[a-z]/ !~ safename or keyword?(safename)
-      "v_#{safename}"
-    else
-      safename
-    end
-  end
-  module_function :safevarname
-
-  def safevarname?(name)
-    /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
-  end
-  module_function :safevarname?
-
-  def keyword?(word)
-    KEYWORD.key?(word)
-  end
-  module_function :keyword?
-
-  def format(str, indent = nil)
-    str = trim_eol(str)
-    str = trim_indent(str)
-    if indent
-      str.gsub(/^/, " " * indent)
-    else
-      str
-    end
-  end
-
-private
-
-  def trim_eol(str)
-    str.collect { |line|
-      line.sub(/\r?\n\z/, "") + "\n"
-    }.join
-  end
-
-  def trim_indent(str)
-    indent = nil
-    str = str.collect { |line| untab(line) }.join
-    str.each do |line|
-      head = line.index(/\S/)
-      if !head.nil? and (indent.nil? or head < indent)
-        indent = head
-      end
-    end
-    return str unless indent
-    str.collect { |line|
-      line.sub(/^ {0,#{indent}}/, "")
-    }.join
-  end
-
-  def untab(line, ts = 8)
-    while pos = line.index(/\t/)
-      line = line.sub(/\t/, " " * (ts - (pos % ts)))
-    end
-    line
-  end
-
-  def dump_emptyline
-    "\n"
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/methoddef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/methoddef.rb
deleted file mode 100644
index 15892fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/methoddef.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-# XSD4R - Generating method definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/commentdef'
-
-
-module XSD
-module CodeGen
-
-
-class MethodDef
-  include GenSupport
-  include CommentDef
-
-  attr_accessor :definition
-
-  def initialize(name, *params)
-    unless safemethodname?(name)
-      raise ArgumentError.new("name '#{name}' seems to be unsafe")
-    end
-    @name = name
-    @params = params
-    @comment = nil
-    @definition = yield if block_given?
-  end
-
-  def dump
-    buf = ""
-    buf << dump_comment if @comment
-    buf << dump_method_def
-    buf << dump_definition if @definition and !@definition.empty?
-    buf << dump_method_def_end
-    buf
-  end
-
-private
-
-  def dump_method_def
-    if @params.empty?
-      format("def #{@name}")
-    else
-      format("def #{@name}(#{@params.join(", ")})")
-    end
-  end
-
-  def dump_method_def_end
-    format("end")
-  end
-
-  def dump_definition
-    format(@definition, 2)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/moduledef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/moduledef.rb
deleted file mode 100644
index 744af2f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/codegen/moduledef.rb
+++ /dev/null
@@ -1,191 +0,0 @@
-# XSD4R - Generating module definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/methoddef'
-require 'xsd/codegen/commentdef'
-
-
-module XSD
-module CodeGen
-
-
-class ModuleDef
-  include GenSupport
-  include CommentDef
-
-  def initialize(name)
-    @name = name
-    @comment = nil
-    @const = []
-    @code = []
-    @requirepath = []
-    @methoddef = []
-  end
-
-  def def_require(path)
-    @requirepath << path
-  end
-
-  def def_const(const, value)
-    unless safeconstname?(const)
-      raise ArgumentError.new("#{const} seems to be unsafe")
-    end
-    @const << [const, value]
-  end
-
-  def def_code(code)
-    @code << code
-  end
-
-  def def_method(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
-  end
-  alias def_publicmethod def_method
-
-  def def_protectedmethod(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? },
-      :protected)
-  end
-
-  def def_privatemethod(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
-  end
-
-  def add_method(m, visibility = :public)
-    @methoddef << [visibility, m]
-  end
-
-  def dump
-    buf = ""
-    unless @requirepath.empty?
-      buf << dump_requirepath 
-    end
-    buf << dump_emptyline unless buf.empty?
-    package = @name.split(/::/)[0..-2]
-    buf << dump_package_def(package) unless package.empty?
-    buf << dump_comment if @comment
-    buf << dump_module_def
-    spacer = false
-    unless @const.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_const
-    end
-    unless @code.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_code
-    end
-    unless @methoddef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_methods
-    end
-    buf << dump_module_def_end
-    buf << dump_package_def_end(package) unless package.empty?
-    buf.gsub(/^\s+$/, '')
-  end
-
-private
-
-  def dump_requirepath
-    format(
-      @requirepath.collect { |path|
-        %Q(require '#{path}')
-      }.join("\n")
-    )
-  end
-
-  def dump_const
-    dump_static(
-      @const.sort.collect { |var, value|
-        %Q(#{var} = #{dump_value(value)})
-      }.join("\n")
-    )
-  end
-
-  def dump_code
-    dump_static(@code.join("\n"))
-  end
-
-  def dump_static(str)
-    format(str, 2)
-  end
-
-  def dump_methods
-    methods = {}
-    @methoddef.each do |visibility, method|
-      (methods[visibility] ||= []) << method
-    end
-    str = ""
-    [:public, :protected, :private].each do |visibility|
-      if methods[visibility]
-        str << "\n" unless str.empty?
-        str << visibility.to_s << "\n\n" unless visibility == :public
-        str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n")
-      end
-    end
-    str
-  end
-
-  def dump_value(value)
-    if value.respond_to?(:to_src)
-      value.to_src
-    else
-      value
-    end
-  end
-
-  def dump_package_def(package)
-    format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n"
-  end
-
-  def dump_package_def_end(package)
-    "\n\n" + format(package.collect { |ele| "end" }.join("; "))
-  end
-
-  def dump_module_def
-    name = @name.to_s.split(/::/)
-    format("module #{name.last}")
-  end
-
-  def dump_module_def_end
-    format("end")
-  end
-end
-
-
-end
-end
-
-
-if __FILE__ == $0
-  require 'xsd/codegen/moduledef'
-  include XSD::CodeGen
-  m = ModuleDef.new("Foo::Bar::HobbitName")
-  m.def_require("foo/bar")
-  m.def_require("baz")
-  m.comment = <<-EOD
-    foo
-    bar
-    baz
-  EOD
-  m.def_method("foo") do
-    <<-EOD
-      foo.bar = 1
-      baz.each do |ele|
-        ele + 1
-      end
-    EOD
-  end
-  m.def_method("baz", "qux")
-  #m.def_protectedmethod("aaa")
-  m.def_privatemethod("bbb")
-  puts m.dump
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes.rb
deleted file mode 100644
index bbe6c85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes.rb
+++ /dev/null
@@ -1,1269 +0,0 @@
-# XSD4R - XML Schema Datatype implementation.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/charset'
-require 'uri'
-
-
-###
-## XMLSchamaDatatypes general definitions.
-#
-module XSD
-
-
-Namespace = 'http://www.w3.org/2001/XMLSchema'
-InstanceNamespace = 'http://www.w3.org/2001/XMLSchema-instance'
-
-AttrType = 'type'
-NilValue = 'true'
-
-AnyTypeLiteral = 'anyType'
-AnySimpleTypeLiteral = 'anySimpleType'
-NilLiteral = 'nil'
-StringLiteral = 'string'
-BooleanLiteral = 'boolean'
-DecimalLiteral = 'decimal'
-FloatLiteral = 'float'
-DoubleLiteral = 'double'
-DurationLiteral = 'duration'
-DateTimeLiteral = 'dateTime'
-TimeLiteral = 'time'
-DateLiteral = 'date'
-GYearMonthLiteral = 'gYearMonth'
-GYearLiteral = 'gYear'
-GMonthDayLiteral = 'gMonthDay'
-GDayLiteral = 'gDay'
-GMonthLiteral = 'gMonth'
-HexBinaryLiteral = 'hexBinary'
-Base64BinaryLiteral = 'base64Binary'
-AnyURILiteral = 'anyURI'
-QNameLiteral = 'QName'
-
-NormalizedStringLiteral = 'normalizedString'
-#3.3.2 token
-#3.3.3 language
-#3.3.4 NMTOKEN
-#3.3.5 NMTOKENS
-#3.3.6 Name
-#3.3.7 NCName
-#3.3.8 ID
-#3.3.9 IDREF
-#3.3.10 IDREFS
-#3.3.11 ENTITY
-#3.3.12 ENTITIES
-IntegerLiteral = 'integer'
-NonPositiveIntegerLiteral = 'nonPositiveInteger'
-NegativeIntegerLiteral = 'negativeInteger'
-LongLiteral = 'long'
-IntLiteral = 'int'
-ShortLiteral = 'short'
-ByteLiteral = 'byte'
-NonNegativeIntegerLiteral = 'nonNegativeInteger'
-UnsignedLongLiteral = 'unsignedLong'
-UnsignedIntLiteral = 'unsignedInt'
-UnsignedShortLiteral = 'unsignedShort'
-UnsignedByteLiteral = 'unsignedByte'
-PositiveIntegerLiteral = 'positiveInteger'
-
-AttrTypeName = QName.new(InstanceNamespace, AttrType)
-AttrNilName = QName.new(InstanceNamespace, NilLiteral)
-
-AnyTypeName = QName.new(Namespace, AnyTypeLiteral)
-AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral)
-
-class Error < StandardError; end
-class ValueSpaceError < Error; end
-
-
-###
-## The base class of all datatypes with Namespace.
-#
-class NSDBase
-  @@types = []
-
-  attr_accessor :type
-
-  def self.inherited(klass)
-    @@types << klass
-  end
-
-  def self.types
-    @@types
-  end
-
-  def initialize
-  end
-
-  def init(type)
-    @type = type
-  end
-end
-
-
-###
-## The base class of XSD datatypes.
-#
-class XSDAnySimpleType < NSDBase
-  include XSD
-  Type = QName.new(Namespace, AnySimpleTypeLiteral)
-
-  # @data represents canonical space (ex. Integer: 123).
-  attr_reader :data
-  # @is_nil represents this data is nil or not.
-  attr_accessor :is_nil
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  # true or raise
-  def check_lexical_format(value)
-    screen_data(value)
-    true
-  end
-
-  # set accepts a string which follows lexical space (ex. String: "+123"), or
-  # an object which follows canonical space (ex. Integer: 123).
-  def set(value)
-    if value.nil?
-      @is_nil = true
-      @data = nil
-      _set(nil)
-    else
-      @is_nil = false
-      _set(screen_data(value))
-    end
-  end
-
-  # to_s creates a string which follows lexical space (ex. String: "123").
-  def to_s()
-    if @is_nil
-      ""
-    else
-      _to_s
-    end
-  end
-
-private
-
-  def init(type, value)
-    super(type)
-    set(value)
-  end
-
-  # raises ValueSpaceError if check failed
-  def screen_data(value)
-    value
-  end
-
-  def _set(value)
-    @data = value
-  end
-
-  def _to_s
-    @data.to_s
-  end
-end
-
-class XSDNil < XSDAnySimpleType
-  Type = QName.new(Namespace, NilLiteral)
-  Value = 'true'
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-end
-
-
-###
-## Primitive datatypes.
-#
-class XSDString < XSDAnySimpleType
-  Type = QName.new(Namespace, StringLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    unless XSD::Charset.is_ces(value, XSD::Charset.encoding)
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    value
-  end
-end
-
-class XSDBoolean < XSDAnySimpleType
-  Type = QName.new(Namespace, BooleanLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    if value.is_a?(String)
-      str = value.strip
-      if str == 'true' || str == '1'
-	true
-      elsif str == 'false' || str == '0'
-	false
-      else
-	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-    else
-      value ? true : false
-    end
-  end
-end
-
-class XSDDecimal < XSDAnySimpleType
-  Type = QName.new(Namespace, DecimalLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def nonzero?
-    (@number != '0')
-  end
-
-private
-
-  def screen_data(d)
-    if d.is_a?(String)
-      # Integer("00012") => 10 in Ruby.
-      d.sub!(/^([+\-]?)0*(?=\d)/, "\\1")
-    end
-    screen_data_str(d)
-  end
-
-  def screen_data_str(str)
-    /^([+\-]?)(\d*)(?:\.(\d*)?)?$/ =~ str.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    sign = $1 || '+'
-    int_part = $2
-    frac_part = $3
-    int_part = '0' if int_part.empty?
-    frac_part = frac_part ? frac_part.sub(/0+$/, '') : ''
-    point = - frac_part.size
-    number = int_part + frac_part
-    # normalize
-    if sign == '+'
-      sign = ''
-    elsif sign == '-'
-      if number == '0'
-	sign = ''
-      end
-    end
-    [sign, point, number]
-  end
-
-  def _set(data)
-    if data.nil?
-      @sign = @point = @number = @data = nil
-      return
-    end
-    @sign, @point, @number = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  # 0.0 -> 0; right?
-  def _to_s
-    str = @number.dup
-    if @point.nonzero?
-      str[@number.size + @point, 0] = '.'
-    end
-    @sign + str
-  end
-end
-
-module FloatConstants
-  NaN = 0.0/0.0
-  POSITIVE_INF = +1.0/0.0
-  NEGATIVE_INF = -1.0/0.0
-  POSITIVE_ZERO = +1.0/POSITIVE_INF
-  NEGATIVE_ZERO = -1.0/POSITIVE_INF
-  MIN_POSITIVE_SINGLE = 2.0 ** -149
-end
-
-class XSDFloat < XSDAnySimpleType
-  include FloatConstants
-  Type = QName.new(Namespace, FloatLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    # "NaN".to_f => 0 in some environment.  libc?
-    if value.is_a?(Float)
-      return narrow32bit(value)
-    end
-    str = value.to_s.strip
-    if str == 'NaN'
-      NaN
-    elsif str == 'INF'
-      POSITIVE_INF
-    elsif str == '-INF'
-      NEGATIVE_INF
-    else
-      if /^[+\-\.\deE]+$/ !~ str
-	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-      # Float("-1.4E") might fail on some system.
-      str << '0' if /e$/i =~ str
-      begin
-  	return narrow32bit(Float(str))
-      rescue ArgumentError
-  	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-    end
-  end
-
-  def _to_s
-    if @data.nan?
-      'NaN'
-    elsif @data.infinite? == 1
-      'INF'
-    elsif @data.infinite? == -1
-      '-INF'
-    else
-      sign = XSDFloat.positive?(@data) ? '+' : '-'
-      sign + sprintf("%.10g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
-    end
-  end
-
-  # Convert to single-precision 32-bit floating point value.
-  def narrow32bit(f)
-    if f.nan? || f.infinite?
-      f
-    elsif f.abs < MIN_POSITIVE_SINGLE
-      XSDFloat.positive?(f) ? POSITIVE_ZERO : NEGATIVE_ZERO
-    else
-      f
-    end
-  end
-
-  def self.positive?(value)
-    (1 / value) > 0.0
-  end
-end
-
-# Ruby's Float is double-precision 64-bit floating point value.
-class XSDDouble < XSDAnySimpleType
-  include FloatConstants
-  Type = QName.new(Namespace, DoubleLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    # "NaN".to_f => 0 in some environment.  libc?
-    if value.is_a?(Float)
-      return value
-    end
-    str = value.to_s.strip
-    if str == 'NaN'
-      NaN
-    elsif str == 'INF'
-      POSITIVE_INF
-    elsif str == '-INF'
-      NEGATIVE_INF
-    else
-      begin
-	return Float(str)
-      rescue ArgumentError
-	# '1.4e' cannot be parsed on some architecture.
-	if /e\z/i =~ str
-	  begin
-	    return Float(str + '0')
-	  rescue ArgumentError
-	    raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-	  end
-	else
-	  raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-	end
-      end
-    end
-  end
-
-  def _to_s
-    if @data.nan?
-      'NaN'
-    elsif @data.infinite? == 1
-      'INF'
-    elsif @data.infinite? == -1
-      '-INF'
-    else
-      sign = (1 / @data > 0.0) ? '+' : '-'
-      sign + sprintf("%.16g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
-    end
-  end
-end
-
-class XSDDuration < XSDAnySimpleType
-  Type = QName.new(Namespace, DurationLiteral)
-
-  attr_accessor :sign
-  attr_accessor :year
-  attr_accessor :month
-  attr_accessor :day
-  attr_accessor :hour
-  attr_accessor :min
-  attr_accessor :sec
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    /^([+\-]?)P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/ =~ value.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    if ($5 and ((!$2 and !$3 and !$4) or (!$6 and !$7 and !$8)))
-      # Should we allow 'PT5S' here?
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    sign = $1
-    year = $2.to_i
-    month = $3.to_i
-    day = $4.to_i
-    hour = $6.to_i
-    min = $7.to_i
-    sec = $8 ? XSDDecimal.new($8) : 0
-    [sign, year, month, day, hour, min, sec]
-  end
-
-  def _set(data)
-    if data.nil?
-      @sign = @year = @month = @day = @hour = @min = @sec = @data = nil
-      return
-    end
-    @sign, @year, @month, @day, @hour, @min, @sec = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  def _to_s
-    str = ''
-    str << @sign if @sign
-    str << 'P'
-    l = ''
-    l << "#{ @year }Y" if @year.nonzero?
-    l << "#{ @month }M" if @month.nonzero?
-    l << "#{ @day }D" if @day.nonzero?
-    r = ''
-    r << "#{ @hour }H" if @hour.nonzero?
-    r << "#{ @min }M" if @min.nonzero?
-    r << "#{ @sec }S" if @sec.nonzero?
-    str << l
-    if l.empty?
-      str << "0D"
-    end
-    unless r.empty?
-      str << "T" << r
-    end
-    str
-  end
-end
-
-
-require 'rational'
-require 'date'
-
-module XSDDateTimeImpl
-  SecInDay = 86400	# 24 * 60 * 60
-
-  def to_obj(klass)
-    if klass == Time
-      to_time
-    elsif klass == Date
-      to_date
-    elsif klass == DateTime
-      to_datetime
-    else
-      nil
-    end
-  end
-
-  def to_time
-    begin
-      if @data.offset * SecInDay == Time.now.utc_offset
-        d = @data
-	usec = (d.sec_fraction * SecInDay * 1000000).round
-        Time.local(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
-      else
-        d = @data.newof
-	usec = (d.sec_fraction * SecInDay * 1000000).round
-        Time.gm(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
-      end
-    rescue ArgumentError
-      nil
-    end
-  end
-
-  def to_date
-    Date.new0(@data.class.jd_to_ajd(@data.jd, 0, 0), 0, @data.start)
-  end
-
-  def to_datetime
-    data
-  end
-
-  def tz2of(str)
-    /^(?:Z|(?:([+\-])(\d\d):(\d\d))?)$/ =~ str
-    sign = $1
-    hour = $2.to_i
-    min = $3.to_i
-
-    of = case sign
-      when '+'
-	of = +(hour.to_r * 60 + min) / 1440	# 24 * 60
-      when '-'
-	of = -(hour.to_r * 60 + min) / 1440	# 24 * 60
-      else
-	0
-      end
-    of
-  end
-
-  def of2tz(offset)
-    diffmin = offset * 24 * 60
-    if diffmin.zero?
-      'Z'
-    else
-      ((diffmin < 0) ? '-' : '+') << format('%02d:%02d',
-    	(diffmin.abs / 60.0).to_i, (diffmin.abs % 60.0).to_i)
-    end
-  end
-
-  def screen_data(t)
-    # convert t to a DateTime as an internal representation.
-    if t.respond_to?(:to_datetime)      # 1.9 or later
-      t.to_datetime
-    elsif t.is_a?(DateTime)
-      t
-    elsif t.is_a?(Date)
-      t = screen_data_str(t)
-      t <<= 12 if t.year < 0
-      t
-    elsif t.is_a?(Time)
-      jd = DateTime.civil_to_jd(t.year, t.mon, t.mday, DateTime::ITALY)
-      fr = DateTime.time_to_day_fraction(t.hour, t.min, [t.sec, 59].min) +
-        t.usec.to_r / 1000000 / SecInDay
-      of = t.utc_offset.to_r / SecInDay
-      DateTime.new0(DateTime.jd_to_ajd(jd, fr, of), of, DateTime::ITALY)
-    else
-      screen_data_str(t)
-    end
-  end
-
-  def add_tz(s)
-    s + of2tz(@data.offset)
-  end
-end
-
-class XSDDateTime < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, DateTimeLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    if $1 == '0000'
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    mday = $3.to_i
-    hour = $4.to_i
-    min = $5.to_i
-    sec = $6.to_i
-    secfrac = $7
-    zonestr = $8
-    data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr))
-    if secfrac
-      diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
-      data += diffday
-      # FYI: new0 and jd_to_rjd are not necessary to use if you don't have
-      # exceptional reason.
-    end
-    [data, secfrac]
-  end
-
-  def _set(data)
-    if data.nil?
-      @data = @secfrac = nil
-      return
-    end
-    @data, @secfrac = data
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d-%02dT%02d:%02d:%02d',
-      year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec)
-    if @data.sec_fraction.nonzero?
-      if @secfrac
-  	s << ".#{ @secfrac }"
-      else
-	s << sprintf("%.16f",
-          (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
-      end
-    end
-    add_tz(s)
-  end
-end
-
-class XSDTime < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, TimeLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    hour = $1.to_i
-    min = $2.to_i
-    sec = $3.to_i
-    secfrac = $4
-    zonestr = $5
-    data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr))
-    if secfrac
-      diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
-      data += diffday
-    end
-    [data, secfrac]
-  end
-
-  def _set(data)
-    if data.nil?
-      @data = @secfrac = nil
-      return
-    end
-    @data, @secfrac = data
-  end
-
-  def _to_s
-    s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec)
-    if @data.sec_fraction.nonzero?
-      if @secfrac
-  	s << ".#{ @secfrac }"
-      else
-	s << sprintf("%.16f",
-          (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
-      end
-    end
-    add_tz(s)
-  end
-end
-
-class XSDDate < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, DateLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    mday = $3.to_i
-    zonestr = $4
-    DateTime.civil(year, mon, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d-%02d', year, @data.mon, @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGYearMonth < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GYearMonthLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    zonestr = $3
-    DateTime.civil(year, mon, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d', year, @data.mon)
-    add_tz(s)
-  end
-end
-
-class XSDGYear < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GYearLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    zonestr = $2
-    DateTime.civil(year, 1, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d', year)
-    add_tz(s)
-  end
-end
-
-class XSDGMonthDay < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GMonthDayLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mon = $1.to_i
-    mday = $2.to_i
-    zonestr = $3
-    DateTime.civil(1, mon, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d-%02d', @data.mon, @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGDay < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GDayLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mday = $1.to_i
-    zonestr = $2
-    DateTime.civil(1, 1, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d', @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGMonth < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GMonthLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mon = $1.to_i
-    zonestr = $2
-    DateTime.civil(1, mon, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d', @data.mon)
-    add_tz(s)
-  end
-end
-
-class XSDHexBinary < XSDAnySimpleType
-  Type = QName.new(Namespace, HexBinaryLiteral)
-
-  # String in Ruby could be a binary.
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def set_encoded(value)
-    if /^[0-9a-fA-F]*$/ !~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    @data = String.new(value).strip
-    @is_nil = false
-  end
-
-  def string
-    [@data].pack("H*")
-  end
-
-private
-
-  def screen_data(value)
-    value.unpack("H*")[0].tr('a-f', 'A-F')
-  end
-end
-
-class XSDBase64Binary < XSDAnySimpleType
-  Type = QName.new(Namespace, Base64BinaryLiteral)
-
-  # String in Ruby could be a binary.
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def set_encoded(value)
-    if /^[A-Za-z0-9+\/=]*$/ !~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    @data = String.new(value).strip
-    @is_nil = false
-  end
-
-  def string
-    @data.unpack("m")[0]
-  end
-
-private
-
-  def screen_data(value)
-    [value].pack("m").strip
-  end
-end
-
-class XSDAnyURI < XSDAnySimpleType
-  Type = QName.new(Namespace, AnyURILiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    begin
-      URI.parse(value.to_s.strip)
-    rescue URI::InvalidURIError
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-  end
-end
-
-class XSDQName < XSDAnySimpleType
-  Type = QName.new(Namespace, QNameLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    /^(?:([^:]+):)?([^:]+)$/ =~ value.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    prefix = $1
-    localpart = $2
-    [prefix, localpart]
-  end
-
-  def _set(data)
-    if data.nil?
-      @prefix = @localpart = @data = nil
-      return
-    end
-    @prefix, @localpart = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  def _to_s
-    if @prefix
-      "#{ @prefix }:#{ @localpart }"
-    else
-      "#{ @localpart }"
-    end
-  end
-end
-
-
-###
-## Derived types
-#
-class XSDNormalizedString < XSDString
-  Type = QName.new(Namespace, NormalizedStringLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    if /[\t\r\n]/ =~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    super
-  end
-end
-
-class XSDInteger < XSDDecimal
-  Type = QName.new(Namespace, IntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(str)
-    begin
-      data = Integer(str)
-    rescue ArgumentError
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    unless validate(data)
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    data
-  end
-
-  def _set(value)
-    @data = value
-  end
-
-  def _to_s()
-    @data.to_s
-  end
-
-  def validate(v)
-    max = maxinclusive
-    min = mininclusive
-    (max.nil? or v <= max) and (min.nil? or v >= min)
-  end
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    nil
-  end
-
-  PositiveMinInclusive = 1
-  def positive(v)
-    PositiveMinInclusive <= v
-  end
-end
-
-class XSDNonPositiveInteger < XSDInteger
-  Type = QName.new(Namespace, NonPositiveIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    0
-  end
-
-  def mininclusive
-    nil
-  end
-end
-
-class XSDNegativeInteger < XSDNonPositiveInteger
-  Type = QName.new(Namespace, NegativeIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    -1
-  end
-
-  def mininclusive
-    nil
-  end
-end
-
-class XSDLong < XSDInteger
-  Type = QName.new(Namespace, LongLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +9223372036854775807
-  end
-
-  def mininclusive
-    -9223372036854775808
-  end
-end
-
-class XSDInt < XSDLong
-  Type = QName.new(Namespace, IntLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +2147483647
-  end
-
-  def mininclusive
-    -2147483648
-  end
-end
-
-class XSDShort < XSDInt
-  Type = QName.new(Namespace, ShortLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +32767
-  end
-
-  def mininclusive
-    -32768
-  end
-end
-
-class XSDByte < XSDShort
-  Type = QName.new(Namespace, ByteLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +127
-  end
-
-  def mininclusive
-    -128
-  end
-end
-
-class XSDNonNegativeInteger < XSDInteger
-  Type = QName.new(Namespace, NonNegativeIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedLong < XSDNonNegativeInteger
-  Type = QName.new(Namespace, UnsignedLongLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +18446744073709551615
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedInt < XSDUnsignedLong
-  Type = QName.new(Namespace, UnsignedIntLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +4294967295
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedShort < XSDUnsignedInt
-  Type = QName.new(Namespace, UnsignedShortLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +65535
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedByte < XSDUnsignedShort
-  Type = QName.new(Namespace, UnsignedByteLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +255
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDPositiveInteger < XSDNonNegativeInteger
-  Type = QName.new(Namespace, PositiveIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    1
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes1999.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes1999.rb
deleted file mode 100644
index c7d6479..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/datatypes1999.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# XSD4R - XML Schema Datatype 1999 support
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-
-
-module XSD
-  Namespace.replace('http://www.w3.org/1999/XMLSchema')
-  InstanceNamespace.replace('http://www.w3.org/1999/XMLSchema-instance')
-  AnyTypeLiteral.replace('ur-type')
-  AnySimpleTypeLiteral.replace('ur-type')
-  NilLiteral.replace('null')
-  NilValue.replace('1')
-  DateTimeLiteral.replace('timeInstant')
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/iconvcharset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/iconvcharset.rb
deleted file mode 100644
index 7e629d5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/iconvcharset.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# XSD4R - Charset handling with iconv.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'iconv'
-
-
-module XSD
-
-
-class IconvCharset
-  def self.safe_iconv(to, from, str)
-    iconv = Iconv.new(to, from)
-    out = ""
-    begin
-      out << iconv.iconv(str)
-    rescue Iconv::IllegalSequence => e
-      out << e.success
-      ch, str = e.failed.split(//, 2)
-      out << '?'
-      warn("Failed to convert #{ch}")
-      retry
-    end
-    return out
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/mapping.rb
deleted file mode 100644
index 06d30d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/mapping.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# XSD4R - XML Mapping for Ruby
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require "soap/parser"
-require 'soap/encodingstyle/literalHandler'
-require "soap/generator"
-require "soap/mapping"
-require "soap/mapping/wsdlliteralregistry"
-
-
-module XSD
-
-
-module Mapping
-  MappingRegistry = SOAP::Mapping::WSDLLiteralRegistry.new
-  MappingOpt = {:default_encodingstyle => SOAP::LiteralNamespace}
-
-  def self.obj2xml(obj, elename = nil, io = nil)
-    if !elename.nil? and !elename.is_a?(XSD::QName)
-      elename = XSD::QName.new(nil, elename)
-    end
-    elename ||= XSD::QName.new(nil, SOAP::Mapping.name2elename(obj.class.to_s))
-    soap = SOAP::Mapping.obj2soap(obj, MappingRegistry)
-    soap.elename = elename
-    generator = SOAP::SOAPGenerator.new(MappingOpt)
-    generator.generate(soap, io)
-  end
-
-  def self.xml2obj(stream)
-    parser = SOAP::Parser.new(MappingOpt)
-    soap = parser.parse(stream)
-    SOAP::Mapping.soap2obj(soap, MappingRegistry)
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/namedelements.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/namedelements.rb
deleted file mode 100644
index a13396b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/namedelements.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# XSD4R - WSDL named element collection.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-class NamedElements
-  include Enumerable
-
-  def initialize
-    @elements = []
-    @cache = {}
-  end
-
-  def dup
-    o = NamedElements.new
-    o.elements = @elements.dup
-    o
-  end
-
-  def freeze
-    super
-    @elements.freeze
-    self
-  end
-
-  def empty?
-    size == 0
-  end
-
-  def size
-    @elements.size
-  end
-
-  def [](idx)
-    if idx.is_a?(Numeric)
-      @elements[idx]
-    else
-      @cache[idx] ||= @elements.find { |item| item.name == idx }
-    end
-  end
-
-  def find_name(name)
-    @elements.find { |item| item.name.name == name }
-  end
-
-  def keys
-    collect { |element| element.name }
-  end
-
-  def each
-    @elements.each do |element|
-      yield(element)
-    end
-  end
-
-  def <<(rhs)
-    @elements << rhs
-    self
-  end
-  
-  def delete(rhs)
-    @elements.delete(rhs)
-  end
-
-  def +(rhs)
-    o = NamedElements.new
-    o.elements = @elements + rhs.elements
-    o
-  end
-
-  def concat(rhs)
-    @elements.concat(rhs.elements)
-    self
-  end
-
-  Empty = NamedElements.new.freeze
-
-protected
-
-  def elements=(rhs)
-    @elements = rhs
-  end
-
-  def elements
-    @elements
-  end
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/ns.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/ns.rb
deleted file mode 100644
index 53eeae7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/ns.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# XSD4R - XML Schema Namespace library
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-
-
-module XSD
-
-
-class NS
-  class Assigner
-    def initialize
-      @count = 0
-    end
-
-    def assign(ns)
-      @count += 1
-      "n#{@count}"
-    end
-  end
-
-  attr_reader :default_namespace
-
-  class FormatError < Error; end
-
-public
-
-  def initialize(tag2ns = {})
-    @tag2ns = tag2ns
-    @assigner = nil
-    @ns2tag = {}
-    @tag2ns.each do |tag, ns|
-      @ns2tag[ns] = tag
-    end
-    @default_namespace = nil
-  end
-
-  def assign(ns, tag = nil)
-    if (tag == '')
-      @default_namespace = ns
-      tag
-    else
-      @assigner ||= Assigner.new
-      tag ||= @assigner.assign(ns)
-      @ns2tag[ns] = tag
-      @tag2ns[tag] = ns
-      tag
-    end
-  end
-
-  def assigned?(ns)
-    @default_namespace == ns or @ns2tag.key?(ns)
-  end
-
-  def assigned_tag?(tag)
-    @tag2ns.key?(tag)
-  end
-
-  def clone_ns
-    cloned = NS.new(@tag2ns.dup)
-    cloned.assigner = @assigner
-    cloned.assign(@default_namespace, '') if @default_namespace
-    cloned
-  end
-
-  def name(name)
-    if (name.namespace == @default_namespace)
-      name.name
-    elsif @ns2tag.key?(name.namespace)
-      "#{@ns2tag[name.namespace]}:#{name.name}"
-    else
-      raise FormatError.new("namespace: #{name.namespace} not defined yet")
-    end
-  end
-
-  def compare(ns, name, rhs)
-    if (ns == @default_namespace)
-      return true if (name == rhs)
-    end
-    @tag2ns.each do |assigned_tag, assigned_ns|
-      if assigned_ns == ns && "#{assigned_tag}:#{name}" == rhs
-	return true
-      end
-    end
-    false
-  end
-
-  # $1 and $2 are necessary.
-  ParseRegexp = Regexp.new('^([^:]+)(?::(.+))?$')
-
-  def parse(str, local = false)
-    if ParseRegexp =~ str
-      if (name = $2) and (ns = @tag2ns[$1])
-        return XSD::QName.new(ns, name)
-      end
-    end
-    XSD::QName.new(local ? nil : @default_namespace, str)
-  end
-
-  # For local attribute key parsing
-  #   <foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" />
-  #     =>
-  #   {}bar, {urn:a}baz
-  def parse_local(elem)
-    ParseRegexp =~ elem
-    if $2
-      ns = @tag2ns[$1]
-      name = $2
-      if !ns
-	raise FormatError.new("unknown namespace qualifier: #{$1}")
-      end
-    elsif $1
-      ns = nil
-      name = $1
-    else
-      raise FormatError.new("illegal element format: #{elem}")
-    end
-    XSD::QName.new(ns, name)
-  end
-
-  def each_ns
-    @ns2tag.each do |ns, tag|
-      yield(ns, tag)
-    end
-  end
-
-protected
-
-  def assigner=(assigner)
-    @assigner = assigner
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/qname.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/qname.rb
deleted file mode 100644
index bb9763a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/qname.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# XSD4R - XML QName definition.
-# Copyright (C) 2002, 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-class QName
-  attr_accessor :namespace
-  attr_accessor :name
-  attr_accessor :source
-
-  def initialize(namespace = nil, name = nil)
-    @namespace = namespace
-    @name = name
-    @source = nil
-  end
-
-  def dup_name(name)
-    XSD::QName.new(@namespace, name)
-  end
-
-  def dump
-    ns = @namespace.nil? ? 'nil' : @namespace.dump
-    name = @name.nil? ? 'nil' : @name.dump
-    "XSD::QName.new(#{ns}, #{name})"
-  end
-
-  def match(rhs)
-    if rhs.namespace and (rhs.namespace != @namespace)
-      return false
-    end
-    if rhs.name and (rhs.name != @name)
-      return false
-    end
-    true
-  end
-
-  def ==(rhs)
-    !rhs.nil? and @namespace == rhs.namespace and @name == rhs.name
-  end
-
-  def ===(rhs)
-    (self == rhs)
-  end
-
-  def eql?(rhs)
-    (self == rhs)
-  end
-
-  def hash
-    @namespace.hash ^ @name.hash
-  end
-  
-  def to_s
-    "{#{ namespace }}#{ name }"
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__,
-      "{#{ namespace }}#{ name }")
-  end
-
-  NormalizedNameRegexp = /^\{([^}]*)\}(.*)$/
-  def parse(str)
-    NormalizedNameRegexp =~ str
-    self.new($1, $2)
-  end
-
-  EMPTY = QName.new.freeze
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser.rb
deleted file mode 100644
index e79e36c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-# XSD4R - XML Instance parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser/parser'
-
-
-module XSD
-
-
-module XMLParser
-  def create_parser(host, opt)
-    XSD::XMLParser::Parser.create_parser(host, opt)
-  end
-  module_function :create_parser
-
-  # $1 is necessary.
-  NSParseRegexp = Regexp.new('^xmlns:?(.*)$')
-
-  def filter_ns(ns, attrs)
-    return attrs if attrs.nil? or attrs.empty?
-    newattrs = {}
-    attrs.each do |key, value|
-      if (NSParseRegexp =~ key)
-	# '' means 'default namespace'.
-	tag = $1 || ''
-	ns.assign(value, tag)
-      else
-	newattrs[key] = value
-      end
-    end
-    newattrs
-  end
-  module_function :filter_ns
-end
-
-
-end
-
-
-# Try to load XML processor.
-loaded = false
-[
-  'xsd/xmlparser/xmlparser',
-  'xsd/xmlparser/xmlscanner',
-  'xsd/xmlparser/rexmlparser',
-].each do |lib|
-  begin
-    require lib
-    loaded = true
-    break
-  rescue LoadError
-  end
-end
-unless loaded
-  raise RuntimeError.new("XML processor module not found.")
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/parser.rb
deleted file mode 100644
index ad01d55..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/parser.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# XSD4R - XML Instance parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-
-
-module XSD
-module XMLParser
-
-
-class Parser
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-
-  @@parser_factory = nil
-
-  def self.factory
-    @@parser_factory
-  end
-
-  def self.create_parser(host, opt = {})
-    @@parser_factory.new(host, opt)
-  end
-
-  def self.add_factory(factory)
-    if $DEBUG
-      puts "Set #{ factory } as XML processor."
-    end
-    @@parser_factory = factory
-  end
-
-public
-
-  attr_accessor :charset
-
-  def initialize(host, opt = {})
-    @host = host
-    @charset = opt[:charset] || nil
-  end
-
-  def parse(string_or_readable)
-    @textbuf = ''
-    prologue
-    do_parse(string_or_readable)
-    epilogue
-  end
-
-private
-
-  def do_parse(string_or_readable)
-    raise NotImplementError.new(
-      'Method do_parse must be defined in derived class.')
-  end
-
-  def start_element(name, attrs)
-    @host.start_element(name, attrs)
-  end
-
-  def characters(text)
-    @host.characters(text)
-  end
-
-  def end_element(name)
-    @host.end_element(name)
-  end
-
-  def prologue
-  end
-
-  def epilogue
-  end
-
-  def xmldecl_encoding=(charset)
-    if @charset.nil?
-      @charset = charset
-    else
-      # Definition in a stream (like HTTP) has a priority.
-      p "encoding definition: #{ charset } is ignored." if $DEBUG
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/rexmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/rexmlparser.rb
deleted file mode 100644
index 61da9aa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/rexmlparser.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# XSD4R - REXMLParser XML parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'rexml/streamlistener'
-require 'rexml/document'
-
-
-module XSD
-module XMLParser
-
-
-class REXMLParser < XSD::XMLParser::Parser
-  include REXML::StreamListener
-
-  def do_parse(string_or_readable)
-    source = nil
-    source = REXML::SourceFactory.create_from(string_or_readable)
-    source.encoding = charset if charset
-    # Listener passes a String in utf-8.
-    @charset = 'utf-8'
-    REXML::Document.parse_stream(source, self)
-  end
-
-  def epilogue
-  end
-
-  def tag_start(name, attrs)
-    start_element(name, attrs)
-  end
-
-  def tag_end(name)
-    end_element(name)
-  end
-
-  def text(text)
-    characters(text)
-  end
-
-  def xmldecl(version, encoding, standalone)
-    # Version should be checked.
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlparser.rb
deleted file mode 100644
index 6db914c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlparser.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# XSD4R - XMLParser XML parser library.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'xml/parser'
-
-
-module XSD
-module XMLParser
-
-
-class XMLParser < XSD::XMLParser::Parser
-  class Listener < XML::Parser
-    begin
-      require 'xml/encoding-ja'
-      include XML::Encoding_ja
-    rescue LoadError
-      # uconv may not be installed.
-    end
-  end
-
-  def do_parse(string_or_readable)
-    # XMLParser passes a String in utf-8.
-    @charset = 'utf-8'
-    @parser = Listener.new
-    @parser.parse(string_or_readable) do |type, name, data|
-      case type
-      when XML::Parser::START_ELEM
-	start_element(name, data)
-      when XML::Parser::END_ELEM
-	end_element(name)
-      when XML::Parser::CDATA
-	characters(data)
-      else
-	raise FormatDecodeError.new("Unexpected XML: #{ type }/#{ name }/#{ data }.")
-      end
-    end
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlscanner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlscanner.rb
deleted file mode 100644
index c80dc23..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/xsd/xmlparser/xmlscanner.rb
+++ /dev/null
@@ -1,147 +0,0 @@
-# XSD4R - XMLScan XML parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'xmlscan/scanner'
-
-
-module XSD
-module XMLParser
-
-
-class XMLScanner < XSD::XMLParser::Parser
-  include XMLScan::Visitor
-
-  def do_parse(string_or_readable)
-    @attrs = {}
-    @curattr = nil
-    @scanner = XMLScan::XMLScanner.new(self)
-    @scanner.kcode = XSD::Charset.charset_str(charset) if charset
-    @scanner.parse(string_or_readable)
-  end
-
-  def scanner_kcode=(charset)
-    @scanner.kcode = XSD::Charset.charset_str(charset) if charset
-    self.xmldecl_encoding = charset
-  end
-
-  ENTITY_REF_MAP = {
-    'lt' => '<',
-    'gt' => '>',
-    'amp' => '&',
-    'quot' => '"',
-    'apos' => '\''
-  }
-
-  def parse_error(msg)
-    raise ParseError.new(msg)
-  end
-
-  def wellformed_error(msg)
-    raise NotWellFormedError.new(msg)
-  end
-
-  def valid_error(msg)
-    raise NotValidError.new(msg)
-  end
-
-  def warning(msg)
-    p msg if $DEBUG
-  end
-
-  # def on_xmldecl; end
-
-  def on_xmldecl_version(str)
-    # 1.0 expected.
-  end
-
-  def on_xmldecl_encoding(str)
-    self.scanner_kcode = str
-  end
-
-  # def on_xmldecl_standalone(str); end
-
-  # def on_xmldecl_other(name, value); end
-
-  # def on_xmldecl_end; end
-
-  # def on_doctype(root, pubid, sysid); end
-
-  # def on_prolog_space(str); end
-
-  # def on_comment(str); end
-
-  # def on_pi(target, pi); end
-
-  def on_chardata(str)
-    characters(str)
-  end
-
-  # def on_cdata(str); end
-
-  def on_etag(name)
-    end_element(name)
-  end
-
-  def on_entityref(ref)
-    characters(ENTITY_REF_MAP[ref])
-  end
-
-  def on_charref(code)
-    characters([code].pack('U'))
-  end
-
-  def on_charref_hex(code)
-    on_charref(code)
-  end
-
-  # def on_start_document; end
-
-  # def on_end_document; end
-
-  def on_stag(name)
-    @attrs = {}
-  end
-
-  def on_attribute(name)
-    @attrs[name] = @curattr = ''
-  end
-
-  def on_attr_value(str)
-    @curattr << str
-  end
-
-  def on_attr_entityref(ref)
-    @curattr << ENTITY_REF_MAP[ref]
-  end
-
-  def on_attr_charref(code)
-    @curattr << [code].pack('U')
-  end
-
-  def on_attr_charref_hex(code)
-    on_attr_charref(code)
-  end
-
-  # def on_attribute_end(name); end
-
-  def on_stag_end_empty(name)
-    on_stag_end(name)
-    on_etag(name)
-  end
-
-  def on_stag_end(name)
-    start_element(name, @attrs)
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml.rb
deleted file mode 100644
index fe8092a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml.rb
+++ /dev/null
@@ -1,440 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-# $Id: yaml.rb 17246 2008-06-15 13:12:40Z shyouhei $
-#
-# = yaml.rb: top-level module with methods for loading and parsing YAML documents
-#
-# Author:: why the lucky stiff
-# 
-
-require 'stringio'
-require 'yaml/error'
-require 'yaml/syck'
-require 'yaml/tag'
-require 'yaml/stream'
-require 'yaml/constants'
-
-# == YAML
-#
-# YAML(tm) (rhymes with 'camel') is a
-# straightforward machine parsable data serialization format designed for
-# human readability and interaction with scripting languages such as Perl
-# and Python. YAML is optimized for data serialization, formatted
-# dumping, configuration files, log files, Internet messaging and
-# filtering. This specification describes the YAML information model and
-# serialization format. Together with the Unicode standard for characters, it
-# provides all the information necessary to understand YAML Version 1.0
-# and construct computer programs to process it.
-#                         
-# See http://yaml.org/ for more information.  For a quick tutorial, please
-# visit YAML In Five Minutes (http://yaml.kwiki.org/?YamlInFiveMinutes).
-#                              
-# == About This Library
-#                         
-# The YAML 1.0 specification outlines four stages of YAML loading and dumping.
-# This library honors all four of those stages, although data is really only
-# available to you in three stages.
-#     
-# The four stages are: native, representation, serialization, and presentation.
-#     
-# The native stage refers to data which has been loaded completely into Ruby's
-# own types. (See +YAML::load+.)
-#
-# The representation stage means data which has been composed into
-# +YAML::BaseNode+ objects.  In this stage, the document is available as a
-# tree of node objects.  You can perform YPath queries and transformations
-# at this level.  (See +YAML::parse+.)
-#   
-# The serialization stage happens inside the parser.  The YAML parser used in
-# Ruby is called Syck.  Serialized nodes are available in the extension as
-# SyckNode structs.
-#       
-# The presentation stage is the YAML document itself.  This is accessible
-# to you as a string.  (See +YAML::dump+.)
-#   
-# For more information about the various information models, see Chapter
-# 3 of the YAML 1.0 Specification (http://yaml.org/spec/#id2491269).
-#
-# The YAML module provides quick access to the most common loading (YAML::load)
-# and dumping (YAML::dump) tasks.  This module also provides an API for registering
-# global types (YAML::add_domain_type).
-#
-# == Example
-#
-# A simple round-trip (load and dump) of an object.
-#
-#     require "yaml"
-#
-#     test_obj = ["dogs", "cats", "badgers"]
-#
-#     yaml_obj = YAML::dump( test_obj )
-#                         # -> ---
-#                              - dogs
-#                              - cats
-#                              - badgers
-#     ruby_obj = YAML::load( yaml_obj )
-#                         # => ["dogs", "cats", "badgers"]
-#     ruby_obj == test_obj
-#                         # => true
-#
-# To register your custom types with the global resolver, use +add_domain_type+.
-#
-#     YAML::add_domain_type( "your-site.com,2004", "widget" ) do |type, val|
-#         Widget.new( val )
-#     end
-#
-module YAML
-
-    Resolver = YAML::Syck::Resolver
-    DefaultResolver = YAML::Syck::DefaultResolver
-    DefaultResolver.use_types_at( @@tagged_classes )
-    GenericResolver = YAML::Syck::GenericResolver
-    Parser = YAML::Syck::Parser
-    Emitter = YAML::Syck::Emitter
-
-    # Returns a new default parser
-    def YAML.parser; Parser.new.set_resolver( YAML.resolver ); end
-    # Returns a new generic parser
-    def YAML.generic_parser; Parser.new.set_resolver( GenericResolver ); end
-    # Returns the default resolver
-    def YAML.resolver; DefaultResolver; end
-    # Returns a new default emitter
-    def YAML.emitter; Emitter.new.set_resolver( YAML.resolver ); end
-
-	#
-	# Converts _obj_ to YAML and writes the YAML result to _io_.
-    #     
-    #   File.open( 'animals.yaml', 'w' ) do |out|
-    #     YAML.dump( ['badger', 'elephant', 'tiger'], out )
-    #   end
-    #
-    # If no _io_ is provided, a string containing the dumped YAML
-    # is returned.
-	#
-    #   YAML.dump( :locked )
-    #      #=> "--- :locked"
-    #
-	def YAML.dump( obj, io = nil )
-        obj.to_yaml( io || io2 = StringIO.new )
-        io || ( io2.rewind; io2.read )
-	end
-
-	#
-	# Load a document from the current _io_ stream.
-	#
-    #   File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
-    #      #=> ['badger', 'elephant', 'tiger']
-    #
-    # Can also load from a string.
-    #
-    #   YAML.load( "--- :locked" )
-    #      #=> :locked
-    #
-	def YAML.load( io )
-		yp = parser.load( io )
-	end
-
-    #
-    # Load a document from the file located at _filepath_.
-    #
-    #   YAML.load_file( 'animals.yaml' )
-    #      #=> ['badger', 'elephant', 'tiger']
-    #
-    def YAML.load_file( filepath )
-        File.open( filepath ) do |f|
-            load( f )
-        end
-    end
-
-	#
-	# Parse the first document from the current _io_ stream
-	#
-    #   File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
-    #      #=> #<YAML::Syck::Node:0x82ccce0
-    #           @kind=:seq,
-    #           @value=
-    #            [#<YAML::Syck::Node:0x82ccd94
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="badger">,
-    #             #<YAML::Syck::Node:0x82ccd58
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="elephant">,
-    #             #<YAML::Syck::Node:0x82ccd1c
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="tiger">]>
-    #
-    # Can also load from a string.
-    #
-    #   YAML.parse( "--- :locked" )
-    #      #=> #<YAML::Syck::Node:0x82edddc 
-    #            @type_id="tag:ruby.yaml.org,2002:sym", 
-    #            @value=":locked", @kind=:scalar>
-    #
-	def YAML.parse( io )
-		yp = generic_parser.load( io )
-	end
-
-    #
-    # Parse a document from the file located at _filepath_.
-    #
-    #   YAML.parse_file( 'animals.yaml' )
-    #      #=> #<YAML::Syck::Node:0x82ccce0
-    #           @kind=:seq,
-    #           @value=
-    #            [#<YAML::Syck::Node:0x82ccd94
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="badger">,
-    #             #<YAML::Syck::Node:0x82ccd58
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="elephant">,
-    #             #<YAML::Syck::Node:0x82ccd1c
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="tiger">]>
-    #
-    def YAML.parse_file( filepath )
-        File.open( filepath ) do |f|
-            parse( f )
-        end
-    end
-
-	#
-	# Calls _block_ with each consecutive document in the YAML
-    # stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.each_document( yf ) do |ydoc|
-    #       ## ydoc contains the single object
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.each_document( io, &block )
-		yp = parser.load_documents( io, &block )
-    end
-
-	#
-	# Calls _block_ with each consecutive document in the YAML
-    # stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.load_documents( yf ) do |ydoc|
-    #       ## ydoc contains the single object
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.load_documents( io, &doc_proc )
-		YAML.each_document( io, &doc_proc )
-    end
-
-	#
-	# Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
-    # each consecutive document in the YAML stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.each_node( yf ) do |ydoc|
-    #       ## ydoc contains a tree of nodes
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.each_node( io, &doc_proc )
-		yp = generic_parser.load_documents( io, &doc_proc )
-    end
-
-	#
-	# Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
-    # each consecutive document in the YAML stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.parse_documents( yf ) do |ydoc|
-    #       ## ydoc contains a tree of nodes
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.parse_documents( io, &doc_proc )
-		YAML.each_node( io, &doc_proc )
-    end
-
-	#
-	# Loads all documents from the current _io_ stream, 
-    # returning a +YAML::Stream+ object containing all
-    # loaded documents.
-	#
-	def YAML.load_stream( io )
-		d = nil
-		parser.load_documents( io ) do |doc|
-			d = YAML::Stream.new if not d
-			d.add( doc ) 
-        end
-		return d
-	end
-
-	#
-    # Returns a YAML stream containing each of the items in +objs+,
-    # each having their own document.
-    #
-    #   YAML.dump_stream( 0, [], {} )
-    #     #=> --- 0
-    #         --- []
-    #         --- {}
-    #
-	def YAML.dump_stream( *objs )
-		d = YAML::Stream.new
-        objs.each do |doc|
-			d.add( doc ) 
-        end
-        d.emit
-	end
-
-	#
-	# Add a global handler for a YAML domain type.
-	#
-	def YAML.add_domain_type( domain, type_tag, &transfer_proc )
-        resolver.add_type( "tag:#{ domain }:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a transfer method for a builtin type
-	#
-	def YAML.add_builtin_type( type_tag, &transfer_proc )
-	    resolver.add_type( "tag:yaml.org,2002:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a transfer method for a builtin type
-	#
-	def YAML.add_ruby_type( type_tag, &transfer_proc )
-	    resolver.add_type( "tag:ruby.yaml.org,2002:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a private document type
-	#
-	def YAML.add_private_type( type_re, &transfer_proc )
-	    resolver.add_type( "x-private:" + type_re, transfer_proc )
-	end
-
-    #
-    # Detect typing of a string
-    #
-    def YAML.detect_implicit( val )
-        resolver.detect_implicit( val )
-    end
-
-    #
-    # Convert a type_id to a taguri
-    #
-    def YAML.tagurize( val )
-        resolver.tagurize( val )
-    end
-
-    #
-    # Apply a transfer method to a Ruby object
-    #
-    def YAML.transfer( type_id, obj )
-        resolver.transfer( YAML.tagurize( type_id ), obj )
-    end
-
-	#
-	# Apply any implicit a node may qualify for
-	#
-	def YAML.try_implicit( obj )
-		YAML.transfer( YAML.detect_implicit( obj ), obj )
-	end
-
-    #
-    # Method to extract colon-seperated type and class, returning
-    # the type and the constant of the class
-    #
-    def YAML.read_type_class( type, obj_class )
-        scheme, domain, type, tclass = type.split( ':', 4 )
-        tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) } if tclass
-        return [ type, obj_class ]
-    end
-
-    #
-    # Allocate blank object
-    #
-    def YAML.object_maker( obj_class, val )
-        if Hash === val
-            o = obj_class.allocate
-            val.each_pair { |k,v|
-                o.instance_variable_set("@#{k}", v)
-            }
-            o
-        else
-            raise YAML::Error, "Invalid object explicitly tagged !ruby/Object: " + val.inspect
-        end
-    end
-
-	#
-	# Allocate an Emitter if needed
-	#
-	def YAML.quick_emit( oid, opts = {}, &e )
-        out = 
-            if opts.is_a? YAML::Emitter
-                opts
-            else
-                emitter.reset( opts )
-            end
-        oid =
-            case oid when Fixnum, NilClass; oid
-            else oid = "#{oid.object_id}-#{oid.hash}"
-            end
-        out.emit( oid, &e )
-	end
-	
-end
-
-require 'yaml/rubytypes'
-require 'yaml/types'
-
-module Kernel
-    #
-    # ryan:: You know how Kernel.p is a really convenient way to dump ruby
-    #        structures?  The only downside is that it's not as legible as
-    #        YAML.
-    #
-    # _why:: (listening)
-    #
-    # ryan:: I know you don't want to urinate all over your users' namespaces.
-    #        But, on the other hand, convenience of dumping for debugging is,
-    #        IMO, a big YAML use case.
-    #
-    # _why:: Go nuts!  Have a pony parade!
-    #
-    # ryan:: Either way, I certainly will have a pony parade.
-    #
-
-    # Prints any supplied _objects_ out in YAML.  Intended as
-    # a variation on +Kernel::p+.
-    #
-    #   S = Struct.new(:name, :state)
-    #   s = S['dave', 'TX']
-    #   y s
-    #
-    # _produces:_
-    #
-    #   --- !ruby/struct:S 
-    #   name: dave
-    #   state: TX
-    #
-    def y( object, *objects )
-        objects.unshift object
-        puts( if objects.length == 1
-                  YAML::dump( *objects )
-              else
-                  YAML::dump_stream( *objects )
-              end )
-    end
-    private :y
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/baseemitter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/baseemitter.rb
deleted file mode 100644
index 1aef152..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/baseemitter.rb
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# BaseEmitter
-#
-
-require 'yaml/constants'
-require 'yaml/encoding'
-require 'yaml/error'
-
-module YAML
-
-    module BaseEmitter
-
-        def options( opt = nil )
-            if opt
-                @options[opt] || YAML::DEFAULTS[opt]
-            else
-                @options
-            end
-        end
-
-        def options=( opt )
-            @options = opt
-        end
-
-        #
-        # Emit binary data
-        #
-        def binary_base64( value )
-            self << "!binary "
-            self.node_text( [value].pack("m"), '|' )
-        end
-
-		#
-		# Emit plain, normal flowing text
-		#
-		def node_text( value, block = nil )
-            @seq_map = false
-			valx = value.dup
-            unless block
-            block =
-                if options(:UseBlock)
-                    '|'
-                elsif not options(:UseFold) and valx =~ /\n[ \t]/ and not valx =~ /#{YAML::ESCAPE_CHAR}/
-                    '|'
-                else
-                    '>'
-                end 
-
-                indt = $&.to_i if block =~ /\d+/
-                if valx =~ /(\A\n*[ \t#]|^---\s+)/
-                    indt = options(:Indent) unless indt.to_i > 0
-                    block += indt.to_s
-                end
-
-            block +=
-                if valx =~ /\n\Z\n/
-                    "+"
-                elsif valx =~ /\Z\n/
-                    ""
-                else
-                    "-"
-                end
-            end
-            block += "\n"
-            if block[0] == ?"
-                esc_skip = ( "\t\n" unless valx =~ /^[ \t]/ ) || ""
-                valx = fold( YAML::escape( valx, esc_skip ) + "\"" ).chomp
-                self << '"' + indent_text( valx, indt, false )
-            else
-                if block[0] == ?> 
-                    valx = fold( valx ) 
-                end
-                #p [block, indt]
-                self << block + indent_text( valx, indt )
-            end
-		end
-
-		#
-		# Emit a simple, unqouted string
-		#
-		def simple( value )
-            @seq_map = false
-            self << value.to_s
-		end
-
-		#
-		# Emit double-quoted string
-		#
-		def double( value )
-			"\"#{YAML.escape( value )}\"" 
-		end
-
-		#
-		# Emit single-quoted string
-		#
-		def single( value )
-			"'#{value}'"
-		end
-
-		#
-		# Write a text block with the current indent
-		#
-		def indent_text( text, mod, first_line = true )
-			return "" if text.to_s.empty?
-            spacing = indent( mod )
-            text = text.gsub( /\A([^\n])/, "#{ spacing }\\1" ) if first_line
-			return text.gsub( /\n^([^\n])/, "\n#{spacing}\\1" )
-		end
-
-		#
-		# Write a current indent
-		#
-        def indent( mod = nil )
-            #p [ self.id, level, mod, :INDENT ]
-            if level <= 0
-                mod ||= 0
-            else
-                mod ||= options(:Indent)
-                mod += ( level - 1 ) * options(:Indent)
-            end
-            return " " * mod
-		end
-
-		#
-		# Add indent to the buffer
-		#
-		def indent!
-			self << indent
-		end
-
-		#
-		# Folding paragraphs within a column
-		#
-		def fold( value )
-            value.gsub( /(^[ \t]+.*$)|(\S.{0,#{options(:BestWidth) - 1}})(?:[ \t]+|(\n+(?=[ \t]|\Z))|$)/ ) do |s| 
-                $1 || $2 + ( $3 || "\n" )
-            end
-		end
-
-        #
-        # Quick mapping
-        #
-        def map( type, &e )
-            val = Mapping.new
-            e.call( val )
-			self << "#{type} " if type.length.nonzero?
-
-			#
-			# Empty hashes
-			#
-			if val.length.zero?
-				self << "{}"
-                @seq_map = false
-			else
-                # FIXME
-                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
-			    #     @headless = 1 
-                # end
-
-                defkey = @options.delete( :DefaultKey )
-                if defkey
-                    seq_map_shortcut
-                    self << "= : "
-                    defkey.to_yaml( :Emitter => self )
-                end
-
-				#
-				# Emit the key and value
-				#
-                val.each { |v|
-                    seq_map_shortcut
-                    if v[0].is_complex_yaml?
-                        self << "? "
-                    end
-                    v[0].to_yaml( :Emitter => self )
-                    if v[0].is_complex_yaml?
-                        self << "\n"
-                        indent!
-                    end
-                    self << ": " 
-                    v[1].to_yaml( :Emitter => self )
-                }
-			end
-        end
-
-        def seq_map_shortcut
-            # FIXME: seq_map needs to work with the new anchoring system
-            # if @seq_map
-            #     @anchor_extras[@buffer.length - 1] = "\n" + indent
-            #     @seq_map = false
-            # else
-                self << "\n"
-                indent! 
-            # end
-        end
-
-        #
-        # Quick sequence
-        #
-        def seq( type, &e )
-            @seq_map = false
-            val = Sequence.new
-            e.call( val )
-			self << "#{type} " if type.length.nonzero?
-
-			#
-			# Empty arrays
-			#
-			if val.length.zero?
-				self << "[]"
-			else
-                # FIXME
-                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
-			    #     @headless = 1 
-                # end
-
-				#
-				# Emit the key and value
-				#
-                val.each { |v|
-                    self << "\n"
-                    indent!
-                    self << "- "
-                    @seq_map = true if v.class == Hash
-                    v.to_yaml( :Emitter => self )
-                }
-			end
-        end
-
-    end
-
-    #
-    # Emitter helper classes
-    #
-    class Mapping < Array
-        def add( k, v )
-            push [k, v]
-        end
-    end
-
-    class Sequence < Array
-        def add( v )
-            push v
-        end
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/basenode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/basenode.rb
deleted file mode 100644
index 5439903..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/basenode.rb
+++ /dev/null
@@ -1,216 +0,0 @@
-#
-# YAML::BaseNode class
-#
-require 'yaml/ypath'
-
-module YAML
-
-    #
-    # YAML Generic Model container
-    #
-    module BaseNode
-
-        #
-        # Search for YPath entry and return
-        # qualified nodes.
-        #
-        def select( ypath_str )
-            matches = match_path( ypath_str )
-
-            #
-            # Create a new generic view of the elements selected
-            #
-            if matches
-                result = []
-                matches.each { |m|
-                    result.push m.last
-                }
-                YAML.transfer( 'seq', result )
-            end
-        end
-
-        #
-        # Search for YPath entry and return
-        # transformed nodes.
-        #
-        def select!( ypath_str )
-            matches = match_path( ypath_str )
-
-            #
-            # Create a new generic view of the elements selected
-            #
-            if matches
-                result = []
-                matches.each { |m|
-                    result.push m.last.transform
-                }
-                result
-            end
-        end
-
-        #
-        # Search for YPath entry and return a list of
-        # qualified paths.
-        #
-        def search( ypath_str )
-            matches = match_path( ypath_str )
-
-            if matches
-                matches.collect { |m|
-                    path = []
-                    m.each_index { |i|
-                        path.push m[i] if ( i % 2 ).zero?
-                    }
-                    "/" + path.compact.join( "/" )
-                }
-            end
-        end
-
-        def at( seg )
-            if Hash === @value
-                self[seg]
-            elsif Array === @value and seg =~ /\A\d+\Z/ and @value[seg.to_i]
-                @value[seg.to_i]
-            end
-        end
-
-        #
-        # YPath search returning a complete depth array
-        #
-        def match_path( ypath_str )
-            depth = 0
-            matches = []
-            YPath.each_path( ypath_str ) do |ypath|
-                seg = match_segment( ypath, 0 )
-                matches += seg if seg
-            end
-            matches.uniq
-        end
-
-        #
-        # Search a node for a single YPath segment
-        #
-        def match_segment( ypath, depth )
-            deep_nodes = []
-            seg = ypath.segments[ depth ]
-            if seg == "/"
-                unless String === @value
-                    idx = -1
-                    @value.collect { |v|
-                        idx += 1
-                        if Hash === @value
-                            match_init = [v[0].transform, v[1]]
-                            match_deep = v[1].match_segment( ypath, depth )
-                        else
-                            match_init = [idx, v]
-                            match_deep = v.match_segment( ypath, depth )
-                        end
-                        if match_deep
-                            match_deep.each { |m|
-                                deep_nodes.push( match_init + m )
-                            }
-                        end
-                    }
-                end
-                depth += 1
-                seg = ypath.segments[ depth ]
-            end
-            match_nodes =
-                case seg
-                when "."
-                    [[nil, self]]
-                when ".."
-                    [["..", nil]]
-                when "*"
-                    if @value.is_a? Enumerable
-                        idx = -1
-                        @value.collect { |h|
-                            idx += 1
-                            if Hash === @value
-                                [h[0].transform, h[1]]
-                            else
-                                [idx, h]
-                            end
-                        }
-                    end
-                else
-                    if seg =~ /^"(.*)"$/
-                        seg = $1
-                    elsif seg =~ /^'(.*)'$/
-                        seg = $1
-                    end
-                    if ( v = at( seg ) )
-                        [[ seg, v ]]
-                    end
-                end
-            return deep_nodes unless match_nodes
-            pred = ypath.predicates[ depth ]
-            if pred
-                case pred
-                when /^\.=/
-                    pred = $'   # '
-                    match_nodes.reject! { |n|
-                        n.last.value != pred
-                    }
-                else
-                    match_nodes.reject! { |n|
-                        n.last.at( pred ).nil?
-                    }
-                end
-            end
-            return match_nodes + deep_nodes unless ypath.segments.length > depth + 1
-
-            #puts "DEPTH: #{depth + 1}"
-            deep_nodes = []
-            match_nodes.each { |n|
-                if n[1].is_a? BaseNode
-                    match_deep = n[1].match_segment( ypath, depth + 1 )
-                    if match_deep
-                        match_deep.each { |m|
-                            deep_nodes.push( n + m )
-                        }
-                    end
-                else
-                    deep_nodes = []
-                end
-            }
-            deep_nodes = nil if deep_nodes.length == 0
-            deep_nodes
-        end
-
-        #
-        # We want the node to act like as Hash
-        # if it is.
-        #
-        def []( *key )
-            if Hash === @value
-                v = @value.detect { |k,| k.transform == key.first }
-                v[1] if v
-            elsif Array === @value
-                @value.[]( *key )
-            end
-        end
-
-        def children
-            if Hash === @value
-                @value.values.collect { |c| c[1] }
-            elsif Array === @value
-                @value
-            end
-        end
-
-        def children_with_index
-            if Hash === @value
-                @value.keys.collect { |i| [self[i], i] }
-            elsif Array === @value
-                i = -1; @value.collect { |v| i += 1; [v, i] }
-            end
-        end
-
-        def emit
-            transform.to_yaml
-        end
-    end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/constants.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/constants.rb
deleted file mode 100644
index fb833d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/constants.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Constants used throughout the library
-#
-module YAML
-
-	#
-	# Constants
-	#
-	VERSION = '0.60'
-	SUPPORTED_YAML_VERSIONS = ['1.0']
-
-	#
-	# Parser tokens
-	#
-	WORD_CHAR = 'A-Za-z0-9'
-	PRINTABLE_CHAR = '-_A-Za-z0-9!?/()$\'". ' 
-	NOT_PLAIN_CHAR = '\x7f\x0-\x1f\x80-\x9f'
-	ESCAPE_CHAR = '[\\x00-\\x09\\x0b-\\x1f]'
-	INDICATOR_CHAR = '*&!|\\\\^@%{}[]='
-	SPACE_INDICATORS = '-#:,?'
-	RESTRICTED_INDICATORS = '#:,}]'
-	DNS_COMP_RE = "\\w(?:[-\\w]*\\w)?"
-	DNS_NAME_RE = "(?:(?:#{DNS_COMP_RE}\\.)+#{DNS_COMP_RE}|#{DNS_COMP_RE})"
-	ESCAPES = %w{\x00   \x01	\x02	\x03	\x04	\x05	\x06	\a
-			     \x08	\t		\n		\v		\f		\r		\x0e	\x0f
-				 \x10	\x11	\x12	\x13	\x14	\x15	\x16	\x17
-				 \x18	\x19	\x1a	\e		\x1c	\x1d	\x1e	\x1f
-			    }
-	UNESCAPES = {
-				'a' => "\x07", 'b' => "\x08", 't' => "\x09", 
-				'n' => "\x0a", 'v' => "\x0b", 'f' => "\x0c",
-				'r' => "\x0d", 'e' => "\x1b", '\\' => '\\',
-			    }
-
-	#
-	# Default settings
-	#
-	DEFAULTS = {
-		:Indent => 2, :UseHeader => false, :UseVersion => false, :Version => '1.0',
-		:SortKeys => false, :AnchorFormat => 'id%03d', :ExplicitTypes => false,
-		:WidthType => 'absolute', :BestWidth => 80,
-		:UseBlock => false, :UseFold => false, :Encoding => :None
-	}
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/dbm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/dbm.rb
deleted file mode 100644
index 87d6009..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/dbm.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require 'yaml'
-require 'dbm'
-#
-# YAML + DBM = YDBM
-# - Same interface as DBM class
-#
-module YAML
-
-class DBM < ::DBM
-    VERSION = "0.1"
-    def []( key )
-        fetch( key )
-    end
-    def []=( key, val )
-        store( key, val )
-    end
-    def fetch( keystr, ifnone = nil )
-        begin
-            val = super( keystr )
-            return YAML::load( val ) if String === val
-        rescue IndexError
-        end
-        if block_given?
-            yield keystr
-        else
-            ifnone
-        end
-    end
-    def index( keystr )
-        super( keystr.to_yaml )
-    end
-    def values_at( *keys )
-        keys.collect { |k| fetch( k ) }
-    end
-    def delete( key )
-        v = super( key )
-        if String === v
-            v = YAML::load( v ) 
-        end
-        v
-    end
-    def delete_if
-        del_keys = keys.dup
-        del_keys.delete_if { |k| yield( k, fetch( k ) ) == false }
-        del_keys.each { |k| delete( k ) } 
-        self
-    end
-    def reject
-        hsh = self.to_hash
-        hsh.reject { |k,v| yield k, v }
-    end
-    def each_pair
-        keys.each { |k| yield k, fetch( k ) }
-        self
-    end
-    def each_value
-        super { |v| yield YAML::load( v ) }
-        self
-    end
-    def values
-        super.collect { |v| YAML::load( v ) }
-    end
-    def has_value?( val )
-        each_value { |v| return true if v == val }
-        return false
-    end
-    def invert
-        h = {}
-        keys.each { |k| h[ self.fetch( k ) ] = k }
-        h
-    end
-    def replace( hsh )
-        clear
-        update( hsh )
-    end
-    def shift
-        a = super
-        a[1] = YAML::load( a[1] ) if a
-        a
-    end
-    def select( *keys )
-        if block_given?
-            self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact
-        else
-            values_at( *keys )
-        end
-    end
-    def store( key, val )
-        super( key, val.to_yaml )
-        val
-    end
-    def update( hsh )
-        hsh.keys.each do |k|
-            self.store( k, hsh.fetch( k ) )
-        end
-        self
-    end
-    def to_a
-        a = []
-        keys.each { |k| a.push [ k, self.fetch( k ) ] }
-        a
-    end
-    def to_hash
-        h = {}
-        keys.each { |k| h[ k ] = self.fetch( k ) }
-        h
-    end
-    alias :each :each_pair
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/encoding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/encoding.rb
deleted file mode 100644
index 37f5cfd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/encoding.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Handle Unicode-to-Internal conversion
-#
-
-module YAML
-
-	#
-	# Escape the string, condensing common escapes
-	#
-	def YAML.escape( value, skip = "" )
-		value.gsub( /\\/, "\\\\\\" ).
-              gsub( /"/, "\\\"" ).
-              gsub( /([\x00-\x1f])/ ) do |x|
-                 skip[x] || ESCAPES[ x.unpack("C")[0] ]
-             end
-	end
-
-	#
-	# Unescape the condenses escapes
-	#
-	def YAML.unescape( value )
-		value.gsub( /\\(?:([nevfbart\\])|0?x([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/ ) { |x| 
-			if $3
-				["#$3".hex ].pack('U*')
-			elsif $2
-				[$2].pack( "H2" ) 
-			else
-				UNESCAPES[$1] 
-			end
-		}
-	end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/error.rb
deleted file mode 100644
index 15865a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/error.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Error messages and exception class
-#
-
-module YAML
-
-	#
-	# Error messages
-	#
-
-	ERROR_NO_HEADER_NODE = "With UseHeader=false, the node Array or Hash must have elements"
-	ERROR_NEED_HEADER = "With UseHeader=false, the node must be an Array or Hash"
-	ERROR_BAD_EXPLICIT = "Unsupported explicit transfer: '%s'"
-    ERROR_MANY_EXPLICIT = "More than one explicit transfer"
-	ERROR_MANY_IMPLICIT = "More than one implicit request"
-	ERROR_NO_ANCHOR = "No anchor for alias '%s'"
-	ERROR_BAD_ANCHOR = "Invalid anchor: %s"
-	ERROR_MANY_ANCHOR = "More than one anchor"
-	ERROR_ANCHOR_ALIAS = "Can't define both an anchor and an alias"
-	ERROR_BAD_ALIAS = "Invalid alias: %s"
-	ERROR_MANY_ALIAS = "More than one alias"
-	ERROR_ZERO_INDENT = "Can't use zero as an indentation width"
-	ERROR_UNSUPPORTED_VERSION = "This release of YAML.rb does not support YAML version %s"
-	ERROR_UNSUPPORTED_ENCODING = "Attempt to use unsupported encoding: %s"
-
-	#
-	# YAML Error classes
-	#
-    
-	class Error < StandardError; end
-	class ParseError < Error; end
-    class TypeError < StandardError; end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/loader.rb
deleted file mode 100644
index eb0709e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/loader.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# YAML::Loader class
-# .. type handling ..
-#
-module YAML
-    class Loader
-        TRANSFER_DOMAINS = {
-            'yaml.org,2002' => {},
-            'ruby.yaml.org,2002' => {}
-        }
-        PRIVATE_TYPES = {}
-        IMPLICIT_TYPES = [ 'null', 'bool', 'time', 'int', 'float' ]
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/rubytypes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/rubytypes.rb
deleted file mode 100644
index dc6bb33..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/rubytypes.rb
+++ /dev/null
@@ -1,408 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-require 'date'
-
-class Class
-	def to_yaml( opts = {} )
-		raise TypeError, "can't dump anonymous class %s" % self.class
-	end
-end
-
-class Object
-    yaml_as "tag:ruby.yaml.org,2002:object"
-    def to_yaml_style; end
-    def to_yaml_properties; instance_variables.sort; end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-				to_yaml_properties.each do |m|
-                    map.add( m[1..-1], instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class Hash
-    yaml_as "tag:ruby.yaml.org,2002:hash"
-    yaml_as "tag:yaml.org,2002:map"
-    def yaml_initialize( tag, val )
-        if Array === val
-            update Hash.[]( *val )		# Convert the map to a sequence
-        elsif Hash === val
-            update val
-        else
-            raise YAML::TypeError, "Invalid map explicitly tagged #{ tag }: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-                each do |k, v|
-                    map.add( k, v )
-                end
-            end
-        end
-	end
-end
-
-class Struct
-    yaml_as "tag:ruby.yaml.org,2002:struct"
-    def self.yaml_tag_class_name; self.name.gsub( "Struct::", "" ); end
-    def self.yaml_tag_read_class( name ); "Struct::#{ name }"; end
-    def self.yaml_new( klass, tag, val )
-        if Hash === val
-            struct_type = nil
-
-            #
-            # Use existing Struct if it exists
-            #
-            props = {}
-            val.delete_if { |k,v| props[k] = v if k =~ /^@/ }
-            begin
-                struct_name, struct_type = YAML.read_type_class( tag, Struct )
-            rescue NameError
-            end
-            if not struct_type
-                struct_def = [ tag.split( ':', 4 ).last ]
-                struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) ) 
-            end
-
-            #
-            # Set the Struct properties
-            #
-            st = YAML::object_maker( struct_type, {} )
-            st.members.each do |m|
-                st.send( "#{m}=", val[m] )
-            end
-            props.each do |k,v|
-                st.instance_variable_set(k, v)
-            end
-            st
-        else
-            raise YAML::TypeError, "Invalid Ruby Struct: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-			#
-			# Basic struct is passed as a YAML map
-			#
-            out.map( taguri, to_yaml_style ) do |map|
-				self.members.each do |m|
-                    map.add( m, self[m] )
-                end
-				self.to_yaml_properties.each do |m|
-                    map.add( m, instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class Array
-    yaml_as "tag:ruby.yaml.org,2002:array"
-    yaml_as "tag:yaml.org,2002:seq"
-    def yaml_initialize( tag, val ); concat( val.to_a ); end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.seq( taguri, to_yaml_style ) do |seq|
-                each do |x|
-                    seq.add( x )
-                end
-            end
-        end
-	end
-end
-
-class Exception
-    yaml_as "tag:ruby.yaml.org,2002:exception"
-    def Exception.yaml_new( klass, tag, val )
-        o = YAML.object_maker( klass, { 'mesg' => val.delete( 'message' ) } )
-        val.each_pair do |k,v|
-            o.instance_variable_set("@#{k}", v)
-        end
-        o
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-                map.add( 'message', message )
-				to_yaml_properties.each do |m|
-                    map.add( m[1..-1], instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class String
-    yaml_as "tag:ruby.yaml.org,2002:string"
-    yaml_as "tag:yaml.org,2002:binary"
-    yaml_as "tag:yaml.org,2002:str"
-    def is_complex_yaml?
-        to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
-    end
-    def is_binary_data?
-        ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
-    end
-    def String.yaml_new( klass, tag, val )
-        val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"
-        val = { 'str' => val } if String === val
-        if Hash === val
-            s = klass.allocate
-            # Thank you, NaHi
-            String.instance_method(:initialize).
-                  bind(s).
-                  call( val.delete( 'str' ) )
-            val.each { |k,v| s.instance_variable_set( k, v ) }
-            s
-        else
-            raise YAML::TypeError, "Invalid String: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( is_complex_yaml? ? self : nil, opts ) do |out|
-            if is_binary_data?
-                out.scalar( "tag:yaml.org,2002:binary", [self].pack("m"), :literal )
-            elsif to_yaml_properties.empty?
-                out.scalar( taguri, self, self =~ /^:/ ? :quote2 : to_yaml_style )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'str', "#{self}" )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Symbol
-    yaml_as "tag:ruby.yaml.org,2002:symbol"
-    yaml_as "tag:ruby.yaml.org,2002:sym"
-    def Symbol.yaml_new( klass, tag, val )
-        if String === val
-            val = YAML::load( val ) if val =~ /\A(["']).*\1\z/
-            val.intern
-        else
-            raise YAML::TypeError, "Invalid Symbol: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:str", self.inspect, :plain )
-        end
-	end
-end
-
-class Range
-    yaml_as "tag:ruby.yaml.org,2002:range"
-    def Range.yaml_new( klass, tag, val )
-        inr = %r'(\w+|[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?|"(?:[^\\"]|\\.)*")'
-        opts = {}
-        if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/o
-            r1, rdots, r2 = $1, $2, $3
-            opts = {
-                'begin' => YAML.load( "--- #{r1}" ),
-                'end' => YAML.load( "--- #{r2}" ),
-                'excl' => rdots.length == 3
-            }
-            val = {}
-        elsif Hash === val
-            opts['begin'] = val.delete('begin')
-            opts['end'] = val.delete('end')
-            opts['excl'] = val.delete('excl')
-        end
-        if Hash === opts
-            r = YAML::object_maker( klass, {} )
-            # Thank you, NaHi
-            Range.instance_method(:initialize).
-                  bind(r).
-                  call( opts['begin'], opts['end'], opts['excl'] )
-            val.each { |k,v| r.instance_variable_set( k, v ) }
-            r
-        else
-            raise YAML::TypeError, "Invalid Range: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            # if self.begin.is_complex_yaml? or self.begin.respond_to? :to_str or
-            #   self.end.is_complex_yaml? or self.end.respond_to? :to_str or
-            #   not to_yaml_properties.empty?
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'begin', self.begin )
-                    map.add( 'end', self.end )
-                    map.add( 'excl', self.exclude_end? )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            # else
-            #     out.scalar( taguri ) do |sc|
-            #         sc.embed( self.begin )
-            #         sc.concat( self.exclude_end? ? "..." : ".." )
-            #         sc.embed( self.end )
-            #     end
-            # end
-        end
-	end
-end
-
-class Regexp
-    yaml_as "tag:ruby.yaml.org,2002:regexp"
-    def Regexp.yaml_new( klass, tag, val )
-        if String === val and val =~ /^\/(.*)\/([mix]*)$/
-            val = { 'regexp' => $1, 'mods' => $2 }
-        end
-        if Hash === val
-            mods = nil
-            unless val['mods'].to_s.empty?
-                mods = 0x00
-                mods |= Regexp::EXTENDED if val['mods'].include?( 'x' )
-                mods |= Regexp::IGNORECASE if val['mods'].include?( 'i' )
-                mods |= Regexp::MULTILINE if val['mods'].include?( 'm' )
-            end
-            val.delete( 'mods' )
-            r = YAML::object_maker( klass, {} )
-            Regexp.instance_method(:initialize).
-                  bind(r).
-                  call( val.delete( 'regexp' ), mods )
-            val.each { |k,v| r.instance_variable_set( k, v ) }
-            r
-        else
-            raise YAML::TypeError, "Invalid Regular expression: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            if to_yaml_properties.empty?
-                out.scalar( taguri, self.inspect, :plain )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    src = self.inspect
-                    if src =~ /\A\/(.*)\/([a-z]*)\Z/
-                        map.add( 'regexp', $1 )
-                        map.add( 'mods', $2 )
-                    else
-		                raise YAML::TypeError, "Invalid Regular expression: " + src
-                    end
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Time
-    yaml_as "tag:ruby.yaml.org,2002:time"
-    yaml_as "tag:yaml.org,2002:timestamp"
-    def Time.yaml_new( klass, tag, val )
-        if Hash === val
-            t = val.delete( 'at' )
-            val.each { |k,v| t.instance_variable_set( k, v ) }
-            t
-        else
-            raise YAML::TypeError, "Invalid Time: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            tz = "Z"
-            # from the tidy Tobias Peters <t-peters at gmx.de> Thanks!
-            unless self.utc?
-                utc_same_instant = self.dup.utc
-                utc_same_writing = Time.utc(year,month,day,hour,min,sec,usec)
-                difference_to_utc = utc_same_writing - utc_same_instant
-                if (difference_to_utc < 0) 
-                    difference_sign = '-'
-                    absolute_difference = -difference_to_utc
-                else
-                    difference_sign = '+'
-                    absolute_difference = difference_to_utc
-                end
-                difference_minutes = (absolute_difference/60).round
-                tz = "%s%02d:%02d" % [ difference_sign, difference_minutes / 60, difference_minutes % 60]
-            end
-            standard = self.strftime( "%Y-%m-%d %H:%M:%S" )
-            standard += ".%06d" % [usec] if usec.nonzero?
-            standard += " %s" % [tz]
-            if to_yaml_properties.empty?
-                out.scalar( taguri, standard, :plain )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'at', standard )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Date
-    yaml_as "tag:yaml.org,2002:timestamp#ymd"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:timestamp", self.to_s, :plain )
-        end
-	end
-end
-
-class Integer
-    yaml_as "tag:yaml.org,2002:int"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
-        end
-	end
-end
-
-class Float
-    yaml_as "tag:yaml.org,2002:float"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            str = self.to_s
-            if str == "Infinity"
-                str = ".Inf"
-            elsif str == "-Infinity"
-                str = "-.Inf"
-            elsif str == "NaN"
-                str = ".NaN"
-            end
-            out.scalar( "tag:yaml.org,2002:float", str, :plain )
-        end
-	end
-end
-
-class TrueClass
-    yaml_as "tag:yaml.org,2002:bool#yes"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "true", :plain )
-        end
-	end
-end
-
-class FalseClass
-    yaml_as "tag:yaml.org,2002:bool#no"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "false", :plain )
-        end
-	end
-end
-
-class NilClass 
-    yaml_as "tag:yaml.org,2002:null"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "", :plain )
-        end
-	end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/store.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/store.rb
deleted file mode 100644
index 2ffa955..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/store.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# YAML::Store
-#
-require 'yaml'
-require 'pstore'
-
-class YAML::Store < PStore
-  def initialize( *o )
-    @opt = YAML::DEFAULTS.dup
-    if String === o.first
-      super(o.shift)
-    end
-    if o.last.is_a? Hash
-      @opt.update(o.pop)
-    end
-  end
-
-  def dump(table)
-    @table.to_yaml(@opt)
-  end
-
-  def load(content)
-    YAML::load(content)
-  end
-
-  def load_file(file)
-    YAML::load(file)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stream.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stream.rb
deleted file mode 100644
index 060fbc4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stream.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module YAML
-
-	#
-	# YAML::Stream -- for emitting many documents
-	#
-	class Stream
-
-		attr_accessor :documents, :options
-
-		def initialize( opts = {} )
-			@options = opts
-			@documents = []
-		end
-		
-        def []( i )
-            @documents[ i ]
-        end
-
-		def add( doc )
-			@documents << doc
-		end
-
-		def edit( doc_num, doc )
-			@documents[ doc_num ] = doc
-		end
-
-		def emit( io = nil )
-            # opts = @options.dup
-			# opts[:UseHeader] = true if @documents.length > 1
-            out = YAML.emitter
-            out.reset( io || io2 = StringIO.new )
-            @documents.each { |v|
-                v.to_yaml( out )
-            }
-            io || ( io2.rewind; io2.read )
-		end
-
-	end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stringio.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stringio.rb
deleted file mode 100644
index 8ad949f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/stringio.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# Limited StringIO if no core lib is available
-#
-begin
-require 'stringio'
-rescue LoadError
-    # StringIO based on code by MoonWolf
-    class StringIO
-        def initialize(string="")
-            @string=string
-            @pos=0
-            @eof=(string.size==0)
-        end
-        def pos
-            @pos
-        end    
-        def eof
-            @eof
-        end
-        alias eof? eof
-        def readline(rs=$/)
-            if @eof
-                raise EOFError
-            else
-                if p = @string[@pos..-1]=~rs
-                    line = @string[@pos,p+1]
-                else
-                    line = @string[@pos..-1]
-                end
-                @pos+=line.size
-                @eof =true if @pos==@string.size
-                $_ = line
-            end
-        end
-        def rewind
-            seek(0,0)
-        end
-        def seek(offset,whence)
-            case whence
-            when 0
-                @pos=offset
-            when 1
-                @pos+=offset
-            when 2
-                @pos=@string.size+offset
-            end
-            @eof=(@pos>=@string.size)
-            0
-        end
-    end
-
-	#
-	# Class method for creating streams
-	#
-	def YAML.make_stream( io )
-        if String === io
-            io = StringIO.new( io )
-        elsif not IO === io
-            raise YAML::Error, "YAML stream must be an IO or String object."
-        end
-        if YAML::unicode
-            def io.readline
-                YAML.utf_to_internal( readline( @ln_sep ), @utf_encoding )
-            end
-            def io.check_unicode
-                @utf_encoding = YAML.sniff_encoding( read( 4 ) )
-                @ln_sep = YAML.enc_separator( @utf_encoding )
-                seek( -4, IO::SEEK_CUR )
-            end
-		    def io.utf_encoding
-		    	@utf_encoding
-		    end
-            io.check_unicode
-        else
-            def io.utf_encoding
-                :None
-            end
-        end
-        io
-	end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/syck.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/syck.rb
deleted file mode 100644
index faf57e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/syck.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# YAML::Syck module
-# .. glues syck and yaml.rb together ..
-#
-require 'syck'
-require 'yaml/basenode'
-
-module YAML
-    module Syck
-
-        #
-        # Mixin BaseNode functionality
-        #
-        class Node
-            include YAML::BaseNode
-        end
-
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/tag.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/tag.rb
deleted file mode 100644
index a91f2bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/tag.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-# $Id: tag.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# = yaml/tag.rb: methods for associating a taguri to a class.
-#
-# Author:: why the lucky stiff
-# 
-module YAML
-    # A dictionary of taguris which map to
-    # Ruby classes.
-    @@tagged_classes = {}
-    
-    # 
-    # Associates a taguri _tag_ with a Ruby class _cls_.  The taguri is used to give types
-    # to classes when loading YAML.  Taguris are of the form:
-    #
-    #   tag:authorityName,date:specific
-    #
-    # The +authorityName+ is a domain name or email address.  The +date+ is the date the type
-    # was issued in YYYY or YYYY-MM or YYYY-MM-DD format.  The +specific+ is a name for
-    # the type being added.
-    # 
-    # For example, built-in YAML types have 'yaml.org' as the +authorityName+ and '2002' as the
-    # +date+.  The +specific+ is simply the name of the type:
-    #
-    #  tag:yaml.org,2002:int
-    #  tag:yaml.org,2002:float
-    #  tag:yaml.org,2002:timestamp
-    #
-    # The domain must be owned by you on the +date+ declared.  If you don't own any domains on the
-    # date you declare the type, you can simply use an e-mail address.
-    #
-    #  tag:why at ruby-lang.org,2004:notes/personal
-    #
-    def YAML.tag_class( tag, cls )
-        if @@tagged_classes.has_key? tag
-            warn "class #{ @@tagged_classes[tag] } held ownership of the #{ tag } tag"
-        end
-        @@tagged_classes[tag] = cls
-    end
-
-    # Returns the complete dictionary of taguris, paired with classes.  The key for
-    # the dictionary is the full taguri.  The value for each key is the class constant
-    # associated to that taguri.
-    #
-    #  YAML.tagged_classes["tag:yaml.org,2002:int"] => Integer
-    #
-    def YAML.tagged_classes
-        @@tagged_classes
-    end
-end
-
-class Module
-    # :stopdoc:
-
-    # Adds a taguri _tag_ to a class, used when dumping or loading the class
-    # in YAML.  See YAML::tag_class for detailed information on typing and
-    # taguris.
-    def yaml_as( tag, sc = true )
-        verbose, $VERBOSE = $VERBOSE, nil
-        class_eval <<-"end;", __FILE__, __LINE__+1
-            attr_writer :taguri
-            def taguri
-                if respond_to? :to_yaml_type
-                    YAML::tagurize( to_yaml_type[1..-1] )
-                else
-                    return @taguri if defined?(@taguri) and @taguri
-                    tag = #{ tag.dump }
-                    if self.class.yaml_tag_subclasses? and self.class != YAML::tagged_classes[tag]
-                        tag = "\#{ tag }:\#{ self.class.yaml_tag_class_name }"
-                    end
-                    tag
-                end
-            end
-            def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end
-        end;
-        YAML::tag_class tag, self
-    ensure
-        $VERBOSE = verbose
-    end
-    # Transforms the subclass name into a name suitable for display
-    # in a subclassed tag.
-    def yaml_tag_class_name
-        self.name
-    end
-    # Transforms the subclass name found in the tag into a Ruby
-    # constant name.
-    def yaml_tag_read_class( name )
-        name
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/types.rb
deleted file mode 100644
index 3871c62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/types.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4 -*- vim: sw=4
-#
-# Classes required by the full core typeset
-#
-
-module YAML
-
-    #
-    # Default private type
-    #
-    class PrivateType
-        def self.tag_subclasses?; false; end
-        verbose, $VERBOSE = $VERBOSE, nil
-        def initialize( type, val )
-            @type_id = type; @value = val
-            @value.taguri = "x-private:#{ @type_id }"
-        end
-        def to_yaml( opts = {} )
-            @value.to_yaml( opts )
-        end
-    ensure
-        $VERBOSE = verbose
-    end
-
-    #
-    # Default domain type
-    #
-    class DomainType
-        def self.tag_subclasses?; false; end
-        verbose, $VERBOSE = $VERBOSE, nil
-        def initialize( domain, type, val )
-            @domain = domain; @type_id = type; @value = val
-            @value.taguri = "tag:#{ @domain }:#{ @type_id }"
-        end
-        def to_yaml( opts = {} )
-            @value.to_yaml( opts )
-        end
-    ensure
-        $VERBOSE = verbose
-    end
-
-    #
-    # Unresolved objects
-    #
-    class Object
-        def self.tag_subclasses?; false; end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.map( "tag:ruby.yaml.org,2002:object:#{ @class }", to_yaml_style ) do |map|
-                    @ivars.each do |k,v|
-                        map.add( k, v )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # YAML Hash class to support comments and defaults
-    #
-    class SpecialHash < ::Hash 
-        attr_accessor :default
-        def inspect
-            self.default.to_s
-        end
-        def to_s
-            self.default.to_s
-        end
-        def update( h )
-            if YAML::SpecialHash === h
-                @default = h.default if h.default
-            end
-            super( h )
-        end
-        def to_yaml( opts = {} )
-            opts[:DefaultKey] = self.default
-            super( opts )
-        end
-    end
-
-    #
-    # Builtin collection: !omap
-    #
-    class Omap < ::Array
-        yaml_as "tag:yaml.org,2002:omap"
-        def yaml_initialize( tag, val )
-            if Array === val
-                val.each do |v|
-                    if Hash === v
-                        concat( v.to_a )		# Convert the map to a sequence
-                    else
-                        raise YAML::Error, "Invalid !omap entry: " + val.inspect
-                    end
-                end
-            else
-                raise YAML::Error, "Invalid !omap: " + val.inspect
-            end
-            self
-        end
-        def self.[]( *vals )
-            o = Omap.new
-            0.step( vals.length - 1, 2 ) do |i|
-                o[vals[i]] = vals[i+1]
-            end
-            o
-        end
-        def []( k )
-            self.assoc( k ).to_a[1]
-        end
-        def []=( k, *rest )
-            val, set = rest.reverse
-            if ( tmp = self.assoc( k ) ) and not set
-                tmp[1] = val
-            else
-                self << [ k, val ] 
-            end
-            val
-        end
-        def has_key?( k )
-            self.assoc( k ) ? true : false
-        end
-        def is_complex_yaml?
-            true
-        end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.seq( taguri, to_yaml_style ) do |seq|
-                    self.each do |v|
-                        seq.add( Hash[ *v ] )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # Builtin collection: !pairs
-    #
-    class Pairs < ::Array
-        yaml_as "tag:yaml.org,2002:pairs"
-        def yaml_initialize( tag, val )
-            if Array === val
-                val.each do |v|
-                    if Hash === v
-                        concat( v.to_a )		# Convert the map to a sequence
-                    else
-                        raise YAML::Error, "Invalid !pairs entry: " + val.inspect
-                    end
-                end
-            else
-                raise YAML::Error, "Invalid !pairs: " + val.inspect
-            end
-            self
-        end
-        def self.[]( *vals )
-            p = Pairs.new
-            0.step( vals.length - 1, 2 ) { |i|
-                p[vals[i]] = vals[i+1]
-            }
-            p
-        end
-        def []( k )
-            self.assoc( k ).to_a
-        end
-        def []=( k, val )
-            self << [ k, val ] 
-            val
-        end
-        def has_key?( k )
-            self.assoc( k ) ? true : false
-        end
-        def is_complex_yaml?
-            true
-        end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.seq( taguri, to_yaml_style ) do |seq|
-                    self.each do |v|
-                        seq.add( Hash[ *v ] )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # Builtin collection: !set
-    #
-    class Set < ::Hash
-        yaml_as "tag:yaml.org,2002:set"
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/yamlnode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/yamlnode.rb
deleted file mode 100644
index e36a18e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/yamlnode.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# YAML::YamlNode class
-#
-require 'yaml/basenode'
-
-module YAML
-
-    #
-    # YAML Generic Model container
-    #
-    class YamlNode
-        include BaseNode
-        attr_accessor :kind, :type_id, :value, :anchor
-        def initialize( t, v )
-            @type_id = t
-            if Hash === v
-                @kind = 'map'
-                @value = {}
-                v.each { |k,v|
-                    @value[ k.transform ] = [ k, v ]
-                }
-            elsif Array === v
-                @kind = 'seq'
-                @value = v
-            elsif String === v
-                @kind = 'scalar'
-                @value = v
-            end
-        end
-
-        #
-        # Transform this node fully into a native type
-        #
-        def transform
-            t = nil
-            if @value.is_a? Hash
-                t = {}
-                @value.each { |k,v|
-                    t[ k ] = v[1].transform
-                }
-            elsif @value.is_a? Array
-                t = []
-                @value.each { |v|
-                    t.push v.transform
-                }
-            else
-                t = @value
-            end
-            YAML.transfer_method( @type_id, t )
-        end
-
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/ypath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/ypath.rb
deleted file mode 100644
index 81348ca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/1.8/yaml/ypath.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# YAML::YPath
-#
-
-module YAML
-
-    class YPath
-        attr_accessor :segments, :predicates, :flags
-        def initialize( str )
-            @segments = []
-            @predicates = []
-            @flags = nil
-            while str =~ /^\/?(\/|[^\/\[]+)(?:\[([^\]]+)\])?/
-                @segments.push $1
-                @predicates.push $2
-                str = $'
-            end
-            unless str.to_s.empty?
-                @segments += str.split( "/" )
-            end
-            if @segments.length == 0
-                @segments.push "."
-            end
-        end
-        def YPath.each_path( str )
-            #
-            # Find choices
-            #
-            paths = []
-            str = "(#{ str })"
-            while str.sub!( /\(([^()]+)\)/, "\n#{ paths.length }\n" )
-                paths.push $1.split( '|' )
-            end
-
-            #
-            # Construct all possible paths
-            #
-            all = [ str ]
-            ( paths.length - 1 ).downto( 0 ) do |i|
-                all = all.collect do |a|
-                    paths[i].collect do |p|
-                        a.gsub( /\n#{ i }\n/, p )
-                    end
-                end.flatten.uniq
-            end
-            all.collect do |path|
-                yield YPath.new( path )
-            end
-        end
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rbconfig/datadir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rbconfig/datadir.rb
deleted file mode 100644
index 5b8f077..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rbconfig/datadir.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-module Config
-
-  # Only define datadir if it doesn't already exist.
-  unless Config.respond_to?(:datadir)
-    
-    # Return the path to the data directory associated with the given
-    # package name.  Normally this is just
-    # "#{Config::CONFIG['datadir']}/#{package_name}", but may be
-    # modified by packages like RubyGems to handle versioned data
-    # directories.
-    def Config.datadir(package_name)
-      File.join(CONFIG['datadir'], package_name)
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems.rb
deleted file mode 100644
index e85d97c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems.rb
+++ /dev/null
@@ -1,888 +0,0 @@
-# -*- ruby -*-
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/rubygems_version'
-require 'rubygems/defaults'
-require 'thread'
-
-module Gem
-  class LoadError < ::LoadError
-    attr_accessor :name, :version_requirement
-  end
-end
-
-module Kernel
-
-  ##
-  # Use Kernel#gem to activate a specific version of +gem_name+.
-  #
-  # +version_requirements+ is a list of version requirements that the
-  # specified gem must match, most commonly "= example.version.number".  See
-  # Gem::Requirement for how to specify a version requirement.
-  #
-  # If you will be activating the latest version of a gem, there is no need to
-  # call Kernel#gem, Kernel#require will do the right thing for you.
-  #
-  # Kernel#gem returns true if the gem was activated, otherwise false.  If the
-  # gem could not be found, didn't match the version requirements, or a
-  # different version was already activated, an exception will be raised.
-  #
-  # Kernel#gem should be called *before* any require statements (otherwise
-  # RubyGems may load a conflicting library version).
-  #
-  # In older RubyGems versions, the environment variable GEM_SKIP could be
-  # used to skip activation of specified gems, for example to test out changes
-  # that haven't been installed yet.  Now RubyGems defers to -I and the
-  # RUBYLIB environment variable to skip activation of a gem.
-  #
-  # Example:
-  #
-  #   GEM_SKIP=libA:libB ruby -I../libA -I../libB ./mycode.rb
-
-  def gem(gem_name, *version_requirements) # :doc:
-    skip_list = (ENV['GEM_SKIP'] || "").split(/:/)
-    raise Gem::LoadError, "skipping #{gem_name}" if skip_list.include? gem_name
-    Gem.activate(gem_name, *version_requirements)
-  end
-
-  private :gem
-
-end
-
-##
-# Main module to hold all RubyGem classes/modules.
-
-module Gem
-
-  ConfigMap = {} unless defined?(ConfigMap)
-  require 'rbconfig'
-  RbConfig = Config unless defined? ::RbConfig
-
-  ConfigMap.merge!(
-    :BASERUBY => RbConfig::CONFIG["BASERUBY"],
-    :EXEEXT => RbConfig::CONFIG["EXEEXT"],
-    :RUBY_INSTALL_NAME => RbConfig::CONFIG["RUBY_INSTALL_NAME"],
-    :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"],
-    :arch => RbConfig::CONFIG["arch"],
-    :bindir => RbConfig::CONFIG["bindir"],
-    :datadir => RbConfig::CONFIG["datadir"],
-    :libdir => RbConfig::CONFIG["libdir"],
-    :ruby_install_name => RbConfig::CONFIG["ruby_install_name"],
-    :ruby_version => RbConfig::CONFIG["ruby_version"],
-    :sitedir => RbConfig::CONFIG["sitedir"],
-    :sitelibdir => RbConfig::CONFIG["sitelibdir"],
-    :vendordir => RbConfig::CONFIG["vendordir"] ,
-    :vendorlibdir => RbConfig::CONFIG["vendorlibdir"]
-  )
-
-  DIRECTORIES = %w[cache doc gems specifications] unless defined?(DIRECTORIES)
-
-  MUTEX = Mutex.new
-
-  RubyGemsPackageVersion = RubyGemsVersion
-
-  ##
-  # An Array of Regexps that match windows ruby platforms.
-
-  WIN_PATTERNS = [
-    /bccwin/i,
-    /cygwin/i,
-    /djgpp/i,
-    /mingw/i,
-    /mswin/i,
-    /wince/i,
-  ]
-
-  @@source_index = nil
-  @@win_platform = nil
-
-  @configuration = nil
-  @loaded_specs = {}
-  @platforms = []
-  @ruby = nil
-  @sources = []
-
-  @post_install_hooks   ||= []
-  @post_uninstall_hooks ||= []
-  @pre_uninstall_hooks  ||= []
-  @pre_install_hooks    ||= []
-
-  ##
-  # Activates an installed gem matching +gem+.  The gem must satisfy
-  # +version_requirements+.
-  #
-  # Returns true if the gem is activated, false if it is already
-  # loaded, or an exception otherwise.
-  #
-  # Gem#activate adds the library paths in +gem+ to $LOAD_PATH.  Before a Gem
-  # is activated its required Gems are activated.  If the version information
-  # is omitted, the highest version Gem of the supplied name is loaded.  If a
-  # Gem is not found that meets the version requirements or a required Gem is
-  # not found, a Gem::LoadError is raised.
-  #
-  # More information on version requirements can be found in the
-  # Gem::Requirement and Gem::Version documentation.
-
-  def self.activate(gem, *version_requirements)
-    if version_requirements.empty? then
-      version_requirements = Gem::Requirement.default
-    end
-
-    unless gem.respond_to?(:name) and
-           gem.respond_to?(:version_requirements) then
-      gem = Gem::Dependency.new(gem, version_requirements)
-    end
-
-    matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
-    report_activate_error(gem) if matches.empty?
-
-    if @loaded_specs[gem.name] then
-      # This gem is already loaded.  If the currently loaded gem is not in the
-      # list of candidate gems, then we have a version conflict.
-      existing_spec = @loaded_specs[gem.name]
-
-      unless matches.any? { |spec| spec.version == existing_spec.version } then
-        raise Gem::Exception,
-              "can't activate #{gem}, already activated #{existing_spec.full_name}"
-      end
-
-      return false
-    end
-
-    # new load
-    spec = matches.last
-    return false if spec.loaded?
-
-    spec.loaded = true
-    @loaded_specs[spec.name] = spec
-
-    # Load dependent gems first
-    spec.runtime_dependencies.each do |dep_gem|
-      activate dep_gem
-    end
-
-    # bin directory must come before library directories
-    spec.require_paths.unshift spec.bindir if spec.bindir
-
-    require_paths = spec.require_paths.map do |path|
-      File.join spec.full_gem_path, path
-    end
-
-    sitelibdir = ConfigMap[:sitelibdir]
-
-    # gem directories must come after -I and ENV['RUBYLIB']
-    insert_index = load_path_insert_index
-
-    if insert_index then
-      # gem directories must come after -I and ENV['RUBYLIB']
-      $LOAD_PATH.insert(insert_index, *require_paths)
-    else
-      # we are probably testing in core, -I and RUBYLIB don't apply
-      $LOAD_PATH.unshift(*require_paths)
-    end
-
-    return true
-  end
-
-  ##
-  # An Array of all possible load paths for all versions of all gems in the
-  # Gem installation.
-
-  def self.all_load_paths
-    result = []
-
-    Gem.path.each do |gemdir|
-      each_load_path all_partials(gemdir) do |load_path|
-        result << load_path
-      end
-    end
-
-    result
-  end
-
-  ##
-  # Return all the partial paths in +gemdir+.
-
-  def self.all_partials(gemdir)
-    Dir[File.join(gemdir, 'gems/*')]
-  end
-
-  private_class_method :all_partials
-
-  ##
-  # See if a given gem is available.
-
-  def self.available?(gem, *requirements)
-    requirements = Gem::Requirement.default if requirements.empty?
-
-    unless gem.respond_to?(:name) and
-           gem.respond_to?(:version_requirements) then
-      gem = Gem::Dependency.new gem, requirements
-    end
-
-    !Gem.source_index.search(gem).empty?
-  end
-
-  ##
-  # The mode needed to read a file as straight binary.
-
-  def self.binary_mode
-    @binary_mode ||= RUBY_VERSION > '1.9' ? 'rb:ascii-8bit' : 'rb'
-  end
-
-  ##
-  # The path where gem executables are to be installed.
-
-  def self.bindir(install_dir=Gem.dir)
-    return File.join(install_dir, 'bin') unless
-      install_dir.to_s == Gem.default_dir
-    Gem.default_bindir
-  end
-
-  ##
-  # Reset the +dir+ and +path+ values.  The next time +dir+ or +path+
-  # is requested, the values will be calculated from scratch.  This is
-  # mainly used by the unit tests to provide test isolation.
-
-  def self.clear_paths
-    @gem_home = nil
-    @gem_path = nil
-    @user_home = nil
-
-    @@source_index = nil
-
-    MUTEX.synchronize do
-      @searcher = nil
-    end
-  end
-
-  ##
-  # The path to standard location of the user's .gemrc file.
-
-  def self.config_file
-    File.join Gem.user_home, '.gemrc'
-  end
-
-  ##
-  # The standard configuration object for gems.
-
-  def self.configuration
-    @configuration ||= Gem::ConfigFile.new []
-  end
-
-  ##
-  # Use the given configuration object (which implements the ConfigFile
-  # protocol) as the standard configuration object.
-
-  def self.configuration=(config)
-    @configuration = config
-  end
-
-  ##
-  # The path the the data directory specified by the gem name.  If the
-  # package is not available as a gem, return nil.
-
-  def self.datadir(gem_name)
-    spec = @loaded_specs[gem_name]
-    return nil if spec.nil?
-    File.join(spec.full_gem_path, 'data', gem_name)
-  end
-
-  ##
-  # A Zlib::Deflate.deflate wrapper
-
-  def self.deflate(data)
-    require 'zlib'
-    Zlib::Deflate.deflate data
-  end
-
-  ##
-  # The path where gems are to be installed.
-
-  def self.dir
-    @gem_home ||= nil
-    set_home(ENV['GEM_HOME'] || Gem.configuration.home || default_dir) unless @gem_home
-    @gem_home
-  end
-
-  ##
-  # Expand each partial gem path with each of the required paths specified
-  # in the Gem spec.  Each expanded path is yielded.
-
-  def self.each_load_path(partials)
-    partials.each do |gp|
-      base = File.basename(gp)
-      specfn = File.join(dir, "specifications", base + ".gemspec")
-      if File.exist?(specfn)
-        spec = eval(File.read(specfn))
-        spec.require_paths.each do |rp|
-          yield(File.join(gp, rp))
-        end
-      else
-        filename = File.join(gp, 'lib')
-        yield(filename) if File.exist?(filename)
-      end
-    end
-  end
-
-  private_class_method :each_load_path
-
-  ##
-  # Quietly ensure the named Gem directory contains all the proper
-  # subdirectories.  If we can't create a directory due to a permission
-  # problem, then we will silently continue.
-
-  def self.ensure_gem_subdirectories(gemdir)
-    require 'fileutils'
-
-    Gem::DIRECTORIES.each do |filename|
-      fn = File.join gemdir, filename
-      FileUtils.mkdir_p fn rescue nil unless File.exist? fn
-    end
-  end
-
-  ##
-  # Returns a list of paths matching +file+ that can be used by a gem to pick
-  # up features from other gems.  For example:
-  #
-  #   Gem.find_files('rdoc/discover').each do |path| load path end
-  #
-  # find_files does not search $LOAD_PATH for files, only gems.
-
-  def self.find_files(path)
-    specs = searcher.find_all path
-
-    specs.map do |spec|
-      searcher.matching_files spec, path
-    end.flatten
-  end
-
-  ##
-  # Finds the user's home directory.
-  #--
-  # Some comments from the ruby-talk list regarding finding the home
-  # directory:
-  #
-  #   I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
-  #   to be depending on HOME in those code samples. I propose that
-  #   it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
-  #   least on Win32).
-
-  def self.find_home
-    ['HOME', 'USERPROFILE'].each do |homekey|
-      return ENV[homekey] if ENV[homekey]
-    end
-
-    if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
-      return "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}"
-    end
-
-    begin
-      File.expand_path("~")
-    rescue
-      if File::ALT_SEPARATOR then
-          "C:/"
-      else
-          "/"
-      end
-    end
-  end
-
-  private_class_method :find_home
-
-  ##
-  # Zlib::GzipReader wrapper that unzips +data+.
-
-  def self.gunzip(data)
-    require 'stringio'
-    require 'zlib'
-    data = StringIO.new data
-
-    Zlib::GzipReader.new(data).read
-  end
-
-  ##
-  # Zlib::GzipWriter wrapper that zips +data+.
-
-  def self.gzip(data)
-    require 'stringio'
-    require 'zlib'
-    zipped = StringIO.new
-
-    Zlib::GzipWriter.wrap zipped do |io| io.write data end
-
-    zipped.string
-  end
-
-  ##
-  # A Zlib::Inflate#inflate wrapper
-
-  def self.inflate(data)
-    require 'zlib'
-    Zlib::Inflate.inflate data
-  end
-
-  ##
-  # Return a list of all possible load paths for the latest version for all
-  # gems in the Gem installation.
-
-  def self.latest_load_paths
-    result = []
-
-    Gem.path.each do |gemdir|
-      each_load_path(latest_partials(gemdir)) do |load_path|
-        result << load_path
-      end
-    end
-
-    result
-  end
-
-  ##
-  # Return only the latest partial paths in the given +gemdir+.
-
-  def self.latest_partials(gemdir)
-    latest = {}
-    all_partials(gemdir).each do |gp|
-      base = File.basename(gp)
-      if base =~ /(.*)-((\d+\.)*\d+)/ then
-        name, version = $1, $2
-        ver = Gem::Version.new(version)
-        if latest[name].nil? || ver > latest[name][0]
-          latest[name] = [ver, gp]
-        end
-      end
-    end
-    latest.collect { |k,v| v[1] }
-  end
-
-  private_class_method :latest_partials
-
-  ##
-  # The index to insert activated gem paths into the $LOAD_PATH.
-  #
-  # Defaults to the site lib directory unless gem_prelude.rb has loaded paths,
-  # then it inserts the activated gem's paths before the gem_prelude.rb paths
-  # so you can override the gem_prelude.rb default $LOAD_PATH paths.
-
-  def self.load_path_insert_index
-    index = $LOAD_PATH.index ConfigMap[:sitelibdir]
-
-    $LOAD_PATH.each_with_index do |path, i|
-      if path.instance_variables.include?(:@gem_prelude_index) or
-        path.instance_variables.include?('@gem_prelude_index') then
-        index = i
-        break
-      end
-    end
-
-    index
-  end
-
-  ##
-  # The file name and line number of the caller of the caller of this method.
-
-  def self.location_of_caller
-    caller[1] =~ /(.*?):(\d+)$/i
-    file = $1
-    lineno = $2.to_i
-
-    [file, lineno]
-  end
-
-  ##
-  # manage_gems is useless and deprecated.  Don't call it anymore.
-
-  def self.manage_gems # :nodoc:
-    file, lineno = location_of_caller
-
-    warn "#{file}:#{lineno}:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009."
-  end
-
-  ##
-  # The version of the Marshal format for your Ruby.
-
-  def self.marshal_version
-    "#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"
-  end
-
-  ##
-  # Array of paths to search for Gems.
-
-  def self.path
-    @gem_path ||= nil
-
-    unless @gem_path then
-      paths = [ENV['GEM_PATH'] || Gem.configuration.path || default_path]
-
-      if defined?(APPLE_GEM_HOME) and not ENV['GEM_PATH'] then
-        paths << APPLE_GEM_HOME
-      end
-
-      set_paths paths.compact.join(File::PATH_SEPARATOR)
-    end
-
-    @gem_path
-  end
-
-  ##
-  # Set array of platforms this RubyGems supports (primarily for testing).
-
-  def self.platforms=(platforms)
-    @platforms = platforms
-  end
-
-  ##
-  # Array of platforms this RubyGems supports.
-
-  def self.platforms
-    @platforms ||= []
-    if @platforms.empty?
-      @platforms = [Gem::Platform::RUBY, Gem::Platform.local]
-    end
-    @platforms
-  end
-
-  ##
-  # Adds a post-install hook that will be passed an Gem::Installer instance
-  # when Gem::Installer#install is called
-
-  def self.post_install(&hook)
-    @post_install_hooks << hook
-  end
-
-  ##
-  # Adds a post-uninstall hook that will be passed a Gem::Uninstaller instance
-  # and the spec that was uninstalled when Gem::Uninstaller#uninstall is
-  # called
-
-  def self.post_uninstall(&hook)
-    @post_uninstall_hooks << hook
-  end
-
-  ##
-  # Adds a pre-install hook that will be passed an Gem::Installer instance
-  # when Gem::Installer#install is called
-
-  def self.pre_install(&hook)
-    @pre_install_hooks << hook
-  end
-
-  ##
-  # Adds a pre-uninstall hook that will be passed an Gem::Uninstaller instance
-  # and the spec that will be uninstalled when Gem::Uninstaller#uninstall is
-  # called
-
-  def self.pre_uninstall(&hook)
-    @pre_uninstall_hooks << hook
-  end
-
-  ##
-  # The directory prefix this RubyGems was installed at.
-
-  def self.prefix
-    prefix = File.dirname File.expand_path(__FILE__)
-
-    if File.dirname(prefix) == File.expand_path(ConfigMap[:sitelibdir]) or
-       File.dirname(prefix) == File.expand_path(ConfigMap[:libdir]) or
-       'lib' != File.basename(prefix) then
-      nil
-    else
-      File.dirname prefix
-    end
-  end
-
-  ##
-  # Refresh source_index from disk and clear searcher.
-
-  def self.refresh
-    source_index.refresh!
-
-    MUTEX.synchronize do
-      @searcher = nil
-    end
-  end
-
-  ##
-  # Safely read a file in binary mode on all platforms.
-
-  def self.read_binary(path)
-    File.open path, binary_mode do |f| f.read end
-  end
-
-  ##
-  # Report a load error during activation.  The message of load error
-  # depends on whether it was a version mismatch or if there are not gems of
-  # any version by the requested name.
-
-  def self.report_activate_error(gem)
-    matches = Gem.source_index.find_name(gem.name)
-
-    if matches.empty? then
-      error = Gem::LoadError.new(
-          "Could not find RubyGem #{gem.name} (#{gem.version_requirements})\n")
-    else
-      error = Gem::LoadError.new(
-          "RubyGem version error: " +
-          "#{gem.name}(#{matches.first.version} not #{gem.version_requirements})\n")
-    end
-
-    error.name = gem.name
-    error.version_requirement = gem.version_requirements
-    raise error
-  end
-
-  private_class_method :report_activate_error
-
-  def self.required_location(gemname, libfile, *version_constraints)
-    version_constraints = Gem::Requirement.default if version_constraints.empty?
-    matches = Gem.source_index.find_name(gemname, version_constraints)
-    return nil if matches.empty?
-    spec = matches.last
-    spec.require_paths.each do |path|
-      result = File.join(spec.full_gem_path, path, libfile)
-      return result if File.exist?(result)
-    end
-    nil
-  end
-
-  ##
-  # The path to the running Ruby interpreter.
-
-  def self.ruby
-    if @ruby.nil? then
-      @ruby = File.join(ConfigMap[:bindir],
-                        ConfigMap[:ruby_install_name])
-      @ruby << ConfigMap[:EXEEXT]
-
-      # escape string in case path to ruby executable contain spaces.
-      @ruby.sub!(/.*\s.*/m, '"\&"')
-    end
-
-    @ruby
-  end
-
-  ##
-  # A Gem::Version for the currently running ruby.
-
-  def self.ruby_version
-    return @ruby_version if defined? @ruby_version
-    version = RUBY_VERSION.dup
-    version << ".#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-    @ruby_version = Gem::Version.new version
-  end
-
-  ##
-  # The GemPathSearcher object used to search for matching installed gems.
-
-  def self.searcher
-    MUTEX.synchronize do
-      @searcher ||= Gem::GemPathSearcher.new
-    end
-  end
-
-  ##
-  # Set the Gem home directory (as reported by Gem.dir).
-
-  def self.set_home(home)
-    home = home.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
-    @gem_home = home
-    ensure_gem_subdirectories(@gem_home)
-  end
-
-  private_class_method :set_home
-
-  ##
-  # Set the Gem search path (as reported by Gem.path).
-
-  def self.set_paths(gpaths)
-    if gpaths
-      @gem_path = gpaths.split(File::PATH_SEPARATOR)
-
-      if File::ALT_SEPARATOR then
-        @gem_path.map! do |path|
-          path.gsub File::ALT_SEPARATOR, File::SEPARATOR
-        end
-      end
-
-      @gem_path << Gem.dir
-    else
-      # TODO: should this be Gem.default_path instead?
-      @gem_path = [Gem.dir]
-    end
-
-    @gem_path.uniq!
-    @gem_path.each do |path|
-      if 0 == File.expand_path(path).index(Gem.user_home)
-        unless win_platform? then
-          # only create by matching user
-          next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid
-        end
-      end
-      ensure_gem_subdirectories path
-    end
-  end
-
-  private_class_method :set_paths
-
-  ##
-  # Returns the Gem::SourceIndex of specifications that are in the Gem.path
-
-  def self.source_index
-    @@source_index ||= SourceIndex.from_installed_gems
-  end
-
-  ##
-  # Returns an Array of sources to fetch remote gems from.  If the sources
-  # list is empty, attempts to load the "sources" gem, then uses
-  # default_sources if it is not installed.
-
-  def self.sources
-    if @sources.empty? then
-      begin
-        gem 'sources', '> 0.0.1'
-        require 'sources'
-      rescue LoadError
-        @sources = default_sources
-      end
-    end
-
-    @sources
-  end
-
-  ##
-  # Need to be able to set the sources without calling
-  # Gem.sources.replace since that would cause an infinite loop.
-
-  def self.sources=(new_sources)
-    @sources = new_sources
-  end
-
-  ##
-  # Glob pattern for require-able path suffixes.
-
-  def self.suffix_pattern
-    @suffix_pattern ||= "{#{suffixes.join(',')}}"
-  end
-
-  ##
-  # Suffixes for require-able paths.
-
-  def self.suffixes
-    ['', '.rb', '.rbw', '.so', '.bundle', '.dll', '.sl', '.jar']
-  end
-
-  ##
-  # Use the +home+ and +paths+ values for Gem.dir and Gem.path.  Used mainly
-  # by the unit tests to provide environment isolation.
-
-  def self.use_paths(home, paths=[])
-    clear_paths
-    set_home(home) if home
-    set_paths(paths.join(File::PATH_SEPARATOR)) if paths
-  end
-
-  ##
-  # The home directory for the user.
-
-  def self.user_home
-    @user_home ||= find_home
-  end
-
-  ##
-  # Is this a windows platform?
-
-  def self.win_platform?
-    if @@win_platform.nil? then
-      @@win_platform = !!WIN_PATTERNS.find { |r| RUBY_PLATFORM =~ r }
-    end
-
-    @@win_platform
-  end
-
-  class << self
-
-    attr_reader :loaded_specs
-
-    ##
-    # The list of hooks to be run before Gem::Install#install does any work
-
-    attr_reader :post_install_hooks
-
-    ##
-    # The list of hooks to be run before Gem::Uninstall#uninstall does any
-    # work
-
-    attr_reader :post_uninstall_hooks
-
-    ##
-    # The list of hooks to be run after Gem::Install#install is finished
-
-    attr_reader :pre_install_hooks
-
-    ##
-    # The list of hooks to be run after Gem::Uninstall#uninstall is finished
-
-    attr_reader :pre_uninstall_hooks
-
-    # :stopdoc:
-
-    alias cache source_index # an alias for the old name
-
-    # :startdoc:
-
-  end
-
-  MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/"
-
-  YAML_SPEC_DIR = 'quick/'
-
-end
-
-module Config
-  # :stopdoc:
-  class << self
-    # Return the path to the data directory associated with the named
-    # package.  If the package is loaded as a gem, return the gem
-    # specific data directory.  Otherwise return a path to the share
-    # area as define by "#{ConfigMap[:datadir]}/#{package_name}".
-    def datadir(package_name)
-      Gem.datadir(package_name) ||
-        File.join(Gem::ConfigMap[:datadir], package_name)
-    end
-  end
-  # :startdoc:
-end
-
-require 'rubygems/exceptions'
-require 'rubygems/version'
-require 'rubygems/requirement'
-require 'rubygems/dependency'
-require 'rubygems/gem_path_searcher'    # Needed for Kernel#gem
-require 'rubygems/source_index'         # Needed for Kernel#gem
-require 'rubygems/platform'
-require 'rubygems/builder'              # HACK: Needed for rake's package task.
-
-begin
-  require 'rubygems/defaults/operating_system'
-rescue LoadError
-end
-
-if defined?(RUBY_ENGINE) then
-  begin
-    require "rubygems/defaults/#{RUBY_ENGINE}"
-  rescue LoadError
-  end
-end
-
-require 'rubygems/config_file'
-
-if RUBY_VERSION < '1.9' then
-  require 'rubygems/custom_require'
-end
-
-Gem.clear_paths
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/builder.rb
deleted file mode 100644
index 6fd8528..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/builder.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-
-  ##
-  # The Builder class processes RubyGem specification files
-  # to produce a .gem file.
-  #
-  class Builder
-  
-    include UserInteraction
-    ##
-    # Constructs a builder instance for the provided specification
-    #
-    # spec:: [Gem::Specification] The specification instance
-    #
-    def initialize(spec)
-      require "yaml"
-      require "rubygems/package"
-      require "rubygems/security"
-
-      @spec = spec
-    end
-
-    ##
-    # Builds the gem from the specification.  Returns the name of the file
-    # written.
-    #
-    def build
-      @spec.mark_version
-      @spec.validate
-      @signer = sign
-      write_package
-      say success
-      @spec.file_name
-    end
-    
-    def success
-      <<-EOM
-  Successfully built RubyGem
-  Name: #{@spec.name}
-  Version: #{@spec.version}
-  File: #{@spec.full_name+'.gem'}
-EOM
-    end
-
-    private
-
-    def sign
-      # if the signing key was specified, then load the file, and swap
-      # to the public key (TODO: we should probably just omit the
-      # signing key in favor of the signing certificate, but that's for
-      # the future, also the signature algorithm should be configurable)
-      signer = nil
-      if @spec.respond_to?(:signing_key) && @spec.signing_key
-        signer = Gem::Security::Signer.new(@spec.signing_key, @spec.cert_chain)
-        @spec.signing_key = nil
-        @spec.cert_chain = signer.cert_chain.map { |cert| cert.to_s }
-      end
-      signer
-    end
-
-    def write_package
-      open @spec.file_name, 'wb' do |gem_io|
-        Gem::Package.open gem_io, 'w', @signer do |pkg|
-          pkg.metadata = @spec.to_yaml
-
-          @spec.files.each do |file|
-            next if File.directory? file
-
-            stat = File.stat file
-            mode = stat.mode & 0777
-            size = stat.size
-
-            pkg.add_file_simple file, mode, size do |tar_io|
-              tar_io.write open(file, "rb") { |f| f.read }
-            end
-          end
-        end
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command.rb
deleted file mode 100644
index 860764e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command.rb
+++ /dev/null
@@ -1,406 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'optparse'
-
-require 'rubygems/user_interaction'
-
-module Gem
-
-  # Base class for all Gem commands.  When creating a new gem command, define
-  # #arguments, #defaults_str, #description and #usage (as appropriate).
-  class Command
-
-    include UserInteraction
-
-    # The name of the command.
-    attr_reader :command
-
-    # The options for the command.
-    attr_reader :options
-
-    # The default options for the command.
-    attr_accessor :defaults
-
-    # The name of the command for command-line invocation.
-    attr_accessor :program_name
-
-    # A short description of the command.
-    attr_accessor :summary
-
-    # Initializes a generic gem command named +command+.  +summary+ is a short
-    # description displayed in `gem help commands`.  +defaults+ are the
-    # default options.  Defaults should be mirrored in #defaults_str, unless
-    # there are none.
-    #
-    # Use add_option to add command-line switches.
-    def initialize(command, summary=nil, defaults={})
-      @command = command
-      @summary = summary
-      @program_name = "gem #{command}"
-      @defaults = defaults
-      @options = defaults.dup
-      @option_groups = Hash.new { |h,k| h[k] = [] }
-      @parser = nil
-      @when_invoked = nil
-    end
-
-    # True if +long+ begins with the characters from +short+.
-    def begins?(long, short)
-      return false if short.nil?
-      long[0, short.length] == short
-    end
-
-    # Override to provide command handling.
-    def execute
-      fail "Generic command has no actions"
-    end
-
-    # Get all gem names from the command line.
-    def get_all_gem_names
-      args = options[:args]
-
-      if args.nil? or args.empty? then
-        raise Gem::CommandLineError,
-              "Please specify at least one gem name (e.g. gem build GEMNAME)"
-      end
-
-      gem_names = args.select { |arg| arg !~ /^-/ }
-    end
-
-    # Get the single gem name from the command line.  Fail if there is no gem
-    # name or if there is more than one gem name given.
-    def get_one_gem_name
-      args = options[:args]
-
-      if args.nil? or args.empty? then
-        raise Gem::CommandLineError,
-             "Please specify a gem name on the command line (e.g. gem build GEMNAME)"
-      end
-
-      if args.size > 1 then
-        raise Gem::CommandLineError,
-              "Too many gem names (#{args.join(', ')}); please specify only one"
-      end
-
-      args.first
-    end
-
-    # Get a single optional argument from the command line.  If more than one
-    # argument is given, return only the first. Return nil if none are given.
-    def get_one_optional_argument
-      args = options[:args] || []
-      args.first
-    end
-
-    # Override to provide details of the arguments a command takes.
-    # It should return a left-justified string, one argument per line.
-    def arguments
-      ""
-    end
-
-    # Override to display the default values of the command
-    # options. (similar to +arguments+, but displays the default
-    # values).
-    def defaults_str
-      ""
-    end
-
-    # Override to display a longer description of what this command does.
-    def description
-      nil
-    end
-
-    # Override to display the usage for an individual gem command.
-    def usage
-      program_name
-    end
-
-    # Display the help message for the command.
-    def show_help
-      parser.program_name = usage
-      say parser
-    end
-
-    # Invoke the command with the given list of arguments.
-    def invoke(*args)
-      handle_options(args)
-      if options[:help]
-        show_help
-      elsif @when_invoked
-        @when_invoked.call(options)
-      else
-        execute
-      end
-    end
-
-    # Call the given block when invoked.
-    #
-    # Normal command invocations just executes the +execute+ method of
-    # the command.  Specifying an invocation block allows the test
-    # methods to override the normal action of a command to determine
-    # that it has been invoked correctly.
-    def when_invoked(&block)
-      @when_invoked = block
-    end
-
-    # Add a command-line option and handler to the command.
-    #
-    # See OptionParser#make_switch for an explanation of +opts+.
-    #
-    # +handler+ will be called with two values, the value of the argument and
-    # the options hash.
-    def add_option(*opts, &handler) # :yields: value, options
-      group_name = Symbol === opts.first ? opts.shift : :options
-
-      @option_groups[group_name] << [opts, handler]
-    end
-
-    # Remove previously defined command-line argument +name+.
-    def remove_option(name)
-      @option_groups.each do |_, option_list|
-        option_list.reject! { |args, _| args.any? { |x| x =~ /^#{name}/ } }
-      end
-    end
-
-    # Merge a set of command options with the set of default options
-    # (without modifying the default option hash).
-    def merge_options(new_options)
-      @options = @defaults.clone
-      new_options.each do |k,v| @options[k] = v end
-    end
-
-    # True if the command handles the given argument list.
-    def handles?(args)
-      begin
-        parser.parse!(args.dup)
-        return true
-      rescue
-        return false
-      end
-    end
-
-    # Handle the given list of arguments by parsing them and recording
-    # the results.
-    def handle_options(args)
-      args = add_extra_args(args)
-      @options = @defaults.clone
-      parser.parse!(args)
-      @options[:args] = args
-    end
-
-    def add_extra_args(args)
-      result = []
-      s_extra = Command.specific_extra_args(@command)
-      extra = Command.extra_args + s_extra
-      while ! extra.empty?
-        ex = []
-        ex << extra.shift
-        ex << extra.shift if extra.first.to_s =~ /^[^-]/
-        result << ex if handles?(ex)
-      end
-      result.flatten!
-      result.concat(args)
-      result
-    end
-
-    private
-
-    # Create on demand parser.
-    def parser
-      create_option_parser if @parser.nil?
-      @parser
-    end
-
-    def create_option_parser
-      @parser = OptionParser.new
-
-      @parser.separator("")
-      regular_options = @option_groups.delete :options
-
-      configure_options "", regular_options
-
-      @option_groups.sort_by { |n,_| n.to_s }.each do |group_name, option_list|
-        configure_options group_name, option_list
-      end
-
-      configure_options "Common", Command.common_options
-
-      @parser.separator("")
-      unless arguments.empty?
-        @parser.separator("  Arguments:")
-        arguments.split(/\n/).each do |arg_desc|
-          @parser.separator("    #{arg_desc}")
-        end
-        @parser.separator("")
-      end
-
-      @parser.separator("  Summary:")
-      wrap(@summary, 80 - 4).split("\n").each do |line|
-        @parser.separator("    #{line.strip}")
-      end
-
-      if description then
-        formatted = description.split("\n\n").map do |chunk|
-          wrap(chunk, 80 - 4)
-        end.join("\n")
-
-        @parser.separator ""
-        @parser.separator "  Description:"
-        formatted.split("\n").each do |line|
-          @parser.separator "    #{line.rstrip}"
-        end
-      end
-
-      unless defaults_str.empty?
-        @parser.separator("")
-        @parser.separator("  Defaults:")
-        defaults_str.split(/\n/).each do |line|
-          @parser.separator("    #{line}")
-        end
-      end
-    end
-
-    def configure_options(header, option_list)
-      return if option_list.nil? or option_list.empty?
-
-      header = header.to_s.empty? ? '' : "#{header} "
-      @parser.separator "  #{header}Options:"
-
-      option_list.each do |args, handler|
-        dashes = args.select { |arg| arg =~ /^-/ }
-        @parser.on(*args) do |value|
-          handler.call(value, @options)
-        end
-      end
-
-      @parser.separator ''
-    end
-
-    # Wraps +text+ to +width+
-    def wrap(text, width)
-      text.gsub(/(.{1,#{width}})( +|$\n?)|(.{1,#{width}})/, "\\1\\3\n")
-    end
-
-    ##################################################################
-    # Class methods for Command.
-    class << self
-      def common_options
-        @common_options ||= []
-      end
-
-      def add_common_option(*args, &handler)
-        Gem::Command.common_options << [args, handler]
-      end
-
-      def extra_args
-        @extra_args ||= []
-      end
-
-      def extra_args=(value)
-        case value
-        when Array
-          @extra_args = value
-        when String
-          @extra_args = value.split
-        end
-      end
-
-      # Return an array of extra arguments for the command.  The extra
-      # arguments come from the gem configuration file read at program
-      # startup.
-      def specific_extra_args(cmd)
-        specific_extra_args_hash[cmd]
-      end
-
-      # Add a list of extra arguments for the given command.  +args+
-      # may be an array or a string to be split on white space.
-      def add_specific_extra_args(cmd,args)
-        args = args.split(/\s+/) if args.kind_of? String
-        specific_extra_args_hash[cmd] = args
-      end
-
-      # Accessor for the specific extra args hash (self initializing).
-      def specific_extra_args_hash
-        @specific_extra_args_hash ||= Hash.new do |h,k|
-          h[k] = Array.new
-        end
-      end
-    end
-
-    # ----------------------------------------------------------------
-    # Add the options common to all commands.
-
-    add_common_option('-h', '--help',
-      'Get help on this command') do
-      |value, options|
-      options[:help] = true
-    end
-
-    add_common_option('-V', '--[no-]verbose',
-                      'Set the verbose level of output') do |value, options|
-      # Set us to "really verbose" so the progress meter works
-      if Gem.configuration.verbose and value then
-        Gem.configuration.verbose = 1
-      else
-        Gem.configuration.verbose = value
-      end
-    end
-
-    add_common_option('-q', '--quiet', 'Silence commands') do |value, options|
-      Gem.configuration.verbose = false
-    end
-
-    # Backtrace and config-file are added so they show up in the help
-    # commands.  Both options are actually handled before the other
-    # options get parsed.
-
-    add_common_option('--config-file FILE',
-      "Use this config file instead of default") do
-    end
-
-    add_common_option('--backtrace',
-      'Show stack backtrace on errors') do
-    end
-
-    add_common_option('--debug',
-      'Turn on Ruby debugging') do
-    end
-
-    # :stopdoc:
-    HELP = %{
-      RubyGems is a sophisticated package manager for Ruby.  This is a
-      basic help message containing pointers to more information.
-
-        Usage:
-          gem -h/--help
-          gem -v/--version
-          gem command [arguments...] [options...]
-
-        Examples:
-          gem install rake
-          gem list --local
-          gem build package.gemspec
-          gem help install
-
-        Further help:
-          gem help commands            list all 'gem' commands
-          gem help examples            show some examples of usage
-          gem help platforms           show information about platforms
-          gem help <COMMAND>           show help on COMMAND
-                                         (e.g. 'gem help install')
-        Further information:
-          http://rubygems.rubyforge.org
-    }.gsub(/^    /, "")
-
-    # :startdoc:
-
-  end # class
-
-  # This is where Commands will be placed in the namespace
-  module Commands; end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command_manager.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command_manager.rb
deleted file mode 100644
index dd9a1ae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/command_manager.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'timeout'
-require 'rubygems/command'
-require 'rubygems/user_interaction'
-
-module Gem
-
-  ####################################################################
-  # The command manager registers and installs all the individual
-  # sub-commands supported by the gem command.
-  class CommandManager
-    include UserInteraction
-    
-    # Return the authoritative instance of the command manager.
-    def self.instance
-      @command_manager ||= CommandManager.new
-    end
-    
-    # Register all the subcommands supported by the gem command.
-    def initialize
-      @commands = {}
-      register_command :build
-      register_command :cert
-      register_command :check
-      register_command :cleanup
-      register_command :contents
-      register_command :dependency
-      register_command :environment
-      register_command :fetch
-      register_command :generate_index
-      register_command :help
-      register_command :install
-      register_command :list
-      register_command :lock
-      register_command :mirror
-      register_command :outdated
-      register_command :pristine
-      register_command :query
-      register_command :rdoc
-      register_command :search
-      register_command :server
-      register_command :sources
-      register_command :specification
-      register_command :stale
-      register_command :uninstall
-      register_command :unpack
-      register_command :update
-      register_command :which
-    end
-    
-    # Register the command object.
-    def register_command(command_obj)
-      @commands[command_obj] = false
-    end
-    
-    # Return the registered command from the command name.
-    def [](command_name)
-      command_name = command_name.intern
-      return nil if @commands[command_name].nil?
-      @commands[command_name] ||= load_and_instantiate(command_name)
-    end
-    
-    # Return a list of all command names (as strings).
-    def command_names
-      @commands.keys.collect {|key| key.to_s}.sort
-    end
-    
-    # Run the config specified by +args+.
-    def run(args)
-      process_args(args)
-    rescue StandardError, Timeout::Error => ex
-      alert_error "While executing gem ... (#{ex.class})\n    #{ex.to_s}"
-      ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if
-        Gem.configuration.backtrace
-      terminate_interaction(1)
-    rescue Interrupt
-      alert_error "Interrupted"
-      terminate_interaction(1)
-    end
-
-    def process_args(args)
-      args = args.to_str.split(/\s+/) if args.respond_to?(:to_str)
-      if args.size == 0
-        say Gem::Command::HELP
-        terminate_interaction(1)
-      end 
-      case args[0]
-      when '-h', '--help'
-        say Gem::Command::HELP
-        terminate_interaction(0)
-      when '-v', '--version'
-        say Gem::RubyGemsVersion
-        terminate_interaction(0)
-      when /^-/
-        alert_error "Invalid option: #{args[0]}.  See 'gem --help'."
-        terminate_interaction(1)
-      else
-        cmd_name = args.shift.downcase
-        cmd = find_command(cmd_name)
-        cmd.invoke(*args)
-      end
-    end
-
-    def find_command(cmd_name)
-      possibilities = find_command_possibilities(cmd_name)
-      if possibilities.size > 1
-        raise "Ambiguous command #{cmd_name} matches [#{possibilities.join(', ')}]"
-      end
-      if possibilities.size < 1
-        raise "Unknown command #{cmd_name}"
-      end
-
-      self[possibilities.first]
-    end
-
-    def find_command_possibilities(cmd_name)
-      len = cmd_name.length
-      self.command_names.select { |n| cmd_name == n[0,len] }
-    end
-    
-    private
-
-    def load_and_instantiate(command_name)
-      command_name = command_name.to_s
-      retried = false
-
-      begin
-        const_name = command_name.capitalize.gsub(/_(.)/) { $1.upcase }
-        Gem::Commands.const_get("#{const_name}Command").new
-      rescue NameError
-        if retried then
-          raise
-        else
-          retried = true
-          require "rubygems/commands/#{command_name}_command"
-          retry
-        end
-      end
-    end
-  end
-end 
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/build_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/build_command.rb
deleted file mode 100644
index e1f0122..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/build_command.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/builder'
-
-class Gem::Commands::BuildCommand < Gem::Command
-
-  def initialize
-    super('build', 'Build a gem from a gemspec')
-  end
-
-  def arguments # :nodoc:
-    "GEMSPEC_FILE  gemspec file name to build a gem for"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMSPEC_FILE"
-  end
-
-  def execute
-    gemspec = get_one_gem_name
-    if File.exist?(gemspec)
-      specs = load_gemspecs(gemspec)
-      specs.each do |spec|
-        Gem::Builder.new(spec).build
-      end
-    else
-      alert_error "Gemspec file not found: #{gemspec}"
-    end
-  end
-
-  def load_gemspecs(filename)
-    if yaml?(filename)
-      result = []
-      open(filename) do |f|
-        begin
-          while not f.eof? and spec = Gem::Specification.from_yaml(f)
-            result << spec
-          end
-        rescue Gem::EndOfYAMLException => e
-          # OK
-        end
-      end
-    else
-      result = [Gem::Specification.load(filename)]
-    end
-    result
-  end
-
-  def yaml?(filename)
-    line = open(filename) { |f| line = f.gets }
-    result = line =~ %r{!ruby/object:Gem::Specification}
-    result
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb
deleted file mode 100644
index f5b6988..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/security'
-
-class Gem::Commands::CertCommand < Gem::Command
-
-  def initialize
-    super 'cert', 'Manage RubyGems certificates and signing settings'
-
-    add_option('-a', '--add CERT',
-               'Add a trusted certificate.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      Gem::Security.add_trusted_cert(cert)
-      say "Added '#{cert.subject.to_s}'"
-    end
-
-    add_option('-l', '--list',
-               'List trusted certificates.') do |value, options|
-      glob_str = File::join(Gem::Security::OPT[:trust_dir], '*.pem')
-      Dir::glob(glob_str) do |path|
-        begin
-          cert = OpenSSL::X509::Certificate.new(File.read(path))
-          # this could probably be formatted more gracefully
-          say cert.subject.to_s
-        rescue OpenSSL::X509::CertificateError
-          next
-        end
-      end
-    end
-
-    add_option('-r', '--remove STRING',
-               'Remove trusted certificates containing',
-               'STRING.') do |value, options|
-      trust_dir = Gem::Security::OPT[:trust_dir]
-      glob_str = File::join(trust_dir, '*.pem')
-
-      Dir::glob(glob_str) do |path|
-        begin
-          cert = OpenSSL::X509::Certificate.new(File.read(path))
-          if cert.subject.to_s.downcase.index(value)
-            say "Removed '#{cert.subject.to_s}'"
-            File.unlink(path)
-          end
-        rescue OpenSSL::X509::CertificateError
-          next
-        end
-      end
-    end
-
-    add_option('-b', '--build EMAIL_ADDR',
-               'Build private key and self-signed',
-               'certificate for EMAIL_ADDR.') do |value, options|
-      vals = Gem::Security.build_self_signed_cert(value)
-      File.chmod 0600, vals[:key_path]
-      say "Public Cert: #{vals[:cert_path]}"
-      say "Private Key: #{vals[:key_path]}"
-      say "Don't forget to move the key file to somewhere private..."
-    end
-
-    add_option('-C', '--certificate CERT',
-               'Certificate for --sign command.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      Gem::Security::OPT[:issuer_cert] = cert
-    end
-
-    add_option('-K', '--private-key KEY',
-               'Private key for --sign command.') do |value, options|
-      key = OpenSSL::PKey::RSA.new(File.read(value))
-      Gem::Security::OPT[:issuer_key] = key
-    end
-
-    add_option('-s', '--sign NEWCERT',
-               'Sign a certificate with my key and',
-               'certificate.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      my_cert = Gem::Security::OPT[:issuer_cert]
-      my_key = Gem::Security::OPT[:issuer_key]
-      cert = Gem::Security.sign_cert(cert, my_key, my_cert)
-      File.open(value, 'wb') { |file| file.write(cert.to_pem) }
-    end
-  end
-
-  def execute
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/check_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/check_command.rb
deleted file mode 100644
index 17c2c8f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/check_command.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/validator'
-
-class Gem::Commands::CheckCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'check', 'Check installed gems',
-          :verify => false, :alien => false
-
-    add_option(      '--verify FILE',
-               'Verify gem file against its internal',
-               'checksum') do |value, options|
-      options[:verify] = value
-    end
-
-    add_option('-a', '--alien', "Report 'unmanaged' or rogue files in the",
-               "gem repository") do |value, options|
-      options[:alien] = true
-    end
-
-    add_option('-t', '--test', "Run unit tests for gem") do |value, options|
-      options[:test] = true
-    end
-
-    add_version_option 'run tests for'
-  end
-
-  def execute
-    if options[:test]
-      version = options[:version] || Gem::Requirement.default
-      dep = Gem::Dependency.new get_one_gem_name, version
-      gem_spec = Gem::SourceIndex.from_installed_gems.search(dep).first
-      Gem::Validator.new.unit_test(gem_spec)
-    end
-
-    if options[:alien]
-      say "Performing the 'alien' operation"
-      Gem::Validator.new.alien.each do |key, val|
-        if(val.size > 0)
-          say "#{key} has #{val.size} problems"
-          val.each do |error_entry|
-            say "\t#{error_entry.path}:"
-            say "\t#{error_entry.problem}"
-            say
-          end
-        else  
-          say "#{key} is error-free"
-        end
-        say
-      end
-    end
-
-    if options[:verify]
-      gem_name = options[:verify]
-      unless gem_name
-        alert_error "Must specify a .gem file with --verify NAME"
-        return
-      end
-      unless File.exist?(gem_name)
-        alert_error "Unknown file: #{gem_name}."
-        return
-      end
-      say "Verifying gem: '#{gem_name}'"
-      begin
-        Gem::Validator.new.verify_gem_file(gem_name)
-      rescue Exception => e
-        alert_error "#{gem_name} is invalid."
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb
deleted file mode 100644
index 40dcb9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/source_index'
-require 'rubygems/dependency_list'
-
-class Gem::Commands::CleanupCommand < Gem::Command
-
-  def initialize
-    super 'cleanup',
-          'Clean up old versions of installed gems in the local repository',
-          :force => false, :test => false, :install_dir => Gem.dir
-
-    add_option('-d', '--dryrun', "") do |value, options|
-      options[:dryrun] = true
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to cleanup"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-dryrun"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [GEMNAME ...]"
-  end
-
-  def execute
-    say "Cleaning up installed gems..."
-    primary_gems = {}
-
-    Gem.source_index.each do |name, spec|
-      if primary_gems[spec.name].nil? or
-         primary_gems[spec.name].version < spec.version then
-        primary_gems[spec.name] = spec
-      end
-    end
-
-    gems_to_cleanup = []
-
-    unless options[:args].empty? then
-      options[:args].each do |gem_name|
-        specs = Gem.cache.search(/^#{gem_name}$/i)
-        specs.each do |spec|
-          gems_to_cleanup << spec
-        end
-      end
-    else
-      Gem.source_index.each do |name, spec|
-        gems_to_cleanup << spec
-      end
-    end
-
-    gems_to_cleanup = gems_to_cleanup.select { |spec|
-      primary_gems[spec.name].version != spec.version
-    }
-
-    uninstall_command = Gem::CommandManager.instance['uninstall']
-    deplist = Gem::DependencyList.new
-    gems_to_cleanup.uniq.each do |spec| deplist.add spec end
-
-    deps = deplist.strongly_connected_components.flatten.reverse
-
-    deps.each do |spec|
-      if options[:dryrun] then
-        say "Dry Run Mode: Would uninstall #{spec.full_name}"
-      else
-        say "Attempting to uninstall #{spec.full_name}"
-
-        options[:args] = [spec.name]
-        options[:version] = "= #{spec.version}"
-        options[:executables] = false
-
-        uninstaller = Gem::Uninstaller.new spec.name, options
-
-        begin
-          uninstaller.uninstall
-        rescue Gem::DependencyRemovalException,
-               Gem::GemNotInHomeException => e
-          say "Unable to uninstall #{spec.full_name}:"
-          say "\t#{e.class}: #{e.message}"
-        end
-      end
-    end
-
-    say "Clean Up Complete"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb
deleted file mode 100644
index bc75fb5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-
-class Gem::Commands::ContentsCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'contents', 'Display the contents of the installed gems',
-          :specdirs => [], :lib_only => false
-
-    add_version_option
-
-    add_option('-s', '--spec-dir a,b,c', Array,
-               "Search for gems under specific paths") do |spec_dirs, options|
-      options[:specdirs] = spec_dirs
-    end
-
-    add_option('-l', '--[no-]lib-only',
-               "Only return files in the Gem's lib_dirs") do |lib_only, options|
-      options[:lib_only] = lib_only
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to list contents for"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-lib-only"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  def execute
-    version = options[:version] || Gem::Requirement.default
-    gem = get_one_gem_name
-
-    s = options[:specdirs].map do |i|
-      [i, File.join(i, "specifications")]
-    end.flatten
-
-    path_kind = if s.empty? then
-                  s = Gem::SourceIndex.installed_spec_directories
-                  "default gem paths"
-                else
-                  "specified path"
-                end
-
-    si = Gem::SourceIndex.from_gems_in(*s)
-
-    gem_spec = si.find_name(gem, version).last
-
-    unless gem_spec then
-      say "Unable to find gem '#{gem}' in #{path_kind}"
-
-      if Gem.configuration.verbose then
-        say "\nDirectories searched:"
-        s.each { |dir| say dir }
-      end
-
-      terminate_interaction
-    end
-
-    files = options[:lib_only] ? gem_spec.lib_files : gem_spec.files
-    files.each do |f|
-      say File.join(gem_spec.full_gem_path, f)
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb
deleted file mode 100644
index 44b269b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb
+++ /dev/null
@@ -1,188 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-
-class Gem::Commands::DependencyCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'dependency',
-          'Show the dependencies of an installed gem',
-          :version => Gem::Requirement.default, :domain => :local
-
-    add_version_option
-    add_platform_option
-
-    add_option('-R', '--[no-]reverse-dependencies',
-               'Include reverse dependencies in the output') do
-      |value, options|
-      options[:reverse_dependencies] = value
-    end
-
-    add_option('-p', '--pipe',
-               "Pipe Format (name --version ver)") do |value, options|
-      options[:pipe_format] = value
-    end
-
-    add_local_remote_options
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to show dependencies for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --version '#{Gem::Requirement.default}' --no-reverse-dependencies"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  def execute
-    options[:args] << '' if options[:args].empty?
-    specs = {}
-
-    source_indexes = Hash.new do |h, source_uri|
-      h[source_uri] = Gem::SourceIndex.new
-    end
-
-    pattern = if options[:args].length == 1 and
-                 options[:args].first =~ /\A\/(.*)\/(i)?\z/m then
-                flags = $2 ? Regexp::IGNORECASE : nil
-                Regexp.new $1, flags
-              else
-                /\A#{Regexp.union(*options[:args])}/
-              end
-
-    dependency = Gem::Dependency.new pattern, options[:version]
-
-    if options[:reverse_dependencies] and remote? and not local? then
-      alert_error 'Only reverse dependencies for local gems are supported.'
-      terminate_interaction 1
-    end
-
-    if local? then
-      Gem.source_index.search(dependency).each do |spec|
-        source_indexes[:local].add_spec spec
-      end
-    end
-
-    if remote? and not options[:reverse_dependencies] then
-      fetcher = Gem::SpecFetcher.fetcher
-
-      begin
-        fetcher.find_matching(dependency).each do |spec_tuple, source_uri|
-          spec = fetcher.fetch_spec spec_tuple, URI.parse(source_uri)
-
-          source_indexes[source_uri].add_spec spec
-        end
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          specs = Gem::SourceInfoCache.search_with_source dependency, false
-
-          specs.each do |spec, source_uri|
-            source_indexes[source_uri].add_spec spec
-          end
-        end
-      end
-    end
-
-    if source_indexes.empty? then
-      patterns = options[:args].join ','
-      say "No gems found matching #{patterns} (#{options[:version]})" if
-        Gem.configuration.verbose
-
-      terminate_interaction 1
-    end
-
-    specs = {}
-
-    source_indexes.values.each do |source_index|
-      source_index.gems.each do |name, spec|
-        specs[spec.full_name] = [source_index, spec]
-      end
-    end
-
-    reverse = Hash.new { |h, k| h[k] = [] }
-
-    if options[:reverse_dependencies] then
-      specs.values.each do |_, spec|
-        reverse[spec.full_name] = find_reverse_dependencies spec
-      end
-    end
-
-    if options[:pipe_format] then
-      specs.values.sort_by { |_, spec| spec }.each do |_, spec|
-        unless spec.dependencies.empty?
-          spec.dependencies.each do |dep|
-            say "#{dep.name} --version '#{dep.version_requirements}'"
-          end
-        end
-      end
-    else
-      response = ''
-
-      specs.values.sort_by { |_, spec| spec }.each do |_, spec|
-        response << print_dependencies(spec)
-        unless reverse[spec.full_name].empty? then
-          response << "  Used by\n"
-          reverse[spec.full_name].each do |sp, dep|
-            response << "    #{sp} (#{dep})\n"
-          end
-        end
-        response << "\n"
-      end
-
-      say response
-    end
-  end
-
-  def print_dependencies(spec, level = 0)
-    response = ''
-    response << '  ' * level + "Gem #{spec.full_name}\n"
-    unless spec.dependencies.empty? then
-      spec.dependencies.each do |dep|
-        response << '  ' * level + "  #{dep}\n"
-      end
-    end
-    response
-  end
-
-  # Retuns list of [specification, dep] that are satisfied by spec.
-  def find_reverse_dependencies(spec)
-    result = []
-
-    Gem.source_index.each do |name, sp|
-      sp.dependencies.each do |dep|
-        dep = Gem::Dependency.new(*dep) unless Gem::Dependency === dep
-
-        if spec.name == dep.name and
-           dep.version_requirements.satisfied_by?(spec.version) then
-          result << [sp.full_name, dep]
-        end
-      end
-    end
-
-    result
-  end
-
-  def find_gems(name, source_index)
-    specs = {}
-
-    spec_list = source_index.search name, options[:version]
-
-    spec_list.each do |spec|
-      specs[spec.full_name] = [source_index, spec]
-    end
-
-    specs
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb
deleted file mode 100644
index e672da5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::EnvironmentCommand < Gem::Command
-
-  def initialize
-    super 'environment', 'Display information about the RubyGems environment'
-  end
-
-  def arguments # :nodoc:
-    args = <<-EOF
-          packageversion  display the package version
-          gemdir          display the path where gems are installed
-          gempath         display path used to search for gems
-          version         display the gem format version
-          remotesources   display the remote gem servers
-          <omitted>       display everything
-    EOF
-    return args.gsub(/^\s+/, '')
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The RubyGems environment can be controlled through command line arguments,
-gemrc files, environment variables and built-in defaults.
-
-Command line argument defaults and some RubyGems defaults can be set in
-~/.gemrc file for individual users and a /etc/gemrc for all users.  A gemrc
-is a YAML file with the following YAML keys:
-
-  :sources: A YAML array of remote gem repositories to install gems from
-  :verbose: Verbosity of the gem command.  false, true, and :really are the
-            levels
-  :update_sources: Enable/disable automatic updating of repository metadata
-  :backtrace: Print backtrace when RubyGems encounters an error
-  :bulk_threshold: Switch to a bulk update when this many sources are out of
-                   date (legacy setting)
-  :gempath: The paths in which to look for gems
-  gem_command: A string containing arguments for the specified gem command
-
-Example:
-
-  :verbose: false
-  install: --no-wrappers
-  update: --no-wrappers
-
-RubyGems' default local repository can be overriden with the GEM_PATH and
-GEM_HOME environment variables.  GEM_HOME sets the default repository to
-install into.  GEM_PATH allows multiple local repositories to be searched for
-gems.
-
-If you are behind a proxy server, RubyGems uses the HTTP_PROXY,
-HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables to discover the
-proxy server.
-
-If you are packaging RubyGems all of RubyGems' defaults are in
-lib/rubygems/defaults.rb.  You may override these in
-lib/rubygems/defaults/operating_system.rb
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [arg]"
-  end
-
-  def execute
-    out = ''
-    arg = options[:args][0]
-    case arg
-    when /^packageversion/ then
-      out << Gem::RubyGemsPackageVersion
-    when /^version/ then
-      out << Gem::RubyGemsVersion
-    when /^gemdir/, /^gemhome/, /^home/, /^GEM_HOME/ then
-      out << Gem.dir
-    when /^gempath/, /^path/, /^GEM_PATH/ then
-      out << Gem.path.join(File::PATH_SEPARATOR)
-    when /^remotesources/ then
-      out << Gem.sources.join("\n")
-    when nil then
-      out = "RubyGems Environment:\n"
-
-      out << "  - RUBYGEMS VERSION: #{Gem::RubyGemsVersion}\n"
-
-      out << "  - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
-      out << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-      out << ") [#{RUBY_PLATFORM}]\n"
-
-      out << "  - INSTALLATION DIRECTORY: #{Gem.dir}\n"
-
-      out << "  - RUBYGEMS PREFIX: #{Gem.prefix}\n" unless Gem.prefix.nil?
-
-      out << "  - RUBY EXECUTABLE: #{Gem.ruby}\n"
-
-      out << "  - EXECUTABLE DIRECTORY: #{Gem.bindir}\n"
-
-      out << "  - RUBYGEMS PLATFORMS:\n"
-      Gem.platforms.each do |platform|
-        out << "    - #{platform}\n"
-      end
-
-      out << "  - GEM PATHS:\n"
-      out << "     - #{Gem.dir}\n"
-
-      path = Gem.path.dup
-      path.delete Gem.dir
-      path.each do |p|
-        out << "     - #{p}\n"
-      end
-
-      out << "  - GEM CONFIGURATION:\n"
-      Gem.configuration.each do |name, value|
-        out << "     - #{name.inspect} => #{value.inspect}\n"
-      end
-
-      out << "  - REMOTE SOURCES:\n"
-      Gem.sources.each do |s|
-        out << "     - #{s}\n"
-      end
-
-    else
-      fail Gem::CommandLineError, "Unknown enviroment option [#{arg}]"
-    end
-    say out
-    true
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb
deleted file mode 100644
index 76c9924..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-
-class Gem::Commands::FetchCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'fetch', 'Download a gem and place it in the current directory'
-
-    add_bulk_threshold_option
-    add_proxy_option
-    add_source_option
-
-    add_version_option
-    add_platform_option
-  end
-
-  def arguments # :nodoc:
-    'GEMNAME       name of gem to download'
-  end
-
-  def defaults_str # :nodoc:
-    "--version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...]"
-  end
-
-  def execute
-    version = options[:version] || Gem::Requirement.default
-    all = Gem::Requirement.default
-
-    gem_names = get_all_gem_names
-
-    gem_names.each do |gem_name|
-      dep = Gem::Dependency.new gem_name, version
-
-      specs_and_sources = Gem::SpecFetcher.fetcher.fetch dep, all
-
-      specs_and_sources.sort_by { |spec,| spec.version }
-
-      spec, source_uri = specs_and_sources.last
-
-      if spec.nil? then
-        alert_error "Could not find #{gem_name} in any repository"
-        next
-      end
-
-      path = Gem::RemoteFetcher.fetcher.download spec, source_uri
-      FileUtils.mv path, "#{spec.full_name}.gem"
-
-      say "Downloaded #{spec.full_name}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb
deleted file mode 100644
index 1bd8756..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/indexer'
-
-class Gem::Commands::GenerateIndexCommand < Gem::Command
-
-  def initialize
-    super 'generate_index',
-          'Generates the index files for a gem server directory',
-          :directory => '.'
-
-    add_option '-d', '--directory=DIRNAME',
-               'repository base dir containing gems subdir' do |dir, options|
-      options[:directory] = File.expand_path dir
-    end
-  end
-
-  def defaults_str # :nodoc:
-    "--directory ."
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The generate_index command creates a set of indexes for serving gems
-statically.  The command expects a 'gems' directory under the path given to
-the --directory option.  When done, it will generate a set of files like this:
-
-  gems/                                        # .gem files you want to index
-  quick/index
-  quick/index.rz                               # quick index manifest
-  quick/<gemname>.gemspec.rz                   # legacy YAML quick index file
-  quick/Marshal.<version>/<gemname>.gemspec.rz # Marshal quick index file
-  Marshal.<version>
-  Marshal.<version>.Z # Marshal full index
-  yaml
-  yaml.Z # legacy YAML full index
-
-The .Z and .rz extension files are compressed with the inflate algorithm.  The
-Marshal version number comes from ruby's Marshal::MAJOR_VERSION and
-Marshal::MINOR_VERSION constants.  It is used to ensure compatibility.  The
-yaml indexes exist for legacy RubyGems clients and fallback in case of Marshal
-version changes.
-    EOF
-  end
-
-  def execute
-    if not File.exist?(options[:directory]) or
-       not File.directory?(options[:directory]) then
-      alert_error "unknown directory name #{directory}."
-      terminate_interaction 1
-    else
-      indexer = Gem::Indexer.new options[:directory]
-      indexer.generate_index
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/help_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/help_command.rb
deleted file mode 100644
index 0c4a4ec..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/help_command.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::HelpCommand < Gem::Command
-
-  # :stopdoc:
-  EXAMPLES = <<-EOF
-Some examples of 'gem' usage.
-
-* Install 'rake', either from local directory or remote server:
-
-    gem install rake
-
-* Install 'rake', only from remote server:
-
-    gem install rake --remote
-
-* Install 'rake' from remote server, and run unit tests,
-  and generate RDocs:
-
-    gem install --remote rake --test --rdoc --ri
-
-* Install 'rake', but only version 0.3.1, even if dependencies
-  are not met, and into a user-specific directory:
-
-    gem install rake --version 0.3.1 --force --user-install
-
-* List local gems whose name begins with 'D':
-
-    gem list D
-
-* List local and remote gems whose name contains 'log':
-
-    gem search log --both
-
-* List only remote gems whose name contains 'log':
-
-    gem search log --remote
-
-* Uninstall 'rake':
-
-    gem uninstall rake
-
-* Create a gem:
-
-    See http://rubygems.rubyforge.org/wiki/wiki.pl?CreateAGemInTenMinutes
-
-* See information about RubyGems:
-
-    gem environment
-
-* Update all gems on your system:
-
-    gem update
-  EOF
-
-  PLATFORMS = <<-'EOF'
-RubyGems platforms are composed of three parts, a CPU, an OS, and a
-version.  These values are taken from values in rbconfig.rb.  You can view
-your current platform by running `gem environment`.
-
-RubyGems matches platforms as follows:
-
-  * The CPU must match exactly, unless one of the platforms has
-    "universal" as the CPU.
-  * The OS must match exactly.
-  * The versions must match exactly unless one of the versions is nil.
-
-For commands that install, uninstall and list gems, you can override what
-RubyGems thinks your platform is with the --platform option.  The platform
-you pass must match "#{cpu}-#{os}" or "#{cpu}-#{os}-#{version}".  On mswin
-platforms, the version is the compiler version, not the OS version.  (Ruby
-compiled with VC6 uses "60" as the compiler version, VC8 uses "80".)
-
-Example platforms:
-
-  x86-freebsd        # Any FreeBSD version on an x86 CPU
-  universal-darwin-8 # Darwin 8 only gems that run on any CPU
-  x86-mswin32-80     # Windows gems compiled with VC8
-
-When building platform gems, set the platform in the gem specification to
-Gem::Platform::CURRENT.  This will correctly mark the gem with your ruby's
-platform.
-  EOF
-  # :startdoc:
-
-  def initialize
-    super 'help', "Provide help on the 'gem' command"
-  end
-
-  def arguments # :nodoc:
-    args = <<-EOF
-      commands      List all 'gem' commands
-      examples      Show examples of 'gem' usage
-      <command>     Show specific help for <command>
-    EOF
-    return args.gsub(/^\s+/, '')
-  end
-
-  def usage # :nodoc:
-    "#{program_name} ARGUMENT"
-  end
-
-  def execute
-    command_manager = Gem::CommandManager.instance
-    arg = options[:args][0]
-
-    if begins? "commands", arg then
-      out = []
-      out << "GEM commands are:"
-      out << nil
-
-      margin_width = 4
-
-      desc_width = command_manager.command_names.map { |n| n.size }.max + 4
-
-      summary_width = 80 - margin_width - desc_width
-      wrap_indent = ' ' * (margin_width + desc_width)
-      format = "#{' ' * margin_width}%-#{desc_width}s%s"
-
-      command_manager.command_names.each do |cmd_name|
-        summary = command_manager[cmd_name].summary
-        summary = wrap(summary, summary_width).split "\n"
-        out << sprintf(format, cmd_name, summary.shift)
-        until summary.empty? do
-          out << "#{wrap_indent}#{summary.shift}"
-        end
-      end
-
-      out << nil
-      out << "For help on a particular command, use 'gem help COMMAND'."
-      out << nil
-      out << "Commands may be abbreviated, so long as they are unambiguous."
-      out << "e.g. 'gem i rake' is short for 'gem install rake'."
-
-      say out.join("\n")
-
-    elsif begins? "options", arg then
-      say Gem::Command::HELP
-
-    elsif begins? "examples", arg then
-      say EXAMPLES
-
-    elsif begins? "platforms", arg then
-      say PLATFORMS
-
-    elsif options[:help] then
-      command = command_manager[options[:help]]
-      if command
-        # help with provided command
-        command.invoke("--help")
-      else
-        alert_error "Unknown command #{options[:help]}.  Try 'gem help commands'"
-      end
-
-    elsif arg then
-      possibilities = command_manager.find_command_possibilities(arg.downcase)
-      if possibilities.size == 1
-        command = command_manager[possibilities.first]
-        command.invoke("--help")
-      elsif possibilities.size > 1
-        alert_warning "Ambiguous command #{arg} (#{possibilities.join(', ')})"
-      else
-        alert_warning "Unknown command #{arg}. Try gem help commands"
-      end
-
-    else
-      say Gem::Command::HELP
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/install_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/install_command.rb
deleted file mode 100644
index 1a6eb68..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/install_command.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/doc_manager'
-require 'rubygems/install_update_options'
-require 'rubygems/dependency_installer'
-require 'rubygems/local_remote_options'
-require 'rubygems/validator'
-require 'rubygems/version_option'
-
-class Gem::Commands::InstallCommand < Gem::Command
-
-  include Gem::VersionOption
-  include Gem::LocalRemoteOptions
-  include Gem::InstallUpdateOptions
-
-  def initialize
-    defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
-      :generate_rdoc => true,
-      :generate_ri   => true,
-      :format_executable => false,
-      :test => false,
-      :version => Gem::Requirement.default,
-    })
-
-    super 'install', 'Install a gem into the local repository', defaults
-
-    add_install_update_options
-    add_local_remote_options
-    add_platform_option
-    add_version_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to install"
-  end
-
-  def defaults_str # :nodoc:
-    "--both --version '#{Gem::Requirement.default}' --rdoc --ri --no-force\n" \
-    "--no-test --install-dir #{Gem.dir}"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The install command installs local or remote gem into a gem repository.
-
-For gems with executables ruby installs a wrapper file into the executable
-directory by deault.  This can be overridden with the --no-wrappers option.
-The wrapper allows you to choose among alternate gem versions using _version_.
-
-For example `rake _0.7.3_ --version` will run rake version 0.7.3 if a newer
-version is also installed.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...] [options] -- --build-flags"
-  end
-
-  def execute
-    if options[:include_dependencies] then
-      alert "`gem install -y` is now default and will be removed"
-      alert "use --ignore-dependencies to install only the gems you list"
-    end
-
-    installed_gems = []
-
-    ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9'
-
-    install_options = {
-      :env_shebang => options[:env_shebang],
-      :domain => options[:domain],
-      :force => options[:force],
-      :format_executable => options[:format_executable],
-      :ignore_dependencies => options[:ignore_dependencies],
-      :install_dir => options[:install_dir],
-      :security_policy => options[:security_policy],
-      :wrappers => options[:wrappers],
-      :bin_dir => options[:bin_dir],
-      :development => options[:development],
-    }
-
-    exit_code = 0
-
-    get_all_gem_names.each do |gem_name|
-      begin
-        inst = Gem::DependencyInstaller.new install_options
-        inst.install gem_name, options[:version]
-
-        inst.installed_gems.each do |spec|
-          say "Successfully installed #{spec.full_name}"
-        end
-
-        installed_gems.push(*inst.installed_gems)
-      rescue Gem::InstallError => e
-        alert_error "Error installing #{gem_name}:\n\t#{e.message}"
-        exit_code |= 1
-      rescue Gem::GemNotFoundException => e
-        alert_error e.message
-        exit_code |= 2
-#      rescue => e
-#        # TODO: Fix this handle to allow the error to propagate to
-#        # the top level handler.  Examine the other errors as
-#        # well.  This implementation here looks suspicious to me --
-#        # JimWeirich (4/Jan/05)
-#        alert_error "Error installing gem #{gem_name}: #{e.message}"
-#        return
-      end
-    end
-
-    unless installed_gems.empty? then
-      gems = installed_gems.length == 1 ? 'gem' : 'gems'
-      say "#{installed_gems.length} #{gems} installed"
-    end
-
-    # NOTE: *All* of the RI documents must be generated first.
-    # For some reason, RI docs cannot be generated after any RDoc
-    # documents are generated.
-
-    if options[:generate_ri] then
-      installed_gems.each do |gem|
-        Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
-      end
-
-      Gem::DocManager.update_ri_cache
-    end
-
-    if options[:generate_rdoc] then
-      installed_gems.each do |gem|
-        Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
-      end
-    end
-
-    if options[:test] then
-      installed_gems.each do |spec|
-        gem_spec = Gem::SourceIndex.from_installed_gems.search(spec.name, spec.version.version).first
-        result = Gem::Validator.new.unit_test(gem_spec)
-        if result and not result.passed?
-          unless ask_yes_no("...keep Gem?", true) then
-            Gem::Uninstaller.new(spec.name, :version => spec.version.version).uninstall
-          end
-        end
-      end
-    end
-
-    raise Gem::SystemExitException, exit_code
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/list_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/list_command.rb
deleted file mode 100644
index f3e5da9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/list_command.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/commands/query_command'
-
-##
-# An alternate to Gem::Commands::QueryCommand that searches for gems starting
-# with the the supplied argument.
-
-class Gem::Commands::ListCommand < Gem::Commands::QueryCommand
-
-  def initialize
-    super 'list', 'Display gems whose name starts with STRING'
-
-    remove_option('--name-matches')
-  end
-
-  def arguments # :nodoc:
-    "STRING        start of gem name to look for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --no-details"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [STRING]"
-  end
-
-  def execute
-    string = get_one_optional_argument || ''
-    options[:name] = /^#{string}/i
-    super
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb
deleted file mode 100644
index 5a43978..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::LockCommand < Gem::Command
-
-  def initialize
-    super 'lock', 'Generate a lockdown list of gems',
-          :strict => false
-
-    add_option '-s', '--[no-]strict',
-               'fail if unable to satisfy a dependency' do |strict, options|
-      options[:strict] = strict
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to lock\nVERSION       version of gem to lock"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-strict"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The lock command will generate a list of +gem+ statements that will lock down
-the versions for the gem given in the command line.  It will specify exact
-versions in the requirements list to ensure that the gems loaded will always
-be consistent.  A full recursive search of all effected gems will be
-generated.
-
-Example:
-
-  gemlock rails-1.0.0 > lockdown.rb
-
-will produce in lockdown.rb:
-
-  require "rubygems"
-  gem 'rails', '= 1.0.0'
-  gem 'rake', '= 0.7.0.1'
-  gem 'activesupport', '= 1.2.5'
-  gem 'activerecord', '= 1.13.2'
-  gem 'actionpack', '= 1.11.2'
-  gem 'actionmailer', '= 1.1.5'
-  gem 'actionwebservice', '= 1.0.0'
-
-Just load lockdown.rb from your application to ensure that the current
-versions are loaded.  Make sure that lockdown.rb is loaded *before* any
-other require statements.
-
-Notice that rails 1.0.0 only requires that rake 0.6.2 or better be used.
-Rake-0.7.0.1 is the most recent version installed that satisfies that, so we
-lock it down to the exact version.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME-VERSION [GEMNAME-VERSION ...]"
-  end
-
-  def complain(message)
-    if options[:strict] then
-      raise Gem::Exception, message
-    else
-      say "# #{message}"
-    end
-  end
-
-  def execute
-    say "require 'rubygems'"
-
-    locked = {}
-
-    pending = options[:args]
-
-    until pending.empty? do
-      full_name = pending.shift
-
-      spec = Gem::SourceIndex.load_specification spec_path(full_name)
-
-      if spec.nil? then
-        complain "Could not find gem #{full_name}, try using the full name"
-        next
-      end
-
-      say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
-      locked[spec.name] = true
-
-      spec.runtime_dependencies.each do |dep|
-        next if locked[dep.name]
-        candidates = Gem.source_index.search dep
-
-        if candidates.empty? then
-          complain "Unable to satisfy '#{dep}' from currently installed gems"
-        else
-          pending << candidates.last.full_name
-        end
-      end
-    end
-  end
-
-  def spec_path(gem_full_name)
-    gemspecs = Gem.path.map do |path|
-      File.join path, "specifications", "#{gem_full_name}.gemspec"
-    end
-
-    gemspecs.find { |gemspec| File.exist? gemspec }
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb
deleted file mode 100644
index 959b8ea..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require 'yaml'
-require 'zlib'
-
-require 'rubygems/command'
-require 'open-uri'
-
-class Gem::Commands::MirrorCommand < Gem::Command
-
-  def initialize
-    super 'mirror', 'Mirror a gem repository'
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The mirror command uses the ~/.gemmirrorrc config file to mirror remote gem
-repositories to a local path. The config file is a YAML document that looks
-like this:
-
-  ---
-  - from: http://gems.example.com # source repository URI
-    to: /path/to/mirror           # destination directory
-
-Multiple sources and destinations may be specified.
-    EOF
-  end
-
-  def execute
-    config_file = File.join Gem.user_home, '.gemmirrorrc'
-
-    raise "Config file #{config_file} not found" unless File.exist? config_file
-
-    mirrors = YAML.load_file config_file
-
-    raise "Invalid config file #{config_file}" unless mirrors.respond_to? :each
-
-    mirrors.each do |mir|
-      raise "mirror missing 'from' field" unless mir.has_key? 'from'
-      raise "mirror missing 'to' field" unless mir.has_key? 'to'
-
-      get_from = mir['from']
-      save_to = File.expand_path mir['to']
-
-      raise "Directory not found: #{save_to}" unless File.exist? save_to
-      raise "Not a directory: #{save_to}" unless File.directory? save_to
-
-      gems_dir = File.join save_to, "gems"
-
-      if File.exist? gems_dir then
-        raise "Not a directory: #{gems_dir}" unless File.directory? gems_dir
-      else
-        Dir.mkdir gems_dir
-      end
-
-      sourceindex_data = ''
-
-      say "fetching: #{get_from}/Marshal.#{Gem.marshal_version}.Z"
-
-      get_from = URI.parse get_from
-
-      if get_from.scheme.nil? then
-        get_from = get_from.to_s
-      elsif get_from.scheme == 'file' then
-        # check if specified URI contains a drive letter (file:/D:/Temp)
-        get_from = get_from.to_s
-        get_from = if get_from =~ /^file:.*[a-z]:/i then
-                     get_from[6..-1]
-                   else
-                     get_from[5..-1]
-                   end
-      end
-
-      open File.join(get_from.to_s, "Marshal.#{Gem.marshal_version}.Z"), "rb" do |y|
-        sourceindex_data = Zlib::Inflate.inflate y.read
-        open File.join(save_to, "Marshal.#{Gem.marshal_version}"), "wb" do |out|
-          out.write sourceindex_data
-        end
-      end
-
-      sourceindex = Marshal.load(sourceindex_data)
-
-      progress = ui.progress_reporter sourceindex.size,
-                                      "Fetching #{sourceindex.size} gems"
-      sourceindex.each do |fullname, gem|
-        gem_file = "#{fullname}.gem"
-        gem_dest = File.join gems_dir, gem_file
-
-        unless File.exist? gem_dest then
-          begin
-            open "#{get_from}/gems/#{gem_file}", "rb" do |g|
-              contents = g.read
-              open gem_dest, "wb" do |out|
-                out.write contents
-              end
-            end
-          rescue
-            old_gf = gem_file
-            gem_file = gem_file.downcase
-            retry if old_gf != gem_file
-            alert_error $!
-          end
-        end
-
-        progress.updated gem_file
-      end
-
-      progress.done
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb
deleted file mode 100644
index 9e054f9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-
-class Gem::Commands::OutdatedCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'outdated', 'Display all gems that need updates'
-
-    add_local_remote_options
-    add_platform_option
-  end
-
-  def execute
-    locals = Gem::SourceIndex.from_installed_gems
-
-    locals.outdated.sort.each do |name|
-      local = locals.find_name(name).last
-
-      dep = Gem::Dependency.new local.name, ">= #{local.version}"
-      remotes = Gem::SpecFetcher.fetcher.fetch dep
-      remote = remotes.last.first
-
-      say "#{local.name} (#{local.version} < #{remote.version})"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb
deleted file mode 100644
index d47fe54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/format'
-require 'rubygems/installer'
-require 'rubygems/version_option'
-
-class Gem::Commands::PristineCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'pristine',
-          'Restores installed gems to pristine condition from files located in the gem cache',
-          :version => Gem::Requirement.default
-
-    add_option('--all',
-               'Restore all installed gems to pristine',
-               'condition') do |value, options|
-      options[:all] = value
-    end
-
-    add_version_option('restore to', 'pristine condition')
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       gem to restore to pristine condition (unless --all)"
-  end
-
-  def defaults_str # :nodoc:
-    "--all"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The pristine command compares the installed gems with the contents of the
-cached gem and restores any files that don't match the cached gem's copy.
-
-If you have made modifications to your installed gems, the pristine command
-will revert them.  After all the gem's files have been checked all bin stubs
-for the gem are regenerated.
-
-If the cached gem cannot be found, you will need to use `gem install` to
-revert the gem.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [args]"
-  end
-
-  def execute
-    gem_name = nil
-
-    specs = if options[:all] then
-              Gem::SourceIndex.from_installed_gems.map do |name, spec|
-                spec
-              end
-            else
-              gem_name = get_one_gem_name
-              Gem::SourceIndex.from_installed_gems.find_name(gem_name,
-                                                          options[:version])
-            end
-
-    if specs.empty? then
-      raise Gem::Exception,
-            "Failed to find gem #{gem_name} #{options[:version]}"
-    end
-
-    install_dir = Gem.dir # TODO use installer option
-
-    raise Gem::FilePermissionError.new(install_dir) unless
-      File.writable?(install_dir)
-
-    say "Restoring gem(s) to pristine condition..."
-
-    specs.each do |spec|
-      gem = Dir[File.join(Gem.dir, 'cache', "#{spec.full_name}.gem")].first
-
-      if gem.nil? then
-        alert_error "Cached gem for #{spec.full_name} not found, use `gem install` to restore"
-        next
-      end
-
-      # TODO use installer options
-      installer = Gem::Installer.new gem, :wrappers => true, :force => true
-      installer.install
-
-      say "Restored #{spec.full_name}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/query_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/query_command.rb
deleted file mode 100644
index 29fe8ac..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/query_command.rb
+++ /dev/null
@@ -1,233 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-
-class Gem::Commands::QueryCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize(name = 'query',
-                 summary = 'Query gem information in local or remote repositories')
-    super name, summary,
-         :name => //, :domain => :local, :details => false, :versions => true,
-         :installed => false, :version => Gem::Requirement.default
-
-    add_option('-i', '--[no-]installed',
-               'Check for installed gem') do |value, options|
-      options[:installed] = value
-    end
-
-    add_version_option
-
-    add_option('-n', '--name-matches REGEXP',
-               'Name of gem(s) to query on matches the',
-               'provided REGEXP') do |value, options|
-      options[:name] = /#{value}/i
-    end
-
-    add_option('-d', '--[no-]details',
-               'Display detailed information of gem(s)') do |value, options|
-      options[:details] = value
-    end
-
-    add_option(      '--[no-]versions',
-               'Display only gem names') do |value, options|
-      options[:versions] = value
-      options[:details] = false unless value
-    end
-
-    add_option('-a', '--all',
-               'Display all gem versions') do |value, options|
-      options[:all] = value
-    end
-
-    add_local_remote_options
-  end
-
-  def defaults_str # :nodoc:
-    "--local --name-matches // --no-details --versions --no-installed"
-  end
-
-  def execute
-    exit_code = 0
-
-    name = options[:name]
-
-    if options[:installed] then
-      if name.source.empty? then
-        alert_error "You must specify a gem name"
-        exit_code |= 4
-      elsif installed? name, options[:version] then
-        say "true"
-      else
-        say "false"
-        exit_code |= 1
-      end
-
-      raise Gem::SystemExitException, exit_code
-    end
-
-    dep = Gem::Dependency.new name, Gem::Requirement.default
-
-    if local? then
-      if ui.outs.tty? or both? then
-        say
-        say "*** LOCAL GEMS ***"
-        say
-      end
-
-      specs = Gem.source_index.search dep
-
-      spec_tuples = specs.map do |spec|
-        [[spec.name, spec.version, spec.original_platform, spec], :local]
-      end
-
-      output_query_results spec_tuples
-    end
-
-    if remote? then
-      if ui.outs.tty? or both? then
-        say
-        say "*** REMOTE GEMS ***"
-        say
-      end
-
-      all = options[:all]
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        spec_tuples = fetcher.find_matching dep, all, false
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          dep.name = '' if dep.name == //
-
-          specs = Gem::SourceInfoCache.search_with_source dep, false, all
-
-          spec_tuples = specs.map do |spec, source_uri|
-            [[spec.name, spec.version, spec.original_platform, spec],
-             source_uri]
-          end
-        end
-      end
-
-      output_query_results spec_tuples
-    end
-  end
-
-  private
-
-  ##
-  # Check if gem +name+ version +version+ is installed.
-
-  def installed?(name, version = Gem::Requirement.default)
-    dep = Gem::Dependency.new name, version
-    !Gem.source_index.search(dep).empty?
-  end
-
-  def output_query_results(spec_tuples)
-    output = []
-    versions = Hash.new { |h,name| h[name] = [] }
-
-    spec_tuples.each do |spec_tuple, source_uri|
-      versions[spec_tuple.first] << [spec_tuple, source_uri]
-    end
-
-    versions = versions.sort_by do |(name,_),_|
-      name.downcase
-    end
-
-    versions.each do |gem_name, matching_tuples|
-      matching_tuples = matching_tuples.sort_by do |(name, version,_),_|
-        version
-      end.reverse
-
-      seen = {}
-
-      matching_tuples.delete_if do |(name, version,_),_|
-        if seen[version] then
-          true
-        else
-          seen[version] = true
-          false
-        end
-      end
-
-      entry = gem_name.dup
-
-      if options[:versions] then
-        versions = matching_tuples.map { |(name, version,_),_| version }.uniq
-        entry << " (#{versions.join ', '})"
-      end
-
-      if options[:details] then
-        detail_tuple = matching_tuples.first
-
-        spec = if detail_tuple.first.length == 4 then
-                 detail_tuple.first.last
-               else
-                 uri = URI.parse detail_tuple.last
-                 Gem::SpecFetcher.fetcher.fetch_spec detail_tuple.first, uri
-               end
-
-        entry << "\n"
-        authors = "Author#{spec.authors.length > 1 ? 's' : ''}: "
-        authors << spec.authors.join(', ')
-        entry << format_text(authors, 68, 4)
-
-        if spec.rubyforge_project and not spec.rubyforge_project.empty? then
-          rubyforge = "Rubyforge: http://rubyforge.org/projects/#{spec.rubyforge_project}"
-          entry << "\n" << format_text(rubyforge, 68, 4)
-        end
-
-        if spec.homepage and not spec.homepage.empty? then
-          entry << "\n" << format_text("Homepage: #{spec.homepage}", 68, 4)
-        end
-
-        if spec.loaded_from then
-          if matching_tuples.length == 1 then
-            loaded_from = File.dirname File.dirname(spec.loaded_from)
-            entry << "\n" << "    Installed at: #{loaded_from}"
-          else
-            label = 'Installed at'
-            matching_tuples.each do |(_,version,_,s),|
-              loaded_from = File.dirname File.dirname(s.loaded_from)
-              entry << "\n" << "    #{label} (#{version}): #{loaded_from}"
-              label = ' ' * label.length
-            end
-          end
-        end
-
-        entry << "\n\n" << format_text(spec.summary, 68, 4)
-      end
-      output << entry
-    end
-
-    say output.join(options[:details] ? "\n\n" : "\n")
-  end
-
-  ##
-  # Used for wrapping and indenting text
-
-  def format_text(text, wrap, indent=0)
-    result = []
-    work = text.dup
-
-    while work.length > wrap
-      if work =~ /^(.{0,#{wrap}})[ \n]/o then
-        result << $1
-        work.slice!(0, $&.length)
-      else
-        result << work.slice!(0, wrap)
-      end
-    end
-
-    result << work if work.length.nonzero?
-    result.join("\n").gsub(/^/, " " * indent)
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb
deleted file mode 100644
index 82180d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/doc_manager'
-
-module Gem
-  module Commands
-    class RdocCommand < Command
-      include VersionOption
-
-      def initialize
-        super('rdoc',
-          'Generates RDoc for pre-installed gems',
-          {
-            :version => Gem::Requirement.default,
-            :include_rdoc => true,
-            :include_ri => true,
-          })
-        add_option('--all',
-                   'Generate RDoc/RI documentation for all',
-                   'installed gems') do |value, options|
-          options[:all] = value
-        end
-        add_option('--[no-]rdoc', 
-          'Include RDoc generated documents') do
-          |value, options|
-          options[:include_rdoc] = value
-        end
-        add_option('--[no-]ri', 
-          'Include RI generated documents'
-          ) do |value, options|
-          options[:include_ri] = value
-        end
-        add_version_option
-      end
-
-      def arguments # :nodoc:
-        "GEMNAME       gem to generate documentation for (unless --all)"
-      end
-
-      def defaults_str # :nodoc:
-        "--version '#{Gem::Requirement.default}' --rdoc --ri"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} [args]"
-      end
-
-      def execute
-        if options[:all]
-          specs = Gem::SourceIndex.from_installed_gems.collect { |name, spec|
-            spec
-          }
-        else
-          gem_name = get_one_gem_name
-          specs = Gem::SourceIndex.from_installed_gems.search(
-            gem_name, options[:version])
-        end
-
-        if specs.empty?
-          fail "Failed to find gem #{gem_name} to generate RDoc for #{options[:version]}"
-        end
-
-        if options[:include_ri]
-          specs.each do |spec|
-            Gem::DocManager.new(spec).generate_ri
-          end
-
-          Gem::DocManager.update_ri_cache
-        end
-
-        if options[:include_rdoc]
-          specs.each do |spec|
-            Gem::DocManager.new(spec).generate_rdoc
-          end
-        end
-
-        true
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/search_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/search_command.rb
deleted file mode 100644
index 96da19c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/search_command.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/commands/query_command'
-
-module Gem
-  module Commands
-
-    class SearchCommand < QueryCommand
-
-      def initialize
-        super(
-          'search',
-          'Display all gems whose name contains STRING'
-        )
-        remove_option('--name-matches')
-      end
-
-      def arguments # :nodoc:
-        "STRING        fragment of gem name to search for"
-      end
-
-      def defaults_str # :nodoc:
-        "--local --no-details"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} [STRING]"
-      end
-
-      def execute
-        string = get_one_optional_argument
-        options[:name] = /#{string}/i
-        super
-      end
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/server_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/server_command.rb
deleted file mode 100644
index 992ae1c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/server_command.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/server'
-
-class Gem::Commands::ServerCommand < Gem::Command
-
-  def initialize
-    super 'server', 'Documentation and gem repository HTTP server',
-          :port => 8808, :gemdir => Gem.dir, :daemon => false
-
-    add_option '-p', '--port=PORT', Integer,
-               'port to listen on' do |port, options|
-      options[:port] = port
-    end
-
-    add_option '-d', '--dir=GEMDIR',
-               'directory from which to serve gems' do |gemdir, options|
-      options[:gemdir] = File.expand_path gemdir
-    end
-
-    add_option '--[no-]daemon', 'run as a daemon' do |daemon, options|
-      options[:daemon] = daemon
-    end
-  end
-
-  def defaults_str # :nodoc:
-    "--port 8808 --dir #{Gem.dir} --no-daemon"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The server command starts up a web server that hosts the RDoc for your
-installed gems and can operate as a server for installation of gems on other
-machines.
-
-The cache files for installed gems must exist to use the server as a source
-for gem installation.
-
-To install gems from a running server, use `gem install GEMNAME --source
-http://gem_server_host:8808`
-    EOF
-  end
-
-  def execute
-    Gem::Server.run options
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb
deleted file mode 100644
index 9aabb77..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/remote_fetcher'
-require 'rubygems/source_info_cache'
-require 'rubygems/spec_fetcher'
-
-class Gem::Commands::SourcesCommand < Gem::Command
-
-  def initialize
-    super 'sources',
-          'Manage the sources and cache file RubyGems uses to search for gems'
-
-    add_option '-a', '--add SOURCE_URI', 'Add source' do |value, options|
-      options[:add] = value
-    end
-
-    add_option '-l', '--list', 'List sources' do |value, options|
-      options[:list] = value
-    end
-
-    add_option '-r', '--remove SOURCE_URI', 'Remove source' do |value, options|
-      options[:remove] = value
-    end
-
-    add_option '-c', '--clear-all',
-               'Remove all sources (clear the cache)' do |value, options|
-      options[:clear_all] = value
-    end
-
-    add_option '-u', '--update', 'Update source cache' do |value, options|
-      options[:update] = value
-    end
-  end
-
-  def defaults_str
-    '--list'
-  end
-
-  def execute
-    options[:list] = !(options[:add] ||
-                       options[:clear_all] ||
-                       options[:remove] ||
-                       options[:update])
-
-    if options[:clear_all] then
-      path = Gem::SpecFetcher.fetcher.dir
-      FileUtils.rm_rf path
-
-      if not File.exist?(path) then
-        say "*** Removed specs cache ***"
-      elsif not File.writable?(path) then
-        say "*** Unable to remove source cache (write protected) ***"
-      else
-        say "*** Unable to remove source cache ***"
-      end
-
-      sic = Gem::SourceInfoCache
-      remove_cache_file 'user',          sic.user_cache_file
-      remove_cache_file 'latest user',   sic.latest_user_cache_file
-      remove_cache_file 'system',        sic.system_cache_file
-      remove_cache_file 'latest system', sic.latest_system_cache_file
-    end
-
-    if options[:add] then
-      source_uri = options[:add]
-      uri = URI.parse source_uri
-
-      begin
-        Gem::SpecFetcher.fetcher.load_specs uri, 'specs'
-        Gem.sources << source_uri
-        Gem.configuration.write
-
-        say "#{source_uri} added to sources"
-      rescue URI::Error, ArgumentError
-        say "#{source_uri} is not a URI"
-      rescue Gem::RemoteFetcher::FetchError => e
-        yaml_uri = uri + 'yaml'
-        gem_repo = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri rescue false
-
-        if e.uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ and
-           gem_repo then
-
-          alert_warning <<-EOF
-RubyGems 1.2+ index not found for:
-\t#{source_uri}
-
-Will cause RubyGems to revert to legacy indexes, degrading performance.
-          EOF
-
-          say "#{source_uri} added to sources"
-        else
-          say "Error fetching #{source_uri}:\n\t#{e.message}"
-        end
-      end
-    end
-
-    if options[:remove] then
-      source_uri = options[:remove]
-
-      unless Gem.sources.include? source_uri then
-        say "source #{source_uri} not present in cache"
-      else
-        Gem.sources.delete source_uri
-        Gem.configuration.write
-
-        say "#{source_uri} removed from sources"
-      end
-    end
-
-    if options[:update] then
-      fetcher = Gem::SpecFetcher.fetcher
-
-      if fetcher.legacy_repos.empty? then
-        Gem.sources.each do |update_uri|
-          update_uri = URI.parse update_uri
-          fetcher.load_specs update_uri, 'specs'
-          fetcher.load_specs update_uri, 'latest_specs'
-        end
-      else
-        Gem::SourceInfoCache.cache true
-        Gem::SourceInfoCache.cache.flush
-      end
-
-      say "source cache successfully updated"
-    end
-
-    if options[:list] then
-      say "*** CURRENT SOURCES ***"
-      say
-
-      Gem.sources.each do |source|
-        say source
-      end
-    end
-  end
-
-  private
-
-  def remove_cache_file(desc, path)
-    FileUtils.rm_rf path
-
-    if not File.exist?(path) then
-      say "*** Removed #{desc} source cache ***"
-    elsif not File.writable?(path) then
-      say "*** Unable to remove #{desc} source cache (write protected) ***"
-    else
-      say "*** Unable to remove #{desc} source cache ***"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb
deleted file mode 100644
index 5aaf6d1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'yaml'
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-require 'rubygems/format'
-
-class Gem::Commands::SpecificationCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'specification', 'Display gem specification (in yaml)',
-          :domain => :local, :version => Gem::Requirement.default
-
-    add_version_option('examine')
-    add_platform_option
-
-    add_option('--all', 'Output specifications for all versions of',
-               'the gem') do |value, options|
-      options[:all] = true
-    end
-
-    add_local_remote_options
-  end
-
-  def arguments # :nodoc:
-    "GEMFILE       name of gem to show the gemspec for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [GEMFILE]"
-  end
-
-  def execute
-    specs = []
-    gem = get_one_gem_name
-    dep = Gem::Dependency.new gem, options[:version]
-
-    if local? then
-      if File.exist? gem then
-        specs << Gem::Format.from_file_by_path(gem).spec rescue nil
-      end
-
-      if specs.empty? then
-        specs.push(*Gem.source_index.search(dep))
-      end
-    end
-
-    if remote? then
-      found = Gem::SpecFetcher.fetcher.fetch dep
-
-      specs.push(*found.map { |spec,| spec })
-    end
-
-    if specs.empty? then
-      alert_error "Unknown gem '#{gem}'"
-      terminate_interaction 1
-    end
-
-    output = lambda { |s| say s.to_yaml; say "\n" }
-
-    if options[:all] then
-      specs.each(&output)
-    else
-      spec = specs.sort_by { |s| s.version }.last
-      output[spec]
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb
deleted file mode 100644
index 78cbdcc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::StaleCommand < Gem::Command
-  def initialize
-    super('stale', 'List gems along with access times')
-  end
-
-  def usage # :nodoc:
-    "#{program_name}"
-  end
-
-  def execute
-    gem_to_atime = {}
-    Gem.source_index.each do |name, spec|
-      Dir["#{spec.full_gem_path}/**/*.*"].each do |file|
-        next if File.directory?(file)
-        stat = File.stat(file)
-        gem_to_atime[name] ||= stat.atime
-        gem_to_atime[name] = stat.atime if gem_to_atime[name] < stat.atime
-      end
-    end
-
-    gem_to_atime.sort_by { |_, atime| atime }.each do |name, atime|
-      say "#{name} at #{atime.strftime '%c'}"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb
deleted file mode 100644
index 3d6e238..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/uninstaller'
-
-module Gem
-  module Commands
-    class UninstallCommand < Command
-
-      include VersionOption
-
-      def initialize
-        super 'uninstall', 'Uninstall gems from the local repository',
-              :version => Gem::Requirement.default
-
-        add_option('-a', '--[no-]all',
-          'Uninstall all matching versions'
-          ) do |value, options|
-          options[:all] = value
-        end
-
-        add_option('-I', '--[no-]ignore-dependencies',
-                   'Ignore dependency requirements while',
-                   'uninstalling') do |value, options|
-          options[:ignore] = value
-        end
-
-        add_option('-x', '--[no-]executables',
-                     'Uninstall applicable executables without',
-                     'confirmation') do |value, options|
-          options[:executables] = value
-        end
-
-        add_option('-i', '--install-dir DIR',
-                   'Directory to uninstall gem from') do |value, options|
-          options[:install_dir] = File.expand_path(value)
-        end
-
-        add_option('-n', '--bindir DIR',
-                   'Directory to remove binaries from') do |value, options|
-          options[:bin_dir] = File.expand_path(value)
-        end
-
-        add_version_option
-        add_platform_option
-      end
-
-      def arguments # :nodoc:
-        "GEMNAME       name of gem to uninstall"
-      end
-
-      def defaults_str # :nodoc:
-        "--version '#{Gem::Requirement.default}' --no-force " \
-        "--install-dir #{Gem.dir}"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} GEMNAME [GEMNAME ...]"
-      end
-
-      def execute
-        get_all_gem_names.each do |gem_name|
-          begin
-            Gem::Uninstaller.new(gem_name, options).uninstall
-          rescue Gem::GemNotInHomeException => e
-            spec = e.spec
-            alert("In order to remove #{spec.name}, please execute:\n" \
-                  "\tgem uninstall #{spec.name} --install-dir=#{spec.installation_path}")
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb
deleted file mode 100644
index ab2494b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/installer'
-require 'rubygems/version_option'
-
-class Gem::Commands::UnpackCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'unpack', 'Unpack an installed gem to the current directory',
-          :version => Gem::Requirement.default,
-          :target  => Dir.pwd
-
-    add_option('--target', 'target directory for unpacking') do |value, options|
-      options[:target] = value
-    end
-
-    add_version_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to unpack"
-  end
-
-  def defaults_str # :nodoc:
-    "--version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  #--
-  # TODO: allow, e.g., 'gem unpack rake-0.3.1'.  Find a general solution for
-  # this, so that it works for uninstall as well.  (And check other commands
-  # at the same time.)
-  def execute
-    gemname = get_one_gem_name
-    path = get_path(gemname, options[:version])
-
-    if path then
-      basename = File.basename(path).sub(/\.gem$/, '')
-      target_dir = File.expand_path File.join(options[:target], basename)
-      FileUtils.mkdir_p target_dir
-      Gem::Installer.new(path, :unpack => true).unpack target_dir
-      say "Unpacked gem: '#{target_dir}'"
-    else
-      alert_error "Gem '#{gemname}' not installed."
-    end
-  end
-
-  # Return the full path to the cached gem file matching the given
-  # name and version requirement.  Returns 'nil' if no match.
-  #
-  # Example:
-  #
-  #   get_path('rake', '> 0.4')   # -> '/usr/lib/ruby/gems/1.8/cache/rake-0.4.2.gem'
-  #   get_path('rake', '< 0.1')   # -> nil
-  #   get_path('rak')             # -> nil (exact name required)
-  #--
-  # TODO: This should be refactored so that it's a general service. I don't
-  # think any of our existing classes are the right place though.  Just maybe
-  # 'Cache'?
-  #
-  # TODO: It just uses Gem.dir for now.  What's an easy way to get the list of
-  # source directories?
-  def get_path(gemname, version_req)
-    return gemname if gemname =~ /\.gem$/i
-
-    specs = Gem::source_index.find_name gemname, version_req
-
-    selected = specs.sort_by { |s| s.version }.last
-
-    return nil if selected.nil?
-
-    # We expect to find (basename).gem in the 'cache' directory.
-    # Furthermore, the name match must be exact (ignoring case).
-    if gemname =~ /^#{selected.name}$/i
-      filename = selected.full_name + '.gem'
-      path = nil
-
-      Gem.path.find do |gem_dir|
-        path = File.join gem_dir, 'cache', filename
-        File.exist? path
-      end
-
-      path
-    else
-      nil
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/update_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/update_command.rb
deleted file mode 100644
index 28d3a5d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/update_command.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/command_manager'
-require 'rubygems/install_update_options'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-require 'rubygems/commands/install_command'
-
-class Gem::Commands::UpdateCommand < Gem::Command
-
-  include Gem::InstallUpdateOptions
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'update',
-          'Update the named gems (or all installed gems) in the local repository',
-      :generate_rdoc => true,
-      :generate_ri => true,
-      :force => false,
-      :test => false
-
-    add_install_update_options
-
-    add_option('--system',
-               'Update the RubyGems system software') do |value, options|
-      options[:system] = value
-    end
-
-    add_local_remote_options
-
-    add_platform_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to update"
-  end
-
-  def defaults_str # :nodoc:
-    "--rdoc --ri --no-force --no-test --install-dir #{Gem.dir}"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...]"
-  end
-
-  def execute
-    hig = {}
-
-    if options[:system] then
-      say "Updating RubyGems"
-
-      unless options[:args].empty? then
-        fail "No gem names are allowed with the --system option"
-      end
-
-      rubygems_update = Gem::Specification.new
-      rubygems_update.name = 'rubygems-update'
-      rubygems_update.version = Gem::Version.new Gem::RubyGemsVersion
-      hig['rubygems-update'] = rubygems_update
-
-      options[:user_install] = false
-    else
-      say "Updating installed gems"
-
-      hig = {} # highest installed gems
-
-      Gem.source_index.each do |name, spec|
-        if hig[spec.name].nil? or hig[spec.name].version < spec.version then
-          hig[spec.name] = spec
-        end
-      end
-    end
-
-    gems_to_update = which_to_update hig, options[:args]
-
-    updated = []
-
-    installer = Gem::DependencyInstaller.new options
-
-    gems_to_update.uniq.sort.each do |name|
-      next if updated.any? { |spec| spec.name == name }
-
-      say "Updating #{name}"
-      installer.install name
-
-      installer.installed_gems.each do |spec|
-        updated << spec
-        say "Successfully installed #{spec.full_name}"
-      end
-    end
-
-    if gems_to_update.include? "rubygems-update" then
-      Gem.source_index.refresh!
-
-      update_gems = Gem.source_index.search 'rubygems-update'
-
-      latest_update_gem = update_gems.sort_by { |s| s.version }.last
-
-      say "Updating RubyGems to #{latest_update_gem.version}"
-      installed = do_rubygems_update latest_update_gem.version
-
-      say "RubyGems system software updated" if installed
-    else
-      if updated.empty? then
-        say "Nothing to update"
-      else
-        say "Gems updated: #{updated.map { |spec| spec.name }.join ', '}"
-      end
-    end
-  end
-
-  ##
-  # Update the RubyGems software to +version+.
-
-  def do_rubygems_update(version)
-    args = []
-    args.push '--prefix', Gem.prefix unless Gem.prefix.nil?
-    args << '--no-rdoc' unless options[:generate_rdoc]
-    args << '--no-ri' unless options[:generate_ri]
-    args << '--no-format-executable' if options[:no_format_executable]
-
-    update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}"
-
-    Dir.chdir update_dir do
-      say "Installing RubyGems #{version}"
-      setup_cmd = "#{Gem.ruby} setup.rb #{args.join ' '}"
-
-      # Make sure old rubygems isn't loaded
-      old = ENV["RUBYOPT"]
-      ENV.delete("RUBYOPT")
-      system setup_cmd
-      ENV["RUBYOPT"] = old if old
-    end
-  end
-
-  def which_to_update(highest_installed_gems, gem_names)
-    result = []
-
-    highest_installed_gems.each do |l_name, l_spec|
-      next if not gem_names.empty? and
-              gem_names.all? { |name| /#{name}/ !~ l_spec.name }
-
-      dependency = Gem::Dependency.new l_spec.name, "> #{l_spec.version}"
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        spec_tuples = fetcher.find_matching dependency
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          dependency.name = '' if dependency.name == //
-
-          specs = Gem::SourceInfoCache.search_with_source dependency
-
-          spec_tuples = specs.map do |spec, source_uri|
-            [[spec.name, spec.version, spec.original_platform], source_uri]
-          end
-        end
-      end
-
-      matching_gems = spec_tuples.select do |(name, version, platform),|
-        name == l_name and Gem::Platform.match platform
-      end
-
-      highest_remote_gem = matching_gems.sort_by do |(name, version),|
-        version
-      end.last
-
-      if highest_remote_gem and
-         l_spec.version < highest_remote_gem.first[1] then
-        result << l_name
-      end
-    end
-
-    result
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/which_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/which_command.rb
deleted file mode 100644
index 2267e44..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/commands/which_command.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/gem_path_searcher'
-
-class Gem::Commands::WhichCommand < Gem::Command
-
-  EXT = %w[.rb .rbw .so .dll .bundle] # HACK
-
-  def initialize
-    super 'which', 'Find the location of a library file you can require',
-          :search_gems_first => false, :show_all => false
-
-    add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
-      options[:show_all] = show_all
-    end
-
-    add_option '-g', '--[no-]gems-first',
-               'search gems before non-gems' do |gems_first, options|
-      options[:search_gems_first] = gems_first
-    end
-  end
-
-  def arguments # :nodoc:
-    "FILE          name of file to find"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-gems-first --no-all"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} FILE [FILE ...]"
-  end
-
-  def execute
-    searcher = Gem::GemPathSearcher.new
-
-    options[:args].each do |arg|
-      dirs = $LOAD_PATH
-      spec = searcher.find arg
-
-      if spec then
-        if options[:search_gems_first] then
-          dirs = gem_paths(spec) + $LOAD_PATH
-        else
-          dirs = $LOAD_PATH + gem_paths(spec)
-        end
-
-        say "(checking gem #{spec.full_name} for #{arg})" if
-          Gem.configuration.verbose
-      end
-
-      paths = find_paths arg, dirs
-
-      if paths.empty? then
-        say "Can't find ruby library file or shared library #{arg}"
-      else
-        say paths
-      end
-    end
-  end
-
-  def find_paths(package_name, dirs)
-    result = []
-
-    dirs.each do |dir|
-      EXT.each do |ext|
-        full_path = File.join dir, "#{package_name}#{ext}"
-        if File.exist? full_path then
-          result << full_path
-          return result unless options[:show_all]
-        end
-      end
-    end
-
-    result
-  end
-
-  def gem_paths(spec)
-    spec.require_paths.collect { |d| File.join spec.full_gem_path, d }
-  end
-
-  def usage # :nodoc:
-    "#{program_name} FILE [...]"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/config_file.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/config_file.rb
deleted file mode 100644
index 276a5c1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/config_file.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'yaml'
-require 'rubygems'
-
-# Store the gem command options specified in the configuration file.  The
-# config file object acts much like a hash.
-
-class Gem::ConfigFile
-
-  DEFAULT_BACKTRACE = false
-  DEFAULT_BENCHMARK = false
-  DEFAULT_BULK_THRESHOLD = 1000
-  DEFAULT_VERBOSITY = true
-  DEFAULT_UPDATE_SOURCES = true
-
-  ##
-  # For Ruby packagers to set configuration defaults.  Set in
-  # rubygems/defaults/operating_system.rb
-
-  OPERATING_SYSTEM_DEFAULTS = {}
-
-  ##
-  # For Ruby implementers to set configuration defaults.  Set in
-  # rubygems/defaults/#{RUBY_ENGINE}.rb
-
-  PLATFORM_DEFAULTS = {}
-
-  system_config_path = 
-    begin
-      require 'Win32API'
-
-      CSIDL_COMMON_APPDATA = 0x0023
-      path = 0.chr * 260
-      SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'LLLLP', 'L'
-      SHGetFolderPath.call 0, CSIDL_COMMON_APPDATA, 0, 1, path
-
-      path.strip
-    rescue LoadError
-      '/etc'
-    end
-
-  SYSTEM_WIDE_CONFIG_FILE = File.join system_config_path, 'gemrc'
-  
-  # List of arguments supplied to the config file object.
-  attr_reader :args
-
-  # Where to look for gems
-  attr_accessor :path
-
-  attr_accessor :home
-
-  # True if we print backtraces on errors.
-  attr_writer :backtrace
-
-  # True if we are benchmarking this run.
-  attr_accessor :benchmark
-
-  # Bulk threshold value.  If the number of missing gems are above
-  # this threshold value, then a bulk download technique is used.
-  attr_accessor :bulk_threshold
-
-  # Verbose level of output:
-  # * false -- No output
-  # * true -- Normal output
-  # * :loud -- Extra output
-  attr_accessor :verbose
-
-  # True if we want to update the SourceInfoCache every time, false otherwise
-  attr_accessor :update_sources
-
-  # Create the config file object.  +args+ is the list of arguments
-  # from the command line.
-  #
-  # The following command line options are handled early here rather
-  # than later at the time most command options are processed.
-  #
-  # * --config-file and --config-file==NAME -- Obviously these need
-  #   to be handled by the ConfigFile object to ensure we get the
-  #   right config file.
-  #
-  # * --backtrace -- Backtrace needs to be turned on early so that
-  #   errors before normal option parsing can be properly handled.
-  #
-  # * --debug -- Enable Ruby level debug messages.  Handled early
-  #   for the same reason as --backtrace.
-  #
-  def initialize(arg_list)
-    @config_file_name = nil
-    need_config_file_name = false
-
-    arg_list = arg_list.map do |arg|
-      if need_config_file_name then
-        @config_file_name = arg
-        need_config_file_name = false
-        nil
-      elsif arg =~ /^--config-file=(.*)/ then
-        @config_file_name = $1
-        nil
-      elsif arg =~ /^--config-file$/ then
-        need_config_file_name = true
-        nil
-      else
-        arg
-      end
-    end.compact
-
-    @backtrace = DEFAULT_BACKTRACE
-    @benchmark = DEFAULT_BENCHMARK
-    @bulk_threshold = DEFAULT_BULK_THRESHOLD
-    @verbose = DEFAULT_VERBOSITY
-    @update_sources = DEFAULT_UPDATE_SOURCES
-
-    operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
-    platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
-    system_config = load_file SYSTEM_WIDE_CONFIG_FILE
-    user_config = load_file config_file_name.dup.untaint
-
-    @hash = operating_system_config.merge platform_config
-    @hash = @hash.merge system_config
-    @hash = @hash.merge user_config
-
-    # HACK these override command-line args, which is bad
-    @backtrace = @hash[:backtrace] if @hash.key? :backtrace
-    @benchmark = @hash[:benchmark] if @hash.key? :benchmark
-    @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
-    Gem.sources = @hash[:sources] if @hash.key? :sources
-    @verbose = @hash[:verbose] if @hash.key? :verbose
-    @update_sources = @hash[:update_sources] if @hash.key? :update_sources
-    @path = @hash[:gempath] if @hash.key? :gempath
-    @home = @hash[:gemhome] if @hash.key? :gemhome
-
-    handle_arguments arg_list
-  end
-
-  def load_file(filename)
-    begin
-      YAML.load(File.read(filename)) if filename and File.exist?(filename)
-    rescue ArgumentError
-      warn "Failed to load #{config_file_name}"
-    rescue Errno::EACCES
-      warn "Failed to load #{config_file_name} due to permissions problem."
-    end or {}
-  end
-
-  # True if the backtrace option has been specified, or debug is on.
-  def backtrace
-    @backtrace or $DEBUG
-  end
-
-  # The name of the configuration file.
-  def config_file_name
-    @config_file_name || Gem.config_file
-  end
-
-  # Delegates to @hash
-  def each(&block)
-    hash = @hash.dup
-    hash.delete :update_sources
-    hash.delete :verbose
-    hash.delete :benchmark
-    hash.delete :backtrace
-    hash.delete :bulk_threshold
-
-    yield :update_sources, @update_sources
-    yield :verbose, @verbose
-    yield :benchmark, @benchmark
-    yield :backtrace, @backtrace
-    yield :bulk_threshold, @bulk_threshold
-
-    yield 'config_file_name', @config_file_name if @config_file_name
-
-    hash.each(&block)
-  end
-
-  # Handle the command arguments.
-  def handle_arguments(arg_list)
-    @args = []
-
-    arg_list.each do |arg|
-      case arg
-      when /^--(backtrace|traceback)$/ then
-        @backtrace = true
-      when /^--bench(mark)?$/ then
-        @benchmark = true
-      when /^--debug$/ then
-        $DEBUG = true
-      else
-        @args << arg
-      end
-    end
-  end
-
-  # Really verbose mode gives you extra output.
-  def really_verbose
-    case verbose
-    when true, false, nil then false
-    else true
-    end
-  end
-
-  # to_yaml only overwrites things you can't override on the command line.
-  def to_yaml # :nodoc:
-    yaml_hash = {}
-    yaml_hash[:backtrace] = @hash.key?(:backtrace) ? @hash[:backtrace] :
-      DEFAULT_BACKTRACE
-    yaml_hash[:benchmark] = @hash.key?(:benchmark) ? @hash[:benchmark] :
-      DEFAULT_BENCHMARK
-    yaml_hash[:bulk_threshold] = @hash.key?(:bulk_threshold) ?
-      @hash[:bulk_threshold] : DEFAULT_BULK_THRESHOLD
-    yaml_hash[:sources] = Gem.sources
-    yaml_hash[:update_sources] = @hash.key?(:update_sources) ?
-      @hash[:update_sources] : DEFAULT_UPDATE_SOURCES
-    yaml_hash[:verbose] = @hash.key?(:verbose) ? @hash[:verbose] :
-      DEFAULT_VERBOSITY
-
-    keys = yaml_hash.keys.map { |key| key.to_s }
-    keys << 'debug'
-    re = Regexp.union(*keys)
-
-    @hash.each do |key, value|
-      key = key.to_s
-      next if key =~ re
-      yaml_hash[key.to_s] = value
-    end
-
-    yaml_hash.to_yaml
-  end
-
-  # Writes out this config file, replacing its source.
-  def write
-    File.open config_file_name, 'w' do |fp|
-      fp.write self.to_yaml
-    end
-  end
-
-  # Return the configuration information for +key+.
-  def [](key)
-    @hash[key.to_s]
-  end
-
-  # Set configuration option +key+ to +value+.
-  def []=(key, value)
-    @hash[key.to_s] = value
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and
-    @backtrace == other.backtrace and
-    @benchmark == other.benchmark and
-    @bulk_threshold == other.bulk_threshold and
-    @verbose == other.verbose and
-    @update_sources == other.update_sources and
-    @hash == other.hash
-  end
-
-  protected
-
-  attr_reader :hash
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/custom_require.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/custom_require.rb
deleted file mode 100644
index 78c7872..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/custom_require.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-module Kernel
-
-  ##
-  # The Kernel#require from before RubyGems was loaded.
-
-  alias gem_original_require require
-
-  ##
-  # When RubyGems is required, Kernel#require is replaced with our own which
-  # is capable of loading gems on demand.
-  #
-  # When you call <tt>require 'x'</tt>, this is what happens:
-  # * If the file can be loaded from the existing Ruby loadpath, it
-  #   is.
-  # * Otherwise, installed gems are searched for a file that matches.
-  #   If it's found in gem 'y', that gem is activated (added to the
-  #   loadpath).
-  #
-  # The normal <tt>require</tt> functionality of returning false if
-  # that file has already been loaded is preserved.
-
-  def require(path) # :doc:
-    gem_original_require path
-  rescue LoadError => load_error
-    if load_error.message =~ /#{Regexp.escape path}\z/ and
-       spec = Gem.searcher.find(path) then
-      Gem.activate(spec.name, "= #{spec.version}")
-      gem_original_require path
-    else
-      raise load_error
-    end
-  end
-
-  private :require
-  private :gem_original_require
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/defaults.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/defaults.rb
deleted file mode 100644
index c894bf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/defaults.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-module Gem
-
-  @post_install_hooks   ||= []
-  @post_uninstall_hooks ||= []
-  @pre_uninstall_hooks  ||= []
-  @pre_install_hooks    ||= []
-
-  ##
-  # An Array of the default sources that come with RubyGems
-
-  def self.default_sources
-    %w[http://gems.rubyforge.org/]
-  end
-
-  ##
-  # Default home directory path to be used if an alternate value is not
-  # specified in the environment
-
-  def self.default_dir
-    if defined? RUBY_FRAMEWORK_VERSION then
-      File.join File.dirname(ConfigMap[:sitedir]), 'Gems',
-                ConfigMap[:ruby_version]
-    else
-      File.join(ConfigMap[:libdir], ruby_engine, 'gems',
-                ConfigMap[:ruby_version])
-    end
-  end
-
-  ##
-  # Path for gems in the user's home directory
-
-  def self.user_dir
-    File.join(Gem.user_home, '.gem', ruby_engine,
-              ConfigMap[:ruby_version])
-  end
-
-  ##
-  # Default gem load path
-
-  def self.default_path
-    [user_dir, default_dir]
-  end
-
-  ##
-  # Deduce Ruby's --program-prefix and --program-suffix from its install name
-
-  def self.default_exec_format
-    baseruby = ConfigMap[:BASERUBY] || 'ruby'
-    ConfigMap[:RUBY_INSTALL_NAME].sub(baseruby, '%s') rescue '%s'
-  end
-
-  ##
-  # The default directory for binaries
-
-  def self.default_bindir
-    if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
-      '/usr/bin'
-    else # generic install
-      ConfigMap[:bindir]
-    end
-  end
-
-  ##
-  # The default system-wide source info cache directory
-
-  def self.default_system_source_cache_dir
-    File.join Gem.dir, 'source_cache'
-  end
-
-  ##
-  # The default user-specific source info cache directory
-
-  def self.default_user_source_cache_dir
-    File.join Gem.user_home, '.gem', 'source_cache'
-  end
-
-  ##
-  # A wrapper around RUBY_ENGINE const that may not be defined
-
-  def self.ruby_engine
-    if defined? RUBY_ENGINE then
-      RUBY_ENGINE
-    else
-      'ruby'
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency.rb
deleted file mode 100644
index 84df15a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# The Dependency class holds a Gem name and a Gem::Requirement
-
-class Gem::Dependency
-
-  ##
-  # Valid dependency types.
-  #--
-  # When this list is updated, be sure to change
-  # Gem::Specification::CURRENT_SPECIFICATION_VERSION as well.
-
-  TYPES = [
-    :development,
-    :runtime,
-  ]
-
-  ##
-  # Dependency name or regular expression.
-
-  attr_accessor :name
-
-  ##
-  # Dependency type.
-
-  attr_reader :type
-
-  ##
-  # Dependent versions.
-
-  attr_writer :version_requirements
-
-  ##
-  # Orders dependencies by name only.
-
-  def <=>(other)
-    [@name] <=> [other.name]
-  end
-
-  ##
-  # Constructs a dependency with +name+ and +requirements+.
-
-  def initialize(name, version_requirements, type=:runtime)
-    @name = name
-
-    unless TYPES.include? type
-      raise ArgumentError, "Valid types are #{TYPES.inspect}, not #{@type.inspect}"
-    end
-
-    @type = type
-
-    @version_requirements = Gem::Requirement.create version_requirements
-    @version_requirement = nil   # Avoid warnings.
-  end
-
-  def version_requirements
-    normalize if defined? @version_requirement and @version_requirement
-    @version_requirements
-  end
-
-  def requirement_list
-    version_requirements.as_list
-  end
-
-  alias requirements_list requirement_list
-
-  def normalize
-    ver = @version_requirement.instance_eval { @version }
-    @version_requirements = Gem::Requirement.new([ver])
-    @version_requirement = nil
-  end
-
-  def to_s # :nodoc:
-    "#{name} (#{version_requirements}, #{@type || :runtime})"
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other &&
-      self.name == other.name &&
-      self.type == other.type &&
-      self.version_requirements == other.version_requirements
-  end
-
-  ##
-  # Uses this dependency as a pattern to compare to the dependency +other+.
-  # This dependency will match if the name matches the other's name, and other
-  # has only an equal version requirement that satisfies this dependency.
-
-  def =~(other)
-    return false unless self.class === other
-
-    pattern = @name
-    pattern = /\A#{@name}\Z/ unless Regexp === pattern
-
-    return false unless pattern =~ other.name
-
-    reqs = other.version_requirements.requirements
-
-    return false unless reqs.length == 1
-    return false unless reqs.first.first == '='
-
-    version = reqs.first.last
-
-    version_requirements.satisfied_by? version
-  end
-
-  def hash # :nodoc:
-    name.hash ^ type.hash ^ version_requirements.hash
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_installer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_installer.rb
deleted file mode 100644
index 9ae2659..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_installer.rb
+++ /dev/null
@@ -1,258 +0,0 @@
-require 'rubygems'
-require 'rubygems/dependency_list'
-require 'rubygems/installer'
-require 'rubygems/spec_fetcher'
-require 'rubygems/user_interaction'
-
-##
-# Installs a gem along with all its dependencies from local and remote gems.
-
-class Gem::DependencyInstaller
-
-  include Gem::UserInteraction
-
-  attr_reader :gems_to_install
-  attr_reader :installed_gems
-
-  DEFAULT_OPTIONS = {
-    :env_shebang => false,
-    :domain => :both, # HACK dup
-    :force => false,
-    :format_executable => false, # HACK dup
-    :ignore_dependencies => false,
-    :security_policy => nil, # HACK NoSecurity requires OpenSSL.  AlmostNo? Low?
-    :wrappers => true
-  }
-
-  ##
-  # Creates a new installer instance.
-  #
-  # Options are:
-  # :cache_dir:: Alternate repository path to store .gem files in.
-  # :domain:: :local, :remote, or :both.  :local only searches gems in the
-  #           current directory.  :remote searches only gems in Gem::sources.
-  #           :both searches both.
-  # :env_shebang:: See Gem::Installer::new.
-  # :force:: See Gem::Installer#install.
-  # :format_executable:: See Gem::Installer#initialize.
-  # :ignore_dependencies:: Don't install any dependencies.
-  # :install_dir:: See Gem::Installer#install.
-  # :security_policy:: See Gem::Installer::new and Gem::Security.
-  # :user_install:: See Gem::Installer.new
-  # :wrappers:: See Gem::Installer::new
-
-  def initialize(options = {})
-    if options[:install_dir] then
-      spec_dir = options[:install_dir], 'specifications'
-      @source_index = Gem::SourceIndex.from_gems_in spec_dir
-    else
-      @source_index = Gem.source_index
-    end
-
-    options = DEFAULT_OPTIONS.merge options
-
-    @bin_dir = options[:bin_dir]
-    @development = options[:development]
-    @domain = options[:domain]
-    @env_shebang = options[:env_shebang]
-    @force = options[:force]
-    @format_executable = options[:format_executable]
-    @ignore_dependencies = options[:ignore_dependencies]
-    @security_policy = options[:security_policy]
-    @user_install = options[:user_install]
-    @wrappers = options[:wrappers]
-
-    @installed_gems = []
-
-    @install_dir = options[:install_dir] || Gem.dir
-    @cache_dir = options[:cache_dir] || @install_dir
-  end
-
-  ##
-  # Returns a list of pairs of gemspecs and source_uris that match
-  # Gem::Dependency +dep+ from both local (Dir.pwd) and remote (Gem.sources)
-  # sources.  Gems are sorted with newer gems prefered over older gems, and
-  # local gems preferred over remote gems.
-
-  def find_gems_with_sources(dep)
-    gems_and_sources = []
-
-    if @domain == :both or @domain == :local then
-      Dir[File.join(Dir.pwd, "#{dep.name}-[0-9]*.gem")].each do |gem_file|
-        spec = Gem::Format.from_file_by_path(gem_file).spec
-        gems_and_sources << [spec, gem_file] if spec.name == dep.name
-      end
-    end
-
-    if @domain == :both or @domain == :remote then
-      begin
-        requirements = dep.version_requirements.requirements.map do |req, ver|
-          req
-        end
-
-        all = requirements.length > 1 ||
-                (requirements.first != ">=" and requirements.first != ">")
-
-        found = Gem::SpecFetcher.fetcher.fetch dep, all
-        gems_and_sources.push(*found)
-
-      rescue Gem::RemoteFetcher::FetchError => e
-        if Gem.configuration.really_verbose then
-          say "Error fetching remote data:\t\t#{e.message}"
-          say "Falling back to local-only install"
-        end
-        @domain = :local
-      end
-    end
-
-    gems_and_sources.sort_by do |gem, source|
-      [gem, source =~ /^http:\/\// ? 0 : 1] # local gems win
-    end
-  end
-
-  ##
-  # Gathers all dependencies necessary for the installation from local and
-  # remote sources unless the ignore_dependencies was given.
-
-  def gather_dependencies
-    specs = @specs_and_sources.map { |spec,_| spec }
-
-    dependency_list = Gem::DependencyList.new
-    dependency_list.add(*specs)
-
-    unless @ignore_dependencies then
-      to_do = specs.dup
-      seen = {}
-
-      until to_do.empty? do
-        spec = to_do.shift
-        next if spec.nil? or seen[spec.name]
-        seen[spec.name] = true
-
-        deps = spec.runtime_dependencies
-        deps |= spec.development_dependencies if @development
-
-        deps.each do |dep|
-          results = find_gems_with_sources(dep).reverse
-
-          results.reject! do |dep_spec,|
-            to_do.push dep_spec
-
-            @source_index.any? do |_, installed_spec|
-              dep.name == installed_spec.name and
-                dep.version_requirements.satisfied_by? installed_spec.version
-            end
-          end
-
-          results.each do |dep_spec, source_uri|
-            next if seen[dep_spec.name]
-            @specs_and_sources << [dep_spec, source_uri]
-            dependency_list.add dep_spec
-          end
-        end
-      end
-    end
-
-    @gems_to_install = dependency_list.dependency_order.reverse
-  end
-
-  ##
-  # Finds a spec and the source_uri it came from for gem +gem_name+ and
-  # +version+.  Returns an Array of specs and sources required for
-  # installation of the gem.
-
-  def find_spec_by_name_and_version gem_name, version = Gem::Requirement.default
-    spec_and_source = nil
-
-    glob = if File::ALT_SEPARATOR then
-             gem_name.gsub File::ALT_SEPARATOR, File::SEPARATOR
-           else
-             gem_name
-           end
-
-    local_gems = Dir["#{glob}*"].sort.reverse
-
-    unless local_gems.empty? then
-      local_gems.each do |gem_file|
-        next unless gem_file =~ /gem$/
-        begin
-          spec = Gem::Format.from_file_by_path(gem_file).spec
-          spec_and_source = [spec, gem_file]
-          break
-        rescue SystemCallError, Gem::Package::FormatError
-        end
-      end
-    end
-
-    if spec_and_source.nil? then
-      dep = Gem::Dependency.new gem_name, version
-      spec_and_sources = find_gems_with_sources(dep).reverse
-
-      spec_and_source = spec_and_sources.find { |spec, source|
-        Gem::Platform.match spec.platform
-      }
-    end
-
-    if spec_and_source.nil? then
-      raise Gem::GemNotFoundException,
-        "could not find gem #{gem_name} locally or in a repository"
-    end
-
-    @specs_and_sources = [spec_and_source]
-  end
-
-  ##
-  # Installs the gem and all its dependencies.  Returns an Array of installed
-  # gems specifications.
-
-  def install dep_or_name, version = Gem::Requirement.default
-    if String === dep_or_name then
-      find_spec_by_name_and_version dep_or_name, version
-    else
-      @specs_and_sources = [find_gems_with_sources(dep_or_name).last]
-    end
-
-    @installed_gems = []
-
-    gather_dependencies
-
-    @gems_to_install.each do |spec|
-      last = spec == @gems_to_install.last
-      # HACK is this test for full_name acceptable?
-      next if @source_index.any? { |n,_| n == spec.full_name } and not last
-
-      # TODO: make this sorta_verbose so other users can benefit from it
-      say "Installing gem #{spec.full_name}" if Gem.configuration.really_verbose
-
-      _, source_uri = @specs_and_sources.assoc spec
-      begin
-        local_gem_path = Gem::RemoteFetcher.fetcher.download spec, source_uri,
-                                                             @cache_dir
-      rescue Gem::RemoteFetcher::FetchError
-        next if @force
-        raise
-      end
-
-      inst = Gem::Installer.new local_gem_path,
-                                :bin_dir             => @bin_dir,
-                                :development         => @development,
-                                :env_shebang         => @env_shebang,
-                                :force               => @force,
-                                :format_executable   => @format_executable,
-                                :ignore_dependencies => @ignore_dependencies,
-                                :install_dir         => @install_dir,
-                                :security_policy     => @security_policy,
-                                :source_index        => @source_index,
-                                :user_install        => @user_install,
-                                :wrappers            => @wrappers
-
-      spec = inst.install
-
-      @installed_gems << spec
-    end
-
-    @installed_gems
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_list.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_list.rb
deleted file mode 100644
index a129743..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/dependency_list.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'tsort'
-
-class Gem::DependencyList
-
-  include TSort
-
-  def self.from_source_index(src_index)
-    deps = new
-
-    src_index.each do |full_name, spec|
-      deps.add spec
-    end
-
-    deps
-  end
-
-  def initialize
-    @specs = []
-  end
-
-  # Adds +gemspecs+ to the dependency list.
-  def add(*gemspecs)
-    @specs.push(*gemspecs)
-  end
-
-  # Return a list of the specifications in the dependency list,
-  # sorted in order so that no spec in the list depends on a gem
-  # earlier in the list.
-  #
-  # This is useful when removing gems from a set of installed gems.
-  # By removing them in the returned order, you don't get into as
-  # many dependency issues.
-  #
-  # If there are circular dependencies (yuck!), then gems will be
-  # returned in order until only the circular dependents and anything
-  # they reference are left.  Then arbitrary gemspecs will be returned
-  # until the circular dependency is broken, after which gems will be
-  # returned in dependency order again.
-  def dependency_order
-    sorted = strongly_connected_components.flatten
-
-    result = []
-    seen = {}
-
-    sorted.each do |spec|
-      if index = seen[spec.name] then
-        if result[index].version < spec.version then
-          result[index] = spec
-        end
-      else
-        seen[spec.name] = result.length
-        result << spec
-      end
-    end
-
-    result.reverse
-  end
-
-  def find_name(full_name)
-    @specs.find { |spec| spec.full_name == full_name }
-  end
-
-  # Are all the dependencies in the list satisfied?
-  def ok?
-    @specs.all? do |spec|
-      spec.runtime_dependencies.all? do |dep|
-        @specs.find { |s| s.satisfies_requirement? dep }
-      end
-    end
-  end
-
-  # Is is ok to remove a gem from the dependency list?
-  #
-  # If removing the gemspec creates breaks a currently ok dependency,
-  # then it is NOT ok to remove the gem.
-  def ok_to_remove?(full_name)
-    gem_to_remove = find_name full_name
-
-    siblings = @specs.find_all { |s|
-      s.name == gem_to_remove.name &&
-        s.full_name != gem_to_remove.full_name
-    }
-
-    deps = []
-
-    @specs.each do |spec|
-      spec.dependencies.each do |dep|
-        deps << dep if gem_to_remove.satisfies_requirement?(dep)
-      end
-    end
-
-    deps.all? { |dep|
-      siblings.any? { |s|
-        s.satisfies_requirement? dep
-      }
-    }
-  end
-
-  def remove_by_name(full_name)
-    @specs.delete_if { |spec| spec.full_name == full_name }
-  end
-
-  # Return a hash of predecessors.  <tt>result[spec]</tt> is an
-  # Array of gemspecs that have a dependency satisfied by the named
-  # spec.
-  def spec_predecessors
-    result = Hash.new { |h,k| h[k] = [] }
-
-    specs = @specs.sort.reverse
-
-    specs.each do |spec|
-      specs.each do |other|
-        next if spec == other
-
-        other.dependencies.each do |dep|
-          if spec.satisfies_requirement? dep then
-            result[spec] << other
-          end
-        end
-      end
-    end
-
-    result
-  end
-
-  def tsort_each_node(&block)
-    @specs.each(&block)
-  end
-
-  def tsort_each_child(node, &block)
-    specs = @specs.sort.reverse
-
-    node.dependencies.each do |dep|
-      specs.each do |spec|
-        if spec.satisfies_requirement? dep then
-          begin
-            yield spec
-          rescue TSort::Cyclic
-          end
-          break
-        end
-      end
-    end
-  end
-
-  private
-
-  # Count the number of gemspecs in the list +specs+ that are not in
-  # +ignored+.
-  def active_count(specs, ignored)
-    result = 0
-    specs.each do |spec|
-      result += 1 unless ignored[spec.full_name]
-    end
-    result
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb
deleted file mode 100644
index d5a00b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-  
-  # There is an incompatibility between the way Ruby 1.8.5 and 1.8.6 
-  # handles digests. This DigestAdapter will take a pre-1.8.6 digest 
-  # and adapt it to the 1.8.6 API.
-  #
-  # Note that only the digest and hexdigest methods are adapted, 
-  # since these are the only functions used by Gems.
-  #
-  class DigestAdapter
-
-    # Initialize a digest adapter.
-    def initialize(digest_class)
-      @digest_class = digest_class
-    end
-
-    # Return a new digester.  Since we are only implementing the stateless
-    # methods, we will return ourself as the instance.
-    def new
-      self
-    end
-
-    # Return the digest of +string+ as a hex string.
-    def hexdigest(string)
-      @digest_class.new(string).hexdigest
-    end
-
-    # Return the digest of +string+ as a binary string.
-    def digest(string)
-      @digest_class.new(string).digest
-    end
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/md5.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/md5.rb
deleted file mode 100644
index f924579..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/md5.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/md5'
-
-# :stopdoc:
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    MD5 = Digest::MD5
-  else
-    require 'rubygems/digest/digest_adapter'
-    MD5 = DigestAdapter.new(Digest::MD5)
-    def MD5.md5(string)
-      self.hexdigest(string)
-    end
-  end
-end
-# :startdoc:
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha1.rb
deleted file mode 100644
index 2a6245d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha1.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/sha1'
-
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    SHA1 = Digest::SHA1
-  else
-    require 'rubygems/digest/digest_adapter'
-    SHA1 = DigestAdapter.new(Digest::SHA1)
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha2.rb
deleted file mode 100644
index 7bef16a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/digest/sha2.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/sha2'
-
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    SHA256 = Digest::SHA256
-  else
-    require 'rubygems/digest/digest_adapter'
-    SHA256 = DigestAdapter.new(Digest::SHA256)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/doc_manager.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/doc_manager.rb
deleted file mode 100644
index 00ef4c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/doc_manager.rb
+++ /dev/null
@@ -1,214 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'rubygems'
-
-##
-# The documentation manager generates RDoc and RI for RubyGems.
-
-class Gem::DocManager
-
-  include Gem::UserInteraction
-
-  @configured_args = []
-
-  def self.configured_args
-    @configured_args ||= []
-  end
-
-  def self.configured_args=(args)
-    case args
-    when Array
-      @configured_args = args
-    when String
-      @configured_args = args.split
-    end
-  end
-
-  ##
-  # Load RDoc from a gem if it is available, otherwise from Ruby's stdlib
-
-  def self.load_rdoc
-    begin
-      gem 'rdoc'
-    rescue Gem::LoadError
-      # use built-in RDoc
-    end
-
-    begin
-      require 'rdoc/rdoc'
-    rescue LoadError => e
-      raise Gem::DocumentError,
-          "ERROR: RDoc documentation generator not installed!"
-    end
-  end
-
-  ##
-  # Updates the RI cache for RDoc 2 if it is installed
-
-  def self.update_ri_cache
-    load_rdoc rescue return
-
-    return unless defined? RDoc::VERSION # RDoc 1 does not have VERSION
-
-    require 'rdoc/ri/driver'
-
-    options = {
-      :use_cache => true,
-      :use_system => true,
-      :use_site => true,
-      :use_home => true,
-      :use_gems => true,
-      :formatter => RDoc::RI::Formatter,
-    }
-
-    driver = RDoc::RI::Driver.new(options).class_cache
-  end
-
-  ##
-  # Create a document manager for +spec+. +rdoc_args+ contains arguments for
-  # RDoc (template etc.) as a String.
-
-  def initialize(spec, rdoc_args="")
-    @spec = spec
-    @doc_dir = File.join(spec.installation_path, "doc", spec.full_name)
-    @rdoc_args = rdoc_args.nil? ? [] : rdoc_args.split
-  end
-
-  ##
-  # Is the RDoc documentation installed?
-
-  def rdoc_installed?
-    File.exist?(File.join(@doc_dir, "rdoc"))
-  end
-
-  ##
-  # Generate the RI documents for this gem spec.
-  #
-  # Note that if both RI and RDoc documents are generated from the same
-  # process, the RI docs should be done first (a likely bug in RDoc will cause
-  # RI docs generation to fail if run after RDoc).
-
-  def generate_ri
-    if @spec.has_rdoc then
-      setup_rdoc
-      install_ri # RDoc bug, ri goes first
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-  end
-
-  ##
-  # Generate the RDoc documents for this gem spec.
-  #
-  # Note that if both RI and RDoc documents are generated from the same
-  # process, the RI docs should be done first (a likely bug in RDoc will cause
-  # RI docs generation to fail if run after RDoc).
-
-  def generate_rdoc
-    if @spec.has_rdoc then
-      setup_rdoc
-      install_rdoc
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-  end
-
-  ##
-  # Generate and install RDoc into the documentation directory
-
-  def install_rdoc
-    rdoc_dir = File.join @doc_dir, 'rdoc'
-
-    FileUtils.rm_rf rdoc_dir
-
-    say "Installing RDoc documentation for #{@spec.full_name}..."
-    run_rdoc '--op', rdoc_dir
-  end
-
-  ##
-  # Generate and install RI into the documentation directory
-
-  def install_ri
-    ri_dir = File.join @doc_dir, 'ri'
-
-    FileUtils.rm_rf ri_dir
-
-    say "Installing ri documentation for #{@spec.full_name}..."
-    run_rdoc '--ri', '--op', ri_dir
-  end
-
-  ##
-  # Run RDoc with +args+, which is an ARGV style argument list
-
-  def run_rdoc(*args)
-    args << @spec.rdoc_options
-    args << self.class.configured_args
-    args << '--quiet'
-    args << @spec.require_paths.clone
-    args << @spec.extra_rdoc_files
-    args = args.flatten.map do |arg| arg.to_s end
-
-    r = RDoc::RDoc.new
-
-    old_pwd = Dir.pwd
-    Dir.chdir(@spec.full_gem_path)
-    begin
-      r.document args
-    rescue Errno::EACCES => e
-      dirname = File.dirname e.message.split("-")[1].strip
-      raise Gem::FilePermissionError.new(dirname)
-    rescue RuntimeError => ex
-      alert_error "While generating documentation for #{@spec.full_name}"
-      ui.errs.puts "... MESSAGE:   #{ex}"
-      ui.errs.puts "... RDOC args: #{args.join(' ')}"
-      ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if
-      Gem.configuration.backtrace
-      ui.errs.puts "(continuing with the rest of the installation)"
-    ensure
-      Dir.chdir(old_pwd)
-    end
-  end
-
-  def setup_rdoc
-    if File.exist?(@doc_dir) && !File.writable?(@doc_dir) then
-      raise Gem::FilePermissionError.new(@doc_dir)
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-
-    self.class.load_rdoc
-  end
-
-  ##
-  # Remove RDoc and RI documentation
-
-  def uninstall_doc
-    raise Gem::FilePermissionError.new(@spec.installation_path) unless
-    File.writable? @spec.installation_path
-
-    original_name = [
-      @spec.name, @spec.version, @spec.original_platform].join '-'
-
-      doc_dir = File.join @spec.installation_path, 'doc', @spec.full_name
-      unless File.directory? doc_dir then
-        doc_dir = File.join @spec.installation_path, 'doc', original_name
-      end
-
-      FileUtils.rm_rf doc_dir
-
-      ri_dir = File.join @spec.installation_path, 'ri', @spec.full_name
-
-      unless File.directory? ri_dir then
-        ri_dir = File.join @spec.installation_path, 'ri', original_name
-      end
-
-      FileUtils.rm_rf ri_dir
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/exceptions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/exceptions.rb
deleted file mode 100644
index c37507c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/exceptions.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-require 'rubygems'
-
-##
-# Base exception class for RubyGems.  All exception raised by RubyGems are a
-# subclass of this one.
-class Gem::Exception < RuntimeError; end
-
-class Gem::CommandLineError < Gem::Exception; end
-
-class Gem::DependencyError < Gem::Exception; end
-
-class Gem::DependencyRemovalException < Gem::Exception; end
-
-##
-# Raised when attempting to uninstall a gem that isn't in GEM_HOME.
-
-class Gem::GemNotInHomeException < Gem::Exception
-  attr_accessor :spec
-end
-
-class Gem::DocumentError < Gem::Exception; end
-
-##
-# Potentially raised when a specification is validated.
-class Gem::EndOfYAMLException < Gem::Exception; end
-
-##
-# Signals that a file permission error is preventing the user from
-# installing in the requested directories.
-class Gem::FilePermissionError < Gem::Exception
-  def initialize(path)
-    super("You don't have write permissions into the #{path} directory.")
-  end
-end
-
-##
-# Used to raise parsing and loading errors
-class Gem::FormatException < Gem::Exception
-  attr_accessor :file_path
-end
-
-class Gem::GemNotFoundException < Gem::Exception; end
-
-class Gem::InstallError < Gem::Exception; end
-
-##
-# Potentially raised when a specification is validated.
-class Gem::InvalidSpecificationException < Gem::Exception; end
-
-class Gem::OperationNotSupportedError < Gem::Exception; end
-
-##
-# Signals that a remote operation cannot be conducted, probably due to not
-# being connected (or just not finding host).
-#--
-# TODO: create a method that tests connection to the preferred gems server.
-# All code dealing with remote operations will want this.  Failure in that
-# method should raise this error.
-class Gem::RemoteError < Gem::Exception; end
-
-class Gem::RemoteInstallationCancelled < Gem::Exception; end
-
-class Gem::RemoteInstallationSkipped < Gem::Exception; end
-
-##
-# Represents an error communicating via HTTP.
-class Gem::RemoteSourceException < Gem::Exception; end
-
-class Gem::VerificationError < Gem::Exception; end
-
-##
-# Raised to indicate that a system exit should occur with the specified
-# exit_code
-
-class Gem::SystemExitException < SystemExit
-  attr_accessor :exit_code
-
-  def initialize(exit_code)
-    @exit_code = exit_code
-
-    super "Exiting RubyGems with exit_code #{exit_code}"
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext.rb
deleted file mode 100644
index 97ee762..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# Classes for building C extensions live here.
-
-module Gem::Ext; end
-
-require 'rubygems/ext/builder'
-require 'rubygems/ext/configure_builder'
-require 'rubygems/ext/ext_conf_builder'
-require 'rubygems/ext/rake_builder'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/builder.rb
deleted file mode 100644
index 36e9ec1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/builder.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext'
-
-class Gem::Ext::Builder
-
-  def self.class_name
-    name =~ /Ext::(.*)Builder/
-    $1.downcase
-  end
-
-  def self.make(dest_path, results)
-    unless File.exist? 'Makefile' then
-      raise Gem::InstallError, "Makefile not found:\n\n#{results.join "\n"}" 
-    end
-
-    mf = File.read('Makefile')
-    mf = mf.gsub(/^RUBYARCHDIR\s*=\s*\$[^$]*/, "RUBYARCHDIR = #{dest_path}")
-    mf = mf.gsub(/^RUBYLIBDIR\s*=\s*\$[^$]*/, "RUBYLIBDIR = #{dest_path}")
-
-    File.open('Makefile', 'wb') {|f| f.print mf}
-
-    make_program = ENV['make']
-    unless make_program then
-      make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
-    end
-
-    ['', ' install'].each do |target|
-      cmd = "#{make_program}#{target}"
-      results << cmd
-      results << `#{cmd} #{redirector}`
-
-      raise Gem::InstallError, "make#{target} failed:\n\n#{results}" unless
-        $?.success?
-    end
-  end
-
-  def self.redirector
-    '2>&1'
-  end
-
-  def self.run(command, results)
-    results << command
-    results << `#{command} #{redirector}`
-
-    unless $?.success? then
-      raise Gem::InstallError, "#{class_name} failed:\n\n#{results.join "\n"}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb
deleted file mode 100644
index 1cde691..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    unless File.exist?('Makefile') then
-      cmd = "sh ./configure --prefix=#{dest_path}"
-
-      run cmd, results
-    end
-
-    make dest_path, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb
deleted file mode 100644
index cbe0e80..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    cmd = "#{Gem.ruby} #{File.basename extension}"
-    cmd << " #{ARGV.join ' '}" unless ARGV.empty?
-
-    run cmd, results
-
-    make dest_path, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb
deleted file mode 100644
index 0c64e61..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::RakeBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    if File.basename(extension) =~ /mkrf_conf/i then
-      cmd = "#{Gem.ruby} #{File.basename extension}"
-      cmd << " #{ARGV.join " "}" unless ARGV.empty?
-      run cmd, results
-    end
-
-    cmd = ENV['rake'] || 'rake'
-    cmd += " RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
-
-    run cmd, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/format.rb
deleted file mode 100644
index 7dc127d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/format.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-
-require 'rubygems/package'
-
-module Gem
-
-  ##
-  # The format class knows the guts of the RubyGem .gem file format
-  # and provides the capability to read gem files
-  #
-  class Format
-    attr_accessor :spec, :file_entries, :gem_path
-    extend Gem::UserInteraction
-  
-    ##
-    # Constructs an instance of a Format object, representing the gem's
-    # data structure.
-    #
-    # gem:: [String] The file name of the gem
-    #
-    def initialize(gem_path)
-      @gem_path = gem_path
-    end
-    
-    ##
-    # Reads the named gem file and returns a Format object, representing 
-    # the data from the gem file
-    #
-    # file_path:: [String] Path to the gem file
-    #
-    def self.from_file_by_path(file_path, security_policy = nil)
-      format = nil
-
-      unless File.exist?(file_path)
-        raise Gem::Exception, "Cannot load gem at [#{file_path}] in #{Dir.pwd}"
-      end
-
-      # check for old version gem
-      if File.read(file_path, 20).include?("MD5SUM =")
-        require 'rubygems/old_format'
-
-        format = OldFormat.from_file_by_path(file_path)
-      else
-        open file_path, Gem.binary_mode do |io|
-          format = from_io io, file_path, security_policy
-        end
-      end
-
-      return format
-    end
-
-    ##
-    # Reads a gem from an io stream and returns a Format object, representing
-    # the data from the gem file
-    #
-    # io:: [IO] Stream from which to read the gem
-    #
-    def self.from_io(io, gem_path="(io)", security_policy = nil)
-      format = new gem_path
-
-      Package.open io, 'r', security_policy do |pkg|
-        format.spec = pkg.metadata
-        format.file_entries = []
-
-        pkg.each do |entry|
-          size = entry.header.size
-          mode = entry.header.mode
-
-          format.file_entries << [{
-              "size" => size, "mode" => mode, "path" => entry.full_name,
-            },
-            entry.read
-          ]
-        end
-      end
-
-      format
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_openssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_openssl.rb
deleted file mode 100644
index 1456f2d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_openssl.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-# Some system might not have OpenSSL installed, therefore the core
-# library file openssl might not be available.  We localize testing
-# for the presence of OpenSSL in this file.
-
-module Gem
-  class << self
-    # Is SSL (used by the signing commands) available on this
-    # platform?
-    def ssl_available?
-      require 'rubygems/gem_openssl'
-      @ssl_available
-    end
-
-    # Set the value of the ssl_available flag.
-    attr_writer :ssl_available
-
-    # Ensure that SSL is available.  Throw an exception if it is not.
-    def ensure_ssl_available
-      unless ssl_available?
-        fail Gem::Exception, "SSL is not installed on this system"
-      end
-    end
-  end
-end
-
-begin
-  require 'openssl'
-
-  # Reference a constant defined in the .rb portion of ssl (just to
-  # make sure that part is loaded too).
-
-  dummy = OpenSSL::Digest::SHA1
-
-  Gem.ssl_available = true
-
-  class OpenSSL::X509::Certificate # :nodoc:
-    # Check the validity of this certificate.
-    def check_validity(issuer_cert = nil, time = Time.now)
-      ret = if @not_before && @not_before > time
-              [false, :expired, "not valid before '#@not_before'"]
-            elsif @not_after && @not_after < time
-              [false, :expired, "not valid after '#@not_after'"]
-            elsif issuer_cert && !verify(issuer_cert.public_key)
-              [false, :issuer, "#{issuer_cert.subject} is not issuer"]
-            else
-              [true, :ok, 'Valid certificate']
-            end
-
-      # return hash
-      { :is_valid => ret[0], :error => ret[1], :desc => ret[2] }
-    end
-  end
-
-rescue LoadError, StandardError
-  Gem.ssl_available = false
-end
-
-module Gem::SSL
-
-  # We make our own versions of the constants here.  This allows us
-  # to reference the constants, even though some systems might not
-  # have SSL installed in the Ruby core package.
-  #
-  # These constants are only used during load time.  At runtime, any
-  # method that makes a direct reference to SSL software must be
-  # protected with a Gem.ensure_ssl_available call.
-  #
-  if Gem.ssl_available? then
-    PKEY_RSA = OpenSSL::PKey::RSA
-    DIGEST_SHA1 = OpenSSL::Digest::SHA1
-  else
-    PKEY_RSA = :rsa
-    DIGEST_SHA1 = :sha1
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb
deleted file mode 100644
index e2b8543..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# GemPathSearcher has the capability to find loadable files inside
-# gems.  It generates data up front to speed up searches later.
-
-class Gem::GemPathSearcher
-
-  ##
-  # Initialise the data we need to make searches later.
-
-  def initialize
-    # We want a record of all the installed gemspecs, in the order
-    # we wish to examine them.
-    @gemspecs = init_gemspecs
-    # Map gem spec to glob of full require_path directories.
-    # Preparing this information may speed up searches later.
-    @lib_dirs = {}
-    @gemspecs.each do |spec|
-      @lib_dirs[spec.object_id] = lib_dirs_for(spec)
-    end
-  end
-
-  ##
-  # Look in all the installed gems until a matching _path_ is found.
-  # Return the _gemspec_ of the gem where it was found.  If no match
-  # is found, return nil.
-  #
-  # The gems are searched in alphabetical order, and in reverse
-  # version order.
-  #
-  # For example:
-  #
-  #   find('log4r')              # -> (log4r-1.1 spec)
-  #   find('log4r.rb')           # -> (log4r-1.1 spec)
-  #   find('rake/rdoctask')      # -> (rake-0.4.12 spec)
-  #   find('foobarbaz')          # -> nil
-  #
-  # Matching paths can have various suffixes ('.rb', '.so', and
-  # others), which may or may not already be attached to _file_.
-  # This method doesn't care about the full filename that matches;
-  # only that there is a match.
-
-  def find(path)
-    @gemspecs.find do |spec| matching_file? spec, path end
-  end
-
-  ##
-  # Works like #find, but finds all gemspecs matching +path+.
-
-  def find_all(path)
-    @gemspecs.select do |spec|
-      matching_file? spec, path
-    end
-  end
-
-  ##
-  # Attempts to find a matching path using the require_paths of the given
-  # +spec+.
-
-  def matching_file?(spec, path)
-    !matching_files(spec, path).empty?
-  end
-
-  ##
-  # Returns files matching +path+ in +spec+.
-  #--
-  # Some of the intermediate results are cached in @lib_dirs for speed.
-
-  def matching_files(spec, path)
-    glob = File.join @lib_dirs[spec.object_id], "#{path}#{Gem.suffix_pattern}"
-    Dir[glob].select { |f| File.file? f.untaint }
-  end
-
-  ##
-  # Return a list of all installed gemspecs, sorted by alphabetical order and
-  # in reverse version order.
-
-  def init_gemspecs
-    Gem.source_index.map { |_, spec| spec }.sort { |a,b|
-      (a.name <=> b.name).nonzero? || (b.version <=> a.version)
-    }
-  end
-
-  ##
-  # Returns library directories glob for a gemspec.  For example,
-  #   '/usr/local/lib/ruby/gems/1.8/gems/foobar-1.0/{lib,ext}'
-
-  def lib_dirs_for(spec)
-    "#{spec.full_gem_path}/{#{spec.require_paths.join(',')}}"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_runner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_runner.rb
deleted file mode 100644
index 5f91398..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/gem_runner.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/command_manager'
-require 'rubygems/config_file'
-require 'rubygems/doc_manager'
-
-module Gem
-
-  ####################################################################
-  # Run an instance of the gem program.
-  #
-  class GemRunner
-
-    def initialize(options={})
-      @command_manager_class = options[:command_manager] || Gem::CommandManager
-      @config_file_class = options[:config_file] || Gem::ConfigFile
-      @doc_manager_class = options[:doc_manager] || Gem::DocManager
-    end
-
-    # Run the gem command with the following arguments.
-    def run(args)
-      start_time = Time.now
-      do_configuration(args)
-      cmd = @command_manager_class.instance
-      cmd.command_names.each do |command_name|
-        config_args = Gem.configuration[command_name]
-        config_args = case config_args
-                      when String
-                        config_args.split ' '
-                      else
-                        Array(config_args)
-                      end
-        Command.add_specific_extra_args command_name, config_args
-      end
-      cmd.run(Gem.configuration.args)
-      end_time = Time.now
-      if Gem.configuration.benchmark 
-        printf "\nExecution time: %0.2f seconds.\n", end_time-start_time
-        puts "Press Enter to finish"
-        STDIN.gets
-      end
-    end
-
-    private
-
-    def do_configuration(args)
-      Gem.configuration = @config_file_class.new(args)
-      Gem.use_paths(Gem.configuration[:gemhome], Gem.configuration[:gempath])
-      Gem::Command.extra_args = Gem.configuration[:gem]
-      @doc_manager_class.configured_args = Gem.configuration[:rdoc]
-    end
-
-  end # class
-end # module
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/indexer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/indexer.rb
deleted file mode 100644
index e2dd57d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/indexer.rb
+++ /dev/null
@@ -1,370 +0,0 @@
-require 'fileutils'
-require 'tmpdir'
-require 'zlib'
-
-require 'rubygems'
-require 'rubygems/format'
-
-begin
-  require 'builder/xchar'
-rescue LoadError
-end
-
-##
-# Top level class for building the gem repository index.
-
-class Gem::Indexer
-
-  include Gem::UserInteraction
-
-  ##
-  # Index install location
-
-  attr_reader :dest_directory
-
-  ##
-  # Index build directory
-
-  attr_reader :directory
-
-  ##
-  # Create an indexer that will index the gems in +directory+.
-
-  def initialize(directory)
-    unless ''.respond_to? :to_xs then
-      fail "Gem::Indexer requires that the XML Builder library be installed:" \
-           "\n\tgem install builder"
-    end
-
-    @dest_directory = directory
-    @directory = File.join Dir.tmpdir, "gem_generate_index_#{$$}"
-
-    marshal_name = "Marshal.#{Gem.marshal_version}"
-
-    @master_index = File.join @directory, 'yaml'
-    @marshal_index = File.join @directory, marshal_name
-
-    @quick_dir = File.join @directory, 'quick'
-
-    @quick_marshal_dir = File.join @quick_dir, marshal_name
-
-    @quick_index = File.join @quick_dir, 'index'
-    @latest_index = File.join @quick_dir, 'latest_index'
-
-    @specs_index = File.join @directory, "specs.#{Gem.marshal_version}"
-    @latest_specs_index = File.join @directory,
-                                    "latest_specs.#{Gem.marshal_version}"
-
-    files = [
-      @specs_index,
-      "#{@specs_index}.gz",
-      @latest_specs_index,
-      "#{@latest_specs_index}.gz",
-      @quick_dir,
-      @master_index,
-      "#{@master_index}.Z",
-      @marshal_index,
-      "#{@marshal_index}.Z",
-    ]
-
-    @files = files.map do |path|
-      path.sub @directory, ''
-    end
-  end
-
-  ##
-  # Abbreviate the spec for downloading.  Abbreviated specs are only used for
-  # searching, downloading and related activities and do not need deployment
-  # specific information (e.g. list of files).  So we abbreviate the spec,
-  # making it much smaller for quicker downloads.
-
-  def abbreviate(spec)
-    spec.files = []
-    spec.test_files = []
-    spec.rdoc_options = []
-    spec.extra_rdoc_files = []
-    spec.cert_chain = []
-    spec
-  end
-
-  ##
-  # Build various indicies
-
-  def build_indicies(index)
-    progress = ui.progress_reporter index.size,
-                                    "Generating quick index gemspecs for #{index.size} gems",
-                                    "Complete"
-
-    index.each do |original_name, spec|
-      spec_file_name = "#{original_name}.gemspec.rz"
-      yaml_name = File.join @quick_dir, spec_file_name
-      marshal_name = File.join @quick_marshal_dir, spec_file_name
-
-      yaml_zipped = Gem.deflate spec.to_yaml
-      open yaml_name, 'wb' do |io| io.write yaml_zipped end
-
-      marshal_zipped = Gem.deflate Marshal.dump(spec)
-      open marshal_name, 'wb' do |io| io.write marshal_zipped end
-
-      progress.updated original_name
-    end
-
-    progress.done
-
-    say "Generating specs index"
-
-    open @specs_index, 'wb' do |io|
-      specs = index.sort.map do |_, spec|
-        platform = spec.original_platform
-        platform = Gem::Platform::RUBY if platform.nil? or platform.empty?
-        [spec.name, spec.version, platform]
-      end
-
-      specs = compact_specs specs
-
-      Marshal.dump specs, io
-    end
-
-    say "Generating latest specs index"
-
-    open @latest_specs_index, 'wb' do |io|
-      specs = index.latest_specs.sort.map do |spec|
-        platform = spec.original_platform
-        platform = Gem::Platform::RUBY if platform.nil? or platform.empty?
-        [spec.name, spec.version, platform]
-      end
-
-      specs = compact_specs specs
-
-      Marshal.dump specs, io
-    end
-
-    say "Generating quick index"
-
-    quick_index = File.join @quick_dir, 'index'
-    open quick_index, 'wb' do |io|
-      io.puts index.sort.map { |_, spec| spec.original_name }
-    end
-
-    say "Generating latest index"
-
-    latest_index = File.join @quick_dir, 'latest_index'
-    open latest_index, 'wb' do |io|
-      io.puts index.latest_specs.sort.map { |spec| spec.original_name }
-    end
-
-    say "Generating Marshal master index"
-
-    open @marshal_index, 'wb' do |io|
-      io.write index.dump
-    end
-
-    progress = ui.progress_reporter index.size,
-                                    "Generating YAML master index for #{index.size} gems (this may take a while)",
-                                    "Complete"
-
-    open @master_index, 'wb' do |io|
-      io.puts "--- !ruby/object:#{index.class}"
-      io.puts "gems:"
-
-      gems = index.sort_by { |name, gemspec| gemspec.sort_obj }
-      gems.each do |original_name, gemspec|
-        yaml = gemspec.to_yaml.gsub(/^/, '    ')
-        yaml = yaml.sub(/\A    ---/, '') # there's a needed extra ' ' here
-        io.print "  #{original_name}:"
-        io.puts yaml
-
-        progress.updated original_name
-      end
-    end
-
-    progress.done
-
-    say "Compressing indicies"
-    # use gzip for future files.
-
-    compress quick_index, 'rz'
-    paranoid quick_index, 'rz'
-
-    compress latest_index, 'rz'
-    paranoid latest_index, 'rz'
-
-    compress @marshal_index, 'Z'
-    paranoid @marshal_index, 'Z'
-
-    compress @master_index, 'Z'
-    paranoid @master_index, 'Z'
-
-    gzip @specs_index
-    gzip @latest_specs_index
-  end
-
-  ##
-  # Collect specifications from .gem files from the gem directory.
-
-  def collect_specs
-    index = Gem::SourceIndex.new
-
-    progress = ui.progress_reporter gem_file_list.size,
-                                    "Loading #{gem_file_list.size} gems from #{@dest_directory}",
-                                    "Loaded all gems"
-
-    gem_file_list.each do |gemfile|
-      if File.size(gemfile.to_s) == 0 then
-        alert_warning "Skipping zero-length gem: #{gemfile}"
-        next
-      end
-
-      begin
-        spec = Gem::Format.from_file_by_path(gemfile).spec
-
-        unless gemfile =~ /\/#{Regexp.escape spec.original_name}.*\.gem\z/i then
-          alert_warning "Skipping misnamed gem: #{gemfile} => #{spec.full_name} (#{spec.original_name})"
-          next
-        end
-
-        abbreviate spec
-        sanitize spec
-
-        index.gems[spec.original_name] = spec
-
-        progress.updated spec.original_name
-
-      rescue SignalException => e
-        alert_error "Received signal, exiting"
-        raise
-      rescue Exception => e
-        alert_error "Unable to process #{gemfile}\n#{e.message} (#{e.class})\n\t#{e.backtrace.join "\n\t"}"
-      end
-    end
-
-    progress.done
-
-    index
-  end
-
-  ##
-  # Compacts Marshal output for the specs index data source by using identical
-  # objects as much as possible.
-
-  def compact_specs(specs)
-    names = {}
-    versions = {}
-    platforms = {}
-
-    specs.map do |(name, version, platform)|
-      names[name] = name unless names.include? name
-      versions[version] = version unless versions.include? version
-      platforms[platform] = platform unless platforms.include? platform
-
-      [names[name], versions[version], platforms[platform]]
-    end
-  end
-
-  ##
-  # Compress +filename+ with +extension+.
-
-  def compress(filename, extension)
-    data = Gem.read_binary filename
-
-    zipped = Gem.deflate data
-
-    open "#{filename}.#{extension}", 'wb' do |io|
-      io.write zipped
-    end
-  end
-
-  ##
-  # List of gem file names to index.
-
-  def gem_file_list
-    Dir.glob(File.join(@dest_directory, "gems", "*.gem"))
-  end
-
-  ##
-  # Builds and installs indexicies.
-
-  def generate_index
-    make_temp_directories
-    index = collect_specs
-    build_indicies index
-    install_indicies
-  rescue SignalException
-  ensure
-    FileUtils.rm_rf @directory
-  end
-
-   ##
-  # Zlib::GzipWriter wrapper that gzips +filename+ on disk.
-
-  def gzip(filename)
-    Zlib::GzipWriter.open "#{filename}.gz" do |io|
-      io.write Gem.read_binary(filename)
-    end
-  end
-
-  ##
-  # Install generated indicies into the destination directory.
-
-  def install_indicies
-    verbose = Gem.configuration.really_verbose
-
-    say "Moving index into production dir #{@dest_directory}" if verbose
-
-    @files.each do |file|
-      src_name = File.join @directory, file
-      dst_name = File.join @dest_directory, file
-
-      FileUtils.rm_rf dst_name, :verbose => verbose
-      FileUtils.mv src_name, @dest_directory, :verbose => verbose,
-                   :force => true
-    end
-  end
-
-  ##
-  # Make directories for index generation
-
-  def make_temp_directories
-    FileUtils.rm_rf @directory
-    FileUtils.mkdir_p @directory, :mode => 0700
-    FileUtils.mkdir_p @quick_marshal_dir
-  end
-
-  ##
-  # Ensure +path+ and path with +extension+ are identical.
-
-  def paranoid(path, extension)
-    data = Gem.read_binary path
-    compressed_data = Gem.read_binary "#{path}.#{extension}"
-
-    unless data == Gem.inflate(compressed_data) then
-      raise "Compressed file #{compressed_path} does not match uncompressed file #{path}"
-    end
-  end
-
-  ##
-  # Sanitize the descriptive fields in the spec.  Sometimes non-ASCII
-  # characters will garble the site index.  Non-ASCII characters will
-  # be replaced by their XML entity equivalent.
-
-  def sanitize(spec)
-    spec.summary = sanitize_string(spec.summary)
-    spec.description = sanitize_string(spec.description)
-    spec.post_install_message = sanitize_string(spec.post_install_message)
-    spec.authors = spec.authors.collect { |a| sanitize_string(a) }
-
-    spec
-  end
-
-  ##
-  # Sanitize a single string.
-
-  def sanitize_string(string)
-    # HACK the #to_s is in here because RSpec has an Array of Arrays of
-    # Strings for authors.  Need a way to disallow bad values on gempsec
-    # generation.  (Probably won't happen.)
-    string ? string.to_s.to_xs : string
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/install_update_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/install_update_options.rb
deleted file mode 100644
index dd35acb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/install_update_options.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/security'
-
-##
-# Mixin methods for install and update options for Gem::Commands
-module Gem::InstallUpdateOptions
-
-  # Add the install/update options to the option parser.
-  def add_install_update_options
-    OptionParser.accept Gem::Security::Policy do |value|
-      value = Gem::Security::Policies[value]
-      raise OptionParser::InvalidArgument, value if value.nil?
-      value
-    end
-
-    add_option(:"Install/Update", '-i', '--install-dir DIR',
-               'Gem repository directory to get installed',
-               'gems') do |value, options|
-      options[:install_dir] = File.expand_path(value)
-    end
-
-    add_option(:"Install/Update", '-n', '--bindir DIR',
-	       'Directory where binary files are',
-	       'located') do |value, options|
-      options[:bin_dir] = File.expand_path(value)
-    end
-
-    add_option(:"Install/Update", '-d', '--[no-]rdoc',
-               'Generate RDoc documentation for the gem on',
-               'install') do |value, options|
-      options[:generate_rdoc] = value
-    end
-
-    add_option(:"Install/Update", '--[no-]ri',
-               'Generate RI documentation for the gem on',
-               'install') do |value, options|
-      options[:generate_ri] = value
-    end
-
-    add_option(:"Install/Update", '-E', '--[no-]env-shebang',
-               "Rewrite the shebang line on installed",
-               "scripts to use /usr/bin/env") do |value, options|
-      options[:env_shebang] = value
-    end
-
-    add_option(:"Install/Update", '-f', '--[no-]force',
-               'Force gem to install, bypassing dependency',
-               'checks') do |value, options|
-      options[:force] = value
-    end
-
-    add_option(:"Install/Update", '-t', '--[no-]test',
-               'Run unit tests prior to installation') do |value, options|
-      options[:test] = value
-    end
-
-    add_option(:"Install/Update", '-w', '--[no-]wrappers',
-               'Use bin wrappers for executables',
-               'Not available on dosish platforms') do |value, options|
-      options[:wrappers] = value
-    end
-
-    add_option(:"Install/Update", '-P', '--trust-policy POLICY',
-               Gem::Security::Policy,
-               'Specify gem trust policy') do |value, options|
-      options[:security_policy] = value
-    end
-
-    add_option(:"Install/Update", '--ignore-dependencies',
-               'Do not install any required dependent gems') do |value, options|
-      options[:ignore_dependencies] = value
-    end
-
-    add_option(:"Install/Update", '-y', '--include-dependencies',
-               'Unconditionally install the required',
-               'dependent gems') do |value, options|
-      options[:include_dependencies] = value
-    end
-
-    add_option(:"Install/Update",       '--[no-]format-executable',
-               'Make installed executable names match ruby.',
-               'If ruby is ruby18, foo_exec will be',
-               'foo_exec18') do |value, options|
-      options[:format_executable] = value
-    end
-
-    add_option(:"Install/Update",       '--[no-]user-install',
-               'Install in user\'s home directory instead',
-               'of GEM_HOME. Defaults to using home directory',
-               'only if GEM_HOME is not writable.') do |value, options|
-      options[:user_install] = value
-    end
-
-    add_option(:"Install/Update", "--development",
-                "Install any additional development",
-                "dependencies") do |value, options|
-      options[:development] = true
-    end
-  end
-
-  # Default options for the gem install command.
-  def install_update_defaults_str
-    '--rdoc --no-force --no-test --wrappers'
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/installer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/installer.rb
deleted file mode 100644
index d719580..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/installer.rb
+++ /dev/null
@@ -1,578 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'pathname'
-require 'rbconfig'
-
-require 'rubygems/format'
-require 'rubygems/ext'
-require 'rubygems/require_paths_builder'
-
-##
-# The installer class processes RubyGem .gem files and installs the
-# files contained in the .gem into the Gem.path.
-#
-# Gem::Installer does the work of putting files in all the right places on the
-# filesystem including unpacking the gem into its gem dir, installing the
-# gemspec in the specifications dir, storing the cached gem in the cache dir,
-# and installing either wrappers or symlinks for executables.
-
-class Gem::Installer
-
-  ##
-  # Raised when there is an error while building extensions.
-  #
-  class ExtensionBuildError < Gem::InstallError; end
-
-  include Gem::UserInteraction
-
-  include Gem::RequirePathsBuilder
-
-  ##
-  # The directory a gem's executables will be installed into
-
-  attr_reader :bin_dir
-
-  ##
-  # The gem repository the gem will be installed into
-
-  attr_reader :gem_home
-
-  ##
-  # The Gem::Specification for the gem being installed
-
-  attr_reader :spec
-
-  @home_install_warning = false
-  @path_warning = false
-
-  class << self
-
-    ##
-    # True if we've warned about ~/.gems install
-
-    attr_accessor :home_install_warning
-
-    ##
-    # True if we've warned about PATH not including Gem.bindir
-
-    attr_accessor :path_warning
-
-    attr_writer :exec_format
-
-    # Defaults to use Ruby's program prefix and suffix.
-    def exec_format
-      @exec_format ||= Gem.default_exec_format
-    end
-
-  end
-
-  ##
-  # Constructs an Installer instance that will install the gem located at
-  # +gem+.  +options+ is a Hash with the following keys:
-  #
-  # :env_shebang:: Use /usr/bin/env in bin wrappers.
-  # :force:: Overrides all version checks and security policy checks, except
-  #          for a signed-gems-only policy.
-  # :ignore_dependencies:: Don't raise if a dependency is missing.
-  # :install_dir:: The directory to install the gem into.
-  # :format_executable:: Format the executable the same as the ruby executable.
-  #                      If your ruby is ruby18, foo_exec will be installed as
-  #                      foo_exec18.
-  # :security_policy:: Use the specified security policy.  See Gem::Security
-  # :wrappers:: Install wrappers if true, symlinks if false.
-
-  def initialize(gem, options={})
-    @gem = gem
-
-    options = {
-      :bin_dir      => nil,
-      :env_shebang  => false,
-      :exec_format  => false,
-      :force        => false,
-      :install_dir  => Gem.dir,
-      :source_index => Gem.source_index,
-    }.merge options
-
-    @env_shebang = options[:env_shebang]
-    @force = options[:force]
-    gem_home = options[:install_dir]
-    @gem_home = Pathname.new(gem_home).expand_path
-    @ignore_dependencies = options[:ignore_dependencies]
-    @format_executable = options[:format_executable]
-    @security_policy = options[:security_policy]
-    @wrappers = options[:wrappers]
-    @bin_dir = options[:bin_dir]
-    @development = options[:development]
-    @source_index = options[:source_index]
-
-    begin
-      @format = Gem::Format.from_file_by_path @gem, @security_policy
-    rescue Gem::Package::FormatError
-      raise Gem::InstallError, "invalid gem format for #{@gem}"
-    end
-
-    begin
-      FileUtils.mkdir_p @gem_home
-    rescue Errno::EACCESS, Errno::ENOTDIR
-      # We'll divert to ~/.gems below
-    end
-
-    if not File.writable? @gem_home or
-        # TODO: Shouldn't have to test for existence of bindir; tests need it.
-        (@gem_home.to_s == Gem.dir and File.exist? Gem.bindir and
-         not File.writable? Gem.bindir) then
-      if options[:user_install] == false then # You don't want to use ~
-        raise Gem::FilePermissionError, @gem_home
-      elsif options[:user_install].nil? then
-        unless self.class.home_install_warning then
-          alert_warning "Installing to ~/.gem since #{@gem_home} and\n\t  #{Gem.bindir} aren't both writable."
-          self.class.home_install_warning = true
-        end
-      end
-      options[:user_install] = true
-    end
-
-    if options[:user_install] and not options[:unpack] then
-      @gem_home = Gem.user_dir
-
-      user_bin_dir = File.join(@gem_home, 'bin')
-      unless ENV['PATH'].split(File::PATH_SEPARATOR).include? user_bin_dir then
-        unless self.class.path_warning then
-          alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t  gem executables will not run."
-          self.class.path_warning = true
-        end
-      end
-
-      FileUtils.mkdir_p @gem_home unless File.directory? @gem_home
-      # If it's still not writable, you've got issues.
-      raise Gem::FilePermissionError, @gem_home unless File.writable? @gem_home
-    end
-
-    @spec = @format.spec
-
-    @gem_dir = File.join(@gem_home, "gems", @spec.full_name).untaint
-  end
-
-  ##
-  # Installs the gem and returns a loaded Gem::Specification for the installed
-  # gem.
-  #
-  # The gem will be installed with the following structure:
-  #
-  #   @gem_home/
-  #     cache/<gem-version>.gem #=> a cached copy of the installed gem
-  #     gems/<gem-version>/... #=> extracted files
-  #     specifications/<gem-version>.gemspec #=> the Gem::Specification
-
-  def install
-    # If we're forcing the install then disable security unless the security
-    # policy says that we only install singed gems.
-    @security_policy = nil if @force and @security_policy and
-                              not @security_policy.only_signed
-
-    unless @force then
-      if rrv = @spec.required_ruby_version then
-        unless rrv.satisfied_by? Gem.ruby_version then
-          raise Gem::InstallError, "#{@spec.name} requires Ruby version #{rrv}"
-        end
-      end
-
-      if rrgv = @spec.required_rubygems_version then
-        unless rrgv.satisfied_by? Gem::Version.new(Gem::RubyGemsVersion) then
-          raise Gem::InstallError,
-                "#{@spec.name} requires RubyGems version #{rrgv}"
-        end
-      end
-
-      unless @ignore_dependencies then
-        deps = @spec.runtime_dependencies
-        deps |= @spec.development_dependencies if @development
-
-        deps.each do |dep_gem|
-          ensure_dependency @spec, dep_gem
-        end
-      end
-    end
-
-    Gem.pre_install_hooks.each do |hook|
-      hook.call self
-    end
-
-    FileUtils.mkdir_p @gem_home unless File.directory? @gem_home
-
-    Gem.ensure_gem_subdirectories @gem_home
-
-    FileUtils.mkdir_p @gem_dir
-
-    extract_files
-    generate_bin
-    build_extensions
-    write_spec
-
-    write_require_paths_file_if_needed
-
-    # HACK remove?  Isn't this done in multiple places?
-    cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop
-    unless File.exist? cached_gem then
-      FileUtils.cp @gem, File.join(@gem_home, "cache")
-    end
-
-    say @spec.post_install_message unless @spec.post_install_message.nil?
-
-    @spec.loaded_from = File.join(@gem_home, 'specifications',
-                                  "#{@spec.full_name}.gemspec")
-
-    @source_index.add_spec @spec
-
-    Gem.post_install_hooks.each do |hook|
-      hook.call self
-    end
-
-    return @spec
-  rescue Zlib::GzipFile::Error
-    raise Gem::InstallError, "gzip error installing #{@gem}"
-  end
-
-  ##
-  # Ensure that the dependency is satisfied by the current installation of
-  # gem.  If it is not an exception is raised.
-  #
-  # spec       :: Gem::Specification
-  # dependency :: Gem::Dependency
-
-  def ensure_dependency(spec, dependency)
-    unless installation_satisfies_dependency? dependency then
-      raise Gem::InstallError, "#{spec.name} requires #{dependency}"
-    end
-
-    true
-  end
-
-  ##
-  # True if the gems in the source_index satisfy +dependency+.
-
-  def installation_satisfies_dependency?(dependency)
-    @source_index.find_name(dependency.name, dependency.version_requirements).size > 0
-  end
-
-  ##
-  # Unpacks the gem into the given directory.
-
-  def unpack(directory)
-    @gem_dir = directory
-    @format = Gem::Format.from_file_by_path @gem, @security_policy
-    extract_files
-  end
-
-  ##
-  # Writes the .gemspec specification (in Ruby) to the supplied
-  # spec_path.
-  #
-  # spec:: [Gem::Specification] The Gem specification to output
-  # spec_path:: [String] The location (path) to write the gemspec to
-
-  def write_spec
-    rubycode = @spec.to_ruby
-
-    file_name = File.join @gem_home, 'specifications',
-                          "#{@spec.full_name}.gemspec"
-
-    file_name.untaint
-
-    File.open(file_name, "w") do |file|
-      file.puts rubycode
-    end
-  end
-
-  ##
-  # Creates windows .bat files for easy running of commands
-
-  def generate_windows_script(bindir, filename)
-    if Gem.win_platform? then
-      script_name = filename + ".bat"
-      script_path = File.join bindir, File.basename(script_name)
-      File.open script_path, 'w' do |file|
-        file.puts windows_stub_script(bindir, filename)
-      end
-
-      say script_path if Gem.configuration.really_verbose
-    end
-  end
-
-  def generate_bin
-    return if @spec.executables.nil? or @spec.executables.empty?
-
-    # If the user has asked for the gem to be installed in a directory that is
-    # the system gem directory, then use the system bin directory, else create
-    # (or use) a new bin dir under the gem_home.
-    bindir = @bin_dir ? @bin_dir : Gem.bindir(@gem_home)
-
-    Dir.mkdir bindir unless File.exist? bindir
-    raise Gem::FilePermissionError.new(bindir) unless File.writable? bindir
-
-    @spec.executables.each do |filename|
-      filename.untaint
-      bin_path = File.expand_path File.join(@gem_dir, @spec.bindir, filename)
-      mode = File.stat(bin_path).mode | 0111
-      File.chmod mode, bin_path
-
-      if @wrappers then
-        generate_bin_script filename, bindir
-      else
-        generate_bin_symlink filename, bindir
-      end
-    end
-  end
-
-  ##
-  # Creates the scripts to run the applications in the gem.
-  #--
-  # The Windows script is generated in addition to the regular one due to a
-  # bug or misfeature in the Windows shell's pipe.  See
-  # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/193379
-
-  def generate_bin_script(filename, bindir)
-    bin_script_path = File.join bindir, formatted_program_filename(filename)
-
-    exec_path = File.join @gem_dir, @spec.bindir, filename
-
-    # HACK some gems don't have #! in their executables, restore 2008/06
-    #if File.read(exec_path, 2) == '#!' then
-      FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
-
-      File.open bin_script_path, 'w', 0755 do |file|
-        file.print app_script_text(filename)
-      end
-
-      say bin_script_path if Gem.configuration.really_verbose
-
-      generate_windows_script bindir, filename
-    #else
-    #  FileUtils.rm_f bin_script_path
-    #  FileUtils.cp exec_path, bin_script_path,
-    #               :verbose => Gem.configuration.really_verbose
-    #end
-  end
-
-  ##
-  # Creates the symlinks to run the applications in the gem.  Moves
-  # the symlink if the gem being installed has a newer version.
-
-  def generate_bin_symlink(filename, bindir)
-    if Gem.win_platform? then
-      alert_warning "Unable to use symlinks on Windows, installing wrapper"
-      generate_bin_script filename, bindir
-      return
-    end
-
-    src = File.join @gem_dir, 'bin', filename
-    dst = File.join bindir, formatted_program_filename(filename)
-
-    if File.exist? dst then
-      if File.symlink? dst then
-        link = File.readlink(dst).split File::SEPARATOR
-        cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ''))
-        return if @spec.version < cur_version
-      end
-      File.unlink dst
-    end
-
-    FileUtils.symlink src, dst, :verbose => Gem.configuration.really_verbose
-  end
-
-  ##
-  # Generates a #! line for +bin_file_name+'s wrapper copying arguments if
-  # necessary.
-
-  def shebang(bin_file_name)
-    if @env_shebang then
-      "#!/usr/bin/env " + Gem::ConfigMap[:ruby_install_name]
-    else
-      path = File.join @gem_dir, @spec.bindir, bin_file_name
-
-      File.open(path, "rb") do |file|
-        first_line = file.gets
-        if first_line =~ /^#!/ then
-          # Preserve extra words on shebang line, like "-w".  Thanks RPA.
-          shebang = first_line.sub(/\A\#!.*?ruby\S*/, "#!#{Gem.ruby}")
-        else
-          # Create a plain shebang line.
-          shebang = "#!#{Gem.ruby}"
-        end
-
-        shebang.strip # Avoid nasty ^M issues.
-      end
-    end
-  end
-
-  ##
-  # Return the text for an application file.
-
-  def app_script_text(bin_file_name)
-    <<-TEXT
-#{shebang bin_file_name}
-#
-# This file was generated by RubyGems.
-#
-# The application '#{@spec.name}' is installed as part of a gem, and
-# this file is here to facilitate running it.
-#
-
-require 'rubygems'
-
-version = "#{Gem::Requirement.default}"
-
-if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
-  version = $1
-  ARGV.shift
-end
-
-gem '#{@spec.name}', version
-load '#{bin_file_name}'
-TEXT
-  end
-
-  ##
-  # return the stub script text used to launch the true ruby script
-
-  def windows_stub_script(bindir, bin_file_name)
-    <<-TEXT
- at ECHO OFF
-IF NOT "%~f0" == "~f0" GOTO :WinNT
-@"#{File.basename(Gem.ruby)}" "#{File.join(bindir, bin_file_name)}" %1 %2 %3 %4 %5 %6 %7 %8 %9
-GOTO :EOF
-:WinNT
-@"#{File.basename(Gem.ruby)}" "%~dpn0" %*
-TEXT
-  end
-
-  ##
-  # Builds extensions.  Valid types of extensions are extconf.rb files,
-  # configure scripts and rakefiles or mkrf_conf files.
-
-  def build_extensions
-    return if @spec.extensions.empty?
-    say "Building native extensions.  This could take a while..."
-    start_dir = Dir.pwd
-    dest_path = File.join @gem_dir, @spec.require_paths.first
-    ran_rake = false # only run rake once
-
-    @spec.extensions.each do |extension|
-      break if ran_rake
-      results = []
-
-      builder = case extension
-                when /extconf/ then
-                  Gem::Ext::ExtConfBuilder
-                when /configure/ then
-                  Gem::Ext::ConfigureBuilder
-                when /rakefile/i, /mkrf_conf/i then
-                  ran_rake = true
-                  Gem::Ext::RakeBuilder
-                else
-                  results = ["No builder for extension '#{extension}'"]
-                  nil
-                end
-
-      begin
-        Dir.chdir File.join(@gem_dir, File.dirname(extension))
-        results = builder.build(extension, @gem_dir, dest_path, results)
-
-        say results.join("\n") if Gem.configuration.really_verbose
-
-      rescue => ex
-        results = results.join "\n"
-
-        File.open('gem_make.out', 'wb') { |f| f.puts results }
-
-        message = <<-EOF
-ERROR: Failed to build gem native extension.
-
-#{results}
-
-Gem files will remain installed in #{@gem_dir} for inspection.
-Results logged to #{File.join(Dir.pwd, 'gem_make.out')}
-        EOF
-
-        raise ExtensionBuildError, message
-      ensure
-        Dir.chdir start_dir
-      end
-    end
-  end
-
-  ##
-  # Reads the file index and extracts each file into the gem directory.
-  #
-  # Ensures that files can't be installed outside the gem directory.
-
-  def extract_files
-    expand_and_validate_gem_dir
-
-    raise ArgumentError, "format required to extract from" if @format.nil?
-
-    @format.file_entries.each do |entry, file_data|
-      path = entry['path'].untaint
-
-      if path =~ /\A\// then # for extra sanity
-        raise Gem::InstallError,
-              "attempt to install file into #{entry['path'].inspect}"
-      end
-
-      path = File.expand_path File.join(@gem_dir, path)
-
-      if path !~ /\A#{Regexp.escape @gem_dir}/ then
-        msg = "attempt to install file into %p under %p" %
-                [entry['path'], @gem_dir]
-        raise Gem::InstallError, msg
-      end
-
-      FileUtils.mkdir_p File.dirname(path)
-
-      File.open(path, "wb") do |out|
-        out.write file_data
-      end
-
-      FileUtils.chmod entry['mode'], path
-
-      say path if Gem.configuration.really_verbose
-    end
-  end
-
-  ##
-  # Prefix and suffix the program filename the same as ruby.
-
-  def formatted_program_filename(filename)
-    if @format_executable then
-      self.class.exec_format % File.basename(filename)
-    else
-      filename
-    end
-  end
-
-  private
-
-  ##
-  # HACK Pathname is broken on windows.
-
-  def absolute_path? pathname
-    pathname.absolute? or (Gem.win_platform? and pathname.to_s =~ /\A[a-z]:/i)
-  end
-
-  def expand_and_validate_gem_dir
-    @gem_dir = Pathname.new(@gem_dir).expand_path
-
-    unless absolute_path?(@gem_dir) then # HACK is this possible after #expand_path?
-      raise ArgumentError, "install directory %p not absolute" % @gem_dir
-    end
-
-    @gem_dir = @gem_dir.to_s
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/local_remote_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/local_remote_options.rb
deleted file mode 100644
index d77d600..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/local_remote_options.rb
+++ /dev/null
@@ -1,134 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'uri'
-require 'rubygems'
-
-##
-# Mixin methods for local and remote Gem::Command options.
-
-module Gem::LocalRemoteOptions
-
-  ##
-  # Allows OptionParser to handle HTTP URIs.
-
-  def accept_uri_http
-    OptionParser.accept URI::HTTP do |value|
-      begin
-        uri = URI.parse value
-      rescue URI::InvalidURIError
-        raise OptionParser::InvalidArgument, value
-      end
-
-      raise OptionParser::InvalidArgument, value unless uri.scheme == 'http'
-
-      value
-    end
-  end
-
-  ##
-  # Add local/remote options to the command line parser.
-
-  def add_local_remote_options
-    add_option(:"Local/Remote", '-l', '--local',
-               'Restrict operations to the LOCAL domain') do |value, options|
-      options[:domain] = :local
-    end
-
-    add_option(:"Local/Remote", '-r', '--remote',
-      'Restrict operations to the REMOTE domain') do |value, options|
-      options[:domain] = :remote
-    end
-
-    add_option(:"Local/Remote", '-b', '--both',
-               'Allow LOCAL and REMOTE operations') do |value, options|
-      options[:domain] = :both
-    end
-
-    add_bulk_threshold_option
-    add_source_option
-    add_proxy_option
-    add_update_sources_option
-  end
-
-  ##
-  # Add the --bulk-threshold option
-
-  def add_bulk_threshold_option
-    add_option(:"Local/Remote", '-B', '--bulk-threshold COUNT',
-               "Threshold for switching to bulk",
-               "synchronization (default #{Gem.configuration.bulk_threshold})") do
-      |value, options|
-      Gem.configuration.bulk_threshold = value.to_i
-    end
-  end
-
-  ##
-  # Add the --http-proxy option
-
-  def add_proxy_option
-    accept_uri_http
-
-    add_option(:"Local/Remote", '-p', '--[no-]http-proxy [URL]', URI::HTTP,
-               'Use HTTP proxy for remote operations') do |value, options|
-      options[:http_proxy] = (value == false) ? :no_proxy : value
-      Gem.configuration[:http_proxy] = options[:http_proxy]
-    end
-  end
-
-  ##
-  # Add the --source option
-
-  def add_source_option
-    accept_uri_http
-
-    add_option(:"Local/Remote", '--source URL', URI::HTTP,
-               'Use URL as the remote source for gems') do |source, options|
-      source << '/' if source !~ /\/\z/
-
-      if options[:added_source] then
-        Gem.sources << source
-      else
-        options[:added_source] = true
-        Gem.sources.replace [source]
-      end
-    end
-  end
-
-  ##
-  # Add the --source option
-
-  def add_update_sources_option
-
-    add_option(:"Local/Remote", '-u', '--[no-]update-sources',
-               'Update local source cache') do |value, options|
-      Gem.configuration.update_sources = value
-    end
-  end
-
-  ##
-  # Is fetching of local and remote information enabled?
-
-  def both?
-    options[:domain] == :both
-  end
-
-  ##
-  # Is local fetching enabled?
-
-  def local?
-    options[:domain] == :local || options[:domain] == :both
-  end
-
-  ##
-  # Is remote fetching enabled?
-
-  def remote?
-    options[:domain] == :remote || options[:domain] == :both
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/old_format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/old_format.rb
deleted file mode 100644
index ef5d621..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/old_format.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'yaml'
-require 'zlib'
-
-module Gem
-
-  ##
-  # The format class knows the guts of the RubyGem .gem file format
-  # and provides the capability to read gem files
-  #
-  class OldFormat
-    attr_accessor :spec, :file_entries, :gem_path
-  
-    ##
-    # Constructs an instance of a Format object, representing the gem's
-    # data structure.
-    #
-    # gem:: [String] The file name of the gem
-    #
-    def initialize(gem_path)
-      @gem_path = gem_path
-    end
-    
-    ##
-    # Reads the named gem file and returns a Format object, representing 
-    # the data from the gem file
-    #
-    # file_path:: [String] Path to the gem file
-    #
-    def self.from_file_by_path(file_path)
-      unless File.exist?(file_path)
-        raise Gem::Exception, "Cannot load gem file [#{file_path}]"
-      end
-      File.open(file_path, 'rb') do |file|
-        from_io(file, file_path)
-      end
-    end
-
-    ##
-    # Reads a gem from an io stream and returns a Format object, representing
-    # the data from the gem file
-    #
-    # io:: [IO] Stream from which to read the gem
-    #
-    def self.from_io(io, gem_path="(io)")
-      format = self.new(gem_path)
-      skip_ruby(io)
-      format.spec = read_spec(io)
-      format.file_entries = []
-      read_files_from_gem(io) do |entry, file_data|
-        format.file_entries << [entry, file_data]
-      end
-      format
-    end
-    
-    private 
-    ##
-    # Skips the Ruby self-install header.  After calling this method, the
-    # IO index will be set after the Ruby code.
-    #
-    # file:: [IO] The IO to process (skip the Ruby code)
-    #
-    def self.skip_ruby(file)
-      end_seen = false
-      loop {
-        line = file.gets
-        if(line == nil || line.chomp == "__END__") then
-          end_seen = true
-          break
-        end
-      }
-     if(end_seen == false) then
-       raise Gem::Exception.new("Failed to find end of ruby script while reading gem")
-     end
-    end
-     
-    ##
-    # Reads the specification YAML from the supplied IO and constructs
-    # a Gem::Specification from it.  After calling this method, the
-    # IO index will be set after the specification header.
-    #
-    # file:: [IO] The IO to process
-    #
-    def self.read_spec(file)
-      yaml = ''
-      begin
-        read_until_dashes(file) do |line|
-          yaml << line
-        end
-        Specification.from_yaml(yaml)
-      rescue YAML::Error => e
-        raise Gem::Exception.new("Failed to parse gem specification out of gem file")
-      rescue ArgumentError => e
-        raise Gem::Exception.new("Failed to parse gem specification out of gem file")
-      end
-    end
-    
-    ##
-    # Reads lines from the supplied IO until a end-of-yaml (---) is
-    # reached
-    #
-    # file:: [IO] The IO to process
-    # block:: [String] The read line
-    #
-    def self.read_until_dashes(file)
-      while((line = file.gets) && line.chomp.strip != "---") do
-        yield line
-      end
-    end
-
-
-    ##
-    # Reads the embedded file data from a gem file, yielding an entry
-    # containing metadata about the file and the file contents themselves
-    # for each file that's archived in the gem.
-    # NOTE: Many of these methods should be extracted into some kind of
-    # Gem file read/writer
-    #
-    # gem_file:: [IO] The IO to process
-    #
-    def self.read_files_from_gem(gem_file)
-      errstr = "Error reading files from gem"
-      header_yaml = ''
-      begin
-        self.read_until_dashes(gem_file) do |line|
-          header_yaml << line
-        end
-        header = YAML.load(header_yaml)
-        raise Gem::Exception.new(errstr) unless header
-        header.each do |entry|
-          file_data = ''
-          self.read_until_dashes(gem_file) do |line|
-            file_data << line
-          end
-          yield [entry, Zlib::Inflate.inflate(file_data.strip.unpack("m")[0])]
-        end
-      rescue Exception,Zlib::DataError => e
-        raise Gem::Exception.new(errstr)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package.rb
deleted file mode 100644
index 9cb393b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'fileutils'
-require 'find'
-require 'stringio'
-require 'yaml'
-require 'zlib'
-
-require 'rubygems/digest/md5'
-require 'rubygems/security'
-require 'rubygems/specification'
-
-# Wrapper for FileUtils meant to provide logging and additional operations if
-# needed.
-class Gem::FileOperations
-
-  def initialize(logger = nil)
-    @logger = logger
-  end
-
-  def method_missing(meth, *args, &block)
-    case
-    when FileUtils.respond_to?(meth)
-      @logger.log "#{meth}: #{args}" if @logger
-      FileUtils.send meth, *args, &block
-    when Gem::FileOperations.respond_to?(meth)
-      @logger.log "#{meth}: #{args}" if @logger
-      Gem::FileOperations.send meth, *args, &block
-    else
-      super
-    end
-  end
-
-end
-
-module Gem::Package
-
-  class Error < StandardError; end
-  class NonSeekableIO < Error; end
-  class ClosedIO < Error; end
-  class BadCheckSum < Error; end
-  class TooLongFileName < Error; end
-  class FormatError < Error; end
-
-  def self.open(io, mode = "r", signer = nil, &block)
-    tar_type = case mode
-               when 'r' then TarInput
-               when 'w' then TarOutput
-               else
-                 raise "Unknown Package open mode"
-               end
-
-    tar_type.open(io, signer, &block)
-  end
-
-  def self.pack(src, destname, signer = nil)
-    TarOutput.open(destname, signer) do |outp|
-      dir_class.chdir(src) do
-        outp.metadata = (file_class.read("RPA/metadata") rescue nil)
-        find_class.find('.') do |entry|
-          case
-          when file_class.file?(entry)
-            entry.sub!(%r{\./}, "")
-            next if entry =~ /\ARPA\//
-            stat = File.stat(entry)
-            outp.add_file_simple(entry, stat.mode, stat.size) do |os|
-              file_class.open(entry, "rb") do |f|
-                os.write(f.read(4096)) until f.eof?
-              end
-            end
-          when file_class.dir?(entry)
-            entry.sub!(%r{\./}, "")
-            next if entry == "RPA"
-            outp.mkdir(entry, file_class.stat(entry).mode)
-          else
-            raise "Don't know how to pack this yet!"
-          end
-        end
-      end
-    end
-  end
-
-end
-
-require 'rubygems/package/f_sync_dir'
-require 'rubygems/package/tar_header'
-require 'rubygems/package/tar_input'
-require 'rubygems/package/tar_output'
-require 'rubygems/package/tar_reader'
-require 'rubygems/package/tar_reader/entry'
-require 'rubygems/package/tar_writer'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb
deleted file mode 100644
index 3e2e4a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-module Gem::Package::FSyncDir
-
-  private
-
-  ##
-  # make sure this hits the disc
-
-  def fsync_dir(dirname)
-    dir = open dirname, 'r'
-    dir.fsync
-  rescue # ignore IOError if it's an unpatched (old) Ruby
-  ensure
-    dir.close if dir rescue nil
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_header.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_header.rb
deleted file mode 100644
index c194cc0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_header.rb
+++ /dev/null
@@ -1,245 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-##
-#--
-# struct tarfile_entry_posix {
-#   char name[100];     # ASCII + (Z unless filled)
-#   char mode[8];       # 0 padded, octal, null
-#   char uid[8];        # ditto
-#   char gid[8];        # ditto
-#   char size[12];      # 0 padded, octal, null
-#   char mtime[12];     # 0 padded, octal, null
-#   char checksum[8];   # 0 padded, octal, null, space
-#   char typeflag[1];   # file: "0"  dir: "5"
-#   char linkname[100]; # ASCII + (Z unless filled)
-#   char magic[6];      # "ustar\0"
-#   char version[2];    # "00"
-#   char uname[32];     # ASCIIZ
-#   char gname[32];     # ASCIIZ
-#   char devmajor[8];   # 0 padded, octal, null
-#   char devminor[8];   # o padded, octal, null
-#   char prefix[155];   # ASCII + (Z unless filled)
-# };
-#++
-
-class Gem::Package::TarHeader
-
-  FIELDS = [
-    :checksum,
-    :devmajor,
-    :devminor,
-    :gid,
-    :gname,
-    :linkname,
-    :magic,
-    :mode,
-    :mtime,
-    :name,
-    :prefix,
-    :size,
-    :typeflag,
-    :uid,
-    :uname,
-    :version,
-  ]
-
-  PACK_FORMAT = 'a100' + # name
-                'a8'   + # mode
-                'a8'   + # uid
-                'a8'   + # gid
-                'a12'  + # size
-                'a12'  + # mtime
-                'a7a'  + # chksum
-                'a'    + # typeflag
-                'a100' + # linkname
-                'a6'   + # magic
-                'a2'   + # version
-                'a32'  + # uname
-                'a32'  + # gname
-                'a8'   + # devmajor
-                'a8'   + # devminor
-                'a155'   # prefix
-
-  UNPACK_FORMAT = 'A100' + # name
-                  'A8'   + # mode
-                  'A8'   + # uid
-                  'A8'   + # gid
-                  'A12'  + # size
-                  'A12'  + # mtime
-                  'A8'   + # checksum
-                  'A'    + # typeflag
-                  'A100' + # linkname
-                  'A6'   + # magic
-                  'A2'   + # version
-                  'A32'  + # uname
-                  'A32'  + # gname
-                  'A8'   + # devmajor
-                  'A8'   + # devminor
-                  'A155'   # prefix
-
-  attr_reader(*FIELDS)
-
-  def self.from(stream)
-    header = stream.read 512
-    empty = (header == "\0" * 512)
-
-    fields = header.unpack UNPACK_FORMAT
-
-    name     = fields.shift
-    mode     = fields.shift.oct
-    uid      = fields.shift.oct
-    gid      = fields.shift.oct
-    size     = fields.shift.oct
-    mtime    = fields.shift.oct
-    checksum = fields.shift.oct
-    typeflag = fields.shift
-    linkname = fields.shift
-    magic    = fields.shift
-    version  = fields.shift.oct
-    uname    = fields.shift
-    gname    = fields.shift
-    devmajor = fields.shift.oct
-    devminor = fields.shift.oct
-    prefix   = fields.shift
-
-    new :name     => name,
-        :mode     => mode,
-        :uid      => uid,
-        :gid      => gid,
-        :size     => size,
-        :mtime    => mtime,
-        :checksum => checksum,
-        :typeflag => typeflag,
-        :linkname => linkname,
-        :magic    => magic,
-        :version  => version,
-        :uname    => uname,
-        :gname    => gname,
-        :devmajor => devmajor,
-        :devminor => devminor,
-        :prefix   => prefix,
-
-        :empty    => empty
-
-    # HACK unfactor for Rubinius
-    #new :name     => fields.shift,
-    #    :mode     => fields.shift.oct,
-    #    :uid      => fields.shift.oct,
-    #    :gid      => fields.shift.oct,
-    #    :size     => fields.shift.oct,
-    #    :mtime    => fields.shift.oct,
-    #    :checksum => fields.shift.oct,
-    #    :typeflag => fields.shift,
-    #    :linkname => fields.shift,
-    #    :magic    => fields.shift,
-    #    :version  => fields.shift.oct,
-    #    :uname    => fields.shift,
-    #    :gname    => fields.shift,
-    #    :devmajor => fields.shift.oct,
-    #    :devminor => fields.shift.oct,
-    #    :prefix   => fields.shift,
-
-    #    :empty => empty
-  end
-
-  def initialize(vals)
-    unless vals[:name] && vals[:size] && vals[:prefix] && vals[:mode] then
-      raise ArgumentError, ":name, :size, :prefix and :mode required"
-    end
-
-    vals[:uid] ||= 0
-    vals[:gid] ||= 0
-    vals[:mtime] ||= 0
-    vals[:checksum] ||= ""
-    vals[:typeflag] ||= "0"
-    vals[:magic] ||= "ustar"
-    vals[:version] ||= "00"
-    vals[:uname] ||= "wheel"
-    vals[:gname] ||= "wheel"
-    vals[:devmajor] ||= 0
-    vals[:devminor] ||= 0
-
-    FIELDS.each do |name|
-      instance_variable_set "@#{name}", vals[name]
-    end
-
-    @empty = vals[:empty]
-  end
-
-  def empty?
-    @empty
-  end
-
-  def ==(other)
-    self.class === other and
-    @checksum == other.checksum and
-    @devmajor == other.devmajor and
-    @devminor == other.devminor and
-    @gid      == other.gid      and
-    @gname    == other.gname    and
-    @linkname == other.linkname and
-    @magic    == other.magic    and
-    @mode     == other.mode     and
-    @mtime    == other.mtime    and
-    @name     == other.name     and
-    @prefix   == other.prefix   and
-    @size     == other.size     and
-    @typeflag == other.typeflag and
-    @uid      == other.uid      and
-    @uname    == other.uname    and
-    @version  == other.version
-  end
-
-  def to_s
-    update_checksum
-    header
-  end
-
-  def update_checksum
-    header = header " " * 8
-    @checksum = oct calculate_checksum(header), 6
-  end
-
-  private
-
-  def calculate_checksum(header)
-    header.unpack("C*").inject { |a, b| a + b }
-  end
-
-  def header(checksum = @checksum)
-    header = [
-      name,
-      oct(mode, 7),
-      oct(uid, 7),
-      oct(gid, 7),
-      oct(size, 11),
-      oct(mtime, 11),
-      checksum,
-      " ",
-      typeflag,
-      linkname,
-      magic,
-      oct(version, 2),
-      uname,
-      gname,
-      oct(devmajor, 7),
-      oct(devminor, 7),
-      prefix
-    ]
-
-    header = header.pack PACK_FORMAT
-                  
-    header << ("\0" * ((512 - header.size) % 512))
-  end
-
-  def oct(num, len)
-    "%0#{len}o" % num
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_input.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_input.rb
deleted file mode 100644
index 2ed3d6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_input.rb
+++ /dev/null
@@ -1,219 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarInput
-
-  include Gem::Package::FSyncDir
-  include Enumerable
-
-  attr_reader :metadata
-
-  private_class_method :new
-
-  def self.open(io, security_policy = nil,  &block)
-    is = new io, security_policy
-
-    yield is
-  ensure
-    is.close if is
-  end
-
-  def initialize(io, security_policy = nil)
-    @io = io
-    @tarreader = Gem::Package::TarReader.new @io
-    has_meta = false
-
-    data_sig, meta_sig, data_dgst, meta_dgst = nil, nil, nil, nil
-    dgst_algo = security_policy ? Gem::Security::OPT[:dgst_algo] : nil
-
-    @tarreader.each do |entry|
-      case entry.full_name
-      when "metadata"
-        @metadata = load_gemspec entry.read
-        has_meta = true
-      when "metadata.gz"
-        begin
-          # if we have a security_policy, then pre-read the metadata file
-          # and calculate it's digest
-          sio = nil
-          if security_policy
-            Gem.ensure_ssl_available
-            sio = StringIO.new(entry.read)
-            meta_dgst = dgst_algo.digest(sio.string)
-            sio.rewind
-          end
-
-          gzis = Zlib::GzipReader.new(sio || entry)
-          # YAML wants an instance of IO
-          @metadata = load_gemspec(gzis)
-          has_meta = true
-        ensure
-          gzis.close unless gzis.nil?
-        end
-      when 'metadata.gz.sig'
-        meta_sig = entry.read
-      when 'data.tar.gz.sig'
-        data_sig = entry.read
-      when 'data.tar.gz'
-        if security_policy
-          Gem.ensure_ssl_available
-          data_dgst = dgst_algo.digest(entry.read)
-        end
-      end
-    end
-
-    if security_policy then
-      Gem.ensure_ssl_available
-
-      # map trust policy from string to actual class (or a serialized YAML
-      # file, if that exists)
-      if String === security_policy then
-        if Gem::Security::Policy.key? security_policy then
-          # load one of the pre-defined security policies
-          security_policy = Gem::Security::Policy[security_policy]
-        elsif File.exist? security_policy then
-          # FIXME: this doesn't work yet
-          security_policy = YAML.load File.read(security_policy)
-        else
-          raise Gem::Exception, "Unknown trust policy '#{security_policy}'"
-        end
-      end
-
-      if data_sig && data_dgst && meta_sig && meta_dgst then
-        # the user has a trust policy, and we have a signed gem
-        # file, so use the trust policy to verify the gem signature
-
-        begin
-          security_policy.verify_gem(data_sig, data_dgst, @metadata.cert_chain)
-        rescue Exception => e
-          raise "Couldn't verify data signature: #{e}"
-        end
-
-        begin
-          security_policy.verify_gem(meta_sig, meta_dgst, @metadata.cert_chain)
-        rescue Exception => e
-          raise "Couldn't verify metadata signature: #{e}"
-        end
-      elsif security_policy.only_signed
-        raise Gem::Exception, "Unsigned gem"
-      else
-        # FIXME: should display warning here (trust policy, but
-        # either unsigned or badly signed gem file)
-      end
-    end
-
-    @tarreader.rewind
-    @fileops = Gem::FileOperations.new
-
-    raise Gem::Package::FormatError, "No metadata found!" unless has_meta
-  end
-
-  def close
-    @io.close
-    @tarreader.close
-  end
-
-  def each(&block)
-    @tarreader.each do |entry|
-      next unless entry.full_name == "data.tar.gz"
-      is = zipped_stream entry
-
-      begin
-        Gem::Package::TarReader.new is do |inner|
-          inner.each(&block)
-        end
-      ensure
-        is.close if is
-      end
-    end
-
-    @tarreader.rewind
-  end
-
-  def extract_entry(destdir, entry, expected_md5sum = nil)
-    if entry.directory? then
-      dest = File.join(destdir, entry.full_name)
-
-      if File.dir? dest then
-        @fileops.chmod entry.header.mode, dest, :verbose=>false
-      else
-        @fileops.mkdir_p dest, :mode => entry.header.mode, :verbose => false
-      end
-
-      fsync_dir dest
-      fsync_dir File.join(dest, "..")
-
-      return
-    end
-
-    # it's a file
-    md5 = Digest::MD5.new if expected_md5sum
-    destdir = File.join destdir, File.dirname(entry.full_name)
-    @fileops.mkdir_p destdir, :mode => 0755, :verbose => false
-    destfile = File.join destdir, File.basename(entry.full_name)
-    @fileops.chmod 0600, destfile, :verbose => false rescue nil # Errno::ENOENT
-
-    open destfile, "wb", entry.header.mode do |os|
-      loop do
-        data = entry.read 4096
-        break unless data
-        # HACK shouldn't we check the MD5 before writing to disk?
-        md5 << data if expected_md5sum
-        os.write(data)
-      end
-
-      os.fsync
-    end
-
-    @fileops.chmod entry.header.mode, destfile, :verbose => false
-    fsync_dir File.dirname(destfile)
-    fsync_dir File.join(File.dirname(destfile), "..")
-
-    if expected_md5sum && expected_md5sum != md5.hexdigest then
-      raise Gem::Package::BadCheckSum
-    end
-  end
-
-  # Attempt to YAML-load a gemspec from the given _io_ parameter.  Return
-  # nil if it fails.
-  def load_gemspec(io)
-    Gem::Specification.from_yaml io
-  rescue Gem::Exception
-    nil
-  end
-
-  ##
-  # Return an IO stream for the zipped entry.
-  #
-  # NOTE:  Originally this method used two approaches, Return a GZipReader
-  # directly, or read the GZipReader into a string and return a StringIO on
-  # the string.  The string IO approach was used for versions of ZLib before
-  # 1.2.1 to avoid buffer errors on windows machines.  Then we found that
-  # errors happened with 1.2.1 as well, so we changed the condition.  Then
-  # we discovered errors occurred with versions as late as 1.2.3.  At this
-  # point (after some benchmarking to show we weren't seriously crippling
-  # the unpacking speed) we threw our hands in the air and declared that
-  # this method would use the String IO approach on all platforms at all
-  # times.  And that's the way it is.
-
-  def zipped_stream(entry)
-    if defined? Rubinius then
-      zis = Zlib::GzipReader.new entry
-      dis = zis.read
-      is = StringIO.new(dis)
-    else
-      # This is Jamis Buck's Zlib workaround for some unknown issue
-      entry.read(10) # skip the gzip header
-      zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
-      is = StringIO.new(zis.inflate(entry.read))
-    end
-  ensure
-    zis.finish if zis
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_output.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_output.rb
deleted file mode 100644
index b22f7dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_output.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-##
-# TarOutput is a wrapper to TarWriter that builds gem-format tar file.
-#
-# Gem-format tar files contain the following files:
-# [data.tar.gz] A gzipped tar file containing the files that compose the gem
-#               which will be extracted into the gem/ dir on installation.
-# [metadata.gz] A YAML format Gem::Specification.
-# [data.tar.gz.sig] A signature for the gem's data.tar.gz.
-# [metadata.gz.sig] A signature for the gem's metadata.gz.
-#
-# See TarOutput::open for usage details.
-
-class Gem::Package::TarOutput
-
-  ##
-  # Creates a new TarOutput which will yield a TarWriter object for the
-  # data.tar.gz portion of a gem-format tar file.
-  #
-  # See #initialize for details on +io+ and +signer+.
-  #
-  # See #add_gem_contents for details on adding metadata to the tar file.
-
-  def self.open(io, signer = nil, &block) # :yield: data_tar_writer
-    tar_outputter = new io, signer
-    tar_outputter.add_gem_contents(&block)
-    tar_outputter.add_metadata
-    tar_outputter.add_signatures
-
-  ensure
-    tar_outputter.close
-  end
-
-  ##
-  # Creates a new TarOutput that will write a gem-format tar file to +io+.  If
-  # +signer+ is given, the data.tar.gz and metadata.gz will be signed and
-  # the signatures will be added to the tar file.
-
-  def initialize(io, signer)
-    @io = io
-    @signer = signer
-
-    @tar_writer = Gem::Package::TarWriter.new @io
-
-    @metadata = nil
-
-    @data_signature = nil
-    @meta_signature = nil
-  end
-
-  ##
-  # Yields a TarWriter for the data.tar.gz inside a gem-format tar file.
-  # The yielded TarWriter has been extended with a #metadata= method for
-  # attaching a YAML format Gem::Specification which will be written by
-  # add_metadata.
-
-  def add_gem_contents
-    @tar_writer.add_file "data.tar.gz", 0644 do |inner|
-      sio = @signer ? StringIO.new : nil
-      Zlib::GzipWriter.wrap(sio || inner) do |os|
-
-        Gem::Package::TarWriter.new os do |data_tar_writer|
-          def data_tar_writer.metadata() @metadata end
-          def data_tar_writer.metadata=(metadata) @metadata = metadata end
-
-          yield data_tar_writer
-
-          @metadata = data_tar_writer.metadata
-        end
-      end
-
-      # if we have a signing key, then sign the data
-      # digest and return the signature
-      if @signer then
-        digest = Gem::Security::OPT[:dgst_algo].digest sio.string
-        @data_signature = @signer.sign digest
-        inner.write sio.string
-      end
-    end
-
-    self
-  end
-
-  ##
-  # Adds metadata.gz to the gem-format tar file which was saved from a
-  # previous #add_gem_contents call.
-
-  def add_metadata
-    return if @metadata.nil?
-
-    @tar_writer.add_file "metadata.gz", 0644 do |io|
-      begin
-        sio = @signer ? StringIO.new : nil
-        gzos = Zlib::GzipWriter.new(sio || io)
-        gzos.write @metadata
-      ensure
-        gzos.flush
-        gzos.finish
-
-        # if we have a signing key, then sign the metadata digest and return
-        # the signature
-        if @signer then
-          digest = Gem::Security::OPT[:dgst_algo].digest sio.string
-          @meta_signature = @signer.sign digest
-          io.write sio.string
-        end
-      end
-    end
-  end
-
-  ##
-  # Adds data.tar.gz.sig and metadata.gz.sig to the gem-format tar files if
-  # a Gem::Security::Signer was sent to initialize.
-
-  def add_signatures
-    if @data_signature then
-      @tar_writer.add_file 'data.tar.gz.sig', 0644 do |io|
-        io.write @data_signature
-      end
-    end
-
-    if @meta_signature then
-      @tar_writer.add_file 'metadata.gz.sig', 0644 do |io|
-        io.write @meta_signature
-      end
-    end
-  end
-
-  ##
-  # Closes the TarOutput.
-
-  def close
-    @tar_writer.close
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb
deleted file mode 100644
index 4aa9c26..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarReader
-
-  include Gem::Package
-
-  class UnexpectedEOF < StandardError; end
-
-  def self.new(io)
-    reader = super
-
-    return reader unless block_given?
-
-    begin
-      yield reader
-    ensure
-      reader.close
-    end
-
-    nil
-  end
-
-  def initialize(io)
-    @io = io
-    @init_pos = io.pos
-  end
-
-  def close
-  end
-
-  def each
-    loop do
-      return if @io.eof?
-
-      header = Gem::Package::TarHeader.from @io
-      return if header.empty?
-
-      entry = Gem::Package::TarReader::Entry.new header, @io
-      size = entry.header.size
-
-      yield entry
-
-      skip = (512 - (size % 512)) % 512
-      pending = size - entry.bytes_read
-
-      begin
-        # avoid reading...
-        @io.seek pending, IO::SEEK_CUR
-        pending = 0
-      rescue Errno::EINVAL, NameError
-        while pending > 0 do
-          bytes_read = @io.read([pending, 4096].min).size
-          raise UnexpectedEOF if @io.eof?
-          pending -= bytes_read
-        end
-      end
-
-      @io.read skip # discard trailing zeros
-
-      # make sure nobody can use #read, #getc or #rewind anymore
-      entry.close
-    end
-  end
-
-  alias each_entry each
-
-  ##
-  # NOTE: Do not call #rewind during #each
-
-  def rewind
-    if @init_pos == 0 then
-      raise Gem::Package::NonSeekableIO unless @io.respond_to? :rewind
-      @io.rewind
-    else
-      raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-      @io.pos = @init_pos
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb
deleted file mode 100644
index dcc6615..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarReader::Entry
-
-  attr_reader :header
-
-  def initialize(header, io)
-    @closed = false
-    @header = header
-    @io = io
-    @orig_pos = @io.pos
-    @read = 0
-  end
-
-  def check_closed # :nodoc:
-    raise IOError, "closed #{self.class}" if closed?
-  end
-
-  def bytes_read
-    @read
-  end
-
-  def close
-    @closed = true
-  end
-
-  def closed?
-    @closed
-  end
-
-  def eof?
-    check_closed
-
-    @read >= @header.size
-  end
-
-  def full_name
-    if @header.prefix != "" then
-      File.join @header.prefix, @header.name
-    else
-      @header.name
-    end
-  end
-
-  def getc
-    check_closed
-
-    return nil if @read >= @header.size
-
-    ret = @io.getc
-    @read += 1 if ret
-
-    ret
-  end
-
-  def directory?
-    @header.typeflag == "5"
-  end
-
-  def file?
-    @header.typeflag == "0"
-  end
-
-  def pos
-    check_closed
-
-    bytes_read
-  end
-
-  def read(len = nil)
-    check_closed
-
-    return nil if @read >= @header.size
-
-    len ||= @header.size - @read
-    max_read = [len, @header.size - @read].min
-
-    ret = @io.read max_read
-    @read += ret.size
-
-    ret
-  end
-
-  def rewind
-    check_closed
-
-    raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-
-    @io.pos = @orig_pos
-    @read = 0
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb
deleted file mode 100644
index 6e11440..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb
+++ /dev/null
@@ -1,180 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarWriter
-
-  class FileOverflow < StandardError; end
-
-  class BoundedStream
-
-    attr_reader :limit, :written
-
-    def initialize(io, limit)
-      @io = io
-      @limit = limit
-      @written = 0
-    end
-
-    def write(data)
-      if data.size + @written > @limit
-        raise FileOverflow, "You tried to feed more data than fits in the file."
-      end
-      @io.write data
-      @written += data.size
-      data.size
-    end
-
-  end
-
-  class RestrictedStream
-
-    def initialize(io)
-      @io = io
-    end
-
-    def write(data)
-      @io.write data
-    end
-
-  end
-
-  def self.new(io)
-    writer = super
-
-    return writer unless block_given?
-
-    begin
-      yield writer
-    ensure
-      writer.close
-    end
-
-    nil
-  end
-
-  def initialize(io)
-    @io = io
-    @closed = false
-  end
-
-  def add_file(name, mode)
-    check_closed
-
-    raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-
-    name, prefix = split_name name
-
-    init_pos = @io.pos
-    @io.write "\0" * 512 # placeholder for the header
-
-    yield RestrictedStream.new(@io) if block_given?
-
-    size = @io.pos - init_pos - 512
-
-    remainder = (512 - (size % 512)) % 512
-    @io.write "\0" * remainder
-
-    final_pos = @io.pos
-    @io.pos = init_pos
-
-    header = Gem::Package::TarHeader.new :name => name, :mode => mode,
-                                         :size => size, :prefix => prefix
-
-    @io.write header
-    @io.pos = final_pos
-
-    self
-  end
-
-  def add_file_simple(name, mode, size)
-    check_closed
-
-    name, prefix = split_name name
-
-    header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
-                                         :size => size, :prefix => prefix).to_s
-
-    @io.write header
-    os = BoundedStream.new @io, size
-
-    yield os if block_given?
-
-    min_padding = size - os.written
-    @io.write("\0" * min_padding)
-
-    remainder = (512 - (size % 512)) % 512
-    @io.write("\0" * remainder)
-
-    self
-  end
-
-  def check_closed
-    raise IOError, "closed #{self.class}" if closed?
-  end
-
-  def close
-    check_closed
-
-    @io.write "\0" * 1024
-    flush
-
-    @closed = true
-  end
-
-  def closed?
-    @closed
-  end
-
-  def flush
-    check_closed
-
-    @io.flush if @io.respond_to? :flush
-  end
-
-  def mkdir(name, mode)
-    check_closed
-
-    name, prefix = split_name(name)
-
-    header = Gem::Package::TarHeader.new :name => name, :mode => mode,
-                                         :typeflag => "5", :size => 0,
-                                         :prefix => prefix
-
-    @io.write header
-
-    self
-  end
-
-  def split_name(name) # :nodoc:
-    raise Gem::Package::TooLongFileName if name.size > 256
-
-    if name.size <= 100 then
-      prefix = ""
-    else
-      parts = name.split(/\//)
-      newname = parts.pop
-      nxt = ""
-
-      loop do
-        nxt = parts.pop
-        break if newname.size + 1 + nxt.size > 100
-        newname = nxt + "/" + newname
-      end
-
-      prefix = (parts + [nxt]).join "/"
-      name = newname
-
-      if name.size > 100 or prefix.size > 155 then
-        raise Gem::Package::TooLongFileName 
-      end
-    end
-
-    return name, prefix
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/platform.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/platform.rb
deleted file mode 100644
index 3e5b5cd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/platform.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-require 'rubygems'
-
-##
-# Available list of platforms for targeting Gem installations.
-
-class Gem::Platform
-
-  @local = nil
-
-  attr_accessor :cpu
-
-  attr_accessor :os
-
-  attr_accessor :version
-
-  def self.local
-    arch = Gem::ConfigMap[:arch]
-    arch = "#{arch}_60" if arch =~ /mswin32$/
-    @local ||= new(arch)
-  end
-
-  def self.match(platform)
-    Gem.platforms.any? do |local_platform|
-      platform.nil? or local_platform == platform or
-        (local_platform != Gem::Platform::RUBY and local_platform =~ platform)
-    end
-  end
-
-  def self.new(arch) # :nodoc:
-    case arch
-    when Gem::Platform::CURRENT then
-      Gem::Platform.local
-    when Gem::Platform::RUBY, nil, '' then
-      Gem::Platform::RUBY
-    else
-      super
-    end
-  end
-
-  def initialize(arch)
-    case arch
-    when Array then
-      @cpu, @os, @version = arch
-    when String then
-      arch = arch.split '-'
-
-      if arch.length > 2 and arch.last !~ /\d/ then # reassemble x86-linux-gnu
-        extra = arch.pop
-        arch.last << "-#{extra}"
-      end
-
-      cpu = arch.shift
-
-      @cpu = case cpu
-             when /i\d86/ then 'x86'
-             else cpu
-             end
-
-      if arch.length == 2 and arch.last =~ /^\d+(\.\d+)?$/ then # for command-line
-        @os, @version = arch
-        return
-      end
-
-      os, = arch
-      @cpu, os = nil, cpu if os.nil? # legacy jruby
-
-      @os, @version = case os
-                      when /aix(\d+)/ then             [ 'aix',       $1  ]
-                      when /cygwin/ then               [ 'cygwin',    nil ]
-                      when /darwin(\d+)?/ then         [ 'darwin',    $1  ]
-                      when /freebsd(\d+)/ then         [ 'freebsd',   $1  ]
-                      when /hpux(\d+)/ then            [ 'hpux',      $1  ]
-                      when /^java$/, /^jruby$/ then    [ 'java',      nil ]
-                      when /^java([\d.]*)/ then        [ 'java',      $1  ]
-                      when /linux/ then                [ 'linux',     $1  ]
-                      when /mingw32/ then              [ 'mingw32',   nil ]
-                      when /(mswin\d+)(\_(\d+))?/ then
-                        os, version = $1, $3
-                        @cpu = 'x86' if @cpu.nil? and os =~ /32$/
-                        [os, version]
-                      when /netbsdelf/ then            [ 'netbsdelf', nil ]
-                      when /openbsd(\d+\.\d+)/ then    [ 'openbsd',   $1  ]
-                      when /solaris(\d+\.\d+)/ then    [ 'solaris',   $1  ]
-                      # test
-                      when /^(\w+_platform)(\d+)/ then [ $1,          $2  ]
-                      else                             [ 'unknown',   nil ]
-                      end
-    when Gem::Platform then
-      @cpu = arch.cpu
-      @os = arch.os
-      @version = arch.version
-    else
-      raise ArgumentError, "invalid argument #{arch.inspect}"
-    end
-  end
-
-  def inspect
-    "#<%s:0x%x @cpu=%p, @os=%p, @version=%p>" % [self.class, object_id, *to_a]
-  end
-
-  def to_a
-    [@cpu, @os, @version]
-  end
-
-  def to_s
-    to_a.compact.join '-'
-  end
-
-  ##
-  # Is +other+ equal to this platform?  Two platforms are equal if they have
-  # the same CPU, OS and version.
-
-  def ==(other)
-    self.class === other and
-      @cpu == other.cpu and @os == other.os and @version == other.version
-  end
-
-  ##
-  # Does +other+ match this platform?  Two platforms match if they have the
-  # same CPU, or either has a CPU of 'universal', they have the same OS, and
-  # they have the same version, or either has no version.
-
-  def ===(other)
-    return nil unless Gem::Platform === other
-
-    # cpu
-    (@cpu == 'universal' or other.cpu == 'universal' or @cpu == other.cpu) and
-
-    # os
-    @os == other.os and
-
-    # version
-    (@version.nil? or other.version.nil? or @version == other.version)
-  end
-
-  ##
-  # Does +other+ match this platform?  If +other+ is a String it will be
-  # converted to a Gem::Platform first.  See #=== for matching rules.
-
-  def =~(other)
-    case other
-    when Gem::Platform then # nop
-    when String then
-      # This data is from http://gems.rubyforge.org/gems/yaml on 19 Aug 2007
-      other = case other
-              when /^i686-darwin(\d)/ then     ['x86',       'darwin',  $1]
-              when /^i\d86-linux/ then         ['x86',       'linux',   nil]
-              when 'java', 'jruby' then        [nil,         'java',    nil]
-              when /mswin32(\_(\d+))?/ then    ['x86',       'mswin32', $2]
-              when 'powerpc-darwin' then       ['powerpc',   'darwin',  nil]
-              when /powerpc-darwin(\d)/ then   ['powerpc',   'darwin',  $1]
-              when /sparc-solaris2.8/ then     ['sparc',     'solaris', '2.8']
-              when /universal-darwin(\d)/ then ['universal', 'darwin',  $1]
-              else                             other
-              end
-
-      other = Gem::Platform.new other
-    else
-      return nil
-    end
-
-    self === other
-  end
-
-  ##
-  # A pure-ruby gem that may use Gem::Specification#extensions to build
-  # binary files.
-
-  RUBY = 'ruby'
-
-  ##
-  # A platform-specific gem that is built for the packaging ruby's platform.
-  # This will be replaced with Gem::Platform::local.
-
-  CURRENT = 'current'
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb
deleted file mode 100644
index 1570740..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-require 'net/http'
-require 'stringio'
-require 'time'
-require 'uri'
-
-require 'rubygems'
-
-##
-# RemoteFetcher handles the details of fetching gems and gem information from
-# a remote source.
-
-class Gem::RemoteFetcher
-
-  include Gem::UserInteraction
-
-  ##
-  # A FetchError exception wraps up the various possible IO and HTTP failures
-  # that could happen while downloading from the internet.
-
-  class FetchError < Gem::Exception
-
-    ##
-    # The URI which was being accessed when the exception happened.
-
-    attr_accessor :uri
-
-    def initialize(message, uri)
-      super message
-      @uri = uri
-    end
-
-    def to_s # :nodoc:
-      "#{super} (#{uri})"
-    end
-
-  end
-
-  @fetcher = nil
-
-  ##
-  # Cached RemoteFetcher instance.
-
-  def self.fetcher
-    @fetcher ||= self.new Gem.configuration[:http_proxy]
-  end
-
-  ##
-  # Initialize a remote fetcher using the source URI and possible proxy
-  # information.
-  #
-  # +proxy+
-  # * [String]: explicit specification of proxy; overrides any environment
-  #             variable setting
-  # * nil: respect environment variables (HTTP_PROXY, HTTP_PROXY_USER,
-  #        HTTP_PROXY_PASS)
-  # * <tt>:no_proxy</tt>: ignore environment variables and _don't_ use a proxy
-
-  def initialize(proxy)
-    Socket.do_not_reverse_lookup = true
-
-    @connections = {}
-    @requests = Hash.new 0
-    @proxy_uri =
-      case proxy
-      when :no_proxy then nil
-      when nil then get_proxy_from_env
-      when URI::HTTP then proxy
-      else URI.parse(proxy)
-      end
-  end
-
-  ##
-  # Moves the gem +spec+ from +source_uri+ to the cache dir unless it is
-  # already there.  If the source_uri is local the gem cache dir copy is
-  # always replaced.
-
-  def download(spec, source_uri, install_dir = Gem.dir)
-    if File.writable?(install_dir)
-      cache_dir = File.join install_dir, 'cache'
-    else
-      cache_dir = File.join(Gem.user_dir, 'cache')
-    end
-
-    gem_file_name = "#{spec.full_name}.gem"
-    local_gem_path = File.join cache_dir, gem_file_name
-
-    FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
-
-    source_uri = URI.parse source_uri unless URI::Generic === source_uri
-    scheme = source_uri.scheme
-
-    # URI.parse gets confused by MS Windows paths with forward slashes.
-    scheme = nil if scheme =~ /^[a-z]$/i
-
-    case scheme
-    when 'http', 'https' then
-      unless File.exist? local_gem_path then
-        begin
-          say "Downloading gem #{gem_file_name}" if
-            Gem.configuration.really_verbose
-
-          remote_gem_path = source_uri + "gems/#{gem_file_name}"
-
-          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
-        rescue Gem::RemoteFetcher::FetchError
-          raise if spec.original_platform == spec.platform
-
-          alternate_name = "#{spec.original_name}.gem"
-
-          say "Failed, downloading gem #{alternate_name}" if
-            Gem.configuration.really_verbose
-
-          remote_gem_path = source_uri + "gems/#{alternate_name}"
-
-          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
-        end
-
-        File.open local_gem_path, 'wb' do |fp|
-          fp.write gem
-        end
-      end
-    when nil, 'file' then # TODO test for local overriding cache
-      begin
-        FileUtils.cp source_uri.to_s, local_gem_path
-      rescue Errno::EACCES
-        local_gem_path = source_uri.to_s
-      end
-
-      say "Using local gem #{local_gem_path}" if
-        Gem.configuration.really_verbose
-    else
-      raise Gem::InstallError, "unsupported URI scheme #{source_uri.scheme}"
-    end
-
-    local_gem_path
-  end
-
-  ##
-  # Downloads +uri+ and returns it as a String.
-
-  def fetch_path(uri, mtime = nil, head = false)
-    data = open_uri_or_path uri, mtime, head
-    data = Gem.gunzip data if data and not head and uri.to_s =~ /gz$/
-    data
-  rescue FetchError
-    raise
-  rescue Timeout::Error
-    raise FetchError.new('timed out', uri)
-  rescue IOError, SocketError, SystemCallError => e
-    raise FetchError.new("#{e.class}: #{e}", uri)
-  end
-
-  ##
-  # Returns the size of +uri+ in bytes.
-
-  def fetch_size(uri) # TODO: phase this out
-    response = fetch_path(uri, nil, true)
-
-    response['content-length'].to_i
-  end
-
-  def escape(str)
-    return unless str
-    URI.escape(str)
-  end
-
-  def unescape(str)
-    return unless str
-    URI.unescape(str)
-  end
-
-  ##
-  # Returns an HTTP proxy URI if one is set in the environment variables.
-
-  def get_proxy_from_env
-    env_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
-
-    return nil if env_proxy.nil? or env_proxy.empty?
-
-    uri = URI.parse env_proxy
-
-    if uri and uri.user.nil? and uri.password.nil? then
-      # Probably we have http_proxy_* variables?
-      uri.user = escape(ENV['http_proxy_user'] || ENV['HTTP_PROXY_USER'])
-      uri.password = escape(ENV['http_proxy_pass'] || ENV['HTTP_PROXY_PASS'])
-    end
-
-    uri
-  end
-
-  ##
-  # Normalize the URI by adding "http://" if it is missing.
-
-  def normalize_uri(uri)
-    (uri =~ /^(https?|ftp|file):/) ? uri : "http://#{uri}"
-  end
-
-  ##
-  # Creates or an HTTP connection based on +uri+, or retrieves an existing
-  # connection, using a proxy if needed.
-
-  def connection_for(uri)
-    net_http_args = [uri.host, uri.port]
-
-    if @proxy_uri then
-      net_http_args += [
-        @proxy_uri.host,
-        @proxy_uri.port,
-        @proxy_uri.user,
-        @proxy_uri.password
-      ]
-    end
-
-    connection_id = net_http_args.join ':'
-    @connections[connection_id] ||= Net::HTTP.new(*net_http_args)
-    connection = @connections[connection_id]
-
-    if uri.scheme == 'https' and not connection.started? then
-      require 'net/https'
-      connection.use_ssl = true
-      connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
-    end
-
-    connection.start unless connection.started?
-
-    connection
-  end
-
-  ##
-  # Read the data from the (source based) URI, but if it is a file:// URI,
-  # read from the filesystem instead.
-
-  def open_uri_or_path(uri, last_modified = nil, head = false, depth = 0)
-    raise "block is dead" if block_given?
-
-    return open(get_file_uri_path(uri)) if file_uri? uri
-
-    uri = URI.parse uri unless URI::Generic === uri
-    raise ArgumentError, 'uri is not an HTTP URI' unless URI::HTTP === uri
-
-    fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
-    response   = request uri, fetch_type, last_modified
-
-    case response
-    when Net::HTTPOK, Net::HTTPNotModified then
-      head ? response : response.body
-    when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
-         Net::HTTPTemporaryRedirect then
-      raise FetchError.new('too many redirects', uri) if depth > 10
-
-      open_uri_or_path(response['Location'], last_modified, head, depth + 1)
-    else
-      raise FetchError.new("bad response #{response.message} #{response.code}", uri)
-    end
-  end
-
-  ##
-  # Performs a Net::HTTP request of type +request_class+ on +uri+ returning
-  # a Net::HTTP response object.  request maintains a table of persistent
-  # connections to reduce connect overhead.
-
-  def request(uri, request_class, last_modified = nil)
-    request = request_class.new uri.request_uri
-
-    unless uri.nil? || uri.user.nil? || uri.user.empty? then
-      request.basic_auth uri.user, uri.password
-    end
-
-    ua = "RubyGems/#{Gem::RubyGemsVersion} #{Gem::Platform.local}"
-    ua << " Ruby/#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
-    ua << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-    ua << ")"
-
-    request.add_field 'User-Agent', ua
-    request.add_field 'Connection', 'keep-alive'
-    request.add_field 'Keep-Alive', '30'
-
-    if last_modified then
-      last_modified = last_modified.utc
-      request.add_field 'If-Modified-Since', last_modified.rfc2822
-    end
-
-    connection = connection_for uri
-
-    retried = false
-    bad_response = false
-
-    begin
-      @requests[connection.object_id] += 1
-      response = connection.request request
-      say "#{request.method} #{response.code} #{response.message}: #{uri}" if
-        Gem.configuration.really_verbose
-    rescue Net::HTTPBadResponse
-      reset connection
-
-      raise FetchError.new('too many bad responses', uri) if bad_response
-
-      bad_response = true
-      retry
-    # HACK work around EOFError bug in Net::HTTP
-    # NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible
-    # to install gems.
-    rescue EOFError, Errno::ECONNABORTED, Errno::ECONNRESET
-      requests = @requests[connection.object_id]
-      say "connection reset after #{requests} requests, retrying" if
-        Gem.configuration.really_verbose
-
-      raise FetchError.new('too many connection resets', uri) if retried
-
-      reset connection
-
-      retried = true
-      retry
-    end
-
-    response
-  end
-
-  ##
-  # Resets HTTP connection +connection+.
-
-  def reset(connection)
-    @requests.delete connection.object_id
-
-    connection.finish
-    connection.start
-  end
-
-  ##
-  # Checks if the provided string is a file:// URI.
-
-  def file_uri?(uri)
-    uri =~ %r{\Afile://}
-  end
-
-  ##
-  # Given a file:// URI, returns its local path.
-
-  def get_file_uri_path(uri)
-    uri.sub(%r{\Afile://}, '')
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb
deleted file mode 100644
index fe4f593..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Gem
-  module RequirePathsBuilder
-    def write_require_paths_file_if_needed(spec = @spec, gem_home = @gem_home)
-      return if spec.require_paths == ["lib"] && (spec.bindir.nil? || spec.bindir == "bin")
-      file_name = File.join(gem_home, 'gems', "#{@spec.full_name}", ".require_paths")
-      file_name.untaint
-      File.open(file_name, "w") do |file|
-        spec.require_paths.each do |path|
-          file.puts path
-        end
-        file.puts spec.bindir if spec.bindir
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/requirement.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/requirement.rb
deleted file mode 100644
index c9128b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/requirement.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/version'
-
-##
-# Requirement version includes a prefaced comparator in addition
-# to a version number.
-#
-# A Requirement object can actually contain multiple, er,
-# requirements, as in (> 1.2, < 2.0).
-
-class Gem::Requirement
-
-  include Comparable
-
-  attr_reader :requirements
-
-  OPS = {
-    "="  =>  lambda { |v, r| v == r },
-    "!=" =>  lambda { |v, r| v != r },
-    ">"  =>  lambda { |v, r| v > r },
-    "<"  =>  lambda { |v, r| v < r },
-    ">=" =>  lambda { |v, r| v >= r },
-    "<=" =>  lambda { |v, r| v <= r },
-    "~>" =>  lambda { |v, r| v >= r && v < r.bump }
-  }
-
-  OP_RE = /#{OPS.keys.map{ |k| Regexp.quote k }.join '|'}/o
-
-  ##
-  # Factory method to create a Gem::Requirement object.  Input may be a
-  # Version, a String, or nil.  Intended to simplify client code.
-  #
-  # If the input is "weird", the default version requirement is returned.
-
-  def self.create(input)
-    case input
-    when Gem::Requirement then
-      input
-    when Gem::Version, Array then
-      new input
-    else
-      if input.respond_to? :to_str then
-        self.new [input.to_str]
-      else
-        self.default
-      end
-    end
-  end
-
-  ##
-  # A default "version requirement" can surely _only_ be '>= 0'.
-  #--
-  # This comment once said:
-  #
-  # "A default "version requirement" can surely _only_ be '> 0'."
-
-  def self.default
-    self.new ['>= 0']
-  end
-
-  ##
-  # Constructs a Requirement from +requirements+ which can be a String, a
-  # Gem::Version, or an Array of those.  See parse for details on the
-  # formatting of requirement strings.
-
-  def initialize(requirements)
-    @requirements = case requirements
-                    when Array then
-                      requirements.map do |requirement|
-                        parse(requirement)
-                      end
-                    else
-                      [parse(requirements)]
-                    end
-    @version = nil   # Avoid warnings.
-  end
-
-  ##
-  # Marshal raw requirements, rather than the full object
-
-  def marshal_dump # :nodoc:
-    [@requirements]
-  end
-
-  ##
-  # Load custom marshal format
-
-  def marshal_load(array) # :nodoc:
-    @requirements = array[0]
-    @version = nil
-  end
-
-  def to_s # :nodoc:
-    as_list.join(", ")
-  end
-
-  def as_list
-    normalize
-    @requirements.collect { |req|
-      "#{req[0]} #{req[1]}"
-    }
-  end
-
-  def normalize
-    return if not defined? @version or @version.nil?
-    @requirements = [parse(@version)]
-    @nums = nil
-    @version = nil
-    @op = nil
-  end
-
-  ##
-  # True if this requirement satisfied by the Gem::Version +version+.
-
-  def satisfied_by?(version)
-    normalize
-    @requirements.all? { |op, rv| satisfy?(op, version, rv) }
-  end
-
-  ##
-  # Is "+version+ +op+ +required_version+" satisfied?
-
-  def satisfy?(op, version, required_version)
-    OPS[op].call(version, required_version)
-  end
-
-  ##
-  # Parse the version requirement obj returning the operator and version.
-  #
-  # The requirement can be a String or a Gem::Version.  A String can be an
-  # operator (<, <=, =, =>, >, !=, ~>), a version number, or both, operator
-  # first.
-
-  def parse(obj)
-    case obj
-    when /^\s*(#{OP_RE})\s*([0-9.]+)\s*$/o then
-      [$1, Gem::Version.new($2)]
-    when /^\s*([0-9.]+)\s*$/ then
-      ['=', Gem::Version.new($1)]
-    when /^\s*(#{OP_RE})\s*$/o then
-      [$1, Gem::Version.new('0')]
-    when Gem::Version then
-      ['=', obj]
-    else
-      fail ArgumentError, "Illformed requirement [#{obj.inspect}]"
-    end
-  end
-
-  def <=>(other) # :nodoc:
-    to_s <=> other.to_s
-  end
-
-  def hash # :nodoc:
-    to_s.hash
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/rubygems_version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/rubygems_version.rb
deleted file mode 100644
index d7b5622..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/rubygems_version.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# DO NOT EDIT
-# This file is auto-generated by build scripts.
-# See:  rake update_version
-module Gem
-  RubyGemsVersion = '1.3.1'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/security.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/security.rb
deleted file mode 100644
index 42a3cf8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/security.rb
+++ /dev/null
@@ -1,786 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/gem_openssl'
-
-# = Signed Gems README
-#
-# == Table of Contents
-# * Overview
-# * Walkthrough
-# * Command-Line Options
-# * OpenSSL Reference
-# * Bugs/TODO
-# * About the Author
-#
-# == Overview
-#
-# Gem::Security implements cryptographic signatures in RubyGems.  The section
-# below is a step-by-step guide to using signed gems and generating your own.
-#
-# == Walkthrough
-#
-# In order to start signing your gems, you'll need to build a private key and
-# a self-signed certificate.  Here's how:
-#
-#   # build a private key and certificate for gemmaster at example.com
-#   $ gem cert --build gemmaster at example.com
-#
-# This could take anywhere from 5 seconds to 10 minutes, depending on the
-# speed of your computer (public key algorithms aren't exactly the speediest
-# crypto algorithms in the world).  When it's finished, you'll see the files
-# "gem-private_key.pem" and "gem-public_cert.pem" in the current directory.
-#
-# First things first: take the "gem-private_key.pem" file and move it
-# somewhere private, preferably a directory only you have access to, a floppy
-# (yuck!), a CD-ROM, or something comparably secure.  Keep your private key
-# hidden; if it's compromised, someone can sign packages as you (note: PKI has
-# ways of mitigating the risk of stolen keys; more on that later).
-#
-# Now, let's sign an existing gem.  I'll be using my Imlib2-Ruby bindings, but
-# you can use whatever gem you'd like.  Open up your existing gemspec file and
-# add the following lines:
-#
-#   # signing key and certificate chain
-#   s.signing_key = '/mnt/floppy/gem-private_key.pem'
-#   s.cert_chain  = ['gem-public_cert.pem']
-#
-# (Be sure to replace "/mnt/floppy" with the ultra-secret path to your private
-# key).
-#
-# After that, go ahead and build your gem as usual.  Congratulations, you've
-# just built your first signed gem!  If you peek inside your gem file, you'll
-# see a couple of new files have been added:
-#
-#   $ tar tf tar tf Imlib2-Ruby-0.5.0.gem
-#   data.tar.gz
-#   data.tar.gz.sig
-#   metadata.gz
-#   metadata.gz.sig
-#
-# Now let's verify the signature.  Go ahead and install the gem, but add the
-# following options: "-P HighSecurity", like this:
-#
-#   # install the gem with using the security policy "HighSecurity"
-#   $ sudo gem install Imlib2-Ruby-0.5.0.gem -P HighSecurity
-#
-# The -P option sets your security policy -- we'll talk about that in just a
-# minute.  Eh, what's this?
-#
-#   Attempting local installation of 'Imlib2-Ruby-0.5.0.gem'
-#   ERROR:  Error installing gem Imlib2-Ruby-0.5.0.gem[.gem]: Couldn't
-#   verify data signature: Untrusted Signing Chain Root: cert =
-#   '/CN=gemmaster/DC=example/DC=com', error = 'path
-#   "/root/.rubygems/trust/cert-15dbb43a6edf6a70a85d4e784e2e45312cff7030.pem"
-#   does not exist'
-#
-# The culprit here is the security policy.  RubyGems has several different
-# security policies.  Let's take a short break and go over the security
-# policies.  Here's a list of the available security policies, and a brief
-# description of each one:
-#
-# * NoSecurity - Well, no security at all.  Signed packages are treated like
-#   unsigned packages.
-# * LowSecurity - Pretty much no security.  If a package is signed then
-#   RubyGems will make sure the signature matches the signing
-#   certificate, and that the signing certificate hasn't expired, but
-#   that's it.  A malicious user could easily circumvent this kind of
-#   security.
-# * MediumSecurity - Better than LowSecurity and NoSecurity, but still
-#   fallible.  Package contents are verified against the signing
-#   certificate, and the signing certificate is checked for validity,
-#   and checked against the rest of the certificate chain (if you don't
-#   know what a certificate chain is, stay tuned, we'll get to that).
-#   The biggest improvement over LowSecurity is that MediumSecurity
-#   won't install packages that are signed by untrusted sources.
-#   Unfortunately, MediumSecurity still isn't totally secure -- a
-#   malicious user can still unpack the gem, strip the signatures, and
-#   distribute the gem unsigned.
-# * HighSecurity - Here's the ###### that got us into this mess.
-#   The HighSecurity policy is identical to the MediumSecurity policy,
-#   except that it does not allow unsigned gems.  A malicious user
-#   doesn't have a whole lot of options here; he can't modify the
-#   package contents without invalidating the signature, and he can't
-#   modify or remove signature or the signing certificate chain, or
-#   RubyGems will simply refuse to install the package.  Oh well, maybe
-#   he'll have better luck causing problems for CPAN users instead :).
-#
-# So, the reason RubyGems refused to install our shiny new signed gem was
-# because it was from an untrusted source.  Well, my code is infallible
-# (hah!), so I'm going to add myself as a trusted source.
-#
-# Here's how:
-#
-#     # add trusted certificate
-#     gem cert --add gem-public_cert.pem
-#
-# I've added my public certificate as a trusted source.  Now I can install
-# packages signed my private key without any hassle.  Let's try the install
-# command above again:
-#
-#   # install the gem with using the HighSecurity policy (and this time
-#   # without any shenanigans)
-#   $ sudo gem install Imlib2-Ruby-0.5.0.gem -P HighSecurity
-#
-# This time RubyGems should accept your signed package and begin installing.
-# While you're waiting for RubyGems to work it's magic, have a look at some of
-# the other security commands:
-#
-#   Usage: gem cert [options]
-#
-#   Options:
-#     -a, --add CERT          Add a trusted certificate.
-#     -l, --list              List trusted certificates.
-#     -r, --remove STRING     Remove trusted certificates containing STRING.
-#     -b, --build EMAIL_ADDR  Build private key and self-signed certificate
-#                             for EMAIL_ADDR.
-#     -C, --certificate CERT  Certificate for --sign command.
-#     -K, --private-key KEY   Private key for --sign command.
-#     -s, --sign NEWCERT      Sign a certificate with my key and certificate.
-#
-# (By the way, you can pull up this list any time you'd like by typing "gem
-# cert --help")
-#
-# Hmm.  We've already covered the "--build" option, and the "--add", "--list",
-# and "--remove" commands seem fairly straightforward; they allow you to add,
-# list, and remove the certificates in your trusted certificate list.  But
-# what's with this "--sign" option?
-#
-# To answer that question, let's take a look at "certificate chains", a
-# concept I mentioned earlier.  There are a couple of problems with
-# self-signed certificates: first of all, self-signed certificates don't offer
-# a whole lot of security.  Sure, the certificate says Yukihiro Matsumoto, but
-# how do I know it was actually generated and signed by matz himself unless he
-# gave me the certificate in person?
-#
-# The second problem is scalability.  Sure, if there are 50 gem authors, then
-# I have 50 trusted certificates, no problem.  What if there are 500 gem
-# authors?  1000?  Having to constantly add new trusted certificates is a
-# pain, and it actually makes the trust system less secure by encouraging
-# RubyGems users to blindly trust new certificates.
-#
-# Here's where certificate chains come in.  A certificate chain establishes an
-# arbitrarily long chain of trust between an issuing certificate and a child
-# certificate.  So instead of trusting certificates on a per-developer basis,
-# we use the PKI concept of certificate chains to build a logical hierarchy of
-# trust.  Here's a hypothetical example of a trust hierarchy based (roughly)
-# on geography:
-#
-#
-#                         --------------------------
-#                         | rubygems at rubyforge.org |
-#                         --------------------------
-#                                     |
-#                   -----------------------------------
-#                   |                                 |
-#       ----------------------------    -----------------------------
-#       | seattle.rb at zenspider.com |    | dcrubyists at richkilmer.com |
-#       ----------------------------    -----------------------------
-#            |                |                 |             |
-#     ---------------   ----------------   -----------   --------------
-#     | alf at seattle |   | bob at portland |   | pabs at dc |   | tomcope at dc |
-#     ---------------   ----------------   -----------   --------------
-#
-#
-# Now, rather than having 4 trusted certificates (one for alf at seattle,
-# bob at portland, pabs at dc, and tomecope at dc), a user could actually get by with 1
-# certificate: the "rubygems at rubyforge.org" certificate.  Here's how it works:
-#
-# I install "Alf2000-Ruby-0.1.0.gem", a package signed by "alf at seattle".  I've
-# never heard of "alf at seattle", but his certificate has a valid signature from
-# the "seattle.rb at zenspider.com" certificate, which in turn has a valid
-# signature from the "rubygems at rubyforge.org" certificate.  Voila!  At this
-# point, it's much more reasonable for me to trust a package signed by
-# "alf at seattle", because I can establish a chain to "rubygems at rubyforge.org",
-# which I do trust.
-#
-# And the "--sign" option allows all this to happen.  A developer creates
-# their build certificate with the "--build" option, then has their
-# certificate signed by taking it with them to their next regional Ruby meetup
-# (in our hypothetical example), and it's signed there by the person holding
-# the regional RubyGems signing certificate, which is signed at the next
-# RubyConf by the holder of the top-level RubyGems certificate.  At each point
-# the issuer runs the same command:
-#
-#   # sign a certificate with the specified key and certificate
-#   # (note that this modifies client_cert.pem!)
-#   $ gem cert -K /mnt/floppy/issuer-priv_key.pem -C issuer-pub_cert.pem
-#      --sign client_cert.pem
-#
-# Then the holder of issued certificate (in this case, our buddy
-# "alf at seattle"), can start using this signed certificate to sign RubyGems.
-# By the way, in order to let everyone else know about his new fancy signed
-# certificate, "alf at seattle" would change his gemspec file to look like this:
-#
-#   # signing key (still kept in an undisclosed location!)
-#   s.signing_key = '/mnt/floppy/alf-private_key.pem'
-#   
-#   # certificate chain (includes the issuer certificate now too)
-#   s.cert_chain  = ['/home/alf/doc/seattlerb-public_cert.pem',
-#                    '/home/alf/doc/alf_at_seattle-public_cert.pem']
-#
-# Obviously, this RubyGems trust infrastructure doesn't exist yet.  Also, in
-# the "real world" issuers actually generate the child certificate from a
-# certificate request, rather than sign an existing certificate.  And our
-# hypothetical infrastructure is missing a certificate revocation system.
-# These are that can be fixed in the future...
-#
-# I'm sure your new signed gem has finished installing by now (unless you're
-# installing rails and all it's dependencies, that is ;D).  At this point you
-# should know how to do all of these new and interesting things:
-#
-# * build a gem signing key and certificate
-# * modify your existing gems to support signing
-# * adjust your security policy
-# * modify your trusted certificate list
-# * sign a certificate
-#
-# If you've got any questions, feel free to contact me at the email address
-# below.  The next couple of sections
-#
-#
-# == Command-Line Options
-#
-# Here's a brief summary of the certificate-related command line options:
-#
-#   gem install
-#     -P, --trust-policy POLICY        Specify gem trust policy.
-#
-#   gem cert
-#     -a, --add CERT                   Add a trusted certificate.
-#     -l, --list                       List trusted certificates.
-#     -r, --remove STRING              Remove trusted certificates containing
-#                                      STRING.
-#     -b, --build EMAIL_ADDR           Build private key and self-signed
-#                                      certificate for EMAIL_ADDR.
-#     -C, --certificate CERT           Certificate for --sign command.
-#     -K, --private-key KEY            Private key for --sign command.
-#     -s, --sign NEWCERT               Sign a certificate with my key and
-#                                      certificate.
-#
-# A more detailed description of each options is available in the walkthrough
-# above.
-#
-#
-# == OpenSSL Reference
-#
-# The .pem files generated by --build and --sign are just basic OpenSSL PEM
-# files.  Here's a couple of useful commands for manipulating them:
-#
-#   # convert a PEM format X509 certificate into DER format:
-#   # (note: Windows .cer files are X509 certificates in DER format)
-#   $ openssl x509 -in input.pem -outform der -out output.der
-#   
-#   # print out the certificate in a human-readable format:
-#   $ openssl x509 -in input.pem -noout -text
-#
-# And you can do the same thing with the private key file as well:
-#
-#   # convert a PEM format RSA key into DER format:
-#   $ openssl rsa -in input_key.pem -outform der -out output_key.der
-#   
-#   # print out the key in a human readable format:
-#   $ openssl rsa -in input_key.pem -noout -text
-#
-# == Bugs/TODO
-#
-# * There's no way to define a system-wide trust list.
-# * custom security policies (from a YAML file, etc)
-# * Simple method to generate a signed certificate request
-# * Support for OCSP, SCVP, CRLs, or some other form of cert
-#   status check (list is in order of preference)
-# * Support for encrypted private keys
-# * Some sort of semi-formal trust hierarchy (see long-winded explanation
-#   above)
-# * Path discovery (for gem certificate chains that don't have a self-signed
-#   root) -- by the way, since we don't have this, THE ROOT OF THE CERTIFICATE
-#   CHAIN MUST BE SELF SIGNED if Policy#verify_root is true (and it is for the
-#   MediumSecurity and HighSecurity policies)
-# * Better explanation of X509 naming (ie, we don't have to use email
-#   addresses)
-# * Possible alternate signing mechanisms (eg, via PGP).  this could be done
-#   pretty easily by adding a :signing_type attribute to the gemspec, then add
-#   the necessary support in other places
-# * Honor AIA field (see note about OCSP above)
-# * Maybe honor restriction extensions?
-# * Might be better to store the certificate chain as a PKCS#7 or PKCS#12
-#   file, instead of an array embedded in the metadata.  ideas?
-# * Possibly embed signature and key algorithms into metadata (right now
-#   they're assumed to be the same as what's set in Gem::Security::OPT)
-#
-# == About the Author
-#
-# Paul Duncan <pabs at pablotron.org>
-# http://pablotron.org/
-
-module Gem::Security
-
-  class Exception < Gem::Exception; end
-
-  #
-  # default options for most of the methods below
-  #
-  OPT = {
-    # private key options
-    :key_algo   => Gem::SSL::PKEY_RSA,
-    :key_size   => 2048,
-
-    # public cert options
-    :cert_age   => 365 * 24 * 3600, # 1 year
-    :dgst_algo  => Gem::SSL::DIGEST_SHA1,
-
-    # x509 certificate extensions
-    :cert_exts  => {
-      'basicConstraints'      => 'CA:FALSE',
-      'subjectKeyIdentifier'  => 'hash',
-      'keyUsage'              => 'keyEncipherment,dataEncipherment,digitalSignature',
-  },
-
-  # save the key and cert to a file in build_self_signed_cert()?
-  :save_key   => true,
-  :save_cert  => true,
-
-  # if you define either of these, then they'll be used instead of
-  # the output_fmt macro below
-  :save_key_path => nil,
-  :save_cert_path => nil,
-
-  # output name format for self-signed certs
-  :output_fmt => 'gem-%s.pem',
-  :munge_re   => Regexp.new(/[^a-z0-9_.-]+/),
-
-  # output directory for trusted certificate checksums
-  :trust_dir => File::join(Gem.user_home, '.gem', 'trust'),
-
-  # default permissions for trust directory and certs
-  :perms => {
-    :trust_dir      => 0700,
-    :trusted_cert   => 0600,
-    :signing_cert   => 0600,
-    :signing_key    => 0600,
-  },
-  }
-
-  #
-  # A Gem::Security::Policy object encapsulates the settings for verifying
-  # signed gem files.  This is the base class.  You can either declare an
-  # instance of this or use one of the preset security policies below.
-  #
-  class Policy
-    attr_accessor :verify_data, :verify_signer, :verify_chain,
-      :verify_root, :only_trusted, :only_signed
-
-    #
-    # Create a new Gem::Security::Policy object with the given mode and
-    # options.
-    #
-    def initialize(policy = {}, opt = {})
-      # set options
-      @opt = Gem::Security::OPT.merge(opt)
-
-      # build policy
-      policy.each_pair do |key, val|
-        case key
-        when :verify_data   then @verify_data   = val
-        when :verify_signer then @verify_signer = val
-        when :verify_chain  then @verify_chain  = val
-        when :verify_root   then @verify_root   = val
-        when :only_trusted  then @only_trusted  = val
-        when :only_signed   then @only_signed   = val
-        end
-      end
-    end
-
-    #
-    # Get the path to the file for this cert.
-    #
-    def self.trusted_cert_path(cert, opt = {})
-      opt = Gem::Security::OPT.merge(opt)
-
-      # get digest algorithm, calculate checksum of root.subject
-      algo = opt[:dgst_algo]
-      dgst = algo.hexdigest(cert.subject.to_s)
-
-      # build path to trusted cert file
-      name = "cert-#{dgst}.pem"
-
-      # join and return path components
-      File::join(opt[:trust_dir], name)
-    end
-
-    #
-    # Verify that the gem data with the given signature and signing chain
-    # matched this security policy at the specified time.
-    #
-    def verify_gem(signature, data, chain, time = Time.now)
-      Gem.ensure_ssl_available
-      cert_class = OpenSSL::X509::Certificate
-      exc = Gem::Security::Exception
-      chain ||= []
-
-      chain = chain.map{ |str| cert_class.new(str) }
-      signer, ch_len = chain[-1], chain.size
-
-      # make sure signature is valid
-      if @verify_data
-        # get digest algorithm (TODO: this should be configurable)
-        dgst = @opt[:dgst_algo]
-
-        # verify the data signature (this is the most important part, so don't
-        # screw it up :D)
-        v = signer.public_key.verify(dgst.new, signature, data)
-        raise exc, "Invalid Gem Signature" unless v
-
-        # make sure the signer is valid
-        if @verify_signer
-          # make sure the signing cert is valid right now
-          v = signer.check_validity(nil, time)
-          raise exc, "Invalid Signature: #{v[:desc]}" unless v[:is_valid]
-        end
-      end
-
-      # make sure the certificate chain is valid
-      if @verify_chain
-        # iterate down over the chain and verify each certificate against it's
-        # issuer
-        (ch_len - 1).downto(1) do |i|
-          issuer, cert = chain[i - 1, 2]
-          v = cert.check_validity(issuer, time)
-          raise exc, "%s: cert = '%s', error = '%s'" % [
-              'Invalid Signing Chain', cert.subject, v[:desc]
-          ] unless v[:is_valid]
-        end
-
-        # verify root of chain
-        if @verify_root
-          # make sure root is self-signed
-          root = chain[0]
-          raise exc, "%s: %s (subject = '%s', issuer = '%s')" % [
-              'Invalid Signing Chain Root',
-              'Subject does not match Issuer for Gem Signing Chain',
-              root.subject.to_s,
-              root.issuer.to_s,
-          ] unless root.issuer.to_s == root.subject.to_s
-
-          # make sure root is valid
-          v = root.check_validity(root, time)
-          raise exc, "%s: cert = '%s', error = '%s'" % [
-              'Invalid Signing Chain Root', root.subject, v[:desc]
-          ] unless v[:is_valid]
-
-          # verify that the chain root is trusted
-          if @only_trusted
-            # get digest algorithm, calculate checksum of root.subject
-            algo = @opt[:dgst_algo]
-            path = Gem::Security::Policy.trusted_cert_path(root, @opt)
-
-            # check to make sure trusted path exists
-            raise exc, "%s: cert = '%s', error = '%s'" % [
-                'Untrusted Signing Chain Root',
-                root.subject.to_s,
-                "path \"#{path}\" does not exist",
-            ] unless File.exist?(path)
-
-            # load calculate digest from saved cert file
-            save_cert = OpenSSL::X509::Certificate.new(File.read(path))
-            save_dgst = algo.digest(save_cert.public_key.to_s)
-
-            # create digest of public key
-            pkey_str = root.public_key.to_s
-            cert_dgst = algo.digest(pkey_str)
-
-            # now compare the two digests, raise exception
-            # if they don't match
-            raise exc, "%s: %s (saved = '%s', root = '%s')" % [
-                'Invalid Signing Chain Root',
-                "Saved checksum doesn't match root checksum",
-                save_dgst, cert_dgst,
-            ] unless save_dgst == cert_dgst
-          end
-        end
-
-        # return the signing chain
-        chain.map { |cert| cert.subject }
-      end
-    end
-  end
-
-  #
-  # No security policy: all package signature checks are disabled.
-  #
-  NoSecurity = Policy.new(
-    :verify_data      => false,
-    :verify_signer    => false,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # AlmostNo security policy: only verify that the signing certificate is the
-  # one that actually signed the data.  Make no attempt to verify the signing
-  # certificate chain.
-  #
-  # This policy is basically useless. better than nothing, but can still be
-  # easily spoofed, and is not recommended.
-  #
-  AlmostNoSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => false,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # Low security policy: only verify that the signing certificate is actually
-  # the gem signer, and that the signing certificate is valid.
-  #
-  # This policy is better than nothing, but can still be easily spoofed, and
-  # is not recommended.
-  #
-  LowSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # Medium security policy: verify the signing certificate, verify the signing
-  # certificate chain all the way to the root certificate, and only trust root
-  # certificates that we have explicitly allowed trust for.
-  #
-  # This security policy is reasonable, but it allows unsigned packages, so a
-  # malicious person could simply delete the package signature and pass the
-  # gem off as unsigned.
-  #
-  MediumSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => true,
-    :verify_root      => true,
-    :only_trusted     => true,
-    :only_signed      => false
-  )
-
-  #
-  # High security policy: only allow signed gems to be installed, verify the
-  # signing certificate, verify the signing certificate chain all the way to
-  # the root certificate, and only trust root certificates that we have
-  # explicitly allowed trust for.
-  #
-  # This security policy is significantly more difficult to bypass, and offers
-  # a reasonable guarantee that the contents of the gem have not been altered.
-  #
-  HighSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => true,
-    :verify_root      => true,
-    :only_trusted     => true,
-    :only_signed      => true
-  )
-
-  #
-  # Hash of configured security policies
-  #
-  Policies = {
-    'NoSecurity'       => NoSecurity,
-    'AlmostNoSecurity' => AlmostNoSecurity,
-    'LowSecurity'      => LowSecurity,
-    'MediumSecurity'   => MediumSecurity,
-    'HighSecurity'     => HighSecurity,
-  }
-
-  #
-  # Sign the cert cert with @signing_key and @signing_cert, using the digest
-  # algorithm opt[:dgst_algo]. Returns the newly signed certificate.
-  #
-  def self.sign_cert(cert, signing_key, signing_cert, opt = {})
-    opt = OPT.merge(opt)
-
-    # set up issuer information
-    cert.issuer = signing_cert.subject
-    cert.sign(signing_key, opt[:dgst_algo].new)
-
-    cert
-  end
-
-  #
-  # Make sure the trust directory exists.  If it does exist, make sure it's
-  # actually a directory.  If not, then create it with the appropriate
-  # permissions.
-  #
-  def self.verify_trust_dir(path, perms)
-    # if the directory exists, then make sure it is in fact a directory.  if
-    # it doesn't exist, then create it with the appropriate permissions
-    if File.exist?(path)
-      # verify that the trust directory is actually a directory
-      unless File.directory?(path)
-        err = "trust directory #{path} isn't a directory"
-        raise Gem::Security::Exception, err
-      end
-    else
-      # trust directory doesn't exist, so create it with permissions
-      FileUtils.mkdir_p(path)
-      FileUtils.chmod(perms, path)
-    end
-  end
-
-  #
-  # Build a certificate from the given DN and private key.
-  #
-  def self.build_cert(name, key, opt = {})
-    Gem.ensure_ssl_available
-    opt = OPT.merge(opt)
-
-    # create new cert
-    ret = OpenSSL::X509::Certificate.new
-
-    # populate cert attributes
-    ret.version = 2
-    ret.serial = 0
-    ret.public_key = key.public_key
-    ret.not_before = Time.now
-    ret.not_after = Time.now + opt[:cert_age]
-    ret.subject = name
-
-    # add certificate extensions
-    ef = OpenSSL::X509::ExtensionFactory.new(nil, ret)
-    ret.extensions = opt[:cert_exts].map { |k, v| ef.create_extension(k, v) }
-
-    # sign cert
-    i_key, i_cert = opt[:issuer_key] || key, opt[:issuer_cert] || ret
-    ret = sign_cert(ret, i_key, i_cert, opt)
-
-    # return cert
-    ret
-  end
-
-  #
-  # Build a self-signed certificate for the given email address.
-  #
-  def self.build_self_signed_cert(email_addr, opt = {})
-    Gem.ensure_ssl_available
-    opt = OPT.merge(opt)
-    path = { :key => nil, :cert => nil }
-
-    # split email address up
-    cn, dcs = email_addr.split('@')
-    dcs = dcs.split('.')
-
-    # munge email CN and DCs
-    cn = cn.gsub(opt[:munge_re], '_')
-    dcs = dcs.map { |dc| dc.gsub(opt[:munge_re], '_') }
-
-    # create DN
-    name = "CN=#{cn}/" << dcs.map { |dc| "DC=#{dc}" }.join('/')
-    name = OpenSSL::X509::Name::parse(name)
-
-    # build private key
-    key = opt[:key_algo].new(opt[:key_size])
-
-    # method name pretty much says it all :)
-    verify_trust_dir(opt[:trust_dir], opt[:perms][:trust_dir])
-
-    # if we're saving the key, then write it out
-    if opt[:save_key]
-      path[:key] = opt[:save_key_path] || (opt[:output_fmt] % 'private_key')
-      File.open(path[:key], 'wb') do |file|
-        file.chmod(opt[:perms][:signing_key])
-        file.write(key.to_pem)
-      end
-    end
-
-    # build self-signed public cert from key
-    cert = build_cert(name, key, opt)
-
-    # if we're saving the cert, then write it out
-    if opt[:save_cert]
-      path[:cert] = opt[:save_cert_path] || (opt[:output_fmt] % 'public_cert')
-      File.open(path[:cert], 'wb') do |file|
-        file.chmod(opt[:perms][:signing_cert])
-        file.write(cert.to_pem)
-      end
-    end
-
-    # return key, cert, and paths (if applicable)
-    { :key => key, :cert => cert,
-      :key_path => path[:key], :cert_path => path[:cert] }
-  end
-
-  #
-  # Add certificate to trusted cert list.
-  #
-  # Note: At the moment these are stored in OPT[:trust_dir], although that
-  # directory may change in the future.
-  #
-  def self.add_trusted_cert(cert, opt = {})
-    opt = OPT.merge(opt)
-
-    # get destination path
-    path = Gem::Security::Policy.trusted_cert_path(cert, opt)
-
-    # verify trust directory (can't write to nowhere, you know)
-    verify_trust_dir(opt[:trust_dir], opt[:perms][:trust_dir])
-
-    # write cert to output file
-    File.open(path, 'wb') do |file|
-      file.chmod(opt[:perms][:trusted_cert])
-      file.write(cert.to_pem)
-    end
-
-    # return nil
-    nil
-  end
-
-  #
-  # Basic OpenSSL-based package signing class.
-  #
-  class Signer
-    attr_accessor :key, :cert_chain
-
-    def initialize(key, cert_chain)
-      Gem.ensure_ssl_available
-      @algo = Gem::Security::OPT[:dgst_algo]
-      @key, @cert_chain = key, cert_chain
-
-      # check key, if it's a file, and if it's key, leave it alone
-      if @key && !@key.kind_of?(OpenSSL::PKey::PKey)
-        @key = OpenSSL::PKey::RSA.new(File.read(@key))
-      end
-
-      # check cert chain, if it's a file, load it, if it's cert data, convert
-      # it into a cert object, and if it's a cert object, leave it alone
-      if @cert_chain
-        @cert_chain = @cert_chain.map do |cert|
-          # check cert, if it's a file, load it, if it's cert data, convert it
-          # into a cert object, and if it's a cert object, leave it alone
-          if cert && !cert.kind_of?(OpenSSL::X509::Certificate)
-            cert = File.read(cert) if File::exist?(cert)
-            cert = OpenSSL::X509::Certificate.new(cert)
-          end
-          cert
-        end
-      end
-    end
-
-    #
-    # Sign data with given digest algorithm
-    #
-    def sign(data)
-      @key.sign(@algo.new, data)
-    end
-
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/server.rb
deleted file mode 100644
index 2c617ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/server.rb
+++ /dev/null
@@ -1,629 +0,0 @@
-require 'webrick'
-require 'yaml'
-require 'zlib'
-require 'erb'
-
-require 'rubygems'
-require 'rubygems/doc_manager'
-
-##
-# Gem::Server and allows users to serve gems for consumption by
-# `gem --remote-install`.
-#
-# gem_server starts an HTTP server on the given port and serves the following:
-# * "/" - Browsing of gem spec files for installed gems
-# * "/specs.#{Gem.marshal_version}.gz" - specs name/version/platform index
-# * "/latest_specs.#{Gem.marshal_version}.gz" - latest specs
-#   name/version/platform index
-# * "/quick/" - Individual gemspecs
-# * "/gems" - Direct access to download the installable gems
-# * legacy indexes:
-#   * "/Marshal.#{Gem.marshal_version}" - Full SourceIndex dump of metadata
-#     for installed gems
-#   * "/yaml" - YAML dump of metadata for installed gems - deprecated
-#
-# == Usage
-#
-#   gem_server = Gem::Server.new Gem.dir, 8089, false
-#   gem_server.run
-#
-#--
-# TODO Refactor into a real WEBrick servlet to remove code duplication.
-
-class Gem::Server
-
-  include Gem::UserInteraction
-
-  DOC_TEMPLATE = <<-'WEBPAGE'
-  <?xml version="1.0" encoding="iso-8859-1"?>
-  <!DOCTYPE html
-       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <title>RubyGems Documentation Index</title>
-    <link rel="stylesheet" href="gem-server-rdoc-style.css" type="text/css" media="screen" />
-  </head>
-  <body>
-    <div id="fileHeader">
-      <h1>RubyGems Documentation Index</h1>
-    </div>
-    <!-- banner header -->
-
-  <div id="bodyContent">
-    <div id="contextContent">
-      <div id="description">
-        <h1>Summary</h1>
-  <p>There are <%=values["gem_count"]%> gems installed:</p>
-  <p>
-  <%= values["specs"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
-  <h1>Gems</h1>
-
-  <dl>
-  <% values["specs"].each do |spec| %>
-  	<dt>
-  	<% if spec["first_name_entry"] then %>
-  	  <a name="<%=spec["name"]%>"></a>
-  	<% end %>
-
-  	<b><%=spec["name"]%> <%=spec["version"]%></b>
-
-  	<% if spec["rdoc_installed"] then %>
-  	  <a href="<%=spec["doc_path"]%>">[rdoc]</a>
-  	<% else %>
-  	  <span title="rdoc not installed">[rdoc]</span>
-  	<% end %>
-
-  	<% if spec["homepage"] then %>
-  		<a href="<%=spec["homepage"]%>" title="<%=spec["homepage"]%>">[www]</a>
-  	<% else %>
-  		<span title="no homepage available">[www]</span>
-  	<% end %>
-
-  	<% if spec["has_deps"] then %>
-  	 - depends on
-  		<%= spec["dependencies"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
-  	<% end %>
-  	</dt>
-  	<dd>
-  	<%=spec["summary"]%>
-  	<% if spec["executables"] then %>
-  	  <br/>
-
-  		<% if spec["only_one_executable"] then %>
-  		    Executable is
-  		<% else %>
-  		    Executables are
-  		<%end%>
-
-  		<%= spec["executables"].map { |v| "<span class=\"context-item-name\">#{v["executable"]}</span>"}.join ', ' %>.
-
-  	<%end%>
-  	<br/>
-  	<br/>
-  	</dd>
-  <% end %>
-  </dl>
-
-      </div>
-     </div>
-    </div>
-  <div id="validator-badges">
-    <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
-  </div>
-  </body>
-  </html>
-  WEBPAGE
-
-  # CSS is copy & paste from rdoc-style.css, RDoc V1.0.1 - 20041108
-  RDOC_CSS = <<-RDOCCSS
-body {
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size:   90%;
-    margin: 0;
-    margin-left: 40px;
-    padding: 0;
-    background: white;
-}
-
-h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
-h1 { font-size: 150%; }
-h2,h3,h4 { margin-top: 1em; }
-
-a { background: #eef; color: #039; text-decoration: none; }
-a:hover { background: #039; color: #eef; }
-
-/* Override the base stylesheets Anchor inside a table cell */
-td > a {
-  background: transparent;
-  color: #039;
-  text-decoration: none;
-}
-
-/* and inside a section title */
-.section-title > a {
-  background: transparent;
-  color: #eee;
-  text-decoration: none;
-}
-
-/* === Structural elements =================================== */
-
-div#index {
-    margin: 0;
-    margin-left: -40px;
-    padding: 0;
-    font-size: 90%;
-}
-
-
-div#index a {
-    margin-left: 0.7em;
-}
-
-div#index .section-bar {
-   margin-left: 0px;
-   padding-left: 0.7em;
-   background: #ccc;
-   font-size: small;
-}
-
-
-div#classHeader, div#fileHeader {
-    width: auto;
-    color: white;
-    padding: 0.5em 1.5em 0.5em 1.5em;
-    margin: 0;
-    margin-left: -40px;
-    border-bottom: 3px solid #006;
-}
-
-div#classHeader a, div#fileHeader a {
-    background: inherit;
-    color: white;
-}
-
-div#classHeader td, div#fileHeader td {
-    background: inherit;
-    color: white;
-}
-
-
-div#fileHeader {
-    background: #057;
-}
-
-div#classHeader {
-    background: #048;
-}
-
-
-.class-name-in-header {
-  font-size:  180%;
-  font-weight: bold;
-}
-
-
-div#bodyContent {
-    padding: 0 1.5em 0 1.5em;
-}
-
-div#description {
-    padding: 0.5em 1.5em;
-    background: #efefef;
-    border: 1px dotted #999;
-}
-
-div#description h1,h2,h3,h4,h5,h6 {
-    color: #125;;
-    background: transparent;
-}
-
-div#validator-badges {
-    text-align: center;
-}
-div#validator-badges img { border: 0; }
-
-div#copyright {
-    color: #333;
-    background: #efefef;
-    font: 0.75em sans-serif;
-    margin-top: 5em;
-    margin-bottom: 0;
-    padding: 0.5em 2em;
-}
-
-
-/* === Classes =================================== */
-
-table.header-table {
-    color: white;
-    font-size: small;
-}
-
-.type-note {
-    font-size: small;
-    color: #DEDEDE;
-}
-
-.xxsection-bar {
-    background: #eee;
-    color: #333;
-    padding: 3px;
-}
-
-.section-bar {
-   color: #333;
-   border-bottom: 1px solid #999;
-    margin-left: -20px;
-}
-
-
-.section-title {
-    background: #79a;
-    color: #eee;
-    padding: 3px;
-    margin-top: 2em;
-    margin-left: -30px;
-    border: 1px solid #999;
-}
-
-.top-aligned-row {  vertical-align: top }
-.bottom-aligned-row { vertical-align: bottom }
-
-/* --- Context section classes ----------------------- */
-
-.context-row { }
-.context-item-name { font-family: monospace; font-weight: bold; color: black; }
-.context-item-value { font-size: small; color: #448; }
-.context-item-desc { color: #333; padding-left: 2em; }
-
-/* --- Method classes -------------------------- */
-.method-detail {
-    background: #efefef;
-    padding: 0;
-    margin-top: 0.5em;
-    margin-bottom: 1em;
-    border: 1px dotted #ccc;
-}
-.method-heading {
-  color: black;
-  background: #ccc;
-  border-bottom: 1px solid #666;
-  padding: 0.2em 0.5em 0 0.5em;
-}
-.method-signature { color: black; background: inherit; }
-.method-name { font-weight: bold; }
-.method-args { font-style: italic; }
-.method-description { padding: 0 0.5em 0 0.5em; }
-
-/* --- Source code sections -------------------- */
-
-a.source-toggle { font-size: 90%; }
-div.method-source-code {
-    background: #262626;
-    color: #ffdead;
-    margin: 1em;
-    padding: 0.5em;
-    border: 1px dashed #999;
-    overflow: hidden;
-}
-
-div.method-source-code pre { color: #ffdead; overflow: hidden; }
-
-/* --- Ruby keyword styles --------------------- */
-
-.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
-
-.ruby-constant  { color: #7fffd4; background: transparent; }
-.ruby-keyword { color: #00ffff; background: transparent; }
-.ruby-ivar    { color: #eedd82; background: transparent; }
-.ruby-operator  { color: #00ffee; background: transparent; }
-.ruby-identifier { color: #ffdead; background: transparent; }
-.ruby-node    { color: #ffa07a; background: transparent; }
-.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
-.ruby-regexp  { color: #ffa07a; background: transparent; }
-.ruby-value   { color: #7fffd4; background: transparent; }
-  RDOCCSS
-
-  def self.run(options)
-    new(options[:gemdir], options[:port], options[:daemon]).run
-  end
-
-  def initialize(gem_dir, port, daemon)
-    Socket.do_not_reverse_lookup = true
-
-    @gem_dir = gem_dir
-    @port = port
-    @daemon = daemon
-    logger = WEBrick::Log.new nil, WEBrick::BasicLog::FATAL
-    @server = WEBrick::HTTPServer.new :DoNotListen => true, :Logger => logger
-
-    @spec_dir = File.join @gem_dir, 'specifications'
-
-    unless File.directory? @spec_dir then
-      raise ArgumentError, "#{@gem_dir} does not appear to be a gem repository"
-    end
-
-    @source_index = Gem::SourceIndex.from_gems_in @spec_dir
-  end
-
-  def Marshal(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    index = Marshal.dump @source_index
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = index.length
-      return
-    end
-
-    if req.path =~ /Z$/ then
-      res['content-type'] = 'application/x-deflate'
-      index = Gem.deflate index
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    res.body << index
-  end
-
-  def latest_specs(req, res)
-    @source_index.refresh!
-
-    res['content-type'] = 'application/x-gzip'
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    specs = @source_index.latest_specs.sort.map do |spec|
-      platform = spec.original_platform
-      platform = Gem::Platform::RUBY if platform.nil?
-      [spec.name, spec.version, platform]
-    end
-
-    specs = Marshal.dump specs
-
-    if req.path =~ /\.gz$/ then
-      specs = Gem.gzip specs
-      res['content-type'] = 'application/x-gzip'
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = specs.length
-    else
-      res.body << specs
-    end
-  end
-
-  def quick(req, res)
-    @source_index.refresh!
-
-    res['content-type'] = 'text/plain'
-    res['date'] = File.stat(@spec_dir).mtime
-
-    case req.request_uri.path
-    when '/quick/index' then
-      res.body << @source_index.map { |name,| name }.sort.join("\n")
-    when '/quick/index.rz' then
-      index = @source_index.map { |name,| name }.sort.join("\n")
-      res['content-type'] = 'application/x-deflate'
-      res.body << Gem.deflate(index)
-    when '/quick/latest_index' then
-      index = @source_index.latest_specs.map { |spec| spec.full_name }
-      res.body << index.sort.join("\n")
-    when '/quick/latest_index.rz' then
-      index = @source_index.latest_specs.map { |spec| spec.full_name }
-      res['content-type'] = 'application/x-deflate'
-      res.body << Gem.deflate(index.sort.join("\n"))
-    when %r|^/quick/(Marshal.#{Regexp.escape Gem.marshal_version}/)?(.*?)-([0-9.]+)(-.*?)?\.gemspec\.rz$| then
-      dep = Gem::Dependency.new $2, $3
-      specs = @source_index.search dep
-      marshal_format = $1
-
-      selector = [$2, $3, $4].map { |s| s.inspect }.join ' '
-
-      platform = if $4 then
-                   Gem::Platform.new $4.sub(/^-/, '')
-                 else
-                   Gem::Platform::RUBY
-                 end
-
-      specs = specs.select { |s| s.platform == platform }
-
-      if specs.empty? then
-        res.status = 404
-        res.body = "No gems found matching #{selector}"
-      elsif specs.length > 1 then
-        res.status = 500
-        res.body = "Multiple gems found matching #{selector}"
-      elsif marshal_format then
-        res['content-type'] = 'application/x-deflate'
-        res.body << Gem.deflate(Marshal.dump(specs.first))
-      else # deprecated YAML format
-        res['content-type'] = 'application/x-deflate'
-        res.body << Gem.deflate(specs.first.to_yaml)
-      end
-    else
-      raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found."
-    end
-  end
-
-  def root(req, res)
-    @source_index.refresh!
-    res['date'] = File.stat(@spec_dir).mtime
-
-    raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found." unless
-      req.path == '/'
-
-    specs = []
-    total_file_count = 0
-
-    @source_index.each do |path, spec|
-      total_file_count += spec.files.size
-      deps = spec.dependencies.map do |dep|
-        { "name"    => dep.name,
-          "type"    => dep.type,
-          "version" => dep.version_requirements.to_s, }
-      end
-
-      deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
-      deps.last["is_last"] = true unless deps.empty?
-
-      # executables
-      executables = spec.executables.sort.collect { |exec| {"executable" => exec} }
-      executables = nil if executables.empty?
-      executables.last["is_last"] = true if executables
-
-      specs << {
-        "authors"             => spec.authors.sort.join(", "),
-        "date"                => spec.date.to_s,
-        "dependencies"        => deps,
-        "doc_path"            => "/doc_root/#{spec.full_name}/rdoc/index.html",
-        "executables"         => executables,
-        "only_one_executable" => (executables && executables.size == 1),
-        "full_name"           => spec.full_name,
-        "has_deps"            => !deps.empty?,
-        "homepage"            => spec.homepage,
-        "name"                => spec.name,
-        "rdoc_installed"      => Gem::DocManager.new(spec).rdoc_installed?,
-        "summary"             => spec.summary,
-        "version"             => spec.version.to_s,
-      }
-    end
-
-    specs << {
-      "authors" => "Chad Fowler, Rich Kilmer, Jim Weirich, Eric Hodel and others",
-      "dependencies" => [],
-      "doc_path" => "/doc_root/rubygems-#{Gem::RubyGemsVersion}/rdoc/index.html",
-      "executables" => [{"executable" => 'gem', "is_last" => true}],
-      "only_one_executable" => true,
-      "full_name" => "rubygems-#{Gem::RubyGemsVersion}",
-      "has_deps" => false,
-      "homepage" => "http://rubygems.org/",
-      "name" => 'rubygems',
-      "rdoc_installed" => true,
-      "summary" => "RubyGems itself",
-      "version" => Gem::RubyGemsVersion,
-    }
-
-    specs = specs.sort_by { |spec| [spec["name"].downcase, spec["version"]] }
-    specs.last["is_last"] = true
-
-    # tag all specs with first_name_entry
-    last_spec = nil
-    specs.each do |spec|
-      is_first = last_spec.nil? || (last_spec["name"].downcase != spec["name"].downcase)
-      spec["first_name_entry"] = is_first
-      last_spec = spec
-    end
-
-    # create page from template
-    template = ERB.new(DOC_TEMPLATE)
-    res['content-type'] = 'text/html'
-
-    values = { "gem_count" => specs.size.to_s, "specs" => specs,
-               "total_file_count" => total_file_count.to_s }
-
-    result = template.result binding
-    res.body = result
-  end
-
-  def run
-    @server.listen nil, @port
-
-    say "Starting gem server on http://localhost:#{@port}/"
-
-    WEBrick::Daemon.start if @daemon
-
-    @server.mount_proc "/yaml", method(:yaml)
-    @server.mount_proc "/yaml.Z", method(:yaml)
-
-    @server.mount_proc "/Marshal.#{Gem.marshal_version}", method(:Marshal)
-    @server.mount_proc "/Marshal.#{Gem.marshal_version}.Z", method(:Marshal)
-
-    @server.mount_proc "/specs.#{Gem.marshal_version}", method(:specs)
-    @server.mount_proc "/specs.#{Gem.marshal_version}.gz", method(:specs)
-
-    @server.mount_proc "/latest_specs.#{Gem.marshal_version}",
-                       method(:latest_specs)
-    @server.mount_proc "/latest_specs.#{Gem.marshal_version}.gz",
-                       method(:latest_specs)
-
-    @server.mount_proc "/quick/", method(:quick)
-
-    @server.mount_proc("/gem-server-rdoc-style.css") do |req, res|
-      res['content-type'] = 'text/css'
-      res['date'] = File.stat(@spec_dir).mtime
-      res.body << RDOC_CSS
-    end
-
-    @server.mount_proc "/", method(:root)
-
-    paths = { "/gems" => "/cache/", "/doc_root" => "/doc/" }
-    paths.each do |mount_point, mount_dir|
-      @server.mount(mount_point, WEBrick::HTTPServlet::FileHandler,
-                    File.join(@gem_dir, mount_dir), true)
-    end
-
-    trap("INT") { @server.shutdown; exit! }
-    trap("TERM") { @server.shutdown; exit! }
-
-    @server.start
-  end
-
-  def specs(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    specs = @source_index.sort.map do |_, spec|
-      platform = spec.original_platform
-      platform = Gem::Platform::RUBY if platform.nil?
-      [spec.name, spec.version, platform]
-    end
-
-    specs = Marshal.dump specs
-
-    if req.path =~ /\.gz$/ then
-      specs = Gem.gzip specs
-      res['content-type'] = 'application/x-gzip'
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = specs.length
-    else
-      res.body << specs
-    end
-  end
-
-  def yaml(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    index = @source_index.to_yaml
-
-    if req.path =~ /Z$/ then
-      res['content-type'] = 'application/x-deflate'
-      index = Gem.deflate index
-    else
-      res['content-type'] = 'text/plain'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = index.length
-      return
-    end
-
-    res.body << index
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_index.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_index.rb
deleted file mode 100644
index 8a8db2e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_index.rb
+++ /dev/null
@@ -1,559 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/user_interaction'
-require 'rubygems/specification'
-module Gem
-  autoload(:SpecFetcher, 'rubygems/spec_fetcher')
-end
-
-##
-# The SourceIndex object indexes all the gems available from a
-# particular source (e.g. a list of gem directories, or a remote
-# source).  A SourceIndex maps a gem full name to a gem
-# specification.
-#
-# NOTE:: The class used to be named Cache, but that became
-#        confusing when cached source fetchers where introduced. The
-#        constant Gem::Cache is an alias for this class to allow old
-#        YAMLized source index objects to load properly.
-
-class Gem::SourceIndex
-
-  include Enumerable
-
-  include Gem::UserInteraction
-
-  attr_reader :gems # :nodoc:
-
-  ##
-  # Directories to use to refresh this SourceIndex when calling refresh!
-
-  attr_accessor :spec_dirs
-
-  class << self
-    include Gem::UserInteraction
-
-    ##
-    # Factory method to construct a source index instance for a given
-    # path.
-    #
-    # deprecated::
-    #   If supplied, from_installed_gems will act just like
-    #   +from_gems_in+.  This argument is deprecated and is provided
-    #   just for backwards compatibility, and should not generally
-    #   be used.
-    #
-    # return::
-    #   SourceIndex instance
-
-    def from_installed_gems(*deprecated)
-      if deprecated.empty?
-        from_gems_in(*installed_spec_directories)
-      else
-        from_gems_in(*deprecated) # HACK warn
-      end
-    end
-
-    ##
-    # Returns a list of directories from Gem.path that contain specifications.
-
-    def installed_spec_directories
-      Gem.path.collect { |dir| File.join(dir, "specifications") }
-    end
-
-    ##
-    # Creates a new SourceIndex from the ruby format gem specifications in
-    # +spec_dirs+.
-
-    def from_gems_in(*spec_dirs)
-      source_index = new
-      source_index.spec_dirs = spec_dirs
-      source_index.refresh!
-    end
-
-    ##
-    # Loads a ruby-format specification from +file_name+ and returns the
-    # loaded spec.
-
-    def load_specification(file_name)
-      begin
-        spec_code = if RUBY_VERSION < '1.9' then
-                      File.read file_name
-                    else
-                      File.read file_name, :encoding => 'UTF-8'
-                    end.untaint
-
-        gemspec = eval spec_code, binding, file_name
-
-        if gemspec.is_a?(Gem::Specification)
-          gemspec.loaded_from = file_name
-          return gemspec
-        end
-        alert_warning "File '#{file_name}' does not evaluate to a gem specification"
-      rescue SignalException, SystemExit
-        raise
-      rescue SyntaxError => e
-        alert_warning e
-        alert_warning spec_code
-      rescue Exception => e
-        alert_warning "#{e.inspect}\n#{spec_code}"
-        alert_warning "Invalid .gemspec format in '#{file_name}'"
-      end
-      return nil
-    end
-
-  end
-
-  ##
-  # Constructs a source index instance from the provided
-  # specifications
-  #
-  # specifications::
-  #   [Hash] hash of [Gem name, Gem::Specification] pairs
-
-  def initialize(specifications={})
-    @gems = specifications
-    @spec_dirs = nil
-  end
-
-  ##
-  # Reconstruct the source index from the specifications in +spec_dirs+.
-
-  def load_gems_in(*spec_dirs)
-    @gems.clear
-
-    spec_dirs.reverse_each do |spec_dir|
-      spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
-
-      spec_files.each do |spec_file|
-        gemspec = self.class.load_specification spec_file.untaint
-        add_spec gemspec if gemspec
-      end
-    end
-
-    self
-  end
-
-  ##
-  # Returns an Array specifications for the latest versions of each gem in
-  # this index.
-
-  def latest_specs
-    result = Hash.new { |h,k| h[k] = [] }
-    latest = {}
-
-    sort.each do |_, spec|
-      name = spec.name
-      curr_ver = spec.version
-      prev_ver = latest.key?(name) ? latest[name].version : nil
-
-      next unless prev_ver.nil? or curr_ver >= prev_ver or
-                  latest[name].platform != Gem::Platform::RUBY
-
-      if prev_ver.nil? or
-         (curr_ver > prev_ver and spec.platform == Gem::Platform::RUBY) then
-        result[name].clear
-        latest[name] = spec
-      end
-
-      if spec.platform != Gem::Platform::RUBY then
-        result[name].delete_if do |result_spec|
-          result_spec.platform == spec.platform
-        end
-      end
-
-      result[name] << spec
-    end
-
-    result.values.flatten
-  end
-
-  ##
-  # Add a gem specification to the source index.
-
-  def add_spec(gem_spec)
-    @gems[gem_spec.full_name] = gem_spec
-  end
-
-  ##
-  # Add gem specifications to the source index.
-
-  def add_specs(*gem_specs)
-    gem_specs.each do |spec|
-      add_spec spec
-    end
-  end
-
-  ##
-  # Remove a gem specification named +full_name+.
-
-  def remove_spec(full_name)
-    @gems.delete(full_name)
-  end
-
-  ##
-  # Iterate over the specifications in the source index.
-
-  def each(&block) # :yields: gem.full_name, gem
-    @gems.each(&block)
-  end
-
-  ##
-  # The gem specification given a full gem spec name.
-
-  def specification(full_name)
-    @gems[full_name]
-  end
-
-  ##
-  # The signature for the source index.  Changes in the signature indicate a
-  # change in the index.
-
-  def index_signature
-    require 'rubygems/digest/sha2'
-
-    Gem::SHA256.new.hexdigest(@gems.keys.sort.join(',')).to_s
-  end
-
-  ##
-  # The signature for the given gem specification.
-
-  def gem_signature(gem_full_name)
-    require 'rubygems/digest/sha2'
-
-    Gem::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s
-  end
-
-  def size
-    @gems.size
-  end
-  alias length size
-
-  ##
-  # Find a gem by an exact match on the short name.
-
-  def find_name(gem_name, version_requirement = Gem::Requirement.default)
-    dep = Gem::Dependency.new(/^#{gem_name}$/, version_requirement)
-    search dep
-  end
-
-  ##
-  # Search for a gem by Gem::Dependency +gem_pattern+.  If +only_platform+
-  # is true, only gems matching Gem::Platform.local will be returned.  An
-  # Array of matching Gem::Specification objects is returned.
-  #
-  # For backwards compatibility, a String or Regexp pattern may be passed as
-  # +gem_pattern+, and a Gem::Requirement for +platform_only+.  This
-  # behavior is deprecated and will be removed.
-
-  def search(gem_pattern, platform_only = false)
-    version_requirement = nil
-    only_platform = false
-
-    # TODO - Remove support and warning for legacy arguments after 2008/11
-    unless Gem::Dependency === gem_pattern
-      warn "#{Gem.location_of_caller.join ':'}:Warning: Gem::SourceIndex#search support for #{gem_pattern.class} patterns is deprecated"
-    end
-
-    case gem_pattern
-    when Regexp then
-      version_requirement = platform_only || Gem::Requirement.default
-    when Gem::Dependency then
-      only_platform = platform_only
-      version_requirement = gem_pattern.version_requirements
-      gem_pattern = if Regexp === gem_pattern.name then
-                      gem_pattern.name
-                    elsif gem_pattern.name.empty? then
-                      //
-                    else
-                      /^#{Regexp.escape gem_pattern.name}$/
-                    end
-    else
-      version_requirement = platform_only || Gem::Requirement.default
-      gem_pattern = /#{gem_pattern}/i
-    end
-
-    unless Gem::Requirement === version_requirement then
-      version_requirement = Gem::Requirement.create version_requirement
-    end
-
-    specs = @gems.values.select do |spec|
-      spec.name =~ gem_pattern and
-        version_requirement.satisfied_by? spec.version
-    end
-
-    if only_platform then
-      specs = specs.select do |spec|
-        Gem::Platform.match spec.platform
-      end
-    end
-
-    specs.sort_by { |s| s.sort_obj }
-  end
-
-  ##
-  # Replaces the gems in the source index from specifications in the
-  # directories this source index was created from.  Raises an exception if
-  # this source index wasn't created from a directory (via from_gems_in or
-  # from_installed_gems, or having spec_dirs set).
-
-  def refresh!
-    raise 'source index not created from disk' if @spec_dirs.nil?
-    load_gems_in(*@spec_dirs)
-  end
-
-  ##
-  # Returns an Array of Gem::Specifications that are not up to date.
-
-  def outdated
-    outdateds = []
-
-    latest_specs.each do |local|
-      dependency = Gem::Dependency.new local.name, ">= #{local.version}"
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        remotes = fetcher.find_matching dependency
-        remotes = remotes.map { |(name, version,_),_| version }
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          specs = Gem::SourceInfoCache.search_with_source dependency, true
-
-          remotes = specs.map { |spec,| spec.version }
-        end
-      end
-
-      latest = remotes.sort.last
-
-      outdateds << local.name if latest and local.version < latest
-    end
-
-    outdateds
-  end
-
-  ##
-  # Updates this SourceIndex from +source_uri+.  If +all+ is false, only the
-  # latest gems are fetched.
-
-  def update(source_uri, all)
-    source_uri = URI.parse source_uri unless URI::Generic === source_uri
-    source_uri.path += '/' unless source_uri.path =~ /\/$/
-
-    use_incremental = false
-
-    begin
-      gem_names = fetch_quick_index source_uri, all
-      remove_extra gem_names
-      missing_gems = find_missing gem_names
-
-      return false if missing_gems.size.zero?
-
-      say "Missing metadata for #{missing_gems.size} gems" if
-      missing_gems.size > 0 and Gem.configuration.really_verbose
-
-      use_incremental = missing_gems.size <= Gem.configuration.bulk_threshold
-    rescue Gem::OperationNotSupportedError => ex
-      alert_error "Falling back to bulk fetch: #{ex.message}" if
-      Gem.configuration.really_verbose
-      use_incremental = false
-    end
-
-    if use_incremental then
-      update_with_missing(source_uri, missing_gems)
-    else
-      new_index = fetch_bulk_index(source_uri)
-      @gems.replace(new_index.gems)
-    end
-
-    true
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and @gems == other.gems 
-  end
-
-  def dump
-    Marshal.dump(self)
-  end
-
-  private
-
-  def fetcher
-    require 'rubygems/remote_fetcher'
-
-    Gem::RemoteFetcher.fetcher
-  end
-
-  def fetch_index_from(source_uri)
-    @fetch_error = nil
-
-    indexes = %W[
-        Marshal.#{Gem.marshal_version}.Z
-        Marshal.#{Gem.marshal_version}
-        yaml.Z
-        yaml
-      ]
-
-    indexes.each do |name|
-      spec_data = nil
-      index = source_uri + name
-      begin
-        spec_data = fetcher.fetch_path index
-        spec_data = unzip(spec_data) if name =~ /\.Z$/
-
-        if name =~ /Marshal/ then
-          return Marshal.load(spec_data)
-        else
-          return YAML.load(spec_data)
-        end
-      rescue => e
-        if Gem.configuration.really_verbose then
-          alert_error "Unable to fetch #{name}: #{e.message}"
-        end
-
-        @fetch_error = e
-      end
-    end
-
-    nil
-  end
-
-  def fetch_bulk_index(source_uri)
-    say "Bulk updating Gem source index for: #{source_uri}" if
-      Gem.configuration.verbose
-
-    index = fetch_index_from(source_uri)
-    if index.nil? then
-      raise Gem::RemoteSourceException,
-              "Error fetching remote gem cache: #{@fetch_error}"
-    end
-    @fetch_error = nil
-    index
-  end
-
-  ##
-  # Get the quick index needed for incremental updates.
-
-  def fetch_quick_index(source_uri, all)
-    index = all ? 'index' : 'latest_index'
-
-    zipped_index = fetcher.fetch_path source_uri + "quick/#{index}.rz"
-
-    unzip(zipped_index).split("\n")
-  rescue ::Exception => e
-    unless all then
-      say "Latest index not found, using quick index" if
-        Gem.configuration.really_verbose
-
-      fetch_quick_index source_uri, true
-    else
-      raise Gem::OperationNotSupportedError,
-            "No quick index found: #{e.message}"
-    end
-  end
-
-  ##
-  # Make a list of full names for all the missing gemspecs.
-
-  def find_missing(spec_names)
-    unless defined? @originals then
-      @originals = {}
-      each do |full_name, spec|
-        @originals[spec.original_name] = spec
-      end
-    end
-
-    spec_names.find_all { |full_name|
-      @originals[full_name].nil?
-    }
-  end
-
-  def remove_extra(spec_names)
-    dictionary = spec_names.inject({}) { |h, k| h[k] = true; h }
-    each do |name, spec|
-      remove_spec name unless dictionary.include? spec.original_name
-    end
-  end
-
-  ##
-  # Unzip the given string.
-
-  def unzip(string)
-    require 'zlib'
-    Gem.inflate string
-  end
-
-  ##
-  # Tries to fetch Marshal representation first, then YAML
-
-  def fetch_single_spec(source_uri, spec_name)
-    @fetch_error = nil
-
-    begin
-      marshal_uri = source_uri + "quick/Marshal.#{Gem.marshal_version}/#{spec_name}.gemspec.rz"
-      zipped = fetcher.fetch_path marshal_uri
-      return Marshal.load(unzip(zipped))
-    rescue => ex
-      @fetch_error = ex
-
-      if Gem.configuration.really_verbose then
-        say "unable to fetch marshal gemspec #{marshal_uri}: #{ex.class} - #{ex}"
-      end
-    end
-
-    begin
-      yaml_uri = source_uri + "quick/#{spec_name}.gemspec.rz"
-      zipped = fetcher.fetch_path yaml_uri
-      return YAML.load(unzip(zipped))
-    rescue => ex
-      @fetch_error = ex
-      if Gem.configuration.really_verbose then
-        say "unable to fetch YAML gemspec #{yaml_uri}: #{ex.class} - #{ex}"
-      end
-    end
-
-    nil
-  end
-
-  ##
-  # Update the cached source index with the missing names.
-
-  def update_with_missing(source_uri, missing_names)
-    progress = ui.progress_reporter(missing_names.size,
-        "Updating metadata for #{missing_names.size} gems from #{source_uri}")
-    missing_names.each do |spec_name|
-      gemspec = fetch_single_spec(source_uri, spec_name)
-      if gemspec.nil? then
-        ui.say "Failed to download spec #{spec_name} from #{source_uri}:\n" \
-                 "\t#{@fetch_error.message}"
-      else
-        add_spec gemspec
-        progress.updated spec_name
-      end
-      @fetch_error = nil
-    end
-    progress.done
-    progress.count
-  end
-
-end
-
-module Gem
-
-  # :stopdoc:
-
-  # Cache is an alias for SourceIndex to allow older YAMLized source index
-  # objects to load properly.
-  Cache = SourceIndex
-
-  # :startdoc:
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache.rb
deleted file mode 100644
index fdb30ad..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache.rb
+++ /dev/null
@@ -1,393 +0,0 @@
-require 'fileutils'
-
-require 'rubygems'
-require 'rubygems/source_info_cache_entry'
-require 'rubygems/user_interaction'
-
-##
-# SourceInfoCache stores a copy of the gem index for each gem source.
-#
-# There are two possible cache locations, the system cache and the user cache:
-# * The system cache is preferred if it is writable or can be created.
-# * The user cache is used otherwise
-#
-# Once a cache is selected, it will be used for all operations.
-# SourceInfoCache will not switch between cache files dynamically.
-#
-# Cache data is a Hash mapping a source URI to a SourceInfoCacheEntry.
-#
-#--
-# To keep things straight, this is how the cache objects all fit together:
-#
-#   Gem::SourceInfoCache
-#     @cache_data = {
-#       source_uri => Gem::SourceInfoCacheEntry
-#         @size = source index size
-#         @source_index = Gem::SourceIndex
-#       ...
-#     }
-
-class Gem::SourceInfoCache
-
-  include Gem::UserInteraction
-
-  ##
-  # The singleton Gem::SourceInfoCache.  If +all+ is true, a full refresh will
-  # be performed if the singleton instance is being initialized.
-
-  def self.cache(all = false)
-    return @cache if @cache
-    @cache = new
-    @cache.refresh all if Gem.configuration.update_sources
-    @cache
-  end
-
-  def self.cache_data
-    cache.cache_data
-  end
-
-  ##
-  # The name of the system cache file.
-
-  def self.latest_system_cache_file
-    File.join File.dirname(system_cache_file),
-              "latest_#{File.basename system_cache_file}"
-  end
-
-  ##
-  # The name of the latest user cache file.
-
-  def self.latest_user_cache_file
-    File.join File.dirname(user_cache_file),
-              "latest_#{File.basename user_cache_file}"
-  end
-
-  ##
-  # Reset all singletons, discarding any changes.
-
-  def self.reset
-    @cache = nil
-    @system_cache_file = nil
-    @user_cache_file = nil
-  end
-
-  ##
-  # Search all source indexes.  See Gem::SourceInfoCache#search.
-
-  def self.search(*args)
-    cache.search(*args)
-  end
-
-  ##
-  # Search all source indexes returning the source_uri.  See
-  # Gem::SourceInfoCache#search_with_source.
-
-  def self.search_with_source(*args)
-    cache.search_with_source(*args)
-  end
-
-  ##
-  # The name of the system cache file. (class method)
-
-  def self.system_cache_file
-    @system_cache_file ||= Gem.default_system_source_cache_dir
-  end
-
-  ##
-  # The name of the user cache file.
-
-  def self.user_cache_file
-    @user_cache_file ||=
-      ENV['GEMCACHE'] || Gem.default_user_source_cache_dir
-  end
-
-  def initialize # :nodoc:
-    @cache_data = nil
-    @cache_file = nil
-    @dirty = false
-    @only_latest = true
-  end
-
-  ##
-  # The most recent cache data.
-
-  def cache_data
-    return @cache_data if @cache_data
-    cache_file # HACK writable check
-
-    @only_latest = true
-
-    @cache_data = read_cache_data latest_cache_file
-
-    @cache_data
-  end
-
-  ##
-  # The name of the cache file.
-
-  def cache_file
-    return @cache_file if @cache_file
-    @cache_file = (try_file(system_cache_file) or
-      try_file(user_cache_file) or
-      raise "unable to locate a writable cache file")
-  end
-
-  ##
-  # Write the cache to a local file (if it is dirty).
-
-  def flush
-    write_cache if @dirty
-    @dirty = false
-  end
-
-  def latest_cache_data
-    latest_cache_data = {}
-
-    cache_data.each do |repo, sice|
-      latest = sice.source_index.latest_specs
-
-      new_si = Gem::SourceIndex.new
-      new_si.add_specs(*latest)
-
-      latest_sice = Gem::SourceInfoCacheEntry.new new_si, sice.size
-      latest_cache_data[repo] = latest_sice
-    end
-
-    latest_cache_data
-  end
-
-  ##
-  # The name of the latest cache file.
-
-  def latest_cache_file
-    File.join File.dirname(cache_file), "latest_#{File.basename cache_file}"
-  end
-
-  ##
-  # The name of the latest system cache file.
-
-  def latest_system_cache_file
-    self.class.latest_system_cache_file
-  end
-
-  ##
-  # The name of the latest user cache file.
-
-  def latest_user_cache_file
-    self.class.latest_user_cache_file
-  end
-
-  ##
-  # Merges the complete cache file into this Gem::SourceInfoCache.
-
-  def read_all_cache_data
-    if @only_latest then
-      @only_latest = false
-      all_data = read_cache_data cache_file
-
-      cache_data.update all_data do |source_uri, latest_sice, all_sice|
-        all_sice.source_index.gems.update latest_sice.source_index.gems
-
-        Gem::SourceInfoCacheEntry.new all_sice.source_index, latest_sice.size
-      end
-
-      begin
-        refresh true
-      rescue Gem::RemoteFetcher::FetchError
-      end
-    end
-  end
-
-  ##
-  # Reads cached data from +file+.
-
-  def read_cache_data(file)
-    # Marshal loads 30-40% faster from a String, and 2MB on 20061116 is small
-    data = open file, 'rb' do |fp| fp.read end
-    cache_data = Marshal.load data
-
-    cache_data.each do |url, sice|
-      next unless sice.is_a?(Hash)
-      update
-
-      cache = sice['cache']
-      size  = sice['size']
-
-      if cache.is_a?(Gem::SourceIndex) and size.is_a?(Numeric) then
-        new_sice = Gem::SourceInfoCacheEntry.new cache, size
-        cache_data[url] = new_sice
-      else # irreperable, force refetch.
-        reset_cache_for url, cache_data
-      end
-    end
-
-    cache_data
-  rescue Errno::ENOENT
-    {}
-  rescue => e
-    if Gem.configuration.really_verbose then
-      say "Exception during cache_data handling: #{e.class} - #{e}"
-      say "Cache file was: #{file}"
-      say "\t#{e.backtrace.join "\n\t"}"
-    end
-
-    {}
-  end
-
-  ##
-  # Refreshes each source in the cache from its repository.  If +all+ is
-  # false, only latest gems are updated.
-
-  def refresh(all)
-    Gem.sources.each do |source_uri|
-      cache_entry = cache_data[source_uri]
-      if cache_entry.nil? then
-        cache_entry = Gem::SourceInfoCacheEntry.new nil, 0
-        cache_data[source_uri] = cache_entry
-      end
-
-      update if cache_entry.refresh source_uri, all
-    end
-
-    flush
-  end
-
-  def reset_cache_for(url, cache_data)
-    say "Reseting cache for #{url}" if Gem.configuration.really_verbose
-
-    sice = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0
-    sice.refresh url, false # HACK may be unnecessary, see ::cache and #refresh
-
-    cache_data[url] = sice
-    cache_data
-  end
-
-  def reset_cache_data
-    @cache_data = nil
-    @only_latest = true
-  end
-
-  ##
-  # Force cache file to be reset, useful for integration testing of rubygems
-
-  def reset_cache_file
-    @cache_file = nil
-  end
-
-  ##
-  # Searches all source indexes.  See Gem::SourceIndex#search for details on
-  # +pattern+ and +platform_only+.  If +all+ is set to true, the full index
-  # will be loaded before searching.
-
-  def search(pattern, platform_only = false, all = false)
-    read_all_cache_data if all
-
-    cache_data.map do |source_uri, sic_entry|
-      next unless Gem.sources.include? source_uri
-      # TODO - Remove this gunk after 2008/11
-      unless pattern.kind_of?(Gem::Dependency)
-        pattern = Gem::Dependency.new(pattern, Gem::Requirement.default) 
-      end
-      sic_entry.source_index.search pattern, platform_only
-    end.flatten.compact
-  end
-
-  # Searches all source indexes for +pattern+.  If +only_platform+ is true,
-  # only gems matching Gem.platforms will be selected.  Returns an Array of
-  # pairs containing the Gem::Specification found and the source_uri it was
-  # found at.
-  def search_with_source(pattern, only_platform = false, all = false)
-    read_all_cache_data if all
-
-    results = []
-
-    cache_data.map do |source_uri, sic_entry|
-      next unless Gem.sources.include? source_uri
-
-      # TODO - Remove this gunk after 2008/11
-      unless pattern.kind_of?(Gem::Dependency)
-        pattern = Gem::Dependency.new(pattern, Gem::Requirement.default) 
-      end
-
-      sic_entry.source_index.search(pattern, only_platform).each do |spec|
-        results << [spec, source_uri]
-      end
-    end
-
-    results
-  end
-
-  ##
-  # Set the source info cache data directly.  This is mainly used for unit
-  # testing when we don't want to read a file system to grab the cached source
-  # index information.  The +hash+ should map a source URL into a
-  # SourceInfoCacheEntry.
-
-  def set_cache_data(hash)
-    @cache_data = hash
-    update
-  end
-
-  ##
-  # The name of the system cache file.
-
-  def system_cache_file
-    self.class.system_cache_file
-  end
-
-  ##
-  # Determine if +path+ is a candidate for a cache file.  Returns +path+ if
-  # it is, nil if not.
-
-  def try_file(path)
-    return path if File.writable? path
-    return nil if File.exist? path
-
-    dir = File.dirname path
-
-    unless File.exist? dir then
-      begin
-        FileUtils.mkdir_p dir
-      rescue RuntimeError, SystemCallError
-        return nil
-      end
-    end
-
-    return path if File.writable? dir
-
-    nil
-  end
-
-  ##
-  # Mark the cache as updated (i.e. dirty).
-
-  def update
-    @dirty = true
-  end
-
-  ##
-  # The name of the user cache file.
-
-  def user_cache_file
-    self.class.user_cache_file
-  end
-
-  ##
-  # Write data to the proper cache files.
-
-  def write_cache
-    if not File.exist?(cache_file) or not @only_latest then
-      open cache_file, 'wb' do |io|
-        io.write Marshal.dump(cache_data)
-      end
-    end
-
-    open latest_cache_file, 'wb' do |io|
-      io.write Marshal.dump(latest_cache_data)
-    end
-  end
-
-  reset
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb
deleted file mode 100644
index c3f75e5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rubygems'
-require 'rubygems/source_index'
-require 'rubygems/remote_fetcher'
-
-##
-# Entries held by a SourceInfoCache.
-
-class Gem::SourceInfoCacheEntry
-
-  ##
-  # The source index for this cache entry.
-
-  attr_reader :source_index
-
-  ##
-  # The size of the of the source entry.  Used to determine if the
-  # source index has changed.
-
-  attr_reader :size
-
-  ##
-  # Create a cache entry.
-
-  def initialize(si, size)
-    @source_index = si || Gem::SourceIndex.new({})
-    @size = size
-    @all = false
-  end
-
-  def refresh(source_uri, all)
-    begin
-      marshal_uri = URI.join source_uri.to_s, "Marshal.#{Gem.marshal_version}"
-      remote_size = Gem::RemoteFetcher.fetcher.fetch_size marshal_uri
-    rescue Gem::RemoteSourceException
-      yaml_uri = URI.join source_uri.to_s, 'yaml'
-      remote_size = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri
-    end
-
-    # TODO Use index_signature instead of size?
-    return false if @size == remote_size and @all
-
-    updated = @source_index.update source_uri, all
-    @size = remote_size
-    @all = all
-
-    updated
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and
-    @size == other.size and
-    @source_index == other.source_index
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb
deleted file mode 100644
index a1fc82e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb
+++ /dev/null
@@ -1,249 +0,0 @@
-require 'zlib'
-
-require 'rubygems'
-require 'rubygems/remote_fetcher'
-require 'rubygems/user_interaction'
-
-##
-# SpecFetcher handles metadata updates from remote gem repositories.
-
-class Gem::SpecFetcher
-
-  include Gem::UserInteraction
-
-  ##
-  # The SpecFetcher cache dir.
-
-  attr_reader :dir # :nodoc:
-
-  ##
-  # Cache of latest specs
-
-  attr_reader :latest_specs # :nodoc:
-
-  ##
-  # Cache of all spces
-
-  attr_reader :specs # :nodoc:
-
-  @fetcher = nil
-
-  def self.fetcher
-    @fetcher ||= new
-  end
-
-  def self.fetcher=(fetcher) # :nodoc:
-    @fetcher = fetcher
-  end
-
-  def initialize
-    @dir = File.join Gem.user_home, '.gem', 'specs'
-    @update_cache = File.stat(Gem.user_home).uid == Process.uid
-
-    @specs = {}
-    @latest_specs = {}
-
-    @fetcher = Gem::RemoteFetcher.fetcher
-  end
-
-  ##
-  # Retuns the local directory to write +uri+ to.
-
-  def cache_dir(uri)
-    File.join @dir, "#{uri.host}%#{uri.port}", File.dirname(uri.path)
-  end
-
-  ##
-  # Fetch specs matching +dependency+.  If +all+ is true, all matching
-  # versions are returned.  If +matching_platform+ is false, all platforms are
-  # returned.
-
-  def fetch(dependency, all = false, matching_platform = true)
-    specs_and_sources = find_matching dependency, all, matching_platform
-
-    specs_and_sources.map do |spec_tuple, source_uri|
-      [fetch_spec(spec_tuple, URI.parse(source_uri)), source_uri]
-    end
-
-  rescue Gem::RemoteFetcher::FetchError => e
-    raise unless warn_legacy e do
-      require 'rubygems/source_info_cache'
-
-      return Gem::SourceInfoCache.search_with_source(dependency,
-                                                     matching_platform, all)
-    end
-  end
-
-  def fetch_spec(spec, source_uri)
-    spec = spec - [nil, 'ruby', '']
-    spec_file_name = "#{spec.join '-'}.gemspec"
-
-    uri = source_uri + "#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}"
-
-    cache_dir = cache_dir uri
-
-    local_spec = File.join cache_dir, spec_file_name
-
-    if File.exist? local_spec then
-      spec = Gem.read_binary local_spec
-    else
-      uri.path << '.rz'
-
-      spec = @fetcher.fetch_path uri
-      spec = Gem.inflate spec
-
-      if @update_cache then
-        FileUtils.mkdir_p cache_dir
-
-        open local_spec, 'wb' do |io|
-          io.write spec
-        end
-      end
-    end
-
-    # TODO: Investigate setting Gem::Specification#loaded_from to a URI
-    Marshal.load spec
-  end
-
-  ##
-  # Find spec names that match +dependency+.  If +all+ is true, all matching
-  # versions are returned.  If +matching_platform+ is false, gems for all
-  # platforms are returned.
-
-  def find_matching(dependency, all = false, matching_platform = true)
-    found = {}
-
-    list(all).each do |source_uri, specs|
-      found[source_uri] = specs.select do |spec_name, version, spec_platform|
-        dependency =~ Gem::Dependency.new(spec_name, version) and
-          (not matching_platform or Gem::Platform.match(spec_platform))
-      end
-    end
-
-    specs_and_sources = []
-
-    found.each do |source_uri, specs|
-      uri_str = source_uri.to_s
-      specs_and_sources.push(*specs.map { |spec| [spec, uri_str] })
-    end
-
-    specs_and_sources
-  end
-
-  ##
-  # Returns Array of gem repositories that were generated with RubyGems less
-  # than 1.2.
-
-  def legacy_repos
-    Gem.sources.reject do |source_uri|
-      source_uri = URI.parse source_uri
-      spec_path = source_uri + "specs.#{Gem.marshal_version}.gz"
-
-      begin
-        @fetcher.fetch_size spec_path
-      rescue Gem::RemoteFetcher::FetchError
-        begin
-          @fetcher.fetch_size(source_uri + 'yaml') # re-raise if non-repo
-        rescue Gem::RemoteFetcher::FetchError
-          alert_error "#{source_uri} does not appear to be a repository"
-          raise
-        end
-        false
-      end
-    end
-  end
-
-  ##
-  # Returns a list of gems available for each source in Gem::sources.  If
-  # +all+ is true, all versions are returned instead of only latest versions.
-
-  def list(all = false)
-    list = {}
-
-    file = all ? 'specs' : 'latest_specs'
-
-    Gem.sources.each do |source_uri|
-      source_uri = URI.parse source_uri
-
-      if all and @specs.include? source_uri then
-        list[source_uri] = @specs[source_uri]
-      elsif not all and @latest_specs.include? source_uri then
-        list[source_uri] = @latest_specs[source_uri]
-      else
-        specs = load_specs source_uri, file
-
-        cache = all ? @specs : @latest_specs
-
-        cache[source_uri] = specs
-        list[source_uri] = specs
-      end
-    end
-
-    list
-  end
-
-  ##
-  # Loads specs in +file+, fetching from +source_uri+ if the on-disk cache is
-  # out of date.
-
-  def load_specs(source_uri, file)
-    file_name  = "#{file}.#{Gem.marshal_version}"
-    spec_path  = source_uri + "#{file_name}.gz"
-    cache_dir  = cache_dir spec_path
-    local_file = File.join(cache_dir, file_name)
-    loaded     = false
-
-    if File.exist? local_file then
-      spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file)
-
-      if spec_dump.nil? then
-        spec_dump = Gem.read_binary local_file
-      else
-        loaded = true
-      end
-    else
-      spec_dump = @fetcher.fetch_path spec_path
-      loaded = true
-    end
-
-    specs = Marshal.load spec_dump
-
-    if loaded and @update_cache then
-      begin
-        FileUtils.mkdir_p cache_dir
-
-        open local_file, 'wb' do |io|
-          Marshal.dump specs, io
-        end
-      rescue
-      end
-    end
-
-    specs
-  end
-
-  ##
-  # Warn about legacy repositories if +exception+ indicates only legacy
-  # repositories are available, and yield to the block.  Returns false if the
-  # exception indicates some other FetchError.
-
-  def warn_legacy(exception)
-    uri = exception.uri.to_s
-    if uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ then
-      alert_warning <<-EOF
-RubyGems 1.2+ index not found for:
-\t#{legacy_repos.join "\n\t"}
-
-RubyGems will revert to legacy indexes degrading performance.
-      EOF
-
-      yield
-
-      return true
-    end
-
-    false
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/specification.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/specification.rb
deleted file mode 100644
index c3e714a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/specification.rb
+++ /dev/null
@@ -1,1261 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/version'
-require 'rubygems/requirement'
-require 'rubygems/platform'
-
-# :stopdoc:
-# Time::today has been deprecated in 0.9.5 and will be removed.
-if RUBY_VERSION < '1.9' then
-  def Time.today
-    t = Time.now
-    t - ((t.to_f + t.gmt_offset) % 86400)
-  end unless defined? Time.today
-end
-
-class Date; end # for ruby_code if date.rb wasn't required
-
-# :startdoc:
-
-module Gem
-
-  ##
-  # == Gem::Specification
-  #
-  # The Specification class contains the metadata for a Gem.  Typically
-  # defined in a .gemspec file or a Rakefile, and looks like this:
-  #
-  #   spec = Gem::Specification.new do |s|
-  #     s.name = 'rfoo'
-  #     s.version = '1.0'
-  #     s.summary = 'Example gem specification'
-  #     ...
-  #   end
-  #
-  # There are many <em>gemspec attributes</em>, and the best place to learn
-  # about them in the "Gemspec Reference" linked from the RubyGems wiki.
-
-  class Specification
-
-    ##
-    # Allows deinstallation of gems with legacy platforms.
-
-    attr_accessor :original_platform # :nodoc:
-
-    ##
-    # The the version number of a specification that does not specify one
-    # (i.e. RubyGems 0.7 or earlier).
-
-    NONEXISTENT_SPECIFICATION_VERSION = -1
-
-    ##
-    # The specification version applied to any new Specification instances
-    # created.  This should be bumped whenever something in the spec format
-    # changes.
-    #--
-    # When updating this number, be sure to also update #to_ruby.
-    #
-    # NOTE RubyGems < 1.2 cannot load specification versions > 2.
-
-    CURRENT_SPECIFICATION_VERSION = 2
-
-    ##
-    # An informal list of changes to the specification.  The highest-valued
-    # key should be equal to the CURRENT_SPECIFICATION_VERSION.
-
-    SPECIFICATION_VERSION_HISTORY = {
-      -1 => ['(RubyGems versions up to and including 0.7 did not have versioned specifications)'],
-      1  => [
-        'Deprecated "test_suite_file" in favor of the new, but equivalent, "test_files"',
-        '"test_file=x" is a shortcut for "test_files=[x]"'
-      ],
-      2  => [
-        'Added "required_rubygems_version"',
-        'Now forward-compatible with future versions',
-      ],
-    }
-
-    # :stopdoc:
-    MARSHAL_FIELDS = { -1 => 16, 1 => 16, 2 => 16 }
-
-    now = Time.at(Time.now.to_i)
-    TODAY = now - ((now.to_i + now.gmt_offset) % 86400)
-    # :startdoc:
-
-    ##
-    # List of Specification instances.
-
-    @@list = []
-
-    ##
-    # Optional block used to gather newly defined instances.
-
-    @@gather = nil
-
-    ##
-    # List of attribute names: [:name, :version, ...]
-    @@required_attributes = []
-
-    ##
-    # List of _all_ attributes and default values:
-    #
-    #   [[:name, nil],
-    #    [:bindir, 'bin'],
-    #    ...]
-
-    @@attributes = []
-
-    @@nil_attributes = []
-    @@non_nil_attributes = [:@original_platform]
-
-    ##
-    # List of array attributes
-
-    @@array_attributes = []
-
-    ##
-    # Map of attribute names to default values.
-
-    @@default_value = {}
-
-    ##
-    # Names of all specification attributes
-
-    def self.attribute_names
-      @@attributes.map { |name, default| name }
-    end
-
-    ##
-    # Default values for specification attributes
-
-    def self.attribute_defaults
-      @@attributes.dup
-    end
-
-    ##
-    # The default value for specification attribute +name+
-
-    def self.default_value(name)
-      @@default_value[name]
-    end
-
-    ##
-    # Required specification attributes
-
-    def self.required_attributes
-      @@required_attributes.dup
-    end
-
-    ##
-    # Is +name+ a required attribute?
-
-    def self.required_attribute?(name)
-      @@required_attributes.include? name.to_sym
-    end
-
-    ##
-    # Specification attributes that are arrays (appendable and so-forth)
-
-    def self.array_attributes
-      @@array_attributes.dup
-    end
-
-    ##
-    # A list of Specification instances that have been defined in this Ruby
-    # instance.
-
-    def self.list
-      @@list
-    end
-
-    ##
-    # Specifies the +name+ and +default+ for a specification attribute, and
-    # creates a reader and writer method like Module#attr_accessor.
-    #
-    # The reader method returns the default if the value hasn't been set.
-
-    def self.attribute(name, default=nil)
-      ivar_name = "@#{name}".intern
-      if default.nil? then
-        @@nil_attributes << ivar_name
-      else
-        @@non_nil_attributes << [ivar_name, default]
-      end
-
-      @@attributes << [name, default]
-      @@default_value[name] = default
-      attr_accessor(name)
-    end
-
-    ##
-    # Same as :attribute, but ensures that values assigned to the attribute
-    # are array values by applying :to_a to the value.
-
-    def self.array_attribute(name)
-      @@non_nil_attributes << ["@#{name}".intern, []]
-
-      @@array_attributes << name
-      @@attributes << [name, []]
-      @@default_value[name] = []
-      code = %{
-        def #{name}
-          @#{name} ||= []
-        end
-        def #{name}=(value)
-          @#{name} = Array(value)
-        end
-      }
-
-      module_eval code, __FILE__, __LINE__ - 9
-    end
-
-    ##
-    # Same as attribute above, but also records this attribute as mandatory.
-
-    def self.required_attribute(*args)
-      @@required_attributes << args.first
-      attribute(*args)
-    end
-
-    ##
-    # Sometimes we don't want the world to use a setter method for a
-    # particular attribute.
-    #
-    # +read_only+ makes it private so we can still use it internally.
-
-    def self.read_only(*names)
-      names.each do |name|
-        private "#{name}="
-      end
-    end
-
-    # Shortcut for creating several attributes at once (each with a default
-    # value of +nil+).
-
-    def self.attributes(*args)
-      args.each do |arg|
-        attribute(arg, nil)
-      end
-    end
-
-    ##
-    # Some attributes require special behaviour when they are accessed.  This
-    # allows for that.
-
-    def self.overwrite_accessor(name, &block)
-      remove_method name
-      define_method(name, &block)
-    end
-
-    ##
-    # Defines a _singular_ version of an existing _plural_ attribute (i.e. one
-    # whose value is expected to be an array).  This means just creating a
-    # helper method that takes a single value and appends it to the array.
-    # These are created for convenience, so that in a spec, one can write 
-    #
-    #   s.require_path = 'mylib'
-    #
-    # instead of:
-    #
-    #   s.require_paths = ['mylib']
-    #
-    # That above convenience is available courtesy of:
-    #
-    #   attribute_alias_singular :require_path, :require_paths 
-
-    def self.attribute_alias_singular(singular, plural)
-      define_method("#{singular}=") { |val|
-        send("#{plural}=", [val])
-      }
-      define_method("#{singular}") { 
-        val = send("#{plural}")
-        val.nil? ? nil : val.first
-      }
-    end
-
-    ##
-    # Dump only crucial instance variables.
-    #--
-    # MAINTAIN ORDER!
-
-    def _dump(limit)
-      Marshal.dump [
-        @rubygems_version,
-        @specification_version,
-        @name,
-        @version,
-        (Time === @date ? @date : (require 'time'; Time.parse(@date.to_s))),
-        @summary,
-        @required_ruby_version,
-        @required_rubygems_version,
-        @original_platform,
-        @dependencies,
-        @rubyforge_project,
-        @email,
-        @authors,
-        @description,
-        @homepage,
-        @has_rdoc,
-        @new_platform,
-      ]
-    end
-
-    ##
-    # Load custom marshal format, re-initializing defaults as needed
-
-    def self._load(str)
-      array = Marshal.load str
-
-      spec = Gem::Specification.new
-      spec.instance_variable_set :@specification_version, array[1]
-
-      current_version = CURRENT_SPECIFICATION_VERSION
-
-      field_count = if spec.specification_version > current_version then
-                      spec.instance_variable_set :@specification_version,
-                                                 current_version
-                      MARSHAL_FIELDS[current_version]
-                    else
-                      MARSHAL_FIELDS[spec.specification_version]
-                    end
-
-      if array.size < field_count then
-        raise TypeError, "invalid Gem::Specification format #{array.inspect}"
-      end
-
-      spec.instance_variable_set :@rubygems_version,          array[0]
-      # spec version
-      spec.instance_variable_set :@name,                      array[2]
-      spec.instance_variable_set :@version,                   array[3]
-      spec.instance_variable_set :@date,                      array[4]
-      spec.instance_variable_set :@summary,                   array[5]
-      spec.instance_variable_set :@required_ruby_version,     array[6]
-      spec.instance_variable_set :@required_rubygems_version, array[7]
-      spec.instance_variable_set :@original_platform,         array[8]
-      spec.instance_variable_set :@dependencies,              array[9]
-      spec.instance_variable_set :@rubyforge_project,         array[10]
-      spec.instance_variable_set :@email,                     array[11]
-      spec.instance_variable_set :@authors,                   array[12]
-      spec.instance_variable_set :@description,               array[13]
-      spec.instance_variable_set :@homepage,                  array[14]
-      spec.instance_variable_set :@has_rdoc,                  array[15]
-      spec.instance_variable_set :@new_platform,              array[16]
-      spec.instance_variable_set :@platform,                  array[16].to_s
-      spec.instance_variable_set :@loaded,                    false
-
-      spec
-    end
-
-    ##
-    # List of depedencies that will automatically be activated at runtime.
-
-    def runtime_dependencies
-      dependencies.select { |d| d.type == :runtime || d.type == nil }
-    end
-
-    ##
-    # List of dependencies that are used for development
-
-    def development_dependencies
-      dependencies.select { |d| d.type == :development }
-    end
-
-    def test_suite_file # :nodoc:
-      warn 'test_suite_file deprecated, use test_files'
-      test_files.first
-    end
-
-    def test_suite_file=(val) # :nodoc:
-      warn 'test_suite_file= deprecated, use test_files='
-      @test_files = [] unless defined? @test_files
-      @test_files << val
-    end
-
-    ##
-    # true when this gemspec has been loaded from a specifications directory.
-    # This attribute is not persisted.
-
-    attr_accessor :loaded
-
-    ##
-    # Path this gemspec was loaded from.  This attribute is not persisted.
-
-    attr_accessor :loaded_from
-
-    ##
-    # Returns an array with bindir attached to each executable in the
-    # executables list
-
-    def add_bindir(executables)
-      return nil if executables.nil?
-
-      if @bindir then
-        Array(executables).map { |e| File.join(@bindir, e) }
-      else
-        executables
-      end
-    rescue
-      return nil
-    end
-
-    ##
-    # Files in the Gem under one of the require_paths
-
-    def lib_files
-      @files.select do |file|
-        require_paths.any? do |path|
-          file.index(path) == 0
-        end
-      end
-    end
-
-    ##
-    # True if this gem was loaded from disk
-
-    alias :loaded? :loaded
-
-    ##
-    # True if this gem has files in test_files
-
-    def has_unit_tests?
-      not test_files.empty?
-    end
-
-    alias has_test_suite? has_unit_tests? # :nodoc: deprecated
-    
-    ##
-    # Specification constructor.  Assigns the default values to the
-    # attributes, adds this spec to the list of loaded specs (see
-    # Specification.list), and yields itself for further initialization.
-
-    def initialize
-      @new_platform = nil
-      assign_defaults
-      @loaded = false
-      @loaded_from = nil
-      @@list << self
-
-      yield self if block_given?
-
-      @@gather.call(self) if @@gather
-    end
-
-    ##
-    # Each attribute has a default value (possibly nil).  Here, we initialize
-    # all attributes to their default value.  This is done through the
-    # accessor methods, so special behaviours will be honored.  Furthermore,
-    # we take a _copy_ of the default so each specification instance has its
-    # own empty arrays, etc.
-
-    def assign_defaults
-      @@nil_attributes.each do |name|
-        instance_variable_set name, nil
-      end
-
-      @@non_nil_attributes.each do |name, default|
-        value = case default
-                when Time, Numeric, Symbol, true, false, nil then default
-                else default.dup
-                end
-
-        instance_variable_set name, value
-      end
-
-      # HACK
-      instance_variable_set :@new_platform, Gem::Platform::RUBY
-    end
-
-    ##
-    # Special loader for YAML files.  When a Specification object is loaded
-    # from a YAML file, it bypasses the normal Ruby object initialization
-    # routine (#initialize).  This method makes up for that and deals with
-    # gems of different ages.
-    #
-    # 'input' can be anything that YAML.load() accepts: String or IO. 
-
-    def self.from_yaml(input)
-      input = normalize_yaml_input input
-      spec = YAML.load input
-
-      if spec && spec.class == FalseClass then
-        raise Gem::EndOfYAMLException
-      end
-
-      unless Gem::Specification === spec then
-        raise Gem::Exception, "YAML data doesn't evaluate to gem specification"
-      end
-
-      unless (spec.instance_variables.include? '@specification_version' or
-              spec.instance_variables.include? :@specification_version) and
-             spec.instance_variable_get :@specification_version
-        spec.instance_variable_set :@specification_version, 
-                                   NONEXISTENT_SPECIFICATION_VERSION
-      end
-
-      spec
-    end 
-
-    ##
-    # Loads ruby format gemspec from +filename+
-
-    def self.load(filename)
-      gemspec = nil
-      fail "NESTED Specification.load calls not allowed!" if @@gather
-      @@gather = proc { |gs| gemspec = gs }
-      data = File.read(filename)
-      eval(data)
-      gemspec
-    ensure
-      @@gather = nil
-    end
-
-    ##
-    # Make sure the YAML specification is properly formatted with dashes
-
-    def self.normalize_yaml_input(input)
-      result = input.respond_to?(:read) ? input.read : input
-      result = "--- " + result unless result =~ /^--- /
-      result
-    end
-    
-    ##
-    # Sets the rubygems_version to the current RubyGems version
-
-    def mark_version
-      @rubygems_version = RubyGemsVersion
-    end
-
-    ##
-    # Ignore unknown attributes while loading
-
-    def method_missing(sym, *a, &b) # :nodoc:
-      if @specification_version > CURRENT_SPECIFICATION_VERSION and
-         sym.to_s =~ /=$/ then
-        warn "ignoring #{sym} loading #{full_name}" if $DEBUG
-      else
-        super
-      end
-    end
-
-    ##
-    # Adds a development dependency named +gem+ with +requirements+ to this
-    # Gem.  For example:
-    #
-    #   spec.add_development_dependency 'jabber4r', '> 0.1', '<= 0.5'
-    #
-    # Development dependencies aren't installed by default and aren't
-    # activated when a gem is required.
-
-    def add_development_dependency(gem, *requirements)
-      add_dependency_with_type(gem, :development, *requirements)
-    end
-
-    ##
-    # Adds a runtime dependency named +gem+ with +requirements+ to this Gem.
-    # For example:
-    #
-    #   spec.add_runtime_dependency 'jabber4r', '> 0.1', '<= 0.5'
-
-    def add_runtime_dependency(gem, *requirements)
-      add_dependency_with_type(gem, :runtime, *requirements)
-    end
-
-    ##
-    # Adds a runtime dependency
-
-    alias add_dependency add_runtime_dependency
-
-    ##
-    # Returns the full name (name-version) of this Gem.  Platform information
-    # is included (name-version-platform) if it is specified and not the
-    # default Ruby platform.
-
-    def full_name
-      if platform == Gem::Platform::RUBY or platform.nil? then
-        "#{@name}-#{@version}"
-      else
-        "#{@name}-#{@version}-#{platform}"
-      end
-    end
-
-    ##
-    # Returns the full name (name-version) of this gemspec using the original
-    # platform.  For use with legacy gems.
-
-    def original_name # :nodoc:
-      if platform == Gem::Platform::RUBY or platform.nil? then
-        "#{@name}-#{@version}"
-      else
-        "#{@name}-#{@version}-#{@original_platform}"
-      end
-    end
-
-    ##
-    # The full path to the gem (install path + full name).
-
-    def full_gem_path
-      path = File.join installation_path, 'gems', full_name
-      return path if File.directory? path
-      File.join installation_path, 'gems', original_name
-    end
-
-    ##
-    # The default (generated) file name of the gem.
-
-    def file_name
-      full_name + ".gem"
-    end
-
-    ##
-    # The directory that this gem was installed into.
-
-    def installation_path
-      path = File.dirname(@loaded_from).split(File::SEPARATOR)[0..-2]
-      path = path.join File::SEPARATOR
-      File.expand_path path
-    end
-
-    ##
-    # Checks if this specification meets the requirement of +dependency+.
-
-    def satisfies_requirement?(dependency)
-      return @name == dependency.name && 
-        dependency.version_requirements.satisfied_by?(@version)
-    end
-
-    ##
-    # Returns an object you can use to sort specifications in #sort_by.
-
-    def sort_obj
-      [@name, @version.to_ints, @new_platform == Gem::Platform::RUBY ? -1 : 1]
-    end
-
-    def <=>(other) # :nodoc:
-      sort_obj <=> other.sort_obj
-    end
-
-    ##
-    # Tests specs for equality (across all attributes).
-
-    def ==(other) # :nodoc:
-      self.class === other && same_attributes?(other)
-    end
-
-    alias eql? == # :nodoc:
-
-    ##
-    # True if this gem has the same attributes as +other+.
-
-    def same_attributes?(other)
-      @@attributes.each do |name, default|
-        return false unless self.send(name) == other.send(name)
-      end
-      true
-    end
-
-    private :same_attributes?
-
-    def hash # :nodoc:
-      @@attributes.inject(612553) { |hash_code, (name, default_value)|
-        hash_code ^ self.send(name).hash
-      }
-    end
-
-    def to_yaml(opts = {}) # :nodoc:
-      mark_version
-
-      attributes = @@attributes.map { |name,| name.to_s }.sort
-      attributes = attributes - %w[name version platform]
-
-      yaml = YAML.quick_emit object_id, opts do |out|
-        out.map taguri, to_yaml_style do |map|
-          map.add 'name', @name
-          map.add 'version', @version
-          platform = case @original_platform
-                     when nil, '' then
-                       'ruby'
-                     when String then
-                       @original_platform
-                     else
-                       @original_platform.to_s
-                     end
-          map.add 'platform', platform
-
-          attributes.each do |name|
-            map.add name, instance_variable_get("@#{name}")
-          end
-        end
-      end
-    end
-
-    def yaml_initialize(tag, vals) # :nodoc:
-      vals.each do |ivar, val|
-        instance_variable_set "@#{ivar}", val
-      end
-
-      @original_platform = @platform # for backwards compatibility
-      self.platform = Gem::Platform.new @platform
-    end
-
-    ##
-    # Returns a Ruby code representation of this specification, such that it
-    # can be eval'ed and reconstruct the same specification later.  Attributes
-    # that still have their default values are omitted.
-
-    def to_ruby
-      mark_version
-      result = []
-      result << "# -*- encoding: utf-8 -*-"
-      result << nil
-      result << "Gem::Specification.new do |s|"
-
-      result << "  s.name = #{ruby_code name}"
-      result << "  s.version = #{ruby_code version}"
-      unless platform.nil? or platform == Gem::Platform::RUBY then
-        result << "  s.platform = #{ruby_code original_platform}"
-      end
-      result << ""
-      result << "  s.required_rubygems_version = #{ruby_code required_rubygems_version} if s.respond_to? :required_rubygems_version="
-
-      handled = [
-        :dependencies,
-        :name,
-        :platform,
-        :required_rubygems_version,
-        :specification_version,
-        :version,
-      ]
-
-      attributes = @@attributes.sort_by { |attr_name,| attr_name.to_s }
-
-      attributes.each do |attr_name, default|
-        next if handled.include? attr_name
-        current_value = self.send(attr_name)
-        if current_value != default or
-           self.class.required_attribute? attr_name then
-          result << "  s.#{attr_name} = #{ruby_code current_value}"
-        end
-      end
-
-      result << nil
-      result << "  if s.respond_to? :specification_version then"
-      result << "    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION"
-      result << "    s.specification_version = #{specification_version}"
-      result << nil
-
-      result << "    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then"
-
-      unless dependencies.empty? then
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          dep.instance_variable_set :@type, :runtime if dep.type.nil? # HACK
-          result << "      s.add_#{dep.type}_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      end
-
-      result << "    else"
-
-      unless dependencies.empty? then
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          result << "      s.add_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      end
-
-      result << '    end'
-
-      result << "  else"
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          result << "    s.add_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      result << "  end"
-
-      result << "end"
-      result << nil
-
-      result.join "\n"
-    end
-
-    ##
-    # Checks that the specification contains all required fields, and does a
-    # very basic sanity check.
-    #
-    # Raises InvalidSpecificationException if the spec does not pass the
-    # checks..
-
-    def validate
-      extend Gem::UserInteraction
-      normalize
-
-      if rubygems_version != RubyGemsVersion then
-        raise Gem::InvalidSpecificationException,
-              "expected RubyGems version #{RubyGemsVersion}, was #{rubygems_version}"
-      end
-
-      @@required_attributes.each do |symbol|
-        unless self.send symbol then
-          raise Gem::InvalidSpecificationException,
-                "missing value for attribute #{symbol}"
-        end
-      end 
-
-      if require_paths.empty? then
-        raise Gem::InvalidSpecificationException,
-              "specification must have at least one require_path"
-      end
-
-      case platform
-      when Gem::Platform, Platform::RUBY then # ok
-      else
-        raise Gem::InvalidSpecificationException,
-              "invalid platform #{platform.inspect}, see Gem::Platform"
-      end
-
-      unless Array === authors and
-             authors.all? { |author| String === author } then
-        raise Gem::InvalidSpecificationException,
-              'authors must be Array of Strings'
-      end
-
-      # Warnings
-
-      %w[author email homepage rubyforge_project summary].each do |attribute|
-        value = self.send attribute
-        alert_warning "no #{attribute} specified" if value.nil? or value.empty?
-      end
-
-      alert_warning "RDoc will not be generated (has_rdoc == false)" unless
-        has_rdoc
-
-      alert_warning "deprecated autorequire specified" if autorequire
-
-      executables.each do |executable|
-        executable_path = File.join bindir, executable
-        shebang = File.read(executable_path, 2) == '#!'
-
-        alert_warning "#{executable_path} is missing #! line" unless shebang
-      end
-
-      true
-    end
-
-    ##
-    # Normalize the list of files so that:
-    # * All file lists have redundancies removed.
-    # * Files referenced in the extra_rdoc_files are included in the package
-    #   file list. 
-    #
-    # Also, the summary and description are converted to a normal format. 
-
-    def normalize
-      if defined?(@extra_rdoc_files) and @extra_rdoc_files then
-        @extra_rdoc_files.uniq!
-        @files ||= []
-        @files.concat(@extra_rdoc_files)
-      end
-      @files.uniq! if @files
-    end
-
-    ##
-    # Return a list of all gems that have a dependency on this gemspec.  The
-    # list is structured with entries that conform to:
-    #
-    #   [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
-
-    def dependent_gems
-      out = []
-      Gem.source_index.each do |name,gem|
-        gem.dependencies.each do |dep|
-          if self.satisfies_requirement?(dep) then
-            sats = []
-            find_all_satisfiers(dep) do |sat|
-              sats << sat
-            end
-            out << [gem, dep, sats]
-          end
-        end
-      end
-      out
-    end
-
-    def to_s
-      "#<Gem::Specification name=#{@name} version=#{@version}>"
-    end
-
-    def add_dependency_with_type(dependency, type, *requirements)
-      requirements = if requirements.empty? then
-                       Gem::Requirement.default
-                     else
-                       requirements.flatten
-                     end
-
-      unless dependency.respond_to?(:name) &&
-        dependency.respond_to?(:version_requirements)
-
-        dependency = Dependency.new(dependency, requirements, type)
-      end
-
-      dependencies << dependency
-    end
-
-    private :add_dependency_with_type
-
-    def find_all_satisfiers(dep)
-      Gem.source_index.each do |name,gem|
-        if(gem.satisfies_requirement?(dep)) then
-          yield gem
-        end
-      end
-    end
-
-    private :find_all_satisfiers
-
-    ##
-    # Return a string containing a Ruby code representation of the given
-    # object.
-
-    def ruby_code(obj)
-      case obj
-      when String            then '%q{' + obj + '}'
-      when Array             then obj.inspect
-      when Gem::Version      then obj.to_s.inspect
-      when Date              then '%q{' + obj.strftime('%Y-%m-%d') + '}'
-      when Time              then '%q{' + obj.strftime('%Y-%m-%d') + '}'
-      when Numeric           then obj.inspect
-      when true, false, nil  then obj.inspect
-      when Gem::Platform     then "Gem::Platform.new(#{obj.to_a.inspect})"
-      when Gem::Requirement  then "Gem::Requirement.new(#{obj.to_s.inspect})"
-      else raise Exception, "ruby_code case not handled: #{obj.class}"
-      end
-    end
-    
-    private :ruby_code
-
-    # :section: Required gemspec attributes
-    
-    ##
-    # The version of RubyGems used to create this gem
-
-    required_attribute :rubygems_version, Gem::RubyGemsVersion
-
-    ##
-    # The Gem::Specification version of this gemspec
-
-    required_attribute :specification_version, CURRENT_SPECIFICATION_VERSION
-
-    ##
-    # This gem's name
-
-    required_attribute :name
-
-    ##
-    # This gem's version
-
-    required_attribute :version
-
-    ##
-    # The date this gem was created
-
-    required_attribute :date, TODAY
-
-    ##
-    # A short summary of this gem's description.  Displayed in `gem list -d`.
-
-    required_attribute :summary
-
-    ##
-    # Paths in the gem to add to $LOAD_PATH when this gem is activated
-
-    required_attribute :require_paths, ['lib']
-
-    # :section: Optional gemspec attributes
-
-    ##
-    # A contact email for this gem
-    
-    attribute :email
-
-    ##
-    # The URL of this gem's home page
-
-    attribute :homepage
-
-    ##
-    # The rubyforge project this gem lives under.  i.e. RubyGems'
-    # rubyforge_project is "rubygems".
-    
-    attribute :rubyforge_project
-
-    ##
-    # A long description of this gem
-
-    attribute :description
-
-    ##
-    # Autorequire was used by old RubyGems to automatically require a file.
-    # It no longer is supported.
-
-    attribute :autorequire
-
-    ##
-    # The default executable for this gem.
-
-    attribute :default_executable
-
-    ##
-    # The path in the gem for executable scripts
-
-    attribute :bindir, 'bin'
-
-    ##
-    # True if this gem is RDoc-compliant
-
-    attribute :has_rdoc, false
-
-    ##
-    # True if this gem supports RDoc
-
-    alias :has_rdoc? :has_rdoc
-
-    ##
-    # The ruby of version required by this gem
-
-    attribute :required_ruby_version, Gem::Requirement.default
-
-    ##
-    # The RubyGems version required by this gem
-
-    attribute :required_rubygems_version, Gem::Requirement.default
-
-    ##
-    # The platform this gem runs on.  See Gem::Platform for details.
-
-    attribute :platform, Gem::Platform::RUBY
-
-    ##
-    # The key used to sign this gem.  See Gem::Security for details.
-
-    attribute :signing_key, nil
-
-    ##
-    # The certificate chain used to sign this gem.  See Gem::Security for
-    # details.
-
-    attribute :cert_chain, []
-
-    ##
-    # A message that gets displayed after the gem is installed
-
-    attribute :post_install_message, nil
-
-    ##
-    # The list of authors who wrote this gem
-
-    array_attribute :authors
-
-    ##
-    # Files included in this gem
-
-    array_attribute :files
-
-    ##
-    # Test files included in this gem
-
-    array_attribute :test_files
-
-    ##
-    # An ARGV-style array of options to RDoc
-
-    array_attribute :rdoc_options
-
-    ##
-    # Extra files to add to RDoc
-
-    array_attribute :extra_rdoc_files
-
-    ##
-    # Executables included in the gem
-
-    array_attribute :executables
-
-    ##
-    # Extensions to build when installing the gem.  See
-    # Gem::Installer#build_extensions for valid values.
-
-    array_attribute :extensions
-
-    ##
-    # An array or things required by this gem.  Not used by anything
-    # presently.
-
-    array_attribute :requirements
-
-    ##
-    # A list of Gem::Dependency objects this gem depends on.  Only appendable.
-
-    array_attribute :dependencies
-
-    read_only :dependencies
-
-    # :section: Aliased gemspec attributes
-
-    ##
-    # Singular accessor for executables
-    
-    attribute_alias_singular :executable, :executables
-
-    ##
-    # Singular accessor for authors
-
-    attribute_alias_singular :author, :authors
-
-    ##
-    # Singular accessor for require_paths
-
-    attribute_alias_singular :require_path, :require_paths
-
-    ##
-    # Singular accessor for test_files
-
-    attribute_alias_singular :test_file, :test_files
-
-    overwrite_accessor :version= do |version|
-      @version = Version.create(version)
-    end
-
-    overwrite_accessor :platform do
-      @new_platform
-    end
-
-    overwrite_accessor :platform= do |platform|
-      if @original_platform.nil? or
-         @original_platform == Gem::Platform::RUBY then
-        @original_platform = platform
-      end
-
-      case platform
-      when Gem::Platform::CURRENT then
-        @new_platform = Gem::Platform.local
-        @original_platform = @new_platform.to_s
-
-      when Gem::Platform then
-        @new_platform = platform
-
-      # legacy constants
-      when nil, Gem::Platform::RUBY then
-        @new_platform = Gem::Platform::RUBY
-      when 'mswin32' then # was Gem::Platform::WIN32
-        @new_platform = Gem::Platform.new 'x86-mswin32'
-      when 'i586-linux' then # was Gem::Platform::LINUX_586
-        @new_platform = Gem::Platform.new 'x86-linux'
-      when 'powerpc-darwin' then # was Gem::Platform::DARWIN
-        @new_platform = Gem::Platform.new 'ppc-darwin'
-      else
-        @new_platform = Gem::Platform.new platform
-      end
-
-      @platform = @new_platform.to_s
-
-      @new_platform
-    end
-
-    overwrite_accessor :required_ruby_version= do |value|
-      @required_ruby_version = Gem::Requirement.create(value)
-    end
-
-    overwrite_accessor :required_rubygems_version= do |value|
-      @required_rubygems_version = Gem::Requirement.create(value)
-    end
-
-    overwrite_accessor :date= do |date|
-      # We want to end up with a Time object with one-day resolution.
-      # This is the cleanest, most-readable, faster-than-using-Date
-      # way to do it.
-      case date
-      when String then
-        @date = if /\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
-                  Time.local($1.to_i, $2.to_i, $3.to_i)
-                else
-                  require 'time'
-                  Time.parse date
-                end
-      when Time then
-        @date = Time.local(date.year, date.month, date.day)
-      when Date then
-        @date = Time.local(date.year, date.month, date.day)
-      else
-        @date = TODAY
-      end
-    end
-
-    overwrite_accessor :date do
-      self.date = nil if @date.nil?  # HACK Sets the default value for date
-      @date
-    end
-
-    overwrite_accessor :summary= do |str|
-      @summary = if str then
-                   str.strip.
-                   gsub(/(\w-)\n[ \t]*(\w)/, '\1\2').
-                   gsub(/\n[ \t]*/, " ")
-                 end
-    end
-
-    overwrite_accessor :description= do |str|
-      @description = if str then
-                       str.strip.
-                       gsub(/(\w-)\n[ \t]*(\w)/, '\1\2').
-                       gsub(/\n[ \t]*/, " ")
-                     end
-    end
-
-    overwrite_accessor :default_executable do
-      begin
-        if defined?(@default_executable) and @default_executable
-          result = @default_executable
-        elsif @executables and @executables.size == 1
-          result = Array(@executables).first
-        else
-          result = nil
-        end
-        result
-      rescue
-        nil
-      end
-    end
-
-    overwrite_accessor :test_files do
-      # Handle the possibility that we have @test_suite_file but not
-      # @test_files.  This will happen when an old gem is loaded via
-      # YAML.
-      if defined? @test_suite_file then
-        @test_files = [@test_suite_file].flatten
-        @test_suite_file = nil
-      end
-      if defined?(@test_files) and @test_files then
-        @test_files
-      else
-        @test_files = []
-      end
-    end
-
-    overwrite_accessor :files do
-      result = []
-      result.push(*@files) if defined?(@files)
-      result.push(*@test_files) if defined?(@test_files)
-      result.push(*(add_bindir(@executables)))
-      result.push(*@extra_rdoc_files) if defined?(@extra_rdoc_files)
-      result.push(*@extensions) if defined?(@extensions)
-      result.uniq.compact
-    end
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/test_utilities.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/test_utilities.rb
deleted file mode 100644
index 8b23d32..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/test_utilities.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'tempfile'
-require 'rubygems'
-require 'rubygems/remote_fetcher'
-
-##
-# A fake Gem::RemoteFetcher for use in tests or to avoid real live HTTP
-# requests when testing code that uses RubyGems.
-#
-# Example:
-#
-#   @fetcher = Gem::FakeFetcher.new
-#   @fetcher.data['http://gems.example.com/yaml'] = source_index.to_yaml
-#   Gem::RemoteFetcher.fetcher = @fetcher
-#   
-#   # invoke RubyGems code
-#   
-#   paths = @fetcher.paths
-#   assert_equal 'http://gems.example.com/yaml', paths.shift
-#   assert paths.empty?, paths.join(', ')
-#
-# See RubyGems' tests for more examples of FakeFetcher.
-
-class Gem::FakeFetcher
-
-  attr_reader :data
-  attr_accessor :paths
-
-  def initialize
-    @data = {}
-    @paths = []
-  end
-
-  def fetch_path path, mtime = nil
-    path = path.to_s
-    @paths << path
-    raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
-
-    unless @data.key? path then
-      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
-    end
-
-    data = @data[path]
-
-    if data.respond_to?(:call) then
-      data.call
-    else
-      if path.to_s =~ /gz$/ and not data.nil? and not data.empty? then
-        data = Gem.gunzip data
-      end
-
-      data
-    end
-  end
-
-  def fetch_size(path)
-    path = path.to_s
-    @paths << path
-
-    raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
-
-    unless @data.key? path then
-      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
-    end
-
-    data = @data[path]
-
-    data.respond_to?(:call) ? data.call : data.length
-  end
-
-  def download spec, source_uri, install_dir = Gem.dir
-    name = "#{spec.full_name}.gem"
-    path = File.join(install_dir, 'cache', name)
-
-    Gem.ensure_gem_subdirectories install_dir
-
-    if source_uri =~ /^http/ then
-      File.open(path, "wb") do |f|
-        f.write fetch_path(File.join(source_uri, "gems", name))
-      end
-    else
-      FileUtils.cp source_uri, path
-    end
-
-    path
-  end
-
-end
-
-# :stopdoc:
-class Gem::RemoteFetcher
-
-  def self.fetcher=(fetcher)
-    @fetcher = fetcher
-  end
-
-end
-# :startdoc:
-
-##
-# A StringIO duck-typed class that uses Tempfile instead of String as the
-# backing store.
-#--
-# This class was added to flush out problems in Rubinius' IO implementation.
-
-class TempIO
-
-  @@count = 0
-
-  def initialize(string = '')
-    @tempfile = Tempfile.new "TempIO-#{@@count += 1}"
-    @tempfile.binmode
-    @tempfile.write string
-    @tempfile.rewind
-  end
-
-  def method_missing(meth, *args, &block)
-    @tempfile.send(meth, *args, &block)
-  end
-
-  def respond_to?(meth)
-    @tempfile.respond_to? meth
-  end
-
-  def string
-    @tempfile.flush
-
-    Gem.read_binary @tempfile.path
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/timer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/timer.rb
deleted file mode 100644
index 06250f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/timer.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# This file defines a $log variable for logging, and a time() method for recording timing
-# information.
-#
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-$log = Object.new
-def $log.debug(str)
-  STDERR.puts str
-end
-
-def time(msg, width=25)
-  t = Time.now
-  return_value = yield
-  elapsed = Time.now.to_f - t.to_f
-  elapsed = sprintf("%3.3f", elapsed)
-  $log.debug "#{msg.ljust(width)}: #{elapsed}s"
-  return_value
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/uninstaller.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/uninstaller.rb
deleted file mode 100644
index 5f19da5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/uninstaller.rb
+++ /dev/null
@@ -1,242 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'rubygems'
-require 'rubygems/dependency_list'
-require 'rubygems/doc_manager'
-require 'rubygems/user_interaction'
-
-##
-# An Uninstaller.
-
-class Gem::Uninstaller
-
-  include Gem::UserInteraction
-
-  ##
-  # The directory a gem's executables will be installed into
-
-  attr_reader :bin_dir
-
-  ##
-  # The gem repository the gem will be installed into
-
-  attr_reader :gem_home
-
-  ##
-  # The Gem::Specification for the gem being uninstalled, only set during
-  # #uninstall_gem
-
-  attr_reader :spec
-
-  ##
-  # Constructs an uninstaller that will uninstall +gem+
-
-  def initialize(gem, options = {})
-    @gem = gem
-    @version = options[:version] || Gem::Requirement.default
-    gem_home = options[:install_dir] || Gem.dir
-    @gem_home = File.expand_path gem_home
-    @force_executables = options[:executables]
-    @force_all = options[:all]
-    @force_ignore = options[:ignore]
-    @bin_dir = options[:bin_dir]
-
-    spec_dir = File.join @gem_home, 'specifications'
-    @source_index = Gem::SourceIndex.from_gems_in spec_dir
-  end
-
-  ##
-  # Performs the uninstall of the gem.  This removes the spec, the Gem
-  # directory, and the cached .gem file.
-
-  def uninstall
-    list = @source_index.find_name @gem, @version
-
-    if list.empty? then
-      raise Gem::InstallError, "Unknown gem #{@gem} #{@version}"
-
-    elsif list.size > 1 and @force_all then
-      remove_all list.dup
-
-    elsif list.size > 1 then
-      gem_names = list.collect {|gem| gem.full_name} + ["All versions"]
-
-      say
-      gem_name, index = choose_from_list "Select gem to uninstall:", gem_names
-
-      if index == list.size then
-        remove_all list.dup
-      elsif index >= 0 && index < list.size then
-        uninstall_gem list[index], list.dup
-      else
-        say "Error: must enter a number [1-#{list.size+1}]"
-      end
-    else
-      uninstall_gem list.first, list.dup
-    end
-  end
-
-  ##
-  # Uninstalls gem +spec+
-
-  def uninstall_gem(spec, specs)
-    @spec = spec
-
-    Gem.pre_uninstall_hooks.each do |hook|
-      hook.call self
-    end
-
-    specs.each { |s| remove_executables s }
-    remove spec, specs
-
-    Gem.post_uninstall_hooks.each do |hook|
-      hook.call self
-    end
-
-    @spec = nil
-  end
-
-  ##
-  # Removes installed executables and batch files (windows only) for
-  # +gemspec+.
-
-  def remove_executables(gemspec)
-    return if gemspec.nil?
-
-    if gemspec.executables.size > 0 then
-      bindir = @bin_dir ? @bin_dir : (Gem.bindir @gem_home)
-
-      list = @source_index.find_name(gemspec.name).delete_if { |spec|
-        spec.version == gemspec.version
-      }
-
-      executables = gemspec.executables.clone
-
-      list.each do |spec|
-        spec.executables.each do |exe_name|
-          executables.delete(exe_name)
-        end
-      end
-
-      return if executables.size == 0
-
-      answer = if @force_executables.nil? then
-                 ask_yes_no("Remove executables:\n" \
-                            "\t#{gemspec.executables.join(", ")}\n\nin addition to the gem?",
-                            true) # " # appease ruby-mode - don't ask
-               else
-                 @force_executables
-               end
-
-      unless answer then
-        say "Executables and scripts will remain installed."
-      else
-        raise Gem::FilePermissionError, bindir unless File.writable? bindir
-
-        gemspec.executables.each do |exe_name|
-          say "Removing #{exe_name}"
-          FileUtils.rm_f File.join(bindir, exe_name)
-          FileUtils.rm_f File.join(bindir, "#{exe_name}.bat")
-        end
-      end
-    end
-  end
-
-  ##
-  # Removes all gems in +list+.
-  #
-  # NOTE: removes uninstalled gems from +list+.
-
-  def remove_all(list)
-    list.dup.each { |spec| uninstall_gem spec, list }
-  end
-
-  ##
-  # spec:: the spec of the gem to be uninstalled
-  # list:: the list of all such gems
-  #
-  # Warning: this method modifies the +list+ parameter.  Once it has
-  # uninstalled a gem, it is removed from that list.
-
-  def remove(spec, list)
-    unless dependencies_ok? spec then
-      raise Gem::DependencyRemovalException,
-            "Uninstallation aborted due to dependent gem(s)"
-    end
-
-    unless path_ok? spec then
-      e = Gem::GemNotInHomeException.new \
-            "Gem is not installed in directory #{@gem_home}"
-      e.spec = spec
-
-      raise e
-    end
-
-    raise Gem::FilePermissionError, spec.installation_path unless
-      File.writable?(spec.installation_path)
-
-    FileUtils.rm_rf spec.full_gem_path
-
-    original_platform_name = [
-      spec.name, spec.version, spec.original_platform].join '-'
-
-    spec_dir = File.join spec.installation_path, 'specifications'
-    gemspec = File.join spec_dir, "#{spec.full_name}.gemspec"
-
-    unless File.exist? gemspec then
-      gemspec = File.join spec_dir, "#{original_platform_name}.gemspec"
-    end
-
-    FileUtils.rm_rf gemspec
-
-    cache_dir = File.join spec.installation_path, 'cache'
-    gem = File.join cache_dir, "#{spec.full_name}.gem"
-
-    unless File.exist? gem then
-      gem = File.join cache_dir, "#{original_platform_name}.gem"
-    end
-
-    FileUtils.rm_rf gem
-
-    Gem::DocManager.new(spec).uninstall_doc
-
-    say "Successfully uninstalled #{spec.full_name}"
-
-    list.delete spec
-  end
-
-  def path_ok?(spec)
-    full_path = File.join @gem_home, 'gems', spec.full_name
-    original_path = File.join @gem_home, 'gems', spec.original_name
-
-    full_path == spec.full_gem_path || original_path == spec.full_gem_path
-  end
-
-  def dependencies_ok?(spec)
-    return true if @force_ignore
-
-    deplist = Gem::DependencyList.from_source_index @source_index
-    deplist.ok_to_remove?(spec.full_name) || ask_if_ok(spec)
-  end
-
-  def ask_if_ok(spec)
-    msg = ['']
-    msg << 'You have requested to uninstall the gem:'
-    msg << "\t#{spec.full_name}"
-    spec.dependent_gems.each do |gem,dep,satlist|
-      msg <<
-        ("#{gem.name}-#{gem.version} depends on " +
-        "[#{dep.name} (#{dep.version_requirements})]")
-    end
-    msg << 'If you remove this gems, one or more dependencies will not be met.'
-    msg << 'Continue with Uninstall?'
-    return ask_yes_no(msg.join("\n"), true)
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/user_interaction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/user_interaction.rb
deleted file mode 100644
index 30a728c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/user_interaction.rb
+++ /dev/null
@@ -1,360 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-
-  ##
-  # Module that defines the default UserInteraction.  Any class including this
-  # module will have access to the +ui+ method that returns the default UI.
-
-  module DefaultUserInteraction
-
-    ##
-    # The default UI is a class variable of the singleton class for this
-    # module.
-
-    @ui = nil
-
-    ##
-    # Return the default UI.
-
-    def self.ui
-      @ui ||= Gem::ConsoleUI.new
-    end
-
-    ##
-    # Set the default UI.  If the default UI is never explicitly set, a simple
-    # console based UserInteraction will be used automatically.
-
-    def self.ui=(new_ui)
-      @ui = new_ui
-    end
-
-    ##
-    # Use +new_ui+ for the duration of +block+.
-
-    def self.use_ui(new_ui)
-      old_ui = @ui
-      @ui = new_ui
-      yield
-    ensure
-      @ui = old_ui
-    end
-
-    ##
-    # See DefaultUserInteraction::ui
-
-    def ui
-      DefaultUserInteraction.ui
-    end
-
-    ##
-    # See DefaultUserInteraction::ui=
-
-    def ui=(new_ui)
-      DefaultUserInteraction.ui = new_ui
-    end
-
-    ##
-    # See DefaultUserInteraction::use_ui
-
-    def use_ui(new_ui, &block)
-      DefaultUserInteraction.use_ui(new_ui, &block)
-    end
-
-  end
-
-  ##
-  # Make the default UI accessable without the "ui." prefix.  Classes
-  # including this module may use the interaction methods on the default UI
-  # directly.  Classes may also reference the ui and ui= methods.
-  #
-  # Example:
-  #
-  #   class X
-  #     include Gem::UserInteraction
-  #
-  #     def get_answer
-  #       n = ask("What is the meaning of life?")
-  #     end
-  #   end
-
-  module UserInteraction
-
-    include DefaultUserInteraction
-
-    [:alert,
-     :alert_error,
-     :alert_warning,
-     :ask,
-     :ask_yes_no,
-     :choose_from_list,
-     :say,
-     :terminate_interaction ].each do |methname|
-      class_eval %{
-        def #{methname}(*args)
-          ui.#{methname}(*args)
-        end
-      }, __FILE__, __LINE__
-    end
-  end
-
-  ##
-  # StreamUI implements a simple stream based user interface.
-
-  class StreamUI
-
-    attr_reader :ins, :outs, :errs
-
-    def initialize(in_stream, out_stream, err_stream=STDERR)
-      @ins = in_stream
-      @outs = out_stream
-      @errs = err_stream
-    end
-
-    ##
-    # Choose from a list of options.  +question+ is a prompt displayed above
-    # the list.  +list+ is a list of option strings.  Returns the pair
-    # [option_name, option_index].
-
-    def choose_from_list(question, list)
-      @outs.puts question
-
-      list.each_with_index do |item, index|
-        @outs.puts " #{index+1}. #{item}"
-      end
-
-      @outs.print "> "
-      @outs.flush
-
-      result = @ins.gets
-
-      return nil, nil unless result
-
-      result = result.strip.to_i - 1
-      return list[result], result
-    end
-
-    ##
-    # Ask a question.  Returns a true for yes, false for no.  If not connected
-    # to a tty, raises an exception if default is nil, otherwise returns
-    # default.
-
-    def ask_yes_no(question, default=nil)
-      unless @ins.tty? then
-        if default.nil? then
-          raise Gem::OperationNotSupportedError,
-                "Not connected to a tty and no default specified"
-        else
-          return default
-        end
-      end
-
-      qstr = case default
-             when nil
-               'yn'
-             when true
-               'Yn'
-             else
-               'yN'
-             end
-
-      result = nil
-
-      while result.nil?
-        result = ask("#{question} [#{qstr}]")
-        result = case result
-        when /^[Yy].*/
-          true
-        when /^[Nn].*/
-          false
-        when /^$/
-          default
-        else
-          nil
-        end
-      end
-
-      return result
-    end
-
-    ##
-    # Ask a question.  Returns an answer if connected to a tty, nil otherwise.
-
-    def ask(question)
-      return nil if not @ins.tty?
-
-      @outs.print(question + "  ")
-      @outs.flush
-
-      result = @ins.gets
-      result.chomp! if result
-      result
-    end
-
-    ##
-    # Display a statement.
-
-    def say(statement="")
-      @outs.puts statement
-    end
-
-    ##
-    # Display an informational alert.  Will ask +question+ if it is not nil.
-
-    def alert(statement, question=nil)
-      @outs.puts "INFO:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Display a warning in a location expected to get error messages.  Will
-    # ask +question+ if it is not nil.
-
-    def alert_warning(statement, question=nil)
-      @errs.puts "WARNING:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Display an error message in a location expected to get error messages.
-    # Will ask +question+ if it is not nil.
-
-    def alert_error(statement, question=nil)
-      @errs.puts "ERROR:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Terminate the application with exit code +status+, running any exit
-    # handlers that might have been defined.
-
-    def terminate_interaction(status = 0)
-      raise Gem::SystemExitException, status
-    end
-
-    ##
-    # Return a progress reporter object chosen from the current verbosity.
-
-    def progress_reporter(*args)
-      case Gem.configuration.verbose
-      when nil, false
-        SilentProgressReporter.new(@outs, *args)
-      when true
-        SimpleProgressReporter.new(@outs, *args)
-      else
-        VerboseProgressReporter.new(@outs, *args)
-      end
-    end
-
-    ##
-    # An absolutely silent progress reporter.
-
-    class SilentProgressReporter
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message, terminal_message = nil)
-      end
-
-      def updated(message)
-      end
-
-      def done
-      end
-    end
-
-    ##
-    # A basic dotted progress reporter.
-
-    class SimpleProgressReporter
-      include DefaultUserInteraction
-
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message,
-                     terminal_message = "complete")
-        @out = out_stream
-        @total = size
-        @count = 0
-        @terminal_message = terminal_message
-
-        @out.puts initial_message
-      end
-
-      ##
-      # Prints out a dot and ignores +message+.
-
-      def updated(message)
-        @count += 1
-        @out.print "."
-        @out.flush
-      end
-
-      ##
-      # Prints out the terminal message.
-
-      def done
-        @out.puts "\n#{@terminal_message}"
-      end
-
-    end
-
-    ##
-    # A progress reporter that prints out messages about the current progress.
-
-    class VerboseProgressReporter
-      include DefaultUserInteraction
-
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message,
-                     terminal_message = 'complete')
-        @out = out_stream
-        @total = size
-        @count = 0
-        @terminal_message = terminal_message
-
-        @out.puts initial_message
-      end
-
-      ##
-      # Prints out the position relative to the total and the +message+.
-
-      def updated(message)
-        @count += 1
-        @out.puts "#{@count}/#{@total}: #{message}"
-      end
-
-      ##
-      # Prints out the terminal message.
-
-      def done
-        @out.puts @terminal_message
-      end
-    end
-  end
-
-  ##
-  # Subclass of StreamUI that instantiates the user interaction using STDIN,
-  # STDOUT, and STDERR.
-
-  class ConsoleUI < StreamUI
-    def initialize
-      super(STDIN, STDOUT, STDERR)
-    end
-  end
-
-  ##
-  # SilentUI is a UI choice that is absolutely silent.
-
-  class SilentUI
-    def method_missing(sym, *args, &block)
-      self
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/validator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/validator.rb
deleted file mode 100644
index 4595ad9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/validator.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'find'
-
-require 'rubygems/digest/md5'
-require 'rubygems/format'
-require 'rubygems/installer'
-
-##
-# Validator performs various gem file and gem database validation
-
-class Gem::Validator
-
-  include Gem::UserInteraction
-
-  ##
-  # Given a gem file's contents, validates against its own MD5 checksum
-  # gem_data:: [String] Contents of the gem file
-
-  def verify_gem(gem_data)
-    raise Gem::VerificationError, 'empty gem file' if gem_data.size == 0
-
-    unless gem_data =~ /MD5SUM/ then
-      return # Don't worry about it...this sucks.  Need to fix MD5 stuff for
-      # new format
-      # FIXME
-    end
-
-    sum_data = gem_data.gsub(/MD5SUM = "([a-z0-9]+)"/,
-                             "MD5SUM = \"#{"F" * 32}\"")
-
-    unless Gem::MD5.hexdigest(sum_data) == $1.to_s then
-      raise Gem::VerificationError, 'invalid checksum for gem file'
-    end
-  end
-
-  ##
-  # Given the path to a gem file, validates against its own MD5 checksum
-  #
-  # gem_path:: [String] Path to gem file
-
-  def verify_gem_file(gem_path)
-    open gem_path, Gem.binary_mode do |file|
-      gem_data = file.read
-      verify_gem gem_data
-    end
-  rescue Errno::ENOENT
-    raise Gem::VerificationError, "missing gem file #{gem_path}"
-  end
-
-  private
-
-  def find_files_for_gem(gem_directory)
-    installed_files = []
-    Find.find(gem_directory) {|file_name|
-      fn = file_name.slice((gem_directory.size)..(file_name.size-1)).sub(/^\//, "")
-      if(!(fn =~ /CVS/ || File.directory?(fn) || fn == "")) then
-        installed_files << fn
-      end
-
-    }
-    installed_files
-  end
-
-  public
-
-  ErrorData = Struct.new :path, :problem
-
-  ##
-  # Checks the gem directory for the following potential
-  # inconsistencies/problems:
-  #
-  # * Checksum gem itself
-  # * For each file in each gem, check consistency of installed versions
-  # * Check for files that aren't part of the gem but are in the gems directory
-  # * 1 cache - 1 spec - 1 directory.
-  #
-  # returns a hash of ErrorData objects, keyed on the problem gem's name.
-
-  def alien
-    errors = {}
-
-    Gem::SourceIndex.from_installed_gems.each do |gem_name, gem_spec|
-      errors[gem_name] ||= []
-
-      gem_path = File.join(Gem.dir, "cache", gem_spec.full_name) + ".gem"
-      spec_path = File.join(Gem.dir, "specifications", gem_spec.full_name) + ".gemspec"
-      gem_directory = File.join(Gem.dir, "gems", gem_spec.full_name)
-
-      installed_files = find_files_for_gem(gem_directory)
-
-      unless File.exist? spec_path then
-        errors[gem_name] << ErrorData.new(spec_path, "Spec file doesn't exist for installed gem")
-      end
-
-      begin
-        verify_gem_file(gem_path)
-
-        open gem_path, Gem.binary_mode do |file|
-          format = Gem::Format.from_file_by_path(gem_path)
-          format.file_entries.each do |entry, data|
-            # Found this file.  Delete it from list
-            installed_files.delete remove_leading_dot_dir(entry['path'])
-
-            next unless data # HACK `gem check -a mkrf`
-
-            open File.join(gem_directory, entry['path']), Gem.binary_mode do |f|
-              unless Gem::MD5.hexdigest(f.read).to_s ==
-                Gem::MD5.hexdigest(data).to_s then
-                errors[gem_name] << ErrorData.new(entry['path'], "installed file doesn't match original from gem")
-              end
-            end
-          end
-        end
-      rescue Gem::VerificationError => e
-        errors[gem_name] << ErrorData.new(gem_path, e.message)
-      end
-
-      # Clean out directories that weren't explicitly included in the gemspec
-      # FIXME: This still allows arbitrary incorrect directories.
-      installed_files.delete_if {|potential_directory|
-        File.directory?(File.join(gem_directory, potential_directory))
-      }
-      if(installed_files.size > 0) then
-        errors[gem_name] << ErrorData.new(gem_path, "Unmanaged files in gem: #{installed_files.inspect}")
-      end
-    end
-
-    errors
-  end
-
-  if RUBY_VERSION < '1.9' then
-    class TestRunner
-      def initialize(suite, ui)
-        @suite = suite
-        @ui = ui
-      end
-
-      def self.run(suite, ui)
-        require 'test/unit/ui/testrunnermediator'
-        return new(suite, ui).start
-      end
-
-      def start
-        @mediator = Test::Unit::UI::TestRunnerMediator.new(@suite)
-        @mediator.add_listener(Test::Unit::TestResult::FAULT, &method(:add_fault))
-        return @mediator.run_suite
-      end
-
-      def add_fault(fault)
-        if Gem.configuration.verbose then
-          @ui.say fault.long_display
-        end
-      end
-    end
-
-    autoload :TestRunner, 'test/unit/ui/testrunnerutilities'
-  end
-
-  ##
-  # Runs unit tests for a given gem specification
-
-  def unit_test(gem_spec)
-    start_dir = Dir.pwd
-    Dir.chdir(gem_spec.full_gem_path)
-    $: << File.join(Gem.dir, "gems", gem_spec.full_name)
-    # XXX: why do we need this gem_spec when we've already got 'spec'?
-    test_files = gem_spec.test_files
-
-    if test_files.empty? then
-      say "There are no unit tests to run for #{gem_spec.full_name}"
-      return nil
-    end
-
-    gem gem_spec.name, "= #{gem_spec.version.version}"
-
-    test_files.each do |f| require f end
-
-    if RUBY_VERSION < '1.9' then
-      suite = Test::Unit::TestSuite.new("#{gem_spec.name}-#{gem_spec.version}")
-
-      ObjectSpace.each_object(Class) do |klass|
-        suite << klass.suite if (klass < Test::Unit::TestCase)
-      end
-
-      result = TestRunner.run suite, ui
-
-      alert_error result.to_s unless result.passed?
-    else
-      result = MiniTest::Unit.new
-      result.run
-    end
-
-    result
-  ensure
-    Dir.chdir(start_dir)
-  end
-
-  def remove_leading_dot_dir(path)
-    path.sub(/^\.\//, "")
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version.rb
deleted file mode 100644
index ff4a7bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# The Version class processes string versions into comparable values
-
-class Gem::Version
-
-  include Comparable
-
-  attr_reader :ints
-
-  attr_reader :version
-
-  ##
-  # Returns true if +version+ is a valid version string.
-
-  def self.correct?(version)
-    case version
-    when Integer, /\A\s*(\d+(\.\d+)*)*\s*\z/ then true
-    else false
-    end
-  end
-
-  ##
-  # Factory method to create a Version object.  Input may be a Version or a
-  # String.  Intended to simplify client code.
-  #
-  #   ver1 = Version.create('1.3.17')   # -> (Version object)
-  #   ver2 = Version.create(ver1)       # -> (ver1)
-  #   ver3 = Version.create(nil)        # -> nil
-
-  def self.create(input)
-    if input.respond_to? :version then
-      input
-    elsif input.nil? then
-      nil
-    else
-      new input
-    end
-  end
-
-  ##
-  # Constructs a Version from the +version+ string.  A version string is a
-  # series of digits separated by dots.
-
-  def initialize(version)
-    raise ArgumentError, "Malformed version number string #{version}" unless
-      self.class.correct?(version)
-
-    self.version = version
-  end
-
-  def inspect # :nodoc:
-    "#<#{self.class} #{@version.inspect}>"
-  end
-
-  # Dump only the raw version string, not the complete object
-  def marshal_dump
-    [@version]
-  end
-
-  # Load custom marshal format
-  def marshal_load(array)
-    self.version = array[0]
-  end
-
-  ##
-  # Strip ignored trailing zeros.
-
-  def normalize
-    @ints = build_array_from_version_string
-
-    return if @ints.length == 1
-
-    @ints.pop while @ints.last == 0
-
-    @ints = [0] if @ints.empty?
-  end
-
-  ##
-  # Returns the text representation of the version
-  #
-  # return:: [String] version as string
-  #
-  def to_s
-    @version
-  end
-
-  ##
-  # Returns an integer array representation of this Version.
-
-  def to_ints
-    normalize unless @ints
-    @ints
-  end
-
-  def to_yaml_properties
-    ['@version']
-  end
-
-  def version=(version)
-    @version = version.to_s.strip
-    normalize
-  end
-
-  def yaml_initialize(tag, values)
-    self.version = values['version']
-  end
-
-  ##
-  # Compares this version with +other+ returning -1, 0, or 1 if the other
-  # version is larger, the same, or smaller than this one.
-
-  def <=>(other)
-    return nil unless self.class === other
-    return 1 unless other
-    @ints <=> other.ints
-  end
-
-  ##
-  # A Version is only eql? to another version if it has the same version
-  # string.  "1.0" is not the same version as "1".
-
-  def eql?(other)
-    self.class === other and @version == other.version
-  end
-
-  def hash # :nodoc:
-    @version.hash
-  end
-
-  # Return a new version object where the next to the last revision
-  # number is one greater. (e.g.  5.3.1 => 5.4)
-  def bump
-    ints = build_array_from_version_string
-    ints.pop if ints.size > 1
-    ints[-1] += 1
-    self.class.new(ints.join("."))
-  end
-
-  def build_array_from_version_string
-    @version.to_s.scan(/\d+/).map { |s| s.to_i }
-  end
-  private :build_array_from_version_string
-
-  #:stopdoc:
-
-  require 'rubygems/requirement'
-
-  # Gem::Requirement's original definition is nested in Version.
-  # Although an inappropriate place, current gems specs reference the nested
-  # class name explicitly.  To remain compatible with old software loading
-  # gemspecs, we leave a copy of original definition in Version, but define an
-  # alias Gem::Requirement for use everywhere else.
-
-  Requirement = ::Gem::Requirement
-
-  # :startdoc:
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version_option.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version_option.rb
deleted file mode 100644
index 1374018..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/rubygems/version_option.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-# Mixin methods for --version and --platform Gem::Command options.
-module Gem::VersionOption
-
-  # Add the --platform option to the option parser.
-  def add_platform_option(task = command, *wrap)
-    OptionParser.accept Gem::Platform do |value|
-      if value == Gem::Platform::RUBY then
-        value
-      else
-        Gem::Platform.new value
-      end
-    end
-
-    add_option('--platform PLATFORM', Gem::Platform,
-               "Specify the platform of gem to #{task}", *wrap) do
-                 |value, options|
-      unless options[:added_platform] then
-        Gem.platforms = [Gem::Platform::RUBY]
-        options[:added_platform] = true
-      end
-
-      Gem.platforms << value unless Gem.platforms.include? value
-    end
-  end
-
-  # Add the --version option to the option parser.
-  def add_version_option(task = command, *wrap)
-    OptionParser.accept Gem::Requirement do |value|
-      Gem::Requirement.new value
-    end
-
-    add_option('-v', '--version VERSION', Gem::Requirement,
-               "Specify version of gem to #{task}", *wrap) do
-                 |value, options|
-      options[:version] = value
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/ubygems.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/ubygems.rb
deleted file mode 100644
index fec880f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby/site_ruby/1.8/ubygems.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file allows for the running of rubygems with a nice
-# command line look-and-feel: ruby -rubygems foo.rb
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-require 'rubygems'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18-static.lib b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18-static.lib
deleted file mode 100644
index 0dc4895..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18-static.lib and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18.lib b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18.lib
deleted file mode 100644
index 922a864..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/msvcrt-ruby18.lib and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/English.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/English.rb
deleted file mode 100644
index 1a0e11d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/English.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-#  Include the English library file in a Ruby script, and you can
-#  reference the global variables such as \VAR{\$\_} using less
-#  cryptic names, listed in the following table.% \vref{tab:english}.
-#
-#  Without 'English':
-#
-#      $\ = ' -- '
-#      "waterbuffalo" =~ /buff/
-#      print $", $', $$, "\n"
-#
-#  With English:
-#
-#      require "English"
-#      
-#      $OUTPUT_FIELD_SEPARATOR = ' -- '
-#      "waterbuffalo" =~ /buff/
-#      print $LOADED_FEATURES, $POSTMATCH, $PID, "\n"
-
-
-# The exception object passed to +raise+.
-alias $ERROR_INFO              $!
-
-# The stack backtrace generated by the last
-# exception. <tt>See Kernel.caller</tt> for details. Thread local.
-alias $ERROR_POSITION          $@
-
-# The default separator pattern used by <tt>String.split</tt>.  May be
-# set from the command line using the <tt>-F</tt> flag.
-alias $FS                      $;
-
-# The default separator pattern used by <tt>String.split</tt>.  May be
-# set from the command line using the <tt>-F</tt> flag.
-alias $FIELD_SEPARATOR         $;
-
-# The separator string output between the parameters to methods such
-# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
-# which adds no text.
-alias $OFS                     $,
-
-# The separator string output between the parameters to methods such
-# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
-# which adds no text.
-alias $OUTPUT_FIELD_SEPARATOR  $,
-
-# The input record separator (newline by default). This is the value
-# that routines such as <tt>Kernel.gets</tt> use to determine record
-# boundaries. If set to +nil+, +gets+ will read the entire file.
-alias $RS                      $/
-
-# The input record separator (newline by default). This is the value
-# that routines such as <tt>Kernel.gets</tt> use to determine record
-# boundaries. If set to +nil+, +gets+ will read the entire file.
-alias $INPUT_RECORD_SEPARATOR  $/
-
-# The string appended to the output of every call to methods such as
-# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
-# +nil+.
-alias $ORS                     $\
-
-# The string appended to the output of every call to methods such as
-# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
-# +nil+.
-alias $OUTPUT_RECORD_SEPARATOR $\
-
-# The number of the last line read from the current input file.
-alias $INPUT_LINE_NUMBER       $.
-
-# The number of the last line read from the current input file.
-alias $NR                      $.
-
-# The last line read by <tt>Kernel.gets</tt> or
-# <tt>Kernel.readline</tt>. Many string-related functions in the
-# +Kernel+ module operate on <tt>$_</tt> by default. The variable is
-# local to the current scope. Thread local.
-alias $LAST_READ_LINE          $_
-
-# The destination of output for <tt>Kernel.print</tt>
-# and <tt>Kernel.printf</tt>. The default value is
-# <tt>$stdout</tt>.
-alias $DEFAULT_OUTPUT          $>
-
-# An object that provides access to the concatenation
-# of the contents of all the files
-# given as command-line arguments, or <tt>$stdin</tt>
-# (in the case where there are no
-# arguments). <tt>$<</tt> supports methods similar to a 
-# +File+ object:
-# +inmode+, +close+,
-# <tt>closed?</tt>, +each+,
-# <tt>each_byte</tt>, <tt>each_line</tt>,
-# +eof+, <tt>eof?</tt>, +file+,
-# +filename+, +fileno+,
-# +getc+, +gets+, +lineno+,
-# <tt>lineno=</tt>, +path+, 
-# +pos+, <tt>pos=</tt>,
-# +read+, +readchar+,
-# +readline+, +readlines+,
-# +rewind+, +seek+, +skip+,
-# +tell+, <tt>to_a</tt>, <tt>to_i</tt>,
-# <tt>to_io</tt>, <tt>to_s</tt>, along with the
-# methods in +Enumerable+. The method +file+
-# returns a +File+ object for the file currently
-# being read. This may change as <tt>$<</tt> reads
-# through the files on the command line. Read only.
-alias $DEFAULT_INPUT           $<
-
-# The process number of the program being executed. Read only.
-alias $PID                     $$
-
-# The process number of the program being executed. Read only.
-alias $PROCESS_ID              $$
-
-# The exit status of the last child process to terminate. Read
-# only. Thread local.
-alias $CHILD_STATUS            $?
-
-# A +MatchData+ object that encapsulates the results of a successful
-# pattern match. The variables <tt>$&</tt>, <tt>$`</tt>, <tt>$'</tt>,
-# and <tt>$1</tt> to <tt>$9</tt> are all derived from
-# <tt>$~</tt>. Assigning to <tt>$~</tt> changes the values of these
-# derived variables.  This variable is local to the current
-# scope. Thread local.
-alias $LAST_MATCH_INFO         $~
-
-# If set to any value apart from +nil+ or +false+, all pattern matches
-# will be case insensitive, string comparisons will ignore case, and
-# string hash values will be case insensitive. Deprecated
-alias $IGNORECASE              $=
-
-# An array of strings containing the command-line
-# options from the invocation of the program. Options
-# used by the Ruby interpreter will have been
-# removed. Read only. Also known simply as +ARGV+.
-alias $ARGV                    $*
-
-# The string matched by the last successful pattern
-# match. This variable is local to the current
-# scope. Read only. Thread local.
-alias $MATCH                   $&
-
-# The string preceding the match in the last
-# successful pattern match. This variable is local to 
-# the current scope. Read only. Thread local.
-alias $PREMATCH                $`
-
-# The string following the match in the last
-# successful pattern match. This variable is local to 
-# the current scope. Read only. Thread local.
-alias $POSTMATCH               $'
-
-# The contents of the highest-numbered group matched in the last
-# successful pattern match. Thus, in <tt>"cat" =~ /(c|a)(t|z)/</tt>,
-# <tt>$+</tt> will be set to "t".  This variable is local to the
-# current scope. Read only. Thread local.
-alias $LAST_PAREN_MATCH        $+
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/Env.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/Env.rb
deleted file mode 100644
index 452a286..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/Env.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# Env.rb -- imports environment variables as global variables, Perlish ;(
-# Usage:
-#
-#  require 'Env'
-#  p $USER
-#  $USER = "matz"
-#  p ENV["USER"]
-
-require 'importenv'
-
-if __FILE__ == $0
-  p $TERM
-  $TERM = nil
-  p $TERM
-  p ENV["TERM"]
-  $TERM = "foo"
-  p ENV["TERM"]
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/abbrev.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/abbrev.rb
deleted file mode 100644
index 338b89f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/abbrev.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env ruby
-=begin
-#
-# Copyright (c) 2001,2003 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under
-# the same terms as Ruby.
-#
-# $Idaemons: /home/cvs/rb/abbrev.rb,v 1.2 2001/05/30 09:37:45 knu Exp $
-# $RoughId: abbrev.rb,v 1.4 2003/10/14 19:45:42 knu Exp $
-# $Id: abbrev.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-# Calculate the set of unique abbreviations for a given set of strings.
-#
-#   require 'abbrev'
-#   require 'pp'
-#
-#   pp Abbrev::abbrev(['ruby', 'rules']).sort
-#
-# <i>Generates:</i>
-#
-#   [["rub", "ruby"],
-#    ["ruby", "ruby"],
-#    ["rul", "rules"],
-#    ["rule", "rules"],
-#    ["rules", "rules"]]
-#
-# Also adds an +abbrev+ method to class +Array+.
-
-module Abbrev
-
-  # Given a set of strings, calculate the set of unambiguous
-  # abbreviations for those strings, and return a hash where the keys
-  # are all the possible abbreviations and the values are the full
-  # strings. Thus, given input of "car" and "cone", the keys pointing
-  # to "car" would be "ca" and "car", while those pointing to "cone"
-  # would be "co", "con", and "cone".
-  #
-  # The optional +pattern+ parameter is a pattern or a string. Only
-  # those input strings matching the pattern, or begging the string,
-  # are considered for inclusion in the output hash
-
-  def abbrev(words, pattern = nil)
-    table = {}
-    seen = Hash.new(0)
-
-    if pattern.is_a?(String)
-      pattern = /^#{Regexp.quote(pattern)}/	# regard as a prefix
-    end
-
-    words.each do |word|
-      next if (abbrev = word).empty?
-      while (len = abbrev.rindex(/[\w\W]\z/)) > 0
-	abbrev = word[0,len]
-
-	next if pattern && pattern !~ abbrev
-
-	case seen[abbrev] += 1
-	when 1
-	  table[abbrev] = word
-	when 2
-	  table.delete(abbrev)
-	else
-	  break
-	end
-      end
-    end
-
-    words.each do |word|
-      next if pattern && pattern !~ word
-
-      table[word] = word
-    end
-
-    table
-  end
-
-  module_function :abbrev
-end
-
-class Array
-  # Calculates the set of unambiguous abbreviations for the strings in
-  # +self+. If passed a pattern or a string, only the strings matching
-  # the pattern or starting with the string are considered.
-  #
-  #   %w{ car cone }.abbrev   #=> { "ca" => "car", "car" => "car",
-  #                                 "co" => "cone", "con" => cone",
-  #                                 "cone" => "cone" }
-  def abbrev(pattern = nil)
-    Abbrev::abbrev(self, pattern)
-  end
-end
-
-if $0 == __FILE__
-  while line = gets
-    hash = line.split.abbrev
-
-    hash.sort.each do |k, v|
-      puts "#{k} => #{v}"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/base64.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/base64.rb
deleted file mode 100644
index 8628d61..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/base64.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# = base64.rb: methods for base64-encoding and -decoding stings
-#
-# Author:: Yukihiro Matsumoto 
-# Documentation:: Dave Thomas and Gavin Sinclair
-#
-# Until Ruby 1.8.1, these methods were defined at the top-level.  Now
-# they are in the Base64 module but included in the top-level, where
-# their usage is deprecated.
-#
-# See Base64 for documentation.
-#
-
-require "kconv"
-
-
-# The Base64 module provides for the encoding (#encode64) and decoding
-# (#decode64) of binary data using a Base64 representation.
-# 
-# The following particular features are also provided:
-# - encode into lines of a given length (#b64encode)
-# - decode the special format specified in RFC2047 for the
-#   representation of email headers (decode_b)
-#
-# == Example
-#
-# A simple encoding and decoding. 
-# 
-#     require "base64"
-#
-#     enc   = Base64.encode64('Send reinforcements')
-#                         # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n" 
-#     plain = Base64.decode64(enc)
-#                         # -> "Send reinforcements"
-#
-# The purpose of using base64 to encode data is that it translates any
-# binary data into purely printable characters.  It is specified in
-# RFC 2045 (http://www.faqs.org/rfcs/rfc2045.html).
-
-module Base64
-  module_function
-
-  # Returns the Base64-decoded version of +str+.
-  #
-  #   require 'base64'
-  #   str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
-  #         'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
-  #         'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
-  #   puts Base64.decode64(str)
-  #
-  # <i>Generates:</i>
-  #
-  #    This is line one
-  #    This is line two
-  #    This is line three
-  #    And so on...
-
-  def decode64(str)
-    str.unpack("m")[0]
-  end
-
-
-  # Decodes text formatted using a subset of RFC2047 (the one used for
-  # mime-encoding mail headers).
-  #
-  # Only supports an encoding type of 'b' (base 64), and only supports
-  # the character sets ISO-2022-JP and SHIFT_JIS (so the only two
-  # encoded word sequences recognized are <tt>=?ISO-2022-JP?B?...=</tt> and
-  # <tt>=?SHIFT_JIS?B?...=</tt>).  Recognition of these sequences is case
-  # insensitive.
-
-  def decode_b(str)
-    str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
-      decode64($1)
-    }
-    str = Kconv::toeuc(str)
-    str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) {
-      decode64($1)
-    }
-    str = Kconv::toeuc(str)
-    str.gsub!(/\n/, ' ') 
-    str.gsub!(/\0/, '')
-    str
-  end
-
-  # Returns the Base64-encoded version of +str+.
-  #
-  #    require 'base64'
-  #    Base64.b64encode("Now is the time for all good coders\nto learn Ruby")
-  #
-  # <i>Generates:</i>
-  #
-  #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
-  #    UnVieQ==
-
-  def encode64(bin)
-    [bin].pack("m")
-  end
-
-  # _Prints_ the Base64 encoded version of +bin+ (a +String+) in lines of
-  # +len+ (default 60) characters.
-  #
-  #    require 'base64'
-  #    data = "Now is the time for all good coders\nto learn Ruby" 
-  #    Base64.b64encode(data)
-  #
-  # <i>Generates:</i>
-  #
-  #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
-  #    UnVieQ==
-
-  def b64encode(bin, len = 60)
-    encode64(bin).scan(/.{1,#{len}}/) do
-      print $&, "\n"
-    end
-  end 
-
-
-  module Deprecated # :nodoc:
-    include Base64
-
-    for m in Base64.private_instance_methods(false)
-      module_eval %{
-        def #{m}(*args)
-          warn("\#{caller(1)[0]}: #{m} is deprecated; use Base64.#{m} instead")
-          super
-        end
-      }
-    end
-  end
-end
-
-include Base64::Deprecated
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/benchmark.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/benchmark.rb
deleted file mode 100644
index 3646cee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/benchmark.rb
+++ /dev/null
@@ -1,572 +0,0 @@
-=begin
-#
-# benchmark.rb - a performance benchmarking library 
-# 
-# $Id: benchmark.rb 17135 2008-06-13 03:10:19Z shyouhei $
-# 
-# Created by Gotoken (gotoken at notwork.org). 
-#
-# Documentation by Gotoken (original RD), Lyle Johnson (RDoc conversion), and
-# Gavin Sinclair (editing). 
-#
-=end
-
-# == Overview
-#
-# The Benchmark module provides methods for benchmarking Ruby code, giving
-# detailed reports on the time taken for each task.
-#
-
-# The Benchmark module provides methods to measure and report the time
-# used to execute Ruby code.
-#
-# * Measure the time to construct the string given by the expression
-#   <tt>"a"*1_000_000</tt>:
-#
-#       require 'benchmark'
-#
-#       puts Benchmark.measure { "a"*1_000_000 }
-# 
-#   On my machine (FreeBSD 3.2 on P5, 100MHz) this generates:
-# 
-#       1.166667   0.050000   1.216667 (  0.571355)
-# 
-#   This report shows the user CPU time, system CPU time, the sum of
-#   the user and system CPU times, and the elapsed real time. The unit
-#   of time is seconds.
-# 
-# * Do some experiments sequentially using the #bm method:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.bm do |x|
-#         x.report { for i in 1..n; a = "1"; end }
-#         x.report { n.times do   ; a = "1"; end }
-#         x.report { 1.upto(n) do ; a = "1"; end }
-#       end
-# 
-#   The result:
-#
-#              user     system      total        real
-#          1.033333   0.016667   1.016667 (  0.492106)
-#          1.483333   0.000000   1.483333 (  0.694605)
-#          1.516667   0.000000   1.516667 (  0.711077)
-#
-# * Continuing the previous example, put a label in each report:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.bm(7) do |x|
-#         x.report("for:")   { for i in 1..n; a = "1"; end }
-#         x.report("times:") { n.times do   ; a = "1"; end }
-#         x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-#       end
-# 
-# The result:
-# 
-#                     user     system      total        real
-#        for:     1.050000   0.000000   1.050000 (  0.503462)
-#        times:   1.533333   0.016667   1.550000 (  0.735473)
-#        upto:    1.500000   0.016667   1.516667 (  0.711239)
-# 
-#
-# * The times for some benchmarks depend on the order in which items
-#   are run.  These differences are due to the cost of memory
-#   allocation and garbage collection. To avoid these discrepancies,
-#   the #bmbm method is provided.  For example, to compare ways to
-#   sort an array of floats:
-#
-#       require 'benchmark'
-#       
-#       array = (1..1000000).map { rand }
-#       
-#       Benchmark.bmbm do |x|
-#         x.report("sort!") { array.dup.sort! }
-#         x.report("sort")  { array.dup.sort  }
-#       end
-# 
-#   The result:
-# 
-#        Rehearsal -----------------------------------------
-#        sort!  11.928000   0.010000  11.938000 ( 12.756000)
-#        sort   13.048000   0.020000  13.068000 ( 13.857000)
-#        ------------------------------- total: 25.006000sec
-#        
-#                    user     system      total        real
-#        sort!  12.959000   0.010000  12.969000 ( 13.793000)
-#        sort   12.007000   0.000000  12.007000 ( 12.791000)
-#
-#
-# * Report statistics of sequential experiments with unique labels,
-#   using the #benchmark method:
-#
-#       require 'benchmark'
-#
-#       n = 50000
-#       Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
-#         tf = x.report("for:")   { for i in 1..n; a = "1"; end }
-#         tt = x.report("times:") { n.times do   ; a = "1"; end }
-#         tu = x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-#         [tf+tt+tu, (tf+tt+tu)/3]
-#       end
-# 
-#   The result:
-# 
-#                     user     system      total        real
-#        for:     1.016667   0.016667   1.033333 (  0.485749)
-#        times:   1.450000   0.016667   1.466667 (  0.681367)
-#        upto:    1.533333   0.000000   1.533333 (  0.722166)
-#        >total:  4.000000   0.033333   4.033333 (  1.889282)
-#        >avg:    1.333333   0.011111   1.344444 (  0.629761)
-
-module Benchmark
-
-  BENCHMARK_VERSION = "2002-04-25" #:nodoc"
-
-  def Benchmark::times() # :nodoc:
-      Process::times()
-  end
-
-
-  # Invokes the block with a <tt>Benchmark::Report</tt> object, which
-  # may be used to collect and report on the results of individual
-  # benchmark tests. Reserves <i>label_width</i> leading spaces for
-  # labels on each line. Prints _caption_ at the top of the
-  # report, and uses _fmt_ to format each line.
-  # If the block returns an array of
-  # <tt>Benchmark::Tms</tt> objects, these will be used to format
-  # additional lines of output. If _label_ parameters are
-  # given, these are used to label these extra lines.
-  #
-  # _Note_: Other methods provide a simpler interface to this one, and are
-  # suitable for nearly all benchmarking requirements.  See the examples in
-  # Benchmark, and the #bm and #bmbm methods.
-  #
-  # Example: 
-  #
-  #     require 'benchmark'
-  #     include Benchmark          # we need the CAPTION and FMTSTR constants 
-  #
-  #     n = 50000
-  #     Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
-  #       tf = x.report("for:")   { for i in 1..n; a = "1"; end }
-  #       tt = x.report("times:") { n.times do   ; a = "1"; end }
-  #       tu = x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-  #       [tf+tt+tu, (tf+tt+tu)/3]
-  #     end
-  # 
-  # <i>Generates:</i>
-  # 
-  #                     user     system      total        real
-  #        for:     1.016667   0.016667   1.033333 (  0.485749)
-  #        times:   1.450000   0.016667   1.466667 (  0.681367)
-  #        upto:    1.533333   0.000000   1.533333 (  0.722166)
-  #        >total:  4.000000   0.033333   4.033333 (  1.889282)
-  #        >avg:    1.333333   0.011111   1.344444 (  0.629761)
-  # 
-
-  def benchmark(caption = "", label_width = nil, fmtstr = nil, *labels) # :yield: report
-    sync = STDOUT.sync
-    STDOUT.sync = true
-    label_width ||= 0
-    fmtstr ||= FMTSTR
-    raise ArgumentError, "no block" unless iterator?
-    print caption
-    results = yield(Report.new(label_width, fmtstr))
-    Array === results and results.grep(Tms).each {|t|
-      print((labels.shift || t.label || "").ljust(label_width), 
-            t.format(fmtstr))
-    }
-    STDOUT.sync = sync
-  end
-
-
-  # A simple interface to the #benchmark method, #bm is generates sequential reports
-  # with labels.  The parameters have the same meaning as for #benchmark.
-  # 
-  #     require 'benchmark'
-  #
-  #     n = 50000
-  #     Benchmark.bm(7) do |x|
-  #       x.report("for:")   { for i in 1..n; a = "1"; end }
-  #       x.report("times:") { n.times do   ; a = "1"; end }
-  #       x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
-  #     end
-  # 
-  # <i>Generates:</i>
-  # 
-  #                     user     system      total        real
-  #        for:     1.050000   0.000000   1.050000 (  0.503462)
-  #        times:   1.533333   0.016667   1.550000 (  0.735473)
-  #        upto:    1.500000   0.016667   1.516667 (  0.711239)
-  #
-
-  def bm(label_width = 0, *labels, &blk) # :yield: report
-    benchmark(" "*label_width + CAPTION, label_width, FMTSTR, *labels, &blk)
-  end
-
-
-  # Sometimes benchmark results are skewed because code executed
-  # earlier encounters different garbage collection overheads than
-  # that run later. #bmbm attempts to minimize this effect by running
-  # the tests twice, the first time as a rehearsal in order to get the
-  # runtime environment stable, the second time for
-  # real. <tt>GC.start</tt> is executed before the start of each of
-  # the real timings; the cost of this is not included in the
-  # timings. In reality, though, there's only so much that #bmbm can
-  # do, and the results are not guaranteed to be isolated from garbage
-  # collection and other effects.
-  #
-  # Because #bmbm takes two passes through the tests, it can
-  # calculate the required label width.
-  #
-  #       require 'benchmark'
-  #       
-  #       array = (1..1000000).map { rand }
-  #       
-  #       Benchmark.bmbm do |x|
-  #         x.report("sort!") { array.dup.sort! }
-  #         x.report("sort")  { array.dup.sort  }
-  #       end
-  # 
-  # <i>Generates:</i>
-  # 
-  #        Rehearsal -----------------------------------------
-  #        sort!  11.928000   0.010000  11.938000 ( 12.756000)
-  #        sort   13.048000   0.020000  13.068000 ( 13.857000)
-  #        ------------------------------- total: 25.006000sec
-  #        
-  #                    user     system      total        real
-  #        sort!  12.959000   0.010000  12.969000 ( 13.793000)
-  #        sort   12.007000   0.000000  12.007000 ( 12.791000)
-  #
-  # #bmbm yields a Benchmark::Job object and returns an array of
-  # Benchmark::Tms objects.
-  #
-  def bmbm(width = 0, &blk) # :yield: job
-    job = Job.new(width)
-    yield(job)
-    width = job.width
-    sync = STDOUT.sync
-    STDOUT.sync = true
-
-    # rehearsal
-    print "Rehearsal "
-    puts '-'*(width+CAPTION.length - "Rehearsal ".length)
-    list = []
-    job.list.each{|label,item|
-      print(label.ljust(width))
-      res = Benchmark::measure(&item)
-      print res.format()
-      list.push res
-    }
-    sum = Tms.new; list.each{|i| sum += i}
-    ets = sum.format("total: %tsec")
-    printf("%s %s\n\n",
-           "-"*(width+CAPTION.length-ets.length-1), ets)
-    
-    # take
-    print ' '*width, CAPTION
-    list = []
-    ary = []
-    job.list.each{|label,item|
-      GC::start
-      print label.ljust(width)
-      res = Benchmark::measure(&item)
-      print res.format()
-      ary.push res
-      list.push [label, res]
-    }
-
-    STDOUT.sync = sync
-    ary
-  end
-
-  # 
-  # Returns the time used to execute the given block as a
-  # Benchmark::Tms object.
-  #
-  def measure(label = "") # :yield:
-    t0, r0 = Benchmark.times, Time.now
-    yield
-    t1, r1 = Benchmark.times, Time.now
-    Benchmark::Tms.new(t1.utime  - t0.utime, 
-                       t1.stime  - t0.stime, 
-                       t1.cutime - t0.cutime, 
-                       t1.cstime - t0.cstime, 
-                       r1.to_f - r0.to_f,
-                       label)
-  end
-
-  #
-  # Returns the elapsed real time used to execute the given block.
-  #
-  def realtime(&blk) # :yield:
-    r0 = Time.now
-    yield
-    r1 = Time.now
-    r1.to_f - r0.to_f
-  end
-
-
-
-  #
-  # A Job is a sequence of labelled blocks to be processed by the
-  # Benchmark.bmbm method.  It is of little direct interest to the user.
-  #
-  class Job # :nodoc:
-    #
-    # Returns an initialized Job instance.
-    # Usually, one doesn't call this method directly, as new
-    # Job objects are created by the #bmbm method.
-    # _width_ is a initial value for the label offset used in formatting;
-    # the #bmbm method passes its _width_ argument to this constructor. 
-    # 
-    def initialize(width)
-      @width = width
-      @list = []
-    end
-
-    #
-    # Registers the given label and block pair in the job list.
-    #
-    def item(label = "", &blk) # :yield:
-      raise ArgumentError, "no block" unless block_given?
-      label.concat ' '
-      w = label.length
-      @width = w if @width < w
-      @list.push [label, blk]
-      self
-    end
-
-    alias report item
-    
-    # An array of 2-element arrays, consisting of label and block pairs.
-    attr_reader :list
-    
-    # Length of the widest label in the #list, plus one.  
-    attr_reader :width
-  end
-
-  module_function :benchmark, :measure, :realtime, :bm, :bmbm
-
-
-
-  #
-  # This class is used by the Benchmark.benchmark and Benchmark.bm methods.
-  # It is of little direct interest to the user.
-  #
-  class Report # :nodoc:
-    #
-    # Returns an initialized Report instance.
-    # Usually, one doesn't call this method directly, as new
-    # Report objects are created by the #benchmark and #bm methods. 
-    # _width_ and _fmtstr_ are the label offset and 
-    # format string used by Tms#format. 
-    # 
-    def initialize(width = 0, fmtstr = nil)
-      @width, @fmtstr = width, fmtstr
-    end
-
-    #
-    # Prints the _label_ and measured time for the block,
-    # formatted by _fmt_. See Tms#format for the
-    # formatting rules.
-    #
-    def item(label = "", *fmt, &blk) # :yield:
-      print label.ljust(@width)
-      res = Benchmark::measure(&blk)
-      print res.format(@fmtstr, *fmt)
-      res
-    end
-
-    alias report item
-  end
-
-
-
-  #
-  # A data object, representing the times associated with a benchmark
-  # measurement.
-  #
-  class Tms
-    CAPTION = "      user     system      total        real\n"
-    FMTSTR = "%10.6u %10.6y %10.6t %10.6r\n"
-
-    # User CPU time
-    attr_reader :utime
-    
-    # System CPU time
-    attr_reader :stime
-   
-    # User CPU time of children
-    attr_reader :cutime
-    
-    # System CPU time of children
-    attr_reader :cstime
-    
-    # Elapsed real time
-    attr_reader :real
-    
-    # Total time, that is _utime_ + _stime_ + _cutime_ + _cstime_ 
-    attr_reader :total
-    
-    # Label
-    attr_reader :label
-
-    #
-    # Returns an initialized Tms object which has
-    # _u_ as the user CPU time, _s_ as the system CPU time, 
-    # _cu_ as the children's user CPU time, _cs_ as the children's
-    # system CPU time, _real_ as the elapsed real time and _l_
-    # as the label. 
-    # 
-    def initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil)
-      @utime, @stime, @cutime, @cstime, @real, @label = u, s, cu, cs, real, l
-      @total = @utime + @stime + @cutime + @cstime
-    end
-
-    # 
-    # Returns a new Tms object whose times are the sum of the times for this
-    # Tms object, plus the time required to execute the code block (_blk_).
-    # 
-    def add(&blk) # :yield:
-      self + Benchmark::measure(&blk) 
-    end
-
-    # 
-    # An in-place version of #add.
-    # 
-    def add!
-      t = Benchmark::measure(&blk) 
-      @utime  = utime + t.utime
-      @stime  = stime + t.stime
-      @cutime = cutime + t.cutime
-      @cstime = cstime + t.cstime
-      @real   = real + t.real
-      self
-    end
-
-    # 
-    # Returns a new Tms object obtained by memberwise summation
-    # of the individual times for this Tms object with those of the other
-    # Tms object.
-    # This method and #/() are useful for taking statistics. 
-    # 
-    def +(other); memberwise(:+, other) end
-    
-    #
-    # Returns a new Tms object obtained by memberwise subtraction
-    # of the individual times for the other Tms object from those of this
-    # Tms object.
-    #
-    def -(other); memberwise(:-, other) end
-    
-    #
-    # Returns a new Tms object obtained by memberwise multiplication
-    # of the individual times for this Tms object by _x_.
-    #
-    def *(x); memberwise(:*, x) end
-
-    # 
-    # Returns a new Tms object obtained by memberwise division
-    # of the individual times for this Tms object by _x_.
-    # This method and #+() are useful for taking statistics. 
-    # 
-    def /(x); memberwise(:/, x) end
-
-    #
-    # Returns the contents of this Tms object as
-    # a formatted string, according to a format string
-    # like that passed to Kernel.format. In addition, #format
-    # accepts the following extensions:
-    #
-    # <tt>%u</tt>::     Replaced by the user CPU time, as reported by Tms#utime.
-    # <tt>%y</tt>::     Replaced by the system CPU time, as reported by #stime (Mnemonic: y of "s*y*stem")
-    # <tt>%U</tt>::     Replaced by the children's user CPU time, as reported by Tms#cutime 
-    # <tt>%Y</tt>::     Replaced by the children's system CPU time, as reported by Tms#cstime
-    # <tt>%t</tt>::     Replaced by the total CPU time, as reported by Tms#total
-    # <tt>%r</tt>::     Replaced by the elapsed real time, as reported by Tms#real
-    # <tt>%n</tt>::     Replaced by the label string, as reported by Tms#label (Mnemonic: n of "*n*ame")
-    # 
-    # If _fmtstr_ is not given, FMTSTR is used as default value, detailing the
-    # user, system and real elapsed time.
-    # 
-    def format(arg0 = nil, *args)
-      fmtstr = (arg0 || FMTSTR).dup
-      fmtstr.gsub!(/(%[-+\.\d]*)n/){"#{$1}s" % label}
-      fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
-      fmtstr.gsub!(/(%[-+\.\d]*)y/){"#{$1}f" % stime}
-      fmtstr.gsub!(/(%[-+\.\d]*)U/){"#{$1}f" % cutime}
-      fmtstr.gsub!(/(%[-+\.\d]*)Y/){"#{$1}f" % cstime}
-      fmtstr.gsub!(/(%[-+\.\d]*)t/){"#{$1}f" % total}
-      fmtstr.gsub!(/(%[-+\.\d]*)r/){"(#{$1}f)" % real}
-      arg0 ? Kernel::format(fmtstr, *args) : fmtstr
-    end
-
-    # 
-    # Same as #format.
-    # 
-    def to_s
-      format
-    end
-
-    # 
-    # Returns a new 6-element array, consisting of the
-    # label, user CPU time, system CPU time, children's
-    # user CPU time, children's system CPU time and elapsed
-    # real time.
-    # 
-    def to_a
-      [@label, @utime, @stime, @cutime, @cstime, @real]
-    end
-
-    protected
-    def memberwise(op, x)
-      case x
-      when Benchmark::Tms
-        Benchmark::Tms.new(utime.__send__(op, x.utime),
-                           stime.__send__(op, x.stime),
-                           cutime.__send__(op, x.cutime),
-                           cstime.__send__(op, x.cstime),
-                           real.__send__(op, x.real)
-                           )
-      else
-        Benchmark::Tms.new(utime.__send__(op, x),
-                           stime.__send__(op, x),
-                           cutime.__send__(op, x),
-                           cstime.__send__(op, x),
-                           real.__send__(op, x)
-                           )
-      end
-    end
-  end
-
-  # The default caption string (heading above the output times).
-  CAPTION = Benchmark::Tms::CAPTION
-
-  # The default format string used to display times.  See also Benchmark::Tms#format. 
-  FMTSTR = Benchmark::Tms::FMTSTR
-end
-
-if __FILE__ == $0
-  include Benchmark
-
-  n = ARGV[0].to_i.nonzero? || 50000
-  puts %Q([#{n} times iterations of `a = "1"'])
-  benchmark("       " + CAPTION, 7, FMTSTR) do |x|
-    x.report("for:")   {for i in 1..n; a = "1"; end} # Benchmark::measure
-    x.report("times:") {n.times do   ; a = "1"; end}
-    x.report("upto:")  {1.upto(n) do ; a = "1"; end}
-  end
-
-  benchmark do
-    [
-      measure{for i in 1..n; a = "1"; end},  # Benchmark::measure
-      measure{n.times do   ; a = "1"; end},
-      measure{1.upto(n) do ; a = "1"; end}
-    ]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/jacobian.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/jacobian.rb
deleted file mode 100644
index d80eeab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/jacobian.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-# require 'bigdecimal/jacobian'
-#
-# Provides methods to compute the Jacobian matrix of a set of equations at a
-# point x. In the methods below:
-#
-# f is an Object which is used to compute the Jacobian matrix of the equations.
-# It must provide the following methods:
-#
-# f.values(x):: returns the values of all functions at x
-#
-# f.zero:: returns 0.0
-# f.one:: returns 1.0
-# f.two:: returns 1.0
-# f.ten:: returns 10.0
-#
-# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
-#
-# x is the point at which to compute the Jacobian.
-#
-# fx is f.values(x).
-#
-module Jacobian
-  #--
-  def isEqual(a,b,zero=0.0,e=1.0e-8)
-    aa = a.abs
-    bb = b.abs
-    if aa == zero &&  bb == zero then
-          true
-    else
-          if ((a-b)/(aa+bb)).abs < e then
-             true
-          else
-             false
-          end
-    end
-  end
-  #++
-
-  # Computes the derivative of f[i] at x[i].
-  # fx is the value of f at x.
-  def dfdxi(f,fx,x,i)
-    nRetry = 0
-    n = x.size
-    xSave = x[i]
-    ok = 0
-    ratio = f.ten*f.ten*f.ten
-    dx = x[i].abs/ratio
-    dx = fx[i].abs/ratio if isEqual(dx,f.zero,f.zero,f.eps)
-    dx = f.one/f.ten     if isEqual(dx,f.zero,f.zero,f.eps)
-    until ok>0 do
-      s = f.zero
-      deriv = []
-      if(nRetry>100) then
-         raize "Singular Jacobian matrix. No change at x[" + i.to_s + "]"
-      end
-      dx = dx*f.two
-      x[i] += dx
-      fxNew = f.values(x)
-      for j in 0...n do
-        if !isEqual(fxNew[j],fx[j],f.zero,f.eps) then
-           ok += 1
-           deriv <<= (fxNew[j]-fx[j])/dx
-        else
-           deriv <<= f.zero
-        end
-      end
-      x[i] = xSave
-    end
-    deriv
-  end
-
-  # Computes the Jacobian of f at x. fx is the value of f at x.
-  def jacobian(f,fx,x)
-    n = x.size
-    dfdx = Array::new(n*n)
-    for i in 0...n do
-      df = dfdxi(f,fx,x,i)
-      for j in 0...n do
-         dfdx[j*n+i] = df[j]
-      end
-    end
-    dfdx
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/ludcmp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/ludcmp.rb
deleted file mode 100644
index 8f48887..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/ludcmp.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Solves a*x = b for x, using LU decomposition.
-#
-module LUSolve
-  # Performs LU decomposition of the n by n matrix a.
-  def ludecomp(a,n,zero=0,one=1)
-    prec = BigDecimal.limit(nil)
-    ps     = []
-    scales = []
-    for i in 0...n do  # pick up largest(abs. val.) element in each row.
-      ps <<= i
-      nrmrow  = zero
-      ixn = i*n
-      for j in 0...n do
-         biggst = a[ixn+j].abs
-         nrmrow = biggst if biggst>nrmrow
-      end
-      if nrmrow>zero then
-         scales <<= one.div(nrmrow,prec)
-      else 
-         raise "Singular matrix"
-      end
-    end
-    n1          = n - 1
-    for k in 0...n1 do # Gaussian elimination with partial pivoting.
-      biggst  = zero;
-      for i in k...n do
-         size = a[ps[i]*n+k].abs*scales[ps[i]]
-         if size>biggst then
-            biggst = size
-            pividx  = i
-         end
-      end
-      raise "Singular matrix" if biggst<=zero
-      if pividx!=k then
-        j = ps[k]
-        ps[k] = ps[pividx]
-        ps[pividx] = j
-      end
-      pivot   = a[ps[k]*n+k]
-      for i in (k+1)...n do
-        psin = ps[i]*n
-        a[psin+k] = mult = a[psin+k].div(pivot,prec)
-        if mult!=zero then
-           pskn = ps[k]*n
-           for j in (k+1)...n do
-             a[psin+j] -= mult.mult(a[pskn+j],prec)
-           end
-        end
-      end
-    end
-    raise "Singular matrix" if a[ps[n1]*n+n1] == zero
-    ps
-  end
-
-  # Solves a*x = b for x, using LU decomposition.
-  #
-  # a is a matrix, b is a constant vector, x is the solution vector.
-  #
-  # ps is the pivot, a vector which indicates the permutation of rows performed
-  # during LU decomposition.
-  def lusolve(a,b,ps,zero=0.0)
-    prec = BigDecimal.limit(nil)
-    n = ps.size
-    x = []
-    for i in 0...n do
-      dot = zero
-      psin = ps[i]*n
-      for j in 0...i do
-        dot = a[psin+j].mult(x[j],prec) + dot
-      end
-      x <<= b[ps[i]] - dot
-    end
-    (n-1).downto(0) do |i|
-       dot = zero
-       psin = ps[i]*n
-       for j in (i+1)...n do
-         dot = a[psin+j].mult(x[j],prec) + dot
-       end
-       x[i]  = (x[i]-dot).div(a[psin+i],prec)
-    end
-    x
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/math.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/math.rb
deleted file mode 100644
index f3248a3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/math.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-#
-#--
-# Contents:
-#   sqrt(x, prec)
-#   sin (x, prec)
-#   cos (x, prec)
-#   atan(x, prec)  Note: |x|<1, x=0.9999 may not converge.
-#   exp (x, prec)
-#   log (x, prec)
-#   PI  (prec)
-#   E   (prec) == exp(1.0,prec)
-#
-# where:
-#   x    ... BigDecimal number to be computed.
-#            |x| must be small enough to get convergence.
-#   prec ... Number of digits to be obtained.
-#++
-#
-# Provides mathematical functions.
-#
-# Example:
-#
-#   require "bigdecimal"
-#   require "bigdecimal/math"
-#
-#   include BigMath
-#
-#   a = BigDecimal((PI(100)/2).to_s)
-#   puts sin(a,100) # -> 0.10000000000000000000......E1
-#
-module BigMath
-
-  # Computes the square root of x to the specified number of digits of 
-  # precision.
-  #
-  # BigDecimal.new('2').sqrt(16).to_s 
-  #  -> "0.14142135623730950488016887242096975E1"
-  #
-  def sqrt(x,prec)
-    x.sqrt(prec)
-  end
-
-  # Computes the sine of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  def sin(x, prec)
-    raise ArgumentError, "Zero or negative precision for sin" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    two  = BigDecimal("2")
-    x1   = x
-    x2   = x.mult(x,n)
-    sign = 1
-    y    = x
-    d    = y
-    i    = one
-    z    = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      sign = -sign
-      x1  = x2.mult(x1,n)
-      i  += two
-      z  *= (i-one) * i
-      d   = sign * x1.div(z,m)
-      y  += d
-    end
-    y
-  end
-
-  # Computes the cosine of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  def cos(x, prec)
-    raise ArgumentError, "Zero or negative precision for cos" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    two  = BigDecimal("2")
-    x1 = one
-    x2 = x.mult(x,n)
-    sign = 1
-    y = one
-    d = y
-    i = BigDecimal("0")
-    z = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      sign = -sign
-      x1  = x2.mult(x1,n)
-      i  += two
-      z  *= (i-one) * i
-      d   = sign * x1.div(z,m)
-      y  += d
-    end
-    y
-  end
-
-  # Computes the arctangent of x to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  # Raises an argument error if x > 1.
-  def atan(x, prec)
-    raise ArgumentError, "Zero or negative precision for atan" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    raise ArgumentError, "x.abs must be less than 1.0" if x.abs>=1
-    n    = prec + BigDecimal.double_fig
-    y = x
-    d = y
-    t = x
-    r = BigDecimal("3")
-    x2 = x.mult(x,n)
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t = -t.mult(x2,n)
-      d = t.div(r,m)
-      y += d
-      r += 2
-    end
-    y
-  end
-
-  # Computes the value of e (the base of natural logarithms) raised to the 
-  # power of x, to the specified number of digits of precision.
-  #
-  # If x is infinite or NaN, returns NaN.
-  #
-  # BigMath::exp(BigDecimal.new('1'), 10).to_s
-  # -> "0.271828182845904523536028752390026306410273E1"
-  def exp(x, prec)
-    raise ArgumentError, "Zero or negative precision for exp" if prec <= 0
-    return BigDecimal("NaN") if x.infinite? || x.nan?
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    x1 = one
-    y  = one
-    d  = y
-    z  = one
-    i  = 0
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      x1  = x1.mult(x,n)
-      i += 1
-      z *= i
-      d  = x1.div(z,m)
-      y += d
-    end
-    y
-  end
-
-  # Computes the natural logarithm of x to the specified number of digits 
-  # of precision.
-  #
-  # Returns x if x is infinite or NaN.
-  #
-  def log(x, prec)
-    raise ArgumentError, "Zero or negative argument for log" if x <= 0 || prec <= 0
-    return x if x.infinite? || x.nan?
-    one = BigDecimal("1")
-    two = BigDecimal("2")
-    n  = prec + BigDecimal.double_fig
-    x  = (x - one).div(x + one,n)
-    x2 = x.mult(x,n)
-    y  = x
-    d  = y
-    i = one
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      x  = x2.mult(x,n)
-      i += two
-      d  = x.div(i,m)
-      y += d
-    end
-    y*two
-  end
-
-  # Computes the value of pi to the specified number of digits of precision.
-  def PI(prec)
-    raise ArgumentError, "Zero or negative argument for PI" if prec <= 0
-    n      = prec + BigDecimal.double_fig
-    zero   = BigDecimal("0")
-    one    = BigDecimal("1")
-    two    = BigDecimal("2")
-
-    m25    = BigDecimal("-0.04")
-    m57121 = BigDecimal("-57121")
-
-    pi     = zero
-
-    d = one
-    k = one
-    w = one
-    t = BigDecimal("-80")
-    while d.nonzero? && ((m = n - (pi.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t   = t*m25
-      d   = t.div(k,m)
-      k   = k+two
-      pi  = pi + d
-    end
-
-    d = one
-    k = one
-    w = one
-    t = BigDecimal("956")
-    while d.nonzero? && ((m = n - (pi.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      t   = t.div(m57121,n)
-      d   = t.div(k,m)
-      pi  = pi + d
-      k   = k+two
-    end
-    pi
-  end
-
-  # Computes e (the base of natural logarithms) to the specified number of
-  # digits of precision.
-  def E(prec)
-    raise ArgumentError, "Zero or negative precision for E" if prec <= 0
-    n    = prec + BigDecimal.double_fig
-    one  = BigDecimal("1")
-    y  = one
-    d  = y
-    z  = one
-    i  = 0
-    while d.nonzero? && ((m = n - (y.exponent - d.exponent).abs) > 0)
-      m = BigDecimal.double_fig if m < BigDecimal.double_fig
-      i += 1
-      z *= i
-      d  = one.div(z,m)
-      y += d
-    end
-    y
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/newton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/newton.rb
deleted file mode 100644
index 59ac0f7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/newton.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# newton.rb 
-#
-# Solves the nonlinear algebraic equation system f = 0 by Newton's method.
-# This program is not dependent on BigDecimal.
-#
-# To call:
-#    n = nlsolve(f,x)
-#  where n is the number of iterations required,
-#        x is the initial value vector
-#        f is an Object which is used to compute the values of the equations to be solved.
-# It must provide the following methods:
-#
-# f.values(x):: returns the values of all functions at x
-#
-# f.zero:: returns 0.0
-# f.one:: returns 1.0
-# f.two:: returns 1.0
-# f.ten:: returns 10.0
-#
-# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
-#
-# On exit, x is the solution vector.
-#
-require "bigdecimal/ludcmp"
-require "bigdecimal/jacobian"
-
-module Newton
-  include LUSolve
-  include Jacobian
-  
-  def norm(fv,zero=0.0)
-    s = zero
-    n = fv.size
-    for i in 0...n do
-      s += fv[i]*fv[i]
-    end
-    s
-  end
-
-  def nlsolve(f,x)
-    nRetry = 0
-    n = x.size
-
-    f0 = f.values(x)
-    zero = f.zero
-    one  = f.one
-    two  = f.two
-    p5 = one/two
-    d  = norm(f0,zero)
-    minfact = f.ten*f.ten*f.ten
-    minfact = one/minfact
-    e = f.eps
-    while d >= e do
-      nRetry += 1
-      # Not yet converged. => Compute Jacobian matrix
-      dfdx = jacobian(f,f0,x)
-      # Solve dfdx*dx = -f0 to estimate dx
-      dx = lusolve(dfdx,f0,ludecomp(dfdx,n,zero,one),zero)
-      fact = two
-      xs = x.dup
-      begin
-        fact *= p5
-        if fact < minfact then
-          raise "Failed to reduce function values."
-        end
-        for i in 0...n do
-          x[i] = xs[i] - dx[i]*fact
-        end
-        f0 = f.values(x)
-        dn = norm(f0,zero)
-      end while(dn>=d)
-      d = dn
-    end
-    nRetry
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/util.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/util.rb
deleted file mode 100644
index 09e926a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/bigdecimal/util.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# BigDecimal utility library.
-#
-# To use these functions, require 'bigdecimal/util'
-#
-# The following methods are provided to convert other types to BigDecimals:
-#
-#   String#to_d -> BigDecimal
-#   Float#to_d -> BigDecimal
-#   Rational#to_d -> BigDecimal
-#
-# The following method is provided to convert BigDecimals to other types:
-#
-#   BigDecimal#to_r -> Rational
-#
-# ----------------------------------------------------------------------
-#
-class Float < Numeric
-  def to_d
-    BigDecimal(self.to_s)
-  end
-end
-
-class String
-  def to_d
-    BigDecimal(self)
-  end
-end
-
-class BigDecimal < Numeric
-  # Converts a BigDecimal to a String of the form "nnnnnn.mmm".
-  # This method is deprecated; use BigDecimal#to_s("F") instead.
-  def to_digits
-     if self.nan? || self.infinite? || self.zero?
-        self.to_s
-     else
-       i       = self.to_i.to_s
-       s,f,y,z = self.frac.split
-       i + "." + ("0"*(-z)) + f
-     end
-  end
-
-  # Converts a BigDecimal to a Rational.
-  def to_r 
-     sign,digits,base,power = self.split
-     numerator = sign*digits.to_i
-     denomi_power = power - digits.size # base is always 10
-     if denomi_power < 0
-        Rational(numerator,base ** (-denomi_power))
-     else
-        Rational(numerator * (base ** denomi_power),1)
-     end
-  end
-end
-
-class Rational < Numeric
-  # Converts a Rational to a BigDecimal
-  def to_d(nFig=0)
-     num = self.numerator.to_s
-     if nFig<=0
-        nFig = BigDecimal.double_fig*2+1
-     end
-     BigDecimal.new(num).div(self.denominator,nFig)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi-lib.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi-lib.rb
deleted file mode 100644
index d6b60d6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi-lib.rb
+++ /dev/null
@@ -1,272 +0,0 @@
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: cgi-lib is deprecated after Ruby 1.8.1; use cgi instead"
-
-=begin
-
-= simple CGI support library
-
-= example
-
-== get form values
-
-	require "cgi-lib.rb"
-	query = CGI.new
-	query['field']   # <== value of 'field'
-	query.keys       # <== array of fields
-
-and query has Hash class methods
-
-
-== get cookie values
-
-	require "cgi-lib.rb"
-	query = CGI.new
-	query.cookie['name']  # <== cookie value of 'name'
-	query.cookie.keys     # <== all cookie names
-
-and query.cookie has Hash class methods
-
-
-== print HTTP header and HTML string to $>
-
-	require "cgi-lib.rb"
-	CGI::print{
-	  CGI::tag("HTML"){
-	    CGI::tag("HEAD"){ CGI::tag("TITLE"){"TITLE"} } +
-	    CGI::tag("BODY"){
-	      CGI::tag("FORM", {"ACTION"=>"test.rb", "METHOD"=>"POST"}){
-	        CGI::tag("INPUT", {"TYPE"=>"submit", "VALUE"=>"submit"})
-	      } +
-	      CGI::tag("HR")
-	    }
-	  }
-	}
-
-
-== make raw cookie string
-
-	require "cgi-lib.rb"
-	cookie1 = CGI::cookie({'name'    => 'name',
-	                       'value'   => 'value',
-	                       'path'    => 'path',   # optional
-	                       'domain'  => 'domain', # optional
-	                       'expires' => Time.now, # optional
-	                       'secure'  => true      # optional
-	                      })
-
-	CGI::print("Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-== print HTTP header and string to $>
-
-	require "cgi-lib.rb"
-	CGI::print{ "string" }
-	  # == CGI::print("Content-Type: text/html"){ "string" }
-	CGI::print("Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-=== NPH (no-parse-header) mode
-
-	require "cgi-lib.rb"
-	CGI::print("nph"){ "string" }
-	  # == CGI::print("nph", "Content-Type: text/html"){ "string" }
-	CGI::print("nph", "Content-Type: text/html", cookie1, cookie2){ "string" }
-
-
-== make HTML tag string
-
-	require "cgi-lib.rb"
-	CGI::tag("element", {"attribute_name"=>"attribute_value"}){"content"}
-
-
-== make HTTP header string
-
-	require "cgi-lib.rb"
-	CGI::header # == CGI::header("Content-Type: text/html")
-	CGI::header("Content-Type: text/html", cookie1, cookie2)
-
-
-=== NPH (no-parse-header) mode
-
-	CGI::header("nph") # == CGI::header("nph", "Content-Type: text/html")
-	CGI::header("nph", "Content-Type: text/html", cookie1, cookie2)
-
-
-== escape url encode
-
-	require "cgi-lib.rb"
-	url_encoded_string = CGI::escape("string")
-
-
-== unescape url encoded
-
-	require "cgi-lib.rb"
-	string = CGI::unescape("url encoded string")
-
-
-== escape HTML &"<>
-
-	require "cgi-lib.rb"
-	CGI::escapeHTML("string")
-
-
-=end
-
-require "delegate"
-
-class CGI < SimpleDelegator
-
-  CR  = "\015"
-  LF  = "\012"
-  EOL = CR + LF
-
-  RFC822_DAYS = %w[ Sun Mon Tue Wed Thu Fri Sat ]
-  RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
-
-  # make rfc1123 date string
-  def CGI::rfc1123_date(time)
-    t = time.clone.gmtime
-    return format("%s, %.2d %s %d %.2d:%.2d:%.2d GMT",
-                RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
-                t.hour, t.min, t.sec)
-  end
-
-  # escape url encode
-  def CGI::escape(str)
-    str.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
-  end
-
-  # unescape url encoded
-  def CGI::unescape(str)
-    str.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") }
-  end
-
-  # escape HTML
-  def CGI::escapeHTML(str)
-    str.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-  end
-
-  # offline mode. read name=value pairs on standard input.
-  def read_from_cmdline
-    require "shellwords.rb"
-    words = Shellwords.shellwords(
-              if not ARGV.empty?
-                ARGV.join(' ')
-              else
-                STDERR.print "(offline mode: enter name=value pairs on standard input)\n" if STDIN.tty?
-                readlines.join(' ').gsub(/\n/, '')
-              end.gsub(/\\=/, '%3D').gsub(/\\&/, '%26'))
-
-    if words.find{|x| x =~ /=/} then words.join('&') else words.join('+') end
-  end
-
-  def initialize(input = $stdin)
-
-    @inputs = {}
-    @cookie = {}
-
-    case ENV['REQUEST_METHOD']
-    when "GET"
-      ENV['QUERY_STRING'] or ""
-    when "POST"
-      input.read(Integer(ENV['CONTENT_LENGTH'])) or ""
-    else
-      read_from_cmdline
-    end.split(/[&;]/).each do |x|
-      key, val = x.split(/=/,2).collect{|x|CGI::unescape(x)}
-      if @inputs.include?(key)
-        @inputs[key] += "\0" + (val or "")
-      else
-        @inputs[key] = (val or "")
-      end
-    end
-
-    super(@inputs)
-
-    if ENV.has_key?('HTTP_COOKIE') or ENV.has_key?('COOKIE')
-      (ENV['HTTP_COOKIE'] or ENV['COOKIE']).split(/; /).each do |x|
-        key, val = x.split(/=/,2)
-        key = CGI::unescape(key)
-        val = val.split(/&/).collect{|x|CGI::unescape(x)}.join("\0")
-        if @cookie.include?(key)
-          @cookie[key] += "\0" + val
-        else
-          @cookie[key] = val
-        end
-      end
-    end
-  end
-
-  attr("inputs")
-  attr("cookie")
-
-  # make HTML tag string
-  def CGI::tag(element, attributes = {})
-    "<" + escapeHTML(element) + attributes.collect{|name, value|
-      " " + escapeHTML(name) + '="' + escapeHTML(value) + '"'
-    }.to_s + ">" +
-    (iterator? ? yield.to_s + "</" + escapeHTML(element) + ">" : "")
-  end
-
-  # make raw cookie string
-  def CGI::cookie(options)
-    "Set-Cookie: " + options['name'] + '=' + escape(options['value']) +
-    (options['domain']  ? '; domain='  + options['domain'] : '') +
-    (options['path']    ? '; path='    + options['path']   : '') +
-    (options['expires'] ? '; expires=' + rfc1123_date(options['expires']) : '') +
-    (options['secure']  ? '; secure' : '')
-  end
-
-  # make HTTP header string
-  def CGI::header(*options)
-    if defined?(MOD_RUBY)
-      options.each{|option|
-        option.sub(/(.*?): (.*)/){
-          Apache::request.headers_out[$1] = $2
-        }
-      }
-      Apache::request.send_http_header
-      ''
-    else
-      if options.delete("nph") or (ENV['SERVER_SOFTWARE'] =~ /IIS/)
-        [(ENV['SERVER_PROTOCOL'] or "HTTP/1.0") + " 200 OK",
-         "Date: " + rfc1123_date(Time.now),
-         "Server: " + (ENV['SERVER_SOFTWARE'] or ""),
-         "Connection: close"] +
-        (options.empty? ? ["Content-Type: text/html"] : options)
-      else
-        options.empty? ? ["Content-Type: text/html"] : options
-      end.join(EOL) + EOL + EOL
-    end
-  end
-
-  # print HTTP header and string to $>
-  def CGI::print(*options)
-    $>.print CGI::header(*options) + yield.to_s
-  end
-
-  # print message to $>
-  def CGI::message(message, title = "", header = ["Content-Type: text/html"])
-    if message.kind_of?(Hash)
-      title   = message['title']
-      header  = message['header']
-      message = message['body']
-    end
-    CGI::print(*header){
-      CGI::tag("HTML"){
-        CGI::tag("HEAD"){ CGI.tag("TITLE"){ title } } +
-        CGI::tag("BODY"){ message }
-      }
-    }
-    true
-  end
-
-  # print error message to $> and exit
-  def CGI::error
-    CGI::message({'title'=>'ERROR', 'body'=>
-      CGI::tag("PRE"){
-        "ERROR: " + CGI::tag("STRONG"){ escapeHTML($!.to_s) } + "\n" + escapeHTML($@.join("\n"))
-      }
-    })
-    exit
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi.rb
deleted file mode 100644
index d6a1d11..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi.rb
+++ /dev/null
@@ -1,2303 +0,0 @@
-# 
-# cgi.rb - cgi support library
-# 
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# 
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-#
-# Author: Wakou Aoyama <wakou at ruby-lang.org>
-#
-# Documentation: Wakou Aoyama (RDoc'd and embellished by William Webber) 
-# 
-# == Overview
-#
-# The Common Gateway Interface (CGI) is a simple protocol
-# for passing an HTTP request from a web server to a
-# standalone program, and returning the output to the web
-# browser.  Basically, a CGI program is called with the
-# parameters of the request passed in either in the
-# environment (GET) or via $stdin (POST), and everything
-# it prints to $stdout is returned to the client.
-# 
-# This file holds the +CGI+ class.  This class provides
-# functionality for retrieving HTTP request parameters,
-# managing cookies, and generating HTML output.  See the
-# class documentation for more details and examples of use.
-#
-# The file cgi/session.rb provides session management
-# functionality; see that file for more details.
-#
-# See http://www.w3.org/CGI/ for more information on the CGI
-# protocol.
-
-raise "Please, use ruby 1.5.4 or later." if RUBY_VERSION < "1.5.4"
-
-require 'English'
-
-# CGI class.  See documentation for the file cgi.rb for an overview
-# of the CGI protocol.
-#
-# == Introduction
-#
-# CGI is a large class, providing several categories of methods, many of which
-# are mixed in from other modules.  Some of the documentation is in this class,
-# some in the modules CGI::QueryExtension and CGI::HtmlExtension.  See
-# CGI::Cookie for specific information on handling cookies, and cgi/session.rb
-# (CGI::Session) for information on sessions.
-#
-# For queries, CGI provides methods to get at environmental variables,
-# parameters, cookies, and multipart request data.  For responses, CGI provides
-# methods for writing output and generating HTML.
-#
-# Read on for more details.  Examples are provided at the bottom.
-#
-# == Queries
-#
-# The CGI class dynamically mixes in parameter and cookie-parsing
-# functionality,  environmental variable access, and support for
-# parsing multipart requests (including uploaded files) from the
-# CGI::QueryExtension module.
-#
-# === Environmental Variables
-#
-# The standard CGI environmental variables are available as read-only
-# attributes of a CGI object.  The following is a list of these variables:
-#
-#
-#   AUTH_TYPE               HTTP_HOST          REMOTE_IDENT
-#   CONTENT_LENGTH          HTTP_NEGOTIATE     REMOTE_USER
-#   CONTENT_TYPE            HTTP_PRAGMA        REQUEST_METHOD
-#   GATEWAY_INTERFACE       HTTP_REFERER       SCRIPT_NAME
-#   HTTP_ACCEPT             HTTP_USER_AGENT    SERVER_NAME
-#   HTTP_ACCEPT_CHARSET     PATH_INFO          SERVER_PORT
-#   HTTP_ACCEPT_ENCODING    PATH_TRANSLATED    SERVER_PROTOCOL
-#   HTTP_ACCEPT_LANGUAGE    QUERY_STRING       SERVER_SOFTWARE
-#   HTTP_CACHE_CONTROL      REMOTE_ADDR
-#   HTTP_FROM               REMOTE_HOST
-#
-#
-# For each of these variables, there is a corresponding attribute with the
-# same name, except all lower case and without a preceding HTTP_.  
-# +content_length+ and +server_port+ are integers; the rest are strings.
-#
-# === Parameters
-#
-# The method #params() returns a hash of all parameters in the request as
-# name/value-list pairs, where the value-list is an Array of one or more
-# values.  The CGI object itself also behaves as a hash of parameter names 
-# to values, but only returns a single value (as a String) for each 
-# parameter name.
-#
-# For instance, suppose the request contains the parameter 
-# "favourite_colours" with the multiple values "blue" and "green".  The
-# following behaviour would occur:
-#
-#   cgi.params["favourite_colours"]  # => ["blue", "green"]
-#   cgi["favourite_colours"]         # => "blue"
-#
-# If a parameter does not exist, the former method will return an empty
-# array, the latter an empty string.  The simplest way to test for existence
-# of a parameter is by the #has_key? method.
-#
-# === Cookies
-#
-# HTTP Cookies are automatically parsed from the request.  They are available
-# from the #cookies() accessor, which returns a hash from cookie name to
-# CGI::Cookie object.
-#
-# === Multipart requests
-#
-# If a request's method is POST and its content type is multipart/form-data, 
-# then it may contain uploaded files.  These are stored by the QueryExtension
-# module in the parameters of the request.  The parameter name is the name
-# attribute of the file input field, as usual.  However, the value is not
-# a string, but an IO object, either an IOString for small files, or a
-# Tempfile for larger ones.  This object also has the additional singleton
-# methods:
-#
-# #local_path():: the path of the uploaded file on the local filesystem
-# #original_filename():: the name of the file on the client computer
-# #content_type():: the content type of the file
-#
-# == Responses
-#
-# The CGI class provides methods for sending header and content output to
-# the HTTP client, and mixes in methods for programmatic HTML generation
-# from CGI::HtmlExtension and CGI::TagMaker modules.  The precise version of HTML
-# to use for HTML generation is specified at object creation time.
-#
-# === Writing output
-#
-# The simplest way to send output to the HTTP client is using the #out() method.
-# This takes the HTTP headers as a hash parameter, and the body content
-# via a block.  The headers can be generated as a string using the #header()
-# method.  The output stream can be written directly to using the #print()
-# method.
-#
-# === Generating HTML
-#
-# Each HTML element has a corresponding method for generating that
-# element as a String.  The name of this method is the same as that
-# of the element, all lowercase.  The attributes of the element are 
-# passed in as a hash, and the body as a no-argument block that evaluates
-# to a String.  The HTML generation module knows which elements are
-# always empty, and silently drops any passed-in body.  It also knows
-# which elements require matching closing tags and which don't.  However,
-# it does not know what attributes are legal for which elements.
-#
-# There are also some additional HTML generation methods mixed in from
-# the CGI::HtmlExtension module.  These include individual methods for the
-# different types of form inputs, and methods for elements that commonly
-# take particular attributes where the attributes can be directly specified
-# as arguments, rather than via a hash.
-#
-# == Examples of use
-# 
-# === Get form values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   value = cgi['field_name']   # <== value string for 'field_name'
-#     # if not 'field_name' included, then return "".
-#   fields = cgi.keys            # <== array of field names
-# 
-#   # returns true if form has 'field_name'
-#   cgi.has_key?('field_name')
-#   cgi.has_key?('field_name')
-#   cgi.include?('field_name')
-# 
-# CAUTION! cgi['field_name'] returned an Array with the old 
-# cgi.rb(included in ruby 1.6)
-# 
-# === Get form values as hash
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   params = cgi.params
-# 
-# cgi.params is a hash.
-# 
-#   cgi.params['new_field_name'] = ["value"]  # add new param
-#   cgi.params['field_name'] = ["new_value"]  # change value
-#   cgi.params.delete('field_name')           # delete param
-#   cgi.params.clear                          # delete all params
-# 
-# 
-# === Save form values to file
-# 
-#   require "pstore"
-#   db = PStore.new("query.db")
-#   db.transaction do
-#     db["params"] = cgi.params
-#   end
-# 
-# 
-# === Restore form values from file
-# 
-#   require "pstore"
-#   db = PStore.new("query.db")
-#   db.transaction do
-#     cgi.params = db["params"]
-#   end
-# 
-# 
-# === Get multipart form values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   value = cgi['field_name']   # <== value string for 'field_name'
-#   value.read                  # <== body of value
-#   value.local_path            # <== path to local file of value
-#   value.original_filename     # <== original filename of value
-#   value.content_type          # <== content_type of value
-# 
-# and value has StringIO or Tempfile class methods.
-# 
-# === Get cookie values
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   values = cgi.cookies['name']  # <== array of 'name'
-#     # if not 'name' included, then return [].
-#   names = cgi.cookies.keys      # <== array of cookie names
-# 
-# and cgi.cookies is a hash.
-# 
-# === Get cookie objects
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   for name, cookie in cgi.cookies
-#     cookie.expires = Time.now + 30
-#   end
-#   cgi.out("cookie" => cgi.cookies) {"string"}
-# 
-#   cgi.cookies # { "name1" => cookie1, "name2" => cookie2, ... }
-# 
-#   require "cgi"
-#   cgi = CGI.new
-#   cgi.cookies['name'].expires = Time.now + 30
-#   cgi.out("cookie" => cgi.cookies['name']) {"string"}
-# 
-# === Print http header and html string to $DEFAULT_OUTPUT ($>)
-# 
-#   require "cgi"
-#   cgi = CGI.new("html3")  # add HTML generation methods
-#   cgi.out() do
-#     cgi.html() do
-#       cgi.head{ cgi.title{"TITLE"} } +
-#       cgi.body() do
-#         cgi.form() do
-#           cgi.textarea("get_text") +
-#           cgi.br +
-#           cgi.submit
-#         end +
-#         cgi.pre() do
-#           CGI::escapeHTML(
-#             "params: " + cgi.params.inspect + "\n" +
-#             "cookies: " + cgi.cookies.inspect + "\n" +
-#             ENV.collect() do |key, value|
-#               key + " --> " + value + "\n"
-#             end.join("")
-#           )
-#         end
-#       end
-#     end
-#   end
-# 
-#   # add HTML generation methods
-#   CGI.new("html3")    # html3.2
-#   CGI.new("html4")    # html4.01 (Strict)
-#   CGI.new("html4Tr")  # html4.01 Transitional
-#   CGI.new("html4Fr")  # html4.01 Frameset
-#
-class CGI
-
-  # :stopdoc:
-
-  # String for carriage return
-  CR  = "\015"
-
-  # String for linefeed
-  LF  = "\012"
-
-  # Standard internet newline sequence
-  EOL = CR + LF
-
-  REVISION = '$Id: cgi.rb 17815 2008-07-02 10:06:15Z shyouhei $' #:nodoc:
-
-  NEEDS_BINMODE = true if /WIN/ni.match(RUBY_PLATFORM) 
-
-  # Path separators in different environments.
-  PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'}
-
-  # HTTP status codes.
-  HTTP_STATUS = {
-    "OK"                  => "200 OK",
-    "PARTIAL_CONTENT"     => "206 Partial Content",
-    "MULTIPLE_CHOICES"    => "300 Multiple Choices",
-    "MOVED"               => "301 Moved Permanently",
-    "REDIRECT"            => "302 Found",
-    "NOT_MODIFIED"        => "304 Not Modified",
-    "BAD_REQUEST"         => "400 Bad Request",
-    "AUTH_REQUIRED"       => "401 Authorization Required",
-    "FORBIDDEN"           => "403 Forbidden",
-    "NOT_FOUND"           => "404 Not Found",
-    "METHOD_NOT_ALLOWED"  => "405 Method Not Allowed",
-    "NOT_ACCEPTABLE"      => "406 Not Acceptable",
-    "LENGTH_REQUIRED"     => "411 Length Required",
-    "PRECONDITION_FAILED" => "412 Rrecondition Failed",
-    "SERVER_ERROR"        => "500 Internal Server Error",
-    "NOT_IMPLEMENTED"     => "501 Method Not Implemented",
-    "BAD_GATEWAY"         => "502 Bad Gateway",
-    "VARIANT_ALSO_VARIES" => "506 Variant Also Negotiates"
-  }
-
-  # Abbreviated day-of-week names specified by RFC 822
-  RFC822_DAYS = %w[ Sun Mon Tue Wed Thu Fri Sat ]
-
-  # Abbreviated month names specified by RFC 822
-  RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
-
-  # :startdoc:
-
-  def env_table 
-    ENV
-  end
-
-  def stdinput
-    $stdin
-  end
-
-  def stdoutput
-    $DEFAULT_OUTPUT
-  end
-
-  private :env_table, :stdinput, :stdoutput
-
-  # URL-encode a string.
-  #   url_encoded_string = CGI::escape("'Stop!' said Fred")
-  #      # => "%27Stop%21%27+said+Fred"
-  def CGI::escape(string)
-    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
-      '%' + $1.unpack('H2' * $1.size).join('%').upcase
-    end.tr(' ', '+')
-  end
-
-
-  # URL-decode a string.
-  #   string = CGI::unescape("%27Stop%21%27+said+Fred")
-  #      # => "'Stop!' said Fred"
-  def CGI::unescape(string)
-    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
-      [$1.delete('%')].pack('H*')
-    end
-  end
-
-
-  # Escape special characters in HTML, namely &\"<>
-  #   CGI::escapeHTML('Usage: foo "bar" <baz>')
-  #      # => "Usage: foo "bar" <baz>"
-  def CGI::escapeHTML(string)
-    string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<')
-  end
-
-
-  # Unescape a string that has been HTML-escaped
-  #   CGI::unescapeHTML("Usage: foo "bar" <baz>")
-  #      # => "Usage: foo \"bar\" <baz>"
-  def CGI::unescapeHTML(string)
-    string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/n) do
-      match = $1.dup
-      case match
-      when 'amp'                 then '&'
-      when 'quot'                then '"'
-      when 'gt'                  then '>'
-      when 'lt'                  then '<'
-      when /\A#0*(\d+)\z/n       then
-        if Integer($1) < 256
-          Integer($1).chr
-        else
-          if Integer($1) < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U)
-            [Integer($1)].pack("U")
-          else
-            "&##{$1};"
-          end
-        end
-      when /\A#x([0-9a-f]+)\z/ni then
-        if $1.hex < 256
-          $1.hex.chr
-        else
-          if $1.hex < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U)
-            [$1.hex].pack("U")
-          else
-            "&#x#{$1};"
-          end
-        end
-      else
-        "&#{match};"
-      end
-    end
-  end
-
-
-  # Escape only the tags of certain HTML elements in +string+.
-  #
-  # Takes an element or elements or array of elements.  Each element
-  # is specified by the name of the element, without angle brackets.
-  # This matches both the start and the end tag of that element.
-  # The attribute list of the open tag will also be escaped (for
-  # instance, the double-quotes surrounding attribute values).
-  #
-  #   print CGI::escapeElement('<BR><A HREF="url"></A>', "A", "IMG")
-  #     # "<BR><A HREF="url"></A&gt"
-  #
-  #   print CGI::escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"])
-  #     # "<BR><A HREF="url"></A&gt"
-  def CGI::escapeElement(string, *elements)
-    elements = elements[0] if elements[0].kind_of?(Array)
-    unless elements.empty?
-      string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/ni) do
-        CGI::escapeHTML($&)
-      end
-    else
-      string
-    end
-  end
-
-
-  # Undo escaping such as that done by CGI::escapeElement()
-  #
-  #   print CGI::unescapeElement(
-  #           CGI::escapeHTML('<BR><A HREF="url"></A>'), "A", "IMG")
-  #     # "<BR><A HREF="url"></A>"
-  # 
-  #   print CGI::unescapeElement(
-  #           CGI::escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"])
-  #     # "<BR><A HREF="url"></A>"
-  def CGI::unescapeElement(string, *elements)
-    elements = elements[0] if elements[0].kind_of?(Array)
-    unless elements.empty?
-      string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/ni) do
-        CGI::unescapeHTML($&)
-      end
-    else
-      string
-    end
-  end
-
-
-  # Format a +Time+ object as a String using the format specified by RFC 1123.
-  #
-  #   CGI::rfc1123_date(Time.now)
-  #     # Sat, 01 Jan 2000 00:00:00 GMT
-  def CGI::rfc1123_date(time)
-    t = time.clone.gmtime
-    return format("%s, %.2d %s %.4d %.2d:%.2d:%.2d GMT",
-                RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
-                t.hour, t.min, t.sec)
-  end
-
-
-  # Create an HTTP header block as a string.
-  #
-  # Includes the empty line that ends the header block.
-  #
-  # +options+ can be a string specifying the Content-Type (defaults
-  # to text/html), or a hash of header key/value pairs.  The following
-  # header keys are recognized:
-  #
-  # type:: the Content-Type header.  Defaults to "text/html"
-  # charset:: the charset of the body, appended to the Content-Type header.
-  # nph:: a boolean value.  If true, prepend protocol string and status code, and
-  #       date; and sets default values for "server" and "connection" if not
-  #       explicitly set.
-  # status:: the HTTP status code, returned as the Status header.  See the
-  #          list of available status codes below.
-  # server:: the server software, returned as the Server header.
-  # connection:: the connection type, returned as the Connection header (for 
-  #              instance, "close".
-  # length:: the length of the content that will be sent, returned as the
-  #          Content-Length header.
-  # language:: the language of the content, returned as the Content-Language
-  #            header.
-  # expires:: the time on which the current content expires, as a +Time+
-  #           object, returned as the Expires header.
-  # cookie:: a cookie or cookies, returned as one or more Set-Cookie headers.
-  #          The value can be the literal string of the cookie; a CGI::Cookie
-  #          object; an Array of literal cookie strings or Cookie objects; or a 
-  #          hash all of whose values are literal cookie strings or Cookie objects.
-  #          These cookies are in addition to the cookies held in the
-  #          @output_cookies field.
-  #
-  # Other header lines can also be set; they are appended as key: value.
-  # 
-  #   header
-  #     # Content-Type: text/html
-  # 
-  #   header("text/plain")
-  #     # Content-Type: text/plain
-  # 
-  #   header("nph"        => true,
-  #          "status"     => "OK",  # == "200 OK"
-  #            # "status"     => "200 GOOD",
-  #          "server"     => ENV['SERVER_SOFTWARE'],
-  #          "connection" => "close",
-  #          "type"       => "text/html",
-  #          "charset"    => "iso-2022-jp",
-  #            # Content-Type: text/html; charset=iso-2022-jp
-  #          "length"     => 103,
-  #          "language"   => "ja",
-  #          "expires"    => Time.now + 30,
-  #          "cookie"     => [cookie1, cookie2],
-  #          "my_header1" => "my_value"
-  #          "my_header2" => "my_value")
-  # 
-  # The status codes are:
-  # 
-  #   "OK"                  --> "200 OK"
-  #   "PARTIAL_CONTENT"     --> "206 Partial Content"
-  #   "MULTIPLE_CHOICES"    --> "300 Multiple Choices"
-  #   "MOVED"               --> "301 Moved Permanently"
-  #   "REDIRECT"            --> "302 Found"
-  #   "NOT_MODIFIED"        --> "304 Not Modified"
-  #   "BAD_REQUEST"         --> "400 Bad Request"
-  #   "AUTH_REQUIRED"       --> "401 Authorization Required"
-  #   "FORBIDDEN"           --> "403 Forbidden"
-  #   "NOT_FOUND"           --> "404 Not Found"
-  #   "METHOD_NOT_ALLOWED"  --> "405 Method Not Allowed"
-  #   "NOT_ACCEPTABLE"      --> "406 Not Acceptable"
-  #   "LENGTH_REQUIRED"     --> "411 Length Required"
-  #   "PRECONDITION_FAILED" --> "412 Precondition Failed"
-  #   "SERVER_ERROR"        --> "500 Internal Server Error"
-  #   "NOT_IMPLEMENTED"     --> "501 Method Not Implemented"
-  #   "BAD_GATEWAY"         --> "502 Bad Gateway"
-  #   "VARIANT_ALSO_VARIES" --> "506 Variant Also Negotiates"
-  # 
-  # This method does not perform charset conversion. 
-  #
-  def header(options = "text/html")
-
-    buf = ""
-
-    case options
-    when String
-      options = { "type" => options }
-    when Hash
-      options = options.dup
-    end
-
-    unless options.has_key?("type")
-      options["type"] = "text/html"
-    end
-
-    if options.has_key?("charset")
-      options["type"] += "; charset=" + options.delete("charset")
-    end
-
-    options.delete("nph") if defined?(MOD_RUBY)
-    if options.delete("nph") or
-        (/IIS\/(\d+)/n.match(env_table['SERVER_SOFTWARE']) and $1.to_i < 5)
-      buf += (env_table["SERVER_PROTOCOL"] or "HTTP/1.0")  + " " +
-             (HTTP_STATUS[options["status"]] or options["status"] or "200 OK") +
-             EOL +
-             "Date: " + CGI::rfc1123_date(Time.now) + EOL
-
-      unless options.has_key?("server")
-        options["server"] = (env_table['SERVER_SOFTWARE'] or "")
-      end
-
-      unless options.has_key?("connection")
-        options["connection"] = "close"
-      end
-
-      options.delete("status")
-    end
-
-    if options.has_key?("status")
-      buf += "Status: " +
-             (HTTP_STATUS[options["status"]] or options["status"]) + EOL
-      options.delete("status")
-    end
-
-    if options.has_key?("server")
-      buf += "Server: " + options.delete("server") + EOL
-    end
-
-    if options.has_key?("connection")
-      buf += "Connection: " + options.delete("connection") + EOL
-    end
-
-    buf += "Content-Type: " + options.delete("type") + EOL
-
-    if options.has_key?("length")
-      buf += "Content-Length: " + options.delete("length").to_s + EOL
-    end
-
-    if options.has_key?("language")
-      buf += "Content-Language: " + options.delete("language") + EOL
-    end
-
-    if options.has_key?("expires")
-      buf += "Expires: " + CGI::rfc1123_date( options.delete("expires") ) + EOL
-    end
-
-    if options.has_key?("cookie")
-      if options["cookie"].kind_of?(String) or
-           options["cookie"].kind_of?(Cookie)
-        buf += "Set-Cookie: " + options.delete("cookie").to_s + EOL
-      elsif options["cookie"].kind_of?(Array)
-        options.delete("cookie").each{|cookie|
-          buf += "Set-Cookie: " + cookie.to_s + EOL
-        }
-      elsif options["cookie"].kind_of?(Hash)
-        options.delete("cookie").each_value{|cookie|
-          buf += "Set-Cookie: " + cookie.to_s + EOL
-        }
-      end
-    end
-    if @output_cookies
-      for cookie in @output_cookies
-        buf += "Set-Cookie: " + cookie.to_s + EOL
-      end
-    end
-
-    options.each{|key, value|
-      buf += key + ": " + value.to_s + EOL
-    }
-
-    if defined?(MOD_RUBY)
-      table = Apache::request.headers_out
-      buf.scan(/([^:]+): (.+)#{EOL}/n){ |name, value|
-        warn sprintf("name:%s value:%s\n", name, value) if $DEBUG
-        case name
-        when 'Set-Cookie'
-          table.add(name, value)
-        when /^status$/ni
-          Apache::request.status_line = value
-          Apache::request.status = value.to_i
-        when /^content-type$/ni
-          Apache::request.content_type = value
-        when /^content-encoding$/ni
-          Apache::request.content_encoding = value
-        when /^location$/ni
-	  if Apache::request.status == 200
-	    Apache::request.status = 302
-	  end
-          Apache::request.headers_out[name] = value
-        else
-          Apache::request.headers_out[name] = value
-        end
-      }
-      Apache::request.send_http_header
-      ''
-    else
-      buf + EOL
-    end
-
-  end # header()
-
-
-  # Print an HTTP header and body to $DEFAULT_OUTPUT ($>)
-  #
-  # The header is provided by +options+, as for #header().
-  # The body of the document is that returned by the passed-
-  # in block.  This block takes no arguments.  It is required.
-  #
-  #   cgi = CGI.new
-  #   cgi.out{ "string" }
-  #     # Content-Type: text/html
-  #     # Content-Length: 6
-  #     #
-  #     # string
-  # 
-  #   cgi.out("text/plain") { "string" }
-  #     # Content-Type: text/plain
-  #     # Content-Length: 6
-  #     #
-  #     # string
-  # 
-  #   cgi.out("nph"        => true,
-  #           "status"     => "OK",  # == "200 OK"
-  #           "server"     => ENV['SERVER_SOFTWARE'],
-  #           "connection" => "close",
-  #           "type"       => "text/html",
-  #           "charset"    => "iso-2022-jp",
-  #             # Content-Type: text/html; charset=iso-2022-jp
-  #           "language"   => "ja",
-  #           "expires"    => Time.now + (3600 * 24 * 30),
-  #           "cookie"     => [cookie1, cookie2],
-  #           "my_header1" => "my_value",
-  #           "my_header2" => "my_value") { "string" }
-  # 
-  # Content-Length is automatically calculated from the size of
-  # the String returned by the content block.
-  #
-  # If ENV['REQUEST_METHOD'] == "HEAD", then only the header
-  # is outputted (the content block is still required, but it
-  # is ignored).
-  # 
-  # If the charset is "iso-2022-jp" or "euc-jp" or "shift_jis" then
-  # the content is converted to this charset, and the language is set 
-  # to "ja".
-  def out(options = "text/html") # :yield:
-
-    options = { "type" => options } if options.kind_of?(String)
-    content = yield
-
-    if options.has_key?("charset")
-      require "nkf"
-      case options["charset"]
-      when /iso-2022-jp/ni
-        content = NKF::nkf('-m0 -x -j', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      when /euc-jp/ni
-        content = NKF::nkf('-m0 -x -e', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      when /shift_jis/ni
-        content = NKF::nkf('-m0 -x -s', content)
-        options["language"] = "ja" unless options.has_key?("language")
-      end
-    end
-
-    options["length"] = content.length.to_s
-    output = stdoutput
-    output.binmode if defined? output.binmode
-    output.print header(options)
-    output.print content unless "HEAD" == env_table['REQUEST_METHOD']
-  end
-
-
-  # Print an argument or list of arguments to the default output stream
-  #
-  #   cgi = CGI.new
-  #   cgi.print    # default:  cgi.print == $DEFAULT_OUTPUT.print
-  def print(*options)
-    stdoutput.print(*options)
-  end
-
-  require "delegate"
-
-  # Class representing an HTTP cookie.
-  #
-  # In addition to its specific fields and methods, a Cookie instance
-  # is a delegator to the array of its values.
-  #
-  # See RFC 2965.
-  #
-  # == Examples of use
-  #   cookie1 = CGI::Cookie::new("name", "value1", "value2", ...)
-  #   cookie1 = CGI::Cookie::new("name" => "name", "value" => "value")
-  #   cookie1 = CGI::Cookie::new('name'    => 'name',
-  #                              'value'   => ['value1', 'value2', ...],
-  #                              'path'    => 'path',   # optional
-  #                              'domain'  => 'domain', # optional
-  #                              'expires' => Time.now, # optional
-  #                              'secure'  => true      # optional
-  #                             )
-  # 
-  #   cgi.out("cookie" => [cookie1, cookie2]) { "string" }
-  # 
-  #   name    = cookie1.name
-  #   values  = cookie1.value
-  #   path    = cookie1.path
-  #   domain  = cookie1.domain
-  #   expires = cookie1.expires
-  #   secure  = cookie1.secure
-  # 
-  #   cookie1.name    = 'name'
-  #   cookie1.value   = ['value1', 'value2', ...]
-  #   cookie1.path    = 'path'
-  #   cookie1.domain  = 'domain'
-  #   cookie1.expires = Time.now + 30
-  #   cookie1.secure  = true
-  class Cookie < DelegateClass(Array)
-
-    # Create a new CGI::Cookie object.
-    #
-    # The contents of the cookie can be specified as a +name+ and one
-    # or more +value+ arguments.  Alternatively, the contents can
-    # be specified as a single hash argument.  The possible keywords of
-    # this hash are as follows:
-    #
-    # name:: the name of the cookie.  Required.
-    # value:: the cookie's value or list of values.
-    # path:: the path for which this cookie applies.  Defaults to the
-    #        base directory of the CGI script.
-    # domain:: the domain for which this cookie applies.
-    # expires:: the time at which this cookie expires, as a +Time+ object.
-    # secure:: whether this cookie is a secure cookie or not (default to
-    #          false).  Secure cookies are only transmitted to HTTPS 
-    #          servers.
-    #
-    # These keywords correspond to attributes of the cookie object.
-    def initialize(name = "", *value)
-      options = if name.kind_of?(String)
-                  { "name" => name, "value" => value }
-                else
-                  name
-                end
-      unless options.has_key?("name")
-        raise ArgumentError, "`name' required"
-      end
-
-      @name = options["name"]
-      @value = Array(options["value"])
-      # simple support for IE
-      if options["path"]
-        @path = options["path"]
-      else
-        %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
-        @path = ($1 or "")
-      end
-      @domain = options["domain"]
-      @expires = options["expires"]
-      @secure = options["secure"] == true ? true : false
-
-      super(@value)
-    end
-
-    attr_accessor("name", "value", "path", "domain", "expires")
-    attr_reader("secure")
-
-    # Set whether the Cookie is a secure cookie or not.
-    #
-    # +val+ must be a boolean.
-    def secure=(val)
-      @secure = val if val == true or val == false
-      @secure
-    end
-
-    # Convert the Cookie to its string representation.
-    def to_s
-      buf = ""
-      buf += @name + '='
-
-      if @value.kind_of?(String)
-        buf += CGI::escape(@value)
-      else
-        buf += @value.collect{|v| CGI::escape(v) }.join("&")
-      end
-
-      if @domain
-        buf += '; domain=' + @domain
-      end
-
-      if @path
-        buf += '; path=' + @path
-      end
-
-      if @expires
-        buf += '; expires=' + CGI::rfc1123_date(@expires)
-      end
-
-      if @secure == true
-        buf += '; secure'
-      end
-
-      buf
-    end
-
-  end # class Cookie
-
-
-  # Parse a raw cookie string into a hash of cookie-name=>Cookie
-  # pairs.
-  #
-  #   cookies = CGI::Cookie::parse("raw_cookie_string")
-  #     # { "name1" => cookie1, "name2" => cookie2, ... }
-  #
-  def Cookie::parse(raw_cookie)
-    cookies = Hash.new([])
-    return cookies unless raw_cookie
-
-    raw_cookie.split(/[;,]\s?/).each do |pairs|
-      name, values = pairs.split('=',2)
-      next unless name and values
-      name = CGI::unescape(name)
-      values ||= ""
-      values = values.split('&').collect{|v| CGI::unescape(v) }
-      if cookies.has_key?(name)
-        values = cookies[name].value + values
-      end
-      cookies[name] = Cookie::new({ "name" => name, "value" => values })
-    end
-
-    cookies
-  end
-
-  # Parse an HTTP query string into a hash of key=>value pairs.
-  #
-  #   params = CGI::parse("query_string")
-  #     # {"name1" => ["value1", "value2", ...],
-  #     #  "name2" => ["value1", "value2", ...], ... }
-  #
-  def CGI::parse(query)
-    params = Hash.new([].freeze)
-
-    query.split(/[&;]/n).each do |pairs|
-      key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) }
-      if params.has_key?(key)
-        params[key].push(value)
-      else
-        params[key] = [value]
-      end
-    end
-
-    params
-  end
-
-  # Mixin module. It provides the follow functionality groups:
-  #
-  # 1. Access to CGI environment variables as methods.  See 
-  #    documentation to the CGI class for a list of these variables.
-  #
-  # 2. Access to cookies, including the cookies attribute.
-  #
-  # 3. Access to parameters, including the params attribute, and overloading
-  #    [] to perform parameter value lookup by key.
-  #
-  # 4. The initialize_query method, for initialising the above
-  #    mechanisms, handling multipart forms, and allowing the
-  #    class to be used in "offline" mode.
-  #
-  module QueryExtension
-
-    %w[ CONTENT_LENGTH SERVER_PORT ].each do |env|
-      define_method(env.sub(/^HTTP_/n, '').downcase) do
-        (val = env_table[env]) && Integer(val)
-      end
-    end
-
-    %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
-        PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST
-        REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME
-        SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE
-
-        HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING
-        HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_HOST
-        HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT ].each do |env|
-      define_method(env.sub(/^HTTP_/n, '').downcase) do
-        env_table[env]
-      end
-    end
-
-    # Get the raw cookies as a string.
-    def raw_cookie
-      env_table["HTTP_COOKIE"]
-    end
-
-    # Get the raw RFC2965 cookies as a string.
-    def raw_cookie2
-      env_table["HTTP_COOKIE2"]
-    end
-
-    # Get the cookies as a hash of cookie-name=>Cookie pairs.
-    attr_accessor("cookies")
-
-    # Get the parameters as a hash of name=>values pairs, where
-    # values is an Array.
-    attr("params")
-
-    # Set all the parameters.
-    def params=(hash)
-      @params.clear
-      @params.update(hash)
-    end
-
-    def read_multipart(boundary, content_length)
-      params = Hash.new([])
-      boundary = "--" + boundary
-      quoted_boundary = Regexp.quote(boundary, "n")
-      buf = ""
-      bufsize = 10 * 1024
-      boundary_end=""
-
-      # start multipart/form-data
-      stdinput.binmode if defined? stdinput.binmode
-      boundary_size = boundary.size + EOL.size
-      content_length -= boundary_size
-      status = stdinput.read(boundary_size)
-      if nil == status
-        raise EOFError, "no content body"
-      elsif boundary + EOL != status
-        raise EOFError, "bad content body"
-      end
-
-      loop do
-        head = nil
-        if 10240 < content_length
-          require "tempfile"
-          body = Tempfile.new("CGI")
-        else
-          begin
-            require "stringio"
-            body = StringIO.new
-          rescue LoadError
-            require "tempfile"
-            body = Tempfile.new("CGI")
-          end
-        end
-        body.binmode if defined? body.binmode
-
-        until head and /#{quoted_boundary}(?:#{EOL}|--)/n.match(buf)
-
-          if (not head) and /#{EOL}#{EOL}/n.match(buf)
-            buf = buf.sub(/\A((?:.|\n)*?#{EOL})#{EOL}/n) do
-              head = $1.dup
-              ""
-            end
-            next
-          end
-
-          if head and ( (EOL + boundary + EOL).size < buf.size )
-            body.print buf[0 ... (buf.size - (EOL + boundary + EOL).size)]
-            buf[0 ... (buf.size - (EOL + boundary + EOL).size)] = ""
-          end
-
-          c = if bufsize < content_length
-                stdinput.read(bufsize)
-              else
-                stdinput.read(content_length)
-              end
-          if c.nil? || c.empty?
-            raise EOFError, "bad content body"
-          end
-          buf.concat(c)
-          content_length -= c.size
-        end
-
-        buf = buf.sub(/\A((?:.|\n)*?)(?:[\r\n]{1,2})?#{quoted_boundary}([\r\n]{1,2}|--)/n) do
-          body.print $1
-          if "--" == $2
-            content_length = -1
-          end
-          boundary_end = $2.dup
-          ""
-        end
-
-        body.rewind
-
-        /Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni.match(head)
-	filename = ($1 or $2 or "")
-	if /Mac/ni.match(env_table['HTTP_USER_AGENT']) and
-	    /Mozilla/ni.match(env_table['HTTP_USER_AGENT']) and
-	    (not /MSIE/ni.match(env_table['HTTP_USER_AGENT']))
-	  filename = CGI::unescape(filename)
-	end
-        
-        /Content-Type: ([^\s]*)/ni.match(head)
-        content_type = ($1 or "")
-
-        (class << body; self; end).class_eval do
-          alias local_path path
-          define_method(:original_filename) {filename.dup.taint}
-          define_method(:content_type) {content_type.dup.taint}
-        end
-
-        /Content-Disposition:.* name="?([^\";\s]*)"?/ni.match(head)
-        name = $1.dup
-
-        if params.has_key?(name)
-          params[name].push(body)
-        else
-          params[name] = [body]
-        end
-        break if buf.size == 0
-        break if content_length == -1
-      end
-      raise EOFError, "bad boundary end of body part" unless boundary_end=~/--/
-
-      params
-    end # read_multipart
-    private :read_multipart
-
-    # offline mode. read name=value pairs on standard input.
-    def read_from_cmdline
-      require "shellwords"
-
-      string = unless ARGV.empty?
-        ARGV.join(' ')
-      else
-        if STDIN.tty?
-          STDERR.print(
-            %|(offline mode: enter name=value pairs on standard input)\n|
-          )
-        end
-        readlines.join(' ').gsub(/\n/n, '')
-      end.gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26')
-
-      words = Shellwords.shellwords(string)
-
-      if words.find{|x| /=/n.match(x) }
-        words.join('&')
-      else
-        words.join('+')
-      end
-    end
-    private :read_from_cmdline
-
-    # Initialize the data from the query.
-    #
-    # Handles multipart forms (in particular, forms that involve file uploads).
-    # Reads query parameters in the @params field, and cookies into @cookies.
-    def initialize_query()
-      if ("POST" == env_table['REQUEST_METHOD']) and
-         %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n.match(env_table['CONTENT_TYPE'])
-        boundary = $1.dup
-        @multipart = true
-        @params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH']))
-      else
-        @multipart = false
-        @params = CGI::parse(
-                    case env_table['REQUEST_METHOD']
-                    when "GET", "HEAD"
-                      if defined?(MOD_RUBY)
-                        Apache::request.args or ""
-                      else
-                        env_table['QUERY_STRING'] or ""
-                      end
-                    when "POST"
-                      stdinput.binmode if defined? stdinput.binmode
-                      stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''
-                    else
-                      read_from_cmdline
-                    end
-                  )
-      end
-
-      @cookies = CGI::Cookie::parse((env_table['HTTP_COOKIE'] or env_table['COOKIE']))
-    end
-    private :initialize_query
-
-    def multipart?
-      @multipart
-    end
-
-    module Value    # :nodoc:
-      def set_params(params)
-        @params = params
-      end
-      def [](idx, *args)
-        if args.size == 0
-          warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-          @params[idx]
-        else
-          super[idx,*args]
-        end
-      end
-      def first
-        warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-        self
-      end
-      alias last first
-      def to_a
-        @params || [self]
-      end
-      alias to_ary to_a   	# to be rhs of multiple assignment
-    end
-
-    # Get the value for the parameter with a given key.
-    #
-    # If the parameter has multiple values, only the first will be 
-    # retrieved; use #params() to get the array of values.
-    def [](key)
-      params = @params[key]
-      return '' unless params
-      value = params[0]
-      if @multipart
-        if value
-          return value
-        elsif defined? StringIO
-          StringIO.new("")
-        else
-          Tempfile.new("CGI")
-        end
-      else
-        str = if value then value.dup else "" end
-        str.extend(Value)
-        str.set_params(params)
-        str
-      end
-    end
-
-    # Return all parameter keys as an array.
-    def keys(*args)
-      @params.keys(*args)
-    end
-
-    # Returns true if a given parameter key exists in the query.
-    def has_key?(*args)
-      @params.has_key?(*args)
-    end
-    alias key? has_key?
-    alias include? has_key?
-
-  end # QueryExtension
-
-
-  # Prettify (indent) an HTML string.
-  #
-  # +string+ is the HTML string to indent.  +shift+ is the indentation
-  # unit to use; it defaults to two spaces.
-  #
-  #   print CGI::pretty("<HTML><BODY></BODY></HTML>")
-  #     # <HTML>
-  #     #   <BODY>
-  #     #   </BODY>
-  #     # </HTML>
-  # 
-  #   print CGI::pretty("<HTML><BODY></BODY></HTML>", "\t")
-  #     # <HTML>
-  #     #         <BODY>
-  #     #         </BODY>
-  #     # </HTML>
-  #
-  def CGI::pretty(string, shift = "  ")
-    lines = string.gsub(/(?!\A)<(?:.|\n)*?>/n, "\n\\0").gsub(/<(?:.|\n)*?>(?!\n)/n, "\\0\n")
-    end_pos = 0
-    while end_pos = lines.index(/^<\/(\w+)/n, end_pos)
-      element = $1.dup
-      start_pos = lines.rindex(/^\s*<#{element}/ni, end_pos)
-      lines[start_pos ... end_pos] = "__" + lines[start_pos ... end_pos].gsub(/\n(?!\z)/n, "\n" + shift) + "__"
-    end
-    lines.gsub(/^((?:#{Regexp::quote(shift)})*)__(?=<\/?\w)/n, '\1')
-  end
-
-
-  # Base module for HTML-generation mixins.
-  #
-  # Provides methods for code generation for tags following
-  # the various DTD element types.
-  module TagMaker # :nodoc:
-
-    # Generate code for an element with required start and end tags.
-    #
-    #   - -
-    def nn_element_def(element)
-      nOE_element_def(element, <<-END)
-          if block_given?
-            yield.to_s
-          else
-            ""
-          end +
-          "</#{element.upcase}>"
-      END
-    end
-
-    # Generate code for an empty element.
-    #
-    #   - O EMPTY
-    def nOE_element_def(element, append = nil)
-      s = <<-END
-          "<#{element.upcase}" + attributes.collect{|name, value|
-            next unless value
-            " " + CGI::escapeHTML(name) +
-            if true == value
-              ""
-            else
-              '="' + CGI::escapeHTML(value) + '"'
-            end
-          }.to_s + ">"
-      END
-      s.sub!(/\Z/, " +") << append if append
-      s
-    end
-
-    # Generate code for an element for which the end (and possibly the
-    # start) tag is optional.
-    #
-    #   O O or - O
-    def nO_element_def(element)
-      nOE_element_def(element, <<-END)
-          if block_given?
-            yield.to_s + "</#{element.upcase}>"
-          else
-            ""
-          end
-      END
-    end
-
-  end # TagMaker
-
-
-  #
-  # Mixin module providing HTML generation methods.
-  #
-  # For example,
-  #   cgi.a("http://www.example.com") { "Example" }
-  #     # => "<A HREF=\"http://www.example.com\">Example</A>"
-  #
-  # Modules Http3, Http4, etc., contain more basic HTML-generation methods
-  # (:title, :center, etc.).
-  #
-  # See class CGI for a detailed example. 
-  #
-  module HtmlExtension
-
-
-    # Generate an Anchor element as a string.
-    #
-    # +href+ can either be a string, giving the URL
-    # for the HREF attribute, or it can be a hash of
-    # the element's attributes.
-    #
-    # The body of the element is the string returned by the no-argument
-    # block passed in.
-    #
-    #   a("http://www.example.com") { "Example" }
-    #     # => "<A HREF=\"http://www.example.com\">Example</A>"
-    #
-    #   a("HREF" => "http://www.example.com", "TARGET" => "_top") { "Example" }
-    #     # => "<A HREF=\"http://www.example.com\" TARGET=\"_top\">Example</A>"
-    #
-    def a(href = "") # :yield:
-      attributes = if href.kind_of?(String)
-                     { "HREF" => href }
-                   else
-                     href
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-    # Generate a Document Base URI element as a String. 
-    #
-    # +href+ can either by a string, giving the base URL for the HREF
-    # attribute, or it can be a has of the element's attributes.
-    #
-    # The passed-in no-argument block is ignored.
-    #
-    #   base("http://www.example.com/cgi")
-    #     # => "<BASE HREF=\"http://www.example.com/cgi\">"
-    def base(href = "") # :yield:
-      attributes = if href.kind_of?(String)
-                     { "HREF" => href }
-                   else
-                     href
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-    # Generate a BlockQuote element as a string.
-    #
-    # +cite+ can either be a string, give the URI for the source of
-    # the quoted text, or a hash, giving all attributes of the element,
-    # or it can be omitted, in which case the element has no attributes.
-    #
-    # The body is provided by the passed-in no-argument block
-    #
-    #   blockquote("http://www.example.com/quotes/foo.html") { "Foo!" }
-    #     #=> "<BLOCKQUOTE CITE=\"http://www.example.com/quotes/foo.html\">Foo!</BLOCKQUOTE>
-    def blockquote(cite = nil)  # :yield:
-      attributes = if cite.kind_of?(String)
-                     { "CITE" => cite }
-                   else
-                     cite or ""
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-
-    # Generate a Table Caption element as a string.
-    #
-    # +align+ can be a string, giving the alignment of the caption
-    # (one of top, bottom, left, or right).  It can be a hash of
-    # all the attributes of the element.  Or it can be omitted.
-    #
-    # The body of the element is provided by the passed-in no-argument block.
-    #
-    #   caption("left") { "Capital Cities" }
-    #     # => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
-    def caption(align = nil) # :yield:
-      attributes = if align.kind_of?(String)
-                     { "ALIGN" => align }
-                   else
-                     align or ""
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-
-    # Generate a Checkbox Input element as a string.
-    #
-    # The attributes of the element can be specified as three arguments,
-    # +name+, +value+, and +checked+.  +checked+ is a boolean value;
-    # if true, the CHECKED attribute will be included in the element.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   checkbox("name")
-    #     # = checkbox("NAME" => "name")
-    # 
-    #   checkbox("name", "value")
-    #     # = checkbox("NAME" => "name", "VALUE" => "value")
-    # 
-    #   checkbox("name", "value", true)
-    #     # = checkbox("NAME" => "name", "VALUE" => "value", "CHECKED" => true)
-    def checkbox(name = "", value = nil, checked = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "checkbox", "NAME" => name,
-                       "VALUE" => value, "CHECKED" => checked }
-                   else
-                     name["TYPE"] = "checkbox"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a sequence of checkbox elements, as a String.
-    #
-    # The checkboxes will all have the same +name+ attribute.
-    # Each checkbox is followed by a label.
-    # There will be one checkbox for each value.  Each value
-    # can be specified as a String, which will be used both
-    # as the value of the VALUE attribute and as the label
-    # for that checkbox.  A single-element array has the
-    # same effect.
-    #
-    # Each value can also be specified as a three-element array.
-    # The first element is the VALUE attribute; the second is the
-    # label; and the third is a boolean specifying whether this
-    # checkbox is CHECKED.
-    #
-    # Each value can also be specified as a two-element
-    # array, by omitting either the value element (defaults
-    # to the same as the label), or the boolean checked element
-    # (defaults to false).
-    #
-    #   checkbox_group("name", "foo", "bar", "baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
-    # 
-    #   checkbox_group("name", ["foo"], ["bar", true], "baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
-    # 
-    #   checkbox_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="1">Foo
-    #     # <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="2">Bar
-    #     # <INPUT TYPE="checkbox" NAME="name" VALUE="Baz">Baz
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => ["foo", "bar", "baz"])
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => [["foo"], ["bar", true], "baz"])
-    # 
-    #   checkbox_group("NAME" => "name",
-    #                    "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    def checkbox_group(name = "", *values)
-      if name.kind_of?(Hash)
-        values = name["VALUES"]
-        name = name["NAME"]
-      end
-      values.collect{|value|
-        if value.kind_of?(String)
-          checkbox(name, value) + value
-        else
-          if value[value.size - 1] == true
-            checkbox(name, value[0], true) +
-            value[value.size - 2]
-          else
-            checkbox(name, value[0]) +
-            value[value.size - 1]
-          end
-        end
-      }.to_s
-    end
-
-
-    # Generate an File Upload Input element as a string.
-    #
-    # The attributes of the element can be specified as three arguments,
-    # +name+, +size+, and +maxlength+.  +maxlength+ is the maximum length
-    # of the file's _name_, not of the file's _contents_.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # See #multipart_form() for forms that include file uploads.
-    #
-    #   file_field("name")
-    #     # <INPUT TYPE="file" NAME="name" SIZE="20">
-    # 
-    #   file_field("name", 40)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40">
-    # 
-    #   file_field("name", 40, 100)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40" MAXLENGTH="100">
-    # 
-    #   file_field("NAME" => "name", "SIZE" => 40)
-    #     # <INPUT TYPE="file" NAME="name" SIZE="40">
-    def file_field(name = "", size = 20, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "file", "NAME" => name,
-                       "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "file"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-
-    # Generate a Form element as a string.
-    #
-    # +method+ should be either "get" or "post", and defaults to the latter.
-    # +action+ defaults to the current CGI script name.  +enctype+
-    # defaults to "application/x-www-form-urlencoded".  
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # See also #multipart_form() for forms that include file uploads.
-    #
-    #   form{ "string" }
-    #     # <FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("get") { "string" }
-    #     # <FORM METHOD="get" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("get", "url") { "string" }
-    #     # <FORM METHOD="get" ACTION="url" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
-    # 
-    #   form("METHOD" => "post", "ENCTYPE" => "enctype") { "string" }
-    #     # <FORM METHOD="post" ENCTYPE="enctype">string</FORM>
-    def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded")
-      attributes = if method.kind_of?(String)
-                     { "METHOD" => method, "ACTION" => action,
-                       "ENCTYPE" => enctype } 
-                   else
-                     unless method.has_key?("METHOD")
-                       method["METHOD"] = "post"
-                     end
-                     unless method.has_key?("ENCTYPE")
-                       method["ENCTYPE"] = enctype
-                     end
-                     method
-                   end
-      if block_given?
-        body = yield
-      else
-        body = ""
-      end
-      if @output_hidden
-        body += @output_hidden.collect{|k,v|
-          "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
-        }.to_s
-      end
-      super(attributes){body}
-    end
-
-    # Generate a Hidden Input element as a string.
-    #
-    # The attributes of the element can be specified as two arguments,
-    # +name+ and +value+.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   hidden("name")
-    #     # <INPUT TYPE="hidden" NAME="name">
-    # 
-    #   hidden("name", "value")
-    #     # <INPUT TYPE="hidden" NAME="name" VALUE="value">
-    # 
-    #   hidden("NAME" => "name", "VALUE" => "reset", "ID" => "foo")
-    #     # <INPUT TYPE="hidden" NAME="name" VALUE="value" ID="foo">
-    def hidden(name = "", value = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "hidden", "NAME" => name, "VALUE" => value }
-                   else
-                     name["TYPE"] = "hidden"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a top-level HTML element as a string.
-    #
-    # The attributes of the element are specified as a hash.  The
-    # pseudo-attribute "PRETTY" can be used to specify that the generated
-    # HTML string should be indented.  "PRETTY" can also be specified as
-    # a string as the sole argument to this method.  The pseudo-attribute
-    # "DOCTYPE", if given, is used as the leading DOCTYPE SGML tag; it
-    # should include the entire text of this tag, including angle brackets.
-    #
-    # The body of the html element is supplied as a block.
-    # 
-    #   html{ "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML>string</HTML>
-    # 
-    #   html("LANG" => "ja") { "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML LANG="ja">string</HTML>
-    # 
-    #   html("DOCTYPE" => false) { "string" }
-    #     # <HTML>string</HTML>
-    # 
-    #   html("DOCTYPE" => '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">') { "string" }
-    #     # <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><HTML>string</HTML>
-    # 
-    #   html("PRETTY" => "  ") { "<BODY></BODY>" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-    #     # <HTML>
-    #     #   <BODY>
-    #     #   </BODY>
-    #     # </HTML>
-    # 
-    #   html("PRETTY" => "\t") { "<BODY></BODY>" }
-    #     # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-    #     # <HTML>
-    #     #         <BODY>
-    #     #         </BODY>
-    #     # </HTML>
-    # 
-    #   html("PRETTY") { "<BODY></BODY>" }
-    #     # = html("PRETTY" => "  ") { "<BODY></BODY>" }
-    # 
-    #   html(if $VERBOSE then "PRETTY" end) { "HTML string" }
-    #
-    def html(attributes = {}) # :yield:
-      if nil == attributes
-        attributes = {}
-      elsif "PRETTY" == attributes
-        attributes = { "PRETTY" => true }
-      end
-      pretty = attributes.delete("PRETTY")
-      pretty = "  " if true == pretty
-      buf = ""
-
-      if attributes.has_key?("DOCTYPE")
-        if attributes["DOCTYPE"]
-          buf += attributes.delete("DOCTYPE")
-        else
-          attributes.delete("DOCTYPE")
-        end
-      else
-        buf += doctype
-      end
-
-      if block_given?
-        buf += super(attributes){ yield }
-      else
-        buf += super(attributes)
-      end
-
-      if pretty
-        CGI::pretty(buf, pretty)
-      else
-        buf
-      end
-
-    end
-
-    # Generate an Image Button Input element as a string.
-    #
-    # +src+ is the URL of the image to use for the button.  +name+ 
-    # is the input name.  +alt+ is the alternative text for the image.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    # 
-    #   image_button("url")
-    #     # <INPUT TYPE="image" SRC="url">
-    # 
-    #   image_button("url", "name", "string")
-    #     # <INPUT TYPE="image" SRC="url" NAME="name" ALT="string">
-    # 
-    #   image_button("SRC" => "url", "ATL" => "strng")
-    #     # <INPUT TYPE="image" SRC="url" ALT="string">
-    def image_button(src = "", name = nil, alt = nil)
-      attributes = if src.kind_of?(String)
-                     { "TYPE" => "image", "SRC" => src, "NAME" => name,
-                       "ALT" => alt }
-                   else
-                     src["TYPE"] = "image"
-                     src["SRC"] ||= ""
-                     src
-                   end
-      input(attributes)
-    end
-
-
-    # Generate an Image element as a string.
-    #
-    # +src+ is the URL of the image.  +alt+ is the alternative text for
-    # the image.  +width+ is the width of the image, and +height+ is
-    # its height.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   img("src", "alt", 100, 50)
-    #     # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
-    # 
-    #   img("SRC" => "src", "ALT" => "alt", "WIDTH" => 100, "HEIGHT" => 50)
-    #     # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
-    def img(src = "", alt = "", width = nil, height = nil)
-      attributes = if src.kind_of?(String)
-                     { "SRC" => src, "ALT" => alt }
-                   else
-                     src
-                   end
-      attributes["WIDTH"] = width.to_s if width
-      attributes["HEIGHT"] = height.to_s if height
-      super(attributes)
-    end
-
-
-    # Generate a Form element with multipart encoding as a String.
-    #
-    # Multipart encoding is used for forms that include file uploads.
-    #
-    # +action+ is the action to perform.  +enctype+ is the encoding
-    # type, which defaults to "multipart/form-data".
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   multipart_form{ "string" }
-    #     # <FORM METHOD="post" ENCTYPE="multipart/form-data">string</FORM>
-    # 
-    #   multipart_form("url") { "string" }
-    #     # <FORM METHOD="post" ACTION="url" ENCTYPE="multipart/form-data">string</FORM>
-    def multipart_form(action = nil, enctype = "multipart/form-data")
-      attributes = if action == nil
-                     { "METHOD" => "post", "ENCTYPE" => enctype } 
-                   elsif action.kind_of?(String)
-                     { "METHOD" => "post", "ACTION" => action,
-                       "ENCTYPE" => enctype } 
-                   else
-                     unless action.has_key?("METHOD")
-                       action["METHOD"] = "post"
-                     end
-                     unless action.has_key?("ENCTYPE")
-                       action["ENCTYPE"] = enctype
-                     end
-                     action
-                   end
-      if block_given?
-        form(attributes){ yield }
-      else
-        form(attributes)
-      end
-    end
-
-
-    # Generate a Password Input element as a string.
-    #
-    # +name+ is the name of the input field.  +value+ is its default
-    # value.  +size+ is the size of the input field display.  +maxlength+
-    # is the maximum length of the inputted password.
-    #
-    # Alternatively, attributes can be specified as a hash.
-    #
-    #   password_field("name")
-    #     # <INPUT TYPE="password" NAME="name" SIZE="40">
-    # 
-    #   password_field("name", "value")
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="40">
-    # 
-    #   password_field("password", "value", 80, 200)
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
-    # 
-    #   password_field("NAME" => "name", "VALUE" => "value")
-    #     # <INPUT TYPE="password" NAME="name" VALUE="value">
-    def password_field(name = "", value = nil, size = 40, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "password", "NAME" => name,
-                       "VALUE" => value, "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "password"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-    # Generate a Select element as a string.
-    #
-    # +name+ is the name of the element.  The +values+ are the options that
-    # can be selected from the Select menu.  Each value can be a String or
-    # a one, two, or three-element Array.  If a String or a one-element
-    # Array, this is both the value of that option and the text displayed for
-    # it.  If a three-element Array, the elements are the option value, displayed
-    # text, and a boolean value specifying whether this option starts as selected.
-    # The two-element version omits either the option value (defaults to the same
-    # as the display text) or the boolean selected specifier (defaults to false).
-    #
-    # The attributes and options can also be specified as a hash.  In this
-    # case, options are specified as an array of values as described above,
-    # with the hash key of "VALUES".
-    #
-    #   popup_menu("name", "foo", "bar", "baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="foo">foo</OPTION>
-    #     #   <OPTION VALUE="bar">bar</OPTION>
-    #     #   <OPTION VALUE="baz">baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("name", ["foo"], ["bar", true], "baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="foo">foo</OPTION>
-    #     #   <OPTION VALUE="bar" SELECTED>bar</OPTION>
-    #     #   <OPTION VALUE="baz">baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <SELECT NAME="name">
-    #     #   <OPTION VALUE="1">Foo</OPTION>
-    #     #   <OPTION SELECTED VALUE="2">Bar</OPTION>
-    #     #   <OPTION VALUE="Baz">Baz</OPTION>
-    #     # </SELECT>
-    # 
-    #   popup_menu("NAME" => "name", "SIZE" => 2, "MULTIPLE" => true,
-    #               "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    #     # <SELECT NAME="name" MULTIPLE SIZE="2">
-    #     #   <OPTION VALUE="1">Foo</OPTION>
-    #     #   <OPTION SELECTED VALUE="2">Bar</OPTION>
-    #     #   <OPTION VALUE="Baz">Baz</OPTION>
-    #     # </SELECT>
-    def popup_menu(name = "", *values)
-
-      if name.kind_of?(Hash)
-        values   = name["VALUES"]
-        size     = name["SIZE"].to_s if name["SIZE"]
-        multiple = name["MULTIPLE"]
-        name     = name["NAME"]
-      else
-        size = nil
-        multiple = nil
-      end
-
-      select({ "NAME" => name, "SIZE" => size,
-               "MULTIPLE" => multiple }){
-        values.collect{|value|
-          if value.kind_of?(String)
-            option({ "VALUE" => value }){ value }
-          else
-            if value[value.size - 1] == true
-              option({ "VALUE" => value[0], "SELECTED" => true }){
-                value[value.size - 2]
-              }
-            else
-              option({ "VALUE" => value[0] }){
-                value[value.size - 1]
-              }
-            end
-          end
-        }.to_s
-      }
-
-    end
-
-    # Generates a radio-button Input element.
-    #
-    # +name+ is the name of the input field.  +value+ is the value of
-    # the field if checked.  +checked+ specifies whether the field
-    # starts off checked.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   radio_button("name", "value")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value">
-    # 
-    #   radio_button("name", "value", true)
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value" CHECKED>
-    # 
-    #   radio_button("NAME" => "name", "VALUE" => "value", "ID" => "foo")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="value" ID="foo">
-    def radio_button(name = "", value = nil, checked = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "radio", "NAME" => name,
-                       "VALUE" => value, "CHECKED" => checked }
-                   else
-                     name["TYPE"] = "radio"
-                     name
-                   end
-      input(attributes)
-    end
-
-    # Generate a sequence of radio button Input elements, as a String.
-    #
-    # This works the same as #checkbox_group().  However, it is not valid
-    # to have more than one radiobutton in a group checked.
-    # 
-    #   radio_group("name", "foo", "bar", "baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
-    # 
-    #   radio_group("name", ["foo"], ["bar", true], "baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
-    #     # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="bar">bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
-    # 
-    #   radio_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="1">Foo
-    #     # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="2">Bar
-    #     # <INPUT TYPE="radio" NAME="name" VALUE="Baz">Baz
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => ["foo", "bar", "baz"])
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => [["foo"], ["bar", true], "baz"])
-    # 
-    #   radio_group("NAME" => "name",
-    #                 "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
-    def radio_group(name = "", *values)
-      if name.kind_of?(Hash)
-        values = name["VALUES"]
-        name = name["NAME"]
-      end
-      values.collect{|value|
-        if value.kind_of?(String)
-          radio_button(name, value) + value
-        else
-          if value[value.size - 1] == true
-            radio_button(name, value[0], true) +
-            value[value.size - 2]
-          else
-            radio_button(name, value[0]) +
-            value[value.size - 1]
-          end
-        end
-      }.to_s
-    end
-
-    # Generate a reset button Input element, as a String.
-    #
-    # This resets the values on a form to their initial values.  +value+
-    # is the text displayed on the button. +name+ is the name of this button.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   reset
-    #     # <INPUT TYPE="reset">
-    # 
-    #   reset("reset")
-    #     # <INPUT TYPE="reset" VALUE="reset">
-    # 
-    #   reset("VALUE" => "reset", "ID" => "foo")
-    #     # <INPUT TYPE="reset" VALUE="reset" ID="foo">
-    def reset(value = nil, name = nil)
-      attributes = if (not value) or value.kind_of?(String)
-                     { "TYPE" => "reset", "VALUE" => value, "NAME" => name }
-                   else
-                     value["TYPE"] = "reset"
-                     value
-                   end
-      input(attributes)
-    end
-
-    alias scrolling_list popup_menu
-
-    # Generate a submit button Input element, as a String.
-    #
-    # +value+ is the text to display on the button.  +name+ is the name
-    # of the input.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   submit
-    #     # <INPUT TYPE="submit">
-    # 
-    #   submit("ok")
-    #     # <INPUT TYPE="submit" VALUE="ok">
-    # 
-    #   submit("ok", "button1")
-    #     # <INPUT TYPE="submit" VALUE="ok" NAME="button1">
-    # 
-    #   submit("VALUE" => "ok", "NAME" => "button1", "ID" => "foo")
-    #     # <INPUT TYPE="submit" VALUE="ok" NAME="button1" ID="foo">
-    def submit(value = nil, name = nil)
-      attributes = if (not value) or value.kind_of?(String)
-                     { "TYPE" => "submit", "VALUE" => value, "NAME" => name }
-                   else
-                     value["TYPE"] = "submit"
-                     value
-                   end
-      input(attributes)
-    end
-
-    # Generate a text field Input element, as a String.
-    #
-    # +name+ is the name of the input field.  +value+ is its initial
-    # value.  +size+ is the size of the input area.  +maxlength+
-    # is the maximum length of input accepted.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    #   text_field("name")
-    #     # <INPUT TYPE="text" NAME="name" SIZE="40">
-    # 
-    #   text_field("name", "value")
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="40">
-    # 
-    #   text_field("name", "value", 80)
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80">
-    # 
-    #   text_field("name", "value", 80, 200)
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
-    # 
-    #   text_field("NAME" => "name", "VALUE" => "value")
-    #     # <INPUT TYPE="text" NAME="name" VALUE="value">
-    def text_field(name = "", value = nil, size = 40, maxlength = nil)
-      attributes = if name.kind_of?(String)
-                     { "TYPE" => "text", "NAME" => name, "VALUE" => value,
-                       "SIZE" => size.to_s }
-                   else
-                     name["TYPE"] = "text"
-                     name
-                   end
-      attributes["MAXLENGTH"] = maxlength.to_s if maxlength
-      input(attributes)
-    end
-
-    # Generate a TextArea element, as a String.
-    #
-    # +name+ is the name of the textarea.  +cols+ is the number of
-    # columns and +rows+ is the number of rows in the display.
-    #
-    # Alternatively, the attributes can be specified as a hash.
-    #
-    # The body is provided by the passed-in no-argument block
-    #
-    #   textarea("name")
-    #      # = textarea("NAME" => "name", "COLS" => 70, "ROWS" => 10)
-    #
-    #   textarea("name", 40, 5)
-    #      # = textarea("NAME" => "name", "COLS" => 40, "ROWS" => 5)
-    def textarea(name = "", cols = 70, rows = 10)  # :yield:
-      attributes = if name.kind_of?(String)
-                     { "NAME" => name, "COLS" => cols.to_s,
-                       "ROWS" => rows.to_s }
-                   else
-                     name
-                   end
-      if block_given?
-        super(attributes){ yield }
-      else
-        super(attributes)
-      end
-    end
-
-  end # HtmlExtension
-
-
-  # Mixin module for HTML version 3 generation methods.
-  module Html3 # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG
-          DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP
-          APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE
-          STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE
-          CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
-          ISINDEX META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr
-          th td ]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html3
-
-
-  # Mixin module for HTML version 4 generation methods.
-  module Html4 # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ TT I B BIG SMALL EM STRONG DFN CODE SAMP KBD
-        VAR CITE ABBR ACRONYM SUB SUP SPAN BDO ADDRESS DIV MAP OBJECT
-        H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT OPTGROUP
-        FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT
-        TEXTAREA FORM A BLOCKQUOTE CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
-          COLGROUP TR TH TD HEAD]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4
-
-
-  # Mixin module for HTML version 4 transitional generation methods.
-  module Html4Tr # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      extend TagMaker
-      methods = ""
-      # - -
-      for element in %w[ TT I B U S STRIKE BIG SMALL EM STRONG DFN
-          CODE SAMP KBD VAR CITE ABBR ACRONYM FONT SUB SUP SPAN BDO
-          ADDRESS DIV CENTER MAP OBJECT APPLET H1 H2 H3 H4 H5 H6 PRE Q
-          INS DEL DL OL UL DIR MENU LABEL SELECT OPTGROUP FIELDSET
-          LEGEND BUTTON TABLE IFRAME NOFRAMES TITLE STYLE SCRIPT
-          NOSCRIPT TEXTAREA FORM A BLOCKQUOTE CAPTION ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
-          COL ISINDEX META ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # O O or - O
-      for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
-          COLGROUP TR TH TD HEAD ]
-        methods += <<-BEGIN + nO_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4Tr
-
-
-  # Mixin module for generating HTML version 4 with framesets.
-  module Html4Fr # :nodoc:
-
-    # The DOCTYPE declaration for this version of HTML
-    def doctype
-      %|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">|
-    end
-
-    # Initialise the HTML generation methods for this version.
-    def element_init
-      methods = ""
-      # - -
-      for element in %w[ FRAMESET ]
-        methods += <<-BEGIN + nn_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-
-      # - O EMPTY
-      for element in %w[ FRAME ]
-        methods += <<-BEGIN + nOE_element_def(element) + <<-END
-          def #{element.downcase}(attributes = {})
-        BEGIN
-          end
-        END
-      end
-      eval(methods)
-    end
-
-  end # Html4Fr
-
-
-  # Creates a new CGI instance.
-  #
-  # +type+ specifies which version of HTML to load the HTML generation
-  # methods for.  The following versions of HTML are supported:
-  #
-  # html3:: HTML 3.x
-  # html4:: HTML 4.0
-  # html4Tr:: HTML 4.0 Transitional
-  # html4Fr:: HTML 4.0 with Framesets
-  #
-  # If not specified, no HTML generation methods will be loaded.
-  #
-  # If the CGI object is not created in a standard CGI call environment
-  # (that is, it can't locate REQUEST_METHOD in its environment), then
-  # it will run in "offline" mode.  In this mode, it reads its parameters
-  # from the command line or (failing that) from standard input.  Otherwise,
-  # cookies and other parameters are parsed automatically from the standard
-  # CGI locations, which varies according to the REQUEST_METHOD.
-  def initialize(type = "query")
-    if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE")
-      Apache.request.setup_cgi_env
-    end
-
-    extend QueryExtension
-    @multipart = false
-    if defined?(CGI_PARAMS)
-      warn "do not use CGI_PARAMS and CGI_COOKIES"
-      @params = CGI_PARAMS.dup
-      @cookies = CGI_COOKIES.dup
-    else
-      initialize_query()  # set @params, @cookies
-    end
-    @output_cookies = nil
-    @output_hidden = nil
-
-    case type
-    when "html3"
-      extend Html3
-      element_init()
-      extend HtmlExtension
-    when "html4"
-      extend Html4
-      element_init()
-      extend HtmlExtension
-    when "html4Tr"
-      extend Html4Tr
-      element_init()
-      extend HtmlExtension
-    when "html4Fr"
-      extend Html4Tr
-      element_init()
-      extend Html4Fr
-      element_init()
-      extend HtmlExtension
-    end
-  end
-
-end   # class CGI
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session.rb
deleted file mode 100644
index 5568b28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session.rb
+++ /dev/null
@@ -1,492 +0,0 @@
-#
-# cgi/session.rb - session support for cgi scripts
-#
-# Copyright (C) 2001  Yukihiro "Matz" Matsumoto
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-#
-# Author: Yukihiro "Matz" Matsumoto
-#
-# Documentation: William Webber (william at williamwebber.com)
-#
-# == Overview
-#
-# This file provides the +CGI::Session+ class, which provides session
-# support for CGI scripts.  A session is a sequence of HTTP requests
-# and responses linked together and associated with a single client.  
-# Information associated with the session is stored
-# on the server between requests.  A session id is passed between client
-# and server with every request and response, transparently
-# to the user.  This adds state information to the otherwise stateless
-# HTTP request/response protocol.
-#
-# See the documentation to the +CGI::Session+ class for more details
-# and examples of usage.  See cgi.rb for the +CGI+ class itself.
-
-require 'cgi'
-require 'tmpdir'
-
-class CGI
-
-  # Class representing an HTTP session.  See documentation for the file 
-  # cgi/session.rb for an introduction to HTTP sessions.
-  #
-  # == Lifecycle
-  #
-  # A CGI::Session instance is created from a CGI object.  By default,
-  # this CGI::Session instance will start a new session if none currently
-  # exists, or continue the current session for this client if one does
-  # exist.  The +new_session+ option can be used to either always or
-  # never create a new session.  See #new() for more details.
-  #
-  # #delete() deletes a session from session storage.  It
-  # does not however remove the session id from the client.  If the client
-  # makes another request with the same id, the effect will be to start
-  # a new session with the old session's id.
-  #
-  # == Setting and retrieving session data.
-  #
-  # The Session class associates data with a session as key-value pairs.
-  # This data can be set and retrieved by indexing the Session instance 
-  # using '[]', much the same as hashes (although other hash methods
-  # are not supported).
-  #
-  # When session processing has been completed for a request, the
-  # session should be closed using the close() method.  This will
-  # store the session's state to persistent storage.  If you want
-  # to store the session's state to persistent storage without
-  # finishing session processing for this request, call the update()
-  # method.
-  #
-  # == Storing session state
-  #
-  # The caller can specify what form of storage to use for the session's 
-  # data with the +database_manager+ option to CGI::Session::new.  The
-  # following storage classes are provided as part of the standard library:
-  #
-  # CGI::Session::FileStore:: stores data as plain text in a flat file.  Only 
-  #                           works with String data.  This is the default 
-  #                           storage type.
-  # CGI::Session::MemoryStore:: stores data in an in-memory hash.  The data 
-  #                             only persists for as long as the current ruby 
-  #                             interpreter instance does.
-  # CGI::Session::PStore:: stores data in Marshalled format.  Provided by
-  #                        cgi/session/pstore.rb.  Supports data of any type, 
-  #                        and provides file-locking and transaction support.
-  #
-  # Custom storage types can also be created by defining a class with 
-  # the following methods:
-  #
-  #    new(session, options)
-  #    restore  # returns hash of session data.
-  #    update
-  #    close
-  #    delete
-  #
-  # Changing storage type mid-session does not work.  Note in particular
-  # that by default the FileStore and PStore session data files have the
-  # same name.  If your application switches from one to the other without
-  # making sure that filenames will be different
-  # and clients still have old sessions lying around in cookies, then
-  # things will break nastily!
-  #
-  # == Maintaining the session id.
-  #
-  # Most session state is maintained on the server.  However, a session
-  # id must be passed backwards and forwards between client and server
-  # to maintain a reference to this session state.
-  #
-  # The simplest way to do this is via cookies.  The CGI::Session class
-  # provides transparent support for session id communication via cookies
-  # if the client has cookies enabled.
-  # 
-  # If the client has cookies disabled, the session id must be included
-  # as a parameter of all requests sent by the client to the server.  The
-  # CGI::Session class in conjunction with the CGI class will transparently
-  # add the session id as a hidden input field to all forms generated
-  # using the CGI#form() HTML generation method.  No built-in support is
-  # provided for other mechanisms, such as URL re-writing.  The caller is
-  # responsible for extracting the session id from the session_id 
-  # attribute and manually encoding it in URLs and adding it as a hidden
-  # input to HTML forms created by other mechanisms.  Also, session expiry
-  # is not automatically handled.
-  #
-  # == Examples of use
-  #
-  # === Setting the user's name
-  #
-  #   require 'cgi'
-  #   require 'cgi/session'
-  #   require 'cgi/session/pstore'     # provides CGI::Session::PStore
-  #
-  #   cgi = CGI.new("html4")
-  #
-  #   session = CGI::Session.new(cgi,
-  #       'database_manager' => CGI::Session::PStore,  # use PStore
-  #       'session_key' => '_rb_sess_id',              # custom session key
-  #       'session_expires' => Time.now + 30 * 60,     # 30 minute timeout 
-  #       'prefix' => 'pstore_sid_')                   # PStore option
-  #   if cgi.has_key?('user_name') and cgi['user_name'] != ''
-  #       # coerce to String: cgi[] returns the 
-  #       # string-like CGI::QueryExtension::Value
-  #       session['user_name'] = cgi['user_name'].to_s
-  #   elsif !session['user_name']
-  #       session['user_name'] = "guest"
-  #   end
-  #   session.close
-  #
-  # === Creating a new session safely
-  #
-  #   require 'cgi'
-  #   require 'cgi/session'
-  #
-  #   cgi = CGI.new("html4")
-  #
-  #   # We make sure to delete an old session if one exists,
-  #   # not just to free resources, but to prevent the session 
-  #   # from being maliciously hijacked later on.
-  #   begin
-  #       session = CGI::Session.new(cgi, 'new_session' => false)      
-  #       session.delete                 
-  #   rescue ArgumentError  # if no old session
-  #   end
-  #   session = CGI::Session.new(cgi, 'new_session' => true)
-  #   session.close
-  #
-  class Session
-
-    class NoSession < RuntimeError #:nodoc:
-    end
-
-    # The id of this session.
-    attr_reader :session_id, :new_session
-
-    def Session::callback(dbman)  #:nodoc:
-      Proc.new{
-	dbman[0].close unless dbman.empty?
-      }
-    end
-
-    # Create a new session id.
-    #
-    # The session id is an MD5 hash based upon the time,
-    # a random number, and a constant string.  This routine
-    # is used internally for automatically generated
-    # session ids. 
-    def create_new_id
-      require 'digest/md5'
-      md5 = Digest::MD5::new
-      now = Time::now
-      md5.update(now.to_s)
-      md5.update(String(now.usec))
-      md5.update(String(rand(0)))
-      md5.update(String($$))
-      md5.update('foobar')
-      @new_session = true
-      md5.hexdigest
-    end
-    private :create_new_id
-
-    # Create a new CGI::Session object for +request+.
-    #
-    # +request+ is an instance of the +CGI+ class (see cgi.rb).
-    # +option+ is a hash of options for initialising this
-    # CGI::Session instance.  The following options are
-    # recognised:
-    #
-    # session_key:: the parameter name used for the session id.
-    #               Defaults to '_session_id'.
-    # session_id:: the session id to use.  If not provided, then
-    #              it is retrieved from the +session_key+ parameter
-    #              of the request, or automatically generated for
-    #              a new session.
-    # new_session:: if true, force creation of a new session.  If not set, 
-    #               a new session is only created if none currently
-    #               exists.  If false, a new session is never created,
-    #               and if none currently exists and the +session_id+
-    #               option is not set, an ArgumentError is raised.
-    # database_manager:: the name of the class providing storage facilities
-    #                    for session state persistence.  Built-in support
-    #                    is provided for +FileStore+ (the default),
-    #                    +MemoryStore+, and +PStore+ (from
-    #                    cgi/session/pstore.rb).  See the documentation for
-    #                    these classes for more details.
-    #
-    # The following options are also recognised, but only apply if the
-    # session id is stored in a cookie.
-    #
-    # session_expires:: the time the current session expires, as a 
-    #                   +Time+ object.  If not set, the session will terminate
-    #                   when the user's browser is closed.
-    # session_domain:: the hostname domain for which this session is valid.
-    #                  If not set, defaults to the hostname of the server.
-    # session_secure:: if +true+, this session will only work over HTTPS.
-    # session_path:: the path for which this session applies.  Defaults
-    #                to the directory of the CGI script.
-    #
-    # +option+ is also passed on to the session storage class initialiser; see
-    # the documentation for each session storage class for the options
-    # they support.
-    #                  
-    # The retrieved or created session is automatically added to +request+
-    # as a cookie, and also to its +output_hidden+ table, which is used
-    # to add hidden input elements to forms.  
-    #
-    # *WARNING* the +output_hidden+
-    # fields are surrounded by a <fieldset> tag in HTML 4 generation, which
-    # is _not_ invisible on many browsers; you may wish to disable the
-    # use of fieldsets with code similar to the following
-    # (see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37805)
-    #
-    #   cgi = CGI.new("html4")
-    #   class << cgi
-    #       undef_method :fieldset
-    #   end
-    #
-    def initialize(request, option={})
-      @new_session = false
-      session_key = option['session_key'] || '_session_id'
-      session_id = option['session_id']
-      unless session_id
-	if option['new_session']
-	  session_id = create_new_id
-	end
-      end
-      unless session_id
-	if request.key?(session_key)
-	  session_id = request[session_key]
-	  session_id = session_id.read if session_id.respond_to?(:read)
-	end
-	unless session_id
-	  session_id, = request.cookies[session_key]
-	end
-	unless session_id
-	  unless option.fetch('new_session', true)
-	    raise ArgumentError, "session_key `%s' should be supplied"%session_key
-	  end
-	  session_id = create_new_id
-	end
-      end
-      @session_id = session_id
-      dbman = option['database_manager'] || FileStore
-      begin
-        @dbman = dbman::new(self, option)
-      rescue NoSession
-        unless option.fetch('new_session', true)
-          raise ArgumentError, "invalid session_id `%s'"%session_id
-        end
-        session_id = @session_id = create_new_id
-        retry
-      end
-      request.instance_eval do
-	@output_hidden = {session_key => session_id} unless option['no_hidden']
-	@output_cookies =  [
-          Cookie::new("name" => session_key,
-		      "value" => session_id,
-		      "expires" => option['session_expires'],
-		      "domain" => option['session_domain'],
-		      "secure" => option['session_secure'],
-		      "path" => if option['session_path'] then
-				  option['session_path']
-		                elsif ENV["SCRIPT_NAME"] then
-				  File::dirname(ENV["SCRIPT_NAME"])
-				else
-				  ""
-				end)
-        ] unless option['no_cookies']
-      end
-      @dbprot = [@dbman]
-      ObjectSpace::define_finalizer(self, Session::callback(@dbprot))
-    end
-
-    # Retrieve the session data for key +key+.
-    def [](key)
-      @data ||= @dbman.restore
-      @data[key]
-    end
-
-    # Set the session date for key +key+.
-    def []=(key, val)
-      @write_lock ||= true
-      @data ||= @dbman.restore
-      @data[key] = val
-    end
-
-    # Store session data on the server.  For some session storage types,
-    # this is a no-op.
-    def update  
-      @dbman.update
-    end
-
-    # Store session data on the server and close the session storage.  
-    # For some session storage types, this is a no-op.
-    def close
-      @dbman.close
-      @dbprot.clear
-    end
-
-    # Delete the session from storage.  Also closes the storage.
-    #
-    # Note that the session's data is _not_ automatically deleted
-    # upon the session expiring.
-    def delete
-      @dbman.delete
-      @dbprot.clear
-    end
-
-    # File-based session storage class.
-    #
-    # Implements session storage as a flat file of 'key=value' values.
-    # This storage type only works directly with String values; the
-    # user is responsible for converting other types to Strings when
-    # storing and from Strings when retrieving.
-    class FileStore
-      # Create a new FileStore instance.
-      #
-      # This constructor is used internally by CGI::Session.  The
-      # user does not generally need to call it directly.
-      #
-      # +session+ is the session for which this instance is being
-      # created.  The session id must only contain alphanumeric
-      # characters; automatically generated session ids observe
-      # this requirement.
-      # 
-      # +option+ is a hash of options for the initialiser.  The
-      # following options are recognised:
-      #
-      # tmpdir:: the directory to use for storing the FileStore
-      #          file.  Defaults to Dir::tmpdir (generally "/tmp"
-      #          on Unix systems).
-      # prefix:: the prefix to add to the session id when generating
-      #          the filename for this session's FileStore file.
-      #          Defaults to the empty string.
-      # suffix:: the prefix to add to the session id when generating
-      #          the filename for this session's FileStore file.
-      #          Defaults to the empty string.
-      #
-      # This session's FileStore file will be created if it does
-      # not exist, or opened if it does.
-      def initialize(session, option={})
-	dir = option['tmpdir'] || Dir::tmpdir
-	prefix = option['prefix'] || ''
-	suffix = option['suffix'] || ''
-	id = session.session_id
-        require 'digest/md5'
-        md5 = Digest::MD5.hexdigest(id)[0,16]
-	@path = dir+"/"+prefix+md5+suffix
-	if File::exist? @path
-	  @hash = nil
-	else
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-	  @hash = {}
-	end
-      end
-
-      # Restore session state from the session's FileStore file.
-      #
-      # Returns the session state as a hash.
-      def restore
-	unless @hash
-	  @hash = {}
-          begin
-            lockf = File.open(@path+".lock", "r")
-            lockf.flock File::LOCK_SH
-	    f = File.open(@path, 'r')
-	    for line in f
-	      line.chomp!
-	      k, v = line.split('=',2)
-	      @hash[CGI::unescape(k)] = CGI::unescape(v)
-	    end
-          ensure
-	    f.close unless f.nil?
-            lockf.close if lockf
-          end
-	end
-	@hash
-      end
-
-      # Save session state to the session's FileStore file.
-      def update
-	return unless @hash
-        begin
-          lockf = File.open(@path+".lock", File::CREAT|File::RDWR, 0600)
-	  lockf.flock File::LOCK_EX
-          f = File.open(@path+".new", File::CREAT|File::TRUNC|File::WRONLY, 0600)
-   	  for k,v in @hash
-	    f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v))
-	  end
-          f.close
-          File.rename @path+".new", @path
-        ensure
-          f.close if f and !f.closed?
-          lockf.close if lockf
-        end
-      end
-
-      # Update and close the session's FileStore file.
-      def close
-	update
-      end
-
-      # Close and delete the session's FileStore file.
-      def delete
-        File::unlink @path+".lock" rescue nil
-        File::unlink @path+".new" rescue nil
-        File::unlink @path
-      rescue Errno::ENOENT
-      end
-    end
-
-    # In-memory session storage class.
-    #
-    # Implements session storage as a global in-memory hash.  Session
-    # data will only persist for as long as the ruby interpreter 
-    # instance does.
-    class MemoryStore
-      GLOBAL_HASH_TABLE = {} #:nodoc:
-
-      # Create a new MemoryStore instance.
-      #
-      # +session+ is the session this instance is associated with.
-      # +option+ is a list of initialisation options.  None are
-      # currently recognised.
-      def initialize(session, option=nil)
-	@session_id = session.session_id
-        unless GLOBAL_HASH_TABLE.key?(@session_id)
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-          GLOBAL_HASH_TABLE[@session_id] = {}
-        end
-      end
-
-      # Restore session state.
-      #
-      # Returns session data as a hash.
-      def restore
-	GLOBAL_HASH_TABLE[@session_id]
-      end
-
-      # Update session state.
-      #
-      # A no-op.
-      def update
-	# don't need to update; hash is shared
-      end
-
-      # Close session storage.
-      #
-      # A no-op.
-      def close
-	# don't need to close
-      end
-
-      # Delete the session state.
-      def delete
-	GLOBAL_HASH_TABLE.delete(@session_id)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session/pstore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session/pstore.rb
deleted file mode 100644
index bd93d0a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/cgi/session/pstore.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# cgi/session/pstore.rb - persistent storage of marshalled session data
-#
-# Documentation: William Webber (william at williamwebber.com)
-# 
-# == Overview
-#
-# This file provides the CGI::Session::PStore class, which builds
-# persistent of session data on top of the pstore library.  See
-# cgi/session.rb for more details on session storage managers.
-
-require 'cgi/session'
-require 'pstore'
-
-class CGI
-  class Session
-    # PStore-based session storage class.
-    #
-    # This builds upon the top-level PStore class provided by the
-    # library file pstore.rb.  Session data is marshalled and stored
-    # in a file.  File locking and transaction services are provided.
-    class PStore
-      # Create a new CGI::Session::PStore instance
-      #
-      # This constructor is used internally by CGI::Session.  The
-      # user does not generally need to call it directly.
-      #
-      # +session+ is the session for which this instance is being
-      # created.  The session id must only contain alphanumeric
-      # characters; automatically generated session ids observe
-      # this requirement.
-      # 
-      # +option+ is a hash of options for the initialiser.  The
-      # following options are recognised:
-      #
-      # tmpdir:: the directory to use for storing the PStore
-      #          file.  Defaults to Dir::tmpdir (generally "/tmp"
-      #          on Unix systems).
-      # prefix:: the prefix to add to the session id when generating
-      #          the filename for this session's PStore file.
-      #          Defaults to the empty string.
-      #
-      # This session's PStore file will be created if it does
-      # not exist, or opened if it does.
-      def initialize(session, option={})
-	dir = option['tmpdir'] || Dir::tmpdir
-	prefix = option['prefix'] || ''
-	id = session.session_id
-        require 'digest/md5'
-        md5 = Digest::MD5.hexdigest(id)[0,16]
-	path = dir+"/"+prefix+md5
-	path.untaint
-	if File::exist?(path)
-	  @hash = nil
-	else
-          unless session.new_session
-            raise CGI::Session::NoSession, "uninitialized session"
-          end
-	  @hash = {}
-	end
-	@p = ::PStore.new(path)
-	@p.transaction do |p|
-	  File.chmod(0600, p.path)
-	end
-      end
-
-      # Restore session state from the session's PStore file.
-      #
-      # Returns the session state as a hash.
-      def restore
-	unless @hash
-	  @p.transaction do
-           @hash = @p['hash'] || {}
-	  end
-	end
-	@hash
-      end
-
-      # Save session state to the session's PStore file.
-      def update 
-	@p.transaction do
-	    @p['hash'] = @hash
-	end
-      end
-
-      # Update and close the session's PStore file.
-      def close
-	update
-      end
-
-      # Close and delete the session's PStore file.
-      def delete
-	path = @p.path
-	File::unlink path
-      end
-
-    end
-  end
-end
-
-if $0 == __FILE__
-  # :enddoc:
-  STDIN.reopen("/dev/null")
-  cgi = CGI.new
-  session = CGI::Session.new(cgi, 'database_manager' => CGI::Session::PStore)
-  session['key'] = {'k' => 'v'}
-  puts session['key'].class
-  fail unless Hash === session['key']
-  puts session['key'].inspect
-  fail unless session['key'].inspect == '{"k"=>"v"}'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/complex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/complex.rb
deleted file mode 100644
index 9300f39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/complex.rb
+++ /dev/null
@@ -1,631 +0,0 @@
-#
-#   complex.rb - 
-#   	$Release Version: 0.5 $
-#   	$Revision: 1.3 $
-#   	$Date: 1998/07/08 10:05:28 $
-#   	by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# ----
-#
-# complex.rb implements the Complex class for complex numbers.  Additionally,
-# some methods in other Numeric classes are redefined or added to allow greater
-# interoperability with Complex numbers.
-#
-# Complex numbers can be created in the following manner:
-# - <tt>Complex(a, b)</tt>
-# - <tt>Complex.polar(radius, theta)</tt>
-#   
-# Additionally, note the following:
-# - <tt>Complex::I</tt> (the mathematical constant <i>i</i>)
-# - <tt>Numeric#im</tt> (e.g. <tt>5.im -> 0+5i</tt>)
-#
-# The following +Math+ module methods are redefined to handle Complex arguments.
-# They will work as normal with non-Complex arguments.
-#    sqrt exp cos sin tan log log10
-#    cosh sinh tanh acos asin atan atan2 acosh asinh atanh
-#
-
-
-#
-# Numeric is a built-in class on which Fixnum, Bignum, etc., are based.  Here
-# some methods are added so that all number types can be treated to some extent
-# as Complex numbers.
-#
-class Numeric
-  #
-  # Returns a Complex number <tt>(0,<i>self</i>)</tt>.
-  #
-  def im
-    Complex(0, self)
-  end
-  
-  #
-  # The real part of a complex number, i.e. <i>self</i>.
-  #
-  def real
-    self
-  end
-  
-  #
-  # The imaginary part of a complex number, i.e. 0.
-  #
-  def image
-    0
-  end
-  alias imag image
-  
-  #
-  # See Complex#arg.
-  #
-  def arg
-    if self >= 0
-      return 0
-    else
-      return Math::PI
-    end
-  end
-  alias angle arg
-  
-  #
-  # See Complex#polar.
-  #
-  def polar
-    return abs, arg
-  end
-  
-  #
-  # See Complex#conjugate (short answer: returns <i>self</i>).
-  #
-  def conjugate
-    self
-  end
-  alias conj conjugate
-end
-
-
-#
-# Creates a Complex number.  +a+ and +b+ should be Numeric.  The result will be
-# <tt>a+bi</tt>.
-#
-def Complex(a, b = 0)
-  if b == 0 and (a.kind_of?(Complex) or defined? Complex::Unify)
-    a
-  else
-    Complex.new( a.real-b.imag, a.imag+b.real )
-  end
-end
-
-#
-# The complex number class.  See complex.rb for an overview.
-#
-class Complex < Numeric
-  @RCS_ID='-$Id: complex.rb,v 1.3 1998/07/08 10:05:28 keiju Exp keiju $-'
-
-  undef step
-
-  def Complex.generic?(other) # :nodoc:
-    other.kind_of?(Integer) or
-    other.kind_of?(Float) or
-    (defined?(Rational) and other.kind_of?(Rational))
-  end
-
-  #
-  # Creates a +Complex+ number in terms of +r+ (radius) and +theta+ (angle).
-  #
-  def Complex.polar(r, theta)
-    Complex(r*Math.cos(theta), r*Math.sin(theta))
-  end
-
-  #
-  # Creates a +Complex+ number <tt>a</tt>+<tt>b</tt><i>i</i>.
-  #
-  def Complex.new!(a, b=0)
-    new(a,b)
-  end
-
-  def initialize(a, b)
-    raise TypeError, "non numeric 1st arg `#{a.inspect}'" if !a.kind_of? Numeric
-    raise TypeError, "`#{a.inspect}' for 1st arg" if a.kind_of? Complex
-    raise TypeError, "non numeric 2nd arg `#{b.inspect}'" if !b.kind_of? Numeric
-    raise TypeError, "`#{b.inspect}' for 2nd arg" if b.kind_of? Complex
-    @real = a
-    @image = b
-  end
-
-  #
-  # Addition with real or complex number.
-  #
-  def + (other)
-    if other.kind_of?(Complex)
-      re = @real + other.real
-      im = @image + other.image
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real + other, @image)
-    else
-      x , y = other.coerce(self)
-      x + y
-    end
-  end
-  
-  #
-  # Subtraction with real or complex number.
-  #
-  def - (other)
-    if other.kind_of?(Complex)
-      re = @real - other.real
-      im = @image - other.image
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real - other, @image)
-    else
-      x , y = other.coerce(self)
-      x - y
-    end
-  end
-  
-  #
-  # Multiplication with real or complex number.
-  #
-  def * (other)
-    if other.kind_of?(Complex)
-      re = @real*other.real - @image*other.image
-      im = @real*other.image + @image*other.real
-      Complex(re, im)
-    elsif Complex.generic?(other)
-      Complex(@real * other, @image * other)
-    else
-      x , y = other.coerce(self)
-      x * y
-    end
-  end
-  
-  #
-  # Division by real or complex number.
-  #
-  def / (other)
-    if other.kind_of?(Complex)
-      self*other.conjugate/other.abs2
-    elsif Complex.generic?(other)
-      Complex(@real/other, @image/other)
-    else
-      x, y = other.coerce(self)
-      x/y
-    end
-  end
-  
-  #
-  # Raise this complex number to the given (real or complex) power.
-  #
-  def ** (other)
-    if other == 0
-      return Complex(1)
-    end
-    if other.kind_of?(Complex)
-      r, theta = polar
-      ore = other.real
-      oim = other.image
-      nr = Math.exp!(ore*Math.log!(r) - oim * theta)
-      ntheta = theta*ore + oim*Math.log!(r)
-      Complex.polar(nr, ntheta)
-    elsif other.kind_of?(Integer)
-      if other > 0
-	x = self
-	z = x
-	n = other - 1
-	while n != 0
-	  while (div, mod = n.divmod(2)
-		 mod == 0)
-	    x = Complex(x.real*x.real - x.image*x.image, 2*x.real*x.image)
-	    n = div
-	  end
-	  z *= x
-	  n -= 1
-	end
-	z
-      else
-	if defined? Rational
-	  (Rational(1) / self) ** -other
-	else
-	  self ** Float(other)
-	end
-      end
-    elsif Complex.generic?(other)
-      r, theta = polar
-      Complex.polar(r**other, theta*other)
-    else
-      x, y = other.coerce(self)
-      x**y
-    end
-  end
-  
-  #
-  # Remainder after division by a real or complex number.
-  #
-  def % (other)
-    if other.kind_of?(Complex)
-      Complex(@real % other.real, @image % other.image)
-    elsif Complex.generic?(other)
-      Complex(@real % other, @image % other)
-    else
-      x , y = other.coerce(self)
-      x % y
-    end
-  end
-  
-#--
-#    def divmod(other)
-#      if other.kind_of?(Complex)
-#        rdiv, rmod = @real.divmod(other.real)
-#        idiv, imod = @image.divmod(other.image)
-#        return Complex(rdiv, idiv), Complex(rmod, rmod)
-#      elsif Complex.generic?(other)
-#        Complex(@real.divmod(other), @image.divmod(other))
-#      else
-#        x , y = other.coerce(self)
-#        x.divmod(y)
-#      end
-#    end
-#++
-  
-  #
-  # Absolute value (aka modulus): distance from the zero point on the complex
-  # plane.
-  #
-  def abs
-    Math.hypot(@real, @image)
-  end
-  
-  #
-  # Square of the absolute value.
-  #
-  def abs2
-    @real*@real + @image*@image
-  end
-  
-  #
-  # Argument (angle from (1,0) on the complex plane).
-  #
-  def arg
-    Math.atan2!(@image, @real)
-  end
-  alias angle arg
-  
-  #
-  # Returns the absolute value _and_ the argument.
-  #
-  def polar
-    return abs, arg
-  end
-  
-  #
-  # Complex conjugate (<tt>z + z.conjugate = 2 * z.real</tt>).
-  #
-  def conjugate
-    Complex(@real, - at image)
-  end
-  alias conj conjugate
-  
-  #
-  # Compares the absolute values of the two numbers.
-  #
-  def <=> (other)
-    self.abs <=> other.abs
-  end
-  
-  #
-  # Test for numerical equality (<tt>a == a + 0<i>i</i></tt>).
-  #
-  def == (other)
-    if other.kind_of?(Complex)
-      @real == other.real and @image == other.image
-    elsif Complex.generic?(other)
-      @real == other and @image == 0
-    else
-      other == self
-    end
-  end
-
-  #
-  # Attempts to coerce +other+ to a Complex number.
-  #
-  def coerce(other)
-    if Complex.generic?(other)
-      return Complex.new!(other), self
-    else
-      super
-    end
-  end
-
-  #
-  # FIXME
-  #
-  def denominator
-    @real.denominator.lcm(@image.denominator)
-  end
-  
-  #
-  # FIXME
-  #
-  def numerator
-    cd = denominator
-    Complex(@real.numerator*(cd/@real.denominator),
-	    @image.numerator*(cd/@image.denominator))
-  end
-  
-  #
-  # Standard string representation of the complex number.
-  #
-  def to_s
-    if @real != 0
-      if defined?(Rational) and @image.kind_of?(Rational) and @image.denominator != 1
-	if @image >= 0
-	  @real.to_s+"+("+ at image.to_s+")i"
-	else
-	  @real.to_s+"-("+(- at image).to_s+")i"
-	end
-      else
-	if @image >= 0
-	  @real.to_s+"+"+ at image.to_s+"i"
-	else
-	  @real.to_s+"-"+(- at image).to_s+"i"
-	end
-      end
-    else
-      if defined?(Rational) and @image.kind_of?(Rational) and @image.denominator != 1
-	"("+ at image.to_s+")i"
-      else
-	@image.to_s+"i"
-      end
-    end
-  end
-  
-  #
-  # Returns a hash code for the complex number.
-  #
-  def hash
-    @real.hash ^ @image.hash
-  end
-  
-  #
-  # Returns "<tt>Complex(<i>real</i>, <i>image</i>)</tt>".
-  #
-  def inspect
-    sprintf("Complex(%s, %s)", @real.inspect, @image.inspect)
-  end
-
-  
-  #
-  # +I+ is the imaginary number.  It exists at point (0,1) on the complex plane.
-  #
-  I = Complex(0,1)
-  
-  # The real part of a complex number.
-  attr :real
-
-  # The imaginary part of a complex number.
-  attr :image
-  alias imag image
-  
-end
-
-
-
-
-module Math
-  alias sqrt! sqrt
-  alias exp! exp
-  alias log! log
-  alias log10! log10
-  alias cos! cos
-  alias sin! sin
-  alias tan! tan
-  alias cosh! cosh
-  alias sinh! sinh
-  alias tanh! tanh
-  alias acos! acos
-  alias asin! asin
-  alias atan! atan
-  alias atan2! atan2
-  alias acosh! acosh
-  alias asinh! asinh
-  alias atanh! atanh  
-
-  # Redefined to handle a Complex argument.
-  def sqrt(z)
-    if Complex.generic?(z)
-      if z >= 0
-	sqrt!(z)
-      else
-	Complex(0,sqrt!(-z))
-      end
-    else
-      if z.image < 0
-	sqrt(z.conjugate).conjugate
-      else
-	r = z.abs
-	x = z.real
-	Complex( sqrt!((r+x)/2), sqrt!((r-x)/2) )
-      end
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def exp(z)
-    if Complex.generic?(z)
-      exp!(z)
-    else
-      Complex(exp!(z.real) * cos!(z.image), exp!(z.real) * sin!(z.image))
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def cos(z)
-    if Complex.generic?(z)
-      cos!(z)
-    else
-      Complex(cos!(z.real)*cosh!(z.image),
-	      -sin!(z.real)*sinh!(z.image))
-    end
-  end
-    
-  # Redefined to handle a Complex argument.
-  def sin(z)
-    if Complex.generic?(z)
-      sin!(z)
-    else
-      Complex(sin!(z.real)*cosh!(z.image),
-	      cos!(z.real)*sinh!(z.image))
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def tan(z)
-    if Complex.generic?(z)
-      tan!(z)
-    else
-      sin(z)/cos(z)
-    end
-  end
-
-  def sinh(z)
-    if Complex.generic?(z)
-      sinh!(z)
-    else
-      Complex( sinh!(z.real)*cos!(z.image), cosh!(z.real)*sin!(z.image) )
-    end
-  end
-
-  def cosh(z)
-    if Complex.generic?(z)
-      cosh!(z)
-    else
-      Complex( cosh!(z.real)*cos!(z.image), sinh!(z.real)*sin!(z.image) )
-    end
-  end
-
-  def tanh(z)
-    if Complex.generic?(z)
-      tanh!(z)
-    else
-      sinh(z)/cosh(z)
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def log(z)
-    if Complex.generic?(z) and z >= 0
-      log!(z)
-    else
-      r, theta = z.polar
-      Complex(log!(r.abs), theta)
-    end
-  end
-  
-  # Redefined to handle a Complex argument.
-  def log10(z)
-    if Complex.generic?(z)
-      log10!(z)
-    else
-      log(z)/log!(10)
-    end
-  end
-
-  def acos(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      acos!(z)
-    else
-      -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
-    end
-  end
-
-  def asin(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      asin!(z)
-    else
-      -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
-    end
-  end
-
-  def atan(z)
-    if Complex.generic?(z)
-      atan!(z)
-    else
-      1.0.im * log( (1.0.im+z) / (1.0.im-z) ) / 2.0
-    end
-  end
-
-  def atan2(y,x)
-    if Complex.generic?(y) and Complex.generic?(x)
-      atan2!(y,x)
-    else
-      -1.0.im * log( (x+1.0.im*y) / sqrt(x*x+y*y) )
-    end
-  end
-
-  def acosh(z)
-    if Complex.generic?(z) and z >= 1
-      acosh!(z)
-    else
-      log( z + sqrt(z*z-1.0) )
-    end
-  end
-
-  def asinh(z)
-    if Complex.generic?(z)
-      asinh!(z)
-    else
-      log( z + sqrt(1.0+z*z) )
-    end
-  end
-
-  def atanh(z)
-    if Complex.generic?(z) and z >= -1 and z <= 1
-      atanh!(z)
-    else
-      log( (1.0+z) / (1.0-z) ) / 2.0
-    end
-  end
-
-  module_function :sqrt!
-  module_function :sqrt
-  module_function :exp!
-  module_function :exp
-  module_function :log!
-  module_function :log
-  module_function :log10!
-  module_function :log10
-  module_function :cosh!
-  module_function :cosh
-  module_function :cos!
-  module_function :cos
-  module_function :sinh!
-  module_function :sinh
-  module_function :sin!
-  module_function :sin
-  module_function :tan!
-  module_function :tan
-  module_function :tanh!
-  module_function :tanh
-  module_function :acos!
-  module_function :acos
-  module_function :asin!
-  module_function :asin
-  module_function :atan!
-  module_function :atan
-  module_function :atan2!
-  module_function :atan2
-  module_function :acosh!
-  module_function :acosh
-  module_function :asinh!
-  module_function :asinh
-  module_function :atanh!
-  module_function :atanh
-  
-end
-
-# Documentation comments:
-#  - source: original (researched from pickaxe)
-#  - a couple of fixme's
-#  - RDoc output for Bignum etc. is a bit short, with nothing but an
-#    (undocumented) alias.  No big deal.
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/csv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/csv.rb
deleted file mode 100644
index 5fb1214..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/csv.rb
+++ /dev/null
@@ -1,992 +0,0 @@
-# CSV -- module for generating/parsing CSV data.
-# Copyright (C) 2000-2004  NAKAMURA, Hiroshi <nakahiro at sarion.co.jp>.
-  
-# $Id: csv.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-  
-  
-class CSV
-  class IllegalFormatError < RuntimeError; end
-
-  # deprecated
-  class Cell < String
-    def initialize(data = "", is_null = false)
-      super(is_null ? "" : data)
-    end
-
-    def data
-      to_s
-    end
-  end
-
-  # deprecated
-  class Row < Array
-  end
-
-  # Open a CSV formatted file for reading or writing.
-  #
-  # For reading.
-  #
-  # EXAMPLE 1
-  #   CSV.open('csvfile.csv', 'r') do |row|
-  #     p row
-  #   end
-  #
-  # EXAMPLE 2
-  #   reader = CSV.open('csvfile.csv', 'r')
-  #   row1 = reader.shift
-  #   row2 = reader.shift
-  #   if row2.empty?
-  #     p 'row2 not find.'
-  #   end
-  #   reader.close
-  #
-  # ARGS
-  #   filename: filename to parse.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   reader instance.  To get parse result, see CSV::Reader#each.
-  #
-  #
-  # For writing.
-  #
-  # EXAMPLE 1
-  #   CSV.open('csvfile.csv', 'w') do |writer|
-  #     writer << ['r1c1', 'r1c2']
-  #     writer << ['r2c1', 'r2c2']
-  #     writer << [nil, nil]
-  #   end
-  #
-  # EXAMPLE 2
-  #   writer = CSV.open('csvfile.csv', 'w')
-  #   writer << ['r1c1', 'r1c2'] << ['r2c1', 'r2c2'] << [nil, nil]
-  #   writer.close
-  #
-  # ARGS
-  #   filename: filename to generate.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   writer instance.  See CSV::Writer#<< and CSV::Writer#add_row to know how
-  #   to generate CSV string.
-  #
-  def CSV.open(path, mode, fs = nil, rs = nil, &block)
-    if mode == 'r' or mode == 'rb'
-      open_reader(path, mode, fs, rs, &block)
-    elsif mode == 'w' or mode == 'wb'
-      open_writer(path, mode, fs, rs, &block)
-    else
-      raise ArgumentError.new("'mode' must be 'r', 'rb', 'w', or 'wb'")
-    end
-  end
-
-  def CSV.foreach(path, rs = nil, &block)
-    open_reader(path, 'r', ',', rs, &block)
-  end
-
-  def CSV.read(path, length = nil, offset = nil)
-    CSV.parse(IO.read(path, length, offset))
-  end
-  
-  def CSV.readlines(path, rs = nil)
-    reader = open_reader(path, 'r', ',', rs)
-    begin
-      reader.collect { |row| row }
-    ensure
-      reader.close
-    end
-  end
-
-  def CSV.generate(path, fs = nil, rs = nil, &block)
-    open_writer(path, 'w', fs, rs, &block)
-  end
-
-  # Parse lines from given string or stream.  Return rows as an Array of Arrays.
-  def CSV.parse(str_or_readable, fs = nil, rs = nil, &block)
-    if File.exist?(str_or_readable)
-      STDERR.puts("CSV.parse(filename) is deprecated." +
-        "  Use CSV.open(filename, 'r') instead.")
-      return open_reader(str_or_readable, 'r', fs, rs, &block)
-    end
-    if block
-      CSV::Reader.parse(str_or_readable, fs, rs) do |row|
-        yield(row)
-      end
-      nil
-    else
-      CSV::Reader.create(str_or_readable, fs, rs).collect { |row| row }
-    end
-  end
-
-  # Parse a line from given string.  Bear in mind it parses ONE LINE.  Rest of
-  # the string is ignored for example "a,b\r\nc,d" => ['a', 'b'] and the
-  # second line 'c,d' is ignored.
-  #
-  # If you don't know whether a target string to parse is exactly 1 line or
-  # not, use CSV.parse_row instead of this method.
-  def CSV.parse_line(src, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    idx = 0
-    res_type = :DT_COLSEP
-    row = []
-    begin
-      while res_type == :DT_COLSEP
-        res_type, idx, cell = parse_body(src, idx, fs, rs)
-        row << cell
-      end
-    rescue IllegalFormatError
-      return []
-    end
-    row
-  end
-
-  # Create a line from cells.  each cell is stringified by to_s.
-  def CSV.generate_line(row, fs = nil, rs = nil)
-    if row.size == 0
-      return ''
-    end
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    res_type = :DT_COLSEP
-    result_str = ''
-    idx = 0
-    while true
-      generate_body(row[idx], result_str, fs, rs)
-      idx += 1
-      if (idx == row.size)
-        break
-      end
-      generate_separator(:DT_COLSEP, result_str, fs, rs)
-    end
-    result_str
-  end
-  
-  # Parse a line from string.  Consider using CSV.parse_line instead.
-  # To parse lines in CSV string, see EXAMPLE below.
-  #
-  # EXAMPLE
-  #   src = "a,b\r\nc,d\r\ne,f"
-  #   idx = 0
-  #   begin
-  #     parsed = []
-  #     parsed_cells, idx = CSV.parse_row(src, idx, parsed)
-  #     puts "Parsed #{ parsed_cells } cells."
-  #     p parsed
-  #   end while parsed_cells > 0
-  #
-  # ARGS
-  #   src: a CSV data to be parsed.  Must respond '[](idx)'.
-  #     src[](idx) must return a char. (Not a string such as 'a', but 97).
-  #     src[](idx_out_of_bounds) must return nil.  A String satisfies this
-  #     requirement.
-  #   idx: index of parsing location of 'src'.  0 origin.
-  #   out_dev: buffer for parsed cells.  Must respond '<<(aString)'.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   parsed_cells: num of parsed cells.
-  #   idx: index of next parsing location of 'src'.
-  #
-  def CSV.parse_row(src, idx, out_dev, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    idx_backup = idx
-    parsed_cells = 0
-    res_type = :DT_COLSEP
-    begin
-      while res_type != :DT_ROWSEP
-        res_type, idx, cell = parse_body(src, idx, fs, rs)
-        if res_type == :DT_EOS
-          if idx == idx_backup #((parsed_cells == 0) and cell.nil?)
-            return 0, 0
-          end
-          res_type = :DT_ROWSEP
-        end
-        parsed_cells += 1
-        out_dev << cell
-      end
-    rescue IllegalFormatError
-      return 0, 0
-    end
-    return parsed_cells, idx
-  end
-  
-  # Convert a line from cells data to string.  Consider using CSV.generate_line
-  # instead.  To generate multi-row CSV string, see EXAMPLE below.
-  #
-  # EXAMPLE
-  #   row1 = ['a', 'b']
-  #   row2 = ['c', 'd']
-  #   row3 = ['e', 'f']
-  #   src = [row1, row2, row3]
-  #   buf = ''
-  #   src.each do |row|
-  #     parsed_cells = CSV.generate_row(row, 2, buf)
-  #     puts "Created #{ parsed_cells } cells."
-  #   end
-  #   p buf
-  #
-  # ARGS
-  #   src: an Array of String to be converted to CSV string.  Must respond to
-  #     'size' and '[](idx)'.  src[idx] must return String.
-  #   cells: num of cells in a line.
-  #   out_dev: buffer for generated CSV string.  Must respond to '<<(string)'.
-  #   col_sep: Column separator.  ?, by default.  If you want to separate
-  #     fields with semicolon, give ?; here.
-  #   row_sep: Row separator.  nil by default.  nil means "\r\n or \n".  If you
-  #     want to separate records with \r, give ?\r here.
-  #
-  # RETURNS
-  #   parsed_cells: num of converted cells.
-  #
-  def CSV.generate_row(src, cells, out_dev, fs = nil, rs = nil)
-    fs ||= ','
-    if fs.is_a?(Fixnum)
-      fs = fs.chr
-    end
-    if !rs.nil? and rs.is_a?(Fixnum)
-      rs = rs.chr
-    end
-    src_size = src.size
-    if (src_size == 0)
-      if cells == 0
-        generate_separator(:DT_ROWSEP, out_dev, fs, rs)
-      end
-      return 0
-    end
-    res_type = :DT_COLSEP
-    parsed_cells = 0
-    generate_body(src[parsed_cells], out_dev, fs, rs)
-    parsed_cells += 1
-    while ((parsed_cells < cells) and (parsed_cells != src_size))
-      generate_separator(:DT_COLSEP, out_dev, fs, rs)
-      generate_body(src[parsed_cells], out_dev, fs, rs)
-      parsed_cells += 1
-    end
-    if (parsed_cells == cells)
-      generate_separator(:DT_ROWSEP, out_dev, fs, rs)
-    else
-      generate_separator(:DT_COLSEP, out_dev, fs, rs)
-    end
-    parsed_cells
-  end
-  
-  # Private class methods.
-  class << self
-  private
-
-    def open_reader(path, mode, fs, rs, &block)
-      file = File.open(path, mode)
-      if block
-        begin
-          CSV::Reader.parse(file, fs, rs) do |row|
-            yield(row)
-          end
-        ensure
-          file.close
-        end
-        nil
-      else
-        reader = CSV::Reader.create(file, fs, rs)
-        reader.close_on_terminate
-        reader
-      end
-    end
-
-    def open_writer(path, mode, fs, rs, &block)
-      file = File.open(path, mode)
-      if block
-        begin
-          CSV::Writer.generate(file, fs, rs) do |writer|
-            yield(writer)
-          end
-        ensure
-          file.close
-        end
-        nil
-      else
-        writer = CSV::Writer.create(file, fs, rs) 
-        writer.close_on_terminate
-        writer
-      end
-    end
-
-    def parse_body(src, idx, fs, rs)
-      fs_str = fs
-      fs_size = fs_str.size
-      rs_str = rs || "\n"
-      rs_size = rs_str.size
-      fs_idx = rs_idx = 0
-      cell = Cell.new
-      state = :ST_START
-      quoted = cr = false
-      c = nil
-      last_idx = idx
-      while c = src[idx]
-        unless quoted
-          fschar = (c == fs_str[fs_idx])
-          rschar = (c == rs_str[rs_idx])
-          # simple 1 char backtrack
-          if !fschar and c == fs_str[0]
-            fs_idx = 0
-            fschar = true
-            if state == :ST_START
-              state = :ST_DATA
-            elsif state == :ST_QUOTE
-              raise IllegalFormatError
-            end
-          end
-          if !rschar and c == rs_str[0]
-            rs_idx = 0
-            rschar = true
-            if state == :ST_START
-              state = :ST_DATA
-            elsif state == :ST_QUOTE
-              raise IllegalFormatError
-            end
-          end
-        end
-        if c == ?"
-          fs_idx = rs_idx = 0
-          if cr
-            raise IllegalFormatError
-          end
-          cell << src[last_idx, (idx - last_idx)]
-          last_idx = idx
-          if state == :ST_DATA
-            if quoted
-              last_idx += 1
-              quoted = false
-              state = :ST_QUOTE
-            else
-              raise IllegalFormatError
-            end
-          elsif state == :ST_QUOTE
-            cell << c.chr
-            last_idx += 1
-            quoted = true
-            state = :ST_DATA
-          else  # :ST_START
-            quoted = true
-            last_idx += 1
-            state = :ST_DATA
-          end
-        elsif fschar or rschar
-          if fschar
-            fs_idx += 1
-          end
-          if rschar
-            rs_idx += 1
-          end
-          sep = nil
-          if fs_idx == fs_size
-            if state == :ST_START and rs_idx > 0 and fs_idx < rs_idx
-              state = :ST_DATA
-            end
-            cell << src[last_idx, (idx - last_idx - (fs_size - 1))]
-            last_idx = idx
-            fs_idx = rs_idx = 0
-            if cr
-              raise IllegalFormatError
-            end
-            sep = :DT_COLSEP
-          elsif rs_idx == rs_size
-            if state == :ST_START and fs_idx > 0 and rs_idx < fs_idx
-              state = :ST_DATA
-            end
-            if !(rs.nil? and cr)
-              cell << src[last_idx, (idx - last_idx - (rs_size - 1))]
-              last_idx = idx
-            end
-            fs_idx = rs_idx = 0
-            sep = :DT_ROWSEP
-          end
-          if sep
-            if state == :ST_DATA
-              return sep, idx + 1, cell;
-            elsif state == :ST_QUOTE
-              return sep, idx + 1, cell;
-            else  # :ST_START
-              return sep, idx + 1, nil
-            end
-          end
-        elsif rs.nil? and c == ?\r
-          # special \r treatment for backward compatibility
-          fs_idx = rs_idx = 0
-          if cr
-            raise IllegalFormatError
-          end
-          cell << src[last_idx, (idx - last_idx)]
-          last_idx = idx
-          if quoted
-            state = :ST_DATA
-          else
-            cr = true
-          end
-        else
-          fs_idx = rs_idx = 0
-          if state == :ST_DATA or state == :ST_START
-            if cr
-              raise IllegalFormatError
-            end
-            state = :ST_DATA
-          else  # :ST_QUOTE
-            raise IllegalFormatError
-          end
-        end
-        idx += 1
-      end
-      if state == :ST_START
-        if fs_idx > 0 or rs_idx > 0
-          state = :ST_DATA
-        else
-          return :DT_EOS, idx, nil
-        end
-      elsif quoted
-        raise IllegalFormatError
-      elsif cr
-        raise IllegalFormatError
-      end
-      cell << src[last_idx, (idx - last_idx)]
-      last_idx = idx
-      return :DT_EOS, idx, cell
-    end
-  
-    def generate_body(cell, out_dev, fs, rs)
-      if cell.nil?
-        # empty
-      else
-        cell = cell.to_s
-        row_data = cell.dup
-        if (row_data.gsub!('"', '""') or
-            row_data.index(fs) or
-            (rs and row_data.index(rs)) or
-            (/[\r\n]/ =~ row_data) or
-            (cell.empty?))
-          out_dev << '"' << row_data << '"'
-        else
-          out_dev << row_data
-        end
-      end
-    end
-    
-    def generate_separator(type, out_dev, fs, rs)
-      case type
-      when :DT_COLSEP
-        out_dev << fs
-      when :DT_ROWSEP
-        out_dev << (rs || "\n")
-      end
-    end
-  end
-
-
-  # CSV formatted string/stream reader.
-  #
-  # EXAMPLE
-  #   read CSV lines untill the first column is 'stop'.
-  #
-  #   CSV::Reader.parse(File.open('bigdata', 'rb')) do |row|
-  #     p row
-  #     break if !row[0].is_null && row[0].data == 'stop'
-  #   end
-  #
-  class Reader
-    include Enumerable
-
-    # Parse CSV data and get lines.  Given block is called for each parsed row.
-    # Block value is always nil.  Rows are not cached for performance reason.
-    def Reader.parse(str_or_readable, fs = ',', rs = nil, &block)
-      reader = Reader.create(str_or_readable, fs, rs)
-      if block
-        reader.each do |row|
-          yield(row)
-        end
-        reader.close
-        nil
-      else
-        reader
-      end
-    end
-
-    # Returns reader instance.
-    def Reader.create(str_or_readable, fs = ',', rs = nil)
-      case str_or_readable
-      when IO
-        IOReader.new(str_or_readable, fs, rs)
-      when String
-        StringReader.new(str_or_readable, fs, rs)
-      else
-        IOReader.new(str_or_readable, fs, rs)
-      end
-    end
-
-    def each
-      while true
-        row = []
-        parsed_cells = get_row(row)
-        if parsed_cells == 0
-          break
-        end
-        yield(row)
-      end
-      nil
-    end
-
-    def shift
-      row = []
-      parsed_cells = get_row(row)
-      row
-    end
-
-    def close
-      terminate
-    end
-
-  private
-
-    def initialize(dev)
-      raise RuntimeError.new('Do not instanciate this class directly.')
-    end
-
-    def get_row(row)
-      raise NotImplementedError.new('Method get_row must be defined in a derived class.')
-    end
-
-    def terminate
-      # Define if needed.
-    end
-  end
-  
-
-  class StringReader < Reader
-    def initialize(string, fs = ',', rs = nil)
-      @fs = fs
-      @rs = rs
-      @dev = string
-      @idx = 0
-      if @dev[0, 3] == "\xef\xbb\xbf"
-        @idx += 3
-      end
-    end
-
-  private
-
-    def get_row(row)
-      parsed_cells, next_idx = CSV.parse_row(@dev, @idx, row, @fs, @rs)
-      if parsed_cells == 0 and next_idx == 0 and @idx != @dev.size
-        raise IllegalFormatError.new
-      end
-      @idx = next_idx
-      parsed_cells
-    end
-  end
-
-
-  class IOReader < Reader
-    def initialize(io, fs = ',', rs = nil)
-      @io = io
-      @fs = fs
-      @rs = rs
-      @dev = CSV::IOBuf.new(@io)
-      @idx = 0
-      if @dev[0] == 0xef and @dev[1] == 0xbb and @dev[2] == 0xbf
-        @idx += 3
-      end
-      @close_on_terminate = false
-    end
-
-    # Tell this reader to close the IO when terminated (Triggered by invoking
-    # CSV::IOReader#close).
-    def close_on_terminate
-      @close_on_terminate = true
-    end
-
-  private
-
-    def get_row(row)
-      parsed_cells, next_idx = CSV.parse_row(@dev, @idx, row, @fs, @rs)
-      if parsed_cells == 0 and next_idx == 0 and !@dev.is_eos?
-        raise IllegalFormatError.new
-      end
-      dropped = @dev.drop(next_idx)
-      @idx = next_idx - dropped
-      parsed_cells
-    end
-
-    def terminate
-      if @close_on_terminate
-        @io.close
-      end
-
-      if @dev
-        @dev.close
-      end
-    end
-  end
-
-
-  # CSV formatted string/stream writer.
-  #
-  # EXAMPLE
-  #   Write rows to 'csvout' file.
-  #
-  #   outfile = File.open('csvout', 'wb')
-  #   CSV::Writer.generate(outfile) do |csv|
-  #     csv << ['c1', nil, '', '"', "\r\n", 'c2']
-  #     ...
-  #   end
-  #
-  #   outfile.close
-  #
-  class Writer
-    # Given block is called with the writer instance.  str_or_writable must
-    # handle '<<(string)'.
-    def Writer.generate(str_or_writable, fs = ',', rs = nil, &block)
-      writer = Writer.create(str_or_writable, fs, rs)
-      if block
-        yield(writer)
-        writer.close
-        nil
-      else
-        writer
-      end
-    end
-
-    # str_or_writable must handle '<<(string)'.
-    def Writer.create(str_or_writable, fs = ',', rs = nil)
-      BasicWriter.new(str_or_writable, fs, rs)
-    end
-
-    # dump CSV stream to the device.  argument must be an Array of String.
-    def <<(row)
-      CSV.generate_row(row, row.size, @dev, @fs, @rs)
-      self
-    end
-    alias add_row <<
-
-    def close
-      terminate
-    end
-
-  private
-
-    def initialize(dev)
-      raise RuntimeError.new('Do not instanciate this class directly.')
-    end
-
-    def terminate
-      # Define if needed.
-    end
-  end
-
-
-  class BasicWriter < Writer
-    def initialize(str_or_writable, fs = ',', rs = nil)
-      @fs = fs
-      @rs = rs
-      @dev = str_or_writable
-      @close_on_terminate = false
-    end
-
-    # Tell this writer to close the IO when terminated (Triggered by invoking
-    # CSV::BasicWriter#close).
-    def close_on_terminate
-      @close_on_terminate = true
-    end
-
-  private
-
-    def terminate
-      if @close_on_terminate
-        @dev.close
-      end
-    end
-  end
-
-private
-
-  # Buffered stream.
-  #
-  # EXAMPLE 1 -- an IO.
-  #   class MyBuf < StreamBuf
-  #     # Do initialize myself before a super class.  Super class might call my
-  #     # method 'read'. (Could be awful for C++ user. :-)
-  #     def initialize(s)
-  #       @s = s
-  #       super()
-  #     end
-  #
-  #     # define my own 'read' method.
-  #     # CAUTION: Returning nil means EnfOfStream.
-  #     def read(size)
-  #       @s.read(size)
-  #     end
-  #
-  #     # release buffers. in Ruby which has GC, you do not have to call this...
-  #     def terminate
-  #       @s = nil
-  #       super()
-  #     end
-  #   end
-  #
-  #   buf = MyBuf.new(STDIN)
-  #   my_str = ''
-  #   p buf[0, 0]               # => '' (null string)
-  #   p buf[0]                  # => 97 (char code of 'a')
-  #   p buf[0, 1]               # => 'a'
-  #   my_str = buf[0, 5]
-  #   p my_str                  # => 'abcde' (5 chars)
-  #   p buf[0, 6]               # => "abcde\n" (6 chars)
-  #   p buf[0, 7]               # => "abcde\n" (6 chars)
-  #   p buf.drop(3)             # => 3 (dropped chars)
-  #   p buf.get(0, 2)           # => 'de' (2 chars)
-  #   p buf.is_eos?             # => false (is not EOS here)
-  #   p buf.drop(5)             # => 3 (dropped chars)
-  #   p buf.is_eos?             # => true (is EOS here)
-  #   p buf[0]                  # => nil (is EOS here)
-  #
-  # EXAMPLE 2 -- String.
-  #   This is a conceptual example.  No pros with this.
-  #
-  #   class StrBuf < StreamBuf
-  #     def initialize(s)
-  #       @str = s
-  #       @idx = 0
-  #       super()
-  #     end
-  #
-  #     def read(size)
-  #       str = @str[@idx, size]
-  #       @idx += str.size
-  #       str
-  #     end
-  #   end
-  #
-  class StreamBuf
-    # get a char or a partial string from the stream.
-    # idx: index of a string to specify a start point of a string to get.
-    # unlike String instance, idx < 0 returns nil.
-    # n: size of a string to get.
-    # returns char at idx if n == nil.
-    # returns a partial string, from idx to (idx + n) if n != nil.  at EOF,
-    # the string size could not equal to arg n.
-    def [](idx, n = nil) 
-      if idx < 0
-        return nil
-      end
-      if (idx_is_eos?(idx))
-        if n and (@offset + idx == buf_size(@cur_buf))
-          # Like a String, 'abc'[4, 1] returns nil and
-          # 'abc'[3, 1] returns '' not nil.
-          return ''
-        else
-          return nil
-        end
-      end
-      my_buf = @cur_buf
-      my_offset = @offset
-      next_idx = idx
-      while (my_offset + next_idx >= buf_size(my_buf))
-        if (my_buf == @buf_tail_idx)
-          unless add_buf
-            break
-          end
-        end
-        next_idx = my_offset + next_idx - buf_size(my_buf)
-        my_buf += 1
-        my_offset = 0
-      end
-      loc = my_offset + next_idx
-      if !n
-        return @buf_list[my_buf][loc]           # Fixnum of char code.
-      elsif (loc + n - 1 < buf_size(my_buf))
-        return @buf_list[my_buf][loc, n]        # String.
-      else # should do loop insted of (tail) recursive call...
-        res = @buf_list[my_buf][loc, BufSize]
-        size_added = buf_size(my_buf) - loc
-        if size_added > 0
-          idx += size_added
-          n -= size_added
-          ret = self[idx, n]
-          if ret
-            res << ret
-          end
-        end
-        return res
-      end
-    end
-    alias get []
-  
-    # drop a string from the stream.
-    # returns dropped size.  at EOF, dropped size might not equals to arg n.
-    # Once you drop the head of the stream, access to the dropped part via []
-    # or get returns nil.
-    def drop(n)
-      if is_eos?
-        return 0
-      end
-      size_dropped = 0
-      while (n > 0)
-        if !@is_eos or (@cur_buf != @buf_tail_idx)
-          if (@offset + n < buf_size(@cur_buf))
-            size_dropped += n
-            @offset += n
-            n = 0
-          else
-            size = buf_size(@cur_buf) - @offset
-            size_dropped += size
-            n -= size
-            @offset = 0
-            unless rel_buf
-              unless add_buf
-                break
-              end
-              @cur_buf = @buf_tail_idx
-            end
-          end
-        end
-      end
-      size_dropped
-    end
-  
-    def is_eos?
-      return idx_is_eos?(0)
-    end
-  
-    # WARN: Do not instantiate this class directly.  Define your own class
-    # which derives this class and define 'read' instance method.
-    def initialize
-      @buf_list = []
-      @cur_buf = @buf_tail_idx = -1
-      @offset = 0
-      @is_eos = false
-      add_buf
-      @cur_buf = @buf_tail_idx
-    end
-  
-  protected
-
-    def terminate
-      while (rel_buf); end
-    end
-  
-    # protected method 'read' must be defined in derived classes.
-    # CAUTION: Returning a string which size is not equal to 'size' means
-    # EnfOfStream.  When it is not at EOS, you must block the callee, try to
-    # read and return the sized string.
-    def read(size) # raise EOFError
-      raise NotImplementedError.new('Method read must be defined in a derived class.')
-    end
-  
-  private
-  
-    def buf_size(idx)
-      @buf_list[idx].size
-    end
-
-    def add_buf
-      if @is_eos
-        return false
-      end
-      begin
-        str_read = read(BufSize)
-      rescue EOFError
-        str_read = nil
-      rescue
-        terminate
-        raise
-      end
-      if str_read.nil?
-        @is_eos = true
-        @buf_list.push('')
-        @buf_tail_idx += 1
-        false
-      else
-        @buf_list.push(str_read)
-        @buf_tail_idx += 1
-        true
-      end
-    end
-  
-    def rel_buf
-      if (@cur_buf < 0)
-        return false
-      end
-      @buf_list[@cur_buf] = nil
-      if (@cur_buf == @buf_tail_idx)
-        @cur_buf = -1
-        return false
-      else
-        @cur_buf += 1
-        return true
-      end
-    end
-  
-    def idx_is_eos?(idx)
-      (@is_eos and ((@cur_buf < 0) or (@cur_buf == @buf_tail_idx)))
-    end
-  
-    BufSize = 1024 * 8
-  end
-
-  # Buffered IO.
-  #
-  # EXAMPLE
-  #   # File 'bigdata' could be a giga-byte size one!
-  #   buf = CSV::IOBuf.new(File.open('bigdata', 'rb'))
-  #   CSV::Reader.new(buf).each do |row|
-  #     p row
-  #     break if row[0].data == 'admin'
-  #   end
-  #
-  class IOBuf < StreamBuf
-    def initialize(s)
-      @s = s
-      super()
-    end
-  
-    def close
-      terminate
-    end
-
-  private
-
-    def read(size)
-      @s.read(size)
-    end
- 
-    def terminate
-      super()
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date.rb
deleted file mode 100644
index 10d8c94..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date.rb
+++ /dev/null
@@ -1,1708 +0,0 @@
-#
-# date.rb - date and time library
-#
-# Author: Tadayoshi Funaba 1998-2006
-#
-# Documentation: William Webber <william at williamwebber.com>
-#
-#--
-# $Id: date.rb,v 2.33 2007-12-22 14:41:34+09 tadf Exp $
-#++
-#
-# == Overview
-#
-# This file provides two classes for working with
-# dates and times.
-#
-# The first class, Date, represents dates.
-# It works with years, months, weeks, and days.
-# See the Date class documentation for more details.
-#
-# The second, DateTime, extends Date to include hours,
-# minutes, seconds, and fractions of a second.  It
-# provides basic support for time zones.  See the
-# DateTime class documentation for more details.
-#
-# === Ways of calculating the date.
-#
-# In common usage, the date is reckoned in years since or
-# before the Common Era (CE/BCE, also known as AD/BC), then
-# as a month and day-of-the-month within the current year.
-# This is known as the *Civil* *Date*, and abbreviated
-# as +civil+ in the Date class.
-#
-# Instead of year, month-of-the-year,  and day-of-the-month,
-# the date can also be reckoned in terms of year and
-# day-of-the-year.  This is known as the *Ordinal* *Date*,
-# and is abbreviated as +ordinal+ in the Date class.  (Note
-# that referring to this as the Julian date is incorrect.)
-#
-# The date can also be reckoned in terms of year, week-of-the-year,
-# and day-of-the-week.  This is known as the *Commercial*
-# *Date*, and is abbreviated as +commercial+ in the
-# Date class.  The commercial week runs Monday (day-of-the-week
-# 1) to Sunday (day-of-the-week 7), in contrast to the civil
-# week which runs Sunday (day-of-the-week 0) to Saturday
-# (day-of-the-week 6).  The first week of the commercial year
-# starts on the Monday on or before January 1, and the commercial
-# year itself starts on this Monday, not January 1.
-#
-# For scientific purposes, it is convenient to refer to a date
-# simply as a day count, counting from an arbitrary initial
-# day.  The date first chosen for this was January 1, 4713 BCE.
-# A count of days from this date is the *Julian* *Day* *Number*
-# or *Julian* *Date*, which is abbreviated as +jd+ in the
-# Date class.  This is in local time, and counts from midnight
-# on the initial day.  The stricter usage is in UTC, and counts
-# from midday on the initial day.  This is referred to in the
-# Date class as the *Astronomical* *Julian* *Day* *Number*, and
-# abbreviated as +ajd+.  In the Date class, the Astronomical
-# Julian Day Number includes fractional days.
-#
-# Another absolute day count is the *Modified* *Julian* *Day*
-# *Number*, which takes November 17, 1858 as its initial day.
-# This is abbreviated as +mjd+ in the Date class.  There
-# is also an *Astronomical* *Modified* *Julian* *Day* *Number*,
-# which is in UTC and includes fractional days.  This is
-# abbreviated as +amjd+ in the Date class.  Like the Modified
-# Julian Day Number (and unlike the Astronomical Julian
-# Day Number), it counts from midnight.
-#
-# Alternative calendars such as the Chinese Lunar Calendar,
-# the Islamic Calendar, or the French Revolutionary Calendar
-# are not supported by the Date class; nor are calendars that
-# are based on an Era different from the Common Era, such as
-# the Japanese Imperial Calendar or the Republic of China
-# Calendar.
-#
-# === Calendar Reform
-#
-# The standard civil year is 365 days long.  However, the
-# solar year is fractionally longer than this.  To account
-# for this, a *leap* *year* is occasionally inserted.  This
-# is a year with 366 days, the extra day falling on February 29.
-# In the early days of the civil calendar, every fourth
-# year without exception was a leap year.  This way of
-# reckoning leap years is the *Julian* *Calendar*.
-#
-# However, the solar year is marginally shorter than 365 1/4
-# days, and so the *Julian* *Calendar* gradually ran slow
-# over the centuries.  To correct this, every 100th year
-# (but not every 400th year) was excluded as a leap year.
-# This way of reckoning leap years, which we use today, is
-# the *Gregorian* *Calendar*.
-#
-# The Gregorian Calendar was introduced at different times
-# in different regions.  The day on which it was introduced
-# for a particular region is the *Day* *of* *Calendar*
-# *Reform* for that region.  This is abbreviated as +sg+
-# (for Start of Gregorian calendar) in the Date class.
-#
-# Two such days are of particular
-# significance.  The first is October 15, 1582, which was
-# the Day of Calendar Reform for Italy and most Catholic
-# countries.  The second is September 14, 1752, which was
-# the Day of Calendar Reform for England and its colonies
-# (including what is now the United States).  These two
-# dates are available as the constants Date::ITALY and
-# Date::ENGLAND, respectively.  (By comparison, Germany and
-# Holland, less Catholic than Italy but less stubborn than
-# England, changed over in 1698; Sweden in 1753; Russia not
-# till 1918, after the Revolution; and Greece in 1923.  Many
-# Orthodox churches still use the Julian Calendar.  A complete
-# list of Days of Calendar Reform can be found at
-# http://www.polysyllabic.com/GregConv.html.)
-#
-# Switching from the Julian to the Gregorian calendar
-# involved skipping a number of days to make up for the
-# accumulated lag, and the later the switch was (or is)
-# done, the more days need to be skipped.  So in 1582 in Italy,
-# 4th October was followed by 15th October, skipping 10 days; in 1752
-# in England, 2nd September was followed by 14th September, skipping
-# 11 days; and if I decided to switch from Julian to Gregorian
-# Calendar this midnight, I would go from 27th July 2003 (Julian)
-# today to 10th August 2003 (Gregorian) tomorrow, skipping
-# 13 days.  The Date class is aware of this gap, and a supposed
-# date that would fall in the middle of it is regarded as invalid.
-#
-# The Day of Calendar Reform is relevant to all date representations
-# involving years.  It is not relevant to the Julian Day Numbers,
-# except for converting between them and year-based representations.
-#
-# In the Date and DateTime classes, the Day of Calendar Reform or
-# +sg+ can be specified a number of ways.  First, it can be as
-# the Julian Day Number of the Day of Calendar Reform.  Second,
-# it can be using the constants Date::ITALY or Date::ENGLAND; these
-# are in fact the Julian Day Numbers of the Day of Calendar Reform
-# of the respective regions.  Third, it can be as the constant
-# Date::JULIAN, which means to always use the Julian Calendar.
-# Finally, it can be as the constant Date::GREGORIAN, which means
-# to always use the Gregorian Calendar.
-#
-# Note: in the Julian Calendar, New Years Day was March 25.  The
-# Date class does not follow this convention.
-#
-# === Time Zones
-#
-# DateTime objects support a simple representation
-# of time zones.  Time zones are represented as an offset
-# from UTC, as a fraction of a day.  This offset is the
-# how much local time is later (or earlier) than UTC.
-# UTC offset 0 is centred on England (also known as GMT).
-# As you travel east, the offset increases until you
-# reach the dateline in the middle of the Pacific Ocean;
-# as you travel west, the offset decreases.  This offset
-# is abbreviated as +of+ in the Date class.
-#
-# This simple representation of time zones does not take
-# into account the common practice of Daylight Savings
-# Time or Summer Time.
-#
-# Most DateTime methods return the date and the
-# time in local time.  The two exceptions are
-# #ajd() and #amjd(), which return the date and time
-# in UTC time, including fractional days.
-#
-# The Date class does not support time zone offsets, in that
-# there is no way to create a Date object with a time zone.
-# However, methods of the Date class when used by a
-# DateTime instance will use the time zone offset of this
-# instance.
-#
-# == Examples of use
-#
-# === Print out the date of every Sunday between two dates.
-#
-#     def print_sundays(d1, d2)
-#         d1 +=1 while (d1.wday != 0)
-#         d1.step(d2, 7) do |date|
-#             puts "#{Date::MONTHNAMES[date.mon]} #{date.day}"
-#         end
-#     end
-#
-#     print_sundays(Date::civil(2003, 4, 8), Date::civil(2003, 5, 23))
-#
-# === Calculate how many seconds to go till midnight on New Year's Day.
-#
-#     def secs_to_new_year(now = DateTime::now())
-#         new_year = DateTime.new(now.year + 1, 1, 1)
-#         dif = new_year - now
-#         hours, mins, secs, ignore_fractions = Date::day_fraction_to_time(dif)
-#         return hours * 60 * 60 + mins * 60 + secs
-#     end
-#
-#     puts secs_to_new_year()
-
-require 'rational'
-require 'date/format'
-
-# Class representing a date.
-#
-# See the documentation to the file date.rb for an overview.
-#
-# Internally, the date is represented as an Astronomical
-# Julian Day Number, +ajd+.  The Day of Calendar Reform, +sg+, is
-# also stored, for conversions to other date formats.  (There
-# is also an +of+ field for a time zone offset, but this
-# is only for the use of the DateTime subclass.)
-#
-# A new Date object is created using one of the object creation
-# class methods named after the corresponding date format, and the
-# arguments appropriate to that date format; for instance,
-# Date::civil() (aliased to Date::new()) with year, month,
-# and day-of-month, or Date::ordinal() with year and day-of-year.
-# All of these object creation class methods also take the
-# Day of Calendar Reform as an optional argument.
-#
-# Date objects are immutable once created.
-#
-# Once a Date has been created, date values
-# can be retrieved for the different date formats supported
-# using instance methods.  For instance, #mon() gives the
-# Civil month, #cwday() gives the Commercial day of the week,
-# and #yday() gives the Ordinal day of the year.  Date values
-# can be retrieved in any format, regardless of what format
-# was used to create the Date instance.
-#
-# The Date class includes the Comparable module, allowing
-# date objects to be compared and sorted, ranges of dates
-# to be created, and so forth.
-class Date
-
-  include Comparable
-
-  # Full month names, in English.  Months count from 1 to 12; a
-  # month's numerical representation indexed into this array
-  # gives the name of that month (hence the first element is nil).
-  MONTHNAMES = [nil] + %w(January February March April May June July
-			  August September October November December)
-
-  # Full names of days of the week, in English.  Days of the week
-  # count from 0 to 6 (except in the commercial week); a day's numerical
-  # representation indexed into this array gives the name of that day.
-  DAYNAMES = %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
-
-  # Abbreviated month names, in English.
-  ABBR_MONTHNAMES = [nil] + %w(Jan Feb Mar Apr May Jun
-			       Jul Aug Sep Oct Nov Dec)
-
-  # Abbreviated day names, in English.
-  ABBR_DAYNAMES = %w(Sun Mon Tue Wed Thu Fri Sat)
-
-  [MONTHNAMES, DAYNAMES, ABBR_MONTHNAMES, ABBR_DAYNAMES].each do |xs|
-    xs.each{|x| x.freeze unless x.nil?}.freeze
-  end
-
-  class Infinity < Numeric # :nodoc:
-
-    include Comparable
-
-    def initialize(d=1) @d = d <=> 0 end
-
-    def d() @d end
-
-    protected :d
-
-    def zero? () false end
-    def finite? () false end
-    def infinite? () d.nonzero? end
-    def nan? () d.zero? end
-
-    def abs() self.class.new end
-
-    def -@ () self.class.new(-d) end
-    def +@ () self.class.new(+d) end
-
-    def <=> (other)
-      case other
-      when Infinity; d <=> other.d
-      when Numeric; d
-      else
-	begin
-	  l, r = other.coerce(self)
-	  return l <=> r
-	rescue NoMethodError
-	end
-      end
-      nil
-    end
-
-    def coerce(other)
-      case other
-      when Numeric; return -d, d
-      else
-	super
-      end
-    end
-
-  end
-
-  # The Julian Day Number of the Day of Calendar Reform for Italy
-  # and the Catholic countries.
-  ITALY     = 2299161 # 1582-10-15
-
-  # The Julian Day Number of the Day of Calendar Reform for England
-  # and her Colonies.
-  ENGLAND   = 2361222 # 1752-09-14
-
-  # A constant used to indicate that a Date should always use the
-  # Julian calendar.
-  JULIAN    =  Infinity.new
-
-  # A constant used to indicate that a Date should always use the
-  # Gregorian calendar.
-  GREGORIAN = -Infinity.new
-
-  UNIXEPOCH = 2440588 # 1970-01-01 :nodoc:
-
-  # Does a given Julian Day Number fall inside the old-style (Julian)
-  # calendar?
-  #
-  # +jd+ is the Julian Day Number in question. +sg+ may be Date::GREGORIAN,
-  # in which case the answer is false; it may be Date::JULIAN, in which case
-  # the answer is true; or it may a number representing the Day of
-  # Calendar Reform. Date::ENGLAND and Date::ITALY are two possible such
-  # days.
-
-  def self.julian? (jd, sg)
-    case sg
-    when Numeric
-      jd < sg
-    else
-      if $VERBOSE
-	warn("#{caller.shift.sub(/:in .*/, '')}: " \
-"warning: do not use non-numerical object as julian day number anymore")
-      end
-      not sg
-    end
-  end
-
-  # Does a given Julian Day Number fall inside the new-style (Gregorian)
-  # calendar?
-  #
-  # The reverse of self.os?  See the documentation for that method for
-  # more details.
-  def self.gregorian? (jd, sg) !julian?(jd, sg) end
-
-  def self.fix_style(jd, sg) # :nodoc:
-    if julian?(jd, sg)
-    then JULIAN
-    else GREGORIAN end
-  end
-
-  private_class_method :fix_style
-
-  # Convert an Ordinal Date to a Julian Day Number.
-  #
-  # +y+ and +d+ are the year and day-of-year to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Julian Day Number.
-  def self.ordinal_to_jd(y, d, sg=GREGORIAN)
-    civil_to_jd(y, 1, d, sg)
-  end
-
-  # Convert a Julian Day Number to an Ordinal Date.
-  #
-  # +jd+ is the Julian Day Number to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Ordinal Date as
-  # [year, day_of_year]
-  def self.jd_to_ordinal(jd, sg=GREGORIAN)
-    y = jd_to_civil(jd, sg)[0]
-    doy = jd - civil_to_jd(y - 1, 12, 31, fix_style(jd, sg))
-    return y, doy
-  end
-
-  # Convert a Civil Date to a Julian Day Number.
-  # +y+, +m+, and +d+ are the year, month, and day of the
-  # month.  +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Julian Day Number.
-  def self.civil_to_jd(y, m, d, sg=GREGORIAN)
-    if m <= 2
-      y -= 1
-      m += 12
-    end
-    a = (y / 100.0).floor
-    b = 2 - a + (a / 4.0).floor
-    jd = (365.25 * (y + 4716)).floor +
-      (30.6001 * (m + 1)).floor +
-      d + b - 1524
-    if julian?(jd, sg)
-      jd -= b
-    end
-    jd
-  end
-
-  # Convert a Julian Day Number to a Civil Date.  +jd+ is
-  # the Julian Day Number. +sg+ specifies the Day of
-  # Calendar Reform.
-  #
-  # Returns the corresponding [year, month, day_of_month]
-  # as a three-element array.
-  def self.jd_to_civil(jd, sg=GREGORIAN)
-    if julian?(jd, sg)
-      a = jd
-    else
-      x = ((jd - 1867216.25) / 36524.25).floor
-      a = jd + 1 + x - (x / 4.0).floor
-    end
-    b = a + 1524
-    c = ((b - 122.1) / 365.25).floor
-    d = (365.25 * c).floor
-    e = ((b - d) / 30.6001).floor
-    dom = b - d - (30.6001 * e).floor
-    if e <= 13
-      m = e - 1
-      y = c - 4716
-    else
-      m = e - 13
-      y = c - 4715
-    end
-    return y, m, dom
-  end
-
-  # Convert a Commercial Date to a Julian Day Number.
-  #
-  # +y+, +w+, and +d+ are the (commercial) year, week of the year,
-  # and day of the week of the Commercial Date to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.commercial_to_jd(y, w, d, ns=GREGORIAN)
-    jd = civil_to_jd(y, 1, 4, ns)
-    (jd - (((jd - 1) + 1) % 7)) +
-      7 * (w - 1) +
-      (d - 1)
-  end
-
-  # Convert a Julian Day Number to a Commercial Date
-  #
-  # +jd+ is the Julian Day Number to convert.
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # Returns the corresponding Commercial Date as
-  # [commercial_year, week_of_year, day_of_week]
-  def self.jd_to_commercial(jd, sg=GREGORIAN)
-    ns = fix_style(jd, sg)
-    a = jd_to_civil(jd - 3, ns)[0]
-    y = if jd >= commercial_to_jd(a + 1, 1, 1, ns) then a + 1 else a end
-    w = 1 + ((jd - commercial_to_jd(y, 1, 1, ns)) / 7).floor
-    d = (jd + 1) % 7
-    d = 7 if d == 0
-    return y, w, d
-  end
-
-  def self.weeknum_to_jd(y, w, d, f=0, ns=GREGORIAN) # :nodoc:
-    a = civil_to_jd(y, 1, 1, ns) + 6
-    (a - ((a - f) + 1) % 7 - 7) + 7 * w + d
-  end
-
-  def self.jd_to_weeknum(jd, f=0, sg=GREGORIAN) # :nodoc:
-    ns = fix_style(jd, sg)
-    y, m, d = jd_to_civil(jd, ns)
-    a = civil_to_jd(y, 1, 1, ns) + 6
-    w, d = (jd - (a - ((a - f) + 1) % 7) + 7).divmod(7)
-    return y, w, d
-  end
-
-  private_class_method :weeknum_to_jd, :jd_to_weeknum
-
-  # Convert an Astronomical Julian Day Number to a (civil) Julian
-  # Day Number.
-  #
-  # +ajd+ is the Astronomical Julian Day Number to convert.
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  #
-  # Returns the (civil) Julian Day Number as [day_number,
-  # fraction] where +fraction+ is always 1/2.
-  def self.ajd_to_jd(ajd, of=0) (ajd + of + 1.to_r/2).divmod(1) end
-
-  # Convert a (civil) Julian Day Number to an Astronomical Julian
-  # Day Number.
-  #
-  # +jd+ is the Julian Day Number to convert, and +fr+ is a
-  # fractional day.
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  #
-  # Returns the Astronomical Julian Day Number as a single
-  # numeric value.
-  def self.jd_to_ajd(jd, fr, of=0) jd + fr - of - 1.to_r/2 end
-
-  # Convert a fractional day +fr+ to [hours, minutes, seconds,
-  # fraction_of_a_second]
-  def self.day_fraction_to_time(fr)
-    h,   fr = fr.divmod(1.to_r/24)
-    min, fr = fr.divmod(1.to_r/1440)
-    s,   fr = fr.divmod(1.to_r/86400)
-    return h, min, s, fr
-  end
-
-  # Convert an +h+ hour, +min+ minutes, +s+ seconds period
-  # to a fractional day.
-  def self.time_to_day_fraction(h, min, s)
-    h.to_r/24 + min.to_r/1440 + s.to_r/86400
-  end
-
-  # Convert an Astronomical Modified Julian Day Number to an
-  # Astronomical Julian Day Number.
-  def self.amjd_to_ajd(amjd) amjd + 4800001.to_r/2 end
-
-  # Convert an Astronomical Julian Day Number to an
-  # Astronomical Modified Julian Day Number.
-  def self.ajd_to_amjd(ajd) ajd - 4800001.to_r/2 end
-
-  # Convert a Modified Julian Day Number to a Julian
-  # Day Number.
-  def self.mjd_to_jd(mjd) mjd + 2400001 end
-
-  # Convert a Julian Day Number to a Modified Julian Day
-  # Number.
-  def self.jd_to_mjd(jd) jd - 2400001 end
-
-  # Convert a count of the number of days since the adoption
-  # of the Gregorian Calendar (in Italy) to a Julian Day Number.
-  def self.ld_to_jd(ld) ld + 2299160 end
-
-  # Convert a Julian Day Number to the number of days since
-  # the adoption of the Gregorian Calendar (in Italy).
-  def self.jd_to_ld(jd) jd - 2299160 end
-
-  # Convert a Julian Day Number to the day of the week.
-  #
-  # Sunday is day-of-week 0; Saturday is day-of-week 6.
-  def self.jd_to_wday(jd) (jd + 1) % 7 end
-
-  # Is a year a leap year in the Julian calendar?
-  #
-  # All years divisible by 4 are leap years in the Julian calendar.
-  def self.julian_leap? (y) y % 4 == 0 end
-
-  # Is a year a leap year in the Gregorian calendar?
-  #
-  # All years divisible by 4 are leap years in the Gregorian calendar,
-  # except for years divisible by 100 and not by 400.
-  def self.gregorian_leap? (y) y % 4 == 0 && y % 100 != 0 || y % 400 == 0 end
-
-  class << self; alias_method :leap?, :gregorian_leap? end
-  class << self; alias_method :new!, :new end
-
-  # Is +jd+ a valid Julian Day Number?
-  #
-  # If it is, returns it.  In fact, any value is treated as a valid
-  # Julian Day Number.
-  def self.valid_jd? (jd, sg=ITALY) jd end
-
-  # Do the year +y+ and day-of-year +d+ make a valid Ordinal Date?
-  # Returns the corresponding Julian Day Number if they do, or
-  # nil if they don't.
-  #
-  # +d+ can be a negative number, in which case it counts backwards
-  # from the end of the year (-1 being the last day of the year).
-  # No year wraparound is performed, however, so valid values of
-  # +d+ are -365 .. -1, 1 .. 365 on a non-leap-year,
-  # -366 .. -1, 1 .. 366 on a leap year.
-  # A date falling in the period skipped in the Day of Calendar Reform
-  # adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_ordinal? (y, d, sg=ITALY)
-    if d < 0
-      ny, = (y + 1).divmod(1)
-      jd = ordinal_to_jd(ny, d + 1, sg)
-      ns = fix_style(jd, sg)
-      return unless [y] == jd_to_ordinal(jd, sg)[0..0]
-      return unless [ny, 1] == jd_to_ordinal(jd - d, ns)
-    else
-      jd = ordinal_to_jd(y, d, sg)
-      return unless [y, d] == jd_to_ordinal(jd, sg)
-    end
-    jd
-  end
-
-  # Do year +y+, month +m+, and day-of-month +d+ make a
-  # valid Civil Date?  Returns the corresponding Julian
-  # Day Number if they do, nil if they don't.
-  #
-  # +m+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # month respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # A date falling in the period skipped in the Day of Calendar
-  # Reform adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_civil? (y, m, d, sg=ITALY)
-    if m < 0
-      m += 13
-    end
-    if d < 0
-      ny, nm = (y * 12 + m).divmod(12)
-      nm,    = (nm + 1).divmod(1)
-      jd = civil_to_jd(ny, nm, d + 1, sg)
-      ns = fix_style(jd, sg)
-      return unless [y, m] == jd_to_civil(jd, sg)[0..1]
-      return unless [ny, nm, 1] == jd_to_civil(jd - d, ns)
-    else
-      jd = civil_to_jd(y, m, d, sg)
-      return unless [y, m, d] == jd_to_civil(jd, sg)
-    end
-    jd
-  end
-
-  class << self; alias_method :valid_date?, :valid_civil? end
-
-  # Do year +y+, week-of-year +w+, and day-of-week +d+ make a
-  # valid Commercial Date?  Returns the corresponding Julian
-  # Day Number if they do, nil if they don't.
-  #
-  # Monday is day-of-week 1; Sunday is day-of-week 7.
-  #
-  # +w+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # week respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # A date falling in the period skipped in the Day of Calendar
-  # Reform adjustment is not valid.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.valid_commercial? (y, w, d, sg=ITALY)
-    if d < 0
-      d += 8
-    end
-    if w < 0
-      ny, nw, nd =
-	jd_to_commercial(commercial_to_jd(y + 1, 1, 1) + w * 7)
-      return unless ny == y
-      w = nw
-    end
-    jd = commercial_to_jd(y, w, d)
-    return unless gregorian?(jd, sg)
-    return unless [y, w, d] == jd_to_commercial(jd)
-    jd
-  end
-
-  def self.valid_weeknum? (y, w, d, f, sg=ITALY) # :nodoc:
-    if d < 0
-      d += 7
-    end
-    if w < 0
-      ny, nw, nd, nf =
-	jd_to_weeknum(weeknum_to_jd(y + 1, 1, f, f) + w * 7, f)
-      return unless ny == y
-      w = nw
-    end
-    jd = weeknum_to_jd(y, w, d, f)
-    return unless gregorian?(jd, sg)
-    return unless [y, w, d] == jd_to_weeknum(jd, f)
-    jd
-  end
-
-  private_class_method :valid_weeknum?
-
-  # Do hour +h+, minute +min+, and second +s+ constitute a valid time?
-  #
-  # If they do, returns their value as a fraction of a day.  If not,
-  # returns nil.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.
-  def self.valid_time? (h, min, s)
-    h   += 24 if h   < 0
-    min += 60 if min < 0
-    s   += 60 if s   < 0
-    return unless ((0..23) === h &&
-		   (0..59) === min &&
-		   (0..59) === s) ||
-		  (24 == h &&
-		    0 == min &&
-		    0 == s)
-    time_to_day_fraction(h, min, s)
-  end
-
-  # Create a new Date object from a Julian Day Number.
-  #
-  # +jd+ is the Julian Day Number; if not specified, it defaults to
-  # 0.
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.jd(jd=0, sg=ITALY)
-    jd = valid_jd?(jd, sg)
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  # Create a new Date object from an Ordinal Date, specified
-  # by year +y+ and day-of-year +d+. +d+ can be negative,
-  # in which it counts backwards from the end of the year.
-  # No year wraparound is performed, however.  An invalid
-  # value for +d+ results in an ArgumentError being raised.
-  #
-  # +y+ defaults to -4712, and +d+ to 1; this is Julian Day
-  # Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.ordinal(y=-4712, d=1, sg=ITALY)
-    unless jd = valid_ordinal?(y, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  # Create a new Date object for the Civil Date specified by
-  # year +y+, month +m+, and day-of-month +d+.
-  #
-  # +m+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # month respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  # can be negative
-  #
-  # +y+ defaults to -4712, +m+ to 1, and +d+ to 1; this is
-  # Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.civil(y=-4712, m=1, d=1, sg=ITALY)
-    unless jd = valid_civil?(y, m, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  class << self; alias_method :new, :civil end
-
-  # Create a new Date object for the Commercial Date specified by
-  # year +y+, week-of-year +w+, and day-of-week +d+.
-  #
-  # Monday is day-of-week 1; Sunday is day-of-week 7.
-  #
-  # +w+ and +d+ can be negative, in which case they count
-  # backwards from the end of the year and the end of the
-  # week respectively.  No wraparound is performed, however,
-  # and invalid values cause an ArgumentError to be raised.
-  #
-  # +y+ defaults to 1582, +w+ to 41, and +d+ to 5, the Day of
-  # Calendar Reform for Italy and the Catholic countries.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.commercial(y=1582, w=41, d=5, sg=ITALY)
-    unless jd = valid_commercial?(y, w, d, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  def self.weeknum(y=1582, w=41, d=5, f=0, sg=ITALY) # :nodoc:
-    unless jd = valid_weeknum?(y, w, d, f, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  private_class_method :weeknum
-
-  def self.rewrite_frags(elem) # :nodoc:
-    elem ||= {}
-    if seconds = elem[:seconds]
-      d,   fr = seconds.divmod(86400)
-      h,   fr = fr.divmod(3600)
-      min, fr = fr.divmod(60)
-      s,   fr = fr.divmod(1)
-      elem[:jd] = UNIXEPOCH + d
-      elem[:hour] = h
-      elem[:min] = min
-      elem[:sec] = s
-      elem[:sec_fraction] = fr
-      elem.delete(:seconds)
-      elem.delete(:offset)
-    end
-    elem
-  end
-
-  private_class_method :rewrite_frags
-
-  def self.complete_frags(elem) # :nodoc:
-    i = 0
-    g = [[:time, [:hour, :min, :sec]],
-	 [nil, [:jd]],
-	 [:ordinal, [:year, :yday, :hour, :min, :sec]],
-	 [:civil, [:year, :mon, :mday, :hour, :min, :sec]],
-	 [:commercial, [:cwyear, :cweek, :cwday, :hour, :min, :sec]],
-	 [:wday, [:wday, :hour, :min, :sec]],
-	 [:wnum0, [:year, :wnum0, :wday, :hour, :min, :sec]],
-	 [:wnum1, [:year, :wnum1, :wday, :hour, :min, :sec]],
-	 [nil, [:cwyear, :cweek, :wday, :hour, :min, :sec]],
-	 [nil, [:year, :wnum0, :cwday, :hour, :min, :sec]],
-	 [nil, [:year, :wnum1, :cwday, :hour, :min, :sec]]].
-      collect{|k, a| e = elem.values_at(*a).compact; [k, a, e]}.
-      select{|k, a, e| e.size > 0}.
-      sort_by{|k, a, e| [e.size, i -= 1]}.last
-
-    d = nil
-
-    if g && g[0] && (g[1].size - g[2].size) != 0
-      d ||= Date.today
-
-      case g[0]
-      when :ordinal
-	elem[:year] ||= d.year
-	elem[:yday] ||= 1
-      when :civil
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:mon]  ||= 1
-	elem[:mday] ||= 1
-      when :commercial
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:cweek] ||= 1
-	elem[:cwday] ||= 1
-      when :wday
-	elem[:jd] ||= (d - d.wday + elem[:wday]).jd
-      when :wnum0
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:wnum0] ||= 0
-	elem[:wday]  ||= 0
-      when :wnum1
-	g[1].each do |e|
-	  break if elem[e]
-	  elem[e] = d.__send__(e)
-	end
-	elem[:wnum1] ||= 0
-	elem[:wday]  ||= 0
-      end
-    end
-
-    if g && g[0] == :time
-      if self <= DateTime
-	d ||= Date.today
-	elem[:jd] ||= d.jd
-      end
-    end
-
-    elem[:hour] ||= 0
-    elem[:min]  ||= 0
-    elem[:sec]  ||= 0
-    elem[:sec] = [elem[:sec], 59].min
-
-    elem
-  end
-
-  private_class_method :complete_frags
-
-  def self.valid_date_frags?(elem, sg) # :nodoc:
-    catch :jd do
-      a = elem.values_at(:jd)
-      if a.all?
-	if jd = valid_jd?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :yday)
-      if a.all?
-	if jd = valid_ordinal?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :mon, :mday)
-      if a.all?
-	if jd = valid_civil?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:cwyear, :cweek, :cwday)
-      if a[2].nil? && elem[:wday]
-	a[2] = elem[:wday].nonzero? || 7
-      end
-      if a.all?
-	if jd = valid_commercial?(*(a << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :wnum0, :wday)
-      if a[2].nil? && elem[:cwday]
-	a[2] = elem[:cwday] % 7
-      end
-      if a.all?
-	if jd = valid_weeknum?(*(a << 0 << sg))
-	  throw :jd, jd
-	end
-      end
-
-      a = elem.values_at(:year, :wnum1, :wday)
-      if a[2]
-	a[2] = (a[2] - 1) % 7
-      end
-      if a[2].nil? && elem[:cwday]
-	a[2] = (elem[:cwday] - 1) % 7
-      end
-      if a.all?
-	if jd = valid_weeknum?(*(a << 1 << sg))
-	  throw :jd, jd
-	end
-      end
-    end
-  end
-
-  private_class_method :valid_date_frags?
-
-  def self.valid_time_frags? (elem) # :nodoc:
-    h, min, s = elem.values_at(:hour, :min, :sec)
-    valid_time?(h, min, s)
-  end
-
-  private_class_method :valid_time_frags?
-
-  def self.new_by_frags(elem, sg) # :nodoc:
-    elem = rewrite_frags(elem)
-    elem = complete_frags(elem)
-    unless jd = valid_date_frags?(elem, sg)
-      raise ArgumentError, 'invalid date'
-    end
-    new!(jd_to_ajd(jd, 0, 0), 0, sg)
-  end
-
-  private_class_method :new_by_frags
-
-  # Create a new Date object by parsing from a String
-  # according to a specified format.
-  #
-  # +str+ is a String holding a date representation.
-  # +fmt+ is the format that the date is in.  See
-  # date/format.rb for details on supported formats.
-  #
-  # The default +str+ is '-4712-01-01', and the default
-  # +fmt+ is '%F', which means Year-Month-Day_of_Month.
-  # This gives Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # An ArgumentError will be raised if +str+ cannot be
-  # parsed.
-  def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
-    elem = _strptime(str, fmt)
-    new_by_frags(elem, sg)
-  end
-
-  # Create a new Date object by parsing from a String,
-  # without specifying the format.
-  #
-  # +str+ is a String holding a date representation.
-  # +comp+ specifies whether to interpret 2-digit years
-  # as 19XX (>= 69) or 20XX (< 69); the default is not to.
-  # The method will attempt to parse a date from the String
-  # using various heuristics; see #_parse in date/format.rb
-  # for more details.  If parsing fails, an ArgumentError
-  # will be raised.
-  #
-  # The default +str+ is '-4712-01-01'; this is Julian
-  # Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.parse(str='-4712-01-01', comp=false, sg=ITALY)
-    elem = _parse(str, comp)
-    new_by_frags(elem, sg)
-  end
-
-  class << self
-
-    def once(*ids) # :nodoc:
-      for id in ids
-	module_eval <<-"end;"
-	  alias_method :__#{id.to_i}__, :#{id.to_s}
-	  private :__#{id.to_i}__
-	  def #{id.to_s}(*args, &block)
-	    (@__#{id.to_i}__ ||= [__#{id.to_i}__(*args, &block)])[0]
-	  end
-	end;
-      end
-    end
-
-    private :once
-
-  end
-
-  # *NOTE* this is the documentation for the method new!().  If
-  # you are reading this as the documentation for new(), that is
-  # because rdoc doesn't fully support the aliasing of the
-  # initialize() method.
-  # new() is in
-  # fact an alias for #civil(): read the documentation for that
-  # method instead.
-  #
-  # Create a new Date object.
-  #
-  # +ajd+ is the Astronomical Julian Day Number.
-  # +of+ is the offset from UTC as a fraction of a day.
-  # Both default to 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform to use for this
-  # Date object.
-  #
-  # Using one of the factory methods such as Date::civil is
-  # generally easier and safer.
-  def initialize(ajd=0, of=0, sg=ITALY) @ajd, @of, @sg = ajd, of, sg end
-
-  # Get the date as an Astronomical Julian Day Number.
-  def ajd() @ajd end
-
-  # Get the date as an Astronomical Modified Julian Day Number.
-  def amjd() self.class.ajd_to_amjd(@ajd) end
-
-  once :amjd
-
-  # Get the date as a Julian Day Number.
-  def jd() self.class.ajd_to_jd(@ajd, @of)[0] end
-
-  # Get any fractional day part of the date.
-  def day_fraction() self.class.ajd_to_jd(@ajd, @of)[1] end
-
-  # Get the date as a Modified Julian Day Number.
-  def mjd() self.class.jd_to_mjd(jd) end
-
-  # Get the date as the number of days since the Day of Calendar
-  # Reform (in Italy and the Catholic countries).
-  def ld() self.class.jd_to_ld(jd) end
-
-  once :jd, :day_fraction, :mjd, :ld
-
-  # Get the date as a Civil Date, [year, month, day_of_month]
-  def civil() self.class.jd_to_civil(jd, @sg) end # :nodoc:
-
-  # Get the date as an Ordinal Date, [year, day_of_year]
-  def ordinal() self.class.jd_to_ordinal(jd, @sg) end # :nodoc:
-
-  # Get the date as a Commercial Date, [year, week_of_year, day_of_week]
-  def commercial() self.class.jd_to_commercial(jd, @sg) end # :nodoc:
-
-  def weeknum0() self.class.__send__(:jd_to_weeknum, jd, 0, @sg) end # :nodoc:
-  def weeknum1() self.class.__send__(:jd_to_weeknum, jd, 1, @sg) end # :nodoc:
-
-  once :civil, :ordinal, :commercial, :weeknum0, :weeknum1
-  private :civil, :ordinal, :commercial, :weeknum0, :weeknum1
-
-  # Get the year of this date.
-  def year() civil[0] end
-
-  # Get the day-of-the-year of this date.
-  #
-  # January 1 is day-of-the-year 1
-  def yday() ordinal[1] end
-
-  # Get the month of this date.
-  #
-  # January is month 1.
-  def mon() civil[1] end
-
-  # Get the day-of-the-month of this date.
-  def mday() civil[2] end
-
-  alias_method :month, :mon
-  alias_method :day, :mday
-
-  def wnum0() weeknum0[1] end # :nodoc:
-  def wnum1() weeknum1[1] end # :nodoc:
-
-  private :wnum0, :wnum1
-
-  # Get the time of this date as [hours, minutes, seconds,
-  # fraction_of_a_second]
-  def time() self.class.day_fraction_to_time(day_fraction) end # :nodoc:
-
-  once :time
-  private :time
-
-  # Get the hour of this date.
-  def hour() time[0] end
-
-  # Get the minute of this date.
-  def min() time[1] end
-
-  # Get the second of this date.
-  def sec() time[2] end
-
-  # Get the fraction-of-a-second of this date.  The unit is in days.
-  # I do NOT recommend you to use this method.
-  def sec_fraction() time[3] end
-
-  private :hour, :min, :sec, :sec_fraction
-
-  def zone() strftime('%:z') end
-
-  private :zone
-
-  # Get the commercial year of this date.  See *Commercial* *Date*
-  # in the introduction for how this differs from the normal year.
-  def cwyear() commercial[0] end
-
-  # Get the commercial week of the year of this date.
-  def cweek() commercial[1] end
-
-  # Get the commercial day of the week of this date.  Monday is
-  # commercial day-of-week 1; Sunday is commercial day-of-week 7.
-  def cwday() commercial[2] end
-
-  # Get the week day of this date.  Sunday is day-of-week 0;
-  # Saturday is day-of-week 6.
-  def wday() self.class.jd_to_wday(jd) end
-
-  once :wday
-
-=begin
-  MONTHNAMES.each_with_index do |n, i|
-    if n
-      define_method(n.downcase + '?'){mon == i}
-    end
-  end
-
-  DAYNAMES.each_with_index do |n, i|
-    define_method(n.downcase + '?'){wday == i}
-  end
-=end
-
-  # Is the current date old-style (Julian Calendar)?
-  def julian? () self.class.julian?(jd, @sg) end
-
-  # Is the current date new-style (Gregorian Calendar)?
-  def gregorian? () self.class.gregorian?(jd, @sg) end
-
-  once :julian?, :gregorian?
-
-  def fix_style # :nodoc:
-    if julian?
-    then self.class::JULIAN
-    else self.class::GREGORIAN end
-  end
-
-  private :fix_style
-
-  # Is this a leap year?
-  def leap?
-    self.class.jd_to_civil(self.class.civil_to_jd(year, 3, 1, fix_style) - 1,
-		     fix_style)[-1] == 29
-  end
-
-  once :leap?
-
-  # When is the Day of Calendar Reform for this Date object?
-  def start() @sg end
-
-  # Create a copy of this Date object using a new Day of Calendar Reform.
-  def new_start(sg=self.class::ITALY) self.class.new!(@ajd, @of, sg) end
-
-  # Create a copy of this Date object that uses the Italian/Catholic
-  # Day of Calendar Reform.
-  def italy() new_start(self.class::ITALY) end
-
-  # Create a copy of this Date object that uses the English/Colonial
-  # Day of Calendar Reform.
-  def england() new_start(self.class::ENGLAND) end
-
-  # Create a copy of this Date object that always uses the Julian
-  # Calendar.
-  def julian() new_start(self.class::JULIAN) end
-
-  # Create a copy of this Date object that always uses the Gregorian
-  # Calendar.
-  def gregorian() new_start(self.class::GREGORIAN) end
-
-  def offset() @of end
-
-  def new_offset(of=0)
-    if String === of
-      of = (self.class.zone_to_diff(of) || 0).to_r/86400
-    end
-    self.class.new!(@ajd, of, @sg)
-  end
-
-  private :offset, :new_offset
-
-  # Return a new Date object that is +n+ days later than the
-  # current one.
-  #
-  # +n+ may be a negative value, in which case the new Date
-  # is earlier than the current one; however, #-() might be
-  # more intuitive.
-  #
-  # If +n+ is not a Numeric, a TypeError will be thrown.  In
-  # particular, two Dates cannot be added to each other.
-  def + (n)
-    case n
-    when Numeric; return self.class.new!(@ajd + n, @of, @sg)
-    end
-    raise TypeError, 'expected numeric'
-  end
-
-  # If +x+ is a Numeric value, create a new Date object that is
-  # +x+ days earlier than the current one.
-  #
-  # If +x+ is a Date, return the number of days between the
-  # two dates; or, more precisely, how many days later the current
-  # date is than +x+.
-  #
-  # If +x+ is neither Numeric nor a Date, a TypeError is raised.
-  def - (x)
-    case x
-    when Numeric; return self.class.new!(@ajd - x, @of, @sg)
-    when Date;    return @ajd - x.ajd
-    end
-    raise TypeError, 'expected numeric or date'
-  end
-
-  # Compare this date with another date.
-  #
-  # +other+ can also be a Numeric value, in which case it is
-  # interpreted as an Astronomical Julian Day Number.
-  #
-  # Comparison is by Astronomical Julian Day Number, including
-  # fractional days.  This means that both the time and the
-  # timezone offset are taken into account when comparing
-  # two DateTime instances.  When comparing a DateTime instance
-  # with a Date instance, the time of the latter will be
-  # considered as falling on midnight UTC.
-  def <=> (other)
-    case other
-    when Numeric; return @ajd <=> other
-    when Date;    return @ajd <=> other.ajd
-    end
-    nil
-  end
-
-  # The relationship operator for Date.
-  #
-  # Compares dates by Julian Day Number.  When comparing
-  # two DateTime instances, or a DateTime with a Date,
-  # the instances will be regarded as equivalent if they
-  # fall on the same date in local time.
-  def === (other)
-    case other
-    when Numeric; return jd == other
-    when Date;    return jd == other.jd
-    end
-    false
-  end
-
-  def next_day(n=1) self + n end
-# def prev_day(n=1) self - n end
-
-  private :next_day
-
-  # Return a new Date one day after this one.
-  def next() next_day end
-
-  alias_method :succ, :next
-
-  # Return a new Date object that is +n+ months later than
-  # the current one.
-  #
-  # If the day-of-the-month of the current Date is greater
-  # than the last day of the target month, the day-of-the-month
-  # of the returned Date will be the last day of the target month.
-  def >> (n)
-    y, m = (year * 12 + (mon - 1) + n).divmod(12)
-    m,   = (m + 1)                    .divmod(1)
-    d = mday
-    d -= 1 until jd2 = self.class.valid_civil?(y, m, d, fix_style)
-    self + (jd2 - jd)
-  end
-
-  # Return a new Date object that is +n+ months earlier than
-  # the current one.
-  #
-  # If the day-of-the-month of the current Date is greater
-  # than the last day of the target month, the day-of-the-month
-  # of the returned Date will be the last day of the target month.
-  def << (n) self >> -n end
-
-=begin
-  def next_month(n=1) self >> n end
-  def prev_month(n=1) self << n end
-
-  def next_year(n=1) self >> n * 12 end
-  def prev_year(n=1) self << n * 12 end
-=end
-
-#  require 'enumerator'
-
-  # Step the current date forward +step+ days at a
-  # time (or backward, if +step+ is negative) until
-  # we reach +limit+ (inclusive), yielding the resultant
-  # date at each step.
-  def step(limit, step=1) # :yield: date
-=begin
-    unless block_given?
-      return to_enum(:step, limit, step)
-    end
-=end
-    da = self
-    op = %w(- <= >=)[step <=> 0]
-    while da.__send__(op, limit)
-      yield da
-      da += step
-    end
-    self
-  end
-
-  # Step forward one day at a time until we reach +max+
-  # (inclusive), yielding each date as we go.
-  def upto(max, &block) # :yield: date
-    step(max, +1, &block)
-  end
-
-  # Step backward one day at a time until we reach +min+
-  # (inclusive), yielding each date as we go.
-  def downto(min, &block) # :yield: date
-    step(min, -1, &block)
-  end
-
-  # Is this Date equal to +other+?
-  #
-  # +other+ must both be a Date object, and represent the same date.
-  def eql? (other) Date === other && self == other end
-
-  # Calculate a hash value for this date.
-  def hash() @ajd.hash end
-
-  # Return internal object state as a programmer-readable string.
-  def inspect() format('#<%s: %s,%s,%s>', self.class, @ajd, @of, @sg) end
-
-  # Return the date as a human-readable string.
-  #
-  # The format used is YYYY-MM-DD.
-  def to_s() strftime end
-
-  # Dump to Marshal format.
-  def _dump(limit) Marshal.dump([@ajd, @of, @sg], -1) end
-
-# def self._load(str) new!(*Marshal.load(str)) end
-
-  # Load from Marshall format.
-  def self._load(str)
-    a = Marshal.load(str)
-    if a.size == 2
-      ajd,     sg = a
-           of = 0
-      ajd -= 1.to_r/2
-    else
-      ajd, of, sg = a
-    end
-    new!(ajd, of, sg)
-  end
-
-end
-
-# Class representing a date and time.
-#
-# See the documentation to the file date.rb for an overview.
-#
-# DateTime objects are immutable once created.
-#
-# == Other methods.
-#
-# The following methods are defined in Date, but declared private
-# there.  They are made public in DateTime.  They are documented
-# here.
-#
-# === hour()
-#
-# Get the hour-of-the-day of the time.  This is given
-# using the 24-hour clock, counting from midnight.  The first
-# hour after midnight is hour 0; the last hour of the day is
-# hour 23.
-#
-# === min()
-#
-# Get the minute-of-the-hour of the time.
-#
-# === sec()
-#
-# Get the second-of-the-minute of the time.
-#
-# === sec_fraction()
-#
-# Get the fraction of a second of the time.  This is returned as
-# a +Rational+.  The unit is in days.
-# I do NOT recommend you to use this method.
-#
-# === zone()
-#
-# Get the time zone as a String.  This is representation of the
-# time offset such as "+1000", not the true time-zone name.
-#
-# === offset()
-#
-# Get the time zone offset as a fraction of a day.  This is returned
-# as a +Rational+.
-#
-# === new_offset(of=0)
-#
-# Create a new DateTime object, identical to the current one, except
-# with a new time zone offset of +of+.  +of+ is the new offset from
-# UTC as a fraction of a day.
-#
-class DateTime < Date
-
-  # Create a new DateTime object corresponding to the specified
-  # Julian Day Number +jd+ and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # All day/time values default to 0.
-  def self.jd(jd=0, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_jd?(jd, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  # Create a new DateTime object corresponding to the specified
-  # Ordinal Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to -4712, and +d+ to 1; this is Julian Day Number
-  # day 0.  The time values default to 0.
-  def self.ordinal(y=-4712, d=1, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_ordinal?(y, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  # Create a new DateTime object corresponding to the specified
-  # Civil Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to -4712, +m+ to 1, and +d+ to 1; this is Julian Day
-  # Number day 0.  The time values default to 0.
-  def self.civil(y=-4712, m=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_civil?(y, m, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  class << self; alias_method :new, :civil end
-
-  # Create a new DateTime object corresponding to the specified
-  # Commercial Date and hour +h+, minute +min+, second +s+.
-  #
-  # The 24-hour clock is used.  Negative values of +h+, +min+, and
-  # +sec+ are treating as counting backwards from the end of the
-  # next larger unit (e.g. a +min+ of -2 is treated as 58).  No
-  # wraparound is performed.  If an invalid time portion is specified,
-  # an ArgumentError is raised.
-  #
-  # +of+ is the offset from UTC as a fraction of a day (defaults to 0).
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # +y+ defaults to 1582, +w+ to 41, and +d+ to 5; this is the Day of
-  # Calendar Reform for Italy and the Catholic countries.
-  # The time values default to 0.
-  def self.commercial(y=1582, w=41, d=5, h=0, min=0, s=0, of=0, sg=ITALY)
-    unless (jd = valid_commercial?(y, w, d, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  def self.weeknum(y=1582, w=41, d=5, f=0, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
-    unless (jd = valid_weeknum?(y, w, d, f, sg)) &&
-	   (fr = valid_time?(h, min, s))
-      raise ArgumentError, 'invalid date'
-    end
-    if String === of
-      of = (zone_to_diff(of) || 0).to_r/86400
-    end
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  private_class_method :weeknum
-
-  def self.new_by_frags(elem, sg) # :nodoc:
-    elem = rewrite_frags(elem)
-    elem = complete_frags(elem)
-    unless (jd = valid_date_frags?(elem, sg)) &&
-	   (fr = valid_time_frags?(elem))
-      raise ArgumentError, 'invalid date'
-    end
-    sf = (elem[:sec_fraction] || 0)
-    fr += sf/86400
-    of = (elem[:offset] || 0)
-    of = of.to_r/86400
-    new!(jd_to_ajd(jd, fr, of), of, sg)
-  end
-
-  private_class_method :new_by_frags
-
-  # Create a new DateTime object by parsing from a String
-  # according to a specified format.
-  #
-  # +str+ is a String holding a date-time representation.
-  # +fmt+ is the format that the date-time is in.  See
-  # date/format.rb for details on supported formats.
-  #
-  # The default +str+ is '-4712-01-01T00:00:00+00:00', and the default
-  # +fmt+ is '%FT%T%z'.  This gives midnight on Julian Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  #
-  # An ArgumentError will be raised if +str+ cannot be
-  # parsed.
-  def self.strptime(str='-4712-01-01T00:00:00+00:00', fmt='%FT%T%z', sg=ITALY)
-    elem = _strptime(str, fmt)
-    new_by_frags(elem, sg)
-  end
-
-  # Create a new DateTime object by parsing from a String,
-  # without specifying the format.
-  #
-  # +str+ is a String holding a date-time representation.
-  # +comp+ specifies whether to interpret 2-digit years
-  # as 19XX (>= 69) or 20XX (< 69); the default is not to.
-  # The method will attempt to parse a date-time from the String
-  # using various heuristics; see #_parse in date/format.rb
-  # for more details.  If parsing fails, an ArgumentError
-  # will be raised.
-  #
-  # The default +str+ is '-4712-01-01T00:00:00+00:00'; this is Julian
-  # Day Number day 0.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
-    elem = _parse(str, comp)
-    new_by_frags(elem, sg)
-  end
-
-  public :hour, :min, :sec, :sec_fraction, :zone, :offset, :new_offset
-
-end
-
-class Time
-
-#  def to_time() getlocal end
-
-  def to_date
-    jd = Date.civil_to_jd(year, mon, mday, Date::ITALY)
-    Date.new!(Date.jd_to_ajd(jd, 0, 0), 0, Date::ITALY)
-  end
-
-  def to_datetime
-    jd = DateTime.civil_to_jd(year, mon, mday, DateTime::ITALY)
-    fr = DateTime.time_to_day_fraction(hour, min, [sec, 59].min) +
-	 usec.to_r/86400000000
-    of = utc_offset.to_r/86400
-    DateTime.new!(DateTime.jd_to_ajd(jd, fr, of), of, DateTime::ITALY)
-  end
-
-  private :to_date, :to_datetime
-
-end
-
-class Date
-
-=begin
-  def to_time() Time.local(year, mon, mday) end
-  def to_date() self end
-  def to_datetime() DateTime.new!(self.class.jd_to_ajd(jd, 0, 0), @of, @sg) end
-=end
-
-  # Create a new Date object representing today.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.today(sg=ITALY) Time.now.__send__(:to_date)    .new_start(sg) end
-
-  # Create a new DateTime object representing the current time.
-  #
-  # +sg+ specifies the Day of Calendar Reform.
-  def self.now  (sg=ITALY) Time.now.__send__(:to_datetime).new_start(sg) end
-
-  private_class_method :now
-
-end
-
-class DateTime < Date
-
-=begin
-  def to_time
-    d = new_offset(0)
-    d.instance_eval do
-      Time.utc(year, mon, mday, hour, min, sec,
-	       (sec_fraction * 86400000000).to_i)
-    end.
-	getlocal
-  end
-
-  def to_date() Date.new!(self.class.jd_to_ajd(jd, 0, 0), 0, @sg) end
-  def to_datetime() self end
-=end
-
-  private_class_method :today
-  public_class_method  :now
-
-end
-
-class Date
-
-  [ %w(os?	julian?),
-    %w(ns?	gregorian?),
-    %w(exist1?	valid_jd?),
-    %w(exist2?	valid_ordinal?),
-    %w(exist3?	valid_date?),
-    %w(exist?	valid_date?),
-    %w(existw?	valid_commercial?),
-    %w(new0	new!),
-    %w(new1	jd),
-    %w(new2	ordinal),
-    %w(new3	new),
-    %w(neww	commercial)
-  ].each do |old, new|
-    module_eval <<-"end;"
-      def self.#{old}(*args, &block)
-	if $VERBOSE
-	  warn("\#{caller.shift.sub(/:in .*/, '')}: " \
-	       "warning: \#{self}::#{old} is deprecated; " \
-	       "use \#{self}::#{new}")
-	end
-	#{new}(*args, &block)
-      end
-    end;
-  end
-
-  [ %w(os?	julian?),
-    %w(ns?	gregorian?),
-    %w(sg	start),
-    %w(newsg	new_start),
-    %w(of	offset),
-    %w(newof	new_offset)
-  ].each do |old, new|
-    module_eval <<-"end;"
-      def #{old}(*args, &block)
-	if $VERBOSE
-	  warn("\#{caller.shift.sub(/:in .*/, '')}: " \
-	       "warning: \#{self.class}\##{old} is deprecated; " \
-	       "use \#{self.class}\##{new}")
-	end
-	#{new}(*args, &block)
-      end
-    end;
-  end
-
-  private :of, :newof
-
-end
-
-class DateTime < Date
-
-  public :of, :newof
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date/format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date/format.rb
deleted file mode 100644
index 8bd14c7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date/format.rb
+++ /dev/null
@@ -1,1088 +0,0 @@
-# format.rb: Written by Tadayoshi Funaba 1999-2007
-# $Id: format.rb,v 2.30 2007-01-07 09:16:24+09 tadf Exp $
-
-require 'rational'
-
-class Date
-
-  module Format # :nodoc:
-
-    MONTHS = {
-      'january'  => 1, 'february' => 2, 'march'    => 3, 'april'    => 4,
-      'may'      => 5, 'june'     => 6, 'july'     => 7, 'august'   => 8,
-      'september'=> 9, 'october'  =>10, 'november' =>11, 'december' =>12
-    }
-
-    DAYS = {
-      'sunday'   => 0, 'monday'   => 1, 'tuesday'  => 2, 'wednesday'=> 3,
-      'thursday' => 4, 'friday'   => 5, 'saturday' => 6
-    }
-
-    ABBR_MONTHS = {
-      'jan'      => 1, 'feb'      => 2, 'mar'      => 3, 'apr'      => 4,
-      'may'      => 5, 'jun'      => 6, 'jul'      => 7, 'aug'      => 8,
-      'sep'      => 9, 'oct'      =>10, 'nov'      =>11, 'dec'      =>12
-    }
-
-    ABBR_DAYS = {
-      'sun'      => 0, 'mon'      => 1, 'tue'      => 2, 'wed'      => 3,
-      'thu'      => 4, 'fri'      => 5, 'sat'      => 6
-    }
-
-    ZONES = {
-      'ut'  =>  0*3600, 'gmt' =>  0*3600, 'est' => -5*3600, 'edt' => -4*3600,
-      'cst' => -6*3600, 'cdt' => -5*3600, 'mst' => -7*3600, 'mdt' => -6*3600,
-      'pst' => -8*3600, 'pdt' => -7*3600,
-      'a'   =>  1*3600, 'b'   =>  2*3600, 'c'   =>  3*3600, 'd'   =>  4*3600,
-      'e'   =>  5*3600, 'f'   =>  6*3600, 'g'   =>  7*3600, 'h'   =>  8*3600,
-      'i'   =>  9*3600, 'k'   => 10*3600, 'l'   => 11*3600, 'm'   => 12*3600,
-      'n'   => -1*3600, 'o'   => -2*3600, 'p'   => -3*3600, 'q'   => -4*3600,
-      'r'   => -5*3600, 's'   => -6*3600, 't'   => -7*3600, 'u'   => -8*3600,
-      'v'   => -9*3600, 'w'   =>-10*3600, 'x'   =>-11*3600, 'y'   =>-12*3600,
-      'z'   =>  0*3600,
-      'utc' =>  0*3600, 'wet' =>  0*3600, 'bst' =>  1*3600, 'wat' => -1*3600,
-      'at'  => -2*3600, 'ast' => -4*3600, 'adt' => -3*3600, 'yst' => -9*3600,
-      'ydt' => -8*3600, 'hst' =>-10*3600, 'hdt' => -9*3600, 'cat' =>-10*3600,
-      'ahst'=>-10*3600, 'nt'  =>-11*3600, 'idlw'=>-12*3600, 'cet' =>  1*3600,
-      'met' =>  1*3600, 'mewt'=>  1*3600, 'mest'=>  2*3600, 'mesz'=>  2*3600,
-      'swt' =>  1*3600, 'sst' =>  2*3600, 'fwt' =>  1*3600, 'fst' =>  2*3600,
-      'eet' =>  2*3600, 'bt'  =>  3*3600, 'zp4' =>  4*3600, 'zp5' =>  5*3600,
-      'zp6' =>  6*3600, 'wast'=>  7*3600, 'wadt'=>  8*3600, 'cct' =>  8*3600,
-      'jst' =>  9*3600, 'east'=> 10*3600, 'eadt'=> 11*3600, 'gst' => 10*3600,
-      'nzt' => 12*3600, 'nzst'=> 12*3600, 'nzdt'=> 13*3600, 'idle'=> 12*3600,
-
-      'afghanistan'           =>   16200, 'alaskan'               =>  -32400,
-      'arab'                  =>   10800, 'arabian'               =>   14400,
-      'arabic'                =>   10800, 'atlantic'              =>  -14400,
-      'aus central'           =>   34200, 'aus eastern'           =>   36000,
-      'azores'                =>   -3600, 'canada central'        =>  -21600,
-      'cape verde'            =>   -3600, 'caucasus'              =>   14400,
-      'cen. australia'        =>   34200, 'central america'       =>  -21600,
-      'central asia'          =>   21600, 'central europe'        =>    3600,
-      'central european'      =>    3600, 'central pacific'       =>   39600,
-      'central'               =>  -21600, 'china'                 =>   28800,
-      'dateline'              =>  -43200, 'e. africa'             =>   10800,
-      'e. australia'          =>   36000, 'e. europe'             =>    7200,
-      'e. south america'      =>  -10800, 'eastern'               =>  -18000,
-      'egypt'                 =>    7200, 'ekaterinburg'          =>   18000,
-      'fiji'                  =>   43200, 'fle'                   =>    7200,
-      'greenland'             =>  -10800, 'greenwich'             =>       0,
-      'gtb'                   =>    7200, 'hawaiian'              =>  -36000,
-      'india'                 =>   19800, 'iran'                  =>   12600,
-      'jerusalem'             =>    7200, 'korea'                 =>   32400,
-      'mexico'                =>  -21600, 'mid-atlantic'          =>   -7200,
-      'mountain'              =>  -25200, 'myanmar'               =>   23400,
-      'n. central asia'       =>   21600, 'nepal'                 =>   20700,
-      'new zealand'           =>   43200, 'newfoundland'          =>  -12600,
-      'north asia east'       =>   28800, 'north asia'            =>   25200,
-      'pacific sa'            =>  -14400, 'pacific'               =>  -28800,
-      'romance'               =>    3600, 'russian'               =>   10800,
-      'sa eastern'            =>  -10800, 'sa pacific'            =>  -18000,
-      'sa western'            =>  -14400, 'samoa'                 =>  -39600,
-      'se asia'               =>   25200, 'malay peninsula'       =>   28800,
-      'south africa'          =>    7200, 'sri lanka'             =>   21600,
-      'taipei'                =>   28800, 'tasmania'              =>   36000,
-      'tokyo'                 =>   32400, 'tonga'                 =>   46800,
-      'us eastern'            =>  -18000, 'us mountain'           =>  -25200,
-      'vladivostok'           =>   36000, 'w. australia'          =>   28800,
-      'w. central africa'     =>    3600, 'w. europe'             =>    3600,
-      'west asia'             =>   18000, 'west pacific'          =>   36000,
-      'yakutsk'               =>   32400
-    }
-
-    [MONTHS, DAYS, ABBR_MONTHS, ABBR_DAYS, ZONES].each do |x|
-      x.freeze
-    end
-
-    class Bag # :nodoc:
-
-      def initialize
-	@elem = {}
-      end
-
-      def method_missing(t, *args, &block)
-	t = t.to_s
-	set = t.chomp!('=')
-	t = t.intern
-	if set
-	  @elem[t] = args[0]
-	else
-	  @elem[t]
-	end
-      end
-
-      def to_hash
-	@elem.reject{|k, v| /\A_/ =~ k.to_s || v.nil?}
-      end
-
-    end
-
-  end
-
-  def emit(e, f) # :nodoc:
-    case e
-    when Numeric
-      sign = %w(+ + -)[e <=> 0]
-      e = e.abs
-    end
-
-    s = e.to_s
-
-    if f[:s] && f[:p] == '0'
-      f[:w] -= 1
-    end
-
-    if f[:s] && f[:p] == "\s"
-      s[0,0] = sign
-    end
-
-    if f[:p] != '-'
-      s = s.rjust(f[:w], f[:p])
-    end
-
-    if f[:s] && f[:p] != "\s"
-      s[0,0] = sign
-    end
-
-    s = s.upcase if f[:u]
-    s = s.downcase if f[:d]
-    s
-  end
-
-  def emit_w(e, w, f) # :nodoc:
-    f[:w] = [f[:w], w].compact.max
-    emit(e, f)
-  end
-
-  def emit_n(e, w, f) # :nodoc:
-    f[:p] ||= '0'
-    emit_w(e, w, f)
-  end
-
-  def emit_sn(e, w, f) # :nodoc:
-    if e < 0
-      w += 1
-      f[:s] = true
-    end
-    emit_n(e, w, f)
-  end
-
-  def emit_z(e, w, f) # :nodoc:
-    w += 1
-    f[:s] = true
-    emit_n(e, w, f)
-  end
-
-  def emit_a(e, w, f) # :nodoc:
-    f[:p] ||= "\s"
-    emit_w(e, w, f)
-  end
-
-  def emit_ad(e, w, f) # :nodoc:
-    if f[:x]
-      f[:u] = true
-      f[:d] = false
-    end
-    emit_a(e, w, f)
-  end
-
-  def emit_au(e, w, f) # :nodoc:
-    if f[:x]
-      f[:u] = false
-      f[:d] = true
-    end
-    emit_a(e, w, f)
-  end
-
-  private :emit, :emit_w, :emit_n, :emit_sn, :emit_z,
-	  :emit_a, :emit_ad, :emit_au
-
-  def strftime(fmt='%F')
-    fmt.gsub(/%([-_0^#]+)?(\d+)?[EO]?(:{1,3}z|.)/m) do |m|
-      f = {}
-      s, w, c = $1, $2, $3
-      if s
-	s.scan(/./) do |k|
-	  case k
-	  when '-'; f[:p] = '-'
-	  when '_'; f[:p] = "\s"
-	  when '0'; f[:p] = '0'
-	  when '^'; f[:u] = true
-	  when '#'; f[:x] = true
-	  end
-	end
-      end
-      if w
-	f[:w] = w.to_i
-      end
-      case c
-      when 'A'; emit_ad(DAYNAMES[wday], 0, f)
-      when 'a'; emit_ad(ABBR_DAYNAMES[wday], 0, f)
-      when 'B'; emit_ad(MONTHNAMES[mon], 0, f)
-      when 'b'; emit_ad(ABBR_MONTHNAMES[mon], 0, f)
-      when 'C'; emit_sn((year / 100).floor, 2, f)
-      when 'c'; emit_a(strftime('%a %b %e %H:%M:%S %Y'), 0, f)
-      when 'D'; emit_a(strftime('%m/%d/%y'), 0, f)
-      when 'd'; emit_n(mday, 2, f)
-      when 'e'; emit_a(mday, 2, f)
-      when 'F'
-	if m == '%F'
-	  format('%.4d-%02d-%02d', year, mon, mday) # 4p
-	else
-	  emit_a(strftime('%Y-%m-%d'), 0, f)
-	end
-      when 'G'; emit_sn(cwyear, 4, f)
-      when 'g'; emit_n(cwyear % 100, 2, f)
-      when 'H'; emit_n(hour, 2, f)
-      when 'h'; emit_ad(strftime('%b'), 0, f)
-      when 'I'; emit_n((hour % 12).nonzero? || 12, 2, f)
-      when 'j'; emit_n(yday, 3, f)
-      when 'k'; emit_a(hour, 2, f)
-      when 'L'
-	emit_n((sec_fraction / (1.to_r/86400/(10**3))).round, 3, f)
-      when 'l'; emit_a((hour % 12).nonzero? || 12, 2, f)
-      when 'M'; emit_n(min, 2, f)
-      when 'm'; emit_n(mon, 2, f)
-      when 'N'
-	emit_n((sec_fraction / (1.to_r/86400/(10**9))).round, 9, f)
-      when 'n'; "\n"
-      when 'P'; emit_ad(strftime('%p').downcase, 0, f)
-      when 'p'; emit_au(if hour < 12 then 'AM' else 'PM' end, 0, f)
-      when 'Q'
-	d = ajd - self.class.jd_to_ajd(self.class::UNIXEPOCH, 0)
-	s = (d * 86400*10**3).to_i
-	emit_sn(s, 1, f)
-      when 'R'; emit_a(strftime('%H:%M'), 0, f)
-      when 'r'; emit_a(strftime('%I:%M:%S %p'), 0, f)
-      when 'S'; emit_n(sec, 2, f)
-      when 's'
-	d = ajd - self.class.jd_to_ajd(self.class::UNIXEPOCH, 0)
-	s = (d * 86400).to_i
-	emit_sn(s, 1, f)
-      when 'T'
-	if m == '%T'
-	  format('%02d:%02d:%02d', hour, min, sec) # 4p
-	else
-	  emit_a(strftime('%H:%M:%S'), 0, f)
-	end
-      when 't'; "\t"
-      when 'U', 'W'
-	emit_n(if c == 'U' then wnum0 else wnum1 end, 2, f)
-      when 'u'; emit_n(cwday, 1, f)
-      when 'V'; emit_n(cweek, 2, f)
-      when 'v'; emit_a(strftime('%e-%b-%Y'), 0, f)
-      when 'w'; emit_n(wday, 1, f)
-      when 'X'; emit_a(strftime('%H:%M:%S'), 0, f)
-      when 'x'; emit_a(strftime('%m/%d/%y'), 0, f)
-      when 'Y'; emit_sn(year, 4, f)
-      when 'y'; emit_n(year % 100, 2, f)
-      when 'Z'; emit_au(strftime('%:z'), 0, f)
-      when /\A(:{0,3})z/
-	t = $1.size
-	sign = if offset < 0 then -1 else +1 end
-	fr = offset.abs
-	hh, fr = fr.divmod(1.to_r/24)
-	mm, fr = fr.divmod(1.to_r/1440)
-	ss, fr = fr.divmod(1.to_r/86400)
-	if t == 3
-	  if    ss.nonzero? then t =  2
-	  elsif mm.nonzero? then t =  1
-	  else                   t = -1
-	  end
-	end
-	case t
-	when -1
-	  tail = []
-	  sep = ''
-	when 0
-	  f[:w] -= 2 if f[:w]
-	  tail = ['%02d' % mm]
-	  sep = ''
-	when 1
-	  f[:w] -= 3 if f[:w]
-	  tail = ['%02d' % mm]
-	  sep = ':'
-	when 2
-	  f[:w] -= 6 if f[:w]
-	  tail = ['%02d' % mm, '%02d' % ss]
-	  sep = ':'
-	end
-	([emit_z(sign * hh, 2, f)] + tail).join(sep)
-      when '%'; emit_a('%', 0, f)
-      when '+'; emit_a(strftime('%a %b %e %H:%M:%S %Z %Y'), 0, f)
-      when '1'
-	if $VERBOSE
-	  warn("warning: strftime: %1 is deprecated; forget this")
-	end
-	emit_n(jd, 1, f)
-      when '2'
-	if $VERBOSE
-	  warn("warning: strftime: %2 is deprecated; use '%Y-%j'")
-	end
-	emit_a(strftime('%Y-%j'), 0, f)
-      when '3'
-	if $VERBOSE
-	  warn("warning: strftime: %3 is deprecated; use '%F'")
-	end
-	emit_a(strftime('%F'), 0, f)
-      else
-	c
-      end
-    end
-  end
-
-# alias_method :format, :strftime
-
-  def asctime() strftime('%c') end
-
-  alias_method :ctime, :asctime
-
-=begin
-  def iso8601() strftime('%F') end
-
-  def rfc3339() iso8601 end
-
-  def rfc2822() strftime('%a, %-d %b %Y %T %z') end
-
-  alias_method :rfc822, :rfc2822
-
-  def jisx0301
-    if jd < 2405160
-      iso8601
-    else
-      case jd
-      when 2405160...2419614
-	g = 'M%02d' % (year - 1867)
-      when 2419614...2424875
-	g = 'T%02d' % (year - 1911)
-      when 2424875...2447535
-	g = 'S%02d' % (year - 1925)
-      else
-	g = 'H%02d' % (year - 1988)
-      end
-      g + strftime('.%m.%d')
-    end
-  end
-
-  def beat(n=0)
-    i, f = (new_offset(1.to_r/24).day_fraction * 1000).divmod(1)
-    ('@%03d' % i) +
-      if n < 1
-	''
-      else
-	'.%0*d' % [n, (f / (1.to_r/(10**n))).round]
-      end
-  end
-=end
-
-  def self.num_pattern? (s) # :nodoc:
-    /\A%[EO]?[CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy\d]/ =~ s || /\A\d/ =~ s
-  end
-
-  private_class_method :num_pattern?
-
-  def self._strptime_i(str, fmt, e) # :nodoc:
-    fmt.scan(/%[EO]?(:{1,3}z|.)|(.)/m) do |s, c|
-      if s
-	case s
-	when 'A', 'a'
-	  return unless str.sub!(/\A(#{Format::DAYS.keys.join('|')})/io, '') ||
-			str.sub!(/\A(#{Format::ABBR_DAYS.keys.join('|')})/io, '')
-	  val = Format::DAYS[$1.downcase] || Format::ABBR_DAYS[$1.downcase]
-	  return unless val
-	  e.wday = val
-	when 'B', 'b', 'h'
-	  return unless str.sub!(/\A(#{Format::MONTHS.keys.join('|')})/io, '') ||
-			str.sub!(/\A(#{Format::ABBR_MONTHS.keys.join('|')})/io, '')
-	  val = Format::MONTHS[$1.downcase] || Format::ABBR_MONTHS[$1.downcase]
-	  return unless val
-	  e.mon = val
-	when 'C'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,2})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e._cent = val
-	when 'c'
-	  return unless _strptime_i(str, '%a %b %e %H:%M:%S %Y', e)
-	when 'D'
-	  return unless _strptime_i(str, '%m/%d/%y', e)
-	when 'd', 'e'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..31) === val
-	  e.mday = val
-	when 'F'
-	  return unless _strptime_i(str, '%Y-%m-%d', e)
-	when 'G'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,4})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e.cwyear = val
-	when 'g'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..99) === val
-	  e.cwyear = val
-	  e._cent ||= if val >= 69 then 19 else 20 end
-	when 'H', 'k'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..24) === val
-	  e.hour = val
-	when 'I', 'l'
-	  return unless str.sub!(/\A( \d|\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..12) === val
-	  e.hour = val
-	when 'j'
-	  return unless str.sub!(/\A(\d{1,3})/, '')
-	  val = $1.to_i
-	  return unless (1..366) === val
-	  e.yday = val
-	when 'L'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,3})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-#	  val = $1.to_i.to_r / (10**3)
-	  val = $1.to_i.to_r / (10**$1.size)
-	  e.sec_fraction = val
-	when 'M'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..59) === val
-	  e.min = val
-	when 'm'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..12) === val
-	  e.mon = val
-	when 'N'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,9})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-#	  val = $1.to_i.to_r / (10**9)
-	  val = $1.to_i.to_r / (10**$1.size)
-	  e.sec_fraction = val
-	when 'n', 't'
-	  return unless _strptime_i(str, "\s", e)
-	when 'P', 'p'
-	  return unless str.sub!(/\A([ap])(?:m\b|\.m\.)/i, '')
-	  e._merid = if $1.downcase == 'a' then 0 else 12 end
-	when 'Q'
-	  return unless str.sub!(/\A(-?\d{1,})/, '')
-	  val = $1.to_i.to_r / 10**3
-	  e.seconds = val
-	when 'R'
-	  return unless _strptime_i(str, '%H:%M', e)
-	when 'r'
-	  return unless _strptime_i(str, '%I:%M:%S %p', e)
-	when 'S'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..60) === val
-	  e.sec = val
-	when 's'
-	  return unless str.sub!(/\A(-?\d{1,})/, '')
-	  val = $1.to_i
-	  e.seconds = val
-	when 'T'
-	  return unless _strptime_i(str, '%H:%M:%S', e)
-	when 'U', 'W'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..53) === val
-	  e.__send__(if s == 'U' then :wnum0= else :wnum1= end, val)
-	when 'u'
-	  return unless str.sub!(/\A(\d{1})/, '')
-	  val = $1.to_i
-	  return unless (1..7) === val
-	  e.cwday = val
-	when 'V'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (1..53) === val
-	  e.cweek = val
-	when 'v'
-	  return unless _strptime_i(str, '%e-%b-%Y', e)
-	when 'w'
-	  return unless str.sub!(/\A(\d{1})/, '')
-	  val = $1.to_i
-	  return unless (0..6) === val
-	  e.wday = val
-	when 'X'
-	  return unless _strptime_i(str, '%H:%M:%S', e)
-	when 'x'
-	  return unless _strptime_i(str, '%m/%d/%y', e)
-	when 'Y'
-	  return unless str.sub!(if num_pattern?($')
-				 then /\A([-+]?\d{1,4})/
-				 else /\A([-+]?\d{1,})/
-				 end, '')
-	  val = $1.to_i
-	  e.year = val
-	when 'y'
-	  return unless str.sub!(/\A(\d{1,2})/, '')
-	  val = $1.to_i
-	  return unless (0..99) === val
-	  e.year = val
-	  e._cent ||= if val >= 69 then 19 else 20 end
-	when 'Z', /\A:{0,3}z/
-	  return unless str.sub!(/\A((?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
-				    |[a-z.\s]+(?:standard|daylight)\s+time\b
-				    |[a-z]+(?:\s+dst)?\b
-				    )/ix, '')
-	  val = $1
-	  e.zone = val
-	  offset = zone_to_diff(val)
-	  e.offset = offset
-	when '%'
-	  return unless str.sub!(/\A%/, '')
-	when '+'
-	  return unless _strptime_i(str, '%a %b %e %H:%M:%S %Z %Y', e)
-	when '1'
-	  if $VERBOSE
-	    warn("warning: strptime: %1 is deprecated; forget this")
-	  end
-	  return unless str.sub!(/\A(\d+)/, '')
-	  val = $1.to_i
-	  e.jd = val
-	when '2'
-	  if $VERBOSE
-	    warn("warning: strptime: %2 is deprecated; use '%Y-%j'")
-	  end
-	  return unless _strptime_i(str, '%Y-%j', e)
-	when '3'
-	  if $VERBOSE
-	    warn("warning: strptime: %3 is deprecated; use '%F'")
-	  end
-	  return unless _strptime_i(str, '%F', e)
-	else
-	  return unless str.sub!(Regexp.new('\\A' + Regexp.quote(s)), '')
-	end
-      else
-	case c
-	when /\A[\s\v]/
-	  str.sub!(/\A[\s\v]+/, '')
-	else
-	  return unless str.sub!(Regexp.new('\\A' + Regexp.quote(c)), '')
-	end
-      end
-    end
-  end
-
-  private_class_method :_strptime_i
-
-  def self._strptime(str, fmt='%F')
-    e = Format::Bag.new
-    return unless _strptime_i(str.dup, fmt, e)
-
-    if e._cent
-      if e.cwyear
-	e.cwyear += e._cent * 100
-      end
-      if e.year
-	e.  year += e._cent * 100
-      end
-    end
-
-    if e._merid
-      if e.hour
-	e.hour %= 12
-	e.hour += e._merid
-      end
-    end
-
-    e.to_hash
-  end
-
-  def self.s3e(e, y, m, d, bc=false)
-    unless String === m
-      m = m.to_s
-    end
-
-    if y == nil
-      if d && d.size > 2
-	y = d
-	d = nil
-      end
-      if d && d[0,1] == "'"
-	y = d
-	d = nil
-      end
-    end
-
-    if y
-      y.scan(/(\d+)(.+)?/)
-      if $2
-	y, d = d, $1
-      end
-    end
-
-    if m
-      if m[0,1] == "'" || m.size > 2
-	y, m, d = m, d, y # us -> be
-      end
-    end
-
-    if d
-      if d[0,1] == "'" || d.size > 2
-	y, d = d, y
-      end
-    end
-
-    if y
-      y =~ /([-+])?(\d+)/
-      if $1 || $2.size > 2
-	c = false
-      end
-      iy = $&.to_i
-      if bc
-	iy = -iy + 1
-      end
-      e.year = iy
-    end
-
-    if m
-      m =~ /\d+/
-      e.mon = $&.to_i
-    end
-
-    if d
-      d =~ /\d+/
-      e.mday = $&.to_i
-    end
-
-    if c != nil
-      e._comp = c
-    end
-
-  end
-
-  private_class_method :s3e
-
-  def self._parse_day(str, e) # :nodoc:
-    if str.sub!(/\b(#{Format::ABBR_DAYS.keys.join('|')})[^-\d\s]*/ino, ' ')
-      e.wday = Format::ABBR_DAYS[$1.downcase]
-      true
-=begin
-    elsif str.sub!(/\b(?!\dth)(su|mo|tu|we|th|fr|sa)\b/in, ' ')
-      e.wday = %w(su mo tu we th fr sa).index($1.downcase)
-      true
-=end
-    end
-  end
-
-  def self._parse_time(str, e) # :nodoc:
-    if str.sub!(
-		/(
-		   (?:
-		     \d+\s*:\s*\d+
-		     (?:
-		       \s*:\s*\d+(?:[,.]\d*)?
-		     )?
-		   |
-		     \d+\s*h(?:\s*\d+m?(?:\s*\d+s?)?)?
-		   )
-		   (?:
-		     \s*
-		     [ap](?:m\b|\.m\.)
-		   )?
-		 |
-		   \d+\s*[ap](?:m\b|\.m\.)
-		 )
-		 (?:
-		   \s*
-		   (
-		     (?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
-		   |
-		     [a-z.\s]+(?:standard|daylight)\stime\b
-		   |
-		     [a-z]+(?:\sdst)?\b
-		   )
-		 )?
-		/inx,
-		' ')
-
-      t = $1
-      e.zone = $2 if $2
-
-      t =~ /\A(\d+)h?
-	      (?:\s*:?\s*(\d+)m?
-		(?:
-		  \s*:?\s*(\d+)(?:[,.](\d+))?s?
-		)?
-	      )?
-	    (?:\s*([ap])(?:m\b|\.m\.))?/inx
-
-      e.hour = $1.to_i
-      e.min = $2.to_i if $2
-      e.sec = $3.to_i if $3
-      e.sec_fraction = $4.to_i.to_r / (10**$4.size) if $4
-
-      if $5
-	e.hour %= 12
-	if $5.downcase == 'p'
-	  e.hour += 12
-	end
-      end
-      true
-    end
-  end
-
-  def self._parse_beat(str, e) # :nodoc:
-    if str.sub!(/@\s*(\d+)(?:[,.](\d*))?/, ' ')
-      beat = $1.to_i.to_r
-      beat += $2.to_i.to_r / (10**$2.size) if $2
-      secs = beat.to_r / 1000
-      h, min, s, fr = self.day_fraction_to_time(secs)
-      e.hour = h
-      e.min = min
-      e.sec = s
-      e.sec_fraction = fr * 86400
-      e.zone = '+01:00'
-      true
-    end
-  end
-
-  def self._parse_eu(str, e) # :nodoc:
-    if str.sub!(
-		/'?(\d+)[^-\d\s]*
-		 \s*
-		 (#{Format::ABBR_MONTHS.keys.join('|')})[^-\d\s']*
-		 (?:
-		   \s*
-		   (c(?:e|\.e\.)|b(?:ce|\.c\.e\.)|a(?:d|\.d\.)|b(?:c|\.c\.))?
-		   \s*
-		   ('?-?\d+(?:(?:st|nd|rd|th)\b)?)
-		 )?
-		/inox,
-		' ') # '
-      s3e(e, $4, Format::ABBR_MONTHS[$2.downcase], $1,
-	  $3 && $3[0,1].downcase == 'b')
-      true
-    end
-  end
-
-  def self._parse_us(str, e) # :nodoc:
-    if str.sub!(
-		/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-\d\s']*
-		 \s*
-		 ('?\d+)[^-\d\s']*
-		 (?:
-		   \s*
-		   (c(?:e|\.e\.)|b(?:ce|\.c\.e\.)|a(?:d|\.d\.)|b(?:c|\.c\.))?
-		   \s*
-		   ('?-?\d+)
-		 )?
-		/inox,
-		' ') # '
-      s3e(e, $4, Format::ABBR_MONTHS[$1.downcase], $2,
-	  $3 && $3[0,1].downcase == 'b')
-      true
-    end
-  end
-
-  def self._parse_iso(str, e) # :nodoc:
-    if str.sub!(/('?[-+]?\d+)-(\d+)-('?-?\d+)/n, ' ')
-      s3e(e, $1, $2, $3)
-      true
-    end
-  end
-
-  def self._parse_iso2(str, e) # :nodoc:
-    if str.sub!(/\b(\d{2}|\d{4})?-?w(\d{2})(?:-?(\d+))?/in, ' ')
-      e.cwyear = $1.to_i if $1
-      e.cweek = $2.to_i
-      e.cwday = $3.to_i if $3
-      true
-    elsif str.sub!(/--(\d{2})-(\d{2})\b/n, ' ')
-      e.mon = $1.to_i
-      e.mday = $2.to_i
-      true
-    elsif str.sub!(/\b(\d{2}|\d{4})-(\d{2,3})\b/n, ' ')
-      e.year = $1.to_i
-      if $2.size < 3
-	e.mon = $2.to_i
-      else
-	e.yday = $2.to_i
-      end
-      true
-    end
-  end
-
-  def self._parse_jis(str, e) # :nodoc:
-    if str.sub!(/\b([MTSH])(\d+)\.(\d+)\.(\d+)/in, ' ')
-      era = { 'm'=>1867,
-	      't'=>1911,
-	      's'=>1925,
-	      'h'=>1988
-	  }[$1.downcase]
-      e.year = $2.to_i + era
-      e.mon = $3.to_i
-      e.mday = $4.to_i
-      true
-    end
-  end
-
-  def self._parse_vms(str, e) # :nodoc:
-    if str.sub!(/('?-?\d+)-(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-		-('?-?\d+)/inox, ' ')
-      s3e(e, $3, Format::ABBR_MONTHS[$2.downcase], $1)
-      true
-    elsif str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-		-('?-?\d+)(?:-('?-?\d+))?/inox, ' ')
-      s3e(e, $3, Format::ABBR_MONTHS[$1.downcase], $2)
-      true
-    end
-  end
-
-  def self._parse_sla_ja(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $1, $2, $3)
-      true
-    end
-  end
-
-  def self._parse_sla_eu(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $3, $2, $1)
-      true
-    end
-  end
-
-  def self._parse_sla_us(str, e) # :nodoc:
-    if str.sub!(%r|('?-?\d+)[/.]\s*('?\d+)(?:[^\d]\s*('?-?\d+))?|n, ' ') # '
-      s3e(e, $3, $1, $2)
-      true
-    end
-  end
-
-  def self._parse_year(str, e) # :nodoc:
-    if str.sub!(/'(\d+)\b/in, ' ')
-      e.year = $1.to_i
-      true
-    end
-  end
-
-  def self._parse_mon(str, e) # :nodoc:
-    if str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})\S*/ino, ' ')
-      e.mon = Format::ABBR_MONTHS[$1.downcase]
-      true
-    end
-  end
-
-  def self._parse_mday(str, e) # :nodoc:
-    if str.sub!(/(\d+)(st|nd|rd|th)\b/in, ' ')
-      e.mday = $1.to_i
-      true
-    end
-  end
-
-  def self._parse_ddd(str, e) # :nodoc:
-    if str.sub!(
-		/([-+]?)(\d{2,14})
-		  (?:
-		    \s*
-		    T?
-		    \s*
-		    (\d{2,6})(?:[,.](\d*))?
-		  )?
-		  (?:
-		    \s*
-		    (
-		      Z
-		    |
-		      [-+]\d{1,4}
-		    )
-		    \b
-		  )?
-		/inx,
-		' ')
-      case $2.size
-      when 2
-	e.mday = $2[ 0, 2].to_i
-      when 4
-	e.mon  = $2[ 0, 2].to_i
-	e.mday = $2[ 2, 2].to_i
-      when 6
-	e.year = ($1 + $2[ 0, 2]).to_i
-	e.mon  = $2[ 2, 2].to_i
-	e.mday = $2[ 4, 2].to_i
-      when 8, 10, 12, 14
-	e.year = ($1 + $2[ 0, 4]).to_i
-	e.mon  = $2[ 4, 2].to_i
-	e.mday = $2[ 6, 2].to_i
-	e.hour = $2[ 8, 2].to_i if $2.size >= 10
-	e.min  = $2[10, 2].to_i if $2.size >= 12
-	e.sec  = $2[12, 2].to_i if $2.size >= 14
-	e._comp = false
-      when 3
-	e.yday = $2[ 0, 3].to_i
-      when 5
-	e.year = ($1 + $2[ 0, 2]).to_i
-	e.yday = $2[ 2, 3].to_i
-      when 7
-	e.year = ($1 + $2[ 0, 4]).to_i
-	e.yday = $2[ 4, 3].to_i
-      end
-      if $3
-	case $3.size
-	when 2, 4, 6
-	  e.hour = $3[ 0, 2].to_i
-	  e.min  = $3[ 2, 2].to_i if $3.size >= 4
-	  e.sec  = $3[ 4, 2].to_i if $3.size >= 6
-	end
-      end
-      if $4
-	e.sec_fraction = $4.to_i.to_r / (10**$4.size)
-      end
-      if $5
-	e.zone = $5
-      end
-      true
-    end
-  end
-
-  private_class_method :_parse_day, :_parse_time, :_parse_beat,
-	:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
-	:_parse_jis, :_parse_vms,
-	:_parse_sla_ja, :_parse_sla_eu, :_parse_sla_us,
-	:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd
-
-  def self._parse(str, comp=false)
-    str = str.dup
-
-    e = Format::Bag.new
-
-    e._comp = comp
-
-    str.gsub!(/[^-+',.\/:0-9 at a-z\x80-\xff]+/in, ' ')
-
-    _parse_time(str, e) # || _parse_beat(str, e)
-    _parse_day(str, e)
-
-    _parse_eu(str, e)     ||
-    _parse_us(str, e)     ||
-    _parse_iso(str, e)    ||
-    _parse_jis(str, e)    ||
-    _parse_vms(str, e)    ||
-    _parse_sla_us(str, e) ||
-    _parse_iso2(str, e)   ||
-    _parse_year(str, e)   ||
-    _parse_mon(str, e)    ||
-    _parse_mday(str, e)   ||
-    _parse_ddd(str, e)
-
-    if str.sub!(/\b(bc\b|bce\b|b\.c\.|b\.c\.e\.)/in, ' ')
-      if e.year
-	e.year = -e.year + 1
-      end
-    end
-
-    if str.sub!(/\A\s*(\d{1,2})\s*\z/n, ' ')
-      if e.hour && !e.mday
-	v = $1.to_i
-	if (1..31) === v
-	  e.mday = v
-	end
-      end
-      if e.mday && !e.hour
-	v = $1.to_i
-	if (0..24) === v
-	  e.hour = v
-	end
-      end
-    end
-
-    if e._comp and e.year
-      if e.year >= 0 and e.year <= 99
-	if e.year >= 69
-	  e.year += 1900
-	else
-	  e.year += 2000
-	end
-      end
-    end
-
-    e.offset ||= zone_to_diff(e.zone) if e.zone
-
-    e.to_hash
-  end
-
-  def self.zone_to_diff(zone) # :nodoc:
-    zone = zone.downcase
-    if zone.sub!(/\s+(standard|daylight)\s+time\z/, '')
-      dst = $1 == 'daylight'
-    else
-      dst = zone.sub!(/\s+dst\z/, '')
-    end
-    if Format::ZONES.include?(zone)
-      offset = Format::ZONES[zone]
-      offset += 3600 if dst
-    elsif zone.sub!(/\A(?:gmt|utc?)?([-+])/, '')
-      sign = $1
-      if zone.include?(':')
-	hour, min, sec, = zone.split(':')
-      elsif zone.include?(',') || zone.include?('.')
-	hour, fr, = zone.split(/[,.]/)
-	min = fr.to_i.to_r / (10**fr.size) * 60
-      else
-	case zone.size
-	when 3
-	  hour = zone[0,1]
-	  min = zone[1,2]
-	else
-	  hour = zone[0,2]
-	  min = zone[2,2]
-	  sec = zone[4,2]
-	end
-      end
-      offset = hour.to_i * 3600 + min.to_i * 60 + sec.to_i
-      offset *= -1 if sign == '-'
-    end
-    offset
-  end
-
-end
-
-class DateTime < Date
-
-  def strftime(fmt='%FT%T%:z')
-    super(fmt)
-  end
-
-  def self._strptime(str, fmt='%FT%T%z')
-    super(str, fmt)
-  end
-
-=begin
-  def iso8601_timediv(n) # :nodoc:
-    strftime('T%T' +
-	     if n < 1
-	       ''
-	     else
-	       '.%0*d' % [n, (sec_fraction / (1.to_r/86400/(10**n))).round]
-	     end +
-	     '%:z')
-  end
-
-  private :iso8601_timediv
-
-  def iso8601(n=0)
-    super() + iso8601_timediv(n)
-  end
-
-  def rfc3339(n=0) iso8601(n) end
-
-  def jisx0301(n=0)
-    super() + iso8601_timediv(n)
-  end
-=end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date2.rb
deleted file mode 100644
index f7da78f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/date2.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# date2 was overridden by date.
-# To be precise, date was overridden by date2,
-# and date2 was renamed to date.
-
-require 'date'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/debug.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/debug.rb
deleted file mode 100644
index 9ae119f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/debug.rb
+++ /dev/null
@@ -1,947 +0,0 @@
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-# Copyright (C) 2000-2003  NAKAMURA, Hiroshi  <nahi at ruby-lang.org>
-
-if $SAFE > 0
-  STDERR.print "-r debug.rb is not available in safe mode\n"
-  exit 1
-end
-
-require 'tracer'
-require 'pp'
-
-class Tracer
-  def Tracer.trace_func(*vars)
-    Single.trace_func(*vars)
-  end
-end
-
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
-
-class DEBUGGER__
-class Mutex
-  def initialize
-    @locker = nil
-    @waiting = []
-    @locked = false;
-  end
-
-  def locked?
-    @locked
-  end
-
-  def lock
-    return if Thread.critical
-    return if @locker == Thread.current
-    while (Thread.critical = true; @locked)
-      @waiting.push Thread.current
-      Thread.stop
-    end
-    @locked = true
-    @locker = Thread.current
-    Thread.critical = false
-    self
-  end
-
-  def unlock
-    return if Thread.critical
-    return unless @locked
-    unless @locker == Thread.current
-      raise RuntimeError, "unlocked by other"
-    end
-    Thread.critical = true
-    t = @waiting.shift
-    @locked = false
-    @locker = nil
-    Thread.critical = false
-    t.run if t
-    self
-  end
-end
-MUTEX = Mutex.new
-
-class Context
-  DEBUG_LAST_CMD = []
-
-  begin
-    require 'readline'
-    def readline(prompt, hist)
-      Readline::readline(prompt, hist)
-    end
-  rescue LoadError
-    def readline(prompt, hist)
-      STDOUT.print prompt
-      STDOUT.flush
-      line = STDIN.gets
-      exit unless line
-      line.chomp!
-      line
-    end
-    USE_READLINE = false
-  end
-
-  def initialize
-    if Thread.current == Thread.main
-      @stop_next = 1
-    else
-      @stop_next = 0
-    end
-    @last_file = nil
-    @file = nil
-    @line = nil
-    @no_step = nil
-    @frames = []
-    @finish_pos = 0
-    @trace = false
-    @catch = "StandardError"
-    @suspend_next = false
-  end
-
-  def stop_next(n=1)
-    @stop_next = n
-  end
-
-  def set_suspend
-    @suspend_next = true
-  end
-
-  def clear_suspend
-    @suspend_next = false
-  end
-
-  def suspend_all
-    DEBUGGER__.suspend
-  end
-
-  def resume_all
-    DEBUGGER__.resume
-  end
-
-  def check_suspend
-    return if Thread.critical
-    while (Thread.critical = true; @suspend_next)
-      DEBUGGER__.waiting.push Thread.current
-      @suspend_next = false
-      Thread.stop
-    end
-    Thread.critical = false
-  end
-
-  def trace?
-    @trace
-  end
-
-  def set_trace(arg)
-    @trace = arg
-  end
-
-  def stdout
-    DEBUGGER__.stdout
-  end
-
-  def break_points
-    DEBUGGER__.break_points
-  end
-
-  def display
-    DEBUGGER__.display
-  end
-
-  def context(th)
-    DEBUGGER__.context(th)
-  end
-
-  def set_trace_all(arg)
-    DEBUGGER__.set_trace(arg)
-  end
-
-  def set_last_thread(th)
-    DEBUGGER__.set_last_thread(th)
-  end
-
-  def debug_eval(str, binding)
-    begin
-      val = eval(str, binding)
-    rescue StandardError, ScriptError => e
-      at = eval("caller(1)", binding)
-      stdout.printf "%s:%s\n", at.shift, e.to_s.sub(/\(eval\):1:(in `.*?':)?/, '')
-      for i in at
-	stdout.printf "\tfrom %s\n", i
-      end
-      throw :debug_error
-    end
-  end
-
-  def debug_silent_eval(str, binding)
-    begin
-      eval(str, binding)
-    rescue StandardError, ScriptError
-      nil
-    end
-  end
-
-  def var_list(ary, binding)
-    ary.sort!
-    for v in ary
-      stdout.printf "  %s => %s\n", v, eval(v, binding).inspect
-    end
-  end
-
-  def debug_variable_info(input, binding)
-    case input
-    when /^\s*g(?:lobal)?\s*$/
-      var_list(global_variables, binding)
-
-    when /^\s*l(?:ocal)?\s*$/
-      var_list(eval("local_variables", binding), binding)
-
-    when /^\s*i(?:nstance)?\s+/
-      obj = debug_eval($', binding)
-      var_list(obj.instance_variables, obj.instance_eval{binding()})
-
-    when /^\s*c(?:onst(?:ant)?)?\s+/
-      obj = debug_eval($', binding)
-      unless obj.kind_of? Module
-	stdout.print "Should be Class/Module: ", $', "\n"
-      else
-	var_list(obj.constants, obj.module_eval{binding()})
-      end
-    end
-  end
-
-  def debug_method_info(input, binding)
-    case input
-    when /^i(:?nstance)?\s+/
-      obj = debug_eval($', binding)
-
-      len = 0
-      for v in obj.methods.sort
-	len += v.size + 1
-	if len > 70
-	  len = v.size + 1
-	  stdout.print "\n"
-	end
-	stdout.print v, " "
-      end
-      stdout.print "\n"
-
-    else
-      obj = debug_eval(input, binding)
-      unless obj.kind_of? Module
-	stdout.print "Should be Class/Module: ", input, "\n"
-      else
-	len = 0
-	for v in obj.instance_methods(false).sort
-	  len += v.size + 1
-	  if len > 70
-	    len = v.size + 1
-	    stdout.print "\n"
-	  end
-	  stdout.print v, " "
-	end
-	stdout.print "\n"
-      end
-    end
-  end
-
-  def thnum
-    num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-    unless num
-      DEBUGGER__.make_thread_list
-      num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-    end
-    num
-  end
-
-  def debug_command(file, line, id, binding)
-    MUTEX.lock
-    unless defined?($debugger_restart) and $debugger_restart
-      callcc{|c| $debugger_restart = c} 
-    end
-    set_last_thread(Thread.current)
-    frame_pos = 0
-    binding_file = file
-    binding_line = line
-    previous_line = nil
-    if ENV['EMACS']
-      stdout.printf "\032\032%s:%d:\n", binding_file, binding_line
-    else
-      stdout.printf "%s:%d:%s", binding_file, binding_line,
-	line_at(binding_file, binding_line)
-    end
-    @frames[0] = [binding, file, line, id]
-    display_expressions(binding)
-    prompt = true
-    while prompt and input = readline("(rdb:%d) "%thnum(), true)
-      catch(:debug_error) do
-	if input == ""
-          next unless DEBUG_LAST_CMD[0]
-	  input = DEBUG_LAST_CMD[0]
-	  stdout.print input, "\n"
-	else
-	  DEBUG_LAST_CMD[0] = input
-	end
-
-	case input
-	when /^\s*tr(?:ace)?(?:\s+(on|off))?(?:\s+(all))?$/
-          if defined?( $2 )
-            if $1 == 'on'
-              set_trace_all true
-            else
-              set_trace_all false
-            end
-          elsif defined?( $1 )
-            if $1 == 'on'
-              set_trace true
-            else
-              set_trace false
-            end
-          end
-          if trace?
-            stdout.print "Trace on.\n"
-          else
-            stdout.print "Trace off.\n"
-          end
-
-	when /^\s*b(?:reak)?\s+(?:(.+):)?([^.:]+)$/
-	  pos = $2
-          if $1
-            klass = debug_silent_eval($1, binding)
-            file = $1
-          end
-	  if pos =~ /^\d+$/
-	    pname = pos
-	    pos = pos.to_i
-	  else
-	    pname = pos = pos.intern.id2name
-	  end
-	  break_points.push [true, 0, klass || file, pos]
-	  stdout.printf "Set breakpoint %d at %s:%s\n", break_points.size, klass || file, pname
-
-	when /^\s*b(?:reak)?\s+(.+)[#.]([^.:]+)$/
-	  pos = $2.intern.id2name
-	  klass = debug_eval($1, binding)
-	  break_points.push [true, 0, klass, pos]
-	  stdout.printf "Set breakpoint %d at %s.%s\n", break_points.size, klass, pos
-
-	when /^\s*wat(?:ch)?\s+(.+)$/
-	  exp = $1
-	  break_points.push [true, 1, exp]
-	  stdout.printf "Set watchpoint %d:%s\n", break_points.size, exp
-
-	when /^\s*b(?:reak)?$/
-	  if break_points.find{|b| b[1] == 0}
-	    n = 1
-	    stdout.print "Breakpoints:\n"
-	    for b in break_points
-	      if b[0] and b[1] == 0
-		stdout.printf "  %d %s:%s\n", n, b[2], b[3] 
-	      end
-	      n += 1
-	    end
-	  end
-	  if break_points.find{|b| b[1] == 1}
-	    n = 1
-	    stdout.print "\n"
-	    stdout.print "Watchpoints:\n"
-	    for b in break_points
-	      if b[0] and b[1] == 1
-		stdout.printf "  %d %s\n", n, b[2]
-	      end
-	      n += 1
-	    end
-	  end
-	  if break_points.size == 0
-	    stdout.print "No breakpoints\n"
-	  else
-	    stdout.print "\n"
-	  end
-
-	when /^\s*del(?:ete)?(?:\s+(\d+))?$/
-	  pos = $1
-	  unless pos
-	    input = readline("Clear all breakpoints? (y/n) ", false)
-	    if input == "y"
-	      for b in break_points
-		b[0] = false
-	      end
-	    end
-	  else
-	    pos = pos.to_i
-	    if break_points[pos-1]
-	      break_points[pos-1][0] = false
-	    else
-	      stdout.printf "Breakpoint %d is not defined\n", pos
-	    end
-	  end
-
-	when /^\s*disp(?:lay)?\s+(.+)$/
-	  exp = $1
-	  display.push [true, exp]
-	  stdout.printf "%d: ", display.size
-	  display_expression(exp, binding)
-
-	when /^\s*disp(?:lay)?$/
-	  display_expressions(binding)
-
-	when /^\s*undisp(?:lay)?(?:\s+(\d+))?$/
-	  pos = $1
-	  unless pos
-	    input = readline("Clear all expressions? (y/n) ", false)
-	    if input == "y"
-	      for d in display
-		d[0] = false
-	      end
-	    end
-	  else
-	    pos = pos.to_i
-	    if display[pos-1]
-	      display[pos-1][0] = false
-	    else
-	      stdout.printf "Display expression %d is not defined\n", pos
-	    end
-	  end
-
-	when /^\s*c(?:ont)?$/
-	  prompt = false
-
-	when /^\s*s(?:tep)?(?:\s+(\d+))?$/
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  @stop_next = lev
-	  prompt = false
-
-	when /^\s*n(?:ext)?(?:\s+(\d+))?$/
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  @stop_next = lev
-	  @no_step = @frames.size - frame_pos
-	  prompt = false
-
-	when /^\s*w(?:here)?$/, /^\s*f(?:rame)?$/
-	  display_frames(frame_pos)
-
-	when /^\s*l(?:ist)?(?:\s+(.+))?$/
-	  if not $1
-	    b = previous_line ? previous_line + 10 : binding_line - 5
-	    e = b + 9
-	  elsif $1 == '-'
-	    b = previous_line ? previous_line - 10 : binding_line - 5
-	    e = b + 9
-	  else
-	    b, e = $1.split(/[-,]/)
-	    if e
-	      b = b.to_i
-	      e = e.to_i
-	    else
-	      b = b.to_i - 5
-	      e = b + 9
-	    end
-	  end
-	  previous_line = b
-	  display_list(b, e, binding_file, binding_line)
-
-	when /^\s*up(?:\s+(\d+))?$/
-	  previous_line = nil
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  frame_pos += lev
-	  if frame_pos >= @frames.size
-	    frame_pos = @frames.size - 1
-	    stdout.print "At toplevel\n"
-	  end
-	  binding, binding_file, binding_line = @frames[frame_pos]
-	  stdout.print format_frame(frame_pos)
-
-	when /^\s*down(?:\s+(\d+))?$/
-	  previous_line = nil
-	  if $1
-	    lev = $1.to_i
-	  else
-	    lev = 1
-	  end
-	  frame_pos -= lev
-	  if frame_pos < 0
-	    frame_pos = 0
-	    stdout.print "At stack bottom\n"
-	  end
-	  binding, binding_file, binding_line = @frames[frame_pos]
-	  stdout.print format_frame(frame_pos)
-
-	when /^\s*fin(?:ish)?$/
-	  if frame_pos == @frames.size
-	    stdout.print "\"finish\" not meaningful in the outermost frame.\n"
-	  else
-	    @finish_pos = @frames.size - frame_pos
-	    frame_pos = 0
-	    prompt = false
-	  end
-
-	when /^\s*cat(?:ch)?(?:\s+(.+))?$/
-	  if $1
-	    excn = $1
-	    if excn == 'off'
-	      @catch = nil
-	      stdout.print "Clear catchpoint.\n"
-	    else
-	      @catch = excn
-	      stdout.printf "Set catchpoint %s.\n", @catch
-	    end
-	  else
-	    if @catch
-	      stdout.printf "Catchpoint %s.\n", @catch
-	    else
-	      stdout.print "No catchpoint.\n"
-	    end
-	  end
-
-	when /^\s*q(?:uit)?$/
-	  input = readline("Really quit? (y/n) ", false)
-	  if input == "y"
-	    exit!	# exit -> exit!: No graceful way to stop threads...
-	  end
-
-	when /^\s*v(?:ar)?\s+/
-	  debug_variable_info($', binding)
-
-	when /^\s*m(?:ethod)?\s+/
-	  debug_method_info($', binding)
-
-	when /^\s*th(?:read)?\s+/
-	  if DEBUGGER__.debug_thread_info($', binding) == :cont
-	    prompt = false
-	  end
-
-	when /^\s*pp\s+/
-	  PP.pp(debug_eval($', binding), stdout)
-
-	when /^\s*p\s+/
-	  stdout.printf "%s\n", debug_eval($', binding).inspect
-
-	when /^\s*r(?:estart)?$/
-          $debugger_restart.call
-
-	when /^\s*h(?:elp)?$/
-	  debug_print_help()
-
-	else
-	  v = debug_eval(input, binding)
-	  stdout.printf "%s\n", v.inspect
-	end
-      end
-    end
-    MUTEX.unlock
-    resume_all
-  end
-
-  def debug_print_help
-    stdout.print <<EOHELP
-Debugger help v.-0.002b
-Commands
-  b[reak] [file:|class:]<line|method>
-  b[reak] [class.]<line|method>
-                             set breakpoint to some position
-  wat[ch] <expression>       set watchpoint to some expression
-  cat[ch] (<exception>|off)  set catchpoint to an exception
-  b[reak]                    list breakpoints
-  cat[ch]                    show catchpoint
-  del[ete][ nnn]             delete some or all breakpoints
-  disp[lay] <expression>     add expression into display expression list
-  undisp[lay][ nnn]          delete one particular or all display expressions
-  c[ont]                     run until program ends or hit breakpoint
-  s[tep][ nnn]               step (into methods) one line or till line nnn
-  n[ext][ nnn]               go over one line or till line nnn
-  w[here]                    display frames
-  f[rame]                    alias for where
-  l[ist][ (-|nn-mm)]         list program, - lists backwards
-                             nn-mm lists given lines
-  up[ nn]                    move to higher frame
-  down[ nn]                  move to lower frame
-  fin[ish]                   return to outer frame
-  tr[ace] (on|off)           set trace mode of current thread
-  tr[ace] (on|off) all       set trace mode of all threads
-  q[uit]                     exit from debugger
-  v[ar] g[lobal]             show global variables
-  v[ar] l[ocal]              show local variables
-  v[ar] i[nstance] <object>  show instance variables of object
-  v[ar] c[onst] <object>     show constants of object
-  m[ethod] i[nstance] <obj>  show methods of object
-  m[ethod] <class|module>    show instance methods of class or module
-  th[read] l[ist]            list all threads
-  th[read] c[ur[rent]]       show current thread
-  th[read] [sw[itch]] <nnn>  switch thread context to nnn
-  th[read] stop <nnn>        stop thread nnn
-  th[read] resume <nnn>      resume thread nnn
-  p expression               evaluate expression and print its value
-  h[elp]                     print this help
-  <everything else>          evaluate
-EOHELP
-  end
-
-  def display_expressions(binding)
-    n = 1
-    for d in display
-      if d[0]
-	stdout.printf "%d: ", n
-	display_expression(d[1], binding)
-      end
-      n += 1
-    end
-  end
-
-  def display_expression(exp, binding)
-    stdout.printf "%s = %s\n", exp, debug_silent_eval(exp, binding).to_s
-  end
-
-  def frame_set_pos(file, line)
-    if @frames[0]
-      @frames[0][1] = file
-      @frames[0][2] = line
-    end
-  end
-
-  def display_frames(pos)
-    0.upto(@frames.size - 1) do |n|
-      if n == pos
-	stdout.print "--> "
-      else
-	stdout.print "    "
-      end
-      stdout.print format_frame(n)
-    end
-  end
-
-  def format_frame(pos)
-    bind, file, line, id = @frames[pos]
-    sprintf "#%d %s:%s%s\n", pos + 1, file, line,
-      (id ? ":in `#{id.id2name}'" : "")
-  end
-
-  def display_list(b, e, file, line)
-    stdout.printf "[%d, %d] in %s\n", b, e, file
-    if lines = SCRIPT_LINES__[file] and lines != true
-      n = 0
-      b.upto(e) do |n|
-	if n > 0 && lines[n-1]
-	  if n == line
-	    stdout.printf "=> %d  %s\n", n, lines[n-1].chomp
-	  else
-	    stdout.printf "   %d  %s\n", n, lines[n-1].chomp
-	  end
-	end
-      end
-    else
-      stdout.printf "No sourcefile available for %s\n", file
-    end
-  end
-
-  def line_at(file, line)
-    lines = SCRIPT_LINES__[file]
-    if lines
-      return "\n" if lines == true
-      line = lines[line-1]
-      return "\n" unless line
-      return line
-    end
-    return "\n"
-  end
-
-  def debug_funcname(id)
-    if id.nil?
-      "toplevel"
-    else
-      id.id2name
-    end
-  end
-
-  def check_break_points(file, klass, pos, binding, id)
-    return false if break_points.empty?
-    n = 1
-    for b in break_points
-      if b[0]		# valid
-	if b[1] == 0	# breakpoint
-	  if (b[2] == file and b[3] == pos) or
-	      (klass and b[2] == klass and b[3] == pos)
-	    stdout.printf "Breakpoint %d, %s at %s:%s\n", n, debug_funcname(id), file, pos
-	    return true
-	  end
-	elsif b[1] == 1	# watchpoint
-	  if debug_silent_eval(b[2], binding)
-	    stdout.printf "Watchpoint %d, %s at %s:%s\n", n, debug_funcname(id), file, pos
-	    return true
-	  end
-	end
-      end
-      n += 1
-    end
-    return false
-  end
-
-  def excn_handle(file, line, id, binding)
-    if $!.class <= SystemExit
-      set_trace_func nil
-      exit
-    end
-
-    if @catch and ($!.class.ancestors.find { |e| e.to_s == @catch })
-      stdout.printf "%s:%d: `%s' (%s)\n", file, line, $!, $!.class
-      fs = @frames.size
-      tb = caller(0)[-fs..-1]
-      if tb
-	for i in tb
-	  stdout.printf "\tfrom %s\n", i
-	end
-      end
-      suspend_all
-      debug_command(file, line, id, binding)
-    end
-  end
-
-  def trace_func(event, file, line, id, binding, klass)
-    Tracer.trace_func(event, file, line, id, binding, klass) if trace?
-    context(Thread.current).check_suspend
-    @file = file
-    @line = line
-    case event
-    when 'line'
-      frame_set_pos(file, line)
-      if !@no_step or @frames.size == @no_step
-	@stop_next -= 1
-	@stop_next = -1 if @stop_next < 0
-      elsif @frames.size < @no_step
-	@stop_next = 0		# break here before leaving...
-      else
-	# nothing to do. skipped.
-      end
-      if @stop_next == 0 or check_break_points(file, nil, line, binding, id)
-	@no_step = nil
-	suspend_all
-	debug_command(file, line, id, binding)
-      end
-
-    when 'call'
-      @frames.unshift [binding, file, line, id]
-      if check_break_points(file, klass, id.id2name, binding, id)
-	suspend_all
-	debug_command(file, line, id, binding)
-      end
-
-    when 'c-call'
-      frame_set_pos(file, line)
-
-    when 'class'
-      @frames.unshift [binding, file, line, id]
-
-    when 'return', 'end'
-      if @frames.size == @finish_pos
-	@stop_next = 1
-	@finish_pos = 0
-      end
-      @frames.shift
-
-    when 'end'
-      @frames.shift
-
-    when 'raise' 
-      excn_handle(file, line, id, binding)
-
-    end
-    @last_file = file
-  end
-end
-
-trap("INT") { DEBUGGER__.interrupt }
- at last_thread = Thread::main
- at max_thread = 1
- at thread_list = {Thread::main => 1}
- at break_points = []
- at display = []
- at waiting = []
- at stdout = STDOUT
-
-class << DEBUGGER__
-  def stdout
-    @stdout
-  end
-
-  def stdout=(s)
-    @stdout = s
-  end
-
-  def display
-    @display
-  end
-
-  def break_points
-    @break_points
-  end
-
-  def waiting
-    @waiting
-  end
-
-  def set_trace( arg )
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      context(th).set_trace arg
-    end
-    Thread.critical = saved_crit
-    arg
-  end
-
-  def set_last_thread(th)
-    @last_thread = th
-  end
-
-  def suspend
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      next if th == Thread.current
-      context(th).set_suspend
-    end
-    Thread.critical = saved_crit
-    # Schedule other threads to suspend as soon as possible.
-    Thread.pass unless Thread.critical
-  end
-
-  def resume
-    saved_crit = Thread.critical
-    Thread.critical = true
-    make_thread_list
-    for th, in @thread_list
-      next if th == Thread.current
-      context(th).clear_suspend
-    end
-    waiting.each do |th|
-      th.run
-    end
-    waiting.clear
-    Thread.critical = saved_crit
-    # Schedule other threads to restart as soon as possible.
-    Thread.pass
-  end
-
-  def context(thread=Thread.current)
-    c = thread[:__debugger_data__]
-    unless c
-      thread[:__debugger_data__] = c = Context.new
-    end
-    c
-  end
-
-  def interrupt
-    context(@last_thread).stop_next
-  end
-
-  def get_thread(num)
-    th = @thread_list.index(num)
-    unless th
-      @stdout.print "No thread ##{num}\n"
-      throw :debug_error
-    end
-    th
-  end
-
-  def thread_list(num)
-    th = get_thread(num)
-    if th == Thread.current
-      @stdout.print "+"
-    else
-      @stdout.print " "
-    end
-    @stdout.printf "%d ", num
-    @stdout.print th.inspect, "\t"
-    file = context(th).instance_eval{@file}
-    if file
-      @stdout.print file,":",context(th).instance_eval{@line}
-    end
-    @stdout.print "\n"
-  end
-
-  def thread_list_all
-    for th in @thread_list.values.sort
-      thread_list(th)
-    end
-  end
-
-  def make_thread_list
-    hash = {}
-    for th in Thread::list
-      if @thread_list.key? th
-	hash[th] = @thread_list[th]
-      else
-	@max_thread += 1
-	hash[th] = @max_thread
-      end
-    end
-    @thread_list = hash
-  end
-
-  def debug_thread_info(input, binding)
-    case input
-    when /^l(?:ist)?/
-      make_thread_list
-      thread_list_all
-
-    when /^c(?:ur(?:rent)?)?$/
-      make_thread_list
-      thread_list(@thread_list[Thread.current])
-
-    when /^(?:sw(?:itch)?\s+)?(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      else
-	thread_list(@thread_list[th])
-	context(th).stop_next
-	th.run
-	return :cont
-      end
-
-    when /^stop\s+(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      elsif th.stop?
-	@stdout.print "Already stopped.\n"
-      else
-	thread_list(@thread_list[th])
-	context(th).suspend 
-      end
-
-    when /^resume\s+(\d+)/
-      make_thread_list
-      th = get_thread($1.to_i)
-      if th == Thread.current
-	@stdout.print "It's the current thread.\n"
-      elsif !th.stop?
-	@stdout.print "Already running."
-      else
-	thread_list(@thread_list[th])
-	th.run
-      end
-    end
-  end
-end
-
-stdout.printf "Debug.rb\n"
-stdout.printf "Emacs support available.\n\n"
-set_trace_func proc { |event, file, line, id, binding, klass, *rest|
-  DEBUGGER__.context.trace_func event, file, line, id, binding, klass
-}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/delegate.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/delegate.rb
deleted file mode 100644
index ee5fe8d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/delegate.rb
+++ /dev/null
@@ -1,339 +0,0 @@
-# = delegate -- Support for the Delegation Pattern
-#
-# Documentation by James Edward Gray II and Gavin Sinclair
-#
-# == Introduction
-#
-# This library provides three different ways to delegate method calls to an
-# object.  The easiest to use is SimpleDelegator.  Pass an object to the
-# constructor and all methods supported by the object will be delegated.  This
-# object can be changed later.
-#
-# Going a step further, the top level DelegateClass method allows you to easily
-# setup delegation through class inheritance.  This is considerably more
-# flexible and thus probably the most common use for this library.
-#
-# Finally, if you need full control over the delegation scheme, you can inherit
-# from the abstract class Delegator and customize as needed.  (If you find
-# yourself needing this control, have a look at _forwardable_, also in the
-# standard library.  It may suit your needs better.)
-#
-# == Notes
-#
-# Be advised, RDoc will not detect delegated methods.
-#
-# <b>delegate.rb provides full-class delegation via the
-# DelegateClass() method.  For single-method delegation via
-# def_delegator(), see forwardable.rb.</b>
-#
-# == Examples
-#
-# === SimpleDelegator
-#
-# Here's a simple example that takes advantage of the fact that
-# SimpleDelegator's delegation object can be changed at any time.
-#
-#   class Stats
-#     def initialize
-#       @source = SimpleDelegator.new([])
-#     end
-#     
-#     def stats( records )
-#       @source.__setobj__(records)
-#       	
-#       "Elements:  #{@source.size}\n" +
-#       " Non-Nil:  #{@source.compact.size}\n" +
-#       "  Unique:  #{@source.uniq.size}\n"
-#     end
-#   end
-#   
-#   s = Stats.new
-#   puts s.stats(%w{James Edward Gray II})
-#   puts
-#   puts s.stats([1, 2, 3, nil, 4, 5, 1, 2])
-#
-# <i>Prints:</i>
-#
-#   Elements:  4
-#    Non-Nil:  4
-#     Unique:  4
-# 
-#   Elements:  8
-#    Non-Nil:  7
-#     Unique:  6
-#
-# === DelegateClass()
-#
-# Here's a sample of use from <i>tempfile.rb</i>.
-#
-# A _Tempfile_ object is really just a _File_ object with a few special rules
-# about storage location and/or when the File should be deleted.  That makes for
-# an almost textbook perfect example of how to use delegation.
-#
-#   class Tempfile < DelegateClass(File)
-#     # constant and class member data initialization...
-#   
-#     def initialize(basename, tmpdir=Dir::tmpdir)
-#       # build up file path/name in var tmpname...
-#     
-#       @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
-#     
-#       # ...
-#     
-#       super(@tmpfile)
-#     
-#       # below this point, all methods of File are supported...
-#     end
-#   
-#     # ...
-#   end
-#
-# === Delegator
-#
-# SimpleDelegator's implementation serves as a nice example here.
-#
-#    class SimpleDelegator < Delegator
-#      def initialize(obj)
-#        super             # pass obj to Delegator constructor, required
-#        @_sd_obj = obj    # store obj for future use
-#      end
-# 
-#      def __getobj__
-#        @_sd_obj          # return object we are delegating to, required
-#      end
-# 
-#      def __setobj__(obj)
-#        @_sd_obj = obj    # change delegation object, a feature we're providing
-#      end
-# 
-#      # ...
-#    end
-
-#
-# Delegator is an abstract class used to build delegator pattern objects from
-# subclasses.  Subclasses should redefine \_\_getobj\_\_.  For a concrete
-# implementation, see SimpleDelegator.
-#
-class Delegator
-
-  #
-  # Pass in the _obj_ to delegate method calls to.  All methods supported by
-  # _obj_ will be delegated to.
-  #
-  def initialize(obj)
-    preserved = ::Kernel.public_instance_methods(false)
-    preserved -= ["to_s","to_a","inspect","==","=~","==="]
-    for t in self.class.ancestors
-      preserved |= t.public_instance_methods(false)
-      preserved |= t.private_instance_methods(false)
-      preserved |= t.protected_instance_methods(false)
-      break if t == Delegator
-    end
-    preserved << "singleton_method_added"
-    for method in obj.methods
-      next if preserved.include? method
-      begin
-	eval <<-EOS
-	  def self.#{method}(*args, &block)
-	    begin
-	      __getobj__.__send__(:#{method}, *args, &block)
-	    rescue Exception
-	      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-	      Kernel::raise
-	    end
-	  end
-	EOS
-      rescue SyntaxError
-        raise NameError, "invalid identifier %s" % method, caller(4)
-      end
-    end
-  end
-  alias initialize_methods initialize
-
-  # Handles the magic of delegation through \_\_getobj\_\_.
-  def method_missing(m, *args)
-    target = self.__getobj__
-    unless target.respond_to?(m)
-      super(m, *args)
-    end
-    target.__send__(m, *args)
-  end
-
-  # 
-  # Checks for a method provided by this the delegate object by fowarding the 
-  # call through \_\_getobj\_\_.
-  # 
-  def respond_to?(m, include_private = false)
-    return true if super
-    return self.__getobj__.respond_to?(m, include_private)
-  end
-
-  #
-  # This method must be overridden by subclasses and should return the object
-  # method calls are being delegated to.
-  #
-  def __getobj__
-    raise NotImplementedError, "need to define `__getobj__'"
-  end
-
-  # Serialization support for the object returned by \_\_getobj\_\_.
-  def marshal_dump
-    __getobj__
-  end
-  # Reinitializes delegation from a serialized object.
-  def marshal_load(obj)
-    initialize_methods(obj)
-    __setobj__(obj)
-  end
-end
-
-#
-# A concrete implementation of Delegator, this class provides the means to
-# delegate all supported method calls to the object passed into the constructor
-# and even to change the object being delegated to at a later time with
-# \_\_setobj\_\_ .
-#
-class SimpleDelegator<Delegator
-
-  # Pass in the _obj_ you would like to delegate method calls to.
-  def initialize(obj)
-    super
-    @_sd_obj = obj
-  end
-
-  # Returns the current object method calls are being delegated to.
-  def __getobj__
-    @_sd_obj
-  end
-
-  #
-  # Changes the delegate object to _obj_.
-  #
-  # It's important to note that this does *not* cause SimpleDelegator's methods
-  # to change.  Because of this, you probably only want to change delegation
-  # to objects of the same type as the original delegate.
-  #
-  # Here's an example of changing the delegation object.
-  #
-  #   names = SimpleDelegator.new(%w{James Edward Gray II})
-  #   puts names[1]    # => Edward
-  #   names.__setobj__(%w{Gavin Sinclair})
-  #   puts names[1]    # => Sinclair
-  #
-  def __setobj__(obj)
-    raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
-    @_sd_obj = obj
-  end
-
-  # Clone support for the object returned by \_\_getobj\_\_.
-  def clone
-    new = super
-    new.__setobj__(__getobj__.clone)
-    new
-  end
-  # Duplication support for the object returned by \_\_getobj\_\_.
-  def dup
-    new = super
-    new.__setobj__(__getobj__.clone)
-    new
-  end
-end
-
-# :stopdoc:
-# backward compatibility ^_^;;;
-Delegater = Delegator
-SimpleDelegater = SimpleDelegator
-# :startdoc:
-
-#
-# The primary interface to this library.  Use to setup delegation when defining
-# your class.
-#
-#   class MyClass < DelegateClass( ClassToDelegateTo )    # Step 1
-#     def initiaize
-#       super(obj_of_ClassToDelegateTo)                   # Step 2
-#     end
-#   end
-#
-def DelegateClass(superclass)
-  klass = Class.new
-  methods = superclass.public_instance_methods(true)
-  methods -= ::Kernel.public_instance_methods(false)
-  methods |= ["to_s","to_a","inspect","==","=~","==="]
-  klass.module_eval {
-    def initialize(obj)  # :nodoc:
-      @_dc_obj = obj
-    end
-    def method_missing(m, *args)  # :nodoc:
-      unless @_dc_obj.respond_to?(m)
-        super(m, *args)
-      end
-      @_dc_obj.__send__(m, *args)
-    end
-    def respond_to?(m, include_private = false)  # :nodoc:
-      return true if super
-      return @_dc_obj.respond_to?(m, include_private)
-    end
-    def __getobj__  # :nodoc:
-      @_dc_obj
-    end
-    def __setobj__(obj)  # :nodoc:
-      raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
-      @_dc_obj = obj
-    end
-    def clone  # :nodoc:
-      new = super
-      new.__setobj__(__getobj__.clone)
-      new
-    end
-    def dup  # :nodoc:
-      new = super
-      new.__setobj__(__getobj__.clone)
-      new
-    end
-  }
-  for method in methods
-    begin
-      klass.module_eval <<-EOS
-        def #{method}(*args, &block)
-	  begin
-	    @_dc_obj.__send__(:#{method}, *args, &block)
-	  rescue
-	    $@[0,2] = nil
-	    raise
-	  end
-	end
-      EOS
-    rescue SyntaxError
-      raise NameError, "invalid identifier %s" % method, caller(3)
-    end
-  end
-  return klass
-end
-
-# :enddoc:
-
-if __FILE__ == $0
-  class ExtArray<DelegateClass(Array)
-    def initialize()
-      super([])
-    end
-  end
-
-  ary = ExtArray.new
-  p ary.class
-  ary.push 25
-  p ary
-
-  foo = Object.new
-  def foo.test
-    25
-  end
-  def foo.error
-    raise 'this is OK'
-  end
-  foo2 = SimpleDelegator.new(foo)
-  p foo.test == foo2.test	# => true
-  foo2.error			# raise error!
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest.rb
deleted file mode 100644
index 0c4ee3c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'digest.so'
-
-module Digest
-  def self.const_missing(name)
-    case name
-    when :SHA256, :SHA384, :SHA512
-      lib = 'digest/sha2.so'
-    else
-      lib = File.join('digest', name.to_s.downcase)
-    end
-
-    begin
-      require lib
-    rescue LoadError => e
-      raise LoadError, "library not found for class Digest::#{name} -- #{lib}", caller(1)
-    end
-    unless Digest.const_defined?(name)
-      raise NameError, "uninitialized constant Digest::#{name}", caller(1)
-    end
-    Digest.const_get(name)
-  end
-
-  class ::Digest::Class
-    # creates a digest object and reads a given file, _name_.
-    # 
-    #  p Digest::SHA256.file("X11R6.8.2-src.tar.bz2").hexdigest
-    #  # => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
-    def self.file(name)
-      new.file(name)
-    end
-  end
-
-  module Instance
-    # updates the digest with the contents of a given file _name_ and
-    # returns self.
-    def file(name)
-      File.open(name, "rb") {|f|
-        buf = ""
-        while f.read(16384, buf)
-          update buf
-        end
-      }
-      self
-    end
-  end
-end
-
-def Digest(name)
-  Digest.const_get(name)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest/sha2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest/sha2.rb
deleted file mode 100644
index c16305d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/digest/sha2.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-#--
-# sha2.rb - defines Digest::SHA2 class which wraps up the SHA256,
-#           SHA384, and SHA512 classes.
-#++
-# Copyright (c) 2006 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under the same
-# terms as Ruby.
-#
-#   $Id: sha2.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'digest'
-
-module Digest
-  #
-  # A meta digest provider class for SHA256, SHA384 and SHA512.
-  #
-  class SHA2 < Digest::Class
-    # call-seq:
-    #     Digest::SHA2.new(bitlen = 256) -> digest_obj
-    #
-    # Creates a new SHA2 hash object with a given bit length.
-    def initialize(bitlen = 256)
-      case bitlen
-      when 256
-        @sha2 = Digest::SHA256.new
-      when 384
-        @sha2 = Digest::SHA384.new
-      when 512
-        @sha2 = Digest::SHA512.new
-      else
-        raise ArgumentError, "unsupported bit length: %s" % bitlen.inspect
-      end
-      @bitlen = bitlen
-    end
-
-    # :nodoc:
-    def reset
-      @sha2.reset
-      self
-    end
-
-    # :nodoc:
-    def update(str)
-      @sha2.update(str)
-      self
-    end
-    alias << update
-
-    def finish
-      @sha2.digest!
-    end
-    private :finish
-
-    def block_length
-      @sha2.block_length
-    end
-
-    def digest_length
-      @sha2.digest_length
-    end
-
-    # :nodoc:
-    def initialize_copy(other)
-      @sha2 = other.instance_eval { @sha2.clone }
-    end
-
-    # :nodoc:
-    def inspect
-      "#<%s:%d %s>" % [self.class.name, @bitlen, hexdigest]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/import.rb
deleted file mode 100644
index 01ee249..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/import.rb
+++ /dev/null
@@ -1,225 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-require 'dl/types'
-
-module DL
-  module Importable
-    LIB_MAP = {}
-
-    module Internal
-      def init_types()
-	@types ||= ::DL::Types.new
-      end
-
-      def init_sym()
-	@SYM ||= {}
-      end
-
-      def [](name)
-	return @SYM[name.to_s][0]
-      end
-
-      def dlload(*libnames)
-	if( !defined?(@LIBS) )
-	  @LIBS = []
-	end
-	libnames.each{|libname|
-	  if( !LIB_MAP[libname] )
-	    LIB_MAP[libname] = DL.dlopen(libname)
-	  end
-	  @LIBS.push(LIB_MAP[libname])
-	}
-      end
-      alias dllink :dlload
-
-      def parse_cproto(proto)
-	proto = proto.gsub(/\s+/, " ").strip
-	case proto
-	when /^([\d\w\*_\s]+)\(([\d\w\*_\s\,\[\]]*)\)$/
-	  ret = $1
-	  args = $2.strip()
-	  ret = ret.split(/\s+/)
-	  args = args.split(/\s*,\s*/)
-	  func = ret.pop()
-	  if( func =~ /^\*/ )
-	    func.gsub!(/^\*+/,"")
-	    ret.push("*")
-	  end
-	  ret  = ret.join(" ")
-	  return [func, ret, args]
-	else
-	  raise(RuntimeError,"can't parse the function prototype: #{proto}")
-	end
-      end
-
-      # example:
-      #   extern "int strlen(char*)"
-      #
-      def extern(proto)
-	func,ret,args = parse_cproto(proto)
-	return import(func, ret, args)
-      end
-
-      # example:
-      #   callback "int method_name(int, char*)"
-      #
-      def callback(proto)
-	func,ret,args = parse_cproto(proto)
-
-	init_types()
-	init_sym()
-
-	rty,renc,rdec = @types.encode_return_type(ret)
-        if( !rty )
-          raise(TypeError, "unsupported type: #{ret}")
-        end
-	ty,enc,dec = encode_argument_types(args)
-	symty = rty + ty
-
-	module_eval("module_function :#{func}")
-	sym = module_eval([
-	  "DL::callback(\"#{symty}\"){|*args|",
-	  "  sym,rdec,enc,dec  = @SYM['#{func}']",
-	  "  args = enc.call(args) if enc",
-	  "  r,rs = #{func}(*args)",
-	  "  r  = renc.call(r) if rdec",
-	  "  rs = dec.call(rs) if (dec && rs)",
-	  "  @retval = r",
-	  "  @args   = rs",
-	  "  r",
-	  "}",
-	].join("\n"))
-
-	@SYM[func] = [sym,rdec,enc,dec]
-
-	return sym
-      end
-
-      # example:
-      #  typealias("uint", "unsigned int")
-      #
-      def typealias(alias_type, ty1, enc1=nil, dec1=nil, ty2=nil, enc2=nil, dec2=nil)
-	init_types()
-	@types.typealias(alias_type, ty1, enc1, dec1,
-                                     ty2||ty1, enc2, dec2)
-      end
-
-      # example:
-      #  symbol "foo_value"
-      #  symbol "foo_func", "IIP"
-      #
-      def symbol(name, ty = nil)
-	sym = nil
-	@LIBS.each{|lib|
-	  begin
-	    if( ty )
-	      sym = lib[name, ty]
-	    else
-	      sym = lib[name]
-	    end
-	  rescue
-	    next
-	  end
-	}
-	if( !sym )
-	  raise(RuntimeError, "can't find the symbol `#{name}'")
-	end
-	return sym
-      end
-
-      # example:
-      #   import("get_length", "int", ["void*", "int"])
-      #
-      def import(name, rettype, argtypes = nil)
-	init_types()
-	init_sym()
-
-	rty,_,rdec = @types.encode_return_type(rettype)
-        if( !rty )
-          raise(TypeError, "unsupported type: #{rettype}")
-        end
-	ty,enc,dec = encode_argument_types(argtypes)
-	symty = rty + ty
-
-	sym = symbol(name, symty)
-
-	mname = name.dup
-	if( ?A <= mname[0] && mname[0] <= ?Z )
-	  mname[0,1] = mname[0,1].downcase
-	end
-	@SYM[mname] = [sym,rdec,enc,dec]
-	
-	module_eval [
-	  "def #{mname}(*args)",
-	  "  sym,rdec,enc,dec  = @SYM['#{mname}']",
-	  "  args = enc.call(args) if enc",
-	  if( $DEBUG )
-	    "  p \"[DL] call #{mname} with \#{args.inspect}\""
-	  else
-	    ""
-	  end,
-	  "  r,rs = sym.call(*args)",
-	  if( $DEBUG )
-	    "  p \"[DL] retval=\#{r.inspect} args=\#{rs.inspect}\""
-	  else
-	    ""
-	  end,
-	  "  r  = rdec.call(r) if rdec",
-	  "  rs = dec.call(rs) if dec",
-	  "  @retval = r",
-	  "  @args   = rs",
-	  "  return r",
-	  "end",
-	  "module_function :#{mname}",
-	].join("\n")
-
-	return sym
-      end
-
-      def _args_
-	return @args
-      end
-
-      def _retval_
-	return @retval
-      end
-
-      def encode_argument_types(tys)
-	init_types()
-	encty = []
-	enc = nil
-	dec = nil
-	tys.each_with_index{|ty,idx|
-	  ty,c1,c2 = @types.encode_argument_type(ty)
-          if( !ty )
-            raise(TypeError, "unsupported type: #{ty}")
-          end
-	  encty.push(ty)
-	  if( enc )
-	    if( c1 )
-	      conv1 = enc
-	      enc = proc{|v| v = conv1.call(v); v[idx] = c1.call(v[idx]); v}
-	    end
-	  else
-	    if( c1 )
-	      enc = proc{|v| v[idx] = c1.call(v[idx]); v}
-	    end
-	  end
-	  if( dec )
-	    if( c2 )
-	      conv2 = dec
-	      dec = proc{|v| v = conv2.call(v); v[idx] = c2.call(v[idx]); v}
-	    end
-	  else
-	    if( c2 )
-	      dec = proc{|v| v[idx] = c2.call(v[idx]); v}
-	    end
-	  end
-	}
-	return [encty.join, enc, dec]
-      end
-    end # end of Internal
-    include Internal
-  end # end of Importable
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/struct.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/struct.rb
deleted file mode 100644
index 33f303f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/struct.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-require 'dl/import'
-
-module DL
-  module Importable
-    module Internal
-      def define_struct(contents)
-	init_types()
-	Struct.new(@types, contents)
-      end
-      alias struct define_struct
-
-      def define_union(contents)
-	init_types()
-	Union.new(@types, contents)
-      end
-      alias union define_union
-
-      class Memory
-	def initialize(ptr, names, ty, len, enc, dec)
-	  @ptr = ptr
-	  @names = names
-	  @ty    = ty
-	  @len   = len
-	  @enc   = enc
-	  @dec   = dec
-
-	  # define methods
-	  @names.each{|name|
-	    instance_eval [
-	      "def #{name}",
-	      "  v = @ptr[\"#{name}\"]",
-	      "  if( @len[\"#{name}\"] )",
-	      "    v = v.collect{|x| @dec[\"#{name}\"] ? @dec[\"#{name}\"].call(x) : x }",
-              "  else",
-	      "    v = @dec[\"#{name}\"].call(v) if @dec[\"#{name}\"]",
-	      "  end",
-	      "  return v",
-	      "end",
-	      "def #{name}=(v)",
-	      "  if( @len[\"#{name}\"] )",
-	      "    v = v.collect{|x| @enc[\"#{name}\"] ? @enc[\"#{name}\"].call(x) : x }",
-	      "  else",
-	      "    v = @enc[\"#{name}\"].call(v) if @enc[\"#{name}\"]",
-              "  end",
-	      "  @ptr[\"#{name}\"] = v",
-	      "  return v",
-	      "end",
-	    ].join("\n")
-	  }
-	end
-
-	def to_ptr
-	  return @ptr
-	end
-
-	def size
-	  return @ptr.size
-	end
-      end
-
-      class Struct
-	def initialize(types, contents)
-	  @names = []
-	  @ty   = {}
-	  @len  = {}
-	  @enc  = {}
-	  @dec  = {}
-	  @size = 0
-	  @tys  = ""
-	  @types = types
-	  parse(contents)
-	end
-
-	def size
-	  return @size
-	end
-
-	def members
-	  return @names
-	end
-
-	# ptr must be a PtrData object.
-	def new(ptr)
-	  ptr.struct!(@tys, *@names)
-	  mem = Memory.new(ptr, @names, @ty, @len, @enc, @dec)
-	  return mem
-	end
-
-	def malloc(size = nil)
-	  if( !size )
-	    size = @size
-	  end
-	  ptr = DL::malloc(size)
-	  return new(ptr)
-	end
-
-	def parse(contents)
-	  contents.each{|elem|
-	    name,ty,num,enc,dec = parse_elem(elem)
-	    @names.push(name)
-	    @ty[name]  = ty
-	    @len[name] = num
-	    @enc[name] = enc
-	    @dec[name] = dec
-	    if( num )
-	      @tys += "#{ty}#{num}"
-	    else
-	      @tys += ty
-	    end
-	  }
-	  @size = DL.sizeof(@tys)
-	end
-	
-	def parse_elem(elem)
-	  elem.strip!
-	  case elem
-	  when /^([\w\d_\*]+)([\*\s]+)([\w\d_]+)$/
-	    ty = ($1 + $2).strip
-	    name = $3
-	    num = nil;
-	  when /^([\w\d_\*]+)([\*\s]+)([\w\d_]+)\[(\d+)\]$/
-	    ty = ($1 + $2).strip
-	    name = $3
-	    num = $4.to_i
-	  else
-	    raise(RuntimeError, "invalid element: #{elem}")
-	  end
-	  ty,enc,dec = @types.encode_struct_type(ty)
-          if( !ty )
-            raise(TypeError, "unsupported type: #{ty}")
-          end
-	  return [name,ty,num,enc,dec]
-	end
-      end  # class Struct
-      
-      class Union < Struct
-	def new
-	  ptr = DL::malloc(@size)
-	  ptr.union!(@tys, *@names)
-	  mem = Memory.new(ptr, @names, @ty, @len, @enc, @dec)
-	  return mem
-	end
-      end
-    end  # module Internal
-  end  # module Importable
-end  # module DL
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/types.rb
deleted file mode 100644
index 1144917..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/types.rb
+++ /dev/null
@@ -1,245 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-
-module DL
-  class Types
-    TYPES = [
-      # FORMAT:
-      # ["alias name",
-      #  "type name", encoding_method, decoding_method,   for function prototypes
-      #  "type name", encoding_method, decoding_method]   for structures (not implemented)
-      
-      # for Windows
-      ["DWORD",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["PDWORD", "unsigned long *", nil, nil,
-                 "unsigned long *", nil, nil],
-      ["WORD",   "unsigned short", nil, nil,
-                 "unsigned short", nil, nil],
-      ["PWORD",  "unsigned int *", nil, nil,
-                 "unsigned int *", nil, nil],
-      ["BYTE",   "unsigned char",   nil, nil,
-                 "unsigned char", nil, nil],
-      ["PBYTE",  "unsigned char *", nil, nil,
-                 "unsigned char *", nil, nil],
-      ["BOOL",   "ibool", nil, nil,
-                 "ibool", nil, nil],
-      ["ATOM",   "int", nil, nil,
-                 "int", nil, nil],
-      ["BYTE",   "unsigned char", nil, nil,
-                 "unsigned char", nil, nil],
-      ["PBYTE",  "unsigned char *", nil, nil,
-                 "unsigned char *", nil, nil],
-      ["UINT",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["ULONG",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["UCHAR",  "unsigned char", nil, nil,
-                 "unsigned char", nil, nil],
-      ["HANDLE", "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["PHANDLE","void*", nil, nil,
-                 "void*", nil, nil],
-      ["PVOID",  "void*", nil, nil,
-                 "void*", nil, nil],
-      ["LPCSTR", "char*", nil, nil,
-                 "char*", nil, nil],
-      ["HDC",    "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["HWND",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      
-      # Others
-      ["uint",   "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["u_int",  "unsigned int", nil, nil,
-                 "unsigned int", nil, nil],
-      ["ulong",  "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-      ["u_long", "unsigned long", nil, nil,
-                 "unsigned long", nil, nil],
-
-      # DL::Importable primitive types
-      ["ibool",
-        "I",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "I",
-	proc{|v| v ? 1 : 0 },
-	proc{|v| (v != 0) ? true : false} ],
-      ["cbool",
-        "C",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "C",
-	proc{|v,len| v ? 1 : 0},
-	proc{|v,len| (v != 0) ? true : false}],
-      ["lbool",
-        "L",
-	proc{|v| v ? 1 : 0},
-	proc{|v| (v != 0) ? true : false},
-        "L",
-	proc{|v,len| v ? 1 : 0},
-	proc{|v,len| (v != 0) ? true : false}],
-      ["unsigned char",
-        "C",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]},
-        "C",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]}],
-      ["unsigned short",
-        "H",
-	proc{|v| [v].pack("S").unpack("s")[0]},
-	proc{|v| [v].pack("s").unpack("S")[0]},
-        "H",
-	proc{|v| [v].pack("S").unpack("s")[0]},
-	proc{|v| [v].pack("s").unpack("S")[0]}],
-      ["unsigned int",
-        "I",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]},
-        "I",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]}],
-      ["unsigned long",
-        "L",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]},
-        "L",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]}],
-      ["unsigned char ref",
-        "c",
-	proc{|v| [v].pack("C").unpack("c")[0]},
-	proc{|v| [v].pack("c").unpack("C")[0]},
-	nil, nil, nil],
-      ["unsigned int ref",
-        "i",
-	proc{|v| [v].pack("I").unpack("i")[0]},
-	proc{|v| [v].pack("i").unpack("I")[0]},
-	nil, nil, nil],
-      ["unsigned long ref",
-        "l",
-	proc{|v| [v].pack("L").unpack("l")[0]},
-	proc{|v| [v].pack("l").unpack("L")[0]},
-	nil, nil, nil],
-      ["char ref",  "c", nil, nil,
-                    nil, nil, nil],
-      ["short ref", "h", nil, nil,
-                    nil, nil, nil],
-      ["int ref",   "i", nil, nil,
-                    nil, nil, nil],
-      ["long ref",  "l", nil, nil,
-                    nil, nil, nil],
-      ["float ref", "f", nil, nil,
-                    nil, nil, nil],
-      ["double ref","d", nil, nil,
-                    nil, nil, nil],
-      ["char",   "C", nil, nil,
-                 "C", nil, nil],
-      ["short",  "H", nil, nil,
-                 "H", nil, nil],
-      ["int",    "I", nil, nil,
-                 "I", nil, nil],
-      ["long",   "L", nil, nil,
-                 "L", nil, nil],
-      ["float",  "F", nil, nil,
-                 "F", nil, nil],
-      ["double", "D", nil, nil,
-                 "D", nil, nil],
-      [/^char\s*\*$/,"s",nil, nil,
-                     "S",nil, nil],
-      [/^const char\s*\*$/,"S",nil, nil,
-                           "S",nil, nil],
-      [/^.+\*$/,   "P", nil, nil,
-                   "P", nil, nil],
-      [/^.+\[\]$/, "a", nil, nil,
-                   "a", nil, nil],
-      ["void",   "0", nil, nil,
-                 nil, nil, nil],
-    ]
-
-    def initialize
-      init_types()
-    end
-
-    def typealias(ty1, ty2, enc=nil, dec=nil, ty3=nil, senc=nil, sdec=nil)
-      @TYDEFS.unshift([ty1, ty2, enc, dec, ty3, senc, sdec])
-    end
-
-    def init_types
-      @TYDEFS = TYPES.dup
-    end
-
-    def encode_argument_type(alias_type)
-      proc_encode = nil
-      proc_decode = nil
-      @TYDEFS.each{|aty,ty,enc,dec,_,_,_|
-	if( (aty.is_a?(Regexp) && (aty =~ alias_type)) || (aty == alias_type) )
-	  alias_type = alias_type.gsub(aty,ty) if ty
-          alias_type.strip! if alias_type
-	  if( proc_encode )
-	    if( enc )
-	      conv1 = proc_encode
-	      proc_encode = proc{|v| enc.call(conv1.call(v))}
-	    end
-	  else
-	    if( enc )
-	      proc_encode = enc
-	    end
-	  end
-	  if( proc_decode )
-	    if( dec )
-	      conv2 = proc_decode
-	      proc_decode = proc{|v| dec.call(conv2.call(v))}
-	    end
-	  else
-	    if( dec )
-	      proc_decode = dec
-	    end
-	  end
-	end
-      }
-      return [alias_type, proc_encode, proc_decode]
-    end
-
-    def encode_return_type(ty)
-      ty, enc, dec = encode_argument_type(ty)
-      return [ty, enc, dec]
-    end
-
-    def encode_struct_type(alias_type)
-      proc_encode = nil
-      proc_decode = nil
-      @TYDEFS.each{|aty,_,_,_,ty,enc,dec|
-	if( (aty.is_a?(Regexp) && (aty =~ alias_type)) || (aty == alias_type) )
-	  alias_type = alias_type.gsub(aty,ty) if ty
-          alias_type.strip! if alias_type
-	  if( proc_encode )
-	    if( enc )
-	      conv1 = proc_encode
-	      proc_encode = proc{|v| enc.call(conv1.call(v))}
-	    end
-	  else
-	    if( enc )
-	      proc_encode = enc
-	    end
-	  end
-	  if( proc_decode )
-	    if( dec )
-	      conv2 = proc_decode
-	      proc_decode = proc{|v| dec.call(conv2.call(v))}
-	    end
-	  else
-	    if( dec )
-	      proc_decode = dec
-	    end
-	  end
-	end
-      }
-      return [alias_type, proc_encode, proc_decode]
-    end
-  end # end of Types
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/win32.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/win32.rb
deleted file mode 100644
index 0fed47c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/dl/win32.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-
-class Win32API
-  DLL = {}
-
-  def initialize(dllname, func, import, export = "0")
-    prototype = (export + import.to_s).tr("VPpNnLlIi", "0SSI").sub(/^(.)0*$/, '\1')
-    handle = DLL[dllname] ||= DL::Handle.new(dllname)
-    @sym = handle.sym(func, prototype)
-  end
-
-  def call(*args)
-    import = @sym.proto.split("", 2)[1]
-    args.each_with_index do |x, i|
-      args[i] = nil if x == 0 and import[i] == ?S
-      args[i], = [x].pack("I").unpack("i") if import[i] == ?I
-    end
-    ret, = @sym.call(*args)
-    return ret || 0
-  end
-
-  alias Call call
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb.rb
deleted file mode 100644
index 93cc811..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'drb/drb'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/acl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/acl.rb
deleted file mode 100644
index 861c8a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/acl.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-# acl-2.0 - simple Access Control List
-#
-# Copyright (c) 2000,2002,2003 Masatoshi SEKI
-#
-# acl.rb is copyrighted free software by Masatoshi SEKI.
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-require 'ipaddr'
-
-class ACL
-  VERSION=["2.0.0"]
-  class ACLEntry
-    def initialize(str)
-      if str == '*' or str == 'all'
-	@pat = [:all]
-      elsif str.include?('*')
-        @pat = [:name, dot_pat(str)]
-      else
-	begin
-	  @pat = [:ip, IPAddr.new(str)]
-	rescue ArgumentError
-	  @pat = [:name, dot_pat(str)]
-	end
-      end
-    end
-
-    private
-    def dot_pat_str(str)
-      list = str.split('.').collect { |s|
-	(s == '*') ? '.+' : s
-      }
-      list.join("\\.")
-    end
-
-    private
-    def dot_pat(str)
-      exp = "^" + dot_pat_str(str) + "$"
-      Regexp.new(exp)
-    end
-
-    public
-    def match(addr)
-      case @pat[0]
-      when :all
-	true
-      when :ip
-	begin
-	  ipaddr = IPAddr.new(addr[3])
-	  ipaddr = ipaddr.ipv4_mapped if @pat[1].ipv6? && ipaddr.ipv4?
-	rescue ArgumentError
-	  return false
-	end
-	(@pat[1].include?(ipaddr)) ? true : false
-      when :name
-	(@pat[1] =~ addr[2]) ? true : false
-      else
-	false
-      end
-    end
-  end
-
-  class ACLList
-    def initialize
-      @list = []
-    end
-
-    public
-    def match(addr)
-      @list.each do |e|
-	return true if e.match(addr)
-      end
-      false
-    end
-
-    public
-    def add(str)
-      @list.push(ACLEntry.new(str))
-    end
-  end
-
-  DENY_ALLOW = 0
-  ALLOW_DENY = 1
-
-  def initialize(list=nil, order = DENY_ALLOW)
-    @order = order
-    @deny = ACLList.new
-    @allow = ACLList.new
-    install_list(list) if list
-  end
-
-  public
-  def allow_socket?(soc)
-    allow_addr?(soc.peeraddr)
-  end
-
-  public
-  def allow_addr?(addr)
-    case @order
-    when DENY_ALLOW
-      return true if @allow.match(addr)
-      return false if @deny.match(addr)
-      return true
-    when ALLOW_DENY
-      return false if @deny.match(addr)
-      return true if @allow.match(addr)
-      return false
-    else
-      false
-    end
-  end
-
-  public
-  def install_list(list)
-    i = 0
-    while i < list.size
-      permission, domain = list.slice(i,2)
-      case permission.downcase
-      when 'allow'
-	@allow.add(domain)
-      when 'deny'
-	@deny.add(domain)
-      else
-	raise "Invalid ACL entry #{list.to_s}"
-      end
-      i += 2
-    end
-  end
-end
-
-if __FILE__ == $0
-  # example
-  list = %w(deny all
-	    allow 192.168.1.1
-            allow ::ffff:192.168.1.2
-            allow 192.168.1.3
-            )
-
-  addr = ["AF_INET", 10, "lc630", "192.168.1.3"]
-
-  acl = ACL.new
-  p acl.allow_addr?(addr)
-
-  acl = ACL.new(list, ACL::DENY_ALLOW)
-  p acl.allow_addr?(addr)
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/drb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/drb.rb
deleted file mode 100644
index 25fbb3f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/drb.rb
+++ /dev/null
@@ -1,1763 +0,0 @@
-#
-# = drb/drb.rb
-#
-# Distributed Ruby: _dRuby_ version 2.0.4
-#
-# Copyright (c) 1999-2003 Masatoshi SEKI.  You can redistribute it and/or
-# modify it under the same terms as Ruby.
-#
-# Author:: Masatoshi SEKI
-#
-# Documentation:: William Webber (william at williamwebber.com)
-#
-# == Overview
-#
-# dRuby is a distributed object system for Ruby.  It allows an object in one
-# Ruby process to invoke methods on an object in another Ruby process on the
-# same or a different machine.
-#
-# The Ruby standard library contains the core classes of the dRuby package.
-# However, the full package also includes access control lists and the
-# Rinda tuple-space distributed task management system, as well as a 
-# large number of samples.  The full dRuby package can be downloaded from
-# the dRuby home page (see *References*).
-#
-# For an introduction and examples of usage see the documentation to the
-# DRb module.
-#
-# == References
-#
-# [http://www2a.biglobe.ne.jp/~seki/ruby/druby.html]
-#    The dRuby home page, in Japanese.  Contains the full dRuby package
-#    and links to other Japanese-language sources.
-#
-# [http://www2a.biglobe.ne.jp/~seki/ruby/druby.en.html]
-#    The English version of the dRuby home page.
-#
-# [http://www.chadfowler.com/ruby/drb.html]
-#    A quick tutorial introduction to using dRuby by Chad Fowler.
-#
-# [http://www.linux-mag.com/2002-09/ruby_05.html]
-#   A tutorial introduction to dRuby in Linux Magazine by Dave Thomas.
-#   Includes a discussion of Rinda.
-#
-# [http://www.eng.cse.dmu.ac.uk/~hgs/ruby/dRuby/]
-#   Links to English-language Ruby material collected by Hugh Sasse.
-#
-# [http://www.rubycentral.com/book/ospace.html]
-#   The chapter from *Programming* *Ruby* by Dave Thomas and Andy Hunt
-#   which discusses dRuby.
-#
-# [http://www.clio.ne.jp/home/web-i31s/Flotuard/Ruby/PRC2K_seki/dRuby.en.html]
-#   Translation of presentation on Ruby by Masatoshi Seki.
-
-require 'socket'
-require 'thread'
-require 'fcntl'
-require 'drb/eq'
-
-#
-# == Overview
-#
-# dRuby is a distributed object system for Ruby.  It is written in
-# pure Ruby and uses its own protocol.  No add-in services are needed
-# beyond those provided by the Ruby runtime, such as TCP sockets.  It
-# does not rely on or interoperate with other distributed object
-# systems such as CORBA, RMI, or .NET.
-#
-# dRuby allows methods to be called in one Ruby process upon a Ruby
-# object located in another Ruby process, even on another machine.
-# References to objects can be passed between processes.  Method
-# arguments and return values are dumped and loaded in marshalled
-# format.  All of this is done transparently to both the caller of the
-# remote method and the object that it is called upon.
-#
-# An object in a remote process is locally represented by a
-# DRb::DRbObject instance.  This acts as a sort of proxy for the
-# remote object.  Methods called upon this DRbObject instance are
-# forwarded to its remote object.  This is arranged dynamically at run
-# time.  There are no statically declared interfaces for remote
-# objects, such as CORBA's IDL.
-#
-# dRuby calls made into a process are handled by a DRb::DRbServer
-# instance within that process.  This reconstitutes the method call,
-# invokes it upon the specified local object, and returns the value to
-# the remote caller.  Any object can receive calls over dRuby.  There
-# is no need to implement a special interface, or mixin special
-# functionality.  Nor, in the general case, does an object need to
-# explicitly register itself with a DRbServer in order to receive
-# dRuby calls.
-#
-# One process wishing to make dRuby calls upon another process must
-# somehow obtain an initial reference to an object in the remote
-# process by some means other than as the return value of a remote
-# method call, as there is initially no remote object reference it can
-# invoke a method upon.  This is done by attaching to the server by
-# URI.  Each DRbServer binds itself to a URI such as
-# 'druby://example.com:8787'.  A DRbServer can have an object attached
-# to it that acts as the server's *front* *object*.  A DRbObject can
-# be explicitly created from the server's URI.  This DRbObject's
-# remote object will be the server's front object.  This front object
-# can then return references to other Ruby objects in the DRbServer's
-# process.
-#
-# Method calls made over dRuby behave largely the same as normal Ruby
-# method calls made within a process.  Method calls with blocks are
-# supported, as are raising exceptions.  In addition to a method's
-# standard errors, a dRuby call may also raise one of the
-# dRuby-specific errors, all of which are subclasses of DRb::DRbError.
-#
-# Any type of object can be passed as an argument to a dRuby call or
-# returned as its return value.  By default, such objects are dumped
-# or marshalled at the local end, then loaded or unmarshalled at the
-# remote end.  The remote end therefore receives a copy of the local
-# object, not a distributed reference to it; methods invoked upon this
-# copy are executed entirely in the remote process, not passed on to
-# the local original.  This has semantics similar to pass-by-value.
-#
-# However, if an object cannot be marshalled, a dRuby reference to it
-# is passed or returned instead.  This will turn up at the remote end
-# as a DRbObject instance.  All methods invoked upon this remote proxy
-# are forwarded to the local object, as described in the discussion of
-# DRbObjects.  This has semantics similar to the normal Ruby
-# pass-by-reference.
-# 
-# The easiest way to signal that we want an otherwise marshallable
-# object to be passed or returned as a DRbObject reference, rather
-# than marshalled and sent as a copy, is to include the
-# DRb::DRbUndumped mixin module.
-#
-# dRuby supports calling remote methods with blocks.  As blocks (or
-# rather the Proc objects that represent them) are not marshallable,
-# the block executes in the local, not the remote, context.  Each
-# value yielded to the block is passed from the remote object to the
-# local block, then the value returned by each block invocation is
-# passed back to the remote execution context to be collected, before
-# the collected values are finally returned to the local context as
-# the return value of the method invocation.
-# 
-# == Examples of usage
-#
-# For more dRuby samples, see the +samples+ directory in the full
-# dRuby distribution.
-#
-# === dRuby in client/server mode
-#
-# This illustrates setting up a simple client-server drb
-# system.  Run the server and client code in different terminals,
-# starting the server code first.
-#
-# ==== Server code
-#    
-#   require 'drb/drb'
-#     
-#   # The URI for the server to connect to
-#   URI="druby://localhost:8787" 
-#     
-#   class TimeServer
-#     
-#     def get_current_time
-#       return Time.now
-#     end
-#     
-#   end
-#     
-#   # The object that handles requests on the server
-#   FRONT_OBJECT=TimeServer.new
-#
-#   $SAFE = 1   # disable eval() and friends
-#   
-#   DRb.start_service(URI, FRONT_OBJECT)
-#   # Wait for the drb server thread to finish before exiting.
-#   DRb.thread.join
-#
-# ==== Client code
-#     
-#   require 'drb/drb'
-#   
-#   # The URI to connect to
-#   SERVER_URI="druby://localhost:8787"
-#
-#   # Start a local DRbServer to handle callbacks.
-#   #
-#   # Not necessary for this small example, but will be required
-#   # as soon as we pass a non-marshallable object as an argument
-#   # to a dRuby call.
-#   DRb.start_service
-#   
-#   timeserver = DRbObject.new_with_uri(SERVER_URI)
-#   puts timeserver.get_current_time 
-#
-# === Remote objects under dRuby
-#
-# This example illustrates returning a reference to an object
-# from a dRuby call.  The Logger instances live in the server
-# process.  References to them are returned to the client process,
-# where methods can be invoked upon them.  These methods are 
-# executed in the server process.
-#
-# ==== Server code
-#   
-#   require 'drb/drb'
-#   
-#   URI="druby://localhost:8787"
-#   
-#   class Logger
-#
-#       # Make dRuby send Logger instances as dRuby references,
-#       # not copies.
-#       include DRb::DRbUndumped
-#   
-#       def initialize(n, fname)
-#           @name = n
-#           @filename = fname
-#       end
-#   
-#       def log(message)
-#           File.open(@filename, "a") do |f|
-#               f.puts("#{Time.now}: #{@name}: #{message}")
-#           end
-#       end
-#   
-#   end
-#   
-#   # We have a central object for creating and retrieving loggers.
-#   # This retains a local reference to all loggers created.  This
-#   # is so an existing logger can be looked up by name, but also
-#   # to prevent loggers from being garbage collected.  A dRuby
-#   # reference to an object is not sufficient to prevent it being
-#   # garbage collected!
-#   class LoggerFactory
-#   
-#       def initialize(bdir)
-#           @basedir = bdir
-#           @loggers = {}
-#       end
-#   
-#       def get_logger(name)
-#           if !@loggers.has_key? name
-#               # make the filename safe, then declare it to be so
-#               fname = name.gsub(/[.\/]/, "_").untaint
-#               @loggers[name] = Logger.new(name, @basedir + "/" + fname)
-#           end
-#           return @loggers[name]
-#       end
-#   
-#   end
-#   
-#   FRONT_OBJECT=LoggerFactory.new("/tmp/dlog")
-#
-#   $SAFE = 1   # disable eval() and friends
-#   
-#   DRb.start_service(URI, FRONT_OBJECT)
-#   DRb.thread.join
-#
-# ==== Client code
-#
-#   require 'drb/drb'
-#   
-#   SERVER_URI="druby://localhost:8787"
-#
-#   DRb.start_service
-#   
-#   log_service=DRbObject.new_with_uri(SERVER_URI)
-#   
-#   ["loga", "logb", "logc"].each do |logname|
-#   
-#       logger=log_service.get_logger(logname)
-#   
-#       logger.log("Hello, world!")
-#       logger.log("Goodbye, world!")
-#       logger.log("=== EOT ===")
-#   
-#   end
-#
-# == Security
-#
-# As with all network services, security needs to be considered when
-# using dRuby.  By allowing external access to a Ruby object, you are
-# not only allowing outside clients to call the methods you have
-# defined for that object, but by default to execute arbitrary Ruby
-# code on your server.  Consider the following:
-#
-#    # !!! UNSAFE CODE !!!
-#    ro = DRbObject::new_with_uri("druby://your.server.com:8989")
-#    class << ro
-#      undef :instance_eval  # force call to be passed to remote object
-#    end
-#    ro.instance_eval("`rm -rf *`")
-#
-# The dangers posed by instance_eval and friends are such that a
-# DRbServer should generally be run with $SAFE set to at least 
-# level 1.  This will disable eval() and related calls on strings 
-# passed across the wire.  The sample usage code given above follows 
-# this practice.
-#
-# A DRbServer can be configured with an access control list to
-# selectively allow or deny access from specified IP addresses.  The
-# main druby distribution provides the ACL class for this purpose.  In
-# general, this mechanism should only be used alongside, rather than
-# as a replacement for, a good firewall.
-#
-# == dRuby internals
-#
-# dRuby is implemented using three main components: a remote method
-# call marshaller/unmarshaller; a transport protocol; and an
-# ID-to-object mapper.  The latter two can be directly, and the first
-# indirectly, replaced, in order to provide different behaviour and
-# capabilities.
-#
-# Marshalling and unmarshalling of remote method calls is performed by
-# a DRb::DRbMessage instance.  This uses the Marshal module to dump
-# the method call before sending it over the transport layer, then
-# reconstitute it at the other end.  There is normally no need to
-# replace this component, and no direct way is provided to do so.
-# However, it is possible to implement an alternative marshalling
-# scheme as part of an implementation of the transport layer.
-#
-# The transport layer is responsible for opening client and server
-# network connections and forwarding dRuby request across them.
-# Normally, it uses DRb::DRbMessage internally to manage marshalling
-# and unmarshalling.  The transport layer is managed by
-# DRb::DRbProtocol.  Multiple protocols can be installed in
-# DRbProtocol at the one time; selection between them is determined by
-# the scheme of a dRuby URI.  The default transport protocol is
-# selected by the scheme 'druby:', and implemented by
-# DRb::DRbTCPSocket.  This uses plain TCP/IP sockets for
-# communication.  An alternative protocol, using UNIX domain sockets,
-# is implemented by DRb::DRbUNIXSocket in the file drb/unix.rb, and
-# selected by the scheme 'drbunix:'.  A sample implementation over
-# HTTP can be found in the samples accompanying the main dRuby
-# distribution.
-#
-# The ID-to-object mapping component maps dRuby object ids to the
-# objects they refer to, and vice versa.  The implementation to use
-# can be specified as part of a DRb::DRbServer's configuration.  The
-# default implementation is provided by DRb::DRbIdConv.  It uses an
-# object's ObjectSpace id as its dRuby id.  This means that the dRuby
-# reference to that object only remains meaningful for the lifetime of
-# the object's process and the lifetime of the object within that
-# process.  A modified implementation is provided by DRb::TimerIdConv
-# in the file drb/timeridconv.rb.  This implementation retains a local
-# reference to all objects exported over dRuby for a configurable
-# period of time (defaulting to ten minutes), to prevent them being
-# garbage-collected within this time.  Another sample implementation
-# is provided in sample/name.rb in the main dRuby distribution.  This
-# allows objects to specify their own id or "name".  A dRuby reference
-# can be made persistent across processes by having each process
-# register an object using the same dRuby name.
-#
-module DRb
-
-  # Superclass of all errors raised in the DRb module.
-  class DRbError < RuntimeError; end
-
-  # Error raised when an error occurs on the underlying communication
-  # protocol.
-  class DRbConnError < DRbError; end
-
-  # Class responsible for converting between an object and its id.
-  #
-  # This, the default implementation, uses an object's local ObjectSpace
-  # __id__ as its id.  This means that an object's identification over
-  # drb remains valid only while that object instance remains alive 
-  # within the server runtime.
-  #
-  # For alternative mechanisms, see DRb::TimerIdConv in rdb/timeridconv.rb
-  # and DRbNameIdConv in sample/name.rb in the full drb distribution.
-  class DRbIdConv
-
-    # Convert an object reference id to an object.
-    #
-    # This implementation looks up the reference id in the local object
-    # space and returns the object it refers to.
-    def to_obj(ref)
-      ObjectSpace._id2ref(ref)
-    end
-    
-    # Convert an object into a reference id.
-    #
-    # This implementation returns the object's __id__ in the local
-    # object space.
-    def to_id(obj)
-      obj.nil? ? nil : obj.__id__
-    end
-  end
-
-  # Mixin module making an object undumpable or unmarshallable.
-  #
-  # If an object which includes this module is returned by method
-  # called over drb, then the object remains in the server space
-  # and a reference to the object is returned, rather than the
-  # object being marshalled and moved into the client space.
-  module DRbUndumped 
-    def _dump(dummy)  # :nodoc:
-      raise TypeError, 'can\'t dump'
-    end
-  end
-
-  # Error raised by the DRb module when an attempt is made to refer to
-  # the context's current drb server but the context does not have one.
-  # See #current_server.
-  class DRbServerNotFound < DRbError; end
-
-  # Error raised by the DRbProtocol module when it cannot find any
-  # protocol implementation support the scheme specified in a URI.
-  class DRbBadURI < DRbError; end
-
-  # Error raised by a dRuby protocol when it doesn't support the
-  # scheme specified in a URI.  See DRb::DRbProtocol.
-  class DRbBadScheme < DRbError; end
-
-  # An exception wrapping a DRb::DRbUnknown object
-  class DRbUnknownError < DRbError
-
-    # Create a new DRbUnknownError for the DRb::DRbUnknown object +unknown+
-    def initialize(unknown)
-      @unknown = unknown
-      super(unknown.name)
-    end
-
-    # Get the wrapped DRb::DRbUnknown object.
-    attr_reader :unknown
-
-    def self._load(s)  # :nodoc:
-      Marshal::load(s)
-    end
-    
-    def _dump(lv) # :nodoc:
-      Marshal::dump(@unknown)
-    end
-  end
-
-  # An exception wrapping an error object
-  class DRbRemoteError < DRbError
-    def initialize(error)
-      @reason = error.class.to_s
-      super("#{error.message} (#{error.class})")
-      set_backtrace(error.backtrace)
-    end
-
-    # the class of the error, as a string.
-    attr_reader :reason
-  end
-
-  # Class wrapping a marshalled object whose type is unknown locally.
-  #
-  # If an object is returned by a method invoked over drb, but the
-  # class of the object is unknown in the client namespace, or
-  # the object is a constant unknown in the client namespace, then
-  # the still-marshalled object is returned wrapped in a DRbUnknown instance.
-  #
-  # If this object is passed as an argument to a method invoked over
-  # drb, then the wrapped object is passed instead.
-  #
-  # The class or constant name of the object can be read from the
-  # +name+ attribute.  The marshalled object is held in the +buf+
-  # attribute.
-  class DRbUnknown
-    
-    # Create a new DRbUnknown object.
-    #
-    # +buf+ is a string containing a marshalled object that could not
-    # be unmarshalled.  +err+ is the error message that was raised 
-    # when the unmarshalling failed.  It is used to determine the
-    # name of the unmarshalled object.
-    def initialize(err, buf)
-      case err.to_s
-      when /uninitialized constant (\S+)/
-	@name = $1
-      when /undefined class\/module (\S+)/
-	@name = $1
-      else
-	@name = nil
-      end
-      @buf = buf
-    end
-
-    # The name of the unknown thing.
-    #
-    # Class name for unknown objects; variable name for unknown
-    # constants.
-    attr_reader :name
-
-    # Buffer contained the marshalled, unknown object.
-    attr_reader :buf
-
-    def self._load(s) # :nodoc:
-      begin
-	Marshal::load(s)
-      rescue NameError, ArgumentError
-	DRbUnknown.new($!, s)
-      end
-    end
-
-    def _dump(lv) # :nodoc:
-      @buf
-    end
-
-    # Attempt to load the wrapped marshalled object again.
-    #
-    # If the class of the object is now known locally, the object
-    # will be unmarshalled and returned.  Otherwise, a new 
-    # but identical DRbUnknown object will be returned.
-    def reload
-      self.class._load(@buf)
-    end
-
-    # Create a DRbUnknownError exception containing this object.
-    def exception
-      DRbUnknownError.new(self)
-    end
-  end
-
-  class DRbArray
-    def initialize(ary)
-      @ary = ary.collect { |obj| 
-	if obj.kind_of? DRbUndumped
-	  DRbObject.new(obj)
-	else
-	  begin
-	    Marshal.dump(obj)
-	    obj
-	  rescue
-	    DRbObject.new(obj)
-	  end
-	end
-      }
-    end
-
-    def self._load(s)
-      Marshal::load(s)
-    end
-
-    def _dump(lv)
-      Marshal.dump(@ary)
-    end
-  end
-
-  # Handler for sending and receiving drb messages.
-  #
-  # This takes care of the low-level marshalling and unmarshalling
-  # of drb requests and responses sent over the wire between server
-  # and client.  This relieves the implementor of a new drb
-  # protocol layer with having to deal with these details.
-  #
-  # The user does not have to directly deal with this object in
-  # normal use.
-  class DRbMessage
-    def initialize(config) # :nodoc:
-      @load_limit = config[:load_limit]
-      @argc_limit = config[:argc_limit]
-    end
-
-    def dump(obj, error=false)  # :nodoc:
-      obj = make_proxy(obj, error) if obj.kind_of? DRbUndumped
-      begin
-	str = Marshal::dump(obj)
-      rescue
-	str = Marshal::dump(make_proxy(obj, error))
-      end
-      [str.size].pack('N') + str
-    end
-
-    def load(soc)  # :nodoc:
-      begin
-        sz = soc.read(4)	# sizeof (N)
-      rescue
-        raise(DRbConnError, $!.message, $!.backtrace)
-      end
-      raise(DRbConnError, 'connection closed') if sz.nil?
-      raise(DRbConnError, 'premature header') if sz.size < 4
-      sz = sz.unpack('N')[0]
-      raise(DRbConnError, "too large packet #{sz}") if @load_limit < sz
-      begin
-        str = soc.read(sz)
-      rescue
-        raise(DRbConnError, $!.message, $!.backtrace)
-      end
-      raise(DRbConnError, 'connection closed') if str.nil?
-      raise(DRbConnError, 'premature marshal format(can\'t read)') if str.size < sz
-      Thread.exclusive do
-        begin
-          save = Thread.current[:drb_untaint]
-          Thread.current[:drb_untaint] = []
-          Marshal::load(str)
-        rescue NameError, ArgumentError
-          DRbUnknown.new($!, str)
-        ensure
-          Thread.current[:drb_untaint].each do |x|
-            x.untaint
-          end
-          Thread.current[:drb_untaint] = save
-        end
-      end
-    end
-
-    def send_request(stream, ref, msg_id, arg, b) # :nodoc:
-      ary = []
-      ary.push(dump(ref.__drbref))
-      ary.push(dump(msg_id.id2name))
-      ary.push(dump(arg.length))
-      arg.each do |e|
-	ary.push(dump(e))
-      end
-      ary.push(dump(b))
-      stream.write(ary.join(''))
-    rescue
-      raise(DRbConnError, $!.message, $!.backtrace)
-    end
-    
-    def recv_request(stream) # :nodoc:
-      ref = load(stream)
-      ro = DRb.to_obj(ref)
-      msg = load(stream)
-      argc = load(stream)
-      raise ArgumentError, 'too many arguments' if @argc_limit < argc
-      argv = Array.new(argc, nil)
-      argc.times do |n|
-	argv[n] = load(stream)
-      end
-      block = load(stream)
-      return ro, msg, argv, block
-    end
-
-    def send_reply(stream, succ, result)  # :nodoc:
-      stream.write(dump(succ) + dump(result, !succ))
-    rescue
-      raise(DRbConnError, $!.message, $!.backtrace)
-    end
-
-    def recv_reply(stream)  # :nodoc:
-      succ = load(stream)
-      result = load(stream)
-      [succ, result]
-    end
-
-    private
-    def make_proxy(obj, error=false)
-      if error
-        DRbRemoteError.new(obj)
-      else
-        DRbObject.new(obj)
-      end
-    end
-  end
-
-  # Module managing the underlying network protocol(s) used by drb.
-  #
-  # By default, drb uses the DRbTCPSocket protocol.  Other protocols
-  # can be defined.  A protocol must define the following class methods:
-  #
-  #   [open(uri, config)] Open a client connection to the server at +uri+,
-  #                       using configuration +config+.  Return a protocol
-  #                       instance for this connection.
-  #   [open_server(uri, config)] Open a server listening at +uri+,
-  #                              using configuration +config+.  Return a
-  #                              protocol instance for this listener.
-  #   [uri_option(uri, config)] Take a URI, possibly containing an option
-  #                             component (e.g. a trailing '?param=val'), 
-  #                             and return a [uri, option] tuple.
-  #
-  # All of these methods should raise a DRbBadScheme error if the URI 
-  # does not identify the protocol they support (e.g. "druby:" for
-  # the standard Ruby protocol).  This is how the DRbProtocol module,
-  # given a URI, determines which protocol implementation serves that
-  # protocol.
-  #
-  # The protocol instance returned by #open_server must have the
-  # following methods:
-  #
-  # [accept] Accept a new connection to the server.  Returns a protocol
-  #          instance capable of communicating with the client.
-  # [close] Close the server connection.
-  # [uri] Get the URI for this server.
-  #
-  # The protocol instance returned by #open must have the following methods:
-  #
-  # [send_request (ref, msg_id, arg, b)] 
-  #      Send a request to +ref+ with the given message id and arguments.
-  #      This is most easily implemented by calling DRbMessage.send_request,
-  #      providing a stream that sits on top of the current protocol.
-  # [recv_reply]
-  #      Receive a reply from the server and return it as a [success-boolean,
-  #      reply-value] pair.  This is most easily implemented by calling
-  #      DRb.recv_reply, providing a stream that sits on top of the 
-  #      current protocol.
-  # [alive?]
-  #      Is this connection still alive?
-  # [close]
-  #      Close this connection.
-  #
-  # The protocol instance returned by #open_server().accept() must have
-  # the following methods:
-  #
-  # [recv_request]
-  #     Receive a request from the client and return a [object, message,
-  #     args, block] tuple.  This is most easily implemented by calling
-  #     DRbMessage.recv_request, providing a stream that sits on top of
-  #     the current protocol.
-  # [send_reply(succ, result)]
-  #     Send a reply to the client.  This is most easily implemented
-  #     by calling DRbMessage.send_reply, providing a stream that sits
-  #     on top of the current protocol.
-  # [close]
-  #     Close this connection.
-  #
-  # A new protocol is registered with the DRbProtocol module using
-  # the add_protocol method.
-  #
-  # For examples of other protocols, see DRbUNIXSocket in drb/unix.rb,
-  # and HTTP0 in sample/http0.rb and sample/http0serv.rb in the full
-  # drb distribution.
-  module DRbProtocol
-
-    # Add a new protocol to the DRbProtocol module.
-    def add_protocol(prot)
-      @protocol.push(prot)
-    end
-    module_function :add_protocol
-
-    # Open a client connection to +uri+ with the configuration +config+.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to open the URI.  Each protocol signals that it does not handle that
-    # URI by raising a DRbBadScheme error.  If no protocol recognises the
-    # URI, then a DRbBadURI error is raised.  If a protocol accepts the
-    # URI, but an error occurs in opening it, a DRbConnError is raised.
-    def open(uri, config, first=true) 
-      @protocol.each do |prot|
-	begin
-	  return prot.open(uri, config)
-	rescue DRbBadScheme
-	rescue DRbConnError
-	  raise($!)
-	rescue
-	  raise(DRbConnError, "#{uri} - #{$!.inspect}")
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-	return open(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :open
-
-    # Open a server listening for connections at +uri+ with 
-    # configuration +config+.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to open a server at the URI.  Each protocol signals that it does 
-    # not handle that URI by raising a DRbBadScheme error.  If no protocol 
-    # recognises the URI, then a DRbBadURI error is raised.  If a protocol 
-    # accepts the URI, but an error occurs in opening it, the underlying 
-    # error is passed on to the caller.
-    def open_server(uri, config, first=true)
-      @protocol.each do |prot|
-	begin
-	  return prot.open_server(uri, config)
-	rescue DRbBadScheme
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-	return open_server(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :open_server
-
-    # Parse +uri+ into a [uri, option] pair.
-    #
-    # The DRbProtocol module asks each registered protocol in turn to
-    # try to parse the URI.  Each protocol signals that it does not handle that
-    # URI by raising a DRbBadScheme error.  If no protocol recognises the
-    # URI, then a DRbBadURI error is raised.  
-    def uri_option(uri, config, first=true)
-      @protocol.each do |prot|
-	begin
-	  uri, opt = prot.uri_option(uri, config)
-	  # opt = nil if opt == ''
-	  return uri, opt
-	rescue DRbBadScheme
-	end
-      end
-      if first && (config[:auto_load] != false)
-	auto_load(uri, config)
-        return uri_option(uri, config, false)
-      end
-      raise DRbBadURI, 'can\'t parse uri:' + uri
-    end
-    module_function :uri_option
-
-    def auto_load(uri, config)  # :nodoc:
-      if uri =~ /^drb([a-z0-9]+):/
-	require("drb/#{$1}") rescue nil
-      end
-    end
-    module_function :auto_load
-  end
-
-  # The default drb protocol.
-  #
-  # Communicates over a TCP socket.
-  class DRbTCPSocket
-    private
-    def self.parse_uri(uri)
-      if uri =~ /^druby:\/\/(.*?):(\d+)(\?(.*))?$/
-	host = $1
-	port = $2.to_i
-	option = $4
-	[host, port, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^druby:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    public
-
-    # Open a client connection to +uri+ using configuration +config+.
-    def self.open(uri, config)
-      host, port, option = parse_uri(uri)
-      host.untaint
-      port.untaint
-      soc = TCPSocket.open(host, port)
-      self.new(uri, soc, config)
-    end
-
-    def self.getservername
-      host = Socket::gethostname
-      begin
-        Socket::gethostbyname(host)[0]
-      rescue
-        'localhost'
-      end
-    end
-
-    def self.open_server_inaddr_any(host, port)
-      infos = Socket::getaddrinfo(host, nil, 
-                                  Socket::AF_UNSPEC,
-                                  Socket::SOCK_STREAM, 
-                                  0,
-                                  Socket::AI_PASSIVE)
-      family = infos.collect { |af, *_| af }.uniq
-      case family
-      when ['AF_INET']
-        return TCPServer.open('0.0.0.0', port)
-      when ['AF_INET6']
-        return TCPServer.open('::', port)
-      else
-        return TCPServer.open(port)
-      end
-    end
-
-    # Open a server listening for connections at +uri+ using 
-    # configuration +config+.
-    def self.open_server(uri, config)
-      uri = 'druby://:0' unless uri
-      host, port, opt = parse_uri(uri)
-      if host.size == 0
-        host = getservername
-        soc = open_server_inaddr_any(host, port)
-      else
-	soc = TCPServer.open(host, port)
-      end
-      port = soc.addr[1] if port == 0
-      uri = "druby://#{host}:#{port}"
-      self.new(uri, soc, config)
-    end
-
-    # Parse +uri+ into a [uri, option] pair.
-    def self.uri_option(uri, config)
-      host, port, option = parse_uri(uri)
-      return "druby://#{host}:#{port}", option
-    end
-
-    # Create a new DRbTCPSocket instance.
-    #
-    # +uri+ is the URI we are connected to.
-    # +soc+ is the tcp socket we are bound to.  +config+ is our
-    # configuration.
-    def initialize(uri, soc, config={})
-      @uri = uri
-      @socket = soc
-      @config = config
-      @acl = config[:tcp_acl]
-      @msg = DRbMessage.new(config)
-      set_sockopt(@socket)
-    end
-
-    # Get the URI that we are connected to.
-    attr_reader :uri
-
-    # Get the address of our TCP peer (the other end of the socket
-    # we are bound to.
-    def peeraddr
-      @socket.peeraddr
-    end
-    
-    # Get the socket.
-    def stream; @socket; end
-
-    # On the client side, send a request to the server.
-    def send_request(ref, msg_id, arg, b)
-      @msg.send_request(stream, ref, msg_id, arg, b)
-    end
-    
-    # On the server side, receive a request from the client.
-    def recv_request
-      @msg.recv_request(stream)
-    end
-
-    # On the server side, send a reply to the client.
-    def send_reply(succ, result)
-      @msg.send_reply(stream, succ, result)
-    end
-
-    # On the client side, receive a reply from the server.
-    def recv_reply
-      @msg.recv_reply(stream)
-    end
-
-    public
-
-    # Close the connection.
-    #
-    # If this is an instance returned by #open_server, then this stops
-    # listening for new connections altogether.  If this is an instance
-    # returned by #open or by #accept, then it closes this particular
-    # client-server session.
-    def close
-      if @socket
-	@socket.close
-	@socket = nil
-      end
-    end
-    
-    # On the server side, for an instance returned by #open_server, 
-    # accept a client connection and return a new instance to handle
-    # the server's side of this client-server session.
-    def accept
-      while true
-	s = @socket.accept
-	break if (@acl ? @acl.allow_socket?(s) : true) 
-	s.close
-      end
-      self.class.new(nil, s, @config)
-    end
-
-    # Check to see if this connection is alive.
-    def alive?
-      return false unless @socket
-      if IO.select([@socket], nil, nil, 0)
-	close
-	return false
-      end
-      true
-    end
-
-    def set_sockopt(soc) # :nodoc:
-      soc.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
-      soc.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::FD_CLOEXEC
-    end
-  end
-
-  module DRbProtocol
-    @protocol = [DRbTCPSocket] # default
-  end
-
-  class DRbURIOption  # :nodoc:  I don't understand the purpose of this class...
-    def initialize(option)
-      @option = option.to_s
-    end
-    attr :option
-    def to_s; @option; end
-    
-    def ==(other)
-      return false unless DRbURIOption === other
-      @option == other.option
-    end
-    
-    def hash
-      @option.hash
-    end
-    
-    alias eql? ==
-  end
-
-  # Object wrapping a reference to a remote drb object.
-  #
-  # Method calls on this object are relayed to the remote
-  # object that this object is a stub for.
-  class DRbObject
-
-    # Unmarshall a marshalled DRbObject.
-    #
-    # If the referenced object is located within the local server, then
-    # the object itself is returned.  Otherwise, a new DRbObject is
-    # created to act as a stub for the remote referenced object.
-    def self._load(s)
-      uri, ref = Marshal.load(s)
-      
-      if DRb.here?(uri)
-	obj = DRb.to_obj(ref)
-        if ((! obj.tainted?) && Thread.current[:drb_untaint])
-          Thread.current[:drb_untaint].push(obj)
-        end
-        return obj
-      end
-
-      self.new_with(uri, ref)
-    end
-
-    def self.new_with(uri, ref)
-      it = self.allocate
-      it.instance_variable_set('@uri', uri)
-      it.instance_variable_set('@ref', ref)
-      it
-    end
-
-    # Create a new DRbObject from a URI alone.
-    def self.new_with_uri(uri)
-      self.new(nil, uri)
-    end
-
-    # Marshall this object.
-    #
-    # The URI and ref of the object are marshalled.
-    def _dump(lv)
-      Marshal.dump([@uri, @ref])
-    end
-
-    # Create a new remote object stub.
-    #
-    # +obj+ is the (local) object we want to create a stub for.  Normally
-    # this is +nil+.  +uri+ is the URI of the remote object that this
-    # will be a stub for.
-    def initialize(obj, uri=nil)
-      @uri = nil
-      @ref = nil
-      if obj.nil?
-	return if uri.nil?
-	@uri, option = DRbProtocol.uri_option(uri, DRb.config)
-	@ref = DRbURIOption.new(option) unless option.nil?
-      else
-	@uri = uri ? uri : (DRb.uri rescue nil)
-	@ref = obj ? DRb.to_id(obj) : nil
-      end
-    end
-
-    # Get the URI of the remote object.
-    def __drburi 
-      @uri
-    end
-
-    # Get the reference of the object, if local.
-    def __drbref
-      @ref
-    end
-
-    undef :to_s
-    undef :to_a if respond_to?(:to_a)
-
-    def respond_to?(msg_id, priv=false)
-      case msg_id
-      when :_dump
-        true
-      when :marshal_dump
-        false
-      else
-        method_missing(:respond_to?, msg_id, priv)
-      end
-    end
-
-    # Routes method calls to the referenced object.
-    def method_missing(msg_id, *a, &b)
-      if DRb.here?(@uri)
-	obj = DRb.to_obj(@ref)
-	DRb.current_server.check_insecure_method(obj, msg_id)
-	return obj.__send__(msg_id, *a, &b) 
-      end
-
-      succ, result = self.class.with_friend(@uri) do
-        DRbConn.open(@uri) do |conn|
-          conn.send_message(self, msg_id, a, b)
-        end
-      end
-
-      if succ
-        return result
-      elsif DRbUnknown === result
-        raise result
-      else
-        bt = self.class.prepare_backtrace(@uri, result)
-	result.set_backtrace(bt + caller)
-        raise result
-      end
-    end
-
-    def self.with_friend(uri)
-      friend = DRb.fetch_server(uri)
-      return yield() unless friend
-      
-      save = Thread.current['DRb']
-      Thread.current['DRb'] = { 'server' => friend }
-      return yield
-    ensure
-      Thread.current['DRb'] = save if friend
-    end
-
-    def self.prepare_backtrace(uri, result)
-      prefix = "(#{uri}) "
-      bt = []
-      result.backtrace.each do |x|
-        break if /`__send__'$/ =~ x 
-        if /^\(druby:\/\// =~ x
-          bt.push(x)
-        else
-          bt.push(prefix + x)
-        end
-      end
-      bt
-    end
-
-    def pretty_print(q)   # :nodoc:
-      q.pp_object(self)
-    end
-
-    def pretty_print_cycle(q)   # :nodoc:
-      q.object_address_group(self) {
-        q.breakable
-        q.text '...'
-      }
-    end
-  end
-
-  # Class handling the connection between a DRbObject and the
-  # server the real object lives on.
-  #
-  # This class maintains a pool of connections, to reduce the
-  # overhead of starting and closing down connections for each
-  # method call.
-  #
-  # This class is used internally by DRbObject.  The user does
-  # not normally need to deal with it directly.
-  class DRbConn
-    POOL_SIZE = 16  # :nodoc:
-    @mutex = Mutex.new
-    @pool = []
-
-    def self.open(remote_uri)  # :nodoc:
-      begin
-	conn = nil
-
-	@mutex.synchronize do
-	  #FIXME
-	  new_pool = []
-	  @pool.each do |c|
-	    if conn.nil? and c.uri == remote_uri
-	      conn = c if c.alive?
-	    else
-	      new_pool.push c
-	    end
-	  end
-	  @pool = new_pool
-	end
-
-	conn = self.new(remote_uri) unless conn
-	succ, result = yield(conn)
-	return succ, result
-
-      ensure
-	if conn
-	  if succ
-	    @mutex.synchronize do
-	      @pool.unshift(conn)
-	      @pool.pop.close while @pool.size > POOL_SIZE
-	    end
-	  else
-	    conn.close
-	  end
-	end
-      end
-    end
-
-    def initialize(remote_uri)  # :nodoc:
-      @uri = remote_uri
-      @protocol = DRbProtocol.open(remote_uri, DRb.config)
-    end
-    attr_reader :uri  # :nodoc:
-
-    def send_message(ref, msg_id, arg, block)  # :nodoc:
-      @protocol.send_request(ref, msg_id, arg, block)
-      @protocol.recv_reply
-    end
-
-    def close  # :nodoc:
-      @protocol.close
-      @protocol = nil
-    end
-
-    def alive?  # :nodoc:
-      @protocol.alive?
-    end
-  end
-
-  # Class representing a drb server instance.
-  #
-  # A DRbServer must be running in the local process before any incoming
-  # dRuby calls can be accepted, or any local objects can be passed as
-  # dRuby references to remote processes, even if those local objects are
-  # never actually called remotely. You do not need to start a DRbServer
-  # in the local process if you are only making outgoing dRuby calls
-  # passing marshalled parameters.
-  #
-  # Unless multiple servers are being used, the local DRbServer is normally
-  # started by calling DRb.start_service.
-  class DRbServer
-    @@acl = nil
-    @@idconv = DRbIdConv.new
-    @@secondary_server = nil
-    @@argc_limit = 256
-    @@load_limit = 256 * 102400
-    @@verbose = false
-    @@safe_level = 0
-
-    # Set the default value for the :argc_limit option.
-    #
-    # See #new().  The initial default value is 256.
-    def self.default_argc_limit(argc)
-      @@argc_limit = argc
-    end
-
-    # Set the default value for the :load_limit option.
-    #
-    # See #new().  The initial default value is 25 MB.
-    def self.default_load_limit(sz)
-      @@load_limit = sz
-    end
-
-    # Set the default value for the :acl option.
-    #
-    # See #new().  The initial default value is nil.
-    def self.default_acl(acl)
-      @@acl = acl
-    end
-
-    # Set the default value for the :id_conv option.
-    #
-    # See #new().  The initial default value is a DRbIdConv instance.
-    def self.default_id_conv(idconv)
-      @@idconv = idconv
-    end
-
-    def self.default_safe_level(level)
-      @@safe_level = level
-    end
-
-    # Set the default value of the :verbose option.
-    #
-    # See #new().  The initial default value is false.
-    def self.verbose=(on)
-      @@verbose = on
-    end
-    
-    # Get the default value of the :verbose option.
-    def self.verbose
-      @@verbose
-    end
-
-    def self.make_config(hash={})  # :nodoc:
-      default_config = { 
-	:idconv => @@idconv,
-	:verbose => @@verbose,
-	:tcp_acl => @@acl,
-	:load_limit => @@load_limit,
-	:argc_limit => @@argc_limit,
-        :safe_level => @@safe_level
-      }
-      default_config.update(hash)
-    end
-
-    # Create a new DRbServer instance.
-    #
-    # +uri+ is the URI to bind to.  This is normally of the form
-    # 'druby://<hostname>:<port>' where <hostname> is a hostname of
-    # the local machine.  If nil, then the system's default hostname
-    # will be bound to, on a port selected by the system; these value
-    # can be retrieved from the +uri+ attribute.  'druby:' specifies
-    # the default dRuby transport protocol: another protocol, such
-    # as 'drbunix:', can be specified instead.
-    #
-    # +front+ is the front object for the server, that is, the object
-    # to which remote method calls on the server will be passed.  If
-    # nil, then the server will not accept remote method calls.
-    #
-    # If +config_or_acl+ is a hash, it is the configuration to
-    # use for this server.  The following options are recognised:
-    #
-    # :idconv :: an id-to-object conversion object.  This defaults
-    #            to an instance of the class DRb::DRbIdConv.
-    # :verbose :: if true, all unsuccessful remote calls on objects
-    #             in the server will be logged to $stdout. false
-    #             by default.
-    # :tcp_acl :: the access control list for this server.  See
-    #             the ACL class from the main dRuby distribution.
-    # :load_limit :: the maximum message size in bytes accepted by
-    #                the server.  Defaults to 25 MB (26214400).
-    # :argc_limit :: the maximum number of arguments to a remote
-    #                method accepted by the server.  Defaults to
-    #                256.
-    #
-    # The default values of these options can be modified on
-    # a class-wide basis by the class methods #default_argc_limit,
-    # #default_load_limit, #default_acl, #default_id_conv,
-    # and #verbose=
-    #
-    # If +config_or_acl+ is not a hash, but is not nil, it is
-    # assumed to be the access control list for this server.
-    # See the :tcp_acl option for more details.
-    #
-    # If no other server is currently set as the primary server,
-    # this will become the primary server.
-    #
-    # The server will immediately start running in its own thread.
-    def initialize(uri=nil, front=nil, config_or_acl=nil)
-      if Hash === config_or_acl
-	config = config_or_acl.dup
-      else
-	acl = config_or_acl || @@acl
-	config = {
-	  :tcp_acl => acl
-	}
-      end
-
-      @config = self.class.make_config(config)
-
-      @protocol = DRbProtocol.open_server(uri, @config)
-      @uri = @protocol.uri
-
-      @front = front
-      @idconv = @config[:idconv]
-      @safe_level = @config[:safe_level]
-
-      @grp = ThreadGroup.new
-      @thread = run
-
-      DRb.regist_server(self)
-    end
-
-    # The URI of this DRbServer.
-    attr_reader :uri
-
-    # The main thread of this DRbServer.
-    #
-    # This is the thread that listens for and accepts connections
-    # from clients, not that handles each client's request-response
-    # session.
-    attr_reader :thread
-
-    # The front object of the DRbServer.
-    # 
-    # This object receives remote method calls made on the server's
-    # URI alone, with an object id.
-    attr_reader :front
-
-    # The configuration of this DRbServer
-    attr_reader :config
-
-    attr_reader :safe_level
-
-    # Set whether to operate in verbose mode.
-    #
-    # In verbose mode, failed calls are logged to stdout.
-    def verbose=(v); @config[:verbose]=v; end
-
-    # Get whether the server is in verbose mode.
-    #
-    # In verbose mode, failed calls are logged to stdout.
-    def verbose; @config[:verbose]; end
-
-    # Is this server alive?
-    def alive?
-      @thread.alive?
-    end
-
-    # Stop this server.
-    def stop_service
-      DRb.remove_server(self)
-      if  Thread.current['DRb'] && Thread.current['DRb']['server'] == self
-        Thread.current['DRb']['stop_service'] = true
-      else
-        @thread.kill
-      end
-    end
-
-    # Convert a dRuby reference to the local object it refers to.
-    def to_obj(ref)
-      return front if ref.nil?
-      return front[ref.to_s] if DRbURIOption === ref
-      @idconv.to_obj(ref)
-    end
-
-    # Convert a local object to a dRuby reference.
-    def to_id(obj)
-      return nil if obj.__id__ == front.__id__
-      @idconv.to_id(obj)
-    end
-
-    private
-    def kill_sub_thread
-      Thread.new do
-	grp = ThreadGroup.new
-	grp.add(Thread.current)
-	list = @grp.list
-	while list.size > 0
-	  list.each do |th|
-	    th.kill if th.alive?
-	  end
-	  list = @grp.list
-	end
-      end
-    end
-
-    def run
-      Thread.start do
-	begin
-	  while true
-	    main_loop
-	  end
-	ensure
-	  @protocol.close if @protocol
-	  kill_sub_thread
-	end
-      end
-    end
-
-    # List of insecure methods.
-    #
-    # These methods are not callable via dRuby.
-    INSECURE_METHOD = [
-      :__send__
-    ]
-
-    # Has a method been included in the list of insecure methods?
-    def insecure_method?(msg_id)
-      INSECURE_METHOD.include?(msg_id)
-    end
-
-    # Coerce an object to a string, providing our own representation if
-    # to_s is not defined for the object.
-    def any_to_s(obj)
-      obj.to_s + ":#{obj.class}"
-    rescue
-      sprintf("#<%s:0x%lx>", obj.class, obj.__id__)      
-    end
-
-    # Check that a method is callable via dRuby.
-    #
-    # +obj+ is the object we want to invoke the method on. +msg_id+ is the
-    # method name, as a Symbol.
-    #
-    # If the method is an insecure method (see #insecure_method?) a 
-    # SecurityError is thrown.  If the method is private or undefined,
-    # a NameError is thrown.
-    def check_insecure_method(obj, msg_id)
-      return true if Proc === obj && msg_id == :__drb_yield
-      raise(ArgumentError, "#{any_to_s(msg_id)} is not a symbol") unless Symbol == msg_id.class
-      raise(SecurityError, "insecure method `#{msg_id}'") if insecure_method?(msg_id)
-      
-      if obj.private_methods.include?(msg_id.to_s)
-	desc = any_to_s(obj)
-        raise NoMethodError, "private method `#{msg_id}' called for #{desc}"
-      elsif obj.protected_methods.include?(msg_id.to_s)
-	desc = any_to_s(obj)
-        raise NoMethodError, "protected method `#{msg_id}' called for #{desc}"
-      else
-        true
-      end
-    end
-    public :check_insecure_method
-    
-    class InvokeMethod  # :nodoc:
-      def initialize(drb_server, client)
-	@drb_server = drb_server
-        @safe_level = drb_server.safe_level
-	@client = client
-      end
-
-      def perform
-	@result = nil
-	@succ = false
-	setup_message
-
-        if $SAFE < @safe_level
-          info = Thread.current['DRb']
-          if @block
-            @result = Thread.new {
-              Thread.current['DRb'] = info
-              $SAFE = @safe_level
-              perform_with_block
-            }.value
-          else
-            @result = Thread.new { 
-              Thread.current['DRb'] = info
-              $SAFE = @safe_level
-              perform_without_block
-            }.value
-          end
-        else
-          if @block
-            @result = perform_with_block
-          else
-            @result = perform_without_block
-          end
-        end
-	@succ = true
-	if @msg_id == :to_ary && @result.class == Array
-	  @result = DRbArray.new(@result) 
-	end
-	return @succ, @result
-      rescue StandardError, ScriptError, Interrupt
-	@result = $!
-	return @succ, @result
-      end
-
-      private
-      def init_with_client
-	obj, msg, argv, block = @client.recv_request
-        @obj = obj
-        @msg_id = msg.intern
-        @argv = argv
-        @block = block
-      end
-      
-      def check_insecure_method
-        @drb_server.check_insecure_method(@obj, @msg_id)
-      end
-
-      def setup_message
-	init_with_client
-	check_insecure_method
-      end
-      
-      def perform_without_block
-	if Proc === @obj && @msg_id == :__drb_yield
-          if @argv.size == 1
-	    ary = @argv
-	  else
-	    ary = [@argv]
-	  end
-	  ary.collect(&@obj)[0]
-	else
-	  @obj.__send__(@msg_id, *@argv)
-	end
-      end
-
-    end
-
-    if RUBY_VERSION >= '1.8'
-      require 'drb/invokemethod'
-      class InvokeMethod
-        include InvokeMethod18Mixin
-      end
-    else
-      require 'drb/invokemethod16'
-      class InvokeMethod
-        include InvokeMethod16Mixin
-      end
-    end
-
-    # The main loop performed by a DRbServer's internal thread.
-    #
-    # Accepts a connection from a client, and starts up its own
-    # thread to handle it.  This thread loops, receiving requests
-    # from the client, invoking them on a local object, and
-    # returning responses, until the client closes the connection
-    # or a local method call fails.
-    def main_loop
-      Thread.start(@protocol.accept) do |client|
-	@grp.add Thread.current
-	Thread.current['DRb'] = { 'client' => client ,
-	                          'server' => self }
-	loop do
-	  begin
-	    succ = false
-	    invoke_method = InvokeMethod.new(self, client)
-	    succ, result = invoke_method.perform
-	    if !succ && verbose
-	      p result
-	      result.backtrace.each do |x|
-		puts x
-	      end
-	    end
-	    client.send_reply(succ, result) rescue nil
-	  ensure
-            client.close unless succ
-            if Thread.current['DRb']['stop_service']
-              Thread.new { stop_service }
-            end
-            break unless succ
-	  end
-	end
-      end
-    end
-  end
-
-  @primary_server = nil
-
-  # Start a dRuby server locally.
-  #
-  # The new dRuby server will become the primary server, even
-  # if another server is currently the primary server.
-  #
-  # +uri+ is the URI for the server to bind to.  If nil,
-  # the server will bind to random port on the default local host
-  # name and use the default dRuby protocol.
-  #
-  # +front+ is the server's front object.  This may be nil.
-  #
-  # +config+ is the configuration for the new server.  This may
-  # be nil.
-  #
-  # See DRbServer::new.
-  def start_service(uri=nil, front=nil, config=nil)
-    @primary_server = DRbServer.new(uri, front, config)
-  end
-  module_function :start_service
-
-  # The primary local dRuby server.
-  #
-  # This is the server created by the #start_service call.  
-  attr_accessor :primary_server
-  module_function :primary_server=, :primary_server
-
-  # Get the 'current' server.
-  #
-  # In the context of execution taking place within the main
-  # thread of a dRuby server (typically, as a result of a remote
-  # call on the server or one of its objects), the current
-  # server is that server.  Otherwise, the current server is
-  # the primary server.
-  #
-  # If the above rule fails to find a server, a DRbServerNotFound
-  # error is raised.
-  def current_server
-    drb = Thread.current['DRb'] 
-    server = (drb && drb['server']) ? drb['server'] : @primary_server 
-    raise DRbServerNotFound unless server
-    return server
-  end
-  module_function :current_server
-
-  # Stop the local dRuby server.
-  #
-  # This operates on the primary server.  If there is no primary
-  # server currently running, it is a noop.
-  def stop_service
-    @primary_server.stop_service if @primary_server
-    @primary_server = nil
-  end
-  module_function :stop_service
-
-  # Get the URI defining the local dRuby space.
-  #
-  # This is the URI of the current server.  See #current_server.
-  def uri
-    current_server.uri
-  end
-  module_function :uri
-
-  # Is +uri+ the URI for the current local server?
-  def here?(uri)
-    (current_server.uri rescue nil) == uri
-  end
-  module_function :here?
-
-  # Get the configuration of the current server.
-  #
-  # If there is no current server, this returns the default configuration.
-  # See #current_server and DRbServer::make_config.
-  def config
-    current_server.config
-  rescue
-    DRbServer.make_config
-  end
-  module_function :config
-  
-  # Get the front object of the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def front
-    current_server.front
-  end
-  module_function :front
-
-  # Convert a reference into an object using the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def to_obj(ref)
-    current_server.to_obj(ref)
-  end
-
-  # Get a reference id for an object using the current server.
-  #
-  # This raises a DRbServerNotFound error if there is no current server.
-  # See #current_server.
-  def to_id(obj)
-    current_server.to_id(obj)
-  end
-  module_function :to_id
-  module_function :to_obj
-
-  # Get the thread of the primary server.
-  #
-  # This returns nil if there is no primary server.  See #primary_server.
-  def thread
-    @primary_server ? @primary_server.thread : nil
-  end
-  module_function :thread
-
-  # Set the default id conv object.
-  #
-  # See DRbServer#default_id_conv.
-  def install_id_conv(idconv)
-    DRbServer.default_id_conv(idconv)
-  end
-  module_function :install_id_conv
-
-  # Set the default acl.
-  #
-  # See DRb::DRbServer.default_acl.
-  def install_acl(acl)
-    DRbServer.default_acl(acl)
-  end
-  module_function :install_acl
-
-  @server = {}
-  def regist_server(server)
-    @server[server.uri] = server
-    Thread.exclusive do
-      @primary_server = server unless @primary_server
-    end
-  end
-  module_function :regist_server
-
-  def remove_server(server)
-    @server.delete(server.uri)
-  end
-  module_function :remove_server
-  
-  def fetch_server(uri)
-    @server[uri]
-  end
-  module_function :fetch_server
-end
-
-DRbObject = DRb::DRbObject
-DRbUndumped = DRb::DRbUndumped
-DRbIdConv = DRb::DRbIdConv
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/eq.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/eq.rb
deleted file mode 100644
index e24512d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/eq.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'drb/drb'
-
-module DRb
-  class DRbObject
-    def ==(other)
-      return false unless DRbObject === other
-     (@ref == other.__drbref) && (@uri == other.__drburi)
-    end
-
-    def hash
-      [@uri, @ref].hash
-    end
-
-    alias eql? ==
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extserv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extserv.rb
deleted file mode 100644
index 7da8130..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extserv.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-=begin
- external service
- 	Copyright (c) 2000,2002 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-module DRb
-  class ExtServ
-    include DRbUndumped
-
-    def initialize(there, name, server=nil)
-      @server = server || DRb::primary_server
-      @name = name
-      ro = DRbObject.new(nil, there)
-      @invoker = ro.regist(name, DRbObject.new(self, @server.uri))
-    end
-    attr_reader :server
-
-    def front
-      DRbObject.new(nil, @server.uri)
-    end
-
-    def stop_service
-      @invoker.unregist(@name)
-      server = @server
-      @server = nil
-      server.stop_service
-      true
-    end
-
-    def alive?
-      @server ? @server.alive? : false
-    end
-  end
-end
-
-if __FILE__ == $0
-  class Foo
-    include DRbUndumped
-
-    def initialize(str)
-      @str = str
-    end
-
-    def hello(it)
-      "#{it}: #{self}"
-    end
-
-    def to_s
-      @str
-    end
-  end
-
-  cmd = ARGV.shift
-  case cmd
-  when 'itest1', 'itest2'
-    front = Foo.new(cmd)
-    manager = DRb::DRbServer.new(nil, front)
-    es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, manager)
-    es.server.thread.join
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extservm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extservm.rb
deleted file mode 100644
index 7066f84..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/extservm.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-=begin
- external service manager
- 	Copyright (c) 2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'thread'
-
-module DRb
-  class ExtServManager
-    include DRbUndumped
-
-    @@command = {}
-
-    def self.command
-      @@command
-    end
-
-    def self.command=(cmd)
-      @@command = cmd
-    end
-      
-    def initialize
-      @servers = {}
-      @waiting = []
-      @queue = Queue.new
-      @thread = invoke_thread
-      @uri = nil
-    end
-    attr_accessor :uri
-
-    def service(name)
-      while true
-	server = nil
-	Thread.exclusive do
-	  server = @servers[name] if @servers[name]
-	end
-	return server if server && server.alive?
-	invoke_service(name)
-      end
-    end
-
-    def regist(name, ro)
-      ary = nil
-      Thread.exclusive do
-	@servers[name] = ro
-	ary = @waiting
-	@waiting = []
-      end
-      ary.each do |th|
-	begin
-	  th.run
-	rescue ThreadError
-	end
-      end
-      self
-    end
-    
-    def unregist(name)
-      Thread.exclusive do
-	@servers.delete(name)
-      end
-    end
-
-    private
-    def invoke_thread
-      Thread.new do
-	while true
-	  name = @queue.pop
-	  invoke_service_command(name, @@command[name])
-	end
-      end
-    end
-
-    def invoke_service(name)
-      Thread.critical = true
-      @waiting.push Thread.current
-      @queue.push name
-      Thread.stop
-    end
-
-    def invoke_service_command(name, command)
-      raise "invalid command. name: #{name}" unless command
-      Thread.exclusive do
-	return if @servers.include?(name)
-	@servers[name] = false
-      end
-      uri = @uri || DRb.uri
-      if RUBY_PLATFORM =~ /mswin32/ && /NT/ =~ ENV["OS"]
-        system(%Q'cmd /c start "ruby" /b #{command} #{uri} #{name}')
-      else
-	system("#{command} #{uri} #{name} &")
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/gw.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/gw.rb
deleted file mode 100644
index b7a5f53..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/gw.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'drb/drb'
-require 'monitor'
-
-module DRb
-  class GWIdConv < DRbIdConv
-    def to_obj(ref)
-      if Array === ref && ref[0] == :DRbObject
-        return DRbObject.new_with(ref[1], ref[2])
-      end
-      super(ref)
-    end
-  end
-
-  class GW
-    include MonitorMixin
-    def initialize
-      super()
-      @hash = {}
-    end
-
-    def [](key)
-      synchronize do
-        @hash[key]
-      end
-    end
-
-    def []=(key, v)
-      synchronize do
-        @hash[key] = v
-      end
-    end
-  end
-
-  class DRbObject
-    def self._load(s)
-      uri, ref = Marshal.load(s)
-      if DRb.uri == uri
-        return ref ? DRb.to_obj(ref) : DRb.front
-      end
-
-      self.new_with(DRb.uri, [:DRbObject, uri, ref])
-    end
-
-    def _dump(lv)
-      if DRb.uri == @uri
-        if Array === @ref && @ref[0] == :DRbObject
-          Marshal.dump([@ref[1], @ref[2]])
-        else
-          Marshal.dump([@uri, @ref]) # ??
-        end
-      else
-        Marshal.dump([DRb.uri, [:DRbObject, @uri, @ref]])
-      end
-    end
-  end
-end
-
-=begin
-DRb.install_id_conv(DRb::GWIdConv.new)
-
-front = DRb::GW.new
-
-s1 = DRb::DRbServer.new('drbunix:/tmp/gw_b_a', front)
-s2 = DRb::DRbServer.new('drbunix:/tmp/gw_b_c', front)
-
-s1.thread.join
-s2.thread.join
-=end
-
-=begin
-# foo.rb
-
-require 'drb/drb'
-
-class Foo
-  include DRbUndumped
-  def initialize(name, peer=nil)
-    @name = name
-    @peer = peer
-  end
-
-  def ping(obj)
-    puts "#{@name}: ping: #{obj.inspect}"
-    @peer.ping(self) if @peer
-  end
-end
-=end
-
-=begin
-# gw_a.rb
-require 'drb/unix'
-require 'foo'
-
-obj = Foo.new('a')
-DRb.start_service("drbunix:/tmp/gw_a", obj)
-
-robj = DRbObject.new_with_uri('drbunix:/tmp/gw_b_a')
-robj[:a] = obj
-
-DRb.thread.join
-=end
-
-=begin
-# gw_c.rb
-require 'drb/unix'
-require 'foo'
-
-foo = Foo.new('c', nil)
-
-DRb.start_service("drbunix:/tmp/gw_c", nil)
-
-robj = DRbObject.new_with_uri("drbunix:/tmp/gw_b_c")
-
-puts "c->b"
-a = robj[:a]
-sleep 2
-
-a.ping(foo)
-
-DRb.thread.join
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/invokemethod.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/invokemethod.rb
deleted file mode 100644
index 412b2ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/invokemethod.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# for ruby-1.8.0
-
-module DRb
-  class DRbServer
-    module InvokeMethod18Mixin
-      def block_yield(x)
-	if x.size == 1 && x[0].class == Array
-	  x[0] = DRbArray.new(x[0])
-	end
-        block_value = @block.call(*x)
-      end
-      
-      def perform_with_block
-        @obj.__send__(@msg_id, *@argv) do |*x|
-          jump_error = nil
-          begin
-            block_value = block_yield(x)
-          rescue LocalJumpError
-            jump_error = $!
-          end
-          if jump_error
-            case jump_error.reason
-            when :retry
-              retry
-            when :break
-              break(jump_error.exit_value)
-            else
-              raise jump_error
-            end
-          end
-          block_value
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/observer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/observer.rb
deleted file mode 100644
index e7f1668..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/observer.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'observer'
-
-module DRb
-  module DRbObservable
-    include Observable
-
-    def notify_observers(*arg)
-      if defined? @observer_state and @observer_state
-	if defined? @observer_peers
-	  for i in @observer_peers.dup
-	    begin
-	      i.update(*arg)
-	    rescue
-	      delete_observer(i)
-	    end
-	  end
-	end
-	@observer_state = false
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/ssl.rb
deleted file mode 100644
index 58d6b7d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/ssl.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-require 'socket'
-require 'openssl'
-require 'drb/drb'
-require 'singleton'
-
-module DRb
-
-  class DRbSSLSocket < DRbTCPSocket
-
-    class SSLConfig
-
-      DEFAULT = {
-	:SSLCertificate       => nil,
-	:SSLPrivateKey        => nil,
-	:SSLClientCA          => nil,
-	:SSLCACertificatePath => nil,
-	:SSLCACertificateFile => nil,
-	:SSLVerifyMode        => ::OpenSSL::SSL::VERIFY_NONE, 
-	:SSLVerifyDepth       => nil,
-	:SSLVerifyCallback    => nil,   # custom verification
-        :SSLCertificateStore  => nil,
-	# Must specify if you use auto generated certificate.
-	:SSLCertName          => nil,   # e.g. [["CN","fqdn.example.com"]]
-	:SSLCertComment       => "Generated by Ruby/OpenSSL"
-      }
-
-      def initialize(config)
-	@config  = config
-        @cert    = config[:SSLCertificate]
-        @pkey    = config[:SSLPrivateKey]
-        @ssl_ctx = nil
-      end
-
-      def [](key); 
-	@config[key] || DEFAULT[key]
-      end
-
-      def connect(tcp)
-	ssl = ::OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
-	ssl.sync = true
-	ssl.connect
-	ssl
-      end
-      
-      def accept(tcp)
-	ssl = OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
-	ssl.sync = true
-	ssl.accept
-	ssl
-      end
-      
-      def setup_certificate
-        if @cert && @pkey
-          return
-        end
-
-	rsa = OpenSSL::PKey::RSA.new(512){|p, n|
-	  next unless self[:verbose]
-	  case p
-	  when 0; $stderr.putc "."  # BN_generate_prime
-	  when 1; $stderr.putc "+"  # BN_generate_prime
-	  when 2; $stderr.putc "*"  # searching good prime,
-	                            # n = #of try,
-                          	    # but also data from BN_generate_prime
-	  when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
-                         	    # but also data from BN_generate_prime
-	  else;   $stderr.putc "*"  # BN_generate_prime
-	  end
-	}
-
-	cert = OpenSSL::X509::Certificate.new
-	cert.version = 3
-	cert.serial = 0
-	name = OpenSSL::X509::Name.new(self[:SSLCertName])
-	cert.subject = name
-	cert.issuer = name
-	cert.not_before = Time.now
-	cert.not_after = Time.now + (365*24*60*60)
-	cert.public_key = rsa.public_key
-	
-	ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
-	cert.extensions = [
-	  ef.create_extension("basicConstraints","CA:FALSE"),
-	  ef.create_extension("subjectKeyIdentifier", "hash") ]
-	ef.issuer_certificate = cert
-	cert.add_extension(ef.create_extension("authorityKeyIdentifier",
-					       "keyid:always,issuer:always"))
-	if comment = self[:SSLCertComment]
-	  cert.add_extension(ef.create_extension("nsComment", comment))
-	end
-	cert.sign(rsa, OpenSSL::Digest::SHA1.new)
-	
-	@cert = cert
-        @pkey = rsa
-      end
-
-      def setup_ssl_context
-        ctx = ::OpenSSL::SSL::SSLContext.new
-        ctx.cert            = @cert
-        ctx.key             = @pkey
-	ctx.client_ca       = self[:SSLClientCA]
-	ctx.ca_path         = self[:SSLCACertificatePath]
-	ctx.ca_file         = self[:SSLCACertificateFile]
-	ctx.verify_mode     = self[:SSLVerifyMode]
-	ctx.verify_depth    = self[:SSLVerifyDepth]
-	ctx.verify_callback = self[:SSLVerifyCallback]
-        ctx.cert_store      = self[:SSLCertificateStore]
-        @ssl_ctx = ctx
-      end
-    end
-
-    def self.parse_uri(uri)
-      if uri =~ /^drbssl:\/\/(.*?):(\d+)(\?(.*))?$/
-	host = $1
-	port = $2.to_i
-	option = $4
-	[host, port, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^drbssl:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    def self.open(uri, config)
-      host, port, option = parse_uri(uri)
-      host.untaint
-      port.untaint
-      soc = TCPSocket.open(host, port)
-      ssl_conf = SSLConfig::new(config)
-      ssl_conf.setup_ssl_context
-      ssl = ssl_conf.connect(soc)
-      self.new(uri, ssl, ssl_conf, true)
-    end
-
-    def self.open_server(uri, config)
-      uri = 'drbssl://:0' unless uri
-      host, port, opt = parse_uri(uri)
-      if host.size == 0
-        host = getservername
-        soc = open_server_inaddr_any(host, port)
-      else
-	soc = TCPServer.open(host, port)
-      end
-      port = soc.addr[1] if port == 0
-      @uri = "drbssl://#{host}:#{port}"
-      
-      ssl_conf = SSLConfig.new(config)
-      ssl_conf.setup_certificate
-      ssl_conf.setup_ssl_context
-      self.new(@uri, soc, ssl_conf, false)
-    end
-
-    def self.uri_option(uri, config)
-      host, port, option = parse_uri(uri)
-      return "drbssl://#{host}:#{port}", option
-    end
-
-    def initialize(uri, soc, config, is_established)
-      @ssl = is_established ? soc : nil
-      super(uri, soc.to_io, config)
-    end
-    
-    def stream; @ssl; end
-
-    def close
-      if @ssl
-	@ssl.close
-	@ssl = nil
-      end
-      super
-    end
-      
-    def accept
-      begin
-      while true
-	soc = @socket.accept
-	break if (@acl ? @acl.allow_socket?(soc) : true) 
-	soc.close
-      end
-      ssl = @config.accept(soc)
-      self.class.new(uri, ssl, @config, true)
-      rescue OpenSSL::SSL::SSLError
-	warn("#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})") if @config[:verbose]
-	retry
-      end
-    end
-  end
-  
-  DRbProtocol.add_protocol(DRbSSLSocket)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/timeridconv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/timeridconv.rb
deleted file mode 100644
index bb2c48d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/timeridconv.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'drb/drb'
-require 'monitor'
-
-module DRb
-  class TimerIdConv < DRbIdConv
-    class TimerHolder2
-      include MonitorMixin
-
-      class InvalidIndexError < RuntimeError; end
-
-      def initialize(timeout=600)
-	super()
-	@sentinel = Object.new
-	@gc = {}
-	@curr = {}
-	@renew = {}
-	@timeout = timeout
-	@keeper = keeper
-      end
-
-      def add(obj)
-	synchronize do 
-	  key = obj.__id__
-	  @curr[key] = obj
-	  return key
-	end
-      end
-
-      def fetch(key, dv=@sentinel)
-	synchronize do 
-	  obj = peek(key)
-	  if obj == @sentinel
-	    return dv unless dv == @sentinel
-	    raise InvalidIndexError
-	  end
-	  @renew[key] = obj # KeepIt
-	  return obj
-	end
-      end
-
-      def include?(key)
-	synchronize do 
-	  obj = peek(key)
-	  return false if obj == @sentinel
-	  true
-	end
-      end
-
-      def peek(key)
-	synchronize do 
-	  return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel)))
-	end
-      end
-
-      private
-      def alternate
-	synchronize do
-	  @gc = @curr       # GCed
-	  @curr = @renew
-	  @renew = {}
-	end
-      end
-
-      def keeper
-	Thread.new do
-	  loop do
-	    size = alternate
-	    sleep(@timeout)
-	  end
-	end
-      end
-    end
-
-    def initialize(timeout=600)
-      @holder = TimerHolder2.new(timeout)
-    end
-
-    def to_obj(ref)
-      return super if ref.nil?
-      @holder.fetch(ref)
-    rescue TimerHolder2::InvalidIndexError
-      raise "invalid reference"
-    end
-
-    def to_id(obj)
-      return @holder.add(obj)
-    end
-  end
-end
-
-# DRb.install_id_conv(TimerIdConv.new)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/unix.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/unix.rb
deleted file mode 100644
index 57feed8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/drb/unix.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-require 'socket'
-require 'drb/drb'
-require 'tmpdir'
-
-raise(LoadError, "UNIXServer is required") unless defined?(UNIXServer)
-
-module DRb
-
-  class DRbUNIXSocket < DRbTCPSocket
-    def self.parse_uri(uri)
-      if /^drbunix:(.*?)(\?(.*))?$/ =~ uri 
-	filename = $1
-	option = $3
-	[filename, option]
-      else
-	raise(DRbBadScheme, uri) unless uri =~ /^drbunix:/
-	raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-    end
-
-    def self.open(uri, config)
-      filename, option = parse_uri(uri)
-      filename.untaint
-      soc = UNIXSocket.open(filename)
-      self.new(uri, soc, config)
-    end
-
-    def self.open_server(uri, config)
-      filename, option = parse_uri(uri)
-      if filename.size == 0
-	soc = temp_server
-        filename = soc.path
-	uri = 'drbunix:' + soc.path
-      else
-	soc = UNIXServer.open(filename)
-      end
-      owner = config[:UNIXFileOwner]
-      group = config[:UNIXFileGroup]
-      if owner || group
-        require 'etc'
-        owner = Etc.getpwnam( owner ).uid  if owner
-        group = Etc.getgrnam( group ).gid  if group
-        File.chown owner, group, filename
-      end
-      mode = config[:UNIXFileMode]
-      File.chmod(mode, filename) if mode
-
-      self.new(uri, soc, config, true)
-    end
-
-    def self.uri_option(uri, config)
-      filename, option = parse_uri(uri)
-      return "drbunix:#{filename}", option
-    end
-
-    def initialize(uri, soc, config={}, server_mode = false)
-      super(uri, soc, config)
-      set_sockopt(@socket)
-      @server_mode = server_mode
-      @acl = nil
-    end
-    
-    # import from tempfile.rb
-    Max_try = 10
-    private
-    def self.temp_server
-      tmpdir = Dir::tmpdir
-      n = 0
-      while true
-	begin
-	  tmpname = sprintf('%s/druby%d.%d', tmpdir, $$, n)
-	  lock = tmpname + '.lock'
-	  unless File.exist?(tmpname) or File.exist?(lock)
-	    Dir.mkdir(lock)
-	    break
-	  end
-	rescue
-	  raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
-	  #sleep(1)
-	end
-	n += 1
-      end
-      soc = UNIXServer.new(tmpname)
-      Dir.rmdir(lock)
-      soc
-    end
-
-    public
-    def close
-      return unless @socket
-      path = @socket.path if @server_mode
-      @socket.close
-      File.unlink(path) if @server_mode
-      @socket = nil
-    end
-
-    def accept
-      s = @socket.accept
-      self.class.new(nil, s, @config)
-    end
-
-    def set_sockopt(soc)
-      soc.fcntl(Fcntl::F_SETFL, Fcntl::FD_CLOEXEC) if defined? Fcntl::FD_CLOEXEC
-    end
-  end
-
-  DRbProtocol.add_protocol(DRbUNIXSocket)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/e2mmap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/e2mmap.rb
deleted file mode 100644
index 3e2604a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/e2mmap.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-#   e2mmap.rb - for ruby 1.1
-#   	$Release Version: 2.0$
-#   	$Revision: 1.10 $
-#   	$Date: 1999/02/17 12:33:17 $
-#   	by Keiju ISHITSUKA
-#
-# --
-#   Usage:
-#
-# U1)
-#   class Foo
-#     extend Exception2MessageMapper
-#     def_e2message ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#
-# U2)
-#   module Error
-#     extend Exception2MessageMapper
-#     def_e2meggage ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#   class Foo
-#     include Error
-#     ...
-#   end
-#
-#   foo = Foo.new
-#   foo.Fail ....
-#
-# U3)
-#   module Error
-#     extend Exception2MessageMapper
-#     def_e2message ExistingExceptionClass, "message..."
-#     def_exception :NewExceptionClass, "message..."[, superclass]
-#     ...
-#   end
-#   class Foo
-#     extend Exception2MessageMapper
-#     include Error
-#     ...
-#   end
-#
-#   Foo.Fail NewExceptionClass, arg...
-#   Foo.Fail ExistingExceptionClass, arg...
-#
-#
-fail "Use Ruby 1.1" if VERSION < "1.1"
-
-module Exception2MessageMapper
-  @RCS_ID='-$Id: e2mmap.rb,v 1.10 1999/02/17 12:33:17 keiju Exp keiju $-'
-
-  E2MM = Exception2MessageMapper
-
-  def E2MM.extend_object(cl)
-    super
-    cl.bind(self) unless cl == E2MM
-  end
-  
-  # backward compatibility
-  def E2MM.extend_to(b)
-    c = eval("self", b)
-    c.extend(self)
-  end
-
-  def bind(cl)
-    self.module_eval %[
-      def Raise(err = nil, *rest)
-	Exception2MessageMapper.Raise(self.class, err, *rest)
-      end
-      alias Fail Raise
-
-      def self.included(mod)
-	mod.extend Exception2MessageMapper
-      end
-    ]
-  end
-
-  # Fail(err, *rest)
-  #	err:	exception
-  #	rest:	message arguments
-  #
-  def Raise(err = nil, *rest)
-    E2MM.Raise(self, err, *rest)
-  end
-  alias Fail Raise
-
-  # backward compatibility
-  alias fail! fail
-  def fail(err = nil, *rest)
-    begin 
-      E2MM.Fail(self, err, *rest)
-    rescue E2MM::ErrNotRegisteredException
-      super
-    end
-  end
-  class << self
-    public :fail
-  end
-
-  
-  # def_e2message(c, m)
-  #	    c:  exception
-  #	    m:  message_form
-  #	define exception c with message m.
-  #
-  def def_e2message(c, m)
-    E2MM.def_e2message(self, c, m)
-  end
-  
-  # def_exception(n, m, s)
-  #	    n:  exception_name
-  #	    m:  message_form
-  #	    s:	superclass(default: StandardError)
-  #	define exception named ``c'' with message m.
-  #
-  def def_exception(n, m, s = StandardError)
-    E2MM.def_exception(self, n, m, s)
-  end
-
-  #
-  # Private definitions.
-  #
-  # {[class, exp] => message, ...}
-  @MessageMap = {}
-
-  # E2MM.def_exception(k, e, m)
-  #	    k:  class to define exception under.
-  #	    e:  exception
-  #	    m:  message_form
-  #	define exception c with message m.
-  #
-  def E2MM.def_e2message(k, c, m)
-    E2MM.instance_eval{@MessageMap[[k, c]] = m}
-    c
-  end
-  
-  # E2MM.def_exception(k, n, m, s)
-  #	    k:  class to define exception under.
-  #	    n:  exception_name
-  #	    m:  message_form
-  #	    s:	superclass(default: StandardError)
-  #	define exception named ``c'' with message m.
-  #
-  def E2MM.def_exception(k, n, m, s = StandardError)
-    n = n.id2name if n.kind_of?(Fixnum)
-    e = Class.new(s)
-    E2MM.instance_eval{@MessageMap[[k, e]] = m}
-    k.const_set(n, e)
-  end
-
-  # Fail(klass, err, *rest)
-  #	klass:  class to define exception under.
-  #	err:	exception
-  #	rest:	message arguments
-  #
-  def E2MM.Raise(klass = E2MM, err = nil, *rest)
-    if form = e2mm_message(klass, err)
-      $! = err.new(sprintf(form, *rest))
-      $@ = caller(1) if $@.nil?
-      #p $@
-      #p __FILE__
-      $@.shift if $@[0] =~ /^#{Regexp.quote(__FILE__)}:/
-      raise
-    else
-      E2MM.Fail E2MM, ErrNotRegisteredException, err.inspect
-    end
-  end
-  class <<E2MM
-    alias Fail Raise
-  end
-
-  def E2MM.e2mm_message(klass, exp)
-    for c in klass.ancestors
-      if mes = @MessageMap[[c,exp]]
-	#p mes
-	m = klass.instance_eval('"' + mes + '"')
-	return m
-      end
-    end
-    nil
-  end
-  class <<self
-    alias message e2mm_message
-  end
-
-  E2MM.def_exception(E2MM, 
-		     :ErrNotRegisteredException, 
-		     "not registerd exception(%s)")
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/erb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/erb.rb
deleted file mode 100644
index 5b4c7ed..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/erb.rb
+++ /dev/null
@@ -1,827 +0,0 @@
-# = ERB -- Ruby Templating
-#
-# Author:: Masatoshi SEKI
-# Documentation:: James Edward Gray II and Gavin Sinclair
-#
-# See ERB for primary documentation and ERB::Util for a couple of utility
-# routines.
-#
-# Copyright (c) 1999-2000,2002,2003 Masatoshi SEKI
-#
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-#
-# = ERB -- Ruby Templating
-#
-# == Introduction
-#
-# ERB provides an easy to use but powerful templating system for Ruby.  Using
-# ERB, actual Ruby code can be added to any plain text document for the
-# purposes of generating document information details and/or flow control.
-#
-# A very simple example is this:
-# 
-#   require 'erb'
-#
-#   x = 42
-#   template = ERB.new <<-EOF
-#     The value of x is: <%= x %>
-#   EOF
-#   puts template.result(binding)
-#
-# <em>Prints:</em> The value of x is: 42
-#
-# More complex examples are given below.
-#
-#
-# == Recognized Tags
-#
-# ERB recognizes certain tags in the provided template and converts them based
-# on the rules below:
-#
-#   <% Ruby code -- inline with output %>
-#   <%= Ruby expression -- replace with result %>
-#   <%# comment -- ignored -- useful in testing %>
-#   % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new)
-#   %% replaced with % if first thing on a line and % processing is used
-#   <%% or %%> -- replace with <% or %> respectively
-#
-# All other text is passed through ERB filtering unchanged.
-#
-#
-# == Options
-#
-# There are several settings you can change when you use ERB:
-# * the nature of the tags that are recognized;
-# * the value of <tt>$SAFE</tt> under which the template is run;
-# * the binding used to resolve local variables in the template.
-#
-# See the ERB.new and ERB#result methods for more detail.
-#
-#
-# == Examples
-#
-# === Plain Text
-#
-# ERB is useful for any generic templating situation.  Note that in this example, we use the
-# convenient "% at start of line" tag, and we quote the template literally with
-# <tt>%q{...}</tt> to avoid trouble with the backslash.
-#
-#   require "erb"
-#   
-#   # Create template.
-#   template = %q{
-#     From:  James Edward Gray II <james at grayproductions.net>
-#     To:  <%= to %>
-#     Subject:  Addressing Needs
-#   
-#     <%= to[/\w+/] %>:
-#   
-#     Just wanted to send a quick note assuring that your needs are being
-#     addressed.
-#   
-#     I want you to know that my team will keep working on the issues,
-#     especially:
-#   
-#     <%# ignore numerous minor requests -- focus on priorities %>
-#     % priorities.each do |priority|
-#       * <%= priority %>
-#     % end
-#   
-#     Thanks for your patience.
-#   
-#     James Edward Gray II
-#   }.gsub(/^  /, '')
-#   
-#   message = ERB.new(template, 0, "%<>")
-#   
-#   # Set up template data.
-#   to = "Community Spokesman <spokesman at ruby_community.org>"
-#   priorities = [ "Run Ruby Quiz",
-#                  "Document Modules",
-#                  "Answer Questions on Ruby Talk" ]
-#   
-#   # Produce result.
-#   email = message.result
-#   puts email
-#
-# <i>Generates:</i>
-#
-#   From:  James Edward Gray II <james at grayproductions.net>
-#   To:  Community Spokesman <spokesman at ruby_community.org>
-#   Subject:  Addressing Needs
-#   
-#   Community:
-#   
-#   Just wanted to send a quick note assuring that your needs are being addressed.
-#   
-#   I want you to know that my team will keep working on the issues, especially:
-#   
-#       * Run Ruby Quiz
-#       * Document Modules
-#       * Answer Questions on Ruby Talk
-#   
-#   Thanks for your patience.
-#   
-#   James Edward Gray II
-#
-# === Ruby in HTML
-#
-# ERB is often used in <tt>.rhtml</tt> files (HTML with embedded Ruby).  Notice the need in
-# this example to provide a special binding when the template is run, so that the instance
-# variables in the Product object can be resolved.
-#
-#   require "erb"
-#   
-#   # Build template data class.
-#   class Product
-#     def initialize( code, name, desc, cost )
-#       @code = code
-#       @name = name
-#       @desc = desc
-#       @cost = cost
-#        	
-#       @features = [ ]
-#     end
-#   
-#     def add_feature( feature )
-#       @features << feature
-#     end
-#   
-#     # Support templating of member data.
-#     def get_binding
-#       binding
-#     end
-#   
-#     # ...
-#   end
-#   
-#   # Create template.
-#   template = %{
-#     <html>
-#       <head><title>Ruby Toys -- <%= @name %></title></head>
-#       <body>
-#   
-#         <h1><%= @name %> (<%= @code %>)</h1>
-#         <p><%= @desc %></p>
-#   
-#         <ul>
-#           <% @features.each do |f| %>
-#             <li><b><%= f %></b></li>
-#           <% end %>
-#         </ul>
-#   
-#         <p>
-#           <% if @cost < 10 %>
-#             <b>Only <%= @cost %>!!!</b>
-#           <% else %>
-#              Call for a price, today!
-#           <% end %>
-#         </p>
-#    
-#       </body>
-#     </html>
-#   }.gsub(/^  /, '')
-#   
-#   rhtml = ERB.new(template)
-#   
-#   # Set up template data.
-#   toy = Product.new( "TZ-1002",
-#                      "Rubysapien",
-#                      "Geek's Best Friend!  Responds to Ruby commands...",
-#                      999.95 )
-#   toy.add_feature("Listens for verbal commands in the Ruby language!")
-#   toy.add_feature("Ignores Perl, Java, and all C variants.")
-#   toy.add_feature("Karate-Chop Action!!!")
-#   toy.add_feature("Matz signature on left leg.")
-#   toy.add_feature("Gem studded eyes... Rubies, of course!")
-#   
-#   # Produce result.
-#   rhtml.run(toy.get_binding)
-#
-# <i>Generates (some blank lines removed):</i>
-#
-#    <html>
-#      <head><title>Ruby Toys -- Rubysapien</title></head>
-#      <body>
-#    
-#        <h1>Rubysapien (TZ-1002)</h1>
-#        <p>Geek's Best Friend!  Responds to Ruby commands...</p>
-#    
-#        <ul>
-#            <li><b>Listens for verbal commands in the Ruby language!</b></li>
-#            <li><b>Ignores Perl, Java, and all C variants.</b></li>
-#            <li><b>Karate-Chop Action!!!</b></li>
-#            <li><b>Matz signature on left leg.</b></li>
-#            <li><b>Gem studded eyes... Rubies, of course!</b></li>
-#        </ul>
-#    
-#        <p>
-#             Call for a price, today!
-#        </p>
-#    
-#      </body>
-#    </html>
-#
-# 
-# == Notes
-#
-# There are a variety of templating solutions available in various Ruby projects:
-# * ERB's big brother, eRuby, works the same but is written in C for speed;
-# * Amrita (smart at producing HTML/XML);
-# * cs/Template (written in C for speed);
-# * RDoc, distributed with Ruby, uses its own template engine, which can be reused elsewhere;
-# * and others; search the RAA.
-#
-# Rails, the web application framework, uses ERB to create views.
-#
-class ERB
-  Revision = '$Date: 2008-06-24 16:16:52 +0900 (Tue, 24 Jun 2008) $' 	#'
-
-  # Returns revision information for the erb.rb module.
-  def self.version
-    "erb.rb [2.0.4 #{ERB::Revision.split[1]}]"
-  end
-end
-
-#--
-# ERB::Compiler
-class ERB
-  class Compiler # :nodoc:
-    class PercentLine # :nodoc:
-      def initialize(str)
-        @value = str
-      end
-      attr_reader :value
-      alias :to_s :value
-    end
-
-    class Scanner # :nodoc:
-      SplitRegexp = /(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>)|(\n)/
-
-      @scanner_map = {}
-      def self.regist_scanner(klass, trim_mode, percent)
-	@scanner_map[[trim_mode, percent]] = klass
-      end
-
-      def self.default_scanner=(klass)
-	@default_scanner = klass
-      end
-
-      def self.make_scanner(src, trim_mode, percent)
-	klass = @scanner_map.fetch([trim_mode, percent], @default_scanner)
-	klass.new(src, trim_mode, percent)
-      end
-
-      def initialize(src, trim_mode, percent)
-	@src = src
-	@stag = nil
-      end
-      attr_accessor :stag
-
-      def scan; end
-    end
-
-    class TrimScanner < Scanner # :nodoc:
-      TrimSplitRegexp = /(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>\n)|(%>)|(\n)/
-
-      def initialize(src, trim_mode, percent)
-	super
-	@trim_mode = trim_mode
-	@percent = percent
-	if @trim_mode == '>'
-	  @scan_line = self.method(:trim_line1)
-	elsif @trim_mode == '<>'
-	  @scan_line = self.method(:trim_line2)
-	elsif @trim_mode == '-'
-	  @scan_line = self.method(:explicit_trim_line)
-	else
-	  @scan_line = self.method(:scan_line)
-	end
-      end
-      attr_accessor :stag
-      
-      def scan(&block)
-	@stag = nil
-	if @percent
-	  @src.each do |line|
-	    percent_line(line, &block)
-	  end
-	else
-	  @src.each do |line|
-	    @scan_line.call(line, &block)
-	  end
-	end
-	nil
-      end
-
-      def percent_line(line, &block)
-	if @stag || line[0] != ?%
-	  return @scan_line.call(line, &block)
-	end
-
-	line[0] = ''
-	if line[0] == ?%
-	  @scan_line.call(line, &block)
-	else
-          yield(PercentLine.new(line.chomp))
-	end
-      end
-
-      def scan_line(line)
-	line.split(SplitRegexp).each do |token|
-	  next if token.empty?
-	  yield(token)
-	end
-      end
-
-      def trim_line1(line)
-	line.split(TrimSplitRegexp).each do |token|
-	  next if token.empty?
-	  if token == "%>\n"
-	    yield('%>')
-	    yield(:cr)
-	    break
-	  end
-	  yield(token)
-	end
-      end
-
-      def trim_line2(line)
-	head = nil
-	line.split(TrimSplitRegexp).each do |token|
-	  next if token.empty?
-	  head = token unless head
-	  if token == "%>\n"
-	    yield('%>')
-	    if  is_erb_stag?(head)
-	      yield(:cr)
-	    else
-	      yield("\n")
-	    end
-	    break
-	  end
-	  yield(token)
-	end
-      end
-
-      def explicit_trim_line(line)
-        line.scan(/(.*?)(^[ \t]*<%\-|<%\-|<%%|%%>|<%=|<%#|<%|-%>\n|-%>|%>|\z)/m) do |tokens|
-          tokens.each do |token|
-            next if token.empty?
-            if @stag.nil? && /[ \t]*<%-/ =~ token
-              yield('<%')
-            elsif @stag && token == "-%>\n"
-              yield('%>')
-              yield(:cr)
-            elsif @stag && token == '-%>'
-              yield('%>')
-            else
-              yield(token)
-            end
-          end
-        end
-      end
-
-      ERB_STAG = %w(<%= <%# <%)
-      def is_erb_stag?(s)
-	ERB_STAG.member?(s)
-      end
-    end
-
-    Scanner.default_scanner = TrimScanner
-
-    class SimpleScanner < Scanner # :nodoc:
-      def scan
-	@src.each do |line|
-	  line.split(SplitRegexp).each do |token|
-	    next if token.empty?
-	    yield(token)
-	  end
-	end
-      end
-    end
-    
-    Scanner.regist_scanner(SimpleScanner, nil, false)
-
-    begin
-      require 'strscan'
-      class SimpleScanner2 < Scanner # :nodoc:
-        def scan
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-            scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-            yield(text) unless text.empty?
-            yield(elem) unless elem.empty?
-          end
-        end
-      end
-      Scanner.regist_scanner(SimpleScanner2, nil, false)
-
-      class PercentScanner < Scanner # :nodoc:
-	def scan
-	  new_line = true
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-	    if new_line && @stag.nil?
-	      if scanner.scan(/%%/)
-		yield('%')
-		new_line = false
-		next
-	      elsif scanner.scan(/%/)
-		yield(PercentLine.new(scanner.scan(/.*?(\n|\z)/).chomp))
-		next
-	      end
-	    end
-	    scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-            yield(text) unless text.empty?
-            yield(elem) unless elem.empty?
-	    new_line = (elem == "\n")
-          end
-        end
-      end
-      Scanner.regist_scanner(PercentScanner, nil, true)
-
-      class ExplicitScanner < Scanner # :nodoc:
-	def scan
-	  new_line = true
-          stag_reg = /(.*?)(<%%|<%=|<%#|<%-|<%|\n|\z)/
-          etag_reg = /(.*?)(%%>|-%>|%>|\n|\z)/
-          scanner = StringScanner.new(@src)
-          while ! scanner.eos?
-	    if new_line && @stag.nil? && scanner.scan(/[ \t]*<%-/)
-	      yield('<%')
-	      new_line = false
-	      next
-	    end
-	    scanner.scan(@stag ? etag_reg : stag_reg)
-            text = scanner[1]
-            elem = scanner[2]
-	    new_line = (elem == "\n")
-            yield(text) unless text.empty?
-	    if elem == '-%>'
-	      yield('%>')
-	      if scanner.scan(/(\n|\z)/)
-		yield(:cr)
-		new_line = true
-	      end
-	    elsif elem == '<%-'
-	      yield('<%')
-	    else
-	      yield(elem) unless elem.empty?
-	    end
-          end
-        end
-      end
-      Scanner.regist_scanner(ExplicitScanner, '-', false)
-
-    rescue LoadError
-    end
-
-    class Buffer # :nodoc:
-      def initialize(compiler)
-	@compiler = compiler
-	@line = []
-	@script = ""
-	@compiler.pre_cmd.each do |x|
-	  push(x)
-	end
-      end
-      attr_reader :script
-
-      def push(cmd)
-	@line << cmd
-      end
-      
-      def cr
-	@script << (@line.join('; '))
-	@line = []
-	@script << "\n"
-      end
-      
-      def close
-	return unless @line
-	@compiler.post_cmd.each do |x|
-	  push(x)
-	end
-	@script << (@line.join('; '))
-	@line = nil
-      end
-    end
-
-    def compile(s)
-      out = Buffer.new(self)
-
-      content = ''
-      scanner = make_scanner(s)
-      scanner.scan do |token|
-	if scanner.stag.nil?
-	  case token
-          when PercentLine
-	    out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-	    content = ''
-            out.push(token.to_s)
-            out.cr
-	  when :cr
-	    out.cr
-	  when '<%', '<%=', '<%#'
-	    scanner.stag = token
-	    out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-	    content = ''
-	  when "\n"
-	    content << "\n"
-	    out.push("#{@put_cmd} #{content.dump}")
-	    out.cr
-	    content = ''
-	  when '<%%'
-	    content << '<%'
-	  else
-	    content << token
-	  end
-	else
-	  case token
-	  when '%>'
-	    case scanner.stag
-	    when '<%'
-	      if content[-1] == ?\n
-		content.chop!
-		out.push(content)
-		out.cr
-	      else
-		out.push(content)
-	      end
-	    when '<%='
-	      out.push("#{@insert_cmd}((#{content}).to_s)")
-	    when '<%#'
-	      # out.push("# #{content.dump}")
-	    end
-	    scanner.stag = nil
-	    content = ''
-	  when '%%>'
-	    content << '%>'
-	  else
-	    content << token
-	  end
-	end
-      end
-      out.push("#{@put_cmd} #{content.dump}") if content.size > 0
-      out.close
-      out.script
-    end
-
-    def prepare_trim_mode(mode)
-      case mode
-      when 1
-	return [false, '>']
-      when 2
-	return [false, '<>']
-      when 0
-	return [false, nil]
-      when String
-	perc = mode.include?('%')
-	if mode.include?('-')
-	  return [perc, '-']
-	elsif mode.include?('<>')
-	  return [perc, '<>']
-	elsif mode.include?('>')
-	  return [perc, '>']
-	else
-	  [perc, nil]
-	end
-      else
-	return [false, nil]
-      end
-    end
-
-    def make_scanner(src)
-      Scanner.make_scanner(src, @trim_mode, @percent)
-    end
-
-    def initialize(trim_mode)
-      @percent, @trim_mode = prepare_trim_mode(trim_mode)
-      @put_cmd = 'print'
-      @insert_cmd = @put_cmd
-      @pre_cmd = []
-      @post_cmd = []
-    end
-    attr_reader :percent, :trim_mode
-    attr_accessor :put_cmd, :insert_cmd, :pre_cmd, :post_cmd
-  end
-end
-
-#--
-# ERB
-class ERB
-  #
-  # Constructs a new ERB object with the template specified in _str_.
-  # 
-  # An ERB object works by building a chunk of Ruby code that will output
-  # the completed template when run. If _safe_level_ is set to a non-nil value,
-  # ERB code will be run in a separate thread with <b>$SAFE</b> set to the
-  # provided level.
-  # 
-  # If _trim_mode_ is passed a String containing one or more of the following
-  # modifiers, ERB will adjust its code generation as listed:
-  # 
-  # 	%  enables Ruby code processing for lines beginning with %
-  # 	<> omit newline for lines starting with <% and ending in %>
-  # 	>  omit newline for lines ending in %>
-  # 
-  # _eoutvar_ can be used to set the name of the variable ERB will build up
-  # its output in.  This is useful when you need to run multiple ERB
-  # templates through the same binding and/or when you want to control where
-  # output ends up.  Pass the name of the variable to be used inside a String.
-  #
-  # === Example
-  #
-  #  require "erb"
-  #  
-  #  # build data class
-  #  class Listings
-  #    PRODUCT = { :name => "Chicken Fried Steak",
-  #                :desc => "A well messages pattie, breaded and fried.",
-  #                :cost => 9.95 }
-  #  
-  #    attr_reader :product, :price
-  #    
-  #    def initialize( product = "", price = "" )
-  #      @product = product
-  #      @price = price
-  #    end
-  #    
-  #    def build
-  #      b = binding
-  #      # create and run templates, filling member data variebles
-  #      ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), 0, "", "@product").result b
-  #        <%= PRODUCT[:name] %>
-  #        <%= PRODUCT[:desc] %>
-  #      END_PRODUCT
-  #      ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), 0, "", "@price").result b
-  #        <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %>
-  #        <%= PRODUCT[:desc] %>
-  #      END_PRICE
-  #    end
-  #  end
-  #  
-  #  # setup template data
-  #  listings = Listings.new
-  #  listings.build
-  #  
-  #  puts listings.product + "\n" + listings.price
-  #
-  # _Generates_
-  #
-  #  Chicken Fried Steak
-  #  A well messages pattie, breaded and fried.
-  #  
-  #  Chicken Fried Steak -- 9.95
-  #  A well messages pattie, breaded and fried.
-  #  
-  def initialize(str, safe_level=nil, trim_mode=nil, eoutvar='_erbout')
-    @safe_level = safe_level
-    compiler = ERB::Compiler.new(trim_mode)
-    set_eoutvar(compiler, eoutvar)
-    @src = compiler.compile(str)
-    @filename = nil
-  end
-
-  # The Ruby code generated by ERB
-  attr_reader :src
-
-  # The optional _filename_ argument passed to Kernel#eval when the ERB code
-  # is run
-  attr_accessor :filename
-
-  #
-  # Can be used to set _eoutvar_ as described in ERB#new.  It's probably easier
-  # to just use the constructor though, since calling this method requires the
-  # setup of an ERB _compiler_ object.
-  #
-  def set_eoutvar(compiler, eoutvar = '_erbout')
-    compiler.put_cmd = "#{eoutvar}.concat"
-    compiler.insert_cmd = "#{eoutvar}.concat"
-
-    cmd = []
-    cmd.push "#{eoutvar} = ''"
-    
-    compiler.pre_cmd = cmd
-
-    cmd = []
-    cmd.push(eoutvar)
-
-    compiler.post_cmd = cmd
-  end
-
-  # Generate results and print them. (see ERB#result)
-  def run(b=TOPLEVEL_BINDING)
-    print self.result(b)
-  end
-
-  #
-  # Executes the generated ERB code to produce a completed template, returning
-  # the results of that code.  (See ERB#new for details on how this process can
-  # be affected by _safe_level_.)
-  # 
-  # _b_ accepts a Binding or Proc object which is used to set the context of
-  # code evaluation.
-  #
-  def result(b=TOPLEVEL_BINDING)
-    if @safe_level
-      th = Thread.start { 
-	$SAFE = @safe_level
-	eval(@src, b, (@filename || '(erb)'), 1)
-      }
-      return th.value
-    else
-      return eval(@src, b, (@filename || '(erb)'), 1)
-    end
-  end
-
-  def def_method(mod, methodname, fname='(ERB)')  # :nodoc:
-    mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, 0)
-  end
-
-  def def_module(methodname='erb')  # :nodoc:
-    mod = Module.new
-    def_method(mod, methodname)
-    mod
-  end
-
-  def def_class(superklass=Object, methodname='result')  # :nodoc:
-    cls = Class.new(superklass)
-    def_method(cls, methodname)
-    cls
-  end
-end
-
-#--
-# ERB::Util
-class ERB
-  # A utility module for conversion routines, often handy in HTML generation.
-  module Util
-    public
-    #
-    # A utility method for escaping HTML tag characters in _s_.
-    # 
-    # 	require "erb"
-    # 	include ERB::Util
-    # 	
-    # 	puts html_escape("is a > 0 & a < 10?")
-    # 
-    # _Generates_
-    # 
-    # 	is a > 0 & a < 10?
-    #
-    def html_escape(s)
-      s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-    end
-    alias h html_escape
-    module_function :h
-    module_function :html_escape
-    
-    #
-    # A utility method for encoding the String _s_ as a URL.
-    # 
-    # 	require "erb"
-    # 	include ERB::Util
-    # 	
-    # 	puts url_encode("Programming Ruby:  The Pragmatic Programmer's Guide")
-    # 
-    # _Generates_
-    # 
-    # 	Programming%20Ruby%3A%20%20The%20Pragmatic%20Programmer%27s%20Guide
-    #
-    def url_encode(s)
-      s.to_s.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
-    end
-    alias u url_encode
-    module_function :u
-    module_function :url_encode
-  end
-end
-
-#--
-# ERB::DefMethod
-class ERB
-  module DefMethod  # :nodoc:
-    public
-    def def_erb_method(methodname, erb)
-      if erb.kind_of? String
-	fname = erb
-	File.open(fname) {|f| erb = ERB.new(f.read) }
-	erb.def_method(self, methodname, fname)
-      else
-	erb.def_method(self, methodname)
-      end
-    end
-    module_function :def_erb_method
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/eregex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/eregex.rb
deleted file mode 100644
index cc7a7f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/eregex.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# this is just a proof of concept toy.
-
-class RegOr
-  def initialize(re1, re2)
-    @re1 = re1
-    @re2 = re2
-  end
-
-  def =~ (str)
-    @re1 =~ str or @re2 =~ str
-  end
-end
-
-class RegAnd
-  def initialize(re1, re2)
-    @re1 = re1
-    @re2 = re2
-  end
-
-  def =~ (str)
-    @re1 =~ str and @re2 =~ str
-  end
-end
-
-class Regexp
-  def |(other)
-    RegOr.new(self, other)
-  end
-  def &(other)
-    RegAnd.new(self, other)
-  end
-end
-
-if __FILE__ == $0
-  p "abc" =~ /b/|/c/
-  p "abc" =~ /b/&/c/
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/fileutils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/fileutils.rb
deleted file mode 100644
index 3fdb6cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/fileutils.rb
+++ /dev/null
@@ -1,1591 +0,0 @@
-# 
-# = fileutils.rb
-# 
-# Copyright (c) 2000-2006 Minero Aoki
-# 
-# This program is free software.
-# You can distribute/modify this program under the same terms of ruby.
-# 
-# == module FileUtils
-# 
-# Namespace for several file utility methods for copying, moving, removing, etc.
-# 
-# === Module Functions
-# 
-#   cd(dir, options)
-#   cd(dir, options) {|dir| .... }
-#   pwd()
-#   mkdir(dir, options)
-#   mkdir(list, options)
-#   mkdir_p(dir, options)
-#   mkdir_p(list, options)
-#   rmdir(dir, options)
-#   rmdir(list, options)
-#   ln(old, new, options)
-#   ln(list, destdir, options)
-#   ln_s(old, new, options)
-#   ln_s(list, destdir, options)
-#   ln_sf(src, dest, options)
-#   cp(src, dest, options)
-#   cp(list, dir, options)
-#   cp_r(src, dest, options)
-#   cp_r(list, dir, options)
-#   mv(src, dest, options)
-#   mv(list, dir, options)
-#   rm(list, options)
-#   rm_r(list, options)
-#   rm_rf(list, options)
-#   install(src, dest, mode = <src's>, options)
-#   chmod(mode, list, options)
-#   chmod_R(mode, list, options)
-#   chown(user, group, list, options)
-#   chown_R(user, group, list, options)
-#   touch(list, options)
-#
-# The <tt>options</tt> parameter is a hash of options, taken from the list
-# <tt>:force</tt>, <tt>:noop</tt>, <tt>:preserve</tt>, and <tt>:verbose</tt>.
-# <tt>:noop</tt> means that no changes are made.  The other two are obvious.
-# Each method documents the options that it honours.
-#
-# All methods that have the concept of a "source" file or directory can take
-# either one file or a list of files in that argument.  See the method
-# documentation for examples.
-#
-# There are some `low level' methods, which do not accept any option:
-#
-#   copy_entry(src, dest, preserve = false, dereference = false)
-#   copy_file(src, dest, preserve = false, dereference = true)
-#   copy_stream(srcstream, deststream)
-#   remove_entry(path, force = false)
-#   remove_entry_secure(path, force = false)
-#   remove_file(path, force = false)
-#   compare_file(path_a, path_b)
-#   compare_stream(stream_a, stream_b)
-#   uptodate?(file, cmp_list)
-#
-# == module FileUtils::Verbose
-# 
-# This module has all methods of FileUtils module, but it outputs messages
-# before acting.  This equates to passing the <tt>:verbose</tt> flag to methods
-# in FileUtils.
-# 
-# == module FileUtils::NoWrite
-# 
-# This module has all methods of FileUtils module, but never changes
-# files/directories.  This equates to passing the <tt>:noop</tt> flag to methods
-# in FileUtils.
-# 
-# == module FileUtils::DryRun
-# 
-# This module has all methods of FileUtils module, but never changes
-# files/directories.  This equates to passing the <tt>:noop</tt> and
-# <tt>:verbose</tt> flags to methods in FileUtils.
-# 
-
-module FileUtils
-
-  def self.private_module_function(name)   #:nodoc:
-    module_function name
-    private_class_method name
-  end
-
-  # This hash table holds command options.
-  OPT_TABLE = {}   #:nodoc: internal use only
-
-  #
-  # Options: (none)
-  #
-  # Returns the name of the current directory.
-  #
-  def pwd
-    Dir.pwd
-  end
-  module_function :pwd
-
-  alias getwd pwd
-  module_function :getwd
-
-  #
-  # Options: verbose
-  # 
-  # Changes the current directory to the directory +dir+.
-  # 
-  # If this method is called with block, resumes to the old
-  # working directory after the block execution finished.
-  # 
-  #   FileUtils.cd('/', :verbose => true)   # chdir and report it
-  # 
-  def cd(dir, options = {}, &block) # :yield: dir
-    fu_check_options options, OPT_TABLE['cd']
-    fu_output_message "cd #{dir}" if options[:verbose]
-    Dir.chdir(dir, &block)
-    fu_output_message 'cd -' if options[:verbose] and block
-  end
-  module_function :cd
-
-  alias chdir cd
-  module_function :chdir
-
-  OPT_TABLE['cd']    =
-  OPT_TABLE['chdir'] = [:verbose]
-
-  #
-  # Options: (none)
-  # 
-  # Returns true if +newer+ is newer than all +old_list+.
-  # Non-existent files are older than any file.
-  # 
-  #   FileUtils.uptodate?('hello.o', %w(hello.c hello.h)) or \
-  #       system 'make hello.o'
-  # 
-  def uptodate?(new, old_list, options = nil)
-    raise ArgumentError, 'uptodate? does not accept any option' if options
-
-    return false unless File.exist?(new)
-    new_time = File.mtime(new)
-    old_list.each do |old|
-      if File.exist?(old)
-        return false unless new_time > File.mtime(old)
-      end
-    end
-    true
-  end
-  module_function :uptodate?
-
-  #
-  # Options: mode noop verbose
-  # 
-  # Creates one or more directories.
-  # 
-  #   FileUtils.mkdir 'test'
-  #   FileUtils.mkdir %w( tmp data )
-  #   FileUtils.mkdir 'notexist', :noop => true  # Does not really create.
-  #   FileUtils.mkdir 'tmp', :mode => 0700
-  # 
-  def mkdir(list, options = {})
-    fu_check_options options, OPT_TABLE['mkdir']
-    list = fu_list(list)
-    fu_output_message "mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-
-    list.each do |dir|
-      fu_mkdir dir, options[:mode]
-    end
-  end
-  module_function :mkdir
-
-  OPT_TABLE['mkdir'] = [:mode, :noop, :verbose]
-
-  #
-  # Options: mode noop verbose
-  # 
-  # Creates a directory and all its parent directories.
-  # For example,
-  # 
-  #   FileUtils.mkdir_p '/usr/local/lib/ruby'
-  # 
-  # causes to make following directories, if it does not exist.
-  #     * /usr
-  #     * /usr/local
-  #     * /usr/local/lib
-  #     * /usr/local/lib/ruby
-  #
-  # You can pass several directories at a time in a list.
-  # 
-  def mkdir_p(list, options = {})
-    fu_check_options options, OPT_TABLE['mkdir_p']
-    list = fu_list(list)
-    fu_output_message "mkdir -p #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
-    return *list if options[:noop]
-
-    list.map {|path| path.sub(%r</\z>, '') }.each do |path|
-      # optimize for the most common case
-      begin
-        fu_mkdir path, options[:mode]
-        next
-      rescue SystemCallError
-        next if File.directory?(path)
-      end
-
-      stack = []
-      until path == stack.last   # dirname("/")=="/", dirname("C:/")=="C:/"
-        stack.push path
-        path = File.dirname(path)
-      end
-      stack.reverse_each do |path|
-        begin
-          fu_mkdir path, options[:mode]
-        rescue SystemCallError => err
-          raise unless File.directory?(path)
-        end
-      end
-    end
-
-    return *list
-  end
-  module_function :mkdir_p
-
-  alias mkpath    mkdir_p
-  alias makedirs  mkdir_p
-  module_function :mkpath
-  module_function :makedirs
-
-  OPT_TABLE['mkdir_p']  =
-  OPT_TABLE['mkpath']   =
-  OPT_TABLE['makedirs'] = [:mode, :noop, :verbose]
-
-  def fu_mkdir(path, mode)   #:nodoc:
-    path = path.sub(%r</\z>, '')
-    if mode
-      Dir.mkdir path, mode
-      File.chmod mode, path
-    else
-      Dir.mkdir path
-    end
-  end
-  private_module_function :fu_mkdir
-
-  #
-  # Options: noop, verbose
-  # 
-  # Removes one or more directories.
-  # 
-  #   FileUtils.rmdir 'somedir'
-  #   FileUtils.rmdir %w(somedir anydir otherdir)
-  #   # Does not really remove directory; outputs message.
-  #   FileUtils.rmdir 'somedir', :verbose => true, :noop => true
-  # 
-  def rmdir(list, options = {})
-    fu_check_options options, OPT_TABLE['rmdir']
-    list = fu_list(list)
-    fu_output_message "rmdir #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-    list.each do |dir|
-      Dir.rmdir dir.sub(%r</\z>, '')
-    end
-  end
-  module_function :rmdir
-
-  OPT_TABLE['rmdir'] = [:noop, :verbose]
-
-  #
-  # Options: force noop verbose
-  #
-  # <b><tt>ln(old, new, options = {})</tt></b>
-  #
-  # Creates a hard link +new+ which points to +old+.
-  # If +new+ already exists and it is a directory, creates a link +new/old+.
-  # If +new+ already exists and it is not a directory, raises Errno::EEXIST.
-  # But if :force option is set, overwrite +new+.
-  # 
-  #   FileUtils.ln 'gcc', 'cc', :verbose => true
-  #   FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
-  # 
-  # <b><tt>ln(list, destdir, options = {})</tt></b>
-  # 
-  # Creates several hard links in a directory, with each one pointing to the
-  # item in +list+.  If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  # 
-  #   include FileUtils
-  #   cd '/sbin'
-  #   FileUtils.ln %w(cp mv mkdir), '/bin'   # Now /sbin/cp and /bin/cp are linked.
-  # 
-  def ln(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln']
-    fu_output_message "ln#{options[:force] ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest0(src, dest) do |s,d|
-      remove_file d, true if options[:force]
-      File.link s, d
-    end
-  end
-  module_function :ln
-
-  alias link ln
-  module_function :link
-
-  OPT_TABLE['ln']   =
-  OPT_TABLE['link'] = [:force, :noop, :verbose]
-
-  #
-  # Options: force noop verbose
-  #
-  # <b><tt>ln_s(old, new, options = {})</tt></b>
-  # 
-  # Creates a symbolic link +new+ which points to +old+.  If +new+ already
-  # exists and it is a directory, creates a symbolic link +new/old+.  If +new+
-  # already exists and it is not a directory, raises Errno::EEXIST.  But if
-  # :force option is set, overwrite +new+.
-  # 
-  #   FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby'
-  #   FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force => true
-  # 
-  # <b><tt>ln_s(list, destdir, options = {})</tt></b>
-  # 
-  # Creates several symbolic links in a directory, with each one pointing to the
-  # item in +list+.  If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  #
-  # If +destdir+ is not a directory, raises Errno::ENOTDIR.
-  # 
-  #   FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'
-  # 
-  def ln_s(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln_s']
-    fu_output_message "ln -s#{options[:force] ? 'f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest0(src, dest) do |s,d|
-      remove_file d, true if options[:force]
-      File.symlink s, d
-    end
-  end
-  module_function :ln_s
-
-  alias symlink ln_s
-  module_function :symlink
-
-  OPT_TABLE['ln_s']    =
-  OPT_TABLE['symlink'] = [:force, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Same as
-  #   #ln_s(src, dest, :force)
-  # 
-  def ln_sf(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['ln_sf']
-    options = options.dup
-    options[:force] = true
-    ln_s src, dest, options
-  end
-  module_function :ln_sf
-
-  OPT_TABLE['ln_sf'] = [:noop, :verbose]
-
-  #
-  # Options: preserve noop verbose
-  #
-  # Copies a file content +src+ to +dest+.  If +dest+ is a directory,
-  # copies +src+ to +dest/src+.
-  #
-  # If +src+ is a list of files, then +dest+ must be a directory.
-  #
-  #   FileUtils.cp 'eval.c', 'eval.c.org'
-  #   FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
-  #   FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6', :verbose => true
-  #   FileUtils.cp 'symlink', 'dest'   # copy content, "dest" is not a symlink
-  # 
-  def cp(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['cp']
-    fu_output_message "cp#{options[:preserve] ? ' -p' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      copy_file s, d, options[:preserve]
-    end
-  end
-  module_function :cp
-
-  alias copy cp
-  module_function :copy
-
-  OPT_TABLE['cp']   =
-  OPT_TABLE['copy'] = [:preserve, :noop, :verbose]
-
-  #
-  # Options: preserve noop verbose dereference_root remove_destination
-  # 
-  # Copies +src+ to +dest+. If +src+ is a directory, this method copies
-  # all its contents recursively. If +dest+ is a directory, copies
-  # +src+ to +dest/src+.
-  #
-  # +src+ can be a list of files.
-  # 
-  #   # Installing ruby library "mylib" under the site_ruby
-  #   FileUtils.rm_r site_ruby + '/mylib', :force
-  #   FileUtils.cp_r 'lib/', site_ruby + '/mylib'
-  # 
-  #   # Examples of copying several files to target directory.
-  #   FileUtils.cp_r %w(mail.rb field.rb debug/), site_ruby + '/tmail'
-  #   FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop => true, :verbose => true
-  #
-  #   # If you want to copy all contents of a directory instead of the
-  #   # directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
-  #   # use following code.
-  #   FileUtils.cp_r 'src/.', 'dest'     # cp_r('src', 'dest') makes src/dest,
-  #                                      # but this doesn't.
-  # 
-  def cp_r(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['cp_r']
-    fu_output_message "cp -r#{options[:preserve] ? 'p' : ''}#{options[:remove_destination] ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    options[:dereference_root] = true unless options.key?(:dereference_root)
-    fu_each_src_dest(src, dest) do |s, d|
-      copy_entry s, d, options[:preserve], options[:dereference_root], options[:remove_destination]
-    end
-  end
-  module_function :cp_r
-
-  OPT_TABLE['cp_r'] = [:preserve, :noop, :verbose,
-                       :dereference_root, :remove_destination]
-
-  #
-  # Copies a file system entry +src+ to +dest+.
-  # If +src+ is a directory, this method copies its contents recursively.
-  # This method preserves file types, c.f. symlink, directory...
-  # (FIFO, device files and etc. are not supported yet)
-  #
-  # Both of +src+ and +dest+ must be a path name.
-  # +src+ must exist, +dest+ must not exist.
-  #
-  # If +preserve+ is true, this method preserves owner, group, permissions
-  # and modified time.
-  #
-  # If +dereference_root+ is true, this method dereference tree root.
-  #
-  # If +remove_destination+ is true, this method removes each destination file before copy.
-  #
-  def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
-    Entry_.new(src, nil, dereference_root).traverse do |ent|
-      destent = Entry_.new(dest, ent.rel, false)
-      File.unlink destent.path if remove_destination && File.file?(destent.path)
-      ent.copy destent.path
-      ent.copy_metadata destent.path if preserve
-    end
-  end
-  module_function :copy_entry
-
-  #
-  # Copies file contents of +src+ to +dest+.
-  # Both of +src+ and +dest+ must be a path name.
-  #
-  def copy_file(src, dest, preserve = false, dereference = true)
-    ent = Entry_.new(src, nil, dereference)
-    ent.copy_file dest
-    ent.copy_metadata dest if preserve
-  end
-  module_function :copy_file
-
-  #
-  # Copies stream +src+ to +dest+.
-  # +src+ must respond to #read(n) and
-  # +dest+ must respond to #write(str).
-  #
-  def copy_stream(src, dest)
-    fu_copy_stream0 src, dest, fu_stream_blksize(src, dest)
-  end
-  module_function :copy_stream
-
-  #
-  # Options: force noop verbose
-  # 
-  # Moves file(s) +src+ to +dest+.  If +file+ and +dest+ exist on the different
-  # disk partition, the file is copied instead.
-  # 
-  #   FileUtils.mv 'badname.rb', 'goodname.rb'
-  #   FileUtils.mv 'stuff.rb', '/notexist/lib/ruby', :force => true  # no error
-  # 
-  #   FileUtils.mv %w(junk.txt dust.txt), '/home/aamine/.trash/'
-  #   FileUtils.mv Dir.glob('test*.rb'), 'test', :noop => true, :verbose => true
-  # 
-  def mv(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['mv']
-    fu_output_message "mv#{options[:force] ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      destent = Entry_.new(d, nil, true)
-      begin
-        if destent.exist?
-          if destent.directory?
-            raise Errno::EEXIST, dest
-          else
-            destent.remove_file if rename_cannot_overwrite_file?
-          end
-        end
-        begin
-          File.rename s, d
-        rescue Errno::EXDEV
-          copy_entry s, d, true
-          if options[:secure]
-            remove_entry_secure s, options[:force]
-          else
-            remove_entry s, options[:force]
-          end
-        end
-      rescue SystemCallError
-        raise unless options[:force]
-      end
-    end
-  end
-  module_function :mv
-
-  alias move mv
-  module_function :move
-
-  OPT_TABLE['mv']   =
-  OPT_TABLE['move'] = [:force, :noop, :verbose, :secure]
-
-  def rename_cannot_overwrite_file?   #:nodoc:
-    /djgpp|cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
-  end
-  private_module_function :rename_cannot_overwrite_file?
-
-  #
-  # Options: force noop verbose
-  # 
-  # Remove file(s) specified in +list+.  This method cannot remove directories.
-  # All StandardErrors are ignored when the :force option is set.
-  # 
-  #   FileUtils.rm %w( junk.txt dust.txt )
-  #   FileUtils.rm Dir.glob('*.so')
-  #   FileUtils.rm 'NotExistFile', :force => true   # never raises exception
-  # 
-  def rm(list, options = {})
-    fu_check_options options, OPT_TABLE['rm']
-    list = fu_list(list)
-    fu_output_message "rm#{options[:force] ? ' -f' : ''} #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-
-    list.each do |path|
-      remove_file path, options[:force]
-    end
-  end
-  module_function :rm
-
-  alias remove rm
-  module_function :remove
-
-  OPT_TABLE['rm']     =
-  OPT_TABLE['remove'] = [:force, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Equivalent to
-  #
-  #   #rm(list, :force => true)
-  #
-  def rm_f(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_f']
-    options = options.dup
-    options[:force] = true
-    rm list, options
-  end
-  module_function :rm_f
-
-  alias safe_unlink rm_f
-  module_function :safe_unlink
-
-  OPT_TABLE['rm_f']        =
-  OPT_TABLE['safe_unlink'] = [:noop, :verbose]
-
-  #
-  # Options: force noop verbose secure
-  # 
-  # remove files +list+[0] +list+[1]... If +list+[n] is a directory,
-  # removes its all contents recursively. This method ignores
-  # StandardError when :force option is set.
-  # 
-  #   FileUtils.rm_r Dir.glob('/tmp/*')
-  #   FileUtils.rm_r '/', :force => true          #  :-)
-  #
-  # WARNING: This method causes local vulnerability
-  # if one of parent directories or removing directory tree are world
-  # writable (including /tmp, whose permission is 1777), and the current
-  # process has strong privilege such as Unix super user (root), and the
-  # system has symbolic link.  For secure removing, read the documentation
-  # of #remove_entry_secure carefully, and set :secure option to true.
-  # Default is :secure=>false.
-  #
-  # NOTE: This method calls #remove_entry_secure if :secure option is set.
-  # See also #remove_entry_secure.
-  # 
-  def rm_r(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_r']
-    # options[:secure] = true unless options.key?(:secure)
-    list = fu_list(list)
-    fu_output_message "rm -r#{options[:force] ? 'f' : ''} #{list.join ' '}" if options[:verbose]
-    return if options[:noop]
-    list.each do |path|
-      if options[:secure]
-        remove_entry_secure path, options[:force]
-      else
-        remove_entry path, options[:force]
-      end
-    end
-  end
-  module_function :rm_r
-
-  OPT_TABLE['rm_r'] = [:force, :noop, :verbose, :secure]
-
-  #
-  # Options: noop verbose secure
-  # 
-  # Equivalent to
-  #
-  #   #rm_r(list, :force => true)
-  #
-  # WARNING: This method causes local vulnerability.
-  # Read the documentation of #rm_r first.
-  # 
-  def rm_rf(list, options = {})
-    fu_check_options options, OPT_TABLE['rm_rf']
-    options = options.dup
-    options[:force] = true
-    rm_r list, options
-  end
-  module_function :rm_rf
-
-  alias rmtree rm_rf
-  module_function :rmtree
-
-  OPT_TABLE['rm_rf']  =
-  OPT_TABLE['rmtree'] = [:noop, :verbose, :secure]
-
-  #
-  # This method removes a file system entry +path+.  +path+ shall be a
-  # regular file, a directory, or something.  If +path+ is a directory,
-  # remove it recursively.  This method is required to avoid TOCTTOU
-  # (time-of-check-to-time-of-use) local security vulnerability of #rm_r.
-  # #rm_r causes security hole when:
-  #
-  #   * Parent directory is world writable (including /tmp).
-  #   * Removing directory tree includes world writable directory.
-  #   * The system has symbolic link.
-  #
-  # To avoid this security hole, this method applies special preprocess.
-  # If +path+ is a directory, this method chown(2) and chmod(2) all
-  # removing directories.  This requires the current process is the
-  # owner of the removing whole directory tree, or is the super user (root).
-  #
-  # WARNING: You must ensure that *ALL* parent directories are not
-  # world writable.  Otherwise this method does not work.
-  # Only exception is temporary directory like /tmp and /var/tmp,
-  # whose permission is 1777.
-  #
-  # WARNING: Only the owner of the removing directory tree, or Unix super
-  # user (root) should invoke this method.  Otherwise this method does not
-  # work.
-  #
-  # For details of this security vulnerability, see Perl's case:
-  #
-  #   http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0448
-  #   http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0452
-  #
-  # For fileutils.rb, this vulnerability is reported in [ruby-dev:26100].
-  #
-  def remove_entry_secure(path, force = false)
-    unless fu_have_symlink?
-      remove_entry path, force
-      return
-    end
-    fullpath = File.expand_path(path)
-    st = File.lstat(fullpath)
-    unless st.directory?
-      File.unlink fullpath
-      return
-    end
-    # is a directory.
-    parent_st = File.stat(File.dirname(fullpath))
-    unless fu_world_writable?(parent_st)
-      remove_entry path, force
-      return
-    end
-    unless parent_st.sticky?
-      raise ArgumentError, "parent directory is world writable, FileUtils#remove_entry_secure does not work; abort: #{path.inspect} (parent directory mode #{'%o' % parent_st.mode})"
-    end
-    # freeze tree root
-    euid = Process.euid
-    File.open(fullpath + '/.') {|f|
-      unless fu_stat_identical_entry?(st, f.stat)
-        # symlink (TOC-to-TOU attack?)
-        File.unlink fullpath
-        return
-      end
-      f.chown euid, -1
-      f.chmod 0700
-    }
-    # ---- tree root is frozen ----
-    root = Entry_.new(path)
-    root.preorder_traverse do |ent|
-      if ent.directory?
-        ent.chown euid, -1
-        ent.chmod 0700
-      end
-    end
-    root.postorder_traverse do |ent|
-      begin
-        ent.remove
-      rescue
-        raise unless force
-      end
-    end
-  rescue
-    raise unless force
-  end
-  module_function :remove_entry_secure
-
-  def fu_world_writable?(st)
-    (st.mode & 0002) != 0
-  end
-  private_module_function :fu_world_writable?
-
-  def fu_have_symlink?   #:nodoc
-    File.symlink nil, nil
-  rescue NotImplementedError
-    return false
-  rescue
-    return true
-  end
-  private_module_function :fu_have_symlink?
-
-  def fu_stat_identical_entry?(a, b)   #:nodoc:
-    a.dev == b.dev and a.ino == b.ino
-  end
-  private_module_function :fu_stat_identical_entry?
-
-  #
-  # This method removes a file system entry +path+.
-  # +path+ might be a regular file, a directory, or something.
-  # If +path+ is a directory, remove it recursively.
-  #
-  # See also #remove_entry_secure.
-  #
-  def remove_entry(path, force = false)
-    Entry_.new(path).postorder_traverse do |ent|
-      begin
-        ent.remove
-      rescue
-        raise unless force
-      end
-    end
-  rescue
-    raise unless force
-  end
-  module_function :remove_entry
-
-  #
-  # Removes a file +path+.
-  # This method ignores StandardError if +force+ is true.
-  #
-  def remove_file(path, force = false)
-    Entry_.new(path).remove_file
-  rescue
-    raise unless force
-  end
-  module_function :remove_file
-
-  #
-  # Removes a directory +dir+ and its contents recursively.
-  # This method ignores StandardError if +force+ is true.
-  #
-  def remove_dir(path, force = false)
-    remove_entry path, force   # FIXME?? check if it is a directory
-  end
-  module_function :remove_dir
-
-  #
-  # Returns true if the contents of a file A and a file B are identical.
-  # 
-  #   FileUtils.compare_file('somefile', 'somefile')  #=> true
-  #   FileUtils.compare_file('/bin/cp', '/bin/mv')    #=> maybe false
-  #
-  def compare_file(a, b)
-    return false unless File.size(a) == File.size(b)
-    File.open(a, 'rb') {|fa|
-      File.open(b, 'rb') {|fb|
-        return compare_stream(fa, fb)
-      }
-    }
-  end
-  module_function :compare_file
-
-  alias identical? compare_file
-  alias cmp compare_file
-  module_function :identical?
-  module_function :cmp
-
-  #
-  # Returns true if the contents of a stream +a+ and +b+ are identical.
-  #
-  def compare_stream(a, b)
-    bsize = fu_stream_blksize(a, b)
-    sa = sb = nil
-    while sa == sb
-      sa = a.read(bsize)
-      sb = b.read(bsize)
-      unless sa and sb
-        if sa.nil? and sb.nil?
-          return true
-        end
-      end
-    end
-    false
-  end
-  module_function :compare_stream
-
-  #
-  # Options: mode preserve noop verbose
-  # 
-  # If +src+ is not same as +dest+, copies it and changes the permission
-  # mode to +mode+.  If +dest+ is a directory, destination is +dest+/+src+.
-  # This method removes destination before copy.
-  # 
-  #   FileUtils.install 'ruby', '/usr/local/bin/ruby', :mode => 0755, :verbose => true
-  #   FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose => true
-  # 
-  def install(src, dest, options = {})
-    fu_check_options options, OPT_TABLE['install']
-    fu_output_message "install -c#{options[:preserve] && ' -p'}#{options[:mode] ? (' -m 0%o' % options[:mode]) : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
-    return if options[:noop]
-    fu_each_src_dest(src, dest) do |s, d|
-      unless File.exist?(d) and compare_file(s, d)
-        remove_file d, true
-        st = File.stat(s) if options[:preserve]
-        copy_file s, d
-        File.utime st.atime, st.mtime, d if options[:preserve]
-        File.chmod options[:mode], d if options[:mode]
-      end
-    end
-  end
-  module_function :install
-
-  OPT_TABLE['install'] = [:mode, :preserve, :noop, :verbose]
-
-  #
-  # Options: noop verbose
-  # 
-  # Changes permission bits on the named files (in +list+) to the bit pattern
-  # represented by +mode+.
-  # 
-  #   FileUtils.chmod 0755, 'somecommand'
-  #   FileUtils.chmod 0644, %w(my.rb your.rb his.rb her.rb)
-  #   FileUtils.chmod 0755, '/usr/bin/ruby', :verbose => true
-  # 
-  def chmod(mode, list, options = {})
-    fu_check_options options, OPT_TABLE['chmod']
-    list = fu_list(list)
-    fu_output_message sprintf('chmod %o %s', mode, list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    list.each do |path|
-      Entry_.new(path).chmod mode
-    end
-  end
-  module_function :chmod
-
-  OPT_TABLE['chmod'] = [:noop, :verbose]
-
-  #
-  # Options: noop verbose force
-  # 
-  # Changes permission bits on the named files (in +list+)
-  # to the bit pattern represented by +mode+.
-  # 
-  #   FileUtils.chmod_R 0700, "/tmp/app.#{$$}"
-  # 
-  def chmod_R(mode, list, options = {})
-    fu_check_options options, OPT_TABLE['chmod_R']
-    list = fu_list(list)
-    fu_output_message sprintf('chmod -R%s %o %s',
-                              (options[:force] ? 'f' : ''),
-                              mode, list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    list.each do |root|
-      Entry_.new(root).traverse do |ent|
-        begin
-          ent.chmod mode
-        rescue
-          raise unless options[:force]
-        end
-      end
-    end
-  end
-  module_function :chmod_R
-
-  OPT_TABLE['chmod_R'] = [:noop, :verbose, :force]
-
-  #
-  # Options: noop verbose
-  # 
-  # Changes owner and group on the named files (in +list+)
-  # to the user +user+ and the group +group+.  +user+ and +group+
-  # may be an ID (Integer/String) or a name (String).
-  # If +user+ or +group+ is nil, this method does not change
-  # the attribute.
-  # 
-  #   FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby'
-  #   FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), :verbose => true
-  # 
-  def chown(user, group, list, options = {})
-    fu_check_options options, OPT_TABLE['chown']
-    list = fu_list(list)
-    fu_output_message sprintf('chown %s%s',
-                              [user,group].compact.join(':') + ' ',
-                              list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    uid = fu_get_uid(user)
-    gid = fu_get_gid(group)
-    list.each do |path|
-      Entry_.new(path).chown uid, gid
-    end
-  end
-  module_function :chown
-
-  OPT_TABLE['chown'] = [:noop, :verbose]
-
-  #
-  # Options: noop verbose force
-  # 
-  # Changes owner and group on the named files (in +list+)
-  # to the user +user+ and the group +group+ recursively.
-  # +user+ and +group+ may be an ID (Integer/String) or
-  # a name (String).  If +user+ or +group+ is nil, this
-  # method does not change the attribute.
-  # 
-  #   FileUtils.chown_R 'www', 'www', '/var/www/htdocs'
-  #   FileUtils.chown_R 'cvs', 'cvs', '/var/cvs', :verbose => true
-  # 
-  def chown_R(user, group, list, options = {})
-    fu_check_options options, OPT_TABLE['chown_R']
-    list = fu_list(list)
-    fu_output_message sprintf('chown -R%s %s%s',
-                              (options[:force] ? 'f' : ''),
-                              [user,group].compact.join(':') + ' ',
-                              list.join(' ')) if options[:verbose]
-    return if options[:noop]
-    uid = fu_get_uid(user)
-    gid = fu_get_gid(group)
-    return unless uid or gid
-    list.each do |root|
-      Entry_.new(root).traverse do |ent|
-        begin
-          ent.chown uid, gid
-        rescue
-          raise unless options[:force]
-        end
-      end
-    end
-  end
-  module_function :chown_R
-
-  OPT_TABLE['chown_R'] = [:noop, :verbose, :force]
-
-  begin
-    require 'etc'
-
-    def fu_get_uid(user)   #:nodoc:
-      return nil unless user
-      user = user.to_s
-      if /\A\d+\z/ =~ user
-      then user.to_i
-      else Etc.getpwnam(user).uid
-      end
-    end
-    private_module_function :fu_get_uid
-
-    def fu_get_gid(group)   #:nodoc:
-      return nil unless group
-      if /\A\d+\z/ =~ group
-      then group.to_i
-      else Etc.getgrnam(group).gid
-      end
-    end
-    private_module_function :fu_get_gid
-
-  rescue LoadError
-    # need Win32 support???
-
-    def fu_get_uid(user)   #:nodoc:
-      user    # FIXME
-    end
-    private_module_function :fu_get_uid
-
-    def fu_get_gid(group)   #:nodoc:
-      group   # FIXME
-    end
-    private_module_function :fu_get_gid
-  end
-
-  #
-  # Options: noop verbose
-  # 
-  # Updates modification time (mtime) and access time (atime) of file(s) in
-  # +list+.  Files are created if they don't exist.
-  # 
-  #   FileUtils.touch 'timestamp'
-  #   FileUtils.touch Dir.glob('*.c');  system 'make'
-  # 
-  def touch(list, options = {})
-    fu_check_options options, OPT_TABLE['touch']
-    list = fu_list(list)
-    created = nocreate = options[:nocreate]
-    t = options[:mtime]
-    if options[:verbose]
-      fu_output_message "touch #{nocreate ? ' -c' : ''}#{t ? t.strftime(' -t %Y%m%d%H%M.%S') : ''}#{list.join ' '}"
-    end
-    return if options[:noop]
-    list.each do |path|
-      created = nocreate
-      begin
-        File.utime(t, t, path)
-      rescue Errno::ENOENT
-        raise if created
-        File.open(path, 'a') {
-          ;
-        }
-        created = true
-        retry if t
-      end
-    end
-  end
-  module_function :touch
-
-  OPT_TABLE['touch'] = [:noop, :verbose, :mtime, :nocreate]
-
-  private
-
-  module StreamUtils_
-    private
-
-    def fu_windows?
-      /mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
-    end
-
-    def fu_copy_stream0(src, dest, blksize)   #:nodoc:
-      # FIXME: readpartial?
-      while s = src.read(blksize)
-        dest.write s
-      end
-    end
-
-    def fu_stream_blksize(*streams)
-      streams.each do |s|
-        next unless s.respond_to?(:stat)
-        size = fu_blksize(s.stat)
-        return size if size
-      end
-      fu_default_blksize()
-    end
-
-    def fu_blksize(st)
-      s = st.blksize
-      return nil unless s
-      return nil if s == 0
-      s
-    end
-
-    def fu_default_blksize
-      1024
-    end
-  end
-
-  include StreamUtils_
-  extend StreamUtils_
-
-  class Entry_   #:nodoc: internal use only
-    include StreamUtils_
-
-    def initialize(a, b = nil, deref = false)
-      @prefix = @rel = @path = nil
-      if b
-        @prefix = a
-        @rel = b
-      else
-        @path = a
-      end
-      @deref = deref
-      @stat = nil
-      @lstat = nil
-    end
-
-    def inspect
-      "\#<#{self.class} #{path()}>"
-    end
-
-    def path
-      if @path
-        @path.to_str
-      else
-        join(@prefix, @rel)
-      end
-    end
-
-    def prefix
-      @prefix || @path
-    end
-
-    def rel
-      @rel
-    end
-
-    def dereference?
-      @deref
-    end
-
-    def exist?
-      lstat! ? true : false
-    end
-
-    def file?
-      s = lstat!
-      s and s.file?
-    end
-
-    def directory?
-      s = lstat!
-      s and s.directory?
-    end
-
-    def symlink?
-      s = lstat!
-      s and s.symlink?
-    end
-
-    def chardev?
-      s = lstat!
-      s and s.chardev?
-    end
-
-    def blockdev?
-      s = lstat!
-      s and s.blockdev?
-    end
-
-    def socket?
-      s = lstat!
-      s and s.socket?
-    end
-
-    def pipe?
-      s = lstat!
-      s and s.pipe?
-    end
-
-    S_IF_DOOR = 0xD000
-
-    def door?
-      s = lstat!
-      s and (s.mode & 0xF000 == S_IF_DOOR)
-    end
-
-    def entries
-      Dir.entries(path())\
-          .reject {|n| n == '.' or n == '..' }\
-          .map {|n| Entry_.new(prefix(), join(rel(), n.untaint)) }
-    end
-
-    def stat
-      return @stat if @stat
-      if lstat() and lstat().symlink?
-        @stat = File.stat(path())
-      else
-        @stat = lstat()
-      end
-      @stat
-    end
-
-    def stat!
-      return @stat if @stat
-      if lstat! and lstat!.symlink?
-        @stat = File.stat(path())
-      else
-        @stat = lstat!
-      end
-      @stat
-    rescue SystemCallError
-      nil
-    end
-
-    def lstat
-      if dereference?
-        @lstat ||= File.stat(path())
-      else
-        @lstat ||= File.lstat(path())
-      end
-    end
-
-    def lstat!
-      lstat()
-    rescue SystemCallError
-      nil
-    end
-
-    def chmod(mode)
-      if symlink?
-        File.lchmod mode, path() if have_lchmod?
-      else
-        File.chmod mode, path()
-      end
-    end
-
-    def chown(uid, gid)
-      if symlink?
-        File.lchown uid, gid, path() if have_lchown?
-      else
-        File.chown uid, gid, path()
-      end
-    end
-
-    def copy(dest)
-      case
-      when file?
-        copy_file dest
-      when directory?
-        begin
-          Dir.mkdir dest
-        rescue
-          raise unless File.directory?(dest)
-        end
-      when symlink?
-        File.symlink File.readlink(path()), dest
-      when chardev?
-        raise "cannot handle device file" unless File.respond_to?(:mknod)
-        mknod dest, ?c, 0666, lstat().rdev
-      when blockdev?
-        raise "cannot handle device file" unless File.respond_to?(:mknod)
-        mknod dest, ?b, 0666, lstat().rdev
-      when socket?
-        raise "cannot handle socket" unless File.respond_to?(:mknod)
-        mknod dest, nil, lstat().mode, 0
-      when pipe?
-        raise "cannot handle FIFO" unless File.respond_to?(:mkfifo)
-        mkfifo dest, 0666
-      when door?
-        raise "cannot handle door: #{path()}"
-      else
-        raise "unknown file type: #{path()}"
-      end
-    end
-
-    def copy_file(dest)
-      st = stat()
-      File.open(path(),  'rb') {|r|
-        File.open(dest, 'wb', st.mode) {|w|
-          fu_copy_stream0 r, w, (fu_blksize(st) || fu_default_blksize())
-        }
-      }
-    end
-
-    def copy_metadata(path)
-      st = lstat()
-      File.utime st.atime, st.mtime, path
-      begin
-        File.chown st.uid, st.gid, path
-      rescue Errno::EPERM
-        # clear setuid/setgid
-        File.chmod st.mode & 01777, path
-      else
-        File.chmod st.mode, path
-      end
-    end
-
-    def remove
-      if directory?
-        remove_dir1
-      else
-        remove_file
-      end
-    end
-
-    def remove_dir1
-      platform_support {
-        Dir.rmdir path().sub(%r</\z>, '')
-      }
-    end
-
-    def remove_file
-      platform_support {
-        File.unlink path
-      }
-    end
-
-    def platform_support
-      return yield unless fu_windows?
-      first_time_p = true
-      begin
-        yield
-      rescue Errno::ENOENT
-        raise
-      rescue => err
-        if first_time_p
-          first_time_p = false
-          begin
-            File.chmod 0700, path()   # Windows does not have symlink
-            retry
-          rescue SystemCallError
-          end
-        end
-        raise err
-      end
-    end
-
-    def preorder_traverse
-      stack = [self]
-      while ent = stack.pop
-        yield ent
-        stack.concat ent.entries.reverse if ent.directory?
-      end
-    end
-
-    alias traverse preorder_traverse
-
-    def postorder_traverse
-      if directory?
-        entries().each do |ent|
-          ent.postorder_traverse do |e|
-            yield e
-          end
-        end
-      end
-      yield self
-    end
-
-    private
-
-    $fileutils_rb_have_lchmod = nil
-
-    def have_lchmod?
-      # This is not MT-safe, but it does not matter.
-      if $fileutils_rb_have_lchmod == nil
-        $fileutils_rb_have_lchmod = check_have_lchmod?
-      end
-      $fileutils_rb_have_lchmod
-    end
-
-    def check_have_lchmod?
-      return false unless File.respond_to?(:lchmod)
-      File.lchmod 0
-      return true
-    rescue NotImplementedError
-      return false
-    end
-
-    $fileutils_rb_have_lchown = nil
-
-    def have_lchown?
-      # This is not MT-safe, but it does not matter.
-      if $fileutils_rb_have_lchown == nil
-        $fileutils_rb_have_lchown = check_have_lchown?
-      end
-      $fileutils_rb_have_lchown
-    end
-
-    def check_have_lchown?
-      return false unless File.respond_to?(:lchown)
-      File.lchown nil, nil
-      return true
-    rescue NotImplementedError
-      return false
-    end
-
-    def join(dir, base)
-      return dir.to_str if not base or base == '.'
-      return base.to_str if not dir or dir == '.'
-      File.join(dir, base)
-    end
-  end   # class Entry_
-
-  def fu_list(arg)   #:nodoc:
-    [arg].flatten.map {|path| path.to_str }
-  end
-  private_module_function :fu_list
-
-  def fu_each_src_dest(src, dest)   #:nodoc:
-    fu_each_src_dest0(src, dest) do |s, d|
-      raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d)
-      yield s, d
-    end
-  end
-  private_module_function :fu_each_src_dest
-
-  def fu_each_src_dest0(src, dest)   #:nodoc:
-    if src.is_a?(Array)
-      src.each do |s|
-        s = s.to_str
-        yield s, File.join(dest, File.basename(s))
-      end
-    else
-      src = src.to_str
-      if File.directory?(dest)
-        yield src, File.join(dest, File.basename(src))
-      else
-        yield src, dest.to_str
-      end
-    end
-  end
-  private_module_function :fu_each_src_dest0
-
-  def fu_same?(a, b)   #:nodoc:
-    if fu_have_st_ino?
-      st1 = File.stat(a)
-      st2 = File.stat(b)
-      st1.dev == st2.dev and st1.ino == st2.ino
-    else
-      File.expand_path(a) == File.expand_path(b)
-    end
-  rescue Errno::ENOENT
-    return false
-  end
-  private_module_function :fu_same?
-
-  def fu_have_st_ino?   #:nodoc:
-    not fu_windows?
-  end
-  private_module_function :fu_have_st_ino?
-
-  def fu_check_options(options, optdecl)   #:nodoc:
-    h = options.dup
-    optdecl.each do |opt|
-      h.delete opt
-    end
-    raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless h.empty?
-  end
-  private_module_function :fu_check_options
-
-  def fu_update_option(args, new)   #:nodoc:
-    if args.last.is_a?(Hash)
-      args[-1] = args.last.dup.update(new)
-    else
-      args.push new
-    end
-    args
-  end
-  private_module_function :fu_update_option
-
-  @fileutils_output = $stderr
-  @fileutils_label  = ''
-
-  def fu_output_message(msg)   #:nodoc:
-    @fileutils_output ||= $stderr
-    @fileutils_label  ||= ''
-    @fileutils_output.puts @fileutils_label + msg
-  end
-  private_module_function :fu_output_message
-
-  #
-  # Returns an Array of method names which have any options.
-  #
-  #   p FileUtils.commands  #=> ["chmod", "cp", "cp_r", "install", ...]
-  #
-  def FileUtils.commands
-    OPT_TABLE.keys
-  end
-
-  #
-  # Returns an Array of option names.
-  #
-  #   p FileUtils.options  #=> ["noop", "force", "verbose", "preserve", "mode"]
-  #
-  def FileUtils.options
-    OPT_TABLE.values.flatten.uniq.map {|sym| sym.to_s }
-  end
-
-  #
-  # Returns true if the method +mid+ have an option +opt+.
-  #
-  #   p FileUtils.have_option?(:cp, :noop)     #=> true
-  #   p FileUtils.have_option?(:rm, :force)    #=> true
-  #   p FileUtils.have_option?(:rm, :perserve) #=> false
-  #
-  def FileUtils.have_option?(mid, opt)
-    li = OPT_TABLE[mid.to_s] or raise ArgumentError, "no such method: #{mid}"
-    li.include?(opt)
-  end
-
-  #
-  # Returns an Array of option names of the method +mid+.
-  #
-  #   p FileUtils.options(:rm)  #=> ["noop", "verbose", "force"]
-  #
-  def FileUtils.options_of(mid)
-    OPT_TABLE[mid.to_s].map {|sym| sym.to_s }
-  end
-
-  #
-  # Returns an Array of method names which have the option +opt+.
-  #
-  #   p FileUtils.collect_method(:preserve) #=> ["cp", "cp_r", "copy", "install"]
-  #
-  def FileUtils.collect_method(opt)
-    OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) }
-  end
-
-  METHODS = singleton_methods() - %w( private_module_function
-      commands options have_option? options_of collect_method )
-
-  # 
-  # This module has all methods of FileUtils module, but it outputs messages
-  # before acting.  This equates to passing the <tt>:verbose</tt> flag to
-  # methods in FileUtils.
-  # 
-  module Verbose
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:verbose).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :verbose => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-  # 
-  # This module has all methods of FileUtils module, but never changes
-  # files/directories.  This equates to passing the <tt>:noop</tt> flag
-  # to methods in FileUtils.
-  # 
-  module NoWrite
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:noop).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :noop => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-  # 
-  # This module has all methods of FileUtils module, but never changes
-  # files/directories, with printing message before acting.
-  # This equates to passing the <tt>:noop</tt> and <tt>:verbose</tt> flag
-  # to methods in FileUtils.
-  # 
-  module DryRun
-    include FileUtils
-    @fileutils_output  = $stderr
-    @fileutils_label   = ''
-    ::FileUtils.collect_method(:noop).each do |name|
-      module_eval(<<-EOS, __FILE__, __LINE__ + 1)
-        def #{name}(*args)
-          super(*fu_update_option(args, :noop => true, :verbose => true))
-        end
-        private :#{name}
-      EOS
-    end
-    extend self
-    class << self
-      ::FileUtils::METHODS.each do |m|
-        public m
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/finalize.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/finalize.rb
deleted file mode 100644
index 9b6b302..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/finalize.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-#--
-#   finalizer.rb - 
-#   	$Release Version: 0.3$
-#   	$Revision: 1.4 $
-#   	$Date: 1998/02/27 05:34:33 $
-#   	by Keiju ISHITSUKA
-#++
-#
-# Usage:
-#
-# add dependency R_method(obj, dependant)
-#   add(obj, dependant, method = :finalize, *opt)
-#   add_dependency(obj, dependant, method = :finalize, *opt)
-#
-# delete dependency R_method(obj, dependant)
-#   delete(obj_or_id, dependant, method = :finalize)
-#   delete_dependency(obj_or_id, dependant, method = :finalize)
-#
-# delete dependency R_*(obj, dependant)
-#   delete_all_dependency(obj_or_id, dependant)
-#
-# delete dependency R_method(*, dependant)
-#   delete_by_dependant(dependant, method = :finalize)
-#
-# delete dependency R_*(*, dependant)
-#   delete_all_by_dependant(dependant)
-#
-# delete all dependency R_*(*, *)
-#   delete_all
-#
-# finalize the dependant connected by dependency R_method(obj, dependtant).
-#   finalize(obj_or_id, dependant, method = :finalize)
-#   finalize_dependency(obj_or_id, dependant, method = :finalize)
-#
-# finalize all dependants connected by dependency R_*(obj, dependtant).
-#   finalize_all_dependency(obj_or_id, dependant)
-#
-# finalize the dependant connected by dependency R_method(*, dependtant).
-#   finalize_by_dependant(dependant, method = :finalize)
-#
-# finalize all dependants connected by dependency R_*(*, dependant).
-#   finalize_all_by_dependant(dependant)
-#
-# finalize all dependency registered to the Finalizer.
-#   finalize_all
-#
-# stop invoking Finalizer on GC.
-#   safe{..}
-#
-
-module Finalizer
-  RCS_ID='-$Id: finalize.rb,v 1.4 1998/02/27 05:34:33 keiju Exp keiju $-'
-
-  class <<self
-    # @dependency: {id => [[dependant, method, *opt], ...], ...}
-
-    # add dependency R_method(obj, dependant)
-    def add_dependency(obj, dependant, method = :finalize, *opt)
-      ObjectSpace.call_finalizer(obj)
-      method = method.intern unless method.kind_of?(Integer)
-      assoc = [dependant, method].concat(opt)
-      if dep = @dependency[obj.object_id]
-	dep.push assoc
-      else
-	@dependency[obj.object_id] = [assoc]
-      end
-    end
-    alias add add_dependency
-
-    # delete dependency R_method(obj, dependant)
-    def delete_dependency(id, dependant, method = :finalize)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d == dependant && m == method
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-    alias delete delete_dependency
-
-    # delete dependency R_*(obj, dependant)
-    def delete_all_dependency(id, dependant)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d == dependant
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-
-    # delete dependency R_method(*, dependant)
-    def delete_by_dependant(dependant, method = :finalize)
-      method = method.intern unless method.kind_of?(Integer)
-      for id in @dependency.keys
-	delete(id, dependant, method)
-      end
-    end
-
-    # delete dependency R_*(*, dependant)
-    def delete_all_by_dependant(dependant)
-      for id in @dependency.keys
-	delete_all_dependency(id, dependant)
-      end
-    end
-
-    # finalize the depandant connected by dependency R_method(obj, dependtant)
-    def finalize_dependency(id, dependant, method = :finalize)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assocs in @dependency[id]
-	assocs.delete_if do
-	  |d, m, *o|
-	  d.send(m, id, *o) if ret = d == dependant && m == method
-	  ret
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-    alias finalize finalize_dependency
-
-    # finalize all dependants connected by dependency R_*(obj, dependtant)
-    def finalize_all_dependency(id, dependant)
-      id = id.object_id unless id.kind_of?(Integer)
-      method = method.intern unless method.kind_of?(Integer)
-      for assoc in @dependency[id]
-	assoc.delete_if do
-	  |d, m, *o|
-	  d.send(m, id, *o) if ret = d == dependant
-	end
-	@dependency.delete(id) if assoc.empty?
-      end
-    end
-
-    # finalize the dependant connected by dependency R_method(*, dependtant)
-    def finalize_by_dependant(dependant, method = :finalize)
-      method = method.intern unless method.kind_of?(Integer)
-      for id in @dependency.keys
-	finalize(id, dependant, method)
-      end
-    end
-
-    # finalize all dependants connected by dependency R_*(*, dependtant)
-    def finalize_all_by_dependant(dependant)
-      for id in @dependency.keys
-	finalize_all_dependency(id, dependant)
-      end
-    end
-
-    # finalize all dependants registered to the Finalizer.
-    def finalize_all
-      for id, assocs in @dependency
-	for dependant, method, *opt in assocs
-	  dependant.send(method, id, *opt)
-	end
-	assocs.clear
-      end
-    end
-
-    # method to call finalize_* safely.
-    def safe
-      old_status = Thread.critical
-      Thread.critical = true
-      ObjectSpace.remove_finalizer(@proc)
-      begin
-	yield
-      ensure
-	ObjectSpace.add_finalizer(@proc)
-	Thread.critical = old_status
-      end
-    end
-
-    private
-
-    # registering function to ObjectSpace#add_finalizer
-    def final_of(id)
-      if assocs = @dependency.delete(id)
-	for dependant, method, *opt in assocs
-	  dependant.send(method, id, *opt)
-	end
-      end
-    end
-
-  end
-  @dependency = Hash.new
-  @proc = proc{|id| final_of(id)}
-  ObjectSpace.add_finalizer(@proc)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/find.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/find.rb
deleted file mode 100644
index 0d22dd6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/find.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# find.rb: the Find module for processing all files under a given directory.
-#
-
-#
-# The +Find+ module supports the top-down traversal of a set of file paths.
-#
-# For example, to total the size of all files under your home directory,
-# ignoring anything in a "dot" directory (e.g. $HOME/.ssh):
-#
-#   require 'find'
-#
-#   total_size = 0
-#
-#   Find.find(ENV["HOME"]) do |path|
-#     if FileTest.directory?(path)
-#       if File.basename(path)[0] == ?.
-#         Find.prune       # Don't look any further into this directory.
-#       else
-#         next
-#       end
-#     else
-#       total_size += FileTest.size(path)
-#     end
-#   end
-#
-module Find
-
-  #
-  # Calls the associated block with the name of every file and directory listed
-  # as arguments, then recursively on their subdirectories, and so on.
-  #
-  # See the +Find+ module documentation for an example.
-  #
-  def find(*paths) # :yield: path
-    paths.collect!{|d| d.dup}
-    while file = paths.shift
-      catch(:prune) do
-	yield file.dup.taint
-        next unless File.exist? file
-	begin
-	  if File.lstat(file).directory? then
-	    d = Dir.open(file)
-	    begin
-	      for f in d
-		next if f == "." or f == ".."
-		if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then
-		  f = file + f
-		elsif file == "/" then
-		  f = "/" + f
-		else
-		  f = File.join(file, f)
-		end
-		paths.unshift f.untaint
-	      end
-	    ensure
-	      d.close
-	    end
-	  end
-        rescue Errno::ENOENT, Errno::EACCES
-	end
-      end
-    end
-  end
-
-  #
-  # Skips the current file or directory, restarting the loop with the next
-  # entry. If the current file is a directory, that directory will not be
-  # recursively entered. Meaningful only within the block associated with
-  # Find::find.
-  #
-  # See the +Find+ module documentation for an example.
-  #
-  def prune
-    throw :prune
-  end
-
-  module_function :find, :prune
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/forwardable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/forwardable.rb
deleted file mode 100644
index e2a2727..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/forwardable.rb
+++ /dev/null
@@ -1,218 +0,0 @@
-# = forwardable - Support for the Delegation Pattern
-#
-#    $Release Version: 1.1$
-#    $Revision: 11708 $
-#    $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#    by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-#    Documentation by James Edward Gray II and Gavin Sinclair
-#
-# == Introduction
-#
-# This library allows you delegate method calls to an object, on a method by
-# method basis.  You can use Forwardable to setup this delegation at the class
-# level, or SingleForwardable to handle it at the object level.
-#
-# == Notes
-#
-# Be advised, RDoc will not detect delegated methods.
-#
-# <b>forwardable.rb provides single-method delegation via the
-# def_delegator() and def_delegators() methods.  For full-class
-# delegation via DelegateClass(), see delegate.rb.</b>
-#
-# == Examples
-#
-# === Forwardable
-#
-# Forwardable makes building a new class based on existing work, with a proper
-# interface, almost trivial.  We want to rely on what has come before obviously,
-# but with delegation we can take just the methods we need and even rename them
-# as appropriate.  In many cases this is preferable to inheritance, which gives
-# us the entire old interface, even if much of it isn't needed.
-#
-#   class Queue
-#     extend Forwardable
-#     
-#     def initialize
-#       @q = [ ]    # prepare delegate object
-#     end
-#     
-#     # setup prefered interface, enq() and deq()...
-#     def_delegator :@q, :push, :enq
-#     def_delegator :@q, :shift, :deq
-#     
-#     # support some general Array methods that fit Queues well
-#     def_delegators :@q, :clear, :first, :push, :shift, :size
-#   end
-# 
-#   q = Queue.new
-#   q.enq 1, 2, 3, 4, 5
-#   q.push 6
-# 
-#   q.shift    # => 1
-#   while q.size > 0
-#     puts q.deq
-#   end
-# 
-#   q.enq "Ruby", "Perl", "Python"
-#   puts q.first
-#   q.clear
-#   puts q.first
-#
-# <i>Prints:</i>
-#
-#   2
-#   3
-#   4
-#   5
-#   6
-#   Ruby
-#   nil
-#
-# === SingleForwardable
-#
-#    printer = String.new
-#    printer.extend SingleForwardable        # prepare object for delegation
-#    printer.def_delegator "STDOUT", "puts"  # add delegation for STDOUT.puts()
-#    printer.puts "Howdy!"
-#
-# <i>Prints:</i>
-#
-#    Howdy!
-
-#
-# The Forwardable module provides delegation of specified
-# methods to a designated object, using the methods #def_delegator
-# and #def_delegators.
-#
-# For example, say you have a class RecordCollection which
-# contains an array <tt>@records</tt>.  You could provide the lookup method
-# #record_number(), which simply calls #[] on the <tt>@records</tt>
-# array, like this:
-#
-#   class RecordCollection
-#     extend Forwardable
-#     def_delegator :@records, :[], :record_number
-#   end
-#
-# Further, if you wish to provide the methods #size, #<<, and #map,
-# all of which delegate to @records, this is how you can do it:
-#
-#   class RecordCollection
-#     # extend Forwardable, but we did that above
-#     def_delegators :@records, :size, :<<, :map
-#   end
-#
-# Also see the example at forwardable.rb.
-#
-module Forwardable
-
-  @debug = nil
-  class<<self
-    # force Forwardable to show up in stack backtraces of delegated methods
-    attr_accessor :debug
-  end
-
-  #
-  # Shortcut for defining multiple delegator methods, but with no
-  # provision for using a different name.  The following two code
-  # samples have the same effect:
-  #
-  #   def_delegators :@records, :size, :<<, :map
-  #
-  #   def_delegator :@records, :size
-  #   def_delegator :@records, :<<
-  #   def_delegator :@records, :map
-  #
-  # See the examples at Forwardable and forwardable.rb.
-  #
-  def def_instance_delegators(accessor, *methods)
-    for method in methods
-      def_instance_delegator(accessor, method)
-    end
-  end
-
-  #
-  # Defines a method _method_ which delegates to _obj_ (i.e. it calls
-  # the method of the same name in _obj_).  If _new_name_ is
-  # provided, it is used as the name for the delegate method.
-  #
-  # See the examples at Forwardable and forwardable.rb.
-  #
-  def def_instance_delegator(accessor, method, ali = method)
-    accessor = accessor.id2name if accessor.kind_of?(Integer)
-    method = method.id2name if method.kind_of?(Integer)
-    ali = ali.id2name if ali.kind_of?(Integer)
-
-    module_eval(<<-EOS, "(__FORWARDABLE__)", 1)
-      def #{ali}(*args, &block)
-	begin
-	  #{accessor}.__send__(:#{method}, *args, &block)
-	rescue Exception
-	  $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
-	  Kernel::raise
-	end
-      end
-    EOS
-  end
-
-  alias def_delegators def_instance_delegators
-  alias def_delegator def_instance_delegator
-end
-
-#
-# The SingleForwardable module provides delegation of specified
-# methods to a designated object, using the methods #def_delegator
-# and #def_delegators.  This module is similar to Forwardable, but it works on
-# objects themselves, instead of their defining classes.
-#
-# Also see the example at forwardable.rb.
-#
-module SingleForwardable
-  #
-  # Shortcut for defining multiple delegator methods, but with no
-  # provision for using a different name.  The following two code
-  # samples have the same effect:
-  #
-  #   single_forwardable.def_delegators :@records, :size, :<<, :map
-  #
-  #   single_forwardable.def_delegator :@records, :size
-  #   single_forwardable.def_delegator :@records, :<<
-  #   single_forwardable.def_delegator :@records, :map
-  #
-  # See the example at forwardable.rb.
-  #
-  def def_singleton_delegators(accessor, *methods)
-    for method in methods
-      def_singleton_delegator(accessor, method)
-    end
-  end
-
-  #
-  # Defines a method _method_ which delegates to _obj_ (i.e. it calls
-  # the method of the same name in _obj_).  If _new_name_ is
-  # provided, it is used as the name for the delegate method.
-  #
-  # See the example at forwardable.rb.
-  #
-  def def_singleton_delegator(accessor, method, ali = method)
-    accessor = accessor.id2name if accessor.kind_of?(Integer)
-    method = method.id2name if method.kind_of?(Integer)
-    ali = ali.id2name if ali.kind_of?(Integer)
-
-    instance_eval(<<-EOS, "(__FORWARDABLE__)", 1)
-       def #{ali}(*args, &block)
-	 begin
-	   #{accessor}.__send__(:#{method}, *args,&block)
-	 rescue Exception
-	   $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
-	   Kernel::raise
-	 end
-       end
-    EOS
-  end
-
-  alias def_delegators def_singleton_delegators
-  alias def_delegator def_singleton_delegator
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ftools.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ftools.rb
deleted file mode 100644
index 5f08233..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ftools.rb
+++ /dev/null
@@ -1,261 +0,0 @@
-# 
-# = ftools.rb: Extra tools for the File class
-#
-# Author:: WATANABE, Hirofumi
-# Documentation:: Zachary Landau
-#
-# This library can be distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# It is included in the Ruby standard library.
-#
-# == Description
-#
-# ftools adds several (class, not instance) methods to the File class, for
-# copying, moving, deleting, installing, and comparing files, as well as
-# creating a directory path.  See the File class for details.
-#
-# FileUtils contains all or nearly all the same functionality and more, and
-# is a recommended option over ftools 
-#
-# When you
-#
-#   require 'ftools'
-#
-# then the File class aquires some utility methods for copying, moving, and
-# deleting files, and more.
-#
-# See the method descriptions below, and consider using FileUtils as it is
-# more comprehensive.
-#
-class File
-end
-
-class << File
-
-  BUFSIZE = 8 * 1024
-
-  #
-  # If +to+ is a valid directory, +from+ will be appended to +to+, adding
-  # and escaping backslashes as necessary. Otherwise, +to+ will be returned.
-  # Useful for appending +from+ to +to+ only if the filename was not specified
-  # in +to+. 
-  #
-  def catname(from, to)
-    if directory? to
-      join to.sub(%r([/\\]$), ''), basename(from)
-    else
-      to
-    end
-  end
-
-  #
-  # Copies a file +from+ to +to+. If +to+ is a directory, copies +from+
-  # to <tt>to/from</tt>.
-  #
-  def syscopy(from, to)
-    to = catname(from, to)
-
-    fmode = stat(from).mode
-    tpath = to
-    not_exist = !exist?(tpath)
-
-    from = open(from, "rb")
-    to = open(to, "wb")
-
-    begin
-      while true
-	to.syswrite from.sysread(BUFSIZE)
-      end
-    rescue EOFError
-      ret = true
-    rescue
-      ret = false
-    ensure
-      to.close
-      from.close
-    end
-    chmod(fmode, tpath) if not_exist
-    ret
-  end
-
-  #
-  # Copies a file +from+ to +to+ using #syscopy. If +to+ is a directory,
-  # copies +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from -> to</tt>
-  # is printed.
-  #
-  def copy(from, to, verbose = false)
-    $stderr.print from, " -> ", catname(from, to), "\n" if verbose
-    syscopy from, to
-  end
-
-  alias cp copy
-
-  #
-  # Moves a file +from+ to +to+ using #syscopy. If +to+ is a directory,
-  # copies from +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from ->
-  # to</tt> is printed.
-  #
-  def move(from, to, verbose = false)
-    to = catname(from, to)
-    $stderr.print from, " -> ", to, "\n" if verbose
-
-    if RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/ and file? to
-      unlink to
-    end
-    fstat = stat(from)
-    begin
-      rename from, to
-    rescue
-      begin
-        symlink readlink(from), to and unlink from
-      rescue
-	from_stat = stat(from)
-	syscopy from, to and unlink from
-	utime(from_stat.atime, from_stat.mtime, to)
-	begin
-	  chown(fstat.uid, fstat.gid, to)
-	rescue
-	end
-      end
-    end
-  end
-
-  alias mv move
-
-  #
-  # Returns +true+ if and only if the contents of files +from+ and +to+ are
-  # identical. If +verbose+ is +true+, <tt>from <=> to</tt> is printed.
-  #
-  def compare(from, to, verbose = false)
-    $stderr.print from, " <=> ", to, "\n" if verbose
-
-    return false if stat(from).size != stat(to).size
-
-    from = open(from, "rb")
-    to = open(to, "rb")
-
-    ret = false
-    fr = tr = ''
-
-    begin
-      while fr == tr
-	fr = from.read(BUFSIZE)
-	if fr
-	  tr = to.read(fr.size)
-	else
-	  ret = to.read(BUFSIZE)
-	  ret = !ret || ret.length == 0
-	  break
-	end
-      end
-    rescue
-      ret = false
-    ensure
-      to.close
-      from.close
-    end
-    ret
-  end
-
-  alias cmp compare
-
-  #
-  # Removes a list of files. Each parameter should be the name of the file to
-  # delete. If the last parameter isn't a String, verbose mode will be enabled.
-  # Returns the number of files deleted.
-  #
-  def safe_unlink(*files)
-    verbose = if files[-1].is_a? String then false else files.pop end
-    files.each do |file|
-      begin
-        unlink file
-        $stderr.print "removing ", file, "\n" if verbose
-      rescue Errno::EACCES # for Windows
-        continue if symlink? file
-        begin
-          mode = stat(file).mode
-          o_chmod mode | 0200, file
-          unlink file
-          $stderr.print "removing ", file, "\n" if verbose
-        rescue
-          o_chmod mode, file rescue nil
-        end
-      rescue
-      end
-    end
-  end
-
-  alias rm_f safe_unlink
-
-  #
-  # Creates a directory and all its parent directories.
-  # For example,
-  #
-  #	File.makedirs '/usr/lib/ruby'
-  #
-  # causes the following directories to be made, if they do not exist.
-  #	* /usr
-  #	* /usr/lib
-  #	* /usr/lib/ruby
-  #
-  # You can pass several directories, each as a parameter. If the last
-  # parameter isn't a String, verbose mode will be enabled.
-  #
-  def makedirs(*dirs)
-    verbose = if dirs[-1].is_a? String then false else dirs.pop end
-    mode = 0755
-    for dir in dirs
-      parent = dirname(dir)
-      next if parent == dir or directory? dir
-      makedirs parent unless directory? parent
-      $stderr.print "mkdir ", dir, "\n" if verbose
-      if basename(dir) != ""
-        begin
-          Dir.mkdir dir, mode
-        rescue SystemCallError
-          raise unless directory? dir
-        end
-      end
-    end
-  end
-
-  alias mkpath makedirs
-
-  alias o_chmod chmod
-
-  vsave, $VERBOSE = $VERBOSE, false
-
-  #
-  # Changes permission bits on +files+ to the bit pattern represented
-  # by +mode+. If the last parameter isn't a String, verbose mode will
-  # be enabled.
-  #
-  #   File.chmod 0755, 'somecommand'
-  #   File.chmod 0644, 'my.rb', 'your.rb', true
-  #
-  def chmod(mode, *files)
-    verbose = if files[-1].is_a? String then false else files.pop end
-    $stderr.printf "chmod %04o %s\n", mode, files.join(" ") if verbose
-    o_chmod mode, *files
-  end
-  $VERBOSE = vsave
-
-  #
-  # If +src+ is not the same as +dest+, copies it and changes the permission
-  # mode to +mode+. If +dest+ is a directory, destination is <tt>dest/src</tt>.
-  # If +mode+ is not set, default is used. If +verbose+ is set to true, the
-  # name of each file copied will be printed.
-  #
-  def install(from, to, mode = nil, verbose = false)
-    to = catname(from, to)
-    unless exist? to and cmp from, to
-      safe_unlink to if exist? to
-      cp from, to, verbose
-      chmod mode, to, verbose if mode
-    end
-  end
-
-end
-
-# vi:set sw=2:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/generator.rb
deleted file mode 100644
index fcc2c64..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/generator.rb
+++ /dev/null
@@ -1,380 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# $Idaemons: /home/cvs/rb/generator.rb,v 1.8 2001/10/03 08:54:32 knu Exp $
-# $RoughId: generator.rb,v 1.10 2003/10/14 19:36:58 knu Exp $
-# $Id: generator.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#++
-#
-# = generator.rb: convert an internal iterator to an external one
-#
-# Copyright (c) 2001,2003 Akinori MUSHA <knu at iDaemons.org>
-#
-# All rights reserved.  You can redistribute and/or modify it under
-# the same terms as Ruby.
-#
-# == Overview
-#
-# This library provides the Generator class, which converts an
-# internal iterator (i.e. an Enumerable object) to an external
-# iterator.  In that form, you can roll many iterators independently.
-#
-# The SyncEnumerator class, which is implemented using Generator,
-# makes it easy to roll many Enumerable objects synchronously.
-#
-# See the respective classes for examples of usage.
-
-
-#
-# Generator converts an internal iterator (i.e. an Enumerable object)
-# to an external iterator.
-#
-# Note that it is not very fast since it is implemented using
-# continuations, which are currently slow.
-#
-# == Example
-#
-#   require 'generator'
-#
-#   # Generator from an Enumerable object
-#   g = Generator.new(['A', 'B', 'C', 'Z'])
-#
-#   while g.next?
-#     puts g.next
-#   end
-#
-#   # Generator from a block
-#   g = Generator.new { |g|
-#     for i in 'A'..'C'
-#       g.yield i
-#     end
-#
-#     g.yield 'Z'
-#   }
-#
-#   # The same result as above
-#   while g.next?
-#     puts g.next
-#   end
-#   
-class Generator
-  include Enumerable
-
-  # Creates a new generator either from an Enumerable object or from a
-  # block.
-  #
-  # In the former, block is ignored even if given.
-  #
-  # In the latter, the given block is called with the generator
-  # itself, and expected to call the +yield+ method for each element.
-  def initialize(enum = nil, &block)
-    if enum
-      @block = proc { |g|
-	enum.each { |x| g.yield x }
-      }
-    else
-      @block = block
-    end
-
-    @index = 0
-    @queue = []
-    @cont_next = @cont_yield = @cont_endp = nil
-
-    if @cont_next = callcc { |c| c }
-      @block.call(self)
-
-      @cont_endp.call(nil) if @cont_endp
-    end
-
-    self
-  end
-
-  # Yields an element to the generator.
-  def yield(value)
-    if @cont_yield = callcc { |c| c }
-      @queue << value
-      @cont_next.call(nil)
-    end
-
-    self
-  end
-
-  # Returns true if the generator has reached the end.
-  def end?()
-    if @cont_endp = callcc { |c| c }
-      @cont_yield.nil? && @queue.empty?
-    else
-      @queue.empty?
-    end
-  end
-
-  # Returns true if the generator has not reached the end yet.
-  def next?()
-    !end?
-  end
-
-  # Returns the current index (position) counting from zero.
-  def index()
-    @index
-  end
-
-  # Returns the current index (position) counting from zero.
-  def pos()
-    @index
-  end
-
-  # Returns the element at the current position and moves forward.
-  def next()
-    if end?
-      raise EOFError, "no more elements available"
-    end
-
-    if @cont_next = callcc { |c| c }
-      @cont_yield.call(nil) if @cont_yield
-    end
-
-    @index += 1
-
-    @queue.shift
-  end
-
-  # Returns the element at the current position.
-  def current()
-    if @queue.empty?
-      raise EOFError, "no more elements available"
-    end
-
-    @queue.first
-  end
-
-  # Rewinds the generator.
-  def rewind()
-    initialize(nil, &@block) if @index.nonzero?
-
-    self
-  end
-
-  # Rewinds the generator and enumerates the elements.
-  def each
-    rewind
-
-    until end?
-      yield self.next
-    end
-
-    self
-  end
-end
-
-#
-# SyncEnumerator creates an Enumerable object from multiple Enumerable
-# objects and enumerates them synchronously.
-#
-# == Example
-#
-#   require 'generator'
-#
-#   s = SyncEnumerator.new([1,2,3], ['a', 'b', 'c'])
-#
-#   # Yields [1, 'a'], [2, 'b'], and [3,'c']
-#   s.each { |row| puts row.join(', ') }
-#
-class SyncEnumerator
-  include Enumerable
-
-  # Creates a new SyncEnumerator which enumerates rows of given
-  # Enumerable objects.
-  def initialize(*enums)
-    @gens = enums.map { |e| Generator.new(e) }
-  end
-
-  # Returns the number of enumerated Enumerable objects, i.e. the size
-  # of each row.
-  def size
-    @gens.size
-  end
-
-  # Returns the number of enumerated Enumerable objects, i.e. the size
-  # of each row.
-  def length
-    @gens.length
-  end
-
-  # Returns true if the given nth Enumerable object has reached the
-  # end.  If no argument is given, returns true if any of the
-  # Enumerable objects has reached the end.
-  def end?(i = nil)
-    if i.nil?
-      @gens.detect { |g| g.end? } ? true : false
-    else
-      @gens[i].end?
-    end
-  end
-
-  # Enumerates rows of the Enumerable objects.
-  def each
-    @gens.each { |g| g.rewind }
-
-    loop do
-      count = 0
-
-      ret = @gens.map { |g|
-	if g.end?
-	  count += 1
-	  nil
-	else
-	  g.next
-	end
-      }
-
-      if count == @gens.size
-	break
-      end
-
-      yield ret
-    end
-
-    self
-  end
-end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-
-class TC_Generator < Test::Unit::TestCase
-  def test_block1
-    g = Generator.new { |g|
-      # no yield's
-    }
-
-    assert_equal(0, g.pos)
-    assert_raises(EOFError) { g.current }
-  end
-
-  def test_block2
-    g = Generator.new { |g|
-      for i in 'A'..'C'
-        g.yield i
-      end
-
-      g.yield 'Z'
-    }
-
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-
-    assert_equal(true, g.next?)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.next)
-
-    assert_equal(1, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.current)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.next)
-
-    assert_equal(g, g.rewind)
-
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-
-    assert_equal(true, g.next?)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.current)
-    assert_equal(0, g.pos)
-    assert_equal('A', g.next)
-
-    assert_equal(1, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.current)
-    assert_equal(1, g.pos)
-    assert_equal('B', g.next)
-
-    assert_equal(2, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(2, g.pos)
-    assert_equal('C', g.current)
-    assert_equal(2, g.pos)
-    assert_equal('C', g.next)
-
-    assert_equal(3, g.pos)
-    assert_equal(true, g.next?)
-    assert_equal(3, g.pos)
-    assert_equal('Z', g.current)
-    assert_equal(3, g.pos)
-    assert_equal('Z', g.next)
-
-    assert_equal(4, g.pos)
-    assert_equal(false, g.next?)
-    assert_raises(EOFError) { g.next }
-  end
-
-  def test_each
-    a = [5, 6, 7, 8, 9]
-
-    g = Generator.new(a)
-
-    i = 0
-
-    g.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-
-      break if i == 3
-    }
-
-    assert_equal(3, i)
-
-    i = 0
-
-    g.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-    }
-
-    assert_equal(5, i)
-  end
-end
-
-class TC_SyncEnumerator < Test::Unit::TestCase
-  def test_each
-    r = ['a'..'f', 1..10, 10..20]
-    ra = r.map { |x| x.to_a }
-
-    a = (0...(ra.map {|x| x.size}.max)).map { |i| ra.map { |x| x[i] } }
-
-    s = SyncEnumerator.new(*r)
-
-    i = 0
-
-    s.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-
-      break if i == 3
-    }
-
-    assert_equal(3, i)
-
-    i = 0
-
-    s.each { |x|
-      assert_equal(a[i], x)
-
-      i += 1
-    }
-
-    assert_equal(a.size, i)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getoptlong.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getoptlong.rb
deleted file mode 100644
index 4d00441..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getoptlong.rb
+++ /dev/null
@@ -1,621 +0,0 @@
-#
-# GetoptLong for Ruby
-#
-# Copyright (C) 1998, 1999, 2000  Motoyuki Kasahara.
-#
-# You may redistribute and/or modify this library under the same license
-# terms as Ruby.
-#
-# See GetoptLong for documentation.
-#
-# Additional documents and the latest version of `getoptlong.rb' can be
-# found at http://www.sra.co.jp/people/m-kasahr/ruby/getoptlong/
-
-# The GetoptLong class allows you to parse command line options similarly to
-# the GNU getopt_long() C library call. Note, however, that GetoptLong is a 
-# pure Ruby implementation.
-#
-# GetoptLong allows for POSIX-style options like <tt>--file</tt> as well 
-# as single letter options like <tt>-f</tt>
-#
-# The empty option <tt>--</tt> (two minus symbols) is used to end option
-# processing. This can be particularly important if options have optional
-# arguments.
-#
-# Here is a simple example of usage:
-#
-#     # == Synopsis
-#     #
-#     # hello: greets user, demonstrates command line parsing
-#     #
-#     # == Usage
-#     #
-#     # hello [OPTION] ... DIR
-#     #
-#     # -h, --help:
-#     #    show help
-#     #
-#     # --repeat x, -n x:
-#     #    repeat x times
-#     #
-#     # --name [name]:
-#     #    greet user by name, if name not supplied default is John
-#     #
-#     # DIR: The directory in which to issue the greeting.
-#     
-#     require 'getoptlong'
-#     require 'rdoc/usage'
-#     
-#     opts = GetoptLong.new(
-#       [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
-#       [ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
-#       [ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
-#     )
-#     
-#     dir = nil
-#     name = nil
-#     repetitions = 1
-#     opts.each do |opt, arg|
-#       case opt
-#         when '--help'
-#           RDoc::usage
-#         when '--repeat'
-#           repetitions = arg.to_i
-#         when '--name'
-#           if arg == ''
-#             name = 'John'
-#           else
-#             name = arg
-#           end
-#       end
-#     end
-#     
-#     if ARGV.length != 1
-#       puts "Missing dir argument (try --help)"
-#       exit 0
-#     end
-#     
-#     dir = ARGV.shift
-#     
-#     Dir.chdir(dir)
-#     for i in (1..repetitions)
-#       print "Hello"
-#       if name
-#         print ", #{name}"
-#       end
-#       puts
-#     end
-#
-# Example command line:
-#
-#     hello -n 6 --name -- /tmp
-#
-class GetoptLong
-  #
-  # Orderings.
-  #
-  ORDERINGS = [REQUIRE_ORDER = 0, PERMUTE = 1, RETURN_IN_ORDER = 2]
-
-  #
-  # Argument flags.
-  #
-  ARGUMENT_FLAGS = [NO_ARGUMENT = 0, REQUIRED_ARGUMENT = 1,
-    OPTIONAL_ARGUMENT = 2]
-
-  #
-  # Status codes.
-  #
-  STATUS_YET, STATUS_STARTED, STATUS_TERMINATED = 0, 1, 2
-
-  #
-  # Error types.
-  #
-  class Error  < StandardError; end
-  class AmbigousOption   < Error; end
-  class NeedlessArgument < Error; end
-  class MissingArgument  < Error; end
-  class InvalidOption    < Error; end
-
-  #
-  # Set up option processing.
-  #
-  # The options to support are passed to new() as an array of arrays.
-  # Each sub-array contains any number of String option names which carry 
-  # the same meaning, and one of the following flags:
-  #
-  # GetoptLong::NO_ARGUMENT :: Option does not take an argument.
-  #
-  # GetoptLong::REQUIRED_ARGUMENT :: Option always takes an argument.
-  #
-  # GetoptLong::OPTIONAL_ARGUMENT :: Option may or may not take an argument.
-  #
-  # The first option name is considered to be the preferred (canonical) name.
-  # Other than that, the elements of each sub-array can be in any order.
-  #
-  def initialize(*arguments)
-    #
-    # Current ordering.
-    #
-    if ENV.include?('POSIXLY_CORRECT')
-      @ordering = REQUIRE_ORDER
-    else
-      @ordering = PERMUTE
-    end
-
-    #
-    # Hash table of option names.
-    # Keys of the table are option names, and their values are canonical
-    # names of the options.
-    #
-    @canonical_names = Hash.new
-
-    #
-    # Hash table of argument flags.
-    # Keys of the table are option names, and their values are argument
-    # flags of the options.
-    #
-    @argument_flags = Hash.new
-
-    #
-    # Whether error messages are output to $deferr.
-    #
-    @quiet = FALSE
-
-    #
-    # Status code.
-    #
-    @status = STATUS_YET
-
-    #
-    # Error code.
-    #
-    @error = nil
-
-    #
-    # Error message.
-    #
-    @error_message = nil
-
-    #
-    # Rest of catenated short options.
-    #
-    @rest_singles = ''
-
-    #
-    # List of non-option-arguments.
-    # Append them to ARGV when option processing is terminated.
-    #
-    @non_option_arguments = Array.new
-
-    if 0 < arguments.length
-      set_options(*arguments)
-    end
-  end
-
-  #
-  # Set the handling of the ordering of options and arguments.
-  # A RuntimeError is raised if option processing has already started.
-  #
-  # The supplied value must be a member of GetoptLong::ORDERINGS. It alters
-  # the processing of options as follows:
-  #
-  # <b>REQUIRE_ORDER</b> :
-  # 
-  # Options are required to occur before non-options.
-  #
-  # Processing of options ends as soon as a word is encountered that has not
-  # been preceded by an appropriate option flag.
-  #
-  # For example, if -a and -b are options which do not take arguments,
-  # parsing command line arguments of '-a one -b two' would result in 
-  # 'one', '-b', 'two' being left in ARGV, and only ('-a', '') being 
-  # processed as an option/arg pair.
-  #
-  # This is the default ordering, if the environment variable
-  # POSIXLY_CORRECT is set. (This is for compatibility with GNU getopt_long.)
-  #
-  # <b>PERMUTE</b> :
-  #  
-  # Options can occur anywhere in the command line parsed. This is the 
-  # default behavior.
-  #
-  # Every sequence of words which can be interpreted as an option (with or
-  # without argument) is treated as an option; non-option words are skipped.
-  #
-  # For example, if -a does not require an argument and -b optionally takes
-  # an argument, parsing '-a one -b two three' would result in ('-a','') and
-  # ('-b', 'two') being processed as option/arg pairs, and 'one','three'
-  # being left in ARGV.
-  #
-  # If the ordering is set to PERMUTE but the environment variable
-  # POSIXLY_CORRECT is set, REQUIRE_ORDER is used instead. This is for
-  # compatibility with GNU getopt_long.
-  #
-  # <b>RETURN_IN_ORDER</b> :
-  #
-  # All words on the command line are processed as options. Words not 
-  # preceded by a short or long option flag are passed as arguments
-  # with an option of '' (empty string).
-  #
-  # For example, if -a requires an argument but -b does not, a command line
-  # of '-a one -b two three' would result in option/arg pairs of ('-a', 'one')
-  # ('-b', ''), ('', 'two'), ('', 'three') being processed.
-  #
-  def ordering=(ordering)
-    #
-    # The method is failed if option processing has already started.
-    #
-    if @status != STATUS_YET
-      set_error(ArgumentError, "argument error")
-      raise RuntimeError,
-	"invoke ordering=, but option processing has already started"
-    end
-
-    #
-    # Check ordering.
-    #
-    if !ORDERINGS.include?(ordering)
-      raise ArgumentError, "invalid ordering `#{ordering}'"
-    end
-    if ordering == PERMUTE && ENV.include?('POSIXLY_CORRECT')
-      @ordering = REQUIRE_ORDER
-    else
-      @ordering = ordering
-    end
-  end
-
-  #
-  # Return ordering.
-  #
-  attr_reader :ordering
-
-  #
-  # Set options. Takes the same argument as GetoptLong.new.
-  #
-  # Raises a RuntimeError if option processing has already started.
-  #
-  def set_options(*arguments)
-    #
-    # The method is failed if option processing has already started.
-    #
-    if @status != STATUS_YET
-      raise RuntimeError, 
-	"invoke set_options, but option processing has already started"
-    end
-
-    #
-    # Clear tables of option names and argument flags.
-    #
-    @canonical_names.clear
-    @argument_flags.clear
-
-    arguments.each do |arg|
-      #
-      # Each argument must be an Array.
-      #
-      if !arg.is_a?(Array)
-	raise ArgumentError, "the option list contains non-Array argument"
-      end
-
-      #
-      # Find an argument flag and it set to `argument_flag'.
-      #
-      argument_flag = nil
-      arg.each do |i|
-	if ARGUMENT_FLAGS.include?(i)
-	  if argument_flag != nil
-	    raise ArgumentError, "too many argument-flags"
-	  end
-	  argument_flag = i
-	end
-      end
-      raise ArgumentError, "no argument-flag" if argument_flag == nil
-
-      canonical_name = nil
-      arg.each do |i|
-	#
-	# Check an option name.
-	#
-	next if i == argument_flag
-	begin
-	  if !i.is_a?(String) || i !~ /^-([^-]|-.+)$/
-	    raise ArgumentError, "an invalid option `#{i}'"
-	  end
-	  if (@canonical_names.include?(i))
-	    raise ArgumentError, "option redefined `#{i}'"
-	  end
-	rescue
-	  @canonical_names.clear
-	  @argument_flags.clear
-	  raise
-	end
-
-	#
-	# Register the option (`i') to the `@canonical_names' and 
-	# `@canonical_names' Hashes.
-	#
-	if canonical_name == nil
-	  canonical_name = i
-	end
-	@canonical_names[i] = canonical_name
-	@argument_flags[i] = argument_flag
-      end
-      raise ArgumentError, "no option name" if canonical_name == nil
-    end
-    return self
-  end
-
-  #
-  # Set/Unset `quiet' mode.
-  #
-  attr_writer :quiet
-
-  #
-  # Return the flag of `quiet' mode.
-  #
-  attr_reader :quiet
-
-  #
-  # `quiet?' is an alias of `quiet'.
-  #
-  alias quiet? quiet
-
-  #
-  # Explicitly terminate option processing.
-  #
-  def terminate
-    return nil if @status == STATUS_TERMINATED
-    raise RuntimeError, "an error has occured" if @error != nil
-
-    @status = STATUS_TERMINATED
-    @non_option_arguments.reverse_each do |argument|
-      ARGV.unshift(argument)
-    end
-
-    @canonical_names = nil
-    @argument_flags = nil
-    @rest_singles = nil
-    @non_option_arguments = nil
-
-    return self
-  end
-
-  #
-  # Returns true if option processing has terminated, false otherwise.
-  #
-  def terminated?
-    return @status == STATUS_TERMINATED
-  end
-
-  #
-  # Set an error (protected).
-  #
-  def set_error(type, message)
-    $deferr.print("#{$0}: #{message}\n") if !@quiet
-
-    @error = type
-    @error_message = message
-    @canonical_names = nil
-    @argument_flags = nil
-    @rest_singles = nil
-    @non_option_arguments = nil
-
-    raise type, message
-  end
-  protected :set_error
-
-  #
-  # Examine whether an option processing is failed.
-  #
-  attr_reader :error
-
-  #
-  # `error?' is an alias of `error'.
-  #
-  alias error? error
-
-  # Return the appropriate error message in POSIX-defined format.
-  # If no error has occurred, returns nil.
-  #
-  def error_message
-    return @error_message
-  end
-
-  #
-  # Get next option name and its argument, as an Array of two elements.
-  #
-  # The option name is always converted to the first (preferred)
-  # name given in the original options to GetoptLong.new.
-  #
-  # Example: ['--option', 'value']
-  #
-  # Returns nil if the processing is complete (as determined by
-  # STATUS_TERMINATED).
-  #
-  def get
-    option_name, option_argument = nil, ''
-
-    #
-    # Check status.
-    #
-    return nil if @error != nil
-    case @status
-    when STATUS_YET
-      @status = STATUS_STARTED
-    when STATUS_TERMINATED
-      return nil
-    end
-
-    #
-    # Get next option argument.
-    #
-    if 0 < @rest_singles.length
-      argument = '-' + @rest_singles
-    elsif (ARGV.length == 0)
-      terminate
-      return nil
-    elsif @ordering == PERMUTE
-      while 0 < ARGV.length && ARGV[0] !~ /^-./
-	@non_option_arguments.push(ARGV.shift)
-      end
-      if ARGV.length == 0
-	terminate
-	return nil
-      end
-      argument = ARGV.shift
-    elsif @ordering == REQUIRE_ORDER 
-      if (ARGV[0] !~ /^-./)
-	terminate
-	return nil
-      end
-      argument = ARGV.shift
-    else
-      argument = ARGV.shift
-    end
-
-    #
-    # Check the special argument `--'.
-    # `--' indicates the end of the option list.
-    #
-    if argument == '--' && @rest_singles.length == 0
-      terminate
-      return nil
-    end
-
-    #
-    # Check for long and short options.
-    #
-    if argument =~ /^(--[^=]+)/ && @rest_singles.length == 0
-      #
-      # This is a long style option, which start with `--'.
-      #
-      pattern = $1
-      if @canonical_names.include?(pattern)
-	option_name = pattern
-      else
-	#
-	# The option `option_name' is not registered in `@canonical_names'.
-	# It may be an abbreviated.
-	#
-	match_count = 0
-	@canonical_names.each_key do |key|
-	  if key.index(pattern) == 0
-	    option_name = key
-	    match_count += 1
-	  end
-	end
-	if 2 <= match_count
-	  set_error(AmbigousOption, "option `#{argument}' is ambiguous")
-	elsif match_count == 0
-	  set_error(InvalidOption, "unrecognized option `#{argument}'")
-	end
-      end
-
-      #
-      # Check an argument to the option.
-      #
-      if @argument_flags[option_name] == REQUIRED_ARGUMENT
-	if argument =~ /=(.*)$/
-	  option_argument = $1
-	elsif 0 < ARGV.length
-	  option_argument = ARGV.shift
-	else
-	  set_error(MissingArgument,
-	            "option `#{argument}' requires an argument")
-	end
-      elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
-	if argument =~ /=(.*)$/
-	  option_argument = $1
-	elsif 0 < ARGV.length && ARGV[0] !~ /^-./
-	  option_argument = ARGV.shift
-	else
-	  option_argument = ''
-	end
-      elsif argument =~ /=(.*)$/
-	set_error(NeedlessArgument,
-		  "option `#{option_name}' doesn't allow an argument")
-      end
-
-    elsif argument =~ /^(-(.))(.*)/
-      #
-      # This is a short style option, which start with `-' (not `--').
-      # Short options may be catenated (e.g. `-l -g' is equivalent to
-      # `-lg').
-      #
-      option_name, ch, @rest_singles = $1, $2, $3
-
-      if @canonical_names.include?(option_name)
-	#
-	# The option `option_name' is found in `@canonical_names'.
-	# Check its argument.
-	#
-	if @argument_flags[option_name] == REQUIRED_ARGUMENT
-	  if 0 < @rest_singles.length
-	    option_argument = @rest_singles
-	    @rest_singles = ''
-	  elsif 0 < ARGV.length
-	    option_argument = ARGV.shift
-	  else
-	    # 1003.2 specifies the format of this message.
-	    set_error(MissingArgument, "option requires an argument -- #{ch}")
-	  end
-	elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
-	  if 0 < @rest_singles.length
-	    option_argument = @rest_singles
-	    @rest_singles = ''
-	  elsif 0 < ARGV.length && ARGV[0] !~ /^-./
-	    option_argument = ARGV.shift
-	  else
-	    option_argument = ''
-	  end
-	end
-      else
-	#
-	# This is an invalid option.
-	# 1003.2 specifies the format of this message.
-	#
-	if ENV.include?('POSIXLY_CORRECT')
-	  set_error(InvalidOption, "illegal option -- #{ch}")
-	else
-	  set_error(InvalidOption, "invalid option -- #{ch}")
-	end
-      end
-    else
-      #
-      # This is a non-option argument.
-      # Only RETURN_IN_ORDER falled into here.
-      #
-      return '', argument
-    end
-
-    return @canonical_names[option_name], option_argument
-  end
-
-  #
-  # `get_option' is an alias of `get'.
-  #
-  alias get_option get
-
-  # Iterator version of `get'.
-  #
-  # The block is called repeatedly with two arguments:
-  # The first is the option name.
-  # The second is the argument which followed it (if any). 
-  # Example: ('--opt', 'value')
-  #
-  # The option name is always converted to the first (preferred)
-  # name given in the original options to GetoptLong.new.
-  #
-  def each
-    loop do
-      option_name, option_argument = get_option
-      break if option_name == nil
-      yield option_name, option_argument
-    end
-  end
-
-  #
-  # `each_option' is an alias of `each'.
-  #
-  alias each_option each
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getopts.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getopts.rb
deleted file mode 100644
index a857a42..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/getopts.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-#               getopts.rb - 
-#                       $Release Version: $
-#                       $Revision: 11708 $
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
-#
-# --
-# this is obsolete; use getoptlong
-#
-# 2000-03-21
-# modified by Minero Aoki <aamine at dp.u-netsurf.ne.jp>
-#
-# 2002-03-05
-# rewritten by Akinori MUSHA <knu at ruby-lang.org>
-#
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: getopts is deprecated after Ruby 1.8.1; use optparse instead" if caller[0] and $VERBOSE
-
-$RCS_ID=%q$Header$
-
-# getopts is obsolete. Use GetoptLong.
-
-def getopts(single_options, *options)
-  boolopts = {}
-  valopts = {}
-
-  #
-  # set defaults
-  #
-  single_options.scan(/.:?/) do |opt|
-    if opt.size == 1
-      boolopts[opt] = false
-    else
-      valopts[opt[0, 1]] = nil
-    end
-  end if single_options
-
-  options.each do |arg|
-    opt, val = arg.split(':', 2)
-
-    if val
-      valopts[opt] = val.empty? ? nil : val
-    else
-      boolopts[opt] = false
-    end
-  end
-
-  #
-  # scan
-  #
-  c = 0
-  argv = ARGV
-
-  while arg = argv.shift
-    case arg
-    when /\A--(.*)/
-      if $1.empty?			# xinit -- -bpp 24
-	break
-      end
-
-      opt, val = $1.split('=', 2)
-
-      if opt.size == 1
-	argv.unshift arg
-	return nil
-      elsif valopts.key? opt		# imclean --src +trash
-	valopts[opt] = val || argv.shift or return nil
-      elsif boolopts.key? opt		# ruby --verbose
-	boolopts[opt] = true
-      else
-	argv.unshift arg
-	return nil
-      end
-
-      c += 1
-    when /\A-(.+)/
-      opts = $1
-
-      until opts.empty?
-	opt = opts.slice!(0, 1)
-
-	if valopts.key? opt
-	  val = opts
-
-	  if val.empty?			# ruby -e 'p $:'
-	    valopts[opt] = argv.shift or return nil
-	  else				# cc -ohello ...
-	    valopts[opt] = val
-	  end
-
-	  c += 1
-	  break
-	elsif boolopts.key? opt
-	  boolopts[opt] = true		# ruby -h
-	  c += 1
-	else
-	  argv.unshift arg
-	  return nil
-	end
-      end
-    else
-      argv.unshift arg
-      break
-    end
-  end
-
-  #
-  # set
-  #
-  $OPT = {}
-
-  boolopts.each do |opt, val|
-    $OPT[opt] = val
-
-    sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
-    eval "$OPT_#{sopt} = val"
-  end
-  valopts.each do |opt, val|
-    $OPT[opt] = val
-
-    sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
-    eval "$OPT_#{sopt} = val"
-  end
-
-  c
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/gserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/gserver.rb
deleted file mode 100644
index eb5f31b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/gserver.rb
+++ /dev/null
@@ -1,253 +0,0 @@
-#
-# Copyright (C) 2001 John W. Small All Rights Reserved
-#
-# Author::        John W. Small
-# Documentation:: Gavin Sinclair
-# Licence::       Freeware.
-#
-# See the class GServer for documentation.
-#
-
-require "socket"
-require "thread"
-
-#
-# GServer implements a generic server, featuring thread pool management,
-# simple logging, and multi-server management.  See HttpServer in 
-# <tt>xmlrpc/httpserver.rb</tt> in the Ruby standard library for an example of
-# GServer in action.
-#
-# Any kind of application-level server can be implemented using this class.
-# It accepts multiple simultaneous connections from clients, up to an optional
-# maximum number.  Several _services_ (i.e. one service per TCP port) can be
-# run simultaneously, and stopped at any time through the class method
-# <tt>GServer.stop(port)</tt>.  All the threading issues are handled, saving
-# you the effort.  All events are optionally logged, but you can provide your
-# own event handlers if you wish.
-#
-# === Example
-#
-# Using GServer is simple.  Below we implement a simple time server, run it,
-# query it, and shut it down.  Try this code in +irb+:
-#
-#   require 'gserver'
-#
-#   #
-#   # A server that returns the time in seconds since 1970.
-#   # 
-#   class TimeServer < GServer
-#     def initialize(port=10001, *args)
-#       super(port, *args)
-#     end
-#     def serve(io)
-#       io.puts(Time.now.to_i)
-#     end
-#   end
-#
-#   # Run the server with logging enabled (it's a separate thread).
-#   server = TimeServer.new
-#   server.audit = true                  # Turn logging on.
-#   server.start 
-#
-#   # *** Now point your browser to http://localhost:10001 to see it working ***
-#
-#   # See if it's still running. 
-#   GServer.in_service?(10001)           # -> true
-#   server.stopped?                      # -> false
-#
-#   # Shut the server down gracefully.
-#   server.shutdown
-#   
-#   # Alternatively, stop it immediately.
-#   GServer.stop(10001)
-#   # or, of course, "server.stop".
-#
-# All the business of accepting connections and exception handling is taken
-# care of.  All we have to do is implement the method that actually serves the
-# client.
-#
-# === Advanced
-#
-# As the example above shows, the way to use GServer is to subclass it to
-# create a specific server, overriding the +serve+ method.  You can override
-# other methods as well if you wish, perhaps to collect statistics, or emit
-# more detailed logging.
-#
-#   connecting
-#   disconnecting
-#   starting
-#   stopping
-#
-# The above methods are only called if auditing is enabled.
-#
-# You can also override +log+ and +error+ if, for example, you wish to use a
-# more sophisticated logging system.
-#
-class GServer
-
-  DEFAULT_HOST = "127.0.0.1"
-
-  def serve(io)
-  end
-
-  @@services = {}   # Hash of opened ports, i.e. services
-  @@servicesMutex = Mutex.new
-
-  def GServer.stop(port, host = DEFAULT_HOST)
-    @@servicesMutex.synchronize {
-      @@services[host][port].stop
-    }
-  end
-
-  def GServer.in_service?(port, host = DEFAULT_HOST)
-    @@services.has_key?(host) and
-      @@services[host].has_key?(port)
-  end
-
-  def stop
-    @connectionsMutex.synchronize  {
-      if @tcpServerThread
-        @tcpServerThread.raise "stop"
-      end
-    }
-  end
-
-  def stopped?
-    @tcpServerThread == nil
-  end
-
-  def shutdown
-    @shutdown = true
-  end
-
-  def connections
-    @connections.size
-  end
-
-  def join
-    @tcpServerThread.join if @tcpServerThread
-  end
-
-  attr_reader :port, :host, :maxConnections
-  attr_accessor :stdlog, :audit, :debug
-
-  def connecting(client)
-    addr = client.peeraddr
-    log("#{self.class.to_s} #{@host}:#{@port} client:#{addr[1]} " +
-        "#{addr[2]}<#{addr[3]}> connect")
-    true
-  end
-
-  def disconnecting(clientPort)
-    log("#{self.class.to_s} #{@host}:#{@port} " +
-      "client:#{clientPort} disconnect")
-  end
-
-  protected :connecting, :disconnecting
-
-  def starting()
-    log("#{self.class.to_s} #{@host}:#{@port} start")
-  end
-
-  def stopping()
-    log("#{self.class.to_s} #{@host}:#{@port} stop")
-  end
-
-  protected :starting, :stopping
-
-  def error(detail)
-    log(detail.backtrace.join("\n"))
-  end
-
-  def log(msg)
-    if @stdlog
-      @stdlog.puts("[#{Time.new.ctime}] %s" % msg)
-      @stdlog.flush
-    end
-  end
-
-  protected :error, :log
-
-  def initialize(port, host = DEFAULT_HOST, maxConnections = 4,
-    stdlog = $stderr, audit = false, debug = false)
-    @tcpServerThread = nil
-    @port = port
-    @host = host
-    @maxConnections = maxConnections
-    @connections = []
-    @connectionsMutex = Mutex.new
-    @connectionsCV = ConditionVariable.new
-    @stdlog = stdlog
-    @audit = audit
-    @debug = debug
-  end
-
-  def start(maxConnections = -1)
-    raise "running" if !stopped?
-    @shutdown = false
-    @maxConnections = maxConnections if maxConnections > 0
-    @@servicesMutex.synchronize  {
-      if GServer.in_service?(@port, at host)
-        raise "Port already in use: #{host}:#{@port}!"
-      end
-      @tcpServer = TCPServer.new(@host, at port)
-      @port = @tcpServer.addr[1]
-      @@services[@host] = {} unless @@services.has_key?(@host)
-      @@services[@host][@port] = self;
-    }
-    @tcpServerThread = Thread.new {
-      begin
-        starting if @audit
-        while !@shutdown
-          @connectionsMutex.synchronize  {
-             while @connections.size >= @maxConnections
-               @connectionsCV.wait(@connectionsMutex)
-             end
-          }
-          client = @tcpServer.accept
-          @connections << Thread.new(client)  { |myClient|
-            begin
-              myPort = myClient.peeraddr[1]
-              serve(myClient) if !@audit or connecting(myClient)
-            rescue => detail
-              error(detail) if @debug
-            ensure
-              begin
-                myClient.close
-              rescue
-              end
-              @connectionsMutex.synchronize {
-                @connections.delete(Thread.current)
-                @connectionsCV.signal
-              }
-              disconnecting(myPort) if @audit
-            end
-          }
-        end
-      rescue => detail
-        error(detail) if @debug
-      ensure
-        begin
-          @tcpServer.close
-        rescue
-        end
-        if @shutdown
-          @connectionsMutex.synchronize  {
-             while @connections.size > 0
-               @connectionsCV.wait(@connectionsMutex)
-             end
-          }
-        else
-          @connections.each { |c| c.raise "stop" }
-        end
-        @tcpServerThread = nil
-        @@servicesMutex.synchronize  {
-          @@services[@host].delete(@port)
-        }
-        stopping if @audit
-      end
-    }
-    self
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/Win32API.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/Win32API.so
deleted file mode 100644
index 48fe59f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/Win32API.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/bigdecimal.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/bigdecimal.so
deleted file mode 100644
index b24883d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/bigdecimal.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/config.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/config.h
deleted file mode 100644
index cbcb931..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/config.h
+++ /dev/null
@@ -1,92 +0,0 @@
-#if _MSC_VER != 1200
-#error MSC version unmatch
-#endif
-#define USE_WINSOCK2 1
-#define STDC_HEADERS 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 0
-#define SIZEOF___INT64 8
-#define SIZEOF_OFF_T 4
-#define SIZEOF_VOIDP 4
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_TIME_T 4
-#define HAVE_PROTOTYPES 1
-#define TOKEN_PASTE(x,y) x##y
-#define HAVE_STDARG_PROTOTYPES 1
-#define NORETURN(x) __declspec(noreturn) x
-#define RUBY_EXTERN extern __declspec(dllimport)
-#define HAVE_DECL_SYS_NERR 1
-#define HAVE_LIMITS_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_SYS_UTIME_H 1
-#define HAVE_FLOAT_H 1
-#define rb_pid_t int
-#define rb_gid_t int
-#define rb_uid_t int
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define HAVE_ST_RDEV 1
-#define GETGROUPS_T int
-#define RETSIGTYPE void
-#define HAVE_ALLOCA 1
-#define HAVE_DUP2 1
-#define HAVE_MEMCMP 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MKDIR 1
-#define HAVE_STRCASECMP 1
-#define HAVE_STRNCASECMP 1
-#define HAVE_STRERROR 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRCHR 1
-#define HAVE_STRSTR 1
-#define HAVE_STRTOD 1
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_FLOCK 1
-#define HAVE_VSNPRINTF 1
-#define HAVE_ISNAN 1
-#define HAVE_FINITE 1
-#define HAVE_HYPOT 1
-#define HAVE_FMOD 1
-#define HAVE_FREXP 1
-#define HAVE_MODF 1
-#define HAVE_WAITPID 1
-#define HAVE_FSYNC 1
-#define HAVE_GETCWD 1
-#define HAVE_CHSIZE 1
-#define HAVE_TIMES 1
-#define HAVE_FCNTL 1
-#define HAVE_LINK 1
-#define HAVE__SETJMP 1
-#define HAVE_TELLDIR 1
-#define HAVE_SEEKDIR 1
-#define HAVE_MKTIME 1
-#define HAVE_COSH 1
-#define HAVE_SINH 1
-#define HAVE_TANH 1
-#define HAVE_TZNAME 1
-#define HAVE_DAYLIGHT 1
-#define SETPGRP_VOID 1
-#define RSHIFT(x,y) ((x)>>(int)y)
-#define FILE_COUNT _cnt
-#define FILE_READPTR _ptr
-#define inline __inline
-#define NEED_IO_SEEK_BETWEEN_RW 1
-#define STACK_GROW_DIRECTION -1
-#define DEFAULT_KCODE KCODE_NONE
-#define DLEXT ".so"
-#define DLEXT2 ".dll"
-#define RUBY_LIB "/lib/ruby/1.8"
-#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
-#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/1.8"
-#define RUBY_PLATFORM "i386-mswin32"
-#define RUBY_ARCHLIB "/lib/ruby/1.8/i386-mswin32"
-#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/i386-msvcrt"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/curses.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/curses.so
deleted file mode 100644
index 251ab6d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/curses.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dbm.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dbm.so
deleted file mode 100644
index 800b53d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dbm.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/defines.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/defines.h
deleted file mode 100644
index b4efc48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/defines.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/************************************************
-
-  defines.h -
-
-  $Author: shyouhei $
-  $Date: 2008-06-15 23:06:16 +0900 (Sun, 15 Jun 2008) $
-  created at: Wed May 18 00:21:44 JST 1994
-
-************************************************/
-#ifndef DEFINES_H
-#define DEFINES_H
-
-#define RUBY
-
-#ifdef __cplusplus
-# ifndef  HAVE_PROTOTYPES
-#  define HAVE_PROTOTYPES 1
-# endif
-# ifndef  HAVE_STDARG_PROTOTYPES
-#  define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-#undef _
-#ifdef HAVE_PROTOTYPES
-# define _(args) args
-#else
-# define _(args) ()
-#endif
-
-#undef __
-#ifdef HAVE_STDARG_PROTOTYPES
-# define __(args) args
-#else
-# define __(args) ()
-#endif
-
-#ifdef __cplusplus
-#define ANYARGS ...
-#else
-#define ANYARGS
-#endif
-
-#define xmalloc ruby_xmalloc
-#define xcalloc ruby_xcalloc
-#define xrealloc ruby_xrealloc
-#define xfree ruby_xfree
-
-void *xmalloc _((long));
-void *xcalloc _((long,long));
-void *xrealloc _((void*,long));
-void xfree _((void*));
-
-#if SIZEOF_LONG_LONG > 0
-# define LONG_LONG long long
-#elif SIZEOF___INT64 > 0
-# define HAVE_LONG_LONG 1
-# define LONG_LONG __int64
-# undef SIZEOF_LONG_LONG
-# define SIZEOF_LONG_LONG SIZEOF___INT64
-#endif
-
-#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG
-# define BDIGIT unsigned int
-# define SIZEOF_BDIGITS SIZEOF_INT
-# define BDIGIT_DBL unsigned LONG_LONG
-# define BDIGIT_DBL_SIGNED LONG_LONG
-#elif SIZEOF_INT*2 <= SIZEOF_LONG
-# define BDIGIT unsigned int
-# define SIZEOF_BDIGITS SIZEOF_INT
-# define BDIGIT_DBL unsigned long
-# define BDIGIT_DBL_SIGNED long
-#elif SIZEOF_SHORT*2 <= SIZEOF_LONG
-# define BDIGIT unsigned short
-# define SIZEOF_BDIGITS SIZEOF_SHORT
-# define BDIGIT_DBL unsigned long
-# define BDIGIT_DBL_SIGNED long
-#else
-# define BDIGIT unsigned short
-# define SIZEOF_BDIGITS (SIZEOF_LONG/2)
-# define BDIGIT_DBL unsigned long
-# define BDIGIT_DBL_SIGNED long
-#endif
-
-#ifdef __CYGWIN__
-#undef _WIN32
-#endif
-
-#if defined(MSDOS) || defined(_WIN32) || defined(__human68k__) || defined(__EMX__)
-#define DOSISH 1
-#ifndef _WIN32_WCE
-# define DOSISH_DRIVE_LETTER
-#endif
-#endif
-
-/* define RUBY_USE_EUC/SJIS for default kanji-code */
-#ifndef DEFAULT_KCODE
-#if defined(DOSISH) || defined(__CYGWIN__) || defined(__MACOS__) || defined(OS2)
-#define DEFAULT_KCODE KCODE_SJIS
-#else
-#define DEFAULT_KCODE KCODE_EUC
-#endif
-#endif
-
-#ifdef __NeXT__
-/* NextStep, OpenStep, Rhapsody */
-#ifndef S_IRUSR
-#define S_IRUSR 0000400        /* read permission, owner */
-#endif
-#ifndef S_IRGRP
-#define S_IRGRP 0000040        /* read permission, group */
-#endif
-#ifndef S_IROTH
-#define S_IROTH 0000004        /* read permission, other */
-#endif
-#ifndef S_IWUSR
-#define S_IWUSR 0000200        /* write permission, owner */
-#endif
-#ifndef S_IWGRP
-#define S_IWGRP 0000020        /* write permission, group */
-#endif
-#ifndef S_IWOTH
-#define S_IWOTH 0000002        /* write permission, other */
-#endif
-#ifndef S_IXUSR
-#define S_IXUSR 0000100        /* execute/search permission, owner */
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP 0000010        /* execute/search permission, group */
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH 0000001        /* execute/search permission, other */
-#endif
-#ifndef S_IRWXU
-#define S_IRWXU 0000700        /* read, write, execute permissions, owner */
-#endif
-#ifndef S_IRWXG
-#define S_IRWXG 0000070        /* read, write, execute permissions, group */
-#endif
-#ifndef S_IRWXO
-#define S_IRWXO 0000007        /* read, write, execute permissions, other */
-#endif
-#ifndef S_ISBLK
-#define S_ISBLK(mode)  (((mode) & (0170000)) == (0060000))
-#endif
-#ifndef S_ISCHR
-#define S_ISCHR(mode)  (((mode) & (0170000)) == (0020000))
-#endif
-#ifndef S_ISDIR
-#define S_ISDIR(mode)  (((mode) & (0170000)) == (0040000))
-#endif
-#ifndef S_ISFIFO
-#define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000))
-#endif
-#ifndef S_ISREG
-#define S_ISREG(mode)  (((mode) & (0170000)) == (0100000))
-#endif
-/* Do not trust WORDS_BIGENDIAN from configure since -arch compiler flag may
-   result in a different endian.  Instead trust __BIG_ENDIAN__ and
-   __LITTLE_ENDIAN__ which are set correctly by -arch. */
-#undef WORDS_BIGENDIAN
-#ifdef __BIG_ENDIAN__
-#define WORDS_BIGENDIAN
-#endif
-#ifndef __APPLE__
-/* NextStep, OpenStep (but not Rhapsody) */
-#ifndef GETPGRP_VOID
-#define GETPGRP_VOID 1
-#endif
-#ifndef WNOHANG
-#define WNOHANG 01
-#endif
-#ifndef WUNTRACED
-#define WUNTRACED 02
-#endif
-#ifndef X_OK
-#define X_OK 1
-#endif
-#endif /* __APPLE__ */
-#endif /* NeXT */
-
-#ifdef _WIN32
-#include "win32/win32.h"
-#endif
-
-#if defined(__VMS)
-#include "vms.h"
-#endif
-
-#if defined(__BEOS__)
-#include <net/socket.h> /* intern.h needs fd_set definition */
-#endif
-
-#ifdef RUBY_EXPORT
-#undef RUBY_EXTERN
-#endif
-
-#ifndef RUBY_EXTERN
-#define RUBY_EXTERN extern
-#endif
-
-#ifndef EXTERN
-#define EXTERN RUBY_EXTERN	/* deprecated */
-#endif
-
-#ifndef RUBY_MBCHAR_MAXSIZE
-#define RUBY_MBCHAR_MAXSIZE INT_MAX
-        /* MB_CUR_MAX will not work well in C locale */
-#endif
-
-#if defined(sparc) || defined(__sparc__)
-static inline void
-flush_register_windows(void)
-{
-    asm
-#ifdef __GNUC__
-	volatile
-#endif
-# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
-	("flushw")
-# else
-	("ta  0x03")
-# endif /* trap always to flush register windows if we are on a Sparc system */
-	;
-}
-#  define FLUSH_REGISTER_WINDOWS flush_register_windows()
-#elif defined(__ia64)
-void *rb_ia64_bsp(void);
-void rb_ia64_flushrs(void);
-#  define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs()
-#else
-#  define FLUSH_REGISTER_WINDOWS ((void)0)
-#endif
-
-#if defined(DOSISH)
-#define PATH_SEP ";"
-#elif defined(riscos)
-#define PATH_SEP ","
-#else
-#define PATH_SEP ":"
-#endif
-#define PATH_SEP_CHAR PATH_SEP[0]
-
-#if defined(__human68k__)
-#define PATH_ENV "path"
-#else
-#define PATH_ENV "PATH"
-#endif
-
-#if defined(DOSISH) && !defined(__human68k__) && !defined(__EMX__)
-#define ENV_IGNORECASE
-#endif
-
-#ifndef CASEFOLD_FILESYSTEM
-# if defined DOSISH || defined __VMS
-#   define CASEFOLD_FILESYSTEM 1
-# else
-#   define CASEFOLD_FILESYSTEM 0
-# endif
-#endif
-
-#ifndef DLEXT_MAXLEN
-#define DLEXT_MAXLEN 4
-#endif
-
-#ifndef RUBY_PLATFORM
-#define RUBY_PLATFORM "unknown-unknown"
-#endif
-
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.h
deleted file mode 100644
index a108588..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/************************************************
-
-  digest.h - header file for ruby digest modules
-
-  $Author: shyouhei $
-  created at: Fri May 25 08:54:56 JST 2001
-
-
-  Copyright (C) 2001-2006 Akinori MUSHA
-
-  $RoughId: digest.h,v 1.3 2001/07/13 15:38:27 knu Exp $
-  $Id: digest.h 11708 2007-02-12 23:01:19Z shyouhei $
-
-************************************************/
-
-#include "ruby.h"
-
-#define RUBY_DIGEST_API_VERSION	2
-
-typedef void (*rb_digest_hash_init_func_t)(void *);
-typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t);
-typedef void (*rb_digest_hash_finish_func_t)(void *, unsigned char *);
-
-typedef struct {
-    int api_version;
-    size_t digest_len;
-    size_t block_len;
-    size_t ctx_size;
-    rb_digest_hash_init_func_t init_func;
-    rb_digest_hash_update_func_t update_func;
-    rb_digest_hash_finish_func_t finish_func;
-} rb_digest_metadata_t;
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.so
deleted file mode 100644
index b70c215..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/bubblebabble.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/bubblebabble.so
deleted file mode 100644
index ce39190..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/bubblebabble.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/md5.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/md5.so
deleted file mode 100644
index 32264f1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/md5.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/rmd160.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/rmd160.so
deleted file mode 100644
index 9a0b029..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/rmd160.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha1.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha1.so
deleted file mode 100644
index 63ec648..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha1.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha2.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha2.so
deleted file mode 100644
index 974c9b3..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/digest/sha2.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.h
deleted file mode 100644
index 8f51b45..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/* -*- C -*-
- * $Id: dl.h 11708 2007-02-12 23:01:19Z shyouhei $
- */
-
-#ifndef RUBY_DL_H
-#define RUBY_DL_H
-
-#include <ruby.h>
-#include <dlconfig.h>
-
-#if defined(HAVE_DLFCN_H)
-# include <dlfcn.h>
-# /* some stranger systems may not define all of these */
-#ifndef RTLD_LAZY
-#define RTLD_LAZY 0
-#endif
-#ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
-#endif
-#ifndef RTLD_NOW
-#define RTLD_NOW 0
-#endif
-#else
-# if defined(HAVE_WINDOWS_H)
-#   include <windows.h>
-#   define dlclose(ptr) FreeLibrary((HINSTANCE)ptr)
-#   define dlopen(name,flag) ((void*)LoadLibrary(name))
-#   define dlerror()    "unknown error"
-#   define dlsym(handle,name) ((void*)GetProcAddress(handle,name))
-#   define RTLD_LAZY -1
-#   define RTLD_NOW  -1
-#   define RTLD_GLOBAL -1
-# endif
-#endif
-
-#if !defined(StringValue)
-# define StringValue(v) if(TYPE(v) != T_STRING) v = rb_str_to_str(v)
-#endif
-#if !defined(StringValuePtr)
-# define StringValuePtr(v) RSTRING((TYPE(v) == T_STRING) ? (v) : rb_str_to_str(v))->ptr
-#endif
-
-#ifdef DEBUG
-#define DEBUG_CODE(b) {printf("DEBUG:%d\n",__LINE__);b;}
-#define DEBUG_CODE2(b1,b2) {printf("DEBUG:%d\n",__LINE__);b1;}
-#else
-#define DEBUG_CODE(b)
-#define DEBUG_CODE2(b1,b2) b2
-#endif
-
-#define VOID_DLTYPE   0x00
-#define CHAR_DLTYPE   0x01
-#define SHORT_DLTYPE  0x02
-#define INT_DLTYPE    0x03
-#define LONG_DLTYPE   0x04
-#define FLOAT_DLTYPE  0x05
-#define DOUBLE_DLTYPE 0x06
-#define VOIDP_DLTYPE  0x07
-
-#define ARG_TYPE(x,i) (((x) & (0x07 << ((i)*3))) >> ((i)*3))
-#define PUSH_ARG(x,t) do{x <<= 3; x |= t;}while(0)
-#define PUSH_0(x) PUSH_ARG(x,VOID_DLTYPE)
-
-#if SIZEOF_INT == SIZEOF_LONG
-# define PUSH_I(x) PUSH_ARG(x,LONG_DLTYPE)
-# define ANY2I(x)  x.l
-# define DLINT(x)  (long)x
-#else
-# define PUSH_I(x) PUSH_ARG(x,INT_DLTYPE)
-# define ANY2I(x)  x.i
-# define DLINT(x)  (int)x
-#endif
-#define PUSH_L(x) PUSH_ARG(x,LONG_DLTYPE)
-#define ANY2L(x)  x.l
-#define DLLONG(x) (long)x
-
-#if defined(WITH_TYPE_FLOAT)
-# if SIZEOF_FLOAT == SIZEOF_DOUBLE
-#   define PUSH_F(x) PUSH_ARG(x,DOUBLE_DLTYPE)
-#   define ANY2F(x)  (x.d)
-#   define DLFLOAT(x) ((double)x)
-# else
-#   define PUSH_F(x) PUSH_ARG(x,FLOAT_DLTYPE)
-#   define ANY2F(x)  (x.f)
-#   define DLFLOAT(x) ((float)x)
-# endif
-#else
-# define PUSH_F(x) PUSH_ARG(x,DOUBLE_DLTYPE)
-# define ANY2F(x)  (x.d)
-# define DLFLOAT(x) ((double)x)
-#endif
-#define PUSH_D(x) PUSH_ARG(x,DOUBLE_DLTYPE)
-#define ANY2D(x)  (x.d)
-#define DLDOUBLE(x) ((double)x)
-
-#if SIZEOF_INT == SIZEOF_VOIDP && SIZEOF_INT != SIZEOF_LONG
-# define PUSH_P(x) PUSH_ARG(x,INT_DLTYPE)
-# define ANY2P(x)  (x.i)
-# define DLVOIDP(x) ((int)x)
-#elif SIZEOF_LONG == SIZEOF_VOIDP
-# define PUSH_P(x) PUSH_ARG(x,LONG_DLTYPE)
-# define ANY2P(x)  (x.l)
-# define DLVOIDP(x) ((long)x)
-#else
-# define PUSH_P(x) PUSH_ARG(x,VOIDP_DLTYPE)
-# define ANY2P(x)  (x.p)
-# define DLVOIDP(x) ((void*)p)
-#endif
-
-#if defined(WITH_TYPE_CHAR)
-# define PUSH_C(x) PUSH_ARG(x,CHAR_DLTYPE)
-# define ANY2C(x)  (x.c)
-# define DLCHAR(x) ((char)x)
-#else
-# define PUSH_C(x) PUSH_I(x)
-# define ANY2C(x)  ANY2I(x)
-# define DLCHAR(x) DLINT(x)
-#endif
-
-#if defined(WITH_TYPE_SHORT)
-# define PUSH_H(x) PUSH_ARG(x,SHORT_DLTYPE)
-# define ANY2H(x)  (x.h)
-# define DLSHORT(x) ((short)x)
-#else
-# define PUSH_H(x) PUSH_I(x)
-# define ANY2H(x)  ANY2I(x)
-# define DLSHORT(x) DLINT(x)
-#endif
-
-#define PUSH_S(x) PUSH_P(x)
-#define ANY2S(x) ANY2P(x)
-#define DLSTR(x) DLVOIDP(x)
-
-#define CBPUSH_0(x) PUSH_0(x)
-#define CBPUSH_C(x) PUSH_C(x)
-#define CBPUSH_H(x) PUSH_H(x)
-#define CBPUSH_I(x) PUSH_I(x)
-#define CBPUSH_L(x) PUSH_L(x)
-#define CBPUSH_F(x) PUSH_F(x)
-#define CBPUSH_D(x) PUSH_D(x)
-#if defined(WITH_CBTYPE_VOIDP)
-# define CBPUSH_P(x) PUSH_ARG(x,VOIDP_DLTYPE)
-#else
-# define CBPUSH_P(x) PUSH_P(x)
-#endif
-
-
-#if defined(USE_INLINE_ASM)
-# if defined(__i386__) && defined(__GNUC__)
-#   define DLSTACK
-#   define DLSTACK_METHOD "asm"
-#   define DLSTACK_REVERSE
-#   define DLSTACK_PROTO
-#   define DLSTACK_ARGS
-#   define DLSTACK_START(sym)
-#   define DLSTACK_END(sym)
-#   define DLSTACK_PUSH_C(x) asm volatile ("pushl %0" :: "g" (x));
-#   define DLSTACK_PUSH_H(x) asm volatile ("pushl %0" :: "g" (x));
-#   define DLSTACK_PUSH_I(x) asm volatile ("pushl %0" :: "g" (x));
-#   define DLSTACK_PUSH_L(x) asm volatile ("pushl %0" :: "g" (x));
-#   define DLSTACK_PUSH_P(x) asm volatile ("pushl %0" :: "g" (x));
-#   define DLSTACK_PUSH_F(x) asm volatile ("flds %0"::"g"(x));\
-                             asm volatile ("subl $4,%esp");\
-                             asm volatile ("fstps (%esp)");
-#   define DLSTACK_PUSH_D(x) asm volatile ("fldl %0"::"g"(x));\
-                             asm volatile ("subl $8,%esp");\
-                             asm volatile ("fstpl (%esp)")
-# else
-# error --with-asm is not supported on this machine
-# endif
-#elif defined(USE_DLSTACK)
-# define DLSTACK
-# define DLSTACK_GUARD
-# define DLSTACK_METHOD "dl"
-# define DLSTACK_PROTO long,long,long,long,long,\
-                       long,long,long,long,long,\
-                       long,long,long,long,long
-# define DLSTACK_ARGS  stack[0],stack[1],stack[2],stack[3],stack[4],\
-                       stack[5],stack[6],stack[7],stack[8],stack[9],\
-                       stack[10],stack[11],stack[12],stack[13],stack[14]
-# define DLSTACK_SIZE  (sizeof(long)*15)
-# define DLSTACK_START(sym)
-# define DLSTACK_END(sym)
-# define DLSTACK_PUSH_C(x)  {long v=(long)x; memcpy(sp,&v,sizeof(long)); sp++;}
-# define DLSTACK_PUSH_H(x)  {long v=(long)x; memcpy(sp,&v,sizeof(long)); sp++;}
-# define DLSTACK_PUSH_I(x)  {long v=(long)x; memcpy(sp,&v,sizeof(long)); sp++;}
-# define DLSTACK_PUSH_L(x)  memcpy(sp,&x,sizeof(long)); sp++;
-# define DLSTACK_PUSH_P(x)  memcpy(sp,&x,sizeof(void*)); sp++;
-# define DLSTACK_PUSH_F(x)  memcpy(sp,&x,sizeof(float)); sp+=sizeof(float)/sizeof(long);
-# define DLSTACK_PUSH_D(x)  memcpy(sp,&x,sizeof(double)); sp+=sizeof(double)/sizeof(long);
-#else
-# define DLSTACK_METHOD "none"
-#endif
-
-extern VALUE rb_mDL;
-extern VALUE rb_mDLMemorySpace;
-extern VALUE rb_cDLHandle;
-extern VALUE rb_cDLSymbol;
-extern VALUE rb_cDLPtrData;
-extern VALUE rb_cDLStructData;
-
-extern VALUE rb_eDLError;
-extern VALUE rb_eDLTypeError;
-
-#if defined(LONG2NUM) && (SIZEOF_LONG == SIZEOF_VOIDP)
-# define DLLONG2NUM(x) LONG2NUM((long)x)
-# define DLNUM2LONG(x) (long)(NUM2LONG(x))
-#else
-# define DLLONG2NUM(x) INT2NUM((long)x)
-# define DLNUM2LONG(x) (long)(NUM2INT(x))
-#endif
-
-typedef struct { char c; void *x; } s_voidp;
-typedef struct { char c; short x; } s_short;
-typedef struct { char c; int x; } s_int;
-typedef struct { char c; long x; } s_long;
-typedef struct { char c; float x; } s_float;
-typedef struct { char c; double x; } s_double;
-
-#define ALIGN_VOIDP  (sizeof(s_voidp) - sizeof(void *))
-#define ALIGN_SHORT  (sizeof(s_short) - sizeof(short))
-#define ALIGN_INT    (sizeof(s_int) - sizeof(int))
-#define ALIGN_LONG   (sizeof(s_long) - sizeof(long))
-#define ALIGN_FLOAT  (sizeof(s_float) - sizeof(float))
-#define ALIGN_DOUBLE (sizeof(s_double) - sizeof(double))
-
-/* for compatibility */
-#define VOIDP_ALIGN  ALIGN_VOIDP
-#define SHORT_ALIGN  ALIGN_SHORT
-#define INT_ALIGN    ALIGN_INT
-#define LONG_ALIGN   ALIGN_LONG
-#define FLOAT_ALIGN  ALIGN_FLOAT
-#define DOUBLE_ALIGN ALIGN_DOUBLE
-
-#define DLALIGN(ptr,offset,align) {\
-  while( (((unsigned long)((char *)ptr + offset)) % align) != 0 ) offset++;\
-}
-
-typedef void (*freefunc_t)(void *);
-#define DLFREEFUNC(func) ((freefunc_t)(func))
-
-typedef union {
-  void*  p;
-  char   c;
-  short  h;
-  int    i;
-  long   l;
-  float  f;
-  double d;
-  char  *s;
-} ANY_TYPE;
-
-struct dl_handle {
-  void *ptr;
-  int  open;
-  int  enable_close;
-};
-
-struct sym_data {
-  void *func;
-  char *name;
-  char *type;
-  int  len;
-};
-
-enum DLPTR_CTYPE {
-  DLPTR_CTYPE_UNKNOWN,
-  DLPTR_CTYPE_STRUCT,
-  DLPTR_CTYPE_UNION
-};
-
-struct ptr_data {
-  void *ptr;       /* a pointer to the data */
-  freefunc_t free; /* free() */
-  char *stype;      /* array of type specifiers */
-  int  *ssize;      /* size[i] = sizeof(type[i]) > 0 */
-  int  slen;   /* the number of type specifiers */
-  ID   *ids;
-  int  ids_num;
-  int  ctype; /* DLPTR_CTYPE_UNKNOWN, DLPTR_CTYPE_STRUCT, DLPTR_CTYPE_UNION */
-  long size;
-};
-
-#define RDLPTR(obj)  ((struct ptr_data *)(DATA_PTR(obj)))
-#define RDLSYM(obj)  ((struct sym_data *)(DATA_PTR(obj)))
-
-void dlfree(void*);
-void *dlmalloc(size_t);
-void *dlrealloc(void*,size_t);
-char *dlstrdup(const char *);
-size_t dlsizeof(const char *);
-
-void *rb_ary2cary(char t, VALUE ary, long *size);
-
-/*
-void rb_dlmem_delete(void *ptr);
-void rb_dlmem_aset(void *ptr, VALUE obj);
-VALUE rb_dlmem_aref(void *ptr);
-*/
-
-void dlptr_free(struct ptr_data *data);
-void dlptr_init(VALUE val);
-
-VALUE rb_dlptr_new(void *ptr, long size, freefunc_t func);
-VALUE rb_dlptr_new2(VALUE klass, void *ptr, long size, freefunc_t func);
-VALUE rb_dlptr_malloc(long size, freefunc_t func);
-void *rb_dlptr2cptr(VALUE val);
-
-VALUE rb_dlsym_new(void (*func)(), const char *name, const char *type);
-freefunc_t rb_dlsym2csym(VALUE val);
-
-
-#endif /* RUBY_DL_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.so
deleted file mode 100644
index c9e28a8..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dl.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dlconfig.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dlconfig.h
deleted file mode 100644
index 64349a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dlconfig.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef DLCONFIG_H
-#define DLCONFIG_H
-#define MAX_ARG           0
-#define MAX_CALLBACK 10
-#define CALLBACK_TYPES 8
-#define USE_DLSTACK
-#define WITH_TYPE_CHAR
-#define WITH_TYPE_SHORT
-#define WITH_TYPE_LONG
-#define WITH_TYPE_DOUBLE
-#define WITH_TYPE_FLOAT
-#if !defined(HAVE_WINDOWS_H)
-# define HAVE_WINDOWS_H
-#endif
-
-#endif /* DLCONFIG_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dln.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dln.h
deleted file mode 100644
index bfdb19f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/dln.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**********************************************************************
-
-  dln.h -
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Wed Jan 19 16:53:09 JST 1994
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef DLN_H
-#define DLN_H
-
-#ifdef __cplusplus
-# ifndef  HAVE_PROTOTYPES
-#  define HAVE_PROTOTYPES 1
-# endif
-# ifndef  HAVE_STDARG_PROTOTYPES
-#  define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-#undef _
-#ifdef HAVE_PROTOTYPES
-# define _(args) args
-#else
-# define _(args) ()
-#endif
-
-char *dln_find_exe _((const char*,const char*));
-char *dln_find_file _((const char*,const char*));
-
-#ifdef USE_DLN_A_OUT
-extern char *dln_argv0;
-#endif
-
-void *dln_load _((const char*));
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/enumerator.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/enumerator.so
deleted file mode 100644
index f018acb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/enumerator.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/env.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/env.h
deleted file mode 100644
index c05167b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/env.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**********************************************************************
-
-  env.h -
-
-  $Author: knu $
-  $Date: 2007-03-03 16:30:46 +0900 (Sat, 03 Mar 2007) $
-  created at: Mon Jul 11 11:53:03 JST 1994
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef ENV_H
-#define ENV_H
-
-extern struct FRAME {
-    VALUE self;
-    int argc;
-    ID last_func;
-    ID orig_func;
-    VALUE last_class;
-    struct FRAME *prev;
-    struct FRAME *tmp;
-    struct RNode *node;
-    int iter;
-    int flags;
-    unsigned long uniq;
-} *ruby_frame;
-
-void rb_gc_mark_frame _((struct FRAME *));
-
-#define FRAME_DMETH  1
-#define FRAME_FUNC   2
-
-extern struct SCOPE {
-    struct RBasic super;
-    ID *local_tbl;
-    VALUE *local_vars;
-    int flags;
-} *ruby_scope;
-
-#define SCOPE_ALLOCA  0
-#define SCOPE_MALLOC  1
-#define SCOPE_NOSTACK 2
-#define SCOPE_DONT_RECYCLE 4
-#define SCOPE_CLONE   8
-
-extern int ruby_in_eval;
-
-extern VALUE ruby_class;
-
-struct RVarmap {
-    struct RBasic super;
-    ID id;
-    VALUE val;
-    struct RVarmap *next;
-};
-extern struct RVarmap *ruby_dyna_vars;
-
-#endif /* ENV_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/etc.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/etc.so
deleted file mode 100644
index 070ab8e..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/etc.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/fcntl.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/fcntl.so
deleted file mode 100644
index b94f686..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/fcntl.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/gdbm.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/gdbm.so
deleted file mode 100644
index 22230c5..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/gdbm.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/iconv.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/iconv.so
deleted file mode 100644
index 13adfa8..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/iconv.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/intern.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/intern.h
deleted file mode 100644
index a2673be..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/intern.h
+++ /dev/null
@@ -1,510 +0,0 @@
-/**********************************************************************
-
-  intern.h -
-
-  $Author: shyouhei $
-  $Date: 2008-07-07 12:10:04 +0900 (Mon, 07 Jul 2008) $
-  created at: Thu Jun 10 14:22:17 JST 1993
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-  Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-  Copyright (C) 2000  Information-technology Promotion Agency, Japan
-
-**********************************************************************/
-
-/* 
- * Functions and variables that are used by more than one source file of
- * the kernel.
- */
-
-#define ID_ALLOCATOR 1
-
-/* array.c */
-void rb_mem_clear _((register VALUE*, register long));
-VALUE rb_assoc_new _((VALUE, VALUE));
-VALUE rb_check_array_type _((VALUE));
-VALUE rb_ary_new _((void));
-VALUE rb_ary_new2 _((long));
-VALUE rb_ary_new3 __((long,...));
-VALUE rb_ary_new4 _((long, const VALUE *));
-VALUE rb_ary_freeze _((VALUE));
-VALUE rb_ary_aref _((int, VALUE*, VALUE));
-void rb_ary_store _((VALUE, long, VALUE));
-VALUE rb_ary_dup _((VALUE));
-VALUE rb_ary_to_ary _((VALUE));
-VALUE rb_ary_to_s _((VALUE));
-VALUE rb_ary_push _((VALUE, VALUE));
-VALUE rb_ary_pop _((VALUE));
-VALUE rb_ary_shift _((VALUE));
-VALUE rb_ary_unshift _((VALUE, VALUE));
-VALUE rb_ary_entry _((VALUE, long));
-VALUE rb_ary_each _((VALUE));
-VALUE rb_ary_join _((VALUE, VALUE));
-VALUE rb_ary_print_on _((VALUE, VALUE));
-VALUE rb_ary_reverse _((VALUE));
-VALUE rb_ary_sort _((VALUE));
-VALUE rb_ary_sort_bang _((VALUE));
-VALUE rb_ary_delete _((VALUE, VALUE));
-VALUE rb_ary_delete_at _((VALUE, long));
-VALUE rb_ary_clear _((VALUE));
-VALUE rb_ary_plus _((VALUE, VALUE));
-VALUE rb_ary_concat _((VALUE, VALUE));
-VALUE rb_ary_assoc _((VALUE, VALUE));
-VALUE rb_ary_rassoc _((VALUE, VALUE));
-VALUE rb_ary_includes _((VALUE, VALUE));
-VALUE rb_ary_cmp _((VALUE, VALUE));
-VALUE rb_protect_inspect _((VALUE(*)(ANYARGS),VALUE,VALUE));
-VALUE rb_inspecting_p _((VALUE));
-VALUE rb_check_array_value _((VALUE));
-VALUE rb_values_at _((VALUE, long, int, VALUE*, VALUE(*) _((VALUE,long))));
-/* bignum.c */
-VALUE rb_big_clone _((VALUE));
-void rb_big_2comp _((VALUE));
-VALUE rb_big_norm _((VALUE));
-VALUE rb_uint2big _((unsigned long));
-VALUE rb_int2big _((long));
-VALUE rb_uint2inum _((unsigned long));
-VALUE rb_int2inum _((long));
-VALUE rb_cstr_to_inum _((const char*, int, int));
-VALUE rb_str_to_inum _((VALUE, int, int));
-VALUE rb_cstr2inum _((const char*, int));
-VALUE rb_str2inum _((VALUE, int));
-VALUE rb_big2str _((VALUE, int));
-VALUE rb_big2str0 _((VALUE, int, int));
-long rb_big2long _((VALUE));
-#define rb_big2int(x) rb_big2long(x)
-unsigned long rb_big2ulong _((VALUE));
-#define rb_big2uint(x) rb_big2ulong(x)
-#if HAVE_LONG_LONG
-VALUE rb_ll2inum _((LONG_LONG));
-VALUE rb_ull2inum _((unsigned LONG_LONG));
-LONG_LONG rb_big2ll _((VALUE));
-unsigned LONG_LONG rb_big2ull _((VALUE));
-#endif  /* HAVE_LONG_LONG */
-void rb_quad_pack _((char*,VALUE));
-VALUE rb_quad_unpack _((const char*,int));
-VALUE rb_dbl2big _((double));
-double rb_big2dbl _((VALUE));
-VALUE rb_big_plus _((VALUE, VALUE));
-VALUE rb_big_minus _((VALUE, VALUE));
-VALUE rb_big_mul _((VALUE, VALUE));
-VALUE rb_big_divmod _((VALUE, VALUE));
-VALUE rb_big_pow _((VALUE, VALUE));
-VALUE rb_big_and _((VALUE, VALUE));
-VALUE rb_big_or _((VALUE, VALUE));
-VALUE rb_big_xor _((VALUE, VALUE));
-VALUE rb_big_lshift _((VALUE, VALUE));
-VALUE rb_big_rand _((VALUE, double*));
-/* class.c */
-VALUE rb_class_boot _((VALUE));
-VALUE rb_class_new _((VALUE));
-VALUE rb_mod_init_copy _((VALUE, VALUE));
-VALUE rb_class_init_copy _((VALUE, VALUE));
-VALUE rb_singleton_class_clone _((VALUE));
-void rb_singleton_class_attached _((VALUE,VALUE));
-VALUE rb_make_metaclass _((VALUE, VALUE));
-void rb_check_inheritable _((VALUE));
-VALUE rb_class_inherited _((VALUE, VALUE));
-VALUE rb_define_class_id _((ID, VALUE));
-VALUE rb_module_new _((void));
-VALUE rb_define_module_id _((ID));
-VALUE rb_mod_included_modules _((VALUE));
-VALUE rb_mod_include_p _((VALUE, VALUE));
-VALUE rb_mod_ancestors _((VALUE));
-VALUE rb_class_instance_methods _((int, VALUE*, VALUE));
-VALUE rb_class_public_instance_methods _((int, VALUE*, VALUE));
-VALUE rb_class_protected_instance_methods _((int, VALUE*, VALUE));
-VALUE rb_big_rshift(VALUE, VALUE);
-VALUE rb_class_private_instance_methods _((int, VALUE*, VALUE));
-VALUE rb_obj_singleton_methods _((int, VALUE*, VALUE));
-void rb_define_method_id _((VALUE, ID, VALUE (*)(ANYARGS), int));
-void rb_frozen_class_p _((VALUE));
-void rb_undef _((VALUE, ID));
-void rb_define_protected_method _((VALUE, const char*, VALUE (*)(ANYARGS), int));
-void rb_define_private_method _((VALUE, const char*, VALUE (*)(ANYARGS), int));
-void rb_define_singleton_method _((VALUE, const char*, VALUE(*)(ANYARGS), int));
-VALUE rb_singleton_class _((VALUE));
-/* compar.c */
-int rb_cmpint _((VALUE, VALUE, VALUE));
-NORETURN(void rb_cmperr _((VALUE, VALUE)));
-/* enum.c */
-/* error.c */
-RUBY_EXTERN int ruby_nerrs;
-VALUE rb_exc_new _((VALUE, const char*, long));
-VALUE rb_exc_new2 _((VALUE, const char*));
-VALUE rb_exc_new3 _((VALUE, VALUE));
-NORETURN(void rb_loaderror __((const char*, ...)));
-NORETURN(void rb_name_error __((ID, const char*, ...)));
-NORETURN(void rb_invalid_str _((const char*, const char*)));
-void rb_compile_error __((const char*, ...));
-void rb_compile_error_append __((const char*, ...));
-NORETURN(void rb_load_fail _((const char*)));
-NORETURN(void rb_error_frozen _((const char*)));
-void rb_check_frozen _((VALUE));
-/* eval.c */
-RUBY_EXTERN struct RNode *ruby_current_node;
-void ruby_set_current_source _((void));
-NORETURN(void rb_exc_raise _((VALUE)));
-NORETURN(void rb_exc_fatal _((VALUE)));
-VALUE rb_f_exit _((int,VALUE*));
-VALUE rb_f_abort _((int,VALUE*));
-void rb_remove_method _((VALUE, const char*));
-#define rb_disable_super(klass, name) ((void)0)
-#define rb_enable_super(klass, name) ((void)0)
-#define HAVE_RB_DEFINE_ALLOC_FUNC 1
-void rb_define_alloc_func _((VALUE, VALUE (*)(VALUE)));
-void rb_undef_alloc_func _((VALUE));
-void rb_clear_cache _((void));
-void rb_clear_cache_by_class _((VALUE));
-void rb_alias _((VALUE, ID, ID));
-void rb_attr _((VALUE,ID,int,int,int));
-int rb_method_boundp _((VALUE, ID, int));
-VALUE rb_dvar_defined _((ID));
-VALUE rb_dvar_curr _((ID));
-VALUE rb_dvar_ref _((ID));
-void rb_dvar_asgn _((ID, VALUE));
-void rb_dvar_push _((ID, VALUE));
-VALUE *rb_svar _((int));
-VALUE rb_eval_cmd _((VALUE, VALUE, int));
-int rb_obj_respond_to _((VALUE, ID, int));
-int rb_respond_to _((VALUE, ID));
-void rb_interrupt _((void));
-VALUE rb_apply _((VALUE, ID, VALUE));
-void rb_backtrace _((void));
-ID rb_frame_last_func _((void));
-VALUE rb_obj_instance_eval _((int, VALUE*, VALUE));
-VALUE rb_mod_module_eval _((int, VALUE*, VALUE));
-void rb_load _((VALUE, int));
-void rb_load_protect _((VALUE, int, int*));
-NORETURN(void rb_jump_tag _((int)));
-int rb_provided _((const char*));
-void rb_provide _((const char*));
-VALUE rb_f_require _((VALUE, VALUE));
-VALUE rb_require_safe _((VALUE, int));
-void rb_obj_call_init _((VALUE, int, VALUE*));
-VALUE rb_class_new_instance _((int, VALUE*, VALUE));
-VALUE rb_block_proc _((void));
-VALUE rb_f_lambda _((void));
-VALUE rb_proc_new _((VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE));
-VALUE rb_protect _((VALUE (*)(VALUE), VALUE, int*));
-void rb_set_end_proc _((void (*)(VALUE), VALUE));
-void rb_mark_end_proc _((void));
-void rb_exec_end_proc _((void));
-void ruby_finalize _((void));
-NORETURN(void ruby_stop _((int)));
-int ruby_cleanup _((int));
-int ruby_exec _((void));
-void rb_gc_mark_threads _((void));
-void rb_thread_start_timer _((void));
-void rb_thread_stop_timer _((void));
-void rb_thread_schedule _((void));
-void rb_thread_wait_fd _((int));
-int rb_thread_fd_writable _((int));
-void rb_thread_fd_close _((int));
-int rb_thread_alone _((void));
-void rb_thread_polling _((void));
-void rb_thread_sleep _((int));
-void rb_thread_sleep_forever _((void));
-VALUE rb_thread_stop _((void));
-VALUE rb_thread_wakeup _((VALUE));
-VALUE rb_thread_wakeup_alive _((VALUE));
-VALUE rb_thread_run _((VALUE));
-VALUE rb_thread_kill _((VALUE));
-VALUE rb_thread_alive_p _((VALUE));
-VALUE rb_thread_create _((VALUE (*)(ANYARGS), void*));
-void rb_thread_interrupt _((void));
-void rb_thread_trap_eval _((VALUE, int, int));
-void rb_thread_signal_raise _((int));
-void rb_thread_signal_exit _((void));
-int rb_thread_select _((int, fd_set *, fd_set *, fd_set *, struct timeval *));
-void rb_thread_wait_for _((struct timeval));
-VALUE rb_thread_current _((void));
-VALUE rb_thread_main _((void));
-VALUE rb_thread_local_aref _((VALUE, ID));
-VALUE rb_thread_local_aset _((VALUE, ID, VALUE));
-void rb_thread_atfork _((void));
-VALUE rb_funcall_rescue __((VALUE, ID, int, ...));
-/* file.c */
-VALUE rb_file_s_expand_path _((int, VALUE *));
-VALUE rb_file_expand_path _((VALUE, VALUE));
-void rb_file_const _((const char*, VALUE));
-int rb_find_file_ext _((VALUE*, const char* const*));
-VALUE rb_find_file _((VALUE));
-char *rb_path_next _((const char *));
-char *rb_path_skip_prefix _((const char *));
-char *rb_path_last_separator _((const char *));
-char *rb_path_end _((const char *));
-VALUE rb_file_directory_p _((VALUE,VALUE));
-/* gc.c */
-NORETURN(void rb_memerror __((void)));
-int ruby_stack_check _((void));
-int ruby_stack_length _((VALUE**));
-int rb_during_gc _((void));
-char *rb_source_filename _((const char*));
-void rb_gc_mark_locations _((VALUE*, VALUE*));
-void rb_mark_tbl _((struct st_table*));
-void rb_mark_hash _((struct st_table*));
-void rb_gc_mark_maybe _((VALUE));
-void rb_gc_mark _((VALUE));
-void rb_gc_force_recycle _((VALUE));
-void rb_gc _((void));
-void rb_gc_copy_finalizer _((VALUE,VALUE));
-void rb_gc_finalize_deferred _((void));
-void rb_gc_call_finalizer_at_exit _((void));
-VALUE rb_gc_enable _((void));
-VALUE rb_gc_disable _((void));
-VALUE rb_gc_start _((void));
-/* hash.c */
-void st_foreach_safe _((struct st_table *, int (*)(ANYARGS), unsigned long));
-void rb_hash_foreach _((VALUE, int (*)(ANYARGS), VALUE));
-VALUE rb_hash _((VALUE));
-VALUE rb_hash_new _((void));
-VALUE rb_hash_freeze _((VALUE));
-VALUE rb_hash_aref _((VALUE, VALUE));
-VALUE rb_hash_aset _((VALUE, VALUE, VALUE));
-VALUE rb_hash_delete_if _((VALUE));
-VALUE rb_hash_delete _((VALUE,VALUE));
-int rb_path_check _((char*));
-int rb_env_path_tainted _((void));
-/* io.c */
-#define rb_defout rb_stdout
-RUBY_EXTERN VALUE rb_fs;
-RUBY_EXTERN VALUE rb_output_fs;
-RUBY_EXTERN VALUE rb_rs;
-RUBY_EXTERN VALUE rb_default_rs;
-RUBY_EXTERN VALUE rb_output_rs;
-VALUE rb_io_write _((VALUE, VALUE));
-VALUE rb_io_gets _((VALUE));
-VALUE rb_io_getc _((VALUE));
-VALUE rb_io_ungetc _((VALUE, VALUE));
-VALUE rb_io_close _((VALUE));
-VALUE rb_io_eof _((VALUE));
-VALUE rb_io_binmode _((VALUE));
-VALUE rb_io_addstr _((VALUE, VALUE));
-VALUE rb_io_printf _((int, VALUE*, VALUE));
-VALUE rb_io_print _((int, VALUE*, VALUE));
-VALUE rb_io_puts _((int, VALUE*, VALUE));
-VALUE rb_file_open _((const char*, const char*));
-VALUE rb_gets _((void));
-void rb_write_error _((const char*));
-void rb_write_error2 _((const char*, long));
-/* marshal.c */
-VALUE rb_marshal_dump _((VALUE, VALUE));
-VALUE rb_marshal_load _((VALUE));
-/* numeric.c */
-void rb_num_zerodiv _((void));
-VALUE rb_num_coerce_bin _((VALUE, VALUE));
-VALUE rb_num_coerce_cmp _((VALUE, VALUE));
-VALUE rb_num_coerce_relop _((VALUE, VALUE));
-VALUE rb_float_new _((double));
-VALUE rb_num2fix _((VALUE));
-VALUE rb_fix2str _((VALUE, int));
-VALUE rb_dbl_cmp _((double, double));
-/* object.c */
-int rb_eql _((VALUE, VALUE));
-VALUE rb_any_to_s _((VALUE));
-VALUE rb_inspect _((VALUE));
-VALUE rb_obj_is_instance_of _((VALUE, VALUE));
-VALUE rb_obj_is_kind_of _((VALUE, VALUE));
-VALUE rb_obj_alloc _((VALUE));
-VALUE rb_obj_clone _((VALUE));
-VALUE rb_obj_dup _((VALUE));
-VALUE rb_obj_init_copy _((VALUE,VALUE));
-VALUE rb_obj_taint _((VALUE));
-VALUE rb_obj_tainted _((VALUE));
-VALUE rb_obj_untaint _((VALUE));
-VALUE rb_obj_freeze _((VALUE));
-VALUE rb_obj_id _((VALUE));
-VALUE rb_obj_class _((VALUE));
-VALUE rb_class_real _((VALUE));
-VALUE rb_class_inherited_p _((VALUE, VALUE));
-VALUE rb_convert_type _((VALUE,int,const char*,const char*));
-VALUE rb_check_convert_type _((VALUE,int,const char*,const char*));
-VALUE rb_to_int _((VALUE));
-VALUE rb_Integer _((VALUE));
-VALUE rb_Float _((VALUE));
-VALUE rb_String _((VALUE));
-VALUE rb_Array _((VALUE));
-double rb_cstr_to_dbl _((const char*, int));
-double rb_str_to_dbl _((VALUE, int));
-/* parse.y */
-RUBY_EXTERN int   ruby_sourceline;
-RUBY_EXTERN char *ruby_sourcefile;
-int ruby_yyparse _((void));
-ID rb_id_attrset _((ID));
-void rb_parser_append_print _((void));
-void rb_parser_while_loop _((int, int));
-int ruby_parser_stack_on_heap _((void));
-void rb_gc_mark_parser _((void));
-int rb_is_const_id _((ID));
-int rb_is_instance_id _((ID));
-int rb_is_class_id _((ID));
-int rb_is_local_id _((ID));
-int rb_is_junk_id _((ID));
-int rb_symname_p _((const char*));
-int rb_sym_interned_p _((VALUE));
-VALUE rb_backref_get _((void));
-void rb_backref_set _((VALUE));
-VALUE rb_lastline_get _((void));
-void rb_lastline_set _((VALUE));
-VALUE rb_sym_all_symbols _((void));
-/* process.c */
-int rb_proc_exec _((const char*));
-VALUE rb_f_exec _((int,VALUE*));
-int rb_waitpid _((int,int*,int));
-void rb_syswait _((int));
-VALUE rb_proc_times _((VALUE));
-VALUE rb_detach_process _((int));
-/* range.c */
-VALUE rb_range_new _((VALUE, VALUE, int));
-VALUE rb_range_beg_len _((VALUE, long*, long*, long, int));
-VALUE rb_length_by_each _((VALUE));
-/* re.c */
-int rb_memcmp _((const void*,const void*,long));
-int rb_memcicmp _((const void*,const void*,long));
-long rb_memsearch _((const void*,long,const void*,long));
-VALUE rb_reg_nth_defined _((int, VALUE));
-VALUE rb_reg_nth_match _((int, VALUE));
-VALUE rb_reg_last_match _((VALUE));
-VALUE rb_reg_match_pre _((VALUE));
-VALUE rb_reg_match_post _((VALUE));
-VALUE rb_reg_match_last _((VALUE));
-VALUE rb_reg_new _((const char*, long, int));
-VALUE rb_reg_match _((VALUE, VALUE));
-VALUE rb_reg_match2 _((VALUE));
-int rb_reg_options _((VALUE));
-void rb_set_kcode _((const char*));
-const char* rb_get_kcode _((void));
-void rb_kcode_set_option _((VALUE));
-void rb_kcode_reset_option _((void));
-/* ruby.c */
-RUBY_EXTERN VALUE rb_argv;
-RUBY_EXTERN VALUE rb_argv0;
-void rb_load_file _((const char*));
-void ruby_script _((const char*));
-void ruby_prog_init _((void));
-void ruby_set_argv _((int, char**));
-void ruby_process_options _((int, char**));
-void ruby_load_script _((void));
-void ruby_init_loadpath _((void));
-void ruby_incpush _((const char*));
-/* signal.c */
-VALUE rb_f_kill _((int, VALUE*));
-void rb_gc_mark_trap_list _((void));
-#ifdef POSIX_SIGNAL
-#define posix_signal ruby_posix_signal
-void posix_signal _((int, RETSIGTYPE (*)(int)));
-#endif
-void rb_trap_exit _((void));
-void rb_trap_exec _((void));
-const char *ruby_signal_name _((int));
-void ruby_default_signal _((int));
-/* sprintf.c */
-VALUE rb_f_sprintf _((int, VALUE*));
-VALUE rb_str_format _((int, VALUE*, VALUE));
-/* string.c */
-VALUE rb_str_new _((const char*, long));
-VALUE rb_str_new2 _((const char*));
-VALUE rb_str_new3 _((VALUE));
-VALUE rb_str_new4 _((VALUE));
-VALUE rb_str_new5 _((VALUE, const char*, long));
-VALUE rb_tainted_str_new _((const char*, long));
-VALUE rb_tainted_str_new2 _((const char*));
-VALUE rb_str_buf_new _((long));
-VALUE rb_str_buf_new2 _((const char*));
-VALUE rb_str_buf_append _((VALUE, VALUE));
-VALUE rb_str_buf_cat _((VALUE, const char*, long));
-VALUE rb_str_buf_cat2 _((VALUE, const char*));
-VALUE rb_obj_as_string _((VALUE));
-VALUE rb_check_string_type _((VALUE));
-VALUE rb_str_dup _((VALUE));
-VALUE rb_str_locktmp _((VALUE));
-VALUE rb_str_unlocktmp _((VALUE));
-VALUE rb_str_dup_frozen _((VALUE));
-VALUE rb_str_plus _((VALUE, VALUE));
-VALUE rb_str_times _((VALUE, VALUE));
-VALUE rb_str_substr _((VALUE, long, long));
-void rb_str_modify _((VALUE));
-VALUE rb_str_freeze _((VALUE));
-VALUE rb_str_resize _((VALUE, long));
-VALUE rb_str_cat _((VALUE, const char*, long));
-VALUE rb_str_cat2 _((VALUE, const char*));
-VALUE rb_str_append _((VALUE, VALUE));
-VALUE rb_str_concat _((VALUE, VALUE));
-int rb_str_hash _((VALUE));
-int rb_str_cmp _((VALUE, VALUE));
-VALUE rb_str_upto _((VALUE, VALUE, int));
-void rb_str_update _((VALUE, long, long, VALUE));
-VALUE rb_str_inspect _((VALUE));
-VALUE rb_str_dump _((VALUE));
-VALUE rb_str_split _((VALUE, const char*));
-void rb_str_associate _((VALUE, VALUE));
-VALUE rb_str_associated _((VALUE));
-void rb_str_setter _((VALUE, ID, VALUE*));
-VALUE rb_str_intern _((VALUE));
-/* struct.c */
-VALUE rb_struct_new __((VALUE, ...));
-VALUE rb_struct_define __((const char*, ...));
-VALUE rb_struct_alloc _((VALUE, VALUE));
-VALUE rb_struct_aref _((VALUE, VALUE));
-VALUE rb_struct_aset _((VALUE, VALUE, VALUE));
-VALUE rb_struct_getmember _((VALUE, ID));
-VALUE rb_struct_iv_get _((VALUE, char*));
-VALUE rb_struct_s_members _((VALUE));
-VALUE rb_struct_members _((VALUE));
-/* time.c */
-VALUE rb_time_new _((time_t, time_t));
-/* variable.c */
-VALUE rb_mod_name _((VALUE));
-VALUE rb_class_path _((VALUE));
-void rb_set_class_path _((VALUE, VALUE, const char*));
-VALUE rb_path2class _((const char*));
-void rb_name_class _((VALUE, ID));
-VALUE rb_class_name _((VALUE));
-void rb_autoload _((VALUE, ID, const char*));
-VALUE rb_autoload_load _((VALUE, ID));
-VALUE rb_autoload_p _((VALUE, ID));
-void rb_gc_mark_global_tbl _((void));
-VALUE rb_f_trace_var _((int, VALUE*));
-VALUE rb_f_untrace_var _((int, VALUE*));
-VALUE rb_f_global_variables _((void));
-void rb_alias_variable _((ID, ID));
-struct st_table* rb_generic_ivar_table _((VALUE));
-void rb_copy_generic_ivar _((VALUE,VALUE));
-void rb_mark_generic_ivar _((VALUE));
-void rb_mark_generic_ivar_tbl _((void));
-void rb_free_generic_ivar _((VALUE));
-VALUE rb_ivar_get _((VALUE, ID));
-VALUE rb_ivar_set _((VALUE, ID, VALUE));
-VALUE rb_ivar_defined _((VALUE, ID));
-VALUE rb_iv_set _((VALUE, const char*, VALUE));
-VALUE rb_iv_get _((VALUE, const char*));
-VALUE rb_attr_get _((VALUE, ID));
-VALUE rb_obj_instance_variables _((VALUE));
-VALUE rb_obj_remove_instance_variable _((VALUE, VALUE));
-void *rb_mod_const_at _((VALUE, void*));
-void *rb_mod_const_of _((VALUE, void*));
-VALUE rb_const_list _((void*));
-VALUE rb_mod_constants _((VALUE));
-VALUE rb_mod_remove_const _((VALUE, VALUE));
-int rb_const_defined _((VALUE, ID));
-int rb_const_defined_at _((VALUE, ID));
-int rb_const_defined_from _((VALUE, ID));
-VALUE rb_const_get _((VALUE, ID));
-VALUE rb_const_get_at _((VALUE, ID));
-VALUE rb_const_get_from _((VALUE, ID));
-void rb_const_set _((VALUE, ID, VALUE));
-VALUE rb_mod_constants _((VALUE));
-VALUE rb_mod_const_missing _((VALUE,VALUE));
-VALUE rb_cvar_defined _((VALUE, ID));
-#define RB_CVAR_SET_4ARGS 1
-void rb_cvar_set _((VALUE, ID, VALUE, int));
-VALUE rb_cvar_get _((VALUE, ID));
-void rb_cv_set _((VALUE, const char*, VALUE));
-VALUE rb_cv_get _((VALUE, const char*));
-void rb_define_class_variable _((VALUE, const char*, VALUE));
-VALUE rb_mod_class_variables _((VALUE));
-VALUE rb_mod_remove_cvar _((VALUE, VALUE));
-/* version.c */
-void ruby_show_version _((void));
-void ruby_show_copyright _((void));
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/io/wait.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/io/wait.so
deleted file mode 100644
index bbb548d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/io/wait.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/missing.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/missing.h
deleted file mode 100644
index eaa9951..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/missing.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/************************************************
-
-  missing.h - prototype for *.c in ./missing, and
-  	      for missing timeval struct
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Sat May 11 23:46:03 JST 2002
-
-************************************************/
-
-#ifndef MISSING_H
-#define MISSING_H
-
-#if defined(HAVE_SYS_TIME_H)
-#  include <sys/time.h>
-#elif !defined(_WIN32)
-#  define time_t long
-struct timeval {
-    time_t tv_sec;	/* seconds */
-    time_t tv_usec;	/* microseconds */
-};
-#endif
-#if defined(HAVE_SYS_TYPES_H)
-#  include <sys/types.h>
-#endif
-
-#ifndef HAVE_ACOSH
-extern double acosh _((double));
-extern double asinh _((double));
-extern double atanh _((double));
-#endif
-
-#ifndef HAVE_CRYPT
-extern char *crypt _((char *, char *));
-#endif
-
-#ifndef HAVE_DUP2
-extern int dup2 _((int, int));
-#endif
-
-#ifndef HAVE_EACCESS
-extern int eaccess _((const char*, int));
-#endif
-
-#ifndef HAVE_FINITE
-extern int finite _((double));
-#endif
-
-#ifndef HAVE_FLOCK
-extern int flock _((int, int));
-#endif
-
-/*
-#ifndef HAVE_FREXP
-extern double frexp _((double, int *));
-#endif
-*/
-
-#ifndef HAVE_HYPOT
-extern double hypot _((double, double));
-#endif
-
-#ifndef HAVE_ERF
-extern double erf _((double));
-extern double erfc _((double));
-#endif
-
-#ifndef HAVE_ISINF
-# if defined(HAVE_FINITE) && defined(HAVE_ISNAN)
-# define isinf(x) (!finite(x) && !isnan(x))
-# else
-extern int isinf _((double));
-# endif
-#endif
-
-#ifndef HAVE_ISNAN
-extern int isnan _((double));
-#endif
-
-/*
-#ifndef HAVE_MEMCMP
-extern int memcmp _((char *, char *, int));
-#endif
-*/
-
-#ifndef HAVE_MEMMOVE
-extern void *memmove _((void *, void *, int));
-#endif
-
-/*
-#ifndef HAVE_MODF
-extern double modf _((double, double *));
-#endif
-*/
-
-#ifndef HAVE_STRCASECMP
-extern int strcasecmp _((char *, char *));
-#endif
-
-#ifndef HAVE_STRNCASECMP
-extern int strncasecmp _((char *, char *, int));
-#endif
-
-#ifndef HAVE_STRCHR
-extern char *strchr _((char *, int));
-extern char *strrchr _((char *, int));
-#endif
-
-#ifndef HAVE_STRERROR
-extern char *strerror _((int));
-#endif
-
-#ifndef HAVE_STRFTIME
-extern size_t strftime _((char *, size_t, const char *, const struct tm *));
-#endif
-
-#ifndef HAVE_STRSTR
-extern char *strstr _((char *, char *));
-#endif
-
-/*
-#ifndef HAVE_STRTOL
-extern long strtol _((char *, char **, int));
-#endif
-*/
-
-#ifndef HAVE_STRTOUL
-extern unsigned long strtoul _((char *, char **, int));
-#endif
-
-#ifndef HAVE_VSNPRINTF
-# ifdef HAVE_STDARG_PROTOTYPES
-#  include <stdarg.h>
-# else
-#  include <varargs.h>
-# endif
-extern int snprintf __((char *, size_t n, char const *, ...));
-extern int vsnprintf _((char *, size_t n, char const *, va_list));
-#endif
-
-#endif /* MISSING_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/nkf.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/nkf.so
deleted file mode 100644
index ec7c14c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/nkf.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/node.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/node.h
deleted file mode 100644
index ae7b3e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/node.h
+++ /dev/null
@@ -1,488 +0,0 @@
-/**********************************************************************
-
-  node.h -
-
-  $Author: shyouhei $
-  $Date: 2008-07-07 15:01:50 +0900 (Mon, 07 Jul 2008) $
-  created at: Fri May 28 15:14:02 JST 1993
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef NODE_H
-#define NODE_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-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_RESBODY,
-    NODE_ENSURE,
-    NODE_AND,
-    NODE_OR,
-    NODE_NOT,
-    NODE_MASGN,
-    NODE_LASGN,
-    NODE_DASGN,
-    NODE_DASGN_CURR,
-    NODE_GASGN,
-    NODE_IASGN,
-    NODE_CDECL,
-    NODE_CVASGN,
-    NODE_CVDECL,
-    NODE_OP_ASGN1,
-    NODE_OP_ASGN2,
-    NODE_OP_ASGN_AND,
-    NODE_OP_ASGN_OR,
-    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_LIT,
-    NODE_STR,
-    NODE_DSTR,
-    NODE_XSTR,
-    NODE_DXSTR,
-    NODE_EVSTR,
-    NODE_DREGX,
-    NODE_DREGX_ONCE,
-    NODE_ARGS,
-    NODE_ARGSCAT,
-    NODE_ARGSPUSH,
-    NODE_SPLAT,
-    NODE_TO_ARY,
-    NODE_SVALUE,
-    NODE_BLOCK_ARG,
-    NODE_BLOCK_PASS,
-    NODE_DEFN,
-    NODE_DEFS,
-    NODE_ALIAS,
-    NODE_VALIAS,
-    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_LAST
-};
-
-typedef struct RNode {
-    unsigned long flags;
-    char *nd_file;
-    union {
-	struct RNode *node;
-	ID id;
-	VALUE value;
-	VALUE (*cfunc)(ANYARGS);
-	ID *tbl;
-    } u1;
-    union {
-	struct RNode *node;
-	ID id;
-	long argc;
-	VALUE value;
-    } u2;
-    union {
-	struct RNode *node;
-	ID id;
-	long state;
-	struct global_entry *entry;
-	long cnt;
-	VALUE value;
-    } u3;
-} NODE;
-
-extern NODE *ruby_cref;
-extern NODE *ruby_top_cref;
-
-#define RNODE(obj)  (R_CAST(RNode)(obj))
-
-#define nd_type(n) ((int)(((RNODE(n))->flags>>FL_USHIFT)&0xff))
-#define nd_set_type(n,t) \
-    RNODE(n)->flags=((RNODE(n)->flags&~FL_UMASK)|(((t)<<FL_USHIFT)&FL_UMASK))
-
-#define NODE_LSHIFT (FL_USHIFT+8)
-#define NODE_LMASK  (((long)1<<(sizeof(NODE*)*CHAR_BIT-NODE_LSHIFT))-1)
-#define nd_line(n) ((unsigned int)(((RNODE(n))->flags>>NODE_LSHIFT)&NODE_LMASK))
-#define nd_set_line(n,l) \
-    RNODE(n)->flags=((RNODE(n)->flags&~(-1<<NODE_LSHIFT))|(((l)&NODE_LMASK)<<NODE_LSHIFT))
-
-#define nd_head  u1.node
-#define nd_alen  u2.argc
-#define nd_next  u3.node
-
-#define nd_cond  u1.node
-#define nd_body  u2.node
-#define nd_else  u3.node
-
-#define nd_orig  u3.value
-
-#define nd_resq  u2.node
-#define nd_ensr  u3.node
-
-#define nd_1st   u1.node
-#define nd_2nd   u2.node
-
-#define nd_stts  u1.node
-
-#define nd_entry u3.entry
-#define nd_vid   u1.id
-#define nd_cflag u2.id
-#define nd_cval  u3.value
-
-#define nd_cnt   u3.cnt
-#define nd_tbl   u1.tbl
-
-#define nd_var   u1.node
-#define nd_ibdy  u2.node
-#define nd_iter  u3.node
-
-#define nd_value u2.node
-#define nd_aid   u3.id
-
-#define nd_lit   u1.value
-
-#define nd_frml  u1.node
-#define nd_rest  u2.node
-#define nd_opt   u1.node
-
-#define nd_recv  u1.node
-#define nd_mid   u2.id
-#define nd_args  u3.node
-
-#define nd_noex  u1.id
-#define nd_defn  u3.node
-
-#define nd_cfnc  u1.cfunc
-#define nd_argc  u2.argc
-
-#define nd_cpath u1.node
-#define nd_super u3.node
-
-#define nd_modl  u1.id
-#define nd_clss  u1.value
-
-#define nd_beg   u1.node
-#define nd_end   u2.node
-#define nd_state u3.state
-#define nd_rval  u2.value
-
-#define nd_nth   u2.argc
-
-#define nd_tag   u1.id
-#define nd_tval  u2.value
-
-#define NEW_NODE(t,a0,a1,a2) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2))
-
-#define NEW_METHOD(n,x) NEW_NODE(NODE_METHOD,x,n,0)
-#define NEW_FBODY(n,i,o) NEW_NODE(NODE_FBODY,n,i,o)
-#define NEW_DEFN(i,a,d,p) NEW_NODE(NODE_DEFN,p,i,NEW_RFUNC(a,d))
-#define NEW_DEFS(r,i,a,d) NEW_NODE(NODE_DEFS,r,i,NEW_RFUNC(a,d))
-#define NEW_CFUNC(f,c) NEW_NODE(NODE_CFUNC,f,c,0)
-#define NEW_IFUNC(f,c) NEW_NODE(NODE_IFUNC,f,c,0)
-#define NEW_RFUNC(b1,b2) NEW_SCOPE(block_append(b1,b2))
-#define NEW_SCOPE(b) NEW_NODE(NODE_SCOPE,local_tbl(),0,(b))
-#define NEW_BLOCK(a) NEW_NODE(NODE_BLOCK,a,0,0)
-#define NEW_IF(c,t,e) NEW_NODE(NODE_IF,c,t,e)
-#define NEW_UNLESS(c,t,e) NEW_IF(c,e,t)
-#define NEW_CASE(h,b) NEW_NODE(NODE_CASE,h,b,0)
-#define NEW_WHEN(c,t,e) NEW_NODE(NODE_WHEN,c,t,e)
-#define NEW_OPT_N(b) NEW_NODE(NODE_OPT_N,0,b,0)
-#define NEW_WHILE(c,b,n) NEW_NODE(NODE_WHILE,c,b,n)
-#define NEW_UNTIL(c,b,n) NEW_NODE(NODE_UNTIL,c,b,n)
-#define NEW_FOR(v,i,b) NEW_NODE(NODE_FOR,v,b,i)
-#define NEW_ITER(v,i,b) NEW_NODE(NODE_ITER,v,b,i)
-#define NEW_BREAK(s) NEW_NODE(NODE_BREAK,s,0,0)
-#define NEW_NEXT(s) NEW_NODE(NODE_NEXT,s,0,0)
-#define NEW_REDO() NEW_NODE(NODE_REDO,0,0,0)
-#define NEW_RETRY() NEW_NODE(NODE_RETRY,0,0,0)
-#define NEW_BEGIN(b) NEW_NODE(NODE_BEGIN,0,b,0)
-#define NEW_RESCUE(b,res,e) NEW_NODE(NODE_RESCUE,b,res,e)
-#define NEW_RESBODY(a,ex,n) NEW_NODE(NODE_RESBODY,n,ex,a)
-#define NEW_ENSURE(b,en) NEW_NODE(NODE_ENSURE,b,0,en)
-#define NEW_RETURN(s) NEW_NODE(NODE_RETURN,s,0,0)
-#define NEW_YIELD(a,s) NEW_NODE(NODE_YIELD,a,0,s)
-#define NEW_LIST(a)  NEW_ARRAY(a)
-#define NEW_ARRAY(a) NEW_NODE(NODE_ARRAY,a,1,0)
-#define NEW_ZARRAY() NEW_NODE(NODE_ZARRAY,0,0,0)
-#define NEW_HASH(a)  NEW_NODE(NODE_HASH,a,0,0)
-#define NEW_NOT(a)   NEW_NODE(NODE_NOT,0,a,0)
-#define NEW_MASGN(l,r)   NEW_NODE(NODE_MASGN,l,0,r)
-#define NEW_GASGN(v,val) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v))
-#define NEW_LASGN(v,val) NEW_NODE(NODE_LASGN,v,val,local_cnt(v))
-#define NEW_DASGN(v,val) NEW_NODE(NODE_DASGN,v,val,0)
-#define NEW_DASGN_CURR(v,val) NEW_NODE(NODE_DASGN_CURR,v,val,0)
-#define NEW_IASGN(v,val) NEW_NODE(NODE_IASGN,v,val,0)
-#define NEW_CDECL(v,val,path) NEW_NODE(NODE_CDECL,v,val,path)
-#define NEW_CVASGN(v,val) NEW_NODE(NODE_CVASGN,v,val,0)
-#define NEW_CVDECL(v,val) NEW_NODE(NODE_CVDECL,v,val,0)
-#define NEW_OP_ASGN1(p,id,a) NEW_NODE(NODE_OP_ASGN1,p,id,a)
-#define NEW_OP_ASGN2(r,i,o,val) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o))
-#define NEW_OP_ASGN22(i,o) NEW_NODE(NODE_OP_ASGN2,i,o,rb_id_attrset(i))
-#define NEW_OP_ASGN_OR(i,val) NEW_NODE(NODE_OP_ASGN_OR,i,val,0)
-#define NEW_OP_ASGN_AND(i,val) NEW_NODE(NODE_OP_ASGN_AND,i,val,0)
-#define NEW_GVAR(v) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v))
-#define NEW_LVAR(v) NEW_NODE(NODE_LVAR,v,0,local_cnt(v))
-#define NEW_DVAR(v) NEW_NODE(NODE_DVAR,v,0,0)
-#define NEW_IVAR(v) NEW_NODE(NODE_IVAR,v,0,0)
-#define NEW_CONST(v) NEW_NODE(NODE_CONST,v,0,0)
-#define NEW_CVAR(v) NEW_NODE(NODE_CVAR,v,0,0)
-#define NEW_NTH_REF(n)  NEW_NODE(NODE_NTH_REF,0,n,local_cnt('~'))
-#define NEW_BACK_REF(n) NEW_NODE(NODE_BACK_REF,0,n,local_cnt('~'))
-#define NEW_MATCH(c) NEW_NODE(NODE_MATCH,c,0,0)
-#define NEW_MATCH2(n1,n2) NEW_NODE(NODE_MATCH2,n1,n2,0)
-#define NEW_MATCH3(r,n2) NEW_NODE(NODE_MATCH3,r,n2,0)
-#define NEW_LIT(l) NEW_NODE(NODE_LIT,l,0,0)
-#define NEW_STR(s) NEW_NODE(NODE_STR,s,0,0)
-#define NEW_DSTR(s) NEW_NODE(NODE_DSTR,s,1,0)
-#define NEW_XSTR(s) NEW_NODE(NODE_XSTR,s,0,0)
-#define NEW_DXSTR(s) NEW_NODE(NODE_DXSTR,s,0,0)
-#define NEW_DSYM(s) NEW_NODE(NODE_DSYM,s,0,0)
-#define NEW_EVSTR(n) NEW_NODE(NODE_EVSTR,0,(n),0)
-#define NEW_CALL(r,m,a) NEW_NODE(NODE_CALL,r,m,a)
-#define NEW_FCALL(m,a) NEW_NODE(NODE_FCALL,0,m,a)
-#define NEW_VCALL(m) NEW_NODE(NODE_VCALL,0,m,0)
-#define NEW_SUPER(a) NEW_NODE(NODE_SUPER,0,0,a)
-#define NEW_ZSUPER() NEW_NODE(NODE_ZSUPER,0,0,0)
-#define NEW_ARGS(f,o,r) NEW_NODE(NODE_ARGS,o,r,f)
-#define NEW_ARGSCAT(a,b) NEW_NODE(NODE_ARGSCAT,a,b,0)
-#define NEW_ARGSPUSH(a,b) NEW_NODE(NODE_ARGSPUSH,a,b,0)
-#define NEW_SPLAT(a) NEW_NODE(NODE_SPLAT,a,0,0)
-#define NEW_TO_ARY(a) NEW_NODE(NODE_TO_ARY,a,0,0)
-#define NEW_SVALUE(a) NEW_NODE(NODE_SVALUE,a,0,0)
-#define NEW_BLOCK_ARG(v) NEW_NODE(NODE_BLOCK_ARG,v,0,local_cnt(v))
-#define NEW_BLOCK_PASS(b) NEW_NODE(NODE_BLOCK_PASS,0,b,0)
-#define NEW_ALIAS(n,o) NEW_NODE(NODE_ALIAS,n,o,0)
-#define NEW_VALIAS(n,o) NEW_NODE(NODE_VALIAS,n,o,0)
-#define NEW_UNDEF(i) NEW_NODE(NODE_UNDEF,0,i,0)
-#define NEW_CLASS(n,b,s) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(b),(s))
-#define NEW_SCLASS(r,b) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(b),0)
-#define NEW_MODULE(n,b) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(b),0)
-#define NEW_COLON2(c,i) NEW_NODE(NODE_COLON2,c,i,0)
-#define NEW_COLON3(i) NEW_NODE(NODE_COLON3,0,i,0)
-#define NEW_CREF(c) (NEW_NODE(NODE_CREF,0,0,c))
-#define NEW_DOT2(b,e) NEW_NODE(NODE_DOT2,b,e,0)
-#define NEW_DOT3(b,e) NEW_NODE(NODE_DOT3,b,e,0)
-#define NEW_ATTRSET(a) NEW_NODE(NODE_ATTRSET,a,0,0)
-#define NEW_SELF() NEW_NODE(NODE_SELF,0,0,0)
-#define NEW_NIL() NEW_NODE(NODE_NIL,0,0,0)
-#define NEW_TRUE() NEW_NODE(NODE_TRUE,0,0,0)
-#define NEW_FALSE() NEW_NODE(NODE_FALSE,0,0,0)
-#define NEW_DEFINED(e) NEW_NODE(NODE_DEFINED,e,0,0)
-#define NEW_NEWLINE(n) NEW_NODE(NODE_NEWLINE,0,0,n)
-#define NEW_PREEXE(b) NEW_SCOPE(b)
-#define NEW_POSTEXE() NEW_NODE(NODE_POSTEXE,0,0,0)
-#define NEW_DMETHOD(b) NEW_NODE(NODE_DMETHOD,0,0,b)
-#define NEW_BMETHOD(b) NEW_NODE(NODE_BMETHOD,0,0,b)
-#define NEW_ATTRASGN(r,m,a) NEW_NODE(NODE_ATTRASGN,r,m,a)
-
-#define NOEX_PUBLIC    0
-#define NOEX_NOSUPER   1
-#define NOEX_PRIVATE   2
-#define NOEX_PROTECTED 4
-#define NOEX_MASK      6
-
-#define NOEX_UNDEF     NOEX_NOSUPER
-
-NODE *rb_compile_cstr _((const char*, const char*, int, int));
-NODE *rb_compile_string _((const char*, VALUE, int));
-NODE *rb_compile_file _((const char*, VALUE, int));
-
-void rb_add_method _((VALUE, ID, NODE *, int));
-NODE *rb_node_newnode _((enum node_type,VALUE,VALUE,VALUE));
-
-NODE* rb_method_node _((VALUE klass, ID id));
-
-struct global_entry *rb_global_entry _((ID));
-VALUE rb_gvar_get _((struct global_entry *));
-VALUE rb_gvar_set _((struct global_entry *, VALUE));
-VALUE rb_gvar_defined _((struct global_entry *));
-
-typedef unsigned int rb_event_t;
-
-#define RUBY_EVENT_NONE     0x00
-#define RUBY_EVENT_LINE     0x01
-#define RUBY_EVENT_CLASS    0x02
-#define RUBY_EVENT_END      0x04
-#define RUBY_EVENT_CALL     0x08
-#define RUBY_EVENT_RETURN   0x10
-#define RUBY_EVENT_C_CALL   0x20
-#define RUBY_EVENT_C_RETURN 0x40
-#define RUBY_EVENT_RAISE    0x80
-#define RUBY_EVENT_ALL      0xff
-
-typedef void (*rb_event_hook_func_t) _((rb_event_t,NODE*,VALUE,ID,VALUE));
-NODE *rb_copy_node_scope _((NODE *, NODE *));
-void rb_add_event_hook _((rb_event_hook_func_t,rb_event_t));
-int rb_remove_event_hook _((rb_event_hook_func_t));
-
-#if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
-#include <ucontext.h>
-#define USE_CONTEXT
-#endif
-#include <setjmp.h>
-#include "st.h"
-
-#ifdef USE_CONTEXT
-typedef struct {
-    ucontext_t context;
-    volatile int status;
-} rb_jmpbuf_t[1];
-#else
-typedef jmp_buf rb_jmpbuf_t;
-#endif
-
-enum rb_thread_status {
-    THREAD_TO_KILL,
-    THREAD_RUNNABLE,
-    THREAD_STOPPED,
-    THREAD_KILLED,
-};
-
-typedef struct rb_thread *rb_thread_t;
-
-struct rb_thread {
-    rb_thread_t next, prev;
-    rb_jmpbuf_t context;
-#if (defined _WIN32 && !defined _WIN32_WCE) || defined __CYGWIN__
-    unsigned long win32_exception_list;
-#endif
-
-    VALUE result;
-
-    long   stk_len;
-    long   stk_max;
-    VALUE *stk_ptr;
-    VALUE *stk_pos;
-#ifdef __ia64
-    long   bstr_len;
-    long   bstr_max;
-    VALUE *bstr_ptr;
-    VALUE *bstr_pos;
-#endif
-
-    struct FRAME *frame;
-    struct SCOPE *scope;
-    struct RVarmap *dyna_vars;
-    struct BLOCK *block;
-    struct iter *iter;
-    struct tag *tag;
-    VALUE klass;
-    VALUE wrapper;
-    NODE *cref;
-
-    int flags;		/* misc. states (vmode/rb_trap_immediate/raised) */
-
-    NODE *node;
-
-    int tracing;
-    VALUE errinfo;
-    VALUE last_status;
-    VALUE last_line;
-    VALUE last_match;
-
-    int safe;
-
-    enum rb_thread_status status;
-    int wait_for;
-    int fd;
-    fd_set readfds;
-    fd_set writefds;
-    fd_set exceptfds;
-    int select_value;
-    double delay;
-    rb_thread_t join;
-
-    int abort;
-    int priority;
-    VALUE thgroup;
-
-    struct st_table *locals;
-
-    VALUE thread;
-
-    VALUE sandbox;
-};
-
-extern VALUE (*ruby_sandbox_save)_((rb_thread_t));
-extern VALUE (*ruby_sandbox_restore)_((rb_thread_t));
-extern rb_thread_t rb_curr_thread;
-extern rb_thread_t rb_main_thread;
-
-enum {
-    RAISED_EXCEPTION     = 0x1000,
-    RAISED_STACKOVERFLOW = 0x2000,
-    RAISED_NOMEMORY      = 0x4000,
-    RAISED_MASK          = 0xf000
-};
-int rb_thread_set_raised(rb_thread_t th);
-int rb_thread_reset_raised(rb_thread_t th);
-#define rb_thread_raised_set(th, f)   ((th)->flags |= (f))
-#define rb_thread_raised_reset(th, f) ((th)->flags &= ~(f))
-#define rb_thread_raised_p(th, f)     (((th)->flags & (f)) != 0)
-#define rb_thread_raised_clear(th)    ((th)->flags = 0)
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/openssl.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/openssl.so
deleted file mode 100644
index 2d0e46e..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/openssl.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/racc/cparse.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/racc/cparse.so
deleted file mode 100644
index a4053fc..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/racc/cparse.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rbconfig.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rbconfig.rb
deleted file mode 100644
index c68602e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rbconfig.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-
-# This file was created by mkconfig.rb when ruby was built.  Any
-# changes made to this file will be lost the next time ruby is built.
-
-module Config
-  RUBY_VERSION == "1.8.6" or
-    raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
-
-  TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mswin32")
-  DESTDIR = TOPDIR && TOPDIR[/\A[a-z]:/i] || '' unless defined? DESTDIR
-  CONFIG = {}
-  CONFIG["DESTDIR"] = DESTDIR
-  CONFIG["MAJOR"] = "1"
-  CONFIG["MINOR"] = "8"
-  CONFIG["TEENY"] = "6"
-  CONFIG["PATCHLEVEL"] = "287"
-  CONFIG["prefix"] = (TOPDIR || DESTDIR + "")
-  CONFIG["EXEEXT"] = ".exe"
-  CONFIG["ruby_install_name"] = "ruby"
-  CONFIG["RUBY_INSTALL_NAME"] = "ruby"
-  CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
-  CONFIG["SHELL"] = "$(COMSPEC)"
-  CONFIG["BUILD_FILE_SEPARATOR"] = "\\"
-  CONFIG["PATH_SEPARATOR"] = ";"
-  CONFIG["CFLAGS"] = "-MD -Zi -O2b2xg- -G6"
-  CONFIG["CPPFLAGS"] = ""
-  CONFIG["CXXFLAGS"] = ""
-  CONFIG["FFLAGS"] = ""
-  CONFIG["LDFLAGS"] = ""
-  CONFIG["LIBS"] = "oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib "
-  CONFIG["exec_prefix"] = "$(prefix)"
-  CONFIG["bindir"] = "$(exec_prefix)/bin"
-  CONFIG["sbindir"] = "$(exec_prefix)/sbin"
-  CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
-  CONFIG["datadir"] = "$(prefix)/share"
-  CONFIG["sysconfdir"] = "$(prefix)/etc"
-  CONFIG["sharedstatedir"] = "$(DESTDIR)/etc"
-  CONFIG["localstatedir"] = "$(DESTDIR)/var"
-  CONFIG["libdir"] = "$(exec_prefix)/lib"
-  CONFIG["includedir"] = "$(prefix)/include"
-  CONFIG["oldincludedir"] = "/usr/include"
-  CONFIG["infodir"] = "$(prefix)/info"
-  CONFIG["mandir"] = "$(prefix)/man"
-  CONFIG["build"] = "i686-pc-mswin32"
-  CONFIG["build_alias"] = "i686-mswin32"
-  CONFIG["build_cpu"] = "i686"
-  CONFIG["build_vendor"] = "pc"
-  CONFIG["build_os"] = "mswin32"
-  CONFIG["host"] = "i686-pc-mswin32"
-  CONFIG["host_alias"] = "i686-mswin32"
-  CONFIG["host_cpu"] = "i686"
-  CONFIG["host_vendor"] = "pc"
-  CONFIG["host_os"] = "mswin32"
-  CONFIG["target"] = "i386-pc-mswin32"
-  CONFIG["target_alias"] = "i386-mswin32"
-  CONFIG["target_cpu"] = "i386"
-  CONFIG["target_vendor"] = "pc"
-  CONFIG["target_os"] = "mswin32"
-  CONFIG["CC"] = "cl -nologo"
-  CONFIG["CPP"] = "cl -nologo -E"
-  CONFIG["YACC"] = "byacc"
-  CONFIG["RANLIB"] = ""
-  CONFIG["AR"] = "lib -nologo"
-  CONFIG["ARFLAGS"] = "-machine:x86 -out:"
-  CONFIG["LN_S"] = ""
-  CONFIG["SET_MAKE"] = ""
-  CONFIG["CP"] = "copy > nul"
-  CONFIG["ALLOCA"] = ""
-  CONFIG["DEFAULT_KCODE"] = ""
-  CONFIG["OBJEXT"] = "obj"
-  CONFIG["XCFLAGS"] = "-DRUBY_EXPORT -I. -IC:/develop/win/ruby/ruby-1.8.6-p287 -IC:/develop/win/ruby/ruby-1.8.6-p287/missing"
-  CONFIG["XLDFLAGS"] = "-stack:0x2000000"
-  CONFIG["DLDFLAGS"] = "-link -incremental:no -debug -opt:ref -opt:icf -dll $(LIBPATH) -def:$(DEFFILE) -implib:$(*F:.so=)-$(arch).lib -pdb:$(*F:.so=)-$(arch).pdb"
-  CONFIG["ARCH_FLAG"] = ""
-  CONFIG["STATIC"] = ""
-  CONFIG["CCDLFLAGS"] = ""
-  CONFIG["LDSHARED"] = "cl -nologo -LD"
-  CONFIG["DLEXT"] = "so"
-  CONFIG["DLEXT2"] = "dll"
-  CONFIG["LIBEXT"] = "lib"
-  CONFIG["STRIP"] = ""
-  CONFIG["EXTSTATIC"] = ""
-  CONFIG["setup"] = "Setup"
-  CONFIG["MINIRUBY"] = ".\\miniruby.exe "
-  CONFIG["PREP"] = "miniruby.exe"
-  CONFIG["RUNRUBY"] = ".\\ruby.exe \"C:/develop/win/ruby/ruby-1.8.6-p287/runruby.rb\" --extout=\".ext\" --"
-  CONFIG["EXTOUT"] = ".ext"
-  CONFIG["ARCHFILE"] = ""
-  CONFIG["RDOCTARGET"] = "install-nodoc"
-  CONFIG["LIBRUBY_LDSHARED"] = "cl -nologo -LD"
-  CONFIG["LIBRUBY_DLDFLAGS"] = " -def:msvcrt-ruby18.def"
-  CONFIG["rubyw_install_name"] = "rubyw"
-  CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
-  CONFIG["LIBRUBY_A"] = "$(RUBY_SO_NAME)-static.lib"
-  CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
-  CONFIG["LIBRUBY_ALIASES"] = ""
-  CONFIG["LIBRUBY"] = "$(RUBY_SO_NAME).lib"
-  CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
-  CONFIG["LIBRUBYARG_STATIC"] = "$(LIBRUBY_A)"
-  CONFIG["LIBRUBYARG_SHARED"] = "$(LIBRUBY)"
-  CONFIG["SOLIBS"] = ""
-  CONFIG["DLDLIBS"] = ""
-  CONFIG["ENABLE_SHARED"] = "yes"
-  CONFIG["OUTFLAG"] = "-Fe"
-  CONFIG["CPPOUTFILE"] = "-P"
-  CONFIG["LIBPATHFLAG"] = " -libpath:\"%s\""
-  CONFIG["RPATHFLAG"] = ""
-  CONFIG["LIBARG"] = "%s.lib"
-  CONFIG["LINK_SO"] = "$(LDSHARED) -Fe$(@) $(OBJS) $(LIBS) $(LOCAL_LIBS) $(DLDFLAGS)"
-  CONFIG["COMPILE_C"] = "$(CC) $(INCFLAGS) $(CFLAGS) $(CPPFLAGS) -c -Tc$(<:\\=/)"
-  CONFIG["COMPILE_CXX"] = "$(CXX) $(INCFLAGS) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\\=/)"
-  CONFIG["COMPILE_RULES"] = "{$(srcdir)}.%s{}.%s: {$(topdir)}.%s{}.%s: {$(hdrdir)}.%s{}.%s: .%s.%s:"
-  CONFIG["RULE_SUBST"] = "{.;$(srcdir);$(topdir);$(hdrdir)}%s"
-  CONFIG["TRY_LINK"] = "$(CC) -Feconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS) $(CFLAGS) $(src) $(LOCAL_LIBS) $(LIBS) -link $(LDFLAGS) $(LIBPATH) $(XLDFLAGS)"
-  CONFIG["COMMON_LIBS"] = "m"
-  CONFIG["COMMON_MACROS"] = "WIN32_LEAN_AND_MEAN WIN32"
-  CONFIG["COMMON_HEADERS"] = "winsock2.h windows.h"
-  CONFIG["DISTCLEANFILES"] = "vc*.pdb"
-  CONFIG["EXPORT_PREFIX"] = " "
-  CONFIG["arch"] = "i386-mswin32"
-  CONFIG["sitearch"] = "i386-msvcrt"
-  CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
-  CONFIG["configure_args"] = "--with-make-prog=nmake --enable-shared --with-winsock2"
-  CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
-  CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
-  CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
-  CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
-  CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
-  CONFIG["topdir"] = File.dirname(__FILE__)
-  MAKEFILE_CONFIG = {}
-  CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
-  def Config::expand(val, config = CONFIG)
-    val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
-      if !(v = $1 || $2)
-	'$'
-      elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
-	pat, sub = $1, $2
-	config[v] = false
-	Config::expand(key, config)
-	config[v] = key
-	key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
-	key
-      else
-	var
-      end
-    end
-    val
-  end
-  CONFIG.each_value do |val|
-    Config::expand(val)
-  end
-end
-RbConfig = Config # compatibility for ruby-1.9
-CROSS_COMPILING = nil unless defined? CROSS_COMPILING
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/re.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/re.h
deleted file mode 100644
index dba7eeb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/re.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**********************************************************************
-
-  re.h -
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Thu Sep 30 14:18:32 JST 1993
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef RE_H
-#define RE_H
-
-#include <sys/types.h>
-#include <stdio.h>
-
-#include "regex.h"
-
-typedef struct re_pattern_buffer Regexp;
-
-struct RMatch {
-    struct RBasic basic;
-    VALUE str;
-    struct re_registers *regs;
-};
-
-#define RMATCH(obj)  (R_CAST(RMatch)(obj))
-
-VALUE rb_reg_regcomp _((VALUE));
-long rb_reg_search _((VALUE, VALUE, long, long));
-VALUE rb_reg_regsub _((VALUE, VALUE, struct re_registers *));
-long rb_reg_adjust_startpos _((VALUE, VALUE, long, long));
-void rb_match_busy _((VALUE));
-VALUE rb_reg_quote _((VALUE));
-
-RUBY_EXTERN int ruby_ignorecase;
-
-int rb_reg_mbclen2 _((unsigned int, VALUE));
-#define mbclen2(c,re) rb_reg_mbclen2((c),(re))
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/readline.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/readline.so
deleted file mode 100644
index 5fcb163..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/readline.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/regex.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/regex.h
deleted file mode 100644
index 88868e2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/regex.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/* Definitions for data structures and routines for the regular
-   expression library, version 0.12.
-   Copyright (C) 1985,89,90,91,92,93,95,96,97,98 Free Software Foundation, Inc.
-
-   This file is part of the GNU C Library.  Its master source is NOT part of
-   the C library, however.  The master source lives in /gd/gnu/lib.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C 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
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file LGPL.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto)
-   Last change: May 21, 1993 by t^2  */
-/* modified for Ruby by matz at netlab.co.jp */
-
-#ifndef REGEX_H
-#define REGEX_H
-
-/* symbol mangling for ruby */
-#ifdef RUBY
-# define re_adjust_startpos ruby_re_adjust_startpos
-# define re_compile_fastmap ruby_re_compile_fastmap
-# define re_compile_pattern ruby_re_compile_pattern
-# define re_copy_registers ruby_re_copy_registers
-# define re_free_pattern ruby_re_free_pattern
-# define re_free_registers ruby_re_free_registers
-# define re_match ruby_re_match
-# define re_mbcinit ruby_re_mbcinit
-# define re_search ruby_re_search
-# define re_set_casetable ruby_re_set_casetable
-# define register_info_type ruby_register_info_type
-#endif
-
-#include <stddef.h>
-
-/* Define number of parens for which we record the beginnings and ends.
-   This affects how much space the `struct re_registers' type takes up.  */
-#ifndef RE_NREGS
-#define RE_NREGS 10
-#endif
-
-#define BYTEWIDTH 8
-
-#define RE_REG_MAX ((1<<BYTEWIDTH)-1)
-
-/* Maximum number of duplicates an interval can allow.  */
-#ifndef RE_DUP_MAX
-#define RE_DUP_MAX  ((1 << 15) - 1) 
-#endif
-
-
-/* If this bit is set, then character classes are supported; they are:
-     [:alpha:],	[:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
-     [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
-   If not set, then character classes are not supported.  */
-#define RE_CHAR_CLASSES (1L << 9)
-
-/* match will be done case insensetively */
-#define RE_OPTION_IGNORECASE (1L)
-/* perl-style extended pattern available */
-#define RE_OPTION_EXTENDED   (RE_OPTION_IGNORECASE<<1)
-/* newline will be included for . */
-#define RE_OPTION_MULTILINE  (RE_OPTION_EXTENDED<<1)
-/* ^ and $ ignore newline */
-#define RE_OPTION_SINGLELINE (RE_OPTION_MULTILINE<<1)
-/* search for longest match, in accord with POSIX regexp */
-#define RE_OPTION_LONGEST    (RE_OPTION_SINGLELINE<<1)
-
-#define RE_MAY_IGNORECASE    (RE_OPTION_LONGEST<<1)
-#define RE_OPTIMIZE_ANCHOR   (RE_MAY_IGNORECASE<<1)
-#define RE_OPTIMIZE_EXACTN   (RE_OPTIMIZE_ANCHOR<<1)
-#define RE_OPTIMIZE_NO_BM    (RE_OPTIMIZE_EXACTN<<1)
-#define RE_OPTIMIZE_BMATCH   (RE_OPTIMIZE_NO_BM<<1)
-
-/* For multi-byte char support */
-#define MBCTYPE_ASCII 0
-#define MBCTYPE_EUC 1
-#define MBCTYPE_SJIS 2
-#define MBCTYPE_UTF8 3
-
-extern
-#if defined _WIN32 && !defined __GNUC__ && !defined RUBY_EXPORT
-__declspec(dllimport)
-# endif
-const unsigned char *re_mbctab;
-#if defined(__STDC__)
-void re_mbcinit (int);
-#else
-void re_mbcinit ();
-#endif
-
-#undef ismbchar
-#define ismbchar(c) re_mbctab[(unsigned char)(c)]
-#define mbclen(c)   (re_mbctab[(unsigned char)(c)]+1)
-
-/* Structure used in re_match() */
-
-typedef union
-{
-  unsigned char *word;
-  struct {
-    unsigned is_active : 1;
-    unsigned matched_something : 1;
-  } bits;
-} register_info_type;
-
-/* This data structure is used to represent a compiled pattern.  */
-
-struct re_pattern_buffer
-  {
-    char *buffer;	/* Space holding the compiled pattern commands.  */
-    int allocated;	/* Size of space that `buffer' points to. */
-    int used;		/* Length of portion of buffer actually occupied  */
-    char *fastmap;	/* Pointer to fastmap, if any, or zero if none.  */
-			/* re_search uses the fastmap, if there is one,
-			   to skip over totally implausible characters.  */
-    char *must;	        /* Pointer to exact pattern which strings should have
-			   to be matched.  */
-    int *must_skip;     /* Pointer to exact pattern skip table for bm_search */
-    long options;	/* Flags for options such as extended_pattern. */
-    long re_nsub;	/* Number of subexpressions found by the compiler. */
-    char fastmap_accurate;
-			/* Set to zero when a new pattern is stored,
-			   set to one when the fastmap is updated from it.  */
-    char can_be_null;   /* Set to one by compiling fastmap
-			   if this pattern might match the null string.
-			   It does not necessarily match the null string
-			   in that case, but if this is zero, it cannot.
-			   2 as value means can match null string
-			   but at end of range or before a character
-			   listed in the fastmap.  */
-
-    /* stack & working area for re_match() */
-    unsigned char **regstart;
-    unsigned char **regend;
-    unsigned char **old_regstart;
-    unsigned char **old_regend;
-    register_info_type *reg_info;
-    unsigned char **best_regstart;
-    unsigned char **best_regend;
-  };
-
-typedef struct re_pattern_buffer regex_t;
-
-/* Structure to store register contents data in.
-
-   Pass the address of such a structure as an argument to re_match, etc.,
-   if you want this information back.
-
-   For i from 1 to RE_NREGS - 1, start[i] records the starting index in
-   the string of where the ith subexpression matched, and end[i] records
-   one after the ending index.  start[0] and end[0] are analogous, for
-   the entire pattern.  */
-
-struct re_registers
-  {
-    int allocated;
-    int num_regs;
-    int *beg;
-    int *end;
-  };
-
-/* Type for byte offsets within the string.  POSIX mandates this.  */
-typedef size_t regoff_t;
-
-/* POSIX specification for registers.  Aside from the different names than
-   `re_registers', POSIX uses an array of structures, instead of a
-   structure of arrays.  */
-typedef struct
-{
-  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */
-  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */
-} regmatch_t;
-
-#ifdef __STDC__
-
-extern char *re_compile_pattern (const char *, int, struct re_pattern_buffer *);
-void re_free_pattern (struct re_pattern_buffer *);
-/* Is this really advertised?  */
-extern int re_adjust_startpos (struct re_pattern_buffer *, const char*, int, int, int);
-extern void re_compile_fastmap (struct re_pattern_buffer *);
-extern int re_search (struct re_pattern_buffer *, const char*, int, int, int,
-		      struct re_registers *);
-extern int re_match (struct re_pattern_buffer *, const char *, int, int,
-		     struct re_registers *);
-extern void re_set_casetable (const char *table);
-extern void re_copy_registers (struct re_registers*, struct re_registers*);
-extern void re_free_registers (struct re_registers*);
-
-#ifndef RUBY
-/* 4.2 bsd compatibility.  */
-extern char *re_comp (const char *);
-extern int re_exec (const char *);
-#endif
-
-#else /* !__STDC__ */
-
-extern char *re_compile_pattern ();
-void re_free_regexp ();
-/* Is this really advertised? */
-extern int re_adjust_startpos ();
-extern void re_compile_fastmap ();
-extern int re_search ();
-extern int re_match ();
-extern void re_set_casetable ();
-extern void re_copy_registers ();
-extern void re_free_registers ();
-
-#endif /* __STDC__ */
-
-#endif /* !REGEX_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/ruby.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/ruby.h
deleted file mode 100644
index ca8e4dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/ruby.h
+++ /dev/null
@@ -1,759 +0,0 @@
-/**********************************************************************
-
-  ruby.h -
-
-  $Author: shyouhei $
-  created at: Thu Jun 10 14:26:32 JST 1993
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-  Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-  Copyright (C) 2000  Information-technology Promotion Agency, Japan
-
-**********************************************************************/
-
-#ifndef RUBY_H
-#define RUBY_H
-
-#if defined(__cplusplus)
-extern "C" {
-#if 0
-} /* satisfy cc-mode */
-#endif
-#endif
-
-#include "config.h"
-#ifdef RUBY_EXTCONF_H
-#include RUBY_EXTCONF_H
-#endif
-
-#define NORETURN_STYLE_NEW 1
-#ifndef NORETURN
-# define NORETURN(x) x
-#endif
-#ifndef NOINLINE
-# define NOINLINE(x) x
-#endif
-
-#include "defines.h"
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-
-#ifdef HAVE_INTRINSICS_H
-# include <intrinsics.h>
-#endif
-
-#include <stddef.h>
-#include <stdio.h>
-
-/* need to include <ctype.h> to use these macros */
-#ifndef ISPRINT
-#define ISASCII(c) isascii((int)(unsigned char)(c))
-#undef ISPRINT
-#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)))
-#endif
-
-#if defined(HAVE_ALLOCA_H)
-#include <alloca.h>
-#else
-#  ifdef _AIX
-#pragma alloca
-#  endif
-#endif
-
-#if defined(__VMS)
-# pragma builtins
-# define alloca __alloca
-#endif
-
-#if SIZEOF_LONG != SIZEOF_VOIDP
-# error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<----
-#else
-typedef unsigned long VALUE;
-typedef unsigned long ID;
-#endif
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# ifndef LONG_MAX
-#  ifdef HAVE_LIMITS_H
-#   include <limits.h>
-#  else
-    /* assuming 32bit(2's compliment) long */
-#   define LONG_MAX 2147483647
-#  endif
-# endif
-# ifndef LONG_MIN
-#  define LONG_MIN (-LONG_MAX-1)
-# endif
-# ifndef CHAR_BIT
-#  define CHAR_BIT 8
-# endif
-#endif
-
-#ifdef HAVE_LONG_LONG
-# ifndef LLONG_MAX
-#  ifdef LONG_LONG_MAX
-#   define LLONG_MAX  LONG_LONG_MAX
-#  else
-#   ifdef _I64_MAX
-#    define LLONG_MAX _I64_MAX
-#   else
-    /* assuming 64bit(2's complement) long long */
-#    define LLONG_MAX 9223372036854775807LL
-#   endif
-#  endif
-# endif
-# ifndef LLONG_MIN
-#  ifdef LONG_LONG_MIN
-#   define LLONG_MIN  LONG_LONG_MIN
-#  else
-#   ifdef _I64_MIN
-#    define LLONG_MIN _I64_MIN
-#   else
-#    define LLONG_MIN (-LLONG_MAX-1)
-#   endif
-#  endif
-# endif
-#endif
-
-#define FIXNUM_MAX (LONG_MAX>>1)
-#define FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
-
-#define FIXNUM_FLAG 0x01
-#define INT2FIX(i) ((VALUE)(((long)(i))<<1 | FIXNUM_FLAG))
-#define LONG2FIX(i) INT2FIX(i)
-#define rb_fix_new(v) INT2FIX(v)
-VALUE rb_int2inum _((long));
-#define INT2NUM(v) rb_int2inum(v)
-#define LONG2NUM(v) INT2NUM(v)
-#define rb_int_new(v) rb_int2inum(v)
-VALUE rb_uint2inum _((unsigned long));
-#define UINT2NUM(v) rb_uint2inum(v)
-#define ULONG2NUM(v) UINT2NUM(v)
-#define rb_uint_new(v) rb_uint2inum(v)
-
-#ifdef HAVE_LONG_LONG
-VALUE rb_ll2inum _((LONG_LONG));
-#define LL2NUM(v) rb_ll2inum(v)
-VALUE rb_ull2inum _((unsigned LONG_LONG));
-#define ULL2NUM(v) rb_ull2inum(v)
-#endif
-
-#if SIZEOF_OFF_T > SIZEOF_LONG && defined(HAVE_LONG_LONG)
-# define OFFT2NUM(v) LL2NUM(v)
-#elif SIZEOF_OFF_T == SIZEOF_LONG
-# define OFFT2NUM(v) LONG2NUM(v)
-#else
-# define OFFT2NUM(v) INT2NUM(v)
-#endif
-
-#define FIX2LONG(x) RSHIFT((long)x,1)
-#define FIX2ULONG(x) (((unsigned long)(x))>>1)
-#define FIXNUM_P(f) (((long)(f))&FIXNUM_FLAG)
-#define POSFIXABLE(f) ((f) < FIXNUM_MAX+1)
-#define NEGFIXABLE(f) ((f) >= FIXNUM_MIN)
-#define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f))
-
-#define IMMEDIATE_MASK 0x03
-#define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK)
-
-#define SYMBOL_FLAG 0x0e
-#define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG)
-#define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG))
-#define SYM2ID(x) RSHIFT((unsigned long)x,8)
-
-/* special contants - i.e. non-zero and non-fixnum constants */
-#define Qfalse ((VALUE)0)
-#define Qtrue  ((VALUE)2)
-#define Qnil   ((VALUE)4)
-#define Qundef ((VALUE)6)	/* undefined value for placeholder */
-
-#define RTEST(v) (((VALUE)(v) & ~Qnil) != 0)
-#define NIL_P(v) ((VALUE)(v) == Qnil)
-
-#define CLASS_OF(v) rb_class_of((VALUE)(v))
-
-#define T_NONE   0x00
-
-#define T_NIL    0x01
-#define T_OBJECT 0x02
-#define T_CLASS  0x03
-#define T_ICLASS 0x04
-#define T_MODULE 0x05
-#define T_FLOAT  0x06
-#define T_STRING 0x07
-#define T_REGEXP 0x08
-#define T_ARRAY  0x09
-#define T_FIXNUM 0x0a
-#define T_HASH   0x0b
-#define T_STRUCT 0x0c
-#define T_BIGNUM 0x0d
-#define T_FILE   0x0e
-
-#define T_TRUE   0x20
-#define T_FALSE  0x21
-#define T_DATA   0x22
-#define T_MATCH  0x23
-#define T_SYMBOL 0x24
-
-#define T_BLKTAG 0x3b
-#define T_UNDEF  0x3c
-#define T_VARMAP 0x3d
-#define T_SCOPE  0x3e
-#define T_NODE   0x3f
-
-#define T_MASK   0x3f
-
-#define BUILTIN_TYPE(x) (((struct RBasic*)(x))->flags & T_MASK)
-
-#define TYPE(x) rb_type((VALUE)(x))
-
-void rb_check_type _((VALUE,int));
-#define Check_Type(v,t) rb_check_type((VALUE)(v),t)
-
-VALUE rb_str_to_str _((VALUE));
-VALUE rb_string_value _((volatile VALUE*));
-char *rb_string_value_ptr _((volatile VALUE*));
-char *rb_string_value_cstr _((volatile VALUE*));
-
-#define StringValue(v) rb_string_value(&(v))
-#define StringValuePtr(v) rb_string_value_ptr(&(v))
-#define StringValueCStr(v) rb_string_value_cstr(&(v))
-
-void rb_check_safe_obj _((VALUE));
-void rb_check_safe_str _((VALUE));
-#define SafeStringValue(v) do {\
-    StringValue(v);\
-    rb_check_safe_obj(v);\
-} while (0)
-/* obsolete macro - use SafeStringValue(v) */
-#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
-
-void rb_secure _((int));
-RUBY_EXTERN int ruby_safe_level;
-#define rb_safe_level() (ruby_safe_level)
-void rb_set_safe_level _((int));
-void rb_secure_update _((VALUE));
-
-long rb_num2long _((VALUE));
-unsigned long rb_num2ulong _((VALUE));
-#define NUM2LONG(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2long((VALUE)x))
-#define NUM2ULONG(x) rb_num2ulong((VALUE)x)
-#if SIZEOF_INT < SIZEOF_LONG
-long rb_num2int _((VALUE));
-#define NUM2INT(x) (FIXNUM_P(x)?FIX2INT(x):rb_num2int((VALUE)x))
-long rb_fix2int _((VALUE));
-#define FIX2INT(x) rb_fix2int((VALUE)x)
-unsigned long rb_num2uint _((VALUE));
-#define NUM2UINT(x) rb_num2uint(x)
-unsigned long rb_fix2uint _((VALUE));
-#define FIX2UINT(x) rb_fix2uint(x)
-#else
-#define NUM2INT(x) ((int)NUM2LONG(x))
-#define NUM2UINT(x) ((unsigned int)NUM2ULONG(x))
-#define FIX2INT(x) ((int)FIX2LONG(x))
-#define FIX2UINT(x) ((unsigned int)FIX2ULONG(x))
-#endif
-
-#ifdef HAVE_LONG_LONG
-LONG_LONG rb_num2ll _((VALUE));
-unsigned LONG_LONG rb_num2ull _((VALUE));
-# define NUM2LL(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2ll((VALUE)x))
-# define NUM2ULL(x) rb_num2ull((VALUE)x)
-#endif
-
-#if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG
-# define NUM2OFFT(x) ((off_t)NUM2LL(x))
-#else
-# define NUM2OFFT(x) NUM2LONG(x)
-#endif
-
-double rb_num2dbl _((VALUE));
-#define NUM2DBL(x) rb_num2dbl((VALUE)(x))
-
-/* obsolete API - use StringValue() */
-char *rb_str2cstr _((VALUE,long*));
-/* obsolete API - use StringValuePtr() */
-#define STR2CSTR(x) rb_str2cstr((VALUE)(x),0)
-
-#define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING(x)->len>=1))?\
-                     RSTRING(x)->ptr[0]:(char)(NUM2INT(x)&0xff))
-#define CHR2FIX(x) INT2FIX((long)((x)&0xff))
-
-VALUE rb_newobj _((void));
-#define NEWOBJ(obj,type) type *obj = (type*)rb_newobj()
-#define OBJSETUP(obj,c,t) do {\
-    RBASIC(obj)->flags = (t);\
-    RBASIC(obj)->klass = (c);\
-    if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\
-} while (0)
-#define CLONESETUP(clone,obj) do {\
-    OBJSETUP(clone,rb_singleton_class_clone((VALUE)obj),RBASIC(obj)->flags);\
-    rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\
-    if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)clone,(VALUE)obj);\
-} while (0)
-#define DUPSETUP(dup,obj) do {\
-    OBJSETUP(dup,rb_obj_class(obj),(RBASIC(obj)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT));\
-    if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)dup,(VALUE)obj);\
-} while (0)
-
-struct RBasic {
-    unsigned long flags;
-    VALUE klass;
-};
-
-struct RObject {
-    struct RBasic basic;
-    struct st_table *iv_tbl;
-};
-
-struct RClass {
-    struct RBasic basic;
-    struct st_table *iv_tbl;
-    struct st_table *m_tbl;
-    VALUE super;
-};
-
-struct RFloat {
-    struct RBasic basic;
-    double value;
-};
-
-#define ELTS_SHARED FL_USER2
-
-struct RString {
-    struct RBasic basic;
-    long len;
-    char *ptr;
-    union {
-	long capa;
-	VALUE shared;
-    } aux;
-};
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-
-struct RArray {
-    struct RBasic basic;
-    long len;
-    union {
-	long capa;
-	VALUE shared;
-    } aux;
-    VALUE *ptr;
-};
-#define RARRAY_PTR(s) (RARRAY(s)->ptr)
-#define RARRAY_LEN(s) (RARRAY(s)->len)
-
-struct RRegexp {
-    struct RBasic basic;
-    struct re_pattern_buffer *ptr;
-    long len;
-    char *str;
-};
-
-struct RHash {
-    struct RBasic basic;
-    struct st_table *tbl;
-    int iter_lev;
-    VALUE ifnone;
-};
-
-struct RFile {
-    struct RBasic basic;
-    struct OpenFile *fptr;
-};
-
-struct RData {
-    struct RBasic basic;
-    void (*dmark) _((void*));
-    void (*dfree) _((void*));
-    void *data;
-};
-
-#define DATA_PTR(dta) (RDATA(dta)->data)
-
-/*
-#define RUBY_DATA_FUNC(func) ((void (*)_((void*)))func)
-*/
-typedef void (*RUBY_DATA_FUNC) _((void*));
-
-VALUE rb_data_object_alloc _((VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC));
-
-#define Data_Wrap_Struct(klass,mark,free,sval)\
-    rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free)
-
-#define Data_Make_Struct(klass,type,mark,free,sval) (\
-    sval = ALLOC(type),\
-    memset(sval, 0, sizeof(type)),\
-    Data_Wrap_Struct(klass,mark,free,sval)\
-)
-
-#define Data_Get_Struct(obj,type,sval) do {\
-    Check_Type(obj, T_DATA); \
-    sval = (type*)DATA_PTR(obj);\
-} while (0)
-
-struct RStruct {
-    struct RBasic basic;
-    long len;
-    VALUE *ptr;
-};
-#define RSTRUCT_LEN(st) (RSTRUCT(st)->len)
-#define RSTRUCT_PTR(st) (RSTRUCT(st)->ptr)
-
-struct RBignum {
-    struct RBasic basic;
-    char sign;
-    long len;
-    void *digits;
-};
-
-#define R_CAST(st)   (struct st*)
-#define RBASIC(obj)  (R_CAST(RBasic)(obj))
-#define ROBJECT(obj) (R_CAST(RObject)(obj))
-#define RCLASS(obj)  (R_CAST(RClass)(obj))
-#define RMODULE(obj) RCLASS(obj)
-#define RFLOAT(obj)  (R_CAST(RFloat)(obj))
-#define RSTRING(obj) (R_CAST(RString)(obj))
-#define RREGEXP(obj) (R_CAST(RRegexp)(obj))
-#define RARRAY(obj)  (R_CAST(RArray)(obj))
-#define RHASH(obj)   (R_CAST(RHash)(obj))
-#define RDATA(obj)   (R_CAST(RData)(obj))
-#define RSTRUCT(obj) (R_CAST(RStruct)(obj))
-#define RBIGNUM(obj) (R_CAST(RBignum)(obj))
-#define RFILE(obj)   (R_CAST(RFile)(obj))
-
-#define FL_SINGLETON FL_USER0
-#define FL_MARK      (1<<6)
-#define FL_FINALIZE  (1<<7)
-#define FL_TAINT     (1<<8)
-#define FL_EXIVAR    (1<<9)
-#define FL_FREEZE    (1<<10)
-
-#define FL_USHIFT    11
-
-#define FL_USER0     (1<<(FL_USHIFT+0))
-#define FL_USER1     (1<<(FL_USHIFT+1))
-#define FL_USER2     (1<<(FL_USHIFT+2))
-#define FL_USER3     (1<<(FL_USHIFT+3))
-#define FL_USER4     (1<<(FL_USHIFT+4))
-#define FL_USER5     (1<<(FL_USHIFT+5))
-#define FL_USER6     (1<<(FL_USHIFT+6))
-#define FL_USER7     (1<<(FL_USHIFT+7))
-
-#define FL_UMASK  (0xff<<FL_USHIFT)
-
-#define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x))
-
-#define FL_ABLE(x) (!SPECIAL_CONST_P(x))
-#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
-#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0)
-#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0)
-#define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0)
-
-#define OBJ_TAINTED(x) FL_TEST((x), FL_TAINT)
-#define OBJ_TAINT(x) FL_SET((x), FL_TAINT)
-#define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & FL_TAINT;} while (0)
-
-#define OBJ_FROZEN(x) FL_TEST((x), FL_FREEZE)
-#define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE)
-
-#define ALLOC_N(type,n) (type*)xmalloc(sizeof(type)*(n))
-#define ALLOC(type) (type*)xmalloc(sizeof(type))
-#define REALLOC_N(var,type,n) (var)=(type*)xrealloc((char*)(var),sizeof(type)*(n))
-
-#define ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n))
-
-#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n))
-#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n))
-#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n))
-#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n))
-
-void rb_obj_infect _((VALUE,VALUE));
-
-typedef int ruby_glob_func(const char*,VALUE);
-void rb_glob _((const char*,void(*)(const char*,VALUE),VALUE));
-void rb_globi _((const char*,void(*)(const char*,VALUE),VALUE));
-int ruby_brace_expand _((const char*,int,ruby_glob_func*,VALUE));
-int ruby_brace_glob _((const char*,int,ruby_glob_func*,VALUE));
-
-VALUE rb_define_class _((const char*,VALUE));
-VALUE rb_define_module _((const char*));
-VALUE rb_define_class_under _((VALUE, const char*, VALUE));
-VALUE rb_define_module_under _((VALUE, const char*));
-
-void rb_include_module _((VALUE,VALUE));
-void rb_extend_object _((VALUE,VALUE));
-
-void rb_define_variable _((const char*,VALUE*));
-void rb_define_virtual_variable _((const char*,VALUE(*)(ANYARGS),void(*)(ANYARGS)));
-void rb_define_hooked_variable _((const char*,VALUE*,VALUE(*)(ANYARGS),void(*)(ANYARGS)));
-int ruby_glob _((const char*,int,int(*)(const char*,VALUE),VALUE));
-int ruby_globi _((const char*,int,int(*)(const char*,VALUE),VALUE));
-void rb_define_readonly_variable _((const char*,VALUE*));
-void rb_define_const _((VALUE,const char*,VALUE));
-void rb_define_global_const _((const char*,VALUE));
-
-#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))func)
-void rb_define_method _((VALUE,const char*,VALUE(*)(ANYARGS),int));
-void rb_define_module_function _((VALUE,const char*,VALUE(*)(ANYARGS),int));
-void rb_define_global_function _((const char*,VALUE(*)(ANYARGS),int));
-
-void rb_undef_method _((VALUE,const char*));
-void rb_define_alias _((VALUE,const char*,const char*));
-void rb_define_attr _((VALUE,const char*,int,int));
-
-void rb_global_variable _((VALUE*));
-void rb_gc_register_address _((VALUE*));
-void rb_gc_unregister_address _((VALUE*));
-
-ID rb_intern _((const char*));
-char *rb_id2name _((ID));
-ID rb_to_id _((VALUE));
-
-char *rb_class2name _((VALUE));
-char *rb_obj_classname _((VALUE));
-
-void rb_p _((VALUE));
-
-VALUE rb_eval_string _((const char*));
-VALUE rb_eval_string_protect _((const char*, int*));
-VALUE rb_eval_string_wrap _((const char*, int*));
-VALUE rb_funcall __((VALUE, ID, int, ...));
-VALUE rb_funcall2 _((VALUE, ID, int, const VALUE*));
-VALUE rb_funcall3 _((VALUE, ID, int, const VALUE*));
-int rb_scan_args __((int, const VALUE*, const char*, ...));
-VALUE rb_call_super _((int, const VALUE*));
-
-VALUE rb_gv_set _((const char*, VALUE));
-VALUE rb_gv_get _((const char*));
-VALUE rb_iv_get _((VALUE, const char*));
-VALUE rb_iv_set _((VALUE, const char*, VALUE));
-
-VALUE rb_equal _((VALUE,VALUE));
-
-RUBY_EXTERN VALUE ruby_verbose, ruby_debug;
-
-NORETURN(void rb_raise __((VALUE, const char*, ...)));
-NORETURN(void rb_fatal __((const char*, ...)));
-NORETURN(void rb_bug __((const char*, ...)));
-NORETURN(void rb_sys_fail _((const char*)));
-NORETURN(void rb_iter_break _((void)));
-NORETURN(void rb_exit _((int)));
-NORETURN(void rb_notimplement _((void)));
-
-void rb_warning __((const char*, ...));		/* reports if `-w' specified */
-void rb_sys_warning __((const char*, ...));	/* reports if `-w' specified */
-void rb_warn __((const char*, ...));		/* reports always */
-
-VALUE rb_each _((VALUE));
-VALUE rb_yield _((VALUE));
-VALUE rb_yield_values __((int n, ...));
-VALUE rb_yield_splat _((VALUE));
-int rb_block_given_p _((void));
-void rb_need_block _((void));
-VALUE rb_iterate _((VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE));
-VALUE rb_rescue _((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE));
-VALUE rb_rescue2 __((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...));
-VALUE rb_ensure _((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE));
-VALUE rb_catch _((const char*,VALUE(*)(ANYARGS),VALUE));
-NORETURN(void rb_throw _((const char*,VALUE)));
-
-VALUE rb_require _((const char*));
-
-#ifdef __ia64
-void ruby_init_stack(VALUE*, void*);
-#define RUBY_INIT_STACK \
-    VALUE variable_in_this_stack_frame; \
-    ruby_init_stack(&variable_in_this_stack_frame, rb_ia64_bsp());
-#else
-void ruby_init_stack(VALUE*);
-#define RUBY_INIT_STACK \
-    VALUE variable_in_this_stack_frame; \
-    ruby_init_stack(&variable_in_this_stack_frame);
-#endif
-void ruby_init _((void));
-void ruby_options _((int, char**));
-NORETURN(void ruby_run _((void)));
-
-RUBY_EXTERN VALUE rb_mKernel;
-RUBY_EXTERN VALUE rb_mComparable;
-RUBY_EXTERN VALUE rb_mEnumerable;
-RUBY_EXTERN VALUE rb_mPrecision;
-RUBY_EXTERN VALUE rb_mErrno;
-RUBY_EXTERN VALUE rb_mFileTest;
-RUBY_EXTERN VALUE rb_mGC;
-RUBY_EXTERN VALUE rb_mMath;
-RUBY_EXTERN VALUE rb_mProcess;
-
-RUBY_EXTERN VALUE rb_cObject;
-RUBY_EXTERN VALUE rb_cArray;
-RUBY_EXTERN VALUE rb_cBignum;
-RUBY_EXTERN VALUE rb_cBinding;
-RUBY_EXTERN VALUE rb_cClass;
-RUBY_EXTERN VALUE rb_cCont;
-RUBY_EXTERN VALUE rb_cDir;
-RUBY_EXTERN VALUE rb_cData;
-RUBY_EXTERN VALUE rb_cFalseClass;
-RUBY_EXTERN VALUE rb_cFile;
-RUBY_EXTERN VALUE rb_cFixnum;
-RUBY_EXTERN VALUE rb_cFloat;
-RUBY_EXTERN VALUE rb_cHash;
-RUBY_EXTERN VALUE rb_cInteger;
-RUBY_EXTERN VALUE rb_cIO;
-RUBY_EXTERN VALUE rb_cMatch;
-RUBY_EXTERN VALUE rb_cMethod;
-RUBY_EXTERN VALUE rb_cModule;
-RUBY_EXTERN VALUE rb_cNameErrorMesg;
-RUBY_EXTERN VALUE rb_cNilClass;
-RUBY_EXTERN VALUE rb_cNumeric;
-RUBY_EXTERN VALUE rb_cProc;
-RUBY_EXTERN VALUE rb_cRange;
-RUBY_EXTERN VALUE rb_cRegexp;
-RUBY_EXTERN VALUE rb_cStat;
-RUBY_EXTERN VALUE rb_cString;
-RUBY_EXTERN VALUE rb_cStruct;
-RUBY_EXTERN VALUE rb_cSymbol;
-RUBY_EXTERN VALUE rb_cThread;
-RUBY_EXTERN VALUE rb_cTime;
-RUBY_EXTERN VALUE rb_cTrueClass;
-RUBY_EXTERN VALUE rb_cUnboundMethod;
-
-RUBY_EXTERN VALUE rb_eException;
-RUBY_EXTERN VALUE rb_eStandardError;
-RUBY_EXTERN VALUE rb_eSystemExit;
-RUBY_EXTERN VALUE rb_eInterrupt;
-RUBY_EXTERN VALUE rb_eSignal;
-RUBY_EXTERN VALUE rb_eFatal;
-RUBY_EXTERN VALUE rb_eArgError;
-RUBY_EXTERN VALUE rb_eEOFError;
-RUBY_EXTERN VALUE rb_eIndexError;
-RUBY_EXTERN VALUE rb_eRangeError;
-RUBY_EXTERN VALUE rb_eIOError;
-RUBY_EXTERN VALUE rb_eRuntimeError;
-RUBY_EXTERN VALUE rb_eSecurityError;
-RUBY_EXTERN VALUE rb_eSystemCallError;
-RUBY_EXTERN VALUE rb_eThreadError;
-RUBY_EXTERN VALUE rb_eTypeError;
-RUBY_EXTERN VALUE rb_eZeroDivError;
-RUBY_EXTERN VALUE rb_eNotImpError;
-RUBY_EXTERN VALUE rb_eNoMemError;
-RUBY_EXTERN VALUE rb_eNoMethodError;
-RUBY_EXTERN VALUE rb_eFloatDomainError;
-RUBY_EXTERN VALUE rb_eLocalJumpError;
-RUBY_EXTERN VALUE rb_eSysStackError;
-RUBY_EXTERN VALUE rb_eRegexpError;
-
-RUBY_EXTERN VALUE rb_eScriptError;
-RUBY_EXTERN VALUE rb_eNameError;
-RUBY_EXTERN VALUE rb_eSyntaxError;
-RUBY_EXTERN VALUE rb_eLoadError;
-
-RUBY_EXTERN VALUE rb_stdin, rb_stdout, rb_stderr;
-RUBY_EXTERN VALUE ruby_errinfo;
-
-static inline VALUE
-#if defined(HAVE_PROTOTYPES)
-rb_class_of(VALUE obj)
-#else
-rb_class_of(obj)
-    VALUE obj;
-#endif
-{
-    if (FIXNUM_P(obj)) return rb_cFixnum;
-    if (obj == Qnil) return rb_cNilClass;
-    if (obj == Qfalse) return rb_cFalseClass;
-    if (obj == Qtrue) return rb_cTrueClass;
-    if (SYMBOL_P(obj)) return rb_cSymbol;
-
-    return RBASIC(obj)->klass;
-}
-
-static inline int
-#if defined(HAVE_PROTOTYPES)
-rb_type(VALUE obj)
-#else
-rb_type(obj)
-   VALUE obj;
-#endif
-{
-    if (FIXNUM_P(obj)) return T_FIXNUM;
-    if (obj == Qnil) return T_NIL;
-    if (obj == Qfalse) return T_FALSE;
-    if (obj == Qtrue) return T_TRUE;
-    if (obj == Qundef) return T_UNDEF;
-    if (SYMBOL_P(obj)) return T_SYMBOL;
-    return BUILTIN_TYPE(obj);
-}
-
-static inline int
-#if defined(HAVE_PROTOTYPES)
-rb_special_const_p(VALUE obj)
-#else
-rb_special_const_p(obj)
-    VALUE obj;
-#endif
-{
-    if (SPECIAL_CONST_P(obj)) return Qtrue;
-    return Qfalse;
-}
-
-#include "missing.h"
-#include "intern.h"
-
-#if defined(EXTLIB) && defined(USE_DLN_A_OUT)
-/* hook for external modules */
-static char *dln_libs_to_be_linked[] = { EXTLIB, 0 };
-#endif
-
-#if defined(HAVE_LIBPTHREAD)
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-typedef pthread_t rb_nativethread_t;
-# define NATIVETHREAD_CURRENT() pthread_self()
-# define NATIVETHREAD_EQUAL(t1,t2) pthread_equal((t1),(t2))
-# define HAVE_NATIVETHREAD
-
-# define NATIVETHREAD_KILL(th,sig) pthread_kill((th),(sig))
-# define HAVE_NATIVETHREAD_KILL
-#elif defined(_WIN32) || defined(_WIN32_WCE)
-typedef DWORD rb_nativethread_t;
-# define NATIVETHREAD_CURRENT() GetCurrentThreadId()
-# define NATIVETHREAD_EQUAL(t1,t2) ((t1) == (t2))
-# define HAVE_NATIVETHREAD
-#endif
-#ifdef HAVE_NATIVETHREAD
-int is_ruby_native_thread _((void));
-#else
-#define is_ruby_native_thread() (1)
-#endif
-#ifdef HAVE_NATIVETHREAD_KILL
-void ruby_native_thread_kill _((int));
-#endif
-
-#if defined(__cplusplus)
-#if 0
-{ /* satisfy cc-mode */
-#endif
-}  /* extern "C" { */
-#endif
-
-#endif /* ifndef RUBY_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubyio.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubyio.h
deleted file mode 100644
index e7f2df3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubyio.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/**********************************************************************
-
-  rubyio.h -
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Fri Nov 12 16:47:09 JST 1993
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef RUBYIO_H
-#define RUBYIO_H
-
-#include <stdio.h>
-#include <errno.h>
-
-#if defined(HAVE_STDIO_EXT_H)
-#include <stdio_ext.h>
-#endif
-
-typedef struct OpenFile {
-    FILE *f;			/* stdio ptr for read/write */
-    FILE *f2;			/* additional ptr for rw pipes */
-    int mode;			/* mode flags */
-    int pid;			/* child's pid (for pipes) */
-    int lineno;			/* number of lines read */
-    char *path;			/* pathname for file */
-    void (*finalize) _((struct OpenFile*,int)); /* finalize proc */
-} OpenFile;
-
-#define FMODE_READABLE  1
-#define FMODE_WRITABLE  2
-#define FMODE_READWRITE 3
-#define FMODE_APPEND   64
-#define FMODE_CREATE  128
-#define FMODE_BINMODE   4
-#define FMODE_SYNC      8
-#define FMODE_WBUF     16
-#define FMODE_RBUF     32
-#define FMODE_WSPLIT  0x200
-#define FMODE_WSPLIT_INITIALIZED  0x400
-
-#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr)
-
-#define MakeOpenFile(obj, fp) do {\
-    if (RFILE(obj)->fptr) {\
-	rb_io_close(obj);\
-	free(RFILE(obj)->fptr);\
-	RFILE(obj)->fptr = 0;\
-    }\
-    fp = 0;\
-    fp = RFILE(obj)->fptr = ALLOC(OpenFile);\
-    fp->f = fp->f2 = NULL;\
-    fp->mode = 0;\
-    fp->pid = 0;\
-    fp->lineno = 0;\
-    fp->path = NULL;\
-    fp->finalize = 0;\
-} while (0)
-
-#define GetReadFile(fptr) ((fptr)->f)
-#define GetWriteFile(fptr) (((fptr)->f2) ? (fptr)->f2 : (fptr)->f)
-
-FILE *rb_fopen _((const char*, const char*));
-FILE *rb_fdopen _((int, const char*));
-int rb_getc _((FILE*));
-long rb_io_fread _((char *, long, FILE *));
-long rb_io_fwrite _((const char *, long, FILE *));
-int  rb_io_mode_flags _((const char*));
-int  rb_io_modenum_flags _((int));
-void rb_io_check_writable _((OpenFile*));
-void rb_io_check_readable _((OpenFile*));
-void rb_io_fptr_finalize _((OpenFile*));
-void rb_io_synchronized _((OpenFile*));
-void rb_io_check_initialized _((OpenFile*));
-void rb_io_check_closed _((OpenFile*));
-int rb_io_wait_readable _((int));
-int rb_io_wait_writable _((int));
-void rb_io_set_nonblock(OpenFile *fptr);
-
-VALUE rb_io_taint_check _((VALUE));
-NORETURN(void rb_eof_error _((void)));
-
-void rb_read_check _((FILE*));
-int rb_read_pending _((FILE*));
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubysig.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubysig.h
deleted file mode 100644
index 562b3b4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/rubysig.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**********************************************************************
-
-  rubysig.h -
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Wed Aug 16 01:15:38 JST 1995
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef SIG_H
-#define SIG_H
-#include <errno.h>
-
-#ifdef _WIN32
-typedef LONG rb_atomic_t;
-
-# define ATOMIC_TEST(var) InterlockedExchange(&(var), 0)
-# define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val))
-# define ATOMIC_INC(var) InterlockedIncrement(&(var))
-# define ATOMIC_DEC(var) InterlockedDecrement(&(var))
-
-/* Windows doesn't allow interrupt while system calls */
-# define TRAP_BEG do {\
-    int saved_errno = 0;\
-    rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 1)
-# define TRAP_END\
-    ATOMIC_SET(rb_trap_immediate, trap_immediate);\
-    saved_errno = errno;\
-    CHECK_INTS;\
-    errno = saved_errno;\
-} while (0)
-# define RUBY_CRITICAL(statements) do {\
-    rb_w32_enter_critical();\
-    statements;\
-    rb_w32_leave_critical();\
-} while (0)
-#else
-typedef int rb_atomic_t;
-
-# define ATOMIC_TEST(var) ((var) ? ((var) = 0, 1) : 0)
-# define ATOMIC_SET(var, val) ((var) = (val))
-# define ATOMIC_INC(var) (++(var))
-# define ATOMIC_DEC(var) (--(var))
-
-# define TRAP_BEG do {\
-    int saved_errno = 0;\
-    int trap_immediate = rb_trap_immediate;\
-    rb_trap_immediate = 1
-# define TRAP_END rb_trap_immediate = trap_immediate;\
-    saved_errno = errno;\
-    CHECK_INTS;\
-    errno = saved_errno;\
-} while (0)
-
-# define RUBY_CRITICAL(statements) do {\
-    int trap_immediate = rb_trap_immediate;\
-    rb_trap_immediate = 0;\
-    statements;\
-    rb_trap_immediate = trap_immediate;\
-} while (0)
-#endif
-RUBY_EXTERN rb_atomic_t rb_trap_immediate;
-
-RUBY_EXTERN int rb_prohibit_interrupt;
-#define DEFER_INTS (rb_prohibit_interrupt++)
-#define ALLOW_INTS do {\
-    rb_prohibit_interrupt--;\
-    CHECK_INTS;\
-} while (0)
-#define ENABLE_INTS (rb_prohibit_interrupt--)
-
-VALUE rb_with_disable_interrupt _((VALUE(*)(ANYARGS),VALUE));
-
-RUBY_EXTERN rb_atomic_t rb_trap_pending;
-void rb_trap_restore_mask _((void));
-
-RUBY_EXTERN int rb_thread_critical;
-void rb_thread_schedule _((void));
-#if defined(HAVE_SETITIMER) || defined(_THREAD_SAFE)
-RUBY_EXTERN int rb_thread_pending;
-# define CHECK_INTS do {\
-    if (!(rb_prohibit_interrupt || rb_thread_critical)) {\
-        if (rb_thread_pending) rb_thread_schedule();\
-	if (rb_trap_pending) rb_trap_exec();\
-    }\
-} while (0)
-#else
-/* pseudo preemptive thread switching */
-RUBY_EXTERN int rb_thread_tick;
-#define THREAD_TICK 500
-#define CHECK_INTS do {\
-    if (!(rb_prohibit_interrupt || rb_thread_critical)) {\
-	if (rb_thread_tick-- <= 0) {\
-	    rb_thread_tick = THREAD_TICK;\
-            rb_thread_schedule();\
-	}\
-    }\
-    if (rb_trap_pending) rb_trap_exec();\
-} while (0)
-#endif
-
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/sdbm.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/sdbm.so
deleted file mode 100644
index 68b45cf..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/sdbm.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/socket.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/socket.so
deleted file mode 100644
index 1abfc62..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/socket.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/st.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/st.h
deleted file mode 100644
index fb56f5f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/st.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
-
-/* @(#) st.h 5.1 89/12/14 */
-
-#ifndef ST_INCLUDED
-
-#define ST_INCLUDED
-
-#if SIZEOF_LONG == SIZEOF_VOIDP
-typedef unsigned long st_data_t;
-#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
-typedef unsigned LONG_LONG st_data_t;
-#else
-# error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<---
--
-#endif
-#define ST_DATA_T_DEFINED
-
-typedef struct st_table st_table;
-
-struct st_hash_type {
-    int (*compare)();
-    int (*hash)();
-};
-
-struct st_table {
-    struct st_hash_type *type;
-    int num_bins;
-    int num_entries;
-    struct st_table_entry **bins;
-};
-
-#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
-
-enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
-
-#ifndef _
-# define _(args) args
-#endif
-#ifndef ANYARGS
-# ifdef __cplusplus
-#   define ANYARGS ...
-# else
-#   define ANYARGS
-# endif
-#endif
-
-st_table *st_init_table _((struct st_hash_type *));
-st_table *st_init_table_with_size _((struct st_hash_type *, int));
-st_table *st_init_numtable _((void));
-st_table *st_init_numtable_with_size _((int));
-st_table *st_init_strtable _((void));
-st_table *st_init_strtable_with_size _((int));
-int st_delete _((st_table *, st_data_t *, st_data_t *));
-int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t));
-int st_insert _((st_table *, st_data_t, st_data_t));
-int st_lookup _((st_table *, st_data_t, st_data_t *));
-int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t));
-void st_add_direct _((st_table *, st_data_t, st_data_t));
-void st_free_table _((st_table *));
-void st_cleanup_safe _((st_table *, st_data_t));
-st_table *st_copy _((st_table *));
-
-#define ST_NUMCMP	((int (*)()) 0)
-#define ST_NUMHASH	((int (*)()) -2)
-
-#define st_numcmp	ST_NUMCMP
-#define st_numhash	ST_NUMHASH
-
-int st_strhash();
-
-#endif /* ST_INCLUDED */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/stringio.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/stringio.so
deleted file mode 100644
index b48e7ce..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/stringio.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/strscan.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/strscan.so
deleted file mode 100644
index 6e5a7c9..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/strscan.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/syck.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/syck.so
deleted file mode 100644
index 24a9366..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/syck.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tcltklib.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tcltklib.so
deleted file mode 100644
index e7cf275..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tcltklib.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/thread.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/thread.so
deleted file mode 100644
index 111d3ca..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/thread.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tkutil.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tkutil.so
deleted file mode 100644
index b2bf306..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/tkutil.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/util.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/util.h
deleted file mode 100644
index 5d01706..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/util.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**********************************************************************
-
-  util.h -
-
-  $Author: shyouhei $
-  $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-  created at: Thu Mar  9 11:55:53 JST 1995
-
-  Copyright (C) 1993-2003 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef UTIL_H
-#define UTIL_H
-
-#ifndef _
-#ifdef __cplusplus
-# ifndef  HAVE_PROTOTYPES
-#  define HAVE_PROTOTYPES 1
-# endif
-# ifndef  HAVE_STDARG_PROTOTYPES
-#  define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-#ifdef HAVE_PROTOTYPES
-# define _(args) args
-#else
-# define _(args) ()
-#endif
-#ifdef HAVE_STDARG_PROTOTYPES
-# define __(args) args
-#else
-# define __(args) ()
-#endif
-#endif
-
-#define scan_oct ruby_scan_oct
-unsigned long scan_oct _((const char*, int, int*));
-#define scan_hex ruby_scan_hex
-unsigned long scan_hex _((const char*, int, int*));
-
-#if defined(MSDOS) || defined(__CYGWIN32__) || defined(_WIN32)
-void ruby_add_suffix();
-#endif
-
-void ruby_qsort _((void*, const int, const int, int (*)(), void*));
-#define qsort(b,n,s,c,d) ruby_qsort(b,n,s,c,d)
-
-void ruby_setenv _((const char*, const char*));
-void ruby_unsetenv _((const char*));
-#undef setenv
-#undef unsetenv
-#define setenv(name,val) ruby_setenv(name,val)
-#define unsetenv(name,val) ruby_unsetenv(name);
-
-char *ruby_strdup _((const char*));
-#undef strdup
-#define strdup(s) ruby_strdup(s)
-
-char *ruby_getcwd _((void));
-#define my_getcwd() ruby_getcwd()
-
-double ruby_strtod _((const char*, char **));
-#undef strtod
-#define strtod(s,e) ruby_strtod(s,e)
-
-#endif /* UTIL_H */
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/version.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/version.h
deleted file mode 100644
index 88ddd67..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/version.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#define RUBY_VERSION "1.8.6"
-#define RUBY_RELEASE_DATE "2008-08-11"
-#define RUBY_VERSION_CODE 186
-#define RUBY_RELEASE_CODE 20080811
-#define RUBY_PATCHLEVEL 287
-
-#define RUBY_VERSION_MAJOR 1
-#define RUBY_VERSION_MINOR 8
-#define RUBY_VERSION_TEENY 6
-#define RUBY_RELEASE_YEAR 2008
-#define RUBY_RELEASE_MONTH 8
-#define RUBY_RELEASE_DAY 11
-
-#ifdef RUBY_EXTERN
-RUBY_EXTERN const char ruby_version[];
-RUBY_EXTERN const char ruby_release_date[];
-RUBY_EXTERN const char ruby_platform[];
-RUBY_EXTERN const int ruby_patchlevel;
-#endif
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32/win32.h b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32/win32.h
deleted file mode 100644
index d3cd0ee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32/win32.h
+++ /dev/null
@@ -1,560 +0,0 @@
-#ifndef RUBY_WIN32_H
-#define RUBY_WIN32_H
-
-/*
- *  Copyright (c) 1993, Intergraph Corporation
- *
- *  You may distribute under the terms of either the GNU General Public
- *  License or the Artistic License, as specified in the perl README file.
- *
- */
-
-//
-// Definitions for NT port of Perl
-//
-
-
-//
-// Ok now we can include the normal include files.
-//
-
-// #include <stdarg.h> conflict with varargs.h?
-// There is function-name conflitct, so we rename it
-#if !defined(IN) && !defined(FLOAT)
-#define OpenFile  WINAPI_OpenFile
-#ifdef __BORLANDC__
-#define USE_WINSOCK2
-#endif
-#ifdef USE_WINSOCK2
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <windows.h>
-#else
-#include <windows.h>
-#include <winsock.h>
-#endif
-#undef OpenFile
-#endif
-
-#define NT 1			/* deprecated */
-
-#ifdef _WIN32_WCE
-#undef CharNext
-#define CharNext CharNextA
-#endif
-
-//
-// We're not using Microsoft's "extensions" to C for
-// Structured Exception Handling (SEH) so we can nuke these
-//
-#undef try
-#undef except
-#undef finally
-#undef leave
-
-#if defined(__cplusplus)
-extern "C++" {
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <direct.h>
-#include <process.h>
-#include <time.h>
-#include <math.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#if !defined(__BORLANDC__)
-# include <sys/utime.h>
-#else
-# include <utime.h>
-#endif
-#include <io.h>
-#include <malloc.h>
-
-#if defined(__cplusplus)
-}
-#endif
-
-#ifdef _M_IX86
-# define WIN95 1
-#else
-# undef  WIN95
-#endif
-
-#ifdef WIN95
-extern DWORD rb_w32_osid(void);
-#define rb_w32_iswinnt()  (rb_w32_osid() == VER_PLATFORM_WIN32_NT)
-#define rb_w32_iswin95()  (rb_w32_osid() == VER_PLATFORM_WIN32_WINDOWS)
-#else
-#define rb_w32_iswinnt()  TRUE
-#define rb_w32_iswin95()  FALSE
-#endif
-
-#define WNOHANG -1
-
-#undef getc
-#undef putc
-#undef fgetc
-#undef fputc
-#undef getchar
-#undef putchar
-#undef fgetchar
-#undef fputchar
-#undef utime
-#define getc(_stream)		rb_w32_getc(_stream)
-#define putc(_c, _stream)	rb_w32_putc(_c, _stream)
-#define fgetc(_stream)		getc(_stream)
-#define fputc(_c, _stream)	putc(_c, _stream)
-#define getchar()		rb_w32_getc(stdin)
-#define putchar(_c)		rb_w32_putc(_c, stdout)
-#define fgetchar()		getchar()
-#define fputchar(_c)		putchar(_c)
-#define utime(_p, _t)		rb_w32_utime(_p, _t)
-
-#define strcasecmp(s1, s2)	stricmp(s1, s2)
-#define strncasecmp(s1, s2, n)	strnicmp(s1, s2, n)
-
-#define close(h)		rb_w32_close(h)
-#define fclose(f)		rb_w32_fclose(f)
-#define read(f, b, s)		rb_w32_read(f, b, s)
-#define write(f, b, s)		rb_w32_write(f, b, s)
-#define getpid()		rb_w32_getpid()
-#define sleep(x)		rb_w32_sleep((x)*1000)
-#ifdef __BORLANDC__
-#define creat(p, m)		_creat(p, m)
-#define eof()			_eof()
-#define filelength(h)		_filelength(h)
-#define mktemp(t)		_mktemp(t)
-#define tell(h)			_tell(h)
-#define unlink(p)		_unlink(p)
-#define _open			_sopen
-#define sopen			_sopen
-#undef fopen
-#define fopen(p, m)		rb_w32_fopen(p, m)
-#undef fdopen
-#define fdopen(h, m)		rb_w32_fdopen(h, m)
-#undef fsopen
-#define fsopen(p, m, sh)	rb_w32_fsopen(p, m, sh)
-#endif
-#define fsync(h)		_commit(h)
-#undef stat
-#define stat(path,st)		rb_w32_stat(path,st)
-#undef execv
-#define execv(path,argv)	do_aspawn(P_OVERLAY,path,argv)
-#if !defined(__BORLANDC__) && !defined(_WIN32_WCE)
-#undef isatty
-#define isatty(h)		rb_w32_isatty(h)
-#endif
-#undef mkdir
-#define mkdir(p, m)		rb_w32_mkdir(p, m)
-#undef rmdir
-#define rmdir(p)		rb_w32_rmdir(p)
-#undef unlink
-#define unlink(p)		rb_w32_unlink(p)
-
-#ifdef __MINGW32__
-struct timezone {
-  int tz_minuteswest;
-  int tz_dsttime;
-};
-#undef isascii
-#define isascii __isascii
-#endif
-extern void   NtInitialize(int *, char ***);
-extern int    rb_w32_cmdvector(const char *, char ***);
-extern rb_pid_t pipe_exec(char *, int, FILE **, FILE **);
-extern int    flock(int fd, int oper);
-extern int    rb_w32_accept(int, struct sockaddr *, int *);
-extern int    rb_w32_bind(int, struct sockaddr *, int);
-extern int    rb_w32_connect(int, struct sockaddr *, int);
-extern void   rb_w32_fdset(int, fd_set*);
-extern void   rb_w32_fdclr(int, fd_set*);
-extern int    rb_w32_fdisset(int, fd_set*);
-extern long   rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
-extern int    rb_w32_getpeername(int, struct sockaddr *, int *);
-extern int    rb_w32_getsockname(int, struct sockaddr *, int *);
-extern int    rb_w32_getsockopt(int, int, int, char *, int *);
-extern int    rb_w32_ioctlsocket(int, long, u_long *);
-extern int    rb_w32_listen(int, int);
-extern int    rb_w32_recv(int, char *, int, int);
-extern int    rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *);
-extern int    rb_w32_send(int, const char *, int, int);
-extern int    rb_w32_sendto(int, const char *, int, int, struct sockaddr *, int);
-extern int    rb_w32_setsockopt(int, int, int, char *, int);
-extern int    rb_w32_shutdown(int, int);
-extern int    rb_w32_socket(int, int, int);
-extern SOCKET rb_w32_get_osfhandle(int);
-extern struct hostent * rb_w32_gethostbyaddr(char *, int, int);
-extern struct hostent * rb_w32_gethostbyname(char *);
-extern int    rb_w32_gethostname(char *, int);
-extern struct protoent * rb_w32_getprotobyname(char *);
-extern struct protoent * rb_w32_getprotobynumber(int);
-extern struct servent  * rb_w32_getservbyname(char *, char *);
-extern struct servent  * rb_w32_getservbyport(int, char *);
-extern char * rb_w32_getcwd(char *, int);
-extern char * rb_w32_getenv(const char *);
-extern int    rb_w32_rename(const char *, const char *);
-extern int    rb_w32_stat(const char *, struct stat *);
-extern char **rb_w32_get_environ(void);
-extern void   rb_w32_free_environ(char **);
-
-#define vsnprintf(s,n,f,l) rb_w32_vsnprintf(s,n,f,l)
-#define snprintf   rb_w32_snprintf
-extern int rb_w32_vsnprintf(char *, size_t, const char *, va_list);
-extern int rb_w32_snprintf(char *, size_t, const char *, ...);
-
-extern int chown(const char *, int, int);
-extern int link(char *, char *);
-extern int gettimeofday(struct timeval *, struct timezone *);
-extern rb_pid_t waitpid (rb_pid_t, int *, int);
-extern int do_spawn(int, char *);
-extern int do_aspawn(int, char *, char **);
-extern int kill(int, int);
-extern int fcntl(int, int, ...);
-extern rb_pid_t rb_w32_getpid(void);
-
-#if !defined(__BORLANDC__) && !defined(_WIN32_WCE)
-extern int rb_w32_isatty(int);
-#endif
-extern int rb_w32_mkdir(const char *, int);
-extern int rb_w32_rmdir(const char *);
-extern int rb_w32_unlink(const char*);
-
-#ifdef __BORLANDC__
-extern FILE *rb_w32_fopen(const char *, const char *);
-extern FILE *rb_w32_fdopen(int, const char *);
-extern FILE *rb_w32_fsopen(const char *, const char *, int);
-#endif
-
-#include <float.h>
-#if !defined __MINGW32__ || defined __NO_ISOCEXT
-#ifndef isnan
-#define isnan(x) _isnan(x)
-#endif
-#ifndef finite
-#define finite(x) _finite(x)
-#endif
-#ifndef copysign
-#define copysign(a, b) _copysign(a, b)
-#endif
-#ifndef scalb
-#define scalb(a, b) _scalb(a, b)
-#endif
-#endif
-
-#if !defined S_IFIFO && defined _S_IFIFO
-#define S_IFIFO _S_IFIFO
-#endif
-
-#ifdef __BORLANDC__
-#undef S_ISDIR
-#undef S_ISFIFO
-#undef S_ISBLK
-#undef S_ISCHR
-#undef S_ISREG
-#define S_ISDIR(m)  (((unsigned short)(m) & S_IFMT) == S_IFDIR)
-#define S_ISFIFO(m) (((unsigned short)(m) & S_IFMT) == S_IFIFO)
-#define S_ISBLK(m)  (((unsigned short)(m) & S_IFMT) == S_IFBLK)
-#define S_ISCHR(m)  (((unsigned short)(m) & S_IFMT) == S_IFCHR)
-#define S_ISREG(m)  (((unsigned short)(m) & S_IFMT) == S_IFREG)
-#endif
-
-#if !defined S_IRUSR && !defined __MINGW32__
-#define S_IRUSR 0400
-#endif
-#ifndef S_IRGRP
-#define S_IRGRP 0040
-#endif
-#ifndef S_IROTH
-#define S_IROTH 0004
-#endif
-
-#if !defined S_IWUSR && !defined __MINGW32__
-#define S_IWUSR 0200
-#endif
-#ifndef S_IWGRP
-#define S_IWGRP 0020
-#endif
-#ifndef S_IWOTH
-#define S_IWOTH 0002
-#endif
-
-#if !defined S_IXUSR && !defined __MINGW32__
-#define S_IXUSR 0100
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP 0010
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH 0001
-#endif
-
-//
-// define this so we can do inplace editing
-//
-
-#define SUFFIX
-
-//
-// stubs
-//
-#if !defined(__BORLANDC__)
-extern int       ioctl (int, unsigned int, long);
-#endif
-extern rb_uid_t  getuid (void);
-extern rb_uid_t  geteuid (void);
-extern rb_gid_t  getgid (void);
-extern rb_gid_t  getegid (void);
-extern int       setuid (rb_uid_t);
-extern int       setgid (rb_gid_t);
-
-extern char *rb_w32_strerror(int);
-
-#define strerror(e) rb_w32_strerror(e)
-
-#define PIPE_BUF 1024
-
-#define LOCK_SH 1
-#define LOCK_EX 2
-#define LOCK_NB 4
-#define LOCK_UN 8
-
-
-#ifndef SIGINT
-#define SIGINT 2
-#endif
-#ifndef SIGKILL
-#define SIGKILL	9
-#endif
-
-
-/* #undef va_start */
-/* #undef va_end */
-
-/* winsock error map */
-#define EWOULDBLOCK	WSAEWOULDBLOCK
-#define EINPROGRESS	WSAEINPROGRESS
-#define EALREADY	WSAEALREADY
-#define ENOTSOCK	WSAENOTSOCK
-#define EDESTADDRREQ	WSAEDESTADDRREQ
-#define EMSGSIZE	WSAEMSGSIZE
-#define EPROTOTYPE	WSAEPROTOTYPE
-#define ENOPROTOOPT	WSAENOPROTOOPT
-#define EPROTONOSUPPORT	WSAEPROTONOSUPPORT
-#define ESOCKTNOSUPPORT	WSAESOCKTNOSUPPORT
-#define EOPNOTSUPP	WSAEOPNOTSUPP
-#define EPFNOSUPPORT	WSAEPFNOSUPPORT
-#define EAFNOSUPPORT	WSAEAFNOSUPPORT
-#define EADDRINUSE	WSAEADDRINUSE
-#define EADDRNOTAVAIL	WSAEADDRNOTAVAIL
-#define ENETDOWN	WSAENETDOWN
-#define ENETUNREACH	WSAENETUNREACH
-#define ENETRESET	WSAENETRESET
-#define ECONNABORTED	WSAECONNABORTED
-#define ECONNRESET	WSAECONNRESET
-#define ENOBUFS		WSAENOBUFS
-#define EISCONN		WSAEISCONN
-#define ENOTCONN	WSAENOTCONN
-#define ESHUTDOWN	WSAESHUTDOWN
-#define ETOOMANYREFS	WSAETOOMANYREFS
-#define ETIMEDOUT	WSAETIMEDOUT
-#define ECONNREFUSED	WSAECONNREFUSED
-#define ELOOP		WSAELOOP
-/*#define ENAMETOOLONG	WSAENAMETOOLONG*/
-#define EHOSTDOWN	WSAEHOSTDOWN
-#define EHOSTUNREACH	WSAEHOSTUNREACH
-/*#define ENOTEMPTY	WSAENOTEMPTY*/
-#define EPROCLIM	WSAEPROCLIM
-#define EUSERS		WSAEUSERS
-#define EDQUOT		WSAEDQUOT
-#define ESTALE		WSAESTALE
-#define EREMOTE		WSAEREMOTE
-
-#define F_SETFL 1
-#define O_NONBLOCK 1
-
-#ifdef accept
-#undef accept
-#endif
-#define accept(s, a, l)		rb_w32_accept(s, a, l)
-
-#ifdef bind
-#undef bind
-#endif
-#define bind(s, a, l)		rb_w32_bind(s, a, l)
-
-#ifdef connect
-#undef connect
-#endif
-#define connect(s, a, l)	rb_w32_connect(s, a, l)
-
-#undef FD_SET
-#define FD_SET(f, s)		rb_w32_fdset(f, s)
-
-#undef FD_CLR
-#define FD_CLR(f, s)		rb_w32_fdclr(f, s)
-
-#undef FD_ISSET
-#define FD_ISSET(f, s)		rb_w32_fdisset(f, s)
-
-#undef select
-#define select(n, r, w, e, t)	rb_w32_select(n, r, w, e, t)
-
-#ifdef getpeername
-#undef getpeername
-#endif
-#define getpeername(s, a, l)	rb_w32_getpeername(s, a, l)
-
-#ifdef getsockname
-#undef getsockname
-#endif
-#define getsockname(s, a, l)	rb_w32_getsockname(s, a, l)
-
-#ifdef getsockopt
-#undef getsockopt
-#endif
-#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l)
-
-#ifdef ioctlsocket
-#undef ioctlsocket
-#endif
-#define ioctlsocket(s, c, a)	rb_w32_ioctlsocket(s, c, a)
-
-#ifdef listen
-#undef listen
-#endif
-#define listen(s, b)		rb_w32_listen(s, b)
-
-#ifdef recv
-#undef recv
-#endif
-#define recv(s, b, l, f)	rb_w32_recv(s, b, l, f)
-
-#ifdef recvfrom
-#undef recvfrom
-#endif
-#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl)
-
-#ifdef send
-#undef send
-#endif
-#define send(s, b, l, f)	rb_w32_send(s, b, l, f)
-
-#ifdef sendto
-#undef sendto
-#endif
-#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl)
-
-#ifdef setsockopt
-#undef setsockopt
-#endif
-#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l)
-
-#ifdef shutdown
-#undef shutdown
-#endif
-#define shutdown(s, h)		rb_w32_shutdown(s, h)
-
-#ifdef socket
-#undef socket
-#endif
-#define socket(s, t, p)		rb_w32_socket(s, t, p)
-
-#ifdef gethostbyaddr
-#undef gethostbyaddr
-#endif
-#define gethostbyaddr(a, l, t)	rb_w32_gethostbyaddr(a, l, t)
-
-#ifdef gethostbyname
-#undef gethostbyname
-#endif
-#define gethostbyname(n)	rb_w32_gethostbyname(n)
-
-#ifdef gethostname
-#undef gethostname
-#endif
-#define gethostname(n, l)	rb_w32_gethostname(n, l)
-
-#ifdef getprotobyname
-#undef getprotobyname
-#endif
-#define getprotobyname(n)	rb_w32_getprotobyname(n)
-
-#ifdef getprotobynumber
-#undef getprotobynumber
-#endif
-#define getprotobynumber(n)	rb_w32_getprotobynumber(n)
-
-#ifdef getservbyname
-#undef getservbyname
-#endif
-#define getservbyname(n, p)	rb_w32_getservbyname(n, p)
-
-#ifdef getservbyport
-#undef getservbyport
-#endif
-#define getservbyport(p, pr)	rb_w32_getservbyport(p, pr)
-
-#ifdef get_osfhandle
-#undef get_osfhandle
-#endif
-#define get_osfhandle(h)	rb_w32_get_osfhandle(h)
-
-#ifdef getcwd
-#undef getcwd
-#endif
-#define getcwd(b, s)		rb_w32_getcwd(b, s)
-
-#ifdef getenv
-#undef getenv
-#endif
-#define getenv(n)		rb_w32_getenv(n)
-
-#ifdef rename
-#undef rename
-#endif
-#define rename(o, n)		rb_w32_rename(o, n)
-
-struct tms {
-	long	tms_utime;
-	long	tms_stime;
-	long	tms_cutime;
-	long	tms_cstime;
-};
-
-#ifdef times
-#undef times
-#endif
-#define times(t) rb_w32_times(t)
-int rb_w32_times(struct tms *);
-
-/* thread stuff */
-HANDLE GetCurrentThreadHandle(void);
-void rb_w32_interrupted(void);
-int  rb_w32_main_context(int arg, void (*handler)(int));
-int  rb_w32_sleep(unsigned long msec);
-void rb_w32_enter_critical(void);
-void rb_w32_leave_critical(void);
-int  rb_w32_putc(int, FILE*);
-int  rb_w32_getc(FILE*);
-int  rb_w32_close(int);
-int  rb_w32_fclose(FILE*);
-size_t rb_w32_read(int, void *, size_t);
-size_t rb_w32_write(int, const void *, size_t);
-int  rb_w32_utime(const char *, struct utimbuf *);
-#define Sleep(msec) (void)rb_w32_sleep(msec)
-
-/*
-== ***CAUTION***
-Since this function is very dangerous, ((*NEVER*))
-* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or,
-* use anything like TRAP_BEG...TRAP_END block structure,
-in asynchronous_func_t.
-*/
-typedef DWORD (*asynchronous_func_t)(DWORD self, int argc, DWORD* argv);
-DWORD rb_w32_asynchronize(asynchronous_func_t func, DWORD self, int argc, DWORD* argv, DWORD intrval);
-
-#endif
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32ole.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32ole.so
deleted file mode 100644
index cc7603a..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/i386-mswin32/win32ole.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/importenv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/importenv.rb
deleted file mode 100644
index 8e1ba33..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/importenv.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# importenv.rb -- imports environment variables as global variables, Perlish ;(
-#
-# Usage:
-#
-#  require 'importenv'
-#  p $USER
-#  $USER = "matz"
-#  p ENV["USER"]
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: importenv is deprecated after Ruby 1.8.1 (no replacement)"
-
-for k,v in ENV
-  next unless /^[a-zA-Z][_a-zA-Z0-9]*/ =~ k
-  eval <<EOS
-  $#{k} = v
-  trace_var "$#{k}", proc{|v|
-    ENV[%q!#{k}!] = v
-    $#{k} = v
-    if v == nil
-      untrace_var "$#{k}"
-    end
-  }
-EOS
-end
-
-if __FILE__ == $0
-  p $TERM
-  $TERM = nil
-  p $TERM
-  p ENV["TERM"]
-  $TERM = "foo"
-  p ENV["TERM"]
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/io/nonblock.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/io/nonblock.rb
deleted file mode 100644
index 2103fdf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/io/nonblock.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require "fcntl"
-class IO
-  def nonblock?
-    (fcntl(Fcntl::F_GETFL) & File::NONBLOCK) != 0
-  end
-
-  def nonblock=(nb)
-    f = fcntl(Fcntl::F_GETFL)
-    if nb
-      f |= File::NONBLOCK
-    else
-      f &= ~File::NONBLOCK
-    end
-    fcntl(Fcntl::F_SETFL, f)
-  end
-
-  def nonblock(nb = true)
-    nb, self.nonblock = nonblock?, nb
-    yield
-  ensure
-    self.nonblock = nb
-  end
-end if defined?(Fcntl::F_GETFL)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ipaddr.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ipaddr.rb
deleted file mode 100644
index 1e77319..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ipaddr.rb
+++ /dev/null
@@ -1,766 +0,0 @@
-#
-# ipaddr.rb - A class to manipulate an IP address
-#
-# Copyright (c) 2002 Hajimu UMEMOTO <ume at mahoroba.org>.
-# All rights reserved.
-#
-# You can redistribute and/or modify it under the same terms as Ruby.
-#
-# $Id: ipaddr.rb 18047 2008-07-12 15:07:29Z shyouhei $
-#
-# TODO:
-#   - scope_id support
-require 'socket'
-
-unless Socket.const_defined? "AF_INET6"
-  class Socket
-    AF_INET6 = Object.new
-  end
-
-  class << IPSocket
-    def valid_v4?(addr)
-      if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr
-        return $~.captures.all? {|i| i.to_i < 256}
-      end
-      return false
-    end
-
-    def valid_v6?(addr)
-      # IPv6 (normal)
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*\Z/ =~ addr
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
-      return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
-      # IPv6 (IPv4 compat)
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:/ =~ addr && valid_v4?($')
-      return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
-      return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
-
-      false
-    end
-
-    def valid?(addr)
-      valid_v4?(addr) || valid_v6?(addr)
-    end
-
-    alias getaddress_orig getaddress
-    def getaddress(s)
-      if valid?(s)
-        s
-      elsif /\A[-A-Za-z\d.]+\Z/ =~ s
-        getaddress_orig(s)
-      else
-        raise ArgumentError, "invalid address"
-      end
-    end
-  end
-end
-
-# IPAddr provides a set of methods to manipulate an IP address.  Both IPv4 and
-# IPv6 are supported.
-#
-# == Example
-#
-#   require 'ipaddr'
-#   
-#   ipaddr1 = IPAddr.new "3ffe:505:2::1"
-#   
-#   p ipaddr1			#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
-#   
-#   p ipaddr1.to_s		#=> "3ffe:505:2::1"
-#   
-#   ipaddr2 = ipaddr1.mask(48)	#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>
-#   
-#   p ipaddr2.to_s		#=> "3ffe:505:2::"
-#   
-#   ipaddr3 = IPAddr.new "192.168.2.0/24"
-#   
-#   p ipaddr3			#=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
-
-class IPAddr
-
-  IN4MASK = 0xffffffff
-  IN6MASK = 0xffffffffffffffffffffffffffffffff
-  IN6FORMAT = (["%.4x"] * 8).join(':')
-
-  # Returns the address family of this IP address.
-  attr :family
-
-  # Creates a new ipaddr containing the given network byte ordered
-  # string form of an IP address.
-  def IPAddr::new_ntoh(addr)
-    return IPAddr.new(IPAddr::ntop(addr))
-  end
-
-  # Convert a network byte ordered string form of an IP address into
-  # human readable form.
-  def IPAddr::ntop(addr)
-    case addr.size
-    when 4
-      s = addr.unpack('C4').join('.')
-    when 16
-      s = IN6FORMAT % addr.unpack('n8')
-    else
-      raise ArgumentError, "unsupported address family"
-    end
-    return s
-  end
-
-  # Returns a new ipaddr built by bitwise AND.
-  def &(other)
-    return self.clone.set(@addr & other.to_i)
-  end
-
-  # Returns a new ipaddr built by bitwise OR.
-  def |(other)
-    return self.clone.set(@addr | other.to_i)
-  end
-
-  # Returns a new ipaddr built by bitwise right-shift.
-  def >>(num)
-    return self.clone.set(@addr >> num)
-  end
-
-  # Returns a new ipaddr built by bitwise left shift.
-  def <<(num)
-    return self.clone.set(addr_mask(@addr << num))
-  end
-
-  # Returns a new ipaddr built by bitwise negation.
-  def ~
-    return self.clone.set(addr_mask(~@addr))
-  end
-
-  # Returns true if two ipaddr are equal.
-  def ==(other)
-    if other.kind_of?(IPAddr) && @family != other.family
-      return false
-    end
-    return (@addr == other.to_i)
-  end
-
-  # Returns a new ipaddr built by masking IP address with the given
-  # prefixlen/netmask. (e.g. 8, 64, "255.255.255.0", etc.)
-  def mask(prefixlen)
-    return self.clone.mask!(prefixlen)
-  end
-
-  # Returns true if the given ipaddr is in the range.
-  #
-  # e.g.:
-  #   require 'ipaddr'
-  #   net1 = IPAddr.new("192.168.2.0/24")
-  #   p net1.include?(IPAddr.new("192.168.2.0"))	#=> true
-  #   p net1.include?(IPAddr.new("192.168.2.255"))	#=> true
-  #   p net1.include?(IPAddr.new("192.168.3.0"))	#=> false
-  def include?(other)
-    if ipv4_mapped?
-      if (@mask_addr >> 32) != 0xffffffffffffffffffffffff
-	return false
-      end
-      mask_addr = (@mask_addr & IN4MASK)
-      addr = (@addr & IN4MASK)
-      family = Socket::AF_INET
-    else
-      mask_addr = @mask_addr
-      addr = @addr
-      family = @family
-    end
-    if other.kind_of?(IPAddr)
-      if other.ipv4_mapped?
-	other_addr = (other.to_i & IN4MASK)
-	other_family = Socket::AF_INET
-      else
-	other_addr = other.to_i
-	other_family = other.family
-      end
-    else # Not IPAddr - assume integer in same family as us
-      other_addr   = other.to_i
-      other_family = family
-    end
-
-    if family != other_family
-      return false
-    end
-    return ((addr & mask_addr) == (other_addr & mask_addr))
-  end
-  alias === include?
-
-  # Returns the integer representation of the ipaddr.
-  def to_i
-    return @addr
-  end
-
-  # Returns a string containing the IP address representation.
-  def to_s
-    str = to_string
-    return str if ipv4?
-
-    str.gsub!(/\b0{1,3}([\da-f]+)\b/i, '\1')
-    loop do
-      break if str.sub!(/\A0:0:0:0:0:0:0:0\Z/, '::')
-      break if str.sub!(/\b0:0:0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0:0\b/, ':')
-      break if str.sub!(/\b0:0:0\b/, ':')
-      break if str.sub!(/\b0:0\b/, ':')
-      break
-    end
-    str.sub!(/:{3,}/, '::')
-
-    if /\A::(ffff:)?([\da-f]{1,4}):([\da-f]{1,4})\Z/i =~ str
-      str = sprintf('::%s%d.%d.%d.%d', $1, $2.hex / 256, $2.hex % 256, $3.hex / 256, $3.hex % 256)
-    end
-
-    str
-  end
-
-  # Returns a string containing the IP address representation in
-  # canonical form.
-  def to_string
-    return _to_string(@addr)
-  end
-
-  # Returns a network byte ordered string form of the IP address.
-  def hton
-    case @family
-    when Socket::AF_INET
-      return [@addr].pack('N')
-    when Socket::AF_INET6
-      return (0..7).map { |i|
-	(@addr >> (112 - 16 * i)) & 0xffff
-      }.pack('n8')
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  # Returns true if the ipaddr is an IPv4 address.
-  def ipv4?
-    return @family == Socket::AF_INET
-  end
-
-  # Returns true if the ipaddr is an IPv6 address.
-  def ipv6?
-    return @family == Socket::AF_INET6
-  end
-
-  # Returns true if the ipaddr is an IPv4-mapped IPv6 address.
-  def ipv4_mapped?
-    return ipv6? && (@addr >> 32) == 0xffff
-  end
-
-  # Returns true if the ipaddr is an IPv4-compatible IPv6 address.
-  def ipv4_compat?
-    if !ipv6? || (@addr >> 32) != 0
-      return false
-    end
-    a = (@addr & IN4MASK)
-    return a != 0 && a != 1
-  end
-
-  # Returns a new ipaddr built by converting the native IPv4 address
-  # into an IPv4-mapped IPv6 address.
-  def ipv4_mapped
-    if !ipv4?
-      raise ArgumentError, "not an IPv4 address"
-    end
-    return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
-  end
-
-  # Returns a new ipaddr built by converting the native IPv4 address
-  # into an IPv4-compatible IPv6 address.
-  def ipv4_compat
-    if !ipv4?
-      raise ArgumentError, "not an IPv4 address"
-    end
-    return self.clone.set(@addr, Socket::AF_INET6)
-  end
-
-  # Returns a new ipaddr built by converting the IPv6 address into a
-  # native IPv4 address.  If the IP address is not an IPv4-mapped or
-  # IPv4-compatible IPv6 address, returns self.
-  def native
-    if !ipv4_mapped? && !ipv4_compat?
-      return self
-    end
-    return self.clone.set(@addr & IN4MASK, Socket::AF_INET)
-  end
-
-  # Returns a string for DNS reverse lookup.  It returns a string in
-  # RFC3172 form for an IPv6 address.
-  def reverse
-    case @family
-    when Socket::AF_INET
-      return _reverse + ".in-addr.arpa"
-    when Socket::AF_INET6
-      return ip6_arpa
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  # Returns a string for DNS reverse lookup compatible with RFC3172.
-  def ip6_arpa
-    if !ipv6?
-      raise ArgumentError, "not an IPv6 address"
-    end
-    return _reverse + ".ip6.arpa"
-  end
-
-  # Returns a string for DNS reverse lookup compatible with RFC1886.
-  def ip6_int
-    if !ipv6?
-      raise ArgumentError, "not an IPv6 address"
-    end
-    return _reverse + ".ip6.int"
-  end
-
-  # Returns a string containing a human-readable representation of the
-  # ipaddr. ("#<IPAddr: family:address/mask>")
-  def inspect
-    case @family
-    when Socket::AF_INET
-      af = "IPv4"
-    when Socket::AF_INET6
-      af = "IPv6"
-    else
-      raise "unsupported address family"
-    end
-    return sprintf("#<%s: %s:%s/%s>", self.class.name,
-		   af, _to_string(@addr), _to_string(@mask_addr))
-  end
-
-  protected
-
-  def set(addr, *family)
-    case family[0] ? family[0] : @family
-    when Socket::AF_INET
-      if addr < 0 || addr > IN4MASK
-	raise ArgumentError, "invalid address"
-      end
-    when Socket::AF_INET6
-      if addr < 0 || addr > IN6MASK
-	raise ArgumentError, "invalid address"
-      end
-    else
-      raise ArgumentError, "unsupported address family"
-    end
-    @addr = addr
-    if family[0]
-      @family = family[0]
-    end
-    return self
-  end
-
-  def mask!(mask)
-    if mask.kind_of?(String)
-      if mask =~ /^\d+$/
-	prefixlen = mask.to_i
-      else
-	m = IPAddr.new(mask)
-	if m.family != @family
-	  raise ArgumentError, "address family is not same"
-	end
-	@mask_addr = m.to_i
-	@addr &= @mask_addr
-	return self
-      end
-    else
-      prefixlen = mask
-    end
-    case @family
-    when Socket::AF_INET
-      if prefixlen < 0 || prefixlen > 32
-	raise ArgumentError, "invalid length"
-      end
-      masklen = 32 - prefixlen
-      @mask_addr = ((IN4MASK >> masklen) << masklen)
-    when Socket::AF_INET6
-      if prefixlen < 0 || prefixlen > 128
-	raise ArgumentError, "invalid length"
-      end
-      masklen = 128 - prefixlen
-      @mask_addr = ((IN6MASK >> masklen) << masklen)
-    else
-      raise "unsupported address family"
-    end
-    @addr = ((@addr >> masklen) << masklen)
-    return self
-  end
-
-  private
-
-  # Creates a new ipaddr containing the given human readable form of
-  # an IP address.  It also accepts `address/prefixlen' and
-  # `address/mask'.  When prefixlen or mask is specified, it returns a
-  # masked ipaddr.  IPv6 address may beenclosed with `[' and `]'.
-  #
-  # Although an address family is determined automatically from a
-  # specified address, you can specify an address family explicitly by
-  # the optional second argument.
-  def initialize(addr = '::', family = Socket::AF_UNSPEC)
-    if !addr.kind_of?(String)
-      if family != Socket::AF_INET6 && family != Socket::AF_INET
-	raise ArgumentError, "unsupported address family"
-      end
-      set(addr, family)
-      @mask_addr = (family == Socket::AF_INET) ? IN4MASK : IN6MASK
-      return
-    end
-    prefix, prefixlen = addr.split('/')
-    if prefix =~ /^\[(.*)\]$/i
-      prefix = $1
-      family = Socket::AF_INET6
-    end
-    # It seems AI_NUMERICHOST doesn't do the job.
-    #Socket.getaddrinfo(left, nil, Socket::AF_INET6, Socket::SOCK_STREAM, nil,
-    #		       Socket::AI_NUMERICHOST)
-    begin
-      IPSocket.getaddress(prefix)		# test if address is vaild
-    rescue
-      raise ArgumentError, "invalid address"
-    end
-    @addr = @family = nil
-    if family == Socket::AF_UNSPEC || family == Socket::AF_INET
-      @addr = in_addr(prefix)
-      if @addr
-	@family = Socket::AF_INET
-      end
-    end
-    if !@addr && (family == Socket::AF_UNSPEC || family == Socket::AF_INET6)
-      @addr = in6_addr(prefix)
-      @family = Socket::AF_INET6
-    end
-    if family != Socket::AF_UNSPEC && @family != family
-      raise ArgumentError, "address family unmatch"
-    end
-    if prefixlen
-      mask!(prefixlen)
-    else
-      @mask_addr = (@family == Socket::AF_INET) ? IN4MASK : IN6MASK
-    end
-  end
-
-  def in_addr(addr)
-    if addr =~ /^\d+\.\d+\.\d+\.\d+$/
-      n = 0
-      addr.split('.').each { |i|
-	n <<= 8
-	n += i.to_i
-      }
-      return n
-    end
-    return nil
-  end
-
-  def in6_addr(left)
-    case left
-    when /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i
-      return in_addr($1) + 0xffff00000000
-    when /^::(\d+\.\d+\.\d+\.\d+)$/i
-      return in_addr($1)
-    when /[^0-9a-f:]/i
-      raise ArgumentError, "invalid address"
-    when /^(.*)::(.*)$/
-      left, right = $1, $2
-    else
-      right = ''
-    end
-    l = left.split(':')
-    r = right.split(':')
-    rest = 8 - l.size - r.size
-    if rest < 0
-      return nil
-    end
-    a = [l, Array.new(rest, '0'), r].flatten!
-    n = 0
-    a.each { |i|
-      n <<= 16
-      n += i.hex
-    }
-    return n
-  end
-
-  def addr_mask(addr)
-    case @family
-    when Socket::AF_INET
-      addr &= IN4MASK
-    when Socket::AF_INET6
-      addr &= IN6MASK
-    else
-      raise "unsupported address family"
-    end
-    return addr
-  end
-
-  def _reverse
-    case @family
-    when Socket::AF_INET
-      return (0..3).map { |i|
-	(@addr >> (8 * i)) & 0xff
-      }.join('.')
-    when Socket::AF_INET6
-      return ("%.32x" % @addr).reverse!.gsub!(/.(?!$)/, '\&.')
-    else
-      raise "unsupported address family"
-    end
-  end
-
-  def _to_string(addr)
-    case @family
-    when Socket::AF_INET
-      return (0..3).map { |i|
-	(addr >> (24 - 8 * i)) & 0xff
-      }.join('.')
-    when Socket::AF_INET6
-      return (("%.32x" % addr).gsub!(/.{4}(?!$)/, '\&:'))
-    else
-      raise "unsupported address family"
-    end
-  end
-
-end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-require 'test/unit/ui/console/testrunner'
-
-class TC_IPAddr < Test::Unit::TestCase
-  def test_s_new
-    assert_nothing_raised {
-      IPAddr.new("3FFE:505:ffff::/48")
-      IPAddr.new("0:0:0:1::")
-      IPAddr.new("2001:200:300::/48")
-    }
-
-    a = IPAddr.new
-    assert_equal("::", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("0123:4567:89ab:cdef:0ABC:DEF0:1234:5678")
-    assert_equal("123:4567:89ab:cdef:abc:def0:1234:5678", a.to_s)
-    assert_equal("0123:4567:89ab:cdef:0abc:def0:1234:5678", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("3ffe:505:2::/48")
-    assert_equal("3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(false, a.ipv4?)
-    assert_equal(true, a.ipv6?)
-    assert_equal("#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>", a.inspect)
-
-    a = IPAddr.new("3ffe:505:2::/ffff:ffff:ffff::")
-    assert_equal("3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-
-    a = IPAddr.new("0.0.0.0")
-    assert_equal("0.0.0.0", a.to_s)
-    assert_equal("0.0.0.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-
-    a = IPAddr.new("192.168.1.2")
-    assert_equal("192.168.1.2", a.to_s)
-    assert_equal("192.168.1.2", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-    assert_equal(true, a.ipv4?)
-    assert_equal(false, a.ipv6?)
-
-    a = IPAddr.new("192.168.1.2/24")
-    assert_equal("192.168.1.0", a.to_s)
-    assert_equal("192.168.1.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-    assert_equal("#<IPAddr: IPv4:192.168.1.0/255.255.255.0>", a.inspect)
-
-    a = IPAddr.new("192.168.1.2/255.255.255.0")
-    assert_equal("192.168.1.0", a.to_s)
-    assert_equal("192.168.1.0", a.to_string)
-    assert_equal(Socket::AF_INET, a.family)
-
-    assert_equal("0:0:0:1::", IPAddr.new("0:0:0:1::").to_s)
-    assert_equal("2001:200:300::", IPAddr.new("2001:200:300::/48").to_s)
-
-    assert_equal("2001:200:300::", IPAddr.new("[2001:200:300::]/48").to_s)
-
-    [
-      ["fe80::1%fxp0"],
-      ["::1/255.255.255.0"],
-      ["::1:192.168.1.2/120"],
-      [IPAddr.new("::1").to_i],
-      ["::ffff:192.168.1.2/120", Socket::AF_INET],
-      ["[192.168.1.2]/120"],
-    ].each { |args|
-      assert_raises(ArgumentError) {
-	IPAddr.new(*args)
-      }
-    }
-  end
-
-  def test_s_new_ntoh
-    addr = ''
-    IPAddr.new("1234:5678:9abc:def0:1234:5678:9abc:def0").hton.each_byte { |c|
-      addr += sprintf("%02x", c)
-    }
-    assert_equal("123456789abcdef0123456789abcdef0", addr)
-    addr = ''
-    IPAddr.new("123.45.67.89").hton.each_byte { |c|
-      addr += sprintf("%02x", c)
-    }
-    assert_equal(sprintf("%02x%02x%02x%02x", 123, 45, 67, 89), addr)
-    a = IPAddr.new("3ffe:505:2::")
-    assert_equal("3ffe:505:2::", IPAddr.new_ntoh(a.hton).to_s)
-    a = IPAddr.new("192.168.2.1")
-    assert_equal("192.168.2.1", IPAddr.new_ntoh(a.hton).to_s)
-  end
-
-  def test_ipv4_compat
-    a = IPAddr.new("::192.168.1.2")
-    assert_equal("::192.168.1.2", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:0000:c0a8:0102", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(true, a.ipv4_compat?)
-    b = a.native
-    assert_equal("192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET, b.family)
-    assert_equal(false, b.ipv4_compat?)
-
-    a = IPAddr.new("192.168.1.2")
-    b = a.ipv4_compat
-    assert_equal("::192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET6, b.family)
-  end
-
-  def test_ipv4_mapped
-    a = IPAddr.new("::ffff:192.168.1.2")
-    assert_equal("::ffff:192.168.1.2", a.to_s)
-    assert_equal("0000:0000:0000:0000:0000:ffff:c0a8:0102", a.to_string)
-    assert_equal(Socket::AF_INET6, a.family)
-    assert_equal(true, a.ipv4_mapped?)
-    b = a.native
-    assert_equal("192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET, b.family)
-    assert_equal(false, b.ipv4_mapped?)
-
-    a = IPAddr.new("192.168.1.2")
-    b = a.ipv4_mapped
-    assert_equal("::ffff:192.168.1.2", b.to_s)
-    assert_equal(Socket::AF_INET6, b.family)
-  end
-
-  def test_reverse
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").reverse)
-    assert_equal("1.2.168.192.in-addr.arpa", IPAddr.new("192.168.2.1").reverse)
-  end
-
-  def test_ip6_arpa
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").ip6_arpa)
-    assert_raises(ArgumentError) {
-      IPAddr.new("192.168.2.1").ip6_arpa
-    }
-  end
-
-  def test_ip6_int
-    assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddr.new("3ffe:505:2::f").ip6_int)
-    assert_raises(ArgumentError) {
-      IPAddr.new("192.168.2.1").ip6_int
-    }
-  end
-
-  def test_to_s
-    assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0001", IPAddr.new("3ffe:505:2::1").to_string)
-    assert_equal("3ffe:505:2::1", IPAddr.new("3ffe:505:2::1").to_s)
-  end
-end
-
-class TC_Operator < Test::Unit::TestCase
-
-  IN6MASK32  = "ffff:ffff::"
-  IN6MASK128 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
-
-  def setup
-    @in6_addr_any = IPAddr.new()
-    @a = IPAddr.new("3ffe:505:2::/48")
-    @b = IPAddr.new("0:0:0:1::")
-    @c = IPAddr.new(IN6MASK32)
-  end
-  alias set_up setup
-
-  def test_or
-    assert_equal("3ffe:505:2:1::", (@a | @b).to_s)
-    a = @a
-    a |= @b
-    assert_equal("3ffe:505:2:1::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-    assert_equal("3ffe:505:2:1::",
-		 (@a | 0x00000000000000010000000000000000).to_s)
-  end
-
-  def test_and
-    assert_equal("3ffe:505::", (@a & @c).to_s)
-    a = @a
-    a &= @c
-    assert_equal("3ffe:505::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-    assert_equal("3ffe:505::", (@a & 0xffffffff000000000000000000000000).to_s)
-  end
-
-  def test_shift_right
-    assert_equal("0:3ffe:505:2::", (@a >> 16).to_s)
-    a = @a
-    a >>= 16
-    assert_equal("0:3ffe:505:2::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_shift_left
-    assert_equal("505:2::", (@a << 16).to_s)
-    a = @a
-    a <<= 16
-    assert_equal("505:2::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_carrot
-    a = ~@in6_addr_any
-    assert_equal(IN6MASK128, a.to_s)
-    assert_equal("::", @in6_addr_any.to_s)
-  end
-
-  def test_equal
-    assert_equal(true, @a == IPAddr.new("3ffe:505:2::"))
-    assert_equal(false, @a == IPAddr.new("3ffe:505:3::"))
-    assert_equal(true, @a != IPAddr.new("3ffe:505:3::"))
-    assert_equal(false, @a != IPAddr.new("3ffe:505:2::"))
-  end
-
-  def test_mask
-    a = @a.mask(32)
-    assert_equal("3ffe:505::", a.to_s)
-    assert_equal("3ffe:505:2::", @a.to_s)
-  end
-
-  def test_include?
-    assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::")))
-    assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::1")))
-    assert_equal(false, @a.include?(IPAddr.new("3ffe:505:3::")))
-    net1 = IPAddr.new("192.168.2.0/24")
-    assert_equal(true, net1.include?(IPAddr.new("192.168.2.0")))
-    assert_equal(true, net1.include?(IPAddr.new("192.168.2.255")))
-    assert_equal(false, net1.include?(IPAddr.new("192.168.3.0")))
-    # test with integer parameter
-    int = (192 << 24) + (168 << 16) + (2 << 8) + 13
-
-    assert_equal(true, net1.include?(int))
-    assert_equal(false, net1.include?(int+255))
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb.rb
deleted file mode 100644
index 9ca2313..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb.rb
+++ /dev/null
@@ -1,346 +0,0 @@
-#
-#   irb.rb - irb main module
-#   	$Release Version: 0.9.5 $
-#   	$Revision: 17127 $
-#   	$Date: 2008-06-13 12:02:17 +0900 (Fri, 13 Jun 2008) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#
-#
-require "e2mmap"
-
-require "irb/init"
-require "irb/context"
-require "irb/extend-command"
-#require "irb/workspace"
-
-require "irb/ruby-lex"
-require "irb/input-method"
-require "irb/locale"
-
-STDOUT.sync = true
-
-module IRB
-  @RCS_ID='-$Id: irb.rb 17127 2008-06-13 03:02:17Z shyouhei $-'
-
-  class Abort < Exception;end
-
-  #
-  @CONF = {}
-
-  def IRB.conf
-    @CONF
-  end
-
-  # IRB version method
-  def IRB.version
-    if v = @CONF[:VERSION] then return v end
-
-    require "irb/version"
-    rv = @RELEASE_VERSION.sub(/\.0/, "")
-    @CONF[:VERSION] = format("irb %s(%s)", rv, @LAST_UPDATE_DATE)
-  end
-
-  def IRB.CurrentContext
-    IRB.conf[:MAIN_CONTEXT]
-  end
-
-  # initialize IRB and start TOP_LEVEL irb
-  def IRB.start(ap_path = nil)
-    $0 = File::basename(ap_path, ".rb") if ap_path
-
-    IRB.setup(ap_path)
-
-    if @CONF[:SCRIPT]
-      irb = Irb.new(nil, @CONF[:SCRIPT])
-    else
-      irb = Irb.new
-    end
-
-    @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
-    @CONF[:MAIN_CONTEXT] = irb.context
-
-    trap("SIGINT") do
-      irb.signal_handle
-    end
-    
-    catch(:IRB_EXIT) do
-      irb.eval_input
-    end
-#    print "\n"
-  end
-
-  def IRB.irb_exit(irb, ret)
-    throw :IRB_EXIT, ret
-  end
-
-  def IRB.irb_abort(irb, exception = Abort)
-    if defined? Thread
-      irb.context.thread.raise exception, "abort then interrupt!!"
-    else
-      raise exception, "abort then interrupt!!"
-    end
-  end
-
-  #
-  # irb interpriter main routine 
-  #
-  class Irb
-    def initialize(workspace = nil, input_method = nil, output_method = nil)
-      @context = Context.new(self, workspace, input_method, output_method)
-      @context.main.extend ExtendCommandBundle
-      @signal_status = :IN_IRB
-
-      @scanner = RubyLex.new
-      @scanner.exception_on_syntax_error = false
-    end
-    attr_reader :context
-    attr_accessor :scanner
-
-    def eval_input
-      @scanner.set_prompt do
-	|ltype, indent, continue, line_no|
-	if ltype
-	  f = @context.prompt_s
-	elsif continue
-	  f = @context.prompt_c
-	elsif indent > 0
-	  f = @context.prompt_n
-	else @context.prompt_i
-	  f = @context.prompt_i
-	end
-	f = "" unless f
-	if @context.prompting?
-	  @context.io.prompt = p = prompt(f, ltype, indent, line_no)
-	else
-	  @context.io.prompt = p = ""
-	end
-	if @context.auto_indent_mode
-	  unless ltype
-            ind = prompt(@context.prompt_i, ltype, indent, line_no)[/.*\z/].size +
-	      indent * 2 - p.size
-	    ind += 2 if continue
-	    @context.io.prompt = p + " " * ind if ind > 0
-	  end
-	end
-      end
-       
-      @scanner.set_input(@context.io) do
-	signal_status(:IN_INPUT) do
-	  if l = @context.io.gets
-	    print l if @context.verbose?
-	  else
-	    if @context.ignore_eof? and @context.io.readable_atfer_eof?
-	      l = "\n"
-	      if @context.verbose?
-		printf "Use \"exit\" to leave %s\n", @context.ap_name
-	      end
-	    end
-	  end
-	  l
-	end
-      end
-
-      @scanner.each_top_level_statement do |line, line_no|
-	signal_status(:IN_EVAL) do
-	  begin
-            line.untaint
-	    @context.evaluate(line, line_no)
-	    output_value if @context.echo?
-	    exc = nil
-	  rescue Interrupt => exc
-	  rescue SystemExit, SignalException
-	    raise
-	  rescue Exception => exc
-	  end
-	  if exc
-	    print exc.class, ": ", exc, "\n"
-	    if exc.backtrace[0] =~ /irb(2)?(\/.*|-.*|\.rb)?:/ && exc.class.to_s !~ /^IRB/
-	      irb_bug = true 
-	    else
-	      irb_bug = false
-	    end
-	    
-	    messages = []
-	    lasts = []
-	    levels = 0
-	    for m in exc.backtrace
-	      m = @context.workspace.filter_backtrace(m) unless irb_bug
-	      if m
-		if messages.size < @context.back_trace_limit
-		  messages.push "\tfrom "+m
-		else
-		  lasts.push "\tfrom "+m
-		  if lasts.size > @context.back_trace_limit
-		    lasts.shift 
-		    levels += 1
-		  end
-		end
-	      end
-	    end
-	    print messages.join("\n"), "\n"
-	    unless lasts.empty?
-	      printf "... %d levels...\n", levels if levels > 0
-	      print lasts.join("\n")
-	    end
-	    print "Maybe IRB bug!!\n" if irb_bug
-	  end
-          if $SAFE > 2
-            abort "Error: irb does not work for $SAFE level higher than 2"
-          end
-	end
-      end
-    end
-
-    def suspend_name(path = nil, name = nil)
-      @context.irb_path, back_path = path, @context.irb_path if path
-      @context.irb_name, back_name = name, @context.irb_name if name
-      begin
-	yield back_path, back_name
-      ensure
-	@context.irb_path = back_path if path
-	@context.irb_name = back_name if name
-      end
-    end
-
-    def suspend_workspace(workspace)
-      @context.workspace, back_workspace = workspace, @context.workspace
-      begin
-	yield back_workspace
-      ensure
-	@context.workspace = back_workspace
-      end
-    end
-
-    def suspend_input_method(input_method)
-      back_io = @context.io
-      @context.instance_eval{@io = input_method}
-      begin
-	yield back_io
-      ensure
-	@context.instance_eval{@io = back_io}
-      end
-    end
-
-    def suspend_context(context)
-      @context, back_context = context, @context
-      begin
-	yield back_context
-      ensure
-	@context = back_context
-      end
-    end
-
-    def signal_handle
-      unless @context.ignore_sigint?
-	print "\nabort!!\n" if @context.verbose?
-	exit
-      end
-
-      case @signal_status
-      when :IN_INPUT
-	print "^C\n"
-	raise RubyLex::TerminateLineInput
-      when :IN_EVAL
-	IRB.irb_abort(self)
-      when :IN_LOAD
-	IRB.irb_abort(self, LoadAbort)
-      when :IN_IRB
-	# ignore
-      else
-	# ignore other cases as well
-      end
-    end
-
-    def signal_status(status)
-      return yield if @signal_status == :IN_LOAD
-
-      signal_status_back = @signal_status
-      @signal_status = status
-      begin
-	yield
-      ensure
-	@signal_status = signal_status_back
-      end
-    end
-
-    def prompt(prompt, ltype, indent, line_no)
-      p = prompt.dup
-      p.gsub!(/%([0-9]+)?([a-zA-Z])/) do
-	case $2
-	when "N"
-	  @context.irb_name
-	when "m"
-	  @context.main.to_s
-	when "M"
-	  @context.main.inspect
-	when "l"
-	  ltype
-	when "i"
-	  if $1 
-	    format("%" + $1 + "d", indent)
-	  else
-	    indent.to_s
-	  end
-	when "n"
-	  if $1 
-	    format("%" + $1 + "d", line_no)
-	  else
-	    line_no.to_s
-	  end
-	when "%"
-	  "%"
-	end
-      end
-      p
-    end
-
-    def output_value
-      if @context.inspect?
-        printf @context.return_format, @context.last_value.inspect
-      else
-        printf @context.return_format, @context.last_value
-      end
-    end
-
-    def inspect
-      ary = []
-      for iv in instance_variables
-	case iv
-	when "@signal_status"
-	  ary.push format("%s=:%s", iv, @signal_status.id2name)
-	when "@context"
-	  ary.push format("%s=%s", iv, eval(iv).__to_s__)
-	else
-	  ary.push format("%s=%s", iv, eval(iv))
-	end
-      end
-      format("#<%s: %s>", self.class, ary.join(", "))
-    end
-  end
-
-  # Singleton method
-  def @CONF.inspect
-    IRB.version unless self[:VERSION]
-
-    array = []
-    for k, v in sort{|a1, a2| a1[0].id2name <=> a2[0].id2name}
-      case k
-      when :MAIN_CONTEXT, :__TMP__EHV__
-	array.push format("CONF[:%s]=...myself...", k.id2name)
-      when :PROMPT
-	s = v.collect{
-	  |kk, vv|
-	  ss = vv.collect{|kkk, vvv| ":#{kkk.id2name}=>#{vvv.inspect}"}
-	  format(":%s=>{%s}", kk.id2name, ss.join(", "))
-	}
-	array.push format("CONF[:%s]={%s}", k.id2name, s.join(", "))
-      else
-	array.push format("CONF[:%s]=%s", k.id2name, v.inspect)
-      end
-    end
-    array.join("\n")
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/chws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/chws.rb
deleted file mode 100644
index 772d4da..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/chws.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#   change-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/change-ws.rb"
-
-module IRB
-  module ExtendCommand
-
-    class CurrentWorkingWorkspace<Nop
-      def execute(*obj)
-	irb_context.main
-      end
-    end
-
-    class ChangeWorkspace<Nop
-      def execute(*obj)
-	irb_context.change_workspace(*obj)
-	irb_context.main
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/fork.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/fork.rb
deleted file mode 100644
index c55344b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/fork.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   fork.rb - 
-#   	$Release Version: 0.9.5 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
- at RCS_ID='-$Id: fork.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-
-module IRB
-  module ExtendCommand
-    class Fork<Nop
-      def execute(&block)
-	pid = send ExtendCommand.irb_original_method_name("fork")
-	unless pid 
-	  class<<self
-	    alias_method :exit, ExtendCommand.irb_original_method_name('exit')
-	  end
-	  if iterator?
-	    begin
-	      yield
-	    ensure
-	      exit
-	    end
-	  end
-	end
-	pid
-      end
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/help.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/help.rb
deleted file mode 100644
index bfb2981..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/help.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-#   help.rb - helper using ri
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#
-# --
-#
-#   
-#
-
-require 'rdoc/ri/ri_driver'
-
-module IRB
-  module ExtendCommand
-    module Help
-      begin
-        @ri = RiDriver.new
-      rescue SystemExit
-      else
-        def self.execute(context, *names)
-          names.each do |name|
-            begin
-              @ri.get_info_for(name.to_s)
-            rescue RiError
-              puts $!.message
-            end
-          end
-          nil
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/load.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/load.rb
deleted file mode 100644
index 317129e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/load.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#   load.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/loader"
-
-module IRB
-  module ExtendCommand
-    class Load<Nop
-      include IrbLoader
-
-      def execute(file_name, priv = nil)
-#	return ruby_load(file_name) unless IRB.conf[:USE_LOADER]
-	return irb_load(file_name, priv)
-      end
-    end
-
-    class Require<Nop
-      include IrbLoader
-      
-      def execute(file_name)
-#	return ruby_require(file_name) unless IRB.conf[:USE_LOADER]
-
-	rex = Regexp.new("#{Regexp.quote(file_name)}(\.o|\.rb)?")
-	return false if $".find{|f| f =~ rex}
-
-	case file_name
-	when /\.rb$/
-	  begin
-	    if irb_load(file_name)
-	      $".push file_name
-	      return true
-	    end
-	  rescue LoadError
-	  end
-	when /\.(so|o|sl)$/
-	  return ruby_require(file_name)
-	end
-	
-	begin
-	  irb_load(f = file_name + ".rb")
-	  $".push f
-	  return true
-	rescue LoadError
-	  return ruby_require(file_name)
-	end
-      end
-    end
-
-    class Source<Nop
-      include IrbLoader
-      def execute(file_name)
-	source_file(file_name)
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/nop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/nop.rb
deleted file mode 100644
index 8c68c43..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/nop.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   nop.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  module ExtendCommand
-    class Nop
-      
-      @RCS_ID='-$Id: nop.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-      def self.execute(conf, *opts)
-	command = new(conf)
-	command.execute(*opts)
-      end
-
-      def initialize(conf)
-	@irb_context = conf
-      end
-
-      attr_reader :irb_context
-
-      def irb
-	@irb_context.irb
-      end
-
-      def execute(*opts)
-	#nop
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/pushws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/pushws.rb
deleted file mode 100644
index f15776a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/pushws.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#   change-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/workspaces.rb"
-
-module IRB
-  module ExtendCommand
-    class Workspaces<Nop
-      def execute(*obj)
-	irb_context.workspaces.collect{|ws| ws.main}
-      end
-    end
-
-    class PushWorkspace<Workspaces
-      def execute(*obj)
-	irb_context.push_workspace(*obj)
-	super
-      end
-    end
-
-    class PopWorkspace<Workspaces
-      def execute(*obj)
-	irb_context.pop_workspace(*obj)
-	super
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/subirb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/subirb.rb
deleted file mode 100644
index 0b8744c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/cmd/subirb.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#   multi.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/nop.rb"
-require "irb/ext/multi-irb"
-
-module IRB
-  module ExtendCommand
-    class IrbCommand<Nop
-      def execute(*obj)
-	IRB.irb(nil, *obj)
-      end
-    end
-
-    class Jobs<Nop
-      def execute
-	IRB.JobManager
-      end
-    end
-
-    class Foreground<Nop
-      def execute(key)
-	IRB.JobManager.switch(key)
-      end
-    end
-
-    class Kill<Nop
-      def execute(*keys)
-	IRB.JobManager.kill(*keys)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/completion.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/completion.rb
deleted file mode 100644
index 8b381a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/completion.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-#
-#   irb/completor.rb - 
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#       From Original Idea of shugo at ruby-lang.org
-#
-
-require "readline"
-
-module IRB
-  module InputCompletor
-
-    @RCS_ID='-$Id: completion.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    ReservedWords = [
-      "BEGIN", "END",
-      "alias", "and", 
-      "begin", "break", 
-      "case", "class",
-      "def", "defined", "do",
-      "else", "elsif", "end", "ensure",
-      "false", "for", 
-      "if", "in", 
-      "module", 
-      "next", "nil", "not",
-      "or", 
-      "redo", "rescue", "retry", "return",
-      "self", "super",
-      "then", "true",
-      "undef", "unless", "until",
-      "when", "while",
-      "yield",
-    ]
-      
-    CompletionProc = proc { |input|
-      bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
-      
-#      puts "input: #{input}"
-
-      case input
-      when /^(\/[^\/]*\/)\.([^.]*)$/
-	# Regexp
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Regexp.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^([^\]]*\])\.([^.]*)$/
-	# Array
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Array.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^([^\}]*\})\.([^.]*)$/
-	# Proc or Hash
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
-	select_message(receiver, message, candidates)
-	
-      when /^(:[^:.]*)$/
- 	# Symbol
-	if Symbol.respond_to?(:all_symbols)
-	  sym = $1
-	  candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
-	  candidates.grep(/^#{sym}/)
-	else
-	  []
-	end
-
-      when /^::([A-Z][^:\.\(]*)$/
-	# Absolute Constant or class methods
-	receiver = $1
-	candidates = Object.constants
-	candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
-
-      when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
-	# Constant or class methods
-	receiver = $1
-	message = Regexp.quote($4)
-	begin
-	  candidates = eval("#{receiver}.constants | #{receiver}.methods", bind)
-	rescue Exception
-	  candidates = []
-	end
-	candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
-
-      when /^(:[^:.]+)\.([^.]*)$/
-	# Symbol
-	receiver = $1
-	message = Regexp.quote($2)
-
-	candidates = Symbol.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)\.([^.]*)$/
-	# Numeric
-	receiver = $1
-	message = Regexp.quote($5)
-
-	begin
-	  candidates = eval(receiver, bind).methods
-	rescue Exception
-	  candidates = []
-	end
-	select_message(receiver, message, candidates)
-
-      when /^(-?0x[0-9a-fA-F_]+)\.([^.]*)$/
-	# Numeric(0xFFFF)
-	receiver = $1
-	message = Regexp.quote($2)
-
-	begin
-	  candidates = eval(receiver, bind).methods
-	rescue Exception
-	  candidates = []
-	end
-	select_message(receiver, message, candidates)
-
-      when /^(\$[^.]*)$/
-	candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
-
-#      when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
-      when /^((\.?[^.]+)+)\.([^.]*)$/
-	# variable
-	receiver = $1
-	message = Regexp.quote($3)
-
-	gv = eval("global_variables", bind)
-	lv = eval("local_variables", bind)
-	cv = eval("self.class.constants", bind)
-	
-	if (gv | lv | cv).include?(receiver)
-	  # foo.func and foo is local var.
-	  candidates = eval("#{receiver}.methods", bind)
-	elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
-	  # Foo::Bar.func
-	  begin
-	    candidates = eval("#{receiver}.methods", bind)
-	  rescue Exception
-	    candidates = []
-	  end
-	else
-	  # func1.func2
-	  candidates = []
-	  ObjectSpace.each_object(Module){|m|
-	    begin
-	      name = m.name
-	    rescue Exception
-	      name = ""
-	    end
-	    next if name != "IRB::Context" and 
-	      /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
-	    candidates.concat m.instance_methods(false)
-	  }
-	  candidates.sort!
-	  candidates.uniq!
-	end
-	select_message(receiver, message, candidates)
-
-      when /^\.([^.]*)$/
-	# unknown(maybe String)
-
-	receiver = ""
-	message = Regexp.quote($1)
-
-	candidates = String.instance_methods(true)
-	select_message(receiver, message, candidates)
-
-      else
-	candidates = eval("methods | private_methods | local_variables | self.class.constants", bind)
-			  
-	(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
-      end
-    }
-
-    Operators = ["%", "&", "*", "**", "+",  "-",  "/",
-      "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
-      "[]", "[]=", "^",]
-
-    def self.select_message(receiver, message, candidates)
-      candidates.grep(/^#{message}/).collect do |e|
-	case e
-	when /^[a-zA-Z_]/
-	  receiver + "." + e
-	when /^[0-9]/
-	when *Operators
-	  #receiver + " " + e
-	end
-      end
-    end
-  end
-end
-
-if Readline.respond_to?("basic_word_break_characters=")
-  Readline.basic_word_break_characters= " \t\n\"\\'`><=;|&{("
-end
-Readline.completion_append_character = nil
-Readline.completion_proc = IRB::InputCompletor::CompletionProc
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/context.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/context.rb
deleted file mode 100644
index de70945..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/context.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-#
-#   irb/context.rb - irb context
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "irb/workspace"
-
-module IRB
-  class Context
-    #
-    # Arguments:
-    #   input_method: nil -- stdin or readline
-    #		      String -- File
-    #		      other -- using this as InputMethod
-    #
-    def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
-      @irb = irb
-      if workspace
-	@workspace = workspace
-      else
-	@workspace = WorkSpace.new
-      end
-      @thread = Thread.current if defined? Thread
-#      @irb_level = 0
-
-      # copy of default configuration
-      @ap_name = IRB.conf[:AP_NAME]
-      @rc = IRB.conf[:RC]
-      @load_modules = IRB.conf[:LOAD_MODULES]
-
-      @use_readline = IRB.conf[:USE_READLINE]
-      @inspect_mode = IRB.conf[:INSPECT_MODE]
-
-      self.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_MODE]
-      self.use_tracer = IRB.conf[:USE_TRACER] if IRB.conf[:USE_TRACER]
-      self.use_loader = IRB.conf[:USE_LOADER] if IRB.conf[:USE_LOADER]
-      self.eval_history = IRB.conf[:EVAL_HISTORY] if IRB.conf[:EVAL_HISTORY]
-
-      @ignore_sigint = IRB.conf[:IGNORE_SIGINT]
-      @ignore_eof = IRB.conf[:IGNORE_EOF]
-
-      @back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT]
-      
-      self.prompt_mode = IRB.conf[:PROMPT_MODE]
-
-      if IRB.conf[:SINGLE_IRB] or !defined?(JobManager)
-	@irb_name = IRB.conf[:IRB_NAME]
-      else
-	@irb_name = "irb#"+IRB.JobManager.n_jobs.to_s
-      end
-      @irb_path = "(" + @irb_name + ")"
-
-      case input_method
-      when nil
-	case use_readline?
-	when nil
-	  if (defined?(ReadlineInputMethod) && STDIN.tty? &&
-	      IRB.conf[:PROMPT_MODE] != :INF_RUBY)
-	    @io = ReadlineInputMethod.new
-	  else
-	    @io = StdioInputMethod.new
-	  end
-	when false
-	  @io = StdioInputMethod.new
-	when true
-	  if defined?(ReadlineInputMethod)
-	    @io = ReadlineInputMethod.new
-	  else
-	    @io = StdioInputMethod.new
-	  end
-	end
-
-      when String
-	@io = FileInputMethod.new(input_method)
-	@irb_name = File.basename(input_method)
-	@irb_path = input_method
-      else
-	@io = input_method
-      end
-      self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
-
-      if output_method
-	@output_method = output_method
-      else
-	@output_method = StdioOutputMethod.new
-      end
-
-      @verbose = IRB.conf[:VERBOSE] 
-      @echo = IRB.conf[:ECHO]
-      if @echo.nil?
-	@echo = true
-      end
-      @debug_level = IRB.conf[:DEBUG_LEVEL]
-    end
-
-    def main
-      @workspace.main
-    end
-
-    attr_reader :workspace_home
-    attr_accessor :workspace
-    attr_reader :thread
-    attr_accessor :io
-    
-    attr_accessor :irb
-    attr_accessor :ap_name
-    attr_accessor :rc
-    attr_accessor :load_modules
-    attr_accessor :irb_name
-    attr_accessor :irb_path
-
-    attr_reader :use_readline
-    attr_reader :inspect_mode
-
-    attr_reader :prompt_mode
-    attr_accessor :prompt_i
-    attr_accessor :prompt_s
-    attr_accessor :prompt_c
-    attr_accessor :prompt_n
-    attr_accessor :auto_indent_mode
-    attr_accessor :return_format
-
-    attr_accessor :ignore_sigint
-    attr_accessor :ignore_eof
-    attr_accessor :echo
-    attr_accessor :verbose
-    attr_reader :debug_level
-
-    attr_accessor :back_trace_limit
-
-    alias use_readline? use_readline
-    alias rc? rc
-    alias ignore_sigint? ignore_sigint
-    alias ignore_eof? ignore_eof
-    alias echo? echo
-
-    def verbose?
-      if @verbose.nil?
-	if defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod) 
-	  false
-	elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
-	  true
-	else
-	  false
-	end
-      end
-    end
-
-    def prompting?
-      verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
-		(defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
-    end
-
-    attr_reader :last_value
-
-    def set_last_value(value)
-      @last_value = value
-      @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
-    end
-
-    attr_reader :irb_name
-
-    def prompt_mode=(mode)
-      @prompt_mode = mode
-      pconf = IRB.conf[:PROMPT][mode]
-      @prompt_i = pconf[:PROMPT_I]
-      @prompt_s = pconf[:PROMPT_S]
-      @prompt_c = pconf[:PROMPT_C]
-      @prompt_n = pconf[:PROMPT_N]
-      @return_format = pconf[:RETURN]
-      if ai = pconf.include?(:AUTO_INDENT)
-	@auto_indent_mode = ai
-      else
-	@auto_indent_mode = IRB.conf[:AUTO_INDENT]
-      end
-    end
-    
-    def inspect?
-      @inspect_mode.nil? or @inspect_mode
-    end
-
-    def file_input?
-      @io.class == FileInputMethod
-    end
-
-    def inspect_mode=(opt)
-      if opt
-	@inspect_mode = opt
-      else
-	@inspect_mode = !@inspect_mode
-      end
-      print "Switch to#{unless @inspect_mode; ' non';end} inspect mode.\n" if verbose?
-      @inspect_mode
-    end
-
-    def use_readline=(opt)
-      @use_readline = opt
-      print "use readline module\n" if @use_readline
-    end
-
-    def debug_level=(value)
-      @debug_level = value
-      RubyLex.debug_level = value
-      SLex.debug_level = value
-    end
-
-    def debug?
-      @debug_level > 0
-    end
-
-    def evaluate(line, line_no)
-      @line_no = line_no
-      set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
-#      @workspace.evaluate("_ = IRB.conf[:MAIN_CONTEXT]._")
-#      @_ = @workspace.evaluate(line, irb_path, line_no)
-    end
-
-    alias __exit__ exit
-    def exit(ret = 0)
-      IRB.irb_exit(@irb, ret)
-    end
-
-    NOPRINTING_IVARS = ["@last_value"]
-    NO_INSPECTING_IVARS = ["@irb", "@io"]
-    IDNAME_IVARS = ["@prompt_mode"]
-
-    alias __inspect__ inspect
-    def inspect
-      array = []
-      for ivar in instance_variables.sort{|e1, e2| e1 <=> e2}
-	name = ivar.sub(/^@(.*)$/){$1}
-	val = instance_eval(ivar)
-	case ivar
-	when *NOPRINTING_IVARS
-	  array.push format("conf.%s=%s", name, "...")
-	when *NO_INSPECTING_IVARS
-	  array.push format("conf.%s=%s", name, val.to_s)
-	when *IDNAME_IVARS
-	  array.push format("conf.%s=:%s", name, val.id2name)
-	else
-	  array.push format("conf.%s=%s", name, val.inspect)
-	end
-      end
-      array.join("\n")
-    end
-    alias __to_s__ to_s
-    alias to_s inspect
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/change-ws.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/change-ws.rb
deleted file mode 100644
index 0fbdd81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/change-ws.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-#   irb/ext/cb.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-  class Context
-
-    def home_workspace
-      if defined? @home_workspace
-	@home_workspace
-      else
-	@home_workspace = @workspace
-      end
-    end
-
-    def change_workspace(*_main)
-      if _main.empty?
-	@workspace = home_workspace 
-	return main
-      end
-      
-      @workspace = WorkSpace.new(_main[0])
-      
-      if !(class<<main;ancestors;end).include?(ExtendCommandBundle)
-	main.extend ExtendCommandBundle
-      end
-    end
-
-#     def change_binding(*_main)
-#       back = @workspace
-#       @workspace = WorkSpace.new(*_main)
-#       unless _main.empty?
-# 	begin
-# 	  main.extend ExtendCommandBundle
-# 	rescue
-# 	  print "can't change binding to: ", main.inspect, "\n"
-# 	  @workspace = back
-# 	  return nil
-# 	end
-#       end
-#       @irb_level += 1
-#       begin
-# 	catch(:SU_EXIT) do
-# 	  @irb.eval_input
-# 	end
-#       ensure
-# 	@irb_level -= 1
-#  	@workspace = back
-#       end
-#     end
-#     alias change_workspace change_binding
-   end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/history.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/history.rb
deleted file mode 100644
index dd014ee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/history.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-#   history.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-
-  class Context
-
-    NOPRINTING_IVARS.push "@eval_history_values"
-
-    alias _set_last_value set_last_value
-
-    def set_last_value(value)
-      _set_last_value(value)
-
-#      @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
-      if @eval_history #and !@eval_history_values.equal?(llv)
- 	@eval_history_values.push @line_no, @last_value
- 	@workspace.evaluate self, "__ = IRB.CurrentContext.instance_eval{@eval_history_values}"
-      end
-
-      @last_value
-    end
-
-    attr_reader :eval_history
-    def eval_history=(no)
-      if no
-	if defined?(@eval_history) && @eval_history
-	  @eval_history_values.size(no)
-	else
-	  @eval_history_values = History.new(no)
-	  IRB.conf[:__TMP__EHV__] = @eval_history_values
-	  @workspace.evaluate(self, "__ = IRB.conf[:__TMP__EHV__]")
-	  IRB.conf.delete(:__TMP_EHV__)
-	end
-      else
-	@eval_history_values = nil
-      end
-      @eval_history = no
-    end
-  end
-
-  class History
-    @RCS_ID='-$Id: history.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize(size = 16)
-      @size = size
-      @contents = []
-    end
-
-    def size(size)
-      if size != 0 && size < @size 
-	@contents = @contents[@size - size .. @size]
-      end
-      @size = size
-    end
-
-    def [](idx)
-      begin
-	if idx >= 0
-	  @contents.find{|no, val| no == idx}[1]
-	else
-	  @contents[idx][1]
-	end
-      rescue NameError
-	nil
-      end
-    end
-
-    def push(no, val)
-      @contents.push [no, val]
-      @contents.shift if @size != 0 && @contents.size > @size
-    end
-    
-    alias real_inspect inspect
-
-    def inspect
-      if @contents.empty?
-	return real_inspect
-      end
-
-      unless (last = @contents.pop)[1].equal?(self)
-	@contents.push last
-	last = nil
-      end
-      str = @contents.collect{|no, val|
-	if val.equal?(self)
-	  "#{no} ...self-history..."
-	else
-	  "#{no} #{val.inspect}"
-	end
-      }.join("\n")
-      if str == ""
-	str = "Empty."
-      end
-      @contents.push last if last
-      str
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/loader.rb
deleted file mode 100644
index 465a793..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/loader.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-#   loader.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-
-module IRB
-  class LoadAbort < Exception;end
-
-  module IrbLoader
-    @RCS_ID='-$Id: loader.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    alias ruby_load load
-    alias ruby_require require
-
-    def irb_load(fn, priv = nil)
-      path = search_file_from_ruby_path(fn)
-      raise LoadError, "No such file to load -- #{fn}" unless path
-
-      load_file(path, priv)
-    end
-
-    def search_file_from_ruby_path(fn)
-      if /^#{Regexp.quote(File::Separator)}/ =~ fn
-	return fn if File.exist?(fn)
-	return nil
-      end
-
-      for path in $:
-	if File.exist?(f = File.join(path, fn))
-	  return f
-	end
-      end
-      return nil
-    end
-
-    def source_file(path)
-      irb.suspend_name(path, File.basename(path)) do
-	irb.suspend_input_method(FileInputMethod.new(path)) do
-	  |back_io|
-	  irb.signal_status(:IN_LOAD) do 
-	    if back_io.kind_of?(FileInputMethod)
-	      irb.eval_input
-	    else
-	      begin
-		irb.eval_input
-	      rescue LoadAbort
-		print "load abort!!\n"
-	      end
-	    end
-	  end
-	end
-      end
-    end
-
-    def load_file(path, priv = nil)
-      irb.suspend_name(path, File.basename(path)) do
-	
-	if priv
-	  ws = WorkSpace.new(Module.new)
-	else
-	  ws = WorkSpace.new
-	end
-	irb.suspend_workspace(ws) do
-	  irb.suspend_input_method(FileInputMethod.new(path)) do
-	    |back_io|
-	    irb.signal_status(:IN_LOAD) do 
-#	      p irb.conf
-	      if back_io.kind_of?(FileInputMethod)
-		irb.eval_input
-	      else
-		begin
-		  irb.eval_input
-		rescue LoadAbort
-		  print "load abort!!\n"
-		end
-	      end
-	    end
-	  end
-	end
-      end
-    end
-
-    def old
-      back_io = @io
-      back_path = @irb_path
-      back_name = @irb_name
-      back_scanner = @irb.scanner
-      begin
- 	@io = FileInputMethod.new(path)
- 	@irb_name = File.basename(path)
-	@irb_path = path
-	@irb.signal_status(:IN_LOAD) do
-	  if back_io.kind_of?(FileInputMethod)
-	    @irb.eval_input
-	  else
-	    begin
-	      @irb.eval_input
-	    rescue LoadAbort
-	      print "load abort!!\n"
-	    end
-	  end
-	end
-      ensure
- 	@io = back_io
- 	@irb_name = back_name
- 	@irb_path = back_path
-	@irb.scanner = back_scanner
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/math-mode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/math-mode.rb
deleted file mode 100644
index ccef2a1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/math-mode.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-#   math-mode.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "mathn"
-
-module IRB
-  class Context
-    attr_reader :math_mode
-    alias math? math_mode
-
-    def math_mode=(opt)
-      if @math_mode == true && opt == false
-	IRB.fail CantReturnToNormalMode
-	return
-      end
-
-      @math_mode = opt
-      if math_mode
-	main.extend Math
-	print "start math mode\n" if verbose?
-      end
-    end
-
-    def inspect?
-      @inspect_mode.nil? && !@math_mode or @inspect_mode
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/multi-irb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/multi-irb.rb
deleted file mode 100644
index b0d0ed8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/multi-irb.rb
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-#   irb/multi-irb.rb - multiple irb module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-IRB.fail CantShiftToMultiIrbMode unless defined?(Thread)
-require "thread"
-
-module IRB
-  # job management class
-  class JobManager
-    @RCS_ID='-$Id: multi-irb.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize
-      # @jobs = [[thread, irb],...]
-      @jobs = []
-      @current_job = nil
-    end
-
-    attr_accessor :current_job
-
-    def n_jobs
-      @jobs.size
-    end
-
-    def thread(key)
-      th, irb = search(key)
-      th
-    end
-
-    def irb(key)
-      th, irb = search(key)
-      irb
-    end
-
-    def main_thread
-      @jobs[0][0]
-    end
-
-    def main_irb
-      @jobs[0][1]
-    end
-
-    def insert(irb)
-      @jobs.push [Thread.current, irb]
-    end
-
-    def switch(key)
-      th, irb = search(key)
-      IRB.fail IrbAlreadyDead unless th.alive?
-      IRB.fail IrbSwitchedToCurrentThread if th == Thread.current
-      @current_job = irb
-      th.run
-      Thread.stop
-      @current_job = irb(Thread.current)
-    end
-
-    def kill(*keys)
-      for key in keys
-	th, irb = search(key)
-	IRB.fail IrbAlreadyDead unless th.alive?
-	th.exit
-      end
-    end    
-
-    def search(key)
-      case key
-      when Integer
-	@jobs[key]
-      when Irb
-	@jobs.find{|k, v| v.equal?(key)}
-      when Thread
-	@jobs.assoc(key)
-      else
-	assoc = @jobs.find{|k, v| v.context.main.equal?(key)}
-	IRB.fail NoSuchJob, key if assoc.nil?
-	assoc
-      end
-    end
-
-    def delete(key)
-      case key
-      when Integer
-	IRB.fail NoSuchJob, key unless @jobs[key]
-	@jobs[key] = nil
-      else
-	catch(:EXISTS) do
-	  @jobs.each_index do
-	    |i|
-	    if @jobs[i] and (@jobs[i][0] == key ||
-			     @jobs[i][1] == key ||
-			     @jobs[i][1].context.main.equal?(key))
-	      @jobs[i] = nil
-	      throw :EXISTS
-	    end
-	  end
-	  IRB.fail NoSuchJob, key
-	end
-      end
-      until assoc = @jobs.pop; end unless @jobs.empty?
-      @jobs.push assoc
-    end
-
-    def inspect
-      ary = []
-      @jobs.each_index do
-	|i|
-	th, irb = @jobs[i]
-	next if th.nil?
-
-	if th.alive?
-	  if th.stop?
-	    t_status = "stop"
-	  else
-	    t_status = "running"
-	  end
-	else
-	  t_status = "exited"
-	end
-	ary.push format("#%d->%s on %s (%s: %s)",
-			i, 
-			irb.context.irb_name, 
-			irb.context.main,
-			th,
-			t_status)
-      end
-      ary.join("\n")
-    end
-  end
-
-  @JobManager = JobManager.new
-
-  def IRB.JobManager
-    @JobManager
-  end
-
-  def IRB.CurrentContext
-    IRB.JobManager.irb(Thread.current).context
-  end
-
-  # invoke multi-irb 
-  def IRB.irb(file = nil, *main)
-    workspace = WorkSpace.new(*main)
-    parent_thread = Thread.current
-    Thread.start do
-      begin
-	irb = Irb.new(workspace, file)
-      rescue 
-	print "Subirb can't start with context(self): ", workspace.main.inspect, "\n"
-	print "return to main irb\n"
-	Thread.pass
-	Thread.main.wakeup
-	Thread.exit
-      end
-      @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
-      @JobManager.insert(irb)
-      @JobManager.current_job = irb
-      begin
-	system_exit = false
-	catch(:IRB_EXIT) do
-	  irb.eval_input
-	end
-      rescue SystemExit
-	system_exit = true
-	raise
-	#fail
-      ensure
-	unless system_exit
-	  @JobManager.delete(irb)
-	  if parent_thread.alive?
-	    @JobManager.current_job = @JobManager.irb(parent_thread)
-	    parent_thread.run
-	  else
-	    @JobManager.current_job = @JobManager.main_irb
-	    @JobManager.main_thread.run
-	  end
-	end
-      end
-    end
-    Thread.stop
-    @JobManager.current_job = @JobManager.irb(Thread.current)
-  end
-
-#   class Context
-#     def set_last_value(value)
-#       @last_value = value
-#       @workspace.evaluate "_ = IRB.JobManager.irb(Thread.current).context.last_value"
-#       if @eval_history #and !@__.equal?(@last_value)
-# 	@eval_history_values.push @line_no, @last_value
-# 	@workspace.evaluate "__ = IRB.JobManager.irb(Thread.current).context.instance_eval{@eval_history_values}"
-#       end
-#       @last_value
-#     end
-#   end
-
-#  module ExtendCommand
-#     def irb_context
-#       IRB.JobManager.irb(Thread.current).context
-#     end
-# #    alias conf irb_context
-#   end
-
-  @CONF[:SINGLE_IRB_MODE] = false
-  @JobManager.insert(@CONF[:MAIN_CONTEXT].irb)
-  @JobManager.current_job = @CONF[:MAIN_CONTEXT].irb
-
-  class Irb
-    def signal_handle
-      unless @context.ignore_sigint?
-	print "\nabort!!\n" if @context.verbose?
-	exit
-      end
-
-      case @signal_status
-      when :IN_INPUT
-	print "^C\n"
-	IRB.JobManager.thread(self).raise RubyLex::TerminateLineInput
-      when :IN_EVAL
-	IRB.irb_abort(self)
-      when :IN_LOAD
-	IRB.irb_abort(self, LoadAbort)
-      when :IN_IRB
-	# ignore
-      else
-	# ignore other cases as well
-      end
-    end
-  end
-
-  trap("SIGINT") do
-    @JobManager.current_job.signal_handle
-    Thread.stop
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/save-history.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/save-history.rb
deleted file mode 100644
index f615ea2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/save-history.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#   save-history.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKAkeiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "readline"
-
-module IRB
-  module HistorySavingAbility
-    @RCS_ID='-$Id: save-history.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-  end
-
-  class Context
-    def init_save_history
-      unless (class<<@io;self;end).include?(HistorySavingAbility)
-	@io.extend(HistorySavingAbility)
-      end
-    end
-
-    def save_history
-      IRB.conf[:SAVE_HISTORY]
-    end
-
-    def save_history=(val)
-      IRB.conf[:SAVE_HISTORY] = val
-      if val
-	main_context = IRB.conf[:MAIN_CONTEXT]
-	main_context = self unless main_context
-	main_context.init_save_history
-      end
-    end
-
-    def history_file
-      IRB.conf[:HISTORY_FILE]
-    end
-
-    def history_file=(hist)
-      IRB.conf[:HISTORY_FILE] = hist
-    end
-  end
-
-  module HistorySavingAbility
-    include Readline
-
-    def HistorySavingAbility.create_finalizer
-      proc do
-	if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
-	  if hf = IRB.conf[:HISTORY_FILE]
-	    file = File.expand_path(hf)
-	  end
-	  file = IRB.rc_file("_history") unless file
-	  open(file, 'w' ) do |f|
-	    hist = HISTORY.to_a
-	    f.puts(hist[-num..-1] || hist)
-	  end
-	end
-      end
-    end
-
-    def HistorySavingAbility.extended(obj)
-      ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
-      obj.load_history
-      obj
-    end
-
-    def load_history
-      hist = IRB.conf[:HISTORY_FILE]
-      hist = IRB.rc_file("_history") unless hist
-      if File.exist?(hist)
-	open(hist) do |f|
-	  f.each {|l| HISTORY << l.chomp}
-	end
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/tracer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/tracer.rb
deleted file mode 100644
index a860ffd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/tracer.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#   irb/lib/tracer.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "tracer"
-
-module IRB
-
-  # initialize tracing function
-  def IRB.initialize_tracer
-    Tracer.verbose = false
-    Tracer.add_filter {
-      |event, file, line, id, binding, *rests|
-      /^#{Regexp.quote(@CONF[:IRB_LIB_PATH])}/ !~ file and
-	File::basename(file) != "irb.rb"
-    }
-  end
-
-  class Context
-    attr_reader :use_tracer
-    alias use_tracer? use_tracer
-
-    def use_tracer=(opt)
-      if opt
-	Tracer.set_get_line_procs(@irb_path) {
-	  |line_no, *rests|
-	  @io.line(line_no)
-	}
-      elsif !opt && @use_tracer
-	Tracer.off
-      end
-      @use_tracer=opt
-    end
-  end
-
-  class WorkSpace
-    alias __evaluate__ evaluate
-    def evaluate(context, statements, file = nil, line = nil)
-      if context.use_tracer? && file != nil && line != nil
-	Tracer.on 
-	begin
-	  __evaluate__(context, statements, file, line)
-	ensure
-	  Tracer.off
-	end
-      else
-	__evaluate__(context, statements, file || __FILE__, line || __LINE__)
-      end
-    end
-  end
-
-  IRB.initialize_tracer
-end
-	
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/use-loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/use-loader.rb
deleted file mode 100644
index a709819..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/use-loader.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-#   use-loader.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "irb/cmd/load"
-require "irb/ext/loader"
-
-class Object
-  alias __original__load__IRB_use_loader__ load
-  alias __original__require__IRB_use_loader__ require
-end
-
-module IRB
-  module ExtendCommandBundle
-    def irb_load(*opts, &b)
-      ExtendCommand::Load.execute(irb_context, *opts, &b)
-    end
-    def irb_require(*opts, &b)
-      ExtendCommand::Require.execute(irb_context, *opts, &b)
-    end
-  end
-
-  class Context
-
-    IRB.conf[:USE_LOADER] = false
-    
-    def use_loader
-      IRB.conf[:USE_LOADER]
-    end
-
-    alias use_loader? use_loader
-
-    def use_loader=(opt)
-
-      if IRB.conf[:USE_LOADER] != opt
-	IRB.conf[:USE_LOADER] = opt
-	if opt
-	  if !$".include?("irb/cmd/load")
-	  end
-	  (class<<@workspace.main;self;end).instance_eval {
-	    alias_method :load, :irb_load
-	    alias_method :require, :irb_require
-	  }
-	else
-	  (class<<@workspace.main;self;end).instance_eval {
-	    alias_method :load, :__original__load__IRB_use_loader__
-	    alias_method :require, :__original__require__IRB_use_loader__
-	  }
-	end
-      end
-      print "Switch to load/require#{unless use_loader; ' non';end} trace mode.\n" if verbose?
-      opt
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/workspaces.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/workspaces.rb
deleted file mode 100644
index 7bb6411..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ext/workspaces.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-#   push-ws.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-  class Context
-
-    def irb_level
-      workspace_stack.size
-    end
-
-    def workspaces
-      if defined? @workspaces
-	@workspaces
-      else
-	@workspaces = []
-      end
-    end
-
-    def push_workspace(*_main)
-      if _main.empty?
-	if workspaces.empty?
-	  print "No other workspace\n"
-	  return nil
-	end
-	ws = workspaces.pop
-	workspaces.push @workspace
-	@workspace = ws
-	return workspaces
-      end
-
-      workspaces.push @workspace
-      @workspace = WorkSpace.new(@workspace.binding, _main[0])
-      if !(class<<main;ancestors;end).include?(ExtendCommandBundle)
-	main.extend ExtendCommandBundle
-      end
-    end
-
-    def pop_workspace
-      if workspaces.empty?
-	print "workspace stack empty\n"
-	return
-      end
-      @workspace = workspaces.pop
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/extend-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/extend-command.rb
deleted file mode 100644
index e83716e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/extend-command.rb
+++ /dev/null
@@ -1,264 +0,0 @@
-#
-#   irb/extend-command.rb - irb extend command 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  #
-  # IRB extended command
-  #
-  module ExtendCommandBundle
-    EXCB = ExtendCommandBundle
-
-    NO_OVERRIDE = 0
-    OVERRIDE_PRIVATE_ONLY = 0x01
-    OVERRIDE_ALL = 0x02
-
-    def irb_exit(ret = 0)
-      irb_context.exit(ret)
-    end
-
-    def irb_context
-      IRB.CurrentContext
-    end
-
-    @ALIASES = [
-      [:context, :irb_context, NO_OVERRIDE],
-      [:conf, :irb_context, NO_OVERRIDE],
-      [:irb_quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-      [:exit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-      [:quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
-    ]
-
-    @EXTEND_COMMANDS = [
-      [:irb_current_working_workspace, :CurrentWorkingWorkspace, "irb/cmd/chws",
-	[:irb_print_working_workspace, OVERRIDE_ALL],
-	[:irb_cwws, OVERRIDE_ALL],
-	[:irb_pwws, OVERRIDE_ALL],
-#	[:irb_cww, OVERRIDE_ALL],
-#	[:irb_pww, OVERRIDE_ALL],
-	[:cwws, NO_OVERRIDE],
-	[:pwws, NO_OVERRIDE],
-#	[:cww, NO_OVERRIDE],
-#	[:pww, NO_OVERRIDE],
-	[:irb_current_working_binding, OVERRIDE_ALL],
-	[:irb_print_working_binding, OVERRIDE_ALL],
-	[:irb_cwb, OVERRIDE_ALL],
-	[:irb_pwb, OVERRIDE_ALL],
-#	[:cwb, NO_OVERRIDE],
-#	[:pwb, NO_OVERRIDE]
-      ],
-      [:irb_change_workspace, :ChangeWorkspace, "irb/cmd/chws",
-	[:irb_chws, OVERRIDE_ALL],
-#	[:irb_chw, OVERRIDE_ALL],
-	[:irb_cws, OVERRIDE_ALL],
-#	[:irb_cw, OVERRIDE_ALL],
-	[:chws, NO_OVERRIDE],
-#	[:chw, NO_OVERRIDE],
-	[:cws, NO_OVERRIDE],
-#	[:cw, NO_OVERRIDE],
-	[:irb_change_binding, OVERRIDE_ALL],
-	[:irb_cb, OVERRIDE_ALL],
-	[:cb, NO_OVERRIDE]],
-
-      [:irb_workspaces, :Workspaces, "irb/cmd/pushws",
-	[:workspaces, NO_OVERRIDE],
-	[:irb_bindings, OVERRIDE_ALL],
-	[:bindings, NO_OVERRIDE]],
-      [:irb_push_workspace, :PushWorkspace, "irb/cmd/pushws",
-	[:irb_pushws, OVERRIDE_ALL],
-#	[:irb_pushw, OVERRIDE_ALL],
-	[:pushws, NO_OVERRIDE],
-#	[:pushw, NO_OVERRIDE],
-	[:irb_push_binding, OVERRIDE_ALL],
-	[:irb_pushb, OVERRIDE_ALL],
-	[:pushb, NO_OVERRIDE]],
-      [:irb_pop_workspace, :PopWorkspace, "irb/cmd/pushws",
-	[:irb_popws, OVERRIDE_ALL],
-#	[:irb_popw, OVERRIDE_ALL],
-	[:popws, NO_OVERRIDE],
-#	[:popw, NO_OVERRIDE],
-	[:irb_pop_binding, OVERRIDE_ALL],
-	[:irb_popb, OVERRIDE_ALL],
-	[:popb, NO_OVERRIDE]],
-
-      [:irb_load, :Load, "irb/cmd/load"],
-      [:irb_require, :Require, "irb/cmd/load"],
-      [:irb_source, :Source, "irb/cmd/load", 
-	[:source, NO_OVERRIDE]],
-
-      [:irb, :IrbCommand, "irb/cmd/subirb"],
-      [:irb_jobs, :Jobs, "irb/cmd/subirb", 
-	[:jobs, NO_OVERRIDE]],
-      [:irb_fg, :Foreground, "irb/cmd/subirb", 
-	[:fg, NO_OVERRIDE]],
-      [:irb_kill, :Kill, "irb/cmd/subirb", 
-	[:kill, OVERRIDE_PRIVATE_ONLY]],
-
-      [:irb_help, :Help, "irb/cmd/help",
-        [:help, NO_OVERRIDE]],
-
-    ]
-
-    def self.install_extend_commands
-      for args in @EXTEND_COMMANDS
-	def_extend_command(*args)
-      end
-    end
-
-    # aliases = [commans_alias, flag], ...
-    def self.def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases)
-      case cmd_class
-      when Symbol
-	cmd_class = cmd_class.id2name
-      when String
-      when Class
-	cmd_class = cmd_class.name
-      end
-
-      if load_file
-	eval %[
-	  def #{cmd_name}(*opts, &b)
-	    require "#{load_file}"
-	    eval %[
-	      def #{cmd_name}(*opts, &b)
-		ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
-	      end
-	    ]
-	    send :#{cmd_name}, *opts, &b
-	  end
-	]
-      else
-	eval %[
-	  def #{cmd_name}(*opts, &b)
-	    ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
-	  end
-	]
-      end
-
-      for ali, flag in aliases
-	@ALIASES.push [ali, cmd_name, flag]
-      end
-    end
-
-    # override = {NO_OVERRIDE, OVERRIDE_PRIVATE_ONLY, OVERRIDE_ALL}
-    def install_alias_method(to, from, override = NO_OVERRIDE)
-      to = to.id2name unless to.kind_of?(String)
-      from = from.id2name unless from.kind_of?(String)
-
-      if override == OVERRIDE_ALL or
-	  (override == OVERRIDE_PRIVATE_ONLY) && !respond_to?(to) or
-	  (override == NO_OVERRIDE) &&  !respond_to?(to, true)
-	target = self
-	(class<<self;self;end).instance_eval{
-	  if target.respond_to?(to, true) && 
-	      !target.respond_to?(EXCB.irb_original_method_name(to), true)
-	    alias_method(EXCB.irb_original_method_name(to), to) 
-	  end
-	  alias_method to, from
-	}
-      else
-	print "irb: warn: can't alias #{to} from #{from}.\n"
-      end
-    end
-
-    def self.irb_original_method_name(method_name)
-      "irb_" + method_name + "_org"
-    end
-
-    def self.extend_object(obj)
-      unless (class<<obj;ancestors;end).include?(EXCB)
-	super
-	for ali, com, flg in @ALIASES
-	  obj.install_alias_method(ali, com, flg)
-	end
-      end
-    end
-
-    install_extend_commands
-  end
-
-  # extension support for Context
-  module ContextExtender
-    CE = ContextExtender
-
-    @EXTEND_COMMANDS = [
-      [:eval_history=, "irb/ext/history.rb"],
-      [:use_tracer=, "irb/ext/tracer.rb"],
-      [:math_mode=, "irb/ext/math-mode.rb"],
-      [:use_loader=, "irb/ext/use-loader.rb"],
-      [:save_history=, "irb/ext/save-history.rb"],
-    ]
-
-    def self.install_extend_commands
-      for args in @EXTEND_COMMANDS
-	def_extend_command(*args)
-      end
-    end
-
-    def self.def_extend_command(cmd_name, load_file, *aliases)
-      Context.module_eval %[
-        def #{cmd_name}(*opts, &b)
-	  Context.module_eval {remove_method(:#{cmd_name})}
-	  require "#{load_file}"
-	  send :#{cmd_name}, *opts, &b
-	end
-	for ali in aliases
-	  alias_method ali, cmd_name
-	end
-      ]
-    end
-
-    CE.install_extend_commands
-  end
-
-  module MethodExtender
-    def def_pre_proc(base_method, extend_method)
-      base_method = base_method.to_s
-      extend_method = extend_method.to_s
-
-      alias_name = new_alias_name(base_method)
-      module_eval %[
-        alias_method alias_name, base_method
-        def #{base_method}(*opts)
-	  send :#{extend_method}, *opts
-	  send :#{alias_name}, *opts
-	end
-      ]
-    end
-
-    def def_post_proc(base_method, extend_method)
-      base_method = base_method.to_s
-      extend_method = extend_method.to_s
-
-      alias_name = new_alias_name(base_method)
-      module_eval %[
-        alias_method alias_name, base_method
-        def #{base_method}(*opts)
-	  send :#{alias_name}, *opts
-	  send :#{extend_method}, *opts
-	end
-      ]
-    end
-
-    # return #{prefix}#{name}#{postfix}<num>
-    def new_alias_name(name, prefix = "__alias_of__", postfix = "__")
-      base_name = "#{prefix}#{name}#{postfix}"
-      all_methods = instance_methods(true) + private_instance_methods(true)
-      same_methods = all_methods.grep(/^#{Regexp.quote(base_name)}[0-9]*$/)
-      return base_name if same_methods.empty?
-      no = same_methods.size
-      while !same_methods.include?(alias_name = base_name + no)
-	no += 1
-      end
-      alias_name
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/frame.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/frame.rb
deleted file mode 100644
index 34bf103..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/frame.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#   frame.rb - 
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-module IRB
-  class Frame
-    extend Exception2MessageMapper
-    def_exception :FrameOverflow, "frame overflow"
-    def_exception :FrameUnderflow, "frame underflow"
-
-    INIT_STACK_TIMES = 3
-    CALL_STACK_OFFSET = 3
-
-    def initialize
-      @frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES
-    end
-
-    def trace_func(event, file, line, id, binding)
-      case event
-      when 'call', 'class'
-	@frames.push binding
-      when 'return', 'end'
-	@frames.pop
-      end
-    end
-
-    def top(n = 0)
-      bind = @frames[-(n + CALL_STACK_OFFSET)]
-      Fail FrameUnderflow unless bind
-      bind
-    end
-
-    def bottom(n = 0)
-      bind = @frames[n]
-      Fail FrameOverflow unless bind
-      bind
-    end
-
-    # singleton functions
-    def Frame.bottom(n = 0)
-      @backtrace.bottom(n)
-    end
-
-    def Frame.top(n = 0)
-      @backtrace.top(n)
-    end
-
-    def Frame.sender
-      eval "self", @backtrace.top
-    end
-
-    @backtrace = Frame.new
-    set_trace_func proc{|event, file, line, id, binding, klass|
-      @backtrace.trace_func(event, file, line, id, binding)
-    }
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/help.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/help.rb
deleted file mode 100644
index 9a32fd8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/help.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#   irb/help.rb - print usase module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#
-#   
-#
-
-module IRB
-  def IRB.print_usage
-    lc = IRB.conf[:LC_MESSAGES]
-    path = lc.find("irb/help-message")
-    space_line = false
-    File.foreach(path) do
-      |l|
-      if /^\s*$/ =~ l
-	lc.puts l unless space_line
-	space_line = true
-	next
-      end
-      space_line = false
-      
-      l.sub!(/#.*$/, "")
-      next if /^\s*$/ =~ l
-      lc.puts l
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/init.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/init.rb
deleted file mode 100644
index 60974cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/init.rb
+++ /dev/null
@@ -1,259 +0,0 @@
-#
-#   irb/init.rb - irb initialize module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-module IRB
-
-  # initialize config
-  def IRB.setup(ap_path)
-    IRB.init_config(ap_path)
-    IRB.init_error
-    IRB.parse_opts
-    IRB.run_config
-    IRB.load_modules
-
-    unless @CONF[:PROMPT][@CONF[:PROMPT_MODE]]
-      IRB.fail(UndefinedPromptMode, @CONF[:PROMPT_MODE]) 
-    end
-  end
-
-  # @CONF default setting
-  def IRB.init_config(ap_path)
-    # class instance variables
-    @TRACER_INITIALIZED = false
-
-    # default configurations
-    unless ap_path and @CONF[:AP_NAME]
-      ap_path = File.join(File.dirname(File.dirname(__FILE__)), "irb.rb")
-    end
-    @CONF[:AP_NAME] = File::basename(ap_path, ".rb")
-
-    @CONF[:IRB_NAME] = "irb"
-    @CONF[:IRB_LIB_PATH] = File.dirname(__FILE__)
-
-    @CONF[:RC] = true
-    @CONF[:LOAD_MODULES] = []
-    @CONF[:IRB_RC] = nil
-
-    @CONF[:MATH_MODE] = false
-    @CONF[:USE_READLINE] = false unless defined?(ReadlineInputMethod)
-    @CONF[:INSPECT_MODE] = nil
-    @CONF[:USE_TRACER] = false
-    @CONF[:USE_LOADER] = false
-    @CONF[:IGNORE_SIGINT] = true
-    @CONF[:IGNORE_EOF] = false
-    @CONF[:ECHO] = nil
-    @CONF[:VERBOSE] = nil
-
-    @CONF[:EVAL_HISTORY] = nil
-    @CONF[:SAVE_HISTORY] = nil
-
-    @CONF[:BACK_TRACE_LIMIT] = 16
-
-    @CONF[:PROMPT] = {
-      :NULL => {
-	:PROMPT_I => nil,
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "%s\n"
-      },
-      :DEFAULT => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_S => "%N(%m):%03n:%i%l ",
-	:PROMPT_C => "%N(%m):%03n:%i* ",
-	:RETURN => "=> %s\n"
-      },
-      :CLASSIC => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_S => "%N(%m):%03n:%i%l ",
-	:PROMPT_C => "%N(%m):%03n:%i* ",
-	:RETURN => "%s\n"
-      },
-      :SIMPLE => {
-	:PROMPT_I => ">> ",
-	:PROMPT_N => ">> ",
-	:PROMPT_S => nil,
-	:PROMPT_C => "?> ",
-	:RETURN => "=> %s\n"
-      },
-      :INF_RUBY => {
-	:PROMPT_I => "%N(%m):%03n:%i> ",
-#	:PROMPT_N => "%N(%m):%03n:%i> ",
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "%s\n",
-	:AUTO_INDENT => true
-      },
-      :XMP => {
-	:PROMPT_I => nil,
-	:PROMPT_N => nil,
-	:PROMPT_S => nil,
-	:PROMPT_C => nil,
-	:RETURN => "    ==>%s\n"
-      }
-    }
-
-    @CONF[:PROMPT_MODE] = (STDIN.tty? ? :DEFAULT : :NULL)
-    @CONF[:AUTO_INDENT] = false
-
-    @CONF[:CONTEXT_MODE] = 3 # use binding in function on TOPLEVEL_BINDING
-    @CONF[:SINGLE_IRB] = false
-
-#    @CONF[:LC_MESSAGES] = "en"
-    @CONF[:LC_MESSAGES] = Locale.new
-    
-    @CONF[:DEBUG_LEVEL] = 1
-  end
-
-  def IRB.init_error
-    @CONF[:LC_MESSAGES].load("irb/error.rb")
-  end
-
-  FEATURE_IOPT_CHANGE_VERSION = "1.9.0"
-
-  # option analyzing
-  def IRB.parse_opts
-    load_path = []
-    while opt = ARGV.shift
-      case opt
-      when "-f"
-	@CONF[:RC] = false
-      when "-m"
-	@CONF[:MATH_MODE] = true
-      when "-d"
-	$DEBUG = true
-      when /^-r(.+)?/
-	opt = $1 || ARGV.shift
-	@CONF[:LOAD_MODULES].push opt if opt
-      when /^-I(.+)?/
-        opt = $1 || ARGV.shift
-	load_path.concat(opt.split(File::PATH_SEPARATOR)) if opt
-      when /^-K(.)/
-	$KCODE = $1
-      when "--inspect"
-	@CONF[:INSPECT_MODE] = true
-      when "--noinspect"
-	@CONF[:INSPECT_MODE] = false
-      when "--readline"
-	@CONF[:USE_READLINE] = true
-      when "--noreadline"
-	@CONF[:USE_READLINE] = false
-      when "--echo"
-	@CONF[:ECHO] = true
-      when "--noecho"
-	@CONF[:ECHO] = false
-      when "--verbose"
-	@CONF[:VERBOSE] = true
-      when "--noverbose"
-	@CONF[:VERBOSE] = false
-      when "--prompt-mode", "--prompt"
-	prompt_mode = ARGV.shift.upcase.tr("-", "_").intern
-	@CONF[:PROMPT_MODE] = prompt_mode
-      when "--noprompt"
-	@CONF[:PROMPT_MODE] = :NULL
-      when "--inf-ruby-mode"
-	@CONF[:PROMPT_MODE] = :INF_RUBY
-      when "--sample-book-mode", "--simple-prompt"
-	@CONF[:PROMPT_MODE] = :SIMPLE
-      when "--tracer"
-	@CONF[:USE_TRACER] = true
-      when "--back-trace-limit"
-	@CONF[:BACK_TRACE_LIMIT] = ARGV.shift.to_i
-      when "--context-mode"
-	@CONF[:CONTEXT_MODE] = ARGV.shift.to_i
-      when "--single-irb"
-	@CONF[:SINGLE_IRB] = true
-      when "--irb_debug"
-	@CONF[:DEBUG_LEVEL] = ARGV.shift.to_i
-      when "-v", "--version"
-	print IRB.version, "\n"
-	exit 0
-      when "-h", "--help"
-	require "irb/help"
-	IRB.print_usage
-	exit 0
-      when /^-/
-	IRB.fail UnrecognizedSwitch, opt
-      else
-	@CONF[:SCRIPT] = opt
-	$0 = opt
-	break
-      end
-    end
-    if RUBY_VERSION >= FEATURE_IOPT_CHANGE_VERSION
-      load_path.collect! do |path|
-	/\A\.\// =~ path ? path : File.expand_path(path)
-      end
-    end
-    $LOAD_PATH.unshift(*load_path)
-  end
-
-  # running config
-  def IRB.run_config
-    if @CONF[:RC]
-      begin
-	load rc_file
-      rescue LoadError, Errno::ENOENT
-      rescue
-	print "load error: #{rc_file}\n"
-	print $!.class, ": ", $!, "\n"
-	for err in $@[0, $@.size - 2]
-	  print "\t", err, "\n"
-	end
-      end
-    end
-  end
-
-  IRBRC_EXT = "rc"
-  def IRB.rc_file(ext = IRBRC_EXT)
-    if !@CONF[:RC_NAME_GENERATOR]
-      rc_file_generators do |rcgen|
-	@CONF[:RC_NAME_GENERATOR] ||= rcgen
-	if File.exist?(rcgen.call(IRBRC_EXT))
-	  @CONF[:RC_NAME_GENERATOR] = rcgen
-	  break
-	end
-      end
-    end
-    @CONF[:RC_NAME_GENERATOR].call ext
-  end
-
-  # enumerate possible rc-file base name generators
-  def IRB.rc_file_generators
-    if irbrc = ENV["IRBRC"]
-      yield proc{|rc|  rc == "rc" ? irbrc : irbrc+rc}
-    end
-    if home = ENV["HOME"]
-      yield proc{|rc| home+"/.irb#{rc}"} 
-    end
-    home = Dir.pwd
-    yield proc{|rc| home+"/.irb#{rc}"}
-    yield proc{|rc| home+"/irb#{rc.sub(/\A_?/, '.')}"}
-    yield proc{|rc| home+"/_irb#{rc}"}
-    yield proc{|rc| home+"/$irb#{rc}"}
-  end
-
-  # loading modules
-  def IRB.load_modules
-    for m in @CONF[:LOAD_MODULES]
-      begin
-	require m
-      rescue
-	print $@[0], ":", $!.class, ": ", $!, "\n"
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/input-method.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/input-method.rb
deleted file mode 100644
index 2e50499..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/input-method.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-#   irb/input-method.rb - input methods used irb
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  # 
-  # InputMethod
-  #	StdioInputMethod
-  #	FileInputMethod
-  #	(ReadlineInputMethod)
-  #
-  STDIN_FILE_NAME = "(line)"
-  class InputMethod
-    @RCS_ID='-$Id: input-method.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def initialize(file = STDIN_FILE_NAME)
-      @file_name = file
-    end
-    attr_reader :file_name
-
-    attr_accessor :prompt
-    
-    def gets
-      IRB.fail NotImplementedError, "gets"
-    end
-    public :gets
-
-    def readable_atfer_eof?
-      false
-    end
-  end
-  
-  class StdioInputMethod < InputMethod
-    def initialize
-      super
-      @line_no = 0
-      @line = []
-    end
-
-    def gets
-      print @prompt
-      @line[@line_no += 1] = $stdin.gets
-    end
-
-    def eof?
-      $stdin.eof?
-    end
-
-    def readable_atfer_eof?
-      true
-    end
-
-    def line(line_no)
-      @line[line_no]
-    end
-  end
-  
-  class FileInputMethod < InputMethod
-    def initialize(file)
-      super
-      @io = open(file)
-    end
-    attr_reader :file_name
-
-    def eof?
-      @io.eof?
-    end
-
-    def gets
-      print @prompt
-      l = @io.gets
-#      print @prompt, l
-      l
-    end
-  end
-
-  begin
-    require "readline"
-    class ReadlineInputMethod < InputMethod
-      include Readline 
-      def initialize
-	super
-
-	@line_no = 0
-	@line = []
-	@eof = false
-      end
-
-      def gets
-	if l = readline(@prompt, false)
-          HISTORY.push(l) if !l.empty?
-	  @line[@line_no += 1] = l + "\n"
-	else
-	  @eof = true
-	  l
-	end
-      end
-
-      def eof?
-	@eof
-      end
-
-      def readable_atfer_eof?
-	true
-      end
-
-      def line(line_no)
-	@line[line_no]
-      end
-    end
-  rescue LoadError
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/error.rb
deleted file mode 100644
index 8054f59..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/error.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#   irb/lc/error.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "e2mmap"
-
-module IRB
-
-  # exceptions
-  extend Exception2MessageMapper
-  def_exception :UnrecognizedSwitch, "Unrecognized switch: %s"
-  def_exception :NotImplementedError, "Need to define `%s'"
-  def_exception :CantReturnToNormalMode, "Can't return to normal mode."
-  def_exception :IllegalParameter, "Illegal parameter(%s)."
-  def_exception :IrbAlreadyDead, "Irb is already dead."
-  def_exception :IrbSwitchedToCurrentThread, "Switched to current thread."
-  def_exception :NoSuchJob, "No such job(%s)."
-  def_exception :CantShiftToMultiIrbMode, "Can't shift to multi irb mode."
-  def_exception :CantChangeBinding, "Can't change binding to (%s)."
-  def_exception :UndefinedPromptMode, "Undefined prompt mode(%s)."
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/help-message b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/help-message
deleted file mode 100644
index 5188ff3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/help-message
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-#   irb/lc/help-message.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-Usage:  irb.rb [options] [programfile] [arguments]
-  -f		    Suppress read of ~/.irbrc 
-  -m		    Bc mode (load mathn, fraction or matrix are available)
-  -d                Set $DEBUG to true (same as `ruby -d')
-  -r load-module    Same as `ruby -r'
-  -I path           Specify $LOAD_PATH directory
-  --inspect	    Use `inspect' for output (default except for bc mode)
-  --noinspect	    Don't use inspect for output
-  --readline	    Use Readline extension module
-  --noreadline	    Don't use Readline extension module
-  --prompt prompt-mode
-  --prompt-mode prompt-mode
-		    Switch prompt mode. Pre-defined prompt modes are
-		    `default', `simple', `xmp' and `inf-ruby'
-  --inf-ruby-mode   Use prompt appropriate for inf-ruby-mode on emacs. 
-		    Suppresses --readline. 
-  --simple-prompt   Simple prompt mode
-  --noprompt	    No prompt mode
-  --tracer	    Display trace for each execution of commands.
-  --back-trace-limit n
-		    Display backtrace top n and tail n. The default
-		    value is 16. 
-  --irb_debug n	    Set internal debug level to n (not for popular use)
-  -v, --version	    Print the version of irb
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/error.rb
deleted file mode 100644
index b8652b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/error.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-#   irb/lc/ja/error.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-require "e2mmap"
-
-module IRB
-  # exceptions
-  extend Exception2MessageMapper
-  def_exception :UnrecognizedSwitch, '$B%9%$%C%A(B(%s)$B$,J,$j$^$;$s(B'
-  def_exception :NotImplementedError, '`%s\'$B$NDj5A$,I,MW$G$9(B'
-  def_exception :CantReturnToNormalMode, 'Normal$B%b!<%I$KLa$l$^$;$s(B.'
-  def_exception :IllegalParameter, '$B%Q%i%a!<%?(B(%s)$B$,4V0c$C$F$$$^$9(B.'
-  def_exception :IrbAlreadyDead, 'Irb$B$O4{$K;`$s$G$$$^$9(B.'
-  def_exception :IrbSwitchedToCurrentThread, '$B%+%l%s%H%9%l%C%I$K at Z$jBX$o$j$^$7$?(B.'
-  def_exception :NoSuchJob, '$B$=$N$h$&$J%8%g%V(B(%s)$B$O$"$j$^$;$s(B.'
-  def_exception :CantShiftToMultiIrbMode, 'multi-irb mode$B$K0\$l$^$;$s(B.'
-  def_exception :CantChangeBinding, '$B%P%$%s%G%#%s%0(B(%s)$B$KJQ99$G$-$^$;$s(B.'
-  def_exception :UndefinedPromptMode, '$B%W%m%s%W%H%b!<%I(B(%s)$B$ODj5A$5$l$F$$$^$;$s(B.'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/help-message b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/help-message
deleted file mode 100644
index 719796c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/lc/ja/help-message
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#   irb/lc/ja/help-message.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-Usage:  irb.rb [options] [programfile] [arguments]
-  -f		    ~/.irbrc $B$rFI$_9~$^$J$$(B.
-  -m		    bc$B%b!<%I(B($BJ,?t(B, $B9TNs$N7W;;$,$G$-$k(B)
-  -d                $DEBUG $B$r(Btrue$B$K$9$k(B(ruby -d $B$HF1$8(B)
-  -r load-module    ruby -r $B$HF1$8(B.
-  -I path           $LOAD_PATH $B$K(B path $B$rDI2C$9$k(B.
-  --inspect	    $B7k2L=PNO$K(Binspect$B$rMQ$$$k(B(bc$B%b!<%I0J30$O%G%U%)%k%H(B). 
-  --noinspect	    $B7k2L=PNO$K(Binspect$B$rMQ$$$J$$(B.
-  --readline	    readline$B%i%$%V%i%j$rMxMQ$9$k(B.
-  --noreadline	    readline$B%i%$%V%i%j$rMxMQ$7$J$$(B. 
-  --prompt prompt-mode/--prompt-mode prompt-mode
-		    $B%W%m%s%W%H%b!<%I$r at ZBX$($^$9(B. $B8=:_Dj5A$5$l$F$$$k%W(B
-		    $B%m%s%W%H%b!<%I$O(B, default, simple, xmp, inf-ruby$B$,(B
-		    $BMQ0U$5$l$F$$$^$9(B. 
-  --inf-ruby-mode   emacs$B$N(Binf-ruby-mode$BMQ$N%W%m%s%W%HI=<($r9T$J$&(B. $BFC(B
-		    $B$K;XDj$,$J$$8B$j(B, readline$B%i%$%V%i%j$O;H$o$J$/$J$k(B.
-  --simple-prompt   $BHs>o$K%7%s%W%k$J%W%m%s%W%H$rMQ$$$k%b!<%I$G$9(B.
-  --noprompt	    $B%W%m%s%W%HI=<($r9T$J$o$J$$(B.
-  --tracer	    $B%3%^%s%I<B9T;~$K%H%l!<%9$r9T$J$&(B.
-  --back-trace-limit n
-		    $B%P%C%/%H%l!<%9I=<($r%P%C%/%H%l!<%9$NF,$+$i(B n, $B8e$m(B
-		    $B$+$i(Bn$B$@$19T$J$&(B. $B%G%U%)%k%H$O(B16 
-  --irb_debug n	    irb$B$N%G%P%C%0%G%P%C%0%l%Y%k$r(Bn$B$K at _Dj$9$k(B($BMxMQ$7$J(B
-		    $B$$J}$,L5Fq$G$7$g$&(B).
-  -v, --version	    irb$B$N%P!<%8%g%s$rI=<($9$k(B
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/locale.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/locale.rb
deleted file mode 100644
index bdc6351..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/locale.rb
+++ /dev/null
@@ -1,184 +0,0 @@
-#
-#   irb/locale.rb - internationalization module
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-autoload :Kconv, "kconv"
-
-module IRB
-  class Locale
-    @RCS_ID='-$Id: locale.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    JPDefaultLocale = "ja"
-    LOCALE_DIR = "/lc/"
-
-    def initialize(locale = nil)
-      @lang = locale || ENV["IRB_LANG"] || ENV["LC_MESSAGES"] || ENV["LC_ALL"] || ENV["LANG"] || "C" 
-    end
-
-    attr_reader :lang
-
-    def lc2kconv(lang)
-      case lang
-      when "ja_JP.ujis", "ja_JP.euc", "ja_JP.eucJP"
-        Kconv::EUC
-      when "ja_JP.sjis", "ja_JP.SJIS"
-        Kconv::SJIS
-      when /ja_JP.utf-?8/i
-	Kconv::UTF8
-      end
-    end
-    private :lc2kconv
-
-    def String(mes)
-      mes = super(mes)
-      case @lang
-      when /^ja/
-	mes = Kconv::kconv(mes, lc2kconv(@lang))
-      else
-	mes
-      end
-      mes
-    end
-
-    def format(*opts)
-      String(super(*opts))
-    end
-
-    def gets(*rs)
-      String(super(*rs))
-    end
-
-    def readline(*rs)
-      String(super(*rs))
-    end
-
-    def print(*opts)
-      ary = opts.collect{|opt| String(opt)}
-      super(*ary)
-    end
-
-    def printf(*opts)
-      s = format(*opts)
-      print s
-    end
-
-    def puts(*opts)
-      ary = opts.collect{|opt| String(opt)}
-      super(*ary)
-    end
-
-    def require(file, priv = nil)
-      rex = Regexp.new("lc/#{Regexp.quote(file)}\.(so|o|sl|rb)?")
-      return false if $".find{|f| f =~ rex}
-
-      case file
-      when /\.rb$/
-	begin
-	  load(file, priv)
-	  $".push file
-	  return true
-	rescue LoadError
-	end
-      when /\.(so|o|sl)$/
-	return super
-      end
-
-      begin
-	load(f = file + ".rb")
-	$".push f  #"
-	return true
-      rescue LoadError
-	return ruby_require(file)
-      end
-    end
-
-    alias toplevel_load load
-    
-    def load(file, priv=nil)
-      dir = File.dirname(file)
-      dir = "" if dir == "."
-      base = File.basename(file)
-
-      if /^ja(_JP)?$/ =~ @lang
- 	back, @lang = @lang, "C"
-      end
-      begin
-	if dir[0] == ?/ #/
-	  lc_path = search_file(dir, base)
-	  return real_load(lc_path, priv) if lc_path
-	end
-	
-	for path in $:
-	  lc_path = search_file(path + "/" + dir, base)
-	  return real_load(lc_path, priv) if lc_path
-	end
-      ensure
-	@lang = back if back
-      end
-      raise LoadError, "No such file to load -- #{file}"
-    end 
-
-    def real_load(path, priv)
-      src = self.String(File.read(path))
-      if priv
-	eval("self", TOPLEVEL_BINDING).extend(Module.new {eval(src, nil, path)})
-      else
-	eval(src, TOPLEVEL_BINDING, path)
-      end
-    end
-    private :real_load
-
-    def find(file , paths = $:)
-      dir = File.dirname(file)
-      dir = "" if dir == "."
-      base = File.basename(file)
-      if dir[0] == ?/ #/
-	  return lc_path = search_file(dir, base)
-      else
-	for path in $:
-	  if lc_path = search_file(path + "/" + dir, base)
-	    return lc_path
-	  end
-	end
-      end
-      nil
-    end
-
-    def search_file(path, file)
-      if File.exist?(p1 = path + lc_path(file, "C"))
-	if File.exist?(p2 = path + lc_path(file))
-	  return p2
-	else
-	end
-	return p1
-      else
-      end
-      nil
-    end
-    private :search_file
-
-    def lc_path(file = "", lc = @lang)
-      case lc
-      when "C"
-	LOCALE_DIR + file
-      when /^ja/
-	LOCALE_DIR + "ja/" + file
-      else
-	LOCALE_DIR + @lang + "/" + file
-      end
-    end
-    private :lc_path
-  end
-end
-
-
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/notifier.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/notifier.rb
deleted file mode 100644
index 7e297af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/notifier.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-#
-#   notifier.rb - optput methods used by irb 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/output-method"
-
-module IRB
-  module Notifier
-    extend Exception2MessageMapper
-    def_exception :ErrUndefinedNotifier, 
-      "undefined notifier level: %d is specified"
-    def_exception :ErrUnrecognizedLevel, 
-      "unrecognized notifier level: %s is specified"
-
-    def def_notifier(prefix = "", output_method = StdioOutputMethod.new)
-      CompositeNotifier.new(prefix, output_method)
-    end
-    module_function :def_notifier
-  
-    class AbstructNotifier
-      def initialize(prefix, base_notifier)
-	@prefix = prefix
-	@base_notifier = base_notifier
-      end
-
-      attr_reader :prefix
-
-      def notify?
-	true
-      end
-
-      def print(*opts)
-	@base_notifier.print prefix, *opts if notify?
-      end
-
-      def printn(*opts)
-	@base_notifier.printn prefix, *opts if notify?
-      end
-
-      def printf(format, *opts)
-	@base_notifier.printf(prefix + format, *opts) if notify?
-      end
-
-      def puts(*objs)
-	if notify?
-	  @base_notifier.puts(*objs.collect{|obj| prefix + obj.to_s})
-	end
-      end
-
-      def pp(*objs)
-	if notify?
-	  @base_notifier.ppx @prefix, *objs
-	end
-      end
-
-      def ppx(prefix, *objs)
-	if notify?
-	  @base_notifier.ppx @prefix+prefix, *objs
-	end
-      end
-
-      def exec_if
-	yield(@base_notifier) if notify?
-      end
-    end
-
-    class CompositeNotifier<AbstructNotifier
-      def initialize(prefix, base_notifier)
-	super
-
-	@notifiers = [D_NOMSG]
-	@level_notifier = D_NOMSG
-      end
-
-      attr_reader :notifiers
-
-      def def_notifier(level, prefix = "")
-	notifier = LeveledNotifier.new(self, level, prefix)
-	@notifiers[level] = notifier
-	notifier
-      end
-
-      attr_reader :level_notifier
-      alias level level_notifier
-
-      def level_notifier=(value)
-	case value
-	when AbstructNotifier
-	  @level_notifier = value
-	when Integer
-	  l = @notifiers[value]
-	  Notifier.Raise ErrUndefinedNotifer, value unless l
-	  @level_notifier = l
-	else
-	  Notifier.Raise ErrUnrecognizedLevel, value unless l
-	end
-      end
-
-      alias level= level_notifier=
-    end
-
-    class LeveledNotifier<AbstructNotifier
-      include Comparable
-
-      def initialize(base, level, prefix)
-	super(prefix, base)
-	
-	@level = level
-      end
-
-      attr_reader :level
-
-      def <=>(other)
-	@level <=> other.level
-      end
-      
-      def notify?
-	@base_notifier.level >= self
-      end
-    end
-
-    class NoMsgNotifier<LeveledNotifier
-      def initialize
-	@base_notifier = nil
-	@level = 0
-	@prefix = ""
-      end
-
-      def notify?
-	false
-      end
-    end
-
-    D_NOMSG = NoMsgNotifier.new
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/output-method.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/output-method.rb
deleted file mode 100644
index a43f139..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/output-method.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-#   output-method.rb - optput methods used by irb 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-module IRB
-  # OutputMethod
-  #   StdioOutputMethod
-
-  class OutputMethod
-    @RCS_ID='-$Id: output-method.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    def print(*opts)
-      IRB.fail NotImplementError, "print"
-    end
-
-    def printn(*opts)
-      print opts.join(" "), "\n"
-    end
-
-    # extend printf
-    def printf(format, *opts)
-      if /(%*)%I/ =~ format
-	format, opts = parse_printf_format(format, opts)
-      end
-      print sprintf(format, *opts)
-    end
-
-    # %
-    # <¥Õ¥é¥°>  [#0- +]
-    # <ºÇ¾®¥Õ¥£¡¼¥ë¥ÉÉý> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
-    # <ÀºÅÙ>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
-    # #<Ťµ½¤ÀµÊ¸»ú>(hh|h|l|ll|L|q|j|z|t)
-    # <ÊÑ´¹½¤ÀµÊ¸»ú>[diouxXeEfgGcsb%] 
-    def parse_printf_format(format, opts)
-      return format, opts if $1.size % 2 == 1
-    end
-
-    def foo(format)
-      pos = 0
-      inspects = []
-      format.scan(/%[#0\-+ ]?(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9]))?(\.(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9])))?(([1-9][0-9]*\$)*)([diouxXeEfgGcsb%])/) {|f, p, pp, pos, new_pos, c|
-	puts [f, p, pp, pos, new_pos, c].join("!")
-	pos = new_pos if new_pos
-	if c == "I"
-	  inspects.push pos.to_i 
-	  (f||"")+(p||"")+(pp||"")+(pos||"")+"s"
-	else
-	  $&
-	end
-      }
-    end
-
-    def puts(*objs)
-      for obj in objs
-	print(*obj)
-	print "\n"
-      end
-    end
-
-    def pp(*objs)
-      puts(*objs.collect{|obj| obj.inspect})
-    end
-
-    def ppx(prefix, *objs)
-      puts(*objs.collect{|obj| prefix+obj.inspect})
-    end
-
-  end
-
-  class StdioOutputMethod<OutputMethod
-    def print(*opts)
-      STDOUT.print(*opts)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-lex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-lex.rb
deleted file mode 100644
index efcd01e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-lex.rb
+++ /dev/null
@@ -1,1149 +0,0 @@
-#
-#   irb/ruby-lex.rb - ruby lexcal analizer
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/slex"
-require "irb/ruby-token"
-
-class RubyLex
-  @RCS_ID='-$Id: ruby-lex.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-  extend Exception2MessageMapper
-  def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
-  def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkReading2TokenDuplicateError, 
-		"key duplicate(token_n='%s', key='%s')")
-  def_exception(:SyntaxError, "%s")
-
-  def_exception(:TerminateLineInput, "Terminate Line Input")
-  
-  include RubyToken
-
-  class << self
-    attr_accessor :debug_level
-    def debug?
-      @debug_level > 0
-    end
-  end
-  @debug_level = 0
-
-  def initialize
-    lex_init
-    set_input(STDIN)
-
-    @seek = 0
-    @exp_line_no = @line_no = 1
-    @base_char_no = 0
-    @char_no = 0
-    @rests = []
-    @readed = []
-    @here_readed = []
-
-    @indent = 0
-    @indent_stack = []
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    @here_header = false
-    
-    @continue = false
-    @line = ""
-
-    @skip_space = false
-    @readed_auto_clean_up = false
-    @exception_on_syntax_error = true
-
-    @prompt = nil
-  end
-
-  attr_accessor :skip_space
-  attr_accessor :readed_auto_clean_up
-  attr_accessor :exception_on_syntax_error
-
-  attr_reader :seek
-  attr_reader :char_no
-  attr_reader :line_no
-  attr_reader :indent
-
-  # io functions
-  def set_input(io, p = nil, &block)
-    @io = io
-    if p.respond_to?(:call)
-      @input = p
-    elsif block_given?
-      @input = block
-    else
-      @input = Proc.new{@io.gets}
-    end
-  end
-
-  def get_readed
-    if idx = @readed.reverse.index("\n")
-      @base_char_no = idx
-    else
-      @base_char_no += @readed.size
-    end
-    
-    readed = @readed.join("")
-    @readed = []
-    readed
-  end
-
-  def getc
-    while @rests.empty?
-#      return nil unless buf_input
-      @rests.push nil unless buf_input
-    end
-    c = @rests.shift
-    if @here_header
-      @here_readed.push c
-    else
-      @readed.push c
-    end
-    @seek += 1
-    if c == "\n"
-      @line_no += 1 
-      @char_no = 0
-    else
-      @char_no += 1
-    end
-    c
-  end
-
-  def gets
-    l = ""
-    while c = getc
-      l.concat(c)
-      break if c == "\n"
-    end
-    return nil if l == "" and c.nil?
-    l
-  end
-
-  def eof?
-    @io.eof?
-  end
-
-  def getc_of_rests
-    if @rests.empty?
-      nil
-    else
-      getc
-    end
-  end
-
-  def ungetc(c = nil)
-    if @here_readed.empty?
-      c2 = @readed.pop
-    else
-      c2 = @here_readed.pop
-    end
-    c = c2 unless c
-    @rests.unshift c #c = 
-      @seek -= 1
-    if c == "\n"
-      @line_no -= 1 
-      if idx = @readed.reverse.index("\n")
-	@char_no = @readed.size - idx
-      else
-	@char_no = @base_char_no + @readed.size
-      end
-    else
-      @char_no -= 1
-    end
-  end
-
-  def peek_equal?(str)
-    chrs = str.split(//)
-    until @rests.size >= chrs.size
-      return false unless buf_input
-    end
-    @rests[0, chrs.size] == chrs
-  end
-
-  def peek_match?(regexp)
-    while @rests.empty?
-      return false unless buf_input
-    end
-    regexp =~ @rests.join("")
-  end
-
-  def peek(i = 0)
-    while @rests.size <= i
-      return nil unless buf_input
-    end
-    @rests[i]
-  end
-
-  def buf_input
-    prompt
-    line = @input.call
-    return nil unless line
-    @rests.concat line.split(//)
-    true
-  end
-  private :buf_input
-
-  def set_prompt(p = nil, &block)
-    p = block if block_given?
-    if p.respond_to?(:call)
-      @prompt = p
-    else
-      @prompt = Proc.new{print p}
-    end
-  end
-
-  def prompt
-    if @prompt
-      @prompt.call(@ltype, @indent, @continue, @line_no)
-    end
-  end
-
-  def initialize_input
-    @ltype = nil
-    @quoted = nil
-    @indent = 0
-    @indent_stack = []
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    @here_header = false
-    
-    @continue = false
-    prompt
-
-    @line = ""
-    @exp_line_no = @line_no
-  end
-  
-  def each_top_level_statement
-    initialize_input
-    catch(:TERM_INPUT) do
-      loop do
-	begin
-	  @continue = false
-	  prompt
-	  unless l = lex
-	    throw :TERM_INPUT if @line == ''
-	  else
-	    #p l
-	    @line.concat l
-	    if @ltype or @continue or @indent > 0
-	      next
-	    end
-	  end
-	  if @line != "\n"
-	    yield @line, @exp_line_no
-	  end
-	  break unless l
-	  @line = ''
-	  @exp_line_no = @line_no
-
-	  @indent = 0
-	  @indent_stack = []
-	  prompt
-	rescue TerminateLineInput
-	  initialize_input
-	  prompt
-	  get_readed
-	end
-      end
-    end
-  end
-
-  def lex
-    until (((tk = token).kind_of?(TkNL) || tk.kind_of?(TkEND_OF_SCRIPT)) &&
-	     !@continue or
-	     tk.nil?)
-      #p tk
-      #p @lex_state
-      #p self
-    end
-    line = get_readed
-    #      print self.inspect
-    if line == "" and tk.kind_of?(TkEND_OF_SCRIPT) || tk.nil?
-      nil
-    else
-      line
-    end
-  end
-
-  def token
-    #      require "tracer"
-    #      Tracer.on
-    @prev_seek = @seek
-    @prev_line_no = @line_no
-    @prev_char_no = @char_no
-    begin
-      begin
-	tk = @OP.match(self)
-	@space_seen = tk.kind_of?(TkSPACE)
-      rescue SyntaxError
-	raise if @exception_on_syntax_error
-	tk = TkError.new(@seek, @line_no, @char_no)
-      end
-    end while @skip_space and tk.kind_of?(TkSPACE)
-    if @readed_auto_clean_up
-      get_readed
-    end
-    #      Tracer.off
-    tk
-  end
-  
-  ENINDENT_CLAUSE = [
-    "case", "class", "def", "do", "for", "if",
-    "module", "unless", "until", "while", "begin" #, "when"
-  ]
-  DEINDENT_CLAUSE = ["end" #, "when"
-  ]
-
-  PERCENT_LTYPE = {
-    "q" => "\'",
-    "Q" => "\"",
-    "x" => "\`",
-    "r" => "/",
-    "w" => "]",
-    "W" => "]",
-    "s" => ":"
-  }
-  
-  PERCENT_PAREN = {
-    "{" => "}",
-    "[" => "]",
-    "<" => ">",
-    "(" => ")"
-  }
-
-  Ltype2Token = {
-    "\'" => TkSTRING,
-    "\"" => TkSTRING,
-    "\`" => TkXSTRING,
-    "/" => TkREGEXP,
-    "]" => TkDSTRING,
-    ":" => TkSYMBOL
-  }
-  DLtype2Token = {
-    "\"" => TkDSTRING,
-    "\`" => TkDXSTRING,
-    "/" => TkDREGEXP,
-  }
-
-  def lex_init()
-    @OP = IRB::SLex.new
-    @OP.def_rules("\0", "\004", "\032") do |op, io|
-      Token(TkEND_OF_SCRIPT)
-    end
-
-    @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |op, io|
-      @space_seen = true
-      while getc =~ /[ \t\f\r\13]/; end
-      ungetc
-      Token(TkSPACE)
-    end
-
-    @OP.def_rule("#") do |op, io|
-      identify_comment
-    end
-
-    @OP.def_rule("=begin",
-		 proc{|op, io| @prev_char_no == 0 && peek(0) =~ /\s/}) do 
-      |op, io|
-      @ltype = "="
-      until getc == "\n"; end
-      until peek_equal?("=end") && peek(4) =~ /\s/
-	until getc == "\n"; end
-      end
-      gets
-      @ltype = nil
-      Token(TkRD_COMMENT)
-    end
-
-    @OP.def_rule("\n") do |op, io|
-      print "\\n\n" if RubyLex.debug?
-      case @lex_state
-      when EXPR_BEG, EXPR_FNAME, EXPR_DOT
-	@continue = true
-      else
-	@continue = false
-	@lex_state = EXPR_BEG
-	until (@indent_stack.empty? || 
-	       [TkLPAREN, TkLBRACK, TkLBRACE, 
-		 TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
-	  @indent_stack.pop
-	end
-      end
-      @here_header = false
-      @here_readed = []
-      Token(TkNL)
-    end
-
-    @OP.def_rules("*", "**",	
-		  "=", "==", "===", 
-		  "=~", "<=>",	
-		  "<", "<=",
-		  ">", ">=", ">>") do
-      |op, io|
-      case @lex_state
-      when EXPR_FNAME, EXPR_DOT
-	@lex_state = EXPR_ARG
-      else
-	@lex_state = EXPR_BEG
-      end
-      Token(op)
-    end
-
-    @OP.def_rules("!", "!=", "!~") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    @OP.def_rules("<<") do
-      |op, io|
-      tk = nil
-      if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
-	  (@lex_state != EXPR_ARG || @space_seen)
-	c = peek(0)
-	if /\S/ =~ c && (/["'`]/ =~ c || /[\w_]/ =~ c || c == "-")
-	  tk = identify_here_document
-	end
-      end
-      unless tk
-	tk = Token(op)
-	case @lex_state
-	when EXPR_FNAME, EXPR_DOT
-	  @lex_state = EXPR_ARG
-	else
-	  @lex_state = EXPR_BEG
-	end
-      end
-      tk
-    end
-
-    @OP.def_rules("'", '"') do
-      |op, io|
-      identify_string(op)
-    end
-
-    @OP.def_rules("`") do
-      |op, io|
-      if @lex_state == EXPR_FNAME
-	@lex_state = EXPR_END
-	Token(op)
-      else
-	identify_string(op)
-      end
-    end
-
-    @OP.def_rules('?') do
-      |op, io|
-      if @lex_state == EXPR_END
-	@lex_state = EXPR_BEG
-	Token(TkQUESTION)
-      else
-	ch = getc
-	if @lex_state == EXPR_ARG && ch =~ /\s/
-	  ungetc
-	  @lex_state = EXPR_BEG;
-	  Token(TkQUESTION)
-	else
-	  if (ch == '\\') 
-	    read_escape
-	  end
-	  @lex_state = EXPR_END
-	  Token(TkINTEGER)
-	end
-      end
-    end
-
-    @OP.def_rules("&", "&&", "|", "||") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-    
-    @OP.def_rules("+=", "-=", "*=", "**=", 
-		  "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      op =~ /^(.*)=$/
-      Token(TkOPASGN, $1)
-    end
-
-    @OP.def_rule("+@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token(op)
-    end
-
-    @OP.def_rule("-@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token(op)
-    end
-
-    @OP.def_rules("+", "-") do
-      |op, io|
-      catch(:RET) do
-	if @lex_state == EXPR_ARG
-	  if @space_seen and peek(0) =~ /[0-9]/
-	    throw :RET, identify_number
-	  else
-	    @lex_state = EXPR_BEG
-	  end
-	elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
-	  throw :RET, identify_number
-	else
-	  @lex_state = EXPR_BEG
-	end
-	Token(op)
-      end
-    end
-
-    @OP.def_rule(".") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      if peek(0) =~ /[0-9]/
-	ungetc
-	identify_number
-      else
-	# for "obj.if" etc.
-	@lex_state = EXPR_DOT
-	Token(TkDOT)
-      end
-    end
-
-    @OP.def_rules("..", "...") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    lex_int2
-  end
-  
-  def lex_int2
-    @OP.def_rules("]", "}", ")") do
-      |op, io|
-      @lex_state = EXPR_END
-      @indent -= 1
-      @indent_stack.pop
-      Token(op)
-    end
-
-    @OP.def_rule(":") do
-      |op, io|
-      if @lex_state == EXPR_END || peek(0) =~ /\s/
-	@lex_state = EXPR_BEG
-	Token(TkCOLON)
-      else
-	@lex_state = EXPR_FNAME;
-	Token(TkSYMBEG)
-      end
-    end
-
-    @OP.def_rule("::") do
-       |op, io|
-#      p @lex_state.id2name, @space_seen
-      if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
-	@lex_state = EXPR_BEG
-	Token(TkCOLON3)
-      else
-	@lex_state = EXPR_DOT
-	Token(TkCOLON2)
-      end
-    end
-
-    @OP.def_rule("/") do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_string(op)
-      elsif peek(0) == '='
-	getc
-	@lex_state = EXPR_BEG
-	Token(TkOPASGN, "/") #/)
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_string(op)
-      else 
-	@lex_state = EXPR_BEG
-	Token("/") #/)
-      end
-    end
-
-    @OP.def_rules("^") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("^")
-    end
-
-    #       @OP.def_rules("^=") do
-    # 	@lex_state = EXPR_BEG
-    # 	Token(OP_ASGN, :^)
-    #       end
-    
-    @OP.def_rules(",") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op)
-    end
-
-    @OP.def_rules(";") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      until (@indent_stack.empty? || 
-	     [TkLPAREN, TkLBRACK, TkLBRACE, 
-	       TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
-	@indent_stack.pop
-      end
-      Token(op)
-    end
-
-    @OP.def_rule("~") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("~")
-    end
-
-    @OP.def_rule("~@", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token("~")
-    end
-    
-    @OP.def_rule("(") do
-      |op, io|
-      @indent += 1
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	@lex_state = EXPR_BEG
-	tk_c = TkfLPAREN
-      else
-	@lex_state = EXPR_BEG
-	tk_c = TkLPAREN
-      end
-      @indent_stack.push tk_c
-      tk = Token(tk_c)
-    end
-
-    @OP.def_rule("[]", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token("[]")
-    end
-
-    @OP.def_rule("[]=", proc{|op, io| @lex_state == EXPR_FNAME}) do
-      |op, io|
-      @lex_state = EXPR_ARG
-      Token("[]=")
-    end
-
-    @OP.def_rule("[") do
-      |op, io|
-      @indent += 1
-      if @lex_state == EXPR_FNAME
-	tk_c = TkfLBRACK
-      else
-	if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	  tk_c = TkLBRACK
-	elsif @lex_state == EXPR_ARG && @space_seen
-	  tk_c = TkLBRACK
-	else
-	  tk_c = TkfLBRACK
-	end
-	@lex_state = EXPR_BEG
-      end
-      @indent_stack.push tk_c
-      Token(tk_c)
-    end
-
-    @OP.def_rule("{") do
-      |op, io|
-      @indent += 1
-      if @lex_state != EXPR_END && @lex_state != EXPR_ARG
-	tk_c = TkLBRACE
-      else
-	tk_c = TkfLBRACE
-      end
-      @lex_state = EXPR_BEG
-      @indent_stack.push tk_c
-      Token(tk_c)
-    end
-
-    @OP.def_rule('\\') do
-      |op, io|
-      if getc == "\n"
-	@space_seen = true
-	@continue = true
-	Token(TkSPACE)
-      else
-	ungetc
-	Token("\\")
-      end
-    end
-
-    @OP.def_rule('%') do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_quotation
-      elsif peek(0) == '='
-	getc
-	Token(TkOPASGN, :%)
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_quotation
-      else
-	@lex_state = EXPR_BEG
-	Token("%") #))
-      end
-    end
-
-    @OP.def_rule('$') do
-      |op, io|
-      identify_gvar
-    end
-
-    @OP.def_rule('@') do
-      |op, io|
-      if peek(0) =~ /[\w_@]/
-	ungetc
-	identify_identifier
-      else
-	Token("@")
-      end
-    end
-
-    #       @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do 
-    # 	|op, io|
-    # 	@indent += 1
-    # 	@lex_state = EXPR_FNAME
-    # #	@lex_state = EXPR_END
-    # #	until @rests[0] == "\n" or @rests[0] == ";"
-    # #	  rests.shift
-    # #	end
-    #       end
-
-    @OP.def_rule("") do
-      |op, io|
-      printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
-      if peek(0) =~ /[0-9]/
-	t = identify_number
-      elsif peek(0) =~ /[\w_]/
-	t = identify_identifier
-      end
-      printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
-      t
-    end
-    
-    p @OP if RubyLex.debug?
-  end
-  
-  def identify_gvar
-    @lex_state = EXPR_END
-    
-    case ch = getc
-    when /[~_*$?!@\/\\;,=:<>".]/   #"
-      Token(TkGVAR, "$" + ch)
-    when "-"
-      Token(TkGVAR, "$-" + getc)
-    when "&", "`", "'", "+"
-      Token(TkBACK_REF, "$"+ch)
-    when /[1-9]/
-      while getc =~ /[0-9]/; end
-      ungetc
-      Token(TkNTH_REF)
-    when /\w/
-      ungetc
-      ungetc
-      identify_identifier
-    else 
-      ungetc
-      Token("$")
-    end
-  end
-  
-  def identify_identifier
-    token = ""
-    if peek(0) =~ /[$@]/
-      token.concat(c = getc)
-      if c == "@" and peek(0) == "@"
-	token.concat getc
-      end
-    end
-
-    while (ch = getc) =~ /\w|_/
-      print ":", ch, ":" if RubyLex.debug?
-      token.concat ch
-    end
-    ungetc
-    
-    if (ch == "!" || ch == "?") && token[0,1] =~ /\w/ && peek(0) != "="
-      token.concat getc
-    end
-
-    # almost fix token
-
-    case token
-    when /^\$/
-      return Token(TkGVAR, token)
-    when /^\@\@/
-      @lex_state = EXPR_END
-      # p Token(TkCVAR, token)
-      return Token(TkCVAR, token)
-    when /^\@/
-      @lex_state = EXPR_END
-      return Token(TkIVAR, token)
-    end
-    
-    if @lex_state != EXPR_DOT
-      print token, "\n" if RubyLex.debug?
-
-      token_c, *trans = TkReading2Token[token]
-      if token_c
-	# reserved word?
-
-	if (@lex_state != EXPR_BEG &&
-	    @lex_state != EXPR_FNAME &&
-	    trans[1])
-	  # modifiers
-	  token_c = TkSymbol2Token[trans[1]]
-	  @lex_state = trans[0]
-	else
-	  if @lex_state != EXPR_FNAME
-	    if ENINDENT_CLAUSE.include?(token)
-	      # check for ``class = val'' etc.
-	      valid = true
-	      case token
-	      when "class"
-		valid = false unless peek_match?(/^\s*(<<|\w|::)/)
-	      when "def"
-		valid = false if peek_match?(/^\s*(([+-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
-	      when "do"
-		valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&)/)
-	      when *ENINDENT_CLAUSE
-		valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&|\|)/)
-	      else
-		# no nothing
-	      end
-	      if valid
-		if token == "do"
-		  if ![TkFOR, TkWHILE, TkUNTIL].include?(@indent_stack.last)
-		    @indent += 1
-		    @indent_stack.push token_c
-		  end
-		else
-		  @indent += 1
-		  @indent_stack.push token_c
-		end
-#		p @indent_stack
-	      end
-
-	    elsif DEINDENT_CLAUSE.include?(token)
-	      @indent -= 1
-	      @indent_stack.pop
-	    end
-	    @lex_state = trans[0]
-	  else
-	    @lex_state = EXPR_END
-	  end
-	end
-	return Token(token_c, token)
-      end
-    end
-
-    if @lex_state == EXPR_FNAME
-      @lex_state = EXPR_END
-      if peek(0) == '='
-	token.concat getc
-      end
-    elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
-      @lex_state = EXPR_ARG
-    else
-      @lex_state = EXPR_END
-    end
-
-    if token[0, 1] =~ /[A-Z]/
-      return Token(TkCONSTANT, token)
-    elsif token[token.size - 1, 1] =~ /[!?]/
-      return Token(TkFID, token)
-    else
-      return Token(TkIDENTIFIER, token)
-    end
-  end
-
-  def identify_here_document
-    ch = getc
-#    if lt = PERCENT_LTYPE[ch]
-    if ch == "-"
-      ch = getc
-      indent = true
-    end
-    if /['"`]/ =~ ch
-      lt = ch
-      quoted = ""
-      while (c = getc) && c != lt
-	quoted.concat c
-      end
-    else
-      lt = '"'
-      quoted = ch.dup
-      while (c = getc) && c =~ /\w/
-	quoted.concat c
-      end
-      ungetc
-    end
-
-    ltback, @ltype = @ltype, lt
-    reserve = []
-    while ch = getc
-      reserve.push ch
-      if ch == "\\"
-	reserve.push ch = getc
-      elsif ch == "\n"
-	break
-      end
-    end
-
-    @here_header = false
-    while l = gets
-      l = l.sub(/(:?\r)?\n\z/, '')
-      if (indent ? l.strip : l) == quoted
- 	break
-      end
-    end
-
-    @here_header = true
-    @here_readed.concat reserve
-    while ch = reserve.pop
-      ungetc ch
-    end
-
-    @ltype = ltback
-    @lex_state = EXPR_END
-    Token(Ltype2Token[lt])
-  end
-  
-  def identify_quotation
-    ch = getc
-    if lt = PERCENT_LTYPE[ch]
-      ch = getc
-    elsif ch =~ /\W/
-      lt = "\""
-    else
-      RubyLex.fail SyntaxError, "unknown type of %string"
-    end
-#     if ch !~ /\W/
-#       ungetc
-#       next
-#     end
-    #@ltype = lt
-    @quoted = ch unless @quoted = PERCENT_PAREN[ch]
-    identify_string(lt, @quoted)
-  end
-
-  def identify_number
-    @lex_state = EXPR_END
-
-    if peek(0) == "0" && peek(1) !~ /[.eE]/
-      getc
-      case peek(0)
-      when /[xX]/
-	ch = getc
-	match = /[0-9a-fA-F_]/
-      when /[bB]/
-	ch = getc
-	match = /[01_]/
-      when /[oO]/
-	ch = getc
-	match = /[0-7_]/
-      when /[dD]/
-	ch = getc
-	match = /[0-9_]/
-      when /[0-7]/
-	match = /[0-7_]/
-      when /[89]/
-	RubyLex.fail SyntaxError, "Illegal octal digit"
-      else 
-	return Token(TkINTEGER)
-      end
-      
-      len0 = true
-      non_digit = false
-      while ch = getc
-	if match =~ ch
-	  if ch == "_"
-	    if non_digit
-	      RubyLex.fail SyntaxError, "trailing `#{ch}' in number"
-	    else
-	      non_digit = ch
-	    end
-	  else
-	    non_digit = false
-	    len0 = false
-	  end
-	else
-	  ungetc
-	  if len0
-	    RubyLex.fail SyntaxError, "numeric literal without digits"
-	  end
-	  if non_digit
-	    RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	  end
-	  break
-	end
-      end
-      return Token(TkINTEGER)
-    end
-    
-    type = TkINTEGER
-    allow_point = true
-    allow_e = true
-    non_digit = false
-    while ch = getc
-      case ch
-      when /[0-9]/
-	non_digit = false
-      when "_"
-	non_digit = ch
-      when allow_point && "."
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	type = TkFLOAT
-	if peek(0) !~ /[0-9]/
-	  type = TkINTEGER
-	  ungetc
-	  break
-	end
-	allow_point = false
-      when allow_e && "e", allow_e && "E"
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	type = TkFLOAT
-	if peek(0) =~ /[+-]/
-	  getc
-	end
-	allow_e = false
-	allow_point = false
-	non_digit = ch
-      else
-	if non_digit
-	  RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
-	end
-	ungetc
-	break
-      end
-    end
-    Token(type)
-  end
-  
-  def identify_string(ltype, quoted = ltype)
-    @ltype = ltype
-    @quoted = quoted
-    subtype = nil
-    begin
-      nest = 0
-      while ch = getc
-	if @quoted == ch and nest == 0
-	  break
-	elsif @ltype != "'" && @ltype != "]" && @ltype != ":" and ch == "#"
-	  subtype = true
-	elsif ch == '\\' #'
-	  read_escape
-	end
-	if PERCENT_PAREN.values.include?(@quoted) 
-	  if PERCENT_PAREN[ch] == @quoted
-	    nest += 1
-	  elsif ch == @quoted
-	    nest -= 1
-	  end
-	end
-      end
-      if @ltype == "/"
-	if peek(0) =~ /i|m|x|o|e|s|u|n/
-	  getc
-	end
-      end
-      if subtype
-	Token(DLtype2Token[ltype])
-      else
-	Token(Ltype2Token[ltype])
-      end
-    ensure
-      @ltype = nil
-      @quoted = nil
-      @lex_state = EXPR_END
-    end
-  end
-  
-  def identify_comment
-    @ltype = "#"
-
-    while ch = getc
-#      if ch == "\\" #"
-#	read_escape
-#      end
-      if ch == "\n"
-	@ltype = nil
-	ungetc
-	break
-      end
-    end
-    return Token(TkCOMMENT)
-  end
-  
-  def read_escape
-    case ch = getc
-    when "\n", "\r", "\f"
-    when "\\", "n", "t", "r", "f", "v", "a", "e", "b", "s" #"
-    when /[0-7]/
-      ungetc ch
-      3.times do
-	case ch = getc
-	when /[0-7]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-      end
-      
-    when "x"
-      2.times do
-	case ch = getc
-	when /[0-9a-fA-F]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-      end
-
-    when "M"
-      if (ch = getc) != '-'
-	ungetc
-      else
-	if (ch = getc) == "\\" #"
-	  read_escape
-	end
-      end
-
-    when "C", "c" #, "^"
-      if ch == "C" and (ch = getc) != "-"
-	ungetc
-      elsif (ch = getc) == "\\" #"
-	read_escape
-      end
-    else
-      # other characters 
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-token.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-token.rb
deleted file mode 100644
index 32308bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ruby-token.rb
+++ /dev/null
@@ -1,273 +0,0 @@
-#
-#   irb/ruby-token.rb - ruby tokens 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module RubyToken
-  EXPR_BEG = :EXPR_BEG
-  EXPR_MID = :EXPR_MID
-  EXPR_END = :EXPR_END
-  EXPR_ARG = :EXPR_ARG
-  EXPR_FNAME = :EXPR_FNAME
-  EXPR_DOT = :EXPR_DOT
-  EXPR_CLASS = :EXPR_CLASS
-
-  # for ruby 1.4X
-  if !defined?(Symbol)
-    Symbol = Integer
-  end
-  
-  class Token
-    def initialize(seek, line_no, char_no)
-      @seek = seek
-      @line_no = line_no
-      @char_no = char_no
-    end
-    attr :seek
-    attr :line_no
-    attr :char_no
-  end
-
-  class TkNode < Token
-    def initialize(seek, line_no, char_no)
-      super
-    end
-    attr :node
-  end
-
-  class TkId < Token
-    def initialize(seek, line_no, char_no, name)
-      super(seek, line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkVal < Token
-    def initialize(seek, line_no, char_no, value = nil)
-      super(seek, line_no, char_no)
-      @value = value
-    end
-    attr :value
-  end
-
-  class TkOp < Token
-    attr :name, true
-  end
-
-  class TkOPASGN < TkOp
-    def initialize(seek, line_no, char_no, op)
-      super(seek, line_no, char_no)
-      op = TkReading2Token[op][0] unless op.kind_of?(Symbol)
-      @op = op
-    end
-    attr :op
-  end
-
-  class TkUnknownChar < Token
-    def initialize(seek, line_no, char_no, id)
-      super(seek, line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkError < Token
-  end
-
-  def Token(token, value = nil)
-    case token
-    when String
-      if (tk = TkReading2Token[token]).nil?
-	IRB.fail TkReading2TokenNoKey, token
-      end
-      tk = Token(tk[0], value) 
-      if tk.kind_of?(TkOp)
-	tk.name = token
-      end
-      return tk
-    when Symbol
-      if (tk = TkSymbol2Token[token]).nil?
-	IRB.fail TkSymbol2TokenNoKey, token
-      end
-      return Token(tk[0], value) 
-    else 
-      if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
-	token.new(@prev_seek, @prev_line_no, @prev_char_no)
-      else
-	token.new(@prev_seek, @prev_line_no, @prev_char_no, value)
-      end
-    end
-  end
-
-  TokenDefinitions = [
-    [:TkCLASS,      TkId,  "class",  EXPR_CLASS],
-    [:TkMODULE,     TkId,  "module", EXPR_BEG],
-    [:TkDEF,	    TkId,  "def",    EXPR_FNAME],
-    [:TkUNDEF,      TkId,  "undef",  EXPR_FNAME],
-    [:TkBEGIN,      TkId,  "begin",  EXPR_BEG],
-    [:TkRESCUE,     TkId,  "rescue", EXPR_MID],
-    [:TkENSURE,     TkId,  "ensure", EXPR_BEG],
-    [:TkEND,	    TkId,  "end",    EXPR_END],
-    [:TkIF,         TkId,  "if",     EXPR_BEG, :TkIF_MOD],
-    [:TkUNLESS,     TkId,  "unless", EXPR_BEG, :TkUNLESS_MOD],
-    [:TkTHEN,	    TkId,  "then",   EXPR_BEG],
-    [:TkELSIF,      TkId,  "elsif",  EXPR_BEG],
-    [:TkELSE,	    TkId,  "else",   EXPR_BEG],
-    [:TkCASE,	    TkId,  "case",   EXPR_BEG],
-    [:TkWHEN,	    TkId,  "when",   EXPR_BEG],
-    [:TkWHILE,      TkId,  "while",  EXPR_BEG, :TkWHILE_MOD],
-    [:TkUNTIL,      TkId,  "until",  EXPR_BEG, :TkUNTIL_MOD],
-    [:TkFOR,	    TkId,  "for",    EXPR_BEG],
-    [:TkBREAK,      TkId,  "break",  EXPR_END],
-    [:TkNEXT,	    TkId,  "next",   EXPR_END],
-    [:TkREDO,	    TkId,  "redo",   EXPR_END],
-    [:TkRETRY,      TkId,  "retry",  EXPR_END],
-    [:TkIN,	    TkId,  "in",     EXPR_BEG],
-    [:TkDO,	    TkId,  "do",     EXPR_BEG],
-    [:TkRETURN,     TkId,  "return", EXPR_MID],
-    [:TkYIELD,      TkId,  "yield",  EXPR_END],
-    [:TkSUPER,      TkId,  "super",  EXPR_END],
-    [:TkSELF,	    TkId,  "self",   EXPR_END],
-    [:TkNIL, 	    TkId,  "nil",    EXPR_END],
-    [:TkTRUE,	    TkId,  "true",   EXPR_END],
-    [:TkFALSE,      TkId,  "false",  EXPR_END],
-    [:TkAND,	    TkId,  "and",    EXPR_BEG],
-    [:TkOR, 	    TkId,  "or",     EXPR_BEG],
-    [:TkNOT,	    TkId,  "not",    EXPR_BEG],
-    [:TkIF_MOD,     TkId],
-    [:TkUNLESS_MOD, TkId],
-    [:TkWHILE_MOD,  TkId],
-    [:TkUNTIL_MOD,  TkId],
-    [:TkALIAS,      TkId,  "alias",    EXPR_FNAME],
-    [:TkDEFINED,    TkId,  "defined?", EXPR_END],
-    [:TklBEGIN,     TkId,  "BEGIN",    EXPR_END],
-    [:TklEND,	    TkId,  "END",      EXPR_END],
-    [:Tk__LINE__,   TkId,  "__LINE__", EXPR_END],
-    [:Tk__FILE__,   TkId,  "__FILE__", EXPR_END],
-
-    [:TkIDENTIFIER, TkId],
-    [:TkFID,	    TkId],
-    [:TkGVAR,	    TkId],
-    [:TkCVAR,	    TkId],
-    [:TkIVAR,	    TkId],
-    [:TkCONSTANT,   TkId],
-
-    [:TkINTEGER,    TkVal],
-    [:TkFLOAT,      TkVal],
-    [:TkSTRING,     TkVal],
-    [:TkXSTRING,    TkVal],
-    [:TkREGEXP,     TkVal],
-    [:TkSYMBOL,     TkVal],
-
-    [:TkDSTRING,    TkNode],
-    [:TkDXSTRING,   TkNode],
-    [:TkDREGEXP,    TkNode],
-    [:TkNTH_REF,    TkNode],
-    [:TkBACK_REF,   TkNode],
-
-    [:TkUPLUS,      TkOp,   "+@"],
-    [:TkUMINUS,     TkOp,   "-@"],
-    [:TkPOW,	    TkOp,   "**"],
-    [:TkCMP,	    TkOp,   "<=>"],
-    [:TkEQ,	    TkOp,   "=="],
-    [:TkEQQ,	    TkOp,   "==="],
-    [:TkNEQ,	    TkOp,   "!="],
-    [:TkGEQ,	    TkOp,   ">="],
-    [:TkLEQ,	    TkOp,   "<="],
-    [:TkANDOP,      TkOp,   "&&"],
-    [:TkOROP,	    TkOp,   "||"],
-    [:TkMATCH,      TkOp,   "=~"],
-    [:TkNMATCH,     TkOp,   "!~"],
-    [:TkDOT2,	    TkOp,   ".."],
-    [:TkDOT3,	    TkOp,   "..."],
-    [:TkAREF,	    TkOp,   "[]"],
-    [:TkASET,	    TkOp,   "[]="],
-    [:TkLSHFT,      TkOp,   "<<"],
-    [:TkRSHFT,      TkOp,   ">>"],
-    [:TkCOLON2,     TkOp],
-    [:TkCOLON3,     TkOp],
-#   [:OPASGN,	    TkOp],               # +=, -=  etc. #
-    [:TkASSOC,      TkOp,   "=>"],
-    [:TkQUESTION,   TkOp,   "?"],	 #?
-    [:TkCOLON,      TkOp,   ":"],        #:
-    
-    [:TkfLPAREN],         # func( #
-    [:TkfLBRACK],         # func[ #
-    [:TkfLBRACE],         # func{ #
-    [:TkSTAR],            # *arg
-    [:TkAMPER],           # &arg #
-    [:TkSYMBEG],          # :SYMBOL
-
-    [:TkGT,	    TkOp,   ">"],
-    [:TkLT,	    TkOp,   "<"],
-    [:TkPLUS,	    TkOp,   "+"],
-    [:TkMINUS,      TkOp,   "-"],
-    [:TkMULT,	    TkOp,   "*"],
-    [:TkDIV,	    TkOp,   "/"],
-    [:TkMOD,	    TkOp,   "%"],
-    [:TkBITOR,      TkOp,   "|"],
-    [:TkBITXOR,     TkOp,   "^"],
-    [:TkBITAND,     TkOp,   "&"],
-    [:TkBITNOT,     TkOp,   "~"],
-    [:TkNOTOP,      TkOp,   "!"],
-
-    [:TkBACKQUOTE,  TkOp,   "`"],
-
-    [:TkASSIGN,     Token,  "="],
-    [:TkDOT,	    Token,  "."],
-    [:TkLPAREN,     Token,  "("],  #(exp)
-    [:TkLBRACK,     Token,  "["],  #[arry]
-    [:TkLBRACE,     Token,  "{"],  #{hash}
-    [:TkRPAREN,     Token,  ")"],
-    [:TkRBRACK,     Token,  "]"],
-    [:TkRBRACE,     Token,  "}"],
-    [:TkCOMMA,      Token,  ","],
-    [:TkSEMICOLON,  Token,  ";"],
-
-    [:TkCOMMENT],
-    [:TkRD_COMMENT],
-    [:TkSPACE],
-    [:TkNL],
-    [:TkEND_OF_SCRIPT],
-
-    [:TkBACKSLASH,  TkUnknownChar,  "\\"],
-    [:TkAT,	    TkUnknownChar,  "@"],
-    [:TkDOLLAR,     TkUnknownChar,  "$"],
-  ]
-
-  # {reading => token_class}
-  # {reading => [token_class, *opt]}
-  TkReading2Token = {}
-  TkSymbol2Token = {}
-
-  def RubyToken.def_token(token_n, super_token = Token, reading = nil, *opts)
-    token_n = token_n.id2name if token_n.kind_of?(Symbol)
-    if RubyToken.const_defined?(token_n)
-      IRB.fail AlreadyDefinedToken, token_n
-    end
-    token_c = eval("class #{token_n} < #{super_token}; end; #{token_n}")
-    
-    if reading
-      if TkReading2Token[reading]
-	IRB.fail TkReading2TokenDuplicateError, token_n, reading
-      end
-      if opts.empty?
-	TkReading2Token[reading] = [token_c]
-      else
-	TkReading2Token[reading] = [token_c].concat(opts)
-      end
-    end
-    TkSymbol2Token[token_n.intern] = token_c
-  end
-
-  for defs in TokenDefinitions
-    def_token(*defs)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/slex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/slex.rb
deleted file mode 100644
index 0b8eb24..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/slex.rb
+++ /dev/null
@@ -1,285 +0,0 @@
-#
-#   irb/slex.rb - symple lex analizer
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "irb/notifier"
-
-module IRB
-  class SLex
-    @RCS_ID='-$Id: slex.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-    extend Exception2MessageMapper
-    def_exception :ErrNodeNothing, "node nothing"
-    def_exception :ErrNodeAlreadyExists, "node already exists"
-
-    DOUT = Notifier::def_notifier("SLex::")
-    D_WARN = DOUT::def_notifier(1, "Warn: ")
-    D_DEBUG = DOUT::def_notifier(2, "Debug: ")
-    D_DETAIL = DOUT::def_notifier(4, "Detail: ")
-    
-    DOUT.level = Notifier::D_NOMSG
-
-    def initialize
-      @head = Node.new("")
-    end
-    
-    def def_rule(token, preproc = nil, postproc = nil, &block)
-      D_DETAIL.pp token
-
-      postproc = block if block_given?
-      node = create(token, preproc, postproc)
-    end
-    
-    def def_rules(*tokens, &block)
-      if block_given?
-	p = block
-      end
-      for token in tokens
-	def_rule(token, nil, p)
-      end
-    end
-    
-    def preproc(token, proc)
-      node = search(token)
-      node.preproc=proc
-    end
-    
-    #$BMW%A%'%C%/(B? 
-    def postproc(token)
-      node = search(token, proc)
-      node.postproc=proc
-    end
-    
-    def search(token)
-      @head.search(token.split(//))
-    end
-
-    def create(token, preproc = nil, postproc = nil)
-      @head.create_subnode(token.split(//), preproc, postproc)
-    end
-    
-    def match(token)
-      case token
-      when Array
-      when String
-	return match(token.split(//))
-      else
-	return @head.match_io(token)
-      end
-      ret = @head.match(token)
-      D_DETAIL.exec_if{D_DEATIL.printf "match end: %s:%s\n", ret, token.inspect}
-      ret
-    end
-    
-    def inspect
-      format("<SLex: @head = %s>", @head.inspect)
-    end
-
-    #----------------------------------------------------------------------
-    #
-    #   class Node - 
-    #
-    #----------------------------------------------------------------------
-    class Node
-      # if postproc is nil, this node is an abstract node.
-      # if postproc is non-nil, this node is a real node.
-      def initialize(preproc = nil, postproc = nil)
-	@Tree = {}
-	@preproc = preproc
-	@postproc = postproc
-      end
-
-      attr_accessor :preproc
-      attr_accessor :postproc
-      
-      def search(chrs, opt = nil)
-	return self if chrs.empty?
-	ch = chrs.shift
-	if node = @Tree[ch]
-	  node.search(chrs, opt)
-	else
-	  if opt
-	    chrs.unshift ch
-	    self.create_subnode(chrs)
-	  else
-	    SLex.fail ErrNodeNothing
-	  end
-	end
-      end
-      
-      def create_subnode(chrs, preproc = nil, postproc = nil)
-	if chrs.empty?
-	  if @postproc
-	    D_DETAIL.pp node
-	    SLex.fail ErrNodeAlreadyExists
-	  else
-	    D_DEBUG.puts "change abstract node to real node."
-	    @preproc = preproc
-	    @postproc = postproc
-	  end
-	  return self
-	end
-	
-	ch = chrs.shift
-	if node = @Tree[ch]
-	  if chrs.empty?
-	    if node.postproc
-	      DebugLogger.pp node
-	      DebugLogger.pp self
-	      DebugLogger.pp ch
-	      DebugLogger.pp chrs
-	      SLex.fail ErrNodeAlreadyExists
-	    else
-	      D_WARN.puts "change abstract node to real node"
-	      node.preproc = preproc
-	      node.postproc = postproc
-	    end
-	  else
-	    node.create_subnode(chrs, preproc, postproc)
-	  end
-	else
-	  if chrs.empty?
-	    node = Node.new(preproc, postproc)
-	  else
-	    node = Node.new
-	    node.create_subnode(chrs, preproc, postproc)
-	  end
-	  @Tree[ch] = node
-	end
-	node
-      end
-
-      #
-      # chrs: String
-      #       character array
-      #       io must have getc()/ungetc(); and ungetc() must be
-      #       able to be called arbitrary number of times. 
-      #
-      def match(chrs, op = "")
-	D_DETAIL.print "match>: ", chrs, "op:", op, "\n"
-	if chrs.empty?
-	  if @preproc.nil? || @preproc.call(op, chrs)
-	    DOUT.printf(D_DETAIL, "op1: %s\n", op)
-	    @postproc.call(op, chrs)
-	  else
-	    nil
-	  end
-	else
-	  ch = chrs.shift
-	  if node = @Tree[ch]
-	    if ret = node.match(chrs, op+ch)
-	      return ret
-	    else
-	      chrs.unshift ch
-	      if @postproc and @preproc.nil? || @preproc.call(op, chrs)
-		DOUT.printf(D_DETAIL, "op2: %s\n", op.inspect)
-		ret = @postproc.call(op, chrs)
-		return ret
-	      else
-		return nil
-	      end
-	    end
-	  else
-	    chrs.unshift ch
-	    if @postproc and @preproc.nil? || @preproc.call(op, chrs)
-	      DOUT.printf(D_DETAIL, "op3: %s\n", op)
-	      @postproc.call(op, chrs)
-	      return ""
-	    else
-	      return nil
-	    end
-	  end
-	end
-      end
-
-      def match_io(io, op = "")
-	if op == ""
-	  ch = io.getc
-	  if ch == nil
-	    return nil
-	  end
-	else
-	  ch = io.getc_of_rests
-	end
-	if ch.nil?
-	  if @preproc.nil? || @preproc.call(op, io)
-	    D_DETAIL.printf("op1: %s\n", op)
-	    @postproc.call(op, io)
-	  else
-	    nil
-	  end
-	else
-	  if node = @Tree[ch]
-	    if ret = node.match_io(io, op+ch)
-	      ret
-	    else
-	      io.ungetc ch
-	      if @postproc and @preproc.nil? || @preproc.call(op, io)
-		DOUT.exec_if{D_DETAIL.printf "op2: %s\n", op.inspect}
-		@postproc.call(op, io)
-	      else
-		nil
-	      end
-	    end
-	  else
-	    io.ungetc ch
-	    if @postproc and @preproc.nil? || @preproc.call(op, io)
-	      D_DETAIL.printf("op3: %s\n", op)
-	      @postproc.call(op, io)
-	    else
-	      nil
-	    end
-	  end
-	end
-      end
-    end
-  end
-end
-
-SLex=IRB::SLex
-
-if $0 == __FILE__
-  #    Tracer.on
-  case $1
-  when "1"
-    tr = SLex.new
-    print "0: ", tr.inspect, "\n"
-    tr.def_rule("=") {print "=\n"}
-    print "1: ", tr.inspect, "\n"
-    tr.def_rule("==") {print "==\n"}
-    print "2: ", tr.inspect, "\n"
-    
-    print "case 1:\n"
-    print tr.match("="), "\n"
-    print "case 2:\n"
-    print tr.match("=="), "\n"
-    print "case 3:\n"
-    print tr.match("=>"), "\n"
-    
-  when "2"
-    tr = SLex.new
-    print "0: ", tr.inspect, "\n"
-    tr.def_rule("=") {print "=\n"}
-    print "1: ", tr.inspect, "\n"
-    tr.def_rule("==", proc{false}) {print "==\n"}
-    print "2: ", tr.inspect, "\n"
-    
-    print "case 1:\n"
-    print tr.match("="), "\n"
-    print "case 2:\n"
-    print tr.match("=="), "\n"
-    print "case 3:\n"
-    print tr.match("=>"), "\n"
-  end
-  exit
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/version.rb
deleted file mode 100644
index dc3646e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/version.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#   irb/version.rb - irb version definition file
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#
-#   
-#
-
-module IRB
-  @RELEASE_VERSION = "0.9.5"
-  @LAST_UPDATE_DATE = "05/04/13"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/workspace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/workspace.rb
deleted file mode 100644
index d1a3a3e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/workspace.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#   irb/workspace-binding.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-module IRB
-  class WorkSpace
-    # create new workspace. set self to main if specified, otherwise
-    # inherit main from TOPLEVEL_BINDING.
-    def initialize(*main)
-      if main[0].kind_of?(Binding)
-	@binding = main.shift
-      elsif IRB.conf[:SINGLE_IRB]
-	@binding = TOPLEVEL_BINDING
-      else
-	case IRB.conf[:CONTEXT_MODE]
-	when 0	# binding in proc on TOPLEVEL_BINDING
-	  @binding = eval("proc{binding}.call",
-		      TOPLEVEL_BINDING, 
-		      __FILE__,
-		      __LINE__)
-	when 1	# binding in loaded file
-	  require "tempfile"
-	  f = Tempfile.open("irb-binding")
-	  f.print <<EOF
-	  $binding = binding
-EOF
-	  f.close
-	  load f.path
-	  @binding = $binding
-
-	when 2	# binding in loaded file(thread use)
-	  unless defined? BINDING_QUEUE
-	    require "thread"
-	    
-	    IRB.const_set("BINDING_QUEUE", SizedQueue.new(1))
-	    Thread.abort_on_exception = true
-	    Thread.start do
-	      eval "require \"irb/ws-for-case-2\"", TOPLEVEL_BINDING, __FILE__, __LINE__
-	    end
-	    Thread.pass
-	  end
-	  @binding = BINDING_QUEUE.pop
-
-	when 3	# binging in function on TOPLEVEL_BINDING(default)
-	  @binding = eval("def irb_binding; binding; end; irb_binding",
-		      TOPLEVEL_BINDING, 
-		      __FILE__,
-		      __LINE__ - 3)
-	end
-      end
-      if main.empty?
-	@main = eval("self", @binding)
-      else
-	@main = main[0]
-	IRB.conf[:__MAIN__] = @main
-	case @main
-	when Module
-	  @binding = eval("IRB.conf[:__MAIN__].module_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
-	else
-	  begin 
-	    @binding = eval("IRB.conf[:__MAIN__].instance_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
-	  rescue TypeError
-	    IRB.fail CantChangeBinding, @main.inspect
-	  end
-	end
-      end
-      eval("_=nil", @binding)
-    end
-
-    attr_reader :binding
-    attr_reader :main
-
-    def evaluate(context, statements, file = __FILE__, line = __LINE__)
-      eval(statements, @binding, file, line)
-    end
-  
-    # error message manipulator
-    def filter_backtrace(bt)
-      case IRB.conf[:CONTEXT_MODE]
-      when 0
-	return nil if bt =~ /\(irb_local_binding\)/
-      when 1
-	if(bt =~ %r!/tmp/irb-binding! or
-	   bt =~ %r!irb/.*\.rb! or
-	   bt =~ /irb\.rb/)
-	  return nil
-	end
-      when 2
-	return nil if bt =~ /irb\/.*\.rb/
-      when 3
-	return nil if bt =~ /irb\/.*\.rb/
-	bt.sub!(/:\s*in `irb_binding'/){""} 
-      end
-      bt
-    end
-
-    def IRB.delete_caller
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ws-for-case-2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ws-for-case-2.rb
deleted file mode 100644
index 8d6af6c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/ws-for-case-2.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-#   irb/ws-for-case-2.rb - 
-#   	$Release Version: 0.9.5$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ruby-lang.org)
-#
-# --
-#
-#   
-#
-
-while true
-  IRB::BINDING_QUEUE.push b = binding
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/xmp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/xmp.rb
deleted file mode 100644
index 879503d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/irb/xmp.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-#   xmp.rb - irb version of gotoken xmp
-#   	$Release Version: 0.9$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "irb"
-require "irb/frame"
-
-class XMP
-  @RCS_ID='-$Id: xmp.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
-
-  def initialize(bind = nil)
-    IRB.init_config(nil)
-    #IRB.parse_opts
-    #IRB.load_modules
-
-    IRB.conf[:PROMPT_MODE] = :XMP
-
-    bind = IRB::Frame.top(1) unless bind
-    ws = IRB::WorkSpace.new(bind)
-    @io = StringInputMethod.new
-    @irb = IRB::Irb.new(ws, @io)
-    @irb.context.ignore_sigint = false
-
-#    IRB.conf[:IRB_RC].call(@irb.context) if IRB.conf[:IRB_RC]
-    IRB.conf[:MAIN_CONTEXT] = @irb.context
-  end
-
-  def puts(exps)
-    @io.puts exps
-
-    if @irb.context.ignore_sigint
-      begin
-	trap_proc_b = trap("SIGINT"){@irb.signal_handle}
-	catch(:IRB_EXIT) do
-	  @irb.eval_input
-	end
-      ensure
-	trap("SIGINT", trap_proc_b)
-      end
-    else
-      catch(:IRB_EXIT) do
-	@irb.eval_input
-      end
-    end
-  end
-
-  class StringInputMethod < IRB::InputMethod
-    def initialize
-      super
-      @exps = []
-    end
-
-    def eof?
-      @exps.empty?
-    end
-
-    def gets
-      while l = @exps.shift
-	next if /^\s+$/ =~ l
-	l.concat "\n"
-	print @prompt, l
-	break
-      end
-      l
-    end
-
-    def puts(exps)
-      @exps.concat exps.split(/\n/)
-    end
-  end
-end
-
-def xmp(exps, bind = nil)
-  bind = IRB::Frame.top(1) unless bind
-  xmp = XMP.new(bind)
-  xmp.puts exps
-  xmp
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/jcode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/jcode.rb
deleted file mode 100644
index 78422f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/jcode.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-# jcode.rb - ruby code to handle japanese (EUC/SJIS) string
-
-if $VERBOSE && $KCODE == "NONE"
-  warn "Warning: $KCODE is NONE."
-end
-
-$vsave, $VERBOSE = $VERBOSE, false
-class String
-  warn "feel free for some warnings:\n" if $VERBOSE
-
-  def _regex_quote(str)
-    str.gsub(/(\\[\[\]\-\\])|\\(.)|([\[\]\\])/) do
-      $1 || $2 || '\\' + $3
-    end
-  end
-  private :_regex_quote
-
-  PATTERN_SJIS = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'
-  PATTERN_EUC = '[\xa1-\xfe][\xa1-\xfe]'
-  PATTERN_UTF8 = '[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf]'
-
-  RE_SJIS = Regexp.new(PATTERN_SJIS, 0, 'n')
-  RE_EUC = Regexp.new(PATTERN_EUC, 0, 'n')
-  RE_UTF8 = Regexp.new(PATTERN_UTF8, 0, 'n')
-
-  SUCC = {}
-  SUCC['s'] = Hash.new(1)
-  for i in 0 .. 0x3f
-    SUCC['s'][i.chr] = 0x40 - i
-  end
-  SUCC['s']["\x7e"] = 0x80 - 0x7e
-  SUCC['s']["\xfd"] = 0x100 - 0xfd
-  SUCC['s']["\xfe"] = 0x100 - 0xfe
-  SUCC['s']["\xff"] = 0x100 - 0xff
-  SUCC['e'] = Hash.new(1)
-  for i in 0 .. 0xa0
-    SUCC['e'][i.chr] = 0xa1 - i
-  end
-  SUCC['e']["\xfe"] = 2
-  SUCC['u'] = Hash.new(1)
-  for i in 0 .. 0x7f
-    SUCC['u'][i.chr] = 0x80 - i
-  end
-  SUCC['u']["\xbf"] = 0x100 - 0xbf
-
-  def mbchar?
-    case $KCODE[0]
-    when ?s, ?S
-      self =~ RE_SJIS
-    when ?e, ?E
-      self =~ RE_EUC
-    when ?u, ?U
-      self =~ RE_UTF8
-    else
-      nil
-    end
-  end
-
-  def end_regexp
-    case $KCODE[0]
-    when ?s, ?S
-      /#{PATTERN_SJIS}$/on
-    when ?e, ?E
-      /#{PATTERN_EUC}$/on
-    when ?u, ?U
-      /#{PATTERN_UTF8}$/on
-    else
-      /.$/on
-    end
-  end
-
-  alias original_succ! succ!
-  private :original_succ!
-
-  alias original_succ succ
-  private :original_succ
-
-  def succ!
-    reg = end_regexp
-    if  $KCODE != 'NONE' && self =~ reg
-      succ_table = SUCC[$KCODE[0,1].downcase]
-      begin
-	self[-1] += succ_table[self[-1]]
-	self[-2] += 1 if self[-1] == 0
-      end while self !~ reg
-      self
-    else
-      original_succ!
-    end
-  end
-
-  def succ
-    str = self.dup
-    str.succ! or str
-  end
-
-  private
-
-  def _expand_ch str
-    a = []
-    str.scan(/(?:\\(.)|([^\\]))-(?:\\(.)|([^\\]))|(?:\\(.)|(.))/m) do
-      from = $1 || $2
-      to = $3 || $4
-      one = $5 || $6
-      if one
-	a.push one
-      elsif from.length != to.length
-	next
-      elsif from.length == 1
-	from[0].upto(to[0]) { |c| a.push c.chr }
-      else
-	from.upto(to) { |c| a.push c }
-      end
-    end
-    a
-  end
-
-  def expand_ch_hash from, to
-    h = {}
-    afrom = _expand_ch(from)
-    ato = _expand_ch(to)
-    afrom.each_with_index do |x,i| h[x] = ato[i] || ato[-1] end
-    h
-  end
-
-  HashCache = {}
-  TrPatternCache = {}
-  DeletePatternCache = {}
-  SqueezePatternCache = {}
-
-  public
-
-  def tr!(from, to)
-    return nil if from == ""
-    return self.delete!(from) if to == ""
-
-    pattern = TrPatternCache[from] ||= /[#{_regex_quote(from)}]/
-    if from[0] == ?^
-      last = /.$/.match(to)[0]
-      self.gsub!(pattern, last)
-    else
-      h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
-      self.gsub!(pattern) do |c| h[c] end
-    end
-  end
-
-  def tr(from, to)
-    (str = self.dup).tr!(from, to) or str
-  end
-
-  def delete!(del)
-    return nil if del == ""
-    self.gsub!(DeletePatternCache[del] ||= /[#{_regex_quote(del)}]+/, '')
-  end
-
-  def delete(del)
-    (str = self.dup).delete!(del) or str
-  end
-
-  def squeeze!(del=nil)
-    return nil if del == ""
-    pattern =
-      if del
-	SqueezePatternCache[del] ||= /([#{_regex_quote(del)}])\1+/
-      else
-	/(.|\n)\1+/
-      end
-    self.gsub!(pattern, '\1')
-  end
-
-  def squeeze(del=nil)
-    (str = self.dup).squeeze!(del) or str
-  end
-
-  def tr_s!(from, to)
-    return self.delete!(from) if to.length == 0
-
-    pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1*/
-    if from[0] == ?^
-      last = /.$/.match(to)[0]
-      self.gsub!(pattern, last)
-    else
-      h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
-      self.gsub!(pattern) do h[$1] end
-    end
-  end
-
-  def tr_s(from, to)
-    (str = self.dup).tr_s!(from,to) or str
-  end
-
-  def chop!
-    self.gsub!(/(?:.|\r?\n)\z/, '')
-  end
-
-  def chop
-    (str = self.dup).chop! or str
-  end
-
-  def jlength
-    self.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
-  end
-  alias jsize jlength
-
-  def jcount(str)
-    self.delete("^#{str}").jlength
-  end
-
-  def each_char
-    if block_given?
-      scan(/./m) do |x|
-        yield x
-      end
-    else
-      scan(/./m)
-    end
-  end
-
-end
-$VERBOSE = $vsave
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/kconv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/kconv.rb
deleted file mode 100644
index 168f9ca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/kconv.rb
+++ /dev/null
@@ -1,367 +0,0 @@
-#
-# kconv.rb - Kanji Converter.
-#
-# $Id: kconv.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# ----
-#
-# kconv.rb implements the Kconv class for Kanji Converter.  Additionally,
-# some methods in String classes are added to allow easy conversion.
-#
-
-require 'nkf'
-
-#
-# Kanji Converter for Ruby.
-#
-module Kconv
-  #
-  # Public Constants
-  #
-  
-  #Constant of Encoding
-  
-  # Auto-Detect
-  AUTO = NKF::AUTO
-  # ISO-2022-JP
-  JIS = NKF::JIS
-  # EUC-JP
-  EUC = NKF::EUC
-  # Shift_JIS
-  SJIS = NKF::SJIS
-  # BINARY
-  BINARY = NKF::BINARY
-  # NOCONV
-  NOCONV = NKF::NOCONV
-  # ASCII
-  ASCII = NKF::ASCII
-  # UTF-8
-  UTF8 = NKF::UTF8
-  # UTF-16
-  UTF16 = NKF::UTF16
-  # UTF-32
-  UTF32 = NKF::UTF32
-  # UNKNOWN
-  UNKNOWN = NKF::UNKNOWN
-
-  #
-  # Private Constants
-  #
-  
-  # Revision of kconv.rb
-  REVISION = %q$Revision: 11708 $
-  
-  #Regexp of Encoding
-  
-  # Regexp of Shift_JIS string (private constant)
-  RegexpShiftjis = /\A(?:
-		       [\x00-\x7f\xa1-\xdf] |
-		       [\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc] 
-		      )*\z/nx
-
-  # Regexp of EUC-JP string (private constant)
-  RegexpEucjp = /\A(?:
-		    [\x00-\x7f]                         |
-		    \x8e        [\xa1-\xdf]             |
-		    \x8f        [\xa1-\xfe] [\xa1-\xfe] |
-		    [\xa1-\xfe] [\xa1-\xfe]
-		   )*\z/nx
-
-  # Regexp of UTF-8 string (private constant)
-  RegexpUtf8  = /\A(?:
-		    [\x00-\x7f]                                     |
-		    [\xc2-\xdf] [\x80-\xbf]                         |
-		    \xe0        [\xa0-\xbf] [\x80-\xbf]             |
-		    [\xe1-\xef] [\x80-\xbf] [\x80-\xbf]             |
-		    \xf0        [\x90-\xbf] [\x80-\xbf] [\x80-\xbf] |
-		    [\xf1-\xf3] [\x80-\xbf] [\x80-\xbf] [\x80-\xbf] |
-		    \xf4        [\x80-\x8f] [\x80-\xbf] [\x80-\xbf]
-		   )*\z/nx
-
-  #
-  # Public Methods
-  #
-  
-  # call-seq:
-  #    Kconv.kconv(str, out_code, in_code = Kconv::AUTO)
-  #
-  # Convert <code>str</code> to out_code.
-  # <code>out_code</code> and <code>in_code</code> are given as constants of Kconv.
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want to decode them, use NKF.nkf.
-  def kconv(str, out_code, in_code = AUTO)
-    opt = '-'
-    case in_code
-    when ::NKF::JIS
-      opt << 'J'
-    when ::NKF::EUC
-      opt << 'E'
-    when ::NKF::SJIS
-      opt << 'S'
-    when ::NKF::UTF8
-      opt << 'W'
-    when ::NKF::UTF16
-      opt << 'W16'
-    end
-
-    case out_code
-    when ::NKF::JIS
-      opt << 'j'
-    when ::NKF::EUC
-      opt << 'e'
-    when ::NKF::SJIS
-      opt << 's'
-    when ::NKF::UTF8
-      opt << 'w'
-    when ::NKF::UTF16
-      opt << 'w16'
-    when ::NKF::NOCONV
-      return str
-    end
-
-    opt = '' if opt == '-'
-
-    ::NKF::nkf(opt, str)
-  end
-  module_function :kconv
-
-  #
-  # Encode to
-  #
-
-  # call-seq:
-  #    Kconv.tojis(str)   -> string
-  #
-  # Convert <code>str</code> to ISO-2022-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-jxm0', str).
-  def tojis(str)
-    ::NKF::nkf('-jm', str)
-  end
-  module_function :tojis
-
-  # call-seq:
-  #    Kconv.toeuc(str)   -> string
-  #
-  # Convert <code>str</code> to EUC-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-exm0', str).
-  def toeuc(str)
-    ::NKF::nkf('-em', str)
-  end
-  module_function :toeuc
-
-  # call-seq:
-  #    Kconv.tosjis(str)   -> string
-  #
-  # Convert <code>str</code> to Shift_JIS
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-sxm0', str).
-  def tosjis(str)
-    ::NKF::nkf('-sm', str)
-  end
-  module_function :tosjis
-
-  # call-seq:
-  #    Kconv.toutf8(str)   -> string
-  #
-  # Convert <code>str</code> to UTF-8
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-wxm0', str).
-  def toutf8(str)
-    ::NKF::nkf('-wm', str)
-  end
-  module_function :toutf8
-
-  # call-seq:
-  #    Kconv.toutf16(str)   -> string
-  #
-  # Convert <code>str</code> to UTF-16
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-w16xm0', str).
-  def toutf16(str)
-    ::NKF::nkf('-w16m', str)
-  end
-  module_function :toutf16
-
-  #
-  # guess
-  #
-
-  # call-seq:
-  #    Kconv.guess(str)   -> integer
-  #
-  # Guess input encoding by NKF.guess2
-  def guess(str)
-    ::NKF::guess(str)
-  end
-  module_function :guess
-
-  # call-seq:
-  #    Kconv.guess_old(str)   -> integer
-  #
-  # Guess input encoding by NKF.guess1
-  def guess_old(str)
-    ::NKF::guess1(str)
-  end
-  module_function :guess_old
-
-  #
-  # isEncoding
-  #
-
-  # call-seq:
-  #    Kconv.iseuc(str)   -> obj or nil
-  #
-  # Returns whether input encoding is EUC-JP or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def iseuc(str)
-    RegexpEucjp.match( str )
-  end
-  module_function :iseuc
-
-  # call-seq:
-  #    Kconv.issjis(str)   -> obj or nil
-  #
-  # Returns whether input encoding is Shift_JIS or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def issjis(str)
-    RegexpShiftjis.match( str )
-  end
-  module_function :issjis
-
-  # call-seq:
-  #    Kconv.isutf8(str)   -> obj or nil
-  #
-  # Returns whether input encoding is UTF-8 or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def isutf8(str)
-    RegexpUtf8.match( str )
-  end
-  module_function :isutf8
-
-end
-
-class String
-  # call-seq:
-  #    String#kconv(out_code, in_code = Kconv::AUTO)
-  #
-  # Convert <code>self</code> to out_code.
-  # <code>out_code</code> and <code>in_code</code> are given as constants of Kconv.
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want to decode them, use NKF.nkf.
-  def kconv(out_code, in_code=Kconv::AUTO)
-    Kconv::kconv(self, out_code, in_code)
-  end
-  
-  #
-  # to Encoding
-  #
-  
-  # call-seq:
-  #    String#tojis   -> string
-  #
-  # Convert <code>self</code> to ISO-2022-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-jxm0', str).
-  def tojis; Kconv.tojis(self) end
-
-  # call-seq:
-  #    String#toeuc   -> string
-  #
-  # Convert <code>self</code> to EUC-JP
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-exm0', str).
-  def toeuc; Kconv.toeuc(self) end
-
-  # call-seq:
-  #    String#tosjis   -> string
-  #
-  # Convert <code>self</code> to Shift_JIS
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-sxm0', str).
-  def tosjis; Kconv.tosjis(self) end
-
-  # call-seq:
-  #    String#toutf8   -> string
-  #
-  # Convert <code>self</code> to UTF-8
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-wxm0', str).
-  def toutf8; Kconv.toutf8(self) end
-
-  # call-seq:
-  #    String#toutf16   -> string
-  #
-  # Convert <code>self</code> to UTF-16
-  #
-  # *Note*
-  # This method decode MIME encoded string and
-  # convert halfwidth katakana to fullwidth katakana.
-  # If you don't want it, use NKF.nkf('-w16xm0', str).
-  def toutf16; Kconv.toutf16(self) end
-
-  #
-  # is Encoding
-  #
-
-  # call-seq:
-  #    String#iseuc   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is EUC-JP or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def iseuc;	Kconv.iseuc(self) end
-
-  # call-seq:
-  #    String#issjis   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is Shift_JIS or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def issjis;	Kconv.issjis(self) end
-
-  # call-seq:
-  #    String#isutf8   -> obj or nil
-  #
-  # Returns whether <code>self</code>'s encoding is UTF-8 or not.
-  #
-  # *Note* don't expect this return value is MatchData.
-  def isutf8;	Kconv.isutf8(self) end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/logger.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/logger.rb
deleted file mode 100644
index 6fdd6c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/logger.rb
+++ /dev/null
@@ -1,703 +0,0 @@
-# logger.rb - saimple logging utility
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nakahiro at sarion.co.jp>.
-
-require 'monitor'
-
-# Simple logging utility.
-#
-# Author:: NAKAMURA, Hiroshi  <nakahiro at sarion.co.jp>
-# Documentation:: NAKAMURA, Hiroshi and Gavin Sinclair
-# License::
-#   You can redistribute it and/or modify it under the same terms of Ruby's
-#   license; either the dual license version in 2003, or any later version.
-# Revision:: $Id: logger.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# == Description
-#
-# The Logger class provides a simple but sophisticated logging utility that
-# anyone can use because it's included in the Ruby 1.8.x standard library.
-#
-# The HOWTOs below give a code-based overview of Logger's usage, but the basic
-# concept is as follows.  You create a Logger object (output to a file or
-# elsewhere), and use it to log messages.  The messages will have varying
-# levels (+info+, +error+, etc), reflecting their varying importance.  The
-# levels, and their meanings, are:
-#
-# +FATAL+:: an unhandleable error that results in a program crash
-# +ERROR+:: a handleable error condition
-# +WARN+::  a warning
-# +INFO+::  generic (useful) information about system operation
-# +DEBUG+:: low-level information for developers
-#
-# So each message has a level, and the Logger itself has a level, which acts
-# as a filter, so you can control the amount of information emitted from the
-# logger without having to remove actual messages.
-#
-# For instance, in a production system, you may have your logger(s) set to
-# +INFO+ (or +WARN+ if you don't want the log files growing large with
-# repetitive information).  When you are developing it, though, you probably
-# want to know about the program's internal state, and would set them to
-# +DEBUG+.
-#
-# === Example
-#
-# A simple example demonstrates the above explanation:
-#
-#   log = Logger.new(STDOUT)
-#   log.level = Logger::WARN
-#
-#   log.debug("Created logger")
-#   log.info("Program started")
-#   log.warn("Nothing to do!")
-#
-#   begin
-#     File.each_line(path) do |line|
-#       unless line =~ /^(\w+) = (.*)$/
-#         log.error("Line in wrong format: #{line}")
-#       end
-#     end
-#   rescue => err
-#     log.fatal("Caught exception; exiting")
-#     log.fatal(err)
-#   end
-#
-# Because the Logger's level is set to +WARN+, only the warning, error, and
-# fatal messages are recorded.  The debug and info messages are silently
-# discarded.
-#
-# === Features
-#
-# There are several interesting features that Logger provides, like
-# auto-rolling of log files, setting the format of log messages, and
-# specifying a program name in conjunction with the message.  The next section
-# shows you how to achieve these things.
-#
-#
-# == HOWTOs
-#
-# === How to create a logger
-#
-# The options below give you various choices, in more or less increasing
-# complexity.
-#
-# 1. Create a logger which logs messages to STDERR/STDOUT.
-#
-#      logger = Logger.new(STDERR)
-#      logger = Logger.new(STDOUT)
-#
-# 2. Create a logger for the file which has the specified name.
-#
-#      logger = Logger.new('logfile.log')
-#
-# 3. Create a logger for the specified file.
-#
-#      file = File.open('foo.log', File::WRONLY | File::APPEND)
-#      # To create new (and to remove old) logfile, add File::CREAT like;
-#      #   file = open('foo.log', File::WRONLY | File::APPEND | File::CREAT)
-#      logger = Logger.new(file)
-#
-# 4. Create a logger which ages logfile once it reaches a certain size.  Leave
-#    10 "old log files" and each file is about 1,024,000 bytes.
-#
-#      logger = Logger.new('foo.log', 10, 1024000)
-#
-# 5. Create a logger which ages logfile daily/weekly/monthly.
-#
-#      logger = Logger.new('foo.log', 'daily')
-#      logger = Logger.new('foo.log', 'weekly')
-#      logger = Logger.new('foo.log', 'monthly')
-#
-# === How to log a message
-#
-# Notice the different methods (+fatal+, +error+, +info+) being used to log
-# messages of various levels.  Other methods in this family are +warn+ and
-# +debug+.  +add+ is used below to log a message of an arbitrary (perhaps
-# dynamic) level.
-#
-# 1. Message in block.
-#
-#      logger.fatal { "Argument 'foo' not given." }
-#
-# 2. Message as a string.
-#
-#      logger.error "Argument #{ @foo } mismatch."
-#
-# 3. With progname.
-#
-#      logger.info('initialize') { "Initializing..." }
-#
-# 4. With severity.
-#
-#      logger.add(Logger::FATAL) { 'Fatal error!' }
-#
-# === How to close a logger
-#
-#      logger.close
-#
-# === Setting severity threshold
-#
-# 1. Original interface.
-#
-#      logger.sev_threshold = Logger::WARN
-#
-# 2. Log4r (somewhat) compatible interface.
-#
-#      logger.level = Logger::INFO
-#      
-#      DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
-#
-#
-# == Format
-#
-# Log messages are rendered in the output stream in a certain format.  The
-# default format and a sample are shown below:
-#
-# Log format:
-#   SeverityID, [Date Time mSec #pid] SeverityLabel -- ProgName: message
-#
-# Log sample:
-#   I, [Wed Mar 03 02:34:24 JST 1999 895701 #19074]  INFO -- Main: info.
-#
-# You may change the date and time format in this manner:
-#
-#   logger.datetime_format = "%Y-%m-%d %H:%M:%S"
-#         # e.g. "2004-01-03 00:54:26"
-#
-# There is currently no supported way to change the overall format, but you may
-# have some luck hacking the Format constant.
-#
-
-
-class Logger
-  VERSION = "1.2.6"
-  /: (\S+),v (\S+)/ =~ %q$Id: logger.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  ProgName = "#{$1}/#{$2}"
-
-  class Error < RuntimeError; end
-  class ShiftingError < Error; end
-
-  # Logging severity.
-  module Severity
-    DEBUG = 0
-    INFO = 1
-    WARN = 2
-    ERROR = 3
-    FATAL = 4
-    UNKNOWN = 5
-  end
-  include Severity
-
-  # Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
-  attr_accessor :level
-
-  # Logging program name.
-  attr_accessor :progname
-
-  # Logging date-time format (string passed to +strftime+).
-  def datetime_format=(datetime_format)
-    @default_formatter.datetime_format = datetime_format
-  end
-
-  def datetime_format
-    @default_formatter.datetime_format
-  end
-
-  # Logging formatter.  formatter#call is invoked with 4 arguments; severity,
-  # time, progname and msg for each log.  Bear in mind that time is a Time and
-  # msg is an Object that user passed and it could not be a String.  It is
-  # expected to return a logdev#write-able Object.  Default formatter is used
-  # when no formatter is set.
-  attr_accessor :formatter
-
-  alias sev_threshold level
-  alias sev_threshold= level=
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +DEBUG+ messages.
-  def debug?; @level <= DEBUG; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +INFO+ messages.
-  def info?; @level <= INFO; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +WARN+ messages.
-  def warn?; @level <= WARN; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +ERROR+ messages.
-  def error?; @level <= ERROR; end
-
-  # Returns +true+ iff the current severity level allows for the printing of
-  # +FATAL+ messages.
-  def fatal?; @level <= FATAL; end
-
-  #
-  # === Synopsis
-  #
-  #   Logger.new(name, shift_age = 7, shift_size = 1048576)
-  #   Logger.new(name, shift_age = 'weekly')
-  #
-  # === Args
-  #
-  # +logdev+::
-  #   The log device.  This is a filename (String) or IO object (typically
-  #   +STDOUT+, +STDERR+, or an open file).
-  # +shift_age+::
-  #   Number of old log files to keep, *or* frequency of rotation (+daily+,
-  #   +weekly+ or +monthly+).
-  # +shift_size+::
-  #   Maximum logfile size (only applies when +shift_age+ is a number).
-  #
-  # === Description
-  #
-  # Create an instance.
-  #
-  def initialize(logdev, shift_age = 0, shift_size = 1048576)
-    @progname = nil
-    @level = DEBUG
-    @default_formatter = Formatter.new
-    @formatter = nil
-    @logdev = nil
-    if logdev
-      @logdev = LogDevice.new(logdev, :shift_age => shift_age,
-        :shift_size => shift_size)
-    end
-  end
-
-  #
-  # === Synopsis
-  #
-  #   Logger#add(severity, message = nil, progname = nil) { ... }
-  #
-  # === Args
-  #
-  # +severity+::
-  #   Severity.  Constants are defined in Logger namespace: +DEBUG+, +INFO+,
-  #   +WARN+, +ERROR+, +FATAL+, or +UNKNOWN+.
-  # +message+::
-  #   The log message.  A String or Exception.
-  # +progname+::
-  #   Program name string.  Can be omitted.  Treated as a message if no +message+ and
-  #   +block+ are given.
-  # +block+::
-  #   Can be omitted.  Called to get a message string if +message+ is nil.
-  #
-  # === Return
-  #
-  # +true+ if successful, +false+ otherwise.
-  #
-  # When the given severity is not high enough (for this particular logger), log
-  # no message, and return +true+.
-  #
-  # === Description
-  #
-  # Log a message if the given severity is high enough.  This is the generic
-  # logging method.  Users will be more inclined to use #debug, #info, #warn,
-  # #error, and #fatal.
-  #
-  # <b>Message format</b>: +message+ can be any object, but it has to be
-  # converted to a String in order to log it.  Generally, +inspect+ is used
-  # if the given object is not a String.
-  # A special case is an +Exception+ object, which will be printed in detail,
-  # including message, class, and backtrace.  See #msg2str for the
-  # implementation if required.
-  #
-  # === Bugs
-  #
-  # * Logfile is not locked.
-  # * Append open does not need to lock file.
-  # * But on the OS which supports multi I/O, records possibly be mixed.
-  #
-  def add(severity, message = nil, progname = nil, &block)
-    severity ||= UNKNOWN
-    if @logdev.nil? or severity < @level
-      return true
-    end
-    progname ||= @progname
-    if message.nil?
-      if block_given?
-	message = yield
-      else
-	message = progname
-	progname = @progname
-      end
-    end
-    @logdev.write(
-      format_message(format_severity(severity), Time.now, progname, message))
-    true
-  end
-  alias log add
-
-  #
-  # Dump given message to the log device without any formatting.  If no log
-  # device exists, return +nil+.
-  #
-  def <<(msg)
-    unless @logdev.nil?
-      @logdev.write(msg)
-    end
-  end
-
-  #
-  # Log a +DEBUG+ message.
-  #
-  # See #info for more information.
-  #
-  def debug(progname = nil, &block)
-    add(DEBUG, nil, progname, &block)
-  end
-
-  #
-  # Log an +INFO+ message.
-  #
-  # The message can come either from the +progname+ argument or the +block+.  If
-  # both are provided, then the +block+ is used as the message, and +progname+
-  # is used as the program name.
-  #
-  # === Examples
-  #
-  #   logger.info("MainApp") { "Received connection from #{ip}" }
-  #   # ...
-  #   logger.info "Waiting for input from user"
-  #   # ...
-  #   logger.info { "User typed #{input}" }
-  #
-  # You'll probably stick to the second form above, unless you want to provide a
-  # program name (which you can do with <tt>Logger#progname=</tt> as well).
-  #
-  # === Return
-  #
-  # See #add.
-  #
-  def info(progname = nil, &block)
-    add(INFO, nil, progname, &block)
-  end
-
-  #
-  # Log a +WARN+ message.
-  #
-  # See #info for more information.
-  #
-  def warn(progname = nil, &block)
-    add(WARN, nil, progname, &block)
-  end
-
-  #
-  # Log an +ERROR+ message.
-  #
-  # See #info for more information.
-  #
-  def error(progname = nil, &block)
-    add(ERROR, nil, progname, &block)
-  end
-
-  #
-  # Log a +FATAL+ message.
-  #
-  # See #info for more information.
-  #
-  def fatal(progname = nil, &block)
-    add(FATAL, nil, progname, &block)
-  end
-
-  #
-  # Log an +UNKNOWN+ message.  This will be printed no matter what the logger
-  # level.
-  #
-  # See #info for more information.
-  #
-  def unknown(progname = nil, &block)
-    add(UNKNOWN, nil, progname, &block)
-  end
-
-  #
-  # Close the logging device.
-  #
-  def close
-    @logdev.close if @logdev
-  end
-
-private
-
-  # Severity label for logging. (max 5 char)
-  SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL ANY)
-
-  def format_severity(severity)
-    SEV_LABEL[severity] || 'ANY'
-  end
-
-  def format_message(severity, datetime, progname, msg)
-    (@formatter || @default_formatter).call(severity, datetime, progname, msg)
-  end
-
-
-  class Formatter
-    Format = "%s, [%s#%d] %5s -- %s: %s\n"
-
-    attr_accessor :datetime_format
-
-    def initialize
-      @datetime_format = nil
-    end
-
-    def call(severity, time, progname, msg)
-      Format % [severity[0..0], format_datetime(time), $$, severity, progname,
-        msg2str(msg)]
-    end
-
-  private
-
-    def format_datetime(time)
-      if @datetime_format.nil?
-        time.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d " % time.usec
-      else
-        time.strftime(@datetime_format)
-      end
-    end
-
-    def msg2str(msg)
-      case msg
-      when ::String
-        msg
-      when ::Exception
-        "#{ msg.message } (#{ msg.class })\n" <<
-          (msg.backtrace || []).join("\n")
-      else
-        msg.inspect
-      end
-    end
-  end
-
-
-  class LogDevice
-    attr_reader :dev
-    attr_reader :filename
-
-    class LogDeviceMutex
-      include MonitorMixin
-    end
-
-    def initialize(log = nil, opt = {})
-      @dev = @filename = @shift_age = @shift_size = nil
-      @mutex = LogDeviceMutex.new
-      if log.respond_to?(:write) and log.respond_to?(:close)
-	@dev = log
-      else
-	@dev = open_logfile(log)
-	@dev.sync = true
-	@filename = log
-	@shift_age = opt[:shift_age] || 7
-	@shift_size = opt[:shift_size] || 1048576
-      end
-    end
-
-    def write(message)
-      @mutex.synchronize do
-        if @shift_age and @dev.respond_to?(:stat)
-          begin
-            check_shift_log
-          rescue
-            raise Logger::ShiftingError.new("Shifting failed. #{$!}")
-          end
-        end
-        @dev.write(message)
-      end
-    end
-
-    def close
-      @mutex.synchronize do
-        @dev.close
-      end
-    end
-
-  private
-
-    def open_logfile(filename)
-      if (FileTest.exist?(filename))
-     	open(filename, (File::WRONLY | File::APPEND))
-      else
-       	create_logfile(filename)
-      end
-    end
-
-    def create_logfile(filename)
-      logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
-      logdev.sync = true
-      add_log_header(logdev)
-      logdev
-    end
-
-    def add_log_header(file)
-      file.write(
-     	"# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
-    )
-    end
-
-    SiD = 24 * 60 * 60
-
-    def check_shift_log
-      if @shift_age.is_a?(Integer)
-        # Note: always returns false if '0'.
-        if @filename && (@shift_age > 0) && (@dev.stat.size > @shift_size)
-          shift_log_age
-        end
-      else
-        now = Time.now
-        if @dev.stat.mtime <= previous_period_end(now)
-          shift_log_period(now)
-        end
-      end
-    end
-
-    def shift_log_age
-      (@shift_age-3).downto(0) do |i|
-        if FileTest.exist?("#{@filename}.#{i}")
-          File.rename("#{@filename}.#{i}", "#{@filename}.#{i+1}")
-        end
-      end
-      @dev.close
-      File.rename("#{@filename}", "#{@filename}.0")
-      @dev = create_logfile(@filename)
-      return true
-    end
-
-    def shift_log_period(now)
-      postfix = previous_period_end(now).strftime("%Y%m%d")	# YYYYMMDD
-      age_file = "#{@filename}.#{postfix}"
-      if FileTest.exist?(age_file)
-        raise RuntimeError.new("'#{ age_file }' already exists.")
-      end
-      @dev.close
-      File.rename("#{@filename}", age_file)
-      @dev = create_logfile(@filename)
-      return true
-    end
-
-    def previous_period_end(now)
-      case @shift_age
-      when /^daily$/
-        eod(now - 1 * SiD)
-      when /^weekly$/
-        eod(now - ((now.wday + 1) * SiD))
-      when /^monthly$/
-        eod(now - now.mday * SiD)
-      else
-        now
-      end
-    end
-
-    def eod(t)
-      Time.mktime(t.year, t.month, t.mday, 23, 59, 59)
-    end
-  end
-
-
-  #
-  # == Description
-  #
-  # Application -- Add logging support to your application.
-  #
-  # == Usage
-  #
-  # 1. Define your application class as a sub-class of this class.
-  # 2. Override 'run' method in your class to do many things.
-  # 3. Instantiate it and invoke 'start'.
-  #
-  # == Example
-  #
-  #   class FooApp < Application
-  #     def initialize(foo_app, application_specific, arguments)
-  #       super('FooApp') # Name of the application.
-  #     end
-  #
-  #     def run
-  #       ...
-  #       log(WARN, 'warning', 'my_method1')
-  #       ...
-  #       @log.error('my_method2') { 'Error!' }
-  #       ...
-  #     end
-  #   end
-  #
-  #   status = FooApp.new(....).start
-  #
-  class Application
-    include Logger::Severity
-
-    attr_reader :appname
-    attr_reader :logdev
-
-    #
-    # == Synopsis
-    #
-    #   Application.new(appname = '')
-    #
-    # == Args
-    #
-    # +appname+:: Name of the application.
-    #
-    # == Description
-    #
-    # Create an instance.  Log device is +STDERR+ by default.  This can be
-    # changed with #set_log.
-    #
-    def initialize(appname = nil)
-      @appname = appname
-      @log = Logger.new(STDERR)
-      @log.progname = @appname
-      @level = @log.level
-    end
-
-    #
-    # Start the application.  Return the status code.
-    #
-    def start
-      status = -1
-      begin
-	log(INFO, "Start of #{ @appname }.")
-	status = run
-      rescue
-	log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n"))
-      ensure
-	log(INFO, "End of #{ @appname }. (status: #{ status.to_s })")
-      end
-      status
-    end
-
-    #
-    # Sets the log device for this application.  See the class Logger for an
-    # explanation of the arguments.
-    #
-    def set_log(logdev, shift_age = 0, shift_size = 1024000)
-      @log = Logger.new(logdev, shift_age, shift_size)
-      @log.progname = @appname
-      @log.level = @level
-    end
-
-    def log=(logdev)
-      set_log(logdev)
-    end
-
-    #
-    # Set the logging threshold, just like <tt>Logger#level=</tt>.
-    #
-    def level=(level)
-      @level = level
-      @log.level = @level
-    end
-
-    #
-    # See Logger#add.  This application's +appname+ is used.
-    #
-    def log(severity, message = nil, &block)
-      @log.add(severity, message, @appname, &block) if @log
-    end
-
-  private
-
-    def run
-      raise RuntimeError.new('Method run must be defined in the derived class.')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mailread.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mailread.rb
deleted file mode 100644
index 08b33c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mailread.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-# The Mail class represents an internet mail message (as per RFC822, RFC2822)
-# with headers and a body. 
-class Mail
-
-  # Create a new Mail where +f+ is either a stream which responds to gets(),
-  # or a path to a file.  If +f+ is a path it will be opened.
-  #
-  # The whole message is read so it can be made available through the #header,
-  # #[] and #body methods.
-  #
-  # The "From " line is ignored if the mail is in mbox format.
-  def initialize(f)
-    unless defined? f.gets
-      f = open(f, "r")
-      opened = true
-    end
-
-    @header = {}
-    @body = []
-    begin
-      while line = f.gets()
-	line.chop!
-	next if /^From /=~line	# skip From-line
-	break if /^$/=~line	# end of header
-
-	if /^(\S+?):\s*(.*)/=~line
-	  (attr = $1).capitalize!
-	  @header[attr] = $2
-	elsif attr
-	  line.sub!(/^\s*/, '')
-	  @header[attr] += "\n" + line
-	end
-      end
-  
-      return unless line
-
-      while line = f.gets()
-	break if /^From /=~line
-	@body.push(line)
-      end
-    ensure
-      f.close if opened
-    end
-  end
-
-  # Return the headers as a Hash.
-  def header
-    return @header
-  end
-
-  # Return the message body as an Array of lines
-  def body
-    return @body
-  end
-
-  # Return the header corresponding to +field+. 
-  #
-  # Matching is case-insensitive.
-  def [](field)
-    @header[field.capitalize]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mathn.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mathn.rb
deleted file mode 100644
index a5a121c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mathn.rb
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-#   mathn.rb - 
-#   	$Release Version: 0.5 $
-#   	$Revision: 1.1.1.1.4.1 $
-#   	$Date: 1998/01/16 12:36:05 $
-#   	by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# --
-#
-#   
-#
-
-require "complex.rb"
-require "rational.rb"
-require "matrix.rb"
-
-class Integer
-
-  def gcd2(int)
-    a = self.abs
-    b = int.abs
-    a, b = b, a if a < b
-    
-    pd_a = a.prime_division
-    pd_b = b.prime_division
-    
-    gcd = 1
-    for pair in pd_a
-      as = pd_b.assoc(pair[0])
-      if as
-	gcd *= as[0] ** [as[1], pair[1]].min
-      end
-    end
-    return gcd
-  end
-  
-  def Integer.from_prime_division(pd)
-    value = 1
-    for prime, index in pd
-      value *= prime**index
-    end
-    value
-  end
-  
-  def prime_division
-    raise ZeroDivisionError if self == 0
-    ps = Prime.new
-    value = self
-    pv = []
-    for prime in ps
-      count = 0
-      while (value1, mod = value.divmod(prime)
-	     mod) == 0
-	value = value1
-	count += 1
-      end
-      if count != 0
-	pv.push [prime, count]
-      end
-      break if prime * prime  >= value
-    end
-    if value > 1
-      pv.push [value, 1]
-    end
-    return pv
-  end
-end
-  
-class Prime
-  include Enumerable
-
-  def initialize
-    @seed = 1
-    @primes = []
-    @counts = []
-  end
-  
-  def succ
-    i = -1
-    size = @primes.size
-    while i < size
-      if i == -1
-	@seed += 1
-	i += 1
-      else
-	while @seed > @counts[i]
-	  @counts[i] += @primes[i]
-	end
-	if @seed != @counts[i]
-	  i += 1
-	else
-	  i = -1
-	end
-      end
-    end
-    @primes.push @seed
-    @counts.push @seed + @seed
-    return @seed
-  end
-  alias next succ
-
-  def each
-    loop do
-      yield succ
-    end
-  end
-end
-
-class Fixnum
-  alias / quo
-end
-
-class Bignum
-  alias / quo
-end
-
-class Rational
-  Unify = true
-
-  def inspect
-    format "%s/%s", numerator.inspect, denominator.inspect
-  end
-
-  alias power! **
-
-  def ** (other)
-    if other.kind_of?(Rational)
-      other2 = other
-      if self < 0
-	return Complex.new!(self, 0) ** other
-      elsif other == 0
-	return Rational(1,1)
-      elsif self == 0
-	return Rational(0,1)
-      elsif self == 1
-	return Rational(1,1)
-      end
-      
-      npd = numerator.prime_division
-      dpd = denominator.prime_division
-      if other < 0
-	other = -other
-	npd, dpd = dpd, npd
-      end
-      
-      for elm in npd
-	elm[1] = elm[1] * other
-	if !elm[1].kind_of?(Integer) and elm[1].denominator != 1
-         return Float(self) ** other2
-	end
-	elm[1] = elm[1].to_i
-      end
-      
-      for elm in dpd
-	elm[1] = elm[1] * other
-	if !elm[1].kind_of?(Integer) and elm[1].denominator != 1
-         return Float(self) ** other2
-	end
-	elm[1] = elm[1].to_i
-      end
-      
-      num = Integer.from_prime_division(npd)
-      den = Integer.from_prime_division(dpd)
-      
-      Rational(num,den)
-      
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = numerator ** other
-	den = denominator ** other
-      elsif other < 0
-	num = denominator ** -other
-	den = numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x , y = other.coerce(self)
-      x ** y
-    end
-  end
-
-  def power2(other)
-    if other.kind_of?(Rational)
-      if self < 0
-	return Complex(self, 0) ** other
-      elsif other == 0
-	return Rational(1,1)
-      elsif self == 0
-	return Rational(0,1)
-      elsif self == 1
-	return Rational(1,1)
-      end
-      
-      dem = nil
-      x = self.denominator.to_f.to_i
-      neard = self.denominator.to_f ** (1.0/other.denominator.to_f)
-      loop do
-	if (neard**other.denominator == self.denominator)
-	  dem = neaed
-	  break
-	end
-      end
-      nearn = self.numerator.to_f ** (1.0/other.denominator.to_f)
-      Rational(num,den)
-      
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = numerator ** other
-	den = denominator ** other
-      elsif other < 0
-	num = denominator ** -other
-	den = numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x , y = other.coerce(self)
-      x ** y
-    end
-  end
-end
-
-module Math
-  def sqrt(a)
-    if a.kind_of?(Complex)
-      abs = sqrt(a.real*a.real + a.image*a.image)
-#      if not abs.kind_of?(Rational)
-#	return a**Rational(1,2)
-#      end
-      x = sqrt((a.real + abs)/Rational(2))
-      y = sqrt((-a.real + abs)/Rational(2))
-#      if !(x.kind_of?(Rational) and y.kind_of?(Rational))
-#	return a**Rational(1,2)
-#      end
-      if a.image >= 0 
-	Complex(x, y)
-      else
-	Complex(x, -y)
-      end
-    elsif a >= 0
-      rsqrt(a)
-    else
-      Complex(0,rsqrt(-a))
-    end
-  end
-  
-  def rsqrt(a)
-    if a.kind_of?(Float)
-      sqrt!(a)
-    elsif a.kind_of?(Rational)
-      rsqrt(a.numerator)/rsqrt(a.denominator)
-    else
-      src = a
-      max = 2 ** 32
-      byte_a = [src & 0xffffffff]
-      # ruby's bug
-      while (src >= max) and (src >>= 32)
-	byte_a.unshift src & 0xffffffff
-      end
-      
-      answer = 0
-      main = 0
-      side = 0
-      for elm in byte_a
-	main = (main << 32) + elm
-	side <<= 16
-	if answer != 0
-	  if main * 4  < side * side
-	    applo = main.div(side)
-	  else 
-	    applo = ((sqrt!(side * side + 4 * main) - side)/2.0).to_i + 1
-	  end
-	else
-	  applo = sqrt!(main).to_i + 1
-	end
-	
-	while (x = (side + applo) * applo) > main
-	  applo -= 1
-	end
-	main -= x
-	answer = (answer << 16) + applo
-	side += applo * 2
-      end
-      if main == 0
-	answer
-      else
-	sqrt!(a)
-      end
-    end
-  end
-
-  module_function :sqrt
-  module_function :rsqrt
-end
-
-class Complex
-  Unify = true
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/matrix.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/matrix.rb
deleted file mode 100644
index c62acdf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/matrix.rb
+++ /dev/null
@@ -1,1272 +0,0 @@
-#!/usr/local/bin/ruby
-#--
-#   matrix.rb - 
-#       $Release Version: 1.0$
-#       $Revision: 1.11 $
-#       $Date: 1999/10/06 11:01:53 $
-#       Original Version from Smalltalk-80 version
-#          on July 23, 1985 at 8:37:17 am
-#       by Keiju ISHITSUKA
-#++
-#
-# = matrix.rb
-#
-# An implementation of Matrix and Vector classes.
-#
-# Author:: Keiju ISHITSUKA
-# Documentation:: Gavin Sinclair (sourced from <i>Ruby in a Nutshell</i> (Matsumoto, O'Reilly)) 
-#
-# See classes Matrix and Vector for documentation. 
-#
-
-
-require "e2mmap.rb"
-
-module ExceptionForMatrix # :nodoc:
-  extend Exception2MessageMapper
-  def_e2message(TypeError, "wrong argument type %s (expected %s)")
-  def_e2message(ArgumentError, "Wrong # of arguments(%d for %d)")
-  
-  def_exception("ErrDimensionMismatch", "\#{self.name} dimension mismatch")
-  def_exception("ErrNotRegular", "Not Regular Matrix")
-  def_exception("ErrOperationNotDefined", "This operation(%s) can\\'t defined")
-end
-
-#
-# The +Matrix+ class represents a mathematical matrix, and provides methods for creating
-# special-case matrices (zero, identity, diagonal, singular, vector), operating on them
-# arithmetically and algebraically, and determining their mathematical properties (trace, rank,
-# inverse, determinant).
-#
-# Note that although matrices should theoretically be rectangular, this is not
-# enforced by the class.
-#
-# Also note that the determinant of integer matrices may be incorrectly calculated unless you
-# also <tt>require 'mathn'</tt>.  This may be fixed in the future.
-#
-# == Method Catalogue
-#
-# To create a matrix:
-# * <tt> Matrix[*rows]                  </tt>
-# * <tt> Matrix.[](*rows)               </tt>
-# * <tt> Matrix.rows(rows, copy = true) </tt>
-# * <tt> Matrix.columns(columns)        </tt>
-# * <tt> Matrix.diagonal(*values)       </tt>
-# * <tt> Matrix.scalar(n, value)        </tt>
-# * <tt> Matrix.scalar(n, value)        </tt>
-# * <tt> Matrix.identity(n)             </tt>
-# * <tt> Matrix.unit(n)                 </tt>
-# * <tt> Matrix.I(n)                    </tt>
-# * <tt> Matrix.zero(n)                 </tt>
-# * <tt> Matrix.row_vector(row)         </tt>
-# * <tt> Matrix.column_vector(column)   </tt>
-#
-# To access Matrix elements/columns/rows/submatrices/properties: 
-# * <tt>  [](i, j)                      </tt>
-# * <tt> #row_size                      </tt>
-# * <tt> #column_size                   </tt>
-# * <tt> #row(i)                        </tt>
-# * <tt> #column(j)                     </tt>
-# * <tt> #collect                       </tt>
-# * <tt> #map                           </tt>
-# * <tt> #minor(*param)                 </tt>
-#
-# Properties of a matrix:
-# * <tt> #regular?                      </tt>
-# * <tt> #singular?                     </tt>
-# * <tt> #square?                       </tt>
-#
-# Matrix arithmetic:
-# * <tt>  *(m)                          </tt>
-# * <tt>  +(m)                          </tt>
-# * <tt>  -(m)                          </tt>
-# * <tt> #/(m)                          </tt>
-# * <tt> #inverse                       </tt>
-# * <tt> #inv                           </tt>
-# * <tt>  **                            </tt>
-#
-# Matrix functions:
-# * <tt> #determinant                   </tt>
-# * <tt> #det                           </tt>
-# * <tt> #rank                          </tt>
-# * <tt> #trace                         </tt>
-# * <tt> #tr                            </tt>
-# * <tt> #transpose                     </tt>
-# * <tt> #t                             </tt>
-#
-# Conversion to other data types:
-# * <tt> #coerce(other)                 </tt>
-# * <tt> #row_vectors                   </tt>
-# * <tt> #column_vectors                </tt>
-# * <tt> #to_a                          </tt>
-#
-# String representations:
-# * <tt> #to_s                          </tt>
-# * <tt> #inspect                       </tt>
-#
-class Matrix
-  @RCS_ID='-$Id: matrix.rb,v 1.11 1999/10/06 11:01:53 keiju Exp keiju $-'
-  
-#  extend Exception2MessageMapper
-  include ExceptionForMatrix
-  
-  # instance creations
-  private_class_method :new
-  
-  #
-  # Creates a matrix where each argument is a row.
-  #   Matrix[ [25, 93], [-1, 66] ]
-  #      =>  25 93
-  #          -1 66
-  #
-  def Matrix.[](*rows)
-    new(:init_rows, rows, false)
-  end
-  
-  #
-  # Creates a matrix where +rows+ is an array of arrays, each of which is a row
-  # to the matrix.  If the optional argument +copy+ is false, use the given
-  # arrays as the internal structure of the matrix without copying.
-  #   Matrix.rows([[25, 93], [-1, 66]])
-  #      =>  25 93
-  #          -1 66
-  def Matrix.rows(rows, copy = true)
-    new(:init_rows, rows, copy)
-  end
-  
-  #
-  # Creates a matrix using +columns+ as an array of column vectors.
-  #   Matrix.columns([[25, 93], [-1, 66]])
-  #      =>  25 -1
-  #          93 66
-  #
-  #
-  def Matrix.columns(columns)
-    rows = (0 .. columns[0].size - 1).collect {
-      |i|
-      (0 .. columns.size - 1).collect {
-        |j|
-        columns[j][i]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-  
-  #
-  # Creates a matrix where the diagonal elements are composed of +values+.
-  #   Matrix.diagonal(9, 5, -3)
-  #     =>  9  0  0
-  #         0  5  0
-  #         0  0 -3
-  #
-  def Matrix.diagonal(*values)
-    size = values.size
-    rows = (0 .. size  - 1).collect {
-      |j|
-      row = Array.new(size).fill(0, 0, size)
-      row[j] = values[j]
-      row
-    }
-    rows(rows, false)
-  end
-  
-  #
-  # Creates an +n+ by +n+ diagonal matrix where each diagonal element is
-  # +value+.
-  #   Matrix.scalar(2, 5)
-  #     => 5 0
-  #        0 5
-  #
-  def Matrix.scalar(n, value)
-    Matrix.diagonal(*Array.new(n).fill(value, 0, n))
-  end
-
-  #
-  # Creates an +n+ by +n+ identity matrix.
-  #   Matrix.identity(2)
-  #     => 1 0
-  #        0 1
-  #
-  def Matrix.identity(n)
-    Matrix.scalar(n, 1)
-  end
-  class << Matrix 
-    alias unit identity
-    alias I identity
-  end
-  
-  #
-  # Creates an +n+ by +n+ zero matrix.
-  #   Matrix.zero(2)
-  #     => 0 0
-  #        0 0
-  #
-  def Matrix.zero(n)
-    Matrix.scalar(n, 0)
-  end
-  
-  #
-  # Creates a single-row matrix where the values of that row are as given in
-  # +row+.
-  #   Matrix.row_vector([4,5,6])
-  #     => 4 5 6
-  #
-  def Matrix.row_vector(row)
-    case row
-    when Vector
-      Matrix.rows([row.to_a], false)
-    when Array
-      Matrix.rows([row.dup], false)
-    else
-      Matrix.rows([[row]], false)
-    end
-  end
-  
-  #
-  # Creates a single-column matrix where the values of that column are as given
-  # in +column+.
-  #   Matrix.column_vector([4,5,6])
-  #     => 4
-  #        5
-  #        6
-  #
-  def Matrix.column_vector(column)
-    case column
-    when Vector
-      Matrix.columns([column.to_a])
-    when Array
-      Matrix.columns([column])
-    else
-      Matrix.columns([[column]])
-    end
-  end
-
-  #
-  # This method is used by the other methods that create matrices, and is of no
-  # use to general users.
-  #
-  def initialize(init_method, *argv)
-    self.send(init_method, *argv)
-  end
-  
-  def init_rows(rows, copy)
-    if copy
-      @rows = rows.collect{|row| row.dup}
-    else
-      @rows = rows
-    end
-    self
-  end
-  private :init_rows
-  
-  #
-  # Returns element (+i+,+j+) of the matrix.  That is: row +i+, column +j+.
-  #
-  def [](i, j)
-    @rows[i][j]
-  end
-
-  #
-  # Returns the number of rows.
-  #
-  def row_size
-    @rows.size
-  end
-  
-  #
-  # Returns the number of columns.  Note that it is possible to construct a
-  # matrix with uneven columns (e.g. Matrix[ [1,2,3], [4,5] ]), but this is
-  # mathematically unsound.  This method uses the first row to determine the
-  # result.
-  #
-  def column_size
-    @rows[0].size
-  end
-
-  #
-  # Returns row vector number +i+ of the matrix as a Vector (starting at 0 like
-  # an array).  When a block is given, the elements of that vector are iterated.
-  #
-  def row(i) # :yield: e
-    if block_given?
-      for e in @rows[i]
-        yield e
-      end
-    else
-      Vector.elements(@rows[i])
-    end
-  end
-
-  #
-  # Returns column vector number +j+ of the matrix as a Vector (starting at 0
-  # like an array).  When a block is given, the elements of that vector are
-  # iterated.
-  #
-  def column(j) # :yield: e
-    if block_given?
-      0.upto(row_size - 1) do
-        |i|
-        yield @rows[i][j]
-      end
-    else
-      col = (0 .. row_size - 1).collect {
-        |i|
-        @rows[i][j]
-      }
-      Vector.elements(col, false)
-    end
-  end
-  
-  #
-  # Returns a matrix that is the result of iteration of the given block over all
-  # elements of the matrix.
-  #   Matrix[ [1,2], [3,4] ].collect { |i| i**2 }
-  #     => 1  4
-  #        9 16
-  #
-  def collect # :yield: e
-    rows = @rows.collect{|row| row.collect{|e| yield e}}
-    Matrix.rows(rows, false)
-  end
-  alias map collect
-  
-  #
-  # Returns a section of the matrix.  The parameters are either:
-  # *  start_row, nrows, start_col, ncols; OR
-  # *  col_range, row_range
-  #
-  #   Matrix.diagonal(9, 5, -3).minor(0..1, 0..2)
-  #     => 9 0 0
-  #        0 5 0
-  #
-  def minor(*param)
-    case param.size
-    when 2
-      from_row = param[0].first
-      size_row = param[0].end - from_row
-      size_row += 1 unless param[0].exclude_end?
-      from_col = param[1].first
-      size_col = param[1].end - from_col
-      size_col += 1 unless param[1].exclude_end?
-    when 4
-      from_row = param[0]
-      size_row = param[1]
-      from_col = param[2]
-      size_col = param[3]
-    else
-      Matrix.Raise ArgumentError, param.inspect
-    end
-    
-    rows = @rows[from_row, size_row].collect{
-      |row|
-      row[from_col, size_col]
-    }
-    Matrix.rows(rows, false)
-  end
- 
-  #--
-  # TESTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ if this is a regular matrix.
-  #
-  def regular?
-    square? and rank == column_size
-  end
-  
-  #
-  # Returns +true+ is this is a singular (i.e. non-regular) matrix.
-  #
-  def singular?
-    not regular?
-  end
-
-  #
-  # Returns +true+ is this is a square matrix.  See note in column_size about this
-  # being unreliable, though.
-  #
-  def square?
-    column_size == row_size
-  end
-  
-  #--
-  # OBJECT METHODS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ if and only if the two matrices contain equal elements.
-  #
-  def ==(other)
-    return false unless Matrix === other
-    
-    other.compare_by_row_vectors(@rows)
-  end
-  alias eql? ==
-  
-  #
-  # Not really intended for general consumption.
-  #
-  def compare_by_row_vectors(rows)
-    return false unless @rows.size == rows.size
-    
-    0.upto(@rows.size - 1) do
-      |i|
-      return false unless @rows[i] == rows[i]
-    end
-    true
-  end
-  
-  #
-  # Returns a clone of the matrix, so that the contents of each do not reference
-  # identical objects.
-  #
-  def clone
-    Matrix.rows(@rows)
-  end
-  
-  #
-  # Returns a hash-code for the matrix.
-  #
-  def hash
-    value = 0
-    for row in @rows
-      for e in row
-        value ^= e.hash
-      end
-    end
-    return value
-  end
-  
-  #--
-  # ARITHMETIC -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Matrix multiplication.
-  #   Matrix[[2,4], [6,8]] * Matrix.identity(2)
-  #     => 2 4
-  #        6 8
-  #
-  def *(m) # m is matrix or vector or number
-    case(m)
-    when Numeric
-      rows = @rows.collect {
-        |row|
-        row.collect {
-          |e|
-          e * m
-        }
-      }
-      return Matrix.rows(rows, false)
-    when Vector
-      m = Matrix.column_vector(m)
-      r = self * m
-      return r.column(0)
-    when Matrix
-      Matrix.Raise ErrDimensionMismatch if column_size != m.row_size
-    
-      rows = (0 .. row_size - 1).collect {
-        |i|
-        (0 .. m.column_size - 1).collect {
-          |j|
-          vij = 0
-          0.upto(column_size - 1) do
-            |k|
-            vij += self[i, k] * m[k, j]
-          end
-          vij
-        }
-      }
-      return Matrix.rows(rows, false)
-    else
-      x, y = m.coerce(self)
-      return x * y
-    end
-  end
-  
-  #
-  # Matrix addition.
-  #   Matrix.scalar(2,5) + Matrix[[1,0], [-4,7]]
-  #     =>  6  0
-  #        -4 12
-  #
-  def +(m)
-    case m
-    when Numeric
-      Matrix.Raise ErrOperationNotDefined, "+"
-    when Vector
-      m = Matrix.column_vector(m)
-    when Matrix
-    else
-      x, y = m.coerce(self)
-      return x + y
-    end
-    
-    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
-    
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      (0 .. column_size - 1).collect {
-        |j|
-        self[i, j] + m[i, j]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-
-  #
-  # Matrix subtraction.
-  #   Matrix[[1,5], [4,2]] - Matrix[[9,3], [-4,1]]
-  #     => -8  2
-  #         8  1
-  #
-  def -(m)
-    case m
-    when Numeric
-      Matrix.Raise ErrOperationNotDefined, "-"
-    when Vector
-      m = Matrix.column_vector(m)
-    when Matrix
-    else
-      x, y = m.coerce(self)
-      return x - y
-    end
-    
-    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
-    
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      (0 .. column_size - 1).collect {
-        |j|
-        self[i, j] - m[i, j]
-      }
-    }
-    Matrix.rows(rows, false)
-  end
-  
-  #
-  # Matrix division (multiplication by the inverse).
-  #   Matrix[[7,6], [3,9]] / Matrix[[2,9], [3,1]]
-  #     => -7  1
-  #        -3 -6
-  #
-  def /(other)
-    case other
-    when Numeric
-      rows = @rows.collect {
-        |row|
-        row.collect {
-          |e|
-          e / other
-        }
-      }
-      return Matrix.rows(rows, false)
-    when Matrix
-      return self * other.inverse
-    else
-      x, y = other.coerce(self)
-      rerurn x / y
-    end
-  end
-
-  #
-  # Returns the inverse of the matrix.
-  #   Matrix[[1, 2], [2, 1]].inverse
-  #     => -1  1
-  #         0 -1
-  #
-  def inverse
-    Matrix.Raise ErrDimensionMismatch unless square?
-    Matrix.I(row_size).inverse_from(self)
-  end
-  alias inv inverse
-
-  #
-  # Not for public consumption?
-  #
-  def inverse_from(src)
-    size = row_size - 1
-    a = src.to_a
-    
-    for k in 0..size
-      if (akk = a[k][k]) == 0
-        i = k
-        begin
-          Matrix.Raise ErrNotRegular if (i += 1) > size
-        end while a[i][k] == 0
-        a[i], a[k] = a[k], a[i]
-        @rows[i], @rows[k] = @rows[k], @rows[i]
-        akk = a[k][k]
-      end
-      
-      for i in 0 .. size
-        next if i == k
-        q = a[i][k] / akk
-        a[i][k] = 0
-        
-        (k + 1).upto(size) do   
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-        0.upto(size) do
-          |j|
-          @rows[i][j] -= @rows[k][j] * q
-        end
-      end
-      
-      (k + 1).upto(size) do
-        |j|
-        a[k][j] /= akk
-      end
-      0.upto(size) do
-        |j|
-        @rows[k][j] /= akk
-      end
-    end
-    self
-  end
-  #alias reciprocal inverse
-  
-  #
-  # Matrix exponentiation.  Defined for integer powers only.  Equivalent to
-  # multiplying the matrix by itself N times.
-  #   Matrix[[7,6], [3,9]] ** 2
-  #     => 67 96
-  #        48 99
-  #
-  def ** (other)
-    if other.kind_of?(Integer)
-      x = self
-      if other <= 0
-        x = self.inverse
-        return Matrix.identity(self.column_size) if other == 0
-        other = -other
-      end
-      z = x
-      n = other  - 1
-      while n != 0
-        while (div, mod = n.divmod(2)
-               mod == 0)
-          x = x * x
-          n = div
-        end
-        z *= x
-        n -= 1
-      end
-      z
-    elsif other.kind_of?(Float) || defined?(Rational) && other.kind_of?(Rational)
-      Matrix.Raise ErrOperationNotDefined, "**"
-    else
-      Matrix.Raise ErrOperationNotDefined, "**"
-    end
-  end
-  
-  #--
-  # MATRIX FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Returns the determinant of the matrix.  If the matrix is not square, the
-  # result is 0.
-  #   Matrix[[7,6], [3,9]].determinant
-  #     => 63
-  #
-  def determinant
-    return 0 unless square?
-    
-    size = row_size - 1
-    a = to_a
-    
-    det = 1
-    k = 0
-    begin 
-      if (akk = a[k][k]) == 0
-        i = k
-        begin
-          return 0 if (i += 1) > size
-        end while a[i][k] == 0
-        a[i], a[k] = a[k], a[i]
-        akk = a[k][k]
-        det *= -1
-      end
-      (k + 1).upto(size) do
-        |i|
-        q = a[i][k] / akk
-        (k + 1).upto(size) do
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-      end
-      det *= akk
-    end while (k += 1) <= size
-    det
-  end
-  alias det determinant
-        
-  #
-  # Returns the rank of the matrix.  Beware that using Float values, with their
-  # usual lack of precision, can affect the value returned by this method.  Use
-  # Rational values instead if this is important to you.
-  #   Matrix[[7,6], [3,9]].rank
-  #     => 2
-  #
-  def rank
-    if column_size > row_size
-      a = transpose.to_a
-      a_column_size = row_size
-      a_row_size = column_size
-    else
-      a = to_a
-      a_column_size = column_size
-      a_row_size = row_size
-    end
-    rank = 0
-    k = 0
-    begin
-      if (akk = a[k][k]) == 0
-        i = k
-        exists = true
-        begin
-          if (i += 1) > a_column_size - 1
-            exists = false
-            break
-          end
-        end while a[i][k] == 0
-        if exists
-          a[i], a[k] = a[k], a[i]
-          akk = a[k][k]
-        else
-          i = k
-          exists = true
-          begin
-            if (i += 1) > a_row_size - 1
-              exists = false
-              break
-            end
-          end while a[k][i] == 0
-          if exists
-            k.upto(a_column_size - 1) do
-              |j|
-              a[j][k], a[j][i] = a[j][i], a[j][k]
-            end
-            akk = a[k][k]
-          else
-            next
-          end
-        end
-      end
-      (k + 1).upto(a_row_size - 1) do
-        |i|
-        q = a[i][k] / akk
-        (k + 1).upto(a_column_size - 1) do
-          |j|
-          a[i][j] -= a[k][j] * q
-        end
-      end
-      rank += 1
-    end while (k += 1) <= a_column_size - 1
-    return rank
-  end
-
-  #
-  # Returns the trace (sum of diagonal elements) of the matrix.
-  #   Matrix[[7,6], [3,9]].trace
-  #     => 16
-  #
-  def trace
-    tr = 0
-    0.upto(column_size - 1) do
-      |i|
-      tr += @rows[i][i]
-    end
-    tr
-  end
-  alias tr trace
-  
-  #
-  # Returns the transpose of the matrix.
-  #   Matrix[[1,2], [3,4], [5,6]]
-  #     => 1 2
-  #        3 4
-  #        5 6
-  #   Matrix[[1,2], [3,4], [5,6]].transpose
-  #     => 1 3 5
-  #        2 4 6
-  #
-  def transpose
-    Matrix.columns(@rows)
-  end
-  alias t transpose
-  
-  #--
-  # CONVERTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # FIXME: describe #coerce.
-  #
-  def coerce(other)
-    case other
-    when Numeric
-      return Scalar.new(other), self
-    else
-      raise TypeError, "#{self.class} can't be coerced into #{other.class}"
-    end
-  end
-
-  #
-  # Returns an array of the row vectors of the matrix.  See Vector.
-  #
-  def row_vectors
-    rows = (0 .. row_size - 1).collect {
-      |i|
-      row(i)
-    }
-    rows
-  end
-  
-  #
-  # Returns an array of the column vectors of the matrix.  See Vector.
-  #
-  def column_vectors
-    columns = (0 .. column_size - 1).collect {
-      |i|
-      column(i)
-    }
-    columns
-  end
-  
-  #
-  # Returns an array of arrays that describe the rows of the matrix.
-  #
-  def to_a
-    @rows.collect{|row| row.collect{|e| e}}
-  end
-  
-  #--
-  # PRINTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Overrides Object#to_s
-  #
-  def to_s
-    "Matrix[" + @rows.collect{
-      |row|
-      "[" + row.collect{|e| e.to_s}.join(", ") + "]"
-    }.join(", ")+"]"
-  end
-  
-  #
-  # Overrides Object#inspect
-  #
-  def inspect
-    "Matrix"+ at rows.inspect
-  end
-  
-  # Private CLASS
-  
-  class Scalar < Numeric # :nodoc:
-    include ExceptionForMatrix
-    
-    def initialize(value)
-      @value = value
-    end
-    
-    # ARITHMETIC
-    def +(other)
-      case other
-      when Numeric
-        Scalar.new(@value + other)
-      when Vector, Matrix
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar"
-      when Scalar
-        Scalar.new(@value + other.value)
-      else
-        x, y = other.coerce(self)
-        x + y
-      end
-    end
-    
-    def -(other)
-      case other
-      when Numeric
-        Scalar.new(@value - other)
-      when Vector, Matrix
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar"
-      when Scalar
-        Scalar.new(@value - other.value)
-      else
-        x, y = other.coerce(self)
-        x - y
-      end
-    end
-    
-    def *(other)
-      case other
-      when Numeric
-        Scalar.new(@value * other)
-      when Vector, Matrix
-        other.collect{|e| @value * e}
-      else
-        x, y = other.coerce(self)
-        x * y
-      end
-    end
-    
-    def / (other)
-      case other
-      when Numeric
-        Scalar.new(@value / other)
-      when Vector
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix"
-      when Matrix
-        self * _M.inverse
-      else
-        x, y = other.coerce(self)
-        x / y
-      end
-    end
-    
-    def ** (other)
-      case other
-      when Numeric
-        Scalar.new(@value ** other)
-      when Vector
-        Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix"
-      when Matrix
-        other.powered_by(self)
-      else
-        x, y = other.coerce(self)
-        x ** y
-      end
-    end
-  end
-end
-
-
-#
-# The +Vector+ class represents a mathematical vector, which is useful in its own right, and
-# also constitutes a row or column of a Matrix.
-#
-# == Method Catalogue
-#
-# To create a Vector:
-# * <tt>  Vector.[](*array)                   </tt>
-# * <tt>  Vector.elements(array, copy = true) </tt>
-#
-# To access elements:
-# * <tt>  [](i)                               </tt>
-#
-# To enumerate the elements:
-# * <tt> #each2(v)                            </tt>
-# * <tt> #collect2(v)                         </tt>
-#
-# Vector arithmetic:
-# * <tt>  *(x) "is matrix or number"          </tt>
-# * <tt>  +(v)                                </tt>
-# * <tt>  -(v)                                </tt>
-#
-# Vector functions:
-# * <tt> #inner_product(v)                    </tt>
-# * <tt> #collect                             </tt>
-# * <tt> #map                                 </tt>
-# * <tt> #map2(v)                             </tt>
-# * <tt> #r                                   </tt>
-# * <tt> #size                                </tt>
-#
-# Conversion to other data types:
-# * <tt> #covector                            </tt>
-# * <tt> #to_a                                </tt>
-# * <tt> #coerce(other)                       </tt>
-#
-# String representations:
-# * <tt> #to_s                                </tt>
-# * <tt> #inspect                             </tt>
-#
-class Vector
-  include ExceptionForMatrix
-  
-  #INSTANCE CREATION
-  
-  private_class_method :new
-
-  #
-  # Creates a Vector from a list of elements.
-  #   Vector[7, 4, ...]
-  #
-  def Vector.[](*array)
-    new(:init_elements, array, copy = false)
-  end
-  
-  #
-  # Creates a vector from an Array.  The optional second argument specifies
-  # whether the array itself or a copy is used internally.
-  #
-  def Vector.elements(array, copy = true)
-    new(:init_elements, array, copy)
-  end
-  
-  #
-  # For internal use.
-  #
-  def initialize(method, array, copy)
-    self.send(method, array, copy)
-  end
-  
-  #
-  # For internal use.
-  #
-  def init_elements(array, copy)
-    if copy
-      @elements = array.dup
-    else
-      @elements = array
-    end
-  end
-  
-  # ACCESSING
-         
-  #
-  # Returns element number +i+ (starting at zero) of the vector.
-  #
-  def [](i)
-    @elements[i]
-  end
-  
-  #
-  # Returns the number of elements in the vector.
-  #
-  def size
-    @elements.size
-  end
-  
-  #--
-  # ENUMERATIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Iterate over the elements of this vector and +v+ in conjunction.
-  #
-  def each2(v) # :yield: e1, e2
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    0.upto(size - 1) do
-      |i|
-      yield @elements[i], v[i]
-    end
-  end
-  
-  #
-  # Collects (as in Enumerable#collect) over the elements of this vector and +v+
-  # in conjunction.
-  #
-  def collect2(v) # :yield: e1, e2
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    (0 .. size - 1).collect do
-      |i|
-      yield @elements[i], v[i]
-    end
-  end
-
-  #--
-  # COMPARING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-
-  #
-  # Returns +true+ iff the two vectors have the same elements in the same order.
-  #
-  def ==(other)
-    return false unless Vector === other
-    
-    other.compare_by(@elements)
-  end
-  alias eqn? ==
-  
-  #
-  # For internal use.
-  #
-  def compare_by(elements)
-    @elements == elements
-  end
-  
-  #
-  # Return a copy of the vector.
-  #
-  def clone
-    Vector.elements(@elements)
-  end
-  
-  #
-  # Return a hash-code for the vector.
-  #
-  def hash
-    @elements.hash
-  end
-  
-  #--
-  # ARITHMETIC -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Multiplies the vector by +x+, where +x+ is a number or another vector.
-  #
-  def *(x)
-    case x
-    when Numeric
-      els = @elements.collect{|e| e * x}
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) * x
-    else
-      s, x = x.coerce(self)
-      s * x
-    end
-  end
-
-  #
-  # Vector addition.
-  #
-  def +(v)
-    case v
-    when Vector
-      Vector.Raise ErrDimensionMismatch if size != v.size
-      els = collect2(v) {
-        |v1, v2|
-        v1 + v2
-      }
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) + v
-    else
-      s, x = v.coerce(self)
-      s + x
-    end
-  end
-
-  #
-  # Vector subtraction.
-  #
-  def -(v)
-    case v
-    when Vector
-      Vector.Raise ErrDimensionMismatch if size != v.size
-      els = collect2(v) {
-        |v1, v2|
-        v1 - v2
-      }
-      Vector.elements(els, false)
-    when Matrix
-      Matrix.column_vector(self) - v
-    else
-      s, x = v.coerce(self)
-      s - x
-    end
-  end
-  
-  #--
-  # VECTOR FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Returns the inner product of this vector with the other.
-  #   Vector[4,7].inner_product Vector[10,1]  => 47
-  #
-  def inner_product(v)
-    Vector.Raise ErrDimensionMismatch if size != v.size
-    
-    p = 0
-    each2(v) {
-      |v1, v2|
-      p += v1 * v2
-    }
-    p
-  end
-  
-  #
-  # Like Array#collect.
-  #
-  def collect # :yield: e
-    els = @elements.collect {
-      |v|
-      yield v
-    }
-    Vector.elements(els, false)
-  end
-  alias map collect
-  
-  #
-  # Like Vector#collect2, but returns a Vector instead of an Array.
-  #
-  def map2(v) # :yield: e1, e2
-    els = collect2(v) {
-      |v1, v2|
-      yield v1, v2
-    }
-    Vector.elements(els, false)
-  end
-  
-  #
-  # Returns the modulus (Pythagorean distance) of the vector.
-  #   Vector[5,8,2].r => 9.643650761
-  #
-  def r
-    v = 0
-    for e in @elements
-      v += e*e
-    end
-    return Math.sqrt(v)
-  end
-  
-  #--
-  # CONVERTING
-  #++
-
-  #
-  # Creates a single-row matrix from this vector.
-  #
-  def covector
-    Matrix.row_vector(self)
-  end
-  
-  #
-  # Returns the elements of the vector in an array.
-  #
-  def to_a
-    @elements.dup
-  end
-  
-  #
-  # FIXME: describe Vector#coerce.
-  #
-  def coerce(other)
-    case other
-    when Numeric
-      return Scalar.new(other), self
-    else
-      raise TypeError, "#{self.class} can't be coerced into #{other.class}"
-    end
-  end
-  
-  #--
-  # PRINTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-  #++
-  
-  #
-  # Overrides Object#to_s
-  #
-  def to_s
-    "Vector[" + @elements.join(", ") + "]"
-  end
-  
-  #
-  # Overrides Object#inspect
-  #
-  def inspect
-    str = "Vector"+ at elements.inspect
-  end
-end
-
-
-# Documentation comments:
-#  - Matrix#coerce and Vector#coerce need to be documented
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/md5.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/md5.rb
deleted file mode 100644
index e3fc278..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/md5.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# just for compatibility; requiring "md5" is obsoleted
-#
-# $RoughId: md5.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
-# $Id: md5.rb 12008 2007-03-06 10:12:12Z knu $
-
-require 'digest/md5'
-
-class MD5 < Digest::MD5
-  class << self
-    alias orig_new new
-    def new(str = nil)
-      if str
-        orig_new.update(str)
-      else
-        orig_new
-      end
-    end
-
-    def md5(*args)
-      new(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mkmf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mkmf.rb
deleted file mode 100644
index 31f4878..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mkmf.rb
+++ /dev/null
@@ -1,1554 +0,0 @@
-# module to create Makefile for extension modules
-# invoke like: ruby -r mkmf extconf.rb
-
-require 'rbconfig'
-require 'fileutils'
-require 'shellwords'
-
-CONFIG = Config::MAKEFILE_CONFIG
-ORIG_LIBPATH = ENV['LIB']
-
-CXX_EXT = %w[cc cxx cpp]
-if /mswin|bccwin|mingw|msdosdjgpp|human|os2/ !~ CONFIG['build_os']
-  CXX_EXT.concat(%w[C])
-end
-SRC_EXT = %w[c m] << CXX_EXT
-$static = $config_h = nil
-$default_static = $static
-
-unless defined? $configure_args
-  $configure_args = {}
-  args = CONFIG["configure_args"]
-  if ENV["CONFIGURE_ARGS"]
-    args << " " << ENV["CONFIGURE_ARGS"]
-  end
-  for arg in Shellwords::shellwords(args)
-    arg, val = arg.split('=', 2)
-    next unless arg
-    arg.tr!('_', '-')
-    if arg.sub!(/^(?!--)/, '--')
-      val or next
-      arg.downcase!
-    end
-    next if /^--(?:top|topsrc|src|cur)dir$/ =~ arg
-    $configure_args[arg] = val || true
-  end
-  for arg in ARGV
-    arg, val = arg.split('=', 2)
-    next unless arg
-    arg.tr!('_', '-')
-    if arg.sub!(/^(?!--)/, '--')
-      val or next
-      arg.downcase!
-    end
-    $configure_args[arg] = val || true
-  end
-end
-
-$libdir = CONFIG["libdir"]
-$rubylibdir = CONFIG["rubylibdir"]
-$archdir = CONFIG["archdir"]
-$sitedir = CONFIG["sitedir"]
-$sitelibdir = CONFIG["sitelibdir"]
-$sitearchdir = CONFIG["sitearchdir"]
-
-$mswin = /mswin/ =~ RUBY_PLATFORM
-$bccwin = /bccwin/ =~ RUBY_PLATFORM
-$mingw = /mingw/ =~ RUBY_PLATFORM
-$cygwin = /cygwin/ =~ RUBY_PLATFORM
-$human = /human/ =~ RUBY_PLATFORM
-$netbsd = /netbsd/ =~ RUBY_PLATFORM
-$os2 = /os2/ =~ RUBY_PLATFORM
-$beos = /beos/ =~ RUBY_PLATFORM
-$solaris = /solaris/ =~ RUBY_PLATFORM
-$dest_prefix_pattern = (File::PATH_SEPARATOR == ';' ? /\A([[:alpha:]]:)?/ : /\A/)
-
-def config_string(key, config = CONFIG)
-  s = config[key] and !s.empty? and block_given? ? yield(s) : s
-end
-
-def dir_re(dir)
-  Regexp.new('\$(?:\('+dir+'\)|\{'+dir+'\})(?:\$(?:\(target_prefix\)|\{target_prefix\}))?')
-end
-
-INSTALL_DIRS = [
-  [dir_re('commondir'), "$(RUBYCOMMONDIR)"],
-  [dir_re("sitedir"), "$(RUBYCOMMONDIR)"],
-  [dir_re('rubylibdir'), "$(RUBYLIBDIR)"],
-  [dir_re('archdir'), "$(RUBYARCHDIR)"],
-  [dir_re('sitelibdir'), "$(RUBYLIBDIR)"],
-  [dir_re('sitearchdir'), "$(RUBYARCHDIR)"]
-]
-
-def install_dirs(target_prefix = nil)
-  if $extout
-    dirs = [
-      ['RUBYCOMMONDIR', '$(extout)/common'],
-      ['RUBYLIBDIR',    '$(RUBYCOMMONDIR)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(extout)/$(arch)$(target_prefix)'],
-      ['extout',        "#$extout"],
-      ['extout_prefix', "#$extout_prefix"],
-    ]
-  elsif $extmk
-    dirs = [
-      ['RUBYCOMMONDIR', '$(rubylibdir)'],
-      ['RUBYLIBDIR',    '$(rubylibdir)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(archdir)$(target_prefix)'],
-    ]
-  else
-    dirs = [
-      ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'],
-      ['RUBYLIBDIR',    '$(sitelibdir)$(target_prefix)'],
-      ['RUBYARCHDIR',   '$(sitearchdir)$(target_prefix)'],
-    ]
-  end
-  dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")]
-  dirs
-end
-
-def map_dir(dir, map = nil)
-  map ||= INSTALL_DIRS
-  map.inject(dir) {|dir, (orig, new)| dir.gsub(orig, new)}
-end
-
-topdir = File.dirname(libdir = File.dirname(__FILE__))
-extdir = File.expand_path("ext", topdir)
-$extmk = File.expand_path($0)[0, extdir.size+1] == extdir+"/"
-if not $extmk and File.exist?(Config::CONFIG["archdir"] + "/ruby.h")
-  $hdrdir = $topdir = Config::CONFIG["archdir"]
-elsif File.exist?(($top_srcdir ||= topdir)  + "/ruby.h") and
-    File.exist?(($topdir ||= Config::CONFIG["topdir"]) + "/config.h")
-  $hdrdir = $top_srcdir
-else
-  abort "can't find header files for ruby."
-end
-
-OUTFLAG = CONFIG['OUTFLAG']
-CPPOUTFILE = CONFIG['CPPOUTFILE']
-
-CONFTEST_C = "conftest.c"
-
-class String
-  def quote
-    /\s/ =~ self ? "\"#{self}\"" : self
-  end
-end
-class Array
-  def quote
-    map {|s| s.quote}
-  end
-end
-
-def rm_f(*files)
-  FileUtils.rm_f(Dir[files.join("\0")])
-end
-
-def modified?(target, times)
-  (t = File.mtime(target)) rescue return nil
-  Array === times or times = [times]
-  t if times.all? {|n| n <= t}
-end
-
-def merge_libs(*libs)
-  libs.inject([]) do |x, y|
-    xy = x & y
-    xn = yn = 0
-    y = y.inject([]) {|ary, e| ary.last == e ? ary : ary << e}
-    y.each_with_index do |v, yi|
-      if xy.include?(v)
-        xi = [x.index(v), xn].max()
-        x[xi, 1] = y[yn..yi]
-        xn, yn = xi + (yi - yn + 1), yi + 1
-      end
-    end
-    x.concat(y[yn..-1] || [])
-  end
-end
-
-module Logging
-  @log = nil
-  @logfile = 'mkmf.log'
-  @orgerr = $stderr.dup
-  @orgout = $stdout.dup
-  @postpone = 0
-
-  def self::open
-    @log ||= File::open(@logfile, 'w')
-    @log.sync = true
-    $stderr.reopen(@log)
-    $stdout.reopen(@log)
-    yield
-  ensure
-    $stderr.reopen(@orgerr)
-    $stdout.reopen(@orgout)
-  end
-
-  def self::message(*s)
-    @log ||= File::open(@logfile, 'w')
-    @log.sync = true
-    @log.printf(*s)
-  end
-
-  def self::logfile file
-    @logfile = file
-    if @log and not @log.closed?
-      @log.flush
-      @log.close
-      @log = nil
-    end
-  end
-  
-  def self::postpone
-    tmplog = "mkmftmp#{@postpone += 1}.log"
-    open do
-      log, *save = @log, @logfile, @orgout, @orgerr
-      @log, @logfile, @orgout, @orgerr = nil, tmplog, log, log
-      begin
-        log.print(open {yield})
-        @log.close
-        File::open(tmplog) {|t| FileUtils.copy_stream(t, log)}
-      ensure
-        @log, @logfile, @orgout, @orgerr = log, *save
-        @postpone -= 1
-        rm_f tmplog
-      end
-    end
-  end
-end
-
-def xsystem command
-  Logging::open do
-    puts command.quote
-    system(command)
-  end
-end
-
-def xpopen command, *mode, &block
-  Logging::open do
-    case mode[0]
-    when nil, /^r/
-      puts "#{command} |"
-    else
-      puts "| #{command}"
-    end
-    IO.popen(command, *mode, &block)
-  end
-end
-
-def log_src(src)
-  src = src.split(/^/)
-  fmt = "%#{src.size.to_s.size}d: %s"
-  Logging::message <<"EOM"
-checked program was:
-/* begin */
-EOM
-  src.each_with_index {|line, no| Logging::message fmt, no+1, line}
-  Logging::message <<"EOM"
-/* end */
-
-EOM
-end
-
-def create_tmpsrc(src)
-  src = yield(src) if block_given?
-  src = src.gsub(/[ \t]+$/, '').gsub(/\A\n+|^\n+$/, '').sub(/[^\n]\z/, "\\&\n")
-  open(CONFTEST_C, "wb") do |cfile|
-    cfile.print src
-  end
-  src
-end
-
-def try_do(src, command, &b)
-  src = create_tmpsrc(src, &b)
-  xsystem(command)
-ensure
-  log_src(src)
-end
-
-def link_command(ldflags, opt="", libpath=$DEFLIBPATH|$LIBPATH)
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote,
-                              'src' => CONFTEST_C,
-                              'INCFLAGS' => $INCFLAGS,
-                              'CPPFLAGS' => $CPPFLAGS,
-                              'CFLAGS' => "#$CFLAGS",
-                              'ARCH_FLAG' => "#$ARCH_FLAG",
-                              'LDFLAGS' => "#$LDFLAGS #{ldflags}",
-                              'LIBPATH' => libpathflag(libpath),
-                              'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
-                              'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
-  Config::expand(TRY_LINK.dup, conf)
-end
-
-def cc_command(opt="")
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)
-  Config::expand("$(CC) #$INCFLAGS #$CPPFLAGS #$CFLAGS #$ARCH_FLAG #{opt} -c #{CONFTEST_C}",
-		 conf)
-end
-
-def cpp_command(outfile, opt="")
-  conf = Config::CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)
-  Config::expand("$(CPP) #$INCFLAGS #$CPPFLAGS #$CFLAGS #{opt} #{CONFTEST_C} #{outfile}",
-		 conf)
-end
-
-def libpathflag(libpath=$DEFLIBPATH|$LIBPATH)
-  libpath.map{|x|
-    case x
-    when "$(topdir)", /\A\./
-      LIBPATHFLAG
-    else
-      LIBPATHFLAG+RPATHFLAG
-    end % x.quote
-  }.join
-end
-
-def try_link0(src, opt="", &b)
-  try_do(src, link_command("", opt), &b)
-end
-
-def try_link(src, opt="", &b)
-  try_link0(src, opt, &b)
-ensure
-  rm_f "conftest*", "c0x32*"
-end
-
-def try_compile(src, opt="", &b)
-  try_do(src, cc_command(opt), &b)
-ensure
-  rm_f "conftest*"
-end
-
-def try_cpp(src, opt="", &b)
-  try_do(src, cpp_command(CPPOUTFILE, opt), &b)
-ensure
-  rm_f "conftest*"
-end
-
-def cpp_include(header)
-  if header
-    header = [header] unless header.kind_of? Array
-    header.map {|h| "#include <#{h}>\n"}.join
-  else
-    ""
-  end
-end
-
-def with_cppflags(flags)
-  cppflags = $CPPFLAGS
-  $CPPFLAGS = flags
-  ret = yield
-ensure
-  $CPPFLAGS = cppflags unless ret
-end
-
-def with_cflags(flags)
-  cflags = $CFLAGS
-  $CFLAGS = flags
-  ret = yield
-ensure
-  $CFLAGS = cflags unless ret
-end
-
-def with_ldflags(flags)
-  ldflags = $LDFLAGS
-  $LDFLAGS = flags
-  ret = yield
-ensure
-  $LDFLAGS = ldflags unless ret
-end
-
-def try_static_assert(expr, headers = nil, opt = "", &b)
-  headers = cpp_include(headers)
-  try_compile(<<SRC, opt, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int conftest_const[(#{expr}) ? 1 : -1];
-SRC
-end
-
-def try_constant(const, headers = nil, opt = "", &b)
-  includes = cpp_include(headers)
-  if CROSS_COMPILING
-    if try_static_assert("#{const} > 0", headers, opt)
-      # positive constant
-    elsif try_static_assert("#{const} < 0", headers, opt)
-      neg = true
-      const = "-(#{const})"
-    elsif try_static_assert("#{const} == 0", headers, opt)
-      return 0
-    else
-      # not a constant
-      return nil
-    end
-    upper = 1
-    lower = 0
-    until try_static_assert("#{const} <= #{upper}", headers, opt)
-      lower = upper
-      upper <<= 1
-    end
-    return nil unless lower
-    while upper > lower + 1
-      mid = (upper + lower) / 2
-      if try_static_assert("#{const} > #{mid}", headers, opt)
-        lower = mid
-      else
-        upper = mid
-      end
-    end
-    upper = -upper if neg
-    return upper
-  else
-    src = %{#{COMMON_HEADERS}
-#{includes}
-#include <stdio.h>
-/*top*/
-int conftest_const = (int)(#{const});
-int main() {printf("%d\\n", conftest_const); return 0;}
-}
-    if try_link0(src, opt, &b)
-      xpopen("./conftest") do |f|
-        return Integer(f.gets)
-      end
-    end
-  end
-  nil
-end
-
-def try_func(func, libs, headers = nil, &b)
-  headers = cpp_include(headers)
-  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { void ((*volatile p)()); p = (void ((*)()))#{func}; return 0; }
-SRC
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { #{func}(); return 0; }
-SRC
-end
-
-def try_var(var, headers = nil, &b)
-  headers = cpp_include(headers)
-  try_compile(<<"SRC", &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-int main() { return 0; }
-int t() { const volatile void *volatile p; p = &(&#{var})[0]; return 0; }
-SRC
-end
-
-def egrep_cpp(pat, src, opt = "", &b)
-  src = create_tmpsrc(src, &b)
-  xpopen(cpp_command('', opt)) do |f|
-    if Regexp === pat
-      puts("    ruby -ne 'print if #{pat.inspect}'")
-      f.grep(pat) {|l|
-	puts "#{f.lineno}: #{l}"
-	return true
-      }
-      false
-    else
-      puts("    egrep '#{pat}'")
-      begin
-	stdin = $stdin.dup
-	$stdin.reopen(f)
-	system("egrep", pat)
-      ensure
-	$stdin.reopen(stdin)
-      end
-    end
-  end
-ensure
-  rm_f "conftest*"
-  log_src(src)
-end
-
-def macro_defined?(macro, src, opt = "", &b)
-  src = src.sub(/[^\n]\z/, "\\&\n")
-  try_compile(src + <<"SRC", opt, &b)
-/*top*/
-#ifndef #{macro}
-# error
->>>>>> #{macro} undefined <<<<<<
-#endif
-SRC
-end
-
-def try_run(src, opt = "", &b)
-  if try_link0(src, opt, &b)
-    xsystem("./conftest")
-  else
-    nil
-  end
-ensure
-  rm_f "conftest*"
-end
-
-def install_files(mfile, ifiles, map = nil, srcprefix = nil)
-  ifiles or return
-  srcprefix ||= '$(srcdir)'
-  Config::expand(srcdir = srcprefix.dup)
-  dirs = []
-  path = Hash.new {|h, i| h[i] = dirs.push([i])[-1]}
-  ifiles.each do |files, dir, prefix|
-    dir = map_dir(dir, map)
-    prefix = %r|\A#{Regexp.quote(prefix)}/?| if prefix
-    if /\A\.\// =~ files
-      # install files which are in current working directory.
-      files = files[2..-1]
-      len = nil
-    else
-      # install files which are under the $(srcdir).
-      files = File.join(srcdir, files)
-      len = srcdir.size
-    end
-    f = nil
-    Dir.glob(files) do |f|
-      f[0..len] = "" if len
-      d = File.dirname(f)
-      d.sub!(prefix, "") if prefix
-      d = (d.empty? || d == ".") ? dir : File.join(dir, d)
-      f = File.join(srcprefix, f) if len
-      path[d] << f
-    end
-    unless len or f
-      d = File.dirname(files)
-      d.sub!(prefix, "") if prefix
-      d = (d.empty? || d == ".") ? dir : File.join(dir, d)
-      path[d] << files
-    end
-  end
-  dirs
-end
-
-def install_rb(mfile, dest, srcdir = nil)
-  install_files(mfile, [["lib/**/*.rb", dest, "lib"]], nil, srcdir)
-end
-
-def append_library(libs, lib)
-  format(LIBARG, lib) + " " + libs
-end
-
-def message(*s)
-  unless $extmk and not $VERBOSE
-    printf(*s)
-    $stdout.flush
-  end
-end
-
-def checking_for(m, fmt = nil)
-  f = caller[0][/in `(.*)'$/, 1] and f << ": " #` for vim
-  m = "checking #{/\Acheck/ =~ f ? '' : 'for '}#{m}... "
-  message "%s", m
-  a = r = nil
-  Logging::postpone do
-    r = yield
-    a = (fmt ? fmt % r : r ? "yes" : "no") << "\n"
-    "#{f}#{m}-------------------- #{a}\n"
-  end
-  message(a)
-  Logging::message "--------------------\n\n"
-  r
-end
-
-def checking_message(target, place = nil, opt = nil)
-  [["in", place], ["with", opt]].inject("#{target}") do |msg, (pre, noun)|
-    if noun
-      [[:to_str], [:join, ","], [:to_s]].each do |meth, *args|
-        if noun.respond_to?(meth)
-          break noun = noun.send(meth, *args)
-        end
-      end
-      msg << " #{pre} #{noun}" unless noun.empty?
-    end
-    msg
-  end
-end
-
-# Returns whether or not +macro+ is defined either in the common header
-# files or within any +headers+ you provide.
-#
-# Any options you pass to +opt+ are passed along to the compiler.
-#
-def have_macro(macro, headers = nil, opt = "", &b)
-  checking_for checking_message(macro, headers, opt) do
-    macro_defined?(macro, cpp_include(headers), opt, &b)
-  end
-end
-
-# Returns whether or not the given entry point +func+ can be found within
-# +lib+.  If +func+ is nil, the 'main()' entry point is used by default.
-# If found, it adds the library to list of libraries to be used when linking
-# your extension.
-#
-# If +headers+ are provided, it will include those header files as the
-# header files it looks in when searching for +func+.
-#
-# Real name of the library to be linked can be altered by
-# '--with-FOOlib' configuration option.
-#
-def have_library(lib, func = nil, headers = nil, &b)
-  func = "main" if !func or func.empty?
-  lib = with_config(lib+'lib', lib)
-  checking_for checking_message("#{func}()", LIBARG%lib) do
-    if COMMON_LIBS.include?(lib)
-      true
-    else
-      libs = append_library($libs, lib)
-      if try_func(func, libs, headers, &b)
-        $libs = libs
-        true
-      else
-        false
-      end
-    end
-  end
-end
-
-# Returns whether or not the entry point +func+ can be found within the library
-# +lib+ in one of the +paths+ specified, where +paths+ is an array of strings.
-# If +func+ is nil , then the main() function is used as the entry point.
-#
-# If +lib+ is found, then the path it was found on is added to the list of
-# library paths searched and linked against.
-#
-def find_library(lib, func, *paths, &b)
-  func = "main" if !func or func.empty?
-  lib = with_config(lib+'lib', lib)
-  paths = paths.collect {|path| path.split(File::PATH_SEPARATOR)}.flatten
-  checking_for "#{func}() in #{LIBARG%lib}" do
-    libpath = $LIBPATH
-    libs = append_library($libs, lib)
-    begin
-      until r = try_func(func, libs, &b) or paths.empty?
-	$LIBPATH = libpath | [paths.shift]
-      end
-      if r
-	$libs = libs
-	libpath = nil
-      end
-    ensure
-      $LIBPATH = libpath if libpath
-    end
-    r
-  end
-end
-
-# Returns whether or not the function +func+ can be found in the common
-# header files, or within any +headers+ that you provide.  If found, a
-# macro is passed as a preprocessor constant to the compiler using the
-# function name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_func('foo') returned true, then the HAVE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_func(func, headers = nil, &b)
-  checking_for checking_message("#{func}()", headers) do
-    if try_func(func, $libs, headers, &b)
-      $defs.push(format("-DHAVE_%s", func.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the variable +var+ can be found in the common
-# header files, or within any +headers+ that you provide.  If found, a
-# macro is passed as a preprocessor constant to the compiler using the
-# variable name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_var('foo') returned true, then the HAVE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_var(var, headers = nil, &b)
-  checking_for checking_message(var, headers) do
-    if try_var(var, headers, &b)
-      $defs.push(format("-DHAVE_%s", var.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the given +header+ file can be found on your system.
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the header file name, in uppercase, prepended with 'HAVE_'.
-#
-# For example, if have_header('foo.h') returned true, then the HAVE_FOO_H
-# preprocessor macro would be passed to the compiler.
-#
-def have_header(header, &b)
-  checking_for header do
-    if try_cpp(cpp_include(header), &b)
-      $defs.push(format("-DHAVE_%s", header.tr("a-z./\055", "A-Z___")))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Instructs mkmf to search for the given +header+ in any of the +paths+
-# provided, and returns whether or not it was found in those paths.
-#
-# If the header is found then the path it was found on is added to the list
-# of included directories that are sent to the compiler (via the -I switch).
-#
-def find_header(header, *paths)
-  header = cpp_include(header)
-  checking_for header do
-    if try_cpp(header)
-      true
-    else
-      found = false
-      paths.each do |dir|
-        opt = "-I#{dir}".quote
-        if try_cpp(header, opt)
-          $INCFLAGS << " " << opt
-          found = true
-          break
-        end
-      end
-      found
-    end
-  end
-end
-
-# Returns whether or not the struct of type +type+ contains +member+.  If
-# it does not, or the struct type can't be found, then false is returned.  You
-# may optionally specify additional +headers+ in which to look for the struct
-# (in addition to the common header files).
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the member name, in uppercase, prepended with 'HAVE_ST_'.
-#
-# For example, if have_struct_member('foo', 'bar') returned true, then the
-# HAVE_ST_BAR preprocessor macro would be passed to the compiler.
-# 
-def have_struct_member(type, member, headers = nil, &b)
-  checking_for checking_message("#{type}.#{member}", headers) do
-    if try_compile(<<"SRC", &b)
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-int main() { return 0; }
-int s = (char *)&((#{type}*)0)->#{member} - (char *)0;
-SRC
-      $defs.push(format("-DHAVE_ST_%s", member.upcase))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns whether or not the static type +type+ is defined.  You may
-# optionally pass additional +headers+ to check against in addition to the
-# common header files.
-#
-# You may also pass additional flags to +opt+ which are then passed along to
-# the compiler.
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the type name, in uppercase, prepended with 'HAVE_TYPE_'.
-#
-# For example, if have_type('foo') returned true, then the HAVE_TYPE_FOO
-# preprocessor macro would be passed to the compiler.
-#
-def have_type(type, headers = nil, opt = "", &b)
-  checking_for checking_message(type, headers, opt) do
-    headers = cpp_include(headers)
-    if try_compile(<<"SRC", opt, &b)
-#{COMMON_HEADERS}
-#{headers}
-/*top*/
-typedef #{type} conftest_type;
-static conftest_type conftestval[sizeof(conftest_type)?1:-1];
-SRC
-      $defs.push(format("-DHAVE_TYPE_%s", type.strip.upcase.tr_s("^A-Z0-9_", "_")))
-      true
-    else
-      false
-    end
-  end
-end
-
-# Returns the size of the given +type+.  You may optionally specify additional
-# +headers+ to search in for the +type+.
-#
-# If found, a macro is passed as a preprocessor constant to the compiler using
-# the type name, in uppercase, prepended with 'SIZEOF_', followed by the type
-# name, followed by '=X' where 'X' is the actual size.
-#
-# For example, if check_sizeof('mystruct') returned 12, then the
-# SIZEOF_MYSTRUCT=12 preprocessor macro would be passed to the compiler.
-#
-def check_sizeof(type, headers = nil, &b)
-  expr = "sizeof(#{type})"
-  fmt = "%d"
-  def fmt.%(x)
-    x ? super : "failed"
-  end
-  checking_for checking_message("size of #{type}", headers), fmt do
-    if size = try_constant(expr, headers, &b)
-      $defs.push(format("-DSIZEOF_%s=%d", type.upcase.tr_s("^A-Z0-9_", "_"), size))
-      size
-    end
-  end
-end
-
-def scalar_ptr_type?(type, member = nil, headers = nil, &b)
-  try_compile(<<"SRC", &b)   # pointer
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-volatile #{type} conftestval;
-int main() { return 0; }
-int t() {return (int)(1-*(conftestval#{member ? ".#{member}" : ""}));}
-SRC
-end
-
-def scalar_type?(type, member = nil, headers = nil, &b)
-  try_compile(<<"SRC", &b)   # pointer
-#{COMMON_HEADERS}
-#{cpp_include(headers)}
-/*top*/
-volatile #{type} conftestval;
-int main() { return 0; }
-int t() {return (int)(1-(conftestval#{member ? ".#{member}" : ""}));}
-SRC
-end
-
-def what_type?(type, member = nil, headers = nil, &b)
-  m = "#{type}"
-  name = type
-  if member
-    m << "." << member
-    name = "(((#{type} *)0)->#{member})"
-  end
-  fmt = "seems %s"
-  def fmt.%(x)
-    x ? super : "unknown"
-  end
-  checking_for checking_message(m, headers), fmt do
-    if scalar_ptr_type?(type, member, headers, &b)
-      if try_static_assert("sizeof(*#{name}) == 1", headers)
-        "string"
-      end
-    elsif scalar_type?(type, member, headers, &b)
-      if try_static_assert("sizeof(#{name}) > sizeof(long)", headers)
-        "long long"
-      elsif try_static_assert("sizeof(#{name}) > sizeof(int)", headers)
-        "long"
-      elsif try_static_assert("sizeof(#{name}) > sizeof(short)", headers)
-        "int"
-      elsif try_static_assert("sizeof(#{name}) > 1", headers)
-        "short"
-      else
-        "char"
-      end
-    end
-  end
-end
-
-def find_executable0(bin, path = nil)
-  ext = config_string('EXEEXT')
-  if File.expand_path(bin) == bin
-    return bin if File.executable?(bin)
-    ext and File.executable?(file = bin + ext) and return file
-    return nil
-  end
-  if path ||= ENV['PATH']
-    path = path.split(File::PATH_SEPARATOR)
-  else
-    path = %w[/usr/local/bin /usr/ucb /usr/bin /bin]
-  end
-  file = nil
-  path.each do |dir|
-    return file if File.executable?(file = File.join(dir, bin))
-    return file if ext and File.executable?(file << ext)
-  end
-  nil
-end
-
-def find_executable(bin, path = nil)
-  checking_for checking_message(bin, path) do
-    find_executable0(bin, path)
-  end
-end
-
-def arg_config(config, *defaults, &block)
-  $arg_config << [config, *defaults]
-  defaults << nil if !block and defaults.empty?
-  $configure_args.fetch(config.tr('_', '-'), *defaults, &block)
-end
-
-def with_config(config, *defaults)
-  config = config.sub(/^--with[-_]/, '')
-  val = arg_config("--with-"+config) do
-    if arg_config("--without-"+config)
-      false
-    elsif block_given?
-      yield(config, *defaults)
-    else
-      break *defaults
-    end
-  end
-  case val
-  when "yes"
-    true
-  when "no"
-    false
-  else
-    val
-  end
-end
-
-def enable_config(config, *defaults)
-  if arg_config("--enable-"+config)
-    true
-  elsif arg_config("--disable-"+config)
-    false
-  elsif block_given?
-    yield(config, *defaults)
-  else
-    return *defaults
-  end
-end
-
-def create_header(header = "extconf.h")
-  message "creating %s\n", header
-  sym = header.tr("a-z./\055", "A-Z___")
-  hdr = ["#ifndef #{sym}\n#define #{sym}\n"]
-  for line in $defs
-    case line
-    when /^-D([^=]+)(?:=(.*))?/
-      hdr << "#define #$1 #{$2 ? Shellwords.shellwords($2)[0] : 1}\n"
-    when /^-U(.*)/
-      hdr << "#undef #$1\n"
-    end
-  end
-  hdr << "#endif\n"
-  hdr = hdr.join
-  unless (IO.read(header) == hdr rescue false)
-    open(header, "w") do |hfile|
-      hfile.write(hdr)
-    end
-  end
-  $extconf_h = header
-end
-
-# Sets a +target+ name that the user can then use to configure various 'with'
-# options with on the command line by using that name.  For example, if the
-# target is set to "foo", then the user could use the --with-foo-dir command
-# line option.
-#
-# You may pass along additional 'include' or 'lib' defaults via the +idefault+
-# and +ldefault+ parameters, respectively.
-#
-# Note that dir_config only adds to the list of places to search for libraries
-# and include files.  It does not link the libraries into your application.
-#
-def dir_config(target, idefault=nil, ldefault=nil)
-  if dir = with_config(target + "-dir", (idefault unless ldefault))
-    defaults = Array === dir ? dir : dir.split(File::PATH_SEPARATOR)
-    idefault = ldefault = nil
-  end
-
-  idir = with_config(target + "-include", idefault)
-  $arg_config.last[1] ||= "${#{target}-dir}/include"
-  ldir = with_config(target + "-lib", ldefault)
-  $arg_config.last[1] ||= "${#{target}-dir}/lib"
-
-  idirs = idir ? Array === idir ? idir : idir.split(File::PATH_SEPARATOR) : []
-  if defaults
-    idirs.concat(defaults.collect {|dir| dir + "/include"})
-    idir = ([idir] + idirs).compact.join(File::PATH_SEPARATOR)
-  end
-  unless idirs.empty?
-    idirs.collect! {|dir| "-I" + dir}
-    idirs -= Shellwords.shellwords($CPPFLAGS)
-    unless idirs.empty?
-      $CPPFLAGS = (idirs.quote << $CPPFLAGS).join(" ")
-    end
-  end
-
-  ldirs = ldir ? Array === ldir ? ldir : ldir.split(File::PATH_SEPARATOR) : []
-  if defaults
-    ldirs.concat(defaults.collect {|dir| dir + "/lib"})
-    ldir = ([ldir] + ldirs).compact.join(File::PATH_SEPARATOR)
-  end
-  $LIBPATH = ldirs | $LIBPATH
-
-  [idir, ldir]
-end
-
-def pkg_config(pkg)
-  if pkgconfig = with_config("#{pkg}-config") and find_executable0(pkgconfig)
-    # iff package specific config command is given
-    get = proc {|opt| `#{pkgconfig} --#{opt}`.chomp}
-  elsif ($PKGCONFIG ||= 
-         (pkgconfig = with_config("pkg-config", ("pkg-config" unless CROSS_COMPILING))) &&
-         find_executable0(pkgconfig) && pkgconfig) and
-      system("#{$PKGCONFIG} --exists #{pkg}")
-    # default to pkg-config command
-    get = proc {|opt| `#{$PKGCONFIG} --#{opt} #{pkg}`.chomp}
-  elsif find_executable0(pkgconfig = "#{pkg}-config")
-    # default to package specific config command, as a last resort.
-    get = proc {|opt| `#{pkgconfig} --#{opt}`.chomp}
-  end
-  if get
-    cflags = get['cflags']
-    ldflags = get['libs']
-    libs = get['libs-only-l']
-    ldflags = (Shellwords.shellwords(ldflags) - Shellwords.shellwords(libs)).quote.join(" ")
-    $CFLAGS += " " << cflags
-    $LDFLAGS += " " << ldflags
-    $libs += " " << libs
-    Logging::message "package configuration for %s\n", pkg
-    Logging::message "cflags: %s\nldflags: %s\nlibs: %s\n\n",
-                     cflags, ldflags, libs
-    [cflags, ldflags, libs]
-  else
-    Logging::message "package configuration for %s is not found\n", pkg
-    nil
-  end
-end
-
-def with_destdir(dir)
-  dir = dir.sub($dest_prefix_pattern, '')
-  /\A\$[\(\{]/ =~ dir ? dir : "$(DESTDIR)"+dir
-end
-
-def winsep(s)
-  s.tr('/', '\\')
-end
-
-def configuration(srcdir)
-  mk = []
-  vpath = %w[$(srcdir) $(topdir) $(hdrdir)]
-  if !CROSS_COMPILING
-    case CONFIG['build_os']
-    when 'cygwin'
-      if CONFIG['target_os'] != 'cygwin'
-        vpath.each {|p| p.sub!(/.*/, '$(shell cygpath -u \&)')}
-      end
-    when 'msdosdjgpp', 'mingw32'
-      CONFIG['PATH_SEPARATOR'] = ';'
-    end
-  end
-  mk << %{
-SHELL = /bin/sh
-
-#### Start of system configuration section. ####
-
-srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {CONFIG[$1||$2]}.quote}
-topdir = #{($extmk ? CONFIG["topdir"] : $topdir).quote}
-hdrdir = #{$extmk ? CONFIG["hdrdir"].quote : '$(topdir)'}
-VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])}
-}
-  if $extmk
-    mk << "RUBYLIB = -\nRUBYOPT = -rpurelib.rb\n"
-  end
-  if destdir = CONFIG["prefix"][$dest_prefix_pattern, 1]
-    mk << "\nDESTDIR = #{destdir}\n"
-  end
-  CONFIG.each do |key, var|
-    next unless /prefix$/ =~ key
-    mk << "#{key} = #{with_destdir(var)}\n"
-  end
-  CONFIG.each do |key, var|
-    next if /^abs_/ =~ key
-    next unless /^(?:src|top|hdr|(.*))dir$/ =~ key and $1
-    mk << "#{key} = #{with_destdir(var)}\n"
-  end
-  if !$extmk and !$configure_args.has_key?('--ruby') and
-      sep = config_string('BUILD_FILE_SEPARATOR')
-    sep = ":/=#{sep}"
-  else
-    sep = ""
-  end
-  extconf_h = $extconf_h ? "-DRUBY_EXTCONF_H=\\\"$(RUBY_EXTCONF_H)\\\" " : $defs.join(" ")<<" "
-  mk << %{
-CC = #{CONFIG['CC']}
-LIBRUBY = #{CONFIG['LIBRUBY']}
-LIBRUBY_A = #{CONFIG['LIBRUBY_A']}
-LIBRUBYARG_SHARED = #$LIBRUBYARG_SHARED
-LIBRUBYARG_STATIC = #$LIBRUBYARG_STATIC
-
-RUBY_EXTCONF_H = #{$extconf_h}
-CFLAGS   = #{$static ? '' : CONFIG['CCDLFLAGS']} #$CFLAGS #$ARCH_FLAG
-INCFLAGS = -I. #$INCFLAGS
-DEFS     = #{CONFIG['DEFS']}
-CPPFLAGS = #{extconf_h}#{$CPPFLAGS}
-CXXFLAGS = $(CFLAGS) #{CONFIG['CXXFLAGS']}
-DLDFLAGS = #$LDFLAGS #$DLDFLAGS #$ARCH_FLAG
-LDSHARED = #{CONFIG['LDSHARED']}
-AR = #{CONFIG['AR']}
-EXEEXT = #{CONFIG['EXEEXT']}
-
-RUBY_INSTALL_NAME = #{CONFIG['RUBY_INSTALL_NAME']}
-RUBY_SO_NAME = #{CONFIG['RUBY_SO_NAME']}
-arch = #{CONFIG['arch']}
-sitearch = #{CONFIG['sitearch']}
-ruby_version = #{Config::CONFIG['ruby_version']}
-ruby = #{$ruby}
-RUBY = $(ruby#{sep})
-RM = #{config_string('RM') || '$(RUBY) -run -e rm -- -f'}
-MAKEDIRS = #{config_string('MAKEDIRS') || '@$(RUBY) -run -e mkdir -- -p'}
-INSTALL = #{config_string('INSTALL') || '@$(RUBY) -run -e install -- -vp'}
-INSTALL_PROG = #{config_string('INSTALL_PROG') || '$(INSTALL) -m 0755'}
-INSTALL_DATA = #{config_string('INSTALL_DATA') || '$(INSTALL) -m 0644'}
-COPY = #{config_string('CP') || '@$(RUBY) -run -e cp -- -v'}
-
-#### End of system configuration section. ####
-
-preload = #{$preload ? $preload.join(' ') : ''}
-}
-  if $nmake == ?b
-    mk.each do |x|
-      x.gsub!(/^(MAKEDIRS|INSTALL_(?:PROG|DATA))+\s*=.*\n/) do
-        "!ifndef " + $1 + "\n" +
-        $& +
-	"!endif\n"
-      end
-    end
-  end
-  mk
-end
-
-def dummy_makefile(srcdir)
-  configuration(srcdir) << <<RULES << CLEANINGS
-CLEANFILES = #{$cleanfiles.join(' ')}
-DISTCLEANFILES = #{$distcleanfiles.join(' ')}
-
-all install static install-so install-rb: Makefile
-
-RULES
-end
-
-# Generates the Makefile for your extension, passing along any options and
-# preprocessor constants that you may have generated through other methods.
-#
-# The +target+ name should correspond the name of the global function name
-# defined within your C extension, minus the 'Init_'.  For example, if your
-# C extension is defined as 'Init_foo', then your target would simply be 'foo'.
-#
-# If any '/' characters are present in the target name, only the last name
-# is interpreted as the target name, and the rest are considered toplevel
-# directory names, and the generated Makefile will be altered accordingly to
-# follow that directory structure.
-#
-# For example, if you pass 'test/foo' as a target name, your extension will
-# be installed under the 'test' directory.  This means that in order to
-# load the file within a Ruby program later, that directory structure will
-# have to be followed, e.g. "require 'test/foo'".
-#
-def create_makefile(target, srcprefix = nil)
-  $target = target
-  libpath = $DEFLIBPATH|$LIBPATH
-  message "creating Makefile\n"
-  rm_f "conftest*"
-  if CONFIG["DLEXT"] == $OBJEXT
-    for lib in libs = $libs.split
-      lib.sub!(/-l(.*)/, %%"lib\\1.#{$LIBEXT}"%)
-    end
-    $defs.push(format("-DEXTLIB='%s'", libs.join(",")))
-  end
-
-  if target.include?('/')
-    target_prefix, target = File.split(target)
-    target_prefix[0,0] = '/'
-  else
-    target_prefix = ""
-  end
-
-  srcprefix ||= '$(srcdir)'
-  Config::expand(srcdir = srcprefix.dup)
-
-  if not $objs
-    $objs = []
-    srcs = Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-    for f in srcs
-      obj = File.basename(f, ".*") << ".o"
-      $objs.push(obj) unless $objs.index(obj)
-    end
-  elsif !(srcs = $srcs)
-    srcs = $objs.collect {|obj| obj.sub(/\.o\z/, '.c')}
-  end
-  $srcs = srcs
-  for i in $objs
-    i.sub!(/\.o\z/, ".#{$OBJEXT}")
-  end
-  $objs = $objs.join(" ")
-
-  target = nil if $objs == ""
-
-  if target and EXPORT_PREFIX
-    if File.exist?(File.join(srcdir, target + '.def'))
-      deffile = "$(srcdir)/$(TARGET).def"
-      unless EXPORT_PREFIX.empty?
-        makedef = %{-pe "sub!(/^(?=\\w)/,'#{EXPORT_PREFIX}') unless 1../^EXPORTS$/i"}
-      end
-    else
-      makedef = %{-e "puts 'EXPORTS', '#{EXPORT_PREFIX}Init_$(TARGET)'"}
-    end
-    if makedef
-      $distcleanfiles << '$(DEFFILE)'
-      origdef = deffile
-      deffile = "$(TARGET)-$(arch).def"
-    end
-  end
-  origdef ||= ''
-
-  libpath = libpathflag(libpath)
-
-  dllib = target ? "$(TARGET).#{CONFIG['DLEXT']}" : ""
-  staticlib = target ? "$(TARGET).#$LIBEXT" : ""
-  mfile = open("Makefile", "wb")
-  mfile.print configuration(srcprefix)
-  mfile.print "
-libpath = #{($DEFLIBPATH|$LIBPATH).join(" ")}
-LIBPATH = #{libpath}
-DEFFILE = #{deffile}
-
-CLEANFILES = #{$cleanfiles.join(' ')}
-DISTCLEANFILES = #{$distcleanfiles.join(' ')}
-
-extout = #{$extout}
-extout_prefix = #{$extout_prefix}
-target_prefix = #{target_prefix}
-LOCAL_LIBS = #{$LOCAL_LIBS}
-LIBS = #{$LIBRUBYARG} #{$libs} #{$LIBS}
-SRCS = #{srcs.collect(&File.method(:basename)).join(' ')}
-OBJS = #{$objs}
-TARGET = #{target}
-DLLIB = #{dllib}
-EXTSTATIC = #{$static || ""}
-STATIC_LIB = #{staticlib unless $static.nil?}
-#{!$extout && defined?($installed_list) ? "INSTALLED_LIST = #{$installed_list}\n" : ""}
-"
-  install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]}
-  n = ($extout ? '$(RUBYARCHDIR)/' : '') + '$(TARGET).'
-  mfile.print "
-TARGET_SO     = #{($extout ? '$(RUBYARCHDIR)/' : '')}$(DLLIB)
-CLEANLIBS     = #{n}#{CONFIG['DLEXT']} #{n}il? #{n}tds #{n}map
-CLEANOBJS     = *.#{$OBJEXT} *.#{$LIBEXT} *.s[ol] *.pdb *.exp *.bak
-
-all:		#{$extout ? "install" : target ? "$(DLLIB)" : "Makefile"}
-static:		$(STATIC_LIB)#{$extout ? " install-rb" : ""}
-"
-  mfile.print CLEANINGS
-  dirs = []
-  mfile.print "install: install-so install-rb\n\n"
-  sodir = (dir = "$(RUBYARCHDIR)").dup
-  mfile.print("install-so: #{dir}\n")
-  if target
-    f = "$(DLLIB)"
-    dest = "#{dir}/#{f}"
-    mfile.print "install-so: #{dest}\n"
-    unless $extout
-      mfile.print "#{dest}: #{f}\n"
-      if (sep = config_string('BUILD_FILE_SEPARATOR'))
-        f.gsub!("/", sep)
-        dir.gsub!("/", sep)
-        sep = ":/="+sep
-        f.gsub!(/(\$\(\w+)(\))/) {$1+sep+$2}
-        f.gsub!(/(\$\{\w+)(\})/) {$1+sep+$2}
-        dir.gsub!(/(\$\(\w+)(\))/) {$1+sep+$2}
-        dir.gsub!(/(\$\{\w+)(\})/) {$1+sep+$2}
-      end
-      mfile.print "\t$(INSTALL_PROG) #{f} #{dir}\n"
-      if defined?($installed_list)
-	mfile.print "\t at echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
-      end
-    end
-  end
-  mfile.print("install-rb: pre-install-rb install-rb-default\n")
-  mfile.print("install-rb-default: pre-install-rb-default\n")
-  mfile.print("pre-install-rb: Makefile\n")
-  mfile.print("pre-install-rb-default: Makefile\n")
-  for sfx, i in [["-default", [["lib/**/*.rb", "$(RUBYLIBDIR)", "lib"]]], ["", $INSTALLFILES]]
-    files = install_files(mfile, i, nil, srcprefix) or next
-    for dir, *files in files
-      unless dirs.include?(dir)
-	dirs << dir
-	mfile.print "pre-install-rb#{sfx}: #{dir}\n"
-      end
-      files.each do |f|
-	dest = "#{dir}/#{File.basename(f)}"
-	mfile.print("install-rb#{sfx}: #{dest}\n")
-	mfile.print("#{dest}: #{f}\n\t$(#{$extout ? 'COPY' : 'INSTALL_DATA'}) ")
-	sep = config_string('BUILD_FILE_SEPARATOR')
-	if sep
-	  f = f.gsub("/", sep)
-	  sep = ":/="+sep
-	  f = f.gsub(/(\$\(\w+)(\))/) {$1+sep+$2}
-	  f = f.gsub(/(\$\{\w+)(\})/) {$1+sep+$2}
-	else
-	  sep = ""
-	end
-	mfile.print("#{f} $(@D#{sep})\n")
-	if defined?($installed_list) and !$extout
-	  mfile.print("\t at echo #{dest}>>$(INSTALLED_LIST)\n")
-	end
-      end
-    end
-  end
-  dirs.unshift(sodir) if target and !dirs.include?(sodir)
-  dirs.each {|dir| mfile.print "#{dir}:\n\t$(MAKEDIRS) $@\n"}
-
-  mfile.print <<-SITEINSTALL
-
-site-install: site-install-so site-install-rb
-site-install-so: install-so
-site-install-rb: install-rb
-
-  SITEINSTALL
-
-  return unless target
-
-  mfile.puts SRC_EXT.collect {|ext| ".path.#{ext} = $(VPATH)"} if $nmake == ?b
-  mfile.print ".SUFFIXES: .#{SRC_EXT.join(' .')} .#{$OBJEXT}\n"
-  mfile.print "\n"
-
-  CXX_EXT.each do |ext|
-    COMPILE_RULES.each do |rule|
-      mfile.printf(rule, ext, $OBJEXT)
-      mfile.printf("\n\t%s\n\n", COMPILE_CXX)
-    end
-  end
-  %w[c].each do |ext|
-    COMPILE_RULES.each do |rule|
-      mfile.printf(rule, ext, $OBJEXT)
-      mfile.printf("\n\t%s\n\n", COMPILE_C)
-    end
-  end
-
-  mfile.print "$(RUBYARCHDIR)/" if $extout
-  mfile.print "$(DLLIB): ", (makedef ? "$(DEFFILE) " : ""), "$(OBJS)\n"
-  mfile.print "\t at -$(RM) $@\n"
-  mfile.print "\t at -$(MAKEDIRS) $(@D)\n" if $extout
-  link_so = LINK_SO.gsub(/^/, "\t")
-  mfile.print link_so, "\n\n"
-  unless $static.nil?
-    mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
-    mfile.print "$(AR) #{config_string('ARFLAGS') || 'cru '}$@ $(OBJS)"
-    config_string('RANLIB') do |ranlib|
-      mfile.print "\n\t at -#{ranlib} $(DLLIB) 2> /dev/null || true"
-    end
-  end
-  mfile.print "\n\n"
-  if makedef
-    mfile.print "$(DEFFILE): #{origdef}\n"
-    mfile.print "\t$(RUBY) #{makedef} #{origdef} > $@\n\n"
-  end
-
-  depend = File.join(srcdir, "depend")
-  if File.exist?(depend)
-    suffixes = []
-    depout = []
-    open(depend, "r") do |dfile|
-      mfile.printf "###\n"
-      cont = implicit = nil
-      impconv = proc do
-	COMPILE_RULES.each {|rule| depout << (rule % implicit[0]) << implicit[1]}
-	implicit = nil
-      end
-      ruleconv = proc do |line|
-	if implicit
-	  if /\A\t/ =~ line
-	    implicit[1] << line
-	    next
-	  else
-	    impconv[]
-	  end
-	end
-	if m = /\A\.(\w+)\.(\w+)(?:\s*:)/.match(line)
-	  suffixes << m[1] << m[2]
-	  implicit = [[m[1], m[2]], [m.post_match]]
-	  next
-	elsif RULE_SUBST and /\A(?!\s*\w+\s*=)[$\w][^#]*:/ =~ line
-	  line.gsub!(%r"(\s)(?!\.)([^$(){}+=:\s\/\\,]+)(?=\s|\z)") {$1 + RULE_SUBST % $2}
-	end
-	depout << line
-      end
-      while line = dfile.gets()
-	line.gsub!(/\.o\b/, ".#{$OBJEXT}")
-	line.gsub!(/\$\(hdrdir\)\/config.h/, $config_h) if $config_h
-	if /(?:^|[^\\])(?:\\\\)*\\$/ =~ line
-	  (cont ||= []) << line
-	  next
-	elsif cont
-	  line = (cont << line).join
-	  cont = nil
-	end
-	ruleconv.call(line)
-      end
-      if cont
-	ruleconv.call(cont.join)
-      elsif implicit
-	impconv.call
-      end
-    end
-    unless suffixes.empty?
-      mfile.print ".SUFFIXES: .", suffixes.uniq.join(" ."), "\n\n"
-    end
-    mfile.print "$(OBJS): $(RUBY_EXTCONF_H)\n\n" if $extconf_h
-    mfile.print depout
-  else
-    headers = %w[ruby.h defines.h]
-    if RULE_SUBST
-      headers.each {|h| h.sub!(/.*/) {|*m| RULE_SUBST % m}}
-    end
-    headers << $config_h if $config_h
-    headers << "$(RUBY_EXTCONF_H)" if $extconf_h
-    mfile.print "$(OBJS): ", headers.join(' '), "\n"
-  end
-
-  $makefile_created = true
-ensure
-  mfile.close if mfile
-end
-
-def init_mkmf(config = CONFIG)
-  $makefile_created = false
-  $arg_config = []
-  $enable_shared = config['ENABLE_SHARED'] == 'yes'
-  $defs = []
-  $extconf_h = nil
-  $CFLAGS = with_config("cflags", arg_config("CFLAGS", config["CFLAGS"])).dup
-  $ARCH_FLAG = with_config("arch_flag", arg_config("ARCH_FLAG", config["ARCH_FLAG"])).dup
-  $CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS", config["CPPFLAGS"])).dup
-  $LDFLAGS = with_config("ldflags", arg_config("LDFLAGS", config["LDFLAGS"])).dup
-  $INCFLAGS = "-I$(topdir) -I$(hdrdir) -I$(srcdir)"
-  $DLDFLAGS = with_config("dldflags", arg_config("DLDFLAGS", config["DLDFLAGS"])).dup
-  $LIBEXT = config['LIBEXT'].dup
-  $OBJEXT = config["OBJEXT"].dup
-  $LIBS = "#{config['LIBS']} #{config['DLDLIBS']}"
-  $LIBRUBYARG = ""
-  $LIBRUBYARG_STATIC = config['LIBRUBYARG_STATIC']
-  $LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED']
-  $DEFLIBPATH = $extmk ? ["$(topdir)"] : CROSS_COMPILING ? [] : ["$(libdir)"]
-  $DEFLIBPATH.unshift(".")
-  $LIBPATH = []
-  $INSTALLFILES = nil
-
-  $objs = nil
-  $srcs = nil
-  $libs = ""
-  if $enable_shared or Config.expand(config["LIBRUBY"].dup) != Config.expand(config["LIBRUBY_A"].dup)
-    $LIBRUBYARG = config['LIBRUBYARG']
-  end
-
-  $LOCAL_LIBS = ""
-
-  $cleanfiles = config_string('CLEANFILES') {|s| Shellwords.shellwords(s)} || []
-  $cleanfiles << "mkmf.log"
-  $distcleanfiles = config_string('DISTCLEANFILES') {|s| Shellwords.shellwords(s)} || []
-
-  $extout ||= nil
-  $extout_prefix ||= nil
-
-  $arg_config.clear
-  dir_config("opt")
-end
-
-FailedMessage = <<MESSAGE
-Could not create Makefile due to some reason, probably lack of
-necessary libraries and/or headers.  Check the mkmf.log file for more
-details.  You may need configuration options.
-
-Provided configuration options:
-MESSAGE
-
-def mkmf_failed(path)
-  unless $makefile_created or File.exist?("Makefile")
-    opts = $arg_config.collect {|t, n| "\t#{t}#{n ? "=#{n}" : ""}\n"}
-    abort "*** #{path} failed ***\n" + FailedMessage + opts.join
-  end
-end
-
-init_mkmf
-
-$make = with_config("make-prog", ENV["MAKE"] || "make")
-make, = Shellwords.shellwords($make)
-$nmake = nil
-case
-when $mswin
-  $nmake = ?m if /nmake/i =~ make
-when $bccwin
-  $nmake = ?b if /Borland/i =~ `#{make} -h`
-end
-
-Config::CONFIG["srcdir"] = CONFIG["srcdir"] =
-  $srcdir = arg_config("--srcdir", File.dirname($0))
-$configure_args["--topsrcdir"] ||= $srcdir
-if $curdir = arg_config("--curdir")
-  Config.expand(curdir = $curdir.dup)
-else
-  curdir = $curdir = "."
-end
-unless File.expand_path(Config::CONFIG["topdir"]) == File.expand_path(curdir)
-  CONFIG["topdir"] = $curdir
-  Config::CONFIG["topdir"] = curdir
-end
-$configure_args["--topdir"] ||= $curdir
-$ruby = arg_config("--ruby", File.join(Config::CONFIG["bindir"], CONFIG["ruby_install_name"]))
-
-split = Shellwords.method(:shellwords).to_proc
-
-EXPORT_PREFIX = config_string('EXPORT_PREFIX') {|s| s.strip}
-
-hdr = []
-config_string('COMMON_MACROS') do |s|
-  Shellwords.shellwords(s).each do |w|
-    hdr << "#define " + w.split(/=/, 2).join(" ")
-  end
-end
-config_string('COMMON_HEADERS') do |s|
-  Shellwords.shellwords(s).each {|s| hdr << "#include <#{s}>"}
-end
-COMMON_HEADERS = hdr.join("\n")
-COMMON_LIBS = config_string('COMMON_LIBS', &split) || []
-
-COMPILE_RULES = config_string('COMPILE_RULES', &split) || %w[.%s.%s:]
-RULE_SUBST = config_string('RULE_SUBST')
-COMPILE_C = config_string('COMPILE_C') || '$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<'
-COMPILE_CXX = config_string('COMPILE_CXX') || '$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<'
-TRY_LINK = config_string('TRY_LINK') ||
-  "$(CC) #{OUTFLAG}conftest $(INCFLAGS) $(CPPFLAGS) " \
-  "$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) $(LOCAL_LIBS) $(LIBS)"
-LINK_SO = config_string('LINK_SO') ||
-  if CONFIG["DLEXT"] == $OBJEXT
-    "ld $(DLDFLAGS) -r -o $@ $(OBJS)\n"
-  else
-    "$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \
-    "$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)"
-  end
-LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"'
-RPATHFLAG = config_string('RPATHFLAG') || ''
-LIBARG = config_string('LIBARG') || '-l%s'
-
-sep = config_string('BUILD_FILE_SEPARATOR') {|sep| ":/=#{sep}" if sep != "/"} || ""
-CLEANINGS = "
-clean:
-		@-$(RM) $(CLEANLIBS#{sep}) $(CLEANOBJS#{sep}) $(CLEANFILES#{sep})
-
-distclean:	clean
-		@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
-		@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES#{sep})
-
-realclean:	distclean
-"
-
-if not $extmk and /\A(extconf|makefile).rb\z/ =~ File.basename($0)
-  END {mkmf_failed($0)}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/monitor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/monitor.rb
deleted file mode 100644
index 4c146c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/monitor.rb
+++ /dev/null
@@ -1,352 +0,0 @@
-=begin
-
-= monitor.rb
-
-Copyright (C) 2001  Shugo Maeda <shugo at ruby-lang.org>
-
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
-
-== example
-
-This is a simple example.
-
-  require 'monitor.rb'
-  
-  buf = []
-  buf.extend(MonitorMixin)
-  empty_cond = buf.new_cond
-  
-  # consumer
-  Thread.start do
-    loop do
-      buf.synchronize do
-        empty_cond.wait_while { buf.empty? }
-        print buf.shift
-      end
-    end
-  end
-  
-  # producer
-  while line = ARGF.gets
-    buf.synchronize do
-      buf.push(line)
-      empty_cond.signal
-    end
-  end
-
-The consumer thread waits for the producer thread to push a line
-to buf while buf.empty?, and the producer thread (main thread)
-reads a line from ARGF and push it to buf, then call
-empty_cond.signal.
-
-=end
-  
-
-#
-# Adds monitor functionality to an arbitrary object by mixing the module with
-# +include+.  For example:
-#
-#    require 'monitor.rb'
-#    
-#    buf = []
-#    buf.extend(MonitorMixin)
-#    empty_cond = buf.new_cond
-#    
-#    # consumer
-#    Thread.start do
-#      loop do
-#        buf.synchronize do
-#          empty_cond.wait_while { buf.empty? }
-#          print buf.shift
-#        end
-#      end
-#    end
-#    
-#    # producer
-#    while line = ARGF.gets
-#      buf.synchronize do
-#        buf.push(line)
-#        empty_cond.signal
-#      end
-#    end
-# 
-# The consumer thread waits for the producer thread to push a line
-# to buf while buf.empty?, and the producer thread (main thread)
-# reads a line from ARGF and push it to buf, then call
-# empty_cond.signal.
-#
-module MonitorMixin
-  #
-  # FIXME: This isn't documented in Nutshell.
-  #
-  # Since MonitorMixin.new_cond returns a ConditionVariable, and the example
-  # above calls while_wait and signal, this class should be documented.
-  #
-  class ConditionVariable
-    class Timeout < Exception; end
-    
-    # Create a new timer with the argument timeout, and add the
-    # current thread to the list of waiters.  Then the thread is
-    # stopped.  It will be resumed when a corresponding #signal 
-    # occurs.
-    def wait(timeout = nil)
-      @monitor.instance_eval {mon_check_owner()}
-      timer = create_timer(timeout)
-      
-      Thread.critical = true
-      count = @monitor.instance_eval {mon_exit_for_cond()}
-      @waiters.push(Thread.current)
-
-      begin
-	Thread.stop
-        return true
-      rescue Timeout
-        return false
-      ensure
-	Thread.critical = true
-	begin
-	  if timer && timer.alive?
-	    Thread.kill(timer)
-	  end
-	  if @waiters.include?(Thread.current)  # interrupted?
-	    @waiters.delete(Thread.current)
-	  end
-	  @monitor.instance_eval {mon_enter_for_cond(count)}
-	ensure
-	  Thread.critical = false
-	end
-      end
-    end
-    
-
-    # call #wait while the supplied block returns +true+.
-    def wait_while
-      while yield
-	wait
-      end
-    end
-    
-    # call #wait until the supplied block returns +true+.
-    def wait_until
-      until yield
-	wait
-      end
-    end
-    
-    # Wake up and run the next waiter
-    def signal
-      @monitor.instance_eval {mon_check_owner()}
-      Thread.critical = true
-      t = @waiters.shift
-      t.wakeup if t
-      Thread.critical = false
-      Thread.pass
-    end
-    
-    # Wake up all the waiters.
-    def broadcast
-      @monitor.instance_eval {mon_check_owner()}
-      Thread.critical = true
-      for t in @waiters
-	t.wakeup
-      end
-      @waiters.clear
-      Thread.critical = false
-      Thread.pass
-    end
-    
-    def count_waiters
-      return @waiters.length
-    end
-    
-    private
-
-    def initialize(monitor)
-      @monitor = monitor
-      @waiters = []
-    end
-
-    def create_timer(timeout)
-      if timeout
-	waiter = Thread.current
-	return Thread.start {
-	  Thread.pass
-	  sleep(timeout)
-	  Thread.critical = true
-	  waiter.raise(Timeout.new)
-	}
-      else
-        return nil
-      end
-    end
-  end
-  
-  def self.extend_object(obj)
-    super(obj)
-    obj.instance_eval {mon_initialize()}
-  end
-  
-  #
-  # Attempts to enter exclusive section.  Returns +false+ if lock fails.
-  #
-  def mon_try_enter
-    result = false
-    Thread.critical = true
-    if @mon_owner.nil?
-      @mon_owner = Thread.current
-    end
-    if @mon_owner == Thread.current
-      @mon_count += 1
-      result = true
-    end
-    Thread.critical = false
-    return result
-  end
-  # For backward compatibility
-  alias try_mon_enter mon_try_enter
-
-  #
-  # Enters exclusive section.
-  #
-  def mon_enter
-    Thread.critical = true
-    mon_acquire(@mon_entering_queue)
-    @mon_count += 1
-  ensure
-    Thread.critical = false
-  end
-  
-  #
-  # Leaves exclusive section.
-  #
-  def mon_exit
-    mon_check_owner
-    Thread.critical = true
-    @mon_count -= 1
-    if @mon_count == 0
-      mon_release
-    end
-    Thread.critical = false
-    Thread.pass
-  end
-
-  #
-  # Enters exclusive section and executes the block.  Leaves the exclusive
-  # section automatically when the block exits.  See example under
-  # +MonitorMixin+.
-  #
-  def mon_synchronize
-    mon_enter
-    begin
-      yield
-    ensure
-      mon_exit
-    end
-  end
-  alias synchronize mon_synchronize
-  
-  #
-  # FIXME: This isn't documented in Nutshell.
-  # 
-  # Create a new condition variable for this monitor.
-  # This facilitates control of the monitor with #signal and #wait.
-  #
-  def new_cond
-    return ConditionVariable.new(self)
-  end
-
-  private
-
-  def initialize(*args)
-    super
-    mon_initialize
-  end
-
-  # called by initialize method to set defaults for instance variables.
-  def mon_initialize
-    @mon_owner = nil
-    @mon_count = 0
-    @mon_entering_queue = []
-    @mon_waiting_queue = []
-  end
-
-  # Throw a ThreadError exception if the current thread
-  # does't own the monitor
-  def mon_check_owner
-    if @mon_owner != Thread.current
-      raise ThreadError, "current thread not owner"
-    end
-  end
-
-  def mon_acquire(queue)
-    while @mon_owner && @mon_owner != Thread.current
-      queue.push(Thread.current)
-      Thread.stop
-      Thread.critical = true
-    end
-    @mon_owner = Thread.current
-  end
-
-  def mon_release
-    @mon_owner = nil
-    t = @mon_waiting_queue.shift
-    t = @mon_entering_queue.shift unless t
-    t.wakeup if t
-  end
-
-  def mon_enter_for_cond(count)
-    mon_acquire(@mon_waiting_queue)
-    @mon_count = count
-  end
-
-  def mon_exit_for_cond
-    count = @mon_count
-    @mon_count = 0
-    return count
-  ensure
-    mon_release
-  end
-end
-
-# Monitors provide means of mutual exclusion for Thread programming.
-# A critical region is created by means of the synchronize method,
-# which takes a block.
-# The condition variables (created with #new_cond) may be used 
-# to control the execution of a monitor with #signal and #wait.
-#
-# the Monitor class wraps MonitorMixin, and provides aliases
-#  alias try_enter try_mon_enter
-#  alias enter mon_enter
-#  alias exit mon_exit
-# to access its methods more concisely.
-class Monitor
-  include MonitorMixin
-  alias try_enter try_mon_enter
-  alias enter mon_enter
-  alias exit mon_exit
-end
-
-
-# Documentation comments:
-#  - All documentation comes from Nutshell.
-#  - MonitorMixin.new_cond appears in the example, but is not documented in
-#    Nutshell.
-#  - All the internals (internal modules Accessible and Initializable, class
-#    ConditionVariable) appear in RDoc.  It might be good to hide them, by
-#    making them private, or marking them :nodoc:, etc.
-#  - The entire example from the RD section at the top is replicated in the RDoc
-#    comment for MonitorMixin.  Does the RD section need to remain?
-#  - RDoc doesn't recognise aliases, so we have mon_synchronize documented, but
-#    not synchronize.
-#  - mon_owner is in Nutshell, but appears as an accessor in a separate module
-#    here, so is hard/impossible to RDoc.  Some other useful accessors
-#    (mon_count and some queue stuff) are also in this module, and don't appear
-#    directly in the RDoc output.
-#  - in short, it may be worth changing the code layout in this file to make the
-#    documentation easier
-
-# Local variables:
-# mode: Ruby
-# tab-width: 8
-# End:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/multi-tk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/multi-tk.rb
deleted file mode 100644
index 78ed1aa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/multi-tk.rb
+++ /dev/null
@@ -1,3233 +0,0 @@
-#
-#               multi-tk.rb - supports multi Tk interpreters
-#                       by Hidetoshi NAGAI <nagai at ai.kyutech.ac.jp>
-
-require 'tcltklib'
-require 'tkutil'
-require 'thread'
-
-if defined? Tk
-  fail RuntimeError,"'multi-tk' library must be required before requiring 'tk'"
-end
-
-################################################
-# ignore exception on the mainloop?
-
-TclTkLib.mainloop_abort_on_exception = true
-# TclTkLib.mainloop_abort_on_exception = false
-# TclTkLib.mainloop_abort_on_exception = nil
-
-
-################################################
-# add ThreadGroup check to TclTkIp.new
-class << TclTkIp
-  alias __new__ new
-  private :__new__
-
-  def new(*args)
-    if Thread.current.group != ThreadGroup::Default
-      raise SecurityError, 'only ThreadGroup::Default can call TclTkIp.new'
-    end
-    __new__(*args)
-  end
-end
-
-
-################################################
-# use pseudo-toplevel feature of MultiTkIp ?
-if (!defined?(Use_PseudoToplevel_Feature_of_MultiTkIp) || 
-      Use_PseudoToplevel_Feature_of_MultiTkIp)
-  module MultiTkIp_PseudoToplevel_Evaluable
-    #def pseudo_toplevel_eval(body = Proc.new)
-    #  Thread.current[:TOPLEVEL] = self
-    #  begin
-    #    body.call
-    #  ensure
-    #    Thread.current[:TOPLEVEL] = nil
-    #  end
-    #end
-
-    def pseudo_toplevel_evaluable?
-      @pseudo_toplevel_evaluable
-    end
-
-    def pseudo_toplevel_evaluable=(mode)
-      @pseudo_toplevel_evaluable = (mode)? true: false
-    end
-
-    def self.extended(mod)
-      mod.__send__(:extend_object, mod)
-      mod.instance_variable_set('@pseudo_toplevel_evaluable', true)
-    end
-  end
-
-  class Object
-    alias __method_missing_alias_for_MultiTkIp__ method_missing
-    private :__method_missing_alias_for_MultiTkIp__
-
-    def method_missing(id, *args)
-      begin
-        has_top = (top = MultiTkIp.__getip.__pseudo_toplevel) && 
-          top.respond_to?(:pseudo_toplevel_evaluable?) && 
-          top.pseudo_toplevel_evaluable? && 
-          top.respond_to?(id)
-      rescue Exception => e
-        has_top = false
-      end
-
-      if has_top
-        top.__send__(id, *args)
-      else
-        __method_missing_alias_for_MultiTkIp__(id, *args)
-      end
-    end
-  end
-else
-  # dummy
-  module MultiTkIp_PseudoToplevel_Evaluable
-    def pseudo_toplevel_evaluable?
-      false
-    end
-  end
-end
-
-################################################
-# exceptiopn to treat the return value from IP
-class MultiTkIp_OK < Exception
-  def self.send(thread, ret=nil)
-    thread.raise self.new(ret)
-  end
-
-  def initialize(ret=nil)
-    super('succeed')
-    @return_value = ret
-  end
-
-  attr_reader :return_value
-  alias value return_value
-end
-MultiTkIp_OK.freeze
-
-
-################################################
-# methods for construction
-class MultiTkIp
-  BASE_DIR = File.dirname(__FILE__)
-
-  @@SLAVE_IP_ID = ['slave'.freeze, '0'.taint].freeze
-
-  @@IP_TABLE = {}.taint unless defined?(@@IP_TABLE)
-
-  @@INIT_IP_ENV  = [].taint unless defined?(@@INIT_IP_ENV)  # table of Procs
-  @@ADD_TK_PROCS = [].taint unless defined?(@@ADD_TK_PROCS) # table of [name, args, body]
-
-  @@TK_TABLE_LIST = [].taint unless defined?(@@TK_TABLE_LIST)
-
-  unless defined?(@@TK_CMD_TBL)
-    @@TK_CMD_TBL = Object.new.taint
-
-    @@TK_CMD_TBL.instance_variable_set('@tbl', {}.taint)
-
-    class << @@TK_CMD_TBL
-      allow = [
-        '__send__', '__id__', 'freeze', 'inspect', 'kind_of?', 
-        '[]', '[]=', 'delete', 'each', 'has_key?'
-      ]
-      instance_methods.each{|m| undef_method(m) unless allow.index(m)}
-
-      def kind_of?(klass)
-        @tbl.kind_of?(klass)
-      end
-
-      def inspect
-        if Thread.current.group == ThreadGroup::Default
-          @tbl.inspect
-        else
-          ip = MultiTkIp.__getip
-          @tbl.reject{|idx, ent| ent.respond_to?(:ip) && ent.ip != ip}.inspect
-        end
-      end
-
-      def [](idx)
-        return unless (ent = @tbl[idx])
-        if Thread.current.group == ThreadGroup::Default
-          ent
-        elsif ent.respond_to?(:ip)
-          (ent.ip == MultiTkIp.__getip)? ent: nil
-        else
-          ent
-        end
-      end
-
-      def []=(idx,val)
-        if self.has_key?(idx) && Thread.current.group != ThreadGroup::Default
-          fail SecurityError,"cannot change the entried command"
-        end
-        @tbl[idx] = val
-      end
-
-      def delete(idx, &blk)
-        # if gets an entry, is permited to delete
-        if self[idx]
-          @tbl.delete(idx) 
-        elsif blk
-          blk.call(idx)
-        else
-          nil
-        end
-      end
-
-      def each(&blk)
-        if Thread.current.group == ThreadGroup::Default
-          @tbl.each(&blk)
-        else
-          ip = MultiTkIp.__getip
-          @tbl.each{|idx, ent|
-            blk.call(idx, ent) unless ent.respond_to?(:ip) && ent.ip != ip
-          }
-        end
-        self
-      end
-
-      def has_key?(k)
-        @tbl.has_key?(k)
-      end
-      alias include? has_key?
-      alias key? has_key?
-      alias member? has_key?
-    end
-
-    @@TK_CMD_TBL.freeze
-  end
-
-  ######################################
-
-  @@CB_ENTRY_CLASS = Class.new(TkCallbackEntry){
-    def initialize(ip, cmd)
-      @ip = ip
-      @cmd = cmd
-      freeze
-    end
-    attr_reader :ip, :cmd
-    def inspect
-      cmd.inspect
-    end
-    def call(*args)
-      unless @ip.deleted?
-        current = Thread.current
-        backup_ip = current['callback_ip']
-        current['callback_ip'] = @ip
-        begin
-          ret = @ip.cb_eval(@cmd, *args)
-          fail ret if ret.kind_of?(Exception)
-          ret
-        rescue TkCallbackBreak, TkCallbackContinue => e
-          fail e
-	rescue SecurityError => e
-          # in 'exit', 'exit!', and 'abort' : security error --> delete IP
-          if e.backtrace[0] =~ /^(.+?):(\d+):in `(exit|exit!|abort)'/
-	    @ip.delete
-          elsif @ip.safe?
-	    if @ip.respond_to?(:cb_error)
-              @ip.cb_error(e)
-            else
-              nil # ignore
-            end
-          else
-            fail e
-          end
-        rescue Exception => e
-          fail e if e.message =~ /^TkCallback/
-
-          if @ip.safe?
-	    if @ip.respond_to?(:cb_error)
-              @ip.cb_error(e)
-            else
-              nil # ignore
-            end
-          else
-            fail e
-          end
-        ensure
-          current['callback_ip'] = backup_ip
-        end
-      end
-    end
-  }.freeze
-
-  ######################################
-
-  def _keys2opts(src_keys)
-    return nil if src_keys == nil
-    keys = {}; src_keys.each{|k, v| keys[k.to_s] = v}
-    #keys.collect{|k,v| "-#{k} #{v}"}.join(' ')
-    keys.collect{|k,v| "-#{k} #{TclTkLib._conv_listelement(TkComm::_get_eval_string(v))}"}.join(' ')
-  end
-  private :_keys2opts
-
-  def _check_and_return(thread, exception, wait=0)
-    unless thread
-      unless exception.kind_of?(MultiTkIp_OK)
-        msg = "#{exception.class}: #{exception.message}"
-
-        if @interp.deleted?
-          warn("Warning (#{self}): " + msg)
-          return nil
-        end
-
-        if safe?
-          warn("Warning (#{self}): " + msg) if $DEBUG
-          return nil
-        end
-
-        begin
-          @interp._eval_without_enc(@interp._merge_tklist('bgerror', msg))
-        rescue Exception => e
-          warn("Warning (#{self}): " + msg)
-        end
-      end
-      return nil
-    end
-
-    if wait == 0
-      # no wait
-      Thread.pass
-      if thread.stop?
-        thread.raise exception
-      end
-      return thread
-    end
-
-    # wait to stop the caller thread
-    wait.times{
-      if thread.stop?
-        # ready to send exception
-        thread.raise exception
-        return thread
-      end
-
-      # wait
-      Thread.pass
-    }
-
-    # unexpected error
-    thread.raise RuntimeError, "the thread may not wait for the return value"
-    return thread
-  end
-
-  ######################################
-
-  def set_cb_error(cmd = Proc.new)
-    @cb_error_proc[0] = cmd
-  end
-
-  def cb_error(e)
-    if @cb_error_proc[0].respond_to?(:call)
-      @cb_error_proc[0].call(e)
-    end
-  end
-
-  ######################################
-
-  def set_safe_level(safe)
-    if safe > @safe_level[0]
-      @safe_level[0] = safe
-      @cmd_queue.enq([@system, 'set_safe_level', safe])
-    end
-    @safe_level[0]
-  end
-  def safe_level=(safe)
-    set_safe_level(safe)
-  end
-  def self.set_safe_level(safe)
-    __getip.set_safe_level(safe)
-  end
-  def self.safe_level=(safe)
-    self.set_safe_level(safe)
-  end
-  def safe_level
-    @safe_level[0]
-  end
-  def self.safe_level
-    __getip.safe_level
-  end
-
-  def wait_on_mainloop?
-    @wait_on_mainloop[0]
-  end
-  def wait_on_mainloop=(bool)
-    @wait_on_mainloop[0] = bool
-  end
-
-  def running_mainloop?
-    @wait_on_mainloop[1] > 0
-  end
-
-  def _destroy_slaves_of_slaveIP(ip)
-    unless ip.deleted?
-      # ip._split_tklist(ip._invoke('interp', 'slaves')).each{|name|
-      ip._split_tklist(ip._invoke_without_enc('interp', 'slaves')).each{|name|
-        name = _fromUTF8(name)
-        begin
-          # ip._eval_without_enc("#{name} eval {foreach i [after info] {after cancel $i}}")
-          after_ids = ip._eval_without_enc("#{name} eval {after info}")
-          ip._eval_without_enc("#{name} eval {foreach i {#{after_ids}} {after cancel $i}}")
-        rescue Exception
-        end
-        begin
-          # ip._invoke('interp', 'eval', name, 'destroy', '.')
-          ip._invoke(name, 'eval', 'destroy', '.')
-        rescue Exception
-        end
-
-        # safe_base?
-        if ip._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
-          begin
-            ip._eval_without_enc("::safe::interpDelete #{name}")
-          rescue Exception
-          end
-        end
-=begin
-        if ip._invoke('interp', 'exists', name) == '1'
-          begin
-            ip._invoke(name, 'eval', 'exit')
-          rescue Exception
-          end
-        end
-=end
-        unless ip.deleted?
-          if ip._invoke('interp', 'exists', name) == '1'
-            begin
-              ip._invoke('interp', 'delete', name)
-            rescue Exception
-            end
-          end
-        end
-      }
-    end
-  end
-
-  def _receiver_eval_proc_core(safe_level, thread, cmd, *args)
-    begin
-      #ret = proc{$SAFE = safe_level; cmd.call(*args)}.call
-      #ret = cmd.call(safe_level, *args)
-      normal_ret = false
-      ret = catch(:IRB_EXIT) do  # IRB hack
-        retval = cmd.call(safe_level, *args)
-        normal_ret = true
-        retval
-      end
-      unless normal_ret
-        # catch IRB_EXIT
-        exit(ret)
-      end
-      ret
-    rescue SystemExit => e
-      # delete IP
-      unless @interp.deleted?
-        @slave_ip_tbl.each{|name, subip| 
-          _destroy_slaves_of_slaveIP(subip)
-          begin
-            # subip._eval_without_enc("foreach i [after info] {after cancel $i}")
-            after_ids = subip._eval_without_enc("after info")
-            subip._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-          rescue Exception
-          end
-=begin
-          begin
-            subip._invoke('destroy', '.') unless subip.deleted?
-          rescue Exception
-          end
-=end
-          # safe_base?
-          if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
-            begin
-              @interp._eval_without_enc("::safe::interpDelete #{name}")
-            rescue Exception
-            else
-              next if subip.deleted?
-            end
-          end
-          if subip.respond_to?(:safe_base?) && subip.safe_base? && 
-              !subip.deleted?
-            # do 'exit' to call the delete_hook procedure
-            begin
-              subip._eval_without_enc('exit') 
-            rescue Exception
-            end
-          else
-            begin
-              subip.delete unless subip.deleted?
-            rescue Exception
-            end
-          end
-        }
-
-        begin
-          # @interp._eval_without_enc("foreach i [after info] {after cancel $i}")
-          after_ids = @interp._eval_without_enc("after info")
-          @interp._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-        rescue Exception
-        end
-        begin
-          @interp._invoke('destroy', '.') unless @interp.deleted?
-        rescue Exception
-        end
-        if @safe_base && !@interp.deleted?
-          # do 'exit' to call the delete_hook procedure
-          @interp._eval_without_enc('exit')
-        else
-          @interp.delete unless @interp.deleted?
-        end
-      end
-
-      if e.backtrace[0] =~ /^(.+?):(\d+):in `(exit|exit!|abort)'/
-        _check_and_return(thread, MultiTkIp_OK.new($3 == 'exit'))
-      else
-        _check_and_return(thread, MultiTkIp_OK.new(nil))
-      end
-
-      # if master? && !safe? && allow_ruby_exit?
-      if !@interp.deleted? && master? && !safe? && allow_ruby_exit?
-=begin
-        ObjectSpace.each_object(TclTkIp){|obj|
-          obj.delete unless obj.deleted?
-        }
-=end
-        #exit(e.status)
-        fail e
-      end
-      # break
-
-    rescue SecurityError => e
-      # in 'exit', 'exit!', and 'abort' : security error --> delete IP
-      if e.backtrace[0] =~ /^(.+?):(\d+):in `(exit|exit!|abort)'/
-        ret = ($3 == 'exit')
-        unless @interp.deleted?
-          @slave_ip_tbl.each{|name, subip|
-            _destroy_slaves_of_slaveIP(subip)
-            begin
-              # subip._eval_without_enc("foreach i [after info] {after cancel $i}")
-              after_ids = subip._eval_without_enc("after info")
-              subip._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-            rescue Exception
-            end
-=begin
-            begin
-              subip._invoke('destroy', '.') unless subip.deleted?
-            rescue Exception
-            end
-=end
-            # safe_base?
-            if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
-              begin
-                @interp._eval_without_enc("::safe::interpDelete #{name}")
-              rescue Exception
-              else
-                next if subip.deleted?
-              end
-            end
-            if subip.respond_to?(:safe_base?) && subip.safe_base? && 
-                !subip.deleted?
-              # do 'exit' to call the delete_hook procedure
-              begin
-                subip._eval_without_enc('exit') 
-              rescue Exception
-              end
-            else
-              begin
-                subip.delete unless subip.deleted?
-              rescue Exception
-              end
-            end
-          }
-
-          begin
-            # @interp._eval_without_enc("foreach i [after info] {after cancel $i}")
-            after_ids = @interp._eval_without_enc("after info")
-            @interp._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-          rescue Exception
-          end
-=begin
-          begin
-            @interp._invoke('destroy', '.') unless @interp.deleted?
-          rescue Exception
-          end
-=end
-          if @safe_base && !@interp.deleted?
-            # do 'exit' to call the delete_hook procedure
-            @interp._eval_without_enc('exit')
-          else
-            @interp.delete unless @interp.deleted?
-          end
-        end
-        _check_and_return(thread, MultiTkIp_OK.new(ret))
-        # break
-
-      else
-        # raise security error
-        _check_and_return(thread, e)
-      end
-
-    rescue Exception => e
-      # raise exception
-      begin
-        bt = _toUTF8(e.backtrace.join("\n"))
-        bt.instance_variable_set(:@encoding, 'utf-8')
-      rescue Exception
-        bt = e.backtrace.join("\n")
-      end
-      begin
-        @interp._set_global_var('errorInfo', bt)
-      rescue Exception
-      end
-      _check_and_return(thread, e)
-
-    else
-      # no exception
-      _check_and_return(thread, MultiTkIp_OK.new(ret))
-    end
-  end
-
-  def _receiver_eval_proc(last_thread, safe_level, thread, cmd, *args)
-    if thread
-      Thread.new{
-        last_thread.join if last_thread
-        unless @interp.deleted?
-          _receiver_eval_proc_core(safe_level, thread, cmd, *args)
-        end
-      }
-    else
-      Thread.new{
-        unless  @interp.deleted?
-          _receiver_eval_proc_core(safe_level, thread, cmd, *args)
-        end
-      }
-      last_thread
-    end
-  end
-
-  private :_receiver_eval_proc, :_receiver_eval_proc_core
-
-  def _receiver_mainloop(check_root)
-    if @evloop_thread[0] && @evloop_thread[0].alive?
-      @evloop_thread[0]
-    else
-      @evloop_thread[0] = Thread.new{
-	while !@interp.deleted?
-	  #if check_root
-	  #  inf = @interp._invoke_without_enc('info', 'command', '.')
-	  #  break if !inf.kind_of?(String) || inf != '.'
-	  #end
-          break if check_root && !@interp.has_mainwindow?
-	  sleep 0.5
-	end
-      }
-      @evloop_thread[0]
-    end
-  end
-
-  def _create_receiver_and_watchdog(lvl = $SAFE)
-    lvl = $SAFE if lvl < $SAFE
-
-    # command-procedures receiver
-    receiver = Thread.new(lvl){|safe_level|
-      last_thread = {}
-
-      loop do
-        break if @interp.deleted?
-        thread, cmd, *args = @cmd_queue.deq
-        if thread == @system
-          # control command
-          case cmd
-          when 'set_safe_level'
-            begin
-              safe_level = args[0] if safe_level < args[0] 
-            rescue Exception
-            end
-          when 'call_mainloop'
-            thread = args.shift
-            _check_and_return(thread, 
-                              MultiTkIp_OK.new(_receiver_mainloop(*args)))
-          else
-            # ignore
-          end
-
-        else
-          # procedure
-          last_thread[thread] = _receiver_eval_proc(last_thread[thread], 
-						    safe_level, thread, 
-						    cmd, *args)
-        end
-      end
-    }
-
-    # watchdog of receiver
-    watchdog = Thread.new{
-      begin
-        loop do
-          sleep 1
-          receiver.kill if @interp.deleted?
-          break unless receiver.alive?
-        end
-      rescue Exception
-        # ignore all kind of Exception
-      end
-      # receiver is dead
-      loop do
-        thread, cmd, *args = @cmd_queue.deq
-        next unless thread
-        if thread.alive?
-          if @interp.deleted?
-            thread.raise RuntimeError, 'the interpreter is already deleted'
-          else
-            thread.raise RuntimeError, 
-              'the interpreter no longer receives command procedures'
-          end
-        end
-      end
-    }
-
-    # return threads
-    [receiver, watchdog]
-  end
-  private :_check_and_return, :_create_receiver_and_watchdog
-
-  ######################################
-
-  if self.const_defined? :DEFAULT_MASTER_NAME
-    name = DEFAULT_MASTER_NAME.to_s
-  else
-    name = nil
-  end
-  if self.const_defined?(:DEFAULT_MASTER_OPTS) &&
-      DEFAULT_MASTER_OPTS.kind_of?(Hash)
-    keys = DEFAULT_MASTER_OPTS
-  else
-    keys = {}
-  end
-
-  @@DEFAULT_MASTER = self.allocate
-  @@DEFAULT_MASTER.instance_eval{
-    @tk_windows = {}.taint
-
-    @tk_table_list = [].taint
-
-    @slave_ip_tbl = {}.taint
-
-    @slave_ip_top = {}.taint
-
-    @evloop_thread = [].taint
-
-    unless keys.kind_of? Hash
-      fail ArgumentError, "expecting a Hash object for the 2nd argument"
-    end
-
-    @interp = TclTkIp.new(name, _keys2opts(keys))
-    @ip_name = nil
-
-    @callback_status = [].taint
-
-    @system = Object.new
-
-    @wait_on_mainloop = [true, 0].taint
-
-    @threadgroup  = Thread.current.group
-
-    @safe_base = false
-
-    @safe_level = [$SAFE]
-
-    @cmd_queue = Queue.new
-
-    @cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog(@safe_level[0])
-
-    @threadgroup.add @cmd_receiver
-    @threadgroup.add @receiver_watchdog
-
-    # NOT enclose @threadgroup for @@DEFAULT_MASTER
-
-    @@IP_TABLE[ThreadGroup::Default] = self
-    @@IP_TABLE[@threadgroup] = self
-
-    #################################
-
-    @pseudo_toplevel = [false, nil]
-
-    def self.__pseudo_toplevel
-      Thread.current.group == ThreadGroup::Default && 
-        MultiTkIp.__getip == @@DEFAULT_MASTER &&
-        self.__pseudo_toplevel_evaluable? && @pseudo_toplevel[1]
-    end
-
-    def self.__pseudo_toplevel=(m)
-      unless (Thread.current.group == ThreadGroup::Default && 
-                MultiTkIp.__getip == @@DEFAULT_MASTER)
-        fail SecurityError, "no permission to manipulate"
-      end
-
-      # if m.kind_of?(Module) && m.respond_to?(:pseudo_toplevel_evaluable?)
-      if m.respond_to?(:pseudo_toplevel_evaluable?)
-        @pseudo_toplevel[0] = true
-        @pseudo_toplevel[1] = m
-      else
-        fail ArgumentError, 'fail to set pseudo-toplevel'
-      end
-      self
-    end
-
-    def self.__pseudo_toplevel_evaluable?
-      begin
-        @pseudo_toplevel[0] && @pseudo_toplevel[1].pseudo_toplevel_evaluable?
-      rescue Exception
-        false
-      end
-    end
-
-    def self.__pseudo_toplevel_evaluable=(mode)
-      unless (Thread.current.group == ThreadGroup::Default && 
-                MultiTkIp.__getip == @@DEFAULT_MASTER)
-        fail SecurityError, "no permission to manipulate"
-      end
-
-      @pseudo_toplevel[0] = (mode)? true: false
-    end
-
-    #################################
-
-    @assign_request = Class.new(Exception){
-      def self.new(target, ret)
-        obj = super()
-        obj.target = target
-        obj.ret = ret
-        obj
-      end
-      attr_accessor :target, :ret
-    }
-
-    @assign_thread = Thread.new{
-      loop do
-        begin
-          Thread.stop
-        rescue @assign_request=>req
-          begin
-            req.ret[0] = req.target.instance_eval{
-              @cmd_receiver, @receiver_watchdog = 
-                _create_receiver_and_watchdog(@safe_level[0])
-              @threadgroup.add @cmd_receiver
-              @threadgroup.add @receiver_watchdog
-              @threadgroup.enclose
-              true
-            }
-          rescue Exception=>e
-            begin
-              req.ret[0] = e
-            rescue Exception
-              # ignore
-            end
-          end
-        rescue Exception
-          # ignore
-        end
-      end
-    }
-
-    def self.assign_receiver_and_watchdog(target)
-      ret = [nil]
-      @assign_thread.raise(@assign_request.new(target, ret))
-      while ret[0] == nil
-        unless @assign_thread.alive?
-          raise RuntimeError, 'lost the thread to assign a receiver and a watchdog thread'
-        end
-      end
-      if ret[0].kind_of?(Exception)
-        raise ret[0]
-      else
-        ret[0]
-      end
-    end
-
-    #################################
-
-    @init_ip_env_queue = Queue.new
-    Thread.new{
-      current = Thread.current
-      loop {
-        mtx, ret, table, script = @init_ip_env_queue.deq
-        begin        
-          ret[0] = table.each{|tg, ip| ip._init_ip_env(script) }
-        rescue Exception => e
-          ret[0] = e
-        ensure
-          mtx.unlock
-        end
-      }
-    }
-
-    def self.__init_ip_env__(table, script)
-      ret = []
-      mtx = Mutex.new.lock
-      @init_ip_env_queue.enq([mtx, ret, table, script])
-      mtx.lock
-      if ret[0].kind_of?(Exception)
-        raise ret[0]
-      else
-        ret[0]
-      end
-    end
-
-    #################################
-
-    class << self
-      undef :instance_eval
-    end
-  }
-
-  @@DEFAULT_MASTER.freeze # defend against modification
-
-  ######################################
-
-  def self.inherited(subclass)
-    # trust if on ThreadGroup::Default or @@DEFAULT_MASTER's ThreadGroup
-    if @@IP_TABLE[Thread.current.group] == @@DEFAULT_MASTER
-      begin
-        class << subclass
-          self.methods.each{|m|
-            begin
-              unless m == '__id__' || m == '__send__' || m == 'freeze'
-                undef_method(m)
-              end
-            rescue Exception
-              # ignore all exceptions
-            end
-          }
-        end
-      ensure
-        subclass.freeze
-        fail SecurityError, 
-          "cannot create subclass of MultiTkIp on a untrusted ThreadGroup"
-      end
-    end
-  end
-
-  ######################################
-
-  @@SAFE_OPT_LIST = [
-    'accessPath'.freeze, 
-    'statics'.freeze, 
-    'nested'.freeze, 
-    'deleteHook'.freeze
-  ].freeze
-
-  def _parse_slaveopts(keys)
-    name = nil
-    safe = false
-    safe_opts = {}
-    tk_opts   = {}
-
-    keys.each{|k,v|
-      k_str = k.to_s
-      if k_str == 'name'
-        name = v 
-      elsif k_str == 'safe'
-        safe = v
-      elsif @@SAFE_OPT_LIST.member?(k_str)
-        safe_opts[k_str] = v
-      else
-        tk_opts[k_str] = v
-      end
-    }
-
-    if keys['without_tk'] || keys[:without_tk]
-      [name, safe, safe_opts, nil]
-    else
-      [name, safe, safe_opts, tk_opts]
-    end
-  end
-  private :_parse_slaveopts
-
-  def _create_slave_ip_name
-    name = @@SLAVE_IP_ID.join('')
-    @@SLAVE_IP_ID[1].succ!
-    name.freeze
-  end
-  private :_create_slave_ip_name
-
-  ######################################
-
-  def __check_safetk_optkeys(optkeys)
-    # based on 'safetk.tcl'
-    new_keys = {}
-    optkeys.each{|k,v| new_keys[k.to_s] = v}
-
-    # check 'display'
-    if !new_keys.key?('display')
-      begin
-        #new_keys['display'] = @interp._invoke('winfo screen .')
-        new_keys['display'] = @interp._invoke('winfo', 'screen', '.')
-      rescue
-        if ENV[DISPLAY]
-          new_keys['display'] = ENV[DISPLAY]
-        elsif !new_keys.key?('use')
-          warn "Warning: no screen info or ENV[DISPLAY], so use ':0.0'"
-          new_keys['display'] = ':0.0'
-        end
-      end
-    end
-
-    # check 'use'
-    if new_keys.key?('use')
-      # given 'use'
-      case new_keys['use']
-      when TkWindow
-        new_keys['use'] = TkWinfo.id(new_keys['use'])
-        #assoc_display = @interp._eval('winfo screen .')
-        assoc_display = @interp._invoke('winfo', 'screen', '.')
-      when /^\..*/
-        new_keys['use'] = @interp._invoke('winfo', 'id', new_keys['use'])
-        assoc_display = @interp._invoke('winfo', 'screen', new_keys['use'])
-      else
-        begin
-          pathname = @interp._invoke('winfo', 'pathname', new_keys['use'])
-          assoc_display = @interp._invoke('winfo', 'screen', pathname)
-        rescue
-          assoc_display = new_keys['display']
-        end
-      end
-
-      # match display?
-      if assoc_display != new_keys['display']
-        if optkeys.key?(:display) || optkeys.key?('display')
-          fail RuntimeError, 
-            "conflicting 'display'=>#{new_keys['display']} " + 
-            "and display '#{assoc_display}' on 'use'=>#{new_keys['use']}"
-        else
-          new_keys['display'] = assoc_display
-        end
-      end
-    end
-
-    # return
-    new_keys
-  end
-  private :__check_safetk_optkeys
-
-  def __create_safetk_frame(slave_ip, slave_name, app_name, keys)
-    # display option is used by ::safe::loadTk
-    loadTk_keys = {}
-    loadTk_keys['display'] = keys['display']
-    dup_keys = keys.dup
-
-    # keys for toplevel : allow followings
-    toplevel_keys = {}
-    ['height', 'width', 'background', 'menu'].each{|k|
-      toplevel_keys[k] = dup_keys.delete(k) if dup_keys.key?(k)
-    }
-    toplevel_keys['classname'] = 'SafeTk'
-    toplevel_keys['screen'] = dup_keys.delete('display')
-
-    # other keys used by pack option of container frame
-
-    # create toplevel widget
-    begin
-      top = TkToplevel.new(toplevel_keys)
-    rescue NameError => e
-      fail e unless @interp.safe?
-      fail SecurityError, "unable create toplevel on the safe interpreter"
-    end
-    msg = "Untrusted Ruby/Tk applet (#{slave_name})"
-    if app_name.kind_of?(String)
-      top.title "#{app_name} (#{slave_name})"
-    else
-      top.title msg
-    end
-
-    # procedure to delete slave interpreter
-    slave_delete_proc = proc{
-      unless slave_ip.deleted?
-        #if slave_ip._invoke('info', 'command', '.') != ""
-        #  slave_ip._invoke('destroy', '.')
-        #end
-        #slave_ip.delete
-        slave_ip._eval_without_enc('exit')
-      end
-      begin
-        top.destroy if top.winfo_exist?
-      rescue
-        # ignore
-      end
-    }
-    tag = TkBindTag.new.bind('Destroy', slave_delete_proc)
-
-    top.bindtags = top.bindtags.unshift(tag)
-
-    # create control frame
-    TkFrame.new(top, :bg=>'red', :borderwidth=>3, :relief=>'ridge') {|fc|
-      fc.bindtags = fc.bindtags.unshift(tag)
-
-      TkFrame.new(fc, :bd=>0){|f|
-        TkButton.new(f, 
-                     :text=>'Delete', :bd=>1, :padx=>2, :pady=>0, 
-                     :highlightthickness=>0, :command=>slave_delete_proc
-                     ).pack(:side=>:right, :fill=>:both)
-        f.pack(:side=>:right, :fill=>:both, :expand=>true)
-      }
-
-      TkLabel.new(fc, :text=>msg, :padx=>2, :pady=>0, 
-                  :anchor=>:w).pack(:side=>:left, :fill=>:both, :expand=>true)
-
-      fc.pack(:side=>:bottom, :fill=>:x)
-    }
-
-    # container frame for slave interpreter
-    dup_keys['fill'] = :both  unless dup_keys.key?('fill')
-    dup_keys['expand'] = true unless dup_keys.key?('expand')
-    c = TkFrame.new(top, :container=>true).pack(dup_keys)
-    c.bind('Destroy', proc{top.destroy})
-
-    # return keys
-    loadTk_keys['use'] = TkWinfo.id(c)
-    [loadTk_keys, top.path]
-  end
-  private :__create_safetk_frame
-
-  def __create_safe_slave_obj(safe_opts, app_name, tk_opts)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    # safe interpreter
-    ip_name = _create_slave_ip_name
-    slave_ip = @interp.create_slave(ip_name, true)
-    @slave_ip_tbl[ip_name] = slave_ip
-    def slave_ip.safe_base?
-      true
-    end
-
-    @interp._eval("::safe::interpInit #{ip_name}")
-
-    slave_ip._invoke('set', 'argv0', app_name) if app_name.kind_of?(String)
-
-    if tk_opts
-      tk_opts = __check_safetk_optkeys(tk_opts)
-      if tk_opts.key?('use')
-        @slave_ip_top[ip_name] = ''
-      else
-        tk_opts, top_path = __create_safetk_frame(slave_ip, ip_name, app_name, 
-                                                  tk_opts)
-        @slave_ip_top[ip_name] = top_path
-      end
-      @interp._eval("::safe::loadTk #{ip_name} #{_keys2opts(tk_opts)}")
-    else
-      @slave_ip_top[ip_name] = nil
-    end
-
-    if safe_opts.key?('deleteHook') || safe_opts.key?(:deleteHook)
-      @interp._eval("::safe::interpConfigure #{ip_name} " + 
-                    _keys2opts(safe_opts))
-    else
-      @interp._eval("::safe::interpConfigure #{ip_name} " + 
-                    _keys2opts(safe_opts) + '-deleteHook {' + 
-                    TkComm._get_eval_string(proc{|slave|
-                                              self._default_delete_hook(slave)
-                                            }) + '}')
-    end
-
-    [slave_ip, ip_name]
-  end
-
-  def __create_trusted_slave_obj(name, keys)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    ip_name = _create_slave_ip_name
-    slave_ip = @interp.create_slave(ip_name, false)
-    slave_ip._invoke('set', 'argv0', name) if name.kind_of?(String)
-    slave_ip._invoke('set', 'argv', _keys2opts(keys))
-    @interp._invoke('load', '', 'Tk', ip_name)
-    @slave_ip_tbl[ip_name] = slave_ip
-    [slave_ip, ip_name]
-  end
-
-  ######################################
-
-  def _create_slave_object(keys={})
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    ip = MultiTkIp.new_slave(self, keys={})
-    @slave_ip_tbl[ip.name] = ip
-  end
-
-  ######################################
-
-  def initialize(master, safeip=true, keys={})
-    if $SAFE >= 4
-      fail SecurityError, "cannot create a new interpreter at level #{$SAFE}"
-    end
-
-    if safeip == nil && $SAFE >= 2
-      fail SecurityError, "cannot create a master-ip at level #{$SAFE}"
-    end
-
-    if master.deleted? && safeip == nil
-      fail RuntimeError, "cannot create a slave of a deleted interpreter"
-    end
-
-    if !master.deleted? && !master.master? && master.safe?
-      fail SecurityError, "safe-slave-ip cannot create a new interpreter"
-    end
-
-    if safeip == nil && !master.master?
-      fail SecurityError, "slave-ip cannot create a master-ip"
-    end
-
-    unless keys.kind_of? Hash
-      fail ArgumentError, "expecting a Hash object for the 2nd argument"
-    end
-
-    @tk_windows = {}
-    @tk_table_list = []
-    @slave_ip_tbl = {}
-    @slave_ip_top = {}
-    @cb_error_proc = []
-    @evloop_thread = []
-
-    @tk_windows.taint unless @tk_windows.tainted?
-    @tk_table_list.taint unless @tk_table_list.tainted?
-    @slave_ip_tbl.taint unless @slave_ip_tbl.tainted?
-    @slave_ip_top.taint unless @slave_ip_top.tainted?
-    @cb_error_proc.taint unless @cb_error_proc.tainted?
-    @evloop_thread.taint unless @evloop_thread.tainted?
-
-    @callback_status = []
-
-    name, safe, safe_opts, tk_opts = _parse_slaveopts(keys)
-
-    safe = 4 if safe && !safe.kind_of?(Fixnum)
-
-    @safe_base = false
-
-    if safeip == nil
-      # create master-ip
-      @interp = TclTkIp.new(name, _keys2opts(tk_opts))
-
-      @ip_name = nil
-      if safe
-        safe = $SAFE if safe < $SAFE
-        @safe_level = [safe]
-      else
-        @safe_level = [$SAFE]
-      end
-    else
-      # create slave-ip
-      if safeip || master.safe?
-        @safe_base = true
-        @interp, @ip_name = master.__create_safe_slave_obj(safe_opts, 
-                                                           name, tk_opts)
-        if safe
-          safe = master.safe_level if safe < master.safe_level
-          @safe_level = [safe]
-        else
-          @safe_level = [4]
-        end
-      else
-        @interp, @ip_name = master.__create_trusted_slave_obj(name, tk_opts)
-        if safe
-          safe = master.safe_level if safe < master.safe_level
-          @safe_level = [safe]
-        else
-          @safe_level = [master.safe_level]
-        end
-      end
-      @set_alias_proc = proc{|name| 
-        master._invoke('interp', 'alias', @ip_name, name, '', name)
-      }.freeze
-    end
-
-    @system = Object.new
-
-    @wait_on_mainloop = [true, 0].taint
-    # @wait_on_mainloop = [false, 0].taint
-
-    @threadgroup  = ThreadGroup.new
-
-    @pseudo_toplevel = [false, nil]
-
-    @cmd_queue = Queue.new
-
-=begin
-    @cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog(@safe_level[0])
-
-    @threadgroup.add @cmd_receiver
-    @threadgroup.add @receiver_watchdog
-
-    @threadgroup.enclose
-=end
-    @@DEFAULT_MASTER.assign_receiver_and_watchdog(self)
-
-    @@IP_TABLE[@threadgroup] = self
-    _init_ip_internal(@@INIT_IP_ENV, @@ADD_TK_PROCS)
-    @@TK_TABLE_LIST.size.times{ 
-      (tbl = {}).tainted? || tbl.taint
-      @tk_table_list << tbl
-    }
-
-    class << self
-      undef :instance_eval
-    end
-
-    # dummy call for initialization
-    self.eval_proc{ Tk.tk_call('set', 'tcl_patchLevel') }
-
-    self.freeze  # defend against modification
-  end
-
-  ######################################
-
-  def _default_delete_hook(slave)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @slave_ip_tbl.delete(slave)
-    top = @slave_ip_top.delete(slave)
-    if top.kind_of?(String)
-      # call default hook of safetk.tcl (ignore exceptions)
-      if top == ''
-        begin
-          @interp._eval("::safe::disallowTk #{slave}")
-        rescue
-          warn("Waring: fail to call '::safe::disallowTk'") if $DEBUG
-        end
-      else # toplevel path
-        begin
-          @interp._eval("::safe::tkDelete {} #{top} #{slave}")
-        rescue
-          warn("Waring: fail to call '::safe::tkDelete'") if $DEBUG
-          begin
-            @interp._eval("destroy #{top}")
-          rescue
-            warn("Waring: fail to destroy toplevel") if $DEBUG
-          end
-        end
-      end
-    end
-  end
-
-end
-
-
-# get target IP
-class MultiTkIp
-  def self._ip_id_
-    __getip._ip_id_
-  end
-  def _ip_id_
-    # for RemoteTkIp
-    ''
-  end
-
-  def self.__getip
-    current = Thread.current
-    if TclTkLib.mainloop_thread? != false && current['callback_ip']
-      return current['callback_ip']
-    end
-    if current.group == ThreadGroup::Default
-      @@DEFAULT_MASTER
-    else
-      ip = @@IP_TABLE[current.group]
-      unless ip
-        fail SecurityError, 
-          "cannot call Tk methods on #{Thread.current.inspect}"
-      end
-      ip
-    end
-  end
-end
-
-
-# aliases of constructor
-class << MultiTkIp
-  alias __new new
-  private :__new
-
-
-  def new_master(safe=nil, keys={})
-    if safe.kind_of?(Hash)
-      keys = safe
-    elsif safe.kind_of?(Integer)
-      raise ArgumentError, "unexpected argument(s)" unless keys.kind_of?(Hash)
-      if !keys.key?(:safe) && !keys.key?('safe')
-        keys[:safe] = safe
-      end
-    elsif safe == nil
-      # do nothing
-    else
-      raise ArgumentError, "unexpected argument(s)"
-    end
-
-    ip = __new(__getip, nil, keys)
-    #ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call) if block_given?
-     if block_given?
-       Thread.new{ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call)}
-     end
-    ip
-  end
-
-  alias new new_master
-
-  def new_slave(safe=nil, keys={})
-    if safe.kind_of?(Hash)
-      keys = safe
-    elsif safe.kind_of?(Integer)
-      raise ArgumentError, "unexpected argument(s)" unless keys.kind_of?(Hash)
-      if !keys.key?(:safe) && !keys.key?('safe')
-        keys[:safe] = safe
-      end
-    elsif safe == nil
-      # do nothing
-    else
-      raise ArgumentError, "unexpected argument(s)"
-    end
-
-    ip = __new(__getip, false, keys)
-    # ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call) if block_given?
-    if block_given?
-      Thread.new{ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call)}
-    end
-    ip
-  end
-  alias new_trusted_slave new_slave
-
-  def new_safe_slave(safe=4, keys={})
-    if safe.kind_of?(Hash)
-      keys = safe
-    elsif safe.kind_of?(Integer)
-      raise ArgumentError, "unexpected argument(s)" unless keys.kind_of?(Hash)
-      if !keys.key?(:safe) && !keys.key?('safe')
-        keys[:safe] = safe
-      end
-    else
-      raise ArgumentError, "unexpected argument(s)"
-    end
-
-    ip = __new(__getip, true, keys)
-    # ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call) if block_given?
-    if block_given?
-      Thread.new{ip.eval_proc(proc{$SAFE=ip.safe_level; Proc.new}.call)}
-    end
-    ip
-  end
-  alias new_safeTk new_safe_slave
-end
-
-
-# get info
-class MultiTkIp
-  def inspect
-    s = self.to_s.chop!
-    if self.manipulable?
-      if master?
-        if @interp.deleted?
-          s << ':deleted-master'
-        else
-          s << ':master'
-        end
-      else
-        if @interp.deleted?
-          s << ':deleted-slave'
-        elsif @interp.safe?
-          s << ':safe-slave'
-        else
-          s << ':trusted-slave'
-        end
-      end
-    end
-    s << '>'
-  end
-
-  def master?
-    if @ip_name
-      false
-    else
-      true
-    end
-  end
-  def self.master?
-    __getip.master?
-  end
-
-  def slave?
-    not master?
-  end
-  def self.slave?
-    not self.master?
-  end
-
-  def alive?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    begin
-      return false unless @cmd_receiver.alive?
-      return false if @interp.deleted?
-      return false if @interp._invoke('interp', 'exists', '') == '0'
-    rescue Exception
-      return false
-    end
-    true
-  end
-  def self.alive?
-    __getip.alive?
-  end
-
-  def path
-    @ip_name || ''
-  end
-  def self.path
-    __getip.path
-  end
-  def ip_name
-    @ip_name || ''
-  end
-  def self.ip_name
-    __getip.ip_name
-  end
-  def to_eval
-    @ip_name || ''
-  end
-  def self.to_eval
-    __getip.to_eval
-  end
-
-  def slaves(all = false)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp','slaves').split.map!{|name| 
-      if @slave_ip_tbl.key?(name)
-        @slave_ip_tbl[name]
-      elsif all
-        name
-      else
-        nil
-      end
-    }.compact!
-  end
-  def self.slaves(all = false)
-    __getip.slaves(all)
-  end
-
-  def manipulable?
-    return true if (Thread.current.group == ThreadGroup::Default)
-    ip = MultiTkIp.__getip
-    (ip == self) || ip._is_master_of?(@interp)
-  end
-  def self.manipulable?
-    true
-  end
-
-  def _is_master_of?(tcltkip_obj)
-    tcltkip_obj.slave_of?(@interp)
-  end
-  protected :_is_master_of?
-end
-
-
-# instance methods to treat tables
-class MultiTkIp
-  def _tk_cmd_tbl
-    tbl = {}
-    MultiTkIp.tk_cmd_tbl.each{|id, ent| tbl[id] = ent if ent.ip == self }
-    tbl
-  end
-
-  def _tk_windows
-    @tk_windows
-  end
-
-  def _tk_table_list
-    @tk_table_list
-  end
-
-  def _add_new_tables
-    (@@TK_TABLE_LIST.size - @tk_table_list.size).times{ 
-      (tbl = {}).tainted? || tbl.taint
-      @tk_table_list << tbl
-    }
-  end
-
-  def _init_ip_env(script)
-    self.eval_proc{script.call(self)}
-  end
-
-  def _add_tk_procs(name, args, body)
-    return if slave?
-    @interp._invoke('proc', name, args, body) if args && body
-    @interp._invoke('interp', 'slaves').split.each{|slave|
-      @interp._invoke('interp', 'alias', slave, name, '', name)
-    }
-  end
-
-  def _remove_tk_procs(*names)
-    return if slave?
-    names.each{|name|
-      name = name.to_s
-      @interp._invoke('rename', name, '')
-      @interp._invoke('interp', 'slaves').split.each{|slave|
-        @interp._invoke('interp', 'alias', slave, name, '') rescue nil
-      }
-    }
-  end
-
-  def _init_ip_internal(init_ip_env, add_tk_procs)
-    #init_ip_env.each{|script| self.eval_proc{script.call(self)}}
-    init_ip_env.each{|script| self._init_ip_env(script)}
-    add_tk_procs.each{|name, args, body| 
-      if master?
-        @interp._invoke('proc', name, args, body) if args && body
-      else
-        @set_alias_proc.call(name)
-      end
-    }
-  end
-end
-
-
-# class methods to treat tables
-class MultiTkIp
-  def self.tk_cmd_tbl
-    @@TK_CMD_TBL
-  end
-  def self.tk_windows
-    __getip._tk_windows
-  end
-  def self.tk_object_table(id)
-    __getip._tk_table_list[id]
-  end
-  def self.create_table
-    if __getip.slave? 
-      begin
-        raise SecurityError, "slave-IP has no permission creating a new table"
-      rescue SecurityError => e
-        #p e.backtrace
-        # Is called on a Ruby/Tk library?
-        caller_info = e.backtrace[1]
-        if caller_info =~ %r{^#{MultiTkIp::BASE_DIR}/(tk|tkextlib)/[^:]+\.rb:}
-          # Probably, caller is a Ruby/Tk library  -->  allow creating
-        else
-          raise e
-        end
-      end
-    end
-
-    id = @@TK_TABLE_LIST.size
-    obj = Object.new
-    @@TK_TABLE_LIST << obj
-    obj.instance_eval <<-EOD
-      def self.method_missing(m, *args)
-         MultiTkIp.tk_object_table(#{id}).__send__(m, *args)
-      end
-    EOD
-    obj.freeze
-    @@IP_TABLE.each{|tg, ip| ip._add_new_tables }
-    return obj
-  end
-
-  def self.init_ip_env(script = Proc.new)
-    @@INIT_IP_ENV << script
-    if __getip.slave?
-      begin
-        raise SecurityError, "slave-IP has no permission initializing IP env"
-      rescue SecurityError => e
-        #p e.backtrace
-        # Is called on a Ruby/Tk library?
-        caller_info = e.backtrace[1]
-        if caller_info =~ %r{^#{MultiTkIp::BASE_DIR}/(tk|tkextlib)/[^:]+\.rb:}
-          # Probably, caller is a Ruby/Tk library  -->  allow creating
-        else
-          raise e
-        end
-      end
-    end
-
-    # @@IP_TABLE.each{|tg, ip| 
-    #   ip._init_ip_env(script)
-    # }
-    @@DEFAULT_MASTER.__init_ip_env__(@@IP_TABLE, script)
-  end
-
-  def self.add_tk_procs(name, args=nil, body=nil)
-    if name.kind_of?(Array) # => an array of [name, args, body]
-      name.each{|param| self.add_tk_procs(*param)}
-    else
-      name = name.to_s
-      @@ADD_TK_PROCS << [name, args, body]
-      @@IP_TABLE.each{|tg, ip| 
-        ip._add_tk_procs(name, args, body)
-      }
-    end
-  end
-
-  def self.remove_tk_procs(*names)
-    names.each{|name|
-      name = name.to_s
-      @@ADD_TK_PROCS.delete_if{|elem| 
-        elem.kind_of?(Array) && elem[0].to_s == name
-      }
-    }
-    @@IP_TABLE.each{|tg, ip| 
-      ip._remove_tk_procs(*names)
-    }
-  end
-
-  def self.init_ip_internal
-    __getip._init_ip_internal(@@INIT_IP_ENV, @@ADD_TK_PROCS)
-  end
-end
-
-
-# for callback operation
-class MultiTkIp
-  def self.cb_entry_class
-    @@CB_ENTRY_CLASS
-  end
-  def self.get_cb_entry(cmd)
-    @@CB_ENTRY_CLASS.new(__getip, cmd).freeze
-  end
-
-=begin
-  def cb_eval(cmd, *args)
-    #self.eval_callback{ TkComm._get_eval_string(TkUtil.eval_cmd(cmd, *args)) }
-    #ret = self.eval_callback{ TkComm._get_eval_string(TkUtil.eval_cmd(cmd, *args)) }
-    ret = self.eval_callback(*args){|safe, *params|
-      $SAFE=safe if $SAFE < safe
-      TkComm._get_eval_string(TkUtil.eval_cmd(cmd, *params))
-    }
-    if ret.kind_of?(Exception)
-      raise ret
-    end
-    ret
-  end
-=end
-  def cb_eval(cmd, *args)
-    self.eval_callback(*args){|safe, *params|
-      $SAFE=safe if $SAFE < safe
-      # TkUtil.eval_cmd(cmd, *params)
-      TkComm._get_eval_string(TkUtil.eval_cmd(cmd, *params))
-    }
-  end
-=begin
-  def cb_eval(cmd, *args)
-    @callback_status[0] ||= TkVariable.new
-    @callback_status[1] ||= TkVariable.new
-    st, val = @callback_status
-    th = Thread.new{
-      self.eval_callback(*args){|safe, *params|
-        #p [status, val, safe, *params]
-        $SAFE=safe if $SAFE < safe
-        begin
-          TkComm._get_eval_string(TkUtil.eval_cmd(cmd, *params))
-        rescue TkCallbackContinue
-          st.value = 4
-        rescue TkCallbackBreak
-          st.value = 3
-        rescue TkCallbackReturn
-          st.value = 2
-        rescue Exception => e
-          val.value = e.message
-          st.value = 1
-        else
-          st.value = 0
-        end
-      }
-    }
-    begin
-      st.wait
-      status = st.numeric
-      retval = val.value
-    rescue => e
-      fail e
-    end
-
-    if status == 1
-      fail RuntimeError, retval
-    elsif status == 2
-      fail TkCallbackReturn, "Tk callback returns 'return' status"
-    elsif status == 3
-      fail TkCallbackBreak, "Tk callback returns 'break' status"
-    elsif status == 4
-      fail TkCallbackContinue, "Tk callback returns 'continue' status"
-    else
-      ''
-    end
-  end
-=end
-
-end
-
-# pseudo-toplevel operation support
-class MultiTkIp
-  # instance method
-  def __pseudo_toplevel
-    ip = MultiTkIp.__getip
-    (ip == @@DEFAULT_MASTER || ip == self) &&
-      self.__pseudo_toplevel_evaluable? && @pseudo_toplevel[1]
-  end
-
-  def __pseudo_toplevel=(m)
-    unless (Thread.current.group == ThreadGroup::Default && 
-              MultiTkIp.__getip == @@DEFAULT_MASTER)
-      fail SecurityError, "no permission to manipulate"
-    end
-
-    # if m.kind_of?(Module) && m.respond_to?(:pseudo_toplevel_evaluable?)
-    if m.respond_to?(:pseudo_toplevel_evaluable?)
-      @pseudo_toplevel[0] = true
-      @pseudo_toplevel[1] = m
-    else
-      fail ArgumentError, 'fail to set pseudo-toplevel'
-    end
-    self
-  end
-
-  def __pseudo_toplevel_evaluable?
-    begin
-      @pseudo_toplevel[0] && @pseudo_toplevel[1].pseudo_toplevel_evaluable?
-    rescue Exception
-      false
-    end
-  end
-
-  def __pseudo_toplevel_evaluable=(mode)
-    unless (Thread.current.group == ThreadGroup::Default && 
-              MultiTkIp.__getip == @@DEFAULT_MASTER)
-      fail SecurityError, "no permission to manipulate"
-    end
-
-    @pseudo_toplevel[0] = (mode)? true: false
-  end
-end
-
-# evaluate a procedure on the proper interpreter
-class MultiTkIp
-  # instance method
-  def eval_proc_core(req_val, cmd, *args)
-    # check
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    unless cmd.kind_of?(Proc) || cmd.kind_of?(Method)
-      raise RuntimeError, "A Proc/Method object is expected for the 'cmd' argument"
-    end
-
-    # on IP thread
-    if @cmd_receiver == Thread.current || 
-        (!req_val && TclTkLib.mainloop_thread? != false) # callback
-      begin
-        ret = cmd.call(safe_level, *args)
-      rescue SystemExit => e
-        # exit IP
-        warn("Warning: "+ $! + " on " + self.inspect) if $DEBUG
-        begin
-          self._eval_without_enc('exit')
-        rescue Exception
-        end
-        self.delete
-        ret = nil
-      rescue Exception => e
-        if $DEBUG
-          warn("Warning: " + e.class.inspect + 
-               ((e.message.length > 0)? ' "' + e.message + '"': '') +  
-               " on " + self.inspect)
-        end
-=begin
-        begin
-          bt = _toUTF8(e.backtrace.join("\n"))
-          bt.instance_variable_set(:@encoding, 'utf-8')
-        rescue Exception
-          bt = e.backtrace.join("\n")
-        end
-        begin
-          @interp._set_global_var('errorInfo', bt)
-        rescue Exception
-        end
-=end
-        ret = e
-      end
-      return ret
-    end
-
-    # send cmd to the proc-queue
-    unless req_val
-      begin
-        @cmd_queue.enq([nil, cmd, *args])
-      rescue Exception => e
-        # ignore
-        if $DEBUG
-          warn("Warning: " + e.class.inspect + 
-               ((e.message.length > 0)? ' "' + e.message + '"': '') +  
-               " on " + self.inspect) 
-        end
-        return e
-      end
-      return nil
-    end
-
-    # send and get return value by exception
-    begin
-      @cmd_queue.enq([Thread.current, cmd, *args])
-      Thread.stop
-    rescue MultiTkIp_OK => ret
-      # return value
-      return ret.value
-    rescue SystemExit => e
-      # exit IP
-      warn("Warning: " + $! + " on " + self.inspect) if $DEBUG
-      begin
-        self._eval_without_enc('exit')
-      rescue Exception
-      end
-      if !self.deleted? && !safe? && allow_ruby_exit?
-        self.delete
-        fail e
-      else
-        self.delete
-      end
-    rescue Exception => e
-      if $DEBUG
-        warn("Warning: " + e.class.inspect + 
-             ((e.message.length > 0)? ' "' + e.message + '"': '') +  
-             " on " + self.inspect) 
-      end
-      return e
-    end
-    return nil
-  end
-  private :eval_proc_core
-
-  def eval_callback(*args)
-    if block_given?
-      cmd = Proc.new
-    else
-      cmd = args.shift
-    end
-    current = Thread.current
-    backup_ip = current['callback_ip']
-    current['callback_ip'] = self
-    begin
-      eval_proc_core(false, cmd, *args)
-    ensure
-      current['callback_ip'] = backup_ip
-    end
-  end
-
-  def eval_proc(*args)
-    # The scope of the eval-block of 'eval_proc' method is different from 
-    # the external. If you want to pass local values to the eval-block, 
-    # use arguments of eval_proc method. They are passed to block-arguments.
-    if block_given?
-      cmd = Proc.new
-    else
-      unless (cmd = args.shift)
-        fail ArgumentError, "A Proc or Method object is expected for 1st argument"
-      end
-    end
-    if TclTkLib.mainloop_thread? == true
-      # call from eventloop
-      current = Thread.current
-      backup_ip = current['callback_ip']
-      current['callback_ip'] = self
-      begin
-        eval_proc_core(false, 
-	               proc{|safe, *params|
-		         $SAFE=safe if $SAFE < safe
-                         cmd.call(*params)
-                       }, *args)
-      ensure
-        current['callback_ip'] = backup_ip
-      end
-    else
-      eval_proc_core(true, 
-                     proc{|safe, *params| 
-                       $SAFE=safe if $SAFE < safe
-                       Thread.new(*params, &cmd).value
-                     },
-                     *args)
-    end
-  end
-  alias call eval_proc
-
-  def bg_eval_proc(*args)
-    if block_given?
-      cmd = Proc.new
-    else
-      unless (cmd = args.shift)
-        fail ArgumentError, "A Proc or Method object is expected for 1st argument"
-      end
-    end
-    Thread.new{
-      eval_proc(cmd, *args)
-=begin
-      eval_proc_core(false, 
-                     proc{|safe, *params| 
-                       $SAFE=safe if $SAFE < safe
-                       Thread.new(*params, &cmd).value
-                     },
-                     safe_level, *args)
-=end
-    }
-  end
-  alias background_eval_proc bg_eval_proc
-  alias thread_eval_proc bg_eval_proc
-  alias bg_call bg_eval_proc
-  alias background_call bg_eval_proc
-
-  def eval_string(cmd, *eval_args)
-    # cmd string ==> proc
-    unless cmd.kind_of?(String)
-      raise RuntimeError, "A String object is expected for the 'cmd' argument"
-    end
-
-    eval_proc_core(true, 
-                   proc{|safe| 
-                     Kernel.eval("$SAFE=#{safe} if $SAFE < #{safe};" << cmd,
-                                 *eval_args)
-                   })
-  end
-  alias eval_str eval_string
-
-  def bg_eval_string(cmd, *eval_args)
-    # cmd string ==> proc
-    unless cmd.kind_of?(String)
-      raise RuntimeError, "A String object is expected for the 'cmd' argument"
-    end
-    Thread.new{
-      eval_proc_core(true, 
-                     proc{|safe| 
-                       Kernel.eval("$SAFE=#{safe} if $SAFE < #{safe};" << cmd,
-                                   *eval_args)
-                     })
-    }
-  end
-  alias background_eval_string bg_eval_string
-  alias bg_eval_str bg_eval_string
-  alias background_eval_str bg_eval_string
-
-  def eval(*args, &blk)
-    if block_given?
-      eval_proc(*args, &blk)
-    elsif args[0]
-      if args[0].respond_to?(:call)
-        eval_proc(*args)
-      else
-        eval_string(*args)
-      end
-    else
-      fail ArgumentError, "no argument to eval"
-    end
-  end
-
-  def bg_eval(*args, &blk)
-    if block_given?
-      bg_eval_proc(*args, &blk)
-    elsif args[0]
-      if args[0].respond_to?(:call)
-        bg_eval_proc(*args)
-      else
-        bg_eval_string(*args)
-      end
-    else
-      fail ArgumentError, "no argument to eval"
-    end
-  end
-  alias background_eval bg_eval
-end
-
-class << MultiTkIp
-  # class method
-  def eval_proc(*args, &blk)
-    # class ==> interp object
-    __getip.eval_proc(*args, &blk)
-  end
-  alias call eval_proc
-
-  def bg_eval_proc(*args, &blk)
-    # class ==> interp object
-    __getip.bg_eval_proc(*args, &blk)
-  end
-  alias background_eval_proc bg_eval_proc
-  alias thread_eval_proc bg_eval_proc
-  alias bg_call bg_eval_proc
-  alias background_call bg_eval_proc
-
-  def eval_string(cmd, *eval_args)
-    # class ==> interp object
-    __getip.eval_string(cmd, *eval_args)
-  end
-  alias eval_str eval_string
-
-  def bg_eval_string(cmd, *eval_args)
-    # class ==> interp object
-    __getip.bg_eval_string(cmd, *eval_args)
-  end
-  alias background_eval_string bg_eval_string
-  alias bg_eval_str bg_eval_string
-  alias background_eval_str bg_eval_string
-
-  def eval(*args, &blk)
-    # class ==> interp object
-    __getip.eval(*args, &blk)
-  end
-  def bg_eval(*args, &blk)
-    # class ==> interp object
-    __getip.bg_eval(*args, &blk)
-  end
-  alias background_eval bg_eval
-end
-
-
-# event loop
-# all master/slave IPs are controled by only one event-loop
-class << MultiTkIp
-  def mainloop(check_root = true)
-    __getip.mainloop(check_root)
-  end
-  def mainloop_watchdog(check_root = true)
-    __getip.mainloop_watchdog(check_root)
-  end
-  def do_one_event(flag = TclTkLib::EventFlag::ALL)
-    __getip.do_one_event(flag)
-  end
-  def mainloop_abort_on_exception
-    # __getip.mainloop_abort_on_exception
-    TclTkLib.mainloop_abort_on_exception
-  end
-  def mainloop_abort_on_exception=(mode)
-    # __getip.mainloop_abort_on_exception=(mode)
-    TclTkLib.mainloop_abort_on_exception=(mode)
-  end
-  def set_eventloop_tick(tick)
-    __getip.set_eventloop_tick(tick)
-  end
-  def get_eventloop_tick
-    __getip.get_eventloop_tick
-  end
-  def set_no_event_wait(tick)
-    __getip.set_no_event_wait(tick)
-  end
-  def get_no_event_wait
-    __getip.get_no_event_wait
-  end
-  def set_eventloop_weight(loop_max, no_event_tick)
-    __getip.set_eventloop_weight(loop_max, no_event_tick)
-  end
-  def get_eventloop_weight
-    __getip.get_eventloop_weight
-  end
-end
-
-# class methods to delegate to TclTkIp
-class << MultiTkIp
-  def method_missing(id, *args)
-    __getip.__send__(id, *args)
-  end
-
-  def make_safe
-    __getip.make_safe
-  end
-
-  def safe?
-    __getip.safe?
-  end
-
-  def safe_base?
-    begin
-      __getip.safe_base?
-    rescue
-      false
-    end
-  end
-
-  def allow_ruby_exit?
-    __getip.allow_ruby_exit?
-  end
-
-  def allow_ruby_exit= (mode)
-    __getip.allow_ruby_exit = mode
-  end
-
-  def delete
-    __getip.delete
-  end
-
-  def deleted?
-    __getip.deleted?
-  end
-
-  def has_mainwindow?
-    __getip.has_mainwindow?
-  end
-
-  def invalid_namespace?
-    __getip.invalid_namespace?
-  end
-
-  def abort(msg = nil)
-    __getip.abort(msg)
-  end
-
-  def exit(st = true)
-    __getip.exit(st)
-  end
-
-  def exit!(st = false)
-    __getip.exit!(st)
-  end
-
-  def restart(app_name = nil, keys = {})
-    init_ip_internal
-
-    __getip._invoke('set', 'argv0', app_name) if app_name
-    if keys.kind_of?(Hash)
-      __getip._invoke('set', 'argv', _keys2opts(keys))
-    end
-
-    __getip.restart
-  end
-
-  def _eval(str)
-    __getip._eval(str)
-  end
-
-  def _invoke(*args)
-    __getip._invoke(*args)
-  end
-
-  def _eval_without_enc(str)
-    __getip._eval_without_enc(str)
-  end
-
-  def _invoke_without_enc(*args)
-    __getip._invoke_without_enc(*args)
-  end
-
-  def _eval_with_enc(str)
-    __getip._eval_with_enc(str)
-  end
-
-  def _invoke_with_enc(*args)
-    __getip._invoke_with_enc(*args)
-  end
-
-  def _toUTF8(str, encoding=nil)
-    __getip._toUTF8(str, encoding)
-  end
-
-  def _fromUTF8(str, encoding=nil)
-    __getip._fromUTF8(str, encoding)
-  end
-
-  def _thread_vwait(var)
-    __getip._thread_vwait(var)
-  end
-
-  def _thread_tkwait(mode, target)
-    __getip._thread_tkwait(mode, target)
-  end
-
-  def _return_value
-    __getip._return_value
-  end
-
-  def _get_variable(var, flag)
-    __getip._get_variable(var, flag)
-  end
-  def _get_variable2(var, idx, flag)
-    __getip._get_variable2(var, idx, flag)
-  end
-  def _set_variable(var, value, flag)
-    __getip._set_variable(var, value, flag)
-  end
-  def _set_variable2(var, idx, value, flag)
-    __getip._set_variable2(var, idx, value, flag)
-  end
-  def _unset_variable(var, flag)
-    __getip._unset_variable(var, flag)
-  end
-  def _unset_variable2(var, idx, flag)
-    __getip._unset_variable2(var, idx, flag)
-  end
-
-  def _get_global_var(var)
-    __getip._get_global_var(var)
-  end
-  def _get_global_var2(var, idx)
-    __getip._get_global_var2(var, idx)
-  end
-  def _set_global_var(var, value)
-    __getip._set_global_var(var, value)
-  end
-  def _set_global_var2(var, idx, value)
-    __getip._set_global_var2(var, idx, value)
-  end
-  def _unset_global_var(var)
-    __getip._unset_global_var(var)
-  end
-  def _unset_global_var2(var, idx)
-    __getip._unset_global_var2(var, idx)
-  end
-
-  def _make_menu_embeddable(menu_path)
-    __getip._make_menu_embeddable(menu_path)
-  end
-
-  def _split_tklist(str)
-    __getip._split_tklist(str)
-  end
-  def _merge_tklist(*args)
-    __getip._merge_tklist(*args)
-  end
-  def _conv_listelement(arg)
-    __getip._conv_listelement(arg)
-  end
-
-  def _create_console
-    __getip._create_console
-  end
-end
-
-
-# wrap methods on TclTkLib : not permit calling TclTkLib module methods
-class << TclTkLib
-  def mainloop(check_root = true)
-    MultiTkIp.mainloop(check_root)
-  end
-  def mainloop_watchdog(check_root = true)
-    MultiTkIp.mainloop_watchdog(check_root)
-  end
-  def do_one_event(flag = TclTkLib::EventFlag::ALL)
-    MultiTkIp.do_one_event(flag)
-  end
-  #def mainloop_abort_on_exception
-  #  MultiTkIp.mainloop_abort_on_exception
-  #end
-  #def mainloop_abort_on_exception=(mode)
-  #  MultiTkIp.mainloop_abort_on_exception=(mode)
-  #end
-  def set_eventloop_tick(tick)
-    MultiTkIp.set_eventloop_tick(tick)
-  end
-  def get_eventloop_tick
-    MultiTkIp.get_eventloop_tick
-  end
-  def set_no_event_wait(tick)
-    MultiTkIp.set_no_event_wait(tick)
-  end
-  def get_no_event_wait
-    MultiTkIp.get_no_event_wait
-  end
-  def set_eventloop_weight(loop_max, no_event_tick)
-    MultiTkIp.set_eventloop_weight(loop_max, no_event_tick)
-  end
-  def get_eventloop_weight
-    MultiTkIp.get_eventloop_weight
-  end
-  def restart(*args)
-    MultiTkIp.restart(*args)
-  end
-
-  def _merge_tklist(*args)
-    MultiTkIp._merge_tklist(*args)
-  end
-  def _conv_listelement(arg)
-    MultiTkIp._conv_listelement(arg)
-  end
-end
-
-
-# depend on TclTkIp
-class MultiTkIp
-  def mainloop(check_root = true, restart_on_dead = true)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    #return self if self.slave?
-    #return self if self != @@DEFAULT_MASTER
-    if self != @@DEFAULT_MASTER
-      if @wait_on_mainloop[0]
-        begin
-          @wait_on_mainloop[1] += 1
-          if $SAFE >= 4
-	    _receiver_mainloop(check_root).join
-          else
-            @cmd_queue.enq([@system, 'call_mainloop', 
-                            Thread.current, check_root])
-            Thread.stop
-          end
-        rescue MultiTkIp_OK => ret
-          # return value
-          if ret.value.kind_of?(Thread)
-            return ret.value.value
-          else
-            return ret.value
-          end
-        rescue SystemExit => e
-          # exit IP
-          warn("Warning: " + $! + " on " + self.inspect) if $DEBUG
-          begin
-            self._eval_without_enc('exit')
-          rescue Exception
-          end
-          self.delete
-        rescue StandardError => e
-          if $DEBUG
-            warn("Warning: " + e.class.inspect + 
-                 ((e.message.length > 0)? ' "' + e.message + '"': '') +  
-                 " on " + self.inspect) 
-          end
-          return e
-        rescue Exception => e
-	  return e
-        ensure
-          @wait_on_mainloop[1] -= 1
-        end
-      end
-      return
-    end
-
-    unless restart_on_dead
-      @wait_on_mainloop[1] += 1
-=begin
-      begin
-        @interp.mainloop(check_root)
-      rescue StandardError => e
-        if $DEBUG
-          warn("Warning: " + e.class.inspect + 
-               ((e.message.length > 0)? ' "' + e.message + '"': '') +  
-               " on " + self.inspect) 
-        end
-      end
-=end
-      begin
-	@interp.mainloop(check_root)
-      ensure
-	@wait_on_mainloop[1] -= 1
-      end
-    else
-      loop do
-        break unless self.alive?
-        if check_root
-          begin
-            break if TclTkLib.num_of_mainwindows == 0
-          rescue StandardError
-            break
-          end
-        end
-        break if @interp.deleted?
-        begin
-	  @wait_on_mainloop[1] += 1
-          @interp.mainloop(check_root)
-        rescue StandardError => e
-          if TclTkLib.mainloop_abort_on_exception != nil
-            #STDERR.print("Warning: Tk mainloop receives ", $!.class.inspect, 
-            #             " exception (ignore) : ", $!.message, "\n");
-            if $DEBUG
-              warn("Warning: Tk mainloop receives " << e.class.inspect <<
-                   " exception (ignore) : " << e.message);
-            end
-          end
-          #raise e
-        rescue Exception => e
-=begin
-          if TclTkLib.mainloop_abort_on_exception != nil
-            #STDERR.print("Warning: Tk mainloop receives ", $!.class.inspect, 
-            #             " exception (ignore) : ", $!.message, "\n");
-            if $DEBUG
-              warn("Warning: Tk mainloop receives " << e.class.inspect <<
-                   " exception (ignore) : " << e.message);
-            end
-          end
-=end
-          raise e
-        ensure
-          @wait_on_mainloop[1] -= 1
-          Thread.pass  # avoid eventloop conflict
-        end
-      end
-    end
-    self
-  end
-
-  def make_safe
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.make_safe
-  end
-
-  def safe?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.safe?
-  end
-
-  def safe_base?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @safe_base
-  end
-
-  def allow_ruby_exit?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.allow_ruby_exit?
-  end
-
-  def allow_ruby_exit= (mode)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.allow_ruby_exit = mode
-  end
-
-  def delete
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @slave_ip_tbl.each{|name, subip|
-      _destroy_slaves_of_slaveIP(subip)
-=begin
-      begin
-        subip._invoke('destroy', '.') unless subip.deleted?
-      rescue Exception
-      end
-=end
-      begin
-        # subip._eval_without_enc("foreach i [after info] {after cancel $i}")
-	unless subip.deleted?
-	  after_ids = subip._eval_without_enc("after info")
-	  subip._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-	end
-      rescue Exception
-      end
-
-      # safe_base?
-      if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
-        begin
-          @interp._eval_without_enc("::safe::interpDelete #{name}")
-        rescue Exception
-        else
-          next if subip.deleted?
-        end
-      end
-      if subip.respond_to?(:safe_base?) && subip.safe_base? && 
-          !subip.deleted?
-        # do 'exit' to call the delete_hook procedure
-        begin
-          subip._eval_without_enc('exit') 
-        rescue Exception
-        end
-      else
-        begin
-          subip.delete unless subip.deleted?
-        rescue Exception
-        end
-      end
-    }
-
-    begin
-      # @interp._eval_without_enc("foreach i [after info] {after cancel $i}")
-      after_ids = @interp._eval_without_enc("after info")
-      @interp._eval_without_enc("foreach i {#{after_ids}} {after cancel $i}")
-    rescue Exception
-    end
-
-    begin
-      @interp._invoke('destroy', '.') unless @interp.deleted?
-    rescue Exception
-    end
-
-    if @safe_base && !@interp.deleted?
-      # do 'exit' to call the delete_hook procedure
-      @interp._eval_without_enc('exit')
-    end
-    @interp.delete
-    self
-  end
-
-  def deleted?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.deleted?
-  end
-
-  def has_mainwindow?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.has_mainwindow?
-  end
-
-  def invalid_namespace?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.invalid_namespace?
-  end
-
-  def abort(msg = nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if master? && !safe? && allow_ruby_exit?
-      if msg
-        Kernel.abort(msg)
-      else
-        Kernel.abort
-      end
-    else
-      # ignore msg
-      delete
-      1
-    end
-  end
-
-  def exit(st = true)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if master? && !safe? && allow_ruby_exit?
-      Kernel.exit(st)
-    else
-      delete
-      st
-    end
-  end
-
-  def exit!(st = false)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if master? && !safe? && allow_ruby_exit?
-      Kernel.exit!(st)
-    else
-      delete
-      st
-    end
-  end
-
-  def restart(app_name = nil, keys = {})
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    _init_ip_internal(@@INIT_IP_ENV, @@ADD_TK_PROCS)
-
-    @interp._invoke('set', 'argv0', app_name) if app_name
-    if keys.kind_of?(Hash)
-      @interp._invoke('set', 'argv', _keys2opts(keys))
-    end
-
-    @interp.restart
-  end
-
-  def __eval(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.__eval(str)
-  end
-
-  def __invoke(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.__invoke(*args)
-  end
-
-  def _eval(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._eval(str)
-  end
-
-  def _invoke(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke(*args)
-  end
-
-  def _eval_without_enc(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._eval_without_enc(str)
-  end
-
-  def _invoke_without_enc(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke_without_enc(*args)
-  end
-
-  def _eval_with_enc(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._eval_with_enc(str)
-  end
-
-  def _invoke_with_enc(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke_with_enc(*args)
-  end
-
-  def _toUTF8(str, encoding=nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._toUTF8(str, encoding)
-  end
-
-  def _fromUTF8(str, encoding=nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._fromUTF8(str, encoding)
-  end
-
-  def _thread_vwait(var)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._thread_vwait(var)
-  end
-
-  def _thread_tkwait(mode, target)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._thread_tkwait(mode, target)
-  end
-
-  def _return_value
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._return_value
-  end
-
-  def _get_variable(var, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._get_variable(var, flag)
-  end
-  def _get_variable2(var, idx, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._get_variable2(var, idx, flag)
-  end
-  def _set_variable(var, value, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._set_variable(var, value, flag)
-  end
-  def _set_variable2(var, idx, value, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._set_variable2(var, idx, value, flag)
-  end
-  def _unset_variable(var, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._unset_variable(var, flag)
-  end
-  def _unset_variable2(var, idx, flag)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._unset_variable2(var, idx, flag)
-  end
-
-  def _get_global_var(var)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._get_global_var(var)
-  end
-  def _get_global_var2(var, idx)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._get_global_var2(var, idx)
-  end
-  def _set_global_var(var, value)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._set_global_var(var, value)
-  end
-  def _set_global_var2(var, idx, value)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._set_global_var2(var, idx, value)
-  end
-  def _unset_global_var(var)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._unset_global_var(var)
-  end
-  def _unset_global_var2(var, idx)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._unset_global_var2(var, idx)
-  end
-
-  def _make_menu_embeddable(menu_path)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._make_menu_embeddable(menu_path)
-  end
-
-  def _split_tklist(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._split_tklist(str)
-  end
-  def _merge_tklist(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._merge_tklist(*args)
-  end
-  def _conv_listelement(arg)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._conv_listelement(arg)
-  end
-end
-
-
-# interp command support
-class MultiTkIp
-  def _lst2ary(str)
-    return [] if str == ""
-    idx = str.index('{')
-    while idx and idx > 0 and str[idx-1] == ?\\
-      idx = str.index('{', idx+1)
-    end
-    return str.split unless idx
-
-    list = str[0,idx].split
-    str = str[idx+1..-1]
-    i = -1
-    brace = 1
-    str.each_byte {|c|
-      i += 1
-      brace += 1 if c == ?{
-      brace -= 1 if c == ?}
-      break if brace == 0
-    }
-    if i == 0
-      list.push ''
-    elsif str[0, i] == ' '
-      list.push ' '
-    else
-      list.push str[0..i-1]
-    end
-    #list += _lst2ary(str[i+1..-1])
-    list.concat(_lst2ary(str[i+1..-1]))
-    list
-  end
-  private :_lst2ary
-
-  def _slavearg(slave)
-    if slave.kind_of?(MultiTkIp)
-      slave.path
-    elsif slave.kind_of?(String)
-      slave
-    else
-      slave.to_s
-    end
-  end
-  private :_slavearg
-
-  def alias_info(slave, cmd_name)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    _lst2ary(@interp._invoke('interp', 'alias', _slavearg(slave), cmd_name))
-  end
-  def self.alias_info(slave, cmd_name)
-    __getip.alias_info(slave, cmd_name)
-  end
-
-  def alias_delete(slave, cmd_name)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'alias', _slavearg(slave), cmd_name, '')
-    self
-  end
-  def self.alias_delete(slave, cmd_name)
-    __getip.alias_delete(slave, cmd_name)
-    self
-  end
-
-  def def_alias(slave, new_cmd, org_cmd, *args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    ret = @interp._invoke('interp', 'alias', _slavearg(slave), new_cmd, 
-                          '', org_cmd, *args)
-    (ret == new_cmd)? self: nil
-  end
-  def self.def_alias(slave, new_cmd, org_cmd, *args)
-    ret = __getip.def_alias(slave, new_cmd, org_cmd, *args)
-    (ret == new_cmd)? self: nil
-  end
-
-  def aliases(slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    _lst2ary(@interp._invoke('interp', 'aliases', _slavearg(slave)))
-  end
-  def self.aliases(slave = '')
-    __getip.aliases(slave)
-  end
-
-  def delete_slaves(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    slaves = args.collect{|s| _slavearg(s)}
-    @interp._invoke('interp', 'delete', *slaves) if slaves.size > 0
-    self
-  end
-  def self.delete_slaves(*args)
-    __getip.delete_slaves(*args)
-    self
-  end
-
-  def exist?(slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    ret = @interp._invoke('interp', 'exists', _slavearg(slave))
-    (ret == '1')? true: false
-  end
-  def self.exist?(slave = '')
-    __getip.exist?(slave)
-  end
-
-  def delete_cmd(slave, cmd)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    slave_invoke = @interp._invoke('list', 'rename', cmd, '')
-    @interp._invoke('interp', 'eval', _slavearg(slave), slave_invoke)
-    self
-  end
-  def self.delete_cmd(slave, cmd)
-    __getip.delete_cmd(slave, cmd)
-    self
-  end
-
-  def expose_cmd(slave, cmd, aliasname = nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if aliasname
-      @interp._invoke('interp', 'expose', _slavearg(slave), cmd, aliasname)
-    else
-      @interp._invoke('interp', 'expose', _slavearg(slave), cmd)
-    end
-    self
-  end
-  def self.expose_cmd(slave, cmd, aliasname = nil)
-    __getip.expose_cmd(slave, cmd, aliasname)
-    self
-  end
-
-  def hide_cmd(slave, cmd, aliasname = nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if aliasname
-      @interp._invoke('interp', 'hide', _slavearg(slave), cmd, aliasname)
-    else
-      @interp._invoke('interp', 'hide', _slavearg(slave), cmd)
-    end
-    self
-  end
-  def self.hide_cmd(slave, cmd, aliasname = nil)
-    __getip.hide_cmd(slave, cmd, aliasname)
-    self
-  end
-
-  def hidden_cmds(slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    _lst2ary(@interp._invoke('interp', 'hidden', _slavearg(slave)))
-  end
-  def self.hidden_cmds(slave = '')
-    __getip.hidden_cmds(slave)
-  end
-
-  def invoke_hidden(slave, cmd, *args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = []
-    end
-    keys << _slavearg(slave)
-    if Tk::TCL_MAJOR_VERSION > 8 ||
-        (Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION >= 5) 
-      keys << '--'
-    end
-    keys << cmd
-    keys.concat(args)
-    @interp._invoke('interp', 'invokehidden', *keys)
-  end
-  def self.invoke_hidden(slave, cmd, *args)
-    __getip.invoke_hidden(slave, cmd, *args)
-  end
-
-  def invoke_hidden_on_global(slave, cmd, *args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = []
-    end
-    keys << _slavearg(slave)
-    keys << '-global'
-    if Tk::TCL_MAJOR_VERSION > 8 ||
-        (Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION >= 5) 
-      keys << '--'
-    end
-    keys << cmd
-    keys.concat(args)
-    @interp._invoke('interp', 'invokehidden', *keys)
-  end
-  def self.invoke_hidden_on_global(slave, cmd, *args)
-    __getip.invoke_hidden_on_global(slave, cmd, *args)
-  end
-
-  def invoke_hidden_on_namespace(slave, ns, cmd, *args)
-    # for Tcl8.5 or later
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = []
-    end
-    keys << _slavearg(slave)
-    keys << '-namespace' << TkComm._get_eval_string(ns)
-    keys << '--' << cmd
-    keys.concat(args)
-    @interp._invoke('interp', 'invokehidden', *keys)
-  end
-  def self.invoke_hidden_on_namespace(slave, ns, cmd, *args)
-    __getip.invoke_hidden_on_namespace(slave, ns, cmd, *args)
-  end
-
-  def mark_trusted(slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'marktrusted', _slavearg(slave))
-    self
-  end
-  def self.mark_trusted(slave = '')
-    __getip.mark_trusted(slave)
-    self
-  end
-
-  def set_bgerror_handler(cmd = Proc.new, slave = nil, &b)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    unless TkComm._callback_entry?(cmd)
-      if !slave && b
-        slave = cmd
-        cmd = Proc.new(&b)
-      end
-    end
-    slave = '' unless slave
-
-    @interp._invoke('interp', 'bgerror', _slavearg(slave), cmd)
-  end
-  def self.bgerror(cmd = Proc.new, slave = nil, &b)
-    __getip.bgerror(cmd, slave, &b)
-  end
-
-  def get_bgerror_handler(slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    procedure(@interp._invoke('interp', 'bgerror', _slavearg(slave)))
-  end
-  def self.bgerror(slave = '')
-    __getip.bgerror(slave)
-  end
-
-  def set_limit(limit_type, slave = '', opts = {})
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'limit', _slavearg(slave), limit_type, opts)
-  end
-  def self.set_limit(limit_type, slave = '', opts = {})
-    __getip.set_limit(limit_type, slave, opts)
-  end
-
-  def get_limit(limit_type, slave = '', slot = nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    if slot
-      num_or_str(@interp._invoke('interp', 'limit', _slavearg(slave), 
-                                 limit_type, slot))
-    else
-      l = @interp._split_tklist(@interp._invoke_without_enc('interp', 'limit', 
-                                                            _slavearg(slave), 
-                                                            limit_type))
-      l.map!{|s| _fromUTF8(s)}
-      r = {}
-      until l.empty?
-        key = l.shift[1..-1]
-        val = l.shift
-        val = num_or_str(val) if val
-        r[key] = val
-      end
-      r
-    end
-  end
-  def self.get_limit(limit_type, slave = '', slot = nil)
-    __getip.get_limit(limit_type, slave, slot)
-  end
-
-  def recursion_limit(slave = '', limit = None)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    number(@interp._invoke('interp', 'recursionlimit', 
-                           _slavearg(slave), limit))
-  end
-  def self.recursion_limit(slave = '', limit = None)
-    __getip.recursion_limit(slave)
-  end
-
-  def alias_target(aliascmd, slave = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'target', _slavearg(slave), aliascmd)
-  end
-  def self.alias_target(aliascmd, slave = '')
-    __getip.alias_target(aliascmd, slave)
-  end
-
-  def share_stdin(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'share', src, 'stdin', dist)
-    self
-  end
-  def self.share_stdin(dist, src = '')
-    __getip.share_stdin(dist, src)
-    self
-  end
-
-  def share_stdout(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'share', src, 'stdout', dist)
-    self
-  end
-  def self.share_stdout(dist, src = '')
-    __getip.share_stdout(dist, src)
-    self
-  end
-
-  def share_stderr(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'share', src, 'stderr', dist)
-    self
-  end
-  def self.share_stderr(dist, src = '')
-    __getip.share_stderr(dist, src)
-    self
-  end
-
-  def transfer_stdin(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'transfer', src, 'stdin', dist)
-    self
-  end
-  def self.transfer_stdin(dist, src = '')
-    __getip.transfer_stdin(dist, src)
-    self
-  end
-
-  def transfer_stdout(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'transfer', src, 'stdout', dist)
-    self
-  end
-  def self.transfer_stdout(dist, src = '')
-    __getip.transfer_stdout(dist, src)
-    self
-  end
-
-  def transfer_stderr(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'transfer', src, 'stderr', dist)
-    self
-  end
-  def self.transfer_stderr(dist, src = '')
-    __getip.transfer_stderr(dist, src)
-    self
-  end
-
-  def share_stdio(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'share', src, 'stdin',  dist)
-    @interp._invoke('interp', 'share', src, 'stdout', dist)
-    @interp._invoke('interp', 'share', src, 'stderr', dist)
-    self
-  end
-  def self.share_stdio(dist, src = '')
-    __getip.share_stdio(dist, src)
-    self
-  end
-
-  def transfer_stdio(dist, src = '')
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._invoke('interp', 'transfer', src, 'stdin',  dist)
-    @interp._invoke('interp', 'transfer', src, 'stdout', dist)
-    @interp._invoke('interp', 'transfer', src, 'stderr', dist)
-    self
-  end
-  def self.transfer_stdio(dist, src = '')
-    __getip.transfer_stdio(dist, src)
-    self
-  end
-end
-
-
-# Safe Base :: manipulating safe interpreter
-class MultiTkIp
-  def safeip_configure(slot, value=None)
-    # use for '-noStatics' option ==> {statics=>false}
-    #     for '-nestedLoadOk' option ==> {nested=>true}
-    if slot.kind_of?(Hash)
-      ip = MultiTkIp.__getip
-      ip._eval('::safe::interpConfigure ' + @ip_name + ' ' + _keys2opts(slot))
-    else
-      ip._eval('::safe::interpConfigure ' + @ip_name + ' ' + 
-               "-#{slot} #{_get_eval_string(value)}")
-    end
-    self
-  end
-
-  def safeip_configinfo(slot = nil)
-    ip = MultiTkIp.__getip
-    ret = {}
-    if slot
-      conf = _lst2ary(ip._eval("::safe::interpConfigure " + 
-                               @ip_name + " -#{slot}"))
-      if conf[0] == '-deleteHook'
-=begin
-        if conf[1] =~ /^rb_out\S* (c(_\d+_)?\d+)/
-          ret[conf[0][1..-1]] = MultiTkIp._tk_cmd_tbl[$1]
-=end
-        if conf[1] =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-          ret[conf[0][1..-1]] = MultiTkIp._tk_cmd_tbl[$4]
-        else
-          ret[conf[0][1..-1]] = conf[1]
-        end
-      else
-        ret[conf[0][1..-1]] = conf[1]
-      end
-    else
-      Hash[*_lst2ary(ip._eval("::safe::interpConfigure " + 
-                              @ip_name))].each{|k, v|
-        if k == '-deleteHook'
-=begin
-          if v =~ /^rb_out\S* (c(_\d+_)?\d+)/
-            ret[k[1..-1]] = MultiTkIp._tk_cmd_tbl[$1]
-=end
-          if v =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-            ret[k[1..-1]] = MultiTkIp._tk_cmd_tbl[$4]
-          else
-            ret[k[1..-1]] = v
-          end
-        else
-          ret[k[1..-1]] = v
-        end
-      }
-    end
-    ret
-  end
-
-  def safeip_delete
-    ip = MultiTkIp.__getip
-    ip._eval("::safe::interpDelete " + @ip_name)
-  end
-
-  def safeip_add_to_access_path(dir)
-    ip = MultiTkIp.__getip
-    ip._eval("::safe::interpAddToAccessPath #{@ip_name} #{dir}")
-  end
-
-  def safeip_find_in_access_path(dir)
-    ip = MultiTkIp.__getip
-    ip._eval("::safe::interpFindInAccessPath #{@ip_name} #{dir}")
-  end
-
-  def safeip_set_log_cmd(cmd = Proc.new)
-    ip = MultiTkIp.__getip
-    ip._eval("::safe::setLogCmd #{@ip_name} #{_get_eval_string(cmd)}")
-  end
-end
-
-
-# encoding convert
-class MultiTkIp
-  def encoding
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.encoding
-  end
-  def encoding=(enc)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.encoding = enc
-  end
-
-  def encoding_convertfrom(str, enc=None)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.encoding_convertfrom(str, enc)
-  end
-  alias encoding_convert_from encoding_convertfrom
-
-  def encoding_convertto(str, enc=None)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp.encoding_convertto(str, enc)
-  end
-  alias encoding_convert_to encoding_convertto
-end
-
-
-# remove methods for security
-class MultiTkIp
-  # undef_method :instance_eval
-  undef_method :instance_variable_get
-  undef_method :instance_variable_set
-end
-
-
-# end of MultiTkIp definition
-
-# defend against modification
-#MultiTkIp.freeze
-#TclTkLib.freeze
-
-########################################
-#  start Tk which depends on MultiTkIp
-module TkCore
-  INTERP = MultiTkIp
-end
-require 'tk'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mutex_m.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mutex_m.rb
deleted file mode 100644
index 8e0d42b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/mutex_m.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-#--
-#   mutex_m.rb - 
-#   	$Release Version: 3.0$
-#   	$Revision: 1.7 $
-#   	$Date: 1998/02/27 04:28:57 $
-#       Original from mutex.rb
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#       modified by matz
-#       patched by akira yamada
-#++
-#
-# == Usage
-#
-# Extend an object and use it like a Mutex object:
-#
-#   require "mutex_m.rb"
-#   obj = Object.new
-#   obj.extend Mutex_m
-#   # ...
-#
-# Or, include Mutex_m in a class to have its instances behave like a Mutex
-# object:
-#
-#   class Foo
-#     include Mutex_m
-#     # ...
-#   end
-#   
-#   obj = Foo.new
-
-module Mutex_m
-  def Mutex_m.define_aliases(cl)
-    cl.module_eval %q{
-      alias locked? mu_locked?
-      alias lock mu_lock
-      alias unlock mu_unlock
-      alias try_lock mu_try_lock
-      alias synchronize mu_synchronize
-    }
-  end  
-
-  def Mutex_m.append_features(cl)
-    super
-    define_aliases(cl) unless cl.instance_of?(Module)
-  end
-  
-  def Mutex_m.extend_object(obj)
-    super
-    obj.mu_extended
-  end
-
-  def mu_extended
-    unless (defined? locked? and
-	    defined? lock and
-	    defined? unlock and
-	    defined? try_lock and
-	    defined? synchronize)
-      Mutex_m.define_aliases(class<<self;self;end)
-    end
-    mu_initialize
-  end
-  
-  # locking 
-  def mu_synchronize
-    begin
-      mu_lock
-      yield
-    ensure
-      mu_unlock
-    end
-  end
-  
-  def mu_locked?
-    @mu_locked
-  end
-  
-  def mu_try_lock
-    result = false
-    Thread.critical = true
-    unless @mu_locked
-      @mu_locked = true
-      result = true
-    end
-    Thread.critical = false
-    result
-  end
-  
-  def mu_lock
-    while (Thread.critical = true; @mu_locked)
-      @mu_waiting.push Thread.current
-      Thread.stop
-    end
-    @mu_locked = true
-    Thread.critical = false
-    self
-  end
-  
-  def mu_unlock
-    return unless @mu_locked
-    Thread.critical = true
-    wait = @mu_waiting
-    @mu_waiting = []
-    @mu_locked = false
-    Thread.critical = false
-    for w in wait
-      w.run
-    end
-    self
-  end
-  
-  private
-  
-  def mu_initialize
-    @mu_waiting = []
-    @mu_locked = false;
-  end
-
-  def initialize(*args)
-    mu_initialize
-    super
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftp.rb
deleted file mode 100644
index bee60d5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftp.rb
+++ /dev/null
@@ -1,920 +0,0 @@
-# 
-# = net/ftp.rb - FTP Client Library
-# 
-# Written by Shugo Maeda <shugo at ruby-lang.org>.
-#
-# Documentation by Gavin Sinclair, sourced from "Programming Ruby" (Hunt/Thomas)
-# and "Ruby In a Nutshell" (Matsumoto), used with permission.
-# 
-# This library is distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# It is included in the Ruby standard library.
-#
-# See the Net::FTP class for an overview.
-#
-
-require "socket"
-require "monitor"
-
-module Net
-
-  # :stopdoc:
-  class FTPError < StandardError; end
-  class FTPReplyError < FTPError; end
-  class FTPTempError < FTPError; end 
-  class FTPPermError < FTPError; end 
-  class FTPProtoError < FTPError; end
-  # :startdoc:
-
-  #
-  # This class implements the File Transfer Protocol.  If you have used a
-  # command-line FTP program, and are familiar with the commands, you will be
-  # able to use this class easily.  Some extra features are included to take
-  # advantage of Ruby's style and strengths.
-  #
-  # == Example
-  # 
-  #   require 'net/ftp'
-  #
-  # === Example 1
-  #  
-  #   ftp = Net::FTP.new('ftp.netlab.co.jp')
-  #   ftp.login
-  #   files = ftp.chdir('pub/lang/ruby/contrib')
-  #   files = ftp.list('n*')
-  #   ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
-  #   ftp.close
-  #
-  # === Example 2
-  #
-  #   Net::FTP.open('ftp.netlab.co.jp') do |ftp|
-  #     ftp.login
-  #     files = ftp.chdir('pub/lang/ruby/contrib')
-  #     files = ftp.list('n*')
-  #     ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
-  #   end
-  #
-  # == Major Methods
-  #
-  # The following are the methods most likely to be useful to users:
-  # - FTP.open
-  # - #getbinaryfile
-  # - #gettextfile
-  # - #putbinaryfile
-  # - #puttextfile
-  # - #chdir
-  # - #nlst
-  # - #size
-  # - #rename
-  # - #delete
-  #
-  class FTP
-    include MonitorMixin
-    
-    # :stopdoc:
-    FTP_PORT = 21
-    CRLF = "\r\n"
-    DEFAULT_BLOCKSIZE = 4096
-    # :startdoc:
-    
-    # When +true+, transfers are performed in binary mode.  Default: +true+.
-    attr_accessor :binary
-
-    # When +true+, the connection is in passive mode.  Default: +false+.
-    attr_accessor :passive
-
-    # When +true+, all traffic to and from the server is written
-    # to +$stdout+.  Default: +false+.
-    attr_accessor :debug_mode
-
-    # Sets or retrieves the +resume+ status, which decides whether incomplete
-    # transfers are resumed or restarted.  Default: +false+.
-    attr_accessor :resume
-
-    # The server's welcome message.
-    attr_reader :welcome
-
-    # The server's last response code.
-    attr_reader :last_response_code
-    alias lastresp last_response_code
-
-    # The server's last response.
-    attr_reader :last_response
-    
-    #
-    # A synonym for <tt>FTP.new</tt>, but with a mandatory host parameter.
-    #
-    # If a block is given, it is passed the +FTP+ object, which will be closed
-    # when the block finishes, or when an exception is raised.
-    #
-    def FTP.open(host, user = nil, passwd = nil, acct = nil)
-      if block_given?
-        ftp = new(host, user, passwd, acct)
-        begin
-          yield ftp
-        ensure
-          ftp.close
-        end
-      else
-        new(host, user, passwd, acct)
-      end
-    end
-    
-    #
-    # Creates and returns a new +FTP+ object. If a +host+ is given, a connection
-    # is made. Additionally, if the +user+ is given, the given user name,
-    # password, and (optionally) account are used to log in.  See #login.
-    #
-    def initialize(host = nil, user = nil, passwd = nil, acct = nil)
-      super()
-      @binary = true
-      @passive = false
-      @debug_mode = false
-      @resume = false
-      if host
-	connect(host)
-	if user
-	  login(user, passwd, acct)
-	end
-      end
-    end
-
-    # Obsolete
-    def return_code
-      $stderr.puts("warning: Net::FTP#return_code is obsolete and do nothing")
-      return "\n"
-    end
-
-    # Obsolete
-    def return_code=(s)
-      $stderr.puts("warning: Net::FTP#return_code= is obsolete and do nothing")
-    end
-
-    def open_socket(host, port)
-      if defined? SOCKSsocket and ENV["SOCKS_SERVER"]
-	@passive = true
-	return SOCKSsocket.open(host, port)
-      else
-	return TCPSocket.open(host, port)
-      end
-    end
-    private :open_socket
-    
-    #
-    # Establishes an FTP connection to host, optionally overriding the default
-    # port. If the environment variable +SOCKS_SERVER+ is set, sets up the
-    # connection through a SOCKS proxy. Raises an exception (typically
-    # <tt>Errno::ECONNREFUSED</tt>) if the connection cannot be established.
-    #
-    def connect(host, port = FTP_PORT)
-      if @debug_mode
-	print "connect: ", host, ", ", port, "\n"
-      end
-      synchronize do
-	@sock = open_socket(host, port)
-	voidresp
-      end
-    end
-
-    #
-    # WRITEME or make private
-    #
-    def set_socket(sock, get_greeting = true)
-      synchronize do
-	@sock = sock
-	if get_greeting
-	  voidresp
-	end
-      end
-    end
-
-    def sanitize(s)
-      if s =~ /^PASS /i
-	return s[0, 5] + "*" * (s.length - 5)
-      else
-	return s
-      end
-    end
-    private :sanitize
-    
-    def putline(line)
-      if @debug_mode
-	print "put: ", sanitize(line), "\n"
-      end
-      line = line + CRLF
-      @sock.write(line)
-    end
-    private :putline
-    
-    def getline
-      line = @sock.readline # if get EOF, raise EOFError
-      line.sub!(/(\r\n|\n|\r)\z/n, "")
-      if @debug_mode
-	print "get: ", sanitize(line), "\n"
-      end
-      return line
-    end
-    private :getline
-    
-    def getmultiline
-      line = getline
-      buff = line
-      if line[3] == ?-
-	  code = line[0, 3]
-	begin
-	  line = getline
-	  buff << "\n" << line
-	end until line[0, 3] == code and line[3] != ?-
-      end
-      return buff << "\n"
-    end
-    private :getmultiline
-    
-    def getresp
-      @last_response = getmultiline
-      @last_response_code = @last_response[0, 3]
-      case @last_response_code
-      when /\A[123]/
-	return @last_response
-      when /\A4/
-	raise FTPTempError, @last_response
-      when /\A5/
-	raise FTPPermError, @last_response
-      else
-	raise FTPProtoError, @last_response
-      end
-    end
-    private :getresp
-    
-    def voidresp
-      resp = getresp
-      if resp[0] != ?2
-	raise FTPReplyError, resp
-      end
-    end
-    private :voidresp
-    
-    #
-    # Sends a command and returns the response.
-    #
-    def sendcmd(cmd)
-      synchronize do
-	putline(cmd)
-	return getresp
-      end
-    end
-    
-    #
-    # Sends a command and expect a response beginning with '2'.
-    #
-    def voidcmd(cmd)
-      synchronize do
-	putline(cmd)
-	voidresp
-      end
-    end
-    
-    def sendport(host, port)
-      af = (@sock.peeraddr)[0]
-      if af == "AF_INET"
-	cmd = "PORT " + (host.split(".") + port.divmod(256)).join(",")
-      elsif af == "AF_INET6"
-	cmd = sprintf("EPRT |2|%s|%d|", host, port)
-      else
-	raise FTPProtoError, host
-      end
-      voidcmd(cmd)
-    end
-    private :sendport
-    
-    def makeport
-      sock = TCPServer.open(@sock.addr[3], 0)
-      port = sock.addr[1]
-      host = sock.addr[3]
-      resp = sendport(host, port)
-      return sock
-    end
-    private :makeport
-    
-    def makepasv
-      if @sock.peeraddr[0] == "AF_INET"
-	host, port = parse227(sendcmd("PASV"))
-      else
-	host, port = parse229(sendcmd("EPSV"))
-	#     host, port = parse228(sendcmd("LPSV"))
-      end
-      return host, port
-    end
-    private :makepasv
-    
-    def transfercmd(cmd, rest_offset = nil)
-      if @passive
-	host, port = makepasv
-	conn = open_socket(host, port)
-	if @resume and rest_offset
-	  resp = sendcmd("REST " + rest_offset.to_s) 
-	  if resp[0] != ?3
-	    raise FTPReplyError, resp
-	  end
-	end
-	resp = sendcmd(cmd)
-	if resp[0] != ?1
-	  raise FTPReplyError, resp
-	end
-      else
-	sock = makeport
-	if @resume and rest_offset
-	  resp = sendcmd("REST " + rest_offset.to_s) 
-	  if resp[0] != ?3
-	    raise FTPReplyError, resp
-	  end
-	end
-	resp = sendcmd(cmd)
-	if resp[0] != ?1
-	  raise FTPReplyError, resp
-	end
-	conn = sock.accept
-	sock.close
-      end
-      return conn
-    end
-    private :transfercmd
-    
-    def getaddress
-      thishost = Socket.gethostname
-      if not thishost.index(".")
-	thishost = Socket.gethostbyname(thishost)[0]
-      end
-      if ENV.has_key?("LOGNAME")
-	realuser = ENV["LOGNAME"]
-      elsif ENV.has_key?("USER")
-	realuser = ENV["USER"]
-      else
-	realuser = "anonymous"
-      end
-      return realuser + "@" + thishost
-    end
-    private :getaddress
-    
-    #
-    # Logs in to the remote host. The session must have been previously
-    # connected.  If +user+ is the string "anonymous" and the +password+ is
-    # +nil+, a password of <tt>user at host</tt> is synthesized. If the +acct+
-    # parameter is not +nil+, an FTP ACCT command is sent following the
-    # successful login.  Raises an exception on error (typically
-    # <tt>Net::FTPPermError</tt>).
-    #
-    def login(user = "anonymous", passwd = nil, acct = nil)
-      if user == "anonymous" and passwd == nil
-	passwd = getaddress
-      end
-      
-      resp = ""
-      synchronize do
-	resp = sendcmd('USER ' + user)
-	if resp[0] == ?3
-	  resp = sendcmd('PASS ' + passwd)
-	end
-	if resp[0] == ?3
-	  resp = sendcmd('ACCT ' + acct)
-	end
-      end
-      if resp[0] != ?2
-	raise FTPReplyError, resp
-      end
-      @welcome = resp
-    end
-    
-    #
-    # Puts the connection into binary (image) mode, issues the given command,
-    # and fetches the data returned, passing it to the associated block in
-    # chunks of +blocksize+ characters. Note that +cmd+ is a server command
-    # (such as "RETR myfile").
-    #
-    def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
-      synchronize do
-	voidcmd("TYPE I")
-	conn = transfercmd(cmd, rest_offset)
-	loop do
-	  data = conn.read(blocksize)
-	  break if data == nil
-	  yield(data)
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into ASCII (text) mode, issues the given command, and
-    # passes the resulting data, one line at a time, to the associated block. If
-    # no block is given, prints the lines. Note that +cmd+ is a server command
-    # (such as "RETR myfile").
-    #
-    def retrlines(cmd) # :yield: line
-      synchronize do
-	voidcmd("TYPE A")
-	conn = transfercmd(cmd)
-	loop do
-	  line = conn.gets
-	  break if line == nil
-	  if line[-2, 2] == CRLF
-	    line = line[0 .. -3]
-	  elsif line[-1] == ?\n
-	    line = line[0 .. -2]
-	  end
-	  yield(line)
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into binary (image) mode, issues the given server-side
-    # command (such as "STOR myfile"), and sends the contents of the file named
-    # +file+ to the server. If the optional block is given, it also passes it
-    # the data, in chunks of +blocksize+ characters.
-    #
-    def storbinary(cmd, file, blocksize, rest_offset = nil, &block) # :yield: data
-      if rest_offset
-        file.seek(rest_offset, IO::SEEK_SET)
-      end
-      synchronize do
-	voidcmd("TYPE I")
-	conn = transfercmd(cmd, rest_offset)
-	loop do
-	  buf = file.read(blocksize)
-	  break if buf == nil
-	  conn.write(buf)
-	  yield(buf) if block
-	end
-	conn.close
-	voidresp
-      end
-    end
-    
-    #
-    # Puts the connection into ASCII (text) mode, issues the given server-side
-    # command (such as "STOR myfile"), and sends the contents of the file
-    # named +file+ to the server, one line at a time. If the optional block is
-    # given, it also passes it the lines.
-    #
-    def storlines(cmd, file, &block) # :yield: line
-      synchronize do
-	voidcmd("TYPE A")
-	conn = transfercmd(cmd)
-	loop do
-	  buf = file.gets
-	  break if buf == nil
-	  if buf[-2, 2] != CRLF
-	    buf = buf.chomp + CRLF
-	  end
-	  conn.write(buf)
-	  yield(buf) if block
-	end
-	conn.close
-	voidresp
-      end
-    end
-
-    #
-    # Retrieves +remotefile+ in binary mode, storing the result in +localfile+.
-    # If a block is supplied, it is passed the retrieved data in +blocksize+
-    # chunks.
-    #
-    def getbinaryfile(remotefile, localfile = File.basename(remotefile),
-		      blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      if @resume
-	rest_offset = File.size?(localfile)
-	f = open(localfile, "a")
-      else
-	rest_offset = nil
-	f = open(localfile, "w")
-      end
-      begin
-	f.binmode
-	retrbinary("RETR " + remotefile, blocksize, rest_offset) do |data|
-	  f.write(data)
-	  yield(data) if block
-	end
-      ensure
-	f.close
-      end
-    end
-    
-    #
-    # Retrieves +remotefile+ in ASCII (text) mode, storing the result in
-    # +localfile+. If a block is supplied, it is passed the retrieved data one
-    # line at a time.
-    #
-    def gettextfile(remotefile, localfile = File.basename(remotefile), &block) # :yield: line
-      f = open(localfile, "w")
-      begin
-	retrlines("RETR " + remotefile) do |line|
-	  f.puts(line)
-	  yield(line) if block
-	end
-      ensure
-	f.close
-      end
-    end
-
-    #
-    # Retrieves +remotefile+ in whatever mode the session is set (text or
-    # binary).  See #gettextfile and #getbinaryfile.
-    #
-    def get(remotefile, localfile = File.basename(remotefile),
-	    blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      unless @binary
-	gettextfile(remotefile, localfile, &block)
-      else
-	getbinaryfile(remotefile, localfile, blocksize, &block)
-      end
-    end
-    
-    #
-    # Transfers +localfile+ to the server in binary mode, storing the result in
-    # +remotefile+. If a block is supplied, calls it, passing in the transmitted
-    # data in +blocksize+ chunks.
-    #
-    def putbinaryfile(localfile, remotefile = File.basename(localfile),
-		      blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
-      if @resume
-        begin
-          rest_offset = size(remotefile)
-        rescue Net::FTPPermError
-          rest_offset = nil
-        end
-      else
-	rest_offset = nil
-      end
-      f = open(localfile)
-      begin
-	f.binmode
-	storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block)
-      ensure
-	f.close
-      end
-    end
-    
-    #
-    # Transfers +localfile+ to the server in ASCII (text) mode, storing the result
-    # in +remotefile+. If callback or an associated block is supplied, calls it,
-    # passing in the transmitted data one line at a time.
-    #
-    def puttextfile(localfile, remotefile = File.basename(localfile), &block) # :yield: line
-      f = open(localfile)
-      begin
-	storlines("STOR " + remotefile, f, &block)
-      ensure
-	f.close
-      end
-    end
-
-    #
-    # Transfers +localfile+ to the server in whatever mode the session is set
-    # (text or binary).  See #puttextfile and #putbinaryfile.
-    #
-    def put(localfile, remotefile = File.basename(localfile),
-	    blocksize = DEFAULT_BLOCKSIZE, &block)
-      unless @binary
-	puttextfile(localfile, remotefile, &block)
-      else
-	putbinaryfile(localfile, remotefile, blocksize, &block)
-      end
-    end
-
-    #
-    # Sends the ACCT command.  TODO: more info.
-    #
-    def acct(account)
-      cmd = "ACCT " + account
-      voidcmd(cmd)
-    end
-    
-    #
-    # Returns an array of filenames in the remote directory.
-    #
-    def nlst(dir = nil)
-      cmd = "NLST"
-      if dir
-	cmd = cmd + " " + dir
-      end
-      files = []
-      retrlines(cmd) do |line|
-	files.push(line)
-      end
-      return files
-    end
-    
-    #
-    # Returns an array of file information in the directory (the output is like
-    # `ls -l`).  If a block is given, it iterates through the listing.
-    #
-    def list(*args, &block) # :yield: line
-      cmd = "LIST"
-      args.each do |arg|
-	cmd = cmd + " " + arg
-      end
-      if block
-	retrlines(cmd, &block)
-      else
-	lines = []
-	retrlines(cmd) do |line|
-	  lines << line
-	end
-	return lines
-      end
-    end
-    alias ls list
-    alias dir list
-    
-    #
-    # Renames a file on the server.
-    #
-    def rename(fromname, toname)
-      resp = sendcmd("RNFR " + fromname)
-      if resp[0] != ?3
-	raise FTPReplyError, resp
-      end
-      voidcmd("RNTO " + toname)
-    end
-    
-    #
-    # Deletes a file on the server.
-    #
-    def delete(filename)
-      resp = sendcmd("DELE " + filename)
-      if resp[0, 3] == "250"
-	return
-      elsif resp[0] == ?5
-	raise FTPPermError, resp
-      else
-	raise FTPReplyError, resp
-      end
-    end
-    
-    #
-    # Changes the (remote) directory.
-    #
-    def chdir(dirname)
-      if dirname == ".."
-	begin
-	  voidcmd("CDUP")
-	  return
-	rescue FTPPermError
-	  if $![0, 3] != "500"
-	    raise FTPPermError, $!
-	  end
-	end
-      end
-      cmd = "CWD " + dirname
-      voidcmd(cmd)
-    end
-    
-    #
-    # Returns the size of the given (remote) filename.
-    #
-    def size(filename)
-      voidcmd("TYPE I")
-      resp = sendcmd("SIZE " + filename)
-      if resp[0, 3] != "213" 
-	raise FTPReplyError, resp
-      end
-      return resp[3..-1].strip.to_i
-    end
-    
-    MDTM_REGEXP = /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/  # :nodoc:
-    
-    #
-    # Returns the last modification time of the (remote) file.  If +local+ is
-    # +true+, it is returned as a local time, otherwise it's a UTC time.
-    #
-    def mtime(filename, local = false)
-      str = mdtm(filename)
-      ary = str.scan(MDTM_REGEXP)[0].collect {|i| i.to_i}
-      return local ? Time.local(*ary) : Time.gm(*ary)
-    end
-    
-    #
-    # Creates a remote directory.
-    #
-    def mkdir(dirname)
-      resp = sendcmd("MKD " + dirname)
-      return parse257(resp)
-    end
-    
-    #
-    # Removes a remote directory.
-    #
-    def rmdir(dirname)
-      voidcmd("RMD " + dirname)
-    end
-    
-    #
-    # Returns the current remote directory.
-    #
-    def pwd
-      resp = sendcmd("PWD")
-      return parse257(resp)
-    end
-    alias getdir pwd
-    
-    #
-    # Returns system information.
-    #
-    def system
-      resp = sendcmd("SYST")
-      if resp[0, 3] != "215"
-	raise FTPReplyError, resp
-      end
-      return resp[4 .. -1]
-    end
-    
-    #
-    # Aborts the previous command (ABOR command).
-    #
-    def abort
-      line = "ABOR" + CRLF
-      print "put: ABOR\n" if @debug_mode
-      @sock.send(line, Socket::MSG_OOB)
-      resp = getmultiline
-      unless ["426", "226", "225"].include?(resp[0, 3])
-	raise FTPProtoError, resp
-      end
-      return resp
-    end
-    
-    #
-    # Returns the status (STAT command).
-    #
-    def status
-      line = "STAT" + CRLF
-      print "put: STAT\n" if @debug_mode
-      @sock.send(line, Socket::MSG_OOB)
-      return getresp
-    end
-    
-    #
-    # Issues the MDTM command.  TODO: more info.
-    #
-    def mdtm(filename)
-      resp = sendcmd("MDTM " + filename)
-      if resp[0, 3] == "213"
-	return resp[3 .. -1].strip
-      end
-    end
-    
-    #
-    # Issues the HELP command.
-    #
-    def help(arg = nil)
-      cmd = "HELP"
-      if arg
-	cmd = cmd + " " + arg
-      end
-      sendcmd(cmd)
-    end
-    
-    #
-    # Exits the FTP session.
-    #
-    def quit
-      voidcmd("QUIT")
-    end
-
-    #
-    # Issues a NOOP command.
-    #
-    def noop
-      voidcmd("NOOP")
-    end
-
-    #
-    # Issues a SITE command.
-    #
-    def site(arg)
-      cmd = "SITE " + arg
-      voidcmd(cmd)
-    end
-    
-    #
-    # Closes the connection.  Further operations are impossible until you open
-    # a new connection with #connect.
-    #
-    def close
-      @sock.close if @sock and not @sock.closed?
-    end
-    
-    #
-    # Returns +true+ iff the connection is closed.
-    #
-    def closed?
-      @sock == nil or @sock.closed?
-    end
-    
-    def parse227(resp)
-      if resp[0, 3] != "227"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(",")
-      if numbers.length != 6
-	raise FTPProtoError, resp
-      end
-      host = numbers[0, 4].join(".")
-      port = (numbers[4].to_i << 8) + numbers[5].to_i
-      return host, port
-    end
-    private :parse227
-    
-    def parse228(resp)
-      if resp[0, 3] != "228"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(",")
-      if numbers[0] == "4"
-	if numbers.length != 9 || numbers[1] != "4" || numbers[2 + 4] != "2"
-	  raise FTPProtoError, resp
-	end
-	host = numbers[2, 4].join(".")
-	port = (numbers[7].to_i << 8) + numbers[8].to_i
-      elsif numbers[0] == "6"
-	if numbers.length != 21 || numbers[1] != "16" || numbers[2 + 16] != "2"
-	  raise FTPProtoError, resp
-	end
-	v6 = ["", "", "", "", "", "", "", ""]
-	for i in 0 .. 7
-	  v6[i] = sprintf("%02x%02x", numbers[(i * 2) + 2].to_i,
-			  numbers[(i * 2) + 3].to_i)
-	end
-	host = v6[0, 8].join(":")
-	port = (numbers[19].to_i << 8) + numbers[20].to_i
-      end 
-      return host, port
-    end
-    private :parse228
-    
-    def parse229(resp)
-      if resp[0, 3] != "229"
-	raise FTPReplyError, resp
-      end
-      left = resp.index("(")
-      right = resp.index(")")
-      if left == nil or right == nil
-	raise FTPProtoError, resp
-      end
-      numbers = resp[left + 1 .. right - 1].split(resp[left + 1, 1])
-      if numbers.length != 4
-	raise FTPProtoError, resp
-      end
-      port = numbers[3].to_i
-      host = (@sock.peeraddr())[3]
-      return host, port
-    end
-    private :parse229
-    
-    def parse257(resp)
-      if resp[0, 3] != "257"
-	raise FTPReplyError, resp
-      end
-      if resp[3, 2] != ' "'
-	return ""
-      end
-      dirname = ""
-      i = 5
-      n = resp.length
-      while i < n
-	c = resp[i, 1]
-	i = i + 1
-	if c == '"'
-	  if i > n or resp[i, 1] != '"'
-	    break
-	  end
-	  i = i + 1
-	end
-	dirname = dirname + c
-      end
-      return dirname
-    end
-    private :parse257
-  end
-
-end
-
-
-# Documentation comments:
-#  - sourced from pickaxe and nutshell, with improvements (hopefully)
-#  - three methods should be private (search WRITEME)
-#  - two methods need more information (search TODO)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftptls.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftptls.rb
deleted file mode 100644
index 4c24542..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/ftptls.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-=begin
-= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2003 Blaz Grilc <farmer at gmx.co.uk>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Requirements
-
-= Version
-  $Id: ftptls.rb 16878 2008-06-07 16:16:46Z shyouhei $
-  
-= Notes
-  Tested on FreeBSD 5-CURRENT and 4-STABLE
-  - ruby 1.6.8 (2003-01-17) [i386-freebsd5]
-  - OpenSSL 0.9.7a Feb 19 2003
-  - ruby-openssl-0.2.0.p0
-  tested on ftp server: glftpd 1.30
-=end
-
-require 'socket'
-require 'openssl'
-require 'net/ftp'
-
-module Net
-  class FTPTLS < FTP
-    def connect(host, port=FTP_PORT)
-      @hostname = host
-      super
-    end
-
-    def login(user = "anonymous", passwd = nil, acct = nil)
-       store = OpenSSL::X509::Store.new
-       store.set_default_paths
-       ctx = OpenSSL::SSL::SSLContext.new('SSLv23')
-       ctx.cert_store = store
-       ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
-       ctx.key = nil
-       ctx.cert = nil
-       voidcmd("AUTH TLS")
-       @sock = OpenSSL::SSL::SSLSocket.new(@sock, ctx)
-       @sock.connect
-       @sock.post_connection_check(@hostname)
-       super(user, passwd, acct)
-       voidcmd("PBSZ 0")
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/http.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/http.rb
deleted file mode 100644
index 7831618..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/http.rb
+++ /dev/null
@@ -1,2277 +0,0 @@
-#
-# = net/http.rb
-#
-# Copyright (c) 1999-2006 Yukihiro Matsumoto
-# Copyright (c) 1999-2006 Minero Aoki
-# Copyright (c) 2001 GOTOU Yuuzou
-# 
-# Written and maintained by Minero Aoki <aamine at loveruby.net>.
-# HTTPS support added by GOTOU Yuuzou <gotoyuzo at notwork.org>.
-#
-# This file is derived from "http-access.rb".
-#
-# Documented by Minero Aoki; converted to RDoc by William Webber.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms of ruby itself ---
-# Ruby Distribution License or GNU General Public License.
-#
-# See Net::HTTP for an overview and examples. 
-# 
-# NOTE: You can find Japanese version of this document here:
-# http://www.ruby-lang.org/ja/man/?cmd=view;name=net%2Fhttp.rb
-# 
-#--
-# $Id: http.rb 16878 2008-06-07 16:16:46Z shyouhei $
-#++ 
-
-require 'net/protocol'
-require 'uri'
-
-module Net   #:nodoc:
-
-  # :stopdoc:
-  class HTTPBadResponse < StandardError; end
-  class HTTPHeaderSyntaxError < StandardError; end
-  # :startdoc:
-
-  # == What Is This Library?
-  # 
-  # This library provides your program functions to access WWW
-  # documents via HTTP, Hyper Text Transfer Protocol version 1.1.
-  # For details of HTTP, refer [RFC2616]
-  # (http://www.ietf.org/rfc/rfc2616.txt).
-  # 
-  # == Examples
-  # 
-  # === Getting Document From WWW Server
-  # 
-  # Example #1: Simple GET+print
-  # 
-  #     require 'net/http'
-  #     Net::HTTP.get_print 'www.example.com', '/index.html'
-  # 
-  # Example #2: Simple GET+print by URL
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #     Net::HTTP.get_print URI.parse('http://www.example.com/index.html')
-  # 
-  # Example #3: More generic GET+print
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #
-  #     url = URI.parse('http://www.example.com/index.html')
-  #     res = Net::HTTP.start(url.host, url.port) {|http|
-  #       http.get('/index.html')
-  #     }
-  #     puts res.body
-  #
-  # Example #4: More generic GET+print
-  # 
-  #     require 'net/http'
-  #
-  #     url = URI.parse('http://www.example.com/index.html')
-  #     req = Net::HTTP::Get.new(url.path)
-  #     res = Net::HTTP.start(url.host, url.port) {|http|
-  #       http.request(req)
-  #     }
-  #     puts res.body
-  # 
-  # === Posting Form Data
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #
-  #     #1: Simple POST
-  #     res = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),
-  #                               {'q'=>'ruby', 'max'=>'50'})
-  #     puts res.body
-  #
-  #     #2: POST with basic authentication
-  #     res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),
-  #                                         {'from'=>'2005-01-01', 'to'=>'2005-03-31'})
-  #     puts res.body
-  #
-  #     #3: Detailed control
-  #     url = URI.parse('http://www.example.com/todo.cgi')
-  #     req = Net::HTTP::Post.new(url.path)
-  #     req.basic_auth 'jack', 'pass'
-  #     req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
-  #     res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
-  #     case res
-  #     when Net::HTTPSuccess, Net::HTTPRedirection
-  #       # OK
-  #     else
-  #       res.error!
-  #     end
-  # 
-  # === Accessing via Proxy
-  # 
-  # Net::HTTP.Proxy creates http proxy class. It has same
-  # methods of Net::HTTP but its instances always connect to
-  # proxy, instead of given host.
-  # 
-  #     require 'net/http'
-  # 
-  #     proxy_addr = 'your.proxy.host'
-  #     proxy_port = 8080
-  #             :
-  #     Net::HTTP::Proxy(proxy_addr, proxy_port).start('www.example.com') {|http|
-  #       # always connect to your.proxy.addr:8080
-  #             :
-  #     }
-  # 
-  # Since Net::HTTP.Proxy returns Net::HTTP itself when proxy_addr is nil,
-  # there's no need to change code if there's proxy or not.
-  # 
-  # There are two additional parameters in Net::HTTP.Proxy which allow to
-  # specify proxy user name and password:
-  # 
-  #     Net::HTTP::Proxy(proxy_addr, proxy_port, proxy_user = nil, proxy_pass = nil)
-  # 
-  # You may use them to work with authorization-enabled proxies:
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  #     
-  #     proxy_host = 'your.proxy.host'
-  #     proxy_port = 8080
-  #     uri = URI.parse(ENV['http_proxy'])
-  #     proxy_user, proxy_pass = uri.userinfo.split(/:/) if uri.userinfo
-  #     Net::HTTP::Proxy(proxy_host, proxy_port,
-  #                      proxy_user, proxy_pass).start('www.example.com') {|http|
-  #       # always connect to your.proxy.addr:8080 using specified username and password
-  #             :
-  #     }
-  #
-  # Note that net/http never rely on HTTP_PROXY environment variable.
-  # If you want to use proxy, set it explicitly.
-  # 
-  # === Following Redirection
-  # 
-  #     require 'net/http'
-  #     require 'uri'
-  # 
-  #     def fetch(uri_str, limit = 10)
-  #       # You should choose better exception. 
-  #       raise ArgumentError, 'HTTP redirect too deep' if limit == 0
-  # 
-  #       response = Net::HTTP.get_response(URI.parse(uri_str))
-  #       case response
-  #       when Net::HTTPSuccess     then response
-  #       when Net::HTTPRedirection then fetch(response['location'], limit - 1)
-  #       else
-  #         response.error!
-  #       end
-  #     end
-  # 
-  #     print fetch('http://www.ruby-lang.org')
-  # 
-  # Net::HTTPSuccess and Net::HTTPRedirection is a HTTPResponse class.
-  # All HTTPResponse objects belong to its own response class which
-  # indicate HTTP result status. For details of response classes,
-  # see section "HTTP Response Classes".
-  # 
-  # === Basic Authentication
-  # 
-  #     require 'net/http'
-  # 
-  #     Net::HTTP.start('www.example.com') {|http|
-  #       req = Net::HTTP::Get.new('/secret-page.html')
-  #       req.basic_auth 'account', 'password'
-  #       response = http.request(req)
-  #       print response.body
-  #     }
-  # 
-  # === HTTP Request Classes
-  #
-  # Here is HTTP request class hierarchy.
-  #
-  #   Net::HTTPRequest
-  #       Net::HTTP::Get
-  #       Net::HTTP::Head
-  #       Net::HTTP::Post
-  #       Net::HTTP::Put
-  #       Net::HTTP::Proppatch
-  #       Net::HTTP::Lock
-  #       Net::HTTP::Unlock
-  #       Net::HTTP::Options
-  #       Net::HTTP::Propfind
-  #       Net::HTTP::Delete
-  #       Net::HTTP::Move
-  #       Net::HTTP::Copy
-  #       Net::HTTP::Mkcol
-  #       Net::HTTP::Trace
-  #
-  # === HTTP Response Classes
-  #
-  # Here is HTTP response class hierarchy.
-  # All classes are defined in Net module.
-  #
-  #   HTTPResponse
-  #       HTTPUnknownResponse
-  #       HTTPInformation                    # 1xx
-  #           HTTPContinue                       # 100
-  #           HTTPSwitchProtocl                  # 101
-  #       HTTPSuccess                        # 2xx
-  #           HTTPOK                             # 200
-  #           HTTPCreated                        # 201
-  #           HTTPAccepted                       # 202
-  #           HTTPNonAuthoritativeInformation    # 203
-  #           HTTPNoContent                      # 204
-  #           HTTPResetContent                   # 205
-  #           HTTPPartialContent                 # 206
-  #       HTTPRedirection                    # 3xx
-  #           HTTPMultipleChoice                 # 300
-  #           HTTPMovedPermanently               # 301
-  #           HTTPFound                          # 302
-  #           HTTPSeeOther                       # 303
-  #           HTTPNotModified                    # 304
-  #           HTTPUseProxy                       # 305
-  #           HTTPTemporaryRedirect              # 307
-  #       HTTPClientError                    # 4xx
-  #           HTTPBadRequest                     # 400
-  #           HTTPUnauthorized                   # 401
-  #           HTTPPaymentRequired                # 402
-  #           HTTPForbidden                      # 403
-  #           HTTPNotFound                       # 404
-  #           HTTPMethodNotAllowed               # 405
-  #           HTTPNotAcceptable                  # 406
-  #           HTTPProxyAuthenticationRequired    # 407
-  #           HTTPRequestTimeOut                 # 408
-  #           HTTPConflict                       # 409
-  #           HTTPGone                           # 410
-  #           HTTPLengthRequired                 # 411
-  #           HTTPPreconditionFailed             # 412
-  #           HTTPRequestEntityTooLarge          # 413
-  #           HTTPRequestURITooLong              # 414
-  #           HTTPUnsupportedMediaType           # 415
-  #           HTTPRequestedRangeNotSatisfiable   # 416
-  #           HTTPExpectationFailed              # 417
-  #       HTTPServerError                    # 5xx
-  #           HTTPInternalServerError            # 500
-  #           HTTPNotImplemented                 # 501
-  #           HTTPBadGateway                     # 502
-  #           HTTPServiceUnavailable             # 503
-  #           HTTPGatewayTimeOut                 # 504
-  #           HTTPVersionNotSupported            # 505
-  # 
-  # == Switching Net::HTTP versions
-  # 
-  # You can use net/http.rb 1.1 features (bundled with Ruby 1.6)
-  # by calling HTTP.version_1_1. Calling Net::HTTP.version_1_2
-  # allows you to use 1.2 features again.
-  # 
-  #     # example
-  #     Net::HTTP.start {|http1| ...(http1 has 1.2 features)... }
-  # 
-  #     Net::HTTP.version_1_1
-  #     Net::HTTP.start {|http2| ...(http2 has 1.1 features)... }
-  # 
-  #     Net::HTTP.version_1_2
-  #     Net::HTTP.start {|http3| ...(http3 has 1.2 features)... }
-  # 
-  # This function is NOT thread-safe.
-  #
-  class HTTP < Protocol
-
-    # :stopdoc:
-    Revision = %q$Revision: 16878 $.split[1]
-    HTTPVersion = '1.1'
-    @newimpl = true
-    # :startdoc:
-
-    # Turns on net/http 1.2 (ruby 1.8) features.
-    # Defaults to ON in ruby 1.8.
-    #
-    # I strongly recommend to call this method always.
-    #
-    #   require 'net/http'
-    #   Net::HTTP.version_1_2
-    #
-    def HTTP.version_1_2
-      @newimpl = true
-    end
-
-    # Turns on net/http 1.1 (ruby 1.6) features.
-    # Defaults to OFF in ruby 1.8.
-    def HTTP.version_1_1
-      @newimpl = false
-    end
-
-    # true if net/http is in version 1.2 mode.
-    # Defaults to true.
-    def HTTP.version_1_2?
-      @newimpl
-    end
-
-    # true if net/http is in version 1.1 compatible mode.
-    # Defaults to true.
-    def HTTP.version_1_1?
-      not @newimpl
-    end
-
-    class << HTTP
-      alias is_version_1_1? version_1_1?   #:nodoc:
-      alias is_version_1_2? version_1_2?   #:nodoc:
-    end
-
-    #
-    # short cut methods
-    #
-
-    #
-    # Get body from target and output it to +$stdout+.  The
-    # target can either be specified as (+uri+), or as
-    # (+host+, +path+, +port+ = 80); so: 
-    #
-    #    Net::HTTP.get_print URI.parse('http://www.example.com/index.html')
-    #
-    # or:
-    #
-    #    Net::HTTP.get_print 'www.example.com', '/index.html'
-    #
-    def HTTP.get_print(uri_or_host, path = nil, port = nil)
-      get_response(uri_or_host, path, port) {|res|
-        res.read_body do |chunk|
-          $stdout.print chunk
-        end
-      }
-      nil
-    end
-
-    # Send a GET request to the target and return the response
-    # as a string.  The target can either be specified as
-    # (+uri+), or as (+host+, +path+, +port+ = 80); so:
-    # 
-    #    print Net::HTTP.get(URI.parse('http://www.example.com/index.html'))
-    #
-    # or:
-    #
-    #    print Net::HTTP.get('www.example.com', '/index.html')
-    #
-    def HTTP.get(uri_or_host, path = nil, port = nil)
-      get_response(uri_or_host, path, port).body
-    end
-
-    # Send a GET request to the target and return the response
-    # as a Net::HTTPResponse object.  The target can either be specified as
-    # (+uri+), or as (+host+, +path+, +port+ = 80); so:
-    # 
-    #    res = Net::HTTP.get_response(URI.parse('http://www.example.com/index.html'))
-    #    print res.body
-    #
-    # or:
-    #
-    #    res = Net::HTTP.get_response('www.example.com', '/index.html')
-    #    print res.body
-    #
-    def HTTP.get_response(uri_or_host, path = nil, port = nil, &block)
-      if path
-        host = uri_or_host
-        new(host, port || HTTP.default_port).start {|http|
-          return http.request_get(path, &block)
-        }
-      else
-        uri = uri_or_host
-        new(uri.host, uri.port).start {|http|
-          return http.request_get(uri.request_uri, &block)
-        }
-      end
-    end
-
-    # Posts HTML form data to the +URL+.
-    # Form data must be represented as a Hash of String to String, e.g:
-    #
-    #   { "cmd" => "search", "q" => "ruby", "max" => "50" }
-    #
-    # This method also does Basic Authentication iff +URL+.user exists.
-    #
-    # Example:
-    #
-    #   require 'net/http'
-    #   require 'uri'
-    #
-    #   HTTP.post_form URI.parse('http://www.example.com/search.cgi'),
-    #                  { "q" => "ruby", "max" => "50" }
-    #
-    def HTTP.post_form(url, params)
-      req = Post.new(url.path)
-      req.form_data = params
-      req.basic_auth url.user, url.password if url.user
-      new(url.host, url.port).start {|http|
-        http.request(req)
-      }
-    end
-
-    #
-    # HTTP session management
-    #
-
-    # The default port to use for HTTP requests; defaults to 80.
-    def HTTP.default_port
-      http_default_port()
-    end
-
-    # The default port to use for HTTP requests; defaults to 80.
-    def HTTP.http_default_port
-      80
-    end
-
-    # The default port to use for HTTPS requests; defaults to 443.
-    def HTTP.https_default_port
-      443
-    end
-
-    def HTTP.socket_type   #:nodoc: obsolete
-      BufferedIO
-    end
-
-    # creates a new Net::HTTP object and opens its TCP connection and 
-    # HTTP session.  If the optional block is given, the newly 
-    # created Net::HTTP object is passed to it and closed when the 
-    # block finishes.  In this case, the return value of this method
-    # is the return value of the block.  If no block is given, the
-    # return value of this method is the newly created Net::HTTP object
-    # itself, and the caller is responsible for closing it upon completion.
-    def HTTP.start(address, port = nil, p_addr = nil, p_port = nil, p_user = nil, p_pass = nil, &block) # :yield: +http+
-      new(address, port, p_addr, p_port, p_user, p_pass).start(&block)
-    end
-
-    class << HTTP
-      alias newobj new
-    end
-
-    # Creates a new Net::HTTP object.
-    # If +proxy_addr+ is given, creates an Net::HTTP object with proxy support.
-    # This method does not open the TCP connection.
-    def HTTP.new(address, port = nil, p_addr = nil, p_port = nil, p_user = nil, p_pass = nil)
-      h = Proxy(p_addr, p_port, p_user, p_pass).newobj(address, port)
-      h.instance_eval {
-        @newimpl = ::Net::HTTP.version_1_2?
-      }
-      h
-    end
-
-    # Creates a new Net::HTTP object for the specified +address+.
-    # This method does not open the TCP connection.
-    def initialize(address, port = nil)
-      @address = address
-      @port    = (port || HTTP.default_port)
-      @curr_http_version = HTTPVersion
-      @seems_1_0_server = false
-      @close_on_empty_response = false
-      @socket  = nil
-      @started = false
-      @open_timeout = nil
-      @read_timeout = 60
-      @debug_output = nil
-      @use_ssl = false
-      @ssl_context = nil
-    end
-
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} open=#{started?}>"
-    end
-
-    # *WARNING* This method causes serious security hole.
-    # Never use this method in production code.
-    #
-    # Set an output stream for debugging.
-    #
-    #   http = Net::HTTP.new
-    #   http.set_debug_output $stderr
-    #   http.start { .... }
-    #
-    def set_debug_output(output)
-      warn 'Net::HTTP#set_debug_output called after HTTP started' if started?
-      @debug_output = output
-    end
-
-    # The host name to connect to.
-    attr_reader :address
-
-    # The port number to connect to.
-    attr_reader :port
-
-    # Seconds to wait until connection is opened.
-    # If the HTTP object cannot open a connection in this many seconds,
-    # it raises a TimeoutError exception.
-    attr_accessor :open_timeout
-
-    # Seconds to wait until reading one block (by one read(2) call).
-    # If the HTTP object cannot open a connection in this many seconds,
-    # it raises a TimeoutError exception.
-    attr_reader :read_timeout
-
-    # Setter for the read_timeout attribute.
-    def read_timeout=(sec)
-      @socket.read_timeout = sec if @socket
-      @read_timeout = sec
-    end
-
-    # returns true if the HTTP session is started.
-    def started?
-      @started
-    end
-
-    alias active? started?   #:nodoc: obsolete
-
-    attr_accessor :close_on_empty_response
-
-    # returns true if use SSL/TLS with HTTP.
-    def use_ssl?
-      false   # redefined in net/https
-    end
-
-    # Opens TCP connection and HTTP session.
-    # 
-    # When this method is called with block, gives a HTTP object
-    # to the block and closes the TCP connection / HTTP session
-    # after the block executed.
-    #
-    # When called with a block, returns the return value of the
-    # block; otherwise, returns self.
-    #
-    def start  # :yield: http
-      raise IOError, 'HTTP session already opened' if @started
-      if block_given?
-        begin
-          do_start
-          return yield(self)
-        ensure
-          do_finish
-        end
-      end
-      do_start
-      self
-    end
-
-    def do_start
-      connect
-      @started = true
-    end
-    private :do_start
-
-    def connect
-      D "opening connection to #{conn_address()}..."
-      s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) }
-      D "opened"
-      if use_ssl?
-        unless @ssl_context.verify_mode
-          warn "warning: peer certificate won't be verified in this SSL session"
-          @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
-        end
-        s = OpenSSL::SSL::SSLSocket.new(s, @ssl_context)
-        s.sync_close = true
-      end
-      @socket = BufferedIO.new(s)
-      @socket.read_timeout = @read_timeout
-      @socket.debug_output = @debug_output
-      if use_ssl?
-        if proxy?
-          @socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
-                                    @address, @port, HTTPVersion)
-          @socket.writeline "Host: #{@address}:#{@port}"
-          if proxy_user
-            credential = ["#{proxy_user}:#{proxy_pass}"].pack('m')
-            credential.delete!("\r\n")
-            @socket.writeline "Proxy-Authorization: Basic #{credential}"
-          end
-          @socket.writeline ''
-          HTTPResponse.read_new(@socket).value
-        end
-        s.connect
-        if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
-          s.post_connection_check(@address)
-        end
-      end
-      on_connect
-    end
-    private :connect
-
-    def on_connect
-    end
-    private :on_connect
-
-    # Finishes HTTP session and closes TCP connection.
-    # Raises IOError if not started.
-    def finish
-      raise IOError, 'HTTP session not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      @started = false
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    #
-    # proxy
-    #
-
-    public
-
-    # no proxy
-    @is_proxy_class = false
-    @proxy_addr = nil
-    @proxy_port = nil
-    @proxy_user = nil
-    @proxy_pass = nil
-
-    # Creates an HTTP proxy class.
-    # Arguments are address/port of proxy host and username/password
-    # if authorization on proxy server is required.
-    # You can replace the HTTP class with created proxy class.
-    # 
-    # If ADDRESS is nil, this method returns self (Net::HTTP).
-    # 
-    #     # Example
-    #     proxy_class = Net::HTTP::Proxy('proxy.example.com', 8080)
-    #                     :
-    #     proxy_class.start('www.ruby-lang.org') {|http|
-    #       # connecting proxy.foo.org:8080
-    #                     :
-    #     }
-    # 
-    def HTTP.Proxy(p_addr, p_port = nil, p_user = nil, p_pass = nil)
-      return self unless p_addr
-      delta = ProxyDelta
-      proxyclass = Class.new(self)
-      proxyclass.module_eval {
-        include delta
-        # with proxy
-        @is_proxy_class = true
-        @proxy_address = p_addr
-        @proxy_port    = p_port || default_port()
-        @proxy_user    = p_user
-        @proxy_pass    = p_pass
-      }
-      proxyclass
-    end
-
-    class << HTTP
-      # returns true if self is a class which was created by HTTP::Proxy.
-      def proxy_class?
-        @is_proxy_class
-      end
-
-      attr_reader :proxy_address
-      attr_reader :proxy_port
-      attr_reader :proxy_user
-      attr_reader :proxy_pass
-    end
-
-    # True if self is a HTTP proxy class.
-    def proxy?
-      self.class.proxy_class?
-    end
-
-    # Address of proxy host. If self does not use a proxy, nil.
-    def proxy_address
-      self.class.proxy_address
-    end
-
-    # Port number of proxy host. If self does not use a proxy, nil.
-    def proxy_port
-      self.class.proxy_port
-    end
-
-    # User name for accessing proxy. If self does not use a proxy, nil.
-    def proxy_user
-      self.class.proxy_user
-    end
-
-    # User password for accessing proxy. If self does not use a proxy, nil.
-    def proxy_pass
-      self.class.proxy_pass
-    end
-
-    alias proxyaddr proxy_address   #:nodoc: obsolete
-    alias proxyport proxy_port      #:nodoc: obsolete
-
-    private
-
-    # without proxy
-
-    def conn_address
-      address()
-    end
-
-    def conn_port
-      port()
-    end
-
-    def edit_path(path)
-      path
-    end
-
-    module ProxyDelta   #:nodoc: internal use only
-      private
-
-      def conn_address
-        proxy_address()
-      end
-
-      def conn_port
-        proxy_port()
-      end
-
-      def edit_path(path)
-        use_ssl? ? path : "http://#{addr_port()}#{path}"
-      end
-    end
-
-    #
-    # HTTP operations
-    #
-
-    public
-
-    # Gets data from +path+ on the connected-to host.
-    # +header+ must be a Hash like { 'Accept' => '*/*', ... }.
-    #
-    # In version 1.1 (ruby 1.6), this method returns a pair of objects,
-    # a Net::HTTPResponse object and the entity body string.
-    # In version 1.2 (ruby 1.8), this method returns a Net::HTTPResponse
-    # object.
-    #
-    # If called with a block, yields each fragment of the
-    # entity body in turn as a string as it is read from
-    # the socket.  Note that in this case, the returned response
-    # object will *not* contain a (meaningful) body.
-    #
-    # +dest+ argument is obsolete.
-    # It still works but you must not use it.
-    #
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). In this case you can get a HTTPResponse object
-    # by "anException.response".
-    #
-    # In version 1.2, this method never raises exception.
-    #
-    #     # version 1.1 (bundled with Ruby 1.6)
-    #     response, body = http.get('/index.html')
-    #
-    #     # version 1.2 (bundled with Ruby 1.8 or later)
-    #     response = http.get('/index.html')
-    #     
-    #     # using block
-    #     File.open('result.txt', 'w') {|f|
-    #       http.get('/~foo/') do |str|
-    #         f.write str
-    #       end
-    #     }
-    #
-    def get(path, initheader = nil, dest = nil, &block) # :yield: +body_segment+
-      res = nil
-      request(Get.new(path, initheader)) {|r|
-        r.read_body dest, &block
-        res = r
-      }
-      unless @newimpl
-        res.value
-        return res, res.body
-      end
-
-      res
-    end
-
-    # Gets only the header from +path+ on the connected-to host.
-    # +header+ is a Hash like { 'Accept' => '*/*', ... }.
-    # 
-    # This method returns a Net::HTTPResponse object.
-    # 
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). On the case you can get a HTTPResponse object
-    # by "anException.response".
-    # In version 1.2, this method never raises an exception.
-    # 
-    #     response = nil
-    #     Net::HTTP.start('some.www.server', 80) {|http|
-    #       response = http.head('/index.html')
-    #     }
-    #     p response['content-type']
-    #
-    def head(path, initheader = nil) 
-      res = request(Head.new(path, initheader))
-      res.value unless @newimpl
-      res
-    end
-
-    # Posts +data+ (must be a String) to +path+. +header+ must be a Hash
-    # like { 'Accept' => '*/*', ... }.
-    # 
-    # In version 1.1 (ruby 1.6), this method returns a pair of objects, a
-    # Net::HTTPResponse object and an entity body string.
-    # In version 1.2 (ruby 1.8), this method returns a Net::HTTPResponse object.
-    # 
-    # If called with a block, yields each fragment of the
-    # entity body in turn as a string as it are read from
-    # the socket.  Note that in this case, the returned response
-    # object will *not* contain a (meaningful) body.
-    #
-    # +dest+ argument is obsolete.
-    # It still works but you must not use it.
-    # 
-    # In version 1.1, this method might raise an exception for 
-    # 3xx (redirect). In this case you can get an HTTPResponse object
-    # by "anException.response".
-    # In version 1.2, this method never raises exception.
-    # 
-    #     # version 1.1
-    #     response, body = http.post('/cgi-bin/search.rb', 'query=foo')
-    # 
-    #     # version 1.2
-    #     response = http.post('/cgi-bin/search.rb', 'query=foo')
-    # 
-    #     # using block
-    #     File.open('result.txt', 'w') {|f|
-    #       http.post('/cgi-bin/search.rb', 'query=foo') do |str|
-    #         f.write str
-    #       end
-    #     }
-    #
-    # You should set Content-Type: header field for POST.
-    # If no Content-Type: field given, this method uses
-    # "application/x-www-form-urlencoded" by default.
-    #
-    def post(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+
-      res = nil
-      request(Post.new(path, initheader), data) {|r|
-        r.read_body dest, &block
-        res = r
-      }
-      unless @newimpl
-        res.value
-        return res, res.body
-      end
-      res
-    end
-
-    def put(path, data, initheader = nil)   #:nodoc:
-      res = request(Put.new(path, initheader), data)
-      res.value unless @newimpl
-      res
-    end
-
-    # Sends a PROPPATCH request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def proppatch(path, body, initheader = nil)
-      request(Proppatch.new(path, initheader), body)
-    end
-
-    # Sends a LOCK request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def lock(path, body, initheader = nil)
-      request(Lock.new(path, initheader), body)
-    end
-
-    # Sends a UNLOCK request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def unlock(path, body, initheader = nil)
-      request(Unlock.new(path, initheader), body)
-    end
-
-    # Sends a OPTIONS request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def options(path, initheader = nil)
-      request(Options.new(path, initheader))
-    end
-
-    # Sends a PROPFIND request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def propfind(path, body = nil, initheader = {'Depth' => '0'})
-      request(Propfind.new(path, initheader), body)
-    end
-
-    # Sends a DELETE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def delete(path, initheader = {'Depth' => 'Infinity'})
-      request(Delete.new(path, initheader))
-    end
-
-    # Sends a MOVE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def move(path, initheader = nil)
-      request(Move.new(path, initheader))
-    end
-
-    # Sends a COPY request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def copy(path, initheader = nil)
-      request(Copy.new(path, initheader))
-    end
-
-    # Sends a MKCOL request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def mkcol(path, body = nil, initheader = nil)
-      request(Mkcol.new(path, initheader), body)
-    end
-
-    # Sends a TRACE request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    def trace(path, initheader = nil)
-      request(Trace.new(path, initheader))
-    end
-
-    # Sends a GET request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     response = http.request_get('/index.html')
-    #     # The entity body is already read here.
-    #     p response['content-type']
-    #     puts response.body
-    # 
-    #     # using block
-    #     http.request_get('/index.html') {|response|
-    #       p response['content-type']
-    #       response.read_body do |str|   # read body now
-    #         print str
-    #       end
-    #     }
-    #
-    def request_get(path, initheader = nil, &block) # :yield: +response+
-      request(Get.new(path, initheader), &block)
-    end
-
-    # Sends a HEAD request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     response = http.request_head('/index.html')
-    #     p response['content-type']
-    #
-    def request_head(path, initheader = nil, &block)
-      request(Head.new(path, initheader), &block)
-    end
-
-    # Sends a POST request to the +path+ and gets a response,
-    # as an HTTPResponse object.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns the response.
-    # 
-    # This method never raises Net::* exceptions.
-    # 
-    #     # example
-    #     response = http.request_post('/cgi-bin/nice.rb', 'datadatadata...')
-    #     p response.status
-    #     puts response.body          # body is already read
-    # 
-    #     # using block
-    #     http.request_post('/cgi-bin/nice.rb', 'datadatadata...') {|response|
-    #       p response.status
-    #       p response['content-type']
-    #       response.read_body do |str|   # read body now
-    #         print str
-    #       end
-    #     }
-    #
-    def request_post(path, data, initheader = nil, &block) # :yield: +response+
-      request Post.new(path, initheader), data, &block
-    end
-
-    def request_put(path, data, initheader = nil, &block)   #:nodoc:
-      request Put.new(path, initheader), data, &block
-    end
-
-    alias get2   request_get    #:nodoc: obsolete
-    alias head2  request_head   #:nodoc: obsolete
-    alias post2  request_post   #:nodoc: obsolete
-    alias put2   request_put    #:nodoc: obsolete
-
-
-    # Sends an HTTP request to the HTTP server.
-    # This method also sends DATA string if DATA is given.
-    #
-    # Returns a HTTPResponse object.
-    # 
-    # This method never raises Net::* exceptions.
-    #
-    #    response = http.send_request('GET', '/index.html')
-    #    puts response.body
-    #
-    def send_request(name, path, data = nil, header = nil)
-      r = HTTPGenericRequest.new(name,(data ? true : false),true,path,header)
-      request r, data
-    end
-
-    # Sends an HTTPRequest object REQUEST to the HTTP server.
-    # This method also sends DATA string if REQUEST is a post/put request.
-    # Giving DATA for get/head request causes ArgumentError.
-    # 
-    # When called with a block, yields an HTTPResponse object.
-    # The body of this response will not have been read yet;
-    # the caller can process it using HTTPResponse#read_body,
-    # if desired.
-    #
-    # Returns a HTTPResponse object.
-    # 
-    # This method never raises Net::* exceptions.
-    #
-    def request(req, body = nil, &block)  # :yield: +response+
-      unless started?
-        start {
-          req['connection'] ||= 'close'
-          return request(req, body, &block)
-        }
-      end
-      if proxy_user()
-        unless use_ssl?
-          req.proxy_basic_auth proxy_user(), proxy_pass()
-        end
-      end
-
-      req.set_body_internal body
-      begin_transport req
-        req.exec @socket, @curr_http_version, edit_path(req.path)
-        begin
-          res = HTTPResponse.read_new(@socket)
-        end while res.kind_of?(HTTPContinue)
-        res.reading_body(@socket, req.response_body_permitted?) {
-          yield res if block_given?
-        }
-      end_transport req, res
-
-      res
-    end
-
-    private
-
-    def begin_transport(req)
-      if @socket.closed?
-        connect
-      end
-      if @seems_1_0_server
-        req['connection'] ||= 'close'
-      end
-      if not req.response_body_permitted? and @close_on_empty_response
-        req['connection'] ||= 'close'
-      end
-      req['host'] ||= addr_port()
-    end
-
-    def end_transport(req, res)
-      @curr_http_version = res.http_version
-      if not res.body and @close_on_empty_response
-        D 'Conn close'
-        @socket.close
-      elsif keep_alive?(req, res)
-        D 'Conn keep-alive'
-        if @socket.closed?
-          D 'Conn (but seems 1.0 server)'
-          @seems_1_0_server = true
-        end
-      else
-        D 'Conn close'
-        @socket.close
-      end
-    end
-
-    def keep_alive?(req, res)
-      return false if /close/i =~ req['connection'].to_s
-      return false if @seems_1_0_server
-      return true  if /keep-alive/i =~ res['connection'].to_s
-      return false if /close/i      =~ res['connection'].to_s
-      return true  if /keep-alive/i =~ res['proxy-connection'].to_s
-      return false if /close/i      =~ res['proxy-connection'].to_s
-      (@curr_http_version == '1.1')
-    end
-
-    #
-    # utils
-    #
-
-    private
-
-    def addr_port
-      if use_ssl?
-        address() + (port == HTTP.https_default_port ? '' : ":#{port()}")
-      else
-        address() + (port == HTTP.http_default_port ? '' : ":#{port()}")
-      end
-    end
-
-    def D(msg)
-      return unless @debug_output
-      @debug_output << msg
-      @debug_output << "\n"
-    end
-
-  end
-
-  HTTPSession = HTTP
-
-
-  #
-  # Header module.
-  #
-  # Provides access to @header in the mixed-into class as a hash-like
-  # object, except with case-insensitive keys.  Also provides
-  # methods for accessing commonly-used header values in a more
-  # convenient format.
-  #
-  module HTTPHeader
-
-    def initialize_http_header(initheader)
-      @header = {}
-      return unless initheader
-      initheader.each do |key, value|
-        warn "net/http: warning: duplicated HTTP header: #{key}" if key?(key) and $VERBOSE
-        @header[key.downcase] = [value.strip]
-      end
-    end
-
-    def size   #:nodoc: obsolete
-      @header.size
-    end
-
-    alias length size   #:nodoc: obsolete
-
-    # Returns the header field corresponding to the case-insensitive key.
-    # For example, a key of "Content-Type" might return "text/html"
-    def [](key)
-      a = @header[key.downcase] or return nil
-      a.join(', ')
-    end
-
-    # Sets the header field corresponding to the case-insensitive key.
-    def []=(key, val)
-      unless val
-        @header.delete key.downcase
-        return val
-      end
-      @header[key.downcase] = [val]
-    end
-
-    # [Ruby 1.8.3]
-    # Adds header field instead of replace.
-    # Second argument +val+ must be a String.
-    # See also #[]=, #[] and #get_fields.
-    #
-    #   request.add_field 'X-My-Header', 'a'
-    #   p request['X-My-Header']              #=> "a"
-    #   p request.get_fields('X-My-Header')   #=> ["a"]
-    #   request.add_field 'X-My-Header', 'b'
-    #   p request['X-My-Header']              #=> "a, b"
-    #   p request.get_fields('X-My-Header')   #=> ["a", "b"]
-    #   request.add_field 'X-My-Header', 'c'
-    #   p request['X-My-Header']              #=> "a, b, c"
-    #   p request.get_fields('X-My-Header')   #=> ["a", "b", "c"]
-    #
-    def add_field(key, val)
-      if @header.key?(key.downcase)
-        @header[key.downcase].push val
-      else
-        @header[key.downcase] = [val]
-      end
-    end
-
-    # [Ruby 1.8.3]
-    # Returns an array of header field strings corresponding to the
-    # case-insensitive +key+.  This method allows you to get duplicated
-    # header fields without any processing.  See also #[].
-    #
-    #   p response.get_fields('Set-Cookie')
-    #     #=> ["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23",
-    #          "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"]
-    #   p response['Set-Cookie']
-    #     #=> "session=al98axx; expires=Fri, 31-Dec-1999 23:58:23, query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"
-    #
-    def get_fields(key)
-      return nil unless @header[key.downcase]
-      @header[key.downcase].dup
-    end
-
-    # Returns the header field corresponding to the case-insensitive key.
-    # Returns the default value +args+, or the result of the block, or nil,
-    # if there's no header field named key.  See Hash#fetch
-    def fetch(key, *args, &block)   #:yield: +key+
-      a = @header.fetch(key.downcase, *args, &block)
-      a.join(', ')
-    end
-
-    # Iterates for each header names and values.
-    def each_header   #:yield: +key+, +value+
-      @header.each do |k,va|
-        yield k, va.join(', ')
-      end
-    end
-
-    alias each each_header
-
-    # Iterates for each header names.
-    def each_name(&block)   #:yield: +key+
-      @header.each_key(&block)
-    end
-
-    alias each_key each_name
-
-    # Iterates for each capitalized header names.
-    def each_capitalized_name(&block)   #:yield: +key+
-      @header.each_key do |k|
-        yield capitalize(k)
-      end
-    end
-
-    # Iterates for each header values.
-    def each_value   #:yield: +value+
-      @header.each_value do |va|
-        yield va.join(', ')
-      end
-    end
-
-    # Removes a header field.
-    def delete(key)
-      @header.delete(key.downcase)
-    end
-
-    # true if +key+ header exists.
-    def key?(key)
-      @header.key?(key.downcase)
-    end
-
-    # Returns a Hash consist of header names and values.
-    def to_hash
-      @header.dup
-    end
-
-    # As for #each_header, except the keys are provided in capitalized form.
-    def each_capitalized
-      @header.each do |k,v|
-        yield capitalize(k), v.join(', ')
-      end
-    end
-
-    alias canonical_each each_capitalized
-
-    def capitalize(name)
-      name.split(/-/).map {|s| s.capitalize }.join('-')
-    end
-    private :capitalize
-
-    # Returns an Array of Range objects which represents Range: header field,
-    # or +nil+ if there is no such header.
-    def range
-      return nil unless @header['range']
-      self['Range'].split(/,/).map {|spec|
-        m = /bytes\s*=\s*(\d+)?\s*-\s*(\d+)?/i.match(spec) or
-                raise HTTPHeaderSyntaxError, "wrong Range: #{spec}"
-        d1 = m[1].to_i
-        d2 = m[2].to_i
-        if    m[1] and m[2] then  d1..d2
-        elsif m[1]          then  d1..-1
-        elsif          m[2] then -d2..-1
-        else
-          raise HTTPHeaderSyntaxError, 'range is not specified'
-        end
-      }
-    end
-
-    # Set Range: header from Range (arg r) or beginning index and
-    # length from it (arg idx&len).
-    #
-    #   req.range = (0..1023)
-    #   req.set_range 0, 1023
-    #
-    def set_range(r, e = nil)
-      unless r
-        @header.delete 'range'
-        return r
-      end
-      r = (r...r+e) if e
-      case r
-      when Numeric
-        n = r.to_i
-        rangestr = (n > 0 ? "0-#{n-1}" : "-#{-n}")
-      when Range
-        first = r.first
-        last = r.last
-        last -= 1 if r.exclude_end?
-        if last == -1
-          rangestr = (first > 0 ? "#{first}-" : "-#{-first}")
-        else
-          raise HTTPHeaderSyntaxError, 'range.first is negative' if first < 0
-          raise HTTPHeaderSyntaxError, 'range.last is negative' if last < 0
-          raise HTTPHeaderSyntaxError, 'must be .first < .last' if first > last
-          rangestr = "#{first}-#{last}"
-        end
-      else
-        raise TypeError, 'Range/Integer is required'
-      end
-      @header['range'] = ["bytes=#{rangestr}"]
-      r
-    end
-
-    alias range= set_range
-
-    # Returns an Integer object which represents the Content-Length: header field
-    # or +nil+ if that field is not provided.
-    def content_length
-      return nil unless key?('Content-Length')
-      len = self['Content-Length'].slice(/\d+/) or
-          raise HTTPHeaderSyntaxError, 'wrong Content-Length format'
-      len.to_i
-    end
-    
-    def content_length=(len)
-      unless len
-        @header.delete 'content-length'
-        return nil
-      end
-      @header['content-length'] = [len.to_i.to_s]
-    end
-
-    # Returns "true" if the "transfer-encoding" header is present and
-    # set to "chunked".  This is an HTTP/1.1 feature, allowing the 
-    # the content to be sent in "chunks" without at the outset
-    # stating the entire content length.
-    def chunked?
-      return false unless @header['transfer-encoding']
-      field = self['Transfer-Encoding']
-      (/(?:\A|[^\-\w])chunked(?![\-\w])/i =~ field) ? true : false
-    end
-
-    # Returns a Range object which represents Content-Range: header field.
-    # This indicates, for a partial entity body, where this fragment
-    # fits inside the full entity body, as range of byte offsets.
-    def content_range
-      return nil unless @header['content-range']
-      m = %r<bytes\s+(\d+)-(\d+)/(\d+|\*)>i.match(self['Content-Range']) or
-          raise HTTPHeaderSyntaxError, 'wrong Content-Range format'
-      m[1].to_i .. m[2].to_i + 1
-    end
-
-    # The length of the range represented in Content-Range: header.
-    def range_length
-      r = content_range() or return nil
-      r.end - r.begin
-    end
-
-    # Returns a content type string such as "text/html".
-    # This method returns nil if Content-Type: header field does not exist.
-    def content_type
-      return nil unless main_type()
-      if sub_type()
-      then "#{main_type()}/#{sub_type()}"
-      else main_type()
-      end
-    end
-
-    # Returns a content type string such as "text".
-    # This method returns nil if Content-Type: header field does not exist.
-    def main_type
-      return nil unless @header['content-type']
-      self['Content-Type'].split(';').first.to_s.split('/')[0].to_s.strip
-    end
-    
-    # Returns a content type string such as "html".
-    # This method returns nil if Content-Type: header field does not exist
-    # or sub-type is not given (e.g. "Content-Type: text").
-    def sub_type
-      return nil unless @header['content-type']
-      main, sub = *self['Content-Type'].split(';').first.to_s.split('/')
-      return nil unless sub
-      sub.strip
-    end
-
-    # Returns content type parameters as a Hash as like
-    # {"charset" => "iso-2022-jp"}.
-    def type_params
-      result = {}
-      list = self['Content-Type'].to_s.split(';')
-      list.shift
-      list.each do |param|
-        k, v = *param.split('=', 2)
-        result[k.strip] = v.strip
-      end
-      result
-    end
-
-    # Set Content-Type: header field by +type+ and +params+.
-    # +type+ must be a String, +params+ must be a Hash.
-    def set_content_type(type, params = {})
-      @header['content-type'] = [type + params.map{|k,v|"; #{k}=#{v}"}.join('')]
-    end
-
-    alias content_type= set_content_type
-
-    # Set header fields and a body from HTML form data.
-    # +params+ should be a Hash containing HTML form data.
-    # Optional argument +sep+ means data record separator.
-    #
-    # This method also set Content-Type: header field to
-    # application/x-www-form-urlencoded.
-    def set_form_data(params, sep = '&')
-      self.body = params.map {|k,v| "#{urlencode(k.to_s)}=#{urlencode(v.to_s)}" }.join(sep)
-      self.content_type = 'application/x-www-form-urlencoded'
-    end
-
-    alias form_data= set_form_data
-
-    def urlencode(str)
-      str.gsub(/[^a-zA-Z0-9_\.\-]/n) {|s| sprintf('%%%02x', s[0]) }
-    end
-    private :urlencode
-
-    # Set the Authorization: header for "Basic" authorization.
-    def basic_auth(account, password)
-      @header['authorization'] = [basic_encode(account, password)]
-    end
-
-    # Set Proxy-Authorization: header for "Basic" authorization.
-    def proxy_basic_auth(account, password)
-      @header['proxy-authorization'] = [basic_encode(account, password)]
-    end
-
-    def basic_encode(account, password)
-      'Basic ' + ["#{account}:#{password}"].pack('m').delete("\r\n")
-    end
-    private :basic_encode
-
-  end
-
-
-  #
-  # Parent of HTTPRequest class.  Do not use this directly; use
-  # a subclass of HTTPRequest.
-  #
-  # Mixes in the HTTPHeader module.
-  #
-  class HTTPGenericRequest
-
-    include HTTPHeader
-
-    def initialize(m, reqbody, resbody, path, initheader = nil)
-      @method = m
-      @request_has_body = reqbody
-      @response_has_body = resbody
-      raise ArgumentError, "HTTP request path is empty" if path.empty?
-      @path = path
-      initialize_http_header initheader
-      self['Accept'] ||= '*/*'
-      @body = nil
-      @body_stream = nil
-    end
-
-    attr_reader :method
-    attr_reader :path
-
-    def inspect
-      "\#<#{self.class} #{@method}>"
-    end
-
-    def request_body_permitted?
-      @request_has_body
-    end
-
-    def response_body_permitted?
-      @response_has_body
-    end
-
-    def body_exist?
-      warn "Net::HTTPRequest#body_exist? is obsolete; use response_body_permitted?" if $VERBOSE
-      response_body_permitted?
-    end
-
-    attr_reader :body
-
-    def body=(str)
-      @body = str
-      @body_stream = nil
-      str
-    end
-
-    attr_reader :body_stream
-
-    def body_stream=(input)
-      @body = nil
-      @body_stream = input
-      input
-    end
-
-    def set_body_internal(str)   #:nodoc: internal use only
-      raise ArgumentError, "both of body argument and HTTPRequest#body set" if str and (@body or @body_stream)
-      self.body = str if str
-    end
-
-    #
-    # write
-    #
-
-    def exec(sock, ver, path)   #:nodoc: internal use only
-      if @body
-        send_request_with_body sock, ver, path, @body
-      elsif @body_stream
-        send_request_with_body_stream sock, ver, path, @body_stream
-      else
-        write_header sock, ver, path
-      end
-    end
-
-    private
-
-    def send_request_with_body(sock, ver, path, body)
-      self.content_length = body.length
-      delete 'Transfer-Encoding'
-      supply_default_content_type
-      write_header sock, ver, path
-      sock.write body
-    end
-
-    def send_request_with_body_stream(sock, ver, path, f)
-      unless content_length() or chunked?
-        raise ArgumentError,
-            "Content-Length not given and Transfer-Encoding is not `chunked'"
-      end
-      supply_default_content_type
-      write_header sock, ver, path
-      if chunked?
-        while s = f.read(1024)
-          sock.write(sprintf("%x\r\n", s.length) << s << "\r\n")
-        end
-        sock.write "0\r\n\r\n"
-      else
-        while s = f.read(1024)
-          sock.write s
-        end
-      end
-    end
-
-    def supply_default_content_type
-      return if content_type()
-      warn 'net/http: warning: Content-Type did not set; using application/x-www-form-urlencoded' if $VERBOSE
-      set_content_type 'application/x-www-form-urlencoded'
-    end
-
-    def write_header(sock, ver, path)
-      buf = "#{@method} #{path} HTTP/#{ver}\r\n"
-      each_capitalized do |k,v|
-        buf << "#{k}: #{v}\r\n"
-      end
-      buf << "\r\n"
-      sock.write buf
-    end
-  
-  end
-
-
-  # 
-  # HTTP request class. This class wraps request header and entity path.
-  # You *must* use its subclass, Net::HTTP::Get, Post, Head.
-  # 
-  class HTTPRequest < HTTPGenericRequest
-
-    # Creates HTTP request object.
-    def initialize(path, initheader = nil)
-      super self.class::METHOD,
-            self.class::REQUEST_HAS_BODY,
-            self.class::RESPONSE_HAS_BODY,
-            path, initheader
-    end
-  end
-
-
-  class HTTP   # reopen
-    #
-    # HTTP 1.1 methods --- RFC2616
-    #
-
-    class Get < HTTPRequest
-      METHOD = 'GET'
-      REQUEST_HAS_BODY  = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Head < HTTPRequest
-      METHOD = 'HEAD'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = false
-    end
-
-    class Post < HTTPRequest
-      METHOD = 'POST'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Put < HTTPRequest
-      METHOD = 'PUT'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Delete < HTTPRequest
-      METHOD = 'DELETE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Options < HTTPRequest
-      METHOD = 'OPTIONS'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = false
-    end
-
-    class Trace < HTTPRequest
-      METHOD = 'TRACE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    #
-    # WebDAV methods --- RFC2518
-    #
-
-    class Propfind < HTTPRequest
-      METHOD = 'PROPFIND'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Proppatch < HTTPRequest
-      METHOD = 'PROPPATCH'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Mkcol < HTTPRequest
-      METHOD = 'MKCOL'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Copy < HTTPRequest
-      METHOD = 'COPY'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Move < HTTPRequest
-      METHOD = 'MOVE'
-      REQUEST_HAS_BODY = false
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Lock < HTTPRequest
-      METHOD = 'LOCK'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-
-    class Unlock < HTTPRequest
-      METHOD = 'UNLOCK'
-      REQUEST_HAS_BODY = true
-      RESPONSE_HAS_BODY = true
-    end
-  end
-
-
-  ###
-  ### Response
-  ###
-
-  # HTTP exception class.
-  # You must use its subclasses.
-  module HTTPExceptions
-    def initialize(msg, res)   #:nodoc:
-      super msg
-      @response = res
-    end
-    attr_reader :response
-    alias data response    #:nodoc: obsolete
-  end
-  class HTTPError < ProtocolError
-    include HTTPExceptions
-  end
-  class HTTPRetriableError < ProtoRetriableError
-    include HTTPExceptions
-  end
-  class HTTPServerException < ProtoServerError
-    # We cannot use the name "HTTPServerError", it is the name of the response.
-    include HTTPExceptions
-  end
-  class HTTPFatalError < ProtoFatalError
-    include HTTPExceptions
-  end
-
-
-  # HTTP response class. This class wraps response header and entity.
-  # Mixes in the HTTPHeader module, which provides access to response
-  # header values both via hash-like methods and individual readers.
-  # Note that each possible HTTP response code defines its own 
-  # HTTPResponse subclass.  These are listed below.
-  # All classes are
-  # defined under the Net module. Indentation indicates inheritance.
-  # 
-  #   xxx        HTTPResponse
-  # 
-  #     1xx        HTTPInformation
-  #       100        HTTPContinue    
-  #       101        HTTPSwitchProtocol
-  # 
-  #     2xx        HTTPSuccess
-  #       200        HTTPOK
-  #       201        HTTPCreated
-  #       202        HTTPAccepted
-  #       203        HTTPNonAuthoritativeInformation
-  #       204        HTTPNoContent
-  #       205        HTTPResetContent
-  #       206        HTTPPartialContent
-  # 
-  #     3xx        HTTPRedirection
-  #       300        HTTPMultipleChoice
-  #       301        HTTPMovedPermanently
-  #       302        HTTPFound
-  #       303        HTTPSeeOther
-  #       304        HTTPNotModified
-  #       305        HTTPUseProxy
-  #       307        HTTPTemporaryRedirect
-  # 
-  #     4xx        HTTPClientError
-  #       400        HTTPBadRequest
-  #       401        HTTPUnauthorized
-  #       402        HTTPPaymentRequired
-  #       403        HTTPForbidden
-  #       404        HTTPNotFound
-  #       405        HTTPMethodNotAllowed
-  #       406        HTTPNotAcceptable
-  #       407        HTTPProxyAuthenticationRequired
-  #       408        HTTPRequestTimeOut
-  #       409        HTTPConflict
-  #       410        HTTPGone
-  #       411        HTTPLengthRequired
-  #       412        HTTPPreconditionFailed
-  #       413        HTTPRequestEntityTooLarge
-  #       414        HTTPRequestURITooLong
-  #       415        HTTPUnsupportedMediaType
-  #       416        HTTPRequestedRangeNotSatisfiable
-  #       417        HTTPExpectationFailed
-  # 
-  #     5xx        HTTPServerError
-  #       500        HTTPInternalServerError
-  #       501        HTTPNotImplemented
-  #       502        HTTPBadGateway
-  #       503        HTTPServiceUnavailable
-  #       504        HTTPGatewayTimeOut
-  #       505        HTTPVersionNotSupported
-  # 
-  #     xxx        HTTPUnknownResponse
-  #
-  class HTTPResponse
-    # true if the response has body.
-    def HTTPResponse.body_permitted?
-      self::HAS_BODY
-    end
-
-    def HTTPResponse.exception_type   # :nodoc: internal use only
-      self::EXCEPTION_TYPE
-    end
-  end   # reopened after
-
-  # :stopdoc:
-
-  class HTTPUnknownResponse < HTTPResponse
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPInformation < HTTPResponse           # 1xx
-    HAS_BODY = false
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPSuccess < HTTPResponse               # 2xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPError
-  end
-  class HTTPRedirection < HTTPResponse           # 3xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPRetriableError
-  end
-  class HTTPClientError < HTTPResponse           # 4xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPServerException   # for backward compatibility
-  end
-  class HTTPServerError < HTTPResponse           # 5xx
-    HAS_BODY = true
-    EXCEPTION_TYPE = HTTPFatalError    # for backward compatibility
-  end
-
-  class HTTPContinue < HTTPInformation           # 100
-    HAS_BODY = false
-  end
-  class HTTPSwitchProtocol < HTTPInformation     # 101
-    HAS_BODY = false
-  end
-
-  class HTTPOK < HTTPSuccess                            # 200
-    HAS_BODY = true
-  end
-  class HTTPCreated < HTTPSuccess                       # 201
-    HAS_BODY = true
-  end
-  class HTTPAccepted < HTTPSuccess                      # 202
-    HAS_BODY = true
-  end
-  class HTTPNonAuthoritativeInformation < HTTPSuccess   # 203
-    HAS_BODY = true
-  end
-  class HTTPNoContent < HTTPSuccess                     # 204
-    HAS_BODY = false
-  end
-  class HTTPResetContent < HTTPSuccess                  # 205
-    HAS_BODY = false
-  end
-  class HTTPPartialContent < HTTPSuccess                # 206
-    HAS_BODY = true
-  end
-
-  class HTTPMultipleChoice < HTTPRedirection     # 300
-    HAS_BODY = true
-  end
-  class HTTPMovedPermanently < HTTPRedirection   # 301
-    HAS_BODY = true
-  end
-  class HTTPFound < HTTPRedirection              # 302
-    HAS_BODY = true
-  end
-  HTTPMovedTemporarily = HTTPFound
-  class HTTPSeeOther < HTTPRedirection           # 303
-    HAS_BODY = true
-  end
-  class HTTPNotModified < HTTPRedirection        # 304
-    HAS_BODY = false
-  end
-  class HTTPUseProxy < HTTPRedirection           # 305
-    HAS_BODY = false
-  end
-  # 306 unused
-  class HTTPTemporaryRedirect < HTTPRedirection  # 307
-    HAS_BODY = true
-  end
-
-  class HTTPBadRequest < HTTPClientError                    # 400
-    HAS_BODY = true
-  end
-  class HTTPUnauthorized < HTTPClientError                  # 401
-    HAS_BODY = true
-  end
-  class HTTPPaymentRequired < HTTPClientError               # 402
-    HAS_BODY = true
-  end
-  class HTTPForbidden < HTTPClientError                     # 403
-    HAS_BODY = true
-  end
-  class HTTPNotFound < HTTPClientError                      # 404
-    HAS_BODY = true
-  end
-  class HTTPMethodNotAllowed < HTTPClientError              # 405
-    HAS_BODY = true
-  end
-  class HTTPNotAcceptable < HTTPClientError                 # 406
-    HAS_BODY = true
-  end
-  class HTTPProxyAuthenticationRequired < HTTPClientError   # 407
-    HAS_BODY = true
-  end
-  class HTTPRequestTimeOut < HTTPClientError                # 408
-    HAS_BODY = true
-  end
-  class HTTPConflict < HTTPClientError                      # 409
-    HAS_BODY = true
-  end
-  class HTTPGone < HTTPClientError                          # 410
-    HAS_BODY = true
-  end
-  class HTTPLengthRequired < HTTPClientError                # 411
-    HAS_BODY = true
-  end
-  class HTTPPreconditionFailed < HTTPClientError            # 412
-    HAS_BODY = true
-  end
-  class HTTPRequestEntityTooLarge < HTTPClientError         # 413
-    HAS_BODY = true
-  end
-  class HTTPRequestURITooLong < HTTPClientError             # 414
-    HAS_BODY = true
-  end
-  HTTPRequestURITooLarge = HTTPRequestURITooLong
-  class HTTPUnsupportedMediaType < HTTPClientError          # 415
-    HAS_BODY = true
-  end
-  class HTTPRequestedRangeNotSatisfiable < HTTPClientError  # 416
-    HAS_BODY = true
-  end
-  class HTTPExpectationFailed < HTTPClientError             # 417
-    HAS_BODY = true
-  end
-
-  class HTTPInternalServerError < HTTPServerError   # 500
-    HAS_BODY = true
-  end
-  class HTTPNotImplemented < HTTPServerError        # 501
-    HAS_BODY = true
-  end
-  class HTTPBadGateway < HTTPServerError            # 502
-    HAS_BODY = true
-  end
-  class HTTPServiceUnavailable < HTTPServerError    # 503
-    HAS_BODY = true
-  end
-  class HTTPGatewayTimeOut < HTTPServerError        # 504
-    HAS_BODY = true
-  end
-  class HTTPVersionNotSupported < HTTPServerError   # 505
-    HAS_BODY = true
-  end
-
-  # :startdoc:
-
-
-  class HTTPResponse   # reopen
-
-    CODE_CLASS_TO_OBJ = {
-      '1' => HTTPInformation,
-      '2' => HTTPSuccess,
-      '3' => HTTPRedirection,
-      '4' => HTTPClientError,
-      '5' => HTTPServerError
-    }
-    CODE_TO_OBJ = {
-      '100' => HTTPContinue,
-      '101' => HTTPSwitchProtocol,
-
-      '200' => HTTPOK,
-      '201' => HTTPCreated,
-      '202' => HTTPAccepted,
-      '203' => HTTPNonAuthoritativeInformation,
-      '204' => HTTPNoContent,
-      '205' => HTTPResetContent,
-      '206' => HTTPPartialContent,
-
-      '300' => HTTPMultipleChoice,
-      '301' => HTTPMovedPermanently,
-      '302' => HTTPFound,
-      '303' => HTTPSeeOther,
-      '304' => HTTPNotModified,
-      '305' => HTTPUseProxy,
-      '307' => HTTPTemporaryRedirect,
-
-      '400' => HTTPBadRequest,
-      '401' => HTTPUnauthorized,
-      '402' => HTTPPaymentRequired,
-      '403' => HTTPForbidden,
-      '404' => HTTPNotFound,
-      '405' => HTTPMethodNotAllowed,
-      '406' => HTTPNotAcceptable,
-      '407' => HTTPProxyAuthenticationRequired,
-      '408' => HTTPRequestTimeOut,
-      '409' => HTTPConflict,
-      '410' => HTTPGone,
-      '411' => HTTPLengthRequired,
-      '412' => HTTPPreconditionFailed,
-      '413' => HTTPRequestEntityTooLarge,
-      '414' => HTTPRequestURITooLong,
-      '415' => HTTPUnsupportedMediaType,
-      '416' => HTTPRequestedRangeNotSatisfiable,
-      '417' => HTTPExpectationFailed,
-
-      '500' => HTTPInternalServerError,
-      '501' => HTTPNotImplemented,
-      '502' => HTTPBadGateway,
-      '503' => HTTPServiceUnavailable,
-      '504' => HTTPGatewayTimeOut,
-      '505' => HTTPVersionNotSupported
-    }
-
-    class << HTTPResponse
-      def read_new(sock)   #:nodoc: internal use only
-        httpv, code, msg = read_status_line(sock)
-        res = response_class(code).new(httpv, code, msg)
-        each_response_header(sock) do |k,v|
-          res.add_field k, v
-        end
-        res
-      end
-
-      private
-
-      def read_status_line(sock)
-        str = sock.readline
-        m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)\s*(.*)\z/in.match(str) or
-          raise HTTPBadResponse, "wrong status line: #{str.dump}"
-        m.captures
-      end
-
-      def response_class(code)
-        CODE_TO_OBJ[code] or
-        CODE_CLASS_TO_OBJ[code[0,1]] or
-        HTTPUnknownResponse
-      end
-
-      def each_response_header(sock)
-        while true
-          line = sock.readuntil("\n", true).sub(/\s+\z/, '')
-          break if line.empty?
-          m = /\A([^:]+):\s*/.match(line) or
-              raise HTTPBadResponse, 'wrong header line format'
-          yield m[1], m.post_match
-        end
-      end
-    end
-
-    # next is to fix bug in RDoc, where the private inside class << self
-    # spills out.
-    public 
-
-    include HTTPHeader
-
-    def initialize(httpv, code, msg)   #:nodoc: internal use only
-      @http_version = httpv
-      @code         = code
-      @message      = msg
-      initialize_http_header nil
-      @body = nil
-      @read = false
-    end
-
-    # The HTTP version supported by the server.
-    attr_reader :http_version
-
-    # HTTP result code string. For example, '302'.  You can also
-    # determine the response type by which response subclass the
-    # response object is an instance of.
-    attr_reader :code
-
-    # HTTP result message. For example, 'Not Found'.
-    attr_reader :message
-    alias msg message   # :nodoc: obsolete
-
-    def inspect
-      "#<#{self.class} #{@code} #{@message} readbody=#{@read}>"
-    end
-
-    # For backward compatibility.
-    # To allow Net::HTTP 1.1 style assignment
-    # e.g.
-    #    response, body = Net::HTTP.get(....)
-    # 
-    def to_ary
-      warn "net/http.rb: warning: Net::HTTP v1.1 style assignment found at #{caller(1)[0]}; use `response = http.get(...)' instead." if $VERBOSE
-      res = self.dup
-      class << res
-        undef to_ary
-      end
-      [res, res.body]
-    end
-
-    #
-    # response <-> exception relationship
-    #
-
-    def code_type   #:nodoc:
-      self.class
-    end
-
-    def error!   #:nodoc:
-      raise error_type().new(@code + ' ' + @message.dump, self)
-    end
-
-    def error_type   #:nodoc:
-      self.class::EXCEPTION_TYPE
-    end
-
-    # Raises HTTP error if the response is not 2xx.
-    def value
-      error! unless self.kind_of?(HTTPSuccess)
-    end
-
-    #
-    # header (for backward compatibility only; DO NOT USE)
-    #
-
-    def response   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#response is obsolete" if $VERBOSE
-      self
-    end
-
-    def header   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#header is obsolete" if $VERBOSE
-      self
-    end
-
-    def read_header   #:nodoc:
-      warn "#{caller(1)[0]}: warning: HTTPResponse#read_header is obsolete" if $VERBOSE
-      self
-    end
-
-    #
-    # body
-    #
-
-    def reading_body(sock, reqmethodallowbody)  #:nodoc: internal use only
-      @socket = sock
-      @body_exist = reqmethodallowbody && self.class.body_permitted?
-      begin
-        yield
-        self.body   # ensure to read body
-      ensure
-        @socket = nil
-      end
-    end
-
-    # Gets entity body.  If the block given, yields it to +block+.
-    # The body is provided in fragments, as it is read in from the socket.
-    #
-    # Calling this method a second or subsequent time will return the
-    # already read string.
-    #
-    #   http.request_get('/index.html') {|res|
-    #     puts res.read_body
-    #   }
-    #
-    #   http.request_get('/index.html') {|res|
-    #     p res.read_body.object_id   # 538149362
-    #     p res.read_body.object_id   # 538149362
-    #   }
-    #
-    #   # using iterator
-    #   http.request_get('/index.html') {|res|
-    #     res.read_body do |segment|
-    #       print segment
-    #     end
-    #   }
-    #
-    def read_body(dest = nil, &block)
-      if @read
-        raise IOError, "#{self.class}\#read_body called twice" if dest or block
-        return @body
-      end
-      to = procdest(dest, block)
-      stream_check
-      if @body_exist
-        read_body_0 to
-        @body = to
-      else
-        @body = nil
-      end
-      @read = true
-
-      @body
-    end
-
-    # Returns the entity body.
-    #
-    # Calling this method a second or subsequent time will return the
-    # already read string.
-    #
-    #   http.request_get('/index.html') {|res|
-    #     puts res.body
-    #   }
-    #
-    #   http.request_get('/index.html') {|res|
-    #     p res.body.object_id   # 538149362
-    #     p res.body.object_id   # 538149362
-    #   }
-    #
-    def body
-      read_body()
-    end
-
-    alias entity body   #:nodoc: obsolete
-
-    private
-
-    def read_body_0(dest)
-      if chunked?
-        read_chunked dest
-        return
-      end
-      clen = content_length()
-      if clen
-        @socket.read clen, dest, true   # ignore EOF
-        return
-      end
-      clen = range_length()
-      if clen
-        @socket.read clen, dest
-        return
-      end
-      @socket.read_all dest
-    end
-
-    def read_chunked(dest)
-      len = nil
-      total = 0
-      while true
-        line = @socket.readline
-        hexlen = line.slice(/[0-9a-fA-F]+/) or
-            raise HTTPBadResponse, "wrong chunk size line: #{line}"
-        len = hexlen.hex
-        break if len == 0
-        @socket.read len, dest; total += len
-        @socket.read 2   # \r\n
-      end
-      until @socket.readline.empty?
-        # none
-      end
-    end
-
-    def stream_check
-      raise IOError, 'attempt to read body out of block' if @socket.closed?
-    end
-
-    def procdest(dest, block)
-      raise ArgumentError, 'both arg and block given for HTTP method' \
-          if dest and block
-      if block
-        ReadAdapter.new(block)
-      else
-        dest || ''
-      end
-    end
-
-  end
-
-
-  # :enddoc:
-
-  #--
-  # for backward compatibility
-  class HTTP
-    ProxyMod = ProxyDelta
-  end
-  module NetPrivate
-    HTTPRequest = ::Net::HTTPRequest
-  end
-
-  HTTPInformationCode = HTTPInformation
-  HTTPSuccessCode     = HTTPSuccess
-  HTTPRedirectionCode = HTTPRedirection
-  HTTPRetriableCode   = HTTPRedirection
-  HTTPClientErrorCode = HTTPClientError
-  HTTPFatalErrorCode  = HTTPClientError
-  HTTPServerErrorCode = HTTPServerError
-  HTTPResponceReceiver = HTTPResponse
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/https.rb
deleted file mode 100644
index a9b182b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/https.rb
+++ /dev/null
@@ -1,173 +0,0 @@
-=begin
-
-= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP.
-
-== Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU Yuuzou <gotoyuzo at notwork.org>
-  All rights reserved.
-
-== Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-== Requirements
-  This program requires Net 1.2.0 or higher version.
-  You can get it from RAA or Ruby's CVS repository.
-
-== Version
-  $Id: https.rb 11708 2007-02-12 23:01:19Z shyouhei $
-  
-  2001-11-06: Contiributed to Ruby/OpenSSL project.
-  2004-03-06: Some code is merged in to net/http.
-
-== Example
-
-Here is a simple HTTP client:
-
-    require 'net/http'
-    require 'uri'
-
-    uri = URI.parse(ARGV[0] || 'http://localhost/')
-    http = Net::HTTP.new(uri.host, uri.port)
-    http.start {
-      http.request_get(uri.path) {|res|
-        print res.body
-      }
-    }
-
-It can be replaced by the following code:
-
-    require 'net/https'
-    require 'uri'
-
-    uri = URI.parse(ARGV[0] || 'https://localhost/')
-    http = Net::HTTP.new(uri.host, uri.port)
-    http.use_ssl = true if uri.scheme == "https"  # enable SSL/TLS
-    http.start {
-      http.request_get(uri.path) {|res|
-        print res.body
-      }
-    }
-
-== class Net::HTTP
-
-=== Instance Methods
-
-: use_ssl?
-    returns true if use SSL/TLS with HTTP.
-
-: use_ssl=((|true_or_false|))
-    sets use_ssl.
-
-: peer_cert
-    return the X.509 certificates the server presented.
-
-: key, key=((|key|))
-    Sets an OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
-    (This method is appeared in Michal Rokos's OpenSSL extention.)
-
-: cert, cert=((|cert|))
-    Sets an OpenSSL::X509::Certificate object as client certificate
-    (This method is appeared in Michal Rokos's OpenSSL extention).
-
-: ca_file, ca_file=((|path|))
-    Sets path of a CA certification file in PEM format.
-    The file can contrain several CA certificats.
-
-: ca_path, ca_path=((|path|))
-    Sets path of a CA certification directory containing certifications
-    in PEM format.
-
-: verify_mode, verify_mode=((|mode|))
-    Sets the flags for server the certification verification at
-    begining of SSL/TLS session.
-    OpenSSL::SSL::VERIFY_NONE or OpenSSL::SSL::VERIFY_PEER is acceptable.
-
-: verify_callback, verify_callback=((|proc|))
-    Sets the verify callback for the server certification verification.
-
-: verify_depth, verify_depth=((|num|))
-    Sets the maximum depth for the certificate chain verification.
-
-: cert_store, cert_store=((|store|))
-    Sets the X509::Store to verify peer certificate.
-
-: ssl_timeout, ssl_timeout=((|sec|))
-    Sets the SSL timeout seconds.
-
-=end
-
-require 'net/http'
-require 'openssl'
-
-module Net
-
-  class HTTP
-    remove_method :use_ssl?
-    def use_ssl?
-      @use_ssl
-    end
-
-    # For backward compatibility.
-    alias use_ssl use_ssl?
-
-    # Turn on/off SSL.
-    # This flag must be set before starting session.
-    # If you change use_ssl value after session started,
-    # a Net::HTTP object raises IOError.
-    def use_ssl=(flag)
-      flag = (flag ? true : false)
-      raise IOError, "use_ssl value changed, but session already started" \
-          if started? and @use_ssl != flag
-      if flag and not @ssl_context
-        @ssl_context = OpenSSL::SSL::SSLContext.new
-      end
-      @use_ssl = flag
-    end
-
-    def self.ssl_context_accessor(name)
-      module_eval(<<-End, __FILE__, __LINE__ + 1)
-        def #{name}
-          return nil unless @ssl_context
-          @ssl_context.#{name}
-        end
-
-        def #{name}=(val)
-          @ssl_context ||= OpenSSL::SSL::SSLContext.new
-          @ssl_context.#{name} = val
-        end
-      End
-    end
-
-    ssl_context_accessor :key
-    ssl_context_accessor :cert
-    ssl_context_accessor :ca_file
-    ssl_context_accessor :ca_path
-    ssl_context_accessor :verify_mode
-    ssl_context_accessor :verify_callback
-    ssl_context_accessor :verify_depth
-    ssl_context_accessor :cert_store
-
-    def ssl_timeout
-      return nil unless @ssl_context
-      @ssl_context.timeout
-    end
-
-    def ssl_timeout=(sec)
-      raise ArgumentError, 'Net::HTTP#ssl_timeout= called but use_ssl=false' \
-          unless use_ssl?
-      @ssl_context ||= OpenSSL::SSL::SSLContext.new
-      @ssl_context.timeout = sec
-    end
-
-    # For backward compatibility
-    alias timeout= ssl_timeout=
-
-    def peer_cert
-      return nil if not use_ssl? or not @socket
-      @socket.io.peer_cert
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/imap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/imap.rb
deleted file mode 100644
index f8c0d3b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/imap.rb
+++ /dev/null
@@ -1,3371 +0,0 @@
-#
-# = net/imap.rb
-#
-# Copyright (C) 2000  Shugo Maeda <shugo at ruby-lang.org>
-#
-# This library is distributed under the terms of the Ruby license.
-# You can freely distribute/modify this library.
-#
-# Documentation: Shugo Maeda, with RDoc conversion and overview by William
-# Webber.
-#
-# See Net::IMAP for documentation. 
-#
-
-
-require "socket"
-require "monitor"
-require "digest/md5"
-begin
-  require "openssl"
-rescue LoadError
-end
-
-module Net
-
-  #
-  # Net::IMAP implements Internet Message Access Protocol (IMAP) client
-  # functionality.  The protocol is described in [IMAP].
-  #
-  # == IMAP Overview
-  #
-  # An IMAP client connects to a server, and then authenticates
-  # itself using either #authenticate() or #login().  Having
-  # authenticated itself, there is a range of commands
-  # available to it.  Most work with mailboxes, which may be
-  # arranged in an hierarchical namespace, and each of which
-  # contains zero or more messages.  How this is implemented on
-  # the server is implementation-dependent; on a UNIX server, it
-  # will frequently be implemented as a files in mailbox format
-  # within a hierarchy of directories.
-  #
-  # To work on the messages within a mailbox, the client must
-  # first select that mailbox, using either #select() or (for
-  # read-only access) #examine().  Once the client has successfully
-  # selected a mailbox, they enter _selected_ state, and that
-  # mailbox becomes the _current_ mailbox, on which mail-item
-  # related commands implicitly operate.  
-  #
-  # Messages have two sorts of identifiers: message sequence
-  # numbers, and UIDs.  
-  #
-  # Message sequence numbers number messages within a mail box 
-  # from 1 up to the number of items in the mail box.  If new
-  # message arrives during a session, it receives a sequence
-  # number equal to the new size of the mail box.  If messages
-  # are expunged from the mailbox, remaining messages have their
-  # sequence numbers "shuffled down" to fill the gaps.
-  #
-  # UIDs, on the other hand, are permanently guaranteed not to
-  # identify another message within the same mailbox, even if 
-  # the existing message is deleted.  UIDs are required to
-  # be assigned in ascending (but not necessarily sequential)
-  # order within a mailbox; this means that if a non-IMAP client
-  # rearranges the order of mailitems within a mailbox, the
-  # UIDs have to be reassigned.  An IMAP client cannot thus
-  # rearrange message orders.
-  #
-  # == Examples of Usage
-  #
-  # === List sender and subject of all recent messages in the default mailbox
-  #
-  #   imap = Net::IMAP.new('mail.example.com')
-  #   imap.authenticate('LOGIN', 'joe_user', 'joes_password')
-  #   imap.examine('INBOX')
-  #   imap.search(["RECENT"]).each do |message_id|
-  #     envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
-  #     puts "#{envelope.from[0].name}: \t#{envelope.subject}"
-  #   end
-  #
-  # === Move all messages from April 2003 from "Mail/sent-mail" to "Mail/sent-apr03"
-  #
-  #   imap = Net::IMAP.new('mail.example.com')
-  #   imap.authenticate('LOGIN', 'joe_user', 'joes_password')
-  #   imap.select('Mail/sent-mail')
-  #   if not imap.list('Mail/', 'sent-apr03')
-  #     imap.create('Mail/sent-apr03')
-  #   end
-  #   imap.search(["BEFORE", "30-Apr-2003", "SINCE", "1-Apr-2003"]).each do |message_id|
-  #     imap.copy(message_id, "Mail/sent-apr03")
-  #     imap.store(message_id, "+FLAGS", [:Deleted])
-  #   end
-  #   imap.expunge
-  # 
-  # == Thread Safety
-  #
-  # Net::IMAP supports concurrent threads. For example,
-  # 
-  #   imap = Net::IMAP.new("imap.foo.net", "imap2")
-  #   imap.authenticate("cram-md5", "bar", "password")
-  #   imap.select("inbox")
-  #   fetch_thread = Thread.start { imap.fetch(1..-1, "UID") }
-  #   search_result = imap.search(["BODY", "hello"])
-  #   fetch_result = fetch_thread.value
-  #   imap.disconnect
-  # 
-  # This script invokes the FETCH command and the SEARCH command concurrently.
-  #
-  # == Errors
-  #
-  # An IMAP server can send three different types of responses to indicate
-  # failure:
-  #
-  # NO:: the attempted command could not be successfully completed.  For
-  #      instance, the username/password used for logging in are incorrect;
-  #      the selected mailbox does not exists; etc.  
-  #
-  # BAD:: the request from the client does not follow the server's 
-  #       understanding of the IMAP protocol.  This includes attempting
-  #       commands from the wrong client state; for instance, attempting
-  #       to perform a SEARCH command without having SELECTed a current
-  #       mailbox.  It can also signal an internal server
-  #       failure (such as a disk crash) has occurred.
-  #
-  # BYE:: the server is saying goodbye.  This can be part of a normal
-  #       logout sequence, and can be used as part of a login sequence
-  #       to indicate that the server is (for some reason) unwilling
-  #       to accept our connection.  As a response to any other command,
-  #       it indicates either that the server is shutting down, or that
-  #       the server is timing out the client connection due to inactivity.
-  #
-  # These three error response are represented by the errors
-  # Net::IMAP::NoResponseError, Net::IMAP::BadResponseError, and
-  # Net::IMAP::ByeResponseError, all of which are subclasses of
-  # Net::IMAP::ResponseError.  Essentially, all methods that involve
-  # sending a request to the server can generate one of these errors.
-  # Only the most pertinent instances have been documented below.
-  #
-  # Because the IMAP class uses Sockets for communication, its methods
-  # are also susceptible to the various errors that can occur when
-  # working with sockets.  These are generally represented as
-  # Errno errors.  For instance, any method that involves sending a
-  # request to the server and/or receiving a response from it could
-  # raise an Errno::EPIPE error if the network connection unexpectedly
-  # goes down.  See the socket(7), ip(7), tcp(7), socket(2), connect(2),
-  # and associated man pages.
-  #
-  # Finally, a Net::IMAP::DataFormatError is thrown if low-level data
-  # is found to be in an incorrect format (for instance, when converting
-  # between UTF-8 and UTF-16), and Net::IMAP::ResponseParseError is 
-  # thrown if a server response is non-parseable. 
-  #
-  #
-  # == References
-  #
-  # [[IMAP]]
-  #    M. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
-  #    RFC 2060, December 1996.  (Note: since obsoleted by RFC 3501)
-  #
-  # [[LANGUAGE-TAGS]]
-  #    Alvestrand, H., "Tags for the Identification of
-  #    Languages", RFC 1766, March 1995.
-  #
-  # [[MD5]]
-  #    Myers, J., and M. Rose, "The Content-MD5 Header Field", RFC
-  #    1864, October 1995.
-  #
-  # [[MIME-IMB]]
-  #    Freed, N., and N. Borenstein, "MIME (Multipurpose Internet
-  #    Mail Extensions) Part One: Format of Internet Message Bodies", RFC
-  #    2045, November 1996.
-  #
-  # [[RFC-822]]
-  #    Crocker, D., "Standard for the Format of ARPA Internet Text
-  #    Messages", STD 11, RFC 822, University of Delaware, August 1982.
-  #
-  # [[RFC-2087]]
-  #    Myers, J., "IMAP4 QUOTA extension", RFC 2087, January 1997.
-  #
-  # [[RFC-2086]]
-  #    Myers, J., "IMAP4 ACL extension", RFC 2086, January 1997.
-  #
-  # [[RFC-2195]]
-  #    Klensin, J., Catoe, R., and Krumviede, P., "IMAP/POP AUTHorize Extension
-  #    for Simple Challenge/Response", RFC 2195, September 1997.
-  #
-  # [[SORT-THREAD-EXT]]
-  #    Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - SORT and THREAD
-  #    Extensions", draft-ietf-imapext-sort, May 2003.
-  #
-  # [[OSSL]]
-  #    http://www.openssl.org
-  #
-  # [[RSSL]]
-  #    http://savannah.gnu.org/projects/rubypki
-  #
-  # [[UTF7]]
-  #    Goldsmith, D. and Davis, M., "UTF-7: A Mail-Safe Transformation Format of
-  #    Unicode", RFC 2152, May 1997.
-  #
-  class IMAP
-    include MonitorMixin
-    if defined?(OpenSSL)
-      include OpenSSL
-      include SSL
-    end
-
-    #  Returns an initial greeting response from the server.
-    attr_reader :greeting
-
-    # Returns recorded untagged responses.  For example:
-    #
-    #   imap.select("inbox")
-    #   p imap.responses["EXISTS"][-1]
-    #   #=> 2
-    #   p imap.responses["UIDVALIDITY"][-1]
-    #   #=> 968263756
-    attr_reader :responses
-
-    # Returns all response handlers.
-    attr_reader :response_handlers
-
-    # The thread to receive exceptions.
-    attr_accessor :client_thread
-
-    # Flag indicating a message has been seen
-    SEEN = :Seen
-
-    # Flag indicating a message has been answered
-    ANSWERED = :Answered
-
-    # Flag indicating a message has been flagged for special or urgent
-    # attention
-    FLAGGED = :Flagged
-
-    # Flag indicating a message has been marked for deletion.  This
-    # will occur when the mailbox is closed or expunged.
-    DELETED = :Deleted
-
-    # Flag indicating a message is only a draft or work-in-progress version.
-    DRAFT = :Draft
-
-    # Flag indicating that the message is "recent", meaning that this
-    # session is the first session in which the client has been notified
-    # of this message.
-    RECENT = :Recent
-
-    # Flag indicating that a mailbox context name cannot contain
-    # children.
-    NOINFERIORS = :Noinferiors
-
-    # Flag indicating that a mailbox is not selected.
-    NOSELECT = :Noselect
-
-    # Flag indicating that a mailbox has been marked "interesting" by
-    # the server; this commonly indicates that the mailbox contains
-    # new messages.
-    MARKED = :Marked
-
-    # Flag indicating that the mailbox does not contains new messages.
-    UNMARKED = :Unmarked
-
-    # Returns the debug mode.
-    def self.debug
-      return @@debug
-    end
-
-    # Sets the debug mode.
-    def self.debug=(val)
-      return @@debug = val
-    end
-
-    # Adds an authenticator for Net::IMAP#authenticate.  +auth_type+
-    # is the type of authentication this authenticator supports
-    # (for instance, "LOGIN").  The +authenticator+ is an object
-    # which defines a process() method to handle authentication with
-    # the server.  See Net::IMAP::LoginAuthenticator and 
-    # Net::IMAP::CramMD5Authenticator for examples.
-    #
-    # If +auth_type+ refers to an existing authenticator, it will be
-    # replaced by the new one.
-    def self.add_authenticator(auth_type, authenticator)
-      @@authenticators[auth_type] = authenticator
-    end
-
-    # Disconnects from the server.
-    def disconnect
-      if SSL::SSLSocket === @sock
-        @sock.io.shutdown
-      else
-        @sock.shutdown
-      end
-      @receiver_thread.join
-      @sock.close
-    end
-
-    # Returns true if disconnected from the server.
-    def disconnected?
-      return @sock.closed?
-    end
-
-    # Sends a CAPABILITY command, and returns an array of
-    # capabilities that the server supports.  Each capability
-    # is a string.  See [IMAP] for a list of possible
-    # capabilities.
-    #
-    # Note that the Net::IMAP class does not modify its
-    # behaviour according to the capabilities of the server;
-    # it is up to the user of the class to ensure that 
-    # a certain capability is supported by a server before
-    # using it.
-    def capability
-      synchronize do
-        send_command("CAPABILITY")
-        return @responses.delete("CAPABILITY")[-1]
-      end
-    end
-
-    # Sends a NOOP command to the server. It does nothing.
-    def noop
-      send_command("NOOP")
-    end
-
-    # Sends a LOGOUT command to inform the server that the client is
-    # done with the connection.
-    def logout
-      send_command("LOGOUT")
-    end
-
-    # Sends an AUTHENTICATE command to authenticate the client.
-    # The +auth_type+ parameter is a string that represents
-    # the authentication mechanism to be used. Currently Net::IMAP
-    # supports authentication mechanisms:
-    #
-    #   LOGIN:: login using cleartext user and password. 
-    #   CRAM-MD5:: login with cleartext user and encrypted password
-    #              (see [RFC-2195] for a full description).  This
-    #              mechanism requires that the server have the user's
-    #              password stored in clear-text password.
-    #
-    # For both these mechanisms, there should be two +args+: username
-    # and (cleartext) password.  A server may not support one or other
-    # of these mechanisms; check #capability() for a capability of
-    # the form "AUTH=LOGIN" or "AUTH=CRAM-MD5".
-    #
-    # Authentication is done using the appropriate authenticator object:
-    # see @@authenticators for more information on plugging in your own
-    # authenticator.
-    #
-    # For example:
-    #
-    #    imap.authenticate('LOGIN', user, password)
-    #
-    # A Net::IMAP::NoResponseError is raised if authentication fails.
-    def authenticate(auth_type, *args)
-      auth_type = auth_type.upcase
-      unless @@authenticators.has_key?(auth_type)
-        raise ArgumentError,
-          format('unknown auth type - "%s"', auth_type)
-      end
-      authenticator = @@authenticators[auth_type].new(*args)
-      send_command("AUTHENTICATE", auth_type) do |resp|
-        if resp.instance_of?(ContinuationRequest)
-          data = authenticator.process(resp.data.text.unpack("m")[0])
-          s = [data].pack("m").gsub(/\n/, "")
-          send_string_data(s)
-          put_string(CRLF)
-        end
-      end
-    end
-
-    # Sends a LOGIN command to identify the client and carries
-    # the plaintext +password+ authenticating this +user+.  Note
-    # that, unlike calling #authenticate() with an +auth_type+
-    # of "LOGIN", #login() does *not* use the login authenticator.
-    #
-    # A Net::IMAP::NoResponseError is raised if authentication fails.
-    def login(user, password)
-      send_command("LOGIN", user, password)
-    end
-
-    # Sends a SELECT command to select a +mailbox+ so that messages
-    # in the +mailbox+ can be accessed. 
-    #
-    # After you have selected a mailbox, you may retrieve the
-    # number of items in that mailbox from @responses["EXISTS"][-1],
-    # and the number of recent messages from @responses["RECENT"][-1].
-    # Note that these values can change if new messages arrive
-    # during a session; see #add_response_handler() for a way of
-    # detecting this event.
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does not
-    # exist or is for some reason non-selectable.
-    def select(mailbox)
-      synchronize do
-        @responses.clear
-        send_command("SELECT", mailbox)
-      end
-    end
-
-    # Sends a EXAMINE command to select a +mailbox+ so that messages
-    # in the +mailbox+ can be accessed.  Behaves the same as #select(),
-    # except that the selected +mailbox+ is identified as read-only.
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does not
-    # exist or is for some reason non-examinable.
-    def examine(mailbox)
-      synchronize do
-        @responses.clear
-        send_command("EXAMINE", mailbox)
-      end
-    end
-
-    # Sends a CREATE command to create a new +mailbox+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with that name
-    # cannot be created.
-    def create(mailbox)
-      send_command("CREATE", mailbox)
-    end
-
-    # Sends a DELETE command to remove the +mailbox+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with that name
-    # cannot be deleted, either because it does not exist or because the
-    # client does not have permission to delete it.
-    def delete(mailbox)
-      send_command("DELETE", mailbox)
-    end
-
-    # Sends a RENAME command to change the name of the +mailbox+ to
-    # +newname+.
-    #
-    # A Net::IMAP::NoResponseError is raised if a mailbox with the 
-    # name +mailbox+ cannot be renamed to +newname+ for whatever
-    # reason; for instance, because +mailbox+ does not exist, or
-    # because there is already a mailbox with the name +newname+.
-    def rename(mailbox, newname)
-      send_command("RENAME", mailbox, newname)
-    end
-
-    # Sends a SUBSCRIBE command to add the specified +mailbox+ name to
-    # the server's set of "active" or "subscribed" mailboxes as returned
-    # by #lsub().
-    #
-    # A Net::IMAP::NoResponseError is raised if +mailbox+ cannot be
-    # subscribed to, for instance because it does not exist.
-    def subscribe(mailbox)
-      send_command("SUBSCRIBE", mailbox)
-    end
-
-    # Sends a UNSUBSCRIBE command to remove the specified +mailbox+ name
-    # from the server's set of "active" or "subscribed" mailboxes.
-    #
-    # A Net::IMAP::NoResponseError is raised if +mailbox+ cannot be
-    # unsubscribed from, for instance because the client is not currently
-    # subscribed to it.
-    def unsubscribe(mailbox)
-      send_command("UNSUBSCRIBE", mailbox)
-    end
-
-    # Sends a LIST command, and returns a subset of names from
-    # the complete set of all names available to the client.
-    # +refname+ provides a context (for instance, a base directory
-    # in a directory-based mailbox hierarchy).  +mailbox+ specifies
-    # a mailbox or (via wildcards) mailboxes under that context.
-    # Two wildcards may be used in +mailbox+: '*', which matches
-    # all characters *including* the hierarchy delimiter (for instance,
-    # '/' on a UNIX-hosted directory-based mailbox hierarchy); and '%',
-    # which matches all characters *except* the hierarchy delimiter.
-    #
-    # If +refname+ is empty, +mailbox+ is used directly to determine
-    # which mailboxes to match.  If +mailbox+ is empty, the root
-    # name of +refname+ and the hierarchy delimiter are returned.
-    #
-    # The return value is an array of +Net::IMAP::MailboxList+. For example:
-    #
-    #   imap.create("foo/bar")
-    #   imap.create("foo/baz")
-    #   p imap.list("", "foo/%")
-    #   #=> [#<Net::IMAP::MailboxList attr=[:Noselect], delim="/", name="foo/">, \\ 
-    #        #<Net::IMAP::MailboxList attr=[:Noinferiors, :Marked], delim="/", name="foo/bar">, \\ 
-    #        #<Net::IMAP::MailboxList attr=[:Noinferiors], delim="/", name="foo/baz">]
-    def list(refname, mailbox)
-      synchronize do
-        send_command("LIST", refname, mailbox)
-        return @responses.delete("LIST")
-      end
-    end
-
-    # Sends the GETQUOTAROOT command along with specified +mailbox+.
-    # This command is generally available to both admin and user.
-    # If mailbox exists, returns an array containing objects of
-    # Net::IMAP::MailboxQuotaRoot and Net::IMAP::MailboxQuota.
-    def getquotaroot(mailbox)
-      synchronize do
-        send_command("GETQUOTAROOT", mailbox)
-        result = []
-        result.concat(@responses.delete("QUOTAROOT"))
-        result.concat(@responses.delete("QUOTA"))
-        return result
-      end
-    end
-
-    # Sends the GETQUOTA command along with specified +mailbox+.
-    # If this mailbox exists, then an array containing a
-    # Net::IMAP::MailboxQuota object is returned.  This
-    # command generally is only available to server admin.
-    def getquota(mailbox)
-      synchronize do
-        send_command("GETQUOTA", mailbox)
-        return @responses.delete("QUOTA")
-      end
-    end
-
-    # Sends a SETQUOTA command along with the specified +mailbox+ and
-    # +quota+.  If +quota+ is nil, then quota will be unset for that
-    # mailbox.  Typically one needs to be logged in as server admin
-    # for this to work.  The IMAP quota commands are described in
-    # [RFC-2087].
-    def setquota(mailbox, quota)
-      if quota.nil?
-        data = '()'
-      else
-        data = '(STORAGE ' + quota.to_s + ')'
-      end
-      send_command("SETQUOTA", mailbox, RawData.new(data))
-    end
-
-    # Sends the SETACL command along with +mailbox+, +user+ and the
-    # +rights+ that user is to have on that mailbox.  If +rights+ is nil,
-    # then that user will be stripped of any rights to that mailbox.
-    # The IMAP ACL commands are described in [RFC-2086].
-    def setacl(mailbox, user, rights)
-      if rights.nil? 
-        send_command("SETACL", mailbox, user, "")
-      else
-        send_command("SETACL", mailbox, user, rights)
-      end
-    end
-
-    # Send the GETACL command along with specified +mailbox+.
-    # If this mailbox exists, an array containing objects of
-    # Net::IMAP::MailboxACLItem will be returned.
-    def getacl(mailbox)
-      synchronize do
-        send_command("GETACL", mailbox)
-        return @responses.delete("ACL")[-1]
-      end
-    end
-
-    # Sends a LSUB command, and returns a subset of names from the set
-    # of names that the user has declared as being "active" or
-    # "subscribed".  +refname+ and +mailbox+ are interpreted as 
-    # for #list().
-    # The return value is an array of +Net::IMAP::MailboxList+.
-    def lsub(refname, mailbox)
-      synchronize do
-        send_command("LSUB", refname, mailbox)
-        return @responses.delete("LSUB")
-      end
-    end
-
-    # Sends a STATUS command, and returns the status of the indicated
-    # +mailbox+. +attr+ is a list of one or more attributes that
-    # we are request the status of.  Supported attributes include:
-    #
-    #   MESSAGES:: the number of messages in the mailbox.
-    #   RECENT:: the number of recent messages in the mailbox.
-    #   UNSEEN:: the number of unseen messages in the mailbox.
-    #
-    # The return value is a hash of attributes. For example:
-    #
-    #   p imap.status("inbox", ["MESSAGES", "RECENT"])
-    #   #=> {"RECENT"=>0, "MESSAGES"=>44}
-    #
-    # A Net::IMAP::NoResponseError is raised if status values 
-    # for +mailbox+ cannot be returned, for instance because it
-    # does not exist.
-    def status(mailbox, attr)
-      synchronize do
-        send_command("STATUS", mailbox, attr)
-        return @responses.delete("STATUS")[-1].attr
-      end
-    end
-
-    # Sends a APPEND command to append the +message+ to the end of
-    # the +mailbox+. The optional +flags+ argument is an array of 
-    # flags to initially passing to the new message.  The optional
-    # +date_time+ argument specifies the creation time to assign to the 
-    # new message; it defaults to the current time.
-    # For example:
-    #
-    #   imap.append("inbox", <<EOF.gsub(/\n/, "\r\n"), [:Seen], Time.now)
-    #   Subject: hello
-    #   From: shugo at ruby-lang.org
-    #   To: shugo at ruby-lang.org
-    #   
-    #   hello world
-    #   EOF
-    #
-    # A Net::IMAP::NoResponseError is raised if the mailbox does
-    # not exist (it is not created automatically), or if the flags,
-    # date_time, or message arguments contain errors.
-    def append(mailbox, message, flags = nil, date_time = nil)
-      args = []
-      if flags
-        args.push(flags)
-      end
-      args.push(date_time) if date_time
-      args.push(Literal.new(message))
-      send_command("APPEND", mailbox, *args)
-    end
-
-    # Sends a CHECK command to request a checkpoint of the currently
-    # selected mailbox.  This performs implementation-specific
-    # housekeeping, for instance, reconciling the mailbox's 
-    # in-memory and on-disk state.
-    def check
-      send_command("CHECK")
-    end
-
-    # Sends a CLOSE command to close the currently selected mailbox.
-    # The CLOSE command permanently removes from the mailbox all
-    # messages that have the \Deleted flag set.
-    def close
-      send_command("CLOSE")
-    end
-
-    # Sends a EXPUNGE command to permanently remove from the currently
-    # selected mailbox all messages that have the \Deleted flag set.
-    def expunge
-      synchronize do
-        send_command("EXPUNGE")
-        return @responses.delete("EXPUNGE")
-      end
-    end
-
-    # Sends a SEARCH command to search the mailbox for messages that
-    # match the given searching criteria, and returns message sequence
-    # numbers.  +keys+ can either be a string holding the entire 
-    # search string, or a single-dimension array of search keywords and 
-    # arguments.  The following are some common search criteria;
-    # see [IMAP] section 6.4.4 for a full list.
-    #
-    # <message set>:: a set of message sequence numbers.  ',' indicates
-    #                 an interval, ':' indicates a range.  For instance,
-    #                 '2,10:12,15' means "2,10,11,12,15".
-    #
-    # BEFORE <date>:: messages with an internal date strictly before
-    #                 <date>.  The date argument has a format similar
-    #                 to 8-Aug-2002.
-    #
-    # BODY <string>:: messages that contain <string> within their body.
-    #
-    # CC <string>:: messages containing <string> in their CC field.
-    #
-    # FROM <string>:: messages that contain <string> in their FROM field.
-    #
-    # NEW:: messages with the \Recent, but not the \Seen, flag set.
-    #
-    # NOT <search-key>:: negate the following search key.
-    #
-    # OR <search-key> <search-key>:: "or" two search keys together.
-    #
-    # ON <date>:: messages with an internal date exactly equal to <date>, 
-    #             which has a format similar to 8-Aug-2002.
-    #
-    # SINCE <date>:: messages with an internal date on or after <date>.
-    #
-    # SUBJECT <string>:: messages with <string> in their subject.
-    #
-    # TO <string>:: messages with <string> in their TO field.
-    # 
-    # For example:
-    #
-    #   p imap.search(["SUBJECT", "hello", "NOT", "NEW"])
-    #   #=> [1, 6, 7, 8]
-    def search(keys, charset = nil)
-      return search_internal("SEARCH", keys, charset)
-    end
-
-    # As for #search(), but returns unique identifiers.
-    def uid_search(keys, charset = nil)
-      return search_internal("UID SEARCH", keys, charset)
-    end
-
-    # Sends a FETCH command to retrieve data associated with a message
-    # in the mailbox. The +set+ parameter is a number or an array of
-    # numbers or a Range object. The number is a message sequence
-    # number.  +attr+ is a list of attributes to fetch; see the
-    # documentation for Net::IMAP::FetchData for a list of valid
-    # attributes.
-    # The return value is an array of Net::IMAP::FetchData. For example:
-    #
-    #   p imap.fetch(6..8, "UID")
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"UID"=>98}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=7, attr={"UID"=>99}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=8, attr={"UID"=>100}>]
-    #   p imap.fetch(6, "BODY[HEADER.FIELDS (SUBJECT)]")
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"BODY[HEADER.FIELDS (SUBJECT)]"=>"Subject: test\r\n\r\n"}>]
-    #   data = imap.uid_fetch(98, ["RFC822.SIZE", "INTERNALDATE"])[0]
-    #   p data.seqno
-    #   #=> 6
-    #   p data.attr["RFC822.SIZE"]
-    #   #=> 611
-    #   p data.attr["INTERNALDATE"]
-    #   #=> "12-Oct-2000 22:40:59 +0900"
-    #   p data.attr["UID"]
-    #   #=> 98
-    def fetch(set, attr)
-      return fetch_internal("FETCH", set, attr)
-    end
-
-    # As for #fetch(), but +set+ contains unique identifiers.
-    def uid_fetch(set, attr)
-      return fetch_internal("UID FETCH", set, attr)
-    end
-
-    # Sends a STORE command to alter data associated with messages
-    # in the mailbox, in particular their flags. The +set+ parameter 
-    # is a number or an array of numbers or a Range object. Each number 
-    # is a message sequence number.  +attr+ is the name of a data item 
-    # to store: 'FLAGS' means to replace the message's flag list
-    # with the provided one; '+FLAGS' means to add the provided flags;
-    # and '-FLAGS' means to remove them.  +flags+ is a list of flags.
-    #
-    # The return value is an array of Net::IMAP::FetchData. For example:
-    #
-    #   p imap.store(6..8, "+FLAGS", [:Deleted])
-    #   #=> [#<Net::IMAP::FetchData seqno=6, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\ 
-    #        #<Net::IMAP::FetchData seqno=7, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\  
-    #        #<Net::IMAP::FetchData seqno=8, attr={"FLAGS"=>[:Seen, :Deleted]}>]
-    def store(set, attr, flags)
-      return store_internal("STORE", set, attr, flags)
-    end
-
-    # As for #store(), but +set+ contains unique identifiers.
-    def uid_store(set, attr, flags)
-      return store_internal("UID STORE", set, attr, flags)
-    end
-
-    # Sends a COPY command to copy the specified message(s) to the end
-    # of the specified destination +mailbox+. The +set+ parameter is
-    # a number or an array of numbers or a Range object. The number is
-    # a message sequence number.
-    def copy(set, mailbox)
-      copy_internal("COPY", set, mailbox)
-    end
-
-    # As for #copy(), but +set+ contains unique identifiers.
-    def uid_copy(set, mailbox)
-      copy_internal("UID COPY", set, mailbox)
-    end
-
-    # Sends a SORT command to sort messages in the mailbox.
-    # Returns an array of message sequence numbers. For example:
-    #
-    #   p imap.sort(["FROM"], ["ALL"], "US-ASCII")
-    #   #=> [1, 2, 3, 5, 6, 7, 8, 4, 9]
-    #   p imap.sort(["DATE"], ["SUBJECT", "hello"], "US-ASCII")
-    #   #=> [6, 7, 8, 1]
-    #
-    # See [SORT-THREAD-EXT] for more details.
-    def sort(sort_keys, search_keys, charset)
-      return sort_internal("SORT", sort_keys, search_keys, charset)
-    end
-
-    # As for #sort(), but returns an array of unique identifiers.
-    def uid_sort(sort_keys, search_keys, charset)
-      return sort_internal("UID SORT", sort_keys, search_keys, charset)
-    end
-
-    # Adds a response handler. For example, to detect when 
-    # the server sends us a new EXISTS response (which normally
-    # indicates new messages being added to the mail box), 
-    # you could add the following handler after selecting the
-    # mailbox.
-    #
-    #   imap.add_response_handler { |resp|
-    #     if resp.kind_of?(Net::IMAP::UntaggedResponse) and resp.name == "EXISTS"
-    #       puts "Mailbox now has #{resp.data} messages"
-    #     end
-    #   }
-    #
-    def add_response_handler(handler = Proc.new)
-      @response_handlers.push(handler)
-    end
-
-    # Removes the response handler.
-    def remove_response_handler(handler)
-      @response_handlers.delete(handler)
-    end
-
-    # As for #search(), but returns message sequence numbers in threaded
-    # format, as a Net::IMAP::ThreadMember tree.  The supported algorithms
-    # are:
-    #
-    # ORDEREDSUBJECT:: split into single-level threads according to subject,
-    #                  ordered by date.
-    # REFERENCES:: split into threads by parent/child relationships determined
-    #              by which message is a reply to which.
-    #
-    # Unlike #search(), +charset+ is a required argument.  US-ASCII
-    # and UTF-8 are sample values.
-    #
-    # See [SORT-THREAD-EXT] for more details.
-    def thread(algorithm, search_keys, charset)
-      return thread_internal("THREAD", algorithm, search_keys, charset)
-    end
-
-    # As for #thread(), but returns unique identifiers instead of 
-    # message sequence numbers.
-    def uid_thread(algorithm, search_keys, charset)
-      return thread_internal("UID THREAD", algorithm, search_keys, charset)
-    end
-
-    # Decode a string from modified UTF-7 format to UTF-8.
-    #
-    # UTF-7 is a 7-bit encoding of Unicode [UTF7].  IMAP uses a
-    # slightly modified version of this to encode mailbox names
-    # containing non-ASCII characters; see [IMAP] section 5.1.3.
-    #
-    # Net::IMAP does _not_ automatically encode and decode
-    # mailbox names to and from utf7.
-    def self.decode_utf7(s)
-      return s.gsub(/&(.*?)-/n) {
-        if $1.empty?
-          "&"
-        else
-          base64 = $1.tr(",", "/")
-          x = base64.length % 4
-          if x > 0
-            base64.concat("=" * (4 - x))
-          end
-          u16tou8(base64.unpack("m")[0])
-        end
-      }
-    end
-
-    # Encode a string from UTF-8 format to modified UTF-7.
-    def self.encode_utf7(s)
-      return s.gsub(/(&)|([^\x20-\x25\x27-\x7e]+)/n) { |x|
-        if $1
-          "&-"
-        else
-          base64 = [u8tou16(x)].pack("m")
-          "&" + base64.delete("=\n").tr("/", ",") + "-"
-        end
-      }
-    end
-
-    private
-
-    CRLF = "\r\n"      # :nodoc:
-    PORT = 143         # :nodoc:
-
-    @@debug = false
-    @@authenticators = {}
-
-    # Creates a new Net::IMAP object and connects it to the specified
-    # +port+ (143 by default) on the named +host+.  If +usessl+ is true, 
-    # then an attempt will
-    # be made to use SSL (now TLS) to connect to the server.  For this
-    # to work OpenSSL [OSSL] and the Ruby OpenSSL [RSSL]
-    # extensions need to be installed.  The +certs+ parameter indicates
-    # the path or file containing the CA cert of the server, and the
-    # +verify+ parameter is for the OpenSSL verification callback.
-    #
-    # The most common errors are:
-    #
-    # Errno::ECONNREFUSED:: connection refused by +host+ or an intervening
-    #                       firewall.
-    # Errno::ETIMEDOUT:: connection timed out (possibly due to packets
-    #                    being dropped by an intervening firewall).
-    # Errno::ENETUNREACH:: there is no route to that network.
-    # SocketError:: hostname not known or other socket error.
-    # Net::IMAP::ByeResponseError:: we connected to the host, but they 
-    #                               immediately said goodbye to us.
-    def initialize(host, port = PORT, usessl = false, certs = nil, verify = false)
-      super()
-      @host = host
-      @port = port
-      @tag_prefix = "RUBY"
-      @tagno = 0
-      @parser = ResponseParser.new
-      @sock = TCPSocket.open(host, port)
-      if usessl
-        unless defined?(OpenSSL)
-          raise "SSL extension not installed"
-        end
-        @usessl = true
-
-        # verify the server.
-        context = SSLContext::new()
-        context.ca_file = certs if certs && FileTest::file?(certs)
-        context.ca_path = certs if certs && FileTest::directory?(certs)
-        context.verify_mode = VERIFY_PEER if verify
-        if defined?(VerifyCallbackProc)
-          context.verify_callback = VerifyCallbackProc 
-        end
-        @sock = SSLSocket.new(@sock, context)
-        @sock.connect   # start ssl session.
-        @sock.post_connection_check(@host) if verify
-      else
-        @usessl = false
-      end
-      @responses = Hash.new([].freeze)
-      @tagged_responses = {}
-      @response_handlers = []
-      @response_arrival = new_cond
-      @continuation_request = nil
-      @logout_command_tag = nil
-      @debug_output_bol = true
-
-      @greeting = get_response
-      if @greeting.name == "BYE"
-        @sock.close
-        raise ByeResponseError, @greeting.raw_data
-      end
-
-      @client_thread = Thread.current
-      @receiver_thread = Thread.start {
-        receive_responses
-      }
-    end
-
-    def receive_responses
-      while true
-        begin
-          resp = get_response
-        rescue Exception
-          @sock.close
-          @client_thread.raise($!)
-          break
-        end
-        break unless resp
-        begin
-          synchronize do
-            case resp
-            when TaggedResponse
-              @tagged_responses[resp.tag] = resp
-              @response_arrival.broadcast
-              if resp.tag == @logout_command_tag
-                return
-              end
-            when UntaggedResponse
-              record_response(resp.name, resp.data)
-              if resp.data.instance_of?(ResponseText) &&
-                  (code = resp.data.code)
-                record_response(code.name, code.data)
-              end
-              if resp.name == "BYE" && @logout_command_tag.nil?
-                @sock.close
-                raise ByeResponseError, resp.raw_data
-              end
-            when ContinuationRequest
-              @continuation_request = resp
-              @response_arrival.broadcast
-            end
-            @response_handlers.each do |handler|
-              handler.call(resp)
-            end
-          end
-        rescue Exception
-          @client_thread.raise($!)
-        end
-      end
-    end
-
-    def get_tagged_response(tag)
-      until @tagged_responses.key?(tag)
-        @response_arrival.wait
-      end
-      return pick_up_tagged_response(tag)
-    end
-
-    def pick_up_tagged_response(tag)
-      resp = @tagged_responses.delete(tag)
-      case resp.name
-      when /\A(?:NO)\z/ni
-        raise NoResponseError, resp.data.text
-      when /\A(?:BAD)\z/ni
-        raise BadResponseError, resp.data.text
-      else
-        return resp
-      end
-    end
-
-    def get_response
-      buff = ""
-      while true
-        s = @sock.gets(CRLF)
-        break unless s
-        buff.concat(s)
-        if /\{(\d+)\}\r\n/n =~ s
-          s = @sock.read($1.to_i)
-          buff.concat(s)
-        else
-          break
-        end
-      end
-      return nil if buff.length == 0
-      if @@debug
-        $stderr.print(buff.gsub(/^/n, "S: "))
-      end
-      return @parser.parse(buff)
-    end
-
-    def record_response(name, data)
-      unless @responses.has_key?(name)
-        @responses[name] = []
-      end
-      @responses[name].push(data)
-    end
-
-    def send_command(cmd, *args, &block)
-      synchronize do
-        tag = Thread.current[:net_imap_tag] = generate_tag
-        put_string(tag + " " + cmd)
-        args.each do |i|
-          put_string(" ")
-          send_data(i)
-        end
-        put_string(CRLF)
-        if cmd == "LOGOUT"
-          @logout_command_tag = tag
-        end
-        if block
-          add_response_handler(block)
-        end
-        begin
-          return get_tagged_response(tag)
-        ensure
-          if block
-            remove_response_handler(block)
-          end
-        end
-      end
-    end
-
-    def generate_tag
-      @tagno += 1
-      return format("%s%04d", @tag_prefix, @tagno)
-    end
-    
-    def put_string(str)
-      @sock.print(str)
-      if @@debug
-        if @debug_output_bol
-          $stderr.print("C: ")
-        end
-        $stderr.print(str.gsub(/\n(?!\z)/n, "\nC: "))
-        if /\r\n\z/n.match(str)
-          @debug_output_bol = true
-        else
-          @debug_output_bol = false
-        end
-      end
-    end
-
-    def send_data(data)
-      case data
-      when nil
-        put_string("NIL")
-      when String
-        send_string_data(data)
-      when Integer
-        send_number_data(data)
-      when Array
-        send_list_data(data)
-      when Time
-        send_time_data(data)
-      when Symbol
-        send_symbol_data(data)
-      else
-        data.send_data(self)
-      end
-    end
-
-    def send_string_data(str)
-      case str
-      when ""
-        put_string('""')
-      when /[\x80-\xff\r\n]/n
-        # literal
-        send_literal(str)
-      when /[(){ \x00-\x1f\x7f%*"\\]/n
-        # quoted string
-        send_quoted_string(str)
-      else
-        put_string(str)
-      end
-    end
-    
-    def send_quoted_string(str)
-      put_string('"' + str.gsub(/["\\]/n, "\\\\\\&") + '"')
-    end
-
-    def send_literal(str)
-      put_string("{" + str.length.to_s + "}" + CRLF)
-      while @continuation_request.nil? &&
-        !@tagged_responses.key?(Thread.current[:net_imap_tag])
-        @response_arrival.wait
-      end
-      if @continuation_request.nil?
-        pick_up_tagged_response(Thread.current[:net_imap_tag])
-        raise ResponseError.new("expected continuation request")
-      end
-      @continuation_request = nil
-      put_string(str)
-    end
-
-    def send_number_data(num)
-      if num < 0 || num >= 4294967296
-        raise DataFormatError, num.to_s
-      end
-      put_string(num.to_s)
-    end
-
-    def send_list_data(list)
-      put_string("(")
-      first = true
-      list.each do |i|
-        if first
-          first = false
-        else
-          put_string(" ")
-        end
-        send_data(i)
-      end
-      put_string(")")
-    end
-
-    DATE_MONTH = %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
-
-    def send_time_data(time)
-      t = time.dup.gmtime
-      s = format('"%2d-%3s-%4d %02d:%02d:%02d +0000"',
-                 t.day, DATE_MONTH[t.month - 1], t.year,
-                 t.hour, t.min, t.sec)
-      put_string(s)
-    end
-
-    def send_symbol_data(symbol)
-      put_string("\\" + symbol.to_s)
-    end
-
-    def search_internal(cmd, keys, charset)
-      if keys.instance_of?(String)
-        keys = [RawData.new(keys)]
-      else
-        normalize_searching_criteria(keys)
-      end
-      synchronize do
-        if charset
-          send_command(cmd, "CHARSET", charset, *keys)
-        else
-          send_command(cmd, *keys)
-        end
-        return @responses.delete("SEARCH")[-1]
-      end
-    end
-
-    def fetch_internal(cmd, set, attr)
-      if attr.instance_of?(String)
-        attr = RawData.new(attr)
-      end
-      synchronize do
-        @responses.delete("FETCH")
-        send_command(cmd, MessageSet.new(set), attr)
-        return @responses.delete("FETCH")
-      end
-    end
-
-    def store_internal(cmd, set, attr, flags)
-      if attr.instance_of?(String)
-        attr = RawData.new(attr)
-      end
-      synchronize do
-        @responses.delete("FETCH")
-        send_command(cmd, MessageSet.new(set), attr, flags)
-        return @responses.delete("FETCH")
-      end
-    end
-
-    def copy_internal(cmd, set, mailbox)
-      send_command(cmd, MessageSet.new(set), mailbox)
-    end
-
-    def sort_internal(cmd, sort_keys, search_keys, charset)
-      if search_keys.instance_of?(String)
-        search_keys = [RawData.new(search_keys)]
-      else
-        normalize_searching_criteria(search_keys)
-      end
-      normalize_searching_criteria(search_keys)
-      synchronize do
-        send_command(cmd, sort_keys, charset, *search_keys)
-        return @responses.delete("SORT")[-1]
-      end
-    end
-
-    def thread_internal(cmd, algorithm, search_keys, charset)
-      if search_keys.instance_of?(String)
-        search_keys = [RawData.new(search_keys)]
-      else
-        normalize_searching_criteria(search_keys)
-      end
-      normalize_searching_criteria(search_keys)
-      send_command(cmd, algorithm, charset, *search_keys)
-      return @responses.delete("THREAD")[-1]
-    end
-
-    def normalize_searching_criteria(keys)
-      keys.collect! do |i|
-        case i
-        when -1, Range, Array
-          MessageSet.new(i)
-        else
-          i
-        end
-      end
-    end
-
-    def self.u16tou8(s)
-      len = s.length
-      if len < 2
-        return ""
-      end
-      buf = ""
-      i = 0
-      while i < len
-        c = s[i] << 8 | s[i + 1]
-        i += 2
-        if c == 0xfeff
-          next
-        elsif c < 0x0080
-          buf.concat(c)
-        elsif c < 0x0800
-          b2 = c & 0x003f
-          b1 = c >> 6
-          buf.concat(b1 | 0xc0)
-          buf.concat(b2 | 0x80)
-        elsif c >= 0xdc00 && c < 0xe000
-          raise DataFormatError, "invalid surrogate detected"
-        elsif c >= 0xd800 && c < 0xdc00
-          if i + 2 > len
-            raise DataFormatError, "invalid surrogate detected"
-          end
-          low = s[i] << 8 | s[i + 1]
-          i += 2
-          if low < 0xdc00 || low > 0xdfff
-            raise DataFormatError, "invalid surrogate detected"
-          end
-          c = (((c & 0x03ff)) << 10 | (low & 0x03ff)) + 0x10000
-          b4 = c & 0x003f
-          b3 = (c >> 6) & 0x003f
-          b2 = (c >> 12) & 0x003f
-          b1 = c >> 18;
-          buf.concat(b1 | 0xf0)
-          buf.concat(b2 | 0x80)
-          buf.concat(b3 | 0x80)
-          buf.concat(b4 | 0x80)
-        else # 0x0800-0xffff
-          b3 = c & 0x003f
-          b2 = (c >> 6) & 0x003f
-          b1 = c >> 12
-          buf.concat(b1 | 0xe0)
-          buf.concat(b2 | 0x80)
-          buf.concat(b3 | 0x80)
-        end
-      end
-      return buf
-    end
-    private_class_method :u16tou8
-
-    def self.u8tou16(s)
-      len = s.length
-      buf = ""
-      i = 0
-      while i < len
-        c = s[i]
-        if (c & 0x80) == 0
-          buf.concat(0x00)
-          buf.concat(c)
-          i += 1
-        elsif (c & 0xe0) == 0xc0 &&
-            len >= 2 &&
-            (s[i + 1] & 0xc0) == 0x80
-          if c == 0xc0 || c == 0xc1
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x1f) << 6) | (s[i + 1] & 0x3f)
-          buf.concat(u >> 8)
-          buf.concat(u & 0x00ff)
-          i += 2
-        elsif (c & 0xf0) == 0xe0 &&
-            i + 2 < len &&
-            (s[i + 1] & 0xc0) == 0x80 &&
-            (s[i + 2] & 0xc0) == 0x80
-          if c == 0xe0 && s[i + 1] < 0xa0
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x0f) << 12) | ((s[i + 1] & 0x3f) << 6) | (s[i + 2] & 0x3f)
-          # surrogate chars
-          if u >= 0xd800 && u <= 0xdfff
-            raise DataFormatError, format("none-UTF-16 char detected (%04x)", u)
-          end
-          buf.concat(u >> 8)
-          buf.concat(u & 0x00ff)
-          i += 3
-        elsif (c & 0xf8) == 0xf0 &&
-            i + 3 < len &&
-            (s[i + 1] & 0xc0) == 0x80 &&
-            (s[i + 2] & 0xc0) == 0x80 &&
-            (s[i + 3] & 0xc0) == 0x80
-          if c == 0xf0 && s[i + 1] < 0x90
-            raise DataFormatError, format("non-shortest UTF-8 sequence (%02x)", c)
-          end
-          u = ((c & 0x07) << 18) | ((s[i + 1] & 0x3f) << 12) |
-            ((s[i + 2] & 0x3f) << 6) | (s[i + 3] & 0x3f)
-          if u < 0x10000
-            buf.concat(u >> 8)
-            buf.concat(u & 0x00ff)
-          elsif u < 0x110000
-            high = ((u - 0x10000) >> 10) | 0xd800
-            low = (u & 0x03ff) | 0xdc00
-            buf.concat(high >> 8)
-            buf.concat(high & 0x00ff)
-            buf.concat(low >> 8)
-            buf.concat(low & 0x00ff)
-          else
-            raise DataFormatError, format("none-UTF-16 char detected (%04x)", u)
-          end
-          i += 4
-        else
-          raise DataFormatError, format("illegal UTF-8 sequence (%02x)", c)
-        end
-      end
-      return buf
-    end
-    private_class_method :u8tou16
-
-    class RawData # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class Atom # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class QuotedString # :nodoc:
-      def send_data(imap)
-        imap.send(:send_quoted_string, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class Literal # :nodoc:
-      def send_data(imap)
-        imap.send(:send_literal, @data)
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-    end
-
-    class MessageSet # :nodoc:
-      def send_data(imap)
-        imap.send(:put_string, format_internal(@data))
-      end
-
-      private
-
-      def initialize(data)
-        @data = data
-      end
-
-      def format_internal(data)
-        case data
-        when "*"
-          return data
-        when Integer
-          ensure_nz_number(data)
-          if data == -1
-            return "*"
-          else
-            return data.to_s
-          end
-        when Range
-          return format_internal(data.first) +
-            ":" + format_internal(data.last)
-        when Array
-          return data.collect {|i| format_internal(i)}.join(",")
-        when ThreadMember
-          return data.seqno.to_s +
-            ":" + data.children.collect {|i| format_internal(i).join(",")}
-        else
-          raise DataFormatError, data.inspect
-        end
-      end
-
-      def ensure_nz_number(num)
-        if num < -1 || num == 0 || num >= 4294967296
-          msg = "nz_number must be non-zero unsigned 32-bit integer: " +
-                num.inspect
-          raise DataFormatError, msg
-        end
-      end
-    end
-
-    # Net::IMAP::ContinuationRequest represents command continuation requests.
-    # 
-    # The command continuation request response is indicated by a "+" token
-    # instead of a tag.  This form of response indicates that the server is
-    # ready to accept the continuation of a command from the client.  The
-    # remainder of this response is a line of text.
-    # 
-    #   continue_req    ::= "+" SPACE (resp_text / base64)
-    # 
-    # ==== Fields:
-    # 
-    # data:: Returns the data (Net::IMAP::ResponseText).
-    # 
-    # raw_data:: Returns the raw data string.
-    ContinuationRequest = Struct.new(:data, :raw_data)
-
-    # Net::IMAP::UntaggedResponse represents untagged responses.
-    # 
-    # Data transmitted by the server to the client and status responses
-    # that do not indicate command completion are prefixed with the token
-    # "*", and are called untagged responses.
-    # 
-    #   response_data   ::= "*" SPACE (resp_cond_state / resp_cond_bye /
-    #                       mailbox_data / message_data / capability_data)
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the name such as "FLAGS", "LIST", "FETCH"....
-    # 
-    # data:: Returns the data such as an array of flag symbols,
-    #         a ((<Net::IMAP::MailboxList>)) object....
-    # 
-    # raw_data:: Returns the raw data string.
-    UntaggedResponse = Struct.new(:name, :data, :raw_data)
-     
-    # Net::IMAP::TaggedResponse represents tagged responses.
-    # 
-    # The server completion result response indicates the success or
-    # failure of the operation.  It is tagged with the same tag as the
-    # client command which began the operation.
-    # 
-    #   response_tagged ::= tag SPACE resp_cond_state CRLF
-    #   
-    #   tag             ::= 1*<any ATOM_CHAR except "+">
-    #   
-    #   resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text
-    # 
-    # ==== Fields:
-    # 
-    # tag:: Returns the tag.
-    # 
-    # name:: Returns the name. the name is one of "OK", "NO", "BAD".
-    # 
-    # data:: Returns the data. See ((<Net::IMAP::ResponseText>)).
-    # 
-    # raw_data:: Returns the raw data string.
-    #
-    TaggedResponse = Struct.new(:tag, :name, :data, :raw_data)
-     
-    # Net::IMAP::ResponseText represents texts of responses.
-    # The text may be prefixed by the response code.
-    # 
-    #   resp_text       ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text)
-    #                       ;; text SHOULD NOT begin with "[" or "="
-    # 
-    # ==== Fields:
-    # 
-    # code:: Returns the response code. See ((<Net::IMAP::ResponseCode>)).
-    #       
-    # text:: Returns the text.
-    # 
-    ResponseText = Struct.new(:code, :text)
-
-    # 
-    # Net::IMAP::ResponseCode represents response codes.
-    # 
-    #   resp_text_code  ::= "ALERT" / "PARSE" /
-    #                       "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" /
-    #                       "READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
-    #                       "UIDVALIDITY" SPACE nz_number /
-    #                       "UNSEEN" SPACE nz_number /
-    #                       atom [SPACE 1*<any TEXT_CHAR except "]">]
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the name such as "ALERT", "PERMANENTFLAGS", "UIDVALIDITY"....
-    # 
-    # data:: Returns the data if it exists.
-    #
-    ResponseCode = Struct.new(:name, :data)
-
-    # Net::IMAP::MailboxList represents contents of the LIST response.
-    # 
-    #   mailbox_list    ::= "(" #("\Marked" / "\Noinferiors" /
-    #                       "\Noselect" / "\Unmarked" / flag_extension) ")"
-    #                       SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox
-    # 
-    # ==== Fields:
-    # 
-    # attr:: Returns the name attributes. Each name attribute is a symbol
-    #        capitalized by String#capitalize, such as :Noselect (not :NoSelect).
-    # 
-    # delim:: Returns the hierarchy delimiter
-    # 
-    # name:: Returns the mailbox name.
-    #
-    MailboxList = Struct.new(:attr, :delim, :name)
-
-    # Net::IMAP::MailboxQuota represents contents of GETQUOTA response.
-    # This object can also be a response to GETQUOTAROOT.  In the syntax
-    # specification below, the delimiter used with the "#" construct is a
-    # single space (SPACE).
-    # 
-    #    quota_list      ::= "(" #quota_resource ")"
-    # 
-    #    quota_resource  ::= atom SPACE number SPACE number
-    # 
-    #    quota_response  ::= "QUOTA" SPACE astring SPACE quota_list
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: The mailbox with the associated quota.
-    # 
-    # usage:: Current storage usage of mailbox.
-    # 
-    # quota:: Quota limit imposed on mailbox.
-    #
-    MailboxQuota = Struct.new(:mailbox, :usage, :quota)
-
-    # Net::IMAP::MailboxQuotaRoot represents part of the GETQUOTAROOT
-    # response. (GETQUOTAROOT can also return Net::IMAP::MailboxQuota.)
-    # 
-    #    quotaroot_response ::= "QUOTAROOT" SPACE astring *(SPACE astring)
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: The mailbox with the associated quota.
-    # 
-    # quotaroots:: Zero or more quotaroots that effect the quota on the
-    #              specified mailbox.
-    #
-    MailboxQuotaRoot = Struct.new(:mailbox, :quotaroots)
-
-    # Net::IMAP::MailboxACLItem represents response from GETACL.
-    # 
-    #    acl_data        ::= "ACL" SPACE mailbox *(SPACE identifier SPACE rights)
-    # 
-    #    identifier      ::= astring
-    # 
-    #    rights          ::= astring
-    # 
-    # ==== Fields:
-    # 
-    # user:: Login name that has certain rights to the mailbox
-    #        that was specified with the getacl command.
-    # 
-    # rights:: The access rights the indicated user has to the
-    #          mailbox.
-    #
-    MailboxACLItem = Struct.new(:user, :rights)
-
-    # Net::IMAP::StatusData represents contents of the STATUS response.
-    # 
-    # ==== Fields:
-    # 
-    # mailbox:: Returns the mailbox name.
-    # 
-    # attr:: Returns a hash. Each key is one of "MESSAGES", "RECENT", "UIDNEXT",
-    #        "UIDVALIDITY", "UNSEEN". Each value is a number.
-    # 
-    StatusData = Struct.new(:mailbox, :attr)
-
-    # Net::IMAP::FetchData represents contents of the FETCH response.
-    # 
-    # ==== Fields:
-    # 
-    # seqno:: Returns the message sequence number.
-    #         (Note: not the unique identifier, even for the UID command response.)
-    # 
-    # attr:: Returns a hash. Each key is a data item name, and each value is
-    #        its value.
-    # 
-    #        The current data items are:
-    # 
-    #        [BODY]
-    #           A form of BODYSTRUCTURE without extension data.
-    #        [BODY[<section>]<<origin_octet>>]
-    #           A string expressing the body contents of the specified section.
-    #        [BODYSTRUCTURE]
-    #           An object that describes the [MIME-IMB] body structure of a message.
-    #           See Net::IMAP::BodyTypeBasic, Net::IMAP::BodyTypeText,
-    #           Net::IMAP::BodyTypeMessage, Net::IMAP::BodyTypeMultipart.
-    #        [ENVELOPE]
-    #           A Net::IMAP::Envelope object that describes the envelope
-    #           structure of a message.
-    #        [FLAGS]
-    #           A array of flag symbols that are set for this message. flag symbols
-    #           are capitalized by String#capitalize.
-    #        [INTERNALDATE]
-    #           A string representing the internal date of the message.
-    #        [RFC822]
-    #           Equivalent to BODY[].
-    #        [RFC822.HEADER]
-    #           Equivalent to BODY.PEEK[HEADER].
-    #        [RFC822.SIZE]
-    #           A number expressing the [RFC-822] size of the message.
-    #        [RFC822.TEXT]
-    #           Equivalent to BODY[TEXT].
-    #        [UID]
-    #           A number expressing the unique identifier of the message.
-    # 
-    FetchData = Struct.new(:seqno, :attr)
-
-    # Net::IMAP::Envelope represents envelope structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # date:: Returns a string that represents the date.
-    # 
-    # subject:: Returns a string that represents the subject.
-    # 
-    # from:: Returns an array of Net::IMAP::Address that represents the from.
-    # 
-    # sender:: Returns an array of Net::IMAP::Address that represents the sender.
-    # 
-    # reply_to:: Returns an array of Net::IMAP::Address that represents the reply-to.
-    # 
-    # to:: Returns an array of Net::IMAP::Address that represents the to.
-    # 
-    # cc:: Returns an array of Net::IMAP::Address that represents the cc.
-    # 
-    # bcc:: Returns an array of Net::IMAP::Address that represents the bcc.
-    # 
-    # in_reply_to:: Returns a string that represents the in-reply-to.
-    # 
-    # message_id:: Returns a string that represents the message-id.
-    # 
-    Envelope = Struct.new(:date, :subject, :from, :sender, :reply_to,
-                          :to, :cc, :bcc, :in_reply_to, :message_id)
-
-    # 
-    # Net::IMAP::Address represents electronic mail addresses.
-    # 
-    # ==== Fields:
-    # 
-    # name:: Returns the phrase from [RFC-822] mailbox.
-    # 
-    # route:: Returns the route from [RFC-822] route-addr.
-    # 
-    # mailbox:: nil indicates end of [RFC-822] group.
-    #           If non-nil and host is nil, returns [RFC-822] group name.
-    #           Otherwise, returns [RFC-822] local-part
-    # 
-    # host:: nil indicates [RFC-822] group syntax.
-    #        Otherwise, returns [RFC-822] domain name.
-    #
-    Address = Struct.new(:name, :route, :mailbox, :host)
-
-    # 
-    # Net::IMAP::ContentDisposition represents Content-Disposition fields.
-    # 
-    # ==== Fields:
-    # 
-    # dsp_type:: Returns the disposition type.
-    # 
-    # param:: Returns a hash that represents parameters of the Content-Disposition
-    #         field.
-    # 
-    ContentDisposition = Struct.new(:dsp_type, :param)
-
-    # Net::IMAP::ThreadMember represents a thread-node returned 
-    # by Net::IMAP#thread
-    #
-    # ==== Fields:
-    #
-    # seqno:: The sequence number of this message.
-    #
-    # children:: an array of Net::IMAP::ThreadMember objects for mail
-    # items that are children of this in the thread.
-    #
-    ThreadMember = Struct.new(:seqno, :children)
-
-    # Net::IMAP::BodyTypeBasic represents basic body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # media_type:: Returns the content media type name as defined in [MIME-IMB].
-    # 
-    # subtype:: Returns the content subtype name as defined in [MIME-IMB].
-    # 
-    # param:: Returns a hash that represents parameters as defined in [MIME-IMB].
-    # 
-    # content_id:: Returns a string giving the content id as defined in [MIME-IMB].
-    # 
-    # description:: Returns a string giving the content description as defined in
-    #               [MIME-IMB].
-    # 
-    # encoding:: Returns a string giving the content transfer encoding as defined in
-    #            [MIME-IMB].
-    # 
-    # size:: Returns a number giving the size of the body in octets.
-    # 
-    # md5:: Returns a string giving the body MD5 value as defined in [MD5].
-    # 
-    # disposition:: Returns a Net::IMAP::ContentDisposition object giving
-    #               the content disposition.
-    # 
-    # language:: Returns a string or an array of strings giving the body
-    #            language value as defined in [LANGUAGE-TAGS].
-    # 
-    # extension:: Returns extension data.
-    # 
-    # multipart?:: Returns false.
-    # 
-    class BodyTypeBasic < Struct.new(:media_type, :subtype,
-                                     :param, :content_id,
-                                     :description, :encoding, :size,
-                                     :md5, :disposition, :language,
-                                     :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeText represents TEXT body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # lines:: Returns the size of the body in text lines.
-    # 
-    # And Net::IMAP::BodyTypeText has all fields of Net::IMAP::BodyTypeBasic.
-    # 
-    class BodyTypeText < Struct.new(:media_type, :subtype,
-                                    :param, :content_id,
-                                    :description, :encoding, :size,
-                                    :lines,
-                                    :md5, :disposition, :language,
-                                    :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeMessage represents MESSAGE/RFC822 body structures of messages.
-    # 
-    # ==== Fields:
-    # 
-    # envelope:: Returns a Net::IMAP::Envelope giving the envelope structure.
-    # 
-    # body:: Returns an object giving the body structure.
-    # 
-    # And Net::IMAP::BodyTypeMessage has all methods of Net::IMAP::BodyTypeText.
-    #
-    class BodyTypeMessage < Struct.new(:media_type, :subtype,
-                                       :param, :content_id,
-                                       :description, :encoding, :size,
-                                       :envelope, :body, :lines,
-                                       :md5, :disposition, :language,
-                                       :extension)
-      def multipart?
-        return false
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    # Net::IMAP::BodyTypeMultipart represents multipart body structures 
-    # of messages.
-    # 
-    # ==== Fields:
-    # 
-    # media_type:: Returns the content media type name as defined in [MIME-IMB].
-    # 
-    # subtype:: Returns the content subtype name as defined in [MIME-IMB].
-    # 
-    # parts:: Returns multiple parts.
-    # 
-    # param:: Returns a hash that represents parameters as defined in [MIME-IMB].
-    # 
-    # disposition:: Returns a Net::IMAP::ContentDisposition object giving
-    #               the content disposition.
-    # 
-    # language:: Returns a string or an array of strings giving the body
-    #            language value as defined in [LANGUAGE-TAGS].
-    # 
-    # extension:: Returns extension data.
-    # 
-    # multipart?:: Returns true.
-    # 
-    class BodyTypeMultipart < Struct.new(:media_type, :subtype,
-                                         :parts,
-                                         :param, :disposition, :language,
-                                         :extension)
-      def multipart?
-        return true
-      end
-
-      # Obsolete: use +subtype+ instead.  Calling this will
-      # generate a warning message to +stderr+, then return 
-      # the value of +subtype+.
-      def media_subtype
-        $stderr.printf("warning: media_subtype is obsolete.\n")
-        $stderr.printf("         use subtype instead.\n")
-        return subtype
-      end
-    end
-
-    class ResponseParser # :nodoc:
-      def parse(str)
-        @str = str
-        @pos = 0
-        @lex_state = EXPR_BEG
-        @token = nil
-        return response
-      end
-
-      private
-
-      EXPR_BEG          = :EXPR_BEG
-      EXPR_DATA         = :EXPR_DATA
-      EXPR_TEXT         = :EXPR_TEXT
-      EXPR_RTEXT        = :EXPR_RTEXT
-      EXPR_CTEXT        = :EXPR_CTEXT
-
-      T_SPACE   = :SPACE
-      T_NIL     = :NIL
-      T_NUMBER  = :NUMBER
-      T_ATOM    = :ATOM
-      T_QUOTED  = :QUOTED
-      T_LPAR    = :LPAR
-      T_RPAR    = :RPAR
-      T_BSLASH  = :BSLASH
-      T_STAR    = :STAR
-      T_LBRA    = :LBRA
-      T_RBRA    = :RBRA
-      T_LITERAL = :LITERAL
-      T_PLUS    = :PLUS
-      T_PERCENT = :PERCENT
-      T_CRLF    = :CRLF
-      T_EOF     = :EOF
-      T_TEXT    = :TEXT
-
-      BEG_REGEXP = /\G(?:\
-(?# 1:  SPACE   )( +)|\
-(?# 2:  NIL     )(NIL)(?=[\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+])|\
-(?# 3:  NUMBER  )(\d+)(?=[\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+])|\
-(?# 4:  ATOM    )([^\x80-\xff(){ \x00-\x1f\x7f%*"\\\[\]+]+)|\
-(?# 5:  QUOTED  )"((?:[^\x00\r\n"\\]|\\["\\])*)"|\
-(?# 6:  LPAR    )(\()|\
-(?# 7:  RPAR    )(\))|\
-(?# 8:  BSLASH  )(\\)|\
-(?# 9:  STAR    )(\*)|\
-(?# 10: LBRA    )(\[)|\
-(?# 11: RBRA    )(\])|\
-(?# 12: LITERAL )\{(\d+)\}\r\n|\
-(?# 13: PLUS    )(\+)|\
-(?# 14: PERCENT )(%)|\
-(?# 15: CRLF    )(\r\n)|\
-(?# 16: EOF     )(\z))/ni
-
-      DATA_REGEXP = /\G(?:\
-(?# 1:  SPACE   )( )|\
-(?# 2:  NIL     )(NIL)|\
-(?# 3:  NUMBER  )(\d+)|\
-(?# 4:  QUOTED  )"((?:[^\x00\r\n"\\]|\\["\\])*)"|\
-(?# 5:  LITERAL )\{(\d+)\}\r\n|\
-(?# 6:  LPAR    )(\()|\
-(?# 7:  RPAR    )(\)))/ni
-
-      TEXT_REGEXP = /\G(?:\
-(?# 1:  TEXT    )([^\x00\r\n]*))/ni
-
-      RTEXT_REGEXP = /\G(?:\
-(?# 1:  LBRA    )(\[)|\
-(?# 2:  TEXT    )([^\x00\r\n]*))/ni
-
-      CTEXT_REGEXP = /\G(?:\
-(?# 1:  TEXT    )([^\x00\r\n\]]*))/ni
-
-      Token = Struct.new(:symbol, :value)
-
-      def response
-        token = lookahead
-        case token.symbol
-        when T_PLUS
-          result = continue_req
-        when T_STAR
-          result = response_untagged
-        else
-          result = response_tagged
-        end
-        match(T_CRLF)
-        match(T_EOF)
-        return result
-      end
-
-      def continue_req
-        match(T_PLUS)
-        match(T_SPACE)
-        return ContinuationRequest.new(resp_text, @str)
-      end
-
-      def response_untagged
-        match(T_STAR)
-        match(T_SPACE)
-        token = lookahead
-        if token.symbol == T_NUMBER
-          return numeric_response
-        elsif token.symbol == T_ATOM
-          case token.value
-          when /\A(?:OK|NO|BAD|BYE|PREAUTH)\z/ni
-            return response_cond
-          when /\A(?:FLAGS)\z/ni
-            return flags_response
-          when /\A(?:LIST|LSUB)\z/ni
-            return list_response
-          when /\A(?:QUOTA)\z/ni
-            return getquota_response
-          when /\A(?:QUOTAROOT)\z/ni
-            return getquotaroot_response
-          when /\A(?:ACL)\z/ni
-            return getacl_response
-          when /\A(?:SEARCH|SORT)\z/ni
-            return search_response
-          when /\A(?:THREAD)\z/ni
-            return thread_response
-          when /\A(?:STATUS)\z/ni
-            return status_response
-          when /\A(?:CAPABILITY)\z/ni
-            return capability_response
-          else
-            return text_response
-          end
-        else
-          parse_error("unexpected token %s", token.symbol)
-        end
-      end
-
-      def response_tagged
-        tag = atom
-        match(T_SPACE)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return TaggedResponse.new(tag, name, resp_text, @str)
-      end
-
-      def response_cond
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, resp_text, @str)
-      end
-
-      def numeric_response
-        n = number
-        match(T_SPACE)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        case name
-        when "EXISTS", "RECENT", "EXPUNGE"
-          return UntaggedResponse.new(name, n, @str)
-        when "FETCH"
-          shift_token
-          match(T_SPACE)
-          data = FetchData.new(n, msg_att)
-          return UntaggedResponse.new(name, data, @str)
-        end
-      end
-
-      def msg_att
-        match(T_LPAR)
-        attr = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-            token = lookahead
-          end
-          case token.value
-          when /\A(?:ENVELOPE)\z/ni
-            name, val = envelope_data
-          when /\A(?:FLAGS)\z/ni
-            name, val = flags_data
-          when /\A(?:INTERNALDATE)\z/ni
-            name, val = internaldate_data
-          when /\A(?:RFC822(?:\.HEADER|\.TEXT)?)\z/ni
-            name, val = rfc822_text
-          when /\A(?:RFC822\.SIZE)\z/ni
-            name, val = rfc822_size
-          when /\A(?:BODY(?:STRUCTURE)?)\z/ni
-            name, val = body_data
-          when /\A(?:UID)\z/ni
-            name, val = uid_data
-          else
-            parse_error("unknown attribute `%s'", token.value)
-          end
-          attr[name] = val
-        end
-        return attr
-      end
-
-      def envelope_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, envelope
-      end
-
-      def envelope
-        @lex_state = EXPR_DATA
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          result = nil
-        else
-          match(T_LPAR)
-          date = nstring
-          match(T_SPACE)
-          subject = nstring
-          match(T_SPACE)
-          from = address_list
-          match(T_SPACE)
-          sender = address_list
-          match(T_SPACE)
-          reply_to = address_list
-          match(T_SPACE)
-          to = address_list
-          match(T_SPACE)
-          cc = address_list
-          match(T_SPACE)
-          bcc = address_list
-          match(T_SPACE)
-          in_reply_to = nstring
-          match(T_SPACE)
-          message_id = nstring
-          match(T_RPAR)
-          result = Envelope.new(date, subject, from, sender, reply_to,
-                                to, cc, bcc, in_reply_to, message_id)
-        end
-        @lex_state = EXPR_BEG
-        return result
-      end
-
-      def flags_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, flag_list
-      end
-
-      def internaldate_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        token = match(T_QUOTED)
-        return name, token.value
-      end
-
-      def rfc822_text
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, nstring
-      end
-
-      def rfc822_size
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, number
-      end
-
-      def body_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          return name, body
-        end
-        name.concat(section)
-        token = lookahead
-        if token.symbol == T_ATOM
-          name.concat(token.value)
-          shift_token
-        end
-        match(T_SPACE)
-        data = nstring
-        return name, data
-      end
-
-      def body
-        @lex_state = EXPR_DATA
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          result = nil
-        else
-          match(T_LPAR)
-          token = lookahead
-          if token.symbol == T_LPAR
-            result = body_type_mpart
-          else
-            result = body_type_1part
-          end
-          match(T_RPAR)
-        end
-        @lex_state = EXPR_BEG
-        return result
-      end
-
-      def body_type_1part
-        token = lookahead
-        case token.value
-        when /\A(?:TEXT)\z/ni
-          return body_type_text
-        when /\A(?:MESSAGE)\z/ni
-          return body_type_msg
-        else
-          return body_type_basic
-        end
-      end
-
-      def body_type_basic
-        mtype, msubtype = media_type
-        token = lookahead
-        if token.symbol == T_RPAR
-          return BodyTypeBasic.new(mtype, msubtype)
-        end
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeBasic.new(mtype, msubtype,
-                                 param, content_id,
-                                 desc, enc, size,
-                                 md5, disposition, language, extension)
-      end
-
-      def body_type_text
-        mtype, msubtype = media_type
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        match(T_SPACE)
-        lines = number
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeText.new(mtype, msubtype,
-                                param, content_id,
-                                desc, enc, size,
-                                lines,
-                                md5, disposition, language, extension)
-      end
-
-      def body_type_msg
-        mtype, msubtype = media_type
-        match(T_SPACE)
-        param, content_id, desc, enc, size = body_fields
-        match(T_SPACE)
-        env = envelope
-        match(T_SPACE)
-        b = body
-        match(T_SPACE)
-        lines = number
-        md5, disposition, language, extension = body_ext_1part
-        return BodyTypeMessage.new(mtype, msubtype,
-                                   param, content_id,
-                                   desc, enc, size,
-                                   env, b, lines,
-                                   md5, disposition, language, extension)
-      end
-
-      def body_type_mpart
-        parts = []
-        while true
-          token = lookahead
-          if token.symbol == T_SPACE
-            shift_token
-            break
-          end
-          parts.push(body)
-        end
-        mtype = "MULTIPART"
-        msubtype = case_insensitive_string
-        param, disposition, language, extension = body_ext_mpart
-        return BodyTypeMultipart.new(mtype, msubtype, parts,
-                                     param, disposition, language,
-                                     extension)
-      end
-
-      def media_type
-        mtype = case_insensitive_string
-        match(T_SPACE)
-        msubtype = case_insensitive_string
-        return mtype, msubtype
-      end
-
-      def body_fields
-        param = body_fld_param
-        match(T_SPACE)
-        content_id = nstring
-        match(T_SPACE)
-        desc = nstring
-        match(T_SPACE)
-        enc = case_insensitive_string
-        match(T_SPACE)
-        size = number
-        return param, content_id, desc, enc, size
-      end
-
-      def body_fld_param
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        match(T_LPAR)
-        param = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-          end
-          name = case_insensitive_string
-          match(T_SPACE)
-          val = string
-          param[name] = val
-        end
-        return param
-      end
-
-      def body_ext_1part
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return nil
-        end
-        md5 = nstring
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5
-        end
-        disposition = body_fld_dsp
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5, disposition
-        end
-        language = body_fld_lang
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return md5, disposition, language
-        end
-
-        extension = body_extensions
-        return md5, disposition, language, extension
-      end
-
-      def body_ext_mpart
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return nil
-        end
-        param = body_fld_param
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return param
-        end
-        disposition = body_fld_dsp
-        match(T_SPACE)
-        language = body_fld_lang
-
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-        else
-          return param, disposition, language
-        end
-
-        extension = body_extensions
-        return param, disposition, language, extension
-      end
-
-      def body_fld_dsp
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        match(T_LPAR)
-        dsp_type = case_insensitive_string
-        match(T_SPACE)
-        param = body_fld_param
-        match(T_RPAR)
-        return ContentDisposition.new(dsp_type, param)
-      end
-
-      def body_fld_lang
-        token = lookahead
-        if token.symbol == T_LPAR
-          shift_token
-          result = []
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              shift_token
-              return result
-            when T_SPACE
-              shift_token
-            end
-            result.push(case_insensitive_string)
-          end
-        else
-          lang = nstring
-          if lang
-            return lang.upcase
-          else
-            return lang
-          end
-        end
-      end
-
-      def body_extensions
-        result = []
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            return result
-          when T_SPACE
-            shift_token
-          end
-          result.push(body_extension)
-        end
-      end
-
-      def body_extension
-        token = lookahead
-        case token.symbol
-        when T_LPAR
-          shift_token
-          result = body_extensions
-          match(T_RPAR)
-          return result
-        when T_NUMBER
-          return number
-        else
-          return nstring
-        end
-      end
-
-      def section
-        str = ""
-        token = match(T_LBRA)
-        str.concat(token.value)
-        token = match(T_ATOM, T_NUMBER, T_RBRA)
-        if token.symbol == T_RBRA
-          str.concat(token.value)
-          return str
-        end
-        str.concat(token.value)
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          str.concat(token.value)
-          token = match(T_LPAR)
-          str.concat(token.value)
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              str.concat(token.value)
-              shift_token
-              break
-            when T_SPACE
-              shift_token
-              str.concat(token.value)
-            end
-            str.concat(format_string(astring))
-          end
-        end
-        token = match(T_RBRA)
-        str.concat(token.value)
-        return str
-      end
-
-      def format_string(str)
-        case str
-        when ""
-          return '""'
-        when /[\x80-\xff\r\n]/n
-          # literal
-          return "{" + str.length.to_s + "}" + CRLF + str
-        when /[(){ \x00-\x1f\x7f%*"\\]/n
-          # quoted string
-          return '"' + str.gsub(/["\\]/n, "\\\\\\&") + '"'
-        else
-          # atom
-          return str
-        end
-      end
-
-      def uid_data
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return name, number
-      end
-
-      def text_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        @lex_state = EXPR_TEXT
-        token = match(T_TEXT)
-        @lex_state = EXPR_BEG
-        return UntaggedResponse.new(name, token.value)
-      end
-
-      def flags_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, flag_list, @str)
-      end
-
-      def list_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        return UntaggedResponse.new(name, mailbox_list, @str)
-      end
-
-      def mailbox_list
-        attr = flag_list
-        match(T_SPACE)
-        token = match(T_QUOTED, T_NIL)
-        if token.symbol == T_NIL
-          delim = nil
-        else
-          delim = token.value
-        end
-        match(T_SPACE)
-        name = astring
-        return MailboxList.new(attr, delim, name)
-      end
-
-      def getquota_response
-        # If quota never established, get back
-        # `NO Quota root does not exist'.
-        # If quota removed, get `()' after the
-        # folder spec with no mention of `STORAGE'.
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        match(T_SPACE)
-        match(T_LPAR)
-        token = lookahead
-        case token.symbol
-        when T_RPAR
-          shift_token
-          data = MailboxQuota.new(mailbox, nil, nil)
-          return UntaggedResponse.new(name, data, @str)
-        when T_ATOM
-          shift_token
-          match(T_SPACE)
-          token = match(T_NUMBER)
-          usage = token.value
-          match(T_SPACE)
-          token = match(T_NUMBER)
-          quota = token.value
-          match(T_RPAR)
-          data = MailboxQuota.new(mailbox, usage, quota)
-          return UntaggedResponse.new(name, data, @str)
-        else
-          parse_error("unexpected token %s", token.symbol)
-        end
-      end
-
-      def getquotaroot_response
-        # Similar to getquota, but only admin can use getquota.
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        quotaroots = []
-        while true
-          token = lookahead
-          break unless token.symbol == T_SPACE
-          shift_token
-          quotaroots.push(astring)
-        end
-        data = MailboxQuotaRoot.new(mailbox, quotaroots)
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def getacl_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        data = []
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          while true
-            token = lookahead
-            case token.symbol
-            when T_CRLF
-              break
-            when T_SPACE
-              shift_token
-            end
-            user = astring
-            match(T_SPACE)
-            rights = astring
-            ##XXX data.push([user, rights])
-            data.push(MailboxACLItem.new(user, rights))
-          end
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def search_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-        if token.symbol == T_SPACE
-          shift_token
-          data = []
-          while true
-            token = lookahead
-            case token.symbol
-            when T_CRLF
-              break
-            when T_SPACE
-              shift_token
-            end
-            data.push(number)
-          end
-        else
-          data = []
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def thread_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        token = lookahead
-
-        if token.symbol == T_SPACE
-          threads = []
-
-          while true
-            shift_token
-            token = lookahead
-
-            case token.symbol
-            when T_LPAR
-              threads << thread_branch(token)
-            when T_CRLF
-              break
-            end
-          end
-        else
-          # no member
-          threads = []
-        end
-
-        return UntaggedResponse.new(name, threads, @str)
-      end
-
-      def thread_branch(token)
-        rootmember = nil
-        lastmember = nil
-        
-        while true
-          shift_token    # ignore first T_LPAR
-          token = lookahead
-          
-          case token.symbol
-          when T_NUMBER
-            # new member
-            newmember = ThreadMember.new(number, [])
-            if rootmember.nil?
-              rootmember = newmember
-            else    
-              lastmember.children << newmember
-            end     
-            lastmember = newmember
-          when T_SPACE 
-            # do nothing 
-          when T_LPAR
-            if rootmember.nil?
-              # dummy member
-              lastmember = rootmember = ThreadMember.new(nil, [])
-            end     
-            
-            lastmember.children << thread_branch(token)
-          when T_RPAR
-            break   
-          end     
-        end
-        
-        return rootmember
-      end
-
-      def status_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        mailbox = astring
-        match(T_SPACE)
-        match(T_LPAR)
-        attr = {}
-        while true
-          token = lookahead
-          case token.symbol
-          when T_RPAR
-            shift_token
-            break
-          when T_SPACE
-            shift_token
-          end
-          token = match(T_ATOM)
-          key = token.value.upcase
-          match(T_SPACE)
-          val = number
-          attr[key] = val
-        end
-        data = StatusData.new(mailbox, attr)
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def capability_response
-        token = match(T_ATOM)
-        name = token.value.upcase
-        match(T_SPACE)
-        data = []
-        while true
-          token = lookahead
-          case token.symbol
-          when T_CRLF
-            break
-          when T_SPACE
-            shift_token
-          end
-          data.push(atom.upcase)
-        end
-        return UntaggedResponse.new(name, data, @str)
-      end
-
-      def resp_text
-        @lex_state = EXPR_RTEXT
-        token = lookahead
-        if token.symbol == T_LBRA
-          code = resp_text_code
-        else
-          code = nil
-        end
-        token = match(T_TEXT)
-        @lex_state = EXPR_BEG
-        return ResponseText.new(code, token.value)
-      end
-
-      def resp_text_code
-        @lex_state = EXPR_BEG
-        match(T_LBRA)
-        token = match(T_ATOM)
-        name = token.value.upcase
-        case name
-        when /\A(?:ALERT|PARSE|READ-ONLY|READ-WRITE|TRYCREATE|NOMODSEQ)\z/n
-          result = ResponseCode.new(name, nil)
-        when /\A(?:PERMANENTFLAGS)\z/n
-          match(T_SPACE)
-          result = ResponseCode.new(name, flag_list)
-        when /\A(?:UIDVALIDITY|UIDNEXT|UNSEEN)\z/n
-          match(T_SPACE)
-          result = ResponseCode.new(name, number)
-        else
-          match(T_SPACE)
-          @lex_state = EXPR_CTEXT
-          token = match(T_TEXT)
-          @lex_state = EXPR_BEG
-          result = ResponseCode.new(name, token.value)
-        end
-        match(T_RBRA)
-        @lex_state = EXPR_RTEXT
-        return result
-      end
-
-      def address_list
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        else
-          result = []
-          match(T_LPAR)
-          while true
-            token = lookahead
-            case token.symbol
-            when T_RPAR
-              shift_token
-              break
-            when T_SPACE
-              shift_token
-            end
-            result.push(address)
-          end
-          return result
-        end
-      end
-
-      ADDRESS_REGEXP = /\G\
-(?# 1: NAME     )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 2: ROUTE    )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 3: MAILBOX  )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)") \
-(?# 4: HOST     )(?:NIL|"((?:[^\x80-\xff\x00\r\n"\\]|\\["\\])*)")\
-\)/ni
-
-      def address
-        match(T_LPAR)
-        if @str.index(ADDRESS_REGEXP, @pos)
-          # address does not include literal.
-          @pos = $~.end(0)
-          name = $1
-          route = $2
-          mailbox = $3
-          host = $4
-          for s in [name, route, mailbox, host]
-            if s
-              s.gsub!(/\\(["\\])/n, "\\1")
-            end
-          end
-        else
-          name = nstring
-          match(T_SPACE)
-          route = nstring
-          match(T_SPACE)
-          mailbox = nstring
-          match(T_SPACE)
-          host = nstring
-          match(T_RPAR)
-        end
-        return Address.new(name, route, mailbox, host)
-      end
-
-#        def flag_list
-#       result = []
-#       match(T_LPAR)
-#       while true
-#         token = lookahead
-#         case token.symbol
-#         when T_RPAR
-#           shift_token
-#           break
-#         when T_SPACE
-#           shift_token
-#         end
-#         result.push(flag)
-#       end
-#       return result
-#        end
-
-#        def flag
-#       token = lookahead
-#       if token.symbol == T_BSLASH
-#         shift_token
-#         token = lookahead
-#         if token.symbol == T_STAR
-#           shift_token
-#           return token.value.intern
-#         else
-#           return atom.intern
-#         end
-#       else
-#         return atom
-#       end
-#        end
-
-      FLAG_REGEXP = /\
-(?# FLAG        )\\([^\x80-\xff(){ \x00-\x1f\x7f%"\\]+)|\
-(?# ATOM        )([^\x80-\xff(){ \x00-\x1f\x7f%*"\\]+)/n
-
-      def flag_list
-        if @str.index(/\(([^)]*)\)/ni, @pos)
-          @pos = $~.end(0)
-          return $1.scan(FLAG_REGEXP).collect { |flag, atom|
-            atom || flag.capitalize.intern
-          }
-        else
-          parse_error("invalid flag list")
-        end
-      end
-
-      def nstring
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        else
-          return string
-        end
-      end
-
-      def astring
-        token = lookahead
-        if string_token?(token)
-          return string
-        else
-          return atom
-        end
-      end
-
-      def string
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_QUOTED, T_LITERAL)
-        return token.value
-      end
-
-      STRING_TOKENS = [T_QUOTED, T_LITERAL, T_NIL]
-
-      def string_token?(token)
-        return STRING_TOKENS.include?(token.symbol)
-      end
-
-      def case_insensitive_string
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_QUOTED, T_LITERAL)
-        return token.value.upcase
-      end
-
-      def atom
-        result = ""
-        while true
-          token = lookahead
-          if atom_token?(token)
-            result.concat(token.value)
-            shift_token
-          else
-            if result.empty?
-              parse_error("unexpected token %s", token.symbol)
-            else
-              return result
-            end
-          end
-        end
-      end
-
-      ATOM_TOKENS = [
-        T_ATOM,
-        T_NUMBER,
-        T_NIL,
-        T_LBRA,
-        T_RBRA,
-        T_PLUS
-      ]
-
-      def atom_token?(token)
-        return ATOM_TOKENS.include?(token.symbol)
-      end
-
-      def number
-        token = lookahead
-        if token.symbol == T_NIL
-          shift_token
-          return nil
-        end
-        token = match(T_NUMBER)
-        return token.value.to_i
-      end
-
-      def nil_atom
-        match(T_NIL)
-        return nil
-      end
-
-      def match(*args)
-        token = lookahead
-        unless args.include?(token.symbol)
-          parse_error('unexpected token %s (expected %s)',
-                      token.symbol.id2name,
-                      args.collect {|i| i.id2name}.join(" or "))
-        end
-        shift_token
-        return token
-      end
-
-      def lookahead
-        unless @token
-          @token = next_token
-        end
-        return @token
-      end
-
-      def shift_token
-        @token = nil
-      end
-
-      def next_token
-        case @lex_state
-        when EXPR_BEG
-          if @str.index(BEG_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_SPACE, $+)
-            elsif $2
-              return Token.new(T_NIL, $+)
-            elsif $3
-              return Token.new(T_NUMBER, $+)
-            elsif $4
-              return Token.new(T_ATOM, $+)
-            elsif $5
-              return Token.new(T_QUOTED,
-                               $+.gsub(/\\(["\\])/n, "\\1"))
-            elsif $6
-              return Token.new(T_LPAR, $+)
-            elsif $7
-              return Token.new(T_RPAR, $+)
-            elsif $8
-              return Token.new(T_BSLASH, $+)
-            elsif $9
-              return Token.new(T_STAR, $+)
-            elsif $10
-              return Token.new(T_LBRA, $+)
-            elsif $11
-              return Token.new(T_RBRA, $+)
-            elsif $12
-              len = $+.to_i
-              val = @str[@pos, len]
-              @pos += len
-              return Token.new(T_LITERAL, val)
-            elsif $13
-              return Token.new(T_PLUS, $+)
-            elsif $14
-              return Token.new(T_PERCENT, $+)
-            elsif $15
-              return Token.new(T_CRLF, $+)
-            elsif $16
-              return Token.new(T_EOF, $+)
-            else
-              parse_error("[Net::IMAP BUG] BEG_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_DATA
-          if @str.index(DATA_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_SPACE, $+)
-            elsif $2
-              return Token.new(T_NIL, $+)
-            elsif $3
-              return Token.new(T_NUMBER, $+)
-            elsif $4
-              return Token.new(T_QUOTED,
-                               $+.gsub(/\\(["\\])/n, "\\1"))
-            elsif $5
-              len = $+.to_i
-              val = @str[@pos, len]
-              @pos += len
-              return Token.new(T_LITERAL, val)
-            elsif $6
-              return Token.new(T_LPAR, $+)
-            elsif $7
-              return Token.new(T_RPAR, $+)
-            else
-              parse_error("[Net::IMAP BUG] DATA_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_TEXT
-          if @str.index(TEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] TEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_RTEXT
-          if @str.index(RTEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_LBRA, $+)
-            elsif $2
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] RTEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos)
-            parse_error("unknown token - %s", $&.dump)
-          end
-        when EXPR_CTEXT
-          if @str.index(CTEXT_REGEXP, @pos)
-            @pos = $~.end(0)
-            if $1
-              return Token.new(T_TEXT, $+)
-            else
-              parse_error("[Net::IMAP BUG] CTEXT_REGEXP is invalid")
-            end
-          else
-            @str.index(/\S*/n, @pos) #/
-            parse_error("unknown token - %s", $&.dump)
-          end
-        else
-          parse_error("illegal @lex_state - %s", @lex_state.inspect)
-        end
-      end
-
-      def parse_error(fmt, *args)
-        if IMAP.debug
-          $stderr.printf("@str: %s\n", @str.dump)
-          $stderr.printf("@pos: %d\n", @pos)
-          $stderr.printf("@lex_state: %s\n", @lex_state)
-          if @token
-            $stderr.printf("@token.symbol: %s\n", @token.symbol)
-            $stderr.printf("@token.value: %s\n", @token.value.inspect)
-          end
-        end
-        raise ResponseParseError, format(fmt, *args)
-      end
-    end
-
-    # Authenticator for the "LOGIN" authentication type.  See
-    # #authenticate().
-    class LoginAuthenticator
-      def process(data)
-        case @state
-        when STATE_USER
-          @state = STATE_PASSWORD
-          return @user
-        when STATE_PASSWORD
-          return @password
-        end
-      end
-
-      private
-
-      STATE_USER = :USER
-      STATE_PASSWORD = :PASSWORD
-
-      def initialize(user, password)
-        @user = user
-        @password = password
-        @state = STATE_USER
-      end
-    end
-    add_authenticator "LOGIN", LoginAuthenticator
-
-    # Authenticator for the "CRAM-MD5" authentication type.  See
-    # #authenticate().
-    class CramMD5Authenticator
-      def process(challenge)
-        digest = hmac_md5(challenge, @password)
-        return @user + " " + digest
-      end
-
-      private
-
-      def initialize(user, password)
-        @user = user
-        @password = password
-      end
-
-      def hmac_md5(text, key)
-        if key.length > 64
-          key = Digest::MD5.digest(key)
-        end
-
-        k_ipad = key + "\0" * (64 - key.length)
-        k_opad = key + "\0" * (64 - key.length)
-        for i in 0..63
-          k_ipad[i] ^= 0x36
-          k_opad[i] ^= 0x5c
-        end
-
-        digest = Digest::MD5.digest(k_ipad + text)
-
-        return Digest::MD5.hexdigest(k_opad + digest)
-      end
-    end
-    add_authenticator "CRAM-MD5", CramMD5Authenticator
-
-    # Superclass of IMAP errors.
-    class Error < StandardError
-    end
-
-    # Error raised when data is in the incorrect format.
-    class DataFormatError < Error
-    end
-
-    # Error raised when a response from the server is non-parseable.
-    class ResponseParseError < Error
-    end
-
-    # Superclass of all errors used to encapsulate "fail" responses
-    # from the server.
-    class ResponseError < Error
-    end
-
-    # Error raised upon a "NO" response from the server, indicating
-    # that the client command could not be completed successfully.
-    class NoResponseError < ResponseError
-    end
-
-    # Error raised upon a "BAD" response from the server, indicating
-    # that the client command violated the IMAP protocol, or an internal
-    # server failure has occurred.
-    class BadResponseError < ResponseError
-    end
-
-    # Error raised upon a "BYE" response from the server, indicating 
-    # that the client is not being allowed to login, or has been timed
-    # out due to inactivity.
-    class ByeResponseError < ResponseError
-    end
-  end
-end
-
-if __FILE__ == $0
-  # :enddoc:
-  require "getoptlong"
-
-  $stdout.sync = true
-  $port = nil
-  $user = ENV["USER"] || ENV["LOGNAME"]
-  $auth = "login"
-  $ssl = false
-
-  def usage
-    $stderr.print <<EOF
-usage: #{$0} [options] <host>
-
-  --help                        print this message
-  --port=PORT                   specifies port
-  --user=USER                   specifies user
-  --auth=AUTH                   specifies auth type
-  --ssl                         use ssl
-EOF
-  end
-
-  def get_password
-    print "password: "
-    system("stty", "-echo")
-    begin
-      return gets.chop
-    ensure
-      system("stty", "echo")
-      print "\n"
-    end
-  end
-
-  def get_command
-    printf("%s@%s> ", $user, $host)
-    if line = gets
-      return line.strip.split(/\s+/)
-    else
-      return nil
-    end
-  end
-
-  parser = GetoptLong.new
-  parser.set_options(['--debug', GetoptLong::NO_ARGUMENT],
-                     ['--help', GetoptLong::NO_ARGUMENT],
-                     ['--port', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--user', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--auth', GetoptLong::REQUIRED_ARGUMENT],
-                     ['--ssl', GetoptLong::NO_ARGUMENT])
-  begin
-    parser.each_option do |name, arg|
-      case name
-      when "--port"
-        $port = arg
-      when "--user"
-        $user = arg
-      when "--auth"
-        $auth = arg
-      when "--ssl"
-        $ssl = true
-      when "--debug"
-        Net::IMAP.debug = true
-      when "--help"
-        usage
-        exit(1)
-      end
-    end
-  rescue
-    usage
-    exit(1)
-  end
-
-  $host = ARGV.shift
-  unless $host
-    usage
-    exit(1)
-  end
-  $port ||= $ssl ? 993 : 143
-    
-  imap = Net::IMAP.new($host, $port, $ssl)
-  begin
-    password = get_password
-    imap.authenticate($auth, $user, password)
-    while true
-      cmd, *args = get_command
-      break unless cmd
-      begin
-        case cmd
-        when "list"
-          for mbox in imap.list("", args[0] || "*")
-            if mbox.attr.include?(Net::IMAP::NOSELECT)
-              prefix = "!"
-            elsif mbox.attr.include?(Net::IMAP::MARKED)
-              prefix = "*"
-            else
-              prefix = " "
-            end
-            print prefix, mbox.name, "\n"
-          end
-        when "select"
-          imap.select(args[0] || "inbox")
-          print "ok\n"
-        when "close"
-          imap.close
-          print "ok\n"
-        when "summary"
-          unless messages = imap.responses["EXISTS"][-1]
-            puts "not selected"
-            next
-          end
-          if messages > 0
-            for data in imap.fetch(1..-1, ["ENVELOPE"])
-              print data.seqno, ": ", data.attr["ENVELOPE"].subject, "\n"
-            end
-          else
-            puts "no message"
-          end
-        when "fetch"
-          if args[0]
-            data = imap.fetch(args[0].to_i, ["RFC822.HEADER", "RFC822.TEXT"])[0]
-            puts data.attr["RFC822.HEADER"]
-            puts data.attr["RFC822.TEXT"]
-          else
-            puts "missing argument"
-          end
-        when "logout", "exit", "quit"
-          break
-        when "help", "?"
-          print <<EOF
-list [pattern]                  list mailboxes
-select [mailbox]                select mailbox
-close                           close mailbox
-summary                         display summary
-fetch [msgno]                   display message
-logout                          logout
-help, ?                         display help message
-EOF
-        else
-          print "unknown command: ", cmd, "\n"
-        end
-      rescue Net::IMAP::Error
-        puts $!
-      end
-    end
-  ensure
-    imap.logout
-    imap.disconnect
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/pop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/pop.rb
deleted file mode 100644
index c879352..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/pop.rb
+++ /dev/null
@@ -1,881 +0,0 @@
-# = net/pop.rb
-#
-# Copyright (c) 1999-2003 Yukihiro Matsumoto.
-#
-# Copyright (c) 1999-2003 Minero Aoki.
-# 
-# Written & maintained by Minero Aoki <aamine at loveruby.net>.
-#
-# Documented by William Webber and Minero Aoki.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-# 
-# NOTE: You can find Japanese version of this document in
-# the doc/net directory of the standard ruby interpreter package.
-# 
-#   $Id: pop.rb 17230 2008-06-15 12:27:56Z shyouhei $
-#
-# See Net::POP3 for documentation.
-#
-
-require 'net/protocol'
-require 'digest/md5'
-
-module Net
-
-  # Non-authentication POP3 protocol error
-  # (reply code "-ERR", except authentication).
-  class POPError < ProtocolError; end
-
-  # POP3 authentication error.
-  class POPAuthenticationError < ProtoAuthError; end
-
-  # Unexpected response from the server.
-  class POPBadResponse < POPError; end
-
-  #
-  # = Net::POP3
-  #
-  # == What is This Library?
-  # 
-  # This library provides functionality for retrieving 
-  # email via POP3, the Post Office Protocol version 3. For details
-  # of POP3, see [RFC1939] (http://www.ietf.org/rfc/rfc1939.txt).
-  # 
-  # == Examples
-  # 
-  # === Retrieving Messages 
-  # 
-  # This example retrieves messages from the server and deletes them 
-  # on the server.
-  #
-  # Messages are written to files named 'inbox/1', 'inbox/2', ....
-  # Replace 'pop.example.com' with your POP3 server address, and
-  # 'YourAccount' and 'YourPassword' with the appropriate account
-  # details.
-  # 
-  #     require 'net/pop'
-  # 
-  #     pop = Net::POP3.new('pop.example.com')
-  #     pop.start('YourAccount', 'YourPassword')             # (1)
-  #     if pop.mails.empty?
-  #       puts 'No mail.'
-  #     else
-  #       i = 0
-  #       pop.each_mail do |m|   # or "pop.mails.each ..."   # (2)
-  #         File.open("inbox/#{i}", 'w') do |f|
-  #           f.write m.pop
-  #         end
-  #         m.delete
-  #         i += 1
-  #       end
-  #       puts "#{pop.mails.size} mails popped."
-  #     end
-  #     pop.finish                                           # (3)
-  # 
-  # 1. Call Net::POP3#start and start POP session.
-  # 2. Access messages by using POP3#each_mail and/or POP3#mails.
-  # 3. Close POP session by calling POP3#finish or use the block form of #start.
-  # 
-  # === Shortened Code
-  # 
-  # The example above is very verbose. You can shorten the code by using
-  # some utility methods. First, the block form of Net::POP3.start can
-  # be used instead of POP3.new, POP3#start and POP3#finish.
-  # 
-  #     require 'net/pop'
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'YourAccount', 'YourPassword') do |pop|
-  #       if pop.mails.empty?
-  #         puts 'No mail.'
-  #       else
-  #         i = 0
-  #         pop.each_mail do |m|   # or "pop.mails.each ..."
-  #           File.open("inbox/#{i}", 'w') do |f|
-  #             f.write m.pop
-  #           end
-  #           m.delete
-  #           i += 1
-  #         end
-  #         puts "#{pop.mails.size} mails popped."
-  #       end
-  #     end
-  # 
-  # POP3#delete_all is an alternative for #each_mail and #delete.
-  # 
-  #     require 'net/pop'
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'YourAccount', 'YourPassword') do |pop|
-  #       if pop.mails.empty?
-  #         puts 'No mail.'
-  #       else
-  #         i = 1
-  #         pop.delete_all do |m|
-  #           File.open("inbox/#{i}", 'w') do |f|
-  #             f.write m.pop
-  #           end
-  #           i += 1
-  #         end
-  #       end
-  #     end
-  # 
-  # And here is an even shorter example.
-  # 
-  #     require 'net/pop'
-  # 
-  #     i = 0
-  #     Net::POP3.delete_all('pop.example.com', 110,
-  #                          'YourAccount', 'YourPassword') do |m|
-  #       File.open("inbox/#{i}", 'w') do |f|
-  #         f.write m.pop
-  #       end
-  #       i += 1
-  #     end
-  # 
-  # === Memory Space Issues
-  # 
-  # All the examples above get each message as one big string.
-  # This example avoids this.
-  # 
-  #     require 'net/pop'
-  # 
-  #     i = 1
-  #     Net::POP3.delete_all('pop.example.com', 110,
-  #                          'YourAccount', 'YourPassword') do |m|
-  #       File.open("inbox/#{i}", 'w') do |f|
-  #         m.pop do |chunk|    # get a message little by little.
-  #           f.write chunk
-  #         end
-  #         i += 1
-  #       end
-  #     end
-  # 
-  # === Using APOP
-  # 
-  # The net/pop library supports APOP authentication.
-  # To use APOP, use the Net::APOP class instead of the Net::POP3 class.
-  # You can use the utility method, Net::POP3.APOP(). For example:
-  # 
-  #     require 'net/pop'
-  # 
-  #     # Use APOP authentication if $isapop == true
-  #     pop = Net::POP3.APOP($is_apop).new('apop.example.com', 110)
-  #     pop.start(YourAccount', 'YourPassword') do |pop|
-  #       # Rest of the code is the same.
-  #     end
-  # 
-  # === Fetch Only Selected Mail Using 'UIDL' POP Command
-  # 
-  # If your POP server provides UIDL functionality,
-  # you can grab only selected mails from the POP server.
-  # e.g.
-  # 
-  #     def need_pop?( id )
-  #       # determine if we need pop this mail...
-  #     end
-  # 
-  #     Net::POP3.start('pop.example.com', 110,
-  #                     'Your account', 'Your password') do |pop|
-  #       pop.mails.select { |m| need_pop?(m.unique_id) }.each do |m|
-  #         do_something(m.pop)
-  #       end
-  #     end
-  # 
-  # The POPMail#unique_id() method returns the unique-id of the message as a
-  # String. Normally the unique-id is a hash of the message.
-  # 
-  class POP3 < Protocol
-
-    Revision = %q$Revision: 17230 $.split[1]
-
-    #
-    # Class Parameters
-    #
-
-    # The default port for POP3 connections, port 110
-    def POP3.default_port
-      110
-    end
-
-    def POP3.socket_type   #:nodoc: obsolete
-      Net::InternetMessageIO
-    end
-
-    #
-    # Utilities
-    #
-
-    # Returns the APOP class if +isapop+ is true; otherwise, returns
-    # the POP class.  For example:
-    #
-    #     # Example 1
-    #     pop = Net::POP3::APOP($is_apop).new(addr, port)
-    #
-    #     # Example 2
-    #     Net::POP3::APOP($is_apop).start(addr, port) do |pop|
-    #       ....
-    #     end
-    #
-    def POP3.APOP( isapop )
-      isapop ? APOP : POP3
-    end
-
-    # Starts a POP3 session and iterates over each POPMail object,
-    # yielding it to the +block+.
-    # This method is equivalent to:
-    #
-    #     Net::POP3.start(address, port, account, password) do |pop|
-    #       pop.each_mail do |m|
-    #         yield m
-    #       end
-    #     end
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    #
-    # === Example
-    #
-    #     Net::POP3.foreach('pop.example.com', 110,
-    #                       'YourAccount', 'YourPassword') do |m|
-    #       file.write m.pop
-    #       m.delete if $DELETE
-    #     end
-    #
-    def POP3.foreach( address, port = nil,
-                      account = nil, password = nil,
-                      isapop = false, &block )  # :yields: message
-      start(address, port, account, password, isapop) {|pop|
-        pop.each_mail(&block)
-      }
-    end
-
-    # Starts a POP3 session and deletes all messages on the server.
-    # If a block is given, each POPMail object is yielded to it before
-    # being deleted.
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    #
-    # === Example
-    #
-    #     Net::POP3.delete_all('pop.example.com', 110,
-    #                          'YourAccount', 'YourPassword') do |m|
-    #       file.write m.pop
-    #     end
-    #
-    def POP3.delete_all( address, port = nil,
-                         account = nil, password = nil,
-                         isapop = false, &block )
-      start(address, port, account, password, isapop) {|pop|
-        pop.delete_all(&block)
-      }
-    end
-
-    # Opens a POP3 session, attempts authentication, and quits.
-    #
-    # This method raises POPAuthenticationError if authentication fails.
-    #
-    # === Example: normal POP3
-    #
-    #     Net::POP3.auth_only('pop.example.com', 110,
-    #                         'YourAccount', 'YourPassword')
-    #
-    # === Example: APOP
-    #
-    #     Net::POP3.auth_only('pop.example.com', 110,
-    #                         'YourAccount', 'YourPassword', true)
-    #
-    def POP3.auth_only( address, port = nil,
-                        account = nil, password = nil,
-                        isapop = false )
-      new(address, port, isapop).auth_only account, password
-    end
-
-    # Starts a pop3 session, attempts authentication, and quits.
-    # This method must not be called while POP3 session is opened.
-    # This method raises POPAuthenticationError if authentication fails.
-    def auth_only( account, password )
-      raise IOError, 'opening previously opened POP session' if started?
-      start(account, password) {
-        ;
-      }
-    end
-
-    #
-    # Session management
-    #
-
-    # Creates a new POP3 object and open the connection.  Equivalent to 
-    #
-    #   Net::POP3.new(address, port, isapop).start(account, password)
-    #
-    # If +block+ is provided, yields the newly-opened POP3 object to it,
-    # and automatically closes it at the end of the session.
-    #
-    # === Example
-    #
-    #    Net::POP3.start(addr, port, account, password) do |pop|
-    #      pop.each_mail do |m|
-    #        file.write m.pop
-    #        m.delete
-    #      end
-    #    end
-    #
-    def POP3.start( address, port = nil,
-                    account = nil, password = nil,
-                    isapop = false, &block ) # :yield: pop
-      new(address, port, isapop).start(account, password, &block)
-    end
-
-    # Creates a new POP3 object.
-    #
-    # +address+ is the hostname or ip address of your POP3 server.
-    #
-    # The optional +port+ is the port to connect to; it defaults to 110.
-    #
-    # The optional +isapop+ specifies whether this connection is going
-    # to use APOP authentication; it defaults to +false+.
-    #
-    # This method does *not* open the TCP connection.
-    def initialize( addr, port = nil, isapop = false )
-      @address = addr
-      @port = port || self.class.default_port
-      @apop = isapop
-
-      @command = nil
-      @socket = nil
-      @started = false
-      @open_timeout = 30
-      @read_timeout = 60
-      @debug_output = nil
-
-      @mails = nil
-      @n_mails = nil
-      @n_bytes = nil
-    end
-
-    # Does this instance use APOP authentication?
-    def apop?
-      @apop
-    end
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} open=#{@started}>"
-    end
-
-    # *WARNING*: This method causes a serious security hole.
-    # Use this method only for debugging.
-    #
-    # Set an output stream for debugging.
-    #
-    # === Example
-    #
-    #   pop = Net::POP.new(addr, port)
-    #   pop.set_debug_output $stderr
-    #   pop.start(account, passwd) do |pop|
-    #     ....
-    #   end
-    #
-    def set_debug_output( arg )
-      @debug_output = arg
-    end
-
-    # The address to connect to.
-    attr_reader :address
-
-    # The port number to connect to.
-    attr_reader :port
-
-    # Seconds to wait until a connection is opened.
-    # If the POP3 object cannot open a connection within this time,
-    # it raises a TimeoutError exception.
-    attr_accessor :open_timeout
-
-    # Seconds to wait until reading one block (by one read(1) call).
-    # If the POP3 object cannot complete a read() within this time,
-    # it raises a TimeoutError exception.
-    attr_reader :read_timeout
-
-    # Set the read timeout.
-    def read_timeout=( sec )
-      @command.socket.read_timeout = sec if @command
-      @read_timeout = sec
-    end
-
-    # +true+ if the POP3 session has started.
-    def started?
-      @started
-    end
-
-    alias active? started?   #:nodoc: obsolete
-
-    # Starts a POP3 session.
-    #
-    # When called with block, gives a POP3 object to the block and
-    # closes the session after block call finishes.
-    #
-    # This method raises a POPAuthenticationError if authentication fails.
-    def start( account, password ) # :yield: pop
-      raise IOError, 'POP session already started' if @started
-
-      if block_given?
-        begin
-          do_start account, password
-          return yield(self)
-        ensure
-          do_finish
-        end
-      else
-        do_start account, password
-        return self
-      end
-    end
-
-    def do_start( account, password )
-      @socket = self.class.socket_type.old_open(@address, @port,
-                                   @open_timeout, @read_timeout, @debug_output)
-      on_connect
-      @command = POP3Command.new(@socket)
-      if apop?
-        @command.apop account, password
-      else
-        @command.auth account, password
-      end
-      @started = true
-    ensure
-      do_finish if not @started
-    end
-    private :do_start
-
-    def on_connect
-    end
-    private :on_connect
-
-    # Finishes a POP3 session and closes TCP connection.
-    def finish
-      raise IOError, 'POP session not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      @mails = nil
-      @n_mails = nil
-      @n_bytes = nil
-      @command.quit if @command
-    ensure
-      @started = false
-      @command = nil
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    def command
-      raise IOError, 'POP session not opened yet' \
-                                      if not @socket or @socket.closed?
-      @command
-    end
-    private :command
-
-    #
-    # POP protocol wrapper
-    #
-
-    # Returns the number of messages on the POP server.
-    def n_mails
-      return @n_mails if @n_mails
-      @n_mails, @n_bytes = command().stat
-      @n_mails
-    end
-
-    # Returns the total size in bytes of all the messages on the POP server.
-    def n_bytes
-      return @n_bytes if @n_bytes
-      @n_mails, @n_bytes = command().stat
-      @n_bytes
-    end
-
-    # Returns an array of Net::POPMail objects, representing all the
-    # messages on the server.  This array is renewed when the session
-    # restarts; otherwise, it is fetched from the server the first time
-    # this method is called (directly or indirectly) and cached.
-    #
-    # This method raises a POPError if an error occurs.
-    def mails
-      return @mails.dup if @mails
-      if n_mails() == 0
-        # some popd raises error for LIST on the empty mailbox.
-        @mails = []
-        return []
-      end
-
-      @mails = command().list.map {|num, size|
-        POPMail.new(num, size, self, command())
-      }
-      @mails.dup
-    end
-
-    # Yields each message to the passed-in block in turn.
-    # Equivalent to:
-    # 
-    #   pop3.mails.each do |popmail|
-    #     ....
-    #   end
-    #
-    # This method raises a POPError if an error occurs.
-    def each_mail( &block )  # :yield: message
-      mails().each(&block)
-    end
-
-    alias each each_mail
-
-    # Deletes all messages on the server.
-    #
-    # If called with a block, yields each message in turn before deleting it.
-    #
-    # === Example
-    #
-    #     n = 1
-    #     pop.delete_all do |m|
-    #       File.open("inbox/#{n}") do |f|
-    #         f.write m.pop
-    #       end
-    #       n += 1
-    #     end
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    def delete_all # :yield: message
-      mails().each do |m|
-        yield m if block_given?
-        m.delete unless m.deleted?
-      end
-    end
-
-    # Resets the session.  This clears all "deleted" marks from messages.
-    #
-    # This method raises a POPError if an error occurs.
-    def reset
-      command().rset
-      mails().each do |m|
-        m.instance_eval {
-          @deleted = false
-        }
-      end
-    end
-
-    def set_all_uids   #:nodoc: internal use only (called from POPMail#uidl)
-      command().uidl.each do |num, uid|
-        @mails.find {|m| m.number == num }.uid = uid
-      end
-    end
-
-  end   # class POP3
-
-  # class aliases
-  POP = POP3
-  POPSession  = POP3
-  POP3Session = POP3
-
-  #
-  # This class is equivalent to POP3, except that it uses APOP authentication.
-  #
-  class APOP < POP3
-    # Always returns true.
-    def apop?
-      true
-    end
-  end
-
-  # class aliases
-  APOPSession = APOP
-
-  #
-  # This class represents a message which exists on the POP server.
-  # Instances of this class are created by the POP3 class; they should
-  # not be directly created by the user.
-  #
-  class POPMail
-
-    def initialize( num, len, pop, cmd )   #:nodoc:
-      @number = num
-      @length = len
-      @pop = pop
-      @command = cmd
-      @deleted = false
-      @uid = nil
-    end
-
-    # The sequence number of the message on the server.
-    attr_reader :number
-
-    # The length of the message in octets.
-    attr_reader :length
-    alias size length
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
-    end
-
-    #
-    # This method fetches the message.  If called with a block, the
-    # message is yielded to the block one chunk at a time.  If called
-    # without a block, the message is returned as a String.  The optional 
-    # +dest+ argument will be prepended to the returned String; this
-    # argument is essentially obsolete.
-    #
-    # === Example without block
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           f.write popmail.pop              
-    #         end
-    #         popmail.delete
-    #         n += 1
-    #       end
-    #     end
-    #
-    # === Example with block
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           popmail.pop do |chunk|            ####
-    #             f.write chunk
-    #           end
-    #         end
-    #         n += 1
-    #       end
-    #     end
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    def pop( dest = '', &block ) # :yield: message_chunk
-      if block_given?
-        @command.retr(@number, &block)
-        nil
-      else
-        @command.retr(@number) do |chunk|
-          dest << chunk
-        end
-        dest
-      end
-    end
-
-    alias all pop    #:nodoc: obsolete
-    alias mail pop   #:nodoc: obsolete
-
-    # Fetches the message header and +lines+ lines of body. 
-    #
-    # The optional +dest+ argument is obsolete.
-    #
-    # This method raises a POPError if an error occurs.
-    def top( lines, dest = '' )
-      @command.top(@number, lines) do |chunk|
-        dest << chunk
-      end
-      dest
-    end
-
-    # Fetches the message header.     
-    #
-    # The optional +dest+ argument is obsolete.
-    #
-    # This method raises a POPError if an error occurs.
-    def header( dest = '' )
-      top(0, dest)
-    end
-
-    # Marks a message for deletion on the server.  Deletion does not
-    # actually occur until the end of the session; deletion may be
-    # cancelled for _all_ marked messages by calling POP3#reset().
-    #
-    # This method raises a POPError if an error occurs.
-    #
-    # === Example
-    #
-    #     POP3.start('pop.example.com', 110,
-    #                'YourAccount, 'YourPassword') do |pop|
-    #       n = 1
-    #       pop.mails.each do |popmail|
-    #         File.open("inbox/#{n}", 'w') do |f|
-    #           f.write popmail.pop
-    #         end
-    #         popmail.delete         ####
-    #         n += 1
-    #       end
-    #     end
-    #
-    def delete
-      @command.dele @number
-      @deleted = true
-    end
-
-    alias delete! delete    #:nodoc: obsolete
-
-    # True if the mail has been deleted.
-    def deleted?
-      @deleted
-    end
-
-    # Returns the unique-id of the message.
-    # Normally the unique-id is a hash string of the message.
-    #
-    # This method raises a POPError if an error occurs.
-    def unique_id
-      return @uid if @uid
-      @pop.set_all_uids
-      @uid
-    end
-
-    alias uidl unique_id
-
-    def uid=( uid )   #:nodoc: internal use only (used from POP3#set_all_uids)
-      @uid = uid
-    end
-
-  end   # class POPMail
-
-
-  class POP3Command   #:nodoc: internal use only
-
-    def initialize( sock )
-      @socket = sock
-      @error_occured = false
-      res = check_response(critical { recv_response() })
-      @apop_stamp = res.slice(/<.+>/)
-    end
-
-    def inspect
-      "#<#{self.class} socket=#{@socket}>"
-    end
-
-    def auth( account, password )
-      check_response_auth(critical {
-        check_response_auth(get_response('USER %s', account))
-        get_response('PASS %s', password)
-      })
-    end
-
-    def apop( account, password )
-      raise POPAuthenticationError, 'not APOP server; cannot login' \
-                                                      unless @apop_stamp
-      check_response_auth(critical {
-        get_response('APOP %s %s',
-                     account,
-                     Digest::MD5.hexdigest(@apop_stamp + password))
-      })
-    end
-
-    def list
-      critical {
-        getok 'LIST'
-        list = []
-        @socket.each_list_item do |line|
-          m = /\A(\d+)[ \t]+(\d+)/.match(line) or
-                  raise POPBadResponse, "bad response: #{line}"
-          list.push  [m[1].to_i, m[2].to_i]
-        end
-        return list
-      }
-    end
-
-    def stat
-      res = check_response(critical { get_response('STAT') })
-      m = /\A\+OK\s+(\d+)\s+(\d+)/.match(res) or
-              raise POPBadResponse, "wrong response format: #{res}"
-      [m[1].to_i, m[2].to_i]
-    end
-
-    def rset
-      check_response(critical { get_response 'RSET' })
-    end
-
-    def top( num, lines = 0, &block )
-      critical {
-        getok('TOP %d %d', num, lines)
-        @socket.each_message_chunk(&block)
-      }
-    end
-
-    def retr( num, &block )
-      critical {
-        getok('RETR %d', num)
-        @socket.each_message_chunk(&block)
-      }
-    end
-    
-    def dele( num )
-      check_response(critical { get_response('DELE %d', num) })
-    end
-
-    def uidl( num = nil )
-      if num
-        res = check_response(critical { get_response('UIDL %d', num) })
-        return res.split(/ /)[1]
-      else
-        critical {
-          getok('UIDL')
-          table = {}
-          @socket.each_list_item do |line|
-            num, uid = line.split
-            table[num.to_i] = uid
-          end
-          return table
-        }
-      end
-    end
-
-    def quit
-      check_response(critical { get_response('QUIT') })
-    end
-
-    private
-
-    def getok( fmt, *fargs )
-      @socket.writeline sprintf(fmt, *fargs)
-      check_response(recv_response())
-    end
-
-    def get_response( fmt, *fargs )
-      @socket.writeline sprintf(fmt, *fargs)
-      recv_response()
-    end
-
-    def recv_response
-      @socket.readline
-    end
-
-    def check_response( res )
-      raise POPError, res unless /\A\+OK/i === res
-      res
-    end
-
-    def check_response_auth( res )
-      raise POPAuthenticationError, res unless /\A\+OK/i === res
-      res
-    end
-
-    def critical
-      return '+OK dummy ok response' if @error_occured
-      begin
-        return yield()
-      rescue Exception
-        @error_occured = true
-        raise
-      end
-    end
-
-  end   # class POP3Command
-
-end   # module Net
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/protocol.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/protocol.rb
deleted file mode 100644
index b898030..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/protocol.rb
+++ /dev/null
@@ -1,390 +0,0 @@
-#
-# = net/protocol.rb
-#
-#--
-# Copyright (c) 1999-2005 Yukihiro Matsumoto
-# Copyright (c) 1999-2005 Minero Aoki
-#
-# written and maintained by Minero Aoki <aamine at loveruby.net>
-#
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-#
-# $Id: protocol.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#++
-#
-# WARNING: This file is going to remove.
-# Do not rely on the implementation written in this file.
-#
-
-require 'socket'
-require 'timeout'
-
-module Net # :nodoc:
-
-  class Protocol   #:nodoc: internal use only
-    private
-    def Protocol.protocol_param(name, val)
-      module_eval(<<-End, __FILE__, __LINE__ + 1)
-        def #{name}
-          #{val}
-        end
-      End
-    end
-  end
-
-
-  class ProtocolError          < StandardError; end
-  class ProtoSyntaxError       < ProtocolError; end
-  class ProtoFatalError        < ProtocolError; end
-  class ProtoUnknownError      < ProtocolError; end
-  class ProtoServerError       < ProtocolError; end
-  class ProtoAuthError         < ProtocolError; end
-  class ProtoCommandError      < ProtocolError; end
-  class ProtoRetriableError    < ProtocolError; end
-  ProtocRetryError = ProtoRetriableError
-
-
-  class BufferedIO   #:nodoc: internal use only
-    def initialize(io)
-      @io = io
-      @read_timeout = 60
-      @debug_output = nil
-      @rbuf = ''
-    end
-
-    attr_reader :io
-    attr_accessor :read_timeout
-    attr_accessor :debug_output
-
-    def inspect
-      "#<#{self.class} io=#{@io}>"
-    end
-
-    def closed?
-      @io.closed?
-    end
-
-    def close
-      @io.close
-    end
-
-    #
-    # Read
-    #
-
-    public
-
-    def read(len, dest = '', ignore_eof = false)
-      LOG "reading #{len} bytes..."
-      read_bytes = 0
-      begin
-        while read_bytes + @rbuf.size < len
-          dest << (s = rbuf_consume(@rbuf.size))
-          read_bytes += s.size
-          rbuf_fill
-        end
-        dest << (s = rbuf_consume(len - read_bytes))
-        read_bytes += s.size
-      rescue EOFError
-        raise unless ignore_eof
-      end
-      LOG "read #{read_bytes} bytes"
-      dest
-    end
-
-    def read_all(dest = '')
-      LOG 'reading all...'
-      read_bytes = 0
-      begin
-        while true
-          dest << (s = rbuf_consume(@rbuf.size))
-          read_bytes += s.size
-          rbuf_fill
-        end
-      rescue EOFError
-        ;
-      end
-      LOG "read #{read_bytes} bytes"
-      dest
-    end
-
-    def readuntil(terminator, ignore_eof = false)
-      begin
-        until idx = @rbuf.index(terminator)
-          rbuf_fill
-        end
-        return rbuf_consume(idx + terminator.size)
-      rescue EOFError
-        raise unless ignore_eof
-        return rbuf_consume(@rbuf.size)
-      end
-    end
-        
-    def readline
-      readuntil("\n").chop
-    end
-
-    private
-
-    def rbuf_fill
-      timeout(@read_timeout) {
-        @rbuf << @io.sysread(1024)
-      }
-    end
-
-    def rbuf_consume(len)
-      s = @rbuf.slice!(0, len)
-      @debug_output << %Q[-> #{s.dump}\n] if @debug_output
-      s
-    end
-
-    #
-    # Write
-    #
-
-    public
-
-    def write(str)
-      writing {
-        write0 str
-      }
-    end
-
-    def writeline(str)
-      writing {
-        write0 str + "\r\n"
-      }
-    end
-
-    private
-
-    def writing
-      @written_bytes = 0
-      @debug_output << '<- ' if @debug_output
-      yield
-      @debug_output << "\n" if @debug_output
-      bytes = @written_bytes
-      @written_bytes = nil
-      bytes
-    end
-
-    def write0(str)
-      @debug_output << str.dump if @debug_output
-      len = @io.write(str)
-      @written_bytes += len
-      len
-    end
-
-    #
-    # Logging
-    #
-
-    private
-
-    def LOG_off
-      @save_debug_out = @debug_output
-      @debug_output = nil
-    end
-
-    def LOG_on
-      @debug_output = @save_debug_out
-    end
-
-    def LOG(msg)
-      return unless @debug_output
-      @debug_output << msg + "\n"
-    end
-  end
-
-
-  class InternetMessageIO < BufferedIO   #:nodoc: internal use only
-    def InternetMessageIO.old_open(addr, port,
-        open_timeout = nil, read_timeout = nil, debug_output = nil)
-      debug_output << "opening connection to #{addr}...\n" if debug_output
-      s = timeout(open_timeout) { TCPsocket.new(addr, port) }
-      io = new(s)
-      io.read_timeout = read_timeout
-      io.debug_output = debug_output
-      io
-    end
-
-    def initialize(io)
-      super
-      @wbuf = nil
-    end
-
-    #
-    # Read
-    #
-
-    def each_message_chunk
-      LOG 'reading message...'
-      LOG_off()
-      read_bytes = 0
-      while (line = readuntil("\r\n")) != ".\r\n"
-        read_bytes += line.size
-        yield line.sub(/\A\./, '')
-      end
-      LOG_on()
-      LOG "read message (#{read_bytes} bytes)"
-    end
-  
-    # *library private* (cannot handle 'break')
-    def each_list_item
-      while (str = readuntil("\r\n")) != ".\r\n"
-        yield str.chop
-      end
-    end
-
-    def write_message_0(src)
-      prev = @written_bytes
-      each_crlf_line(src) do |line|
-        write0 line.sub(/\A\./, '..')
-      end
-      @written_bytes - prev
-    end
-
-    #
-    # Write
-    #
-
-    def write_message(src)
-      LOG "writing message from #{src.class}"
-      LOG_off()
-      len = writing {
-        using_each_crlf_line {
-          write_message_0 src
-        }
-      }
-      LOG_on()
-      LOG "wrote #{len} bytes"
-      len
-    end
-
-    def write_message_by_block(&block)
-      LOG 'writing message from block'
-      LOG_off()
-      len = writing {
-        using_each_crlf_line {
-          begin
-            block.call(WriteAdapter.new(self, :write_message_0))
-          rescue LocalJumpError
-            # allow `break' from writer block
-          end
-        }
-      }
-      LOG_on()
-      LOG "wrote #{len} bytes"
-      len
-    end
-
-    private
-
-    def using_each_crlf_line
-      @wbuf = ''
-      yield
-      if not @wbuf.empty?   # unterminated last line
-        write0 @wbuf.chomp + "\r\n"
-      elsif @written_bytes == 0   # empty src
-        write0 "\r\n"
-      end
-      write0 ".\r\n"
-      @wbuf = nil
-    end
-
-    def each_crlf_line(src)
-      buffer_filling(@wbuf, src) do
-        while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
-          yield line.chomp("\n") + "\r\n"
-        end
-      end
-    end
-
-    def buffer_filling(buf, src)
-      case src
-      when String    # for speeding up.
-        0.step(src.size - 1, 1024) do |i|
-          buf << src[i, 1024]
-          yield
-        end
-      when File    # for speeding up.
-        while s = src.read(1024)
-          buf << s
-          yield
-        end
-      else    # generic reader
-        src.each do |s|
-          buf << s
-          yield if buf.size > 1024
-        end
-        yield unless buf.empty?
-      end
-    end
-  end
-
-
-  #
-  # The writer adapter class
-  #
-  class WriteAdapter
-    def initialize(socket, method)
-      @socket = socket
-      @method_id = method
-    end
-
-    def inspect
-      "#<#{self.class} socket=#{@socket.inspect}>"
-    end
-
-    def write(str)
-      @socket.__send__(@method_id, str)
-    end
-
-    alias print write
-
-    def <<(str)
-      write str
-      self
-    end
-
-    def puts(str = '')
-      write str.chomp("\n") + "\n"
-    end
-
-    def printf(*args)
-      write sprintf(*args)
-    end
-  end
-
-
-  class ReadAdapter   #:nodoc: internal use only
-    def initialize(block)
-      @block = block
-    end
-
-    def inspect
-      "#<#{self.class}>"
-    end
-
-    def <<(str)
-      call_block(str, &@block) if @block
-    end
-
-    private
-
-    # This method is needed because @block must be called by yield,
-    # not Proc#call.  You can see difference when using `break' in
-    # the block.
-    def call_block(str)
-      yield str
-    end
-  end
-
-
-  module NetPrivate   #:nodoc: obsolete
-    Socket = ::Net::InternetMessageIO
-  end
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/smtp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/smtp.rb
deleted file mode 100644
index b667af3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/smtp.rb
+++ /dev/null
@@ -1,696 +0,0 @@
-# = net/smtp.rb
-# 
-# Copyright (c) 1999-2003 Yukihiro Matsumoto.
-#
-# Copyright (c) 1999-2003 Minero Aoki.
-# 
-# Written & maintained by Minero Aoki <aamine at loveruby.net>.
-#
-# Documented by William Webber and Minero Aoki.
-# 
-# This program is free software. You can re-distribute and/or
-# modify this program under the same terms as Ruby itself,
-# Ruby Distribute License or GNU General Public License.
-# 
-# NOTE: You can find Japanese version of this document in
-# the doc/net directory of the standard ruby interpreter package.
-# 
-# $Id: smtp.rb 18116 2008-07-17 12:40:40Z shyouhei $
-#
-# See Net::SMTP for documentation. 
-# 
-
-require 'net/protocol'
-require 'digest/md5'
-
-module Net
-
-  # Module mixed in to all SMTP error classes
-  module SMTPError
-    # This *class* is module for some reason.
-    # In ruby 1.9.x, this module becomes a class.
-  end
-
-  # Represents an SMTP authentication error.
-  class SMTPAuthenticationError < ProtoAuthError
-    include SMTPError
-  end
-
-  # Represents SMTP error code 420 or 450, a temporary error.
-  class SMTPServerBusy < ProtoServerError
-    include SMTPError
-  end
-
-  # Represents an SMTP command syntax error (error code 500)
-  class SMTPSyntaxError < ProtoSyntaxError
-    include SMTPError
-  end
-
-  # Represents a fatal SMTP error (error code 5xx, except for 500)
-  class SMTPFatalError < ProtoFatalError
-    include SMTPError
-  end
-
-  # Unexpected reply code returned from server.
-  class SMTPUnknownError < ProtoUnknownError
-    include SMTPError
-  end
-
-  #
-  # = Net::SMTP
-  #
-  # == What is This Library?
-  # 
-  # This library provides functionality to send internet
-  # mail via SMTP, the Simple Mail Transfer Protocol. For details of
-  # SMTP itself, see [RFC2821] (http://www.ietf.org/rfc/rfc2821.txt).
-  # 
-  # == What is This Library NOT?
-  # 
-  # This library does NOT provide functions to compose internet mails.
-  # You must create them by yourself. If you want better mail support,
-  # try RubyMail or TMail. You can get both libraries from RAA.
-  # (http://www.ruby-lang.org/en/raa.html)
-  # 
-  # FYI: the official documentation on internet mail is: [RFC2822] (http://www.ietf.org/rfc/rfc2822.txt).
-  # 
-  # == Examples
-  # 
-  # === Sending Messages
-  # 
-  # You must open a connection to an SMTP server before sending messages.
-  # The first argument is the address of your SMTP server, and the second 
-  # argument is the port number. Using SMTP.start with a block is the simplest 
-  # way to do this. This way, the SMTP connection is closed automatically 
-  # after the block is executed.
-  # 
-  #     require 'net/smtp'
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       # Use the SMTP object smtp only in this block.
-  #     end
-  # 
-  # Replace 'your.smtp.server' with your SMTP server. Normally
-  # your system manager or internet provider supplies a server
-  # for you.
-  # 
-  # Then you can send messages.
-  # 
-  #     msgstr = <<END_OF_MESSAGE
-  #     From: Your Name <your at mail.address>
-  #     To: Destination Address <someone at example.com>
-  #     Subject: test message
-  #     Date: Sat, 23 Jun 2001 16:26:43 +0900
-  #     Message-Id: <unique.message.id.string at example.com>
-  # 
-  #     This is a test message.
-  #     END_OF_MESSAGE
-  # 
-  #     require 'net/smtp'
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       smtp.send_message msgstr,
-  #                         'your at mail.address',
-  #                         'his_addess at example.com'
-  #     end
-  # 
-  # === Closing the Session
-  # 
-  # You MUST close the SMTP session after sending messages, by calling 
-  # the #finish method:
-  # 
-  #     # using SMTP#finish
-  #     smtp = Net::SMTP.start('your.smtp.server', 25)
-  #     smtp.send_message msgstr, 'from at address', 'to at address'
-  #     smtp.finish
-  # 
-  # You can also use the block form of SMTP.start/SMTP#start.  This closes
-  # the SMTP session automatically:
-  # 
-  #     # using block form of SMTP.start
-  #     Net::SMTP.start('your.smtp.server', 25) do |smtp|
-  #       smtp.send_message msgstr, 'from at address', 'to at address'
-  #     end
-  # 
-  # I strongly recommend this scheme.  This form is simpler and more robust.
-  # 
-  # === HELO domain
-  # 
-  # In almost all situations, you must provide a third argument
-  # to SMTP.start/SMTP#start. This is the domain name which you are on
-  # (the host to send mail from). It is called the "HELO domain".
-  # The SMTP server will judge whether it should send or reject
-  # the SMTP session by inspecting the HELO domain.
-  # 
-  #     Net::SMTP.start('your.smtp.server', 25,
-  #                     'mail.from.domain') { |smtp| ... }
-  # 
-  # === SMTP Authentication
-  # 
-  # The Net::SMTP class supports three authentication schemes;
-  # PLAIN, LOGIN and CRAM MD5.  (SMTP Authentication: [RFC2554])
-  # To use SMTP authentication, pass extra arguments to 
-  # SMTP.start/SMTP#start.
-  # 
-  #     # PLAIN
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :plain)
-  #     # LOGIN
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :login)
-  # 
-  #     # CRAM MD5
-  #     Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
-  #                     'Your Account', 'Your Password', :cram_md5)
-  #
-  class SMTP
-
-    Revision = %q$Revision: 18116 $.split[1]
-
-    # The default SMTP port, port 25.
-    def SMTP.default_port
-      25
-    end
-
-    #
-    # Creates a new Net::SMTP object.
-    #
-    # +address+ is the hostname or ip address of your SMTP
-    # server.  +port+ is the port to connect to; it defaults to
-    # port 25.
-    #
-    # This method does not open the TCP connection.  You can use
-    # SMTP.start instead of SMTP.new if you want to do everything
-    # at once.  Otherwise, follow SMTP.new with SMTP#start.
-    #
-    def initialize( address, port = nil )
-      @address = address
-      @port = (port || SMTP.default_port)
-      @esmtp = true
-      @socket = nil
-      @started = false
-      @open_timeout = 30
-      @read_timeout = 60
-      @error_occured = false
-      @debug_output = nil
-    end
-
-    # Provide human-readable stringification of class state.
-    def inspect
-      "#<#{self.class} #{@address}:#{@port} started=#{@started}>"
-    end
-
-    # +true+ if the SMTP object uses ESMTP (which it does by default).
-    def esmtp?
-      @esmtp
-    end
-
-    #
-    # Set whether to use ESMTP or not.  This should be done before 
-    # calling #start.  Note that if #start is called in ESMTP mode,
-    # and the connection fails due to a ProtocolError, the SMTP
-    # object will automatically switch to plain SMTP mode and
-    # retry (but not vice versa).
-    #
-    def esmtp=( bool )
-      @esmtp = bool
-    end
-
-    alias esmtp esmtp?
-
-    # The address of the SMTP server to connect to.
-    attr_reader :address
-
-    # The port number of the SMTP server to connect to.
-    attr_reader :port
-
-    # Seconds to wait while attempting to open a connection.
-    # If the connection cannot be opened within this time, a
-    # TimeoutError is raised.
-    attr_accessor :open_timeout
-
-    # Seconds to wait while reading one block (by one read(2) call).
-    # If the read(2) call does not complete within this time, a
-    # TimeoutError is raised.
-    attr_reader :read_timeout
-
-    # Set the number of seconds to wait until timing-out a read(2)
-    # call.
-    def read_timeout=( sec )
-      @socket.read_timeout = sec if @socket
-      @read_timeout = sec
-    end
-
-    #
-    # WARNING: This method causes serious security holes.
-    # Use this method for only debugging.
-    #
-    # Set an output stream for debug logging.
-    # You must call this before #start.
-    #
-    #   # example
-    #   smtp = Net::SMTP.new(addr, port)
-    #   smtp.set_debug_output $stderr
-    #   smtp.start do |smtp|
-    #     ....
-    #   end
-    #
-    def set_debug_output( arg )
-      @debug_output = arg
-    end
-
-    #
-    # SMTP session control
-    #
-
-    #
-    # Creates a new Net::SMTP object and connects to the server.
-    #
-    # This method is equivalent to:
-    # 
-    #   Net::SMTP.new(address, port).start(helo_domain, account, password, authtype)
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('your.smtp.server') do |smtp|
-    #       smtp.send_message msgstr, 'from at example.com', ['dest at example.com']
-    #     end
-    #
-    # === Block Usage
-    #
-    # If called with a block, the newly-opened Net::SMTP object is yielded
-    # to the block, and automatically closed when the block finishes.  If called
-    # without a block, the newly-opened Net::SMTP object is returned to
-    # the caller, and it is the caller's responsibility to close it when
-    # finished.
-    #
-    # === Parameters
-    #
-    # +address+ is the hostname or ip address of your smtp server.
-    #
-    # +port+ is the port to connect to; it defaults to port 25.
-    #
-    # +helo+ is the _HELO_ _domain_ provided by the client to the
-    # server (see overview comments); it defaults to 'localhost.localdomain'. 
-    #
-    # The remaining arguments are used for SMTP authentication, if required
-    # or desired.  +user+ is the account name; +secret+ is your password
-    # or other authentication token; and +authtype+ is the authentication
-    # type, one of :plain, :login, or :cram_md5.  See the discussion of
-    # SMTP Authentication in the overview notes.
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPAuthenticationError
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def SMTP.start(address, port = nil, helo = 'localhost.localdomain',
-                   user = nil, secret = nil, authtype = nil,
-                   &block)   # :yield: smtp
-      new(address, port).start(helo, user, secret, authtype, &block)
-    end
-
-    # +true+ if the SMTP session has been started.
-    def started?
-      @started
-    end
-
-    #
-    # Opens a TCP connection and starts the SMTP session.
-    #
-    # === Parameters
-    #
-    # +helo+ is the _HELO_ _domain_ that you'll dispatch mails from; see
-    # the discussion in the overview notes.
-    #
-    # If both of +user+ and +secret+ are given, SMTP authentication 
-    # will be attempted using the AUTH command.  +authtype+ specifies 
-    # the type of authentication to attempt; it must be one of
-    # :login, :plain, and :cram_md5.  See the notes on SMTP Authentication
-    # in the overview. 
-    #
-    # === Block Usage
-    #
-    # When this methods is called with a block, the newly-started SMTP
-    # object is yielded to the block, and automatically closed after
-    # the block call finishes.  Otherwise, it is the caller's 
-    # responsibility to close the session when finished.
-    #
-    # === Example
-    #
-    # This is very similar to the class method SMTP.start.
-    #
-    #     require 'net/smtp' 
-    #     smtp = Net::SMTP.new('smtp.mail.server', 25)
-    #     smtp.start(helo_domain, account, password, authtype) do |smtp|
-    #       smtp.send_message msgstr, 'from at example.com', ['dest at example.com']
-    #     end 
-    #
-    # The primary use of this method (as opposed to SMTP.start)
-    # is probably to set debugging (#set_debug_output) or ESMTP
-    # (#esmtp=), which must be done before the session is
-    # started.  
-    #
-    # === Errors
-    #
-    # If session has already been started, an IOError will be raised.
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPAuthenticationError
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def start(helo = 'localhost.localdomain',
-              user = nil, secret = nil, authtype = nil)   # :yield: smtp
-      if block_given?
-        begin
-          do_start(helo, user, secret, authtype)
-          return yield(self)
-        ensure
-          do_finish
-        end
-      else
-        do_start(helo, user, secret, authtype)
-        return self
-      end
-    end
-
-    def do_start( helodomain, user, secret, authtype )
-      raise IOError, 'SMTP session already started' if @started
-      check_auth_args user, secret, authtype if user or secret
-
-      @socket = InternetMessageIO.old_open(@address, @port,
-                                       @open_timeout, @read_timeout,
-                                       @debug_output)
-      check_response(critical { recv_response() })
-      begin
-        if @esmtp
-          ehlo helodomain
-        else
-          helo helodomain
-        end
-      rescue ProtocolError
-        if @esmtp
-          @esmtp = false
-          @error_occured = false
-          retry
-        end
-        raise
-      end
-      authenticate user, secret, authtype if user
-      @started = true
-    ensure
-      @socket.close if not @started and @socket and not @socket.closed?
-    end
-    private :do_start
-
-    # Finishes the SMTP session and closes TCP connection.
-    # Raises IOError if not started.
-    def finish
-      raise IOError, 'not yet started' unless started?
-      do_finish
-    end
-
-    def do_finish
-      quit if @socket and not @socket.closed? and not @error_occured
-    ensure
-      @started = false
-      @error_occured = false
-      @socket.close if @socket and not @socket.closed?
-      @socket = nil
-    end
-    private :do_finish
-
-    #
-    # message send
-    #
-
-    public
-
-    #
-    # Sends +msgstr+ as a message.  Single CR ("\r") and LF ("\n") found
-    # in the +msgstr+, are converted into the CR LF pair.  You cannot send a
-    # binary message with this method. +msgstr+ should include both 
-    # the message headers and body.
-    #
-    # +from_addr+ is a String representing the source mail address.
-    #
-    # +to_addr+ is a String or Strings or Array of Strings, representing
-    # the destination mail address or addresses.
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('smtp.example.com') do |smtp|
-    #       smtp.send_message msgstr,
-    #                         'from at example.com',
-    #                         ['dest at example.com', 'dest2 at example.com']
-    #     end
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def send_message( msgstr, from_addr, *to_addrs )
-      send0(from_addr, to_addrs.flatten) {
-        @socket.write_message msgstr
-      }
-    end
-
-    alias send_mail send_message
-    alias sendmail send_message   # obsolete
-
-    #
-    # Opens a message writer stream and gives it to the block.
-    # The stream is valid only in the block, and has these methods:
-    #
-    # puts(str = '')::       outputs STR and CR LF.
-    # print(str)::           outputs STR.
-    # printf(fmt, *args)::   outputs sprintf(fmt,*args).
-    # write(str)::           outputs STR and returns the length of written bytes.
-    # <<(str)::              outputs STR and returns self.
-    #
-    # If a single CR ("\r") or LF ("\n") is found in the message,
-    # it is converted to the CR LF pair.  You cannot send a binary
-    # message with this method.
-    #
-    # === Parameters
-    #
-    # +from_addr+ is a String representing the source mail address.
-    #
-    # +to_addr+ is a String or Strings or Array of Strings, representing
-    # the destination mail address or addresses.
-    #
-    # === Example
-    #
-    #     Net::SMTP.start('smtp.example.com', 25) do |smtp|
-    #       smtp.open_message_stream('from at example.com', ['dest at example.com']) do |f|
-    #         f.puts 'From: from at example.com'
-    #         f.puts 'To: dest at example.com'
-    #         f.puts 'Subject: test message'
-    #         f.puts
-    #         f.puts 'This is a test message.'
-    #       end
-    #     end
-    #
-    # === Errors
-    #
-    # This method may raise:
-    #
-    # * Net::SMTPServerBusy
-    # * Net::SMTPSyntaxError
-    # * Net::SMTPFatalError
-    # * Net::SMTPUnknownError
-    # * IOError
-    # * TimeoutError
-    #
-    def open_message_stream( from_addr, *to_addrs, &block ) # :yield: stream
-      send0(from_addr, to_addrs.flatten) {
-        @socket.write_message_by_block(&block)
-      }
-    end
-
-    alias ready open_message_stream   # obsolete
-
-    private
-
-    def send0( from_addr, to_addrs )
-      raise IOError, 'closed session' unless @socket
-      raise ArgumentError, 'mail destination not given' if to_addrs.empty?
-      if $SAFE > 0
-        raise SecurityError, 'tainted from_addr' if from_addr.tainted?
-        to_addrs.each do |to| 
-          raise SecurityError, 'tainted to_addr' if to.tainted?
-        end
-      end
-
-      mailfrom from_addr
-      to_addrs.each do |to|
-        rcptto to
-      end
-      res = critical {
-        check_response(get_response('DATA'), true)
-        yield
-        recv_response()
-      }
-      check_response(res)
-    end
-
-    #
-    # auth
-    #
-
-    private
-
-    def check_auth_args( user, secret, authtype )
-      raise ArgumentError, 'both user and secret are required'\
-                      unless user and secret
-      auth_method = "auth_#{authtype || 'cram_md5'}"
-      raise ArgumentError, "wrong auth type #{authtype}"\
-                      unless respond_to?(auth_method, true)
-    end
-
-    def authenticate( user, secret, authtype )
-      __send__("auth_#{authtype || 'cram_md5'}", user, secret)
-    end
-
-    def auth_plain( user, secret )
-      res = critical { get_response('AUTH PLAIN %s',
-                                    base64_encode("\0#{user}\0#{secret}")) }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def auth_login( user, secret )
-      res = critical {
-        check_response(get_response('AUTH LOGIN'), true)
-        check_response(get_response(base64_encode(user)), true)
-        get_response(base64_encode(secret))
-      }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def auth_cram_md5( user, secret )
-      # CRAM-MD5: [RFC2195]
-      res = nil
-      critical {
-        res = check_response(get_response('AUTH CRAM-MD5'), true)
-        challenge = res.split(/ /)[1].unpack('m')[0]
-        secret = Digest::MD5.digest(secret) if secret.size > 64
-
-        isecret = secret + "\0" * (64 - secret.size)
-        osecret = isecret.dup
-        0.upto(63) do |i|
-          isecret[i] ^= 0x36
-          osecret[i] ^= 0x5c
-        end
-        tmp = Digest::MD5.digest(isecret + challenge)
-        tmp = Digest::MD5.hexdigest(osecret + tmp)
-
-        res = get_response(base64_encode(user + ' ' + tmp))
-      }
-      raise SMTPAuthenticationError, res unless /\A2../ === res
-    end
-
-    def base64_encode( str )
-      # expects "str" may not become too long
-      [str].pack('m').gsub(/\s+/, '')
-    end
-
-    #
-    # SMTP command dispatcher
-    #
-
-    private
-
-    def helo( domain )
-      getok('HELO %s', domain)
-    end
-
-    def ehlo( domain )
-      getok('EHLO %s', domain)
-    end
-
-    def mailfrom( fromaddr )
-      getok('MAIL FROM:<%s>', fromaddr)
-    end
-
-    def rcptto( to )
-      getok('RCPT TO:<%s>', to)
-    end
-
-    def quit
-      getok('QUIT')
-    end
-
-    #
-    # row level library
-    #
-
-    private
-
-    def getok( fmt, *args )
-      res = critical {
-        @socket.writeline sprintf(fmt, *args)
-        recv_response()
-      }
-      return check_response(res)
-    end
-
-    def get_response( fmt, *args )
-      @socket.writeline sprintf(fmt, *args)
-      recv_response()
-    end
-
-    def recv_response
-      res = ''
-      while true
-        line = @socket.readline
-        res << line << "\n"
-        break unless line[3] == ?-   # "210-PIPELINING"
-      end
-      res
-    end
-
-    def check_response( res, allow_continue = false )
-      return res if /\A2/ === res
-      return res if allow_continue and /\A3/ === res
-      err = case res
-            when /\A4/  then SMTPServerBusy
-            when /\A50/ then SMTPSyntaxError
-            when /\A55/ then SMTPFatalError
-            else SMTPUnknownError
-            end
-      raise err, res
-    end
-
-    def critical( &block )
-      return '200 dummy reply code' if @error_occured
-      begin
-        return yield()
-      rescue Exception
-        @error_occured = true
-        raise
-      end
-    end
-
-  end   # class SMTP
-
-  SMTPSession = SMTP
-
-end   # module Net
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnet.rb
deleted file mode 100644
index 1fe464c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnet.rb
+++ /dev/null
@@ -1,749 +0,0 @@
-# = net/telnet.rb - Simple Telnet Client Library
-# 
-# Author:: Wakou Aoyama <wakou at ruby-lang.org>
-# Documentation:: William Webber and Wakou Aoyama 
-#
-# This file holds the class Net::Telnet, which provides client-side
-# telnet functionality.
-#
-# For documentation, see Net::Telnet.
-#
-
-require "socket"
-require "delegate"
-require "timeout"
-require "English"
- 
-module Net
-
-  #
-  # == Net::Telnet
-  #
-  # Provides telnet client functionality.
-  #
-  # This class also has, through delegation, all the methods of a
-  # socket object (by default, a +TCPSocket+, but can be set by the
-  # +Proxy+ option to <tt>new()</tt>).  This provides methods such as
-  # <tt>close()</tt> to end the session and <tt>sysread()</tt> to read
-  # data directly from the host, instead of via the <tt>waitfor()</tt>
-  # mechanism.  Note that if you do use <tt>sysread()</tt> directly
-  # when in telnet mode, you should probably pass the output through
-  # <tt>preprocess()</tt> to extract telnet command sequences.
-  #
-  # == Overview
-  #
-  # The telnet protocol allows a client to login remotely to a user
-  # account on a server and execute commands via a shell.  The equivalent
-  # is done by creating a Net::Telnet class with the +Host+ option
-  # set to your host, calling #login() with your user and password,
-  # issuing one or more #cmd() calls, and then calling #close()
-  # to end the session.  The #waitfor(), #print(), #puts(), and
-  # #write() methods, which #cmd() is implemented on top of, are
-  # only needed if you are doing something more complicated.
-  #
-  # A Net::Telnet object can also be used to connect to non-telnet
-  # services, such as SMTP or HTTP.  In this case, you normally
-  # want to provide the +Port+ option to specify the port to
-  # connect to, and set the +Telnetmode+ option to false to prevent
-  # the client from attempting to interpret telnet command sequences.
-  # Generally, #login() will not work with other protocols, and you
-  # have to handle authentication yourself.
-  #
-  # For some protocols, it will be possible to specify the +Prompt+
-  # option once when you create the Telnet object and use #cmd() calls; 
-  # for others, you will have to specify the response sequence to
-  # look for as the Match option to every #cmd() call, or call
-  # #puts() and #waitfor() directly; for yet others, you will have 
-  # to use #sysread() instead of #waitfor() and parse server 
-  # responses yourself.
-  #
-  # It is worth noting that when you create a new Net::Telnet object,
-  # you can supply a proxy IO channel via the Proxy option.  This
-  # can be used to attach the Telnet object to other Telnet objects,
-  # to already open sockets, or to any read-write IO object.  This
-  # can be useful, for instance, for setting up a test fixture for
-  # unit testing.
-  # 
-  # == Examples
-  # 
-  # === Log in and send a command, echoing all output to stdout
-  # 
-  #   localhost = Net::Telnet::new("Host" => "localhost",
-  #                                "Timeout" => 10,
-  #                                "Prompt" => /[$%#>] \z/n)
-  #   localhost.login("username", "password") { |c| print c }
-  #   localhost.cmd("command") { |c| print c }
-  #   localhost.close
-  # 
-  # 
-  # === Check a POP server to see if you have mail
-  # 
-  #   pop = Net::Telnet::new("Host" => "your_destination_host_here",
-  #                          "Port" => 110,
-  #                          "Telnetmode" => false,
-  #                          "Prompt" => /^\+OK/n)
-  #   pop.cmd("user " + "your_username_here") { |c| print c }
-  #   pop.cmd("pass " + "your_password_here") { |c| print c }
-  #   pop.cmd("list") { |c| print c }
-  #
-  # == References
-  #
-  # There are a large number of RFCs relevant to the Telnet protocol.
-  # RFCs 854-861 define the base protocol.  For a complete listing
-  # of relevant RFCs, see
-  # http://www.omnifarious.org/~hopper/technical/telnet-rfc.html
-  #
-  class Telnet < SimpleDelegator
-
-    # :stopdoc:
-    IAC   = 255.chr # "\377" # "\xff" # interpret as command
-    DONT  = 254.chr # "\376" # "\xfe" # you are not to use option 
-    DO    = 253.chr # "\375" # "\xfd" # please, you use option 
-    WONT  = 252.chr # "\374" # "\xfc" # I won't use option 
-    WILL  = 251.chr # "\373" # "\xfb" # I will use option 
-    SB    = 250.chr # "\372" # "\xfa" # interpret as subnegotiation 
-    GA    = 249.chr # "\371" # "\xf9" # you may reverse the line 
-    EL    = 248.chr # "\370" # "\xf8" # erase the current line 
-    EC    = 247.chr # "\367" # "\xf7" # erase the current character 
-    AYT   = 246.chr # "\366" # "\xf6" # are you there 
-    AO    = 245.chr # "\365" # "\xf5" # abort output--but let prog finish 
-    IP    = 244.chr # "\364" # "\xf4" # interrupt process--permanently 
-    BREAK = 243.chr # "\363" # "\xf3" # break 
-    DM    = 242.chr # "\362" # "\xf2" # data mark--for connect. cleaning 
-    NOP   = 241.chr # "\361" # "\xf1" # nop 
-    SE    = 240.chr # "\360" # "\xf0" # end sub negotiation 
-    EOR   = 239.chr # "\357" # "\xef" # end of record (transparent mode) 
-    ABORT = 238.chr # "\356" # "\xee" # Abort process 
-    SUSP  = 237.chr # "\355" # "\xed" # Suspend process 
-    EOF   = 236.chr # "\354" # "\xec" # End of file 
-    SYNCH = 242.chr # "\362" # "\xf2" # for telfunc calls 
-
-    OPT_BINARY         =   0.chr # "\000" # "\x00" # Binary Transmission 
-    OPT_ECHO           =   1.chr # "\001" # "\x01" # Echo 
-    OPT_RCP            =   2.chr # "\002" # "\x02" # Reconnection 
-    OPT_SGA            =   3.chr # "\003" # "\x03" # Suppress Go Ahead 
-    OPT_NAMS           =   4.chr # "\004" # "\x04" # Approx Message Size Negotiation 
-    OPT_STATUS         =   5.chr # "\005" # "\x05" # Status 
-    OPT_TM             =   6.chr # "\006" # "\x06" # Timing Mark 
-    OPT_RCTE           =   7.chr # "\a"   # "\x07" # Remote Controlled Trans and Echo 
-    OPT_NAOL           =   8.chr # "\010" # "\x08" # Output Line Width 
-    OPT_NAOP           =   9.chr # "\t"   # "\x09" # Output Page Size 
-    OPT_NAOCRD         =  10.chr # "\n"   # "\x0a" # Output Carriage-Return Disposition 
-    OPT_NAOHTS         =  11.chr # "\v"   # "\x0b" # Output Horizontal Tab Stops 
-    OPT_NAOHTD         =  12.chr # "\f"   # "\x0c" # Output Horizontal Tab Disposition 
-    OPT_NAOFFD         =  13.chr # "\r"   # "\x0d" # Output Formfeed Disposition 
-    OPT_NAOVTS         =  14.chr # "\016" # "\x0e" # Output Vertical Tabstops 
-    OPT_NAOVTD         =  15.chr # "\017" # "\x0f" # Output Vertical Tab Disposition 
-    OPT_NAOLFD         =  16.chr # "\020" # "\x10" # Output Linefeed Disposition 
-    OPT_XASCII         =  17.chr # "\021" # "\x11" # Extended ASCII 
-    OPT_LOGOUT         =  18.chr # "\022" # "\x12" # Logout 
-    OPT_BM             =  19.chr # "\023" # "\x13" # Byte Macro 
-    OPT_DET            =  20.chr # "\024" # "\x14" # Data Entry Terminal 
-    OPT_SUPDUP         =  21.chr # "\025" # "\x15" # SUPDUP 
-    OPT_SUPDUPOUTPUT   =  22.chr # "\026" # "\x16" # SUPDUP Output 
-    OPT_SNDLOC         =  23.chr # "\027" # "\x17" # Send Location 
-    OPT_TTYPE          =  24.chr # "\030" # "\x18" # Terminal Type 
-    OPT_EOR            =  25.chr # "\031" # "\x19" # End of Record 
-    OPT_TUID           =  26.chr # "\032" # "\x1a" # TACACS User Identification 
-    OPT_OUTMRK         =  27.chr # "\e"   # "\x1b" # Output Marking 
-    OPT_TTYLOC         =  28.chr # "\034" # "\x1c" # Terminal Location Number 
-    OPT_3270REGIME     =  29.chr # "\035" # "\x1d" # Telnet 3270 Regime 
-    OPT_X3PAD          =  30.chr # "\036" # "\x1e" # X.3 PAD 
-    OPT_NAWS           =  31.chr # "\037" # "\x1f" # Negotiate About Window Size 
-    OPT_TSPEED         =  32.chr # " "    # "\x20" # Terminal Speed 
-    OPT_LFLOW          =  33.chr # "!"    # "\x21" # Remote Flow Control 
-    OPT_LINEMODE       =  34.chr # "\""   # "\x22" # Linemode 
-    OPT_XDISPLOC       =  35.chr # "#"    # "\x23" # X Display Location 
-    OPT_OLD_ENVIRON    =  36.chr # "$"    # "\x24" # Environment Option 
-    OPT_AUTHENTICATION =  37.chr # "%"    # "\x25" # Authentication Option 
-    OPT_ENCRYPT        =  38.chr # "&"    # "\x26" # Encryption Option 
-    OPT_NEW_ENVIRON    =  39.chr # "'"    # "\x27" # New Environment Option 
-    OPT_EXOPL          = 255.chr # "\377" # "\xff" # Extended-Options-List 
-
-    NULL = "\000" 
-    CR   = "\015"   
-    LF   = "\012" 
-    EOL  = CR + LF 
-    REVISION = '$Id: telnet.rb 17270 2008-06-15 13:34:40Z shyouhei $'
-    # :startdoc:
-
-    #
-    # Creates a new Net::Telnet object.
-    #
-    # Attempts to connect to the host (unless the Proxy option is
-    # provided: see below).  If a block is provided, it is yielded
-    # status messages on the attempt to connect to the server, of
-    # the form:
-    # 
-    #   Trying localhost...
-    #   Connected to localhost.
-    #
-    # +options+ is a hash of options.  The following example lists
-    # all options and their default values.
-    # 
-    #   host = Net::Telnet::new(
-    #            "Host"       => "localhost",  # default: "localhost"
-    #            "Port"       => 23,           # default: 23
-    #            "Binmode"    => false,        # default: false
-    #            "Output_log" => "output_log", # default: nil (no output)
-    #            "Dump_log"   => "dump_log",   # default: nil (no output)
-    #            "Prompt"     => /[$%#>] \z/n, # default: /[$%#>] \z/n
-    #            "Telnetmode" => true,         # default: true
-    #            "Timeout"    => 10,           # default: 10
-    #              # if ignore timeout then set "Timeout" to false.
-    #            "Waittime"   => 0,            # default: 0
-    #            "Proxy"      => proxy         # default: nil
-    #                            # proxy is Net::Telnet or IO object
-    #          )
-    #
-    # The options have the following meanings:
-    #
-    # Host:: the hostname or IP address of the host to connect to, as a String. 
-    #        Defaults to "localhost".
-    #
-    # Port:: the port to connect to.  Defaults to 23.
-    #
-    # Binmode:: if false (the default), newline substitution is performed.  
-    #           Outgoing LF is
-    #           converted to CRLF, and incoming CRLF is converted to LF.  If
-    #           true, this substitution is not performed.  This value can
-    #           also be set with the #binmode() method.  The 
-    #           outgoing conversion only applies to the #puts() and #print()
-    #           methods, not the #write() method.  The precise nature of
-    #           the newline conversion is also affected by the telnet options
-    #           SGA and BIN.
-    #
-    # Output_log:: the name of the file to write connection status messages
-    #              and all received traffic to.  In the case of a proper
-    #              Telnet session, this will include the client input as
-    #              echoed by the host; otherwise, it only includes server
-    #              responses.  Output is appended verbatim to this file.  
-    #              By default, no output log is kept.
-    #
-    # Dump_log:: as for Output_log, except that output is written in hexdump
-    #            format (16 bytes per line as hex pairs, followed by their
-    #            printable equivalent), with connection status messages
-    #            preceded by '#', sent traffic preceded by '>', and 
-    #            received traffic preceded by '<'.  By default, not dump log
-    #            is kept.
-    #
-    # Prompt:: a regular expression matching the host's command-line prompt
-    #          sequence.  This is needed by the Telnet class to determine
-    #          when the output from a command has finished and the host is
-    #          ready to receive a new command.  By default, this regular
-    #          expression is /[$%#>] \z/n.
-    #
-    # Telnetmode:: a boolean value, true by default.  In telnet mode, 
-    #              traffic received from the host is parsed for special
-    #              command sequences, and these sequences are escaped
-    #              in outgoing traffic sent using #puts() or #print()
-    #              (but not #write()).  If you are using the Net::Telnet
-    #              object to connect to a non-telnet service (such as
-    #              SMTP or POP), this should be set to "false" to prevent
-    #              undesired data corruption.  This value can also be set
-    #              by the #telnetmode() method.
-    #
-    # Timeout:: the number of seconds to wait before timing out both the
-    #           initial attempt to connect to host (in this constructor),
-    #           and all attempts to read data from the host (in #waitfor(),
-    #           #cmd(), and #login()).  Exceeding this timeout causes a
-    #           TimeoutError to be raised.  The default value is 10 seconds.
-    #           You can disable the timeout by setting this value to false.
-    #           In this case, the connect attempt will eventually timeout
-    #           on the underlying connect(2) socket call with an
-    #           Errno::ETIMEDOUT error (but generally only after a few
-    #           minutes), but other attempts to read data from the host
-    #           will hand indefinitely if no data is forthcoming.
-    #
-    # Waittime:: the amount of time to wait after seeing what looks like a 
-    #            prompt (that is, received data that matches the Prompt
-    #            option regular expression) to see if more data arrives.
-    #            If more data does arrive in this time, Net::Telnet assumes
-    #            that what it saw was not really a prompt.  This is to try to 
-    #            avoid false matches, but it can also lead to missing real
-    #            prompts (if, for instance, a background process writes to
-    #            the terminal soon after the prompt is displayed).  By
-    #            default, set to 0, meaning not to wait for more data.
-    #
-    # Proxy:: a proxy object to used instead of opening a direct connection
-    #         to the host.  Must be either another Net::Telnet object or
-    #         an IO object.  If it is another Net::Telnet object, this 
-    #         instance will use that one's socket for communication.  If an
-    #         IO object, it is used directly for communication.  Any other
-    #         kind of object will cause an error to be raised.
-    #
-    def initialize(options) # :yield: mesg 
-      @options = options
-      @options["Host"]       = "localhost"   unless @options.has_key?("Host")
-      @options["Port"]       = 23            unless @options.has_key?("Port")
-      @options["Prompt"]     = /[$%#>] \z/n  unless @options.has_key?("Prompt")
-      @options["Timeout"]    = 10            unless @options.has_key?("Timeout")
-      @options["Waittime"]   = 0             unless @options.has_key?("Waittime")
-      unless @options.has_key?("Binmode")
-        @options["Binmode"]    = false         
-      else
-        unless (true == @options["Binmode"] or false == @options["Binmode"])
-          raise ArgumentError, "Binmode option must be true or false"
-        end
-      end
-
-      unless @options.has_key?("Telnetmode")
-        @options["Telnetmode"] = true          
-      else
-        unless (true == @options["Telnetmode"] or false == @options["Telnetmode"])
-          raise ArgumentError, "Telnetmode option must be true or false"
-        end
-      end
-
-      @telnet_option = { "SGA" => false, "BINARY" => false }
-
-      if @options.has_key?("Output_log")
-        @log = File.open(@options["Output_log"], 'a+')
-        @log.sync = true
-        @log.binmode
-      end
-
-      if @options.has_key?("Dump_log")
-        @dumplog = File.open(@options["Dump_log"], 'a+')
-        @dumplog.sync = true
-        @dumplog.binmode
-        def @dumplog.log_dump(dir, x)  # :nodoc:
-          len = x.length
-          addr = 0
-          offset = 0
-          while 0 < len
-            if len < 16
-              line = x[offset, len]
-            else
-              line = x[offset, 16]
-            end
-            hexvals = line.unpack('H*')[0]
-            hexvals += ' ' * (32 - hexvals.length)
-            hexvals = format("%s %s %s %s  " * 4, *hexvals.unpack('a2' * 16))
-            line = line.gsub(/[\000-\037\177-\377]/n, '.')
-            printf "%s 0x%5.5x: %s%s\n", dir, addr, hexvals, line
-            addr += 16
-            offset += 16
-            len -= 16
-          end
-          print "\n"
-        end
-      end
-
-      if @options.has_key?("Proxy")
-        if @options["Proxy"].kind_of?(Net::Telnet)
-          @sock = @options["Proxy"].sock
-        elsif @options["Proxy"].kind_of?(IO)
-          @sock = @options["Proxy"]
-        else
-          raise "Error: Proxy must be an instance of Net::Telnet or IO."
-        end
-      else
-        message = "Trying " + @options["Host"] + "...\n"
-        yield(message) if block_given?
-        @log.write(message) if @options.has_key?("Output_log")
-        @dumplog.log_dump('#', message) if @options.has_key?("Dump_log")
-
-        begin
-          if @options["Timeout"] == false
-            @sock = TCPSocket.open(@options["Host"], @options["Port"])
-          else
-            timeout(@options["Timeout"]) do
-              @sock = TCPSocket.open(@options["Host"], @options["Port"])
-            end
-          end
-        rescue TimeoutError
-          raise TimeoutError, "timed out while opening a connection to the host"
-        rescue
-          @log.write($ERROR_INFO.to_s + "\n") if @options.has_key?("Output_log")
-          @dumplog.log_dump('#', $ERROR_INFO.to_s + "\n") if @options.has_key?("Dump_log")
-          raise
-        end
-        @sock.sync = true
-        @sock.binmode
-
-        message = "Connected to " + @options["Host"] + ".\n"
-        yield(message) if block_given?
-        @log.write(message) if @options.has_key?("Output_log")
-        @dumplog.log_dump('#', message) if @options.has_key?("Dump_log")
-      end
-
-      super(@sock)
-    end # initialize
-
-    # The socket the Telnet object is using.  Note that this object becomes
-    # a delegate of the Telnet object, so normally you invoke its methods
-    # directly on the Telnet object.
-    attr :sock 
-
-    # Set telnet command interpretation on (+mode+ == true) or off
-    # (+mode+ == false), or return the current value (+mode+ not
-    # provided).  It should be on for true telnet sessions, off if
-    # using Net::Telnet to connect to a non-telnet service such
-    # as SMTP.
-    def telnetmode(mode = nil)
-      case mode
-      when nil
-        @options["Telnetmode"]
-      when true, false
-        @options["Telnetmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false, or missing"
-      end
-    end
-
-    # Turn telnet command interpretation on (true) or off (false).  It
-    # should be on for true telnet sessions, off if using Net::Telnet
-    # to connect to a non-telnet service such as SMTP.
-    def telnetmode=(mode)
-      if (true == mode or false == mode)
-        @options["Telnetmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Turn newline conversion on (+mode+ == false) or off (+mode+ == true),
-    # or return the current value (+mode+ is not specified).
-    def binmode(mode = nil)
-      case mode
-      when nil
-        @options["Binmode"] 
-      when true, false
-        @options["Binmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Turn newline conversion on (false) or off (true).
-    def binmode=(mode)
-      if (true == mode or false == mode)
-        @options["Binmode"] = mode
-      else
-        raise ArgumentError, "argument must be true or false"
-      end
-    end
-
-    # Preprocess received data from the host.
-    #
-    # Performs newline conversion and detects telnet command sequences.
-    # Called automatically by #waitfor().  You should only use this 
-    # method yourself if you have read input directly using sysread()
-    # or similar, and even then only if in telnet mode.
-    def preprocess(string)
-      # combine CR+NULL into CR
-      string = string.gsub(/#{CR}#{NULL}/no, CR) if @options["Telnetmode"]
-
-      # combine EOL into "\n"
-      string = string.gsub(/#{EOL}/no, "\n") unless @options["Binmode"]
-
-      string.gsub(/#{IAC}(
-                   [#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]|
-                   [#{DO}#{DONT}#{WILL}#{WONT}]
-                     [#{OPT_BINARY}-#{OPT_NEW_ENVIRON}#{OPT_EXOPL}]|
-                   #{SB}[^#{IAC}]*#{IAC}#{SE}
-                 )/xno) do
-        if    IAC == $1  # handle escaped IAC characters
-          IAC
-        elsif AYT == $1  # respond to "IAC AYT" (are you there)
-          self.write("nobody here but us pigeons" + EOL)
-          ''
-        elsif DO[0] == $1[0]  # respond to "IAC DO x"
-          if OPT_BINARY[0] == $1[1]
-            @telnet_option["BINARY"] = true
-            self.write(IAC + WILL + OPT_BINARY)
-          else
-            self.write(IAC + WONT + $1[1..1])
-          end
-          ''
-        elsif DONT[0] == $1[0]  # respond to "IAC DON'T x" with "IAC WON'T x"
-          self.write(IAC + WONT + $1[1..1])
-          ''
-        elsif WILL[0] == $1[0]  # respond to "IAC WILL x"
-          if    OPT_BINARY[0] == $1[1]
-            self.write(IAC + DO + OPT_BINARY)
-          elsif OPT_ECHO[0] == $1[1]
-            self.write(IAC + DO + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = true
-            self.write(IAC + DO + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif WONT[0] == $1[0]  # respond to "IAC WON'T x"
-          if    OPT_ECHO[0] == $1[1]
-            self.write(IAC + DONT + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = false
-            self.write(IAC + DONT + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        else
-          ''
-        end
-      end
-    end # preprocess
-
-    # Read data from the host until a certain sequence is matched.
-    #
-    # If a block is given, the received data will be yielded as it
-    # is read in (not necessarily all in one go), or nil if EOF 
-    # occurs before any data is received.  Whether a block is given
-    # or not, all data read will be returned in a single string, or again 
-    # nil if EOF occurs before any data is received.  Note that
-    # received data includes the matched sequence we were looking for.
-    #
-    # +options+ can be either a regular expression or a hash of options.
-    # If a regular expression, this specifies the data to wait for.
-    # If a hash, this can specify the following options:
-    #
-    # Match:: a regular expression, specifying the data to wait for.
-    # Prompt:: as for Match; used only if Match is not specified.
-    # String:: as for Match, except a string that will be converted
-    #          into a regular expression.  Used only if Match and
-    #          Prompt are not specified.
-    # Timeout:: the number of seconds to wait for data from the host
-    #           before raising a TimeoutError.  If set to false, 
-    #           no timeout will occur.  If not specified, the
-    #           Timeout option value specified when this instance
-    #           was created will be used, or, failing that, the
-    #           default value of 10 seconds.
-    # Waittime:: the number of seconds to wait after matching against
-    #            the input data to see if more data arrives.  If more
-    #            data arrives within this time, we will judge ourselves
-    #            not to have matched successfully, and will continue
-    #            trying to match.  If not specified, the Waittime option
-    #            value specified when this instance was created will be
-    #            used, or, failing that, the default value of 0 seconds,
-    #            which means not to wait for more input.
-    #           
-    def waitfor(options) # :yield: recvdata
-      time_out = @options["Timeout"]
-      waittime = @options["Waittime"]
-
-      if options.kind_of?(Hash)
-        prompt   = if options.has_key?("Match")
-                     options["Match"]
-                   elsif options.has_key?("Prompt")
-                     options["Prompt"]
-                   elsif options.has_key?("String")
-                     Regexp.new( Regexp.quote(options["String"]) )
-                   end
-        time_out = options["Timeout"]  if options.has_key?("Timeout")
-        waittime = options["Waittime"] if options.has_key?("Waittime")
-      else
-        prompt = options
-      end
-
-      if time_out == false
-        time_out = nil
-      end
-
-      line = ''
-      buf = ''
-      rest = ''
-      until(prompt === line and not IO::select([@sock], nil, nil, waittime))
-        unless IO::select([@sock], nil, nil, time_out)
-          raise TimeoutError, "timed out while waiting for more data"
-        end
-        begin
-          c = @sock.readpartial(1024 * 1024)
-          @dumplog.log_dump('<', c) if @options.has_key?("Dump_log")
-          if @options["Telnetmode"]
-            c = rest + c
-            if Integer(c.rindex(/#{IAC}#{SE}/no)) <
-               Integer(c.rindex(/#{IAC}#{SB}/no))
-              buf = preprocess(c[0 ... c.rindex(/#{IAC}#{SB}/no)])
-              rest = c[c.rindex(/#{IAC}#{SB}/no) .. -1]
-            elsif pt = c.rindex(/#{IAC}[^#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]?\z/no) ||
-                       c.rindex(/\r\z/no)
-              buf = preprocess(c[0 ... pt])
-              rest = c[pt .. -1]
-            else
-              buf = preprocess(c)
-              rest = ''
-            end
-         else
-           # Not Telnetmode.
-           #
-           # We cannot use preprocess() on this data, because that
-           # method makes some Telnetmode-specific assumptions.
-           buf = rest + c
-           rest = ''
-           unless @options["Binmode"]
-             if pt = buf.rindex(/\r\z/no)
-               buf = buf[0 ... pt]
-               rest = buf[pt .. -1]
-             end
-             buf.gsub!(/#{EOL}/no, "\n")
-           end
-          end
-          @log.print(buf) if @options.has_key?("Output_log")
-          line += buf
-          yield buf if block_given?
-        rescue EOFError # End of file reached
-          if line == ''
-            line = nil
-            yield nil if block_given?
-          end
-          break
-        end
-      end
-      line
-    end
-
-    # Write +string+ to the host.
-    #
-    # Does not perform any conversions on +string+.  Will log +string+ to the
-    # dumplog, if the Dump_log option is set.
-    def write(string)
-      length = string.length
-      while 0 < length
-        IO::select(nil, [@sock])
-        @dumplog.log_dump('>', string[-length..-1]) if @options.has_key?("Dump_log")
-        length -= @sock.syswrite(string[-length..-1])
-      end
-    end
-
-    # Sends a string to the host.
-    #
-    # This does _not_ automatically append a newline to the string.  Embedded
-    # newlines may be converted and telnet command sequences escaped 
-    # depending upon the values of telnetmode, binmode, and telnet options
-    # set by the host.
-    def print(string)
-      string = string.gsub(/#{IAC}/no, IAC + IAC) if @options["Telnetmode"]
-
-      if @options["Binmode"]
-        self.write(string)
-      else
-        if @telnet_option["BINARY"] and @telnet_option["SGA"]
-          # IAC WILL SGA IAC DO BIN send EOL --> CR
-          self.write(string.gsub(/\n/n, CR))
-        elsif @telnet_option["SGA"]
-          # IAC WILL SGA send EOL --> CR+NULL
-          self.write(string.gsub(/\n/n, CR + NULL))
-        else
-          # NONE send EOL --> CR+LF
-          self.write(string.gsub(/\n/n, EOL))
-        end
-      end
-    end
-
-    # Sends a string to the host.
-    #
-    # Same as #print(), but appends a newline to the string.
-    def puts(string)
-      self.print(string + "\n")
-    end
-
-    # Send a command to the host.
-    #
-    # More exactly, sends a string to the host, and reads in all received
-    # data until is sees the prompt or other matched sequence.
-    #
-    # If a block is given, the received data will be yielded to it as
-    # it is read in.  Whether a block is given or not, the received data 
-    # will be return as a string.  Note that the received data includes
-    # the prompt and in most cases the host's echo of our command.
-    #
-    # +options+ is either a String, specified the string or command to
-    # send to the host; or it is a hash of options.  If a hash, the
-    # following options can be specified:
-    #
-    # String:: the command or other string to send to the host.
-    # Match:: a regular expression, the sequence to look for in
-    #         the received data before returning.  If not specified,
-    #         the Prompt option value specified when this instance
-    #         was created will be used, or, failing that, the default
-    #         prompt of /[$%#>] \z/n.
-    # Timeout:: the seconds to wait for data from the host before raising
-    #           a Timeout error.  If not specified, the Timeout option
-    #           value specified when this instance was created will be
-    #           used, or, failing that, the default value of 10 seconds.
-    #
-    # The command or other string will have the newline sequence appended
-    # to it.
-    def cmd(options) # :yield: recvdata
-      match    = @options["Prompt"]
-      time_out = @options["Timeout"]
-
-      if options.kind_of?(Hash)
-        string   = options["String"]
-        match    = options["Match"]   if options.has_key?("Match")
-        time_out = options["Timeout"] if options.has_key?("Timeout")
-      else
-        string = options
-      end
-
-      self.puts(string)
-      if block_given?
-        waitfor({"Prompt" => match, "Timeout" => time_out}){|c| yield c }
-      else
-        waitfor({"Prompt" => match, "Timeout" => time_out})
-      end
-    end
-
-    # Login to the host with a given username and password.
-    #
-    # The username and password can either be provided as two string
-    # arguments in that order, or as a hash with keys "Name" and
-    # "Password".    
-    #
-    # This method looks for the strings "login" and "Password" from the
-    # host to determine when to send the username and password.  If the
-    # login sequence does not follow this pattern (for instance, you
-    # are connecting to a service other than telnet), you will need
-    # to handle login yourself.
-    #
-    # The password can be omitted, either by only
-    # provided one String argument, which will be used as the username,
-    # or by providing a has that has no "Password" key.  In this case,
-    # the method will not look for the "Password:" prompt; if it is
-    # sent, it will have to be dealt with by later calls.
-    #
-    # The method returns all data received during the login process from
-    # the host, including the echoed username but not the password (which
-    # the host should not echo).  If a block is passed in, this received
-    # data is also yielded to the block as it is received.
-    def login(options, password = nil) # :yield: recvdata
-      login_prompt = /[Ll]ogin[: ]*\z/n
-      password_prompt = /[Pp]ass(?:word|phrase)[: ]*\z/n
-      if options.kind_of?(Hash)
-        username = options["Name"]
-        password = options["Password"]
-	login_prompt = options["LoginPrompt"] if options["LoginPrompt"]
-	password_prompt = options["PasswordPrompt"] if options["PasswordPrompt"]
-      else
-        username = options
-      end
-
-      if block_given?
-        line = waitfor(login_prompt){|c| yield c }
-        if password
-          line += cmd({"String" => username,
-                       "Match" => password_prompt}){|c| yield c }
-          line += cmd(password){|c| yield c }
-        else
-          line += cmd(username){|c| yield c }
-        end
-      else
-        line = waitfor(login_prompt)
-        if password
-          line += cmd({"String" => username,
-                       "Match" => password_prompt})
-          line += cmd(password)
-        else
-          line += cmd(username)
-        end
-      end
-      line
-    end
-
-  end  # class Telnet
-end  # module Net
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnets.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnets.rb
deleted file mode 100644
index 694f45c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/net/telnets.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-=begin
-= $RCSfile$ -- SSL/TLS enhancement for Net::Telnet.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: telnets.rb 16878 2008-06-07 16:16:46Z shyouhei $
-  
-  2001/11/06: Contiributed to Ruby/OpenSSL project.
-
-== class Net::Telnet
-
-This class will initiate SSL/TLS session automaticaly if the server
-sent OPT_STARTTLS. Some options are added for SSL/TLS.
-
-  host = Net::Telnet::new({
-           "Host"       => "localhost",
-           "Port"       => "telnets",
-           ## follows are new options.
-           'CertFile'   => "user.crt",
-           'KeyFile'    => "user.key",
-           'CAFile'     => "/some/where/certs/casert.pem",
-           'CAPath'     => "/some/where/caserts",
-           'VerifyMode' => SSL::VERIFY_PEER,
-           'VerifyCallback' => verify_proc
-         })
-
-Or, the new options ('Cert', 'Key' and 'CACert') are available from
-Michal Rokos's OpenSSL module.
-
-  cert_data = File.open("user.crt"){|io| io.read }
-  pkey_data = File.open("user.key"){|io| io.read }
-  cacert_data = File.open("your_ca.pem"){|io| io.read }
-  host = Net::Telnet::new({
-           "Host"       => "localhost",
-           "Port"       => "telnets",
-           'Cert'       => OpenSSL::X509::Certificate.new(cert_data)
-           'Key'        => OpenSSL::PKey::RSA.new(pkey_data)
-           'CACert'     => OpenSSL::X509::Certificate.new(cacert_data)
-           'CAFile'     => "/some/where/certs/casert.pem",
-           'CAPath'     => "/some/where/caserts",
-           'VerifyMode' => SSL::VERIFY_PEER,
-           'VerifyCallback' => verify_proc
-         })
-
-This class is expected to be a superset of usual Net::Telnet.
-=end
-
-require "net/telnet"
-require "openssl"
-
-module Net
-  class Telnet
-    attr_reader :ssl
-
-    OPT_STARTTLS       =  46.chr # "\056" # "\x2e" # Start TLS
-    TLS_FOLLOWS        =   1.chr # "\001" # "\x01" # FOLLOWS (for STARTTLS)
-
-    alias preprocess_orig preprocess
-
-    def ssl?; @ssl; end
-
-    def preprocess(string)
-      # combine CR+NULL into CR
-      string = string.gsub(/#{CR}#{NULL}/no, CR) if @options["Telnetmode"]
-
-      # combine EOL into "\n"
-      string = string.gsub(/#{EOL}/no, "\n") unless @options["Binmode"]
-
-      string.gsub(/#{IAC}(
-                   [#{IAC}#{AO}#{AYT}#{DM}#{IP}#{NOP}]|
-                   [#{DO}#{DONT}#{WILL}#{WONT}][#{OPT_BINARY}-#{OPT_EXOPL}]|
-                   #{SB}[#{OPT_BINARY}-#{OPT_EXOPL}]
-                     (#{IAC}#{IAC}|[^#{IAC}])+#{IAC}#{SE}
-                 )/xno) do
-        if    IAC == $1  # handle escaped IAC characters
-          IAC
-        elsif AYT == $1  # respond to "IAC AYT" (are you there)
-          self.write("nobody here but us pigeons" + EOL)
-          ''
-        elsif DO[0] == $1[0]  # respond to "IAC DO x"
-          if    OPT_BINARY[0] == $1[1]
-            @telnet_option["BINARY"] = true
-            self.write(IAC + WILL + OPT_BINARY)
-          elsif OPT_STARTTLS[0] == $1[1]
-            self.write(IAC + WILL + OPT_STARTTLS)
-            self.write(IAC + SB + OPT_STARTTLS + TLS_FOLLOWS + IAC + SE)
-          else
-            self.write(IAC + WONT + $1[1..1])
-          end
-          ''
-        elsif DONT[0] == $1[0]  # respond to "IAC DON'T x" with "IAC WON'T x"
-          self.write(IAC + WONT + $1[1..1])
-          ''
-        elsif WILL[0] == $1[0]  # respond to "IAC WILL x"
-          if    OPT_BINARY[0] == $1[1]
-            self.write(IAC + DO + OPT_BINARY)
-          elsif OPT_ECHO[0] == $1[1]
-            self.write(IAC + DO + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = true
-            self.write(IAC + DO + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif WONT[0] == $1[0]  # respond to "IAC WON'T x"
-          if    OPT_ECHO[0] == $1[1]
-            self.write(IAC + DONT + OPT_ECHO)
-          elsif OPT_SGA[0]  == $1[1]
-            @telnet_option["SGA"] = false
-            self.write(IAC + DONT + OPT_SGA)
-          else
-            self.write(IAC + DONT + $1[1..1])
-          end
-          ''
-        elsif SB[0] == $1[0]    # respond to "IAC SB xxx IAC SE"
-          if    OPT_STARTTLS[0] == $1[1] && TLS_FOLLOWS[0] == $2[0]
-            @sock = OpenSSL::SSL::SSLSocket.new(@sock)
-            @sock.cert            = @options['Cert'] unless @sock.cert
-            @sock.key             = @options['Key'] unless @sock.key
-            @sock.ca_cert         = @options['CACert']
-            @sock.ca_file         = @options['CAFile']
-            @sock.ca_path         = @options['CAPath']
-            @sock.timeout         = @options['Timeout']
-            @sock.verify_mode     = @options['VerifyMode']
-            @sock.verify_callback = @options['VerifyCallback']
-            @sock.verify_depth    = @options['VerifyDepth']
-            @sock.connect
-            if @options['VerifyMode'] != OpenSSL::SSL::VERIFY_NONE
-              @sock.post_connection_check(@options['Host'])
-            end
-            @ssl = true
-          end
-          ''
-        else
-          ''
-        end
-      end
-    end # preprocess
-    
-    alias waitfor_org waitfor
-
-    def waitfor(options)
-      time_out = @options["Timeout"]
-      waittime = @options["Waittime"]
-
-      if options.kind_of?(Hash)
-        prompt   = if options.has_key?("Match")
-                     options["Match"]
-                   elsif options.has_key?("Prompt")
-                     options["Prompt"]
-                   elsif options.has_key?("String")
-                     Regexp.new( Regexp.quote(options["String"]) )
-                   end
-        time_out = options["Timeout"]  if options.has_key?("Timeout")
-        waittime = options["Waittime"] if options.has_key?("Waittime")
-      else
-        prompt = options
-      end
-
-      if time_out == false
-        time_out = nil
-      end
-
-      line = ''
-      buf = ''
-      @rest = '' unless @rest
-
-      until(prompt === line and not IO::select([@sock], nil, nil, waittime))
-        unless IO::select([@sock], nil, nil, time_out)
-          raise TimeoutError, "timed-out; wait for the next data"
-        end
-        begin
-          c = @rest + @sock.sysread(1024 * 1024)
-          @dumplog.log_dump('<', c) if @options.has_key?("Dump_log")
-          if @options["Telnetmode"]   
-            pos = 0
-            catch(:next){
-              while true
-                case c[pos]
-                when IAC[0]
-                  case c[pos+1]
-                  when DO[0], DONT[0], WILL[0], WONT[0]
-                    throw :next unless c[pos+2]
-                    pos += 3
-                  when SB[0]
-                    ret = detect_sub_negotiation(c, pos)
-                    throw :next unless ret
-                    pos = ret
-                  when nil
-                    throw :next
-                  else
-                    pos += 2
-                  end
-                when nil
-                  throw :next
-                else
-                  pos += 1
-                end
-              end
-            }
-
-            buf = preprocess(c[0...pos])
-            @rest = c[pos..-1]
-          end
-          @log.print(buf) if @options.has_key?("Output_log")
-          line.concat(buf)
-          yield buf if block_given?   
-        rescue EOFError # End of file reached
-          if line == ''
-            line = nil
-            yield nil if block_given? 
-          end
-          break
-        end
-      end
-      line
-    end
-
-    private
-
-    def detect_sub_negotiation(data, pos)
-      return nil if data.length < pos+6  # IAC SB x param IAC SE
-      pos += 3
-      while true
-        case data[pos]
-        when IAC[0]
-          if data[pos+1] == SE[0]
-            pos += 2
-            return pos
-          else
-            pos += 2
-          end
-        when nil
-          return nil
-        else
-          pos += 1
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/observer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/observer.rb
deleted file mode 100644
index 64c7d81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/observer.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-#
-# observer.rb implements the _Observer_ object-oriented design pattern.  The
-# following documentation is copied, with modifications, from "Programming
-# Ruby", by Hunt and Thomas; http://www.rubycentral.com/book/lib_patterns.html.
-#
-# == About
-#
-# The Observer pattern, also known as Publish/Subscribe, provides a simple
-# mechanism for one object to inform a set of interested third-party objects
-# when its state changes. 
-#
-# == Mechanism
-#
-# In the Ruby implementation, the notifying class mixes in the +Observable+
-# module, which provides the methods for managing the associated observer
-# objects.
-#
-# The observers must implement the +update+ method to receive notifications.
-#
-# The observable object must:
-# * assert that it has +changed+
-# * call +notify_observers+
-#
-# == Example
-#
-# The following example demonstrates this nicely.  A +Ticker+, when run,
-# continually receives the stock +Price+ for its + at symbol+.  A +Warner+ is a
-# general observer of the price, and two warners are demonstrated, a +WarnLow+
-# and a +WarnHigh+, which print a warning if the price is below or above their
-# set limits, respectively.
-#
-# The +update+ callback allows the warners to run without being explicitly
-# called.  The system is set up with the +Ticker+ and several observers, and the
-# observers do their duty without the top-level code having to interfere.
-#
-# Note that the contract between publisher and subscriber (observable and
-# observer) is not declared or enforced.  The +Ticker+ publishes a time and a
-# price, and the warners receive that.  But if you don't ensure that your
-# contracts are correct, nothing else can warn you.
-#
-#   require "observer"
-#   
-#   class Ticker          ### Periodically fetch a stock price.
-#     include Observable
-#   
-#     def initialize(symbol)
-#       @symbol = symbol
-#     end
-#   
-#     def run
-#       lastPrice = nil
-#       loop do
-#         price = Price.fetch(@symbol)
-#         print "Current price: #{price}\n"
-#         if price != lastPrice
-#           changed                 # notify observers
-#           lastPrice = price
-#           notify_observers(Time.now, price)
-#         end
-#         sleep 1
-#       end
-#     end
-#   end
-#
-#   class Price           ### A mock class to fetch a stock price (60 - 140).
-#     def Price.fetch(symbol)
-#       60 + rand(80)
-#     end
-#   end
-#   
-#   class Warner          ### An abstract observer of Ticker objects.
-#     def initialize(ticker, limit)
-#       @limit = limit
-#       ticker.add_observer(self)
-#     end
-#   end
-#   
-#   class WarnLow < Warner
-#     def update(time, price)       # callback for observer
-#       if price < @limit
-#         print "--- #{time.to_s}: Price below #@limit: #{price}\n"
-#       end
-#     end
-#   end
-#   
-#   class WarnHigh < Warner
-#     def update(time, price)       # callback for observer
-#       if price > @limit
-#         print "+++ #{time.to_s}: Price above #@limit: #{price}\n"
-#       end
-#     end
-#   end
-#
-#   ticker = Ticker.new("MSFT")
-#   WarnLow.new(ticker, 80)
-#   WarnHigh.new(ticker, 120)
-#   ticker.run
-#
-# Produces:
-#
-#   Current price: 83
-#   Current price: 75
-#   --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 75
-#   Current price: 90
-#   Current price: 134
-#   +++ Sun Jun 09 00:10:25 CDT 2002: Price above 120: 134
-#   Current price: 134
-#   Current price: 112
-#   Current price: 79
-#   --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 79
-
-
-#
-# Implements the Observable design pattern as a mixin so that other objects can
-# be notified of changes in state.  See observer.rb for details and an example.
-#
-module Observable
-
-  #
-  # Add +observer+ as an observer on this object. +observer+ will now receive
-  # notifications.
-  #
-  def add_observer(observer)
-    @observer_peers = [] unless defined? @observer_peers
-    unless observer.respond_to? :update
-      raise NoMethodError, "observer needs to respond to `update'" 
-    end
-    @observer_peers.push observer
-  end
-
-  #
-  # Delete +observer+ as an observer on this object. It will no longer receive
-  # notifications.
-  #
-  def delete_observer(observer)
-    @observer_peers.delete observer if defined? @observer_peers
-  end
-
-  #
-  # Delete all observers associated with this object.
-  #
-  def delete_observers
-    @observer_peers.clear if defined? @observer_peers
-  end
-
-  #
-  # Return the number of observers associated with this object.
-  #
-  def count_observers
-    if defined? @observer_peers
-      @observer_peers.size
-    else
-      0
-    end
-  end
-
-  #
-  # Set the changed state of this object.  Notifications will be sent only if
-  # the changed +state+ is +true+.
-  #
-  def changed(state=true)
-    @observer_state = state
-  end
-
-  #
-  # Query the changed state of this object.
-  #
-  def changed?
-    if defined? @observer_state and @observer_state
-      true
-    else
-      false
-    end
-  end
-
-  #
-  # If this object's changed state is +true+, invoke the update method in each
-  # currently associated observer in turn, passing it the given arguments. The
-  # changed state is then set to +false+.
-  #
-  def notify_observers(*arg)
-    if defined? @observer_state and @observer_state
-      if defined? @observer_peers
-	for i in @observer_peers.dup
-	  i.update(*arg)
-	end
-      end
-      @observer_state = false
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open-uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open-uri.rb
deleted file mode 100644
index 0dae95b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open-uri.rb
+++ /dev/null
@@ -1,678 +0,0 @@
-require 'uri'
-require 'stringio'
-require 'time'
-
-module Kernel
-  private
-  alias open_uri_original_open open # :nodoc:
-
-  # makes possible to open various resources including URIs.
-  # If the first argument respond to `open' method,
-  # the method is called with the rest arguments.
-  #
-  # If the first argument is a string which begins with xxx://,
-  # it is parsed by URI.parse.  If the parsed object respond to `open' method,
-  # the method is called with the rest arguments.
-  #
-  # Otherwise original open is called.
-  #
-  # Since open-uri.rb provides URI::HTTP#open, URI::HTTPS#open and
-  # URI::FTP#open,
-  # Kernel[#.]open can accepts such URIs and strings which begins with
-  # http://, https:// and ftp://.
-  # In these case, the opened file object is extended by OpenURI::Meta.
-  def open(name, *rest, &block) # :doc:
-    if name.respond_to?(:open)
-      name.open(*rest, &block)
-    elsif name.respond_to?(:to_str) &&
-          %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
-          (uri = URI.parse(name)).respond_to?(:open)
-      uri.open(*rest, &block)
-    else
-      open_uri_original_open(name, *rest, &block)
-    end
-  end
-  module_function :open
-end
-
-# OpenURI is an easy-to-use wrapper for net/http, net/https and net/ftp.
-#
-#== Example
-#
-# It is possible to open http/https/ftp URL as usual like opening a file:
-#
-#   open("http://www.ruby-lang.org/") {|f|
-#     f.each_line {|line| p line}
-#   }
-#
-# The opened file has several methods for meta information as follows since
-# it is extended by OpenURI::Meta.
-#
-#   open("http://www.ruby-lang.org/en") {|f|
-#     f.each_line {|line| p line}
-#     p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
-#     p f.content_type     # "text/html"
-#     p f.charset          # "iso-8859-1"
-#     p f.content_encoding # []
-#     p f.last_modified    # Thu Dec 05 02:45:02 UTC 2002
-#   }
-#
-# Additional header fields can be specified by an optional hash argument.
-#
-#   open("http://www.ruby-lang.org/en/",
-#     "User-Agent" => "Ruby/#{RUBY_VERSION}",
-#     "From" => "foo at bar.invalid",
-#     "Referer" => "http://www.ruby-lang.org/") {|f|
-#     # ...
-#   }
-#
-# The environment variables such as http_proxy, https_proxy and ftp_proxy
-# are in effect by default.  :proxy => nil disables proxy.
-#
-#   open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
-#     # ...
-#   }
-#
-# URI objects can be opened in a similar way.
-#
-#   uri = URI.parse("http://www.ruby-lang.org/en/")
-#   uri.open {|f|
-#     # ...
-#   }
-#
-# URI objects can be read directly. The returned string is also extended by
-# OpenURI::Meta.
-#
-#   str = uri.read
-#   p str.base_uri
-#
-# Author:: Tanaka Akira <akr at m17n.org>
-
-module OpenURI
-  Options = {
-    :proxy => true,
-    :progress_proc => true,
-    :content_length_proc => true,
-    :http_basic_authentication => true,
-  }
-
-  def OpenURI.check_options(options) # :nodoc:
-    options.each {|k, v|
-      next unless Symbol === k
-      unless Options.include? k
-        raise ArgumentError, "unrecognized option: #{k}"
-      end
-    }
-  end
-
-  def OpenURI.scan_open_optional_arguments(*rest) # :nodoc:
-    if !rest.empty? && (String === rest.first || Integer === rest.first)
-      mode = rest.shift
-      if !rest.empty? && Integer === rest.first
-        perm = rest.shift
-      end
-    end
-    return mode, perm, rest
-  end
-
-  def OpenURI.open_uri(name, *rest) # :nodoc:
-    uri = URI::Generic === name ? name : URI.parse(name)
-    mode, perm, rest = OpenURI.scan_open_optional_arguments(*rest)
-    options = rest.shift if !rest.empty? && Hash === rest.first
-    raise ArgumentError.new("extra arguments") if !rest.empty?
-    options ||= {}
-    OpenURI.check_options(options)
-
-    unless mode == nil ||
-           mode == 'r' || mode == 'rb' ||
-           mode == File::RDONLY
-      raise ArgumentError.new("invalid access mode #{mode} (#{uri.class} resource is read only.)")
-    end
-
-    io = open_loop(uri, options)
-    if block_given?
-      begin
-        yield io
-      ensure
-        io.close
-      end
-    else
-      io
-    end
-  end
-
-  def OpenURI.open_loop(uri, options) # :nodoc:
-    case opt_proxy = options.fetch(:proxy, true)
-    when true
-      find_proxy = lambda {|u| u.find_proxy}
-    when nil, false
-      find_proxy = lambda {|u| nil}
-    when String
-      opt_proxy = URI.parse(opt_proxy)
-      find_proxy = lambda {|u| opt_proxy}
-    when URI::Generic
-      find_proxy = lambda {|u| opt_proxy}
-    else
-      raise ArgumentError.new("Invalid proxy option: #{opt_proxy}")
-    end
-
-    uri_set = {}
-    buf = nil
-    while true
-      redirect = catch(:open_uri_redirect) {
-        buf = Buffer.new
-        uri.buffer_open(buf, find_proxy.call(uri), options)
-        nil
-      }
-      if redirect
-        if redirect.relative?
-          # Although it violates RFC2616, Location: field may have relative
-          # URI.  It is converted to absolute URI using uri as a base URI.
-          redirect = uri + redirect
-        end
-        unless OpenURI.redirectable?(uri, redirect)
-          raise "redirection forbidden: #{uri} -> #{redirect}"
-        end
-        if options.include? :http_basic_authentication
-          # send authentication only for the URI directly specified.
-          options = options.dup
-          options.delete :http_basic_authentication
-        end
-        uri = redirect
-        raise "HTTP redirection loop: #{uri}" if uri_set.include? uri.to_s
-        uri_set[uri.to_s] = true
-      else
-        break
-      end
-    end
-    io = buf.io
-    io.base_uri = uri
-    io
-  end
-
-  def OpenURI.redirectable?(uri1, uri2) # :nodoc:
-    # This test is intended to forbid a redirection from http://... to
-    # file:///etc/passwd.
-    # However this is ad hoc.  It should be extensible/configurable.
-    uri1.scheme.downcase == uri2.scheme.downcase ||
-    (/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:http|ftp)\z/i =~ uri2.scheme)
-  end
-
-  def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
-    if proxy
-      raise "Non-HTTP proxy URI: #{proxy}" if proxy.class != URI::HTTP
-    end
-
-    if target.userinfo && "1.9.0" <= RUBY_VERSION
-      # don't raise for 1.8 because compatibility.
-      raise ArgumentError, "userinfo not supported.  [RFC3986]"
-    end
-
-    require 'net/http'
-    klass = Net::HTTP
-    if URI::HTTP === target
-      # HTTP or HTTPS
-      if proxy
-        klass = Net::HTTP::Proxy(proxy.host, proxy.port)
-      end
-      target_host = target.host
-      target_port = target.port
-      request_uri = target.request_uri
-    else
-      # FTP over HTTP proxy
-      target_host = proxy.host
-      target_port = proxy.port
-      request_uri = target.to_s
-    end
-
-    http = klass.new(target_host, target_port)
-    if target.class == URI::HTTPS
-      require 'net/https'
-      http.use_ssl = true
-      http.verify_mode = OpenSSL::SSL::VERIFY_PEER
-      store = OpenSSL::X509::Store.new
-      store.set_default_paths
-      http.cert_store = store
-    end
-
-    header = {}
-    options.each {|k, v| header[k] = v if String === k }
-
-    resp = nil
-    http.start {
-      req = Net::HTTP::Get.new(request_uri, header)
-      if options.include? :http_basic_authentication
-        user, pass = options[:http_basic_authentication]
-        req.basic_auth user, pass
-      end
-      http.request(req) {|response|
-        resp = response
-        if options[:content_length_proc] && Net::HTTPSuccess === resp
-          if resp.key?('Content-Length')
-            options[:content_length_proc].call(resp['Content-Length'].to_i)
-          else
-            options[:content_length_proc].call(nil)
-          end
-        end
-        resp.read_body {|str|
-          buf << str
-          if options[:progress_proc] && Net::HTTPSuccess === resp
-            options[:progress_proc].call(buf.size)
-          end
-        }
-      }
-    }
-    io = buf.io
-    io.rewind
-    io.status = [resp.code, resp.message]
-    resp.each {|name,value| buf.io.meta_add_field name, value }
-    case resp
-    when Net::HTTPSuccess
-    when Net::HTTPMovedPermanently, # 301
-         Net::HTTPFound, # 302
-         Net::HTTPSeeOther, # 303
-         Net::HTTPTemporaryRedirect # 307
-      throw :open_uri_redirect, URI.parse(resp['location'])
-    else
-      raise OpenURI::HTTPError.new(io.status.join(' '), io)
-    end
-  end
-
-  class HTTPError < StandardError
-    def initialize(message, io)
-      super(message)
-      @io = io
-    end
-    attr_reader :io
-  end
-
-  class Buffer # :nodoc:
-    def initialize
-      @io = StringIO.new
-      @size = 0
-    end
-    attr_reader :size
-
-    StringMax = 10240
-    def <<(str)
-      @io << str
-      @size += str.length
-      if StringIO === @io && StringMax < @size
-        require 'tempfile'
-        io = Tempfile.new('open-uri')
-        io.binmode
-        Meta.init io, @io if @io.respond_to? :meta
-        io << @io.string
-        @io = io
-      end
-    end
-
-    def io
-      Meta.init @io unless @io.respond_to? :meta
-      @io
-    end
-  end
-
-  # Mixin for holding meta-information.
-  module Meta
-    def Meta.init(obj, src=nil) # :nodoc:
-      obj.extend Meta
-      obj.instance_eval {
-        @base_uri = nil
-        @meta = {}
-      }
-      if src
-        obj.status = src.status
-        obj.base_uri = src.base_uri
-        src.meta.each {|name, value|
-          obj.meta_add_field(name, value)
-        }
-      end
-    end
-
-    # returns an Array which consists status code and message.
-    attr_accessor :status
-
-    # returns a URI which is base of relative URIs in the data.
-    # It may differ from the URI supplied by a user because redirection.
-    attr_accessor :base_uri
-
-    # returns a Hash which represents header fields.
-    # The Hash keys are downcased for canonicalization.
-    attr_reader :meta
-
-    def meta_add_field(name, value) # :nodoc:
-      @meta[name.downcase] = value
-    end
-
-    # returns a Time which represents Last-Modified field.
-    def last_modified
-      if v = @meta['last-modified']
-        Time.httpdate(v)
-      else
-        nil
-      end
-    end
-
-    RE_LWS = /[\r\n\t ]+/n
-    RE_TOKEN = %r{[^\x00- ()<>@,;:\\"/\[\]?={}\x7f]+}n
-    RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
-    RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
-
-    def content_type_parse # :nodoc:
-      v = @meta['content-type']
-      # The last (?:;#{RE_LWS}?)? matches extra ";" which violates RFC2045.
-      if v && %r{\A#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?/(#{RE_TOKEN})#{RE_LWS}?(#{RE_PARAMETERS})(?:;#{RE_LWS}?)?\z}no =~ v
-        type = $1.downcase
-        subtype = $2.downcase
-        parameters = []
-        $3.scan(/;#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?=#{RE_LWS}?(?:(#{RE_TOKEN})|(#{RE_QUOTED_STRING}))/no) {|att, val, qval|
-          val = qval.gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/) { $1 ? $1[1,1] : $& } if qval
-          parameters << [att.downcase, val]
-        }
-        ["#{type}/#{subtype}", *parameters]
-      else
-        nil
-      end
-    end
-
-    # returns "type/subtype" which is MIME Content-Type.
-    # It is downcased for canonicalization.
-    # Content-Type parameters are stripped.
-    def content_type
-      type, *parameters = content_type_parse
-      type || 'application/octet-stream'
-    end
-
-    # returns a charset parameter in Content-Type field.
-    # It is downcased for canonicalization.
-    #
-    # If charset parameter is not given but a block is given,
-    # the block is called and its result is returned.
-    # It can be used to guess charset.
-    #
-    # If charset parameter and block is not given,
-    # nil is returned except text type in HTTP.
-    # In that case, "iso-8859-1" is returned as defined by RFC2616 3.7.1.
-    def charset
-      type, *parameters = content_type_parse
-      if pair = parameters.assoc('charset')
-        pair.last.downcase
-      elsif block_given?
-        yield
-      elsif type && %r{\Atext/} =~ type &&
-            @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
-        "iso-8859-1" # RFC2616 3.7.1
-      else
-        nil
-      end
-    end
-
-    # returns a list of encodings in Content-Encoding field
-    # as an Array of String.
-    # The encodings are downcased for canonicalization.
-    def content_encoding
-      v = @meta['content-encoding']
-      if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
-        v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
-      else
-        []
-      end
-    end
-  end
-
-  # Mixin for HTTP and FTP URIs.
-  module OpenRead
-    # OpenURI::OpenRead#open provides `open' for URI::HTTP and URI::FTP.
-    #
-    # OpenURI::OpenRead#open takes optional 3 arguments as:
-    # OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
-    #
-    # `mode', `perm' is same as Kernel#open.
-    #
-    # However, `mode' must be read mode because OpenURI::OpenRead#open doesn't
-    # support write mode (yet).
-    # Also `perm' is just ignored because it is meaningful only for file
-    # creation.
-    #
-    # `options' must be a hash.
-    #
-    # Each pairs which key is a string in the hash specify a extra header
-    # field for HTTP.
-    # I.e. it is ignored for FTP without HTTP proxy.
-    #
-    # The hash may include other options which key is a symbol:
-    #
-    # [:proxy]
-    #  Synopsis:
-    #    :proxy => "http://proxy.foo.com:8000/"
-    #    :proxy => URI.parse("http://proxy.foo.com:8000/")
-    #    :proxy => true
-    #    :proxy => false
-    #    :proxy => nil
-    #   
-    #  If :proxy option is specified, the value should be String, URI,
-    #  boolean or nil.
-    #  When String or URI is given, it is treated as proxy URI.
-    #  When true is given or the option itself is not specified,
-    #  environment variable `scheme_proxy' is examined.
-    #  `scheme' is replaced by `http', `https' or `ftp'.
-    #  When false or nil is given, the environment variables are ignored and
-    #  connection will be made to a server directly.
-    #
-    # [:http_basic_authentication]
-    #  Synopsis:
-    #    :http_basic_authentication=>[user, password]
-    #
-    #  If :http_basic_authentication is specified,
-    #  the value should be an array which contains 2 strings:
-    #  username and password.
-    #  It is used for HTTP Basic authentication defined by RFC 2617.
-    #
-    # [:content_length_proc]
-    #  Synopsis:
-    #    :content_length_proc => lambda {|content_length| ... }
-    # 
-    #  If :content_length_proc option is specified, the option value procedure
-    #  is called before actual transfer is started.
-    #  It takes one argument which is expected content length in bytes.
-    # 
-    #  If two or more transfer is done by HTTP redirection, the procedure
-    #  is called only one for a last transfer.
-    # 
-    #  When expected content length is unknown, the procedure is called with
-    #  nil.
-    #  It is happen when HTTP response has no Content-Length header.
-    #
-    # [:progress_proc]
-    #  Synopsis:
-    #    :progress_proc => lambda {|size| ...}
-    #
-    #  If :progress_proc option is specified, the proc is called with one
-    #  argument each time when `open' gets content fragment from network.
-    #  The argument `size' `size' is a accumulated transfered size in bytes.
-    #
-    #  If two or more transfer is done by HTTP redirection, the procedure
-    #  is called only one for a last transfer.
-    #
-    #  :progress_proc and :content_length_proc are intended to be used for
-    #  progress bar.
-    #  For example, it can be implemented as follows using Ruby/ProgressBar.
-    #
-    #    pbar = nil
-    #    open("http://...",
-    #      :content_length_proc => lambda {|t|
-    #        if t && 0 < t
-    #          pbar = ProgressBar.new("...", t)
-    #          pbar.file_transfer_mode
-    #        end
-    #      },
-    #      :progress_proc => lambda {|s|
-    #        pbar.set s if pbar
-    #      }) {|f| ... }
-    #
-    # OpenURI::OpenRead#open returns an IO like object if block is not given.
-    # Otherwise it yields the IO object and return the value of the block.
-    # The IO object is extended with OpenURI::Meta.
-    def open(*rest, &block)
-      OpenURI.open_uri(self, *rest, &block)
-    end
-
-    # OpenURI::OpenRead#read([options]) reads a content referenced by self and
-    # returns the content as string.
-    # The string is extended with OpenURI::Meta.
-    # The argument `options' is same as OpenURI::OpenRead#open.
-    def read(options={})
-      self.open(options) {|f|
-        str = f.read
-        Meta.init str, f
-        str
-      }
-    end
-  end
-end
-
-module URI
-  class Generic
-    # returns a proxy URI.
-    # The proxy URI is obtained from environment variables such as http_proxy,
-    # ftp_proxy, no_proxy, etc.
-    # If there is no proper proxy, nil is returned.
-    #
-    # Note that capitalized variables (HTTP_PROXY, FTP_PROXY, NO_PROXY, etc.)
-    # are examined too.
-    #
-    # But http_proxy and HTTP_PROXY is treated specially under CGI environment.
-    # It's because HTTP_PROXY may be set by Proxy: header.
-    # So HTTP_PROXY is not used.
-    # http_proxy is not used too if the variable is case insensitive.
-    # CGI_HTTP_PROXY can be used instead.
-    def find_proxy
-      name = self.scheme.downcase + '_proxy'
-      proxy_uri = nil
-      if name == 'http_proxy' && ENV.include?('REQUEST_METHOD') # CGI?
-        # HTTP_PROXY conflicts with *_proxy for proxy settings and
-        # HTTP_* for header information in CGI.
-        # So it should be careful to use it.
-        pairs = ENV.reject {|k, v| /\Ahttp_proxy\z/i !~ k }
-        case pairs.length
-        when 0 # no proxy setting anyway.
-          proxy_uri = nil
-        when 1
-          k, v = pairs.shift
-          if k == 'http_proxy' && ENV[k.upcase] == nil
-            # http_proxy is safe to use because ENV is case sensitive.
-            proxy_uri = ENV[name]
-          else
-            proxy_uri = nil
-          end
-        else # http_proxy is safe to use because ENV is case sensitive.
-          proxy_uri = ENV[name]
-        end
-        if !proxy_uri
-          # Use CGI_HTTP_PROXY.  cf. libwww-perl.
-          proxy_uri = ENV["CGI_#{name.upcase}"]
-        end
-      elsif name == 'http_proxy'
-        unless proxy_uri = ENV[name]
-          if proxy_uri = ENV[name.upcase]
-            warn 'The environment variable HTTP_PROXY is discouraged.  Use http_proxy.'
-          end
-        end
-      else
-        proxy_uri = ENV[name] || ENV[name.upcase]
-      end
-
-      if proxy_uri && self.host
-        require 'socket'
-        begin
-          addr = IPSocket.getaddress(self.host)
-          proxy_uri = nil if /\A127\.|\A::1\z/ =~ addr
-        rescue SocketError
-        end
-      end
-
-      if proxy_uri
-        proxy_uri = URI.parse(proxy_uri)
-        name = 'no_proxy'
-        if no_proxy = ENV[name] || ENV[name.upcase]
-          no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port|
-            if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host &&
-               (!port || self.port == port.to_i)
-              proxy_uri = nil
-              break
-            end
-          }
-        end
-        proxy_uri
-      else
-        nil
-      end
-    end
-  end
-
-  class HTTP
-    def buffer_open(buf, proxy, options) # :nodoc:
-      OpenURI.open_http(buf, self, proxy, options)
-    end
-
-    include OpenURI::OpenRead
-  end
-
-  class FTP
-    def buffer_open(buf, proxy, options) # :nodoc:
-      if proxy
-        OpenURI.open_http(buf, self, proxy, options)
-        return
-      end
-      require 'net/ftp'
-
-      directories = self.path.split(%r{/}, -1)
-      directories.shift if directories[0] == '' # strip a field before leading slash
-      directories.each {|d|
-        d.gsub!(/%([0-9A-Fa-f][0-9A-Fa-f])/) { [$1].pack("H2") }
-      }
-      unless filename = directories.pop
-        raise ArgumentError, "no filename: #{self.inspect}"
-      end
-      directories.each {|d|
-        if /[\r\n]/ =~ d
-          raise ArgumentError, "invalid directory: #{d.inspect}"
-        end
-      }
-      if /[\r\n]/ =~ filename
-        raise ArgumentError, "invalid filename: #{filename.inspect}"
-      end
-      typecode = self.typecode
-      if typecode && /\A[aid]\z/ !~ typecode
-        raise ArgumentError, "invalid typecode: #{typecode.inspect}"
-      end
-
-      # The access sequence is defined by RFC 1738
-      ftp = Net::FTP.open(self.host)
-      # todo: extract user/passwd from .netrc.
-      user = 'anonymous'
-      passwd = nil
-      user, passwd = self.userinfo.split(/:/) if self.userinfo
-      ftp.login(user, passwd)
-      directories.each {|cwd|
-        ftp.voidcmd("CWD #{cwd}")
-      }
-      if typecode
-        # xxx: typecode D is not handled.
-        ftp.voidcmd("TYPE #{typecode.upcase}")
-      end
-      if options[:content_length_proc]
-        options[:content_length_proc].call(ftp.size(filename))
-      end
-      ftp.retrbinary("RETR #{filename}", 4096) { |str|
-        buf << str
-        options[:progress_proc].call(buf.size) if options[:progress_proc]
-      }
-      ftp.close
-      buf.io.rewind
-    end
-
-    include OpenURI::OpenRead
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open3.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open3.rb
deleted file mode 100644
index c4dacc9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/open3.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# = open3.rb: Popen, but with stderr, too
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Konrad Meyer
-#
-# Open3 gives you access to stdin, stdout, and stderr when running other
-# programs.
-#
-
-#
-# Open3 grants you access to stdin, stdout, and stderr when running another
-# program. Example:
-#
-#   require "open3"
-#   include Open3
-#   
-#   stdin, stdout, stderr = popen3('nroff -man')
-#
-# Open3.popen3 can also take a block which will receive stdin, stdout and
-# stderr as parameters.  This ensures stdin, stdout and stderr are closed
-# once the block exits. Example:
-#
-#   require "open3"
-#
-#   Open3.popen3('nroff -man') { |stdin, stdout, stderr| ... }
-#
-
-module Open3
-  # 
-  # Open stdin, stdout, and stderr streams and start external executable.
-  # Non-block form:
-  #   
-  #   require 'open3'
-  #
-  #   [stdin, stdout, stderr] = Open3.popen3(cmd)
-  #
-  # Block form:
-  #
-  #   require 'open3'
-  #
-  #   Open3.popen3(cmd) { |stdin, stdout, stderr| ... }
-  #
-  # The parameter +cmd+ is passed directly to Kernel#exec.
-  #
-  def popen3(*cmd)
-    pw = IO::pipe   # pipe[0] for read, pipe[1] for write
-    pr = IO::pipe
-    pe = IO::pipe
-
-    pid = fork{
-      # child
-      fork{
-	# grandchild
-	pw[1].close
-	STDIN.reopen(pw[0])
-	pw[0].close
-
-	pr[0].close
-	STDOUT.reopen(pr[1])
-	pr[1].close
-
-	pe[0].close
-	STDERR.reopen(pe[1])
-	pe[1].close
-
-	exec(*cmd)
-      }
-      exit!(0)
-    }
-
-    pw[0].close
-    pr[1].close
-    pe[1].close
-    Process.waitpid(pid)
-    pi = [pw[1], pr[0], pe[0]]
-    pw[1].sync = true
-    if defined? yield
-      begin
-	return yield(*pi)
-      ensure
-	pi.each{|p| p.close unless p.closed?}
-      end
-    end
-    pi
-  end
-  module_function :popen3
-end
-
-if $0 == __FILE__
-  a = Open3.popen3("nroff -man")
-  Thread.start do
-    while line = gets
-      a[0].print line
-    end
-    a[0].close
-  end
-  while line = a[1].gets
-    print ":", line
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl.rb
deleted file mode 100644
index 411c0db..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-=begin
-= $RCSfile$ -- Loader for all OpenSSL C-space and Ruby-space definitions
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: openssl.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-require 'openssl.so'
-
-require 'openssl/bn'
-require 'openssl/cipher'
-require 'openssl/digest'
-require 'openssl/ssl'
-require 'openssl/x509'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/bn.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/bn.rb
deleted file mode 100644
index cf44a09..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/bn.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for BN
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: bn.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  class BN
-    include Comparable
-  end # BN
-end # OpenSSL
-
-##
-# Add double dispatch to Integer
-#
-class Integer
-  def to_bn
-    OpenSSL::BN::new(self)
-  end
-end # Integer
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/buffering.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/buffering.rb
deleted file mode 100644
index 2c66a75..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/buffering.rb
+++ /dev/null
@@ -1,239 +0,0 @@
-=begin
-= $RCSfile$ -- Buffering mix-in module.
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: buffering.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-module Buffering
-  include Enumerable
-  attr_accessor :sync
-  BLOCK_SIZE = 1024*16
-
-  def initialize(*args)
-    @eof = false
-    @rbuffer = ""
-    @sync = @io.sync
-  end
-
-  #
-  # for reading.
-  #
-  private
-
-  def fill_rbuff
-    begin
-      @rbuffer << self.sysread(BLOCK_SIZE)
-    rescue Errno::EAGAIN
-      retry
-    rescue EOFError
-      @eof = true
-    end
-  end
-
-  def consume_rbuff(size=nil)
-    if @rbuffer.empty?
-      nil
-    else
-      size = @rbuffer.size unless size
-      ret = @rbuffer[0, size]
-      @rbuffer[0, size] = ""
-      ret
-    end
-  end
-
-  public
-
-  def read(size=nil, buf=nil)
-    if size == 0
-      if buf
-        buf.clear
-      else
-        buf = ""
-      end
-      return @eof ? nil : buf
-    end
-    until @eof
-      break if size && size <= @rbuffer.size
-      fill_rbuff
-    end
-    ret = consume_rbuff(size) || ""
-    if buf
-      buf.replace(ret)
-      ret = buf
-    end
-    (size && ret.empty?) ? nil : ret
-  end
-
-  def readpartial(maxlen, buf=nil)
-    if maxlen == 0
-      if buf
-        buf.clear
-      else
-        buf = ""
-      end
-      return @eof ? nil : buf
-    end
-    if @rbuffer.empty?
-      begin
-        return sysread(maxlen, buf)
-      rescue Errno::EAGAIN
-        retry
-      end
-    end
-    ret = consume_rbuff(maxlen)
-    if buf
-      buf.replace(ret)
-      ret = buf
-    end
-    raise EOFError if ret.empty?
-    ret
-  end
-
-  def gets(eol=$/)
-    idx = @rbuffer.index(eol)
-    until @eof
-      break if idx
-      fill_rbuff
-      idx = @rbuffer.index(eol)
-    end
-    if eol.is_a?(Regexp)
-      size = idx ? idx+$&.size : nil
-    else
-      size = idx ? idx+eol.size : nil
-    end
-    consume_rbuff(size)
-  end
-
-  def each(eol=$/)
-    while line = self.gets(eol)
-      yield line
-    end
-  end
-  alias each_line each
-
-  def readlines(eol=$/)
-    ary = []
-    while line = self.gets(eol)
-      ary << line
-    end
-    ary
-  end
-
-  def readline(eol=$/)
-    raise EOFError if eof?
-    gets(eol)
-  end
-
-  def getc
-    c = read(1)
-    c ? c[0] : nil
-  end
-
-  def each_byte
-    while c = getc
-      yield(c)
-    end
-  end
-
-  def readchar
-    raise EOFError if eof?
-    getc
-  end
-
-  def ungetc(c)
-    @rbuffer[0,0] = c.chr
-  end
-
-  def eof?
-    fill_rbuff if !@eof && @rbuffer.empty?
-    @eof && @rbuffer.empty?
-  end
-  alias eof eof?
-
-  #
-  # for writing.
-  #
-  private
-
-  def do_write(s)
-    @wbuffer = "" unless defined? @wbuffer
-    @wbuffer << s
-    @sync ||= false
-    if @sync or @wbuffer.size > BLOCK_SIZE or idx = @wbuffer.rindex($/)
-      remain = idx ? idx + $/.size : @wbuffer.length
-      nwritten = 0
-      while remain > 0
-        str = @wbuffer[nwritten,remain]
-        begin
-          nwrote = syswrite(str)
-        rescue Errno::EAGAIN
-          retry
-        end
-        remain -= nwrote
-        nwritten += nwrote
-      end
-      @wbuffer[0,nwritten] = ""
-    end
-  end
-
-  public
-
-  def write(s)
-    do_write(s)
-    s.length
-  end
-
-  def << (s)
-    do_write(s)
-    self
-  end
-
-  def puts(*args)
-    s = ""
-    if args.empty?
-      s << "\n"
-    end
-    args.each{|arg|
-      s << arg.to_s
-      if $/ && /\n\z/ !~ s
-        s << "\n"
-      end
-    }
-    do_write(s)
-    nil
-  end
-
-  def print(*args)
-    s = ""
-    args.each{ |arg| s << arg.to_s }
-    do_write(s)
-    nil
-  end
-
-  def printf(s, *args)
-    do_write(s % args)
-    nil
-  end
-
-  def flush
-    osync = @sync
-    @sync = true
-    do_write ""
-    @sync = osync
-  end
-
-  def close
-    flush rescue nil
-    sysclose
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/cipher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/cipher.rb
deleted file mode 100644
index fb924e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/cipher.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space predefined Cipher subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: cipher.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  module Cipher
-    %w(AES CAST5 BF DES IDEA RC2 RC4 RC5).each{|name|
-      klass = Class.new(Cipher){
-        define_method(:initialize){|*args|
-          cipher_name = args.inject(name){|n, arg| "#{n}-#{arg}" }
-          super(cipher_name)
-        }
-      }
-      const_set(name, klass)
-    }
-
-    %w(128 192 256).each{|keylen|
-      klass = Class.new(Cipher){
-        define_method(:initialize){|mode|
-          mode ||= "CBC"
-          cipher_name = "AES-#{keylen}-#{mode}"
-          super(cipher_name)
-        }
-      }
-      const_set("AES#{keylen}", klass)
-    }
-
-    class Cipher
-      def random_key
-        str = OpenSSL::Random.random_bytes(self.key_len)
-        self.key = str
-        return str
-      end
-
-      def random_iv
-        str = OpenSSL::Random.random_bytes(self.iv_len)
-        self.iv = str
-        return str
-      end
-    end
-  end # Cipher
-end # OpenSSL
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/digest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/digest.rb
deleted file mode 100644
index 0d7e751..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/digest.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space predefined Digest subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: digest.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-##
-# Should we care what if somebody require this file directly?
-#require 'openssl'
-
-module OpenSSL
-  module Digest
-
-    alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1)
-    if OPENSSL_VERSION_NUMBER > 0x00908000
-      alg += %w(SHA224 SHA256 SHA384 SHA512)
-    end
-
-    alg.each{|name|
-      klass = Class.new(Digest){
-        define_method(:initialize){|*data|
-          if data.length > 1
-            raise ArgumentError,
-              "wrong number of arguments (#{data.length} for 1)"
-          end
-          super(name, data.first)
-        }
-      }
-      singleton = (class <<klass; self; end)
-      singleton.class_eval{
-        define_method(:digest){|data| Digest.digest(name, data) }
-        define_method(:hexdigest){|data| Digest.hexdigest(name, data) }
-      }
-      const_set(name, klass)
-    }
-
-  end # Digest
-end # OpenSSL
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/ssl.rb
deleted file mode 100644
index bf5d2f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/ssl.rb
+++ /dev/null
@@ -1,135 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for SSL
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo at notwork.org>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: ssl.rb 13504 2007-09-24 08:12:24Z shyouhei $
-=end
-
-require "openssl"
-require "openssl/buffering"
-require "fcntl"
-
-module OpenSSL
-  module SSL
-    module SocketForwarder
-      def addr
-        to_io.addr
-      end
-
-      def peeraddr
-        to_io.peeraddr
-      end
-
-      def setsockopt(level, optname, optval)
-        to_io.setsockopt(level, optname, optval)
-      end
-
-      def getsockopt(level, optname)
-        to_io.getsockopt(level, optname)
-      end
-
-      def fcntl(*args)
-        to_io.fcntl(*args)
-      end
-
-      def closed?
-        to_io.closed?
-      end
-
-      def do_not_reverse_lookup=(flag)
-        to_io.do_not_reverse_lookup = flag
-      end
-    end
-
-    module Nonblock
-      def initialize(*args)
-        flag = File::NONBLOCK
-        flag |= @io.fcntl(Fcntl::F_GETFL) if defined?(Fcntl::F_GETFL)
-        @io.fcntl(Fcntl::F_SETFL, flag)
-        super
-      end
-    end
-
-    class SSLSocket
-      include Buffering
-      include SocketForwarder
-      include Nonblock
-
-      def post_connection_check(hostname)
-        check_common_name = true
-        cert = peer_cert
-        cert.extensions.each{|ext|
-          next if ext.oid != "subjectAltName"
-          ext.value.split(/,\s+/).each{|general_name|
-            if /\ADNS:(.*)/ =~ general_name
-              check_common_name = false
-              reg = Regexp.escape($1).gsub(/\\\*/, "[^.]+")
-              return true if /\A#{reg}\z/i =~ hostname
-            elsif /\AIP Address:(.*)/ =~ general_name
-              check_common_name = false
-              return true if $1 == hostname
-            end
-          }
-        }
-        if check_common_name
-          cert.subject.to_a.each{|oid, value|
-            if oid == "CN"
-              reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+")
-              return true if /\A#{reg}\z/i =~ hostname
-            end
-          }
-        end
-        raise SSLError, "hostname was not match with the server certificate"
-      end
-    end
-
-    class SSLServer
-      include SocketForwarder
-      attr_accessor :start_immediately
-
-      def initialize(svr, ctx)
-        @svr = svr
-        @ctx = ctx
-        unless ctx.session_id_context
-          session_id = OpenSSL::Digest::MD5.hexdigest($0)
-          @ctx.session_id_context = session_id
-        end
-        @start_immediately = true
-      end
-
-      def to_io
-        @svr
-      end
-
-      def listen(backlog=5)
-        @svr.listen(backlog)
-      end
-
-      def accept
-        sock = @svr.accept
-        begin
-          ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
-          ssl.sync_close = true
-          ssl.accept if @start_immediately
-          ssl
-        rescue SSLError => ex
-          sock.close
-          raise ex
-        end
-      end
-
-      def close
-        @svr.close
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/x509.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/x509.rb
deleted file mode 100644
index 99f239c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/openssl/x509.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for X509 and subclasses
-
-= Info
-  'OpenSSL for Ruby 2' project
-  Copyright (C) 2002  Michal Rokos <m.rokos at sh.cvut.cz>
-  All rights reserved.
-
-= Licence
-  This program is licenced under the same licence as Ruby.
-  (See the file 'LICENCE'.)
-
-= Version
-  $Id: x509.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
-
-require "openssl"
-
-module OpenSSL
-  module X509
-    class ExtensionFactory
-      def create_extension(*arg)
-        if arg.size > 1
-          create_ext(*arg)
-        else
-          send("create_ext_from_"+arg[0].class.name.downcase, arg[0])
-        end
-      end
-
-      def create_ext_from_array(ary)
-        raise ExtensionError, "unexpected array form" if ary.size > 3 
-        create_ext(ary[0], ary[1], ary[2])
-      end
-
-      def create_ext_from_string(str) # "oid = critical, value"
-        oid, value = str.split(/=/, 2)
-        oid.strip!
-        value.strip!
-        create_ext(oid, value)
-      end
-      
-      def create_ext_from_hash(hash)
-        create_ext(hash["oid"], hash["value"], hash["critical"])
-      end
-    end
-    
-    class Extension
-      def to_s # "oid = critical, value"
-        str = self.oid
-        str << " = "
-        str << "critical, " if self.critical?
-        str << self.value.gsub(/\n/, ", ")
-      end
-        
-      def to_h # {"oid"=>sn|ln, "value"=>value, "critical"=>true|false}
-        {"oid"=>self.oid,"value"=>self.value,"critical"=>self.critical?}
-      end
-
-      def to_a
-        [ self.oid, self.value, self.critical? ]
-      end
-    end
-
-    class Name
-      module RFC2253DN
-        Special = ',=+<>#;'
-        HexChar = /[0-9a-fA-F]/
-        HexPair = /#{HexChar}#{HexChar}/
-        HexString = /#{HexPair}+/
-        Pair = /\\(?:[#{Special}]|\\|"|#{HexPair})/
-        StringChar = /[^#{Special}\\"]/
-        QuoteChar = /[^\\"]/
-        AttributeType = /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/
-        AttributeValue = /
-          (?!["#])((?:#{StringChar}|#{Pair})*)|
-          \#(#{HexString})|
-          "((?:#{QuoteChar}|#{Pair})*)"
-        /x
-        TypeAndValue = /\A(#{AttributeType})=#{AttributeValue}/
-
-        module_function
-
-        def expand_pair(str)
-          return nil unless str
-          return str.gsub(Pair){|pair|
-            case pair.size
-            when 2 then pair[1,1]
-            when 3 then Integer("0x#{pair[1,2]}").chr
-            else raise OpenSSL::X509::NameError, "invalid pair: #{str}"
-            end
-          }
-        end
-
-        def expand_hexstring(str)
-          return nil unless str
-          der = str.gsub(HexPair){|hex| Integer("0x#{hex}").chr }
-          a1 = OpenSSL::ASN1.decode(der)
-          return a1.value, a1.tag
-        end
-
-        def expand_value(str1, str2, str3)
-          value = expand_pair(str1)
-          value, tag = expand_hexstring(str2) unless value
-          value = expand_pair(str3) unless value
-          return value, tag
-        end
-
-        def scan(dn)
-          str = dn
-          ary = []
-          while true
-            if md = TypeAndValue.match(str)
-              matched = md.to_s
-              remain = md.post_match
-              type = md[1]
-              value, tag = expand_value(md[2], md[3], md[4]) rescue nil
-              if value
-                type_and_value = [type, value]
-                type_and_value.push(tag) if tag
-                ary.unshift(type_and_value)
-                if remain.length > 2 && remain[0] == ?,
-                  str = remain[1..-1]
-                  next
-                elsif remain.length > 2 && remain[0] == ?+
-                  raise OpenSSL::X509::NameError,
-                    "multi-valued RDN is not supported: #{dn}"
-                elsif remain.empty?
-                  break
-                end
-              end
-            end
-            msg_dn = dn[0, dn.length - str.length] + " =>" + str
-            raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}"
-          end
-          return ary
-        end
-      end
-
-      class <<self
-        def parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE)
-          ary = OpenSSL::X509::Name::RFC2253DN.scan(str)
-          self.new(ary, template)
-        end
-
-        def parse_openssl(str, template=OBJECT_TYPE_TEMPLATE)
-          ary = str.scan(/\s*([^\/,]+)\s*/).collect{|i| i[0].split("=", 2) }
-          self.new(ary, template)
-        end
-
-        alias parse parse_openssl
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse.rb
deleted file mode 100644
index 36b2ca0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse.rb
+++ /dev/null
@@ -1,1789 +0,0 @@
-#
-# optparse.rb - command-line option analysis with the OptionParser class.
-# 
-# Author:: Nobu Nakada
-# Documentation:: Nobu Nakada and Gavin Sinclair.
-#
-# See OptionParser for documentation. 
-#
-
-
-# == Developer Documentation (not for RDoc output) 
-# 
-# === Class tree
-#
-# - OptionParser:: front end
-# - OptionParser::Switch:: each switches
-# - OptionParser::List:: options list
-# - OptionParser::ParseError:: errors on parsing
-#   - OptionParser::AmbiguousOption
-#   - OptionParser::NeedlessArgument
-#   - OptionParser::MissingArgument
-#   - OptionParser::InvalidOption
-#   - OptionParser::InvalidArgument
-#     - OptionParser::AmbiguousArgument
-#
-# === Object relationship diagram
-#
-#   +--------------+
-#   | OptionParser |<>-----+
-#   +--------------+       |                      +--------+
-#                          |                    ,-| Switch |
-#        on_head -------->+---------------+    /  +--------+
-#        accept/reject -->| List          |<|>-
-#                         |               |<|>-  +----------+
-#        on ------------->+---------------+    `-| argument |
-#                           :           :        |  class   |
-#                         +---------------+      |==========|
-#        on_tail -------->|               |      |pattern   |
-#                         +---------------+      |----------|
-#   OptionParser.accept ->| DefaultList   |      |converter |
-#                reject   |(shared between|      +----------+
-#                         | all instances)|
-#                         +---------------+
-#
-# == OptionParser
-#
-# === Introduction
-#
-# OptionParser is a class for command-line option analysis.  It is much more
-# advanced, yet also easier to use, than GetoptLong, and is a more Ruby-oriented
-# solution.
-#
-# === Features
-# 
-# 1. The argument specification and the code to handle it are written in the
-#    same place.
-# 2. It can output an option summary; you don't need to maintain this string
-#    separately.
-# 3. Optional and mandatory arguments are specified very gracefully.
-# 4. Arguments can be automatically converted to a specified class.
-# 5. Arguments can be restricted to a certain set.
-#
-# All of these features are demonstrated in the examples below.
-#
-# === Minimal example
-#
-#   require 'optparse'
-#
-#   options = {}
-#   OptionParser.new do |opts|
-#     opts.banner = "Usage: example.rb [options]"
-#
-#     opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
-#       options[:verbose] = v
-#     end
-#   end.parse!
-#
-#   p options
-#   p ARGV
-#
-# === Complete example
-#
-# The following example is a complete Ruby program.  You can run it and see the
-# effect of specifying various options.  This is probably the best way to learn
-# the features of +optparse+.
-#
-#   require 'optparse'
-#   require 'optparse/time'
-#   require 'ostruct'
-#   require 'pp'
-#   
-#   class OptparseExample
-#   
-#     CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary]
-#     CODE_ALIASES = { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
-#   
-#     #
-#     # Return a structure describing the options.
-#     #
-#     def self.parse(args)
-#       # The options specified on the command line will be collected in *options*.
-#       # We set default values here.
-#       options = OpenStruct.new
-#       options.library = []
-#       options.inplace = false
-#       options.encoding = "utf8"
-#       options.transfer_type = :auto
-#       options.verbose = false
-#       
-#       opts = OptionParser.new do |opts|
-#         opts.banner = "Usage: example.rb [options]"
-#       
-#         opts.separator ""
-#         opts.separator "Specific options:"
-#       
-#         # Mandatory argument.
-#         opts.on("-r", "--require LIBRARY",
-#                 "Require the LIBRARY before executing your script") do |lib|
-#           options.library << lib
-#         end
-#       
-#         # Optional argument; multi-line description.
-#         opts.on("-i", "--inplace [EXTENSION]",
-#                 "Edit ARGV files in place",
-#                 "  (make backup if EXTENSION supplied)") do |ext|
-#           options.inplace = true
-#           options.extension = ext || ''
-#           options.extension.sub!(/\A\.?(?=.)/, ".")  # Ensure extension begins with dot.
-#         end
-#       
-#         # Cast 'delay' argument to a Float.
-#         opts.on("--delay N", Float, "Delay N seconds before executing") do |n|
-#           options.delay = n
-#         end
-#       
-#         # Cast 'time' argument to a Time object.
-#         opts.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time|
-#           options.time = time
-#         end
-#       
-#         # Cast to octal integer.
-#         opts.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger,
-#                 "Specify record separator (default \\0)") do |rs|
-#           options.record_separator = rs
-#         end
-#       
-#         # List of arguments.
-#         opts.on("--list x,y,z", Array, "Example 'list' of arguments") do |list|
-#           options.list = list
-#         end
-#       
-#         # Keyword completion.  We are specifying a specific set of arguments (CODES
-#         # and CODE_ALIASES - notice the latter is a Hash), and the user may provide
-#         # the shortest unambiguous text.
-#         code_list = (CODE_ALIASES.keys + CODES).join(',')
-#         opts.on("--code CODE", CODES, CODE_ALIASES, "Select encoding",
-#                 "  (#{code_list})") do |encoding|
-#           options.encoding = encoding
-#         end
-#       
-#         # Optional argument with keyword completion.
-#         opts.on("--type [TYPE]", [:text, :binary, :auto],
-#                 "Select transfer type (text, binary, auto)") do |t|
-#           options.transfer_type = t
-#         end
-#       
-#         # Boolean switch.
-#         opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
-#           options.verbose = v
-#         end
-#       
-#         opts.separator ""
-#         opts.separator "Common options:"
-#       
-#         # No argument, shows at tail.  This will print an options summary.
-#         # Try it and see!
-#         opts.on_tail("-h", "--help", "Show this message") do
-#           puts opts
-#           exit
-#         end
-#       
-#         # Another typical switch to print the version.
-#         opts.on_tail("--version", "Show version") do
-#           puts OptionParser::Version.join('.')
-#           exit
-#         end
-#       end
-#       
-#       opts.parse!(args)
-#       options
-#     end  # parse()
-#   
-#   end  # class OptparseExample
-#   
-#   options = OptparseExample.parse(ARGV)
-#   pp options
-#
-# === Further documentation
-#
-# The above examples should be enough to learn how to use this class.  If you
-# have any questions, email me (gsinclair at soyabean.com.au) and I will update
-# this document.
-#
-class OptionParser
-  # :stopdoc:
-  RCSID = %w$Id: optparse.rb 18108 2008-07-17 12:30:12Z shyouhei $[1..-1].each {|s| s.freeze}.freeze
-  Version = (RCSID[1].split('.').collect {|s| s.to_i}.extend(Comparable).freeze if RCSID[1])
-  LastModified = (Time.gm(*RCSID[2, 2].join('-').scan(/\d+/).collect {|s| s.to_i}) if RCSID[2])
-  Release = RCSID[2]
-
-  NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
-  RequiredArgument = [REQUIRED_ARGUMENT = :REQUIRED, true].freeze
-  OptionalArgument = [OPTIONAL_ARGUMENT = :OPTIONAL, false].freeze
-  # :startdoc:
-
-  #
-  # Keyword completion module.  This allows partial arguments to be specified
-  # and resolved against a list of acceptable values.
-  #
-  module Completion
-    def complete(key, icase = false, pat = nil)
-      pat ||= Regexp.new('\A' + Regexp.quote(key).gsub(/\w+\b/, '\&\w*'),
-                         icase)
-      canon, sw, k, v, cn = nil
-      candidates = []
-      each do |k, *v|
-        (if Regexp === k
-           kn = nil
-           k === key
-         else
-           kn = defined?(k.id2name) ? k.id2name : k
-           pat === kn
-         end) or next
-        v << k if v.empty?
-        candidates << [k, v, kn]
-      end
-      candidates = candidates.sort_by {|k, v, kn| kn.size}
-      if candidates.size == 1
-        canon, sw, * = candidates[0]
-      elsif candidates.size > 1
-        canon, sw, cn = candidates.shift
-        candidates.each do |k, v, kn|
-          next if sw == v
-          if String === cn and String === kn
-            if cn.rindex(kn, 0)
-              canon, sw, cn = k, v, kn
-              next
-            elsif kn.rindex(cn, 0)
-              next
-            end
-          end
-          throw :ambiguous, key
-        end
-      end
-      if canon
-        block_given? or return key, *sw
-        yield(key, *sw)
-      end
-    end
-
-    def convert(opt = nil, val = nil, *)
-      val
-    end
-  end
-
-
-  #
-  # Map from option/keyword string to object with completion.
-  #
-  class OptionMap < Hash
-    include Completion
-  end
-
-
-  #
-  # Individual switch class.  Not important to the user.
-  #
-  # Defined within Switch are several Switch-derived classes: NoArgument,
-  # RequiredArgument, etc. 
-  #
-  class Switch
-    attr_reader :pattern, :conv, :short, :long, :arg, :desc, :block
-
-    #
-    # Guesses argument style from +arg+.  Returns corresponding
-    # OptionParser::Switch class (OptionalArgument, etc.).
-    #
-    def self.guess(arg)
-      case arg
-      when ""
-        t = self
-      when /\A=?\[/
-        t = Switch::OptionalArgument
-      when /\A\s+\[/
-        t = Switch::PlacedArgument
-      else
-        t = Switch::RequiredArgument
-      end
-      self >= t or incompatible_argument_styles(arg, t)
-      t
-    end
-
-    def self.incompatible_argument_styles(arg, t)
-      raise ArgumentError, "#{arg}: incompatible argument styles\n  #{self}, #{t}"
-    end
-
-    def self.pattern
-      NilClass
-    end
-
-    def initialize(pattern = nil, conv = nil,
-                   short = nil, long = nil, arg = nil,
-                   desc = ([] if short or long), block = Proc.new)
-      raise if Array === pattern
-      @pattern, @conv, @short, @long, @arg, @desc, @block =
-        pattern, conv, short, long, arg, desc, block
-    end
-
-    #
-    # Parses +arg+ and returns rest of +arg+ and matched portion to the
-    # argument pattern. Yields when the pattern doesn't match substring.
-    #
-    def parse_arg(arg)
-      pattern or return nil, arg
-      unless m = pattern.match(arg)
-        yield(InvalidArgument, arg)
-        return arg, nil
-      end
-      if String === m
-        m = [s = m]
-      else
-        m = m.to_a
-        s = m[0]
-        return nil, m unless String === s
-      end
-      raise InvalidArgument, arg unless arg.rindex(s, 0)
-      return nil, m if s.length == arg.length
-      yield(InvalidArgument, arg) # didn't match whole arg
-      return arg[s.length..-1], m
-    end
-    private :parse_arg
-
-    #
-    # Parses argument, converts and returns +arg+, +block+ and result of
-    # conversion. Yields at semi-error condition instead of raising an
-    # exception.
-    #
-    def conv_arg(arg, val = nil)
-      if conv
-        val = conv.call(*val)
-      else
-        val = proc {|val| val}.call(*val)
-      end
-      return arg, block, val
-    end
-    private :conv_arg
-
-    #
-    # Produces the summary text. Each line of the summary is yielded to the
-    # block (without newline).
-    #
-    # +sdone+::  Already summarized short style options keyed hash.
-    # +ldone+::  Already summarized long style options keyed hash.
-    # +width+::  Width of left side (option part). In other words, the right
-    #            side (description part) starts after +width+ columns.
-    # +max+::    Maximum width of left side -> the options are filled within
-    #            +max+ columns.
-    # +indent+:: Prefix string indents all summarized lines.
-    #
-    def summarize(sdone = [], ldone = [], width = 1, max = width - 1, indent = "")
-      sopts, lopts, s = [], [], nil
-      @short.each {|s| sdone.fetch(s) {sopts << s}; sdone[s] = true} if @short
-      @long.each {|s| ldone.fetch(s) {lopts << s}; ldone[s] = true} if @long
-      return if sopts.empty? and lopts.empty? # completely hidden
-
-      left = [sopts.join(', ')]
-      right = desc.dup
-
-      while s = lopts.shift
-        l = left[-1].length + s.length
-        l += arg.length if left.size == 1 && arg
-        l < max or sopts.empty? or left << ''
-        left[-1] << if left[-1].empty? then ' ' * 4 else ', ' end << s
-      end
-
-      left[0] << arg if arg
-      mlen = left.collect {|s| s.length}.max.to_i
-      while mlen > width and l = left.shift
-        mlen = left.collect {|s| s.length}.max.to_i if l.length == mlen
-        yield(indent + l)
-      end
-
-      while begin l = left.shift; r = right.shift; l or r end
-        l = l.to_s.ljust(width) + ' ' + r if r and !r.empty?
-        yield(indent + l)
-      end
-
-      self
-    end
-
-    def add_banner(to)  # :nodoc:
-      unless @short or @long
-        s = desc.join
-        to << " [" + s + "]..." unless s.empty?
-      end
-      to
-    end
-
-    def match_nonswitch?(str) # :nodoc:
-      @pattern =~ str unless @short or @long
-    end
-
-    #
-    # Main name of the switch.
-    #
-    def switch_name
-      (long.first || short.first).sub(/\A-+(?:\[no-\])?/, '')
-    end
-
-    #
-    # Switch that takes no arguments.
-    #
-    class NoArgument < self
-
-      #
-      # Raises an exception if any arguments given.
-      #
-      def parse(arg, argv)
-        yield(NeedlessArgument, arg) if arg
-        conv_arg(arg)
-      end
-
-      def self.incompatible_argument_styles(*)
-      end
-
-      def self.pattern
-        Object
-      end
-    end
-
-    #
-    # Switch that takes an argument.
-    #
-    class RequiredArgument < self
-
-      #
-      # Raises an exception if argument is not present.
-      #
-      def parse(arg, argv)
-        unless arg
-          raise MissingArgument if argv.empty?
-          arg = argv.shift
-        end
-        conv_arg(*parse_arg(arg) {|*exc| raise(*exc)})
-      end
-    end
-
-    #
-    # Switch that can omit argument.
-    #
-    class OptionalArgument < self
-
-      #
-      # Parses argument if given, or uses default value.
-      #
-      def parse(arg, argv, &error)
-        if arg
-          conv_arg(*parse_arg(arg, &error))
-        else
-          conv_arg(arg)
-        end
-      end
-    end
-
-    #
-    # Switch that takes an argument, which does not begin with '-'.
-    #
-    class PlacedArgument < self
-
-      #
-      # Returns nil if argument is not present or begins with '-'.
-      #
-      def parse(arg, argv, &error)
-        if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
-          return nil, block, nil
-        end
-        opt = (val = parse_arg(val, &error))[1]
-        val = conv_arg(*val)
-        if opt and !arg
-          argv.shift
-        else
-          val[0] = nil
-        end
-        val
-      end
-    end
-  end
-
-  #
-  # Simple option list providing mapping from short and/or long option
-  # string to OptionParser::Switch and mapping from acceptable argument to
-  # matching pattern and converter pair. Also provides summary feature.
-  #
-  class List
-    # Map from acceptable argument types to pattern and converter pairs.
-    attr_reader :atype
-    
-    # Map from short style option switches to actual switch objects.
-    attr_reader :short
-    
-    # Map from long style option switches to actual switch objects.
-    attr_reader :long
-    
-    # List of all switches and summary string.
-    attr_reader :list
-
-    #
-    # Just initializes all instance variables.
-    #
-    def initialize
-      @atype = {}
-      @short = OptionMap.new
-      @long = OptionMap.new
-      @list = []
-    end
-
-    #
-    # See OptionParser.accept.
-    #
-    def accept(t, pat = /.*/nm, &block)
-      if pat
-        pat.respond_to?(:match) or raise TypeError, "has no `match'"
-      else
-        pat = t if t.respond_to?(:match)
-      end
-      unless block
-        block = pat.method(:convert).to_proc if pat.respond_to?(:convert)
-      end
-      @atype[t] = [pat, block]
-    end
-
-    #
-    # See OptionParser.reject.
-    #
-    def reject(t)
-      @atype.delete(t)
-    end
-
-    #
-    # Adds +sw+ according to +sopts+, +lopts+ and +nlopts+.
-    #
-    # +sw+::     OptionParser::Switch instance to be added.
-    # +sopts+::  Short style option list.
-    # +lopts+::  Long style option list.
-    # +nlopts+:: Negated long style options list.
-    #
-    def update(sw, sopts, lopts, nsw = nil, nlopts = nil)
-      o = nil
-      sopts.each {|o| @short[o] = sw} if sopts
-      lopts.each {|o| @long[o] = sw} if lopts
-      nlopts.each {|o| @long[o] = nsw} if nsw and nlopts
-      used = @short.invert.update(@long.invert)
-      @list.delete_if {|o| Switch === o and !used[o]}
-    end
-    private :update
-
-    #
-    # Inserts +switch+ at the head of the list, and associates short, long
-    # and negated long options. Arguments are:
-    # 
-    # +switch+::      OptionParser::Switch instance to be inserted.
-    # +short_opts+::  List of short style options.
-    # +long_opts+::   List of long style options.
-    # +nolong_opts+:: List of long style options with "no-" prefix.
-    #
-    #   prepend(switch, short_opts, long_opts, nolong_opts)
-    #
-    def prepend(*args)
-      update(*args)
-      @list.unshift(args[0])
-    end
-
-    #
-    # Appends +switch+ at the tail of the list, and associates short, long
-    # and negated long options. Arguments are:
-    # 
-    # +switch+::      OptionParser::Switch instance to be inserted.
-    # +short_opts+::  List of short style options.
-    # +long_opts+::   List of long style options.
-    # +nolong_opts+:: List of long style options with "no-" prefix.
-    #
-    #   append(switch, short_opts, long_opts, nolong_opts)
-    #
-    def append(*args)
-      update(*args)
-      @list.push(args[0])
-    end
-
-    #
-    # Searches +key+ in +id+ list. The result is returned or yielded if a
-    # block is given. If it isn't found, nil is returned.
-    #
-    def search(id, key)
-      if list = __send__(id)
-        val = list.fetch(key) {return nil}
-        block_given? ? yield(val) : val
-      end
-    end
-
-    #
-    # Searches list +id+ for +opt+ and the optional patterns for completion
-    # +pat+. If +icase+ is true, the search is case insensitive. The result
-    # is returned or yielded if a block is given. If it isn't found, nil is
-    # returned.
-    #
-    def complete(id, opt, icase = false, *pat, &block)
-      __send__(id).complete(opt, icase, *pat, &block)
-    end
-
-    #
-    # Iterates over each option, passing the option to the +block+.
-    #
-    def each_option(&block)
-      list.each(&block)
-    end
-
-    #
-    # Creates the summary table, passing each line to the +block+ (without
-    # newline). The arguments +args+ are passed along to the summarize
-    # method which is called on every option.
-    #
-    def summarize(*args, &block)
-      list.each do |opt|
-        if opt.respond_to?(:summarize) # perhaps OptionParser::Switch
-          opt.summarize(*args, &block)
-        elsif !opt or opt.empty?
-          yield("")
-        else
-          opt.each(&block)
-        end
-      end
-    end
-
-    def add_banner(to)  # :nodoc:
-      list.each do |opt|
-        if opt.respond_to?(:add_banner)
-          opt.add_banner(to)
-        end
-      end
-      to
-    end
-  end
-
-  #
-  # Hash with completion search feature. See OptionParser::Completion.
-  #
-  class CompletingHash < Hash
-    include Completion
-
-    #
-    # Completion for hash key.
-    #
-    def match(key)
-      return key, *fetch(key) {
-        raise AmbiguousArgument, catch(:ambiguous) {return complete(key)}
-      }
-    end
-  end
-
-  # :stopdoc:
-
-  #
-  # Enumeration of acceptable argument styles. Possible values are:
-  #
-  # NO_ARGUMENT::       The switch takes no arguments. (:NONE)
-  # REQUIRED_ARGUMENT:: The switch requires an argument. (:REQUIRED)
-  # OPTIONAL_ARGUMENT:: The switch requires an optional argument. (:OPTIONAL)
-  #
-  # Use like --switch=argument (long style) or -Xargument (short style). For
-  # short style, only portion matched to argument pattern is dealed as
-  # argument.
-  #
-  ArgumentStyle = {}
-  NoArgument.each {|el| ArgumentStyle[el] = Switch::NoArgument}
-  RequiredArgument.each {|el| ArgumentStyle[el] = Switch::RequiredArgument}
-  OptionalArgument.each {|el| ArgumentStyle[el] = Switch::OptionalArgument}
-  ArgumentStyle.freeze
-
-  #
-  # Switches common used such as '--', and also provides default
-  # argument classes
-  #
-  DefaultList = List.new
-  DefaultList.short['-'] = Switch::NoArgument.new {}
-  DefaultList.long[''] = Switch::NoArgument.new {throw :terminate}
-
-  #
-  # Default options for ARGV, which never appear in option summary.
-  #
-  Officious = {}
-
-  #
-  # --help
-  # Shows option summary.
-  #
-  Officious['help'] = proc do |parser|
-    Switch::NoArgument.new do
-      puts parser.help
-      exit
-    end
-  end
-
-  #
-  # --version
-  # Shows version string if Version is defined.
-  #
-  Officious['version'] = proc do |parser|
-    Switch::OptionalArgument.new do |pkg|
-      if pkg
-        begin
-          require 'optparse/version'
-        rescue LoadError
-        else
-          show_version(*pkg.split(/,/)) or
-            abort("#{parser.program_name}: no version found in package #{pkg}")
-          exit
-        end
-      end
-      v = parser.ver or abort("#{parser.program_name}: version unknown")
-      puts v
-      exit
-    end
-  end
-
-  # :startdoc:
-
-  #
-  # Class methods
-  #
-
-  #
-  # Initializes a new instance and evaluates the optional block in context
-  # of the instance. Arguments +args+ are passed to #new, see there for
-  # description of parameters.
-  # 
-  # This method is *deprecated*, its behavior corresponds to the older #new
-  # method.
-  #
-  def self.with(*args, &block)
-    opts = new(*args)
-    opts.instance_eval(&block)
-    opts
-  end
-
-  #
-  # Returns an incremented value of +default+ according to +arg+.
-  #
-  def self.inc(arg, default = nil)
-    case arg
-    when Integer
-      arg.nonzero?
-    when nil
-      default.to_i + 1
-    end
-  end
-  def inc(*args)
-    self.class.inc(*args)
-  end
-
-  #
-  # Initializes the instance and yields itself if called with a block.
-  #
-  # +banner+:: Banner message.
-  # +width+::  Summary width.
-  # +indent+:: Summary indent.
-  #
-  def initialize(banner = nil, width = 32, indent = ' ' * 4)
-    @stack = [DefaultList, List.new, List.new]
-    @program_name = nil
-    @banner = banner
-    @summary_width = width
-    @summary_indent = indent
-    @default_argv = ARGV
-    add_officious
-    yield self if block_given?
-  end
-
-  def add_officious  # :nodoc:
-    list = base()
-    Officious.each do |opt, block|
-      list.long[opt] ||= block.call(self)
-    end
-  end
-
-  #
-  # Terminates option parsing. Optional parameter +arg+ is a string pushed
-  # back to be the first non-option argument.
-  #
-  def terminate(arg = nil)
-    self.class.terminate(arg)
-  end
-  def self.terminate(arg = nil)
-    throw :terminate, arg
-  end
-
-  @stack = [DefaultList]
-  def self.top() DefaultList end
-
-  #
-  # Directs to accept specified class +t+. The argument string is passed to
-  # the block in which it should be converted to the desired class.
-  #
-  # +t+::   Argument class specifier, any object including Class.
-  # +pat+:: Pattern for argument, defaults to +t+ if it responds to match.
-  #
-  #   accept(t, pat, &block)
-  #
-  def accept(*args, &blk) top.accept(*args, &blk) end
-  #
-  # See #accept.
-  #
-  def self.accept(*args, &blk) top.accept(*args, &blk) end
-
-  #
-  # Directs to reject specified class argument.
-  #
-  # +t+:: Argument class speficier, any object including Class.
-  #
-  #   reject(t)
-  #
-  def reject(*args, &blk) top.reject(*args, &blk) end
-  #
-  # See #reject.
-  #
-  def self.reject(*args, &blk) top.reject(*args, &blk) end
-
-  #
-  # Instance methods
-  #
-
-  # Heading banner preceding summary.
-  attr_writer :banner
-
-  # Program name to be emitted in error message and default banner,
-  # defaults to $0.
-  attr_writer :program_name
-
-  # Width for option list portion of summary. Must be Numeric.
-  attr_accessor :summary_width
-
-  # Indentation for summary. Must be String (or have + String method).
-  attr_accessor :summary_indent
-
-  # Strings to be parsed in default.
-  attr_accessor :default_argv
-
-  #
-  # Heading banner preceding summary.
-  #
-  def banner
-    unless @banner
-      @banner = "Usage: #{program_name} [options]"
-      visit(:add_banner, @banner)
-    end
-    @banner
-  end
-
-  #
-  # Program name to be emitted in error message and default banner, defaults
-  # to $0.
-  #
-  def program_name
-    @program_name || File.basename($0, '.*')
-  end
-
-  # for experimental cascading :-)
-  alias set_banner banner=
-  alias set_program_name program_name=
-  alias set_summary_width summary_width=
-  alias set_summary_indent summary_indent=
-
-  # Version
-  attr_writer :version
-  # Release code
-  attr_writer :release
-
-  #
-  # Version
-  #
-  def version
-    @version || (defined?(::Version) && ::Version)
-  end
-
-  #
-  # Release code
-  #
-  def release
-    @release || (defined?(::Release) && ::Release) || (defined?(::RELEASE) && ::RELEASE)
-  end
-
-  #
-  # Returns version string from program_name, version and release.
-  #
-  def ver
-    if v = version
-      str = "#{program_name} #{[v].join('.')}"
-      str << " (#{v})" if v = release
-      str
-    end
-  end
-
-  def warn(mesg = $!)
-    super("#{program_name}: #{mesg}")
-  end
-
-  def abort(mesg = $!)
-    super("#{program_name}: #{mesg}")
-  end
-
-  #
-  # Subject of #on / #on_head, #accept / #reject
-  #
-  def top
-    @stack[-1]
-  end
-
-  #
-  # Subject of #on_tail.
-  #
-  def base
-    @stack[1]
-  end
-
-  #
-  # Pushes a new List.
-  #
-  def new
-    @stack.push(List.new)
-    if block_given?
-      yield self
-    else
-      self
-    end
-  end
-
-  #
-  # Removes the last List.
-  #
-  def remove
-    @stack.pop
-  end
-
-  #
-  # Puts option summary into +to+ and returns +to+. Yields each line if
-  # a block is given.
-  #
-  # +to+:: Output destination, which must have method <<. Defaults to [].
-  # +width+:: Width of left side, defaults to @summary_width.
-  # +max+:: Maximum length allowed for left side, defaults to +width+ - 1.
-  # +indent+:: Indentation, defaults to @summary_indent.
-  #
-  def summarize(to = [], width = @summary_width, max = width - 1, indent = @summary_indent, &blk)
-    visit(:summarize, {}, {}, width, max, indent, &(blk || proc {|l| to << l + $/}))
-    to
-  end
-
-  #
-  # Returns option summary string.
-  #
-  def help; summarize(banner.to_s.sub(/\n?\z/, "\n")) end
-  alias to_s help
-
-  #
-  # Returns option summary list.
-  #
-  def to_a; summarize(banner.to_a.dup) end
-
-  #
-  # Checks if an argument is given twice, in which case an ArgumentError is
-  # raised. Called from OptionParser#switch only.
-  #
-  # +obj+:: New argument.
-  # +prv+:: Previously specified argument.
-  # +msg+:: Exception message.
-  #
-  def notwice(obj, prv, msg)
-    unless !prv or prv == obj
-      begin
-        raise ArgumentError, "argument #{msg} given twice: #{obj}"
-      rescue
-        $@[0, 2] = nil
-        raise
-      end
-    end
-    obj
-  end
-  private :notwice
-
-  #
-  # Creates an OptionParser::Switch from the parameters. The parsed argument
-  # value is passed to the given block, where it can be processed.
-  #
-  # See at the beginning of OptionParser for some full examples.
-  #
-  # +opts+ can include the following elements:
-  #
-  # [Argument style:]
-  #   One of the following:
-  #     :NONE, :REQUIRED, :OPTIONAL
-  #
-  # [Argument pattern:]
-  #   Acceptable option argument format, must be pre-defined with
-  #   OptionParser.accept or OptionParser#accept, or Regexp. This can appear
-  #   once or assigned as String if not present, otherwise causes an
-  #   ArgumentError. Examples:
-  #     Float, Time, Array
-  #
-  # [Possible argument values:]
-  #   Hash or Array.
-  #     [:text, :binary, :auto]
-  #     %w[iso-2022-jp shift_jis euc-jp utf8 binary]
-  #     { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
-  #
-  # [Long style switch:]
-  #   Specifies a long style switch which takes a mandatory, optional or no
-  #   argument. It's a string of the following form:
-  #     "--switch=MANDATORY" or "--switch MANDATORY"
-  #     "--switch[=OPTIONAL]"
-  #     "--switch"
-  #
-  # [Short style switch:]
-  #   Specifies short style switch which takes a mandatory, optional or no
-  #   argument. It's a string of the following form:
-  #     "-xMANDATORY"
-  #     "-x[OPTIONAL]"
-  #     "-x"
-  #   There is also a special form which matches character range (not full
-  #   set of regural expression):
-  #     "-[a-z]MANDATORY"
-  #     "-[a-z][OPTIONAL]" 
-  #     "-[a-z]"
-  #
-  # [Argument style and description:]
-  #   Instead of specifying mandatory or optional orguments directly in the
-  #   switch parameter, this separate parameter can be used.
-  #     "=MANDATORY"
-  #     "=[OPTIONAL]"
-  #
-  # [Description:]
-  #   Description string for the option.
-  #     "Run verbosely"
-  # 
-  # [Handler:]
-  #   Handler for the parsed argument value. Either give a block or pass a
-  #   Proc or Method as an argument.
-  #
-  def make_switch(opts, block = nil)
-    short, long, nolong, style, pattern, conv, not_pattern, not_conv, not_style = [], [], []
-    ldesc, sdesc, desc, arg = [], [], []
-    default_style = Switch::NoArgument
-    default_pattern = nil
-    klass = nil
-    o = nil
-    n, q, a = nil
-
-    opts.each do |o|
-      # argument class
-      next if search(:atype, o) do |pat, c|
-        klass = notwice(o, klass, 'type')
-        if not_style and not_style != Switch::NoArgument
-          not_pattern, not_conv = pat, c
-        else
-          default_pattern, conv = pat, c
-        end
-      end
-
-      # directly specified pattern(any object possible to match)
-      if !(String === o) and o.respond_to?(:match)
-        pattern = notwice(o, pattern, 'pattern')
-        conv = (pattern.method(:convert).to_proc if pattern.respond_to?(:convert))
-        next
-      end
-
-      # anything others
-      case o
-      when Proc, Method
-        block = notwice(o, block, 'block')
-      when Array, Hash
-        case pattern
-        when CompletingHash
-        when nil
-          pattern = CompletingHash.new
-          conv = (pattern.method(:convert).to_proc if pattern.respond_to?(:convert))
-        else
-          raise ArgumentError, "argument pattern given twice"
-        end
-        o.each {|(o, *v)| pattern[o] = v.fetch(0) {o}}
-      when Module
-        raise ArgumentError, "unsupported argument type: #{o}"
-      when *ArgumentStyle.keys
-        style = notwice(ArgumentStyle[o], style, 'style')
-      when /^--no-([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        o = notwice(a ? Object : TrueClass, klass, 'type')
-        not_pattern, not_conv = search(:atype, o) unless not_style
-        not_style = (not_style || default_style).guess(arg = a) if a
-        default_style = Switch::NoArgument
-        default_pattern, conv = search(:atype, FalseClass) unless default_pattern
-        ldesc << "--no-#{q}"
-        long << 'no-' + (q = q.downcase)
-        nolong << q
-      when /^--\[no-\]([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        o = notwice(a ? Object : TrueClass, klass, 'type')
-        if a
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        ldesc << "--[no-]#{q}"
-        long << (o = q.downcase)
-        not_pattern, not_conv = search(:atype, FalseClass) unless not_style
-        not_style = Switch::NoArgument
-        nolong << 'no-' + o
-      when /^--([^\[\]=\s]*)(.+)?/
-        q, a = $1, $2
-        if a
-          o = notwice(NilClass, klass, 'type')
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        ldesc << "--#{q}"
-        long << (o = q.downcase)
-      when /^-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/
-        q, a = $1, $2
-        o = notwice(Object, klass, 'type')
-        if a
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        sdesc << "-#{q}"
-        short << Regexp.new(q)
-      when /^-(.)(.+)?/
-        q, a = $1, $2
-        if a
-          o = notwice(NilClass, klass, 'type')
-          default_style = default_style.guess(arg = a)
-          default_pattern, conv = search(:atype, o) unless default_pattern
-        end
-        sdesc << "-#{q}"
-        short << q
-      when /^=/
-        style = notwice(default_style.guess(arg = o), style, 'style')
-        default_pattern, conv = search(:atype, Object) unless default_pattern
-      else
-        desc.push(o)
-      end
-    end
-
-    default_pattern, conv = search(:atype, default_style.pattern) unless default_pattern
-    if !(short.empty? and long.empty?)
-      s = (style || default_style).new(pattern || default_pattern,
-                                       conv, sdesc, ldesc, arg, desc, block)
-    elsif !block
-      raise ArgumentError, "no switch given" if style or pattern
-      s = desc
-    else
-      short << pattern
-      s = (style || default_style).new(pattern,
-                                       conv, nil, nil, arg, desc, block)
-    end
-    return s, short, long,
-      (not_style.new(not_pattern, not_conv, sdesc, ldesc, nil, desc, block) if not_style),
-      nolong
-  end
-
-  def define(*opts, &block)
-    top.append(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch and handler. See #make_switch for an explanation of
-  # parameters.
-  #
-  def on(*opts, &block)
-    define(*opts, &block)
-    self
-  end
-  alias def_option define
-
-  def define_head(*opts, &block)
-    top.prepend(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch like with #on, but at head of summary.
-  #
-  def on_head(*opts, &block)
-    define_head(*opts, &block)
-    self
-  end
-  alias def_head_option define_head
-
-  def define_tail(*opts, &block)
-    base.append(*(sw = make_switch(opts, block)))
-    sw[0]
-  end
-
-  #
-  # Add option switch like with #on, but at tail of summary.
-  #
-  def on_tail(*opts, &block)
-    define_tail(*opts, &block)
-    self
-  end
-  alias def_tail_option define_tail
-
-  #
-  # Add separator in summary.
-  #
-  def separator(string)
-    top.append(string, nil, nil)
-  end
-
-  #
-  # Parses command line arguments +argv+ in order. When a block is given,
-  # each non-option argument is yielded.
-  #
-  # Returns the rest of +argv+ left unparsed.
-  #
-  def order(*argv, &block)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    order!(argv, &block)
-  end
-
-  #
-  # Same as #order, but removes switches destructively.
-  #
-  def order!(argv = default_argv, &nonopt)
-    parse_in_order(argv, &nonopt)
-  end
-
-  def parse_in_order(argv = default_argv, setter = nil, &nonopt)  # :nodoc:
-    opt, arg, sw, val, rest = nil
-    nonopt ||= proc {|arg| throw :terminate, arg}
-    argv.unshift(arg) if arg = catch(:terminate) {
-      while arg = argv.shift
-        case arg
-        # long option
-        when /\A--([^=]*)(?:=(.*))?/nm
-          opt, rest = $1, $2
-          begin
-            sw, = complete(:long, opt, true)
-          rescue ParseError
-            raise $!.set_option(arg, true)
-          end
-          begin
-            opt, cb, val = sw.parse(rest, argv) {|*exc| raise(*exc)}
-            val = cb.call(val) if cb
-            setter.call(sw.switch_name, val) if setter
-          rescue ParseError
-            raise $!.set_option(arg, rest)
-          end
-
-        # short option
-        when /\A-(.)((=).*|.+)?/nm
-          opt, has_arg, eq, val, rest = $1, $3, $3, $2, $2
-          begin
-            sw, = search(:short, opt)
-            unless sw
-              begin
-                sw, = complete(:short, opt)
-                # short option matched.
-                val = arg.sub(/\A-/, '')
-                has_arg = true
-              rescue InvalidOption
-                # if no short options match, try completion with long
-                # options.
-                sw, = complete(:long, opt)
-                eq ||= !rest
-              end
-            end
-          rescue ParseError
-            raise $!.set_option(arg, true)
-          end
-          begin
-            opt, cb, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
-            raise InvalidOption, arg if has_arg and !eq and arg == "-#{opt}"
-            argv.unshift(opt) if opt and (opt = opt.sub(/\A-*/, '-')) != '-'
-            val = cb.call(val) if cb
-            setter.call(sw.switch_name, val) if setter
-          rescue ParseError
-            raise $!.set_option(arg, arg.length > 2)
-          end
-
-        # non-option argument
-        else
-          catch(:prune) do
-            visit(:each_option) do |sw|
-              sw.block.call(arg) if Switch === sw and sw.match_nonswitch?(arg)
-            end
-            nonopt.call(arg)
-          end
-        end
-      end
-
-      nil
-    }
-
-    visit(:search, :short, nil) {|sw| sw.block.call(*argv) if !sw.pattern}
-
-    argv
-  end
-  private :parse_in_order
-
-  #
-  # Parses command line arguments +argv+ in permutation mode and returns
-  # list of non-option arguments.
-  #
-  def permute(*argv)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    permute!(argv)
-  end
-
-  #
-  # Same as #permute, but removes switches destructively.
-  #
-  def permute!(argv = default_argv)
-    nonopts = []
-    arg = nil
-    order!(argv) {|arg| nonopts << arg}
-    argv[0, 0] = nonopts
-    argv
-  end
-
-  #
-  # Parses command line arguments +argv+ in order when environment variable
-  # POSIXLY_CORRECT is set, and in permutation mode otherwise.
-  #
-  def parse(*argv)
-    argv = argv[0].dup if argv.size == 1 and Array === argv[0]
-    parse!(argv)
-  end
-
-  #
-  # Same as #parse, but removes switches destructively.
-  #
-  def parse!(argv = default_argv)
-    if ENV.include?('POSIXLY_CORRECT')
-      order!(argv)
-    else
-      permute!(argv)
-    end
-  end
-
-  #
-  # Wrapper method for getopts.rb.
-  #
-  #   params = ARGV.getopts("ab:", "foo", "bar:")
-  #   # params[:a] = true   # -a
-  #   # params[:b] = "1"    # -b1
-  #   # params[:foo] = "1"  # --foo
-  #   # params[:bar] = "x"  # --bar x
-  #
-  def getopts(*args)
-    argv = Array === args.first ? args.shift : default_argv
-    single_options, *long_options = *args
-
-    result = {}
-
-    single_options.scan(/(.)(:)?/) do |opt, val|
-      if val
-        result[opt] = nil
-        define("-#{opt} VAL")
-      else
-        result[opt] = false
-        define("-#{opt}")
-      end
-    end if single_options
-
-    long_options.each do |arg|
-      opt, val = arg.split(':', 2)
-      if val
-        result[opt] = val.empty? ? nil : val
-        define("--#{opt} VAL")
-      else
-        result[opt] = false
-        define("--#{opt}")
-      end
-    end
-
-    parse_in_order(argv, result.method(:[]=))
-    result
-  end
-
-  #
-  # See #getopts.
-  #
-  def self.getopts(*args)
-    new.getopts(*args)
-  end
-
-  #
-  # Traverses @stack, sending each element method +id+ with +args+ and
-  # +block+.
-  #
-  def visit(id, *args, &block)
-    el = nil
-    @stack.reverse_each do |el|
-      el.send(id, *args, &block)
-    end
-    nil
-  end
-  private :visit
-
-  #
-  # Searches +key+ in @stack for +id+ hash and returns or yields the result.
-  #
-  def search(id, key)
-    block_given = block_given?
-    visit(:search, id, key) do |k|
-      return block_given ? yield(k) : k
-    end
-  end
-  private :search
-
-  #
-  # Completes shortened long style option switch and returns pair of
-  # canonical switch and switch descriptor OptionParser::Switch.
-  #
-  # +id+::    Searching table.
-  # +opt+::   Searching key.
-  # +icase+:: Search case insensitive if true.
-  # +pat+::   Optional pattern for completion.
-  #
-  def complete(typ, opt, icase = false, *pat)
-    if pat.empty?
-      search(typ, opt) {|sw| return [sw, opt]} # exact match or...
-    end
-    raise AmbiguousOption, catch(:ambiguous) {
-      visit(:complete, typ, opt, icase, *pat) {|opt, *sw| return sw}
-      raise InvalidOption, opt
-    }
-  end
-  private :complete
-
-  #
-  # Loads options from file names as +filename+. Does nothing when the file
-  # is not present. Returns whether successfully loaded.
-  #
-  # +filename+ defaults to basename of the program without suffix in a
-  # directory ~/.options.
-  #
-  def load(filename = nil)
-    begin
-      filename ||= File.expand_path(File.basename($0, '.*'), '~/.options')
-    rescue
-      return false
-    end
-    begin
-      parse(*IO.readlines(filename).each {|s| s.chomp!})
-      true
-    rescue Errno::ENOENT, Errno::ENOTDIR
-      false
-    end
-  end
-
-  #
-  # Parses environment variable +env+ or its uppercase with splitting like a
-  # shell.
-  #
-  # +env+ defaults to the basename of the program.
-  #
-  def environment(env = File.basename($0, '.*'))
-    env = ENV[env] || ENV[env.upcase] or return
-    require 'shellwords'
-    parse(*Shellwords.shellwords(env))
-  end
-
-  #
-  # Acceptable argument classes
-  #
-
-  #
-  # Any string and no conversion. This is fall-back.
-  #
-  accept(Object) {|s,|s or s.nil?}
-
-  accept(NilClass) {|s,|s}
-
-  #
-  # Any non-empty string, and no conversion.
-  #
-  accept(String, /.+/nm) {|s,*|s}
-
-  #
-  # Ruby/C-like integer, octal for 0-7 sequence, binary for 0b, hexadecimal
-  # for 0x, and decimal for others; with optional sign prefix. Converts to
-  # Integer.
-  #
-  decimal = '\d+(?:_\d+)*'
-  binary = 'b[01]+(?:_[01]+)*'
-  hex = 'x[\da-f]+(?:_[\da-f]+)*'
-  octal = "0(?:[0-7]*(?:_[0-7]+)*|#{binary}|#{hex})"
-  integer = "#{octal}|#{decimal}"
-  accept(Integer, %r"\A[-+]?(?:#{integer})"io) {|s,| Integer(s) if s}
-
-  #
-  # Float number format, and converts to Float.
-  #
-  float = "(?:#{decimal}(?:\\.(?:#{decimal})?)?|\\.#{decimal})(?:E[-+]?#{decimal})?"
-  floatpat = %r"\A[-+]?#{float}"io
-  accept(Float, floatpat) {|s,| s.to_f if s}
-
-  #
-  # Generic numeric format, converts to Integer for integer format, Float
-  # for float format.
-  #
-  accept(Numeric, %r"\A[-+]?(?:#{octal}|#{float})"io) {|s,| eval(s) if s}
-
-  #
-  # Decimal integer format, to be converted to Integer.
-  #
-  DecimalInteger = /\A[-+]?#{decimal}/io
-  accept(DecimalInteger) {|s,| s.to_i if s}
-
-  #
-  # Ruby/C like octal/hexadecimal/binary integer format, to be converted to
-  # Integer.
-  #
-  OctalInteger = /\A[-+]?(?:[0-7]+(?:_[0-7]+)*|0(?:#{binary}|#{hex}))/io
-  accept(OctalInteger) {|s,| s.oct if s}
-
-  #
-  # Decimal integer/float number format, to be converted to Integer for
-  # integer format, Float for float format.
-  #
-  DecimalNumeric = floatpat     # decimal integer is allowed as float also.
-  accept(DecimalNumeric) {|s,| eval(s) if s}
-
-  #
-  # Boolean switch, which means whether it is present or not, whether it is
-  # absent or not with prefix no-, or it takes an argument
-  # yes/no/true/false/+/-.
-  #
-  yesno = CompletingHash.new
-  %w[- no false].each {|el| yesno[el] = false}
-  %w[+ yes true].each {|el| yesno[el] = true}
-  yesno['nil'] = false          # shoud be nil?
-  accept(TrueClass, yesno) {|arg, val| val == nil or val}
-  #
-  # Similar to TrueClass, but defaults to false.
-  #
-  accept(FalseClass, yesno) {|arg, val| val != nil and val}
-
-  #
-  # List of strings separated by ",".
-  #
-  accept(Array) do |s,|
-    if s
-      s = s.split(',').collect {|s| s unless s.empty?}
-    end
-    s
-  end
-
-  #
-  # Regular expression with options.
-  #
-  accept(Regexp, %r"\A/((?:\\.|[^\\])*)/([[:alpha:]]+)?\z|.*") do |all, s, o|
-    f = 0
-    if o
-      f |= Regexp::IGNORECASE if /i/ =~ o
-      f |= Regexp::MULTILINE if /m/ =~ o
-      f |= Regexp::EXTENDED if /x/ =~ o
-      k = o.delete("^imx")
-    end
-    Regexp.new(s || all, f, k)
-  end
-
-  #
-  # Exceptions
-  #
-
-  #
-  # Base class of exceptions from OptionParser.
-  #
-  class ParseError < RuntimeError
-    # Reason which caused the error.
-    Reason = 'parse error'.freeze
-
-    def initialize(*args)
-      @args = args
-      @reason = nil
-    end
-
-    attr_reader :args
-    attr_writer :reason
-
-    #
-    # Pushes back erred argument(s) to +argv+.
-    #
-    def recover(argv)
-      argv[0, 0] = @args
-      argv
-    end
-
-    def set_option(opt, eq)
-      if eq
-        @args[0] = opt
-      else
-        @args.unshift(opt)
-      end
-      self
-    end
-
-    #
-    # Returns error reason. Override this for I18N.
-    #
-    def reason
-      @reason || self.class::Reason
-    end
-
-    def inspect
-      "#<#{self.class.to_s}: #{args.join(' ')}>"
-    end
-
-    #
-    # Default stringizing method to emit standard error message.
-    #
-    def message
-      reason + ': ' + args.join(' ')
-    end
-
-    alias to_s message
-  end
-
-  #
-  # Raises when ambiguously completable string is encountered.
-  #
-  class AmbiguousOption < ParseError
-    const_set(:Reason, 'ambiguous option'.freeze)
-  end
-
-  #
-  # Raises when there is an argument for a switch which takes no argument.
-  #
-  class NeedlessArgument < ParseError
-    const_set(:Reason, 'needless argument'.freeze)
-  end
-
-  #
-  # Raises when a switch with mandatory argument has no argument.
-  #
-  class MissingArgument < ParseError
-    const_set(:Reason, 'missing argument'.freeze)
-  end
-
-  #
-  # Raises when switch is undefined.
-  #
-  class InvalidOption < ParseError
-    const_set(:Reason, 'invalid option'.freeze)
-  end
-
-  #
-  # Raises when the given argument does not match required format.
-  #
-  class InvalidArgument < ParseError
-    const_set(:Reason, 'invalid argument'.freeze)
-  end
-
-  #
-  # Raises when the given argument word can't be completed uniquely.
-  #
-  class AmbiguousArgument < InvalidArgument
-    const_set(:Reason, 'ambiguous argument'.freeze)
-  end
-
-  #
-  # Miscellaneous
-  #
-
-  #
-  # Extends command line arguments array (ARGV) to parse itself.
-  #
-  module Arguable
-
-    #
-    # Sets OptionParser object, when +opt+ is +false+ or +nil+, methods
-    # OptionParser::Arguable#options and OptionParser::Arguable#options= are
-    # undefined. Thus, there is no ways to access the OptionParser object
-    # via the receiver object.
-    #
-    def options=(opt)
-      unless @optparse = opt
-        class << self
-          undef_method(:options)
-          undef_method(:options=)
-        end
-      end
-    end
-
-    #
-    # Actual OptionParser object, automatically created if nonexistent.
-    #
-    # If called with a block, yields the OptionParser object and returns the
-    # result of the block. If an OptionParser::ParseError exception occurs
-    # in the block, it is rescued, a error message printed to STDERR and
-    # +nil+ returned.
-    #
-    def options
-      @optparse ||= OptionParser.new
-      @optparse.default_argv = self
-      block_given? or return @optparse
-      begin
-        yield @optparse
-      rescue ParseError
-        @optparse.warn $!
-        nil
-      end
-    end
-
-    #
-    # Parses +self+ destructively in order and returns +self+ containing the
-    # rest arguments left unparsed.
-    #
-    def order!(&blk) options.order!(self, &blk) end
-
-    #
-    # Parses +self+ destructively in permutation mode and returns +self+
-    # containing the rest arguments left unparsed.
-    #
-    def permute!() options.permute!(self) end
-
-    #
-    # Parses +self+ destructively and returns +self+ containing the
-    # rest arguments left unparsed.
-    #
-    def parse!() options.parse!(self) end
-
-    #
-    # Substitution of getopts is possible as follows. Also see
-    # OptionParser#getopts.
-    #
-    #   def getopts(*args)
-    #     ($OPT = ARGV.getopts(*args)).each do |opt, val|
-    #       eval "$OPT_#{opt.gsub(/[^A-Za-z0-9_]/, '_')} = val"
-    #     end
-    #   rescue OptionParser::ParseError
-    #   end
-    #
-    def getopts(*args)
-      options.getopts(self, *args)
-    end
-
-    #
-    # Initializes instance variable.
-    #
-    def self.extend_object(obj)
-      super
-      obj.instance_eval {@optparse = nil}
-    end
-    def initialize(*args)
-      super
-      @optparse = nil
-    end
-  end
-
-  #
-  # Acceptable argument classes. Now contains DecimalInteger, OctalInteger
-  # and DecimalNumeric. See Acceptable argument classes (in source code).
-  #
-  module Acceptables
-    const_set(:DecimalInteger, OptionParser::DecimalInteger)
-    const_set(:OctalInteger, OptionParser::OctalInteger)
-    const_set(:DecimalNumeric, OptionParser::DecimalNumeric)
-  end
-end
-
-# ARGV is arguable by OptionParser
-ARGV.extend(OptionParser::Arguable)
-
-if $0 == __FILE__
-  Version = OptionParser::Version
-  ARGV.options {|q|
-    q.parse!.empty? or puts "what's #{ARGV.join(' ')}?"
-  } or abort(ARGV.options.to_s)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/date.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/date.rb
deleted file mode 100644
index d680559..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/date.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'optparse'
-require 'date'
-
-OptionParser.accept(DateTime) do |s,|
-  begin
-    DateTime.parse(s) if s
-  rescue ArgumentError
-    raise OptionParser::InvalidArgument, s
-  end
-end
-OptionParser.accept(Date) do |s,|
-  begin
-    Date.parse(s) if s
-  rescue ArgumentError
-    raise OptionParser::InvalidArgument, s
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/shellwords.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/shellwords.rb
deleted file mode 100644
index 0422d7c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/shellwords.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- ruby -*-
-
-require 'shellwords'
-require 'optparse'
-
-OptionParser.accept(Shellwords) {|s,| Shellwords.shellwords(s)}
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/time.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/time.rb
deleted file mode 100644
index 402cadc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/time.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'optparse'
-require 'time'
-
-OptionParser.accept(Time) do |s,|
-  begin
-    (Time.httpdate(s) rescue Time.parse(s)) if s
-  rescue
-    raise OptionParser::InvalidArgument, s
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/uri.rb
deleted file mode 100644
index 024dc69..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/uri.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- ruby -*-
-
-require 'optparse'
-require 'uri'
-
-OptionParser.accept(URI) {|s,| URI.parse(s) if s}
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/version.rb
deleted file mode 100644
index 558d9d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/optparse/version.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# OptionParser internal utility
-
-class << OptionParser
-  def show_version(*pkg)
-    progname = ARGV.options.program_name
-    result = false
-    show = proc do |klass, cname, version|
-      str = "#{progname}"
-      unless klass == ::Object and cname == :VERSION
-        version = version.join(".") if Array === version
-        str << ": #{klass}" unless klass == Object
-        str << " version #{version}"
-      end
-      [:Release, :RELEASE].find do |rel|
-        if klass.const_defined?(rel)
-          str << " (#{klass.const_get(rel)})"
-        end
-      end
-      puts str
-      result = true
-    end
-    if pkg.size == 1 and pkg[0] == "all"
-      self.search_const(::Object, /\AV(?:ERSION|ersion)\z/) do |klass, cname, version|
-        unless cname[1] == ?e and klass.const_defined?(:Version)
-          show.call(klass, cname.intern, version)
-        end
-      end
-    else
-      pkg.each do |pkg|
-        begin
-          pkg = pkg.split(/::|\//).inject(::Object) {|m, c| m.const_get(c)}
-          v = case
-              when pkg.const_defined?(:Version)
-                pkg.const_get(n = :Version)
-              when pkg.const_defined?(:VERSION)
-                pkg.const_get(n = :VERSION)
-              else
-                n = nil
-                "unknown"
-              end
-          show.call(pkg, n, v)
-        rescue NameError
-        end
-      end
-    end
-    result
-  end
-
-  def each_const(path, klass = ::Object)
-    path.split(/::|\//).inject(klass) do |klass, name|
-      raise NameError, path unless Module === klass
-      klass.constants.grep(/#{name}/i) do |c|
-        klass.const_defined?(c) or next
-        c = klass.const_get(c)
-      end
-    end
-  end
-
-  def search_const(klass, name)
-    klasses = [klass]
-    while klass = klasses.shift
-      klass.constants.each do |cname|
-        klass.const_defined?(cname) or next
-        const = klass.const_get(cname)
-        yield klass, cname, const if name === cname
-        klasses << const if Module === const and const != ::Object
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ostruct.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ostruct.rb
deleted file mode 100644
index 6af5bbd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ostruct.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-#
-# = ostruct.rb: OpenStruct implementation
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Gavin Sinclair
-#
-# OpenStruct allows the creation of data objects with arbitrary attributes.
-# See OpenStruct for an example.
-#
-
-#
-# OpenStruct allows you to create data objects and set arbitrary attributes.
-# For example:
-#
-#   require 'ostruct' 
-#
-#   record = OpenStruct.new
-#   record.name    = "John Smith"
-#   record.age     = 70
-#   record.pension = 300
-#   
-#   puts record.name     # -> "John Smith"
-#   puts record.address  # -> nil
-#
-# It is like a hash with a different way to access the data.  In fact, it is
-# implemented with a hash, and you can initialize it with one.
-#
-#   hash = { "country" => "Australia", :population => 20_000_000 }
-#   data = OpenStruct.new(hash)
-#
-#   p data        # -> <OpenStruct country="Australia" population=20000000>
-#
-class OpenStruct
-  #
-  # Create a new OpenStruct object.  The optional +hash+, if given, will
-  # generate attributes and values.  For example.
-  #
-  #   require 'ostruct'
-  #   hash = { "country" => "Australia", :population => 20_000_000 }
-  #   data = OpenStruct.new(hash)
-  #
-  #   p data        # -> <OpenStruct country="Australia" population=20000000>
-  #
-  # By default, the resulting OpenStruct object will have no attributes. 
-  #
-  def initialize(hash=nil)
-    @table = {}
-    if hash
-      for k,v in hash
-        @table[k.to_sym] = v
-        new_ostruct_member(k)
-      end
-    end
-  end
-
-  # Duplicate an OpenStruct object members. 
-  def initialize_copy(orig)
-    super
-    @table = @table.dup
-  end
-
-  def marshal_dump
-    @table
-  end
-  def marshal_load(x)
-    @table = x
-    @table.each_key{|key| new_ostruct_member(key)}
-  end
-
-  def new_ostruct_member(name)
-    name = name.to_sym
-    unless self.respond_to?(name)
-      meta = class << self; self; end
-      meta.send(:define_method, name) { @table[name] }
-      meta.send(:define_method, :"#{name}=") { |x| @table[name] = x }
-    end
-  end
-
-  def method_missing(mid, *args) # :nodoc:
-    mname = mid.id2name
-    len = args.length
-    if mname =~ /=$/
-      if len != 1
-        raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
-      end
-      if self.frozen?
-        raise TypeError, "can't modify frozen #{self.class}", caller(1)
-      end
-      mname.chop!
-      self.new_ostruct_member(mname)
-      @table[mname.intern] = args[0]
-    elsif len == 0
-      @table[mid]
-    else
-      raise NoMethodError, "undefined method `#{mname}' for #{self}", caller(1)
-    end
-  end
-
-  #
-  # Remove the named field from the object.
-  #
-  def delete_field(name)
-    @table.delete name.to_sym
-  end
-
-  InspectKey = :__inspect_key__ # :nodoc:
-
-  #
-  # Returns a string containing a detailed summary of the keys and values.
-  #
-  def inspect
-    str = "#<#{self.class}"
-
-    Thread.current[InspectKey] ||= []
-    if Thread.current[InspectKey].include?(self) then
-      str << " ..."
-    else
-      first = true
-      for k,v in @table
-        str << "," unless first
-        first = false
-
-        Thread.current[InspectKey] << v
-        begin
-          str << " #{k}=#{v.inspect}"
-        ensure
-          Thread.current[InspectKey].pop
-        end
-      end
-    end
-
-    str << ">"
-  end
-  alias :to_s :inspect
-
-  attr_reader :table # :nodoc:
-  protected :table
-
-  #
-  # Compare this object and +other+ for equality.
-  #
-  def ==(other)
-    return false unless(other.kind_of?(OpenStruct))
-    return @table == other.table
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsearg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsearg.rb
deleted file mode 100644
index 9c4d0f1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsearg.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-#		parsearg.rb - parse arguments
-#			$Release Version: $
-#			$Revision: 11708 $
-#			$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#			by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
-#
-# --
-#
-#	
-#
-
-warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: parsearg is deprecated after Ruby 1.8.1; use optparse instead"
-
-$RCS_ID=%q$Header$
-
-require "getopts"
-
-def printUsageAndExit()
-  if $USAGE
-    eval($USAGE)
-  end
-  exit()
-end
-
-def setParenthesis(ex, opt, c)
-  if opt != ""
-    ex = sprintf("%s$OPT_%s%s", ex, opt, c)
-  else
-    ex = sprintf("%s%s", ex, c)
-  end
-  return ex
-end
-
-def setOrAnd(ex, opt, c)
-  if opt != ""
-    ex = sprintf("%s$OPT_%s %s%s ", ex, opt, c, c)
-  else
-    ex = sprintf("%s %s%s ", ex, c, c)
-  end
-  return ex
-end
-
-def setExpression(ex, opt, op)
-  if !op
-    ex = sprintf("%s$OPT_%s", ex, opt)
-    return ex
-  end
-  case op.chr
-  when "(", ")"
-    ex = setParenthesis(ex, opt, op.chr)
-  when "|", "&"
-    ex = setOrAnd(ex, opt, op.chr)
-  else
-    return nil
-  end
-  return ex
-end
-
-# parseArgs is obsolete.  Use OptionParser instead.
-
-def parseArgs(argc, nopt, single_opts, *opts)
-  if (noOptions = getopts(single_opts, *opts)) == nil
-    printUsageAndExit()
-  end
-  if nopt
-    ex = nil
-    pos = 0
-    for o in nopt.split(/[()|&]/)
-      pos += o.length
-      ex = setExpression(ex, o, nopt[pos])
-      pos += 1
-    end
-    begin
-      if !eval(ex)
-	printUsageAndExit()
-      end
-    rescue
-      print "Format Error!! : \"" + nopt + "\"\t[parseArgs]\n"
-      exit!(-1)
-    end
-  end
-  if ARGV.length < argc
-    printUsageAndExit()
-  end
-  return noOptions
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsedate.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsedate.rb
deleted file mode 100644
index b52a79b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/parsedate.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# = parsedate.rb: Parses dates
-#
-# Author:: Tadayoshi Funaba
-# Documentation:: Konrad Meyer
-#
-# ParseDate munches on a date and turns it into an array of values.
-#
-
-#
-# ParseDate converts a date into an array of values.
-# For example:
-#
-#   require 'parsedate'
-#
-#   ParseDate.parsedate "Tuesday, July 6th, 2007, 18:35:20 UTC"
-#   # => [2007, 7, 6, 18, 35, 20, "UTC", 2]
-#
-# The order is of the form [year, month, day of month, hour, minute, second,
-# timezone, day of the week].
-
-require 'date/format'
-
-module ParseDate
-  #
-  # Parse a string representation of a date into values.
-  # For example:
-  #
-  #   require 'parsedate'
-  #
-  #   ParseDate.parsedate "Tuesday, July 5th, 2007, 18:35:20 UTC"
-  #   # => [2007, 7, 5, 18, 35, 20, "UTC", 2]
-  #
-  # The order is of the form [year, month, day of month, hour, minute,
-  # second, timezone, day of week].
-  #
-  # ParseDate.parsedate can also take a second argument, +comp+, which
-  # is a boolean telling the method to compensate for dates with years
-  # expressed as two digits. Example:
-  #
-  #   require 'parsedate'
-  #
-  #   ParseDate.parsedate "Mon Dec 25 00 06:53:24 UTC", true
-  #   # => [2000, 12, 25, 6, 53, 24, "UTC", 1]
-  #
-  def parsedate(str, comp=false)
-    Date._parse(str, comp).
-      values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :wday)
-  end
-
-  module_function :parsedate
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pathname.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pathname.rb
deleted file mode 100644
index e4ca548..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pathname.rb
+++ /dev/null
@@ -1,1062 +0,0 @@
-#
-# = pathname.rb
-#
-# Object-Oriented Pathname Class
-#
-# Author:: Tanaka Akira <akr at m17n.org>
-# Documentation:: Author and Gavin Sinclair
-#
-# For documentation, see class Pathname.
-#
-# <tt>pathname.rb</tt> is distributed with Ruby since 1.8.0.
-#
-
-#
-# == Pathname
-#
-# Pathname represents a pathname which locates a file in a filesystem.
-# The pathname depends on OS: Unix, Windows, etc.
-# Pathname library works with pathnames of local OS.
-# However non-Unix pathnames are supported experimentally.
-#
-# It does not represent the file itself.
-# A Pathname can be relative or absolute.  It's not until you try to
-# reference the file that it even matters whether the file exists or not.
-#
-# Pathname is immutable.  It has no method for destructive update.
-#
-# The value of this class is to manipulate file path information in a neater
-# way than standard Ruby provides.  The examples below demonstrate the
-# difference.  *All* functionality from File, FileTest, and some from Dir and
-# FileUtils is included, in an unsurprising way.  It is essentially a facade for
-# all of these, and more.
-#
-# == Examples
-#
-# === Example 1: Using Pathname
-#
-#   require 'pathname'
-#   p = Pathname.new("/usr/bin/ruby")
-#   size = p.size              # 27662
-#   isdir = p.directory?       # false
-#   dir  = p.dirname           # Pathname:/usr/bin
-#   base = p.basename          # Pathname:ruby
-#   dir, base = p.split        # [Pathname:/usr/bin, Pathname:ruby]
-#   data = p.read
-#   p.open { |f| _ } 
-#   p.each_line { |line| _ }
-#
-# === Example 2: Using standard Ruby
-#
-#   p = "/usr/bin/ruby"
-#   size = File.size(p)        # 27662
-#   isdir = File.directory?(p) # false
-#   dir  = File.dirname(p)     # "/usr/bin"
-#   base = File.basename(p)    # "ruby"
-#   dir, base = File.split(p)  # ["/usr/bin", "ruby"]
-#   data = File.read(p)
-#   File.open(p) { |f| _ } 
-#   File.foreach(p) { |line| _ }
-#
-# === Example 3: Special features
-#
-#   p1 = Pathname.new("/usr/lib")   # Pathname:/usr/lib
-#   p2 = p1 + "ruby/1.8"            # Pathname:/usr/lib/ruby/1.8
-#   p3 = p1.parent                  # Pathname:/usr
-#   p4 = p2.relative_path_from(p3)  # Pathname:lib/ruby/1.8
-#   pwd = Pathname.pwd              # Pathname:/home/gavin
-#   pwd.absolute?                   # true
-#   p5 = Pathname.new "."           # Pathname:.
-#   p5 = p5 + "music/../articles"   # Pathname:music/../articles
-#   p5.cleanpath                    # Pathname:articles
-#   p5.realpath                     # Pathname:/home/gavin/articles
-#   p5.children                     # [Pathname:/home/gavin/articles/linux, ...]
-# 
-# == Breakdown of functionality
-#
-# === Core methods
-#
-# These methods are effectively manipulating a String, because that's all a path
-# is.  Except for #mountpoint?, #children, and #realpath, they don't access the
-# filesystem.
-#
-# - +
-# - #join
-# - #parent
-# - #root?
-# - #absolute?
-# - #relative?
-# - #relative_path_from
-# - #each_filename
-# - #cleanpath
-# - #realpath
-# - #children
-# - #mountpoint?
-#
-# === File status predicate methods
-#
-# These methods are a facade for FileTest:
-# - #blockdev?
-# - #chardev?
-# - #directory?
-# - #executable?
-# - #executable_real?
-# - #exist?
-# - #file?
-# - #grpowned?
-# - #owned?
-# - #pipe?
-# - #readable?
-# - #world_readable?
-# - #readable_real?
-# - #setgid?
-# - #setuid?
-# - #size
-# - #size?
-# - #socket?
-# - #sticky?
-# - #symlink?
-# - #writable?
-# - #world_writable?
-# - #writable_real?
-# - #zero?
-#
-# === File property and manipulation methods
-#
-# These methods are a facade for File:
-# - #atime
-# - #ctime
-# - #mtime
-# - #chmod(mode)
-# - #lchmod(mode)
-# - #chown(owner, group)
-# - #lchown(owner, group)
-# - #fnmatch(pattern, *args)
-# - #fnmatch?(pattern, *args)
-# - #ftype
-# - #make_link(old)
-# - #open(*args, &block)
-# - #readlink
-# - #rename(to)
-# - #stat
-# - #lstat
-# - #make_symlink(old)
-# - #truncate(length)
-# - #utime(atime, mtime)
-# - #basename(*args)
-# - #dirname
-# - #extname
-# - #expand_path(*args)
-# - #split
-#
-# === Directory methods
-#
-# These methods are a facade for Dir:
-# - Pathname.glob(*args)
-# - Pathname.getwd / Pathname.pwd
-# - #rmdir
-# - #entries
-# - #each_entry(&block)
-# - #mkdir(*args)
-# - #opendir(*args)
-#
-# === IO
-#
-# These methods are a facade for IO:
-# - #each_line(*args, &block)
-# - #read(*args)
-# - #readlines(*args)
-# - #sysopen(*args)
-#
-# === Utilities
-#
-# These methods are a mixture of Find, FileUtils, and others:
-# - #find(&block)
-# - #mkpath
-# - #rmtree
-# - #unlink / #delete
-#
-#
-# == Method documentation
-#
-# As the above section shows, most of the methods in Pathname are facades.  The
-# documentation for these methods generally just says, for instance, "See
-# FileTest.writable?", as you should be familiar with the original method
-# anyway, and its documentation (e.g. through +ri+) will contain more
-# information.  In some cases, a brief description will follow.
-#
-class Pathname
-
-  # :stopdoc:
-  if RUBY_VERSION < "1.9"
-    TO_PATH = :to_str
-  else
-    # to_path is implemented so Pathname objects are usable with File.open, etc.
-    TO_PATH = :to_path
-  end
-  # :startdoc:
-
-  #
-  # Create a Pathname object from the given String (or String-like object).
-  # If +path+ contains a NUL character (<tt>\0</tt>), an ArgumentError is raised.
-  #
-  def initialize(path)
-    path = path.__send__(TO_PATH) if path.respond_to? TO_PATH
-    @path = path.dup
-
-    if /\0/ =~ @path
-      raise ArgumentError, "pathname contains \\0: #{@path.inspect}"
-    end
-
-    self.taint if @path.tainted?
-  end
-
-  def freeze() super; @path.freeze; self end
-  def taint() super; @path.taint; self end
-  def untaint() super; @path.untaint; self end
-
-  #
-  # Compare this pathname with +other+.  The comparison is string-based.
-  # Be aware that two different paths (<tt>foo.txt</tt> and <tt>./foo.txt</tt>)
-  # can refer to the same file.
-  #
-  def ==(other)
-    return false unless Pathname === other
-    other.to_s == @path
-  end
-  alias === ==
-  alias eql? ==
-
-  # Provides for comparing pathnames, case-sensitively.
-  def <=>(other)
-    return nil unless Pathname === other
-    @path.tr('/', "\0") <=> other.to_s.tr('/', "\0")
-  end
-
-  def hash # :nodoc:
-    @path.hash
-  end
-
-  # Return the path as a String.
-  def to_s
-    @path.dup
-  end
-
-  # to_path is implemented so Pathname objects are usable with File.open, etc.
-  alias_method TO_PATH, :to_s
-
-  def inspect # :nodoc:
-    "#<#{self.class}:#{@path}>"
-  end
-
-  # Return a pathname which is substituted by String#sub.
-  def sub(pattern, *rest, &block)
-    self.class.new(@path.sub(pattern, *rest, &block))
-  end
-
-  if File::ALT_SEPARATOR
-    SEPARATOR_PAT = /[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]/
-  else
-    SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
-  end
-
-  # chop_basename(path) -> [pre-basename, basename] or nil
-  def chop_basename(path)
-    base = File.basename(path)
-    if /\A#{SEPARATOR_PAT}?\z/ =~ base
-      return nil
-    else
-      return path[0, path.rindex(base)], base
-    end
-  end
-  private :chop_basename
-
-  # split_names(path) -> prefix, [name, ...]
-  def split_names(path)
-    names = []
-    while r = chop_basename(path)
-      path, basename = r
-      names.unshift basename
-    end
-    return path, names
-  end
-  private :split_names
-
-  def prepend_prefix(prefix, relpath)
-    if relpath.empty?
-      File.dirname(prefix)
-    elsif /#{SEPARATOR_PAT}/ =~ prefix
-      prefix = File.dirname(prefix)
-      prefix = File.join(prefix, "") if File.basename(prefix + 'a') != 'a'
-      prefix + relpath
-    else
-      prefix + relpath
-    end
-  end
-  private :prepend_prefix
-
-  # Returns clean pathname of +self+ with consecutive slashes and useless dots
-  # removed.  The filesystem is not accessed.
-  #
-  # If +consider_symlink+ is +true+, then a more conservative algorithm is used
-  # to avoid breaking symbolic linkages.  This may retain more <tt>..</tt>
-  # entries than absolutely necessary, but without accessing the filesystem,
-  # this can't be avoided.  See #realpath.
-  #
-  def cleanpath(consider_symlink=false)
-    if consider_symlink
-      cleanpath_conservative
-    else
-      cleanpath_aggressive
-    end
-  end
-
-  #
-  # Clean the path simply by resolving and removing excess "." and ".." entries.
-  # Nothing more, nothing less.
-  #
-  def cleanpath_aggressive
-    path = @path
-    names = []
-    pre = path
-    while r = chop_basename(pre)
-      pre, base = r
-      case base
-      when '.'
-      when '..'
-        names.unshift base
-      else
-        if names[0] == '..'
-          names.shift
-        else
-          names.unshift base
-        end
-      end
-    end
-    if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
-      names.shift while names[0] == '..'
-    end
-    self.class.new(prepend_prefix(pre, File.join(*names)))
-  end
-  private :cleanpath_aggressive
-
-  # has_trailing_separator?(path) -> bool
-  def has_trailing_separator?(path)
-    if r = chop_basename(path)
-      pre, basename = r
-      pre.length + basename.length < path.length
-    else
-      false
-    end
-  end
-  private :has_trailing_separator?
-
-  # add_trailing_separator(path) -> path
-  def add_trailing_separator(path)
-    if File.basename(path + 'a') == 'a'
-      path
-    else
-      File.join(path, "") # xxx: Is File.join is appropriate to add separator?
-    end
-  end
-  private :add_trailing_separator
-
-  def del_trailing_separator(path)
-    if r = chop_basename(path)
-      pre, basename = r
-      pre + basename
-    elsif /#{SEPARATOR_PAT}+\z/o =~ path
-      $` + File.dirname(path)[/#{SEPARATOR_PAT}*\z/o]
-    else
-      path
-    end
-  end
-  private :del_trailing_separator
-
-  def cleanpath_conservative
-    path = @path
-    names = []
-    pre = path
-    while r = chop_basename(pre)
-      pre, base = r
-      names.unshift base if base != '.'
-    end
-    if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
-      names.shift while names[0] == '..'
-    end
-    if names.empty?
-      self.class.new(File.dirname(pre))
-    else
-      if names.last != '..' && File.basename(path) == '.'
-        names << '.'
-      end
-      result = prepend_prefix(pre, File.join(*names))
-      if /\A(?:\.|\.\.)\z/ !~ names.last && has_trailing_separator?(path)
-        self.class.new(add_trailing_separator(result))
-      else
-        self.class.new(result)
-      end
-    end
-  end
-  private :cleanpath_conservative
-
-  def realpath_rec(prefix, unresolved, h)
-    resolved = []
-    until unresolved.empty?
-      n = unresolved.shift
-      if n == '.'
-        next
-      elsif n == '..'
-        resolved.pop
-      else
-        path = prepend_prefix(prefix, File.join(*(resolved + [n])))
-        if h.include? path
-          if h[path] == :resolving
-            raise Errno::ELOOP.new(path)
-          else
-            prefix, *resolved = h[path]
-          end
-        else
-          s = File.lstat(path)
-          if s.symlink?
-            h[path] = :resolving
-            link_prefix, link_names = split_names(File.readlink(path))
-            if link_prefix == ''
-              prefix, *resolved = h[path] = realpath_rec(prefix, resolved + link_names, h)
-            else
-              prefix, *resolved = h[path] = realpath_rec(link_prefix, link_names, h)
-            end
-          else
-            resolved << n
-            h[path] = [prefix, *resolved]
-          end
-        end
-      end
-    end
-    return prefix, *resolved
-  end
-  private :realpath_rec
-
-  #
-  # Returns a real (absolute) pathname of +self+ in the actual filesystem.
-  # The real pathname doesn't contain symlinks or useless dots.
-  #
-  # No arguments should be given; the old behaviour is *obsoleted*. 
-  #
-  def realpath
-    path = @path
-    prefix, names = split_names(path)
-    if prefix == ''
-      prefix, names2 = split_names(Dir.pwd)
-      names = names2 + names
-    end
-    prefix, *names = realpath_rec(prefix, names, {})
-    self.class.new(prepend_prefix(prefix, File.join(*names)))
-  end
-
-  # #parent returns the parent directory.
-  #
-  # This is same as <tt>self + '..'</tt>.
-  def parent
-    self + '..'
-  end
-
-  # #mountpoint? returns +true+ if <tt>self</tt> points to a mountpoint.
-  def mountpoint?
-    begin
-      stat1 = self.lstat
-      stat2 = self.parent.lstat
-      stat1.dev == stat2.dev && stat1.ino == stat2.ino ||
-        stat1.dev != stat2.dev
-    rescue Errno::ENOENT
-      false
-    end
-  end
-
-  #
-  # #root? is a predicate for root directories.  I.e. it returns +true+ if the
-  # pathname consists of consecutive slashes.
-  #
-  # It doesn't access actual filesystem.  So it may return +false+ for some
-  # pathnames which points to roots such as <tt>/usr/..</tt>.
-  #
-  def root?
-    !!(chop_basename(@path) == nil && /#{SEPARATOR_PAT}/o =~ @path)
-  end
-
-  # Predicate method for testing whether a path is absolute.
-  # It returns +true+ if the pathname begins with a slash.
-  def absolute?
-    !relative?
-  end
-
-  # The opposite of #absolute?
-  def relative?
-    path = @path
-    while r = chop_basename(path)
-      path, basename = r
-    end
-    path == ''
-  end
-
-  #
-  # Iterates over each component of the path.
-  #
-  #   Pathname.new("/usr/bin/ruby").each_filename {|filename| ... }
-  #     # yields "usr", "bin", and "ruby".
-  #
-  def each_filename # :yield: filename
-    prefix, names = split_names(@path)
-    names.each {|filename| yield filename }
-    nil
-  end
-
-  # Iterates over and yields a new Pathname object
-  # for each element in the given path in descending order.
-  #
-  #  Pathname.new('/path/to/some/file.rb').descend {|v| p v}
-  #     #<Pathname:/>
-  #     #<Pathname:/path>
-  #     #<Pathname:/path/to>
-  #     #<Pathname:/path/to/some>
-  #     #<Pathname:/path/to/some/file.rb>
-  #
-  #  Pathname.new('path/to/some/file.rb').descend {|v| p v}
-  #     #<Pathname:path>
-  #     #<Pathname:path/to>
-  #     #<Pathname:path/to/some>
-  #     #<Pathname:path/to/some/file.rb>
-  #
-  # It doesn't access actual filesystem.
-  #
-  # This method is available since 1.8.5.
-  #
-  def descend
-    vs = []
-    ascend {|v| vs << v }
-    vs.reverse_each {|v| yield v }
-    nil
-  end
-
-  # Iterates over and yields a new Pathname object
-  # for each element in the given path in ascending order.
-  #
-  #  Pathname.new('/path/to/some/file.rb').ascend {|v| p v}
-  #     #<Pathname:/path/to/some/file.rb>
-  #     #<Pathname:/path/to/some>
-  #     #<Pathname:/path/to>
-  #     #<Pathname:/path>
-  #     #<Pathname:/>
-  #
-  #  Pathname.new('path/to/some/file.rb').ascend {|v| p v}
-  #     #<Pathname:path/to/some/file.rb>
-  #     #<Pathname:path/to/some>
-  #     #<Pathname:path/to>
-  #     #<Pathname:path>
-  #
-  # It doesn't access actual filesystem.
-  #
-  # This method is available since 1.8.5.
-  #
-  def ascend
-    path = @path
-    yield self
-    while r = chop_basename(path)
-      path, name = r
-      break if path.empty?
-      yield self.class.new(del_trailing_separator(path))
-    end
-  end
-
-  #
-  # Pathname#+ appends a pathname fragment to this one to produce a new Pathname
-  # object.
-  #
-  #   p1 = Pathname.new("/usr")      # Pathname:/usr
-  #   p2 = p1 + "bin/ruby"           # Pathname:/usr/bin/ruby
-  #   p3 = p1 + "/etc/passwd"        # Pathname:/etc/passwd
-  #
-  # This method doesn't access the file system; it is pure string manipulation. 
-  #
-  def +(other)
-    other = Pathname.new(other) unless Pathname === other
-    Pathname.new(plus(@path, other.to_s))
-  end
-
-  def plus(path1, path2) # -> path
-    prefix2 = path2
-    index_list2 = []
-    basename_list2 = []
-    while r2 = chop_basename(prefix2)
-      prefix2, basename2 = r2
-      index_list2.unshift prefix2.length
-      basename_list2.unshift basename2
-    end
-    return path2 if prefix2 != ''
-    prefix1 = path1
-    while true
-      while !basename_list2.empty? && basename_list2.first == '.'
-        index_list2.shift
-        basename_list2.shift
-      end
-      break unless r1 = chop_basename(prefix1)
-      prefix1, basename1 = r1
-      next if basename1 == '.'
-      if basename1 == '..' || basename_list2.empty? || basename_list2.first != '..'
-        prefix1 = prefix1 + basename1
-        break
-      end
-      index_list2.shift
-      basename_list2.shift
-    end
-    r1 = chop_basename(prefix1)
-    if !r1 && /#{SEPARATOR_PAT}/o =~ File.basename(prefix1)
-      while !basename_list2.empty? && basename_list2.first == '..'
-        index_list2.shift
-        basename_list2.shift
-      end
-    end
-    if !basename_list2.empty?
-      suffix2 = path2[index_list2.first..-1]
-      r1 ? File.join(prefix1, suffix2) : prefix1 + suffix2
-    else
-      r1 ? prefix1 : File.dirname(prefix1)
-    end
-  end
-  private :plus
-
-  #
-  # Pathname#join joins pathnames.
-  #
-  # <tt>path0.join(path1, ..., pathN)</tt> is the same as
-  # <tt>path0 + path1 + ... + pathN</tt>.
-  #
-  def join(*args)
-    args.unshift self
-    result = args.pop
-    result = Pathname.new(result) unless Pathname === result
-    return result if result.absolute?
-    args.reverse_each {|arg|
-      arg = Pathname.new(arg) unless Pathname === arg
-      result = arg + result
-      return result if result.absolute?
-    }
-    result
-  end
-
-  #
-  # Returns the children of the directory (files and subdirectories, not
-  # recursive) as an array of Pathname objects.  By default, the returned
-  # pathnames will have enough information to access the files.  If you set
-  # +with_directory+ to +false+, then the returned pathnames will contain the
-  # filename only.
-  #
-  # For example:
-  #   p = Pathname("/usr/lib/ruby/1.8")
-  #   p.children
-  #       # -> [ Pathname:/usr/lib/ruby/1.8/English.rb,
-  #              Pathname:/usr/lib/ruby/1.8/Env.rb,
-  #              Pathname:/usr/lib/ruby/1.8/abbrev.rb, ... ]
-  #   p.children(false)
-  #       # -> [ Pathname:English.rb, Pathname:Env.rb, Pathname:abbrev.rb, ... ]
-  #
-  # Note that the result never contain the entries <tt>.</tt> and <tt>..</tt> in
-  # the directory because they are not children.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def children(with_directory=true)
-    with_directory = false if @path == '.'
-    result = []
-    Dir.foreach(@path) {|e|
-      next if e == '.' || e == '..'
-      if with_directory
-        result << self.class.new(File.join(@path, e))
-      else
-        result << self.class.new(e)
-      end
-    }
-    result
-  end
-
-  #
-  # #relative_path_from returns a relative path from the argument to the
-  # receiver.  If +self+ is absolute, the argument must be absolute too.  If
-  # +self+ is relative, the argument must be relative too.
-  #
-  # #relative_path_from doesn't access the filesystem.  It assumes no symlinks.
-  #
-  # ArgumentError is raised when it cannot find a relative path.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def relative_path_from(base_directory)
-    dest_directory = self.cleanpath.to_s
-    base_directory = base_directory.cleanpath.to_s
-    dest_prefix = dest_directory
-    dest_names = []
-    while r = chop_basename(dest_prefix)
-      dest_prefix, basename = r
-      dest_names.unshift basename if basename != '.'
-    end
-    base_prefix = base_directory
-    base_names = []
-    while r = chop_basename(base_prefix)
-      base_prefix, basename = r
-      base_names.unshift basename if basename != '.'
-    end
-    if dest_prefix != base_prefix
-      raise ArgumentError, "different prefix: #{dest_prefix.inspect} and #{base_directory.inspect}"
-    end
-    while !dest_names.empty? &&
-          !base_names.empty? &&
-          dest_names.first == base_names.first
-      dest_names.shift
-      base_names.shift
-    end
-    if base_names.include? '..'
-      raise ArgumentError, "base_directory has ..: #{base_directory.inspect}"
-    end
-    base_names.fill('..')
-    relpath_names = base_names + dest_names
-    if relpath_names.empty?
-      Pathname.new('.')
-    else
-      Pathname.new(File.join(*relpath_names))
-    end
-  end
-end
-
-class Pathname    # * IO *
-  #
-  # #each_line iterates over the line in the file.  It yields a String object
-  # for each line.
-  #
-  # This method has existed since 1.8.1.
-  #
-  def each_line(*args, &block) # :yield: line
-    IO.foreach(@path, *args, &block)
-  end
-
-  # Pathname#foreachline is *obsoleted* at 1.8.1.  Use #each_line.
-  def foreachline(*args, &block)
-    warn "Pathname#foreachline is obsoleted.  Use Pathname#each_line."
-    each_line(*args, &block)
-  end
-
-  # See <tt>IO.read</tt>.  Returns all the bytes from the file, or the first +N+
-  # if specified.
-  def read(*args) IO.read(@path, *args) end
-
-  # See <tt>IO.readlines</tt>.  Returns all the lines from the file.
-  def readlines(*args) IO.readlines(@path, *args) end
-
-  # See <tt>IO.sysopen</tt>.
-  def sysopen(*args) IO.sysopen(@path, *args) end
-end
-
-
-class Pathname    # * File *
-
-  # See <tt>File.atime</tt>.  Returns last access time.
-  def atime() File.atime(@path) end
-
-  # See <tt>File.ctime</tt>.  Returns last (directory entry, not file) change time.
-  def ctime() File.ctime(@path) end
-
-  # See <tt>File.mtime</tt>.  Returns last modification time.
-  def mtime() File.mtime(@path) end
-
-  # See <tt>File.chmod</tt>.  Changes permissions.
-  def chmod(mode) File.chmod(mode, @path) end
-
-  # See <tt>File.lchmod</tt>.
-  def lchmod(mode) File.lchmod(mode, @path) end
-
-  # See <tt>File.chown</tt>.  Change owner and group of file.
-  def chown(owner, group) File.chown(owner, group, @path) end
-
-  # See <tt>File.lchown</tt>.
-  def lchown(owner, group) File.lchown(owner, group, @path) end
-
-  # See <tt>File.fnmatch</tt>.  Return +true+ if the receiver matches the given
-  # pattern.
-  def fnmatch(pattern, *args) File.fnmatch(pattern, @path, *args) end
-
-  # See <tt>File.fnmatch?</tt> (same as #fnmatch).
-  def fnmatch?(pattern, *args) File.fnmatch?(pattern, @path, *args) end
-
-  # See <tt>File.ftype</tt>.  Returns "type" of file ("file", "directory",
-  # etc).
-  def ftype() File.ftype(@path) end
-
-  # See <tt>File.link</tt>.  Creates a hard link.
-  def make_link(old) File.link(old, @path) end
-
-  # See <tt>File.open</tt>.  Opens the file for reading or writing.
-  def open(*args, &block) # :yield: file
-    File.open(@path, *args, &block)
-  end
-
-  # See <tt>File.readlink</tt>.  Read symbolic link.
-  def readlink() self.class.new(File.readlink(@path)) end
-
-  # See <tt>File.rename</tt>.  Rename the file.
-  def rename(to) File.rename(@path, to) end
-
-  # See <tt>File.stat</tt>.  Returns a <tt>File::Stat</tt> object.
-  def stat() File.stat(@path) end
-
-  # See <tt>File.lstat</tt>.
-  def lstat() File.lstat(@path) end
-
-  # See <tt>File.symlink</tt>.  Creates a symbolic link.
-  def make_symlink(old) File.symlink(old, @path) end
-
-  # See <tt>File.truncate</tt>.  Truncate the file to +length+ bytes.
-  def truncate(length) File.truncate(@path, length) end
-
-  # See <tt>File.utime</tt>.  Update the access and modification times.
-  def utime(atime, mtime) File.utime(atime, mtime, @path) end
-
-  # See <tt>File.basename</tt>.  Returns the last component of the path.
-  def basename(*args) self.class.new(File.basename(@path, *args)) end
-
-  # See <tt>File.dirname</tt>.  Returns all but the last component of the path.
-  def dirname() self.class.new(File.dirname(@path)) end
-
-  # See <tt>File.extname</tt>.  Returns the file's extension.
-  def extname() File.extname(@path) end
-
-  # See <tt>File.expand_path</tt>.
-  def expand_path(*args) self.class.new(File.expand_path(@path, *args)) end
-
-  # See <tt>File.split</tt>.  Returns the #dirname and the #basename in an
-  # Array.
-  def split() File.split(@path).map {|f| self.class.new(f) } end
-
-  # Pathname#link is confusing and *obsoleted* because the receiver/argument
-  # order is inverted to corresponding system call.
-  def link(old)
-    warn 'Pathname#link is obsoleted.  Use Pathname#make_link.'
-    File.link(old, @path)
-  end
-
-  # Pathname#symlink is confusing and *obsoleted* because the receiver/argument
-  # order is inverted to corresponding system call.
-  def symlink(old)
-    warn 'Pathname#symlink is obsoleted.  Use Pathname#make_symlink.'
-    File.symlink(old, @path)
-  end
-end
-
-
-class Pathname    # * FileTest *
-
-  # See <tt>FileTest.blockdev?</tt>.
-  def blockdev?() FileTest.blockdev?(@path) end
-
-  # See <tt>FileTest.chardev?</tt>.
-  def chardev?() FileTest.chardev?(@path) end
-
-  # See <tt>FileTest.executable?</tt>.
-  def executable?() FileTest.executable?(@path) end
-
-  # See <tt>FileTest.executable_real?</tt>.
-  def executable_real?() FileTest.executable_real?(@path) end
-
-  # See <tt>FileTest.exist?</tt>.
-  def exist?() FileTest.exist?(@path) end
-
-  # See <tt>FileTest.grpowned?</tt>.
-  def grpowned?() FileTest.grpowned?(@path) end
-
-  # See <tt>FileTest.directory?</tt>.
-  def directory?() FileTest.directory?(@path) end
-
-  # See <tt>FileTest.file?</tt>.
-  def file?() FileTest.file?(@path) end
-
-  # See <tt>FileTest.pipe?</tt>.
-  def pipe?() FileTest.pipe?(@path) end
-
-  # See <tt>FileTest.socket?</tt>.
-  def socket?() FileTest.socket?(@path) end
-
-  # See <tt>FileTest.owned?</tt>.
-  def owned?() FileTest.owned?(@path) end
-
-  # See <tt>FileTest.readable?</tt>.
-  def readable?() FileTest.readable?(@path) end
-
-  # See <tt>FileTest.world_readable?</tt>.
-  def world_readable?() FileTest.world_readable?(@path) end
-
-  # See <tt>FileTest.readable_real?</tt>.
-  def readable_real?() FileTest.readable_real?(@path) end
-
-  # See <tt>FileTest.setuid?</tt>.
-  def setuid?() FileTest.setuid?(@path) end
-
-  # See <tt>FileTest.setgid?</tt>.
-  def setgid?() FileTest.setgid?(@path) end
-
-  # See <tt>FileTest.size</tt>.
-  def size() FileTest.size(@path) end
-
-  # See <tt>FileTest.size?</tt>.
-  def size?() FileTest.size?(@path) end
-
-  # See <tt>FileTest.sticky?</tt>.
-  def sticky?() FileTest.sticky?(@path) end
-
-  # See <tt>FileTest.symlink?</tt>.
-  def symlink?() FileTest.symlink?(@path) end
-
-  # See <tt>FileTest.writable?</tt>.
-  def writable?() FileTest.writable?(@path) end
-
-  # See <tt>FileTest.world_writable?</tt>.
-  def world_writable?() FileTest.world_writable?(@path) end
-
-  # See <tt>FileTest.writable_real?</tt>.
-  def writable_real?() FileTest.writable_real?(@path) end
-
-  # See <tt>FileTest.zero?</tt>.
-  def zero?() FileTest.zero?(@path) end
-end
-
-
-class Pathname    # * Dir *
-  # See <tt>Dir.glob</tt>.  Returns or yields Pathname objects.
-  def Pathname.glob(*args) # :yield: p
-    if block_given?
-      Dir.glob(*args) {|f| yield self.new(f) }
-    else
-      Dir.glob(*args).map {|f| self.new(f) }
-    end
-  end
-
-  # See <tt>Dir.getwd</tt>.  Returns the current working directory as a Pathname.
-  def Pathname.getwd() self.new(Dir.getwd) end
-  class << self; alias pwd getwd end
-
-  # Pathname#chdir is *obsoleted* at 1.8.1.
-  def chdir(&block)
-    warn "Pathname#chdir is obsoleted.  Use Dir.chdir."
-    Dir.chdir(@path, &block)
-  end
-
-  # Pathname#chroot is *obsoleted* at 1.8.1.
-  def chroot
-    warn "Pathname#chroot is obsoleted.  Use Dir.chroot."
-    Dir.chroot(@path)
-  end
-
-  # Return the entries (files and subdirectories) in the directory, each as a
-  # Pathname object.
-  def entries() Dir.entries(@path).map {|f| self.class.new(f) } end
-
-  # Iterates over the entries (files and subdirectories) in the directory.  It
-  # yields a Pathname object for each entry.
-  #
-  # This method has existed since 1.8.1.
-  def each_entry(&block) # :yield: p
-    Dir.foreach(@path) {|f| yield self.class.new(f) }
-  end
-
-  # Pathname#dir_foreach is *obsoleted* at 1.8.1.
-  def dir_foreach(*args, &block)
-    warn "Pathname#dir_foreach is obsoleted.  Use Pathname#each_entry."
-    each_entry(*args, &block)
-  end
-
-  # See <tt>Dir.mkdir</tt>.  Create the referenced directory.
-  def mkdir(*args) Dir.mkdir(@path, *args) end
-
-  # See <tt>Dir.rmdir</tt>.  Remove the referenced directory.
-  def rmdir() Dir.rmdir(@path) end
-
-  # See <tt>Dir.open</tt>.
-  def opendir(&block) # :yield: dir
-    Dir.open(@path, &block)
-  end
-end
-
-
-class Pathname    # * Find *
-  #
-  # Pathname#find is an iterator to traverse a directory tree in a depth first
-  # manner.  It yields a Pathname for each file under "this" directory.
-  #
-  # Since it is implemented by <tt>find.rb</tt>, <tt>Find.prune</tt> can be used
-  # to control the traverse.
-  #
-  # If +self+ is <tt>.</tt>, yielded pathnames begin with a filename in the
-  # current directory, not <tt>./</tt>.
-  #
-  def find(&block) # :yield: p
-    require 'find'
-    if @path == '.'
-      Find.find(@path) {|f| yield self.class.new(f.sub(%r{\A\./}, '')) }
-    else
-      Find.find(@path) {|f| yield self.class.new(f) }
-    end
-  end
-end
-
-
-class Pathname    # * FileUtils *
-  # See <tt>FileUtils.mkpath</tt>.  Creates a full path, including any
-  # intermediate directories that don't yet exist.
-  def mkpath
-    require 'fileutils'
-    FileUtils.mkpath(@path)
-    nil
-  end
-
-  # See <tt>FileUtils.rm_r</tt>.  Deletes a directory and all beneath it.
-  def rmtree
-    # The name "rmtree" is borrowed from File::Path of Perl.
-    # File::Path provides "mkpath" and "rmtree".
-    require 'fileutils'
-    FileUtils.rm_r(@path)
-    nil
-  end
-end
-
-
-class Pathname    # * mixed *
-  # Removes a file or directory, using <tt>File.unlink</tt> or
-  # <tt>Dir.unlink</tt> as necessary.
-  def unlink()
-    begin
-      Dir.unlink @path
-    rescue Errno::ENOTDIR
-      File.unlink @path
-    end
-  end
-  alias delete unlink
-
-  # This method is *obsoleted* at 1.8.1.  Use #each_line or #each_entry.
-  def foreach(*args, &block)
-    warn "Pathname#foreach is obsoleted.  Use each_line or each_entry."
-    if FileTest.directory? @path
-      # For polymorphism between Dir.foreach and IO.foreach,
-      # Pathname#foreach doesn't yield Pathname object.
-      Dir.foreach(@path, *args, &block)
-    else
-      IO.foreach(@path, *args, &block)
-    end
-  end
-end
-
-module Kernel
-  # create a pathname object.
-  #
-  # This method is available since 1.8.5.
-  def Pathname(path) # :doc:
-    Pathname.new(path)
-  end
-  private :Pathname
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ping.rb
deleted file mode 100644
index c2966b6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/ping.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# = ping.rb: Check a host for upness
-#
-# Author:: Yukihiro Matsumoto
-# Documentation:: Konrad Meyer
-# 
-# Performs the function of the basic network testing tool, ping.
-# See: Ping.
-#
-
-require 'timeout'
-require "socket"
-
-# 
-# Ping contains routines to test for the reachability of remote hosts.
-# Currently the only routine implemented is pingecho().
-#
-# Ping.pingecho uses a TCP echo (not an ICMP echo) to determine if the
-# remote host is reachable. This is usually adequate to tell that a remote
-# host is available to telnet, ftp, or ssh to.
-#
-# Warning: Ping.pingecho may block for a long time if DNS resolution is
-# slow. Requiring 'resolv-replace' allows non-blocking name resolution.
-#
-# Usage:
-# 
-#   require 'ping'
-#
-#   puts "'jimmy' is alive and kicking" if Ping.pingecho('jimmy', 10)
-#
-module Ping
-
-  # 
-  # Return true if we can open a connection to the hostname or IP address
-  # +host+ on port +service+ (which defaults to the "echo" port) waiting up
-  # to +timeout+ seconds.
-  #
-  # Example:
-  #
-  #   require 'ping'
-  #
-  #   Ping.pingecho "google.com", 10, 80
-  #
-  def pingecho(host, timeout=5, service="echo")
-    begin
-      timeout(timeout) do
-	s = TCPSocket.new(host, service)
-	s.close
-      end
-    rescue Errno::ECONNREFUSED
-      return true
-    rescue Timeout::Error, StandardError
-      return false
-    end
-    return true
-  end
-  module_function :pingecho
-end
-
-if $0 == __FILE__
-  host = ARGV[0]
-  host ||= "localhost"
-  printf("%s alive? - %s\n", host,  Ping::pingecho(host, 5))
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pp.rb
deleted file mode 100644
index 8080d87..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pp.rb
+++ /dev/null
@@ -1,647 +0,0 @@
-# == Pretty-printer for Ruby objects.
-# 
-# = Which seems better?
-# 
-# non-pretty-printed output by #p is:
-#   #<PP:0x81fedf0 @genspace=#<Proc:0x81feda0>, @group_queue=#<PrettyPrint::GroupQueue:0x81fed3c @queue=[[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], []]>, @buffer=[], @newline="\n", @group_stack=[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], @buffer_width=0, @indent=0, @maxwidth=79, @output_width=2, @output=#<IO:0x8114ee4>>
-# 
-# pretty-printed output by #pp is:
-#   #<PP:0x81fedf0
-#    @buffer=[],
-#    @buffer_width=0,
-#    @genspace=#<Proc:0x81feda0>,
-#    @group_queue=
-#     #<PrettyPrint::GroupQueue:0x81fed3c
-#      @queue=
-#       [[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
-#        []]>,
-#    @group_stack=
-#     [#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
-#    @indent=0,
-#    @maxwidth=79,
-#    @newline="\n",
-#    @output=#<IO:0x8114ee4>,
-#    @output_width=2>
-# 
-# I like the latter.  If you do too, this library is for you.
-# 
-# = Usage
-# 
-#   pp(obj)
-#
-# output +obj+ to +$>+ in pretty printed format.
-# 
-# It returns +nil+.
-# 
-# = Output Customization
-# To define your customized pretty printing function for your classes,
-# redefine a method #pretty_print(+pp+) in the class.
-# It takes an argument +pp+ which is an instance of the class PP.
-# The method should use PP#text, PP#breakable, PP#nest, PP#group and
-# PP#pp to print the object.
-#
-# = Author
-# Tanaka Akira <akr at m17n.org>
-
-require 'prettyprint'
-
-module Kernel
-  # returns a pretty printed object as a string.
-  def pretty_inspect
-    PP.pp(self, '')
-  end
-
-  private
-  # prints arguments in pretty form.
-  #
-  # pp returns nil.
-  def pp(*objs) # :doc:
-    objs.each {|obj|
-      PP.pp(obj)
-    }
-    nil
-  end
-  module_function :pp
-end
-
-class PP < PrettyPrint
-  # Outputs +obj+ to +out+ in pretty printed format of
-  # +width+ columns in width.
-  # 
-  # If +out+ is omitted, +$>+ is assumed.
-  # If +width+ is omitted, 79 is assumed.
-  # 
-  # PP.pp returns +out+.
-  def PP.pp(obj, out=$>, width=79)
-    q = PP.new(out, width)
-    q.guard_inspect_key {q.pp obj}
-    q.flush
-    #$pp = q
-    out << "\n"
-  end
-
-  # Outputs +obj+ to +out+ like PP.pp but with no indent and
-  # newline.
-  # 
-  # PP.singleline_pp returns +out+.
-  def PP.singleline_pp(obj, out=$>)
-    q = SingleLine.new(out)
-    q.guard_inspect_key {q.pp obj}
-    q.flush
-    out
-  end
-
-  # :stopdoc:
-  def PP.mcall(obj, mod, meth, *args, &block)
-    mod.instance_method(meth).bind(obj).call(*args, &block)
-  end
-  # :startdoc:
-
-  @sharing_detection = false
-  class << self
-    # Returns the sharing detection flag as a boolean value.
-    # It is false by default.
-    attr_accessor :sharing_detection
-  end
-
-  module PPMethods
-    InspectKey = :__inspect_key__
-
-    def guard_inspect_key
-      if Thread.current[InspectKey] == nil
-        Thread.current[InspectKey] = []
-      end
-
-      save = Thread.current[InspectKey]
-
-      begin
-        Thread.current[InspectKey] = []
-        yield
-      ensure
-        Thread.current[InspectKey] = save
-      end
-    end
-
-    # Adds +obj+ to the pretty printing buffer
-    # using Object#pretty_print or Object#pretty_print_cycle.
-    # 
-    # Object#pretty_print_cycle is used when +obj+ is already
-    # printed, a.k.a the object reference chain has a cycle.
-    def pp(obj)
-      id = obj.__id__
-
-      if Thread.current[InspectKey].include? id
-        group {obj.pretty_print_cycle self}
-        return
-      end
-
-      begin
-        Thread.current[InspectKey] << id
-        group {obj.pretty_print self}
-      ensure
-        Thread.current[InspectKey].pop unless PP.sharing_detection
-      end
-    end
-
-    # A convenience method which is same as follows:
-    # 
-    #   group(1, '#<' + obj.class.name, '>') { ... }
-    def object_group(obj, &block) # :yield:
-      group(1, '#<' + obj.class.name, '>', &block)
-    end
-
-    def object_address_group(obj, &block)
-      id = "%x" % (obj.__id__ * 2)
-      id.sub!(/\Af(?=[[:xdigit:]]{2}+\z)/, '') if id.sub!(/\A\.\./, '')
-      group(1, "\#<#{obj.class}:0x#{id}", '>', &block)
-    end
-
-    # A convenience method which is same as follows:
-    # 
-    #   text ','
-    #   breakable
-    def comma_breakable
-      text ','
-      breakable
-    end
-
-    # Adds a separated list.
-    # The list is separated by comma with breakable space, by default.
-    # 
-    # #seplist iterates the +list+ using +iter_method+.
-    # It yields each object to the block given for #seplist.
-    # The procedure +separator_proc+ is called between each yields.
-    # 
-    # If the iteration is zero times, +separator_proc+ is not called at all.
-    # 
-    # If +separator_proc+ is nil or not given,
-    # +lambda { comma_breakable }+ is used.
-    # If +iter_method+ is not given, :each is used.
-    # 
-    # For example, following 3 code fragments has similar effect.
-    # 
-    #   q.seplist([1,2,3]) {|v| xxx v }
-    # 
-    #   q.seplist([1,2,3], lambda { comma_breakable }, :each) {|v| xxx v }
-    # 
-    #   xxx 1
-    #   q.comma_breakable
-    #   xxx 2
-    #   q.comma_breakable
-    #   xxx 3
-    def seplist(list, sep=nil, iter_method=:each) # :yield: element
-      sep ||= lambda { comma_breakable }
-      first = true
-      list.__send__(iter_method) {|*v|
-        if first
-          first = false
-        else
-          sep.call
-        end
-        yield(*v)
-      }
-    end
-
-    def pp_object(obj)
-      object_address_group(obj) {
-        seplist(obj.pretty_print_instance_variables, lambda { text ',' }) {|v|
-          breakable
-          v = v.to_s if Symbol === v
-          text v
-          text '='
-          group(1) {
-            breakable ''
-            pp(obj.instance_eval(v))
-          }
-        }
-      }
-    end
-
-    def pp_hash(obj)
-      group(1, '{', '}') {
-        seplist(obj, nil, :each_pair) {|k, v|
-          group {
-            pp k
-            text '=>'
-            group(1) {
-              breakable ''
-              pp v
-            }
-          }
-        }
-      }
-    end
-  end
-
-  include PPMethods
-
-  class SingleLine < PrettyPrint::SingleLine
-    include PPMethods
-  end
-
-  module ObjectMixin
-    # 1. specific pretty_print
-    # 2. specific inspect
-    # 3. specific to_s if instance variable is empty
-    # 4. generic pretty_print
-
-    # A default pretty printing method for general objects.
-    # It calls #pretty_print_instance_variables to list instance variables.
-    # 
-    # If +self+ has a customized (redefined) #inspect method,
-    # the result of self.inspect is used but it obviously has no
-    # line break hints.
-    # 
-    # This module provides predefined #pretty_print methods for some of
-    # the most commonly used built-in classes for convenience.
-    def pretty_print(q)
-      if /\(Kernel\)#/ !~ method(:inspect).inspect
-        q.text self.inspect
-      elsif /\(Kernel\)#/ !~ method(:to_s).inspect && instance_variables.empty?
-        q.text self.to_s
-      else
-        q.pp_object(self)
-      end
-    end
-
-    # A default pretty printing method for general objects that are
-    # detected as part of a cycle.
-    def pretty_print_cycle(q)
-      q.object_address_group(self) {
-        q.breakable
-        q.text '...'
-      }
-    end
-
-    # Returns a sorted array of instance variable names.
-    # 
-    # This method should return an array of names of instance variables as symbols or strings as:
-    # +[:@a, :@b]+.
-    def pretty_print_instance_variables
-      instance_variables.sort
-    end
-
-    # Is #inspect implementation using #pretty_print.
-    # If you implement #pretty_print, it can be used as follows.
-    # 
-    #   alias inspect pretty_print_inspect
-    #
-    # However, doing this requires that every class that #inspect is called on
-    # implement #pretty_print, or a RuntimeError will be raised.
-    def pretty_print_inspect
-      if /\(PP::ObjectMixin\)#/ =~ method(:pretty_print).inspect
-        raise "pretty_print is not overridden for #{self.class}"
-      end
-      PP.singleline_pp(self, '')
-    end
-  end
-end
-
-class Array
-  def pretty_print(q)
-    q.group(1, '[', ']') {
-      q.seplist(self) {|v|
-        q.pp v
-      }
-    }
-  end
-
-  def pretty_print_cycle(q)
-    q.text(empty? ? '[]' : '[...]')
-  end
-end
-
-class Hash
-  def pretty_print(q)
-    q.pp_hash self
-  end
-
-  def pretty_print_cycle(q)
-    q.text(empty? ? '{}' : '{...}')
-  end
-end
-
-class << ENV
-  def pretty_print(q)
-    q.pp_hash self
-  end
-end
-
-class Struct
-  def pretty_print(q)
-    q.group(1, '#<struct ' + PP.mcall(self, Kernel, :class).name, '>') {
-      q.seplist(PP.mcall(self, Struct, :members), lambda { q.text "," }) {|member|
-        q.breakable
-        q.text member.to_s
-        q.text '='
-        q.group(1) {
-          q.breakable ''
-          q.pp self[member]
-        }
-      }
-    }
-  end
-
-  def pretty_print_cycle(q)
-    q.text sprintf("#<struct %s:...>", PP.mcall(self, Kernel, :class).name)
-  end
-end
-
-class Range
-  def pretty_print(q)
-    q.pp self.begin
-    q.breakable ''
-    q.text(self.exclude_end? ? '...' : '..')
-    q.breakable ''
-    q.pp self.end
-  end
-end
-
-class File
-  class Stat
-    def pretty_print(q)
-      require 'etc.so'
-      q.object_group(self) {
-        q.breakable
-        q.text sprintf("dev=0x%x", self.dev); q.comma_breakable
-        q.text "ino="; q.pp self.ino; q.comma_breakable
-        q.group {
-          m = self.mode
-          q.text sprintf("mode=0%o", m)
-          q.breakable
-          q.text sprintf("(%s %c%c%c%c%c%c%c%c%c)",
-            self.ftype,
-            (m & 0400 == 0 ? ?- : ?r),
-            (m & 0200 == 0 ? ?- : ?w),
-            (m & 0100 == 0 ? (m & 04000 == 0 ? ?- : ?S) :
-                             (m & 04000 == 0 ? ?x : ?s)),
-            (m & 0040 == 0 ? ?- : ?r),
-            (m & 0020 == 0 ? ?- : ?w),
-            (m & 0010 == 0 ? (m & 02000 == 0 ? ?- : ?S) :
-                             (m & 02000 == 0 ? ?x : ?s)),
-            (m & 0004 == 0 ? ?- : ?r),
-            (m & 0002 == 0 ? ?- : ?w),
-            (m & 0001 == 0 ? (m & 01000 == 0 ? ?- : ?T) :
-                             (m & 01000 == 0 ? ?x : ?t)))
-        }
-        q.comma_breakable
-        q.text "nlink="; q.pp self.nlink; q.comma_breakable
-        q.group {
-          q.text "uid="; q.pp self.uid
-          begin
-            pw = Etc.getpwuid(self.uid)
-          rescue ArgumentError
-          end
-          if pw
-            q.breakable; q.text "(#{pw.name})"
-          end
-        }
-        q.comma_breakable
-        q.group {
-          q.text "gid="; q.pp self.gid
-          begin
-            gr = Etc.getgrgid(self.gid)
-          rescue ArgumentError
-          end
-          if gr
-            q.breakable; q.text "(#{gr.name})"
-          end
-        }
-        q.comma_breakable
-        q.group {
-          q.text sprintf("rdev=0x%x", self.rdev)
-          q.breakable
-          q.text sprintf('(%d, %d)', self.rdev_major, self.rdev_minor)
-        }
-        q.comma_breakable
-        q.text "size="; q.pp self.size; q.comma_breakable
-        q.text "blksize="; q.pp self.blksize; q.comma_breakable
-        q.text "blocks="; q.pp self.blocks; q.comma_breakable
-        q.group {
-          t = self.atime
-          q.text "atime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-        q.comma_breakable
-        q.group {
-          t = self.mtime
-          q.text "mtime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-        q.comma_breakable
-        q.group {
-          t = self.ctime
-          q.text "ctime="; q.pp t
-          q.breakable; q.text "(#{t.tv_sec})"
-        }
-      }
-    end
-  end
-end
-
-class MatchData
-  def pretty_print(q)
-    q.object_group(self) {
-      q.breakable
-      q.seplist(1..self.size, lambda { q.breakable }) {|i|
-        q.pp self[i-1]
-      }
-    }
-  end
-end
-
-class Object
-  include PP::ObjectMixin
-end
-
-[Numeric, Symbol, FalseClass, TrueClass, NilClass, Module].each {|c|
-  c.class_eval {
-    def pretty_print_cycle(q)
-      q.text inspect
-    end
-  }
-}
-
-[Numeric, FalseClass, TrueClass, Module].each {|c|
-  c.class_eval {
-    def pretty_print(q)
-      q.text inspect
-    end
-  }
-}
-
-# :enddoc:
-if __FILE__ == $0
-  require 'test/unit'
-
-  class PPTest < Test::Unit::TestCase
-    def test_list0123_12
-      assert_equal("[0, 1, 2, 3]\n", PP.pp([0,1,2,3], '', 12))
-    end
-
-    def test_list0123_11
-      assert_equal("[0,\n 1,\n 2,\n 3]\n", PP.pp([0,1,2,3], '', 11))
-    end
-
-    OverriddenStruct = Struct.new("OverriddenStruct", :members, :class)
-    def test_struct_override_members # [ruby-core:7865]
-      a = OverriddenStruct.new(1,2)
-      assert_equal("#<struct Struct::OverriddenStruct members=1, class=2>\n", PP.pp(a, ''))
-    end
-  end
-
-  class HasInspect
-    def initialize(a)
-      @a = a
-    end
-
-    def inspect
-      return "<inspect:#{@a.inspect}>"
-    end
-  end
-
-  class HasPrettyPrint
-    def initialize(a)
-      @a = a
-    end
-
-    def pretty_print(q)
-      q.text "<pretty_print:"
-      q.pp @a
-      q.text ">"
-    end
-  end
-
-  class HasBoth
-    def initialize(a)
-      @a = a
-    end
-
-    def inspect
-      return "<inspect:#{@a.inspect}>"
-    end
-
-    def pretty_print(q)
-      q.text "<pretty_print:"
-      q.pp @a
-      q.text ">"
-    end
-  end
-
-  class PrettyPrintInspect < HasPrettyPrint
-    alias inspect pretty_print_inspect
-  end
-
-  class PrettyPrintInspectWithoutPrettyPrint
-    alias inspect pretty_print_inspect
-  end
-
-  class PPInspectTest < Test::Unit::TestCase
-    def test_hasinspect
-      a = HasInspect.new(1)
-      assert_equal("<inspect:1>\n", PP.pp(a, ''))
-    end
-
-    def test_hasprettyprint
-      a = HasPrettyPrint.new(1)
-      assert_equal("<pretty_print:1>\n", PP.pp(a, ''))
-    end
-
-    def test_hasboth
-      a = HasBoth.new(1)
-      assert_equal("<pretty_print:1>\n", PP.pp(a, ''))
-    end
-
-    def test_pretty_print_inspect
-      a = PrettyPrintInspect.new(1)
-      assert_equal("<pretty_print:1>", a.inspect)
-      a = PrettyPrintInspectWithoutPrettyPrint.new
-      assert_raise(RuntimeError) { a.inspect }
-    end
-
-    def test_proc
-      a = proc {1}
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_to_s_with_iv
-      a = Object.new
-      def a.to_s() "aaa" end
-      a.instance_eval { @a = nil }
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-      assert_match(/\A#<Object.*>\n\z/m, result)
-      a = 1.0
-      a.instance_eval { @a = nil }
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-    end
-    
-    def test_to_s_without_iv
-      a = Object.new
-      def a.to_s() "aaa" end
-      result = PP.pp(a, '')
-      assert_equal("#{a.inspect}\n", result)
-      assert_equal("aaa\n", result)
-    end
-  end
-
-  class PPCycleTest < Test::Unit::TestCase
-    def test_array
-      a = []
-      a << a
-      assert_equal("[[...]]\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_hash
-      a = {}
-      a[0] = a
-      assert_equal("{0=>{...}}\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    S = Struct.new("S", :a, :b)
-    def test_struct
-      a = S.new(1,2)
-      a.b = a
-      assert_equal("#<struct Struct::S a=1, b=#<struct Struct::S:...>>\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_object
-      a = Object.new
-      a.instance_eval {@a = a}
-      assert_equal(a.inspect + "\n", PP.pp(a, ''))
-    end
-
-    def test_anonymous
-      a = Class.new.new
-      assert_equal(a.inspect + "\n", PP.pp(a, ''))
-    end
-
-    def test_withinspect
-      a = []
-      a << HasInspect.new(a)
-      assert_equal("[<inspect:[...]>]\n", PP.pp(a, ''))
-      assert_equal("#{a.inspect}\n", PP.pp(a, ''))
-    end
-
-    def test_share_nil
-      begin
-        PP.sharing_detection = true
-        a = [nil, nil]
-        assert_equal("[nil, nil]\n", PP.pp(a, ''))
-      ensure
-        PP.sharing_detection = false
-      end
-    end
-  end
-
-  class PPSingleLineTest < Test::Unit::TestCase
-    def test_hash
-      assert_equal("{1=>1}", PP.singleline_pp({ 1 => 1}, '')) # [ruby-core:02699]
-      assert_equal("[1#{', 1'*99}]", PP.singleline_pp([1]*100, ''))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/prettyprint.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/prettyprint.rb
deleted file mode 100644
index 315c422..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/prettyprint.rb
+++ /dev/null
@@ -1,896 +0,0 @@
-# $Id$
-
-# This class implements a pretty printing algorithm. It finds line breaks and
-# nice indentations for grouped structure.
-# 
-# By default, the class assumes that primitive elements are strings and each
-# byte in the strings have single column in width. But it can be used for
-# other situations by giving suitable arguments for some methods:
-# * newline object and space generation block for PrettyPrint.new
-# * optional width argument for PrettyPrint#text
-# * PrettyPrint#breakable
-#
-# There are several candidate uses:
-# * text formatting using proportional fonts
-# * multibyte characters which has columns different to number of bytes
-# * non-string formatting
-#
-# == Bugs
-# * Box based formatting?
-# * Other (better) model/algorithm?
-# 
-# == References
-# Christian Lindig, Strictly Pretty, March 2000,
-# http://www.st.cs.uni-sb.de/~lindig/papers/#pretty
-# 
-# Philip Wadler, A prettier printer, March 1998,
-# http://homepages.inf.ed.ac.uk/wadler/topics/language-design.html#prettier
-# 
-# == Author
-# Tanaka Akira <akr at m17n.org>
-# 
-class PrettyPrint
-
-  # This is a convenience method which is same as follows:
-  # 
-  #   begin
-  #     q = PrettyPrint.new(output, maxwidth, newline, &genspace)
-  #     ...
-  #     q.flush
-  #     output
-  #   end
-  # 
-  def PrettyPrint.format(output='', maxwidth=79, newline="\n", genspace=lambda {|n| ' ' * n})
-    q = PrettyPrint.new(output, maxwidth, newline, &genspace)
-    yield q
-    q.flush
-    output
-  end
-
-  # This is similar to PrettyPrint::format but the result has no breaks.
-  #
-  # +maxwidth+, +newline+ and +genspace+ are ignored.
-  #
-  # The invocation of +breakable+ in the block doesn't break a line and is
-  # treated as just an invocation of +text+.
-  #
-  def PrettyPrint.singleline_format(output='', maxwidth=nil, newline=nil, genspace=nil)
-    q = SingleLine.new(output)
-    yield q
-    output
-  end
-
-  # Creates a buffer for pretty printing.
-  #
-  # +output+ is an output target. If it is not specified, '' is assumed. It
-  # should have a << method which accepts the first argument +obj+ of
-  # PrettyPrint#text, the first argument +sep+ of PrettyPrint#breakable, the
-  # first argument +newline+ of PrettyPrint.new, and the result of a given
-  # block for PrettyPrint.new.
-  #
-  # +maxwidth+ specifies maximum line length. If it is not specified, 79 is
-  # assumed. However actual outputs may overflow +maxwidth+ if long
-  # non-breakable texts are provided.
-  #
-  # +newline+ is used for line breaks. "\n" is used if it is not specified.
-  #
-  # The block is used to generate spaces. {|width| ' ' * width} is used if it
-  # is not given.
-  #
-  def initialize(output='', maxwidth=79, newline="\n", &genspace)
-    @output = output
-    @maxwidth = maxwidth
-    @newline = newline
-    @genspace = genspace || lambda {|n| ' ' * n}
-
-    @output_width = 0
-    @buffer_width = 0
-    @buffer = []
-
-    root_group = Group.new(0)
-    @group_stack = [root_group]
-    @group_queue = GroupQueue.new(root_group)
-    @indent = 0
-  end
-  attr_reader :output, :maxwidth, :newline, :genspace
-  attr_reader :indent, :group_queue
-
-  def current_group
-    @group_stack.last
-  end
-
-  # first? is a predicate to test the call is a first call to first? with
-  # current group.
-  #
-  # It is useful to format comma separated values as:
-  #
-  #   q.group(1, '[', ']') {
-  #     xxx.each {|yyy|
-  #       unless q.first?
-  #         q.text ','
-  #         q.breakable
-  #       end
-  #       ... pretty printing yyy ...
-  #     }
-  #   }
-  #
-  # first? is obsoleted in 1.8.2.
-  #
-  def first?
-    warn "PrettyPrint#first? is obsoleted at 1.8.2."
-    current_group.first?
-  end
-
-  def break_outmost_groups
-    while @maxwidth < @output_width + @buffer_width
-      return unless group = @group_queue.deq
-      until group.breakables.empty?
-        data = @buffer.shift
-        @output_width = data.output(@output, @output_width)
-        @buffer_width -= data.width
-      end
-      while !@buffer.empty? && Text === @buffer.first
-        text = @buffer.shift
-        @output_width = text.output(@output, @output_width)
-        @buffer_width -= text.width
-      end
-    end
-  end
-
-  # This adds +obj+ as a text of +width+ columns in width.
-  #
-  # If +width+ is not specified, obj.length is used.
-  #
-  def text(obj, width=obj.length)
-    if @buffer.empty?
-      @output << obj
-      @output_width += width
-    else
-      text = @buffer.last
-      unless Text === text
-        text = Text.new
-        @buffer << text
-      end
-      text.add(obj, width)
-      @buffer_width += width
-      break_outmost_groups
-    end
-  end
-
-  def fill_breakable(sep=' ', width=sep.length)
-    group { breakable sep, width }
-  end
-
-  # This tells "you can break a line here if necessary", and a +width+\-column
-  # text +sep+ is inserted if a line is not broken at the point.
-  #
-  # If +sep+ is not specified, " " is used.
-  #
-  # If +width+ is not specified, +sep.length+ is used. You will have to
-  # specify this when +sep+ is a multibyte character, for example.
-  #
-  def breakable(sep=' ', width=sep.length)
-    group = @group_stack.last
-    if group.break?
-      flush
-      @output << @newline
-      @output << @genspace.call(@indent)
-      @output_width = @indent
-      @buffer_width = 0
-    else
-      @buffer << Breakable.new(sep, width, self)
-      @buffer_width += width
-      break_outmost_groups
-    end
-  end
-
-  # Groups line break hints added in the block. The line break hints are all
-  # to be used or not.
-  #
-  # If +indent+ is specified, the method call is regarded as nested by
-  # nest(indent) { ... }.
-  #
-  # If +open_obj+ is specified, <tt>text open_obj, open_width</tt> is called
-  # before grouping. If +close_obj+ is specified, <tt>text close_obj,
-  # close_width</tt> is called after grouping.
-  #
-  def group(indent=0, open_obj='', close_obj='', open_width=open_obj.length, close_width=close_obj.length)
-    text open_obj, open_width
-    group_sub {
-      nest(indent) {
-        yield
-      }
-    }
-    text close_obj, close_width
-  end
-
-  def group_sub
-    group = Group.new(@group_stack.last.depth + 1)
-    @group_stack.push group
-    @group_queue.enq group
-    begin
-      yield
-    ensure
-      @group_stack.pop
-      if group.breakables.empty?
-        @group_queue.delete group
-      end
-    end
-  end
-
-  # Increases left margin after newline with +indent+ for line breaks added in
-  # the block.
-  #
-  def nest(indent)
-    @indent += indent
-    begin
-      yield
-    ensure
-      @indent -= indent
-    end
-  end
-
-  # outputs buffered data.
-  #
-  def flush
-    @buffer.each {|data|
-      @output_width = data.output(@output, @output_width)
-    }
-    @buffer.clear
-    @buffer_width = 0
-  end
-
-  class Text
-    def initialize
-      @objs = []
-      @width = 0
-    end
-    attr_reader :width
-
-    def output(out, output_width)
-      @objs.each {|obj| out << obj}
-      output_width + @width
-    end
-
-    def add(obj, width)
-      @objs << obj
-      @width += width
-    end
-  end
-
-  class Breakable
-    def initialize(sep, width, q)
-      @obj = sep
-      @width = width
-      @pp = q
-      @indent = q.indent
-      @group = q.current_group
-      @group.breakables.push self
-    end
-    attr_reader :obj, :width, :indent
-
-    def output(out, output_width)
-      @group.breakables.shift
-      if @group.break?
-        out << @pp.newline
-        out << @pp.genspace.call(@indent)
-        @indent
-      else
-        @pp.group_queue.delete @group if @group.breakables.empty?
-        out << @obj
-        output_width + @width
-      end
-    end
-  end
-
-  class Group
-    def initialize(depth)
-      @depth = depth
-      @breakables = []
-      @break = false
-    end
-    attr_reader :depth, :breakables
-
-    def break
-      @break = true
-    end
-
-    def break?
-      @break
-    end
-
-    def first?
-      if defined? @first
-        false
-      else
-        @first = false
-        true
-      end
-    end
-  end
-
-  class GroupQueue
-    def initialize(*groups)
-      @queue = []
-      groups.each {|g| enq g}
-    end
-
-    def enq(group)
-      depth = group.depth
-      @queue << [] until depth < @queue.length
-      @queue[depth] << group
-    end
-
-    def deq
-      @queue.each {|gs|
-        (gs.length-1).downto(0) {|i|
-          unless gs[i].breakables.empty?
-            group = gs.slice!(i, 1).first
-            group.break
-            return group
-          end
-        }
-        gs.each {|group| group.break}
-        gs.clear
-      }
-      return nil
-    end
-
-    def delete(group)
-      @queue[group.depth].delete(group)
-    end
-  end
-
-  class SingleLine
-    def initialize(output, maxwidth=nil, newline=nil)
-      @output = output
-      @first = [true]
-    end
-
-    def text(obj, width=nil)
-      @output << obj
-    end
-
-    def breakable(sep=' ', width=nil)
-      @output << sep
-    end
-
-    def nest(indent)
-      yield
-    end
-
-    def group(indent=nil, open_obj='', close_obj='', open_width=nil, close_width=nil)
-      @first.push true
-      @output << open_obj
-      yield
-      @output << close_obj
-      @first.pop
-    end
-
-    def flush
-    end
-
-    def first?
-      result = @first[-1]
-      @first[-1] = false
-      result
-    end
-  end
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class WadlerExample < Test::Unit::TestCase # :nodoc:
-    def setup
-      @tree = Tree.new("aaaa", Tree.new("bbbbb", Tree.new("ccc"),
-                                                 Tree.new("dd")),
-                               Tree.new("eee"),
-                               Tree.new("ffff", Tree.new("gg"),
-                                                Tree.new("hhh"),
-                                                Tree.new("ii")))
-    end
-
-    def hello(width)
-      PrettyPrint.format('', width) {|hello|
-        hello.group {
-          hello.group {
-            hello.group {
-              hello.group {
-                hello.text 'hello'
-                hello.breakable; hello.text 'a'
-              }
-              hello.breakable; hello.text 'b'
-            }
-            hello.breakable; hello.text 'c'
-          }
-          hello.breakable; hello.text 'd'
-        }
-      }
-    end
-
-    def test_hello_00_06
-      expected = <<'End'.chomp
-hello
-a
-b
-c
-d
-End
-      assert_equal(expected, hello(0))
-      assert_equal(expected, hello(6))
-    end
-
-    def test_hello_07_08
-      expected = <<'End'.chomp
-hello a
-b
-c
-d
-End
-      assert_equal(expected, hello(7))
-      assert_equal(expected, hello(8))
-    end
-
-    def test_hello_09_10
-      expected = <<'End'.chomp
-hello a b
-c
-d
-End
-      out = hello(9); assert_equal(expected, out)
-      out = hello(10); assert_equal(expected, out)
-    end
-
-    def test_hello_11_12
-      expected = <<'End'.chomp
-hello a b c
-d
-End
-      assert_equal(expected, hello(11))
-      assert_equal(expected, hello(12))
-    end
-
-    def test_hello_13
-      expected = <<'End'.chomp
-hello a b c d
-End
-      assert_equal(expected, hello(13))
-    end
-
-    def tree(width)
-      PrettyPrint.format('', width) {|q| @tree.show(q)}
-    end
-
-    def test_tree_00_19
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc,
-           dd],
-     eee,
-     ffff[gg,
-          hhh,
-          ii]]
-End
-      assert_equal(expected, tree(0))
-      assert_equal(expected, tree(19))
-    end
-
-    def test_tree_20_22
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc, dd],
-     eee,
-     ffff[gg,
-          hhh,
-          ii]]
-End
-      assert_equal(expected, tree(20))
-      assert_equal(expected, tree(22))
-    end
-
-    def test_tree_23_43
-      expected = <<'End'.chomp
-aaaa[bbbbb[ccc, dd],
-     eee,
-     ffff[gg, hhh, ii]]
-End
-      assert_equal(expected, tree(23))
-      assert_equal(expected, tree(43))
-    end
-
-    def test_tree_44
-      assert_equal(<<'End'.chomp, tree(44))
-aaaa[bbbbb[ccc, dd], eee, ffff[gg, hhh, ii]]
-End
-    end
-
-    def tree_alt(width)
-      PrettyPrint.format('', width) {|q| @tree.altshow(q)}
-    end
-
-    def test_tree_alt_00_18
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[
-    ccc,
-    dd
-  ],
-  eee,
-  ffff[
-    gg,
-    hhh,
-    ii
-  ]
-]
-End
-      assert_equal(expected, tree_alt(0))
-      assert_equal(expected, tree_alt(18))
-    end
-
-    def test_tree_alt_19_20
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[ ccc, dd ],
-  eee,
-  ffff[
-    gg,
-    hhh,
-    ii
-  ]
-]
-End
-      assert_equal(expected, tree_alt(19))
-      assert_equal(expected, tree_alt(20))
-    end
-
-    def test_tree_alt_20_49
-      expected = <<'End'.chomp
-aaaa[
-  bbbbb[ ccc, dd ],
-  eee,
-  ffff[ gg, hhh, ii ]
-]
-End
-      assert_equal(expected, tree_alt(21))
-      assert_equal(expected, tree_alt(49))
-    end
-
-    def test_tree_alt_50
-      expected = <<'End'.chomp
-aaaa[ bbbbb[ ccc, dd ], eee, ffff[ gg, hhh, ii ] ]
-End
-      assert_equal(expected, tree_alt(50))
-    end
-
-    class Tree # :nodoc:
-      def initialize(string, *children)
-        @string = string
-        @children = children
-      end
-
-      def show(q)
-        q.group {
-          q.text @string
-          q.nest(@string.length) {
-            unless @children.empty?
-              q.text '['
-              q.nest(1) {
-                first = true
-                @children.each {|t|
-                  if first
-                    first = false
-                  else
-                    q.text ','
-                    q.breakable
-                  end
-                  t.show(q)
-                }
-              }
-              q.text ']'
-            end
-          }
-        }
-      end
-
-      def altshow(q)
-        q.group {
-          q.text @string
-          unless @children.empty?
-            q.text '['
-            q.nest(2) {
-              q.breakable
-              first = true
-              @children.each {|t|
-                if first
-                  first = false
-                else
-                  q.text ','
-                  q.breakable
-                end
-                t.altshow(q)
-              }
-            }
-            q.breakable
-            q.text ']'
-          end
-        }
-      end
-
-    end
-  end
-
-  class StrictPrettyExample < Test::Unit::TestCase # :nodoc:
-    def prog(width)
-      PrettyPrint.format('', width) {|q|
-        q.group {
-          q.group {q.nest(2) {
-                       q.text "if"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "=="}
-                           q.breakable; q.text "b"}}}}
-          q.breakable
-          q.group {q.nest(2) {
-                       q.text "then"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "<<"}
-                           q.breakable; q.text "2"}}}}
-          q.breakable
-          q.group {q.nest(2) {
-                       q.text "else"; q.breakable;
-                       q.group {
-                         q.nest(2) {
-                           q.group {q.text "a"; q.breakable; q.text "+"}
-                           q.breakable; q.text "b"}}}}}
-      }
-    end
-
-    def test_00_04
-      expected = <<'End'.chomp
-if
-  a
-    ==
-    b
-then
-  a
-    <<
-    2
-else
-  a
-    +
-    b
-End
-      assert_equal(expected, prog(0))
-      assert_equal(expected, prog(4))
-    end
-
-    def test_05
-      expected = <<'End'.chomp
-if
-  a
-    ==
-    b
-then
-  a
-    <<
-    2
-else
-  a +
-    b
-End
-      assert_equal(expected, prog(5))
-    end
-
-    def test_06
-      expected = <<'End'.chomp
-if
-  a ==
-    b
-then
-  a <<
-    2
-else
-  a +
-    b
-End
-      assert_equal(expected, prog(6))
-    end
-
-    def test_07
-      expected = <<'End'.chomp
-if
-  a ==
-    b
-then
-  a <<
-    2
-else
-  a + b
-End
-      assert_equal(expected, prog(7))
-    end
-
-    def test_08
-      expected = <<'End'.chomp
-if
-  a == b
-then
-  a << 2
-else
-  a + b
-End
-      assert_equal(expected, prog(8))
-    end
-
-    def test_09
-      expected = <<'End'.chomp
-if a == b
-then
-  a << 2
-else
-  a + b
-End
-      assert_equal(expected, prog(9))
-    end
-
-    def test_10
-      expected = <<'End'.chomp
-if a == b
-then
-  a << 2
-else a + b
-End
-      assert_equal(expected, prog(10))
-    end
-
-    def test_11_31
-      expected = <<'End'.chomp
-if a == b
-then a << 2
-else a + b
-End
-      assert_equal(expected, prog(11))
-      assert_equal(expected, prog(15))
-      assert_equal(expected, prog(31))
-    end
-
-    def test_32
-      expected = <<'End'.chomp
-if a == b then a << 2 else a + b
-End
-      assert_equal(expected, prog(32))
-    end
-
-  end
-
-  class TailGroup < Test::Unit::TestCase # :nodoc:
-    def test_1
-      out = PrettyPrint.format('', 10) {|q|
-        q.group {
-          q.group {
-            q.text "abc"
-            q.breakable
-            q.text "def"
-          }
-          q.group {
-            q.text "ghi"
-            q.breakable
-            q.text "jkl"
-          }
-        }
-      }
-      assert_equal("abc defghi\njkl", out)
-    end
-  end
-
-  class NonString < Test::Unit::TestCase # :nodoc:
-    def format(width)
-      PrettyPrint.format([], width, 'newline', lambda {|n| "#{n} spaces"}) {|q|
-        q.text(3, 3)
-        q.breakable(1, 1)
-        q.text(3, 3)
-      }
-    end
-
-    def test_6
-      assert_equal([3, "newline", "0 spaces", 3], format(6))
-    end
-
-    def test_7
-      assert_equal([3, 1, 3], format(7))
-    end
-
-  end
-
-  class Fill < Test::Unit::TestCase # :nodoc:
-    def format(width)
-      PrettyPrint.format('', width) {|q|
-        q.group {
-          q.text 'abc'
-          q.fill_breakable
-          q.text 'def'
-          q.fill_breakable
-          q.text 'ghi'
-          q.fill_breakable
-          q.text 'jkl'
-          q.fill_breakable
-          q.text 'mno'
-          q.fill_breakable
-          q.text 'pqr'
-          q.fill_breakable
-          q.text 'stu'
-        }
-      }
-    end
-
-    def test_00_06
-      expected = <<'End'.chomp
-abc
-def
-ghi
-jkl
-mno
-pqr
-stu
-End
-      assert_equal(expected, format(0))
-      assert_equal(expected, format(6))
-    end
-
-    def test_07_10
-      expected = <<'End'.chomp
-abc def
-ghi jkl
-mno pqr
-stu
-End
-      assert_equal(expected, format(7))
-      assert_equal(expected, format(10))
-    end
-
-    def test_11_14
-      expected = <<'End'.chomp
-abc def ghi
-jkl mno pqr
-stu
-End
-      assert_equal(expected, format(11))
-      assert_equal(expected, format(14))
-    end
-
-    def test_15_18
-      expected = <<'End'.chomp
-abc def ghi jkl
-mno pqr stu
-End
-      assert_equal(expected, format(15))
-      assert_equal(expected, format(18))
-    end
-
-    def test_19_22
-      expected = <<'End'.chomp
-abc def ghi jkl mno
-pqr stu
-End
-      assert_equal(expected, format(19))
-      assert_equal(expected, format(22))
-    end
-
-    def test_23_26
-      expected = <<'End'.chomp
-abc def ghi jkl mno pqr
-stu
-End
-      assert_equal(expected, format(23))
-      assert_equal(expected, format(26))
-    end
-
-    def test_27
-      expected = <<'End'.chomp
-abc def ghi jkl mno pqr stu
-End
-      assert_equal(expected, format(27))
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profile.rb
deleted file mode 100644
index 104cb20..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profile.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require 'profiler'
-
-END {
-  Profiler__::print_profile(STDERR)
-}
-Profiler__::start_profile
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profiler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profiler.rb
deleted file mode 100644
index 9762fa1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/profiler.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-module Profiler__
-  # internal values
-  @@start = @@stack = @@map = nil
-  PROFILE_PROC = proc{|event, file, line, id, binding, klass|
-    case event
-    when "call", "c-call"
-      now = Process.times[0]
-      @@stack.push [now, 0.0]
-    when "return", "c-return"
-      now = Process.times[0]
-      key = [klass, id]
-      if tick = @@stack.pop
-        data = (@@map[key] ||= [0, 0.0, 0.0, key])
-        data[0] += 1
-        cost = now - tick[0]
-        data[1] += cost
-        data[2] += cost - tick[1]
-        @@stack[-1][1] += cost if @@stack[-1]
-      end
-    end
-  }
-module_function
-  def start_profile
-    @@start = Process.times[0]
-    @@stack = []
-    @@map = {}
-    set_trace_func PROFILE_PROC
-  end
-  def stop_profile
-    set_trace_func nil
-  end
-  def print_profile(f)
-    stop_profile
-    total = Process.times[0] - @@start
-    if total == 0 then total = 0.01 end
-    data = @@map.values
-    data.sort!{|a,b| b[2] <=> a[2]}
-    sum = 0
-    f.printf "  %%   cumulative   self              self     total\n"
-    f.printf " time   seconds   seconds    calls  ms/call  ms/call  name\n"
-    for d in data
-      sum += d[2]
-      f.printf "%6.2f %8.2f  %8.2f %8d ", d[2]/total*100, sum, d[2], d[0]
-      f.printf "%8.2f %8.2f  %s\n", d[2]*1000/d[0], d[1]*1000/d[0], get_name(*d[3])
-    end
-    f.printf "%6.2f %8.2f  %8.2f %8d ", 0.0, total, 0.0, 1     # ???
-    f.printf "%8.2f %8.2f  %s\n", 0.0, total*1000, "#toplevel" # ???
-  end
-  def get_name(klass, id)
-    name = klass.to_s || ""
-    if klass.kind_of? Class
-      name += "#"
-    else
-      name += "."
-    end
-    name + id.id2name
-  end
-  private :get_name
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pstore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pstore.rb
deleted file mode 100644
index 6df6447..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/pstore.rb
+++ /dev/null
@@ -1,395 +0,0 @@
-# = PStore -- Transactional File Storage for Ruby Objects
-#
-# pstore.rb -
-#   originally by matz
-#   documentation by Kev Jackson and James Edward Gray II
-#
-# See PStore for documentation.
-
-
-require "fileutils"
-require "digest/md5"
-
-#
-# PStore implements a file based persistance mechanism based on a Hash.  User
-# code can store hierarchies of Ruby objects (values) into the data store file
-# by name (keys).  An object hierarchy may be just a single object.  User code 
-# may later read values back from the data store or even update data, as needed.
-# 
-# The transactional behavior ensures that any changes succeed or fail together.
-# This can be used to ensure that the data store is not left in a transitory
-# state, where some values were upated but others were not.
-# 
-# Behind the scenes, Ruby objects are stored to the data store file with 
-# Marshal.  That carries the usual limitations.  Proc objects cannot be 
-# marshalled, for example.
-#
-# == Usage example:
-# 
-#  require "pstore"
-#  
-#  # a mock wiki object...
-#  class WikiPage
-#    def initialize( page_name, author, contents )
-#      @page_name = page_name
-#      @revisions = Array.new
-#      
-#      add_revision(author, contents)
-#    end
-#    
-#    attr_reader :page_name
-#    
-#    def add_revision( author, contents )
-#      @revisions << { :created  => Time.now,
-#                      :author   => author,
-#                      :contents => contents }
-#    end
-#    
-#    def wiki_page_references
-#      [@page_name] + @revisions.last[:contents].scan(/\b(?:[A-Z]+[a-z]+){2,}/)
-#    end
-#    
-#    # ...
-#  end
-#  
-#  # create a new page...
-#  home_page = WikiPage.new( "HomePage", "James Edward Gray II",
-#                            "A page about the JoysOfDocumentation..." )
-#  
-#  # then we want to update page data and the index together, or not at all...
-#  wiki = PStore.new("wiki_pages.pstore")
-#  wiki.transaction do  # begin transaction; do all of this or none of it
-#    # store page...
-#    wiki[home_page.page_name] = home_page
-#    # ensure that an index has been created...
-#    wiki[:wiki_index] ||= Array.new
-#    # update wiki index...
-#    wiki[:wiki_index].push(*home_page.wiki_page_references)
-#  end                   # commit changes to wiki data store file
-#  
-#  ### Some time later... ###
-#  
-#  # read wiki data...
-#  wiki.transaction(true) do  # begin read-only transaction, no changes allowed
-#    wiki.roots.each do |data_root_name|
-#      p data_root_name
-#      p wiki[data_root_name]
-#    end
-#  end
-#
-class PStore
-  binmode = defined?(File::BINARY) ? File::BINARY : 0
-  RDWR_ACCESS = File::RDWR | File::CREAT | binmode
-  RD_ACCESS = File::RDONLY | binmode
-  WR_ACCESS = File::WRONLY | File::CREAT | File::TRUNC | binmode
-
-  # The error type thrown by all PStore methods.
-  class Error < StandardError
-  end
-
-  # 
-  # To construct a PStore object, pass in the _file_ path where you would like 
-  # the data to be stored.
-  # 
-  def initialize(file)
-    dir = File::dirname(file)
-    unless File::directory? dir
-      raise PStore::Error, format("directory %s does not exist", dir)
-    end
-    if File::exist? file and not File::readable? file
-      raise PStore::Error, format("file %s not readable", file)
-    end
-    @transaction = false
-    @filename = file
-    @abort = false
-  end
-
-  # Raises PStore::Error if the calling code is not in a PStore#transaction.
-  def in_transaction
-    raise PStore::Error, "not in transaction" unless @transaction
-  end
-  # 
-  # Raises PStore::Error if the calling code is not in a PStore#transaction or
-  # if the code is in a read-only PStore#transaction.
-  # 
-  def in_transaction_wr()
-    in_transaction()
-    raise PStore::Error, "in read-only transaction" if @rdonly
-  end
-  private :in_transaction, :in_transaction_wr
-
-  #
-  # Retrieves a value from the PStore file data, by _name_.  The hierarchy of 
-  # Ruby objects stored under that root _name_ will be returned.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def [](name)
-    in_transaction
-    @table[name]
-  end
-  #
-  # This method is just like PStore#[], save that you may also provide a 
-  # _default_ value for the object.  In the event the specified _name_ is not 
-  # found in the data store, your _default_ will be returned instead.  If you do 
-  # not specify a default, PStore::Error will be raised if the object is not 
-  # found.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def fetch(name, default=PStore::Error)
-    in_transaction
-    unless @table.key? name
-      if default==PStore::Error
-	raise PStore::Error, format("undefined root name `%s'", name)
-      else
-	return default
-      end
-    end
-    @table[name]
-  end
-  #
-  # Stores an individual Ruby object or a hierarchy of Ruby objects in the data
-  # store file under the root _name_.  Assigning to a _name_ already in the data
-  # store clobbers the old data.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #  
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    # load some data into the store...
-  #    store[:single_object] = "My data..."
-  #    store[:obj_heirarchy] = { "Kev Jackson" => ["rational.rb", "pstore.rb"],
-  #                              "James Gray"  => ["erb.rb", "pstore.rb"] }
-  #  end                   # commit changes to data store file
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction and it cannot
-  # be read-only.  It will raise PStore::Error if called at any other time.
-  #
-  def []=(name, value)
-    in_transaction_wr()
-    @table[name] = value
-  end
-  #
-  # Removes an object hierarchy from the data store, by _name_.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction and it cannot
-  # be read-only.  It will raise PStore::Error if called at any other time.
-  #
-  def delete(name)
-    in_transaction_wr()
-    @table.delete name
-  end
-
-  #
-  # Returns the names of all object hierarchies currently in the store.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def roots
-    in_transaction
-    @table.keys
-  end
-  #
-  # Returns true if the supplied _name_ is currently in the data store.
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def root?(name)
-    in_transaction
-    @table.key? name
-  end
-  # Returns the path to the data store file.
-  def path
-    @filename
-  end
-
-  #
-  # Ends the current PStore#transaction, committing any changes to the data
-  # store immediately.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #   
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    # load some data into the store...
-  #    store[:one] = 1
-  #    store[:two] = 2
-  #  
-  #    store.commit        # end transaction here, committing changes
-  #  
-  #    store[:three] = 3   # this change is never reached
-  #  end
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def commit
-    in_transaction
-    @abort = false
-    throw :pstore_abort_transaction
-  end
-  #
-  # Ends the current PStore#transaction, discarding any changes to the data
-  # store.
-  # 
-  # == Example:
-  # 
-  #  require "pstore"
-  #   
-  #  store = PStore.new("data_file.pstore")
-  #  store.transaction do  # begin transaction
-  #    store[:one] = 1     # this change is not applied, see below...
-  #    store[:two] = 2     # this change is not applied, see below...
-  #  
-  #    store.abort         # end transaction here, discard all changes
-  #  
-  #    store[:three] = 3   # this change is never reached
-  #  end
-  # 
-  # *WARNING*:  This method is only valid in a PStore#transaction.  It will
-  # raise PStore::Error if called at any other time.
-  #
-  def abort
-    in_transaction
-    @abort = true
-    throw :pstore_abort_transaction
-  end
-
-  #
-  # Opens a new transaction for the data store.  Code executed inside a block
-  # passed to this method may read and write data to and from the data store 
-  # file.
-  # 
-  # At the end of the block, changes are committed to the data store
-  # automatically.  You may exit the transaction early with a call to either 
-  # PStore#commit or PStore#abort.  See those methods for details about how
-  # changes are handled.  Raising an uncaught Exception in the block is 
-  # equivalent to calling PStore#abort.
-  # 
-  # If _read_only_ is set to +true+, you will only be allowed to read from the
-  # data store during the transaction and any attempts to change the data will
-  # raise a PStore::Error.
-  # 
-  # Note that PStore does not support nested transactions.
-  #
-  def transaction(read_only=false)  # :yields:  pstore
-    raise PStore::Error, "nested transaction" if @transaction
-    begin
-      @rdonly = read_only
-      @abort = false
-      @transaction = true
-      value = nil
-      new_file = @filename + ".new"
-
-      content = nil
-      unless read_only
-        file = File.open(@filename, RDWR_ACCESS)
-        file.flock(File::LOCK_EX)
-        commit_new(file) if FileTest.exist?(new_file)
-        content = file.read()
-      else
-        begin
-          file = File.open(@filename, RD_ACCESS)
-          file.flock(File::LOCK_SH)
-          content = (File.open(new_file, RD_ACCESS) {|n| n.read} rescue file.read())
-        rescue Errno::ENOENT
-          content = ""
-        end
-      end
-
-      if content != ""
-	@table = load(content)
-        if !read_only
-          size = content.size
-          md5 = Digest::MD5.digest(content)
-        end
-      else
-	@table = {}
-      end
-      content = nil		# unreference huge data
-
-      begin
-	catch(:pstore_abort_transaction) do
-	  value = yield(self)
-	end
-      rescue Exception
-	@abort = true
-	raise
-      ensure
-	if !read_only and !@abort
-          tmp_file = @filename + ".tmp"
-	  content = dump(@table)
-	  if !md5 || size != content.size || md5 != Digest::MD5.digest(content)
-            File.open(tmp_file, WR_ACCESS) {|t| t.write(content)}
-            File.rename(tmp_file, new_file)
-            commit_new(file)
-          end
-          content = nil		# unreference huge data
-	end
-      end
-    ensure
-      @table = nil
-      @transaction = false
-      file.close if file
-    end
-    value
-  end
-
-  # This method is just a wrapped around Marshal.dump.
-  def dump(table)  # :nodoc:
-    Marshal::dump(table)
-  end
-
-  # This method is just a wrapped around Marshal.load.
-  def load(content)  # :nodoc:
-    Marshal::load(content)
-  end
-
-  # This method is just a wrapped around Marshal.load.
-  def load_file(file)  # :nodoc:
-    Marshal::load(file)
-  end
-
-  private
-  # Commits changes to the data store file.
-  def commit_new(f)
-    f.truncate(0)
-    f.rewind
-    new_file = @filename + ".new"
-    File.open(new_file, RD_ACCESS) do |nf|
-      FileUtils.copy_stream(nf, f)
-    end
-    File.unlink(new_file)
-  end
-end
-
-# :enddoc:
-
-if __FILE__ == $0
-  db = PStore.new("/tmp/foo")
-  db.transaction do
-    p db.roots
-    ary = db["root"] = [1,2,3,4]
-    ary[1] = [1,1.5]
-  end
-
-  1000.times do
-    db.transaction do
-      db["root"][0] += 1
-      p db["root"][0]
-    end
-  end
-
-  db.transaction(true) do
-    p db["root"]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/racc/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/racc/parser.rb
deleted file mode 100644
index a7408dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/racc/parser.rb
+++ /dev/null
@@ -1,442 +0,0 @@
-#
-# $originalId: parser.rb,v 1.8 2006/07/06 11:42:07 aamine Exp $
-#
-# Copyright (c) 1999-2006 Minero Aoki
-#
-# This program is free software.
-# You can distribute/modify this program under the same terms of ruby.
-#
-# As a special exception, when this code is copied by Racc
-# into a Racc output file, you may use that output file
-# without restriction.
-#
-
-unless defined?(NotImplementedError)
-  NotImplementedError = NotImplementError
-end
-
-module Racc
-  class ParseError < StandardError; end
-end
-unless defined?(::ParseError)
-  ParseError = Racc::ParseError
-end
-
-module Racc
-
-  unless defined?(Racc_No_Extentions)
-    Racc_No_Extentions = false
-  end
-
-  class Parser
-
-    Racc_Runtime_Version = '1.4.5'
-    Racc_Runtime_Revision = '$originalRevision: 1.8 $'.split[1]
-
-    Racc_Runtime_Core_Version_R = '1.4.5'
-    Racc_Runtime_Core_Revision_R = '$originalRevision: 1.8 $'.split[1]
-    begin
-      require 'racc/cparse'
-    # Racc_Runtime_Core_Version_C  = (defined in extention)
-      Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
-      unless new.respond_to?(:_racc_do_parse_c, true)
-        raise LoadError, 'old cparse.so'
-      end
-      if Racc_No_Extentions
-        raise LoadError, 'selecting ruby version of racc runtime core'
-      end
-
-      Racc_Main_Parsing_Routine    = :_racc_do_parse_c
-      Racc_YY_Parse_Method         = :_racc_yyparse_c
-      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_C
-      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_C
-      Racc_Runtime_Type            = 'c'
-    rescue LoadError
-      Racc_Main_Parsing_Routine    = :_racc_do_parse_rb
-      Racc_YY_Parse_Method         = :_racc_yyparse_rb
-      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_R
-      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_R
-      Racc_Runtime_Type            = 'ruby'
-    end
-
-    def Parser.racc_runtime_type
-      Racc_Runtime_Type
-    end
-
-    private
-
-    def _racc_setup
-      @yydebug = false unless self.class::Racc_debug_parser
-      @yydebug = false unless defined?(@yydebug)
-      if @yydebug
-        @racc_debug_out = $stderr unless defined?(@racc_debug_out)
-        @racc_debug_out ||= $stderr
-      end
-      arg = self.class::Racc_arg
-      arg[13] = true if arg.size < 14
-      arg
-    end
-
-    def _racc_init_sysvars
-      @racc_state  = [0]
-      @racc_tstack = []
-      @racc_vstack = []
-
-      @racc_t = nil
-      @racc_val = nil
-
-      @racc_read_next = true
-
-      @racc_user_yyerror = false
-      @racc_error_status = 0
-    end
-
-    ###
-    ### do_parse
-    ###
-
-    def do_parse
-      __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
-    end
-
-    def next_token
-      raise NotImplementedError, "#{self.class}\#next_token is not defined"
-    end
-
-    def _racc_do_parse_rb(arg, in_debug)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-
-      _racc_init_sysvars
-      tok = act = i = nil
-      nerr = 0
-
-      catch(:racc_end_parse) {
-        while true
-          if i = action_pointer[@racc_state[-1]]
-            if @racc_read_next
-              if @racc_t != 0   # not EOF
-                tok, @racc_val = next_token()
-                unless tok      # EOF
-                  @racc_t = 0
-                else
-                  @racc_t = (token_table[tok] or 1)   # error token
-                end
-                racc_read_token(@racc_t, tok, @racc_val) if @yydebug
-                @racc_read_next = false
-              end
-            end
-            i += @racc_t
-            unless i >= 0 and
-                   act = action_table[i] and
-                   action_check[i] == @racc_state[-1]
-              act = action_default[@racc_state[-1]]
-            end
-          else
-            act = action_default[@racc_state[-1]]
-          end
-          while act = _racc_evalact(act, arg)
-            ;
-          end
-        end
-      }
-    end
-
-    ###
-    ### yyparse
-    ###
-
-    def yyparse(recv, mid)
-      __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
-    end
-
-    def _racc_yyparse_rb(recv, mid, arg, c_debug)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-
-      _racc_init_sysvars
-      tok = nil
-      act = nil
-      i = nil
-      nerr = 0
-
-      catch(:racc_end_parse) {
-        until i = action_pointer[@racc_state[-1]]
-          while act = _racc_evalact(action_default[@racc_state[-1]], arg)
-            ;
-          end
-        end
-        recv.__send__(mid) do |tok, val|
-          unless tok
-            @racc_t = 0
-          else
-            @racc_t = (token_table[tok] or 1)   # error token
-          end
-          @racc_val = val
-          @racc_read_next = false
-
-          i += @racc_t
-          unless i >= 0 and
-                 act = action_table[i] and
-                 action_check[i] == @racc_state[-1]
-            act = action_default[@racc_state[-1]]
-          end
-          while act = _racc_evalact(act, arg)
-            ;
-          end
-
-          while not (i = action_pointer[@racc_state[-1]]) or
-                not @racc_read_next or
-                @racc_t == 0   # $
-            unless i and i += @racc_t and
-                   i >= 0 and
-                   act = action_table[i] and
-                   action_check[i] == @racc_state[-1]
-              act = action_default[@racc_state[-1]]
-            end
-            while act = _racc_evalact(act, arg)
-              ;
-            end
-          end
-        end
-      }
-    end
-
-    ###
-    ### common
-    ###
-
-    def _racc_evalact(act, arg)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-      nerr = 0   # tmp
-
-      if act > 0 and act < shift_n
-        #
-        # shift
-        #
-        if @racc_error_status > 0
-          @racc_error_status -= 1 unless @racc_t == 1   # error token
-        end
-        @racc_vstack.push @racc_val
-        @racc_state.push act
-        @racc_read_next = true
-        if @yydebug
-          @racc_tstack.push @racc_t
-          racc_shift @racc_t, @racc_tstack, @racc_vstack
-        end
-
-      elsif act < 0 and act > -reduce_n
-        #
-        # reduce
-        #
-        code = catch(:racc_jump) {
-          @racc_state.push _racc_do_reduce(arg, act)
-          false
-        }
-        if code
-          case code
-          when 1 # yyerror
-            @racc_user_yyerror = true   # user_yyerror
-            return -reduce_n
-          when 2 # yyaccept
-            return shift_n
-          else
-            raise '[Racc Bug] unknown jump code'
-          end
-        end
-
-      elsif act == shift_n
-        #
-        # accept
-        #
-        racc_accept if @yydebug
-        throw :racc_end_parse, @racc_vstack[0]
-
-      elsif act == -reduce_n
-        #
-        # error
-        #
-        case @racc_error_status
-        when 0
-          unless arg[21]    # user_yyerror
-            nerr += 1
-            on_error @racc_t, @racc_val, @racc_vstack
-          end
-        when 3
-          if @racc_t == 0   # is $
-            throw :racc_end_parse, nil
-          end
-          @racc_read_next = true
-        end
-        @racc_user_yyerror = false
-        @racc_error_status = 3
-        while true
-          if i = action_pointer[@racc_state[-1]]
-            i += 1   # error token
-            if  i >= 0 and
-                (act = action_table[i]) and
-                action_check[i] == @racc_state[-1]
-              break
-            end
-          end
-          throw :racc_end_parse, nil if @racc_state.size <= 1
-          @racc_state.pop
-          @racc_vstack.pop
-          if @yydebug
-            @racc_tstack.pop
-            racc_e_pop @racc_state, @racc_tstack, @racc_vstack
-          end
-        end
-        return act
-
-      else
-        raise "[Racc Bug] unknown action #{act.inspect}"
-      end
-
-      racc_next_state(@racc_state[-1], @racc_state) if @yydebug
-
-      nil
-    end
-
-    def _racc_do_reduce(arg, act)
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   * = arg
-      state = @racc_state
-      vstack = @racc_vstack
-      tstack = @racc_tstack
-
-      i = act * -3
-      len       = reduce_table[i]
-      reduce_to = reduce_table[i+1]
-      method_id = reduce_table[i+2]
-      void_array = []
-
-      tmp_t = tstack[-len, len] if @yydebug
-      tmp_v = vstack[-len, len]
-      tstack[-len, len] = void_array if @yydebug
-      vstack[-len, len] = void_array
-      state[-len, len]  = void_array
-
-      # tstack must be updated AFTER method call
-      if use_result
-        vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
-      else
-        vstack.push __send__(method_id, tmp_v, vstack)
-      end
-      tstack.push reduce_to
-
-      racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
-
-      k1 = reduce_to - nt_base
-      if i = goto_pointer[k1]
-        i += state[-1]
-        if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
-          return curstate
-        end
-      end
-      goto_default[k1]
-    end
-
-    def on_error(t, val, vstack)
-      raise ParseError, sprintf("\nparse error on value %s (%s)",
-                                val.inspect, token_to_str(t) || '?')
-    end
-
-    def yyerror
-      throw :racc_jump, 1
-    end
-
-    def yyaccept
-      throw :racc_jump, 2
-    end
-
-    def yyerrok
-      @racc_error_status = 0
-    end
-
-    #
-    # for debugging output
-    #
-
-    def racc_read_token(t, tok, val)
-      @racc_debug_out.print 'read    '
-      @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
-      @racc_debug_out.puts val.inspect
-      @racc_debug_out.puts
-    end
-
-    def racc_shift(tok, tstack, vstack)
-      @racc_debug_out.puts "shift   #{racc_token2str tok}"
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_reduce(toks, sim, tstack, vstack)
-      out = @racc_debug_out
-      out.print 'reduce '
-      if toks.empty?
-        out.print ' <none>'
-      else
-        toks.each {|t| out.print ' ', racc_token2str(t) }
-      end
-      out.puts " --> #{racc_token2str(sim)}"
-          
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_accept
-      @racc_debug_out.puts 'accept'
-      @racc_debug_out.puts
-    end
-
-    def racc_e_pop(state, tstack, vstack)
-      @racc_debug_out.puts 'error recovering mode: pop token'
-      racc_print_states state
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_next_state(curstate, state)
-      @racc_debug_out.puts  "goto    #{curstate}"
-      racc_print_states state
-      @racc_debug_out.puts
-    end
-
-    def racc_print_stacks(t, v)
-      out = @racc_debug_out
-      out.print '        ['
-      t.each_index do |i|
-        out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
-      end
-      out.puts ' ]'
-    end
-
-    def racc_print_states(s)
-      out = @racc_debug_out
-      out.print '        ['
-      s.each {|st| out.print ' ', st }
-      out.puts ' ]'
-    end
-
-    def racc_token2str(tok)
-      self.class::Racc_token_to_s_table[tok] or
-          raise "[Racc Bug] can't convert token #{tok} to string"
-    end
-
-    def token_to_str(t)
-      self.class::Racc_token_to_s_table[t]
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rational.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rational.rb
deleted file mode 100644
index ce754cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rational.rb
+++ /dev/null
@@ -1,530 +0,0 @@
-#
-#   rational.rb -
-#       $Release Version: 0.5 $
-#       $Revision: 1.7 $
-#       $Date: 1999/08/24 12:49:28 $
-#       by Keiju ISHITSUKA(SHL Japan Inc.)
-#
-# Documentation by Kevin Jackson and Gavin Sinclair.
-# 
-# When you <tt>require 'rational'</tt>, all interactions between numbers
-# potentially return a rational result.  For example:
-#
-#   1.quo(2)              # -> 0.5
-#   require 'rational'
-#   1.quo(2)              # -> Rational(1,2)
-# 
-# See Rational for full documentation.
-#
-
-
-#
-# Creates a Rational number (i.e. a fraction).  +a+ and +b+ should be Integers:
-# 
-#   Rational(1,3)           # -> 1/3
-#
-# Note: trying to construct a Rational with floating point or real values
-# produces errors:
-#
-#   Rational(1.1, 2.3)      # -> NoMethodError
-#
-def Rational(a, b = 1)
-  if a.kind_of?(Rational) && b == 1
-    a
-  else
-    Rational.reduce(a, b)
-  end
-end
-
-#
-# Rational implements a rational class for numbers.
-#
-# <em>A rational number is a number that can be expressed as a fraction p/q
-# where p and q are integers and q != 0.  A rational number p/q is said to have
-# numerator p and denominator q.  Numbers that are not rational are called
-# irrational numbers.</em> (http://mathworld.wolfram.com/RationalNumber.html)
-#
-# To create a Rational Number:
-#   Rational(a,b)             # -> a/b
-#   Rational.new!(a,b)        # -> a/b
-#
-# Examples:
-#   Rational(5,6)             # -> 5/6
-#   Rational(5)               # -> 5/1
-# 
-# Rational numbers are reduced to their lowest terms:
-#   Rational(6,10)            # -> 3/5
-#
-# But not if you use the unusual method "new!":
-#   Rational.new!(6,10)       # -> 6/10
-#
-# Division by zero is obviously not allowed:
-#   Rational(3,0)             # -> ZeroDivisionError
-#
-class Rational < Numeric
-  @RCS_ID='-$Id: rational.rb,v 1.7 1999/08/24 12:49:28 keiju Exp keiju $-'
-
-  #
-  # Reduces the given numerator and denominator to their lowest terms.  Use
-  # Rational() instead.
-  #
-  def Rational.reduce(num, den = 1)
-    raise ZeroDivisionError, "denominator is zero" if den == 0
-
-    if den < 0
-      num = -num
-      den = -den
-    end
-    gcd = num.gcd(den)
-    num = num.div(gcd)
-    den = den.div(gcd)
-    if den == 1 && defined?(Unify)
-      num
-    else
-      new!(num, den)
-    end
-  end
-
-  #
-  # Implements the constructor.  This method does not reduce to lowest terms or
-  # check for division by zero.  Therefore #Rational() should be preferred in
-  # normal use.
-  #
-  def Rational.new!(num, den = 1)
-    new(num, den)
-  end
-
-  private_class_method :new
-
-  #
-  # This method is actually private.
-  #
-  def initialize(num, den)
-    if den < 0
-      num = -num
-      den = -den
-    end
-    if num.kind_of?(Integer) and den.kind_of?(Integer)
-      @numerator = num
-      @denominator = den
-    else
-      @numerator = num.to_i
-      @denominator = den.to_i
-    end
-  end
-
-  #
-  # Returns the addition of this value and +a+.
-  #
-  # Examples:
-  #   r = Rational(3,4)      # -> Rational(3,4)
-  #   r + 1                  # -> Rational(7,4)
-  #   r + 0.5                # -> 1.25
-  #
-  def + (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      num_a = a.numerator * @denominator
-      Rational(num + num_a, @denominator * a.denominator)
-    elsif a.kind_of?(Integer)
-      self + Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) + a
-    else
-      x, y = a.coerce(self)
-      x + y
-    end
-  end
-
-  #
-  # Returns the difference of this value and +a+.
-  # subtracted.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r - 1                # -> Rational(-1,4)
-  #   r - 0.5              # -> 0.25
-  #
-  def - (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      num_a = a.numerator * @denominator
-      Rational(num - num_a, @denominator*a.denominator)
-    elsif a.kind_of?(Integer)
-      self - Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) - a
-    else
-      x, y = a.coerce(self)
-      x - y
-    end
-  end
-
-  #
-  # Returns the product of this value and +a+.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r * 2                # -> Rational(3,2)
-  #   r * 4                # -> Rational(3,1)
-  #   r * 0.5              # -> 0.375
-  #   r * Rational(1,2)    # -> Rational(3,8)
-  #
-  def * (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.numerator
-      den = @denominator * a.denominator
-      Rational(num, den)
-    elsif a.kind_of?(Integer)
-      self * Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) * a
-    else
-      x, y = a.coerce(self)
-      x * y
-    end
-  end
-
-  #
-  # Returns the quotient of this value and +a+.
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r / 2                # -> Rational(3,8)
-  #   r / 2.0              # -> 0.375
-  #   r / Rational(1,2)    # -> Rational(3,2)
-  #
-  def / (a)
-    if a.kind_of?(Rational)
-      num = @numerator * a.denominator
-      den = @denominator * a.numerator
-      Rational(num, den)
-    elsif a.kind_of?(Integer)
-      raise ZeroDivisionError, "division by zero" if a == 0
-      self / Rational.new!(a, 1)
-    elsif a.kind_of?(Float)
-      Float(self) / a
-    else
-      x, y = a.coerce(self)
-      x / y
-    end
-  end
-
-  #
-  # Returns this value raised to the given power.
-  #
-  # Examples:
-  #   r = Rational(3,4)    # -> Rational(3,4)
-  #   r ** 2               # -> Rational(9,16)
-  #   r ** 2.0             # -> 0.5625
-  #   r ** Rational(1,2)   # -> 0.866025403784439
-  #
-  def ** (other)
-    if other.kind_of?(Rational)
-      Float(self) ** other
-    elsif other.kind_of?(Integer)
-      if other > 0
-	num = @numerator ** other
-	den = @denominator ** other
-      elsif other < 0
-	num = @denominator ** -other
-	den = @numerator ** -other
-      elsif other == 0
-	num = 1
-	den = 1
-      end
-      Rational.new!(num, den)
-    elsif other.kind_of?(Float)
-      Float(self) ** other
-    else
-      x, y = other.coerce(self)
-      x ** y
-    end
-  end
-
-  #
-  # Returns the remainder when this value is divided by +other+.
-  #
-  # Examples:
-  #   r = Rational(7,4)    # -> Rational(7,4)
-  #   r % Rational(1,2)    # -> Rational(1,4)
-  #   r % 1                # -> Rational(3,4)
-  #   r % Rational(1,7)    # -> Rational(1,28)
-  #   r % 0.26             # -> 0.19
-  #
-  def % (other)
-    value = (self / other).to_i
-    return self - other * value
-  end
-
-  #
-  # Returns the quotient _and_ remainder.
-  #
-  # Examples:
-  #   r = Rational(7,4)        # -> Rational(7,4)
-  #   r.divmod Rational(1,2)   # -> [3, Rational(1,4)]
-  #
-  def divmod(other)
-    value = (self / other).to_i
-    return value, self - other * value
-  end
-
-  #
-  # Returns the absolute value.
-  #
-  def abs
-    if @numerator > 0
-      Rational.new!(@numerator, @denominator)
-    else
-      Rational.new!(- at numerator, @denominator)
-    end
-  end
-
-  #
-  # Returns +true+ iff this value is numerically equal to +other+.
-  #
-  # But beware:
-  #   Rational(1,2) == Rational(4,8)          # -> true
-  #   Rational(1,2) == Rational.new!(4,8)     # -> false
-  #
-  # Don't use Rational.new!
-  #
-  def == (other)
-    if other.kind_of?(Rational)
-      @numerator == other.numerator and @denominator == other.denominator
-    elsif other.kind_of?(Integer)
-      self == Rational.new!(other, 1)
-    elsif other.kind_of?(Float)
-      Float(self) == other
-    else
-      other == self
-    end
-  end
-
-  #
-  # Standard comparison operator.
-  #
-  def <=> (other)
-    if other.kind_of?(Rational)
-      num = @numerator * other.denominator
-      num_a = other.numerator * @denominator
-      v = num - num_a
-      if v > 0
-	return 1
-      elsif v < 0
-	return  -1
-      else
-	return 0
-      end
-    elsif other.kind_of?(Integer)
-      return self <=> Rational.new!(other, 1)
-    elsif other.kind_of?(Float)
-      return Float(self) <=> other
-    elsif defined? other.coerce
-      x, y = other.coerce(self)
-      return x <=> y
-    else
-      return nil
-    end
-  end
-
-  def coerce(other)
-    if other.kind_of?(Float)
-      return other, self.to_f
-    elsif other.kind_of?(Integer)
-      return Rational.new!(other, 1), self
-    else
-      super
-    end
-  end
-
-  #
-  # Converts the rational to an Integer.  Not the _nearest_ integer, the
-  # truncated integer.  Study the following example carefully:
-  #   Rational(+7,4).to_i             # -> 1
-  #   Rational(-7,4).to_i             # -> -2
-  #   (-1.75).to_i                    # -> -1
-  #
-  # In other words:
-  #   Rational(-7,4) == -1.75                 # -> true
-  #   Rational(-7,4).to_i == (-1.75).to_i     # false
-  #
-  def to_i
-    Integer(@numerator.div(@denominator))
-  end
-
-  #
-  # Converts the rational to a Float.
-  #
-  def to_f
-    @numerator.to_f/@denominator.to_f
-  end
-
-  #
-  # Returns a string representation of the rational number.
-  #
-  # Example:
-  #   Rational(3,4).to_s          #  "3/4"
-  #   Rational(8).to_s            #  "8"
-  #
-  def to_s
-    if @denominator == 1
-      @numerator.to_s
-    else
-      @numerator.to_s+"/"+ at denominator.to_s
-    end
-  end
-
-  #
-  # Returns +self+.
-  #
-  def to_r
-    self
-  end
-
-  #
-  # Returns a reconstructable string representation:
-  #
-  #   Rational(5,8).inspect     # -> "Rational(5, 8)"
-  #
-  def inspect
-    sprintf("Rational(%s, %s)", @numerator.inspect, @denominator.inspect)
-  end
-
-  #
-  # Returns a hash code for the object.
-  #
-  def hash
-    @numerator.hash ^ @denominator.hash
-  end
-
-  attr :numerator
-  attr :denominator
-
-  private :initialize
-end
-
-class Integer
-  #
-  # In an integer, the value _is_ the numerator of its rational equivalent.
-  # Therefore, this method returns +self+.
-  #
-  def numerator
-    self
-  end
-
-  #
-  # In an integer, the denominator is 1.  Therefore, this method returns 1.
-  #
-  def denominator
-    1
-  end
-
-  #
-  # Returns a Rational representation of this integer.
-  #
-  def to_r
-    Rational(self, 1)
-  end
-
-  #
-  # Returns the <em>greatest common denominator</em> of the two numbers (+self+
-  # and +n+).
-  #
-  # Examples:
-  #   72.gcd 168           # -> 24
-  #   19.gcd 36            # -> 1
-  #
-  # The result is positive, no matter the sign of the arguments.
-  #
-  def gcd(other)
-    min = self.abs
-    max = other.abs
-    while min > 0
-      tmp = min
-      min = max % min
-      max = tmp
-    end
-    max
-  end
-
-  #
-  # Returns the <em>lowest common multiple</em> (LCM) of the two arguments
-  # (+self+ and +other+).
-  #
-  # Examples:
-  #   6.lcm 7        # -> 42
-  #   6.lcm 9        # -> 18
-  #
-  def lcm(other)
-    if self.zero? or other.zero?
-      0
-    else
-      (self.div(self.gcd(other)) * other).abs
-    end
-  end
-
-  #
-  # Returns the GCD _and_ the LCM (see #gcd and #lcm) of the two arguments
-  # (+self+ and +other+).  This is more efficient than calculating them
-  # separately.
-  #
-  # Example:
-  #   6.gcdlcm 9     # -> [3, 18]
-  #
-  def gcdlcm(other)
-    gcd = self.gcd(other)
-    if self.zero? or other.zero?
-      [gcd, 0]
-    else
-      [gcd, (self.div(gcd) * other).abs]
-    end
-  end
-end
-
-class Fixnum
-  undef quo
-  # If Rational is defined, returns a Rational number instead of a Fixnum.
-  def quo(other)
-    Rational.new!(self,1) / other
-  end
-  alias rdiv quo
-
-  # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
-  def rpower (other)
-    if other >= 0
-      self.power!(other)
-    else
-      Rational.new!(self,1)**other
-    end
-  end
-
-  unless defined? 1.power!
-    alias power! **
-    alias ** rpower
-  end
-end
-
-class Bignum
-  unless defined? Complex
-    alias power! **
-  end
-
-  undef quo
-  # If Rational is defined, returns a Rational number instead of a Bignum.
-  def quo(other)
-    Rational.new!(self,1) / other
-  end
-  alias rdiv quo
-
-  # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
-  def rpower (other)
-    if other >= 0
-      self.power!(other)
-    else
-      Rational.new!(self, 1)**other
-    end
-  end
-
-  unless defined? Complex
-    alias ** rpower
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/code_objects.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/code_objects.rb
deleted file mode 100644
index d6c4f1b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/code_objects.rb
+++ /dev/null
@@ -1,765 +0,0 @@
-# We represent the various high-level code constructs that appear
-# in Ruby programs: classes, modules, methods, and so on.
-
-require 'rdoc/tokenstream'
-
-module RDoc
-
-
-  # We contain the common stuff for contexts (which are containers)
-  # and other elements (methods, attributes and so on)
-  #
-  class CodeObject
-
-    attr_accessor :parent
-
-    # We are the model of the code, but we know that at some point
-    # we will be worked on by viewers. By implementing the Viewable
-    # protocol, viewers can associated themselves with these objects.
-
-    attr_accessor :viewer
-
-    # are we done documenting (ie, did we come across a :enddoc:)?
-
-    attr_accessor :done_documenting
-
-    # Which section are we in
-
-    attr_accessor :section
-
-    # do we document ourselves?
-
-    attr_reader :document_self
-
-    def document_self=(val)
-      @document_self = val
-      if !val
-	remove_methods_etc
-      end
-    end
-
-    # set and cleared by :startdoc: and :enddoc:, this is used to toggle
-    # the capturing of documentation
-    def start_doc
-      @document_self = true
-      @document_children = true
-    end
-
-    def stop_doc
-      @document_self = false
-      @document_children = false
-    end
-
-    # do we document ourselves and our children
-
-    attr_reader :document_children
-
-    def document_children=(val)
-      @document_children = val
-      if !val
-	remove_classes_and_modules
-      end
-    end
-
-    # Do we _force_ documentation, even is we wouldn't normally show the entity
-    attr_accessor :force_documentation
-
-    # Default callbacks to nothing, but this is overridden for classes
-    # and modules
-    def remove_classes_and_modules
-    end
-
-    def remove_methods_etc
-    end
-
-    def initialize
-      @document_self = true
-      @document_children = true
-      @force_documentation = false
-      @done_documenting = false
-    end
-
-    # Access the code object's comment
-    attr_reader :comment
-
-    # Update the comment, but don't overwrite a real comment
-    # with an empty one
-    def comment=(comment)
-      @comment = comment unless comment.empty?
-    end
-
-    # There's a wee trick we pull. Comment blocks can have directives that
-    # override the stuff we extract during the parse. So, we have a special
-    # class method, attr_overridable, that lets code objects list
-    # those directives. Wehn a comment is assigned, we then extract
-    # out any matching directives and update our object
-
-    def CodeObject.attr_overridable(name, *aliases)
-      @overridables ||= {}
-
-      attr_accessor name
-
-      aliases.unshift name
-      aliases.each do |directive_name|
-        @overridables[directive_name.to_s] = name
-      end
-    end
-
-  end
-
-  # A Context is something that can hold modules, classes, methods, 
-  # attributes, aliases, requires, and includes. Classes, modules, and
-  # files are all Contexts.
-
-  class Context < CodeObject
-    attr_reader   :name, :method_list, :attributes, :aliases, :constants
-    attr_reader   :requires, :includes, :in_files, :visibility
-
-    attr_reader   :sections
-
-    class Section
-      attr_reader :title, :comment, :sequence
-
-      @@sequence = "SEC00000"
-
-      def initialize(title, comment)
-        @title = title
-        @@sequence.succ!
-        @sequence = @@sequence.dup
-        set_comment(comment)
-      end
-
-      private
-
-      # Set the comment for this section from the original comment block
-      # If the first line contains :section:, strip it and use the rest. Otherwise
-      # remove lines up to the line containing :section:, and look for 
-      # those lines again at the end and remove them. This lets us write
-      #
-      #   # ---------------------
-      #   # :SECTION: The title
-      #   # The body
-      #   # ---------------------
-
-      def set_comment(comment)
-        return unless comment
-
-        if comment =~ /^.*?:section:.*$/
-          start = $`
-          rest = $'
-          if start.empty?
-            @comment = rest
-          else
-            @comment = rest.sub(/#{start.chomp}\Z/, '')
-          end
-        else
-          @comment = comment
-        end
-        @comment = nil if @comment.empty?
-      end
-    end
-
-
-    def initialize
-      super()
-
-      @in_files    = []
-
-      @name    ||= "unknown"
-      @comment ||= ""
-      @parent  = nil
-      @visibility = :public
-
-      @current_section = Section.new(nil, nil)
-      @sections = [ @current_section ]
-
-      initialize_methods_etc
-      initialize_classes_and_modules
-    end
-
-    # map the class hash to an array externally
-    def classes
-      @classes.values
-    end
-
-    # map the module hash to an array externally
-    def modules
-      @modules.values
-    end
-
-    # Change the default visibility for new methods
-    def ongoing_visibility=(vis)
-      @visibility = vis
-    end
-
-    # Given an array +methods+ of method names, set the
-    # visibility of the corresponding AnyMethod object
-
-    def set_visibility_for(methods, vis, singleton=false)
-      count = 0
-      @method_list.each do |m|
-        if methods.include?(m.name) && m.singleton == singleton
-          m.visibility = vis
-          count += 1
-        end
-      end
-
-      return if count == methods.size || singleton
-
-      # perhaps we need to look at attributes
-
-      @attributes.each do |a|
-        if methods.include?(a.name)
-          a.visibility = vis
-          count += 1
-        end
-      end
-    end
-
-    # Record the file that we happen to find it in
-    def record_location(toplevel)
-      @in_files << toplevel unless @in_files.include?(toplevel)
-    end
-
-    # Return true if at least part of this thing was defined in +file+
-    def defined_in?(file)
-      @in_files.include?(file)
-    end
-
-    def add_class(class_type, name, superclass)
-      add_class_or_module(@classes, class_type, name, superclass)
-    end
-
-    def add_module(class_type, name)
-      add_class_or_module(@modules, class_type, name, nil)
-    end
-
-    def add_method(a_method)
-      puts "Adding #@visibility method #{a_method.name} to #@name" if $DEBUG
-      a_method.visibility = @visibility
-      add_to(@method_list, a_method)
-    end
-
-    def add_attribute(an_attribute)
-      add_to(@attributes, an_attribute)
-    end
-
-    def add_alias(an_alias)
-      meth = find_instance_method_named(an_alias.old_name)
-      if meth
-        new_meth = AnyMethod.new(an_alias.text, an_alias.new_name)
-        new_meth.is_alias_for = meth
-        new_meth.singleton    = meth.singleton
-        new_meth.params       = meth.params
-        new_meth.comment = "Alias for \##{meth.name}"
-        meth.add_alias(new_meth)
-        add_method(new_meth)
-      else
-        add_to(@aliases, an_alias)
-      end
-    end
-
-    def add_include(an_include)
-      add_to(@includes, an_include)
-    end
-
-    def add_constant(const)
-      add_to(@constants, const)
-    end
-
-    # Requires always get added to the top-level (file) context
-    def add_require(a_require)
-      if self.kind_of? TopLevel
-        add_to(@requires, a_require)
-      else
-        parent.add_require(a_require)
-      end
-    end
-
-    def add_class_or_module(collection, class_type, name, superclass=nil)
-      cls = collection[name]
-      if cls
-        puts "Reusing class/module #{name}" if $DEBUG
-      else
-        cls = class_type.new(name, superclass)
-        puts "Adding class/module #{name} to #@name" if $DEBUG
-#        collection[name] = cls if @document_self  && !@done_documenting
-        collection[name] = cls if !@done_documenting
-        cls.parent = self
-        cls.section = @current_section
-      end
-      cls
-    end
-
-    def add_to(array, thing)
-      array <<  thing if @document_self  && !@done_documenting
-      thing.parent = self
-      thing.section = @current_section
-    end
-
-    # If a class's documentation is turned off after we've started
-    # collecting methods etc., we need to remove the ones
-    # we have
-
-    def remove_methods_etc
-      initialize_methods_etc
-    end
-
-    def initialize_methods_etc
-      @method_list = []
-      @attributes  = []
-      @aliases     = []
-      @requires    = []
-      @includes    = []
-      @constants   = []
-    end
-
-    # and remove classes and modules when we see a :nodoc: all
-    def remove_classes_and_modules
-      initialize_classes_and_modules
-    end
-
-    def initialize_classes_and_modules
-      @classes     = {}
-      @modules     = {}
-    end
-
-    # Find a named module
-    def find_module_named(name)
-      return self if self.name == name
-      res = @modules[name] || @classes[name]
-      return res if res
-      find_enclosing_module_named(name)
-    end
-
-    # find a module at a higher scope
-    def find_enclosing_module_named(name)
-      parent && parent.find_module_named(name)
-    end
-
-    # Iterate over all the classes and modules in
-    # this object
-
-    def each_classmodule
-      @modules.each_value {|m| yield m}
-      @classes.each_value {|c| yield c}
-    end
-
-    def each_method
-      @method_list.each {|m| yield m}
-    end
-
-    def each_attribute 
-      @attributes.each {|a| yield a}
-    end
-
-    def each_constant
-      @constants.each {|c| yield c}
-    end
-
-    # Return the toplevel that owns us
-
-    def toplevel
-      return @toplevel if defined? @toplevel
-      @toplevel = self
-      @toplevel = @toplevel.parent until TopLevel === @toplevel
-      @toplevel
-    end
-
-    # allow us to sort modules by name
-    def <=>(other)
-      name <=> other.name
-    end
-
-    # Look up the given symbol. If method is non-nil, then
-    # we assume the symbol references a module that
-    # contains that method
-    def find_symbol(symbol, method=nil)
-      result = nil
-      case symbol
-      when /^::(.*)/
-        result = toplevel.find_symbol($1)
-      when /::/
-        modules = symbol.split(/::/)
-        unless modules.empty?
-          module_name = modules.shift
-          result = find_module_named(module_name)
-          if result
-            modules.each do |module_name|
-              result = result.find_module_named(module_name)
-              break unless result
-            end
-          end
-        end
-      else
-        # if a method is specified, then we're definitely looking for
-        # a module, otherwise it could be any symbol
-        if method
-          result = find_module_named(symbol)
-        else
-          result = find_local_symbol(symbol)
-          if result.nil?
-            if symbol =~ /^[A-Z]/
-              result = parent
-              while result && result.name != symbol
-                result = result.parent
-              end
-            end
-          end
-        end
-      end
-      if result && method
-        if !result.respond_to?(:find_local_symbol)
-          p result.name
-          p method
-          fail
-        end
-        result = result.find_local_symbol(method)
-      end
-      result
-    end
-           
-    def find_local_symbol(symbol)
-      res = find_method_named(symbol) ||
-            find_constant_named(symbol) ||
-            find_attribute_named(symbol) ||
-            find_module_named(symbol) 
-    end
-
-    # Handle sections
-
-    def set_current_section(title, comment)
-      @current_section = Section.new(title, comment)
-      @sections << @current_section
-    end
-
-    private
-
-    # Find a named method, or return nil
-    def find_method_named(name)
-      @method_list.find {|meth| meth.name == name}
-    end
-
-    # Find a named instance method, or return nil
-    def find_instance_method_named(name)
-      @method_list.find {|meth| meth.name == name && !meth.singleton}
-    end
-
-    # Find a named constant, or return nil
-    def find_constant_named(name)
-      @constants.find {|m| m.name == name}
-    end
-
-    # Find a named attribute, or return nil
-    def find_attribute_named(name)
-      @attributes.find {|m| m.name == name}
-    end
-    
-  end
-
-
-  # A TopLevel context is a source file
-
-  class TopLevel < Context
-    attr_accessor :file_stat
-    attr_accessor :file_relative_name
-    attr_accessor :file_absolute_name
-    attr_accessor :diagram
-    
-    @@all_classes = {}
-    @@all_modules = {}
-
-    def TopLevel::reset
-      @@all_classes = {}
-      @@all_modules = {}
-    end
-
-    def initialize(file_name)
-      super()
-      @name = "TopLevel"
-      @file_relative_name = file_name
-      @file_absolute_name = file_name
-      @file_stat          = File.stat(file_name)
-      @diagram            = nil
-    end
-
-    def full_name
-      nil
-    end
-
-    # Adding a class or module to a TopLevel is special, as we only
-    # want one copy of a particular top-level class. For example,
-    # if both file A and file B implement class C, we only want one
-    # ClassModule object for C. This code arranges to share
-    # classes and modules between files.
-
-    def add_class_or_module(collection, class_type, name, superclass)
-      cls = collection[name]
-      if cls
-        puts "Reusing class/module #{name}" if $DEBUG
-      else
-        if class_type == NormalModule
-          all = @@all_modules
-        else
-          all = @@all_classes
-        end
-        cls = all[name]
-        if !cls
-          cls = class_type.new(name, superclass)
-          all[name] = cls  unless @done_documenting
-        end
-        puts "Adding class/module #{name} to #@name" if $DEBUG
-        collection[name] = cls unless @done_documenting
-        cls.parent = self
-      end
-      cls
-    end
-
-    def TopLevel.all_classes_and_modules
-      @@all_classes.values + @@all_modules.values
-    end
-
-    def TopLevel.find_class_named(name)
-     @@all_classes.each_value do |c|
-        res = c.find_class_named(name) 
-        return res if res
-      end
-      nil
-    end
-
-    def find_local_symbol(symbol)
-      find_class_or_module_named(symbol) || super
-    end
-
-    def find_class_or_module_named(symbol)
-      @@all_classes.each_value {|c| return c if c.name == symbol}
-      @@all_modules.each_value {|m| return m if m.name == symbol}
-      nil
-    end
-
-    # Find a named module
-    def find_module_named(name)
-      find_class_or_module_named(name) || find_enclosing_module_named(name)
-    end
-
-
-  end
-
-  # ClassModule is the base class for objects representing either a
-  # class or a module.
-
-  class ClassModule < Context
-
-    attr_reader   :superclass
-    attr_accessor :diagram
-
-    def initialize(name, superclass = nil)
-      @name       = name
-      @diagram    = nil
-      @superclass = superclass
-      @comment    = ""
-      super()
-    end
-
-    # Return the fully qualified name of this class or module
-    def full_name
-      if @parent && @parent.full_name
-        @parent.full_name + "::" + @name
-      else
-        @name
-      end
-    end
-
-    def http_url(prefix)
-      path = full_name.split("::")
-      File.join(prefix, *path) + ".html"
-    end
-
-    # Return +true+ if this object represents a module
-    def is_module?
-      false
-    end
-
-    # to_s is simply for debugging
-    def to_s
-      res = self.class.name + ": " + @name 
-      res << @comment.to_s
-      res << super
-      res
-    end
-
-    def find_class_named(name)
-      return self if full_name == name
-      @classes.each_value {|c| return c if c.find_class_named(name) }
-      nil
-    end
-  end
-
-  # Anonymous classes
-  class AnonClass < ClassModule
-  end
-
-  # Normal classes
-  class NormalClass < ClassModule
-  end
-
-  # Singleton classes
-  class SingleClass < ClassModule
-  end
-
-  # Module
-  class NormalModule < ClassModule
-    def is_module?
-      true
-    end
-  end
-
-
-  # AnyMethod is the base class for objects representing methods
-
-  class AnyMethod < CodeObject
-    attr_accessor :name
-    attr_accessor :visibility
-    attr_accessor :block_params
-    attr_accessor :dont_rename_initialize
-    attr_accessor :singleton
-    attr_reader   :aliases           # list of other names for this method
-    attr_accessor :is_alias_for      # or a method we're aliasing
-
-    attr_overridable :params, :param, :parameters, :parameter
-
-    attr_accessor :call_seq
-
-
-    include TokenStream
-
-    def initialize(text, name)
-      super()
-      @text = text
-      @name = name
-      @token_stream  = nil
-      @visibility    = :public
-      @dont_rename_initialize = false
-      @block_params  = nil
-      @aliases       = []
-      @is_alias_for  = nil
-      @comment = ""
-      @call_seq = nil
-    end
-
-    def <=>(other)
-      @name <=> other.name
-    end
-
-    def to_s
-      res = self.class.name + ": " + @name + " (" + @text + ")\n"
-      res << @comment.to_s
-      res
-    end
-
-    def param_seq
-      p = params.gsub(/\s*\#.*/, '')
-      p = p.tr("\n", " ").squeeze(" ")
-      p = "(" + p + ")" unless p[0] == ?(
-
-      if (block = block_params)
-        # If this method has explicit block parameters, remove any
-        # explicit &block
-$stderr.puts p
-        p.sub!(/,?\s*&\w+/)
-$stderr.puts p
-
-        block.gsub!(/\s*\#.*/, '')
-        block = block.tr("\n", " ").squeeze(" ")
-        if block[0] == ?(
-          block.sub!(/^\(/, '').sub!(/\)/, '')
-        end
-        p << " {|#{block}| ...}"
-      end
-      p
-    end
-
-    def add_alias(method)
-      @aliases << method
-    end
-  end
-
-
-  # Represent an alias, which is an old_name/ new_name pair associated
-  # with a particular context
-  class Alias < CodeObject
-    attr_accessor :text, :old_name, :new_name, :comment
-    
-    def initialize(text, old_name, new_name, comment)
-      super()
-      @text = text
-      @old_name = old_name
-      @new_name = new_name
-      self.comment = comment
-    end
-
-    def to_s
-      "alias: #{self.old_name} ->  #{self.new_name}\n#{self.comment}"
-    end
-  end
-
-  # Represent a constant
-  class Constant < CodeObject
-    attr_accessor :name, :value
-
-    def initialize(name, value, comment)
-      super()
-      @name = name
-      @value = value
-      self.comment = comment
-    end
-  end
-
-  # Represent attributes
-  class Attr < CodeObject
-    attr_accessor :text, :name, :rw, :visibility
-
-    def initialize(text, name, rw, comment)
-      super()
-      @text = text
-      @name = name
-      @rw = rw
-      @visibility = :public
-      self.comment = comment
-    end
-
-    def to_s
-      "attr: #{self.name} #{self.rw}\n#{self.comment}"
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-  end
-
-  # a required file
-
-  class Require < CodeObject
-    attr_accessor :name
-
-    def initialize(name, comment)
-      super()
-      @name = name.gsub(/'|"/, "") #'
-      self.comment = comment
-    end
-
-  end
-
-  # an included module
-  class Include < CodeObject
-    attr_accessor :name
-
-    def initialize(name, comment)
-      super()
-      @name = name
-      self.comment = comment
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/diagram.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/diagram.rb
deleted file mode 100644
index 9fdc49c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/diagram.rb
+++ /dev/null
@@ -1,335 +0,0 @@
-# A wonderful hack by to draw package diagrams using the dot package.
-# Originally written by  Jah, team Enticla.
-#
-# You must have the V1.7 or later in your path
-# http://www.research.att.com/sw/tools/graphviz/
-
-require "rdoc/dot/dot"
-require 'rdoc/options'
-
-module RDoc
-
-  # Draw a set of diagrams representing the modules and classes in the
-  # system. We draw one diagram for each file, and one for each toplevel
-  # class or module. This means there will be overlap. However, it also
-  # means that you'll get better context for objects.
-  #
-  # To use, simply
-  #
-  #   d = Diagram.new(info)   # pass in collection of top level infos
-  #   d.draw
-  #
-  # The results will be written to the +dot+ subdirectory. The process
-  # also sets the +diagram+ attribute in each object it graphs to
-  # the name of the file containing the image. This can be used
-  # by output generators to insert images.
-
-  class Diagram
-
-    FONT = "Arial"
-
-    DOT_PATH = "dot"
-
-    # Pass in the set of top level objects. The method also creates
-    # the subdirectory to hold the images
-
-    def initialize(info, options)
-      @info = info
-      @options = options
-      @counter = 0
-      File.makedirs(DOT_PATH)
-      @diagram_cache = {}
-    end
-
-    # Draw the diagrams. We traverse the files, drawing a diagram for
-    # each. We also traverse each top-level class and module in that
-    # file drawing a diagram for these too. 
-
-    def draw
-      unless @options.quiet
-        $stderr.print "Diagrams: "
-        $stderr.flush
-      end
-
-      @info.each_with_index do |i, file_count|
-        @done_modules = {}
-        @local_names = find_names(i)
-        @global_names = []
-        @global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
-                                    'fontname' => FONT,
-                                    'fontsize' => '8',
-                                    'bgcolor'  => 'lightcyan1',
-                                    'compound' => 'true')
-        
-        # it's a little hack %) i'm too lazy to create a separate class
-        # for default node
-        graph << DOT::DOTNode.new('name' => 'node',
-                                  'fontname' => FONT,
-                                  'color' => 'black',
-                                  'fontsize' => 8)
-        
-        i.modules.each do |mod|
-          draw_module(mod, graph, true, i.file_relative_name)
-        end
-        add_classes(i, graph, i.file_relative_name)
-
-        i.diagram = convert_to_png("f_#{file_count}", graph)
-        
-        # now go through and document each top level class and
-        # module independently
-        i.modules.each_with_index do |mod, count|
-          @done_modules = {}
-          @local_names = find_names(mod)
-          @global_names = []
-
-          @global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
-                                      'fontname' => FONT,
-                                      'fontsize' => '8',
-                                      'bgcolor'  => 'lightcyan1',
-                                      'compound' => 'true')
-
-          graph << DOT::DOTNode.new('name' => 'node',
-                                    'fontname' => FONT,
-                                    'color' => 'black',
-                                    'fontsize' => 8)
-          draw_module(mod, graph, true)
-          mod.diagram = convert_to_png("m_#{file_count}_#{count}", 
-                                       graph) 
-        end
-      end
-      $stderr.puts unless @options.quiet
-    end
-
-    #######
-    private
-    #######
-
-    def find_names(mod)
-      return [mod.full_name] + mod.classes.collect{|cl| cl.full_name} +
-        mod.modules.collect{|m| find_names(m)}.flatten
-    end
-
-    def find_full_name(name, mod)
-      full_name = name.dup
-      return full_name if @local_names.include?(full_name)
-      mod_path = mod.full_name.split('::')[0..-2]
-      unless mod_path.nil?
-        until mod_path.empty?
-          full_name = mod_path.pop + '::' + full_name
-          return full_name if @local_names.include?(full_name)
-        end
-      end
-      return name
-    end
-
-    def draw_module(mod, graph, toplevel = false, file = nil)
-      return if  @done_modules[mod.full_name] and not toplevel
-
-      @counter += 1
-      url = mod.http_url("classes")
-      m = DOT::DOTSubgraph.new('name' => "cluster_#{mod.full_name.gsub( /:/,'_' )}",
-                               'label' => mod.name,
-                               'fontname' => FONT,
-                               'color' => 'blue', 
-                               'style' => 'filled', 
-                               'URL'   => %{"#{url}"},
-                               'fillcolor' => toplevel ? 'palegreen1' : 'palegreen3')
-      
-      @done_modules[mod.full_name] = m
-      add_classes(mod, m, file)
-      graph << m
-
-      unless mod.includes.empty?
-        mod.includes.each do |m|
-          m_full_name = find_full_name(m.name, mod)
-          if @local_names.include?(m_full_name)
-            @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{mod.full_name.gsub( /:/,'_' )}",
-                                      'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}",
-                                      'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
-          else
-            unless @global_names.include?(m_full_name)
-              path = m_full_name.split("::")
-              url = File.join('classes', *path) + ".html"
-              @global_graph << DOT::DOTNode.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
-                                        'shape' => 'box',
-                                        'label' => "#{m_full_name}",
-                                        'URL'   => %{"#{url}"})
-              @global_names << m_full_name
-            end
-            @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{mod.full_name.gsub( /:/,'_' )}",
-                                      'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
-          end
-        end
-      end
-    end
-
-    def add_classes(container, graph, file = nil )
-
-      use_fileboxes = Options.instance.fileboxes
-
-      files = {}
-
-      # create dummy node (needed if empty and for module includes)
-      if container.full_name
-        graph << DOT::DOTNode.new('name'     => "#{container.full_name.gsub( /:/,'_' )}",
-                                  'label'    => "",
-                                  'width'  => (container.classes.empty? and 
-                                               container.modules.empty?) ? 
-                                  '0.75' : '0.01',
-                                  'height' => '0.01',
-                                  'shape' => 'plaintext')
-      end
-      container.classes.each_with_index do |cl, cl_index|
-        last_file = cl.in_files[-1].file_relative_name
-
-        if use_fileboxes && !files.include?(last_file)
-          @counter += 1
-          files[last_file] =
-            DOT::DOTSubgraph.new('name'     => "cluster_#{@counter}",
-                                 'label'    => "#{last_file}",
-                                 'fontname' => FONT,
-                                 'color'=>
-                                 last_file == file ? 'red' : 'black')
-        end
-
-        next if cl.name == 'Object' || cl.name[0,2] == "<<"
-
-        url = cl.http_url("classes")
-        
-        label = cl.name.dup
-        if use_fileboxes && cl.in_files.length > 1
-          label <<  '\n[' + 
-                        cl.in_files.collect {|i|
-                             i.file_relative_name 
-                        }.sort.join( '\n' ) +
-                    ']'
-        end 
-                
-        attrs = {
-          'name' => "#{cl.full_name.gsub( /:/, '_' )}",
-          'fontcolor' => 'black',
-          'style'=>'filled',
-          'color'=>'palegoldenrod',
-          'label' => label,
-          'shape' => 'ellipse',
-          'URL'   => %{"#{url}"}
-        }
-
-        c = DOT::DOTNode.new(attrs)
-        
-        if use_fileboxes
-          files[last_file].push c 
-        else
-          graph << c
-        end
-      end
-      
-      if use_fileboxes
-        files.each_value do |val|
-          graph << val
-        end
-      end
-      
-      unless container.classes.empty?
-        container.classes.each_with_index do |cl, cl_index|
-          cl.includes.each do |m|
-            m_full_name = find_full_name(m.name, cl)
-            if @local_names.include?(m_full_name)
-              @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{cl.full_name.gsub( /:/,'_' )}",
-                                      'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}")
-            else
-              unless @global_names.include?(m_full_name)
-                path = m_full_name.split("::")
-                url = File.join('classes', *path) + ".html"
-                @global_graph << DOT::DOTNode.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
-                                          'shape' => 'box',
-                                          'label' => "#{m_full_name}",
-                                          'URL'   => %{"#{url}"})
-                @global_names << m_full_name
-              end
-              @global_graph << DOT::DOTEdge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
-                                      'to' => "#{cl.full_name.gsub( /:/, '_')}")
-            end
-          end
-
-          sclass = cl.superclass
-          next if sclass.nil? || sclass == 'Object'
-          sclass_full_name = find_full_name(sclass,cl)
-          unless @local_names.include?(sclass_full_name) or @global_names.include?(sclass_full_name)
-            path = sclass_full_name.split("::")
-            url = File.join('classes', *path) + ".html"
-            @global_graph << DOT::DOTNode.new(
-                       'name' => "#{sclass_full_name.gsub( /:/, '_' )}",
-                       'label' => sclass_full_name,
-                       'URL'   => %{"#{url}"})
-            @global_names << sclass_full_name
-          end
-          @global_graph << DOT::DOTEdge.new('from' => "#{sclass_full_name.gsub( /:/,'_' )}",
-                                    'to' => "#{cl.full_name.gsub( /:/, '_')}")
-        end
-      end
-
-      container.modules.each do |submod|
-        draw_module(submod, graph)
-      end
-      
-    end
-
-    def convert_to_png(file_base, graph)
-      str = graph.to_s
-      return @diagram_cache[str] if @diagram_cache[str]
-      op_type = Options.instance.image_format
-      dotfile = File.join(DOT_PATH, file_base)
-      src = dotfile + ".dot"
-      dot = dotfile + "." + op_type
-
-      unless @options.quiet
-        $stderr.print "."
-        $stderr.flush
-      end
-
-      File.open(src, 'w+' ) do |f|
-        f << str << "\n"
-      end
-      
-      system "dot", "-T#{op_type}", src, "-o", dot
-
-      # Now construct the imagemap wrapper around
-      # that png
-
-      ret = wrap_in_image_map(src, dot)
-      @diagram_cache[str] = ret
-      return ret
-    end
-
-    # Extract the client-side image map from dot, and use it
-    # to generate the imagemap proper. Return the whole
-    # <map>..<img> combination, suitable for inclusion on
-    # the page
-
-    def wrap_in_image_map(src, dot)
-      res = %{<map id="map" name="map">\n}
-      dot_map = `dot -Tismap #{src}`
-      dot_map.each do |area|
-        unless area =~ /^rectangle \((\d+),(\d+)\) \((\d+),(\d+)\) ([\/\w.]+)\s*(.*)/
-          $stderr.puts "Unexpected output from dot:\n#{area}"
-          return nil
-        end
-        
-        xs, ys = [$1.to_i, $3.to_i], [$2.to_i, $4.to_i]
-        url, area_name = $5, $6
-
-        res <<  %{  <area shape="rect" coords="#{xs.min},#{ys.min},#{xs.max},#{ys.max}" }
-        res <<  %{     href="#{url}" alt="#{area_name}" />\n}
-      end
-      res << "</map>\n"
-#      map_file = src.sub(/.dot/, '.map')
-#      system("dot -Timap #{src} -o #{map_file}")
-      res << %{<img src="#{dot}" usemap="#map" border="0" alt="#{dot}">}
-      return res
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/dot/dot.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/dot/dot.rb
deleted file mode 100644
index 6dbb7cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/dot/dot.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-module DOT
-
-    # these glogal vars are used to make nice graph source
-    $tab = '    '
-    $tab2 = $tab * 2
-
-    # if we don't like 4 spaces, we can change it any time
-    def change_tab( t )
-        $tab = t
-        $tab2 = t * 2
-    end
-
-    # options for node declaration
-    NODE_OPTS = [
-        'bgcolor',
-        'color',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'height',
-        'width',
-        'label',
-        'layer',
-        'rank',
-        'shape',
-        'shapefile',
-        'style',
-        'URL',
-    ]
-
-    # options for edge declaration
-    EDGE_OPTS = [
-        'color',
-        'decorate',
-        'dir',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'id',
-        'label',
-        'layer',
-        'lhead',
-        'ltail',
-        'minlen',
-        'style',
-        'weight'
-    ]
-
-    # options for graph declaration
-    GRAPH_OPTS = [
-        'bgcolor',
-        'center',
-        'clusterrank',
-        'color',
-        'compound',
-        'concentrate',
-        'fillcolor',
-        'fontcolor',
-        'fontname',
-        'fontsize',
-        'label',
-        'layerseq',
-        'margin',
-        'mclimit',
-        'nodesep',
-        'nslimit',
-        'ordering',
-        'orientation',
-        'page',
-        'rank',
-        'rankdir',
-        'ranksep',
-        'ratio',
-        'size',
-        'style',
-        'URL'
-    ]
-
-    # a root class for any element in dot notation
-    class DOTSimpleElement
-        attr_accessor :name
-
-        def initialize( params = {} )
-            @label = params['name'] ? params['name'] : ''
-        end
-
-        def to_s
-            @name
-        end
-    end
-
-    # an element that has options ( node, edge or graph )
-    class DOTElement < DOTSimpleElement
-        #attr_reader :parent
-        attr_accessor :name, :options
-
-        def initialize( params = {}, option_list = [] )
-            super( params )
-            @name = params['name'] ? params['name'] : nil
-            @parent = params['parent'] ? params['parent'] : nil
-            @options = {}
-            option_list.each{ |i|
-                @options[i] = params[i] if params[i]
-            }
-            @options['label'] ||= @name if @name != 'node'
-        end
-
-        def each_option
-            @options.each{ |i| yield i }
-        end
-
-        def each_option_pair
-            @options.each_pair{ |key, val| yield key, val }
-        end
-
-        #def parent=( thing )
-        #    @parent.delete( self ) if defined?( @parent ) and @parent
-        #    @parent = thing
-        #end
-    end
-
-
-    # this is used when we build nodes that have shape=record
-    # ports don't have options :)
-    class DOTPort < DOTSimpleElement
-        attr_accessor :label
-
-        def initialize( params = {} )
-            super( params )
-            @name = params['label'] ? params['label'] : ''
-        end
-        def to_s
-            ( @name && @name != "" ? "<#{@name}>" : "" ) + "#{@label}"
-        end
-    end
-
-    # node element
-    class DOTNode < DOTElement
-
-        def initialize( params = {}, option_list = NODE_OPTS )
-            super( params, option_list )
-            @ports = params['ports'] ? params['ports'] : []
-        end
-
-        def each_port
-            @ports.each{ |i| yield i }
-        end
-
-        def << ( thing )
-            @ports << thing
-        end
-
-        def push ( thing )
-            @ports.push( thing )
-        end
-
-        def pop
-            @ports.pop
-        end
-
-        def to_s( t = '' )
-
-            label = @options['shape'] != 'record' && @ports.length == 0 ?
-                @options['label'] ?
-                    t + $tab + "label = \"#{@options['label']}\"\n" :
-                    '' :
-                t + $tab + 'label = "' + " \\\n" +
-                t + $tab2 + "#{@options['label']}| \\\n" +
-                @ports.collect{ |i|
-                    t + $tab2 + i.to_s
-                }.join( "| \\\n" ) + " \\\n" +
-                t + $tab + '"' + "\n"
-
-            t + "#{@name} [\n" +
-            @options.to_a.collect{ |i|
-                i[1] && i[0] != 'label' ?
-                    t + $tab + "#{i[0]} = #{i[1]}" : nil
-            }.compact.join( ",\n" ) + ( label != '' ? ",\n" : "\n" ) +
-            label +
-            t + "]\n"
-        end
-    end
-
-    # subgraph element is the same to graph, but has another header in dot
-    # notation
-    class DOTSubgraph < DOTElement
-
-        def initialize( params = {}, option_list = GRAPH_OPTS )
-            super( params, option_list )
-            @nodes = params['nodes'] ? params['nodes'] : []
-            @dot_string = 'subgraph'
-        end
-
-        def each_node
-            @nodes.each{ |i| yield i }
-        end
-
-        def << ( thing )
-            @nodes << thing
-        end
-
-        def push( thing )
-            @nodes.push( thing )
-        end
-
-        def pop
-            @nodes.pop
-        end
-
-        def to_s( t = '' )
-          hdr = t + "#{@dot_string} #{@name} {\n"
-
-          options = @options.to_a.collect{ |name, val|
-            val && name != 'label' ?
-            t + $tab + "#{name} = #{val}" :
-              name ? t + $tab + "#{name} = \"#{val}\"" : nil
-          }.compact.join( "\n" ) + "\n"
-
-          nodes = @nodes.collect{ |i|
-            i.to_s( t + $tab )
-          }.join( "\n" ) + "\n"
-          hdr + options + nodes + t + "}\n"
-        end
-    end
-
-    # this is graph
-    class DOTDigraph < DOTSubgraph
-        def initialize( params = {}, option_list = GRAPH_OPTS )
-            super( params, option_list )
-            @dot_string = 'digraph'
-        end
-    end
-
-    # this is edge
-    class DOTEdge < DOTElement
-        attr_accessor :from, :to
-        def initialize( params = {}, option_list = EDGE_OPTS )
-            super( params, option_list )
-            @from = params['from'] ? params['from'] : nil
-            @to = params['to'] ? params['to'] : nil
-        end
-
-        def to_s( t = '' )
-            t + "#{@from} -> #{to} [\n" +
-            @options.to_a.collect{ |i|
-                i[1] && i[0] != 'label' ?
-                    t + $tab + "#{i[0]} = #{i[1]}" :
-                    i[1] ? t + $tab + "#{i[0]} = \"#{i[1]}\"" : nil
-            }.compact.join( "\n" ) + "\n" + t + "]\n"
-        end
-    end
-end
-
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/chm_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/chm_generator.rb
deleted file mode 100644
index 51eeda8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/chm_generator.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-require 'rdoc/generators/html_generator'
-
-module Generators
-
-  class CHMGenerator < HTMLGenerator
-
-    HHC_PATH = "c:/Program Files/HTML Help Workshop/hhc.exe"
-
-    # Standard generator factory
-    def CHMGenerator.for(options)
-      CHMGenerator.new(options)
-    end
-
-    
-    def initialize(*args)
-      super
-      @op_name = @options.op_name || "rdoc"
-      check_for_html_help_workshop
-    end
-
-    def check_for_html_help_workshop
-      stat = File.stat(HHC_PATH)
-    rescue
-      $stderr <<
-	"\n.chm output generation requires that Microsoft's Html Help\n" <<
-	"Workshop is installed. RDoc looks for it in:\n\n    " <<
-	HHC_PATH <<
-	"\n\nYou can download a copy for free from:\n\n" <<
-	"    http://msdn.microsoft.com/library/default.asp?" <<
-	"url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp\n\n"
-      
-      exit 99
-    end
-
-    # Generate the html as normal, then wrap it
-    # in a help project
-    def generate(info)
-      super
-      @project_name = @op_name + ".hhp"
-      create_help_project
-    end
-
-    # The project contains the project file, a table of contents
-    # and an index
-    def create_help_project
-      create_project_file
-      create_contents_and_index
-      compile_project
-    end
-
-    # The project file links together all the various
-    # files that go to make up the help.
-
-    def create_project_file
-      template = TemplatePage.new(RDoc::Page::HPP_FILE)
-      values = { "title" => @options.title, "opname" => @op_name }
-      files = []
-      @files.each do |f|
-	files << { "html_file_name" => f.path }
-      end
-
-      values['all_html_files'] = files
-      
-      File.open(@project_name, "w") do |f|
-        template.write_html_on(f, values)
-      end
-    end
-
-    # The contents is a list of all files and modules.
-    # For each we include  as sub-entries the list
-    # of methods they contain. As we build the contents
-    # we also build an index file
-
-    def create_contents_and_index
-      contents = []
-      index    = []
-
-      (@files+ at classes).sort.each do |entry|
-	content_entry = { "c_name" => entry.name, "ref" => entry.path }
-	index << { "name" => entry.name, "aref" => entry.path }
-
-	internals = []
-
-	methods = entry.build_method_summary_list(entry.path)
-
-	content_entry["methods"] = methods unless methods.empty?
-        contents << content_entry
-	index.concat methods
-      end
-
-      values = { "contents" => contents }
-      template = TemplatePage.new(RDoc::Page::CONTENTS)
-      File.open("contents.hhc", "w") do |f|
-	template.write_html_on(f, values)
-      end
-
-      values = { "index" => index }
-      template = TemplatePage.new(RDoc::Page::CHM_INDEX)
-      File.open("index.hhk", "w") do |f|
-	template.write_html_on(f, values)
-      end      
-    end
-
-    # Invoke the windows help compiler to compiler the project
-    def compile_project
-      system(HHC_PATH, @project_name)
-    end
-
-  end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/html_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/html_generator.rb
deleted file mode 100644
index 1f9b808..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/html_generator.rb
+++ /dev/null
@@ -1,1509 +0,0 @@
-# We're responsible for generating all the HTML files
-# from the object tree defined in code_objects.rb. We
-# generate:
-#
-# [files]   an html file for each input file given. These
-#           input files appear as objects of class
-#           TopLevel
-#
-# [classes] an html file for each class or module encountered.
-#           These classes are not grouped by file: if a file
-#           contains four classes, we'll generate an html
-#           file for the file itself, and four html files 
-#           for the individual classes. 
-#
-# [indices] we generate three indices for files, classes,
-#           and methods. These are displayed in a browser
-#           like window with three index panes across the
-#           top and the selected description below
-#
-# Method descriptions appear in whatever entity (file, class,
-# or module) that contains them.
-#
-# We generate files in a structure below a specified subdirectory,
-# normally +doc+.
-#
-#  opdir
-#     |
-#     |___ files
-#     |       |__  per file summaries
-#     |
-#     |___ classes
-#             |__ per class/module descriptions
-#
-# HTML is generated using the Template class.
-#
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/template'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-require 'cgi'
-
-module Generators
-
-  # Name of sub-direcories that hold file and class/module descriptions
-
-  FILE_DIR  = "files"
-  CLASS_DIR = "classes"
-  CSS_NAME  = "rdoc-style.css"
-  
-
-  ##
-  # Build a hash of all items that can be cross-referenced.
-  # This is used when we output required and included names: 
-  # if the names appear in this hash, we can generate
-  # an html cross reference to the appropriate description.
-  # We also use this when parsing comment blocks: any decorated 
-  # words matching an entry in this list are hyperlinked.
-
-  class AllReferences
-    @@refs = {}
-    
-    def AllReferences::reset
-      @@refs = {}
-    end
-
-    def AllReferences.add(name, html_class)
-      @@refs[name] = html_class
-    end
-
-    def AllReferences.[](name)
-      @@refs[name]
-    end
-
-    def AllReferences.keys
-      @@refs.keys
-    end
-  end
-
-
-  ##
-  # Subclass of the SM::ToHtml class that supports looking
-  # up words in the AllReferences list. Those that are
-  # found (like AllReferences in this comment) will
-  # be hyperlinked
-
-  class HyperlinkHtml < SM::ToHtml
-    # We need to record the html path of our caller so we can generate
-    # correct relative paths for any hyperlinks that we find
-    def initialize(from_path, context)
-      super()
-      @from_path = from_path
-
-      @parent_name = context.parent_name
-      @parent_name += "::" if @parent_name
-      @context = context
-    end
-
-    # We're invoked when any text matches the CROSSREF pattern
-    # (defined in MarkUp). If we fine the corresponding reference,
-    # generate a hyperlink. If the name we're looking for contains
-    # no punctuation, we look for it up the module/class chain. For
-    # example, HyperlinkHtml is found, even without the Generators::
-    # prefix, because we look for it in module Generators first.
-
-    def handle_special_CROSSREF(special)
-      name = special.text
-      if name[0,1] == '#'
-        lookup = name[1..-1]
-        name = lookup unless Options.instance.show_hash
-      else
-        lookup = name
-      end
-
-      # Find class, module, or method in class or module.
-      if /([A-Z]\w*)[.\#](\w+[!?=]?)/ =~ lookup
-        container = $1
-        method = $2
-        ref = @context.find_symbol(container, method)
-      elsif /([A-Za-z]\w*)[.\#](\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?)/ =~ lookup
-        container = $1
-        method = $2
-        ref = @context.find_symbol(container, method)
-      else
-        ref = @context.find_symbol(lookup)
-      end
-
-      if ref and ref.document_self
-        "<a href=\"#{ref.as_href(@from_path)}\">#{name}</a>"
-      else
-        name
-      end
-    end
-
-
-    # Generate a hyperlink for url, labeled with text. Handle the
-    # special cases for img: and link: described under handle_special_HYPEDLINK
-    def gen_url(url, text)
-      if url =~ /([A-Za-z]+):(.*)/
-        type = $1
-        path = $2
-      else
-        type = "http"
-        path = url
-        url  = "http://#{url}"
-      end
-
-      if type == "link"
-        if path[0,1] == '#'     # is this meaningful?
-          url = path
-        else
-          url = HTMLGenerator.gen_url(@from_path, path)
-        end
-      end
-
-      if (type == "http" || type == "link") && 
-          url =~ /\.(gif|png|jpg|jpeg|bmp)$/
-
-        "<img src=\"#{url}\" />"
-      else
-        "<a href=\"#{url}\">#{text.sub(%r{^#{type}:/*}, '')}</a>"
-      end
-    end
-
-    # And we're invoked with a potential external hyperlink mailto:
-    # just gets inserted. http: links are checked to see if they
-    # reference an image. If so, that image gets inserted using an
-    # <img> tag. Otherwise a conventional <a href> is used.  We also
-    # support a special type of hyperlink, link:, which is a reference
-    # to a local file whose path is relative to the --op directory.
-
-    def handle_special_HYPERLINK(special)
-      url = special.text
-      gen_url(url, url)
-    end
-
-    # HEre's a hypedlink where the label is different to the URL
-    #  <label>[url]
-    #
-    
-    def handle_special_TIDYLINK(special)
-      text = special.text
-#      unless text =~ /(\S+)\[(.*?)\]/
-      unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/ 
-        return text
-      end
-      label = $1
-      url   = $2
-      gen_url(url, label)
-    end
-
-  end
-
-
-  
-  #####################################################################
-  #
-  # Handle common markup tasks for the various Html classes
-  #
-
-  module MarkUp
-
-    # Convert a string in markup format into HTML. We keep a cached
-    # SimpleMarkup object lying around after the first time we're
-    # called per object.
-
-    def markup(str, remove_para=false)
-      return '' unless str
-      unless defined? @markup
-        @markup = SM::SimpleMarkup.new
-
-        # class names, variable names, or instance variables
-        @markup.add_special(/(
-                               \w+(::\w+)*[.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator in Fortran95)
-                             | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
-                             | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
-                             | \b([A-Z]\w+(::\w+)*)       #    A::B..
-                             | \#\w+[!?=]?                #    #meth_name 
-                             | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
-                             )/x, 
-                            :CROSSREF)
-
-        # external hyperlinks
-        @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
-
-        # and links of the form  <text>[<url>]
-        @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
-#        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
-
-      end
-      unless defined? @html_formatter
-        @html_formatter = HyperlinkHtml.new(self.path, self)
-      end
-
-      # Convert leading comment markers to spaces, but only
-      # if all non-blank lines have them
-
-      if str =~ /^(?>\s*)[^\#]/
-        content = str
-      else
-        content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
-      end
-
-      res = @markup.convert(content, @html_formatter)
-      if remove_para
-        res.sub!(/^<p>/, '')
-        res.sub!(/<\/p>$/, '')
-      end
-      res
-    end
-
-    # Qualify a stylesheet URL; if if +css_name+ does not begin with '/' or
-    # 'http[s]://', prepend a prefix relative to +path+. Otherwise, return it
-    # unmodified.
-
-    def style_url(path, css_name=nil)
-#      $stderr.puts "style_url( #{path.inspect}, #{css_name.inspect} )"
-      css_name ||= CSS_NAME
-      if %r{^(https?:/)?/} =~ css_name
-        return css_name
-      else
-        return HTMLGenerator.gen_url(path, css_name)
-      end
-    end
-
-    # Build a webcvs URL with the given 'url' argument. URLs with a '%s' in them
-    # get the file's path sprintfed into them; otherwise they're just catenated
-    # together.
-
-    def cvs_url(url, full_path)
-      if /%s/ =~ url
-        return sprintf( url, full_path )
-      else
-        return url + full_path
-      end
-    end
-  end
-
-
-  #####################################################################
-  #
-  # A Context is built by the parser to represent a container: contexts
-  # hold classes, modules, methods, require lists and include lists.
-  # ClassModule and TopLevel are the context objects we process here
-  # 
-  class ContextUser
-
-    include MarkUp
-
-    attr_reader :context
-    
-    def initialize(context, options)
-      @context = context
-      @options = options
-    end
-      
-    # convenience method to build a hyperlink
-    def href(link, cls, name)
-      %{<a href="#{link}" class="#{cls}">#{name}</a>} #"
-    end
-
-    # return a reference to outselves to be used as an href=
-    # the form depends on whether we're all in one file
-    # or in multiple files
-
-    def as_href(from_path)
-      if @options.all_one_file
-        "#" + path
-      else
-        HTMLGenerator.gen_url(from_path, path)
-      end
-    end
-
-    # Create a list of HtmlMethod objects for each method
-    # in the corresponding context object. If the @options.show_all
-    # variable is set (corresponding to the <tt>--all</tt> option,
-    # we include all methods, otherwise just the public ones.
-
-    def collect_methods
-      list = @context.method_list
-      unless @options.show_all
-        list = list.find_all {|m| m.visibility == :public || m.visibility == :protected || m.force_documentation }
-      end
-      @methods = list.collect {|m| HtmlMethod.new(m, self, @options) }
-    end
-
-    # Build a summary list of all the methods in this context
-    def build_method_summary_list(path_prefix="")
-      collect_methods unless @methods
-      meths = @methods.sort
-      res = []
-      meths.each do |meth|
-	res << {
-          "name" => CGI.escapeHTML(meth.name),
-          "aref" => "#{path_prefix}\##{meth.aref}" 
-        }
-      end
-      res
-    end
-
-
-    # Build a list of aliases for which we couldn't find a
-    # corresponding method
-    def build_alias_summary_list(section)
-      values = []
-      @context.aliases.each do |al|
-        next unless al.section == section
-        res = {
-          'old_name' => al.old_name,
-          'new_name' => al.new_name,
-        }
-        if al.comment && !al.comment.empty?
-          res['desc'] = markup(al.comment, true)
-        end
-        values << res
-      end
-      values
-    end
-    
-    # Build a list of constants
-    def build_constants_summary_list(section)
-      values = []
-      @context.constants.each do |co|
-        next unless co.section == section
-        res = {
-          'name'  => co.name,
-          'value' => CGI.escapeHTML(co.value)
-        }
-        res['desc'] = markup(co.comment, true) if co.comment && !co.comment.empty?
-        values << res
-      end
-      values
-    end
-    
-    def build_requires_list(context)
-      potentially_referenced_list(context.requires) {|fn| [fn + ".rb"] }
-    end
-
-    def build_include_list(context)
-      potentially_referenced_list(context.includes)
-    end
-
-    # Build a list from an array of <i>Htmlxxx</i> items. Look up each
-    # in the AllReferences hash: if we find a corresponding entry,
-    # we generate a hyperlink to it, otherwise just output the name.
-    # However, some names potentially need massaging. For example,
-    # you may require a Ruby file without the .rb extension,
-    # but the file names we know about may have it. To deal with
-    # this, we pass in a block which performs the massaging,
-    # returning an array of alternative names to match
-
-    def potentially_referenced_list(array)
-      res = []
-      array.each do |i|
-        ref = AllReferences[i.name] 
-#         if !ref
-#           container = @context.parent
-#           while !ref && container
-#             name = container.name + "::" + i.name
-#             ref = AllReferences[name] 
-#             container = container.parent
-#           end
-#         end
-
-        ref = @context.find_symbol(i.name)
-        ref = ref.viewer if ref
-
-        if !ref && block_given?
-          possibles = yield(i.name)
-          while !ref and !possibles.empty?
-            ref = AllReferences[possibles.shift]
-          end
-        end
-        h_name = CGI.escapeHTML(i.name)
-        if ref and ref.document_self
-          path = url(ref.path)
-          res << { "name" => h_name, "aref" => path }
-        else
-          res << { "name" => h_name }
-        end
-      end
-      res
-    end
-
-    # Build an array of arrays of method details. The outer array has up
-    # to six entries, public, private, and protected for both class
-    # methods, the other for instance methods. The inner arrays contain
-    # a hash for each method
-
-    def build_method_detail_list(section)
-      outer = []
-
-      methods = @methods.sort
-      for singleton in [true, false]
-        for vis in [ :public, :protected, :private ] 
-          res = []
-          methods.each do |m|
-            if m.section == section and
-                m.document_self and 
-                m.visibility == vis and 
-                m.singleton == singleton
-              row = {}
-              if m.call_seq
-                row["callseq"] = m.call_seq.gsub(/->/, '→')
-              else
-                row["name"]        = CGI.escapeHTML(m.name)
-                row["params"]      = m.params
-              end
-              desc = m.description.strip
-              row["m_desc"]      = desc unless desc.empty?
-              row["aref"]        = m.aref
-              row["visibility"]  = m.visibility.to_s
-
-              alias_names = []
-              m.aliases.each do |other|
-                if other.viewer   # won't be if the alias is private
-                  alias_names << {
-                    'name' => other.name,
-                    'aref'  => other.viewer.as_href(path)
-                  } 
-                end
-              end
-              unless alias_names.empty?
-                row["aka"] = alias_names
-              end
-
-              if @options.inline_source
-                code = m.source_code
-                row["sourcecode"] = code if code
-              else
-                code = m.src_url
-                if code
-                  row["codeurl"] = code
-                  row["imgurl"]  = m.img_url
-                end
-              end
-              res << row
-            end
-          end
-          if res.size > 0 
-            outer << {
-              "type"    => vis.to_s.capitalize,
-              "category"    => singleton ? "Class" : "Instance",
-              "methods" => res
-            }
-          end
-        end
-      end
-      outer
-    end
-
-    # Build the structured list of classes and modules contained
-    # in this context. 
-
-    def build_class_list(level, from, section, infile=nil)
-      res = ""
-      prefix = "  ::" * level;
-
-      from.modules.sort.each do |mod|
-        next unless mod.section == section
-        next if infile && !mod.defined_in?(infile)
-        if mod.document_self
-          res << 
-            prefix <<
-            "Module " <<
-            href(url(mod.viewer.path), "link", mod.full_name) <<
-            "<br />\n" <<
-            build_class_list(level + 1, mod, section, infile)
-        end
-      end
-
-      from.classes.sort.each do |cls|
-        next unless cls.section == section
-        next if infile && !cls.defined_in?(infile)
-        if cls.document_self
-          res      <<
-            prefix << 
-            "Class " <<
-            href(url(cls.viewer.path), "link", cls.full_name) <<
-            "<br />\n" <<
-            build_class_list(level + 1, cls, section, infile)
-        end
-      end
-
-      res
-    end
-    
-    def url(target)
-      HTMLGenerator.gen_url(path, target)
-    end
-
-    def aref_to(target)
-      if @options.all_one_file
-        "#" + target
-      else
-        url(target)
-      end
-    end
-
-    def document_self
-      @context.document_self
-    end
-
-    def diagram_reference(diagram)
-      res = diagram.gsub(/((?:src|href)=")(.*?)"/) {
-        $1 + url($2) + '"'
-      }
-      res
-    end
-
-
-    # Find a symbol in ourselves or our parent
-    def find_symbol(symbol, method=nil)
-      res = @context.find_symbol(symbol, method)
-      if res
-        res = res.viewer
-      end
-      res
-    end
-
-    # create table of contents if we contain sections
-      
-    def add_table_of_sections
-      toc = []
-      @context.sections.each do |section|
-        if section.title
-          toc << {
-            'secname' => section.title,
-            'href'    => section.sequence
-          }
-        end
-      end
-      
-      @values['toc'] = toc unless toc.empty?
-    end
-
-
-  end
-
-  #####################################################################
-  #
-  # Wrap a ClassModule context
-
-  class HtmlClass < ContextUser
-
-    attr_reader :path
-
-    def initialize(context, html_file, prefix, options)
-      super(context, options)
-
-      @html_file = html_file
-      @is_module = context.is_module?
-      @values    = {}
-
-      context.viewer = self
-
-      if options.all_one_file
-        @path = context.full_name
-      else
-        @path = http_url(context.full_name, prefix)
-      end
-
-      collect_methods
-
-      AllReferences.add(name, self)
-    end
-
-    # return the relative file name to store this class in,
-    # which is also its url
-    def http_url(full_name, prefix)
-      path = full_name.dup
-      if path['<<']
-        path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
-      end
-      File.join(prefix, path.split("::")) + ".html"
-    end
-
-
-    def name
-      @context.full_name
-    end
-
-    def parent_name
-      @context.parent.full_name
-    end
-
-    def index_name
-      name
-    end
-
-    def write_on(f)
-      value_hash
-      template = TemplatePage.new(RDoc::Page::BODY,
-                                      RDoc::Page::CLASS_PAGE,
-                                      RDoc::Page::METHOD_LIST)
-      template.write_html_on(f, @values)
-    end
-
-    def value_hash
-      class_attribute_values
-      add_table_of_sections
-
-      @values["charset"] = @options.charset
-      @values["style_url"] = style_url(path, @options.css)
-
-      d = markup(@context.comment)
-      @values["description"] = d unless d.empty?
-
-      ml = build_method_summary_list
-      @values["methods"] = ml unless ml.empty?
-
-      il = build_include_list(@context)
-      @values["includes"] = il unless il.empty?
-
-      @values["sections"] = @context.sections.map do |section|
-
-        secdata = {
-          "sectitle" => section.title,
-          "secsequence" => section.sequence,
-          "seccomment" => markup(section.comment)
-        }
-
-        al = build_alias_summary_list(section)
-        secdata["aliases"] = al unless al.empty?
-        
-        co = build_constants_summary_list(section)
-        secdata["constants"] = co unless co.empty?
-        
-        al = build_attribute_list(section)
-        secdata["attributes"] = al unless al.empty?
-        
-        cl = build_class_list(0, @context, section)
-        secdata["classlist"] = cl unless cl.empty?
-        
-        mdl = build_method_detail_list(section)
-        secdata["method_list"] = mdl unless mdl.empty?
-
-        secdata
-      end
-
-      @values
-    end
-
-    def build_attribute_list(section)
-      atts = @context.attributes.sort
-      res = []
-      atts.each do |att|
-        next unless att.section == section
-        if att.visibility == :public || att.visibility == :protected || @options.show_all
-          entry = {
-            "name"   => CGI.escapeHTML(att.name), 
-            "rw"     => att.rw, 
-            "a_desc" => markup(att.comment, true)
-          }
-          unless att.visibility == :public || att.visibility == :protected
-            entry["rw"] << "-"
-          end
-          res << entry
-        end
-      end
-      res
-    end
-
-    def class_attribute_values
-      h_name = CGI.escapeHTML(name)
-
-      @values["classmod"]  = @is_module ? "Module" : "Class"
-      @values["title"]     = "#{@values['classmod']}: #{h_name}"
-
-      c = @context
-      c = c.parent while c and !c.diagram
-      if c && c.diagram
-        @values["diagram"] = diagram_reference(c.diagram)
-      end
-
-      @values["full_name"] = h_name
-
-      parent_class = @context.superclass
-
-      if parent_class
-	@values["parent"] = CGI.escapeHTML(parent_class)
-
-	if parent_name
-	  lookup = parent_name + "::" + parent_class
-	else
-	  lookup = parent_class
-	end
-
-	parent_url = AllReferences[lookup] || AllReferences[parent_class]
-
-	if parent_url and parent_url.document_self
-	  @values["par_url"] = aref_to(parent_url.path)
-	end
-      end
-
-      files = []
-      @context.in_files.each do |f|
-        res = {}
-        full_path = CGI.escapeHTML(f.file_absolute_name)
-
-        res["full_path"]     = full_path
-        res["full_path_url"] = aref_to(f.viewer.path) if f.document_self
-
-        if @options.webcvs
-          res["cvsurl"] = cvs_url( @options.webcvs, full_path )
-        end
-
-        files << res
-      end
-
-      @values['infiles'] = files
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-
-  end
-
-  #####################################################################
-  #
-  # Handles the mapping of a file's information to HTML. In reality,
-  # a file corresponds to a +TopLevel+ object, containing modules,
-  # classes, and top-level methods. In theory it _could_ contain
-  # attributes and aliases, but we ignore these for now.
-
-  class HtmlFile < ContextUser
-
-    attr_reader :path
-    attr_reader :name
-
-    def initialize(context, options, file_dir)
-      super(context, options)
-
-      @values = {}
-
-      if options.all_one_file
-        @path = filename_to_label
-      else
-        @path = http_url(file_dir)
-      end
-
-      @name = @context.file_relative_name
-
-      collect_methods
-      AllReferences.add(name, self)
-      context.viewer = self
-    end
-
-    def http_url(file_dir)
-      File.join(file_dir, @context.file_relative_name.tr('.', '_')) +
-        ".html"
-    end
-
-    def filename_to_label
-      @context.file_relative_name.gsub(/%|\/|\?|\#/) {|s| '%' + ("%x" % s[0]) }
-    end
-
-    def index_name
-      name
-    end
-
-    def parent_name
-      nil
-    end
-
-    def value_hash
-      file_attribute_values
-      add_table_of_sections
-
-      @values["charset"]   = @options.charset
-      @values["href"]      = path
-      @values["style_url"] = style_url(path, @options.css)
-
-      if @context.comment
-        d = markup(@context.comment)
-        @values["description"] = d if d.size > 0
-      end
-
-      ml = build_method_summary_list
-      @values["methods"] = ml unless ml.empty?
-
-      il = build_include_list(@context)
-      @values["includes"] = il unless il.empty?
-
-      rl = build_requires_list(@context)
-      @values["requires"] = rl unless rl.empty?
-
-      if @options.promiscuous
-        file_context = nil
-      else
-        file_context = @context
-      end
-
-
-      @values["sections"] = @context.sections.map do |section|
-
-        secdata = {
-          "sectitle" => section.title,
-          "secsequence" => section.sequence,
-          "seccomment" => markup(section.comment)
-        }
-
-        cl = build_class_list(0, @context, section, file_context)
-        @values["classlist"] = cl unless cl.empty?
-
-        mdl = build_method_detail_list(section)
-        secdata["method_list"] = mdl unless mdl.empty?
-
-        al = build_alias_summary_list(section)
-        secdata["aliases"] = al unless al.empty?
-        
-        co = build_constants_summary_list(section)
-        @values["constants"] = co unless co.empty?
-
-        secdata
-      end
-      
-      @values
-    end
-    
-    def write_on(f)
-      value_hash
-      template = TemplatePage.new(RDoc::Page::BODY,
-                                  RDoc::Page::FILE_PAGE,
-                                  RDoc::Page::METHOD_LIST)
-      template.write_html_on(f, @values)
-    end
-
-    def file_attribute_values
-      full_path = @context.file_absolute_name
-      short_name = File.basename(full_path)
-      
-      @values["title"] = CGI.escapeHTML("File: #{short_name}")
-
-      if @context.diagram
-        @values["diagram"] = diagram_reference(@context.diagram)
-      end
-
-      @values["short_name"]   = CGI.escapeHTML(short_name)
-      @values["full_path"]    = CGI.escapeHTML(full_path)
-      @values["dtm_modified"] = @context.file_stat.mtime.to_s
-
-      if @options.webcvs
-        @values["cvsurl"] = cvs_url( @options.webcvs, @values["full_path"] )
-      end
-    end
-
-    def <=>(other)
-      self.name <=> other.name
-    end
-  end
-
-  #####################################################################
-
-  class HtmlMethod
-    include MarkUp
-
-    attr_reader :context
-    attr_reader :src_url
-    attr_reader :img_url
-    attr_reader :source_code
-
-    @@seq = "M000000"
-
-    @@all_methods = []
-
-    def HtmlMethod::reset
-      @@all_methods = []
-    end
-
-    def initialize(context, html_class, options)
-      @context    = context
-      @html_class = html_class
-      @options    = options
-      @@seq       = @@seq.succ
-      @seq        = @@seq
-      @@all_methods << self
-
-      context.viewer = self
-
-      if (ts = @context.token_stream)
-        @source_code = markup_code(ts)
-        unless @options.inline_source
-          @src_url = create_source_code_file(@source_code)
-          @img_url = HTMLGenerator.gen_url(path, 'source.png')
-        end
-      end
-
-      AllReferences.add(name, self)
-    end
-    
-    # return a reference to outselves to be used as an href=
-    # the form depends on whether we're all in one file
-    # or in multiple files
-
-    def as_href(from_path)
-      if @options.all_one_file
-        "#" + path
-      else
-        HTMLGenerator.gen_url(from_path, path)
-      end
-    end
-
-    def name
-      @context.name
-    end
-
-    def section
-      @context.section
-    end
-
-    def index_name
-      "#{@context.name} (#{@html_class.name})"
-    end
-
-    def parent_name
-      if @context.parent.parent
-        @context.parent.parent.full_name
-      else
-        nil
-      end
-    end
-
-    def aref
-      @seq
-    end
-
-    def path
-      if @options.all_one_file
-	aref
-      else
-	@html_class.path + "#" + aref
-      end
-    end
-
-    def description
-      markup(@context.comment)
-    end
-
-    def visibility
-      @context.visibility
-    end
-
-    def singleton
-      @context.singleton
-    end
-
-    def call_seq
-      cs = @context.call_seq
-      if cs
-        cs.gsub(/\n/, "<br />\n")
-      else
-        nil
-      end
-    end
-
-    def params
-      # params coming from a call-seq in 'C' will start with the
-      # method name
-      p = @context.params
-      if p !~ /^\w/
-        p = @context.params.gsub(/\s*\#.*/, '')
-        p = p.tr("\n", " ").squeeze(" ")
-        p = "(" + p + ")" unless p[0] == ?(
-        
-        if (block = @context.block_params)
-         # If this method has explicit block parameters, remove any
-         # explicit &block
-
-         p.sub!(/,?\s*&\w+/, '')
-
-          block.gsub!(/\s*\#.*/, '')
-          block = block.tr("\n", " ").squeeze(" ")
-          if block[0] == ?(
-            block.sub!(/^\(/, '').sub!(/\)/, '')
-          end
-          p << " {|#{block.strip}| ...}"
-        end
-      end
-      CGI.escapeHTML(p)
-    end
-    
-    def create_source_code_file(code_body)
-      meth_path = @html_class.path.sub(/\.html$/, '.src')
-      File.makedirs(meth_path)
-      file_path = File.join(meth_path, @seq) + ".html"
-
-      template = TemplatePage.new(RDoc::Page::SRC_PAGE)
-      File.open(file_path, "w") do |f|
-        values = {
-          'title'     => CGI.escapeHTML(index_name),
-          'code'      => code_body,
-          'style_url' => style_url(file_path, @options.css),
-          'charset'   => @options.charset
-        }
-        template.write_html_on(f, values)
-      end
-      HTMLGenerator.gen_url(path, file_path)
-    end
-
-    def HtmlMethod.all_methods
-      @@all_methods
-    end
-
-    def <=>(other)
-      @context <=> other.context
-    end
-
-    ##
-    # Given a sequence of source tokens, mark up the source code
-    # to make it look purty.
-
-
-    def markup_code(tokens)
-      src = ""
-      tokens.each do |t|
-        next unless t
-        #    p t.class
-#        style = STYLE_MAP[t.class]
-        style = case t
-                when RubyToken::TkCONSTANT then "ruby-constant"
-                when RubyToken::TkKW       then "ruby-keyword kw"
-                when RubyToken::TkIVAR     then "ruby-ivar"
-                when RubyToken::TkOp       then "ruby-operator"
-                when RubyToken::TkId       then "ruby-identifier"
-                when RubyToken::TkNode     then "ruby-node"
-                when RubyToken::TkCOMMENT  then "ruby-comment cmt"
-                when RubyToken::TkREGEXP   then "ruby-regexp re"
-                when RubyToken::TkSTRING   then "ruby-value str"
-                when RubyToken::TkVal      then "ruby-value"
-                else
-                    nil
-                end
-
-        text = CGI.escapeHTML(t.text)
-
-        if style
-          src << "<span class=\"#{style}\">#{text}</span>"
-        else
-          src << text
-        end
-      end
-
-      add_line_numbers(src) if Options.instance.include_line_numbers
-      src
-    end
-
-    # we rely on the fact that the first line of a source code
-    # listing has 
-    #    # File xxxxx, line dddd
-
-    def add_line_numbers(src)
-      if src =~ /\A.*, line (\d+)/
-        first = $1.to_i - 1
-        last  = first + src.count("\n")
-        size = last.to_s.length
-        real_fmt = "%#{size}d: "
-        fmt = " " * (size+2)
-        src.gsub!(/^/) do
-          res = sprintf(fmt, first) 
-          first += 1
-          fmt = real_fmt
-          res
-        end
-      end
-    end
-
-    def document_self
-      @context.document_self
-    end
-
-    def aliases
-      @context.aliases
-    end
-
-    def find_symbol(symbol, method=nil)
-      res = @context.parent.find_symbol(symbol, method)
-      if res
-        res = res.viewer
-      end
-      res
-    end
-  end
-
-  #####################################################################
-
-  class HTMLGenerator
-
-    include MarkUp
-
-    ##
-    # convert a target url to one that is relative to a given
-    # path
-    
-    def HTMLGenerator.gen_url(path, target)
-      from          = File.dirname(path)
-      to, to_file   = File.split(target)
-      
-      from = from.split("/")
-      to   = to.split("/")
-      
-      while from.size > 0 and to.size > 0 and from[0] == to[0]
-        from.shift
-        to.shift
-      end
-      
-      from.fill("..")
-      from.concat(to)
-      from << to_file
-      File.join(*from)
-    end
-
-    # Generators may need to return specific subclasses depending
-    # on the options they are passed. Because of this
-    # we create them using a factory
-
-    def HTMLGenerator.for(options)
-      AllReferences::reset
-      HtmlMethod::reset
-
-      if options.all_one_file
-        HTMLGeneratorInOne.new(options)
-      else
-        HTMLGenerator.new(options)
-      end
-    end
-
-    class <<self
-      protected :new
-    end
-
-    # Set up a new HTML generator. Basically all we do here is load
-    # up the correct output temlate
-
-    def initialize(options) #:not-new:
-      @options    = options
-      load_html_template
-    end
-
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(toplevels)
-      @toplevels  = toplevels
-      @files      = []
-      @classes    = []
-
-      write_style_sheet
-      gen_sub_directories()
-      build_indices
-      generate_html
-    end
-
-    private
-
-    ##
-    # Load up the HTML template specified in the options.
-    # If the template name contains a slash, use it literally
-    #
-    def load_html_template
-      template = @options.template
-      unless template =~ %r{/|\\}
-        template = File.join("rdoc/generators/template",
-                             @options.generator.key, template)
-      end
-      require template
-      extend RDoc::Page
-    rescue LoadError
-      $stderr.puts "Could not find HTML template '#{template}'"
-      exit 99
-    end
-
-    ##
-    # Write out the style sheet used by the main frames
-    #
-    
-    def write_style_sheet
-      template = TemplatePage.new(RDoc::Page::STYLE)
-      unless @options.css
-        File.open(CSS_NAME, "w") do |f|
-          values = { "fonts" => RDoc::Page::FONTS }
-          template.write_html_on(f, values)
-        end
-      end
-    end
-
-    ##
-    # See the comments at the top for a description of the
-    # directory structure
-
-    def gen_sub_directories
-      File.makedirs(FILE_DIR, CLASS_DIR)
-    rescue 
-      $stderr.puts $!.message
-      exit 1
-    end
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @toplevels.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML
-    #
-    def generate_html
-      # the individual descriptions for files and classes
-      gen_into(@files)
-      gen_into(@classes)
-      # and the index files
-      gen_file_index
-      gen_class_index
-      gen_method_index
-      gen_main_index
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-    end
-
-    def gen_into(list)
-      list.each do |item|
-        if item.document_self
-          op_file = item.path
-          File.makedirs(File.dirname(op_file))
-          File.open(op_file, "w") { |file| item.write_on(file) }
-        end
-      end
-
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files', 
-                   RDoc::Page::FILE_INDEX, 
-                   "fr_file_index.html")
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes',
-                   RDoc::Page::CLASS_INDEX,
-                   "fr_class_index.html")
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods', 
-                   RDoc::Page::METHOD_INDEX,
-                   "fr_method_index.html")
-    end
-
-    
-    def gen_an_index(collection, title, template, filename)
-      template = TemplatePage.new(RDoc::Page::FR_INDEX_BODY, template)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      values = {
-        "entries"    => res,
-        'list_title' => CGI.escapeHTML(title),
-        'index_url'  => main_url,
-        'charset'    => @options.charset,
-        'style_url'  => style_url('', @options.css),
-      }
-
-      File.open(filename, "w") do |f|
-        template.write_html_on(f, values)
-      end
-    end
-
-    # The main index page is mostly a template frameset, but includes
-    # the initial page. If the <tt>--main</tt> option was given,
-    # we use this as our main page, otherwise we use the
-    # first file specified on the command line.
-
-    def gen_main_index
-      template = TemplatePage.new(RDoc::Page::INDEX)
-      File.open("index.html", "w") do |f|
-        values = {
-          "initial_page" => main_url,
-          'title'        => CGI.escapeHTML(@options.title),
-          'charset'      => @options.charset
-        }
-        if @options.inline_source
-          values['inline_source'] = true
-        end
-        template.write_html_on(f, values)
-      end
-    end
-
-    # return the url of the main page
-    def main_url
-      main_page = @options.main_page
-      ref = nil
-      if main_page
-        ref = AllReferences[main_page]
-        if ref
-          ref = ref.path
-        else
-          $stderr.puts "Could not find main page #{main_page}"
-        end
-      end
-
-      unless ref
-        for file in @files
-          if file.document_self
-            ref = file.path 
-            break
-          end
-        end
-      end
-
-      unless ref
-        $stderr.puts "Couldn't find anything to document"
-        $stderr.puts "Perhaps you've used :stopdoc: in all classes"
-        exit(1)
-      end
-
-      ref
-    end
-
-
-  end
-
-
-  ######################################################################
-
-
-  class HTMLGeneratorInOne < HTMLGenerator
-
-    def initialize(*args)
-      super
-    end
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(info)
-      @toplevels  = info
-      @files      = []
-      @classes    = []
-      @hyperlinks = {}
-
-      build_indices
-      generate_xml
-    end
-
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @toplevels.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML. For the one-file case, we generate
-    # all the information in to one big hash
-    #
-    def generate_xml
-      values = { 
-        'charset' => @options.charset,
-        'files'   => gen_into(@files),
-        'classes' => gen_into(@classes),
-        'title'        => CGI.escapeHTML(@options.title),
-      }
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-
-      template = TemplatePage.new(RDoc::Page::ONE_PAGE)
-
-      if @options.op_name
-        opfile = File.open(@options.op_name, "w")
-      else
-        opfile = $stdout
-      end
-      template.write_html_on(opfile, values)
-    end
-
-    def gen_into(list)
-      res = []
-      list.each do |item|
-        res << item.value_hash
-      end
-      res
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files')
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes')
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods')
-    end
-
-    
-    def gen_an_index(collection, title)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      return {
-        "entries" => res,
-        'list_title' => title,
-        'index_url'  => main_url,
-      }
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/ri_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/ri_generator.rb
deleted file mode 100644
index c7d0bbd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/ri_generator.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-# We're responsible for generating all the HTML files
-# from the object tree defined in code_objects.rb. We
-# generate:
-#
-# [files]   an html file for each input file given. These
-#           input files appear as objects of class
-#           TopLevel
-#
-# [classes] an html file for each class or module encountered.
-#           These classes are not grouped by file: if a file
-#           contains four classes, we'll generate an html
-#           file for the file itself, and four html files 
-#           for the individual classes. 
-#
-# [indices] we generate three indices for files, classes,
-#           and methods. These are displayed in a browser
-#           like window with three index panes across the
-#           top and the selected description below
-#
-# Method descriptions appear in whatever entity (file, class,
-# or module) that contains them.
-#
-# We generate files in a structure below a specified subdirectory,
-# normally +doc+.
-#
-#  opdir
-#     |
-#     |___ files
-#     |       |__  per file summaries
-#     |
-#     |___ classes
-#             |__ per class/module descriptions
-#
-# HTML is generated using the Template class.
-#
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/template'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_flow'
-require 'cgi'
-
-require 'rdoc/ri/ri_cache'
-require 'rdoc/ri/ri_reader'
-require 'rdoc/ri/ri_writer'
-require 'rdoc/ri/ri_descriptions'
-
-module Generators
-
-
-  class RIGenerator
-
-    # Generators may need to return specific subclasses depending
-    # on the options they are passed. Because of this
-    # we create them using a factory
-
-    def RIGenerator.for(options)
-      new(options)
-    end
-
-    class <<self
-      protected :new
-    end
-
-    # Set up a new HTML generator. Basically all we do here is load
-    # up the correct output temlate
-
-    def initialize(options) #:not-new:
-      @options   = options
-      @ri_writer = RI::RiWriter.new(".")
-      @markup    = SM::SimpleMarkup.new
-      @to_flow   = SM::ToFlow.new
-    end
-
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(toplevels)
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        process_class(cls)
-      end
-    end
-
-    def process_class(from_class)
-      generate_class_info(from_class)
-
-      # now recure into this classes constituent classess
-      from_class.each_classmodule do |mod|
-        process_class(mod)
-      end
-    end
-
-    def generate_class_info(cls)
-      if cls === RDoc::NormalModule
-        cls_desc = RI::ModuleDescription.new
-      else
-        cls_desc = RI::ClassDescription.new
-        cls_desc.superclass  = cls.superclass
-      end
-      cls_desc.name        = cls.name
-      cls_desc.full_name   = cls.full_name
-      cls_desc.comment     = markup(cls.comment)
-
-      cls_desc.attributes =cls.attributes.sort.map do |a|
-        RI::Attribute.new(a.name, a.rw, markup(a.comment))
-      end
-
-      cls_desc.constants = cls.constants.map do |c|
-        RI::Constant.new(c.name, c.value, markup(c.comment))
-      end
-
-      cls_desc.includes = cls.includes.map do |i|
-        RI::IncludedModule.new(i.name)
-      end
-
-      class_methods, instance_methods = method_list(cls)
-
-      cls_desc.class_methods = class_methods.map do |m|
-        RI::MethodSummary.new(m.name)
-      end
-      cls_desc.instance_methods = instance_methods.map do |m|
-        RI::MethodSummary.new(m.name)
-      end
-
-      update_or_replace(cls_desc)
-
-      class_methods.each do |m|
-        generate_method_info(cls_desc, m)
-      end
-
-      instance_methods.each do |m|
-        generate_method_info(cls_desc, m)
-      end
-    end
-
-
-    def generate_method_info(cls_desc, method)
-      meth_desc = RI::MethodDescription.new
-      meth_desc.name = method.name
-      meth_desc.full_name = cls_desc.full_name
-      if method.singleton
-        meth_desc.full_name += "::"
-      else
-        meth_desc.full_name += "#"
-      end
-      meth_desc.full_name << method.name
-
-      meth_desc.comment = markup(method.comment)
-      meth_desc.params = params_of(method)
-      meth_desc.visibility = method.visibility.to_s
-      meth_desc.is_singleton = method.singleton
-      meth_desc.block_params = method.block_params
-
-      meth_desc.aliases = method.aliases.map do |a|
-        RI::AliasName.new(a.name)
-      end
-
-      @ri_writer.add_method(cls_desc, meth_desc)
-    end
-
-    private
-
-    # return a list of class and instance methods that we'll be
-    # documenting
-
-    def method_list(cls)
-      list = cls.method_list
-      unless @options.show_all
-        list = list.find_all do |m|
-          m.visibility == :public || m.visibility == :protected || m.force_documentation
-        end
-      end
-
-      c = []
-      i = []
-      list.sort.each do |m|
-        if m.singleton
-          c << m
-        else
-          i << m
-        end
-      end
-      return c,i
-    end
-    
-    def params_of(method)
-      if method.call_seq
-        method.call_seq
-      else
-        params = method.params || ""
-        
-        p = params.gsub(/\s*\#.*/, '')
-        p = p.tr("\n", " ").squeeze(" ")
-        p = "(" + p + ")" unless p[0] == ?(
-        
-        if (block = method.block_params)
-          block.gsub!(/\s*\#.*/, '')
-          block = block.tr("\n", " ").squeeze(" ")
-          if block[0] == ?(
-            block.sub!(/^\(/, '').sub!(/\)/, '')
-          end
-          p << " {|#{block.strip}| ...}"
-        end
-        p
-      end
-    end
-
-    def markup(comment)
-      return nil if !comment || comment.empty?
-
-      # Convert leading comment markers to spaces, but only
-      # if all non-blank lines have them
-      
-      if comment =~ /^(?>\s*)[^\#]/
-        content = comment
-      else
-        content = comment.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
-      end
-      @markup.convert(content, @to_flow)
-    end
-
-
-    # By default we replace existing classes with the
-    # same name. If the --merge option was given, we instead
-    # merge this definition into an existing class. We add
-    # our methods, aliases, etc to that class, but do not
-    # change the class's description.
-
-    def update_or_replace(cls_desc)
-      old_cls = nil
-
-      if @options.merge
-        rdr = RI::RiReader.new(RI::RiCache.new(@options.op_dir))
-
-        namespace = rdr.top_level_namespace
-        namespace = rdr.lookup_namespace_in(cls_desc.name, namespace)
-        if namespace.empty?
-          $stderr.puts "You asked me to merge this source into existing "
-          $stderr.puts "documentation. This file references a class or "
-          $stderr.puts "module called #{cls_desc.name} which I don't"
-          $stderr.puts "have existing documentation for."
-          $stderr.puts 
-          $stderr.puts "Perhaps you need to generate its documentation first"
-          exit 1
-        else
-          old_cls = namespace[0]
-        end
-      end
-
-      if old_cls.nil?
-        # no merge: simply overwrite
-        @ri_writer.remove_class(cls_desc)
-        @ri_writer.add_class(cls_desc)
-      else
-        # existing class: merge in
-        old_desc = rdr.get_class(old_cls)
-
-        old_desc.merge_in(cls_desc)
-        @ri_writer.add_class(old_desc)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/chm/chm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/chm/chm.rb
deleted file mode 100644
index 4a89c26..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/chm/chm.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-module RDoc
-module Page
-
-require "rdoc/generators/template/html/html"
-
-# This is a nasty little hack, but hhc doesn't support the <?xml
-# tag, so...
-
-BODY.sub!(/<\?xml.*\?>/, '')
-SRC_PAGE.sub!(/<\?xml.*\?>/, '')
-
-HPP_FILE = %{
-[OPTIONS]
-Auto Index = Yes
-Compatibility=1.1 or later
-Compiled file=%opname%.chm
-Contents file=contents.hhc
-Full-text search=Yes
-Index file=index.hhk
-Language=0x409 English(United States)
-Title=%title%
-
-[FILES]
-START:all_html_files
-%html_file_name%
-END:all_html_files
-}
-
-CONTENTS = %{
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
-	<param name="Foreground" value="0x80">
-	<param name="Window Styles" value="0x800025">
-	<param name="ImageType" value="Folder">
-</OBJECT>
-<UL>
-START:contents
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%c_name%">
-		<param name="Local" value="%ref%">
-		</OBJECT>
-IF:methods
-<ul>
-START:methods
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%name%">
-		<param name="Local" value="%aref%">
-		</OBJECT>
-END:methods
-</ul>
-ENDIF:methods
-        </LI>
-END:contents
-</UL>
-</BODY></HTML>
-}
-
-
-CHM_INDEX  = %{
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
-	<param name="Foreground" value="0x80">
-	<param name="Window Styles" value="0x800025">
-	<param name="ImageType" value="Folder">
-</OBJECT>
-<UL>
-START:index
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="%name%">
-		<param name="Local" value="%aref%">
-		</OBJECT>
-END:index
-</UL>
-</BODY></HTML>
-}
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/hefss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/hefss.rb
deleted file mode 100644
index e68ca85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/hefss.rb
+++ /dev/null
@@ -1,418 +0,0 @@
-module RDoc
-module Page
-
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,p { font-family: Verdana, Arial, Helvetica, sans-serif; 
-       color: #000040; background: #BBBBBB;
-}
-
-td { font-family: Verdana, Arial, Helvetica, sans-serif; 
-       color: #000040;
-}
-
-.attr-rw { font-size: small; color: #444488 }
-
-.title-row {color:      #eeeeff;
-	    background: #BBBBDD;
-}
-
-.big-title-font { color: white;
-                  font-family: Verdana, Arial, Helvetica, sans-serif;
-                  font-size: large; 
-                  height: 50px}
-
-.small-title-font { color: purple;
-                    font-family: Verdana, Arial, Helvetica, sans-serif;
-                    font-size: small; }
-
-.aqua { color: purple }
-
-.method-name, attr-name {
-      font-family: monospace; font-weight: bold;
-}
-
-.tablesubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: large;
-   color: purple;
-   background: #BBBBCC;
-}
-
-.tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: medium;
-   color: white;
-   background: #BBBBCC;
-}
-
-.name-list {
-  font-family: monospace;
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.description {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.methodtitle {
-  font-size: medium;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #0000AA;
-}
-
-.column-title {
-  font-size: medium;
-  font-weight: bold;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #3333CC;
-  }
-
-.variable-name {
-  font-family: monospace;
-  font-size: medium;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-  color: #0000AA;
-}
-
-.row-name {
-  font-size: medium;
-  font-weight: medium;
-  font-family: monospace;
-  text_decoration: none;
-  padding: 3px 3px 3px 20px;
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-}
-
-
-############################################################################
-
-
-BODY = %{
-<html><head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    parent.frames.source.location = url
-  }
-  //-->
-  </script>
-</head>
-<body bgcolor="#BBBBBB">
-
-!INCLUDE!  <!-- banner header -->
-
-IF:diagram
-<table width="100%"><tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table><br />
-<div class="name-list">
-START:requires
-HREF:aref:name:
-END:requires
-ENDIF:requires
-</div>
-
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Subroutines and Functions</td></tr>
-</table><br />
-<div class="name-list">
-START:methods
-HREF:aref:name:,
-END:methods
-</div>
-ENDIF:methods
-
-IF:attributes
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Arguments</td></tr>
-</table><br />
-<table cellspacing="5">
-START:attributes
-     <tr valign="top">
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td class="attr-name">%name%</td>
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Modules</td></tr>
-</table><br />
-%classlist%<br />
-ENDIF:classlist
-
-  !INCLUDE!  <!-- method descriptions -->
-
-</body>
-</html>
-}
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table width="100%">
- <tr class="title-row">
- <td><table width="100%"><tr>
-   <td class="big-title-font" colspan="2"><font size="-3"><b>File</b><br /></font>%short_name%</td>
-   <td align="right"><table cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table><br />
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <font size="-3"><b>%classmod%</b><br /></font>%full_name%
- </td>
- <td align="right">
-   <table cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-HREF:full_path_url:full_path:
-IF:cvsurl
- (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="cyan">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table><br />
-}
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<div class="tablesubsubtitle">Uses</div><br />
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%">
-<b>%name%</b>%params% 
-IF:codeurl
-<a href="%codeurl%" target="source" class="srclink">src</a>
-ENDIF:codeurl
-</a></td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<html>
-<head><title>%title%</title>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-  .kw { color: #3333FF; font-weight: bold }
-  .cmt { color: green; font-style: italic }
-  .str { color: #662222; font-style: italic }
-  .re  { color: #662222; }
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-</style>
-</head>
-<body bgcolor="#BBBBBB">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-<!--
-  body {
-background-color: #bbbbbb;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #bbbbcc;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-  
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner">%list_title%</div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-</head>
-
-<frameset cols="20%,*">
-    <frameset rows="15%,35%,50%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Modules">
-        <frame src="fr_method_index.html" name="Subroutines and Functions">
-    </frameset>
-    <frameset rows="80%,20%">
-      <frame  src="%initial_page%" name="docwin">
-      <frame  src="blank.html" name="source">
-    </frameset>
-    <noframes>
-          <body bgcolor="#BBBBBB">
-            Click <a href="html/index.html">here</a> for a non-frames
-            version of this page.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-# and a blank page to use as a target
-BLANK = %{
-<html><body bgcolor="#BBBBBB"></body></html>
-}
-
-def write_extra_pages
-  template = TemplatePage.new(BLANK)
-  File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
-end
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/html.rb
deleted file mode 100644
index 7f9e599..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/html.rb
+++ /dev/null
@@ -1,711 +0,0 @@
-#
-# = CSS2 RDoc HTML template
-#
-# This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a
-# bit more of the appearance of the output to cascading stylesheets than the
-# default. It was designed for clean inline code display, and uses DHTMl to
-# toggle the visbility of each method's source with each click on the '[source]'
-# link.
-#
-# == Authors
-#
-# * Michael Granger <ged at FaerieMUD.org>
-#
-# Copyright (c) 2002, 2003 The FaerieMUD Consortium. Some rights reserved.
-#
-# This work is licensed under the Creative Commons Attribution License. To view
-# a copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or
-# send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
-# 94305, USA.
-#
-
-module RDoc
-  module Page
-
-    FONTS = "Verdana,Arial,Helvetica,sans-serif"
-
-STYLE = %{
-body {
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size:   90%;
-    margin: 0;
-    margin-left: 40px;
-    padding: 0;
-    background: white;
-}
-
-h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
-h1 { font-size: 150%; }
-h2,h3,h4 { margin-top: 1em; }
-
-a { background: #eef; color: #039; text-decoration: none; }
-a:hover { background: #039; color: #eef; }
-
-/* Override the base stylesheet's Anchor inside a table cell */
-td > a {
-  background: transparent;
-  color: #039;
-  text-decoration: none;
-}
-
-/* and inside a section title */
-.section-title > a {
-  background: transparent;
-  color: #eee;
-  text-decoration: none;
-}
-
-/* === Structural elements =================================== */
-
-div#index {
-    margin: 0;
-    margin-left: -40px;
-    padding: 0;
-    font-size: 90%;
-}
-
-
-div#index a {
-    margin-left: 0.7em;
-}
-
-div#index .section-bar {
-   margin-left: 0px;
-   padding-left: 0.7em;
-   background: #ccc;
-   font-size: small;
-}
-
-
-div#classHeader, div#fileHeader {
-    width: auto;
-    color: white;
-    padding: 0.5em 1.5em 0.5em 1.5em;
-    margin: 0;
-    margin-left: -40px;
-    border-bottom: 3px solid #006;
-}
-
-div#classHeader a, div#fileHeader a {
-    background: inherit;
-    color: white;
-}
-
-div#classHeader td, div#fileHeader td {
-    background: inherit;
-    color: white;
-}
-
-
-div#fileHeader {
-    background: #057;
-}
-
-div#classHeader {
-    background: #048;
-}
-
-
-.class-name-in-header {
-  font-size:  180%;
-  font-weight: bold;
-}
-
-
-div#bodyContent {
-    padding: 0 1.5em 0 1.5em;
-}
-
-div#description {
-    padding: 0.5em 1.5em;
-    background: #efefef;
-    border: 1px dotted #999;
-}
-
-div#description h1,h2,h3,h4,h5,h6 {
-    color: #125;;
-    background: transparent;
-}
-
-div#validator-badges {
-    text-align: center;
-}
-div#validator-badges img { border: 0; }
-
-div#copyright {
-    color: #333;
-    background: #efefef;
-    font: 0.75em sans-serif;
-    margin-top: 5em;
-    margin-bottom: 0;
-    padding: 0.5em 2em;
-}
-
-
-/* === Classes =================================== */
-
-table.header-table {
-    color: white;
-    font-size: small;
-}
-
-.type-note {
-    font-size: small;
-    color: #DEDEDE;
-}
-
-.xxsection-bar {
-    background: #eee;
-    color: #333;
-    padding: 3px;
-}
-
-.section-bar {
-   color: #333;
-   border-bottom: 1px solid #999;
-    margin-left: -20px;
-}
-
-
-.section-title {
-    background: #79a;
-    color: #eee;
-    padding: 3px;
-    margin-top: 2em;
-    margin-left: -30px;
-    border: 1px solid #999;
-}
-
-.top-aligned-row {  vertical-align: top }
-.bottom-aligned-row { vertical-align: bottom }
-
-/* --- Context section classes ----------------------- */
-
-.context-row { }
-.context-item-name { font-family: monospace; font-weight: bold; color: black; }
-.context-item-value { font-size: small; color: #448; }
-.context-item-desc { color: #333; padding-left: 2em; }
-
-/* --- Method classes -------------------------- */
-.method-detail {
-    background: #efefef;
-    padding: 0;
-    margin-top: 0.5em;
-    margin-bottom: 1em;
-    border: 1px dotted #ccc;
-}
-.method-heading {
-  color: black;
-  background: #ccc;
-  border-bottom: 1px solid #666;
-  padding: 0.2em 0.5em 0 0.5em;
-}
-.method-signature { color: black; background: inherit; }
-.method-name { font-weight: bold; }
-.method-args { font-style: italic; }
-.method-description { padding: 0 0.5em 0 0.5em; }
-
-/* --- Source code sections -------------------- */
-
-a.source-toggle { font-size: 90%; }
-div.method-source-code {
-    background: #262626;
-    color: #ffdead;
-    margin: 1em;
-    padding: 0.5em;
-    border: 1px dashed #999;
-    overflow: hidden;
-}
-
-div.method-source-code pre { color: #ffdead; overflow: hidden; }
-
-/* --- Ruby keyword styles --------------------- */
-
-.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
-
-.ruby-constant  { color: #7fffd4; background: transparent; }
-.ruby-keyword { color: #00ffff; background: transparent; }
-.ruby-ivar    { color: #eedd82; background: transparent; }
-.ruby-operator  { color: #00ffee; background: transparent; }
-.ruby-identifier { color: #ffdead; background: transparent; }
-.ruby-node    { color: #ffa07a; background: transparent; }
-.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
-.ruby-regexp  { color: #ffa07a; background: transparent; }
-.ruby-value   { color: #7fffd4; background: transparent; }
-}
-
-
-#####################################################################
-### H E A D E R   T E M P L A T E  
-#####################################################################
-
-XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
-<!DOCTYPE html 
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-}
-
-HEADER = XHTML_PREAMBLE + %{
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <meta http-equiv="Content-Script-Type" content="text/javascript" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript">
-  // <![CDATA[
-
-  function popupCode( url ) {
-    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
-  }
-
-  function toggleCode( id ) {
-    if ( document.getElementById )
-      elem = document.getElementById( id );
-    else if ( document.all )
-      elem = eval( "document.all." + id );
-    else
-      return false;
-
-    elemStyle = elem.style;
-    
-    if ( elemStyle.display != "block" ) {
-      elemStyle.display = "block"
-    } else {
-      elemStyle.display = "none"
-    }
-
-    return true;
-  }
-  
-  // Make codeblocks hidden by default
-  document.writeln( "<style type=\\"text/css\\">div.method-source-code { display: none }</style>" )
-  
-  // ]]>
-  </script>
-
-</head>
-<body>
-}
-
-
-#####################################################################
-### C O N T E X T   C O N T E N T   T E M P L A T E
-#####################################################################
-
-CONTEXT_CONTENT = %{
-}
-
-
-#####################################################################
-### F O O T E R   T E M P L A T E
-#####################################################################
-FOOTER = %{
-<div id="validator-badges">
-  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
-</div>
-
-</body>
-</html>
-}
-
-
-#####################################################################
-### F I L E   P A G E   H E A D E R   T E M P L A T E
-#####################################################################
-
-FILE_PAGE = %{
-  <div id="fileHeader">
-    <h1>%short_name%</h1>
-    <table class="header-table">
-    <tr class="top-aligned-row">
-      <td><strong>Path:</strong></td>
-      <td>%full_path%
-IF:cvsurl
-         (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-      </td>
-    </tr>
-    <tr class="top-aligned-row">
-      <td><strong>Last Update:</strong></td>
-      <td>%dtm_modified%</td>
-    </tr>
-    </table>
-  </div>
-}
-
-
-#####################################################################
-### C L A S S   P A G E   H E A D E R   T E M P L A T E
-#####################################################################
-
-CLASS_PAGE = %{
-    <div id="classHeader">
-        <table class="header-table">
-        <tr class="top-aligned-row">
-          <td><strong>%classmod%</strong></td>
-          <td class="class-name-in-header">%full_name%</td>
-        </tr>
-        <tr class="top-aligned-row">
-            <td><strong>In:</strong></td>
-            <td>
-START:infiles
-IF:full_path_url
-                <a href="%full_path_url%">
-ENDIF:full_path_url
-                %full_path%
-IF:full_path_url
-                </a>
-ENDIF:full_path_url
-IF:cvsurl
-         (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-        <br />
-END:infiles
-            </td>
-        </tr>
-
-IF:parent
-        <tr class="top-aligned-row">
-            <td><strong>Parent:</strong></td>
-            <td>
-IF:par_url
-                <a href="%par_url%">
-ENDIF:par_url
-                %parent%
-IF:par_url
-               </a>
-ENDIF:par_url
-            </td>
-        </tr>
-ENDIF:parent
-        </table>
-    </div>
-}
-
-
-#####################################################################
-### M E T H O D   L I S T   T E M P L A T E
-#####################################################################
-
-METHOD_LIST = %{
-
-  <div id="contextContent">
-IF:diagram
-    <div id="diagram">
-      %diagram%
-    </div>
-ENDIF:diagram
-
-IF:description
-    <div id="description">
-      %description%
-    </div>
-ENDIF:description
-
-IF:requires
-    <div id="requires-list">
-      <h3 class="section-bar">Required files</h3>
-
-      <div class="name-list">
-START:requires
-      HREF:aref:name:  
-END:requires
-      </div>
-    </div>
-ENDIF:requires
-
-IF:toc
-    <div id="contents-list">
-      <h3 class="section-bar">Contents</h3>
-      <ul>
-START:toc
-      <li><a href="#%href%">%secname%</a></li>
-END:toc
-     </ul>
-ENDIF:toc
-   </div>
-
-IF:methods
-    <div id="method-list">
-      <h3 class="section-bar">Methods</h3>
-
-      <div class="name-list">
-START:methods
-      HREF:aref:name:  
-END:methods
-      </div>
-    </div>
-ENDIF:methods
-
-  </div>
-
-
-    <!-- if includes -->
-IF:includes
-    <div id="includes">
-      <h3 class="section-bar">Included Modules</h3>
-
-      <div id="includes-list">
-START:includes
-        <span class="include-name">HREF:aref:name:</span>
-END:includes
-      </div>
-    </div>
-ENDIF:includes
-
-START:sections
-    <div id="section">
-IF:sectitle
-      <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
-IF:seccomment
-      <div class="section-comment">
-        %seccomment%
-      </div>      
-ENDIF:seccomment
-ENDIF:sectitle
-
-IF:classlist
-    <div id="class-list">
-      <h3 class="section-bar">Classes and Modules</h3>
-
-      %classlist%
-    </div>
-ENDIF:classlist
-
-IF:constants
-    <div id="constants-list">
-      <h3 class="section-bar">Constants</h3>
-
-      <div class="name-list">
-        <table summary="Constants">
-START:constants
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%name%</td>
-          <td>=</td>
-          <td class="context-item-value">%value%</td>
-IF:desc
-          <td width="3em"> </td>
-          <td class="context-item-desc">%desc%</td>
-ENDIF:desc
-        </tr>
-END:constants
-        </table>
-      </div>
-    </div>
-ENDIF:constants
-
-IF:aliases
-    <div id="aliases-list">
-      <h3 class="section-bar">External Aliases</h3>
-
-      <div class="name-list">
-                        <table summary="aliases">
-START:aliases
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%old_name%</td>
-          <td>-></td>
-          <td class="context-item-value">%new_name%</td>
-        </tr>
-IF:desc
-      <tr class="top-aligned-row context-row">
-        <td> </td>
-        <td colspan="2" class="context-item-desc">%desc%</td>
-      </tr>
-ENDIF:desc
-END:aliases
-                        </table>
-      </div>
-    </div>
-ENDIF:aliases
-
-
-IF:attributes
-    <div id="attribute-list">
-      <h3 class="section-bar">Attributes</h3>
-
-      <div class="name-list">
-        <table>
-START:attributes
-        <tr class="top-aligned-row context-row">
-          <td class="context-item-name">%name%</td>
-IF:rw
-          <td class="context-item-value"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-          <td class="context-item-value">  </td>
-ENDIF:rw
-          <td class="context-item-desc">%a_desc%</td>
-        </tr>
-END:attributes
-        </table>
-      </div>
-    </div>
-ENDIF:attributes
-      
-
-
-    <!-- if method_list -->
-IF:method_list
-    <div id="methods">
-START:method_list
-IF:methods
-      <h3 class="section-bar">%type% %category% methods</h3>
-
-START:methods
-      <div id="method-%aref%" class="method-detail">
-        <a name="%aref%"></a>
-
-        <div class="method-heading">
-IF:codeurl
-          <a href="%codeurl%" target="Code" class="method-signature"
-            onclick="popupCode('%codeurl%');return false;">
-ENDIF:codeurl
-IF:sourcecode
-          <a href="#%aref%" class="method-signature">
-ENDIF:sourcecode
-IF:callseq
-          <span class="method-name">%callseq%</span>
-ENDIF:callseq
-IFNOT:callseq
-          <span class="method-name">%name%</span><span class="method-args">%params%</span>
-ENDIF:callseq
-IF:codeurl
-          </a>
-ENDIF:codeurl
-IF:sourcecode
-          </a>
-ENDIF:sourcecode
-        </div>
-      
-        <div class="method-description">
-IF:m_desc
-          %m_desc%
-ENDIF:m_desc
-IF:sourcecode
-          <p><a class="source-toggle" href="#"
-            onclick="toggleCode('%aref%-source');return false;">[Source]</a></p>
-          <div class="method-source-code" id="%aref%-source">
-<pre>
-%sourcecode%
-</pre>
-          </div>
-ENDIF:sourcecode
-        </div>
-      </div>
-
-END:methods
-ENDIF:methods
-END:method_list
-
-    </div>
-ENDIF:method_list
-END:sections
-}
-
-
-#####################################################################
-### B O D Y   T E M P L A T E
-#####################################################################
-
-BODY = HEADER + %{
-
-!INCLUDE!  <!-- banner header -->
-
-  <div id="bodyContent">
-
-} +  METHOD_LIST + %{
-
-  </div>
-
-} + FOOTER
-
-
-
-#####################################################################
-### S O U R C E   C O D E   T E M P L A T E
-#####################################################################
-
-SRC_PAGE = XHTML_PREAMBLE + %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-</head>
-<body class="standalone-code">
-  <pre>%code%</pre>
-</body>
-</html>
-}
-
-
-#####################################################################
-### I N D E X   F I L E   T E M P L A T E S
-#####################################################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = XHTML_PREAMBLE + %{
-<!--
-
-    %list_title%
-
-  -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%list_title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel="stylesheet" href="%style_url%" type="text/css" />
-  <base target="docwin" />
-</head>
-<body>
-<div id="index">
-  <h1 class="section-bar">%list_title%</h1>
-  <div id="index-entries">
-START:entries
-    <a href="%href%">%name%</a><br />
-END:entries
-  </div>
-</div>
-</body>
-</html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{<?xml version="1.0" encoding="%charset%"?>
-<!DOCTYPE html 
-     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-
-<!--
-
-    %title%
-
-  -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-</head>
-<frameset rows="20%, 80%">
-    <frameset cols="25%,35%,45%">
-        <frame src="fr_file_index.html"   title="Files" name="Files" />
-        <frame src="fr_class_index.html"  name="Classes" />
-        <frame src="fr_method_index.html" name="Methods" />
-    </frameset>
-    <frame src="%initial_page%" name="docwin" />
-</frameset>
-</html>
-}
-
-
-
-  end # module Page
-end # class RDoc
-
-require 'rdoc/generators/template/html/one_page_html'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/kilmer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/kilmer.rb
deleted file mode 100644
index 55071fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/kilmer.rb
+++ /dev/null
@@ -1,435 +0,0 @@
-module RDoc
-module Page
-
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,td,p { font-family: %fonts%; 
-       color: #000040;
-}
-
-.attr-rw { font-size: xx-small; color: #444488 }
-
-.title-row { background-color: #CCCCFF;
-             color:      #000010;
-}
-
-.big-title-font { 
-  color: black;
-  font-weight: bold;
-  font-family: %fonts%; 
-  font-size: large; 
-  height: 60px;
-  padding: 10px 3px 10px 3px;
-}
-
-.small-title-font { color: black;
-                    font-family: %fonts%;
-                    font-size:10; }
-
-.aqua { color: black }
-
-.method-name, .attr-name {
-      font-family: font-family: %fonts%; 
-      font-weight: bold;
-      font-size: small;
-      margin-left: 20px;
-      color: #000033;
-}
-
-.tablesubtitle, .tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 3px;
-   font-size: large;
-   color: black;
-   background-color: #CCCCFF;
-   border: thin;
-}
-
-.name-list {
-  margin-left: 5px;
-  margin-bottom: 2ex;
-  line-height: 105%;
-}
-
-.description {
-  margin-left: 5px;
-  margin-bottom: 2ex;
-  line-height: 105%;
-  font-size: small;
-}
-
-.methodtitle {
-  font-size: small;
-  font-weight: bold;
-  text-decoration: none;
-  color: #000033;
-  background-color: white; 
-}
-
-.srclink {
-  font-size: small;
-  font-weight: bold;
-  text-decoration: none;
-  color: #0000DD;
-  background-color: white;
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-}
-
-
-############################################################################
-
-
-BODY = %{
-<html><head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-  <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    parent.frames.source.location = url
-  }
-  //-->
-  </script>
-</head>
-<body bgcolor="white">
-
-!INCLUDE!  <!-- banner header -->
-
-IF:diagram
-<table width="100%"><tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table><br />
-<div class="name-list">
-START:requires
-HREF:aref:name:
-END:requires
-ENDIF:requires
-</div>
-
-IF:methods
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Methods</td></tr>
-</table><br />
-<div class="name-list">
-START:methods
-HREF:aref:name:,
-END:methods
-</div>
-ENDIF:methods
-
-
-START:sections
-    <div id="section">
-IF:sectitle
-      <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
-IF:seccomment
-      <div class="section-comment">
-        %seccomment%
-      </div>      
-ENDIF:seccomment
-ENDIF:sectitle
-
-IF:attributes
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Attributes</td></tr>
-</table><br />
-<table cellspacing="5">
-START:attributes
-     <tr valign="top">
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td class="attr-name">%name%</td>
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Classes and Modules</td></tr>
-</table><br />
-%classlist%<br />
-ENDIF:classlist
-
-  !INCLUDE!  <!-- method descriptions -->
-
-END:sections
-
-</body>
-</html>
-}
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table width="100%">
- <tr class="title-row">
- <td><table width="100%"><tr>
-   <td class="big-title-font" colspan="2"><font size="-3"><b>File</b><br /></font>%short_name%</td>
-   <td align="right"><table cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table><br />
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <font size="-3"><b>%classmod%</b><br /></font>%full_name%
- </td>
- <td align="right">
-   <table cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-HREF:full_path_url:full_path:
-IF:cvsurl
- (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="cyan">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table><br />
-}
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<div class="tablesubsubtitle">Included modules</div><br />
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table cellpadding=5 width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%">
-IF:callseq
-<b>%callseq%</b>
-ENDIF:callseq
-IFNOT:callseq
- <b>%name%</b>%params%
-ENDIF:callseq
-IF:codeurl
-<a href="%codeurl%" target="source" class="srclink">src</a>
-ENDIF:codeurl
-</a></td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-IF:aka
-<div class="aka">
-This method is also aliased as
-START:aka
-<a href="%aref%">%name%</a>
-END:aka
-</div>
-ENDIF:aka
-IF:sourcecode
-<pre class="source">
-%sourcecode%
-</pre>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<html>
-<head><title>%title%</title>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style type="text/css">
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-  .kw { color: #3333FF; font-weight: bold }
-  .cmt { color: green; font-style: italic }
-  .str { color: #662222; font-style: italic }
-  .re  { color: #662222; }
-</style>
-</head>
-<body bgcolor="white">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<style>
-<!--
-  body {
-background-color: #ddddff;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #0000aa;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-  
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner">%list_title%</div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-</head>
-
-<frameset cols="20%,*">
-    <frameset rows="15%,35%,50%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Classes">
-        <frame src="fr_method_index.html" name="Methods">
-    </frameset>
-IF:inline_source
-      <frame  src="%initial_page%" name="docwin">
-ENDIF:inline_source
-IFNOT:inline_source
-    <frameset rows="80%,20%">
-      <frame  src="%initial_page%" name="docwin">
-      <frame  src="blank.html" name="source">
-    </frameset>
-ENDIF:inline_source
-    <noframes>
-          <body bgcolor="white">
-            Click <a href="html/index.html">here</a> for a non-frames
-            version of this page.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-# and a blank page to use as a target
-BLANK = %{
-<html><body bgcolor="white"></body></html>
-}
-
-def write_extra_pages
-  template = TemplatePage.new(BLANK)
-  File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
-end
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/old_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/old_html.rb
deleted file mode 100644
index ca66302..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/old_html.rb
+++ /dev/null
@@ -1,728 +0,0 @@
-module RDoc
-
-# This is how you define the HTML that RDoc generates. Simply create
-# a file in rdoc/generators/html_templates that creates the
-# module RDoc::Page and populate it as described below. Then invoke
-# rdoc using the --template <name of your file> option, and
-# your template will be used.
-#
-# The constants defining pages use a simple templating system:
-#
-# * The templating system is passed a hash. Keys in the hash correspond
-#   to tags on this page. The tag %abc% is looked up in the hash,
-#   and is replaced by the corresponding hash value.
-#
-# * Some tags are optional. You can detect this using IF/ENDIF
-#
-#      IF: title
-#      The value of title is %title%
-#      ENDIF: title
-#
-# * Some entries in the hash have values that are arrays, where each
-#   entry in the array is itself a hash. These are used to generate
-#   lists using the START: construct. For example, given a hash
-#   containing
-# 
-#      { 'people' => [ { 'name' => 'Fred', 'age' => '12' },
-#                      { 'name' => 'Mary', 'age' => '21' } ]
-#
-#   You could generate a simple table using
-#
-#      <table>
-#      START:people
-#        <tr><td>%name%<td>%age%</tr>
-#      END:people
-#      </table>
-#
-#   These lists can be nested to an arbitrary depth
-#
-# * the construct HREF:url:name: generates <a href="%url%">%name%</a>
-#   if +url+ is defined in the hash, or %name% otherwise.
-#
-#
-# Your file must contain the following constants
-#
-# [*FONTS*]  a list of fonts to be used
-# [*STYLE*]  a CSS section (without the <style> or comments). This is
-#            used to generate a style.css file
-#
-# [*BODY*] 
-#   The main body of all non-index RDoc pages. BODY will contain
-#   two !INCLUDE!s. The first is used to include a document-type
-#   specific header (FILE_PAGE or CLASS_PAGE). The second include
-#   is for the method list (METHOD_LIST). THe body is passed:
-#
-#   %title%::
-#       the page's title
-#
-#   %style_url%::
-#       the url of a style sheet for this page
-#
-#   %diagram%::
-#       the optional URL of a diagram for this page
-#
-#   %description%::
-#       a (potentially multi-paragraph) string containing the
-#       description for th file/class/module.
-#
-#   %requires%::
-#       an optional list of %aref%/%name% pairs, one for each module
-#       required by this file.
-#
-#   %methods%::
-#       an optional list of %aref%/%name%, one for each method
-#       documented on this page. This is intended to be an index.
-#
-#   %attributes%::  
-#       An optional list. For each attribute it contains:
-#       %name%::   the attribute name
-#       %rw%::     r/o, w/o, or r/w
-#       %a_desc%:: description of the attribute
-#
-#   %classlist%:: 
-#       An optional string containing an already-formatted list of
-#       classes and modules documented in this file
-#
-#   For FILE_PAGE entries, the body will be passed
-#
-#   %short_name%::  
-#       The name of the file
-#
-#   %full_path%::
-#       The full path to the file
-#
-#   %dtm_modified%::
-#       The date/time the file was last changed
-#
-#   For class and module pages, the body will be passed
-#
-#   %classmod%::
-#       The name of the class or module
-#
-#   %files%::
-#       A list. For each file this class is defined in, it contains:
-#       %full_path_url%:: an (optional) URL of the RDoc page
-#                         for this file
-#       %full_path%::     the name of the file
-#
-#   %par_url%::
-#       The (optional) URL of the RDoc page documenting this class's
-#       parent class
-#
-#   %parent%::
-#       The name of this class's parent.
-#
-#   For both files and classes, the body is passed the following information
-#   on includes and methods:
-#
-#   %includes%::    
-#       Optional list of included modules. For each, it receives
-#       %aref%:: optional URL to RDoc page for the module
-#       %name%:: the name of the module
-#
-#   %method_list%::
-#       Optional list of methods of a particular class and category.
-#
-#   Each method list entry contains:
-#
-#   %type%::        public/private/protected
-#   %category%::    instance/class
-#   %methods%::     a list of method descriptions
-#
-#   Each method description contains:
-#
-#   %aref%::        a target aref, used when referencing this method
-#                   description. You should code this as <a name="%aref%">
-#   %codeurl%::     the optional URL to the page containing this method's
-#                   source code.
-#   %name%::        the method's name
-#   %params%::      the method's parameters
-#   %callseq%::     a full calling sequence
-#   %m_desc%::      the (potentially multi-paragraph) description of
-#                   this method.
-#
-# [*CLASS_PAGE*]
-#         Header for pages documenting classes and modules. See
-#         BODY above for the available parameters.
-#
-# [*FILE_PAGE*]
-#         Header for pages documenting files. See
-#         BODY above for the available parameters.
-#
-# [*METHOD_LIST*]
-#         Controls the display of the listing of methods. See BODY for
-#         parameters.
-#
-# [*INDEX*]
-#         The top-level index page. For a browser-like environment
-#         define a frame set that includes the file, class, and 
-#         method indices. Passed
-#         %title%:: title of page
-#         %initial_page% :: url of initial page to display
-#
-# [*CLASS_INDEX*]
-#         Individual files for the three indexes. Passed:
-#         %index_url%:: URL of main index page
-#         %entries%::   List of
-#                       %name%:: name of an index entry
-#                       %href%:: url of corresponding page
-# [*METHOD_INDEX*]
-#         Same as CLASS_INDEX for methods
-#
-# [*FILE_INDEX*]
-#         Same as CLASS_INDEX for methods
-#
-# [*FR_INDEX_BODY*]
-#         A wrapper around CLASS_INDEX, METHOD_INDEX, and FILE_INDEX.
-#         If those index strings contain the complete HTML for the
-#         output, then FR_INDEX_BODY can simply be !INCLUDE!
-#
-# [*SRC_PAGE*]
-#         Page used to display source code. Passed %title% and %code%,
-#         the latter being a multi-line string of code.
-
-module Page
-
-FONTS = "Verdana, Arial, Helvetica, sans-serif"
-
-STYLE = %{
-body,td,p { font-family: %fonts%; 
-       color: #000040;
-}
-
-.attr-rw { font-size: x-small; color: #444488 }
-
-.title-row { background: #0000aa;
-             color:      #eeeeff;
-}
-
-.big-title-font { color: white;
-                  font-family: %fonts%;
-                  font-size: large; 
-                  height: 50px}
-
-.small-title-font { color: aqua;
-                    font-family: %fonts%;
-                    font-size: xx-small; }
-
-.aqua { color: aqua }
-
-.method-name, attr-name {
-      font-family: monospace; font-weight: bold;
-}
-
-.tablesubtitle, .tablesubsubtitle {
-   width: 100%;
-   margin-top: 1ex;
-   margin-bottom: .5ex;
-   padding: 5px 0px 5px 20px;
-   font-size: large;
-   color: aqua;
-   background: #3333cc;
-}
-
-.name-list {
-  font-family: monospace;
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-.description {
-  margin-left: 40px;
-  margin-top: -2ex;
-  margin-bottom: 2ex;
-}
-
-.description p {
-  line-height: 140%;
-}
-
-.aka {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 100%;
-  font-size:   small;
-  color:       #808080;
-}
-
-.methodtitle {
-  font-size: medium;
-  text-decoration: none;
-  color: #0000AA;
-  background: white; 
-}
-
-.paramsig {
-   font-size: small;
-}
-
-.srcbut { float: right }
-
-pre { font-size: 1.2em; }
-tt  { font-size: 1.2em; }
-
-pre.source {
-  border-style: groove;
-  background-color: #ddddff;
-  margin-left:  40px;
-  padding: 1em 0em 1em 2em;
-}
-
-.classlist {
-  margin-left: 40px;
-  margin-bottom: 2ex;
-  line-height: 140%;
-}
-
-li {
-  display:    list-item;
-  margin-top: .6em;
-}
-
-.ruby-comment    { color: green; font-style: italic }
-.ruby-constant   { color: #4433aa; font-weight: bold; }
-.ruby-identifier { color: #222222;  }
-.ruby-ivar       { color: #2233dd; }
-.ruby-keyword    { color: #3333FF; font-weight: bold }
-.ruby-node       { color: #777777; }
-.ruby-operator   { color: #111111;  }
-.ruby-regexp     { color: #662222; }
-.ruby-value      { color: #662222; font-style: italic }
-
-}
-
-
-############################################################################
-
-
-HEADER = %{
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-  <link rel=StyleSheet href="%style_url%" type="text/css" media="screen" />
-  <script type="text/javascript" language="JavaScript">
-  <!--
-  function popCode(url) {
-    window.open(url, "Code", 
-          "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
-  }
-  //-->
-  </script>
-</head>
-}
-
-
-###################################################################
-
-METHOD_LIST = %{
-IF:includes
-<table summary="Included modules" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Included modules</td></tr>
-</table>
-<div class="name-list">
-START:includes
-    <span class="method-name">HREF:aref:name:</span>
-END:includes
-</div>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-<table summary="Method list" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
-</table>
-START:methods
-<table summary="method"  width="100%" cellspacing="0" cellpadding="5" border="0">
-<tr><td class="methodtitle">
-<a name="%aref%"></a>
-IF:codeurl
-<a href="%codeurl%" target="Code" class="methodtitle"
- onClick="popCode('%codeurl%');return false;">
-ENDIF:codeurl
-IF:callseq
-<b>%callseq%</b>
-ENDIF:callseq
-IFNOT:callseq
-<b>%name%</b>%params%
-ENDIF:callseq
-IF:codeurl
-</a>
-ENDIF:codeurl
-</td></tr>
-</table>
-IF:m_desc
-<div class="description">
-%m_desc%
-</div>
-ENDIF:m_desc
-IF:aka
-<div class="aka">
-This method is also aliased as
-START:aka
-<a href="%aref%">%name%</a>
-END:aka
-</div>
-ENDIF:aka
-IF:sourcecode
-<pre class="source">
-%sourcecode%
-</pre>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-###################################################################
-
-CONTEXT_CONTENT = %{
-IF:diagram
-<table summary="Diagram of classes and modules" width="100%">
-<tr><td align="center">
-%diagram%
-</td></tr></table>
-ENDIF:diagram
-
-
-IF:description
-<div class="description">%description%</div>
-ENDIF:description
-
-IF:requires
-<table summary="Requires" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Required files</td></tr>
-</table>
-<div class="name-list">
-START:requires
-HREF:aref:name:   
-END:requires
-</div>
-ENDIF:requires
-
-IF:methods
-<table summary="Methods" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Methods</td></tr>
-</table>
-<div class="name-list">
-START:methods
-HREF:aref:name:   
-END:methods
-</div>
-ENDIF:methods
-
-IF:constants
-<table summary="Constants" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Constants</td></tr>
-</table>
-<table cellpadding="5">
-START:constants
-<tr valign="top"><td>%name%</td><td>=</td><td>%value%</td></tr>
-IF:desc
-<tr><td></td><td></td><td>%desc%</td></tr>
-ENDIF:desc
-END:constants
-</table>
-ENDIF:constants
-
-IF:aliases
-<table summary="Aliases" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">External Aliases</td></tr>
-</table>
-<div class="name-list">
-START:aliases
-%old_name% -> %new_name%<br />
-END:aliases
-</div>
-ENDIF:aliases
-
-IF:attributes
-<table summary="Attributes" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Attributes</td></tr>
-</table>
-<table summary="Attribute details" cellspacing="5">
-START:attributes
-     <tr valign="top">
-       <td class="attr-name">%name%</td>
-IF:rw
-       <td align="center" class="attr-rw"> [%rw%] </td>
-ENDIF:rw
-IFNOT:rw
-       <td></td>
-ENDIF:rw
-       <td>%a_desc%</td>
-     </tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:classlist
-<table summary="List of classes" cellpadding="5" width="100%">
-<tr><td class="tablesubtitle">Classes and Modules</td></tr>
-</table>
-<div class="classlist">
-%classlist%
-</div>
-ENDIF:classlist
-}
-
-###############################################################################
-
-BODY = HEADER + %{
-<body bgcolor="white">
-!INCLUDE!  <!-- banner header -->
-} +
-CONTEXT_CONTENT + METHOD_LIST +
-%{
-</body>
-</html>
-}
-
-
-###############################################################################
-
-FILE_PAGE = <<_FILE_PAGE_
-<table summary="Information on file" width="100%">
- <tr class="title-row">
- <td><table summary="layout" width="100%"><tr>
-   <td class="big-title-font" colspan="2">%short_name%</td>
-   <td align="right"><table summary="layout" cellspacing="0" cellpadding="2">
-         <tr>
-           <td  class="small-title-font">Path:</td>
-           <td class="small-title-font">%full_path%
-IF:cvsurl
-				 (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-           </td>
-         </tr>
-         <tr>
-           <td class="small-title-font">Modified:</td>
-           <td class="small-title-font">%dtm_modified%</td>
-         </tr>
-        </table>
-    </td></tr></table></td>
-  </tr>
-</table>
-_FILE_PAGE_
-
-###################################################################
-
-CLASS_PAGE = %{
-<table summary="Information on class" width="100%" border="0" cellspacing="0">
- <tr class="title-row">
- <td class="big-title-font">
-   <sup><font color="aqua">%classmod%</font></sup> %full_name%
- </td>
- <td align="right">
-   <table summary="layout" cellspacing="0" cellpadding="2">
-     <tr valign="top">
-      <td class="small-title-font">In:</td>
-      <td class="small-title-font">
-START:infiles
-IF:full_path_url
-        <a href="%full_path_url%" class="aqua">
-ENDIF:full_path_url
-%full_path%
-IF:full_path_url
-         </a>
-ENDIF:full_path_url
-IF:cvsurl
-          (<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
-ENDIF:cvsurl
-<br />
-END:infiles
-      </td>
-     </tr>
-IF:parent
-     <tr>
-      <td class="small-title-font">Parent:</td>
-      <td class="small-title-font">
-IF:par_url
-        <a href="%par_url%" class="aqua">
-ENDIF:par_url
-%parent%
-IF:par_url
-         </a>
-ENDIF:par_url
-      </td>
-     </tr>
-ENDIF:parent
-   </table>
-  </td>
-  </tr>
-</table>
-}
-
-=begin
-=end
-
-########################## Source code ##########################
-
-SRC_PAGE = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%title%</title>
-<link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
-</head>
-<body bgcolor="white">
-<pre>%code%</pre>
-</body>
-</html>
-}
-
-########################## Index ################################
-
-FR_INDEX_BODY = %{
-!INCLUDE!
-}
-
-FILE_INDEX = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%list_title%</title>
-<style type="text/css">
-<!--
-  body {
-background-color: #ddddff;
-     font-family: #{FONTS}; 
-       font-size: 11px; 
-      font-style: normal;
-     line-height: 14px; 
-           color: #000040;
-  }
-div.banner {
-  background: #0000aa;
-  color:      white;
-  padding: 1;
-  margin: 0;
-  font-size: 90%;
-  font-weight: bold;
-  line-height: 1.1;
-  text-align: center;
-  width: 100%;
-}
-
-A.xx { color: white; font-weight: bold; }
--->
-</style>
-<base target="docwin">
-</head>
-<body>
-<div class="banner"><a href="%index_url%" class="xx">%list_title%</a></div>
-START:entries
-<a href="%href%">%name%</a><br />
-END:entries
-</body></html>
-}
-
-CLASS_INDEX = FILE_INDEX
-METHOD_INDEX = FILE_INDEX
-
-INDEX = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
-<title>%title%</title></head>
-
-<frameset rows="20%, 80%">
-    <frameset cols="25%,35%,45%">
-        <frame src="fr_file_index.html"   title="Files" name="Files">
-        <frame src="fr_class_index.html"  name="Classes">
-        <frame src="fr_method_index.html" name="Methods">
-    </frameset>
-    <frame  src="%initial_page%" name="docwin">
-    <noframes>
-          <body bgcolor="white">
-            Sorry, RDoc currently only generates HTML using frames.
-          </body>
-    </noframes>
-</frameset>
-
-</html>
-}
-
-######################################################################
-#
-# The following is used for the -1 option
-#
-
-CONTENTS_XML = %{
-IF:description
-%description%
-ENDIF:description
-
-IF:requires
-<h4>Requires:</h4>
-<ul>
-START:requires
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:requires
-</ul>
-ENDIF:requires
-
-IF:attributes
-<h4>Attributes</h4>
-<table>
-START:attributes
-<tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:includes
-<h4>Includes</h4>
-<ul>
-START:includes
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:includes
-</ul>
-ENDIF:includes
-
-IF:method_list
-<h3>Methods</h3>
-START:method_list
-IF:methods
-START:methods
-<h4>%type% %category% method: <a name="%aref%">%name%%params%</a></h4>
-
-IF:m_desc
-%m_desc%
-ENDIF:m_desc
-
-IF:sourcecode
-<blockquote><pre>
-%sourcecode%
-</pre></blockquote>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-
-end
-end
-
-require 'rdoc/generators/template/html/one_page_html'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/one_page_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/one_page_html.rb
deleted file mode 100644
index 19441f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/html/one_page_html.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-module RDoc
-module Page
-######################################################################
-#
-# The following is used for the -1 option
-#
-
-CONTENTS_XML = %{
-IF:description
-%description%
-ENDIF:description
-
-IF:requires
-<h4>Requires:</h4>
-<ul>
-START:requires
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:requires
-</ul>
-ENDIF:requires
-
-IF:attributes
-<h4>Attributes</h4>
-<table>
-START:attributes
-<tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
-END:attributes
-</table>
-ENDIF:attributes
-
-IF:includes
-<h4>Includes</h4>
-<ul>
-START:includes
-IF:aref
-<li><a href="%aref%">%name%</a></li>
-ENDIF:aref
-IFNOT:aref
-<li>%name%</li>
-ENDIF:aref 
-END:includes
-</ul>
-ENDIF:includes
-
-IF:method_list
-<h3>Methods</h3>
-START:method_list
-IF:methods
-START:methods
-<h4>%type% %category% method: 
-IF:callseq
-<a name="%aref%">%callseq%</a>
-ENDIF:callseq
-IFNOT:callseq
-<a name="%aref%">%name%%params%</a></h4>
-ENDIF:callseq
-
-IF:m_desc
-%m_desc%
-ENDIF:m_desc
-
-IF:sourcecode
-<blockquote><pre>
-%sourcecode%
-</pre></blockquote>
-ENDIF:sourcecode
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-}
-
-########################################################################
-
-ONE_PAGE = %{
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <title>%title%</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
-</head>
-<body>
-START:files
-<h2>File: %short_name%</h2>
-<table>
-  <tr><td>Path:</td><td>%full_path%</td></tr>
-  <tr><td>Modified:</td><td>%dtm_modified%</td></tr>
-</table>
-} + CONTENTS_XML + %{
-END:files
-
-IF:classes
-<h2>Classes</h2>
-START:classes
-IF:parent
-<h3>%classmod% %full_name% < HREF:par_url:parent:</h3>
-ENDIF:parent
-IFNOT:parent
-<h3>%classmod% %full_name%</h3>
-ENDIF:parent
-
-IF:infiles
-(in files
-START:infiles
-HREF:full_path_url:full_path:
-END:infiles
-)
-ENDIF:infiles
-} + CONTENTS_XML + %{
-END:classes
-ENDIF:classes
-</body>
-</html>
-}
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/rdf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/rdf.rb
deleted file mode 100644
index 1545d81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/rdf.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-module RDoc
-module Page
-
-
-
-CONTENTS_RDF = %{
-IF:description
-    <description rd:parseType="Literal">
-%description%
-    </description>
-ENDIF:description
-
-IF:requires
-START:requires
-         <rd:required-file rd:name="%name%" />
-END:requires
-ENDIF:requires
-
-IF:attributes
-START:attributes
-        <contents>
-        <Attribute rd:name="%name%">
-IF:rw
-          <attribute-rw>%rw%</attribute-rw>
-ENDIF:rw
-          <description rdf:parseType="Literal">%a_desc%</description>
-        </Attribute>
-        </contents>
-END:attributes
-ENDIF:attributes
-
-IF:includes
-      <IncludedModuleList>
-START:includes
-        <included-module rd:name="%name%"  />
-END:includes
-      </IncludedModuleList>
-ENDIF:includes
-
-IF:method_list
-START:method_list
-IF:methods
-START:methods
-	<contents>
-        <Method rd:name="%name%" rd:visibility="%type%"
-                rd:category="%category%" rd:id="%aref%">
-          <parameters>%params%</parameters>
-IF:m_desc
-          <description rdf:parseType="Literal">
-%m_desc%
-          </description>
-ENDIF:m_desc
-IF:sourcecode
-          <source-code-listing rdf:parseType="Literal">
-%sourcecode%
-          </source-code-listing>
-ENDIF:sourcecode
-        </Method>
-       </contents>
-END:methods
-ENDIF:methods
-END:method_list
-ENDIF:method_list
-     <!-- end method list -->
-}
-
-########################################################################
-
-ONE_PAGE = %{<?xml version="1.0" encoding="utf-8"?>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-        xmlns="http://pragprog.com/rdoc/rdoc.rdf#"
-        xmlns:rd="http://pragprog.com/rdoc/rdoc.rdf#">
-
-<!-- RDoc -->
-START:files
-  <rd:File rd:name="%short_name%" rd:id="%href%">
-      <path>%full_path%</path>
-      <dtm-modified>%dtm_modified%</dtm-modified>
-} + CONTENTS_RDF + %{
-  </rd:File>
-END:files
-START:classes
-  <%classmod% rd:name="%full_name%" rd:id="%full_name%">
-    <classmod-info>
-IF:infiles
-      <InFiles>
-START:infiles
-        <infile>
-          <File rd:name="%full_path%"
-IF:full_path_url
-                rdf:about="%full_path_url%"
-ENDIF:full_path_url
-           />
-         </infile>
-END:infiles
-      </InFiles>
-ENDIF:infiles
-IF:parent
-     <superclass>HREF:par_url:parent:</superclass>
-ENDIF:parent
-    </classmod-info>
-} + CONTENTS_RDF + %{
-  </%classmod%>
-END:classes
-<!-- /RDoc -->
-</rdf:RDF>
-}
-
-
-end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/xml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/xml.rb
deleted file mode 100644
index 4a0c8c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/template/xml/xml.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-module RDoc
-module Page
-
-
-
-CONTENTS_XML = %{
-IF:description
-    <description>
-%description%
-    </description>
-ENDIF:description
-    <contents>
-IF:requires
-      <required-file-list>
-START:requires
-         <required-file name="%name%"
-IF:aref 
-                        href="%aref%"
-ENDIF:aref
-         />
-END:requires
-      </required-file-list>
-ENDIF:requires
-IF:attributes
-      <attribute-list>
-START:attributes
-        <attribute name="%name%">
-IF:rw
-          <attribute-rw>%rw%</attribute-rw>
-ENDIF:rw
-          <description>%a_desc%</description>
-        </attribute>
-END:attributes
-      </attribute-list>
-ENDIF:attributes
-IF:includes
-      <included-module-list>
-START:includes
-        <included-module name="%name%"
-IF:aref
-                         href="%aref%"
-ENDIF:aref
-        />
-END:includes
-      </included-module-list>
-ENDIF:includes
-IF:method_list
-      <method-list>
-START:method_list
-IF:methods
-START:methods
-        <method name="%name%" type="%type%" category="%category%" id="%aref%">
-          <parameters>%params%</parameters>
-IF:m_desc
-          <description>
-%m_desc%
-          </description>
-ENDIF:m_desc
-IF:sourcecode
-          <source-code-listing>
-%sourcecode%
-          </source-code-listing>
-ENDIF:sourcecode
-        </method>
-END:methods
-ENDIF:methods
-END:method_list
-      </method-list>
-ENDIF:method_list
-     </contents>
-}
-
-########################################################################
-
-ONE_PAGE = %{<?xml version="1.0" encoding="utf-8"?>
-<rdoc>
-<file-list>
-START:files
-  <file name="%short_name%" id="%href%">
-    <file-info>
-      <path>%full_path%</path>
-      <dtm-modified>%dtm_modified%</dtm-modified>
-    </file-info>
-} + CONTENTS_XML + %{
-  </file>
-END:files
-</file-list>
-<class-module-list>
-START:classes
-  <%classmod% name="%full_name%" id="%full_name%">
-    <classmod-info>
-IF:infiles
-      <infiles>      
-START:infiles
-        <infile>HREF:full_path_url:full_path:</infile>
-END:infiles
-      </infiles>
-ENDIF:infiles
-IF:parent
-     <superclass>HREF:par_url:parent:</superclass>
-ENDIF:parent
-    </classmod-info>
-} + CONTENTS_XML + %{
-  </%classmod%>
-END:classes
-</class-module-list>
-</rdoc>
-}
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/xml_generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/xml_generator.rb
deleted file mode 100644
index 8c1a76d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/generators/xml_generator.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-
-require 'ftools'
-
-require 'rdoc/options'
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-require 'rdoc/generators/html_generator'
-
-module Generators
-
-  # Generate XML output as one big file
-
-  class XMLGenerator < HTMLGenerator
-
-    # Standard generator factory
-    def XMLGenerator.for(options)
-      XMLGenerator.new(options)
-    end
-
-    
-    def initialize(*args)
-      super
-    end
-
-    ##
-    # Build the initial indices and output objects
-    # based on an array of TopLevel objects containing
-    # the extracted information. 
-
-    def generate(info)
-      @info       = info
-      @files      = []
-      @classes    = []
-      @hyperlinks = {}
-
-      build_indices
-      generate_xml
-    end
-
-
-    ##
-    # Generate:
-    #
-    # * a list of HtmlFile objects for each TopLevel object.
-    # * a list of HtmlClass objects for each first level
-    #   class or module in the TopLevel objects
-    # * a complete list of all hyperlinkable terms (file,
-    #   class, module, and method names)
-
-    def build_indices
-
-      @info.each do |toplevel|
-        @files << HtmlFile.new(toplevel, @options, FILE_DIR)
-      end
-
-      RDoc::TopLevel.all_classes_and_modules.each do |cls|
-        build_class_list(cls, @files[0], CLASS_DIR)
-      end
-    end
-
-    def build_class_list(from, html_file, class_dir)
-      @classes << HtmlClass.new(from, html_file, class_dir, @options)
-      from.each_classmodule do |mod|
-        build_class_list(mod, html_file, class_dir)
-      end
-    end
-
-    ##
-    # Generate all the HTML. For the one-file case, we generate
-    # all the information in to one big hash
-    #
-    def generate_xml
-      values = { 
-        'charset' => @options.charset,
-        'files'   => gen_into(@files),
-        'classes' => gen_into(@classes)
-      }
-      
-      # this method is defined in the template file
-      write_extra_pages if defined? write_extra_pages
-
-      template = TemplatePage.new(RDoc::Page::ONE_PAGE)
-
-      if @options.op_name
-        opfile = File.open(@options.op_name, "w")
-      else
-        opfile = $stdout
-      end
-      template.write_html_on(opfile, values)
-    end
-
-    def gen_into(list)
-      res = []
-      list.each do |item|
-        res << item.value_hash
-      end
-      res
-    end
-
-    def gen_file_index
-      gen_an_index(@files, 'Files')
-    end
-
-    def gen_class_index
-      gen_an_index(@classes, 'Classes')
-    end
-
-    def gen_method_index
-      gen_an_index(HtmlMethod.all_methods, 'Methods')
-    end
-
-    
-    def gen_an_index(collection, title)
-      res = []
-      collection.sort.each do |f|
-        if f.document_self
-          res << { "href" => f.path, "name" => f.index_name }
-        end
-      end
-
-      return {
-        "entries" => res,
-        'list_title' => title,
-        'index_url'  => main_url,
-      }
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb
deleted file mode 100644
index 26563b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/rdoc2latex.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/local/bin/ruby
-# Illustration of a script to convert an RDoc-style file to a LaTeX
-# document
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_latex'
-
-p = SM::SimpleMarkup.new
-h = SM::ToLaTeX.new
-
-#puts "\\documentclass{report}"
-#puts "\\usepackage{tabularx}"
-#puts "\\usepackage{parskip}"
-#puts "\\begin{document}"
-puts p.convert(ARGF.read, h)
-#puts "\\end{document}"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/sample.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/sample.rb
deleted file mode 100644
index a375b54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/sample/sample.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# This program illustrates the basic use of the SimpleMarkup
-# class. It extracts the first comment block from the 
-# simple_markup.rb file and converts it into HTML on
-# standard output. Run it using
-#
-#  % ruby sample.rb
-#
-# You should be in the sample/ directory when you do this,
-# as it hardwires the path to the files it needs to require.
-# This isn't necessary in the code you write once you've 
-# installed the package.
-#
-# For a better way of formatting code comment blocks (and more)
-# see the rdoc package.
-#
-
-$:.unshift "../../.."
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_html'
-
-# Extract the comment block from the source file
-
-input_string = ""
-
-File.foreach("../simple_markup.rb") do |line|
-  break unless line.gsub!(/^\# ?/, '')
-  input_string << line
-end
-
-# Create a markup object
-markup = SM::SimpleMarkup.new
-
-# Attach it to an HTML formatter
-h = SM::ToHtml.new
-
-# And convert out comment block to html. Wrap it a body
-# tag pair to let browsers view it
-
-puts "<html><body>"
-puts markup.convert(input_string, h)
-puts "</body></html>"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup.rb
deleted file mode 100644
index 8193ca0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup.rb
+++ /dev/null
@@ -1,476 +0,0 @@
-# = Introduction
-#
-# SimpleMarkup parses plain text documents and attempts to decompose
-# them into their constituent parts. Some of these parts are high-level:
-# paragraphs, chunks of verbatim text, list entries and the like. Other
-# parts happen at the character level: a piece of bold text, a word in
-# code font. This markup is similar in spirit to that used on WikiWiki
-# webs, where folks create web pages using a simple set of formatting
-# rules.
-#
-# SimpleMarkup itself does no output formatting: this is left to a
-# different set of classes.
-#
-# SimpleMarkup is extendable at runtime: you can add new markup
-# elements to be recognised in the documents that SimpleMarkup parses.
-#
-# SimpleMarkup is intended to be the basis for a family of tools which
-# share the common requirement that simple, plain-text should be
-# rendered in a variety of different output formats and media. It is
-# envisaged that SimpleMarkup could be the basis for formating RDoc
-# style comment blocks, Wiki entries, and online FAQs.
-#
-# = Basic Formatting
-#
-# * SimpleMarkup looks for a document's natural left margin. This is
-#   used as the initial margin for the document.
-#
-# * Consecutive lines starting at this margin are considered to be a
-#   paragraph.
-#
-# * If a paragraph starts with a "*", "-", or with "<digit>.", then it is
-#   taken to be the start of a list. The margin in increased to be the
-#   first non-space following the list start flag. Subsequent lines
-#   should be indented to this new margin until the list ends. For
-#   example:
-#
-#      * this is a list with three paragraphs in
-#        the first item. This is the first paragraph.
-#
-#        And this is the second paragraph.
-#
-#        1. This is an indented, numbered list.
-#        2. This is the second item in that list
-#
-#        This is the third conventional paragraph in the
-#        first list item.
-#
-#      * This is the second item in the original list
-#
-# * You can also construct labeled lists, sometimes called description
-#   or definition lists. Do this by putting the label in square brackets
-#   and indenting the list body:
-#
-#       [cat]  a small furry mammal
-#              that seems to sleep a lot
-#
-#       [ant]  a little insect that is known
-#              to enjoy picnics
-#
-#   A minor variation on labeled lists uses two colons to separate the
-#   label from the list body:
-#
-#       cat::  a small furry mammal
-#              that seems to sleep a lot
-#
-#       ant::  a little insect that is known
-#              to enjoy picnics
-#     
-#   This latter style guarantees that the list bodies' left margins are
-#   aligned: think of them as a two column table.
-#
-# * Any line that starts to the right of the current margin is treated
-#   as verbatim text. This is useful for code listings. The example of a
-#   list above is also verbatim text.
-#
-# * A line starting with an equals sign (=) is treated as a
-#   heading. Level one headings have one equals sign, level two headings
-#   have two,and so on.
-#
-# * A line starting with three or more hyphens (at the current indent)
-#   generates a horizontal rule. THe more hyphens, the thicker the rule
-#   (within reason, and if supported by the output device)
-#
-# * You can use markup within text (except verbatim) to change the
-#   appearance of parts of that text. Out of the box, SimpleMarkup
-#   supports word-based and general markup.
-#
-#   Word-based markup uses flag characters around individual words:
-#
-#   [\*word*]  displays word in a *bold* font
-#   [\_word_]  displays word in an _emphasized_ font
-#   [\+word+]  displays word in a +code+ font
-#
-#   General markup affects text between a start delimiter and and end
-#   delimiter. Not surprisingly, these delimiters look like HTML markup.
-#
-#   [\<b>text...</b>]    displays word in a *bold* font
-#   [\<em>text...</em>]  displays word in an _emphasized_ font
-#   [\<i>text...</i>]    displays word in an _emphasized_ font
-#   [\<tt>text...</tt>]  displays word in a +code+ font
-#
-#   Unlike conventional Wiki markup, general markup can cross line
-#   boundaries. You can turn off the interpretation of markup by
-#   preceding the first character with a backslash, so \\\<b>bold
-#   text</b> and \\\*bold* produce \<b>bold text</b> and \*bold
-#   respectively.
-#
-# = Using SimpleMarkup
-#
-# For information on using SimpleMarkup programatically, 
-# see SM::SimpleMarkup.
-#
-# Author::   Dave Thomas,  dave at pragmaticprogrammer.com
-# Version::  0.0
-# License::  Ruby license
-
-
-
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/lines.rb'
-
-module SM  #:nodoc:
-
-  # == Synopsis
-  #
-  # This code converts <tt>input_string</tt>, which is in the format
-  # described in markup/simple_markup.rb, to HTML. The conversion
-  # takes place in the +convert+ method, so you can use the same
-  # SimpleMarkup object to convert multiple input strings.
-  #
-  #   require 'rdoc/markup/simple_markup'
-  #   require 'rdoc/markup/simple_markup/to_html'
-  #
-  #   p = SM::SimpleMarkup.new
-  #   h = SM::ToHtml.new
-  #
-  #   puts p.convert(input_string, h)
-  #
-  # You can extend the SimpleMarkup parser to recognise new markup
-  # sequences, and to add special processing for text that matches a
-  # regular epxression. Here we make WikiWords significant to the parser,
-  # and also make the sequences {word} and \<no>text...</no> signify
-  # strike-through text. When then subclass the HTML output class to deal
-  # with these:
-  #
-  #   require 'rdoc/markup/simple_markup'
-  #   require 'rdoc/markup/simple_markup/to_html'
-  #
-  #   class WikiHtml < SM::ToHtml
-  #     def handle_special_WIKIWORD(special)
-  #       "<font color=red>" + special.text + "</font>"
-  #     end
-  #   end
-  #
-  #   p = SM::SimpleMarkup.new
-  #   p.add_word_pair("{", "}", :STRIKE)
-  #   p.add_html("no", :STRIKE)
-  #
-  #   p.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
-  #
-  #   h = WikiHtml.new
-  #   h.add_tag(:STRIKE, "<strike>", "</strike>")
-  #
-  #   puts "<body>" + p.convert(ARGF.read, h) + "</body>"
-  #
-  # == Output Formatters
-  #
-  # _missing_
-  #
-  #
-
-  class SimpleMarkup
-
-    SPACE = ?\s
-
-    # List entries look like:
-    #  *       text
-    #  1.      text
-    #  [label] text
-    #  label:: text
-    #
-    # Flag it as a list entry, and
-    # work out the indent for subsequent lines
-
-    SIMPLE_LIST_RE = /^(
-                  (  \*          (?# bullet)
-                    |-           (?# bullet)
-                    |\d+\.       (?# numbered )
-                    |[A-Za-z]\.  (?# alphabetically numbered )
-                  )
-                  \s+
-                )\S/x
-
-    LABEL_LIST_RE = /^(
-                        (  \[.*?\]    (?# labeled  )
-                          |\S.*::     (?# note     )
-                        )(?:\s+|$)
-                      )/x
-
-
-    ##
-    # take a block of text and use various heuristics to determine
-    # it's structure (paragraphs, lists, and so on). Invoke an
-    # event handler as we identify significant chunks.
-    #
-
-    def initialize
-      @am = AttributeManager.new
-      @output = nil
-    end
-
-    ##
-    # Add to the sequences used to add formatting to an individual word 
-    # (such as *bold*). Matching entries will generate attibutes
-    # that the output formatters can recognize by their +name+
-
-    def add_word_pair(start, stop, name)
-      @am.add_word_pair(start, stop, name)
-    end
-
-    ##
-    # Add to the sequences recognized as general markup
-    #
-
-    def add_html(tag, name)
-      @am.add_html(tag, name)
-    end
-
-    ##
-    # Add to other inline sequences. For example, we could add
-    # WikiWords using something like:
-    #
-    #    parser.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
-    #
-    # Each wiki word will be presented to the output formatter 
-    # via the accept_special method
-    #
-
-    def add_special(pattern, name)
-      @am.add_special(pattern, name)
-    end
-
-
-    # We take a string, split it into lines, work out the type of
-    # each line, and from there deduce groups of lines (for example
-    # all lines in a paragraph). We then invoke the output formatter
-    # using a Visitor to display the result
-
-    def convert(str, op)
-      @lines = Lines.new(str.split(/\r?\n/).collect { |aLine| 
-                           Line.new(aLine) })
-      return "" if @lines.empty?
-      @lines.normalize
-      assign_types_to_lines
-      group = group_lines
-      # call the output formatter to handle the result
-      #      group.to_a.each {|i| p i}
-      group.accept(@am, op)
-    end
-
-
-    #######
-    private
-    #######
-
-
-    ##
-    # Look through the text at line indentation. We flag each line as being
-    # Blank, a paragraph, a list element, or verbatim text
-    #
-
-    def assign_types_to_lines(margin = 0, level = 0)
-
-      while line = @lines.next
-        if line.isBlank?
-          line.stamp(Line::BLANK, level)
-          next
-        end
-        
-        # if a line contains non-blanks before the margin, then it must belong
-        # to an outer level
-
-        text = line.text
-        
-        for i in 0...margin
-          if text[i] != SPACE
-            @lines.unget
-            return
-          end
-        end
-
-        active_line = text[margin..-1]
-
-        # Rules (horizontal lines) look like
-        #
-        #  ---   (three or more hyphens)
-        #
-        # The more hyphens, the thicker the rule
-        #
-
-        if /^(---+)\s*$/ =~ active_line
-          line.stamp(Line::RULE, level, $1.length-2)
-          next
-        end
-
-        # Then look for list entries. First the ones that have to have
-        # text following them (* xxx, - xxx, and dd. xxx)
-
-        if SIMPLE_LIST_RE =~ active_line
-
-          offset = margin + $1.length
-          prefix = $2
-          prefix_length = prefix.length
-
-          flag = case prefix
-                 when "*","-" then ListBase::BULLET
-                 when /^\d/   then ListBase::NUMBER
-                 when /^[A-Z]/ then ListBase::UPPERALPHA
-                 when /^[a-z]/ then ListBase::LOWERALPHA
-                 else raise "Invalid List Type: #{self.inspect}"
-                 end
-
-          line.stamp(Line::LIST, level+1, prefix, flag)
-          text[margin, prefix_length] = " " * prefix_length
-          assign_types_to_lines(offset, level + 1)
-          next
-        end
-
-
-        if LABEL_LIST_RE =~ active_line
-          offset = margin + $1.length
-          prefix = $2
-          prefix_length = prefix.length
-
-          next if handled_labeled_list(line, level, margin, offset, prefix)
-        end
-
-        # Headings look like
-        # = Main heading
-        # == Second level
-        # === Third
-        #
-        # Headings reset the level to 0
-
-        if active_line[0] == ?= and active_line =~ /^(=+)\s*(.*)/
-          prefix_length = $1.length
-          prefix_length = 6 if prefix_length > 6
-          line.stamp(Line::HEADING, 0, prefix_length)
-          line.strip_leading(margin + prefix_length)
-          next
-        end
-        
-        # If the character's a space, then we have verbatim text,
-        # otherwise 
-
-        if active_line[0] == SPACE
-          line.strip_leading(margin) if margin > 0
-          line.stamp(Line::VERBATIM, level)
-        else
-          line.stamp(Line::PARAGRAPH, level)
-        end
-      end
-    end
-
-    # Handle labeled list entries, We have a special case
-    # to deal with. Because the labels can be long, they force
-    # the remaining block of text over the to right:
-    #
-    # this is a long label that I wrote:: and here is the
-    #                                     block of text with
-    #                                     a silly margin
-    #
-    # So we allow the special case. If the label is followed
-    # by nothing, and if the following line is indented, then
-    # we take the indent of that line as the new margin
-    #
-    # this is a long label that I wrote::
-    #     here is a more reasonably indented block which
-    #     will ab attached to the label.
-    #
-    
-    def handled_labeled_list(line, level, margin, offset, prefix)
-      prefix_length = prefix.length
-      text = line.text
-      flag = nil
-      case prefix
-      when /^\[/
-        flag = ListBase::LABELED
-        prefix = prefix[1, prefix.length-2]
-      when /:$/
-        flag = ListBase::NOTE
-        prefix.chop!
-      else raise "Invalid List Type: #{self.inspect}"
-      end
-      
-      # body is on the next line
-      
-      if text.length <= offset
-        original_line = line
-        line = @lines.next
-        return(false) unless line
-        text = line.text
-        
-        for i in 0..margin
-          if text[i] != SPACE
-            @lines.unget
-            return false
-          end
-        end
-        i = margin
-        i += 1 while text[i] == SPACE
-        if i >= text.length
-          @lines.unget
-          return false
-        else
-          offset = i
-          prefix_length = 0
-          @lines.delete(original_line)
-        end
-      end
-      
-      line.stamp(Line::LIST, level+1, prefix, flag)
-      text[margin, prefix_length] = " " * prefix_length
-      assign_types_to_lines(offset, level + 1)
-      return true
-    end
-
-    # Return a block consisting of fragments which are
-    # paragraphs, list entries or verbatim text. We merge consecutive
-    # lines of the same type and level together. We are also slightly
-    # tricky with lists: the lines following a list introduction
-    # look like paragraph lines at the next level, and we remap them
-    # into list entries instead
-
-    def group_lines
-      @lines.rewind
-
-      inList = false
-      wantedType = wantedLevel = nil
-
-      block = LineCollection.new
-      group = nil
-
-      while line = @lines.next
-        if line.level == wantedLevel and line.type == wantedType
-          group.add_text(line.text)
-        else
-          group = block.fragment_for(line)
-          block.add(group)
-          if line.type == Line::LIST
-            wantedType = Line::PARAGRAPH
-          else
-            wantedType = line.type
-          end
-          wantedLevel = line.type == Line::HEADING ? line.param : line.level
-        end
-      end
-
-      block.normalize
-      block
-    end
-
-    ## for debugging, we allow access to our line contents as text
-    def content
-      @lines.as_text
-    end
-    public :content
-
-    ## for debugging, return the list of line types
-    def get_line_types
-      @lines.line_types
-    end
-    public :get_line_types
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/fragments.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/fragments.rb
deleted file mode 100644
index 6ca0638..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/fragments.rb
+++ /dev/null
@@ -1,328 +0,0 @@
-require 'rdoc/markup/simple_markup/lines.rb'
-#require 'rdoc/markup/simple_markup/to_flow.rb'
-
-module SM
-
-  ##
-  # A Fragment is a chunk of text, subclassed as a paragraph, a list
-  # entry, or verbatim text
-
-  class Fragment
-    attr_reader   :level, :param, :txt
-    attr_accessor :type
-
-    def initialize(level, param, type, txt)
-      @level = level
-      @param = param
-      @type  = type
-      @txt   = ""
-      add_text(txt) if txt
-    end
-
-    def add_text(txt)
-      @txt << " " if @txt.length > 0
-      @txt << txt.tr_s("\n ", "  ").strip
-    end
-
-    def to_s
-      "L#@level: #{self.class.name.split('::')[-1]}\n#@txt"
-    end
-
-    ######
-    # This is a simple factory system that lets us associate fragement
-    # types (a string) with a subclass of fragment
-
-    TYPE_MAP = {}
-
-    def Fragment.type_name(name)
-      TYPE_MAP[name] = self
-    end
-
-    def Fragment.for(line)
-      klass =  TYPE_MAP[line.type] ||
-        raise("Unknown line type: '#{line.type.inspect}:' '#{line.text}'")
-      return klass.new(line.level, line.param, line.flag, line.text)
-    end
-  end
-
-  ##
-  # A paragraph is a fragment which gets wrapped to fit. We remove all
-  # newlines when we're created, and have them put back on output
-
-  class Paragraph < Fragment
-    type_name Line::PARAGRAPH
-  end
-
-  class BlankLine < Paragraph
-    type_name Line::BLANK
-  end
-
-  class Heading < Paragraph
-    type_name Line::HEADING
-
-    def head_level
-      @param.to_i
-    end
-  end
-
-  ##
-  # A List is a fragment with some kind of label
-  #
-
-  class ListBase < Paragraph
-    # List types
-    BULLET  = :BULLET
-    NUMBER  = :NUMBER
-    UPPERALPHA  = :UPPERALPHA
-    LOWERALPHA  = :LOWERALPHA
-    LABELED = :LABELED
-    NOTE    = :NOTE
-  end
-
-  class ListItem < ListBase
-    type_name Line::LIST
-
-    #  def label
-    #    am = AttributeManager.new(@param)
-    #    am.flow
-    #  end
-  end
-
-  class ListStart < ListBase
-    def initialize(level, param, type)
-      super(level, param, type, nil)
-    end
-  end
-
-  class ListEnd < ListBase
-    def initialize(level, type)
-      super(level, "", type, nil)
-    end
-  end
-
-  ##
-  # Verbatim code contains lines that don't get wrapped.
-
-  class Verbatim < Fragment
-    type_name  Line::VERBATIM
-
-    def add_text(txt)
-      @txt << txt.chomp << "\n"
-    end
-
-  end
-
-  ##
-  # A horizontal rule
-  class Rule < Fragment
-    type_name Line::RULE
-  end
-
-
-  # Collect groups of lines together. Each group
-  # will end up containing a flow of text
-
-  class LineCollection
-    
-    def initialize
-      @fragments = []
-    end
-
-    def add(fragment)
-      @fragments << fragment
-    end
-
-    def each(&b)
-      @fragments.each(&b)
-    end
-
-    # For testing
-    def to_a
-      @fragments.map {|fragment| fragment.to_s}
-    end
-
-    # Factory for different fragment types
-    def fragment_for(*args)
-      Fragment.for(*args)
-    end
-
-    # tidy up at the end
-    def normalize
-      change_verbatim_blank_lines
-      add_list_start_and_ends
-      add_list_breaks
-      tidy_blank_lines
-    end
-
-    def to_s
-      @fragments.join("\n----\n")
-    end
-
-    def accept(am, visitor)
-
-      visitor.start_accepting
-
-      @fragments.each do |fragment|
-        case fragment
-        when Verbatim
-          visitor.accept_verbatim(am, fragment)
-        when Rule
-          visitor.accept_rule(am, fragment)
-        when ListStart
-          visitor.accept_list_start(am, fragment)
-        when ListEnd
-          visitor.accept_list_end(am, fragment)
-        when ListItem
-          visitor.accept_list_item(am, fragment)
-        when BlankLine
-          visitor.accept_blank_line(am, fragment)
-        when Heading
-          visitor.accept_heading(am, fragment)
-        when Paragraph
-          visitor.accept_paragraph(am, fragment)
-        end
-      end
-
-      visitor.end_accepting
-    end
-    #######
-    private
-    #######
-
-    # If you have:
-    #
-    #    normal paragraph text.
-    #
-    #       this is code
-    #   
-    #       and more code
-    #
-    # You'll end up with the fragments Paragraph, BlankLine, 
-    # Verbatim, BlankLine, Verbatim, BlankLine, etc
-    #
-    # The BlankLine in the middle of the verbatim chunk needs to
-    # be changed to a real verbatim newline, and the two
-    # verbatim blocks merged
-    #
-    #    
-    def change_verbatim_blank_lines
-      frag_block = nil
-      blank_count = 0
-      @fragments.each_with_index do |frag, i|
-        if frag_block.nil?
-          frag_block = frag if Verbatim === frag
-        else
-          case frag
-          when Verbatim
-            blank_count.times { frag_block.add_text("\n") }
-            blank_count = 0
-            frag_block.add_text(frag.txt)
-            @fragments[i] = nil    # remove out current fragment
-          when BlankLine
-            if frag_block
-              blank_count += 1
-              @fragments[i] = nil
-            end
-          else
-            frag_block = nil
-            blank_count = 0
-          end
-        end
-      end
-      @fragments.compact!
-    end
-
-    # List nesting is implicit given the level of
-    # Make it explicit, just to make life a tad
-    # easier for the output processors
-
-    def add_list_start_and_ends
-      level = 0
-      res = []
-      type_stack = []
-
-      @fragments.each do |fragment|
-        # $stderr.puts "#{level} : #{fragment.class.name} : #{fragment.level}"
-        new_level = fragment.level
-        while (level < new_level)
-          level += 1
-          type = fragment.type
-          res << ListStart.new(level, fragment.param, type) if type
-          type_stack.push type
-          # $stderr.puts "Start: #{level}"
-        end
-
-        while level > new_level
-          type = type_stack.pop
-          res << ListEnd.new(level, type) if type
-          level -= 1
-          # $stderr.puts "End: #{level}, #{type}"
-        end
-
-        res << fragment
-        level = fragment.level
-      end
-      level.downto(1) do |i|
-        type = type_stack.pop
-        res << ListEnd.new(i, type) if type
-      end
-
-      @fragments = res
-    end
-
-    # now insert start/ends between list entries at the
-    # same level that have different element types
-
-    def add_list_breaks
-      res = @fragments
-
-      @fragments = []
-      list_stack = []
-
-      res.each do |fragment|
-        case fragment
-        when ListStart
-          list_stack.push fragment
-        when ListEnd
-          start = list_stack.pop
-          fragment.type = start.type
-        when ListItem
-          l = list_stack.last
-          if fragment.type != l.type
-            @fragments << ListEnd.new(l.level, l.type)
-            start = ListStart.new(l.level, fragment.param, fragment.type)
-            @fragments << start
-            list_stack.pop
-            list_stack.push start
-          end
-        else
-          ;
-        end
-        @fragments << fragment
-      end
-    end
-
-    # Finally tidy up the blank lines:
-    # * change Blank/ListEnd into ListEnd/Blank
-    # * remove blank lines at the front
-
-    def tidy_blank_lines
-      (@fragments.size - 1).times do |i|
-        if @fragments[i].kind_of?(BlankLine) and 
-            @fragments[i+1].kind_of?(ListEnd)
-          @fragments[i], @fragments[i+1] = @fragments[i+1], @fragments[i] 
-        end
-      end
-
-      # remove leading blanks
-      @fragments.each_with_index do |f, i|
-        break unless f.kind_of? BlankLine
-        @fragments[i] = nil
-      end
-
-      @fragments.compact!
-    end
-
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/inline.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/inline.rb
deleted file mode 100644
index d54fe1e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/inline.rb
+++ /dev/null
@@ -1,340 +0,0 @@
-module SM
-
-  # We manage a set of attributes. Each attribute has a symbol name
-  # and a bit value
-
-  class Attribute
-    SPECIAL = 1
-
-    @@name_to_bitmap = { :_SPECIAL_ => SPECIAL }
-    @@next_bitmap = 2
-
-    def Attribute.bitmap_for(name)
-      bitmap = @@name_to_bitmap[name]
-      if !bitmap
-        bitmap = @@next_bitmap
-        @@next_bitmap <<= 1
-        @@name_to_bitmap[name] = bitmap
-      end
-      bitmap
-    end
-
-    def Attribute.as_string(bitmap)
-      return "none" if bitmap.zero?
-      res = []
-      @@name_to_bitmap.each do |name, bit|
-        res << name if (bitmap & bit) != 0
-      end
-      res.join(",")
-    end
-
-    def Attribute.each_name_of(bitmap)
-      @@name_to_bitmap.each do |name, bit|
-        next if bit == SPECIAL
-        yield name.to_s if (bitmap & bit) != 0
-      end
-    end
-  end
-
-
-  # An AttrChanger records a change in attributes. It contains
-  # a bitmap of the attributes to turn on, and a bitmap of those to
-  # turn off
-
-  AttrChanger = Struct.new(:turn_on, :turn_off)
-  class AttrChanger
-    def to_s
-      "Attr: +#{Attribute.as_string(@turn_on)}/-#{Attribute.as_string(@turn_on)}"
-    end
-  end
-
-  # An array of attributes which parallels the characters in a string
-  class AttrSpan
-    def initialize(length)
-      @attrs = Array.new(length, 0)
-    end
-
-    def set_attrs(start, length, bits)
-      for i in start ... (start+length)
-        @attrs[i] |= bits
-      end
-    end
-
-    def [](n)
-      @attrs[n]
-    end
-  end
-
-  ##
-  # Hold details of a special sequence
-
-  class Special
-    attr_reader   :type
-    attr_accessor :text
-
-    def initialize(type, text)
-      @type, @text = type, text
-    end
-
-    def ==(o)
-      self.text == o.text && self.type == o.type
-    end
-
-    def to_s
-      "Special: type=#{type}, text=#{text.dump}"
-    end
-  end
-  
-  class AttributeManager
-
-    NULL = "\000".freeze
-
-    ##
-    # We work by substituting non-printing characters in to the
-    # text. For now I'm assuming that I can substitute
-    # a character in the range 0..8 for a 7 bit character
-    # without damaging the encoded string, but this might
-    # be optimistic
-    #
-
-    A_PROTECT  = 004
-    PROTECT_ATTR  = A_PROTECT.chr
-
-    # This maps delimiters that occur around words (such as
-    # *bold* or +tt+) where the start and end delimiters
-    # and the same. This lets us optimize the regexp
-    MATCHING_WORD_PAIRS = {}
-
-    # And this is used when the delimiters aren't the same. In this
-    # case the hash maps a pattern to the attribute character
-    WORD_PAIR_MAP = {}
-
-    # This maps HTML tags to the corresponding attribute char
-    HTML_TAGS = {}
-
-    # And this maps _special_ sequences to a name. A special sequence
-    # is something like a WikiWord
-    SPECIAL = {}
-
-    # Return an attribute object with the given turn_on
-    # and turn_off bits set
-
-    def attribute(turn_on, turn_off)
-      AttrChanger.new(turn_on, turn_off)
-    end
-
-
-    def change_attribute(current, new)
-      diff = current ^ new
-      attribute(new & diff, current & diff)
-    end
-
-    def changed_attribute_by_name(current_set, new_set)
-      current = new = 0
-      current_set.each {|name| current |= Attribute.bitmap_for(name) }
-      new_set.each {|name| new |= Attribute.bitmap_for(name) }
-      change_attribute(current, new)
-    end
-
-    def copy_string(start_pos, end_pos)
-      res = @str[start_pos...end_pos]
-      res.gsub!(/\000/, '')
-      res
-    end
-
-    # Map attributes like <b>text</b>to the sequence \001\002<char>\001\003<char>,
-    # where <char> is a per-attribute specific character
-
-    def convert_attrs(str, attrs)
-      # first do matching ones
-      tags = MATCHING_WORD_PAIRS.keys.join("")
-      re = "(^|\\W)([#{tags}])([A-Za-z_]+?)\\2(\\W|\$)"
-#      re = "(^|\\W)([#{tags}])(\\S+?)\\2(\\W|\$)"
-      1 while str.gsub!(Regexp.new(re)) {
-        attr = MATCHING_WORD_PAIRS[$2];
-        attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
-        $1 + NULL*$2.length + $3 + NULL*$2.length + $4
-      }
-
-      # then non-matching
-      unless WORD_PAIR_MAP.empty?
-        WORD_PAIR_MAP.each do |regexp, attr|
-          str.gsub!(regexp) { 
-            attrs.set_attrs($`.length + $1.length, $2.length, attr)
-            NULL*$1.length + $2 + NULL*$3.length
-          }
-        end
-      end
-    end
-
-    def convert_html(str, attrs)
-      tags = HTML_TAGS.keys.join("|")
-      re = "<(#{tags})>(.*?)</\\1>"
-      1 while str.gsub!(Regexp.new(re, Regexp::IGNORECASE)) {
-        attr = HTML_TAGS[$1.downcase]
-        html_length = $1.length + 2
-        seq = NULL * html_length
-        attrs.set_attrs($`.length + html_length, $2.length, attr)
-        seq + $2 + seq + NULL
-      }
-    end
-
-    def convert_specials(str, attrs)
-      unless SPECIAL.empty?
-        SPECIAL.each do |regexp, attr|
-          str.scan(regexp) do
-            attrs.set_attrs($`.length, $&.length, attr | Attribute::SPECIAL)
-          end
-        end
-      end
-    end
-
-    # A \ in front of a character that would normally be
-    # processed turns off processing. We do this by turning
-    # \< into <#{PROTECT}
-    
-    PROTECTABLE = [ "<" << "\\" ]  #"
-
-
-    def mask_protected_sequences
-      protect_pattern = Regexp.new("\\\\([#{Regexp.escape(PROTECTABLE.join(''))}])")
-      @str.gsub!(protect_pattern, "\\1#{PROTECT_ATTR}")
-    end
-
-    def unmask_protected_sequences
-      @str.gsub!(/(.)#{PROTECT_ATTR}/, "\\1\000")
-    end
-
-    def initialize
-      add_word_pair("*", "*", :BOLD)
-      add_word_pair("_", "_", :EM)
-      add_word_pair("+", "+", :TT)
-      
-      add_html("em", :EM)
-      add_html("i",  :EM)
-      add_html("b",  :BOLD)
-      add_html("tt",   :TT)
-      add_html("code", :TT)
-
-      add_special(/<!--(.*?)-->/, :COMMENT)
-    end
-
-    def add_word_pair(start, stop, name)
-      raise "Word flags may not start '<'" if start[0] == ?<
-      bitmap = Attribute.bitmap_for(name)
-      if start == stop
-        MATCHING_WORD_PAIRS[start] = bitmap
-      else
-        pattern = Regexp.new("(" + Regexp.escape(start) + ")" +
-#                             "([A-Za-z]+)" +
-                             "(\\S+)" +
-                             "(" + Regexp.escape(stop) +")")
-        WORD_PAIR_MAP[pattern] = bitmap
-      end
-      PROTECTABLE << start[0,1]
-      PROTECTABLE.uniq!
-    end
-
-    def add_html(tag, name)
-      HTML_TAGS[tag.downcase] = Attribute.bitmap_for(name)
-    end
-
-    def add_special(pattern, name)
-      SPECIAL[pattern] = Attribute.bitmap_for(name)
-    end
-
-    def flow(str)
-      @str = str
-
-      puts("Before flow, str='#{@str.dump}'") if $DEBUG
-      mask_protected_sequences
- 
-      @attrs = AttrSpan.new(@str.length)
-
-      puts("After protecting, str='#{@str.dump}'") if $DEBUG
-      convert_attrs(@str, @attrs)
-      convert_html(@str, @attrs)
-      convert_specials(str, @attrs)
-      unmask_protected_sequences
-      puts("After flow, str='#{@str.dump}'") if $DEBUG
-      return split_into_flow
-    end
-
-    def display_attributes
-      puts
-      puts @str.tr(NULL, "!")
-      bit = 1
-      16.times do |bno|
-        line = ""
-        @str.length.times do |i|
-          if (@attrs[i] & bit) == 0
-            line << " "
-          else
-            if bno.zero?
-              line << "S"
-            else
-              line << ("%d" % (bno+1))
-            end
-          end
-        end
-        puts(line) unless line =~ /^ *$/
-        bit <<= 1
-      end
-    end
-
-    def split_into_flow
-
-      display_attributes if $DEBUG
-
-      res = []
-      current_attr = 0
-      str = ""
-
-      
-      str_len = @str.length
-
-      # skip leading invisible text
-      i = 0
-      i += 1 while i < str_len and @str[i].zero?
-      start_pos = i
-
-      # then scan the string, chunking it on attribute changes
-      while i < str_len
-        new_attr = @attrs[i]
-        if new_attr != current_attr
-          if i > start_pos
-            res << copy_string(start_pos, i)
-            start_pos = i
-          end
-
-          res << change_attribute(current_attr, new_attr)
-          current_attr = new_attr
-
-          if (current_attr & Attribute::SPECIAL) != 0
-            i += 1 while i < str_len and (@attrs[i] & Attribute::SPECIAL) != 0
-            res << Special.new(current_attr, copy_string(start_pos, i))
-            start_pos = i
-            next
-          end
-        end
-
-        # move on, skipping any invisible characters
-        begin
-          i += 1
-        end while i < str_len and @str[i].zero?
-      end
-      
-      # tidy up trailing text
-      if start_pos < str_len
-        res << copy_string(start_pos, str_len)
-      end
-
-      # and reset to all attributes off
-      res << change_attribute(current_attr, 0) if current_attr != 0
-
-      return res
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/lines.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/lines.rb
deleted file mode 100644
index 4e294f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/lines.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-##########################################################################
-#
-# We store the lines we're working on as objects of class Line.
-# These contain the text of the line, along with a flag indicating the
-# line type, and an indentation level
-
-module SM
-
-  class Line
-    INFINITY = 9999
-
-    BLANK     = :BLANK
-    HEADING   = :HEADING
-    LIST      = :LIST
-    RULE      = :RULE
-    PARAGRAPH = :PARAGRAPH
-    VERBATIM  = :VERBATIM
-    
-    # line type
-    attr_accessor :type
-
-    # The indentation nesting level
-    attr_accessor :level
-
-    # The contents
-    attr_accessor :text
-
-    # A prefix or parameter. For LIST lines, this is
-    # the text that introduced the list item (the label)
-    attr_accessor  :param
-
-    # A flag. For list lines, this is the type of the list
-    attr_accessor :flag
-
-    # the number of leading spaces
-    attr_accessor :leading_spaces
-
-    # true if this line has been deleted from the list of lines
-    attr_accessor :deleted
-    
-
-    def initialize(text)
-      @text    = text.dup
-      @deleted = false
-
-      # expand tabs
-      1 while @text.gsub!(/\t+/) { ' ' * (8*$&.length - $`.length % 8)}  && $~ #`
-
-      # Strip trailing whitespace
-      @text.sub!(/\s+$/, '')
-
-      # and look for leading whitespace
-      if @text.length > 0
-        @text =~ /^(\s*)/
-        @leading_spaces = $1.length
-      else
-        @leading_spaces = INFINITY
-      end
-    end
-
-    # Return true if this line is blank
-    def isBlank?
-      @text.length.zero?
-    end
-
-    # stamp a line with a type, a level, a prefix, and a flag
-    def stamp(type, level, param="", flag=nil)
-      @type, @level, @param, @flag = type, level, param, flag
-    end
-
-    ##
-    # Strip off the leading margin
-    #
-
-    def strip_leading(size)
-      if @text.size > size
-        @text[0,size] = ""
-      else
-        @text = ""
-      end
-    end
-
-    def to_s
-      "#@type#@level: #@text"
-    end
-  end
-
-  ###############################################################################
-  #
-  # A container for all the lines
-  #
-
-  class Lines
-    include Enumerable
-
-    attr_reader :lines   # for debugging
-
-    def initialize(lines)
-      @lines = lines
-      rewind
-    end
-
-    def empty?
-      @lines.size.zero?
-    end
-
-    def each
-      @lines.each do |line|
-        yield line unless line.deleted
-      end
-    end
-
-#    def [](index)
-#      @lines[index]
-#    end
-
-    def rewind
-      @nextline = 0
-    end
-
-    def next
-      begin
-        res = @lines[@nextline]
-        @nextline += 1 if @nextline < @lines.size
-      end while res and res.deleted and @nextline < @lines.size
-      res
-    end
-
-    def unget
-      @nextline -= 1
-    end
-
-    def delete(a_line)
-      a_line.deleted = true
-    end
-
-    def normalize
-      margin = @lines.collect{|l| l.leading_spaces}.min
-      margin = 0 if margin == Line::INFINITY
-      @lines.each {|line| line.strip_leading(margin) } if margin > 0
-    end
-
-    def as_text
-      @lines.map {|l| l.text}.join("\n")
-    end
-
-    def line_types
-      @lines.map {|l| l.type }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb
deleted file mode 100644
index 101c9bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/preprocess.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module SM
-
-  ## 
-  # Handle common directives that can occur in a block of text:
-  #
-  # : include : filename
-  #
-
-  class PreProcess
-
-    def initialize(input_file_name, include_path)
-      @input_file_name = input_file_name
-      @include_path = include_path
-    end
-
-    # Look for common options in a chunk of text. Options that
-    # we don't handle are passed back to our caller
-    # as |directive, param| 
-
-    def handle(text)
-      text.gsub!(/^([ \t#]*):(\w+):\s*(.+)?\n/) do 
-        prefix    = $1
-        directive = $2.downcase
-        param     = $3
-
-        case directive
-        when "include"
-          filename = param.split[0]
-          include_file(filename, prefix)
-
-        else
-          yield(directive, param)
-        end
-      end
-    end
-
-    #######
-    private
-    #######
-
-    # Include a file, indenting it correctly
-
-    def include_file(name, indent)
-      if (full_name = find_include_file(name))
-        content = File.open(full_name) {|f| f.read}
-        # strip leading '#'s, but only if all lines start with them
-        if content =~ /^[^#]/
-          content.gsub(/^/, indent)
-        else
-          content.gsub(/^#?/, indent)
-        end
-      else
-        $stderr.puts "Couldn't find file to include: '#{name}'"
-        ''
-      end
-    end
-
-    # Look for the given file in the directory containing the current
-    # file, and then in each of the directories specified in the
-    # RDOC_INCLUDE path
-
-    def find_include_file(name)
-      to_search = [ File.dirname(@input_file_name) ].concat @include_path
-      to_search.each do |dir|
-        full_name = File.join(dir, name)
-        stat = File.stat(full_name) rescue next
-        return full_name if stat.readable?
-      end
-      nil
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb
deleted file mode 100644
index 048e71a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_flow.rb
+++ /dev/null
@@ -1,188 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-require 'cgi'
-
-module SM
-
-  module Flow
-    P = Struct.new(:body)
-    VERB = Struct.new(:body)
-    RULE = Struct.new(:width)
-    class LIST
-      attr_reader :type, :contents
-      def initialize(type)
-        @type = type
-        @contents = []
-      end
-      def <<(stuff)
-        @contents << stuff
-      end
-    end
-    LI = Struct.new(:label, :body)
-    H = Struct.new(:level, :text)
-  end
-
-  class ToFlow
-    LIST_TYPE_TO_HTML = {
-      SM::ListBase::BULLET     =>  [ "<ul>", "</ul>" ],
-      SM::ListBase::NUMBER     =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::UPPERALPHA =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::LOWERALPHA =>  [ "<ol>", "</ol>" ],
-      SM::ListBase::LABELED    =>  [ "<dl>", "</dl>" ],
-      SM::ListBase::NOTE       =>  [ "<table>", "</table>" ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-    end
-
-    ##
-    # Set up the standard mapping of attributes to HTML tags
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   "<tt>", "</tt>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   "<em>", "</em>"),
-      ]
-    end
-
-    ##
-    # Add a new set of HTML tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-    ##
-    # Given an HTML tag, decorate it with class information
-    # and the like if required. This is a no-op in the base
-    # class, but is overridden in HTML output classes that
-    # implement style sheets
-
-    def annotate(tag)
-      tag
-    end
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = []
-      @list_stack = []
-    end
-
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << Flow::P.new((convert_flow(am.flow(fragment.txt))))
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << Flow::VERB.new((convert_flow(am.flow(fragment.txt))))
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << Flow::RULE.new(size)
-    end
-
-    def accept_list_start(am, fragment)
-      @list_stack.push(@res)
-      list = Flow::LIST.new(fragment.type)
-      @res << list
-      @res = list
-    end
-
-    def accept_list_end(am, fragment)
-      @res = @list_stack.pop
-    end
-
-    def accept_list_item(am, fragment)
-      @res << Flow::LI.new(fragment.param, convert_flow(am.flow(fragment.txt)))
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << annotate("<p />") << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << Flow::H.new(fragment.head_level, convert_flow(am.flow(fragment.txt)))
-    end
-
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.on)
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.off)
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-      CGI.escapeHTML(item)
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_html.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_html.rb
deleted file mode 100644
index 26b5f4c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_html.rb
+++ /dev/null
@@ -1,289 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-
-require 'cgi'
-
-module SM
-
-  class ToHtml
-
-    LIST_TYPE_TO_HTML = {
-      ListBase::BULLET =>  [ "<ul>", "</ul>" ],
-      ListBase::NUMBER =>  [ "<ol>", "</ol>" ],
-      ListBase::UPPERALPHA =>  [ "<ol>", "</ol>" ],
-      ListBase::LOWERALPHA =>  [ "<ol>", "</ol>" ],
-      ListBase::LABELED => [ "<dl>", "</dl>" ],
-      ListBase::NOTE    => [ "<table>", "</table>" ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-    end
-
-    ##
-    # Set up the standard mapping of attributes to HTML tags
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   "<tt>", "</tt>"),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   "<em>", "</em>"),
-      ]
-    end
-
-    ##
-    # Add a new set of HTML tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-    ##
-    # Given an HTML tag, decorate it with class information
-    # and the like if required. This is a no-op in the base
-    # class, but is overridden in HTML output classes that
-    # implement style sheets
-
-    def annotate(tag)
-      tag
-    end
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = ""
-      @in_list_entry = []
-    end
-
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << annotate("<p>") + "\n"
-      @res << wrap(convert_flow(am.flow(fragment.txt)))
-      @res << annotate("</p>") + "\n"
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << annotate("<pre>") + "\n"
-      @res << CGI.escapeHTML(fragment.txt)
-      @res << annotate("</pre>") << "\n"
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << "<hr size=\"#{size}\"></hr>"
-    end
-
-    def accept_list_start(am, fragment)
-      @res << html_list_name(fragment.type, true) <<"\n"
-      @in_list_entry.push false
-    end
-
-    def accept_list_end(am, fragment)
-      if tag = @in_list_entry.pop
-        @res << annotate(tag) << "\n"
-      end
-      @res << html_list_name(fragment.type, false) <<"\n"
-    end
-
-    def accept_list_item(am, fragment)
-      if tag = @in_list_entry.last
-        @res << annotate(tag) << "\n"
-      end
-      @res << list_item_start(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
-      @in_list_entry[-1] = list_end_for(fragment.type)
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << annotate("<p />") << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
-    end
-
-    # This is a higher speed (if messier) version of wrap
-
-    def wrap(txt, line_len = 76)
-      res = ""
-      sp = 0
-      ep = txt.length
-      while sp < ep
-        # scan back for a space
-        p = sp + line_len - 1
-        if p >= ep
-          p = ep
-        else
-          while p > sp and txt[p] != ?\s
-            p -= 1
-          end
-          if p <= sp
-            p = sp + line_len
-            while p < ep and txt[p] != ?\s
-              p += 1
-            end
-          end
-        end
-        res << txt[sp...p] << "\n"
-        sp = p
-        sp += 1 while sp < ep and txt[sp] == ?\s
-      end
-      res
-    end
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.on)
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << annotate(tag.off)
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-      CGI.escapeHTML(item).
-      
-      
-      # convert -- to em-dash, (-- to en-dash)
-        gsub(/---?/, '—'). #gsub(/--/, '–').
-
-      # convert ... to elipsis (and make sure .... becomes .<elipsis>)
-        gsub(/\.\.\.\./, '.…').gsub(/\.\.\./, '…').
-
-      # convert single closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'}) { "#$1’" }.
-        gsub(%r{\'(?=\W|s\b)}) { "’" }.
-
-      # convert single opening quote
-        gsub(/'/, '‘').
-
-      # convert double closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'(?=\W)}) { "#$1”" }.
-
-      # convert double opening quote
-        gsub(/'/, '“').
-
-      # convert copyright
-        gsub(/\(c\)/, '©').
-
-      # convert and registered trademark
-        gsub(/\(r\)/, '®')
-
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-    def convert_heading(level, flow)
-      res =
-        annotate("<h#{level}>") + 
-        convert_flow(flow) + 
-        annotate("</h#{level}>\n")
-    end
-
-    def html_list_name(list_type, is_open_tag)
-      tags = LIST_TYPE_TO_HTML[list_type] || raise("Invalid list type: #{list_type.inspect}")
-      annotate(tags[ is_open_tag ? 0 : 1])
-    end
-
-    def list_item_start(am, fragment)
-      case fragment.type
-      when ListBase::BULLET, ListBase::NUMBER
-        annotate("<li>")
-
-      when ListBase::UPPERALPHA
-	annotate("<li type=\"A\">")
-
-      when ListBase::LOWERALPHA
-	annotate("<li type=\"a\">")
-
-      when ListBase::LABELED
-        annotate("<dt>") +
-          convert_flow(am.flow(fragment.param)) + 
-          annotate("</dt>") +
-          annotate("<dd>")
-
-      when ListBase::NOTE
-        annotate("<tr>") +
-          annotate("<td valign=\"top\">") +
-          convert_flow(am.flow(fragment.param)) + 
-          annotate("</td>") +
-          annotate("<td>")
-      else
-        raise "Invalid list type"
-      end
-    end
-
-    def list_end_for(fragment_type)
-      case fragment_type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA
-        "</li>"
-      when ListBase::LABELED
-        "</dd>"
-      when ListBase::NOTE
-        "</td></tr>"
-      else
-        raise "Invalid list type"
-      end
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb
deleted file mode 100644
index 6c16278..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/simple_markup/to_latex.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-require 'rdoc/markup/simple_markup/fragments'
-require 'rdoc/markup/simple_markup/inline'
-
-require 'cgi'
-
-module SM
-
-  # Convert SimpleMarkup to basic LaTeX report format
-
-  class ToLaTeX
-
-    BS = "\020"   # \
-    OB = "\021"   # {
-    CB = "\022"   # }
-    DL = "\023"   # Dollar
-
-    BACKSLASH   = "#{BS}symbol#{OB}92#{CB}"
-    HAT         = "#{BS}symbol#{OB}94#{CB}"
-    BACKQUOTE   = "#{BS}symbol#{OB}0#{CB}"
-    TILDE       = "#{DL}#{BS}sim#{DL}"
-    LESSTHAN    = "#{DL}<#{DL}"
-    GREATERTHAN = "#{DL}>#{DL}"
-
-    def self.l(str)
-      str.tr('\\', BS).tr('{', OB).tr('}', CB).tr('$', DL)
-    end
-
-    def l(arg)
-      SM::ToLaTeX.l(arg)
-    end
-
-    LIST_TYPE_TO_LATEX = {
-      ListBase::BULLET =>  [ l("\\begin{itemize}"), l("\\end{itemize}") ],
-      ListBase::NUMBER =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\arabic" ],
-      ListBase::UPPERALPHA =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\Alph" ],
-      ListBase::LOWERALPHA =>  [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\alph" ],
-      ListBase::LABELED => [ l("\\begin{description}"), l("\\end{description}") ],
-      ListBase::NOTE    => [
-        l("\\begin{tabularx}{\\linewidth}{@{} l X @{}}"), 
-        l("\\end{tabularx}") ],
-    }
-
-    InlineTag = Struct.new(:bit, :on, :off)
-
-    def initialize
-      init_tags
-      @list_depth = 0
-      @prev_list_types = []
-    end
-
-    ##
-    # Set up the standard mapping of attributes to LaTeX
-    #
-    def init_tags
-      @attr_tags = [
-        InlineTag.new(SM::Attribute.bitmap_for(:BOLD), l("\\textbf{"), l("}")),
-        InlineTag.new(SM::Attribute.bitmap_for(:TT),   l("\\texttt{"), l("}")),
-        InlineTag.new(SM::Attribute.bitmap_for(:EM),   l("\\emph{"), l("}")),
-      ]
-    end
-
-    ##
-    # Escape a LaTeX string
-    def escape(str)
-# $stderr.print "FE: ", str
-      s = str.
-#        sub(/\s+$/, '').
-        gsub(/([_\${}&%#])/, "#{BS}\\1").
-        gsub(/\\/, BACKSLASH).
-        gsub(/\^/, HAT).
-        gsub(/~/,  TILDE).
-        gsub(/</,  LESSTHAN).
-        gsub(/>/,  GREATERTHAN).
-        gsub(/,,/, ",{},").
-        gsub(/\`/,  BACKQUOTE)
-# $stderr.print "-> ", s, "\n"
-      s
-    end
-
-    ##
-    # Add a new set of LaTeX tags for an attribute. We allow
-    # separate start and end tags for flexibility
-    #
-    def add_tag(name, start, stop)
-      @attr_tags << InlineTag.new(SM::Attribute.bitmap_for(name), start, stop)
-    end
-
-
-    ## 
-    # Here's the client side of the visitor pattern
-
-    def start_accepting
-      @res = ""
-      @in_list_entry = []
-    end
-
-    def end_accepting
-      @res.tr(BS, '\\').tr(OB, '{').tr(CB, '}').tr(DL, '$')
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt)))
-      @res << "\n"
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << "\n\\begin{code}\n"
-      @res << fragment.txt.sub(/[\n\s]+\Z/, '')
-      @res << "\n\\end{code}\n\n"
-    end
-
-    def accept_rule(am, fragment)
-      size = fragment.param
-      size = 10 if size > 10
-      @res << "\n\n\\rule{\\linewidth}{#{size}pt}\n\n"
-    end
-
-    def accept_list_start(am, fragment)
-      @res << list_name(fragment.type, true) <<"\n"
-      @in_list_entry.push false
-    end
-
-    def accept_list_end(am, fragment)
-      if tag = @in_list_entry.pop
-        @res << tag << "\n"
-      end
-      @res << list_name(fragment.type, false) <<"\n"
-    end
-
-    def accept_list_item(am, fragment)
-      if tag = @in_list_entry.last
-        @res << tag << "\n"
-      end
-      @res << list_item_start(am, fragment)
-      @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
-      @in_list_entry[-1] = list_end_for(fragment.type)
-    end
-
-    def accept_blank_line(am, fragment)
-      # @res << "\n"
-    end
-
-    def accept_heading(am, fragment)
-      @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
-    end
-
-    # This is a higher speed (if messier) version of wrap
-
-    def wrap(txt, line_len = 76)
-      res = ""
-      sp = 0
-      ep = txt.length
-      while sp < ep
-        # scan back for a space
-        p = sp + line_len - 1
-        if p >= ep
-          p = ep
-        else
-          while p > sp and txt[p] != ?\s
-            p -= 1
-          end
-          if p <= sp
-            p = sp + line_len
-            while p < ep and txt[p] != ?\s
-              p += 1
-            end
-          end
-        end
-        res << txt[sp...p] << "\n"
-        sp = p
-        sp += 1 while sp < ep and txt[sp] == ?\s
-      end
-      res
-    end
-
-    #######################################################################
-
-    private
-
-    #######################################################################
-
-    def on_tags(res, item)
-      attr_mask = item.turn_on
-      return if attr_mask.zero?
-
-      @attr_tags.each do |tag|
-        if attr_mask & tag.bit != 0
-          res << tag.on
-        end
-      end
-    end
-
-    def off_tags(res, item)
-      attr_mask = item.turn_off
-      return if attr_mask.zero?
-
-      @attr_tags.reverse_each do |tag|
-        if attr_mask & tag.bit != 0
-          res << tag.off
-        end
-      end
-    end
-
-    def convert_flow(flow)
-      res = ""
-      flow.each do |item|
-        case item
-        when String
-#          $stderr.puts "Converting '#{item}'"
-          res << convert_string(item)
-        when AttrChanger
-          off_tags(res, item)
-          on_tags(res,  item)
-        when Special
-          res << convert_special(item)
-        else
-          raise "Unknown flow element: #{item.inspect}"
-        end
-      end
-      res
-    end
-
-    # some of these patterns are taken from SmartyPants...
-
-    def convert_string(item)
-
-      escape(item).
-      
-      
-      # convert ... to elipsis (and make sure .... becomes .<elipsis>)
-        gsub(/\.\.\.\./, '.\ldots{}').gsub(/\.\.\./, '\ldots{}').
-
-      # convert single closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\'}) { "#$1'" }.
-        gsub(%r{\'(?=\W|s\b)}) { "'" }.
-
-      # convert single opening quote
-        gsub(/'/, '`').
-
-      # convert double closing quote
-        gsub(%r{([^ \t\r\n\[\{\(])\"(?=\W)}) { "#$1''" }.
-
-      # convert double opening quote
-        gsub(/"/, "``").
-
-      # convert copyright
-        gsub(/\(c\)/, '\copyright{}')
-
-    end
-
-    def convert_special(special)
-      handled = false
-      Attribute.each_name_of(special.type) do |name|
-        method_name = "handle_special_#{name}"
-        if self.respond_to? method_name
-          special.text = send(method_name, special)
-          handled = true
-        end
-      end
-      raise "Unhandled special: #{special}" unless handled
-      special.text
-    end
-
-    def convert_heading(level, flow)
-      res =
-        case level
-        when 1 then "\\chapter{"
-        when 2 then "\\section{"
-        when 3 then "\\subsection{"
-        when 4 then "\\subsubsection{"
-        else  "\\paragraph{"
-        end +
-        convert_flow(flow) + 
-        "}\n"
-    end
-
-    def list_name(list_type, is_open_tag)
-      tags = LIST_TYPE_TO_LATEX[list_type] || raise("Invalid list type: #{list_type.inspect}")
-      if tags[2] # enumerate
-        if is_open_tag
-          @list_depth += 1
-          if @prev_list_types[@list_depth] != tags[2]
-            case @list_depth
-            when 1
-              roman = "i"
-            when 2
-              roman = "ii"
-            when 3
-              roman = "iii"
-            when 4
-              roman = "iv"
-            else
-              raise("Too deep list: level #{@list_depth}")
-            end
-            @prev_list_types[@list_depth] = tags[2]
-            return l("\\renewcommand{\\labelenum#{roman}}{#{tags[2]}{enum#{roman}}}") + "\n" + tags[0]
-          end
-        else
-          @list_depth -= 1
-        end
-      end
-      tags[ is_open_tag ? 0 : 1]
-    end
-
-    def list_item_start(am, fragment)
-      case fragment.type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA
-        "\\item "
-
-      when ListBase::LABELED
-        "\\item[" + convert_flow(am.flow(fragment.param)) + "] "
-
-      when ListBase::NOTE
-          convert_flow(am.flow(fragment.param)) + " & "
-      else
-        raise "Invalid list type"
-      end
-    end
-
-    def list_end_for(fragment_type)
-      case fragment_type
-      when ListBase::BULLET, ListBase::NUMBER, ListBase::UPPERALPHA, ListBase::LOWERALPHA, ListBase::LABELED
-        ""
-      when ListBase::NOTE
-        "\\\\\n"
-      else
-        raise "Invalid list type"
-      end
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/AllTests.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/AllTests.rb
deleted file mode 100644
index b9c8c9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/AllTests.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'TestParse.rb'
-require 'TestInline.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestInline.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestInline.rb
deleted file mode 100644
index a067d4c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestInline.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require "test/unit"
-
-$:.unshift "../../.."
-
-require "rdoc/markup/simple_markup/inline"
-
-class TestInline < Test::Unit::TestCase
-
-
-  def setup
-    @am = SM::AttributeManager.new
-
-    @bold_on  = @am.changed_attribute_by_name([], [:BOLD])
-    @bold_off = @am.changed_attribute_by_name([:BOLD], [])
-    
-    @tt_on    = @am.changed_attribute_by_name([], [:TT])
-    @tt_off   = @am.changed_attribute_by_name([:TT], [])
-    
-    @em_on    = @am.changed_attribute_by_name([], [:EM])
-    @em_off   = @am.changed_attribute_by_name([:EM], [])
-    
-    @bold_em_on   = @am.changed_attribute_by_name([], [:BOLD] | [:EM])
-    @bold_em_off  = @am.changed_attribute_by_name([:BOLD] | [:EM], [])
-    
-    @em_then_bold = @am.changed_attribute_by_name([:EM], [:EM] | [:BOLD])
-    
-    @em_to_bold   = @am.changed_attribute_by_name([:EM], [:BOLD])
-    
-    @am.add_word_pair("{", "}", :WOMBAT)
-    @wombat_on    = @am.changed_attribute_by_name([], [:WOMBAT])
-    @wombat_off   = @am.changed_attribute_by_name([:WOMBAT], [])
-  end
-
-  def crossref(text)
-    [ @am.changed_attribute_by_name([], [:CROSSREF] | [:_SPECIAL_]),
-      SM::Special.new(33, text),
-      @am.changed_attribute_by_name([:CROSSREF] | [:_SPECIAL_], [])
-    ]
-  end
-
-  def test_special
-    # class names, variable names, file names, or instance variables
-    @am.add_special(/(
-                       \b([A-Z]\w+(::\w+)*)
-                       | \#\w+[!?=]?
-                       | \b\w+([_\/\.]+\w+)+[!?=]?
-                      )/x, 
-                    :CROSSREF)
-    
-    assert_equal(["cat"], @am.flow("cat"))
-
-    assert_equal(["cat ", crossref("#fred"), " dog"].flatten,
-                  @am.flow("cat #fred dog"))
-
-    assert_equal([crossref("#fred"), " dog"].flatten,
-                  @am.flow("#fred dog"))
-
-    assert_equal(["cat ", crossref("#fred")].flatten, @am.flow("cat #fred"))
-  end
-
-  def test_basic
-    assert_equal(["cat"], @am.flow("cat"))
-
-    assert_equal(["cat ", @bold_on, "and", @bold_off, " dog"],
-                  @am.flow("cat *and* dog"))
-
-    assert_equal(["cat ", @bold_on, "AND", @bold_off, " dog"],
-                  @am.flow("cat *AND* dog"))
-
-    assert_equal(["cat ", @em_on, "And", @em_off, " dog"],
-                  @am.flow("cat _And_ dog"))
-
-    assert_equal(["cat *and dog*"], @am.flow("cat *and dog*"))
-
-    assert_equal(["*cat and* dog"], @am.flow("*cat and* dog"))
-
-    assert_equal(["cat *and ", @bold_on, "dog", @bold_off],
-                  @am.flow("cat *and *dog*"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " dog"],
-                  @am.flow("cat _and_ dog"))
-
-    assert_equal(["cat_and_dog"],
-                  @am.flow("cat_and_dog"))
-
-    assert_equal(["cat ", @tt_on, "and", @tt_off, " dog"],
-                  @am.flow("cat +and+ dog"))
-
-    assert_equal(["cat ", @bold_on, "a_b_c", @bold_off, " dog"],
-                  @am.flow("cat *a_b_c* dog"))
-
-    assert_equal(["cat __ dog"],
-                  @am.flow("cat __ dog"))
-
-    assert_equal(["cat ", @em_on, "_", @em_off, " dog"],
-                  @am.flow("cat ___ dog"))
-
-  end
-
-  def test_combined
-    assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off],
-                  @am.flow("cat _and_ *dog*"))
-
-    assert_equal(["cat ", @em_on, "a__nd", @em_off, " ", @bold_on, "dog", @bold_off], 
-                  @am.flow("cat _a__nd_ *dog*"))
-  end
-
-  def test_html_like
-    assert_equal(["cat ", @tt_on, "dog", @tt_off], @am.flow("cat <tt>dog</Tt>"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off], 
-                  @am.flow("cat <i>and</i> <B>dog</b>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off], 
-                  @am.flow("cat <i>and <B>dog</B></I>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("cat <i>and </i><b>dog</b>"))
-    
-    assert_equal(["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("cat <i>and <b></i>dog</b>"))
-    
-    assert_equal([@tt_on, "cat", @tt_off, " ", @em_on, "and ", @em_to_bold, "dog", @bold_off], 
-                  @am.flow("<tt>cat</tt> <i>and <b></i>dog</b>"))
-
-    assert_equal(["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off], 
-                  @am.flow("cat <i>and <b>dog</b></i>"))
-    
-    assert_equal(["cat ", @bold_em_on, "and", @bold_em_off, " dog"], 
-                  @am.flow("cat <i><b>and</b></i> dog"))
-    
-    
-  end
-
-  def test_protect
-    assert_equal(['cat \\ dog'], @am.flow('cat \\ dog'))
-
-    assert_equal(["cat <tt>dog</Tt>"], @am.flow("cat \\<tt>dog</Tt>"))
-
-    assert_equal(["cat ", @em_on, "and", @em_off, " <B>dog</b>"], 
-                  @am.flow("cat <i>and</i> \\<B>dog</b>"))
-    
-    assert_equal(["*word* or <b>text</b>"], @am.flow("\\*word* or \\<b>text</b>"))
-
-    assert_equal(["_cat_", @em_on, "dog", @em_off], 
-                  @am.flow("\\_cat_<i>dog</i>"))
-  end
-
-  def test_adding
-    assert_equal(["cat ", @wombat_on, "and", @wombat_off, " dog" ],
-                  @am.flow("cat {and} dog"))
-#    assert_equal(["cat {and} dog" ], @am.flow("cat \\{and} dog"))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestParse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestParse.rb
deleted file mode 100644
index 3ec541c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/markup/test/TestParse.rb
+++ /dev/null
@@ -1,503 +0,0 @@
-require 'test/unit'
-
-$:.unshift "../../.."
-
-require 'rdoc/markup/simple_markup'
-
-include SM
-
-class TestParse < Test::Unit::TestCase
-
-  class MockOutput
-    def start_accepting
-      @res = []
-      end
-    
-    def end_accepting
-      @res
-    end
-
-    def accept_paragraph(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_verbatim(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_start(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_end(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_list_item(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_blank_line(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_heading(am, fragment)
-      @res << fragment.to_s
-    end
-
-    def accept_rule(am, fragment)
-      @res << fragment.to_s
-    end
-
-  end
-
-  def basic_conv(str)
-    sm = SimpleMarkup.new
-    mock = MockOutput.new
-    sm.convert(str, mock)
-    sm.content
-  end
-
-  def line_types(str, expected)
-    p = SimpleMarkup.new
-    mock = MockOutput.new
-    p.convert(str, mock)
-    assert_equal(expected, p.get_line_types.map{|type| type.to_s[0,1]}.join(''))
-  end
-
-  def line_groups(str, expected)
-    p = SimpleMarkup.new
-    mock = MockOutput.new
-
-    block = p.convert(str, mock)
-
-    if block != expected
-      rows = (0...([expected.size, block.size].max)).collect{|i|
-        [expected[i]||"nil", block[i]||"nil"] 
-      }
-      printf "\n\n%35s %35s\n", "Expected", "Got"
-      rows.each {|e,g| printf "%35s %35s\n", e.dump, g.dump }
-    end
-
-    assert_equal(expected, block)
-  end
-
-  def test_tabs
-    str = "hello\n  dave"
-    assert_equal(str, basic_conv(str))
-    str = "hello\n\tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n  \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n   \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n    \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n     \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n      \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n       \tdave"
-    assert_equal("hello\n        dave", basic_conv(str))
-    str = "hello\n        \tdave"
-    assert_equal("hello\n                dave", basic_conv(str))
-    str = ".\t\t."
-    assert_equal(".               .", basic_conv(str))
-  end
-
-  def test_whitespace
-    assert_equal("hello", basic_conv("hello"))
-    assert_equal("hello", basic_conv(" hello "))
-    assert_equal("hello", basic_conv(" \t \t hello\t\t"))
-
-    assert_equal("1\n 2\n  3", basic_conv("1\n 2\n  3"))
-    assert_equal("1\n 2\n  3", basic_conv("  1\n   2\n    3"))
-
-    assert_equal("1\n 2\n  3\n1\n 2", basic_conv("1\n 2\n  3\n1\n 2"))
-    assert_equal("1\n 2\n  3\n1\n 2", basic_conv("  1\n   2\n    3\n  1\n   2"))
-
-    assert_equal("1\n 2\n\n  3", basic_conv("  1\n   2\n\n    3"))
-  end
-
-  def test_types
-    str = "now is the time"
-    line_types(str, 'P')
-
-    str = "now is the time\nfor all good men"
-    line_types(str, 'PP')
-
-    str = "now is the time\n  code\nfor all good men"
-    line_types(str, 'PVP')
-
-    str = "now is the time\n  code\n more code\nfor all good men"
-    line_types(str, 'PVVP')
-
-    str = "now is\n---\nthe time"
-    line_types(str, 'PRP')
-
-    str = %{\
-       now is
-       * l1
-       * l2
-       the time}
-    line_types(str, 'PLLP')
-
-    str = %{\
-       now is
-       * l1
-         l1+
-       * l2
-       the time}
-    line_types(str, 'PLPLP')
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-       * l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-           text
-             code
-             code
-
-           text
-       * l2
-       the time}
-    line_types(str, 'PLLPVVBPLP')
-
-    str = %{\
-       now is
-       1. l1
-          * l1.1
-       2. l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       [cat] l1
-             * l1.1
-       [dog] l2
-       the time}
-    line_types(str, 'PLLLP')
-
-    str = %{\
-       now is
-       [cat] l1
-             continuation
-       [dog] l2
-       the time}
-    line_types(str, 'PLPLP')
-  end
-
-  def test_groups
-    str = "now is the time"
-    line_groups(str, ["L0: Paragraph\nnow is the time"] )
-
-    str = "now is the time\nfor all good men"
-    line_groups(str, ["L0: Paragraph\nnow is the time for all good men"] )
-
-    str = %{\
-      now is the time
-        code _line_ here
-      for all good men}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is the time",
-                  "L0: Verbatim\n  code _line_ here\n",
-                  "L0: Paragraph\nfor all good men"
-                ] )
-
-    str = "now is the time\n  code\n more code\nfor all good men"
-    line_groups(str,
-                [ "L0: Paragraph\nnow is the time",
-                  "L0: Verbatim\n  code\n more code\n",
-                  "L0: Paragraph\nfor all good men"
-                ] )
-
-    str = %{\
-       now is
-       * l1
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       * l1
-         l1+
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1 l1+",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-       * l1
-         * l1.1
-           text
-             code
-               code
-
-           text
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1 text",
-                  "L2: Verbatim\n  code\n    code\n",
-                  "L2: Paragraph\ntext",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-       1. l1
-          * l1.1
-       2. l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       [cat] l1
-             * l1.1
-       [dog] l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L2: ListStart\n",
-                  "L2: ListItem\nl1.1",
-                  "L2: ListEnd\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    str = %{\
-       now is
-       [cat] l1
-             continuation
-       [dog] l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1 continuation",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-    
-  end
-
-  def test_verbatim_merge
-    str = %{\
-       now is
-          code
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-          code1
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    str = %{\
-       now is
-          code
-
-          code1
-
-          code2
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n\n   code2\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-    # Folds multiple blank lines
-    str = %{\
-       now is
-          code
-
-
-          code1
-
-       the time}
-
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L0: Verbatim\n   code\n\n   code1\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-
-  end
- 
-  def test_list_split
-    str = %{\
-       now is
-       * l1
-       1. n1
-       2. n2
-       * l2
-       the time}
-    line_groups(str,
-                [ "L0: Paragraph\nnow is",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl1",
-                  "L1: ListEnd\n",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nn1",
-                  "L1: ListItem\nn2",
-                  "L1: ListEnd\n",
-                  "L1: ListStart\n",
-                  "L1: ListItem\nl2",
-                  "L1: ListEnd\n",
-                  "L0: Paragraph\nthe time"
-                ])
-
-  end
-
-
-  def test_headings
-    str = "= heading one"
-    line_groups(str, 
-                [ "L0: Heading\nheading one"
-                ])
-
-    str = "=== heading three"
-    line_groups(str, 
-                [ "L0: Heading\nheading three"
-                ])
-
-    str = "text\n   === heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   === heading three\n"
-                ])
-
-    str = "text\n   code\n   === heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   code\n   === heading three\n"
-                ])
-
-    str = "text\n   code\n=== heading three"
-    line_groups(str, 
-                [ "L0: Paragraph\ntext",
-                  "L0: Verbatim\n   code\n",
-                  "L0: Heading\nheading three"
-                ])
-
-  end
-
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/options.rb
deleted file mode 100644
index bea7e6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/options.rb
+++ /dev/null
@@ -1,586 +0,0 @@
-# We handle the parsing of options, and subsequently as a singleton
-# object to be queried for option values
-
-require "rdoc/ri/ri_paths"
-
-class Options
-
-  require 'singleton'
-  require 'getoptlong'
-
-  include Singleton
-
-  # files matching this pattern will be excluded
-  attr_accessor :exclude
-
-  # the name of the output directory
-  attr_accessor :op_dir
-  
-  # the name to use for the output
-  attr_reader :op_name
-
-  # include private and protected methods in the
-  # output
-  attr_accessor :show_all
-  
-  # name of the file, class or module to display in
-  # the initial index page (if not specified
-  # the first file we encounter is used)
-  attr_accessor :main_page
-
-  # merge into classes of the name name when generating ri
-  attr_reader :merge
-
-  # Don't display progress as we process the files
-  attr_reader :quiet
-
-  # description of the output generator (set with the <tt>-fmt</tt>
-  # option
-  attr_accessor :generator
-
-  # and the list of files to be processed
-  attr_reader :files
-
-  # array of directories to search for files to satisfy an :include:
-  attr_reader :rdoc_include
-
-  # title to be used out the output
-  #attr_writer :title
-
-  # template to be used when generating output
-  attr_reader :template
-
-  # should diagrams be drawn
-  attr_reader :diagram
-
-  # should we draw fileboxes in diagrams
-  attr_reader :fileboxes
-
-  # include the '#' at the front of hyperlinked instance method names
-  attr_reader :show_hash
-
-  # image format for diagrams
-  attr_reader :image_format
-
-  # character-set
-  attr_reader :charset
-
-  # should source code be included inline, or displayed in a popup
-  attr_reader :inline_source
-
-  # should the output be placed into a single file
-  attr_reader :all_one_file
-
-  # the number of columns in a tab
-  attr_reader :tab_width
-
-  # include line numbers in the source listings
-  attr_reader :include_line_numbers
-
-  # pattern for additional attr_... style methods
-  attr_reader :extra_accessors
-  attr_reader :extra_accessor_flags
-
-  # URL of stylesheet
-  attr_reader :css
-
-  # URL of web cvs frontend
-  attr_reader :webcvs
-
-  # Are we promiscuous about showing module contents across
-  # multiple files
-  attr_reader :promiscuous
-
-  # scan newer sources than the flag file if true.
-  attr_reader :force_update
-
-  module OptionList
-
-    OPTION_LIST = [
-      [ "--accessor",      "-A",   "accessorname[,..]",
-        "comma separated list of additional class methods\n" +
-        "that should be treated like 'attr_reader' and\n" +
-        "friends. Option may be repeated. Each accessorname\n" +
-        "may have '=text' appended, in which case that text\n" +
-        "appears where the r/w/rw appears for normal accessors."],
-                                                                   
-      [ "--all",           "-a",   nil,
-        "include all methods (not just public)\nin the output" ],
-
-      [ "--charset",       "-c",   "charset",
-        "specifies HTML character-set" ],
-
-      [ "--debug",         "-D",   nil,
-        "displays lots on internal stuff" ],
-
-      [ "--diagram",       "-d",   nil,
-        "Generate diagrams showing modules and classes.\n" +
-        "You need dot V1.8.6 or later to use the --diagram\n" +
-        "option correctly. Dot is available from\n"+
-        "http://www.research.att.com/sw/tools/graphviz/" ],
-
-      [ "--exclude",       "-x",   "pattern",
-        "do not process files or directories matching\n" +
-        "pattern. Files given explicitly on the command\n" +
-        "line will never be excluded." ],
-
-      [ "--extension",     "-E",   "new=old",
-        "Treat files ending with .new as if they ended with\n" +
-        ".old. Using '-E cgi=rb' will cause xxx.cgi to be\n" +
-        "parsed as a Ruby file"],
-
-      [ "--fileboxes",     "-F",   nil,
-        "classes are put in boxes which represents\n" +
-        "files, where these classes reside. Classes\n" +
-        "shared between more than one file are\n" +
-        "shown with list of files that sharing them.\n" +
-        "Silently discarded if --diagram is not given\n" +
-        "Experimental." ],
-
-      [ "--force-update",  "-U",   nil,
-        "forces to scan all sources even if newer than\n" +
-        "the flag file." ],
-
-      [ "--fmt",           "-f",   "format name",
-        "set the output formatter (see below)" ],
-
-      [ "--help",          "-h",   nil,
-        "you're looking at it" ],
-
-      [ "--help-output",   "-O",   nil,
-        "explain the various output options" ],
-
-      [ "--image-format",  "-I",   "gif/png/jpg/jpeg",
-        "Sets output image format for diagrams. Can\n" +
-        "be png, gif, jpeg, jpg. If this option is\n" +
-        "omitted, png is used. Requires --diagram." ],
-
-      [ "--include",       "-i",   "dir[,dir...]",
-        "set (or add to) the list of directories\n" +
-        "to be searched when satisfying :include:\n" +
-        "requests. Can be used more than once." ],
-
-      [ "--inline-source", "-S",   nil,
-        "Show method source code inline, rather\n" +
-        "than via a popup link" ],
-
-      [ "--line-numbers", "-N", nil,
-        "Include line numbers in the source code" ],
-
-      [ "--main",          "-m",   "name",
-        "'name' will be the initial page displayed" ],
-
-      [ "--merge",         "-M",   nil,
-        "when creating ri output, merge processed classes\n" +
-        "into previously documented classes of the name name"],
-
-      [ "--one-file",      "-1",   nil,
-        "put all the output into a single file" ],
-
-      [ "--op",            "-o",   "dir",
-        "set the output directory" ],
-
-      [ "--opname",       "-n",    "name",
-        "Set the 'name' of the output. Has no\n" +
-        "effect for HTML." ],
-
-      [ "--promiscuous",   "-p",   nil,
-        "When documenting a file that contains a module\n" +
-        "or class also defined in other files, show\n" +
-        "all stuff for that module/class in each files\n" +
-        "page. By default, only show stuff defined in\n" +
-        "that particular file." ],
-
-      [ "--quiet",         "-q",   nil,
-        "don't show progress as we parse" ],
-
-      [ "--ri",            "-r",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in the '.rdoc' directory under your home\n"+
-       "directory unless overridden by a subsequent\n" +
-       "--op parameter, so no special privileges are needed." ],
-
-      [ "--ri-site",       "-R",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in a site-wide directory, making them accessible\n"+
-       "to others, so special privileges are needed." ],
-
-      [ "--ri-system",     "-Y",   nil,
-       "generate output for use by 'ri.' The files are\n" +
-       "stored in a system-level directory, making them accessible\n"+
-       "to others, so special privileges are needed. This option\n"+
-       "is intended to be used during Ruby installations" ],
-
-      [ "--show-hash",     "-H",   nil,
-        "A name of the form #name in a comment\n" +
-        "is a possible hyperlink to an instance\n" +
-        "method name. When displayed, the '#' is\n" +
-        "removed unless this option is specified" ],
-
-      [ "--style",         "-s",   "stylesheet url",
-        "specifies the URL of a separate stylesheet." ],
-
-      [ "--tab-width",     "-w",   "n",
-        "Set the width of tab characters (default 8)"],
-
-      [ "--template",      "-T",   "template name",
-        "Set the template used when generating output" ],
-
-      [ "--title",         "-t",   "text",
-        "Set 'txt' as the title for the output" ],
-
-      [ "--version",       "-v",   nil,
-        "display  RDoc's version" ],
-
-      [ "--webcvs",        "-W",   "url",
-        "Specify a URL for linking to a web frontend\n" +
-        "to CVS. If the URL contains a '\%s', the\n" +
-        "name of the current file will be substituted;\n" +
-        "if the URL doesn't contain a '\%s', the\n" +
-        "filename will be appended to it." ],
-    ]
-
-    def OptionList.options
-      OPTION_LIST.map do |long, short, arg,|
-        [ long, 
-          short, 
-          arg ? GetoptLong::REQUIRED_ARGUMENT : GetoptLong::NO_ARGUMENT 
-        ]
-      end
-    end
-
-
-    def OptionList.strip_output(text)
-      text =~ /^\s+/
-      leading_spaces = $&
-      text.gsub!(/^#{leading_spaces}/, '')
-      $stdout.puts text
-    end
-
-
-    # Show an error and exit
-
-    def OptionList.error(msg)
-      $stderr.puts
-      $stderr.puts msg
-      $stderr.puts "\nFor help on options, try 'rdoc --help'\n\n"
-      exit 1
-    end
-
-    # Show usage and exit
-    
-    def OptionList.usage(generator_names)
-      
-      puts
-      puts(VERSION_STRING)
-      puts
-
-      name = File.basename($0)
-      OptionList.strip_output(<<-EOT)
-          Usage:
-
-            #{name} [options]  [names...]
-
-          Files are parsed, and the information they contain
-          collected, before any output is produced. This allows cross
-          references between all files to be resolved. If a name is a
-          directory, it is traversed. If no names are specified, all
-          Ruby files in the current directory (and subdirectories) are
-          processed.
-
-          Options:
-
-      EOT
-
-      OPTION_LIST.each do |long, short, arg, desc|
-        opt = sprintf("%20s", "#{long}, #{short}")
-        oparg = sprintf("%-7s", arg)
-        print "#{opt} #{oparg}"
-        desc = desc.split("\n")
-        if arg.nil? || arg.length < 7
-          puts desc.shift
-        else
-          puts
-        end
-        desc.each do |line|
-          puts(" "*28 + line)
-        end
-        puts
-      end
-
-      puts "\nAvailable output formatters: " +
-        generator_names.sort.join(', ') + "\n\n"
-
-      puts "For information on where the output goes, use\n\n"
-      puts "   rdoc --help-output\n\n"
-
-      exit 0
-    end
-
-    def OptionList.help_output
-      OptionList.strip_output(<<-EOT)
-      How RDoc generates output depends on the output formatter being
-      used, and on the options you give.
-
-      - HTML output is normally produced into a number of separate files
-        (one per class, module, and file, along with various indices). 
-        These files will appear in the directory given by the --op
-        option (doc/ by default).
-
-      - XML output by default is written to standard output. If a
-        --opname option is given, the output will instead be written
-        to a file with that name in the output directory.
-
-      - .chm files (Windows help files) are written in the --op directory.
-        If an --opname parameter is present, that name is used, otherwise
-        the file will be called rdoc.chm.
-
-      For information on other RDoc options, use "rdoc --help".
-      EOT
-      exit 0
-    end
-  end
-
-  # Parse command line options. We're passed a hash containing
-  # output generators, keyed by the generator name
-
-  def parse(argv, generators)
-    old_argv = ARGV.dup
-    begin
-      ARGV.replace(argv)
-      @op_dir = "doc"
-      @op_name = nil
-      @show_all = false
-      @main_page = nil
-      @marge     = false
-      @exclude   = []
-      @quiet = false
-      @generator_name = 'html'
-      @generator = generators[@generator_name]
-      @rdoc_include = []
-      @title = nil
-      @template = nil
-      @diagram = false
-      @fileboxes = false
-      @show_hash = false
-      @image_format = 'png'
-      @inline_source = false
-      @all_one_file  = false
-      @tab_width = 8
-      @include_line_numbers = false
-      @extra_accessor_flags = {}
-      @promiscuous = false
-      @force_update = false
-
-      @css = nil
-      @webcvs = nil
-
-      @charset = case $KCODE
-                 when /^S/i
-                   'Shift_JIS'
-                 when /^E/i
-                   'EUC-JP'
-                 else
-                   'iso-8859-1'
-                 end
-
-      accessors = []
-
-      go = GetoptLong.new(*OptionList.options)
-      go.quiet = true
-
-      go.each do |opt, arg|
-	case opt
-        when "--all"           then @show_all      = true
-        when "--charset"       then @charset       = arg
-        when "--debug"         then $DEBUG         = true
-        when "--exclude"       then @exclude       << Regexp.new(arg)
-        when "--inline-source" then @inline_source = true
-        when "--line-numbers"  then @include_line_numbers = true
-        when "--main"          then @main_page     = arg
-        when "--merge"         then @merge         = true
-        when "--one-file"      then @all_one_file  = @inline_source = true
-        when "--op"            then @op_dir        = arg
-        when "--opname"        then @op_name       = arg
-        when "--promiscuous"   then @promiscuous   = true
-        when "--quiet"         then @quiet         = true
-        when "--show-hash"     then @show_hash     = true
-        when "--style"         then @css           = arg
-        when "--template"      then @template      = arg
-        when "--title"         then @title         = arg
-        when "--webcvs"        then @webcvs        = arg
-
-        when "--accessor" 
-          arg.split(/,/).each do |accessor|
-            if accessor =~ /^(\w+)(=(.*))?$/
-              accessors << $1
-              @extra_accessor_flags[$1] = $3
-            end
-          end
-
-        when "--diagram"
-          check_diagram
-          @diagram = true
-
-        when "--fileboxes"
-          @fileboxes = true if @diagram
-
-	when "--fmt"
-          @generator_name = arg.downcase
-          setup_generator(generators)
-
-        when "--help"      
-          OptionList.usage(generators.keys)
-
-        when "--help-output"      
-          OptionList.help_output
-
-        when "--image-format"
-          if ['gif', 'png', 'jpeg', 'jpg'].include?(arg)
-            @image_format = arg
-          else
-            raise GetoptLong::InvalidOption.new("unknown image format: #{arg}")
-          end
-
-        when "--include"   
-          @rdoc_include.concat arg.split(/\s*,\s*/)
-
-        when "--ri", "--ri-site", "--ri-system"
-          @generator_name = "ri"
-          @op_dir = case opt
-                    when "--ri" then RI::Paths::HOMEDIR 
-                    when "--ri-site" then RI::Paths::SITEDIR
-                    when "--ri-system" then RI::Paths::SYSDIR
-                    else fail opt
-                    end
-          setup_generator(generators)
-
-        when "--tab-width"
-          begin
-            @tab_width     = Integer(arg)
-          rescue 
-            $stderr.puts "Invalid tab width: '#{arg}'"
-            exit 1
-          end
-
-        when "--extension"
-          new, old = arg.split(/=/, 2)
-          OptionList.error("Invalid parameter to '-E'") unless new && old
-          unless RDoc::ParserFactory.alias_extension(old, new)
-            OptionList.error("Unknown extension .#{old} to -E")
-          end
-
-        when "--force-update"
-          @force_update = true
-
-	when "--version"
-	  puts VERSION_STRING
-	  exit
-	end
-
-      end
-
-      @files = ARGV.dup
-
-      @rdoc_include << "." if @rdoc_include.empty?
-
-      if @exclude.empty?
-        @exclude = nil
-      else
-        @exclude = Regexp.new(@exclude.join("|"))
-      end
-
-      check_files
-
-      # If no template was specified, use the default
-      # template for the output formatter
-
-      @template ||= @generator_name
-
-      # Generate a regexp from the accessors
-      unless accessors.empty?
-        re = '^(' + accessors.map{|a| Regexp.quote(a)}.join('|') + ')$' 
-        @extra_accessors = Regexp.new(re)
-      end
-
-    rescue GetoptLong::InvalidOption, GetoptLong::MissingArgument => error
-      OptionList.error(error.message)
-
-    ensure
-      ARGV.replace(old_argv)
-    end
-  end
-
-
-  def title
-    @title ||= "RDoc Documentation"
-  end
-  
-  # Set the title, but only if not already set. This means that a title set from 
-  # the command line trumps one set in a source file
-
-  def title=(string)
-    @title ||= string
-  end
-
-
-  private
-
-  # Set up an output generator for the format in @generator_name
-  def setup_generator(generators)
-    @generator = generators[@generator_name]
-    if !@generator
-      OptionList.error("Invalid output formatter")
-    end
-    
-    if @generator_name == "xml"
-      @all_one_file = true
-      @inline_source = true
-    end
-  end
-
-  # Check that the right version of 'dot' is available.
-  # Unfortuately this doesn't work correctly under Windows NT, 
-  # so we'll bypass the test under Windows
-
-  def check_diagram
-    return if RUBY_PLATFORM =~ /win/
-
-    ok = false
-    ver = nil
-    IO.popen("dot -V 2>&1") do |io|
-      ver = io.read
-      if ver =~ /dot.+version(?:\s+gviz)?\s+(\d+)\.(\d+)/
-        ok = ($1.to_i > 1) || ($1.to_i == 1 && $2.to_i >= 8)
-      end
-    end
-    unless ok
-      if ver =~ /^dot.+version/
-        $stderr.puts "Warning: You may need dot V1.8.6 or later to use\n",
-          "the --diagram option correctly. You have:\n\n   ",
-          ver,
-          "\nDiagrams might have strange background colors.\n\n"
-      else
-        $stderr.puts "You need the 'dot' program to produce diagrams.",
-          "(see http://www.research.att.com/sw/tools/graphviz/)\n\n"
-        exit
-      end
-#      exit
-    end
-  end
-  
-  # Check that the files on the command line exist
-  
-  def check_files
-    @files.each do |f|
-      stat = File.stat f rescue error("File not found: #{f}")
-      error("File '#{f}' not readable") unless stat.readable?
-    end
-  end
-
-  def error(str)
-    $stderr.puts str
-    exit(1)
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_c.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_c.rb
deleted file mode 100644
index 25fc66a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_c.rb
+++ /dev/null
@@ -1,773 +0,0 @@
-# Classes and modules built in to the interpreter. We need
-# these to define superclasses of user objects
-
-require "rdoc/code_objects"
-require "rdoc/parsers/parserfactory"
-require "rdoc/options"
-require "rdoc/rdoc"
-
-module RDoc
-
-  ##
-  # Ruby's built-in classes.
-
-  KNOWN_CLASSES = {
-    "rb_cObject"           => "Object",
-    "rb_cArray"            => "Array",
-    "rb_cBignum"           => "Bignum",
-    "rb_cClass"            => "Class",
-    "rb_cDir"              => "Dir",
-    "rb_cData"             => "Data",
-    "rb_cFalseClass"       => "FalseClass",
-    "rb_cFile"             => "File",
-    "rb_cFixnum"           => "Fixnum",
-    "rb_cFloat"            => "Float",
-    "rb_cHash"             => "Hash",
-    "rb_cInteger"          => "Integer",
-    "rb_cIO"               => "IO",
-    "rb_cModule"           => "Module",
-    "rb_cNilClass"         => "NilClass",
-    "rb_cNumeric"          => "Numeric",
-    "rb_cProc"             => "Proc",
-    "rb_cRange"            => "Range",
-    "rb_cRegexp"           => "Regexp",
-    "rb_cString"           => "String",
-    "rb_cSymbol"           => "Symbol",
-    "rb_cThread"           => "Thread",
-    "rb_cTime"             => "Time",
-    "rb_cTrueClass"        => "TrueClass",
-    "rb_cStruct"           => "Struct",
-    "rb_eException"        => "Exception",
-    "rb_eStandardError"    => "StandardError",
-    "rb_eSystemExit"       => "SystemExit",
-    "rb_eInterrupt"        => "Interrupt",
-    "rb_eSignal"           => "Signal",
-    "rb_eFatal"            => "Fatal",
-    "rb_eArgError"         => "ArgError",
-    "rb_eEOFError"         => "EOFError",
-    "rb_eIndexError"       => "IndexError",
-    "rb_eRangeError"       => "RangeError",
-    "rb_eIOError"          => "IOError",
-    "rb_eRuntimeError"     => "RuntimeError",
-    "rb_eSecurityError"    => "SecurityError",
-    "rb_eSystemCallError"  => "SystemCallError",
-    "rb_eTypeError"        => "TypeError",
-    "rb_eZeroDivError"     => "ZeroDivError",
-    "rb_eNotImpError"      => "NotImpError",
-    "rb_eNoMemError"       => "NoMemError",
-    "rb_eFloatDomainError" => "FloatDomainError",
-    "rb_eScriptError"      => "ScriptError",
-    "rb_eNameError"        => "NameError",
-    "rb_eSyntaxError"      => "SyntaxError",
-    "rb_eLoadError"        => "LoadError",
-
-    "rb_mKernel"           => "Kernel",
-    "rb_mComparable"       => "Comparable",
-    "rb_mEnumerable"       => "Enumerable",
-    "rb_mPrecision"        => "Precision",
-    "rb_mErrno"            => "Errno",
-    "rb_mFileTest"         => "FileTest",
-    "rb_mGC"               => "GC",
-    "rb_mMath"             => "Math",
-    "rb_mProcess"          => "Process"
-  }
-
-  ##
-  # We attempt to parse C extension files. Basically we look for
-  # the standard patterns that you find in extensions: <tt>rb_define_class,
-  # rb_define_method</tt> and so on. We also try to find the corresponding
-  # C source for the methods and extract comments, but if we fail
-  # we don't worry too much.
-  #
-  # The comments associated with a Ruby method are extracted from the C
-  # comment block associated with the routine that _implements_ that
-  # method, that is to say the method whose name is given in the
-  # <tt>rb_define_method</tt> call. For example, you might write:
-  #
-  #  /*
-  #   * 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.
-  #   *
-  #   *    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]
-  #   */
-  #   static VALUE
-  #   rb_ary_flatten(ary)
-  #       VALUE ary;
-  #   {
-  #       ary = rb_obj_dup(ary);
-  #       rb_ary_flatten_bang(ary);
-  #       return ary;
-  #   }
-  #
-  #   ...
-  #
-  #   void
-  #   Init_Array()
-  #   {
-  #     ...
-  #     rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
-  #
-  # Here RDoc will determine from the rb_define_method line that there's a
-  # method called "flatten" in class Array, and will look for the implementation
-  # in the method rb_ary_flatten. It will then use the comment from that
-  # method in the HTML output. This method must be in the same source file
-  # as the rb_define_method.
-  #
-  # C classes can be diagramed (see /tc/dl/ruby/ruby/error.c), and RDoc
-  # integrates C and Ruby source into one tree
-  #
-  # The comment blocks may include special direcives:
-  #
-  # [Document-class: <i>name</i>]
-  #   This comment block is documentation for the given class. Use this
-  #   when the <tt>Init_xxx</tt> method is not named after the class.
-  #
-  # [Document-method: <i>name</i>]
-  #   This comment documents the named method. Use when RDoc cannot
-  #   automatically find the method from it's declaration
-  #
-  # [call-seq:  <i>text up to an empty line</i>]
-  #   Because C source doesn't give descripive names to Ruby-level parameters,
-  #   you need to document the calling sequence explicitly
-  #
-  # In additon, RDoc assumes by default that the C method implementing a 
-  # Ruby function is in the same source file as the rb_define_method call.
-  # If this isn't the case, add the comment 
-  #
-  #    rb_define_method(....);  // in: filename
-  #
-  # As an example, we might have an extension that defines multiple classes
-  # in its Init_xxx method. We could document them using
-  #
-  #  
-  #  /*
-  #   * Document-class:  MyClass
-  #   *
-  #   * Encapsulate the writing and reading of the configuration
-  #   * file. ...
-  #   */
-  #  
-  #  /*
-  #   * Document-method: read_value
-  #   *
-  #   * call-seq:
-  #   *   cfg.read_value(key)            -> value
-  #   *   cfg.read_value(key} { |key| }  -> value
-  #   *
-  #   * Return the value corresponding to +key+ from the configuration.
-  #   * In the second form, if the key isn't found, invoke the
-  #   * block and return its value.
-  #   */
-  #
-
-  class C_Parser
-
-    attr_accessor :progress
-
-    extend ParserFactory
-    parse_files_matching(/\.(?:([CcHh])\1?|c([+xp])\2|y)\z/)
-
-    @@known_bodies = {}
-
-    # prepare to parse a C file
-    def initialize(top_level, file_name, body, options, stats)
-      @known_classes = KNOWN_CLASSES.dup
-      @body = handle_tab_width(handle_ifdefs_in(body))
-      @options = options
-      @stats   = stats
-      @top_level = top_level
-      @classes = Hash.new
-      @file_dir = File.dirname(file_name)
-      @progress = $stderr unless options.quiet
-    end
-
-    # Extract the classes/modules and methods from a C file
-    # and return the corresponding top-level object
-    def scan
-      remove_commented_out_lines
-      do_classes
-      do_constants
-      do_methods
-      do_includes
-      do_aliases
-      @top_level
-    end
-
-    #######
-    private
-    #######
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-        @progress.flush
-      end
-    end
-
-    def warn(msg)
-      $stderr.puts
-      $stderr.puts msg
-      $stderr.flush
-    end
-
-    def remove_private_comments(comment)
-       comment.gsub!(/\/?\*--(.*?)\/?\*\+\+/m, '')
-       comment.sub!(/\/?\*--.*/m, '')
-    end
-
-    ##
-    # removes lines that are commented out that might otherwise get picked up
-    # when scanning for classes and methods
-
-    def remove_commented_out_lines
-      @body.gsub!(%r{//.*rb_define_}, '//')
-    end
-    
-    def handle_class_module(var_name, class_mod, class_name, parent, in_module)
-      progress(class_mod[0, 1])
-
-      parent_name = @known_classes[parent] || parent
-
-      if in_module
-        enclosure = @classes[in_module]
-        unless enclosure
-          if enclosure = @known_classes[in_module]
-            handle_class_module(in_module, (/^rb_m/ =~ in_module ? "module" : "class"),
-                                enclosure, nil, nil)
-            enclosure = @classes[in_module]
-          end
-        end
-        unless enclosure
-          warn("Enclosing class/module '#{in_module}' for " +
-                "#{class_mod} #{class_name} not known")
-          return
-        end
-      else
-        enclosure = @top_level
-      end
-
-      if class_mod == "class" 
-        cm = enclosure.add_class(NormalClass, class_name, parent_name)
-        @stats.num_classes += 1
-      else
-        cm = enclosure.add_module(NormalModule, class_name)
-        @stats.num_modules += 1
-      end
-      cm.record_location(enclosure.toplevel)
-
-      find_class_comment(cm.full_name, cm)
-      @classes[var_name] = cm
-      @known_classes[var_name] = cm.full_name
-    end
-
-    ##
-    # Look for class or module documentation above Init_+class_name+(void),
-    # in a Document-class +class_name+ (or module) comment or above an
-    # rb_define_class (or module).  If a comment is supplied above a matching
-    # Init_ and a rb_define_class the Init_ comment is used.
-    #
-    #   /*
-    #    * This is a comment for Foo
-    #    */
-    #   Init_Foo(void) {
-    #       VALUE cFoo = rb_define_class("Foo", rb_cObject);
-    #   }
-    #
-    #   /*
-    #    * Document-class: Foo
-    #    * This is a comment for Foo
-    #    */
-    #   Init_foo(void) {
-    #       VALUE cFoo = rb_define_class("Foo", rb_cObject);
-    #   }
-    #
-    #   /*
-    #    * This is a comment for Foo
-    #    */
-    #   VALUE cFoo = rb_define_class("Foo", rb_cObject);
-
-    def find_class_comment(class_name, class_meth)
-      comment = nil
-      if @body =~ %r{((?>/\*.*?\*/\s+))
-                     (static\s+)?void\s+Init_#{class_name}\s*(?:_\(\s*)?\(\s*(?:void\s*)?\)}xmi
-        comment = $1
-      elsif @body =~ %r{Document-(class|module):\s#{class_name}\s*?\n((?>.*?\*/))}m
-        comment = $2
-      else
-        if @body =~ /rb_define_(class|module)/m then
-          class_name = class_name.split("::").last
-          comments = []
-          @body.split(/(\/\*.*?\*\/)\s*?\n/m).each_with_index do |chunk, index|
-            comments[index] = chunk
-            if chunk =~ /rb_define_(class|module).*?"(#{class_name})"/m then
-              comment = comments[index-1]
-              break
-            end
-          end
-        end
-      end
-      class_meth.comment = mangle_comment(comment) if comment
-    end
-    
-    ############################################################
-
-    def do_classes
-      @body.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do 
-        |var_name, class_name|
-        handle_class_module(var_name, "module", class_name, nil, nil)
-      end
-      
-      # The '.' lets us handle SWIG-generated files
-      @body.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
-                \( 
-                   \s*"(\w+)",
-                   \s*(\w+)\s*
-                \)/mx) do 
-        
-        |var_name, class_name, parent|
-        handle_class_module(var_name, "class", class_name, parent, nil)
-      end
-      
-      @body.scan(/(\w+)\s*=\s*boot_defclass\s*\(\s*"(\w+?)",\s*(\w+?)\s*\)/) do
-        |var_name, class_name, parent|
-        parent = nil if parent == "0"
-        handle_class_module(var_name, "class", class_name, parent, nil)
-      end
-
-      @body.scan(/(\w+)\s* = \s*rb_define_module_under\s*
-                \( 
-                   \s*(\w+),
-                   \s*"(\w+)"
-                \s*\)/mx) do 
-        
-        |var_name, in_module, class_name|
-        handle_class_module(var_name, "module", class_name, nil, in_module)
-      end
-      
-      @body.scan(/([\w\.]+)\s* = \s*rb_define_class_under\s*
-                \( 
-                   \s*(\w+),
-                   \s*"(\w+)",
-                   \s*(\w+)\s*
-                \s*\)/mx) do 
-        
-        |var_name, in_module, class_name, parent|
-        handle_class_module(var_name, "class", class_name, parent, in_module)
-      end
-      
-    end
-
-		###########################################################
-
-    def do_constants
-      @body.scan(%r{\Wrb_define_
-                     (
-                        variable |
-                        readonly_variable |
-                        const |
-                        global_const |
-                      )
-                 \s*\( 
-                   (?:\s*(\w+),)?
-                   \s*"(\w+)",
-                   \s*(.*?)\s*\)\s*;
-                   }xm) do
-        
-        |type, var_name, const_name, definition|
-        var_name = "rb_cObject" if !var_name or var_name == "rb_mKernel"
-				handle_constants(type, var_name, const_name, definition)
-      end
-    end
-    
-    ############################################################
-    
-    def do_methods
-
-      @body.scan(%r{rb_define_
-                     (
-                        singleton_method |
-                        method           |
-                        module_function  |
-                        private_method
-                     )
-                     \s*\(\s*([\w\.]+),
-                       \s*"([^"]+)",
-                       \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                       \s*(-?\w+)\s*\)
-                     (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
-                   }xm) do
-        |type, var_name, meth_name, meth_body, param_count, source_file|
-       #" 
-
-        # Ignore top-object and weird struct.c dynamic stuff
-        next if var_name == "ruby_top_self" 
-        next if var_name == "nstr"
-        next if var_name == "envtbl"
-        next if var_name == "argf"   # it'd be nice to handle this one
-
-        var_name = "rb_cObject" if var_name == "rb_mKernel"
-        handle_method(type, var_name, meth_name, 
-                      meth_body, param_count, source_file)
-      end
-
-      @body.scan(%r{rb_define_attr\(
-                               \s*([\w\.]+),
-                               \s*"([^"]+)",
-                               \s*(\d+),
-                               \s*(\d+)\s*\);
-                  }xm) do  #"
-        |var_name, attr_name, attr_reader, attr_writer|
-        
-        #var_name = "rb_cObject" if var_name == "rb_mKernel"
-        handle_attr(var_name, attr_name,
-                    attr_reader.to_i != 0,
-                    attr_writer.to_i != 0)
-      end
-
-      @body.scan(%r{rb_define_global_function\s*\(
-                               \s*"([^"]+)",
-                               \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                               \s*(-?\w+)\s*\)
-                  (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
-                  }xm) do  #"
-        |meth_name, meth_body, param_count, source_file|
-        handle_method("method", "rb_mKernel", meth_name, 
-                      meth_body, param_count, source_file)
-      end
-  
-      @body.scan(/define_filetest_function\s*\(
-                               \s*"([^"]+)",
-                               \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
-                               \s*(-?\w+)\s*\)/xm) do  #"
-        |meth_name, meth_body, param_count|
-        
-        handle_method("method", "rb_mFileTest", meth_name, meth_body, param_count)
-        handle_method("singleton_method", "rb_cFile", meth_name, meth_body, param_count)
-      end
-   end
-
-    ############################################################
-    
-    def do_aliases
-      @body.scan(%r{rb_define_alias\s*\(\s*(\w+),\s*"([^"]+)",\s*"([^"]+)"\s*\)}m) do
-        |var_name, new_name, old_name|
-        @stats.num_methods += 1
-        class_name = @known_classes[var_name] || var_name
-        class_obj  = find_class(var_name, class_name)
-
-        class_obj.add_alias(Alias.new("", old_name, new_name, ""))
-      end
-   end
-
-    ##
-    # Adds constant comments.  By providing some_value: at the start ofthe
-    # comment you can override the C value of the comment to give a friendly
-    # definition.
-    #
-    #   /* 300: The perfect score in bowling */
-    #   rb_define_const(cFoo, "PERFECT", INT2FIX(300);
-    #
-    # Will override +INT2FIX(300)+ with the value +300+ in the output RDoc.
-    # Values may include quotes and escaped colons (\:).
-
-    def handle_constants(type, var_name, const_name, definition)
-      #@stats.num_constants += 1
-      class_name = @known_classes[var_name]
-      
-      return unless class_name
-
-      class_obj  = find_class(var_name, class_name)
-
-      unless class_obj
-        warn("Enclosing class/module '#{const_name}' for not known")
-        return
-      end
-      
-      comment = find_const_comment(type, const_name)
-
-      # In the case of rb_define_const, the definition and comment are in
-      # "/* definition: comment */" form.  The literal ':' and '\' characters
-      # can be escaped with a backslash.
-      if type.downcase == 'const' then
-         elements = mangle_comment(comment).split(':')
-         if elements.nil? or elements.empty? then
-            con = Constant.new(const_name, definition, mangle_comment(comment))
-         else
-            new_definition = elements[0..-2].join(':')
-            if new_definition.empty? then # Default to literal C definition
-               new_definition = definition
-            else
-               new_definition.gsub!("\:", ":")
-               new_definition.gsub!("\\", '\\')
-            end
-            new_definition.sub!(/\A(\s+)/, '')
-            new_comment = $1.nil? ? elements.last : "#{$1}#{elements.last.lstrip}"
-            con = Constant.new(const_name, new_definition,
-                               mangle_comment(new_comment))
-         end
-      else
-         con = Constant.new(const_name, definition, mangle_comment(comment))
-      end
-
-      class_obj.add_constant(con)
-    end
-
-    ##
-    # Finds a comment matching +type+ and +const_name+ either above the
-    # comment or in the matching Document- section.
-
-    def find_const_comment(type, const_name)
-      if @body =~ %r{((?>^\s*/\*.*?\*/\s+))
-                     rb_define_#{type}\((?:\s*(\w+),)?\s*"#{const_name}"\s*,.*?\)\s*;}xmi
-        $1
-      elsif @body =~ %r{Document-(?:const|global|variable):\s#{const_name}\s*?\n((?>.*?\*/))}m
-        $1
-      else
-        ''
-      end
-    end
-
-    ###########################################################
-
-    def handle_attr(var_name, attr_name, reader, writer)
-      rw = ''
-      if reader 
-        #@stats.num_methods += 1
-        rw << 'R'
-      end
-      if writer
-        #@stats.num_methods += 1
-        rw << 'W'
-      end
-
-      class_name = @known_classes[var_name]
-
-      return unless class_name
-      
-      class_obj  = find_class(var_name, class_name)
-
-      if class_obj
-        comment = find_attr_comment(attr_name)
-        unless comment.empty?
-          comment = mangle_comment(comment)
-        end
-        att = Attr.new('', attr_name, rw, comment)
-        class_obj.add_attribute(att)
-      end
-
-    end
-
-    ###########################################################
-
-    def find_attr_comment(attr_name)
-      if @body =~ %r{((?>/\*.*?\*/\s+))
-                     rb_define_attr\((?:\s*(\w+),)?\s*"#{attr_name}"\s*,.*?\)\s*;}xmi
-        $1
-      elsif @body =~ %r{Document-attr:\s#{attr_name}\s*?\n((?>.*?\*/))}m
-        $1
-      else
-        ''
-      end
-    end
-
-    ###########################################################
-
-    def handle_method(type, var_name, meth_name, 
-                      meth_body, param_count, source_file = nil)
-      progress(".")
-
-      @stats.num_methods += 1
-      class_name = @known_classes[var_name]
-
-      return unless class_name
-
-      class_obj  = find_class(var_name, class_name)
-      
-      if class_obj
-        if meth_name == "initialize"
-          meth_name = "new"
-          type = "singleton_method"
-        end
-        meth_obj = AnyMethod.new("", meth_name)
-        meth_obj.singleton =
-	  %w{singleton_method module_function}.include?(type) 
-        
-        p_count = (Integer(param_count) rescue -1)
-        
-        if p_count < 0
-          meth_obj.params = "(...)"
-        elsif p_count == 0
-          meth_obj.params = "()"
-        else
-          meth_obj.params = "(" +
-                            (1..p_count).map{|i| "p#{i}"}.join(", ") + 
-                                                ")"
-        end
-
-        if source_file
-          file_name = File.join(@file_dir, source_file)
-          body = (@@known_bodies[source_file] ||= File.read(file_name))
-        else
-          body = @body
-        end
-        if find_body(meth_body, meth_obj, body) and meth_obj.document_self
-          class_obj.add_method(meth_obj)
-        end
-      end
-    end
-    
-    ############################################################
-
-    # Find the C code corresponding to a Ruby method
-    def find_body(meth_name, meth_obj, body, quiet = false)
-      case body
-      when %r{((?>/\*.*?\*/\s*))(?:static\s+)?VALUE\s+#{meth_name}
-              \s*(\(.*?\)).*?^}xm
-        comment, params = $1, $2
-        body_text = $&
-
-        remove_private_comments(comment) if comment
-
-        # see if we can find the whole body
-        
-        re = Regexp.escape(body_text) + '[^(]*^\{.*?^\}'
-        if Regexp.new(re, Regexp::MULTILINE).match(body)
-          body_text = $&
-        end
-
-        # The comment block may have been overridden with a
-        # 'Document-method' block. This happens in the interpreter
-        # when multiple methods are vectored through to the same
-        # C method but those methods are logically distinct (for
-        # example Kernel.hash and Kernel.object_id share the same
-        # implementation
-
-        override_comment = find_override_comment(meth_obj.name)
-        comment = override_comment if override_comment
-
-        find_modifiers(comment, meth_obj) if comment
-        
-#        meth_obj.params = params
-        meth_obj.start_collecting_tokens
-        meth_obj.add_token(RubyToken::Token.new(1,1).set_text(body_text))
-        meth_obj.comment = mangle_comment(comment)
-      when %r{((?>/\*.*?\*/\s*))^\s*\#\s*define\s+#{meth_name}\s+(\w+)}m
-        comment = $1
-        find_body($2, meth_obj, body, true)
-        find_modifiers(comment, meth_obj)
-        meth_obj.comment = mangle_comment(comment) + meth_obj.comment
-      when %r{^\s*\#\s*define\s+#{meth_name}\s+(\w+)}m
-        unless find_body($1, meth_obj, body, true)
-          warn "No definition for #{meth_name}" unless quiet
-          return false
-        end
-      else
-
-        # No body, but might still have an override comment
-        comment = find_override_comment(meth_obj.name)
-
-        if comment
-          find_modifiers(comment, meth_obj)
-          meth_obj.comment = mangle_comment(comment)
-        else
-          warn "No definition for #{meth_name}" unless quiet
-          return false
-        end
-      end
-      true
-    end
-
-
-    ##
-    # If the comment block contains a section that looks like:
-    #
-    #    call-seq:
-    #        Array.new
-    #        Array.new(10)
-    #
-    # use it for the parameters.
-
-    def find_modifiers(comment, meth_obj)
-      if comment.sub!(/:nodoc:\s*^\s*\*?\s*$/m, '') or
-         comment.sub!(/\A\/\*\s*:nodoc:\s*\*\/\Z/, '')
-        meth_obj.document_self = false
-      end
-      if comment.sub!(/call-seq:(.*?)^\s*\*?\s*$/m, '') or
-         comment.sub!(/\A\/\*\s*call-seq:(.*?)\*\/\Z/, '')
-        seq = $1
-        seq.gsub!(/^\s*\*\s*/, '')
-        meth_obj.call_seq = seq
-      end
-    end
-
-    ############################################################
-
-    def find_override_comment(meth_name)
-      name = Regexp.escape(meth_name)
-      if @body =~ %r{Document-method:\s#{name}\s*?\n((?>.*?\*/))}m
-        $1
-      end
-    end
-
-    ##
-    # Look for includes of the form:
-    #
-    #     rb_include_module(rb_cArray, rb_mEnumerable);
-
-    def do_includes
-      @body.scan(/rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/) do |c,m|
-        if cls = @classes[c]
-          m = @known_classes[m] || m
-          cls.add_include(Include.new(m, ""))
-        end
-      end
-    end
-
-    ##
-    # Remove the /*'s and leading asterisks from C comments
-    
-    def mangle_comment(comment)
-      comment.sub!(%r{/\*+}) { " " * $&.length }
-      comment.sub!(%r{\*+/}) { " " * $&.length }
-      comment.gsub!(/^[ \t]*\*/m) { " " * $&.length }
-      comment
-    end
-
-    def find_class(raw_name, name)
-      unless @classes[raw_name]
-        if raw_name =~ /^rb_m/ 
-          @classes[raw_name] = @top_level.add_module(NormalModule, name)
-        else
-          @classes[raw_name] = @top_level.add_class(NormalClass, name, nil)
-        end
-      end
-      @classes[raw_name]
-    end
-
-    def handle_tab_width(body)
-      if /\t/ =~ body
-        tab_width = Options.instance.tab_width
-        body.split(/\n/).map do |line|
-          1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)}  && $~ #`
-          line
-        end .join("\n")
-      else
-        body
-      end
-    end
-
-    ##
-    # Removes #ifdefs that would otherwise confuse us
-    
-    def handle_ifdefs_in(body)
-      body.gsub(/^#ifdef HAVE_PROTOTYPES.*?#else.*?\n(.*?)#endif.*?\n/m) { $1 }
-    end
-    
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_f95.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_f95.rb
deleted file mode 100644
index f3f6d76..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_f95.rb
+++ /dev/null
@@ -1,1841 +0,0 @@
-#= parse_f95.rb - Fortran95 Parser
-#
-#== Overview
-#
-#"parse_f95.rb" parses Fortran95 files with suffixes "f90", "F90", "f95"
-#and "F95". Fortran95 files are expected to be conformed to Fortran95
-#standards.
-#
-#== Rules
-#
-#Fundamental rules are same as that of the Ruby parser.
-#But comment markers are '!' not '#'.
-#
-#=== Correspondence between RDoc documentation and Fortran95 programs
-#
-#"parse_f95.rb" parses main programs, modules, subroutines, functions,
-#derived-types, public variables, public constants,
-#defined operators and defined assignments.
-#These components are described in items of RDoc documentation, as follows.
-#
-#Files :: Files (same as Ruby)
-#Classes :: Modules
-#Methods :: Subroutines, functions, variables, constants, derived-types, defined operators, defined assignments
-#Required files :: Files in which imported modules, external subroutines and external functions are defined.
-#Included Modules :: List of imported modules
-#Attributes :: List of derived-types, List of imported modules all of whose components are published again
-#
-#Components listed in 'Methods' (subroutines, functions, ...)
-#defined in modules are described in the item of 'Classes'.
-#On the other hand, components defined in main programs or
-#as external procedures are described in the item of 'Files'.
-#
-#=== Components parsed by default
-#
-#By default, documentation on public components (subroutines, functions, 
-#variables, constants, derived-types, defined operators, 
-#defined assignments) are generated. 
-#With "--all" option, documentation on all components
-#are generated (almost same as the Ruby parser).
-#
-#=== Information parsed automatically
-#
-#The following information is automatically parsed.
-#
-#* Types of arguments
-#* Types of variables and constants
-#* Types of variables in the derived types, and initial values
-#* NAMELISTs and types of variables in them, and initial values
-#
-#Aliases by interface statement are described in the item of 'Methods'.
-#
-#Components which are imported from other modules and published again 
-#are described in the item of 'Methods'.
-#
-#=== Format of comment blocks
-#
-#Comment blocks should be written as follows.
-#Comment blocks are considered to be ended when the line without '!'
-#appears.
-#The indentation is not necessary.
-#
-#     ! (Top of file)
-#     !
-#     ! Comment blocks for the files.
-#     !
-#     !--
-#     ! The comment described in the part enclosed by
-#     ! "!--" and "!++" is ignored.
-#     !++
-#     !
-#     module hogehoge
-#       !
-#       ! Comment blocks for the modules (or the programs).
-#       !
-#
-#       private
-#
-#       logical            :: a     ! a private variable
-#       real, public       :: b     ! a public variable
-#       integer, parameter :: c = 0 ! a public constant
-#
-#       public :: c
-#       public :: MULTI_ARRAY
-#       public :: hoge, foo
-#
-#       type MULTI_ARRAY
-#         !
-#         ! Comment blocks for the derived-types.
-#         !
-#         real, pointer :: var(:) =>null() ! Comments block for the variables.
-#         integer       :: num = 0
-#       end type MULTI_ARRAY
-#
-#     contains
-#
-#       subroutine hoge( in,   &   ! Comment blocks between continuation lines are ignored.
-#           &            out )
-#         !
-#         ! Comment blocks for the subroutines or functions
-#         !
-#         character(*),intent(in):: in ! Comment blocks for the arguments.
-#         character(*),intent(out),allocatable,target  :: in
-#                                      ! Comment blocks can be
-#                                      ! written under Fortran statements.
-#
-#         character(32) :: file ! This comment parsed as a variable in below NAMELIST.
-#         integer       :: id
-#
-#         namelist /varinfo_nml/ file, id
-#                 !
-#                 ! Comment blocks for the NAMELISTs.
-#                 ! Information about variables are described above.
-#                 !
-#
-#       ....
-#
-#       end subroutine hoge
-#
-#       integer function foo( in )
-#         !
-#         ! This part is considered as comment block.
-#
-#         ! Comment blocks under blank lines are ignored.
-#         !
-#         integer, intent(in):: inA ! This part is considered as comment block.
-#
-#                                   ! This part is ignored.
-#
-#       end function foo
-#
-#       subroutine hide( in,   &
-#         &              out )      !:nodoc:
-#         !
-#         ! If "!:nodoc:" is described at end-of-line in subroutine
-#         ! statement as above, the subroutine is ignored.
-#         ! This assignment can be used to modules, subroutines,
-#         ! functions, variables, constants, derived-types,
-#         ! defined operators, defined assignments,
-#         ! list of imported modules ("use" statement).
-#         !
-#
-#       ....
-#
-#       end subroutine hide
-#
-#     end module hogehoge
-#
-
-
-require "rdoc/code_objects"
-
-module RDoc
-
-  class Token
-
-    NO_TEXT = "??".freeze
-
-    def initialize(line_no, char_no)
-      @line_no = line_no
-      @char_no = char_no
-      @text    = NO_TEXT
-    end
-    # Because we're used in contexts that expect to return a token,
-    # we set the text string and then return ourselves
-    def set_text(text)
-      @text = text
-      self
-    end
-
-    attr_reader :line_no, :char_no, :text
-
-  end
-
-  # See rdoc/parsers/parse_f95.rb
-
-  class Fortran95parser
-
-    extend ParserFactory
-    parse_files_matching(/\.((f|F)9(0|5)|F)$/)
-
-    @@external_aliases = []
-    @@public_methods   = []
-
-    # "false":: Comments are below source code
-    # "true" :: Comments are upper source code
-    COMMENTS_ARE_UPPER  = false
-
-    # Internal alias message
-    INTERNAL_ALIAS_MES = "Alias for"
-
-    # External alias message
-    EXTERNAL_ALIAS_MES = "The entity is"
-
-    # prepare to parse a Fortran 95 file
-    def initialize(top_level, file_name, body, options, stats)
-      @body = body
-      @stats = stats
-      @file_name  = file_name
-      @options = options
-      @top_level = top_level
-      @progress = $stderr unless options.quiet
-    end
-
-    # devine code constructs
-    def scan
-
-      # remove private comment
-      remaining_code = remove_private_comments(@body)
-
-      # continuation lines are united to one line
-      remaining_code = united_to_one_line(remaining_code)
-
-      # semicolons are replaced to line feed
-      remaining_code = semicolon_to_linefeed(remaining_code)
-
-      # collect comment for file entity
-      whole_comment, remaining_code = collect_first_comment(remaining_code)
-      @top_level.comment = whole_comment
-
-      # String "remaining_code" is converted to Array "remaining_lines"
-      remaining_lines = remaining_code.split("\n")
-
-      # "module" or "program" parts are parsed (new)
-      #
-      level_depth = 0
-      block_searching_flag = nil
-      block_searching_lines = []
-      pre_comment = []
-      module_program_trailing = ""
-      module_program_name = ""
-      other_block_level_depth = 0
-      other_block_searching_flag = nil
-      remaining_lines.collect!{|line|
-        if !block_searching_flag && !other_block_searching_flag
-          if line =~ /^\s*?module\s+(\w+)\s*?(!.*?)?$/i
-            block_searching_flag = :module
-            block_searching_lines << line
-            module_program_name = $1
-            module_program_trailing = find_comments($2)
-            next false
-          elsif line =~ /^\s*?program\s+(\w+)\s*?(!.*?)?$/i ||
-                 line =~ /^\s*?\w/ && !block_start?(line)
-            block_searching_flag = :program
-            block_searching_lines << line
-            module_program_name = $1 || ""
-            module_program_trailing = find_comments($2)
-            next false
-
-          elsif block_start?(line)
-            other_block_searching_flag = true
-            next line
-
-          elsif line =~ /^\s*?!\s?(.*)/
-            pre_comment << line
-            next line
-          else
-            pre_comment = []
-            next line
-          end
-        elsif other_block_searching_flag
-          other_block_level_depth += 1 if block_start?(line)
-          other_block_level_depth -= 1 if block_end?(line)
-          if other_block_level_depth < 0
-            other_block_level_depth = 0
-            other_block_searching_flag = nil
-          end
-          next line
-        end
-
-        block_searching_lines << line
-        level_depth += 1 if block_start?(line)
-        level_depth -= 1 if block_end?(line)
-        if level_depth >= 0
-          next false
-        end
-
-        # "module_program_code" is formatted.
-        # ":nodoc:" flag is checked.
-        #
-        module_program_code = block_searching_lines.join("\n")
-        module_program_code = remove_empty_head_lines(module_program_code)
-        if module_program_trailing =~ /^:nodoc:/
-          # next loop to search next block
-          level_depth = 0
-          block_searching_flag = false
-          block_searching_lines = []
-          pre_comment = []
-          next false
-        end
-
-        # NormalClass is created, and added to @top_level
-        #
-        if block_searching_flag == :module
-          module_name = module_program_name
-          module_code = module_program_code
-          module_trailing = module_program_trailing
-          progress "m"
-          @stats.num_modules += 1
-          f9x_module = @top_level.add_module NormalClass, module_name
-          f9x_module.record_location @top_level
-
-          f9x_comment = COMMENTS_ARE_UPPER ? 
-            find_comments(pre_comment.join("\n"))  + "\n" + module_trailing :
-              module_trailing + "\n" + find_comments(module_code.sub(/^.*$\n/i, ''))
-          f9x_module.comment = f9x_comment
-          parse_program_or_module(f9x_module, module_code)
-
-          TopLevel.all_files.each do |name, toplevel|
-            if toplevel.include_includes?(module_name, @options.ignore_case)
-              if !toplevel.include_requires?(@file_name, @options.ignore_case)
-                toplevel.add_require(Require.new(@file_name, ""))
-              end
-            end
-            toplevel.each_classmodule{|m|
-              if m.include_includes?(module_name, @options.ignore_case)
-                if !m.include_requires?(@file_name, @options.ignore_case)
-                  m.add_require(Require.new(@file_name, ""))
-                end
-              end
-            }
-          end
-        elsif block_searching_flag == :program
-          program_name = module_program_name
-          program_code = module_program_code
-          program_trailing = module_program_trailing
-          progress "p"
-          program_comment = COMMENTS_ARE_UPPER ? 
-            find_comments(pre_comment.join("\n")) + "\n" + program_trailing : 
-              program_trailing + "\n" + find_comments(program_code.sub(/^.*$\n/i, ''))
-          program_comment = "\n\n= <i>Program</i> <tt>#{program_name}</tt>\n\n" \
-                            + program_comment
-          @top_level.comment << program_comment
-          parse_program_or_module(@top_level, program_code, :private)
-        end
-
-        # next loop to search next block
-        level_depth = 0
-        block_searching_flag = false
-        block_searching_lines = []
-        pre_comment = []
-        next false
-      }
-
-      remaining_lines.delete_if{ |line|
-        line == false
-      }
-
-      # External subprograms and functions are parsed
-      #
-      parse_program_or_module(@top_level, remaining_lines.join("\n"),
-                              :public, true)
-
-      @top_level
-    end  # End of scan
-
-    private
-
-    def parse_program_or_module(container, code,
-                                visibility=:public, external=nil)
-      return unless container
-      return unless code
-      remaining_lines = code.split("\n")
-      remaining_code = "#{code}"
-
-      #
-      # Parse variables before "contains" in module
-      #
-      level_depth = 0
-      before_contains_lines = []
-      before_contains_code = nil
-      before_contains_flag = nil
-      remaining_lines.each{ |line|
-        if !before_contains_flag
-          if line =~ /^\s*?module\s+\w+\s*?(!.*?)?$/i
-            before_contains_flag = true
-          end
-        else
-          break if line =~ /^\s*?contains\s*?(!.*?)?$/i
-          level_depth += 1 if block_start?(line)
-          level_depth -= 1 if block_end?(line)
-          break if level_depth < 0
-          before_contains_lines << line
-        end
-      }
-      before_contains_code = before_contains_lines.join("\n")
-      if before_contains_code
-        before_contains_code.gsub!(/^\s*?interface\s+.*?\s+end\s+interface.*?$/im, "")
-        before_contains_code.gsub!(/^\s*?type[\s\,]+.*?\s+end\s+type.*?$/im, "")
-      end
-
-      #
-      # Parse global "use"
-      #
-      use_check_code = "#{before_contains_code}"
-      cascaded_modules_list = []
-      while use_check_code =~ /^\s*?use\s+(\w+)(.*?)(!.*?)?$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_list = $2 || ""
-        used_trailing = $3 || ""
-        next if used_trailing =~ /!:nodoc:/
-        if !container.include_includes?(used_mod_name, @options.ignore_case)
-          progress "."
-          container.add_include Include.new(used_mod_name, "")
-        end
-        if ! (used_list =~ /\,\s*?only\s*?:/i )
-          cascaded_modules_list << "\#" + used_mod_name
-        end
-      end
-
-      #
-      # Parse public and private, and store information.
-      # This information is used when "add_method" and
-      # "set_visibility_for" are called.
-      #
-      visibility_default, visibility_info = 
-                parse_visibility(remaining_lines.join("\n"), visibility, container)
-      @@public_methods.concat visibility_info
-      if visibility_default == :public
-        if !cascaded_modules_list.empty?
-          cascaded_modules = 
-            Attr.new("Cascaded Modules",
-                     "Imported modules all of whose components are published again",
-                     "",
-                     cascaded_modules_list.join(", "))
-          container.add_attribute(cascaded_modules)
-        end
-      end
-
-      #
-      # Check rename elements
-      #
-      use_check_code = "#{before_contains_code}"
-      while use_check_code =~ /^\s*?use\s+(\w+)\s*?\,(.+)$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_elements = $2.sub(/\s*?only\s*?:\s*?/i, '')
-        used_elements.split(",").each{ |used|
-          if /\s*?(\w+)\s*?=>\s*?(\w+)\s*?/ =~ used
-            local = $1
-            org = $2
-            @@public_methods.collect!{ |pub_meth|
-              if local == pub_meth["name"] ||
-                  local.upcase == pub_meth["name"].upcase &&
-                  @options.ignore_case
-                pub_meth["name"] = org
-                pub_meth["local_name"] = local
-              end
-              pub_meth
-            }
-          end
-        }
-      end
-
-      #
-      # Parse private "use"
-      #
-      use_check_code = remaining_lines.join("\n")
-      while use_check_code =~ /^\s*?use\s+(\w+)(.*?)(!.*?)?$/i
-        use_check_code = $~.pre_match
-        use_check_code << $~.post_match
-        used_mod_name = $1.strip.chomp
-        used_trailing = $3 || ""
-        next if used_trailing =~ /!:nodoc:/
-        if !container.include_includes?(used_mod_name, @options.ignore_case)
-          progress "."
-          container.add_include Include.new(used_mod_name, "")
-        end
-      end
-
-      container.each_includes{ |inc|
-        TopLevel.all_files.each do |name, toplevel|
-          indicated_mod = toplevel.find_symbol(inc.name,
-                                               nil, @options.ignore_case)
-          if indicated_mod
-            indicated_name = indicated_mod.parent.file_relative_name
-            if !container.include_requires?(indicated_name, @options.ignore_case)
-              container.add_require(Require.new(indicated_name, ""))
-            end
-            break
-          end
-        end
-      }
-
-      #
-      # Parse derived-types definitions
-      #
-      derived_types_comment = ""
-      remaining_code = remaining_lines.join("\n")
-      while remaining_code =~ /^\s*?
-                                    type[\s\,]+(public|private)?\s*?(::)?\s*?
-                                    (\w+)\s*?(!.*?)?$
-                                    (.*?)
-                                    ^\s*?end\s+type.*?$
-                              /imx
-        remaining_code = $~.pre_match
-        remaining_code << $~.post_match
-        typename = $3.chomp.strip
-        type_elements = $5 || ""
-        type_code = remove_empty_head_lines($&)
-        type_trailing = find_comments($4)
-        next if type_trailing =~ /^:nodoc:/
-        type_visibility = $1
-        type_comment = COMMENTS_ARE_UPPER ? 
-          find_comments($~.pre_match) + "\n" + type_trailing :
-            type_trailing + "\n" + find_comments(type_code.sub(/^.*$\n/i, ''))
-        type_element_visibility_public = true
-        type_code.split("\n").each{ |line|
-          if /^\s*?private\s*?$/ =~ line
-            type_element_visibility_public = nil
-            break
-          end
-        } if type_code
-
-        args_comment = ""
-        type_args_info = nil
-
-        if @options.show_all
-          args_comment = find_arguments(nil, type_code, true)
-        else
-          type_public_args_list = []
-          type_args_info = definition_info(type_code)
-          type_args_info.each{ |arg|
-            arg_is_public = type_element_visibility_public
-            arg_is_public = true if arg.include_attr?("public")
-            arg_is_public = nil if arg.include_attr?("private")
-            type_public_args_list << arg.varname if arg_is_public
-          }
-          args_comment = find_arguments(type_public_args_list, type_code)
-        end
-
-        type = AnyMethod.new("type #{typename}", typename)
-        type.singleton = false
-        type.params = ""
-        type.comment = "<b><em> Derived Type </em></b> :: <tt></tt>\n"
-        type.comment << args_comment if args_comment
-        type.comment << type_comment if type_comment
-        progress "t"
-        @stats.num_methods += 1
-        container.add_method type
-
-        set_visibility(container, typename, visibility_default, @@public_methods)
-
-        if type_visibility
-          type_visibility.gsub!(/\s/,'')
-          type_visibility.gsub!(/\,/,'')
-          type_visibility.gsub!(/:/,'')
-          type_visibility.downcase!
-          if type_visibility == "public"
-            container.set_visibility_for([typename], :public)
-          elsif type_visibility == "private"
-            container.set_visibility_for([typename], :private)
-          end
-        end
-
-        check_public_methods(type, container.name)
-
-        if @options.show_all
-          derived_types_comment << ", " unless derived_types_comment.empty?
-          derived_types_comment << typename
-        else
-          if type.visibility == :public
-          derived_types_comment << ", " unless derived_types_comment.empty?
-          derived_types_comment << typename
-          end
-        end
-
-      end
-
-      if !derived_types_comment.empty?
-        derived_types_table = 
-          Attr.new("Derived Types", "Derived_Types", "", 
-                   derived_types_comment)
-        container.add_attribute(derived_types_table)
-      end
-
-      #
-      # move interface scope
-      #
-      interface_code = ""
-      while remaining_code =~ /^\s*?
-                                   interface(
-                                              \s+\w+                      |
-                                              \s+operator\s*?\(.*?\)       |
-                                              \s+assignment\s*?\(\s*?=\s*?\)
-                                            )?\s*?$
-                                   (.*?)
-                                   ^\s*?end\s+interface.*?$
-                              /imx
-        interface_code << remove_empty_head_lines($&) + "\n"
-        remaining_code = $~.pre_match
-        remaining_code << $~.post_match
-      end
-
-      #
-      # Parse global constants or variables in modules
-      #
-      const_var_defs = definition_info(before_contains_code)
-      const_var_defs.each{|defitem|
-        next if defitem.nodoc
-        const_or_var_type = "Variable"
-        const_or_var_progress = "v"
-        if defitem.include_attr?("parameter")
-          const_or_var_type = "Constant"
-          const_or_var_progress = "c"
-        end
-        const_or_var = AnyMethod.new(const_or_var_type, defitem.varname)
-        const_or_var.singleton = false
-        const_or_var.params = ""
-        self_comment = find_arguments([defitem.varname], before_contains_code)
-        const_or_var.comment = "<b><em>" + const_or_var_type + "</em></b> :: <tt></tt>\n"
-        const_or_var.comment << self_comment if self_comment
-        progress const_or_var_progress
-        @stats.num_methods += 1
-        container.add_method const_or_var
-
-        set_visibility(container, defitem.varname, visibility_default, @@public_methods)
-
-        if defitem.include_attr?("public")
-          container.set_visibility_for([defitem.varname], :public)
-        elsif defitem.include_attr?("private")
-          container.set_visibility_for([defitem.varname], :private)
-        end
-
-        check_public_methods(const_or_var, container.name)
-
-      } if const_var_defs
-
-      remaining_lines = remaining_code.split("\n")
-
-      # "subroutine" or "function" parts are parsed (new)
-      #
-      level_depth = 0
-      block_searching_flag = nil
-      block_searching_lines = []
-      pre_comment = []
-      procedure_trailing = ""
-      procedure_name = ""
-      procedure_params = ""
-      procedure_prefix = ""
-      procedure_result_arg = ""
-      procedure_type = ""
-      contains_lines = []
-      contains_flag = nil
-      remaining_lines.collect!{|line|
-        if !block_searching_flag
-          # subroutine
-          if line =~ /^\s*?
-                           (recursive|pure|elemental)?\s*?
-                           subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                     /ix
-            block_searching_flag = :subroutine
-            block_searching_lines << line
-
-            procedure_name = $2.chomp.strip
-            procedure_params = $3 || ""
-            procedure_prefix = $1 || ""
-            procedure_trailing = $4 || "!"
-            next false
-
-          # function
-          elsif line =~ /^\s*?
-                         (recursive|pure|elemental)?\s*?
-                         (
-                             character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | type\s*?\([\w\s]+?\)\s+
-                           | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | double\s+precision\s+
-                           | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                         )?
-                         function\s+(\w+)\s*?
-                         (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                        /ix
-            block_searching_flag = :function
-            block_searching_lines << line
-
-            procedure_prefix = $1 || ""
-            procedure_type = $2 ? $2.chomp.strip : nil
-            procedure_name = $8.chomp.strip
-            procedure_params = $9 || ""
-            procedure_result_arg = $11 ? $11.chomp.strip : procedure_name
-            procedure_trailing = $12 || "!"
-            next false
-          elsif line =~ /^\s*?!\s?(.*)/
-            pre_comment << line
-            next line
-          else
-            pre_comment = []
-            next line
-          end
-        end
-        contains_flag = true if line =~ /^\s*?contains\s*?(!.*?)?$/
-        block_searching_lines << line
-        contains_lines << line if contains_flag
-
-        level_depth += 1 if block_start?(line)
-        level_depth -= 1 if block_end?(line)
-        if level_depth >= 0
-          next false
-        end
-
-        # "procedure_code" is formatted.
-        # ":nodoc:" flag is checked.
-        #
-        procedure_code = block_searching_lines.join("\n")
-        procedure_code = remove_empty_head_lines(procedure_code)
-        if procedure_trailing =~ /^!:nodoc:/
-          # next loop to search next block
-          level_depth = 0
-          block_searching_flag = nil
-          block_searching_lines = []
-          pre_comment = []
-          procedure_trailing = ""
-          procedure_name = ""
-          procedure_params = ""
-          procedure_prefix = ""
-          procedure_result_arg = ""
-          procedure_type = ""
-          contains_lines = []
-          contains_flag = nil
-          next false
-        end
-
-        # AnyMethod is created, and added to container
-        #
-        subroutine_function = nil
-        if block_searching_flag == :subroutine
-          subroutine_prefix   = procedure_prefix
-          subroutine_name     = procedure_name
-          subroutine_params   = procedure_params
-          subroutine_trailing = procedure_trailing
-          subroutine_code     = procedure_code
-
-          subroutine_comment = COMMENTS_ARE_UPPER ? 
-            pre_comment.join("\n") + "\n" + subroutine_trailing : 
-              subroutine_trailing + "\n" + subroutine_code.sub(/^.*$\n/i, '')
-          subroutine = AnyMethod.new("subroutine", subroutine_name)
-          parse_subprogram(subroutine, subroutine_params,
-                           subroutine_comment, subroutine_code,
-                           before_contains_code, nil, subroutine_prefix)
-          progress "s"
-          @stats.num_methods += 1
-          container.add_method subroutine
-          subroutine_function = subroutine
-
-        elsif block_searching_flag == :function
-          function_prefix     = procedure_prefix
-          function_type       = procedure_type
-          function_name       = procedure_name
-          function_params_org = procedure_params
-          function_result_arg = procedure_result_arg
-          function_trailing   = procedure_trailing
-          function_code_org   = procedure_code
-
-          function_comment = COMMENTS_ARE_UPPER ?
-            pre_comment.join("\n") + "\n" + function_trailing :
-              function_trailing + "\n " + function_code_org.sub(/^.*$\n/i, '')
-
-          function_code = "#{function_code_org}"
-          if function_type
-            function_code << "\n" + function_type + " :: " + function_result_arg
-          end
-
-          function_params =
-            function_params_org.sub(/^\(/, "\(#{function_result_arg}, ")
-
-          function = AnyMethod.new("function", function_name)
-          parse_subprogram(function, function_params,
-                           function_comment, function_code,
-                           before_contains_code, true, function_prefix)
-
-          # Specific modification due to function
-          function.params.sub!(/\(\s*?#{function_result_arg}\s*?,\s*?/, "\( ")
-          function.params << " result(" + function_result_arg + ")"
-          function.start_collecting_tokens
-          function.add_token Token.new(1,1).set_text(function_code_org)
-
-          progress "f"
-          @stats.num_methods += 1
-          container.add_method function
-          subroutine_function = function
-
-        end
-
-        # The visibility of procedure is specified
-        #
-        set_visibility(container, procedure_name, 
-                       visibility_default, @@public_methods)
-
-        # The alias for this procedure from external modules
-        #
-        check_external_aliases(procedure_name,
-                               subroutine_function.params,
-                               subroutine_function.comment, subroutine_function) if external
-        check_public_methods(subroutine_function, container.name)
-
-
-        # contains_lines are parsed as private procedures
-        if contains_flag
-          parse_program_or_module(container,
-                                  contains_lines.join("\n"), :private)
-        end
-
-        # next loop to search next block
-        level_depth = 0
-        block_searching_flag = nil
-        block_searching_lines = []
-        pre_comment = []
-        procedure_trailing = ""
-        procedure_name = ""
-        procedure_params = ""
-        procedure_prefix = ""
-        procedure_result_arg = ""
-        contains_lines = []
-        contains_flag = nil
-        next false
-      } # End of remaining_lines.collect!{|line|
-
-      # Array remains_lines is converted to String remains_code again
-      #
-      remaining_code = remaining_lines.join("\n")
-
-      #
-      # Parse interface
-      #
-      interface_scope = false
-      generic_name = ""
-      interface_code.split("\n").each{ |line|
-        if /^\s*?
-                 interface(
-                            \s+\w+|
-                            \s+operator\s*?\(.*?\)|
-                            \s+assignment\s*?\(\s*?=\s*?\)
-                          )?
-                 \s*?(!.*?)?$
-           /ix =~ line
-          generic_name = $1 ? $1.strip.chomp : nil
-          interface_trailing = $2 || "!"
-          interface_scope = true
-          interface_scope = false if interface_trailing =~ /!:nodoc:/
-#          if generic_name =~ /operator\s*?\((.*?)\)/i
-#            operator_name = $1
-#            if operator_name && !operator_name.empty?
-#              generic_name = "#{operator_name}"
-#            end
-#          end
-#          if generic_name =~ /assignment\s*?\((.*?)\)/i
-#            assignment_name = $1
-#            if assignment_name && !assignment_name.empty?
-#              generic_name = "#{assignment_name}"
-#            end
-#          end
-        end
-        if /^\s*?end\s+interface/i =~ line
-          interface_scope = false
-          generic_name = nil
-        end
-        # internal alias
-        if interface_scope && /^\s*?module\s+procedure\s+(.*?)(!.*?)?$/i =~ line
-          procedures = $1.strip.chomp
-          procedures_trailing = $2 || "!"
-          next if procedures_trailing =~ /!:nodoc:/
-          procedures.split(",").each{ |proc|
-            proc.strip!
-            proc.chomp!
-            next if generic_name == proc || !generic_name
-            old_meth = container.find_symbol(proc, nil, @options.ignore_case)
-            next if !old_meth
-            nolink = old_meth.visibility == :private ? true : nil
-            nolink = nil if @options.show_all
-            new_meth = 
-               initialize_external_method(generic_name, proc, 
-                                          old_meth.params, nil, 
-                                          old_meth.comment, 
-                                          old_meth.clone.token_stream[0].text, 
-                                          true, nolink)
-            new_meth.singleton = old_meth.singleton
-
-            progress "i"
-            @stats.num_methods += 1
-            container.add_method new_meth
-
-            set_visibility(container, generic_name, visibility_default, @@public_methods)
-
-            check_public_methods(new_meth, container.name)
-
-          }
-        end
-
-        # external aliases
-        if interface_scope
-          # subroutine
-          proc = nil
-          params = nil
-          procedures_trailing = nil
-          if line =~ /^\s*?
-                           (recursive|pure|elemental)?\s*?
-                           subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                     /ix
-            proc = $2.chomp.strip
-            generic_name = proc unless generic_name
-            params = $3 || ""
-            procedures_trailing = $4 || "!"
-
-          # function
-          elsif line =~ /^\s*?
-                         (recursive|pure|elemental)?\s*?
-                         (
-                             character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | type\s*?\([\w\s]+?\)\s+
-                           | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | double\s+precision\s+
-                           | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                           | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                         )?
-                         function\s+(\w+)\s*?
-                         (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                        /ix
-            proc = $8.chomp.strip
-            generic_name = proc unless generic_name
-            params = $9 || ""
-            procedures_trailing = $12 || "!"
-          else
-            next
-          end
-          next if procedures_trailing =~ /!:nodoc:/
-          indicated_method = nil
-          indicated_file   = nil
-          TopLevel.all_files.each do |name, toplevel|
-            indicated_method = toplevel.find_local_symbol(proc, @options.ignore_case)
-            indicated_file = name
-            break if indicated_method
-          end
-
-          if indicated_method
-            external_method = 
-              initialize_external_method(generic_name, proc, 
-                                         indicated_method.params, 
-                                         indicated_file, 
-                                         indicated_method.comment)
-
-            progress "e"
-            @stats.num_methods += 1
-            container.add_method external_method
-            set_visibility(container, generic_name, visibility_default, @@public_methods)
-            if !container.include_requires?(indicated_file, @options.ignore_case)
-              container.add_require(Require.new(indicated_file, ""))
-            end
-            check_public_methods(external_method, container.name)
-
-          else
-            @@external_aliases << {
-              "new_name"  => generic_name,
-              "old_name"  => proc,
-              "file_or_module" => container,
-              "visibility" => find_visibility(container, generic_name, @@public_methods) || visibility_default
-            }
-          end
-        end
-
-      } if interface_code # End of interface_code.split("\n").each ...
-
-      #
-      # Already imported methods are removed from @@public_methods.
-      # Remainders are assumed to be imported from other modules.
-      #
-      @@public_methods.delete_if{ |method| method["entity_is_discovered"]}
-
-      @@public_methods.each{ |pub_meth|
-        next unless pub_meth["file_or_module"].name == container.name
-        pub_meth["used_modules"].each{ |used_mod|
-          TopLevel.all_classes_and_modules.each{ |modules|
-            if modules.name == used_mod ||
-                modules.name.upcase == used_mod.upcase &&
-                @options.ignore_case
-              modules.method_list.each{ |meth|
-                if meth.name == pub_meth["name"] ||
-                    meth.name.upcase == pub_meth["name"].upcase &&
-                    @options.ignore_case
-                  new_meth = initialize_public_method(meth,
-                                                      modules.name)
-                  if pub_meth["local_name"]
-                    new_meth.name = pub_meth["local_name"]
-                  end
-                  progress "e"
-                  @stats.num_methods += 1
-                  container.add_method new_meth
-                end
-              }
-            end
-          }
-        }
-      }
-
-      container
-    end  # End of parse_program_or_module
-
-    #
-    # Parse arguments, comment, code of subroutine and function.
-    # Return AnyMethod object.
-    #
-    def parse_subprogram(subprogram, params, comment, code, 
-                         before_contains=nil, function=nil, prefix=nil)
-      subprogram.singleton = false
-      prefix = "" if !prefix
-      arguments = params.sub(/\(/, "").sub(/\)/, "").split(",") if params
-      args_comment, params_opt = 
-        find_arguments(arguments, code.sub(/^s*?contains\s*?(!.*?)?$.*/im, ""),
-                       nil, nil, true)
-      params_opt = "( " + params_opt + " ) " if params_opt
-      subprogram.params = params_opt || ""
-      namelist_comment = find_namelists(code, before_contains)
-
-      block_comment = find_comments comment
-      if function
-        subprogram.comment = "<b><em> Function </em></b> :: <em>#{prefix}</em>\n"
-      else
-        subprogram.comment = "<b><em> Subroutine </em></b> :: <em>#{prefix}</em>\n"
-      end
-      subprogram.comment << args_comment if args_comment
-      subprogram.comment << block_comment if block_comment
-      subprogram.comment << namelist_comment if namelist_comment
-
-      # For output source code
-      subprogram.start_collecting_tokens
-      subprogram.add_token Token.new(1,1).set_text(code)
-
-      subprogram
-    end
-
-    #
-    # Collect comment for file entity
-    #
-    def collect_first_comment(body)
-      comment = ""
-      not_comment = ""
-      comment_start = false
-      comment_end   = false
-      body.split("\n").each{ |line|
-        if comment_end
-          not_comment << line
-          not_comment << "\n"
-        elsif /^\s*?!\s?(.*)$/i =~ line
-          comment_start = true
-          comment << $1
-          comment << "\n"
-        elsif /^\s*?$/i =~ line
-          comment_end = true if comment_start && COMMENTS_ARE_UPPER
-        else
-          comment_end = true
-          not_comment << line
-          not_comment << "\n"
-        end
-      }
-      return comment, not_comment
-    end
-
-
-    # Return comments of definitions of arguments
-    #
-    # If "all" argument is true, information of all arguments are returned.
-    # If "modified_params" is true, list of arguments are decorated,
-    # for exameple, optional arguments are parenthetic as "[arg]".
-    #
-    def find_arguments(args, text, all=nil, indent=nil, modified_params=nil)
-      return unless args || all
-      indent = "" unless indent
-      args = ["all"] if all
-      params = "" if modified_params
-      comma = ""
-      return unless text
-      args_rdocforms = "\n"
-      remaining_lines = "#{text}"
-      definitions = definition_info(remaining_lines)
-      args.each{ |arg|
-        arg.strip!
-        arg.chomp!
-        definitions.each { |defitem|
-          if arg == defitem.varname.strip.chomp || all
-            args_rdocforms << <<-"EOF"
-
-#{indent}<tt><b>#{defitem.varname.chomp.strip}#{defitem.arraysuffix}</b> #{defitem.inivalue}</tt> :: 
-#{indent}   <tt>#{defitem.types.chomp.strip}</tt>
-EOF
-            if !defitem.comment.chomp.strip.empty?
-              comment = ""
-              defitem.comment.split("\n").each{ |line|
-                comment << "       " + line + "\n"
-              }
-              args_rdocforms << <<-"EOF"
-
-#{indent}   <tt></tt> :: 
-#{indent}       <tt></tt>
-#{indent}       #{comment.chomp.strip}
-EOF
-            end
-
-            if modified_params
-              if defitem.include_attr?("optional")
-                params << "#{comma}[#{arg}]"
-              else
-                params << "#{comma}#{arg}"
-              end
-              comma = ", "
-            end
-          end
-        }
-      }
-      if modified_params
-        return args_rdocforms, params
-      else
-        return args_rdocforms
-      end
-    end
-
-    # Return comments of definitions of namelists
-    #
-    def find_namelists(text, before_contains=nil)
-      return nil if !text
-      result = ""
-      lines = "#{text}"
-      before_contains = "" if !before_contains
-      while lines =~ /^\s*?namelist\s+\/\s*?(\w+)\s*?\/([\s\w\,]+)$/i
-        lines = $~.post_match
-        nml_comment = COMMENTS_ARE_UPPER ? 
-            find_comments($~.pre_match) : find_comments($~.post_match)
-        nml_name = $1
-        nml_args = $2.split(",")
-        result << "\n\n=== NAMELIST <tt><b>" + nml_name + "</tt></b>\n\n"
-        result << nml_comment + "\n" if nml_comment
-        if lines.split("\n")[0] =~ /^\//i
-          lines = "namelist " + lines
-        end
-        result << find_arguments(nml_args, "#{text}" + "\n" + before_contains)
-      end
-      return result
-    end
-
-    #
-    # Comments just after module or subprogram, or arguments are
-    # returnd. If "COMMENTS_ARE_UPPER" is true, comments just before
-    # modules or subprograms are returnd
-    #
-    def find_comments text
-      return "" unless text
-      lines = text.split("\n")
-      lines.reverse! if COMMENTS_ARE_UPPER
-      comment_block = Array.new
-      lines.each do |line|
-        break if line =~ /^\s*?\w/ || line =~ /^\s*?$/
-        if COMMENTS_ARE_UPPER
-          comment_block.unshift line.sub(/^\s*?!\s?/,"")
-        else
-          comment_block.push line.sub(/^\s*?!\s?/,"")
-        end
-      end
-      nice_lines = comment_block.join("\n").split "\n\s*?\n"
-      nice_lines[0] ||= ""
-      nice_lines.shift
-    end
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-        @progress.flush
-      end
-    end
-
-    #
-    # Create method for internal alias
-    #
-    def initialize_public_method(method, parent)
-      return if !method || !parent
-
-      new_meth = AnyMethod.new("External Alias for module", method.name)
-      new_meth.singleton    = method.singleton
-      new_meth.params       = method.params.clone
-      new_meth.comment      = remove_trailing_alias(method.comment.clone)
-      new_meth.comment      << "\n\n#{EXTERNAL_ALIAS_MES} #{parent.strip.chomp}\##{method.name}"
-
-      return new_meth
-    end
-
-    #
-    # Create method for external alias
-    #
-    # If argument "internal" is true, file is ignored.
-    #
-    def initialize_external_method(new, old, params, file, comment, token=nil,
-                                   internal=nil, nolink=nil)
-      return nil unless new || old
-
-      if internal
-        external_alias_header = "#{INTERNAL_ALIAS_MES} "
-        external_alias_text   = external_alias_header + old 
-      elsif file
-        external_alias_header = "#{EXTERNAL_ALIAS_MES} "
-        external_alias_text   = external_alias_header + file + "#" + old
-      else
-        return nil
-      end
-      external_meth = AnyMethod.new(external_alias_text, new)
-      external_meth.singleton    = false
-      external_meth.params       = params
-      external_comment = remove_trailing_alias(comment) + "\n\n" if comment
-      external_meth.comment = external_comment || ""
-      if nolink && token
-        external_meth.start_collecting_tokens
-        external_meth.add_token Token.new(1,1).set_text(token)
-      else
-        external_meth.comment << external_alias_text
-      end
-
-      return external_meth
-    end
-
-
-
-    #
-    # Parse visibility
-    #
-    def parse_visibility(code, default, container)
-      result = []
-      visibility_default = default || :public
-
-      used_modules = []
-      container.includes.each{|i| used_modules << i.name} if container
-
-      remaining_code = code.gsub(/^\s*?type[\s\,]+.*?\s+end\s+type.*?$/im, "")
-      remaining_code.split("\n").each{ |line|
-        if /^\s*?private\s*?$/ =~ line
-          visibility_default = :private
-          break
-        end
-      } if remaining_code
-
-      remaining_code.split("\n").each{ |line|
-        if /^\s*?private\s*?(::)?\s+(.*)\s*?(!.*?)?/i =~ line
-          methods = $2.sub(/!.*$/, '')
-          methods.split(",").each{ |meth|
-            meth.sub!(/!.*$/, '')
-            meth.gsub!(/:/, '')
-            result << {
-              "name" => meth.chomp.strip,
-              "visibility" => :private,
-              "used_modules" => used_modules.clone,
-              "file_or_module" => container,
-              "entity_is_discovered" => nil,
-              "local_name" => nil
-            }
-          }
-        elsif /^\s*?public\s*?(::)?\s+(.*)\s*?(!.*?)?/i =~ line
-          methods = $2.sub(/!.*$/, '')
-          methods.split(",").each{ |meth|
-            meth.sub!(/!.*$/, '')
-            meth.gsub!(/:/, '')
-            result << {
-              "name" => meth.chomp.strip,
-              "visibility" => :public,
-              "used_modules" => used_modules.clone,
-              "file_or_module" => container,
-              "entity_is_discovered" => nil,
-              "local_name" => nil
-            }
-          }
-        end
-      } if remaining_code
-
-      if container
-        result.each{ |vis_info|
-          vis_info["parent"] = container.name
-        }
-      end
-
-      return visibility_default, result
-    end
-
-    #
-    # Set visibility
-    #
-    # "subname" element of "visibility_info" is deleted.
-    #
-    def set_visibility(container, subname, visibility_default, visibility_info)
-      return unless container || subname || visibility_default || visibility_info
-      not_found = true
-      visibility_info.collect!{ |info|
-        if info["name"] == subname ||
-            @options.ignore_case && info["name"].upcase == subname.upcase
-          if info["file_or_module"].name == container.name
-            container.set_visibility_for([subname], info["visibility"])
-            info["entity_is_discovered"] = true
-            not_found = false
-          end
-        end
-        info
-      }
-      if not_found
-        return container.set_visibility_for([subname], visibility_default)
-      else
-        return container
-      end
-    end
-
-    #
-    # Find visibility
-    #
-    def find_visibility(container, subname, visibility_info)
-      return nil if !subname || !visibility_info
-      visibility_info.each{ |info|
-        if info["name"] == subname ||
-            @options.ignore_case && info["name"].upcase == subname.upcase
-          if info["parent"] == container.name
-            return info["visibility"]
-          end
-        end
-      }
-      return nil
-    end
-
-    #
-    # Check external aliases
-    #
-    def check_external_aliases(subname, params, comment, test=nil)
-      @@external_aliases.each{ |alias_item|
-        if subname == alias_item["old_name"] ||
-                    subname.upcase == alias_item["old_name"].upcase &&
-                            @options.ignore_case
-
-          new_meth = initialize_external_method(alias_item["new_name"], 
-                                                subname, params, @file_name, 
-                                                comment)
-          new_meth.visibility = alias_item["visibility"]
-
-          progress "e"
-          @stats.num_methods += 1
-          alias_item["file_or_module"].add_method(new_meth)
-
-          if !alias_item["file_or_module"].include_requires?(@file_name, @options.ignore_case)
-            alias_item["file_or_module"].add_require(Require.new(@file_name, ""))
-          end
-        end
-      }
-    end
-
-    #
-    # Check public_methods
-    #
-    def check_public_methods(method, parent)
-      return if !method || !parent
-      @@public_methods.each{ |alias_item|
-        parent_is_used_module = nil
-        alias_item["used_modules"].each{ |used_module|
-          if used_module == parent ||
-              used_module.upcase == parent.upcase &&
-              @options.ignore_case
-            parent_is_used_module = true
-          end
-        }
-        next if !parent_is_used_module
-
-        if method.name == alias_item["name"] ||
-            method.name.upcase == alias_item["name"].upcase &&
-            @options.ignore_case
-
-          new_meth = initialize_public_method(method, parent)
-          if alias_item["local_name"]
-            new_meth.name = alias_item["local_name"]
-          end
-
-          progress "e"
-          @stats.num_methods += 1
-          alias_item["file_or_module"].add_method new_meth
-        end
-      }
-    end
-
-    #
-    # Continuous lines are united.
-    #
-    # Comments in continuous lines are removed.
-    #
-    def united_to_one_line(f90src)
-      return "" unless f90src
-      lines = f90src.split("\n")
-      previous_continuing = false
-      now_continuing = false
-      body = ""
-      lines.each{ |line|
-        words = line.split("")
-        next if words.empty? && previous_continuing
-        commentout = false
-        brank_flag = true ; brank_char = ""
-        squote = false    ; dquote = false
-        ignore = false
-        words.collect! { |char|
-          if previous_continuing && brank_flag
-            now_continuing = true
-            ignore         = true
-            case char
-            when "!"                       ; break
-            when " " ; brank_char << char  ; next ""
-            when "&"
-              brank_flag = false
-              now_continuing = false
-              next ""
-            else 
-              brank_flag     = false
-              now_continuing = false
-              ignore         = false
-              next brank_char + char
-            end
-          end
-          ignore = false
-
-          if now_continuing
-            next ""
-          elsif !(squote) && !(dquote) && !(commentout)
-            case char
-            when "!" ; commentout = true     ; next char
-            when "\""; dquote = true         ; next char
-            when "\'"; squote = true         ; next char
-            when "&" ; now_continuing = true ; next ""
-            else next char
-            end
-          elsif commentout
-            next char
-          elsif squote
-            case char
-            when "\'"; squote = false ; next char
-            else next char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; next char
-            else next char
-            end
-          end
-        }
-        if !ignore && !previous_continuing || !brank_flag
-          if previous_continuing
-            body << words.join("")
-          else
-            body << "\n" + words.join("")
-          end
-        end
-        previous_continuing = now_continuing ? true : nil
-        now_continuing = nil
-      }
-      return body
-    end
-
-
-    #
-    # Continuous line checker
-    #
-    def continuous_line?(line)
-      continuous = false
-      if /&\s*?(!.*)?$/ =~ line
-        continuous = true
-        if comment_out?($~.pre_match)
-          continuous = false
-        end
-      end
-      return continuous
-    end
-
-    #
-    # Comment out checker
-    #
-    def comment_out?(line)
-      return nil unless line
-      commentout = false
-      squote = false ; dquote = false
-      line.split("").each { |char|
-        if !(squote) && !(dquote)
-          case char
-          when "!" ; commentout = true ; break
-          when "\""; dquote = true
-          when "\'"; squote = true
-          else next
-          end
-        elsif squote
-          case char
-          when "\'"; squote = false
-          else next
-          end
-        elsif dquote
-          case char
-          when "\""; dquote = false
-          else next
-          end
-        end
-      }
-      return commentout
-    end
-
-    #
-    # Semicolons are replaced to line feed.
-    #
-    def semicolon_to_linefeed(text)
-      return "" unless text
-      lines = text.split("\n")
-      lines.collect!{ |line|
-        words = line.split("")
-        commentout = false
-        squote = false ; dquote = false
-        words.collect! { |char|
-          if !(squote) && !(dquote) && !(commentout)
-            case char
-            when "!" ; commentout = true ; next char
-            when "\""; dquote = true     ; next char
-            when "\'"; squote = true     ; next char
-            when ";" ;                     "\n"
-            else next char
-            end
-          elsif commentout
-            next char
-          elsif squote
-            case char
-            when "\'"; squote = false ; next char
-            else next char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; next char
-            else next char
-            end
-          end
-        }
-        words.join("")
-      }
-      return lines.join("\n")
-    end
-
-    #
-    # Which "line" is start of block (module, program, block data,
-    # subroutine, function) statement ?
-    #
-    def block_start?(line)
-      return nil if !line
-
-      if line =~ /^\s*?module\s+(\w+)\s*?(!.*?)?$/i    ||
-          line =~ /^\s*?program\s+(\w+)\s*?(!.*?)?$/i  ||
-          line =~ /^\s*?block\s+data(\s+\w+)?\s*?(!.*?)?$/i     ||
-          line =~ \
-                  /^\s*?
-                   (recursive|pure|elemental)?\s*?
-                   subroutine\s+(\w+)\s*?(\(.*?\))?\s*?(!.*?)?$
-                  /ix ||
-          line =~ \
-                  /^\s*?
-                   (recursive|pure|elemental)?\s*?
-                   (
-                       character\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | type\s*?\([\w\s]+?\)\s+
-                     | integer\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | real\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | double\s+precision\s+
-                     | logical\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                     | complex\s*?(\([\w\s\=\(\)\*]+?\))?\s+
-                   )?
-                   function\s+(\w+)\s*?
-                   (\(.*?\))?(\s+result\((.*?)\))?\s*?(!.*?)?$
-                  /ix
-        return true
-      end
-
-      return nil
-    end
-
-    #
-    # Which "line" is end of block (module, program, block data,
-    # subroutine, function) statement ?
-    #
-    def block_end?(line)
-      return nil if !line
-
-      if line =~ /^\s*?end\s*?(!.*?)?$/i                 ||
-          line =~ /^\s*?end\s+module(\s+\w+)?\s*?(!.*?)?$/i       ||
-          line =~ /^\s*?end\s+program(\s+\w+)?\s*?(!.*?)?$/i      ||
-          line =~ /^\s*?end\s+block\s+data(\s+\w+)?\s*?(!.*?)?$/i  ||
-          line =~ /^\s*?end\s+subroutine(\s+\w+)?\s*?(!.*?)?$/i   ||
-          line =~ /^\s*?end\s+function(\s+\w+)?\s*?(!.*?)?$/i
-        return true
-      end
-
-      return nil
-    end
-
-    #
-    # Remove "Alias for" in end of comments
-    #
-    def remove_trailing_alias(text)
-      return "" if !text
-      lines = text.split("\n").reverse
-      comment_block = Array.new
-      checked = false
-      lines.each do |line|
-        if !checked 
-          if /^\s?#{INTERNAL_ALIAS_MES}/ =~ line ||
-              /^\s?#{EXTERNAL_ALIAS_MES}/ =~ line
-            checked = true
-            next
-          end
-        end
-        comment_block.unshift line
-      end
-      nice_lines = comment_block.join("\n")
-      nice_lines ||= ""
-      return nice_lines
-    end
-
-    # Empty lines in header are removed
-    def remove_empty_head_lines(text)
-      return "" unless text
-      lines = text.split("\n")
-      header = true
-      lines.delete_if{ |line|
-        header = false if /\S/ =~ line
-        header && /^\s*?$/ =~ line
-      }
-      lines.join("\n")
-    end
-
-
-    # header marker "=", "==", ... are removed
-    def remove_header_marker(text)
-      return text.gsub(/^\s?(=+)/, '<tt></tt>\1')
-    end
-
-    def remove_private_comments(body)
-      body.gsub!(/^\s*!--\s*?$.*?^\s*!\+\+\s*?$/m, '')
-      return body
-    end
-
-
-    #
-    # Information of arguments of subroutines and functions in Fortran95
-    #
-    class Fortran95Definition
-
-      # Name of variable
-      #
-      attr_reader   :varname
-
-      # Types of variable
-      #
-      attr_reader   :types
-
-      # Initial Value
-      #
-      attr_reader   :inivalue
-
-      # Suffix of array
-      #
-      attr_reader   :arraysuffix
-
-      # Comments
-      #
-      attr_accessor   :comment
-
-      # Flag of non documentation
-      #
-      attr_accessor   :nodoc
-
-      def initialize(varname, types, inivalue, arraysuffix, comment,
-                     nodoc=false)
-        @varname = varname
-        @types = types
-        @inivalue = inivalue
-        @arraysuffix = arraysuffix
-        @comment = comment
-        @nodoc = nodoc
-      end
-
-      def to_s
-        return <<-EOF
-<Fortran95Definition: 
-  varname=#{@varname}, types=#{types},
-  inivalue=#{@inivalue}, arraysuffix=#{@arraysuffix}, nodoc=#{@nodoc}, 
-  comment=
-#{@comment}
->
-EOF
-      end
-
-      #
-      # If attr is included, true is returned
-      #
-      def include_attr?(attr)
-        return if !attr
-        @types.split(",").each{ |type|
-          return true if type.strip.chomp.upcase == attr.strip.chomp.upcase
-        }
-        return nil
-      end
-
-    end # End of Fortran95Definition
-
-    #
-    # Parse string argument "text", and Return Array of
-    # Fortran95Definition object
-    #
-    def definition_info(text)
-      return nil unless text
-      lines = "#{text}"
-      defs = Array.new
-      comment = ""
-      trailing_comment = ""
-      under_comment_valid = false
-      lines.split("\n").each{ |line|
-        if /^\s*?!\s?(.*)/ =~ line
-          if COMMENTS_ARE_UPPER
-            comment << remove_header_marker($1)
-            comment << "\n"
-          elsif defs[-1] && under_comment_valid
-            defs[-1].comment << "\n"
-            defs[-1].comment << remove_header_marker($1)
-          end
-          next
-        elsif /^\s*?$/ =~ line
-          comment = ""
-          under_comment_valid = false
-          next
-        end
-        type = ""
-        characters = ""
-        if line =~ /^\s*?
-                    (
-                        character\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | type\s*?\([\w\s]+?\)[\s\,]*
-                      | integer\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | real\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | double\s+precision[\s\,]*
-                      | logical\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                      | complex\s*?(\([\w\s\=\(\)\*]+?\))?[\s\,]*
-                    )
-                    (.*?::)?
-                    (.+)$
-                   /ix
-          characters = $8
-          type = $1
-          type << $7.gsub(/::/, '').gsub(/^\s*?\,/, '') if $7
-        else
-          under_comment_valid = false
-          next
-        end
-        squote = false ; dquote = false ; bracket = 0
-        iniflag = false; commentflag = false
-        varname = "" ; arraysuffix = "" ; inivalue = ""
-        start_pos = defs.size
-        characters.split("").each { |char|
-          if !(squote) && !(dquote) && bracket <= 0 && !(iniflag) && !(commentflag)
-            case char
-            when "!" ; commentflag = true
-            when "(" ; bracket += 1       ; arraysuffix = char
-            when "\""; dquote = true
-            when "\'"; squote = true
-            when "=" ; iniflag = true     ; inivalue << char
-            when ","
-              defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-              varname = "" ; arraysuffix = "" ; inivalue = ""
-              under_comment_valid = true
-            when " " ; next
-            else     ; varname << char
-            end
-          elsif commentflag
-            comment << remove_header_marker(char)
-            trailing_comment << remove_header_marker(char)
-          elsif iniflag
-            if dquote
-              case char
-              when "\"" ; dquote = false ; inivalue << char
-              else      ; inivalue << char
-              end
-            elsif squote
-              case char
-              when "\'" ; squote = false ; inivalue << char
-              else      ; inivalue << char
-              end
-            elsif bracket > 0
-              case char
-              when "(" ; bracket += 1 ; inivalue << char
-              when ")" ; bracket -= 1 ; inivalue << char
-              else     ; inivalue << char
-              end
-            else
-              case char
-              when ","
-                defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-                varname = "" ; arraysuffix = "" ; inivalue = ""
-                iniflag = false
-                under_comment_valid = true
-              when "(" ; bracket += 1 ; inivalue << char
-              when "\""; dquote = true  ; inivalue << char
-              when "\'"; squote = true  ; inivalue << char
-              when "!" ; commentflag = true
-              else     ; inivalue << char
-              end
-            end
-          elsif !(squote) && !(dquote) && bracket > 0
-            case char
-            when "(" ; bracket += 1 ; arraysuffix << char
-            when ")" ; bracket -= 1 ; arraysuffix << char
-            else     ; arraysuffix << char
-            end
-          elsif squote
-            case char
-            when "\'"; squote = false ; inivalue << char
-            else     ; inivalue << char
-            end
-          elsif dquote
-            case char
-            when "\""; dquote = false ; inivalue << char
-            else     ; inivalue << char
-            end
-          end
-        }
-        defs << Fortran95Definition.new(varname, type, inivalue, arraysuffix, comment)
-        if trailing_comment =~ /^:nodoc:/
-          defs[start_pos..-1].collect!{ |defitem|
-            defitem.nodoc = true
-          }
-        end
-        varname = "" ; arraysuffix = "" ; inivalue = ""
-        comment = ""
-        under_comment_valid = true
-        trailing_comment = ""
-      }
-      return defs
-    end
-
-
-  end # class Fortran95parser
-
-end # module RDoc
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_rb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_rb.rb
deleted file mode 100644
index 750c483..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_rb.rb
+++ /dev/null
@@ -1,2609 +0,0 @@
-#!/usr/local/bin/ruby
-
-# Parse a Ruby source file, building a set of objects
-# representing the modules, classes, methods,
-# requires, and includes we find (these classes
-# are defined in code_objects.rb).
-
-# This file contains stuff stolen outright from:
-#
-#   rtags.rb - 
-#   ruby-lex.rb - ruby lexcal analizer
-#   ruby-token.rb - ruby tokens 
-#   	by Keiju ISHITSUKA (Nippon Rational Inc.)
-#
-
-require "e2mmap"
-require "irb/slex"
-
-require "rdoc/code_objects"
-require "rdoc/tokenstream"
-
-require "rdoc/markup/simple_markup/preprocess"
-
-require "rdoc/parsers/parserfactory"
-
-$TOKEN_DEBUG = $DEBUG
-
-# Definitions of all tokens involved in the lexical analysis
-
-module RubyToken
-  EXPR_BEG   = :EXPR_BEG
-  EXPR_MID   = :EXPR_MID
-  EXPR_END   = :EXPR_END
-  EXPR_ARG   = :EXPR_ARG
-  EXPR_FNAME = :EXPR_FNAME
-  EXPR_DOT   = :EXPR_DOT
-  EXPR_CLASS = :EXPR_CLASS
-  
-  class Token
-    NO_TEXT = "??".freeze
-    attr :text
-
-    def initialize(line_no, char_no)
-      @line_no = line_no
-      @char_no = char_no
-      @text    = NO_TEXT
-    end
-
-    # Because we're used in contexts that expect to return a token,
-    # we set the text string and then return ourselves
-    def set_text(text)
-      @text = text
-      self
-    end
-
-    attr_reader :line_no, :char_no, :text
-  end
-
-  class TkNode < Token
-    attr :node
-  end
-
-  class TkId < Token
-    def initialize(line_no, char_no, name)
-      super(line_no, char_no)
-      @name = name
-    end
-    attr :name
-  end
-
-  class TkKW < TkId
-  end
-
-  class TkVal < Token
-    def initialize(line_no, char_no, value = nil)
-      super(line_no, char_no)
-      set_text(value)
-    end
-  end
-
-  class TkOp < Token
-    def name
-      self.class.op_name
-    end
-  end
-
-  class TkOPASGN < TkOp
-    def initialize(line_no, char_no, op)
-      super(line_no, char_no)
-      op = TkReading2Token[op] unless op.kind_of?(Symbol)
-      @op = op
-    end
-    attr :op
-  end
-
-  class TkUnknownChar < Token
-    def initialize(line_no, char_no, id)
-      super(line_no, char_no)
-      @name = char_no.chr
-    end
-    attr :name
-  end
-
-  class TkError < Token
-  end
-
-  def set_token_position(line, char)
-    @prev_line_no = line
-    @prev_char_no = char
-  end
-
-  def Token(token, value = nil)
-    tk = nil
-    case token
-    when String, Symbol
-      source = token.kind_of?(String) ? TkReading2Token : TkSymbol2Token
-      if (tk = source[token]).nil?
-	IRB.fail TkReading2TokenNoKey, token
-      end
-      tk = Token(tk[0], value) 
-    else 
-      tk = if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
-             token.new(@prev_line_no, @prev_char_no)
-           else
-             token.new(@prev_line_no, @prev_char_no, value)
-           end
-    end
-    tk
-  end
-
-  TokenDefinitions = [
-    [:TkCLASS,      TkKW,  "class",  EXPR_CLASS],
-    [:TkMODULE,     TkKW,  "module", EXPR_BEG],
-    [:TkDEF,	    TkKW,  "def",    EXPR_FNAME],
-    [:TkUNDEF,      TkKW,  "undef",  EXPR_FNAME],
-    [:TkBEGIN,      TkKW,  "begin",  EXPR_BEG],
-    [:TkRESCUE,     TkKW,  "rescue", EXPR_MID],
-    [:TkENSURE,     TkKW,  "ensure", EXPR_BEG],
-    [:TkEND,	    TkKW,  "end",    EXPR_END],
-    [:TkIF,         TkKW,  "if",     EXPR_BEG, :TkIF_MOD],
-    [:TkUNLESS,     TkKW,  "unless", EXPR_BEG, :TkUNLESS_MOD],
-    [:TkTHEN,	    TkKW,  "then",   EXPR_BEG],
-    [:TkELSIF,      TkKW,  "elsif",  EXPR_BEG],
-    [:TkELSE,	    TkKW,  "else",   EXPR_BEG],
-    [:TkCASE,	    TkKW,  "case",   EXPR_BEG],
-    [:TkWHEN,	    TkKW,  "when",   EXPR_BEG],
-    [:TkWHILE,      TkKW,  "while",  EXPR_BEG, :TkWHILE_MOD],
-    [:TkUNTIL,      TkKW,  "until",  EXPR_BEG, :TkUNTIL_MOD],
-    [:TkFOR,	    TkKW,  "for",    EXPR_BEG],
-    [:TkBREAK,      TkKW,  "break",  EXPR_END],
-    [:TkNEXT,	    TkKW,  "next",   EXPR_END],
-    [:TkREDO,	    TkKW,  "redo",   EXPR_END],
-    [:TkRETRY,      TkKW,  "retry",  EXPR_END],
-    [:TkIN,	    TkKW,  "in",     EXPR_BEG],
-    [:TkDO,	    TkKW,  "do",     EXPR_BEG],
-    [:TkRETURN,     TkKW,  "return", EXPR_MID],
-    [:TkYIELD,      TkKW,  "yield",  EXPR_END],
-    [:TkSUPER,      TkKW,  "super",  EXPR_END],
-    [:TkSELF,	    TkKW,  "self",   EXPR_END],
-    [:TkNIL, 	    TkKW,  "nil",    EXPR_END],
-    [:TkTRUE,	    TkKW,  "true",   EXPR_END],
-    [:TkFALSE,      TkKW,  "false",  EXPR_END],
-    [:TkAND,	    TkKW,  "and",    EXPR_BEG],
-    [:TkOR, 	    TkKW,  "or",     EXPR_BEG],
-    [:TkNOT,	    TkKW,  "not",    EXPR_BEG],
-    [:TkIF_MOD,     TkKW],
-    [:TkUNLESS_MOD, TkKW],
-    [:TkWHILE_MOD,  TkKW],
-    [:TkUNTIL_MOD,  TkKW],
-    [:TkALIAS,      TkKW,  "alias",    EXPR_FNAME],
-    [:TkDEFINED,    TkKW,  "defined?", EXPR_END],
-    [:TklBEGIN,     TkKW,  "BEGIN",    EXPR_END],
-    [:TklEND,	    TkKW,  "END",      EXPR_END],
-    [:Tk__LINE__,   TkKW,  "__LINE__", EXPR_END],
-    [:Tk__FILE__,   TkKW,  "__FILE__", EXPR_END],
-
-    [:TkIDENTIFIER, TkId],
-    [:TkFID,	    TkId],
-    [:TkGVAR,	    TkId],
-    [:TkIVAR,	    TkId],
-    [:TkCONSTANT,   TkId],
-
-    [:TkINTEGER,    TkVal],
-    [:TkFLOAT,      TkVal],
-    [:TkSTRING,     TkVal],
-    [:TkXSTRING,    TkVal],
-    [:TkREGEXP,     TkVal],
-    [:TkCOMMENT,    TkVal],
-
-    [:TkDSTRING,    TkNode],
-    [:TkDXSTRING,   TkNode],
-    [:TkDREGEXP,    TkNode],
-    [:TkNTH_REF,    TkId],
-    [:TkBACK_REF,   TkId],
-
-    [:TkUPLUS,      TkOp,   "+@"],
-    [:TkUMINUS,     TkOp,   "-@"],
-    [:TkPOW,	    TkOp,   "**"],
-    [:TkCMP,	    TkOp,   "<=>"],
-    [:TkEQ,	    TkOp,   "=="],
-    [:TkEQQ,	    TkOp,   "==="],
-    [:TkNEQ,	    TkOp,   "!="],
-    [:TkGEQ,	    TkOp,   ">="],
-    [:TkLEQ,	    TkOp,   "<="],
-    [:TkANDOP,      TkOp,   "&&"],
-    [:TkOROP,	    TkOp,   "||"],
-    [:TkMATCH,      TkOp,   "=~"],
-    [:TkNMATCH,     TkOp,   "!~"],
-    [:TkDOT2,	    TkOp,   ".."],
-    [:TkDOT3,	    TkOp,   "..."],
-    [:TkAREF,	    TkOp,   "[]"],
-    [:TkASET,	    TkOp,   "[]="],
-    [:TkLSHFT,      TkOp,   "<<"],
-    [:TkRSHFT,      TkOp,   ">>"],
-    [:TkCOLON2,     TkOp],
-    [:TkCOLON3,     TkOp],
-#   [:OPASGN,	    TkOp],               # +=, -=  etc. #
-    [:TkASSOC,      TkOp,   "=>"],
-    [:TkQUESTION,   TkOp,   "?"],	 #?
-    [:TkCOLON,      TkOp,   ":"],        #:
-    
-    [:TkfLPAREN],         # func( #
-    [:TkfLBRACK],         # func[ #
-    [:TkfLBRACE],         # func{ #
-    [:TkSTAR],            # *arg
-    [:TkAMPER],           # &arg #
-    [:TkSYMBOL,     TkId],          # :SYMBOL
-    [:TkSYMBEG,     TkId], 
-    [:TkGT,	    TkOp,   ">"],
-    [:TkLT,	    TkOp,   "<"],
-    [:TkPLUS,	    TkOp,   "+"],
-    [:TkMINUS,      TkOp,   "-"],
-    [:TkMULT,	    TkOp,   "*"],
-    [:TkDIV,	    TkOp,   "/"],
-    [:TkMOD,	    TkOp,   "%"],
-    [:TkBITOR,      TkOp,   "|"],
-    [:TkBITXOR,     TkOp,   "^"],
-    [:TkBITAND,     TkOp,   "&"],
-    [:TkBITNOT,     TkOp,   "~"],
-    [:TkNOTOP,      TkOp,   "!"],
-
-    [:TkBACKQUOTE,  TkOp,   "`"],
-
-    [:TkASSIGN,     Token,  "="],
-    [:TkDOT,	    Token,  "."],
-    [:TkLPAREN,     Token,  "("],  #(exp)
-    [:TkLBRACK,     Token,  "["],  #[arry]
-    [:TkLBRACE,     Token,  "{"],  #{hash}
-    [:TkRPAREN,     Token,  ")"],
-    [:TkRBRACK,     Token,  "]"],
-    [:TkRBRACE,     Token,  "}"],
-    [:TkCOMMA,      Token,  ","],
-    [:TkSEMICOLON,  Token,  ";"],
-
-    [:TkRD_COMMENT],
-    [:TkSPACE],
-    [:TkNL],
-    [:TkEND_OF_SCRIPT],
-
-    [:TkBACKSLASH,  TkUnknownChar,  "\\"],
-    [:TkAT,	    TkUnknownChar,  "@"],
-    [:TkDOLLAR,     TkUnknownChar,  "\$"], #"
-  ]
-
-  # {reading => token_class}
-  # {reading => [token_class, *opt]}
-  TkReading2Token = {}
-  TkSymbol2Token = {}
-
-  def RubyToken.def_token(token_n, super_token = Token, reading = nil, *opts)
-    token_n = token_n.id2name unless token_n.kind_of?(String)
-    if RubyToken.const_defined?(token_n)
-      IRB.fail AlreadyDefinedToken, token_n
-    end
-
-    token_c =  Class.new super_token
-    RubyToken.const_set token_n, token_c
-#    token_c.inspect
- 
-    if reading
-      if TkReading2Token[reading]
-	IRB.fail TkReading2TokenDuplicateError, token_n, reading
-      end
-      if opts.empty?
-	TkReading2Token[reading] = [token_c]
-      else
-	TkReading2Token[reading] = [token_c].concat(opts)
-      end
-    end
-    TkSymbol2Token[token_n.intern] = token_c
-
-    if token_c <= TkOp
-      token_c.class_eval %{
-        def self.op_name; "#{reading}"; end
-      }
-    end
-  end
-
-  for defs in TokenDefinitions
-    def_token(*defs)
-  end
-
-  NEWLINE_TOKEN = TkNL.new(0,0)
-  NEWLINE_TOKEN.set_text("\n")
-
-end
-
-
-
-# Lexical analyzer for Ruby source
-
-class RubyLex
-
-  ######################################################################
-  #
-  # Read an input stream character by character. We allow for unlimited
-  # ungetting of characters just read.
-  #
-  # We simplify the implementation greatly by reading the entire input
-  # into a buffer initially, and then simply traversing it using
-  # pointers.
-  #
-  # We also have to allow for the <i>here document diversion</i>. This
-  # little gem comes about when the lexer encounters a here
-  # document. At this point we effectively need to split the input
-  # stream into two parts: one to read the body of the here document,
-  # the other to read the rest of the input line where the here
-  # document was initially encountered. For example, we might have
-  #
-  #   do_something(<<-A, <<-B)
-  #     stuff
-  #     for
-  #   A
-  #     stuff
-  #     for
-  #   B
-  #
-  # When the lexer encounters the <<A, it reads until the end of the
-  # line, and keeps it around for later. It then reads the body of the
-  # here document.  Once complete, it needs to read the rest of the
-  # original line, but then skip the here document body.
-  #
-  
-  class BufferedReader
-    
-    attr_reader :line_num
-    
-    def initialize(content)
-      if /\t/ =~ content
-        tab_width = Options.instance.tab_width
-        content = content.split(/\n/).map do |line|
-          1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)}  && $~ #`
-          line
-        end .join("\n")
-      end
-      @content   = content
-      @content << "\n" unless @content[-1,1] == "\n"
-      @size      = @content.size
-      @offset    = 0
-      @hwm       = 0
-      @line_num  = 1
-      @read_back_offset = 0
-      @last_newline = 0
-      @newline_pending = false
-    end
-    
-    def column
-      @offset - @last_newline
-    end
-    
-    def getc
-      return nil if @offset >= @size
-      ch = @content[@offset, 1]
-      
-      @offset += 1
-      @hwm = @offset if @hwm < @offset
-      
-      if @newline_pending
-        @line_num += 1
-        @last_newline = @offset - 1
-        @newline_pending = false
-      end
-      
-      if ch == "\n"
-        @newline_pending = true
-      end
-      ch
-    end
-    
-    def getc_already_read
-      getc
-    end
-    
-    def ungetc(ch)
-      raise "unget past beginning of file" if @offset <= 0
-      @offset -= 1
-      if @content[@offset] == ?\n
-        @newline_pending = false
-      end
-    end
-    
-    def get_read
-      res = @content[@read_back_offset... at offset]
-      @read_back_offset = @offset
-      res
-    end
-    
-    def peek(at)
-      pos = @offset + at
-      if pos >= @size
-        nil
-      else
-        @content[pos, 1]
-      end
-    end
-    
-    def peek_equal(str)
-      @content[@offset, str.length] == str
-    end
-    
-    def divert_read_from(reserve)
-      @content[@offset, 0] = reserve
-      @size      = @content.size
-    end
-  end
-
-  # end of nested class BufferedReader
-
-  extend Exception2MessageMapper
-  def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
-  def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
-  def_exception(:TkReading2TokenDuplicateError, 
-		"key duplicate(token_n='%s', key='%s')")
-  def_exception(:SyntaxError, "%s")
-  
-  include RubyToken
-  include IRB
-
-  attr_reader :continue
-  attr_reader :lex_state
-
-  def RubyLex.debug?
-    false
-  end
-
-  def initialize(content)
-    lex_init
-
-    @reader = BufferedReader.new(content)
-
-    @exp_line_no = @line_no = 1
-    @base_char_no = 0
-    @indent = 0
-
-    @ltype = nil
-    @quoted = nil
-    @lex_state = EXPR_BEG
-    @space_seen = false
-    
-    @continue = false
-    @line = ""
-
-    @skip_space = false
-    @read_auto_clean_up = false
-    @exception_on_syntax_error = true
-  end
-
-  attr :skip_space, true
-  attr :read_auto_clean_up, true
-  attr :exception_on_syntax_error, true
-
-  attr :indent
-
-  # io functions
-  def line_no
-    @reader.line_num
-  end
-
-  def char_no
-    @reader.column
-  end
-
-  def get_read
-    @reader.get_read
-  end
-
-  def getc
-    @reader.getc
-  end
-
-  def getc_of_rests
-    @reader.getc_already_read
-  end
-
-  def gets
-    c = getc or return
-    l = ""
-    begin
-      l.concat c unless c == "\r"
-      break if c == "\n"
-    end while c = getc
-    l
-  end
-
-
-  def ungetc(c = nil)
-    @reader.ungetc(c)
-  end
-
-  def peek_equal?(str)
-    @reader.peek_equal(str)
-  end
-
-  def peek(i = 0)
-    @reader.peek(i)
-  end
-
-  def lex
-    until (((tk = token).kind_of?(TkNL) || tk.kind_of?(TkEND_OF_SCRIPT)) &&
-	     !@continue or
-	     tk.nil?)
-    end
-    line = get_read
-
-    if line == "" and tk.kind_of?(TkEND_OF_SCRIPT) || tk.nil?
-      nil
-    else
-      line
-    end
-  end
-
-  def token
-    set_token_position(line_no, char_no)
-    begin
-      begin
-	tk = @OP.match(self)
-	@space_seen = tk.kind_of?(TkSPACE)
-      rescue SyntaxError
-	abort if @exception_on_syntax_error
-	tk = TkError.new(line_no, char_no)
-      end
-    end while @skip_space and tk.kind_of?(TkSPACE)
-    if @read_auto_clean_up
-      get_read
-    end
-#   throw :eof unless tk
-    p tk if $DEBUG
-    tk
-  end
-  
-  ENINDENT_CLAUSE = [
-    "case", "class", "def", "do", "for", "if",
-    "module", "unless", "until", "while", "begin" #, "when"
-  ]
-  DEINDENT_CLAUSE = ["end" #, "when"
-  ]
-
-  PERCENT_LTYPE = {
-    "q" => "\'",
-    "Q" => "\"",
-    "x" => "\`",
-    "r" => "/",
-    "w" => "]"
-  }
-  
-  PERCENT_PAREN = {
-    "{" => "}",
-    "[" => "]",
-    "<" => ">",
-    "(" => ")"
-  }
-
-  Ltype2Token = {
-    "\'" => TkSTRING,
-    "\"" => TkSTRING,
-    "\`" => TkXSTRING,
-    "/" => TkREGEXP,
-    "]" => TkDSTRING
-  }
-  Ltype2Token.default = TkSTRING
-
-  DLtype2Token = {
-    "\"" => TkDSTRING,
-    "\`" => TkDXSTRING,
-    "/" => TkDREGEXP,
-  }
-
-  def lex_init()
-    @OP = SLex.new
-    @OP.def_rules("\0", "\004", "\032") do |chars, io|
-      Token(TkEND_OF_SCRIPT).set_text(chars)
-    end
-
-    @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |chars, io|
-      @space_seen = TRUE
-      while (ch = getc) =~ /[ \t\f\r\13]/
-        chars << ch
-      end
-      ungetc
-      Token(TkSPACE).set_text(chars)
-    end
-
-    @OP.def_rule("#") do
-      |op, io|
-      identify_comment
-    end
-
-    @OP.def_rule("=begin", proc{@prev_char_no == 0 && peek(0) =~ /\s/}) do
-      |op, io|
-      str = op
-      @ltype = "="
-
-
-      begin
-        line = ""
-        begin
-          ch = getc
-          line << ch
-        end until ch == "\n"
-        str << line
-      end until line =~ /^=end/
-
-      ungetc
-
-      @ltype = nil
-
-      if str =~ /\A=begin\s+rdoc/i
-        str.sub!(/\A=begin.*\n/, '')
-        str.sub!(/^=end.*/m, '')
-        Token(TkCOMMENT).set_text(str)
-      else
-        Token(TkRD_COMMENT)#.set_text(str)
-      end
-    end
-
-    @OP.def_rule("\n") do
-      print "\\n\n" if RubyLex.debug?
-      case @lex_state
-      when EXPR_BEG, EXPR_FNAME, EXPR_DOT
-	@continue = TRUE
-      else
-	@continue = FALSE
-	@lex_state = EXPR_BEG
-      end
-      Token(TkNL).set_text("\n")
-    end
-
-    @OP.def_rules("*", "**",	
-		  "!", "!=", "!~",
-		  "=", "==", "===", 
-		  "=~", "<=>",	
-		  "<", "<=",
-		  ">", ">=", ">>") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rules("<<") do
-      |op, io|
-      tk = nil
-      if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
-	  (@lex_state != EXPR_ARG || @space_seen)
-	c = peek(0)
-	if /[-\w_\"\'\`]/ =~ c
-	  tk = identify_here_document
-	end
-      end
-      if !tk
-        @lex_state = EXPR_BEG
-        tk = Token(op).set_text(op)
-      end
-      tk
-    end
-
-    @OP.def_rules("'", '"') do
-      |op, io|
-      identify_string(op)
-    end
-
-    @OP.def_rules("`") do
-      |op, io|
-      if @lex_state == EXPR_FNAME
-	Token(op).set_text(op)
-      else
-	identify_string(op)
-      end
-    end
-
-    @OP.def_rules('?') do
-      |op, io|
-      if @lex_state == EXPR_END
-	@lex_state = EXPR_BEG
-	Token(TkQUESTION).set_text(op)
-      else
-	ch = getc
-	if @lex_state == EXPR_ARG && ch !~ /\s/
-	  ungetc
-	  @lex_state = EXPR_BEG;
-	  Token(TkQUESTION).set_text(op)
-	else
-          str = op
-          str << ch
-	  if (ch == '\\') #'
-	    str << read_escape
-	  end
-	  @lex_state = EXPR_END
-	  Token(TkINTEGER).set_text(str)
-	end
-      end
-    end
-
-    @OP.def_rules("&", "&&", "|", "||") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-    
-    @OP.def_rules("+=", "-=", "*=", "**=", 
-		  "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      op =~ /^(.*)=$/
-      Token(TkOPASGN, $1).set_text(op)
-    end
-
-    @OP.def_rule("+@", proc{@lex_state == EXPR_FNAME}) do |op, io|
-      Token(TkUPLUS).set_text(op)
-    end
-
-    @OP.def_rule("-@", proc{@lex_state == EXPR_FNAME}) do |op, io|
-      Token(TkUMINUS).set_text(op)
-    end
-
-    @OP.def_rules("+", "-") do
-      |op, io|
-      catch(:RET) do
-	if @lex_state == EXPR_ARG
-	  if @space_seen and peek(0) =~ /[0-9]/
-	    throw :RET, identify_number(op)
-	  else
-	    @lex_state = EXPR_BEG
-	  end
-	elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
-	  throw :RET, identify_number(op)
-	else
-	  @lex_state = EXPR_BEG
-	end
-	Token(op).set_text(op)
-      end
-    end
-
-    @OP.def_rule(".") do
-      @lex_state = EXPR_BEG
-      if peek(0) =~ /[0-9]/
-	ungetc
-	identify_number("")
-      else
-	# for obj.if
-	@lex_state = EXPR_DOT
-	Token(TkDOT).set_text(".")
-      end
-    end
-
-    @OP.def_rules("..", "...") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    lex_int2
-  end
-  
-  def lex_int2
-    @OP.def_rules("]", "}", ")") do
-      |op, io|
-      @lex_state = EXPR_END
-      @indent -= 1
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rule(":") do
-      if @lex_state == EXPR_END || peek(0) =~ /\s/
-	@lex_state = EXPR_BEG
-	tk = Token(TkCOLON)
-      else
-	@lex_state = EXPR_FNAME;
-	tk = Token(TkSYMBEG)
-      end
-      tk.set_text(":")
-    end
-
-    @OP.def_rule("::") do
-#      p @lex_state.id2name, @space_seen
-      if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
-	@lex_state = EXPR_BEG
-	tk = Token(TkCOLON3)
-      else
-	@lex_state = EXPR_DOT
-	tk = Token(TkCOLON2)
-      end
-      tk.set_text("::")
-    end
-
-    @OP.def_rule("/") do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_string(op)
-      elsif peek(0) == '='
-	getc
-	@lex_state = EXPR_BEG
-	Token(TkOPASGN, :/).set_text("/=") #")
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_string(op)
-      else 
-	@lex_state = EXPR_BEG
-        Token("/").set_text(op)
-      end
-    end
-
-    @OP.def_rules("^") do
-      @lex_state = EXPR_BEG
-      Token("^").set_text("^")
-    end
-
-    #       @OP.def_rules("^=") do
-    # 	@lex_state = EXPR_BEG
-    # 	Token(TkOPASGN, :^)
-    #       end
-    
-    @OP.def_rules(",", ";") do
-      |op, io|
-      @lex_state = EXPR_BEG
-      Token(op).set_text(op)
-    end
-
-    @OP.def_rule("~") do
-      @lex_state = EXPR_BEG
-      Token("~").set_text("~")
-    end
-
-    @OP.def_rule("~@", proc{@lex_state = EXPR_FNAME}) do
-      @lex_state = EXPR_BEG
-      Token("~").set_text("~@")
-    end
-    
-    @OP.def_rule("(") do
-      @indent += 1
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	@lex_state = EXPR_BEG
-	tk = Token(TkfLPAREN)
-      else
-	@lex_state = EXPR_BEG
-	tk = Token(TkLPAREN)
-      end
-      tk.set_text("(")
-    end
-
-    @OP.def_rule("[]", proc{@lex_state == EXPR_FNAME}) do
-      Token("[]").set_text("[]")
-    end
-
-    @OP.def_rule("[]=", proc{@lex_state == EXPR_FNAME}) do
-      Token("[]=").set_text("[]=")
-    end
-
-    @OP.def_rule("[") do
-      @indent += 1
-      if @lex_state == EXPR_FNAME
-	t = Token(TkfLBRACK)
-      else
-	if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	  t = Token(TkLBRACK)
-	elsif @lex_state == EXPR_ARG && @space_seen
-	  t = Token(TkLBRACK)
-	else
-	  t = Token(TkfLBRACK)
-	end
-	@lex_state = EXPR_BEG
-      end
-      t.set_text("[")
-    end
-
-    @OP.def_rule("{") do
-      @indent += 1
-      if @lex_state != EXPR_END && @lex_state != EXPR_ARG
-	t = Token(TkLBRACE)
-      else
-	t = Token(TkfLBRACE)
-      end
-      @lex_state = EXPR_BEG
-      t.set_text("{")
-    end
-
-    @OP.def_rule('\\') do   #'
-      if getc == "\n" 
-	@space_seen = true
-	@continue = true
-	Token(TkSPACE).set_text("\\\n")
-      else 
-	ungetc
-	Token("\\").set_text("\\")  #"
-      end 
-    end 
-
-    @OP.def_rule('%') do
-      |op, io|
-      if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
-	identify_quotation('%')
-      elsif peek(0) == '='
-	getc
-	Token(TkOPASGN, "%").set_text("%=")
-      elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
-	identify_quotation('%')
-      else
-	@lex_state = EXPR_BEG
-	Token("%").set_text("%")
-      end
-    end
-
-    @OP.def_rule('$') do  #'
-      identify_gvar
-    end
-
-    @OP.def_rule('@') do
-      if peek(0) =~ /[@\w_]/
-	ungetc
-	identify_identifier
-      else
-	Token("@").set_text("@")
-      end
-    end
-
-    #       @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do 
-    # 	|op, io|
-    # 	@indent += 1
-    # 	@lex_state = EXPR_FNAME
-    # #	@lex_state = EXPR_END
-    # #	until @rests[0] == "\n" or @rests[0] == ";"
-    # #	  rests.shift
-    # #	end
-    #       end
-
-    @OP.def_rule("__END__", proc{@prev_char_no == 0 && peek(0) =~ /[\r\n]/}) do
-      throw :eof
-    end
-
-    @OP.def_rule("") do
-      |op, io|
-      printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
-      if peek(0) =~ /[0-9]/
-	t = identify_number("")
-      elsif peek(0) =~ /[\w_]/
-	t = identify_identifier
-      end
-      printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
-      t
-    end
-    
-    p @OP if RubyLex.debug?
-  end
-  
-  def identify_gvar
-    @lex_state = EXPR_END
-    str = "$"
-
-    tk = case ch = getc
-         when /[~_*$?!@\/\\;,=:<>".]/   #"
-           str << ch
-           Token(TkGVAR, str)
-           
-         when "-"
-           str << "-" << getc
-           Token(TkGVAR, str)
-           
-         when "&", "`", "'", "+"
-           str << ch
-           Token(TkBACK_REF, str)
-           
-         when /[1-9]/
-           str << ch
-           while (ch = getc) =~ /[0-9]/
-             str << ch
-           end
-           ungetc
-           Token(TkNTH_REF)
-         when /\w/
-           ungetc
-           ungetc
-           return identify_identifier
-         else 
-           ungetc
-           Token("$")     
-         end
-    tk.set_text(str)
-  end
-  
-  def identify_identifier
-    token = ""
-    token.concat getc if peek(0) =~ /[$@]/
-    token.concat getc if peek(0) == "@"
-
-    while (ch = getc) =~ /\w|_/
-      print ":", ch, ":" if RubyLex.debug?
-      token.concat ch
-    end
-    ungetc
-    
-    if ch == "!" or ch == "?"
-      token.concat getc
-    end
-    # fix token
-
-    # $stderr.puts "identifier - #{token}, state = #@lex_state"
-
-    case token
-    when /^\$/
-      return Token(TkGVAR, token).set_text(token)
-    when /^\@/
-      @lex_state = EXPR_END
-      return Token(TkIVAR, token).set_text(token)
-    end
-    
-    if @lex_state != EXPR_DOT
-      print token, "\n" if RubyLex.debug?
-
-      token_c, *trans = TkReading2Token[token]
-      if token_c
-	# reserved word?
-
-	if (@lex_state != EXPR_BEG &&
-	    @lex_state != EXPR_FNAME &&
-	    trans[1])
-	  # modifiers
-	  token_c = TkSymbol2Token[trans[1]]
-	  @lex_state = trans[0]
-	else
-	  if @lex_state != EXPR_FNAME
-	    if ENINDENT_CLAUSE.include?(token)
-	      @indent += 1
-	    elsif DEINDENT_CLAUSE.include?(token)
-	      @indent -= 1
-	    end
-	    @lex_state = trans[0]
-	  else
-	    @lex_state = EXPR_END
-	  end
-	end
-	return Token(token_c, token).set_text(token)
-      end
-    end
-
-    if @lex_state == EXPR_FNAME
-      @lex_state = EXPR_END
-      if peek(0) == '='
-	token.concat getc
-      end
-    elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
-      @lex_state = EXPR_ARG
-    else
-      @lex_state = EXPR_END
-    end
-
-    if token[0, 1] =~ /[A-Z]/
-      return Token(TkCONSTANT, token).set_text(token)
-    elsif token[token.size - 1, 1] =~ /[!?]/
-      return Token(TkFID, token).set_text(token)
-    else
-      return Token(TkIDENTIFIER, token).set_text(token)
-    end
-  end
-
-  def identify_here_document
-    ch = getc
-    if ch == "-"
-      ch = getc
-      indent = true
-    end
-    if /['"`]/ =~ ch            # '
-      lt = ch
-      quoted = ""
-      while (c = getc) && c != lt
-	quoted.concat c
-      end
-    else
-      lt = '"'
-      quoted = ch.dup
-      while (c = getc) && c =~ /\w/
-	quoted.concat c
-      end
-      ungetc
-    end
-
-    ltback, @ltype = @ltype, lt
-    reserve = ""
-
-    while ch = getc
-      reserve << ch
-      if ch == "\\"    #"
-        ch = getc
-	reserve << ch
-      elsif ch == "\n"
-	break
-      end
-    end
-
-    str = ""
-    while (l = gets)
-      l.chomp!
-      l.strip! if indent
-      break if l == quoted
-      str << l.chomp << "\n"
-    end
-
-    @reader.divert_read_from(reserve)
-
-    @ltype = ltback
-    @lex_state = EXPR_END
-    Token(Ltype2Token[lt], str).set_text(str.dump)
-  end
-  
-  def identify_quotation(initial_char)
-    ch = getc
-    if lt = PERCENT_LTYPE[ch]
-      initial_char += ch
-      ch = getc
-    elsif ch =~ /\W/
-      lt = "\""
-    else
-      RubyLex.fail SyntaxError, "unknown type of %string ('#{ch}')"
-    end
-#     if ch !~ /\W/
-#       ungetc
-#       next
-#     end
-    #@ltype = lt
-    @quoted = ch unless @quoted = PERCENT_PAREN[ch]
-    identify_string(lt, @quoted, ch, initial_char)
-  end
-
-  def identify_number(start)
-    str = start.dup
-
-    if start == "+" or start == "-" or start == ""
-      start = getc
-      str << start
-    end
-
-    @lex_state = EXPR_END
-
-    if start == "0"
-      if peek(0) == "x"
-        ch = getc
-        str << ch
-        match = /[0-9a-f_]/
-      else
-        match = /[0-7_]/
-      end
-      while ch = getc
-        if ch !~ match
-          ungetc
-          break
-        else
-          str << ch
-        end
-      end
-      return Token(TkINTEGER).set_text(str)
-    end
-
-    type = TkINTEGER
-    allow_point = TRUE
-    allow_e = TRUE
-    while ch = getc
-      case ch
-      when /[0-9_]/
-        str << ch
-
-      when allow_point && "."
-	type = TkFLOAT
-	if peek(0) !~ /[0-9]/
-	  ungetc
-	  break
-	end
-        str << ch
-	allow_point = false
-
-      when allow_e && "e", allow_e && "E"
-        str << ch
-	type = TkFLOAT
-	if peek(0) =~ /[+-]/
-	  str << getc
-	end
-	allow_e = false
-	allow_point = false
-      else
-	ungetc
-	break
-      end
-    end
-    Token(type).set_text(str)
-  end
-  
-  def identify_string(ltype, quoted = ltype, opener=nil, initial_char = nil)
-    @ltype = ltype
-    @quoted = quoted
-    subtype = nil
-
-    str = ""
-    str << initial_char if initial_char
-    str << (opener||quoted)
-
-    nest = 0
-    begin
-      while ch = getc 
-	str << ch
-	if @quoted == ch 
-          if nest == 0
-            break
-          else
-            nest -= 1
-          end
-        elsif opener == ch
-          nest += 1
-	elsif @ltype != "'" && @ltype != "]" and ch == "#"
-          ch = getc
-          if ch == "{"
-            subtype = true
-            str << ch << skip_inner_expression
-          else
-            ungetc(ch)
-          end
-	elsif ch == '\\' #'
-	  str << read_escape
-	end
-      end
-      if @ltype == "/"
-	if peek(0) =~ /i|o|n|e|s/
-	  str << getc
-	end
-      end
-      if subtype
-	Token(DLtype2Token[ltype], str)
-      else
-	Token(Ltype2Token[ltype], str)
-      end.set_text(str)
-    ensure
-      @ltype = nil
-      @quoted = nil
-      @lex_state = EXPR_END
-    end
-  end
-
-  def skip_inner_expression
-    res = ""
-    nest = 0
-    while (ch = getc)
-      res << ch
-      if ch == '}'
-        break if nest.zero?
-        nest -= 1
-      elsif ch == '{'
-        nest += 1
-      end
-    end
-    res
-  end
-
-  def identify_comment
-    @ltype = "#"
-    comment = "#"
-    while ch = getc
-      if ch == "\\"
-        ch = getc
-        if ch == "\n"
-          ch = " "
-        else
-          comment << "\\" 
-        end
-      else
-        if ch == "\n"
-          @ltype = nil
-          ungetc
-          break
-        end
-      end
-      comment << ch
-    end
-    return Token(TkCOMMENT).set_text(comment)
-  end
-  
-  def read_escape
-    res = ""
-    case ch = getc
-    when /[0-7]/
-      ungetc ch
-      3.times do
-	case ch = getc
-	when /[0-7]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-        res << ch
-      end
-      
-    when "x"
-      res << ch
-      2.times do
-	case ch = getc
-	when /[0-9a-fA-F]/
-	when nil
-	  break
-	else
-	  ungetc
-	  break
-	end
-        res << ch
-      end
-
-    when "M"
-      res << ch
-      if (ch = getc) != '-'
-	ungetc
-      else
-        res << ch
-	if (ch = getc) == "\\" #"
-          res << ch
-	  res << read_escape
-        else
-          res << ch
-	end
-      end
-
-    when "C", "c" #, "^"
-      res << ch
-      if ch == "C" and (ch = getc) != "-"
-	ungetc
-      else
-        res << ch
-        if (ch = getc) == "\\" #"
-          res << ch
-          res << read_escape
-        else
-          res << ch
-        end
-      end
-    else
-      res << ch
-    end
-    res
-  end
-end
-
-
-
-# Extract code elements from a source file, returning a TopLevel
-# object containing the constituent file elements.
-#
-# This file is based on rtags
-
-module RDoc
-
-  GENERAL_MODIFIERS = [ 'nodoc' ].freeze
-
-  CLASS_MODIFIERS = GENERAL_MODIFIERS
-
-  ATTR_MODIFIERS  = GENERAL_MODIFIERS
-
-  CONSTANT_MODIFIERS = GENERAL_MODIFIERS
-
-  METHOD_MODIFIERS = GENERAL_MODIFIERS + 
-    [ 'arg', 'args', 'yield', 'yields', 'notnew', 'not-new', 'not_new', 'doc' ]
-
-
-  class RubyParser
-    include RubyToken
-    include TokenStream
-
-    extend ParserFactory
-
-    parse_files_matching(/\.rbw?$/)
-
-
-    def initialize(top_level, file_name, content, options, stats)
-      @options = options
-      @stats   = stats
-      @size = 0
-      @token_listeners = nil
-      @input_file_name = file_name
-      @scanner = RubyLex.new(content)
-      @scanner.exception_on_syntax_error = false
-      @top_level = top_level
-      @progress = $stderr unless options.quiet
-    end
-
-    def scan
-      @tokens = []
-      @unget_read = []
-      @read = []
-      catch(:eof) do
-        catch(:enddoc) do
-          begin
-            parse_toplevel_statements(@top_level)
-          rescue Exception => e
-            $stderr.puts "\n\n"
-            $stderr.puts "RDoc failure in #@input_file_name at or around " +
-                         "line #{@scanner.line_no} column #{@scanner.char_no}"
-            $stderr.puts 
-            $stderr.puts "Before reporting this, could you check that the file"
-            $stderr.puts "you're documenting compiles cleanly--RDoc is not a"
-            $stderr.puts "full Ruby parser, and gets confused easily if fed"
-            $stderr.puts "invalid programs."
-            $stderr.puts
-            $stderr.puts "The internal error was:\n\n"
-            
-            e.set_backtrace(e.backtrace[0,4])
-            raise
-          end
-        end
-      end
-      @top_level
-    end
-
-    private 
-
-    def make_message(msg)
-      prefix = "\n" + @input_file_name + ":"
-      if @scanner
-        prefix << "#{@scanner.line_no}:#{@scanner.char_no}: "
-      end
-      return prefix + msg
-    end
-
-    def warn(msg)
-      return if @options.quiet
-      msg = make_message msg
-      $stderr.puts msg
-    end
-
-    def error(msg)
-      msg = make_message msg
-      $stderr.puts msg
-      exit(1)
-    end
-
-    def progress(char)
-      unless @options.quiet
-        @progress.print(char)
-	@progress.flush
-      end
-    end
-
-    def add_token_listener(obj)
-      @token_listeners ||= []
-      @token_listeners << obj
-    end
-
-    def remove_token_listener(obj)
-      @token_listeners.delete(obj)
-    end
-
-    def get_tk
-      tk = nil
-      if @tokens.empty?
-	tk = @scanner.token
-	@read.push @scanner.get_read
-	puts "get_tk1 => #{tk.inspect}" if $TOKEN_DEBUG
-      else
-	@read.push @unget_read.shift
-	tk = @tokens.shift
-	puts "get_tk2 => #{tk.inspect}" if $TOKEN_DEBUG
-      end
-
-      if tk.kind_of?(TkSYMBEG)
-        set_token_position(tk.line_no, tk.char_no)
-        tk1 = get_tk
-        if tk1.kind_of?(TkId) || tk1.kind_of?(TkOp)
-          tk = Token(TkSYMBOL).set_text(":" + tk1.name)
-          # remove the identifier we just read (we're about to
-          # replace it with a symbol)
-          @token_listeners.each do |obj|
-            obj.pop_token
-          end if @token_listeners
-        else
-          warn("':' not followed by identifier or operator")
-          tk = tk1
-        end
-      end
-
-      # inform any listeners of our shiny new token
-      @token_listeners.each do |obj|
-        obj.add_token(tk)
-      end if @token_listeners
-
-      tk
-    end
-
-    def peek_tk
-      unget_tk(tk = get_tk)
-      tk
-    end
-
-    def unget_tk(tk)
-      @tokens.unshift tk
-      @unget_read.unshift @read.pop
-
-      # Remove this token from any listeners
-      @token_listeners.each do |obj|
-        obj.pop_token
-      end if @token_listeners
-    end
-
-    def skip_tkspace(skip_nl = true)
-      tokens = []
-      while ((tk = get_tk).kind_of?(TkSPACE) ||
-	     (skip_nl && tk.kind_of?(TkNL)))
-	tokens.push tk
-      end
-      unget_tk(tk)
-      tokens
-    end
-
-    def get_tkread
-      read = @read.join("")
-      @read = []
-      read
-    end
-
-    def peek_read
-      @read.join('')
-    end
-
-    NORMAL = "::"
-    SINGLE = "<<"
-
-    # Look for the first comment in a file that isn't
-    # a shebang line.
-
-    def collect_first_comment
-      skip_tkspace
-      res = ''
-      first_line = true
-
-      tk = get_tk
-      while tk.kind_of?(TkCOMMENT)
-        if first_line && /\A#!/ =~ tk.text
-          skip_tkspace
-          tk = get_tk
-        elsif first_line && /\A#\s*-\*-/ =~ tk.text
-          first_line = false
-          skip_tkspace
-          tk = get_tk
-        else
-          first_line = false
-          res << tk.text << "\n"
-          tk = get_tk
-          if tk.kind_of? TkNL
-            skip_tkspace(false)
-            tk = get_tk
-          end
-        end
-      end
-      unget_tk(tk)
-      res
-    end
-
-    def parse_toplevel_statements(container)
-      comment = collect_first_comment
-      look_for_directives_in(container, comment)
-      container.comment = comment unless comment.empty?
-      parse_statements(container, NORMAL, nil, comment)
-    end
-    
-    def parse_statements(container, single=NORMAL, current_method=nil, comment='')
-      nest = 1
-      save_visibility = container.visibility
-      
-#      if container.kind_of?(TopLevel)
-#      else
-#        comment = ''
-#      end
-
-      non_comment_seen = true
-      
-      while tk = get_tk
-        
-        keep_comment = false
-        
-        non_comment_seen = true unless tk.kind_of?(TkCOMMENT)
-        
-	case tk
-
-        when TkNL
-          skip_tkspace(true)   # Skip blanks and newlines
-          tk = get_tk
-          if tk.kind_of?(TkCOMMENT)
-            if non_comment_seen
-              comment = ''
-              non_comment_seen = false
-            end
-            while tk.kind_of?(TkCOMMENT)
-              comment << tk.text << "\n"
-              tk = get_tk          # this is the newline 
-              skip_tkspace(false)  # leading spaces
-              tk = get_tk
-            end
-            unless comment.empty?
-              look_for_directives_in(container, comment) 
-              if container.done_documenting
-                container.ongoing_visibility = save_visibility
-#                return
-              end
-            end
-            keep_comment = true
-          else
-            non_comment_seen = true
-          end
-          unget_tk(tk)
-          keep_comment = true
-
-
-	when TkCLASS
-	  if container.document_children
-            parse_class(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-	when TkMODULE
-	  if container.document_children
-            parse_module(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-	when TkDEF
-	  if container.document_self
-	    parse_method(container, single, tk, comment)
-	  else
-	    nest += 1
-          end
-
-        when TkCONSTANT
-          if container.document_self
-            parse_constant(container, single, tk, comment)
-          end
-
-	when TkALIAS
- 	  if container.document_self
-	    parse_alias(container, single, tk, comment)
-	  end
-
-        when TkYIELD
-          if current_method.nil?
-            warn("Warning: yield outside of method") if container.document_self
-          else
-            parse_yield(container, single, tk, current_method)
-          end
-
-          # Until and While can have a 'do', which shouldn't increas
-          # the nesting. We can't solve the general case, but we can
-          # handle most occurrences by ignoring a do at the end of a line
-
-        when  TkUNTIL, TkWHILE
-          nest += 1
-          puts "FOUND #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-          skip_optional_do_after_expression
-
-          # 'for' is trickier
-        when TkFOR
-          nest += 1
-          puts "FOUND #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-          skip_for_variable
-          skip_optional_do_after_expression
-
-	when TkCASE, TkDO, TkIF, TkUNLESS, TkBEGIN
-	  nest += 1
-          puts "Found #{tk.class} in #{container.name}, nest = #{nest}, " +
-            "line #{tk.line_no}" if $DEBUG
-
-	when TkIDENTIFIER
-          if nest == 1 and current_method.nil?
-            case tk.name
-            when "private", "protected", "public",
-                 "private_class_method", "public_class_method"
-              parse_visibility(container, single, tk)
-              keep_comment = true
-            when "attr"
-              parse_attr(container, single, tk, comment)
-            when /^attr_(reader|writer|accessor)$/, @options.extra_accessors
-              parse_attr_accessor(container, single, tk, comment)
-            when "alias_method"
-              if container.document_self
-	        parse_alias(container, single, tk, comment)
-	      end
-            end
-	  end
-	  
-	  case tk.name
-	  when "require"
-	    parse_require(container, comment)
-	  when "include"
-	    parse_include(container, comment)
-	  end
-
-
-	when TkEND
-          nest -= 1
-          puts "Found 'end' in #{container.name}, nest = #{nest}, line #{tk.line_no}" if $DEBUG
-          puts "Method = #{current_method.name}" if $DEBUG and current_method
-	  if nest == 0
-            read_documentation_modifiers(container, CLASS_MODIFIERS)
-            container.ongoing_visibility = save_visibility
-            return
-          end
-
-	end
-
-        comment = '' unless keep_comment
-	begin
-	  get_tkread
-	  skip_tkspace(false)
-	end while peek_tk == TkNL
-
-      end
-    end
-    
-    def parse_class(container, single, tk, comment, &block)
-      progress("c")
-
-      @stats.num_classes += 1
-
-      container, name_t = get_class_or_module(container)
-
-      case name_t
-      when TkCONSTANT
-	name = name_t.name
-        superclass = "Object"
-
-        if peek_tk.kind_of?(TkLT)
-          get_tk
-          skip_tkspace(true)
-          superclass = get_class_specification
-          superclass = "<unknown>" if superclass.empty?
-        end
-
-	if single == SINGLE
-	  cls_type = SingleClass
-	else
-	  cls_type = NormalClass
-	end
-
-        cls = container.add_class(cls_type, name, superclass)
-        read_documentation_modifiers(cls, CLASS_MODIFIERS)
-        cls.record_location(@top_level)
-	parse_statements(cls)
-        cls.comment = comment
-
-      when TkLSHFT
-	case name = get_class_specification
-	when "self", container.name
-	  parse_statements(container, SINGLE, &block)
-	else
-          other = TopLevel.find_class_named(name)
-          unless other
-#            other = @top_level.add_class(NormalClass, name, nil)
-#            other.record_location(@top_level)
-#            other.comment = comment
-            other = NormalClass.new("Dummy", nil)
-          end
-          read_documentation_modifiers(other, CLASS_MODIFIERS)
-          parse_statements(other, SINGLE, &block)
-	end
-
-      else
-	warn("Expected class name or '<<'. Got #{name_t.class}: #{name_t.text.inspect}")
-      end
-    end
-
-    def parse_module(container, single, tk, comment)
-      progress("m")
-      @stats.num_modules += 1
-      container, name_t  = get_class_or_module(container)
-#      skip_tkspace
-      name = name_t.name
-      mod = container.add_module(NormalModule, name)
-      mod.record_location(@top_level)
-      read_documentation_modifiers(mod, CLASS_MODIFIERS)
-      parse_statements(mod)
-      mod.comment = comment
-    end
-
-    # Look for the name of a class of module (optionally with a leading :: or
-    # with :: separated named) and return the ultimate name and container
-
-    def get_class_or_module(container)
-      skip_tkspace
-      name_t = get_tk
-
-      # class ::A -> A is in the top level
-      if name_t.kind_of?(TkCOLON2)
-        name_t = get_tk
-        container = @top_level
-      end
-
-      skip_tkspace(false)
-
-      while peek_tk.kind_of?(TkCOLON2)
-        prev_container = container
-        container = container.find_module_named(name_t.name)
-        if !container
-#          warn("Couldn't find module #{name_t.name}")
-          container = prev_container.add_module(NormalModule, name_t.name)
-        end
-        get_tk
-        name_t = get_tk
-      end
-      skip_tkspace(false)
-      return [container, name_t]
-    end
-
-    def parse_constant(container, single, tk, comment)
-      name = tk.name
-      skip_tkspace(false)
-      eq_tk = get_tk
-
-      unless eq_tk.kind_of?(TkASSIGN)
-        unget_tk(eq_tk)
-        return
-      end
-
-
-      nest = 0
-      get_tkread
-
-      tk = get_tk
-      if tk.kind_of? TkGT
-        unget_tk(tk)
-        unget_tk(eq_tk)
-        return
-      end
-
-      loop do
-        puts("Param: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}")  if $DEBUG
-
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when TkRPAREN
-          nest -= 1
-        when TkCOMMENT
-          if nest <= 0 && @scanner.lex_state == EXPR_END
-            unget_tk(tk)
-            break
-          end
-        when TkNL
-          if (@scanner.lex_state == EXPR_END and nest <= 0) || !@scanner.continue
-            unget_tk(tk)
-            break
-          end
-        end
-        tk = get_tk
-      end
-
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      con = Constant.new(name, res, comment)
-      read_documentation_modifiers(con, CONSTANT_MODIFIERS)
-      if con.document_self
-	container.add_constant(con)
-      end
-    end
-
-    def parse_method(container, single, tk, comment)
-      progress(".")
-      @stats.num_methods += 1
-      line_no = tk.line_no
-      column  = tk.char_no
-      
-      start_collecting_tokens
-      add_token(tk)
-      add_token_listener(self)
-      
-      @scanner.instance_eval{@lex_state = EXPR_FNAME}
-      skip_tkspace(false)
-      name_t = get_tk
-      back_tk = skip_tkspace
-      meth = nil
-      added_container = false
-
-      dot = get_tk
-      if dot.kind_of?(TkDOT) or dot.kind_of?(TkCOLON2)
-	@scanner.instance_eval{@lex_state = EXPR_FNAME}
-	skip_tkspace
-	name_t2 = get_tk
-	case name_t
-	when TkSELF
-	  name = name_t2.name
-	when TkCONSTANT
-          name = name_t2.name
-          prev_container = container
-          container = container.find_module_named(name_t.name)
-          if !container
-            added_container = true
-            obj = name_t.name.split("::").inject(Object) do |state, item|
-              state.const_get(item)
-            end rescue nil
-
-            type = obj.class == Class ? NormalClass : NormalModule
-            if not [Class, Module].include?(obj.class)
-              warn("Couldn't find #{name_t.name}. Assuming it's a module")
-            end
-
-            if type == NormalClass then
-              container = prev_container.add_class(type, name_t.name, obj.superclass.name)
-            else
-              container = prev_container.add_module(type, name_t.name)
-            end
-          end
-	else
-	  # warn("Unexpected token '#{name_t2.inspect}'")
-	  # break
-          skip_method(container)
-          return
-	end
-	meth =  AnyMethod.new(get_tkread, name)
-        meth.singleton = true
-      else
-	unget_tk dot
-	back_tk.reverse_each do
-	  |tk|
-	  unget_tk tk
-	end
-	name = name_t.name
-
-        meth =  AnyMethod.new(get_tkread, name)
-        meth.singleton = (single == SINGLE)
-      end
-
-      remove_token_listener(self)
-
-      meth.start_collecting_tokens
-      indent = TkSPACE.new(1,1)
-      indent.set_text(" " * column)
-
-      meth.add_tokens([TkCOMMENT.new(line_no,
-                                     1,
-                                     "# File #{@top_level.file_absolute_name}, line #{line_no}"),
-                        NEWLINE_TOKEN,
-                        indent])
-
-      meth.add_tokens(@token_stream)
-
-      add_token_listener(meth)
-
-      @scanner.instance_eval{@continue = false}
-      parse_method_parameters(meth)
-
-      if meth.document_self
-        container.add_method(meth)
-      elsif added_container
-        container.document_self = false
-      end
-
-      # Having now read the method parameters and documentation modifiers, we
-      # now know whether we have to rename #initialize to ::new
-
-      if name == "initialize" && !meth.singleton
-        if meth.dont_rename_initialize
-          meth.visibility = :protected
-        else
-          meth.singleton = true
-          meth.name = "new"
-          meth.visibility = :public
-        end
-      end
-      
-      parse_statements(container, single, meth)
-      
-      remove_token_listener(meth)
-
-      # Look for a 'call-seq' in the comment, and override the
-      # normal parameter stuff
-
-      if comment.sub!(/:?call-seq:(.*?)^\s*\#?\s*$/m, '')
-        seq = $1
-        seq.gsub!(/^\s*\#\s*/, '')
-        meth.call_seq = seq
-      end
-      
-      meth.comment = comment
-
-    end
-    
-    def skip_method(container)
-      meth =  AnyMethod.new("", "anon")
-      parse_method_parameters(meth)
-      parse_statements(container, false, meth)
-    end
-    
-    # Capture the method's parameters. Along the way,
-    # look for a comment containing 
-    #
-    #    # yields: ....
-    #
-    # and add this as the block_params for the method
-
-    def parse_method_parameters(method)
-      res = parse_method_or_yield_parameters(method)
-      res = "(" + res + ")" unless res[0] == ?(
-      method.params = res unless method.params
-      if method.block_params.nil?
-          skip_tkspace(false)
-	  read_documentation_modifiers(method, METHOD_MODIFIERS)
-      end
-    end
-
-    def parse_method_or_yield_parameters(method=nil, modifiers=METHOD_MODIFIERS)
-      skip_tkspace(false)
-      tk = get_tk
-
-      # Little hack going on here. In the statement
-      #  f = 2*(1+yield)
-      # We see the RPAREN as the next token, so we need
-      # to exit early. This still won't catch all cases
-      # (such as "a = yield + 1"
-      end_token = case tk
-                  when TkLPAREN, TkfLPAREN
-                    TkRPAREN
-                  when TkRPAREN
-                    return ""
-                  else
-                    TkNL
-                  end
-      nest = 0
-
-      loop do
-        puts("Param: #{tk.inspect}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}")  if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLBRACE
-          nest += 1
-        when TkRBRACE
-          # we might have a.each {|i| yield i }
-          unget_tk(tk) if nest.zero?
-          nest -= 1
-          break if nest <= 0
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest <= 0
-          else
-            break unless @scanner.continue
-          end
-        when method && method.block_params.nil? && TkCOMMENT
-	  unget_tk(tk)
-	  read_documentation_modifiers(method, modifiers)
-        end
-        tk = get_tk
-      end
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      res
-    end
-
-    # skip the var [in] part of a 'for' statement
-    def skip_for_variable
-      skip_tkspace(false)
-      tk = get_tk
-      skip_tkspace(false)
-      tk = get_tk
-      unget_tk(tk) unless tk.kind_of?(TkIN)
-    end
-
-    # while, until, and for have an optional 
-    def skip_optional_do_after_expression
-      skip_tkspace(false)
-      tk = get_tk
-      case tk
-      when TkLPAREN, TkfLPAREN
-        end_token = TkRPAREN
-      else
-        end_token = TkNL
-      end
-
-      nest = 0
-      @scanner.instance_eval{@continue = false}
-
-      loop do
-        puts("\nWhile: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}") if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when TkDO
-          break if nest.zero?
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest.zero?
-          else
-            break unless @scanner.continue
-          end
-        end
-        tk = get_tk
-      end
-      skip_tkspace(false)
-      if peek_tk.kind_of? TkDO
-        get_tk
-      end
-    end
-    
-    # Return a superclass, which can be either a constant
-    # of an expression
-
-    def get_class_specification
-      tk = get_tk
-      return "self" if tk.kind_of?(TkSELF)
-        
-      res = ""
-      while tk.kind_of?(TkCOLON2) ||
-          tk.kind_of?(TkCOLON3)   ||
-          tk.kind_of?(TkCONSTANT)   
-        
-        res += tk.text
-        tk = get_tk
-      end
-
-      unget_tk(tk)
-      skip_tkspace(false)
-
-      get_tkread # empty out read buffer
-
-      tk = get_tk
-
-      case tk
-      when TkNL, TkCOMMENT, TkSEMICOLON
-        unget_tk(tk)
-        return res
-      end
-
-      res += parse_call_parameters(tk)
-      res
-    end
-
-    def parse_call_parameters(tk)
-
-      end_token = case tk
-                  when TkLPAREN, TkfLPAREN
-                    TkRPAREN
-                  when TkRPAREN
-                    return ""
-                  else
-                    TkNL
-                  end
-      nest = 0
-
-      loop do
-        puts("Call param: #{tk}, #{@scanner.continue} " +
-          "#{@scanner.lex_state} #{nest}") if $DEBUG
-        case tk
-        when TkSEMICOLON
-          break
-        when TkLPAREN, TkfLPAREN
-          nest += 1
-        when end_token
-          if end_token == TkRPAREN
-            nest -= 1
-            break if @scanner.lex_state == EXPR_END and nest <= 0
-          else
-            break unless @scanner.continue
-          end
-        when TkCOMMENT
-	  unget_tk(tk)
-	  break
-        end
-        tk = get_tk
-      end
-      res = get_tkread.tr("\n", " ").strip
-      res = "" if res == ";"
-      res
-    end
-
-
-    # Parse a constant, which might be qualified by
-    # one or more class or module names
-
-    def get_constant
-      res = ""
-      skip_tkspace(false)
-      tk = get_tk
-
-      while tk.kind_of?(TkCOLON2) ||
-          tk.kind_of?(TkCOLON3)   ||
-          tk.kind_of?(TkCONSTANT)          
-        
-        res += tk.text
-        tk = get_tk
-      end
-
-#      if res.empty?
-#        warn("Unexpected token #{tk} in constant")
-#      end 
-      unget_tk(tk)
-      res
-    end
-
-    # Get a constant that may be surrounded by parens
-    
-    def get_constant_with_optional_parens
-      skip_tkspace(false)
-      nest = 0
-      while (tk = peek_tk).kind_of?(TkLPAREN)  || tk.kind_of?(TkfLPAREN)
-        get_tk
-        skip_tkspace(true)
-        nest += 1
-      end
-
-      name = get_constant
-
-      while nest > 0
-        skip_tkspace(true)
-        tk = get_tk
-        nest -= 1 if tk.kind_of?(TkRPAREN)
-      end
-      name
-    end
-
-    # Directives are modifier comments that can appear after class, module,
-    # or method names. For example
-    #
-    #   def fred    # :yields:  a, b
-    #
-    # or
-    #
-    #   class SM  # :nodoc:
-    #
-    # we return the directive name and any parameters as a two element array
-    
-    def read_directive(allowed)
-      tk = get_tk
-      puts "directive: #{tk.inspect}" if $DEBUG
-      result = nil
-      if tk.kind_of?(TkCOMMENT) 
-        if tk.text =~ /\s*:?(\w+):\s*(.*)/
-          directive = $1.downcase
-          if allowed.include?(directive)
-            result = [directive, $2]
-          end
-        end
-      else
-        unget_tk(tk)
-      end
-      result
-    end
-
-    
-    def read_documentation_modifiers(context, allow)
-      dir = read_directive(allow)
-
-      case dir[0]
-
-      when "notnew", "not_new", "not-new"
-        context.dont_rename_initialize = true
-
-      when "nodoc"
-        context.document_self = false
-	if dir[1].downcase == "all"
-	  context.document_children = false
-	end
-
-      when "doc"
-        context.document_self = true
-        context.force_documentation = true
-
-      when "yield", "yields"
-        unless context.params.nil?
-          context.params.sub!(/(,|)\s*&\w+/,'') # remove parameter &proc
-        end
-	context.block_params = dir[1]
-
-      when "arg", "args"
-        context.params = dir[1]
-      end if dir
-    end
-
-    
-    # Look for directives in a normal comment block:
-    #
-    #   #--       - don't display comment from this point forward
-    #  
-    #
-    # This routine modifies it's parameter
-
-    def look_for_directives_in(context, comment)
-
-      preprocess = SM::PreProcess.new(@input_file_name,
-                                      @options.rdoc_include)
-
-      preprocess.handle(comment) do |directive, param|
-        case directive
-        when "stopdoc"
-          context.stop_doc
-          ""
-        when "startdoc"
-          context.start_doc
-          context.force_documentation = true
-          ""
-
-        when "enddoc"
-          #context.done_documenting = true
-          #""
-          throw :enddoc
-
-        when "main"
-          options = Options.instance
-          options.main_page = param
-	  ""
-
-        when "title"
-          options = Options.instance
-          options.title = param
-          ""
-
-        when "section"
-          context.set_current_section(param, comment)
-          comment.replace("") # 1.8 doesn't support #clear
-          break 
-        else
-          warn "Unrecognized directive '#{directive}'"
-          break
-        end
-      end
-
-      remove_private_comments(comment)
-    end
-
-    def remove_private_comments(comment)
-      comment.gsub!(/^#--.*?^#\+\+/m, '')
-      comment.sub!(/^#--.*/m, '')
-    end
-
-
-
-    def get_symbol_or_name
-      tk = get_tk
-      case tk
-      when  TkSYMBOL
-        tk.text.sub(/^:/, '')
-      when TkId, TkOp
-        tk.name
-      when TkSTRING
-        tk.text
-      else
-        raise "Name or symbol expected (got #{tk})"
-      end
-    end
-    
-    def parse_alias(context, single, tk, comment)
-      skip_tkspace
-      if (peek_tk.kind_of? TkLPAREN)
-        get_tk
-        skip_tkspace
-      end
-      new_name = get_symbol_or_name
-      @scanner.instance_eval{@lex_state = EXPR_FNAME}
-      skip_tkspace
-      if (peek_tk.kind_of? TkCOMMA)
-        get_tk
-        skip_tkspace
-      end
-      old_name = get_symbol_or_name
-
-      al = Alias.new(get_tkread, old_name, new_name, comment)
-      read_documentation_modifiers(al, ATTR_MODIFIERS)
-      if al.document_self
-	context.add_alias(al)
-      end
-    end
-
-    def parse_yield_parameters
-      parse_method_or_yield_parameters
-    end
-
-  def parse_yield(context, single, tk, method)
-    if method.block_params.nil?
-      get_tkread
-      @scanner.instance_eval{@continue = false}
-      method.block_params = parse_yield_parameters
-    end
-  end
-
-  def parse_require(context, comment)
-    skip_tkspace_comment
-    tk = get_tk
-    if tk.kind_of? TkLPAREN
-      skip_tkspace_comment
-      tk = get_tk
-    end
-
-    name = nil
-    case tk
-    when TkSTRING
-      name = tk.text
-#    when TkCONSTANT, TkIDENTIFIER, TkIVAR, TkGVAR
-#      name = tk.name
-    when TkDSTRING
-      warn "Skipping require of dynamic string: #{tk.text}"
- #   else
- #     warn "'require' used as variable"
-    end
-    if name
-      context.add_require(Require.new(name, comment))
-    else
-      unget_tk(tk)
-    end
-  end
-
-  def parse_include(context, comment)
-    loop do
-      skip_tkspace_comment
-      name = get_constant_with_optional_parens
-      unless name.empty?
-        context.add_include(Include.new(name, comment))
-      end
-      return unless peek_tk.kind_of?(TkCOMMA)
-      get_tk
-    end
-  end
-
-    def get_bool
-      skip_tkspace
-      tk = get_tk
-      case tk
-      when TkTRUE
-        true
-      when TkFALSE, TkNIL
-        false
-      else
-        unget_tk tk
-        true
-      end
-    end
-
-    def parse_attr(context, single, tk, comment)
-      args = parse_symbol_arg(1)
-      if args.size > 0
-	name = args[0]
-        rw = "R"
-        skip_tkspace(false)
-        tk = get_tk
-        if tk.kind_of? TkCOMMA
-          rw = "RW" if get_bool
-        else
-          unget_tk tk
-        end
-	att = Attr.new(get_tkread, name, rw, comment)
-	read_documentation_modifiers(att, ATTR_MODIFIERS)
-	if att.document_self
-	  context.add_attribute(att)
-	end
-      else
-	warn("'attr' ignored - looks like a variable")
-      end    
-
-    end
-
-    def parse_visibility(container, single, tk)
-      singleton = (single == SINGLE)
-      vis = case tk.name
-            when "private"   then :private
-            when "protected" then :protected
-            when "public"    then :public
-            when "private_class_method"
-              singleton = true
-              :private
-            when "public_class_method"
-              singleton = true
-              :public
-            else raise "Invalid visibility: #{tk.name}"
-            end
-            
-      skip_tkspace_comment(false)
-      case peek_tk
-        # Ryan Davis suggested the extension to ignore modifiers, because he
-        # often writes
-        #
-        #   protected unless $TESTING
-        #
-      when TkNL, TkUNLESS_MOD, TkIF_MOD
-#        error("Missing argument") if singleton        
-        container.ongoing_visibility = vis
-      else
-        args = parse_symbol_arg
-        container.set_visibility_for(args, vis, singleton)
-      end
-    end
-
-    def parse_attr_accessor(context, single, tk, comment)
-      args = parse_symbol_arg
-      read = get_tkread
-      rw = "?"
-
-      # If nodoc is given, don't document any of them
-
-      tmp = CodeObject.new
-      read_documentation_modifiers(tmp, ATTR_MODIFIERS)
-      return unless tmp.document_self
-
-      case tk.name
-      when "attr_reader"   then rw = "R"
-      when "attr_writer"   then rw = "W"
-      when "attr_accessor" then rw = "RW"
-      else
-        rw = @options.extra_accessor_flags[tk.name]
-      end
-      
-      for name in args
-	att = Attr.new(get_tkread, name, rw, comment)
-        context.add_attribute(att)
-      end    
-    end
-
-    def skip_tkspace_comment(skip_nl = true)
-      loop do
-        skip_tkspace(skip_nl)
-        return unless peek_tk.kind_of? TkCOMMENT
-        get_tk
-      end
-    end
-
-    def parse_symbol_arg(no = nil)
-
-      args = []
-      skip_tkspace_comment
-      case tk = get_tk
-      when TkLPAREN
-	loop do
-	  skip_tkspace_comment
-	  if tk1 = parse_symbol_in_arg
-	    args.push tk1
-	    break if no and args.size >= no
-	  end
-	  
-	  skip_tkspace_comment
-	  case tk2 = get_tk
-	  when TkRPAREN
-	    break
-	  when TkCOMMA
-	  else
-           warn("unexpected token: '#{tk2.inspect}'") if $DEBUG
-	    break
-	  end
-	end
-      else
-	unget_tk tk
-	if tk = parse_symbol_in_arg
-	  args.push tk
-	  return args if no and args.size >= no
-	end
-
-	loop do
-#	  skip_tkspace_comment(false)
-	  skip_tkspace(false)
-
-	  tk1 = get_tk
-	  unless tk1.kind_of?(TkCOMMA) 
-	    unget_tk tk1
-	    break
-	  end
-	  
-	  skip_tkspace_comment
-	  if tk = parse_symbol_in_arg
-	    args.push tk
-	    break if no and args.size >= no
-	  end
-	end
-      end
-      args
-    end
-
-    def parse_symbol_in_arg
-      case tk = get_tk
-      when TkSYMBOL
-        tk.text.sub(/^:/, '')
-      when TkSTRING
-	eval @read[-1]
-      else
-	warn("Expected symbol or string, got #{tk.inspect}") if $DEBUG
-	nil
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_simple.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_simple.rb
deleted file mode 100644
index 3f1a546..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parse_simple.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# Parse a non-source file. We basically take the whole thing 
-# as one big comment. If the first character in the file
-# is '#', we strip leading pound signs.
-
-
-require "rdoc/code_objects"
-require "rdoc/markup/simple_markup/preprocess"
-
-module RDoc
-  # See rdoc/parsers/parse_c.rb
-
-  class SimpleParser
-    
-    # prepare to parse a plain file
-    def initialize(top_level, file_name, body, options, stats)
-      
-      preprocess = SM::PreProcess.new(file_name, options.rdoc_include)
-      
-      preprocess.handle(body) do |directive, param|
-        $stderr.puts "Unrecognized directive '#{directive}' in #{file_name}"
-      end
-      
-      @body = body
-      @options = options
-      @top_level = top_level
-    end
-    
-    # Extract the file contents and attach them to the toplevel as a
-    # comment
-    
-    def scan
-      #    @body.gsub(/^(\s\n)+/, '')
-      @top_level.comment = remove_private_comments(@body)
-      @top_level
-    end
-
-    def remove_private_comments(comment)
-      comment.gsub(/^--.*?^\+\+/m, '').sub(/^--.*/m, '')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parserfactory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parserfactory.rb
deleted file mode 100644
index 00a82cf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/parsers/parserfactory.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require "rdoc/parsers/parse_simple"
-
-module RDoc
-
-  # A parser is simple a class that implements
-  #
-  #   #initialize(file_name, body, options)
-  #
-  # and
-  #
-  #   #scan
-  #
-  # The initialize method takes a file name to be used, the body of the
-  # file, and an RDoc::Options object. The scan method is then called
-  # to return an appropriately parsed TopLevel code object.
-  #
-  # The ParseFactory is used to redirect to the correct parser given a filename
-  # extension. This magic works because individual parsers have to register 
-  # themselves with us as they are loaded in. The do this using the following
-  # incantation
-  #
-  #
-  #    require "rdoc/parsers/parsefactory"
-  #    
-  #    module RDoc
-  #    
-  #      class XyzParser
-  #        extend ParseFactory                  <<<<
-  #        parse_files_matching /\.xyz$/        <<<<
-  #    
-  #        def initialize(file_name, body, options)
-  #          ...
-  #        end
-  #    
-  #        def scan
-  #          ...
-  #        end
-  #      end
-  #    end
-  #
-  # Just to make life interesting, if we suspect a plain text file, we
-  # also look for a shebang line just in case it's a potential
-  # shell script
-
-
-
-  module ParserFactory
-
-    @@parsers = []
-
-    Parsers = Struct.new(:regexp, :parser)
-
-    # Record the fact that a particular class parses files that
-    # match a given extension
-
-    def parse_files_matching(regexp)
-      @@parsers.unshift Parsers.new(regexp, self)
-    end
-
-    # Return a parser that can handle a particular extension
-
-    def ParserFactory.can_parse(file_name)
-      @@parsers.find {|p| p.regexp.match(file_name) }
-    end
-
-    # Alias an extension to another extension. After this call,
-    # files ending "new_ext" will be parsed using the same parser
-    # as "old_ext"
-
-    def ParserFactory.alias_extension(old_ext, new_ext)
-      parser = ParserFactory.can_parse("xxx.#{old_ext}")
-      return false unless parser
-      @@parsers.unshift Parsers.new(Regexp.new("\\.#{new_ext}$"), parser.parser)
-      true
-    end
-
-    # Find the correct parser for a particular file name. Return a 
-    # SimpleParser for ones that we don't know
-
-    def ParserFactory.parser_for(top_level, file_name, body, options, stats)
-      # If no extension, look for shebang
-      if file_name !~ /\.\w+$/ && body =~ %r{\A#!(.+)}
-        shebang = $1
-        case shebang
-        when %r{env\s+ruby}, %r{/ruby}
-          file_name = "dummy.rb"
-        end
-      end
-      parser_description = can_parse(file_name)
-      if parser_description
-        parser = parser_description.parser 
-      else
-        parser = SimpleParser
-      end
-
-      parser.new(top_level, file_name, body, options, stats)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/rdoc.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/rdoc.rb
deleted file mode 100644
index 91f5611..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/rdoc.rb
+++ /dev/null
@@ -1,298 +0,0 @@
-# See README.
-#
- 
-
-VERSION_STRING = %{RDoc V1.0.1 - 20041108}
-
-
-require 'rdoc/parsers/parse_rb.rb'
-require 'rdoc/parsers/parse_c.rb'
-require 'rdoc/parsers/parse_f95.rb'
-
-require 'rdoc/parsers/parse_simple.rb'
-require 'rdoc/options'
-
-require 'rdoc/diagram'
-
-require 'find'
-require 'ftools'
-require 'time'
-
-# We put rdoc stuff in the RDoc module to avoid namespace
-# clutter.
-#
-# ToDo: This isn't universally true.
-#
-# :include: README
-
-module RDoc
-
-  # Name of the dotfile that contains the description of files to be
-  # processed in the current directory
-  DOT_DOC_FILENAME = ".document"
-
-  # Simple stats collector
-  class Stats
-    attr_accessor :num_files, :num_classes, :num_modules, :num_methods
-    def initialize
-      @num_files = @num_classes = @num_modules = @num_methods = 0
-      @start = Time.now
-    end
-    def print
-      puts "Files:   #@num_files"
-      puts "Classes: #@num_classes"
-      puts "Modules: #@num_modules"
-      puts "Methods: #@num_methods"
-      puts "Elapsed: " + sprintf("%0.3fs", Time.now - @start)
-    end
-  end
-
-
-  # Exception thrown by any rdoc error. Only the #message part is
-  # of use externally.
-
-  class RDocError < Exception
-  end
-
-  # Encapsulate the production of rdoc documentation. Basically
-  # you can use this as you would invoke rdoc from the command
-  # line:
-  #
-  #    rdoc = RDoc::RDoc.new
-  #    rdoc.document(args)
-  #
-  # where _args_ is an array of strings, each corresponding to
-  # an argument you'd give rdoc on the command line. See rdoc/rdoc.rb 
-  # for details.
-  
-  class RDoc
-
-    ##
-    # This is the list of output generators that we
-    # support
-    
-    Generator = Struct.new(:file_name, :class_name, :key)
-    
-    GENERATORS = {}
-    $:.collect {|d|
-      File::expand_path(d)
-    }.find_all {|d|
-      File::directory?("#{d}/rdoc/generators")
-    }.each {|dir|
-      Dir::entries("#{dir}/rdoc/generators").each {|gen|
-        next unless /(\w+)_generator.rb$/ =~ gen
-        type = $1
-        unless GENERATORS.has_key? type
-          GENERATORS[type] = Generator.new("rdoc/generators/#{gen}",
-                                           "#{type.upcase}Generator".intern,
-                                           type)
-        end
-      }
-    }                                                    
-
-    #######
-    private
-    #######
-
-    ##
-    # Report an error message and exit
-    
-    def error(msg)
-      raise RDocError.new(msg)
-    end
-    
-    ##
-    # Create an output dir if it doesn't exist. If it does
-    # exist, but doesn't contain the flag file <tt>created.rid</tt>
-    # then we refuse to use it, as we may clobber some
-    # manually generated documentation
-    
-    def setup_output_dir(op_dir, force)
-      flag_file = output_flag_file(op_dir)
-      if File.exist?(op_dir)
-        unless File.directory?(op_dir)
-          error "'#{op_dir}' exists, and is not a directory" 
-        end
-        begin
-          created = File.read(flag_file)
-        rescue SystemCallError
-          error "\nDirectory #{op_dir} already exists, but it looks like it\n" +
-            "isn't an RDoc directory. Because RDoc doesn't want to risk\n" +
-            "destroying any of your existing files, you'll need to\n" +
-            "specify a different output directory name (using the\n" +
-            "--op <dir> option).\n\n"
-        else
-          last = (Time.parse(created) unless force rescue nil)
-        end
-      else
-        File.makedirs(op_dir)
-      end
-      last
-    end
-
-    # Update the flag file in an output directory.
-    def update_output_dir(op_dir, time)
-      File.open(output_flag_file(op_dir), "w") {|f| f.puts time.rfc2822 }
-    end
-
-    # Return the path name of the flag file in an output directory.
-    def output_flag_file(op_dir)
-      File.join(op_dir, "created.rid")
-    end
-
-    # The .document file contains a list of file and directory name
-    # patterns, representing candidates for documentation. It may
-    # also contain comments (starting with '#')
-    def parse_dot_doc_file(in_dir, filename, options)
-      # read and strip comments
-      patterns = File.read(filename).gsub(/#.*/, '')
-
-      result = []
-
-      patterns.split.each do |patt|
-        candidates = Dir.glob(File.join(in_dir, patt))
-        result.concat(normalized_file_list(options,  candidates))
-      end
-      result
-    end
-
-
-    # Given a list of files and directories, create a list
-    # of all the Ruby files they contain. 
-    #
-    # If +force_doc+ is true, we always add the given files.
-    # If false, only add files that we guarantee we can parse
-    # It is true when looking at files given on the command line,
-    # false when recursing through subdirectories. 
-    #
-    # The effect of this is that if you want a file with a non-
-    # standard extension parsed, you must name it explicity.
-    #
-
-    def normalized_file_list(options, relative_files, force_doc = false, exclude_pattern=nil)
-      file_list = []
-
-      relative_files.each do |rel_file_name|
-        next if exclude_pattern && exclude_pattern =~ rel_file_name
-        stat = File.stat(rel_file_name)
-        case type = stat.ftype
-        when "file"
-          next if @last_created and stat.mtime < @last_created
-          file_list << rel_file_name.sub(/^\.\//, '') if force_doc || ParserFactory.can_parse(rel_file_name)
-        when "directory"
-          next if rel_file_name == "CVS" || rel_file_name == ".svn"
-          dot_doc = File.join(rel_file_name, DOT_DOC_FILENAME)
-          if File.file?(dot_doc)
-            file_list.concat(parse_dot_doc_file(rel_file_name, dot_doc, options))
-          else
-            file_list.concat(list_files_in_directory(rel_file_name, options))
-          end
-        else
-          raise RDocError.new("I can't deal with a #{type} #{rel_file_name}")
-        end
-      end
-      file_list
-    end
-
-    # Return a list of the files to be processed in
-    # a directory. We know that this directory doesn't have
-    # a .document file, so we're looking for real files. However
-    # we may well contain subdirectories which must
-    # be tested for .document files
-    def list_files_in_directory(dir, options)
-      normalized_file_list(options, Dir.glob(File.join(dir, "*")), false, options.exclude)
-    end
-
-
-    # Parse each file on the command line, recursively entering
-    # directories
-
-    def parse_files(options)
- 
-      file_info = []
-
-      files = options.files
-      files = ["."] if files.empty?
-
-      file_list = normalized_file_list(options, files, true)
-
-      file_list.each do |fn|
-        $stderr.printf("\n%35s: ", File.basename(fn)) unless options.quiet
-        
-        content = File.open(fn, "r") {|f| f.read}
-
-        top_level = TopLevel.new(fn)
-        parser = ParserFactory.parser_for(top_level, fn, content, options, @stats)
-        file_info << parser.scan
-        @stats.num_files += 1
-      end
-
-      file_info
-    end
-
-
-    public
-
-    ###################################################################
-    #
-    # Format up one or more files according to the given arguments.
-    # For simplicity, _argv_ is an array of strings, equivalent to the
-    # strings that would be passed on the command line. (This isn't a
-    # coincidence, as we _do_ pass in ARGV when running
-    # interactively). For a list of options, see rdoc/rdoc.rb. By
-    # default, output will be stored in a directory called +doc+ below
-    # the current directory, so make sure you're somewhere writable
-    # before invoking.
-    #
-    # Throws: RDocError on error
-
-    def document(argv)
-
-      TopLevel::reset
-
-      @stats = Stats.new
-
-      options = Options.instance
-      options.parse(argv, GENERATORS)
-
-      @last_created = nil
-      unless options.all_one_file
-        @last_created = setup_output_dir(options.op_dir, options.force_update)
-      end
-      start_time = Time.now
-
-      file_info = parse_files(options)
-
-      if file_info.empty?
-        $stderr.puts "\nNo newer files." unless options.quiet
-      else
-        gen = options.generator
-
-        $stderr.puts "\nGenerating #{gen.key.upcase}..." unless options.quiet
-
-        require gen.file_name
-
-        gen_class = Generators.const_get(gen.class_name)
-        gen = gen_class.for(options)
-
-        pwd = Dir.pwd
-
-        Dir.chdir(options.op_dir)  unless options.all_one_file
-
-        begin
-          Diagram.new(file_info, options).draw if options.diagram
-          gen.generate(file_info)
-          update_output_dir(".", start_time)
-        ensure
-          Dir.chdir(pwd)
-        end
-      end
-
-      unless options.quiet
-        puts
-        @stats.print
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_cache.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_cache.rb
deleted file mode 100644
index 1844ac9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_cache.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-module RI
-
-  class ClassEntry
-
-    attr_reader :name
-    attr_reader :path_names
-    
-    def initialize(path_name, name, in_class)
-      @path_names = [ path_name ]
-      @name = name
-      @in_class = in_class
-      @class_methods    = []
-      @instance_methods = []
-      @inferior_classes = []
-    end
-
-    # We found this class in more tha one place, so add
-    # in the name from there.
-    def add_path(path)
-      @path_names << path
-    end
-
-    # read in our methods and any classes
-    # and modules in our namespace. Methods are
-    # stored in files called name-c|i.yaml,
-    # where the 'name' portion is the external
-    # form of the method name and the c|i is a class|instance
-    # flag
-
-    def load_from(dir)
-      Dir.foreach(dir) do |name|
-        next if name =~ /^\./
-
-        # convert from external to internal form, and
-        # extract the instance/class flag
-
-        if name =~ /^(.*?)-(c|i).yaml$/
-          external_name = $1
-          is_class_method = $2 == "c"
-          internal_name = RiWriter.external_to_internal(external_name)
-          list = is_class_method ? @class_methods : @instance_methods
-          path = File.join(dir, name)
-          list << MethodEntry.new(path, internal_name, is_class_method, self)
-        else
-          full_name = File.join(dir, name)
-          if File.directory?(full_name)
-            inf_class = @inferior_classes.find {|c| c.name == name }
-            if inf_class
-              inf_class.add_path(full_name)
-            else
-              inf_class = ClassEntry.new(full_name, name, self)
-              @inferior_classes << inf_class
-            end
-            inf_class.load_from(full_name)
-          end
-        end
-      end
-    end
-
-    # Return a list of any classes or modules that we contain
-    # that match a given string
-
-    def contained_modules_matching(name)
-      @inferior_classes.find_all {|c| c.name[name]}
-    end
-
-    def classes_and_modules
-      @inferior_classes
-    end
-
-    # Return an exact match to a particular name
-    def contained_class_named(name)
-      @inferior_classes.find {|c| c.name == name}
-    end
-
-    # return the list of local methods matching name
-    # We're split into two because we need distinct behavior
-    # when called from the _toplevel_
-    def methods_matching(name, is_class_method)
-      local_methods_matching(name, is_class_method)
-    end
-
-    # Find methods matching 'name' in ourselves and in
-    # any classes we contain
-    def recursively_find_methods_matching(name, is_class_method)
-      res = local_methods_matching(name, is_class_method)
-      @inferior_classes.each do |c|
-        res.concat(c.recursively_find_methods_matching(name, is_class_method))
-      end
-      res
-    end
-
-
-    # Return our full name
-    def full_name
-      res = @in_class.full_name
-      res << "::" unless res.empty?
-      res << @name
-    end
-
-    # Return a list of all out method names
-    def all_method_names
-      res = @class_methods.map {|m| m.full_name }
-      @instance_methods.each {|m| res << m.full_name}
-      res
-    end
-
-    private
-
-    # Return a list of all our methods matching a given string.
-    # Is +is_class_methods+ if 'nil', we don't care if the method
-    # is a class method or not, otherwise we only return
-    # those methods that match
-    def local_methods_matching(name, is_class_method)
-
-      list = case is_class_method
-             when nil then  @class_methods + @instance_methods
-             when true then @class_methods
-             when false then @instance_methods
-             else fail "Unknown is_class_method: #{is_class_method.inspect}"
-             end
-
-      list.find_all {|m| m.name;  m.name[name]}
-    end
-  end
-
-  # A TopLevelEntry is like a class entry, but when asked to search
-  # for methods searches all classes, not just itself
-
-  class TopLevelEntry < ClassEntry
-    def methods_matching(name, is_class_method)
-      res = recursively_find_methods_matching(name, is_class_method)
-    end
-
-    def full_name
-      ""
-    end
-
-    def module_named(name)
-      
-    end
-
-  end
-
-  class MethodEntry
-    attr_reader :name
-    attr_reader :path_name
-
-    def initialize(path_name, name, is_class_method, in_class)
-      @path_name = path_name
-      @name = name
-      @is_class_method = is_class_method
-      @in_class = in_class
-    end
-
-    def full_name
-      res = @in_class.full_name
-      unless res.empty?
-        if @is_class_method
-          res << "::"
-        else
-          res << "#"
-        end
-      end
-      res << @name
-    end
-  end
-
-  # We represent everything know about all 'ri' files
-  # accessible to this program
-
-  class RiCache
-
-    attr_reader :toplevel
-
-    def initialize(dirs)
-      # At the top level we have a dummy module holding the
-      # overall namespace
-      @toplevel = TopLevelEntry.new('', '::', nil)
-
-      dirs.each do |dir|
-        @toplevel.load_from(dir)
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb
deleted file mode 100644
index e5ea9f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require 'yaml'
-require 'rdoc/markup/simple_markup/fragments'
-
-# Descriptions are created by RDoc (in ri_generator) and
-# written out in serialized form into the documentation
-# tree. ri then reads these to generate the documentation
-
-module RI
-  class NamedThing
-    attr_reader :name
-    def initialize(name)
-      @name = name
-    end
-    def <=>(other)
-      @name <=> other.name
-    end
-
-    def hash
-      @name.hash
-    end
-
-    def eql?(other)
-      @name.eql?(other)
-    end
-  end
-
-#  Alias          = Struct.new(:old_name, :new_name)
-
-  class AliasName < NamedThing
-  end
-
-  class Attribute < NamedThing
-    attr_reader :rw, :comment
-    def initialize(name, rw, comment)
-      super(name)
-      @rw = rw
-      @comment = comment
-    end
-  end
-
-  class Constant < NamedThing
-    attr_reader :value, :comment
-    def initialize(name, value, comment)
-      super(name)
-      @value = value
-      @comment = comment
-    end
-  end
-
-  class IncludedModule < NamedThing
-  end
-
-
-  class MethodSummary < NamedThing
-    def initialize(name="")
-      super
-    end
-  end
-
-
-
-  class Description
-    attr_accessor :name
-    attr_accessor :full_name
-    attr_accessor :comment
-
-    def serialize
-      self.to_yaml
-    end
-
-    def Description.deserialize(from)
-      YAML.load(from)
-    end
-
-    def <=>(other)
-      @name <=> other.name
-    end
-  end
-  
-  class ModuleDescription < Description
-    
-    attr_accessor :class_methods
-    attr_accessor :instance_methods
-    attr_accessor :attributes
-    attr_accessor :constants
-    attr_accessor :includes
-
-    # merge in another class desscription into this one
-    def merge_in(old)
-      merge(@class_methods, old.class_methods)
-      merge(@instance_methods, old.instance_methods)
-      merge(@attributes, old.attributes)
-      merge(@constants, old.constants)
-      merge(@includes, old.includes)
-      if @comment.nil? || @comment.empty?
-        @comment = old.comment
-      else
-        unless old.comment.nil? or old.comment.empty? then
-          @comment << SM::Flow::RULE.new
-          @comment.concat old.comment
-        end
-      end
-    end
-
-    def display_name
-      "Module"
-    end
-
-    # the 'ClassDescription' subclass overrides this
-    # to format up the name of a parent
-    def superclass_string
-      nil
-    end
-
-    private
-
-    def merge(into, from)
-      names = {}
-      into.each {|i| names[i.name] = i }
-      from.each {|i| names[i.name] = i }
-      into.replace(names.keys.sort.map {|n| names[n]})
-    end
-  end
-  
-  class ClassDescription < ModuleDescription
-    attr_accessor :superclass
-
-    def display_name
-      "Class"
-    end
-
-    def superclass_string
-      if @superclass && @superclass != "Object"
-        @superclass
-      else
-        nil
-      end
-    end
-  end
-
-
-  class MethodDescription < Description
-    
-    attr_accessor :is_class_method
-    attr_accessor :visibility
-    attr_accessor :block_params
-    attr_accessor :is_singleton
-    attr_accessor :aliases
-    attr_accessor :is_alias_for
-    attr_accessor :params
-
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_display.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_display.rb
deleted file mode 100644
index 67962fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_display.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-require 'rdoc/ri/ri_util'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-
-# This is a kind of 'flag' module. If you want to write your
-# own 'ri' display module (perhaps because you'r writing
-# an IDE or somesuch beast), you simply write a class
-# which implements the various 'display' methods in 'DefaultDisplay',
-# and include the 'RiDisplay' module in that class. 
-#
-# To access your class from the command line, you can do
-#
-#    ruby -r <your source file>  ../ri ....
-#
-# If folks _really_ want to do this from the command line,
-# I'll build an option in
-
-module RiDisplay
-  @@display_class = nil
-
-  def RiDisplay.append_features(display_class)
-    @@display_class = display_class
-  end
-
-  def RiDisplay.new(*args)
-    @@display_class.new(*args)
-  end
-end
-
-######################################################################
-#
-# A paging display module. Uses the ri_formatter class to do the
-# actual presentation
-#
-
-class  DefaultDisplay
-
-  include RiDisplay
-
-  def initialize(options)
-    @options = options
-    @formatter = @options.formatter.new(@options, "     ")
-  end    
-  
-  
-  ######################################################################
-  
-  def display_usage
-    page do
-      RI::Options::OptionList.usage(short_form=true)
-    end
-  end
-
-
-  ######################################################################
-  
-  def display_method_info(method)
-    page do
-      @formatter.draw_line(method.full_name)
-      display_params(method)
-      @formatter.draw_line
-      display_flow(method.comment)
-      if method.aliases && !method.aliases.empty?
-        @formatter.blankline
-        aka = "(also known as "
-        aka << method.aliases.map {|a| a.name }.join(", ") 
-        aka << ")"
-        @formatter.wrap(aka)
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  def display_class_info(klass, ri_reader)
-    page do 
-      superclass = klass.superclass_string
-      
-      if superclass
-        superclass = " < " + superclass
-      else
-        superclass = ""
-      end
-      
-      @formatter.draw_line(klass.display_name + ": " +
-                           klass.full_name + superclass)
-      
-      display_flow(klass.comment)
-      @formatter.draw_line 
-    
-      unless klass.includes.empty?
-        @formatter.blankline
-        @formatter.display_heading("Includes:", 2, "")
-        incs = []
-        klass.includes.each do |inc|
-          inc_desc = ri_reader.find_class_by_name(inc.name)
-          if inc_desc
-            str = inc.name + "("
-            str << inc_desc.instance_methods.map{|m| m.name}.join(", ")
-            str << ")"
-            incs << str
-          else
-            incs << inc.name
-          end
-      end
-        @formatter.wrap(incs.sort.join(', '))
-      end
-      
-      unless klass.constants.empty?
-        @formatter.blankline
-        @formatter.display_heading("Constants:", 2, "")
-        len = 0
-        klass.constants.each { |c| len = c.name.length if c.name.length > len }
-        len += 2
-        klass.constants.each do |c|
-          @formatter.wrap(c.value, 
-                          @formatter.indent+((c.name+":").ljust(len)))
-        end 
-      end
-      
-      unless klass.class_methods.empty?
-        @formatter.blankline
-        @formatter.display_heading("Class methods:", 2, "")
-        @formatter.wrap(klass.class_methods.map{|m| m.name}.sort.join(', '))
-      end
-      
-      unless klass.instance_methods.empty?
-        @formatter.blankline
-        @formatter.display_heading("Instance methods:", 2, "")
-        @formatter.wrap(klass.instance_methods.map{|m| m.name}.sort.join(', '))
-      end
-      
-      unless klass.attributes.empty?
-        @formatter.blankline
-        @formatter.wrap("Attributes:", "")
-        @formatter.wrap(klass.attributes.map{|a| a.name}.sort.join(', '))
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  # Display a list of method names
-  
-  def display_method_list(methods)
-    page do
-      puts "More than one method matched your request. You can refine"
-      puts "your search by asking for information on one of:\n\n"
-      @formatter.wrap(methods.map {|m| m.full_name} .join(", "))
-    end
-  end
-  
-  ######################################################################
-  
-  def display_class_list(namespaces)
-    page do
-      puts "More than one class or module matched your request. You can refine"
-      puts "your search by asking for information on one of:\n\n"
-      @formatter.wrap(namespaces.map {|m| m.full_name}.join(", "))
-    end
-  end
-  
-  ######################################################################
-
-  def list_known_classes(classes)
-    if classes.empty?
-      warn_no_database
-    else
-      page do 
-        @formatter.draw_line("Known classes and modules")
-        @formatter.blankline
-        @formatter.wrap(classes.sort.join(", "))
-      end
-    end
-  end
-
-  ######################################################################
-
-  def list_known_names(names)
-    if names.empty?
-      warn_no_database
-    else
-      page do 
-        names.each {|n| @formatter.raw_print_line(n)}
-      end
-    end
-  end
-
-  ######################################################################
-
-  private
-
-  ######################################################################
-
-  def page
-    return yield unless pager = setup_pager
-    begin
-      save_stdout = STDOUT.clone
-      STDOUT.reopen(pager)
-      yield
-    ensure
-      STDOUT.reopen(save_stdout)
-      save_stdout.close
-      pager.close
-    end
-  end
-
-  ######################################################################
-
-  def setup_pager
-    unless @options.use_stdout
-      for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
-        return IO.popen(pager, "w") rescue nil
-      end
-      @options.use_stdout = true
-      nil
-    end
-  end
-
-  ######################################################################
-  
-  def display_params(method)
-
-    params = method.params
-
-    if params[0,1] == "("
-      if method.is_singleton
-        params = method.full_name + params
-      else
-        params = method.name + params
-      end
-    end
-    params.split(/\n/).each do |p|
-      @formatter.wrap(p) 
-      @formatter.break_to_newline
-    end
-  end
-  ######################################################################
-  
-  def display_flow(flow)
-    if !flow || flow.empty?
-      @formatter.wrap("(no description...)")
-    else
-      @formatter.display_flow(flow)
-    end
-  end
-
-  ######################################################################
-  
-  def warn_no_database
-    puts "Before using ri, you need to generate documentation"
-    puts "using 'rdoc' with the --ri option"
-  end
-end  # class RiDisplay
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_driver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_driver.rb
deleted file mode 100644
index a00f20e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_driver.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-require 'rdoc/ri/ri_paths'
-require 'rdoc/usage'
-require 'rdoc/ri/ri_cache'
-require 'rdoc/ri/ri_util'
-require 'rdoc/ri/ri_reader'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-
-######################################################################
-
-class  RiDriver
-
-  def initialize
-    @options = RI::Options.instance
-
-    args = ARGV
-    if ENV["RI"]
-      args = ENV["RI"].split.concat(ARGV)
-    end
-
-    @options.parse(args)
-
-    path = @options.path
-    report_missing_documentation @options.raw_path if path.empty?
-
-    @ri_reader = RI::RiReader.new(RI::RiCache.new(path))
-    @display   = @options.displayer
-  end
-  
-  # Couldn't find documentation in +path+, so tell the user what to do
-
-  def report_missing_documentation(path)
-    STDERR.puts "No ri documentation found in:"
-    path.each do |d|
-      STDERR.puts "     #{d}"
-    end
-    STDERR.puts "\nWas rdoc run to create documentation?\n\n"
-    RDoc::usage("Installing Documentation")
-  end
-  
-  ######################################################################
-  
-  # If the list of matching methods contains exactly one entry, or
-  # if it contains an entry that exactly matches the requested method,
-  # then display that entry, otherwise display the list of
-  # matching method names
-  
-  def report_method_stuff(requested_method_name, methods)
-    if methods.size == 1
-      method = @ri_reader.get_method(methods[0])
-      @display.display_method_info(method)
-    else
-      entries = methods.find_all {|m| m.name == requested_method_name}
-      if entries.size == 1
-        method = @ri_reader.get_method(entries[0])
-        @display.display_method_info(method)
-      else
-        @display.display_method_list(methods)
-      end
-    end
-  end
-  
-  ######################################################################
-  
-  def report_class_stuff(namespaces)
-    if namespaces.size == 1
-      klass = @ri_reader.get_class(namespaces[0])
-      @display.display_class_info(klass, @ri_reader)
-    else 
-#      entries = namespaces.find_all {|m| m.full_name == requested_class_name}
-#      if entries.size == 1
-#        klass = @ri_reader.get_class(entries[0])
-#        @display.display_class_info(klass, @ri_reader)
-#      else
-        @display.display_class_list(namespaces)
-#      end
-    end
-  end
-  
-  ######################################################################
-  
-  
-  def get_info_for(arg)
-    desc = NameDescriptor.new(arg)
-
-    namespaces = @ri_reader.top_level_namespace
-    
-    for class_name in desc.class_names
-      namespaces = @ri_reader.lookup_namespace_in(class_name, namespaces)
-      if namespaces.empty?
-        raise RiError.new("Nothing known about #{arg}")
-      end
-    end
-
-    # at this point, if we have multiple possible namespaces, but one
-    # is an exact match for our requested class, prune down to just it
-
-    full_class_name = desc.full_class_name
-    entries = namespaces.find_all {|m| m.full_name == full_class_name}
-    namespaces = entries if entries.size == 1
-
-    if desc.method_name.nil?
-      report_class_stuff(namespaces)
-    else
-      methods = @ri_reader.find_methods(desc.method_name, 
-                                        desc.is_class_method,
-                                        namespaces)
-
-      if methods.empty?
-        raise RiError.new("Nothing known about #{arg}")
-      else
-        report_method_stuff(desc.method_name, methods)
-      end
-    end
-  end
-
-  ######################################################################
-
-  def process_args
-    if @options.list_classes
-      classes = @ri_reader.full_class_names
-      @display.list_known_classes(classes)
-    elsif @options.list_names
-      names = @ri_reader.all_names
-      @display.list_known_names(names)
-    else
-      if ARGV.size.zero?
-        @display.display_usage
-      else
-        begin
-          ARGV.each do |arg|
-            get_info_for(arg)
-          end
-        rescue RiError => e
-          STDERR.puts(e.message)
-          exit(1)
-        end
-      end
-    end
-  end
-
-end  # class RiDriver
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_formatter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_formatter.rb
deleted file mode 100644
index 34eb561..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_formatter.rb
+++ /dev/null
@@ -1,672 +0,0 @@
-module RI
-  class TextFormatter
-
-    attr_reader :indent
-    
-    def initialize(options, indent)
-      @options = options
-      @width   = options.width
-      @indent  = indent
-    end
-    
-    
-    ######################################################################
-    
-    def draw_line(label=nil)
-      len = @width
-      len -= (label.size+1) if label
-      print "-"*len
-      if label
-        print(" ")
-        bold_print(label) 
-      end
-      puts
-    end
-    
-    ######################################################################
-    
-    def wrap(txt,  prefix=@indent, linelen=@width)
-      return unless txt && !txt.empty?
-      work = conv_markup(txt)
-      textLen = linelen - prefix.length
-      patt = Regexp.new("^(.{0,#{textLen}})[ \n]")
-      next_prefix = prefix.tr("^ ", " ")
-
-      res = []
-
-      while work.length > textLen
-        if work =~ patt
-          res << $1
-          work.slice!(0, $&.length)
-        else
-          res << work.slice!(0, textLen)
-        end
-      end
-      res << work if work.length.nonzero?
-      puts(prefix + res.join("\n" + next_prefix))
-    end
-
-    ######################################################################
-
-    def blankline
-      puts
-    end
-    
-    ######################################################################
-
-    # called when we want to ensure a nbew 'wrap' starts on a newline
-    # Only needed for HtmlFormatter, because the rest do their
-    # own line breaking
-
-    def break_to_newline
-    end
-    
-    ######################################################################
-
-    def bold_print(txt)
-      print txt
-    end
-
-    ######################################################################
-
-    def raw_print_line(txt)
-      puts txt
-    end
-
-    ######################################################################
-
-    # convert HTML entities back to ASCII
-    def conv_html(txt)
-      txt.
-          gsub(/>/, '>').
-          gsub(/</, '<').
-          gsub(/"/, '"').
-          gsub(/&/, '&')
-          
-    end
-
-    # convert markup into display form
-    def conv_markup(txt)
-      txt.
-          gsub(%r{<tt>(.*?)</tt>}) { "+#$1+" } .
-          gsub(%r{<code>(.*?)</code>}) { "+#$1+" } .
-          gsub(%r{<b>(.*?)</b>}) { "*#$1*" } .
-          gsub(%r{<em>(.*?)</em>}) { "_#$1_" }
-    end
-
-    ######################################################################
-
-    def display_list(list)
-      case list.type
-
-      when SM::ListBase::BULLET 
-        prefixer = proc { |ignored| @indent + "*   " }
-
-      when SM::ListBase::NUMBER,
-      SM::ListBase::UPPERALPHA,
-      SM::ListBase::LOWERALPHA
-
-        start = case list.type
-                when SM::ListBase::NUMBER      then 1
-                when  SM::ListBase::UPPERALPHA then 'A'
-                when SM::ListBase::LOWERALPHA  then 'a'
-                end
-        prefixer = proc do |ignored|
-          res = @indent + "#{start}.".ljust(4)
-          start = start.succ
-          res
-        end
-        
-      when SM::ListBase::LABELED
-        prefixer = proc do |li|
-          li.label
-        end
-
-      when SM::ListBase::NOTE
-        longest = 0
-        list.contents.each do |item|
-          if item.kind_of?(SM::Flow::LI) && item.label.length > longest
-            longest = item.label.length
-          end
-        end
-
-        prefixer = proc do |li|
-          @indent + li.label.ljust(longest+1)
-        end
-
-      else
-        fail "unknown list type"
-
-      end
-
-      list.contents.each do |item|
-        if item.kind_of? SM::Flow::LI
-          prefix = prefixer.call(item)
-          display_flow_item(item, prefix)
-        else
-          display_flow_item(item)
-        end
-       end
-    end
-
-    ######################################################################
-
-    def display_flow_item(item, prefix=@indent)
-      case item
-      when SM::Flow::P, SM::Flow::LI
-        wrap(conv_html(item.body), prefix)
-        blankline
-        
-      when SM::Flow::LIST
-        display_list(item)
-
-      when SM::Flow::VERB
-        display_verbatim_flow_item(item, @indent)
-
-      when SM::Flow::H
-        display_heading(conv_html(item.text), item.level, @indent)
-
-      when SM::Flow::RULE
-        draw_line
-
-      else
-        fail "Unknown flow element: #{item.class}"
-      end
-    end
-
-    ######################################################################
-
-    def display_verbatim_flow_item(item, prefix=@indent)
-        item.body.split(/\n/).each do |line|
-          print @indent, conv_html(line), "\n"
-        end
-        blankline
-    end
-
-    ######################################################################
-
-    def display_heading(text, level, indent)
-      text = strip_attributes(text)
-      case level
-      when 1
-        ul = "=" * text.length
-        puts
-        puts text.upcase
-        puts ul
-#        puts
-        
-      when 2
-        ul = "-" * text.length
-        puts
-        puts text
-        puts ul
-#        puts
-      else
-        print indent, text, "\n"
-      end
-    end
-
-
-    def display_flow(flow)
-      flow.each do |f|
-        display_flow_item(f)
-      end
-    end
-
-    def strip_attributes(txt)
-      tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
-      text = [] 
-      attributes = 0
-      tokens.each do |tok|
-        case tok
-        when %r{^</(\w+)>$}, %r{^<(\w+)>$}
-          ;
-        else
-          text << tok
-        end
-      end
-      text.join
-    end
-
-
-  end
-  
-  
-  ######################################################################
-  # Handle text with attributes. We're a base class: there are
-  # different presentation classes (one, for example, uses overstrikes
-  # to handle bold and underlining, while another using ANSI escape
-  # sequences
-  
-  class AttributeFormatter < TextFormatter
-    
-    BOLD      = 1
-    ITALIC    = 2
-    CODE      = 4
-
-    ATTR_MAP = {
-      "b"    => BOLD,
-      "code" => CODE,
-      "em"   => ITALIC,
-      "i"    => ITALIC,
-      "tt"   => CODE
-    }
-
-    # TODO: struct?
-    class AttrChar
-      attr_reader :char
-      attr_reader :attr
-
-      def initialize(char, attr)
-        @char = char
-        @attr = attr
-      end
-    end
-
-    
-    class AttributeString
-      attr_reader :txt
-
-      def initialize
-        @txt = []
-        @optr = 0
-      end
-
-      def <<(char)
-        @txt << char
-      end
-
-      def empty?
-        @optr >= @txt.length
-      end
-
-      # accept non space, then all following spaces
-      def next_word
-        start = @optr
-        len = @txt.length
-
-        while @optr < len && @txt[@optr].char != " "
-          @optr += 1
-        end
-
-        while @optr < len && @txt[@optr].char == " "
-          @optr += 1
-        end
-
-        @txt[start... at optr]
-      end
-    end
-
-    ######################################################################
-    # overrides base class. Looks for <tt>...</tt> etc sequences
-    # and generates an array of AttrChars. This array is then used
-    # as the basis for the split
-
-    def wrap(txt,  prefix=@indent, linelen=@width)
-      return unless txt && !txt.empty?
-
-      txt = add_attributes_to(txt)
-      next_prefix = prefix.tr("^ ", " ")
-      linelen -= prefix.size
-
-      line = []
-
-      until txt.empty?
-        word = txt.next_word
-        if word.size + line.size > linelen
-          write_attribute_text(prefix, line)
-          prefix = next_prefix
-          line = []
-        end
-        line.concat(word)
-      end
-
-      write_attribute_text(prefix, line) if line.length > 0
-    end
-
-    protected
-
-    # overridden in specific formatters
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      line.each do |achar|
-        print achar.char
-      end
-      puts
-    end
-
-    # again, overridden
-
-    def bold_print(txt)
-      print txt
-    end
-
-    private
-
-    def add_attributes_to(txt)
-      tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
-      text = AttributeString.new
-      attributes = 0
-      tokens.each do |tok|
-        case tok
-        when %r{^</(\w+)>$} then attributes &= ~(ATTR_MAP[$1]||0)
-        when %r{^<(\w+)>$}  then attributes  |= (ATTR_MAP[$1]||0)
-        else
-          tok.split(//).each {|ch| text << AttrChar.new(ch, attributes)}
-        end
-      end
-      text
-    end
-
-  end
-
-
-  ##################################################
-  
-  # This formatter generates overstrike-style formatting, which
-  # works with pagers such as man and less.
-
-  class OverstrikeFormatter < AttributeFormatter
-
-    BS = "\C-h"
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      line.each do |achar|
-        attr = achar.attr
-        if (attr & (ITALIC+CODE)) != 0
-          print "_", BS
-        end
-        if (attr & BOLD) != 0
-          print achar.char, BS
-        end
-        print achar.char
-      end
-      puts
-    end
-
-    # draw a string in bold
-    def bold_print(text)
-      text.split(//).each do |ch|
-        print ch, BS, ch
-      end
-    end
-  end
-
-  ##################################################
-  
-  # This formatter uses ANSI escape sequences
-  # to colorize stuff
-  # works with pages such as man and less.
-
-  class AnsiFormatter < AttributeFormatter
-
-    def initialize(*args)
-      print "\033[0m"
-      super
-    end
-
-    def write_attribute_text(prefix, line)
-      print prefix
-      curr_attr = 0
-      line.each do |achar|
-        attr = achar.attr
-        if achar.attr != curr_attr
-          update_attributes(achar.attr)
-          curr_attr = achar.attr
-        end
-        print achar.char
-      end
-      update_attributes(0) unless curr_attr.zero?
-      puts
-    end
-
-
-    def bold_print(txt)
-      print "\033[1m#{txt}\033[m"
-    end
-
-    HEADINGS = {
-      1 => [ "\033[1;32m", "\033[m" ] ,
-      2 => ["\033[4;32m", "\033[m" ],
-      3 => ["\033[32m", "\033[m" ]
-    }
-
-    def display_heading(text, level, indent)
-      level = 3 if level > 3
-      heading = HEADINGS[level]
-      print indent
-      print heading[0]
-      print strip_attributes(text)
-      puts heading[1]
-    end
-    
-    private
-
-    ATTR_MAP = {
-      BOLD   => "1",
-      ITALIC => "33",
-      CODE   => "36"
-    }
-
-    def update_attributes(attr)
-      str = "\033["
-      for quality in [ BOLD, ITALIC, CODE]
-        unless (attr & quality).zero?
-          str << ATTR_MAP[quality]
-        end
-      end
-      print str, "m"
-    end
-  end
-
-  ##################################################
-  
-  # This formatter uses HTML.
-
-  class HtmlFormatter < AttributeFormatter
-
-    def initialize(*args)
-      super
-    end
-
-    def write_attribute_text(prefix, line)
-      curr_attr = 0
-      line.each do |achar|
-        attr = achar.attr
-        if achar.attr != curr_attr
-          update_attributes(curr_attr, achar.attr)
-          curr_attr = achar.attr
-        end
-        print(escape(achar.char))
-      end
-      update_attributes(curr_attr, 0) unless curr_attr.zero?
-    end
-
-    def draw_line(label=nil)
-      if label != nil
-        bold_print(label)
-      end
-      puts("<hr>")
-    end
-
-    def bold_print(txt)
-      tag("b") { txt }
-    end
-
-    def blankline()
-      puts("<p>")
-    end
-
-    def break_to_newline
-      puts("<br>")
-    end
-
-    def display_heading(text, level, indent)
-      level = 4 if level > 4
-      tag("h#{level}") { text }
-      puts
-    end
-    
-    ######################################################################
-
-    def display_list(list)
-
-      case list.type
-      when SM::ListBase::BULLET 
-        list_type = "ul"
-        prefixer = proc { |ignored| "<li>" }
-
-      when SM::ListBase::NUMBER,
-      SM::ListBase::UPPERALPHA,
-      SM::ListBase::LOWERALPHA
-        list_type = "ol"
-        prefixer = proc { |ignored| "<li>" }
-        
-      when SM::ListBase::LABELED
-        list_type = "dl"
-        prefixer = proc do |li|
-          "<dt><b>" + escape(li.label) + "</b><dd>"
-        end
-
-      when SM::ListBase::NOTE
-        list_type = "table"
-        prefixer = proc do |li|
-          %{<tr valign="top"><td>#{li.label.gsub(/ /, ' ')}</td><td>}
-        end
-      else
-        fail "unknown list type"
-      end
-
-      print "<#{list_type}>"
-      list.contents.each do |item|
-        if item.kind_of? SM::Flow::LI
-          prefix = prefixer.call(item)
-          print prefix
-          display_flow_item(item, prefix)
-        else
-          display_flow_item(item)
-        end
-      end
-      print "</#{list_type}>"
-    end
-
-    def display_verbatim_flow_item(item, prefix=@indent)
-        print("<pre>")
-        puts item.body
-        puts("</pre>")
-    end
-
-    private
-
-    ATTR_MAP = {
-      BOLD   => "b>",
-      ITALIC => "i>",
-      CODE   => "tt>"
-    }
-
-    def update_attributes(current, wanted)
-      str = ""
-      # first turn off unwanted ones
-      off = current & ~wanted
-      for quality in [ BOLD, ITALIC, CODE]
-        if (off & quality) > 0
-          str << "</" + ATTR_MAP[quality]
-        end
-      end
-
-      # now turn on wanted
-      for quality in [ BOLD, ITALIC, CODE]
-        unless (wanted & quality).zero?
-          str << "<" << ATTR_MAP[quality]
-        end
-      end
-      print str
-    end
-
-    def tag(code)
-        print("<#{code}>")
-        print(yield)
-        print("</#{code}>")
-    end
-
-    def escape(str)
-      str.
-          gsub(/&/n, '&').
-          gsub(/\"/n, '"').
-          gsub(/>/n, '>').
-          gsub(/</n, '<')
-    end
-
-  end
-
-  ##################################################
-  
-  # This formatter reduces extra lines for a simpler output.
-  # It improves way output looks for tools like IRC bots.
-
-  class SimpleFormatter < TextFormatter
-
-    ######################################################################
-
-    # No extra blank lines
-
-    def blankline
-    end
-
-    ######################################################################
-
-    # Display labels only, no lines
-
-    def draw_line(label=nil)
-      unless label.nil? then
-        bold_print(label) 
-        puts
-      end
-    end
-
-    ######################################################################
-
-    # Place heading level indicators inline with heading.
-
-    def display_heading(text, level, indent)
-      text = strip_attributes(text)
-      case level
-      when 1
-        puts "= " + text.upcase
-      when 2
-        puts "-- " + text
-      else
-        print indent, text, "\n"
-      end
-    end
-
-  end
-
-
-  # Finally, fill in the list of known formatters
-
-  class TextFormatter
-
-    FORMATTERS = {
-      "ansi"   => AnsiFormatter,
-      "bs"     => OverstrikeFormatter,
-      "html"   => HtmlFormatter,
-      "plain"  => TextFormatter,
-      "simple" => SimpleFormatter,
-    }
-      
-    def TextFormatter.list
-      FORMATTERS.keys.sort.join(", ")
-    end
-
-    def TextFormatter.for(name)
-      FORMATTERS[name.downcase]
-    end
-
-  end
-
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_options.rb
deleted file mode 100644
index db9f4af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_options.rb
+++ /dev/null
@@ -1,313 +0,0 @@
-# We handle the parsing of options, and subsequently as a singleton
-# object to be queried for option values
-
-module RI
-
-  require 'rdoc/ri/ri_paths'
-  require 'rdoc/ri/ri_display'
-
-  VERSION_STRING = "ri v1.0.1 - 20041108"
-
-  class Options
-    
-    require 'singleton'
-    require 'getoptlong'
-    
-    include Singleton
-
-    # No not use a pager. Writable, because ri sets it if it
-    # can't find a pager
-    attr_accessor :use_stdout
-
-    # should we just display a class list and exit
-    attr_reader :list_classes
-
-    # should we display a list of all names
-    attr_reader :list_names
-
-    # The width of the output line
-    attr_reader :width
-
-    # the formatting we apply to the output
-    attr_reader :formatter
-
-    # the directory we search for original documentation
-    attr_reader :doc_dir
-
-    module OptionList
-      
-      OPTION_LIST = [
-        [ "--help",          "-h",   nil,
-          "you're looking at it" ],
-
-        [ "--classes",      "-c",   nil,
-          "Display the names of classes and modules we\n" +
-          "know about"],
-
-        [ "--doc-dir",      "-d",   "<dirname>",
-          "A directory to search for documentation. If not\n" +
-          "specified, we search the standard rdoc/ri directories.\n" +
-          "May be repeated."],
-
-        [ "--system",       nil,    nil,
-          "Include documentation from Ruby's standard library:\n  " +
-          RI::Paths::SYSDIR ],
-
-        [ "--site",         nil,    nil,
-          "Include documentation from libraries installed in site_lib:\n  " +
-          RI::Paths::SITEDIR ],
-
-        [ "--home",         nil,    nil,
-          "Include documentation stored in ~/.rdoc:\n  " +
-          (RI::Paths::HOMEDIR || "No ~/.rdoc found") ],
-
-        [ "--gems",         nil,    nil,
-          "Include documentation from Rubygems:\n  " +
-          (RI::Paths::GEMDIRS ? "#{Gem.path}/doc/*/ri" :
-                                "No Rubygems ri found.") ],
-                                                           
-        [ "--format",       "-f",   "<name>",
-          "Format to use when displaying output:\n" +
-          "   " + RI::TextFormatter.list + "\n" +
-          "Use 'bs' (backspace) with most pager programs.\n" +
-          "To use ANSI, either also use the -T option, or\n" +
-          "tell your pager to allow control characters\n" +
-          "(for example using the -R option to less)"],
-
-        [ "--list-names",    "-l",   nil,
-          "List all the names known to RDoc, one per line"
-        ],
-
-        [ "--no-pager",      "-T",   nil,
-          "Send output directly to stdout." 
-        ],
-
-        [ "--width",         "-w",   "output width",
-        "Set the width of the output" ],
-
-        [ "--version",       "-v",   nil,
-         "Display the version of ri"
-        ],
-
-      ]
-
-      def OptionList.options
-        OPTION_LIST.map do |long, short, arg,|
-          option = []
-          option << long
-          option << short unless short.nil?
-          option << (arg ? GetoptLong::REQUIRED_ARGUMENT :
-                           GetoptLong::NO_ARGUMENT)
-          option
-        end
-      end
-
-
-      def OptionList.strip_output(text)
-        text =~ /^\s+/
-        leading_spaces = $&
-        text.gsub!(/^#{leading_spaces}/, '')
-        $stdout.puts text
-      end
-      
-      
-      # Show an error and exit
-      
-      def OptionList.error(msg)
-        $stderr.puts
-        $stderr.puts msg
-        $stderr.puts "\nFor help on options, try 'ri --help'\n\n"
-        exit 1
-      end
-      
-      # Show usage and exit
-      
-      def OptionList.usage(short_form=false)
-        
-        puts
-        puts(RI::VERSION_STRING)
-        puts
-        
-        name = File.basename($0)
-
-        directories = [
-          RI::Paths::SYSDIR,
-          RI::Paths::SITEDIR,
-          RI::Paths::HOMEDIR
-        ]
-
-        directories << "#{Gem.path}/doc/*/ri" if RI::Paths::GEMDIRS
-
-        directories = directories.join("\n    ")
-
-        OptionList.strip_output(<<-EOT)
-          Usage:
-
-            #{name} [options]  [names...]
-
-          Display information on Ruby classes, modules, and methods.
-          Give the names of classes or methods to see their documentation.
-          Partial names may be given: if the names match more than
-          one entity, a list will be shown, otherwise details on
-          that entity will be displayed.
-
-          Nested classes and modules can be specified using the normal
-          Name::Name notation, and instance methods can be distinguished
-          from class methods using "." (or "#") instead of "::".
-
-          For example:
-
-              ri  File
-              ri  File.new
-              ri  F.n
-              ri  zip
-
-          Note that shell quoting may be required for method names
-          containing punctuation:
-
-              ri 'Array.[]'
-              ri compact\\!
-
-          By default ri searches for documentation in the following
-          directories:
-
-              #{directories}
-
-          Specifying the --system, --site, --home, --gems or --doc-dir
-          options will limit ri to searching only the specified
-          directories.
-
-        EOT
-
-        if short_form
-          puts "For help on options, type 'ri -h'"
-          puts "For a list of classes I know about, type 'ri -c'"
-        else
-          puts "Options:\n\n"
-          OPTION_LIST.each do|long, short, arg, desc|
-            opt = ''
-            opt << (short ? sprintf("%15s", "#{long}, #{short}") :
-                            sprintf("%15s", long))
-            if arg
-              opt << " " << arg
-            end
-            print opt
-            desc = desc.split("\n")
-            if opt.size < 17
-              print " "*(18-opt.size)
-              puts desc.shift
-            else
-              puts
-            end
-            desc.each do |line|
-              puts(" "*18 + line)
-            end
-            puts
-          end
-          puts "Options may also be passed in the 'RI' environment variable"
-          exit 0
-        end
-      end
-    end
-
-    # Show the version and exit
-    def show_version
-      puts VERSION_STRING
-      exit(0)
-    end
-
-    def initialize
-      @use_stdout   = !STDOUT.tty?
-      @width        = 72
-      @formatter    = RI::TextFormatter.for("plain") 
-      @list_classes = false
-      @list_names   = false
-
-      # By default all paths are used.  If any of these are true, only those
-      # directories are used.
-      @use_system = false
-      @use_site = false
-      @use_home = false
-      @use_gems = false
-      @doc_dirs = []
-    end
-
-    # Parse command line options.
-
-    def parse(args)
-    
-      old_argv = ARGV.dup
-
-      ARGV.replace(args)
-
-      begin
-
-        go = GetoptLong.new(*OptionList.options)
-        go.quiet = true
-
-        go.each do |opt, arg|
-          case opt
-          when "--help"       then OptionList.usage
-          when "--version"    then show_version
-          when "--list-names" then @list_names = true
-          when "--no-pager"   then @use_stdout = true
-          when "--classes"    then @list_classes = true
-
-          when "--system"     then @use_system = true
-          when "--site"       then @use_site = true
-          when "--home"       then @use_home = true
-          when "--gems"       then @use_gems = true
-
-          when "--doc-dir"
-            if File.directory?(arg)
-              @doc_dirs << arg
-            else
-              $stderr.puts "Invalid directory: #{arg}"
-              exit 1
-            end
-
-          when "--format"
-            @formatter = RI::TextFormatter.for(arg)
-            unless @formatter
-              $stderr.print "Invalid formatter (should be one of "
-              $stderr.puts RI::TextFormatter.list + ")"
-              exit 1
-            end
-          when "--width"
-            begin
-              @width = Integer(arg)
-            rescue 
-              $stderr.puts "Invalid width: '#{arg}'"
-              exit 1
-            end
-          end
-        end
-
-      rescue GetoptLong::InvalidOption, GetoptLong::MissingArgument => error
-        OptionList.error(error.message)
-
-      end
-    end
-
-    # Return the selected documentation directories.
-
-    def path
-      RI::Paths.path(@use_system, @use_site, @use_home, @use_gems, *@doc_dirs)
-    end
-
-    def raw_path
-      RI::Paths.raw_path(@use_system, @use_site, @use_home, @use_gems,
-                         *@doc_dirs)
-    end
-
-    # Return an instance of the displayer (the thing that actually writes
-    # the information). This allows us to load in new displayer classes
-    # at runtime (for example to help with IDE integration)
-    
-    def displayer
-      ::RiDisplay.new(self)
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_paths.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_paths.rb
deleted file mode 100644
index 32363bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_paths.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-module RI
-
-  # Encapsulate all the strangeness to do with finding out
-  # where to find RDoc files
-  #
-  # We basically deal with three directories:
-  #
-  # 1. The 'system' documentation directory, which holds
-  #    the documentation distributed with Ruby, and which
-  #    is managed by the Ruby install process
-  # 2. The 'site' directory, which contains site-wide
-  #    documentation added locally.
-  # 3. The 'user' documentation directory, stored under the
-  #    user's own home directory.
-  #
-  # There's contention about all this, but for now:
-  #
-  # system:: $datadir/ri/<ver>/system/...
-  # site::   $datadir/ri/<ver>/site/...
-  # user::   ~/.rdoc
-
-  module Paths
-
-    #:stopdoc:
-    require 'rbconfig'
-    
-    DOC_DIR  = "doc/rdoc"
-
-    version = Config::CONFIG['ruby_version']
-
-    base    = File.join(Config::CONFIG['datadir'], "ri", version)
-    SYSDIR  = File.join(base, "system")
-    SITEDIR = File.join(base, "site")
-    homedir = ENV['HOME'] || ENV['USERPROFILE'] || ENV['HOMEPATH']
-
-    if homedir
-      HOMEDIR = File.join(homedir, ".rdoc")
-    else
-      HOMEDIR = nil
-    end
-
-    # This is the search path for 'ri'
-    PATH = [ SYSDIR, SITEDIR, HOMEDIR ].find_all {|p| p && File.directory?(p)}
-
-    begin
-      require 'rubygems'
-      GEMDIRS = Dir["#{Gem.path}/doc/*/ri"]
-      GEMDIRS.each { |path| RI::Paths::PATH << path }
-    rescue LoadError
-      GEMDIRS = nil
-    end
-
-    # Returns the selected documentation directories as an Array, or PATH if no
-    # overriding directories were given.
-
-    def self.path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      path = raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      return path.select { |path| File.directory? path }
-    end
-
-    # Returns the selected documentation directories including nonexistent
-    # directories.  Used to print out what paths were searched if no ri was
-    # found.
-
-    def self.raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
-      return PATH unless use_system or use_site or use_home or use_gems or
-                         not extra_dirs.empty?
-
-      path = []
-      path << extra_dirs unless extra_dirs.empty?
-      path << RI::Paths::SYSDIR if use_system
-      path << RI::Paths::SITEDIR if use_site
-      path << RI::Paths::HOMEDIR if use_home
-      path << RI::Paths::GEMDIRS if use_gems
-
-      return path.flatten.compact
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_reader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_reader.rb
deleted file mode 100644
index fb2c373..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_reader.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'rdoc/ri/ri_descriptions'
-require 'rdoc/ri/ri_writer'
-require 'rdoc/markup/simple_markup/to_flow'
-
-module RI
-  class RiReader
-
-    def initialize(ri_cache)
-      @cache = ri_cache
-    end
-
-    def top_level_namespace
-      [ @cache.toplevel ]
-    end
-
-    def lookup_namespace_in(target, namespaces)
-      result = []
-      for n in namespaces
-        result.concat(n.contained_modules_matching(target))
-      end
-      result
-    end
-
-    def find_class_by_name(full_name)
-      names = full_name.split(/::/)
-      ns = @cache.toplevel
-      for name in names
-        ns = ns.contained_class_named(name)
-        return nil if ns.nil?
-      end
-      get_class(ns)
-    end
-
-    def find_methods(name, is_class_method, namespaces)
-      result = []
-      namespaces.each do |ns|
-        result.concat ns.methods_matching(name, is_class_method)
-      end
-      result
-    end
-
-    # return the MethodDescription for a given MethodEntry
-    # by deserializing the YAML
-    def get_method(method_entry)
-      path = method_entry.path_name
-      File.open(path) { |f| RI::Description.deserialize(f) }
-    end
-
-    # Return a class description
-    def get_class(class_entry)
-      result = nil
-      for path in class_entry.path_names
-        path = RiWriter.class_desc_path(path, class_entry)
-        desc = File.open(path) {|f| RI::Description.deserialize(f) }
-        if result
-          result.merge_in(desc)
-        else
-          result = desc
-        end
-      end
-      result
-    end
-
-    # return the names of all classes and modules
-    def full_class_names
-      res = []
-      find_classes_in(res, @cache.toplevel)
-    end
-
-    # return a list of all classes, modules, and methods
-    def all_names
-      res = []
-      find_names_in(res, @cache.toplevel)
-    end
-
-    # ----
-    private
-    # ----
-
-    def find_classes_in(res, klass)
-      classes = klass.classes_and_modules
-      for c in classes
-        res << c.full_name
-        find_classes_in(res, c)
-      end
-      res
-    end
-
-    def find_names_in(res, klass)
-      classes = klass.classes_and_modules
-      for c in classes
-        res << c.full_name
-        res.concat c.all_method_names
-        find_names_in(res, c)
-      end
-      res
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_util.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_util.rb
deleted file mode 100644
index 8a01255..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_util.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-######################################################################
-
-class RiError < Exception; end
-#
-# Break argument into its constituent class or module names, an
-# optional method type, and a method name
-
-class NameDescriptor
-
-  attr_reader :class_names
-  attr_reader :method_name
-
-  # true and false have the obvious meaning. nil means we don't care
-  attr_reader :is_class_method
-
-  # arg may be
-  # 1. a class or module name (optionally qualified with other class
-  #    or module names (Kernel, File::Stat etc)
-  # 2. a method name
-  # 3. a method name qualified by a optionally fully qualified class
-  #    or module name
-  #
-  # We're fairly casual about delimiters: folks can say Kernel::puts,
-  # Kernel.puts, or Kernel\#puts for example. There's one exception:
-  # if you say IO::read, we look for a class method, but if you
-  # say IO.read, we look for an instance method
-
-  def initialize(arg)
-    @class_names = []
-    separator = nil
-
-    tokens = arg.split(/(\.|::|#)/)
-
-    # Skip leading '::', '#' or '.', but remember it might
-    # be a method name qualifier
-    separator = tokens.shift if tokens[0] =~ /^(\.|::|#)/
-
-    # Skip leading '::', but remember we potentially have an inst
-
-    # leading stuff must be class names
-    
-    while tokens[0] =~ /^[A-Z]/
-      @class_names << tokens.shift
-      unless tokens.empty?
-        separator = tokens.shift
-        break unless separator == "::"
-      end
-    end
-    
-    # Now must have a single token, the method name, or an empty
-    # array
-    unless tokens.empty?
-      @method_name = tokens.shift
-      # We may now have a trailing !, ?, or = to roll into
-      # the method name
-      if !tokens.empty? && tokens[0] =~ /^[!?=]$/
-        @method_name << tokens.shift
-      end
-
-      if @method_name =~ /::|\.|#/ or !tokens.empty?
-        raise RiError.new("Bad argument: #{arg}") 
-      end
-      if separator && separator != '.'
-        @is_class_method = separator == "::"
-      end
-    end
-  end
-
-  # Return the full class name (with '::' between the components)
-  # or "" if there's no class name
-
-  def full_class_name
-    @class_names.join("::")
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_writer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_writer.rb
deleted file mode 100644
index 78c68e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/ri/ri_writer.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'fileutils'
-
-module RI
-  class RiWriter
-
-    def RiWriter.class_desc_path(dir, class_desc)
-      File.join(dir, "cdesc-" + class_desc.name + ".yaml")
-    end
-
-    
-    # Convert a name from internal form (containing punctuation)
-    # to an external form (where punctuation is replaced
-    # by %xx)
-
-    def RiWriter.internal_to_external(name)
-      name.gsub(/\W/) { sprintf("%%%02x", $&[0]) }
-    end
-
-    # And the reverse operation
-    def RiWriter.external_to_internal(name)
-      name.gsub(/%([0-9a-f]{2,2})/) { $1.to_i(16).chr }
-    end
-
-    def initialize(base_dir)
-      @base_dir = base_dir
-    end
-
-    def remove_class(class_desc)
-      FileUtils.rm_rf(path_to_dir(class_desc.full_name))
-    end
-
-    def add_class(class_desc)
-      dir = path_to_dir(class_desc.full_name)
-      FileUtils.mkdir_p(dir)
-      class_file_name = RiWriter.class_desc_path(dir, class_desc)
-      File.open(class_file_name, "w") do |f|
-        f.write(class_desc.serialize)
-      end
-    end
-
-    def add_method(class_desc, method_desc)
-      dir = path_to_dir(class_desc.full_name)
-      file_name = RiWriter.internal_to_external(method_desc.name)
-      meth_file_name = File.join(dir, file_name)
-      if method_desc.is_singleton
-        meth_file_name += "-c.yaml"
-      else
-        meth_file_name += "-i.yaml"
-      end
-
-      File.open(meth_file_name, "w") do |f|
-        f.write(method_desc.serialize)
-      end
-    end
-
-    private
-
-    def path_to_dir(class_name)
-      File.join(@base_dir, *class_name.split('::'))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/template.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/template.rb
deleted file mode 100644
index 469e10f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/template.rb
+++ /dev/null
@@ -1,234 +0,0 @@
-# Cheap-n-cheerful HTML page template system. You create a 
-# template containing:
-#
-# * variable names between percent signs (<tt>%fred%</tt>)
-# * blocks of repeating stuff:
-#
-#     START:key
-#       ... stuff
-#     END:key
-#
-# You feed the code a hash. For simple variables, the values
-# are resolved directly from the hash. For blocks, the hash entry
-# corresponding to +key+ will be an array of hashes. The block will
-# be generated once for each entry. Blocks can be nested arbitrarily
-# deeply.
-#
-# The template may also contain
-#
-#   IF:key
-#     ... stuff
-#   ENDIF:key
-#
-# _stuff_ will only be included in the output if the corresponding
-# key is set in the value hash.
-#
-# Usage:  Given a set of templates <tt>T1, T2,</tt> etc
-#
-#            values = { "name" => "Dave", state => "TX" }
-#
-#            t = TemplatePage.new(T1, T2, T3)
-#            File.open(name, "w") {|f| t.write_html_on(f, values)}
-#         or
-#            res = ''
-#            t.write_html_on(res, values)
-#
-#
-
-class TemplatePage
-
-  ##########
-  # A context holds a stack of key/value pairs (like a symbol
-  # table). When asked to resolve a key, it first searches the top of
-  # the stack, then the next level, and so on until it finds a match
-  # (or runs out of entries)
-
-  class Context
-    def initialize
-      @stack = []
-    end
-
-    def push(hash)
-      @stack.push(hash)
-    end
-
-    def pop
-      @stack.pop
-    end
-
-    # Find a scalar value, throwing an exception if not found. This
-    # method is used when substituting the %xxx% constructs
-
-    def find_scalar(key)
-      @stack.reverse_each do |level|
-        if val = level[key]
-          return val unless val.kind_of? Array
-        end
-      end
-      raise "Template error: can't find variable '#{key}'"
-    end
-
-    # Lookup any key in the stack of hashes
-
-    def lookup(key)
-      @stack.reverse_each do |level|
-        val = level[key]
-        return val if val
-      end
-      nil
-    end
-  end
-
-  #########
-  # Simple class to read lines out of a string
-
-  class LineReader
-    # we're initialized with an array of lines
-    def initialize(lines)
-      @lines = lines
-    end
-
-    # read the next line 
-    def read
-      @lines.shift
-    end
-
-    # Return a list of lines up to the line that matches
-    # a pattern. That last line is discarded.
-    def read_up_to(pattern)
-      res = []
-      while line = read
-        if pattern.match(line)
-          return LineReader.new(res) 
-        else
-          res << line
-        end
-      end
-      raise "Missing end tag in template: #{pattern.source}"
-    end
-
-    # Return a copy of ourselves that can be modified without
-    # affecting us
-    def dup
-      LineReader.new(@lines.dup)
-    end
-  end
-
-
-
-  # +templates+ is an array of strings containing the templates.
-  # We start at the first, and substitute in subsequent ones
-  # where the string <tt>!INCLUDE!</tt> occurs. For example,
-  # we could have the overall page template containing
-  #
-  #   <html><body>
-  #     <h1>Master</h1>
-  #     !INCLUDE!
-  #   </bost></html>
-  #
-  # and substitute subpages in to it by passing [master, sub_page].
-  # This gives us a cheap way of framing pages
-
-  def initialize(*templates)
-    result = "!INCLUDE!"
-    templates.each do |content|
-      result.sub!(/!INCLUDE!/, content)
-    end
-    @lines = LineReader.new(result.split($/))
-  end
-
-  # Render the templates into HTML, storing the result on +op+ 
-  # using the method <tt><<</tt>. The <tt>value_hash</tt> contains
-  # key/value pairs used to drive the substitution (as described above)
-
-  def write_html_on(op, value_hash)
-    @context = Context.new
-    op << substitute_into(@lines, value_hash).tr("\000", '\\')
-  end
-
-
-  # Substitute a set of key/value pairs into the given template. 
-  # Keys with scalar values have them substituted directly into
-  # the page. Those with array values invoke <tt>substitute_array</tt>
-  # (below), which examples a block of the template once for each 
-  # row in the array.
-  #
-  # This routine also copes with the <tt>IF:</tt>_key_ directive,
-  # removing chunks of the template if the corresponding key
-  # does not appear in the hash, and the START: directive, which
-  # loops its contents for each value in an array
-
-  def substitute_into(lines, values)
-    @context.push(values)
-    skip_to = nil
-    result = []
-
-    while line = lines.read
-
-      case line
-
-      when /^IF:(\w+)/
-        lines.read_up_to(/^ENDIF:#$1/) unless @context.lookup($1)
-
-    when /^IFNOT:(\w+)/
-        lines.read_up_to(/^ENDIF:#$1/) if @context.lookup($1)
-
-      when /^ENDIF:/
-        ;
-
-      when /^START:(\w+)/
-        tag = $1
-        body = lines.read_up_to(/^END:#{tag}/)
-        inner_values = @context.lookup(tag)
-        raise "unknown tag: #{tag}" unless inner_values
-        raise "not array: #{tag}"   unless inner_values.kind_of?(Array)
-        inner_values.each do |vals|
-          result << substitute_into(body.dup, vals)
-        end
-      else
-        result << expand_line(line.dup)
-      end
-    end
-
-    @context.pop
-
-    result.join("\n")
-  end
-
-  # Given an individual line, we look for %xxx% constructs and 
-  # HREF:ref:name: constructs, substituting for each.
-
-  def expand_line(line)
-    # Generate a cross reference if a reference is given,
-    # otherwise just fill in the name part
-
-    line.gsub!(/HREF:(\w+?):(\w+?):/) {
-      ref = @context.lookup($1)
-      name = @context.find_scalar($2)
-
-      if ref and !ref.kind_of?(Array)
-	"<a href=\"#{ref}\">#{name}</a>"
-      else
-	name
-      end
-    }
-
-    # Substitute in values for %xxx% constructs.  This is made complex
-    # because the replacement string may contain characters that are
-    # meaningful to the regexp (like \1)
-
-    line = line.gsub(/%([a-zA-Z]\w*)%/) {
-      val = @context.find_scalar($1) 
-      val.tr('\\', "\000")
-    }
-
-
-    line
-  rescue Exception => e
-    $stderr.puts "Error in template: #{e}"
-    $stderr.puts "Original line: #{line}"
-    exit
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/tokenstream.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/tokenstream.rb
deleted file mode 100644
index 0a0720d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/tokenstream.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# A TokenStream is a list of tokens, gathered during the parse
-# of some entity (say a method). Entities populate these streams
-# by being registered with the lexer. Any class can collect tokens
-# by including TokenStream. From the outside, you use such an object
-# by calling the start_collecting_tokens method, followed by calls
-# to add_token and pop_token
-
-module TokenStream
-  def token_stream
-    @token_stream
-  end
-
-  def start_collecting_tokens
-    @token_stream = []
-  end
-  def add_token(tk)
-    @token_stream << tk
-  end
-  def add_tokens(tks)
-    tks.each  {|tk| add_token(tk)}
-  end
-  def pop_token
-    @token_stream.pop
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/usage.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/usage.rb
deleted file mode 100644
index def516b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rdoc/usage.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# = Synopsis
-#
-# This library allows command-line tools to encapsulate their usage
-# as a comment at the top of the main file. Calling <tt>RDoc::usage</tt>
-# then displays some or all of that comment, and optionally exits
-# the program with an exit status. We always look for the comment
-# in the main program file, so it is safe to call this method
-# from anywhere in the executing program.
-#
-# = Usage
-#
-#   RDoc::usage( [ exit_status ], [ section, ...])
-#   RDoc::usage_no_exit( [ section, ...])
-#
-# where:
-#
-# exit_status::
-#     the integer exit code (default zero). RDoc::usage will exit
-#     the calling program with this status.
-#
-# section::
-#     an optional list of section names. If specified, only the
-#     sections with the given names as headings will be output.
-#     For example, this section is named 'Usage', and the next
-#     section is named 'Examples'. The section names are case
-#     insensitive.
-#
-# = Examples
-#
-#    # Comment block describing usage
-#    # with (optional) section headings
-#    # . . .
-#
-#    require 'rdoc/usage'
-#
-#    # Display all usage and exit with a status of 0
-#
-#    RDoc::usage
-#
-#    # Display all usage and exit with a status of 99
-#
-#    RDoc::usage(99)
-#
-#    # Display usage in the 'Summary' section only, then
-#    # exit with a status of 99
-#
-#    RDoc::usage(99, 'Summary')
-#
-#    # Display information in the Author and Copyright
-#    # sections, then exit 0.
-#    
-#    RDoc::usage('Author', 'Copyright')
-#
-#    # Display information in the Author and Copyright
-#    # sections, but don't exit
-#  
-#    RDoc::usage_no_exit('Author', 'Copyright')
-#
-# = Author
-#
-# Dave Thomas, The Pragmatic Programmers, LLC
-#
-# = Copyright
-#
-# Copyright (c) 2004 Dave Thomas.
-# Licensed under the same terms as Ruby
-#
-
-require 'rdoc/markup/simple_markup'
-require 'rdoc/markup/simple_markup/to_flow'
-require 'rdoc/ri/ri_formatter'
-require 'rdoc/ri/ri_options'
-
-module RDoc
-
-  # Display usage information from the comment at the top of
-  # the file. String arguments identify specific sections of the
-  # comment to display. An optional integer first argument
-  # specifies the exit status  (defaults to 0)
-
-  def RDoc.usage(*args)
-    exit_code = 0
-
-    if args.size > 0
-      status = args[0]
-      if status.respond_to?(:to_int)
-        exit_code = status.to_int
-        args.shift
-      end
-    end
-
-    # display the usage and exit with the given code
-    usage_no_exit(*args)
-    exit(exit_code)
-  end
-
-  # Display usage
-  def RDoc.usage_no_exit(*args)
-    main_program_file = caller[-1].sub(/:\d+$/, '')
-    comment = File.open(main_program_file) do |file|
-      find_comment(file)
-    end
-
-    comment = comment.gsub(/^\s*#/, '')
-
-    markup = SM::SimpleMarkup.new
-    flow_convertor = SM::ToFlow.new
-    
-    flow = markup.convert(comment, flow_convertor)
-
-    format = "plain"
-
-    unless args.empty?
-      flow = extract_sections(flow, args)
-    end
-
-    options = RI::Options.instance
-    if args = ENV["RI"]
-      options.parse(args.split)
-    end
-    formatter = options.formatter.new(options, "")
-    formatter.display_flow(flow)
-  end
-
-  ######################################################################
-
-  private
-
-  # Find the first comment in the file (that isn't a shebang line)
-  # If the file doesn't start with a comment, report the fact
-  # and return empty string
-
-  def RDoc.gets(file)
-    if (line = file.gets) && (line =~ /^#!/) # shebang
-      throw :exit, find_comment(file)
-    else
-      line
-    end
-  end
-
-  def RDoc.find_comment(file)
-    catch(:exit) do
-      # skip leading blank lines
-      0 while (line = gets(file)) && (line =~ /^\s*$/)
-
-      comment = []
-      while line && line =~ /^\s*#/
-        comment << line
-        line = gets(file)
-      end
-
-      0 while line && (line = gets(file))
-      return no_comment if comment.empty?
-      return comment.join
-    end
-  end
-
-
-  #####
-  # Given an array of flow items and an array of section names, extract those
-  # sections from the flow which have headings corresponding to
-  # a section name in the list. Return them in the order
-  # of names in the +sections+ array.
-
-  def RDoc.extract_sections(flow, sections)
-    result = []
-    sections.each do |name|
-      name = name.downcase
-      copy_upto_level = nil
-
-      flow.each do |item|
-        case item
-        when SM::Flow::H
-          if copy_upto_level && item.level >= copy_upto_level
-            copy_upto_level = nil
-          else
-            if item.text.downcase == name
-              result << item
-              copy_upto_level = item.level
-            end
-          end
-        else
-          if copy_upto_level
-            result << item
-          end
-        end
-      end
-    end
-    if result.empty?
-      puts "Note to developer: requested section(s) [#{sections.join(', ')}] " +
-           "not found"
-      result = flow
-    end
-    result
-  end
-
-  #####
-  # Report the fact that no doc comment count be found
-  def RDoc.no_comment
-    $stderr.puts "No usage information available for this program"
-    ""
-  end
-end
-
-
-if $0 == __FILE__
-
-  RDoc::usage(*ARGV)
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/readbytes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/readbytes.rb
deleted file mode 100644
index ebb5fc0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/readbytes.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# TruncatedDataError is raised when IO#readbytes fails to read enough data.
-
-class TruncatedDataError<IOError
-  def initialize(mesg, data) # :nodoc:
-    @data = data
-    super(mesg)
-  end
-
-  # The read portion of an IO#readbytes attempt.
-  attr_reader :data
-end
-
-class IO
-  # Reads exactly +n+ bytes.
-  #
-  # If the data read is nil an EOFError is raised.
-  #
-  # If the data read is too short a TruncatedDataError is raised and the read
-  # data is obtainable via its #data method.
-  def readbytes(n)
-    str = read(n)
-    if str == nil
-      raise EOFError, "End of file reached"
-    end
-    if str.size < n
-      raise TruncatedDataError.new("data truncated", str) 
-    end
-    str
-  end
-end
-
-if __FILE__ == $0
-  begin
-    loop do
-      print STDIN.readbytes(6)
-    end
-  rescue TruncatedDataError
-    p $!.data
-    raise
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/remote-tk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/remote-tk.rb
deleted file mode 100644
index 70115a6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/remote-tk.rb
+++ /dev/null
@@ -1,526 +0,0 @@
-#
-#               remote-tk.rb - supports to control remote Tk interpreters
-#                       by Hidetoshi NAGAI <nagai at ai.kyutech.ac.jp>
-
-if defined? MultiTkIp
-  fail RuntimeError, "'remote-tk' library must be required before requiring 'multi-tk'"
-end
-
-class MultiTkIp; end
-class RemoteTkIp < MultiTkIp; end
-
-class MultiTkIp
-  @@IP_TABLE = {}.taint unless defined?(@@IP_TABLE)
-  @@TK_TABLE_LIST = [].taint unless defined?(@@TK_TABLE_LIST)
-  def self._IP_TABLE; @@IP_TABLE; end
-  def self._TK_TABLE_LIST; @@TK_TABLE_LIST; end
-
-  @flag = true
-  def self._DEFAULT_MASTER
-    # work only once
-    if @flag
-      @flag = nil
-      @@DEFAULT_MASTER
-    else
-      nil
-    end
-  end
-end
-class RemoteTkIp
-  @@IP_TABLE = MultiTkIp._IP_TABLE unless defined?(@@IP_TABLE)
-  @@TK_TABLE_LIST = MultiTkIp._TK_TABLE_LIST unless defined?(@@TK_TABLE_LIST)
-end
-class << MultiTkIp
-  undef _IP_TABLE
-  undef _TK_TABLE_LIST
-end
-
-require 'multi-tk'
-
-class RemoteTkIp
-  if defined?(@@DEFAULT_MASTER)
-    MultiTkIp._DEFAULT_MASTER
-  else
-    @@DEFAULT_MASTER = MultiTkIp._DEFAULT_MASTER
-  end
-end
-
-
-###############################
-
-class << RemoteTkIp
-  undef new_master, new_slave, new_safe_slave
-  undef new_trusted_slave, new_safeTk
-
-  def new(*args, &b)
-    ip = __new(*args)
-    ip.eval_proc(&b) if b
-    ip
-  end
-end
-
-class RemoteTkIp
-  def initialize(remote_ip, displayof=nil, timeout=5)
-    if $SAFE >= 4
-      fail SecurityError, "cannot access another interpreter at level #{$SAFE}"
-    end
-
-    @interp = MultiTkIp.__getip
-    if @interp.safe?
-      fail SecurityError, "safe-IP cannot create RemoteTkIp"
-    end
-
-
-    @interp.allow_ruby_exit = false
-    @appname = @interp._invoke('tk', 'appname')
-    @remote = remote_ip.to_s.dup.freeze
-    if displayof.kind_of?(TkWindow)
-      @displayof = displayof.path.dup.freeze
-    else
-      @displayof = nil
-    end
-    if self.deleted?
-      fail RuntimeError, "no Tk application named \"#{@remote}\""
-    end
-
-    @tk_windows = {}
-    @tk_table_list = []
-    @slave_ip_tbl = {}
-    @slave_ip_top = {}
-
-    @tk_windows.taint unless @tk_windows.tainted?
-    @tk_table_list.taint unless @tk_table_list.tainted?
-    @slave_ip_tbl.taint unless @slave_ip_tbl.tainted?
-    @slave_ip_top.taint unless @slave_ip_top.tainted?
-
-    @system = Object.new
-
-    @threadgroup  = ThreadGroup.new
-
-    @safe_level = [$SAFE]
-
-    @wait_on_mainloop = [true, 0]
-
-    @cmd_queue = Queue.new
-
-=begin
-    @cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog()
-
-    @threadgroup.add @cmd_receiver
-    @threadgroup.add @receiver_watchdog
-
-    @threadgroup.enclose
-=end
-    @@DEFAULT_MASTER.assign_receiver_and_watchdog(self)
-
-    @@IP_TABLE[@threadgroup] = self
-    @@TK_TABLE_LIST.size.times{ 
-      (tbl = {}).tainted? || tbl.taint
-      @tk_table_list << tbl
-    }
-
-    @ret_val = TkVariable.new
-    if timeout > 0 && ! _available_check(timeout)
-      fail RuntimeError, "cannot create connection"
-    end
-    @ip_id = _create_connection
-
-    class << self
-      undef :instance_eval
-    end
-
-    self.freeze  # defend against modification
-  end
-
-  def manipulable?
-    return true if (Thread.current.group == ThreadGroup::Default)
-    MultiTkIp.__getip == @interp && ! @interp.safe?
-  end
-  def self.manipulable?
-    true
-  end
-
-  def _is_master_of?(tcltkip_obj)
-    tcltkip_obj == @interp
-  end
-  protected :_is_master_of?
-
-  def _ip_id_
-    @ip_id
-  end
-
-  def _available_check(timeout = 5)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    return nil if timeout < 1
-    @ret_val.value = ''
-    @interp._invoke('send', '-async', @remote, 
-                    'send', '-async', Tk.appname, 
-                    "set #{@ret_val.id} ready")
-    Tk.update
-    if @ret_val != 'ready'
-      (1..(timeout*5)).each{
-        sleep 0.2 
-        Tk.update
-        break if @ret_val == 'ready'
-      }
-    end
-    @ret_val.value == 'ready'
-  end
-  private :_available_check
-
-  def _create_connection
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    ip_id = '_' + @interp._invoke('send', @remote, <<-'EOS') + '_'
-      if {[catch {set _rubytk_control_ip_id_} ret] != 0} {
-        set _rubytk_control_ip_id_ 0
-      } else {
-        set _rubytk_control_ip_id_ [expr $ret + 1]
-      }
-      return $_rubytk_control_ip_id_
-    EOS
-
-    @interp._invoke('send', @remote, <<-EOS)
-      proc rb_out#{ip_id} args {
-        send #{@appname} rb_out \$args
-      }
-    EOS
-
-    ip_id
-  end
-  private :_create_connection
-
-  def _appsend(enc_mode, async, *cmds)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    p ['_appsend', [@remote, @displayof], enc_mode, async, cmds] if $DEBUG
-    if $SAFE >= 4
-      fail SecurityError, "cannot send commands at level 4"
-    elsif $SAFE >= 1 && cmds.find{|obj| obj.tainted?}
-      fail SecurityError, "cannot send tainted commands at level #{$SAFE}"
-    end
-
-    cmds = @interp._merge_tklist(*TkUtil::_conv_args([], enc_mode, *cmds))
-    if @displayof
-      if async
-        @interp.__invoke('send', '-async', '-displayof', @displayof, 
-                         '--', @remote, *cmds)
-      else
-        @interp.__invoke('send', '-displayof', @displayof, 
-                         '--', @remote, *cmds)
-      end
-    else
-      if async
-        @interp.__invoke('send', '-async', '--', @remote, *cmds)
-      else
-        @interp.__invoke('send', '--', @remote, *cmds)
-      end
-    end
-  end
-  private :_appsend
-
-  def ready?(timeout=5)
-    if timeout < 0
-      fail ArgumentError, "timeout must be positive number"
-    end
-    _available_check(timeout)
-  end
-
-  def is_rubytk?
-    return false if _appsend(false, false, 'info', 'command', 'ruby') == ""
-    [ _appsend(false, false, 'ruby', 'RUBY_VERSION'), 
-      _appsend(false, false, 'set', 'tk_patchLevel') ]
-  end
-
-  def appsend(async, *args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    if @displayof
-      Tk.appsend_displayof(@remote, @displayof, async, *args)
-    else
-      Tk.appsend(@remote, async, *args)
-    end
-  end
-
-  def rb_appsend(async, *args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    if @displayof
-      Tk.rb_appsend_displayof(@remote, @displayof, async, *args)
-    else
-      Tk.rb_appsend(@remote, async, *args)
-    end
-  end
-
-  def create_slave(name, safe=false)
-    if safe
-      safe_opt = ''
-    else
-      safe_opt = '-safe'
-    end
-    _appsend(false, false, "interp create #{safe_opt} -- #{name}")
-  end
-
-  def make_safe
-    fail RuntimeError, 'cannot change safe mode of the remote interpreter'
-  end
-
-  def safe?
-    _appsend(false, false, 'interp issafe')
-  end
-
-  def safe_base?
-    false
-  end
-
-  def allow_ruby_exit?
-    false
-  end
-
-  def allow_ruby_exit= (mode)
-    fail RuntimeError, 'cannot change mode of the remote interpreter'
-  end
-
-  def delete
-    _appsend(false, true, 'exit')
-  end
-
-  def deleted?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    if @displayof
-      lst = @interp._invoke_without_enc('winfo', 'interps', 
-                                        '-displayof', @displayof)
-    else
-      lst = @interp._invoke_without_enc('winfo', 'interps')
-    end
-    # unless @interp._split_tklist(lst).index(@remote)
-    unless @interp._split_tklist(lst).index(_toUTF8(@remote))
-      true
-    else
-      false
-    end
-  end
-
-  def has_mainwindow?
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-
-    begin
-      inf = @interp._invoke_without_enc('info', 'command', '.')
-    rescue Exception
-      return nil
-    end
-    if !inf.kind_of?(String) || inf != '.'
-      false
-    else
-      true
-    end
-  end
-
-  def invalid_namespace?
-    false
-  end
-
-  def restart
-    fail RuntimeError, 'cannot restart the remote interpreter'
-  end
-
-  def __eval(str)
-    _appsend(false, false, str)
-  end
-  def _eval(str)
-    _appsend(nil, false, str)
-  end
-  def _eval_without_enc(str)
-    _appsend(false, false, str)
-  end
-  def _eval_with_enc(str)
-    _appsend(true, false, str)
-  end
-
-  def _invoke(*args)
-    _appsend(nil, false, *args)
-  end
-
-  def __invoke(*args)
-    _appsend(false, false, *args)
-  end
-  def _invoke(*args)
-    _appsend(nil, false, *args)
-  end
-  def _invoke_without_enc(*args)
-    _appsend(false, false, *args)
-  end
-  def _invoke_with_enc(*args)
-    _appsend(true, false, *args)
-  end
-
-  def _toUTF8(str, encoding=nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._toUTF8(str, encoding)
-  end
-
-  def _fromUTF8(str, encoding=nil)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._fromUTF8(str, encoding)
-  end
-
-  def _thread_vwait(var_name)
-    _appsend(false, 'thread_vwait', varname)
-  end
-
-  def _thread_tkwait(mode, target)
-    _appsend(false, 'thread_tkwait', mode, target)
-  end
-
-  def _return_value
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._return_value
-  end
-
-  def _get_variable(var_name, flag)
-    # ignore flag
-    _appsend(false, 'set', TkComm::_get_eval_string(var_name))
-  end
-  def _get_variable2(var_name, index_name, flag)
-    # ignore flag
-    _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
-  end
-
-  def _set_variable(var_name, value, flag)
-    # ignore flag
-    _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
-  end
-  def _set_variable2(var_name, index_name, value, flag)
-    # ignore flag
-    _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
-  end
-
-  def _unset_variable(var_name, flag)
-    # ignore flag
-    _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
-  end
-  def _unset_variable2(var_name, index_name, flag)
-    # ignore flag
-    _appsend(false, 'unset', "#{var_name}(#{index_name})")
-  end
-
-  def _get_global_var(var_name)
-    _appsend(false, 'set', TkComm::_get_eval_string(var_name))
-  end
-  def _get_global_var2(var_name, index_name)
-    _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
-  end
-
-  def _set_global_var(var_name, value)
-    _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
-  end
-  def _set_global_var2(var_name, index_name, value)
-    _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
-  end
-
-  def _unset_global_var(var_name)
-    _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
-  end
-  def _unset_global_var2(var_name, index_name)
-    _appsend(false, 'unset', "#{var_name}(#{index_name})")
-  end
-
-  def _split_tklist(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._split_tklist(str)
-  end
-
-  def _merge_tklist(*args)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._merge_tklist(*args)
-  end
-
-  def _conv_listelement(str)
-    raise SecurityError, "no permission to manipulate" unless self.manipulable?
-    @interp._conv_listelement(str)
-  end
-
-  def _create_console
-    fail RuntimeError, 'not support "_create_console" on the remote interpreter'
-  end
-
-  def mainloop
-    fail RuntimeError, 'not support "mainloop" on the remote interpreter'
-  end
-  def mainloop_watchdog
-    fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
-  end
-  def do_one_evant(flag = nil)
-    fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
-  end
-  def mainloop_abort_on_exception
-    fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
-  end
-  def mainloop_abort_on_exception=(mode)
-    fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
-  end
-  def set_eventloop_tick(*args)
-    fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
-  end
-  def get_eventloop_tick
-    fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
-  end
-  def set_no_event_wait(*args)
-    fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
-  end
-  def get_no_event_wait
-    fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
-  end
-  def set_eventloop_weight(*args)
-    fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
-  end
-  def get_eventloop_weight
-    fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
-  end
-end
-
-class << RemoteTkIp
-  def mainloop(*args)
-    fail RuntimeError, 'not support "mainloop" on the remote interpreter'
-  end
-  def mainloop_watchdog(*args)
-    fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
-  end
-  def do_one_evant(flag = nil)
-    fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
-  end
-  def mainloop_abort_on_exception
-    fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
-  end
-  def mainloop_abort_on_exception=(mode)
-    fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
-  end
-  def set_eventloop_tick(*args)
-    fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
-  end
-  def get_eventloop_tick
-    fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
-  end
-  def set_no_event_wait(*args)
-    fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
-  end
-  def get_no_event_wait
-    fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
-  end
-  def set_eventloop_weight(*args)
-    fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
-  end
-  def get_eventloop_weight
-    fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv-replace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv-replace.rb
deleted file mode 100644
index 63d58ce..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv-replace.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'socket'
-require 'resolv'
-
-class << IPSocket
-  alias original_resolv_getaddress getaddress
-  def getaddress(host)
-    begin
-      return Resolv.getaddress(host).to_s
-    rescue Resolv::ResolvError
-      raise SocketError, "Hostname not known: #{host}"
-    end
-  end
-end
-
-class TCPSocket
-  alias original_resolv_initialize initialize
-  def initialize(host, serv, *rest)
-    rest[0] = IPSocket.getaddress(rest[0]) unless rest.empty?
-    original_resolv_initialize(IPSocket.getaddress(host), serv, *rest)
-  end
-end
-
-class UDPSocket
-  alias original_resolv_bind bind
-  def bind(host, port)
-    host = IPSocket.getaddress(host) if host != ""
-    original_resolv_bind(host, port)
-  end
-
-  alias original_resolv_connect connect
-  def connect(host, port)
-    original_resolv_connect(IPSocket.getaddress(host), port)
-  end
-
-  alias original_resolv_send send
-  def send(mesg, flags, *rest)
-    if rest.length == 2
-      host, port = rest
-      begin
-        addrs = Resolv.getaddresses(host)
-      rescue Resolv::ResolvError
-        raise SocketError, "Hostname not known: #{host}"
-      end
-      err = nil
-      addrs[0...-1].each {|addr|
-        begin
-          return original_resolv_send(mesg, flags, addr, port)
-        rescue SystemCallError
-        end
-      }
-      original_resolv_send(mesg, flags, addrs[-1], port)
-    else
-      original_resolv_send(mesg, flags, *rest)
-    end
-  end
-end
-
-class SOCKSSocket
-  alias original_resolv_initialize initialize
-  def initialize(host, serv)
-    original_resolv_initialize(IPSocket.getaddress(host), port)
-  end
-end if defined? SOCKSSocket
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv.rb
deleted file mode 100644
index 3f79ecc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/resolv.rb
+++ /dev/null
@@ -1,1930 +0,0 @@
-=begin
-= resolv library
-resolv.rb is a resolver library written in Ruby.
-Since it is written in Ruby, it is thread-aware.
-I.e. it can resolv many hostnames concurrently.
-
-It is possible to lookup various resources of DNS using DNS module directly.
-
-== example
-  p Resolv.getaddress("www.ruby-lang.org")
-  p Resolv.getname("210.251.121.214")
-
-  Resolv::DNS.open {|dns|
-    p dns.getresources("www.ruby-lang.org", Resolv::DNS::Resource::IN::A).collect {|r| r.address}
-    p dns.getresources("ruby-lang.org", Resolv::DNS::Resource::IN::MX).collect {|r| [r.exchange.to_s, r.preference]}
-  }
-
-== Resolv class
-
-=== class methods
---- Resolv.getaddress(name)
---- Resolv.getaddresses(name)
---- Resolv.each_address(name) {|address| ...}
-    They lookups IP addresses of ((|name|)) which represents a hostname
-    as a string by default resolver.
-
-    getaddress returns first entry of lookupped addresses.
-    getaddresses returns lookupped addresses as an array.
-    each_address iterates over lookupped addresses.
-
---- Resolv.getname(address)
---- Resolv.getnames(address)
---- Resolv.each_name(address) {|name| ...}
-    lookups hostnames of ((|address|)) which represents IP address as a string.
-
-    getname returns first entry of lookupped names.
-    getnames returns lookupped names as an array.
-    each_names iterates over lookupped names.
-
-== Resolv::Hosts class
-hostname resolver using /etc/hosts format.
-
-=== class methods
---- Resolv::Hosts.new(hosts='/etc/hosts')
-
-=== methods
---- Resolv::Hosts#getaddress(name)
---- Resolv::Hosts#getaddresses(name)
---- Resolv::Hosts#each_address(name) {|address| ...}
-    address lookup methods.
-
---- Resolv::Hosts#getname(address)
---- Resolv::Hosts#getnames(address)
---- Resolv::Hosts#each_name(address) {|name| ...}
-    hostnames lookup methods.
-
-== Resolv::DNS class
-DNS stub resolver.
-
-=== class methods
---- Resolv::DNS.new(config_info=nil)
-
-    ((|config_info|)) should be nil, a string or a hash.
-    If nil is given, /etc/resolv.conf and platform specific information is used.
-    If a string is given, it should be a filename which format is same as /etc/resolv.conf.
-    If a hash is given, it may contains information for nameserver, search and ndots as follows.
-
-      Resolv::DNS.new({:nameserver=>["210.251.121.21"], :search=>["ruby-lang.org"], :ndots=>1})
-
---- Resolv::DNS.open(config_info=nil)
---- Resolv::DNS.open(config_info=nil) {|dns| ...}
-
-=== methods
---- Resolv::DNS#close
-
---- Resolv::DNS#getaddress(name)
---- Resolv::DNS#getaddresses(name)
---- Resolv::DNS#each_address(name) {|address| ...}
-    address lookup methods.
-
-    ((|name|)) must be a instance of Resolv::DNS::Name or String.  Lookupped
-    address is represented as an instance of Resolv::IPv4 or Resolv::IPv6.
-
---- Resolv::DNS#getname(address)
---- Resolv::DNS#getnames(address)
---- Resolv::DNS#each_name(address) {|name| ...}
-    hostnames lookup methods.
-
-    ((|address|)) must be a instance of Resolv::IPv4, Resolv::IPv6 or String.
-    Lookupped name is represented as an instance of Resolv::DNS::Name.
-
---- Resolv::DNS#getresource(name, typeclass)
---- Resolv::DNS#getresources(name, typeclass)
---- Resolv::DNS#each_resource(name, typeclass) {|resource| ...}
-    They lookup DNS resources of ((|name|)).
-    ((|name|)) must be a instance of Resolv::Name or String.
-
-    ((|typeclass|)) should be one of follows:
-    * Resolv::DNS::Resource::IN::ANY
-    * Resolv::DNS::Resource::IN::NS
-    * Resolv::DNS::Resource::IN::CNAME
-    * Resolv::DNS::Resource::IN::SOA
-    * Resolv::DNS::Resource::IN::HINFO
-    * Resolv::DNS::Resource::IN::MINFO
-    * Resolv::DNS::Resource::IN::MX
-    * Resolv::DNS::Resource::IN::TXT
-    * Resolv::DNS::Resource::IN::ANY
-    * Resolv::DNS::Resource::IN::A
-    * Resolv::DNS::Resource::IN::WKS
-    * Resolv::DNS::Resource::IN::PTR
-    * Resolv::DNS::Resource::IN::AAAA
-
-    Lookupped resource is represented as an instance of (a subclass of)
-    Resolv::DNS::Resource. 
-    (Resolv::DNS::Resource::IN::A, etc.)
-
-== Resolv::DNS::Resource::IN::NS class
---- name
-== Resolv::DNS::Resource::IN::CNAME class
---- name
-== Resolv::DNS::Resource::IN::SOA class
---- mname
---- rname
---- serial
---- refresh
---- retry
---- expire
---- minimum
-== Resolv::DNS::Resource::IN::HINFO class
---- cpu
---- os
-== Resolv::DNS::Resource::IN::MINFO class
---- rmailbx
---- emailbx
-== Resolv::DNS::Resource::IN::MX class
---- preference
---- exchange
-== Resolv::DNS::Resource::IN::TXT class
---- data
-== Resolv::DNS::Resource::IN::A class
---- address
-== Resolv::DNS::Resource::IN::WKS class
---- address
---- protocol
---- bitmap
-== Resolv::DNS::Resource::IN::PTR class
---- name
-== Resolv::DNS::Resource::IN::AAAA class
---- address
-
-== Resolv::DNS::Name class
-
-=== class methods
---- Resolv::DNS::Name.create(name)
-
-=== methods
---- Resolv::DNS::Name#to_s
-
-== Resolv::DNS::Resource class
-
-== Resolv::IPv4 class
-=== class methods
---- Resolv::IPv4.create(address)
-
-=== methods
---- Resolv::IPv4#to_s
---- Resolv::IPv4#to_name
-
-=== constants
---- Resolv::IPv4::Regex
-    regular expression for IPv4 address.
-
-== Resolv::IPv6 class
-=== class methods
---- Resolv::IPv6.create(address)
-
-=== methods
---- Resolv::IPv6#to_s
---- Resolv::IPv6#to_name
-
-=== constants
---- Resolv::IPv6::Regex
-    regular expression for IPv6 address.
-
-== Bugs
-* NIS is not supported.
-* /etc/nsswitch.conf is not supported.
-* IPv6 is not supported.
-
-=end
-
-require 'socket'
-require 'fcntl'
-require 'timeout'
-require 'thread'
-
-begin
-  require 'securerandom'
-rescue LoadError
-end
-
-class Resolv
-  def self.getaddress(name)
-    DefaultResolver.getaddress(name)
-  end
-
-  def self.getaddresses(name)
-    DefaultResolver.getaddresses(name)
-  end
-
-  def self.each_address(name, &block)
-    DefaultResolver.each_address(name, &block)
-  end
-
-  def self.getname(address)
-    DefaultResolver.getname(address)
-  end
-
-  def self.getnames(address)
-    DefaultResolver.getnames(address)
-  end
-
-  def self.each_name(address, &proc)
-    DefaultResolver.each_name(address, &proc)
-  end
-
-  def initialize(resolvers=[Hosts.new, DNS.new])
-    @resolvers = resolvers
-  end
-
-  def getaddress(name)
-    each_address(name) {|address| return address}
-    raise ResolvError.new("no address for #{name}")
-  end
-
-  def getaddresses(name)
-    ret = []
-    each_address(name) {|address| ret << address}
-    return ret
-  end
-
-  def each_address(name)
-    if AddressRegex =~ name
-      yield name
-      return
-    end
-    yielded = false
-    @resolvers.each {|r|
-      r.each_address(name) {|address|
-        yield address.to_s
-        yielded = true
-      }
-      return if yielded
-    }
-  end
-
-  def getname(address)
-    each_name(address) {|name| return name}
-    raise ResolvError.new("no name for #{address}")
-  end
-
-  def getnames(address)
-    ret = []
-    each_name(address) {|name| ret << name}
-    return ret
-  end
-
-  def each_name(address)
-    yielded = false
-    @resolvers.each {|r|
-      r.each_name(address) {|name|
-        yield name.to_s
-        yielded = true
-      }
-      return if yielded
-    }
-  end
-
-  class ResolvError < StandardError
-  end
-
-  class ResolvTimeout < TimeoutError
-  end
-
-  class Hosts
-    if /mswin32|mingw|bccwin/ =~ RUBY_PLATFORM
-      require 'win32/resolv'
-      DefaultFileName = Win32::Resolv.get_hosts_path
-    else
-      DefaultFileName = '/etc/hosts'
-    end
-
-    def initialize(filename = DefaultFileName)
-      @filename = filename
-      @mutex = Mutex.new
-      @initialized = nil
-    end
-
-    def lazy_initialize
-      @mutex.synchronize {
-        unless @initialized
-          @name2addr = {}
-          @addr2name = {}
-          open(@filename) {|f|
-            f.each {|line|
-              line.sub!(/#.*/, '')
-              addr, hostname, *aliases = line.split(/\s+/)
-              next unless addr
-              addr.untaint
-              hostname.untaint
-              @addr2name[addr] = [] unless @addr2name.include? addr
-              @addr2name[addr] << hostname
-              @addr2name[addr] += aliases
-              @name2addr[hostname] = [] unless @name2addr.include? hostname
-              @name2addr[hostname] << addr
-              aliases.each {|n|
-                n.untaint
-                @name2addr[n] = [] unless @name2addr.include? n
-                @name2addr[n] << addr
-              }
-            }
-          }
-          @name2addr.each {|name, arr| arr.reverse!}
-          @initialized = true
-        end
-      }
-      self
-    end
-
-    def getaddress(name)
-      each_address(name) {|address| return address}
-      raise ResolvError.new("#{@filename} has no name: #{name}")
-    end
-
-    def getaddresses(name)
-      ret = []
-      each_address(name) {|address| ret << address}
-      return ret
-    end
-
-    def each_address(name, &proc)
-      lazy_initialize
-      if @name2addr.include?(name)
-        @name2addr[name].each(&proc)
-      end
-    end
-
-    def getname(address)
-      each_name(address) {|name| return name}
-      raise ResolvError.new("#{@filename} has no address: #{address}")
-    end
-
-    def getnames(address)
-      ret = []
-      each_name(address) {|name| ret << name}
-      return ret
-    end
-
-    def each_name(address, &proc)
-      lazy_initialize
-      if @addr2name.include?(address)
-        @addr2name[address].each(&proc)
-      end
-    end
-  end
-
-  class DNS
-    # STD0013 (RFC 1035, etc.)
-    # ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
-
-    Port = 53
-    UDPSize = 512
-
-    DNSThreadGroup = ThreadGroup.new
-
-    def self.open(*args)
-      dns = new(*args)
-      return dns unless block_given?
-      begin
-        yield dns
-      ensure
-        dns.close
-      end
-    end
-
-    def initialize(config_info=nil)
-      @mutex = Mutex.new
-      @config = Config.new(config_info)
-      @initialized = nil
-    end
-
-    def lazy_initialize
-      @mutex.synchronize {
-        unless @initialized
-          @config.lazy_initialize
-          @initialized = true
-        end
-      }
-      self
-    end
-
-    def close
-      @mutex.synchronize {
-        if @initialized
-          @initialized = false
-        end
-      }
-    end
-
-    def getaddress(name)
-      each_address(name) {|address| return address}
-      raise ResolvError.new("DNS result has no information for #{name}")
-    end
-
-    def getaddresses(name)
-      ret = []
-      each_address(name) {|address| ret << address}
-      return ret
-    end
-
-    def each_address(name)
-      each_resource(name, Resource::IN::A) {|resource| yield resource.address}
-    end
-
-    def getname(address)
-      each_name(address) {|name| return name}
-      raise ResolvError.new("DNS result has no information for #{address}")
-    end
-
-    def getnames(address)
-      ret = []
-      each_name(address) {|name| ret << name}
-      return ret
-    end
-
-    def each_name(address)
-      case address
-      when Name
-        ptr = address
-      when IPv4::Regex
-        ptr = IPv4.create(address).to_name
-      when IPv6::Regex
-        ptr = IPv6.create(address).to_name
-      else
-        raise ResolvError.new("cannot interpret as address: #{address}")
-      end
-      each_resource(ptr, Resource::IN::PTR) {|resource| yield resource.name}
-    end
-
-    def getresource(name, typeclass)
-      each_resource(name, typeclass) {|resource| return resource}
-      raise ResolvError.new("DNS result has no information for #{name}")
-    end
-
-    def getresources(name, typeclass)
-      ret = []
-      each_resource(name, typeclass) {|resource| ret << resource}
-      return ret
-    end
-
-    def each_resource(name, typeclass, &proc)
-      lazy_initialize
-      requester = make_requester
-      senders = {}
-      begin
-        @config.resolv(name) {|candidate, tout, nameserver|
-          msg = Message.new
-          msg.rd = 1
-          msg.add_question(candidate, typeclass)
-          unless sender = senders[[candidate, nameserver]]
-            sender = senders[[candidate, nameserver]] =
-              requester.sender(msg, candidate, nameserver)
-          end
-          reply, reply_name = requester.request(sender, tout)
-          case reply.rcode
-          when RCode::NoError
-            extract_resources(reply, reply_name, typeclass, &proc)
-            return
-          when RCode::NXDomain
-            raise Config::NXDomain.new(reply_name.to_s)
-          else
-            raise Config::OtherResolvError.new(reply_name.to_s)
-          end
-        }
-      ensure
-        requester.close
-      end
-    end
-
-    def make_requester # :nodoc:
-      if nameserver = @config.single?
-        Requester::ConnectedUDP.new(nameserver)
-      else
-        Requester::UnconnectedUDP.new
-      end
-    end
-
-    def extract_resources(msg, name, typeclass)
-      if typeclass < Resource::ANY
-        n0 = Name.create(name)
-        msg.each_answer {|n, ttl, data|
-          yield data if n0 == n
-        }
-      end
-      yielded = false
-      n0 = Name.create(name)
-      msg.each_answer {|n, ttl, data|
-        if n0 == n
-          case data
-          when typeclass
-            yield data
-            yielded = true
-          when Resource::CNAME
-            n0 = data.name
-          end
-        end
-      }
-      return if yielded
-      msg.each_answer {|n, ttl, data|
-        if n0 == n
-          case data
-          when typeclass
-            yield data
-          end
-        end
-      }
-    end
-
-    if defined? SecureRandom
-      def self.random(arg) # :nodoc:
-        begin
-          SecureRandom.random_number(arg)
-        rescue NotImplementedError
-          rand(arg)
-        end
-      end
-    else
-      def self.random(arg) # :nodoc:
-        rand(arg)
-      end
-    end
-
-    def self.rangerand(range) # :nodoc:
-      base = range.begin
-      len = range.end - range.begin
-      if !range.exclude_end?
-        len += 1
-      end
-      base + random(len)
-    end
-
-    RequestID = {}
-    RequestIDMutex = Mutex.new
-
-    def self.allocate_request_id(host, port) # :nodoc:
-      id = nil
-      RequestIDMutex.synchronize {
-        h = (RequestID[[host, port]] ||= {})
-        begin
-          id = rangerand(0x0000..0xffff)
-        end while h[id] 
-        h[id] = true
-      }
-      id
-    end
-
-    def self.free_request_id(host, port, id) # :nodoc:
-      RequestIDMutex.synchronize {
-        key = [host, port]
-        if h = RequestID[key]
-          h.delete id
-          if h.empty?
-            RequestID.delete key
-          end
-        end
-      }
-    end
-
-    def self.bind_random_port(udpsock) # :nodoc:
-      begin
-        port = rangerand(1024..65535)
-        udpsock.bind("", port)
-      rescue Errno::EADDRINUSE
-        retry
-      end
-    end
-
-    class Requester
-      def initialize
-        @senders = {}
-        @sock = nil
-      end
-
-      def request(sender, tout)
-        timelimit = Time.now + tout
-        sender.send
-        while (now = Time.now) < timelimit
-          timeout = timelimit - now
-          if !IO.select([@sock], nil, nil, timeout)
-            raise ResolvTimeout
-          end
-          reply, from = recv_reply
-          begin
-            msg = Message.decode(reply)
-          rescue DecodeError
-            next # broken DNS message ignored
-          end
-          if s = @senders[[from,msg.id]]
-            break
-          else
-            # unexpected DNS message ignored
-          end
-        end
-        return msg, s.data
-      end
-
-      def close
-        sock = @sock
-        @sock = nil
-        sock.close if sock
-      end
-
-      class Sender # :nodoc:
-        def initialize(msg, data, sock)
-          @msg = msg
-          @data = data
-          @sock = sock
-        end
-      end
-
-      class UnconnectedUDP < Requester
-        def initialize
-          super()
-          @sock = UDPSocket.new
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-          DNS.bind_random_port(@sock)
-        end
-
-        def recv_reply
-          reply, from = @sock.recvfrom(UDPSize)
-          return reply, [from[3],from[1]]
-        end
-
-        def sender(msg, data, host, port=Port)
-          service = [host, port]
-          id = DNS.allocate_request_id(host, port)
-          request = msg.encode
-          request[0,2] = [id].pack('n')
-          return @senders[[service, id]] =
-            Sender.new(request, data, @sock, host, port)
-        end
-
-        def close
-          super
-          @senders.each_key {|service, id|
-            DNS.free_request_id(service[0], service[1], id)
-          }
-        end
-
-        class Sender < Requester::Sender
-          def initialize(msg, data, sock, host, port)
-            super(msg, data, sock)
-            @host = host
-            @port = port
-          end
-          attr_reader :data
-
-          def send
-            @sock.send(@msg, 0, @host, @port)
-          end
-        end
-      end
-
-      class ConnectedUDP < Requester
-        def initialize(host, port=Port)
-          super()
-          @host = host
-          @port = port
-          @sock = UDPSocket.new(host.index(':') ? Socket::AF_INET6 : Socket::AF_INET)
-          DNS.bind_random_port(@sock)
-          @sock.connect(host, port)
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-        end
-
-        def recv_reply
-          reply = @sock.recv(UDPSize)
-          return reply, nil
-        end
-
-        def sender(msg, data, host=@host, port=@port)
-          unless host == @host && port == @port
-            raise RequestError.new("host/port don't match: #{host}:#{port}")
-          end
-          id = DNS.allocate_request_id(@host, @port)
-          request = msg.encode
-          request[0,2] = [id].pack('n')
-          return @senders[[nil,id]] = Sender.new(request, data, @sock)
-        end
-
-        def close
-          super
-          @senders.each_key {|from, id|
-            DNS.free_request_id(@host, @port, id)
-          }
-        end
-
-        class Sender < Requester::Sender
-          def send
-            @sock.send(@msg, 0)
-          end
-          attr_reader :data
-        end
-      end
-
-      class TCP < Requester
-        def initialize(host, port=Port)
-          super()
-          @host = host
-          @port = port
-          @sock = TCPSocket.new(@host, @port)
-          @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD
-          @senders = {}
-        end
-
-        def recv_reply
-          len = @sock.read(2).unpack('n')[0]
-          reply = @sock.read(len)
-          return reply, nil
-        end
-
-        def sender(msg, data, host=@host, port=@port)
-          unless host == @host && port == @port
-            raise RequestError.new("host/port don't match: #{host}:#{port}")
-          end
-          id = DNS.allocate_request_id(@host, @port)
-          request = msg.encode
-          request[0,2] = [request.length, id].pack('nn')
-          return @senders[[nil,id]] = Sender.new(request, data, @sock)
-        end
-
-        class Sender < Requester::Sender
-          def send
-            @sock.print(@msg)
-            @sock.flush
-          end
-          attr_reader :data
-        end
-
-        def close
-          super
-          @senders.each_key {|from,id|
-            DNS.free_request_id(@host, @port, id)
-          }
-        end
-      end
-
-      class RequestError < StandardError
-      end
-    end
-
-    class Config
-      def initialize(config_info=nil)
-        @mutex = Mutex.new
-        @config_info = config_info
-        @initialized = nil
-      end
-
-      def Config.parse_resolv_conf(filename)
-        nameserver = []
-        search = nil
-        ndots = 1
-        open(filename) {|f|
-          f.each {|line|
-            line.sub!(/[#;].*/, '')
-            keyword, *args = line.split(/\s+/)
-            args.each { |arg|
-              arg.untaint
-            }
-            next unless keyword
-            case keyword
-            when 'nameserver'
-              nameserver += args
-            when 'domain'
-              next if args.empty?
-              search = [args[0]]
-            when 'search'
-              next if args.empty?
-              search = args
-            when 'options'
-              args.each {|arg|
-                case arg
-                when /\Andots:(\d+)\z/
-                  ndots = $1.to_i
-                end
-              }
-            end
-          }
-        }
-        return { :nameserver => nameserver, :search => search, :ndots => ndots }
-      end
-
-      def Config.default_config_hash(filename="/etc/resolv.conf")
-        if File.exist? filename
-          config_hash = Config.parse_resolv_conf(filename)
-        else
-          if /mswin32|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM
-            require 'win32/resolv'
-            search, nameserver = Win32::Resolv.get_resolv_info
-            config_hash = {}
-            config_hash[:nameserver] = nameserver if nameserver
-            config_hash[:search] = [search].flatten if search
-          end
-        end
-        config_hash
-      end
-
-      def lazy_initialize
-        @mutex.synchronize {
-          unless @initialized
-            @nameserver = []
-            @search = nil
-            @ndots = 1
-            case @config_info
-            when nil
-              config_hash = Config.default_config_hash
-            when String
-              config_hash = Config.parse_resolv_conf(@config_info)
-            when Hash
-              config_hash = @config_info.dup
-              if String === config_hash[:nameserver]
-                config_hash[:nameserver] = [config_hash[:nameserver]]
-              end
-              if String === config_hash[:search]
-                config_hash[:search] = [config_hash[:search]]
-              end
-            else
-              raise ArgumentError.new("invalid resolv configuration: #{@config_info.inspect}")
-            end
-            @nameserver = config_hash[:nameserver] if config_hash.include? :nameserver
-            @search = config_hash[:search] if config_hash.include? :search
-            @ndots = config_hash[:ndots] if config_hash.include? :ndots
-
-            @nameserver = ['0.0.0.0'] if @nameserver.empty?
-            if @search
-              @search = @search.map {|arg| Label.split(arg) }
-            else
-              hostname = Socket.gethostname
-              if /\./ =~ hostname
-                @search = [Label.split($')]
-              else
-                @search = [[]]
-              end
-            end
-
-            if !@nameserver.kind_of?(Array) ||
-               !@nameserver.all? {|ns| String === ns }
-              raise ArgumentError.new("invalid nameserver config: #{@nameserver.inspect}")
-            end
-
-            if !@search.kind_of?(Array) ||
-               !@search.all? {|ls| ls.all? {|l| Label::Str === l } }
-              raise ArgumentError.new("invalid search config: #{@search.inspect}")
-            end
-
-            if !@ndots.kind_of?(Integer)
-              raise ArgumentError.new("invalid ndots config: #{@ndots.inspect}")
-            end
-
-            @initialized = true
-          end
-        }
-        self
-      end
-
-      def single?
-        lazy_initialize
-        if @nameserver.length == 1
-          return @nameserver[0]
-        else
-          return nil
-        end
-      end
-
-      def generate_candidates(name)
-        candidates = nil
-        name = Name.create(name)
-        if name.absolute?
-          candidates = [name]
-        else
-          if @ndots <= name.length - 1
-            candidates = [Name.new(name.to_a)]
-          else
-            candidates = []
-          end
-          candidates.concat(@search.map {|domain| Name.new(name.to_a + domain)})
-        end
-        return candidates
-      end
-
-      InitialTimeout = 5
-
-      def generate_timeouts
-        ts = [InitialTimeout]
-        ts << ts[-1] * 2 / @nameserver.length
-        ts << ts[-1] * 2
-        ts << ts[-1] * 2
-        return ts
-      end
-
-      def resolv(name)
-        candidates = generate_candidates(name)
-        timeouts = generate_timeouts
-        begin
-          candidates.each {|candidate|
-            begin
-              timeouts.each {|tout|
-                @nameserver.each {|nameserver|
-                  begin
-                    yield candidate, tout, nameserver
-                  rescue ResolvTimeout
-                  end
-                }
-              }
-              raise ResolvError.new("DNS resolv timeout: #{name}")
-            rescue NXDomain
-            end
-          }
-        rescue ResolvError
-        end
-      end
-
-      class NXDomain < ResolvError
-      end
-
-      class OtherResolvError < ResolvError
-      end
-    end
-
-    module OpCode
-      Query = 0
-      IQuery = 1
-      Status = 2
-      Notify = 4
-      Update = 5
-    end
-
-    module RCode
-      NoError = 0
-      FormErr = 1
-      ServFail = 2
-      NXDomain = 3
-      NotImp = 4
-      Refused = 5
-      YXDomain = 6
-      YXRRSet = 7
-      NXRRSet = 8
-      NotAuth = 9
-      NotZone = 10
-      BADVERS = 16
-      BADSIG = 16
-      BADKEY = 17
-      BADTIME = 18
-      BADMODE = 19
-      BADNAME = 20
-      BADALG = 21
-    end
-
-    class DecodeError < StandardError
-    end
-
-    class EncodeError < StandardError
-    end
-
-    module Label
-      def self.split(arg)
-        labels = []
-        arg.scan(/[^\.]+/) {labels << Str.new($&)}
-        return labels
-      end
-
-      class Str
-        def initialize(string)
-          @string = string
-          @downcase = string.downcase
-        end
-        attr_reader :string, :downcase
-
-        def to_s
-          return @string
-        end
-
-        def inspect
-          return "#<#{self.class} #{self.to_s}>"
-        end
-
-        def ==(other)
-          return @downcase == other.downcase
-        end
-
-        def eql?(other)
-          return self == other
-        end
-
-        def hash
-          return @downcase.hash
-        end
-      end
-    end
-
-    class Name
-      def self.create(arg)
-        case arg
-        when Name
-          return arg
-        when String
-          return Name.new(Label.split(arg), /\.\z/ =~ arg ? true : false)
-        else
-          raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
-        end
-      end
-
-      def initialize(labels, absolute=true)
-        @labels = labels
-        @absolute = absolute
-      end
-
-      def inspect
-        "#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>"
-      end
-
-      def absolute?
-        return @absolute
-      end
-
-      def ==(other)
-        return false unless Name === other
-        return @labels == other.to_a && @absolute == other.absolute?
-      end
-      alias eql? ==
-
-      # tests subdomain-of relation.
-      #
-      #   domain = Resolv::DNS::Name.create("y.z")
-      #   p Resolv::DNS::Name.create("w.x.y.z").subdomain_of?(domain) #=> true
-      #   p Resolv::DNS::Name.create("x.y.z").subdomain_of?(domain) #=> true
-      #   p Resolv::DNS::Name.create("y.z").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("z").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("x.y.z.").subdomain_of?(domain) #=> false
-      #   p Resolv::DNS::Name.create("w.z").subdomain_of?(domain) #=> false
-      #
-      def subdomain_of?(other)
-        raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other
-        return false if @absolute != other.absolute?
-        other_len = other.length
-        return false if @labels.length <= other_len
-        return @labels[-other_len, other_len] == other.to_a
-      end
-
-      def hash
-        return @labels.hash ^ @absolute.hash
-      end
-
-      def to_a
-        return @labels
-      end
-
-      def length
-        return @labels.length
-      end
-
-      def [](i)
-        return @labels[i]
-      end
-
-      # returns the domain name as a string.
-      #
-      # The domain name doesn't have a trailing dot even if the name object is
-      # absolute.
-      #
-      #   p Resolv::DNS::Name.create("x.y.z.").to_s #=> "x.y.z"
-      #   p Resolv::DNS::Name.create("x.y.z").to_s #=> "x.y.z"
-      #
-      def to_s
-        return @labels.join('.')
-      end
-    end
-
-    class Message
-      @@identifier = -1
-
-      def initialize(id = (@@identifier += 1) & 0xffff)
-        @id = id
-        @qr = 0
-        @opcode = 0
-        @aa = 0
-        @tc = 0
-        @rd = 0 # recursion desired
-        @ra = 0 # recursion available
-        @rcode = 0
-        @question = []
-        @answer = []
-        @authority = []
-        @additional = []
-      end
-
-      attr_accessor :id, :qr, :opcode, :aa, :tc, :rd, :ra, :rcode
-      attr_reader :question, :answer, :authority, :additional
-
-      def ==(other)
-        return @id == other.id &&
-               @qr == other.qr &&
-               @opcode == other.opcode &&
-               @aa == other.aa &&
-               @tc == other.tc &&
-               @rd == other.rd &&
-               @ra == other.ra &&
-               @rcode == other.rcode &&
-               @question == other.question &&
-               @answer == other.answer &&
-               @authority == other.authority &&
-               @additional == other.additional
-      end
-
-      def add_question(name, typeclass)
-        @question << [Name.create(name), typeclass]
-      end
-
-      def each_question
-        @question.each {|name, typeclass|
-          yield name, typeclass
-        }
-      end
-
-      def add_answer(name, ttl, data)
-        @answer << [Name.create(name), ttl, data]
-      end
-
-      def each_answer
-        @answer.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def add_authority(name, ttl, data)
-        @authority << [Name.create(name), ttl, data]
-      end
-
-      def each_authority
-        @authority.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def add_additional(name, ttl, data)
-        @additional << [Name.create(name), ttl, data]
-      end
-
-      def each_additional
-        @additional.each {|name, ttl, data|
-          yield name, ttl, data
-        }
-      end
-
-      def each_resource
-        each_answer {|name, ttl, data| yield name, ttl, data}
-        each_authority {|name, ttl, data| yield name, ttl, data}
-        each_additional {|name, ttl, data| yield name, ttl, data}
-      end
-
-      def encode
-        return MessageEncoder.new {|msg|
-          msg.put_pack('nnnnnn',
-            @id,
-            (@qr & 1) << 15 |
-            (@opcode & 15) << 11 |
-            (@aa & 1) << 10 |
-            (@tc & 1) << 9 |
-            (@rd & 1) << 8 |
-            (@ra & 1) << 7 |
-            (@rcode & 15),
-            @question.length,
-            @answer.length,
-            @authority.length,
-            @additional.length)
-          @question.each {|q|
-            name, typeclass = q
-            msg.put_name(name)
-            msg.put_pack('nn', typeclass::TypeValue, typeclass::ClassValue)
-          }
-          [@answer, @authority, @additional].each {|rr|
-            rr.each {|r|
-              name, ttl, data = r
-              msg.put_name(name)
-              msg.put_pack('nnN', data.class::TypeValue, data.class::ClassValue, ttl)
-              msg.put_length16 {data.encode_rdata(msg)}
-            }
-          }
-        }.to_s
-      end
-
-      class MessageEncoder
-        def initialize
-          @data = ''
-          @names = {}
-          yield self
-        end
-
-        def to_s
-          return @data
-        end
-
-        def put_bytes(d)
-          @data << d
-        end
-
-        def put_pack(template, *d)
-          @data << d.pack(template)
-        end
-
-        def put_length16
-          length_index = @data.length
-          @data << "\0\0"
-          data_start = @data.length
-          yield
-          data_end = @data.length
-          @data[length_index, 2] = [data_end - data_start].pack("n")
-        end
-
-        def put_string(d)
-          self.put_pack("C", d.length)
-          @data << d
-        end
-
-        def put_string_list(ds)
-          ds.each {|d|
-            self.put_string(d)
-          }
-        end
-
-        def put_name(d)
-          put_labels(d.to_a)
-        end
-
-        def put_labels(d)
-          d.each_index {|i|
-            domain = d[i..-1]
-            if idx = @names[domain]
-              self.put_pack("n", 0xc000 | idx)
-              return
-            else
-              @names[domain] = @data.length
-              self.put_label(d[i])
-            end
-          }
-          @data << "\0"
-        end
-
-        def put_label(d)
-          self.put_string(d.string)
-        end
-      end
-
-      def Message.decode(m)
-        o = Message.new(0)
-        MessageDecoder.new(m) {|msg|
-          id, flag, qdcount, ancount, nscount, arcount =
-            msg.get_unpack('nnnnnn')
-          o.id = id
-          o.qr = (flag >> 15) & 1
-          o.opcode = (flag >> 11) & 15
-          o.aa = (flag >> 10) & 1
-          o.tc = (flag >> 9) & 1
-          o.rd = (flag >> 8) & 1
-          o.ra = (flag >> 7) & 1
-          o.rcode = flag & 15
-          (1..qdcount).each {
-            name, typeclass = msg.get_question
-            o.add_question(name, typeclass)
-          }
-          (1..ancount).each {
-            name, ttl, data = msg.get_rr
-            o.add_answer(name, ttl, data)
-          }
-          (1..nscount).each {
-            name, ttl, data = msg.get_rr
-            o.add_authority(name, ttl, data)
-          }
-          (1..arcount).each {
-            name, ttl, data = msg.get_rr
-            o.add_additional(name, ttl, data)
-          }
-        }
-        return o
-      end
-
-      class MessageDecoder
-        def initialize(data)
-          @data = data
-          @index = 0
-          @limit = data.length
-          yield self
-        end
-
-        def get_length16
-          len, = self.get_unpack('n')
-          save_limit = @limit
-          @limit = @index + len
-          d = yield(len)
-          if @index < @limit
-            raise DecodeError.new("junk exists")
-          elsif @limit < @index
-            raise DecodeError.new("limit exceeded")
-          end
-          @limit = save_limit
-          return d
-        end
-
-        def get_bytes(len = @limit - @index)
-          d = @data[@index, len]
-          @index += len
-          return d
-        end
-
-        def get_unpack(template)
-          len = 0
-          template.each_byte {|byte|
-            case byte
-            when ?c, ?C
-              len += 1
-            when ?n
-              len += 2
-            when ?N
-              len += 4
-            else
-              raise StandardError.new("unsupported template: '#{byte.chr}' in '#{template}'")
-            end
-          }
-          raise DecodeError.new("limit exceeded") if @limit < @index + len
-          arr = @data.unpack("@#{@index}#{template}")
-          @index += len
-          return arr
-        end
-
-        def get_string
-          len = @data[@index]
-          raise DecodeError.new("limit exceeded") if @limit < @index + 1 + len
-          d = @data[@index + 1, len]
-          @index += 1 + len
-          return d
-        end
-
-        def get_string_list
-          strings = []
-          while @index < @limit
-            strings << self.get_string
-          end
-          strings
-        end
-
-        def get_name
-          return Name.new(self.get_labels)
-        end
-
-        def get_labels(limit=nil)
-          limit = @index if !limit || @index < limit
-          d = []
-          while true
-            case @data[@index]
-            when 0
-              @index += 1
-              return d
-            when 192..255
-              idx = self.get_unpack('n')[0] & 0x3fff
-              if limit <= idx
-                raise DecodeError.new("non-backward name pointer")
-              end
-              save_index = @index
-              @index = idx
-              d += self.get_labels(limit)
-              @index = save_index
-              return d
-            else
-              d << self.get_label
-            end
-          end
-          return d
-        end
-
-        def get_label
-          return Label::Str.new(self.get_string)
-        end
-
-        def get_question
-          name = self.get_name
-          type, klass = self.get_unpack("nn")
-          return name, Resource.get_class(type, klass)
-        end
-
-        def get_rr
-          name = self.get_name
-          type, klass, ttl = self.get_unpack('nnN')
-          typeclass = Resource.get_class(type, klass)
-          return name, ttl, self.get_length16 {typeclass.decode_rdata(self)}
-        end
-      end
-    end
-
-    class Query
-      def encode_rdata(msg)
-        raise EncodeError.new("#{self.class} is query.") 
-      end
-
-      def self.decode_rdata(msg)
-        raise DecodeError.new("#{self.class} is query.") 
-      end
-    end
-
-    class Resource < Query
-      ClassHash = {}
-
-      def encode_rdata(msg)
-        raise NotImplementedError.new
-      end
-
-      def self.decode_rdata(msg)
-        raise NotImplementedError.new
-      end
-
-      def ==(other)
-        return self.class == other.class &&
-          self.instance_variables == other.instance_variables &&
-          self.instance_variables.collect {|name| self.instance_eval name} ==
-            other.instance_variables.collect {|name| other.instance_eval name}
-      end
-
-      def eql?(other)
-        return self == other
-      end
-
-      def hash
-        h = 0
-        self.instance_variables.each {|name|
-          h ^= self.instance_eval("#{name}.hash")
-        }
-        return h
-      end
-
-      def self.get_class(type_value, class_value)
-        return ClassHash[[type_value, class_value]] ||
-               Generic.create(type_value, class_value)
-      end
-
-      class Generic < Resource
-        def initialize(data)
-          @data = data
-        end
-        attr_reader :data
-
-        def encode_rdata(msg)
-          msg.put_bytes(data)
-        end
-
-        def self.decode_rdata(msg)
-          return self.new(msg.get_bytes)
-        end
-
-        def self.create(type_value, class_value)
-          c = Class.new(Generic)
-          c.const_set(:TypeValue, type_value)
-          c.const_set(:ClassValue, class_value)
-          Generic.const_set("Type#{type_value}_Class#{class_value}", c)
-          ClassHash[[type_value, class_value]] = c
-          return c
-        end
-      end
-
-      class DomainName < Resource
-        def initialize(name)
-          @name = name
-        end
-        attr_reader :name
-
-        def encode_rdata(msg)
-          msg.put_name(@name)
-        end
-
-        def self.decode_rdata(msg)
-          return self.new(msg.get_name)
-        end
-      end
-
-      # Standard (class generic) RRs
-      ClassValue = nil
-
-      class NS < DomainName
-        TypeValue = 2
-      end
-
-      class CNAME < DomainName
-        TypeValue = 5
-      end
-
-      class SOA < Resource
-        TypeValue = 6
-
-        def initialize(mname, rname, serial, refresh, retry_, expire, minimum)
-          @mname = mname
-          @rname = rname
-          @serial = serial
-          @refresh = refresh
-          @retry = retry_
-          @expire = expire
-          @minimum = minimum
-        end
-        attr_reader :mname, :rname, :serial, :refresh, :retry, :expire, :minimum
-
-        def encode_rdata(msg)
-          msg.put_name(@mname)
-          msg.put_name(@rname)
-          msg.put_pack('NNNNN', @serial, @refresh, @retry, @expire, @minimum)
-        end
-
-        def self.decode_rdata(msg)
-          mname = msg.get_name
-          rname = msg.get_name
-          serial, refresh, retry_, expire, minimum = msg.get_unpack('NNNNN')
-          return self.new(
-            mname, rname, serial, refresh, retry_, expire, minimum)
-        end
-      end
-
-      class PTR < DomainName
-        TypeValue = 12
-      end
-
-      class HINFO < Resource
-        TypeValue = 13
-
-        def initialize(cpu, os)
-          @cpu = cpu
-          @os = os
-        end
-        attr_reader :cpu, :os
-
-        def encode_rdata(msg)
-          msg.put_string(@cpu)
-          msg.put_string(@os)
-        end
-
-        def self.decode_rdata(msg)
-          cpu = msg.get_string
-          os = msg.get_string
-          return self.new(cpu, os)
-        end
-      end
-
-      class MINFO < Resource
-        TypeValue = 14
-
-        def initialize(rmailbx, emailbx)
-          @rmailbx = rmailbx
-          @emailbx = emailbx
-        end
-        attr_reader :rmailbx, :emailbx
-
-        def encode_rdata(msg)
-          msg.put_name(@rmailbx)
-          msg.put_name(@emailbx)
-        end
-
-        def self.decode_rdata(msg)
-          rmailbx = msg.get_string
-          emailbx = msg.get_string
-          return self.new(rmailbx, emailbx)
-        end
-      end
-
-      class MX < Resource
-        TypeValue= 15
-
-        def initialize(preference, exchange)
-          @preference = preference
-          @exchange = exchange
-        end
-        attr_reader :preference, :exchange
-
-        def encode_rdata(msg)
-          msg.put_pack('n', @preference)
-          msg.put_name(@exchange)
-        end
-
-        def self.decode_rdata(msg)
-          preference, = msg.get_unpack('n')
-          exchange = msg.get_name
-          return self.new(preference, exchange)
-        end
-      end
-
-      class TXT < Resource
-        TypeValue = 16
-
-        def initialize(first_string, *rest_strings)
-          @strings = [first_string, *rest_strings]
-        end
-        attr_reader :strings
-
-        def data
-          @strings[0]
-        end
-
-        def encode_rdata(msg)
-          msg.put_string_list(@strings)
-        end
-
-        def self.decode_rdata(msg)
-          strings = msg.get_string_list
-          return self.new(*strings)
-        end
-      end
-
-      class ANY < Query
-        TypeValue = 255
-      end
-
-      ClassInsensitiveTypes = [
-        NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, ANY
-      ]
-
-      # ARPA Internet specific RRs
-      module IN
-        ClassValue = 1
-
-        ClassInsensitiveTypes.each {|s|
-          c = Class.new(s)
-          c.const_set(:TypeValue, s::TypeValue)
-          c.const_set(:ClassValue, ClassValue)
-          ClassHash[[s::TypeValue, ClassValue]] = c
-          self.const_set(s.name.sub(/.*::/, ''), c)
-        }
-
-        class A < Resource
-          ClassHash[[TypeValue = 1, ClassValue = ClassValue]] = self
-
-          def initialize(address)
-            @address = IPv4.create(address)
-          end
-          attr_reader :address
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-          end
-
-          def self.decode_rdata(msg)
-            return self.new(IPv4.new(msg.get_bytes(4)))
-          end
-        end
-
-        class WKS < Resource
-          ClassHash[[TypeValue = 11, ClassValue = ClassValue]] = self
-
-          def initialize(address, protocol, bitmap)
-            @address = IPv4.create(address)
-            @protocol = protocol
-            @bitmap = bitmap
-          end
-          attr_reader :address, :protocol, :bitmap
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-            msg.put_pack("n", @protocol)
-            msg.put_bytes(@bitmap)
-          end
-
-          def self.decode_rdata(msg)
-            address = IPv4.new(msg.get_bytes(4))
-            protocol, = msg.get_unpack("n")
-            bitmap = msg.get_bytes
-            return self.new(address, protocol, bitmap)
-          end
-        end
-
-        class AAAA < Resource
-          ClassHash[[TypeValue = 28, ClassValue = ClassValue]] = self
-
-          def initialize(address)
-            @address = IPv6.create(address)
-          end
-          attr_reader :address
-
-          def encode_rdata(msg)
-            msg.put_bytes(@address.address)
-          end
-
-          def self.decode_rdata(msg)
-            return self.new(IPv6.new(msg.get_bytes(16)))
-          end
-        end
-
-        # SRV resource record defined in RFC 2782
-        # 
-        # These records identify the hostname and port that a service is
-        # available at.
-        # 
-        # The format is:
-        #   _Service._Proto.Name TTL Class SRV Priority Weight Port Target
-        #
-        # The fields specific to SRV are defined in RFC 2782 as meaning:
-        # - +priority+ The priority of this target host.  A client MUST attempt
-        #   to contact the target host with the lowest-numbered priority it can
-        #   reach; target hosts with the same priority SHOULD be tried in an
-        #   order defined by the weight field.  The range is 0-65535.  Note that
-        #   it is not widely implemented and should be set to zero.
-        # 
-        # - +weight+ A server selection mechanism.  The weight field specifies
-        #   a relative weight for entries with the same priority. Larger weights
-        #   SHOULD be given a proportionately higher probability of being
-        #   selected. The range of this number is 0-65535.  Domain administrators
-        #   SHOULD use Weight 0 when there isn't any server selection to do, to
-        #   make the RR easier to read for humans (less noisy). Note that it is
-        #   not widely implemented and should be set to zero.
-        #
-        # - +port+  The port on this target host of this service.  The range is 0-
-        #   65535.
-        # 
-        # - +target+ The domain name of the target host. A target of "." means
-        #   that the service is decidedly not available at this domain.
-        class SRV < Resource
-          ClassHash[[TypeValue = 33, ClassValue = ClassValue]] = self
-
-          # Create a SRV resource record.
-          def initialize(priority, weight, port, target)
-            @priority = priority.to_int
-            @weight = weight.to_int
-            @port = port.to_int
-            @target = Name.create(target)
-          end
-
-          attr_reader :priority, :weight, :port, :target
-
-          def encode_rdata(msg)
-            msg.put_pack("n", @priority)
-            msg.put_pack("n", @weight)
-            msg.put_pack("n", @port)
-            msg.put_name(@target)
-          end
-
-          def self.decode_rdata(msg)
-            priority, = msg.get_unpack("n")
-            weight,   = msg.get_unpack("n")
-            port,     = msg.get_unpack("n")
-            target    = msg.get_name
-            return self.new(priority, weight, port, target)
-          end
-        end
-
-      end
-    end
-  end
-
-  class IPv4
-    Regex = /\A(\d+)\.(\d+)\.(\d+)\.(\d+)\z/
-
-    def self.create(arg)
-      case arg
-      when IPv4
-        return arg
-      when Regex
-        if (0..255) === (a = $1.to_i) &&
-           (0..255) === (b = $2.to_i) &&
-           (0..255) === (c = $3.to_i) &&
-           (0..255) === (d = $4.to_i)
-          return self.new([a, b, c, d].pack("CCCC"))
-        else
-          raise ArgumentError.new("IPv4 address with invalid value: " + arg)
-        end
-      else
-        raise ArgumentError.new("cannot interpret as IPv4 address: #{arg.inspect}")
-      end
-    end
-
-    def initialize(address)
-      unless address.kind_of?(String) && address.length == 4
-        raise ArgumentError.new('IPv4 address must be 4 bytes')
-      end
-      @address = address
-    end
-    attr_reader :address
-
-    def to_s
-      return sprintf("%d.%d.%d.%d", *@address.unpack("CCCC"))
-    end
-
-    def inspect
-      return "#<#{self.class} #{self.to_s}>"
-    end
-
-    def to_name
-      return DNS::Name.create(
-        '%d.%d.%d.%d.in-addr.arpa.' % @address.unpack('CCCC').reverse)
-    end
-
-    def ==(other)
-      return @address == other.address
-    end
-
-    def eql?(other)
-      return self == other
-    end
-
-    def hash
-      return @address.hash
-    end
-  end
-
-  class IPv6
-    Regex_8Hex = /\A
-      (?:[0-9A-Fa-f]{1,4}:){7}
-         [0-9A-Fa-f]{1,4}
-      \z/x
-
-    Regex_CompressedHex = /\A
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)
-      \z/x
-
-    Regex_6Hex4Dec = /\A
-      ((?:[0-9A-Fa-f]{1,4}:){6,6})
-      (\d+)\.(\d+)\.(\d+)\.(\d+)
-      \z/x
-
-    Regex_CompressedHex4Dec = /\A
-      ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::
-      ((?:[0-9A-Fa-f]{1,4}:)*)
-      (\d+)\.(\d+)\.(\d+)\.(\d+)
-      \z/x
-
-    Regex = /
-      (?:#{Regex_8Hex}) |
-      (?:#{Regex_CompressedHex}) |
-      (?:#{Regex_6Hex4Dec}) |
-      (?:#{Regex_CompressedHex4Dec})/x
-
-    def self.create(arg)
-      case arg
-      when IPv6
-        return arg
-      when String
-        address = ''
-        if Regex_8Hex =~ arg
-          arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
-        elsif Regex_CompressedHex =~ arg
-          prefix = $1
-          suffix = $2
-          a1 = ''
-          a2 = ''
-          prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
-          suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
-          omitlen = 16 - a1.length - a2.length
-          address << a1 << "\0" * omitlen << a2
-        elsif Regex_6Hex4Dec =~ arg
-          prefix, a, b, c, d = $1, $2.to_i, $3.to_i, $4.to_i, $5.to_i
-          if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
-            prefix.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
-            address << [a, b, c, d].pack('CCCC')
-          else
-            raise ArgumentError.new("not numeric IPv6 address: " + arg)
-          end
-        elsif Regex_CompressedHex4Dec =~ arg
-          prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i
-          if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
-            a1 = ''
-            a2 = ''
-            prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
-            suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
-            omitlen = 12 - a1.length - a2.length
-            address << a1 << "\0" * omitlen << a2 << [a, b, c, d].pack('CCCC')
-          else
-            raise ArgumentError.new("not numeric IPv6 address: " + arg)
-          end
-        else
-          raise ArgumentError.new("not numeric IPv6 address: " + arg)
-        end
-        return IPv6.new(address)
-      else
-        raise ArgumentError.new("cannot interpret as IPv6 address: #{arg.inspect}")
-      end
-    end
-
-    def initialize(address)
-      unless address.kind_of?(String) && address.length == 16
-        raise ArgumentError.new('IPv6 address must be 16 bytes')
-      end
-      @address = address
-    end
-    attr_reader :address
-
-    def to_s
-      address = sprintf("%X:%X:%X:%X:%X:%X:%X:%X", *@address.unpack("nnnnnnnn"))
-      unless address.sub!(/(^|:)0(:0)+(:|$)/, '::')
-        address.sub!(/(^|:)0(:|$)/, '::')
-      end
-      return address
-    end
-
-    def inspect
-      return "#<#{self.class} #{self.to_s}>"
-    end
-
-    def to_name
-      # ip6.arpa should be searched too. [RFC3152]
-      return DNS::Name.new(
-        @address.unpack("H32")[0].split(//).reverse + ['ip6', 'int'])
-    end
-
-    def ==(other)
-      return @address == other.address
-    end
-
-    def eql?(other)
-      return self == other
-    end
-
-    def hash
-      return @address.hash
-    end
-  end
-
-  DefaultResolver = self.new
-  AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attlistdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attlistdecl.rb
deleted file mode 100644
index d4b5c38..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attlistdecl.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-#vim:ts=2 sw=2 noexpandtab:
-require 'rexml/child'
-require 'rexml/source'
-
-module REXML
-	# This class needs:
-	# * Documentation
-	# * Work!  Not all types of attlists are intelligently parsed, so we just
-	# spew back out what we get in.  This works, but it would be better if
-	# we formatted the output ourselves.
-	#
-	# AttlistDecls provide *just* enough support to allow namespace
-	# declarations.  If you need some sort of generalized support, or have an
-	# interesting idea about how to map the hideous, terrible design of DTD
-	# AttlistDecls onto an intuitive Ruby interface, let me know.  I'm desperate
-	# for anything to make DTDs more palateable.
-	class AttlistDecl < Child
-		include Enumerable
-
-		# What is this?  Got me.
-		attr_reader :element_name
-
-		# Create an AttlistDecl, pulling the information from a Source.  Notice
-		# that this isn't very convenient; to create an AttlistDecl, you basically
-		# have to format it yourself, and then have the initializer parse it.
-		# Sorry, but for the forseeable future, DTD support in REXML is pretty
-		# weak on convenience.  Have I mentioned how much I hate DTDs?
-		def initialize(source)
-			super()
-			if (source.kind_of? Array)
-				@element_name, @pairs, @contents = *source
-			end
-		end
-	
-		# Access the attlist attribute/value pairs.
-		#  value = attlist_decl[ attribute_name ]
-		def [](key)
-			@pairs[key]
-		end
-
-		# Whether an attlist declaration includes the given attribute definition
-		#  if attlist_decl.include? "xmlns:foobar"
-		def include?(key)
-			@pairs.keys.include? key
-		end
-
-		# Itterate over the key/value pairs:
-		#  attlist_decl.each { |attribute_name, attribute_value| ... }
-		def each(&block)
-			@pairs.each(&block)
-		end
-
-		# Write out exactly what we got in.
-		def write out, indent=-1
-			out << @contents
-		end
-
-		def node_type
-			:attlistdecl
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attribute.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attribute.rb
deleted file mode 100644
index 89c1ada..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/attribute.rb
+++ /dev/null
@@ -1,185 +0,0 @@
-require "rexml/namespace"
-require 'rexml/text'
-
-module REXML
-	# Defines an Element Attribute; IE, a attribute=value pair, as in:
-	# <element attribute="value"/>.  Attributes can be in their own
-	# namespaces.  General users of REXML will not interact with the
-	# Attribute class much.
-	class Attribute
-		include Node
-		include Namespace
-
-		# The element to which this attribute belongs
-		attr_reader :element
-		# The normalized value of this attribute.  That is, the attribute with
-		# entities intact.
-		attr_writer :normalized	
-		PATTERN = /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\2/um
-
-		# Constructor.
-    # FIXME: The parser doesn't catch illegal characters in attributes
-    #
-    # first:: 
-    #   Either: an Attribute, which this new attribute will become a
-    #   clone of; or a String, which is the name of this attribute
-    # second::
-    #   If +first+ is an Attribute, then this may be an Element, or nil.
-    #   If nil, then the Element parent of this attribute is the parent
-    #   of the +first+ Attribute.  If the first argument is a String, 
-    #   then this must also be a String, and is the content of the attribute.  
-    #   If this is the content, it must be fully normalized (contain no
-    #   illegal characters).
-    # parent::
-    #   Ignored unless +first+ is a String; otherwise, may be the Element 
-    #   parent of this attribute, or nil.
-    #
-		#
-		#  Attribute.new( attribute_to_clone )
-		#  Attribute.new( attribute_to_clone, parent_element )
-		#  Attribute.new( "attr", "attr_value" )
-		#  Attribute.new( "attr", "attr_value", parent_element )
-		def initialize( first, second=nil, parent=nil )
-			@normalized = @unnormalized = @element = nil
-			if first.kind_of? Attribute
-				self.name = first.expanded_name
-				@unnormalized = first.value
-				if second.kind_of? Element
-					@element = second
-				else
-					@element = first.element
-				end
-			elsif first.kind_of? String
-				@element = parent
-				self.name = first
-				@normalized = second.to_s
-			else
-				raise "illegal argument #{first.class.name} to Attribute constructor"
-			end
-		end
-
-		# Returns the namespace of the attribute.
-		# 
-		#  e = Element.new( "elns:myelement" )
-		#  e.add_attribute( "nsa:a", "aval" )
-		#  e.add_attribute( "b", "bval" )
-		#  e.attributes.get_attribute( "a" ).prefix   # -> "nsa"
-		#  e.attributes.get_attribute( "b" ).prefix   # -> "elns"
-		#  a = Attribute.new( "x", "y" )
-		#  a.prefix                                   # -> ""
-		def prefix
-			pf = super
-			if pf == ""
-				pf = @element.prefix if @element
-			end
-			pf
-		end
-
-		# Returns the namespace URL, if defined, or nil otherwise
-		# 
-		#  e = Element.new("el")
-		#  e.add_attributes({"xmlns:ns", "http://url"})
-		#  e.namespace( "ns" )              # -> "http://url"
-		def namespace arg=nil
-			arg = prefix if arg.nil?
-			@element.namespace arg
-		end
-
-		# Returns true if other is an Attribute and has the same name and value,
-		# false otherwise.
-		def ==( other )
-			other.kind_of?(Attribute) and other.name==name and other.value==value
-		end
-
-		# Creates (and returns) a hash from both the name and value
-		def hash
-			name.hash + value.hash
-		end
-
-		# Returns this attribute out as XML source, expanding the name
-		#
-		#  a = Attribute.new( "x", "y" )
-		#  a.to_string     # -> "x='y'"
-		#  b = Attribute.new( "ns:x", "y" )
-		#  b.to_string     # -> "ns:x='y'"
-		def to_string
-			if @element and @element.context and @element.context[:attribute_quote] == :quote
-				%Q^#@expanded_name="#{to_s().gsub(/"/, '"e;')}"^
-			else
-				"#@expanded_name='#{to_s().gsub(/'/, ''')}'"
-			end
-		end
-
-		# Returns the attribute value, with entities replaced
-		def to_s
-			return @normalized if @normalized
-
-			doctype = nil
-			if @element
-				doc = @element.document
-				doctype = doc.doctype if doc
-			end
-
-			@normalized = Text::normalize( @unnormalized, doctype )
-			@unnormalized = nil
-      @normalized
-		end
-
-		# Returns the UNNORMALIZED value of this attribute.  That is, entities
-		# have been expanded to their values
-		def value
-			return @unnormalized if @unnormalized
-			doctype = nil
-			if @element
-				doc = @element.document
-				doctype = doc.doctype if doc
-			end
-			@unnormalized = Text::unnormalize( @normalized, doctype )
-			@normalized = nil
-      @unnormalized
-		end
-
-		# Returns a copy of this attribute
-		def clone
-			Attribute.new self
-		end
-
-		# Sets the element of which this object is an attribute.  Normally, this
-		# is not directly called.
-		#
-		# Returns this attribute
-		def element=( element )
-			@element = element
-			self
-		end
-
-		# Removes this Attribute from the tree, and returns true if successfull
-		# 
-		# This method is usually not called directly.
-		def remove
-			@element.attributes.delete self.name unless @element.nil?
-		end
-
-		# Writes this attribute (EG, puts 'key="value"' to the output)
-		def write( output, indent=-1 )
-			output << to_string
-		end
-
-    def node_type
-      :attribute
-    end
-
-    def inspect
-      rv = ""
-      write( rv )
-      rv
-    end
-
-    def xpath
-      path = @element.xpath
-      path += "/@#{self.expanded_name}"
-      return path
-    end
-	end
-end
-#vim:ts=2 sw=2 noexpandtab:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/cdata.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/cdata.rb
deleted file mode 100644
index efcb711..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/cdata.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require "rexml/text"
-
-module REXML
-	class CData < Text
-		START = '<![CDATA['
-		STOP = ']]>'
-		ILLEGAL = /(\]\]>)/
-
-		#	Constructor.  CData is data between <![CDATA[ ... ]]>
-		#
-		# _Examples_
-		#  CData.new( source )
-		#  CData.new( "Here is some CDATA" )
-		#  CData.new( "Some unprocessed data", respect_whitespace_TF, parent_element )
-		def initialize( first, whitespace=true, parent=nil )
-			super( first, whitespace, parent, true, true, ILLEGAL )
-		end
-
-		# Make a copy of this object
-		# 
-		# _Examples_
-		#  c = CData.new( "Some text" )
-		#  d = c.clone
-		#  d.to_s        # -> "Some text"
-		def clone
-			CData.new self
-		end
-
-		# Returns the content of this CData object
-		#
-		# _Examples_
-		#  c = CData.new( "Some text" )
-		#  c.to_s        # -> "Some text"
-		def to_s
-			@string
-		end
-
-    def value
-      @string
-    end
-
-    # == DEPRECATED
-    # See the rexml/formatters package
-    #
-		# Generates XML output of this object
-		#
-		# output::
-		#   Where to write the string.  Defaults to $stdout
-		# indent::
-    #   The amount to indent this node by
-		# transitive::
-    #   Ignored
-		# ie_hack::
-    #   Ignored
-		#
-		# _Examples_
-		#  c = CData.new( " Some text " )
-		#  c.write( $stdout )     #->  <![CDATA[ Some text ]]>
-		def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
-      Kernel.warn( "#{self.class.name}.write is deprecated" )
-			indent( output, indent )
-			output << START
-			output << @string
-			output << STOP
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/child.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/child.rb
deleted file mode 100644
index 6d3c9df..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/child.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require "rexml/node"
-
-module REXML
-	##
-	# A Child object is something contained by a parent, and this class
-	# contains methods to support that.  Most user code will not use this
-	# class directly.
-	class Child
-		include Node
-		attr_reader :parent		# The Parent of this object
-
-		# Constructor.  Any inheritors of this class should call super to make
-		# sure this method is called.
-		# parent::
-		#   if supplied, the parent of this child will be set to the
-		#   supplied value, and self will be added to the parent
-		def initialize( parent = nil )
-			@parent = nil  
-			# Declare @parent, but don't define it.  The next line sets the 
-			# parent.
-			parent.add( self ) if parent
-		end
-
-		# Replaces this object with another object.  Basically, calls
-		# Parent.replace_child
-		#
-		# Returns:: self
-		def replace_with( child )
-			@parent.replace_child( self, child )
-			self
-		end
-
-		# Removes this child from the parent.
-		#
-		# Returns:: self
-		def remove
-			unless @parent.nil?
-				@parent.delete self
-			end
-			self
-		end
-
-		# Sets the parent of this child to the supplied argument.
-		#
-		# other::
-		#   Must be a Parent object.  If this object is the same object as the
-		#   existing parent of this child, no action is taken. Otherwise, this
-		#   child is removed from the current parent (if one exists), and is added
-		#   to the new parent.
-		# Returns:: The parent added
-		def parent=( other )
-			return @parent if @parent == other
-			@parent.delete self if defined? @parent and @parent
-			@parent = other
-		end
-
-		alias :next_sibling :next_sibling_node
-		alias :previous_sibling :previous_sibling_node
-
-		# Sets the next sibling of this child.  This can be used to insert a child
-		# after some other child.
-		#  a = Element.new("a")
-		#  b = a.add_element("b")
-		#  c = Element.new("c")
-		#  b.next_sibling = c
-		#  # => <a><b/><c/></a>
-		def next_sibling=( other )
-		  parent.insert_after self, other
-		end
-
-		# Sets the previous sibling of this child.  This can be used to insert a 
-		# child before some other child.
-		#  a = Element.new("a")
-		#  b = a.add_element("b")
-		#  c = Element.new("c")
-		#  b.previous_sibling = c
-		#  # => <a><b/><c/></a>
-		def previous_sibling=(other)
-		  parent.insert_before self, other
-		end
-
-		# Returns:: the document this child belongs to, or nil if this child
-		# belongs to no document
-		def document
-			return parent.document unless parent.nil?
-			nil
-		end
-
-		# This doesn't yet handle encodings
-		def bytes
-			encoding = document.encoding
-
-			to_s
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/comment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/comment.rb
deleted file mode 100644
index 2b9b4b8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/comment.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require "rexml/child"
-
-module REXML
-	##
-	# Represents an XML comment; that is, text between \<!-- ... -->
-	class Comment < Child
-		include Comparable
-		START = "<!--"
-		STOP = "-->"
-
-		# The content text
-
-		attr_accessor :string
-
-		##
-		# Constructor.  The first argument can be one of three types:
-		# @param first If String, the contents of this comment are set to the 
-		# argument.  If Comment, the argument is duplicated.  If
-		# Source, the argument is scanned for a comment.
-		# @param second If the first argument is a Source, this argument 
-		# should be nil, not supplied, or a Parent to be set as the parent 
-		# of this object
-		def initialize( first, second = nil )
-			#puts "IN COMMENT CONSTRUCTOR; SECOND IS #{second.type}"
-			super(second)
-			if first.kind_of? String
-				@string = first
-			elsif first.kind_of? Comment
-				@string = first.string
-			end
-		end
-
-		def clone
-			Comment.new self
-		end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-		# output::
-		#	 Where to write the string
-		# indent::
-		#	 An integer.	If -1, no indenting will be used; otherwise, the
-		#	 indentation will be this number of spaces, and children will be
-		#	 indented an additional amount.
-		# transitive::
-		#	 Ignored by this class.	The contents of comments are never modified.
-		# ie_hack::
-		#	 Needed for conformity to the child API, but not used by this class.
-		def write( output, indent=-1, transitive=false, ie_hack=false )
-      Kernel.warn("Comment.write is deprecated.  See REXML::Formatters")
-			indent( output, indent )
-			output << START
-			output << @string
-			output << STOP
-		end
-
-		alias :to_s :string
-
-		##
-		# Compares this Comment to another; the contents of the comment are used
-		# in the comparison.
-		def <=>(other)
-			other.to_s <=> @string
-		end
-
-		##
-		# Compares this Comment to another; the contents of the comment are used
-		# in the comparison.
-		def ==( other )
-			other.kind_of? Comment and
-			(other <=> self) == 0
-		end
-
-    def node_type
-      :comment
-    end
-	end
-end
-#vim:ts=2 sw=2 noexpandtab:
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/doctype.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/doctype.rb
deleted file mode 100644
index 05cd4ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/doctype.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-require "rexml/parent"
-require "rexml/parseexception"
-require "rexml/namespace"
-require 'rexml/entity'
-require 'rexml/attlistdecl'
-require 'rexml/xmltokens'
-
-module REXML
-  # Represents an XML DOCTYPE declaration; that is, the contents of <!DOCTYPE
-  # ... >.  DOCTYPES can be used to declare the DTD of a document, as well as
-  # being used to declare entities used in the document.
-  class DocType < Parent
-    include XMLTokens
-    START = "<!DOCTYPE"
-    STOP = ">"
-    SYSTEM = "SYSTEM"
-    PUBLIC = "PUBLIC"
-    DEFAULT_ENTITIES = { 
-      'gt'=>EntityConst::GT, 
-      'lt'=>EntityConst::LT, 
-      'quot'=>EntityConst::QUOT, 
-      "apos"=>EntityConst::APOS 
-    }
-
-    # name is the name of the doctype
-    # external_id is the referenced DTD, if given
-    attr_reader :name, :external_id, :entities, :namespaces
-
-    # Constructor
-    #
-    #   dt = DocType.new( 'foo', '-//I/Hate/External/IDs' )
-    #   # <!DOCTYPE foo '-//I/Hate/External/IDs'>
-    #   dt = DocType.new( doctype_to_clone )
-    #   # Incomplete.  Shallow clone of doctype
-    #
-    # +Note+ that the constructor: 
-    #
-    #  Doctype.new( Source.new( "<!DOCTYPE foo 'bar'>" ) )
-    #
-    # is _deprecated_.  Do not use it.  It will probably disappear.
-    def initialize( first, parent=nil )
-      @entities = DEFAULT_ENTITIES
-      @long_name = @uri = nil
-      if first.kind_of? String
-        super()
-        @name = first
-        @external_id = parent
-      elsif first.kind_of? DocType
-        super( parent )
-        @name = first.name
-        @external_id = first.external_id
-      elsif first.kind_of? Array
-        super( parent )
-        @name = first[0]
-        @external_id = first[1]
-        @long_name = first[2]
-        @uri = first[3]
-      elsif first.kind_of? Source
-        super( parent )
-        parser = Parsers::BaseParser.new( first )
-        event = parser.pull
-        if event[0] == :start_doctype
-          @name, @external_id, @long_name, @uri, = event[1..-1]
-        end
-      else
-        super()
-      end
-    end
-
-    def node_type
-      :doctype
-    end
-
-    def attributes_of element
-      rv = []
-      each do |child|
-        child.each do |key,val|
-          rv << Attribute.new(key,val)
-        end if child.kind_of? AttlistDecl and child.element_name == element
-      end
-      rv
-    end
-
-    def attribute_of element, attribute
-      att_decl = find do |child|
-        child.kind_of? AttlistDecl and
-        child.element_name == element and
-        child.include? attribute
-      end
-      return nil unless att_decl
-      att_decl[attribute]
-    end
-
-    def clone
-      DocType.new self
-    end
-
-    # output::
-    #   Where to write the string
-    # indent::
-    #   An integer.  If -1, no indentation will be used; otherwise, the
-    #   indentation will be this number of spaces, and children will be
-    #   indented an additional amount.
-    # transitive::
-    #   Ignored
-    # ie_hack::
-    #   Ignored
-    def write( output, indent=0, transitive=false, ie_hack=false )
-      f = REXML::Formatters::Default.new
-      indent( output, indent )
-      output << START
-      output << ' '
-      output << @name
-      output << " #@external_id" if @external_id
-      output << " #{@long_name.inspect}" if @long_name
-      output << " #{@uri.inspect}" if @uri
-      unless @children.empty?
-        next_indent = indent + 1
-        output << ' ['
-        child = nil    # speed
-        @children.each { |child|
-          output << "\n"
-          f.write( child, output )
-        }
-        output << "\n]"
-      end
-      output << STOP
-    end
-
-    def context
-      @parent.context
-    end
-
-    def entity( name )
-      @entities[name].unnormalized if @entities[name]
-    end
-
-    def add child
-      super(child)
-      @entities = DEFAULT_ENTITIES.clone if @entities == DEFAULT_ENTITIES
-      @entities[ child.name ] = child if child.kind_of? Entity
-    end
-    
-    # This method retrieves the public identifier identifying the document's 
-    # DTD.
-    #
-    # Method contributed by Henrik Martensson
-    def public
-      case @external_id
-      when "SYSTEM"
-        nil
-      when "PUBLIC"
-        strip_quotes(@long_name)
-      end
-    end
-    
-    # This method retrieves the system identifier identifying the document's DTD
-    #
-    # Method contributed by Henrik Martensson
-    def system
-      case @external_id
-      when "SYSTEM"
-        strip_quotes(@long_name)
-      when "PUBLIC"
-        @uri.kind_of?(String) ? strip_quotes(@uri) : nil
-      end
-    end
-    
-    # This method returns a list of notations that have been declared in the
-    # _internal_ DTD subset. Notations in the external DTD subset are not 
-    # listed.
-    #
-    # Method contributed by Henrik Martensson
-    def notations
-      children().select {|node| node.kind_of?(REXML::NotationDecl)}
-    end
-    
-    # Retrieves a named notation. Only notations declared in the internal
-    # DTD subset can be retrieved.
-    #
-    # Method contributed by Henrik Martensson
-    def notation(name)
-      notations.find { |notation_decl|
-        notation_decl.name == name
-      }
-    end
-    
-    private
-    
-    # Method contributed by Henrik Martensson
-    def strip_quotes(quoted_string)
-      quoted_string =~ /^[\'\"].*[\´\"]$/ ?
-        quoted_string[1, quoted_string.length-2] :
-        quoted_string
-    end
-  end
-
-  # We don't really handle any of these since we're not a validating
-  # parser, so we can be pretty dumb about them.  All we need to be able
-  # to do is spew them back out on a write()
-
-  # This is an abstract class.  You never use this directly; it serves as a
-  # parent class for the specific declarations.
-  class Declaration < Child
-    def initialize src
-      super()
-      @string = src
-    end
-
-    def to_s
-      @string+'>'
-    end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    def write( output, indent )
-      output << to_s
-    end
-  end
-  
-  public
-  class ElementDecl < Declaration
-    def initialize( src )
-      super
-    end
-  end
-
-  class ExternalEntity < Child
-    def initialize( src )
-      super()
-      @entity = src
-    end
-    def to_s
-      @entity
-    end
-    def write( output, indent )
-      output << @entity
-    end
-  end
-
-  class NotationDecl < Child
-    attr_accessor :public, :system
-    def initialize name, middle, pub, sys
-      super(nil)
-      @name = name
-      @middle = middle
-      @public = pub
-      @system = sys
-    end
-
-    def to_s
-      "<!NOTATION #@name #@middle#{
-        @public ? ' ' + public.inspect : '' 
-      }#{
-        @system ? ' ' + at system.inspect : ''
-      }>"
-    end
-
-    def write( output, indent=-1 )
-      output << to_s
-    end
-    
-    # This method retrieves the name of the notation.
-    #
-    # Method contributed by Henrik Martensson
-    def name
-      @name
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/document.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/document.rb
deleted file mode 100644
index 81e63c6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/document.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-require "rexml/element"
-require "rexml/xmldecl"
-require "rexml/source"
-require "rexml/comment"
-require "rexml/doctype"
-require "rexml/instruction"
-require "rexml/rexml"
-require "rexml/parseexception"
-require "rexml/output"
-require "rexml/parsers/baseparser"
-require "rexml/parsers/streamparser"
-require "rexml/parsers/treeparser"
-
-module REXML
-  # Represents a full XML document, including PIs, a doctype, etc.  A
-  # Document has a single child that can be accessed by root().
-  # Note that if you want to have an XML declaration written for a document
-  # you create, you must add one; REXML documents do not write a default
-	# declaration for you.  See |DECLARATION| and |write|.
-	class Document < Element
-		# A convenient default XML declaration.  If you want an XML declaration,
-		# the easiest way to add one is mydoc << Document::DECLARATION
-    # +DEPRECATED+
-    # Use: mydoc << XMLDecl.default
-		DECLARATION = XMLDecl.default
-
-		# Constructor
-		# @param source if supplied, must be a Document, String, or IO. 
-		# Documents have their context and Element attributes cloned.
-	  # Strings are expected to be valid XML documents.  IOs are expected
-	  # to be sources of valid XML documents.
-	  # @param context if supplied, contains the context of the document;
-	  # this should be a Hash.
-		def initialize( source = nil, context = {} )
-			super()
-			@context = context
-			return if source.nil?
-			if source.kind_of? Document
-				@context = source.context
-				super source
-			else
-				build(  source )
-			end
-		end
-
-    def node_type
-      :document
-    end
-
-		# Should be obvious
-		def clone
-			Document.new self
-		end
-
-		# According to the XML spec, a root node has no expanded name
-		def expanded_name
-			''
-			#d = doc_type
-			#d ? d.name : "UNDEFINED"
-		end
-
-		alias :name :expanded_name
-
-		# We override this, because XMLDecls and DocTypes must go at the start
-		# of the document
-		def add( child )
-			if child.kind_of? XMLDecl
-				@children.unshift child
-        child.parent = self
-			elsif child.kind_of? DocType
-        # Find first Element or DocType node and insert the decl right 
-        # before it.  If there is no such node, just insert the child at the
-        # end.  If there is a child and it is an DocType, then replace it.
-        insert_before_index = 0
-        @children.find { |x| 
-          insert_before_index += 1
-          x.kind_of?(Element) || x.kind_of?(DocType)
-        }
-        if @children[ insert_before_index ] # Not null = not end of list
-          if @children[ insert_before_index ].kind_of DocType
-            @children[ insert_before_index ] = child
-          else
-            @children[ index_before_index-1, 0 ] = child
-          end
-        else  # Insert at end of list
-          @children[insert_before_index] = child
-        end
-				child.parent = self
-			else
-				rv = super
-				raise "attempted adding second root element to document" if @elements.size > 1
-				rv
-			end
-		end
-		alias :<< :add
-
-		def add_element(arg=nil, arg2=nil)
-			rv = super
-			raise "attempted adding second root element to document" if @elements.size > 1
-			rv
-		end
-
-		# @return the root Element of the document, or nil if this document
-		# has no children.
-		def root
-      elements[1]
-      #self
-      #@children.find { |item| item.kind_of? Element }
-		end
-
-		# @return the DocType child of the document, if one exists,
-		# and nil otherwise.
-		def doctype
-			@children.find { |item| item.kind_of? DocType }
-		end
-
-		# @return the XMLDecl of this document; if no XMLDecl has been
-		# set, the default declaration is returned.
-		def xml_decl
-			rv = @children[0]
-      return rv if rv.kind_of? XMLDecl
-      rv = @children.unshift(XMLDecl.default)[0]
-		end
-
-		# @return the XMLDecl version of this document as a String.
-		# If no XMLDecl has been set, returns the default version.
-		def version
-			xml_decl().version
-		end
-
-		# @return the XMLDecl encoding of this document as a String.
-		# If no XMLDecl has been set, returns the default encoding.
-		def encoding
-			xml_decl().encoding
-		end
-
-		# @return the XMLDecl standalone value of this document as a String.
-		# If no XMLDecl has been set, returns the default setting.
-		def stand_alone?
-			xml_decl().stand_alone?
-		end
-
-    # Write the XML tree out, optionally with indent.  This writes out the
-    # entire XML document, including XML declarations, doctype declarations,
-    # and processing instructions (if any are given).
-    #
-    # A controversial point is whether Document should always write the XML
-    # declaration (<?xml version='1.0'?>) whether or not one is given by the
-    # user (or source document).  REXML does not write one if one was not
-    # specified, because it adds unneccessary bandwidth to applications such
-    # as XML-RPC.
-    #
-    # See also the classes in the rexml/formatters package for the proper way
-    # to change the default formatting of XML output
-    #
-    # _Examples_
-    #   Document.new("<a><b/></a>").serialize
-    #
-    #   output_string = ""
-    #   tr = Transitive.new( output_string )
-    #   Document.new("<a><b/></a>").serialize( tr )
-    #
-    # output::
-    #	  output an object which supports '<< string'; this is where the
-    #   document will be written.
-    # indent::
-    #   An integer.  If -1, no indenting will be used; otherwise, the
-    #   indentation will be twice this number of spaces, and children will be
-    #   indented an additional amount.  For a value of 3, every item will be 
-    #   indented 3 more levels, or 6 more spaces (2 * 3). Defaults to -1
-    # trans::
-    #   If transitive is true and indent is >= 0, then the output will be
-    #   pretty-printed in such a way that the added whitespace does not affect
-    #   the absolute *value* of the document -- that is, it leaves the value
-    #   and number of Text nodes in the document unchanged.
-    # ie_hack::
-    #   Internet Explorer is the worst piece of crap to have ever been
-    #   written, with the possible exception of Windows itself.  Since IE is
-    #   unable to parse proper XML, we have to provide a hack to generate XML
-    #   that IE's limited abilities can handle.  This hack inserts a space 
-    #   before the /> on empty tags.  Defaults to false
-		def write( output=$stdout, indent=-1, trans=false, ie_hack=false )
-      if xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
-        output = Output.new( output, xml_decl.encoding )
-      end
-      formatter = if indent > -1
-          if trans
-            REXML::Formatters::Transitive.new( indent, ie_hack )
-          else
-            REXML::Formatters::Pretty.new( indent, ie_hack )
-          end
-        else
-          REXML::Formatters::Default.new( ie_hack )
-        end
-      formatter.write( self, output )
-		end
-
-		
-		def Document::parse_stream( source, listener )
-			Parsers::StreamParser.new( source, listener ).parse
-		end
-
-		private
-		def build( source )
-      Parsers::TreeParser.new( source, self ).parse
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/attlistdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/attlistdecl.rb
deleted file mode 100644
index e176bb0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/attlistdecl.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class AttlistDecl < Child
-			START = "<!ATTLIST"
-			START_RE = /^\s*#{START}/um
-			PATTERN_RE = /\s*(#{START}.*?>)/um
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/dtd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/dtd.rb
deleted file mode 100644
index 4f735d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/dtd.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require "rexml/dtd/elementdecl"
-require "rexml/dtd/entitydecl"
-require "rexml/comment"
-require "rexml/dtd/notationdecl"
-require "rexml/dtd/attlistdecl"
-require "rexml/parent"
-
-module REXML
-	module DTD
-		class Parser
-			def Parser.parse( input )
-				case input
-				when String
-					parse_helper input
-				when File
-					parse_helper input.read
-				end
-			end
-
-			# Takes a String and parses it out
-			def Parser.parse_helper( input )
-				contents = Parent.new
-				while input.size > 0
-					case input
-					when ElementDecl.PATTERN_RE
-						match = $&
-						source = $'
-						contents << ElementDecl.new( match )
-					when AttlistDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << AttlistDecl.new( matchdata )
-					when EntityDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << EntityDecl.new( matchdata )
-					when Comment.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << Comment.new( matchdata )
-					when NotationDecl.PATTERN_RE
-						matchdata = $~
-						source = $'
-						contents << NotationDecl.new( matchdata )
-					end
-				end
-				contents
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/elementdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/elementdecl.rb
deleted file mode 100644
index c4e620f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/elementdecl.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class ElementDecl < Child
-			START = "<!ELEMENT"
-			START_RE = /^\s*#{START}/um
-			PATTERN_RE = /^\s*(#{START}.*?)>/um
-			PATTERN_RE = /^\s*#{START}\s+((?:[:\w_][-\.\w_]*:)?[-!\*\.\w_]*)(.*?)>/
-			#\s*((((["']).*?\5)|[^\/'">]*)*?)(\/)?>/um, true)
-
-			def initialize match
-				@name = match[1]
-				@rest = match[2]
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/entitydecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/entitydecl.rb
deleted file mode 100644
index a5f1520..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/entitydecl.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class EntityDecl < Child
-			START = "<!ENTITY"
-			START_RE = /^\s*#{START}/um
-			PUBLIC = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+PUBLIC\s+((["']).*?\3)\s+((["']).*?\5)\s*>/um
-			SYSTEM = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+SYSTEM\s+((["']).*?\3)(?:\s+NDATA\s+\w+)?\s*>/um
-			PLAIN = /^\s*#{START}\s+(\w+)\s+((["']).*?\3)\s*>/um
-			PERCENT = /^\s*#{START}\s+%\s+(\w+)\s+((["']).*?\3)\s*>/um
-			# <!ENTITY name SYSTEM "...">
-			# <!ENTITY name "...">
-			def initialize src
-				super()
-				md = nil
-				if src.match( PUBLIC )
-					md = src.match( PUBLIC, true )
-					@middle = "PUBLIC"
-					@content = "#{md[2]} #{md[4]}"
-				elsif src.match( SYSTEM )
-					md = src.match( SYSTEM, true )
-					@middle = "SYSTEM"
-					@content = md[2]
-				elsif src.match( PLAIN )
-					md = src.match( PLAIN, true )
-					@middle = ""
-					@content = md[2]
-				elsif src.match( PERCENT )
-					md = src.match( PERCENT, true )
-					@middle = ""
-					@content = md[2]
-				end
-				raise ParseException.new("failed Entity match", src) if md.nil?
-				@name = md[1]
-			end
-
-			def to_s
-				rv = "<!ENTITY #@name "
-				rv << "#@middle " if @middle.size > 0
-				rv << @content
-				rv
-			end
-
-			def write( output, indent )
-        indent( output, indent )
-				output << to_s
-			end
-
-			def EntityDecl.parse_source source, listener
-				md = source.match( PATTERN_RE, true )
-				thing = md[0].squeeze(" \t\n\r")
-				listener.send inspect.downcase, thing 
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/notationdecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/notationdecl.rb
deleted file mode 100644
index a47ff8f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/dtd/notationdecl.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require "rexml/child"
-module REXML
-	module DTD
-		class NotationDecl < Child
-			START = "<!NOTATION"
-			START_RE = /^\s*#{START}/um
-			PUBLIC = /^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
-			SYSTEM = /^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um
-			def initialize src
-				super()
-				if src.match( PUBLIC )
-					md = src.match( PUBLIC, true )
-				elsif src.match( SYSTEM )
-					md = src.match( SYSTEM, true )
-				else
-					raise ParseException.new( "error parsing notation: no matching pattern", src )
-				end
-				@name = md[1]
-				@middle = md[2]
-				@rest = md[3]
-			end
-
-			def to_s
-				"<!NOTATION #@name #@middle #@rest>"
-			end
-
-			def write( output, indent )
-        indent( output, indent )
-				output << to_s
-			end
-
-			def NotationDecl.parse_source source, listener
-				md = source.match( PATTERN_RE, true )
-				thing = md[0].squeeze(" \t\n\r")
-				listener.send inspect.downcase, thing 
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/element.rb
deleted file mode 100644
index 9261203..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/element.rb
+++ /dev/null
@@ -1,1227 +0,0 @@
-require "rexml/parent"
-require "rexml/namespace"
-require "rexml/attribute"
-require "rexml/cdata"
-require "rexml/xpath"
-require "rexml/parseexception"
-
-module REXML
-  # An implementation note about namespaces:
-  # As we parse, when we find namespaces we put them in a hash and assign
-  # them a unique ID.  We then convert the namespace prefix for the node
-  # to the unique ID.  This makes namespace lookup much faster for the
-  # cost of extra memory use.  We save the namespace prefix for the
-  # context node and convert it back when we write it.
-  @@namespaces = {}
-
-  # Represents a tagged XML element.  Elements are characterized by
-  # having children, attributes, and names, and can themselves be
-  # children.
-  class Element < Parent
-    include Namespace
-
-    UNDEFINED = "UNDEFINED";		# The default name
-
-    # Mechanisms for accessing attributes and child elements of this
-    # element.
-    attr_reader :attributes, :elements
-    # The context holds information about the processing environment, such as
-    # whitespace handling.
-    attr_accessor :context
-
-    # Constructor
-    # arg:: 
-    # 	if not supplied, will be set to the default value.
-    # 	If a String, the name of this object will be set to the argument.
-    # 	If an Element, the object will be shallowly cloned; name, 
-    # 	attributes, and namespaces will be copied.  Children will +not+ be
-    # 	copied.
-    # parent:: 
-    # 	if supplied, must be a Parent, and will be used as
-    # 	the parent of this object.
-    # context::
-    # 	If supplied, must be a hash containing context items.  Context items
-    # 	include:
-    # * <tt>:respect_whitespace</tt> the value of this is :+all+ or an array of
-    #   strings being the names of the elements to respect
-    #   whitespace for.  Defaults to :+all+.
-    # * <tt>:compress_whitespace</tt> the value can be :+all+ or an array of
-    #   strings being the names of the elements to ignore whitespace on.
-    #   Overrides :+respect_whitespace+.
-    # * <tt>:ignore_whitespace_nodes</tt> the value can be :+all+ or an array
-    #   of strings being the names of the elements in which to ignore
-    #   whitespace-only nodes.  If this is set, Text nodes which contain only
-    #   whitespace will not be added to the document tree.
-    # * <tt>:raw</tt> can be :+all+, or an array of strings being the names of
-    #   the elements to process in raw mode.  In raw mode, special
-    #   characters in text is not converted to or from entities.
-    def initialize( arg = UNDEFINED, parent=nil, context=nil )
-      super(parent)
-
-      @elements = Elements.new(self)
-      @attributes = Attributes.new(self)
-      @context = context
-
-      if arg.kind_of? String
-        self.name = arg
-      elsif arg.kind_of? Element
-        self.name = arg.expanded_name
-        arg.attributes.each_attribute{ |attribute|
-          @attributes << Attribute.new( attribute )
-        }
-        @context = arg.context
-      end
-    end
-
-    def inspect
-      rv = "<#@expanded_name"
-
-      @attributes.each_attribute do |attr|
-        rv << " "
-        attr.write( rv, 0 )
-      end
-
-      if children.size > 0
-        rv << "> ... </>"
-      else
-        rv << "/>"
-      end
-    end
-
-
-    # Creates a shallow copy of self.
-    #   d = Document.new "<a><b/><b/><c><d/></c></a>"
-    #   new_a = d.root.clone
-    #   puts new_a  # => "<a/>"
-    def clone
-      self.class.new self
-    end
-
-    # Evaluates to the root node of the document that this element 
-    # belongs to. If this element doesn't belong to a document, but does
-    # belong to another Element, the parent's root will be returned, until the
-    # earliest ancestor is found.
-    #
-    # Note that this is not the same as the document element.
-    # In the following example, <a> is the document element, and the root
-    # node is the parent node of the document element.  You may ask yourself
-    # why the root node is useful: consider the doctype and XML declaration,
-    # and any processing instructions before the document element... they
-    # are children of the root node, or siblings of the document element.
-    # The only time this isn't true is when an Element is created that is
-    # not part of any Document.  In this case, the ancestor that has no
-    # parent acts as the root node.
-    #  d = Document.new '<a><b><c/></b></a>'
-    #  a = d[1] ; c = a[1][1]
-    #  d.root_node == d   # TRUE
-    #  a.root_node        # namely, d
-    #  c.root_node        # again, d
-    def root_node
-      parent.nil? ? self : parent.root_node
-    end
-
-    def root
-      return elements[1] if self.kind_of? Document
-      return self if parent.kind_of? Document or parent.nil?
-      return parent.root
-    end
-
-    # Evaluates to the document to which this element belongs, or nil if this
-    # element doesn't belong to a document.
-    def document
-      rt = root
-      rt.parent if rt
-    end
-
-    # Evaluates to +true+ if whitespace is respected for this element.  This
-    # is the case if:
-    # 1. Neither :+respect_whitespace+ nor :+compress_whitespace+ has any value
-    # 2. The context has :+respect_whitespace+ set to :+all+ or
-    #    an array containing the name of this element, and 
-    #    :+compress_whitespace+ isn't set to :+all+ or an array containing the 
-    #    name of this element.
-    # The evaluation is tested against +expanded_name+, and so is namespace
-    # sensitive.
-    def whitespace
-      @whitespace = nil
-      if @context
-        if @context[:respect_whitespace]
-          @whitespace = (@context[:respect_whitespace] == :all or
-                         @context[:respect_whitespace].include? expanded_name)
-        end
-        @whitespace = false if (@context[:compress_whitespace] and
-                                (@context[:compress_whitespace] == :all or
-                                 @context[:compress_whitespace].include? expanded_name)
-                               )
-      end
-      @whitespace = true unless @whitespace == false
-      @whitespace
-    end
-
-    def ignore_whitespace_nodes
-      @ignore_whitespace_nodes = false
-      if @context
-        if @context[:ignore_whitespace_nodes]
-          @ignore_whitespace_nodes = 
-            (@context[:ignore_whitespace_nodes] == :all or
-             @context[:ignore_whitespace_nodes].include? expanded_name)
-        end
-      end
-    end
-
-    # Evaluates to +true+ if raw mode is set for this element.  This
-    # is the case if the context has :+raw+ set to :+all+ or
-    # an array containing the name of this element.
-    #
-    # The evaluation is tested against +expanded_name+, and so is namespace
-    # sensitive.
-    def raw
-      @raw = (@context and @context[:raw] and
-              (@context[:raw] == :all or
-               @context[:raw].include? expanded_name))
-               @raw
-    end
-
-    #once :whitespace, :raw, :ignore_whitespace_nodes
-
-    #################################################
-    # Namespaces                                    #
-    #################################################
-
-    # Evaluates to an +Array+ containing the prefixes (names) of all defined
-    # namespaces at this context node.
-    #  doc = Document.new("<a xmlns:x='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
-    #  doc.elements['//b'].prefixes # -> ['x', 'y']
-    def prefixes
-      prefixes = []
-      prefixes = parent.prefixes if parent
-      prefixes |= attributes.prefixes
-      return prefixes
-    end
-
-    def namespaces
-      namespaces = {}
-      namespaces = parent.namespaces if parent
-      namespaces = namespaces.merge( attributes.namespaces )
-      return namespaces
-    end
-
-    # Evalutas to the URI for a prefix, or the empty string if no such 
-    # namespace is declared for this element. Evaluates recursively for
-    # ancestors.  Returns the default namespace, if there is one.
-    # prefix:: 
-    #   the prefix to search for.  If not supplied, returns the default
-    #   namespace if one exists
-    # Returns:: 
-    #   the namespace URI as a String, or nil if no such namespace
-    #   exists.  If the namespace is undefined, returns an empty string
-    #  doc = Document.new("<a xmlns='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
-    #  b = doc.elements['//b']
-    #  b.namespace           # -> '1'
-    #  b.namespace("y")      # -> '2'
-    def namespace(prefix=nil)
-      if prefix.nil?
-        prefix = prefix()
-      end
-      if prefix == ''
-        prefix = "xmlns"
-      else
-        prefix = "xmlns:#{prefix}" unless prefix[0,5] == 'xmlns'
-      end
-      ns = attributes[ prefix ]
-      ns = parent.namespace(prefix) if ns.nil? and parent
-      ns = '' if ns.nil? and prefix == 'xmlns'
-      return ns
-    end
-
-    # Adds a namespace to this element.
-    # prefix:: 
-    #   the prefix string, or the namespace URI if +uri+ is not
-    #   supplied
-    # uri::    
-    #   the namespace URI.  May be nil, in which +prefix+ is used as
-    #   the URI
-    # Evaluates to: this Element
-    #  a = Element.new("a")
-    #  a.add_namespace("xmlns:foo", "bar" )
-    #  a.add_namespace("foo", "bar")  # shorthand for previous line
-    #  a.add_namespace("twiddle")
-    #  puts a   #-> <a xmlns:foo='bar' xmlns='twiddle'/>
-    def add_namespace( prefix, uri=nil )
-      unless uri
-        @attributes["xmlns"] = prefix
-      else
-        prefix = "xmlns:#{prefix}" unless prefix =~ /^xmlns:/
-        @attributes[ prefix ] = uri
-      end
-      self
-    end
-
-    # Removes a namespace from this node.  This only works if the namespace is
-    # actually declared in this node.  If no argument is passed, deletes the
-    # default namespace.
-    #
-    # Evaluates to: this element
-    #  doc = Document.new "<a xmlns:foo='bar' xmlns='twiddle'/>"
-    #  doc.root.delete_namespace
-    #  puts doc     # -> <a xmlns:foo='bar'/>
-    #  doc.root.delete_namespace 'foo'
-    #  puts doc     # -> <a/>
-    def delete_namespace namespace="xmlns"
-      namespace = "xmlns:#{namespace}" unless namespace == 'xmlns'
-      attribute = attributes.get_attribute(namespace)
-      attribute.remove unless attribute.nil?
-      self
-    end
-
-    #################################################
-    # Elements                                      #
-    #################################################
-
-    # Adds a child to this element, optionally setting attributes in
-    # the element.
-    # element:: 
-    #   optional.  If Element, the element is added.
-    #   Otherwise, a new Element is constructed with the argument (see
-    #   Element.initialize).
-    # attrs:: 
-    #   If supplied, must be a Hash containing String name,value 
-    #   pairs, which will be used to set the attributes of the new Element.
-    # Returns:: the Element that was added
-    #  el = doc.add_element 'my-tag'
-    #  el = doc.add_element 'my-tag', {'attr1'=>'val1', 'attr2'=>'val2'}
-    #  el = Element.new 'my-tag'
-    #  doc.add_element el
-    def add_element element, attrs=nil
-      raise "First argument must be either an element name, or an Element object" if element.nil?
-      el = @elements.add(element)
-      attrs.each do |key, value|
-        el.attributes[key]=Attribute.new(key,value,self)
-      end	if attrs.kind_of? Hash
-      el
-    end
-
-    # Deletes a child element.
-    # element:: 
-    #   Must be an +Element+, +String+, or +Integer+.  If Element, 
-    #   the element is removed.  If String, the element is found (via XPath) 
-    #   and removed.  <em>This means that any parent can remove any
-    #   descendant.<em>  If Integer, the Element indexed by that number will be
-    #   removed.
-    # Returns:: the element that was removed.
-    #  doc.delete_element "/a/b/c[@id='4']"
-    #  doc.delete_element doc.elements["//k"]
-    #  doc.delete_element 1
-    def delete_element element
-      @elements.delete element
-    end
-
-    # Evaluates to +true+ if this element has at least one child Element
-    #  doc = Document.new "<a><b/><c>Text</c></a>"
-    #  doc.root.has_elements               # -> true
-    #  doc.elements["/a/b"].has_elements   # -> false
-    #  doc.elements["/a/c"].has_elements   # -> false
-    def has_elements?
-      !@elements.empty?
-    end
-
-    # Iterates through the child elements, yielding for each Element that
-    # has a particular attribute set.
-    # key:: 
-    #   the name of the attribute to search for
-    # value:: 
-    #   the value of the attribute
-    # max:: 
-    #   (optional) causes this method to return after yielding 
-    #   for this number of matching children
-    # name:: 
-    #   (optional) if supplied, this is an XPath that filters
-    #   the children to check.
-    #
-    #  doc = Document.new "<a><b @id='1'/><c @id='2'/><d @id='1'/><e/></a>"
-    #  # Yields b, c, d
-    #  doc.root.each_element_with_attribute( 'id' ) {|e| p e}
-    #  # Yields b, d
-    #  doc.root.each_element_with_attribute( 'id', '1' ) {|e| p e}
-    #  # Yields b
-    #  doc.root.each_element_with_attribute( 'id', '1', 1 ) {|e| p e}
-    #  # Yields d
-    #  doc.root.each_element_with_attribute( 'id', '1', 0, 'd' ) {|e| p e}
-    def each_element_with_attribute( key, value=nil, max=0, name=nil, &block ) # :yields: Element
-      each_with_something( proc {|child| 
-        if value.nil?
-          child.attributes[key] != nil
-        else
-          child.attributes[key]==value
-        end
-      }, max, name, &block )
-    end
-
-    # Iterates through the children, yielding for each Element that
-    # has a particular text set.
-    # text:: 
-    #   the text to search for.  If nil, or not supplied, will itterate
-    #   over all +Element+ children that contain at least one +Text+ node.
-    # max:: 
-    #   (optional) causes this method to return after yielding
-    #   for this number of matching children
-    # name:: 
-    #   (optional) if supplied, this is an XPath that filters
-    #   the children to check.
-    #
-    #  doc = Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
-    #  # Yields b, c, d
-    #  doc.each_element_with_text {|e|p e}
-    #  # Yields b, c
-    #  doc.each_element_with_text('b'){|e|p e}
-    #  # Yields b
-    #  doc.each_element_with_text('b', 1){|e|p e}
-    #  # Yields d
-    #  doc.each_element_with_text(nil, 0, 'd'){|e|p e}
-    def each_element_with_text( text=nil, max=0, name=nil, &block ) # :yields: Element
-      each_with_something( proc {|child| 
-        if text.nil?
-          child.has_text?
-        else
-          child.text == text
-        end
-      }, max, name, &block )
-    end
-
-    # Synonym for Element.elements.each
-    def each_element( xpath=nil, &block ) # :yields: Element
-      @elements.each( xpath, &block )
-    end
-
-    # Synonym for Element.to_a
-    # This is a little slower than calling elements.each directly.
-    # xpath:: any XPath by which to search for elements in the tree
-    # Returns:: an array of Elements that match the supplied path
-    def get_elements( xpath )
-      @elements.to_a( xpath )
-    end
-
-    # Returns the next sibling that is an element, or nil if there is
-    # no Element sibling after this one
-    #  doc = Document.new '<a><b/>text<c/></a>'
-    #  doc.root.elements['b'].next_element          #-> <c/>
-    #  doc.root.elements['c'].next_element          #-> nil
-    def next_element
-      element = next_sibling
-      element = element.next_sibling until element.nil? or element.kind_of? Element 
-      return element
-    end
-
-    # Returns the previous sibling that is an element, or nil if there is
-    # no Element sibling prior to this one
-    #  doc = Document.new '<a><b/>text<c/></a>'
-    #  doc.root.elements['c'].previous_element          #-> <b/>
-    #  doc.root.elements['b'].previous_element          #-> nil
-    def previous_element
-      element = previous_sibling
-      element = element.previous_sibling until element.nil? or element.kind_of? Element
-      return element
-    end
-
-
-    #################################################
-    # Text                                          #
-    #################################################
-
-    # Evaluates to +true+ if this element has at least one Text child
-    def has_text?
-      not text().nil?
-    end
-
-    # A convenience method which returns the String value of the _first_
-    # child text element, if one exists, and +nil+ otherwise.
-    #
-    # <em>Note that an element may have multiple Text elements, perhaps
-    # separated by other children</em>.  Be aware that this method only returns
-    # the first Text node.
-    #
-    # This method returns the +value+ of the first text child node, which
-    # ignores the +raw+ setting, so always returns normalized text. See
-    # the Text::value documentation.
-    #
-    #  doc = Document.new "<p>some text <b>this is bold!</b> more text</p>"
-    #  # The element 'p' has two text elements, "some text " and " more text".
-    #  doc.root.text              #-> "some text "
-    def text( path = nil )
-      rv = get_text(path)
-      return rv.value unless rv.nil?
-      nil
-    end
-
-    # Returns the first child Text node, if any, or +nil+ otherwise.
-    # This method returns the actual +Text+ node, rather than the String content.
-    #  doc = Document.new "<p>some text <b>this is bold!</b> more text</p>"
-    #  # The element 'p' has two text elements, "some text " and " more text".
-    #  doc.root.get_text.value            #-> "some text "
-    def get_text path = nil
-      rv = nil
-      if path
-        element = @elements[ path ]
-        rv = element.get_text unless element.nil?
-      else
-        rv = @children.find { |node| node.kind_of? Text }
-      end
-      return rv
-    end
-
-    # Sets the first Text child of this object.  See text() for a
-    # discussion about Text children.
-    #
-    # If a Text child already exists, the child is replaced by this
-    # content.  This means that Text content can be deleted by calling
-    # this method with a nil argument.  In this case, the next Text
-    # child becomes the first Text child.  In no case is the order of
-    # any siblings disturbed.
-    # text:: 
-    #   If a String, a new Text child is created and added to
-    #   this Element as the first Text child.  If Text, the text is set
-    #   as the first Child element.  If nil, then any existing first Text
-    #   child is removed.
-    # Returns:: this Element.
-    #  doc = Document.new '<a><b/></a>'
-    #  doc.root.text = 'Sean'      #-> '<a><b/>Sean</a>'
-    #  doc.root.text = 'Elliott'   #-> '<a><b/>Elliott</a>'
-    #  doc.root.add_element 'c'    #-> '<a><b/>Elliott<c/></a>'
-    #  doc.root.text = 'Russell'   #-> '<a><b/>Russell<c/></a>'
-    #  doc.root.text = nil         #-> '<a><b/><c/></a>'
-    def text=( text )
-      if text.kind_of? String
-        text = Text.new( text, whitespace(), nil, raw() )
-      elsif text and !text.kind_of? Text
-        text = Text.new( text.to_s, whitespace(), nil, raw() )
-      end
-      old_text = get_text
-      if text.nil?
-        old_text.remove unless old_text.nil?
-      else
-        if old_text.nil?
-          self << text
-        else
-          old_text.replace_with( text )
-        end
-      end
-      return self
-    end
-
-    # A helper method to add a Text child.  Actual Text instances can
-    # be added with regular Parent methods, such as add() and <<()
-    # text::
-    #   if a String, a new Text instance is created and added
-    #   to the parent.  If Text, the object is added directly.
-    # Returns:: this Element
-    #  e = Element.new('a')          #-> <e/>
-    #  e.add_text 'foo'              #-> <e>foo</e>
-    #  e.add_text Text.new(' bar')    #-> <e>foo bar</e>
-    # Note that at the end of this example, the branch has <b>3</b> nodes; the 'e'
-    # element and <b>2</b> Text node children.
-    def add_text( text )
-      if text.kind_of? String 
-        if @children[-1].kind_of? Text
-          @children[-1] << text
-          return
-        end
-        text = Text.new( text, whitespace(), nil, raw() )
-      end
-      self << text unless text.nil?
-      return self
-    end
-
-    def node_type
-      :element
-    end
-
-    def xpath
-      path_elements = []
-      cur = self
-      path_elements << __to_xpath_helper( self )
-      while cur.parent
-        cur = cur.parent
-        path_elements << __to_xpath_helper( cur )
-      end
-      return path_elements.reverse.join( "/" )
-    end
-
-    #################################################
-    # Attributes                                    #
-    #################################################
-
-    def attribute( name, namespace=nil )
-      prefix = nil
-      prefix = namespaces.index(namespace) if namespace
-      prefix = nil if prefix == 'xmlns'
-      attributes.get_attribute( "#{prefix ? prefix + ':' : ''}#{name}" )
-    end
-
-    # Evaluates to +true+ if this element has any attributes set, false
-    # otherwise.
-    def has_attributes?
-      return !@attributes.empty?
-    end
-
-    # Adds an attribute to this element, overwriting any existing attribute
-    # by the same name.
-    # key::
-    #   can be either an Attribute or a String.  If an Attribute,
-    #   the attribute is added to the list of Element attributes.  If String,
-    #   the argument is used as the name of the new attribute, and the value
-    #   parameter must be supplied.
-    # value:: 
-    #   Required if +key+ is a String, and ignored if the first argument is
-    #   an Attribute.  This is a String, and is used as the value
-    #   of the new Attribute.  This should be the unnormalized value of the
-    #   attribute (without entities).
-    # Returns:: the Attribute added
-    #  e = Element.new 'e'
-    #  e.add_attribute( 'a', 'b' )               #-> <e a='b'/>
-    #  e.add_attribute( 'x:a', 'c' )             #-> <e a='b' x:a='c'/>
-    #  e.add_attribute Attribute.new('b', 'd')   #-> <e a='b' x:a='c' b='d'/>
-    def add_attribute( key, value=nil )
-      if key.kind_of? Attribute
-        @attributes << key
-      else
-        @attributes[key] = value
-      end
-    end
-
-    # Add multiple attributes to this element.
-    # hash:: is either a hash, or array of arrays
-    #  el.add_attributes( {"name1"=>"value1", "name2"=>"value2"} )
-    #  el.add_attributes( [ ["name1","value1"], ["name2"=>"value2"] ] )
-    def add_attributes hash
-      if hash.kind_of? Hash
-        hash.each_pair {|key, value| @attributes[key] = value }
-      elsif hash.kind_of? Array
-        hash.each { |value| @attributes[ value[0] ] = value[1] }
-      end
-    end
-
-    # Removes an attribute
-    # key::
-    #   either an Attribute or a String.  In either case, the
-    #   attribute is found by matching the attribute name to the argument,
-    #   and then removed.  If no attribute is found, no action is taken.
-    # Returns:: 
-    #   the attribute removed, or nil if this Element did not contain
-    #   a matching attribute
-    #  e = Element.new('E')
-    #  e.add_attribute( 'name', 'Sean' )             #-> <E name='Sean'/>
-    #  r = e.add_attribute( 'sur:name', 'Russell' )  #-> <E name='Sean' sur:name='Russell'/>
-    #  e.delete_attribute( 'name' )                  #-> <E sur:name='Russell'/>
-    #  e.delete_attribute( r )                       #-> <E/>
-    def delete_attribute(key)
-      attr = @attributes.get_attribute(key)
-      attr.remove unless attr.nil?
-    end
-
-    #################################################
-    # Other Utilities                               #
-    #################################################
-
-    # Get an array of all CData children.  
-    # IMMUTABLE
-    def cdatas
-      find_all { |child| child.kind_of? CData }.freeze
-    end
-
-    # Get an array of all Comment children.
-    # IMMUTABLE
-    def comments
-      find_all { |child| child.kind_of? Comment }.freeze
-    end
-
-    # Get an array of all Instruction children.
-    # IMMUTABLE
-    def instructions
-      find_all { |child| child.kind_of? Instruction }.freeze
-    end
-
-    # Get an array of all Text children.
-    # IMMUTABLE
-    def texts
-      find_all { |child| child.kind_of? Text }.freeze
-    end
-
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    # Writes out this element, and recursively, all children.
-    # output::
-    #	  output an object which supports '<< string'; this is where the
-    #   document will be written.
-    # indent::
-    #   An integer.  If -1, no indenting will be used; otherwise, the
-    #   indentation will be this number of spaces, and children will be
-    #   indented an additional amount.  Defaults to -1
-    # transitive::
-    #   If transitive is true and indent is >= 0, then the output will be
-    #   pretty-printed in such a way that the added whitespace does not affect
-    #   the parse tree of the document
-    # ie_hack::
-    #   Internet Explorer is the worst piece of crap to have ever been
-    #   written, with the possible exception of Windows itself.  Since IE is
-    #   unable to parse proper XML, we have to provide a hack to generate XML
-    #   that IE's limited abilities can handle.  This hack inserts a space 
-    #   before the /> on empty tags.  Defaults to false
-    #
-    #  out = ''
-    #  doc.write( out )     #-> doc is written to the string 'out'
-    #  doc.write( $stdout ) #-> doc written to the console
-    def write(writer=$stdout, indent=-1, transitive=false, ie_hack=false)
-      Kernel.warn("#{self.class.name}.write is deprecated.  See REXML::Formatters")
-      formatter = if indent > -1
-          if transitive
-            REXML::Formatters::Transitive.new( indent, ie_hack )
-          else
-            REXML::Formatters::Pretty.new( indent, ie_hack )
-          end
-        else
-          REXML::Formatters::Default.new( ie_hack )
-        end
-      formatter.write( self, output )
-    end
-
-
-    private
-    def __to_xpath_helper node
-      rv = node.expanded_name.clone
-      if node.parent
-        results = node.parent.find_all {|n| 
-          n.kind_of?(REXML::Element) and n.expanded_name == node.expanded_name 
-        }
-        if results.length > 1
-          idx = results.index( node )
-          rv << "[#{idx+1}]"
-        end
-      end
-      rv
-    end
-
-    # A private helper method
-    def each_with_something( test, max=0, name=nil )
-      num = 0
-      child=nil
-      @elements.each( name ){ |child|
-        yield child if test.call(child) and num += 1
-        return if max>0 and num == max
-      }
-    end
-  end
-
-  ########################################################################
-  # ELEMENTS                                                             #
-  ########################################################################
-
-  # A class which provides filtering of children for Elements, and
-  # XPath search support.  You are expected to only encounter this class as
-  # the <tt>element.elements</tt> object.  Therefore, you are 
-  # _not_ expected to instantiate this yourself.
-  class Elements
-    include Enumerable
-    # Constructor
-    # parent:: the parent Element
-    def initialize parent
-      @element = parent
-    end
-
-    # Fetches a child element.  Filters only Element children, regardless of
-    # the XPath match.
-    # index:: 
-    #   the search parameter.  This is either an Integer, which
-    #   will be used to find the index'th child Element, or an XPath,
-    #   which will be used to search for the Element.  <em>Because
-    #   of the nature of XPath searches, any element in the connected XML
-    #   document can be fetched through any other element.</em>  <b>The
-    #   Integer index is 1-based, not 0-based.</b>  This means that the first
-    #   child element is at index 1, not 0, and the +n+th element is at index
-    #   +n+, not <tt>n-1</tt>.  This is because XPath indexes element children
-    #   starting from 1, not 0, and the indexes should be the same.
-    # name:: 
-    #   optional, and only used in the first argument is an
-    #   Integer.  In that case, the index'th child Element that has the
-    #   supplied name will be returned.  Note again that the indexes start at 1.
-    # Returns:: the first matching Element, or nil if no child matched
-    #  doc = Document.new '<a><b/><c id="1"/><c id="2"/><d/></a>'
-    #  doc.root.elements[1]       #-> <b/>
-    #  doc.root.elements['c']     #-> <c id="1"/>
-    #  doc.root.elements[2,'c']   #-> <c id="2"/>
-    def []( index, name=nil)
-      if index.kind_of? Integer
-        raise "index (#{index}) must be >= 1" if index < 1
-        name = literalize(name) if name
-        num = 0
-        child = nil
-        @element.find { |child|
-          child.kind_of? Element and
-          (name.nil? ? true : child.has_name?( name )) and 
-          (num += 1) == index
-        }
-      else
-        return XPath::first( @element, index )
-        #{ |element| 
-        #	return element if element.kind_of? Element
-        #}
-        #return nil
-      end
-    end
-
-    # Sets an element, replacing any previous matching element.  If no
-    # existing element is found ,the element is added.
-    # index:: Used to find a matching element to replace.  See []().
-    # element:: 
-    #   The element to replace the existing element with
-    #   the previous element
-    # Returns:: nil if no previous element was found.
-    #
-    #  doc = Document.new '<a/>'
-    #  doc.root.elements[10] = Element.new('b')    #-> <a><b/></a>
-    #  doc.root.elements[1]                        #-> <b/>
-    #  doc.root.elements[1] = Element.new('c')     #-> <a><c/></a>
-    #  doc.root.elements['c'] = Element.new('d')   #-> <a><d/></a>
-    def []=( index, element )
-      previous = self[index]
-      if previous.nil?
-        @element.add element
-      else
-        previous.replace_with element
-      end
-      return previous
-    end
-
-    # Returns +true+ if there are no +Element+ children, +false+ otherwise
-    def empty?
-      @element.find{ |child| child.kind_of? Element}.nil?
-    end
-
-    # Returns the index of the supplied child (starting at 1), or -1 if 
-    # the element is not a child
-    # element:: an +Element+ child
-    def index element
-      rv = 0
-      found = @element.find do |child| 
-        child.kind_of? Element and
-        (rv += 1) and
-        child == element
-      end
-      return rv if found == element
-      return -1
-    end
-
-    # Deletes a child Element
-    # element:: 
-    #   Either an Element, which is removed directly; an
-    #   xpath, where the first matching child is removed; or an Integer,
-    #   where the n'th Element is removed.
-    # Returns:: the removed child
-    #  doc = Document.new '<a><b/><c/><c id="1"/></a>'
-    #  b = doc.root.elements[1]
-    #  doc.root.elements.delete b           #-> <a><c/><c id="1"/></a>
-    #  doc.elements.delete("a/c[@id='1']")  #-> <a><c/></a>
-    #  doc.root.elements.delete 1           #-> <a/>
-    def delete element
-      if element.kind_of? Element
-        @element.delete element
-      else
-        el = self[element]
-        el.remove if el
-      end
-    end
-
-    # Removes multiple elements.  Filters for Element children, regardless of
-    # XPath matching.
-    # xpath:: all elements matching this String path are removed.
-    # Returns:: an Array of Elements that have been removed
-    #  doc = Document.new '<a><c/><c/><c/><c/></a>'
-    #  deleted = doc.elements.delete_all 'a/c' #-> [<c/>, <c/>, <c/>, <c/>]
-    def delete_all( xpath )
-      rv = []
-      XPath::each( @element, xpath) {|element| 
-        rv << element if element.kind_of? Element
-      }
-      rv.each do |element|
-        @element.delete element
-        element.remove
-      end
-      return rv
-    end
-
-    # Adds an element
-    # element:: 
-    #   if supplied, is either an Element, String, or
-    #   Source (see Element.initialize).  If not supplied or nil, a
-    #   new, default Element will be constructed
-    # Returns:: the added Element
-    #  a = Element.new('a')
-    #  a.elements.add(Element.new('b'))  #-> <a><b/></a>
-    #  a.elements.add('c')               #-> <a><b/><c/></a>
-    def add element=nil
-      rv = nil
-      if element.nil?
-        Element.new("", self, @element.context)
-      elsif not element.kind_of?(Element)
-        Element.new(element, self, @element.context)
-      else
-        @element << element
-        element.context = @element.context
-        element
-      end
-    end
-
-    alias :<< :add
-
-    # Iterates through all of the child Elements, optionally filtering
-    # them by a given XPath
-    # xpath:: 
-    #   optional.  If supplied, this is a String XPath, and is used to 
-    #   filter the children, so that only matching children are yielded.  Note
-    #   that XPaths are automatically filtered for Elements, so that
-    #   non-Element children will not be yielded
-    #  doc = Document.new '<a><b/><c/><d/>sean<b/><c/><d/></a>'
-    #  doc.root.each {|e|p e}       #-> Yields b, c, d, b, c, d elements
-    #  doc.root.each('b') {|e|p e}  #-> Yields b, b elements
-    #  doc.root.each('child::node()')  {|e|p e}
-    #  #-> Yields <b/>, <c/>, <d/>, <b/>, <c/>, <d/>
-    #  XPath.each(doc.root, 'child::node()', &block)
-    #  #-> Yields <b/>, <c/>, <d/>, sean, <b/>, <c/>, <d/>
-    def each( xpath=nil, &block)
-      XPath::each( @element, xpath ) {|e| yield e if e.kind_of? Element }
-    end
-
-    def collect( xpath=nil, &block )
-      collection = []
-      XPath::each( @element, xpath ) {|e| 
-        collection << yield(e)  if e.kind_of?(Element) 
-      }
-      collection
-    end
-
-    def inject( xpath=nil, initial=nil, &block )
-      first = true
-      XPath::each( @element, xpath ) {|e|
-        if (e.kind_of? Element)
-          if (first and initial == nil)
-            initial = e
-            first = false
-          else
-            initial = yield( initial, e ) if e.kind_of? Element
-          end
-        end
-      }
-      initial
-    end
-
-    # Returns the number of +Element+ children of the parent object.
-    #  doc = Document.new '<a>sean<b/>elliott<b/>russell<b/></a>'
-    #  doc.root.size            #-> 6, 3 element and 3 text nodes
-    #  doc.root.elements.size   #-> 3
-    def size
-      count = 0
-      @element.each {|child| count+=1 if child.kind_of? Element }
-      count
-    end
-
-    # Returns an Array of Element children.  An XPath may be supplied to
-    # filter the children.  Only Element children are returned, even if the
-    # supplied XPath matches non-Element children.
-    #  doc = Document.new '<a>sean<b/>elliott<c/></a>'
-    #  doc.root.elements.to_a                  #-> [ <b/>, <c/> ]
-    #  doc.root.elements.to_a("child::node()") #-> [ <b/>, <c/> ] 
-    #  XPath.match(doc.root, "child::node()")  #-> [ sean, <b/>, elliott, <c/> ]
-    def to_a( xpath=nil )
-      rv = XPath.match( @element, xpath )
-      return rv.find_all{|e| e.kind_of? Element} if xpath
-      rv
-    end
-
-    private
-    # Private helper class.  Removes quotes from quoted strings
-    def literalize name
-      name = name[1..-2] if name[0] == ?' or name[0] == ?"               #'
-      name
-    end
-  end
-
-  ########################################################################
-  # ATTRIBUTES                                                           #
-  ########################################################################
-
-  # A class that defines the set of Attributes of an Element and provides 
-  # operations for accessing elements in that set.
-  class Attributes < Hash
-    # Constructor
-    # element:: the Element of which this is an Attribute
-    def initialize element
-      @element = element
-    end
-
-    # Fetches an attribute value.  If you want to get the Attribute itself,
-    # use get_attribute()
-    # name:: an XPath attribute name.  Namespaces are relevant here.
-    # Returns:: 
-    #   the String value of the matching attribute, or +nil+ if no
-    #   matching attribute was found.  This is the unnormalized value
-    #   (with entities expanded).
-    # 
-    #  doc = Document.new "<a foo:att='1' bar:att='2' att='<'/>"
-    #  doc.root.attributes['att']         #-> '<'
-    #  doc.root.attributes['bar:att']     #-> '2'
-    def [](name)
-      attr = get_attribute(name)
-      return attr.value unless attr.nil?
-      return nil
-    end
-
-    def to_a
-      values.flatten
-    end
-
-    # Returns the number of attributes the owning Element contains.
-    #  doc = Document "<a x='1' y='2' foo:x='3'/>"
-    #  doc.root.attributes.length        #-> 3
-    def length
-      c = 0
-      each_attribute { c+=1 }
-      c
-    end
-    alias :size :length
-
-    # Itterates over the attributes of an Element.  Yields actual Attribute
-    # nodes, not String values.
-    # 
-    #  doc = Document.new '<a x="1" y="2"/>'
-    #  doc.root.attributes.each_attribute {|attr|
-    #    p attr.expanded_name+" => "+attr.value
-    #  }
-    def each_attribute # :yields: attribute
-      each_value do |val|
-        if val.kind_of? Attribute
-          yield val
-        else
-          val.each_value { |atr| yield atr }
-        end
-      end
-    end
-
-    # Itterates over each attribute of an Element, yielding the expanded name
-    # and value as a pair of Strings.
-    #
-    #  doc = Document.new '<a x="1" y="2"/>'
-    #  doc.root.attributes.each {|name, value| p name+" => "+value }
-    def each
-      each_attribute do |attr|
-        yield attr.expanded_name, attr.value
-      end
-    end
-
-    # Fetches an attribute
-    # name:: 
-    #   the name by which to search for the attribute.  Can be a
-    #   <tt>prefix:name</tt> namespace name.
-    # Returns:: The first matching attribute, or nil if there was none.  This
-    # value is an Attribute node, not the String value of the attribute.
-    #  doc = Document.new '<a x:foo="1" foo="2" bar="3"/>'
-    #  doc.root.attributes.get_attribute("foo").value    #-> "2"
-    #  doc.root.attributes.get_attribute("x:foo").value  #-> "1"
-    def get_attribute( name )
-      attr = fetch( name, nil )
-      if attr.nil?
-        return nil if name.nil?
-        # Look for prefix
-        name =~ Namespace::NAMESPLIT
-        prefix, n = $1, $2
-        if prefix
-          attr = fetch( n, nil )
-          # check prefix
-          if attr == nil
-          elsif attr.kind_of? Attribute
-            return attr if prefix == attr.prefix
-          else
-            attr = attr[ prefix ]
-            return attr
-          end
-        end
-        element_document = @element.document
-        if element_document and element_document.doctype
-          expn = @element.expanded_name
-          expn = element_document.doctype.name if expn.size == 0
-          attr_val = element_document.doctype.attribute_of(expn, name)
-          return Attribute.new( name, attr_val ) if attr_val
-        end
-        return nil
-      end
-      if attr.kind_of? Hash
-        attr = attr[ @element.prefix ]
-      end
-      return attr
-    end
-
-    # Sets an attribute, overwriting any existing attribute value by the
-    # same name.  Namespace is significant.
-    # name:: the name of the attribute
-    # value:: 
-    #   (optional) If supplied, the value of the attribute.  If
-    #   nil, any existing matching attribute is deleted.
-    # Returns:: 
-    #   Owning element
-    #  doc = Document.new "<a x:foo='1' foo='3'/>"
-    #  doc.root.attributes['y:foo'] = '2'
-    #  doc.root.attributes['foo'] = '4'
-    #  doc.root.attributes['x:foo'] = nil
-    def []=( name, value )
-      if value.nil?		# Delete the named attribute
-        attr = get_attribute(name)
-        delete attr
-        return
-      end
-      element_document = @element.document
-      unless value.kind_of? Attribute
-        if @element.document and @element.document.doctype
-          value = Text::normalize( value, @element.document.doctype )
-        else
-          value = Text::normalize( value, nil )
-        end
-        value = Attribute.new(name, value)
-      end
-      value.element = @element
-      old_attr = fetch(value.name, nil)
-      if old_attr.nil?
-        store(value.name, value)
-      elsif old_attr.kind_of? Hash
-        old_attr[value.prefix] = value
-      elsif old_attr.prefix != value.prefix
-        # Check for conflicting namespaces
-        raise ParseException.new( 
-          "Namespace conflict in adding attribute \"#{value.name}\": "+
-          "Prefix \"#{old_attr.prefix}\" = "+
-          "\"#{@element.namespace(old_attr.prefix)}\" and prefix "+
-          "\"#{value.prefix}\" = \"#{@element.namespace(value.prefix)}\"") if 
-          value.prefix != "xmlns" and old_attr.prefix != "xmlns" and
-          @element.namespace( old_attr.prefix ) == 
-            @element.namespace( value.prefix )
-          store value.name, { old_attr.prefix	=> old_attr,
-            value.prefix		=> value }
-      else
-        store value.name, value
-      end
-      return @element
-    end
-
-    # Returns an array of Strings containing all of the prefixes declared 
-    # by this set of # attributes.  The array does not include the default
-    # namespace declaration, if one exists.
-    #  doc = Document.new("<a xmlns='foo' xmlns:x='bar' xmlns:y='twee' "+
-    #        "z='glorp' p:k='gru'/>")
-    #  prefixes = doc.root.attributes.prefixes    #-> ['x', 'y']
-    def prefixes
-      ns = []
-      each_attribute do |attribute|
-        ns << attribute.name if attribute.prefix == 'xmlns'
-      end
-      if @element.document and @element.document.doctype
-        expn = @element.expanded_name
-        expn = @element.document.doctype.name if expn.size == 0
-        @element.document.doctype.attributes_of(expn).each {
-          |attribute|
-          ns << attribute.name if attribute.prefix == 'xmlns'
-        }
-      end
-      ns
-    end
-
-    def namespaces
-      namespaces = {}
-      each_attribute do |attribute|
-        namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
-      end
-      if @element.document and @element.document.doctype
-        expn = @element.expanded_name
-        expn = @element.document.doctype.name if expn.size == 0
-        @element.document.doctype.attributes_of(expn).each {
-          |attribute|
-          namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
-        }
-      end
-      namespaces
-    end
-
-    # Removes an attribute
-    # attribute:: 
-    #   either a String, which is the name of the attribute to remove --
-    #   namespaces are significant here -- or the attribute to remove.
-    # Returns:: the owning element
-    #  doc = Document.new "<a y:foo='0' x:foo='1' foo='3' z:foo='4'/>"
-    #  doc.root.attributes.delete 'foo'   #-> <a y:foo='0' x:foo='1' z:foo='4'/>"
-    #  doc.root.attributes.delete 'x:foo' #-> <a y:foo='0' z:foo='4'/>"
-    #  attr = doc.root.attributes.get_attribute('y:foo')
-    #  doc.root.attributes.delete attr    #-> <a z:foo='4'/>"
-    def delete( attribute )
-      name = nil
-      prefix = nil
-      if attribute.kind_of? Attribute
-        name = attribute.name
-        prefix = attribute.prefix
-      else
-        attribute =~ Namespace::NAMESPLIT
-        prefix, name = $1, $2
-        prefix = '' unless prefix
-      end
-      old = fetch(name, nil)
-      attr = nil
-      if old.kind_of? Hash # the supplied attribute is one of many
-        attr = old.delete(prefix)
-        if old.size == 1
-          repl = nil
-          old.each_value{|v| repl = v}
-          store name, repl
-        end
-      elsif old.nil?
-        return @element
-      else # the supplied attribute is a top-level one
-        attr = old
-        res = super(name)
-      end
-      @element
-    end
-
-    # Adds an attribute, overriding any existing attribute by the
-    # same name.  Namespaces are significant.
-    # attribute:: An Attribute
-    def add( attribute )
-      self[attribute.name] = attribute
-    end
-
-    alias :<< :add
-
-    # Deletes all attributes matching a name.  Namespaces are significant.
-    # name:: 
-    #   A String; all attributes that match this path will be removed
-    # Returns:: an Array of the Attributes that were removed
-    def delete_all( name )
-      rv = []
-      each_attribute { |attribute| 
-        rv << attribute if attribute.expanded_name == name
-      }
-      rv.each{ |attr| attr.remove }
-      return rv
-    end
-
-    # The +get_attribute_ns+ method retrieves a method by its namespace
-    # and name. Thus it is possible to reliably identify an attribute
-    # even if an XML processor has changed the prefix.
-    # 
-    # Method contributed by Henrik Martensson
-    def get_attribute_ns(namespace, name)
-      each_attribute() { |attribute|
-        if name == attribute.name &&
-          namespace == attribute.namespace()
-          return attribute
-        end
-      }
-      nil
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encoding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encoding.rb
deleted file mode 100644
index a01763b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encoding.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 2; indent-tabs-mode: t; tab-width: 2 -*- vim: sw=2 ts=2
-module REXML
-  module Encoding
-    @encoding_methods = {}
-    def self.register(enc, &block)
-      @encoding_methods[enc] = block
-    end
-    def self.apply(obj, enc)
-      @encoding_methods[enc][obj]
-    end
-    def self.encoding_method(enc)
-      @encoding_methods[enc]
-    end
-
-    # Native, default format is UTF-8, so it is declared here rather than in
-    # an encodings/ definition.
-    UTF_8 = 'UTF-8'
-    UTF_16 = 'UTF-16'
-    UNILE = 'UNILE'
-
-    # ID ---> Encoding name
-    attr_reader :encoding
-    def encoding=( enc )
-      old_verbosity = $VERBOSE
-      begin
-        $VERBOSE = false
-        enc = enc.nil? ? nil : enc.upcase
-        return false if defined? @encoding and enc == @encoding
-        if enc and enc != UTF_8
-          @encoding = enc
-          raise ArgumentError, "Bad encoding name #@encoding" unless @encoding =~ /^[\w-]+$/
-          @encoding.untaint 
-          begin
-            require 'rexml/encodings/ICONV.rb'
-            Encoding.apply(self, "ICONV")
-          rescue LoadError, Exception
-            begin
-              enc_file = File.join( "rexml", "encodings", "#@encoding.rb" )
-              require enc_file
-              Encoding.apply(self, @encoding)
-            rescue LoadError => err
-              puts err.message
-              raise ArgumentError, "No decoder found for encoding #@encoding.  Please install iconv."
-            end
-          end
-        else
-          @encoding = UTF_8
-          require 'rexml/encodings/UTF-8.rb'
-          Encoding.apply(self, @encoding)
-        end
-      ensure
-        $VERBOSE = old_verbosity
-      end
-      true
-    end
-
-    def check_encoding str
-      # We have to recognize UTF-16, LSB UTF-16, and UTF-8
-      if str[0] == 0xfe && str[1] == 0xff
-        str[0,2] = ""
-        return UTF_16
-      elsif str[0] == 0xff && str[1] == 0xfe
-        str[0,2] = ""
-        return UNILE
-      end
-      str =~ /^\s*<\?xml\s+version\s*=\s*(['"]).*?\1\s+encoding\s*=\s*(["'])(.*?)\2/um
-      return $3.upcase if $3
-      return UTF_8
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/CP-1252.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/CP-1252.rb
deleted file mode 100644
index 8675f9f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/CP-1252.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-#
-# This class was contributed by Mikko Tiihonen mikko DOT tiihonen AT hut DOT fi
-#
-module REXML
-  module Encoding
-  	register( "CP-1252" ) do |o|
-  		class << o
-  			alias encode encode_cp1252
-			alias decode decode_cp1252
-  		end
-  	end
-
-    # Convert from UTF-8
-    def encode_cp1252(content)
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        case num
-          # shortcut first bunch basic characters
-        when 0..0xFF; array_enc << num
-          # characters added compared to iso-8859-1
-        when 0x20AC; array_enc << 0x80 # 0xe2 0x82 0xac
-        when 0x201A; array_enc << 0x82 # 0xe2 0x82 0x9a
-        when 0x0192; array_enc << 0x83 # 0xc6 0x92
-        when 0x201E; array_enc << 0x84 # 0xe2 0x82 0x9e
-        when 0x2026; array_enc << 0x85 # 0xe2 0x80 0xa6
-        when 0x2020; array_enc << 0x86 # 0xe2 0x80 0xa0
-        when 0x2021; array_enc << 0x87 # 0xe2 0x80 0xa1
-        when 0x02C6; array_enc << 0x88 # 0xcb 0x86
-        when 0x2030; array_enc << 0x89 # 0xe2 0x80 0xb0
-        when 0x0160; array_enc << 0x8A # 0xc5 0xa0
-        when 0x2039; array_enc << 0x8B # 0xe2 0x80 0xb9
-        when 0x0152; array_enc << 0x8C # 0xc5 0x92
-        when 0x017D; array_enc << 0x8E # 0xc5 0xbd
-        when 0x2018; array_enc << 0x91 # 0xe2 0x80 0x98
-        when 0x2019; array_enc << 0x92 # 0xe2 0x80 0x99
-        when 0x201C; array_enc << 0x93 # 0xe2 0x80 0x9c
-        when 0x201D; array_enc << 0x94 # 0xe2 0x80 0x9d
-        when 0x2022; array_enc << 0x95 # 0xe2 0x80 0xa2
-        when 0x2013; array_enc << 0x96 # 0xe2 0x80 0x93
-        when 0x2014; array_enc << 0x97 # 0xe2 0x80 0x94
-        when 0x02DC; array_enc << 0x98 # 0xcb 0x9c
-        when 0x2122; array_enc << 0x99 # 0xe2 0x84 0xa2
-        when 0x0161; array_enc << 0x9A # 0xc5 0xa1
-        when 0x203A; array_enc << 0x9B # 0xe2 0x80 0xba
-        when 0x0152; array_enc << 0x9C # 0xc5 0x93
-        when 0x017E; array_enc << 0x9E # 0xc5 0xbe
-        when 0x0178; array_enc << 0x9F # 0xc5 0xb8
-        else
-          # all remaining basic characters can be used directly
-          if num <= 0xFF
-            array_enc << num
-          else
-            # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-            array_enc.concat "&\##{num};".unpack('C*')
-          end
-        end
-      end
-      array_enc.pack('C*')
-    end
-    
-    # Convert to UTF-8
-    def decode_cp1252(str)
-      array_latin9 = str.unpack('C*')
-      array_enc = []
-      array_latin9.each do |num|
-        case num
-          # characters that added compared to iso-8859-1
-        when 0x80; array_enc << 0x20AC # 0xe2 0x82 0xac
-        when 0x82; array_enc << 0x201A # 0xe2 0x82 0x9a
-        when 0x83; array_enc << 0x0192 # 0xc6 0x92
-        when 0x84; array_enc << 0x201E # 0xe2 0x82 0x9e
-        when 0x85; array_enc << 0x2026 # 0xe2 0x80 0xa6
-        when 0x86; array_enc << 0x2020 # 0xe2 0x80 0xa0
-        when 0x87; array_enc << 0x2021 # 0xe2 0x80 0xa1
-        when 0x88; array_enc << 0x02C6 # 0xcb 0x86
-        when 0x89; array_enc << 0x2030 # 0xe2 0x80 0xb0
-        when 0x8A; array_enc << 0x0160 # 0xc5 0xa0
-        when 0x8B; array_enc << 0x2039 # 0xe2 0x80 0xb9
-        when 0x8C; array_enc << 0x0152 # 0xc5 0x92
-        when 0x8E; array_enc << 0x017D # 0xc5 0xbd
-        when 0x91; array_enc << 0x2018 # 0xe2 0x80 0x98
-        when 0x92; array_enc << 0x2019 # 0xe2 0x80 0x99
-        when 0x93; array_enc << 0x201C # 0xe2 0x80 0x9c
-        when 0x94; array_enc << 0x201D # 0xe2 0x80 0x9d
-        when 0x95; array_enc << 0x2022 # 0xe2 0x80 0xa2
-        when 0x96; array_enc << 0x2013 # 0xe2 0x80 0x93
-        when 0x97; array_enc << 0x2014 # 0xe2 0x80 0x94
-        when 0x98; array_enc << 0x02DC # 0xcb 0x9c
-        when 0x99; array_enc << 0x2122 # 0xe2 0x84 0xa2
-        when 0x9A; array_enc << 0x0161 # 0xc5 0xa1
-        when 0x9B; array_enc << 0x203A # 0xe2 0x80 0xba
-        when 0x9C; array_enc << 0x0152 # 0xc5 0x93
-        when 0x9E; array_enc << 0x017E # 0xc5 0xbe
-        when 0x9F; array_enc << 0x0178 # 0xc5 0xb8
-        else
-          array_enc << num
-        end
-      end
-      array_enc.pack('U*')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/EUC-JP.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/EUC-JP.rb
deleted file mode 100644
index db37b6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/EUC-JP.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module REXML
-  module Encoding
-    begin
-      require 'uconv'
-
-      def decode_eucjp(str)
-        Uconv::euctou8(str)
-      end
-
-      def encode_eucjp content
-        Uconv::u8toeuc(content)
-      end
-    rescue LoadError
-      require 'nkf'
-
-      EUCTOU8 = '-Ewm0'
-      U8TOEUC = '-Wem0'
-
-      def decode_eucjp(str)
-        NKF.nkf(EUCTOU8, str)
-      end
-
-      def encode_eucjp content
-        NKF.nkf(U8TOEUC, content)
-      end
-    end
-
-    register("EUC-JP") do |obj|
-      class << obj
-        alias decode decode_eucjp
-        alias encode encode_eucjp
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ICONV.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ICONV.rb
deleted file mode 100644
index 172fba7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ICONV.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require "iconv"
-raise LoadError unless defined? Iconv
-
-module REXML
-  module Encoding
-    def decode_iconv(str)
-      Iconv.conv(UTF_8, @encoding, str)
-    end
-
-    def encode_iconv(content)
-      Iconv.conv(@encoding, UTF_8, content)
-    end
-
-    register("ICONV") do |obj|
-      Iconv.conv(UTF_8, obj.encoding, nil)
-      class << obj
-        alias decode decode_iconv
-        alias encode encode_iconv
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-1.rb
deleted file mode 100644
index 2873d13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-1.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rexml/encodings/US-ASCII'
-
-module REXML
-  module Encoding
-    register("ISO-8859-1", &encoding_method("US-ASCII"))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-15.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-15.rb
deleted file mode 100644
index 8dea0d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/ISO-8859-15.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# This class was contributed by Mikko Tiihonen mikko DOT tiihonen AT hut DOT fi
-#
-module REXML
-  module Encoding
-  	register("ISO-8859-15") do |o|
-  		alias encode to_iso_8859_15
-      alias decode from_iso_8859_15
-  	end
-
-    # Convert from UTF-8
-    def to_iso_8859_15(content)
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        case num
-          # shortcut first bunch basic characters
-        when 0..0xA3; array_enc << num
-          # characters removed compared to iso-8859-1
-        when 0xA4; array_enc << '¤'
-        when 0xA6; array_enc << '¦'
-        when 0xA8; array_enc << '¨'
-        when 0xB4; array_enc << '´'
-        when 0xB8; array_enc << '¸'
-        when 0xBC; array_enc << '¼'
-        when 0xBD; array_enc << '½'
-        when 0xBE; array_enc << '¾'
-          # characters added compared to iso-8859-1
-        when 0x20AC; array_enc << 0xA4 # 0xe2 0x82 0xac
-        when 0x0160; array_enc << 0xA6 # 0xc5 0xa0
-        when 0x0161; array_enc << 0xA8 # 0xc5 0xa1
-        when 0x017D; array_enc << 0xB4 # 0xc5 0xbd
-        when 0x017E; array_enc << 0xB8 # 0xc5 0xbe
-        when 0x0152; array_enc << 0xBC # 0xc5 0x92
-        when 0x0153; array_enc << 0xBD # 0xc5 0x93
-        when 0x0178; array_enc << 0xBE # 0xc5 0xb8
-        else
-          # all remaining basic characters can be used directly
-          if num <= 0xFF
-            array_enc << num
-          else
-            # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-            array_enc.concat "&\##{num};".unpack('C*')
-          end
-        end
-      end
-      array_enc.pack('C*')
-    end
-    
-    # Convert to UTF-8
-    def from_iso_8859_15(str)
-      array_latin9 = str.unpack('C*')
-      array_enc = []
-      array_latin9.each do |num|
-        case num
-          # characters that differ compared to iso-8859-1
-        when 0xA4; array_enc << 0x20AC
-        when 0xA6; array_enc << 0x0160
-        when 0xA8; array_enc << 0x0161
-        when 0xB4; array_enc << 0x017D
-        when 0xB8; array_enc << 0x017E
-        when 0xBC; array_enc << 0x0152
-        when 0xBD; array_enc << 0x0153
-        when 0xBE; array_enc << 0x0178
-        else
-          array_enc << num
-        end
-      end
-      array_enc.pack('U*')
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT-JIS.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT-JIS.rb
deleted file mode 100644
index 9e0f4af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT-JIS.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module REXML
-  module Encoding
-    begin
-      require 'uconv'
-
-      def decode_sjis content
-        Uconv::sjistou8(content)
-      end
-
-      def encode_sjis(str)
-        Uconv::u8tosjis(str)
-      end
-    rescue LoadError
-      require 'nkf'
-
-      SJISTOU8 = '-Swm0x'
-      U8TOSJIS = '-Wsm0x'
-
-      def decode_sjis(str)
-        NKF.nkf(SJISTOU8, str)
-      end
-
-      def encode_sjis content
-        NKF.nkf(U8TOSJIS, content)
-      end
-    end
-
-    b = proc do |obj|
-      class << obj
-        alias decode decode_sjis
-        alias encode encode_sjis
-      end
-    end
-    register("SHIFT-JIS", &b)
-    register("SHIFT_JIS", &b)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT_JIS.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT_JIS.rb
deleted file mode 100644
index e355704..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/SHIFT_JIS.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'rexml/encodings/SHIFT-JIS'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UNILE.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UNILE.rb
deleted file mode 100644
index d054140..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UNILE.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-module REXML
-  module Encoding
-    def encode_unile content
-      array_utf8 = content.unpack("U*")
-      array_enc = []
-      array_utf8.each do |num|
-        if ((num>>16) > 0)
-          array_enc << ??
-          array_enc << 0
-        else
-          array_enc << (num & 0xFF)
-          array_enc << (num >> 8)
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    def decode_unile(str)
-      array_enc=str.unpack('C*')
-      array_utf8 = []
-      0.step(array_enc.size-1, 2){|i| 
-        array_utf8 << (array_enc.at(i) + array_enc.at(i+1)*0x100)
-      }
-      array_utf8.pack('U*')
-    end
-
-    register(UNILE) do |obj|
-      class << obj
-        alias decode decode_unile
-        alias encode encode_unile
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/US-ASCII.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/US-ASCII.rb
deleted file mode 100644
index fb4c217..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/US-ASCII.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-module REXML
-  module Encoding
-    # Convert from UTF-8
-    def encode_ascii content
-      array_utf8 = content.unpack('U*')
-      array_enc = []
-      array_utf8.each do |num|
-        if num <= 0x7F
-          array_enc << num
-        else
-          # Numeric entity (&#nnnn;); shard by  Stefan Scholl
-          array_enc.concat "&\##{num};".unpack('C*')
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    # Convert to UTF-8
-    def decode_ascii(str)
-      str.unpack('C*').pack('U*')
-    end
-
-    register("US-ASCII") do |obj|
-      class << obj
-        alias decode decode_ascii
-        alias encode encode_ascii
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-16.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-16.rb
deleted file mode 100644
index 007c493..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-16.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module REXML
-  module Encoding
-    def encode_utf16 content
-      array_utf8 = content.unpack("U*")
-      array_enc = []
-      array_utf8.each do |num|
-        if ((num>>16) > 0)
-          array_enc << 0
-          array_enc << ??
-        else
-          array_enc << (num >> 8)
-          array_enc << (num & 0xFF)
-        end
-      end
-      array_enc.pack('C*')
-    end
-
-    def decode_utf16(str)
-      str = str[2..-1] if /^\376\377/n =~ str
-      array_enc=str.unpack('C*')
-      array_utf8 = []
-      0.step(array_enc.size-1, 2){|i| 
-        array_utf8 << (array_enc.at(i+1) + array_enc.at(i)*0x100)
-      }
-      array_utf8.pack('U*')
-    end
-
-    register(UTF_16) do |obj|
-      class << obj
-        alias decode decode_utf16
-        alias encode encode_utf16
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-8.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-8.rb
deleted file mode 100644
index bb08f44..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/encodings/UTF-8.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module REXML
-  module Encoding
-    def encode_utf8 content
-      content
-    end
-
-    def decode_utf8(str)
-      str
-    end
-
-    register(UTF_8) do |obj|
-      class << obj
-        alias decode decode_utf8
-        alias encode encode_utf8
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/entity.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/entity.rb
deleted file mode 100644
index ff2d45f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/entity.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require 'rexml/child'
-require 'rexml/source'
-require 'rexml/xmltokens'
-
-module REXML
-	# God, I hate DTDs.  I really do.  Why this idiot standard still
-	# plagues us is beyond me.
-	class Entity < Child
-		include XMLTokens
-		PUBIDCHAR = "\x20\x0D\x0Aa-zA-Z0-9\\-()+,./:=?;!*@$_%#"
-		SYSTEMLITERAL = %Q{((?:"[^"]*")|(?:'[^']*'))}
-		PUBIDLITERAL = %Q{("[#{PUBIDCHAR}']*"|'[#{PUBIDCHAR}]*')}
-		EXTERNALID = "(?:(?:(SYSTEM)\\s+#{SYSTEMLITERAL})|(?:(PUBLIC)\\s+#{PUBIDLITERAL}\\s+#{SYSTEMLITERAL}))"
-		NDATADECL = "\\s+NDATA\\s+#{NAME}"
-		PEREFERENCE = "%#{NAME};"
-		ENTITYVALUE = %Q{((?:"(?:[^%&"]|#{PEREFERENCE}|#{REFERENCE})*")|(?:'([^%&']|#{PEREFERENCE}|#{REFERENCE})*'))}
-		PEDEF = "(?:#{ENTITYVALUE}|#{EXTERNALID})"
-		ENTITYDEF = "(?:#{ENTITYVALUE}|(?:#{EXTERNALID}(#{NDATADECL})?))"
-		PEDECL = "<!ENTITY\\s+(%)\\s+#{NAME}\\s+#{PEDEF}\\s*>"
-		GEDECL = "<!ENTITY\\s+#{NAME}\\s+#{ENTITYDEF}\\s*>"
-		ENTITYDECL = /\s*(?:#{GEDECL})|(?:#{PEDECL})/um
-
-		attr_reader :name, :external, :ref, :ndata, :pubid
-
-		# Create a new entity.  Simple entities can be constructed by passing a
-		# name, value to the constructor; this creates a generic, plain entity
-		# reference. For anything more complicated, you have to pass a Source to
-		# the constructor with the entity definiton, or use the accessor methods.
-		# +WARNING+: There is no validation of entity state except when the entity
-		# is read from a stream.  If you start poking around with the accessors,
-		# you can easily create a non-conformant Entity.  The best thing to do is
-		# dump the stupid DTDs and use XMLSchema instead.
-		# 
-		#  e = Entity.new( 'amp', '&' )
-		def initialize stream, value=nil, parent=nil, reference=false
-			super(parent)
-			@ndata = @pubid = @value = @external = nil
-			if stream.kind_of? Array
-				@name = stream[1]
-				if stream[-1] == '%'
-					@reference = true 
-					stream.pop
-				else
-					@reference = false
-				end
-				if stream[2] =~ /SYSTEM|PUBLIC/
-					@external = stream[2]
-					if @external == 'SYSTEM'
-						@ref = stream[3]
-						@ndata = stream[4] if stream.size == 5
-					else
-						@pubid = stream[3]
-						@ref = stream[4]
-					end
-				else
-					@value = stream[2]
-				end
-			else
-				@reference = reference
-				@external = nil
-				@name = stream
-				@value = value
-			end
-		end
-
-		# Evaluates whether the given string matchs an entity definition,
-		# returning true if so, and false otherwise.
-		def Entity::matches? string
-			(ENTITYDECL =~ string) == 0
-		end
-
-		# Evaluates to the unnormalized value of this entity; that is, replacing
-		# all entities -- both %ent; and &ent; entities.  This differs from
-		# +value()+ in that +value+ only replaces %ent; entities.
-		def unnormalized
-			v = value()
-			return nil if v.nil?
-			@unnormalized = Text::unnormalize(v, parent)
-			@unnormalized
-		end
-
-		#once :unnormalized
-
-		# Returns the value of this entity unprocessed -- raw.  This is the
-		# normalized value; that is, with all %ent; and &ent; entities intact
-		def normalized
-			@value
-		end
-
-		# Write out a fully formed, correct entity definition (assuming the Entity
-		# object itself is valid.)
-    #
-    # out::
-    #   An object implementing <TT><<<TT> to which the entity will be
-    #   output
-    # indent::
-    #   *DEPRECATED* and ignored
-		def write out, indent=-1
-			out << '<!ENTITY '
-			out << '% ' if @reference
-			out << @name
-			out << ' '
-			if @external
-				out << @external << ' '
-				if @pubid
-					q = @pubid.include?('"')?"'":'"'
-					out << q << @pubid << q << ' '
-				end
-				q = @ref.include?('"')?"'":'"'
-				out << q << @ref << q
-				out << ' NDATA ' << @ndata if @ndata
-			else
-				q = @value.include?('"')?"'":'"'
-				out << q << @value << q
-			end
-			out << '>'
-		end
-
-		# Returns this entity as a string.  See write().
-		def to_s
-			rv = ''
-			write rv
-			rv
-		end
-
-		PEREFERENCE_RE = /#{PEREFERENCE}/um
-		# Returns the value of this entity.  At the moment, only internal entities
-		# are processed.  If the value contains internal references (IE,
-		# %blah;), those are replaced with their values.  IE, if the doctype
-		# contains:
-		#  <!ENTITY % foo "bar">
-		#  <!ENTITY yada "nanoo %foo; nanoo>
-		# then:
-		#  doctype.entity('yada').value   #-> "nanoo bar nanoo"
-		def value
-			if @value
-				matches = @value.scan(PEREFERENCE_RE)
-				rv = @value.clone
-				if @parent
-					matches.each do |entity_reference|
-						entity_value = @parent.entity( entity_reference[0] )
-						rv.gsub!( /%#{entity_reference};/um, entity_value )
-					end
-				end
-				return rv
-			end
-			nil
-		end
-	end
-
-	# This is a set of entity constants -- the ones defined in the XML
-	# specification.  These are +gt+, +lt+, +amp+, +quot+ and +apos+.
-	module EntityConst
-		# +>+
-		GT = Entity.new( 'gt', '>' )
-		# +<+
-		LT = Entity.new( 'lt', '<' )
-		# +&+
-		AMP = Entity.new( 'amp', '&' )
-		# +"+
-		QUOT = Entity.new( 'quot', '"' )
-		# +'+
-		APOS = Entity.new( 'apos', "'" )
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/default.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/default.rb
deleted file mode 100644
index 77381bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/default.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-module REXML
-  module Formatters
-    class Default
-      # Prints out the XML document with no formatting -- except if id_hack is
-      # set.
-      #
-      # ie_hack::
-      #   If set to true, then inserts whitespace before the close of an empty
-      #   tag, so that IE's bad XML parser doesn't choke.
-      def initialize( ie_hack=false )
-        @ie_hack = ie_hack
-      end
-
-      # Writes the node to some output.
-      #
-      # node::
-      #   The node to write
-      # output::
-      #   A class implementing <TT><<</TT>.  Pass in an Output object to
-      #   change the output encoding.
-      def write( node, output )
-        case node
-
-        when Document 
-          if node.xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
-            output = Output.new( output, node.xml_decl.encoding )
-          end
-          write_document( node, output )
-
-        when Element
-          write_element( node, output )
-
-        when Declaration, ElementDecl, NotationDecl, ExternalEntity, Entity,
-             Attribute, AttlistDecl
-          node.write( output,-1 )
-
-        when Instruction
-          write_instruction( node, output )
-
-        when DocType, XMLDecl
-          node.write( output )
-
-        when Comment
-          write_comment( node, output )
-
-        when CData
-          write_cdata( node, output )
-
-        when Text
-          write_text( node, output )
-
-        else
-          raise Exception.new("XML FORMATTING ERROR")
-
-        end
-      end
-
-      protected
-      def write_document( node, output )
-        node.children.each { |child| write( child, output ) }
-      end
-
-      def write_element( node, output )
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        if node.children.empty?
-          output << " " if @ie_hack
-          output << "/" 
-        else
-          output << ">"
-          node.children.each { |child|
-            write( child, output )
-          }
-          output << "</#{node.expanded_name}"
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        output << node.to_s()
-      end
-
-      def write_comment( node, output )
-        output << Comment::START
-        output << node.to_s
-        output << Comment::STOP
-      end
-
-      def write_cdata( node, output )
-        output << CData::START
-        output << node.to_s
-        output << CData::STOP
-      end
-
-      def write_instruction( node, output )
-        output << Instruction::START.sub(/\\/u, '')
-        output << node.target
-        output << ' '
-        output << node.content
-        output << Instruction::STOP.sub(/\\/u, '')
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/pretty.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/pretty.rb
deleted file mode 100644
index 22b6d85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/pretty.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-require 'rexml/formatters/default'
-
-module REXML
-  module Formatters
-    # Pretty-prints an XML document.  This destroys whitespace in text nodes
-    # and will insert carriage returns and indentations.
-    #
-    # TODO: Add an option to print attributes on new lines
-    class Pretty < Default
-
-      # If compact is set to true, then the formatter will attempt to use as
-      # little space as possible
-      attr_accessor :compact
-      # The width of a page.  Used for formatting text
-      attr_accessor :width
-
-      # Create a new pretty printer.
-      #
-      # output::
-      #   An object implementing '<<(String)', to which the output will be written.
-      # indentation::
-      #   An integer greater than 0.  The indentation of each level will be
-      #   this number of spaces.  If this is < 1, the behavior of this object
-      #   is undefined.  Defaults to 2.
-      # ie_hack::
-      #   If true, the printer will insert whitespace before closing empty
-      #   tags, thereby allowing Internet Explorer's feeble XML parser to
-      #   function. Defaults to false.
-      def initialize( indentation=2, ie_hack=false )
-        @indentation = indentation
-        @level = 0
-        @ie_hack = ie_hack
-        @width = 80
-      end
-
-      protected
-      def write_element(node, output)
-        output << ' '*@level
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        if node.children.empty?
-          if @ie_hack
-            output << " "
-          end
-          output << "/" 
-        else
-          output << ">"
-          # If compact and all children are text, and if the formatted output
-          # is less than the specified width, then try to print everything on
-          # one line
-          skip = false
-          if compact
-            if node.children.inject(true) {|s,c| s & c.kind_of?(Text)}
-              string = ""
-              old_level = @level
-              @level = 0
-              node.children.each { |child| write( child, string ) }
-              @level = old_level
-              if string.length < @width
-                output << string
-                skip = true
-              end
-            end
-          end
-          unless skip
-            output << "\n"
-            @level += @indentation
-            node.children.each { |child|
-              next if child.kind_of?(Text) and child.to_s.strip.length == 0
-              write( child, output )
-              output << "\n"
-            }
-            @level -= @indentation
-            output << ' '*@level
-          end
-          output << "</#{node.expanded_name}"
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        s = node.to_s()
-        s.gsub!(/\s/,' ')
-        s.squeeze!(" ")
-        s = wrap(s, 80- at level)
-        s = indent_text(s, @level, " ", true)
-        output << (' '*@level + s)
-      end
-
-      def write_comment( node, output)
-        output << ' ' * @level
-        super
-      end
-
-      def write_cdata( node, output)
-        output << ' ' * @level
-        super
-      end
-
-      def write_document( node, output )
-        # Ok, this is a bit odd.  All XML documents have an XML declaration,
-        # but it may not write itself if the user didn't specifically add it,
-        # either through the API or in the input document.  If it doesn't write
-        # itself, then we don't need a carriage return... which makes this
-        # logic more complex.
-        node.children.each { |child|
-          next if child == node.children[-1] and child.instance_of?(Text)
-          unless child == node.children[0] or child.instance_of?(Text) or
-            (child == node.children[1] and !node.children[0].writethis)
-            output << "\n"
-          end
-          write( child, output )
-        }
-      end
-
-      private
-      def indent_text(string, level=1, style="\t", indentfirstline=true)
-        return string if level < 0
-        string.gsub(/\n/, "\n#{style*level}")
-      end
-
-      def wrap(string, width)
-        # Recursivly wrap string at width.
-        return string if string.length <= width
-        place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
-        return string[0,place] + "\n" + wrap(string[place+1..-1], width)
-      end
-
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/transitive.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/transitive.rb
deleted file mode 100644
index 1d80f21..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/formatters/transitive.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rexml/formatters/pretty'
-
-module REXML
-  module Formatters
-    # The Transitive formatter writes an XML document that parses to an
-    # identical document as the source document.  This means that no extra
-    # whitespace nodes are inserted, and whitespace within text nodes is
-    # preserved.  Within these constraints, the document is pretty-printed,
-    # with whitespace inserted into the metadata to introduce formatting.
-    #
-    # Note that this is only useful if the original XML is not already
-    # formatted.  Since this formatter does not alter whitespace nodes, the
-    # results of formatting already formatted XML will be odd.
-    class Transitive < Default
-      def initialize( indentation=2 )
-        @indentation = indentation
-        @level = 0
-      end
-
-      protected
-      def write_element( node, output )
-        output << "<#{node.expanded_name}"
-
-        node.attributes.each_attribute do |attr|
-          output << " "
-          attr.write( output )
-        end unless node.attributes.empty?
-
-        output << "\n"
-        output << ' '*@level
-        if node.children.empty?
-          output << "/" 
-        else
-          output << ">"
-          # If compact and all children are text, and if the formatted output
-          # is less than the specified width, then try to print everything on
-          # one line
-          skip = false
-          @level += @indentation
-          node.children.each { |child|
-            write( child, output )
-          }
-          @level -= @indentation
-          output << "</#{node.expanded_name}"
-          output << "\n"
-          output << ' '*@level
-        end
-        output << ">"
-      end
-
-      def write_text( node, output )
-        output << node.to_s()
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/functions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/functions.rb
deleted file mode 100644
index 8293e9c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/functions.rb
+++ /dev/null
@@ -1,382 +0,0 @@
-module REXML
-  # If you add a method, keep in mind two things:
-  # (1) the first argument will always be a list of nodes from which to
-  # filter.  In the case of context methods (such as position), the function
-  # should return an array with a value for each child in the array.
-  # (2) all method calls from XML will have "-" replaced with "_".
-  # Therefore, in XML, "local-name()" is identical (and actually becomes)
-  # "local_name()"
-  module Functions
-    @@context = nil
-    @@namespace_context = {}
-    @@variables = {}
-
-    def Functions::namespace_context=(x) ; @@namespace_context=x ; end
-    def Functions::variables=(x) ; @@variables=x ; end
-    def Functions::namespace_context ; @@namespace_context ; end
-    def Functions::variables ; @@variables ; end
-
-    def Functions::context=(value); @@context = value; end
-
-    def Functions::text( )
-      if @@context[:node].node_type == :element
-        return @@context[:node].find_all{|n| n.node_type == :text}.collect{|n| n.value}
-      elsif @@context[:node].node_type == :text
-        return @@context[:node].value
-      else
-        return false
-      end
-    end
-
-    def Functions::last( )
-      @@context[:size]
-    end
-
-    def Functions::position( )
-      @@context[:index]
-    end
-
-    def Functions::count( node_set )
-      node_set.size
-    end
-
-    # Since REXML is non-validating, this method is not implemented as it
-    # requires a DTD
-    def Functions::id( object )
-    end
-
-    # UNTESTED
-    def Functions::local_name( node_set=nil )
-      get_namespace( node_set ) do |node|
-        return node.local_name 
-      end
-    end
-
-    def Functions::namespace_uri( node_set=nil )
-      get_namespace( node_set ) {|node| node.namespace}
-    end
-
-    def Functions::name( node_set=nil )
-      get_namespace( node_set ) do |node| 
-        node.expanded_name
-      end
-    end
-
-    # Helper method.
-    def Functions::get_namespace( node_set = nil )
-      if node_set == nil
-        yield @@context[:node] if defined? @@context[:node].namespace
-      else  
-        if node_set.respond_to? :each
-          node_set.each { |node| yield node if defined? node.namespace }
-        elsif node_set.respond_to? :namespace
-          yield node_set
-        end
-      end
-    end
-
-    # A node-set is converted to a string by returning the string-value of the
-    # node in the node-set that is first in document order. If the node-set is
-    # empty, an empty string is returned.
-    #
-    # A number is converted to a string as follows
-    #
-    # NaN is converted to the string NaN 
-    #
-    # positive zero is converted to the string 0 
-    #
-    # negative zero is converted to the string 0 
-    #
-    # positive infinity is converted to the string Infinity 
-    #
-    # negative infinity is converted to the string -Infinity 
-    #
-    # if the number is an integer, the number is represented in decimal form
-    # as a Number with no decimal point and no leading zeros, preceded by a
-    # minus sign (-) if the number is negative
-    #
-    # otherwise, the number is represented in decimal form as a Number
-    # including a decimal point with at least one digit before the decimal
-    # point and at least one digit after the decimal point, preceded by a
-    # minus sign (-) if the number is negative; there must be no leading zeros
-    # before the decimal point apart possibly from the one required digit
-    # immediately before the decimal point; beyond the one required digit
-    # after the decimal point there must be as many, but only as many, more
-    # digits as are needed to uniquely distinguish the number from all other
-    # IEEE 754 numeric values.
-    #
-    # The boolean false value is converted to the string false. The boolean
-    # true value is converted to the string true.
-    #
-    # An object of a type other than the four basic types is converted to a
-    # string in a way that is dependent on that type.
-    def Functions::string( object=nil )
-      #object = @context unless object
-      if object.instance_of? Array
-        string( object[0] )
-      elsif defined? object.node_type
-        if object.node_type == :attribute
-          object.value
-        elsif object.node_type == :element || object.node_type == :document
-          string_value(object)
-        else
-          object.to_s
-        end
-      elsif object.nil?
-        return ""
-      else
-        object.to_s
-      end
-    end
-
-    def Functions::string_value( o )
-      rv = ""
-      o.children.each { |e|
-        if e.node_type == :text
-          rv << e.to_s
-        elsif e.node_type == :element
-          rv << string_value( e )
-        end
-      }
-      rv
-    end
-
-    # UNTESTED
-    def Functions::concat( *objects )
-      objects.join
-    end
-
-    # Fixed by Mike Stok
-    def Functions::starts_with( string, test )
-      string(string).index(string(test)) == 0
-    end
-
-    # Fixed by Mike Stok
-    def Functions::contains( string, test )
-      string(string).include?(string(test))
-    end
-
-    # Kouhei fixed this 
-    def Functions::substring_before( string, test )
-      ruby_string = string(string)
-      ruby_index = ruby_string.index(string(test))
-      if ruby_index.nil?
-        ""
-      else
-        ruby_string[ 0...ruby_index ]
-      end
-    end
- 
-    # Kouhei fixed this too
-    def Functions::substring_after( string, test )
-      ruby_string = string(string)
-      test_string = string(test)
-      return $1 if ruby_string =~ /#{test}(.*)/
-      ""
-    end
-
-    # Take equal portions of Mike Stok and Sean Russell; mix 
-    # vigorously, and pour into a tall, chilled glass.  Serves 10,000.
-    def Functions::substring( string, start, length=nil )
-      ruby_string = string(string)
-      ruby_length = if length.nil? 
-                      ruby_string.length.to_f
-                    else
-                      number(length)
-                    end
-      ruby_start = number(start)
-
-      # Handle the special cases
-      return '' if (
-        ruby_length.nan? or 
-        ruby_start.nan? or
-        ruby_start.infinite?
-      )
-
-      infinite_length = ruby_length.infinite? == 1
-      ruby_length = ruby_string.length if infinite_length
-        
-      # Now, get the bounds.  The XPath bounds are 1..length; the ruby bounds 
-      # are 0..length.  Therefore, we have to offset the bounds by one.
-      ruby_start = ruby_start.round - 1
-      ruby_length = ruby_length.round
-
-      if ruby_start < 0
-       ruby_length += ruby_start unless infinite_length
-       ruby_start = 0
-      end
-      return '' if ruby_length <= 0
-      ruby_string[ruby_start,ruby_length]
-    end
-
-    # UNTESTED
-    def Functions::string_length( string )
-      string(string).length
-    end
-
-    # UNTESTED
-    def Functions::normalize_space( string=nil )
-      string = string(@@context[:node]) if string.nil?
-      if string.kind_of? Array
-        string.collect{|x| string.to_s.strip.gsub(/\s+/um, ' ') if string}
-      else
-        string.to_s.strip.gsub(/\s+/um, ' ')
-      end
-    end
-
-    # This is entirely Mike Stok's beast
-    def Functions::translate( string, tr1, tr2 )
-      from = string(tr1)
-      to = string(tr2)
-
-      # the map is our translation table.
-      #
-      # if a character occurs more than once in the
-      # from string then we ignore the second &
-      # subsequent mappings
-      #
-      # if a charactcer maps to nil then we delete it
-      # in the output.  This happens if the from
-      # string is longer than the to string
-      #
-      # there's nothing about - or ^ being special in
-      # http://www.w3.org/TR/xpath#function-translate
-      # so we don't build ranges or negated classes
-
-      map = Hash.new
-      0.upto(from.length - 1) { |pos|
-        from_char = from[pos]
-        unless map.has_key? from_char
-          map[from_char] = 
-          if pos < to.length
-            to[pos]
-          else
-            nil
-          end
-        end
-      }
-
-      string(string).unpack('U*').collect { |c|
-        if map.has_key? c then map[c] else c end
-      }.compact.pack('U*')
-    end
-
-    # UNTESTED
-    def Functions::boolean( object=nil )
-      if object.kind_of? String
-        if object =~ /\d+/u
-          return object.to_f != 0
-        else
-          return object.size > 0
-        end
-      elsif object.kind_of? Array
-        object = object.find{|x| x and true}
-      end
-      return object ? true : false
-    end
-
-    # UNTESTED
-    def Functions::not( object )
-      not boolean( object )
-    end
-
-    # UNTESTED
-    def Functions::true( )
-      true
-    end
-
-    # UNTESTED
-    def Functions::false(  )
-      false
-    end
-
-    # UNTESTED
-    def Functions::lang( language )
-      lang = false
-      node = @@context[:node]
-      attr = nil
-      until node.nil?
-        if node.node_type == :element
-          attr = node.attributes["xml:lang"]
-          unless attr.nil?
-            lang = compare_language(string(language), attr)
-            break
-          else
-          end
-        end
-        node = node.parent
-      end
-      lang
-    end
-
-    def Functions::compare_language lang1, lang2
-      lang2.downcase.index(lang1.downcase) == 0
-    end
-
-    # a string that consists of optional whitespace followed by an optional
-    # minus sign followed by a Number followed by whitespace is converted to
-    # the IEEE 754 number that is nearest (according to the IEEE 754
-    # round-to-nearest rule) to the mathematical value represented by the
-    # string; any other string is converted to NaN
-    #
-    # boolean true is converted to 1; boolean false is converted to 0
-    #
-    # a node-set is first converted to a string as if by a call to the string
-    # function and then converted in the same way as a string argument
-    #
-    # an object of a type other than the four basic types is converted to a
-    # number in a way that is dependent on that type
-    def Functions::number( object=nil )
-      object = @@context[:node] unless object
-      case object
-      when true
-        Float(1)
-      when false
-        Float(0)
-      when Array
-        number(string( object ))
-      when Numeric
-        object.to_f
-      else
-        str = string( object )
-        # If XPath ever gets scientific notation...
-        #if str =~ /^\s*-?(\d*\.?\d+|\d+\.)([Ee]\d*)?\s*$/
-        if str =~ /^\s*-?(\d*\.?\d+|\d+\.)\s*$/
-          str.to_f
-        else
-          (0.0 / 0.0)
-        end
-      end
-    end
-
-    def Functions::sum( nodes )
-      nodes = [nodes] unless nodes.kind_of? Array
-      nodes.inject(0) { |r,n| r += number(string(n)) }
-    end
-    
-    def Functions::floor( number )
-      number(number).floor
-    end
-
-    def Functions::ceiling( number )
-      number(number).ceil
-    end
-
-    def Functions::round( number )
-      begin
-        number(number).round
-      rescue FloatDomainError
-        number(number)
-      end
-    end
-
-    def Functions::processing_instruction( node )
-      node.node_type == :processing_instruction
-    end
-
-    def Functions::method_missing( id )
-      puts "METHOD MISSING #{id.id2name}"
-      XPath.match( @@context[:node], id.id2name )
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/instruction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/instruction.rb
deleted file mode 100644
index c16b894..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/instruction.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require "rexml/child"
-require "rexml/source"
-
-module REXML
-	# Represents an XML Instruction; IE, <? ... ?>
-	# TODO: Add parent arg (3rd arg) to constructor
-	class Instruction < Child
-		START = '<\?'
-		STOP = '\?>'
-
-		# target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
-		# content is everything else.
-		attr_accessor :target, :content
-
-		# Constructs a new Instruction
-		# @param target can be one of a number of things.  If String, then 
-		# the target of this instruction is set to this.  If an Instruction,
-		# then the Instruction is shallowly cloned (target and content are
-		# copied).  If a Source, then the source is scanned and parsed for
-		# an Instruction declaration.
-		# @param content Must be either a String, or a Parent.  Can only
-		# be a Parent if the target argument is a Source.  Otherwise, this
-		# String is set as the content of this instruction.
-		def initialize(target, content=nil)
-			if target.kind_of? String
-				super()
-				@target = target
-				@content = content
-			elsif target.kind_of? Instruction
-				super(content)
-				@target = target.target
-				@content = target.content
-			end
-			@content.strip! if @content
-		end
-
-		def clone
-			Instruction.new self
-		end
-		
-    # == DEPRECATED
-    # See the rexml/formatters package
-    #
-		def write writer, indent=-1, transitive=false, ie_hack=false
-      Kernel.warn( "#{self.class.name}.write is deprecated" )
-			indent(writer, indent)
-			writer << START.sub(/\\/u, '')
-			writer << @target
-			writer << ' '
-			writer << @content
-			writer << STOP.sub(/\\/u, '')
-		end
-
-		# @return true if other is an Instruction, and the content and target
-		# of the other matches the target and content of this object.
-		def ==( other )
-			other.kind_of? Instruction and
-			other.target == @target and
-			other.content == @content
-		end
-
-    def node_type
-      :processing_instruction
-    end
-
-    def inspect
-      "<?p-i #{target} ...?>"
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/light/node.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/light/node.rb
deleted file mode 100644
index 943ec5f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/light/node.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-require 'rexml/xmltokens'
-require 'rexml/light/node'
-
-# [ :element, parent, name, attributes, children* ]
-	# a = Node.new
-	# a << "B"		# => <a>B</a>
-	# a.b			# => <a>B<b/></a>
-	# a.b[1]			# => <a>B<b/><b/><a>
-	# a.b[1]["x"] = "y"	# => <a>B<b/><b x="y"/></a>
-	# a.b[0].c		# => <a>B<b><c/></b><b x="y"/></a>
-	# a.b.c << "D"		# => <a>B<b><c>D</c></b><b x="y"/></a>
-module REXML
-	module Light
-		# Represents a tagged XML element.  Elements are characterized by
-		# having children, attributes, and names, and can themselves be
-		# children.
-		class Node
-			NAMESPLIT = /^(?:(#{XMLTokens::NCNAME_STR}):)?(#{XMLTokens::NCNAME_STR})/u
-			PARENTS = [ :element, :document, :doctype ]
-			# Create a new element.
-			def initialize node=nil
-				@node = node
-				if node.kind_of? String
-					node = [ :text, node ]
-				elsif node.nil?
-					node = [ :document, nil, nil ]
-				elsif node[0] == :start_element
-					node[0] = :element
-				elsif node[0] == :start_doctype
-					node[0] = :doctype
-				elsif node[0] == :start_document
-					node[0] = :document
-				end
-			end
-
-			def size
-				if PARENTS.include? @node[0]
-					@node[-1].size
-				else
-					0
-				end
-			end
-
-			def each( &block )
-				size.times { |x| yield( at(x+4) ) }
-			end
-
-			def name
-				at(2)
-			end
-
-			def name=( name_str, ns=nil )
-				pfx = ''
-				pfx = "#{prefix(ns)}:" if ns
-				_old_put(2, "#{pfx}#{name_str}")
-			end
-
-			def parent=( node )
-				_old_put(1,node)
-			end
-
-			def local_name
-				namesplit
-				@name
-			end
-
-			def local_name=( name_str )
-				_old_put( 1, "#@prefix:#{name_str}" )
-			end
-
-			def prefix( namespace=nil )
-				prefix_of( self, namespace )
-			end
-
-			def namespace( prefix=prefix() )
-				namespace_of( self, prefix )
-			end
-
-			def namespace=( namespace )
-				@prefix = prefix( namespace )
-				pfx = ''
-				pfx = "#@prefix:" if @prefix.size > 0
-				_old_put(1, "#{pfx}#@name")
-			end
-
-			def []( reference, ns=nil )
-				if reference.kind_of? String
-					pfx = ''
-					pfx = "#{prefix(ns)}:" if ns
-					at(3)["#{pfx}#{reference}"]
-				elsif reference.kind_of? Range
-					_old_get( Range.new(4+reference.begin, reference.end, reference.exclude_end?) )
-				else
-					_old_get( 4+reference )
-				end
-			end
-
-			def =~( path )
-				XPath.match( self, path )
-			end
-
-			# Doesn't handle namespaces yet
-			def []=( reference, ns, value=nil )
-				if reference.kind_of? String
-					value = ns unless value
-					at( 3 )[reference] = value
-				elsif reference.kind_of? Range
-					_old_put( Range.new(3+reference.begin, reference.end, reference.exclude_end?), ns )
-				else
-					if value
-						_old_put( 4+reference, ns, value )
-					else
-						_old_put( 4+reference, ns )
-					end
-				end
-			end
-
-			# Append a child to this element, optionally under a provided namespace.
-			# The namespace argument is ignored if the element argument is an Element
-			# object.  Otherwise, the element argument is a string, the namespace (if
-			# provided) is the namespace the element is created in.
-			def << element
-				if node_type() == :text
-					at(-1) << element
-				else
-					newnode = Node.new( element )
-					newnode.parent = self
-					self.push( newnode )
-				end
-				at(-1)
-			end
-
-			def node_type
-				_old_get(0)
-			end
-
-			def text=( foo )
-				replace = at(4).kind_of?(String)? 1 : 0
-				self._old_put(4,replace, normalizefoo)
-			end
-
-			def root
-				context = self
-				context = context.at(1) while context.at(1)
-			end
-
-			def has_name?( name, namespace = '' )
-				at(3) == name and namespace() == namespace
-			end
-
-			def children
-				self
-			end
-
-			def parent
-				at(1)
-			end
-
-			def to_s
-
-			end
-
-			private
-
-			def namesplit
-				return if @name.defined?
-				at(2) =~ NAMESPLIT
-				@prefix = '' || $1
-				@name = $2
-			end
-
-			def namespace_of( node, prefix=nil )
-				if not prefix
-					name = at(2)
-					name =~ NAMESPLIT
-					prefix = $1
-				end
-				to_find = 'xmlns'
-				to_find = "xmlns:#{prefix}" if not prefix.nil?
-				ns = at(3)[ to_find ]
-				ns ? ns : namespace_of( @node[0], prefix )
-			end
-
-			def prefix_of( node, namespace=nil )
-				if not namespace
-					name = node.name
-					name =~ NAMESPLIT
-					$1
-				else
-					ns = at(3).find { |k,v| v == namespace }
-					ns ? ns : prefix_of( node.parent, namespace )
-				end
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/namespace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/namespace.rb
deleted file mode 100644
index 3e87905..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/namespace.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'rexml/xmltokens'
-
-module REXML
-	# Adds named attributes to an object.
-	module Namespace
-		# The name of the object, valid if set
-		attr_reader :name, :expanded_name
-		# The expanded name of the object, valid if name is set
-		attr_accessor :prefix
-		include XMLTokens
-		NAMESPLIT = /^(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})/u
-
-		# Sets the name and the expanded name
-		def name=( name )
-			@expanded_name = name
-			name =~ NAMESPLIT
-			if $1
-				@prefix = $1
-			else
-				@prefix = ""
-				@namespace = ""
-			end
-			@name = $2
-		end
-
-		# Compares names optionally WITH namespaces
-		def has_name?( other, ns=nil )
-			if ns
-				return (namespace() == ns and name() == other)
-			elsif other.include? ":"
-				return fully_expanded_name == other
-			else
-				return name == other
-			end
-		end
-
-		alias :local_name :name
-
-		# Fully expand the name, even if the prefix wasn't specified in the
-		# source file.
-		def fully_expanded_name
-			ns = prefix
-			return "#{ns}:#@name" if ns.size > 0 
-			return @name
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/node.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/node.rb
deleted file mode 100644
index 9780376..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/node.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require "rexml/parseexception"
-require "rexml/formatters/pretty"
-require "rexml/formatters/default"
-
-module REXML
-	# Represents a node in the tree.  Nodes are never encountered except as
-	# superclasses of other objects.  Nodes have siblings.
-	module Node
-		# @return the next sibling (nil if unset)
-		def next_sibling_node
-			return nil if @parent.nil?
-			@parent[ @parent.index(self) + 1 ]
-		end
-
-		# @return the previous sibling (nil if unset)
-		def previous_sibling_node
-			return nil if @parent.nil?
-			ind = @parent.index(self)
-			return nil if ind == 0
-			@parent[ ind - 1 ]
-		end
-
-    # indent::
-    #   *DEPRECATED* This parameter is now ignored.  See the formatters in the
-    #   REXML::Formatters package for changing the output style.
-		def to_s indent=nil
-      unless indent.nil?
-        Kernel.warn( "#{self.class.name}.to_s(indent) parameter is deprecated" )
-        f = REXML::Formatters::Pretty.new( indent )
-        f.write( self, rv, indent )
-      else
-        f = REXML::Formatters::Default.new
-        f.write( self, rv = "" )
-      end
-      return rv
-		end
-
-		def indent to, ind
- 			if @parent and @parent.context and not @parent.context[:indentstyle].nil? then
- 				indentstyle = @parent.context[:indentstyle]
- 			else
- 				indentstyle = '  '
- 			end
- 			to << indentstyle*ind unless ind<1
-		end
-
-		def parent?
-			false;
-		end
-
-
-		# Visit all subnodes of +self+ recursively
-		def each_recursive(&block) # :yields: node
-			self.elements.each {|node|
-				block.call(node)
-				node.each_recursive(&block)
-			}
-		end
-
-		# Find (and return) first subnode (recursively) for which the block 
-    # evaluates to true. Returns +nil+ if none was found.
-		def find_first_recursive(&block) # :yields: node
-      each_recursive {|node|
-        return node if block.call(node)
-      }
-      return nil
-    end
-
-    # Returns the position that +self+ holds in its parent's array, indexed
-    # from 1.
-    def index_in_parent
-      parent.index(self)+1
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/output.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/output.rb
deleted file mode 100644
index be4d23d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/output.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'rexml/encoding'
-
-module REXML
-	class Output
-		include Encoding
-    
-    attr_reader :encoding
-
-		def initialize real_IO, encd="iso-8859-1"
-			@output = real_IO
-			self.encoding = encd
-
-			@to_utf = encd == UTF_8 ? false : true
-		end
-
-		def <<( content )
-			@output << (@to_utf ? self.encode(content) : content)
-		end
-
-    def to_s
-      "Output[#{encoding}]"
-    end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parent.rb
deleted file mode 100644
index a20aaae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parent.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-require "rexml/child"
-
-module REXML
-  # A parent has children, and has methods for accessing them.  The Parent
-  # class is never encountered except as the superclass for some other
-  # object.
-  class Parent < Child
-    include Enumerable
-    
-    # Constructor
-    # @param parent if supplied, will be set as the parent of this object
-    def initialize parent=nil
-      super(parent)
-      @children = []
-    end
-    
-    def add( object )
-      #puts "PARENT GOTS #{size} CHILDREN"
-      object.parent = self
-      @children << object
-      #puts "PARENT NOW GOTS #{size} CHILDREN"
-      object
-    end
-    
-    alias :push :add
-    alias :<< :push
-    
-    def unshift( object )
-      object.parent = self
-      @children.unshift object
-    end
-    
-    def delete( object )
-      found = false
-      @children.delete_if {|c| c.equal?(object) and found = true }
-      object.parent = nil if found
-    end
-    
-    def each(&block)
-      @children.each(&block)
-    end
-    
-    def delete_if( &block )
-      @children.delete_if(&block)
-    end
-    
-    def delete_at( index )
-      @children.delete_at index
-    end
-    
-    def each_index( &block )
-      @children.each_index(&block)
-    end
-    
-    # Fetches a child at a given index
-    # @param index the Integer index of the child to fetch
-    def []( index )
-      @children[index]
-    end
-    
-    alias :each_child :each
-    
-    
-    
-    # Set an index entry.  See Array.[]=
-    # @param index the index of the element to set
-    # @param opt either the object to set, or an Integer length
-    # @param child if opt is an Integer, this is the child to set
-    # @return the parent (self)
-    def []=( *args )
-      args[-1].parent = self
-      @children[*args[0..-2]] = args[-1]
-    end
-    
-    # Inserts an child before another child
-    # @param child1 this is either an xpath or an Element.  If an Element,
-    # child2 will be inserted before child1 in the child list of the parent.
-    # If an xpath, child2 will be inserted before the first child to match
-    # the xpath.
-    # @param child2 the child to insert
-    # @return the parent (self)
-    def insert_before( child1, child2 )
-      if child1.kind_of? String
-        child1 = XPath.first( self, child1 )
-        child1.parent.insert_before child1, child2
-      else
-        ind = index(child1)
-        child2.parent.delete(child2) if child2.parent
-        @children[ind,0] = child2
-        child2.parent = self
-      end
-      self
-    end
-    
-    # Inserts an child after another child
-    # @param child1 this is either an xpath or an Element.  If an Element,
-    # child2 will be inserted after child1 in the child list of the parent.
-    # If an xpath, child2 will be inserted after the first child to match
-    # the xpath.
-    # @param child2 the child to insert
-    # @return the parent (self)
-    def insert_after( child1, child2 )
-      if child1.kind_of? String
-        child1 = XPath.first( self, child1 )
-        child1.parent.insert_after child1, child2
-      else
-        ind = index(child1)+1
-        child2.parent.delete(child2) if child2.parent
-        @children[ind,0] = child2
-        child2.parent = self
-      end
-      self
-    end
-    
-    def to_a
-      @children.dup
-    end
-    
-    # Fetches the index of a given child
-    # @param child the child to get the index of
-    # @return the index of the child, or nil if the object is not a child
-    # of this parent.
-    def index( child )
-      count = -1
-      @children.find { |i| count += 1 ; i.hash == child.hash }
-      count
-    end
-    
-    # @return the number of children of this parent
-    def size
-      @children.size
-    end
-    
-    alias :length :size
-    
-    # Replaces one child with another, making sure the nodelist is correct
-    # @param to_replace the child to replace (must be a Child)
-    # @param replacement the child to insert into the nodelist (must be a 
-    # Child)
-    def replace_child( to_replace, replacement )
-      @children.map! {|c| c.equal?( to_replace ) ? replacement : c }
-      to_replace.parent = nil
-      replacement.parent = self
-    end
-    
-    # Deeply clones this object.  This creates a complete duplicate of this
-    # Parent, including all descendants.
-    def deep_clone
-      cl = clone()
-      each do |child|
-        if child.kind_of? Parent
-          cl << child.deep_clone
-        else
-          cl << child.clone
-        end
-      end
-      cl
-    end
-    
-    alias :children :to_a
-    
-    def parent?
-      true
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parseexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parseexception.rb
deleted file mode 100644
index feb7a7e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parseexception.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module REXML
-  class ParseException < RuntimeError
-    attr_accessor :source, :parser, :continued_exception
-
-    def initialize( message, source=nil, parser=nil, exception=nil )
-      super(message)
-      @source = source
-      @parser = parser
-      @continued_exception = exception
-    end
-
-    def to_s
-      # Quote the original exception, if there was one
-      if @continued_exception
-        err = @continued_exception.inspect
-        err << "\n"
-        err << @continued_exception.backtrace.join("\n")
-        err << "\n...\n"
-      else
-        err = ""
-      end
-
-      # Get the stack trace and error message
-      err << super
-
-      # Add contextual information
-      if @source
-        err << "\nLine: #{line}\n"
-        err << "Position: #{position}\n"
-        err << "Last 80 unconsumed characters:\n"
-        err << @source.buffer[0..80].gsub(/\n/, ' ')
-      end
-      
-      err
-    end
-
-    def position
-      @source.current_line[0] if @source and defined? @source.current_line and
-      @source.current_line
-    end
-
-    def line
-      @source.current_line[2] if @source and defined? @source.current_line and 
-      @source.current_line
-    end
-
-    def context
-      @source.current_line
-    end
-  end  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/baseparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/baseparser.rb
deleted file mode 100644
index fc2354a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/baseparser.rb
+++ /dev/null
@@ -1,503 +0,0 @@
-require 'rexml/parseexception'
-require 'rexml/undefinednamespaceexception'
-require 'rexml/source'
-require 'set'
-
-module REXML
-  module Parsers
-    # = Using the Pull Parser
-    # <em>This API is experimental, and subject to change.</em>
-    #  parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    puts res[1]['att'] if res.start_tag? and res[0] == 'b'
-    #  end
-    # See the PullEvent class for information on the content of the results.
-    # The data is identical to the arguments passed for the various events to
-    # the StreamListener API.
-    #
-    # Notice that:
-    #  parser = PullParser.new( "<a>BAD DOCUMENT" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    raise res[1] if res.error?
-    #  end
-    #
-    # Nat Price gave me some good ideas for the API.
-    class BaseParser
-      NCNAME_STR= '[\w:][\-\w\d.]*'
-      NAME_STR= "(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})"
-      UNAME_STR= "(?:#{NCNAME_STR}:)?#{NCNAME_STR}"
-
-      NAMECHAR = '[\-\w\d\.:]'
-      NAME = "([\\w:]#{NAMECHAR}*)"
-      NMTOKEN = "(?:#{NAMECHAR})+"
-      NMTOKENS = "#{NMTOKEN}(\\s+#{NMTOKEN})*"
-      REFERENCE = "(?:&#{NAME};|&#\\d+;|&#x[0-9a-fA-F]+;)"
-      REFERENCE_RE = /#{REFERENCE}/
-
-      DOCTYPE_START = /\A\s*<!DOCTYPE\s/um
-      DOCTYPE_PATTERN = /\s*<!DOCTYPE\s+(.*?)(\[|>)/um
-      ATTRIBUTE_PATTERN = /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\4/um
-      COMMENT_START = /\A<!--/u
-      COMMENT_PATTERN = /<!--(.*?)-->/um
-      CDATA_START = /\A<!\[CDATA\[/u
-      CDATA_END = /^\s*\]\s*>/um
-      CDATA_PATTERN = /<!\[CDATA\[(.*?)\]\]>/um
-      XMLDECL_START = /\A<\?xml\s/u;
-      XMLDECL_PATTERN = /<\?xml\s+(.*?)\?>/um
-      INSTRUCTION_START = /\A<\?/u
-      INSTRUCTION_PATTERN = /<\?(.*?)(\s+.*?)?\?>/um
-      TAG_MATCH = /^<((?>#{NAME_STR}))\s*((?>\s+#{UNAME_STR}\s*=\s*(["']).*?\5)*)\s*(\/)?>/um
-      CLOSE_MATCH = /^\s*<\/(#{NAME_STR})\s*>/um
-
-      VERSION = /\bversion\s*=\s*["'](.*?)['"]/um
-      ENCODING = /\bencoding\s*=\s*["'](.*?)['"]/um
-      STANDALONE = /\bstandalone\s*=\s["'](.*?)['"]/um
-
-      ENTITY_START = /^\s*<!ENTITY/
-      IDENTITY = /^([!\*\w\-]+)(\s+#{NCNAME_STR})?(\s+["'](.*?)['"])?(\s+['"](.*?)["'])?/u
-      ELEMENTDECL_START = /^\s*<!ELEMENT/um
-      ELEMENTDECL_PATTERN = /^\s*(<!ELEMENT.*?)>/um
-      SYSTEMENTITY = /^\s*(%.*?;)\s*$/um
-      ENUMERATION = "\\(\\s*#{NMTOKEN}(?:\\s*\\|\\s*#{NMTOKEN})*\\s*\\)"
-      NOTATIONTYPE = "NOTATION\\s+\\(\\s*#{NAME}(?:\\s*\\|\\s*#{NAME})*\\s*\\)"
-      ENUMERATEDTYPE = "(?:(?:#{NOTATIONTYPE})|(?:#{ENUMERATION}))"
-      ATTTYPE = "(CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS|#{ENUMERATEDTYPE})"
-      ATTVALUE = "(?:\"((?:[^<&\"]|#{REFERENCE})*)\")|(?:'((?:[^<&']|#{REFERENCE})*)')"
-      DEFAULTDECL = "(#REQUIRED|#IMPLIED|(?:(#FIXED\\s+)?#{ATTVALUE}))"
-      ATTDEF = "\\s+#{NAME}\\s+#{ATTTYPE}\\s+#{DEFAULTDECL}"
-      ATTDEF_RE = /#{ATTDEF}/
-      ATTLISTDECL_START = /^\s*<!ATTLIST/um
-      ATTLISTDECL_PATTERN = /^\s*<!ATTLIST\s+#{NAME}(?:#{ATTDEF})*\s*>/um
-      NOTATIONDECL_START = /^\s*<!NOTATION/um
-      PUBLIC = /^\s*<!NOTATION\s+(\w[\-\w]*)\s+(PUBLIC)\s+(["'])(.*?)\3(?:\s+(["'])(.*?)\5)?\s*>/um
-      SYSTEM = /^\s*<!NOTATION\s+(\w[\-\w]*)\s+(SYSTEM)\s+(["'])(.*?)\3\s*>/um
-
-      TEXT_PATTERN = /\A([^<]*)/um
-
-      # Entity constants
-      PUBIDCHAR = "\x20\x0D\x0Aa-zA-Z0-9\\-()+,./:=?;!*@$_%#"
-      SYSTEMLITERAL = %Q{((?:"[^"]*")|(?:'[^']*'))}
-      PUBIDLITERAL = %Q{("[#{PUBIDCHAR}']*"|'[#{PUBIDCHAR}]*')}
-      EXTERNALID = "(?:(?:(SYSTEM)\\s+#{SYSTEMLITERAL})|(?:(PUBLIC)\\s+#{PUBIDLITERAL}\\s+#{SYSTEMLITERAL}))"
-      NDATADECL = "\\s+NDATA\\s+#{NAME}"
-      PEREFERENCE = "%#{NAME};"
-      ENTITYVALUE = %Q{((?:"(?:[^%&"]|#{PEREFERENCE}|#{REFERENCE})*")|(?:'([^%&']|#{PEREFERENCE}|#{REFERENCE})*'))}
-      PEDEF = "(?:#{ENTITYVALUE}|#{EXTERNALID})"
-      ENTITYDEF = "(?:#{ENTITYVALUE}|(?:#{EXTERNALID}(#{NDATADECL})?))"
-      PEDECL = "<!ENTITY\\s+(%)\\s+#{NAME}\\s+#{PEDEF}\\s*>"
-      GEDECL = "<!ENTITY\\s+#{NAME}\\s+#{ENTITYDEF}\\s*>"
-      ENTITYDECL = /\s*(?:#{GEDECL})|(?:#{PEDECL})/um
-
-      EREFERENCE = /&(?!#{NAME};)/
-
-      DEFAULT_ENTITIES = { 
-        'gt' => [/>/, '>', '>', />/], 
-        'lt' => [/</, '<', '<', /</], 
-        'quot' => [/"/, '"', '"', /"/], 
-        "apos" => [/'/, "'", "'", /'/] 
-      }
-
-
-      ######################################################################
-      # These are patterns to identify common markup errors, to make the
-      # error messages more informative.
-      ######################################################################
-      MISSING_ATTRIBUTE_QUOTES = /^<#{NAME_STR}\s+#{NAME_STR}\s*=\s*[^"']/um
-
-      def initialize( source )
-        self.stream = source
-      end
-
-      def add_listener( listener )
-        if !defined?(@listeners) or !@listeners
-          @listeners = []
-          instance_eval <<-EOL
-            alias :_old_pull :pull
-            def pull
-              event = _old_pull
-              @listeners.each do |listener|
-                listener.receive event
-              end
-              event
-            end
-          EOL
-        end
-        @listeners << listener
-      end
-
-      attr_reader :source
-
-      def stream=( source )
-        @source = SourceFactory.create_from( source )
-        @closed = nil
-        @document_status = nil
-        @tags = []
-        @stack = []
-        @entities = []
-        @nsstack = []
-      end
-
-      def position
-        if @source.respond_to? :position
-          @source.position
-        else
-          # FIXME
-          0
-        end
-      end
-
-      # Returns true if there are no more events
-      def empty?
-        return (@source.empty? and @stack.empty?)
-      end
-
-      # Returns true if there are more events.  Synonymous with !empty?
-      def has_next?
-        return !(@source.empty? and @stack.empty?)
-      end
-
-      # Push an event back on the head of the stream.  This method
-      # has (theoretically) infinite depth.
-      def unshift token
-        @stack.unshift(token)
-      end
-
-      # Peek at the +depth+ event in the stack.  The first element on the stack
-      # is at depth 0.  If +depth+ is -1, will parse to the end of the input
-      # stream and return the last event, which is always :end_document.
-      # Be aware that this causes the stream to be parsed up to the +depth+ 
-      # event, so you can effectively pre-parse the entire document (pull the 
-      # entire thing into memory) using this method.  
-      def peek depth=0
-        raise %Q[Illegal argument "#{depth}"] if depth < -1
-        temp = []
-        if depth == -1
-          temp.push(pull()) until empty?
-        else
-          while @stack.size+temp.size < depth+1
-            temp.push(pull())
-          end
-        end
-        @stack += temp if temp.size > 0
-        @stack[depth]
-      end
-
-      # Returns the next event.  This is a +PullEvent+ object.
-      def pull
-        if @closed
-          x, @closed = @closed, nil
-          return [ :end_element, x ]
-        end
-        return [ :end_document ] if empty?
-        return @stack.shift if @stack.size > 0
-        #STDERR.puts @source.encoding
-        @source.read if @source.buffer.size<2
-        #STDERR.puts "BUFFER = #{@source.buffer.inspect}"
-        if @document_status == nil
-          #@source.consume( /^\s*/um )
-          word = @source.match( /^((?:\s+)|(?:<[^>]*>))/um )
-          word = word[1] unless word.nil?
-          #STDERR.puts "WORD = #{word.inspect}"
-          case word
-          when COMMENT_START
-            return [ :comment, @source.match( COMMENT_PATTERN, true )[1] ]
-          when XMLDECL_START
-            #STDERR.puts "XMLDECL"
-            results = @source.match( XMLDECL_PATTERN, true )[1]
-            version = VERSION.match( results )
-            version = version[1] unless version.nil?
-            encoding = ENCODING.match(results)
-            encoding = encoding[1] unless encoding.nil?
-            @source.encoding = encoding
-            standalone = STANDALONE.match(results)
-            standalone = standalone[1] unless standalone.nil?
-            return [ :xmldecl, version, encoding, standalone ]
-          when INSTRUCTION_START
-            return [ :processing_instruction, *@source.match(INSTRUCTION_PATTERN, true)[1,2] ]
-          when DOCTYPE_START
-            md = @source.match( DOCTYPE_PATTERN, true )
-            @nsstack.unshift(curr_ns=Set.new)
-            identity = md[1]
-            close = md[2]
-            identity =~ IDENTITY
-            name = $1
-            raise REXML::ParseException.new("DOCTYPE is missing a name") if name.nil?
-            pub_sys = $2.nil? ? nil : $2.strip
-            long_name = $4.nil? ? nil : $4.strip
-            uri = $6.nil? ? nil : $6.strip
-            args = [ :start_doctype, name, pub_sys, long_name, uri ]
-            if close == ">"
-              @document_status = :after_doctype
-              @source.read if @source.buffer.size<2
-              md = @source.match(/^\s*/um, true)
-              @stack << [ :end_doctype ]
-            else
-              @document_status = :in_doctype
-            end
-            return args
-          when /^\s+/
-          else
-            @document_status = :after_doctype
-            @source.read if @source.buffer.size<2
-            md = @source.match(/\s*/um, true)
-          end
-        end
-        if @document_status == :in_doctype
-          md = @source.match(/\s*(.*?>)/um)
-          case md[1]
-          when SYSTEMENTITY 
-            match = @source.match( SYSTEMENTITY, true )[1]
-            return [ :externalentity, match ]
-
-          when ELEMENTDECL_START
-            return [ :elementdecl, @source.match( ELEMENTDECL_PATTERN, true )[1] ]
-
-          when ENTITY_START
-            match = @source.match( ENTITYDECL, true ).to_a.compact
-            match[0] = :entitydecl
-            ref = false
-            if match[1] == '%'
-              ref = true
-              match.delete_at 1
-            end
-            # Now we have to sort out what kind of entity reference this is
-            if match[2] == 'SYSTEM'
-              # External reference
-              match[3] = match[3][1..-2] # PUBID
-              match.delete_at(4) if match.size > 4 # Chop out NDATA decl
-              # match is [ :entity, name, SYSTEM, pubid(, ndata)? ]
-            elsif match[2] == 'PUBLIC'
-              # External reference
-              match[3] = match[3][1..-2] # PUBID
-              match[4] = match[4][1..-2] # HREF
-              # match is [ :entity, name, PUBLIC, pubid, href ]
-            else
-              match[2] = match[2][1..-2]
-              match.pop if match.size == 4
-              # match is [ :entity, name, value ]
-            end
-            match << '%' if ref
-            return match
-          when ATTLISTDECL_START
-            md = @source.match( ATTLISTDECL_PATTERN, true )
-            raise REXML::ParseException.new( "Bad ATTLIST declaration!", @source ) if md.nil?
-            element = md[1]
-            contents = md[0]
-
-            pairs = {}
-            values = md[0].scan( ATTDEF_RE )
-            values.each do |attdef|
-              unless attdef[3] == "#IMPLIED"
-                attdef.compact!
-                val = attdef[3]
-                val = attdef[4] if val == "#FIXED "
-                pairs[attdef[0]] = val
-                if attdef[0] =~ /^xmlns:(.*)/
-                  @nsstack[0] << $1
-                end
-              end
-            end
-            return [ :attlistdecl, element, pairs, contents ]
-          when NOTATIONDECL_START
-            md = nil
-            if @source.match( PUBLIC )
-              md = @source.match( PUBLIC, true )
-              vals = [md[1],md[2],md[4],md[6]]
-            elsif @source.match( SYSTEM )
-              md = @source.match( SYSTEM, true )
-              vals = [md[1],md[2],nil,md[4]]
-            else
-              raise REXML::ParseException.new( "error parsing notation: no matching pattern", @source )
-            end
-            return [ :notationdecl, *vals ]
-          when CDATA_END
-            @document_status = :after_doctype
-            @source.match( CDATA_END, true )
-            return [ :end_doctype ]
-          end
-        end
-        begin
-          if @source.buffer[0] == ?<
-            if @source.buffer[1] == ?/
-              @nsstack.shift
-              last_tag = @tags.pop
-              #md = @source.match_to_consume( '>', CLOSE_MATCH)
-              md = @source.match( CLOSE_MATCH, true )
-              raise REXML::ParseException.new( "Missing end tag for "+
-                "'#{last_tag}' (got \"#{md[1]}\")", 
-                @source) unless last_tag == md[1]
-              return [ :end_element, last_tag ]
-            elsif @source.buffer[1] == ?!
-              md = @source.match(/\A(\s*[^>]*>)/um)
-              #STDERR.puts "SOURCE BUFFER = #{source.buffer}, #{source.buffer.size}"
-              raise REXML::ParseException.new("Malformed node", @source) unless md
-              if md[0][2] == ?-
-                md = @source.match( COMMENT_PATTERN, true )
-                return [ :comment, md[1] ] if md
-              else
-                md = @source.match( CDATA_PATTERN, true )
-                return [ :cdata, md[1] ] if md
-              end
-              raise REXML::ParseException.new( "Declarations can only occur "+
-                "in the doctype declaration.", @source)
-            elsif @source.buffer[1] == ??
-              md = @source.match( INSTRUCTION_PATTERN, true )
-              return [ :processing_instruction, md[1], md[2] ] if md
-              raise REXML::ParseException.new( "Bad instruction declaration",
-                @source)
-            else
-              # Get the next tag
-              md = @source.match(TAG_MATCH, true)
-              unless md
-                # Check for missing attribute quotes
-                raise REXML::ParseException.new("missing attribute quote", @source) if @source.match(MISSING_ATTRIBUTE_QUOTES )
-                raise REXML::ParseException.new("malformed XML: missing tag start", @source) 
-              end
-              attributes = {}
-              prefixes = Set.new
-              prefixes << md[2] if md[2]
-              @nsstack.unshift(curr_ns=Set.new)
-              if md[4].size > 0
-                attrs = md[4].scan( ATTRIBUTE_PATTERN )
-                raise REXML::ParseException.new( "error parsing attributes: [#{attrs.join ', '}], excess = \"#$'\"", @source) if $' and $'.strip.size > 0
-                attrs.each { |a,b,c,d,e| 
-                  if b == "xmlns"
-                    if c == "xml"
-                      if d != "http://www.w3.org/XML/1998/namespace"
-                        msg = "The 'xml' prefix must not be bound to any other namespace "+
-                        "(http://www.w3.org/TR/REC-xml-names/#ns-decl)"
-                        raise REXML::ParseException.new( msg, @source, self )
-                      end
-                    elsif c == "xmlns"
-                      msg = "The 'xmlns' prefix must not be declared "+
-                      "(http://www.w3.org/TR/REC-xml-names/#ns-decl)"
-                      raise REXML::ParseException.new( msg, @source, self)
-                    end
-                    curr_ns << c
-                  elsif b
-                    prefixes << b unless b == "xml"
-                  end
-                  attributes[a] = e 
-                }
-              end
-        
-              # Verify that all of the prefixes have been defined
-              for prefix in prefixes
-                unless @nsstack.find{|k| k.member?(prefix)}
-                  raise UndefinedNamespaceException.new(prefix, at source,self)
-                end
-              end
-
-              if md[6]
-                @closed = md[1]
-                @nsstack.shift
-              else
-                @tags.push( md[1] )
-              end
-              return [ :start_element, md[1], attributes ]
-            end
-          else
-            md = @source.match( TEXT_PATTERN, true )
-            if md[0].length == 0
-              @source.match( /(\s+)/, true )
-            end
-            #STDERR.puts "GOT #{md[1].inspect}" unless md[0].length == 0
-            #return [ :text, "" ] if md[0].length == 0
-            # unnormalized = Text::unnormalize( md[1], self )
-            # return PullEvent.new( :text, md[1], unnormalized )
-            return [ :text, md[1] ]
-          end
-        rescue REXML::UndefinedNamespaceException
-          raise
-        rescue REXML::ParseException
-          raise
-        rescue Exception, NameError => error
-          raise REXML::ParseException.new( "Exception parsing",
-            @source, self, (error ? error : $!) )
-        end
-        return [ :dummy ]
-      end
-
-      def entity( reference, entities )
-        value = nil
-        value = entities[ reference ] if entities
-        if not value
-          value = DEFAULT_ENTITIES[ reference ]
-          value = value[2] if value
-        end
-        unnormalize( value, entities ) if value
-      end
-
-      # Escapes all possible entities
-      def normalize( input, entities=nil, entity_filter=nil )
-        copy = input.clone
-        # Doing it like this rather than in a loop improves the speed
-        copy.gsub!( EREFERENCE, '&' )
-        entities.each do |key, value|
-          copy.gsub!( value, "&#{key};" ) unless entity_filter and 
-                                      entity_filter.include?(entity)
-        end if entities
-        copy.gsub!( EREFERENCE, '&' )
-        DEFAULT_ENTITIES.each do |key, value|
-          copy.gsub!( value[3], value[1] )
-        end
-        copy
-      end
-
-      # Unescapes all possible entities
-      def unnormalize( string, entities=nil, filter=nil )
-        rv = string.clone
-        rv.gsub!( /\r\n?/, "\n" )
-        matches = rv.scan( REFERENCE_RE )
-        return rv if matches.size == 0
-        rv.gsub!( /&#0*((?:\d+)|(?:x[a-fA-F0-9]+));/ ) {|m|
-          m=$1
-          m = "0#{m}" if m[0] == ?x
-          [Integer(m)].pack('U*')
-        }
-        matches.collect!{|x|x[0]}.compact!
-        if matches.size > 0
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = entity( entity_reference, entities )
-              if entity_value
-                re = /&#{entity_reference};/
-                rv.gsub!( re, entity_value )
-              end
-            end
-          end
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              er = DEFAULT_ENTITIES[entity_reference]
-              rv.gsub!( er[0], er[2] ) if er
-            end
-          end
-          rv.gsub!( /&/, '&' )
-        end
-        rv
-      end
-    end
-  end
-end
-
-=begin
-  case event[0]
-  when :start_element
-  when :text
-  when :end_element
-  when :processing_instruction
-  when :cdata
-  when :comment
-  when :xmldecl
-  when :start_doctype
-  when :end_doctype
-  when :externalentity
-  when :elementdecl
-  when :entity
-  when :attlistdecl
-  when :notationdecl
-  when :end_doctype
-  end
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/lightparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/lightparser.rb
deleted file mode 100644
index 0f35034..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/lightparser.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rexml/parsers/streamparser'
-require 'rexml/parsers/baseparser'
-require 'rexml/light/node'
-
-module REXML
-	module Parsers
-		class LightParser
-			def initialize stream
-				@stream = stream
-				@parser = REXML::Parsers::BaseParser.new( stream )
-			end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def rewind
-        @stream.rewind
-        @parser.stream = @stream
-      end
-
-			def parse
-				root = context = [ :document ]
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						break
-					when :end_doctype
-						context = context[1]
-					when :start_element, :start_doctype
-						new_node = event
-						context << new_node
-						new_node[1,0] = [context]
-						context = new_node
-					when :end_element, :end_doctype
-						context = context[1]
-					else
-						new_node = event
-						context << new_node
-						new_node[1,0] = [context]
-					end
-				end
-				root
-			end
-		end
-
-		# An element is an array.  The array contains:
-		#  0			The parent element
-		#  1			The tag name
-		#  2			A hash of attributes
-		#  3..-1	The child elements
-		# An element is an array of size > 3
-		# Text is a String
-		# PIs are [ :processing_instruction, target, data ]
-		# Comments are [ :comment, data ]
-		# DocTypes are DocType structs
-		# The root is an array with XMLDecls, Text, DocType, Array, Text
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/pullparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/pullparser.rb
deleted file mode 100644
index 36dc716..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/pullparser.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-require 'forwardable'
-
-require 'rexml/parseexception'
-require 'rexml/parsers/baseparser'
-require 'rexml/xmltokens'
-
-module REXML
-  module Parsers
-    # = Using the Pull Parser
-    # <em>This API is experimental, and subject to change.</em>
-    #  parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    puts res[1]['att'] if res.start_tag? and res[0] == 'b'
-    #  end
-    # See the PullEvent class for information on the content of the results.
-    # The data is identical to the arguments passed for the various events to
-    # the StreamListener API.
-    #
-    # Notice that:
-    #  parser = PullParser.new( "<a>BAD DOCUMENT" )
-    #  while parser.has_next?
-    #    res = parser.next
-    #    raise res[1] if res.error?
-    #  end
-    #
-    # Nat Price gave me some good ideas for the API.
-    class PullParser
-      include XMLTokens
-      extend Forwardable
-
-      def_delegators( :@parser, :has_next? )
-      def_delegators( :@parser, :entity )
-      def_delegators( :@parser, :empty? )
-      def_delegators( :@parser, :source )
-
-      def initialize stream
-        @entities = {}
-        @listeners = nil
-        @parser = BaseParser.new( stream )
-        @my_stack = []
-      end
-
-      def add_listener( listener )
-        @listeners = [] unless @listeners
-        @listeners << listener
-      end
-
-      def each
-        while has_next?
-          yield self.pull
-        end
-      end
-
-      def peek depth=0
-        if @my_stack.length <= depth
-          (depth - @my_stack.length + 1).times {
-            e = PullEvent.new(@parser.pull)
-            @my_stack.push(e)
-          }
-        end
-        @my_stack[depth]
-      end
-
-      def pull
-        return @my_stack.shift if @my_stack.length > 0
-
-        event = @parser.pull
-        case event[0]
-        when :entitydecl
-          @entities[ event[1] ] = 
-            event[2] unless event[2] =~ /PUBLIC|SYSTEM/
-        when :text
-          unnormalized = @parser.unnormalize( event[1], @entities )
-          event << unnormalized
-        end
-        PullEvent.new( event )
-      end
-
-      def unshift token
-        @my_stack.unshift token
-      end
-    end
-
-    # A parsing event.  The contents of the event are accessed as an +Array?,
-    # and the type is given either by the ...? methods, or by accessing the
-    # +type+ accessor.  The contents of this object vary from event to event,
-    # but are identical to the arguments passed to +StreamListener+s for each
-    # event.
-    class PullEvent
-      # The type of this event.  Will be one of :tag_start, :tag_end, :text,
-      # :processing_instruction, :comment, :doctype, :attlistdecl, :entitydecl,
-      # :notationdecl, :entity, :cdata, :xmldecl, or :error.
-      def initialize(arg)
-        @contents = arg
-      end
-
-      def []( start, endd=nil)
-        if start.kind_of? Range
-          @contents.slice( start.begin+1 .. start.end )
-        elsif start.kind_of? Numeric
-          if endd.nil?
-            @contents.slice( start+1 )
-          else
-            @contents.slice( start+1, endd )
-          end
-        else
-          raise "Illegal argument #{start.inspect} (#{start.class})"
-        end
-      end
-
-      def event_type
-        @contents[0]
-      end
-
-      # Content: [ String tag_name, Hash attributes ]
-      def start_element?
-        @contents[0] == :start_element
-      end
-
-      # Content: [ String tag_name ]
-      def end_element?
-        @contents[0] == :end_element
-      end
-
-      # Content: [ String raw_text, String unnormalized_text ]
-      def text?
-        @contents[0] == :text
-      end
-
-      # Content: [ String text ]
-      def instruction?
-        @contents[0] == :processing_instruction
-      end
-
-      # Content: [ String text ]
-      def comment?
-        @contents[0] == :comment
-      end
-
-      # Content: [ String name, String pub_sys, String long_name, String uri ]
-      def doctype?
-        @contents[0] == :start_doctype
-      end
-
-      # Content: [ String text ]
-      def attlistdecl?
-        @contents[0] == :attlistdecl
-      end
-
-      # Content: [ String text ]
-      def elementdecl?
-        @contents[0] == :elementdecl
-      end
-
-      # Due to the wonders of DTDs, an entity declaration can be just about
-      # anything.  There's no way to normalize it; you'll have to interpret the
-      # content yourself.  However, the following is true:
-      #
-      # * If the entity declaration is an internal entity:
-      #   [ String name, String value ]
-      # Content: [ String text ]
-      def entitydecl?
-        @contents[0] == :entitydecl
-      end
-
-      # Content: [ String text ]
-      def notationdecl?
-        @contents[0] == :notationdecl
-      end
-
-      # Content: [ String text ]
-      def entity?
-        @contents[0] == :entity
-      end
-
-      # Content: [ String text ]
-      def cdata?
-        @contents[0] == :cdata
-      end
-
-      # Content: [ String version, String encoding, String standalone ]
-      def xmldecl?
-        @contents[0] == :xmldecl
-      end
-
-      def error?
-        @contents[0] == :error
-      end
-
-      def inspect
-        @contents[0].to_s + ": " + @contents[1..-1].inspect
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/sax2parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/sax2parser.rb
deleted file mode 100644
index e402eb7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/sax2parser.rb
+++ /dev/null
@@ -1,238 +0,0 @@
-require 'rexml/parsers/baseparser'
-require 'rexml/parseexception'
-require 'rexml/namespace'
-require 'rexml/text'
-
-module REXML
-	module Parsers
-    # SAX2Parser
-		class SAX2Parser
-			def initialize source
-				@parser = BaseParser.new(source)
-				@listeners = []
-				@procs = []
-				@namespace_stack = []
-				@has_listeners = false
-				@tag_stack = []
-        @entities = {}
-			end
-
-      def source
-        @parser.source
-      end
-			
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-			# Listen arguments:
-			#
-			# Symbol, Array, Block
-			# 	Listen to Symbol events on Array elements
-			# Symbol, Block
-			#   Listen to Symbol events
-			# Array, Listener
-			# 	Listen to all events on Array elements
-			# Array, Block
-			# 	Listen to :start_element events on Array elements
-			# Listener
-			# 	Listen to All events
-			#
-			# Symbol can be one of: :start_element, :end_element,
-			# :start_prefix_mapping, :end_prefix_mapping, :characters,
-			# :processing_instruction, :doctype, :attlistdecl, :elementdecl,
-			# :entitydecl, :notationdecl, :cdata, :xmldecl, :comment
-      #
-      # There is an additional symbol that can be listened for: :progress.
-      # This will be called for every event generated, passing in the current 
-      # stream position.
-			#
-			# Array contains regular expressions or strings which will be matched
-			# against fully qualified element names.
-			#
-			# Listener must implement the methods in SAX2Listener
-			#
-			# Block will be passed the same arguments as a SAX2Listener method would
-			# be, where the method name is the same as the matched Symbol.
-			# See the SAX2Listener for more information.
-			def listen( *args, &blok )
-				if args[0].kind_of? Symbol
-					if args.size == 2
-						args[1].each { |match| @procs << [args[0], match, blok] }
-					else
-						add( [args[0], nil, blok] )
-					end
-				elsif args[0].kind_of? Array
-					if args.size == 2
-						args[0].each { |match| add( [nil, match, args[1]] ) }
-					else
-						args[0].each { |match| add( [ :start_element, match, blok ] ) }
-					end
-				else
-					add([nil, nil, args[0]])
-				end
-			end
-			
-			def deafen( listener=nil, &blok )
-				if listener
-					@listeners.delete_if {|item| item[-1] == listener }
-					@has_listeners = false if @listeners.size == 0
-				else
-					@procs.delete_if {|item| item[-1] == blok }
-				end
-			end
-			
-			def parse
-				@procs.each { |sym,match,block| block.call if sym == :start_document }
-				@listeners.each { |sym,match,block| 
-					block.start_document if sym == :start_document or sym.nil?
-				}
-				root = context = []
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						handle( :end_document )
-						break
-          when :start_doctype
-            handle( :doctype, *event[1..-1])
-					when :end_doctype
-						context = context[1]
-					when :start_element
-						@tag_stack.push(event[1])
-						# find the observers for namespaces
-						procs = get_procs( :start_prefix_mapping, event[1] )
-						listeners = get_listeners( :start_prefix_mapping, event[1] )
-						if procs or listeners
-							# break out the namespace declarations
-							# The attributes live in event[2]
-							event[2].each {|n, v| event[2][n] = @parser.normalize(v)}
-							nsdecl = event[2].find_all { |n, value| n =~ /^xmlns(:|$)/ }
-							nsdecl.collect! { |n, value| [ n[6..-1], value ] }
-							@namespace_stack.push({})
-							nsdecl.each do |n,v|
-								@namespace_stack[-1][n] = v
-								# notify observers of namespaces
-								procs.each { |ob| ob.call( n, v ) } if procs
-								listeners.each { |ob| ob.start_prefix_mapping(n, v) } if listeners
-							end
-						end
-						event[1] =~ Namespace::NAMESPLIT
-						prefix = $1
-						local = $2
-						uri = get_namespace(prefix)
-						# find the observers for start_element
-						procs = get_procs( :start_element, event[1] )
-						listeners = get_listeners( :start_element, event[1] )
-						# notify observers
-						procs.each { |ob| ob.call( uri, local, event[1], event[2] ) } if procs
-						listeners.each { |ob| 
-							ob.start_element( uri, local, event[1], event[2] ) 
-						} if listeners
-					when :end_element
-						@tag_stack.pop
-						event[1] =~ Namespace::NAMESPLIT
-						prefix = $1
-						local = $2
-						uri = get_namespace(prefix)
-						# find the observers for start_element
-						procs = get_procs( :end_element, event[1] )
-						listeners = get_listeners( :end_element, event[1] )
-						# notify observers
-						procs.each { |ob| ob.call( uri, local, event[1] ) } if procs
-						listeners.each { |ob| 
-							ob.end_element( uri, local, event[1] ) 
-						} if listeners
-
-						namespace_mapping = @namespace_stack.pop
-						# find the observers for namespaces
-						procs = get_procs( :end_prefix_mapping, event[1] )
-						listeners = get_listeners( :end_prefix_mapping, event[1] )
-						if procs or listeners
-							namespace_mapping.each do |prefix, uri|
-								# notify observers of namespaces
-								procs.each { |ob| ob.call( prefix ) } if procs
-								listeners.each { |ob| ob.end_prefix_mapping(prefix) } if listeners
-							end
-						end
-					when :text
-            #normalized = @parser.normalize( event[1] )
-            #handle( :characters, normalized )
-            copy = event[1].clone
-            @entities.each { |key, value| copy = copy.gsub("&#{key};", value) }
-            copy.gsub!( Text::NUMERICENTITY ) {|m|
-              m=$1
-              m = "0#{m}" if m[0] == ?x
-              [Integer(m)].pack('U*')
-            }
-            handle( :characters, copy )
-          when :entitydecl
-            @entities[ event[1] ] = event[2] if event.size == 3
-						handle( *event )
-					when :processing_instruction, :comment, :attlistdecl, 
-						:elementdecl, :cdata, :notationdecl, :xmldecl
-						handle( *event )
-					end
-          handle( :progress, @parser.position )
-				end
-			end
-
-			private
-			def handle( symbol, *arguments )
-				tag = @tag_stack[-1]
-				procs = get_procs( symbol, tag )
-				listeners = get_listeners( symbol, tag )
-				# notify observers
-				procs.each { |ob| ob.call( *arguments ) } if procs
-				listeners.each { |l| 
-					l.send( symbol.to_s, *arguments ) 
-				} if listeners
-			end
-
-			# The following methods are duplicates, but it is faster than using
-			# a helper
-			def get_procs( symbol, name )
-				return nil if @procs.size == 0
-				@procs.find_all do |sym, match, block|
-          #puts sym.inspect+"=="+symbol.inspect+ "\t"+match.inspect+"=="+name.inspect+ "\t"+( (sym.nil? or symbol == sym) and ((name.nil? and match.nil?) or match.nil? or ( (name == match) or (match.kind_of? Regexp and name =~ match)))).to_s
-					(
-						(sym.nil? or symbol == sym) and 
-						((name.nil? and match.nil?) or match.nil? or (
-							(name == match) or
-							(match.kind_of? Regexp and name =~ match)
-							)
-						)
-					)
-				end.collect{|x| x[-1]}
-			end
-			def get_listeners( symbol, name )
-				return nil if @listeners.size == 0
-				@listeners.find_all do |sym, match, block|
-					(
-						(sym.nil? or symbol == sym) and 
-						((name.nil? and match.nil?) or match.nil? or (
-							(name == match) or
-							(match.kind_of? Regexp and name =~ match)
-							)
-						)
-					)
-				end.collect{|x| x[-1]}
-			end
-
-			def add( pair )
-				if pair[-1].respond_to? :call
-					@procs << pair unless @procs.include? pair
-				else
-					@listeners << pair unless @listeners.include? pair
-					@has_listeners = true
-				end
-			end
-
-			def get_namespace( prefix ) 
-        uris = (@namespace_stack.find_all { |ns| not ns[prefix].nil? }) ||
-					(@namespace_stack.find { |ns| not ns[nil].nil? })
-				uris[-1][prefix] unless uris.nil? or 0 == uris.size
-			end
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/streamparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/streamparser.rb
deleted file mode 100644
index 256d0f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/streamparser.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module REXML
-  module Parsers
-    class StreamParser
-      def initialize source, listener
-        @listener = listener
-        @parser = BaseParser.new( source )
-      end
-      
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-      
-      def parse
-        # entity string
-        while true
-          event = @parser.pull
-          case event[0]
-          when :end_document
-            return
-          when :start_element
-            attrs = event[2].each do |n, v|
-              event[2][n] = @parser.unnormalize( v )
-            end
-            @listener.tag_start( event[1], attrs )
-          when :end_element
-            @listener.tag_end( event[1] )
-          when :text
-            normalized = @parser.unnormalize( event[1] )
-            @listener.text( normalized )
-          when :processing_instruction
-            @listener.instruction( *event[1,2] )
-          when :start_doctype
-            @listener.doctype( *event[1..-1] )
-          when :end_doctype
-            # FIXME: remove this condition for milestone:3.2
-            @listener.doctype_end if @listener.respond_to? :doctype_end
-          when :comment, :attlistdecl, :cdata, :xmldecl, :elementdecl
-            @listener.send( event[0].to_s, *event[1..-1] )
-          when :entitydecl, :notationdecl
-            @listener.send( event[0].to_s, event[1..-1] )
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/treeparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/treeparser.rb
deleted file mode 100644
index 5c3e142..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/treeparser.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require 'rexml/validation/validationexception'
-require 'rexml/undefinednamespaceexception'
-
-module REXML
-  module Parsers
-    class TreeParser
-      def initialize( source, build_context = Document.new )
-        @build_context = build_context
-        @parser = Parsers::BaseParser.new( source )
-      end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def parse
-        tag_stack = []
-        in_doctype = false
-        entities = nil
-        begin
-          while true
-            event = @parser.pull
-            #STDERR.puts "TREEPARSER GOT #{event.inspect}"
-            case event[0]
-            when :end_document
-              unless tag_stack.empty?
-                #raise ParseException.new("No close tag for #{tag_stack.inspect}")
-                raise ParseException.new("No close tag for #{@build_context.xpath}")
-              end
-              return
-            when :start_element
-              tag_stack.push(event[1])
-              el = @build_context = @build_context.add_element( event[1], event[2] )
-            when :end_element
-              tag_stack.pop
-              @build_context = @build_context.parent
-            when :text
-              if not in_doctype
-                if @build_context[-1].instance_of? Text
-                  @build_context[-1] << event[1]
-                else
-                  @build_context.add( 
-                    Text.new(event[1], @build_context.whitespace, nil, true) 
-                  ) unless (
-                    @build_context.ignore_whitespace_nodes and
-                    event[1].strip.size==0
-                  )
-                end
-              end
-            when :comment
-              c = Comment.new( event[1] )
-              @build_context.add( c )
-            when :cdata
-              c = CData.new( event[1] )
-              @build_context.add( c )
-            when :processing_instruction
-              @build_context.add( Instruction.new( event[1], event[2] ) )
-            when :end_doctype
-              in_doctype = false
-              entities.each { |k,v| entities[k] = @build_context.entities[k].value }
-              @build_context = @build_context.parent
-            when :start_doctype
-              doctype = DocType.new( event[1..-1], @build_context )
-              @build_context = doctype
-              entities = {}
-              in_doctype = true
-            when :attlistdecl
-              n = AttlistDecl.new( event[1..-1] )
-              @build_context.add( n )
-            when :externalentity
-              n = ExternalEntity.new( event[1] )
-              @build_context.add( n )
-            when :elementdecl
-              n = ElementDecl.new( event[1] )
-              @build_context.add(n)
-            when :entitydecl
-              entities[ event[1] ] = event[2] unless event[2] =~ /PUBLIC|SYSTEM/
-              @build_context.add(Entity.new(event))
-            when :notationdecl
-              n = NotationDecl.new( *event[1..-1] )
-              @build_context.add( n )
-            when :xmldecl
-              x = XMLDecl.new( event[1], event[2], event[3] )
-              @build_context.add( x )
-            end
-          end
-        rescue REXML::Validation::ValidationException
-          raise
-        rescue REXML::UndefinedNamespaceException
-          raise
-        rescue
-          raise ParseException.new( $!.message, @parser.source, @parser, $! )
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/ultralightparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/ultralightparser.rb
deleted file mode 100644
index adc4af1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/ultralightparser.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rexml/parsers/streamparser'
-require 'rexml/parsers/baseparser'
-
-module REXML
-	module Parsers
-		class UltraLightParser
-			def initialize stream
-				@stream = stream
-				@parser = REXML::Parsers::BaseParser.new( stream )
-			end
-
-      def add_listener( listener )
-        @parser.add_listener( listener )
-      end
-
-      def rewind
-        @stream.rewind
-        @parser.stream = @stream
-      end
-
-			def parse
-				root = context = []
-				while true
-					event = @parser.pull
-					case event[0]
-					when :end_document
-						break
-					when :end_doctype
-						context = context[1]
-					when :start_element, :doctype
-						context << event
-						event[1,0] = [context]
-						context = event
-					when :end_element
-						context = context[1]
-					else
-						context << event
-					end
-				end
-				root
-			end
-		end
-
-		# An element is an array.  The array contains:
-		#  0			The parent element
-		#  1			The tag name
-		#  2			A hash of attributes
-		#  3..-1	The child elements
-		# An element is an array of size > 3
-		# Text is a String
-		# PIs are [ :processing_instruction, target, data ]
-		# Comments are [ :comment, data ]
-		# DocTypes are DocType structs
-		# The root is an array with XMLDecls, Text, DocType, Array, Text
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/xpathparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/xpathparser.rb
deleted file mode 100644
index de2530e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/parsers/xpathparser.rb
+++ /dev/null
@@ -1,698 +0,0 @@
-require 'rexml/namespace'
-require 'rexml/xmltokens'
-
-module REXML
-  module Parsers
-    # You don't want to use this class.  Really.  Use XPath, which is a wrapper
-    # for this class.  Believe me.  You don't want to poke around in here.
-    # There is strange, dark magic at work in this code.  Beware.  Go back!  Go
-    # back while you still can!
-    class XPathParser
-      include XMLTokens
-      LITERAL    = /^'([^']*)'|^"([^"]*)"/u
-
-      def namespaces=( namespaces )
-        Functions::namespace_context = namespaces
-        @namespaces = namespaces
-      end
-
-      def parse path
-        path.gsub!(/([\(\[])\s+/, '\1') # Strip ignorable spaces
-        path.gsub!( /\s+([\]\)])/, '\1' )
-        parsed = []
-        path = OrExpr(path, parsed)
-        parsed
-      end
-
-      def predicate path
-        parsed = []
-        Predicate( "[#{path}]", parsed )
-        parsed
-      end
-
-      def abbreviate( path )
-        path = path.kind_of?(String) ? parse( path ) : path
-        string = ""
-        document = false
-        while path.size > 0
-          op = path.shift
-          case op
-          when :node
-          when :attribute
-						string << "/" if string.size > 0
-						string << "@"
-          when :child
-						string << "/" if string.size > 0
-          when :descendant_or_self
-            string << "/"
-          when :self
-            string << "."
-          when :parent
-            string << ".."
-          when :any
-            string << "*"
-					when :text
-						string << "text()"
-          when :following, :following_sibling, 
-                :ancestor, :ancestor_or_self, :descendant, 
-                :namespace, :preceding, :preceding_sibling
-            string << "/" unless string.size == 0
-            string << op.to_s.tr("_", "-")
-            string << "::"
-          when :qname
-            prefix = path.shift
-            name = path.shift
-            string << prefix+":" if prefix.size > 0
-            string << name
-          when :predicate
-            string << '['
-            string << predicate_to_string( path.shift ) {|x| abbreviate( x ) }
-            string << ']'
-          when :document
-            document = true
-					when :function
-						string << path.shift
-						string << "( "
-						string << predicate_to_string( path.shift[0] ) {|x| abbreviate( x )}
-						string << " )"
-					when :literal
-						string << %Q{ "#{path.shift}" }
-          else
-            string << "/" unless string.size == 0
-            string << "UNKNOWN("
-            string << op.inspect
-            string << ")"
-          end
-        end
-				string = "/"+string if document
-        return string
-      end
-
-      def expand( path )
-        path = path.kind_of?(String) ? parse( path ) : path
-        string = ""
-        document = false
-        while path.size > 0
-          op = path.shift
-          case op
-          when :node
-            string << "node()"
-          when :attribute, :child, :following, :following_sibling, 
-                :ancestor, :ancestor_or_self, :descendant, :descendant_or_self,
-                :namespace, :preceding, :preceding_sibling, :self, :parent
-            string << "/" unless string.size == 0
-            string << op.to_s.tr("_", "-")
-            string << "::"
-          when :any
-            string << "*"
-          when :qname
-            prefix = path.shift
-            name = path.shift
-            string << prefix+":" if prefix.size > 0
-            string << name
-          when :predicate
-            string << '['
-            string << predicate_to_string( path.shift ) { |x| expand(x) }
-            string << ']'
-          when :document
-            document = true
-          else
-            string << "/" unless string.size == 0
-            string << "UNKNOWN("
-            string << op.inspect
-            string << ")"
-          end
-        end
-        string = "/"+string if document
-        return string
-      end
-
-      def predicate_to_string( path, &block )
-        string = ""
-        case path[0]
-        when :and, :or, :mult, :plus, :minus, :neq, :eq, :lt, :gt, :lteq, :gteq, :div, :mod, :union
-          op = path.shift
-          case op
-          when :eq
-            op = "="
-          when :lt
-            op = "<"
-          when :gt
-            op = ">"
-          when :lteq
-            op = "<="
-          when :gteq
-            op = ">="
-          when :neq
-            op = "!="
-          when :union
-            op = "|"
-          end
-          left = predicate_to_string( path.shift, &block )
-          right = predicate_to_string( path.shift, &block )
-          string << " "
-          string << left
-          string << " "
-          string << op.to_s
-          string << " "
-          string << right
-          string << " "
-        when :function
-          path.shift
-          name = path.shift
-          string << name
-          string << "( "
-          string << predicate_to_string( path.shift, &block )
-          string << " )"
-        when :literal
-          path.shift
-          string << " "
-          string << path.shift.inspect
-          string << " "
-        else
-          string << " "
-          string << yield( path )
-          string << " "
-        end
-        return string.squeeze(" ")
-      end
-
-      private
-      #LocationPath
-      #  | RelativeLocationPath
-      #  | '/' RelativeLocationPath?
-      #  | '//' RelativeLocationPath
-      def LocationPath path, parsed
-        #puts "LocationPath '#{path}'"
-        path = path.strip
-        if path[0] == ?/
-          parsed << :document
-          if path[1] == ?/
-            parsed << :descendant_or_self
-            parsed << :node
-            path = path[2..-1]
-          else
-            path = path[1..-1]
-          end
-        end
-        #puts parsed.inspect
-        return RelativeLocationPath( path, parsed ) if path.size > 0
-      end
-
-      #RelativeLocationPath
-      #  |                                                    Step
-      #    | (AXIS_NAME '::' | '@' | '')                     AxisSpecifier
-      #      NodeTest
-      #        Predicate
-      #    | '.' | '..'                                      AbbreviatedStep
-      #  |  RelativeLocationPath '/' Step
-      #  | RelativeLocationPath '//' Step
-      AXIS = /^(ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self)::/
-      def RelativeLocationPath path, parsed
-        #puts "RelativeLocationPath #{path}"
-        while path.size > 0
-          # (axis or @ or <child::>) nodetest predicate  >
-          # OR                                          >  / Step
-          # (. or ..)                                    >
-          if path[0] == ?.
-            if path[1] == ?.
-              parsed << :parent
-              parsed << :node
-              path = path[2..-1]
-            else
-              parsed << :self
-              parsed << :node
-              path = path[1..-1]
-            end
-          else
-            if path[0] == ?@
-              #puts "ATTRIBUTE"
-              parsed << :attribute
-              path = path[1..-1]
-              # Goto Nodetest
-            elsif path =~ AXIS
-              parsed << $1.tr('-','_').intern
-              path = $'
-              # Goto Nodetest
-            else
-              parsed << :child
-            end
-
-            #puts "NODETESTING '#{path}'"
-            n = []
-            path = NodeTest( path, n)
-            #puts "NODETEST RETURNED '#{path}'"
-
-            if path[0] == ?[
-              path = Predicate( path, n )
-            end
-
-            parsed.concat(n)
-          end
-          
-          if path.size > 0
-            if path[0] == ?/
-              if path[1] == ?/
-                parsed << :descendant_or_self
-                parsed << :node
-                path = path[2..-1]
-              else
-                path = path[1..-1]
-              end
-            else
-              return path
-            end
-          end
-        end
-        return path
-      end
-
-      # Returns a 1-1 map of the nodeset
-      # The contents of the resulting array are either:
-      #   true/false, if a positive match
-      #   String, if a name match
-      #NodeTest
-      #  | ('*' | NCNAME ':' '*' | QNAME)                NameTest
-      #  | NODE_TYPE '(' ')'                              NodeType
-      #  | PI '(' LITERAL ')'                            PI
-      #    | '[' expr ']'                                Predicate
-      NCNAMETEST= /^(#{NCNAME_STR}):\*/u
-      QNAME     = Namespace::NAMESPLIT
-      NODE_TYPE  = /^(comment|text|node)\(\s*\)/m
-      PI        = /^processing-instruction\(/
-      def NodeTest path, parsed
-        #puts "NodeTest with #{path}"
-        res = nil
-        case path
-        when /^\*/
-          path = $'
-          parsed << :any
-        when NODE_TYPE
-          type = $1
-          path = $'
-          parsed << type.tr('-', '_').intern
-        when PI
-          path = $'
-          literal = nil
-          if path !~ /^\s*\)/
-            path =~ LITERAL
-            literal = $1
-            path = $'
-            raise ParseException.new("Missing ')' after processing instruction") if path[0] != ?)
-            path = path[1..-1]
-          end
-          parsed << :processing_instruction
-          parsed << (literal || '')
-        when NCNAMETEST
-          #puts "NCNAMETEST"
-          prefix = $1
-          path = $'
-          parsed << :namespace
-          parsed << prefix
-        when QNAME
-          #puts "QNAME"
-          prefix = $1
-          name = $2
-          path = $'
-          prefix = "" unless prefix
-          parsed << :qname
-          parsed << prefix
-          parsed << name
-        end
-        return path
-      end
-
-      # Filters the supplied nodeset on the predicate(s)
-      def Predicate path, parsed
-        #puts "PREDICATE with #{path}"
-        return nil unless path[0] == ?[
-        predicates = []
-        while path[0] == ?[
-          path, expr = get_group(path)
-          predicates << expr[1..-2] if expr
-        end
-        #puts "PREDICATES = #{predicates.inspect}"
-        predicates.each{ |expr| 
-          #puts "ORING #{expr}"
-          preds = []
-          parsed << :predicate
-          parsed << preds
-          OrExpr(expr, preds) 
-        }
-        #puts "PREDICATES = #{predicates.inspect}"
-        path
-      end
-
-      # The following return arrays of true/false, a 1-1 mapping of the
-      # supplied nodeset, except for axe(), which returns a filtered
-      # nodeset
-
-      #| OrExpr S 'or' S AndExpr
-      #| AndExpr
-      def OrExpr path, parsed
-        #puts "OR >>> #{path}"
-        n = []
-        rest = AndExpr( path, n )
-        #puts "OR <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*( or )/
-            n = [ :or, n, [] ]
-            rest = AndExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| AndExpr S 'and' S EqualityExpr
-      #| EqualityExpr
-      def AndExpr path, parsed
-        #puts "AND >>> #{path}"
-        n = []
-        rest = EqualityExpr( path, n )
-        #puts "AND <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*( and )/
-            n = [ :and, n, [] ]
-            #puts "AND >>> #{rest}"
-            rest = EqualityExpr( $', n[-1] )
-            #puts "AND <<< #{rest}"
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| EqualityExpr ('=' | '!=')  RelationalExpr
-      #| RelationalExpr
-      def EqualityExpr path, parsed
-        #puts "EQUALITY >>> #{path}"
-        n = []
-        rest = RelationalExpr( path, n )
-        #puts "EQUALITY <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(!?=)\s*/
-            if $1[0] == ?!
-              n = [ :neq, n, [] ]
-            else
-              n = [ :eq, n, [] ]
-            end
-            rest = RelationalExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| RelationalExpr ('<' | '>' | '<=' | '>=') AdditiveExpr
-      #| AdditiveExpr
-      def RelationalExpr path, parsed
-        #puts "RELATION >>> #{path}"
-        n = []
-        rest = AdditiveExpr( path, n )
-        #puts "RELATION <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*([<>]=?)\s*/
-            if $1[0] == ?<
-              sym = "lt"
-            else
-              sym = "gt"
-            end
-            sym << "eq" if $1[-1] == ?=
-            n = [ sym.intern, n, [] ]
-            rest = AdditiveExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| AdditiveExpr ('+' | S '-') MultiplicativeExpr
-      #| MultiplicativeExpr
-      def AdditiveExpr path, parsed
-        #puts "ADDITIVE >>> #{path}"
-        n = []
-        rest = MultiplicativeExpr( path, n )
-        #puts "ADDITIVE <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\+| -)\s*/
-            if $1[0] == ?+
-              n = [ :plus, n, [] ]
-            else
-              n = [ :minus, n, [] ]
-            end
-            rest = MultiplicativeExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| MultiplicativeExpr ('*' | S ('div' | 'mod') S) UnaryExpr
-      #| UnaryExpr
-      def MultiplicativeExpr path, parsed
-        #puts "MULT >>> #{path}"
-        n = []
-        rest = UnaryExpr( path, n )
-        #puts "MULT <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\*| div | mod )\s*/
-            if $1[0] == ?*
-              n = [ :mult, n, [] ]
-            elsif $1.include?( "div" )
-              n = [ :div, n, [] ]
-            else
-              n = [ :mod, n, [] ]
-            end
-            rest = UnaryExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace(n)
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| '-' UnaryExpr
-      #| UnionExpr
-      def UnaryExpr path, parsed
-        path =~ /^(\-*)/
-        path = $'
-        if $1 and (($1.size % 2) != 0)
-          mult = -1
-        else
-          mult = 1
-        end
-        parsed << :neg if mult < 0
-
-        #puts "UNARY >>> #{path}"
-        n = []
-        path = UnionExpr( path, n )
-        #puts "UNARY <<< #{path}"
-        parsed.concat( n )
-        path
-      end
-
-      #| UnionExpr '|' PathExpr
-      #| PathExpr
-      def UnionExpr path, parsed
-        #puts "UNION >>> #{path}"
-        n = []
-        rest = PathExpr( path, n )
-        #puts "UNION <<< #{rest}"
-        if rest != path
-          while rest =~ /^\s*(\|)\s*/
-            n = [ :union, n, [] ]
-            rest = PathExpr( $', n[-1] )
-          end
-        end
-        if parsed.size == 0 and n.size != 0
-          parsed.replace( n )
-        elsif n.size > 0
-          parsed << n
-        end
-        rest
-      end
-
-      #| LocationPath
-      #| FilterExpr ('/' | '//') RelativeLocationPath
-      def PathExpr path, parsed
-        path =~ /^\s*/
-        path = $'
-        #puts "PATH >>> #{path}"
-        n = []
-        rest = FilterExpr( path, n )
-        #puts "PATH <<< '#{rest}'"
-        if rest != path
-          if rest and rest[0] == ?/
-            return RelativeLocationPath(rest, n)
-          end
-        end
-        #puts "BEFORE WITH '#{rest}'"
-        rest = LocationPath(rest, n) if rest =~ /\A[\/\.\@\[\w_*]/
-        parsed.concat(n)
-        return rest
-      end
-
-      #| FilterExpr Predicate
-      #| PrimaryExpr
-      def FilterExpr path, parsed
-        #puts "FILTER >>> #{path}"
-        n = []
-        path = PrimaryExpr( path, n )
-        #puts "FILTER <<< #{path}"
-        path = Predicate(path, n) if path and path[0] == ?[
-        #puts "FILTER <<< #{path}"
-        parsed.concat(n)
-        path
-      end
-
-      #| VARIABLE_REFERENCE
-      #| '(' expr ')'
-      #| LITERAL
-      #| NUMBER
-      #| FunctionCall
-      VARIABLE_REFERENCE  = /^\$(#{NAME_STR})/u
-      NUMBER              = /^(\d*\.?\d+)/
-      NT        = /^comment|text|processing-instruction|node$/
-      def PrimaryExpr path, parsed
-        arry = []
-        case path
-        when VARIABLE_REFERENCE
-          varname = $1
-          path = $'
-          parsed << :variable
-          parsed << varname
-          #arry << @variables[ varname ]
-        when /^(\w[-\w]*)(?:\()/
-          #puts "PrimaryExpr :: Function >>> #$1 -- '#$''"
-          fname = $1
-          tmp = $'
-          #puts "#{fname} =~ #{NT.inspect}"
-          return path if fname =~ NT
-          path = tmp
-          parsed << :function
-          parsed << fname
-          path = FunctionCall(path, parsed)
-        when NUMBER
-          #puts "LITERAL or NUMBER: #$1"
-          varname = $1.nil? ? $2 : $1
-          path = $'
-          parsed << :literal 
-          parsed << (varname.include?('.') ? varname.to_f : varname.to_i)
-        when LITERAL
-          #puts "LITERAL or NUMBER: #$1"
-          varname = $1.nil? ? $2 : $1
-          path = $'
-          parsed << :literal 
-          parsed << varname
-        when /^\(/                                               #/
-          path, contents = get_group(path)
-          contents = contents[1..-2]
-          n = []
-          OrExpr( contents, n )
-          parsed.concat(n)
-        end
-        path
-      end
-
-      #| FUNCTION_NAME '(' ( expr ( ',' expr )* )? ')'
-      def FunctionCall rest, parsed
-        path, arguments = parse_args(rest)
-        argset = []
-        for argument in arguments
-          args = []
-          OrExpr( argument, args )
-          argset << args
-        end
-        parsed << argset
-        path
-      end
-
-      # get_group( '[foo]bar' ) -> ['bar', '[foo]']
-      def get_group string
-        ind = 0
-        depth = 0
-        st = string[0,1]
-        en = (st == "(" ? ")" : "]")
-        begin
-          case string[ind,1]
-          when st
-            depth += 1
-          when en
-            depth -= 1
-          end
-          ind += 1
-        end while depth > 0 and ind < string.length
-        return nil unless depth==0
-        [string[ind..-1], string[0..ind-1]]
-      end
-      
-      def parse_args( string )
-        arguments = []
-        ind = 0
-				inquot = false
-				inapos = false
-        depth = 1
-        begin
-          case string[ind]
-          when ?"
-          	inquot = !inquot unless inapos
-          when ?'
-          	inapos = !inapos unless inquot
-          else
-          	unless inquot or inapos
-          		case string[ind]
-							when ?(
-								depth += 1
-                if depth == 1
-                	string = string[1..-1]
-                	ind -= 1
-                end
-							when ?)
-								depth -= 1
-								if depth == 0
-									s = string[0,ind].strip
-									arguments << s unless s == ""
-									string = string[ind+1..-1]
-								end
-							when ?,
-								if depth == 1
-									s = string[0,ind].strip
-									arguments << s unless s == ""
-									string = string[ind+1..-1]
-									ind = -1 
-								end
-							end
-            end
-          end
-          ind += 1
-        end while depth > 0 and ind < string.length
-        return nil unless depth==0
-        [string,arguments]
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/quickpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/quickpath.rb
deleted file mode 100644
index c099db8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/quickpath.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-require 'rexml/functions'
-require 'rexml/xmltokens'
-
-module REXML
-	class QuickPath
-		include Functions
-		include XMLTokens
-
-		EMPTY_HASH = {}
-
-		def QuickPath::first element, path, namespaces=EMPTY_HASH
-			match(element, path, namespaces)[0]
-		end
-
-		def QuickPath::each element, path, namespaces=EMPTY_HASH, &block
-			path = "*" unless path
-			match(element, path, namespaces).each( &block )
-		end
-
-		def QuickPath::match element, path, namespaces=EMPTY_HASH
-			raise "nil is not a valid xpath" unless path
-			results = nil
-			Functions::namespace_context = namespaces
-			case path
-			when /^\/([^\/]|$)/u
-				# match on root
-				path = path[1..-1]
-				return [element.root.parent] if path == ''
-				results = filter([element.root], path)
-			when /^[-\w]*::/u
-				results = filter([element], path)
-			when /^\*/u
-				results = filter(element.to_a, path)
-			when /^[\[!\w:]/u
-				# match on child
-				matches = []
-				children = element.to_a
-				results = filter(children, path)
-			else
-				results = filter([element], path)
-			end
-			return results
-		end
-
-		# Given an array of nodes it filters the array based on the path. The
-		# result is that when this method returns, the array will contain elements
-		# which match the path
-		def QuickPath::filter elements, path
-			return elements if path.nil? or path == '' or elements.size == 0
-			case path
-			when /^\/\//u											# Descendant
-				return axe( elements, "descendant-or-self", $' )
-			when /^\/?\b(\w[-\w]*)\b::/u							# Axe
-				axe_name = $1
-				rest = $'
-				return axe( elements, $1, $' )
-			when /^\/(?=\b([:!\w][-\.\w]*:)?[-!\*\.\w]*\b([^:(]|$)|\*)/u	# Child
-				rest = $'
-				results = []
-				elements.each do |element|
-					results |= filter( element.to_a, rest )
-				end
-				return results
-			when /^\/?(\w[-\w]*)\(/u							# / Function
-				return function( elements, $1, $' )
-			when Namespace::NAMESPLIT		# Element name
-				name = $2
-				ns = $1
-				rest = $'
-				elements.delete_if do |element|
-					!(element.kind_of? Element and 
-						(element.expanded_name == name or
-						 (element.name == name and
-						  element.namespace == Functions.namespace_context[ns])))
-				end
-				return filter( elements, rest )
-			when /^\/\[/u
-				matches = []
-				elements.each do |element|
-					matches |= predicate( element.to_a, path[1..-1] ) if element.kind_of? Element
-				end
-				return matches
-			when /^\[/u												# Predicate
-				return predicate( elements, path )
-			when /^\/?\.\.\./u										# Ancestor
-				return axe( elements, "ancestor", $' )
-			when /^\/?\.\./u											# Parent
-				return filter( elements.collect{|e|e.parent}, $' )
-			when /^\/?\./u												# Self
-				return filter( elements, $' )
-			when /^\*/u													# Any
-				results = []
-				elements.each do |element|
-					results |= filter( [element], $' ) if element.kind_of? Element
-					#if element.kind_of? Element
-					#	children = element.to_a
-					#	children.delete_if { |child| !child.kind_of?(Element) }
-					#	results |= filter( children, $' )
-					#end
-				end
-				return results
-			end
-			return []
-		end
-
-		def QuickPath::axe( elements, axe_name, rest )
-			matches = []
-			matches = filter( elements.dup, rest ) if axe_name =~ /-or-self$/u
-			case axe_name
-			when /^descendant/u
-				elements.each do |element|
-					matches |= filter( element.to_a, "descendant-or-self::#{rest}" ) if element.kind_of? Element
-				end
-			when /^ancestor/u
-				elements.each do |element|
-					while element.parent
-						matches << element.parent
-						element = element.parent
-					end
-				end
-				matches = filter( matches, rest )
-			when "self"
-				matches = filter( elements, rest )
-			when "child"
-				elements.each do |element|
-					matches |= filter( element.to_a, rest ) if element.kind_of? Element
-				end
-			when "attribute"
-				elements.each do |element|
-					matches << element.attributes[ rest ] if element.kind_of? Element
-				end
-			when "parent"
-				matches = filter(elements.collect{|element| element.parent}.uniq, rest)
-			when "following-sibling"
-				matches = filter(elements.collect{|element| element.next_sibling}.uniq,
-					rest)
-			when "previous-sibling"
-				matches = filter(elements.collect{|element| 
-					element.previous_sibling}.uniq, rest )
-			end
-			return matches.uniq
-		end
-
-		# A predicate filters a node-set with respect to an axis to produce a
-		# new node-set. For each node in the node-set to be filtered, the 
-		# PredicateExpr is evaluated with that node as the context node, with 
-		# the number of nodes in the node-set as the context size, and with the 
-		# proximity position of the node in the node-set with respect to the
-		# axis as the context position; if PredicateExpr evaluates to true for
-		# that node, the node is included in the new node-set; otherwise, it is
-		# not included.
-		#
-		# A PredicateExpr is evaluated by evaluating the Expr and converting
-		# the result to a boolean. If the result is a number, the result will
-		# be converted to true if the number is equal to the context position
-		# and will be converted to false otherwise; if the result is not a
-		# number, then the result will be converted as if by a call to the
-		# boolean function. Thus a location path para[3] is equivalent to
-		# para[position()=3].
-		def QuickPath::predicate( elements, path ) 
-			ind = 1
-			bcount = 1
-			while bcount > 0
-				bcount += 1 if path[ind] == ?[
-				bcount -= 1 if path[ind] == ?]
-				ind += 1
-			end
-			ind -= 1
-			predicate = path[1..ind-1]
-			rest = path[ind+1..-1]
-
-			# have to change 'a [=<>] b [=<>] c' into 'a [=<>] b and b [=<>] c'
-			predicate.gsub!( /([^\s(and)(or)<>=]+)\s*([<>=])\s*([^\s(and)(or)<>=]+)\s*([<>=])\s*([^\s(and)(or)<>=]+)/u ) { 
-				"#$1 #$2 #$3 and #$3 #$4 #$5"
-			}
-			# Let's do some Ruby trickery to avoid some work:
-			predicate.gsub!( /&/u, "&&" )
-			predicate.gsub!( /=/u, "==" )
-			predicate.gsub!( /@(\w[-\w.]*)/u ) {
-				"attribute(\"#$1\")" 
-			}
-			predicate.gsub!( /\bmod\b/u, "%" )
-			predicate.gsub!( /\b(\w[-\w.]*\()/u ) {
-				fname = $1
-				fname.gsub( /-/u, "_" )
-			}
-			
-			Functions.pair = [ 0, elements.size ]
-			results = []
-			elements.each do |element|
-				Functions.pair[0] += 1
-				Functions.node = element
-				res = eval( predicate )
-				case res
-				when true
-					results << element
-				when Fixnum
-					results << element if Functions.pair[0] == res
-				when String
-					results << element
-				end
-			end
-			return filter( results, rest )
-		end
-
-		def QuickPath::attribute( name )
-			return Functions.node.attributes[name] if Functions.node.kind_of? Element
-		end
-
-		def QuickPath::name()
-			return Functions.node.name if Functions.node.kind_of? Element
-		end
-
-		def QuickPath::method_missing( id, *args )
-			begin
-				Functions.send( id.id2name, *args )
-			rescue Exception
-				raise "METHOD: #{id.id2name}(#{args.join ', '})\n#{$!.message}"
-			end
-		end
-
-		def QuickPath::function( elements, fname, rest )
-			args = parse_args( elements, rest )
-			Functions.pair = [0, elements.size]
-			results = []
-			elements.each do |element|
-				Functions.pair[0] += 1
-				Functions.node = element
-				res = Functions.send( fname, *args )
-				case res
-				when true
-					results << element
-				when Fixnum
-					results << element if Functions.pair[0] == res
-				end
-			end
-			return results
-		end
-
-		def QuickPath::parse_args( element, string )
-			# /.*?(?:\)|,)/
-			arguments = []
-			buffer = ""
-			while string and string != ""
-				c = string[0]
-				string.sub!(/^./u, "")
-				case c
-				when ?,
-					# if depth = 1, then we start a new argument
-					arguments << evaluate( buffer )
-					#arguments << evaluate( string[0..count] )
-				when ?(
-					# start a new method call
-					function( element, buffer, string )
-					buffer = ""
-				when ?)
-					# close the method call and return arguments
-					return arguments
-				else
-					buffer << c
-				end
-			end
-			""
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/rexml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/rexml.rb
deleted file mode 100644
index c7b9c62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/rexml.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-# REXML is an XML toolkit for Ruby[http://www.ruby-lang.org], in Ruby.
-#
-# REXML is a _pure_ Ruby, XML 1.0 conforming,
-# non-validating[http://www.w3.org/TR/2004/REC-xml-20040204/#sec-conformance]
-# toolkit with an intuitive API.  REXML passes 100% of the non-validating Oasis
-# tests[http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.shtml],
-# and provides tree, stream, SAX2, pull, and lightweight APIs.  REXML also 
-# includes a full XPath[http://www.w3c.org/tr/xpath] 1.0 implementation. Since 
-# Ruby 1.8, REXML is included in the standard Ruby distribution.
-#
-# Main page:: http://www.germane-software.com/software/rexml
-# Author:: Sean Russell <serATgermaneHYPHENsoftwareDOTcom>
-# Version:: 3.1.7.2
-# Date:: 2007/275
-# Revision:: $Revision: 13815 $
-# 
-# This API documentation can be downloaded from the REXML home page, or can
-# be accessed online[http://www.germane-software.com/software/rexml_doc]
-#
-# A tutorial is available in the REXML distribution in docs/tutorial.html,
-# or can be accessed 
-# online[http://www.germane-software.com/software/rexml/docs/tutorial.html]
-module REXML
-  COPYRIGHT = "Copyright \xC2\xA9 2001-2006 Sean Russell <ser at germane-software.com>"
-  VERSION = "3.1.7.2"
-  DATE = "2007/275"
-  REVISION = "$Revision: 13815 $".gsub(/\$Revision:|\$/,'').strip
-
-  Copyright = COPYRIGHT
-  Version = VERSION
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/sax2listener.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/sax2listener.rb
deleted file mode 100644
index 8db1389..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/sax2listener.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-module REXML
-	# A template for stream parser listeners.
-	# Note that the declarations (attlistdecl, elementdecl, etc) are trivially
-	# processed; REXML doesn't yet handle doctype entity declarations, so you 
-	# have to parse them out yourself.
-	# === Missing methods from SAX2
-	#  ignorable_whitespace
-	# === Methods extending SAX2 
-	# +WARNING+
-	# These methods are certainly going to change, until DTDs are fully
-	# supported.  Be aware of this.
-	#  start_document
-	#  end_document
-	#  doctype
-	#  elementdecl
-	#  attlistdecl
-	#  entitydecl
-	#  notationdecl
-	#  cdata
-	#  xmldecl
-	#  comment
-	module SAX2Listener
-		def start_document
-		end
-		def end_document
-		end
-		def start_prefix_mapping prefix, uri
-		end
-		def end_prefix_mapping prefix
-		end
-		def start_element uri, localname, qname, attributes
-		end
-		def end_element uri, localname, qname
-		end
-		def characters text
-		end
-		def processing_instruction target, data
-		end
-		# Handles a doctype declaration. Any attributes of the doctype which are
-		# not supplied will be nil.  # EG, <!DOCTYPE me PUBLIC "foo" "bar">
-		# @p name the name of the doctype; EG, "me"
-		# @p pub_sys "PUBLIC", "SYSTEM", or nil.  EG, "PUBLIC"
-		# @p long_name the supplied long name, or nil.  EG, "foo"
-		# @p uri the uri of the doctype, or nil.  EG, "bar"
-		def doctype name, pub_sys, long_name, uri
-		end
-		# If a doctype includes an ATTLIST declaration, it will cause this
-		# method to be called.  The content is the declaration itself, unparsed.
-		# EG, <!ATTLIST el attr CDATA #REQUIRED> will come to this method as "el
-		# attr CDATA #REQUIRED".  This is the same for all of the .*decl
-		# methods.
-		def attlistdecl(element, pairs, contents)
-		end
-		# <!ELEMENT ...>
-		def elementdecl content
-		end
-		# <!ENTITY ...>
-		# The argument passed to this method is an array of the entity
-		# declaration.  It can be in a number of formats, but in general it
-		# returns (example, result):
-		#  <!ENTITY % YN '"Yes"'>  
-		#  ["%", "YN", "'\"Yes\"'", "\""]
-		#  <!ENTITY % YN 'Yes'>
-		#  ["%", "YN", "'Yes'", "s"]
-		#  <!ENTITY WhatHeSaid "He said %YN;">
-		#  ["WhatHeSaid", "\"He said %YN;\"", "YN"]
-		#  <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "SYSTEM", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "PUBLIC", "\"-//Textuality//TEXT Standard open-hatch boilerplate//EN\"", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif>
-		#  ["hatch-pic", "SYSTEM", "\"../grafix/OpenHatch.gif\"", "\n\t\t\t\t\t\t\tNDATA gif", "gif"]
-		def entitydecl name, decl
-		end
-		# <!NOTATION ...>
-		def notationdecl content
-		end
-		# Called when <![CDATA[ ... ]]> is encountered in a document.
-		# @p content "..."
-		def cdata content
-		end
-		# Called when an XML PI is encountered in the document.
-		# EG: <?xml version="1.0" encoding="utf"?>
-		# @p version the version attribute value.  EG, "1.0"
-		# @p encoding the encoding attribute value, or nil.  EG, "utf"
-		# @p standalone the standalone attribute value, or nil.  EG, nil
-    # @p spaced the declaration is followed by a line break
-		def xmldecl version, encoding, standalone
-		end
-		# Called when a comment is encountered.
-		# @p comment The content of the comment
-		def comment comment
-		end
-    def progress position
-    end
-	end	
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/source.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/source.rb
deleted file mode 100644
index ce7a2c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/source.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-require 'rexml/encoding'
-
-module REXML
-  # Generates Source-s.  USE THIS CLASS.
-  class SourceFactory
-    # Generates a Source object
-    # @param arg Either a String, or an IO
-    # @return a Source, or nil if a bad argument was given
-    def SourceFactory::create_from(arg)
-      if arg.kind_of? String
-        Source.new(arg)
-      elsif arg.respond_to? :read and
-            arg.respond_to? :readline and
-            arg.respond_to? :nil? and
-            arg.respond_to? :eof?
-        IOSource.new(arg)
-      elsif arg.kind_of? Source
-        arg
-      else
-        raise "#{arg.class} is not a valid input stream.  It must walk \n"+
-          "like either a String, an IO, or a Source."
-      end
-    end
-  end
-
-  # A Source can be searched for patterns, and wraps buffers and other
-  # objects and provides consumption of text
-  class Source
-    include Encoding
-    # The current buffer (what we're going to read next)
-    attr_reader :buffer
-    # The line number of the last consumed text
-    attr_reader :line
-    attr_reader :encoding
-
-    # Constructor
-    # @param arg must be a String, and should be a valid XML document
-    # @param encoding if non-null, sets the encoding of the source to this
-    # value, overriding all encoding detection
-    def initialize(arg, encoding=nil)
-      @orig = @buffer = arg
-      if encoding
-        self.encoding = encoding
-      else
-        self.encoding = check_encoding( @buffer )
-      end
-      @line = 0
-    end
-
-
-    # Inherited from Encoding
-    # Overridden to support optimized en/decoding
-    def encoding=(enc)
-      return unless super
-      @line_break = encode( '>' )
-      if enc != UTF_8
-        @buffer = decode(@buffer)
-        @to_utf = true
-      else
-        @to_utf = false
-      end
-    end
-
-    # Scans the source for a given pattern.  Note, that this is not your
-    # usual scan() method.  For one thing, the pattern argument has some
-    # requirements; for another, the source can be consumed.  You can easily
-    # confuse this method.  Originally, the patterns were easier
-    # to construct and this method more robust, because this method 
-    # generated search regexes on the fly; however, this was 
-    # computationally expensive and slowed down the entire REXML package 
-    # considerably, since this is by far the most commonly called method.
-    # @param pattern must be a Regexp, and must be in the form of
-    # /^\s*(#{your pattern, with no groups})(.*)/.  The first group
-    # will be returned; the second group is used if the consume flag is
-    # set.
-    # @param consume if true, the pattern returned will be consumed, leaving
-    # everything after it in the Source.
-    # @return the pattern, if found, or nil if the Source is empty or the
-    # pattern is not found.
-    def scan(pattern, cons=false)
-      return nil if @buffer.nil?
-      rv = @buffer.scan(pattern)
-      @buffer = $' if cons and rv.size>0
-      rv
-    end
-
-    def read
-    end
-
-    def consume( pattern )
-      @buffer = $' if pattern.match( @buffer )
-    end
-
-    def match_to( char, pattern )
-      return pattern.match(@buffer)
-    end
-
-    def match_to_consume( char, pattern )
-      md = pattern.match(@buffer)
-      @buffer = $'
-      return md
-    end
-
-    def match(pattern, cons=false)
-      md = pattern.match(@buffer)
-      @buffer = $' if cons and md
-      return md
-    end
-
-    # @return true if the Source is exhausted
-    def empty?
-      @buffer == ""
-    end
-
-    def position
-      @orig.index( @buffer )
-    end
-
-    # @return the current line in the source
-    def current_line
-      lines = @orig.split
-      res = lines.grep @buffer[0..30]
-      res = res[-1] if res.kind_of? Array
-      lines.index( res ) if res
-    end
-  end
-
-  # A Source that wraps an IO.  See the Source class for method
-  # documentation
-  class IOSource < Source
-    #attr_reader :block_size
-
-    # block_size has been deprecated
-    def initialize(arg, block_size=500, encoding=nil)
-      @er_source = @source = arg
-      @to_utf = false
-
-      # Determining the encoding is a deceptively difficult issue to resolve.
-      # First, we check the first two bytes for UTF-16.  Then we
-      # assume that the encoding is at least ASCII enough for the '>', and
-      # we read until we get one of those.  This gives us the XML declaration,
-      # if there is one.  If there isn't one, the file MUST be UTF-8, as per
-      # the XML spec.  If there is one, we can determine the encoding from
-      # it.
-      @buffer = ""
-      str = @source.read( 2 )
-      if encoding
-        self.encoding = encoding
-      elsif 0xfe == str[0] && 0xff == str[1]
-        @line_break = "\000>"
-      elsif 0xff == str[0] && 0xfe == str[1]
-        @line_break = ">\000"
-      elsif 0xef == str[0] && 0xbb == str[1]
-        str += @source.read(1)
-        str = '' if (0xbf == str[2])
-        @line_break = ">"
-      else
-        @line_break = ">"
-      end
-      super str+ at source.readline( @line_break )
-    end
-
-    def scan(pattern, cons=false)
-      rv = super
-      # You'll notice that this next section is very similar to the same
-      # section in match(), but just a liiittle different.  This is
-      # because it is a touch faster to do it this way with scan()
-      # than the way match() does it; enough faster to warrent duplicating
-      # some code
-      if rv.size == 0
-        until @buffer =~ pattern or @source.nil?
-          begin
-            # READLINE OPT
-            #str = @source.read(@block_size)
-            str = @source.readline(@line_break)
-            str = decode(str) if @to_utf and str
-            @buffer << str
-          rescue Iconv::IllegalSequence
-            raise
-          rescue
-            @source = nil
-          end
-        end
-        rv = super
-      end
-      rv.taint
-      rv
-    end
-
-    def read
-      begin
-        str = @source.readline(@line_break)
-        str = decode(str) if @to_utf and str 
-        @buffer << str
-      rescue Exception, NameError
-        @source = nil
-      end
-    end
-
-    def consume( pattern )
-      match( pattern, true )
-    end
-
-    def match( pattern, cons=false )
-      rv = pattern.match(@buffer)
-      @buffer = $' if cons and rv
-      while !rv and @source
-        begin
-          str = @source.readline(@line_break)
-          str = decode(str) if @to_utf and str
-          @buffer << str
-          rv = pattern.match(@buffer)
-          @buffer = $' if cons and rv
-        rescue
-          @source = nil
-        end
-      end
-      rv.taint
-      rv
-    end
-    
-    def empty?
-      super and ( @source.nil? || @source.eof? )
-    end
-
-    def position
-      @er_source.stat.pipe? ? 0 : @er_source.pos
-    end
-
-    # @return the current line in the source
-    def current_line
-      begin
-        pos = @er_source.pos        # The byte position in the source
-        lineno = @er_source.lineno  # The XML < position in the source
-        @er_source.rewind
-        line = 0                    # The \r\n position in the source
-        begin
-          while @er_source.pos < pos
-            @er_source.readline
-            line += 1
-          end
-        rescue
-        end
-      rescue IOError
-        pos = -1
-        line = -1
-      end
-      [pos, lineno, line]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/streamlistener.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/streamlistener.rb
deleted file mode 100644
index 6f40112..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/streamlistener.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-module REXML
-	# A template for stream parser listeners.
-	# Note that the declarations (attlistdecl, elementdecl, etc) are trivially
-	# processed; REXML doesn't yet handle doctype entity declarations, so you 
-	# have to parse them out yourself.
-	module StreamListener
-		# Called when a tag is encountered.
-		# @p name the tag name
-		# @p attrs an array of arrays of attribute/value pairs, suitable for
-		# use with assoc or rassoc.  IE, <tag attr1="value1" attr2="value2">
-		# will result in 
-		# tag_start( "tag", # [["attr1","value1"],["attr2","value2"]])
-		def tag_start name, attrs
-		end
-		# Called when the end tag is reached.  In the case of <tag/>, tag_end
-		# will be called immidiately after tag_start
-		# @p the name of the tag
-		def tag_end name
-		end
-		# Called when text is encountered in the document
-		# @p text the text content.
-		def text text
-		end
-		# Called when an instruction is encountered.  EG: <?xsl sheet='foo'?>
-		# @p name the instruction name; in the example, "xsl"
-		# @p instruction the rest of the instruction.  In the example,
-		# "sheet='foo'"
-		def instruction name, instruction
-		end
-		# Called when a comment is encountered.
-		# @p comment The content of the comment
-		def comment comment
-		end
-		# Handles a doctype declaration. Any attributes of the doctype which are
-		# not supplied will be nil.  # EG, <!DOCTYPE me PUBLIC "foo" "bar">
-		# @p name the name of the doctype; EG, "me"
-		# @p pub_sys "PUBLIC", "SYSTEM", or nil.  EG, "PUBLIC"
-		# @p long_name the supplied long name, or nil.  EG, "foo"
-		# @p uri the uri of the doctype, or nil.  EG, "bar"
-		def doctype name, pub_sys, long_name, uri
-		end
-		# Called when the doctype is done
-		def doctype_end
-		end
-		# If a doctype includes an ATTLIST declaration, it will cause this
-		# method to be called.  The content is the declaration itself, unparsed.
-		# EG, <!ATTLIST el attr CDATA #REQUIRED> will come to this method as "el
-		# attr CDATA #REQUIRED".  This is the same for all of the .*decl
-		# methods.
-		def attlistdecl element_name, attributes, raw_content
-		end
-		# <!ELEMENT ...>
-		def elementdecl content
-		end
-		# <!ENTITY ...>
-		# The argument passed to this method is an array of the entity
-		# declaration.  It can be in a number of formats, but in general it
-		# returns (example, result):
-		#  <!ENTITY % YN '"Yes"'>  
-		#  ["%", "YN", "'\"Yes\"'", "\""]
-		#  <!ENTITY % YN 'Yes'>
-		#  ["%", "YN", "'Yes'", "s"]
-		#  <!ENTITY WhatHeSaid "He said %YN;">
-		#  ["WhatHeSaid", "\"He said %YN;\"", "YN"]
-		#  <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "SYSTEM", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml">
-		#  ["open-hatch", "PUBLIC", "\"-//Textuality//TEXT Standard open-hatch boilerplate//EN\"", "\"http://www.textuality.com/boilerplate/OpenHatch.xml\""]
-		#  <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif>
-		#  ["hatch-pic", "SYSTEM", "\"../grafix/OpenHatch.gif\"", "\n\t\t\t\t\t\t\tNDATA gif", "gif"]
-		def entitydecl content
-		end
-		# <!NOTATION ...>
-		def notationdecl content
-		end
-		# Called when %foo; is encountered in a doctype declaration.
-		# @p content "foo"
-		def entity content
-		end
-		# Called when <![CDATA[ ... ]]> is encountered in a document.
-		# @p content "..."
-		def cdata content
-		end
-		# Called when an XML PI is encountered in the document.
-		# EG: <?xml version="1.0" encoding="utf"?>
-		# @p version the version attribute value.  EG, "1.0"
-		# @p encoding the encoding attribute value, or nil.  EG, "utf"
-		# @p standalone the standalone attribute value, or nil.  EG, nil
-		def xmldecl version, encoding, standalone
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/syncenumerator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/syncenumerator.rb
deleted file mode 100644
index 955e006..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/syncenumerator.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-module REXML
-  class SyncEnumerator
-    include Enumerable
-
-    # Creates a new SyncEnumerator which enumerates rows of given
-    # Enumerable objects.
-    def initialize(*enums)
-      @gens = enums
-      @biggest = @gens[0]
-      @gens.each {|x| @biggest = x if x.size > @biggest.size }
-    end
-
-    # Returns the number of enumerated Enumerable objects, i.e. the size
-    # of each row.
-    def size
-      @gens.size
-    end
-
-    # Returns the number of enumerated Enumerable objects, i.e. the size
-    # of each row.
-    def length
-      @gens.length
-    end
-
-    # Enumerates rows of the Enumerable objects.
-    def each
-      @biggest.zip( *@gens ) {|a|
-        yield(*a[1..-1])
-      }
-      self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/text.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/text.rb
deleted file mode 100644
index 9804aa7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/text.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-require 'rexml/entity'
-require 'rexml/doctype'
-require 'rexml/child'
-require 'rexml/doctype'
-require 'rexml/parseexception'
-
-module REXML
-  # Represents text nodes in an XML document
-  class Text < Child
-    include Comparable
-    # The order in which the substitutions occur
-    SPECIALS = [ /&(?!#?[\w-]+;)/u, /</u, />/u, /"/u, /'/u, /\r/u ]
-    SUBSTITUTES = ['&', '<', '>', '"', ''', '
']
-    # Characters which are substituted in written strings
-    SLAICEPS = [ '<', '>', '"', "'", '&' ]
-    SETUTITSBUS = [ /</u, />/u, /"/u, /'/u, /&/u ]
-
-    # If +raw+ is true, then REXML leaves the value alone
-    attr_accessor :raw
-
-    ILLEGAL = /(<|&(?!(#{Entity::NAME})|(#0*((?:\d+)|(?:x[a-fA-F0-9]+)));))/um
-    NUMERICENTITY = /&#0*((?:\d+)|(?:x[a-fA-F0-9]+));/ 
-
-    # Constructor
-    # +arg+ if a String, the content is set to the String.  If a Text,
-    # the object is shallowly cloned.  
-    #
-    # +respect_whitespace+ (boolean, false) if true, whitespace is
-    # respected
-    #
-    # +parent+ (nil) if this is a Parent object, the parent
-    # will be set to this.  
-    #
-    # +raw+ (nil) This argument can be given three values.
-    # If true, then the value of used to construct this object is expected to 
-    # contain no unescaped XML markup, and REXML will not change the text. If 
-    # this value is false, the string may contain any characters, and REXML will
-    # escape any and all defined entities whose values are contained in the
-    # text.  If this value is nil (the default), then the raw value of the 
-    # parent will be used as the raw value for this node.  If there is no raw
-    # value for the parent, and no value is supplied, the default is false.
-    # Use this field if you have entities defined for some text, and you don't
-    # want REXML to escape that text in output.
-    #   Text.new( "<&", false, nil, false ) #-> "<&"
-    #   Text.new( "<&", false, nil, false ) #-> "&lt;&amp;"
-    #   Text.new( "<&", false, nil, true )  #-> Parse exception
-    #   Text.new( "<&", false, nil, true )  #-> "<&"
-    #   # Assume that the entity "s" is defined to be "sean"
-    #   # and that the entity    "r" is defined to be "russell"
-    #   Text.new( "sean russell" )          #-> "&s; &r;"
-    #   Text.new( "sean russell", false, nil, true ) #-> "sean russell"
-    #
-    # +entity_filter+ (nil) This can be an array of entities to match in the
-    # supplied text.  This argument is only useful if +raw+ is set to false.
-    #   Text.new( "sean russell", false, nil, false, ["s"] ) #-> "&s; russell"
-    #   Text.new( "sean russell", false, nil, true, ["s"] ) #-> "sean russell"
-    # In the last example, the +entity_filter+ argument is ignored.
-    #
-    # +pattern+ INTERNAL USE ONLY
-    def initialize(arg, respect_whitespace=false, parent=nil, raw=nil, 
-      entity_filter=nil, illegal=ILLEGAL )
-
-      @raw = false
-
-      if parent
-        super( parent )
-        @raw = parent.raw 
-      else
-        @parent = nil
-      end
-
-      @raw = raw unless raw.nil?
-      @entity_filter = entity_filter
-      @normalized = @unnormalized = nil
-
-      if arg.kind_of? String
-        @string = arg.clone
-        @string.squeeze!(" \n\t") unless respect_whitespace
-      elsif arg.kind_of? Text
-        @string = arg.to_s
-        @raw = arg.raw
-      elsif
-        raise "Illegal argument of type #{arg.type} for Text constructor (#{arg})"
-      end
-
-      @string.gsub!( /\r\n?/, "\n" )
-
-      # check for illegal characters
-      if @raw
-        if @string =~ illegal
-          raise "Illegal character '#{$1}' in raw string \"#{@string}\""
-        end
-      end
-    end
-
-    def node_type
-      :text
-    end
-
-    def empty?
-      @string.size==0
-    end
-
-
-    def clone
-      return Text.new(self)
-    end
-
-
-    # Appends text to this text node.  The text is appended in the +raw+ mode
-    # of this text node.
-    def <<( to_append )
-      @string << to_append.gsub( /\r\n?/, "\n" )
-    end
-
-
-    # +other+ a String or a Text
-    # +returns+ the result of (to_s <=> arg.to_s)
-    def <=>( other )
-      to_s() <=> other.to_s
-    end
-
-    REFERENCE = /#{Entity::REFERENCE}/
-    # Returns the string value of this text node.  This string is always
-    # escaped, meaning that it is a valid XML text node string, and all
-    # entities that can be escaped, have been inserted.  This method respects
-    # the entity filter set in the constructor.
-    #   
-    #   # Assume that the entity "s" is defined to be "sean", and that the 
-    #   # entity "r" is defined to be "russell"
-    #   t = Text.new( "< & sean russell", false, nil, false, ['s'] ) 
-    #   t.to_s   #-> "< & &s; russell"
-    #   t = Text.new( "< & &s; russell", false, nil, false ) 
-    #   t.to_s   #-> "< & &s; russell"
-    #   u = Text.new( "sean russell", false, nil, true )
-    #   u.to_s   #-> "sean russell"
-    def to_s
-      return @string if @raw
-      return @normalized if @normalized
-
-      doctype = nil
-      if @parent
-        doc = @parent.document
-        doctype = doc.doctype if doc
-      end
-
-      @normalized = Text::normalize( @string, doctype, @entity_filter )
-    end
-
-    def inspect
-      @string.inspect
-    end
-
-    # Returns the string value of this text.  This is the text without
-    # entities, as it might be used programmatically, or printed to the
-    # console.  This ignores the 'raw' attribute setting, and any
-    # entity_filter.
-    #
-    #   # Assume that the entity "s" is defined to be "sean", and that the 
-    #   # entity "r" is defined to be "russell"
-    #   t = Text.new( "< & sean russell", false, nil, false, ['s'] ) 
-    #   t.value   #-> "< & sean russell"
-    #   t = Text.new( "< & &s; russell", false, nil, false )
-    #   t.value   #-> "< & sean russell"
-    #   u = Text.new( "sean russell", false, nil, true )
-    #   u.value   #-> "sean russell"
-    def value
-      @unnormalized if @unnormalized
-      doctype = nil
-      if @parent
-        doc = @parent.document
-        doctype = doc.doctype if doc
-      end
-      @unnormalized = Text::unnormalize( @string, doctype )
-    end
-
-    # Sets the contents of this text node.  This expects the text to be 
-    # unnormalized.  It returns self.
-    #
-    #   e = Element.new( "a" )
-    #   e.add_text( "foo" )   # <a>foo</a>
-    #   e[0].value = "bar"    # <a>bar</a>
-    #   e[0].value = "<a>"    # <a><a></a>
-    def value=( val )
-      @string = val.gsub( /\r\n?/, "\n" )
-      @unnormalized = nil
-      @normalized = nil
-      @raw = false
-    end
- 
-     def wrap(string, width, addnewline=false)
-       # Recursivly wrap string at width.
-       return string if string.length <= width
-       place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
-       if addnewline then
-         return "\n" + string[0,place] + "\n" + wrap(string[place+1..-1], width)
-       else
-         return string[0,place] + "\n" + wrap(string[place+1..-1], width)
-       end
-     end
-
-    def indent_text(string, level=1, style="\t", indentfirstline=true)
-      return string if level < 0
-      new_string = ''
-      string.each { |line|
-        indent_string = style * level
-        new_line = (indent_string + line).sub(/[\s]+$/,'')
-        new_string << new_line
-      }
-      new_string.strip! unless indentfirstline
-      return new_string
-    end
- 
-    # == DEPRECATED
-    # See REXML::Formatters
-    #
-    def write( writer, indent=-1, transitive=false, ie_hack=false ) 
-      Kernel.warn("#{self.class.name}.write is deprecated.  See REXML::Formatters")
-      formatter = if indent > -1
-          REXML::Formatters::Pretty.new( indent )
-        else
-          REXML::Formatters::Default.new
-        end
-      formatter.write( self, writer )
-    end
-
-    # FIXME
-    # This probably won't work properly
-    def xpath
-      path = @parent.xpath
-      path += "/text()"
-      return path
-    end
-
-    # Writes out text, substituting special characters beforehand.
-    # +out+ A String, IO, or any other object supporting <<( String )
-    # +input+ the text to substitute and the write out
-    #
-    #   z=utf8.unpack("U*")
-    #   ascOut=""
-    #   z.each{|r|
-    #     if r <  0x100
-    #       ascOut.concat(r.chr)
-    #     else
-    #       ascOut.concat(sprintf("&#x%x;", r))
-    #     end
-    #   }
-    #   puts ascOut
-    def write_with_substitution out, input
-      copy = input.clone
-      # Doing it like this rather than in a loop improves the speed
-      copy.gsub!( SPECIALS[0], SUBSTITUTES[0] )
-      copy.gsub!( SPECIALS[1], SUBSTITUTES[1] )
-      copy.gsub!( SPECIALS[2], SUBSTITUTES[2] )
-      copy.gsub!( SPECIALS[3], SUBSTITUTES[3] )
-      copy.gsub!( SPECIALS[4], SUBSTITUTES[4] )
-      copy.gsub!( SPECIALS[5], SUBSTITUTES[5] )
-      out << copy
-    end
-
-    # Reads text, substituting entities
-    def Text::read_with_substitution( input, illegal=nil )
-      copy = input.clone
-
-      if copy =~ illegal
-        raise ParseException.new( "malformed text: Illegal character #$& in \"#{copy}\"" )
-      end if illegal
-      
-      copy.gsub!( /\r\n?/, "\n" )
-      if copy.include? ?&
-        copy.gsub!( SETUTITSBUS[0], SLAICEPS[0] )
-        copy.gsub!( SETUTITSBUS[1], SLAICEPS[1] )
-        copy.gsub!( SETUTITSBUS[2], SLAICEPS[2] )
-        copy.gsub!( SETUTITSBUS[3], SLAICEPS[3] )
-        copy.gsub!( SETUTITSBUS[4], SLAICEPS[4] )
-        copy.gsub!( /&#0*((?:\d+)|(?:x[a-f0-9]+));/ ) {|m|
-          m=$1
-          #m='0' if m==''
-          m = "0#{m}" if m[0] == ?x
-          [Integer(m)].pack('U*')
-        }
-      end
-      copy
-    end
-
-    EREFERENCE = /&(?!#{Entity::NAME};)/
-    # Escapes all possible entities
-    def Text::normalize( input, doctype=nil, entity_filter=nil )
-      copy = input
-      # Doing it like this rather than in a loop improves the speed
-      #copy = copy.gsub( EREFERENCE, '&' )
-      copy = copy.gsub( "&", "&" )
-      if doctype
-        # Replace all ampersands that aren't part of an entity
-        doctype.entities.each_value do |entity|
-          copy = copy.gsub( entity.value, 
-            "&#{entity.name};" ) if entity.value and 
-              not( entity_filter and entity_filter.include?(entity) )
-        end
-      else
-        # Replace all ampersands that aren't part of an entity
-        DocType::DEFAULT_ENTITIES.each_value do |entity|
-          copy = copy.gsub(entity.value, "&#{entity.name};" )
-        end
-      end
-      copy
-    end
-
-    # Unescapes all possible entities
-    def Text::unnormalize( string, doctype=nil, filter=nil, illegal=nil )
-      rv = string.clone
-      rv.gsub!( /\r\n?/, "\n" )
-      matches = rv.scan( REFERENCE )
-      return rv if matches.size == 0
-      rv.gsub!( NUMERICENTITY ) {|m|
-        m=$1
-        m = "0#{m}" if m[0] == ?x
-        [Integer(m)].pack('U*')
-      }
-      matches.collect!{|x|x[0]}.compact!
-      if matches.size > 0
-        if doctype
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = doctype.entity( entity_reference )
-              re = /&#{entity_reference};/
-              rv.gsub!( re, entity_value ) if entity_value
-            end
-          end
-        else
-          matches.each do |entity_reference|
-            unless filter and filter.include?(entity_reference)
-              entity_value = DocType::DEFAULT_ENTITIES[ entity_reference ]
-              re = /&#{entity_reference};/
-              rv.gsub!( re, entity_value.value ) if entity_value
-            end
-          end
-        end
-        rv.gsub!( /&/, '&' )
-      end
-      rv
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/undefinednamespaceexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/undefinednamespaceexception.rb
deleted file mode 100644
index 8ebfdfd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/undefinednamespaceexception.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rexml/parseexception'
-module REXML
-  class UndefinedNamespaceException < ParseException
-    def initialize( prefix, source, parser )
-      super( "Undefined prefix #{prefix} found" )
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/relaxng.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/relaxng.rb
deleted file mode 100644
index 969f51b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/relaxng.rb
+++ /dev/null
@@ -1,559 +0,0 @@
-require "rexml/validation/validation"
-require "rexml/parsers/baseparser"
-
-module REXML
-  module Validation
-    # Implemented:
-    # * empty
-    # * element
-    # * attribute
-    # * text
-    # * optional
-    # * choice
-    # * oneOrMore
-    # * zeroOrMore
-    # * group
-    # * value
-    # * interleave
-    # * mixed
-    # * ref
-    # * grammar
-    # * start
-    # * define
-    #
-    # Not implemented:
-    # * data
-    # * param
-    # * include
-    # * externalRef
-    # * notAllowed
-    # * anyName
-    # * nsName
-    # * except
-    # * name
-    class RelaxNG
-      include Validator
-
-      INFINITY = 1.0 / 0.0
-      EMPTY = Event.new( nil )
-      TEXT = [:start_element, "text"]
-      attr_accessor :current
-      attr_accessor :count
-      attr_reader :references
-
-      # FIXME: Namespaces
-      def initialize source
-        parser = REXML::Parsers::BaseParser.new( source )
-
-        @count = 0
-        @references = {}
-        @root = @current = Sequence.new(self)
-        @root.previous = true
-        states = [ @current ]
-        begin
-          event = parser.pull
-          case event[0]
-          when :start_element
-            case event[1]
-            when "empty"
-            when "element", "attribute", "text", "value"
-              states[-1] << event
-            when "optional"
-              states << Optional.new( self )
-              states[-2] << states[-1]
-            when "choice"
-              states << Choice.new( self )
-              states[-2] << states[-1]
-            when "oneOrMore"
-              states << OneOrMore.new( self )
-              states[-2] << states[-1]
-            when "zeroOrMore"
-              states << ZeroOrMore.new( self )
-              states[-2] << states[-1]
-            when "group"
-              states << Sequence.new( self )
-              states[-2] << states[-1]
-            when "interleave"
-              states << Interleave.new( self )
-              states[-2] << states[-1]
-            when "mixed"
-              states << Interleave.new( self )
-              states[-2] << states[-1]
-              states[-1] << TEXT 
-            when "define"
-              states << [ event[2]["name"] ]
-            when "ref"
-              states[-1] << Ref.new( event[2]["name"] )
-            when "anyName"
-              states << AnyName.new( self )
-              states[-2] << states[-1]
-            when "nsName"
-            when "except"
-            when "name"
-            when "data"
-            when "param"
-            when "include"
-            when "grammar"
-            when "start"
-            when "externalRef"
-            when "notAllowed"
-            end
-          when :end_element
-            case event[1]
-            when "element", "attribute"
-              states[-1] << event
-            when "zeroOrMore", "oneOrMore", "choice", "optional", 
-              "interleave", "group", "mixed"
-              states.pop
-            when "define"
-              ref = states.pop
-              @references[ ref.shift ] = ref
-            #when "empty"
-            end
-          when :end_document
-            states[-1] << event
-          when :text
-            states[-1] << event
-          end
-        end while event[0] != :end_document
-      end
-
-      def receive event
-        validate( event )
-      end
-    end
-
-    class State
-      def initialize( context )
-        @previous = []
-        @events = []
-        @current = 0
-        @count = context.count += 1
-        @references = context.references
-        @value = false
-      end
-
-      def reset
-        return if @current == 0
-        @current = 0
-        @events.each {|s| s.reset if s.kind_of? State }
-      end
-
-      def previous=( previous ) 
-        @previous << previous
-      end
-
-      def next( event )
-        #print "In next with #{event.inspect}.  "
-        #puts "Next (#@current) is #{@events[@current]}"
-        #p @previous
-        return @previous.pop.next( event ) if @events[@current].nil?
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].kind_of? State )
-          @current += 1
-          @events[@current-1].previous = self
-          return @events[@current-1].next( event )
-        end
-        #puts "Current isn't a state"
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-            #puts "#{inspect[0,5]} 1RETURNING #{@previous.inspect[0,5]}"
-            return @previous.pop
-          elsif @events[@current].kind_of? State
-            @current += 1
-            #puts "#{inspect[0,5]} 2RETURNING (#{@current-1}) #{@events[@current-1].inspect[0,5]}; on return, next is #{@events[@current]}"
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            #puts "#{inspect[0,5]} RETURNING self w/ next(#@current) = #{@events[@current]}"
-            return self
-          end
-        else
-          return nil
-        end
-      end
-
-      def to_s
-        # Abbreviated:
-        self.class.name =~ /(?:::)(\w)\w+$/
-        # Full:
-        #self.class.name =~ /(?:::)(\w+)$/
-        "#$1.#@count"
-      end
-
-      def inspect
-        "< #{to_s} #{@events.collect{|e| 
-          pre = e == @events[@current] ? '#' : ''
-          pre + e.inspect unless self == e
-        }.join(', ')} >"
-      end
-
-      def expected
-        return [@events[@current]]
-      end
-
-      def <<( event )
-        add_event_to_arry( @events, event )
-      end
-
-
-      protected
-      def expand_ref_in( arry, ind )
-        new_events = []
-        @references[ arry[ind].to_s ].each{ |evt| 
-          add_event_to_arry(new_events,evt)
-        }
-        arry[ind,1] = new_events
-      end
-
-      def add_event_to_arry( arry, evt ) 
-        evt = generate_event( evt )
-        if evt.kind_of? String 
-          arry[-1].event_arg = evt if arry[-1].kind_of? Event and @value
-          @value = false
-        else
-          arry << evt
-        end
-      end
-
-      def generate_event( event )
-        return event if event.kind_of? State or event.class == Ref
-        evt = nil
-        arg = nil
-        case event[0]
-        when :start_element
-          case event[1]
-          when "element"
-            evt = :start_element
-            arg = event[2]["name"]
-          when "attribute"
-            evt = :start_attribute
-            arg = event[2]["name"]
-          when "text"
-            evt = :text
-          when "value"
-            evt = :text
-            @value = true
-          end
-        when :text
-          return event[1]
-        when :end_document
-          return Event.new( event[0] )
-        else # then :end_element
-          case event[1]
-          when "element"
-            evt = :end_element
-          when "attribute"
-            evt = :end_attribute
-          end
-        end
-        return Event.new( evt, arg )
-      end
-    end
-
-
-    class Sequence < State
-      def matches?(event)
-        @events[@current].matches?( event )
-      end
-    end
-
-
-    class Optional < State
-      def next( event )
-        if @current == 0
-          rv = super
-          return rv if rv
-          @prior = @previous.pop
-          return @prior.next( event )
-        end
-        super
-      end
-
-      def matches?(event)
-        @events[@current].matches?(event) || 
-        (@current == 0 and @previous[-1].matches?(event))
-      end
-
-      def expected
-        return [ @prior.expected, @events[0] ].flatten if @current == 0
-        return [@events[@current]]
-      end
-    end
-
-
-    class ZeroOrMore < Optional
-      def next( event )
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-            @current = 0
-            return self
-          elsif @events[@current].kind_of? State
-            @current += 1
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            return self
-          end
-        else
-          @prior = @previous.pop
-          return @prior.next( event ) if @current == 0
-          return nil
-        end
-      end
-
-      def expected
-        return [ @prior.expected, @events[0] ].flatten if @current == 0
-        return [@events[@current]]
-      end
-    end
-
-
-    class OneOrMore < State
-      def initialize context
-        super
-        @ord = 0
-      end
-
-      def reset
-        super 
-        @ord = 0
-      end
-
-      def next( event )
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          @ord += 1
-          if @events[@current].nil?
-            @current = 0
-            return self
-          elsif @events[@current].kind_of? State
-            @current += 1
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-            return self
-          end
-        else
-          return @previous.pop.next( event ) if @current == 0 and @ord > 0
-          return nil
-        end
-      end
-
-      def matches?( event )
-        @events[@current].matches?(event) || 
-        (@current == 0 and @ord > 0 and @previous[-1].matches?(event))
-      end
-
-      def expected
-        if @current == 0 and @ord > 0
-          return [@previous[-1].expected, @events[0]].flatten
-        else
-          return [@events[@current]]
-        end
-      end
-    end
-
-
-    class Choice < State
-      def initialize context
-        super
-        @choices = []
-      end
-
-      def reset
-        super
-        @events = []
-        @choices.each { |c| c.each { |s| s.reset if s.kind_of? State } }
-      end
-
-      def <<( event )
-        add_event_to_arry( @choices, event )
-      end
-
-      def next( event )
-        # Make the choice if we haven't
-        if @events.size == 0
-          c = 0 ; max = @choices.size
-          while c < max
-            if @choices[c][0].class == Ref
-              expand_ref_in( @choices[c], 0 )
-              @choices += @choices[c]
-              @choices.delete( @choices[c] )
-              max -= 1
-            else
-              c += 1
-            end
-          end
-          @events = @choices.find { |evt| evt[0].matches? event }
-          # Remove the references
-          # Find the events
-        end
-        #puts "In next with #{event.inspect}."
-        #puts "events is #{@events.inspect}"
-        unless @events
-          @events = []
-          return nil
-        end
-        #puts "current = #@current"
-        super
-      end
-
-      def matches?( event )
-        return @events[@current].matches?( event ) if @events.size > 0
-        !@choices.find{|evt| evt[0].matches?(event)}.nil?
-      end
-
-      def expected
-        #puts "IN CHOICE EXPECTED"
-        #puts "EVENTS = #{@events.inspect}"
-        return [@events[@current]] if @events.size > 0
-        return @choices.collect do |x| 
-          if x[0].kind_of? State
-            x[0].expected
-          else
-            x[0]
-          end
-        end.flatten
-      end
-
-      def inspect
-        "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' or ')} >"
-      end
-
-      protected
-      def add_event_to_arry( arry, evt ) 
-        if evt.kind_of? State or evt.class == Ref
-          arry << [evt]
-        elsif evt[0] == :text 
-         if arry[-1] and
-            arry[-1][-1].kind_of?( Event ) and 
-            arry[-1][-1].event_type == :text and @value
-
-            arry[-1][-1].event_arg = evt[1]
-            @value = false
-          end
-        else
-          arry << [] if evt[0] == :start_element
-          arry[-1] << generate_event( evt )
-        end
-      end
-    end
-
-
-    class Interleave < Choice
-      def initialize context
-        super
-        @choice = 0
-      end
-
-      def reset
-        @choice = 0
-      end
-
-      def next_current( event )
-        # Expand references
-        c = 0 ; max = @choices.size
-        while c < max
-          if @choices[c][0].class == Ref
-            expand_ref_in( @choices[c], 0 )
-            @choices += @choices[c]
-            @choices.delete( @choices[c] )
-            max -= 1
-          else
-            c += 1
-          end
-        end
-        @events = @choices[@choice..-1].find { |evt| evt[0].matches? event }
-        @current = 0
-        if @events
-          # reorder the choices
-          old = @choices[@choice]
-          idx = @choices.index( @events )
-          @choices[@choice] = @events
-          @choices[idx] = old
-          @choice += 1
-        end
-        
-       #puts "In next with #{event.inspect}."
-       #puts "events is #{@events.inspect}"
-        @events = [] unless @events
-      end
-
-
-      def next( event )
-        # Find the next series
-        next_current(event) unless @events[@current]
-        return nil unless @events[@current]
-
-        expand_ref_in( @events, @current ) if @events[@current].class == Ref 
-       #puts "In next with #{event.inspect}."
-       #puts "Next (#@current) is #{@events[@current]}"
-        if ( @events[@current].kind_of? State )
-          @current += 1
-          @events[@current-1].previous = self
-          return @events[@current-1].next( event )
-        end
-       #puts "Current isn't a state"
-        return @previous.pop.next( event ) if @events[@current].nil?
-        if ( @events[@current].matches?(event) )
-          @current += 1
-          if @events[@current].nil?
-           #puts "#{inspect[0,5]} 1RETURNING self" unless @choices[@choice].nil?
-            return self unless @choices[@choice].nil?
-           #puts "#{inspect[0,5]} 1RETURNING #{@previous[-1].inspect[0,5]}"
-            return @previous.pop
-          elsif @events[@current].kind_of? State
-            @current += 1
-           #puts "#{inspect[0,5]} 2RETURNING (#{@current-1}) #{@events[@current-1].inspect[0,5]}; on return, next is #{@events[@current]}"
-            @events[@current-1].previous = self
-            return @events[@current-1]
-          else
-           #puts "#{inspect[0,5]} RETURNING self w/ next(#@current) = #{@events[@current]}"
-            return self
-          end
-        else
-          return nil
-        end
-      end
-
-      def matches?( event )
-        return @events[@current].matches?( event ) if @events[@current]
-        !@choices[@choice..-1].find{|evt| evt[0].matches?(event)}.nil?
-      end
-
-      def expected
-        #puts "IN CHOICE EXPECTED"
-        #puts "EVENTS = #{@events.inspect}"
-        return [@events[@current]] if @events[@current]
-        return @choices[@choice..-1].collect do |x| 
-          if x[0].kind_of? State
-            x[0].expected
-          else
-            x[0]
-          end
-        end.flatten
-      end
-
-      def inspect
-        "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' and ')} >"
-      end
-    end
-
-    class Ref
-      def initialize value
-        @value = value
-      end
-      def to_s
-        @value
-      end
-      def inspect
-        "{#{to_s}}"
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validation.rb
deleted file mode 100644
index 160ea96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validation.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-require 'rexml/validation/validationexception'
-
-module REXML
-  module Validation
-    module Validator
-      NILEVENT = [ nil ]
-      def reset
-        @current = @root
-        @root.reset
-        @root.previous = true
-        @attr_stack = []
-        self
-      end
-      def dump
-        puts @root.inspect
-      end
-      def validate( event ) 
-        #puts "Current: #@current"
-        #puts "Event: #{event.inspect}"
-        @attr_stack = [] unless defined? @attr_stack
-        match = @current.next(event)
-        raise ValidationException.new( "Validation error.  Expected: "+
-          @current.expected.join( " or " )+" from #{@current.inspect} "+
-          " but got #{Event.new( event[0], event[1] ).inspect}" ) unless match
-        @current = match
-
-        # Check for attributes
-        case event[0]
-        when :start_element
-          #puts "Checking attributes"
-          @attr_stack << event[2]
-          begin
-            sattr = [:start_attribute, nil]
-            eattr = [:end_attribute]
-            text = [:text, nil]
-            k,v = event[2].find { |k,v| 
-              sattr[1] = k
-              #puts "Looking for #{sattr.inspect}"
-              m = @current.next( sattr )
-              #puts "Got #{m.inspect}"
-              if m 
-                # If the state has text children...
-                #puts "Looking for #{eattr.inspect}"
-                #puts "Expect #{m.expected}"
-                if m.matches?( eattr )
-                  #puts "Got end"
-                  @current = m
-                else
-                  #puts "Didn't get end"
-                  text[1] = v
-                  #puts "Looking for #{text.inspect}"
-                  m = m.next( text )
-                  #puts "Got #{m.inspect}"
-                  text[1] = nil
-                  return false unless m
-                  @current = m if m
-                end
-                m = @current.next( eattr )
-                if m
-                  @current = m
-                  true
-                else
-                  false
-                end
-              else
-                false
-              end
-            }
-            event[2].delete(k) if k
-          end while k
-        when :end_element
-          attrs = @attr_stack.pop
-          raise ValidationException.new( "Validation error.  Illegal "+
-            " attributes: #{attrs.inspect}") if attrs.length > 0
-        end
-      end
-    end
-
-    class Event
-      def initialize(event_type, event_arg=nil )
-        @event_type = event_type
-        @event_arg = event_arg
-      end
-
-      attr_reader :event_type
-      attr_accessor :event_arg
-
-      def done?
-        @done
-      end
-
-      def single?
-        return (@event_type != :start_element and @event_type != :start_attribute)
-      end
-
-      def matches?( event )
-        #puts "#@event_type =? #{event[0]} && #@event_arg =? #{event[1]} "
-        return false unless event[0] == @event_type
-        case event[0]
-        when nil
-          return true
-        when :start_element
-          return true if event[1] == @event_arg
-        when :end_element
-          return true
-        when :start_attribute
-          return true if event[1] == @event_arg
-        when :end_attribute
-          return true
-        when :end_document
-          return true
-        when :text
-          return (@event_arg.nil? or @event_arg == event[1])
-=begin
-        when :processing_instruction
-          false
-        when :xmldecl
-          false
-        when :start_doctype
-          false
-        when :end_doctype
-          false
-        when :externalentity
-          false
-        when :elementdecl
-          false
-        when :entity
-          false
-        when :attlistdecl
-          false
-        when :notationdecl
-          false
-        when :end_doctype
-          false
-=end
-        else
-          false
-        end
-      end
-
-      def ==( other )
-        return false unless other.kind_of? Event
-        @event_type == other.event_type and @event_arg == other.event_arg
-      end
-
-      def to_s
-        inspect
-      end
-
-      def inspect
-        "#{@event_type.inspect}( #@event_arg )"
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validationexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validationexception.rb
deleted file mode 100644
index 4723d9e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/validation/validationexception.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module REXML
-  module Validation
-    class ValidationException < RuntimeError
-      def initialize msg
-        super
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmldecl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmldecl.rb
deleted file mode 100644
index 427eb78..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmldecl.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-require 'rexml/encoding'
-require 'rexml/source'
-
-module REXML
-	# NEEDS DOCUMENTATION
-	class XMLDecl < Child
-		include Encoding
-
-		DEFAULT_VERSION = "1.0";
-		DEFAULT_ENCODING = "UTF-8";
-		DEFAULT_STANDALONE = "no";
-		START = '<\?xml';
-		STOP = '\?>';
-
-		attr_accessor :version, :standalone
-    attr_reader :writeencoding, :writethis
-
-		def initialize(version=DEFAULT_VERSION, encoding=nil, standalone=nil)
-      @writethis = true
-      @writeencoding = !encoding.nil?
-			if version.kind_of? XMLDecl
-				super()
-				@version = version.version
-				self.encoding = version.encoding
-        @writeencoding = version.writeencoding
-				@standalone = version.standalone
-			else
-				super()
-				@version = version
-				self.encoding = encoding
-				@standalone = standalone
-			end
-			@version = DEFAULT_VERSION if @version.nil?
-		end
-
-		def clone
-			XMLDecl.new(self)
-		end
-
-    # indent::
-    #   Ignored.  There must be no whitespace before an XML declaration
-    # transitive::
-    #   Ignored
-    # ie_hack::
-    #   Ignored
-		def write(writer, indent=-1, transitive=false, ie_hack=false)
-      return nil unless @writethis or writer.kind_of? Output
-			writer << START.sub(/\\/u, '')
-      if writer.kind_of? Output
-        writer << " #{content writer.encoding}"
-      else
-        writer << " #{content encoding}"
-      end
-			writer << STOP.sub(/\\/u, '')
-		end
-
-		def ==( other )
-		  other.kind_of?(XMLDecl) and
-		  other.version == @version and
-		  other.encoding == self.encoding and
-		  other.standalone == @standalone
-		end
-
-		def xmldecl version, encoding, standalone
-			@version = version
-			self.encoding = encoding
-			@standalone = standalone
-		end
-
-		def node_type
-			:xmldecl
-		end
-
-		alias :stand_alone? :standalone
-    alias :old_enc= :encoding=
-
-    def encoding=( enc )
-      if enc.nil?
-        self.old_enc = "UTF-8"
-        @writeencoding = false
-      else
-        self.old_enc = enc
-        @writeencoding = true
-      end
-      self.dowrite
-    end
-
-    # Only use this if you do not want the XML declaration to be written;
-    # this object is ignored by the XML writer.  Otherwise, instantiate your
-    # own XMLDecl and add it to the document.
-    #
-    # Note that XML 1.1 documents *must* include an XML declaration
-    def XMLDecl.default
-      rv = XMLDecl.new( "1.0" )
-      rv.nowrite
-      rv
-    end
-
-    def nowrite
-      @writethis = false
-    end
-
-    def dowrite
-      @writethis = true
-    end
-
-    def inspect
-      START.sub(/\\/u, '') + " ... " + STOP.sub(/\\/u, '')
-    end
-
-		private
-		def content(enc)
-			rv = "version='#@version'"
-			rv << " encoding='#{enc}'" if @writeencoding || enc !~ /utf-8/i
-			rv << " standalone='#@standalone'" if @standalone
-			rv
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmltokens.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmltokens.rb
deleted file mode 100644
index 6bbe5b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xmltokens.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module REXML
-	# Defines a number of tokens used for parsing XML.  Not for general
-	# consumption.
-	module XMLTokens
-		NCNAME_STR= '[\w:][\-\w\d.]*'
-		NAME_STR= "(?:#{NCNAME_STR}:)?#{NCNAME_STR}"
-
-		NAMECHAR = '[\-\w\d\.:]'
-		NAME = "([\\w:]#{NAMECHAR}*)"
-		NMTOKEN = "(?:#{NAMECHAR})+"
-		NMTOKENS = "#{NMTOKEN}(\\s+#{NMTOKEN})*"
-		REFERENCE = "(?:&#{NAME};|&#\\d+;|&#x[0-9a-fA-F]+;)"
-
-		#REFERENCE = "(?:#{ENTITYREF}|#{CHARREF})"
-		#ENTITYREF = "&#{NAME};"
-		#CHARREF = "&#\\d+;|&#x[0-9a-fA-F]+;"
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath.rb
deleted file mode 100644
index 939399e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'rexml/functions'
-require 'rexml/xpath_parser'
-
-module REXML
-	# Wrapper class.  Use this class to access the XPath functions.
-	class XPath
-		include Functions
-		EMPTY_HASH = {}
-
-		# Finds and returns the first node that matches the supplied xpath.
-		# element::
-		# 	The context element
-		# path::
-		# 	The xpath to search for.  If not supplied or nil, returns the first
-		# 	node matching '*'.
-		# namespaces::
-		# 	If supplied, a Hash which defines a namespace mapping.
-		#
-		#  XPath.first( node )
-		#  XPath.first( doc, "//b"} )
-		#  XPath.first( node, "a/x:b", { "x"=>"http://doofus" } )
-    def XPath::first element, path=nil, namespaces=nil, variables={}
-      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
-      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path, element).flatten[0]
-		end
-
-		# Itterates over nodes that match the given path, calling the supplied
-		# block with the match.
-		# element::
-		#   The context element
-		# path::
-		#   The xpath to search for.  If not supplied or nil, defaults to '*'
-		# namespaces::
-		# 	If supplied, a Hash which defines a namespace mapping
-		#
-		#  XPath.each( node ) { |el| ... }
-		#  XPath.each( node, '/*[@attr='v']' ) { |el| ... }
-		#  XPath.each( node, 'ancestor::x' ) { |el| ... }
-		def XPath::each element, path=nil, namespaces=nil, variables={}, &block
-      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
-      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path, element).each( &block )
-		end
-
-		# Returns an array of nodes matching a given XPath.  
-		def XPath::match element, path=nil, namespaces=nil, variables={}
-			parser = XPathParser.new
-			parser.namespaces = namespaces
-			parser.variables = variables
-			path = "*" unless path
-			element = [element] unless element.kind_of? Array
-			parser.parse(path,element)
-		end
-	end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath_parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath_parser.rb
deleted file mode 100644
index eb608fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rexml/xpath_parser.rb
+++ /dev/null
@@ -1,792 +0,0 @@
-require 'rexml/namespace'
-require 'rexml/xmltokens'
-require 'rexml/attribute'
-require 'rexml/syncenumerator'
-require 'rexml/parsers/xpathparser'
-
-class Object
-  def dclone
-    clone
-  end
-end
-class Symbol
-  def dclone ; self ; end
-end
-class Fixnum
-  def dclone ; self ; end
-end
-class Float
-  def dclone ; self ; end
-end
-class Array
-  def dclone
-    klone = self.clone
-    klone.clear
-    self.each{|v| klone << v.dclone}
-    klone
-  end
-end
-
-module REXML
-  # You don't want to use this class.  Really.  Use XPath, which is a wrapper
-  # for this class.  Believe me.  You don't want to poke around in here.
-  # There is strange, dark magic at work in this code.  Beware.  Go back!  Go
-  # back while you still can!
-  class XPathParser
-    include XMLTokens
-    LITERAL    = /^'([^']*)'|^"([^"]*)"/u
-
-    def initialize( )
-      @parser = REXML::Parsers::XPathParser.new
-      @namespaces = nil
-      @variables = {}
-    end
-
-    def namespaces=( namespaces={} )
-      Functions::namespace_context = namespaces
-      @namespaces = namespaces
-    end
-
-    def variables=( vars={} )
-      Functions::variables = vars
-      @variables = vars
-    end
-
-    def parse path, nodeset
-     #puts "#"*40
-     path_stack = @parser.parse( path )
-     #puts "PARSE: #{path} => #{path_stack.inspect}"
-     #puts "PARSE: nodeset = #{nodeset.inspect}"
-     match( path_stack, nodeset )
-    end
-
-    def get_first path, nodeset
-     #puts "#"*40
-     path_stack = @parser.parse( path )
-     #puts "PARSE: #{path} => #{path_stack.inspect}"
-     #puts "PARSE: nodeset = #{nodeset.inspect}"
-     first( path_stack, nodeset )
-    end
-
-    def predicate path, nodeset
-      path_stack = @parser.parse( path )
-      expr( path_stack, nodeset )
-    end
-
-    def []=( variable_name, value )
-      @variables[ variable_name ] = value
-    end
-
-
-    # Performs a depth-first (document order) XPath search, and returns the
-    # first match.  This is the fastest, lightest way to return a single result.
-    #
-    # FIXME: This method is incomplete!
-    def first( path_stack, node )
-      #puts "#{depth}) Entering match( #{path.inspect}, #{tree.inspect} )"
-      return nil if path.size == 0
-
-      case path[0]
-      when :document
-        # do nothing 
-        return first( path[1..-1], node )
-      when :child
-        for c in node.children
-          #puts "#{depth}) CHILD checking #{name(c)}"
-          r = first( path[1..-1], c )
-          #puts "#{depth}) RETURNING #{r.inspect}" if r
-          return r if r
-        end
-      when :qname
-        name = path[2]
-        #puts "#{depth}) QNAME #{name(tree)} == #{name} (path => #{path.size})"
-        if node.name == name
-          #puts "#{depth}) RETURNING #{tree.inspect}" if path.size == 3
-          return node if path.size == 3
-          return first( path[3..-1], node )
-        else
-          return nil
-        end
-      when :descendant_or_self
-        r = first( path[1..-1], node )
-        return r if r
-        for c in node.children
-          r = first( path, c )
-          return r if r
-        end
-      when :node
-        return first( path[1..-1], node )
-      when :any
-        return first( path[1..-1], node )
-      end
-      return nil
-    end
-
-
-    def match( path_stack, nodeset ) 
-      #puts "MATCH: path_stack = #{path_stack.inspect}"
-      #puts "MATCH: nodeset = #{nodeset.inspect}"
-      r = expr( path_stack, nodeset )
-      #puts "MAIN EXPR => #{r.inspect}"
-      r
-    end
-
-    private
-
-
-    # Returns a String namespace for a node, given a prefix
-    # The rules are:
-    # 
-    #  1. Use the supplied namespace mapping first.
-    #  2. If no mapping was supplied, use the context node to look up the namespace
-    def get_namespace( node, prefix )
-      if @namespaces
-        return @namespaces[prefix] || ''
-      else
-        return node.namespace( prefix ) if node.node_type == :element
-        return ''
-      end
-    end
-
-
-    # Expr takes a stack of path elements and a set of nodes (either a Parent
-    # or an Array and returns an Array of matching nodes
-    ALL = [ :attribute, :element, :text, :processing_instruction, :comment ]
-    ELEMENTS = [ :element ]
-    def expr( path_stack, nodeset, context=nil )
-      #puts "#"*15
-      #puts "In expr with #{path_stack.inspect}"
-      #puts "Returning" if path_stack.length == 0 || nodeset.length == 0
-      node_types = ELEMENTS
-      return nodeset if path_stack.length == 0 || nodeset.length == 0
-      while path_stack.length > 0
-        #puts "#"*5
-        #puts "Path stack = #{path_stack.inspect}"
-        #puts "Nodeset is #{nodeset.inspect}"
-        if nodeset.length == 0
-          path_stack.clear
-          return []
-        end
-        case (op = path_stack.shift)
-        when :document
-          nodeset = [ nodeset[0].root_node ]
-          #puts ":document, nodeset = #{nodeset.inspect}"
-
-        when :qname
-          #puts "IN QNAME"
-          prefix = path_stack.shift
-          name = path_stack.shift
-          nodeset.delete_if do |node|
-            # FIXME: This DOUBLES the time XPath searches take
-            ns = get_namespace( node, prefix )
-            #puts "NS = #{ns.inspect}"
-            #puts "node.node_type == :element => #{node.node_type == :element}"
-            if node.node_type == :element
-              #puts "node.name == #{name} => #{node.name == name}"
-              if node.name == name
-                #puts "node.namespace == #{ns.inspect} => #{node.namespace == ns}"
-              end
-            end
-            !(node.node_type == :element and 
-              node.name == name and 
-              node.namespace == ns )
-          end
-          node_types = ELEMENTS
-
-        when :any
-          #puts "ANY 1: nodeset = #{nodeset.inspect}"
-          #puts "ANY 1: node_types = #{node_types.inspect}"
-          nodeset.delete_if { |node| !node_types.include?(node.node_type) }
-          #puts "ANY 2: nodeset = #{nodeset.inspect}"
-
-        when :self
-          # This space left intentionally blank
-
-        when :processing_instruction
-          target = path_stack.shift
-          nodeset.delete_if do |node|
-            (node.node_type != :processing_instruction) or 
-            ( target!='' and ( node.target != target ) )
-          end
-
-        when :text
-          nodeset.delete_if { |node| node.node_type != :text }
-
-        when :comment
-          nodeset.delete_if { |node| node.node_type != :comment }
-
-        when :node
-          # This space left intentionally blank
-          node_types = ALL
-
-        when :child
-          new_nodeset = []
-          nt = nil
-          for node in nodeset
-            nt = node.node_type
-            new_nodeset += node.children if nt == :element or nt == :document
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :literal
-          return path_stack.shift
-        
-        when :attribute
-          new_nodeset = []
-          case path_stack.shift
-          when :qname
-            prefix = path_stack.shift
-            name = path_stack.shift
-            for element in nodeset
-              if element.node_type == :element
-                #puts "Element name = #{element.name}"
-                #puts "get_namespace( #{element.inspect}, #{prefix} ) = #{get_namespace(element, prefix)}"
-                attrib = element.attribute( name, get_namespace(element, prefix) )
-                #puts "attrib = #{attrib.inspect}"
-                new_nodeset << attrib if attrib
-              end
-            end
-          when :any
-            #puts "ANY"
-            for element in nodeset
-              if element.node_type == :element
-                new_nodeset += element.attributes.to_a
-              end
-            end
-          end
-          nodeset = new_nodeset
-
-        when :parent
-          #puts "PARENT 1: nodeset = #{nodeset}"
-          nodeset = nodeset.collect{|n| n.parent}.compact
-          #nodeset = expr(path_stack.dclone, nodeset.collect{|n| n.parent}.compact)
-          #puts "PARENT 2: nodeset = #{nodeset.inspect}"
-          node_types = ELEMENTS
-
-        when :ancestor
-          new_nodeset = []
-          for node in nodeset
-            while node.parent
-              node = node.parent
-              new_nodeset << node unless new_nodeset.include? node
-            end
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :ancestor_or_self
-          new_nodeset = []
-          for node in nodeset
-            if node.node_type == :element
-              new_nodeset << node
-              while ( node.parent )
-                node = node.parent
-                new_nodeset << node unless new_nodeset.include? node
-              end
-            end
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :predicate
-          new_nodeset = []
-          subcontext = { :size => nodeset.size }
-          pred = path_stack.shift
-          nodeset.each_with_index { |node, index|
-            subcontext[ :node ] = node
-            #puts "PREDICATE SETTING CONTEXT INDEX TO #{index+1}"
-            subcontext[ :index ] = index+1
-            pc = pred.dclone
-            #puts "#{node.hash}) Recursing with #{pred.inspect} and [#{node.inspect}]"
-            result = expr( pc, [node], subcontext )
-            result = result[0] if result.kind_of? Array and result.length == 1
-            #puts "#{node.hash}) Result = #{result.inspect} (#{result.class.name})"
-            if result.kind_of? Numeric
-              #puts "Adding node #{node.inspect}" if result == (index+1)
-              new_nodeset << node if result == (index+1)
-            elsif result.instance_of? Array
-              if result.size > 0 and result.inject(false) {|k,s| s or k}
-                #puts "Adding node #{node.inspect}" if result.size > 0
-                new_nodeset << node if result.size > 0
-              end
-            else
-              #puts "Adding node #{node.inspect}" if result
-              new_nodeset << node if result
-            end
-          }
-          #puts "New nodeset = #{new_nodeset.inspect}"
-          #puts "Path_stack  = #{path_stack.inspect}"
-          nodeset = new_nodeset
-=begin
-          predicate = path_stack.shift
-          ns = nodeset.clone
-          result = expr( predicate, ns )
-          #puts "Result = #{result.inspect} (#{result.class.name})"
-          #puts "nodeset = #{nodeset.inspect}"
-          if result.kind_of? Array
-            nodeset = result.zip(ns).collect{|m,n| n if m}.compact
-          else
-            nodeset = result ? nodeset : []
-          end
-          #puts "Outgoing NS = #{nodeset.inspect}"
-=end
-
-        when :descendant_or_self
-          rv = descendant_or_self( path_stack, nodeset )
-          path_stack.clear
-          nodeset = rv
-          node_types = ELEMENTS
-
-        when :descendant
-          results = []
-          nt = nil
-          for node in nodeset
-            nt = node.node_type
-            results += expr( path_stack.dclone.unshift( :descendant_or_self ),
-              node.children ) if nt == :element or nt == :document
-          end
-          nodeset = results
-          node_types = ELEMENTS
-
-        when :following_sibling
-          #puts "FOLLOWING_SIBLING 1: nodeset = #{nodeset}"
-          results = []
-          nodeset.each do |node|
-            next if node.parent.nil?
-            all_siblings = node.parent.children
-            current_index = all_siblings.index( node )
-            following_siblings = all_siblings[ current_index+1 .. -1 ]
-            results += expr( path_stack.dclone, following_siblings )
-          end
-          #puts "FOLLOWING_SIBLING 2: nodeset = #{nodeset}"
-          nodeset = results
-
-        when :preceding_sibling
-          results = []
-          nodeset.each do |node|
-            next if node.parent.nil?
-            all_siblings = node.parent.children
-            current_index = all_siblings.index( node )
-            preceding_siblings = all_siblings[ 0, current_index ].reverse
-            results += preceding_siblings
-          end
-          nodeset = results
-          node_types = ELEMENTS
-
-        when :preceding
-          new_nodeset = []
-          for node in nodeset
-            new_nodeset += preceding( node )
-          end
-          #puts "NEW NODESET => #{new_nodeset.inspect}"
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :following
-          new_nodeset = []
-          for node in nodeset
-            new_nodeset += following( node )
-          end
-          nodeset = new_nodeset
-          node_types = ELEMENTS
-
-        when :namespace
-          #puts "In :namespace"
-          new_nodeset = []
-          prefix = path_stack.shift
-          for node in nodeset
-            if (node.node_type == :element or node.node_type == :attribute)
-              if @namespaces
-                namespaces = @namespaces
-              elsif (node.node_type == :element)
-                namespaces = node.namespaces
-              else
-                namespaces = node.element.namesapces
-              end
-              #puts "Namespaces = #{namespaces.inspect}"
-              #puts "Prefix = #{prefix.inspect}"
-              #puts "Node.namespace = #{node.namespace}"
-              if (node.namespace == namespaces[prefix])
-                new_nodeset << node
-              end
-            end
-          end
-          nodeset = new_nodeset
-
-        when :variable
-          var_name = path_stack.shift
-          return @variables[ var_name ]
-
-        # :and, :or, :eq, :neq, :lt, :lteq, :gt, :gteq
-				# TODO: Special case for :or and :and -- not evaluate the right
-				# operand if the left alone determines result (i.e. is true for
-				# :or and false for :and).
-        when :eq, :neq, :lt, :lteq, :gt, :gteq, :and, :or
-          left = expr( path_stack.shift, nodeset.dup, context )
-          #puts "LEFT => #{left.inspect} (#{left.class.name})"
-          right = expr( path_stack.shift, nodeset.dup, context )
-          #puts "RIGHT => #{right.inspect} (#{right.class.name})"
-          res = equality_relational_compare( left, op, right )
-          #puts "RES => #{res.inspect}"
-          return res
-
-        when :and
-          left = expr( path_stack.shift, nodeset.dup, context )
-          #puts "LEFT => #{left.inspect} (#{left.class.name})"
-          if left == false || left.nil? || !left.inject(false) {|a,b| a | b}
-            return []
-          end
-          right = expr( path_stack.shift, nodeset.dup, context )
-          #puts "RIGHT => #{right.inspect} (#{right.class.name})"
-          res = equality_relational_compare( left, op, right )
-          #puts "RES => #{res.inspect}"
-          return res
-
-        when :div
-          left = Functions::number(expr(path_stack.shift, nodeset, context)).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context)).to_f
-          return (left / right)
-
-        when :mod
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left % right)
-
-        when :mult
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left * right)
-
-        when :plus
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left + right)
-
-        when :minus
-          left = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          right = Functions::number(expr(path_stack.shift, nodeset, context )).to_f
-          return (left - right)
-
-        when :union
-          left = expr( path_stack.shift, nodeset, context )
-          right = expr( path_stack.shift, nodeset, context )
-          return (left | right)
-
-        when :neg
-          res = expr( path_stack, nodeset, context )
-          return -(res.to_f)
-
-        when :not
-        when :function
-          func_name = path_stack.shift.tr('-','_')
-          arguments = path_stack.shift
-          #puts "FUNCTION 0: #{func_name}(#{arguments.collect{|a|a.inspect}.join(', ')})" 
-          subcontext = context ? nil : { :size => nodeset.size }
-
-          res = []
-          cont = context
-          nodeset.each_with_index { |n, i| 
-            if subcontext
-              subcontext[:node]  = n
-              subcontext[:index] = i
-              cont = subcontext
-            end
-            arg_clone = arguments.dclone
-            args = arg_clone.collect { |arg| 
-              #puts "FUNCTION 1: Calling expr( #{arg.inspect}, [#{n.inspect}] )"
-              expr( arg, [n], cont ) 
-            }
-            #puts "FUNCTION 2: #{func_name}(#{args.collect{|a|a.inspect}.join(', ')})" 
-            Functions.context = cont
-            res << Functions.send( func_name, *args )
-            #puts "FUNCTION 3: #{res[-1].inspect}"
-          }
-          return res
-
-        end
-      end # while
-      #puts "EXPR returning #{nodeset.inspect}"
-      return nodeset
-    end
-
-
-    ##########################################################
-    # FIXME
-    # The next two methods are BAD MOJO!
-    # This is my achilles heel.  If anybody thinks of a better
-    # way of doing this, be my guest.  This really sucks, but 
-    # it is a wonder it works at all.
-    # ########################################################
-    
-    def descendant_or_self( path_stack, nodeset )
-      rs = []
-      #puts "#"*80
-      #puts "PATH_STACK = #{path_stack.inspect}"
-      #puts "NODESET = #{nodeset.collect{|n|n.inspect}.inspect}"
-      d_o_s( path_stack, nodeset, rs )
-      #puts "RS = #{rs.collect{|n|n.inspect}.inspect}"
-      document_order(rs.flatten.compact)
-      #rs.flatten.compact
-    end
-
-    def d_o_s( p, ns, r )
-      #puts "IN DOS with #{ns.inspect}; ALREADY HAVE #{r.inspect}"
-      nt = nil
-      ns.each_index do |i|
-        n = ns[i]
-        #puts "P => #{p.inspect}"
-        x = expr( p.dclone, [ n ] )
-        nt = n.node_type
-        d_o_s( p, n.children, x ) if nt == :element or nt == :document and n.children.size > 0
-        r.concat(x) if x.size > 0
-      end
-    end
-
-
-    # Reorders an array of nodes so that they are in document order
-    # It tries to do this efficiently.
-    #
-    # FIXME: I need to get rid of this, but the issue is that most of the XPath 
-    # interpreter functions as a filter, which means that we lose context going
-    # in and out of function calls.  If I knew what the index of the nodes was,
-    # I wouldn't have to do this.  Maybe add a document IDX for each node?
-    # Problems with mutable documents.  Or, rewrite everything.
-    def document_order( array_of_nodes )
-      new_arry = []
-      array_of_nodes.each { |node|
-        node_idx = [] 
-        np = node.node_type == :attribute ? node.element : node
-        while np.parent and np.parent.node_type == :element
-          node_idx << np.parent.index( np )
-          np = np.parent
-        end
-        new_arry << [ node_idx.reverse, node ]
-      }
-      #puts "new_arry = #{new_arry.inspect}"
-      new_arry.sort{ |s1, s2| s1[0] <=> s2[0] }.collect{ |s| s[1] }
-    end
-
-
-    def recurse( nodeset, &block )
-      for node in nodeset
-        yield node
-        recurse( node, &block ) if node.node_type == :element
-      end
-    end
-
-
-
-    # Builds a nodeset of all of the preceding nodes of the supplied node,
-    # in reverse document order
-    # preceding:: includes every element in the document that precedes this node, 
-    # except for ancestors
-    def preceding( node )
-      #puts "IN PRECEDING"
-      ancestors = []
-      p = node.parent
-      while p
-        ancestors << p
-        p = p.parent
-      end
-
-      acc = []
-      p = preceding_node_of( node )
-      #puts "P = #{p.inspect}"
-      while p
-        if ancestors.include? p
-          ancestors.delete(p)
-        else
-          acc << p
-        end
-        p = preceding_node_of( p )
-        #puts "P = #{p.inspect}"
-      end
-      acc
-    end
-
-    def preceding_node_of( node )
-     #puts "NODE: #{node.inspect}"
-     #puts "PREVIOUS NODE: #{node.previous_sibling_node.inspect}"
-     #puts "PARENT NODE: #{node.parent}"
-      psn = node.previous_sibling_node 
-      if psn.nil?
-        if node.parent.nil? or node.parent.class == Document 
-          return nil
-        end
-        return node.parent
-        #psn = preceding_node_of( node.parent )
-      end
-      while psn and psn.kind_of? Element and psn.children.size > 0
-        psn = psn.children[-1]
-      end
-      psn
-    end
-
-    def following( node )
-      #puts "IN PRECEDING"
-      acc = []
-      p = next_sibling_node( node )
-      #puts "P = #{p.inspect}"
-      while p
-        acc << p
-        p = following_node_of( p )
-        #puts "P = #{p.inspect}"
-      end
-      acc
-    end
-
-    def following_node_of( node )
-      #puts "NODE: #{node.inspect}"
-      #puts "PREVIOUS NODE: #{node.previous_sibling_node.inspect}"
-      #puts "PARENT NODE: #{node.parent}"
-      if node.kind_of? Element and node.children.size > 0
-        return node.children[0]
-      end
-      return next_sibling_node(node)
-    end
-
-    def next_sibling_node(node)
-      psn = node.next_sibling_node 
-      while psn.nil?
-        if node.parent.nil? or node.parent.class == Document 
-          return nil
-        end
-        node = node.parent
-        psn = node.next_sibling_node
-        #puts "psn = #{psn.inspect}"
-      end
-      return psn
-    end
-
-    def norm b
-      case b
-      when true, false
-        return b
-      when 'true', 'false'
-        return Functions::boolean( b )
-      when /^\d+(\.\d+)?$/
-        return Functions::number( b )
-      else
-        return Functions::string( b )
-      end
-    end
-
-    def equality_relational_compare( set1, op, set2 )
-      #puts "EQ_REL_COMP(#{set1.inspect} #{op.inspect} #{set2.inspect})"
-      if set1.kind_of? Array and set2.kind_of? Array
-			  #puts "#{set1.size} & #{set2.size}"
-        if set1.size == 1 and set2.size == 1
-          set1 = set1[0]
-          set2 = set2[0]
-        elsif set1.size == 0 or set2.size == 0
-          nd = set1.size==0 ? set2 : set1
-          rv = nd.collect { |il| compare( il, op, nil ) }
-          #puts "RV = #{rv.inspect}"
-          return rv
-        else
-          res = []
-          enum = SyncEnumerator.new( set1, set2 ).each { |i1, i2|
-            #puts "i1 = #{i1.inspect} (#{i1.class.name})"
-            #puts "i2 = #{i2.inspect} (#{i2.class.name})"
-            i1 = norm( i1 )
-            i2 = norm( i2 )
-            res << compare( i1, op, i2 )
-          }
-          return res
-        end
-      end
-		  #puts "EQ_REL_COMP: #{set1.inspect} (#{set1.class.name}), #{op}, #{set2.inspect} (#{set2.class.name})"
-      #puts "COMPARING VALUES"
-      # If one is nodeset and other is number, compare number to each item
-      # in nodeset s.t. number op number(string(item))
-      # If one is nodeset and other is string, compare string to each item
-      # in nodeset s.t. string op string(item)
-      # If one is nodeset and other is boolean, compare boolean to each item
-      # in nodeset s.t. boolean op boolean(item)
-      if set1.kind_of? Array or set2.kind_of? Array
-			  #puts "ISA ARRAY"
-        if set1.kind_of? Array
-          a = set1
-          b = set2
-        else
-          a = set2
-          b = set1
-        end
-
-        case b
-        when true, false
-          return a.collect {|v| compare( Functions::boolean(v), op, b ) }
-        when Numeric
-          return a.collect {|v| compare( Functions::number(v), op, b )}
-        when /^\d+(\.\d+)?$/
-          b = Functions::number( b )
-          #puts "B = #{b.inspect}"
-          return a.collect {|v| compare( Functions::number(v), op, b )}
-        else
-				  #puts "Functions::string( #{b}(#{b.class.name}) ) = #{Functions::string(b)}"
-          b = Functions::string( b )
-          return a.collect { |v| compare( Functions::string(v), op, b ) }
-        end
-      else
-        # If neither is nodeset,
-        #   If op is = or !=
-        #     If either boolean, convert to boolean
-        #     If either number, convert to number
-        #     Else, convert to string
-        #   Else
-        #     Convert both to numbers and compare
-        s1 = set1.to_s
-        s2 = set2.to_s
-        #puts "EQ_REL_COMP: #{set1}=>#{s1}, #{set2}=>#{s2}"
-        if s1 == 'true' or s1 == 'false' or s2 == 'true' or s2 == 'false'
-          #puts "Functions::boolean(#{set1})=>#{Functions::boolean(set1)}"
-          #puts "Functions::boolean(#{set2})=>#{Functions::boolean(set2)}"
-          set1 = Functions::boolean( set1 )
-          set2 = Functions::boolean( set2 )
-        else
-          if op == :eq or op == :neq
-            if s1 =~ /^\d+(\.\d+)?$/ or s2 =~ /^\d+(\.\d+)?$/
-              set1 = Functions::number( s1 )
-              set2 = Functions::number( s2 )
-            else
-              set1 = Functions::string( set1 )
-              set2 = Functions::string( set2 )
-            end
-          else
-            set1 = Functions::number( set1 )
-            set2 = Functions::number( set2 )
-          end
-        end
-        #puts "EQ_REL_COMP: #{set1} #{op} #{set2}"
-        #puts ">>> #{compare( set1, op, set2 )}"
-        return compare( set1, op, set2 )
-      end
-      return false
-    end
-
-    def compare a, op, b
-      #puts "COMPARE #{a.inspect}(#{a.class.name}) #{op} #{b.inspect}(#{b.class.name})"
-      case op
-      when :eq
-        a == b
-      when :neq
-        a != b
-      when :lt
-        a < b
-      when :lteq
-        a <= b
-      when :gt
-        a > b
-      when :gteq
-        a >= b
-      when :and
-        a and b
-      when :or
-        a or b
-      else
-        false
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/rinda.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/rinda.rb
deleted file mode 100644
index 6c59e68..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/rinda.rb
+++ /dev/null
@@ -1,283 +0,0 @@
-require 'drb/drb'
-require 'thread'
-
-##
-# A module to implement the Linda distributed computing paradigm in Ruby.
-#
-# Rinda is part of DRb (dRuby).
-#
-# == Example(s)
-#
-# See the sample/drb/ directory in the Ruby distribution, from 1.8.2 onwards.
-#
-#--
-# TODO
-# == Introduction to Linda/rinda?
-#
-# == Why is this library separate from DRb?
-
-module Rinda
-
-  ##
-  # Rinda error base class
-
-  class RindaError < RuntimeError; end
-
-  ##
-  # Raised when a hash-based tuple has an invalid key.
-
-  class InvalidHashTupleKey < RindaError; end
-
-  ##
-  # Raised when trying to use a canceled tuple.
-
-  class RequestCanceledError < ThreadError; end
-
-  ##
-  # Raised when trying to use an expired tuple.
-
-  class RequestExpiredError < ThreadError; end
-
-  ##
-  # A tuple is the elementary object in Rinda programming.
-  # Tuples may be matched against templates if the tuple and
-  # the template are the same size.
-
-  class Tuple
-
-    ##
-    # Creates a new Tuple from +ary_or_hash+ which must be an Array or Hash.
-
-    def initialize(ary_or_hash)
-      if hash?(ary_or_hash)
-        init_with_hash(ary_or_hash)
-      else
-        init_with_ary(ary_or_hash)
-      end
-    end
-
-    ##
-    # The number of elements in the tuple.
-    
-    def size
-      @tuple.size
-    end
-
-    ##
-    # Accessor method for elements of the tuple.
-
-    def [](k)
-      @tuple[k]
-    end
-
-    ##
-    # Fetches item +k+ from the tuple.
-
-    def fetch(k)
-      @tuple.fetch(k)
-    end
-
-    ##
-    # Iterate through the tuple, yielding the index or key, and the
-    # value, thus ensuring arrays are iterated similarly to hashes.
-
-    def each # FIXME
-      if Hash === @tuple
-        @tuple.each { |k, v| yield(k, v) }
-      else
-        @tuple.each_with_index { |v, k| yield(k, v) }
-      end
-    end
-
-    ##
-    # Return the tuple itself
-    def value
-      @tuple
-    end
-
-    private
-
-    def hash?(ary_or_hash)
-      ary_or_hash.respond_to?(:keys)
-    end
-
-    ##
-    # Munges +ary+ into a valid Tuple.
-
-    def init_with_ary(ary)
-      @tuple = Array.new(ary.size)
-      @tuple.size.times do |i|
-        @tuple[i] = ary[i]
-      end
-    end
-
-    ##
-    # Ensures +hash+ is a valid Tuple.
-
-    def init_with_hash(hash)
-      @tuple = Hash.new
-      hash.each do |k, v|
-        raise InvalidHashTupleKey unless String === k
-        @tuple[k] = v
-      end
-    end
-
-  end
-
-  ##
-  # Templates are used to match tuples in Rinda.
-
-  class Template < Tuple
-
-    ##
-    # Matches this template against +tuple+.  The +tuple+ must be the same
-    # size as the template.  An element with a +nil+ value in a template acts
-    # as a wildcard, matching any value in the corresponding position in the
-    # tuple.  Elements of the template match the +tuple+ if the are #== or
-    # #===.
-    #
-    #   Template.new([:foo, 5]).match   Tuple.new([:foo, 5]) # => true
-    #   Template.new([:foo, nil]).match Tuple.new([:foo, 5]) # => true
-    #   Template.new([String]).match    Tuple.new(['hello']) # => true
-    #
-    #   Template.new([:foo]).match      Tuple.new([:foo, 5]) # => false
-    #   Template.new([:foo, 6]).match   Tuple.new([:foo, 5]) # => false
-    #   Template.new([:foo, nil]).match Tuple.new([:foo])    # => false
-    #   Template.new([:foo, 6]).match   Tuple.new([:foo])    # => false
-
-    def match(tuple)
-      return false unless tuple.respond_to?(:size)
-      return false unless tuple.respond_to?(:fetch)
-      return false unless self.size == tuple.size
-      each do |k, v|
-        begin
-          it = tuple.fetch(k)
-        rescue
-          return false
-        end
-        next if v.nil?
-        next if v == it
-        next if v === it
-        return false
-      end
-      return true
-    end
-    
-    ##
-    # Alias for #match.
-
-    def ===(tuple)
-      match(tuple)
-    end
-
-  end
-  
-  ##
-  # <i>Documentation?</i>
-
-  class DRbObjectTemplate
-
-    ##
-    # Creates a new DRbObjectTemplate that will match against +uri+ and +ref+.
-
-    def initialize(uri=nil, ref=nil)
-      @drb_uri = uri
-      @drb_ref = ref
-    end
-    
-    ##
-    # This DRbObjectTemplate matches +ro+ if the remote object's drburi and
-    # drbref are the same.  +nil+ is used as a wildcard.
-
-    def ===(ro)
-      return true if super(ro)
-      unless @drb_uri.nil?
-        return false unless (@drb_uri === ro.__drburi rescue false)
-      end
-      unless @drb_ref.nil?
-        return false unless (@drb_ref === ro.__drbref rescue false)
-      end
-      true
-    end
-
-  end
-
-  ##
-  # TupleSpaceProxy allows a remote Tuplespace to appear as local.
-
-  class TupleSpaceProxy
-
-    ##
-    # Creates a new TupleSpaceProxy to wrap +ts+.
-
-    def initialize(ts)
-      @ts = ts
-    end
-    
-    ##
-    # Adds +tuple+ to the proxied TupleSpace.  See TupleSpace#write.
-
-    def write(tuple, sec=nil)
-      @ts.write(tuple, sec)
-    end
-    
-    ##
-    # Takes +tuple+ from the proxied TupleSpace.  See TupleSpace#take.
-
-    def take(tuple, sec=nil, &block)
-      port = []
-      @ts.move(DRbObject.new(port), tuple, sec, &block)
-      port[0]
-    end
-    
-    ##
-    # Reads +tuple+ from the proxied TupleSpace.  See TupleSpace#read.
-
-    def read(tuple, sec=nil, &block)
-      @ts.read(tuple, sec, &block)
-    end
-    
-    ##
-    # Reads all tuples matching +tuple+ from the proxied TupleSpace.  See
-    # TupleSpace#read_all.
-
-    def read_all(tuple)
-      @ts.read_all(tuple)
-    end
-    
-    ##
-    # Registers for notifications of event +ev+ on the proxied TupleSpace.
-    # See TupleSpace#notify
-
-    def notify(ev, tuple, sec=nil)
-      @ts.notify(ev, tuple, sec)
-    end
-
-  end
-
-  ##
-  # An SimpleRenewer allows a TupleSpace to check if a TupleEntry is still
-  # alive.
-
-  class SimpleRenewer
-
-    include DRbUndumped
-
-    ##
-    # Creates a new SimpleRenewer that keeps an object alive for another +sec+
-    # seconds.
-
-    def initialize(sec=180)
-      @sec = sec
-    end
-
-    ##
-    # Called by the TupleSpace to check if the object is still alive.
-
-    def renew
-      @sec
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/ring.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/ring.rb
deleted file mode 100644
index ac8a716..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/ring.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-#
-# Note: Rinda::Ring API is unstable.
-#
-require 'drb/drb'
-require 'rinda/rinda'
-require 'thread'
-
-module Rinda
-
-  ##
-  # The default port Ring discovery will use.
-
-  Ring_PORT = 7647
-
-  ##
-  # A RingServer allows a Rinda::TupleSpace to be located via UDP broadcasts.
-  # Service location uses the following steps:
-  #
-  # 1. A RingServer begins listening on the broadcast UDP address.
-  # 2. A RingFinger sends a UDP packet containing the DRb URI where it will
-  #    listen for a reply.
-  # 3. The RingServer recieves the UDP packet and connects back to the
-  #    provided DRb URI with the DRb service.
-
-  class RingServer
-
-    include DRbUndumped
-
-    ##
-    # Advertises +ts+ on the UDP broadcast address at +port+.
-
-    def initialize(ts, port=Ring_PORT)
-      @ts = ts
-      @soc = UDPSocket.open
-      @soc.bind('', port)
-      @w_service = write_service
-      @r_service = reply_service
-    end
-
-    ##
-    # Creates a thread that picks up UDP packets and passes them to do_write
-    # for decoding.
-
-    def write_service
-      Thread.new do
-	loop do
-	  msg = @soc.recv(1024)
-	  do_write(msg)
-	end
-      end
-    end
-  
-    ##
-    # Extracts the response URI from +msg+ and adds it to TupleSpace where it
-    # will be picked up by +reply_service+ for notification.
-
-    def do_write(msg)
-      Thread.new do
-	begin
-	  tuple, sec = Marshal.load(msg)
-	  @ts.write(tuple, sec)
-	rescue
-	end
-      end
-    end
-
-    ##
-    # Creates a thread that notifies waiting clients from the TupleSpace.
-
-    def reply_service
-      Thread.new do
-	loop do
-	  do_reply
-	end
-      end
-    end
-    
-    ##
-    # Pulls lookup tuples out of the TupleSpace and sends their DRb object the
-    # address of the local TupleSpace.
-
-    def do_reply
-      tuple = @ts.take([:lookup_ring, nil])
-      Thread.new { tuple[1].call(@ts) rescue nil}
-    rescue
-    end
-
-  end
-
-  ##
-  # RingFinger is used by RingServer clients to discover the RingServer's
-  # TupleSpace.  Typically, all a client needs to do is call
-  # RingFinger.primary to retrieve the remote TupleSpace, which it can then
-  # begin using.
-
-  class RingFinger
-
-    @@broadcast_list = ['<broadcast>', 'localhost']
-
-    @@finger = nil
-
-    ##
-    # Creates a singleton RingFinger and looks for a RingServer.  Returns the
-    # created RingFinger.
-
-    def self.finger
-      unless @@finger 
-	@@finger = self.new
-	@@finger.lookup_ring_any
-      end
-      @@finger
-    end
-
-    ##
-    # Returns the first advertised TupleSpace.
-
-    def self.primary
-      finger.primary
-    end
-
-    ##
-    # Contains all discoverd TupleSpaces except for the primary.
-
-    def self.to_a
-      finger.to_a
-    end
-
-    ##
-    # The list of addresses where RingFinger will send query packets.
-
-    attr_accessor :broadcast_list
-
-    ##
-    # The port that RingFinger will send query packets to.
-
-    attr_accessor :port
-
-    ##
-    # Contain the first advertised TupleSpace after lookup_ring_any is called.
-
-    attr_accessor :primary
-
-    ##
-    # Creates a new RingFinger that will look for RingServers at +port+ on
-    # the addresses in +broadcast_list+.
-
-    def initialize(broadcast_list=@@broadcast_list, port=Ring_PORT)
-      @broadcast_list = broadcast_list || ['localhost']
-      @port = port
-      @primary = nil
-      @rings = []
-    end
-
-    ##
-    # Contains all discovered TupleSpaces except for the primary.
-
-    def to_a
-      @rings
-    end
-
-    ##
-    # Iterates over all discovered TupleSpaces starting with the primary.
-
-    def each
-      lookup_ring_any unless @primary
-      return unless @primary
-      yield(@primary)
-      @rings.each { |x| yield(x) }
-    end
-
-    ##
-    # Looks up RingServers waiting +timeout+ seconds.  RingServers will be
-    # given +block+ as a callback, which will be called with the remote
-    # TupleSpace.
-
-    def lookup_ring(timeout=5, &block)
-      return lookup_ring_any(timeout) unless block_given?
-
-      msg = Marshal.dump([[:lookup_ring, DRbObject.new(block)], timeout])
-      @broadcast_list.each do |it|
-	soc = UDPSocket.open
-	begin
-	  soc.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
-	  soc.send(msg, 0, it, @port)
-	rescue
-	  nil
-	ensure
-	  soc.close
-	end
-      end
-      sleep(timeout)
-    end
-
-    ##
-    # Returns the first found remote TupleSpace.  Any further recovered
-    # TupleSpaces can be found by calling +to_a+.
-
-    def lookup_ring_any(timeout=5)
-      queue = Queue.new
-
-      th = Thread.new do
-	self.lookup_ring(timeout) do |ts|
-	  queue.push(ts)
-	end
-	queue.push(nil)
-	while it = queue.pop
-	  @rings.push(it)
-	end
-      end
-      
-      @primary = queue.pop
-      raise('RingNotFound') if @primary.nil?
-      @primary
-    end
-
-  end
-
-  ##
-  # RingProvider uses a RingServer advertised TupleSpace as a name service.
-  # TupleSpace clients can register themselves with the remote TupleSpace and
-  # look up other provided services via the remote TupleSpace.
-  #
-  # Services are registered with a tuple of the format [:name, klass,
-  # DRbObject, description].
-
-  class RingProvider
-
-    ##
-    # Creates a RingProvider that will provide a +klass+ service running on
-    # +front+, with a +description+.  +renewer+ is optional.
-
-    def initialize(klass, front, desc, renewer = nil)
-      @tuple = [:name, klass, front, desc]
-      @renewer = renewer || Rinda::SimpleRenewer.new
-    end
-
-    ##
-    # Advertises this service on the primary remote TupleSpace.
-
-    def provide
-      ts = Rinda::RingFinger.primary
-      ts.write(@tuple, @renewer)
-    end
-
-  end
-
-end
-
-if __FILE__ == $0
-  DRb.start_service
-  case ARGV.shift
-  when 's'
-    require 'rinda/tuplespace'
-    ts = Rinda::TupleSpace.new
-    place = Rinda::RingServer.new(ts)
-    $stdin.gets
-  when 'w'
-    finger = Rinda::RingFinger.new(nil)
-    finger.lookup_ring do |ts|
-      p ts
-      ts.write([:hello, :world])
-    end
-  when 'r'
-    finger = Rinda::RingFinger.new(nil)
-    finger.lookup_ring do |ts|
-      p ts
-      p ts.take([nil, nil])
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/tuplespace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/tuplespace.rb
deleted file mode 100644
index 6d58a0f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rinda/tuplespace.rb
+++ /dev/null
@@ -1,592 +0,0 @@
-require 'monitor'
-require 'thread'
-require 'drb/drb'
-require 'rinda/rinda'
-
-module Rinda
-
-  ##
-  # A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace)
-  # together with expiry and cancellation data.
-
-  class TupleEntry
-
-    include DRbUndumped
-
-    attr_accessor :expires
-
-    ##
-    # Creates a TupleEntry based on +ary+ with an optional renewer or expiry
-    # time +sec+.
-    #
-    # A renewer must implement the +renew+ method which returns a Numeric,
-    # nil, or true to indicate when the tuple has expired.
-
-    def initialize(ary, sec=nil)
-      @cancel = false
-      @expires = nil
-      @tuple = make_tuple(ary)
-      @renewer = nil
-      renew(sec)
-    end
-
-    ##
-    # Marks this TupleEntry as canceled.
-
-    def cancel
-      @cancel = true
-    end
-
-    ##
-    # A TupleEntry is dead when it is canceled or expired.
-
-    def alive?
-      !canceled? && !expired?
-    end
-
-    ##
-    # Return the object which makes up the tuple itself: the Array
-    # or Hash.
-
-    def value; @tuple.value; end
-
-    ##
-    # Returns the canceled status.
-
-    def canceled?; @cancel; end
-
-    ##
-    # Has this tuple expired? (true/false).
-    #
-    # A tuple has expired when its expiry timer based on the +sec+ argument to
-    # #initialize runs out.
-
-    def expired?
-      return true unless @expires
-      return false if @expires > Time.now
-      return true if @renewer.nil?
-      renew(@renewer)
-      return true unless @expires
-      return @expires < Time.now
-    end
-
-    ##
-    # Reset the expiry time according to +sec_or_renewer+.  
-    #
-    # +nil+::    it is set to expire in the far future.
-    # +false+::  it has expired.
-    # Numeric::  it will expire in that many seconds.
-    #
-    # Otherwise the argument refers to some kind of renewer object
-    # which will reset its expiry time. 
-
-    def renew(sec_or_renewer)
-      sec, @renewer = get_renewer(sec_or_renewer)
-      @expires = make_expires(sec)
-    end
-
-    ##
-    # Returns an expiry Time based on +sec+ which can be one of:
-    # Numeric:: +sec+ seconds into the future
-    # +true+::  the expiry time is the start of 1970 (i.e. expired)
-    # +nil+::   it is  Tue Jan 19 03:14:07 GMT Standard Time 2038 (i.e. when
-    #           UNIX clocks will die)
-
-    def make_expires(sec=nil)
-      case sec
-      when Numeric
-        Time.now + sec
-      when true
-        Time.at(1)
-      when nil
-        Time.at(2**31-1)
-      end
-    end
-
-    ##
-    # Retrieves +key+ from the tuple.
-
-    def [](key)
-      @tuple[key]
-    end
-
-    ##
-    # Fetches +key+ from the tuple.
-
-    def fetch(key)
-      @tuple.fetch(key)
-    end
-
-    ##
-    # The size of the tuple.
-
-    def size
-      @tuple.size
-    end
-
-    ##
-    # Creates a Rinda::Tuple for +ary+.
-
-    def make_tuple(ary)
-      Rinda::Tuple.new(ary)
-    end
-
-    private
-
-    ##
-    # Returns a valid argument to make_expires and the renewer or nil.
-    #
-    # Given +true+, +nil+, or Numeric, returns that value and +nil+ (no actual
-    # renewer).  Otherwise it returns an expiry value from calling +it.renew+
-    # and the renewer.
-
-    def get_renewer(it)
-      case it
-      when Numeric, true, nil
-        return it, nil
-      else
-        begin
-          return it.renew, it
-        rescue Exception
-          return it, nil
-        end
-      end
-    end
-
-  end
-
-  ##
-  # A TemplateEntry is a Template together with expiry and cancellation data.
-
-  class TemplateEntry < TupleEntry
-    ##
-    # Matches this TemplateEntry against +tuple+.  See Template#match for
-    # details on how a Template matches a Tuple.
-
-    def match(tuple)
-      @tuple.match(tuple)
-    end
-    
-    alias === match
-
-    def make_tuple(ary) # :nodoc:
-      Rinda::Template.new(ary)
-    end
-
-  end
-
-  ##
-  # <i>Documentation?</i>
-
-  class WaitTemplateEntry < TemplateEntry
-
-    attr_reader :found
-
-    def initialize(place, ary, expires=nil)
-      super(ary, expires)
-      @place = place
-      @cond = place.new_cond
-      @found = nil
-    end
-
-    def cancel
-      super
-      signal
-    end
-
-    def wait
-      @cond.wait
-    end
-
-    def read(tuple)
-      @found = tuple
-      signal
-    end
-
-    def signal
-      @place.synchronize do
-        @cond.signal
-      end
-    end
-
-  end
-
-  ##
-  # A NotifyTemplateEntry is returned by TupleSpace#notify and is notified of
-  # TupleSpace changes.  You may receive either your subscribed event or the
-  # 'close' event when iterating over notifications.
-  #
-  # See TupleSpace#notify_event for valid notification types.
-  #
-  # == Example
-  #
-  #   ts = Rinda::TupleSpace.new
-  #   observer = ts.notify 'write', [nil]
-  #   
-  #   Thread.start do
-  #     observer.each { |t| p t }
-  #   end
-  #   
-  #   3.times { |i| ts.write [i] }
-  #
-  # Outputs:
-  #
-  #   ['write', [0]]
-  #   ['write', [1]]
-  #   ['write', [2]]
-
-  class NotifyTemplateEntry < TemplateEntry
-
-    ##
-    # Creates a new NotifyTemplateEntry that watches +place+ for +event+s that
-    # match +tuple+.
-
-    def initialize(place, event, tuple, expires=nil)
-      ary = [event, Rinda::Template.new(tuple)]
-      super(ary, expires)
-      @queue = Queue.new
-      @done = false
-    end
-
-    ##
-    # Called by TupleSpace to notify this NotifyTemplateEntry of a new event.
-
-    def notify(ev)
-      @queue.push(ev)
-    end
-
-    ##
-    # Retrieves a notification.  Raises RequestExpiredError when this
-    # NotifyTemplateEntry expires.
-
-    def pop
-      raise RequestExpiredError if @done
-      it = @queue.pop
-      @done = true if it[0] == 'close'
-      return it
-    end
-
-    ##
-    # Yields event/tuple pairs until this NotifyTemplateEntry expires.
-
-    def each # :yields: event, tuple
-      while !@done
-        it = pop
-        yield(it)
-      end
-    rescue 
-    ensure
-      cancel
-    end
-
-  end
-
-  ##
-  # TupleBag is an unordered collection of tuples. It is the basis
-  # of Tuplespace.
-
-  class TupleBag
-
-    def initialize # :nodoc:
-      @hash = {}
-    end
-
-    ##
-    # +true+ if the TupleBag to see if it has any expired entries.
-
-    def has_expires?
-      @hash.each do |k, v|
-        v.each do |tuple|
-          return true if tuple.expires
-        end
-      end
-      false
-    end
-
-    ##
-    # Add +ary+ to the TupleBag.
-
-    def push(ary)
-      size = ary.size
-      @hash[size] ||= []
-      @hash[size].push(ary)
-    end
-
-    ##
-    # Removes +ary+ from the TupleBag.
-
-    def delete(ary)
-      size = ary.size
-      @hash.fetch(size, []).delete(ary)
-    end
-
-    ##
-    # Finds all live tuples that match +template+.
-
-    def find_all(template)
-      @hash.fetch(template.size, []).find_all do |tuple|
-        tuple.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Finds a live tuple that matches +template+.
-
-    def find(template)
-      @hash.fetch(template.size, []).find do |tuple|
-        tuple.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Finds all tuples in the TupleBag which when treated as templates, match
-    # +tuple+ and are alive.
-
-    def find_all_template(tuple)
-      @hash.fetch(tuple.size, []).find_all do |template|
-        template.alive? && template.match(tuple)
-      end
-    end
-
-    ##
-    # Delete tuples which dead tuples from the TupleBag, returning the deleted
-    # tuples.
-
-    def delete_unless_alive
-      deleted = []
-      @hash.keys.each do |size|
-        ary = []
-        @hash[size].each do |tuple|
-          if tuple.alive?
-            ary.push(tuple)
-          else
-            deleted.push(tuple)
-          end
-        end
-        @hash[size] = ary
-      end
-      deleted
-    end
-
-  end
-
-  ##
-  # The Tuplespace manages access to the tuples it contains,
-  # ensuring mutual exclusion requirements are met.
-  #
-  # The +sec+ option for the write, take, move, read and notify methods may
-  # either be a number of seconds or a Renewer object.
-
-  class TupleSpace
-
-    include DRbUndumped
-    include MonitorMixin
-
-    ##
-    # Creates a new TupleSpace.  +period+ is used to control how often to look
-    # for dead tuples after modifications to the TupleSpace.
-    #
-    # If no dead tuples are found +period+ seconds after the last
-    # modification, the TupleSpace will stop looking for dead tuples.
-
-    def initialize(period=60)
-      super()
-      @bag = TupleBag.new
-      @read_waiter = TupleBag.new
-      @take_waiter = TupleBag.new
-      @notify_waiter = TupleBag.new
-      @period = period
-      @keeper = nil
-    end
-
-    ##
-    # Adds +tuple+
-
-    def write(tuple, sec=nil)
-      entry = TupleEntry.new(tuple, sec)
-      synchronize do
-        if entry.expired?
-          @read_waiter.find_all_template(entry).each do |template|
-            template.read(tuple)
-          end
-          notify_event('write', entry.value)
-          notify_event('delete', entry.value)
-        else
-          @bag.push(entry)
-          start_keeper if entry.expires
-          @read_waiter.find_all_template(entry).each do |template|
-            template.read(tuple)
-          end
-          @take_waiter.find_all_template(entry).each do |template|
-            template.signal
-          end
-          notify_event('write', entry.value)
-        end
-      end
-      entry
-    end
-
-    ##
-    # Removes +tuple+
-
-    def take(tuple, sec=nil, &block)
-      move(nil, tuple, sec, &block)
-    end
-
-    ##
-    # Moves +tuple+ to +port+.
-
-    def move(port, tuple, sec=nil)
-      template = WaitTemplateEntry.new(self, tuple, sec)
-      yield(template) if block_given?
-      synchronize do
-        entry = @bag.find(template)
-        if entry
-          port.push(entry.value) if port
-          @bag.delete(entry)
-          notify_event('take', entry.value)
-          return entry.value
-        end
-        raise RequestExpiredError if template.expired?
-
-        begin
-          @take_waiter.push(template)
-          start_keeper if template.expires
-          while true
-            raise RequestCanceledError if template.canceled?
-            raise RequestExpiredError if template.expired?
-            entry = @bag.find(template)
-            if entry
-              port.push(entry.value) if port
-              @bag.delete(entry)
-              notify_event('take', entry.value)
-              return entry.value
-            end
-            template.wait
-          end
-        ensure
-          @take_waiter.delete(template)
-        end
-      end
-    end
-
-    ##
-    # Reads +tuple+, but does not remove it.
-
-    def read(tuple, sec=nil)
-      template = WaitTemplateEntry.new(self, tuple, sec)
-      yield(template) if block_given?
-      synchronize do
-        entry = @bag.find(template)
-        return entry.value if entry
-        raise RequestExpiredError if template.expired?
-
-        begin
-          @read_waiter.push(template)
-          start_keeper if template.expires
-          template.wait
-          raise RequestCanceledError if template.canceled?
-          raise RequestExpiredError if template.expired?
-          return template.found
-        ensure
-          @read_waiter.delete(template)
-        end
-      end
-    end
-
-    ##
-    # Returns all tuples matching +tuple+.  Does not remove the found tuples.
-
-    def read_all(tuple)
-      template = WaitTemplateEntry.new(self, tuple, nil)
-      synchronize do
-        entry = @bag.find_all(template)
-        entry.collect do |e|
-          e.value
-        end
-      end
-    end
-
-    ##
-    # Registers for notifications of +event+.  Returns a NotifyTemplateEntry.
-    # See NotifyTemplateEntry for examples of how to listen for notifications.
-    #
-    # +event+ can be:
-    # 'write'::  A tuple was added
-    # 'take'::   A tuple was taken or moved
-    # 'delete':: A tuple was lost after being overwritten or expiring
-    #
-    # The TupleSpace will also notify you of the 'close' event when the
-    # NotifyTemplateEntry has expired.
-
-    def notify(event, tuple, sec=nil)
-      template = NotifyTemplateEntry.new(self, event, tuple, sec)
-      synchronize do
-        @notify_waiter.push(template)
-      end
-      template
-    end
-
-    private
-
-    ##
-    # Removes dead tuples.
-
-    def keep_clean
-      synchronize do
-        @read_waiter.delete_unless_alive.each do |e|
-          e.signal
-        end
-        @take_waiter.delete_unless_alive.each do |e|
-          e.signal
-        end
-        @notify_waiter.delete_unless_alive.each do |e|
-          e.notify(['close'])
-        end
-        @bag.delete_unless_alive.each do |e|
-          notify_event('delete', e.value)
-        end
-      end
-    end
-
-    ##
-    # Notifies all registered listeners for +event+ of a status change of
-    # +tuple+.
-
-    def notify_event(event, tuple)
-      ev = [event, tuple]
-      @notify_waiter.find_all_template(ev).each do |template|
-        template.notify(ev)
-      end
-    end
-
-    ##
-    # Creates a thread that scans the tuplespace for expired tuples.
-
-    def start_keeper
-      return if @keeper && @keeper.alive?
-      @keeper = Thread.new do
-        while true
-          synchronize do
-            break unless need_keeper?
-            keep_clean
-          end
-          sleep(@period)
-        end
-      end
-    end
-
-    ##
-    # Checks the tuplespace to see if it needs cleaning.
-
-    def need_keeper?
-      return true if @bag.has_expires?
-      return true if @read_waiter.has_expires?
-      return true if @take_waiter.has_expires?
-      return true if @notify_waiter.has_expires?
-    end
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss.rb
deleted file mode 100644
index 495edb1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2003-2005 Kouhei Sutou.  You can redistribute it and/or
-# modify it under the same terms as Ruby.
-#
-# Author:: Kouhei Sutou <kou at cozmixng.org>
-# Tutorial:: http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3ATutorial.en
-
-require 'rss/1.0'
-require 'rss/2.0'
-require 'rss/content'
-require 'rss/dublincore'
-require 'rss/image'
-require 'rss/syndication'
-#require 'rss/taxonomy'
-require 'rss/trackback'
-
-require "rss/maker"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/0.9.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/0.9.rb
deleted file mode 100644
index 69e01dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/0.9.rb
+++ /dev/null
@@ -1,422 +0,0 @@
-require "rss/parser"
-
-module RSS
-
-  module RSS09
-    NSPOOL = {}
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-      
-      klass.install_must_call_validator('', "")
-    end
-  end
-
-  class Rss < Element
-
-    include RSS09
-    include RootElementMixin
-
-    %w(channel).each do |name|
-      install_have_child_element(name, "", nil)
-    end
-
-    attr_accessor :rss_version, :version, :encoding, :standalone
-    
-    def initialize(rss_version, version=nil, encoding=nil, standalone=nil)
-      super
-    end
-
-    def items
-      if @channel
-        @channel.items
-      else
-        []
-      end
-    end
-
-    def image
-      if @channel
-        @channel.image
-      else
-        nil
-      end
-    end
-
-    def textinput
-      if @channel
-        @channel.textInput
-      else
-        nil
-      end
-    end
-
-    def setup_maker_elements(maker)
-      super
-      items.each do |item|
-        item.setup_maker(maker.items)
-      end
-    end
-
-    private
-    def _attrs
-      [
-        ["version", true, "rss_version"],
-      ]
-    end
-
-    class Channel < Element
-
-      include RSS09
-
-      [
-        ["title", nil, :text],
-        ["link", nil, :text],
-        ["description", nil, :text],
-        ["language", nil, :text],
-        ["copyright", "?", :text],
-        ["managingEditor", "?", :text],
-        ["webMaster", "?", :text],
-        ["rating", "?", :text],
-        ["pubDate", "?", :date, :rfc822],
-        ["lastBuildDate", "?", :date, :rfc822],
-        ["docs", "?", :text],
-        ["cloud", "?", :have_attribute],
-        ["skipDays", "?", :have_child],
-        ["skipHours", "?", :have_child],
-        ["image", nil, :have_child],
-        ["item", "*", :have_children],
-        ["textInput", "?", :have_child],
-      ].each do |name, occurs, type, *args|
-        __send__("install_#{type}_element", name, "", occurs, name, *args)
-      end
-      alias date pubDate
-      alias date= pubDate=
-
-      private
-      def maker_target(maker)
-        maker.channel
-      end
-
-      def setup_maker_elements(channel)
-        super
-        [
-          [skipDays, "day"],
-          [skipHours, "hour"],
-        ].each do |skip, key|
-          if skip
-            skip.__send__("#{key}s").each do |val|
-              target_skips = channel.__send__("skip#{key.capitalize}s")
-              new_target = target_skips.__send__("new_#{key}")
-              new_target.content = val.content
-            end
-          end
-        end
-      end
-
-      def not_need_to_call_setup_maker_variables
-        %w(image textInput)
-      end
-    
-      class SkipDays < Element
-        include RSS09
-
-        [
-          ["day", "*"]
-        ].each do |name, occurs|
-          install_have_children_element(name, "", occurs)
-        end
-
-        class Day < Element
-          include RSS09
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-      
-        end
-        
-      end
-      
-      class SkipHours < Element
-        include RSS09
-
-        [
-          ["hour", "*"]
-        ].each do |name, occurs|
-          install_have_children_element(name, "", occurs)
-        end
-
-        class Hour < Element
-          include RSS09
-
-          content_setup(:integer)
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-        end
-        
-      end
-      
-      class Image < Element
-
-        include RSS09
-        
-        %w(url title link).each do |name|
-          install_text_element(name, "", nil)
-        end
-        [
-          ["width", :integer],
-          ["height", :integer],
-          ["description"],
-        ].each do |name, type|
-          install_text_element(name, "", "?", name, type)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.url = args[0]
-            self.title = args[1]
-            self.link = args[2]
-            self.width = args[3]
-            self.height = args[4]
-            self.description = args[5]
-          end
-        end
-
-        private
-        def maker_target(maker)
-          maker.image
-        end
-      end
-
-      class Cloud < Element
-
-        include RSS09
-
-        [
-          ["domain", "", true],
-          ["port", "", true, :integer],
-          ["path", "", true],
-          ["registerProcedure", "", true],
-          ["protocol", "", true],
-        ].each do |name, uri, required, type|
-          install_get_attribute(name, uri, required, type)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.domain = args[0]
-            self.port = args[1]
-            self.path = args[2]
-            self.registerProcedure = args[3]
-            self.protocol = args[4]
-          end
-        end
-      end
-      
-      class Item < Element
-        
-        include RSS09
-
-        [
-          ["title", '?', :text],
-          ["link", '?', :text],
-          ["description", '?', :text],
-          ["category", '*', :have_children, "categories"],
-          ["source", '?', :have_child],
-          ["enclosure", '?', :have_child],
-        ].each do |tag, occurs, type, *args|
-          __send__("install_#{type}_element", tag, "", occurs, tag, *args)
-        end
-
-        private
-        def maker_target(items)
-          if items.respond_to?("items")
-            # For backward compatibility
-            items = items.items
-          end
-          items.new_item
-        end
-
-        def setup_maker_element(item)
-          super
-          @enclosure.setup_maker(item) if @enclosure
-          @source.setup_maker(item) if @source
-        end
-        
-        class Source < Element
-
-          include RSS09
-
-          [
-            ["url", "", true]
-          ].each do |name, uri, required|
-            install_get_attribute(name, uri, required)
-          end
-          
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.url = args[0]
-              self.content = args[1]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.source
-          end
-
-          def setup_maker_attributes(source)
-            source.url = url
-            source.content = content
-          end
-        end
-
-        class Enclosure < Element
-
-          include RSS09
-
-          [
-            ["url", "", true],
-            ["length", "", true, :integer],
-            ["type", "", true],
-          ].each do |name, uri, required, type|
-            install_get_attribute(name, uri, required, type)
-          end
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.url = args[0]
-              self.length = args[1]
-              self.type = args[2]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.enclosure
-          end
-
-          def setup_maker_attributes(enclosure)
-            enclosure.url = url
-            enclosure.length = length
-            enclosure.type = type
-          end
-        end
-
-        class Category < Element
-
-          include RSS09
-          
-          [
-            ["domain", "", false]
-          ].each do |name, uri, required|
-            install_get_attribute(name, uri, required)
-          end
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.domain = args[0]
-              self.content = args[1]
-            end
-          end
-
-          private
-          def maker_target(item)
-            item.new_category
-          end
-
-          def setup_maker_attributes(category)
-            category.domain = domain
-            category.content = content
-          end
-          
-        end
-
-      end
-      
-      class TextInput < Element
-
-        include RSS09
-
-        %w(title description name link).each do |name|
-          install_text_element(name, "", nil)
-        end
-
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.title = args[0]
-            self.description = args[1]
-            self.name = args[2]
-            self.link = args[3]
-          end
-        end
-
-        private
-        def maker_target(maker)
-          maker.textinput
-        end
-      end
-      
-    end
-    
-  end
-
-  RSS09::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element("", name, "#{name}=")
-  end
-
-  module ListenerMixin
-    private
-    def start_rss(tag_name, prefix, attrs, ns)
-      check_ns(tag_name, prefix, ns, "")
-      
-      @rss = Rss.new(attrs['version'], @version, @encoding, @standalone)
-      @rss.do_validate = @do_validate
-      @rss.xml_stylesheets = @xml_stylesheets
-      @last_element = @rss
-      @proc_stack.push Proc.new { |text, tags|
-        @rss.validate_for_stream(tags, @ignore_unknown_element) if @do_validate
-      }
-    end
-    
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/1.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/1.0.rb
deleted file mode 100644
index a945434..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/1.0.rb
+++ /dev/null
@@ -1,451 +0,0 @@
-require "rss/parser"
-
-module RSS
-
-  module RSS10
-    NSPOOL = {}
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-      
-      klass.install_must_call_validator('', ::RSS::URI)
-    end
-
-  end
-
-  class RDF < Element
-
-    include RSS10
-    include RootElementMixin
-
-    class << self
-
-      def required_uri
-        URI
-      end
-
-    end
-
-    @tag_name = 'RDF'
-
-    PREFIX = 'rdf'
-    URI = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-
-    install_ns('', ::RSS::URI)
-    install_ns(PREFIX, URI)
-
-    [
-      ["channel", nil],
-      ["image", "?"],
-      ["item", "+", :children],
-      ["textinput", "?"],
-    ].each do |tag, occurs, type|
-      type ||= :child
-      __send__("install_have_#{type}_element", tag, ::RSS::URI, occurs)
-    end
-
-    attr_accessor :rss_version, :version, :encoding, :standalone
-    
-    def initialize(version=nil, encoding=nil, standalone=nil)
-      super('1.0', version, encoding, standalone)
-    end
-
-    def full_name
-      tag_name_with_prefix(PREFIX)
-    end
-
-    class Li < Element
-
-      include RSS10
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-      
-      [
-        ["resource", [URI, ""], true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required)
-      end
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-    end
-
-    class Seq < Element
-
-      include RSS10
-
-      Li = ::RSS::RDF::Li
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-
-      @tag_name = 'Seq'
-      
-      install_have_children_element("li", URI, "*")
-      install_must_call_validator('rdf', ::RSS::RDF::URI)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          @li = args[0] if args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-      
-      def setup_maker(target)
-        lis.each do |li|
-          target << li.resource
-        end
-      end
-    end
-
-    class Bag < Element
-
-      include RSS10
-
-      Li = ::RSS::RDF::Li
-
-      class << self
-        def required_uri
-          URI
-        end
-      end
-
-      @tag_name = 'Bag'
-      
-      install_have_children_element("li", URI, "*")
-      install_must_call_validator('rdf', URI)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          @li = args[0] if args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(PREFIX)
-      end
-      
-      def setup_maker(target)
-        lis.each do |li|
-          target << li.resource
-        end
-      end
-    end
-
-    class Channel < Element
-
-      include RSS10
-      
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      [
-        ['title', nil, :text],
-        ['link', nil, :text],
-        ['description', nil, :text],
-        ['image', '?', :have_child],
-        ['items', nil, :have_child],
-        ['textinput', '?', :have_child],
-      ].each do |tag, occurs, type|
-        __send__("install_#{type}_element", tag, ::RSS::URI, occurs)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.channel
-      end
-      
-      def setup_maker_attributes(channel)
-        channel.about = about
-      end
-
-      class Image < Element
-        
-        include RSS10
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-
-        end
-
-        [
-          ["resource", URI, true]
-        ].each do |name, uri, required|
-          install_get_attribute(name, uri, required, nil, nil,
-                                "#{PREFIX}:#{name}")
-        end
-      
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.resource = args[0]
-          end
-        end
-      end
-
-      class Textinput < Element
-        
-        include RSS10
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-
-        end
-
-        [
-          ["resource", URI, true]
-        ].each do |name, uri, required|
-          install_get_attribute(name, uri, required, nil, nil,
-                                "#{PREFIX}:#{name}")
-        end
-      
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.resource = args[0]
-          end
-        end
-      end
-      
-      class Items < Element
-
-        include RSS10
-
-        Seq = ::RSS::RDF::Seq
-
-        class << self
-          
-          def required_uri
-            ::RSS::URI
-          end
-          
-        end
-
-        install_have_child_element("Seq", URI, nil)
-        install_must_call_validator('rdf', URI)
-        
-        def initialize(*args)
-          if Utils.element_initialize_arguments?(args)
-            super
-          else
-            super()
-            self.Seq = args[0]
-          end
-          self.Seq ||= Seq.new
-        end
-
-        def resources
-          if @Seq
-            @Seq.lis.collect do |li|
-              li.resource
-            end
-          else
-            []
-          end
-        end
-      end
-    end
-
-    class Image < Element
-
-      include RSS10
-
-      class << self
-        
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      %w(title url link).each do |name|
-        install_text_element(name, ::RSS::URI, nil)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.image
-      end
-    end
-
-    class Item < Element
-
-      include RSS10
-
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-        
-      end
-
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      [
-        ["title", nil],
-        ["link", nil],
-        ["description", "?"],
-      ].each do |tag, occurs|
-        install_text_element(tag, ::RSS::URI, occurs)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(items)
-        if items.respond_to?("items")
-          # For backward compatibility
-          items = items.items
-        end
-        items.new_item
-      end
-    end
-
-    class Textinput < Element
-
-      include RSS10
-
-      class << self
-
-        def required_uri
-          ::RSS::URI
-        end
-
-      end
-
-      [
-        ["about", URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{PREFIX}:#{name}")
-      end
-
-      %w(title description name link).each do |name|
-        install_text_element(name, ::RSS::URI, nil)
-      end
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      private
-      def maker_target(maker)
-        maker.textinput
-      end
-    end
-
-  end
-
-  RSS10::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element(URI, name, "#{name}=")
-  end
-
-  module ListenerMixin
-    private
-    def start_RDF(tag_name, prefix, attrs, ns)
-      check_ns(tag_name, prefix, ns, RDF::URI)
-
-      @rss = RDF.new(@version, @encoding, @standalone)
-      @rss.do_validate = @do_validate
-      @rss.xml_stylesheets = @xml_stylesheets
-      @last_element = @rss
-      @proc_stack.push Proc.new { |text, tags|
-        @rss.validate_for_stream(tags, @ignore_unknown_element) if @do_validate
-      }
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/2.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/2.0.rb
deleted file mode 100644
index 44bdb4f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/2.0.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require "rss/0.9"
-
-module RSS
-
-  class Rss
-
-    class Channel
-
-      [
-        ["generator"],
-        ["ttl", :integer],
-      ].each do |name, type|
-        install_text_element(name, "", "?", name, type)
-      end
-
-      [
-        %w(category categories),
-      ].each do |name, plural_name|
-        install_have_children_element(name, "", "*", name, plural_name)
-      end
-
-      [
-        ["image", "?"],
-        ["language", "?"],
-      ].each do |name, occurs|
-        install_model(name, "", occurs)
-      end
-
-      Category = Item::Category
-
-      class Item
-      
-        [
-          ["comments", "?"],
-          ["author", "?"],
-        ].each do |name, occurs|
-          install_text_element(name, "", occurs)
-        end
-
-        [
-          ["pubDate", '?'],
-        ].each do |name, occurs|
-          install_date_element(name, "", occurs, name, 'rfc822')
-        end
-        alias date pubDate
-        alias date= pubDate=
-
-        [
-          ["guid", '?'],
-        ].each do |name, occurs|
-          install_have_child_element(name, "", occurs)
-        end
-
-        private
-        alias _setup_maker_element setup_maker_element
-        def setup_maker_element(item)
-          _setup_maker_element(item)
-          @guid.setup_maker(item) if @guid
-        end
-        
-        class Guid < Element
-          
-          include RSS09
-
-          [
-            ["isPermaLink", "", false, :boolean]
-          ].each do |name, uri, required, type|
-            install_get_attribute(name, uri, required, type)
-          end
-
-          content_setup
-
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.isPermaLink = args[0]
-              self.content = args[1]
-            end
-          end
-
-          alias_method :_PermaLink?, :PermaLink?
-          private :_PermaLink?
-          def PermaLink?
-            perma = _PermaLink?
-            perma or perma.nil?
-          end
-
-          private
-          def maker_target(item)
-            item.guid
-          end
-
-          def setup_maker_attributes(guid)
-            guid.isPermaLink = isPermaLink
-            guid.content = content
-          end
-        end
-
-      end
-
-    end
-
-  end
-
-  RSS09::ELEMENTS.each do |name|
-    BaseListener.install_get_text_element("", name, "#{name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/content.rb
deleted file mode 100644
index 1b13f39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/content.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  CONTENT_PREFIX = 'content'
-  CONTENT_URI = "http://purl.org/rss/1.0/modules/content/"
-
-  RDF.install_ns(CONTENT_PREFIX, CONTENT_URI)
-
-  module ContentModel
-
-    extend BaseModel
-
-    ELEMENTS = []
-
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(CONTENT_PREFIX, CONTENT_URI)
-      %w(encoded).each do |name|
-        klass.install_text_element(name, CONTENT_URI, "?",
-                                   "#{CONTENT_PREFIX}_#{name}")
-      end
-    end
-  end
-
-  class RDF
-    class Item; include ContentModel; end
-  end
-
-  prefix_size = CONTENT_PREFIX.size + 1
-  ContentModel::ELEMENTS.uniq!
-  ContentModel::ELEMENTS.each do |full_name|
-    name = full_name[prefix_size..-1]
-    BaseListener.install_get_text_element(CONTENT_URI, name, "#{full_name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/converter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/converter.rb
deleted file mode 100644
index d928c48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/converter.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-require "rss/utils"
-
-module RSS
-
-  class Converter
-    
-    include Utils
-
-    def initialize(to_enc, from_enc=nil)
-      normalized_to_enc = to_enc.downcase.gsub(/-/, '_')
-      from_enc ||= 'utf-8'
-      normalized_from_enc = from_enc.downcase.gsub(/-/, '_')
-      if normalized_to_enc == normalized_from_enc
-        def_same_enc()
-      else
-        def_diff_enc = "def_to_#{normalized_to_enc}_from_#{normalized_from_enc}"
-        if respond_to?(def_diff_enc)
-          __send__(def_diff_enc)
-        else
-          def_else_enc(to_enc, from_enc)
-        end
-      end
-    end
-
-    def convert(value)
-      value
-    end
-
-    def def_convert(depth=0)
-      instance_eval(<<-EOC, *get_file_and_line_from_caller(depth))
-      def convert(value)
-        if value.kind_of?(String)
-          #{yield('value')}
-        else
-          value
-        end
-      end
-      EOC
-    end
-
-    def def_iconv_convert(to_enc, from_enc, depth=0)
-      begin
-        require "iconv"
-        @iconv = Iconv.new(to_enc, from_enc)
-        def_convert(depth+1) do |value|
-          <<-EOC
-          begin
-            @iconv.iconv(#{value})
-          rescue Iconv::Failure
-            raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
-          end
-          EOC
-        end
-      rescue LoadError, ArgumentError, SystemCallError
-        raise UnknownConversionMethodError.new(to_enc, from_enc)
-      end
-    end
-    
-    def def_else_enc(to_enc, from_enc)
-      def_iconv_convert(to_enc, from_enc, 0)
-    end
-    
-    def def_same_enc()
-      def_convert do |value|
-        value
-      end
-    end
-
-    def def_uconv_convert_if_can(meth, to_enc, from_enc, nkf_arg)
-      begin
-        require "uconv"
-        def_convert(1) do |value|
-          <<-EOC
-          begin
-            Uconv.#{meth}(#{value})
-          rescue Uconv::Error
-            raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
-          end
-          EOC
-        end
-      rescue LoadError
-        require 'nkf'
-        def_convert(1) do |value|
-          "NKF.nkf(#{nkf_arg.dump}, #{value})"
-        end
-      end
-    end
-
-    def def_to_euc_jp_from_utf_8
-      def_uconv_convert_if_can('u8toeuc', 'EUC-JP', 'UTF-8', '-We')
-    end
-    
-    def def_to_utf_8_from_euc_jp
-      def_uconv_convert_if_can('euctou8', 'UTF-8', 'EUC-JP', '-Ew')
-    end
-    
-    def def_to_shift_jis_from_utf_8
-      def_uconv_convert_if_can('u8tosjis', 'Shift_JIS', 'UTF-8', '-Ws')
-    end
-    
-    def def_to_utf_8_from_shift_jis
-      def_uconv_convert_if_can('sjistou8', 'UTF-8', 'Shift_JIS', '-Sw')
-    end
-    
-    def def_to_euc_jp_from_shift_jis
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Se', #{value})"
-      end
-    end
-    
-    def def_to_shift_jis_from_euc_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Es', #{value})"
-      end
-    end
-    
-    def def_to_euc_jp_from_iso_2022_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Je', #{value})"
-      end
-    end
-    
-    def def_to_iso_2022_jp_from_euc_jp
-      require "nkf"
-      def_convert do |value|
-        "NKF.nkf('-Ej', #{value})"
-      end
-    end
-
-    def def_to_utf_8_from_iso_8859_1
-      def_convert do |value|
-        "#{value}.unpack('C*').pack('U*')"
-      end
-    end
-    
-    def def_to_iso_8859_1_from_utf_8
-      def_convert do |value|
-        <<-EOC
-        array_utf8 = #{value}.unpack('U*')
-        array_enc = []
-        array_utf8.each do |num|
-          if num <= 0xFF
-            array_enc << num
-          else
-            array_enc.concat "&\#\#{num};".unpack('C*')
-          end
-        end
-        array_enc.pack('C*')
-        EOC
-      end
-    end
-    
-  end
-  
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/dublincore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/dublincore.rb
deleted file mode 100644
index 8a4afd4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/dublincore.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  DC_PREFIX = 'dc'
-  DC_URI = "http://purl.org/dc/elements/1.1/"
-  
-  RDF.install_ns(DC_PREFIX, DC_URI)
-
-  module BaseDublinCoreModel
-    def append_features(klass)
-      super
-
-      return if klass.instance_of?(Module)
-      DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-        plural = plural_name || "#{name}s"
-        full_name = "#{DC_PREFIX}_#{name}"
-        full_plural_name = "#{DC_PREFIX}_#{plural}"
-        klass_name = "DublinCore#{Utils.to_class_name(name)}"
-        klass.install_must_call_validator(DC_PREFIX, DC_URI)
-        klass.install_have_children_element(name, DC_URI, "*",
-                                            full_name, full_plural_name)
-        klass.module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-          remove_method :#{full_name}
-          remove_method :#{full_name}=
-          remove_method :set_#{full_name}
-
-          def #{full_name}
-            @#{full_name}.first and @#{full_name}.first.value
-          end
-          
-          def #{full_name}=(new_value)
-            @#{full_name}[0] = Utils.new_with_value_if_need(#{klass_name}, new_value)
-          end
-          alias set_#{full_name} #{full_name}=
-        EOC
-      end
-      klass.module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        alias date #{DC_PREFIX}_date
-        alias date= #{DC_PREFIX}_date=
-      EOC
-    end
-  end
-  
-  module DublinCoreModel
-
-    extend BaseModel
-    extend BaseDublinCoreModel
-
-    TEXT_ELEMENTS = {
-      "title" => nil,
-      "description" => nil,
-      "creator" => nil,
-      "subject" => nil,
-      "publisher" => nil,
-      "contributor" => nil,
-      "type" => nil,
-      "format" => nil,
-      "identifier" => nil,
-      "source" => nil,
-      "language" => nil,
-      "relation" => nil,
-      "coverage" => nil,
-      "rights" => "rightses" # FIXME
-    }
-
-    DATE_ELEMENTS = {
-      "date" => "w3cdtf",
-    }
-    
-    ELEMENT_NAME_INFOS = DublinCoreModel::TEXT_ELEMENTS.to_a
-    DublinCoreModel::DATE_ELEMENTS.each do |name, |
-      ELEMENT_NAME_INFOS << [name, nil]
-    end
-    
-    ELEMENTS = TEXT_ELEMENTS.keys + DATE_ELEMENTS.keys
-
-    ELEMENTS.each do |name, plural_name|
-      module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        class DublinCore#{Utils.to_class_name(name)} < Element
-          include RSS10
-          
-          content_setup
-
-          class << self
-            def required_prefix
-              DC_PREFIX
-            end
-        
-            def required_uri
-              DC_URI
-            end
-          end
-
-          @tag_name = #{name.dump}
-
-          alias_method(:value, :content)
-          alias_method(:value=, :content=)
-          
-          def initialize(*args)
-            if Utils.element_initialize_arguments?(args)
-              super
-            else
-              super()
-              self.content = args[0]
-            end
-          end
-      
-          def full_name
-            tag_name_with_prefix(DC_PREFIX)
-          end
-
-          def maker_target(target)
-            target.new_#{name}
-          end
-
-          def setup_maker_attributes(#{name})
-            #{name}.content = content
-          end
-        end
-      EOC
-    end
-
-    DATE_ELEMENTS.each do |name, type|
-      module_eval(<<-EOC, *get_file_and_line_from_caller(0))
-        class DublinCore#{Utils.to_class_name(name)} < Element
-          remove_method(:content=)
-          remove_method(:value=)
-
-          date_writer("content", #{type.dump}, #{name.dump})
-          
-          alias_method(:value=, :content=)
-        end
-      EOC
-    end
-  end
-
-  # For backward compatibility
-  DublincoreModel = DublinCoreModel
-
-  class RDF
-    class Channel; include DublinCoreModel; end
-    class Image; include DublinCoreModel; end
-    class Item; include DublinCoreModel; end
-    class Textinput; include DublinCoreModel; end
-  end
-
-  DublinCoreModel::ELEMENTS.each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(DC_URI, name, "DublinCore#{class_name}")
-  end
-
-  DublinCoreModel::ELEMENTS.collect! {|name| "#{DC_PREFIX}_#{name}"}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/image.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/image.rb
deleted file mode 100644
index a9e9e90..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/image.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-require 'rss/1.0'
-require 'rss/dublincore'
-
-module RSS
-
-  IMAGE_PREFIX = 'image'
-  IMAGE_URI = 'http://web.resource.org/rss/1.0/modules/image/'
-
-  RDF.install_ns(IMAGE_PREFIX, IMAGE_URI)
-
-  IMAGE_ELEMENTS = []
-
-  %w(item favicon).each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(IMAGE_URI, name, "Image#{class_name}")
-    IMAGE_ELEMENTS << "#{IMAGE_PREFIX}_#{name}"
-  end
-  
-  module ImageModelUtils
-    def validate_one_tag_name(ignore_unknown_element, name, tags)
-      if !ignore_unknown_element
-        invalid = tags.find {|tag| tag != name}
-        raise UnknownTagError.new(invalid, IMAGE_URI) if invalid
-      end
-      raise TooMuchTagError.new(name, tag_name) if tags.size > 1
-    end
-  end
-  
-  module ImageItemModel
-    include ImageModelUtils
-    extend BaseModel
-
-    def self.append_features(klass)
-      super
-
-      klass.install_have_child_element("item", IMAGE_URI, "?",
-                                       "#{IMAGE_PREFIX}_item")
-      klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-    end
-
-    class ImageItem < Element
-      include RSS10
-      include DublinCoreModel
-
-      @tag_name = "item"
-      
-      class << self
-        def required_prefix
-          IMAGE_PREFIX
-        end
-        
-        def required_uri
-          IMAGE_URI
-        end
-      end
-
-      install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-
-      [
-        ["about", ::RSS::RDF::URI, true],
-        ["resource", ::RSS::RDF::URI, false],
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      %w(width height).each do |tag|
-        full_name = "#{IMAGE_PREFIX}_#{tag}"
-        disp_name = "#{IMAGE_PREFIX}:#{tag}"
-        install_text_element(tag, IMAGE_URI, "?",
-                             full_name, :integer, disp_name)
-        BaseListener.install_get_text_element(IMAGE_URI, tag, "#{full_name}=")
-      end
-
-      alias width= image_width=
-      alias width image_width
-      alias height= image_height=
-      alias height image_height
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-          self.resource = args[1]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(IMAGE_PREFIX)
-      end
-
-      private
-      def maker_target(target)
-        target.image_item
-      end
-
-      def setup_maker_attributes(item)
-        item.about = self.about
-        item.resource = self.resource
-      end
-    end
-  end
-  
-  module ImageFaviconModel
-    include ImageModelUtils
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-
-      unless klass.class == Module
-        klass.install_have_child_element("favicon", IMAGE_URI, "?",
-                                         "#{IMAGE_PREFIX}_favicon")
-        klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI)
-      end
-    end
-
-    class ImageFavicon < Element
-      include RSS10
-      include DublinCoreModel
-
-      @tag_name = "favicon"
-      
-      class << self
-        def required_prefix
-          IMAGE_PREFIX
-        end
-        
-        def required_uri
-          IMAGE_URI
-        end
-      end
-
-      [
-        ["about", ::RSS::RDF::URI, true, ::RSS::RDF::PREFIX],
-        ["size", IMAGE_URI, true, IMAGE_PREFIX],
-      ].each do |name, uri, required, prefix|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{prefix}:#{name}")
-      end
-
-      AVAILABLE_SIZES = %w(small medium large)
-      alias_method :_size=, :size=
-      private :_size=
-      def size=(new_value)
-        if @do_validate and !new_value.nil?
-          new_value = new_value.strip
-          unless AVAILABLE_SIZES.include?(new_value)
-            attr_name = "#{IMAGE_PREFIX}:size"
-            raise NotAvailableValueError.new(full_name, new_value, attr_name)
-          end
-        end
-        __send__(:_size=, new_value)
-      end
-      
-      alias image_size= size=
-      alias image_size size
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-          self.size = args[1]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(IMAGE_PREFIX)
-      end
-
-      private
-      def maker_target(target)
-        target.image_favicon
-      end
-
-      def setup_maker_attributes(favicon)
-        favicon.about = self.about
-        favicon.size = self.size
-      end
-    end
-
-  end
-
-  class RDF
-    class Channel; include ImageFaviconModel; end
-    class Item; include ImageItemModel; end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker.rb
deleted file mode 100644
index 9ed799a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require "rss/rss"
-
-module RSS
-
-  module Maker
-
-    MAKERS = {}
-    
-    class << self
-      def make(version, &block)
-        maker(version).make(&block)
-      end
-
-      def maker(version)
-        MAKERS[version]
-      end
-
-      def add_maker(version, maker)
-        MAKERS[version] = maker
-      end
-
-      def filename_to_version(filename)
-        File.basename(filename, ".*")
-      end
-    end
-  end
-  
-end
-
-require "rss/maker/1.0"
-require "rss/maker/2.0"
-require "rss/maker/content"
-require "rss/maker/dublincore"
-require "rss/maker/syndication"
-require "rss/maker/taxonomy"
-require "rss/maker/trackback"
-require "rss/maker/image"
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/0.9.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/0.9.rb
deleted file mode 100644
index b82585f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/0.9.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-require "rss/0.9"
-
-require "rss/maker/base"
-
-module RSS
-  module Maker
-    
-    class RSS09 < RSSBase
-      
-      def initialize(rss_version="0.91")
-        super
-      end
-      
-      private
-      def make_rss
-        Rss.new(@rss_version, @version, @encoding, @standalone)
-      end
-
-      def setup_elements(rss)
-        setup_channel(rss)
-      end
-
-      class Channel < ChannelBase
-        
-        def to_rss(rss)
-          channel = Rss::Channel.new
-          set = setup_values(channel)
-          if set
-            rss.channel = channel
-            setup_items(rss)
-            setup_image(rss)
-            setup_textinput(rss)
-            setup_other_elements(rss)
-            if rss.channel.image
-              rss
-            else
-              nil
-            end
-          elsif variable_is_set?
-            raise NotSetError.new("maker.channel", not_set_required_variables)
-          end
-        end
-        
-        def have_required_values?
-          @title and @link and @description and @language
-        end
-        
-        private
-        def setup_items(rss)
-          @maker.items.to_rss(rss)
-        end
-        
-        def setup_image(rss)
-          @maker.image.to_rss(rss)
-        end
-        
-        def setup_textinput(rss)
-          @maker.textinput.to_rss(rss)
-        end
-        
-        def variables
-          super + ["pubDate"]
-        end
-
-        def required_variable_names
-          %w(title link description language)
-        end
-        
-        class SkipDays < SkipDaysBase
-          def to_rss(rss, channel)
-            unless @days.empty?
-              skipDays = Rss::Channel::SkipDays.new
-              channel.skipDays = skipDays
-              @days.each do |day|
-                day.to_rss(rss, skipDays.days)
-              end
-            end
-          end
-          
-          class Day < DayBase
-            def to_rss(rss, days)
-              day = Rss::Channel::SkipDays::Day.new
-              set = setup_values(day)
-              if set
-                days << day
-                setup_other_elements(rss)
-              end
-            end
-
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-        class SkipHours < SkipHoursBase
-          def to_rss(rss, channel)
-            unless @hours.empty?
-              skipHours = Rss::Channel::SkipHours.new
-              channel.skipHours = skipHours
-              @hours.each do |hour|
-                hour.to_rss(rss, skipHours.hours)
-              end
-            end
-          end
-          
-          class Hour < HourBase
-            def to_rss(rss, hours)
-              hour = Rss::Channel::SkipHours::Hour.new
-              set = setup_values(hour)
-              if set
-                hours << hour
-                setup_other_elements(rss)
-              end
-            end
-
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-        class Cloud < CloudBase
-          def to_rss(*args)
-          end
-        end
-
-        class Categories < CategoriesBase
-          def to_rss(*args)
-          end
-
-          class Category < CategoryBase
-          end
-        end
-      end
-      
-      class Image < ImageBase
-        def to_rss(rss)
-          image = Rss::Channel::Image.new
-          set = setup_values(image)
-          if set
-            image.link = link
-            rss.channel.image = image
-            setup_other_elements(rss)
-          end
-        end
-        
-        def have_required_values?
-          @url and @title and link
-        end
-      end
-      
-      class Items < ItemsBase
-        def to_rss(rss)
-          if rss.channel
-            normalize.each do |item|
-              item.to_rss(rss)
-            end
-            setup_other_elements(rss)
-          end
-        end
-        
-        class Item < ItemBase
-          def to_rss(rss)
-            item = Rss::Channel::Item.new
-            set = setup_values(item)
-            if set
-              rss.items << item
-              setup_other_elements(rss)
-            end
-          end
-          
-          private
-          def have_required_values?
-            @title and @link
-          end
-
-          class Guid < GuidBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Enclosure < EnclosureBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Source < SourceBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Categories < CategoriesBase
-            def to_rss(*args)
-            end
-
-            class Category < CategoryBase
-            end
-          end
-          
-        end
-      end
-      
-      class Textinput < TextinputBase
-        def to_rss(rss)
-          textInput = Rss::Channel::TextInput.new
-          set = setup_values(textInput)
-          if set
-            rss.channel.textInput = textInput
-            setup_other_elements(rss)
-          end
-        end
-
-        private
-        def have_required_values?
-          @title and @description and @name and @link
-        end
-      end
-    end
-    
-    add_maker(filename_to_version(__FILE__), RSS09)
-    add_maker(filename_to_version(__FILE__) + "1", RSS09)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/1.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/1.0.rb
deleted file mode 100644
index 3e6542a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/1.0.rb
+++ /dev/null
@@ -1,204 +0,0 @@
-require "rss/1.0"
-
-require "rss/maker/base"
-
-module RSS
-  module Maker
-
-    class RSS10 < RSSBase
-
-      def initialize
-        super("1.0")
-      end
-
-      private
-      def make_rss
-        RDF.new(@version, @encoding, @standalone)
-      end
-
-      def setup_elements(rss)
-        setup_channel(rss)
-        setup_image(rss)
-        setup_items(rss)
-        setup_textinput(rss)
-      end
-
-      class Channel < ChannelBase
-
-        def to_rss(rss)
-          set = false
-          if @about
-            channel = RDF::Channel.new(@about)
-            set = setup_values(channel)
-            if set
-              channel.dc_dates.clear
-              rss.channel = channel
-              setup_items(rss)
-              setup_image(rss)
-              setup_textinput(rss)
-              setup_other_elements(rss)
-            end
-          end
-
-          if (!@about or !set) and variable_is_set?
-            raise NotSetError.new("maker.channel", not_set_required_variables)
-          end
-        end
-
-        def have_required_values?
-          @about and @title and @link and @description
-        end
-
-        private
-        def setup_items(rss)
-          items = RDF::Channel::Items.new
-          seq = items.Seq
-          @maker.items.normalize.each do |item|
-            seq.lis << RDF::Channel::Items::Seq::Li.new(item.link)
-          end
-          rss.channel.items = items
-        end
-        
-        def setup_image(rss)
-          if @maker.image.have_required_values?
-            rss.channel.image = RDF::Channel::Image.new(@maker.image.url)
-          end
-        end
-
-        def setup_textinput(rss)
-          if @maker.textinput.have_required_values?
-            textinput = RDF::Channel::Textinput.new(@maker.textinput.link)
-            rss.channel.textinput = textinput
-          end
-        end
-
-        def required_variable_names
-          %w(about title link description)
-        end
-        
-        class SkipDays < SkipDaysBase
-          def to_rss(*args)
-          end
-          
-          class Day < DayBase
-          end
-        end
-        
-        class SkipHours < SkipHoursBase
-          def to_rss(*args)
-          end
-
-          class Hour < HourBase
-          end
-        end
-        
-        class Cloud < CloudBase
-          def to_rss(*args)
-          end
-        end
-
-        class Categories < CategoriesBase
-          def to_rss(*args)
-          end
-
-          class Category < CategoryBase
-          end
-        end
-      end
-
-      class Image < ImageBase
-        def to_rss(rss)
-          if @url
-            image = RDF::Image.new(@url)
-            set = setup_values(image)
-            if set
-              rss.image = image
-              setup_other_elements(rss)
-            end
-          end
-        end
-
-        def have_required_values?
-          @url and @title and link and @maker.channel.have_required_values?
-        end
-
-        private
-        def variables
-          super + ["link"]
-        end
-      end
-
-      class Items < ItemsBase
-        def to_rss(rss)
-          if rss.channel
-            normalize.each do |item|
-              item.to_rss(rss)
-            end
-            setup_other_elements(rss)
-          end
-        end
-
-        class Item < ItemBase
-          def to_rss(rss)
-            if @link
-              item = RDF::Item.new(@link)
-              set = setup_values(item)
-              if set
-                item.dc_dates.clear
-                rss.items << item
-                setup_other_elements(rss)
-              end
-            end
-          end
-
-          def have_required_values?
-            @title and @link
-          end
-
-          class Guid < GuidBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Enclosure < EnclosureBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Source < SourceBase
-            def to_rss(*args)
-            end
-          end
-        
-          class Categories < CategoriesBase
-            def to_rss(*args)
-            end
-
-            class Category < CategoryBase
-            end
-          end
-        end
-      end
-      
-      class Textinput < TextinputBase
-        def to_rss(rss)
-          if @link
-            textinput = RDF::Textinput.new(@link)
-            set = setup_values(textinput)
-            if set
-              rss.textinput = textinput
-              setup_other_elements(rss)
-            end
-          end
-        end
-
-        def have_required_values?
-          @title and @description and @name and @link and
-            @maker.channel.have_required_values?
-        end
-      end
-    end
-
-    add_maker(filename_to_version(__FILE__), RSS10)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/2.0.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/2.0.rb
deleted file mode 100644
index a958661..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/2.0.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-require "rss/2.0"
-
-require "rss/maker/0.9"
-
-module RSS
-  module Maker
-    
-    class RSS20 < RSS09
-      
-      def initialize(rss_version="2.0")
-        super
-      end
-
-      class Channel < RSS09::Channel
-
-        def have_required_values?
-          @title and @link and @description
-        end
-
-        def required_variable_names
-          %w(title link description)
-        end
-        
-        class SkipDays < RSS09::Channel::SkipDays
-          class Day < RSS09::Channel::SkipDays::Day
-          end
-        end
-        
-        class SkipHours < RSS09::Channel::SkipHours
-          class Hour < RSS09::Channel::SkipHours::Hour
-          end
-        end
-        
-        class Cloud < RSS09::Channel::Cloud
-          def to_rss(rss, channel)
-            cloud = Rss::Channel::Cloud.new
-            set = setup_values(cloud)
-            if set
-              channel.cloud = cloud
-              setup_other_elements(rss)
-            end
-          end
-
-          def have_required_values?
-            @domain and @port and @path and
-              @registerProcedure and @protocol
-          end
-        end
-
-        class Categories < RSS09::Channel::Categories
-          def to_rss(rss, channel)
-            @categories.each do |category|
-              category.to_rss(rss, channel)
-            end
-          end
-          
-          class Category < RSS09::Channel::Categories::Category
-            def to_rss(rss, channel)
-              category = Rss::Channel::Category.new
-              set = setup_values(category)
-              if set
-                channel.categories << category
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @content
-            end
-          end
-        end
-        
-      end
-      
-      class Image < RSS09::Image
-      end
-      
-      class Items < RSS09::Items
-        
-        class Item < RSS09::Items::Item
-
-          def have_required_values?
-            @title or @description
-          end
-
-          private
-          def variables
-            super + ["pubDate"]
-          end
-
-          class Guid < RSS09::Items::Item::Guid
-            def to_rss(rss, item)
-              guid = Rss::Channel::Item::Guid.new
-              set = setup_values(guid)
-              if set
-                item.guid = guid
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @content
-            end
-          end
-
-          class Enclosure < RSS09::Items::Item::Enclosure
-            def to_rss(rss, item)
-              enclosure = Rss::Channel::Item::Enclosure.new
-              set = setup_values(enclosure)
-              if set
-                item.enclosure = enclosure
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @url and @length and @type
-            end
-          end
-
-          class Source < RSS09::Items::Item::Source
-            def to_rss(rss, item)
-              source = Rss::Channel::Item::Source.new
-              set = setup_values(source)
-              if set
-                item.source = source
-                setup_other_elements(rss)
-              end
-            end
-            
-            def have_required_values?
-              @url and @content
-            end
-          end
-
-          class Categories < RSS09::Items::Item::Categories
-            def to_rss(rss, item)
-              @categories.each do |category|
-                category.to_rss(rss, item)
-              end
-            end
-          
-            class Category < RSS09::Items::Item::Categories::Category
-              def to_rss(rss, item)
-                category = Rss::Channel::Item::Category.new
-                set = setup_values(category)
-                if set
-                  item.categories << category
-                  setup_other_elements(rss)
-                end
-              end
-              
-              def have_required_values?
-                @content
-              end
-            end
-          end
-        end
-        
-      end
-      
-      class Textinput < RSS09::Textinput
-      end
-    end
-    
-    add_maker(filename_to_version(__FILE__), RSS20)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/base.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/base.rb
deleted file mode 100644
index 2327dd9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/base.rb
+++ /dev/null
@@ -1,546 +0,0 @@
-require 'forwardable'
-
-require 'rss/rss'
-
-module RSS
-  module Maker
-
-    module Base
-
-      def self.append_features(klass)
-        super
-
-        klass.module_eval(<<-EOC, __FILE__, __LINE__)
-
-        OTHER_ELEMENTS = []
-        NEED_INITIALIZE_VARIABLES = []
-
-        def self.inherited(subclass)
-          subclass.const_set("OTHER_ELEMENTS", [])
-          subclass.const_set("NEED_INITIALIZE_VARIABLES", [])
-
-          subclass.module_eval(<<-EOEOC, __FILE__, __LINE__)
-            def self.other_elements
-              OTHER_ELEMENTS + super
-            end
-
-            def self.need_initialize_variables
-              NEED_INITIALIZE_VARIABLES + super
-            end
-          EOEOC
-        end
-
-        def self.add_other_element(variable_name)
-          OTHER_ELEMENTS << variable_name
-        end
-
-        def self.other_elements
-          OTHER_ELEMENTS
-        end
-
-        def self.add_need_initialize_variable(variable_name, init_value="nil")
-          NEED_INITIALIZE_VARIABLES << [variable_name, init_value]
-        end
-
-        def self.need_initialize_variables
-          NEED_INITIALIZE_VARIABLES
-        end
-
-        def self.def_array_element(name)
-          include Enumerable
-          extend Forwardable
-
-          def_delegators("@\#{name}", :<<, :[], :[]=, :first, :last)
-          def_delegators("@\#{name}", :push, :pop, :shift, :unshift)
-          def_delegators("@\#{name}", :each, :size)
-          
-          add_need_initialize_variable(name, "[]")
-        end
-        EOC
-      end
-      
-      def initialize(maker)
-        @maker = maker
-        initialize_variables
-      end
-
-      def have_required_values?
-        true
-      end
-      
-      private
-      def initialize_variables
-        self.class.need_initialize_variables.each do |variable_name, init_value|
-          instance_eval("@#{variable_name} = #{init_value}", __FILE__, __LINE__)
-        end
-      end
-
-      def setup_other_elements(rss)
-        self.class.other_elements.each do |element|
-          __send__("setup_#{element}", rss, current_element(rss))
-        end
-      end
-
-      def current_element(rss)
-        rss
-      end
-      
-      def setup_values(target)
-        set = false
-        if have_required_values?
-          variables.each do |var|
-            setter = "#{var}="
-            if target.respond_to?(setter)
-              value = __send__(var)
-              if value
-                target.__send__(setter, value)
-                set = true
-              end
-            end
-          end
-        end
-        set
-      end
-
-      def variables
-        self.class.need_initialize_variables.find_all do |name, init|
-          "nil" == init
-        end.collect do |name, init|
-          name
-        end
-      end
-
-      def variable_is_set?
-        variables.find {|var| !__send__(var).nil?}
-      end
-
-      def not_set_required_variables
-        required_variable_names.find_all do |var|
-          __send__(var).nil?
-        end
-      end
-
-      def required_variables_are_set?
-        required_variable_names.each do |var|
-          return false if __send__(var).nil?
-        end
-        true
-      end
-      
-    end
-
-    class RSSBase
-      include Base
-
-      class << self
-        def make(&block)
-          new.make(&block)
-        end
-      end
-
-      %w(xml_stylesheets channel image items textinput).each do |element|
-        attr_reader element
-        add_need_initialize_variable(element, "make_#{element}")
-        module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss)
-            @#{element}.to_rss(rss)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(self)
-          end
-EOC
-      end
-      
-      attr_reader :rss_version
-      attr_accessor :version, :encoding, :standalone
-      
-      def initialize(rss_version)
-        super(self)
-        @rss_version = rss_version
-        @version = "1.0"
-        @encoding = "UTF-8"
-        @standalone = nil
-      end
-      
-      def make
-        if block_given?
-          yield(self)
-          to_rss
-        else
-          nil
-        end
-      end
-
-      def to_rss
-        rss = make_rss
-        setup_xml_stylesheets(rss)
-        setup_elements(rss)
-        setup_other_elements(rss)
-        if rss.channel
-          rss
-        else
-          nil
-        end
-      end
-      
-      private
-      remove_method :make_xml_stylesheets
-      def make_xml_stylesheets
-        XMLStyleSheets.new(self)
-      end
-      
-    end
-
-    class XMLStyleSheets
-      include Base
-
-      def_array_element("xml_stylesheets")
-
-      def to_rss(rss)
-        @xml_stylesheets.each do |xss|
-          xss.to_rss(rss)
-        end
-      end
-
-      def new_xml_stylesheet
-        xss = XMLStyleSheet.new(@maker)
-        @xml_stylesheets << xss
-        if block_given?
-          yield xss
-        else
-          xss
-        end
-      end
-
-      class XMLStyleSheet
-        include Base
-
-        ::RSS::XMLStyleSheet::ATTRIBUTES.each do |attribute|
-          attr_accessor attribute
-          add_need_initialize_variable(attribute)
-        end
-        
-        def to_rss(rss)
-          xss = ::RSS::XMLStyleSheet.new
-          guess_type_if_need(xss)
-          set = setup_values(xss)
-          if set
-            rss.xml_stylesheets << xss
-          end
-        end
-
-        def have_required_values?
-          @href and @type
-        end
-
-        private
-        def guess_type_if_need(xss)
-          if @type.nil?
-            xss.href = @href
-            @type = xss.type
-          end
-        end
-      end
-    end
-    
-    class ChannelBase
-      include Base
-
-      %w(cloud categories skipDays skipHours).each do |element|
-        attr_reader element
-        add_other_element(element)
-        add_need_initialize_variable(element, "make_#{element}")
-        module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss, current)
-            @#{element}.to_rss(rss, current)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(@maker)
-          end
-EOC
-      end
-
-      %w(about title link description language copyright
-         managingEditor webMaster rating docs date
-         lastBuildDate generator ttl).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-
-      alias_method(:pubDate, :date)
-      alias_method(:pubDate=, :date=)
-
-      def current_element(rss)
-        rss.channel
-      end
-
-      class SkipDaysBase
-        include Base
-
-        def_array_element("days")
-
-        def new_day
-          day = self.class::Day.new(@maker)
-          @days << day
-          if block_given?
-            yield day
-          else
-            day
-          end
-        end
-        
-        def current_element(rss)
-          rss.channel.skipDays
-        end
-
-        class DayBase
-          include Base
-          
-          %w(content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-
-          def current_element(rss)
-            rss.channel.skipDays.last
-          end
-
-        end
-      end
-      
-      class SkipHoursBase
-        include Base
-
-        def_array_element("hours")
-
-        def new_hour
-          hour = self.class::Hour.new(@maker)
-          @hours << hour
-          if block_given?
-            yield hour
-          else
-            hour
-          end
-        end
-        
-        def current_element(rss)
-          rss.channel.skipHours
-        end
-
-        class HourBase
-          include Base
-          
-          %w(content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-
-          def current_element(rss)
-            rss.channel.skipHours.last
-          end
-
-        end
-      end
-      
-      class CloudBase
-        include Base
-        
-        %w(domain port path registerProcedure protocol).each do |element|
-          attr_accessor element
-          add_need_initialize_variable(element)
-        end
-        
-        def current_element(rss)
-          rss.channel.cloud
-        end
-
-      end
-
-      class CategoriesBase
-        include Base
-        
-        def_array_element("categories")
-
-        def new_category
-          category = self.class::Category.new(@maker)
-          @categories << category
-          if block_given?
-            yield category
-          else
-            category
-          end
-        end
-
-        class CategoryBase
-          include Base
-
-          %w(domain content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      end
-    end
-    
-    class ImageBase
-      include Base
-
-      %w(title url width height description).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-      
-      def link
-        @maker.channel.link
-      end
-
-      def current_element(rss)
-        rss.image
-      end
-    end
-    
-    class ItemsBase
-      include Base
-
-      def_array_element("items")
-      
-      attr_accessor :do_sort, :max_size
-      
-      def initialize(maker)
-        super
-        @do_sort = false
-        @max_size = -1
-      end
-      
-      def normalize
-        if @max_size >= 0
-          sort_if_need[0... at max_size]
-        else
-          sort_if_need[0.. at max_size]
-        end
-      end
-      
-      def current_element(rss)
-        rss.items
-      end
-
-      def new_item
-        item = self.class::Item.new(@maker)
-        @items << item
-        if block_given?
-          yield item
-        else
-          item
-        end
-      end
-      
-      private
-      def sort_if_need
-        if @do_sort.respond_to?(:call)
-          @items.sort do |x, y|
-            @do_sort.call(x, y)
-          end
-        elsif @do_sort
-          @items.sort do |x, y|
-            y <=> x
-          end
-        else
-          @items
-        end
-      end
-
-      class ItemBase
-        include Base
-        
-        %w(guid enclosure source categories).each do |element|
-          attr_reader element
-          add_other_element(element)
-          add_need_initialize_variable(element, "make_#{element}")
-          module_eval(<<-EOC, __FILE__, __LINE__)
-          private
-          def setup_#{element}(rss, current)
-            @#{element}.to_rss(rss, current)
-          end
-
-          def make_#{element}
-            self.class::#{Utils.to_class_name(element)}.new(@maker)
-          end
-EOC
-        end
-      
-        %w(title link description date author comments).each do |element|
-          attr_accessor element
-          add_need_initialize_variable(element)
-        end
-
-        alias_method(:pubDate, :date)
-        alias_method(:pubDate=, :date=)
-
-        def <=>(other)
-          if date and other.date
-            date <=> other.date
-          elsif date
-            1
-          elsif other.date
-            -1
-          else
-            0
-          end
-        end
-      
-        def current_element(rss)
-          rss.items.last
-        end
-
-        class GuidBase
-          include Base
-
-          %w(isPermaLink content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        class EnclosureBase
-          include Base
-
-          %w(url length type).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        class SourceBase
-          include Base
-
-          %w(url content).each do |element|
-            attr_accessor element
-            add_need_initialize_variable(element)
-          end
-        end
-      
-        CategoriesBase = ChannelBase::CategoriesBase
-      
-      end
-    end
-
-    class TextinputBase
-      include Base
-
-      %w(title description name link).each do |element|
-        attr_accessor element
-        add_need_initialize_variable(element)
-      end
-      
-      def current_element(rss)
-        rss.textinput
-      end
-
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/content.rb
deleted file mode 100644
index 18590d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/content.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rss/content'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module ContentModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::ContentModel::ELEMENTS.each do |element|
-          klass.add_need_initialize_variable(element)
-          klass.add_other_element(element)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{element}
-            def setup_#{element}(rss, current)
-              if #{element} and current.respond_to?(:#{element}=)
-                current.#{element} = @#{element} if @#{element}
-              end
-            end
-          EOC
-        end
-      end
-    end
-
-    class ItemsBase
-      class ItemBase; include ContentModel; end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/dublincore.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/dublincore.rb
deleted file mode 100644
index 0cf1255..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/dublincore.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-require 'rss/dublincore'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module DublinCoreModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-          plural_name ||= "#{name}s"
-          full_name = "#{RSS::DC_PREFIX}_#{name}"
-          full_plural_name = "#{RSS::DC_PREFIX}_#{plural_name}"
-          klass_name = Utils.to_class_name(name)
-          plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-          full_plural_klass_name = "self.class::#{plural_klass_name}"
-          full_klass_name = "#{full_plural_klass_name}::#{klass_name}"
-          klass.add_need_initialize_variable(full_plural_name,
-                                             "make_#{full_plural_name}")
-          klass.add_other_element(full_plural_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{full_plural_name}
-            def make_#{full_plural_name}
-              #{full_plural_klass_name}.new(@maker)
-            end
-            
-            def setup_#{full_plural_name}(rss, current)
-              @#{full_plural_name}.to_rss(rss, current)
-            end
-
-            def #{full_name}
-              @#{full_plural_name}[0] and @#{full_plural_name}[0].value
-            end
-            
-            def #{full_name}=(new_value)
-              @#{full_plural_name}[0] = #{full_klass_name}.new(self)
-              @#{full_plural_name}[0].value = new_value
-            end
-EOC
-        end
-      end
-
-      ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-        plural_name ||= "#{name}s"
-        klass_name = Utils.to_class_name(name)
-        plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-        module_eval(<<-EOC, __FILE__, __LINE__)
-        class #{plural_klass_name}Base
-          include Base
-
-          def_array_element(#{plural_name.dump})
-                            
-          def new_#{name}
-            #{name} = self.class::#{klass_name}.new(self)
-            @#{plural_name} << #{name}
-            if block_given?
-              yield #{name}
-            else
-              #{name}
-            end
-          end
-
-          def to_rss(rss, current)
-            @#{plural_name}.each do |#{name}|
-              #{name}.to_rss(rss, current)
-            end
-          end
-        
-          class #{klass_name}Base
-            include Base
-
-            attr_accessor :value
-            add_need_initialize_variable("value")
-            alias_method(:content, :value)
-            alias_method(:content=, :value=)
-
-            def have_required_values?
-              @value
-            end
-          end
-        end
-        EOC
-      end
-
-      def self.install_dublin_core(klass)
-        ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
-          plural_name ||= "#{name}s"
-          klass_name = Utils.to_class_name(name)
-          plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
-          full_klass_name = "DublinCore#{klass_name}"
-          klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class #{plural_klass_name} < #{plural_klass_name}Base
-            class #{klass_name} < #{klass_name}Base
-              def to_rss(rss, current)
-                if value and current.respond_to?(:dc_#{name})
-                  new_item = current.class::#{full_klass_name}.new(value)
-                  current.dc_#{plural_name} << new_item
-                end
-              end
-            end
-          end
-EOC
-        end
-      end
-    end
-
-    class ChannelBase
-      include DublinCoreModel
-      
-      remove_method(:date)
-      remove_method(:date=)
-      alias_method(:date, :dc_date)
-      alias_method(:date=, :dc_date=)
-    end
-    
-    class ImageBase; include DublinCoreModel; end
-    class ItemsBase
-      class ItemBase
-        include DublinCoreModel
-        
-        remove_method(:date)
-        remove_method(:date=)
-        alias_method(:date, :dc_date)
-        alias_method(:date=, :dc_date=)
-      end
-    end
-    class TextinputBase; include DublinCoreModel; end
-
-    class RSS10
-      class Channel
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Image
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Items
-        class Item
-          DublinCoreModel.install_dublin_core(self)
-        end
-      end
-
-      class Textinput
-        DublinCoreModel.install_dublin_core(self)
-      end
-    end
-    
-    class RSS09
-      class Channel
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Image
-        DublinCoreModel.install_dublin_core(self)
-      end
-
-      class Items
-        class Item
-          DublinCoreModel.install_dublin_core(self)
-        end
-      end
-
-      class Textinput
-        DublinCoreModel.install_dublin_core(self)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/image.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/image.rb
deleted file mode 100644
index ed51c8e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/image.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require 'rss/image'
-require 'rss/maker/1.0'
-require 'rss/maker/dublincore'
-
-module RSS
-  module Maker
-    module ImageItemModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::IMAGE_PREFIX}_item"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_reader :#{name}
-          def setup_#{name}(rss, current)
-            if @#{name}
-              @#{name}.to_rss(rss, current)
-            end
-          end
-
-          def make_#{name}
-            self.class::#{Utils.to_class_name(name)}.new(@maker)
-          end
-EOC
-      end
-
-      class ImageItemBase
-        include Base
-        include Maker::DublinCoreModel
-
-        attr_accessor :about, :resource, :image_width, :image_height
-        add_need_initialize_variable("about")
-        add_need_initialize_variable("resource")
-        add_need_initialize_variable("image_width")
-        add_need_initialize_variable("image_height")
-        alias width= image_width=
-        alias width image_width
-        alias height= image_height=
-        alias height image_height
-
-        def have_required_values?
-          @about
-        end
-      end
-    end
-
-    module ImageFaviconModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::IMAGE_PREFIX}_favicon"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_reader :#{name}
-          def setup_#{name}(rss, current)
-            if @#{name}
-              @#{name}.to_rss(rss, current)
-            end
-          end
-
-          def make_#{name}
-            self.class::#{Utils.to_class_name(name)}.new(@maker)
-          end
-EOC
-      end
-
-      class ImageFaviconBase
-        include Base
-        include Maker::DublinCoreModel
-
-        attr_accessor :about, :image_size
-        add_need_initialize_variable("about")
-        add_need_initialize_variable("image_size")
-        alias size image_size
-        alias size= image_size=
-
-        def have_required_values?
-          @about and @image_size
-        end
-      end
-    end
-
-    class ChannelBase; include Maker::ImageFaviconModel; end
-    
-    class ItemsBase
-      class ItemBase; include Maker::ImageItemModel; end
-    end
-
-    class RSS10
-      class Items
-        class Item
-          class ImageItem < ImageItemBase
-            DublinCoreModel.install_dublin_core(self)
-            def to_rss(rss, current)
-              if @about
-                item = ::RSS::ImageItemModel::ImageItem.new(@about, @resource)
-                setup_values(item)
-                setup_other_elements(item)
-                current.image_item = item
-              end
-            end
-          end
-        end
-      end
-      
-      class Channel
-        class ImageFavicon < ImageFaviconBase
-          DublinCoreModel.install_dublin_core(self)
-          def to_rss(rss, current)
-            if @about and @image_size
-              args = [@about, @image_size]
-              favicon = ::RSS::ImageFaviconModel::ImageFavicon.new(*args)
-              setup_values(favicon)
-              setup_other_elements(favicon)
-              current.image_favicon = favicon
-            end
-          end
-        end
-      end
-    end
-
-    class RSS09
-      class Items
-        class Item
-          class ImageItem < ImageItemBase
-            DublinCoreModel.install_dublin_core(self)
-            def to_rss(*args)
-            end
-          end
-        end
-      end
-      
-      class Channel
-        class ImageFavicon < ImageFaviconBase
-          DublinCoreModel.install_dublin_core(self)
-          def to_rss(*args)
-          end
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/syndication.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/syndication.rb
deleted file mode 100644
index 3717086..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/syndication.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'rss/syndication'
-require 'rss/maker/1.0'
-
-module RSS
-  module Maker
-    module SyndicationModel
-      def self.append_features(klass)
-        super
-
-        ::RSS::SyndicationModel::ELEMENTS.each do |element|
-          klass.add_need_initialize_variable(element)
-          klass.add_other_element(element)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-            attr_accessor :#{element}
-            def setup_#{element}(rss, current)
-              if #{element} and current.respond_to?(:#{element}=)
-                current.#{element} = @#{element} if @#{element}
-              end
-            end
-          EOC
-        end
-      end
-    end
-
-    class ChannelBase; include SyndicationModel; end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/taxonomy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/taxonomy.rb
deleted file mode 100644
index f272996..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/taxonomy.rb
+++ /dev/null
@@ -1,182 +0,0 @@
-require 'rss/taxonomy'
-require 'rss/maker/1.0'
-require 'rss/maker/dublincore'
-
-module RSS
-  module Maker
-    module TaxonomyTopicsModel
-      def self.append_features(klass)
-        super
-
-        klass.add_need_initialize_variable("taxo_topics", "make_taxo_topics")
-        klass.add_other_element("taxo_topics")
-        klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
-          attr_reader :taxo_topics
-          def make_taxo_topics
-            self.class::TaxonomyTopics.new(@maker)
-          end
-            
-          def setup_taxo_topics(rss, current)
-            @taxo_topics.to_rss(rss, current)
-          end
-EOC
-      end
-
-      def self.install_taxo_topics(klass)
-        klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class TaxonomyTopics < TaxonomyTopicsBase
-            def to_rss(rss, current)
-              if current.respond_to?(:taxo_topics)
-                topics = current.class::TaxonomyTopics.new
-                bag = topics.Bag
-                @resources.each do |resource|
-                  bag.lis << RDF::Bag::Li.new(resource)
-                end
-                current.taxo_topics = topics
-              end
-            end
-          end
-EOC
-      end
-
-      class TaxonomyTopicsBase
-        include Base
-
-        attr_reader :resources
-        def_array_element("resources")
-      end
-    end
-
-    module TaxonomyTopicModel
-      def self.append_features(klass)
-        super
-
-        klass.add_need_initialize_variable("taxo_topics", "make_taxo_topics")
-        klass.add_other_element("taxo_topics")
-        klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
-          attr_reader :taxo_topics
-          def make_taxo_topics
-            self.class::TaxonomyTopics.new(@maker)
-          end
-            
-          def setup_taxo_topics(rss, current)
-            @taxo_topics.to_rss(rss, current)
-          end
-
-          def taxo_topic
-            @taxo_topics[0] and @taxo_topics[0].value
-          end
-            
-          def taxo_topic=(new_value)
-            @taxo_topic[0] = self.class::TaxonomyTopic.new(self)
-            @taxo_topic[0].value = new_value
-          end
-EOC
-      end
-    
-      def self.install_taxo_topic(klass)
-        klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
-          class TaxonomyTopics < TaxonomyTopicsBase
-            class TaxonomyTopic < TaxonomyTopicBase
-              DublinCoreModel.install_dublin_core(self)
-              TaxonomyTopicsModel.install_taxo_topics(self)
-
-              def to_rss(rss, current)
-                if current.respond_to?(:taxo_topics)
-                  topic = current.class::TaxonomyTopic.new(value)
-                  topic.taxo_link = value
-                  taxo_topics.to_rss(rss, topic) if taxo_topics
-                  current.taxo_topics << topic
-                  setup_other_elements(rss)
-                end
-              end
-
-              def current_element(rss)
-                super.taxo_topics.last
-              end
-            end
-          end
-EOC
-      end
-
-      class TaxonomyTopicsBase
-        include Base
-        
-        def_array_element("taxo_topics")
-                            
-        def new_taxo_topic
-          taxo_topic = self.class::TaxonomyTopic.new(self)
-          @taxo_topics << taxo_topic
-          if block_given?
-            yield taxo_topic
-          else
-            taxo_topic
-          end
-        end
-
-        def to_rss(rss, current)
-          @taxo_topics.each do |taxo_topic|
-            taxo_topic.to_rss(rss, current)
-          end
-        end
-        
-        class TaxonomyTopicBase
-          include Base
-          include DublinCoreModel
-          include TaxonomyTopicsModel
-          
-          attr_accessor :value
-          add_need_initialize_variable("value")
-          alias_method(:taxo_link, :value)
-          alias_method(:taxo_link=, :value=)
-          
-          def have_required_values?
-            @value
-          end
-        end
-      end
-    end
-
-    class RSSBase
-      include TaxonomyTopicModel
-    end
-    
-    class ChannelBase
-      include TaxonomyTopicsModel
-    end
-    
-    class ItemsBase
-      class ItemBase
-        include TaxonomyTopicsModel
-      end
-    end
-
-    class RSS10
-      TaxonomyTopicModel.install_taxo_topic(self)
-      
-      class Channel
-        TaxonomyTopicsModel.install_taxo_topics(self)
-      end
-
-      class Items
-        class Item
-          TaxonomyTopicsModel.install_taxo_topics(self)
-        end
-      end
-    end
-    
-    class RSS09
-      TaxonomyTopicModel.install_taxo_topic(self)
-      
-      class Channel
-        TaxonomyTopicsModel.install_taxo_topics(self)
-      end
-
-      class Items
-        class Item
-          TaxonomyTopicsModel.install_taxo_topics(self)
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/trackback.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/trackback.rb
deleted file mode 100644
index 4ae6164..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/maker/trackback.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-require 'rss/trackback'
-require 'rss/maker/1.0'
-require 'rss/maker/2.0'
-
-module RSS
-  module Maker
-    module TrackBackModel
-      def self.append_features(klass)
-        super
-
-        name = "#{RSS::TRACKBACK_PREFIX}_ping"
-        klass.add_need_initialize_variable(name)
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_accessor :#{name}
-          def setup_#{name}(rss, current)
-            if #{name} and current.respond_to?(:#{name}=)
-              current.#{name} = #{name}
-            end
-          end
-        EOC
-
-        name = "#{RSS::TRACKBACK_PREFIX}_abouts"
-        klass.add_need_initialize_variable(name, "make_#{name}")
-        klass.add_other_element(name)
-        klass.module_eval(<<-EOC, __FILE__, __LINE__+1)
-          attr_accessor :#{name}
-          def make_#{name}
-            self.class::TrackBackAbouts.new(self)
-          end
-
-          def setup_#{name}(rss, current)
-            @#{name}.to_rss(rss, current)
-          end
-        EOC
-      end
-
-      class TrackBackAboutsBase
-        include Base
-
-        def_array_element("abouts")
-        
-        def new_about
-          about = self.class::TrackBackAbout.new(@maker)
-          @abouts << about
-          if block_given?
-            yield about
-          else
-            about
-          end
-        end
-
-        def to_rss(rss, current)
-          @abouts.each do |about|
-            about.to_rss(rss, current)
-          end
-        end
-        
-        class TrackBackAboutBase
-          include Base
-
-          attr_accessor :value
-          add_need_initialize_variable("value")
-          
-          alias_method(:resource, :value)
-          alias_method(:resource=, :value=)
-          alias_method(:content, :value)
-          alias_method(:content=, :value=)
-        
-          def have_required_values?
-            @value
-          end
-          
-        end
-      end
-    end
-
-    class ItemsBase
-      class ItemBase; include TrackBackModel; end
-    end
-
-    class RSS10
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            class TrackBackAbout < TrackBackAboutBase
-              def to_rss(rss, current)
-                if resource
-                  about = ::RSS::TrackBackModel10::TrackBackAbout.new(resource)
-                  current.trackback_abouts << about
-                end
-              end
-            end
-          end
-        end
-      end
-    end
-
-    class RSS09
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            def to_rss(*args)
-            end
-            class TrackBackAbout < TrackBackAboutBase
-            end
-          end
-        end
-      end
-    end
-    
-    class RSS20
-      class Items
-        class Item
-          class TrackBackAbouts < TrackBackAboutsBase
-            class TrackBackAbout < TrackBackAboutBase
-              def to_rss(rss, current)
-                if content
-                  about = ::RSS::TrackBackModel20::TrackBackAbout.new(content)
-                  current.trackback_abouts << about
-                end
-              end
-            end
-          end
-        end
-      end
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/parser.rb
deleted file mode 100644
index 033bc12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/parser.rb
+++ /dev/null
@@ -1,476 +0,0 @@
-require "forwardable"
-require "open-uri"
-
-require "rss/rss"
-
-module RSS
-
-  class NotWellFormedError < Error
-    attr_reader :line, :element
-
-    # Create a new NotWellFormedError for an error at +line+
-    # in +element+.  If a block is given the return value of
-    # the block ends up in the error message.
-    def initialize(line=nil, element=nil)
-      message = "This is not well formed XML"
-      if element or line
-        message << "\nerror occurred"
-        message << " in #{element}" if element
-        message << " at about #{line} line" if line
-      end
-      message << "\n#{yield}" if block_given?
-      super(message)
-    end
-  end
-
-  class XMLParserNotFound < Error
-    def initialize
-      super("available XML parser was not found in " <<
-            "#{AVAILABLE_PARSER_LIBRARIES.inspect}.")
-    end
-  end
-
-  class NotValidXMLParser < Error
-    def initialize(parser)
-      super("#{parser} is not an available XML parser. " <<
-            "Available XML parser"<<
-            (AVAILABLE_PARSERS.size > 1 ? "s are ": " is ") <<
-            "#{AVAILABLE_PARSERS.inspect}.")
-    end
-  end
-
-  class NSError < InvalidRSSError
-    attr_reader :tag, :prefix, :uri
-    def initialize(tag, prefix, require_uri)
-      @tag, @prefix, @uri = tag, prefix, require_uri
-      super("prefix <#{prefix}> doesn't associate uri " <<
-            "<#{require_uri}> in tag <#{tag}>")
-    end
-  end
-
-  class Parser
-
-    extend Forwardable
-
-    class << self
-
-      @@default_parser = nil
-
-      def default_parser
-        @@default_parser || AVAILABLE_PARSERS.first
-      end
-
-      # Set @@default_parser to new_value if it is one of the
-      # available parsers. Else raise NotValidXMLParser error.
-      def default_parser=(new_value)
-        if AVAILABLE_PARSERS.include?(new_value)
-          @@default_parser = new_value
-        else
-          raise NotValidXMLParser.new(new_value)
-        end
-      end
-
-      def parse(rss, do_validate=true, ignore_unknown_element=true,
-                parser_class=default_parser)
-        parser = new(rss, parser_class)
-        parser.do_validate = do_validate
-        parser.ignore_unknown_element = ignore_unknown_element
-        parser.parse
-      end
-    end
-
-    def_delegators(:@parser, :parse, :rss,
-                   :ignore_unknown_element,
-                   :ignore_unknown_element=, :do_validate,
-                   :do_validate=)
-
-    def initialize(rss, parser_class=self.class.default_parser)
-      @parser = parser_class.new(normalize_rss(rss))
-    end
-
-    private
-
-    # Try to get the XML associated with +rss+.
-    # Return +rss+ if it already looks like XML, or treat it as a URI,
-    # or a file to get the XML,
-    def normalize_rss(rss)
-      return rss if maybe_xml?(rss)
-
-      uri = to_uri(rss)
-      
-      if uri.respond_to?(:read)
-        uri.read
-      elsif !rss.tainted? and File.readable?(rss)
-        File.open(rss) {|f| f.read}
-      else
-        rss
-      end
-    end
-
-    # maybe_xml? tests if source is a string that looks like XML.
-    def maybe_xml?(source)
-      source.is_a?(String) and /</ =~ source
-    end
-
-    # Attempt to convert rss to a URI, but just return it if 
-    # there's a ::URI::Error
-    def to_uri(rss)
-      return rss if rss.is_a?(::URI::Generic)
-
-      begin
-        URI(rss)
-      rescue ::URI::Error
-        rss
-      end
-    end
-  end
-
-  class BaseParser
-
-    class << self
-      def raise_for_undefined_entity?
-        listener.raise_for_undefined_entity?
-      end
-    end
-    
-    def initialize(rss)
-      @listener = self.class.listener.new
-      @rss = rss
-    end
-
-    def rss
-      @listener.rss
-    end
-
-    def ignore_unknown_element
-      @listener.ignore_unknown_element
-    end
-
-    def ignore_unknown_element=(new_value)
-      @listener.ignore_unknown_element = new_value
-    end
-
-    def do_validate
-      @listener.do_validate
-    end
-
-    def do_validate=(new_value)
-      @listener.do_validate = new_value
-    end
-
-    def parse
-      if @listener.rss.nil?
-        _parse
-      end
-      @listener.rss
-    end
-
-  end
-
-  class BaseListener
-
-    extend Utils
-
-    class << self
-
-      @@setters = {}
-      @@registered_uris = {}
-      @@class_names = {}
-
-      # return the setter for the uri, tag_name pair, or nil.
-      def setter(uri, tag_name)
-        begin
-          @@setters[uri][tag_name]
-        rescue NameError
-          nil
-        end
-      end
-
-
-      # return the tag_names for setters associated with uri
-      def available_tags(uri)
-        begin
-          @@setters[uri].keys
-        rescue NameError
-          []
-        end
-      end
-      
-      # register uri against this name.
-      def register_uri(uri, name)
-        @@registered_uris[name] ||= {}
-        @@registered_uris[name][uri] = nil
-      end
-      
-      # test if this uri is registered against this name
-      def uri_registered?(uri, name)
-        @@registered_uris[name].has_key?(uri)
-      end
-
-      # record class_name for the supplied uri and tag_name
-      def install_class_name(uri, tag_name, class_name)
-        @@class_names[uri] ||= {}
-        @@class_names[uri][tag_name] = class_name
-      end
-
-      # retrieve class_name for the supplied uri and tag_name
-      # If it doesn't exist, capitalize the tag_name
-      def class_name(uri, tag_name)
-        begin
-          @@class_names[uri][tag_name]
-        rescue NameError
-          tag_name[0,1].upcase + tag_name[1..-1]
-        end
-      end
-
-      def install_get_text_element(uri, name, setter)
-        install_setter(uri, name, setter)
-        def_get_text_element(uri, name, *get_file_and_line_from_caller(1))
-      end
-      
-      def raise_for_undefined_entity?
-        true
-      end
-    
-      private
-      # set the setter for the uri, tag_name pair
-      def install_setter(uri, tag_name, setter)
-        @@setters[uri] ||= {}
-        @@setters[uri][tag_name] = setter
-      end
-
-      def def_get_text_element(uri, name, file, line)
-        register_uri(uri, name)
-        unless private_instance_methods(false).include?("start_#{name}")
-          module_eval(<<-EOT, file, line)
-          def start_#{name}(name, prefix, attrs, ns)
-            uri = _ns(ns, prefix)
-            if self.class.uri_registered?(uri, #{name.inspect})
-              start_get_text_element(name, prefix, ns, uri)
-            else
-              start_else_element(name, prefix, attrs, ns)
-            end
-          end
-          EOT
-          __send__("private", "start_#{name}")
-        end
-      end
-
-    end
-
-  end
-
-  module ListenerMixin
-
-    attr_reader :rss
-
-    attr_accessor :ignore_unknown_element
-    attr_accessor :do_validate
-
-    def initialize
-      @rss = nil
-      @ignore_unknown_element = true
-      @do_validate = true
-      @ns_stack = [{}]
-      @tag_stack = [[]]
-      @text_stack = ['']
-      @proc_stack = []
-      @last_element = nil
-      @version = @encoding = @standalone = nil
-      @xml_stylesheets = []
-    end
-    
-    # set instance vars for version, encoding, standalone
-    def xmldecl(version, encoding, standalone)
-      @version, @encoding, @standalone = version, encoding, standalone
-    end
-
-    def instruction(name, content)
-      if name == "xml-stylesheet"
-        params = parse_pi_content(content)
-        if params.has_key?("href")
-          @xml_stylesheets << XMLStyleSheet.new(*params)
-        end
-      end
-    end
-
-    def tag_start(name, attributes)
-      @text_stack.push('')
-
-      ns = @ns_stack.last.dup
-      attrs = {}
-      attributes.each do |n, v|
-        if /\Axmlns(?:\z|:)/ =~ n
-          ns[$POSTMATCH] = v
-        else
-          attrs[n] = v
-        end
-      end
-      @ns_stack.push(ns)
-
-      prefix, local = split_name(name)
-      @tag_stack.last.push([_ns(ns, prefix), local])
-      @tag_stack.push([])
-      if respond_to?("start_#{local}", true)
-        __send__("start_#{local}", local, prefix, attrs, ns.dup)
-      else
-        start_else_element(local, prefix, attrs, ns.dup)
-      end
-    end
-
-    def tag_end(name)
-      if DEBUG
-        p "end tag #{name}"
-        p @tag_stack
-      end
-      text = @text_stack.pop
-      tags = @tag_stack.pop
-      pr = @proc_stack.pop
-      pr.call(text, tags) unless pr.nil?
-      @ns_stack.pop
-    end
-
-    def text(data)
-      @text_stack.last << data
-    end
-
-    private
-    def _ns(ns, prefix)
-      ns.fetch(prefix, "")
-    end
-
-    CONTENT_PATTERN = /\s*([^=]+)=(["'])([^\2]+?)\2/
-    # Extract the first name="value" pair from content.
-    # Works with single quotes according to the constant
-    # CONTENT_PATTERN. Return a Hash.
-    def parse_pi_content(content)
-      params = {}
-      content.scan(CONTENT_PATTERN) do |name, quote, value|
-        params[name] = value
-      end
-      params
-    end
-
-    def start_else_element(local, prefix, attrs, ns)
-      class_name = self.class.class_name(_ns(ns, prefix), local)
-      current_class = @last_element.class
-      if current_class.constants.include?(class_name)
-        next_class = current_class.const_get(class_name)
-        start_have_something_element(local, prefix, attrs, ns, next_class)
-      else
-        if !@do_validate or @ignore_unknown_element
-          @proc_stack.push(nil)
-        else
-          parent = "ROOT ELEMENT???"
-          if current_class.tag_name
-            parent = current_class.tag_name
-          end
-          raise NotExpectedTagError.new(local, _ns(ns, prefix), parent)
-        end
-      end
-    end
-
-    NAMESPLIT = /^(?:([\w:][-\w\d.]*):)?([\w:][-\w\d.]*)/
-    def split_name(name)
-      name =~ NAMESPLIT
-      [$1 || '', $2]
-    end
-
-    def check_ns(tag_name, prefix, ns, require_uri)
-      if @do_validate
-        if _ns(ns, prefix) == require_uri
-          #ns.delete(prefix)
-        else
-          raise NSError.new(tag_name, prefix, require_uri)
-        end
-      end
-    end
-
-    def start_get_text_element(tag_name, prefix, ns, required_uri)
-      @proc_stack.push Proc.new {|text, tags|
-        setter = self.class.setter(required_uri, tag_name)
-        if @last_element.respond_to?(setter)
-          @last_element.__send__(setter, text.to_s)
-        else
-          if @do_validate and !@ignore_unknown_element
-            raise NotExpectedTagError.new(tag_name, _ns(ns, prefix),
-                                          @last_element.tag_name)
-          end
-        end
-      }
-    end
-
-    def start_have_something_element(tag_name, prefix, attrs, ns, klass)
-
-      check_ns(tag_name, prefix, ns, klass.required_uri)
-
-      attributes = {}
-      klass.get_attributes.each do |a_name, a_uri, required, element_name|
-
-        if a_uri.is_a?(String) or !a_uri.respond_to?(:include?)
-          a_uri = [a_uri]
-        end
-        unless a_uri == [""]
-          for prefix, uri in ns
-            if a_uri.include?(uri)
-              val = attrs["#{prefix}:#{a_name}"]
-              break if val
-            end
-          end
-        end
-        if val.nil? and a_uri.include?("")
-          val = attrs[a_name]
-        end
-
-        if @do_validate and required and val.nil?
-          unless a_uri.include?("")
-            for prefix, uri in ns
-              if a_uri.include?(uri)
-                a_name = "#{prefix}:#{a_name}"
-              end
-            end
-          end
-          raise MissingAttributeError.new(tag_name, a_name)
-        end
-
-        attributes[a_name] = val
-      end
-
-      previous = @last_element
-      next_element = klass.new(@do_validate, attributes)
-      previous.instance_eval {set_next_element(tag_name, next_element)}
-      @last_element = next_element
-      @proc_stack.push Proc.new { |text, tags|
-        p(@last_element.class) if DEBUG
-        @last_element.content = text if klass.have_content?
-        if @do_validate
-          @last_element.validate_for_stream(tags, @ignore_unknown_element)
-        end
-        @last_element = previous
-      }
-    end
-
-  end
-
-  unless const_defined? :AVAILABLE_PARSER_LIBRARIES
-    AVAILABLE_PARSER_LIBRARIES = [
-      ["rss/xmlparser", :XMLParserParser],
-      ["rss/xmlscanner", :XMLScanParser],
-      ["rss/rexmlparser", :REXMLParser],
-    ]
-  end
-
-  AVAILABLE_PARSERS = []
-
-  AVAILABLE_PARSER_LIBRARIES.each do |lib, parser|
-    begin
-      require lib
-      AVAILABLE_PARSERS.push(const_get(parser))
-    rescue LoadError
-    end
-  end
-
-  if AVAILABLE_PARSERS.empty?
-    raise XMLParserNotFound
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rexmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rexmlparser.rb
deleted file mode 100644
index 4dabf59..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rexmlparser.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require "rexml/document"
-require "rexml/streamlistener"
-
-/\A(\d+)\.(\d+)(?:\.\d+)+\z/ =~ REXML::Version
-if ([$1.to_i, $2.to_i] <=> [2, 5]) < 0
-  raise LoadError, "needs REXML 2.5 or later (#{REXML::Version})"
-end
-
-module RSS
-  
-  class REXMLParser < BaseParser
-
-    class << self
-      def listener
-        REXMLListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        REXML::Document.parse_stream(@rss, @listener)
-      rescue RuntimeError => e
-        raise NotWellFormedError.new{e.message}
-      rescue REXML::ParseException => e
-        context = e.context
-        line = context[0] if context
-        raise NotWellFormedError.new(line){e.message}
-      end
-    end
-    
-  end
-  
-  class REXMLListener < BaseListener
-
-    include REXML::StreamListener
-    include ListenerMixin
-
-    class << self
-      def raise_for_undefined_entity?
-        false
-      end
-    end
-    
-    def xmldecl(version, encoding, standalone)
-      super(version, encoding, standalone == "yes")
-      # Encoding is converted to UTF-8 when REXML parse XML.
-      @encoding = 'UTF-8'
-    end
-
-    alias_method(:cdata, :text)
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rss.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rss.rb
deleted file mode 100644
index a06985a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/rss.rb
+++ /dev/null
@@ -1,1015 +0,0 @@
-require "time"
-
-class Time
-  class << self
-    unless respond_to?(:w3cdtf)
-      def w3cdtf(date)
-        if /\A\s*
-            (-?\d+)-(\d\d)-(\d\d)
-            (?:T
-            (\d\d):(\d\d)(?::(\d\d))?
-            (\.\d+)?
-            (Z|[+-]\d\d:\d\d)?)?
-            \s*\z/ix =~ date and (($5 and $8) or (!$5 and !$8))
-          datetime = [$1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i] 
-          datetime << $7.to_f * 1000000 if $7
-          if $8
-            Time.utc(*datetime) - zone_offset($8)
-          else
-            Time.local(*datetime)
-          end
-        else
-          raise ArgumentError.new("invalid date: #{date.inspect}")
-        end
-      end
-    end
-  end
-
-  unless instance_methods.include?("w3cdtf")
-    alias w3cdtf iso8601
-  end
-end
-
-require "English"
-require "rss/utils"
-require "rss/converter"
-require "rss/xml-stylesheet"
-
-module RSS
-
-  VERSION = "0.1.6"
-
-  URI = "http://purl.org/rss/1.0/"
-
-  DEBUG = false
-
-  class Error < StandardError; end
-
-  class OverlappedPrefixError < Error
-    attr_reader :prefix
-    def initialize(prefix)
-      @prefix = prefix
-    end
-  end
-
-  class InvalidRSSError < Error; end
-
-  class MissingTagError < InvalidRSSError
-    attr_reader :tag, :parent
-    def initialize(tag, parent)
-      @tag, @parent = tag, parent
-      super("tag <#{tag}> is missing in tag <#{parent}>")
-    end
-  end
-
-  class TooMuchTagError < InvalidRSSError
-    attr_reader :tag, :parent
-    def initialize(tag, parent)
-      @tag, @parent = tag, parent
-      super("tag <#{tag}> is too much in tag <#{parent}>")
-    end
-  end
-
-  class MissingAttributeError < InvalidRSSError
-    attr_reader :tag, :attribute
-    def initialize(tag, attribute)
-      @tag, @attribute = tag, attribute
-      super("attribute <#{attribute}> is missing in tag <#{tag}>")
-    end
-  end
-
-  class UnknownTagError < InvalidRSSError
-    attr_reader :tag, :uri
-    def initialize(tag, uri)
-      @tag, @uri = tag, uri
-      super("tag <#{tag}> is unknown in namespace specified by uri <#{uri}>")
-    end
-  end
-
-  class NotExpectedTagError < InvalidRSSError
-    attr_reader :tag, :uri, :parent
-    def initialize(tag, uri, parent)
-      @tag, @uri, @parent = tag, uri, parent
-      super("tag <{#{uri}}#{tag}> is not expected in tag <#{parent}>")
-    end
-  end
-  # For backward compatibility :X
-  NotExceptedTagError = NotExpectedTagError
-
-  class NotAvailableValueError < InvalidRSSError
-    attr_reader :tag, :value, :attribute
-    def initialize(tag, value, attribute=nil)
-      @tag, @value, @attribute = tag, value, attribute
-      message = "value <#{value}> of "
-      message << "attribute <#{attribute}> of " if attribute
-      message << "tag <#{tag}> is not available."
-      super(message)
-    end
-  end
-
-  class UnknownConversionMethodError < Error
-    attr_reader :to, :from
-    def initialize(to, from)
-      @to = to
-      @from = from
-      super("can't convert to #{to} from #{from}.")
-    end
-  end
-  # for backward compatibility
-  UnknownConvertMethod = UnknownConversionMethodError
-
-  class ConversionError < Error
-    attr_reader :string, :to, :from
-    def initialize(string, to, from)
-      @string = string
-      @to = to
-      @from = from
-      super("can't convert #{@string} to #{to} from #{from}.")
-    end
-  end
-
-  class NotSetError < Error
-    attr_reader :name, :variables
-    def initialize(name, variables)
-      @name = name
-      @variables = variables
-      super("required variables of #{@name} are not set: #{@variables.join(', ')}")
-    end
-  end
-  
-  module BaseModel
-
-    include Utils
-
-    def install_have_child_element(tag_name, uri, occurs, name=nil)
-      name ||= tag_name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      attr_accessor name
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          "\#{@#{n}.to_s(need_convert, indent)}"
-        else
-          ''
-        end
-EOC
-      end
-    end
-    alias_method(:install_have_attribute_element, :install_have_child_element)
-
-    def install_have_children_element(tag_name, uri, occurs, name=nil, plural_name=nil)
-      name ||= tag_name
-      plural_name ||= "#{name}s"
-      add_have_children_element(name, plural_name)
-      add_plural_form(name, plural_name)
-      install_model(tag_name, uri, occurs, plural_name)
-
-      def_children_accessor(name, plural_name)
-      install_element(name, "s") do |n, elem_name|
-        <<-EOC
-        rv = []
-        @#{n}.each do |x|
-          value = "\#{x.to_s(need_convert, indent)}"
-          rv << value if /\\A\\s*\\z/ !~ value
-        end
-        rv.join("\n")
-EOC
-      end
-    end
-
-    def install_text_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
-      name ||= tag_name
-      disp_name ||= name
-      self::ELEMENTS << name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      def_corresponded_attr_writer name, type, disp_name
-      convert_attr_reader name
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          rv = "\#{indent}<#{elem_name}>"
-          value = html_escape(@#{n})
-          if need_convert
-            rv << convert(value)
-          else
-            rv << value
-          end
-    	    rv << "</#{elem_name}>"
-          rv
-        else
-          ''
-        end
-EOC
-      end
-    end
-
-    def install_date_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
-      name ||= tag_name
-      type ||= :w3cdtf
-      disp_name ||= name
-      self::ELEMENTS << name
-      add_need_initialize_variable(name)
-      install_model(tag_name, uri, occurs, name)
-
-      # accessor
-      convert_attr_reader name
-      date_writer(name, type, disp_name)
-      
-      install_element(name) do |n, elem_name|
-        <<-EOC
-        if @#{n}
-          rv = "\#{indent}<#{elem_name}>"
-          value = html_escape(@#{n}.#{type})
-          if need_convert
-            rv << convert(value)
-          else
-            rv << value
-          end
-    	    rv << "</#{elem_name}>"
-          rv
-        else
-          ''
-        end
-EOC
-      end
-
-    end
-
-    private
-    def install_element(name, postfix="")
-      elem_name = name.sub('_', ':')
-      method_name = "#{name}_element#{postfix}"
-      add_to_element_method(method_name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{method_name}(need_convert=true, indent='')
-        #{yield(name, elem_name)}
-      end
-      private :#{method_name}
-EOC
-    end
-
-    def convert_attr_reader(*attrs)
-      attrs.each do |attr|
-        attr = attr.id2name if attr.kind_of?(Integer)
-        module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-        def #{attr}
-          if @converter
-            @converter.convert(@#{attr})
-          else
-            @#{attr}
-          end
-        end
-EOC
-      end
-    end
-
-    def date_writer(name, type, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil? or new_value.kind_of?(Time)
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              @#{name} = Time.__send__('#{type}', new_value)
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = nil
-            if /\\A\\s*\\z/ !~ new_value.to_s
-              begin
-                @#{name} = Time.parse(new_value)
-              rescue ArgumentError
-              end
-            end
-          end
-        end
-
-        # Is it need?
-        if @#{name}
-          class << @#{name}
-            undef_method(:to_s)
-            alias_method(:to_s, :#{type})
-          end
-        end
-
-      end
-EOC
-    end
-
-    def integer_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              @#{name} = Integer(new_value)
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = new_value.to_i
-          end
-        end
-      end
-EOC
-    end
-
-    def positive_integer_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate
-            begin
-              tmp = Integer(new_value)
-              raise ArgumentError if tmp <= 0
-              @#{name} = tmp
-            rescue ArgumentError
-              raise NotAvailableValueError.new('#{disp_name}', new_value)
-            end
-          else
-            @#{name} = new_value.to_i
-          end
-        end
-      end
-EOC
-    end
-
-    def boolean_writer(name, disp_name=name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{name}=(new_value)
-        if new_value.nil?
-          @#{name} = new_value
-        else
-          if @do_validate and
-              ![true, false, "true", "false"].include?(new_value)
-            raise NotAvailableValueError.new('#{disp_name}', new_value)
-          end
-          if [true, false].include?(new_value)
-            @#{name} = new_value
-          else
-            @#{name} = new_value == "true"
-          end
-        end
-      end
-EOC
-    end
-
-    def def_children_accessor(accessor_name, plural_name)
-      module_eval(<<-EOC, *get_file_and_line_from_caller(2))
-      def #{plural_name}
-        @#{accessor_name}
-      end
-
-      def #{accessor_name}(*args)
-        if args.empty?
-          @#{accessor_name}.first
-        else
-          @#{accessor_name}[*args]
-        end
-      end
-
-      def #{accessor_name}=(*args)
-        warn("Warning:\#{caller.first.sub(/:in `.*'\z/, '')}: " \
-             "Don't use `#{accessor_name} = XXX'/`set_#{accessor_name}(XXX)'. " \
-             "Those APIs are not sense of Ruby. " \
-             "Use `#{plural_name} << XXX' instead of them.")
-        if args.size == 1
-          @#{accessor_name}.push(args[0])
-        else
-          @#{accessor_name}.__send__("[]=", *args)
-        end
-      end
-      alias_method(:set_#{accessor_name}, :#{accessor_name}=)
-EOC
-    end
-  end
-
-  class Element
-
-    extend BaseModel
-    include Utils
-
-    INDENT = "  "
-    
-    MUST_CALL_VALIDATORS = {}
-    MODELS = []
-    GET_ATTRIBUTES = []
-    HAVE_CHILDREN_ELEMENTS = []
-    TO_ELEMENT_METHODS = []
-    NEED_INITIALIZE_VARIABLES = []
-    PLURAL_FORMS = {}
-    
-    class << self
-
-      def must_call_validators
-        MUST_CALL_VALIDATORS
-      end
-      def models
-        MODELS
-      end
-      def get_attributes
-        GET_ATTRIBUTES
-      end
-      def have_children_elements
-        HAVE_CHILDREN_ELEMENTS
-      end
-      def to_element_methods
-        TO_ELEMENT_METHODS
-      end
-      def need_initialize_variables
-        NEED_INITIALIZE_VARIABLES
-      end
-      def plural_forms
-        PLURAL_FORMS
-      end
-
-      
-      def inherited(klass)
-        klass.const_set("MUST_CALL_VALIDATORS", {})
-        klass.const_set("MODELS", [])
-        klass.const_set("GET_ATTRIBUTES", [])
-        klass.const_set("HAVE_CHILDREN_ELEMENTS", [])
-        klass.const_set("TO_ELEMENT_METHODS", [])
-        klass.const_set("NEED_INITIALIZE_VARIABLES", [])
-        klass.const_set("PLURAL_FORMS", {})
-
-        klass.module_eval(<<-EOC)
-        public
-        
-        @tag_name = name.split(/::/).last
-        @tag_name[0,1] = @tag_name[0,1].downcase
-        @have_content = false
-
-        def self.must_call_validators
-          super.merge(MUST_CALL_VALIDATORS)
-        end
-        def self.models
-          MODELS + super
-        end
-        def self.get_attributes
-          GET_ATTRIBUTES + super
-        end
-        def self.have_children_elements
-          HAVE_CHILDREN_ELEMENTS + super
-        end
-        def self.to_element_methods
-          TO_ELEMENT_METHODS + super
-        end
-        def self.need_initialize_variables
-          NEED_INITIALIZE_VARIABLES + super
-        end
-        def self.plural_forms
-          super.merge(PLURAL_FORMS)
-        end
-
-      
-        def self.install_must_call_validator(prefix, uri)
-          MUST_CALL_VALIDATORS[uri] = prefix
-        end
-        
-        def self.install_model(tag, uri, occurs=nil, getter=nil)
-          getter ||= tag
-          if m = MODELS.find {|t, u, o, g| t == tag and u == uri}
-            m[2] = occurs
-          else
-            MODELS << [tag, uri, occurs, getter]
-          end
-        end
-
-        def self.install_get_attribute(name, uri, required=true,
-                                       type=nil, disp_name=nil,
-                                       element_name=nil)
-          disp_name ||= name
-          element_name ||= name
-          def_corresponded_attr_writer name, type, disp_name
-          convert_attr_reader name
-          if type == :boolean and /^is/ =~ name
-            alias_method "\#{$POSTMATCH}?", name
-          end
-          GET_ATTRIBUTES << [name, uri, required, element_name]
-          add_need_initialize_variable(disp_name)
-        end
-
-        def self.def_corresponded_attr_writer(name, type=nil, disp_name=name)
-          case type
-          when :integer
-            integer_writer name, disp_name
-          when :positive_integer
-            positive_integer_writer name, disp_name
-          when :boolean
-            boolean_writer name, disp_name
-          when :w3cdtf, :rfc822, :rfc2822
-            date_writer name, type, disp_name
-          else
-            attr_writer name
-          end
-        end
-
-        def self.content_setup(type=nil)
-          def_corresponded_attr_writer "content", type
-          convert_attr_reader :content
-          @have_content = true
-        end
-
-        def self.have_content?
-          @have_content
-        end
-
-        def self.add_have_children_element(variable_name, plural_name)
-          HAVE_CHILDREN_ELEMENTS << [variable_name, plural_name]
-        end
-        
-        def self.add_to_element_method(method_name)
-          TO_ELEMENT_METHODS << method_name
-        end
-
-        def self.add_need_initialize_variable(variable_name)
-          NEED_INITIALIZE_VARIABLES << variable_name
-        end
-        
-        def self.add_plural_form(singular, plural)
-          PLURAL_FORMS[singular] = plural
-        end
-        
-        EOC
-      end
-
-      def required_prefix
-        nil
-      end
-
-      def required_uri
-        ""
-      end
-      
-      def install_ns(prefix, uri)
-        if self::NSPOOL.has_key?(prefix)
-          raise OverlappedPrefixError.new(prefix)
-        end
-        self::NSPOOL[prefix] = uri
-      end
-
-      def tag_name
-        @tag_name
-      end
-    end
-
-    attr_accessor :do_validate
-
-    def initialize(do_validate=true, attrs={})
-      @converter = nil
-      @do_validate = do_validate
-      initialize_variables(attrs)
-    end
-
-    def tag_name
-      self.class.tag_name
-    end
-
-    def full_name
-      tag_name
-    end
-    
-    def converter=(converter)
-      @converter = converter
-      targets = children.dup
-      self.class.have_children_elements.each do |variable_name, plural_name|
-        targets.concat(__send__(plural_name))
-      end
-      targets.each do |target|
-        target.converter = converter unless target.nil?
-      end
-    end
-
-    def convert(value)
-      if @converter
-        @converter.convert(value)
-      else
-        value
-      end
-    end
-    
-    def validate(ignore_unknown_element=true)
-      validate_attribute
-      __validate(ignore_unknown_element)
-    end
-    
-    def validate_for_stream(tags, ignore_unknown_element=true)
-      validate_attribute
-      __validate(ignore_unknown_element, tags, false)
-    end
-
-    def setup_maker(maker)
-      target = maker_target(maker)
-      unless target.nil?
-        setup_maker_attributes(target)
-        setup_maker_element(target)
-        setup_maker_elements(target)
-      end
-    end
-
-    def to_s(need_convert=true, indent='')
-      if self.class.have_content?
-        return "" unless @content
-        rv = tag(indent) do |next_indent|
-          h(@content)
-        end
-      else
-        rv = tag(indent) do |next_indent|
-          self.class.to_element_methods.collect do |method_name|
-            __send__(method_name, false, next_indent)
-          end
-        end
-      end
-      rv = convert(rv) if need_convert
-      rv
-    end
-
-    private
-    def initialize_variables(attrs)
-      normalized_attrs = {}
-      attrs.each do |key, value|
-        normalized_attrs[key.to_s] = value
-      end
-      self.class.need_initialize_variables.each do |variable_name|
-        value = normalized_attrs[variable_name.to_s]
-        if value
-          __send__("#{variable_name}=", value)
-        else
-          instance_eval("@#{variable_name} = nil")
-        end
-      end
-      initialize_have_children_elements
-      @content = "" if self.class.have_content?
-    end
-
-    def initialize_have_children_elements
-      self.class.have_children_elements.each do |variable_name, plural_name|
-        instance_eval("@#{variable_name} = []")
-      end
-    end
-
-    def tag(indent, additional_attrs={}, &block)
-      next_indent = indent + INDENT
-
-      attrs = collect_attrs
-      return "" if attrs.nil?
-
-      attrs.update(additional_attrs)
-      start_tag = make_start_tag(indent, next_indent, attrs)
-
-      if block
-        content = block.call(next_indent)
-      else
-        content = []
-      end
-
-      if content.is_a?(String)
-        content = [content]
-        start_tag << ">"
-        end_tag = "</#{full_name}>"
-      else
-        content = content.reject{|x| x.empty?}
-        if content.empty?
-          end_tag = "/>"
-        else
-          start_tag << ">\n"
-          end_tag = "\n#{indent}</#{full_name}>"
-        end
-      end
-      
-      start_tag + content.join("\n") + end_tag
-    end
-
-    def make_start_tag(indent, next_indent, attrs)
-      start_tag = ["#{indent}<#{full_name}"]
-      unless attrs.empty?
-        start_tag << attrs.collect do |key, value|
-          %Q[#{h key}="#{h value}"]
-        end.join("\n#{next_indent}")
-      end
-      start_tag.join(" ")
-    end
-
-    def collect_attrs
-      attrs = {}
-      _attrs.each do |name, required, alias_name|
-        value = __send__(alias_name || name)
-        return nil if required and value.nil?
-        next if value.nil?
-        return nil if attrs.has_key?(name)
-        attrs[name] = value
-      end
-      attrs
-    end
-    
-    def tag_name_with_prefix(prefix)
-      "#{prefix}:#{tag_name}"
-    end
-
-    # For backward compatibility
-    def calc_indent
-      ''
-    end
-
-    def maker_target(maker)
-      nil
-    end
-    
-    def setup_maker_attributes(target)
-    end
-    
-    def setup_maker_element(target)
-      self.class.need_initialize_variables.each do |var|
-        value = __send__(var)
-        if value.respond_to?("setup_maker") and
-            !not_need_to_call_setup_maker_variables.include?(var)
-          value.setup_maker(target)
-        else
-          setter = "#{var}="
-          if target.respond_to?(setter)
-            target.__send__(setter, value)
-          end
-        end
-      end
-    end
-
-    def not_need_to_call_setup_maker_variables
-      []
-    end
-    
-    def setup_maker_elements(parent)
-      self.class.have_children_elements.each do |name, plural_name|
-        if parent.respond_to?(plural_name)
-          target = parent.__send__(plural_name)
-          __send__(plural_name).each do |elem|
-            elem.setup_maker(target)
-          end
-        end
-      end
-    end
-
-    def set_next_element(tag_name, next_element)
-      klass = next_element.class
-      prefix = ""
-      prefix << "#{klass.required_prefix}_" if klass.required_prefix
-      key = "#{prefix}#{tag_name}"
-      if self.class.plural_forms.has_key?(key)
-        ary = __send__("#{self.class.plural_forms[key]}")
-        ary << next_element
-      else
-        __send__("#{prefix}#{tag_name}=", next_element)
-      end
-    end
-
-    def children
-      rv = []
-      self.class.models.each do |name, uri, occurs, getter|
-        value = __send__(getter)
-        next if value.nil?
-        value = [value] unless value.is_a?(Array)
-        value.each do |v|
-          rv << v if v.is_a?(Element)
-        end
-      end
-      rv
-    end
-
-    def _tags
-      rv = []
-      self.class.models.each do |name, uri, occurs, getter|
-        value = __send__(getter)
-        next if value.nil?
-        if value.is_a?(Array)
-          rv.concat([[uri, name]] * value.size)
-        else
-          rv << [uri, name]
-        end
-      end
-      rv
-    end
-
-    def _attrs
-      self.class.get_attributes.collect do |name, uri, required, element_name|
-        [element_name, required, name]
-      end
-    end
-
-    def __validate(ignore_unknown_element, tags=_tags, recursive=true)
-      if recursive
-        children.compact.each do |child|
-          child.validate
-        end
-      end
-      must_call_validators = self.class.must_call_validators
-      tags = tag_filter(tags.dup)
-      p tags if DEBUG
-      must_call_validators.each do |uri, prefix|
-        _validate(ignore_unknown_element, tags[uri], uri)
-        meth = "#{prefix}_validate"
-        if respond_to?(meth, true)
-          __send__(meth, ignore_unknown_element, tags[uri], uri)
-        end
-      end
-    end
-
-    def validate_attribute
-      _attrs.each do |a_name, required, alias_name|
-        if required and __send__(alias_name || a_name).nil?
-          raise MissingAttributeError.new(tag_name, a_name)
-        end
-      end
-    end
-
-    def _validate(ignore_unknown_element, tags, uri, models=self.class.models)
-      count = 1
-      do_redo = false
-      not_shift = false
-      tag = nil
-      models = models.find_all {|model| model[1] == uri}
-      element_names = models.collect {|model| model[0]}
-      if tags
-        tags_size = tags.size
-        tags = tags.sort_by {|x| element_names.index(x) || tags_size}
-      end
-
-      models.each_with_index do |model, i|
-        name, model_uri, occurs, getter = model
-
-        if DEBUG
-          p "before" 
-          p tags
-          p model
-        end
-
-        if not_shift
-          not_shift = false
-        elsif tags
-          tag = tags.shift
-        end
-
-        if DEBUG
-          p "mid"
-          p count
-        end
-
-        case occurs
-        when '?'
-          if count > 2
-            raise TooMuchTagError.new(name, tag_name)
-          else
-            if name == tag
-              do_redo = true
-            else
-              not_shift = true
-            end
-          end
-        when '*'
-          if name == tag
-            do_redo = true
-          else
-            not_shift = true
-          end
-        when '+'
-          if name == tag
-            do_redo = true
-          else
-            if count > 1
-              not_shift = true
-            else
-              raise MissingTagError.new(name, tag_name)
-            end
-          end
-        else
-          if name == tag
-            if models[i+1] and models[i+1][0] != name and
-                tags and tags.first == name
-              raise TooMuchTagError.new(name, tag_name)
-            end
-          else
-            raise MissingTagError.new(name, tag_name)
-          end
-        end
-
-        if DEBUG
-          p "after"
-          p not_shift
-          p do_redo
-          p tag
-        end
-
-        if do_redo
-          do_redo = false
-          count += 1
-          redo
-        else
-          count = 1
-        end
-
-      end
-
-      if !ignore_unknown_element and !tags.nil? and !tags.empty?
-        raise NotExpectedTagError.new(tags.first, uri, tag_name)
-      end
-
-    end
-
-    def tag_filter(tags)
-      rv = {}
-      tags.each do |tag|
-        rv[tag[0]] = [] unless rv.has_key?(tag[0])
-        rv[tag[0]].push(tag[1])
-      end
-      rv
-    end
-
-  end
-
-  module RootElementMixin
-
-    include XMLStyleSheetMixin
-    
-    attr_reader :output_encoding
-
-    def initialize(rss_version, version=nil, encoding=nil, standalone=nil)
-      super()
-      @rss_version = rss_version
-      @version = version || '1.0'
-      @encoding = encoding
-      @standalone = standalone
-      @output_encoding = nil
-    end
-
-    def output_encoding=(enc)
-      @output_encoding = enc
-      self.converter = Converter.new(@output_encoding, @encoding)
-    end
-
-    def setup_maker(maker)
-      maker.version = version
-      maker.encoding = encoding
-      maker.standalone = standalone
-
-      xml_stylesheets.each do |xss|
-        xss.setup_maker(maker)
-      end
-
-      setup_maker_elements(maker)
-    end
-
-    def to_xml(version=nil, &block)
-      if version.nil? or version == @rss_version
-        to_s
-      else
-        RSS::Maker.make(version) do |maker|
-          setup_maker(maker)
-          block.call(maker) if block
-        end.to_s
-      end
-    end
-
-    private
-    def tag(indent, attrs={}, &block)
-      rv = xmldecl + xml_stylesheet_pi
-      rv << super(indent, ns_declarations.merge(attrs), &block)
-      rv
-    end
-
-    def xmldecl
-      rv = %Q[<?xml version="#{@version}"]
-      if @output_encoding or @encoding
-        rv << %Q[ encoding="#{@output_encoding or @encoding}"]
-      end
-      rv << %Q[ standalone="yes"] if @standalone
-      rv << "?>\n"
-      rv
-    end
-    
-    def ns_declarations
-      decls = {}
-      self.class::NSPOOL.collect do |prefix, uri|
-        prefix = ":#{prefix}" unless prefix.empty?
-        decls["xmlns#{prefix}"] = uri
-      end
-      decls
-    end
-    
-    def setup_maker_elements(maker)
-      channel.setup_maker(maker) if channel
-      image.setup_maker(maker) if image
-      textinput.setup_maker(maker) if textinput
-      super(maker)
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/syndication.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/syndication.rb
deleted file mode 100644
index 93d35c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/syndication.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-require "rss/1.0"
-
-module RSS
-
-  SY_PREFIX = 'sy'
-  SY_URI = "http://purl.org/rss/1.0/modules/syndication/"
-
-  RDF.install_ns(SY_PREFIX, SY_URI)
-
-  module SyndicationModel
-    
-    extend BaseModel
-    
-    ELEMENTS = []
-    
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(SY_PREFIX, SY_URI)
-      klass.module_eval do
-        [
-          ["updatePeriod"],
-          ["updateFrequency", :positive_integer]
-        ].each do |name, type|
-          install_text_element(name, SY_URI, "?",
-                               "#{SY_PREFIX}_#{name}", type,
-                               "#{SY_PREFIX}:#{name}")
-        end
-
-        %w(updateBase).each do |name|
-          install_date_element(name, SY_URI, "?",
-                               "#{SY_PREFIX}_#{name}", 'w3cdtf', name)
-        end
-
-        alias_method(:_sy_updatePeriod=, :sy_updatePeriod=)
-        def sy_updatePeriod=(new_value)
-          new_value = new_value.strip
-          validate_sy_updatePeriod(new_value) if @do_validate
-          self._sy_updatePeriod = new_value
-        end
-      end
-    end
-
-    private
-    SY_UPDATEPERIOD_AVAILABLE_VALUES = %w(hourly daily weekly monthly yearly)
-    def validate_sy_updatePeriod(value)
-      unless SY_UPDATEPERIOD_AVAILABLE_VALUES.include?(value)
-        raise NotAvailableValueError.new("updatePeriod", value)
-      end
-    end
-  end
-
-  class RDF
-    class Channel; include SyndicationModel; end
-  end
-
-  prefix_size = SY_PREFIX.size + 1
-  SyndicationModel::ELEMENTS.uniq!
-  SyndicationModel::ELEMENTS.each do |full_name|
-    name = full_name[prefix_size..-1]
-    BaseListener.install_get_text_element(SY_URI, name, "#{full_name}=")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/taxonomy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/taxonomy.rb
deleted file mode 100644
index 8caa25e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/taxonomy.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require "rss/1.0"
-require "rss/dublincore"
-
-module RSS
-
-  TAXO_PREFIX = "taxo"
-  TAXO_URI = "http://purl.org/rss/1.0/modules/taxonomy/"
-
-  RDF.install_ns(TAXO_PREFIX, TAXO_URI)
-
-  TAXO_ELEMENTS = []
-
-  %w(link).each do |name|
-    full_name = "#{TAXO_PREFIX}_#{name}"
-    BaseListener.install_get_text_element(TAXO_URI, name, "#{full_name}=")
-    TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
-  end
-
-  %w(topic topics).each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(TAXO_URI, name, "Taxonomy#{class_name}")
-    TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
-  end
-
-  module TaxonomyTopicsModel
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-
-      klass.install_must_call_validator(TAXO_PREFIX, TAXO_URI)
-      %w(topics).each do |name|
-        klass.install_have_child_element(name, TAXO_URI, "?",
-                                         "#{TAXO_PREFIX}_#{name}")
-      end
-    end
-
-    class TaxonomyTopics < Element
-      include RSS10
-      
-      Bag = ::RSS::RDF::Bag
-
-      class << self
-        def required_prefix
-          TAXO_PREFIX
-        end
-        
-        def required_uri
-          TAXO_URI
-        end
-      end
-
-      @tag_name = "topics"
-      
-      install_have_child_element("Bag", RDF::URI, nil)
-      install_must_call_validator('rdf', RDF::URI)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.Bag = args[0]
-        end
-        self.Bag ||= Bag.new
-      end
-
-      def full_name
-        tag_name_with_prefix(TAXO_PREFIX)
-      end
-
-      def maker_target(target)
-        target.taxo_topics
-      end
-
-      def resources
-        if @Bag
-          @Bag.lis.collect do |li|
-            li.resource
-          end
-        else
-          []
-        end
-      end
-    end
-  end
-  
-  module TaxonomyTopicModel
-    extend BaseModel
-    
-    def self.append_features(klass)
-      super
-      var_name = "#{TAXO_PREFIX}_topic"
-      klass.install_have_children_element("topic", TAXO_URI, "*", var_name)
-    end
-
-    class TaxonomyTopic < Element
-      include RSS10
-
-      include DublinCoreModel
-      include TaxonomyTopicsModel
-      
-      class << self
-        def required_prefix
-          TAXO_PREFIX
-        end
-        
-        def required_uri
-          TAXO_URI
-        end
-      end
-
-      @tag_name = "topic"
-
-      install_get_attribute("about", ::RSS::RDF::URI, true, nil, nil,
-                            "#{RDF::PREFIX}:about")
-      install_text_element("link", TAXO_URI, "?", "#{TAXO_PREFIX}_link")
-        
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.about = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TAXO_PREFIX)
-      end
-
-      def maker_target(target)
-        target.new_taxo_topic
-      end
-    end
-  end
-
-  class RDF
-    include TaxonomyTopicModel
-    class Channel
-      include TaxonomyTopicsModel
-    end
-    class Item; include TaxonomyTopicsModel; end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/trackback.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/trackback.rb
deleted file mode 100644
index ee2491f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/trackback.rb
+++ /dev/null
@@ -1,288 +0,0 @@
-require 'rss/1.0'
-require 'rss/2.0'
-
-module RSS
-
-  TRACKBACK_PREFIX = 'trackback'
-  TRACKBACK_URI = 'http://madskills.com/public/xml/rss/module/trackback/'
-
-  RDF.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
-  Rss.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
-
-  module TrackBackUtils
-    private
-    def trackback_validate(ignore_unknown_element, tags, uri)
-      return if tags.nil?
-      if tags.find {|tag| tag == "about"} and
-          !tags.find {|tag| tag == "ping"}
-        raise MissingTagError.new("#{TRACKBACK_PREFIX}:ping", tag_name)
-      end
-    end
-  end
-
-  module BaseTrackBackModel
-
-    ELEMENTS = %w(ping about)
-    
-    def append_features(klass)
-      super
-
-      unless klass.class == Module
-        klass.module_eval {include TrackBackUtils}
-
-        klass.install_must_call_validator(TRACKBACK_PREFIX, TRACKBACK_URI)
-        %w(ping).each do |name|
-          var_name = "#{TRACKBACK_PREFIX}_#{name}"
-          klass_name = "TrackBack#{Utils.to_class_name(name)}"
-          klass.install_have_child_element(name, TRACKBACK_URI, "?", var_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__)
-            remove_method :#{var_name}
-            def #{var_name}
-              @#{var_name} and @#{var_name}.value
-            end
-
-            remove_method :#{var_name}=
-            def #{var_name}=(value)
-              @#{var_name} = Utils.new_with_value_if_need(#{klass_name}, value)
-            end
-          EOC
-        end
-        
-        [%w(about s)].each do |name, postfix|
-          var_name = "#{TRACKBACK_PREFIX}_#{name}"
-          klass_name = "TrackBack#{Utils.to_class_name(name)}"
-          klass.install_have_children_element(name, TRACKBACK_URI, "*",
-                                              var_name)
-          klass.module_eval(<<-EOC, __FILE__, __LINE__)
-            remove_method :#{var_name}
-            def #{var_name}(*args)
-              if args.empty?
-                @#{var_name}.first and @#{var_name}.first.value
-              else
-                ret = @#{var_name}.__send__("[]", *args)
-                if ret.is_a?(Array)
-                  ret.collect {|x| x.value}
-                else
-                  ret.value
-                end
-              end
-            end
-
-            remove_method :#{var_name}=
-            remove_method :set_#{var_name}
-            def #{var_name}=(*args)
-              if args.size == 1
-                item = Utils.new_with_value_if_need(#{klass_name}, args[0])
-                @#{var_name}.push(item)
-              else
-                new_val = args.last
-                if new_val.is_a?(Array)
-                  new_val = new_value.collect do |val|
-                    Utils.new_with_value_if_need(#{klass_name}, val)
-                  end
-                else
-                  new_val = Utils.new_with_value_if_need(#{klass_name}, new_val)
-                end
-                @#{var_name}.__send__("[]=", *(args[0..-2] + [new_val]))
-              end
-            end
-            alias set_#{var_name} #{var_name}=
-          EOC
-        end
-      end
-    end
-  end
-
-  module TrackBackModel10
-    extend BaseModel
-    extend BaseTrackBackModel
-
-    class TrackBackPing < Element
-      include RSS10
-
-      class << self
-
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-
-      @tag_name = "ping"
-
-      [
-        ["resource", ::RSS::RDF::URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      alias_method(:value, :resource)
-      alias_method(:value=, :resource=)
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-    end
-
-    class TrackBackAbout < Element
-      include RSS10
-
-      class << self
-        
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-      
-      @tag_name = "about"
-
-      [
-        ["resource", ::RSS::RDF::URI, true]
-      ].each do |name, uri, required|
-        install_get_attribute(name, uri, required, nil, nil,
-                              "#{::RSS::RDF::PREFIX}:#{name}")
-      end
-
-      alias_method(:value, :resource)
-      alias_method(:value=, :resource=)
-      
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.resource = args[0]
-        end
-      end
-
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-
-      private
-      def maker_target(abouts)
-        abouts.new_about
-      end
-
-      def setup_maker_attributes(about)
-        about.resource = self.resource
-      end
-      
-    end
-  end
-
-  module TrackBackModel20
-    extend BaseModel
-    extend BaseTrackBackModel
-
-    class TrackBackPing < Element
-      include RSS09
-
-      @tag_name = "ping"
-      
-      content_setup
-
-      class << self
-
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-      
-      alias_method(:value, :content)
-      alias_method(:value=, :content=)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.content = args[0]
-        end
-      end
-      
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-      
-    end
-
-    class TrackBackAbout < Element
-      include RSS09
-
-      @tag_name = "about"
-      
-      content_setup
-
-      class << self
-        
-        def required_prefix
-          TRACKBACK_PREFIX
-        end
-        
-        def required_uri
-          TRACKBACK_URI
-        end
-
-      end
-
-      alias_method(:value, :content)
-      alias_method(:value=, :content=)
-
-      def initialize(*args)
-        if Utils.element_initialize_arguments?(args)
-          super
-        else
-          super()
-          self.content = args[0]
-        end
-      end
-      
-      def full_name
-        tag_name_with_prefix(TRACKBACK_PREFIX)
-      end
-      
-    end
-  end
-
-  class RDF
-    class Item; include TrackBackModel10; end
-  end
-
-  class Rss
-    class Channel
-      class Item; include TrackBackModel20; end
-    end
-  end
-
-  BaseTrackBackModel::ELEMENTS.each do |name|
-    class_name = Utils.to_class_name(name)
-    BaseListener.install_class_name(TRACKBACK_URI, name,
-                                    "TrackBack#{class_name}")
-  end
-
-  BaseTrackBackModel::ELEMENTS.collect! {|name| "#{TRACKBACK_PREFIX}_#{name}"}
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/utils.rb
deleted file mode 100644
index b242a72..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/utils.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module RSS
-  module Utils
-    module_function
-
-    # Convert a name_with_underscores to CamelCase.
-    def to_class_name(name)
-      name.split(/_/).collect do |part|
-        "#{part[0, 1].upcase}#{part[1..-1]}"
-      end.join("")
-    end
-    
-    def get_file_and_line_from_caller(i=0)
-      file, line, = caller[i].split(':')
-      [file, line.to_i]
-    end
-
-    # escape '&', '"', '<' and '>' for use in HTML.
-    def html_escape(s)
-      s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
-    end
-    alias h html_escape
-    
-    # If +value+ is an instance of class +klass+, return it, else
-    # create a new instance of +klass+ with value +value+.
-    def new_with_value_if_need(klass, value)
-      if value.is_a?(klass)
-        value
-      else
-        klass.new(value)
-      end
-    end
-
-    def element_initialize_arguments?(args)
-      [true, false].include?(args[0]) and args[1].is_a?(Hash)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xml-stylesheet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xml-stylesheet.rb
deleted file mode 100644
index 66e3161..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xml-stylesheet.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-require "rss/utils"
-
-module RSS
-
-  module XMLStyleSheetMixin
-    attr_accessor :xml_stylesheets
-    def initialize(*args)
-      super
-      @xml_stylesheets = []
-    end
-    
-    private
-    def xml_stylesheet_pi
-      xsss = @xml_stylesheets.collect do |xss|
-        pi = xss.to_s
-        pi = nil if /\A\s*\z/ =~ pi
-        pi
-      end.compact
-      xsss.push("") unless xsss.empty?
-      xsss.join("\n")
-    end
-  end
-
-  class XMLStyleSheet
-
-    include Utils
-
-    ATTRIBUTES = %w(href type title media charset alternate)
-
-    GUESS_TABLE = {
-      "xsl" => "text/xsl",
-      "css" => "text/css",
-    }
-
-    attr_accessor(*ATTRIBUTES)
-    attr_accessor(:do_validate)
-    def initialize(*attrs)
-      @do_validate = true
-      ATTRIBUTES.each do |attr|
-        __send__("#{attr}=", nil)
-      end
-      vars = ATTRIBUTES.dup
-      vars.unshift(:do_validate)
-      attrs.each do |name, value|
-        if vars.include?(name.to_s)
-          __send__("#{name}=", value)
-        end
-      end
-    end
-
-    def to_s
-      rv = ""
-      if @href
-        rv << %Q[<?xml-stylesheet]
-        ATTRIBUTES.each do |name|
-          if __send__(name)
-            rv << %Q[ #{name}="#{h __send__(name)}"]
-          end
-        end
-        rv << %Q[?>]
-      end
-      rv
-    end
-
-    remove_method(:href=)
-    def href=(value)
-      @href = value
-      if @href and @type.nil?
-        @type = guess_type(@href)
-      end
-      @href
-    end
-
-    remove_method(:alternate=)
-    def alternate=(value)
-      if value.nil? or /\A(?:yes|no)\z/ =~ value
-        @alternate = value
-      else
-        if @do_validate
-          args = ["?xml-stylesheet?", %Q[alternate="#{value}"]]
-          raise NotAvailableValueError.new(*args)
-        end
-      end
-      @alternate
-    end
-
-    def setup_maker(maker)
-      xss = maker.xml_stylesheets.new_xml_stylesheet
-      ATTRIBUTES.each do |attr|
-        xss.__send__("#{attr}=", __send__(attr))
-      end
-    end
-    
-    private
-    def guess_type(filename)
-      /\.([^.]+)$/ =~ filename
-      GUESS_TABLE[$1]
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlparser.rb
deleted file mode 100644
index 3dfe7d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlparser.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-begin
-  require "xml/parser"
-rescue LoadError
-  require "xmlparser"
-end
-
-begin
-  require "xml/encoding-ja"
-rescue LoadError
-  require "xmlencoding-ja"
-  if defined?(Kconv)
-    module XMLEncoding_ja
-      class SJISHandler
-        include Kconv
-      end
-    end
-  end
-end
-
-module XML
-  class Parser
-    unless defined?(Error)
-      Error = ::XMLParserError
-    end
-  end
-end
-
-module RSS
-  
-  class REXMLLikeXMLParser < ::XML::Parser
-    
-    include ::XML::Encoding_ja
-
-    def listener=(listener)
-      @listener = listener
-    end
-
-    def startElement(name, attrs)
-      @listener.tag_start(name, attrs)
-    end
-    
-    def endElement(name)
-      @listener.tag_end(name)
-    end
-
-    def character(data)
-      @listener.text(data)
-    end
-
-    def xmlDecl(version, encoding, standalone)
-      @listener.xmldecl(version, encoding, standalone == 1)
-    end
-
-    def processingInstruction(target, content)
-      @listener.instruction(target, content)
-    end
-
-  end
-
-  class XMLParserParser < BaseParser
-
-    class << self
-      def listener
-        XMLParserListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        parser = REXMLLikeXMLParser.new
-        parser.listener = @listener
-        parser.parse(@rss)
-      rescue ::XML::Parser::Error => e
-        raise NotWellFormedError.new(parser.line){e.message}
-      end
-    end
-    
-  end
-  
-  class XMLParserListener < BaseListener
-
-    include ListenerMixin
-    
-    def xmldecl(version, encoding, standalone)
-      super
-      # Encoding is converted to UTF-8 when XMLParser parses XML.
-      @encoding = 'UTF-8'
-    end
-
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlscanner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlscanner.rb
deleted file mode 100644
index 61b9fa6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rss/xmlscanner.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-require 'xmlscan/scanner'
-require 'stringio'
-
-module RSS
-  
-  class XMLScanParser < BaseParser
-    
-    class << self
-      def listener
-        XMLScanListener
-      end
-    end
-    
-    private
-    def _parse
-      begin
-        if @rss.is_a?(String)
-          input = StringIO.new(@rss)
-        else
-          input = @rss
-        end
-        scanner = XMLScan::XMLScanner.new(@listener)
-        scanner.parse(input)
-      rescue XMLScan::Error => e
-        lineno = e.lineno || scanner.lineno || input.lineno
-        raise NotWellFormedError.new(lineno){e.message}
-      end
-    end
-    
-  end
-
-  class XMLScanListener < BaseListener
-    
-    include XMLScan::Visitor
-    include ListenerMixin
-
-    ENTITIES = {
-      'lt' => '<',
-      'gt' => '>',
-      'amp' => '&',
-      'quot' => '"',
-      'apos' => '\''
-    }
-
-    def on_xmldecl_version(str)
-      @version = str
-    end
-
-    def on_xmldecl_encoding(str)
-      @encoding = str
-    end
-
-    def on_xmldecl_standalone(str)
-      @standalone = str
-    end
-
-    def on_xmldecl_end
-      xmldecl(@version, @encoding, @standalone == "yes")
-    end
-
-    alias_method(:on_pi, :instruction)
-    alias_method(:on_chardata, :text)
-    alias_method(:on_cdata, :text)
-
-    def on_etag(name)
-      tag_end(name)
-    end
-
-    def on_entityref(ref)
-      text(entity(ref))
-    end
-
-    def on_charref(code)
-      text([code].pack('U'))
-    end
-
-    alias_method(:on_charref_hex, :on_charref)
-
-    def on_stag(name)
-      @attrs = {}
-    end
-
-    def on_attribute(name)
-      @attrs[name] = @current_attr = ''
-    end
-
-    def on_attr_value(str)
-      @current_attr << str
-    end
-
-    def on_attr_entityref(ref)
-      @current_attr << entity(ref)
-    end
-
-    def on_attr_charref(code)
-      @current_attr << [code].pack('U')
-    end
-
-    alias_method(:on_attr_charref_hex, :on_attr_charref)
-
-    def on_stag_end(name)
-      tag_start(name, @attrs)
-    end
-
-    def on_stag_end_empty(name)
-      tag_start(name, @attrs)
-      tag_end(name)
-    end
-
-    private
-    def entity(ref)
-      ent = ENTITIES[ref]
-      if ent
-        ent
-      else
-        wellformed_error("undefined entity: #{ref}")
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rubyunit.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rubyunit.rb
deleted file mode 100644
index 1aca378..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/rubyunit.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'runit/testcase'
-require 'test/unit'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/assert.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/assert.rb
deleted file mode 100644
index c752b19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/assert.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertions'
-require 'runit/error'
-
-module RUNIT
-  module Assert
-    include Test::Unit::Assertions
-
-    def setup_assert
-    end
-
-    def assert_no_exception(*args, &block)
-      assert_nothing_raised(*args, &block)
-    end
-
-    # To deal with the fact that RubyUnit does not check that the
-    # regular expression is, indeed, a regular expression, if it is
-    # not, we do our own assertion using the same semantics as
-    # RubyUnit
-    def assert_match(actual_string, expected_re, message="")
-      _wrap_assertion {
-        full_message = build_message(message, "Expected <?> to match <?>", actual_string, expected_re)
-        assert_block(full_message) {
-          expected_re =~ actual_string
-        }
-        Regexp.last_match
-      }
-    end
-
-    def assert_not_nil(actual, message="")
-      assert(!actual.nil?, message)
-    end
-
-    def assert_not_match(actual_string, expected_re, message="")
-      assert_no_match(expected_re, actual_string, message)
-    end
-
-    def assert_matches(*args)
-      assert_match(*args)
-    end
-
-    def assert_fail(message="")
-      flunk(message)
-    end
-
-    def assert_equal_float(expected, actual, delta, message="")
-      assert_in_delta(expected, actual, delta, message)
-    end
-
-    def assert_send(object, method, *args)
-      super([object, method, *args])
-    end
-
-    def assert_exception(exception, message="", &block)
-      assert_raises(exception, message, &block)
-    end
-
-    def assert_respond_to(method, object, message="")
-      if (called_internally?)
-        super
-      else
-        super(object, method, message)
-      end
-    end
-
-    def called_internally?
-      /assertions\.rb/.match(caller[1])
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/cui/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/cui/testrunner.rb
deleted file mode 100644
index d521ec1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/cui/testrunner.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/ui/console/testrunner'
-require 'runit/testresult'
-
-module RUNIT
-  module CUI
-    class TestRunner < Test::Unit::UI::Console::TestRunner
-      @@quiet_mode = false
-      
-      def self.run(suite)
-        self.new().run(suite)
-      end
-      
-      def initialize
-        super nil
-      end
-      
-      def run(suite, quiet_mode=@@quiet_mode)
-        @suite = suite
-        def @suite.suite
-          self
-        end
-        @output_level = (quiet_mode ? Test::Unit::UI::PROGRESS_ONLY : Test::Unit::UI::VERBOSE)
-        start
-      end
-      
-      def create_mediator(suite)
-        mediator = Test::Unit::UI::TestRunnerMediator.new(suite)
-        class << mediator
-          attr_writer :result_delegate
-          def create_result
-            return @result_delegate.create_result
-          end
-        end
-        mediator.result_delegate = self
-        return mediator
-      end
-      
-      def create_result
-        return RUNIT::TestResult.new
-      end
-      
-      def self.quiet_mode=(boolean)
-        @@quiet_mode = boolean
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/error.rb
deleted file mode 100644
index 4a727fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/error.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertionfailederror.rb'
-
-module RUNIT
-  AssertionFailedError = Test::Unit::AssertionFailedError
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testcase.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testcase.rb
deleted file mode 100644
index 4576cb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testcase.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'runit/testresult'
-require 'runit/testsuite'
-require 'runit/assert'
-require 'runit/error'
-require 'test/unit/testcase'
-
-module RUNIT
-  class TestCase < Test::Unit::TestCase  
-    include RUNIT::Assert
-    
-    def self.suite
-      method_names = instance_methods(true)
-      tests = method_names.delete_if { |method_name| method_name !~ /^test/ }
-      suite = TestSuite.new(name)
-      tests.each {
-        |test|
-        catch(:invalid_test) {
-          suite << new(test, name)
-        }
-      }
-      return suite
-    end
-    
-    def initialize(test_name, suite_name=self.class.name)
-      super(test_name)
-    end
-    
-    def assert_equals(*args)
-      assert_equal(*args)
-    end
-    
-    def name
-      super.sub(/^(.*?)\((.*)\)$/, '\2#\1')
-    end
-    
-    def run(result, &progress_block)
-      progress_block = proc {} unless (block_given?)
-      super(result, &progress_block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testresult.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testresult.rb
deleted file mode 100644
index 7f70778..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testresult.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/testresult'
-
-module RUNIT
-  class TestResult < Test::Unit::TestResult
-    attr_reader(:errors, :failures)
-    def succeed?
-      return passed?
-    end
-    def failure_size
-      return failure_count
-    end
-    def run_asserts
-      return assertion_count
-    end
-    def error_size
-      return error_count
-    end
-    def run_tests
-      return run_count
-    end
-    def add_failure(failure)
-      def failure.at
-        return location
-      end
-      def failure.err
-        return message
-      end
-      super(failure)
-    end
-    def add_error(error)
-      def error.at
-        return location
-      end
-      def error.err
-        return exception
-      end
-      super(error)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testsuite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testsuite.rb
deleted file mode 100644
index 63baf65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/testsuite.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/testsuite'
-
-module RUNIT
-  class TestSuite < Test::Unit::TestSuite
-    def add_test(*args)
-      add(*args)
-    end
-    
-    def add(*args)
-      self.<<(*args)
-    end
-    
-    def count_test_cases
-      return size
-    end
-    
-    def run(result, &progress_block)
-      progress_block = proc {} unless (block_given?)
-      super(result, &progress_block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/topublic.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/topublic.rb
deleted file mode 100644
index 566f0dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/runit/topublic.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module RUNIT
-  module ToPublic
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/scanf.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/scanf.rb
deleted file mode 100644
index a49ce69..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/scanf.rb
+++ /dev/null
@@ -1,702 +0,0 @@
-# scanf for Ruby
-#
-# $Revision: 11708 $
-# $Id: scanf.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# $Author: shyouhei $
-# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#
-# A product of the Austin Ruby Codefest (Austin, Texas, August 2002)
-
-=begin
-
-=scanf for Ruby
-
-==Description
-
-scanf for Ruby is an implementation of the C function scanf(3),
-modified as necessary for Ruby compatibility.
-
-The methods provided are String#scanf, IO#scanf, and
-Kernel#scanf. Kernel#scanf is a wrapper around STDIN.scanf.  IO#scanf
-can be used on any IO stream, including file handles and sockets.
-scanf can be called either with or without a block.
-
-scanf for Ruby scans an input string or stream according to a
-<b>format</b>, as described below ("Conversions"), and returns an
-array of matches between the format and the input.  The format is
-defined in a string, and is similar (though not identical) to the
-formats used in Kernel#printf and Kernel#sprintf.
-
-The format may contain <b>conversion specifiers</b>, which tell scanf
-what form (type) each particular matched substring should be converted
-to (e.g., decimal integer, floating point number, literal string,
-etc.)  The matches and conversions take place from left to right, and
-the conversions themselves are returned as an array.
-
-The format string may also contain characters other than those in the
-conversion specifiers.  White space (blanks, tabs, or newlines) in the
-format string matches any amount of white space, including none, in
-the input.  Everything else matches only itself.
-
-Scanning stops, and scanf returns, when any input character fails to
-match the specifications in the format string, or when input is
-exhausted, or when everything in the format string has been
-matched. All matches found up to the stopping point are returned in
-the return array (or yielded to the block, if a block was given).
-
-
-==Basic usage
-
-   require 'scanf.rb'
-
-   # String#scanf and IO#scanf take a single argument (a format string)
-   array = aString.scanf("%d%s")
-   array = anIO.scanf("%d%s")
-
-   # Kernel#scanf reads from STDIN
-   array = scanf("%d%s")
-
-==Block usage
-
-When called with a block, scanf keeps scanning the input, cycling back
-to the beginning of the format string, and yields a new array of
-conversions to the block every time the format string is matched
-(including partial matches, but not including complete failures).  The
-actual return value of scanf when called with a block is an array
-containing the results of all the executions of the block. 
-
-   str = "123 abc 456 def 789 ghi"
-   str.scanf("%d%s") { |num,str| [ num * 2, str.upcase ] }
-     # => [[246, "ABC"], [912, "DEF"], [1578, "GHI"]]
-
-==Conversions
-
-The single argument to scanf is a format string, which generally
-includes one or more conversion specifiers. Conversion specifiers
-begin with the percent character ('%') and include information about
-what scanf should next scan for (string, decimal number, single
-character, etc.).
-
-There may be an optional maximum field width, expressed as a decimal
-integer, between the % and the conversion. If no width is given, a
-default of `infinity' is used (with the exception of the %c specifier;
-see below).  Otherwise, given a field width of <em>n</em> for a given
-conversion, at most <em>n</em> characters are scanned in processing
-that conversion.  Before conversion begins, most conversions skip
-white space in the input string; this white space is not counted
-against the field width.
-
-The following conversions are available. (See the files EXAMPLES
-and <tt>tests/scanftests.rb</tt> for examples.)
-
-[%]
-  Matches a literal `%'. That is, `%%' in the format string matches a
-  single input `%' character. No conversion is done, and the resulting
-  '%' is not included in the return array.
-
-[d]
-  Matches an optionally signed decimal integer.
-
-[u]
-  Same as d.
-
-[i] 
-  Matches an optionally signed integer. The integer is read in base
-  16 if it begins with `0x' or `0X', in base 8 if it begins with `0',
-  and in base 10 other- wise. Only characters that correspond to the
-  base are recognized.
-
-[o]
-  Matches an optionally signed octal integer.
-
-[x,X]
-  Matches an optionally signed hexadecimal integer,
-
-[f,g,e,E]
-  Matches an optionally signed floating-point number.
-
-[s]
-  Matches a sequence of non-white-space character. The input string stops at
-  white space or at the maximum field width, whichever occurs first.
-
-[c]
-  Matches a single character, or a sequence of <em>n</em> characters if a
-  field width of <em>n</em> is specified. The usual skip of leading white
-  space is suppressed. To skip white space first, use an explicit space in
-  the format.
-
-[<tt>[</tt>]
-  Matches a nonempty sequence of characters from the specified set
-  of accepted characters.  The usual skip of leading white space is
-  suppressed.  This bracketed sub-expression is interpreted exactly like a
-  character class in a Ruby regular expression.  (In fact, it is placed as-is
-  in a regular expression.)  The matching against the input string ends with
-  the appearance of a character not in (or, with a circumflex, in) the set,
-  or when the field width runs out, whichever comes first.
-
-===Assignment suppression
-
-To require that a particular match occur, but without including the result
-in the return array, place the <b>assignment suppression flag</b>, which is
-the star character ('*'), immediately after the leading '%' of a format
-specifier (just before the field width, if any).
-
-==Examples
-
-See the files <tt>EXAMPLES</tt> and <tt>tests/scanftests.rb</tt>.
-
-==scanf for Ruby compared with scanf in C
-
-scanf for Ruby is based on the C function scanf(3), but with modifications,
-dictated mainly by the underlying differences between the languages.
-
-===Unimplemented flags and specifiers
-
-* The only flag implemented in scanf for Ruby is '<tt>*</tt>' (ignore
-  upcoming conversion). Many of the flags available in C versions of scanf(4)
-  have to do with the type of upcoming pointer arguments, and are literally
-  meaningless in Ruby.
-
-* The <tt>n</tt> specifier (store number of characters consumed so far in
-  next pointer) is not implemented.
-
-* The <tt>p</tt> specifier (match a pointer value) is not implemented.
-
-===Altered specifiers
-
-[o,u,x,X]
-  In scanf for Ruby, all of these specifiers scan for an optionally signed
-  integer, rather than for an unsigned integer like their C counterparts.
-
-===Return values
-
-scanf for Ruby returns an array of successful conversions, whereas
-scanf(3) returns the number of conversions successfully
-completed. (See below for more details on scanf for Ruby's return
-values.)
-
-==Return values
-
-Without a block, scanf returns an array containing all the conversions
-it has found. If none are found, scanf will return an empty array. An
-unsuccesful match is never ignored, but rather always signals the end
-of the scanning operation. If the first unsuccessful match takes place
-after one or more successful matches have already taken place, the
-returned array will contain the results of those successful matches.
-
-With a block scanf returns a 'map'-like array of transformations from
-the block -- that is, an array reflecting what the block did with each
-yielded result from the iterative scanf operation.  (See "Block
-usage", above.)
-
-==Test suite
-
-scanf for Ruby includes a suite of unit tests (requiring the
-<tt>TestUnit</tt> package), which can be run with the command <tt>ruby
-tests/scanftests.rb</tt> or the command <tt>make test</tt>.
-
-==Current limitations and bugs
-
-When using IO#scanf under Windows, make sure you open your files in
-binary mode:
-
-    File.open("filename", "rb")
-
-so that scanf can keep track of characters correctly.
-
-Support for character classes is reasonably complete (since it
-essentially piggy-backs on Ruby's regular expression handling of
-character classes), but users are advised that character class testing
-has not been exhaustive, and that they should exercise some caution
-in using any of the more complex and/or arcane character class
-idioms.
-
-
-==Technical notes
-
-===Rationale behind scanf for Ruby
-
-The impetus for a scanf implementation in Ruby comes chiefly from the fact
-that existing pattern matching operations, such as Regexp#match and
-String#scan, return all results as strings, which have to be converted to
-integers or floats explicitly in cases where what's ultimately wanted are
-integer or float values.
-
-===Design of scanf for Ruby
-
-scanf for Ruby is essentially a <format string>-to-<regular
-expression> converter.
-
-When scanf is called, a FormatString object is generated from the
-format string ("%d%s...") argument. The FormatString object breaks the
-format string down into atoms ("%d", "%5f", "blah", etc.), and from
-each atom it creates a FormatSpecifier object, which it
-saves.
-
-Each FormatSpecifier has a regular expression fragment and a "handler"
-associated with it. For example, the regular expression fragment
-associated with the format "%d" is "([-+]?\d+)", and the handler
-associated with it is a wrapper around String#to_i. scanf itself calls
-FormatString#match, passing in the input string. FormatString#match
-iterates through its FormatSpecifiers; for each one, it matches the
-corresponding regular expression fragment against the string. If
-there's a match, it sends the matched string to the handler associated
-with the FormatSpecifier.
-
-Thus, to follow up the "%d" example: if "123" occurs in the input
-string when a FormatSpecifier consisting of "%d" is reached, the "123"
-will be matched against "([-+]?\d+)", and the matched string will be
-rendered into an integer by a call to to_i.
-
-The rendered match is then saved to an accumulator array, and the
-input string is reduced to the post-match substring. Thus the string
-is "eaten" from the left as the FormatSpecifiers are applied in
-sequence.  (This is done to a duplicate string; the original string is
-not altered.)
-
-As soon as a regular expression fragment fails to match the string, or
-when the FormatString object runs out of FormatSpecifiers, scanning
-stops and results accumulated so far are returned in an array.
-
-==License and copyright
-
-Copyright:: (c) 2002-2003 David Alan Black
-License:: Distributed on the same licensing terms as Ruby itself
-
-==Warranty disclaimer
-
-This software is provided "as is" and without any express or implied
-warranties, including, without limitation, the implied warranties of
-merchantibility and fitness for a particular purpose.
-
-==Credits and acknowledgements
-
-scanf for Ruby was developed as the major activity of the Austin
-Ruby Codefest (Austin, Texas, August 2002).
-
-Principal author:: David Alan Black (mailto:dblack at superlink.net)
-Co-author:: Hal Fulton (mailto:hal9000 at hypermetrics.com)
-Project contributors:: Nolan Darilek, Jason Johnston
-
-Thanks to Hal Fulton for hosting the Codefest.
-
-Thanks to Matz for suggestions about the class design.  
-
-Thanks to Gavin Sinclair for some feedback on the documentation.
-
-The text for parts of this document, especially the Description and
-Conversions sections, above, were adapted from the Linux Programmer's
-Manual manpage for scanf(3), dated 1995-11-01.
-
-==Bugs and bug reports
-
-scanf for Ruby is based on something of an amalgam of C scanf
-implementations and documentation, rather than on a single canonical
-description. Suggestions for features and behaviors which appear in
-other scanfs, and would be meaningful in Ruby, are welcome, as are
-reports of suspicious behaviors and/or bugs. (Please see "Credits and
-acknowledgements", above, for email addresses.)
-
-=end
-
-module Scanf
-
-  class FormatSpecifier
-
-    attr_reader :re_string, :matched_string, :conversion, :matched
-
-    private
-
-    def skip;  /^\s*%\*/.match(@spec_string); end
-
-    def extract_float(s); s.to_f if s &&! skip; end
-    def extract_decimal(s); s.to_i if s &&! skip; end
-    def extract_hex(s); s.hex if s &&! skip; end
-    def extract_octal(s); s.oct if s &&! skip; end
-    def extract_integer(s); Integer(s) if s &&! skip; end
-    def extract_plain(s); s unless skip; end
-
-    def nil_proc(s); nil; end
-
-    public
-
-    def to_s
-      @spec_string
-    end
-
-    def count_space?
-      /(?:\A|\S)%\*?\d*c|\[/.match(@spec_string)
-    end
-
-    def initialize(str)
-      @spec_string = str
-      h = '[A-Fa-f0-9]'
-
-      @re_string, @handler = 
-        case @spec_string
-
-          # %[[:...:]]
-        when /%\*?(\[\[:[a-z]+:\]\])/
-          [ "(#{$1}+)", :extract_plain ]
-
-          # %5[[:...:]]
-        when /%\*?(\d+)(\[\[:[a-z]+:\]\])/
-          [ "(#{$2}{1,#{$1}})", :extract_plain ]
-
-          # %[...]
-        when /%\*?\[([^\]]*)\]/
-          yes = $1
-          if /^\^/.match(yes) then no = yes[1..-1] else no = '^' + yes end
-          [ "([#{yes}]+)(?=[#{no}]|\\z)", :extract_plain ]
-
-          # %5[...]
-        when /%\*?(\d+)\[([^\]]*)\]/
-          yes = $2
-          w = $1
-          [ "([#{yes}]{1,#{w}})", :extract_plain ]
-
-          # %i
-        when /%\*?i/
-          [ "([-+]?(?:(?:0[0-7]+)|(?:0[Xx]#{h}+)|(?:[1-9]\\d+)))", :extract_integer ]
-
-          # %5i
-        when /%\*?(\d+)i/
-          n = $1.to_i
-          s = "("
-          if n > 1 then s += "[1-9]\\d{1,#{n-1}}|" end
-          if n > 1 then s += "0[0-7]{1,#{n-1}}|" end
-          if n > 2 then s += "[-+]0[0-7]{1,#{n-2}}|" end
-          if n > 2 then s += "[-+][1-9]\\d{1,#{n-2}}|" end
-          if n > 2 then s += "0[Xx]#{h}{1,#{n-2}}|" end
-          if n > 3 then s += "[-+]0[Xx]#{h}{1,#{n-3}}|" end
-          s += "\\d"
-          s += ")"
-          [ s, :extract_integer ]
-
-          # %d, %u
-        when /%\*?[du]/
-          [ '([-+]?\d+)', :extract_decimal ]
-
-          # %5d, %5u
-        when /%\*?(\d+)[du]/
-          n = $1.to_i
-          s = "("
-          if n > 1 then s += "[-+]\\d{1,#{n-1}}|" end
-          s += "\\d{1,#{$1}})"
-          [ s, :extract_decimal ]
-
-          # %x
-        when /%\*?[Xx]/
-          [ "([-+]?(?:0[Xx])?#{h}+)", :extract_hex ]
-
-          # %5x
-        when /%\*?(\d+)[Xx]/
-          n = $1.to_i
-          s = "("
-          if n > 3 then s += "[-+]0[Xx]#{h}{1,#{n-3}}|" end
-          if n > 2 then s += "0[Xx]#{h}{1,#{n-2}}|" end
-          if n > 1 then s += "[-+]#{h}{1,#{n-1}}|" end
-          s += "#{h}{1,#{n}}"
-          s += ")"
-          [ s, :extract_hex ]
-
-          # %o
-        when /%\*?o/
-          [ '([-+]?[0-7]+)', :extract_octal ]
-
-          # %5o
-        when /%\*?(\d+)o/
-          [ "([-+][0-7]{1,#{$1.to_i-1}}|[0-7]{1,#{$1}})", :extract_octal ]
-
-          # %f
-        when /%\*?f/
-          [ '([-+]?((\d+(?>(?=[^\d.]|$)))|(\d*(\.(\d*([eE][-+]?\d+)?)))))', :extract_float ]
-
-          # %5f
-        when /%\*?(\d+)f/
-          [ "(\\S{1,#{$1}})", :extract_float ]
-
-          # %5s
-        when /%\*?(\d+)s/
-          [ "(\\S{1,#{$1}})", :extract_plain ]
-
-          # %s
-        when /%\*?s/
-          [ '(\S+)', :extract_plain ]
-
-          # %c
-        when /\s%\*?c/
-          [ "\\s*(.)", :extract_plain ]
-
-          # %c
-        when /%\*?c/
-          [ "(.)", :extract_plain ]
-
-          # %5c (whitespace issues are handled by the count_*_space? methods)
-        when /%\*?(\d+)c/
-          [ "(.{1,#{$1}})", :extract_plain ]
-
-          # %%
-        when /%%/
-          [ '(\s*%)', :nil_proc ]
-
-          # literal characters
-        else
-          [ "(#{Regexp.escape(@spec_string)})", :nil_proc ]
-        end
-
-      @re_string = '\A' + @re_string
-    end
-
-    def to_re
-      Regexp.new(@re_string,Regexp::MULTILINE)
-    end
-
-    def match(str)
-      @matched = false
-      s = str.dup
-      s.sub!(/\A\s+/,'') unless count_space?
-      res = to_re.match(s)
-      if res
-        @conversion = send(@handler, res[1])
-        @matched_string = @conversion.to_s
-        @matched = true
-      end
-      res
-    end
-
-    def letter
-      /%\*?\d*([a-z\[])/.match(@spec_string).to_a[1]
-    end
-
-    def width
-      w = /%\*?(\d+)/.match(@spec_string).to_a[1]
-      w && w.to_i
-    end
-
-    def mid_match?
-      return false unless @matched
-      cc_no_width    = letter == '[' &&! width
-      c_or_cc_width  = (letter == 'c' || letter == '[') && width
-      width_left     = c_or_cc_width && (matched_string.size < width)
-
-      return width_left || cc_no_width
-    end
-    
-  end
-
-  class FormatString
-
-    attr_reader :string_left, :last_spec_tried,
-                :last_match_tried, :matched_count, :space
-
-    SPECIFIERS = 'diuXxofeEgsc'
-    REGEX = /
-        # possible space, followed by...
-          (?:\s*
-          # percent sign, followed by...
-            %
-            # another percent sign, or...
-              (?:%|
-        	 # optional assignment suppression flag
-        	 \*?
-        	 # optional maximum field width
-        	 \d*
-        	   # named character class, ...
-        	   (?:\[\[:\w+:\]\]|
-        	   # traditional character class, or...
-        	      \[[^\]]*\]|
-        	   # specifier letter.
-        	      [#{SPECIFIERS}])))|
-            # or miscellaneous characters
-              [^%\s]+/ix
-
-    def initialize(str)
-      @specs = []
-      @i = 1
-      s = str.to_s
-      return unless /\S/.match(s)
-      @space = true if /\s\z/.match(s)
-      @specs.replace s.scan(REGEX).map {|spec| FormatSpecifier.new(spec) }
-    end
-
-    def to_s
-      @specs.join('')
-    end
-
-    def prune(n=matched_count)
-      n.times { @specs.shift }
-    end
-
-    def spec_count
-      @specs.size
-    end
-
-    def last_spec
-      @i == spec_count - 1
-    end
-
-    def match(str)
-      accum = []
-      @string_left = str
-      @matched_count = 0
-
-      @specs.each_with_index do |spec, at i|
-        @last_spec_tried = spec
-        @last_match_tried = spec.match(@string_left)
-        break unless @last_match_tried
-        @matched_count += 1
-
-        accum << spec.conversion
-
-        @string_left = @last_match_tried.post_match
-        break if @string_left.empty?
-      end
-      return accum.compact
-    end
-  end
-end
-
-class IO
-
-# The trick here is doing a match where you grab one *line*
-# of input at a time.  The linebreak may or may not occur
-# at the boundary where the string matches a format specifier.
-# And if it does, some rule about whitespace may or may not
-# be in effect...
-#
-# That's why this is much more elaborate than the string
-# version.
-#
-# For each line:
-# Match succeeds (non-emptily)
-# and the last attempted spec/string sub-match succeeded:
-#
-#   could the last spec keep matching?
-#     yes: save interim results and continue (next line)
-#
-# The last attempted spec/string did not match:
-#
-# are we on the next-to-last spec in the string?
-#   yes:
-#     is fmt_string.string_left all spaces?
-#       yes: does current spec care about input space?
-#         yes: fatal failure
-#         no: save interim results and continue
-#   no: continue  [this state could be analyzed further]
-#
-#
-
-  def scanf(str,&b)
-    return block_scanf(str,&b) if b
-    return [] unless str.size > 0
-
-    start_position = pos rescue 0
-    matched_so_far = 0
-    source_buffer = ""
-    result_buffer = []
-    final_result = []
-
-    fstr = Scanf::FormatString.new(str)
-
-    loop do
-      if eof || (tty? &&! fstr.match(source_buffer))
-        final_result.concat(result_buffer)
-        break
-      end
-
-      source_buffer << gets
-
-      current_match = fstr.match(source_buffer)
-
-      spec = fstr.last_spec_tried
-
-      if spec.matched
-        if spec.mid_match?
-          result_buffer.replace(current_match)
-          next
-        end
-
-      elsif (fstr.matched_count == fstr.spec_count - 1)
-        if /\A\s*\z/.match(fstr.string_left)
-          break if spec.count_space?
-          result_buffer.replace(current_match)
-          next
-        end
-      end
-
-      final_result.concat(current_match)
-
-      matched_so_far += source_buffer.size
-      source_buffer.replace(fstr.string_left)
-      matched_so_far -= source_buffer.size
-      break if fstr.last_spec
-      fstr.prune
-    end
-    seek(start_position + matched_so_far, IO::SEEK_SET) rescue Errno::ESPIPE
-    soak_up_spaces if fstr.last_spec && fstr.space
-
-    return final_result
-  end
-
-  private
-
-  def soak_up_spaces
-    c = getc
-    ungetc(c) if c
-    until eof ||! c || /\S/.match(c.chr)
-      c = getc
-    end
-    ungetc(c) if (c && /\S/.match(c.chr))
-  end
-
-  def block_scanf(str)
-    final = []
-# Sub-ideal, since another FS gets created in scanf.
-# But used here to determine the number of specifiers.
-    fstr = Scanf::FormatString.new(str)
-    last_spec = fstr.last_spec
-    begin
-      current = scanf(str)
-      break if current.empty?
-      final.push(yield(current))
-    end until eof || fstr.last_spec_tried == last_spec
-    return final
-  end
-end
-
-class String
-
-  def scanf(fstr,&b)
-    if b
-      block_scanf(fstr,&b)
-    else
-      fs = 
-        if fstr.is_a? Scanf::FormatString
-          fstr 
-        else 
-          Scanf::FormatString.new(fstr)
-        end
-      fs.match(self)
-    end
-  end
-
-  def block_scanf(fstr,&b)
-    fs = Scanf::FormatString.new(fstr)
-    str = self.dup
-    final = []
-    begin
-      current = str.scanf(fs)
-      final.push(yield(current)) unless current.empty?
-      str = fs.string_left
-    end until current.empty? || str.empty?
-    return final
-  end
-end
-
-module Kernel
-  private
-  def scanf(fs,&b)
-    STDIN.scanf(fs,&b)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/set.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/set.rb
deleted file mode 100644
index ac8950a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/set.rb
+++ /dev/null
@@ -1,1250 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# set.rb - defines the Set class
-#++
-# Copyright (c) 2002 Akinori MUSHA <knu at iDaemons.org>
-#
-# Documentation by Akinori MUSHA and Gavin Sinclair. 
-#
-# All rights reserved.  You can redistribute and/or modify it under the same
-# terms as Ruby.
-#
-#   $Id: set.rb 17648 2008-06-29 08:06:28Z shyouhei $
-#
-# == Overview 
-# 
-# This library provides the Set class, which deals with a collection
-# of unordered values with no duplicates.  It is a hybrid of Array's
-# intuitive inter-operation facilities and Hash's fast lookup.  If you
-# need to keep values ordered, use the SortedSet class.
-#
-# The method +to_set+ is added to Enumerable for convenience.
-#
-# See the Set class for an example of usage.
-
-
-#
-# Set implements a collection of unordered values with no duplicates.
-# This is a hybrid of Array's intuitive inter-operation facilities and
-# Hash's fast lookup.
-#
-# Several methods accept any Enumerable object (implementing +each+)
-# for greater flexibility: new, replace, merge, subtract, |, &, -, ^.
-#
-# The equality of each couple of elements is determined according to
-# Object#eql? and Object#hash, since Set uses Hash as storage.
-#
-# Finally, if you are using class Set, you can also use Enumerable#to_set
-# for convenience.
-#
-# == Example
-#
-#   require 'set'
-#   s1 = Set.new [1, 2]                   # -> #<Set: {1, 2}>
-#   s2 = [1, 2].to_set                    # -> #<Set: {1, 2}>
-#   s1 == s2                              # -> true
-#   s1.add("foo")                         # -> #<Set: {1, 2, "foo"}>
-#   s1.merge([2, 6])                      # -> #<Set: {6, 1, 2, "foo"}>
-#   s1.subset? s2                         # -> false
-#   s2.subset? s1                         # -> true
-#
-class Set
-  include Enumerable
-
-  # Creates a new set containing the given objects.
-  def self.[](*ary)
-    new(ary)
-  end
-
-  # Creates a new set containing the elements of the given enumerable
-  # object.
-  #
-  # If a block is given, the elements of enum are preprocessed by the
-  # given block.
-  def initialize(enum = nil, &block) # :yields: o
-    @hash ||= Hash.new
-
-    enum.nil? and return
-
-    if block
-      enum.each { |o| add(block[o]) }
-    else
-      merge(enum)
-    end
-  end
-
-  # Copy internal hash.
-  def initialize_copy(orig)
-    @hash = orig.instance_eval{@hash}.dup
-  end
-
-  # Returns the number of elements.
-  def size
-    @hash.size
-  end
-  alias length size
-
-  # Returns true if the set contains no elements.
-  def empty?
-    @hash.empty?
-  end
-
-  # Removes all elements and returns self.
-  def clear
-    @hash.clear
-    self
-  end
-
-  # Replaces the contents of the set with the contents of the given
-  # enumerable object and returns self.
-  def replace(enum)
-    if enum.class == self.class
-      @hash.replace(enum.instance_eval { @hash })
-    else
-      enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-      clear
-      enum.each { |o| add(o) }
-    end
-
-    self
-  end
-
-  # Converts the set to an array.  The order of elements is uncertain.
-  def to_a
-    @hash.keys
-  end
-
-  def flatten_merge(set, seen = Set.new)
-    set.each { |e|
-      if e.is_a?(Set)
-	if seen.include?(e_id = e.object_id)
-	  raise ArgumentError, "tried to flatten recursive Set"
-	end
-
-	seen.add(e_id)
-	flatten_merge(e, seen)
-	seen.delete(e_id)
-      else
-	add(e)
-      end
-    }
-
-    self
-  end
-  protected :flatten_merge
-
-  # Returns a new set that is a copy of the set, flattening each
-  # containing set recursively.
-  def flatten
-    self.class.new.flatten_merge(self)
-  end
-
-  # Equivalent to Set#flatten, but replaces the receiver with the
-  # result in place.  Returns nil if no modifications were made.
-  def flatten!
-    if detect { |e| e.is_a?(Set) }
-      replace(flatten())
-    else
-      nil
-    end
-  end
-
-  # Returns true if the set contains the given object.
-  def include?(o)
-    @hash.include?(o)
-  end
-  alias member? include?
-
-  # Returns true if the set is a superset of the given set.
-  def superset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if size < set.size
-    set.all? { |o| include?(o) }
-  end
-
-  # Returns true if the set is a proper superset of the given set.
-  def proper_superset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if size <= set.size
-    set.all? { |o| include?(o) }
-  end
-
-  # Returns true if the set is a subset of the given set.
-  def subset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if set.size < size
-    all? { |o| set.include?(o) }
-  end
-
-  # Returns true if the set is a proper subset of the given set.
-  def proper_subset?(set)
-    set.is_a?(Set) or raise ArgumentError, "value must be a set"
-    return false if set.size <= size
-    all? { |o| set.include?(o) }
-  end
-
-  # Calls the given block once for each element in the set, passing
-  # the element as parameter.
-  def each
-    @hash.each_key { |o| yield(o) }
-    self
-  end
-
-  # Adds the given object to the set and returns self.  Use +merge+ to
-  # add several elements at once.
-  def add(o)
-    @hash[o] = true
-    self
-  end
-  alias << add
-
-  # Adds the given object to the set and returns self.  If the
-  # object is already in the set, returns nil.
-  def add?(o)
-    if include?(o)
-      nil
-    else
-      add(o)
-    end
-  end
-
-  # Deletes the given object from the set and returns self.  Use +subtract+ to
-  # delete several items at once.
-  def delete(o)
-    @hash.delete(o)
-    self
-  end
-
-  # Deletes the given object from the set and returns self.  If the
-  # object is not in the set, returns nil.
-  def delete?(o)
-    if include?(o)
-      delete(o)
-    else
-      nil
-    end
-  end
-
-  # Deletes every element of the set for which block evaluates to
-  # true, and returns self.
-  def delete_if
-    to_a.each { |o| @hash.delete(o) if yield(o) }
-    self
-  end
-
-  # Do collect() destructively.
-  def collect!
-    set = self.class.new
-    each { |o| set << yield(o) }
-    replace(set)
-  end
-  alias map! collect!
-
-  # Equivalent to Set#delete_if, but returns nil if no changes were
-  # made.
-  def reject!
-    n = size
-    delete_if { |o| yield(o) }
-    size == n ? nil : self
-  end
-
-  # Merges the elements of the given enumerable object to the set and
-  # returns self.
-  def merge(enum)
-    if enum.is_a?(Set)
-      @hash.update(enum.instance_eval { @hash })
-    else
-      enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-      enum.each { |o| add(o) }
-    end
-
-    self
-  end
-
-  # Deletes every element that appears in the given enumerable object
-  # and returns self.
-  def subtract(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    enum.each { |o| delete(o) }
-    self
-  end
-
-  # Returns a new set built by merging the set and the elements of the
-  # given enumerable object.
-  def |(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    dup.merge(enum)
-  end
-  alias + |		##
-  alias union |		##
-
-  # Returns a new set built by duplicating the set, removing every
-  # element that appears in the given enumerable object.
-  def -(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    dup.subtract(enum)
-  end
-  alias difference -	##
-
-  # Returns a new set containing elements common to the set and the
-  # given enumerable object.
-  def &(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    n = self.class.new
-    enum.each { |o| n.add(o) if include?(o) }
-    n
-  end
-  alias intersection &	##
-
-  # Returns a new set containing elements exclusive between the set
-  # and the given enumerable object.  (set ^ enum) is equivalent to
-  # ((set | enum) - (set & enum)).
-  def ^(enum)
-    enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-    n = Set.new(enum)
-    each { |o| if n.include?(o) then n.delete(o) else n.add(o) end }
-    n
-  end
-
-  # Returns true if two sets are equal.  The equality of each couple
-  # of elements is defined according to Object#eql?.
-  def ==(set)
-    equal?(set) and return true
-
-    set.is_a?(Set) && size == set.size or return false
-
-    hash = @hash.dup
-    set.all? { |o| hash.include?(o) }
-  end
-
-  def hash	# :nodoc:
-    @hash.hash
-  end
-
-  def eql?(o)	# :nodoc:
-    return false unless o.is_a?(Set)
-    @hash.eql?(o.instance_eval{@hash})
-  end
-
-  # Classifies the set by the return value of the given block and
-  # returns a hash of {value => set of elements} pairs.  The block is
-  # called once for each element of the set, passing the element as
-  # parameter.
-  #
-  # e.g.:
-  #
-  #   require 'set'
-  #   files = Set.new(Dir.glob("*.rb"))
-  #   hash = files.classify { |f| File.mtime(f).year }
-  #   p hash    # => {2000=>#<Set: {"a.rb", "b.rb"}>,
-  #             #     2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>,
-  #             #     2002=>#<Set: {"f.rb"}>}
-  def classify # :yields: o
-    h = {}
-
-    each { |i|
-      x = yield(i)
-      (h[x] ||= self.class.new).add(i)
-    }
-
-    h
-  end
-
-  # Divides the set into a set of subsets according to the commonality
-  # defined by the given block.
-  #
-  # If the arity of the block is 2, elements o1 and o2 are in common
-  # if block.call(o1, o2) is true.  Otherwise, elements o1 and o2 are
-  # in common if block.call(o1) == block.call(o2).
-  #
-  # e.g.:
-  #
-  #   require 'set'
-  #   numbers = Set[1, 3, 4, 6, 9, 10, 11]
-  #   set = numbers.divide { |i,j| (i - j).abs == 1 }
-  #   p set     # => #<Set: {#<Set: {1}>,
-  #             #            #<Set: {11, 9, 10}>,
-  #             #            #<Set: {3, 4}>,
-  #             #            #<Set: {6}>}>
-  def divide(&func)
-    if func.arity == 2
-      require 'tsort'
-
-      class << dig = {}		# :nodoc:
-	include TSort
-
-	alias tsort_each_node each_key
-	def tsort_each_child(node, &block)
-	  fetch(node).each(&block)
-	end
-      end
-
-      each { |u|
-	dig[u] = a = []
-	each{ |v| func.call(u, v) and a << v }
-      }
-
-      set = Set.new()
-      dig.each_strongly_connected_component { |css|
-	set.add(self.class.new(css))
-      }
-      set
-    else
-      Set.new(classify(&func).values)
-    end
-  end
-
-  InspectKey = :__inspect_key__         # :nodoc:
-
-  # Returns a string containing a human-readable representation of the
-  # set. ("#<Set: {element1, element2, ...}>")
-  def inspect
-    ids = (Thread.current[InspectKey] ||= [])
-
-    if ids.include?(object_id)
-      return sprintf('#<%s: {...}>', self.class.name)
-    end
-
-    begin
-      ids << object_id
-      return sprintf('#<%s: {%s}>', self.class, to_a.inspect[1..-2])
-    ensure
-      ids.pop
-    end
-  end
-
-  def pretty_print(pp)	# :nodoc:
-    pp.text sprintf('#<%s: {', self.class.name)
-    pp.nest(1) {
-      pp.seplist(self) { |o|
-	pp.pp o
-      }
-    }
-    pp.text "}>"
-  end
-
-  def pretty_print_cycle(pp)	# :nodoc:
-    pp.text sprintf('#<%s: {%s}>', self.class.name, empty? ? '' : '...')
-  end
-end
-
-# SortedSet implements a set which elements are sorted in order.  See Set.
-class SortedSet < Set
-  @@setup = false
-
-  class << self
-    def [](*ary)	# :nodoc:
-      new(ary)
-    end
-
-    def setup	# :nodoc:
-      @@setup and return
-
-      module_eval {
-        # a hack to shut up warning
-        alias old_init initialize
-        remove_method :old_init
-      }
-      begin
-	require 'rbtree'
-
-	module_eval %{
-	  def initialize(*args, &block)
-	    @hash = RBTree.new
-	    super
-	  end
-	}
-      rescue LoadError
-	module_eval %{
-	  def initialize(*args, &block)
-	    @keys = nil
-	    super
-	  end
-
-	  def clear
-	    @keys = nil
-	    super
-	  end
-
-	  def replace(enum)
-	    @keys = nil
-	    super
-	  end
-
-	  def add(o)
-	    @keys = nil
-	    @hash[o] = true
-	    self
-	  end
-	  alias << add
-
-	  def delete(o)
-	    @keys = nil
-	    @hash.delete(o)
-	    self
-	  end
-
-	  def delete_if
-	    n = @hash.size
-	    super
-	    @keys = nil if @hash.size != n
-	    self
-	  end
-
-	  def merge(enum)
-	    @keys = nil
-	    super
-	  end
-
-	  def each
-	    to_a.each { |o| yield(o) }
-	    self
-	  end
-
-	  def to_a
-	    (@keys = @hash.keys).sort! unless @keys
-	    @keys
-	  end
-	}
-      end
-
-      @@setup = true
-    end
-  end
-
-  def initialize(*args, &block)	# :nodoc:
-    SortedSet.setup
-    initialize(*args, &block)
-  end
-end
-
-module Enumerable
-  # Makes a set from the enumerable object with given arguments.
-  # Needs to +require "set"+ to use this method.
-  def to_set(klass = Set, *args, &block)
-    klass.new(self, *args, &block)
-  end
-end
-
-# =begin
-# == RestricedSet class
-# RestricedSet implements a set with restrictions defined by a given
-# block.
-# 
-# === Super class
-#     Set
-# 
-# === Class Methods
-# --- RestricedSet::new(enum = nil) { |o| ... }
-# --- RestricedSet::new(enum = nil) { |rset, o| ... }
-#     Creates a new restricted set containing the elements of the given
-#     enumerable object.  Restrictions are defined by the given block.
-# 
-#     If the block's arity is 2, it is called with the RestrictedSet
-#     itself and an object to see if the object is allowed to be put in
-#     the set.
-# 
-#     Otherwise, the block is called with an object to see if the object
-#     is allowed to be put in the set.
-# 
-# === Instance Methods
-# --- restriction_proc
-#     Returns the restriction procedure of the set.
-# 
-# =end
-# 
-# class RestricedSet < Set
-#   def initialize(*args, &block)
-#     @proc = block or raise ArgumentError, "missing a block"
-# 
-#     if @proc.arity == 2
-#       instance_eval %{
-# 	def add(o)
-# 	  @hash[o] = true if @proc.call(self, o)
-# 	  self
-# 	end
-# 	alias << add
-# 
-# 	def add?(o)
-# 	  if include?(o) || !@proc.call(self, o)
-# 	    nil
-# 	  else
-# 	    @hash[o] = true
-# 	    self
-# 	  end
-# 	end
-# 
-# 	def replace(enum)
-# 	  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-# 	  clear
-# 	  enum.each { |o| add(o) }
-# 
-# 	  self
-# 	end
-# 
-# 	def merge(enum)
-# 	  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
-# 	  enum.each { |o| add(o) }
-# 
-# 	  self
-# 	end
-#       }
-#     else
-#       instance_eval %{
-# 	def add(o)
-#         if @proc.call(o)
-# 	    @hash[o] = true 
-#         end
-# 	  self
-# 	end
-# 	alias << add
-# 
-# 	def add?(o)
-# 	  if include?(o) || !@proc.call(o)
-# 	    nil
-# 	  else
-# 	    @hash[o] = true
-# 	    self
-# 	  end
-# 	end
-#       }
-#     end
-# 
-#     super(*args)
-#   end
-# 
-#   def restriction_proc
-#     @proc
-#   end
-# end
-
-if $0 == __FILE__
-  eval DATA.read, nil, $0, __LINE__+4
-end
-
-__END__
-
-require 'test/unit'
-
-class TC_Set < Test::Unit::TestCase
-  def test_aref
-    assert_nothing_raised {
-      Set[]
-      Set[nil]
-      Set[1,2,3]
-    }
-
-    assert_equal(0, Set[].size)
-    assert_equal(1, Set[nil].size)
-    assert_equal(1, Set[[]].size)
-    assert_equal(1, Set[[nil]].size)
-
-    set = Set[2,4,6,4]
-    assert_equal(Set.new([2,4,6]), set)
-  end
-
-  def test_s_new
-    assert_nothing_raised {
-      Set.new()
-      Set.new(nil)
-      Set.new([])
-      Set.new([1,2])
-      Set.new('a'..'c')
-      Set.new('XYZ')
-    }
-    assert_raises(ArgumentError) {
-      Set.new(false)
-    }
-    assert_raises(ArgumentError) {
-      Set.new(1)
-    }
-    assert_raises(ArgumentError) {
-      Set.new(1,2)
-    }
-
-    assert_equal(0, Set.new().size)
-    assert_equal(0, Set.new(nil).size)
-    assert_equal(0, Set.new([]).size)
-    assert_equal(1, Set.new([nil]).size)
-
-    ary = [2,4,6,4]
-    set = Set.new(ary)
-    ary.clear
-    assert_equal(false, set.empty?)
-    assert_equal(3, set.size)
-
-    ary = [1,2,3]
-
-    s = Set.new(ary) { |o| o * 2 }
-    assert_equal([2,4,6], s.sort)
-  end
-
-  def test_clone
-    set1 = Set.new
-    set2 = set1.clone
-    set1 << 'abc'
-    assert_equal(Set.new, set2)
-  end
-
-  def test_dup
-    set1 = Set[1,2]
-    set2 = set1.dup
-
-    assert_not_same(set1, set2)
-
-    assert_equal(set1, set2)
-
-    set1.add(3)
-
-    assert_not_equal(set1, set2)
-  end
-
-  def test_size
-    assert_equal(0, Set[].size)
-    assert_equal(2, Set[1,2].size)
-    assert_equal(2, Set[1,2,1].size)
-  end
-
-  def test_empty?
-    assert_equal(true, Set[].empty?)
-    assert_equal(false, Set[1, 2].empty?)
-  end
-
-  def test_clear
-    set = Set[1,2]
-    ret = set.clear
-
-    assert_same(set, ret)
-    assert_equal(true, set.empty?)
-  end
-
-  def test_replace
-    set = Set[1,2]
-    ret = set.replace('a'..'c')
-
-    assert_same(set, ret)
-    assert_equal(Set['a','b','c'], set)
-  end
-
-  def test_to_a
-    set = Set[1,2,3,2]
-    ary = set.to_a
-
-    assert_equal([1,2,3], ary.sort)
-  end
-
-  def test_flatten
-    # test1
-    set1 = Set[
-      1,
-      Set[
-	5,
-	Set[7,
-	  Set[0]
-	],
-	Set[6,2],
-	1
-      ],
-      3,
-      Set[3,4]
-    ]
-
-    set2 = set1.flatten
-    set3 = Set.new(0..7)
-
-    assert_not_same(set2, set1)
-    assert_equal(set3, set2)
-
-    # test2; destructive
-    orig_set1 = set1
-    set1.flatten!
-
-    assert_same(orig_set1, set1)
-    assert_equal(set3, set1)
-
-    # test3; multiple occurrences of a set in an set
-    set1 = Set[1, 2]
-    set2 = Set[set1, Set[set1, 4], 3]
-
-    assert_nothing_raised {
-      set2.flatten!
-    }
-
-    assert_equal(Set.new(1..4), set2)
-
-    # test4; recursion
-    set2 = Set[]
-    set1 = Set[1, set2]
-    set2.add(set1)
-
-    assert_raises(ArgumentError) {
-      set1.flatten!
-    }
-
-    # test5; miscellaneous
-    empty = Set[]
-    set =  Set[Set[empty, "a"],Set[empty, "b"]]
-
-    assert_nothing_raised {
-      set.flatten
-    }
-
-    set1 = empty.merge(Set["no_more", set])
-
-    assert_nil(Set.new(0..31).flatten!)
-
-    x = Set[Set[],Set[1,2]].flatten!
-    y = Set[1,2]
-
-    assert_equal(x, y)
-  end
-
-  def test_include?
-    set = Set[1,2,3]
-
-    assert_equal(true, set.include?(1))
-    assert_equal(true, set.include?(2))
-    assert_equal(true, set.include?(3))
-    assert_equal(false, set.include?(0))
-    assert_equal(false, set.include?(nil))
-
-    set = Set["1",nil,"2",nil,"0","1",false]
-    assert_equal(true, set.include?(nil))
-    assert_equal(true, set.include?(false))
-    assert_equal(true, set.include?("1"))
-    assert_equal(false, set.include?(0))
-    assert_equal(false, set.include?(true))
-  end
-
-  def test_superset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.superset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.superset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.superset?([2])
-    }
-
-    assert_equal(true, set.superset?(Set[]))
-    assert_equal(true, set.superset?(Set[1,2]))
-    assert_equal(true, set.superset?(Set[1,2,3]))
-    assert_equal(false, set.superset?(Set[1,2,3,4]))
-    assert_equal(false, set.superset?(Set[1,4]))
-
-    assert_equal(true, Set[].superset?(Set[]))
-  end
-
-  def test_proper_superset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_superset?([2])
-    }
-
-    assert_equal(true, set.proper_superset?(Set[]))
-    assert_equal(true, set.proper_superset?(Set[1,2]))
-    assert_equal(false, set.proper_superset?(Set[1,2,3]))
-    assert_equal(false, set.proper_superset?(Set[1,2,3,4]))
-    assert_equal(false, set.proper_superset?(Set[1,4]))
-
-    assert_equal(false, Set[].proper_superset?(Set[]))
-  end
-
-  def test_subset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.subset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.subset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.subset?([2])
-    }
-
-    assert_equal(true, set.subset?(Set[1,2,3,4]))
-    assert_equal(true, set.subset?(Set[1,2,3]))
-    assert_equal(false, set.subset?(Set[1,2]))
-    assert_equal(false, set.subset?(Set[]))
-
-    assert_equal(true, Set[].subset?(Set[1]))
-    assert_equal(true, Set[].subset?(Set[]))
-  end
-
-  def test_proper_subset?
-    set = Set[1,2,3]
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?()
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?(2)
-    }
-
-    assert_raises(ArgumentError) {
-      set.proper_subset?([2])
-    }
-
-    assert_equal(true, set.proper_subset?(Set[1,2,3,4]))
-    assert_equal(false, set.proper_subset?(Set[1,2,3]))
-    assert_equal(false, set.proper_subset?(Set[1,2]))
-    assert_equal(false, set.proper_subset?(Set[]))
-
-    assert_equal(false, Set[].proper_subset?(Set[]))
-  end
-
-  def test_each
-    ary = [1,3,5,7,10,20]
-    set = Set.new(ary)
-
-    assert_raises(LocalJumpError) {
-      set.each
-    }
-
-    assert_nothing_raised {
-      set.each { |o|
-	ary.delete(o) or raise "unexpected element: #{o}"
-      }
-
-      ary.empty? or raise "forgotten elements: #{ary.join(', ')}"
-    }
-  end
-
-  def test_add
-    set = Set[1,2,3]
-
-    ret = set.add(2)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.add?(2)
-    assert_nil(ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.add(4)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4], set)
-
-    ret = set.add?(5)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4,5], set)
-  end
-
-  def test_delete
-    set = Set[1,2,3]
-
-    ret = set.delete(4)
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.delete?(4)
-    assert_nil(ret)
-    assert_equal(Set[1,2,3], set)
-
-    ret = set.delete(2)
-    assert_equal(set, ret)
-    assert_equal(Set[1,3], set)
-
-    ret = set.delete?(1)
-    assert_equal(set, ret)
-    assert_equal(Set[3], set)
-  end
-
-  def test_delete_if
-    set = Set.new(1..10)
-    ret = set.delete_if { |i| i > 10 }
-    assert_same(set, ret)
-    assert_equal(Set.new(1..10), set)
-
-    set = Set.new(1..10)
-    ret = set.delete_if { |i| i % 3 == 0 }
-    assert_same(set, ret)
-    assert_equal(Set[1,2,4,5,7,8,10], set)
-  end
-
-  def test_collect!
-    set = Set[1,2,3,'a','b','c',-1..1,2..4]
-
-    ret = set.collect! { |i|
-      case i
-      when Numeric
-	i * 2
-      when String
-	i.upcase
-      else
-	nil
-      end
-    }
-
-    assert_same(set, ret)
-    assert_equal(Set[2,4,6,'A','B','C',nil], set)
-  end
-
-  def test_reject!
-    set = Set.new(1..10)
-
-    ret = set.reject! { |i| i > 10 }
-    assert_nil(ret)
-    assert_equal(Set.new(1..10), set)
-
-    ret = set.reject! { |i| i % 3 == 0 }
-    assert_same(set, ret)
-    assert_equal(Set[1,2,4,5,7,8,10], set)
-  end
-
-  def test_merge
-    set = Set[1,2,3]
-
-    ret = set.merge([2,4,6])
-    assert_same(set, ret)
-    assert_equal(Set[1,2,3,4,6], set)
-  end
-
-  def test_subtract
-    set = Set[1,2,3]
-
-    ret = set.subtract([2,4,6])
-    assert_same(set, ret)
-    assert_equal(Set[1,3], set)
-  end
-
-  def test_plus
-    set = Set[1,2,3]
-
-    ret = set + [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,2,3,4,6], ret)
-  end
-
-  def test_minus
-    set = Set[1,2,3]
-
-    ret = set - [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,3], ret)
-  end
-
-  def test_and
-    set = Set[1,2,3,4]
-
-    ret = set & [2,4,6]
-    assert_not_same(set, ret)
-    assert_equal(Set[2,4], ret)
-  end
-
-  def test_xor
-    set = Set[1,2,3,4]
-    ret = set ^ [2,4,5,5]
-    assert_not_same(set, ret)
-    assert_equal(Set[1,3,5], ret)
-  end
-
-  def test_eq
-    set1 = Set[2,3,1]
-    set2 = Set[1,2,3]
-
-    assert_equal(set1, set1)
-    assert_equal(set1, set2)
-    assert_not_equal(Set[1], [1])
-
-    set1 = Class.new(Set)["a", "b"]
-    set2 = Set["a", "b", set1]
-    set1 = set1.add(set1.clone)
-
-#    assert_equal(set1, set2)
-#    assert_equal(set2, set1)
-    assert_equal(set2, set2.clone)
-    assert_equal(set1.clone, set1)
-
-    assert_not_equal(Set[Exception.new,nil], Set[Exception.new,Exception.new], "[ruby-dev:26127]")
-  end
-
-  # def test_hash
-  # end
-
-  # def test_eql?
-  # end
-
-  def test_classify
-    set = Set.new(1..10)
-    ret = set.classify { |i| i % 3 }
-
-    assert_equal(3, ret.size)
-    assert_instance_of(Hash, ret)
-    ret.each_value { |value| assert_instance_of(Set, value) }
-    assert_equal(Set[3,6,9], ret[0])
-    assert_equal(Set[1,4,7,10], ret[1])
-    assert_equal(Set[2,5,8], ret[2])
-  end
-
-  def test_divide
-    set = Set.new(1..10)
-    ret = set.divide { |i| i % 3 }
-
-    assert_equal(3, ret.size)
-    n = 0
-    ret.each { |s| n += s.size }
-    assert_equal(set.size, n)
-    assert_equal(set, ret.flatten)
-
-    set = Set[7,10,5,11,1,3,4,9,0]
-    ret = set.divide { |a,b| (a - b).abs == 1 }
-
-    assert_equal(4, ret.size)
-    n = 0
-    ret.each { |s| n += s.size }
-    assert_equal(set.size, n)
-    assert_equal(set, ret.flatten)
-    ret.each { |s|
-      if s.include?(0)
-	assert_equal(Set[0,1], s)
-      elsif s.include?(3)
-	assert_equal(Set[3,4,5], s)
-      elsif s.include?(7)
-	assert_equal(Set[7], s)
-      elsif s.include?(9)
-	assert_equal(Set[9,10,11], s)
-      else
-	raise "unexpected group: #{s.inspect}"
-      end
-    }
-  end
-
-  def test_inspect
-    set1 = Set[1]
-
-    assert_equal('#<Set: {1}>', set1.inspect)
-
-    set2 = Set[Set[0], 1, 2, set1]
-    assert_equal(false, set2.inspect.include?('#<Set: {...}>'))
-
-    set1.add(set2)
-    assert_equal(true, set1.inspect.include?('#<Set: {...}>'))
-  end
-
-  # def test_pretty_print
-  # end
-
-  # def test_pretty_print_cycle
-  # end
-end
-
-class TC_SortedSet < Test::Unit::TestCase
-  def test_sortedset
-    s = SortedSet[4,5,3,1,2]
-
-    assert_equal([1,2,3,4,5], s.to_a)
-
-    prev = nil
-    s.each { |o| assert(prev < o) if prev; prev = o }
-    assert_not_nil(prev)
-
-    s.map! { |o| -2 * o }
-
-    assert_equal([-10,-8,-6,-4,-2], s.to_a)
-
-    prev = nil
-    ret = s.each { |o| assert(prev < o) if prev; prev = o }
-    assert_not_nil(prev)
-    assert_same(s, ret)
-
-    s = SortedSet.new([2,1,3]) { |o| o * -2 }
-    assert_equal([-6,-4,-2], s.to_a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.delete_if { |o| a << o; o[0] == ?t }
-    assert_same(s, ret)
-    assert_equal(['four', 'one'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.reject! { |o| a << o; o[0] == ?t }
-    assert_same(s, ret)
-    assert_equal(['four', 'one'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-
-    s = SortedSet.new(['one', 'two', 'three', 'four'])
-    a = []
-    ret = s.reject! { |o| a << o; false }
-    assert_same(nil, ret)
-    assert_equal(['four', 'one', 'three', 'two'], s.to_a)
-    assert_equal(['four', 'one', 'three', 'two'], a)
-  end
-end
-
-class TC_Enumerable < Test::Unit::TestCase
-  def test_to_set
-    ary = [2,5,4,3,2,1,3]
-
-    set = ary.to_set
-    assert_instance_of(Set, set)
-    assert_equal([1,2,3,4,5], set.sort)
-
-    set = ary.to_set { |o| o * -2 }
-    assert_instance_of(Set, set)
-    assert_equal([-10,-8,-6,-4,-2], set.sort)
-
-    set = ary.to_set(SortedSet)
-    assert_instance_of(SortedSet, set)
-    assert_equal([1,2,3,4,5], set.to_a)
-
-    set = ary.to_set(SortedSet) { |o| o * -2 }
-    assert_instance_of(SortedSet, set)
-    assert_equal([-10,-8,-6,-4,-2], set.sort)
-  end
-end
-
-# class TC_RestricedSet < Test::Unit::TestCase
-#   def test_s_new
-#     assert_raises(ArgumentError) { RestricedSet.new }
-# 
-#     s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
-#     assert_equal([2,3], s.sort)
-#   end
-# 
-#   def test_restriction_proc
-#     s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
-# 
-#     f = s.restriction_proc
-#     assert_instance_of(Proc, f)
-#     assert(f[1])
-#     assert(!f[0])
-#   end
-# 
-#   def test_replace
-#     s = RestricedSet.new(-3..3) { |o| o > 0 }
-#     assert_equal([1,2,3], s.sort)
-# 
-#     s.replace([-2,0,3,4,5])
-#     assert_equal([3,4,5], s.sort)
-#   end
-# 
-#   def test_merge
-#     s = RestricedSet.new { |o| o > 0 }
-#     s.merge(-5..5)
-#     assert_equal([1,2,3,4,5], s.sort)
-# 
-#     s.merge([10,-10,-8,8])
-#     assert_equal([1,2,3,4,5,8,10], s.sort)
-#   end
-# end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sha1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sha1.rb
deleted file mode 100644
index af04158..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sha1.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# just for compatibility; requiring "sha1" is obsoleted
-#
-# $RoughId: sha1.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
-# $Id: sha1.rb 12008 2007-03-06 10:12:12Z knu $
-
-require 'digest/sha1'
-
-class SHA1 < Digest::SHA1
-  class << self
-    alias orig_new new
-    def new(str = nil)
-      if str
-        orig_new.update(str)
-      else
-        orig_new
-      end
-    end
-
-    def sha1(*args)
-      new(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell.rb
deleted file mode 100644
index 039f849..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell.rb
+++ /dev/null
@@ -1,269 +0,0 @@
-#
-#   shell.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 1.8 $
-#   	$Date: 2001/03/19 09:01:11 $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "thread"
-
-require "shell/error"
-require "shell/command-processor"
-require "shell/process-controller"
-
-class Shell
-  @RCS_ID='-$Id: shell.rb,v 1.8 2001/03/19 09:01:11 keiju Exp keiju $-'
-
-  include Error
-  extend Exception2MessageMapper
-
-#  @cascade = true
-  # debug: true -> normal debug
-  # debug: 1    -> eval definition debug
-  # debug: 2    -> detail inspect debug
-  @debug = false
-  @verbose = true
-
-  class << Shell
-    attr :cascade, true
-    attr :debug, true
-    attr :verbose, true
-
-#    alias cascade? cascade
-    alias debug? debug
-    alias verbose? verbose
-    @verbose = true
-
-    def debug=(val)
-      @debug = val
-      @verbose = val if val
-    end
-
-    def cd(path)
-      sh = new
-      sh.cd path
-      sh
-    end
-
-    def default_system_path
-      if @default_system_path
-	@default_system_path
-      else
-	ENV["PATH"].split(":")
-      end
-    end
-
-    def default_system_path=(path)
-      @default_system_path = path
-    end
-
-    def default_record_separator
-      if @default_record_separator
-	@default_record_separator
-      else
-	$/
-      end
-    end
-
-    def default_record_separator=(rs)
-      @default_record_separator = rs
-    end
-  end
-
-  def initialize
-    @cwd = Dir.pwd
-    @dir_stack = []
-    @umask = nil
-
-    @system_path = Shell.default_system_path
-    @record_separator = Shell.default_record_separator
-
-    @command_processor = CommandProcessor.new(self)
-    @process_controller = ProcessController.new(self)
-
-    @verbose = Shell.verbose
-    @debug = Shell.debug
-  end
-
-  attr_reader :system_path
-
-  def system_path=(path)
-    @system_path = path
-    rehash
-  end
-
-  attr :umask, true
-  attr :record_separator, true
-
-  attr :verbose, true
-  attr :debug, true
-
-  def debug=(val)
-    @debug = val
-    @verbose = val if val
-  end
-
-  alias verbose? verbose
-  alias debug? debug
-
-  attr_reader :command_processor
-  attr_reader :process_controller
-
-  def expand_path(path)
-    File.expand_path(path, @cwd)
-  end
-
-  # Most Shell commands are defined via CommandProcessor
-
-  #
-  # Dir related methods
-  #
-  # Shell#cwd/dir/getwd/pwd
-  # Shell#chdir/cd
-  # Shell#pushdir/pushd
-  # Shell#popdir/popd
-  # Shell#mkdir
-  # Shell#rmdir
-
-  attr :cwd
-  alias dir cwd
-  alias getwd cwd
-  alias pwd cwd
-
-  attr :dir_stack
-  alias dirs dir_stack
-
-  # If called as iterator, it restores the current directory when the
-  # block ends.
-  def chdir(path = nil)
-    if iterator?
-      cwd_old = @cwd
-      begin
-	chdir(path)
-	yield
-      ensure
-	chdir(cwd_old)
-      end
-    else
-      path = "~" unless path
-      @cwd = expand_path(path)
-      notify "current dir: #{@cwd}"
-      rehash
-      self
-    end
-  end
-  alias cd chdir
-
-  def pushdir(path = nil)
-    if iterator?
-      pushdir(path)
-      begin
-	yield
-      ensure
-	popdir
-      end
-    elsif path
-      @dir_stack.push @cwd
-      chdir path
-      notify "dir stack: [#{@dir_stack.join ', '}]"
-      self
-    else
-      if pop = @dir_stack.pop
-	@dir_stack.push @cwd
-	chdir pop
-	notify "dir stack: [#{@dir_stack.join ', '}]"
-	self
-      else
-	Shell.Fail DirStackEmpty
-      end
-    end
-  end
-  alias pushd pushdir
-
-  def popdir
-    if pop = @dir_stack.pop
-      chdir pop
-      notify "dir stack: [#{@dir_stack.join ', '}]"
-      self
-    else
-      Shell.Fail DirStackEmpty
-    end
-  end
-  alias popd popdir
-
-
-  #
-  # process management
-  #
-  def jobs
-    @process_controller.jobs
-  end
-
-  def kill(sig, command)
-    @process_controller.kill_job(sig, command)
-  end
-
-  #
-  # command definitions
-  #
-  def Shell.def_system_command(command, path = command)
-    CommandProcessor.def_system_command(command, path)
-  end
-
-  def Shell.undef_system_command(command)
-    CommandProcessor.undef_system_command(command)
-  end
-
-  def Shell.alias_command(ali, command, *opts, &block)
-    CommandProcessor.alias_command(ali, command, *opts, &block)
-  end
-
-  def Shell.unalias_command(ali)
-    CommandProcessor.unalias_command(ali)
-  end
-
-  def Shell.install_system_commands(pre = "sys_")
-    CommandProcessor.install_system_commands(pre)
-  end
-
-  #
-  def inspect
-    if debug.kind_of?(Integer) && debug > 2
-      super
-    else
-      to_s
-    end
-  end
-
-  def self.notify(*opts, &block)
-    Thread.exclusive do
-    if opts[-1].kind_of?(String)
-      yorn = verbose?
-    else
-      yorn = opts.pop
-    end
-    return unless yorn
-
-    _head = true
-    print opts.collect{|mes|
-      mes = mes.dup
-      yield mes if iterator?
-      if _head
-	_head = false
-	"shell: " + mes
-      else
-	"       " + mes
-      end
-    }.join("\n")+"\n"
-    end
-  end
-
-  CommandProcessor.initialize
-  CommandProcessor.run_config
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/builtin-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/builtin-command.rb
deleted file mode 100644
index 2e1b361..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/builtin-command.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-#   shell/builtin-command.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "shell/filter"
-
-class Shell
-  class BuiltInCommand<Filter
-    def wait?
-      false
-    end
-    def active?
-      true
-    end
-  end
-
-  class Echo < BuiltInCommand
-    def initialize(sh, *strings)
-      super sh
-      @strings = strings
-    end
-    
-    def each(rs = nil)
-      rs =  @shell.record_separator unless rs
-      for str  in @strings
-	yield str + rs
-      end
-    end
-  end
-
-  class Cat < BuiltInCommand
-    def initialize(sh, *filenames)
-      super sh
-      @cat_files = filenames
-    end
-
-    def each(rs = nil)
-      if @cat_files.empty?
-	super
-      else
-	for src in @cat_files
-	  @shell.foreach(src, rs){|l| yield l}
-	end
-      end
-    end
-  end
-
-  class Glob < BuiltInCommand
-    def initialize(sh, pattern)
-      super sh
-
-      @pattern = pattern
-      Thread.critical = true
-      back = Dir.pwd
-      begin
-	Dir.chdir @shell.cwd
-	@files = Dir[pattern]
-      ensure
-	Dir.chdir back
-	Thread.critical = false
-      end
-    end
-
-    def each(rs = nil)
-      rs =  @shell.record_separator unless rs
-      for f  in @files
-	yield f+rs
-      end
-    end
-  end
-
-#   class Sort < Cat
-#     def initialize(sh, *filenames)
-#       super
-#     end
-#
-#     def each(rs = nil)
-#       ary = []
-#       super{|l|	ary.push l}
-#       for l in ary.sort!
-# 	yield l
-#       end
-#     end
-#   end
-
-  class AppendIO < BuiltInCommand
-    def initialize(sh, io, filter)
-      super sh
-      @input = filter
-      @io = io
-    end
-
-    def input=(filter)
-      @input.input=filter
-      for l in @input
-	@io << l
-      end
-    end
-
-  end
-
-  class AppendFile < AppendIO
-    def initialize(sh, to_filename, filter)
-      @file_name = to_filename
-      io = sh.open(to_filename, "a")
-      super(sh, io, filter)
-    end
-
-    def input=(filter)
-      begin
-	super
-      ensure
-	@io.close
-      end
-    end
-  end
-
-  class Tee < BuiltInCommand
-    def initialize(sh, filename)
-      super sh
-      @to_filename = filename
-    end
-
-    def each(rs = nil)
-      to = @shell.open(@to_filename, "w")
-      begin
-	super{|l| to << l; yield l}
-      ensure
-	to.close
-      end
-    end
-  end
-
-  class Concat < BuiltInCommand
-    def initialize(sh, *jobs)
-      super(sh)
-      @jobs = jobs
-    end
-
-    def each(rs = nil)
-      while job = @jobs.shift
-	job.each{|l| yield l}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/command-processor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/command-processor.rb
deleted file mode 100644
index 085af30..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/command-processor.rb
+++ /dev/null
@@ -1,592 +0,0 @@
-#
-#   shell/command-controller.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-require "ftools"
-require "thread"
-
-require "shell/error"
-require "shell/filter"
-require "shell/system-command"
-require "shell/builtin-command"
-
-class Shell
-  class CommandProcessor
-#    include Error
-
-    #
-    # initialize of Shell and related classes.
-    #
-    NoDelegateMethods = ["initialize", "expand_path"]
-    def self.initialize
-
-      install_builtin_commands
-
-      # define CommandProccessor#methods to Shell#methods and Filter#methods
-      for m in CommandProcessor.instance_methods(false) - NoDelegateMethods
-	add_delegate_command_to_shell(m)
-      end
-      
-      def self.method_added(id)
-	add_delegate_command_to_shell(id)
-      end
-    end
-
-    #
-    # include run file.
-    #
-    def self.run_config
-      begin
-	load File.expand_path("~/.rb_shell") if ENV.key?("HOME")
-      rescue LoadError, Errno::ENOENT
-      rescue
-	print "load error: #{rc}\n"
-	print $!.class, ": ", $!, "\n"
-	for err in $@[0, $@.size - 2]
-	  print "\t", err, "\n"
-	end
-      end
-    end
-
-    def initialize(shell)
-      @shell = shell
-      @system_commands = {}
-    end
-
-    #
-    # CommandProcessor#expand_path(path)
-    #	  path:	  String
-    #	  return: String
-    #	returns the absolute path for <path>
-    #
-    def expand_path(path)
-      @shell.expand_path(path)
-    end
-
-    #
-    # File related commands
-    # Shell#foreach
-    # Shell#open
-    # Shell#unlink
-    # Shell#test
-    #
-    # -
-    #	
-    # CommandProcessor#foreach(path, rs)
-    #	  path: String
-    #	  rs:	String - record separator
-    #	  iterator
-    #	Same as:
-    #	  File#foreach (when path is file)
-    #	  Dir#foreach (when path is directory)
-    #	path is relative to pwd
-    #
-    def foreach(path = nil, *rs)
-      path = "." unless path
-      path = expand_path(path)
-
-      if File.directory?(path)
-	Dir.foreach(path){|fn| yield fn}
-      else
-	IO.foreach(path, *rs){|l| yield l}
-      end
-    end
-
-    #
-    # CommandProcessor#open(path, mode)
-    #	  path:	  String
-    #	  mode:	  String
-    #	  return: File or Dir
-    #	Same as:
-    #	  File#open (when path is file)
-    #	  Dir#open  (when path is directory)
-    #	mode has an effect only when path is a file
-    #
-    def open(path, mode)
-      path = expand_path(path)
-      if File.directory?(path)
-	Dir.open(path)
-      else
-	effect_umask do
-	  File.open(path, mode)
-	end
-      end
-    end
-    #  public :open
-
-    #
-    # CommandProcessor#unlink(path)
-    #	same as:
-    #	  Dir#unlink  (when path is directory)
-    #	  File#unlink (when path is file)
-    #
-    def unlink(path)
-      path = expand_path(path)
-      if File.directory?(path)
-	Dir.unlink(path)
-      else
-	IO.unlink(path)
-      end
-    end
-
-    #
-    # CommandProcessor#test(command, file1, file2)
-    # CommandProcessor#[command, file1, file2]
-    #	  command: char or String or Symbol
-    #	  file1:   String
-    #	  file2:   String(optional)
-    #	  return: Boolean
-    #	same as:
-    #	  test()	   (when command is char or length 1 string or symbol)
-    #	  FileTest.command (others)
-    #	example:
-    #	  sh[?e, "foo"]
-    #	  sh[:e, "foo"]
-    #	  sh["e", "foo"]
-    #	  sh[:exists?, "foo"]
-    #	  sh["exists?", "foo"]
-    #	  
-    def test(command, file1, file2=nil)
-      file1 = expand_path(file1)
-      file2 = expand_path(file2) if file2
-      command = command.id2name if command.kind_of?(Symbol)
-
-      case command
-      when Integer
-	top_level_test(command, file1, file2)
-      when String
-	if command.size == 1
-	  if file2
-	    top_level_test(command, file1, file2)
-	  else
-	    top_level_test(command, file1)
-	  end
-	else
-	  if file2
-	    FileTest.send(command, file1, file2)
-	  else
-	    FileTest.send(command, file1)
-	  end
-	end
-      end
-    end
-    alias [] test
-
-    #
-    # Dir related methods
-    #
-    # Shell#mkdir
-    # Shell#rmdir
-    #
-    #--
-    #
-    # CommandProcessor#mkdir(*path)
-    #	  path: String
-    #	same as Dir.mkdir()
-    #	  
-    def mkdir(*path)
-      for dir in path
-	Dir.mkdir(expand_path(dir))
-      end
-    end
-
-    #
-    # CommandProcessor#rmdir(*path)
-    #	  path: String
-    #	same as Dir.rmdir()
-    #	  
-    def rmdir(*path)
-      for dir in path
-	Dir.rmdir(expand_path(dir))
-      end
-    end
-
-    #
-    # CommandProcessor#system(command, *opts)
-    #	  command: String
-    #	  opts:	   String
-    #	  return:  SystemCommand
-    #	Same as system() function
-    #	example:
-    #	  print sh.system("ls", "-l")
-    #	  sh.system("ls", "-l") | sh.head > STDOUT
-    # 
-    def system(command, *opts)
-      if opts.empty?
-	if command =~ /\*|\?|\{|\}|\[|\]|<|>|\(|\)|~|&|\||\\|\$|;|'|`|"|\n/
-	  return SystemCommand.new(@shell, find_system_command("sh"), "-c", command)
-	else
-	  command, *opts = command.split(/\s+/)
-	end
-      end
-      SystemCommand.new(@shell, find_system_command(command), *opts)
-    end
-
-    #
-    # ProcessCommand#rehash
-    #	clear command hash table.
-    #
-    def rehash
-      @system_commands = {}
-    end
-
-    #
-    # ProcessCommand#transact
-    #
-    def check_point
-      @shell.process_controller.wait_all_jobs_execution
-    end
-    alias finish_all_jobs check_point
-
-    def transact(&block)
-      begin
-	@shell.instance_eval(&block)
-      ensure
-	check_point
-      end
-    end
-
-    #
-    # internal commands
-    #
-    def out(dev = STDOUT, &block)
-      dev.print transact(&block)
-    end
-
-    def echo(*strings)
-      Echo.new(@shell, *strings)
-    end
-
-    def cat(*filenames)
-      Cat.new(@shell, *filenames)
-    end
-
-    #   def sort(*filenames)
-    #     Sort.new(self, *filenames)
-    #   end
-
-    def glob(pattern)
-      Glob.new(@shell, pattern)
-    end
-
-    def append(to, filter)
-      case to
-      when String
-	AppendFile.new(@shell, to, filter)
-      when IO
-	AppendIO.new(@shell, to, filter)
-      else
-	Shell.Fail Error::CantApplyMethod, "append", to.class
-      end
-    end
-
-    def tee(file)
-      Tee.new(@shell, file)
-    end
-
-    def concat(*jobs)
-      Concat.new(@shell, *jobs)
-    end
-
-    # %pwd, %cwd -> @pwd
-    def notify(*opts, &block)
-      Thread.exclusive do
-	Shell.notify(*opts) {|mes|
-	  yield mes if iterator?
-	
-	  mes.gsub!("%pwd", "#{@cwd}")
-	  mes.gsub!("%cwd", "#{@cwd}")
-	}
-      end
-    end
-
-    #
-    # private functions
-    #
-    def effect_umask
-      if @shell.umask
-	Thread.critical = true
-	save = File.umask
-	begin
-	  yield
-	ensure
-	  File.umask save
-	  Thread.critical = false
-	end
-      else
-	yield
-      end
-    end
-    private :effect_umask
-
-    def find_system_command(command)
-      return command if /^\// =~ command
-      case path = @system_commands[command]
-      when String
-	if exists?(path)
-	  return path
-	else
-	  Shell.Fail Error::CommandNotFound, command
-	end
-      when false
-	Shell.Fail Error::CommandNotFound, command
-      end
-
-      for p in @shell.system_path
-	path = join(p, command)
-	if FileTest.exists?(path)
-	  @system_commands[command] = path
-	  return path
-	end
-      end
-      @system_commands[command] = false
-      Shell.Fail Error::CommandNotFound, command
-    end
-
-    #
-    # CommandProcessor.def_system_command(command, path)
-    #	  command:  String
-    #	  path:	    String
-    #	define 'command()' method as method.
-    #
-    def self.def_system_command(command, path = command)
-      begin
-	eval((d = %Q[def #{command}(*opts)
-     	          SystemCommand.new(@shell, '#{path}', *opts)
-               end]), nil, __FILE__, __LINE__ - 1)
-      rescue SyntaxError
-	Shell.notify "warn: Can't define #{command} path: #{path}." 
-      end
-      Shell.notify "Define #{command} path: #{path}.", Shell.debug?
-      Shell.notify("Definition of #{command}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-    end
-
-    def self.undef_system_command(command)
-      command = command.id2name if command.kind_of?(Symbol)
-      remove_method(command)
-      Shell.module_eval{remove_method(command)}
-      Filter.module_eval{remove_method(command)}
-      self
-    end
-
-    # define command alias
-    # ex)
-    # def_alias_command("ls_c", "ls", "-C", "-F")
-    # def_alias_command("ls_c", "ls"){|*opts| ["-C", "-F", *opts]}
-    #
-    @alias_map = {}
-    def self.alias_map
-      @alias_map
-    end
-    def self.alias_command(ali, command, *opts, &block)
-      ali = ali.id2name if ali.kind_of?(Symbol)
-      command = command.id2name if command.kind_of?(Symbol)
-      begin
-	if iterator?
-	  @alias_map[ali.intern] = proc
-
-	  eval((d = %Q[def #{ali}(*opts)
-                          @shell.__send__(:#{command},
-                                          *(CommandProcessor.alias_map[:#{ali}].call *opts))
-	                end]), nil, __FILE__, __LINE__ - 1)
-    
-	else
-           args = opts.collect{|opt| '"' + opt + '"'}.join(",")
-           eval((d = %Q[def #{ali}(*opts)
-                          @shell.__send__(:#{command}, #{args}, *opts)
-                        end]), nil, __FILE__, __LINE__ - 1)
-	end
-      rescue SyntaxError
-	Shell.notify "warn: Can't alias #{ali} command: #{command}." 
-	Shell.notify("Definition of #{ali}: ", d)
-	raise
-      end
-      Shell.notify "Define #{ali} command: #{command}.", Shell.debug?
-      Shell.notify("Definition of #{ali}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-      self
-    end
-   
-    def self.unalias_command(ali)
-      ali = ali.id2name if ali.kind_of?(Symbol)
-      @alias_map.delete ali.intern
-      undef_system_command(ali)
-    end
-   
-    #
-    # CommandProcessor.def_builtin_commands(delegation_class, command_specs)
-    #	  delegation_class: Class or Module
-    #	  command_specs: [[command_name, [argument,...]],...]
-    #	     command_name: String
-    #	     arguments:	   String
-    #		FILENAME?? -> expand_path(filename??)
-    #		*FILENAME?? -> filename??.collect{|f|expand_path(f)}.join(", ")
-    #	define command_name(argument,...) as
-    #	    delegation_class.command_name(argument,...)
-    #
-    def self.def_builtin_commands(delegation_class, command_specs)
-      for meth, args in command_specs
-	arg_str = args.collect{|arg| arg.downcase}.join(", ")
-	call_arg_str = args.collect{
-	  |arg|
-	  case arg
-	  when /^(FILENAME.*)$/
-	    format("expand_path(%s)", $1.downcase)
-	  when /^(\*FILENAME.*)$/
-	    # \*FILENAME* -> filenames.collect{|fn| expand_path(fn)}.join(", ")
-	    $1.downcase + '.collect{|fn| expand_path(fn)}'
-	  else
-	    arg
-	  end
-	}.join(", ")
-	d = %Q[def #{meth}(#{arg_str})
-		    #{delegation_class}.#{meth}(#{call_arg_str})
-		 end]
-	Shell.notify "Define #{meth}(#{arg_str})", Shell.debug?
-	Shell.notify("Definition of #{meth}: ", d, 
-	     Shell.debug.kind_of?(Integer) && Shell.debug > 1)
-	eval d
-      end
-    end
-
-    #
-    # CommandProcessor.install_system_commands(pre)
-    #	    pre: String - command name prefix
-    # defines every command which belongs in default_system_path via
-    # CommandProcessor.command().  It doesn't define already defined
-    # methods twice.  By default, "pre_" is prefixes to each method
-    # name.  Characters that may not be used in a method name are
-    # all converted to '_'.  Definition errors are just ignored.
-    #
-    def self.install_system_commands(pre = "sys_")
-      defined_meth = {}
-      for m in Shell.methods
-	defined_meth[m] = true
-      end
-      sh = Shell.new
-      for path in Shell.default_system_path
-	next unless sh.directory? path
-	sh.cd path
-	sh.foreach do
-	  |cn|
-	  if !defined_meth[pre + cn] && sh.file?(cn) && sh.executable?(cn)
-	    command = (pre + cn).gsub(/\W/, "_").sub(/^([0-9])/, '_\1')
-	    begin
-	      def_system_command(command, sh.expand_path(cn))
-	    rescue
-	      Shell.notify "warn: Can't define #{command} path: #{cn}"
-	    end
-	    defined_meth[command] = command
-	  end
-	end
-      end
-    end
-
-    #----------------------------------------------------------------------
-    #
-    #  class initializing methods  - 
-    #
-    #----------------------------------------------------------------------
-    def self.add_delegate_command_to_shell(id)
-      id = id.intern if id.kind_of?(String)
-      name = id.id2name
-      if Shell.method_defined?(id)
-	Shell.notify "warn: override definnition of Shell##{name}."
-	Shell.notify "warn: alias Shell##{name} to Shell##{name}_org.\n"
-	Shell.module_eval "alias #{name}_org #{name}"
-      end
-      Shell.notify "method added: Shell##{name}.", Shell.debug?
-      Shell.module_eval(%Q[def #{name}(*args, &block)
-			    begin
-			      @command_processor.__send__(:#{name}, *args, &block)
-			    rescue Exception
-			      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	                      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-			    raise
-			    end
-                          end], __FILE__, __LINE__)
-
-      if Shell::Filter.method_defined?(id)
-	Shell.notify "warn: override definnition of Shell::Filter##{name}."
-	Shell.notify "warn: alias Shell##{name} to Shell::Filter##{name}_org."
-	Filter.module_eval "alias #{name}_org #{name}"
-      end
-      Shell.notify "method added: Shell::Filter##{name}.", Shell.debug?
-      Filter.module_eval(%Q[def #{name}(*args, &block)
-			    begin
-			      self | @shell.__send__(:#{name}, *args, &block)
-			    rescue Exception
-			      $@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
-	                      $@.delete_if{|s| /^\\(eval\\):/ =~ s}
-			    raise
-			    end
-                          end], __FILE__, __LINE__)
-    end
-
-    #
-    # define default builtin commands
-    #
-    def self.install_builtin_commands
-      # method related File.
-      #	(exclude open/foreach/unlink)
-      normal_delegation_file_methods = [
-	["atime", ["FILENAME"]],
-	["basename", ["fn", "*opts"]],
-	["chmod", ["mode", "*FILENAMES"]], 
-	["chown", ["owner", "group", "*FILENAME"]],
-	["ctime", ["FILENAMES"]],
-	["delete", ["*FILENAMES"]],
-	["dirname", ["FILENAME"]],
-	["ftype", ["FILENAME"]],
-	["join", ["*items"]],
-	["link", ["FILENAME_O", "FILENAME_N"]],
-	["lstat", ["FILENAME"]],
-	["mtime", ["FILENAME"]],
-	["readlink", ["FILENAME"]],
-	["rename", ["FILENAME_FROM", "FILENAME_TO"]],
-	#      ["size", ["FILENAME"]],
-	["split", ["pathname"]],
-	["stat", ["FILENAME"]],
-	["symlink", ["FILENAME_O", "FILENAME_N"]],
-	["truncate", ["FILENAME", "length"]],
-	["utime", ["atime", "mtime", "*FILENAMES"]]]
-
-      def_builtin_commands(File, normal_delegation_file_methods)
-      alias_method :rm, :delete
-
-      # method related FileTest
-      def_builtin_commands(FileTest, 
-		   FileTest.singleton_methods(false).collect{|m| [m, ["FILENAME"]]})
-
-      # method related ftools
-      normal_delegation_ftools_methods = [
-	["syscopy", ["FILENAME_FROM", "FILENAME_TO"]],
-	["copy", ["FILENAME_FROM", "FILENAME_TO"]],
-	["move", ["FILENAME_FROM", "FILENAME_TO"]],
-	["compare", ["FILENAME_FROM", "FILENAME_TO"]],
-	["safe_unlink", ["*FILENAMES"]],
-	["makedirs", ["*FILENAMES"]],
-	#    ["chmod", ["mode", "*FILENAMES"]],
-	["install", ["FILENAME_FROM", "FILENAME_TO", "mode"]],
-      ]
-      def_builtin_commands(File,
-		   normal_delegation_ftools_methods)
-      alias_method :cmp, :compare
-      alias_method :mv, :move
-      alias_method :cp, :copy
-      alias_method :rm_f, :safe_unlink
-      alias_method :mkpath, :makedirs
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/error.rb
deleted file mode 100644
index 959f926..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/error.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-#   shell/error.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "e2mmap"
-
-class Shell
-  module Error
-    extend Exception2MessageMapper
-    def_e2message TypeError, "wrong argument type %s (expected %s)"
-
-    def_exception :DirStackEmpty, "Directory stack empty."
-    def_exception :CantDefine, "Can't define method(%s, %s)."
-    def_exception :CantApplyMethod, "This method(%s) does not apply to this type(%s)."
-    def_exception :CommandNotFound, "Command not found(%s)."
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/filter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/filter.rb
deleted file mode 100644
index 1d2c0b9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/filter.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-#   shell/filter.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-class Shell
-  #
-  # Filter
-  # A method to require
-  #    each()
-  #
-  class Filter
-    include Enumerable
-
-    def initialize(sh)
-      @shell = sh	  # parent shell
-      @input = nil	  # input filter
-    end
-
-    attr_reader :input
-
-    def input=(filter)
-      @input = filter
-    end
-    
-    def each(rs = nil)
-      rs = @shell.record_separator unless rs
-      if @input
-	@input.each(rs){|l| yield l}
-      end
-    end
-
-    def < (src)
-      case src
-      when String
-	cat = Cat.new(@shell, src)
-	cat | self
-      when IO
-	self.input = src
-	self
-      else
-	Shell.Fail Error::CantApplyMethod, "<", to.class
-      end
-    end
-
-    def > (to)
-      case to
-      when String
-	dst = @shell.open(to, "w")
-	begin
-	  each(){|l| dst << l}
-	ensure
-	  dst.close
-	end
-      when IO
-	each(){|l| to << l}
-      else
-	Shell.Fail Error::CantApplyMethod, ">", to.class
-      end
-      self
-    end
-
-    def >> (to)
-      begin
-	Shell.cd(@shell.pwd).append(to, self)
-      rescue CantApplyMethod
-	Shell.Fail Error::CantApplyMethod, ">>", to.class
-      end
-    end
-
-    def | (filter)
-      filter.input = self
-      if active?
-	@shell.process_controller.start_job filter
-      end
-      filter
-    end
-
-    def + (filter)
-      Join.new(@shell, self, filter)
-    end
-
-    def to_a
-      ary = []
-      each(){|l| ary.push l}
-      ary
-    end
-
-    def to_s
-      str = ""
-      each(){|l| str.concat l}
-      str
-    end
-
-    def inspect
-      if @shell.debug.kind_of?(Integer) && @shell.debug > 2
-	super
-      else
-	to_s
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/process-controller.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/process-controller.rb
deleted file mode 100644
index 0ae975c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/process-controller.rb
+++ /dev/null
@@ -1,260 +0,0 @@
-#
-#   shell/process-controller.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 12008 $
-#   	$Date: 2007-03-06 19:12:12 +0900 (Tue, 06 Mar 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "mutex_m"
-require "monitor"
-require "sync"
-
-class Shell
-  class ProcessController
-
-    @ProcessControllers = {}
-    @ProcessControllers.extend Mutex_m
-
-    class<<self
-
-      def process_controllers_exclusive
-	begin
-	  @ProcessControllers.lock unless Thread.critical 
-	  yield
-	ensure
-	  @ProcessControllers.unlock unless Thread.critical 
-	end
-      end
-
-      def activate(pc)
-	process_controllers_exclusive do
-	  @ProcessControllers[pc] ||= 0
-	  @ProcessControllers[pc] += 1
-	end
-      end
-
-      def inactivate(pc)
-	process_controllers_exclusive do
-	  if @ProcessControllers[pc]
-	    if (@ProcessControllers[pc] -= 1) == 0
-	      @ProcessControllers.delete(pc)
-	    end
-	  end
-	end
-      end
-
-      def each_active_object
-	process_controllers_exclusive do
-	  for ref in @ProcessControllers.keys
-	    yield ref
-	  end
-	end
-      end
-    end
-
-    def initialize(shell)
-      @shell = shell
-      @waiting_jobs = []
-      @active_jobs = []
-      @jobs_sync = Sync.new
-
-      @job_monitor = Mutex.new
-      @job_condition = ConditionVariable.new
-    end
-
-    def jobs
-      jobs = []
-      @jobs_sync.synchronize(:SH) do
-	jobs.concat @waiting_jobs
-	jobs.concat @active_jobs
-      end
-      jobs
-    end
-
-    def active_jobs
-      @active_jobs
-    end
-
-    def waiting_jobs
-      @waiting_jobs
-    end
-    
-    def jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.empty? or @waiting_jobs.empty?
-      end
-    end
-
-    def active_jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.empty?
-      end
-    end
-
-    def waiting_jobs_exist?
-      @jobs_sync.synchronize(:SH) do
-	@waiting_jobs.empty?
-      end
-    end
-
-    # schedule a command
-    def add_schedule(command)
-      @jobs_sync.synchronize(:EX) do
-	ProcessController.activate(self)
-	if @active_jobs.empty?
-	  start_job command
-	else
-	  @waiting_jobs.push(command)
-	end
-      end
-    end
-
-    # start a job
-    def start_job(command = nil)
-      @jobs_sync.synchronize(:EX) do
-	if command
-	  return if command.active?
-	  @waiting_jobs.delete command
-	else
-	  command = @waiting_jobs.shift
-	  return unless command
-	end
-	@active_jobs.push command
-	command.start
-
-	# start all jobs that input from the job
-	for job in @waiting_jobs
-	  start_job(job) if job.input == command
-	end
-      end
-    end
-
-    def waiting_job?(job)
-      @jobs_sync.synchronize(:SH) do
-	@waiting_jobs.include?(job)
-      end
-    end
-
-    def active_job?(job)
-      @jobs_sync.synchronize(:SH) do
-	@active_jobs.include?(job)
-      end
-    end
-
-    # terminate a job
-    def terminate_job(command)
-      @jobs_sync.synchronize(:EX) do
-	@active_jobs.delete command
-	ProcessController.inactivate(self)
-	if @active_jobs.empty?
-	  start_job
-	end
-      end
-    end
-
-    # kill a job
-    def kill_job(sig, command)
-      @jobs_sync.synchronize(:SH) do
-	if @waiting_jobs.delete command
-	  ProcessController.inactivate(self)
-	  return
-	elsif @active_jobs.include?(command)
-	  begin
-	    r = command.kill(sig)
-	    ProcessController.inactivate(self)
-	  rescue
-	    print "Shell: Warn: $!\n" if @shell.verbose?
-	    return nil
-	  end
-	  @active_jobs.delete command
-	  r
-	end
-      end
-    end
-
-    # wait for all jobs to terminate
-    def wait_all_jobs_execution
-      @job_monitor.synchronize do
-	begin
-	  while !jobs.empty?
-	    @job_condition.wait(@job_monitor)
-	  end
-	ensure
-	  redo unless jobs.empty?
-	end
-      end
-    end
-
-    # simple fork
-    def sfork(command, &block)
-      pipe_me_in, pipe_peer_out = IO.pipe
-      pipe_peer_in, pipe_me_out = IO.pipe
-      Thread.critical = true
-
-      STDOUT.flush
-      ProcessController.each_active_object do |pc|
-	for jobs in pc.active_jobs
-	  jobs.flush
-	end
-      end
-      
-      pid = fork {
-	Thread.critical = true
-
-	Thread.list.each do |th| 
-	  th.kill unless [Thread.main, Thread.current].include?(th)
-	end
-
-	STDIN.reopen(pipe_peer_in)
-	STDOUT.reopen(pipe_peer_out)
-
-	ObjectSpace.each_object(IO) do |io| 
-	  if ![STDIN, STDOUT, STDERR].include?(io)
-	    io.close unless io.closed?
-	  end
-	end
-	yield
-      }
-
-      pipe_peer_in.close
-      pipe_peer_out.close
-      command.notify "job(%name:##{pid}) start", @shell.debug?
-      Thread.critical = false
-
-      th = Thread.start {
-	Thread.critical = true
-	begin
-	  _pid = nil
-	  command.notify("job(%id) start to waiting finish.", @shell.debug?)
-	  Thread.critical = false
-	  _pid = Process.waitpid(pid, nil)
-	rescue Errno::ECHILD
-	  command.notify "warn: job(%id) was done already waitipd."
-	  _pid = true
-	ensure
-	  # when the process ends, wait until the command termintes
-	  if _pid
-	  else
-	    command.notify("notice: Process finishing...",
-			   "wait for Job[%id] to finish.",
-			   "You can use Shell#transact or Shell#check_point for more safe execution.")
-	    redo
-	  end
-	  Thread.exclusive do
-	    @job_monitor.synchronize do 
-	      terminate_job(command)
-	      @job_condition.signal
-	      command.notify "job(%id) finish.", @shell.debug?
-	    end
-	  end
-	end
-      }
-      return pid, pipe_me_in, pipe_me_out
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/system-command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/system-command.rb
deleted file mode 100644
index 997d549..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/system-command.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-#
-#   shell/system-command.rb - 
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-require "shell/filter"
-
-class Shell
-  class SystemCommand < Filter
-    def initialize(sh, command, *opts)
-      if t = opts.find{|opt| !opt.kind_of?(String) && opt.class}
-	Shell.Fail Error::TypeError, t.class, "String"
-      end
-      super(sh)
-      @command = command
-      @opts = opts
-      
-      @input_queue = Queue.new
-      @pid = nil
-
-      sh.process_controller.add_schedule(self)
-    end
-
-    attr_reader :command
-    alias name command
-
-    def wait?
-      @shell.process_controller.waiting_job?(self)
-    end
-
-    def active?
-      @shell.process_controller.active_job?(self)
-    end
-
-    def input=(inp)
-      super
-      if active?
-	start_export
-      end
-    end
-
-    def start
-      @pid, @pipe_in, @pipe_out = @shell.process_controller.sfork(self) {
-	Dir.chdir @shell.pwd
-	exec(@command, *@opts)
-      }
-      if @input
-	start_export
-      end
-      start_import
-    end
-
-    def flush
-      @pipe_out.flush if @pipe_out and !@pipe_out.closed?
-    end
-
-    def terminate
-      begin
-	@pipe_in.close
-      rescue IOError
-      end
-      begin
-	@pipe_out.close
-      rescue IOError
-      end
-    end
-
-    def kill(sig)
-      if @pid
-	Process.kill(sig, @pid)
-      end
-    end
-
-
-    def start_import
-#      Thread.critical = true
-      notify "Job(%id) start imp-pipe.", @shell.debug?
-      rs = @shell.record_separator unless rs
-      _eop = true
-#      Thread.critical = false
-      th = Thread.start {
-	Thread.critical = true
-	begin
-	  Thread.critical = false
-	  while l = @pipe_in.gets
-	    @input_queue.push l
-	  end
-	  _eop = false
-	rescue Errno::EPIPE
-	  _eop = false
-	ensure
-	  if _eop
-	    notify("warn: Process finishing...",
-		   "wait for Job[%id] to finish pipe importing.",
-		   "You can use Shell#transact or Shell#check_point for more safe execution.")
-#	    Tracer.on
-	    Thread.current.run
-	    redo
-	  end
-	  Thread.exclusive do
-	    notify "job(%id}) close imp-pipe.", @shell.debug?
-	    @input_queue.push :EOF
-	    @pipe_in.close
-	  end
-	end
-      }
-    end
-
-    def start_export
-      notify "job(%id) start exp-pipe.", @shell.debug?
-      _eop = true
-      th = Thread.start{
-	Thread.critical = true
-	begin
-	  Thread.critical = false
-	  @input.each{|l| @pipe_out.print l}
-	  _eop = false
-	rescue Errno::EPIPE
-	  _eop = false
-	ensure
-	  if _eop
-	    notify("shell: warn: Process finishing...",
-		   "wait for Job(%id) to finish pipe exporting.",
-		   "You can use Shell#transact or Shell#check_point for more safe execution.")
-#	    Tracer.on
-	    redo
-	  end
-	  Thread.exclusive do
-	    notify "job(%id) close exp-pipe.", @shell.debug?
-	    @pipe_out.close
-	  end
-	end
-      }
-    end
-
-    alias super_each each
-    def each(rs = nil)
-      while (l = @input_queue.pop) != :EOF
-	yield l
-      end
-    end
-
-    # ex)
-    #    if you wish to output: 
-    #	    "shell: job(#{@command}:#{@pid}) close pipe-out."
-    #	 then 
-    #	    mes: "job(%id) close pipe-out."
-    #    yorn: Boolean(@shell.debug? or @shell.verbose?)
-    def notify(*opts, &block)
-      Thread.exclusive do
-	@shell.notify(*opts) {|mes|
-	  yield mes if iterator?
-
-	  mes.gsub!("%id", "#{@command}:##{@pid}")
-	  mes.gsub!("%name", "#{@command}")
-	  mes.gsub!("%pid", "#{@pid}")
-	}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/version.rb
deleted file mode 100644
index 09c216f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shell/version.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#   version.rb - shell version definition file
-#   	$Release Version: 0.6.0$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
-#
-# --
-#
-#   
-#
-
-class Shell
-  @RELEASE_VERSION = "0.6.0"
-  @LAST_UPDATE_DATE = "01/03/19"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shellwords.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shellwords.rb
deleted file mode 100644
index e87b9e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/shellwords.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# shellwords.rb: Split text into an array of tokens a la UNIX shell
-#
-
-#
-# This module is originally a port of shellwords.pl, but modified to
-# conform to POSIX / SUSv3 (IEEE Std 1003.1-2001).
-#
-# Examples:
-#
-#   require 'shellwords'
-#   words = Shellwords.shellwords(line)
-#
-# or
-#
-#   require 'shellwords'
-#   include Shellwords
-#   words = shellwords(line)
-#
-module Shellwords
-
-  #
-  # Split text into an array of tokens in the same way the UNIX Bourne
-  # shell does.
-  #
-  # See the +Shellwords+ module documentation for an example.
-  #
-  def shellwords(line)
-    line = String.new(line) rescue
-      raise(ArgumentError, "Argument must be a string")
-    line.lstrip!
-    words = []
-    until line.empty?
-      field = ''
-      loop do
-	if line.sub!(/\A"(([^"\\]|\\.)*)"/, '') then
-	  snippet = $1.gsub(/\\(.)/, '\1')
-	elsif line =~ /\A"/ then
-	  raise ArgumentError, "Unmatched double quote: #{line}"
-	elsif line.sub!(/\A'([^']*)'/, '') then
-	  snippet = $1
-	elsif line =~ /\A'/ then
-	  raise ArgumentError, "Unmatched single quote: #{line}"
-	elsif line.sub!(/\A\\(.)?/, '') then
-	  snippet = $1 || '\\'
-	elsif line.sub!(/\A([^\s\\'"]+)/, '') then
-	  snippet = $1
-	else
-	  line.lstrip!
-	  break
-	end
-	field.concat(snippet)
-      end
-      words.push(field)
-    end
-    words
-  end
-
-  module_function :shellwords
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/singleton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/singleton.rb
deleted file mode 100644
index 31fb950..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/singleton.rb
+++ /dev/null
@@ -1,359 +0,0 @@
-# The Singleton module implements the Singleton pattern.
-#
-# Usage:
-#    class Klass
-#       include Singleton
-#       # ...
-#    end
-#
-# *  this ensures that only one instance of Klass lets call it
-#    ``the instance'' can be created.
-#
-#    a,b  = Klass.instance, Klass.instance
-#    a == b   # => true
-#    a.new    #  NoMethodError - new is private ...
-#
-# *  ``The instance'' is created at instantiation time, in other
-#    words the first call of Klass.instance(), thus
-#
-#      class OtherKlass
-#        include Singleton
-#        # ...
-#      end
-#      ObjectSpace.each_object(OtherKlass){} # => 0.
-#
-# *  This behavior is preserved under inheritance and cloning.
-#
-#
-#
-# This is achieved by marking
-# *  Klass.new and Klass.allocate - as private
-#
-# Providing (or modifying) the class methods
-# *  Klass.inherited(sub_klass) and Klass.clone()  - 
-#    to ensure that the Singleton pattern is properly
-#    inherited and cloned.
-#
-# *  Klass.instance()  -  returning ``the instance''. After a
-#    successful self modifying (normally the first) call the
-#    method body is a simple:
-#
-#       def Klass.instance()
-#         return @__instance__
-#       end
-#
-# *  Klass._load(str)  -  calling Klass.instance()
-#
-# *  Klass._instantiate?()  -  returning ``the instance'' or
-#    nil. This hook method puts a second (or nth) thread calling
-#    Klass.instance() on a waiting loop. The return value
-#    signifies the successful completion or premature termination
-#    of the first, or more generally, current "instantiation thread".
-#
-#
-# The instance method of Singleton are
-# * clone and dup - raising TypeErrors to prevent cloning or duping
-#
-# *  _dump(depth) - returning the empty string.  Marshalling strips
-#    by default all state information, e.g. instance variables and
-#    taint state, from ``the instance''.  Providing custom _load(str)
-#    and _dump(depth) hooks allows the (partially) resurrections of
-#    a previous state of ``the instance''.
-
-
-
-module Singleton
-  #  disable build-in copying methods
-  def clone
-    raise TypeError, "can't clone instance of singleton #{self.class}"
-  end
-  def dup
-    raise TypeError, "can't dup instance of singleton #{self.class}"
-  end
-
-  #  default marshalling strategy
-  def _dump(depth=-1) 
-    ''
-  end
-end
-
-
-class << Singleton
-  #  Method body of first instance call.
-  FirstInstanceCall = proc do
-    #  @__instance__ takes on one of the following values
-    #  * nil     -  before and after a failed creation
-    #  * false  -  during creation
-    #  * sub_class instance  -  after a successful creation
-    #  the form makes up for the lack of returns in progs
-    Thread.critical = true
-    if  @__instance__.nil?
-      @__instance__  = false
-      Thread.critical = false
-      begin
-        @__instance__ = new
-      ensure
-        if @__instance__
-          class <<self
-            remove_method :instance
-            def instance; @__instance__ end
-          end
-        else
-          @__instance__ = nil #  failed instance creation
-        end
-      end
-    elsif  _instantiate?()
-      Thread.critical = false    
-    else
-      @__instance__  = false
-      Thread.critical = false
-      begin
-        @__instance__ = new
-      ensure
-        if @__instance__
-          class <<self
-            remove_method :instance
-            def instance; @__instance__ end
-          end
-        else
-          @__instance__ = nil
-        end
-      end
-    end
-    @__instance__
-  end
-  
-  module SingletonClassMethods  
-    # properly clone the Singleton pattern - did you know
-    # that duping doesn't copy class methods?  
-    def clone
-      Singleton.__init__(super)
-    end
-    
-    private
-    
-    #  ensure that the Singleton pattern is properly inherited   
-    def inherited(sub_klass)
-      super
-      Singleton.__init__(sub_klass)
-    end
-    
-    def _load(str) 
-      instance 
-    end
-    
-    # waiting-loop hook
-    def _instantiate?()
-      while false.equal?(@__instance__)
-        Thread.critical = false
-        sleep(0.08)   # timeout
-        Thread.critical = true
-      end
-      @__instance__
-    end
-  end
-  
-  def __init__(klass)
-    klass.instance_eval { @__instance__ = nil }
-    class << klass
-      define_method(:instance,FirstInstanceCall)
-    end
-    klass
-  end
-  
-  private
-  #  extending an object with Singleton is a bad idea
-  undef_method :extend_object
-  
-  def append_features(mod)
-    #  help out people counting on transitive mixins
-    unless mod.instance_of?(Class)
-      raise TypeError, "Inclusion of the OO-Singleton module in module #{mod}"
-    end
-    super
-  end
-  
-  def included(klass)
-    super
-    klass.private_class_method  :new, :allocate
-    klass.extend SingletonClassMethods
-    Singleton.__init__(klass)
-  end
-end
- 
-
-
-if __FILE__ == $0
-
-def num_of_instances(klass)
-    "#{ObjectSpace.each_object(klass){}} #{klass} instance(s)"
-end 
-
-# The basic and most important example.
-
-class SomeSingletonClass
-  include Singleton
-end
-puts "There are #{num_of_instances(SomeSingletonClass)}" 
-
-a = SomeSingletonClass.instance
-b = SomeSingletonClass.instance # a and b are same object
-puts "basic test is #{a == b}"
-
-begin
-  SomeSingletonClass.new
-rescue  NoMethodError => mes
-  puts mes
-end
-
-
-
-puts "\nThreaded example with exception and customized #_instantiate?() hook"; p
-Thread.abort_on_exception = false
-
-class Ups < SomeSingletonClass
-  def initialize
-    self.class.__sleep
-    puts "initialize called by thread ##{Thread.current[:i]}"
-  end
-end
-  
-class << Ups
-  def _instantiate?
-    @enter.push Thread.current[:i]
-    while false.equal?(@__instance__)
-      Thread.critical = false
-      sleep 0.08 
-      Thread.critical = true
-    end
-    @leave.push Thread.current[:i]
-    @__instance__
-  end
-  
-  def __sleep
-    sleep(rand(0.08))
-  end
-  
-  def new
-    begin
-      __sleep
-      raise  "boom - thread ##{Thread.current[:i]} failed to create instance"
-    ensure
-      # simple flip-flop
-      class << self
-        remove_method :new
-      end
-    end
-  end
-  
-  def instantiate_all
-    @enter = []
-    @leave = []
-    1.upto(9) {|i|  
-      Thread.new { 
-        begin
-          Thread.current[:i] = i
-          __sleep
-          instance
-        rescue RuntimeError => mes
-          puts mes
-        end
-      }
-    }
-    puts "Before there were #{num_of_instances(self)}"
-    sleep 3
-    puts "Now there is #{num_of_instances(self)}"
-    puts "#{@enter.join '; '} was the order of threads entering the waiting loop"
-    puts "#{@leave.join '; '} was the order of threads leaving the waiting loop"
-  end
-end
-
-
-Ups.instantiate_all
-# results in message like
-# Before there were 0 Ups instance(s)
-# boom - thread #6 failed to create instance
-# initialize called by thread #3
-# Now there is 1 Ups instance(s)
-# 3; 2; 1; 8; 4; 7; 5 was the order of threads entering the waiting loop
-# 3; 2; 1; 7; 4; 8; 5 was the order of threads leaving the waiting loop
-
-
-puts "\nLets see if class level cloning really works"
-Yup = Ups.clone
-def Yup.new
-  begin
-    __sleep
-    raise  "boom - thread ##{Thread.current[:i]} failed to create instance"
-  ensure
-    # simple flip-flop
-    class << self
-      remove_method :new
-    end
-  end
-end
-Yup.instantiate_all
-
-
-puts "\n\n","Customized marshalling"
-class A
-  include Singleton
-  attr_accessor :persist, :die
-  def _dump(depth)
-    # this strips the @die information from the instance
-    Marshal.dump(@persist,depth)
-  end
-end
-
-def A._load(str)
-  instance.persist = Marshal.load(str)
-  instance
-end
-
-a = A.instance
-a.persist = ["persist"]
-a.die = "die"
-a.taint
-
-stored_state = Marshal.dump(a)
-# change state
-a.persist = nil
-a.die = nil
-b = Marshal.load(stored_state)
-p a == b  #  => true
-p a.persist  #  => ["persist"]
-p a.die      #  => nil
-
-
-puts "\n\nSingleton with overridden default #inherited() hook"
-class Up
-end
-def Up.inherited(sub_klass)
-  puts "#{sub_klass} subclasses #{self}"
-end
-
-
-class Middle < Up
-  include Singleton
-end
-
-class Down < Middle; end
-
-puts  "and basic \"Down test\" is #{Down.instance == Down.instance}\n
-Various exceptions"  
-
-begin
-  module AModule
-    include Singleton
-  end
-rescue TypeError => mes
-  puts mes  #=> Inclusion of the OO-Singleton module in module AModule
-end
-
-begin
-  'aString'.extend Singleton
-rescue NoMethodError => mes
-  puts mes  #=> undefined method `extend_object' for Singleton:Module
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/attachment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/attachment.rb
deleted file mode 100644
index 1a59b14..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/attachment.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-# soap/attachment.rb: SOAP4R - SwA implementation.
-# Copyright (C) 2002, 2003  Jamie Herre and NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping'
-
-
-module SOAP
-
-
-class SOAPAttachment < SOAPExternalReference
-  attr_reader :data
-
-  def initialize(value)
-    super()
-    @data = value
-  end
-
-private
-
-  def external_contentid
-    @data.contentid
-  end
-end
-
-
-class Attachment
-  attr_reader :io
-  attr_accessor :contenttype
-
-  def initialize(string_or_readable = nil)
-    @string_or_readable = string_or_readable
-    @contenttype = "application/octet-stream"
-    @contentid = nil
-  end
-
-  def contentid
-    @contentid ||= Attachment.contentid(self)
-  end
-
-  def contentid=(contentid)
-    @contentid = contentid
-  end
-
-  def mime_contentid
-    '<' + contentid + '>'
-  end
-
-  def content
-    if @content == nil and @string_or_readable != nil
-      @content = @string_or_readable.respond_to?(:read) ?
-	@string_or_readable.read : @string_or_readable
-    end
-    @content
-  end
-
-  def to_s
-    content
-  end
-
-  def write(out)
-    out.write(content)
-  end
-
-  def save(filename)
-    File.open(filename, "wb") do |f|
-      write(f)
-    end
-  end
-
-  def self.contentid(obj)
-    # this needs to be fixed
-    [obj.__id__.to_s, Process.pid.to_s].join('.')
-  end
-
-  def self.mime_contentid(obj)
-    '<' + contentid(obj) + '>'
-  end
-end
-
-
-module Mapping
-  class AttachmentFactory < SOAP::Mapping::Factory
-    def obj2soap(soap_class, obj, info, map)
-      soap_obj = soap_class.new(obj)
-      mark_marshalled_obj(obj, soap_obj)
-      soap_obj
-    end
-
-    def soap2obj(obj_class, node, info, map)
-      obj = node.data
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    end
-  end
-
-  DefaultRegistry.add(::SOAP::Attachment, ::SOAP::SOAPAttachment,
-    AttachmentFactory.new, nil)
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/baseData.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/baseData.rb
deleted file mode 100644
index 0e8b00d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/baseData.rb
+++ /dev/null
@@ -1,942 +0,0 @@
-# soap/baseData.rb: SOAP4R - Base type library
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'soap/soap'
-
-
-module SOAP
-
-
-###
-## Mix-in module for SOAP base type classes.
-#
-module SOAPModuleUtils
-  include SOAP
-
-public
-
-  def decode(elename)
-    d = self.new
-    d.elename = elename
-    d
-  end
-end
-
-
-###
-## for SOAP type(base and compound)
-#
-module SOAPType
-  attr_accessor :encodingstyle
-  attr_accessor :elename
-  attr_accessor :id
-  attr_reader :precedents
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :position
-  attr_reader :extraattr
-  attr_accessor :definedtype
-
-  def initialize(*arg)
-    super
-    @encodingstyle = nil
-    @elename = XSD::QName::EMPTY
-    @id = nil
-    @precedents = []
-    @root = false
-    @parent = nil
-    @position = nil
-    @definedtype = nil
-    @extraattr = {}
-  end
-
-  def inspect
-    if self.is_a?(XSD::NSDBase)
-      sprintf("#<%s:0x%x %s %s>", self.class.name, __id__, self.elename, self.type)
-    else
-      sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename)
-    end
-  end
-
-  def rootnode
-    node = self
-    while node = node.parent
-      break if SOAPEnvelope === node
-    end
-    node
-  end
-end
-
-
-###
-## for SOAP base type
-#
-module SOAPBasetype
-  include SOAPType
-  include SOAP
-
-  def initialize(*arg)
-    super
-  end
-end
-
-
-###
-## for SOAP compound type
-#
-module SOAPCompoundtype
-  include SOAPType
-  include SOAP
-
-  def initialize(*arg)
-    super
-  end
-end
-
-
-###
-## Convenience datatypes.
-#
-class SOAPReference < XSD::NSDBase
-  include SOAPBasetype
-  extend SOAPModuleUtils
-
-public
-
-  attr_accessor :refid
-
-  # Override the definition in SOAPBasetype.
-  def initialize(obj = nil)
-    super()
-    @type = XSD::QName::EMPTY
-    @refid = nil
-    @obj = nil
-    __setobj__(obj) if obj
-  end
-
-  def __getobj__
-    @obj
-  end
-
-  def __setobj__(obj)
-    @obj = obj
-    @refid = @obj.id || SOAPReference.create_refid(@obj)
-    @obj.id = @refid unless @obj.id
-    @obj.precedents << self
-    # Copies NSDBase information
-    @obj.type = @type unless @obj.type
-  end
-
-  # Why don't I use delegate.rb?
-  # -> delegate requires target object type at initialize time.
-  # Why don't I use forwardable.rb?
-  # -> forwardable requires a list of forwarding methods.
-  #
-  # ToDo: Maybe I should use forwardable.rb and give it a methods list like
-  # delegate.rb...
-  #
-  def method_missing(msg_id, *params)
-    if @obj
-      @obj.send(msg_id, *params)
-    else
-      nil
-    end
-  end
-
-  def refidstr
-    '#' + @refid
-  end
-
-  def self.create_refid(obj)
-    'id' + obj.__id__.to_s
-  end
-
-  def self.decode(elename, refidstr)
-    if /\A#(.*)\z/ =~ refidstr
-      refid = $1
-    elsif /\Acid:(.*)\z/ =~ refidstr
-      refid = $1
-    else
-      raise ArgumentError.new("illegal refid #{refidstr}")
-    end
-    d = super(elename)
-    d.refid = refid
-    d
-  end
-end
-
-
-class SOAPExternalReference < XSD::NSDBase
-  include SOAPBasetype
-  extend SOAPModuleUtils
-
-  def initialize
-    super()
-    @type = XSD::QName::EMPTY
-  end
-
-  def referred
-    rootnode.external_content[external_contentid] = self
-  end
-
-  def refidstr
-    'cid:' + external_contentid
-  end
-
-private
-
-  def external_contentid
-    raise NotImplementedError.new
-  end
-end
-
-
-class SOAPNil < XSD::XSDNil
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-# SOAPRawString is for sending raw string.  In contrast to SOAPString,
-# SOAP4R does not do XML encoding and does not convert its CES.  The string it
-# holds is embedded to XML instance directly as a 'xsd:string'.
-class SOAPRawString < XSD::XSDString
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-###
-## Basic datatypes.
-#
-class SOAPAnySimpleType < XSD::XSDAnySimpleType
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPString < XSD::XSDString
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPBoolean < XSD::XSDBoolean
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDecimal < XSD::XSDDecimal
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPFloat < XSD::XSDFloat
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDouble < XSD::XSDDouble
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDuration < XSD::XSDDuration
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDateTime < XSD::XSDDateTime
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPTime < XSD::XSDTime
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPDate < XSD::XSDDate
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGYearMonth < XSD::XSDGYearMonth
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGYear < XSD::XSDGYear
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGMonthDay < XSD::XSDGMonthDay
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGDay < XSD::XSDGDay
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPGMonth < XSD::XSDGMonth
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPHexBinary < XSD::XSDHexBinary
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPBase64 < XSD::XSDBase64Binary
-  include SOAPBasetype
-  extend SOAPModuleUtils
-  Type = QName.new(EncodingNamespace, Base64Literal)
-
-public
-  # Override the definition in SOAPBasetype.
-  def initialize(value = nil)
-    super(value)
-    @type = Type
-  end
-
-  def as_xsd
-    @type = XSD::XSDBase64Binary::Type
-  end
-end
-
-class SOAPAnyURI < XSD::XSDAnyURI
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPQName < XSD::XSDQName
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-class SOAPInteger < XSD::XSDInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNonPositiveInteger < XSD::XSDNonPositiveInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNegativeInteger < XSD::XSDNegativeInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPLong < XSD::XSDLong
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPInt < XSD::XSDInt
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPShort < XSD::XSDShort
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPByte < XSD::XSDByte
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPNonNegativeInteger < XSD::XSDNonNegativeInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedLong < XSD::XSDUnsignedLong
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedInt < XSD::XSDUnsignedInt
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedShort < XSD::XSDUnsignedShort
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPUnsignedByte < XSD::XSDUnsignedByte
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-class SOAPPositiveInteger < XSD::XSDPositiveInteger
-  include SOAPBasetype
-  extend SOAPModuleUtils
-end
-
-
-###
-## Compound datatypes.
-#
-class SOAPStruct < XSD::NSDBase
-  include SOAPCompoundtype
-  include Enumerable
-
-public
-
-  def initialize(type = nil)
-    super()
-    @type = type || XSD::QName::EMPTY
-    @array = []
-    @data = []
-  end
-
-  def to_s()
-    str = ''
-    self.each do |key, data|
-      str << "#{key}: #{data}\n"
-    end
-    str
-  end
-
-  def add(name, value)
-    add_member(name, value)
-  end
-
-  def [](idx)
-    if idx.is_a?(Range)
-      @data[idx]
-    elsif idx.is_a?(Integer)
-      if (idx > @array.size)
-        raise ArrayIndexOutOfBoundsError.new('In ' << @type.name)
-      end
-      @data[idx]
-    else
-      if @array.include?(idx)
-	@data[@array.index(idx)]
-      else
-	nil
-      end
-    end
-  end
-
-  def []=(idx, data)
-    if @array.include?(idx)
-      data.parent = self if data.respond_to?(:parent=)
-      @data[@array.index(idx)] = data
-    else
-      add(idx, data)
-    end
-  end
-
-  def key?(name)
-    @array.include?(name)
-  end
-
-  def members
-    @array
-  end
-
-  def to_obj
-    hash = {}
-    proptype = {}
-    each do |k, v|
-      value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
-      case proptype[k]
-      when :single
-        hash[k] = [hash[k], value]
-        proptype[k] = :multi
-      when :multi
-        hash[k] << value
-      else
-        hash[k] = value
-        proptype[k] = :single
-      end
-    end
-    hash
-  end
-
-  def each
-    idx = 0
-    while idx < @array.length
-      yield(@array[idx], @data[idx])
-      idx += 1
-    end
-  end
-
-  def replace
-    members.each do |member|
-      self[member] = yield(self[member])
-    end
-  end
-
-  def self.decode(elename, type)
-    s = SOAPStruct.new(type)
-    s.elename = elename
-    s
-  end
-
-private
-
-  def add_member(name, value = nil)
-    value = SOAPNil.new() if value.nil?
-    @array.push(name)
-    value.elename = value.elename.dup_name(name)
-    @data.push(value)
-    value.parent = self if value.respond_to?(:parent=)
-    value
-  end
-end
-
-
-# SOAPElement is not typed so it is not derived from NSDBase.
-class SOAPElement
-  include Enumerable
-
-  attr_accessor :encodingstyle
-
-  attr_accessor :elename
-  attr_accessor :id
-  attr_reader :precedents
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :position
-  attr_accessor :extraattr
-
-  attr_accessor :qualified
-
-  def initialize(elename, text = nil)
-    if !elename.is_a?(XSD::QName)
-      elename = XSD::QName.new(nil, elename)
-    end
-    @encodingstyle = LiteralNamespace
-    @elename = elename
-    @id = nil
-    @precedents = []
-    @root = false
-    @parent = nil
-    @position = nil
-    @extraattr = {}
-
-    @qualified = nil
-
-    @array = []
-    @data = []
-    @text = text
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename)
-  end
-
-  # Text interface.
-  attr_accessor :text
-  alias data text
-
-  # Element interfaces.
-  def add(value)
-    add_member(value.elename.name, value)
-  end
-
-  def [](idx)
-    if @array.include?(idx)
-      @data[@array.index(idx)]
-    else
-      nil
-    end
-  end
-
-  def []=(idx, data)
-    if @array.include?(idx)
-      data.parent = self if data.respond_to?(:parent=)
-      @data[@array.index(idx)] = data
-    else
-      add(data)
-    end
-  end
-
-  def key?(name)
-    @array.include?(name)
-  end
-
-  def members
-    @array
-  end
-
-  def to_obj
-    if members.empty?
-      @text
-    else
-      hash = {}
-      proptype = {}
-      each do |k, v|
-        value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
-        case proptype[k]
-        when :single
-          hash[k] = [hash[k], value]
-          proptype[k] = :multi
-        when :multi
-          hash[k] << value
-        else
-          hash[k] = value
-          proptype[k] = :single
-        end
-      end
-      hash
-    end
-  end
-
-  def each
-    idx = 0
-    while idx < @array.length
-      yield(@array[idx], @data[idx])
-      idx += 1
-    end
-  end
-
-  def self.decode(elename)
-    o = SOAPElement.new(elename)
-    o
-  end
-
-  def self.from_obj(obj, namespace = nil)
-    o = SOAPElement.new(nil)
-    case obj
-    when nil
-      o.text = nil
-    when Hash
-      obj.each do |elename, value|
-        if value.is_a?(Array)
-          value.each do |subvalue|
-            child = from_obj(subvalue, namespace)
-            child.elename = to_elename(elename, namespace)
-            o.add(child)
-          end
-        else
-          child = from_obj(value, namespace)
-          child.elename = to_elename(elename, namespace)
-          o.add(child)
-        end
-      end
-    else
-      o.text = obj.to_s
-    end
-    o
-  end
-
-  def self.to_elename(obj, namespace = nil)
-    if obj.is_a?(XSD::QName)
-      obj
-    elsif /\A(.+):([^:]+)\z/ =~ obj.to_s
-      XSD::QName.new($1, $2)
-    else
-      XSD::QName.new(namespace, obj.to_s)
-    end
-  end
-
-private
-
-  def add_member(name, value)
-    add_accessor(name)
-    @array.push(name)
-    @data.push(value)
-    value.parent = self if value.respond_to?(:parent=)
-    value
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def add_accessor(name)
-      methodname = name
-      if self.respond_to?(methodname)
-        methodname = safe_accessor_name(methodname)
-      end
-      Mapping.define_singleton_method(self, methodname) do
-        @data[@array.index(name)]
-      end
-      Mapping.define_singleton_method(self, methodname + '=') do |value|
-        @data[@array.index(name)] = value
-      end
-    end
-  else
-    def add_accessor(name)
-      methodname = safe_accessor_name(name)
-      instance_eval <<-EOS
-        def #{methodname}
-          @data[@array.index(#{name.dump})]
-        end
-
-        def #{methodname}=(value)
-          @data[@array.index(#{name.dump})] = value
-        end
-      EOS
-    end
-  end
-
-  def safe_accessor_name(name)
-    "var_" << name.gsub(/[^a-zA-Z0-9_]/, '')
-  end
-end
-
-
-class SOAPArray < XSD::NSDBase
-  include SOAPCompoundtype
-  include Enumerable
-
-public
-
-  attr_accessor :sparse
-
-  attr_reader :offset, :rank
-  attr_accessor :size, :size_fixed
-  attr_reader :arytype
-
-  def initialize(type = nil, rank = 1, arytype = nil)
-    super()
-    @type = type || ValueArrayName
-    @rank = rank
-    @data = Array.new
-    @sparse = false
-    @offset = Array.new(rank, 0)
-    @size = Array.new(rank, 0)
-    @size_fixed = false
-    @position = nil
-    @arytype = arytype
-  end
-
-  def offset=(var)
-    @offset = var
-    @sparse = true
-  end
-
-  def add(value)
-    self[*(@offset)] = value
-  end
-
-  def [](*idxary)
-    if idxary.size != @rank
-      raise ArgumentError.new("given #{idxary.size} params does not match rank: #{@rank}")
-    end
-
-    retrieve(idxary)
-  end
-
-  def []=(*idxary)
-    value = idxary.slice!(-1)
-
-    if idxary.size != @rank
-      raise ArgumentError.new("given #{idxary.size} params(#{idxary})" +
-        " does not match rank: #{@rank}")
-    end
-
-    idx = 0
-    while idx < idxary.size
-      if idxary[idx] + 1 > @size[idx]
-	@size[idx] = idxary[idx] + 1
-      end
-      idx += 1
-    end
-
-    data = retrieve(idxary[0, idxary.size - 1])
-    data[idxary.last] = value
-
-    if value.is_a?(SOAPType)
-      value.elename = ITEM_NAME
-      # Sync type
-      unless @type.name
-	@type = XSD::QName.new(value.type.namespace,
-	  SOAPArray.create_arytype(value.type.name, @rank))
-      end
-      value.type ||= @type
-    end
-
-    @offset = idxary
-    value.parent = self if value.respond_to?(:parent=)
-    offsetnext
-  end
-
-  def each
-    @data.each do |data|
-      yield(data)
-    end
-  end
-
-  def to_a
-    @data.dup
-  end
-
-  def replace
-    @data = deep_map(@data) do |ele|
-      yield(ele)
-    end
-  end
-
-  def deep_map(ary, &block)
-    ary.collect do |ele|
-      if ele.is_a?(Array)
-	deep_map(ele, &block)
-      else
-	new_obj = block.call(ele)
-	new_obj.elename = ITEM_NAME
-	new_obj
-      end
-    end
-  end
-
-  def include?(var)
-    traverse_data(@data) do |v, *rank|
-      if v.is_a?(SOAPBasetype) && v.data == var
-	return true
-      end
-    end
-    false
-  end
-
-  def traverse
-    traverse_data(@data) do |v, *rank|
-      unless @sparse
-       yield(v)
-      else
-       yield(v, *rank) if v && !v.is_a?(SOAPNil)
-      end
-    end
-  end
-
-  def soap2array(ary)
-    traverse_data(@data) do |v, *position|
-      iteary = ary
-      rank = 1
-      while rank < position.size
-	idx = position[rank - 1]
-	if iteary[idx].nil?
-	  iteary = iteary[idx] = Array.new
-	else
-	  iteary = iteary[idx]
-	end
-        rank += 1
-      end
-      if block_given?
-	iteary[position.last] = yield(v)
-      else
-	iteary[position.last] = v
-      end
-    end
-  end
-
-  def position
-    @position
-  end
-
-private
-
-  ITEM_NAME = XSD::QName.new(nil, 'item')
-
-  def retrieve(idxary)
-    data = @data
-    rank = 1
-    while rank <= idxary.size
-      idx = idxary[rank - 1]
-      if data[idx].nil?
-	data = data[idx] = Array.new
-      else
-	data = data[idx]
-      end
-      rank += 1
-    end
-    data
-  end
-
-  def traverse_data(data, rank = 1)
-    idx = 0
-    while idx < ranksize(rank)
-      if rank < @rank
-	traverse_data(data[idx], rank + 1) do |*v|
-	  v[1, 0] = idx
-       	  yield(*v)
-	end
-      else
-	yield(data[idx], idx)
-      end
-      idx += 1
-    end
-  end
-
-  def ranksize(rank)
-    @size[rank - 1]
-  end
-
-  def offsetnext
-    move = false
-    idx = @offset.size - 1
-    while !move && idx >= 0
-      @offset[idx] += 1
-      if @size_fixed
-	if @offset[idx] < @size[idx]
-	  move = true
-	else
-	  @offset[idx] = 0
-	  idx -= 1
-	end
-      else
-	move = true
-      end
-    end
-  end
-
-  # Module function
-
-public
-
-  def self.decode(elename, type, arytype)
-    typestr, nofary = parse_type(arytype.name)
-    rank = nofary.count(',') + 1
-    plain_arytype = XSD::QName.new(arytype.namespace, typestr)
-    o = SOAPArray.new(type, rank, plain_arytype)
-    size = []
-    nofary.split(',').each do |s|
-      if s.empty?
-	size.clear
-	break
-      else
-	size << s.to_i
-      end
-    end
-    unless size.empty?
-      o.size = size
-      o.size_fixed = true
-    end
-    o.elename = elename
-    o
-  end
-
-private
-
-  def self.create_arytype(typename, rank)
-    "#{typename}[" << ',' * (rank - 1) << ']'
-  end
-
-  TypeParseRegexp = Regexp.new('^(.+)\[([\d,]*)\]$')
-
-  def self.parse_type(string)
-    TypeParseRegexp =~ string
-    return $1, $2
-  end
-end
-
-
-require 'soap/mapping/typeMap'
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/element.rb
deleted file mode 100644
index cc58b5d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/element.rb
+++ /dev/null
@@ -1,258 +0,0 @@
-# SOAP4R - SOAP elements library
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'soap/baseData'
-
-
-module SOAP
-
-
-###
-## SOAP elements
-#
-module SOAPEnvelopeElement; end
-
-class SOAPFault < SOAPStruct
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-public
-
-  def faultcode
-    self['faultcode']
-  end
-
-  def faultstring
-    self['faultstring']
-  end
-
-  def faultactor
-    self['faultactor']
-  end
-
-  def detail
-    self['detail']
-  end
-
-  def faultcode=(rhs)
-    self['faultcode'] = rhs
-  end
-
-  def faultstring=(rhs)
-    self['faultstring'] = rhs
-  end
-
-  def faultactor=(rhs)
-    self['faultactor'] = rhs
-  end
-
-  def detail=(rhs)
-    self['detail'] = rhs
-  end
-
-  def initialize(faultcode = nil, faultstring = nil, faultactor = nil, detail = nil)
-    super(EleFaultName)
-    @elename = EleFaultName
-    @encodingstyle = EncodingNamespace
-
-    if faultcode
-      self.faultcode = faultcode
-      self.faultstring = faultstring
-      self.faultactor = faultactor
-      self.detail = detail
-      self.faultcode.elename = EleFaultCodeName if self.faultcode
-      self.faultstring.elename = EleFaultStringName if self.faultstring
-      self.faultactor.elename = EleFaultActorName if self.faultactor
-      self.detail.elename = EleFaultDetailName if self.detail
-    end
-    faultcode.parent = self if faultcode
-    faultstring.parent = self if faultstring
-    faultactor.parent = self if faultactor
-    detail.parent = self if detail
-  end
-
-  def encode(generator, ns, attrs = {})
-    SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace)
-    SOAPGenerator.assign_ns(attrs, ns, EncodingNamespace)
-    attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    yield(self.faultcode)
-    yield(self.faultstring)
-    yield(self.faultactor)
-    yield(self.detail) if self.detail
-    generator.encode_tag_end(name, true)
-  end
-end
-
-
-class SOAPBody < SOAPStruct
-  include SOAPEnvelopeElement
-
-  def initialize(data = nil, is_fault = false)
-    super(nil)
-    @elename = EleBodyName
-    @encodingstyle = nil
-    if data
-      if data.respond_to?(:elename)
-        add(data.elename.name, data)
-      else
-        data.to_a.each do |datum|
-          add(datum.elename.name, datum)
-        end
-      end
-    end
-    @is_fault = is_fault
-  end
-
-  def encode(generator, ns, attrs = {})
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    if @is_fault
-      yield(@data)
-    else
-      @data.each do |data|
-	yield(data)
-      end
-    end
-    generator.encode_tag_end(name, true)
-  end
-
-  def root_node
-    @data.each do |node|
-      if node.root == 1
-	return node
-      end
-    end
-    # No specified root...
-    @data.each do |node|
-      if node.root != 0
-	return node
-      end
-    end
-
-    raise Parser::FormatDecodeError.new('no root element')
-  end
-end
-
-
-class SOAPHeaderItem < XSD::NSDBase
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-public
-
-  attr_accessor :element
-  attr_accessor :mustunderstand
-  attr_accessor :encodingstyle
-
-  def initialize(element, mustunderstand = true, encodingstyle = nil)
-    super()
-    @type = nil
-    @element = element
-    @mustunderstand = mustunderstand
-    @encodingstyle = encodingstyle
-    element.parent = self if element
-  end
-
-  def encode(generator, ns, attrs = {})
-    attrs.each do |key, value|
-      @element.extraattr[key] = value
-    end
-    @element.extraattr[ns.name(AttrMustUnderstandName)] =
-      (@mustunderstand ? '1' : '0')
-    if @encodingstyle
-      @element.extraattr[ns.name(AttrEncodingStyleName)] = @encodingstyle
-    end
-    @element.encodingstyle = @encodingstyle if !@element.encodingstyle
-    yield(@element)
-  end
-end
-
-
-class SOAPHeader < SOAPStruct
-  include SOAPEnvelopeElement
-
-  def initialize
-    super(nil)
-    @elename = EleHeaderName
-    @encodingstyle = nil
-  end
-
-  def encode(generator, ns, attrs = {})
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-    @data.each do |data|
-      yield(data)
-    end
-    generator.encode_tag_end(name, true)
-  end
-
-  def add(name, value)
-    mu = (value.extraattr[AttrMustUnderstandName] == '1')
-    encstyle = value.extraattr[AttrEncodingStyleName]
-    item = SOAPHeaderItem.new(value, mu, encstyle)
-    super(name, item)
-  end
-
-  def length
-    @data.length
-  end
-  alias size length
-end
-
-
-class SOAPEnvelope < XSD::NSDBase
-  include SOAPEnvelopeElement
-  include SOAPCompoundtype
-
-  attr_reader :header
-  attr_reader :body
-  attr_reader :external_content
-
-  def initialize(header = nil, body = nil)
-    super()
-    @type = nil
-    @elename = EleEnvelopeName
-    @encodingstyle = nil
-    @header = header
-    @body = body
-    @external_content = {}
-    header.parent = self if header
-    body.parent = self if body
-  end
-
-  def header=(header)
-    header.parent = self
-    @header = header
-  end
-
-  def body=(body)
-    body.parent = self
-    @body = body
-  end
-
-  def encode(generator, ns, attrs = {})
-    SOAPGenerator.assign_ns(attrs, ns, elename.namespace, SOAPNamespaceTag)
-    name = ns.name(@elename)
-    generator.encode_tag(name, attrs)
-
-    yield(@header) if @header and @header.length > 0
-    yield(@body)
-
-    generator.encode_tag_end(name, true)
-  end
-
-  def to_ary
-    [header, body]
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb
deleted file mode 100644
index fd7e0fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/aspDotNetHandler.rb
+++ /dev/null
@@ -1,213 +0,0 @@
-# SOAP4R - ASP.NET EncodingStyle handler library
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class ASPDotNetHandler < Handler
-  Namespace = 'http://tempuri.org/ASP.NET'
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @textbuf = ''
-    @decode_typemap = nil
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = {}
-    # ASPDotNetHandler is intended to be used for accessing an ASP.NET doc/lit
-    # service as an rpc/encoded service.  in the situation, local elements
-    # should be qualified.  propagate parent's namespace to children.
-    if data.elename.namespace.nil?
-      data.elename.namespace = parent.elename.namespace
-    end
-    name = generator.encode_name(ns, data, attrs)
-    case data
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      generator.encode_string(@charset ?
-        XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = nil
-        generator.encode_child(ns, child, data)
-      end
-    else
-      raise EncodingStyleError.new(
-        "unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = data.is_a?(SOAPCompoundtype)
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-
-    def initialize
-      @parent = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    def initialize(handler, elename)
-      super()
-      @handler = handler
-      @elename = elename
-    end
-
-    def as_struct
-      o = SOAPStruct.decode(@elename, XSD::AnyTypeName)
-      o.parent = @parent
-      o.type.name = @name
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.parent = @parent
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.parent = @parent
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    o = SOAPUnknown.new(self, elename)
-    o.parent = parent
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = o.as_string
-#	if /\A\s*\z/ =~ @textbuf
-#	  o.as_struct
-#	else
-#	  o.as_string
-#	end
-      node.replace_node(newnode)
-      o = node.node
-    end
-
-    decode_textbuf(o)
-    @textbuf = ''
-  end
-
-  def decode_text(ns, text)
-    # @textbuf is set at decode_tag_end.
-    @textbuf << text
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-
-  def decode_parent(parent, node)
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_struct
-      node.parent = newparent
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-
-    when SOAPStruct
-      data = parent.node[node.elename.name]
-      case data
-      when nil
-	parent.node.add(node.elename.name, node)
-      when SOAPArray
-	name, type_ns = node.elename.name, node.type.namespace
-	data.add(node)
-	node.elename, node.type.namespace = name, type_ns
-      else
-	parent.node[node.elename.name] = SOAPArray.new
-	name, type_ns = data.elename.name, data.type.namespace
-	parent.node[node.elename.name].add(data)
-	data.elename.name, data.type.namespace = name, type_ns
-	name, type_ns = node.elename.name, node.type.namespace
-	parent.node[node.elename.name].add(node)
-	node.elename.name, node.type.namespace = name, type_ns
-      end
-
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-
-    when SOAPBasetype
-      raise EncodingStyleError.new("SOAP base type must not have a child")
-
-    else
-      # SOAPUnknown does not have parent.
-      # raise EncodingStyleError.new("illegal parent: #{parent}")
-    end
-  end
-
-private
-
-  def decode_textbuf(node)
-    if node.is_a?(XSD::XSDString)
-      if @charset
-	node.set(XSD::Charset.encoding_from_xml(@textbuf, @charset))
-      else
-	node.set(@textbuf)
-      end
-    else
-      # Nothing to do...
-    end
-  end
-end
-
-ASPDotNetHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/handler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/handler.rb
deleted file mode 100644
index c015417..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/handler.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-# SOAP4R - EncodingStyle handler library
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/element'
-
-
-module SOAP
-module EncodingStyle
-
-
-class Handler
-  @@handlers = {}
-
-  class EncodingStyleError < Error; end
-
-  class << self
-    def uri
-      self::Namespace
-    end
-
-    def handler(uri)
-      @@handlers[uri]
-    end
-
-    def each
-      @@handlers.each do |key, value|
-	yield(value)
-      end
-    end
-
-  private
-
-    def add_handler
-      @@handlers[self.uri] = self
-    end
-  end
-
-  attr_reader :charset
-  attr_accessor :generate_explicit_type
-  def decode_typemap=(definedtypes)
-    @decode_typemap = definedtypes
-  end
-
-  def initialize(charset)
-    @charset = charset
-    @generate_explicit_type = true
-    @decode_typemap = nil
-  end
-
-  ###
-  ## encode interface.
-  #
-  # Returns a XML instance as a string.
-  def encode_data(generator, ns, data, parent)
-    raise NotImplementError
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    raise NotImplementError
-  end
-
-  def encode_prologue
-  end
-
-  def encode_epilogue
-  end
-
-  ###
-  ## decode interface.
-  #
-  # Returns SOAP/OM data.
-  def decode_tag(ns, name, attrs, parent)
-    raise NotImplementError.new('Method decode_tag must be defined in derived class.')
-  end
-
-  def decode_tag_end(ns, name)
-    raise NotImplementError.new('Method decode_tag_end must be defined in derived class.')
-  end
-
-  def decode_text(ns, text)
-    raise NotImplementError.new('Method decode_text must be defined in derived class.')
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/literalHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/literalHandler.rb
deleted file mode 100644
index 59c7205..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/literalHandler.rb
+++ /dev/null
@@ -1,226 +0,0 @@
-# SOAP4R - XML Literal EncodingStyle handler library
-# Copyright (C) 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class LiteralHandler < Handler
-  Namespace = SOAP::LiteralNamespace
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @textbuf = ''
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = {}
-    name = generator.encode_name(ns, data, attrs)
-    data.extraattr.each do |k, v|
-      # ToDo: check generator.attributeformdefault here
-      if k.is_a?(XSD::QName)
-        if k.namespace
-          SOAPGenerator.assign_ns(attrs, ns, k.namespace)
-          k = ns.name(k)
-        else
-          k = k.name
-        end
-      end
-      attrs[k] = v
-    end
-    case data
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      str = data.to_s
-      str = XSD::Charset.encoding_to_xml(str, @charset) if @charset
-      generator.encode_string(str)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = nil
-        generator.encode_child(ns, child, data)
-      end
-    when SOAPElement
-      # passes 2 times for simplifying namespace definition
-      data.each do |key, value|
-        if value.elename.namespace
-          SOAPGenerator.assign_ns(attrs, ns, value.elename.namespace)
-        end
-      end
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.text) if data.text
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    else
-      raise EncodingStyleError.new(
-        "unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = (data.is_a?(SOAPCompoundtype) or
-      (data.is_a?(SOAPElement) and !data.text))
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-
-    def initialize
-      @parent = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    def initialize(handler, elename, extraattr)
-      super()
-      @handler = handler
-      @elename = elename
-      @extraattr = extraattr
-    end
-
-    def as_element
-      o = SOAPElement.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.parent = @parent
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    o = SOAPUnknown.new(self, elename, decode_attrs(ns, attrs))
-    o.parent = parent
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = if /\A\s*\z/ =~ @textbuf
-	  o.as_element
-	else
-	  o.as_string
-	end
-      node.replace_node(newnode)
-      o = node.node
-    end
-
-    decode_textbuf(o)
-    @textbuf = ''
-  end
-
-  def decode_text(ns, text)
-    # @textbuf is set at decode_tag_end.
-    @textbuf << text
-  end
-
-  def decode_attrs(ns, attrs)
-    extraattr = {}
-    attrs.each do |key, value|
-      qname = ns.parse_local(key)
-      extraattr[qname] = value
-    end
-    extraattr
-  end
-
-  def decode_prologue
-  end
-
-  def decode_epilogue
-  end
-
-  def decode_parent(parent, node)
-    return unless parent.node
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_element
-      node.parent = newparent
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-    when SOAPElement
-      parent.node.add(node)
-      node.parent = parent.node
-    when SOAPStruct
-      parent.node.add(node.elename.name, node)
-      node.parent = parent.node
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-      node.parent = parent.node
-    else
-      raise EncodingStyleError.new("illegal parent: #{parent.node}")
-    end
-  end
-
-private
-
-  def decode_textbuf(node)
-    if node.is_a?(XSD::XSDString)
-      if @charset
-	node.set(XSD::Charset.encoding_from_xml(@textbuf, @charset))
-      else
-	node.set(@textbuf)
-      end
-    else
-      # Nothing to do...
-    end
-  end
-end
-
-LiteralHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb
deleted file mode 100644
index a522392..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb
+++ /dev/null
@@ -1,582 +0,0 @@
-# SOAP4R - SOAP EncodingStyle handler library
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-module EncodingStyle
-
-
-class SOAPHandler < Handler
-  Namespace = SOAP::EncodingNamespace
-  add_handler
-
-  def initialize(charset = nil)
-    super(charset)
-    @refpool = []
-    @idpool = []
-    @textbuf = ''
-    @is_first_top_ele = true
-  end
-
-
-  ###
-  ## encode interface.
-  #
-  def encode_data(generator, ns, data, parent)
-    attrs = encode_attrs(generator, ns, data, parent)
-    if parent && parent.is_a?(SOAPArray) && parent.position
-      attrs[ns.name(AttrPositionName)] = "[#{parent.position.join(',')}]"
-    end
-    name = generator.encode_name(ns, data, attrs)
-    case data
-    when SOAPReference
-      attrs['href'] = data.refidstr
-      generator.encode_tag(name, attrs)
-    when SOAPExternalReference
-      data.referred
-      attrs['href'] = data.refidstr
-      generator.encode_tag(name, attrs)
-    when SOAPRawString
-      generator.encode_tag(name, attrs)
-      generator.encode_rawstring(data.to_s)
-    when XSD::XSDString
-      generator.encode_tag(name, attrs)
-      generator.encode_string(@charset ?
-	XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
-    when XSD::XSDAnySimpleType
-      generator.encode_tag(name, attrs)
-      generator.encode_string(data.to_s)
-    when SOAPStruct
-      generator.encode_tag(name, attrs)
-      data.each do |key, value|
-        generator.encode_child(ns, value, data)
-      end
-    when SOAPArray
-      generator.encode_tag(name, attrs)
-      data.traverse do |child, *rank|
-	data.position = data.sparse ? rank : nil
-        generator.encode_child(ns, child, data)
-      end
-    else
-      raise EncodingStyleError.new(
-	"unknown object:#{data} in this encodingStyle")
-    end
-  end
-
-  def encode_data_end(generator, ns, data, parent)
-    name = generator.encode_name_end(ns, data)
-    cr = data.is_a?(SOAPCompoundtype)
-    generator.encode_tag_end(name, cr)
-  end
-
-
-  ###
-  ## decode interface.
-  #
-  class SOAPTemporalObject
-    attr_accessor :parent
-    attr_accessor :position
-    attr_accessor :id
-    attr_accessor :root
-
-    def initialize
-      @parent = nil
-      @position = nil
-      @id = nil
-      @root = nil
-    end
-  end
-
-  class SOAPUnknown < SOAPTemporalObject
-    attr_reader :type
-    attr_accessor :definedtype
-    attr_reader :extraattr
-
-    def initialize(handler, elename, type, extraattr)
-      super()
-      @handler = handler
-      @elename = elename
-      @type = type
-      @extraattr = extraattr
-      @definedtype = nil
-    end
-
-    def as_struct
-      o = SOAPStruct.decode(@elename, @type)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_string
-      o = SOAPString.decode(@elename)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-
-    def as_nil
-      o = SOAPNil.decode(@elename)
-      o.id = @id
-      o.root = @root
-      o.parent = @parent
-      o.position = @position
-      o.extraattr.update(@extraattr)
-      @handler.decode_parent(@parent, o)
-      o
-    end
-  end
-
-  def decode_tag(ns, elename, attrs, parent)
-    @textbuf = ''
-    is_nil, type, arytype, root, offset, position, href, id, extraattr =
-      decode_attrs(ns, attrs)
-    o = nil
-    if is_nil
-      o = SOAPNil.decode(elename)
-    elsif href
-      o = SOAPReference.decode(elename, href)
-      @refpool << o
-    elsif @decode_typemap
-      o = decode_tag_by_wsdl(ns, elename, type, parent.node, arytype, extraattr)
-    else
-      o = decode_tag_by_type(ns, elename, type, parent.node, arytype, extraattr)
-    end
-
-    if o.is_a?(SOAPArray)
-      if offset
-	o.offset = decode_arypos(offset)
-	o.sparse = true
-      else
-	o.sparse = false
-      end
-    end
-
-    o.parent = parent
-    o.id = id
-    o.root = root
-    o.position = position
-
-    unless o.is_a?(SOAPTemporalObject)
-      @idpool << o if o.id
-      decode_parent(parent, o)
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    o = node.node
-    if o.is_a?(SOAPUnknown)
-      newnode = if /\A\s*\z/ =~ @textbuf
-	o.as_struct
-      else
-	o.as_string
-      end
-      if newnode.id
-	@idpool << newnode
-      end
-      node.replace_node(newnode)
-      o = node.node
-    end
-    decode_textbuf(o)
-    # unlink definedtype
-    o.definedtype = nil
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-
-  def decode_prologue
-    @refpool.clear
-    @idpool.clear
-    @is_first_top_ele = true
-  end
-
-  def decode_epilogue
-    decode_resolve_id
-  end
-
-  def decode_parent(parent, node)
-    return unless parent.node
-    case parent.node
-    when SOAPUnknown
-      newparent = parent.node.as_struct
-      node.parent = newparent
-      if newparent.id
-	@idpool << newparent
-      end
-      parent.replace_node(newparent)
-      decode_parent(parent, node)
-    when SOAPStruct
-      parent.node.add(node.elename.name, node)
-      node.parent = parent.node
-    when SOAPArray
-      if node.position
-	parent.node[*(decode_arypos(node.position))] = node
-	parent.node.sparse = true
-      else
-	parent.node.add(node)
-      end
-      node.parent = parent.node
-    else
-      raise EncodingStyleError.new("illegal parent: #{parent.node}")
-    end
-  end
-
-private
-
-  def content_ranksize(typename)
-    typename.scan(/\[[\d,]*\]$/)[0]
-  end
-
-  def content_typename(typename)
-    typename.sub(/\[,*\]$/, '')
-  end
-
-  def create_arytype(ns, data)
-    XSD::QName.new(data.arytype.namespace,
-      content_typename(data.arytype.name) + "[#{data.size.join(',')}]")
-  end
-
-  def encode_attrs(generator, ns, data, parent)
-    attrs = {}
-    return attrs if data.is_a?(SOAPReference)
-
-    if !parent || parent.encodingstyle != EncodingNamespace
-      if @generate_explicit_type
-        SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace)
-        attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
-      end
-      data.encodingstyle = EncodingNamespace
-    end
-
-    if data.is_a?(SOAPNil)
-      attrs[ns.name(XSD::AttrNilName)] = XSD::NilValue
-    elsif @generate_explicit_type
-      if data.type.namespace
-        SOAPGenerator.assign_ns(attrs, ns, data.type.namespace)
-      end
-      if data.is_a?(SOAPArray)
-	if data.arytype.namespace
-          SOAPGenerator.assign_ns(attrs, ns, data.arytype.namespace)
-   	end
-	SOAPGenerator.assign_ns(attrs, ns, EncodingNamespace)
-	attrs[ns.name(AttrArrayTypeName)] = ns.name(create_arytype(ns, data))
-	if data.type.name
-	  attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
-	end
-      elsif parent && parent.is_a?(SOAPArray) && (parent.arytype == data.type)
-	# No need to add.
-      elsif !data.type.namespace
-	# No need to add.
-      else
-	attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
-      end
-    end
-
-    data.extraattr.each do |key, value|
-      SOAPGenerator.assign_ns(attrs, ns, key.namespace)
-      attrs[ns.name(key)] = encode_attr_value(generator, ns, key, value)
-    end
-    if data.id
-      attrs['id'] = data.id
-    end
-    attrs
-  end
-
-  def encode_attr_value(generator, ns, qname, value)
-    if value.is_a?(SOAPType)
-      ref = SOAPReference.new(value)
-      generator.add_reftarget(qname.name, value)
-      ref.refidstr
-    else
-      value.to_s
-    end
-  end
-
-  def decode_tag_by_wsdl(ns, elename, typestr, parent, arytypestr, extraattr)
-    o = nil
-    if parent.class == SOAPBody
-      # root element: should branch by root attribute?
-      if @is_first_top_ele
-	# Unqualified name is allowed here.
-	@is_first_top_ele = false
-	type = @decode_typemap[elename] ||
-	  @decode_typemap.find_name(elename.name)
-	if type
-	  o = SOAPStruct.new(elename)
-	  o.definedtype = type
-	  return o
-	end
-      end
-      # multi-ref element.
-      if typestr
-	typename = ns.parse(typestr)
-	typedef = @decode_typemap[typename]
-	if typedef
-          return decode_definedtype(elename, typename, typedef, arytypestr)
-	end
-      end
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    if parent.type == XSD::AnyTypeName
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    # parent.definedtype == nil means the parent is SOAPUnknown.  SOAPUnknown
-    # is generated by decode_tag_by_type when its type is anyType.
-    parenttype = parent.definedtype || @decode_typemap[parent.type]
-    unless parenttype
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    definedtype_name = parenttype.child_type(elename)
-    if definedtype_name and (klass = TypeMap[definedtype_name])
-      return decode_basetype(klass, elename)
-    elsif definedtype_name == XSD::AnyTypeName
-      return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
-	extraattr)
-    end
-
-    if definedtype_name
-      typedef = @decode_typemap[definedtype_name]
-    else
-      typedef = parenttype.child_defined_complextype(elename)
-    end
-    decode_definedtype(elename, definedtype_name, typedef, arytypestr)
-  end
-
-  def decode_definedtype(elename, typename, typedef, arytypestr)
-    unless typedef
-      raise EncodingStyleError.new("unknown type '#{typename}'")
-    end
-    if typedef.is_a?(::WSDL::XMLSchema::SimpleType)
-      decode_defined_simpletype(elename, typename, typedef, arytypestr)
-    else
-      decode_defined_complextype(elename, typename, typedef, arytypestr)
-    end
-  end
-
-  def decode_basetype(klass, elename)
-    klass.decode(elename)
-  end
-
-  def decode_defined_simpletype(elename, typename, typedef, arytypestr)
-    o = decode_basetype(TypeMap[typedef.base], elename)
-    o.definedtype = typedef
-    o
-  end
-
-  def decode_defined_complextype(elename, typename, typedef, arytypestr)
-    case typedef.compoundtype
-    when :TYPE_STRUCT, :TYPE_MAP
-      o = SOAPStruct.decode(elename, typename)
-      o.definedtype = typedef
-      return o
-    when :TYPE_ARRAY
-      expected_arytype = typedef.find_arytype
-      if arytypestr
-	actual_arytype = XSD::QName.new(expected_arytype.namespace,
-	  content_typename(expected_arytype.name) <<
-	  content_ranksize(arytypestr))
-	o = SOAPArray.decode(elename, typename, actual_arytype)
-      else
-	o = SOAPArray.new(typename, 1, expected_arytype)
-	o.elename = elename
-      end
-      o.definedtype = typedef
-      return o
-    when :TYPE_EMPTY
-      o = SOAPNil.decode(elename)
-      o.definedtype = typedef
-      return o
-    else
-      raise RuntimeError.new(
-        "Unknown kind of complexType: #{typedef.compoundtype}")
-    end
-    nil
-  end
-
-  def decode_tag_by_type(ns, elename, typestr, parent, arytypestr, extraattr)
-    if arytypestr
-      type = typestr ? ns.parse(typestr) : ValueArrayName
-      node = SOAPArray.decode(elename, type, ns.parse(arytypestr))
-      node.extraattr.update(extraattr)
-      return node
-    end
-
-    type = nil
-    if typestr
-      type = ns.parse(typestr)
-    elsif parent.is_a?(SOAPArray)
-      type = parent.arytype
-    else
-      # Since it's in dynamic(without any type) encoding process,
-      # assumes entity as its type itself.
-      #   <SOAP-ENC:Array ...> => type Array in SOAP-ENC.
-      #   <Country xmlns="foo"> => type Country in foo.
-      type = elename
-    end
-
-    if (klass = TypeMap[type])
-      node = decode_basetype(klass, elename)
-      node.extraattr.update(extraattr)
-      return node
-    end
-
-    # Unknown type... Struct or String
-    SOAPUnknown.new(self, elename, type, extraattr)
-  end
-
-  def decode_textbuf(node)
-    case node
-    when XSD::XSDHexBinary, XSD::XSDBase64Binary
-      node.set_encoded(@textbuf)
-    when XSD::XSDString
-      if @charset
-	@textbuf = XSD::Charset.encoding_from_xml(@textbuf, @charset)
-      end
-      if node.definedtype
-        node.definedtype.check_lexical_format(@textbuf)
-      end
-      node.set(@textbuf)
-    when SOAPNil
-      # Nothing to do.
-    when SOAPBasetype
-      node.set(@textbuf)
-    else
-      # Nothing to do...
-    end
-    @textbuf = ''
-  end
-
-  NilLiteralMap = {
-    'true' => true,
-    '1' => true,
-    'false' => false,
-    '0' => false
-  }
-  RootLiteralMap = {
-    '1' => 1,
-    '0' => 0
-  }
-  def decode_attrs(ns, attrs)
-    is_nil = false
-    type = nil
-    arytype = nil
-    root = nil
-    offset = nil
-    position = nil
-    href = nil
-    id = nil
-    extraattr = {}
-
-    attrs.each do |key, value|
-      qname = ns.parse(key)
-      case qname.namespace
-      when XSD::InstanceNamespace
-        case qname.name
-        when XSD::NilLiteral
-          is_nil = NilLiteralMap[value] or
-            raise EncodingStyleError.new("cannot accept attribute value: #{value} as the value of xsi:#{XSD::NilLiteral} (expected 'true', 'false', '1', or '0')")
-          next
-        when XSD::AttrType
-          type = value
-          next
-        end
-      when EncodingNamespace
-        case qname.name
-        when AttrArrayType
-          arytype = value
-          next
-        when AttrRoot
-          root = RootLiteralMap[value] or
-            raise EncodingStyleError.new(
-	      "illegal root attribute value: #{value}")
-          next
-        when AttrOffset
-          offset = value
-          next
-        when AttrPosition
-          position = value
-          next
-        end
-      end
-      if key == 'href'
-        href = value
-        next
-      elsif key == 'id'
-        id = value
-        next
-      end
-      qname = ns.parse_local(key)
-      extraattr[qname] = decode_attr_value(ns, qname, value)
-    end
-
-    return is_nil, type, arytype, root, offset, position, href, id, extraattr
-  end
-
-  def decode_attr_value(ns, qname, value)
-    if /\A#/ =~ value
-      o = SOAPReference.decode(nil, value)
-      @refpool << o
-      o
-    else
-      value
-    end
-  end
-
-  def decode_arypos(position)
-    /^\[(.+)\]$/ =~ position
-    $1.split(',').collect { |s| s.to_i }
-  end
-
-  def decode_resolve_id
-    count = @refpool.length	# To avoid infinite loop
-    while !@refpool.empty? && count > 0
-      @refpool = @refpool.find_all { |ref|
-	o = @idpool.find { |item|
-	  item.id == ref.refid
-	}
-	if o.is_a?(SOAPReference)
-	  true	# link of link.
-	elsif o
-	  ref.__setobj__(o)
-	  false
-	elsif o = ref.rootnode.external_content[ref.refid]
-	  ref.__setobj__(o)
-      	  false
-	else
-	  raise EncodingStyleError.new("unresolved reference: #{ref.refid}")
-	end
-      }
-      count -= 1
-    end
-  end
-end
-
-SOAPHandler.new
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/generator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/generator.rb
deleted file mode 100644
index f179555..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/generator.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-# SOAP4R - SOAP XML Instance Generator library.
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/ns'
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-
-
-###
-## CAUTION: MT-unsafe
-#
-class SOAPGenerator
-  include SOAP
-
-  class FormatEncodeError < Error; end
-
-public
-
-  attr_accessor :charset
-  attr_accessor :default_encodingstyle
-  attr_accessor :generate_explicit_type
-  attr_accessor :use_numeric_character_reference
-
-  def initialize(opt = {})
-    @reftarget = nil
-    @handlers = {}
-    @charset = opt[:charset] || XSD::Charset.xml_encoding_label
-    @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace
-    @generate_explicit_type =
-      opt.key?(:generate_explicit_type) ? opt[:generate_explicit_type] : true
-    @elementformdefault = opt[:elementformdefault]
-    @attributeformdefault = opt[:attributeformdefault]
-    @use_numeric_character_reference = opt[:use_numeric_character_reference]
-    @indentstr = opt[:no_indent] ? '' : '  '
-    @buf = @indent = @curr = nil
-  end
-
-  def generate(obj, io = nil)
-    @buf = io || ''
-    @indent = ''
-
-    prologue
-    @handlers.each do |uri, handler|
-      handler.encode_prologue
-    end
-
-    ns = XSD::NS.new
-    @buf << xmldecl
-    encode_data(ns, obj, nil)
-
-    @handlers.each do |uri, handler|
-      handler.encode_epilogue
-    end
-    epilogue
-
-    @buf
-  end
-
-  def encode_data(ns, obj, parent)
-    if obj.is_a?(SOAPEnvelopeElement)
-      encode_element(ns, obj, parent)
-      return
-    end
-    if @reftarget && !obj.precedents.empty?
-      add_reftarget(obj.elename.name, obj)
-      ref = SOAPReference.new(obj)
-      ref.elename = ref.elename.dup_name(obj.elename.name)
-      obj.precedents.clear	# Avoid cyclic delay.
-      obj.encodingstyle = parent.encodingstyle
-      # SOAPReference is encoded here.
-      obj = ref
-    end
-    encodingstyle = obj.encodingstyle
-    # Children's encodingstyle is derived from its parent.
-    encodingstyle ||= parent.encodingstyle if parent
-    obj.encodingstyle = encodingstyle
-    handler = find_handler(encodingstyle || @default_encodingstyle)
-    unless handler
-      raise FormatEncodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-    if !obj.elename.name
-      raise FormatEncodeError.new("Element name not defined: #{ obj }.")
-    end
-    handler.encode_data(self, ns, obj, parent)
-    handler.encode_data_end(self, ns, obj, parent)
-  end
-
-  def add_reftarget(name, node)
-    unless @reftarget
-      raise FormatEncodeError.new("Reftarget is not defined.")
-    end
-    @reftarget.add(name, node)
-  end
-
-  def encode_child(ns, child, parent)
-    indent_backup, @indent = @indent, @indent + @indentstr
-    encode_data(ns.clone_ns, child, parent)
-    @indent = indent_backup
-  end
-
-  def encode_element(ns, obj, parent)
-    attrs = {}
-    if obj.is_a?(SOAPBody)
-      @reftarget = obj
-      obj.encode(self, ns, attrs) do |child|
-	indent_backup, @indent = @indent, @indent + @indentstr
-        encode_data(ns.clone_ns, child, obj)
-	@indent = indent_backup
-      end
-      @reftarget = nil
-    else
-      if obj.is_a?(SOAPEnvelope)
-        # xsi:nil="true" can appear even if dumping without explicit type.
-        SOAPGenerator.assign_ns(attrs, ns,
-	  XSD::InstanceNamespace, XSINamespaceTag)
-        if @generate_explicit_type
-          SOAPGenerator.assign_ns(attrs, ns, XSD::Namespace, XSDNamespaceTag)
-        end
-      end
-      obj.encode(self, ns, attrs) do |child|
-	indent_backup, @indent = @indent, @indent + @indentstr
-        encode_data(ns.clone_ns, child, obj)
-	@indent = indent_backup
-      end
-    end
-  end
-
-  def encode_name(ns, data, attrs)
-    if element_local?(data)
-      data.elename.name
-    else
-      if element_qualified?(data)
-        SOAPGenerator.assign_ns(attrs, ns, data.elename.namespace, '')
-      else
-        SOAPGenerator.assign_ns(attrs, ns, data.elename.namespace)
-      end
-      ns.name(data.elename)
-    end
-  end
-
-  def encode_name_end(ns, data)
-    if element_local?(data)
-      data.elename.name
-    else
-      ns.name(data.elename)
-    end
-  end
-
-  def encode_tag(elename, attrs = nil)
-    if !attrs or attrs.empty?
-      @buf << "\n#{ @indent }<#{ elename }>"
-    elsif attrs.size == 1
-      key, value = attrs.shift
-      @buf << %Q[\n#{ @indent }<#{ elename } #{ key }="#{ value }">]
-    else
-      @buf << "\n#{ @indent }<#{ elename } " <<
-        attrs.collect { |key, value|
-          %Q[#{ key }="#{ value }"]
-        }.join("\n#{ @indent }#{ @indentstr * 2 }") <<
-	'>'
-    end
-  end
-
-  def encode_tag_end(elename, cr = nil)
-    if cr
-      @buf << "\n#{ @indent }</#{ elename }>"
-    else
-      @buf << "</#{ elename }>"
-    end
-  end
-
-  def encode_rawstring(str)
-    @buf << str
-  end
-
-  EncodeMap = {
-    '&' => '&',
-    '<' => '<',
-    '>' => '>',
-    '"' => '"',
-    '\'' => ''',
-    "\r" => '&#xd;'
-  }
-  EncodeCharRegexp = Regexp.new("[#{EncodeMap.keys.join}]")
-  def encode_string(str)
-    if @use_numeric_character_reference and !XSD::Charset.is_us_ascii(str)
-      str.gsub!(EncodeCharRegexp) { |c| EncodeMap[c] }
-      @buf << str.unpack("U*").collect { |c|
-        if c == 0x9 or c == 0xa or c == 0xd or (c >= 0x20 and c <= 0x7f)
-          c.chr
-        else
-          sprintf("&#x%x;", c)
-        end
-      }.join
-    else
-      @buf << str.gsub(EncodeCharRegexp) { |c| EncodeMap[c] }
-    end
-  end
-
-  def element_local?(element)
-    element.elename.namespace.nil?
-  end
-
-  def element_qualified?(element)
-    if element.respond_to?(:qualified)
-      if element.qualified.nil?
-        @elementformdefault
-      else
-        element.qualified
-      end
-    else
-      @elementformdefault
-    end
-  end
-
-  def self.assign_ns(attrs, ns, namespace, tag = nil)
-    if namespace.nil?
-      raise FormatEncodeError.new("empty namespace")
-    end
-    unless ns.assigned?(namespace)
-      tag = ns.assign(namespace, tag)
-      if tag == ''
-        attr = 'xmlns'
-      else
-        attr = "xmlns:#{tag}"
-      end
-      attrs[attr] = namespace
-    end
-  end
-
-private
-
-  def prologue
-  end
-
-  def epilogue
-  end
-
-  def find_handler(encodingstyle)
-    unless @handlers.key?(encodingstyle)
-      handler = SOAP::EncodingStyle::Handler.handler(encodingstyle).new(@charset)
-      handler.generate_explicit_type = @generate_explicit_type
-      handler.encode_prologue
-      @handlers[encodingstyle] = handler
-    end
-    @handlers[encodingstyle]
-  end
-
-  def xmldecl
-    if @charset
-      %Q[<?xml version="1.0" encoding="#{ @charset }" ?>]
-    else
-      %Q[<?xml version="1.0" ?>]
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handler.rb
deleted file mode 100644
index 7da2836..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handler.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOAP4R - SOAP Header handler item
-# Copyright (C) 2003, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/element'
-
-
-module SOAP
-module Header
-
-
-class Handler
-  attr_reader :elename
-  attr_reader :mustunderstand
-  attr_reader :encodingstyle
-
-  def initialize(elename)
-    @elename = elename
-    @mustunderstand = false
-    @encodingstyle = nil
-  end
-
-  # Should return a SOAP/OM, a SOAPHeaderItem or nil.
-  def on_outbound
-    nil
-  end
-
-  # Given header is a SOAPHeaderItem or nil.
-  def on_inbound(header, mustunderstand = false)
-    # do something.
-  end
-
-  def on_outbound_headeritem
-    item = on_outbound
-    if item.nil?
-      nil
-    elsif item.is_a?(::SOAP::SOAPHeaderItem)
-      item.elename = @elename
-      item
-    else
-      item.elename = @elename
-      ::SOAP::SOAPHeaderItem.new(item, @mustunderstand, @encodingstyle)
-    end
-  end
-
-  def on_inbound_headeritem(header)
-    on_inbound(header.element, header.mustunderstand)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handlerset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handlerset.rb
deleted file mode 100644
index a8eee03..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/handlerset.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# SOAP4R - SOAP Header handler set
-# Copyright (C) 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/namedelements'
-
-
-module SOAP
-module Header
-
-
-class HandlerSet
-  def initialize
-    @store = XSD::NamedElements.new
-  end
-
-  def dup
-    obj = HandlerSet.new
-    obj.store = @store.dup
-    obj
-  end
-
-  def add(handler)
-    @store << handler
-  end
-  alias << add
-
-  def delete(handler)
-    @store.delete(handler)
-  end
-
-  def include?(handler)
-    @store.include?(handler)
-  end
-
-  # returns: Array of SOAPHeaderItem
-  def on_outbound
-    @store.collect { |handler|
-      handler.on_outbound_headeritem
-    }.compact
-  end
-
-  # headers: SOAPHeaderItem enumerable object
-  def on_inbound(headers)
-    headers.each do |name, item|
-      handler = @store.find { |handler|
-        handler.elename == item.element.elename
-      }
-      if handler
-        handler.on_inbound_headeritem(item)
-      elsif item.mustunderstand
-        raise UnhandledMustUnderstandHeaderError.new(item.element.elename.to_s)
-      end
-    end
-  end
-
-protected
-
-  def store=(store)
-    @store = store
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/simplehandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/simplehandler.rb
deleted file mode 100644
index 7b206f7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/header/simplehandler.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOAP4R - SOAP Simple header item handler
-# Copyright (C) 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/header/handler'
-require 'soap/baseData'
-
-
-module SOAP
-module Header
-
-
-class SimpleHandler < SOAP::Header::Handler
-  def initialize(elename)
-    super(elename)
-  end
-
-  # Should return a Hash, String or nil.
-  def on_simple_outbound
-    nil
-  end
-
-  # Given header is a Hash, String or nil.
-  def on_simple_inbound(header, mustunderstand)
-  end
-
-  def on_outbound
-    h = on_simple_outbound
-    h ? SOAPElement.from_obj(h, elename.namespace) : nil
-  end
-
-  def on_inbound(header, mustunderstand)
-    h = header.respond_to?(:to_obj) ? header.to_obj : header.data
-    on_simple_inbound(h, mustunderstand)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/httpconfigloader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/httpconfigloader.rb
deleted file mode 100644
index cd7bca8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/httpconfigloader.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOAP4R - HTTP config loader.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/property'
-
-
-module SOAP
-
-
-module HTTPConfigLoader
-module_function
-
-  def set_options(client, options)
-    client.proxy = options["proxy"]
-    options.add_hook("proxy") do |key, value|
-      client.proxy = value
-    end
-    client.no_proxy = options["no_proxy"]
-    options.add_hook("no_proxy") do |key, value|
-      client.no_proxy = value
-    end
-    if client.respond_to?(:protocol_version=)
-      client.protocol_version = options["protocol_version"]
-      options.add_hook("protocol_version") do |key, value|
-        client.protocol_version = value
-      end
-    end
-    ssl_config = options["ssl_config"] ||= ::SOAP::Property.new
-    set_ssl_config(client, ssl_config)
-    ssl_config.add_hook(true) do |key, value|
-      set_ssl_config(client, ssl_config)
-    end
-    basic_auth = options["basic_auth"] ||= ::SOAP::Property.new
-    set_basic_auth(client, basic_auth)
-    basic_auth.add_hook do |key, value|
-      set_basic_auth(client, basic_auth)
-    end
-    options.add_hook("connect_timeout") do |key, value|
-      client.connect_timeout = value
-    end
-    options.add_hook("send_timeout") do |key, value|
-      client.send_timeout = value
-    end
-    options.add_hook("receive_timeout") do |key, value|
-      client.receive_timeout = value
-    end
-  end
-
-  def set_basic_auth(client, basic_auth)
-    basic_auth.values.each do |url, userid, passwd|
-      client.set_basic_auth(url, userid, passwd)
-    end
-  end
-
-  def set_ssl_config(client, ssl_config)
-    ssl_config.each do |key, value|
-      cfg = client.ssl_config
-      if cfg.nil?
-        raise NotImplementedError.new("SSL not supported")
-      end
-      case key
-      when 'client_cert'
-        cfg.client_cert = cert_from_file(value)
-      when 'client_key'
-        cfg.client_key = key_from_file(value)
-      when 'client_ca'
-        cfg.client_ca = value
-      when 'ca_path'
-        cfg.set_trust_ca(value)
-      when 'ca_file'
-        cfg.set_trust_ca(value)
-      when 'crl'
-        cfg.set_crl(value)
-      when 'verify_mode'
-        cfg.verify_mode = ssl_config_int(value)
-      when 'verify_depth'
-        cfg.verify_depth = ssl_config_int(value)
-      when 'options'
-        cfg.options = value
-      when 'ciphers'
-        cfg.ciphers = value
-      when 'verify_callback'
-        cfg.verify_callback = value
-      when 'cert_store'
-        cfg.cert_store = value
-      else
-        raise ArgumentError.new("unknown ssl_config property #{key}")
-      end
-    end
-  end
-
-  def ssl_config_int(value)
-    if value.nil? or value.to_s.empty?
-      nil
-    else
-      begin
-        Integer(value)
-      rescue ArgumentError
-        ::SOAP::Property::Util.const_from_name(value.to_s)
-      end
-    end
-  end
-
-  def cert_from_file(filename)
-    OpenSSL::X509::Certificate.new(File.open(filename) { |f| f.read })
-  end
-
-  def key_from_file(filename)
-    OpenSSL::PKey::RSA.new(File.open(filename) { |f| f.read })
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping.rb
deleted file mode 100644
index b83f8b4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# SOAP4R - Ruby type mapping utility.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/mapping/mapping'
-require 'soap/mapping/registry'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/factory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/factory.rb
deleted file mode 100644
index 978b303..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/factory.rb
+++ /dev/null
@@ -1,355 +0,0 @@
-# SOAP4R - Mapping factory.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-module Mapping
-
-
-class Factory
-  include TraverseSupport
-
-  def initialize
-    # nothing to do
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    raise NotImplementError.new
-    # return soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    raise NotImplementError.new
-    # return convert_succeeded_or_not, obj
-  end
-
-  def setiv2obj(obj, node, map)
-    return if node.nil?
-    if obj.is_a?(Array)
-      setiv2ary(obj, node, map)
-    else
-      setiv2struct(obj, node, map)
-    end
-  end
-
-  def setiv2soap(node, obj, map)
-    if obj.class.class_variables.include?('@@schema_element')
-      obj.class.class_eval('@@schema_element').each do |name, info|
-        type, qname = info
-        if qname
-          elename = qname.name
-        else
-          elename = Mapping.name2elename(name)
-        end
-        node.add(elename,
-          Mapping._obj2soap(obj.instance_variable_get('@' + name), map))
-      end
-    else
-      # should we sort instance_variables?
-      obj.instance_variables.each do |var|
-        name = var.sub(/^@/, '')
-        elename = Mapping.name2elename(name)
-        node.add(elename,
-          Mapping._obj2soap(obj.instance_variable_get(var), map))
-      end
-    end
-  end
-
-private
-
-  def setiv2ary(obj, node, map)
-    node.each do |name, value|
-      Array.instance_method(:<<).bind(obj).call(Mapping._soap2obj(value, map))
-    end
-  end
-
-  def setiv2struct(obj, node, map)
-    vars = {}
-    node.each do |name, value|
-      vars[Mapping.elename2name(name)] = Mapping._soap2obj(value, map)
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-end
-
-class StringFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    begin
-      unless XSD::Charset.is_ces(obj, Thread.current[:SOAPExternalCES])
-        return nil
-      end
-      encoded = XSD::Charset.encoding_conv(obj,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = soap_class.new(encoded)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    mark_marshalled_obj(obj, soap_obj)
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = Mapping.create_empty_object(obj_class)
-    decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding,
-      Thread.current[:SOAPExternalCES])
-    obj.replace(decoded)
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class BasetypeFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    soap_obj = nil
-    begin
-      soap_obj = soap_class.new(obj)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    if @allow_original_mapping
-      # Basetype except String should not be multiref-ed in SOAP/1.1.
-      mark_marshalled_obj(obj, soap_obj)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.data
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class DateTimeFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and
-	Time === obj and !obj.instance_variables.empty?
-      return nil
-    end
-    soap_obj = nil
-    begin
-      soap_obj = soap_class.new(obj)
-    rescue XSD::ValueSpaceError
-      return nil
-    end
-    mark_marshalled_obj(obj, soap_obj)
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    if node.respond_to?(:to_obj)
-      obj = node.to_obj(obj_class)
-      return false if obj.nil?
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    else
-      return false
-    end
-  end
-end
-
-class Base64Factory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    return nil unless obj.instance_variables.empty?
-    soap_obj = soap_class.new(obj)
-    mark_marshalled_obj(obj, soap_obj) if soap_obj
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.string
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class URIFactory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    soap_obj = soap_class.new(obj)
-    mark_marshalled_obj(obj, soap_obj) if soap_obj
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = node.data
-    mark_unmarshalled_obj(node, obj)
-    return true, obj
-  end
-end
-
-class ArrayFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  # [[1], [2]] is converted to Array of Array, not 2-D Array.
-  # To create M-D Array, you must call Mapping.ary2md.
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    arytype = Mapping.obj2element(obj)
-    if arytype.name
-      arytype.namespace ||= RubyTypeNamespace
-    else
-      arytype = XSD::AnyTypeName
-    end
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |item|
-      soap_obj.add(Mapping._obj2soap(item, map))
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    node.soap2array(obj) do |elem|
-      elem ? Mapping._soap2obj(elem, map) : nil
-    end
-    return true, obj
-  end
-end
-
-class TypedArrayFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    arytype = info[:type] || info[0]
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |var|
-      soap_obj.add(Mapping._obj2soap(var, map))
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    if node.rank > 1
-      return false
-    end
-    arytype = info[:type] || info[0]
-    unless node.arytype == arytype
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    node.soap2array(obj) do |elem|
-      elem ? Mapping._soap2obj(elem, map) : nil
-    end
-    return true, obj
-  end
-end
-
-class TypedStructFactory_ < Factory
-  def obj2soap(soap_class, obj, info, map)
-    type = info[:type] || info[0]
-    soap_obj = soap_class.new(type)
-    mark_marshalled_obj(obj, soap_obj)
-    if obj.class <= SOAP::Marshallable
-      setiv2soap(soap_obj, obj, map)
-    else
-      setiv2soap(soap_obj, obj, map)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    type = info[:type] || info[0]
-    unless node.type == type
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    setiv2obj(obj, node, map)
-    return true, obj
-  end
-end
-
-MapQName = XSD::QName.new(ApacheSOAPTypeNamespace, 'Map')
-class HashFactory_ < Factory
-  def initialize(allow_original_mapping = false)
-    super()
-    @allow_original_mapping = allow_original_mapping
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    if !@allow_original_mapping and !obj.instance_variables.empty?
-      return nil
-    end
-    if !obj.default.nil? or
-	(obj.respond_to?(:default_proc) and obj.default_proc)
-      return nil
-    end
-    soap_obj = SOAPStruct.new(MapQName)
-    mark_marshalled_obj(obj, soap_obj)
-    obj.each do |key, value|
-      elem = SOAPStruct.new
-      elem.add("key", Mapping._obj2soap(key, map))
-      elem.add("value", Mapping._obj2soap(value, map))
-      # ApacheAxis allows only 'item' here.
-      soap_obj.add("item", elem)
-    end
-    soap_obj
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    unless node.type == MapQName
-      return false
-    end
-    if node.class == SOAPStruct and node.key?('default')
-      return false
-    end
-    obj = Mapping.create_empty_object(obj_class)
-    mark_unmarshalled_obj(node, obj)
-    if node.class == SOAPStruct
-      node.each do |key, value|
-	obj[Mapping._soap2obj(value['key'], map)] =
-	  Mapping._soap2obj(value['value'], map)
-      end
-    else
-      node.each do |value|
-	obj[Mapping._soap2obj(value['key'], map)] =
-	  Mapping._soap2obj(value['value'], map)
-      end
-    end
-    return true, obj
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/mapping.rb
deleted file mode 100644
index 65d6bb4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/mapping.rb
+++ /dev/null
@@ -1,381 +0,0 @@
-# SOAP4R - Ruby type mapping utility.
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-
-
-module SOAP
-
-
-module Mapping
-  RubyTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/1.6'
-  RubyTypeInstanceNamespace =
-    'http://www.ruby-lang.org/xmlns/ruby/type-instance'
-  RubyCustomTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/custom'
-  ApacheSOAPTypeNamespace = 'http://xml.apache.org/xml-soap'
-
-
-  # TraverseSupport breaks following thread variables.
-  #   Thread.current[:SOAPMarshalDataKey]
-  module TraverseSupport
-    def mark_marshalled_obj(obj, soap_obj)
-      raise if obj.nil?
-      Thread.current[:SOAPMarshalDataKey][obj.__id__] = soap_obj
-    end
-
-    def mark_unmarshalled_obj(node, obj)
-      return if obj.nil?
-      # node.id is not Object#id but SOAPReference#id
-      Thread.current[:SOAPMarshalDataKey][node.id] = obj
-    end
-  end
-
-
-  EMPTY_OPT = {}
-  def self.obj2soap(obj, registry = nil, type = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    soap_obj = nil
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      soap_obj = _obj2soap(obj, registry, type)
-    end
-    soap_obj
-  end
-
-  def self.soap2obj(node, registry = nil, klass = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    obj = nil
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      obj = _soap2obj(node, registry, klass)
-    end
-    obj
-  end
-
-  def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    type = XSD::QName.new(type_ns, typename)
-    soap_ary = SOAPArray.new(ValueArrayName, 1, type)
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      ary.each do |ele|
-        soap_ary.add(_obj2soap(ele, registry, type))
-      end
-    end
-    soap_ary
-  end
-
-  def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
-    registry ||= Mapping::DefaultRegistry
-    type = XSD::QName.new(type_ns, typename)
-    md_ary = SOAPArray.new(ValueArrayName, rank, type)
-    protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
-      Thread.current[:SOAPMarshalDataKey] = {}
-      Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
-      Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
-      add_md_ary(md_ary, ary, [], registry)
-    end
-    md_ary
-  end
-
-  def self.fault2exception(fault, registry = nil)
-    registry ||= Mapping::DefaultRegistry
-    detail = if fault.detail
-        soap2obj(fault.detail, registry) || ""
-      else
-        ""
-      end
-    if detail.is_a?(Mapping::SOAPException)
-      begin
-        e = detail.to_e
-	remote_backtrace = e.backtrace
-        e.set_backtrace(nil)
-        raise e # ruby sets current caller as local backtrace of e => e2.
-      rescue Exception => e
-	e.set_backtrace(remote_backtrace + e.backtrace[1..-1])
-        raise
-      end
-    else
-      fault.detail = detail
-      fault.set_backtrace(
-        if detail.is_a?(Array)
-	  detail
-        else
-          [detail.to_s]
-        end
-      )
-      raise
-    end
-  end
-
-  def self._obj2soap(obj, registry, type = nil)
-    if referent = Thread.current[:SOAPMarshalDataKey][obj.__id__] and
-        !Thread.current[:SOAPMarshalNoReference]
-      SOAPReference.new(referent)
-    elsif registry
-      registry.obj2soap(obj, type)
-    else
-      raise MappingError.new("no mapping registry given")
-    end
-  end
-
-  def self._soap2obj(node, registry, klass = nil)
-    if node.nil?
-      return nil
-    elsif node.is_a?(SOAPReference)
-      target = node.__getobj__
-      # target.id is not Object#id but SOAPReference#id
-      if referent = Thread.current[:SOAPMarshalDataKey][target.id] and
-          !Thread.current[:SOAPMarshalNoReference]
-        return referent
-      else
-        return _soap2obj(target, registry, klass)
-      end
-    end
-    return registry.soap2obj(node, klass)
-  end
-
-  if Object.respond_to?(:allocate)
-    # ruby/1.7 or later.
-    def self.create_empty_object(klass)
-      klass.allocate
-    end
-  else
-    MARSHAL_TAG = {
-      String => ['"', 1],
-      Regexp => ['/', 2],
-      Array => ['[', 1],
-      Hash => ['{', 1]
-    }
-    def self.create_empty_object(klass)
-      if klass <= Struct
-	name = klass.name
-	return ::Marshal.load(sprintf("\004\006S:%c%s\000", name.length + 5, name))
-      end
-      if MARSHAL_TAG.has_key?(klass)
-	tag, terminate = MARSHAL_TAG[klass]
-	return ::Marshal.load(sprintf("\004\006%s%s", tag, "\000" * terminate))
-      end
-      MARSHAL_TAG.each do |k, v|
-	if klass < k
-	  name = klass.name
-	  tag, terminate = v
-	  return ::Marshal.load(sprintf("\004\006C:%c%s%s%s", name.length + 5, name, tag, "\000" * terminate))
-	end
-      end
-      name = klass.name
-      ::Marshal.load(sprintf("\004\006o:%c%s\000", name.length + 5, name))
-    end
-  end
-
-  # Allow only (Letter | '_') (Letter | Digit | '-' | '_')* here.
-  # Caution: '.' is not allowed here.
-  # To follow XML spec., it should be NCName.
-  #   (denied chars) => .[0-F][0-F]
-  #   ex. a.b => a.2eb
-  #
-  def self.name2elename(name)
-    name.gsub(/([^a-zA-Z0-9:_\-]+)/n) {
-      '.' << $1.unpack('H2' * $1.size).join('.')
-    }.gsub(/::/n, '..')
-  end
-
-  def self.elename2name(name)
-    name.gsub(/\.\./n, '::').gsub(/((?:\.[0-9a-fA-F]{2})+)/n) {
-      [$1.delete('.')].pack('H*')
-    }
-  end
-
-  def self.const_from_name(name, lenient = false)
-    const = ::Object
-    name.sub(/\A::/, '').split('::').each do |const_str|
-      if XSD::CodeGen::GenSupport.safeconstname?(const_str)
-        if const.const_defined?(const_str)
-          const = const.const_get(const_str)
-          next
-        end
-      elsif lenient
-        const_str = XSD::CodeGen::GenSupport.safeconstname(const_str)
-        if const.const_defined?(const_str)
-          const = const.const_get(const_str)
-          next
-        end
-      end
-      return nil
-    end
-    const
-  end
-
-  def self.class_from_name(name, lenient = false)
-    const = const_from_name(name, lenient)
-    if const.is_a?(::Class)
-      const
-    else
-      nil
-    end
-  end
-
-  def self.module_from_name(name, lenient = false)
-    const = const_from_name(name, lenient)
-    if const.is_a?(::Module)
-      const
-    else
-      nil
-    end
-  end
-
-  def self.class2qname(klass)
-    name = schema_type_definition(klass)
-    namespace = schema_ns_definition(klass)
-    XSD::QName.new(namespace, name)
-  end
-
-  def self.class2element(klass)
-    type = Mapping.class2qname(klass)
-    type.name ||= Mapping.name2elename(klass.name)
-    type.namespace ||= RubyCustomTypeNamespace
-    type
-  end
-
-  def self.obj2element(obj)
-    name = namespace = nil
-    ivars = obj.instance_variables
-    if ivars.include?('@schema_type')
-      name = obj.instance_variable_get('@schema_type')
-    end
-    if ivars.include?('@schema_ns')
-      namespace = obj.instance_variable_get('@schema_ns')
-    end
-    if !name or !namespace
-      class2qname(obj.class)
-    else
-      XSD::QName.new(namespace, name)
-    end
-  end
-
-  def self.define_singleton_method(obj, name, &block)
-    sclass = (class << obj; self; end)
-    sclass.class_eval {
-      define_method(name, &block)
-    }
-  end
-
-  def self.get_attribute(obj, attr_name)
-    if obj.is_a?(::Hash)
-      obj[attr_name] || obj[attr_name.intern]
-    else
-      name = XSD::CodeGen::GenSupport.safevarname(attr_name)
-      if obj.instance_variables.include?('@' + name)
-        obj.instance_variable_get('@' + name)
-      elsif ((obj.is_a?(::Struct) or obj.is_a?(Marshallable)) and
-          obj.respond_to?(name))
-        obj.__send__(name)
-      end
-    end
-  end
-
-  def self.set_attributes(obj, values)
-    if obj.is_a?(::SOAP::Mapping::Object)
-      values.each do |attr_name, value|
-        obj.__add_xmlele_value(attr_name, value)
-      end
-    else
-      values.each do |attr_name, value|
-        name = XSD::CodeGen::GenSupport.safevarname(attr_name)
-        setter = name + "="
-        if obj.respond_to?(setter)
-          obj.__send__(setter, value)
-        else
-          obj.instance_variable_set('@' + name, value)
-          begin
-            define_attr_accessor(obj, name,
-              proc { instance_variable_get('@' + name) },
-              proc { |value| instance_variable_set('@' + name, value) })
-          rescue TypeError
-            # singleton class may not exist (e.g. Float)
-          end
-        end
-      end
-    end
-  end
-
-  def self.define_attr_accessor(obj, name, getterproc, setterproc = nil)
-    define_singleton_method(obj, name, &getterproc)
-    define_singleton_method(obj, name + '=', &setterproc) if setterproc
-  end
-
-  def self.schema_type_definition(klass)
-    class_schema_variable(:schema_type, klass)
-  end
-
-  def self.schema_ns_definition(klass)
-    class_schema_variable(:schema_ns, klass)
-  end
-
-  def self.schema_element_definition(klass)
-    schema_element = class_schema_variable(:schema_element, klass) or return nil
-    schema_ns = schema_ns_definition(klass)
-    elements = []
-    as_array = []
-    schema_element.each do |varname, definition|
-      class_name, name = definition
-      if /\[\]$/ =~ class_name
-        class_name = class_name.sub(/\[\]$/, '')
-        as_array << (name ? name.name : varname)
-      end
-      elements << [name || XSD::QName.new(schema_ns, varname), class_name]
-    end
-    [elements, as_array]
-  end
-
-  def self.schema_attribute_definition(klass)
-    class_schema_variable(:schema_attribute, klass)
-  end
-
-  class << Mapping
-  private
-
-    def class_schema_variable(sym, klass)
-      var = "@@#{sym}"
-      klass.class_variables.include?(var) ? klass.class_eval(var) : nil
-    end
-
-    def protect_threadvars(*symbols)
-      backup = {}
-      begin
-        symbols.each do |sym|
-          backup[sym] = Thread.current[sym]
-        end
-        yield
-      ensure
-        symbols.each do |sym|
-          Thread.current[sym] = backup[sym]
-        end
-      end
-    end
-
-    def add_md_ary(md_ary, ary, indices, registry)
-      for idx in 0..(ary.size - 1)
-        if ary[idx].is_a?(Array)
-          add_md_ary(md_ary, ary[idx], indices + [idx], registry)
-        else
-          md_ary[*(indices + [idx])] = _obj2soap(ary[idx], registry)
-        end
-      end
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/registry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/registry.rb
deleted file mode 100644
index 823e806..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/registry.rb
+++ /dev/null
@@ -1,541 +0,0 @@
-# SOAP4R - Mapping registry.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-require 'soap/mapping/factory'
-require 'soap/mapping/rubytypeFactory'
-
-
-module SOAP
-
-
-module Marshallable
-  # @@type_ns = Mapping::RubyCustomTypeNamespace
-end
-
-
-module Mapping
-
-  
-module MappedException; end
-
-
-RubyTypeName = XSD::QName.new(RubyTypeInstanceNamespace, 'rubyType')
-RubyExtendName = XSD::QName.new(RubyTypeInstanceNamespace, 'extends')
-RubyIVarName = XSD::QName.new(RubyTypeInstanceNamespace, 'ivars')
-
-
-# Inner class to pass an exception.
-class SOAPException; include Marshallable
-  attr_reader :excn_type_name, :cause
-  def initialize(e)
-    @excn_type_name = Mapping.name2elename(e.class.to_s)
-    @cause = e
-  end
-
-  def to_e
-    if @cause.is_a?(::Exception)
-      @cause.extend(::SOAP::Mapping::MappedException)
-      return @cause
-    elsif @cause.respond_to?(:message) and @cause.respond_to?(:backtrace)
-      e = RuntimeError.new(@cause.message)
-      e.set_backtrace(@cause.backtrace)
-      return e
-    end
-    klass = Mapping.class_from_name(Mapping.elename2name(@excn_type_name.to_s))
-    if klass.nil? or not klass <= ::Exception
-      return RuntimeError.new(@cause.inspect)
-    end
-    obj = klass.new(@cause.message)
-    obj.extend(::SOAP::Mapping::MappedException)
-    obj
-  end
-end
-
-
-# For anyType object: SOAP::Mapping::Object not ::Object
-class Object; include Marshallable
-  def initialize
-    @__xmlele_type = {}
-    @__xmlele = []
-    @__xmlattr = {}
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x%s>", self.class.name, __id__,
-      @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join)
-  end
-
-  def __xmlattr
-    @__xmlattr
-  end
-
-  def __xmlele
-    @__xmlele
-  end
-
-  def [](qname)
-    unless qname.is_a?(XSD::QName)
-      qname = XSD::QName.new(nil, qname)
-    end
-    @__xmlele.each do |k, v|
-      return v if k == qname
-    end
-    # fallback
-    @__xmlele.each do |k, v|
-      return v if k.name == qname.name
-    end
-    nil
-  end
-
-  def []=(qname, value)
-    unless qname.is_a?(XSD::QName)
-      qname = XSD::QName.new(nil, qname)
-    end
-    found = false
-    @__xmlele.each do |pair|
-      if pair[0] == qname
-        found = true
-        pair[1] = value
-      end
-    end
-    unless found
-      __define_attr_accessor(qname)
-      @__xmlele << [qname, value]
-    end
-    @__xmlele_type[qname] = :single
-  end
-
-  def __add_xmlele_value(qname, value)
-    found = false
-    @__xmlele.map! do |k, v|
-      if k == qname
-        found = true
-        [k, __set_xmlele_value(k, v, value)]
-      else
-        [k, v]
-      end
-    end
-    unless found
-      __define_attr_accessor(qname)
-      @__xmlele << [qname, value]
-      @__xmlele_type[qname] = :single
-    end
-    value
-  end
-
-private
-
-  if RUBY_VERSION > "1.7.0"
-    def __define_attr_accessor(qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      Mapping.define_attr_accessor(self, name,
-        proc { self[qname] },
-        proc { |value| self[qname] = value })
-    end
-  else
-    def __define_attr_accessor(qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      instance_eval <<-EOS
-        def #{name}
-          self[#{qname.dump}]
-        end
-
-        def #{name}=(value)
-          self[#{qname.dump}] = value
-        end
-      EOS
-    end
-  end
-
-  def __set_xmlele_value(key, org, value)
-    case @__xmlele_type[key]
-    when :multi
-      org << value
-      org
-    when :single
-      @__xmlele_type[key] = :multi
-      [org, value]
-    else
-      raise RuntimeError.new("unknown type")
-    end
-  end
-end
-
-
-class MappingError < Error; end
-
-
-class Registry
-  class Map
-    def initialize(registry)
-      @obj2soap = {}
-      @soap2obj = {}
-      @registry = registry
-    end
-
-    def obj2soap(obj)
-      klass = obj.class
-      if map = @obj2soap[klass]
-        map.each do |soap_class, factory, info|
-          ret = factory.obj2soap(soap_class, obj, info, @registry)
-          return ret if ret
-        end
-      end
-      ancestors = klass.ancestors
-      ancestors.delete(klass)
-      ancestors.delete(::Object)
-      ancestors.delete(::Kernel)
-      ancestors.each do |klass|
-        if map = @obj2soap[klass]
-          map.each do |soap_class, factory, info|
-            if info[:derived_class]
-              ret = factory.obj2soap(soap_class, obj, info, @registry)
-              return ret if ret
-            end
-          end
-        end
-      end
-      nil
-    end
-
-    def soap2obj(node, klass = nil)
-      if map = @soap2obj[node.class]
-        map.each do |obj_class, factory, info|
-          next if klass and obj_class != klass
-          conv, obj = factory.soap2obj(obj_class, node, info, @registry)
-          return true, obj if conv
-        end
-      end
-      return false, nil
-    end
-
-    # Give priority to former entry.
-    def init(init_map = [])
-      clear
-      init_map.reverse_each do |obj_class, soap_class, factory, info|
-        add(obj_class, soap_class, factory, info)
-      end
-    end
-
-    # Give priority to latter entry.
-    def add(obj_class, soap_class, factory, info)
-      info ||= {}
-      (@obj2soap[obj_class] ||= []).unshift([soap_class, factory, info])
-      (@soap2obj[soap_class] ||= []).unshift([obj_class, factory, info])
-    end
-
-    def clear
-      @obj2soap.clear
-      @soap2obj.clear
-    end
-
-    def find_mapped_soap_class(target_obj_class)
-      map = @obj2soap[target_obj_class]
-      map.empty? ? nil : map[0][1]
-    end
-
-    def find_mapped_obj_class(target_soap_class)
-      map = @soap2obj[target_soap_class]
-      map.empty? ? nil : map[0][0]
-    end
-  end
-
-  StringFactory = StringFactory_.new
-  BasetypeFactory = BasetypeFactory_.new
-  DateTimeFactory = DateTimeFactory_.new
-  ArrayFactory = ArrayFactory_.new
-  Base64Factory = Base64Factory_.new
-  URIFactory = URIFactory_.new
-  TypedArrayFactory = TypedArrayFactory_.new
-  TypedStructFactory = TypedStructFactory_.new
-
-  HashFactory = HashFactory_.new
-
-  SOAPBaseMap = [
-    [::NilClass,     ::SOAP::SOAPNil,        BasetypeFactory],
-    [::TrueClass,    ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::FalseClass,   ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPString,     StringFactory],
-    [::DateTime,     ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Date,         ::SOAP::SOAPDate,       DateTimeFactory],
-    [::Time,         ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Time,         ::SOAP::SOAPTime,       DateTimeFactory],
-    [::Float,        ::SOAP::SOAPDouble,     BasetypeFactory,
-      {:derived_class => true}],
-    [::Float,        ::SOAP::SOAPFloat,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInt,        BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPLong,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInteger,    BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPShort,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPByte,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedLong, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedInt, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedShort, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedByte, BasetypeFactory,
-      {:derived_class => true}],
-    [::URI::Generic, ::SOAP::SOAPAnyURI,     URIFactory,
-      {:derived_class => true}],
-    [::String,       ::SOAP::SOAPBase64,     Base64Factory],
-    [::String,       ::SOAP::SOAPHexBinary,  Base64Factory],
-    [::String,       ::SOAP::SOAPDecimal,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPDuration,   BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYearMonth, BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYear,      BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonthDay,  BasetypeFactory],
-    [::String,       ::SOAP::SOAPGDay,       BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonth,     BasetypeFactory],
-    [::String,       ::SOAP::SOAPQName,      BasetypeFactory],
-
-    [::Hash,         ::SOAP::SOAPArray,      HashFactory],
-    [::Hash,         ::SOAP::SOAPStruct,     HashFactory],
-
-    [::Array,        ::SOAP::SOAPArray,      ArrayFactory,
-      {:derived_class => true}],
-
-    [::SOAP::Mapping::SOAPException,
-		     ::SOAP::SOAPStruct,     TypedStructFactory,
-      {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
- ]
-
-  RubyOriginalMap = [
-    [::NilClass,     ::SOAP::SOAPNil,        BasetypeFactory],
-    [::TrueClass,    ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::FalseClass,   ::SOAP::SOAPBoolean,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPString,     StringFactory],
-    [::DateTime,     ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Date,         ::SOAP::SOAPDate,       DateTimeFactory],
-    [::Time,         ::SOAP::SOAPDateTime,   DateTimeFactory],
-    [::Time,         ::SOAP::SOAPTime,       DateTimeFactory],
-    [::Float,        ::SOAP::SOAPDouble,     BasetypeFactory,
-      {:derived_class => true}],
-    [::Float,        ::SOAP::SOAPFloat,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInt,        BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPLong,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPInteger,    BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPShort,      BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPByte,       BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPPositiveInteger, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedLong, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedInt, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedShort, BasetypeFactory,
-      {:derived_class => true}],
-    [::Integer,      ::SOAP::SOAPUnsignedByte, BasetypeFactory,
-      {:derived_class => true}],
-    [::URI::Generic, ::SOAP::SOAPAnyURI,     URIFactory,
-      {:derived_class => true}],
-    [::String,       ::SOAP::SOAPBase64,     Base64Factory],
-    [::String,       ::SOAP::SOAPHexBinary,  Base64Factory],
-    [::String,       ::SOAP::SOAPDecimal,    BasetypeFactory],
-    [::String,       ::SOAP::SOAPDuration,   BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYearMonth, BasetypeFactory],
-    [::String,       ::SOAP::SOAPGYear,      BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonthDay,  BasetypeFactory],
-    [::String,       ::SOAP::SOAPGDay,       BasetypeFactory],
-    [::String,       ::SOAP::SOAPGMonth,     BasetypeFactory],
-    [::String,       ::SOAP::SOAPQName,      BasetypeFactory],
-
-    [::Hash,         ::SOAP::SOAPArray,      HashFactory],
-    [::Hash,         ::SOAP::SOAPStruct,     HashFactory],
-
-    # Does not allow Array's subclass here.
-    [::Array,        ::SOAP::SOAPArray,      ArrayFactory],
-
-    [::SOAP::Mapping::SOAPException,
-                     ::SOAP::SOAPStruct,     TypedStructFactory,
-      {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
-  ]
-
-  attr_accessor :default_factory
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(config = {})
-    @config = config
-    @map = Map.new(self)
-    if @config[:allow_original_mapping]
-      @allow_original_mapping = true
-      @map.init(RubyOriginalMap)
-    else
-      @allow_original_mapping = false
-      @map.init(SOAPBaseMap)
-    end
-    @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
-      @config[:allow_untyped_struct] : true
-    @rubytype_factory = RubytypeFactory.new(
-      :allow_untyped_struct => @allow_untyped_struct,
-      :allow_original_mapping => @allow_original_mapping
-    )
-    @default_factory = @rubytype_factory
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-  end
-
-  def add(obj_class, soap_class, factory, info = nil)
-    @map.add(obj_class, soap_class, factory, info)
-  end
-  alias set add
-
-  # general Registry ignores type_qname
-  def obj2soap(obj, type_qname = nil)
-    soap = _obj2soap(obj)
-    if @allow_original_mapping
-      addextend2soap(soap, obj)
-    end
-    soap
-  end
-
-  def soap2obj(node, klass = nil)
-    obj = _soap2obj(node, klass)
-    if @allow_original_mapping
-      addextend2obj(obj, node.extraattr[RubyExtendName])
-      addiv2obj(obj, node.extraattr[RubyIVarName])
-    end
-    obj
-  end
-
-  def find_mapped_soap_class(obj_class)
-    @map.find_mapped_soap_class(obj_class)
-  end
-
-  def find_mapped_obj_class(soap_class)
-    @map.find_mapped_obj_class(soap_class)
-  end
-
-private
-
-  def _obj2soap(obj)
-    ret = nil
-    if obj.is_a?(SOAPStruct) or obj.is_a?(SOAPArray)
-      obj.replace do |ele|
-        Mapping._obj2soap(ele, self)
-      end
-      return obj
-    elsif obj.is_a?(SOAPBasetype)
-      return obj
-    end
-    begin 
-      ret = @map.obj2soap(obj) ||
-        @default_factory.obj2soap(nil, obj, nil, self)
-      return ret if ret
-    rescue MappingError
-    end
-    if @excn_handler_obj2soap
-      ret = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping._obj2soap(yield_obj, self)
-      }
-      return ret if ret
-    end
-    raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.")
-  end
-
-  # Might return nil as a mapping result.
-  def _soap2obj(node, klass = nil)
-    if node.extraattr.key?(RubyTypeName)
-      conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
-      return obj if conv
-    else
-      conv, obj = @map.soap2obj(node, klass)
-      return obj if conv
-      conv, obj = @default_factory.soap2obj(nil, node, nil, self)
-      return obj if conv
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping._soap2obj(yield_node, self)
-	  }
-      rescue Exception
-      end
-    end
-    raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.")
-  end
-
-  def addiv2obj(obj, attr)
-    return unless attr
-    vars = {}
-    attr.__getobj__.each do |name, value|
-      vars[name] = Mapping._soap2obj(value, self)
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  if RUBY_VERSION >= '1.8.0'
-    def addextend2obj(obj, attr)
-      return unless attr
-      attr.split(/ /).reverse_each do |mstr|
-	obj.extend(Mapping.module_from_name(mstr))
-      end
-    end
-  else
-    # (class < false; self; end).ancestors includes "TrueClass" under 1.6...
-    def addextend2obj(obj, attr)
-      return unless attr
-      attr.split(/ /).reverse_each do |mstr|
-	m = Mapping.module_from_name(mstr)
-	obj.extend(m)
-      end
-    end
-  end
-
-  def addextend2soap(node, obj)
-    return if obj.is_a?(Symbol) or obj.is_a?(Fixnum)
-    list = (class << obj; self; end).ancestors - obj.class.ancestors
-    unless list.empty?
-      node.extraattr[RubyExtendName] = list.collect { |c|
-	if c.name.empty?
-  	  raise TypeError.new("singleton can't be dumped #{ obj }")
-   	end
-	c.name
-      }.join(" ")
-    end
-  end
-
-end
-
-
-DefaultRegistry = Registry.new
-RubyOriginalRegistry = Registry.new(:allow_original_mapping => true)
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/rubytypeFactory.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/rubytypeFactory.rb
deleted file mode 100644
index 61c21d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/rubytypeFactory.rb
+++ /dev/null
@@ -1,475 +0,0 @@
-# SOAP4R - Ruby type mapping factory.
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-module Mapping
-
-
-class RubytypeFactory < Factory
-  TYPE_STRING = XSD::QName.new(RubyTypeNamespace, 'String')
-  TYPE_TIME = XSD::QName.new(RubyTypeNamespace, 'Time')
-  TYPE_ARRAY = XSD::QName.new(RubyTypeNamespace, 'Array')
-  TYPE_REGEXP = XSD::QName.new(RubyTypeNamespace, 'Regexp')
-  TYPE_RANGE = XSD::QName.new(RubyTypeNamespace, 'Range')
-  TYPE_CLASS = XSD::QName.new(RubyTypeNamespace, 'Class')
-  TYPE_MODULE = XSD::QName.new(RubyTypeNamespace, 'Module')
-  TYPE_SYMBOL = XSD::QName.new(RubyTypeNamespace, 'Symbol')
-  TYPE_STRUCT = XSD::QName.new(RubyTypeNamespace, 'Struct')
-  TYPE_HASH = XSD::QName.new(RubyTypeNamespace, 'Map')
-
-  def initialize(config = {})
-    @config = config
-    @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
-      @config[:allow_untyped_struct] : true
-    @allow_original_mapping = @config.key?(:allow_original_mapping) ?
-      @config[:allow_original_mapping] : false
-    @string_factory = StringFactory_.new(true)
-    @basetype_factory = BasetypeFactory_.new(true)
-    @datetime_factory = DateTimeFactory_.new(true)
-    @array_factory = ArrayFactory_.new(true)
-    @hash_factory = HashFactory_.new(true)
-  end
-
-  def obj2soap(soap_class, obj, info, map)
-    param = nil
-    case obj
-    when ::String
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @string_factory.obj2soap(SOAPString, obj, info, map)
-      if obj.class != String
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Time
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @datetime_factory.obj2soap(SOAPDateTime, obj, info, map)
-      if obj.class != Time
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Array
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @array_factory.obj2soap(nil, obj, info, map)
-      if obj.class != Array
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::NilClass
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPNil, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::FalseClass, ::TrueClass
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPBoolean, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::Integer
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPInt, obj, info, map)
-      param ||= @basetype_factory.obj2soap(SOAPInteger, obj, info, map)
-      param ||= @basetype_factory.obj2soap(SOAPDecimal, obj, info, map)
-      addiv2soapattr(param, obj, map)
-    when ::Float
-      unless @allow_original_mapping
-        return nil
-      end
-      param = @basetype_factory.obj2soap(SOAPDouble, obj, info, map)
-      if obj.class != Float
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      addiv2soapattr(param, obj, map)
-    when ::Hash
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.respond_to?(:default_proc) && obj.default_proc
-        raise TypeError.new("cannot dump hash with default proc")
-      end
-      param = SOAPStruct.new(TYPE_HASH)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Hash
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      obj.each do |key, value|
-        elem = SOAPStruct.new # Undefined type.
-        elem.add("key", Mapping._obj2soap(key, map))
-        elem.add("value", Mapping._obj2soap(value, map))
-        param.add("item", elem)
-      end
-      param.add('default', Mapping._obj2soap(obj.default, map))
-      addiv2soapattr(param, obj, map)
-    when ::Regexp
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_REGEXP)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Regexp
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      param.add('source', SOAPBase64.new(obj.source))
-      if obj.respond_to?('options')
-        # Regexp#options is from Ruby/1.7
-        options = obj.options
-      else
-        options = 0
-        obj.inspect.sub(/^.*\//, '').each_byte do |c|
-          options += case c
-            when ?i
-              1
-            when ?x
-              2
-            when ?m
-              4
-            when ?n
-              16
-            when ?e
-              32
-            when ?s
-              48
-            when ?u
-              64
-            end
-        end
-      end
-      param.add('options', SOAPInt.new(options))
-      addiv2soapattr(param, obj, map)
-    when ::Range
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_RANGE)
-      mark_marshalled_obj(obj, param)
-      if obj.class != Range
-        param.extraattr[RubyTypeName] = obj.class.name
-      end
-      param.add('begin', Mapping._obj2soap(obj.begin, map))
-      param.add('end', Mapping._obj2soap(obj.end, map))
-      param.add('exclude_end', SOAP::SOAPBoolean.new(obj.exclude_end?))
-      addiv2soapattr(param, obj, map)
-    when ::Class
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.to_s[0] == ?#
-        raise TypeError.new("can't dump anonymous class #{obj}")
-      end
-      param = SOAPStruct.new(TYPE_CLASS)
-      mark_marshalled_obj(obj, param)
-      param.add('name', SOAPString.new(obj.name))
-      addiv2soapattr(param, obj, map)
-    when ::Module
-      unless @allow_original_mapping
-        return nil
-      end
-      if obj.to_s[0] == ?#
-        raise TypeError.new("can't dump anonymous module #{obj}")
-      end
-      param = SOAPStruct.new(TYPE_MODULE)
-      mark_marshalled_obj(obj, param)
-      param.add('name', SOAPString.new(obj.name))
-      addiv2soapattr(param, obj, map)
-    when ::Symbol
-      unless @allow_original_mapping
-        return nil
-      end
-      param = SOAPStruct.new(TYPE_SYMBOL)
-      mark_marshalled_obj(obj, param)
-      param.add('id', SOAPString.new(obj.id2name))
-      addiv2soapattr(param, obj, map)
-    when ::Struct
-      unless @allow_original_mapping
-        # treat it as an user defined class. [ruby-talk:104980]
-        #param = unknownobj2soap(soap_class, obj, info, map)
-        param = SOAPStruct.new(XSD::AnyTypeName)
-        mark_marshalled_obj(obj, param)
-        obj.members.each do |member|
-          param.add(Mapping.name2elename(member),
-            Mapping._obj2soap(obj[member], map))
-        end
-      else
-        param = SOAPStruct.new(TYPE_STRUCT)
-        mark_marshalled_obj(obj, param)
-        param.add('type', ele_type = SOAPString.new(obj.class.to_s))
-        ele_member = SOAPStruct.new
-        obj.members.each do |member|
-          ele_member.add(Mapping.name2elename(member),
-            Mapping._obj2soap(obj[member], map))
-        end
-        param.add('member', ele_member)
-        addiv2soapattr(param, obj, map)
-      end
-    when ::IO, ::Binding, ::Continuation, ::Data, ::Dir, ::File::Stat,
-        ::MatchData, Method, ::Proc, ::Thread, ::ThreadGroup
-        # from 1.8: Process::Status, UnboundMethod
-      return nil
-    when ::SOAP::Mapping::Object
-      param = SOAPStruct.new(XSD::AnyTypeName)
-      mark_marshalled_obj(obj, param)
-      obj.__xmlele.each do |key, value|
-        param.add(key.name, Mapping._obj2soap(value, map))
-      end
-      obj.__xmlattr.each do |key, value|
-        param.extraattr[key] = value
-      end
-    when ::Exception
-      typestr = Mapping.name2elename(obj.class.to_s)
-      param = SOAPStruct.new(XSD::QName.new(RubyTypeNamespace, typestr))
-      mark_marshalled_obj(obj, param)
-      param.add('message', Mapping._obj2soap(obj.message, map))
-      param.add('backtrace', Mapping._obj2soap(obj.backtrace, map))
-      addiv2soapattr(param, obj, map)
-    else
-      param = unknownobj2soap(soap_class, obj, info, map)
-    end
-    param
-  end
-
-  def soap2obj(obj_class, node, info, map)
-    rubytype = node.extraattr[RubyTypeName]
-    if rubytype or node.type.namespace == RubyTypeNamespace
-      rubytype2obj(node, info, map, rubytype)
-    elsif node.type == XSD::AnyTypeName or node.type == XSD::AnySimpleTypeName
-      anytype2obj(node, info, map)
-    else
-      unknowntype2obj(node, info, map)
-    end
-  end
-
-private
-
-  def addiv2soapattr(node, obj, map)
-    return if obj.instance_variables.empty?
-    ivars = SOAPStruct.new    # Undefined type.
-    setiv2soap(ivars, obj, map)
-    node.extraattr[RubyIVarName] = ivars
-  end
-
-  def unknownobj2soap(soap_class, obj, info, map)
-    if obj.class.name.empty?
-      raise TypeError.new("can't dump anonymous class #{obj}")
-    end
-    singleton_class = class << obj; self; end
-    if !singleton_methods_true(obj).empty? or
-	!singleton_class.instance_variables.empty?
-      raise TypeError.new("singleton can't be dumped #{obj}")
-    end
-    if !(singleton_class.ancestors - obj.class.ancestors).empty?
-      typestr = Mapping.name2elename(obj.class.to_s)
-      type = XSD::QName.new(RubyTypeNamespace, typestr)
-    else
-      type = Mapping.class2element(obj.class)
-    end
-    param = SOAPStruct.new(type)
-    mark_marshalled_obj(obj, param)
-    setiv2soap(param, obj, map)
-    param
-  end
-
-  if RUBY_VERSION >= '1.8.0'
-    def singleton_methods_true(obj)
-      obj.singleton_methods(true)
-    end
-  else
-    def singleton_methods_true(obj)
-      obj.singleton_methods
-    end
-  end
-
-  def rubytype2obj(node, info, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : nil
-    obj = nil
-    case node
-    when SOAPString
-      return @string_factory.soap2obj(klass || String, node, info, map)
-    when SOAPDateTime
-      #return @datetime_factory.soap2obj(klass || Time, node, info, map)
-      klass ||= Time
-      t = node.to_time
-      arg = [t.year, t.month, t.mday, t.hour, t.min, t.sec, t.usec]
-      obj = t.gmt? ? klass.gm(*arg) : klass.local(*arg)
-      mark_unmarshalled_obj(node, obj)
-      return true, obj
-    when SOAPArray
-      return @array_factory.soap2obj(klass || Array, node, info, map)
-    when SOAPNil, SOAPBoolean, SOAPInt, SOAPInteger, SOAPDecimal, SOAPDouble
-      return @basetype_factory.soap2obj(nil, node, info, map)
-    when SOAPStruct
-      return rubytypestruct2obj(node, info, map, rubytype)
-    else
-      raise
-    end
-  end
-
-  def rubytypestruct2obj(node, info, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : nil
-    obj = nil
-    case node.type
-    when TYPE_HASH
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Hash
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      node.each do |key, value|
-        next unless key == 'item'
-        obj[Mapping._soap2obj(value['key'], map)] =
-          Mapping._soap2obj(value['value'], map)
-      end
-      if node.key?('default')
-        obj.default = Mapping._soap2obj(node['default'], map)
-      end
-    when TYPE_REGEXP
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Regexp
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      source = node['source'].string
-      options = node['options'].data || 0
-      Regexp.instance_method(:initialize).bind(obj).call(source, options)
-    when TYPE_RANGE
-      klass = rubytype ? Mapping.class_from_name(rubytype) : Range
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      first = Mapping._soap2obj(node['begin'], map)
-      last = Mapping._soap2obj(node['end'], map)
-      exclude_end = node['exclude_end'].data
-      Range.instance_method(:initialize).bind(obj).call(first, last, exclude_end)
-    when TYPE_CLASS
-      obj = Mapping.class_from_name(node['name'].data)
-    when TYPE_MODULE
-      obj = Mapping.class_from_name(node['name'].data)
-    when TYPE_SYMBOL
-      obj = node['id'].data.intern
-    when TYPE_STRUCT
-      typestr = Mapping.elename2name(node['type'].data)
-      klass = Mapping.class_from_name(typestr)
-      if klass.nil?
-        return false
-      end
-      unless klass <= ::Struct
-        return false
-      end
-      obj = Mapping.create_empty_object(klass)
-      mark_unmarshalled_obj(node, obj)
-      node['member'].each do |name, value|
-        obj[Mapping.elename2name(name)] = Mapping._soap2obj(value, map)
-      end
-    else
-      return unknowntype2obj(node, info, map)
-    end
-    return true, obj
-  end
-
-  def anytype2obj(node, info, map)
-    case node
-    when SOAPBasetype
-      return true, node.data
-    when SOAPStruct
-      klass = ::SOAP::Mapping::Object
-      obj = klass.new
-      mark_unmarshalled_obj(node, obj)
-      node.each do |name, value|
-        obj.__add_xmlele_value(XSD::QName.new(nil, name),
-          Mapping._soap2obj(value, map))
-      end
-      unless node.extraattr.empty?
-        obj.instance_variable_set('@__xmlattr', node.extraattr)
-      end
-      return true, obj
-    else
-      return false
-    end
-  end
-
-  def unknowntype2obj(node, info, map)
-    case node
-    when SOAPBasetype
-      return true, node.data
-    when SOAPArray
-      return @array_factory.soap2obj(Array, node, info, map)
-    when SOAPStruct
-      obj = unknownstruct2obj(node, info, map)
-      return true, obj if obj
-      if !@allow_untyped_struct
-        return false
-      end
-      return anytype2obj(node, info, map)
-    else
-      # Basetype which is not defined...
-      return false
-    end
-  end
-
-  def unknownstruct2obj(node, info, map)
-    unless node.type.name
-      return nil
-    end
-    typestr = Mapping.elename2name(node.type.name)
-    klass = Mapping.class_from_name(typestr)
-    if klass.nil? and @allow_untyped_struct
-      klass = Mapping.class_from_name(typestr, true)    # lenient
-    end
-    if klass.nil?
-      return nil
-    end
-    if klass <= ::Exception
-      return exception2obj(klass, node, map)
-    end
-    klass_type = Mapping.class2qname(klass)
-    return nil unless node.type.match(klass_type)
-    obj = nil
-    begin
-      obj = Mapping.create_empty_object(klass)
-    rescue
-      # type name "data" tries Data.new which raises TypeError
-      nil
-    end
-    mark_unmarshalled_obj(node, obj)
-    setiv2obj(obj, node, map)
-    obj
-  end
-
-  def exception2obj(klass, node, map)
-    message = Mapping._soap2obj(node['message'], map)
-    backtrace = Mapping._soap2obj(node['backtrace'], map)
-    obj = Mapping.create_empty_object(klass)
-    obj = obj.exception(message)
-    mark_unmarshalled_obj(node, obj)
-    obj.set_backtrace(backtrace)
-    obj
-  end
-
-  # Only creates empty array.  Do String#replace it with real string.
-  def array2obj(node, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : Array
-    obj = Mapping.create_empty_object(klass)
-    mark_unmarshalled_obj(node, obj)
-    obj
-  end
-
-  # Only creates empty string.  Do String#replace it with real string.
-  def string2obj(node, map, rubytype)
-    klass = rubytype ? Mapping.class_from_name(rubytype) : String
-    obj = Mapping.create_empty_object(klass)
-    mark_unmarshalled_obj(node, obj)
-    obj
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/typeMap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/typeMap.rb
deleted file mode 100644
index 34db19a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/typeMap.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# SOAP4R - Base type mapping definition
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-TypeMap = {
-  XSD::XSDAnySimpleType::Type => SOAPAnySimpleType,
-  XSD::XSDString::Type => SOAPString,
-  XSD::XSDBoolean::Type => SOAPBoolean,
-  XSD::XSDDecimal::Type => SOAPDecimal,
-  XSD::XSDFloat::Type => SOAPFloat,
-  XSD::XSDDouble::Type => SOAPDouble,
-  XSD::XSDDuration::Type => SOAPDuration,
-  XSD::XSDDateTime::Type => SOAPDateTime,
-  XSD::XSDTime::Type => SOAPTime,
-  XSD::XSDDate::Type => SOAPDate,
-  XSD::XSDGYearMonth::Type => SOAPGYearMonth,
-  XSD::XSDGYear::Type => SOAPGYear,
-  XSD::XSDGMonthDay::Type => SOAPGMonthDay,
-  XSD::XSDGDay::Type => SOAPGDay,
-  XSD::XSDGMonth::Type => SOAPGMonth,
-  XSD::XSDHexBinary::Type => SOAPHexBinary,
-  XSD::XSDBase64Binary::Type => SOAPBase64,
-  XSD::XSDAnyURI::Type => SOAPAnyURI,
-  XSD::XSDQName::Type => SOAPQName,
-  XSD::XSDInteger::Type => SOAPInteger,
-  XSD::XSDNonPositiveInteger::Type => SOAPNonPositiveInteger,
-  XSD::XSDNegativeInteger::Type => SOAPNegativeInteger,
-  XSD::XSDLong::Type => SOAPLong,
-  XSD::XSDInt::Type => SOAPInt,
-  XSD::XSDShort::Type => SOAPShort,
-  XSD::XSDByte::Type => SOAPByte,
-  XSD::XSDNonNegativeInteger::Type => SOAPNonNegativeInteger,
-  XSD::XSDUnsignedLong::Type => SOAPUnsignedLong,
-  XSD::XSDUnsignedInt::Type => SOAPUnsignedInt,
-  XSD::XSDUnsignedShort::Type => SOAPUnsignedShort,
-  XSD::XSDUnsignedByte::Type => SOAPUnsignedByte,
-  XSD::XSDPositiveInteger::Type => SOAPPositiveInteger,
-
-  SOAP::SOAPBase64::Type => SOAPBase64,
-}
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb
deleted file mode 100644
index 4efb601..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb
+++ /dev/null
@@ -1,280 +0,0 @@
-# SOAP4R - WSDL encoded mapping registry.
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/namedelements'
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-
-
-module SOAP
-module Mapping
-
-
-class WSDLEncodedRegistry < Registry
-  include TraverseSupport
-
-  attr_reader :definedelements
-  attr_reader :definedtypes
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(definedtypes = XSD::NamedElements::Empty)
-    @definedtypes = definedtypes
-    # @definedelements = definedelements  needed?
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-    # For mapping AnyType element.
-    @rubytype_factory = RubytypeFactory.new(
-      :allow_untyped_struct => true,
-      :allow_original_mapping => true
-    )
-    @schema_element_cache = {}
-  end
-
-  def obj2soap(obj, qname = nil)
-    soap_obj = nil
-    if type = @definedtypes[qname]
-      soap_obj = obj2typesoap(obj, type)
-    else
-      soap_obj = any2soap(obj, qname)
-    end
-    return soap_obj if soap_obj
-    if @excn_handler_obj2soap
-      soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping._obj2soap(yield_obj, self)
-      }
-      return soap_obj if soap_obj
-    end
-    if qname
-      raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
-    else
-      raise MappingError.new("cannot map #{obj.class.name} to SOAP/OM")
-    end
-  end
-
-  # map anything for now: must refer WSDL while mapping.  [ToDo]
-  def soap2obj(node, obj_class = nil)
-    begin
-      return any2obj(node, obj_class)
-    rescue MappingError
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping._soap2obj(yield_node, self)
-	  }
-      rescue Exception
-      end
-    end
-    raise MappingError.new("cannot map #{node.type.name} to Ruby object")
-  end
-
-private
-
-  def any2soap(obj, qname)
-    if obj.nil?
-      SOAPNil.new
-    elsif qname.nil? or qname == XSD::AnyTypeName
-      @rubytype_factory.obj2soap(nil, obj, nil, self)
-    elsif obj.is_a?(XSD::NSDBase)
-      soap2soap(obj, qname)
-    elsif (type = TypeMap[qname])
-      base2soap(obj, type)
-    else
-      nil
-    end
-  end
-
-  def soap2soap(obj, type_qname)
-    if obj.is_a?(SOAPBasetype)
-      obj
-    elsif obj.is_a?(SOAPStruct) && (type = @definedtypes[type_qname])
-      soap_obj = obj
-      mark_marshalled_obj(obj, soap_obj)
-      elements2soap(obj, soap_obj, type.content.elements)
-      soap_obj
-    elsif obj.is_a?(SOAPArray) && (type = @definedtypes[type_qname])
-      soap_obj = obj
-      contenttype = type.child_type
-      mark_marshalled_obj(obj, soap_obj)
-      obj.replace do |ele|
-	Mapping._obj2soap(ele, self, contenttype)
-      end
-      soap_obj
-    else
-      nil
-    end
-  end
-
-  def obj2typesoap(obj, type)
-    if type.is_a?(::WSDL::XMLSchema::SimpleType)
-      simpleobj2soap(obj, type)
-    else
-      complexobj2soap(obj, type)
-    end
-  end
-
-  def simpleobj2soap(obj, type)
-    type.check_lexical_format(obj)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    o = base2soap(obj, TypeMap[type.base])
-    o
-  end
-
-  def complexobj2soap(obj, type)
-    case type.compoundtype
-    when :TYPE_STRUCT
-      struct2soap(obj, type.name, type)
-    when :TYPE_ARRAY
-      array2soap(obj, type.name, type)
-    when :TYPE_MAP
-      map2soap(obj, type.name, type)
-    when :TYPE_SIMPLE
-      simpleobj2soap(obj, type.simplecontent)
-    when :TYPE_EMPTY
-      raise MappingError.new("should be empty") unless obj.nil?
-      SOAPNil.new
-    else
-      raise MappingError.new("unknown compound type: #{type.compoundtype}")
-    end
-  end
-
-  def base2soap(obj, type)
-    soap_obj = nil
-    if type <= XSD::XSDString
-      str = XSD::Charset.encoding_conv(obj.to_s,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = type.new(str)
-      mark_marshalled_obj(obj, soap_obj)
-    else
-      soap_obj = type.new(obj)
-    end
-    soap_obj
-  end
-
-  def struct2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    soap_obj = SOAPStruct.new(type_qname)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      elements2soap(obj, soap_obj, type.content.elements)
-    end
-    soap_obj
-  end
-
-  def array2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    arytype = type.child_type
-    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      obj.each do |item|
-        soap_obj.add(Mapping._obj2soap(item, self, arytype))
-      end
-    end
-    soap_obj
-  end
-
-  MapKeyName = XSD::QName.new(nil, "key")
-  MapValueName = XSD::QName.new(nil, "value")
-  def map2soap(obj, type_qname, type)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    keytype = type.child_type(MapKeyName) || XSD::AnyTypeName
-    valuetype = type.child_type(MapValueName) || XSD::AnyTypeName
-    soap_obj = SOAPStruct.new(MapQName)
-    unless obj.nil?
-      mark_marshalled_obj(obj, soap_obj)
-      obj.each do |key, value|
-        elem = SOAPStruct.new
-        elem.add("key", Mapping._obj2soap(key, self, keytype))
-        elem.add("value", Mapping._obj2soap(value, self, valuetype))
-        # ApacheAxis allows only 'item' here.
-        soap_obj.add("item", elem)
-      end
-    end
-    soap_obj
-  end
-
-  def elements2soap(obj, soap_obj, elements)
-    elements.each do |element|
-      name = element.name.name
-      child_obj = Mapping.get_attribute(obj, name)
-      soap_obj.add(name,
-        Mapping._obj2soap(child_obj, self, element.type || element.name))
-    end
-  end
-
-  def any2obj(node, obj_class)
-    unless obj_class
-      typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name)
-      obj_class = Mapping.class_from_name(typestr)
-    end
-    if obj_class and obj_class.class_variables.include?('@@schema_element')
-      soap2stubobj(node, obj_class)
-    else
-      Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class)
-    end
-  end
-
-  def soap2stubobj(node, obj_class)
-    obj = Mapping.create_empty_object(obj_class)
-    unless node.is_a?(SOAPNil)
-      add_elements2stubobj(node, obj)
-    end
-    obj
-  end
-
-  def add_elements2stubobj(node, obj)
-    elements, as_array = schema_element_definition(obj.class)
-    vars = {}
-    node.each do |name, value|
-      item = elements.find { |k, v| k.name == name }
-      if item
-        elename, class_name = item
-        if klass = Mapping.class_from_name(class_name)
-          # klass must be a SOAPBasetype or a class
-          if klass.ancestors.include?(::SOAP::SOAPBasetype)
-            if value.respond_to?(:data)
-              child = klass.new(value.data).data
-            else
-              child = klass.new(nil).data
-            end
-          else
-            child = Mapping._soap2obj(value, self, klass)
-          end
-        elsif klass = Mapping.module_from_name(class_name)
-          # simpletype
-          if value.respond_to?(:data)
-            child = value.data
-          else
-            raise MappingError.new(
-              "cannot map to a module value: #{class_name}")
-          end
-        else
-          raise MappingError.new("unknown class: #{class_name}")
-        end
-      else      # untyped element is treated as anyType.
-        child = Mapping._soap2obj(value, self)
-      end
-      vars[name] = child
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  # it caches @@schema_element.  this means that @@schema_element must not be
-  # changed while a lifetime of a WSDLLiteralRegistry.
-  def schema_element_definition(klass)
-    @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlliteralregistry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlliteralregistry.rb
deleted file mode 100644
index 7bb8e12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mapping/wsdlliteralregistry.rb
+++ /dev/null
@@ -1,418 +0,0 @@
-# SOAP4R - WSDL literal mapping registry.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-require 'soap/mapping/mapping'
-require 'soap/mapping/typeMap'
-require 'xsd/codegen/gensupport'
-require 'xsd/namedelements'
-
-
-module SOAP
-module Mapping
-
-
-class WSDLLiteralRegistry < Registry
-  attr_reader :definedelements
-  attr_reader :definedtypes
-  attr_accessor :excn_handler_obj2soap
-  attr_accessor :excn_handler_soap2obj
-
-  def initialize(definedtypes = XSD::NamedElements::Empty,
-      definedelements = XSD::NamedElements::Empty)
-    @definedtypes = definedtypes
-    @definedelements = definedelements
-    @excn_handler_obj2soap = nil
-    @excn_handler_soap2obj = nil
-    @schema_element_cache = {}
-    @schema_attribute_cache = {}
-  end
-
-  def obj2soap(obj, qname)
-    soap_obj = nil
-    if ele = @definedelements[qname]
-      soap_obj = obj2elesoap(obj, ele)
-    elsif type = @definedtypes[qname]
-      soap_obj = obj2typesoap(obj, type, true)
-    else
-      soap_obj = any2soap(obj, qname)
-    end
-    return soap_obj if soap_obj
-    if @excn_handler_obj2soap
-      soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
-        Mapping.obj2soap(yield_obj, nil, nil, MAPPING_OPT)
-      }
-      return soap_obj if soap_obj
-    end
-    raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
-  end
-
-  # node should be a SOAPElement
-  def soap2obj(node, obj_class = nil)
-    # obj_class is given when rpc/literal service.  but ignored for now.
-    begin
-      return any2obj(node)
-    rescue MappingError
-    end
-    if @excn_handler_soap2obj
-      begin
-        return @excn_handler_soap2obj.call(node) { |yield_node|
-	    Mapping.soap2obj(yield_node, nil, nil, MAPPING_OPT)
-	  }
-      rescue Exception
-      end
-    end
-    if node.respond_to?(:type)
-      raise MappingError.new("cannot map #{node.type.name} to Ruby object")
-    else
-      raise MappingError.new("cannot map #{node.elename.name} to Ruby object")
-    end
-  end
-
-private
-
-  MAPPING_OPT = { :no_reference => true }
-
-  def obj2elesoap(obj, ele)
-    o = nil
-    qualified = (ele.elementform == 'qualified')
-    if ele.type
-      if type = @definedtypes[ele.type]
-        o = obj2typesoap(obj, type, qualified)
-      elsif type = TypeMap[ele.type]
-        o = base2soap(obj, type)
-      else
-        raise MappingError.new("cannot find type #{ele.type}")
-      end
-    elsif ele.local_complextype
-      o = obj2typesoap(obj, ele.local_complextype, qualified)
-      add_attributes2soap(obj, o)
-    elsif ele.local_simpletype
-      o = obj2typesoap(obj, ele.local_simpletype, qualified)
-    else
-      raise MappingError.new('illegal schema?')
-    end
-    o.elename = ele.name
-    o
-  end
-
-  def obj2typesoap(obj, type, qualified)
-    if type.is_a?(::WSDL::XMLSchema::SimpleType)
-      simpleobj2soap(obj, type)
-    else
-      complexobj2soap(obj, type, qualified)
-    end
-  end
-
-  def simpleobj2soap(obj, type)
-    type.check_lexical_format(obj)
-    return SOAPNil.new if obj.nil?      # ToDo: check nillable.
-    o = base2soap(obj, TypeMap[type.base])
-    o
-  end
-
-  def complexobj2soap(obj, type, qualified)
-    o = SOAPElement.new(type.name)
-    o.qualified = qualified
-    type.each_element do |child_ele|
-      child = Mapping.get_attribute(obj, child_ele.name.name)
-      if child.nil?
-        if child_ele.nillable
-          # ToDo: test
-          # add empty element
-          child_soap = obj2elesoap(nil, child_ele)
-          o.add(child_soap)
-        elsif Integer(child_ele.minoccurs) == 0
-          # nothing to do
-        else
-          raise MappingError.new("nil not allowed: #{child_ele.name.name}")
-        end
-      elsif child_ele.map_as_array?
-        child.each do |item|
-          child_soap = obj2elesoap(item, child_ele)
-          o.add(child_soap)
-        end
-      else
-        child_soap = obj2elesoap(child, child_ele)
-        o.add(child_soap)
-      end
-    end
-    o
-  end
-
-  def any2soap(obj, qname)
-    if obj.is_a?(SOAPElement)
-      obj
-    elsif obj.class.class_variables.include?('@@schema_element')
-      stubobj2soap(obj, qname)
-    elsif obj.is_a?(SOAP::Mapping::Object)
-      mappingobj2soap(obj, qname)
-    elsif obj.is_a?(Hash)
-      ele = SOAPElement.from_obj(obj)
-      ele.elename = qname
-      ele
-    else
-      # expected to be a basetype or an anyType.
-      # SOAPStruct, etc. is used instead of SOAPElement.
-      begin
-        ele = Mapping.obj2soap(obj, nil, nil, MAPPING_OPT)
-        ele.elename = qname
-        ele
-      rescue MappingError
-        ele = SOAPElement.new(qname, obj.to_s)
-      end
-      if obj.respond_to?(:__xmlattr)
-        obj.__xmlattr.each do |key, value|
-          ele.extraattr[key] = value
-        end
-      end
-      ele
-    end
-  end
-
-  def stubobj2soap(obj, qname)
-    ele = SOAPElement.new(qname)
-    ele.qualified =
-      (obj.class.class_variables.include?('@@schema_qualified') and
-      obj.class.class_eval('@@schema_qualified'))
-    add_elements2soap(obj, ele)
-    add_attributes2soap(obj, ele)
-    ele
-  end
-
-  def mappingobj2soap(obj, qname)
-    ele = SOAPElement.new(qname)
-    obj.__xmlele.each do |key, value|
-      if value.is_a?(::Array)
-        value.each do |item|
-          ele.add(obj2soap(item, key))
-        end
-      else
-        ele.add(obj2soap(value, key))
-      end
-    end
-    obj.__xmlattr.each do |key, value|
-      ele.extraattr[key] = value
-    end
-    ele
-  end
-
-  def add_elements2soap(obj, ele)
-    elements, as_array = schema_element_definition(obj.class)
-    if elements
-      elements.each do |elename, type|
-        if child = Mapping.get_attribute(obj, elename.name)
-          if as_array.include?(elename.name)
-            child.each do |item|
-              ele.add(obj2soap(item, elename))
-            end
-          else
-            ele.add(obj2soap(child, elename))
-          end
-        elsif obj.is_a?(::Array) and as_array.include?(elename.name)
-          obj.each do |item|
-            ele.add(obj2soap(item, elename))
-          end
-        end
-      end
-    end
-  end
-  
-  def add_attributes2soap(obj, ele)
-    attributes = schema_attribute_definition(obj.class)
-    if attributes
-      attributes.each do |qname, param|
-        attr = obj.__send__('xmlattr_' +
-          XSD::CodeGen::GenSupport.safevarname(qname.name))
-        ele.extraattr[qname] = attr
-      end
-    end
-  end
-
-  def base2soap(obj, type)
-    soap_obj = nil
-    if type <= XSD::XSDString
-      str = XSD::Charset.encoding_conv(obj.to_s,
-        Thread.current[:SOAPExternalCES], XSD::Charset.encoding)
-      soap_obj = type.new(str)
-    else
-      soap_obj = type.new(obj)
-    end
-    soap_obj
-  end
-
-  def anytype2obj(node)
-    if node.is_a?(::SOAP::SOAPBasetype)
-      return node.data
-    end
-    klass = ::SOAP::Mapping::Object
-    obj = klass.new
-    obj
-  end
-
-  def any2obj(node, obj_class = nil)
-    unless obj_class
-      typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name)
-      obj_class = Mapping.class_from_name(typestr)
-    end
-    if obj_class and obj_class.class_variables.include?('@@schema_element')
-      soapele2stubobj(node, obj_class)
-    elsif node.is_a?(SOAPElement) or node.is_a?(SOAPStruct)
-        # SOAPArray for literal?
-      soapele2plainobj(node)
-    else
-      obj = Mapping.soap2obj(node, nil, obj_class, MAPPING_OPT)
-      add_attributes2plainobj(node, obj)
-      obj
-    end
-  end
-
-  def soapele2stubobj(node, obj_class)
-    obj = Mapping.create_empty_object(obj_class)
-    add_elements2stubobj(node, obj)
-    add_attributes2stubobj(node, obj)
-    obj
-  end
-
-  def soapele2plainobj(node)
-    obj = anytype2obj(node)
-    add_elements2plainobj(node, obj)
-    add_attributes2plainobj(node, obj)
-    obj
-  end
-
-  def add_elements2stubobj(node, obj)
-    elements, as_array = schema_element_definition(obj.class)
-    vars = {}
-    node.each do |name, value|
-      item = elements.find { |k, v| k.name == name }
-      if item
-        elename, class_name = item
-        if klass = Mapping.class_from_name(class_name)
-          # klass must be a SOAPBasetype or a class
-          if klass.ancestors.include?(::SOAP::SOAPBasetype)
-            if value.respond_to?(:data)
-              child = klass.new(value.data).data
-            else
-              child = klass.new(nil).data
-            end
-          else
-            child = any2obj(value, klass)
-          end
-        elsif klass = Mapping.module_from_name(class_name)
-          # simpletype
-          if value.respond_to?(:data)
-            child = value.data
-          else
-            raise MappingError.new(
-              "cannot map to a module value: #{class_name}")
-          end
-        else
-          raise MappingError.new("unknown class/module: #{class_name}")
-        end
-      else      # untyped element is treated as anyType.
-        child = any2obj(value)
-      end
-      if as_array.include?(elename.name)
-        (vars[name] ||= []) << child
-      else
-        vars[name] = child
-      end
-    end
-    Mapping.set_attributes(obj, vars)
-  end
-
-  def add_attributes2stubobj(node, obj)
-    if attributes = schema_attribute_definition(obj.class)
-      define_xmlattr(obj)
-      attributes.each do |qname, class_name|
-        attr = node.extraattr[qname]
-        next if attr.nil? or attr.empty?
-        klass = Mapping.class_from_name(class_name)
-        if klass.ancestors.include?(::SOAP::SOAPBasetype)
-          child = klass.new(attr).data
-        else
-          child = attr
-        end
-        obj.__xmlattr[qname] = child
-        define_xmlattr_accessor(obj, qname)
-      end
-    end
-  end
-
-  def add_elements2plainobj(node, obj)
-    node.each do |name, value|
-      obj.__add_xmlele_value(value.elename, any2obj(value))
-    end
-  end
-
-  def add_attributes2plainobj(node, obj)
-    return if node.extraattr.empty?
-    define_xmlattr(obj)
-    node.extraattr.each do |qname, value|
-      obj.__xmlattr[qname] = value
-      define_xmlattr_accessor(obj, qname)
-    end
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def define_xmlattr_accessor(obj, qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      Mapping.define_attr_accessor(obj, 'xmlattr_' + name,
-        proc { @__xmlattr[qname] },
-        proc { |value| @__xmlattr[qname] = value })
-    end
-  else
-    def define_xmlattr_accessor(obj, qname)
-      name = XSD::CodeGen::GenSupport.safemethodname(qname.name)
-      obj.instance_eval <<-EOS
-        def #{name}
-          @__xmlattr[#{qname.dump}]
-        end
-
-        def #{name}=(value)
-          @__xmlattr[#{qname.dump}] = value
-        end
-      EOS
-    end
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def define_xmlattr(obj)
-      obj.instance_variable_set('@__xmlattr', {})
-      unless obj.respond_to?(:__xmlattr)
-        Mapping.define_attr_accessor(obj, :__xmlattr, proc { @__xmlattr })
-      end
-    end
-  else
-    def define_xmlattr(obj)
-      obj.instance_variable_set('@__xmlattr', {})
-      unless obj.respond_to?(:__xmlattr)
-        obj.instance_eval <<-EOS
-          def __xmlattr
-            @__xmlattr
-          end
-        EOS
-      end
-    end
-  end
-
-  # it caches @@schema_element.  this means that @@schema_element must not be
-  # changed while a lifetime of a WSDLLiteralRegistry.
-  def schema_element_definition(klass)
-    @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass)
-  end
-
-  def schema_attribute_definition(klass)
-    @schema_attribute_cache[klass] ||= Mapping.schema_attribute_definition(klass)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/marshal.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/marshal.rb
deleted file mode 100644
index 1c3d5b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/marshal.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOAP4R - Marshalling/Unmarshalling Ruby's object using SOAP Encoding.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require "soap/mapping"
-require "soap/processor"
-
-
-module SOAP
-
-
-module Marshal
-  # Trying xsd:dateTime data to be recovered as aTime.
-  MarshalMappingRegistry = Mapping::Registry.new(
-    :allow_original_mapping => true)
-  MarshalMappingRegistry.add(
-    Time,
-    ::SOAP::SOAPDateTime,
-    ::SOAP::Mapping::Registry::DateTimeFactory
-  )
-
-  class << self
-  public
-    def dump(obj, io = nil)
-      marshal(obj, MarshalMappingRegistry, io)
-    end
-
-    def load(stream)
-      unmarshal(stream, MarshalMappingRegistry)
-    end
-
-    def marshal(obj, mapping_registry = MarshalMappingRegistry, io = nil)
-      elename = Mapping.name2elename(obj.class.to_s)
-      soap_obj = Mapping.obj2soap(obj, mapping_registry)
-      body = SOAPBody.new
-      body.add(elename, soap_obj)
-      env = SOAPEnvelope.new(nil, body)
-      SOAP::Processor.marshal(env, {}, io)
-    end
-
-    def unmarshal(stream, mapping_registry = MarshalMappingRegistry)
-      env = SOAP::Processor.unmarshal(stream)
-      if env.nil?
-	raise ArgumentError.new("Illegal SOAP marshal format.")
-      end
-      Mapping.soap2obj(env.body.root_node, mapping_registry)
-    end
-  end
-end
-
-
-end
-
-
-SOAPMarshal = SOAP::Marshal
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mimemessage.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mimemessage.rb
deleted file mode 100644
index acb4322..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/mimemessage.rb
+++ /dev/null
@@ -1,240 +0,0 @@
-# SOAP4R - MIME Message implementation.
-# Copyright (C) 2002  Jamie Herre.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/attachment'
-
-
-module SOAP
-
-
-# Classes for MIME message handling.  Should be put somewhere else!
-# Tried using the 'tmail' module but found that I needed something
-# lighter in weight.
-
-
-class MIMEMessage
-  class MIMEMessageError < StandardError; end
-
-  MultipartContentType = 'multipart/\w+'
-
-  class Header
-    attr_accessor :str, :key, :root
-
-    def initialize
-      @attrs = {}
-    end
-
-    def [](key)
-      @attrs[key]
-    end
-
-    def []=(key, value)
-      @attrs[key] = value
-    end
-
-    def to_s
-      @key + ": " + @str
-    end
-  end
-
-  class Headers < Hash
-    def self.parse(str)
-      new.parse(str)
-    end
-
-    def parse(str)
-      header_cache = nil
-      str.each do |line|
-	case line
-	when /^\A[^\: \t]+:\s*.+$/
-	  parse_line(header_cache) if header_cache
-	  header_cache = line.sub(/\r?\n\z/, '')
-	when /^\A\s+(.*)$/
-	  # a continuous line at the beginning line crashes here.
-	  header_cache << line
-	else
-	  raise RuntimeError.new("unexpected header: #{line.inspect}")
-	end
-      end
-      parse_line(header_cache) if header_cache
-      self
-    end
-
-    def parse_line(line)
-      if /^\A([^\: \t]+):\s*(.+)\z/ =~ line
-    	header = parse_rhs($2.strip)
-	header.key = $1.strip
-	self[header.key.downcase] = header
-      else
-	raise RuntimeError.new("unexpected header line: #{line.inspect}")
-      end
-    end
-
-    def parse_rhs(str)
-      a = str.split(/;+\s+/)
-      header = Header.new
-      header.str = str
-      header.root = a.shift
-      a.each do |pair|
-	if pair =~ /(\w+)\s*=\s*"?([^"]+)"?/
-	  header[$1.downcase] = $2
-	else
-	  raise RuntimeError.new("unexpected header component: #{pair.inspect}")
-	end
-      end
-      header
-    end
-
-    def add(key, value)
-      if key != nil and value != nil
-	header = parse_rhs(value)
-	header.key = key
-	self[key.downcase] = header
-      end
-    end
-
-    def to_s
-      self.values.collect { |hdr|
-	hdr.to_s
-      }.join("\r\n")
-    end
-  end
-
-  class Part
-    attr_accessor :headers, :body
-
-    def initialize
-      @headers = Headers.new
-      @headers.add("Content-Transfer-Encoding", "8bit")
-      @body = nil
-      @contentid = nil
-    end
-
-    def self.parse(str)
-      new.parse(str)
-    end
-
-    def parse(str)
-      headers, body = str.split(/\r\n\r\n/s)
-      if headers != nil and body != nil
-	@headers = Headers.parse(headers)
-	@body = body.sub(/\r\n\z/, '')
-      else
-	raise RuntimeError.new("unexpected part: #{str.inspect}")
-      end
-      self
-    end
-
-    def contentid
-      if @contentid == nil and @headers.key?('content-id')
-	@contentid = @headers['content-id'].str
-	@contentid = $1 if @contentid =~ /^<(.+)>$/
-      end
-      @contentid
-    end
-
-    alias content body
-
-    def to_s
-      @headers.to_s + "\r\n\r\n" + @body
-    end
-  end
-
-  def initialize
-    @parts = []
-    @headers = Headers.new
-    @root = nil
-  end
-
-  def self.parse(head, str)
-    new.parse(head, str)
-  end
-
-  attr_reader :parts, :headers
-
-  def close
-    @headers.add(
-      "Content-Type",
-      "multipart/related; type=\"text/xml\"; boundary=\"#{boundary}\"; start=\"#{@parts[0].contentid}\""
-    )
-  end
-
-  def parse(head, str)
-    @headers = Headers.parse(head + "\r\n" + "From: jfh\r\n")
-    boundary = @headers['content-type']['boundary']
-    if boundary != nil
-      parts = str.split(/--#{Regexp.quote(boundary)}\s*(?:\r\n|--\r\n)/)
-      part = parts.shift	# preamble must be ignored.
-      @parts = parts.collect { |part| Part.parse(part) }
-    else
-      @parts = [Part.parse(str)]
-    end
-    if @parts.length < 1
-      raise MIMEMessageError.new("This message contains no valid parts!")
-    end
-    self
-  end
-
-  def root
-    if @root == nil
-      start = @headers['content-type']['start']
-      @root = (start && @parts.find { |prt| prt.contentid == start }) ||
-	@parts[0]
-    end
-    @root
-  end
-
-  def boundary
-    if @boundary == nil
-      @boundary = "----=Part_" + __id__.to_s + rand.to_s
-    end
-    @boundary
-  end
-
-  def add_part(content)
-    part = Part.new
-    part.headers.add("Content-Type",
-      "text/xml; charset=" + XSD::Charset.xml_encoding_label)
-    part.headers.add("Content-ID", Attachment.contentid(part))
-    part.body = content
-    @parts.unshift(part)
-  end
-
-  def add_attachment(attach)
-    part = Part.new
-    part.headers.add("Content-Type", attach.contenttype)
-    part.headers.add("Content-ID", attach.mime_contentid)
-    part.body = attach.content
-    @parts.unshift(part)
-  end
-
-  def has_parts?
-    (@parts.length > 0)
-  end
-
-  def headers_str
-    @headers.to_s
-  end
-
-  def content_str
-    str = ''
-    @parts.each do |prt|
-      str << "--" + boundary + "\r\n"
-      str << prt.to_s + "\r\n"
-    end
-    str << '--' + boundary + "--\r\n"
-    str
-  end
-
-  def to_s
-    str = headers_str + "\r\n\r\n" + conent_str
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/netHttpClient.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/netHttpClient.rb
deleted file mode 100644
index 10d68e2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/netHttpClient.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-# SOAP4R - net/http wrapper
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'net/http'
-
-
-module SOAP
-
-
-class NetHttpClient
-
-  SSLEnabled = begin
-      require 'net/https'
-      true
-    rescue LoadError
-      false
-    end
-
-  attr_reader :proxy
-  attr_accessor :no_proxy
-  attr_accessor :debug_dev
-  attr_accessor :ssl_config		# ignored for now.
-  attr_accessor :protocol_version	# ignored for now.
-  attr_accessor :connect_timeout
-  attr_accessor :send_timeout           # ignored for now.
-  attr_accessor :receive_timeout
-
-  def initialize(proxy = nil, agent = nil)
-    @proxy = proxy ? URI.parse(proxy) : nil
-    @agent = agent
-    @debug_dev = nil
-    @session_manager = SessionManager.new
-    @no_proxy = @ssl_config = @protocol_version = nil
-    @connect_timeout = @send_timeout = @receive_timeout = nil
-  end
-
-  def test_loopback_response
-    raise NotImplementedError.new("not supported for now")
-  end
-  
-  def proxy=(proxy)
-    if proxy.nil?
-      @proxy = nil
-    else
-      if proxy.is_a?(URI)
-        @proxy = proxy
-      else
-        @proxy = URI.parse(proxy)
-      end
-      if @proxy.scheme == nil or @proxy.scheme.downcase != 'http' or
-	  @proxy.host == nil or @proxy.port == nil
-	raise ArgumentError.new("unsupported proxy `#{proxy}'")
-      end
-    end
-    reset_all
-    @proxy
-  end
-
-  def set_basic_auth(uri, user_id, passwd)
-    # net/http does not handle url.
-    @basic_auth = [user_id, passwd]
-    raise NotImplementedError.new("basic_auth is not supported under soap4r + net/http.")
-  end
-
-  def set_cookie_store(filename)
-    raise NotImplementedError.new
-  end
-
-  def save_cookie_store(filename)
-    raise NotImplementedError.new
-  end
-
-  def reset(url)
-    # no persistent connection.  ignored.
-  end
-
-  def reset_all
-    # no persistent connection.  ignored.
-  end
-
-  def post(url, req_body, header = {})
-    unless url.is_a?(URI)
-      url = URI.parse(url)
-    end
-    extra = header.dup
-    extra['User-Agent'] = @agent if @agent
-    res = start(url) { |http|
-      http.post(url.request_uri, req_body, extra)
-    }
-    Response.new(res)
-  end
-
-  def get_content(url, header = {})
-    unless url.is_a?(URI)
-      url = URI.parse(url)
-    end
-    extra = header.dup
-    extra['User-Agent'] = @agent if @agent
-    res = start(url) { |http|
-	http.get(url.request_uri, extra)
-      }
-    res.body
-  end
-
-private
-
-  def start(url)
-    http = create_connection(url)
-    response = nil
-    http.start { |worker|
-      response = yield(worker)
-      worker.finish
-    }
-    @debug_dev << response.body if @debug_dev
-    response
-  end
-
-  def create_connection(url)
-    proxy_host = proxy_port = nil
-    unless no_proxy?(url)
-      proxy_host = @proxy.host
-      proxy_port = @proxy.port
-    end
-    http = Net::HTTP::Proxy(proxy_host, proxy_port).new(url.host, url.port)
-    if http.respond_to?(:set_debug_output)
-      http.set_debug_output(@debug_dev)
-    end
-    http.open_timeout = @connect_timeout if @connect_timeout
-    http.read_timeout = @receive_timeout if @receive_timeout
-    case url
-    when URI::HTTPS
-      if SSLEnabled
-	http.use_ssl = true
-      else
-	raise RuntimeError.new("Cannot connect to #{url} (OpenSSL is not installed.)")
-      end
-    when URI::HTTP
-      # OK
-    else
-      raise RuntimeError.new("Cannot connect to #{url} (Not HTTP.)")
-    end
-    http
-  end
-
-  NO_PROXY_HOSTS = ['localhost']
-
-  def no_proxy?(uri)
-    if !@proxy or NO_PROXY_HOSTS.include?(uri.host)
-      return true
-    end
-    if @no_proxy
-      @no_proxy.scan(/([^:,]*)(?::(\d+))?/) do |host, port|
-  	if /(\A|\.)#{Regexp.quote(host)}\z/i =~ uri.host &&
-	    (!port || uri.port == port.to_i)
-	  return true
-	end
-      end
-    else
-      false
-    end
-  end
-
-  class SessionManager
-    attr_accessor :connect_timeout
-    attr_accessor :send_timeout
-    attr_accessor :receive_timeout
-  end
-
-  class Response
-    attr_reader :content
-    attr_reader :status
-    attr_reader :reason
-    attr_reader :contenttype
-
-    def initialize(res)
-      @status = res.code.to_i
-      @reason = res.message
-      @contenttype = res['content-type']
-      @content = res.body
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/parser.rb
deleted file mode 100644
index 412fd48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/parser.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-# SOAP4R - SOAP XML Instance Parser library.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/ns'
-require 'xsd/xmlparser'
-require 'soap/soap'
-require 'soap/baseData'
-require 'soap/encodingstyle/handler'
-
-
-module SOAP
-
-
-class Parser
-  include SOAP
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnexpectedElementError < ParseError; end
-
-private
-
-  class ParseFrame
-    attr_reader :node
-    attr_reader :name
-    attr_reader :ns, :encodingstyle
-
-    class NodeContainer
-      def initialize(node)
-	@node = node
-      end
-
-      def node
-	@node
-      end
-
-      def replace_node(node)
-	@node = node
-      end
-    end
-
-  public
-
-    def initialize(ns, name, node, encodingstyle)
-      @ns = ns
-      @name = name
-      self.node = node
-      @encodingstyle = encodingstyle
-    end
-
-    def node=(node)
-      @node = NodeContainer.new(node)
-    end
-  end
-
-public
-
-  attr_accessor :envelopenamespace
-  attr_accessor :default_encodingstyle
-  attr_accessor :decode_typemap
-  attr_accessor :allow_unqualified_element
-
-  def initialize(opt = {})
-    @opt = opt
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @handlers = {}
-    @envelopenamespace = opt[:envelopenamespace] || EnvelopeNamespace
-    @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace
-    @decode_typemap = opt[:decode_typemap] || nil
-    @allow_unqualified_element = opt[:allow_unqualified_element] || false
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-
-    @handlers.each do |uri, handler|
-      handler.decode_prologue
-    end
-
-    @parser.do_parse(string_or_readable)
-
-    unless @parsestack.empty?
-      raise FormatDecodeError.new("Unbalanced tag in XML.")
-    end
-
-    @handlers.each do |uri, handler|
-      handler.decode_epilogue
-    end
-
-    @lastnode
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = parent_encodingstyle = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-      parent_encodingstyle = lastframe.encodingstyle
-    else
-      ns = XSD::NS.new
-      parent = ParseFrame::NodeContainer.new(nil)
-      parent_encodingstyle = nil
-    end
-
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    encodingstyle = find_encodingstyle(ns, attrs)
-
-    # Children's encodingstyle is derived from its parent.
-    if encodingstyle.nil?
-      if parent.node.is_a?(SOAPHeader)
-        encodingstyle = LiteralNamespace
-      else
-        encodingstyle = parent_encodingstyle || @default_encodingstyle
-      end
-    end
-
-    node = decode_tag(ns, name, attrs, parent, encodingstyle)
-
-    @parsestack << ParseFrame.new(ns, name, node, encodingstyle)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      decode_text(lastframe.ns, text, lastframe.encodingstyle)
-    else
-      # Ignore Text outside of SOAP Envelope.
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("Closing element name '#{ name }' does not match with opening element '#{ lastframe.name }'.")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node, lastframe.encodingstyle)
-    @lastnode = lastframe.node.node
-  end
-
-private
-
-  def find_encodingstyle(ns, attrs)
-    attrs.each do |key, value|
-      if (ns.compare(@envelopenamespace, AttrEncodingStyle, key))
-	return value
-      end
-    end
-    nil
-  end
-
-  def decode_tag(ns, name, attrs, parent, encodingstyle)
-    ele = ns.parse(name)
-
-    # Envelope based parsing.
-    if ((ele.namespace == @envelopenamespace) ||
-	(@allow_unqualified_element && ele.namespace.nil?))
-      o = decode_soap_envelope(ns, ele, attrs, parent)
-      return o if o
-    end
-
-    # Encoding based parsing.
-    handler = find_handler(encodingstyle)
-    if handler
-      return handler.decode_tag(ns, ele, attrs, parent)
-    else
-      raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-  end
-
-  def decode_tag_end(ns, node, encodingstyle)
-    return unless encodingstyle
-
-    handler = find_handler(encodingstyle)
-    if handler
-      return handler.decode_tag_end(ns, node)
-    else
-      raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
-    end
-  end
-
-  def decode_text(ns, text, encodingstyle)
-    handler = find_handler(encodingstyle)
-
-    if handler
-      handler.decode_text(ns, text)
-    else
-      # How should I do?
-    end
-  end
-
-  def decode_soap_envelope(ns, ele, attrs, parent)
-    o = nil
-    if ele.name == EleEnvelope
-      o = SOAPEnvelope.new
-      if ext = @opt[:external_content]
-	ext.each do |k, v|
-	  o.external_content[k] = v
-	end
-      end
-    elsif ele.name == EleHeader
-      unless parent.node.is_a?(SOAPEnvelope)
-	raise FormatDecodeError.new("Header should be a child of Envelope.")
-      end
-      o = SOAPHeader.new
-      parent.node.header = o
-    elsif ele.name == EleBody
-      unless parent.node.is_a?(SOAPEnvelope)
-	raise FormatDecodeError.new("Body should be a child of Envelope.")
-      end
-      o = SOAPBody.new
-      parent.node.body = o
-    elsif ele.name == EleFault
-      unless parent.node.is_a?(SOAPBody)
-	raise FormatDecodeError.new("Fault should be a child of Body.")
-      end
-      o = SOAPFault.new
-      parent.node.fault = o
-    end
-    o
-  end
-
-  def find_handler(encodingstyle)
-    unless @handlers.key?(encodingstyle)
-      handler_factory = SOAP::EncodingStyle::Handler.handler(encodingstyle) ||
-	SOAP::EncodingStyle::Handler.handler(EncodingNamespace)
-      handler = handler_factory.new(@parser.charset)
-      handler.decode_typemap = @decode_typemap
-      handler.decode_prologue
-      @handlers[encodingstyle] = handler
-    end
-    @handlers[encodingstyle]
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/processor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/processor.rb
deleted file mode 100644
index 3c6dbed..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/processor.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# SOAP4R - marshal/unmarshal interface.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'soap/soap'
-require 'soap/element'
-require 'soap/parser'
-require 'soap/generator'
-require 'soap/encodingstyle/soapHandler'
-require 'soap/encodingstyle/literalHandler'
-require 'soap/encodingstyle/aspDotNetHandler'
-
-
-module SOAP
-
-
-module Processor
-  @@default_parser_option = {}
-
-  class << self
-  public
-
-    def marshal(env, opt = {}, io = nil)
-      generator = create_generator(opt)
-      marshalled_str = generator.generate(env, io)
-      unless env.external_content.empty?
-	opt[:external_content] = env.external_content
-      end
-      marshalled_str
-    end
-
-    def unmarshal(stream, opt = {})
-      parser = create_parser(opt)
-      parser.parse(stream)
-    end
-
-    def default_parser_option=(rhs)
-      @@default_parser_option = rhs
-    end
-
-    def default_parser_option
-      @@default_parser_option
-    end
-
-  private
-
-    def create_generator(opt)
-      SOAPGenerator.new(opt)
-    end
-
-    def create_parser(opt)
-      if opt.empty?
-	opt = @@default_parser_option
-      end
-      ::SOAP::Parser.new(opt)
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/property.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/property.rb
deleted file mode 100644
index 882dcc6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/property.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-# soap/property.rb: SOAP4R - Property implementation.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-# Property stream format:
-#
-#   line separator is \r?\n.  1 line per a property.
-#   line which begins with '#' is a comment line.  empty line is ignored, too.
-#   key/value separator is ':' or '='.
-#   '\' as escape character.  but line separator cannot be escaped.
-#   \s at the head/tail of key/value are trimmed.
-#
-#   '[' + key + ']' indicates property section.  for example,
-#
-#     [aaa.bbb]
-#     ccc = ddd
-#     eee.fff = ggg
-#     []
-#     aaa.hhh = iii
-#
-#   is the same as;
-#
-#     aaa.bbb.ccc = ddd
-#     aaa.bbb.eee.fff = ggg
-#     aaa.hhh = iii
-#
-class Property
-  FrozenError = (RUBY_VERSION >= "1.9.0") ? RuntimeError : TypeError
-
-  include Enumerable
-
-  module Util
-    def const_from_name(fqname)
-      fqname.split("::").inject(Kernel) { |klass, name| klass.const_get(name) }
-    end
-    module_function :const_from_name
-
-    def require_from_name(fqname)
-      require File.join(fqname.split("::").collect { |ele| ele.downcase })
-    end
-    module_function :require_from_name
-  end
-
-  def self.load(stream)
-    new.load(stream)
-  end
-
-  def self.loadproperty(propname)
-    new.loadproperty(propname)
-  end
-
-  def initialize
-    @store = Hash.new
-    @hook = Hash.new
-    @self_hook = Array.new
-    @locked = false
-  end
-
-  KEY_REGSRC = '([^=:\\\\]*(?:\\\\.[^=:\\\\]*)*)'
-  DEF_REGSRC = '\\s*' + KEY_REGSRC + '\\s*[=:]\\s*(.*)'
-  COMMENT_REGEXP = Regexp.new('^(?:#.*|)$')
-  CATDEF_REGEXP = Regexp.new("^\\[\\s*#{KEY_REGSRC}\\s*\\]$")
-  LINE_REGEXP = Regexp.new("^#{DEF_REGSRC}$")
-  def load(stream)
-    key_prefix = ""
-    stream.each_with_index do |line, lineno|
-      line.sub!(/\r?\n\z/, '')
-      case line
-      when COMMENT_REGEXP
-	next
-      when CATDEF_REGEXP
-	key_prefix = $1.strip
-      when LINE_REGEXP
-	key, value = $1.strip, $2.strip
-	key = "#{key_prefix}.#{key}" unless key_prefix.empty?
-	key, value = loadstr(key), loadstr(value)
-	self[key] = value
-      else
-	raise TypeError.new(
-	  "property format error at line #{lineno + 1}: `#{line}'")
-      end
-    end
-    self
-  end
-
-  # find property from $:.
-  def loadproperty(propname)
-    return loadpropertyfile(propname) if File.file?(propname)
-    $:.each do |path|
-      if File.file?(file = File.join(path, propname))
-        return loadpropertyfile(file)
-      end
-    end
-    nil
-  end
-
-  # name: a Symbol, String or an Array
-  def [](name)
-    referent(name_to_a(name))
-  end
-
-  # name: a Symbol, String or an Array
-  # value: an Object
-  def []=(name, value)
-    name_pair = name_to_a(name).freeze
-    hooks = assign(name_pair, value)
-    hooks.each do |hook|
-      hook.call(name_pair, value)
-    end
-    value
-  end
-
-  # value: an Object
-  # key is generated by property
-  def <<(value)
-    self[generate_new_key] = value
-  end
-
-  # name: a Symbol, String or an Array; nil means hook to the root
-  # cascade: true/false; for cascading hook of sub key
-  # hook: block which will be called with 2 args, name and value
-  def add_hook(name = nil, cascade = false, &hook)
-    if name == nil or name == true or name == false
-      cascade = name
-      assign_self_hook(cascade, &hook)
-    else
-      assign_hook(name_to_a(name), cascade, &hook)
-    end
-  end
-
-  def each
-    @store.each do |key, value|
-      yield(key, value)
-    end
-  end
-
-  def empty?
-    @store.empty?
-  end
-
-  def keys
-    @store.keys
-  end
-
-  def values
-    @store.values
-  end
-
-  def lock(cascade = false)
-    if cascade
-      each_key do |key|
-	key.lock(cascade)
-      end
-    end
-    @locked = true
-    self
-  end
-
-  def unlock(cascade = false)
-    @locked = false
-    if cascade
-      each_key do |key|
-	key.unlock(cascade)
-      end
-    end
-    self
-  end
-
-  def locked?
-    @locked
-  end
-
-protected
-
-  def deref_key(key)
-    check_lock(key)
-    ref = @store[key] ||= self.class.new
-    unless propkey?(ref)
-      raise ArgumentError.new("key `#{key}' already defined as a value")
-    end
-    ref
-  end
-
-  def local_referent(key)
-    check_lock(key)
-    if propkey?(@store[key]) and @store[key].locked?
-      raise FrozenError.new("cannot split any key from locked property")
-    end
-    @store[key]
-  end
-
-  def local_assign(key, value)
-    check_lock(key)
-    if @locked
-      if propkey?(value)
-	raise FrozenError.new("cannot add any key to locked property")
-      elsif propkey?(@store[key])
-	raise FrozenError.new("cannot override any key in locked property")
-      end
-    end
-    @store[key] = value
-  end
-
-  def local_hook(key, direct)
-    hooks = []
-    (@self_hook + (@hook[key] || NO_HOOK)).each do |hook, cascade|
-      hooks << hook if direct or cascade
-    end
-    hooks
-  end
-
-  def local_assign_hook(key, cascade, &hook)
-    check_lock(key)
-    @store[key] ||= nil
-    (@hook[key] ||= []) << [hook, cascade]
-  end
-
-private
-
-  NO_HOOK = [].freeze
-
-  def referent(ary)
-    ary[0..-2].inject(self) { |ref, name|
-      ref.deref_key(to_key(name))
-    }.local_referent(to_key(ary.last))
-  end
-
-  def assign(ary, value)
-    ref = self
-    hook = NO_HOOK
-    ary[0..-2].each do |name|
-      key = to_key(name)
-      hook += ref.local_hook(key, false)
-      ref = ref.deref_key(key)
-    end
-    last_key = to_key(ary.last)
-    ref.local_assign(last_key, value)
-    hook + ref.local_hook(last_key, true)
-  end
-
-  def assign_hook(ary, cascade, &hook)
-    ary[0..-2].inject(self) { |ref, name|
-      ref.deref_key(to_key(name))
-    }.local_assign_hook(to_key(ary.last), cascade, &hook)
-  end
-
-  def assign_self_hook(cascade, &hook)
-    check_lock(nil)
-    @self_hook << [hook, cascade]
-  end
-
-  def each_key
-    self.each do |key, value|
-      if propkey?(value)
-	yield(value)
-      end
-    end
-  end
-
-  def check_lock(key)
-    if @locked and (key.nil? or !@store.key?(key))
-      raise FrozenError.new("cannot add any key to locked property")
-    end
-  end
-
-  def propkey?(value)
-    value.is_a?(::SOAP::Property)
-  end
-
-  def name_to_a(name)
-    case name
-    when Symbol
-      [name]
-    when String
-      name.scan(/[^.\\]+(?:\\.[^.\\])*/)	# split with unescaped '.'
-    when Array
-      name
-    else
-      raise ArgumentError.new("Unknown name #{name}(#{name.class})")
-    end
-  end
-
-  def to_key(name)
-    name.to_s.downcase
-  end
-
-  def generate_new_key
-    if @store.empty?
-      "0"
-    else
-      (key_max + 1).to_s
-    end
-  end
-
-  def key_max
-    (@store.keys.max { |l, r| l.to_s.to_i <=> r.to_s.to_i }).to_s.to_i
-  end
-
-  def loadpropertyfile(file)
-    puts "find property at #{file}" if $DEBUG
-    File.open(file) do |f|
-      load(f)
-    end
-  end
-
-  def loadstr(str)
-    str.gsub(/\\./) { |c| eval("\"#{c}\"") }
-  end
-end
-
-
-end
-
-
-# for ruby/1.6.
-unless Enumerable.instance_methods.include?('inject')
-  module Enumerable
-    def inject(init)
-      result = init
-      each do |item|
-	result = yield(result, item)
-      end
-      result
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/cgistub.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/cgistub.rb
deleted file mode 100644
index 487f05a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/cgistub.rb
+++ /dev/null
@@ -1,206 +0,0 @@
-# SOAP4R - CGI/mod_ruby stub library
-# Copyright (C) 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/streamHandler'
-require 'webrick/httpresponse'
-require 'webrick/httpstatus'
-require 'logger'
-require 'soap/rpc/soaplet'
-
-
-module SOAP
-module RPC
-
-
-###
-# SYNOPSIS
-#   CGIStub.new
-#
-# DESCRIPTION
-#   To be written...
-#
-class CGIStub < Logger::Application
-  include SOAP
-  include WEBrick
-
-  class SOAPRequest
-    attr_reader :body
-
-    def [](var); end
-
-    def meta_vars; end
-  end
-
-  class SOAPStdinRequest < SOAPRequest
-    attr_reader :body
-
-    def initialize(stream)
-      size = ENV['CONTENT_LENGTH'].to_i || 0
-      @body = stream.read(size)
-    end
-
-    def [](var)
-      ENV[var.gsub(/-/, '_').upcase]
-    end
-
-    def meta_vars
-      {
-        'HTTP_SOAPACTION' => ENV['HTTP_SOAPAction']
-      }
-    end
-  end
-
-  class SOAPFCGIRequest < SOAPRequest
-    attr_reader :body
-
-    def initialize(request)
-      @request = request
-      @body = @request.in.read
-    end
-
-    def [](var)
-      @request.env[var.gsub(/-/, '_').upcase]
-    end
-
-    def meta_vars
-      {
-        'HTTP_SOAPACTION' => @request.env['HTTP_SOAPAction']
-      }
-    end
-  end
-
-  def initialize(appname, default_namespace)
-    super(appname)
-    set_log(STDERR)
-    self.level = ERROR
-    @default_namespace = default_namespace
-    @remote_host = ENV['REMOTE_HOST'] || ENV['REMOTE_ADDR'] || 'unknown'
-    @router = ::SOAP::RPC::Router.new(self.class.name)
-    @soaplet = ::SOAP::RPC::SOAPlet.new(@router)
-    on_init
-  end
-  
-  def on_init
-    # do extra initialization in a derived class if needed.
-  end
-
-  def mapping_registry
-    @router.mapping_registry
-  end
-
-  def mapping_registry=(value)
-    @router.mapping_registry = value
-  end
-
-  def generate_explicit_type
-    @router.generate_explicit_type
-  end
-
-  def generate_explicit_type=(generate_explicit_type)
-    @router.generate_explicit_type = generate_explicit_type
-  end
-
-  # servant entry interface
-
-  def add_rpc_servant(obj, namespace = @default_namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-  alias add_servant add_rpc_servant
-
-  def add_headerhandler(obj)
-    @router.add_headerhandler(obj)
-  end
-  alias add_rpc_headerhandler add_headerhandler
-
-  # method entry interface
-
-  def add_rpc_method(obj, name, *param)
-    add_rpc_method_with_namespace_as(@default_namespace, obj, name, name, *param)
-  end
-  alias add_method add_rpc_method
-
-  def add_rpc_method_as(obj, name, name_as, *param)
-    add_rpc_method_with_namespace_as(@default_namespace, obj, name, name_as, *param)
-  end
-  alias add_method_as add_rpc_method_as
-
-  def add_rpc_method_with_namespace(namespace, obj, name, *param)
-    add_rpc_method_with_namespace_as(namespace, obj, name, name, *param)
-  end
-  alias add_method_with_namespace add_rpc_method_with_namespace
-
-  def add_rpc_method_with_namespace_as(namespace, obj, name, name_as, *param)
-    qname = XSD::QName.new(namespace, name_as)
-    soapaction = nil
-    param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    @router.add_rpc_operation(obj, qname, soapaction, name, param_def)
-  end
-  alias add_method_with_namespace_as add_rpc_method_with_namespace_as
-
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    @router.add_document_operation(receiver, soapaction, name, param_def, opt)
-  end
-
-  def set_fcgi_request(request)
-    @fcgi = request
-  end
-
-private
-
-  HTTPVersion = WEBrick::HTTPVersion.new('1.0')       # dummy; ignored
-
-  def run
-    res = WEBrick::HTTPResponse.new({:HTTPVersion => HTTPVersion})
-    begin
-      @log.info { "received a request from '#{ @remote_host }'" }
-      if @fcgi
-        req = SOAPFCGIRequest.new(@fcgi)
-      else
-        req = SOAPStdinRequest.new($stdin)
-      end
-      @soaplet.do_POST(req, res)
-    rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex
-      res.set_error(ex)
-    rescue HTTPStatus::Error => ex
-      res.set_error(ex)
-    rescue HTTPStatus::Status => ex
-      res.status = ex.code
-    rescue StandardError, NameError => ex # for Ruby 1.6
-      res.set_error(ex, true)
-    ensure
-      if defined?(MOD_RUBY)
-        r = Apache.request
-        r.status = res.status
-        r.content_type = res.content_type
-        r.send_http_header
-        buf = res.body
-      else
-        buf = ''
-        res.send_response(buf)
-        buf.sub!(/^[^\r]+\r\n/, '')       # Trim status line.
-      end
-      @log.debug { "SOAP CGI Response:\n#{ buf }" }
-      if @fcgi
-        @fcgi.out.print buf
-        @fcgi.finish
-        @fcgi = nil
-      else
-        print buf
-      end
-    end
-    0
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/driver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/driver.rb
deleted file mode 100644
index 0fb4e82..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/driver.rb
+++ /dev/null
@@ -1,254 +0,0 @@
-# SOAP4R - SOAP RPC driver
-# Copyright (C) 2000, 2001, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/mapping'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/rpc'
-require 'soap/rpc/proxy'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/property'
-require 'soap/header/handlerset'
-
-
-module SOAP
-module RPC
-
-
-class Driver
-  class << self
-    if RUBY_VERSION >= "1.7.0"
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        define_method(name) {
-          @proxy.__send__(name)
-        }
-        if assignable
-          aname = name + '='
-          define_method(aname) { |rhs|
-            @proxy.__send__(aname, rhs)
-          }
-        end
-      end
-    else
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @proxy.#{name}
-          end
-        EOS
-        if assignable
-          module_eval <<-EOS
-            def #{name}=(value)
-              @proxy.#{name} = value
-            end
-          EOS
-        end
-      end
-    end
-  end
-
-  __attr_proxy :endpoint_url, true
-  __attr_proxy :mapping_registry, true
-  __attr_proxy :default_encodingstyle, true
-  __attr_proxy :generate_explicit_type, true
-  __attr_proxy :allow_unqualified_element, true
-  __attr_proxy :headerhandler
-  __attr_proxy :streamhandler
-  __attr_proxy :test_loopback_response
-  __attr_proxy :reset_stream
-
-  attr_reader :proxy
-  attr_reader :options
-  attr_accessor :soapaction
-
-  def inspect
-    "#<#{self.class}:#{@proxy.inspect}>"
-  end
-
-  def httpproxy
-    options["protocol.http.proxy"]
-  end
-
-  def httpproxy=(httpproxy)
-    options["protocol.http.proxy"] = httpproxy
-  end
-
-  def wiredump_dev
-    options["protocol.http.wiredump_dev"]
-  end
-
-  def wiredump_dev=(wiredump_dev)
-    options["protocol.http.wiredump_dev"] = wiredump_dev
-  end
-
-  def mandatorycharset
-    options["protocol.mandatorycharset"]
-  end
-
-  def mandatorycharset=(mandatorycharset)
-    options["protocol.mandatorycharset"] = mandatorycharset
-  end
-
-  def wiredump_file_base
-    options["protocol.wiredump_file_base"]
-  end
-
-  def wiredump_file_base=(wiredump_file_base)
-    options["protocol.wiredump_file_base"] = wiredump_file_base
-  end
-
-  def initialize(endpoint_url, namespace = nil, soapaction = nil)
-    @namespace = namespace
-    @soapaction = soapaction
-    @options = setup_options
-    @wiredump_file_base = nil
-    @proxy = Proxy.new(endpoint_url, @soapaction, @options)
-  end
-
-  def loadproperty(propertyname)
-    unless options.loadproperty(propertyname)
-      raise LoadError.new("No such property to load -- #{propertyname}")
-    end
-  end
-
-  def add_rpc_method(name, *params)
-    add_rpc_method_with_soapaction_as(name, name, @soapaction, *params)
-  end
-
-  def add_rpc_method_as(name, name_as, *params)
-    add_rpc_method_with_soapaction_as(name, name_as, @soapaction, *params)
-  end
-
-  def add_rpc_method_with_soapaction(name, soapaction, *params)
-    add_rpc_method_with_soapaction_as(name, name, soapaction, *params)
-  end
-
-  def add_rpc_method_with_soapaction_as(name, name_as, soapaction, *params)
-    param_def = SOAPMethod.create_rpc_param_def(params)
-    qname = XSD::QName.new(@namespace, name_as)
-    @proxy.add_rpc_method(qname, soapaction, name, param_def)
-    add_rpc_method_interface(name, param_def)
-  end
-
-  # add_method is for shortcut of typical rpc/encoded method definition.
-  alias add_method add_rpc_method
-  alias add_method_as add_rpc_method_as
-  alias add_method_with_soapaction add_rpc_method_with_soapaction
-  alias add_method_with_soapaction_as add_rpc_method_with_soapaction_as
-
-  def add_document_method(name, soapaction, req_qname, res_qname)
-    param_def = SOAPMethod.create_doc_param_def(req_qname, res_qname)
-    @proxy.add_document_method(soapaction, name, param_def)
-    add_document_method_interface(name, param_def)
-  end
-
-  def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
-    @proxy.add_rpc_operation(qname, soapaction, name, param_def, opt)
-    add_rpc_method_interface(name, param_def)
-  end
-
-  def add_document_operation(soapaction, name, param_def, opt = {})
-    @proxy.add_document_operation(soapaction, name, param_def, opt)
-    add_document_method_interface(name, param_def)
-  end
-
-  def invoke(headers, body)
-    if headers and !headers.is_a?(SOAPHeader)
-      headers = create_header(headers)
-    end
-    set_wiredump_file_base(body.elename.name)
-    env = @proxy.invoke(headers, body)
-    if env.nil?
-      return nil, nil
-    else
-      return env.header, env.body
-    end
-  end
-
-  def call(name, *params)
-    set_wiredump_file_base(name)
-    @proxy.call(name, *params)
-  end
-
-private
-
-  def set_wiredump_file_base(name)
-    if @wiredump_file_base
-      @proxy.set_wiredump_file_base("#{@wiredump_file_base}_#{name}")
-    end
-  end
-
-  def create_header(headers)
-    header = SOAPHeader.new()
-    headers.each do |content, mustunderstand, encodingstyle|
-      header.add(SOAPHeaderItem.new(content, mustunderstand, encodingstyle))
-    end
-    header
-  end
-
-  def setup_options
-    if opt = Property.loadproperty(::SOAP::PropertyName)
-      opt = opt["client"]
-    end
-    opt ||= Property.new
-    opt.add_hook("protocol.mandatorycharset") do |key, value|
-      @proxy.mandatorycharset = value
-    end
-    opt.add_hook("protocol.wiredump_file_base") do |key, value|
-      @wiredump_file_base = value
-    end
-    opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
-    opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
-    opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
-    opt
-  end
-
-  def add_rpc_method_interface(name, param_def)
-    param_count = RPC::SOAPMethod.param_count(param_def,
-      RPC::SOAPMethod::IN, RPC::SOAPMethod::INOUT)
-    add_method_interface(name, param_count)
-  end
-
-  def add_document_method_interface(name, param_def)
-    param_count = RPC::SOAPMethod.param_count(param_def, RPC::SOAPMethod::IN)
-    add_method_interface(name, param_count)
-  end
-
-  if RUBY_VERSION > "1.7.0"
-    def add_method_interface(name, param_count)
-      ::SOAP::Mapping.define_singleton_method(self, name) do |*arg|
-        unless arg.size == param_count
-          raise ArgumentError.new(
-          "wrong number of arguments (#{arg.size} for #{param_count})")
-        end
-        call(name, *arg)
-      end
-      self.method(name)
-    end
-  else
-    def add_method_interface(name, param_count)
-      instance_eval <<-EOS
-        def #{name}(*arg)
-          unless arg.size == #{param_count}
-            raise ArgumentError.new(
-              "wrong number of arguments (\#{arg.size} for #{param_count})")
-          end
-          call(#{name.dump}, *arg)
-        end
-      EOS
-      self.method(name)
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/element.rb
deleted file mode 100644
index c224b03..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/element.rb
+++ /dev/null
@@ -1,325 +0,0 @@
-# SOAP4R - RPC element definition.
-# Copyright (C) 2000, 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/baseData'
-
-
-module SOAP
-
-# Add method definitions for RPC to common definition in element.rb
-class SOAPBody < SOAPStruct
-  public
-
-  def request
-    root_node
-  end
-
-  def response
-    root = root_node
-    if !@is_fault
-      if root.nil?
-        nil
-      elsif root.is_a?(SOAPBasetype)
-        root
-      else
-        # Initial element is [retval].
-        root[0]
-      end
-    else
-      root
-    end
-  end
-
-  def outparams
-    root = root_node
-    if !@is_fault and !root.nil? and !root.is_a?(SOAPBasetype)
-      op = root[1..-1]
-      op = nil if op && op.empty?
-      op
-    else
-      nil
-    end
-  end
-
-  def fault
-    if @is_fault
-      self['fault']
-    else
-      nil
-    end
-  end
-
-  def fault=(fault)
-    @is_fault = true
-    add_member('fault', fault)
-  end
-end
-
-
-module RPC
-
-
-class RPCError < Error; end
-class MethodDefinitionError < RPCError; end
-class ParameterError < RPCError; end
-
-class SOAPMethod < SOAPStruct
-  RETVAL = 'retval'
-  IN = 'in'
-  OUT = 'out'
-  INOUT = 'inout'
-
-  attr_reader :param_def
-  attr_reader :inparam
-  attr_reader :outparam
-  attr_reader :retval_name
-  attr_reader :retval_class_name
-
-  def initialize(qname, param_def = nil)
-    super(nil)
-    @elename = qname
-    @encodingstyle = nil
-
-    @param_def = param_def
-
-    @signature = []
-    @inparam_names = []
-    @inoutparam_names = []
-    @outparam_names = []
-
-    @inparam = {}
-    @outparam = {}
-    @retval_name = nil
-    @retval_class_name = nil
-
-    init_param(@param_def) if @param_def
-  end
-
-  def have_outparam?
-    @outparam_names.size > 0
-  end
-
-  def input_params
-    collect_params(IN, INOUT)
-  end
-
-  def output_params
-    collect_params(OUT, INOUT)
-  end
-
-  def set_param(params)
-    params.each do |param, data|
-      @inparam[param] = data
-      data.elename.name = param
-      data.parent = self
-    end
-  end
-
-  def set_outparam(params)
-    params.each do |param, data|
-      @outparam[param] = data
-      data.elename.name = param
-    end
-  end
-
-  def SOAPMethod.param_count(param_def, *type)
-    count = 0
-    param_def.each do |io_type, name, param_type|
-      if type.include?(io_type)
-        count += 1
-      end
-    end
-    count
-  end
-
-  def SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    if param.size == 1 and param[0].is_a?(Array)
-      return param[0]
-    end
-    if param.empty?
-      method = obj.method(name)
-      param_names = (1..method.arity.abs).collect { |i| "p#{i}" }
-    else
-      param_names = param
-    end
-    create_rpc_param_def(param_names)
-  end
-
-  def SOAPMethod.create_rpc_param_def(param_names)
-    param_def = []
-    param_names.each do |param_name|
-      param_def.push([IN, param_name, nil])
-    end
-    param_def.push([RETVAL, 'return', nil])
-    param_def
-  end
-
-  def SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
-    req_qnames = [req_qnames] if req_qnames.is_a?(XSD::QName)
-    res_qnames = [res_qnames] if res_qnames.is_a?(XSD::QName)
-    param_def = []
-    req_qnames.each do |qname|
-      param_def << [IN, qname.name, [nil, qname.namespace, qname.name]]
-    end
-    res_qnames.each do |qname|
-      param_def << [OUT, qname.name, [nil, qname.namespace, qname.name]]
-    end
-    param_def
-  end
-
-private
-
-  def collect_params(*type)
-    names = []
-    @signature.each do |io_type, name, param_type|
-      names << name if type.include?(io_type)
-    end
-    names
-  end
-
-  def init_param(param_def)
-    param_def.each do |io_type, name, param_type|
-      case io_type
-      when IN
-        @signature.push([IN, name, param_type])
-        @inparam_names.push(name)
-      when OUT
-        @signature.push([OUT, name, param_type])
-        @outparam_names.push(name)
-      when INOUT
-        @signature.push([INOUT, name, param_type])
-        @inoutparam_names.push(name)
-      when RETVAL
-        if @retval_name
-          raise MethodDefinitionError.new('duplicated retval')
-        end
-        @retval_name = name
-        @retval_class_name = nil
-        if param_type
-          if param_type[0].is_a?(String)
-            @retval_class_name = Mapping.class_from_name(param_type[0])
-          else
-            @retval_class_name = param_type[0]
-          end
-        end
-      else
-        raise MethodDefinitionError.new("unknown type: #{io_type}")
-      end
-    end
-  end
-end
-
-
-class SOAPMethodRequest < SOAPMethod
-  attr_accessor :soapaction
-
-  def SOAPMethodRequest.create_request(qname, *params)
-    param_def = []
-    param_value = []
-    i = 0
-    params.each do |param|
-      param_name = "p#{i}"
-      i += 1
-      param_def << [IN, param_name, nil]
-      param_value << [param_name, param]
-    end
-    param_def << [RETVAL, 'return', nil]
-    o = new(qname, param_def)
-    o.set_param(param_value)
-    o
-  end
-
-  def initialize(qname, param_def = nil, soapaction = nil)
-    check_elename(qname)
-    super(qname, param_def)
-    @soapaction = soapaction
-  end
-
-  def each
-    input_params.each do |name|
-      unless @inparam[name]
-        raise ParameterError.new("parameter: #{name} was not given")
-      end
-      yield(name, @inparam[name])
-    end
-  end
-
-  def dup
-    req = self.class.new(@elename.dup, @param_def, @soapaction)
-    req.encodingstyle = @encodingstyle
-    req
-  end
-
-  def create_method_response(response_name = nil)
-    response_name ||=
-      XSD::QName.new(@elename.namespace, @elename.name + 'Response')
-    SOAPMethodResponse.new(response_name, @param_def)
-  end
-
-private
-
-  def check_elename(qname)
-    # NCName & ruby's method name
-    unless /\A[\w_][\w\d_\-]*\z/ =~ qname.name
-      raise MethodDefinitionError.new("element name '#{qname.name}' not allowed")
-    end
-  end
-end
-
-
-class SOAPMethodResponse < SOAPMethod
-
-  def initialize(qname, param_def = nil)
-    super(qname, param_def)
-    @retval = nil
-  end
-
-  def retval=(retval)
-    @retval = retval
-    @retval.elename = @retval.elename.dup_name(@retval_name || 'return')
-    retval.parent = self
-    retval
-  end
-
-  def each
-    if @retval_name and !@retval.is_a?(SOAPVoid)
-      yield(@retval_name, @retval)
-    end
-
-    output_params.each do |name|
-      unless @outparam[name]
-        raise ParameterError.new("parameter: #{name} was not given")
-      end
-      yield(name, @outparam[name])
-    end
-  end
-end
-
-
-# To return(?) void explicitly.
-#  def foo(input_var)
-#    ...
-#    return SOAP::RPC::SOAPVoid.new
-#  end
-class SOAPVoid < XSD::XSDAnySimpleType
-  include SOAPBasetype
-  extend SOAPModuleUtils
-  Name = XSD::QName.new(Mapping::RubyCustomTypeNamespace, nil)
-
-public
-  def initialize()
-    @elename = Name
-    @id = nil
-    @precedents = []
-    @parent = nil
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/httpserver.rb
deleted file mode 100644
index 6d2a72e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/httpserver.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-# SOAP4R - WEBrick HTTP Server
-# Copyright (C) 2003, 2004 by NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'logger'
-require 'soap/rpc/soaplet'
-require 'soap/streamHandler'
-require 'webrick'
-
-
-module SOAP
-module RPC
-
-
-class HTTPServer < Logger::Application
-  attr_reader :server
-  attr_accessor :default_namespace
-
-  def initialize(config)
-    super(config[:SOAPHTTPServerApplicationName] || self.class.name)
-    @default_namespace = config[:SOAPDefaultNamespace]
-    @webrick_config = config.dup
-    self.level = Logger::Severity::ERROR # keep silent by default
-    @webrick_config[:Logger] ||= @log
-    @log = @webrick_config[:Logger]     # sync logger of App and HTTPServer
-    @router = ::SOAP::RPC::Router.new(self.class.name)
-    @soaplet = ::SOAP::RPC::SOAPlet.new(@router)
-    on_init
-    @server = WEBrick::HTTPServer.new(@webrick_config)
-    @server.mount('/', @soaplet)
-  end
-
-  def on_init
-    # do extra initialization in a derived class if needed.
-  end
-
-  def status
-    @server.status if @server
-  end
-
-  def shutdown
-    @server.shutdown if @server
-  end
-
-  def mapping_registry
-    @router.mapping_registry
-  end
-
-  def mapping_registry=(mapping_registry)
-    @router.mapping_registry = mapping_registry
-  end
-
-  def generate_explicit_type
-    @router.generate_explicit_type
-  end
-
-  def generate_explicit_type=(generate_explicit_type)
-    @router.generate_explicit_type = generate_explicit_type
-  end
-
-  # servant entry interface
-
-  def add_rpc_request_servant(factory, namespace = @default_namespace)
-    @router.add_rpc_request_servant(factory, namespace)
-  end
-
-  def add_rpc_servant(obj, namespace = @default_namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-  
-  def add_request_headerhandler(factory)
-    @router.add_request_headerhandler(factory)
-  end
-
-  def add_headerhandler(obj)
-    @router.add_headerhandler(obj)
-  end
-  alias add_rpc_headerhandler add_headerhandler
-
-  # method entry interface
-
-  def add_rpc_method(obj, name, *param)
-    add_rpc_method_as(obj, name, name, *param)
-  end
-  alias add_method add_rpc_method
-
-  def add_rpc_method_as(obj, name, name_as, *param)
-    qname = XSD::QName.new(@default_namespace, name_as)
-    soapaction = nil
-    param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param)
-    @router.add_rpc_operation(obj, qname, soapaction, name, param_def)
-  end
-  alias add_method_as add_rpc_method_as
-
-  def add_document_method(obj, soapaction, name, req_qnames, res_qnames)
-    param_def = SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
-    @router.add_document_operation(obj, soapaction, name, param_def)
-  end
-
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
-    @router.add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    @router.add_document_operation(receiver, soapaction, name, param_def, opt)
-  end
-
-  def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
-    @router.add_document_request_operation(factory, soapaction, name, param_def, opt)
-  end
-
-private
-
-  def run
-    @server.start
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/proxy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/proxy.rb
deleted file mode 100644
index 7dfda62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/proxy.rb
+++ /dev/null
@@ -1,497 +0,0 @@
-# SOAP4R - RPC Proxy library.
-# Copyright (C) 2000, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/rpc/rpc'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/mimemessage'
-
-
-module SOAP
-module RPC
-
-
-class Proxy
-  include SOAP
-
-public
-
-  attr_accessor :soapaction
-  attr_accessor :mandatorycharset
-  attr_accessor :allow_unqualified_element
-  attr_accessor :default_encodingstyle
-  attr_accessor :generate_explicit_type
-  attr_reader :headerhandler
-  attr_reader :streamhandler
-
-  attr_accessor :mapping_registry
-  attr_accessor :literal_mapping_registry
-
-  attr_reader :operation
-
-  def initialize(endpoint_url, soapaction, options)
-    @endpoint_url = endpoint_url
-    @soapaction = soapaction
-    @options = options
-    @streamhandler = HTTPStreamHandler.new(
-      @options["protocol.http"] ||= ::SOAP::Property.new)
-    @operation = {}
-    @mandatorycharset = nil
-    @allow_unqualified_element = true
-    @default_encodingstyle = nil
-    @generate_explicit_type = true
-    @headerhandler = Header::HandlerSet.new
-    @mapping_registry = nil
-    @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new
-  end
-
-  def inspect
-    "#<#{self.class}:#{@endpoint_url}>"
-  end
-
-  def endpoint_url
-    @endpoint_url
-  end
-
-  def endpoint_url=(endpoint_url)
-    @endpoint_url = endpoint_url
-    reset_stream
-  end
-
-  def reset_stream
-    @streamhandler.reset(@endpoint_url)
-  end
-
-  def set_wiredump_file_base(wiredump_file_base)
-    @streamhandler.wiredump_file_base = wiredump_file_base
-  end
-
-  def test_loopback_response
-    @streamhandler.test_loopback_response
-  end
-
-  def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
-    opt[:request_qname] = qname
-    opt[:request_style] ||= :rpc
-    opt[:response_style] ||= :rpc
-    opt[:request_use] ||= :encoded
-    opt[:response_use] ||= :encoded
-    @operation[name] = Operation.new(soapaction, param_def, opt)
-  end
-
-  def add_document_operation(soapaction, name, param_def, opt = {})
-    opt[:request_style] ||= :document
-    opt[:response_style] ||= :document
-    opt[:request_use] ||= :literal
-    opt[:response_use] ||= :literal
-    # default values of these values are unqualified in XML Schema.
-    # set true for backward compatibility.
-    unless opt.key?(:elementformdefault)
-      opt[:elementformdefault] = true
-    end
-    unless opt.key?(:attributeformdefault)
-      opt[:attributeformdefault] = true
-    end
-    @operation[name] = Operation.new(soapaction, param_def, opt)
-  end
-
-  # add_method is for shortcut of typical rpc/encoded method definition.
-  alias add_method add_rpc_operation
-  alias add_rpc_method add_rpc_operation
-  alias add_document_method add_document_operation
-
-  def invoke(req_header, req_body, opt = nil)
-    opt ||= create_encoding_opt
-    route(req_header, req_body, opt, opt)
-  end
-
-  def call(name, *params)
-    unless op_info = @operation[name]
-      raise MethodDefinitionError, "method: #{name} not defined"
-    end
-    mapping_opt = create_mapping_opt
-    req_header = create_request_header
-    req_body = SOAPBody.new(
-      op_info.request_body(params, @mapping_registry,
-        @literal_mapping_registry, mapping_opt)
-    )
-    reqopt = create_encoding_opt(
-      :soapaction => op_info.soapaction || @soapaction,
-      :envelopenamespace => @options["soap.envelope.requestnamespace"],
-      :default_encodingstyle =>
-        @default_encodingstyle || op_info.request_default_encodingstyle,
-      :elementformdefault => op_info.elementformdefault,
-      :attributeformdefault => op_info.attributeformdefault
-    )
-    resopt = create_encoding_opt(
-      :envelopenamespace => @options["soap.envelope.responsenamespace"],
-      :default_encodingstyle =>
-        @default_encodingstyle || op_info.response_default_encodingstyle,
-      :elementformdefault => op_info.elementformdefault,
-      :attributeformdefault => op_info.attributeformdefault
-    )
-    env = route(req_header, req_body, reqopt, resopt)
-    raise EmptyResponseError unless env
-    receive_headers(env.header)
-    begin
-      check_fault(env.body)
-    rescue ::SOAP::FaultError => e
-      op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry)
-    end
-    op_info.response_obj(env.body, @mapping_registry,
-      @literal_mapping_registry, mapping_opt)
-  end
-
-  def route(req_header, req_body, reqopt, resopt)
-    req_env = ::SOAP::SOAPEnvelope.new(req_header, req_body)
-    unless reqopt[:envelopenamespace].nil?
-      set_envelopenamespace(req_env, reqopt[:envelopenamespace])
-    end
-    reqopt[:external_content] = nil
-    conn_data = marshal(req_env, reqopt)
-    if ext = reqopt[:external_content]
-      mime = MIMEMessage.new
-      ext.each do |k, v|
-      	mime.add_attachment(v.data)
-      end
-      mime.add_part(conn_data.send_string + "\r\n")
-      mime.close
-      conn_data.send_string = mime.content_str
-      conn_data.send_contenttype = mime.headers['content-type'].str
-    end
-    conn_data = @streamhandler.send(@endpoint_url, conn_data,
-      reqopt[:soapaction])
-    if conn_data.receive_string.empty?
-      return nil
-    end
-    unmarshal(conn_data, resopt)
-  end
-
-  def check_fault(body)
-    if body.fault
-      raise SOAP::FaultError.new(body.fault)
-    end
-  end
-
-private
-
-  def set_envelopenamespace(env, namespace)
-    env.elename = XSD::QName.new(namespace, env.elename.name)
-    if env.header
-      env.header.elename = XSD::QName.new(namespace, env.header.elename.name)
-    end
-    if env.body
-      env.body.elename = XSD::QName.new(namespace, env.body.elename.name)
-    end
-  end
-
-  def create_request_header
-    headers = @headerhandler.on_outbound
-    if headers.empty?
-      nil
-    else
-      h = ::SOAP::SOAPHeader.new
-      headers.each do |header|
-        h.add(header.elename.name, header)
-      end
-      h
-    end
-  end
-
-  def receive_headers(headers)
-    @headerhandler.on_inbound(headers) if headers
-  end
-
-  def marshal(env, opt)
-    send_string = Processor.marshal(env, opt)
-    StreamHandler::ConnectionData.new(send_string)
-  end
-
-  def unmarshal(conn_data, opt)
-    contenttype = conn_data.receive_contenttype
-    if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
-      opt[:external_content] = {}
-      mime = MIMEMessage.parse("Content-Type: " + contenttype,
-	conn_data.receive_string)
-      mime.parts.each do |part|
-	value = Attachment.new(part.content)
-	value.contentid = part.contentid
-	obj = SOAPAttachment.new(value)
-	opt[:external_content][value.contentid] = obj if value.contentid
-      end
-      opt[:charset] = @mandatorycharset ||
-	StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
-      env = Processor.unmarshal(mime.root.content, opt)
-    else
-      opt[:charset] = @mandatorycharset ||
-	::SOAP::StreamHandler.parse_media_type(contenttype)
-      env = Processor.unmarshal(conn_data.receive_string, opt)
-    end
-    unless env.is_a?(::SOAP::SOAPEnvelope)
-      raise ResponseFormatError.new(
-        "response is not a SOAP envelope: #{conn_data.receive_string}")
-    end
-    env
-  end
-
-  def create_header(headers)
-    header = SOAPHeader.new()
-    headers.each do |content, mustunderstand, encodingstyle|
-      header.add(SOAPHeaderItem.new(content, mustunderstand, encodingstyle))
-    end
-    header
-  end
-
-  def create_encoding_opt(hash = nil)
-    opt = {}
-    opt[:default_encodingstyle] = @default_encodingstyle
-    opt[:allow_unqualified_element] = @allow_unqualified_element
-    opt[:generate_explicit_type] = @generate_explicit_type
-    opt[:no_indent] = @options["soap.envelope.no_indent"]
-    opt[:use_numeric_character_reference] =
-      @options["soap.envelope.use_numeric_character_reference"]
-    opt.update(hash) if hash
-    opt
-  end
-
-  def create_mapping_opt(hash = nil)
-    opt = {
-      :external_ces => @options["soap.mapping.external_ces"]
-    }
-    opt.update(hash) if hash
-    opt
-  end
-
-  class Operation
-    attr_reader :soapaction
-    attr_reader :request_style
-    attr_reader :response_style
-    attr_reader :request_use
-    attr_reader :response_use
-    attr_reader :elementformdefault
-    attr_reader :attributeformdefault
-
-    def initialize(soapaction, param_def, opt)
-      @soapaction = soapaction
-      @request_style = opt[:request_style]
-      @response_style = opt[:response_style]
-      @request_use = opt[:request_use]
-      @response_use = opt[:response_use]
-      # set nil(unqualified) by default
-      @elementformdefault = opt[:elementformdefault]
-      @attributeformdefault = opt[:attributeformdefault]
-      check_style(@request_style)
-      check_style(@response_style)
-      check_use(@request_use)
-      check_use(@response_use)
-      if @request_style == :rpc
-        @rpc_request_qname = opt[:request_qname]
-        if @rpc_request_qname.nil?
-          raise MethodDefinitionError.new("rpc_request_qname must be given")
-        end
-        @rpc_method_factory =
-          RPC::SOAPMethodRequest.new(@rpc_request_qname, param_def, @soapaction)
-      else
-        @doc_request_qnames = []
-        @doc_request_qualified = []
-        @doc_response_qnames = []
-        @doc_response_qualified = []
-        param_def.each do |inout, paramname, typeinfo, eleinfo|
-          klass_not_used, nsdef, namedef = typeinfo
-          qualified = eleinfo
-          if namedef.nil?
-            raise MethodDefinitionError.new("qname must be given")
-          end
-          case inout
-          when SOAPMethod::IN
-            @doc_request_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_request_qualified << qualified
-          when SOAPMethod::OUT
-            @doc_response_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_response_qualified << qualified
-          else
-            raise MethodDefinitionError.new(
-              "illegal inout definition for document style: #{inout}")
-          end
-        end
-      end
-    end
-
-    def request_default_encodingstyle
-      (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def response_default_encodingstyle
-      (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def request_body(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_style == :rpc
-        request_rpc(values, mapping_registry, literal_mapping_registry, opt)
-      else
-        request_doc(values, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_obj(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_style == :rpc
-        response_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      else
-        response_doc(body, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-    def raise_fault(e, mapping_registry, literal_mapping_registry)
-      if @response_style == :rpc
-        Mapping.fault2exception(e, mapping_registry)
-      else
-        Mapping.fault2exception(e, literal_mapping_registry)
-      end
-    end
-
-  private
-
-    def check_style(style)
-      unless [:rpc, :document].include?(style)
-        raise MethodDefinitionError.new("unknown style: #{style}")
-      end
-    end
-
-    def check_use(use)
-      unless [:encoded, :literal].include?(use)
-        raise MethodDefinitionError.new("unknown use: #{use}")
-      end
-    end
-
-    def request_rpc(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_use == :encoded
-        request_rpc_enc(values, mapping_registry, opt)
-      else
-        request_rpc_lit(values, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_doc(values, mapping_registry, literal_mapping_registry, opt)
-      if @request_use == :encoded
-        request_doc_enc(values, mapping_registry, opt)
-      else
-        request_doc_lit(values, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_rpc_enc(values, mapping_registry, opt)
-      method = @rpc_method_factory.dup
-      names = method.input_params
-      obj = create_request_obj(names, values)
-      soap = Mapping.obj2soap(obj, mapping_registry, @rpc_request_qname, opt)
-      method.set_param(soap)
-      method
-    end
-
-    def request_rpc_lit(values, mapping_registry, opt)
-      method = @rpc_method_factory.dup
-      params = {}
-      idx = 0
-      method.input_params.each do |name|
-        params[name] = Mapping.obj2soap(values[idx], mapping_registry, 
-          XSD::QName.new(nil, name), opt)
-        idx += 1
-      end
-      method.set_param(params)
-      method
-    end
-
-    def request_doc_enc(values, mapping_registry, opt)
-      (0...values.size).collect { |idx|
-        ele = Mapping.obj2soap(values[idx], mapping_registry, nil, opt)
-        ele.elename = @doc_request_qnames[idx]
-        ele
-      }
-    end
-
-    def request_doc_lit(values, mapping_registry, opt)
-      (0...values.size).collect { |idx|
-        ele = Mapping.obj2soap(values[idx], mapping_registry,
-          @doc_request_qnames[idx], opt)
-        ele.encodingstyle = LiteralNamespace
-        if ele.respond_to?(:qualified)
-          ele.qualified = @doc_request_qualified[idx]
-        end
-        ele
-      }
-    end
-
-    def response_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        response_rpc_enc(body, mapping_registry, opt)
-      else
-        response_rpc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_doc(body, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        return *response_doc_enc(body, mapping_registry, opt)
-      else
-        return *response_doc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_rpc_enc(body, mapping_registry, opt)
-      ret = nil
-      if body.response
-        ret = Mapping.soap2obj(body.response, mapping_registry,
-          @rpc_method_factory.retval_class_name, opt)
-      end
-      if body.outparams
-        outparams = body.outparams.collect { |outparam|
-          Mapping.soap2obj(outparam, mapping_registry, nil, opt)
-        }
-        [ret].concat(outparams)
-      else
-        ret
-      end
-    end
-
-    def response_rpc_lit(body, mapping_registry, opt)
-      body.root_node.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry,
-          @rpc_method_factory.retval_class_name, opt)
-      }
-    end
-
-    def response_doc_enc(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def response_doc_lit(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry)
-      }
-    end
-
-    def create_request_obj(names, params)
-      o = Object.new
-      idx = 0
-      while idx < params.length
-        o.instance_variable_set('@' + names[idx], params[idx])
-        idx += 1
-      end
-      o
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/router.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/router.rb
deleted file mode 100644
index 71c6eb6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/router.rb
+++ /dev/null
@@ -1,594 +0,0 @@
-# SOAP4R - RPC Routing library
-# Copyright (C) 2001, 2002, 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/rpc'
-require 'soap/rpc/element'
-require 'soap/streamHandler'
-require 'soap/mimemessage'
-require 'soap/header/handlerset'
-
-
-module SOAP
-module RPC
-
-
-class Router
-  include SOAP
-
-  attr_reader :actor
-  attr_accessor :mapping_registry
-  attr_accessor :literal_mapping_registry
-  attr_accessor :generate_explicit_type
-  attr_accessor :external_ces
-
-  def initialize(actor)
-    @actor = actor
-    @mapping_registry = nil
-    @headerhandler = Header::HandlerSet.new
-    @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new
-    @generate_explicit_type = true
-    @external_ces = nil
-    @operation_by_soapaction = {}
-    @operation_by_qname = {}
-    @headerhandlerfactory = []
-  end
-
-  ###
-  ## header handler interface
-  #
-  def add_request_headerhandler(factory)
-    unless factory.respond_to?(:create)
-      raise TypeError.new("factory must respond to 'create'")
-    end
-    @headerhandlerfactory << factory
-  end
-
-  def add_headerhandler(handler)
-    @headerhandler.add(handler)
-  end
-
-  ###
-  ## servant definition interface
-  #
-  def add_rpc_request_servant(factory, namespace)
-    unless factory.respond_to?(:create)
-      raise TypeError.new("factory must respond to 'create'")
-    end
-    obj = factory.create        # a dummy instance for introspection
-    ::SOAP::RPC.defined_methods(obj).each do |name|
-      begin
-        qname = XSD::QName.new(namespace, name)
-        param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
-        opt = create_styleuse_option(:rpc, :encoded)
-        add_rpc_request_operation(factory, qname, nil, name, param_def, opt)
-      rescue SOAP::RPC::MethodDefinitionError => e
-        p e if $DEBUG
-      end
-    end
-  end
-
-  def add_rpc_servant(obj, namespace)
-    ::SOAP::RPC.defined_methods(obj).each do |name|
-      begin
-        qname = XSD::QName.new(namespace, name)
-        param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
-        opt = create_styleuse_option(:rpc, :encoded)
-        add_rpc_operation(obj, qname, nil, name, param_def, opt)
-      rescue SOAP::RPC::MethodDefinitionError => e
-        p e if $DEBUG
-      end
-    end
-  end
-  alias add_servant add_rpc_servant
-
-  ###
-  ## operation definition interface
-  #
-  def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
-    ensure_styleuse_option(opt, :rpc, :encoded)
-    opt[:request_qname] = qname
-    op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
-      opt)
-    if opt[:request_style] != :rpc
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, qname, op)
-  end
-  alias add_method add_rpc_operation
-  alias add_rpc_method add_rpc_operation
-
-  def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
-    ensure_styleuse_option(opt, :rpc, :encoded)
-    opt[:request_qname] = qname
-    op = RequestScopeOperation.new(soapaction, factory, name, param_def, opt)
-    if opt[:request_style] != :rpc
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, qname, op)
-  end
-
-  def add_document_operation(receiver, soapaction, name, param_def, opt = {})
-    #
-    # adopt workaround for doc/lit wrapper method
-    # (you should consider to simply use rpc/lit service)
-    #
-    #unless soapaction
-    #  raise RPCRoutingError.new("soapaction is a must for document method")
-    #end
-    ensure_styleuse_option(opt, :document, :literal)
-    op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
-      opt)
-    if opt[:request_style] != :document
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, first_input_part_qname(param_def), op)
-  end
-  alias add_document_method add_document_operation
-
-  def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
-    #
-    # adopt workaround for doc/lit wrapper method
-    # (you should consider to simply use rpc/lit service)
-    #
-    #unless soapaction
-    #  raise RPCRoutingError.new("soapaction is a must for document method")
-    #end
-    ensure_styleuse_option(opt, :document, :literal)
-    op = RequestScopeOperation.new(soapaction, receiver, name, param_def, opt)
-    if opt[:request_style] != :document
-      raise RPCRoutingError.new("illegal request_style given")
-    end
-    assign_operation(soapaction, first_input_part_qname(param_def), op)
-  end
-
-  def route(conn_data)
-    # we cannot set request_default_encodingsyle before parsing the content.
-    env = unmarshal(conn_data)
-    if env.nil?
-      raise ArgumentError.new("illegal SOAP marshal format")
-    end
-    op = lookup_operation(conn_data.soapaction, env.body)
-    headerhandler = @headerhandler.dup
-    @headerhandlerfactory.each do |f|
-      headerhandler.add(f.create)
-    end
-    receive_headers(headerhandler, env.header)
-    soap_response = default_encodingstyle = nil
-    begin
-      soap_response =
-        op.call(env.body, @mapping_registry, @literal_mapping_registry,
-          create_mapping_opt)
-      default_encodingstyle = op.response_default_encodingstyle
-    rescue Exception
-      soap_response = fault($!)
-      default_encodingstyle = nil
-    end
-    conn_data.is_fault = true if soap_response.is_a?(SOAPFault)
-    header = call_headers(headerhandler)
-    body = SOAPBody.new(soap_response)
-    env = SOAPEnvelope.new(header, body)
-    marshal(conn_data, env, default_encodingstyle)
-  end
-
-  # Create fault response string.
-  def create_fault_response(e)
-    env = SOAPEnvelope.new(SOAPHeader.new, SOAPBody.new(fault(e)))
-    opt = {}
-    opt[:external_content] = nil
-    response_string = Processor.marshal(env, opt)
-    conn_data = StreamHandler::ConnectionData.new(response_string)
-    conn_data.is_fault = true
-    if ext = opt[:external_content]
-      mimeize(conn_data, ext)
-    end
-    conn_data
-  end
-
-private
-
-  def first_input_part_qname(param_def)
-    param_def.each do |inout, paramname, typeinfo|
-      if inout == SOAPMethod::IN
-        klass, nsdef, namedef = typeinfo
-        return XSD::QName.new(nsdef, namedef)
-      end
-    end
-    nil
-  end
-
-  def create_styleuse_option(style, use)
-    opt = {}
-    opt[:request_style] = opt[:response_style] = style
-    opt[:request_use] = opt[:response_use] = use
-    opt
-  end
-
-  def ensure_styleuse_option(opt, style, use)
-    opt[:request_style] ||= style
-    opt[:response_style] ||= style
-    opt[:request_use] ||= use
-    opt[:response_use] ||= use
-  end
-
-  def assign_operation(soapaction, qname, op)
-    assigned = false
-    if soapaction and !soapaction.empty?
-      @operation_by_soapaction[soapaction] = op
-      assigned = true
-    end
-    if qname
-      @operation_by_qname[qname] = op
-      assigned = true
-    end
-    unless assigned
-      raise RPCRoutingError.new("cannot assign operation")
-    end
-  end
-
-  def lookup_operation(soapaction, body)
-    if op = @operation_by_soapaction[soapaction]
-      return op
-    end
-    qname = body.root_node.elename
-    if op = @operation_by_qname[qname]
-      return op
-    end
-    if soapaction
-      raise RPCRoutingError.new(
-        "operation: #{soapaction} #{qname} not supported")
-    else
-      raise RPCRoutingError.new("operation: #{qname} not supported")
-    end
-  end
-
-  def call_headers(headerhandler)
-    headers = headerhandler.on_outbound
-    if headers.empty?
-      nil
-    else
-      h = ::SOAP::SOAPHeader.new
-      headers.each do |header|
-        h.add(header.elename.name, header)
-      end
-      h
-    end
-  end
-
-  def receive_headers(headerhandler, headers)
-    headerhandler.on_inbound(headers) if headers
-  end
-
-  def unmarshal(conn_data)
-    opt = {}
-    contenttype = conn_data.receive_contenttype
-    if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
-      opt[:external_content] = {}
-      mime = MIMEMessage.parse("Content-Type: " + contenttype,
-        conn_data.receive_string)
-      mime.parts.each do |part|
-	value = Attachment.new(part.content)
-	value.contentid = part.contentid
-	obj = SOAPAttachment.new(value)
-	opt[:external_content][value.contentid] = obj if value.contentid
-      end
-      opt[:charset] =
-	StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
-      env = Processor.unmarshal(mime.root.content, opt)
-    else
-      opt[:charset] = ::SOAP::StreamHandler.parse_media_type(contenttype)
-      env = Processor.unmarshal(conn_data.receive_string, opt)
-    end
-    charset = opt[:charset]
-    conn_data.send_contenttype = "text/xml; charset=\"#{charset}\""
-    env
-  end
-
-  def marshal(conn_data, env, default_encodingstyle = nil)
-    opt = {}
-    opt[:external_content] = nil
-    opt[:default_encodingstyle] = default_encodingstyle
-    opt[:generate_explicit_type] = @generate_explicit_type
-    response_string = Processor.marshal(env, opt)
-    conn_data.send_string = response_string
-    if ext = opt[:external_content]
-      mimeize(conn_data, ext)
-    end
-    conn_data
-  end
-
-  def mimeize(conn_data, ext)
-    mime = MIMEMessage.new
-    ext.each do |k, v|
-      mime.add_attachment(v.data)
-    end
-    mime.add_part(conn_data.send_string + "\r\n")
-    mime.close
-    conn_data.send_string = mime.content_str
-    conn_data.send_contenttype = mime.headers['content-type'].str
-    conn_data
-  end
-
-  # Create fault response.
-  def fault(e)
-    detail = Mapping::SOAPException.new(e)
-    SOAPFault.new(
-      SOAPString.new('Server'),
-      SOAPString.new(e.to_s),
-      SOAPString.new(@actor),
-      Mapping.obj2soap(detail, @mapping_registry))
-  end
-
-  def create_mapping_opt
-    { :external_ces => @external_ces }
-  end
-
-  class Operation
-    attr_reader :name
-    attr_reader :soapaction
-    attr_reader :request_style
-    attr_reader :response_style
-    attr_reader :request_use
-    attr_reader :response_use
-
-    def initialize(soapaction, name, param_def, opt)
-      @soapaction = soapaction
-      @name = name
-      @request_style = opt[:request_style]
-      @response_style = opt[:response_style]
-      @request_use = opt[:request_use]
-      @response_use = opt[:response_use]
-      check_style(@request_style)
-      check_style(@response_style)
-      check_use(@request_use)
-      check_use(@response_use)
-      if @response_style == :rpc
-        request_qname = opt[:request_qname] or raise
-        @rpc_method_factory =
-          RPC::SOAPMethodRequest.new(request_qname, param_def, @soapaction)
-        @rpc_response_qname = opt[:response_qname]
-      else
-        @doc_request_qnames = []
-        @doc_request_qualified = []
-        @doc_response_qnames = []
-        @doc_response_qualified = []
-        param_def.each do |inout, paramname, typeinfo, eleinfo|
-          klass, nsdef, namedef = typeinfo
-          qualified = eleinfo
-          case inout
-          when SOAPMethod::IN
-            @doc_request_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_request_qualified << qualified
-          when SOAPMethod::OUT
-            @doc_response_qnames << XSD::QName.new(nsdef, namedef)
-            @doc_response_qualified << qualified
-          else
-            raise ArgumentError.new(
-              "illegal inout definition for document style: #{inout}")
-          end
-        end
-      end
-    end
-
-    def request_default_encodingstyle
-      (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def response_default_encodingstyle
-      (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
-    end
-
-    def call(body, mapping_registry, literal_mapping_registry, opt)
-      if @request_style == :rpc
-        values = request_rpc(body, mapping_registry, literal_mapping_registry,
-          opt)
-      else
-        values = request_document(body, mapping_registry,
-          literal_mapping_registry, opt)
-      end
-      result = receiver.method(@name.intern).call(*values)
-      return result if result.is_a?(SOAPFault)
-      if @response_style == :rpc
-        response_rpc(result, mapping_registry, literal_mapping_registry, opt)
-      else
-        response_doc(result, mapping_registry, literal_mapping_registry, opt)
-      end
-    end
-
-  private
-
-    def receiver
-      raise NotImplementedError.new('must be defined in derived class')
-    end
-
-    def request_rpc(body, mapping_registry, literal_mapping_registry, opt)
-      request = body.request
-      unless request.is_a?(SOAPStruct)
-        raise RPCRoutingError.new("not an RPC style")
-      end
-      if @request_use == :encoded
-        request_rpc_enc(request, mapping_registry, opt)
-      else
-        request_rpc_lit(request, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_document(body, mapping_registry, literal_mapping_registry, opt)
-      # ToDo: compare names with @doc_request_qnames
-      if @request_use == :encoded
-        request_doc_enc(body, mapping_registry, opt)
-      else
-        request_doc_lit(body, literal_mapping_registry, opt)
-      end
-    end
-
-    def request_rpc_enc(request, mapping_registry, opt)
-      param = Mapping.soap2obj(request, mapping_registry, nil, opt)
-      request.collect { |key, value|
-        param[key]
-      }
-    end
-
-    def request_rpc_lit(request, mapping_registry, opt)
-      request.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def request_doc_enc(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def request_doc_lit(body, mapping_registry, opt)
-      body.collect { |key, value|
-        Mapping.soap2obj(value, mapping_registry, nil, opt)
-      }
-    end
-
-    def response_rpc(result, mapping_registry, literal_mapping_registry, opt)
-      if @response_use == :encoded
-        response_rpc_enc(result, mapping_registry, opt)
-      else
-        response_rpc_lit(result, literal_mapping_registry, opt)
-      end
-    end
-    
-    def response_doc(result, mapping_registry, literal_mapping_registry, opt)
-      if @doc_response_qnames.size == 1 and !result.is_a?(Array)
-        result = [result]
-      end
-      if result.size != @doc_response_qnames.size
-        raise "required #{@doc_response_qnames.size} responses " +
-          "but #{result.size} given"
-      end
-      if @response_use == :encoded
-        response_doc_enc(result, mapping_registry, opt)
-      else
-        response_doc_lit(result, literal_mapping_registry, opt)
-      end
-    end
-
-    def response_rpc_enc(result, mapping_registry, opt)
-      soap_response =
-        @rpc_method_factory.create_method_response(@rpc_response_qname)
-      if soap_response.have_outparam?
-        unless result.is_a?(Array)
-          raise RPCRoutingError.new("out parameter was not returned")
-        end
-        outparams = {}
-        i = 1
-        soap_response.output_params.each do |outparam|
-          outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
-            nil, opt)
-          i += 1
-        end
-        soap_response.set_outparam(outparams)
-        soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
-          nil, opt)
-      else
-        soap_response.retval = Mapping.obj2soap(result, mapping_registry, nil,
-          opt)
-      end
-      soap_response
-    end
-
-    def response_rpc_lit(result, mapping_registry, opt)
-      soap_response =
-        @rpc_method_factory.create_method_response(@rpc_response_qname)
-      if soap_response.have_outparam?
-        unless result.is_a?(Array)
-          raise RPCRoutingError.new("out parameter was not returned")
-        end
-        outparams = {}
-        i = 1
-        soap_response.output_params.each do |outparam|
-          outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
-            XSD::QName.new(nil, outparam), opt)
-          i += 1
-        end
-        soap_response.set_outparam(outparams)
-        soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
-          XSD::QName.new(nil, soap_response.elename), opt)
-      else
-        soap_response.retval = Mapping.obj2soap(result, mapping_registry,
-          XSD::QName.new(nil, soap_response.elename), opt)
-      end
-      soap_response
-    end
-
-    def response_doc_enc(result, mapping_registry, opt)
-      (0...result.size).collect { |idx|
-        ele = Mapping.obj2soap(result[idx], mapping_registry, nil, opt)
-        ele.elename = @doc_response_qnames[idx]
-        ele
-      }
-    end
-
-    def response_doc_lit(result, mapping_registry, opt)
-      (0...result.size).collect { |idx|
-        ele = Mapping.obj2soap(result[idx], mapping_registry,
-          @doc_response_qnames[idx])
-        ele.encodingstyle = LiteralNamespace
-        if ele.respond_to?(:qualified)
-          ele.qualified = @doc_response_qualified[idx]
-        end
-        ele
-      }
-    end
-
-    def check_style(style)
-      unless [:rpc, :document].include?(style)
-        raise ArgumentError.new("unknown style: #{style}")
-      end
-    end
-
-    def check_use(use)
-      unless [:encoded, :literal].include?(use)
-        raise ArgumentError.new("unknown use: #{use}")
-      end
-    end
-  end
-
-  class ApplicationScopeOperation < Operation
-    def initialize(soapaction, receiver, name, param_def, opt)
-      super(soapaction, name, param_def, opt)
-      @receiver = receiver
-    end
-
-  private
-
-    def receiver
-      @receiver
-    end
-  end
-
-  class RequestScopeOperation < Operation
-    def initialize(soapaction, receiver_factory, name, param_def, opt)
-      super(soapaction, name, param_def, opt)
-      unless receiver_factory.respond_to?(:create)
-        raise TypeError.new("factory must respond to 'create'")
-      end
-      @receiver_factory = receiver_factory
-    end
-
-  private
-
-    def receiver
-      @receiver_factory.create
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/rpc.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/rpc.rb
deleted file mode 100644
index a48b525..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/rpc.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# SOAP4R - RPC utility.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module SOAP
-
-
-module RPC
-  ServerException = Mapping::MappedException
-
-  def self.defined_methods(obj)
-    if obj.is_a?(Module)
-      obj.methods - Module.methods
-    else
-      obj.methods - Object.instance_methods(true)
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/soaplet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/soaplet.rb
deleted file mode 100644
index 7cccdd3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/soaplet.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-# SOAP4R - SOAP handler servlet for WEBrick
-# Copyright (C) 2001-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'webrick/httpservlet/abstract'
-require 'webrick/httpstatus'
-require 'soap/rpc/router'
-require 'soap/streamHandler'
-begin
-  require 'stringio'
-  require 'zlib'
-rescue LoadError
-  warn("Loading stringio or zlib failed.  No gzipped response supported.") if $DEBUG
-end
-
-
-warn("Overriding WEBrick::Log#debug") if $DEBUG
-require 'webrick/log'
-module WEBrick
-  class Log < BasicLog
-    alias __debug debug
-    def debug(msg = nil)
-      if block_given? and msg.nil?
-        __debug(yield)
-      else
-        __debug(msg)
-      end
-    end
-  end
-end
-
-
-module SOAP
-module RPC
-
-
-class SOAPlet < WEBrick::HTTPServlet::AbstractServlet
-public
-  attr_reader :options
-
-  def initialize(router = nil)
-    @router = router || ::SOAP::RPC::Router.new(self.class.name)
-    @options = {}
-    @config = {}
-  end
-
-  # for backward compatibility
-  def app_scope_router
-    @router
-  end
-
-  # for backward compatibility
-  def add_servant(obj, namespace)
-    @router.add_rpc_servant(obj, namespace)
-  end
-
-  def allow_content_encoding_gzip=(allow)
-    @options[:allow_content_encoding_gzip] = allow
-  end
-
-  ###
-  ## Servlet interfaces for WEBrick.
-  #
-  def get_instance(config, *options)
-    @config = config
-    self
-  end
-
-  def require_path_info?
-    false
-  end
-
-  def do_GET(req, res)
-    res.header['Allow'] = 'POST'
-    raise WEBrick::HTTPStatus::MethodNotAllowed, "GET request not allowed"
-  end
-
-  def do_POST(req, res)
-    logger.debug { "SOAP request: " + req.body } if logger
-    begin
-      conn_data = ::SOAP::StreamHandler::ConnectionData.new
-      setup_req(conn_data, req)
-      @router.external_ces = @options[:external_ces]
-      conn_data = @router.route(conn_data)
-      setup_res(conn_data, req, res)
-    rescue Exception => e
-      conn_data = @router.create_fault_response(e)
-      res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
-      res.body = conn_data.send_string
-      res['content-type'] = conn_data.send_contenttype || "text/xml"
-    end
-    if res.body.is_a?(IO)
-      res.chunked = true
-      logger.debug { "SOAP response: (chunked response not logged)" } if logger
-    else
-      logger.debug { "SOAP response: " + res.body } if logger
-    end
-  end
-
-private
-
-  def logger
-    @config[:Logger]
-  end
-
-  def setup_req(conn_data, req)
-    conn_data.receive_string = req.body
-    conn_data.receive_contenttype = req['content-type']
-    conn_data.soapaction = parse_soapaction(req.meta_vars['HTTP_SOAPACTION'])
-  end
-
-  def setup_res(conn_data, req, res)
-    res['content-type'] = conn_data.send_contenttype
-    if conn_data.is_fault
-      res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
-    end
-    if outstring = encode_gzip(req, conn_data.send_string)
-      res['content-encoding'] = 'gzip'
-      res['content-length'] = outstring.size
-      res.body = outstring
-    else
-      res.body = conn_data.send_string
-    end
-  end
-
-  def parse_soapaction(soapaction)
-    if !soapaction.nil? and !soapaction.empty?
-      if /^"(.+)"$/ =~ soapaction
-        return $1
-      end
-    end
-    nil
-  end
-
-  def encode_gzip(req, outstring)
-    unless encode_gzip?(req)
-      return nil
-    end
-    begin
-      ostream = StringIO.new
-      gz = Zlib::GzipWriter.new(ostream)
-      gz.write(outstring)
-      ostream.string
-    ensure
-      gz.close
-    end
-  end
-
-  def encode_gzip?(req)
-    @options[:allow_content_encoding_gzip] and defined?(::Zlib) and
-      req['accept-encoding'] and
-      req['accept-encoding'].split(/,\s*/).include?('gzip')
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/standaloneServer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/standaloneServer.rb
deleted file mode 100644
index 080343b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/rpc/standaloneServer.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOAP4R - WEBrick Server
-# Copyright (C) 2003 by NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/rpc/httpserver'
-
-
-module SOAP
-module RPC
-
-
-class StandaloneServer < HTTPServer
-  def initialize(appname, default_namespace, host = "0.0.0.0", port = 8080)
-    @appname = appname
-    @default_namespace = default_namespace
-    @host = host
-    @port = port
-    super(create_config)
-  end
-
-  alias add_servant add_rpc_servant
-  alias add_headerhandler add_rpc_headerhandler
-
-private
-
-  def create_config
-    {
-      :BindAddress => @host,
-      :Port => @port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => @default_namespace,
-      :SOAPHTTPServerApplicationName => @appname,
-    }
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/soap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/soap.rb
deleted file mode 100644
index 12e09ec..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/soap.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# soap/soap.rb: SOAP4R - Base definitions.
-# Copyright (C) 2000-2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/charset'
-
-
-module SOAP
-
-
-VERSION = Version = '1.5.5'
-PropertyName = 'soap/property'
-
-EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
-EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
-LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
-
-NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
-
-EleEnvelope = 'Envelope'
-EleHeader = 'Header'
-EleBody = 'Body'
-EleFault = 'Fault'
-EleFaultString = 'faultstring'
-EleFaultActor = 'faultactor'
-EleFaultCode = 'faultcode'
-EleFaultDetail = 'detail'
-
-AttrMustUnderstand = 'mustUnderstand'
-AttrEncodingStyle = 'encodingStyle'
-AttrActor = 'actor'
-AttrRoot = 'root'
-AttrArrayType = 'arrayType'
-AttrOffset = 'offset'
-AttrPosition = 'position'
-ValueArray = 'Array'
-
-EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
-EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
-EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
-EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
-EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
-EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
-EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
-EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
-AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
-AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
-AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
-AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
-AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
-AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
-ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
-
-Base64Literal = 'base64'
-
-SOAPNamespaceTag = 'env'
-XSDNamespaceTag = 'xsd'
-XSINamespaceTag = 'xsi'
-
-MediaType = 'text/xml'
-
-class Error < StandardError; end
-
-class StreamError < Error; end
-class HTTPStreamError < StreamError; end
-class PostUnavailableError < HTTPStreamError; end
-class MPostUnavailableError < HTTPStreamError; end
-
-class ArrayIndexOutOfBoundsError < Error; end
-class ArrayStoreError < Error; end
-
-class RPCRoutingError < Error; end
-class EmptyResponseError < Error; end
-class ResponseFormatError < Error; end
-
-class UnhandledMustUnderstandHeaderError < Error; end
-
-class FaultError < Error
-  attr_reader :faultcode
-  attr_reader :faultstring
-  attr_reader :faultactor
-  attr_accessor :detail
-
-  def initialize(fault)
-    @faultcode = fault.faultcode
-    @faultstring = fault.faultstring
-    @faultactor = fault.faultactor
-    @detail = fault.detail
-    super(self.to_s)
-  end
-
-  def to_s
-    str = nil
-    if @faultstring and @faultstring.respond_to?('data')
-      str = @faultstring.data
-    end
-    str || '(No faultstring)'
-  end
-end
-
-
-module Env
-  def self.getenv(name)
-    ENV[name.downcase] || ENV[name.upcase]
-  end
-
-  use_proxy = getenv('soap_use_proxy') == 'on'
-  HTTP_PROXY = use_proxy ? getenv('http_proxy') : nil
-  NO_PROXY = use_proxy ? getenv('no_proxy') : nil
-end
-
-
-end
-
-
-unless Object.respond_to?(:instance_variable_get)
-  class Object
-    def instance_variable_get(ivarname)
-      instance_eval(ivarname)
-    end
-
-    def instance_variable_set(ivarname, value)
-      instance_eval("#{ivarname} = value")
-    end
-  end
-end
-
-
-unless Kernel.respond_to?(:warn)
-  module Kernel
-    def warn(msg)
-      STDERR.puts(msg + "\n") unless $VERBOSE.nil?
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/streamHandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/streamHandler.rb
deleted file mode 100644
index 672396e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/streamHandler.rb
+++ /dev/null
@@ -1,229 +0,0 @@
-# SOAP4R - Stream handler.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/soap'
-require 'soap/httpconfigloader'
-begin
-  require 'stringio'
-  require 'zlib'
-rescue LoadError
-  warn("Loading stringio or zlib failed.  No gzipped response support.") if $DEBUG
-end
-
-
-module SOAP
-
-
-class StreamHandler
-  RUBY_VERSION_STRING = "ruby #{ RUBY_VERSION } (#{ RUBY_RELEASE_DATE }) [#{ RUBY_PLATFORM }]"
-
-  class ConnectionData
-    attr_accessor :send_string
-    attr_accessor :send_contenttype
-    attr_accessor :receive_string
-    attr_accessor :receive_contenttype
-    attr_accessor :is_fault
-    attr_accessor :soapaction
-
-    def initialize(send_string = nil)
-      @send_string = send_string
-      @send_contenttype = nil
-      @receive_string = nil
-      @receive_contenttype = nil
-      @is_fault = false
-      @soapaction = nil
-    end
-  end
-
-  def self.parse_media_type(str)
-    if /^#{ MediaType }(?:\s*;\s*charset=([^"]+|"[^"]+"))?$/i !~ str
-      return nil
-    end
-    charset = $1
-    charset.gsub!(/"/, '') if charset
-    charset || 'us-ascii'
-  end
-
-  def self.create_media_type(charset)
-    "#{ MediaType }; charset=#{ charset }"
-  end
-end
-
-
-class HTTPStreamHandler < StreamHandler
-  include SOAP
-
-  begin
-    require 'http-access2'
-    if HTTPAccess2::VERSION < "2.0"
-      raise LoadError.new("http-access/2.0 or later is required.")
-    end
-    Client = HTTPAccess2::Client
-    RETRYABLE = true
-  rescue LoadError
-    warn("Loading http-access2 failed.  Net/http is used.") if $DEBUG
-    require 'soap/netHttpClient'
-    Client = SOAP::NetHttpClient
-    RETRYABLE = false
-  end
-
-
-public
-  
-  attr_reader :client
-  attr_accessor :wiredump_file_base
-  
-  MAX_RETRY_COUNT = 10       	# [times]
-
-  def initialize(options)
-    super()
-    @client = Client.new(nil, "SOAP4R/#{ Version }")
-    @wiredump_file_base = nil
-    @charset = @wiredump_dev = nil
-    @options = options
-    set_options
-    @client.debug_dev = @wiredump_dev
-    @cookie_store = nil
-    @accept_encoding_gzip = false
-  end
-
-  def test_loopback_response
-    @client.test_loopback_response
-  end
-
-  def accept_encoding_gzip=(allow)
-    @accept_encoding_gzip = allow
-  end
-
-  def inspect
-    "#<#{self.class}>"
-  end
-
-  def send(endpoint_url, conn_data, soapaction = nil, charset = @charset)
-    conn_data.soapaction ||= soapaction # for backward conpatibility
-    send_post(endpoint_url, conn_data, charset)
-  end
-
-  def reset(endpoint_url = nil)
-    if endpoint_url.nil?
-      @client.reset_all
-    else
-      @client.reset(endpoint_url)
-    end
-    @client.save_cookie_store if @cookie_store
-  end
-
-private
-
-  def set_options
-    HTTPConfigLoader.set_options(@client, @options)
-    @charset = @options["charset"] || XSD::Charset.xml_encoding_label
-    @options.add_hook("charset") do |key, value|
-      @charset = value
-    end
-    @wiredump_dev = @options["wiredump_dev"]
-    @options.add_hook("wiredump_dev") do |key, value|
-      @wiredump_dev = value
-      @client.debug_dev = @wiredump_dev
-    end
-    set_cookie_store_file(@options["cookie_store_file"])
-    @options.add_hook("cookie_store_file") do |key, value|
-      set_cookie_store_file(value)
-    end
-    ssl_config = @options["ssl_config"]
-    basic_auth = @options["basic_auth"]
-    @options.lock(true)
-    ssl_config.unlock
-    basic_auth.unlock
-  end
-
-  def set_cookie_store_file(value)
-    value = nil if value and value.empty?
-    @cookie_store = value
-    @client.set_cookie_store(@cookie_store) if @cookie_store
-  end
-
-  def send_post(endpoint_url, conn_data, charset)
-    conn_data.send_contenttype ||= StreamHandler.create_media_type(charset)
-
-    if @wiredump_file_base
-      filename = @wiredump_file_base + '_request.xml'
-      f = File.open(filename, "w")
-      f << conn_data.send_string
-      f.close
-    end
-
-    extra = {}
-    extra['Content-Type'] = conn_data.send_contenttype
-    extra['SOAPAction'] = "\"#{ conn_data.soapaction }\""
-    extra['Accept-Encoding'] = 'gzip' if send_accept_encoding_gzip?
-    send_string = conn_data.send_string
-    @wiredump_dev << "Wire dump:\n\n" if @wiredump_dev
-    begin
-      retry_count = 0
-      while true
-        res = @client.post(endpoint_url, send_string, extra)
-        if RETRYABLE and HTTP::Status.redirect?(res.status)
-          retry_count += 1
-          if retry_count >= MAX_RETRY_COUNT
-            raise HTTPStreamError.new("redirect count exceeded")
-          end
-          endpoint_url = res.header["location"][0]
-          puts "redirected to #{endpoint_url}" if $DEBUG
-        else
-          break
-        end
-      end
-    rescue
-      @client.reset(endpoint_url)
-      raise
-    end
-    @wiredump_dev << "\n\n" if @wiredump_dev
-    receive_string = res.content
-    if @wiredump_file_base
-      filename = @wiredump_file_base + '_response.xml'
-      f = File.open(filename, "w")
-      f << receive_string
-      f.close
-    end
-    case res.status
-    when 405
-      raise PostUnavailableError.new("#{ res.status }: #{ res.reason }")
-    when 200, 500
-      # Nothing to do.
-    else
-      raise HTTPStreamError.new("#{ res.status }: #{ res.reason }")
-    end
-    if res.respond_to?(:header) and !res.header['content-encoding'].empty? and
-        res.header['content-encoding'][0].downcase == 'gzip'
-      receive_string = decode_gzip(receive_string)
-    end
-    conn_data.receive_string = receive_string
-    conn_data.receive_contenttype = res.contenttype
-    conn_data
-  end
-
-  def send_accept_encoding_gzip?
-    @accept_encoding_gzip and defined?(::Zlib)
-  end
-
-  def decode_gzip(instring)
-    unless send_accept_encoding_gzip?
-      raise HTTPStreamError.new("Gzipped response content.")
-    end
-    begin
-      gz = Zlib::GzipReader.new(StringIO.new(instring))
-      gz.read
-    ensure
-      gz.close
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/wsdlDriver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/wsdlDriver.rb
deleted file mode 100644
index eba9608..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/soap/wsdlDriver.rb
+++ /dev/null
@@ -1,575 +0,0 @@
-# SOAP4R - SOAP WSDL driver
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/parser'
-require 'wsdl/importer'
-require 'xsd/qname'
-require 'xsd/codegen/gensupport'
-require 'soap/mapping/wsdlencodedregistry'
-require 'soap/mapping/wsdlliteralregistry'
-require 'soap/rpc/driver'
-require 'wsdl/soap/methodDefCreator'
-
-
-module SOAP
-
-
-class WSDLDriverFactory
-  class FactoryError < StandardError; end
-
-  attr_reader :wsdl
-
-  def initialize(wsdl)
-    @wsdl = import(wsdl)
-    @methoddefcreator = WSDL::SOAP::MethodDefCreator.new(@wsdl)
-  end
-  
-  def inspect
-    "#<#{self.class}:#{@wsdl.name}>"
-  end
-
-  def create_rpc_driver(servicename = nil, portname = nil)
-    port = find_port(servicename, portname)
-    drv = SOAP::RPC::Driver.new(port.soap_address.location)
-    init_driver(drv, port)
-    add_operation(drv, port)
-    drv
-  end
-
-  # depricated old interface
-  def create_driver(servicename = nil, portname = nil)
-    warn("WSDLDriverFactory#create_driver is depricated.  Use create_rpc_driver instead.")
-    port = find_port(servicename, portname)
-    WSDLDriver.new(@wsdl, port, nil)
-  end
-
-  # Backward compatibility.
-  alias createDriver create_driver
-
-private
-
-  def find_port(servicename = nil, portname = nil)
-    service = port = nil
-    if servicename
-      service = @wsdl.service(
-        XSD::QName.new(@wsdl.targetnamespace, servicename))
-    else
-      service = @wsdl.services[0]
-    end
-    if service.nil?
-      raise FactoryError.new("service #{servicename} not found in WSDL")
-    end
-    if portname
-      port = service.ports[XSD::QName.new(@wsdl.targetnamespace, portname)]
-      if port.nil?
-        raise FactoryError.new("port #{portname} not found in WSDL")
-      end
-    else
-      port = service.ports.find { |port| !port.soap_address.nil? }
-      if port.nil?
-        raise FactoryError.new("no ports have soap:address")
-      end
-    end
-    if port.soap_address.nil?
-      raise FactoryError.new("soap:address element not found in WSDL")
-    end
-    port
-  end
-
-  def init_driver(drv, port)
-    wsdl_elements = @wsdl.collect_elements
-    wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
-    rpc_decode_typemap = wsdl_types +
-      @wsdl.soap_rpc_complextypes(port.find_binding)
-    drv.proxy.mapping_registry =
-      Mapping::WSDLEncodedRegistry.new(rpc_decode_typemap)
-    drv.proxy.literal_mapping_registry =
-      Mapping::WSDLLiteralRegistry.new(wsdl_types, wsdl_elements)
-  end
-
-  def add_operation(drv, port)
-    port.find_binding.operations.each do |op_bind|
-      op_name = op_bind.soapoperation_name
-      soapaction = op_bind.soapaction || ''
-      orgname = op_name.name
-      name = XSD::CodeGen::GenSupport.safemethodname(orgname)
-      param_def = create_param_def(op_bind)
-      opt = {
-        :request_style => op_bind.soapoperation_style,
-        :response_style => op_bind.soapoperation_style,
-        :request_use => op_bind.input.soapbody_use,
-        :response_use => op_bind.output.soapbody_use,
-        :elementformdefault => false,
-        :attributeformdefault => false
-      }
-      if op_bind.soapoperation_style == :rpc
-        drv.add_rpc_operation(op_name, soapaction, name, param_def, opt)
-      else
-        drv.add_document_operation(soapaction, name, param_def, opt)
-      end
-      if orgname != name and orgname.capitalize == name.capitalize
-        ::SOAP::Mapping.define_singleton_method(drv, orgname) do |*arg|
-          __send__(name, *arg)
-        end
-      end
-    end
-  end
-
-  def import(location)
-    WSDL::Importer.import(location)
-  end
-
-  def create_param_def(op_bind)
-    op = op_bind.find_operation
-    if op_bind.soapoperation_style == :rpc
-      param_def = @methoddefcreator.collect_rpcparameter(op)
-    else
-      param_def = @methoddefcreator.collect_documentparameter(op)
-    end
-    # the first element of typedef in param_def is a String like
-    # "::SOAP::SOAPStruct".  turn this String to a class.
-    param_def.collect { |io, name, typedef|
-      typedef[0] = Mapping.class_from_name(typedef[0])
-      [io, name, typedef]
-    }
-  end
-
-  def partqname(part)
-    if part.type
-      part.type
-    else
-      part.element
-    end
-  end
-
-  def param_def(type, name, klass, partqname)
-    [type, name, [klass, partqname.namespace, partqname.name]]
-  end
-
-  def filter_parts(partsdef, partssource)
-    parts = partsdef.split(/\s+/)
-    partssource.find_all { |part| parts.include?(part.name) }
-  end
-end
-
-
-class WSDLDriver
-  class << self
-    if RUBY_VERSION >= "1.7.0"
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        define_method(name) {
-          @servant.__send__(name)
-        }
-        if assignable
-          aname = name + '='
-          define_method(aname) { |rhs|
-            @servant.__send__(aname, rhs)
-          }
-        end
-      end
-    else
-      def __attr_proxy(symbol, assignable = false)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @servant.#{name}
-          end
-        EOS
-        if assignable
-          module_eval <<-EOS
-            def #{name}=(value)
-              @servant.#{name} = value
-            end
-          EOS
-        end
-      end
-    end
-  end
-
-  __attr_proxy :options
-  __attr_proxy :headerhandler
-  __attr_proxy :streamhandler
-  __attr_proxy :test_loopback_response
-  __attr_proxy :endpoint_url, true
-  __attr_proxy :mapping_registry, true		# for RPC unmarshal
-  __attr_proxy :wsdl_mapping_registry, true	# for RPC marshal
-  __attr_proxy :default_encodingstyle, true
-  __attr_proxy :generate_explicit_type, true
-  __attr_proxy :allow_unqualified_element, true
-
-  def httpproxy
-    @servant.options["protocol.http.proxy"]
-  end
-
-  def httpproxy=(httpproxy)
-    @servant.options["protocol.http.proxy"] = httpproxy
-  end
-
-  def wiredump_dev
-    @servant.options["protocol.http.wiredump_dev"]
-  end
-
-  def wiredump_dev=(wiredump_dev)
-    @servant.options["protocol.http.wiredump_dev"] = wiredump_dev
-  end
-
-  def mandatorycharset
-    @servant.options["protocol.mandatorycharset"]
-  end
-
-  def mandatorycharset=(mandatorycharset)
-    @servant.options["protocol.mandatorycharset"] = mandatorycharset
-  end
-
-  def wiredump_file_base
-    @servant.options["protocol.wiredump_file_base"]
-  end
-
-  def wiredump_file_base=(wiredump_file_base)
-    @servant.options["protocol.wiredump_file_base"] = wiredump_file_base
-  end
-
-  def initialize(wsdl, port, logdev)
-    @servant = Servant__.new(self, wsdl, port, logdev)
-  end
-
-  def inspect
-    "#<#{self.class}:#{@servant.port.name}>"
-  end
-
-  def reset_stream
-    @servant.reset_stream
-  end
-
-  # Backward compatibility.
-  alias generateEncodeType= generate_explicit_type=
-
-  class Servant__
-    include SOAP
-
-    attr_reader :options
-    attr_reader :port
-
-    attr_accessor :soapaction
-    attr_accessor :default_encodingstyle
-    attr_accessor :allow_unqualified_element
-    attr_accessor :generate_explicit_type
-    attr_accessor :mapping_registry
-    attr_accessor :wsdl_mapping_registry
-
-    def initialize(host, wsdl, port, logdev)
-      @host = host
-      @wsdl = wsdl
-      @port = port
-      @logdev = logdev
-      @soapaction = nil
-      @options = setup_options
-      @default_encodingstyle = nil
-      @allow_unqualified_element = nil
-      @generate_explicit_type = false
-      @mapping_registry = nil		# for rpc unmarshal
-      @wsdl_mapping_registry = nil	# for rpc marshal
-      @wiredump_file_base = nil
-      @mandatorycharset = nil
-      @wsdl_elements = @wsdl.collect_elements
-      @wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
-      @rpc_decode_typemap = @wsdl_types +
-	@wsdl.soap_rpc_complextypes(port.find_binding)
-      @wsdl_mapping_registry = Mapping::WSDLEncodedRegistry.new(
-        @rpc_decode_typemap)
-      @doc_mapper = Mapping::WSDLLiteralRegistry.new(
-        @wsdl_types, @wsdl_elements)
-      endpoint_url = @port.soap_address.location
-      # Convert a map which key is QName, to a Hash which key is String.
-      @operation = {}
-      @port.inputoperation_map.each do |op_name, op_info|
-        orgname = op_name.name
-        name = XSD::CodeGen::GenSupport.safemethodname(orgname)
-	@operation[name] = @operation[orgname] = op_info
-	add_method_interface(op_info)
-      end
-      @proxy = ::SOAP::RPC::Proxy.new(endpoint_url, @soapaction, @options)
-    end
-
-    def inspect
-      "#<#{self.class}:#{@proxy.inspect}>"
-    end
-
-    def endpoint_url
-      @proxy.endpoint_url
-    end
-
-    def endpoint_url=(endpoint_url)
-      @proxy.endpoint_url = endpoint_url
-    end
-
-    def headerhandler
-      @proxy.headerhandler
-    end
-
-    def streamhandler
-      @proxy.streamhandler
-    end
-
-    def test_loopback_response
-      @proxy.test_loopback_response
-    end
-
-    def reset_stream
-      @proxy.reset_stream
-    end
-
-    def rpc_call(name, *values)
-      set_wiredump_file_base(name)
-      unless op_info = @operation[name]
-        raise RuntimeError, "method: #{name} not defined"
-      end
-      req_header = create_request_header
-      req_body = create_request_body(op_info, *values)
-      reqopt = create_options({
-        :soapaction => op_info.soapaction || @soapaction})
-      resopt = create_options({
-        :decode_typemap => @rpc_decode_typemap})
-      env = @proxy.route(req_header, req_body, reqopt, resopt)
-      raise EmptyResponseError unless env
-      receive_headers(env.header)
-      begin
-        @proxy.check_fault(env.body)
-      rescue ::SOAP::FaultError => e
-	Mapping.fault2exception(e)
-      end
-      ret = env.body.response ?
-	Mapping.soap2obj(env.body.response, @mapping_registry) : nil
-      if env.body.outparams
-	outparams = env.body.outparams.collect { |outparam|
-  	  Mapping.soap2obj(outparam)
-   	}
-    	return [ret].concat(outparams)
-      else
-      	return ret
-      end
-    end
-
-    # req_header: [[element, mustunderstand, encodingstyle(QName/String)], ...]
-    # req_body: SOAPBasetype/SOAPCompoundtype
-    def document_send(name, header_obj, body_obj)
-      set_wiredump_file_base(name)
-      unless op_info = @operation[name]
-        raise RuntimeError, "method: #{name} not defined"
-      end
-      req_header = header_obj ? header_from_obj(header_obj, op_info) : nil
-      req_body = body_from_obj(body_obj, op_info)
-      opt = create_options({
-        :soapaction => op_info.soapaction || @soapaction,
-        :decode_typemap => @wsdl_types})
-      env = @proxy.invoke(req_header, req_body, opt)
-      raise EmptyResponseError unless env
-      if env.body.fault
-	raise ::SOAP::FaultError.new(env.body.fault)
-      end
-      res_body_obj = env.body.response ?
-	Mapping.soap2obj(env.body.response, @mapping_registry) : nil
-      return env.header, res_body_obj
-    end
-
-  private
-
-    def create_options(hash = nil)
-      opt = {}
-      opt[:default_encodingstyle] = @default_encodingstyle
-      opt[:allow_unqualified_element] = @allow_unqualified_element
-      opt[:generate_explicit_type] = @generate_explicit_type
-      opt.update(hash) if hash
-      opt
-    end
-
-    def set_wiredump_file_base(name)
-      if @wiredump_file_base
-      	@proxy.set_wiredump_file_base(@wiredump_file_base + "_#{name}")
-      end
-    end
-
-    def create_request_header
-      headers = @proxy.headerhandler.on_outbound
-      if headers.empty?
-	nil
-      else
-	h = SOAPHeader.new
-	headers.each do |header|
-	  h.add(header.elename.name, header)
-	end
-	h
-      end
-    end
-
-    def receive_headers(headers)
-      @proxy.headerhandler.on_inbound(headers) if headers
-    end
-
-    def create_request_body(op_info, *values)
-      method = create_method_struct(op_info, *values)
-      SOAPBody.new(method)
-    end
-
-    def create_method_struct(op_info, *params)
-      parts_names = op_info.bodyparts.collect { |part| part.name }
-      obj = create_method_obj(parts_names, params)
-      method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.op_name)
-      if method.members.size != parts_names.size
-	new_method = SOAPStruct.new
-	method.each do |key, value|
-	  if parts_names.include?(key)
-	    new_method.add(key, value)
-	  end
-	end
-	method = new_method
-      end
-      method.elename = op_info.op_name
-      method.type = XSD::QName.new	# Request should not be typed.
-      method
-    end
-
-    def create_method_obj(names, params)
-      o = Object.new
-      idx = 0
-      while idx < params.length
-        o.instance_variable_set('@' + names[idx], params[idx])
-        idx += 1
-      end
-      o
-    end
-
-    def header_from_obj(obj, op_info)
-      if obj.is_a?(SOAPHeader)
-	obj
-      elsif op_info.headerparts.empty?
-	if obj.nil?
-	  nil
-	else
-	  raise RuntimeError.new("no header definition in schema: #{obj}")
-	end
-      elsif op_info.headerparts.size == 1
-       	part = op_info.headerparts[0]
-	header = SOAPHeader.new()
-	header.add(headeritem_from_obj(obj, part.element || part.eletype))
-	header
-      else
-	header = SOAPHeader.new()
-	op_info.headerparts.each do |part|
-	  child = Mapping.get_attribute(obj, part.name)
-	  ele = headeritem_from_obj(child, part.element || part.eletype)
-	  header.add(part.name, ele)
-	end
-	header
-      end
-    end
-
-    def headeritem_from_obj(obj, name)
-      if obj.nil?
-	SOAPElement.new(name)
-      elsif obj.is_a?(SOAPHeaderItem)
-	obj
-      else
-        Mapping.obj2soap(obj, @doc_mapper, name)
-      end
-    end
-
-    def body_from_obj(obj, op_info)
-      if obj.is_a?(SOAPBody)
-	obj
-      elsif op_info.bodyparts.empty?
-	if obj.nil?
-	  nil
-	else
-	  raise RuntimeError.new("no body found in schema")
-	end
-      elsif op_info.bodyparts.size == 1
-       	part = op_info.bodyparts[0]
-	ele = bodyitem_from_obj(obj, part.element || part.type)
-	SOAPBody.new(ele)
-      else
-	body = SOAPBody.new
-	op_info.bodyparts.each do |part|
-	  child = Mapping.get_attribute(obj, part.name)
-	  ele = bodyitem_from_obj(child, part.element || part.type)
-	  body.add(ele.elename.name, ele)
-	end
-	body
-      end
-    end
-
-    def bodyitem_from_obj(obj, name)
-      if obj.nil?
-	SOAPElement.new(name)
-      elsif obj.is_a?(SOAPElement)
-	obj
-      else
-        Mapping.obj2soap(obj, @doc_mapper, name)
-      end
-    end
-
-    def add_method_interface(op_info)
-      name = XSD::CodeGen::GenSupport.safemethodname(op_info.op_name.name)
-      orgname = op_info.op_name.name
-      parts_names = op_info.bodyparts.collect { |part| part.name }
-      case op_info.style
-      when :document
-        if orgname != name and orgname.capitalize == name.capitalize
-          add_document_method_interface(orgname, parts_names)
-        end
-	add_document_method_interface(name, parts_names)
-      when :rpc
-        if orgname != name and orgname.capitalize == name.capitalize
-          add_rpc_method_interface(orgname, parts_names)
-        end
-	add_rpc_method_interface(name, parts_names)
-      else
-	raise RuntimeError.new("unknown style: #{op_info.style}")
-      end
-    end
-
-    def add_rpc_method_interface(name, parts_names)
-      ::SOAP::Mapping.define_singleton_method(@host, name) do |*arg|
-        unless arg.size == parts_names.size
-          raise ArgumentError.new(
-            "wrong number of arguments (#{arg.size} for #{parts_names.size})")
-        end
-        @servant.rpc_call(name, *arg)
-      end
-      @host.method(name)
-    end
-
-    def add_document_method_interface(name, parts_names)
-      ::SOAP::Mapping.define_singleton_method(@host, name) do |h, b|
-        @servant.document_send(name, h, b)
-      end
-      @host.method(name)
-    end
-
-    def setup_options
-      if opt = Property.loadproperty(::SOAP::PropertyName)
-	opt = opt["client"]
-      end
-      opt ||= Property.new
-      opt.add_hook("protocol.mandatorycharset") do |key, value|
-	@mandatorycharset = value
-      end
-      opt.add_hook("protocol.wiredump_file_base") do |key, value|
-	@wiredump_file_base = value
-      end
-      opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
-      opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
-      opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
-      opt
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sync.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sync.rb
deleted file mode 100644
index ae46c48..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/sync.rb
+++ /dev/null
@@ -1,311 +0,0 @@
-#
-#   sync.rb - 2 phase lock with counter
-#   	$Release Version: 1.0$
-#   	$Revision: 11708 $
-#   	$Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#   	by Keiju ISHITSUKA(keiju at ishitsuka.com)
-#
-# --
-#  Sync_m, Synchronizer_m
-#  Usage:
-#   obj.extend(Sync_m)
-#   or
-#   class Foo
-#	include Sync_m
-#	:
-#   end
-#
-#   Sync_m#sync_mode
-#   Sync_m#sync_locked?, locked?
-#   Sync_m#sync_shared?, shared?
-#   Sync_m#sync_exclusive?, sync_exclusive?
-#   Sync_m#sync_try_lock, try_lock
-#   Sync_m#sync_lock, lock
-#   Sync_m#sync_unlock, unlock
-#
-#   Sync, Synchronicer:
-#	include Sync_m
-#   Usage:
-#   sync = Sync.new
-#
-#   Sync#mode
-#   Sync#locked?
-#   Sync#shared?
-#   Sync#exclusive?
-#   Sync#try_lock(mode) -- mode = :EX, :SH, :UN
-#   Sync#lock(mode)     -- mode = :EX, :SH, :UN
-#   Sync#unlock
-#   Sync#synchronize(mode) {...}
-#   
-#
-
-unless defined? Thread
-  fail "Thread not available for this ruby interpreter"
-end
-
-module Sync_m
-  RCS_ID='-$Header$-'
-  
-  # lock mode
-  UN = :UN
-  SH = :SH
-  EX = :EX
-  
-  # exceptions
-  class Err < StandardError
-    def Err.Fail(*opt)
-      fail self, sprintf(self::Message, *opt)
-    end
-    
-    class UnknownLocker < Err
-      Message = "Thread(%s) not locked."
-      def UnknownLocker.Fail(th)
-	super(th.inspect)
-      end
-    end
-    
-    class LockModeFailer < Err
-      Message = "Unknown lock mode(%s)"
-      def LockModeFailer.Fail(mode)
-	if mode.id2name
-	  mode = id2name
-	end
-	super(mode)
-      end
-    end
-  end
-  
-  def Sync_m.define_aliases(cl)
-    cl.module_eval %q{
-      alias locked? sync_locked?
-      alias shared? sync_shared?
-      alias exclusive? sync_exclusive?
-      alias lock sync_lock
-      alias unlock sync_unlock
-      alias try_lock sync_try_lock
-      alias synchronize sync_synchronize
-    }
-  end
-  
-  def Sync_m.append_features(cl)
-    super
-    unless cl.instance_of?(Module)
-      # do nothing for Modules
-      # make aliases and include the proper module.
-      define_aliases(cl)
-    end
-  end
-  
-  def Sync_m.extend_object(obj)
-    super
-    obj.sync_extended
-  end
-
-  def sync_extended
-    unless (defined? locked? and
-	    defined? shared? and
-	    defined? exclusive? and
-	    defined? lock and
-	    defined? unlock and
-	    defined? try_lock and
-	    defined? synchronize)
-      Sync_m.define_aliases(class<<self;self;end)
-    end
-    sync_initialize
-  end
-
-  # accessing
-  def sync_locked?
-    sync_mode != UN
-  end
-  
-  def sync_shared?
-    sync_mode == SH
-  end
-  
-  def sync_exclusive?
-    sync_mode == EX
-  end
-  
-  # locking methods.
-  def sync_try_lock(mode = EX)
-    return unlock if sync_mode == UN
-    
-    Thread.critical = true
-    ret = sync_try_lock_sub(sync_mode)
-    Thread.critical = false
-    ret
-  end
-  
-  def sync_lock(m = EX)
-    return unlock if m == UN
-
-    until (Thread.critical = true; sync_try_lock_sub(m))
-      if sync_sh_locker[Thread.current]
-	sync_upgrade_waiting.push [Thread.current, sync_sh_locker[Thread.current]]
-	sync_sh_locker.delete(Thread.current)
-      else
-	sync_waiting.push Thread.current
-      end
-      Thread.stop
-    end
-    Thread.critical = false
-    self
-  end
-  
-  def sync_unlock(m = EX)
-    Thread.critical = true
-    if sync_mode == UN
-      Thread.critical = false
-      Err::UnknownLocker.Fail(Thread.current)
-    end
-    
-    m = sync_mode if m == EX and sync_mode == SH
-    
-    runnable = false
-    case m
-    when UN
-      Thread.critical = false
-      Err::UnknownLocker.Fail(Thread.current)
-      
-    when EX
-      if sync_ex_locker == Thread.current
-	if (self.sync_ex_count = sync_ex_count - 1) == 0
-	  self.sync_ex_locker = nil
-	  if sync_sh_locker.include?(Thread.current)
-	    self.sync_mode = SH
-	  else
-	    self.sync_mode = UN
-	  end
-	  runnable = true
-	end
-      else
-	Err::UnknownLocker.Fail(Thread.current)
-      end
-      
-    when SH
-      if (count = sync_sh_locker[Thread.current]).nil?
-	Err::UnknownLocker.Fail(Thread.current)
-      else
-	if (sync_sh_locker[Thread.current] = count - 1) == 0 
-	  sync_sh_locker.delete(Thread.current)
-	  if sync_sh_locker.empty? and sync_ex_count == 0
-	    self.sync_mode = UN
-	    runnable = true
-	  end
-	end
-      end
-    end
-    
-    if runnable
-      if sync_upgrade_waiting.size > 0
-	for k, v in sync_upgrade_waiting
-	  sync_sh_locker[k] = v
-	end
-	wait = sync_upgrade_waiting
-	self.sync_upgrade_waiting = []
-	Thread.critical = false
-	
-	for w, v in wait
-	  w.run
-	end
-      else
-	wait = sync_waiting
-	self.sync_waiting = []
-	Thread.critical = false
-	for w in wait
-	  w.run
-	end
-      end
-    end
-    
-    Thread.critical = false
-    self
-  end
-  
-  def sync_synchronize(mode = EX)
-    begin
-      sync_lock(mode)
-      yield
-    ensure
-      sync_unlock
-    end
-  end
-
-  attr :sync_mode, true
-    
-  attr :sync_waiting, true
-  attr :sync_upgrade_waiting, true
-  attr :sync_sh_locker, true
-  attr :sync_ex_locker, true
-  attr :sync_ex_count, true
-    
-  private
-
-  def sync_initialize
-    @sync_mode = UN
-    @sync_waiting = []
-    @sync_upgrade_waiting = []
-    @sync_sh_locker = Hash.new
-    @sync_ex_locker = nil
-    @sync_ex_count = 0
-  end
-
-  def initialize(*args)
-    sync_initialize
-    super
-  end
-    
-  def sync_try_lock_sub(m)
-    case m
-    when SH
-      case sync_mode
-      when UN
-	self.sync_mode = m
-	sync_sh_locker[Thread.current] = 1
-	ret = true
-      when SH
-	count = 0 unless count = sync_sh_locker[Thread.current]
-	sync_sh_locker[Thread.current] = count + 1
-	ret = true
-      when EX
-	# in EX mode, lock will upgrade to EX lock
-	if sync_ex_locker == Thread.current
-	  self.sync_ex_count = sync_ex_count + 1
-	  ret = true
-	else
-	  ret = false
-	end
-      end
-    when EX
-      if sync_mode == UN or
-	sync_mode == SH && sync_sh_locker.size == 1 && sync_sh_locker.include?(Thread.current) 
-	self.sync_mode = m
-	self.sync_ex_locker = Thread.current
-	self.sync_ex_count = 1
-	ret = true
-      elsif sync_mode == EX && sync_ex_locker == Thread.current
-	self.sync_ex_count = sync_ex_count + 1
-	ret = true
-      else
-	ret = false
-      end
-    else
-      Thread.critical = false
-      Err::LockModeFailer.Fail mode
-    end
-    return ret
-  end
-end
-Synchronizer_m = Sync_m
-
-class Sync
-  #Sync_m.extend_class self
-  include Sync_m
-    
-  def initialize
-    super
-  end
-    
-end
-Synchronizer = Sync
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tcltk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tcltk.rb
deleted file mode 100644
index 1a6694d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tcltk.rb
+++ /dev/null
@@ -1,367 +0,0 @@
-# tof
-
-#### tcltk library, more direct manipulation of tcl/tk
-####    Sep. 5, 1997    Y. Shigehiro
-
-require "tcltklib"
-
-################
-
-# module TclTk: collection of tcl/tk utilities (supplies namespace.)
-module TclTk
-
-  # initialize Hash to hold unique symbols and such
-  @namecnt = {}
-
-  # initialize Hash to hold callbacks
-  @callback = {}
-end
-
-# TclTk.mainloop(): call TclTkLib.mainloop()
-def TclTk.mainloop()
-  print("mainloop: start\n") if $DEBUG
-  TclTkLib.mainloop()
-  print("mainloop: end\n") if $DEBUG
-end
-
-# TclTk.deletecallbackkey(ca): remove callback from TclTk module
-#     this does not remove callbacks from tcl/tk interpreter
-#     without calling this method, TclTkInterpreter will not be GCed
-#   ca: callback(TclTkCallback)
-def TclTk.deletecallbackkey(ca)
-  print("deletecallbackkey: ", ca.to_s(), "\n") if $DEBUG
-  @callback.delete(ca.to_s)
-end
-
-# TclTk.dcb(ca, wid, W): call TclTk.deletecallbackkey() for each callbacks
-#     in an array.
-#     this is for callback for top-level <Destroy>
-#   ca: array of callbacks(TclTkCallback)
-#   wid: top-level widget(TclTkWidget)
-#   w: information about window given by %W(String)
-def TclTk.dcb(ca, wid, w)
-  if wid.to_s() == w
-    ca.each{|i|
-      TclTk.deletecallbackkey(i)
-    }
-  end
-end
-
-# TclTk._addcallback(ca): register callback
-#   ca: callback(TclTkCallback)
-def TclTk._addcallback(ca)
-  print("_addcallback: ", ca.to_s(), "\n") if $DEBUG
-  @callback[ca.to_s()] = ca
-end
-
-# TclTk._callcallback(key, arg): invoke registered callback
-#   key: key to select callback (to_s value of the TclTkCallback)
-#   arg: parameter from tcl/tk interpreter
-def TclTk._callcallback(key, arg)
-  print("_callcallback: ", @callback[key].inspect, "\n") if $DEBUG
-  @callback[key]._call(arg)
-  # throw out callback value
-  # should return String to satisfy rb_eval_string()
-  return ""
-end
-
-# TclTk._newname(prefix): generate unique name(String)
-#   prefix: prefix of the unique name
-def TclTk._newname(prefix)
-  # generated name counter is stored in @namecnt
-  if !@namecnt.key?(prefix)
-    # first appearing prefix, initialize
-    @namecnt[prefix] = 1
-  else
-    # already appeared prefix, generate next name
-    @namecnt[prefix] += 1
-  end
-  return "#{prefix}#{@namecnt[prefix]}"
-end
-
-################
-
-# class TclTkInterpreter: tcl/tk interpreter
-class TclTkInterpreter
-
-  # initialize(): 
-  def initialize()
-    # generate interpreter object
-    @ip = TclTkIp.new()
-
-    # add ruby_fmt command to tcl interpreter
-    # ruby_fmt command format arguments by `format' and call `ruby' command
-    # (notice ruby command receives only one argument)
-    if $DEBUG
-      @ip._eval("proc ruby_fmt {fmt args} { puts \"ruby_fmt: $fmt $args\" ; set cmd [list ruby [format $fmt $args]] ; uplevel $cmd }")
-    else
-      @ip._eval("proc ruby_fmt {fmt args} { set cmd [list ruby [format $fmt $args]] ; uplevel $cmd }")
-    end
-
-    # @ip._get_eval_string(*args): generate string to evaluate in tcl interpreter
-    #   *args: script which is going to be evaluated under tcl/tk
-    def @ip._get_eval_string(*args)
-      argstr = ""
-      args.each{|arg|
-        argstr += " " if argstr != ""
-        # call to_eval if it is defined
-        if (arg.respond_to?(:to_eval))
-          argstr += arg.to_eval()
-        else
-          # call to_s unless defined
-          argstr += arg.to_s()
-        end
-      }
-      return argstr
-    end
-
-    # @ip._eval_args(*args): evaluate string under tcl/tk interpreter
-    #     returns result string.
-    #   *args: script which is going to be evaluated under tcl/tk
-    def @ip._eval_args(*args)
-      # calculate the string to eval in the interpreter
-      argstr = _get_eval_string(*args)
-
-      # evaluate under the interpreter
-      print("_eval: \"", argstr, "\"") if $DEBUG
-      res = _eval(argstr)
-      if $DEBUG
-        print(" -> \"", res, "\"\n")
-      elsif  _return_value() != 0
-        print(res, "\n")
-      end
-      fail(%Q/can't eval "#{argstr}"/) if _return_value() != 0 #'
-      return res
-    end
-
-    # generate tcl/tk command object and register in the hash
-    @commands = {}
-    # for all commands registered in tcl/tk interpreter:
-    @ip._eval("info command").split(/ /).each{|comname|
-      if comname =~ /^[.]/
-        # if command is a widget (path), generate TclTkWidget,
-        # and register it in the hash
-        @commands[comname] = TclTkWidget.new(@ip, comname)
-      else
-        # otherwise, generate TclTkCommand
-        @commands[comname] = TclTkCommand.new(@ip, comname)
-      end
-    }
-  end
-
-  # commands(): returns hash of the tcl/tk commands
-  def commands()
-    return @commands
-  end
-
-  # rootwidget(): returns root widget(TclTkWidget)
-  def rootwidget()
-    return @commands["."]
-  end
-
-  # _tcltkip(): returns @ip(TclTkIp)
-  def _tcltkip()
-    return @ip
-  end
-
-  # method_missing(id, *args): execute undefined method as tcl/tk command
-  #   id: method symbol
-  #   *args: method arguments
-  def method_missing(id, *args)
-    # if command named by id registered, then execute it
-    if @commands.key?(id.id2name)
-      return @commands[id.id2name].e(*args)
-    else
-      # otherwise, exception
-      super
-    end
-  end
-end
-
-# class TclTkObject: base class of the tcl/tk objects
-class TclTkObject
-
-  # initialize(ip, exp): 
-  #   ip: interpreter(TclTkIp)
-  #   exp: tcl/tk representation
-  def initialize(ip, exp)
-    fail("type is not TclTkIp") if !ip.kind_of?(TclTkIp)
-    @ip = ip
-    @exp = exp
-  end
-
-  # to_s(): returns tcl/tk representation
-  def to_s()
-    return @exp
-  end
-end
-
-# class TclTkCommand: tcl/tk commands
-# you should not call TclTkCommand.new()
-# commands are created by TclTkInterpreter:initialize()
-class TclTkCommand < TclTkObject
-
-  # e(*args): execute command.  returns String (e is for exec or eval)
-  #   *args: command arguments
-  def e(*args)
-    return @ip._eval_args(to_s(), *args)
-  end
-end
-
-# class TclTkLibCommand: tcl/tk commands in the library
-class TclTkLibCommand < TclTkCommand
-
-  # initialize(ip, name): 
-  #   ip: interpreter(TclTkInterpreter)
-  #   name: command name (String)
-  def initialize(ip, name)
-    super(ip._tcltkip, name)
-  end
-end
-
-# class TclTkVariable: tcl/tk variable
-class TclTkVariable < TclTkObject
-
-  # initialize(interp, dat): 
-  #   interp: interpreter(TclTkInterpreter)
-  #   dat: the value to set(String)
-  #       if nil, not initialize variable
-  def initialize(interp, dat)
-    # auto-generate tcl/tk representation (variable name)
-    exp = TclTk._newname("v_")
-    # initialize TclTkObject
-    super(interp._tcltkip(), exp)
-    # safe this for `set' command
-    @set = interp.commands()["set"]
-    # set value
-    set(dat) if dat
-  end
-
-  # although you can set/refer variable by using set in tcl/tk,
-  # we provide the method for accessing variables
-
-  # set(data): set tcl/tk variable using `set'
-  #   data: new value
-  def set(data)
-    @set.e(to_s(), data.to_s())
-  end
-
-  # get(): read tcl/tk variable(String) using `set'
-  def get()
-    return @set.e(to_s())
-  end
-end
-
-# class TclTkWidget: tcl/tk widget
-class TclTkWidget < TclTkCommand
-
-  # initialize(*args): 
-  #   *args: parameters
-  def initialize(*args)
-    if args[0].kind_of?(TclTkIp)
-      # in case the 1st argument is TclTkIp:
-
-      # Wrap tcl/tk widget by TclTkWidget
-      # (used in TclTkInterpreter#initialize())
-
-      # need two arguments
-      fail("illegal # of parameter") if args.size != 2
-
-      # ip: interpreter(TclTkIp)
-      # exp: tcl/tk representation
-      ip, exp = args
-
-      # initialize TclTkObject
-      super(ip, exp)
-    elsif args[0].kind_of?(TclTkInterpreter)
-      # in case 1st parameter is TclTkInterpreter:
-
-      # generate new widget from parent widget
-
-      # interp: interpreter(TclTkInterpreter)
-      # parent: parent widget
-      # command: widget generating tk command(label Åù)
-      # *args: argument to the command 
-      interp, parent, command, *args = args
-
-      # generate widget name
-      exp = parent.to_s()
-      exp += "." if exp !~ /[.]$/
-      exp += TclTk._newname("w_")
-      # initialize TclTkObject
-      super(interp._tcltkip(), exp)
-      # generate widget
-      res = @ip._eval_args(command, exp, *args)
-#      fail("can't create Widget") if res != exp
-      # for tk_optionMenu, it is legal res != exp
-    else
-      fail("first parameter is not TclTkInterpreter")
-    end
-  end
-end
-
-# class TclTkCallback: tcl/tk callbacks
-class TclTkCallback < TclTkObject
-
-  # initialize(interp, pr, arg): 
-  #   interp: interpreter(TclTkInterpreter)
-  #   pr: callback procedure(Proc)
-  #   arg: string to pass as block parameters of pr
-  #       bind command of tcl/tk uses % replacement for parameters
-  #       pr can receive replaced data using block parameter
-  #       its format is specified by arg string
-  #       You should not specify arg for the command like 
-  #       scrollbar with -command option, which receives parameters
-  #       without specifying any replacement
-  def initialize(interp, pr, arg = nil)
-    # auto-generate tcl/tk representation (variable name)
-    exp = TclTk._newname("c_")
-    # initialize TclTkObject
-    super(interp._tcltkip(), exp)
-    # save parameters
-    @pr = pr
-    @arg = arg
-    # register in the module
-    TclTk._addcallback(self)
-  end
-
-  # to_eval(): retuens string representation for @ip._eval_args
-  def to_eval()
-    if @arg
-      # bind replaces %s before calling ruby_fmt, so %%s is used
-      s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%%s")} #{@arg}}/
-    else
-      s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%s")}}/
-    end
-
-    return s
-  end
-
-  # _call(arg): invoke callback
-  #   arg: callback parameter
-  def _call(arg)
-    @pr.call(arg)
-  end
-end
-
-# class TclTkImage: tcl/tk images
-class TclTkImage < TclTkCommand
-
-  # initialize(interp, t, *args): 
-  #     generating image is done by TclTkImage.new()
-  #     destrying is done by image delete (inconsistent, sigh)
-  #   interp: interpreter(TclTkInterpreter)
-  #   t: image type (photo, bitmap, etc.)
-  #   *args: command argument
-  def initialize(interp, t, *args)
-    # auto-generate tcl/tk representation
-    exp = TclTk._newname("i_")
-    # initialize TclTkObject
-    super(interp._tcltkip(), exp)
-    # generate image
-    res = @ip._eval_args("image create", t, exp, *args)
-    fail("can't create Image") if res != exp
-  end
-end
-
-# eof
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tempfile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tempfile.rb
deleted file mode 100644
index b02b249..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tempfile.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-#
-# tempfile - manipulates temporary files
-#
-# $Id: tempfile.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require 'delegate'
-require 'tmpdir'
-
-# A class for managing temporary files.  This library is written to be
-# thread safe.
-class Tempfile < DelegateClass(File)
-  MAX_TRY = 10
-  @@cleanlist = []
-
-  # Creates a temporary file of mode 0600 in the temporary directory
-  # whose name is basename.pid.n and opens with mode "w+".  A Tempfile
-  # object works just like a File object.
-  #
-  # If tmpdir is omitted, the temporary directory is determined by
-  # Dir::tmpdir provided by 'tmpdir.rb'.
-  # When $SAFE > 0 and the given tmpdir is tainted, it uses
-  # /tmp. (Note that ENV values are tainted by default)
-  def initialize(basename, tmpdir=Dir::tmpdir)
-    if $SAFE > 0 and tmpdir.tainted?
-      tmpdir = '/tmp'
-    end
-
-    lock = nil
-    n = failure = 0
-    
-    begin
-      Thread.critical = true
-
-      begin
-	tmpname = File.join(tmpdir, make_tmpname(basename, n))
-	lock = tmpname + '.lock'
-	n += 1
-      end while @@cleanlist.include?(tmpname) or
-	File.exist?(lock) or File.exist?(tmpname)
-
-      Dir.mkdir(lock)
-    rescue
-      failure += 1
-      retry if failure < MAX_TRY
-      raise "cannot generate tempfile `%s'" % tmpname
-    ensure
-      Thread.critical = false
-    end
-
-    @data = [tmpname]
-    @clean_proc = Tempfile.callback(@data)
-    ObjectSpace.define_finalizer(self, @clean_proc)
-
-    @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
-    @tmpname = tmpname
-    @@cleanlist << @tmpname
-    @data[1] = @tmpfile
-    @data[2] = @@cleanlist
-
-    super(@tmpfile)
-
-    # Now we have all the File/IO methods defined, you must not
-    # carelessly put bare puts(), etc. after this.
-
-    Dir.rmdir(lock)
-  end
-
-  def make_tmpname(basename, n)
-    sprintf('%s.%d.%d', basename, $$, n)
-  end
-  private :make_tmpname
-
-  # Opens or reopens the file with mode "r+".
-  def open
-    @tmpfile.close if @tmpfile
-    @tmpfile = File.open(@tmpname, 'r+')
-    @data[1] = @tmpfile
-    __setobj__(@tmpfile)
-  end
-
-  def _close	# :nodoc:
-    @tmpfile.close if @tmpfile
-    @data[1] = @tmpfile = nil
-  end    
-  protected :_close
-
-  # Closes the file.  If the optional flag is true, unlinks the file
-  # after closing.
-  #
-  # If you don't explicitly unlink the temporary file, the removal
-  # will be delayed until the object is finalized.
-  def close(unlink_now=false)
-    if unlink_now
-      close!
-    else
-      _close
-    end
-  end
-
-  # Closes and unlinks the file.
-  def close!
-    _close
-    @clean_proc.call
-    ObjectSpace.undefine_finalizer(self)
-  end
-
-  # Unlinks the file.  On UNIX-like systems, it is often a good idea
-  # to unlink a temporary file immediately after creating and opening
-  # it, because it leaves other programs zero chance to access the
-  # file.
-  def unlink
-    # keep this order for thread safeness
-    begin
-      File.unlink(@tmpname) if File.exist?(@tmpname)
-      @@cleanlist.delete(@tmpname)
-      @data = @tmpname = nil
-      ObjectSpace.undefine_finalizer(self)
-    rescue Errno::EACCES
-      # may not be able to unlink on Windows; just ignore
-    end
-  end
-  alias delete unlink
-
-  # Returns the full path name of the temporary file.
-  def path
-    @tmpname
-  end
-
-  # Returns the size of the temporary file.  As a side effect, the IO
-  # buffer is flushed before determining the size.
-  def size
-    if @tmpfile
-      @tmpfile.flush
-      @tmpfile.stat.size
-    else
-      0
-    end
-  end
-  alias length size
-
-  class << self
-    def callback(data)	# :nodoc:
-      pid = $$
-      lambda{
-	if pid == $$ 
-	  path, tmpfile, cleanlist = *data
-
-	  print "removing ", path, "..." if $DEBUG
-
-	  tmpfile.close if tmpfile
-
-	  # keep this order for thread safeness
-	  File.unlink(path) if File.exist?(path)
-	  cleanlist.delete(path) if cleanlist
-
-	  print "done\n" if $DEBUG
-	end
-      }
-    end
-
-    # If no block is given, this is a synonym for new().
-    #
-    # If a block is given, it will be passed tempfile as an argument,
-    # and the tempfile will automatically be closed when the block
-    # terminates.  In this case, open() returns nil.
-    def open(*args)
-      tempfile = new(*args)
-
-      if block_given?
-	begin
-	  yield(tempfile)
-	ensure
-	  tempfile.close
-	end
-
-	nil
-      else
-	tempfile
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-#  $DEBUG = true
-  f = Tempfile.new("foo")
-  f.print("foo\n")
-  f.close
-  f.open
-  p f.gets # => "foo\n"
-  f.close!
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit.rb
deleted file mode 100644
index b71f644..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit.rb
+++ /dev/null
@@ -1,280 +0,0 @@
-require 'test/unit/testcase'
-require 'test/unit/autorunner'
-
-module Test # :nodoc:
-  #
-  # = Test::Unit - Ruby Unit Testing Framework
-  # 
-  # == Introduction
-  # 
-  # Unit testing is making waves all over the place, largely due to the
-  # fact that it is a core practice of XP. While XP is great, unit testing
-  # has been around for a long time and has always been a good idea. One
-  # of the keys to good unit testing, though, is not just writing tests,
-  # but having tests. What's the difference? Well, if you just _write_ a
-  # test and throw it away, you have no guarantee that something won't
-  # change later which breaks your code. If, on the other hand, you _have_
-  # tests (obviously you have to write them first), and run them as often
-  # as possible, you slowly build up a wall of things that cannot break
-  # without you immediately knowing about it. This is when unit testing
-  # hits its peak usefulness.
-  # 
-  # Enter Test::Unit, a framework for unit testing in Ruby, helping you to
-  # design, debug and evaluate your code by making it easy to write and
-  # have tests for it.
-  # 
-  # 
-  # == Notes
-  # 
-  # Test::Unit has grown out of and superceded Lapidary.
-  # 
-  # 
-  # == Feedback
-  # 
-  # I like (and do my best to practice) XP, so I value early releases,
-  # user feedback, and clean, simple, expressive code. There is always
-  # room for improvement in everything I do, and Test::Unit is no
-  # exception. Please, let me know what you think of Test::Unit as it
-  # stands, and what you'd like to see expanded/changed/improved/etc. If
-  # you find a bug, let me know ASAP; one good way to let me know what the
-  # bug is is to submit a new test that catches it :-) Also, I'd love to
-  # hear about any successes you have with Test::Unit, and any
-  # documentation you might add will be greatly appreciated. My contact
-  # info is below.
-  # 
-  # 
-  # == Contact Information
-  # 
-  # A lot of discussion happens about Ruby in general on the ruby-talk
-  # mailing list (http://www.ruby-lang.org/en/ml.html), and you can ask
-  # any questions you might have there. I monitor the list, as do many
-  # other helpful Rubyists, and you're sure to get a quick answer. Of
-  # course, you're also welcome to email me (Nathaniel Talbott) directly
-  # at mailto:testunit at talbott.ws, and I'll do my best to help you out.
-  # 
-  # 
-  # == Credits
-  # 
-  # I'd like to thank...
-  # 
-  # Matz, for a great language!
-  # 
-  # Masaki Suketa, for his work on RubyUnit, which filled a vital need in
-  # the Ruby world for a very long time. I'm also grateful for his help in
-  # polishing Test::Unit and getting the RubyUnit compatibility layer
-  # right. His graciousness in allowing Test::Unit to supercede RubyUnit
-  # continues to be a challenge to me to be more willing to defer my own
-  # rights.
-  # 
-  # Ken McKinlay, for his interest and work on unit testing, and for his
-  # willingness to dialog about it. He was also a great help in pointing
-  # out some of the holes in the RubyUnit compatibility layer.
-  # 
-  # Dave Thomas, for the original idea that led to the extremely simple
-  # "require 'test/unit'", plus his code to improve it even more by
-  # allowing the selection of tests from the command-line. Also, without
-  # RDoc, the documentation for Test::Unit would stink a lot more than it
-  # does now.
-  # 
-  # Everyone who's helped out with bug reports, feature ideas,
-  # encouragement to continue, etc. It's a real privilege to be a part of
-  # the Ruby community.
-  # 
-  # The guys at RoleModel Software, for putting up with me repeating, "But
-  # this would be so much easier in Ruby!" whenever we're coding in Java.
-  # 
-  # My Creator, for giving me life, and giving it more abundantly.
-  # 
-  # 
-  # == License
-  # 
-  # Test::Unit is copyright (c) 2000-2003 Nathaniel Talbott. It is free
-  # software, and is distributed under the Ruby license. See the COPYING
-  # file in the standard Ruby distribution for details.
-  # 
-  # 
-  # == Warranty
-  # 
-  # This software is provided "as is" and without any express or
-  # implied warranties, including, without limitation, the implied
-  # warranties of merchantibility and fitness for a particular
-  # purpose.
-  # 
-  # 
-  # == Author
-  # 
-  # Nathaniel Talbott.
-  # Copyright (c) 2000-2003, Nathaniel Talbott
-  #
-  # ----
-  #
-  # = Usage
-  #
-  # The general idea behind unit testing is that you write a _test_
-  # _method_ that makes certain _assertions_ about your code, working
-  # against a _test_ _fixture_. A bunch of these _test_ _methods_ are
-  # bundled up into a _test_ _suite_ and can be run any time the
-  # developer wants. The results of a run are gathered in a _test_
-  # _result_ and displayed to the user through some UI. So, lets break
-  # this down and see how Test::Unit provides each of these necessary
-  # pieces.
-  #
-  #
-  # == Assertions
-  #
-  # These are the heart of the framework. Think of an assertion as a
-  # statement of expected outcome, i.e. "I assert that x should be equal
-  # to y". If, when the assertion is executed, it turns out to be
-  # correct, nothing happens, and life is good. If, on the other hand,
-  # your assertion turns out to be false, an error is propagated with
-  # pertinent information so that you can go back and make your
-  # assertion succeed, and, once again, life is good. For an explanation
-  # of the current assertions, see Test::Unit::Assertions.
-  #
-  #
-  # == Test Method & Test Fixture
-  #
-  # Obviously, these assertions have to be called within a context that
-  # knows about them and can do something meaningful with their
-  # pass/fail value. Also, it's handy to collect a bunch of related
-  # tests, each test represented by a method, into a common test class
-  # that knows how to run them. The tests will be in a separate class
-  # from the code they're testing for a couple of reasons. First of all,
-  # it allows your code to stay uncluttered with test code, making it
-  # easier to maintain. Second, it allows the tests to be stripped out
-  # for deployment, since they're really there for you, the developer,
-  # and your users don't need them. Third, and most importantly, it
-  # allows you to set up a common test fixture for your tests to run
-  # against.
-  #
-  # What's a test fixture? Well, tests do not live in a vacuum; rather,
-  # they're run against the code they are testing. Often, a collection
-  # of tests will run against a common set of data, also called a
-  # fixture. If they're all bundled into the same test class, they can
-  # all share the setting up and tearing down of that data, eliminating
-  # unnecessary duplication and making it much easier to add related
-  # tests.
-  #
-  # Test::Unit::TestCase wraps up a collection of test methods together
-  # and allows you to easily set up and tear down the same test fixture
-  # for each test. This is done by overriding #setup and/or #teardown,
-  # which will be called before and after each test method that is
-  # run. The TestCase also knows how to collect the results of your
-  # assertions into a Test::Unit::TestResult, which can then be reported
-  # back to you... but I'm getting ahead of myself. To write a test,
-  # follow these steps:
-  #
-  # * Make sure Test::Unit is in your library path.
-  # * require 'test/unit' in your test script.
-  # * Create a class that subclasses Test::Unit::TestCase.
-  # * Add a method that begins with "test" to your class.
-  # * Make assertions in your test method.
-  # * Optionally define #setup and/or #teardown to set up and/or tear
-  #   down your common test fixture.
-  # * You can now run your test as you would any other Ruby
-  #   script... try it and see!
-  #
-  # A really simple test might look like this (#setup and #teardown are
-  # commented out to indicate that they are completely optional):
-  #
-  #     require 'test/unit'
-  #     
-  #     class TC_MyTest < Test::Unit::TestCase
-  #       # def setup
-  #       # end
-  #     
-  #       # def teardown
-  #       # end
-  #     
-  #       def test_fail
-  #         assert(false, 'Assertion was false.')
-  #       end
-  #     end
-  #
-  #
-  # == Test Runners
-  #
-  # So, now you have this great test class, but you still need a way to
-  # run it and view any failures that occur during the run. This is
-  # where Test::Unit::UI::Console::TestRunner (and others, such as
-  # Test::Unit::UI::GTK::TestRunner) comes into play. The console test
-  # runner is automatically invoked for you if you require 'test/unit'
-  # and simply run the file. To use another runner, or to manually
-  # invoke a runner, simply call its run class method and pass in an
-  # object that responds to the suite message with a
-  # Test::Unit::TestSuite. This can be as simple as passing in your
-  # TestCase class (which has a class suite method). It might look
-  # something like this:
-  #
-  #    require 'test/unit/ui/console/testrunner'
-  #    Test::Unit::UI::Console::TestRunner.run(TC_MyTest)
-  #
-  #
-  # == Test Suite
-  #
-  # As more and more unit tests accumulate for a given project, it
-  # becomes a real drag running them one at a time, and it also
-  # introduces the potential to overlook a failing test because you
-  # forget to run it. Suddenly it becomes very handy that the
-  # TestRunners can take any object that returns a Test::Unit::TestSuite
-  # in response to a suite method. The TestSuite can, in turn, contain
-  # other TestSuites or individual tests (typically created by a
-  # TestCase). In other words, you can easily wrap up a group of
-  # TestCases and TestSuites like this:
-  #
-  #  require 'test/unit/testsuite'
-  #  require 'tc_myfirsttests'
-  #  require 'tc_moretestsbyme'
-  #  require 'ts_anothersetoftests'
-  #
-  #  class TS_MyTests
-  #    def self.suite
-  #      suite = Test::Unit::TestSuite.new
-  #      suite << TC_MyFirstTests.suite
-  #      suite << TC_MoreTestsByMe.suite
-  #      suite << TS_AnotherSetOfTests.suite
-  #      return suite
-  #    end
-  #  end
-  #  Test::Unit::UI::Console::TestRunner.run(TS_MyTests)
-  #
-  # Now, this is a bit cumbersome, so Test::Unit does a little bit more
-  # for you, by wrapping these up automatically when you require
-  # 'test/unit'. What does this mean? It means you could write the above
-  # test case like this instead:
-  #
-  #  require 'test/unit'
-  #  require 'tc_myfirsttests'
-  #  require 'tc_moretestsbyme'
-  #  require 'ts_anothersetoftests'
-  #
-  # Test::Unit is smart enough to find all the test cases existing in
-  # the ObjectSpace and wrap them up into a suite for you. It then runs
-  # the dynamic suite using the console TestRunner.
-  #
-  #
-  # == Questions?
-  #
-  # I'd really like to get feedback from all levels of Ruby
-  # practitioners about typos, grammatical errors, unclear statements,
-  # missing points, etc., in this document (or any other).
-  #
-
-  module Unit
-    # If set to false Test::Unit will not automatically run at exit.
-    def self.run=(flag)
-      @run = flag
-    end
-
-    # Automatically run tests at exit?
-    def self.run?
-      @run ||= false
-    end
-  end
-end
-
-at_exit do
-  unless $! || Test::Unit.run?
-    exit Test::Unit::AutoRunner.run
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertionfailederror.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertionfailederror.rb
deleted file mode 100644
index a21e4b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertionfailederror.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # Thrown by Test::Unit::Assertions when an assertion fails.
-    class AssertionFailedError < StandardError
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertions.rb
deleted file mode 100644
index aa97799..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/assertions.rb
+++ /dev/null
@@ -1,622 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertionfailederror'
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    ##
-    # Test::Unit::Assertions contains the standard Test::Unit assertions.
-    # Assertions is included in Test::Unit::TestCase.
-    #
-    # To include it in your own code and use its functionality, you simply
-    # need to rescue Test::Unit::AssertionFailedError. Additionally you may
-    # override add_assertion to get notified whenever an assertion is made.
-    #
-    # Notes:
-    # * The message to each assertion, if given, will be propagated with the
-    #   failure.
-    # * It is easy to add your own assertions based on assert_block().
-    #
-    # = Example Custom Assertion
-    #
-    #   def deny(boolean, message = nil)
-    #     message = build_message message, '<?> is not false or nil.', boolean
-    #     assert_block message do
-    #       not boolean
-    #     end
-    #   end
-
-    module Assertions
-
-      ##
-      # The assertion upon which all other assertions are based. Passes if the
-      # block yields true.
-      #
-      # Example:
-      #   assert_block "Couldn't do the thing" do
-      #     do_the_thing
-      #   end
-
-      public
-      def assert_block(message="assert_block failed.") # :yields: 
-        _wrap_assertion do
-          if (! yield)
-            raise AssertionFailedError.new(message.to_s)
-          end
-        end
-      end
-
-      ##
-      # Asserts that +boolean+ is not false or nil.
-      #
-      # Example:
-      #   assert [1, 2].include?(5)
-
-      public
-      def assert(boolean, message=nil)
-        _wrap_assertion do
-          assert_block("assert should not be called with a block.") { !block_given? }
-          assert_block(build_message(message, "<?> is not true.", boolean)) { boolean }
-        end
-      end
-
-      ##
-      # Passes if +expected+ == +actual.
-      #
-      # Note that the ordering of arguments is important, since a helpful
-      # error message is generated when this one fails that tells you the
-      # values of expected and actual.
-      #
-      # Example:
-      #   assert_equal 'MY STRING', 'my string'.upcase
-
-      public
-      def assert_equal(expected, actual, message=nil)
-        full_message = build_message(message, <<EOT, expected, actual)
-<?> expected but was
-<?>.
-EOT
-        assert_block(full_message) { expected == actual }
-      end
-
-      private
-      def _check_exception_class(args) # :nodoc:
-        args.partition do |klass|
-          next if klass.instance_of?(Module)
-          assert(Exception >= klass, "Should expect a class of exception, #{klass}")
-          true
-        end
-      end
-
-      private
-      def _expected_exception?(actual_exception, exceptions, modules) # :nodoc:
-        exceptions.include?(actual_exception.class) or
-          modules.any? {|mod| actual_exception.is_a?(mod)}
-      end
-
-      ##
-      # Passes if the block raises one of the given exceptions.
-      #
-      # Example:
-      #   assert_raise RuntimeError, LoadError do
-      #     raise 'Boom!!!'
-      #   end
-
-      public
-      def assert_raise(*args)
-        _wrap_assertion do
-          if Module === args.last
-            message = ""
-          else
-            message = args.pop
-          end
-          exceptions, modules = _check_exception_class(args)
-          expected = args.size == 1 ? args.first : args
-          actual_exception = nil
-          full_message = build_message(message, "<?> exception expected but none was thrown.", expected)
-          assert_block(full_message) do
-            begin
-              yield
-            rescue Exception => actual_exception
-              break
-            end
-            false
-          end
-          full_message = build_message(message, "<?> exception expected but was\n?", expected, actual_exception)
-          assert_block(full_message) {_expected_exception?(actual_exception, exceptions, modules)}
-          actual_exception
-        end
-      end
-
-      ##
-      # Alias of assert_raise.
-      #
-      # Will be deprecated in 1.9, and removed in 2.0.
-
-      public
-      def assert_raises(*args, &block)
-        assert_raise(*args, &block)
-      end
-
-      ##
-      # Passes if +object+ .instance_of? +klass+
-      #
-      # Example:
-      #   assert_instance_of String, 'foo'
-
-      public
-      def assert_instance_of(klass, object, message="")
-        _wrap_assertion do
-          assert_equal(Class, klass.class, "assert_instance_of takes a Class as its first argument")
-          full_message = build_message(message, <<EOT, object, klass, object.class)
-<?> expected to be an instance of
-<?> but was
-<?>.
-EOT
-          assert_block(full_message){object.instance_of?(klass)}
-        end
-      end
-
-      ##
-      # Passes if +object+ is nil.
-      #
-      # Example:
-      #   assert_nil [1, 2].uniq!
-
-      public
-      def assert_nil(object, message="")
-        assert_equal(nil, object, message)
-      end
-
-      ##
-      # Passes if +object+ .kind_of? +klass+
-      #
-      # Example:
-      #   assert_kind_of Object, 'foo'
-
-      public
-      def assert_kind_of(klass, object, message="")
-        _wrap_assertion do
-          assert(klass.kind_of?(Module), "The first parameter to assert_kind_of should be a kind_of Module.")
-          full_message = build_message(message, "<?>\nexpected to be kind_of\\?\n<?> but was\n<?>.", object, klass, object.class)
-          assert_block(full_message){object.kind_of?(klass)}
-        end
-      end
-
-      ##
-      # Passes if +object+ .respond_to? +method+
-      #
-      # Example:
-      #   assert_respond_to 'bugbear', :slice
-
-      public
-      def assert_respond_to(object, method, message="")
-        _wrap_assertion do
-          full_message = build_message(nil, "<?>\ngiven as the method name argument to #assert_respond_to must be a Symbol or #respond_to\\?(:to_str).", method)
-
-          assert_block(full_message) do
-            method.kind_of?(Symbol) || method.respond_to?(:to_str)
-          end
-          full_message = build_message(message, <<EOT, object, object.class, method)
-<?>
-of type <?>
-expected to respond_to\\?<?>.
-EOT
-          assert_block(full_message) { object.respond_to?(method) }
-        end
-      end
-
-      ##
-      # Passes if +string+ =~ +pattern+.
-      #
-      # Example:
-      #   assert_match(/\d+/, 'five, 6, seven')
-
-      public
-      def assert_match(pattern, string, message="")
-        _wrap_assertion do
-          pattern = case(pattern)
-            when String
-              Regexp.new(Regexp.escape(pattern))
-            else
-              pattern
-          end
-          full_message = build_message(message, "<?> expected to be =~\n<?>.", string, pattern)
-          assert_block(full_message) { string =~ pattern }
-        end
-      end
-
-      ##
-      # Passes if +actual+ .equal? +expected+ (i.e. they are the same
-      # instance).
-      #
-      # Example:
-      #   o = Object.new
-      #   assert_same o, o
-
-      public
-      def assert_same(expected, actual, message="")
-        full_message = build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__)
-<?>
-with id <?> expected to be equal\\? to
-<?>
-with id <?>.
-EOT
-        assert_block(full_message) { actual.equal?(expected) }
-      end
-
-      ##
-      # Compares the +object1+ with +object2+ using +operator+.
-      #
-      # Passes if object1.__send__(operator, object2) is true.
-      #
-      # Example:
-      #   assert_operator 5, :>=, 4
-
-      public
-      def assert_operator(object1, operator, object2, message="")
-        _wrap_assertion do
-          full_message = build_message(nil, "<?>\ngiven as the operator for #assert_operator must be a Symbol or #respond_to\\?(:to_str).", operator)
-          assert_block(full_message){operator.kind_of?(Symbol) || operator.respond_to?(:to_str)}
-          full_message = build_message(message, <<EOT, object1, AssertionMessage.literal(operator), object2)
-<?> expected to be
-?
-<?>.
-EOT
-          assert_block(full_message) { object1.__send__(operator, object2) }
-        end
-      end
-
-      ##
-      # Passes if block does not raise an exception.
-      #
-      # Example:
-      #   assert_nothing_raised do
-      #     [1, 2].uniq
-      #   end
-
-      public
-      def assert_nothing_raised(*args)
-        _wrap_assertion do
-          if Module === args.last
-            message = ""
-          else
-            message = args.pop
-          end
-          exceptions, modules = _check_exception_class(args)
-          begin
-            yield
-          rescue Exception => e
-            if ((args.empty? && !e.instance_of?(AssertionFailedError)) ||
-                _expected_exception?(e, exceptions, modules))
-              assert_block(build_message(message, "Exception raised:\n?", e)){false}
-            else
-              raise
-            end
-          end
-          nil
-        end
-      end
-
-      ##
-      # Flunk always fails.
-      #
-      # Example:
-      #   flunk 'Not done testing yet.'
-
-      public
-      def flunk(message="Flunked")
-        assert_block(build_message(message)){false}
-      end
-
-      ##
-      # Passes if ! +actual+ .equal? +expected+
-      #
-      # Example:
-      #   assert_not_same Object.new, Object.new
-
-      public
-      def assert_not_same(expected, actual, message="")
-        full_message = build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__)
-<?>
-with id <?> expected to not be equal\\? to
-<?>
-with id <?>.
-EOT
-        assert_block(full_message) { !actual.equal?(expected) }
-      end
-
-      ##
-      # Passes if +expected+ != +actual+
-      #
-      # Example:
-      #   assert_not_equal 'some string', 5
-
-      public
-      def assert_not_equal(expected, actual, message="")
-        full_message = build_message(message, "<?> expected to be != to\n<?>.", expected, actual)
-        assert_block(full_message) { expected != actual }
-      end
-
-      ##
-      # Passes if ! +object+ .nil?
-      #
-      # Example:
-      #   assert_not_nil '1 two 3'.sub!(/two/, '2')
-
-      public
-      def assert_not_nil(object, message="")
-        full_message = build_message(message, "<?> expected to not be nil.", object)
-        assert_block(full_message){!object.nil?}
-      end
-
-      ##
-      # Passes if +regexp+ !~ +string+ 
-      #
-      # Example:
-      #   assert_no_match(/two/, 'one 2 three')
-
-      public
-      def assert_no_match(regexp, string, message="")
-        _wrap_assertion do
-          assert_instance_of(Regexp, regexp, "The first argument to assert_no_match should be a Regexp.")
-          full_message = build_message(message, "<?> expected to not match\n<?>.", regexp, string)
-          assert_block(full_message) { regexp !~ string }
-        end
-      end
-
-      UncaughtThrow = {NameError => /^uncaught throw \`(.+)\'$/,
-                       ThreadError => /^uncaught throw \`(.+)\' in thread /} #`
-
-      ##
-      # Passes if the block throws +expected_symbol+
-      #
-      # Example:
-      #   assert_throws :done do
-      #     throw :done
-      #   end
-
-      public
-      def assert_throws(expected_symbol, message="", &proc)
-        _wrap_assertion do
-          assert_instance_of(Symbol, expected_symbol, "assert_throws expects the symbol that should be thrown for its first argument")
-          assert_block("Should have passed a block to assert_throws."){block_given?}
-          caught = true
-          begin
-            catch(expected_symbol) do
-              proc.call
-              caught = false
-            end
-            full_message = build_message(message, "<?> should have been thrown.", expected_symbol)
-            assert_block(full_message){caught}
-          rescue NameError, ThreadError => error
-            if UncaughtThrow[error.class] !~ error.message
-              raise error
-            end
-            full_message = build_message(message, "<?> expected to be thrown but\n<?> was thrown.", expected_symbol, $1.intern)
-            flunk(full_message)
-          end
-        end
-      end
-
-      ##
-      # Passes if block does not throw anything.
-      #
-      # Example:
-      #  assert_nothing_thrown do
-      #    [1, 2].uniq
-      #  end
-
-      public
-      def assert_nothing_thrown(message="", &proc)
-        _wrap_assertion do
-          assert(block_given?, "Should have passed a block to assert_nothing_thrown")
-          begin
-            proc.call
-          rescue NameError, ThreadError => error
-            if UncaughtThrow[error.class] !~ error.message
-              raise error
-            end
-            full_message = build_message(message, "<?> was thrown when nothing was expected", $1.intern)
-            flunk(full_message)
-          end
-          assert(true, "Expected nothing to be thrown")
-        end
-      end
-
-      ##
-      # Passes if +expected_float+ and +actual_float+ are equal
-      # within +delta+ tolerance.
-      #
-      # Example:
-      #   assert_in_delta 0.05, (50000.0 / 10**6), 0.00001
-
-      public
-      def assert_in_delta(expected_float, actual_float, delta, message="")
-        _wrap_assertion do
-          {expected_float => "first float", actual_float => "second float", delta => "delta"}.each do |float, name|
-            assert_respond_to(float, :to_f, "The arguments must respond to to_f; the #{name} did not")
-          end
-          assert_operator(delta, :>=, 0.0, "The delta should not be negative")
-          full_message = build_message(message, <<EOT, expected_float, actual_float, delta)
-<?> and
-<?> expected to be within
-<?> of each other.
-EOT
-          assert_block(full_message) { (expected_float.to_f - actual_float.to_f).abs <= delta.to_f }
-        end
-      end
-
-      ##
-      # Passes if the method send returns a true value.
-      #
-      # +send_array+ is composed of:
-      # * A receiver
-      # * A method
-      # * Arguments to the method
-      #
-      # Example:
-      #   assert_send [[1, 2], :include?, 4]
-
-      public
-      def assert_send(send_array, message="")
-        _wrap_assertion do
-          assert_instance_of(Array, send_array, "assert_send requires an array of send information")
-          assert(send_array.size >= 2, "assert_send requires at least a receiver and a message name")
-          full_message = build_message(message, <<EOT, send_array[0], AssertionMessage.literal(send_array[1].to_s), send_array[2..-1])
-<?> expected to respond to
-<?(?)> with a true value.
-EOT
-          assert_block(full_message) { send_array[0].__send__(send_array[1], *send_array[2..-1]) }
-        end
-      end
-
-      ##
-      # Builds a failure message.  +head+ is added before the +template+ and
-      # +arguments+ replaces the '?'s positionally in the template.
-
-      public
-      def build_message(head, template=nil, *arguments)
-        template &&= template.chomp
-        return AssertionMessage.new(head, template, arguments)
-      end
-
-      private
-      def _wrap_assertion
-        @_assertion_wrapped ||= false
-        unless (@_assertion_wrapped)
-          @_assertion_wrapped = true
-          begin
-            add_assertion
-            return yield
-          ensure
-            @_assertion_wrapped = false
-          end
-        else
-          return yield
-        end
-      end
-      
-      ##
-      # Called whenever an assertion is made.  Define this in classes that
-      # include Test::Unit::Assertions to record assertion counts.
-
-      private
-      def add_assertion
-      end
-
-      ##
-      # Select whether or not to use the pretty-printer. If this option is set
-      # to false before any assertions are made, pp.rb will not be required.
-
-      public
-      def self.use_pp=(value)
-        AssertionMessage.use_pp = value
-      end
-      
-      # :stopdoc:
-
-      class AssertionMessage
-        @use_pp = true
-        class << self
-          attr_accessor :use_pp
-        end
-
-        class Literal
-          def initialize(value)
-            @value = value
-          end
-          
-          def inspect
-            @value.to_s
-          end
-        end
-
-        class Template
-          def self.create(string)
-            parts = (string ? string.scan(/(?=[^\\])\?|(?:\\\?|[^\?])+/m) : [])
-            self.new(parts)
-          end
-
-          attr_reader :count
-
-          def initialize(parts)
-            @parts = parts
-            @count = parts.find_all{|e| e == '?'}.size
-          end
-
-          def result(parameters)
-            raise "The number of parameters does not match the number of substitutions." if(parameters.size != count)
-            params = parameters.dup
-            @parts.collect{|e| e == '?' ? params.shift : e.gsub(/\\\?/m, '?')}.join('')
-          end
-        end
-
-        def self.literal(value)
-          Literal.new(value)
-        end
-
-        include Util::BacktraceFilter
-
-        def initialize(head, template_string, parameters)
-          @head = head
-          @template_string = template_string
-          @parameters = parameters
-        end
-
-        def convert(object)
-          case object
-            when Exception
-              <<EOM.chop
-Class: <#{convert(object.class)}>
-Message: <#{convert(object.message)}>
----Backtrace---
-#{filter_backtrace(object.backtrace).join("\n")}
----------------
-EOM
-            else
-              if(self.class.use_pp)
-                begin
-                  require 'pp'
-                rescue LoadError
-                  self.class.use_pp = false
-                  return object.inspect
-                end unless(defined?(PP))
-                PP.pp(object, '').chomp
-              else
-                object.inspect
-              end
-          end
-        end
-
-        def template
-          @template ||= Template.create(@template_string)
-        end
-
-        def add_period(string)
-          (string =~ /\.\Z/ ? string : string + '.')
-        end
-
-        def to_s
-          message_parts = []
-          if (@head)
-            head = @head.to_s 
-            unless(head.empty?)
-              message_parts << add_period(head)
-            end
-          end
-          tail = template.result(@parameters.collect{|e| convert(e)})
-          message_parts << tail unless(tail.empty?)
-          message_parts.join("\n")
-        end
-      end
-
-      # :startdoc:
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/autorunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/autorunner.rb
deleted file mode 100644
index 86c9b12..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/autorunner.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-require 'test/unit'
-require 'test/unit/ui/testrunnerutilities'
-require 'optparse'
-
-module Test
-  module Unit
-    class AutoRunner
-      def self.run(force_standalone=false, default_dir=nil, argv=ARGV, &block)
-        r = new(force_standalone || standalone?, &block)
-        r.base = default_dir
-        r.process_args(argv)
-        r.run
-      end
-      
-      def self.standalone?
-        return false unless("-e" == $0)
-        ObjectSpace.each_object(Class) do |klass|
-          return false if(klass < TestCase)
-        end
-        true
-      end
-
-      RUNNERS = {
-        :console => proc do |r|
-          require 'test/unit/ui/console/testrunner'
-          Test::Unit::UI::Console::TestRunner
-        end,
-        :gtk => proc do |r|
-          require 'test/unit/ui/gtk/testrunner'
-          Test::Unit::UI::GTK::TestRunner
-        end,
-        :gtk2 => proc do |r|
-          require 'test/unit/ui/gtk2/testrunner'
-          Test::Unit::UI::GTK2::TestRunner
-        end,
-        :fox => proc do |r|
-          require 'test/unit/ui/fox/testrunner'
-          Test::Unit::UI::Fox::TestRunner
-        end,
-        :tk => proc do |r|
-          require 'test/unit/ui/tk/testrunner'
-          Test::Unit::UI::Tk::TestRunner
-        end,
-      }
-
-      OUTPUT_LEVELS = [
-        [:silent, UI::SILENT],
-        [:progress, UI::PROGRESS_ONLY],
-        [:normal, UI::NORMAL],
-        [:verbose, UI::VERBOSE],
-      ]
-
-      COLLECTORS = {
-        :objectspace => proc do |r|
-          require 'test/unit/collector/objectspace'
-          c = Collector::ObjectSpace.new
-          c.filter = r.filters
-          c.collect($0.sub(/\.rb\Z/, ''))
-        end,
-        :dir => proc do |r|
-          require 'test/unit/collector/dir'
-          c = Collector::Dir.new
-          c.filter = r.filters
-          c.pattern.concat(r.pattern) if(r.pattern)
-          c.exclude.concat(r.exclude) if(r.exclude)
-          c.base = r.base
-          $:.push(r.base) if r.base
-          c.collect(*(r.to_run.empty? ? ['.'] : r.to_run))
-        end,
-      }
-
-      attr_reader :suite
-      attr_accessor :output_level, :filters, :to_run, :pattern, :exclude, :base, :workdir
-      attr_writer :runner, :collector
-
-      def initialize(standalone)
-        Unit.run = true
-        @standalone = standalone
-        @runner = RUNNERS[:console]
-        @collector = COLLECTORS[(standalone ? :dir : :objectspace)]
-        @filters = []
-        @to_run = []
-        @output_level = UI::NORMAL
-        @workdir = nil
-        yield(self) if(block_given?)
-      end
-
-      def process_args(args = ARGV)
-        begin
-          options.order!(args) {|arg| @to_run << arg}
-        rescue OptionParser::ParseError => e
-          puts e
-          puts options
-          $! = nil
-          abort
-        else
-          @filters << proc{false} unless(@filters.empty?)
-        end
-        not @to_run.empty?
-      end
-
-      def options
-        @options ||= OptionParser.new do |o|
-          o.banner = "Test::Unit automatic runner."
-          o.banner << "\nUsage: #{$0} [options] [-- untouched arguments]"
-
-          o.on
-          o.on('-r', '--runner=RUNNER', RUNNERS,
-               "Use the given RUNNER.",
-               "(" + keyword_display(RUNNERS) + ")") do |r|
-            @runner = r
-          end
-
-          if(@standalone)
-            o.on('-b', '--basedir=DIR', "Base directory of test suites.") do |b|
-              @base = b
-            end
-
-            o.on('-w', '--workdir=DIR', "Working directory to run tests.") do |w|
-              @workdir = w
-            end
-
-            o.on('-a', '--add=TORUN', Array,
-                 "Add TORUN to the list of things to run;",
-                 "can be a file or a directory.") do |a|
-              @to_run.concat(a)
-            end
-
-            @pattern = []
-            o.on('-p', '--pattern=PATTERN', Regexp,
-                 "Match files to collect against PATTERN.") do |e|
-              @pattern << e
-            end
-
-            @exclude = []
-            o.on('-x', '--exclude=PATTERN', Regexp,
-                 "Ignore files to collect against PATTERN.") do |e|
-              @exclude << e
-            end
-          end
-
-          o.on('-n', '--name=NAME', String,
-               "Runs tests matching NAME.",
-               "(patterns may be used).") do |n|
-            n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
-            case n
-            when Regexp
-              @filters << proc{|t| n =~ t.method_name ? true : nil}
-            else
-              @filters << proc{|t| n == t.method_name ? true : nil}
-            end
-          end
-
-          o.on('-t', '--testcase=TESTCASE', String,
-               "Runs tests in TestCases matching TESTCASE.",
-               "(patterns may be used).") do |n|
-            n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
-            case n
-            when Regexp
-              @filters << proc{|t| n =~ t.class.name ? true : nil}
-            else
-              @filters << proc{|t| n == t.class.name ? true : nil}
-            end
-          end
-
-          o.on('-I', "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
-               "Appends directory list to $LOAD_PATH.") do |dirs|
-            $LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
-          end
-
-          o.on('-v', '--verbose=[LEVEL]', OUTPUT_LEVELS,
-               "Set the output level (default is verbose).",
-               "(" + keyword_display(OUTPUT_LEVELS) + ")") do |l|
-            @output_level = l || UI::VERBOSE
-          end
-
-          o.on('--',
-               "Stop processing options so that the",
-               "remaining options will be passed to the",
-               "test."){o.terminate}
-
-          o.on('-h', '--help', 'Display this help.'){puts o; exit}
-
-          o.on_tail
-          o.on_tail('Deprecated options:')
-
-          o.on_tail('--console', 'Console runner (use --runner).') do
-            warn("Deprecated option (--console).")
-            @runner = RUNNERS[:console]
-          end
-
-          o.on_tail('--gtk', 'GTK runner (use --runner).') do
-            warn("Deprecated option (--gtk).")
-            @runner = RUNNERS[:gtk]
-          end
-
-          o.on_tail('--fox', 'Fox runner (use --runner).') do
-            warn("Deprecated option (--fox).")
-            @runner = RUNNERS[:fox]
-          end
-
-          o.on_tail
-        end
-      end
-
-      def keyword_display(array)
-        list = array.collect {|e, *| e.to_s}
-        Array === array or list.sort!
-        list.collect {|e| e.sub(/^(.)([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')}.join(", ")
-      end
-
-      def run
-        @suite = @collector[self]
-        result = @runner[self] or return false
-        Dir.chdir(@workdir) if @workdir
-        result.run(@suite, @output_level).passed?
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector.rb
deleted file mode 100644
index 9e9e654..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Test
-  module Unit
-    module Collector
-      def initialize
-        @filters = []
-      end
-
-      def filter=(filters)
-        @filters = case(filters)
-          when Proc
-            [filters]
-          when Array
-            filters
-        end
-      end
-
-      def add_suite(destination, suite)
-        to_delete = suite.tests.find_all{|t| !include?(t)}
-        to_delete.each{|t| suite.delete(t)}
-        destination << suite unless(suite.size == 0)
-      end
-
-      def include?(test)
-        return true if(@filters.empty?)
-        @filters.each do |filter|
-          result = filter[test]
-          if(result.nil?)
-            next
-          elsif(!result)
-            return false
-          else
-            return true
-          end
-        end
-        true
-      end
-
-      def sort(suites)
-        suites.sort_by{|s| s.name}
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/dir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/dir.rb
deleted file mode 100644
index 97c8d28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/dir.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require 'test/unit/testsuite'
-require 'test/unit/collector'
-
-module Test
-  module Unit
-    module Collector
-      class Dir
-        include Collector
-
-        attr_reader :pattern, :exclude
-        attr_accessor :base
-
-        def initialize(dir=::Dir, file=::File, object_space=::ObjectSpace, req=nil)
-          super()
-          @dir = dir
-          @file = file
-          @object_space = object_space
-          @req = req
-          @pattern = [/\btest_.*\.rb\Z/m]
-          @exclude = []
-        end
-
-        def collect(*from)
-          basedir = @base
-          $:.push(basedir) if basedir
-          if(from.empty?)
-            recursive_collect('.', find_test_cases)
-          elsif(from.size == 1)
-            recursive_collect(from.first, find_test_cases)
-          else
-            suites = []
-            from.each do |f|
-              suite = recursive_collect(f, find_test_cases)
-              suites << suite unless(suite.tests.empty?)
-            end
-            suite = TestSuite.new("[#{from.join(', ')}]")
-            sort(suites).each{|s| suite << s}
-            suite
-          end
-        ensure
-          $:.delete_at($:.rindex(basedir)) if basedir
-        end
-
-        def find_test_cases(ignore=[])
-          cases = []
-          @object_space.each_object(Class) do |c|
-            cases << c if(c < TestCase && !ignore.include?(c))
-          end
-          ignore.concat(cases)
-          cases
-        end
-
-        def recursive_collect(name, already_gathered)
-          sub_suites = []
-          path = realdir(name)
-          if @file.directory?(path)
-	    dir_name = name unless name == '.'
-            @dir.entries(path).each do |e|
-              next if(e == '.' || e == '..')
-              e_name = dir_name ? @file.join(dir_name, e) : e
-              if @file.directory?(realdir(e_name))
-                next if /\ACVS\z/ =~ e
-                sub_suite = recursive_collect(e_name, already_gathered)
-                sub_suites << sub_suite unless(sub_suite.empty?)
-              else
-                next if /~\z/ =~ e_name or /\A\.\#/ =~ e
-                if @pattern and !@pattern.empty?
-                  next unless @pattern.any? {|pat| pat =~ e_name}
-                end
-                if @exclude and !@exclude.empty?
-                  next if @exclude.any? {|pat| pat =~ e_name}
-                end
-                collect_file(e_name, sub_suites, already_gathered)
-              end
-            end
-          else
-            collect_file(name, sub_suites, already_gathered)
-          end
-          suite = TestSuite.new(@file.basename(name))
-          sort(sub_suites).each{|s| suite << s}
-          suite
-        end
-
-        def collect_file(name, suites, already_gathered)
-          dir = @file.dirname(@file.expand_path(name, @base))
-          $:.unshift(dir)
-          if(@req)
-            @req.require(name)
-          else
-            require(name)
-          end
-          find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
-        ensure
-          $:.delete_at($:.rindex(dir)) if(dir)
-        end
-
-	def realdir(path)
-	  if @base
-	    @file.join(@base, path)
-	  else
-	    path
-	  end
-	end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/objectspace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/objectspace.rb
deleted file mode 100644
index d1127a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/collector/objectspace.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/collector'
-
-module Test
-  module Unit
-    module Collector
-      class ObjectSpace
-        include Collector
-        
-        NAME = 'collected from the ObjectSpace'
-        
-        def initialize(source=::ObjectSpace)
-          super()
-          @source = source
-        end
-        
-        def collect(name=NAME)
-          suite = TestSuite.new(name)
-          sub_suites = []
-          @source.each_object(Class) do |klass|
-            if(Test::Unit::TestCase > klass)
-              add_suite(sub_suites, klass.suite)
-            end
-          end
-          sort(sub_suites).each{|s| suite << s}
-          suite
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/error.rb
deleted file mode 100644
index 43a813f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/error.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    # Encapsulates an error in a test. Created by
-    # Test::Unit::TestCase when it rescues an exception thrown
-    # during the processing of a test.
-    class Error
-      include Util::BacktraceFilter
-
-      attr_reader(:test_name, :exception)
-
-      SINGLE_CHARACTER = 'E'
-
-      # Creates a new Error with the given test_name and
-      # exception.
-      def initialize(test_name, exception)
-        @test_name = test_name
-        @exception = exception
-      end
-
-      # Returns a single character representation of an error.
-      def single_character_display
-        SINGLE_CHARACTER
-      end
-
-      # Returns the message associated with the error.
-      def message
-        "#{@exception.class.name}: #{@exception.message}"
-      end
-
-      # Returns a brief version of the error description.
-      def short_display
-        "#@test_name: #{message.split("\n")[0]}"
-      end
-
-      # Returns a verbose version of the error description.
-      def long_display
-        backtrace = filter_backtrace(@exception.backtrace).join("\n    ")
-        "Error:\n#@test_name:\n#{message}\n    #{backtrace}"
-      end
-
-      # Overridden to return long_display.
-      def to_s
-        long_display
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/failure.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/failure.rb
deleted file mode 100644
index 832c998..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/failure.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # Encapsulates a test failure. Created by Test::Unit::TestCase
-    # when an assertion fails.
-    class Failure
-      attr_reader :test_name, :location, :message
-      
-      SINGLE_CHARACTER = 'F'
-
-      # Creates a new Failure with the given location and
-      # message.
-      def initialize(test_name, location, message)
-        @test_name = test_name
-        @location = location
-        @message = message
-      end
-      
-      # Returns a single character representation of a failure.
-      def single_character_display
-        SINGLE_CHARACTER
-      end
-
-      # Returns a brief version of the error description.
-      def short_display
-        "#@test_name: #{@message.split("\n")[0]}"
-      end
-
-      # Returns a verbose version of the error description.
-      def long_display
-        location_display = if(location.size == 1)
-          location[0].sub(/\A(.+:\d+).*/, ' [\\1]')
-        else
-          "\n    [#{location.join("\n     ")}]"
-        end
-        "Failure:\n#@test_name#{location_display}:\n#@message"
-      end
-
-      # Overridden to return long_display.
-      def to_s
-        long_display
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testcase.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testcase.rb
deleted file mode 100644
index f53b460..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testcase.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/assertions'
-require 'test/unit/failure'
-require 'test/unit/error'
-require 'test/unit/testsuite'
-require 'test/unit/assertionfailederror'
-require 'test/unit/util/backtracefilter'
-
-module Test
-  module Unit
-
-    # Ties everything together. If you subclass and add your own
-    # test methods, it takes care of making them into tests and
-    # wrapping those tests into a suite. It also does the
-    # nitty-gritty of actually running an individual test and
-    # collecting its results into a Test::Unit::TestResult object.
-    class TestCase
-      include Assertions
-      include Util::BacktraceFilter
-      
-      attr_reader :method_name
-      
-      STARTED = name + "::STARTED"
-      FINISHED = name + "::FINISHED"
-
-      ##
-      # These exceptions are not caught by #run.
-
-      PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, Interrupt,
-                                SystemExit]
-
-      # Creates a new instance of the fixture for running the
-      # test represented by test_method_name.
-      def initialize(test_method_name)
-        unless(respond_to?(test_method_name) and
-               (method(test_method_name).arity == 0 ||
-                method(test_method_name).arity == -1))
-          throw :invalid_test
-        end
-        @method_name = test_method_name
-        @test_passed = true
-      end
-
-      # Rolls up all of the test* methods in the fixture into
-      # one suite, creating a new instance of the fixture for
-      # each method.
-      def self.suite
-        method_names = public_instance_methods(true)
-        tests = method_names.delete_if {|method_name| method_name !~ /^test./}
-        suite = TestSuite.new(name)
-        tests.sort.each do
-          |test|
-          catch(:invalid_test) do
-            suite << new(test)
-          end
-        end
-        if (suite.empty?)
-          catch(:invalid_test) do
-            suite << new("default_test")
-          end
-        end
-        return suite
-      end
-
-      # Runs the individual test method represented by this
-      # instance of the fixture, collecting statistics, failures
-      # and errors in result.
-      def run(result)
-        yield(STARTED, name)
-        @_result = result
-        begin
-          setup
-          __send__(@method_name)
-        rescue AssertionFailedError => e
-          add_failure(e.message, e.backtrace)
-        rescue Exception
-          raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
-          add_error($!)
-        ensure
-          begin
-            teardown
-          rescue AssertionFailedError => e
-            add_failure(e.message, e.backtrace)
-          rescue Exception
-            raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
-            add_error($!)
-          end
-        end
-        result.add_run
-        yield(FINISHED, name)
-      end
-
-      # Called before every test method runs. Can be used
-      # to set up fixture information.
-      def setup
-      end
-
-      # Called after every test method runs. Can be used to tear
-      # down fixture information.
-      def teardown
-      end
-      
-      def default_test
-        flunk("No tests were specified")
-      end
-
-      # Returns whether this individual test passed or
-      # not. Primarily for use in teardown so that artifacts
-      # can be left behind if the test fails.
-      def passed?
-        return @test_passed
-      end
-      private :passed?
-
-      def size
-        1
-      end
-
-      def add_assertion
-        @_result.add_assertion
-      end
-      private :add_assertion
-
-      def add_failure(message, all_locations=caller())
-        @test_passed = false
-        @_result.add_failure(Failure.new(name, filter_backtrace(all_locations), message))
-      end
-      private :add_failure
-
-      def add_error(exception)
-        @test_passed = false
-        @_result.add_error(Error.new(name, exception))
-      end
-      private :add_error
-
-      # Returns a human-readable name for the specific test that
-      # this instance of TestCase represents.
-      def name
-        "#{@method_name}(#{self.class.name})"
-      end
-
-      # Overridden to return #name.
-      def to_s
-        name
-      end
-      
-      # It's handy to be able to compare TestCase instances.
-      def ==(other)
-        return false unless(other.kind_of?(self.class))
-        return false unless(@method_name == other.method_name)
-        self.class == other.class
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testresult.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testresult.rb
deleted file mode 100644
index e3a472e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testresult.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-#--
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/observable'
-
-module Test
-  module Unit
-
-    # Collects Test::Unit::Failure and Test::Unit::Error so that
-    # they can be displayed to the user. To this end, observers
-    # can be added to it, allowing the dynamic updating of, say, a
-    # UI.
-    class TestResult
-      include Util::Observable
-
-      CHANGED = "CHANGED"
-      FAULT = "FAULT"
-
-      attr_reader(:run_count, :assertion_count)
-
-      # Constructs a new, empty TestResult.
-      def initialize
-        @run_count, @assertion_count = 0, 0
-        @failures, @errors = Array.new, Array.new
-      end
-
-      # Records a test run.
-      def add_run
-        @run_count += 1
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records a Test::Unit::Failure.
-      def add_failure(failure)
-        @failures << failure
-        notify_listeners(FAULT, failure)
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records a Test::Unit::Error.
-      def add_error(error)
-        @errors << error
-        notify_listeners(FAULT, error)
-        notify_listeners(CHANGED, self)
-      end
-
-      # Records an individual assertion.
-      def add_assertion
-        @assertion_count += 1
-        notify_listeners(CHANGED, self)
-      end
-
-      # Returns a string contain the recorded runs, assertions,
-      # failures and errors in this TestResult.
-      def to_s
-        "#{run_count} tests, #{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
-      end
-
-      # Returns whether or not this TestResult represents
-      # successful completion.
-      def passed?
-        return @failures.empty? && @errors.empty?
-      end
-
-      # Returns the number of failures this TestResult has
-      # recorded.
-      def failure_count
-        return @failures.size
-      end
-
-      # Returns the number of errors this TestResult has
-      # recorded.
-      def error_count
-        return @errors.size
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testsuite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testsuite.rb
deleted file mode 100644
index 6fea976..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/testsuite.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-
-    # A collection of tests which can be #run.
-    #
-    # Note: It is easy to confuse a TestSuite instance with
-    # something that has a static suite method; I know because _I_
-    # have trouble keeping them straight. Think of something that
-    # has a suite method as simply providing a way to get a
-    # meaningful TestSuite instance.
-    class TestSuite
-      attr_reader :name, :tests
-      
-      STARTED = name + "::STARTED"
-      FINISHED = name + "::FINISHED"
-
-      # Creates a new TestSuite with the given name.
-      def initialize(name="Unnamed TestSuite")
-        @name = name
-        @tests = []
-      end
-
-      # Runs the tests and/or suites contained in this
-      # TestSuite.
-      def run(result, &progress_block)
-        yield(STARTED, name)
-        @tests.each do |test|
-          test.run(result, &progress_block)
-        end
-        yield(FINISHED, name)
-      end
-
-      # Adds the test to the suite.
-      def <<(test)
-        @tests << test
-        self
-      end
-
-      def delete(test)
-        @tests.delete(test)
-      end
-
-      # Retuns the rolled up number of tests in this suite;
-      # i.e. if the suite contains other suites, it counts the
-      # tests within those suites, not the suites themselves.
-      def size
-        total_size = 0
-        @tests.each { |test| total_size += test.size }
-        total_size
-      end
-      
-      def empty?
-        tests.empty?
-      end
-
-      # Overridden to return the name given the suite at
-      # creation.
-      def to_s
-        @name
-      end
-      
-      # It's handy to be able to compare TestSuite instances.
-      def ==(other)
-        return false unless(other.kind_of?(self.class))
-        return false unless(@name == other.name)
-        @tests == other.tests
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/console/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/console/testrunner.rb
deleted file mode 100644
index 6b600e3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/console/testrunner.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module Console
-
-        # Runs a Test::Unit::TestSuite on the console.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite. If quiet_mode is true, the output while
-          # running is limited to progress dots, errors and
-          # failures, and the final result. io specifies
-          # where runner output should go to; defaults to
-          # STDOUT.
-          def initialize(suite, output_level=NORMAL, io=STDOUT)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @output_level = output_level
-            @io = io
-            @already_outputted = false
-            @faults = []
-          end
-
-          # Begins the test run.
-          def start
-            setup_mediator
-            attach_to_mediator
-            return start_mediator
-          end
-
-          private
-          def setup_mediator
-            @mediator = create_mediator(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            output("Loaded suite #{suite_name}")
-          end
-          
-          def create_mediator(suite)
-            return TestRunnerMediator.new(suite)
-          end
-          
-          def attach_to_mediator
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-          end
-          
-          def start_mediator
-            return @mediator.run_suite
-          end
-          
-          def add_fault(fault)
-            @faults << fault
-            output_single(fault.single_character_display, PROGRESS_ONLY)
-            @already_outputted = true
-          end
-          
-          def started(result)
-            @result = result
-            output("Started")
-          end
-          
-          def finished(elapsed_time)
-            nl
-            output("Finished in #{elapsed_time} seconds.")
-            @faults.each_with_index do |fault, index|
-              nl
-              output("%3d) %s" % [index + 1, fault.long_display])
-            end
-            nl
-            output(@result)
-          end
-          
-          def test_started(name)
-            output_single(name + ": ", VERBOSE)
-          end
-          
-          def test_finished(name)
-            output_single(".", PROGRESS_ONLY) unless (@already_outputted)
-            nl(VERBOSE)
-            @already_outputted = false
-          end
-          
-          def nl(level=NORMAL)
-            output("", level)
-          end
-          
-          def output(something, level=NORMAL)
-            @io.puts(something) if (output?(level))
-            @io.flush
-          end
-          
-          def output_single(something, level=NORMAL)
-            @io.write(something) if (output?(level))
-            @io.flush
-          end
-          
-          def output?(level)
-            level <= @output_level
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Console::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/fox/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/fox/testrunner.rb
deleted file mode 100644
index a23a450..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/fox/testrunner.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'fox'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-include Fox
-
-module Test
-  module Unit
-    module UI
-      module Fox
-
-        # Runs a Test::Unit::TestSuite in a Fox UI. Obviously,
-        # this one requires you to have Fox
-        # (http://www.fox-toolkit.org/fox.html) and the Ruby
-        # Fox extension (http://fxruby.sourceforge.net/)
-        # installed.
-        class TestRunner
-
-          extend TestRunnerUtilities
-          
-          RED_STYLE = FXRGBA(0xFF,0,0,0xFF) #0xFF000000
-          GREEN_STYLE = FXRGBA(0,0xFF,0,0xFF) #0x00FF0000
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-
-            @result = nil
-            @red = false
-          end
-  
-          # Begins the test run.
-          def start
-            setup_ui
-            setup_mediator
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            @suite_name_entry.text = suite_name
-          end
-          
-          def attach_to_mediator
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-  
-          def start_ui
-            @application.create
-            @window.show(PLACEMENT_SCREEN)
-            @application.addTimeout(1) do
-              @mediator.run_suite
-            end
-            @application.run
-          end
-          
-          def stop
-            @application.exit(0)
-          end
-          
-          def reset_ui(count)
-            @test_progress_bar.barColor = GREEN_STYLE
-            @test_progress_bar.total = count
-            @test_progress_bar.progress = 0
-            @red = false
-  
-            @test_count_label.text = "0"
-            @assertion_count_label.text = "0"
-            @failure_count_label.text = "0"
-            @error_count_label.text = "0"
-  
-            @fault_list.clearItems
-          end
-          
-          def add_fault(fault)
-            if ( ! @red )
-              @test_progress_bar.barColor = RED_STYLE
-              @red = true
-            end
-            item = FaultListItem.new(fault)
-            @fault_list.appendItem(item)
-          end
-          
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-          
-          def raw_show_fault(string)
-            @detail_text.setText(string)
-          end
-          
-          def clear_fault
-            raw_show_fault("")
-          end
-          
-          def result_changed(result)
-            @test_progress_bar.progress = result.run_count
-  
-            @test_count_label.text = result.run_count.to_s
-            @assertion_count_label.text = result.assertion_count.to_s
-            @failure_count_label.text = result.failure_count.to_s
-            @error_count_label.text = result.error_count.to_s
-
-             # repaint now!
-             @info_panel.repaint
-             @application.flush
-          end
-          
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-          
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-          
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-          
-          def output_status(string)
-            @status_entry.text = string
-            @status_entry.repaint
-          end
-  
-          def setup_ui
-            @application = create_application
-            create_tooltip(@application)
-
-            @window = create_window(@application)
-            
-            @status_entry = create_entry(@window)
-            
-            main_panel = create_main_panel(@window)
-            
-            suite_panel = create_suite_panel(main_panel)
-            create_label(suite_panel, "Suite:")
-            @suite_name_entry = create_entry(suite_panel)
-            create_button(suite_panel, "&Run\tRun the current suite", proc { @mediator.run_suite })
-            
-            @test_progress_bar = create_progress_bar(main_panel)
-            
-            @info_panel = create_info_panel(main_panel)
-            create_label(@info_panel, "Tests:")
-            @test_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Assertions:")
-            @assertion_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Failures:")
-            @failure_count_label = create_label(@info_panel, "0")
-            create_label(@info_panel, "Errors:")
-            @error_count_label = create_label(@info_panel, "0")
-            
-            list_panel = create_list_panel(main_panel)
-            @fault_list = create_fault_list(list_panel)
-            
-            detail_panel = create_detail_panel(main_panel)
-            @detail_text = create_text(detail_panel)
-          end
-          
-          def create_application
-            app = FXApp.new("TestRunner", "Test::Unit")
-            app.init([])
-            app
-          end
-          
-          def create_window(app)
-            FXMainWindow.new(app, "Test::Unit TestRunner", nil, nil, DECOR_ALL, 0, 0, 450)
-          end
-          
-          def create_tooltip(app)
-            FXTooltip.new(app)
-          end
-  
-          def create_main_panel(parent)
-            panel = FXVerticalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y)
-            panel.vSpacing = 10
-            panel
-          end
-  
-          def create_suite_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_SIDE_LEFT | LAYOUT_FILL_X)
-          end
-          
-          def create_button(parent, text, action)
-            FXButton.new(parent, text).connect(SEL_COMMAND, &action)
-          end
-          
-          def create_progress_bar(parent)
-            FXProgressBar.new(parent, nil, 0, PROGRESSBAR_NORMAL | LAYOUT_FILL_X)
-          end
-          
-          def create_info_panel(parent)
-            FXMatrix.new(parent, 1, MATRIX_BY_ROWS | LAYOUT_FILL_X)
-          end
-          
-          def create_label(parent, text)
-            FXLabel.new(parent, text, nil, JUSTIFY_CENTER_X | LAYOUT_FILL_COLUMN)
-          end
-          
-          def create_list_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_FILL_X | FRAME_SUNKEN | FRAME_THICK)
-          end
-          
-          def create_fault_list(parent)
-            list = FXList.new(parent, 10, nil, 0, LIST_SINGLESELECT | LAYOUT_FILL_X) #, 0, 0, 0, 150)
-            list.connect(SEL_COMMAND) do |sender, sel, ptr|
-              if sender.retrieveItem(sender.currentItem).selected?
-                show_fault(sender.retrieveItem(sender.currentItem).fault)
-              else
-                clear_fault
-              end
-            end
-            list
-          end
-          
-          def create_detail_panel(parent)
-            FXHorizontalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK)
-          end
-          
-          def create_text(parent)
-            FXText.new(parent, nil, 0, TEXT_READONLY | LAYOUT_FILL_X | LAYOUT_FILL_Y)
-          end
-          
-          def create_entry(parent)
-            entry = FXTextField.new(parent, 30, nil, 0, TEXTFIELD_NORMAL | LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X)
-            entry.disable
-            entry
-          end
-        end
-  
-        class FaultListItem < FXListItem
-          attr_reader(:fault)
-          def initialize(fault)
-            super(fault.short_display)
-            @fault = fault
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Fox::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk/testrunner.rb
deleted file mode 100644
index 994328d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk/testrunner.rb
+++ /dev/null
@@ -1,416 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'gtk'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module GTK
-
-        # Runs a Test::Unit::TestSuite in a Gtk UI. Obviously,
-        # this one requires you to have Gtk
-        # (http://www.gtk.org/) and the Ruby Gtk extension
-        # (http://ruby-gnome.sourceforge.net/) installed.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              Gtk.main
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end
-
-          # Begins the test run.
-          def start
-            setup_mediator
-            setup_ui
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          private
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            suite_name_entry.set_text(suite_name)
-          end
-          
-          def attach_to_mediator
-            run_button.signal_connect("clicked", nil, &method(:run_test))
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-
-          def run_test(*)
-            @runner.raise(@restart_signal)
-          end
-          
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  run_button.child.text = "Stop"
-                  @mediator.run_suite
-                else
-                  run_button.child.text = "Run"
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end
-          
-          def stop(*)
-            Gtk.main_quit
-          end
-          
-          def reset_ui(count)
-            test_progress_bar.set_style(green_style)
-            test_progress_bar.configure(0, 0, count)
-            @red = false
-  
-            run_count_label.set_text("0")
-            assertion_count_label.set_text("0")
-            failure_count_label.set_text("0")
-            error_count_label.set_text("0")
-  
-            fault_list.remove_items(fault_list.children)
-          end
-          
-          def add_fault(fault)
-            if ( ! @red )
-              test_progress_bar.set_style(red_style)
-              @red = true
-            end
-            item = FaultListItem.new(fault)
-            item.show
-            fault_list.append_items([item])
-          end
-          
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-          
-          def raw_show_fault(string)
-            fault_detail_label.set_text(string)
-            outer_detail_sub_panel.queue_resize
-          end
-          
-          def clear_fault
-            raw_show_fault("")
-          end
-          
-          def result_changed(result)
-            run_count_label.set_text(result.run_count.to_s)
-            assertion_count_label.set_text(result.assertion_count.to_s)
-            failure_count_label.set_text(result.failure_count.to_s)
-            error_count_label.set_text(result.error_count.to_s)
-          end
-          
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-          
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-          
-          def test_finished(test_name)
-            test_progress_bar.set_value(test_progress_bar.get_value + 1)
-          end
-          
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-          
-          def output_status(string)
-            status_entry.set_text(string)
-          end
-  
-          def setup_ui
-            main_window.signal_connect("destroy", nil, &method(:stop))
-            main_window.show_all
-            fault_list.signal_connect("select-child", nil) {
-              | list, item, data |
-              show_fault(item.fault)
-            }
-            fault_list.signal_connect("unselect-child", nil) {
-              clear_fault
-            }
-            @red = false
-          end
-          
-          def main_window
-            lazy_initialize(:main_window) {
-              @main_window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
-              @main_window.set_title("Test::Unit TestRunner")
-              @main_window.set_usize(800, 600)
-              @main_window.set_uposition(20, 20)
-              @main_window.set_policy(true, true, false)
-              @main_window.add(main_panel)
-            }
-          end
-          
-          def main_panel
-            lazy_initialize(:main_panel) {
-              @main_panel = Gtk::VBox.new(false, 0)
-              @main_panel.pack_start(suite_panel, false, false, 0)
-              @main_panel.pack_start(progress_panel, false, false, 0)
-              @main_panel.pack_start(info_panel, false, false, 0)
-              @main_panel.pack_start(list_panel, false, false, 0)
-              @main_panel.pack_start(detail_panel, true, true, 0)
-              @main_panel.pack_start(status_panel, false, false, 0)
-            }
-          end
-          
-          def suite_panel
-            lazy_initialize(:suite_panel) {
-              @suite_panel = Gtk::HBox.new(false, 10)
-              @suite_panel.border_width(10)
-              @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0)
-              @suite_panel.pack_start(suite_name_entry, true, true, 0)
-              @suite_panel.pack_start(run_button, false, false, 0)
-            }
-          end
-          
-          def suite_name_entry
-            lazy_initialize(:suite_name_entry) {
-              @suite_name_entry = Gtk::Entry.new
-              @suite_name_entry.set_editable(false)
-            }
-          end
-          
-          def run_button
-            lazy_initialize(:run_button) {
-              @run_button = Gtk::Button.new("Run")
-            }
-          end
-          
-          def progress_panel
-            lazy_initialize(:progress_panel) {
-              @progress_panel = Gtk::HBox.new(false, 10)
-              @progress_panel.border_width(10)
-              @progress_panel.pack_start(test_progress_bar, true, true, 0)
-            }
-          end
-          
-          def test_progress_bar
-            lazy_initialize(:test_progress_bar) {
-              @test_progress_bar = EnhancedProgressBar.new
-              @test_progress_bar.set_usize(@test_progress_bar.allocation.width,
-                                           info_panel.size_request.height)
-              @test_progress_bar.set_style(green_style)
-            }
-          end
-          
-          def green_style
-            lazy_initialize(:green_style) {
-              @green_style = Gtk::Style.new
-              @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000)
-            }
-          end
-          
-          def red_style
-            lazy_initialize(:red_style) {
-              @red_style = Gtk::Style.new
-              @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000)
-            }
-          end
-          
-          def info_panel
-            lazy_initialize(:info_panel) {
-              @info_panel = Gtk::HBox.new(false, 0)
-              @info_panel.border_width(10)
-              @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0)
-              @info_panel.pack_start(run_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0)
-              @info_panel.pack_start(assertion_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0)
-              @info_panel.pack_start(failure_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0)
-              @info_panel.pack_start(error_count_label, true, false, 0)
-            }
-          end
-          
-          def run_count_label
-            lazy_initialize(:run_count_label) {
-              @run_count_label = Gtk::Label.new("0")
-              @run_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def assertion_count_label
-            lazy_initialize(:assertion_count_label) {
-              @assertion_count_label = Gtk::Label.new("0")
-              @assertion_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def failure_count_label
-            lazy_initialize(:failure_count_label) {
-              @failure_count_label = Gtk::Label.new("0")
-              @failure_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def error_count_label
-            lazy_initialize(:error_count_label) {
-              @error_count_label = Gtk::Label.new("0")
-              @error_count_label.set_justify(Gtk::JUSTIFY_LEFT)
-            }
-          end
-          
-          def list_panel
-            lazy_initialize(:list_panel) {
-              @list_panel = Gtk::HBox.new
-              @list_panel.border_width(10)
-              @list_panel.pack_start(list_scrolled_window, true, true, 0)
-            }
-          end
-          
-          def list_scrolled_window
-            lazy_initialize(:list_scrolled_window) {
-              @list_scrolled_window = Gtk::ScrolledWindow.new
-              @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @list_scrolled_window.set_usize(@list_scrolled_window.allocation.width, 150)
-              @list_scrolled_window.add_with_viewport(fault_list)
-            }
-          end
-          
-          def fault_list
-            lazy_initialize(:fault_list) {
-              @fault_list = Gtk::List.new
-            }
-          end
-          
-          def detail_panel
-            lazy_initialize(:detail_panel) {
-              @detail_panel = Gtk::HBox.new
-              @detail_panel.border_width(10)
-              @detail_panel.pack_start(detail_scrolled_window, true, true, 0)
-            }
-          end
-          
-          def detail_scrolled_window
-            lazy_initialize(:detail_scrolled_window) {
-              @detail_scrolled_window = Gtk::ScrolledWindow.new
-              @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @detail_scrolled_window.set_usize(400, @detail_scrolled_window.allocation.height)
-              @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel)
-            }
-          end
-          
-          def outer_detail_sub_panel
-            lazy_initialize(:outer_detail_sub_panel) {
-              @outer_detail_sub_panel = Gtk::VBox.new
-              @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0)
-            }
-          end
-          
-          def inner_detail_sub_panel
-            lazy_initialize(:inner_detail_sub_panel) {
-              @inner_detail_sub_panel = Gtk::HBox.new
-              @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0)
-            }
-          end
-          
-          def fault_detail_label
-            lazy_initialize(:fault_detail_label) {
-              @fault_detail_label = EnhancedLabel.new("")
-              style = Gtk::Style.new
-              font = Gdk::Font.font_load("-*-Courier New-medium-r-normal--*-120-*-*-*-*-*-*")
-              begin
-                style.set_font(font)
-              rescue ArgumentError; end
-              @fault_detail_label.set_style(style)
-              @fault_detail_label.set_justify(Gtk::JUSTIFY_LEFT)
-              @fault_detail_label.set_line_wrap(false)
-            }
-          end
-          
-          def status_panel
-            lazy_initialize(:status_panel) {
-              @status_panel = Gtk::HBox.new
-              @status_panel.border_width(10)
-              @status_panel.pack_start(status_entry, true, true, 0)
-            }
-          end
-          
-          def status_entry
-            lazy_initialize(:status_entry) {
-              @status_entry = Gtk::Entry.new
-              @status_entry.set_editable(false)
-            }
-          end
-  
-          def lazy_initialize(symbol)
-            if (!instance_eval("defined?(@#{symbol.to_s})"))
-              yield
-            end
-            return instance_eval("@" + symbol.to_s)
-          end
-        end
-  
-        class EnhancedProgressBar < Gtk::ProgressBar
-          def set_style(style)
-            super
-            hide
-            show
-          end
-        end
-  
-        class EnhancedLabel < Gtk::Label
-          def set_text(text)
-            super(text.gsub(/\n\t/, "\n" + (" " * 4)))
-          end
-        end
-  
-        class FaultListItem < Gtk::ListItem
-          attr_reader(:fault)
-          def initialize(fault)
-            super(fault.short_display)
-            @fault = fault
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::GTK::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk2/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk2/testrunner.rb
deleted file mode 100644
index b05549c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/gtk2/testrunner.rb
+++ /dev/null
@@ -1,465 +0,0 @@
-#--
-#
-# Author:: Kenta MURATA.
-# Copyright:: Copyright (c) 2000-2002 Kenta MURATA. All rights reserved.
-# License:: Ruby license.
-
-require "gtk2"
-require "test/unit/ui/testrunnermediator"
-require "test/unit/ui/testrunnerutilities"
-
-module Test
-  module Unit
-    module UI
-      module GTK2
-
-        Gtk.init
-
-        class EnhancedLabel < Gtk::Label
-          def set_text(text)
-            super(text.gsub(/\n\t/, "\n    "))
-          end
-        end
-
-        class FaultList < Gtk::TreeView
-          def initialize
-            @faults = []
-            @model = Gtk::ListStore.new(String, String)
-            super(@model)
-            column = Gtk::TreeViewColumn.new
-            column.visible = false
-            append_column(column)
-            renderer = Gtk::CellRendererText.new
-            column = Gtk::TreeViewColumn.new("Failures", renderer, {:text => 1})
-            append_column(column)
-            selection.mode = Gtk::SELECTION_SINGLE
-            set_rules_hint(true)
-            set_headers_visible(false)
-          end # def initialize
-
-          def add_fault(fault)
-            @faults.push(fault)
-            iter = @model.append
-            iter.set_value(0, (@faults.length - 1).to_s)
-            iter.set_value(1, fault.short_display)
-          end # def add_fault(fault)
-
-          def get_fault(iter)
-            @faults[iter.get_value(0).to_i]
-          end # def get_fault
-
-          def clear
-            model.clear
-          end # def clear
-        end
-
-        class TestRunner
-          extend TestRunnerUtilities
-
-          def lazy_initialize(symbol)
-            if !instance_eval("defined?(@#{symbol})") then
-              yield
-            end
-            return instance_eval("@#{symbol}")
-          end
-          private :lazy_initialize
-
-          def status_entry
-            lazy_initialize(:status_entry) do
-              @status_entry = Gtk::Entry.new
-              @status_entry.editable = false
-            end
-          end
-          private :status_entry
-
-          def status_panel
-            lazy_initialize(:status_panel) do
-              @status_panel = Gtk::HBox.new
-              @status_panel.border_width = 10
-              @status_panel.pack_start(status_entry, true, true, 0)
-            end
-          end
-          private :status_panel
-
-          def fault_detail_label
-            lazy_initialize(:fault_detail_label) do
-              @fault_detail_label = EnhancedLabel.new("")
-#              style = Gtk::Style.new
-#              font = Gdk::Font.
-#               font_load("-*-Courier 10 Pitch-medium-r-normal--*-120-*-*-*-*-*-*")
-#              style.set_font(font)
-#              @fault_detail_label.style = style
-              @fault_detail_label.justify = Gtk::JUSTIFY_LEFT
-              @fault_detail_label.wrap = false
-            end
-          end
-          private :fault_detail_label
-
-          def inner_detail_sub_panel
-            lazy_initialize(:inner_detail_sub_panel) do
-              @inner_detail_sub_panel = Gtk::HBox.new
-              @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0)
-            end
-          end
-          private :inner_detail_sub_panel
-
-          def outer_detail_sub_panel
-            lazy_initialize(:outer_detail_sub_panel) do
-              @outer_detail_sub_panel = Gtk::VBox.new
-              @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0)
-            end
-          end
-          private :outer_detail_sub_panel
-
-          def detail_scrolled_window
-            lazy_initialize(:detail_scrolled_window) do
-              @detail_scrolled_window = Gtk::ScrolledWindow.new
-              @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @detail_scrolled_window.
-                set_size_request(400, @detail_scrolled_window.allocation.height)
-              @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel)
-            end
-          end
-          private :detail_scrolled_window
-
-          def detail_panel
-            lazy_initialize(:detail_panel) do
-              @detail_panel = Gtk::HBox.new
-              @detail_panel.border_width = 10
-              @detail_panel.pack_start(detail_scrolled_window, true, true, 0)
-            end
-          end
-          private :detail_panel
-
-          def fault_list
-            lazy_initialize(:fault_list) do
-              @fault_list = FaultList.new
-            end
-          end
-          private :fault_list
-
-          def list_scrolled_window
-            lazy_initialize(:list_scrolled_window) do
-              @list_scrolled_window = Gtk::ScrolledWindow.new
-              @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
-              @list_scrolled_window.
-                set_size_request(@list_scrolled_window.allocation.width, 150)
-              @list_scrolled_window.add_with_viewport(fault_list)
-            end
-          end
-          private :list_scrolled_window
-
-          def list_panel
-            lazy_initialize(:list_panel) do
-              @list_panel = Gtk::HBox.new
-              @list_panel.border_width = 10
-              @list_panel.pack_start(list_scrolled_window, true, true, 0)
-            end
-          end
-          private :list_panel
-
-          def error_count_label
-            lazy_initialize(:error_count_label) do
-              @error_count_label = Gtk::Label.new("0")
-              @error_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :error_count_label
-
-          def failure_count_label
-            lazy_initialize(:failure_count_label) do
-              @failure_count_label = Gtk::Label.new("0")
-              @failure_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :failure_count_label
-
-          def assertion_count_label
-            lazy_initialize(:assertion_count_label) do
-              @assertion_count_label = Gtk::Label.new("0")
-              @assertion_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :assertion_count_label
-
-          def run_count_label
-            lazy_initialize(:run_count_label) do
-              @run_count_label = Gtk::Label.new("0")
-              @run_count_label.justify = Gtk::JUSTIFY_LEFT
-            end
-          end
-          private :run_count_label
-          
-          def info_panel
-            lazy_initialize(:info_panel) do
-              @info_panel = Gtk::HBox.new(false, 0)
-              @info_panel.border_width = 10
-              @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0)
-              @info_panel.pack_start(run_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0)
-              @info_panel.pack_start(assertion_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0)
-              @info_panel.pack_start(failure_count_label, true, false, 0)
-              @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0)
-              @info_panel.pack_start(error_count_label, true, false, 0)
-            end
-          end # def info_panel
-          private :info_panel
-
-          def green_style
-            lazy_initialize(:green_style) do
-              @green_style = Gtk::Style.new
-              @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000)
-            end
-          end # def green_style
-          private :green_style
-          
-          def red_style
-            lazy_initialize(:red_style) do
-              @red_style = Gtk::Style.new
-              @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000)
-            end
-          end # def red_style
-          private :red_style
-          
-          def test_progress_bar
-            lazy_initialize(:test_progress_bar) {
-              @test_progress_bar = Gtk::ProgressBar.new
-              @test_progress_bar.fraction = 0.0
-              @test_progress_bar.
-                set_size_request(@test_progress_bar.allocation.width,
-                                 info_panel.size_request[1])
-              @test_progress_bar.style = green_style
-            }
-          end # def test_progress_bar
-          private :test_progress_bar
-          
-          def progress_panel
-            lazy_initialize(:progress_panel) do
-              @progress_panel = Gtk::HBox.new(false, 10)
-              @progress_panel.border_width = 10
-              @progress_panel.pack_start(test_progress_bar, true, true, 0)
-            end
-          end # def progress_panel
-
-          def run_button
-            lazy_initialize(:run_button) do
-              @run_button = Gtk::Button.new("Run")
-            end
-          end # def run_button
-
-          def suite_name_entry
-            lazy_initialize(:suite_name_entry) do
-              @suite_name_entry = Gtk::Entry.new
-              @suite_name_entry.editable = false
-            end
-          end # def suite_name_entry
-          private :suite_name_entry
-
-          def suite_panel
-            lazy_initialize(:suite_panel) do
-              @suite_panel = Gtk::HBox.new(false, 10)
-              @suite_panel.border_width = 10
-              @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0)
-              @suite_panel.pack_start(suite_name_entry, true, true, 0)
-              @suite_panel.pack_start(run_button, false, false, 0)
-            end
-          end # def suite_panel
-          private :suite_panel
-
-          def main_panel
-            lazy_initialize(:main_panel) do
-              @main_panel = Gtk::VBox.new(false, 0)
-              @main_panel.pack_start(suite_panel, false, false, 0)
-              @main_panel.pack_start(progress_panel, false, false, 0)
-              @main_panel.pack_start(info_panel, false, false, 0)
-              @main_panel.pack_start(list_panel, false, false, 0)
-              @main_panel.pack_start(detail_panel, true, true, 0)
-              @main_panel.pack_start(status_panel, false, false, 0)
-            end
-          end # def main_panel
-          private :main_panel
-
-          def main_window
-            lazy_initialize(:main_window) do
-              @main_window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
-              @main_window.set_title("Test::Unit TestRunner")
-              @main_window.set_default_size(800, 600)
-              @main_window.set_resizable(true)
-              @main_window.add(main_panel)
-            end
-          end # def main_window
-          private :main_window
-
-          def setup_ui
-            main_window.signal_connect("destroy", nil) { stop }
-            main_window.show_all
-            fault_list.selection.signal_connect("changed", nil) do
-              |selection, data|
-              if selection.selected then
-                show_fault(fault_list.get_fault(selection.selected))
-              else
-                clear_fault
-              end
-            end
-          end # def setup_ui
-          private :setup_ui
-
-          def output_status(string)
-            status_entry.set_text(string)
-          end # def output_status(string)
-          private :output_status
-
-          def finished(elapsed_time)
-            test_progress_bar.fraction = 1.0
-            output_status("Finished in #{elapsed_time} seconds")
-          end # def finished(elapsed_time)
-          private :finished
-
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end # def test_started(test_name)
-          private :test_started
-
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end # def started(result)
-          private :started
-
-          def test_finished(result)
-            test_progress_bar.fraction += 1.0 / @count
-          end # def test_finished(result)
-
-          def result_changed(result)
-            run_count_label.label = result.run_count.to_s
-            assertion_count_label.label = result.assertion_count.to_s
-            failure_count_label.label = result.failure_count.to_s
-            error_count_label.label = result.error_count.to_s
-          end # def result_changed(result)
-          private :result_changed
-
-          def clear_fault
-            raw_show_fault("")
-          end # def clear_fault
-          private :clear_fault
-
-          def raw_show_fault(string)
-            fault_detail_label.set_text(string)
-            outer_detail_sub_panel.queue_resize
-          end # def raw_show_fault(string)
-          private :raw_show_fault
-
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end # def show_fault(fault)
-          private :show_fault
-
-          def add_fault(fault)
-            if not @red then
-              test_progress_bar.style = red_style
-              @red = true
-            end
-            fault_list.add_fault(fault)
-          end # def add_fault(fault)
-          private :add_fault
-
-          def reset_ui(count)
-            test_progress_bar.style = green_style
-            test_progress_bar.fraction = 0.0
-            @count = count + 1
-            @red = false
-
-            run_count_label.set_text("0")
-            assertion_count_label.set_text("0")
-            failure_count_label.set_text("0")
-            error_count_label.set_text("0")
-
-            fault_list.clear
-          end # def reset_ui(count)
-          private :reset_ui
-
-          def stop
-            Gtk.main_quit
-          end # def stop
-          private :stop
-
-          def run_test
-            @runner.raise(@restart_signal)
-          end
-          private :run_test
-
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  run_button.child.text = "Stop"
-                  @mediator.run_suite
-                else
-                  run_button.child.text = "Run"
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end # def start_ui
-          private :start_ui
-
-          def attach_to_mediator
-            run_button.signal_connect("clicked", nil) { run_test }
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
-          end # def attach_to_mediator
-          private :attach_to_mediator
-
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if @suite.kind_of?(Module) then
-              suite_name = @suite.name
-            end
-            suite_name_entry.set_text(suite_name)
-          end # def setup_mediator
-          private :setup_mediator
-
-          def start
-            setup_mediator
-            setup_ui
-            attach_to_mediator
-            start_ui
-            @result
-          end # def start
-
-          def initialize(suite, output_level = NORMAL)
-            if suite.respond_to?(:suite) then
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              Gtk.main
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end # def initialize(suite)
-
-        end # class TestRunner
-
-      end # module GTK2
-    end # module UI
-  end # module Unit
-end # module Test
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnermediator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnermediator.rb
deleted file mode 100644
index d34510d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnermediator.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'test/unit/util/observable'
-require 'test/unit/testresult'
-
-module Test
-  module Unit
-    module UI
-
-      # Provides an interface to write any given UI against,
-      # hopefully making it easy to write new UIs.
-      class TestRunnerMediator
-        RESET = name + "::RESET"
-        STARTED = name + "::STARTED"
-        FINISHED = name + "::FINISHED"
-        
-        include Util::Observable
-        
-        # Creates a new TestRunnerMediator initialized to run
-        # the passed suite.
-        def initialize(suite)
-          @suite = suite
-        end
-
-        # Runs the suite the TestRunnerMediator was created
-        # with.
-        def run_suite
-          Unit.run = true
-          begin_time = Time.now
-          notify_listeners(RESET, @suite.size)
-          result = create_result
-          notify_listeners(STARTED, result)
-          result_listener = result.add_listener(TestResult::CHANGED) do |updated_result|
-            notify_listeners(TestResult::CHANGED, updated_result)
-          end
-          
-          fault_listener = result.add_listener(TestResult::FAULT) do |fault|
-            notify_listeners(TestResult::FAULT, fault)
-          end
-          
-          @suite.run(result) do |channel, value|
-            notify_listeners(channel, value)
-          end
-          
-          result.remove_listener(TestResult::FAULT, fault_listener)
-          result.remove_listener(TestResult::CHANGED, result_listener)
-          end_time = Time.now
-          elapsed_time = end_time - begin_time
-          notify_listeners(FINISHED, elapsed_time) #"Finished in #{elapsed_time} seconds.")
-          return result
-        end
-
-        private
-        # A factory method to create the result the mediator
-        # should run with. Can be overridden by subclasses if
-        # one wants to use a different result.
-        def create_result
-          return TestResult.new
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnerutilities.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnerutilities.rb
deleted file mode 100644
index 70b885b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/testrunnerutilities.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-    module UI
-
-      SILENT = 0
-      PROGRESS_ONLY = 1
-      NORMAL = 2
-      VERBOSE = 3
-
-      # Provides some utilities common to most, if not all,
-      # TestRunners.
-      #
-      #--
-      #
-      # Perhaps there ought to be a TestRunner superclass? There
-      # seems to be a decent amount of shared code between test
-      # runners.
-
-      module TestRunnerUtilities
-
-        # Creates a new TestRunner and runs the suite.
-        def run(suite, output_level=NORMAL)
-          return new(suite, output_level).start
-        end
-
-        # Takes care of the ARGV parsing and suite
-        # determination necessary for running one of the
-        # TestRunners from the command line.
-        def start_command_line_test
-          if ARGV.empty?
-            puts "You should supply the name of a test suite file to the runner"
-            exit
-          end
-          require ARGV[0].gsub(/.+::/, '')
-          new(eval(ARGV[0])).start
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/tk/testrunner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/tk/testrunner.rb
deleted file mode 100644
index 4d05f2f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/ui/tk/testrunner.rb
+++ /dev/null
@@ -1,260 +0,0 @@
-#--
-#
-# Original Author:: Nathaniel Talbott.
-# Author:: Kazuhiro NISHIYAMA.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# Copyright:: Copyright (c) 2003 Kazuhiro NISHIYAMA. All rights reserved.
-# License:: Ruby license.
-
-require 'tk'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/ui/testrunnerutilities'
-
-module Test
-  module Unit
-    module UI
-      module Tk
-
-        # Runs a Test::Unit::TestSuite in a Tk UI. Obviously,
-        # this one requires you to have Tk
-        # and the Ruby Tk extension installed.
-        class TestRunner
-          extend TestRunnerUtilities
-
-          # Creates a new TestRunner for running the passed
-          # suite.
-          def initialize(suite, output_level = NORMAL)
-            if (suite.respond_to?(:suite))
-              @suite = suite.suite
-            else
-              @suite = suite
-            end
-            @result = nil
-
-            @red = false
-            @fault_detail_list = []
-            @runner = Thread.current
-            @restart_signal = Class.new(Exception)
-            @viewer = Thread.start do
-              @runner.join rescue @runner.run
-              ::Tk.mainloop
-            end
-            @viewer.join rescue nil # wait deadlock to handshake
-          end
-
-          # Begins the test run.
-          def start
-            setup_ui
-            setup_mediator
-            attach_to_mediator
-            start_ui
-            @result
-          end
-
-          private
-          def setup_mediator
-            @mediator = TestRunnerMediator.new(@suite)
-            suite_name = @suite.to_s
-            if ( @suite.kind_of?(Module) )
-              suite_name = @suite.name
-            end
-            @suite_name_entry.value = suite_name
-          end
-
-          def attach_to_mediator
-            @run_button.command(method(:run_test))
-            @fault_list.bind('ButtonPress-1', proc{|y|
-              fault = @fault_detail_list[@fault_list.nearest(y)]
-              if fault
-                show_fault(fault)
-              end
-            }, '%y')
-            @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
-            @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
-            @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
-            @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
-            @mediator.add_listener(TestCase::STARTED, &method(:test_started))
-            @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
-          end
-
-          def run_test
-            @runner.raise(@restart_signal)
-          end
-
-          def start_ui
-            @viewer.run
-            running = false
-            begin
-              loop do
-                if (running ^= true)
-                  @run_button.configure('text'=>'Stop')
-                  @mediator.run_suite
-                else
-                  @run_button.configure('text'=>'Run')
-                  @viewer.join
-                  break
-                end
-              end
-            rescue @restart_signal
-              retry
-            rescue
-            end
-          end
-
-          def stop
-            ::Tk.exit
-          end
-
-          def reset_ui(count)
-            @test_total_count = count.to_f
-            @test_progress_bar.configure('background'=>'green')
-            @test_progress_bar.place('relwidth'=>(count.zero? ? 0 : 0/count))
-            @red = false
-
-            @test_count_label.value = 0
-            @assertion_count_label.value = 0
-            @failure_count_label.value = 0
-            @error_count_label.value = 0
-
-            @fault_list.delete(0, 'end')
-            @fault_detail_list = []
-            clear_fault
-          end
-
-          def add_fault(fault)
-            if ( ! @red )
-              @test_progress_bar.configure('background'=>'red')
-              @red = true
-            end
-            @fault_detail_list.push fault
-            @fault_list.insert('end', fault.short_display)
-          end
-
-          def show_fault(fault)
-            raw_show_fault(fault.long_display)
-          end
-
-          def raw_show_fault(string)
-            @detail_text.value = string
-          end
-
-          def clear_fault
-            raw_show_fault("")
-          end
-
-          def result_changed(result)
-            @test_count_label.value = result.run_count
-            @test_progress_bar.place('relwidth'=>result.run_count/@test_total_count)
-            @assertion_count_label.value = result.assertion_count
-            @failure_count_label.value = result.failure_count
-            @error_count_label.value = result.error_count
-          end
-
-          def started(result)
-            @result = result
-            output_status("Started...")
-          end
-
-          def test_started(test_name)
-            output_status("Running #{test_name}...")
-          end
-
-          def finished(elapsed_time)
-            output_status("Finished in #{elapsed_time} seconds")
-          end
-
-          def output_status(string)
-            @status_entry.value = string
-          end
-
-          def setup_ui
-            @status_entry = TkVariable.new
-            l = TkLabel.new(nil, 'textvariable'=>@status_entry, 'relief'=>'sunken')
-            l.pack('side'=>'bottom', 'fill'=>'x')
-
-            suite_frame = TkFrame.new.pack('fill'=>'x')
-
-            @run_button = TkButton.new(suite_frame, 'text'=>'Run')
-            @run_button.pack('side'=>'right')
-
-            TkLabel.new(suite_frame, 'text'=>'Suite:').pack('side'=>'left')
-            @suite_name_entry = TkVariable.new
-            l = TkLabel.new(suite_frame, 'textvariable'=>@suite_name_entry, 'relief'=>'sunken')
-            l.pack('side'=>'left', 'fill'=>'x', 'expand'=>true)
-
-            f = TkFrame.new(nil, 'relief'=>'sunken', 'borderwidth'=>3, 'height'=>20).pack('fill'=>'x', 'padx'=>1)
-            @test_progress_bar = TkFrame.new(f, 'background'=>'green').place('anchor'=>'nw', 'relwidth'=>0.0, 'relheight'=>1.0)
-
-            info_frame = TkFrame.new.pack('fill'=>'x')
-            @test_count_label = create_count_label(info_frame, 'Tests:')
-            @assertion_count_label = create_count_label(info_frame, 'Assertions:')
-            @failure_count_label = create_count_label(info_frame, 'Failures:')
-            @error_count_label = create_count_label(info_frame, 'Errors:')
-
-	    if (::Tk.info('command', TkPanedWindow::TkCommandNames[0]) != "")
-	      # use panedwindow
-	      paned_frame = TkPanedWindow.new("orient"=>"vertical").pack('fill'=>'both', 'expand'=>true)
-
-	      fault_list_frame = TkFrame.new(paned_frame)
-	      detail_frame = TkFrame.new(paned_frame)
-
-	      paned_frame.add(fault_list_frame, detail_frame)
-	    else
-	      # no panedwindow
-	      paned_frame = nil
-	      fault_list_frame = TkFrame.new.pack('fill'=>'both', 'expand'=>true)
-	      detail_frame = TkFrame.new.pack('fill'=>'both', 'expand'=>true)
-	    end
-
-	    TkGrid.rowconfigure(fault_list_frame, 0, 'weight'=>1, 'minsize'=>0)
-	    TkGrid.columnconfigure(fault_list_frame, 0, 'weight'=>1, 'minsize'=>0)
-
-            fault_scrollbar_y = TkScrollbar.new(fault_list_frame)
-            fault_scrollbar_x = TkScrollbar.new(fault_list_frame)
-            @fault_list = TkListbox.new(fault_list_frame)
-            @fault_list.yscrollbar(fault_scrollbar_y)
-            @fault_list.xscrollbar(fault_scrollbar_x)
-
-	    TkGrid.rowconfigure(detail_frame, 0, 'weight'=>1, 'minsize'=>0)
-	    TkGrid.columnconfigure(detail_frame, 0, 'weight'=>1, 'minsize'=>0)
-
-	    ::Tk.grid(@fault_list, fault_scrollbar_y, 'sticky'=>'news')
-	    ::Tk.grid(fault_scrollbar_x, 'sticky'=>'news')
-
-            detail_scrollbar_y = TkScrollbar.new(detail_frame)
-            detail_scrollbar_x = TkScrollbar.new(detail_frame)
-            @detail_text = TkText.new(detail_frame, 'height'=>10, 'wrap'=>'none') {
-              bindtags(bindtags - [TkText])
-	    }
-	    @detail_text.yscrollbar(detail_scrollbar_y)
-	    @detail_text.xscrollbar(detail_scrollbar_x)
-
-	    ::Tk.grid(@detail_text, detail_scrollbar_y, 'sticky'=>'news')
-	    ::Tk.grid(detail_scrollbar_x, 'sticky'=>'news')
-
-	    # rubber-style pane
-	    if paned_frame
-	      ::Tk.update
-	      @height = paned_frame.winfo_height
-	      paned_frame.bind('Configure', proc{|h|
-		paned_frame.sash_place(0, 0, paned_frame.sash_coord(0)[1] * h / @height)
-		@height = h
-	      }, '%h')
-	    end
-          end
-
-          def create_count_label(parent, label)
-            TkLabel.new(parent, 'text'=>label).pack('side'=>'left', 'expand'=>true)
-            v = TkVariable.new(0)
-            TkLabel.new(parent, 'textvariable'=>v).pack('side'=>'left', 'expand'=>true)
-            v
-          end
-        end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  Test::Unit::UI::Tk::TestRunner.start_command_line_test
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/backtracefilter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/backtracefilter.rb
deleted file mode 100644
index 7ebec2d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/backtracefilter.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module Test
-  module Unit
-    module Util
-      module BacktraceFilter
-        TESTUNIT_FILE_SEPARATORS = %r{[\\/:]}
-        TESTUNIT_PREFIX = __FILE__.split(TESTUNIT_FILE_SEPARATORS)[0..-3]
-        TESTUNIT_RB_FILE = /\.rb\Z/
-        
-        def filter_backtrace(backtrace, prefix=nil)
-          return ["No backtrace"] unless(backtrace)
-          split_p = if(prefix)
-            prefix.split(TESTUNIT_FILE_SEPARATORS)
-          else
-            TESTUNIT_PREFIX
-          end
-          match = proc do |e|
-            split_e = e.split(TESTUNIT_FILE_SEPARATORS)[0, split_p.size]
-            next false unless(split_e[0..-2] == split_p[0..-2])
-            split_e[-1].sub(TESTUNIT_RB_FILE, '') == split_p[-1]
-          end
-          return backtrace unless(backtrace.detect(&match))
-          found_prefix = false
-          new_backtrace = backtrace.reverse.reject do |e|
-            if(match[e])
-              found_prefix = true
-              true
-            elsif(found_prefix)
-              false
-            else
-              true
-            end
-          end.reverse
-          new_backtrace = (new_backtrace.empty? ? backtrace : new_backtrace)
-          new_backtrace = new_backtrace.reject(&match)
-          new_backtrace.empty? ? backtrace : new_backtrace
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/observable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/observable.rb
deleted file mode 100644
index 3567d34..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/observable.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/procwrapper'
-
-module Test
-  module Unit
-    module Util
-
-      # This is a utility class that allows anything mixing
-      # it in to notify a set of listeners about interesting
-      # events.
-      module Observable
-        # We use this for defaults since nil might mean something
-        NOTHING = "NOTHING/#{__id__}"
-
-        # Adds the passed proc as a listener on the
-        # channel indicated by channel_name. listener_key
-        # is used to remove the listener later; if none is
-        # specified, the proc itself is used.
-        #
-        # Whatever is used as the listener_key is
-        # returned, making it very easy to use the proc
-        # itself as the listener_key:
-        #
-        #  listener = add_listener("Channel") { ... }
-        #  remove_listener("Channel", listener)
-        def add_listener(channel_name, listener_key=NOTHING, &listener) # :yields: value
-          unless(block_given?)
-            raise ArgumentError.new("No callback was passed as a listener")
-          end
-      
-          key = listener_key
-          if (listener_key == NOTHING)
-            listener_key = listener
-            key = ProcWrapper.new(listener)
-          end
-      
-          channels[channel_name] ||= {}
-          channels[channel_name][key] = listener
-          return listener_key
-        end
-
-        # Removes the listener indicated by listener_key
-        # from the channel indicated by
-        # channel_name. Returns the registered proc, or
-        # nil if none was found.
-        def remove_listener(channel_name, listener_key)
-          channel = channels[channel_name]
-          return nil unless (channel)
-          key = listener_key
-          if (listener_key.instance_of?(Proc))
-            key = ProcWrapper.new(listener_key)
-          end
-          if (channel.has_key?(key))
-            return channel.delete(key)
-          end
-          return nil
-        end
-
-        # Calls all the procs registered on the channel
-        # indicated by channel_name. If value is
-        # specified, it is passed in to the procs,
-        # otherwise they are called with no arguments.
-        #
-        #--
-        #
-        # Perhaps this should be private? Would it ever
-        # make sense for an external class to call this
-        # method directly?
-        def notify_listeners(channel_name, *arguments)
-          channel = channels[channel_name]
-          return 0 unless (channel)
-          listeners = channel.values
-          listeners.each { |listener| listener.call(*arguments) }
-          return listeners.size
-        end
-
-        private
-        def channels
-          @channels ||= {}
-          return @channels
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/procwrapper.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/procwrapper.rb
deleted file mode 100644
index ad72521..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/test/unit/util/procwrapper.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#--
-#
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-module Test
-  module Unit
-    module Util
-
-      # Allows the storage of a Proc passed through '&' in a
-      # hash.
-      #
-      # Note: this may be inefficient, since the hash being
-      # used is not necessarily very good. In Observable,
-      # efficiency is not too important, since the hash is
-      # only accessed when adding and removing listeners,
-      # not when notifying.
-
-      class ProcWrapper
-
-        # Creates a new wrapper for a_proc.
-        def initialize(a_proc)
-          @a_proc = a_proc
-          @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
-        end
-
-        def hash
-          return @hash
-        end
-
-        def ==(other)
-          case(other)
-            when ProcWrapper
-              return @a_proc == other.to_proc
-            else
-              return super
-          end
-        end
-        alias :eql? :==
-
-        def to_proc
-          return @a_proc
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thread.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thread.rb
deleted file mode 100644
index 6c533ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thread.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-unless defined? Thread
-  fail "Thread not available for this ruby interpreter"
-end
-
-require 'thread.so'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thwait.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thwait.rb
deleted file mode 100644
index 95d294a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/thwait.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-#   thwait.rb - thread synchronization class
-#   	$Release Version: 0.9 $
-#   	$Revision: 1.3 $
-#   	$Date: 1998/06/26 03:19:34 $
-#   	by Keiju ISHITSUKA(Nihpon Rational Software Co.,Ltd.)
-#
-# --
-#  feature:
-#  provides synchronization for multiple threads.
-#
-#  class methods:
-#  * ThreadsWait.all_waits(thread1,...)
-#    waits until all of specified threads are terminated.
-#    if a block is supplied for the method, evaluates it for
-#    each thread termination.
-#  * th = ThreadsWait.new(thread1,...)
-#    creates synchronization object, specifying thread(s) to wait.
-#  
-#  methods:
-#  * th.threads
-#    list threads to be synchronized
-#  * th.empty?
-#    is there any thread to be synchronized.
-#  * th.finished?
-#    is there already terminated thread.
-#  * th.join(thread1,...) 
-#    wait for specified thread(s).
-#  * th.join_nowait(threa1,...)
-#    specifies thread(s) to wait.  non-blocking.
-#  * th.next_wait
-#    waits until any of specified threads is terminated.
-#  * th.all_waits
-#    waits until all of specified threads are terminated.
-#    if a block is supplied for the method, evaluates it for
-#    each thread termination.
-#
-
-require "thread.rb"
-require "e2mmap.rb"
-
-#
-# This class watches for termination of multiple threads.  Basic functionality
-# (wait until specified threads have terminated) can be accessed through the
-# class method ThreadsWait::all_waits.  Finer control can be gained using
-# instance methods.
-#
-# Example:
-#
-#   ThreadsWait.all_wait(thr1, thr2, ...) do |t|
-#     STDERR.puts "Thread #{t} has terminated."
-#   end
-#
-class ThreadsWait
-  RCS_ID='-$Id: thwait.rb,v 1.3 1998/06/26 03:19:34 keiju Exp keiju $-'
-  
-  Exception2MessageMapper.extend_to(binding)
-  def_exception("ErrNoWaitingThread", "No threads for waiting.")
-  def_exception("ErrNoFinishedThread", "No finished threads.")
-  
-  #
-  # Waits until all specified threads have terminated.  If a block is provided,
-  # it is executed for each thread termination.
-  #
-  def ThreadsWait.all_waits(*threads) # :yield: thread
-    tw = ThreadsWait.new(*threads)
-    if block_given?
-      tw.all_waits do |th|
-	yield th
-      end
-    else
-      tw.all_waits
-    end
-  end
-  
-  #
-  # Creates a ThreadsWait object, specifying the threads to wait on.
-  # Non-blocking.
-  #
-  def initialize(*threads)
-    @threads = []
-    @wait_queue = Queue.new
-    join_nowait(*threads) unless threads.empty?
-  end
-  
-  # Returns the array of threads in the wait queue.
-  attr :threads
-  
-  #
-  # Returns +true+ if there are no threads to be synchronized.
-  #
-  def empty?
-    @threads.empty?
-  end
-  
-  #
-  # Returns +true+ if any thread has terminated.
-  #
-  def finished?
-    !@wait_queue.empty?
-  end
-  
-  #
-  # Waits for specified threads to terminate.
-  #
-  def join(*threads)
-    join_nowait(*threads)
-    next_wait
-  end
-  
-  #
-  # Specifies the threads that this object will wait for, but does not actually
-  # wait.
-  #
-  def join_nowait(*threads)
-    threads.flatten!
-    @threads.concat threads
-    for th in threads
-      Thread.start(th) do |t|
-	begin
-	  t.join
-	ensure
-	  @wait_queue.push t
-	end
-      end
-    end
-  end
-  
-  #
-  # Waits until any of the specified threads has terminated, and returns the one
-  # that does.
-  #
-  # If there is no thread to wait, raises +ErrNoWaitingThread+.  If +nonblock+
-  # is true, and there is no terminated thread, raises +ErrNoFinishedThread+.
-  #
-  def next_wait(nonblock = nil)
-    ThreadsWait.fail ErrNoWaitingThread if @threads.empty?
-    begin
-      @threads.delete(th = @wait_queue.pop(nonblock))
-      th
-    rescue ThreadError
-      ThreadsWait.fail ErrNoFinishedThread
-    end
-  end
-  
-  #
-  # Waits until all of the specified threads are terminated.  If a block is
-  # supplied for the method, it is executed for each thread termination.
-  #
-  # Raises exceptions in the same manner as +next_wait+.
-  #
-  def all_waits
-    until @threads.empty?
-      th = next_wait
-      yield th if block_given?
-    end
-  end
-end
-
-ThWait = ThreadsWait
-
-
-# Documentation comments:
-#  - Source of documentation is evenly split between Nutshell, existing
-#    comments, and my own rephrasing.
-#  - I'm not particularly confident that the comments are all exactly correct.
-#  - The history, etc., up the top appears in the RDoc output.  Perhaps it would
-#    be better to direct that not to appear, and put something else there
-#    instead.
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/time.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/time.rb
deleted file mode 100644
index dbc25f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/time.rb
+++ /dev/null
@@ -1,797 +0,0 @@
-
-#
-# == Introduction
-# 
-# This library extends the Time class:
-# * conversion between date string and time object.
-#   * date-time defined by RFC 2822
-#   * HTTP-date defined by RFC 2616
-#   * dateTime defined by XML Schema Part 2: Datatypes (ISO 8601)
-#   * various formats handled by Date._parse (string to time only)
-# 
-# == Design Issues
-# 
-# === Specialized interface
-# 
-# This library provides methods dedicated to special purposes:
-# * RFC 2822, RFC 2616 and XML Schema.
-# * They makes usual life easier.
-# 
-# === Doesn't depend on strftime
-# 
-# This library doesn't use +strftime+.  Especially #rfc2822 doesn't depend
-# on +strftime+ because:
-# 
-# * %a and %b are locale sensitive
-# 
-#   Since they are locale sensitive, they may be replaced to
-#   invalid weekday/month name in some locales.
-#   Since ruby-1.6 doesn't invoke setlocale by default,
-#   the problem doesn't arise until some external library invokes setlocale.
-#   Ruby/GTK is the example of such library.
-# 
-# * %z is not portable
-# 
-#   %z is required to generate zone in date-time of RFC 2822
-#   but it is not portable.
-#
-# == Revision Information
-#
-# $Id$
-#
-
-require 'parsedate'
-
-#
-# Implements the extensions to the Time class that are described in the
-# documentation for the time.rb library.
-#
-class Time
-  class << Time
-
-    ZoneOffset = {
-      'UTC' => 0,
-      # ISO 8601
-      'Z' => 0,
-      # RFC 822
-      'UT' => 0, 'GMT' => 0,
-      'EST' => -5, 'EDT' => -4,
-      'CST' => -6, 'CDT' => -5,
-      'MST' => -7, 'MDT' => -6,
-      'PST' => -8, 'PDT' => -7,
-      # Following definition of military zones is original one.
-      # See RFC 1123 and RFC 2822 for the error in RFC 822.
-      'A' => +1, 'B' => +2, 'C' => +3, 'D' => +4,  'E' => +5,  'F' => +6, 
-      'G' => +7, 'H' => +8, 'I' => +9, 'K' => +10, 'L' => +11, 'M' => +12,
-      'N' => -1, 'O' => -2, 'P' => -3, 'Q' => -4,  'R' => -5,  'S' => -6, 
-      'T' => -7, 'U' => -8, 'V' => -9, 'W' => -10, 'X' => -11, 'Y' => -12,
-    }
-    def zone_offset(zone, year=Time.now.year)
-      off = nil
-      zone = zone.upcase
-      if /\A([+-])(\d\d):?(\d\d)\z/ =~ zone
-        off = ($1 == '-' ? -1 : 1) * ($2.to_i * 60 + $3.to_i) * 60
-      elsif /\A[+-]\d\d\z/ =~ zone
-        off = zone.to_i * 3600
-      elsif ZoneOffset.include?(zone)
-        off = ZoneOffset[zone] * 3600
-      elsif ((t = Time.local(year, 1, 1)).zone.upcase == zone rescue false)
-        off = t.utc_offset
-      elsif ((t = Time.local(year, 7, 1)).zone.upcase == zone rescue false)
-        off = t.utc_offset
-      end
-      off
-    end
-
-    def zone_utc?(zone)
-      # * +0000 means localtime. [RFC 2822]
-      # * GMT is a localtime abbreviation in Europe/London, etc.
-      if /\A(?:-00:00|-0000|-00|UTC|Z|UT)\z/i =~ zone
-        true
-      else
-        false
-      end
-    end
-    private :zone_utc?
-
-    LeapYearMonthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-    CommonYearMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-    def month_days(y, m)
-      if ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)
-        LeapYearMonthDays[m-1]
-      else
-        CommonYearMonthDays[m-1]
-      end
-    end
-    private :month_days
-
-    def apply_offset(year, mon, day, hour, min, sec, off)
-      if off < 0
-        off = -off
-        off, o = off.divmod(60)
-        if o != 0 then sec += o; o, sec = sec.divmod(60); off += o end
-        off, o = off.divmod(60)
-        if o != 0 then min += o; o, min = min.divmod(60); off += o end
-        off, o = off.divmod(24)
-        if o != 0 then hour += o; o, hour = hour.divmod(24); off += o end
-        if off != 0
-          day += off
-          if month_days(year, mon) < day
-            mon += 1
-            if 12 < mon
-              mon = 1
-              year += 1
-            end
-            day = 1
-          end
-        end
-      elsif 0 < off
-        off, o = off.divmod(60)
-        if o != 0 then sec -= o; o, sec = sec.divmod(60); off -= o end
-        off, o = off.divmod(60)
-        if o != 0 then min -= o; o, min = min.divmod(60); off -= o end
-        off, o = off.divmod(24)
-        if o != 0 then hour -= o; o, hour = hour.divmod(24); off -= o end
-        if off != 0 then
-          day -= off
-          if day < 1
-            mon -= 1
-            if mon < 1
-              year -= 1
-              mon = 12
-            end
-            day = month_days(year, mon)
-          end
-        end
-      end
-      return year, mon, day, hour, min, sec
-    end
-    private :apply_offset
-
-    def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
-      usec = nil
-      usec = (sec_fraction * 1000000).to_i if sec_fraction
-      if now
-        begin
-          break if year; year = now.year
-          break if mon; mon = now.mon
-          break if day; day = now.day
-          break if hour; hour = now.hour
-          break if min; min = now.min
-          break if sec; sec = now.sec
-          break if sec_fraction; usec = now.tv_usec
-        end until true
-      end
-
-      year ||= 1970
-      mon ||= 1
-      day ||= 1
-      hour ||= 0
-      min ||= 0
-      sec ||= 0
-      usec ||= 0
-
-      off = nil
-      off = zone_offset(zone, year) if zone
-
-      if off
-        year, mon, day, hour, min, sec =
-          apply_offset(year, mon, day, hour, min, sec, off)
-        t = Time.utc(year, mon, day, hour, min, sec, usec)
-        t.localtime if !zone_utc?(zone)
-        t
-      else
-        self.local(year, mon, day, hour, min, sec, usec)
-      end
-    end
-    private :make_time
-
-    #
-    # Parses +date+ using Date._parse and converts it to a Time object.
-    #
-    # If a block is given, the year described in +date+ is converted by the
-    # block.  For example:
-    #
-    #     Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}
-    #
-    # If the upper components of the given time are broken or missing, they are
-    # supplied with those of +now+.  For the lower components, the minimum
-    # values (1 or 0) are assumed if broken or missing.  For example:
-    #
-    #     # Suppose it is "Thu Nov 29 14:33:20 GMT 2001" now and
-    #     # your timezone is GMT:
-    #     Time.parse("16:30")     #=> Thu Nov 29 16:30:00 GMT 2001
-    #     Time.parse("7/23")      #=> Mon Jul 23 00:00:00 GMT 2001
-    #     Time.parse("Aug 31")    #=> Fri Aug 31 00:00:00 GMT 2001
-    #
-    # Since there are numerous conflicts among locally defined timezone
-    # abbreviations all over the world, this method is not made to
-    # understand all of them.  For example, the abbreviation "CST" is
-    # used variously as:
-    #
-    #     -06:00 in America/Chicago,
-    #     -05:00 in America/Havana,
-    #     +08:00 in Asia/Harbin,
-    #     +09:30 in Australia/Darwin,
-    #     +10:30 in Australia/Adelaide,
-    #     etc.
-    #
-    # Based on the fact, this method only understands the timezone
-    # abbreviations described in RFC 822 and the system timezone, in the
-    # order named. (i.e. a definition in RFC 822 overrides the system
-    # timezone definition.)  The system timezone is taken from
-    # <tt>Time.local(year, 1, 1).zone</tt> and
-    # <tt>Time.local(year, 7, 1).zone</tt>.
-    # If the extracted timezone abbreviation does not match any of them,
-    # it is ignored and the given time is regarded as a local time.
-    #
-    # ArgumentError is raised if Date._parse cannot extract information from
-    # +date+ or Time class cannot represent specified date.
-    #
-    # This method can be used as fail-safe for other parsing methods as:
-    #
-    #   Time.rfc2822(date) rescue Time.parse(date)
-    #   Time.httpdate(date) rescue Time.parse(date)
-    #   Time.xmlschema(date) rescue Time.parse(date)
-    #
-    # A failure for Time.parse should be checked, though.
-    #
-    def parse(date, now=Time.now)
-      d = Date._parse(date, false)
-      year = d[:year]
-      year = yield(year) if year && block_given?
-      make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
-    end
-
-    MonthValue = {
-      'JAN' => 1, 'FEB' => 2, 'MAR' => 3, 'APR' => 4, 'MAY' => 5, 'JUN' => 6,
-      'JUL' => 7, 'AUG' => 8, 'SEP' => 9, 'OCT' =>10, 'NOV' =>11, 'DEC' =>12
-    }
-
-    #
-    # Parses +date+ as date-time defined by RFC 2822 and converts it to a Time
-    # object.  The format is identical to the date format defined by RFC 822 and
-    # updated by RFC 1123.
-    #
-    # ArgumentError is raised if +date+ is not compliant with RFC 2822
-    # or Time class cannot represent specified date.
-    #
-    # See #rfc2822 for more information on this format.
-    #
-    def rfc2822(date)
-      if /\A\s*
-          (?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*,\s*)?
-          (\d{1,2})\s+
-          (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+
-          (\d{2,})\s+
-          (\d{2})\s*
-          :\s*(\d{2})\s*
-          (?::\s*(\d{2}))?\s+
-          ([+-]\d{4}|
-           UT|GMT|EST|EDT|CST|CDT|MST|MDT|PST|PDT|[A-IK-Z])/ix =~ date
-        # Since RFC 2822 permit comments, the regexp has no right anchor.
-        day = $1.to_i
-        mon = MonthValue[$2.upcase]
-        year = $3.to_i
-        hour = $4.to_i
-        min = $5.to_i
-        sec = $6 ? $6.to_i : 0
-        zone = $7
-
-        # following year completion is compliant with RFC 2822.
-        year = if year < 50
-                 2000 + year
-               elsif year < 1000
-                 1900 + year
-               else
-                 year
-               end
-
-        year, mon, day, hour, min, sec =
-          apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
-        t = self.utc(year, mon, day, hour, min, sec)
-        t.localtime if !zone_utc?(zone)
-        t
-      else
-        raise ArgumentError.new("not RFC 2822 compliant date: #{date.inspect}")
-      end
-    end
-    alias rfc822 rfc2822
-
-    #
-    # Parses +date+ as HTTP-date defined by RFC 2616 and converts it to a Time
-    # object.
-    #
-    # ArgumentError is raised if +date+ is not compliant with RFC 2616 or Time
-    # class cannot represent specified date.
-    #
-    # See #httpdate for more information on this format.
-    #
-    def httpdate(date)
-      if /\A\s*
-          (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20
-          (\d{2})\x20
-          (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
-          (\d{4})\x20
-          (\d{2}):(\d{2}):(\d{2})\x20
-          GMT
-          \s*\z/ix =~ date
-        self.rfc2822(date)
-      elsif /\A\s*
-             (?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday),\x20
-             (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d)\x20
-             (\d\d):(\d\d):(\d\d)\x20
-             GMT
-             \s*\z/ix =~ date
-        self.parse(date)
-      elsif /\A\s*
-             (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
-             (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
-             (\d\d|\x20\d)\x20
-             (\d\d):(\d\d):(\d\d)\x20
-             (\d{4})
-             \s*\z/ix =~ date
-        self.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
-                 $3.to_i, $4.to_i, $5.to_i)
-      else
-        raise ArgumentError.new("not RFC 2616 compliant date: #{date.inspect}")
-      end
-    end
-
-    #
-    # Parses +date+ as dateTime defined by XML Schema and converts it to a Time
-    # object.  The format is restricted version of the format defined by ISO
-    # 8601.
-    #
-    # ArgumentError is raised if +date+ is not compliant with the format or Time
-    # class cannot represent specified date.
-    #
-    # See #xmlschema for more information on this format.
-    #
-    def xmlschema(date)
-      if /\A\s*
-          (-?\d+)-(\d\d)-(\d\d)
-          T
-          (\d\d):(\d\d):(\d\d)
-          (\.\d*)?
-          (Z|[+-]\d\d:\d\d)?
-          \s*\z/ix =~ date
-        year = $1.to_i
-        mon = $2.to_i
-        day = $3.to_i
-        hour = $4.to_i
-        min = $5.to_i
-        sec = $6.to_i
-        usec = 0
-        usec = $7.to_f * 1000000 if $7
-        if $8
-          zone = $8
-          year, mon, day, hour, min, sec =
-            apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
-          Time.utc(year, mon, day, hour, min, sec, usec)
-        else
-          Time.local(year, mon, day, hour, min, sec, usec)
-        end
-      else
-        raise ArgumentError.new("invalid date: #{date.inspect}")
-      end
-    end
-    alias iso8601 xmlschema
-  end # class << self
-
-  #
-  # Returns a string which represents the time as date-time defined by RFC 2822:
-  #
-  #   day-of-week, DD month-name CCYY hh:mm:ss zone
-  #
-  # where zone is [+-]hhmm.
-  #
-  # If +self+ is a UTC time, -0000 is used as zone.
-  #
-  def rfc2822
-    sprintf('%s, %02d %s %d %02d:%02d:%02d ',
-      RFC2822_DAY_NAME[wday],
-      day, RFC2822_MONTH_NAME[mon-1], year,
-      hour, min, sec) +
-    if utc?
-      '-0000'
-    else
-      off = utc_offset
-      sign = off < 0 ? '-' : '+'
-      sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
-    end
-  end
-  alias rfc822 rfc2822
-
-  RFC2822_DAY_NAME = [
-    'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
-  ]
-  RFC2822_MONTH_NAME = [
-    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-  ]
-
-  #
-  # Returns a string which represents the time as rfc1123-date of HTTP-date
-  # defined by RFC 2616: 
-  # 
-  #   day-of-week, DD month-name CCYY hh:mm:ss GMT
-  #
-  # Note that the result is always UTC (GMT).
-  #
-  def httpdate
-    t = dup.utc
-    sprintf('%s, %02d %s %d %02d:%02d:%02d GMT',
-      RFC2822_DAY_NAME[t.wday],
-      t.day, RFC2822_MONTH_NAME[t.mon-1], t.year,
-      t.hour, t.min, t.sec)
-  end
-
-  #
-  # Returns a string which represents the time as dateTime defined by XML
-  # Schema:
-  #
-  #   CCYY-MM-DDThh:mm:ssTZD
-  #   CCYY-MM-DDThh:mm:ss.sssTZD
-  #
-  # where TZD is Z or [+-]hh:mm.
-  #
-  # If self is a UTC time, Z is used as TZD.  [+-]hh:mm is used otherwise.
-  #
-  # +fractional_seconds+ specifies a number of digits of fractional seconds.
-  # Its default value is 0.
-  #
-  def xmlschema(fraction_digits=0)
-    sprintf('%d-%02d-%02dT%02d:%02d:%02d',
-      year, mon, day, hour, min, sec) +
-    if fraction_digits == 0
-      ''
-    elsif fraction_digits <= 6
-      '.' + sprintf('%06d', usec)[0, fraction_digits]
-    else
-      '.' + sprintf('%06d', usec) + '0' * (fraction_digits - 6)
-    end +
-    if utc?
-      'Z'
-    else
-      off = utc_offset
-      sign = off < 0 ? '-' : '+'
-      sprintf('%s%02d:%02d', sign, *(off.abs / 60).divmod(60))
-    end
-  end
-  alias iso8601 xmlschema
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class TimeExtentionTest < Test::Unit::TestCase # :nodoc:
-    def test_rfc822
-      assert_equal(Time.utc(1976, 8, 26, 14, 30) + 4 * 3600,
-                   Time.rfc2822("26 Aug 76 14:30 EDT"))
-      assert_equal(Time.utc(1976, 8, 27, 9, 32) + 7 * 3600,
-                   Time.rfc2822("27 Aug 76 09:32 PDT"))
-    end
-
-    def test_rfc2822
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 09:55:06 -0600"))
-      assert_equal(Time.utc(2003, 7, 1, 10, 52, 37) - 2 * 3600,
-                   Time.rfc2822("Tue, 1 Jul 2003 10:52:37 +0200"))
-      assert_equal(Time.utc(1997, 11, 21, 10, 1, 10) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 10:01:10 -0600"))
-      assert_equal(Time.utc(1997, 11, 21, 11, 0, 0) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 11:00:00 -0600"))
-      assert_equal(Time.utc(1997, 11, 24, 14, 22, 1) + 8 * 3600,
-                   Time.rfc2822("Mon, 24 Nov 1997 14:22:01 -0800"))
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        assert_equal(Time.utc(1969, 2, 13, 23, 32, 54) + 3 * 3600 + 30 * 60,
-                     Time.rfc2822("Thu, 13 Feb 1969 23:32:54 -0330"))
-        assert_equal(Time.utc(1969, 2, 13, 23, 32, 0) + 3 * 3600 + 30 * 60,
-                     Time.rfc2822(" Thu,
-        13
-          Feb
-            1969
-        23:32
-                 -0330 (Newfoundland Time)"))
-      end
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6),
-                   Time.rfc2822("21 Nov 97 09:55:06 GMT"))
-      assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
-                   Time.rfc2822("Fri, 21 Nov 1997 09 :   55  :  06 -0600"))
-      assert_raise(ArgumentError) {
-        # inner comment is not supported.
-        Time.rfc2822("Fri, 21 Nov 1997 09(comment):   55  :  06 -0600")
-      }
-    end
-
-    def test_rfc2616
-      t = Time.utc(1994, 11, 6, 8, 49, 37)
-      assert_equal(t, Time.httpdate("Sun, 06 Nov 1994 08:49:37 GMT"))
-      assert_equal(t, Time.httpdate("Sunday, 06-Nov-94 08:49:37 GMT"))
-      assert_equal(t, Time.httpdate("Sun Nov  6 08:49:37 1994"))
-      assert_equal(Time.utc(1995, 11, 15, 6, 25, 24),
-                   Time.httpdate("Wed, 15 Nov 1995 06:25:24 GMT"))
-      assert_equal(Time.utc(1995, 11, 15, 4, 58, 8),
-                   Time.httpdate("Wed, 15 Nov 1995 04:58:08 GMT"))
-      assert_equal(Time.utc(1994, 11, 15, 8, 12, 31),
-                   Time.httpdate("Tue, 15 Nov 1994 08:12:31 GMT"))
-      assert_equal(Time.utc(1994, 12, 1, 16, 0, 0),
-                   Time.httpdate("Thu, 01 Dec 1994 16:00:00 GMT"))
-      assert_equal(Time.utc(1994, 10, 29, 19, 43, 31),
-                   Time.httpdate("Sat, 29 Oct 1994 19:43:31 GMT"))
-      assert_equal(Time.utc(1994, 11, 15, 12, 45, 26),
-                   Time.httpdate("Tue, 15 Nov 1994 12:45:26 GMT"))
-      assert_equal(Time.utc(1999, 12, 31, 23, 59, 59),
-                   Time.httpdate("Fri, 31 Dec 1999 23:59:59 GMT"))
-    end
-
-    def test_rfc3339
-      t = Time.utc(1985, 4, 12, 23, 20, 50, 520000)
-      s = "1985-04-12T23:20:50.52Z"
-      assert_equal(t, Time.iso8601(s))
-      assert_equal(s, t.iso8601(2))
-
-      t = Time.utc(1996, 12, 20, 0, 39, 57)
-      s = "1996-12-19T16:39:57-08:00"
-      assert_equal(t, Time.iso8601(s))
-      # There is no way to generate time string with arbitrary timezone.
-      s = "1996-12-20T00:39:57Z"
-      assert_equal(t, Time.iso8601(s))
-      assert_equal(s, t.iso8601)
-
-      t = Time.utc(1990, 12, 31, 23, 59, 60)
-      s = "1990-12-31T23:59:60Z"
-      assert_equal(t, Time.iso8601(s))
-      # leap second is representable only if timezone file has it.
-      s = "1990-12-31T15:59:60-08:00"
-      assert_equal(t, Time.iso8601(s))
-
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        t = Time.utc(1937, 1, 1, 11, 40, 27, 870000)
-        s = "1937-01-01T12:00:27.87+00:20"
-        assert_equal(t, Time.iso8601(s))
-      end
-    end
-
-    # http://www.w3.org/TR/xmlschema-2/
-    def test_xmlschema
-      assert_equal(Time.utc(1999, 5, 31, 13, 20, 0) + 5 * 3600,
-                   Time.xmlschema("1999-05-31T13:20:00-05:00"))
-      assert_equal(Time.local(2000, 1, 20, 12, 0, 0),
-                   Time.xmlschema("2000-01-20T12:00:00"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0),
-                   Time.xmlschema("2000-01-20T12:00:00Z"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) - 12 * 3600,
-                   Time.xmlschema("2000-01-20T12:00:00+12:00"))
-      assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) + 13 * 3600,
-                   Time.xmlschema("2000-01-20T12:00:00-13:00"))
-      assert_equal(Time.utc(2000, 3, 4, 23, 0, 0) - 3 * 3600,
-                   Time.xmlschema("2000-03-04T23:00:00+03:00"))
-      assert_equal(Time.utc(2000, 3, 4, 20, 0, 0),
-                   Time.xmlschema("2000-03-04T20:00:00Z"))
-      assert_equal(Time.local(2000, 1, 15, 0, 0, 0),
-                   Time.xmlschema("2000-01-15T00:00:00"))
-      assert_equal(Time.local(2000, 2, 15, 0, 0, 0),
-                   Time.xmlschema("2000-02-15T00:00:00"))
-      assert_equal(Time.local(2000, 1, 15, 12, 0, 0),
-                   Time.xmlschema("2000-01-15T12:00:00"))
-      assert_equal(Time.utc(2000, 1, 16, 12, 0, 0),
-                   Time.xmlschema("2000-01-16T12:00:00Z"))
-      assert_equal(Time.local(2000, 1, 1, 12, 0, 0),
-                   Time.xmlschema("2000-01-01T12:00:00"))
-      assert_equal(Time.utc(1999, 12, 31, 23, 0, 0),
-                   Time.xmlschema("1999-12-31T23:00:00Z"))
-      assert_equal(Time.local(2000, 1, 16, 12, 0, 0),
-                   Time.xmlschema("2000-01-16T12:00:00"))
-      assert_equal(Time.local(2000, 1, 16, 0, 0, 0),
-                   Time.xmlschema("2000-01-16T00:00:00"))
-      assert_equal(Time.utc(2000, 1, 12, 12, 13, 14),
-                   Time.xmlschema("2000-01-12T12:13:14Z"))
-      assert_equal(Time.utc(2001, 4, 17, 19, 23, 17, 300000),
-                   Time.xmlschema("2001-04-17T19:23:17.3Z"))
-    end
-
-    def test_encode_xmlschema
-      t = Time.utc(2001, 4, 17, 19, 23, 17, 300000)
-      assert_equal("2001-04-17T19:23:17Z", t.xmlschema)
-      assert_equal("2001-04-17T19:23:17.3Z", t.xmlschema(1))
-      assert_equal("2001-04-17T19:23:17.300000Z", t.xmlschema(6))
-      assert_equal("2001-04-17T19:23:17.3000000Z", t.xmlschema(7))
-
-      t = Time.utc(2001, 4, 17, 19, 23, 17, 123456)
-      assert_equal("2001-04-17T19:23:17.1234560Z", t.xmlschema(7))
-      assert_equal("2001-04-17T19:23:17.123456Z", t.xmlschema(6))
-      assert_equal("2001-04-17T19:23:17.12345Z", t.xmlschema(5))
-      assert_equal("2001-04-17T19:23:17.1Z", t.xmlschema(1))
-
-      begin
-        Time.at(-1)
-      rescue ArgumentError
-        # ignore
-      else
-        t = Time.utc(1960, 12, 31, 23, 0, 0, 123456)
-        assert_equal("1960-12-31T23:00:00.123456Z", t.xmlschema(6))
-      end
-    end
-
-    def test_completion
-      now = Time.local(2001,11,29,21,26,35)
-      assert_equal(Time.local( 2001,11,29,21,12),
-                   Time.parse("2001/11/29 21:12", now))
-      assert_equal(Time.local( 2001,11,29),
-                   Time.parse("2001/11/29", now))
-      assert_equal(Time.local( 2001,11,29),
-                   Time.parse(     "11/29", now))
-      #assert_equal(Time.local(2001,11,1), Time.parse("Nov", now))
-      assert_equal(Time.local( 2001,11,29,10,22),
-                   Time.parse(           "10:22", now))
-    end
-
-    def test_invalid
-      # They were actually used in some web sites.
-      assert_raise(ArgumentError) { Time.httpdate("1 Dec 2001 10:23:57 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Sat, 1 Dec 2001 10:25:42 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Sat,  1-Dec-2001 10:53:55 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-2001 10:15:34 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-101 11:10:07 GMT") }
-      assert_raise(ArgumentError) { Time.httpdate("Fri, 30 Nov 2001 21:30:00 JST") }
-
-      # They were actually used in some mails.
-      assert_raise(ArgumentError) { Time.rfc2822("01-5-20") }
-      assert_raise(ArgumentError) { Time.rfc2822("7/21/00") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001-8-28") }
-      assert_raise(ArgumentError) { Time.rfc2822("00-5-6 1:13:06") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001-9-27 9:36:49") }
-      assert_raise(ArgumentError) { Time.rfc2822("2000-12-13 11:01:11") }
-      assert_raise(ArgumentError) { Time.rfc2822("2001/10/17 04:29:55") }
-      assert_raise(ArgumentError) { Time.rfc2822("9/4/2001 9:23:19 PM") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 Nov 2001 09:04:31") }
-      assert_raise(ArgumentError) { Time.rfc2822("13 Feb 2001 16:4 GMT") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 Oct 00 5:41:19 PM") }
-      assert_raise(ArgumentError) { Time.rfc2822("2 Jul 00 00:51:37 JST") }
-      assert_raise(ArgumentError) { Time.rfc2822("01 11 2001 06:55:57 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("18 \343\366\356\341\370 2000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, Oct 2001  18:53:32") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 2 Nov 2001 03:47:54") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 27 Jul 2001 11.14.14 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Thu, 2 Nov 2000 04:13:53 -600") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 5 Apr 2000 22:57:09 JST") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mon, 11 Sep 2000 19:47:33 00000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 28 Apr 2000 20:40:47 +-900") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 19 Jan 2001 8:15:36 AM -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("Thursday, Sep 27 2001 7:42:35 AM EST") }
-      assert_raise(ArgumentError) { Time.rfc2822("3/11/2001 1:31:57 PM Pacific Daylight Time") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mi, 28 Mrz 2001 11:51:36") }
-      assert_raise(ArgumentError) { Time.rfc2822("P, 30 sept 2001 23:03:14") }
-      assert_raise(ArgumentError) { Time.rfc2822("fr, 11 aug 2000 18:39:22") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fr, 21 Sep 2001 17:44:03 -1000") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mo, 18 Jun 2001 19:21:40 -1000") }
-      assert_raise(ArgumentError) { Time.rfc2822("l\366, 12 aug 2000 18:53:20") }
-      assert_raise(ArgumentError) { Time.rfc2822("l\366, 26 maj 2001 00:15:58") }
-      assert_raise(ArgumentError) { Time.rfc2822("Dom, 30 Sep 2001 17:36:30") }
-      assert_raise(ArgumentError) { Time.rfc2822("%&, 31 %2/ 2000 15:44:47 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("dom, 26 ago 2001 03:57:07 -0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("ter, 04 set 2001 16:27:58 -0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
-      assert_raise(ArgumentError) { Time.rfc2822("ele, 11 h: 2000 12:42:15 -0500") }
-      assert_raise(ArgumentError) { Time.rfc2822("Tue, 14 Aug 2001 3:55:3 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 25 Aug 2000 9:3:48 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 1 Dec 2000 0:57:50 EST") }
-      assert_raise(ArgumentError) { Time.rfc2822("Mon, 7 May 2001 9:39:51 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 1 Aug 2001 16:9:15 +0200") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed, 23 Aug 2000 9:17:36 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Fri, 11 Aug 2000 10:4:42 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Sat, 15 Sep 2001 13:22:2 +0300") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed,16 \276\305\324\302 2001 20:06:25 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("Wed,7 \312\256\322\273\324\302 2001 23:47:22 +0800") }
-      assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=C5=DA),?= 10   2 2001 23:32:26 +0900 (JST)") }
-      assert_raise(ArgumentError) { Time.rfc2822("\307\341\314\343\332\311, 30 \344\346\335\343\310\321 2001 10:01:06") }
-      assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=BF=E5),?= 12  =?iso-8859-1?Q?9=B7=EE?= 2001 14:52:41\n+0900 (JST)") }
-    end
-
-    def test_zone_0000
-      assert_equal(true, Time.parse("2000-01-01T00:00:00Z").utc?)
-      assert_equal(true, Time.parse("2000-01-01T00:00:00-00:00").utc?)
-      assert_equal(false, Time.parse("2000-01-01T00:00:00+00:00").utc?)
-      assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
-      assert_equal(true, Time.parse("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
-      assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
-      assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
-      assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
-      assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
-      assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 UTC").utc?)
-    end
-
-    def test_parse_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.parse("Thu Dec 31 23:59:59 UTC 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:59 -0000 1998"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 08:59:59 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:59:59 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:59 +0000 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 22:59:59 -0100 1998"));t.utc
-      t += 1
-      assert_equal(t, Time.parse("Thu Dec 31 23:59:60 UTC 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:60 -0000 1998"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 08:59:60 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:59:60 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:59:60 +0000 1998"))
-      assert_equal(t, Time.parse("Fri Dec 31 22:59:60 -0100 1998"));t.utc
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.parse("Thu Jan  1 00:00:00 UTC 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:00:00 -0000 1999"));t.localtime
-      assert_equal(t, Time.parse("Fri Jan  1 09:00:00 +0900 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 01:00:00 +0100 1999"))
-      assert_equal(t, Time.parse("Fri Jan  1 00:00:00 +0000 1999"))
-      assert_equal(t, Time.parse("Fri Dec 31 23:00:00 -0100 1998"))
-    end
-
-    def test_rfc2822_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:59 UTC"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 08:59:59 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:59:59 +0100"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:59 -0100"));t.utc                                  
-      t += 1
-      assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:60 UTC"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 08:59:60 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:59:60 +0100"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:60 -0100"));t.utc                                  
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.rfc2822("Thu,  1 Jan 1999 00:00:00 UTC"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:00:00 -0000"));t.localtime                                  
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 09:00:00 +0900"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 01:00:00 +0100"))
-      assert_equal(t, Time.rfc2822("Fri,  1 Jan 1999 00:00:00 +0000"))
-      assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:00:00 -0100"))
-    end
-
-    def test_xmlschema_leap_second
-      t = Time.utc(1998,12,31,23,59,59)
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59Z"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T08:59:59+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:59:59+01:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:59+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T22:59:59-01:00"));t.utc
-      t += 1
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60Z"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T08:59:60+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:59:60+01:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:59:60+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T22:59:60-01:00"));t.utc
-      t += 1 if t.sec == 60
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00Z"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00-00:00"));t.localtime
-      assert_equal(t, Time.xmlschema("1999-01-01T09:00:00+09:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T01:00:00+01:00"))
-      assert_equal(t, Time.xmlschema("1999-01-01T00:00:00+00:00"))
-      assert_equal(t, Time.xmlschema("1998-12-31T23:00:00-01:00"))
-    end
-
-    def test_ruby_talk_152866
-      t = Time::xmlschema('2005-08-30T22:48:00-07:00')
-      assert_equal(31, t.day)
-      assert_equal(8, t.mon)
-    end
-
-    def test_parse_fraction
-      assert_equal(500000, Time.parse("2000-01-01T00:00:00.5+00:00").tv_usec)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/timeout.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/timeout.rb
deleted file mode 100644
index 5a99c28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/timeout.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-#--
-# = timeout.rb
-#
-# execution timeout
-#
-# = Copyright
-#
-# Copyright:: (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright:: (C) 2000  Information-technology Promotion Agency, Japan
-#
-#++
-#
-# = Description
-#
-# A way of performing a potentially long-running operation in a thread, and
-# terminating it's execution if it hasn't finished within fixed amount of
-# time.
-#
-# Previous versions of timeout didn't use a module for namespace. This version
-# provides both Timeout.timeout, and a backwards-compatible #timeout.
-#
-# = Synopsis
-#
-#   require 'timeout'
-#   status = Timeout::timeout(5) {
-#     # Something that should be interrupted if it takes too much time...
-#   }
-#
-
-module Timeout
-
-  ##
-  # Raised by Timeout#timeout when the block times out.
-
-  class Error < Interrupt
-  end
-  class ExitException < ::Exception # :nodoc:
-  end
-
-  THIS_FILE = /\A#{Regexp.quote(__FILE__)}:/o
-  CALLER_OFFSET = ((c = caller[0]) && THIS_FILE =~ c) ? 1 : 0
-
-  ##
-  # Executes the method's block. If the block execution terminates before +sec+
-  # seconds has passed, it returns true. If not, it terminates the execution
-  # and raises +exception+ (which defaults to Timeout::Error).
-  #
-  # Note that this is both a method of module Timeout, so you can 'include
-  # Timeout' into your classes so they have a #timeout method, as well as a
-  # module method, so you can call it directly as Timeout.timeout().
-
-  def timeout(sec, klass = nil)
-    return yield if sec == nil or sec.zero?
-    raise ThreadError, "timeout within critical session" if Thread.critical
-    exception = klass || Class.new(ExitException)
-    begin
-      x = Thread.current
-      y = Thread.start {
-        sleep sec
-        x.raise exception, "execution expired" if x.alive?
-      }
-      yield sec
-      #    return true
-    rescue exception => e
-      rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
-      (bt = e.backtrace).reject! {|m| rej =~ m}
-      level = -caller(CALLER_OFFSET).size
-      while THIS_FILE =~ bt[level]
-        bt.delete_at(level)
-        level += 1
-      end
-      raise if klass            # if exception class is specified, it
-                                # would be expected outside.
-      raise Error, e.message, e.backtrace
-    ensure
-      y.kill if y and y.alive?
-    end
-  end
-
-  module_function :timeout
-
-end
-
-##
-# Identical to:
-#
-#   Timeout::timeout(n, e, &block).
-#
-# Defined for backwards compatibility with earlier versions of timeout.rb, see
-# Timeout#timeout.
-
-def timeout(n, e = nil, &block) # :nodoc:
-  Timeout::timeout(n, e, &block)
-end
-
-##
-# Another name for Timeout::Error, defined for backwards compatibility with
-# earlier versions of timeout.rb.
-
-TimeoutError = Timeout::Error # :nodoc:
-
-if __FILE__ == $0
-  p timeout(5) {
-    45
-  }
-  p timeout(5, TimeoutError) {
-    45
-  }
-  p timeout(nil) {
-    54
-  }
-  p timeout(0) {
-    54
-  }
-  p timeout(5) {
-    loop {
-      p 10
-      sleep 1
-    }
-  }
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk.rb
deleted file mode 100644
index 1a1dd5c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk.rb
+++ /dev/null
@@ -1,4617 +0,0 @@
-#
-#               tk.rb - Tk interface module using tcltklib
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at netlab.jp>
-
-# use Shigehiro's tcltklib
-require 'tcltklib'
-require 'tkutil'
-
-# autoload
-require 'tk/autoload'
-
-class TclTkIp
-  # backup original (without encoding) _eval and _invoke
-  alias _eval_without_enc _eval
-  alias _invoke_without_enc _invoke
-
-  def _ip_id_
-    # for RemoteTkIp
-    ''
-  end
-end
-
-# define TkComm module (step 1: basic functions)
-module TkComm
-  include TkUtil
-  extend TkUtil
-
-  WidgetClassNames = {}.taint
-  TkExtlibAutoloadModule = [].taint
-
-  # None = Object.new  ### --> definition is moved to TkUtil module
-  # def None.to_s
-  #   'None'
-  # end
-  # None.freeze
-
-  #Tk_CMDTBL = {}
-  #Tk_WINDOWS = {}
-  Tk_IDs = ["00000".taint, "00000".taint].freeze  # [0]-cmdid, [1]-winid
-
-  # for backward compatibility
-  Tk_CMDTBL = Object.new
-  def Tk_CMDTBL.method_missing(id, *args)
-    TkCore::INTERP.tk_cmd_tbl.__send__(id, *args)
-  end
-  Tk_CMDTBL.freeze
-  Tk_WINDOWS = Object.new
-  def Tk_WINDOWS.method_missing(id, *args)
-    TkCore::INTERP.tk_windows.__send__(id, *args)
-  end
-  Tk_WINDOWS.freeze
-
-  self.instance_eval{
-    @cmdtbl = [].taint
-  }
-
-  unless const_defined?(:GET_CONFIGINFO_AS_ARRAY)
-    # GET_CONFIGINFO_AS_ARRAY = false => returns a Hash { opt =>val, ... }
-    #                           true  => returns an Array [[opt,val], ... ]
-    # val is a list which includes resource info. 
-    GET_CONFIGINFO_AS_ARRAY = true
-  end
-  unless const_defined?(:GET_CONFIGINFOwoRES_AS_ARRAY)
-    # for configinfo without resource info; list of [opt, value] pair
-    #           false => returns a Hash { opt=>val, ... }
-    #           true  => returns an Array [[opt,val], ... ]
-    GET_CONFIGINFOwoRES_AS_ARRAY = true
-  end
-  #  *** ATTENTION ***
-  # 'current_configinfo' method always returns a Hash under all cases of above.
-
-  def error_at
-    frames = caller()
-    frames.delete_if do |c|
-      c =~ %r!/tk(|core|thcore|canvas|text|entry|scrollbox)\.rb:\d+!
-    end
-    frames
-  end
-  private :error_at
-
-  def _genobj_for_tkwidget(path)
-    return TkRoot.new if path == '.'
-
-    begin
-      #tk_class = TkCore::INTERP._invoke('winfo', 'class', path)
-      tk_class = Tk.ip_invoke_without_enc('winfo', 'class', path)
-    rescue
-      return path
-    end
-
-    if ruby_class = WidgetClassNames[tk_class]
-      ruby_class_name = ruby_class.name
-      # gen_class_name = ruby_class_name + 'GeneratedOnTk'
-      gen_class_name = ruby_class_name
-      classname_def = ''
-    else # ruby_class == nil
-      mods = TkExtlibAutoloadModule.find_all{|m| m.const_defined?(tk_class)}
-      mods.each{|mod|
-        begin
-          mod.const_get(tk_class)  # auto_load
-          break if (ruby_class = WidgetClassNames[tk_class])
-        rescue LoadError
-          # ignore load error
-        end
-      }
-
-      unless ruby_class
-        std_class = 'Tk' << tk_class
-        if Object.const_defined?(std_class)
-          Object.const_get(std_class)  # auto_load
-          ruby_class = WidgetClassNames[tk_class]
-        end
-      end
-
-      if ruby_class
-        # found
-        ruby_class_name = ruby_class.name
-        gen_class_name = ruby_class_name
-        classname_def = ''
-      else
-        # unknown
-        ruby_class_name = 'TkWindow'
-        gen_class_name = 'TkWidget_' + tk_class
-        classname_def = "WidgetClassName = '#{tk_class}'.freeze"
-      end
-    end
-
-###################################
-=begin
-    if ruby_class = WidgetClassNames[tk_class]
-      ruby_class_name = ruby_class.name
-      # gen_class_name = ruby_class_name + 'GeneratedOnTk'
-      gen_class_name = ruby_class_name
-      classname_def = ''
-    else
-      mod = TkExtlibAutoloadModule.find{|m| m.const_defined?(tk_class)}
-      if mod
-        ruby_class_name = mod.name + '::' + tk_class
-        gen_class_name = ruby_class_name
-        classname_def = ''
-      elsif Object.const_defined?('Tk' + tk_class)
-        ruby_class_name = 'Tk' + tk_class
-        # gen_class_name = ruby_class_name + 'GeneratedOnTk'
-        gen_class_name = ruby_class_name
-        classname_def = ''
-      else
-        ruby_class_name = 'TkWindow'
-        # gen_class_name = ruby_class_name + tk_class + 'GeneratedOnTk'
-        gen_class_name = 'TkWidget_' + tk_class
-        classname_def = "WidgetClassName = '#{tk_class}'.freeze"
-      end
-    end
-=end
-
-=begin
-    unless Object.const_defined? gen_class_name
-      Object.class_eval "class #{gen_class_name}<#{ruby_class_name}
-                           #{classname_def}
-                         end"
-    end
-    Object.class_eval "#{gen_class_name}.new('widgetname'=>'#{path}', 
-                                             'without_creating'=>true)"
-=end
-    base = Object
-    gen_class_name.split('::').each{|klass|
-      next if klass == ''
-      if base.const_defined?(klass)
-        base = base.class_eval klass
-      else
-        base = base.class_eval "class #{klass}<#{ruby_class_name}
-                                  #{classname_def}
-                                end
-                                #{klass}"
-      end
-    }
-    base.class_eval "#{gen_class_name}.new('widgetname'=>'#{path}', 
-                                           'without_creating'=>true)"
-  end
-  private :_genobj_for_tkwidget
-  module_function :_genobj_for_tkwidget
-
-  def _at(x,y=nil)
-    if y
-      "@#{Integer(x)},#{Integer(y)}"
-    else
-      "@#{Integer(x)}"
-    end
-  end
-  module_function :_at
-
-  def tk_tcl2ruby(val, enc_mode = false, listobj = true)
-=begin
-    if val =~ /^rb_out\S* (c(_\d+_)?\d+)/
-      #return Tk_CMDTBL[$1]
-      return TkCore::INTERP.tk_cmd_tbl[$1]
-      #cmd_obj = TkCore::INTERP.tk_cmd_tbl[$1]
-      #if cmd_obj.kind_of?(Proc) || cmd_obj.kind_of?(Method)
-      #  cmd_obj
-      #else
-      #  cmd_obj.cmd
-      #end
-    end
-=end
-    if val =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-      return TkCore::INTERP.tk_cmd_tbl[$4]
-    end
-    #if val.include? ?\s
-    #  return val.split.collect{|v| tk_tcl2ruby(v)}
-    #end
-    case val
-    when /\A at font\S+\z/
-      TkFont.get_obj(val)
-    when /\A-?\d+\z/
-      val.to_i
-    when /\A\.\S*\z/
-      #Tk_WINDOWS[val] ? Tk_WINDOWS[val] : _genobj_for_tkwidget(val)
-      TkCore::INTERP.tk_windows[val]? 
-           TkCore::INTERP.tk_windows[val] : _genobj_for_tkwidget(val)
-    when /\Ai(_\d+_)?\d+\z/
-      TkImage::Tk_IMGTBL[val]? TkImage::Tk_IMGTBL[val] : val
-    when /\A-?\d+\.?\d*(e[-+]?\d+)?\z/
-      val.to_f
-    when /\\ /
-      val.gsub(/\\ /, ' ')
-    when /[^\\] /
-      if listobj
-        #tk_split_escstr(val).collect{|elt|
-        #  tk_tcl2ruby(elt, enc_mode, listobj)
-        #}
-        val = _toUTF8(val) unless enc_mode
-        tk_split_escstr(val, false, false).collect{|elt|
-          tk_tcl2ruby(elt, true, listobj)
-        }
-      elsif enc_mode
-        _fromUTF8(val)
-      else
-        val
-      end
-    else
-      if enc_mode
-        _fromUTF8(val)
-      else
-        val
-      end
-    end
-  end
-
-  private :tk_tcl2ruby
-  module_function :tk_tcl2ruby
-  #private_class_method :tk_tcl2ruby
-
-unless const_defined?(:USE_TCLs_LIST_FUNCTIONS)
-  USE_TCLs_LIST_FUNCTIONS = true
-end
-
-if USE_TCLs_LIST_FUNCTIONS
-  ###########################################################################
-  # use Tcl function version of split_list
-  ###########################################################################
-
-  def tk_split_escstr(str, src_enc=true, dst_enc=true)
-    str = _toUTF8(str) if src_enc
-    if dst_enc
-      TkCore::INTERP._split_tklist(str).map!{|s| _fromUTF8(s)}
-    else
-      TkCore::INTERP._split_tklist(str)
-    end
-  end
-
-  def tk_split_sublist(str, depth=-1, src_enc=true, dst_enc=true)
-    # return [] if str == ""
-    # list = TkCore::INTERP._split_tklist(str)
-    str = _toUTF8(str) if src_enc
-
-    if depth == 0
-      return "" if str == ""
-      list = [str]
-    else
-      return [] if str == ""
-      list = TkCore::INTERP._split_tklist(str)
-    end
-    if list.size == 1
-      # tk_tcl2ruby(list[0], nil, false)
-      tk_tcl2ruby(list[0], dst_enc, false)
-    else
-      list.collect{|token| tk_split_sublist(token, depth - 1, false, dst_enc)}
-    end
-  end
-
-  def tk_split_list(str, depth=0, src_enc=true, dst_enc=true)
-    return [] if str == ""
-    str = _toUTF8(str) if src_enc
-    TkCore::INTERP._split_tklist(str).map!{|token|
-      tk_split_sublist(token, depth - 1, false, dst_enc)
-    }
-  end
-
-  def tk_split_simplelist(str, src_enc=true, dst_enc=true)
-    #lst = TkCore::INTERP._split_tklist(str)
-    #if (lst.size == 1 && lst =~ /^\{.*\}$/)
-    #  TkCore::INTERP._split_tklist(str[1..-2])
-    #else
-    #  lst
-    #end
-
-    str = _toUTF8(str) if src_enc
-    if dst_enc
-      TkCore::INTERP._split_tklist(str).map!{|s| _fromUTF8(s)}
-    else
-      TkCore::INTERP._split_tklist(str)
-    end
-  end
-
-  def array2tk_list(ary, enc=nil)
-    return "" if ary.size == 0
-
-    sys_enc = TkCore::INTERP.encoding
-    sys_enc = TclTkLib.encoding_system unless sys_enc
-
-    dst_enc = (enc == nil)? sys_enc: enc
-
-    dst = ary.collect{|e|
-      if e.kind_of? Array
-        s = array2tk_list(e, enc)
-      elsif e.kind_of? Hash
-        tmp_ary = []
-        #e.each{|k,v| tmp_ary << k << v }
-        e.each{|k,v| tmp_ary << "-#{_get_eval_string(k)}" << v }
-        s = array2tk_list(tmp_ary, enc)
-      else
-        s = _get_eval_string(e, enc)
-      end
-
-      if dst_enc != true && dst_enc != false
-        if (s_enc = s.instance_variable_get(:@encoding))
-          s_enc = s_enc.to_s
-        else
-          s_enc = sys_enc
-        end
-        dst_enc = true if s_enc != dst_enc
-      end
-
-      s
-    }
-
-    if sys_enc && dst_enc
-      dst.map!{|s| _toUTF8(s)}
-      ret = TkCore::INTERP._merge_tklist(*dst)
-      if dst_enc.kind_of?(String)
-        ret = _fromUTF8(ret, dst_enc)
-        ret.instance_variable_set(:@encoding, dst_enc)
-      else
-        ret.instance_variable_set(:@encoding, 'utf-8')
-      end
-      ret
-    else
-      TkCore::INTERP._merge_tklist(*dst)
-    end
-  end
-
-else
-  ###########################################################################
-  # use Ruby script version of split_list (traditional methods)
-  ###########################################################################
-
-  def tk_split_escstr(str, src_enc=true, dst_enc=true)
-    return [] if str == ""
-    list = []
-    token = nil
-    escape = false
-    brace = 0
-    str.split('').each {|c|
-      brace += 1 if c == '{' && !escape
-      brace -= 1 if c == '}' && !escape
-      if brace == 0 && c == ' ' && !escape
-        list << token.gsub(/^\{(.*)\}$/, '\1') if token
-        token = nil
-      else
-        token = (token || "") << c
-      end
-      escape = (c == '\\' && !escape)
-    }
-    list << token.gsub(/^\{(.*)\}$/, '\1') if token
-    list
-  end
-
-  def tk_split_sublist(str, depth=-1, src_enc=true, dst_enc=true)
-    #return [] if str == ""
-    #return [tk_split_sublist(str[1..-2])] if str =~ /^\{.*\}$/
-    #list = tk_split_escstr(str)
-    if depth == 0
-      return "" if str == ""
-      str = str[1..-2] if str =~ /^\{.*\}$/
-      list = [str]
-    else
-      return [] if str == []
-      return [tk_split_sublist(str[1..-2], depth - 1)] if str =~ /^\{.*\}$/
-      list = tk_split_escstr(str)
-    end
-    if list.size == 1
-      tk_tcl2ruby(list[0], nil, false)
-    else
-      list.collect{|token| tk_split_sublist(token, depth - 1)}
-    end
-  end
-
-  def tk_split_list(str, depth=0, src_enc=true, dst_enc=true)
-    return [] if str == ""
-    tk_split_escstr(str).collect{|token| 
-      tk_split_sublist(token, depth - 1)
-    }
-  end
-=begin
-  def tk_split_list(str)
-    return [] if str == ""
-    idx = str.index('{')
-    while idx and idx > 0 and str[idx-1] == ?\\
-      idx = str.index('{', idx+1)
-    end
-    unless idx
-      list = tk_tcl2ruby(str)
-      unless Array === list
-        list = [list]
-      end
-      return list
-    end
-
-    list = tk_tcl2ruby(str[0,idx])
-    list = [] if list == ""
-    str = str[idx+1..-1]
-    i = -1
-    escape = false
-    brace = 1
-    str.each_byte {|c|
-      i += 1
-      brace += 1 if c == ?{ && !escape
-      brace -= 1 if c == ?} && !escape
-      escape = (c == ?\\)
-      break if brace == 0
-    }
-    if str.size == i + 1
-      return tk_split_list(str[0, i])
-    end
-    if str[0, i] == ' '
-      list.push ' '
-    else
-      list.push tk_split_list(str[0, i])
-    end
-    list += tk_split_list(str[i+1..-1])
-    list
-  end
-=end
-
-  def tk_split_simplelist(str, src_enc=true, dst_enc=true)
-    return [] if str == ""
-    list = []
-    token = nil
-    escape = false
-    brace = 0
-    str.split('').each {|c|
-      if c == '\\' && !escape
-        escape = true
-        token = (token || "") << c if brace > 0
-        next
-      end
-      brace += 1 if c == '{' && !escape
-      brace -= 1 if c == '}' && !escape
-      if brace == 0 && c == ' ' && !escape
-        list << token.gsub(/^\{(.*)\}$/, '\1') if token
-        token = nil
-      else
-        token = (token || "") << c
-      end
-      escape = false
-    }
-    list << token.gsub(/^\{(.*)\}$/, '\1') if token
-    list
-  end
-
-  def array2tk_list(ary, enc=nil)
-    ary.collect{|e|
-      if e.kind_of? Array
-        "{#{array2tk_list(e, enc)}}"
-      elsif e.kind_of? Hash
-        # "{#{e.to_a.collect{|ee| array2tk_list(ee)}.join(' ')}}"
-        e.each{|k,v| tmp_ary << "-#{_get_eval_string(k)}" << v }
-        array2tk_list(tmp_ary, enc)
-      else
-        s = _get_eval_string(e, enc)
-        (s.index(/\s/) || s.size == 0)? "{#{s}}": s
-      end
-    }.join(" ")
-  end
-end
-
-  private :tk_split_escstr, :tk_split_sublist
-  private :tk_split_list, :tk_split_simplelist
-  private :array2tk_list
-
-  module_function :tk_split_escstr, :tk_split_sublist
-  module_function :tk_split_list, :tk_split_simplelist
-  module_function :array2tk_list
-
-  private_class_method :tk_split_escstr, :tk_split_sublist
-  private_class_method :tk_split_list, :tk_split_simplelist
-#  private_class_method :array2tk_list
-
-=begin
-  ### --> definition is moved to TkUtil module
-  def _symbolkey2str(keys)
-    h = {}
-    keys.each{|key,value| h[key.to_s] = value}
-    h
-  end
-  private :_symbolkey2str
-  module_function :_symbolkey2str
-=end
-
-=begin
-  ### --> definition is moved to TkUtil module
-  # def hash_kv(keys, enc_mode = nil, conf = [], flat = false)
-  def hash_kv(keys, enc_mode = nil, conf = nil)
-    # Hash {key=>val, key=>val, ... } or Array [ [key, val], [key, val], ... ]
-    #     ==> Array ['-key', val, '-key', val, ... ]
-    dst = []
-    if keys and keys != None
-      keys.each{|k, v|
-        #dst.push("-#{k}")
-        dst.push('-' + k.to_s)
-        if v != None
-          # v = _get_eval_string(v, enc_mode) if (enc_mode || flat)
-          v = _get_eval_string(v, enc_mode) if enc_mode
-          dst.push(v)
-        end
-      }
-    end
-    if conf
-      conf + dst
-    else
-      dst
-    end
-  end
-  private :hash_kv
-  module_function :hash_kv
-=end
-
-=begin
-  ### --> definition is moved to TkUtil module
-  def bool(val)
-    case val
-    when "1", 1, 'yes', 'true'
-      true
-    else
-      false
-    end
-  end
-
-  def number(val)
-    case val
-    when /^-?\d+$/
-      val.to_i
-    when /^-?\d+\.?\d*(e[-+]?\d+)?$/
-      val.to_f
-    else
-      fail(ArgumentError, "invalid value for Number:'#{val}'")
-    end
-  end
-  def string(val)
-    if val == "{}"
-      ''
-    elsif val[0] == ?{ && val[-1] == ?}
-      val[1..-2]
-    else
-      val
-    end
-  end
-  def num_or_str(val)
-    begin
-      number(val)
-    rescue ArgumentError
-      string(val)
-    end
-  end
-=end
-
-  def list(val, depth=0, enc=true)
-    tk_split_list(val, depth, enc, enc)
-  end
-  def simplelist(val, src_enc=true, dst_enc=true)
-    tk_split_simplelist(val, src_enc, dst_enc)
-  end
-  def window(val)
-    if val =~ /^\./
-      #Tk_WINDOWS[val]? Tk_WINDOWS[val] : _genobj_for_tkwidget(val)
-      TkCore::INTERP.tk_windows[val]? 
-           TkCore::INTERP.tk_windows[val] : _genobj_for_tkwidget(val)
-    else
-      nil
-    end
-  end
-  def image_obj(val)
-    if val =~ /^i(_\d+_)?\d+$/
-      TkImage::Tk_IMGTBL[val]? TkImage::Tk_IMGTBL[val] : val
-    else
-      val
-    end
-  end
-  def procedure(val)
-=begin
-    if val =~ /^rb_out\S* (c(_\d+_)?\d+)/
-      #Tk_CMDTBL[$1]
-      #TkCore::INTERP.tk_cmd_tbl[$1]
-      TkCore::INTERP.tk_cmd_tbl[$1].cmd
-=end
-    if val =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-      return TkCore::INTERP.tk_cmd_tbl[$4].cmd
-    else
-      #nil
-      val
-    end
-  end
-  private :bool, :number, :string, :num_or_str
-  private :list, :simplelist, :window, :procedure
-  module_function :bool, :number, :num_or_str, :string
-  module_function :list, :simplelist, :window, :image_obj, :procedure
-
-  def subst(str, *opts)
-    # opts := :nobackslashes | :nocommands | novariables
-    tk_call('subst', 
-            *(opts.collect{|opt|
-                opt = opt.to_s
-                (opt[0] == ?-)? opt: '-' << opt
-              } << str))
-  end
-
-  def _toUTF8(str, encoding = nil)
-    TkCore::INTERP._toUTF8(str, encoding)
-  end
-  def _fromUTF8(str, encoding = nil)
-    TkCore::INTERP._fromUTF8(str, encoding)
-  end
-  private :_toUTF8, :_fromUTF8
-  module_function :_toUTF8, :_fromUTF8
-
-  def _callback_entry_class?(cls)
-    cls <= Proc || cls <= Method || cls <= TkCallbackEntry
-  end
-  private :_callback_entry_class?
-  module_function :_callback_entry_class?
-
-  def _callback_entry?(obj)
-    obj.kind_of?(Proc) || obj.kind_of?(Method) || obj.kind_of?(TkCallbackEntry)
-  end
-  private :_callback_entry?
-  module_function :_callback_entry?
-
-=begin
-  ### --> definition is moved to TkUtil module
-  def _get_eval_string(str, enc_mode = nil)
-    return nil if str == None
-    if str.kind_of?(TkObject)
-      str = str.path
-    elsif str.kind_of?(String)
-      str = _toUTF8(str) if enc_mode
-    elsif str.kind_of?(Symbol)
-      str = str.id2name
-      str = _toUTF8(str) if enc_mode
-    elsif str.kind_of?(Hash)
-      str = hash_kv(str, enc_mode).join(" ")
-    elsif str.kind_of?(Array)
-      str = array2tk_list(str)
-      str = _toUTF8(str) if enc_mode
-    elsif str.kind_of?(Proc)
-      str = install_cmd(str)
-    elsif str == nil
-      str = ""
-    elsif str == false
-      str = "0"
-    elsif str == true
-      str = "1"
-    elsif (str.respond_to?(:to_eval))
-      str = str.to_eval()
-      str = _toUTF8(str) if enc_mode
-    else
-      str = str.to_s() || ''
-      unless str.kind_of? String
-        fail RuntimeError, "fail to convert the object to a string" 
-      end
-      str = _toUTF8(str) if enc_mode
-    end
-    return str
-  end
-=end
-=begin
-  def _get_eval_string(obj, enc_mode = nil)
-    case obj
-    when Numeric
-      obj.to_s
-    when String
-      (enc_mode)? _toUTF8(obj): obj
-    when Symbol
-      (enc_mode)? _toUTF8(obj.id2name): obj.id2name
-    when TkObject
-      obj.path
-    when Hash
-      hash_kv(obj, enc_mode).join(' ')
-    when Array
-      (enc_mode)? _toUTF8(array2tk_list(obj)): array2tk_list(obj)
-    when Proc, Method, TkCallbackEntry
-      install_cmd(obj)
-    when false
-      '0'
-    when true
-      '1'
-    when nil
-      ''
-    when None
-      nil
-    else
-      if (obj.respond_to?(:to_eval))
-        (enc_mode)? _toUTF8(obj.to_eval): obj.to_eval
-      else
-        begin
-          obj = obj.to_s || ''
-        rescue
-          fail RuntimeError, "fail to convert object '#{obj}' to string" 
-        end
-        (enc_mode)? _toUTF8(obj): obj
-      end
-    end
-  end
-  private :_get_eval_string
-  module_function :_get_eval_string
-=end
-
-=begin
-  ### --> definition is moved to TkUtil module
-  def _get_eval_enc_str(obj)
-    return obj if obj == None
-    _get_eval_string(obj, true)
-  end
-  private :_get_eval_enc_str
-  module_function :_get_eval_enc_str
-=end
-
-=begin
-  ### --> obsolete
-  def ruby2tcl(v, enc_mode = nil)
-    if v.kind_of?(Hash)
-      v = hash_kv(v)
-      v.flatten!
-      v.collect{|e|ruby2tcl(e, enc_mode)}
-    else
-      _get_eval_string(v, enc_mode)
-    end
-  end
-  private :ruby2tcl
-=end
-
-=begin
-  ### --> definition is moved to TkUtil module
-  def _conv_args(args, enc_mode, *src_args)
-    conv_args = []
-    src_args.each{|arg|
-      conv_args << _get_eval_string(arg, enc_mode) unless arg == None
-      # if arg.kind_of?(Hash)
-      # arg.each{|k, v|
-      #   args << '-' + k.to_s
-      #   args << _get_eval_string(v, enc_mode)
-      # }
-      # elsif arg != None
-      #   args << _get_eval_string(arg, enc_mode)
-      # end
-    }
-    args + conv_args
-  end
-  private :_conv_args
-=end
-
-  def _curr_cmd_id
-    #id = format("c%.4d", Tk_IDs[0])
-    id = "c" + TkCore::INTERP._ip_id_ + TkComm::Tk_IDs[0]
-  end
-  def _next_cmd_id
-    id = _curr_cmd_id
-    #Tk_IDs[0] += 1
-    TkComm::Tk_IDs[0].succ!
-    id
-  end
-  private :_curr_cmd_id, :_next_cmd_id
-  module_function :_curr_cmd_id, :_next_cmd_id
-
-  def install_cmd(cmd)
-    return '' if cmd == ''
-    begin
-      ns = TkCore::INTERP._invoke_without_enc('namespace', 'current')
-      ns = nil if ns == '::' # for backward compatibility
-    rescue
-      # probably, Tcl7.6
-      ns = nil
-    end
-    id = _next_cmd_id
-    #Tk_CMDTBL[id] = cmd
-    if cmd.kind_of?(TkCallbackEntry)
-      TkCore::INTERP.tk_cmd_tbl[id] = cmd
-    else
-      TkCore::INTERP.tk_cmd_tbl[id] = TkCore::INTERP.get_cb_entry(cmd)
-    end
-    @cmdtbl = [] unless defined? @cmdtbl
-    @cmdtbl.taint unless @cmdtbl.tainted?
-    @cmdtbl.push id
-    #return Kernel.format("rb_out %s", id);
-    if ns
-      'rb_out' << TkCore::INTERP._ip_id_ << ' ' << ns << ' ' << id
-    else
-      'rb_out' << TkCore::INTERP._ip_id_ << ' ' << id
-    end
-  end
-  def uninstall_cmd(id)
-    #id = $1 if /rb_out\S* (c(_\d+_)?\d+)/ =~ id
-    id = $4 if id =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-    #Tk_CMDTBL.delete(id)
-    TkCore::INTERP.tk_cmd_tbl.delete(id)
-  end
-  # private :install_cmd, :uninstall_cmd
-  module_function :install_cmd, :uninstall_cmd
-
-=begin
-  def install_win(ppath,name=nil)
-    if !name or name == ''
-      #name = format("w%.4d", Tk_IDs[1])
-      #Tk_IDs[1] += 1
-      name = "w" + Tk_IDs[1]
-      Tk_IDs[1].succ!
-    end
-    if name[0] == ?.
-      @path = name.dup
-    elsif !ppath or ppath == "."
-      @path = Kernel.format(".%s", name);
-    else
-      @path = Kernel.format("%s.%s", ppath, name)
-    end
-    #Tk_WINDOWS[@path] = self
-    TkCore::INTERP.tk_windows[@path] = self
-  end
-=end
-  def install_win(ppath,name=nil)
-    if name
-      if name == ''
-        raise ArgumentError, "invalid wiget-name '#{name}'"
-      end
-      if name[0] == ?.
-        @path = '' + name
-        @path.freeze
-        return TkCore::INTERP.tk_windows[@path] = self
-      end
-    else
-      name = "w" + TkCore::INTERP._ip_id_ + Tk_IDs[1]
-      Tk_IDs[1].succ!
-    end
-    if !ppath or ppath == '.'
-      @path = '.' + name
-    else
-      @path = ppath + '.' + name
-    end
-    @path.freeze
-    TkCore::INTERP.tk_windows[@path] = self
-  end
-
-  def uninstall_win()
-    #Tk_WINDOWS.delete(@path)
-    TkCore::INTERP.tk_windows.delete(@path)
-  end
-  private :install_win, :uninstall_win
-
-  def _epath(win)
-    if win.kind_of?(TkObject)
-      win.epath
-    elsif win.respond_to?(:epath)
-      win.epath
-    else
-      win
-    end
-  end
-  private :_epath
-end
-
-# define TkComm module (step 2: event binding)
-module TkComm
-  include TkEvent
-  extend TkEvent
-
-  def tk_event_sequence(context)
-    if context.kind_of? TkVirtualEvent
-      context = context.path
-    end
-    if context.kind_of? Array
-      context = context.collect{|ev|
-        if ev.kind_of? TkVirtualEvent
-          ev.path
-        else
-          ev
-        end
-      }.join("><")
-    end
-    if /,/ =~ context
-      context = context.split(/\s*,\s*/).join("><")
-    else
-      context
-    end
-  end
-
-  def _bind_core(mode, what, context, cmd, *args)
-    id = install_bind(cmd, *args) if cmd
-    begin
-      tk_call_without_enc(*(what + ["<#{tk_event_sequence(context)}>", 
-                              mode + id]))
-    rescue
-      uninstall_cmd(id) if cmd
-      fail
-    end
-  end
-
-  def _bind(what, context, cmd, *args)
-    _bind_core('', what, context, cmd, *args)
-  end
-
-  def _bind_append(what, context, cmd, *args)
-    _bind_core('+', what, context, cmd, *args)
-  end
-
-  def _bind_remove(what, context)
-    tk_call_without_enc(*(what + ["<#{tk_event_sequence(context)}>", '']))
-  end
-
-  def _bindinfo(what, context=nil)
-    if context
-      tk_call_without_enc(*what+["<#{tk_event_sequence(context)}>"]) .collect {|cmdline|
-=begin
-        if cmdline =~ /^rb_out\S* (c(?:_\d+_)?\d+)\s+(.*)$/
-          #[Tk_CMDTBL[$1], $2]
-          [TkCore::INTERP.tk_cmd_tbl[$1], $2]
-=end
-        if cmdline =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
-          [TkCore::INTERP.tk_cmd_tbl[$4], $5]
-        else
-          cmdline
-        end
-      }
-    else
-      tk_split_simplelist(tk_call_without_enc(*what)).collect!{|seq|
-        l = seq.scan(/<*[^<>]+>*/).collect!{|subseq|
-          case (subseq)
-          when /^<<[^<>]+>>$/
-            TkVirtualEvent.getobj(subseq[1..-2])
-          when /^<[^<>]+>$/
-            subseq[1..-2]
-          else
-            subseq.split('')
-          end
-        }.flatten
-        (l.size == 1) ? l[0] : l
-      }
-    end
-  end
-
-  def _bind_core_for_event_class(klass, mode, what, context, cmd, *args)
-    id = install_bind_for_event_class(klass, cmd, *args) if cmd
-    begin
-      tk_call_without_enc(*(what + ["<#{tk_event_sequence(context)}>", 
-                              mode + id]))
-    rescue
-      uninstall_cmd(id) if cmd
-      fail
-    end
-  end
-
-  def _bind_for_event_class(klass, what, context, cmd, *args)
-    _bind_core_for_event_class(klass, '', what, context, cmd, *args)
-  end
-
-  def _bind_append_for_event_class(klass, what, context, cmd, *args)
-    _bind_core_for_event_class(klass, '+', what, context, cmd, *args)
-  end
-
-  def _bind_remove_for_event_class(klass, what, context)
-    _bind_remove(what, context)
-  end
-
-  def _bindinfo_for_event_class(klass, what, context=nil)
-    _bindinfo(what, context)
-  end
-
-  private :tk_event_sequence
-  private :_bind_core, :_bind, :_bind_append, :_bind_remove, :_bindinfo
-  private :_bind_core_for_event_class, :_bind_for_event_class, 
-          :_bind_append_for_event_class, :_bind_remove_for_event_class, 
-          :_bindinfo_for_event_class
-
-  #def bind(tagOrClass, context, cmd=Proc.new, *args)
-  #  _bind(["bind", tagOrClass], context, cmd, *args)
-  #  tagOrClass
-  #end
-  def bind(tagOrClass, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind(["bind", tagOrClass], context, cmd, *args)
-    tagOrClass
-  end
-
-  #def bind_append(tagOrClass, context, cmd=Proc.new, *args)
-  #  _bind_append(["bind", tagOrClass], context, cmd, *args)
-  #  tagOrClass
-  #end
-  def bind_append(tagOrClass, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append(["bind", tagOrClass], context, cmd, *args)
-    tagOrClass
-  end
-
-  def bind_remove(tagOrClass, context)
-    _bind_remove(['bind', tagOrClass], context)
-    tagOrClass
-  end
-
-  def bindinfo(tagOrClass, context=nil)
-    _bindinfo(['bind', tagOrClass], context)
-  end
-
-  #def bind_all(context, cmd=Proc.new, *args)
-  #  _bind(['bind', 'all'], context, cmd, *args)
-  #  TkBindTag::ALL
-  #end
-  def bind_all(context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind(['bind', 'all'], context, cmd, *args)
-    TkBindTag::ALL
-  end
-
-  #def bind_append_all(context, cmd=Proc.new, *args)
-  #  _bind_append(['bind', 'all'], context, cmd, *args)
-  #  TkBindTag::ALL
-  #end
-  def bind_append_all(context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append(['bind', 'all'], context, cmd, *args)
-    TkBindTag::ALL
-  end
-
-  def bind_remove_all(context)
-    _bind_remove(['bind', 'all'], context)
-    TkBindTag::ALL
-  end
-
-  def bindinfo_all(context=nil)
-    _bindinfo(['bind', 'all'], context)
-  end
-end
-
-
-module TkCore
-  include TkComm
-  extend TkComm
-
-  unless self.const_defined? :INTERP
-    if self.const_defined? :IP_NAME
-      name = IP_NAME.to_s
-    else
-      #name = nil
-      name = $0
-    end
-    if self.const_defined? :IP_OPTS
-      if IP_OPTS.kind_of?(Hash)
-        opts = hash_kv(IP_OPTS).join(' ')
-      else
-        opts = IP_OPTS.to_s
-      end
-    else
-      opts = ''
-    end
-
-    INTERP = TclTkIp.new(name, opts)
-
-    def INTERP.__getip
-      self
-    end
-
-    INTERP.instance_eval{
-      @tk_cmd_tbl = {}.taint
-      def @tk_cmd_tbl.[]=(idx,val)
-        if self.has_key?(idx) && Thread.current.group != ThreadGroup::Default
-          fail SecurityError,"cannot change the entried command"
-        end
-        super(idx,val)
-      end
-
-      @tk_windows = {}.taint
-
-      @tk_table_list = [].taint
-
-      @init_ip_env  = [].taint  # table of Procs
-      @add_tk_procs = [].taint  # table of [name, args, body]
-
-      @cb_entry_class = Class.new(TkCallbackEntry){
-        class << self
-          def inspect
-            sprintf("#<Class(TkCallbackEntry):%0x>", self.__id__)
-          end
-          alias to_s inspect
-        end
-
-        def initialize(ip, cmd)
-          @ip = ip
-          @cmd = cmd
-        end
-        attr_reader :ip, :cmd
-        def call(*args)
-          @ip.cb_eval(@cmd, *args)
-        end
-        def inspect
-          sprintf("#<cb_entry:%0x>", self.__id__)
-        end
-        alias to_s inspect
-      }.freeze
-    }
-
-    def INTERP.cb_entry_class
-      @cb_entry_class
-    end
-    def INTERP.tk_cmd_tbl
-      @tk_cmd_tbl
-    end
-    def INTERP.tk_windows
-      @tk_windows
-    end
-
-    class Tk_OBJECT_TABLE
-      def initialize(id)
-        @id = id
-      end
-      def method_missing(m, *args, &b)
-        TkCore::INTERP.tk_object_table(@id).__send__(m, *args, &b)
-      end
-    end
-
-    def INTERP.tk_object_table(id)
-      @tk_table_list[id]
-    end
-    def INTERP.create_table
-      id = @tk_table_list.size
-      (tbl = {}).tainted? || tbl.taint
-      @tk_table_list << tbl
-#      obj = Object.new
-#      obj.instance_eval <<-EOD
-#        def self.method_missing(m, *args)
-#         TkCore::INTERP.tk_object_table(#{id}).send(m, *args)
-#        end
-#      EOD
-#      return obj
-      Tk_OBJECT_TABLE.new(id)
-    end
-
-    def INTERP.get_cb_entry(cmd)
-      @cb_entry_class.new(__getip, cmd).freeze
-    end
-    def INTERP.cb_eval(cmd, *args)
-      TkUtil._get_eval_string(TkUtil.eval_cmd(cmd, *args))
-    end
-
-    def INTERP.init_ip_env(script = Proc.new)
-      @init_ip_env << script
-      script.call(self)
-    end
-    def INTERP.add_tk_procs(name, args = nil, body = nil)
-      if name.kind_of?(Array)
-        name.each{|param| self.add_tk_procs(*param)}
-      else
-        name = name.to_s
-        @add_tk_procs << [name, args, body]
-        self._invoke('proc', name, args, body) if args && body
-      end
-    end
-    def INTERP.remove_tk_procs(*names)
-      names.each{|name|
-        name = name.to_s
-        @add_tk_procs.delete_if{|elem| 
-          elem.kind_of?(Array) && elem[0].to_s == name
-        }
-        self._invoke('rename', name, '')
-      }
-    end
-    def INTERP.init_ip_internal
-      ip = self
-      @init_ip_env.each{|script| script.call(ip)}
-      @add_tk_procs.each{|name,args,body| ip._invoke('proc',name,args,body)}
-    end
-  end
-
-  WIDGET_DESTROY_HOOK = '<WIDGET_DESTROY_HOOK>'
-  INTERP._invoke_without_enc('event', 'add', 
-                             "<#{WIDGET_DESTROY_HOOK}>", '<Destroy>')
-  INTERP._invoke_without_enc('bind', 'all', "<#{WIDGET_DESTROY_HOOK}>",
-                             install_cmd(proc{|path|
-                                unless TkCore::INTERP.deleted?
-                                  begin
-                                    if (widget=TkCore::INTERP.tk_windows[path])
-                                      if widget.respond_to?(:__destroy_hook__)
-                                        widget.__destroy_hook__
-                                      end
-                                    end
-                                  rescue Exception=>e
-                                      p e if $DEBUG
-                                  end
-                                end
-                             }) << ' %W')
-
-  INTERP.add_tk_procs(TclTkLib::FINALIZE_PROC_NAME, '', 
-                      "bind all <#{WIDGET_DESTROY_HOOK}> {}")
-
-  INTERP.add_tk_procs('rb_out', 'ns args', <<-'EOL')
-    if [regexp {^::} $ns] {
-      set cmd {namespace eval $ns {ruby_cmd TkCore callback} $args}
-    } else {
-      set cmd {eval {ruby_cmd TkCore callback} $ns $args}
-    }
-    if {[set st [catch $cmd ret]] != 0} {
-       #return -code $st $ret
-       set idx [string first "\n\n" $ret]
-       if {$idx > 0} {
-          return -code $st \
-                 -errorinfo [string range $ret [expr $idx + 2] \
-                                               [string length $ret]] \
-                 [string range $ret 0 [expr $idx - 1]]
-       } else {
-          return -code $st $ret
-       }
-    } else {
-        return $ret
-    }
-  EOL
-=begin
-  INTERP.add_tk_procs('rb_out', 'args', <<-'EOL')
-    if {[set st [catch {eval {ruby_cmd TkCore callback} $args} ret]] != 0} {
-       #return -code $st $ret
-       set idx [string first "\n\n" $ret]
-       if {$idx > 0} {
-          return -code $st \
-                 -errorinfo [string range $ret [expr $idx + 2] \
-                                               [string length $ret]] \
-                 [string range $ret 0 [expr $idx - 1]]
-       } else {
-          return -code $st $ret
-       }
-    } else {
-        return $ret
-    }
-  EOL
-=end
-=begin
-  INTERP.add_tk_procs('rb_out', 'args', <<-'EOL')
-    #regsub -all {\\} $args {\\\\} args
-    #regsub -all {!} $args {\\!} args
-    #regsub -all "{" $args "\\{" args
-    regsub -all {(\\|!|\{|\})} $args {\\\1} args
-    if {[set st [catch {ruby [format "TkCore.callback %%Q!%s!" $args]} ret]] != 0} {
-       #return -code $st $ret
-       set idx [string first "\n\n" $ret]
-       if {$idx > 0} {
-          return -code $st \
-                 -errorinfo [string range $ret [expr $idx + 2] \
-                                               [string length $ret]] \
-                 [string range $ret 0 [expr $idx - 1]]
-       } else {
-          return -code $st $ret
-       }
-    } else {
-        return $ret
-    }
-  EOL
-=end
-
-  at_exit{ INTERP.remove_tk_procs(TclTkLib::FINALIZE_PROC_NAME) }
-
-  EventFlag = TclTkLib::EventFlag
-
-  def callback_break
-    fail TkCallbackBreak, "Tk callback returns 'break' status"
-  end
-
-  def callback_continue
-    fail TkCallbackContinue, "Tk callback returns 'continue' status"
-  end
-
-  def callback_return
-    fail TkCallbackReturn, "Tk callback returns 'return' status"
-  end
-
-  def TkCore.callback(*arg)
-    begin
-      if TkCore::INTERP.tk_cmd_tbl.kind_of?(Hash)
-        #TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
-        normal_ret = false
-        ret = catch(:IRB_EXIT) do  # IRB hack
-          retval = TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
-          normal_ret = true
-          retval
-        end
-        unless normal_ret
-          # catch IRB_EXIT
-          exit(ret)
-        end
-        ret
-      end
-    rescue SystemExit=>e
-      exit(e.status)
-    rescue Interrupt=>e
-      fail(e)
-    rescue Exception => e
-      begin
-        msg = _toUTF8(e.class.inspect) + ': ' + 
-              _toUTF8(e.message) + "\n" + 
-              "\n---< backtrace of Ruby side >-----\n" + 
-              _toUTF8(e.backtrace.join("\n")) + 
-              "\n---< backtrace of Tk side >-------"
-        msg.instance_variable_set(:@encoding, 'utf-8')
-      rescue Exception
-        msg = e.class.inspect + ': ' + e.message + "\n" + 
-              "\n---< backtrace of Ruby side >-----\n" + 
-              e.backtrace.join("\n") + 
-              "\n---< backtrace of Tk side >-------"
-      end
-      # TkCore::INTERP._set_global_var('errorInfo', msg)
-      # fail(e)
-      fail(e, msg)
-    end
-  end
-=begin
-  def TkCore.callback(arg_str)
-    # arg = tk_split_list(arg_str)
-    arg = tk_split_simplelist(arg_str)
-    #_get_eval_string(TkUtil.eval_cmd(Tk_CMDTBL[arg.shift], *arg))
-    #_get_eval_string(TkUtil.eval_cmd(TkCore::INTERP.tk_cmd_tbl[arg.shift], 
-    #                        *arg))
-    # TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
-    begin
-      TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
-    rescue Exception => e
-      raise(e, e.class.inspect + ': ' + e.message + "\n" + 
-               "\n---< backtrace of Ruby side >-----\n" + 
-               e.backtrace.join("\n") + 
-               "\n---< backtrace of Tk side >-------")
-    end
-#=begin
-#    cb_obj = TkCore::INTERP.tk_cmd_tbl[arg.shift]
-#    unless $DEBUG
-#      cb_obj.call(*arg)
-#    else
-#      begin
-#       raise 'check backtrace'
-#      rescue
-#       # ignore backtrace before 'callback'
-#       pos = -($!.backtrace.size)
-#      end
-#      begin
-#       cb_obj.call(*arg)
-#      rescue
-#       trace = $!.backtrace
-#       raise $!, "\n#{trace[0]}: #{$!.message} (#{$!.class})\n" + 
-#                 "\tfrom #{trace[1..pos].join("\n\tfrom ")}"
-#      end
-#    end
-#=end
-  end
-=end
-
-  def load_cmd_on_ip(tk_cmd)
-    bool(tk_call('auto_load', tk_cmd))
-  end
-
-  def after(ms, cmd=Proc.new)
-    crit_bup = Thread.critical
-    Thread.critical = true
-
-    myid = _curr_cmd_id
-    cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
-
-    Thread.critical = crit_bup
-
-    tk_call_without_enc("after",ms,cmdid)  # return id
-#    return
-#    if false #defined? Thread
-#      Thread.start do
-#       ms = Float(ms)/1000
-#       ms = 10 if ms == 0
-#       sleep ms/1000
-#       cmd.call
-#      end
-#    else
-#      cmdid = install_cmd(cmd)
-#      tk_call("after",ms,cmdid)
-#    end
-  end
-
-  def after_idle(cmd=Proc.new)
-    crit_bup = Thread.critical
-    Thread.critical = true
-
-    myid = _curr_cmd_id
-    cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
-
-    Thread.critical = crit_bup
-
-    tk_call_without_enc('after','idle',cmdid)
-  end
-
-  def after_cancel(afterId)
-    tk_call_without_enc('after','cancel',afterId)
-  end
-
-  def windowingsystem
-    tk_call_without_enc('tk', 'windowingsystem')
-  end
-
-  def scaling(scale=nil)
-    if scale
-      tk_call_without_enc('tk', 'scaling', scale)
-    else
-      Float(number(tk_call_without_enc('tk', 'scaling')))
-    end
-  end
-  def scaling_displayof(win, scale=nil)
-    if scale
-      tk_call_without_enc('tk', 'scaling', '-displayof', win, scale)
-    else
-      Float(number(tk_call_without_enc('tk', '-displayof', win, 'scaling')))
-    end
-  end
-
-  def inactive
-    Integer(tk_call_without_enc('tk', 'inactive'))
-  end
-  def inactive_displayof(win)
-    Integer(tk_call_without_enc('tk', 'inactive', '-displayof', win))
-  end
-  def reset_inactive
-    tk_call_without_enc('tk', 'inactive', 'reset')
-  end
-  def reset_inactive_displayof(win)
-    tk_call_without_enc('tk', 'inactive', '-displayof', win, 'reset')
-  end
-
-  def appname(name=None)
-    tk_call('tk', 'appname', name)
-  end
-
-  def appsend_deny
-    tk_call('rename', 'send', '')
-  end
-
-  def appsend(interp, async, *args)
-    if $SAFE >= 4
-      fail SecurityError, "cannot send Tk commands at level 4"
-    elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
-      fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
-    end
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    if async
-      tk_call('send', '-async', '--', interp, *args)
-    else
-      tk_call('send', '--', interp, *args)
-    end
-  end
-
-  def rb_appsend(interp, async, *args)
-    if $SAFE >= 4
-      fail SecurityError, "cannot send Ruby commands at level 4"
-    elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
-      fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
-    end
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    #args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"]/, '\\\\\&')}
-    args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"\\]/, '\\\\\&')}
-    # args.push(').to_s"')
-    # appsend(interp, async, 'ruby "(', *args)
-    args.push('}.call)"')
-    appsend(interp, async, 'ruby "TkComm._get_eval_string(proc{', *args)
-  end
-
-  def appsend_displayof(interp, win, async, *args)
-    if $SAFE >= 4
-      fail SecurityError, "cannot send Tk commands at level 4"
-    elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
-      fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
-    end
-    win = '.' if win == nil
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    if async
-      tk_call('send', '-async', '-displayof', win, '--', interp, *args)
-    else
-      tk_call('send', '-displayor', win, '--', interp, *args)
-    end
-  end
-
-  def rb_appsend_displayof(interp, win, async, *args)
-    if $SAFE >= 4
-      fail SecurityError, "cannot send Ruby commands at level 4"
-    elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
-      fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
-    end
-    win = '.' if win == nil
-    if async != true && async != false && async != nil
-      args.unshift(async)
-      async = false
-    end
-    #args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"]/, '\\\\\&')}
-    args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"\\]/, '\\\\\&')}
-    # args.push(').to_s"')
-    # appsend_displayof(interp, win, async, 'ruby "(', *args)
-    args.push('}.call)"')
-    appsend(interp, win, async, 'ruby "TkComm._get_eval_string(proc{', *args)
-  end
-
-  def info(*args)
-    tk_call('info', *args)
-  end
-
-  def mainloop(check_root = true)
-    TclTkLib.mainloop(check_root)
-  end
-
-  def mainloop_thread?
-    # true  : current thread is mainloop
-    # nil   : there is no mainloop
-    # false : mainloop is running on the other thread
-    #         ( At then, it is dangerous to call Tk interpreter directly. )
-    TclTkLib.mainloop_thread?
-  end
-
-  def mainloop_exist?
-    TclTkLib.mainloop_thread? != nil
-  end
-
-  def is_mainloop?
-    TclTkLib.mainloop_thread? == true
-  end
-
-  def mainloop_watchdog(check_root = true)
-    # watchdog restarts mainloop when mainloop is dead
-    TclTkLib.mainloop_watchdog(check_root)
-  end
-
-  def do_one_event(flag = TclTkLib::EventFlag::ALL)
-    TclTkLib.do_one_event(flag)
-  end
-
-  def set_eventloop_tick(timer_tick)
-    TclTkLib.set_eventloop_tick(timer_tick)
-  end
-
-  def get_eventloop_tick()
-    TclTkLib.get_eventloop_tick
-  end
-
-  def set_no_event_wait(wait)
-    TclTkLib.set_no_even_wait(wait)
-  end
-
-  def get_no_event_wait()
-    TclTkLib.get_no_eventloop_wait
-  end
-
-  def set_eventloop_weight(loop_max, no_event_tick)
-    TclTkLib.set_eventloop_weight(loop_max, no_event_tick)
-  end
-
-  def get_eventloop_weight()
-    TclTkLib.get_eventloop_weight
-  end
-
-  def restart(app_name = nil, keys = {})
-    TkCore::INTERP.init_ip_internal
-
-    tk_call('set', 'argv0', app_name) if app_name
-    if keys.kind_of?(Hash)
-      # tk_call('set', 'argc', keys.size * 2)
-      tk_call('set', 'argv', hash_kv(keys).join(' '))
-    end
-
-    INTERP.restart
-    nil
-  end
-
-  def event_generate(win, context, keys=nil)
-    #win = win.path if win.kind_of?(TkObject)
-    if context.kind_of?(TkEvent::Event)
-      context.generate(win, ((keys)? keys: {}))
-    elsif keys
-      tk_call_without_enc('event', 'generate', win, 
-                          "<#{tk_event_sequence(context)}>", 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc('event', 'generate', win, 
-                          "<#{tk_event_sequence(context)}>")
-    end
-    nil
-  end
-
-  def messageBox(keys)
-    tk_call('tk_messageBox', *hash_kv(keys))
-  end
-
-  def getOpenFile(keys = nil)
-    tk_call('tk_getOpenFile', *hash_kv(keys))
-  end
-  def getMultipleOpenFile(keys = nil)
-    simplelist(tk_call('tk_getOpenFile', '-multiple', '1', *hash_kv(keys)))
-  end
-
-  def getSaveFile(keys = nil)
-    tk_call('tk_getSaveFile', *hash_kv(keys))
-  end
-  def getMultipleSaveFile(keys = nil)
-    simplelist(tk_call('tk_getSaveFile', '-multiple', '1', *hash_kv(keys)))
-  end
-
-  def chooseColor(keys = nil)
-    tk_call('tk_chooseColor', *hash_kv(keys))
-  end
-
-  def chooseDirectory(keys = nil)
-    tk_call('tk_chooseDirectory', *hash_kv(keys))
-  end
-
-  def _ip_eval_core(enc_mode, cmd_string)
-    case enc_mode
-    when nil
-      res = INTERP._eval(cmd_string)
-    when false
-      res = INTERP._eval_without_enc(cmd_string)
-    when true
-      res = INTERP._eval_with_enc(cmd_string)
-    end
-    if  INTERP._return_value() != 0
-      fail RuntimeError, res, error_at
-    end
-    return res
-  end
-  private :_ip_eval_core
-
-  def ip_eval(cmd_string)
-    _ip_eval_core(nil, cmd_string)
-  end
-
-  def ip_eval_without_enc(cmd_string)
-    _ip_eval_core(false, cmd_string)
-  end
-
-  def ip_eval_with_enc(cmd_string)
-    _ip_eval_core(true, cmd_string)
-  end
-
-  def _ip_invoke_core(enc_mode, *args)
-    case enc_mode
-    when false
-      res = INTERP._invoke_without_enc(*args)
-    when nil
-      res = INTERP._invoke(*args)
-    when true
-      res = INTERP._invoke_with_enc(*args)
-    end
-    if  INTERP._return_value() != 0
-      fail RuntimeError, res, error_at
-    end
-    return res
-  end
-  private :_ip_invoke_core
-
-  def ip_invoke(*args)
-    _ip_invoke_core(nil, *args)
-  end
-
-  def ip_invoke_without_enc(*args)
-    _ip_invoke_core(false, *args)
-  end
-
-  def ip_invoke_with_enc(*args)
-    _ip_invoke_core(true, *args)
-  end
-
-  def _tk_call_core(enc_mode, *args)
-    ### puts args.inspect if $DEBUG
-    #args.collect! {|x|ruby2tcl(x, enc_mode)}
-    #args.compact!
-    #args.flatten!
-    args = _conv_args([], enc_mode, *args)
-    puts 'invoke args => ' + args.inspect if $DEBUG
-    ### print "=> ", args.join(" ").inspect, "\n" if $DEBUG
-    begin
-      # res = INTERP._invoke(*args).taint
-      # res = INTERP._invoke(enc_mode, *args)
-      res = _ip_invoke_core(enc_mode, *args)
-      # >>>>>  _invoke returns a TAINTED string  <<<<<
-    rescue NameError => err
-      # err = $!
-      begin
-        args.unshift "unknown"
-        #res = INTERP._invoke(*args).taint 
-        #res = INTERP._invoke(enc_mode, *args) 
-        res = _ip_invoke_core(enc_mode, *args) 
-        # >>>>>  _invoke returns a TAINTED string  <<<<<
-      rescue StandardError => err2
-        fail err2 unless /^invalid command/ =~ err2.message
-        fail err
-      end
-    end
-    if  INTERP._return_value() != 0
-      fail RuntimeError, res, error_at
-    end
-    ### print "==> ", res.inspect, "\n" if $DEBUG
-    return res
-  end
-  private :_tk_call_core
-
-  def tk_call(*args)
-    _tk_call_core(nil, *args)
-  end
-
-  def tk_call_without_enc(*args)
-    _tk_call_core(false, *args)
-  end
-
-  def tk_call_with_enc(*args)
-    _tk_call_core(true, *args)
-  end
-
-  def _tk_call_to_list_core(depth, arg_enc, val_enc, *args)
-    args = _conv_args([], arg_enc, *args)
-    val = _tk_call_core(false, *args)
-    if !depth.kind_of?(Integer) || depth == 0
-      tk_split_simplelist(val, false, val_enc)
-    else
-      tk_split_list(val, depth, false, val_enc)
-    end
-  end
-  #private :_tk_call_to_list_core
-
-  def tk_call_to_list(*args)
-    _tk_call_to_list_core(-1, nil, true, *args)
-  end
-
-  def tk_call_to_list_without_enc(*args)
-    _tk_call_to_list_core(-1, false, false, *args)
-  end
-
-  def tk_call_to_list_with_enc(*args)
-    _tk_call_to_list_core(-1, true, true, *args)
-  end
-
-  def tk_call_to_simplelist(*args)
-    _tk_call_to_list_core(0, nil, true, *args)
-  end
-
-  def tk_call_to_simplelist_without_enc(*args)
-    _tk_call_to_list_core(0, false, false, *args)
-  end
-
-  def tk_call_to_simplelist_with_enc(*args)
-    _tk_call_to_list_core(0, true, true, *args)
-  end
-end
-
-
-module Tk
-  include TkCore
-  extend Tk
-
-  TCL_VERSION = INTERP._invoke_without_enc("info", "tclversion").freeze
-  TCL_PATCHLEVEL = INTERP._invoke_without_enc("info", "patchlevel").freeze
-
-  major, minor = TCL_VERSION.split('.')
-  TCL_MAJOR_VERSION = major.to_i
-  TCL_MINOR_VERSION = minor.to_i
-
-  TK_VERSION  = INTERP._invoke_without_enc("set", "tk_version").freeze
-  TK_PATCHLEVEL  = INTERP._invoke_without_enc("set", "tk_patchLevel").freeze
-
-  major, minor = TK_VERSION.split('.')
-  TK_MAJOR_VERSION = major.to_i
-  TK_MINOR_VERSION = minor.to_i
-
-  JAPANIZED_TK = (INTERP._invoke_without_enc("info", "commands", 
-                                             "kanji") != "").freeze
-
-  def Tk.const_missing(sym)
-    case(sym)
-    when :TCL_LIBRARY
-      INTERP._invoke_without_enc('global', 'tcl_library')
-      INTERP._invoke("set", "tcl_library").freeze
-
-    when :TK_LIBRARY
-      INTERP._invoke_without_enc('global', 'tk_library')
-      INTERP._invoke("set", "tk_library").freeze
-
-    when :LIBRARY
-      INTERP._invoke("info", "library").freeze
-
-    #when :PKG_PATH, :PACKAGE_PATH, :TCL_PACKAGE_PATH
-    #  INTERP._invoke_without_enc('global', 'tcl_pkgPath')
-    #  tk_split_simplelist(INTERP._invoke('set', 'tcl_pkgPath'))
-
-    #when :LIB_PATH, :LIBRARY_PATH, :TCL_LIBRARY_PATH
-    #  INTERP._invoke_without_enc('global', 'tcl_libPath')
-    #  tk_split_simplelist(INTERP._invoke('set', 'tcl_libPath'))
-
-    when :PLATFORM, :TCL_PLATFORM
-      if $SAFE >= 4
-        fail SecurityError, "can't get #{sym} when $SAFE >= 4"
-      end
-      INTERP._invoke_without_enc('global', 'tcl_platform')
-      Hash[*tk_split_simplelist(INTERP._invoke_without_enc('array', 'get', 
-                                                           'tcl_platform'))]
-
-    when :ENV
-      INTERP._invoke_without_enc('global', 'env')
-      Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'env'))]
-
-    #when :AUTO_PATH   #<=== 
-    #  tk_split_simplelist(INTERP._invoke('set', 'auto_path'))
-
-    #when :AUTO_OLDPATH
-    #  tk_split_simplelist(INTERP._invoke('set', 'auto_oldpath'))
-
-    when :AUTO_INDEX
-      INTERP._invoke_without_enc('global', 'auto_index')
-      Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'auto_index'))]
-
-    when :PRIV, :PRIVATE, :TK_PRIV
-      priv = {}
-      if INTERP._invoke_without_enc('info', 'vars', 'tk::Priv') != ""
-        var_nam = 'tk::Priv'
-      else
-        var_nam = 'tkPriv'
-      end
-      INTERP._invoke_without_enc('global', var_nam)
-      Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 
-                                               var_nam))].each{|k,v|
-        k.freeze
-        case v
-        when /^-?\d+$/
-          priv[k] = v.to_i
-        when /^-?\d+\.?\d*(e[-+]?\d+)?$/
-          priv[k] = v.to_f
-        else
-          priv[k] = v.freeze
-        end
-      }
-      priv
-
-    else
-      raise NameError, 'uninitialized constant Tk::' + sym.id2name
-    end
-  end
-
-  def Tk.errorInfo
-    INTERP._invoke_without_enc('global', 'errorInfo')
-    INTERP._invoke_without_enc('set', 'errorInfo')
-  end
-
-  def Tk.errorCode
-    INTERP._invoke_without_enc('global', 'errorCode')
-    code = tk_split_simplelist(INTERP._invoke_without_enc('set', 'errorCode'))
-    case code[0]
-    when 'CHILDKILLED', 'CHILDSTATUS', 'CHILDSUSP'
-      begin
-        pid = Integer(code[1])
-        code[1] = pid
-      rescue
-      end
-    end
-    code
-  end
-
-  def Tk.has_mainwindow?
-    INTERP.has_mainwindow?
-  end
-
-  def root
-    TkRoot.new
-  end
-
-  def Tk.load_tclscript(file, enc=nil)
-    if enc
-      # TCL_VERSION >= 8.5
-      tk_call('source', '-encoding', enc, file)
-    else
-      tk_call('source', file)
-    end
-  end
-
-  def Tk.load_tcllibrary(file, pkg_name=None, interp=None)
-    tk_call('load', file, pkg_name, interp)
-  end
-
-  def Tk.unload_tcllibrary(*args)
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-      nocomp = (keys['nocomplain'])? '-nocomplain': None
-      keeplib = (keys['keeplibrary'])? '-keeplibrary': None
-      tk_call('unload', nocomp, keeplib, '--', *args)
-    else
-      tk_call('unload', *args)
-    end
-  end
-
-  def Tk.pkgconfig_list(mod)
-    # Tk8.5 feature
-    if mod.kind_of?(Module)
-      if mod.respond_to?(:package_name)
-        pkgname = mod.package_name
-      elsif mod.const_defined?(:PACKAGE_NAME)
-        pkgname = mod::PACKAGE_NAME
-      else
-        fail NotImplementedError, 'may not be a module for a Tcl extension'
-      end
-    else
-      pkgname = mod.to_s
-    end
-
-    pkgname = '::' << pkgname unless pkgname =~ /^::/
-
-    tk_split_list(tk_call(pkgname + '::pkgconfig', 'list'))
-  end
-
-  def Tk.pkgconfig_get(mod, key)
-    # Tk8.5 feature
-    if mod.kind_of?(Module)
-      if mod.respond_to?(:package_name)
-        pkgname = mod.package_name
-      else
-        fail NotImplementedError, 'may not be a module for a Tcl extension'
-      end
-    else
-      pkgname = mod.to_s
-    end
-
-    pkgname = '::' << pkgname unless pkgname =~ /^::/
-
-    tk_call(pkgname + '::pkgconfig', 'get', key)
-  end
-
-  def Tk.tcl_pkgconfig_list
-    # Tk8.5 feature
-    Tk.pkgconfig_list('::tcl')
-  end
-
-  def Tk.tcl_pkgconfig_get(key)
-    # Tk8.5 feature
-    Tk.pkgconfig_get('::tcl', key)
-  end
-
-  def Tk.tk_pkgconfig_list
-    # Tk8.5 feature
-    Tk.pkgconfig_list('::tk')
-  end
-
-  def Tk.tk_pkgconfig_get(key)
-    # Tk8.5 feature
-    Tk.pkgconfig_get('::tk', key)
-  end
-
-  def Tk.bell(nice = false)
-    if nice
-      tk_call_without_enc('bell', '-nice')
-    else
-      tk_call_without_enc('bell')
-    end
-    nil
-  end
-
-  def Tk.bell_on_display(win, nice = false)
-    if nice
-      tk_call_without_enc('bell', '-displayof', win, '-nice')
-    else
-      tk_call_without_enc('bell', '-displayof', win)
-    end
-    nil
-  end
-
-  def Tk.destroy(*wins)
-    #tk_call_without_enc('destroy', *wins)
-    tk_call_without_enc('destroy', *(wins.collect{|win|
-                                       if win.kind_of?(TkWindow)
-                                         win.epath
-                                       else
-                                         win
-                                       end
-                                     }))
-  end
-
-  def Tk.exit
-    tk_call_without_enc('destroy', '.')
-  end
-
-  def Tk.pack(*args)
-    TkPack.configure(*args)
-  end
-  def Tk.pack_forget(*args)
-    TkPack.forget(*args)
-  end
-  def Tk.unpack(*args)
-    TkPack.forget(*args)
-  end
-
-  def Tk.grid(*args)
-    TkGrid.configure(*args)
-  end
-  def Tk.grid_forget(*args)
-    TkGrid.forget(*args)
-  end
-  def Tk.ungrid(*args)
-    TkGrid.forget(*args)
-  end
-
-  def Tk.place(*args)
-    TkPlace.configure(*args)
-  end
-  def Tk.place_forget(*args)
-    TkPlace.forget(*args)
-  end
-  def Tk.unplace(*args)
-    TkPlace.forget(*args)
-  end
-
-  def Tk.update(idle=nil)
-    if idle
-      tk_call_without_enc('update', 'idletasks')
-    else
-      tk_call_without_enc('update')
-    end
-  end
-  def Tk.update_idletasks
-    update(true)
-  end
-  def update(idle=nil)
-    # only for backward compatibility (This never be recommended to use)
-    Tk.update(idle)
-    self
-  end
-
-  # NOTE::
-  #   If no eventloop-thread is running, "thread_update" method is same 
-  #   to "update" method. Else, "thread_update" method waits to complete 
-  #   idletask operation on the eventloop-thread. 
-  def Tk.thread_update(idle=nil)
-    if idle
-      tk_call_without_enc('thread_update', 'idletasks')
-    else
-      tk_call_without_enc('thread_update')
-    end
-  end
-  def Tk.thread_update_idletasks
-    thread_update(true)
-  end
-
-  def Tk.lower_window(win, below=None)
-    tk_call('lower', _epath(win), _epath(below))
-    nil
-  end
-  def Tk.raise_window(win, above=None)
-    tk_call('raise', _epath(win), _epath(above))
-    nil
-  end
-
-  def Tk.current_grabs(win = nil)
-    if win
-      window(tk_call_without_enc('grab', 'current', win))
-    else
-      tk_split_list(tk_call_without_enc('grab', 'current'))
-    end
-  end
-
-  def Tk.focus(display=nil)
-    if display == nil
-      window(tk_call_without_enc('focus'))
-    else
-      window(tk_call_without_enc('focus', '-displayof', display))
-    end
-  end
-
-  def Tk.focus_to(win, force=false)
-    if force
-      tk_call_without_enc('focus', '-force', win)
-    else
-      tk_call_without_enc('focus', win)
-    end
-  end
-
-  def Tk.focus_lastfor(win)
-    window(tk_call_without_enc('focus', '-lastfor', win))
-  end
-
-  def Tk.focus_next(win)
-    TkManageFocus.next(win)
-  end
-
-  def Tk.focus_prev(win)
-    TkManageFocus.prev(win)
-  end
-
-  def Tk.strictMotif(mode=None)
-    bool(tk_call_without_enc('set', 'tk_strictMotif', mode))
-  end
-
-  def Tk.show_kinsoku(mode='both')
-    begin
-      if /^8\.*/ === TK_VERSION  && JAPANIZED_TK
-        tk_split_simplelist(tk_call('kinsoku', 'show', mode))
-      end
-    rescue
-    end
-  end
-  def Tk.add_kinsoku(chars, mode='both')
-    begin
-      if /^8\.*/ === TK_VERSION  && JAPANIZED_TK
-        tk_split_simplelist(tk_call('kinsoku', 'add', mode, 
-                                    *(chars.split(''))))
-      else
-        []
-      end
-    rescue
-      []
-    end
-  end
-  def Tk.delete_kinsoku(chars, mode='both')
-    begin
-      if /^8\.*/ === TK_VERSION  && JAPANIZED_TK
-        tk_split_simplelist(tk_call('kinsoku', 'delete', mode, 
-                            *(chars.split(''))))
-      end
-    rescue
-    end
-  end
-
-  def Tk.toUTF8(str, encoding = nil)
-    _toUTF8(str, encoding)
-  end
-  
-  def Tk.fromUTF8(str, encoding = nil)
-    _fromUTF8(str, encoding)
-  end
-end
-
-###########################################
-#  string with Tcl's encoding
-###########################################
-module Tk
-  def Tk.subst_utf_backslash(str)
-    Tk::EncodedString.subst_utf_backslash(str)
-  end
-  def Tk.subst_tk_backslash(str)
-    Tk::EncodedString.subst_tk_backslash(str)
-  end
-  def Tk.utf_to_backslash_sequence(str)
-    Tk::EncodedString.utf_to_backslash_sequence(str)
-  end
-  def Tk.utf_to_backslash(str)
-    Tk::EncodedString.utf_to_backslash_sequence(str)
-  end
-  def Tk.to_backslash_sequence(str)
-    Tk::EncodedString.to_backslash_sequence(str)
-  end
-end
-
-
-###########################################
-#  convert kanji string to/from utf-8
-###########################################
-if (/^(8\.[1-9]|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK)
-  class TclTkIp
-    # from tkencoding.rb by ttate at jaist.ac.jp
-    attr_accessor :encoding
-
-    alias __eval _eval
-    alias __invoke _invoke
-
-    alias __toUTF8 _toUTF8
-    alias __fromUTF8 _fromUTF8
-
-=begin
-    #### --> definition is moved to TclTkIp module
-
-    def _toUTF8(str, encoding = nil)
-      # decide encoding
-      if encoding
-        encoding = encoding.to_s
-      elsif str.kind_of?(Tk::EncodedString) && str.encoding != nil
-        encoding = str.encoding.to_s
-      elsif str.instance_variable_get(:@encoding)
-        encoding = str.instance_variable_get(:@encoding).to_s
-      elsif defined?(@encoding) && @encoding != nil
-        encoding = @encoding.to_s
-      else
-        encoding = __invoke('encoding', 'system')
-      end
-
-      # convert
-      case encoding
-      when 'utf-8', 'binary'
-        str
-      else
-        __toUTF8(str, encoding)
-      end
-    end
-
-    def _fromUTF8(str, encoding = nil)
-      unless encoding
-        if defined?(@encoding) && @encoding != nil
-          encoding = @encoding.to_s
-        else
-          encoding = __invoke('encoding', 'system')
-        end
-      end
-
-      if str.kind_of?(Tk::EncodedString)
-        if str.encoding == 'binary'
-          str
-        else
-          __fromUTF8(str, encoding)
-        end
-      elsif str.instance_variable_get(:@encoding).to_s == 'binary'
-        str
-      else
-        __fromUTF8(str, encoding)
-      end
-    end
-=end
-
-    def _eval(cmd)
-      _fromUTF8(__eval(_toUTF8(cmd)))
-    end
-
-    def _invoke(*cmds)
-      _fromUTF8(__invoke(*(cmds.collect{|cmd| _toUTF8(cmd)})))
-    end
-
-    alias _eval_with_enc _eval
-    alias _invoke_with_enc _invoke
-
-=begin
-    def _eval(cmd)
-      if defined?(@encoding) && @encoding != 'utf-8'
-        ret = if cmd.kind_of?(Tk::EncodedString)
-                case cmd.encoding
-                when 'utf-8', 'binary'
-                  __eval(cmd)
-                else
-                  __eval(_toUTF8(cmd, cmd.encoding))
-                end
-              elsif cmd.instance_variable_get(:@encoding) == 'binary'
-                __eval(cmd)
-              else
-                __eval(_toUTF8(cmd, @encoding))
-              end
-        if ret.kind_of?(String) && ret.instance_variable_get(:@encoding) == 'binary'
-          ret
-        else
-          _fromUTF8(ret, @encoding)
-        end
-      else
-        __eval(cmd)
-      end
-    end
-
-    def _invoke(*cmds)
-      if defined?(@encoding) && @encoding != 'utf-8'
-        cmds = cmds.collect{|cmd|
-          if cmd.kind_of?(Tk::EncodedString)
-            case cmd.encoding
-            when 'utf-8', 'binary'
-              cmd
-            else
-              _toUTF8(cmd, cmd.encoding)
-            end
-          elsif cmd.instance_variable_get(:@encoding) == 'binary'
-            cmd
-          else
-            _toUTF8(cmd, @encoding)
-          end
-        }
-        ret = __invoke(*cmds)
-        if ret.kind_of?(String) && ret.instance_variable_get(:@encoding) == 'binary'
-          ret
-        else
-          _fromUTF8(ret, @encoding)
-        end
-      else
-        __invoke(*cmds)
-        end
-    end
-=end
-  end
-
-  module TclTkLib
-    class << self
-      alias _encoding encoding
-      alias _encoding= encoding=
-      def encoding=(name)
-        TkCore::INTERP.encoding = name
-      end
-      def encoding
-        TkCore::INTERP.encoding
-      end
-    end
-  end
-
-  module Tk
-    module Encoding
-      extend Encoding
-
-      TkCommandNames = ['encoding'.freeze].freeze
-
-      def encoding=(name)
-        TkCore::INTERP.encoding = name
-      end
-
-      def encoding
-        TkCore::INTERP.encoding
-      end
-
-      def encoding_names
-        TkComm.simplelist(Tk.tk_call('encoding', 'names'))
-      end
-
-      def encoding_system
-        Tk.tk_call('encoding', 'system')
-      end
-
-      def encoding_system=(enc)
-        Tk.tk_call('encoding', 'system', enc)
-      end
-
-      def encoding_convertfrom(str, enc=nil)
-        # str is an usual enc string or a Tcl's internal string expression
-        # in enc (which is returned from 'encoding_convertto' method). 
-        # the return value is a UTF-8 string.
-        enc = encoding_system unless enc
-        ret = TkCore::INTERP.__invoke('encoding', 'convertfrom', enc, str)
-        ret.instance_variable_set('@encoding', 'utf-8')
-        ret
-      end
-      alias encoding_convert_from encoding_convertfrom
-
-      def encoding_convertto(str, enc=nil)
-        # str must be a UTF-8 string.
-        # The return value is a Tcl's internal string expression in enc. 
-        # To get an usual enc string, use Tk.fromUTF8(ret_val, enc).
-        enc = encoding_system unless enc
-        ret = TkCore::INTERP.__invoke('encoding', 'convertto', enc, str)
-        ret.instance_variable_set('@encoding', 'binary')
-        ret
-      end
-      alias encoding_convert_to encoding_convertto
-
-      def encoding_dirs
-        # Tcl8.5 feature
-        TkComm.simplelist(Tk.tk_call_without_enc('encoding', 'dirs'))
-      end
-
-      def encoding_dirs=(dir_list) # an array or a Tcl's list string
-        # Tcl8.5 feature
-        Tk.tk_call_without_enc('encoding', 'dirs', dir_list)
-      end
-    end
-
-    extend Encoding
-  end
-
-  # estimate encoding
-  case $KCODE
-  when /^e/i  # EUC
-    Tk.encoding = 'euc-jp'
-    Tk.encoding_system = 'euc-jp'
-  when /^s/i  # SJIS
-    begin
-      if Tk.encoding_system == 'cp932'
-        Tk.encoding = 'cp932'
-      else
-        Tk.encoding = 'shiftjis'
-        Tk.encoding_system = 'shiftjis'
-      end
-    rescue StandardError, NameError
-      Tk.encoding = 'shiftjis'
-      Tk.encoding_system = 'shiftjis'
-    end
-  when /^u/i  # UTF8
-    Tk.encoding = 'utf-8'
-    Tk.encoding_system = 'utf-8'
-  else        # NONE
-    if defined? DEFAULT_TK_ENCODING
-      Tk.encoding_system = DEFAULT_TK_ENCODING
-    end
-    begin
-      Tk.encoding = Tk.encoding_system
-    rescue StandardError, NameError
-      Tk.encoding = 'utf-8'
-      Tk.encoding_system = 'utf-8'
-    end
-  end
-
-else
-  # dummy methods
-  class TclTkIp
-    attr_accessor :encoding
-
-    alias __eval _eval
-    alias __invoke _invoke
-
-    alias _eval_with_enc _eval
-    alias _invoke_with_enc _invoke
-  end
-
-  module Tk
-    module Encoding
-      extend Encoding
-
-      def encoding=(name)
-        nil
-      end
-      def encoding
-        nil
-      end
-      def encoding_names
-        nil
-      end
-      def encoding_system
-        nil
-      end
-      def encoding_system=(enc)
-        nil
-      end
-
-      def encoding_convertfrom(str, enc=None)
-        str
-      end
-      alias encoding_convert_from encoding_convertfrom
-
-      def encoding_convertto(str, enc=None)
-        str
-      end
-      alias encoding_convert_to encoding_convertto
-      def encoding_dirs
-        nil
-      end
-      def encoding_dirs=(dir_array)
-        nil
-      end
-    end
-
-    extend Encoding
-  end
-end
-
-
-module TkBindCore
-  #def bind(context, cmd=Proc.new, *args)
-  #  Tk.bind(self, context, cmd, *args)
-  #end
-  def bind(context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    Tk.bind(self, context, cmd, *args)
-  end
-
-  #def bind_append(context, cmd=Proc.new, *args)
-  #  Tk.bind_append(self, context, cmd, *args)
-  #end
-  def bind_append(context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    Tk.bind_append(self, context, cmd, *args)
-  end
-
-  def bind_remove(context)
-    Tk.bind_remove(self, context)
-  end
-
-  def bindinfo(context=nil)
-    Tk.bindinfo(self, context)
-  end
-end
-
-
-module TkTreatFont
-  def __font_optkeys
-    ['font']
-  end
-  private :__font_optkeys
-
-  def __pathname
-    self.path
-  end
-  private :__pathname
-
-  ################################
-
-  def font_configinfo(key = nil)
-    optkeys = __font_optkeys
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __pathname.split(':')
-
-    if key
-      pathname = [win, tag, key].join(';')
-      TkFont.used_on(pathname) || 
-        TkFont.init_widget_font(pathname, *__confinfo_cmd)
-    elsif optkeys.size == 1
-      pathname = [win, tag, optkeys[0]].join(';')
-      TkFont.used_on(pathname) || 
-        TkFont.init_widget_font(pathname, *__confinfo_cmd)
-    else
-      fonts = {}
-      optkeys.each{|key|
-        key = key.to_s
-        pathname = [win, tag, key].join(';')
-        fonts[key] = 
-          TkFont.used_on(pathname) || 
-          TkFont.init_widget_font(pathname, *__confinfo_cmd)
-      }
-      fonts
-    end
-  end
-  alias fontobj font_configinfo
-
-  def font_configure(slot)
-    pathname = __pathname
-
-    slot = _symbolkey2str(slot)
-
-    __font_optkeys.each{|optkey|
-      optkey = optkey.to_s
-      l_optkey = 'latin' << optkey
-      a_optkey = 'ascii' << optkey
-      k_optkey = 'kanji' << optkey
-
-      if slot.key?(optkey)
-        fnt = slot.delete(optkey)
-        if fnt.kind_of?(TkFont)
-          slot.delete(l_optkey)
-          slot.delete(a_optkey)
-          slot.delete(k_optkey)
-
-          fnt.call_font_configure([pathname, optkey], *(__config_cmd << {}))
-          next
-        else
-          if fnt
-            if (slot.key?(l_optkey) || 
-                slot.key?(a_optkey) || 
-                slot.key?(k_optkey))
-              fnt = TkFont.new(fnt)
-
-              lfnt = slot.delete(l_optkey)
-              lfnt = slot.delete(a_optkey) if slot.key?(a_optkey)
-              kfnt = slot.delete(k_optkey)
-
-              fnt.latin_replace(lfnt) if lfnt
-              fnt.kanji_replace(kfnt) if kfnt
-
-              fnt.call_font_configure([pathname, optkey], 
-                                      *(__config_cmd << {}))
-              next
-            else
-              fnt = hash_kv(fnt) if fnt.kind_of?(Hash)
-              tk_call(*(__config_cmd << "-#{optkey}" << fnt))
-            end
-          end
-          next
-        end
-      end
-
-      lfnt = slot.delete(l_optkey)
-      lfnt = slot.delete(a_optkey) if slot.key?(a_optkey)
-      kfnt = slot.delete(k_optkey)
-
-      if lfnt && kfnt
-        TkFont.new(lfnt, kfnt).call_font_configure([pathname, optkey], 
-                                                   *(__config_cmd << {}))
-      elsif lfnt
-        latinfont_configure([lfnt, optkey])
-      elsif kfnt
-        kanjifont_configure([kfnt, optkey])
-      end
-    }
-
-    # configure other (without font) options
-    tk_call(*(__config_cmd.concat(hash_kv(slot)))) if slot != {}
-    self
-  end
-
-  def latinfont_configure(ltn, keys=nil)
-    if ltn.kind_of?(Array)
-      key = ltn[1]
-      ltn = ltn[0]
-    else
-      key = nil
-    end
-
-    optkeys = __font_optkeys
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __pathname.split(':')
-
-    optkeys = [key] if key
-
-    optkeys.each{|optkey|
-      optkey = optkey.to_s
-
-      pathname = [win, tag, optkey].join(';')
-
-      if (fobj = TkFont.used_on(pathname))
-        fobj = TkFont.new(fobj) # create a new TkFont object
-      elsif Tk::JAPANIZED_TK
-        fobj = fontobj          # create a new TkFont object
-      else
-        ltn = hash_kv(ltn) if ltn.kind_of?(Hash)
-        tk_call(*(__config_cmd << "-#{optkey}" << ltn))
-        next
-      end
-
-      if fobj.kind_of?(TkFont)
-        if ltn.kind_of?(TkFont)
-          conf = {}
-          ltn.latin_configinfo.each{|key,val| conf[key] = val}
-          if keys
-            fobj.latin_configure(conf.update(keys))
-          else
-            fobj.latin_configure(conf)
-          end
-        else
-          fobj.latin_replace(ltn)
-        end
-      end
-
-      fobj.call_font_configure([pathname, optkey], *(__config_cmd << {}))
-    }
-    self
-  end
-  alias asciifont_configure latinfont_configure
-
-  def kanjifont_configure(knj, keys=nil)
-    if knj.kind_of?(Array)
-      key = knj[1]
-      knj = knj[0]
-    else
-      key = nil
-    end
-
-    optkeys = __font_optkeys
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __pathname.split(':')
-
-    optkeys = [key] if key
-
-    optkeys.each{|optkey|
-      optkey = optkey.to_s
-
-      pathname = [win, tag, optkey].join(';')
-
-      if (fobj = TkFont.used_on(pathname))
-        fobj = TkFont.new(fobj) # create a new TkFont object
-      elsif Tk::JAPANIZED_TK
-        fobj = fontobj          # create a new TkFont object
-      else
-        knj = hash_kv(knj) if knj.kind_of?(Hash)
-        tk_call(*(__config_cmd << "-#{optkey}" << knj))
-        next
-      end
-
-      if fobj.kind_of?(TkFont)
-        if knj.kind_of?(TkFont)
-          conf = {}
-          knj.kanji_configinfo.each{|key,val| conf[key] = val}
-          if keys
-            fobj.kanji_configure(conf.update(keys))
-          else
-            fobj.kanji_configure(conf)
-          end
-        else
-          fobj.kanji_replace(knj)
-        end
-      end
-
-      fobj.call_font_configure([pathname, optkey], *(__config_cmd << {}))
-    }
-    self
-  end
-
-  def font_copy(win, wintag=nil, winkey=nil, targetkey=nil)
-    if wintag
-      if winkey
-        fnt = win.tagfontobj(wintag, winkey).dup
-      else
-        fnt = win.tagfontobj(wintag).dup
-      end
-    else
-      if winkey
-        fnt = win.fontobj(winkey).dup
-      else
-        fnt = win.fontobj.dup
-      end
-    end
-
-    if targetkey
-      fnt.call_font_configure([__pathname, targetkey], *(__config_cmd << {}))
-    else
-      fnt.call_font_configure(__pathname, *(__config_cmd << {}))
-    end
-    self
-  end
-
-  def latinfont_copy(win, wintag=nil, winkey=nil, targetkey=nil)
-    if targetkey
-      fontobj(targetkey).dup.call_font_configure([__pathname, targetkey], 
-                                                 *(__config_cmd << {}))
-    else
-      fontobj.dup.call_font_configure(__pathname, *(__config_cmd << {}))
-    end
-
-    if wintag
-      if winkey
-        fontobj.latin_replace(win.tagfontobj(wintag, winkey).latin_font_id)
-      else
-        fontobj.latin_replace(win.tagfontobj(wintag).latin_font_id)
-      end
-    else
-      if winkey
-        fontobj.latin_replace(win.fontobj(winkey).latin_font_id)
-      else
-        fontobj.latin_replace(win.fontobj.latin_font_id)
-      end
-    end
-    self
-  end
-  alias asciifont_copy latinfont_copy
-
-  def kanjifont_copy(win, wintag=nil, winkey=nil, targetkey=nil)
-    if targetkey
-      fontobj(targetkey).dup.call_font_configure([__pathname, targetkey], 
-                                                 *(__config_cmd << {}))
-    else
-        fontobj.dup.call_font_configure(__pathname, *(__config_cmd << {}))
-    end
-
-    if wintag
-      if winkey
-        fontobj.kanji_replace(win.tagfontobj(wintag, winkey).kanji_font_id)
-      else
-        fontobj.kanji_replace(win.tagfontobj(wintag).kanji_font_id)
-      end
-    else
-      if winkey
-        fontobj.kanji_replace(win.fontobj(winkey).kanji_font_id)
-      else
-        fontobj.kanji_replace(win.fontobj.kanji_font_id)
-      end
-    end
-    self
-  end
-end
-
-
-module TkConfigMethod
-  include TkUtil
-  include TkTreatFont
-
-  def __cget_cmd
-    [self.path, 'cget']
-  end
-  private :__cget_cmd
-
-  def __config_cmd
-    [self.path, 'configure']
-  end
-  private :__config_cmd
-
-  def __confinfo_cmd
-    __config_cmd
-  end
-  private :__confinfo_cmd
-
-  def __configinfo_struct
-    {:key=>0, :alias=>1, :db_name=>1, :db_class=>2, 
-      :default_value=>3, :current_value=>4}
-  end
-  private :__configinfo_struct
-
-  def __numval_optkeys
-    []
-  end
-  private :__numval_optkeys
-
-  def __numstrval_optkeys
-    []
-  end
-  private :__numstrval_optkeys
-
-  def __boolval_optkeys
-    ['exportselection', 'jump', 'setgrid', 'takefocus']
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    [
-      'text', 'label', 'show', 'data', 'file', 
-      'activebackground', 'activeforeground', 'background', 
-      'disabledforeground', 'disabledbackground', 'foreground', 
-      'highlightbackground', 'highlightcolor', 'insertbackground', 
-      'selectbackground', 'selectforeground', 'troughcolor'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    []
-  end
-  private :__listval_optkeys
-
-  def __numlistval_optkeys
-    []
-  end
-  private :__numlistval_optkeys
-
-  def __tkvariable_optkeys
-    ['variable', 'textvariable']
-  end
-  private :__tkvariable_optkeys
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    # The method is used to convert a opt-value to a ruby's object.
-    # When get the value of the option "key", "proc.call(value)" is called.
-    {}
-  end
-  private :__val2ruby_optkeys
-
-  def __ruby2val_optkeys  # { key=>proc, ... }
-    # The method is used to convert a ruby's object to a opt-value.
-    # When set the value of the option "key", "proc.call(value)" is called.
-    # That is, "-#{key} #{proc.call(value)}".
-    {}
-  end
-  private :__ruby2val_optkeys
-
-  def __methodcall_optkeys  # { key=>method, ... }
-    # The method is used to both of get and set.
-    # Usually, the 'key' will not be a widget option.
-    {}
-  end
-  private :__methodcall_optkeys
-
-  def __keyonly_optkeys  # { def_key=>undef_key or nil, ... }
-    {}
-  end
-  private :__keyonly_optkeys
-
-  def __conv_keyonly_opts(keys)
-    return keys unless keys.kind_of?(Hash)
-    keyonly = __keyonly_optkeys
-    keys2 = {}
-    keys.each{|k, v|
-      optkey = keyonly.find{|kk,vv| kk.to_s == k.to_s}
-      if optkey
-        defkey, undefkey = optkey
-        if v
-          keys2[defkey.to_s] = None
-        elsif undefkey
-          keys2[undefkey.to_s] = None
-        else
-          # remove key
-        end
-      else
-        keys2[k.to_s] = v
-      end
-    }
-    keys2
-  end
-  private :__conv_keyonly_opts
-
-  def config_hash_kv(keys, enc_mode = nil, conf = nil)
-    hash_kv(__conv_keyonly_opts(keys), enc_mode, conf)
-  end
-
-  ################################
-
-  def [](id)
-    cget(id)
-  end
-
-  def []=(id, val)
-    configure(id, val)
-    val
-  end
-
-  def cget(slot)
-    orig_slot = slot
-    slot = slot.to_s
- 
-   if slot.length == 0
-      fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
-    end
-
-    if ( method = _symbolkey2str(__val2ruby_optkeys())[slot] )
-      optval = tk_call_without_enc(*(__cget_cmd << "-#{slot}"))
-      begin
-        return method.call(optval)
-      rescue => e
-        warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-        return optval
-      end
-    end
-
-    if ( method = _symbolkey2str(__methodcall_optkeys)[slot] )
-      return self.__send__(method)
-    end
-
-    case slot
-    when /^(#{__numval_optkeys.join('|')})$/
-      begin
-        number(tk_call_without_enc(*(__cget_cmd << "-#{slot}")))
-      rescue
-        nil
-      end
-
-    when /^(#{__numstrval_optkeys.join('|')})$/
-      num_or_str(tk_call_without_enc(*(__cget_cmd << "-#{slot}")))
-
-    when /^(#{__boolval_optkeys.join('|')})$/
-      begin
-        bool(tk_call_without_enc(*(__cget_cmd << "-#{slot}")))
-      rescue
-        nil
-      end
-
-    when /^(#{__listval_optkeys.join('|')})$/
-      simplelist(tk_call_without_enc(*(__cget_cmd << "-#{slot}")))
-
-    when /^(#{__numlistval_optkeys.join('|')})$/
-      conf = tk_call_without_enc(*(__cget_cmd << "-#{slot}"))
-      if conf =~ /^[0-9+-]/
-        list(conf)
-      else
-        conf
-      end
-
-    when /^(#{__strval_optkeys.join('|')})$/
-      _fromUTF8(tk_call_without_enc(*(__cget_cmd << "-#{slot}")))
-
-    when /^(|latin|ascii|kanji)(#{__font_optkeys.join('|')})$/
-      fontcode = $1
-      fontkey  = $2
-      fnt = tk_tcl2ruby(tk_call_without_enc(*(__cget_cmd << "-#{fontkey}")), true)
-      unless fnt.kind_of?(TkFont)
-        fnt = fontobj(fontkey)
-      end
-      if fontcode == 'kanji' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-
-    when /^(#{__tkvariable_optkeys.join('|')})$/
-      v = tk_call_without_enc(*(__cget_cmd << "-#{slot}"))
-      (v.empty?)? nil: TkVarAccess.new(v)
-
-    else
-      tk_tcl2ruby(tk_call_without_enc(*(__cget_cmd << "-#{slot}")), true)
-    end
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of? Hash
-      slot = _symbolkey2str(slot)
-
-      __methodcall_optkeys.each{|key, method|
-        value = slot.delete(key.to_s)
-        self.__send__(method, value) if value
-      }
-
-      __ruby2val_optkeys.each{|key, method|
-        key = key.to_s
-        slot[key] = method.call(slot[key]) if slot.has_key?(key)
-      }
-
-      __keyonly_optkeys.each{|defkey, undefkey|
-        conf = slot.find{|kk, vv| kk == defkey.to_s}
-        if conf
-          k, v = conf
-          if v
-            slot[k] = None
-          else
-            slot[undefkey.to_s] = None if undefkey
-            slot.delete(k)
-          end
-        end
-      }
-
-      if (slot.find{|k, v| k =~ /^(|latin|ascii|kanji)(#{__font_optkeys.join('|')})$/})
-        font_configure(slot)
-      elsif slot.size > 0
-        tk_call(*(__config_cmd.concat(hash_kv(slot))))
-      end
-
-    else
-      orig_slot = slot
-      slot = slot.to_s
-      if slot.length == 0
-        fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
-      end
-
-      if ( conf = __keyonly_optkeys.find{|k, v| k.to_s == slot} )
-        defkey, undefkey = conf
-        if value
-          tk_call(*(__config_cmd << "-#{defkey}"))
-        elsif undefkey
-          tk_call(*(__config_cmd << "-#{undefkey}"))
-        end
-      elsif ( method = _symbolkey2str(__ruby2val_optkeys)[slot] )
-        tk_call(*(__config_cmd << "-#{slot}" << method.call(value)))
-      elsif ( method = _symbolkey2str(__methodcall_optkeys)[slot] )
-        self.__send__(method, value)
-      elsif (slot =~ /^(|latin|ascii|kanji)(#{__font_optkeys.join('|')})$/)
-        if value == None
-          fontobj($2)
-        else
-          font_configure({slot=>value})
-        end
-      else
-        tk_call(*(__config_cmd << "-#{slot}" << value))
-      end
-    end
-    self
-  end
-
-  def configure_cmd(slot, value)
-    configure(slot, install_cmd(value))
-  end
-
-  def configinfo(slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && 
-          slot.to_s =~ /^(|latin|ascii|kanji)(#{__font_optkeys.join('|')})$/)
-        fontkey  = $2
-        # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{fontkey}"))))
-        conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{fontkey}")), false, true)
-        conf[__configinfo_struct[:key]] = 
-          conf[__configinfo_struct[:key]][1..-1]
-        if ( ! __configinfo_struct[:alias] \
-            || conf.size > __configinfo_struct[:alias] + 1 )
-          conf[__configinfo_struct[:current_value]] = fontobj(fontkey)
-        elsif ( __configinfo_struct[:alias] \
-               && conf.size == __configinfo_struct[:alias] + 1 \
-               && conf[__configinfo_struct[:alias]][0] == ?- )
-          conf[__configinfo_struct[:alias]] = 
-            conf[__configinfo_struct[:alias]][1..-1]
-        end
-        conf
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__val2ruby_optkeys().keys.join('|')})$/
-            method = _symbolkey2str(__val2ruby_optkeys())[slot]
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd() << "-#{slot}")), false, true)
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              optval = conf[__configinfo_struct[:default_value]]
-              begin
-                val = method.call(optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__configinfo_struct[:default_value]] = val
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              optval = conf[__configinfo_struct[:current_value]]
-              begin
-                val = method.call(optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__configinfo_struct[:current_value]] = val
-            end
-
-          when /^(#{__methodcall_optkeys.keys.join('|')})$/
-            method = _symbolkey2str(__methodcall_optkeys)[slot]
-            return [slot, '', '', '', self.__send__(method)]
-
-          when /^(#{__numval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]])
-              begin
-                conf[__configinfo_struct[:default_value]] = 
-                  number(conf[__configinfo_struct[:default_value]])
-              rescue
-                conf[__configinfo_struct[:default_value]] = nil
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              begin
-                conf[__configinfo_struct[:current_value]] = 
-                  number(conf[__configinfo_struct[:current_value]])
-              rescue
-                conf[__configinfo_struct[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__numstrval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]])
-              conf[__configinfo_struct[:default_value]] = 
-                num_or_str(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              conf[__configinfo_struct[:current_value]] = 
-                num_or_str(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__boolval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]])
-              begin
-                conf[__configinfo_struct[:default_value]] = 
-                  bool(conf[__configinfo_struct[:default_value]])
-              rescue
-                conf[__configinfo_struct[:default_value]] = nil
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              begin
-                conf[__configinfo_struct[:current_value]] = 
-                  bool(conf[__configinfo_struct[:current_value]])
-              rescue
-                conf[__configinfo_struct[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__listval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]])
-              conf[__configinfo_struct[:default_value]] = 
-                simplelist(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              conf[__configinfo_struct[:current_value]] = 
-                simplelist(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__numlistval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] \
-                && conf[__configinfo_struct[:default_value]] =~ /^[0-9]/ )
-              conf[__configinfo_struct[:default_value]] = 
-                list(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] \
-                && conf[__configinfo_struct[:current_value]] =~ /^[0-9]/ )
-              conf[__configinfo_struct[:current_value]] = 
-                list(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__strval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-          when /^(#{__tkvariable_optkeys.join('|')})$/
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]])
-              v = conf[__configinfo_struct[:default_value]]
-              if v.empty?
-                conf[__configinfo_struct[:default_value]] = nil
-              else
-                conf[__configinfo_struct[:default_value]] = TkVarAccess.new(v)
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              v = conf[__configinfo_struct[:current_value]]
-              if v.empty?
-                conf[__configinfo_struct[:current_value]] = nil
-              else
-                conf[__configinfo_struct[:current_value]] = TkVarAccess.new(v)
-              end
-            end
-
-          else
-            # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_list(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), 0, false, true)
-          end
-          conf[__configinfo_struct[:key]] = 
-            conf[__configinfo_struct[:key]][1..-1]
-
-          if ( __configinfo_struct[:alias] \
-              && conf.size == __configinfo_struct[:alias] + 1 \
-              && conf[__configinfo_struct[:alias]][0] == ?- )
-            conf[__configinfo_struct[:alias]] = 
-              conf[__configinfo_struct[:alias]][1..-1]
-          end
-
-          conf
-
-        else
-          # ret = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*__confinfo_cmd))).collect{|conflist|
-          #  conf = tk_split_simplelist(conflist)
-          ret = tk_split_simplelist(tk_call_without_enc(*__confinfo_cmd), false, false).collect{|conflist|
-            conf = tk_split_simplelist(conflist, false, true)
-            conf[__configinfo_struct[:key]] = 
-              conf[__configinfo_struct[:key]][1..-1]
-
-            optkey = conf[__configinfo_struct[:key]]
-            case optkey
-            when /^(#{__val2ruby_optkeys().keys.join('|')})$/
-              method = _symbolkey2str(__val2ruby_optkeys())[optkey]
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                optval = conf[__configinfo_struct[:default_value]]
-                begin
-                  val = method.call(optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__configinfo_struct[:default_value]] = val
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                optval = conf[__configinfo_struct[:current_value]]
-                begin
-                  val = method.call(optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__configinfo_struct[:current_value]] = val
-              end
-
-            when /^(#{__strval_optkeys.join('|')})$/
-              # do nothing
-
-            when /^(#{__numval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                begin
-                  conf[__configinfo_struct[:default_value]] = 
-                    number(conf[__configinfo_struct[:default_value]])
-                rescue
-                  conf[__configinfo_struct[:default_value]] = nil
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                begin
-                  conf[__configinfo_struct[:current_value]] = 
-                    number(conf[__configinfo_struct[:current_value]])
-                rescue
-                  conf[__configinfo_struct[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__numstrval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                conf[__configinfo_struct[:default_value]] = 
-                  num_or_str(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                conf[__configinfo_struct[:current_value]] = 
-                  num_or_str(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__boolval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                begin
-                  conf[__configinfo_struct[:default_value]] = 
-                    bool(conf[__configinfo_struct[:default_value]])
-                rescue
-                  conf[__configinfo_struct[:default_value]] = nil
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                begin
-                  conf[__configinfo_struct[:current_value]] = 
-                    bool(conf[__configinfo_struct[:current_value]])
-                rescue
-                  conf[__configinfo_struct[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__listval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                conf[__configinfo_struct[:default_value]] = 
-                  simplelist(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                conf[__configinfo_struct[:current_value]] = 
-                  simplelist(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__numlistval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] \
-                  && conf[__configinfo_struct[:default_value]] =~ /^[0-9]/ )
-                conf[__configinfo_struct[:default_value]] = 
-                  list(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] \
-                  && conf[__configinfo_struct[:current_value]] =~ /^[0-9]/ )
-                conf[__configinfo_struct[:current_value]] = 
-                  list(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__tkvariable_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                v = conf[__configinfo_struct[:default_value]]
-                if v.empty?
-                  conf[__configinfo_struct[:default_value]] = nil
-                else
-                  conf[__configinfo_struct[:default_value]] = TkVarAccess.new(v)
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                v = conf[__configinfo_struct[:current_value]]
-                if v.empty?
-                  conf[__configinfo_struct[:current_value]] = nil
-                else
-                  conf[__configinfo_struct[:current_value]] = TkVarAccess.new(v)
-                end
-              end
-
-            else
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                if conf[__configinfo_struct[:default_value]].index('{')
-                  conf[__configinfo_struct[:default_value]] = 
-                    tk_split_list(conf[__configinfo_struct[:default_value]]) 
-                else
-                  conf[__configinfo_struct[:default_value]] = 
-                    tk_tcl2ruby(conf[__configinfo_struct[:default_value]]) 
-                end
-              end
-              if conf[__configinfo_struct[:current_value]]
-                if conf[__configinfo_struct[:current_value]].index('{')
-                  conf[__configinfo_struct[:current_value]] = 
-                    tk_split_list(conf[__configinfo_struct[:current_value]]) 
-                else
-                  conf[__configinfo_struct[:current_value]] = 
-                    tk_tcl2ruby(conf[__configinfo_struct[:current_value]]) 
-                end
-              end
-            end
-
-            if ( __configinfo_struct[:alias] \
-                && conf.size == __configinfo_struct[:alias] + 1 \
-                && conf[__configinfo_struct[:alias]][0] == ?- )
-              conf[__configinfo_struct[:alias]] = 
-                conf[__configinfo_struct[:alias]][1..-1]
-            end
-
-            conf
-          }
-
-          __font_optkeys.each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret.assoc(optkey)
-            if fontconf && fontconf.size > 2
-              ret.delete_if{|inf| inf[0] =~ /^(|latin|ascii|kanji)#{optkey}$/}
-              fontconf[__configinfo_struct[:current_value]] = fontobj(optkey)
-              ret.push(fontconf)
-            end
-          }
-
-          __methodcall_optkeys.each{|optkey, method|
-            ret << [optkey.to_s, '', '', '', self.__send__(method)]
-          }
-
-          ret
-        end
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && 
-          slot.to_s =~ /^(|latin|ascii|kanji)(#{__font_optkeys.join('|')})$/)
-        fontkey  = $2
-        # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{fontkey}"))))
-        conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{fontkey}")), false, true)
-        conf[__configinfo_struct[:key]] = 
-          conf[__configinfo_struct[:key]][1..-1]
-
-        if ( ! __configinfo_struct[:alias] \
-            || conf.size > __configinfo_struct[:alias] + 1 )
-          conf[__configinfo_struct[:current_value]] = fontobj(fontkey)
-          { conf.shift => conf }
-        elsif ( __configinfo_struct[:alias] \
-               && conf.size == __configinfo_struct[:alias] + 1 )
-          if conf[__configinfo_struct[:alias]][0] == ?-
-            conf[__configinfo_struct[:alias]] = 
-              conf[__configinfo_struct[:alias]][1..-1]
-          end
-          { conf[0] => conf[1] }
-        else
-          { conf.shift => conf }
-        end
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__val2ruby_optkeys().keys.join('|')})$/
-            method = _symbolkey2str(__val2ruby_optkeys())[slot]
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              optval = conf[__configinfo_struct[:default_value]]
-              begin
-                val = method.call(optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__configinfo_struct[:default_value]] = val
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              optval = conf[__configinfo_struct[:current_value]]
-              begin
-                val = method.call(optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__configinfo_struct[:current_value]] = val
-            end
-
-          when /^(#{__methodcall_optkeys.keys.join('|')})$/
-            method = _symbolkey2str(__methodcall_optkeys)[slot]
-            return {slot => ['', '', '', self.__send__(method)]}
-
-          when /^(#{__numval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              begin
-                conf[__configinfo_struct[:default_value]] = 
-                  number(conf[__configinfo_struct[:default_value]])
-              rescue
-                conf[__configinfo_struct[:default_value]] = nil
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              begin
-                conf[__configinfo_struct[:current_value]] = 
-                  number(conf[__configinfo_struct[:current_value]])
-              rescue
-                conf[__configinfo_struct[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__numstrval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              conf[__configinfo_struct[:default_value]] = 
-                num_or_str(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              conf[__configinfo_struct[:current_value]] = 
-                num_or_str(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__boolval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              begin
-                conf[__configinfo_struct[:default_value]] = 
-                  bool(conf[__configinfo_struct[:default_value]])
-              rescue
-                conf[__configinfo_struct[:default_value]] = nil
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              begin
-                conf[__configinfo_struct[:current_value]] = 
-                  bool(conf[__configinfo_struct[:current_value]])
-              rescue
-                conf[__configinfo_struct[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__listval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              conf[__configinfo_struct[:default_value]] = 
-                simplelist(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              conf[__configinfo_struct[:current_value]] = 
-                simplelist(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__numlistval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] \
-                && conf[__configinfo_struct[:default_value]] =~ /^[0-9]/ )
-              conf[__configinfo_struct[:default_value]] = 
-                list(conf[__configinfo_struct[:default_value]])
-            end
-            if ( conf[__configinfo_struct[:current_value]] \
-                && conf[__configinfo_struct[:current_value]] =~ /^[0-9]/ )
-              conf[__configinfo_struct[:current_value]] = 
-                list(conf[__configinfo_struct[:current_value]])
-            end
-
-          when /^(#{__tkvariable_optkeys.join('|')})$/
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-
-            if ( __configinfo_struct[:default_value] \
-                && conf[__configinfo_struct[:default_value]] )
-              v = conf[__configinfo_struct[:default_value]]
-              if v.empty?
-                conf[__configinfo_struct[:default_value]] = nil
-              else
-                conf[__configinfo_struct[:default_value]] = TkVarAccess.new(v)
-              end
-            end
-            if ( conf[__configinfo_struct[:current_value]] )
-              v = conf[__configinfo_struct[:current_value]]
-              if v.empty?
-                conf[__configinfo_struct[:current_value]] = nil
-              else
-                conf[__configinfo_struct[:current_value]] = TkVarAccess.new(v)
-              end
-            end
-
-          when /^(#{__strval_optkeys.join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), false, true)
-          else
-            # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}"))))
-            conf = tk_split_list(tk_call_without_enc(*(__confinfo_cmd << "-#{slot}")), 0, false, true)
-          end
-          conf[__configinfo_struct[:key]] = 
-            conf[__configinfo_struct[:key]][1..-1]
-
-          if ( __configinfo_struct[:alias] \
-              && conf.size == __configinfo_struct[:alias] + 1 )
-            if conf[__configinfo_struct[:alias]][0] == ?-
-              conf[__configinfo_struct[:alias]] = 
-                conf[__configinfo_struct[:alias]][1..-1]
-            end
-            { conf[0] => conf[1] }
-          else
-            { conf.shift => conf }
-          end
-
-        else
-          ret = {}
-          # tk_split_simplelist(_fromUTF8(tk_call_without_enc(*__confinfo_cmd))).each{|conflist|
-          #  conf = tk_split_simplelist(conflist)
-          tk_split_simplelist(tk_call_without_enc(*__confinfo_cmd), false, false).each{|conflist|
-            conf = tk_split_simplelist(conflist, false, true)
-            conf[__configinfo_struct[:key]] = 
-              conf[__configinfo_struct[:key]][1..-1]
-
-            optkey = conf[__configinfo_struct[:key]]
-            case optkey
-            when /^(#{__val2ruby_optkeys().keys.join('|')})$/
-              method = _symbolkey2str(__val2ruby_optkeys())[optkey]
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                optval = conf[__configinfo_struct[:default_value]]
-                begin
-                  val = method.call(optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__configinfo_struct[:default_value]] = val
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                optval = conf[__configinfo_struct[:current_value]]
-                begin
-                  val = method.call(optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__configinfo_struct[:current_value]] = val
-              end
-
-            when /^(#{__strval_optkeys.join('|')})$/
-              # do nothing
-
-            when /^(#{__numval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                begin
-                  conf[__configinfo_struct[:default_value]] = 
-                    number(conf[__configinfo_struct[:default_value]])
-                rescue
-                  conf[__configinfo_struct[:default_value]] = nil
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                begin
-                  conf[__configinfo_struct[:current_value]] = 
-                    number(conf[__configinfo_struct[:current_value]])
-                rescue
-                  conf[__configinfo_struct[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__numstrval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                conf[__configinfo_struct[:default_value]] = 
-                  num_or_str(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                conf[__configinfo_struct[:current_value]] = 
-                  num_or_str(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__boolval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                begin
-                  conf[__configinfo_struct[:default_value]] = 
-                    bool(conf[__configinfo_struct[:default_value]])
-                rescue
-                  conf[__configinfo_struct[:default_value]] = nil
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                begin
-                  conf[__configinfo_struct[:current_value]] = 
-                    bool(conf[__configinfo_struct[:current_value]])
-                rescue
-                  conf[__configinfo_struct[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__listval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                conf[__configinfo_struct[:default_value]] = 
-                  simplelist(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                conf[__configinfo_struct[:current_value]] = 
-                  simplelist(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__numlistval_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] \
-                  && conf[__configinfo_struct[:default_value]] =~ /^[0-9]/ )
-                conf[__configinfo_struct[:default_value]] = 
-                  list(conf[__configinfo_struct[:default_value]])
-              end
-              if ( conf[__configinfo_struct[:current_value]] \
-                  && conf[__configinfo_struct[:current_value]] =~ /^[0-9]/ )
-                conf[__configinfo_struct[:current_value]] = 
-                  list(conf[__configinfo_struct[:current_value]])
-              end
-
-            when /^(#{__tkvariable_optkeys.join('|')})$/
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                v = conf[__configinfo_struct[:default_value]]
-                if v.empty?
-                  conf[__configinfo_struct[:default_value]] = nil
-                else
-                  conf[__configinfo_struct[:default_value]] = TkVarAccess.new
-                end
-              end
-              if ( conf[__configinfo_struct[:current_value]] )
-                v = conf[__configinfo_struct[:current_value]]
-                if v.empty?
-                  conf[__configinfo_struct[:current_value]] = nil
-                else
-                  conf[__configinfo_struct[:current_value]] = TkVarAccess.new
-                end
-              end
-
-            else
-              if ( __configinfo_struct[:default_value] \
-                  && conf[__configinfo_struct[:default_value]] )
-                if conf[__configinfo_struct[:default_value]].index('{')
-                  conf[__configinfo_struct[:default_value]] = 
-                    tk_split_list(conf[__configinfo_struct[:default_value]]) 
-                else
-                  conf[__configinfo_struct[:default_value]] = 
-                    tk_tcl2ruby(conf[__configinfo_struct[:default_value]]) 
-                end
-              end
-              if conf[__configinfo_struct[:current_value]]
-                if conf[__configinfo_struct[:current_value]].index('{')
-                  conf[__configinfo_struct[:current_value]] = 
-                    tk_split_list(conf[__configinfo_struct[:current_value]]) 
-                else
-                  conf[__configinfo_struct[:current_value]] = 
-                    tk_tcl2ruby(conf[__configinfo_struct[:current_value]]) 
-                end
-              end
-            end
-
-            if ( __configinfo_struct[:alias] \
-                && conf.size == __configinfo_struct[:alias] + 1 )
-              if conf[__configinfo_struct[:alias]][0] == ?-
-                conf[__configinfo_struct[:alias]] = 
-                  conf[__configinfo_struct[:alias]][1..-1]
-              end
-              ret[conf[0]] = conf[1]
-            else
-              ret[conf.shift] = conf
-            end
-          }
-
-          __font_optkeys.each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret[optkey]
-            if fontconf.kind_of?(Array)
-              ret.delete(optkey)
-              ret.delete('latin' << optkey)
-              ret.delete('ascii' << optkey)
-              ret.delete('kanji' << optkey)
-              fontconf[__configinfo_struct[:current_value]] = fontobj(optkey)
-              ret[optkey] = fontconf
-            end
-          }
-
-          __methodcall_optkeys.each{|optkey, method|
-            ret[optkey.to_s] = ['', '', '', self.__send__(method)]
-          }
-
-          ret
-        end
-      end
-    end
-  end
-
-  def current_configinfo(slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        org_slot = slot
-        begin
-          conf = configinfo(slot)
-          if ( ! __configinfo_struct[:alias] \
-              || conf.size > __configinfo_struct[:alias] + 1 )
-            return {conf[0] => conf[-1]}
-          end
-          slot = conf[__configinfo_struct[:alias]]
-        end while(org_slot != slot)
-        fail RuntimeError, 
-          "there is a configure alias loop about '#{org_slot}'"
-      else
-        ret = {}
-        configinfo().each{|conf|
-          if ( ! __configinfo_struct[:alias] \
-              || conf.size > __configinfo_struct[:alias] + 1 )
-            ret[conf[0]] = conf[-1]
-          end
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      configinfo(slot).each{|key, conf| 
-        ret[key] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-end
-
-class TkObject<TkKernel
-  extend  TkCore
-  include Tk
-  include TkConfigMethod
-  include TkBindCore
-
-### --> definition is moved to TkUtil module
-#  def path
-#    @path
-#  end
-
-  def epath
-    @path
-  end
-
-  def to_eval
-    @path
-  end
-
-  def tk_send(cmd, *rest)
-    tk_call(path, cmd, *rest)
-  end
-  def tk_send_without_enc(cmd, *rest)
-    tk_call_without_enc(path, cmd, *rest)
-  end
-  def tk_send_with_enc(cmd, *rest)
-    tk_call_with_enc(path, cmd, *rest)
-  end
-  # private :tk_send, :tk_send_without_enc, :tk_send_with_enc
-
-  def tk_send_to_list(cmd, *rest)
-    tk_call_to_list(path, cmd, *rest)
-  end
-  def tk_send_to_list_without_enc(cmd, *rest)
-    tk_call_to_list_without_enc(path, cmd, *rest)
-  end
-  def tk_send_to_list_with_enc(cmd, *rest)
-    tk_call_to_list_with_enc(path, cmd, *rest)
-  end
-  def tk_send_to_simplelist(cmd, *rest)
-    tk_call_to_simplelist(path, cmd, *rest)
-  end
-  def tk_send_to_simplelist_without_enc(cmd, *rest)
-    tk_call_to_simplelist_without_enc(path, cmd, *rest)
-  end
-  def tk_send_to_simplelist_with_enc(cmd, *rest)
-    tk_call_to_simplelist_with_enc(path, cmd, *rest)
-  end
-
-  def method_missing(id, *args)
-    name = id.id2name
-    case args.length
-    when 1
-      if name[-1] == ?=
-        configure name[0..-2], args[0]
-        args[0]
-      else
-        configure name, args[0]
-        self
-      end
-    when 0
-      begin
-        cget(name)
-      rescue
-        super(id, *args)
-#        fail NameError, 
-#             "undefined local variable or method `#{name}' for #{self.to_s}", 
-#             error_at
-      end
-    else
-      super(id, *args)
-#      fail NameError, "undefined method `#{name}' for #{self.to_s}", error_at
-    end
-  end
-
-=begin
-  def [](id)
-    cget(id)
-  end
-
-  def []=(id, val)
-    configure(id, val)
-    val
-  end
-=end
-
-  def event_generate(context, keys=nil)
-    if context.kind_of?(TkEvent::Event)
-      context.generate(self, ((keys)? keys: {}))
-    elsif keys
-      #tk_call('event', 'generate', path, 
-      #       "<#{tk_event_sequence(context)}>", *hash_kv(keys))
-      tk_call_without_enc('event', 'generate', path, 
-                          "<#{tk_event_sequence(context)}>", 
-                          *hash_kv(keys, true))
-    else
-      #tk_call('event', 'generate', path, "<#{tk_event_sequence(context)}>")
-      tk_call_without_enc('event', 'generate', path, 
-                          "<#{tk_event_sequence(context)}>")
-    end
-  end
-
-  def tk_trace_variable(v)
-    #unless v.kind_of?(TkVariable)
-    #  fail(ArgumentError, "type error (#{v.class}); must be TkVariable object")
-    #end
-    v
-  end
-  private :tk_trace_variable
-
-  def destroy
-    #tk_call 'trace', 'vdelete', @tk_vn, 'w', @var_id if @var_id
-  end
-end
-
-
-class TkWindow<TkObject
-  include TkWinfo
-  extend TkBindCore
-
-  TkCommandNames = [].freeze
-  ## ==> If TkCommandNames[0] is a string (not a null string), 
-  ##     assume the string is a Tcl/Tk's create command of the widget class. 
-  WidgetClassName = ''.freeze
-  # WidgetClassNames[WidgetClassName] = self  
-  ## ==> If self is a widget class, entry to the WidgetClassNames table.
-  def self.to_eval
-    self::WidgetClassName
-  end
-
-  def initialize(parent=nil, keys=nil)
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-      parent = keys.delete('parent')
-      widgetname = keys.delete('widgetname')
-      install_win(if parent then parent.path end, widgetname)
-      without_creating = keys.delete('without_creating')
-      # if without_creating && !widgetname 
-      #   fail ArgumentError, 
-      #        "if set 'without_creating' to true, need to define 'widgetname'"
-      # end
-    elsif keys
-      keys = _symbolkey2str(keys)
-      widgetname = keys.delete('widgetname')
-      install_win(if parent then parent.path end, widgetname)
-      without_creating = keys.delete('without_creating')
-      # if without_creating && !widgetname 
-      #   fail ArgumentError, 
-      #        "if set 'without_creating' to true, need to define 'widgetname'"
-      # end
-    else
-      install_win(if parent then parent.path end)
-    end
-    if self.method(:create_self).arity == 0
-      p 'create_self has no arg' if $DEBUG
-      create_self unless without_creating
-      if keys
-        # tk_call @path, 'configure', *hash_kv(keys)
-        configure(keys)
-      end
-    else
-      p 'create_self has args' if $DEBUG
-      fontkeys = {}
-      methodkeys = {}
-      if keys
-        #['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
-        #  fontkeys[key] = keys.delete(key) if keys.key?(key)
-        #}
-        __font_optkeys.each{|key|
-          fkey = key.to_s
-          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-          fkey = "kanji#{key}"
-          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-          fkey = "latin#{key}"
-          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-          fkey = "ascii#{key}"
-          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-        }
-
-        __methodcall_optkeys.each{|key|
-          key = key.to_s
-          methodkeys[key] = keys.delete(key) if keys.key?(key)
-        }
-
-        __ruby2val_optkeys.each{|key, method|
-          key = key.to_s
-          keys[key] = method.call(keys[key]) if keys.has_key?(key)
-        }
-      end
-      if without_creating && keys
-        #configure(keys)
-        configure(__conv_keyonly_opts(keys))
-      else
-        #create_self(keys)
-        create_self(__conv_keyonly_opts(keys))
-      end
-      font_configure(fontkeys) unless fontkeys.empty?
-      configure(methodkeys) unless methodkeys.empty?
-    end
-  end
-
-  def create_self(keys)
-    # may need to override
-    begin
-      cmd = self.class::TkCommandNames[0]
-      fail unless (cmd.kind_of?(String) && cmd.length > 0)
-    rescue
-      fail RuntimeError, "class #{self.class} may be an abstract class"
-    end
-
-    if keys and keys != None
-      tk_call_without_enc(cmd, @path, *hash_kv(keys, true))
-    else
-      tk_call_without_enc(cmd, @path)
-    end
-  end
-  private :create_self
-
-  def exist?
-    TkWinfo.exist?(self)
-  end
-
-  def bind_class
-    @db_class || self.class()
-  end
-
-  def database_classname
-    TkWinfo.classname(self)
-  end
-  def database_class
-    name = database_classname()
-    if WidgetClassNames[name]
-      WidgetClassNames[name]
-    else
-      TkDatabaseClass.new(name)
-    end
-  end
-  def self.database_classname
-    self::WidgetClassName
-  end
-  def self.database_class
-    WidgetClassNames[self::WidgetClassName]
-  end
-
-  def pack(keys = nil)
-    #tk_call_without_enc('pack', epath, *hash_kv(keys, true))
-    if keys
-      TkPack.configure(self, keys)
-    else
-      TkPack.configure(self)
-    end
-    self
-  end
-
-  def pack_in(target, keys = nil)
-    if keys
-      keys = keys.dup
-      keys['in'] = target
-    else
-      keys = {'in'=>target}
-    end
-    #tk_call 'pack', epath, *hash_kv(keys)
-    TkPack.configure(self, keys)
-    self
-  end
-
-  def pack_forget
-    #tk_call_without_enc('pack', 'forget', epath)
-    TkPack.forget(self)
-    self
-  end
-  alias unpack pack_forget
-
-  def pack_config(slot, value=None)
-    #if slot.kind_of? Hash
-    #  tk_call 'pack', 'configure', epath, *hash_kv(slot)
-    #else
-    #  tk_call 'pack', 'configure', epath, "-#{slot}", value
-    #end
-    if slot.kind_of? Hash
-      TkPack.configure(self, slot)
-    else
-      TkPack.configure(self, slot=>value)
-    end
-  end
-  alias pack_configure pack_config
-
-  def pack_info()
-    #ilist = list(tk_call('pack', 'info', epath))
-    #info = {}
-    #while key = ilist.shift
-    #  info[key[1..-1]] = ilist.shift
-    #end
-    #return info
-    TkPack.info(self)
-  end
-
-  def pack_propagate(mode=None)
-    #if mode == None
-    #  bool(tk_call('pack', 'propagate', epath))
-    #else
-    #  tk_call('pack', 'propagate', epath, mode)
-    #  self
-    #end
-    if mode == None
-      TkPack.propagate(self)
-    else
-      TkPack.propagate(self, mode)
-      self
-    end
-  end
-
-  def pack_slaves()
-    #list(tk_call('pack', 'slaves', epath))
-    TkPack.slaves(self)
-  end
-
-  def grid(keys = nil)
-    #tk_call 'grid', epath, *hash_kv(keys)
-    if keys
-      TkGrid.configure(self, keys)
-    else
-      TkGrid.configure(self)
-    end
-    self
-  end
-
-  def grid_in(target, keys = nil)
-    if keys
-      keys = keys.dup
-      keys['in'] = target
-    else
-      keys = {'in'=>target}
-    end
-    #tk_call 'grid', epath, *hash_kv(keys)
-    TkGrid.configure(self, keys)
-    self
-  end
-
-  def grid_forget
-    #tk_call('grid', 'forget', epath)
-    TkGrid.forget(self)
-    self
-  end
-  alias ungrid grid_forget
-
-  def grid_bbox(*args)
-    #list(tk_call('grid', 'bbox', epath, *args))
-    TkGrid.bbox(self, *args)
-  end
-
-  def grid_config(slot, value=None)
-    #if slot.kind_of? Hash
-    #  tk_call 'grid', 'configure', epath, *hash_kv(slot)
-    #else
-    #  tk_call 'grid', 'configure', epath, "-#{slot}", value
-    #end
-    if slot.kind_of? Hash
-      TkGrid.configure(self, slot)
-    else
-      TkGrid.configure(self, slot=>value)
-    end
-  end
-  alias grid_configure grid_config
-
-  def grid_columnconfig(index, keys)
-    #tk_call('grid', 'columnconfigure', epath, index, *hash_kv(keys))
-    TkGrid.columnconfigure(self, index, keys)
-  end
-  alias grid_columnconfigure grid_columnconfig
-
-  def grid_rowconfig(index, keys)
-    #tk_call('grid', 'rowconfigure', epath, index, *hash_kv(keys))
-    TkGrid.rowconfigure(self, index, keys)
-  end
-  alias grid_rowconfigure grid_rowconfig
-
-  def grid_columnconfiginfo(index, slot=nil)
-    #if slot
-    #  tk_call('grid', 'columnconfigure', epath, index, "-#{slot}").to_i
-    #else
-    #  ilist = list(tk_call('grid', 'columnconfigure', epath, index))
-    #  info = {}
-    #  while key = ilist.shift
-    #   info[key[1..-1]] = ilist.shift
-    #  end
-    #  info
-    #end
-    TkGrid.columnconfiginfo(self, index, slot)
-  end
-
-  def grid_rowconfiginfo(index, slot=nil)
-    #if slot
-    #  tk_call('grid', 'rowconfigure', epath, index, "-#{slot}").to_i
-    #else
-    #  ilist = list(tk_call('grid', 'rowconfigure', epath, index))
-    #  info = {}
-    #  while key = ilist.shift
-    #   info[key[1..-1]] = ilist.shift
-    #  end
-    #  info
-    #end
-    TkGrid.rowconfiginfo(self, index, slot)
-  end
-
-  def grid_info()
-    #list(tk_call('grid', 'info', epath))
-    TkGrid.info(self)
-  end
-
-  def grid_location(x, y)
-    #list(tk_call('grid', 'location', epath, x, y))
-    TkGrid.location(self, x, y)
-  end
-
-  def grid_propagate(mode=None)
-    #if mode == None
-    #  bool(tk_call('grid', 'propagate', epath))
-    #else
-    #  tk_call('grid', 'propagate', epath, mode)
-    #  self
-    #end
-    if mode == None
-      TkGrid.propagate(self)
-    else
-      TkGrid.propagate(self, mode)
-      self
-    end
-  end
-
-  def grid_remove()
-    #tk_call 'grid', 'remove', epath
-    TkGrid.remove(self)
-    self
-  end
-
-  def grid_size()
-    #list(tk_call('grid', 'size', epath))
-    TkGrid.size(self)
-  end
-
-  def grid_slaves(args)
-    #list(tk_call('grid', 'slaves', epath, *hash_kv(args)))
-    TkGrid.slaves(self, args)
-  end
-
-  def place(keys)
-    #tk_call 'place', epath, *hash_kv(keys)
-    TkPlace.configure(self, keys)
-    self
-  end
-
-  def place_in(target, keys = nil)
-    if keys
-      keys = keys.dup
-      keys['in'] = target
-    else
-      keys = {'in'=>target}
-    end
-    #tk_call 'place', epath, *hash_kv(keys)
-    TkPlace.configure(self, keys)
-    self
-  end
-
-  def  place_forget
-    #tk_call 'place', 'forget', epath
-    TkPlace.forget(self)
-    self
-  end
-  alias unplace place_forget
-
-  def place_config(slot, value=None)
-    #if slot.kind_of? Hash
-    #  tk_call 'place', 'configure', epath, *hash_kv(slot)
-    #else
-    #  tk_call 'place', 'configure', epath, "-#{slot}", value
-    #end
-    TkPlace.configure(self, slot, value)
-  end
-  alias place_configure place_config
-
-  def place_configinfo(slot = nil)
-    # for >= Tk8.4a2 ?
-    #if slot
-    #  conf = tk_split_list(tk_call('place', 'configure', epath, "-#{slot}") )
-    #  conf[0] = conf[0][1..-1]
-    #  conf
-    #else
-    #  tk_split_simplelist(tk_call('place', 
-    #                             'configure', epath)).collect{|conflist|
-    #   conf = tk_split_simplelist(conflist)
-    #   conf[0] = conf[0][1..-1]
-    #   conf
-    #  }
-    #end
-    TkPlace.configinfo(self, slot)
-  end
-
-  def place_info()
-    #ilist = list(tk_call('place', 'info', epath))
-    #info = {}
-    #while key = ilist.shift
-    #  info[key[1..-1]] = ilist.shift
-    #end
-    #return info
-    TkPlace.info(self)
-  end
-
-  def place_slaves()
-    #list(tk_call('place', 'slaves', epath))
-    TkPlace.slaves(self)
-  end
-
-  def set_focus(force=false)
-    if force
-      tk_call_without_enc('focus', '-force', path)
-    else
-      tk_call_without_enc('focus', path)
-    end
-    self
-  end
-  alias focus set_focus
-
-  def grab(opt = nil)
-    unless opt
-      tk_call_without_enc('grab', 'set', path)
-      return self
-    end
-
-    case opt
-    when 'set', :set
-      tk_call_without_enc('grab', 'set', path)
-      return self
-    when 'global', :global
-      #return(tk_call('grab', 'set', '-global', path))
-      tk_call_without_enc('grab', 'set', '-global', path)
-      return self
-    when 'release', :release
-      #return tk_call('grab', 'release', path)
-      tk_call_without_enc('grab', 'release', path)
-      return self
-    when 'current', :current
-      return window(tk_call_without_enc('grab', 'current', path))
-    when 'status', :status
-      return tk_call_without_enc('grab', 'status', path)
-    else
-      return tk_call_without_enc('grab', opt, path)
-    end
-  end
-
-  def grab_current
-    grab('current')
-  end
-  alias current_grab grab_current
-  def grab_release
-    grab('release')
-  end
-  alias release_grab grab_release
-  def grab_set
-    grab('set')
-  end
-  alias set_grab grab_set
-  def grab_set_global
-    grab('global')
-  end
-  alias set_global_grab grab_set_global
-  def grab_status
-    grab('status')
-  end
-
-  def lower(below=None)
-    # below = below.epath if below.kind_of?(TkObject)
-    below = _epath(below)
-    tk_call 'lower', epath, below
-    self
-  end
-  alias lower_window lower
-  def raise(above=None)
-    #above = above.epath if above.kind_of?(TkObject)
-    above = _epath(above)
-    tk_call 'raise', epath, above
-    self
-  end
-  alias raise_window raise
-
-  def command(cmd=nil, &b)
-    if cmd
-      configure_cmd('command', cmd)
-    elsif b
-      configure_cmd('command', Proc.new(&b))
-    else
-      cget('command')
-    end
-  end
-
-  def colormodel(model=None)
-    tk_call('tk', 'colormodel', path, model)
-    self
-  end
-
-  def caret(keys=nil)
-    TkXIM.caret(path, keys)
-  end
-
-  def destroy
-    super
-    children = []
-    rexp = /^#{self.path}\.[^.]+$/
-    TkCore::INTERP.tk_windows.each{|path, obj|
-      children << [path, obj] if path =~ rexp
-    }
-    if defined?(@cmdtbl)
-      for id in @cmdtbl
-        uninstall_cmd id
-      end
-    end
-
-    children.each{|path, obj|
-      if defined?(@cmdtbl)
-        for id in @cmdtbl
-          uninstall_cmd id
-        end
-      end
-      TkCore::INTERP.tk_windows.delete(path)
-    }
-
-    begin
-      tk_call_without_enc('destroy', epath)
-    rescue
-    end
-    uninstall_win
-  end
-
-  def wait_visibility(on_thread = true)
-    if $SAFE >= 4
-      fail SecurityError, "can't wait visibility at $SAFE >= 4"
-    end
-    on_thread &= (Thread.list.size != 1)
-    if on_thread
-      INTERP._thread_tkwait('visibility', path)
-    else
-      INTERP._invoke('tkwait', 'visibility', path)
-    end
-  end
-  def eventloop_wait_visibility
-    wait_visibility(false)
-  end
-  def thread_wait_visibility
-    wait_visibility(true)
-  end
-  alias wait wait_visibility
-  alias tkwait wait_visibility
-  alias eventloop_wait eventloop_wait_visibility
-  alias eventloop_tkwait eventloop_wait_visibility
-  alias eventloop_tkwait_visibility eventloop_wait_visibility
-  alias thread_wait thread_wait_visibility
-  alias thread_tkwait thread_wait_visibility
-  alias thread_tkwait_visibility thread_wait_visibility
-
-  def wait_destroy(on_thread = true)
-    if $SAFE >= 4
-      fail SecurityError, "can't wait destroy at $SAFE >= 4"
-    end
-    on_thread &= (Thread.list.size != 1)
-    if on_thread
-      INTERP._thread_tkwait('window', epath)
-    else
-      INTERP._invoke('tkwait', 'window', epath)
-    end
-  end
-  alias wait_window wait_destroy
-  def eventloop_wait_destroy
-    wait_destroy(false)
-  end
-  alias eventloop_wait_window eventloop_wait_destroy
-  def thread_wait_destroy
-    wait_destroy(true)
-  end
-  alias thread_wait_window thread_wait_destroy
-
-  alias tkwait_destroy wait_destroy
-  alias tkwait_window wait_destroy
-
-  alias eventloop_tkwait_destroy eventloop_wait_destroy
-  alias eventloop_tkwait_window eventloop_wait_destroy
-
-  alias thread_tkwait_destroy thread_wait_destroy
-  alias thread_tkwait_window thread_wait_destroy
-
-  def bindtags(taglist=nil)
-    if taglist
-      fail ArgumentError, "taglist must be Array" unless taglist.kind_of? Array
-      tk_call('bindtags', path, taglist)
-      taglist
-    else
-      list(tk_call('bindtags', path)).collect{|tag|
-        if tag.kind_of?(String) 
-          if cls = WidgetClassNames[tag]
-            cls
-          elsif btag = TkBindTag.id2obj(tag)
-            btag
-          else
-            tag
-          end
-        else
-          tag
-        end
-      }
-    end
-  end
-
-  def bindtags=(taglist)
-    bindtags(taglist)
-    taglist
-  end
-
-  def bindtags_shift
-    taglist = bindtags
-    tag = taglist.shift
-    bindtags(taglist)
-    tag
-  end
-
-  def bindtags_unshift(tag)
-    bindtags(bindtags().unshift(tag))
-  end
-end
-
-
-# freeze core modules
-#TclTkLib.freeze
-#TclTkIp.freeze
-#TkUtil.freeze
-#TkKernel.freeze
-#TkComm.freeze
-#TkComm::Event.freeze
-#TkCore.freeze
-#Tk.freeze
-
-module Tk
-  RELEASE_DATE = '2007-01-26'.freeze
-
-  autoload :AUTO_PATH,        'tk/variable'
-  autoload :TCL_PACKAGE_PATH, 'tk/variable'
-  autoload :PACKAGE_PATH,     'tk/variable'
-  autoload :TCL_LIBRARY_PATH, 'tk/variable'
-  autoload :LIBRARY_PATH,     'tk/variable'
-  autoload :TCL_PRECISION,    'tk/variable'
-end
-
-# call setup script for Tk extension libraries (base configuration)
-begin
-  require 'tkextlib/version.rb'
-  require 'tkextlib/setup.rb'
-rescue LoadError
-  # ignore
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/after.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/after.rb
deleted file mode 100644
index 82197cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/after.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-#   tk/after.rb : methods for Tcl/Tk after command
-#
-#   $Id: after.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-require 'tk/timer'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/autoload.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/autoload.rb
deleted file mode 100644
index 6b3773f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/autoload.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-#  autoload
-#
-
-#######################
-#  geometry manager
-autoload :TkGrid,             'tk/grid'
-def TkGrid(*args); TkGrid.configure(*args); end
-
-autoload :TkPack,             'tk/pack'
-def TkPack(*args); TkPack.configure(*args); end
-
-autoload :TkPlace,            'tk/place'
-def TkPlace(*args); TkPlace.configure(*args); end
-
-
-#######################
-# others
-autoload :TkBgError,          'tk/bgerror'
-
-autoload :TkBindTag,          'tk/bindtag'
-autoload :TkBindTagAll,       'tk/bindtag'
-autoload :TkDatabaseClass,    'tk/bindtag'
-
-autoload :TkButton,           'tk/button'
-
-autoload :TkConsole,          'tk/console'
-
-autoload :TkCanvas,           'tk/canvas'
-
-autoload :TkcTagAccess,       'tk/canvastag'
-autoload :TkcTag,             'tk/canvastag'
-autoload :TkcTagString,       'tk/canvastag'
-autoload :TkcNamedTag,        'tk/canvastag'
-autoload :TkcTagAll,          'tk/canvastag'
-autoload :TkcTagCurrent,      'tk/canvastag'
-autoload :TkcTagGroup,        'tk/canvastag'
-
-autoload :TkCheckButton,      'tk/checkbutton'
-autoload :TkCheckbutton,      'tk/checkbutton'
-
-autoload :TkClipboard,        'tk/clipboard'
-
-autoload :TkComposite,        'tk/composite'
-
-autoload :TkConsole,          'tk/console'
-
-autoload :TkDialog,           'tk/dialog'
-autoload :TkDialog2,          'tk/dialog'
-autoload :TkDialogObj,        'tk/dialog'
-autoload :TkWarning,          'tk/dialog'
-autoload :TkWarning2,         'tk/dialog'
-autoload :TkWarningObj,       'tk/dialog'
-
-autoload :TkEntry,            'tk/entry'
-
-autoload :TkEvent,            'tk/event'
-
-autoload :TkFont,             'tk/font'
-autoload :TkTreatTagFont,     'tk/font'
-
-autoload :TkFrame,            'tk/frame'
-
-autoload :TkImage,            'tk/image'
-autoload :TkBitmapImage,      'tk/image'
-autoload :TkPhotoImage,       'tk/image'
-
-autoload :TkItemConfigMethod, 'tk/itemconfig'
-
-autoload :TkTreatItemFont,    'tk/itemfont'
-
-autoload :TkKinput,           'tk/kinput'
-
-autoload :TkLabel,            'tk/label'
-
-autoload :TkLabelFrame,       'tk/labelframe'
-autoload :TkLabelframe,       'tk/labelframe'
-
-autoload :TkListbox,          'tk/listbox'
-
-autoload :TkMacResource,      'tk/macpkg'
-
-autoload :TkMenu,             'tk/menu'
-autoload :TkMenuClone,        'tk/menu'
-autoload :TkSystemMenu,       'tk/menu'
-autoload :TkSysMenu_Help,     'tk/menu'
-autoload :TkSysMenu_System,   'tk/menu'
-autoload :TkSysMenu_Apple,    'tk/menu'
-autoload :TkMenubutton,       'tk/menu'
-autoload :TkOptionMenubutton, 'tk/menu'
-
-autoload :TkMenubar,          'tk/menubar'
-
-autoload :TkMenuSpec,         'tk/menuspec'
-
-autoload :TkMessage,          'tk/message'
-
-autoload :TkManageFocus,      'tk/mngfocus'
-
-autoload :TkMsgCatalog,       'tk/msgcat'
-autoload :TkMsgCat,           'tk/msgcat'
-
-autoload :TkNamespace,        'tk/namespace'
-
-autoload :TkOptionDB,         'tk/optiondb'
-autoload :TkOption,           'tk/optiondb'
-autoload :TkResourceDB,       'tk/optiondb'
-
-autoload :TkPackage,          'tk/package'
-
-autoload :TkPalette,          'tk/palette'
-
-autoload :TkPanedWindow,      'tk/panedwindow'
-autoload :TkPanedwindow,      'tk/panedwindow'
-
-autoload :TkRadioButton,      'tk/radiobutton'
-autoload :TkRadiobutton,      'tk/radiobutton'
-
-autoload :TkRoot,             'tk/root'
-
-autoload :TkScale,            'tk/scale'
-
-autoload :TkScrollbar,        'tk/scrollbar'
-autoload :TkXScrollbar,       'tk/scrollbar'
-autoload :TkYScrollbar,       'tk/scrollbar'
-
-autoload :TkScrollbox,        'tk/scrollbox'
-
-autoload :TkSelection,        'tk/selection'
-
-autoload :TkSpinbox,          'tk/spinbox'
-
-autoload :TkTreatTagFont,     'tk/tagfont'
-
-autoload :TkText,             'tk/text'
-
-autoload :TkTextImage,        'tk/textimage'
-
-autoload :TkTextMark,         'tk/textmark'
-autoload :TkTextNamedMark,    'tk/textmark'
-autoload :TkTextMarkInsert,   'tk/textmark'
-autoload :TkTextMarkCurrent,  'tk/textmark'
-autoload :TkTextMarkAnchor,   'tk/textmark'
-
-autoload :TkTextTag,          'tk/texttag'
-autoload :TkTextNamedTag,     'tk/texttag'
-autoload :TkTextTagSel,       'tk/texttag'
-
-autoload :TkTextWindow,       'tk/textwindow'
-
-autoload :TkAfter,            'tk/timer'
-autoload :TkTimer,            'tk/timer'
-autoload :TkRTTimer,          'tk/timer'
-
-autoload :TkToplevel,         'tk/toplevel'
-
-autoload :TkTextWin,          'tk/txtwin_abst'
-
-autoload :TkValidation,       'tk/validation'
-
-autoload :TkVariable,         'tk/variable'
-autoload :TkVarAccess,        'tk/variable'
-
-autoload :TkVirtualEvent,     'tk/virtevent'
-autoload :TkNamedVirtualEvent,'tk/virtevent'
-
-autoload :TkWinfo,            'tk/winfo'
-
-autoload :TkWinDDE,           'tk/winpkg'
-autoload :TkWinRegistry,      'tk/winpkg'
-
-autoload :TkXIM,              'tk/xim'
-
-
-#######################
-# sub-module of Tk
-module Tk
-  autoload :Clock,            'tk/clock'
-  autoload :OptionObj,        'tk/optionobj'
-  autoload :X_Scrollable,     'tk/scrollable'
-  autoload :Y_Scrollable,     'tk/scrollable'
-  autoload :Scrollable,       'tk/scrollable'
-  autoload :Wm,               'tk/wm'
-
-  autoload :ValidateConfigure,     'tk/validation'
-  autoload :ItemValidateConfigure, 'tk/validation'
-
-  autoload :EncodedString,    'tk/encodedstr'
-  def Tk.EncodedString(str, enc = nil); Tk::EncodedString.new(str, enc); end
-
-  autoload :BinaryString,     'tk/encodedstr'
-  def Tk.BinaryString(str); Tk::BinaryString.new(str); end
-
-  autoload :UTF8_String,      'tk/encodedstr'
-  def Tk.UTF8_String(str); Tk::UTF8_String.new(str); end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bgerror.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bgerror.rb
deleted file mode 100644
index c82a8e0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bgerror.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-#  tkbgerror -- bgerror ( tkerror ) module
-#                     1998/07/16 by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-module TkBgError
-  extend Tk
-
-  TkCommandNames = ['bgerror'.freeze].freeze
-
-  def bgerror(message)
-    tk_call('bgerror', message)
-  end
-  alias tkerror bgerror
-  alias show bgerror
-  module_function :bgerror, :tkerror, :show
-
-  def set_handler(hdlr = Proc.new) #==> handler :: proc{|msg| ...body... }
-    tk_call('proc', 'bgerror', 'msg', install_cmd(hdlr) + ' $msg')
-  end
-  def set_default
-    begin
-      tk_call('rename', 'bgerror', '')
-    rescue RuntimeError
-    end
-  end
-  module_function :set_handler, :set_default
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bindtag.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bindtag.rb
deleted file mode 100644
index 9023a08..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/bindtag.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# tk/bind.rb : control event binding
-#
-require 'tk'
-
-class TkBindTag
-  include TkBindCore
-
-  #BTagID_TBL = {}
-  BTagID_TBL = TkCore::INTERP.create_table
-  Tk_BINDTAG_ID = ["btag".freeze, "00000".taint].freeze
-
-  TkCore::INTERP.init_ip_env{ BTagID_TBL.clear }
-
-  def TkBindTag.id2obj(id)
-    BTagID_TBL[id]? BTagID_TBL[id]: id
-  end
-
-  def TkBindTag.new_by_name(name, *args, &b)
-    return BTagID_TBL[name] if BTagID_TBL[name]
-    self.new.instance_eval{
-      BTagID_TBL.delete @id
-      @id = name
-      BTagID_TBL[@id] = self
-      bind(*args, &b) if args != []
-      self
-    }
-  end
-
-  def initialize(*args, &b)
-    # @id = Tk_BINDTAG_ID.join('')
-    @id = Tk_BINDTAG_ID.join(TkCore::INTERP._ip_id_)
-    Tk_BINDTAG_ID[1].succ!
-    BTagID_TBL[@id] = self
-    bind(*args, &b) if args != []
-  end
-
-  ALL = self.new_by_name('all')
-
-  def name
-    @id
-  end
-
-  def to_eval
-    @id
-  end
-
-  def inspect
-    #Kernel.format "#<TkBindTag: %s>", @id
-    '#<TkBindTag: ' + @id + '>'
-  end
-end
-
-
-class TkBindTagAll<TkBindTag
-  def TkBindTagAll.new(*args, &b)
-    $stderr.puts "Warning: TkBindTagALL is obsolete. Use TkBindTag::ALL\n"
-
-    TkBindTag::ALL.bind(*args, &b) if args != []
-    TkBindTag::ALL
-  end
-end
-
-
-class TkDatabaseClass<TkBindTag
-  def self.new(name, *args, &b)
-    return BTagID_TBL[name] if BTagID_TBL[name]
-    super(name, *args, &b)
-  end
-
-  def initialize(name, *args, &b)
-    @id = name
-    BTagID_TBL[@id] = self
-    bind(*args, &b) if args != []
-  end
-
-  def inspect
-    #Kernel.format "#<TkDatabaseClass: %s>", @id
-    '#<TkDatabaseClass: ' + @id + '>'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/button.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/button.rb
deleted file mode 100644
index 407a47c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/button.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# tk/button.rb : treat button widget
-#
-require 'tk'
-require 'tk/label'
-
-class TkButton<TkLabel
-  TkCommandNames = ['button'.freeze].freeze
-  WidgetClassName = 'Button'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('button', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('button', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def invoke
-    _fromUTF8(tk_send_without_enc('invoke'))
-  end
-  def flash
-    tk_send_without_enc('flash')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvas.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvas.rb
deleted file mode 100644
index 1358688..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvas.rb
+++ /dev/null
@@ -1,759 +0,0 @@
-#
-#               tk/canvas.rb - Tk canvas classes
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at caelum.co.jp>
-#
-require 'tk'
-require 'tk/canvastag'
-require 'tk/itemconfig'
-require 'tk/scrollable'
-
-module TkCanvasItemConfig
-  include TkItemConfigMethod
-
-  def __item_strval_optkeys(id)
-    # maybe need to override
-    super(id) + [
-      'fill', 'activefill', 'disabledfill', 
-      'outline', 'activeoutline', 'disabledoutline'
-    ]
-  end
-  private :__item_strval_optkeys
-
-  def __item_methodcall_optkeys(id)
-    {'coords'=>'coords'}
-  end
-  private :__item_methodcall_optkeys
-
-  def __item_val2ruby_optkeys(id)  # { key=>proc, ... }
-    super(id).update('window'=>proc{|i, v| window(v)})
-  end
-  private :__item_val2ruby_optkeys
-
-  def __item_pathname(tagOrId)
-    if tagOrId.kind_of?(TkcItem) || tagOrId.kind_of?(TkcTag)
-      self.path + ';' + tagOrId.id.to_s
-    else
-      self.path + ';' + tagOrId.to_s
-    end
-  end
-  private :__item_pathname
-end
-
-class TkCanvas<TkWindow
-  include TkCanvasItemConfig
-  include Tk::Scrollable
-
-  TkCommandNames = ['canvas'.freeze].freeze
-  WidgetClassName = 'Canvas'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __destroy_hook__
-    TkcItem::CItemID_TBL.delete(@path)
-  end
-
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('canvas', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('canvas', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def __numval_optkeys
-    super() + ['closeenough']
-  end
-  private :__numval_optkeys
-
-  def __boolval_optkeys
-    super() + ['confine']
-  end
-  private :__boolval_optkeys
-
-  def tagid(tag)
-    if tag.kind_of?(TkcItem) || tag.kind_of?(TkcTag)
-      tag.id
-    else
-      tag  # maybe an Array of configure paramters
-    end
-  end
-  private :tagid
-
-
-  # create a canvas item without creating a TkcItem object
-  def create(type, *args)
-    type.create(self, *args)
-  end
-
-
-  def addtag(tag, mode, *args)
-    mode = mode.to_s
-    if args[0] && mode =~ /^(above|below|with(tag)?)$/
-      args[0] = tagid(args[0])
-    end
-    tk_send_without_enc('addtag', tagid(tag), mode, *args)
-    self
-  end
-  def addtag_above(tagOrId, target)
-    addtag(tagOrId, 'above', tagid(target))
-  end
-  def addtag_all(tagOrId)
-    addtag(tagOrId, 'all')
-  end
-  def addtag_below(tagOrId, target)
-    addtag(tagOrId, 'below', tagid(target))
-  end
-  def addtag_closest(tagOrId, x, y, halo=None, start=None)
-    addtag(tagOrId, 'closest', x, y, halo, start)
-  end
-  def addtag_enclosed(tagOrId, x1, y1, x2, y2)
-    addtag(tagOrId, 'enclosed', x1, y1, x2, y2)
-  end
-  def addtag_overlapping(tagOrId, x1, y1, x2, y2)
-    addtag(tagOrId, 'overlapping', x1, y1, x2, y2)
-  end
-  def addtag_withtag(tagOrId, tag)
-    addtag(tagOrId, 'withtag', tagid(tag))
-  end
-
-  def bbox(tagOrId, *tags)
-    list(tk_send_without_enc('bbox', tagid(tagOrId), 
-                             *tags.collect{|t| tagid(t)}))
-  end
-
-  #def itembind(tag, context, cmd=Proc.new, *args)
-  #  _bind([path, "bind", tagid(tag)], context, cmd, *args)
-  #  self
-  #end
-  def itembind(tag, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([path, "bind", tagid(tag)], context, cmd, *args)
-    self
-  end
-
-  #def itembind_append(tag, context, cmd=Proc.new, *args)
-  #  _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-  #  self
-  #end
-  def itembind_append(tag, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-    self
-  end
-
-  def itembind_remove(tag, context)
-    _bind_remove([path, "bind", tagid(tag)], context)
-    self
-  end
-
-  def itembindinfo(tag, context=nil)
-    _bindinfo([path, "bind", tagid(tag)], context)
-  end
-
-  def canvasx(screen_x, *args)
-    #tk_tcl2ruby(tk_send_without_enc('canvasx', screen_x, *args))
-    number(tk_send_without_enc('canvasx', screen_x, *args))
-  end
-  def canvasy(screen_y, *args)
-    #tk_tcl2ruby(tk_send_without_enc('canvasy', screen_y, *args))
-    number(tk_send_without_enc('canvasy', screen_y, *args))
-  end
-
-  def coords(tag, *args)
-    if args == []
-      tk_split_list(tk_send_without_enc('coords', tagid(tag)))
-    else
-      tk_send_without_enc('coords', tagid(tag), *(args.flatten))
-      self
-    end
-  end
-
-  def dchars(tag, first, last=None)
-    tk_send_without_enc('dchars', tagid(tag), 
-                        _get_eval_enc_str(first), _get_eval_enc_str(last))
-    self
-  end
-
-  def delete(*args)
-    if TkcItem::CItemID_TBL[self.path]
-      args.each{|tag|
-        find('withtag', tag).each{|item|
-          if item.kind_of?(TkcItem)
-            TkcItem::CItemID_TBL[self.path].delete(item.id)
-          end
-        }
-      }
-    end
-    tk_send_without_enc('delete', *args.collect{|t| tagid(t)})
-    self
-  end
-  alias remove delete
-
-  def dtag(tag, tag_to_del=None)
-    tk_send_without_enc('dtag', tagid(tag), tagid(tag_to_del))
-    self
-  end
-  alias deltag dtag
-
-  def find(mode, *args)
-    list(tk_send_without_enc('find', mode, *args)).collect!{|id| 
-      TkcItem.id2obj(self, id)
-    }
-  end
-  def find_above(target)
-    find('above', tagid(target))
-  end
-  def find_all
-    find('all')
-  end
-  def find_below(target)
-    find('below', tagid(target))
-  end
-  def find_closest(x, y, halo=None, start=None)
-    find('closest', x, y, halo, start)
-  end
-  def find_enclosed(x1, y1, x2, y2)
-    find('enclosed', x1, y1, x2, y2)
-  end
-  def find_overlapping(x1, y1, x2, y2)
-    find('overlapping', x1, y1, x2, y2)
-  end
-  def find_withtag(tag)
-    find('withtag', tag)
-  end
-
-  def itemfocus(tagOrId=nil)
-    if tagOrId
-      tk_send_without_enc('focus', tagid(tagOrId))
-      self
-    else
-      ret = tk_send_without_enc('focus')
-      if ret == ""
-        nil
-      else
-        TkcItem.id2obj(self, ret)
-      end
-    end
-  end
-
-  def gettags(tagOrId)
-    list(tk_send_without_enc('gettags', tagid(tagOrId))).collect{|tag|
-      TkcTag.id2obj(self, tag)
-    }
-  end
-
-  def icursor(tagOrId, index)
-    tk_send_without_enc('icursor', tagid(tagOrId), index)
-    self
-  end
-
-  def index(tagOrId, idx)
-    number(tk_send_without_enc('index', tagid(tagOrId), idx))
-  end
-
-  def insert(tagOrId, index, string)
-    tk_send_without_enc('insert', tagid(tagOrId), index, 
-                        _get_eval_enc_str(string))
-    self
-  end
-
-=begin
-  def itemcget(tagOrId, option)
-    case option.to_s
-    when 'dash', 'activedash', 'disableddash'
-      conf = tk_send_without_enc('itemcget', tagid(tagOrId), "-#{option}")
-      if conf =~ /^[0-9]/
-        list(conf)
-      else
-        conf
-      end
-    when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
-      _fromUTF8(tk_send_without_enc('itemcget', tagid(tagOrId), "-#{option}"))
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_send('itemcget', tagid(tagOrId), "-#{option}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_send_with_enc('itemcget', tagid(tagOrId), '-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(tagid(tagOrId), fnt)
-      end
-      if option.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', tagid(tagOrId), 
-                                                "-#{option}")))
-    end
-  end
-
-  def itemconfigure(tagOrId, key, value=None)
-    if key.kind_of? Hash
-      key = _symbolkey2str(key)
-      coords = key.delete('coords')
-      self.coords(tagOrId, coords) if coords
-
-      if ( key['font'] || key['kanjifont'] \
-          || key['latinfont'] || key['asciifont'] )
-        tagfont_configure(tagid(tagOrId), key.dup)
-      else
-        _fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), 
-                                      *hash_kv(key, true)))
-      end
-
-    else
-      if ( key == 'coords' || key == :coords )
-        self.coords(tagOrId, value)
-      elsif ( key == 'font' || key == :font || 
-              key == 'kanjifont' || key == :kanjifont || 
-              key == 'latinfont' || key == :latinfont || 
-              key == 'asciifont' || key == :asciifont )
-        if value == None
-          tagfontobj(tagid(tagOrId))
-        else
-          tagfont_configure(tagid(tagOrId), {key=>value})
-        end
-      else
-        _fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), 
-                                      "-#{key}", _get_eval_enc_str(value)))
-      end
-    end
-    self
-  end
-#  def itemconfigure(tagOrId, key, value=None)
-#    if key.kind_of? Hash
-#      tk_send 'itemconfigure', tagid(tagOrId), *hash_kv(key)
-#    else
-#      tk_send 'itemconfigure', tagid(tagOrId), "-#{key}", value
-#    end
-#  end
-#  def itemconfigure(tagOrId, keys)
-#    tk_send 'itemconfigure', tagid(tagOrId), *hash_kv(keys)
-#  end
-
-  def itemconfiginfo(tagOrId, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'coords'
-          return ['coords', '', '', '', self.coords(tagOrId)]
-        when 'dash', 'activedash', 'disableddash'
-          conf = tk_split_simplelist(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}"))
-          if conf[3] && conf[3] =~ /^[0-9]/
-            conf[3] = list(conf[3])
-          end
-          if conf[4] && conf[4] =~ /^[0-9]/
-            conf[4] = list(conf[4])
-          end
-        when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId),"-#{key}")))
-          conf[4] = tagfont_configinfo(tagid(tagOrId), conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")))
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId)))).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
-          when 'dash', 'activedash', 'disableddash'
-            if conf[3] && conf[3] =~ /^[0-9]/
-              conf[3] = list(conf[3])
-            end
-            if conf[4] && conf[4] =~ /^[0-9]/
-              conf[4] = list(conf[4])
-            end
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-
-        fontconf = ret.assoc('font')
-        if fontconf
-          ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
-          fontconf[4] = tagfont_configinfo(tagid(tagOrId), fontconf[4])
-          ret.push(fontconf)
-        end
-
-        ret << ['coords', '', '', '', self.coords(tagOrId)]
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'coords'
-          {'coords' => ['', '', '', self.coords(tagOrId)]}
-        when 'dash', 'activedash', 'disableddash'
-          conf = tk_split_simplelist(tk_send_without_enc('itemconfigure', 
-                                                         tagid(tagOrId), 
-                                                         "-#{key}"))
-          if conf[3] && conf[3] =~ /^[0-9]/
-            conf[3] = list(conf[3])
-          end
-          if conf[4] && conf[4] =~ /^[0-9]/
-            conf[4] = list(conf[4])
-          end
-        when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId),"-#{key}")))
-          conf[4] = tagfont_configinfo(tagid(tagOrId), conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")))
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId)))).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
-          when 'dash', 'activedash', 'disableddash'
-            if conf[2] && conf[2] =~ /^[0-9]/
-              conf[2] = list(conf[2])
-            end
-            if conf[3] && conf[3] =~ /^[0-9]/
-              conf[3] = list(conf[3])
-            end
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-
-        fontconf = ret['font']
-        if fontconf
-          ret.delete('font')
-          ret.delete('kanjifont')
-          fontconf[3] = tagfont_configinfo(tagid(tagOrId), fontconf[3])
-          ret['font'] = fontconf
-        end
-
-        ret['coords'] = ['', '', '', self.coords(tagOrId)]
-
-        ret
-      end
-    end
-  end
-
-  def current_itemconfiginfo(tagOrId, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = itemconfiginfo(tagOrId, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        itemconfiginfo(tagOrId).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      itemconfiginfo(tagOrId, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-=end
-
-  def lower(tag, below=nil)
-    if below
-      tk_send_without_enc('lower', tagid(tag), tagid(below))
-    else
-      tk_send_without_enc('lower', tagid(tag))
-    end
-    self
-  end
-
-  def move(tag, x, y)
-    tk_send_without_enc('move', tagid(tag), x, y)
-    self
-  end
-
-  def postscript(keys)
-    tk_send("postscript", *hash_kv(keys))
-  end
-
-  def raise(tag, above=nil)
-    if above
-      tk_send_without_enc('raise', tagid(tag), tagid(above))
-    else
-      tk_send_without_enc('raise', tagid(tag))
-    end
-    self
-  end
-
-  def scale(tag, x, y, xs, ys)
-    tk_send_without_enc('scale', tagid(tag), x, y, xs, ys)
-    self
-  end
-
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y, gain=None)
-    tk_send_without_enc('scan', 'dragto', x, y, gain)
-    self
-  end
-
-  def select(mode, *args)
-    r = tk_send_without_enc('select', mode, *args)
-    (mode == 'item')? TkcItem.id2obj(self, r): self
-  end
-  def select_adjust(tagOrId, index)
-    select('adjust', tagid(tagOrId), index)
-  end
-  def select_clear
-    select('clear')
-  end
-  def select_from(tagOrId, index)
-    select('from', tagid(tagOrId), index)
-  end
-  def select_item
-    select('item')
-  end
-  def select_to(tagOrId, index)
-    select('to', tagid(tagOrId), index)
-  end
-
-  def itemtype(tag)
-    TkcItem.type2class(tk_send('type', tagid(tag)))
-  end
-end
-
-class TkcItem<TkObject
-  extend Tk
-  include TkcTagAccess
-  extend TkItemFontOptkeys
-  extend TkItemConfigOptkeys
-
-  CItemTypeName = nil
-  CItemTypeToClass = {}
-  CItemID_TBL = TkCore::INTERP.create_table
-
-  TkCore::INTERP.init_ip_env{ CItemID_TBL.clear }
-
-  def TkcItem.type2class(type)
-    CItemTypeToClass[type]
-  end
-
-  def TkcItem.id2obj(canvas, id)
-    cpath = canvas.path
-    return id unless CItemID_TBL[cpath]
-    CItemID_TBL[cpath][id]? CItemID_TBL[cpath][id]: id
-  end
-
-  ########################################
-  def self._parse_create_args(args)
-    fontkeys = {}
-    methodkeys = {}
-    if args[-1].kind_of? Hash
-      keys = _symbolkey2str(args.pop)
-      if args.size == 0
-        args = keys.delete('coords')
-        unless args.kind_of?(Array)
-          fail "coords parameter must be given by an Array"
-        end
-      end
-
-      #['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
-      #  fontkeys[key] = keys.delete(key) if keys.key?(key)
-      #}
-      __item_font_optkeys(nil).each{|key|
-        fkey = key.to_s
-        fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-        fkey = "kanji#{key}"
-        fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-        fkey = "latin#{key}"
-        fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-        fkey = "ascii#{key}"
-        fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-      }
-
-      __item_methodcall_optkeys(nil).each{|key|
-        key = key.to_s
-        methodkeys[key] = keys.delete(key) if keys.key?(key)
-      }
-
-      __item_ruby2val_optkeys(nil).each{|key, method|
-        key = key.to_s
-        keys[key] = method.call(keys[key]) if keys.has_key?(key)
-      }
-
-      #args = args.flatten.concat(hash_kv(keys))
-      args = args.flatten.concat(itemconfig_hash_kv(nil, keys))
-    else
-      args = args.flatten
-    end
-
-    [args, fontkeys]
-  end
-  private_class_method :_parse_create_args
-
-  def self.create(canvas, *args)
-    unless self::CItemTypeName
-      fail RuntimeError, "#{self} is an abstract class"
-    end
-    args, fontkeys = _parse_create_args(args)
-    idnum = tk_call_without_enc(canvas.path, 'create', 
-                                self::CItemTypeName, *args)
-    canvas.itemconfigure(idnum, fontkeys) unless fontkeys.empty?
-    idnum.to_i  # 'canvas item id' is an integer number
-  end
-  ########################################
-
-  def initialize(parent, *args)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @parent = @c = parent
-    @path = parent.path
-
-    @id = create_self(*args) # an integer number as 'canvas item id'
-    CItemID_TBL[@path] = {} unless CItemID_TBL[@path]
-    CItemID_TBL[@path][@id] = self
-  end
-  def create_self(*args)
-    self.class.create(@c, *args) # return an integer number as 'canvas item id'
-  end
-  private :create_self
-
-  def id
-    @id
-  end
-
-  def exist?
-    if @c.find_withtag(@id)
-      true
-    else
-      false
-    end
-  end
-
-  def delete
-    @c.delete @id
-    CItemID_TBL[@path].delete(@id) if CItemID_TBL[@path]
-    self
-  end
-  alias remove  delete
-  alias destroy delete
-end
-
-class TkcArc<TkcItem
-  CItemTypeName = 'arc'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcBitmap<TkcItem
-  CItemTypeName = 'bitmap'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcImage<TkcItem
-  CItemTypeName = 'image'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcLine<TkcItem
-  CItemTypeName = 'line'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcOval<TkcItem
-  CItemTypeName = 'oval'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcPolygon<TkcItem
-  CItemTypeName = 'polygon'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcRectangle<TkcItem
-  CItemTypeName = 'rectangle'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-end
-
-class TkcText<TkcItem
-  CItemTypeName = 'text'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-  def self.create(canvas, *args)
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-      txt = keys['text']
-      keys['text'] = _get_eval_enc_str(txt) if txt
-      args.push(keys)
-    end
-    super(canvas, *args)
-  end
-end
-
-class TkcWindow<TkcItem
-  CItemTypeName = 'window'.freeze
-  CItemTypeToClass[CItemTypeName] = self
-  def self.create(canvas, *args)
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-      win = keys['window']
-      # keys['window'] = win.epath if win.kind_of?(TkWindow)
-      keys['window'] = _epath(win) if win
-      args.push(keys)
-    end
-    super(canvas, *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvastag.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvastag.rb
deleted file mode 100644
index a5650ee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/canvastag.rb
+++ /dev/null
@@ -1,375 +0,0 @@
-#
-# tk/canvastag.rb - methods for treating canvas tags
-#
-require 'tk'
-require 'tk/tagfont'
-
-module TkcTagAccess
-  include TkComm
-  include TkTreatTagFont
-end
-
-require 'tk/canvas'
-
-module TkcTagAccess
-  def addtag(tag)
-    @c.addtag(tag, 'withtag', @id)
-    self
-  end
-
-  def bbox
-    @c.bbox(@id)
-  end
-
-  #def bind(seq, cmd=Proc.new, *args)
-  #  @c.itembind(@id, seq, cmd, *args)
-  #  self
-  #end
-  def bind(seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    @c.itembind(@id, seq, cmd, *args)
-    self
-  end
-
-  #def bind_append(seq, cmd=Proc.new, *args)
-  #  @c.itembind_append(@id, seq, cmd, *args)
-  #  self
-  #end
-  def bind_append(seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    @c.itembind_append(@id, seq, cmd, *args)
-    self
-  end
-
-  def bind_remove(seq)
-    @c.itembind_remove(@id, seq)
-    self
-  end
-
-  def bindinfo(seq=nil)
-    @c.itembindinfo(@id, seq)
-  end
-
-  def cget(option)
-    @c.itemcget(@id, option)
-  end
-
-  def configure(key, value=None)
-    @c.itemconfigure(@id, key, value)
-    self
-  end
-#  def configure(keys)
-#    @c.itemconfigure @id, keys
-#  end
-
-  def configinfo(key=nil)
-    @c.itemconfiginfo(@id, key)
-  end
-
-  def current_configinfo(key=nil)
-    @c.current_itemconfiginfo(@id, key)
-  end
-
-  def coords(*args)
-    @c.coords(@id, *args)
-  end
-
-  def dchars(first, last=None)
-    @c.dchars(@id, first, last)
-    self
-  end
-
-  def dtag(tag_to_del=None)
-    @c.dtag(@id, tag_to_del)
-    self
-  end
-  alias deltag dtag
-
-  def find
-    @c.find('withtag', @id)
-  end
-  alias list find
-
-  def focus
-    @c.itemfocus(@id)
-  end
-
-  def gettags
-    @c.gettags(@id)
-  end
-
-  def icursor(index)
-    @c.icursor(@id, index)
-    self
-  end
-
-  def index(idx)
-    @c.index(@id, idx)
-  end
-
-  def insert(beforethis, string)
-    @c.insert(@id, beforethis, string)
-    self
-  end
-
-  def lower(belowthis=None)
-    @c.lower(@id, belowthis)
-    self
-  end
-
-  def move(xamount, yamount)
-    @c.move(@id, xamount, yamount)
-    self
-  end
-
-  def raise(abovethis=None)
-    @c.raise(@id, abovethis)
-    self
-  end
-
-  def scale(xorigin, yorigin, xscale, yscale)
-    @c.scale(@id, xorigin, yorigin, xscale, yscale)
-    self
-  end
-
-  def select_adjust(index)
-    @c.select('adjust', @id, index)
-    self
-  end
-  def select_from(index)
-    @c.select('from', @id, index)
-    self
-  end
-  def select_to(index)
-    @c.select('to', @id, index)
-    self
-  end
-
-  def itemtype
-    @c.itemtype(@id)
-  end
-
-  # Following operators support logical expressions of canvas tags
-  # (for Tk8.3+).
-  # If tag1.path is 't1' and tag2.path is 't2', then
-  #      ltag = tag1 & tag2; ltag.path => "(t1)&&(t2)"
-  #      ltag = tag1 | tag2; ltag.path => "(t1)||(t2)"
-  #      ltag = tag1 ^ tag2; ltag.path => "(t1)^(t2)"
-  #      ltag = - tag1;      ltag.path => "!(t1)"
-  def & (tag)
-    if tag.kind_of? TkObject
-      TkcTagString.new(@c, '(' + @id + ')&&(' + tag.path + ')')
-    else
-      TkcTagString.new(@c, '(' + @id + ')&&(' + tag.to_s + ')')
-    end
-  end
-
-  def | (tag)
-    if tag.kind_of? TkObject
-      TkcTagString.new(@c, '(' + @id + ')||(' + tag.path + ')')
-    else
-      TkcTagString.new(@c, '(' + @id + ')||(' + tag.to_s + ')')
-    end
-  end
-
-  def ^ (tag)
-    if tag.kind_of? TkObject
-      TkcTagString.new(@c, '(' + @id + ')^(' + tag.path + ')')
-    else
-      TkcTagString.new(@c, '(' + @id + ')^(' + tag.to_s + ')')
-    end
-  end
-
-  def -@
-    TkcTagString.new(@c, '!(' + @id + ')')
-  end
-end
-
-class TkcTag<TkObject
-  include TkcTagAccess
-
-  CTagID_TBL = TkCore::INTERP.create_table
-  Tk_CanvasTag_ID = ['ctag'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ CTagID_TBL.clear }
-
-  def TkcTag.id2obj(canvas, id)
-    cpath = canvas.path
-    return id unless CTagID_TBL[cpath]
-    CTagID_TBL[cpath][id]? CTagID_TBL[cpath][id]: id
-  end
-
-  def initialize(parent, mode=nil, *args)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @c = parent
-    @cpath = parent.path
-    # @path = @id = Tk_CanvasTag_ID.join('')
-    @path = @id = Tk_CanvasTag_ID.join(TkCore::INTERP._ip_id_)
-    CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
-    CTagID_TBL[@cpath][@id] = self
-    Tk_CanvasTag_ID[1].succ!
-    if mode
-      tk_call_without_enc(@c.path, "addtag", @id, mode, *args)
-    end
-  end
-  def id
-    @id
-  end
-
-  def exist?
-    if @c.find_withtag(@id)
-      true
-    else
-      false
-    end
-  end
-
-  def delete
-    @c.delete @id
-    CTagID_TBL[@cpath].delete(@id) if CTagID_TBL[@cpath]
-    self
-  end
-  alias remove  delete
-  alias destroy delete
-
-  def set_to_above(target)
-    @c.addtag_above(@id, target)
-    self
-  end
-  alias above set_to_above
-
-  def set_to_all
-    @c.addtag_all(@id)
-    self
-  end
-  alias all set_to_all
-
-  def set_to_below(target)
-    @c.addtag_below(@id, target)
-    self
-  end
-  alias below set_to_below
-
-  def set_to_closest(x, y, halo=None, start=None)
-    @c.addtag_closest(@id, x, y, halo, start)
-    self
-  end
-  alias closest set_to_closest
-
-  def set_to_enclosed(x1, y1, x2, y2)
-    @c.addtag_enclosed(@id, x1, y1, x2, y2)
-    self
-  end
-  alias enclosed set_to_enclosed
-
-  def set_to_overlapping(x1, y1, x2, y2)
-    @c.addtag_overlapping(@id, x1, y1, x2, y2)
-    self
-  end
-  alias overlapping set_to_overlapping
-
-  def set_to_withtag(target)
-    @c.addtag_withtag(@id, target)
-    self
-  end
-  alias withtag set_to_withtag
-end
-
-class TkcTagString<TkcTag
-  def self.new(parent, name, *args)
-    if CTagID_TBL[parent.path] && CTagID_TBL[parent.path][name]
-      return CTagID_TBL[parent.path][name]
-    else
-      super(parent, name, *args)
-    end
-  end
-
-  def initialize(parent, name, mode=nil, *args)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @c = parent
-    @cpath = parent.path
-    @path = @id = name
-    CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
-    CTagID_TBL[@cpath][@id] = self
-    if mode
-      tk_call_without_enc(@c.path, "addtag", @id, mode, *args)
-    end
-  end
-end
-TkcNamedTag = TkcTagString
-
-class TkcTagAll<TkcTag
-  def initialize(parent)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @c = parent
-    @cpath = parent.path
-    @path = @id = 'all'
-    CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
-    CTagID_TBL[@cpath][@id] = self
-  end
-end
-
-class TkcTagCurrent<TkcTag
-  def initialize(parent)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @c = parent
-    @cpath = parent.path
-    @path = @id = 'current'
-    CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
-    CTagID_TBL[@cpath][@id] = self
-  end
-end
-
-class TkcGroup<TkcTag
-  Tk_cGroup_ID = ['tkcg'.freeze, '00000'.taint].freeze
-  #def create_self(parent, *args)
-  def initialize(parent, *args)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
-    #end
-    @c = parent
-    @cpath = parent.path
-    # @path = @id = Tk_cGroup_ID.join('')
-    @path = @id = Tk_cGroup_ID.join(TkCore::INTERP._ip_id_)
-    CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
-    CTagID_TBL[@cpath][@id] = self
-    Tk_cGroup_ID[1].succ!
-    include(*args) if args != []
-  end
-  #private :create_self
-  
-  def include(*tags)
-    for i in tags
-      #i.addtag(@id)
-      @c.addtag_withtag(@id, i)
-    end
-    self
-  end
-  alias add include
-
-  def exclude(*tags)
-    for i in tags
-      #i.dtag(@id)
-      @c.dtag(i, @id)
-    end
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/checkbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/checkbutton.rb
deleted file mode 100644
index d76d99c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/checkbutton.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# tk/checkbutton.rb : treat checkbutton widget
-#
-require 'tk'
-require 'tk/radiobutton'
-
-class TkCheckButton<TkRadioButton
-  TkCommandNames = ['checkbutton'.freeze].freeze
-  WidgetClassName = 'Checkbutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('checkbutton', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('checkbutton', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def toggle
-    tk_send_without_enc('toggle')
-    self
-  end
-end
-TkCheckbutton = TkCheckButton
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clipboard.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clipboard.rb
deleted file mode 100644
index d4205a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clipboard.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# tk/clipboard.rb : methods to treat clipboard
-#
-require 'tk'
-
-module TkClipboard
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['clipboard'.freeze].freeze
-
-  def self.clear(win=nil)
-    if win
-      tk_call_without_enc('clipboard', 'clear', '-displayof', win)
-    else
-      tk_call_without_enc('clipboard', 'clear')
-    end
-  end
-  def self.clear_on_display(win)
-    tk_call_without_enc('clipboard', 'clear', '-displayof', win)
-  end
-
-  def self.get(type=nil)
-    if type
-      tk_call_without_enc('clipboard', 'get', '-type', type)
-    else
-      tk_call_without_enc('clipboard', 'get')
-    end
-  end
-  def self.get_on_display(win, type=nil)
-    if type
-      tk_call_without_enc('clipboard', 'get', '-displayof', win, '-type', type)
-    else
-      tk_call_without_enc('clipboard', 'get', '-displayof', win)
-    end
-  end
-
-  def self.set(data, keys=nil)
-    clear
-    append(data, keys)
-  end
-  def self.set_on_display(win, data, keys=nil)
-    clear(win)
-    append_on_display(win, data, keys)
-  end
-
-  def self.append(data, keys=nil)
-    args = ['clipboard', 'append']
-    args.concat(hash_kv(keys))
-    args.concat(['--', data])
-    tk_call(*args)
-  end
-  def self.append_on_display(win, data, keys=nil)
-    args = ['clipboard', 'append', '-displayof', win]
-    args.concat(hash_kv(keys))
-    args.concat(['--', data])
-    tk_call(*args)
-  end
-
-  def clear
-    TkClipboard.clear_on_display(self)
-    self
-  end
-  def get(type=nil)
-    TkClipboard.get_on_display(self, type)
-  end
-  def set(data, keys=nil)
-    TkClipboard.set_on_display(self, data, keys)
-    self
-  end
-  def append(data, keys=nil)
-    TkClipboard.append_on_display(self, data, keys)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clock.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clock.rb
deleted file mode 100644
index 4e9438f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/clock.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# tk/clock.rb : methods for clock command
-#
-require 'tk'
-
-module Tk
-  module Clock
-    include Tk
-    extend TkCore
-
-    def self.add(clk, *args)
-      tk_call_without_enc('clock','add', clk, *args).to_i
-    end
-
-    def self.clicks(ms=nil)
-      ms = ms.to_s if ms.kind_of?(Symbol)
-      case ms
-      when nil, ''
-        tk_call_without_enc('clock','clicks').to_i
-      when /^mic/
-        tk_call_without_enc('clock','clicks','-microseconds').to_i
-      when /^mil/
-        tk_call_without_enc('clock','clicks','-milliseconds').to_i
-      else
-        tk_call_without_enc('clock','clicks','-milliseconds').to_i
-      end
-    end
-
-    def self.format(clk, form=nil)
-      if form
-        tk_call('clock','format',clk,'-format',form)
-      else
-        tk_call('clock','format',clk)
-      end
-    end
-
-    def self.formatGMT(clk, form=nil)
-      if form
-        tk_call('clock','format',clk,'-format',form,'-gmt','1')
-      else
-        tk_call('clock','format',clk,'-gmt','1')
-      end
-    end
-
-    def self.scan(str, base=nil)
-      if base
-        tk_call('clock','scan',str,'-base',base).to_i
-      else
-        tk_call('clock','scan',str).to_i
-      end
-    end
-
-    def self.scanGMT(str, base=nil)
-      if base
-        tk_call('clock','scan',str,'-base',base,'-gmt','1').to_i
-      else
-        tk_call('clock','scan',str,'-gmt','1').to_i
-      end
-    end
-
-    def self.seconds
-      tk_call_without_enc('clock','seconds').to_i
-    end
-    def self.milliseconds
-      tk_call_without_enc('clock','milliseconds').to_i
-    end
-    def self.microseconds
-      tk_call_without_enc('clock','microseconds').to_i
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/composite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/composite.rb
deleted file mode 100644
index eaed8ed..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/composite.rb
+++ /dev/null
@@ -1,394 +0,0 @@
-#
-# tk/composite.rb : 
-#
-require 'tk'
-
-module TkComposite
-  include Tk
-  extend Tk
-
-=begin
-  def initialize(parent=nil, *args)
-    @delegates = {}
-    @option_methods = {}
-    @option_setting = {}
-
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-      parent = keys.delete('parent')
-      @frame = TkFrame.new(parent)
-      @path = @epath = @frame.path
-      initialize_composite(keys)
-    else
-      @frame = TkFrame.new(parent)
-      @path = @epath = @frame.path
-      initialize_composite(*args)
-    end
-  end
-=end
-
-  def _choice_classname_of_baseframe
-    base_class_name = nil
-
-    klass = WidgetClassNames[self.class::WidgetClassName]
-
-    if klass
-      # WidgetClassName is a known class
-      if klass <= TkFrame || klass < TkComposite
-        # klass is valid for the base frame
-        if self.class <= klass
-          # use my classname
-          base_class_name = self.class.name
-          if base_class_name == ''
-            # anonymous class -> use ancestor's name
-            base_class_name = klass.name
-          end
-        else
-          # not subclass -> use WidgetClassName
-          base_class_name = klass.name
-        end
-
-      else
-        # klass is invalid for the base frame
-        if self.class < TkFrame || self.class.superclass < TkComposite
-          # my class name is valid for the base frame -> use my classname
-          base_class_name = self.class.name
-          if base_class_name == ''
-            # anonymous class -> use TkFrame
-            base_class_name = nil
-          end
-        else
-          # no idea for the base frame -> use TkFrame
-          base_class_name = nil
-        end
-      end
-
-    elsif self.class::WidgetClassName && ! self.class::WidgetClassName.empty?
-      # unknown WidgetClassName is defined -> use it for the base frame
-      base_class_name = self.class::WidgetClassName
-
-    else
-      # no valid WidgetClassName
-      if self.class < TkFrame || self.class.superclass < TkComposite
-        # my class name is valid for the base frame -> use my classname
-        base_class_name = self.class.name
-        if base_class_name == ''
-          # anonymous class -> use TkFrame
-          base_class_name = nil
-        end
-      else
-        # no idea for the base frame -> use TkFrame
-        base_class_name = nil
-      end
-    end
-
-    base_class_name
-  end
-  private :_choice_classname_of_baseframe
-
-  # def initialize(parent=nil, *args)
-  def initialize(*args)
-    @delegates = {}
-    @option_methods = {}
-    @option_setting = {}
-
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = {}
-    end
-    parent = args.shift
-    parent = keys.delete('parent') if keys.has_key?('parent')
-
-    if keys.key?('classname')
-      keys['class'] = keys.delete('classname')
-    end
-    if (base_class_name = (keys.delete('class')).to_s).empty?
-      base_class_name = _choice_classname_of_baseframe
-    end
-
-    if base_class_name
-      @frame = TkFrame.new(parent, :class=>base_class_name)
-    else
-      @frame = TkFrame.new(parent)
-    end
-    @path = @epath = @frame.path
-
-    args.push(keys) unless keys.empty?
-    initialize_composite(*args)
-  end
-
-  def database_classname
-    @frame.database_classname
-  end
-
-  def database_class
-    @frame.database_class
-  end
-
-  def epath
-    @epath
-  end
-
-  def initialize_composite(*args) end
-  private :initialize_composite
-
-  def option_methods(*opts)
-    opts.each{|m_set, m_cget, m_info|
-      m_set  = m_set.to_s
-      m_cget = m_set if !m_cget && self.method(m_set).arity == -1
-      m_cget = m_cget.to_s if m_cget
-      m_info = m_info.to_s if m_info
-      @option_methods[m_set] = {
-        :set  => m_set, :cget => m_cget, :info => m_info
-      }
-    }
-  end
-
-  def delegate_alias(alias_opt, option, *wins)
-    if wins.length == 0
-      fail ArgumentError, "target widgets are not given"
-    end
-    if alias_opt != option && (alias_opt == 'DEFAULT' || option == 'DEFAULT')
-      fail ArgumentError, "cannot alias 'DEFAULT' option"
-    end
-    alias_opt = alias_opt.to_s
-    option = option.to_s
-    if @delegates[alias_opt].kind_of?(Array)
-      if (elem = @delegates[alias_opt].assoc(option))
-        wins.each{|w| elem[1].push(w)}
-      else
-        @delegates[alias_opt] << [option, wins]
-      end
-    else
-      @delegates[alias_opt] = [ [option, wins] ]
-    end
-  end
-
-  def delegate(option, *wins)
-    delegate_alias(option, option, *wins)
-  end
-
-  def cget(slot)
-    slot = slot.to_s
-
-    if @option_methods.include?(slot)
-      if @option_methods[slot][:cget]
-        return self.__send__(@option_methods[slot][:cget])
-      else
-        if @option_setting[slot]
-          return @option_setting[slot]
-        else
-          return ''
-        end
-      end
-    end
-
-    tbl = @delegates[slot]
-    tbl = @delegates['DEFAULT'] unless tbl
-
-    begin
-      if tbl
-        opt, wins = tbl[-1]
-        opt = slot if opt == 'DEFAULT'
-        if wins && wins[-1]
-          return wins[-1].cget(opt)
-        end
-      end
-    rescue
-    end
-
-    super(slot)
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of? Hash
-      slot.each{|slot,value| configure slot, value}
-      return self
-    end
-
-    slot = slot.to_s
-
-    if @option_methods.include?(slot)
-      unless @option_methods[slot][:cget]
-        if value.kind_of?(Symbol)
-          @option_setting[slot] = value.to_s
-        else
-          @option_setting[slot] = value
-        end
-      end
-      return self.__send__(@option_methods[slot][:set], value)
-    end
-
-    tbl = @delegates[slot]
-    tbl = @delegates['DEFAULT'] unless tbl
-
-    begin
-      if tbl
-        last = nil
-        tbl.each{|opt, wins|
-          opt = slot if opt == 'DEFAULT'
-          wins.each{|w| last = w.configure(opt, value)}
-        }
-        return last
-      end
-    rescue
-    end
-
-    super(slot, value)
-  end
-
-  def configinfo(slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        slot = slot.to_s
-        if @option_methods.include?(slot)
-          if @option_methods[slot][:info]
-            return self.__send__(@option_methods[slot][:info])
-          else
-            return [slot, '', '', '', self.cget(slot)]
-          end
-        end
-
-        tbl = @delegates[slot]
-        tbl = @delegates['DEFAULT'] unless tbl
-
-        begin
-          if tbl
-            if tbl.length == 1
-              opt, wins = tbl[0]
-              if slot == opt || opt == 'DEFAULT'
-                return wins[-1].configinfo(slot)
-              else
-                info = wins[-1].configinfo(opt)
-                info[0] = slot
-                return info
-              end
-            else
-              opt, wins = tbl[-1]
-              return [slot, '', '', '', wins[-1].cget(opt)]
-            end
-          end
-        rescue
-        end
-
-        super(slot)
-
-      else # slot == nil
-        info_list = super(slot)
-
-        tbl = @delegates['DEFAULT']
-        if tbl
-          wins = tbl[0][1]
-          if wins && wins[-1]
-            wins[-1].configinfo.each{|info|
-              slot = info[0]
-              info_list.delete_if{|i| i[0] == slot} << info
-            }
-          end
-        end
-
-        @delegates.each{|slot, tbl|
-          next if slot == 'DEFAULT'
-          if tbl.length == 1
-            opt, wins = tbl[0]
-            next unless wins && wins[-1]
-            if slot == opt
-              info_list.delete_if{|i| i[0] == slot} << 
-                wins[-1].configinfo(slot)
-            else
-              info = wins[-1].configinfo(opt)
-              info[0] = slot
-              info_list.delete_if{|i| i[0] == slot} << info
-            end
-          else
-            opt, wins = tbl[-1]
-            info_list.delete_if{|i| i[0] == slot} << 
-              [slot, '', '', '', wins[-1].cget(opt)]
-          end
-        }
-
-        @option_methods.each{|slot, m|
-          if m[:info]
-            info = self.__send__(m[:info])
-          else
-            info = [slot, '', '', '', self.cget(slot)]
-          end
-          info_list.delete_if{|i| i[0] == slot} << info
-        }
-
-        info_list
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        slot = slot.to_s
-        if @option_methods.include?(slot)
-          if @option_methods[slot][:info]
-            return self.__send__(@option_methods[slot][:info])
-          else
-            return {slot => ['', '', '', self.cget(slot)]}
-          end
-        end
-
-        tbl = @delegates[slot]
-        tbl = @delegates['DEFAULT'] unless tbl
-
-        begin
-          if tbl
-            if tbl.length == 1
-              opt, wins = tbl[0]
-              if slot == opt || opt == 'DEFAULT'
-                return wins[-1].configinfo(slot)
-              else
-                return {slot => wins[-1].configinfo(opt)[opt]}
-              end
-            else
-              opt, wins = tbl[-1]
-              return {slot => ['', '', '', wins[-1].cget(opt)]}
-            end
-          end
-        rescue
-        end
-
-        super(slot)
-
-      else # slot == nil
-        info_list = super(slot)
-
-        tbl = @delegates['DEFAULT']
-        if tbl
-          wins = tbl[0][1]
-          info_list.update(wins[-1].configinfo) if wins && wins[-1]
-        end
-
-        @delegates.each{|slot, tbl|
-          next if slot == 'DEFAULT'
-          if tbl.length == 1
-            opt, wins = tbl[0]
-            next unless wins && wins[-1]
-            if slot == opt
-              info_list.update(wins[-1].configinfo(slot))
-            else
-              info_list.update({slot => wins[-1].configinfo(opt)[opt]})
-            end
-          else
-            opt, wins = tbl[-1]
-            info_list.update({slot => ['', '', '', wins[-1].cget(opt)]})
-          end
-        }
-
-        @option_methods.each{|slot, m|
-          if m[:info]
-            info = self.__send__(m[:info])
-          else
-            info = {slot => ['', '', '', self.cget(slot)]}
-          end
-          info_list.update(info)
-        }
-
-        info_list
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/console.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/console.rb
deleted file mode 100644
index 26ce262..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/console.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-#   tk/console.rb : control the console on system without a real console
-#
-require 'tk'
-
-module TkConsole
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['console'.freeze, 'consoleinterp'.freeze].freeze
-
-  def self.create
-    TkCore::INTERP._create_console
-  end
-  self.create  # initialize console
-
-  def self.title(str=None)
-    tk_call 'console', str
-  end
-  def self.hide
-    tk_call_without_enc('console', 'hide')
-  end
-  def self.show
-    tk_call_without_enc('console', 'show')
-  end
-  def self.eval(tcl_script)
-    #
-    # supports a Tcl script only
-    # I have no idea to support a Ruby script seamlessly.
-    #
-    _fromUTF8(tk_call_without_enc('console', 'eval', 
-                                  _get_eval_enc_str(tcl_script)))
-  end
-  def self.maininterp_eval(tcl_script)
-    #
-    # supports a Tcl script only
-    # I have no idea to support a Ruby script seamlessly.
-    #
-    _fromUTF8(tk_call_without_enc('consoleinterp', 'eval', 
-                                  _get_eval_enc_str(tcl_script)))
-
-  end
-  def self.maininterp_record(tcl_script)
-    #
-    # supports a Tcl script only
-    # I have no idea to support a Ruby script seamlessly.
-    #
-    _fromUTF8(tk_call_without_enc('consoleinterp', 'record', 
-                                  _get_eval_enc_str(tcl_script)))
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/dialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/dialog.rb
deleted file mode 100644
index 180da10..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/dialog.rb
+++ /dev/null
@@ -1,326 +0,0 @@
-#
-#   tk/dialog.rb : create dialog boxes
-#
-require 'tk'
-require 'tk/variable.rb'
-
-class TkDialogObj < TkWindow
-  extend Tk
-
-  TkCommandNames = ['tk_dialog'.freeze].freeze
-
-  def self.show(*args)
-    dlog = self.new(*args)
-    dlog.show
-    dlog
-  end
-
-  def _set_button_config(configs)
-    set_config = proc{|c,i|
-      if $VERBOSE && (c.has_key?('command') || c.has_key?(:command))
-        STDERR.print("Warning: cannot give a command option " + 
-                     "to the dialog button#{i}. It was removed.\n")
-      end
-      c.delete('command'); c.delete(:command)
-      # @config << Kernel.format("%s.button%s configure %s; ", 
-      #                                @path, i, hash_kv(c).join(' '))
-      # @config << @path+'.button'+i.to_s+' configure '+hash_kv(c).join(' ')+'; '
-      @config << @path+'.button'+i.to_s+' configure '+
-                   array2tk_list(hash_kv(c))+'; '
-    }
-    case configs
-    when Proc
-      @buttons.each_index{|i|
-        if (c = configs.call(i)).kind_of?(Hash)
-          set_config.call(c,i)
-        end
-      }
-
-    when Array
-      @buttons.each_index{|i|
-        if (c = configs[i]).kind_of?(Hash)
-          set_config.call(c,i)
-        end
-      }
-
-    when Hash
-      @buttons.each_with_index{|s,i|
-        if (c = configs[s]).kind_of?(Hash)
-          set_config.call(c,i)
-        end
-      }
-    end
-    # @config = 'after idle {' + @config + '};' if @config != ""
-    @config = array2tk_list(['after', 'idle', @config]) << ';' if @config != ""
-  end
-  private :_set_button_config
-
-  # initialize tk_dialog
-  def create_self(keys)
-    # @var = TkVariable.new
-    @val = nil
-
-    @title   = title
-
-    @message = message
-    @message_config = message_config
-    @msgframe_config = msgframe_config
-
-    @bitmap  = bitmap
-    @bitmap_config = message_config
-
-    @default_button = default_button
-
-    @buttons = buttons
-    @button_configs = proc{|num| button_configs(num)}
-    @btnframe_config = btnframe_config
-
-    #@config = "puts [winfo children .w0000];"
-    @config = ""
-
-    @command = prev_command
-
-    if keys.kind_of?(Hash)
-      @title   = keys['title'] if keys.key? 'title'
-      @message = keys['message'] if keys.key? 'message'
-      @bitmap  = keys['bitmap'] if keys.key? 'bitmap'
-      # @bitmap  = '{}' if @bitmap == nil || @bitmap == ""
-      @bitmap  = '' unless @bitmap
-      @default_button = keys['default'] if keys.key? 'default'
-      @buttons = keys['buttons'] if keys.key? 'buttons'
-
-      @command = keys['prev_command'] if keys.key? 'prev_command'
-
-      @message_config = keys['message_config'] if keys.key? 'message_config'
-      @msgframe_config = keys['msgframe_config'] if keys.key? 'msgframe_config'
-      @bitmap_config  = keys['bitmap_config']  if keys.key? 'bitmap_config'
-      @button_configs = keys['button_configs'] if keys.key? 'button_configs'
-      @btnframe_config = keys['btnframe_config'] if keys.key? 'btnframe_config'
-    end
-
-    #if @title.include? ?\s
-    #  @title = '{' + @title + '}'
-    #end
-
-    if @buttons.kind_of?(Array)
-      _set_button_config(@buttons.collect{|cfg| 
-                           (cfg.kind_of? Array)? cfg[1]: nil})
-      @buttons = @buttons.collect{|cfg| (cfg.kind_of? Array)? cfg[0]: cfg}
-    end
-    if @buttons.kind_of?(Hash)
-      _set_button_config(@buttons)
-      @buttons = @buttons.keys
-    end
-    @buttons = tk_split_simplelist(@buttons) if @buttons.kind_of?(String)
-    @buttons = [] unless @buttons
-=begin
-    @buttons = @buttons.collect{|s|
-      if s.kind_of?(Array)
-        s = s.join(' ')
-      end
-      if s.include? ?\s
-        '{' + s + '}'
-      else
-        s
-      end
-    }
-=end
-
-    if @message_config.kind_of?(Hash)
-      # @config << Kernel.format("%s.msg configure %s;", 
-      #                        @path, hash_kv(@message_config).join(' '))
-      # @config << @path+'.msg configure '+hash_kv(@message_config).join(' ')+';'
-      @config << @path+'.msg configure '+
-                   array2tk_list(hash_kv(@message_config))+';'
-    end
-
-    if @msgframe_config.kind_of?(Hash)
-      # @config << Kernel.format("%s.top configure %s;", 
-      #                        @path, hash_kv(@msgframe_config).join(' '))
-      # @config << @path+'.top configure '+hash_kv(@msgframe_config).join(' ')+';'
-      @config << @path+'.top configure '+
-                   array2tk_list(hash_kv(@msgframe_config))+';'
-    end
-
-    if @btnframe_config.kind_of?(Hash)
-      # @config << Kernel.format("%s.bot configure %s;", 
-      #                        @path, hash_kv(@btnframe_config).join(' '))
-      # @config << @path+'.bot configure '+hash_kv(@btnframe_config).join(' ')+';'
-      @config << @path+'.bot configure '+
-                   array2tk_list(hash_kv(@btnframe_config))+';'
-    end
-
-    if @bitmap_config.kind_of?(Hash)
-      # @config << Kernel.format("%s.bitmap configure %s;", 
-      #                        @path, hash_kv(@bitmap_config).join(' '))
-      # @config << @path+'.bitmap configure '+hash_kv(@bitmap_config).join(' ')+';'
-      @config << @path+'.bitmap configure '+
-                    array2tk_list(hash_kv(@bitmap_config))+';'
-    end
-
-    _set_button_config(@button_configs) if @button_configs
-  end
-  private :create_self
-
-  def show
-    # if @command.kind_of?(Proc)
-    if TkComm._callback_entry?(@command)
-      @command.call(self)
-    end
-
-    if @default_button.kind_of?(String)
-      default_button = @buttons.index(@default_button)
-    else
-      default_button = @default_button
-    end
-    # default_button = '{}' if default_button == nil
-    default_button = '' if default_button == nil
-    #Tk.ip_eval('eval {global '+ at var.id+';'+ at config+
-    #          'set '+ at var.id+' [tk_dialog '+ 
-    #          @path+" "+ at title+" {#{@message}} "+ at bitmap+" "+
-    #          String(default_button)+" "+ at buttons.join(' ')+']}')
-    Tk.ip_eval(@config)
-    # @val = Tk.ip_eval('tk_dialog ' + @path + ' ' + @title + 
-    #                 ' {' + @message + '} ' + @bitmap + ' ' + 
-    #                 String(default_button) + ' ' + @buttons.join(' ')).to_i
-    # @val = Tk.ip_eval(self.class::TkCommandNames[0] + ' ' + @path + ' ' + 
-    #                   @title + ' {' + @message + '} ' + @bitmap + ' ' + 
-    #                   String(default_button) + ' ' + @buttons.join(' ')).to_i
-    @val = Tk.ip_eval(array2tk_list([
-                                      self.class::TkCommandNames[0], 
-                                      @path, @title, @message, @bitmap, 
-                                      String(default_button)
-                                    ].concat(@buttons))).to_i
-  end
-
-  def value
-    # @var.value.to_i
-    @val
-  end
-
-  def name
-    (@val)? @buttons[@val]: nil
-  end
-
-  ############################################################
-  #                                                          #
-  #  following methods should be overridden for each dialog  #
-  #                                                          #
-  ############################################################
-  private
-
-  def title
-    # returns a title string of the dialog window
-    return "DIALOG"
-  end
-  def message
-    # returns a message text to display on the dialog
-    return "MESSAGE"
-  end
-  def message_config
-    # returns a Hash {option=>value, ...} for the message text
-    return nil
-  end
-  def msgframe_config
-    # returns a Hash {option=>value, ...} for the message text frame
-    return nil
-  end
-  def bitmap
-    # returns a bitmap name or a bitmap file path 
-    # (@ + path ; e.g. '@/usr/share/bitmap/sample.xbm')
-    return "info"
-  end
-  def bitmap_config
-    # returns nil or a Hash {option=>value, ...} for the bitmap
-    return nil
-  end
-  def default_button
-    # returns a default button's number or name
-    # if nil or null string, set no-default
-    return 0
-  end
-  def buttons
-    #return "BUTTON1 BUTTON2"
-    return ["BUTTON1", "BUTTON2"]
-  end
-  def button_configs(num)
-    # returns nil / Proc / Array or Hash (see _set_button_config)
-    return nil
-  end
-  def btnframe_config
-    # returns nil or a Hash {option=>value, ...} for the button frame
-    return nil
-  end
-  def prev_command
-    # returns nil or a Proc
-    return nil
-  end
-end
-TkDialog2 = TkDialogObj
-
-#
-# TkDialog : with showing at initialize
-#
-class TkDialog < TkDialogObj
-  def self.show(*args)
-    self.new(*args)
-  end
-
-  def initialize(*args)
-    super(*args)
-    show
-  end
-end
-
-
-#
-# dialog for warning
-#
-class TkWarningObj < TkDialogObj
-  def initialize(parent = nil, mes = nil)
-    if !mes
-      if parent.kind_of?(TkWindow)
-        mes = ""
-      else
-        mes = parent.to_s
-        parent = nil
-      end
-    end
-    super(parent, :message=>mes)
-  end
-
-  def show(mes = nil)
-    mes_bup = @message
-    @message = mes if mes
-    ret = super()
-    @message = mes_bup
-    ret
-  end
-
-  #######
-  private
-
-  def title
-    return "WARNING";
-  end
-  def bitmap
-    return "warning";
-  end
-  def default_button
-    return 0;
-  end
-  def buttons
-    return "OK";
-  end
-end
-TkWarning2 = TkWarningObj
-
-class TkWarning < TkWarningObj
-  def self.show(*args)
-    self.new(*args)
-  end
-  def initialize(*args)
-    super(*args)
-    show
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/encodedstr.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/encodedstr.rb
deleted file mode 100644
index 797e514..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/encodedstr.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# tk/encodedstr.rb : Tk::EncodedString class
-#
-require 'tk'
-
-###########################################
-#  string with Tcl's encoding
-###########################################
-module Tk
-  class EncodedString < String
-    Encoding = nil
-
-    def self.subst_utf_backslash(str)
-      # str.gsub(/\\u([0-9A-Fa-f]{1,4})/){[$1.hex].pack('U')}
-      TclTkLib._subst_UTF_backslash(str)
-    end
-    def self.utf_backslash(str)
-      self.subst_utf_backslash(str)
-    end
-
-    def self.subst_tk_backslash(str)
-      TclTkLib._subst_Tcl_backslash(str)
-    end
-
-    def self.utf_to_backslash_sequence(str)
-      str.unpack('U*').collect{|c|
-        if c <= 0xFF  # ascii character
-          c.chr
-        else
-          format('\u%X', c)
-        end
-      }.join('')
-    end
-    def self.utf_to_backslash(str)
-      self.utf_to_backslash_sequence(str)
-    end
-
-    def self.to_backslash_sequence(str)
-      str.unpack('U*').collect{|c|
-        if c <= 0x1F  # control character
-          case c
-          when 0x07; '\a'
-          when 0x08; '\b'
-          when 0x09; '\t'
-          when 0x0a; '\n'
-          when 0x0b; '\v'
-          when 0x0c; '\f'
-          when 0x0d; '\r'
-          else
-            format('\x%02X', c)
-          end
-        elsif c <= 0xFF  # ascii character
-          c.chr
-        else
-          format('\u%X', c)
-        end
-      }.join('')
-    end
-
-    def self.new_with_utf_backslash(str, enc = nil)
-      self.new('', enc).replace(self.subst_utf_backslash(str))
-    end
-
-    def self.new_without_utf_backslash(str, enc = nil)
-      self.new('', enc).replace(str)
-    end
-
-    def initialize(str, enc = nil)
-      super(str)
-      # @encoding = ( enc || 
-      #              ((self.class::Encoding)? 
-      #                  self.class::Encoding : Tk.encoding_system) )
-      @encoding = ( enc || 
-                   ((self.class::Encoding)?
-                         self.class::Encoding : 
-                         ((Tk.encoding)? Tk.encoding : Tk.encoding_system) ) )
-    end
-
-    attr_reader :encoding
-  end
-  # def Tk.EncodedString(str, enc = nil)
-  #   Tk::EncodedString.new(str, enc)
-  # end
-
-  ##################################
-
-  class BinaryString < EncodedString
-    Encoding = 'binary'.freeze
-  end
-  # def Tk.BinaryString(str)
-  #   Tk::BinaryString.new(str)
-  # end
-
-  ##################################
-
-  class UTF8_String < EncodedString
-    Encoding = 'utf-8'.freeze
-    def self.new(str)
-      super(self.subst_utf_backslash(str))
-    end
-
-    def to_backslash_sequence
-      Tk::EncodedString.utf_to_backslash_sequence(self)
-    end
-    alias to_backslash to_backslash_sequence
-  end
-  # def Tk.UTF8_String(str)
-  #   Tk::UTF8_String.new(str)
-  # end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/entry.rb
deleted file mode 100644
index b83d569..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/entry.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-#               tk/entry.rb - Tk entry classes
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at caelum.co.jp>
-
-require 'tk'
-require 'tk/label'
-require 'tk/scrollable'
-require 'tk/validation'
-
-class TkEntry<TkLabel
-  include X_Scrollable
-  include TkValidation
-
-  TkCommandNames = ['entry'.freeze].freeze
-  WidgetClassName = 'Entry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  #def create_self(keys)
-  #  super(__conv_vcmd_on_hash_kv(keys))
-  #end
-  #private :create_self
-
-  def __strval_optkeys
-    super() + ['show', 'disabledbackground', 'readonlybackground']
-  end
-  private :__strval_optkeys
-
-  def bbox(index)
-    list(tk_send_without_enc('bbox', index))
-  end
-  def cursor
-    number(tk_send_without_enc('index', 'insert'))
-  end
-  alias icursor cursor
-  def cursor=(index)
-    tk_send_without_enc('icursor', index)
-    #self
-    index
-  end
-  alias icursor= cursor=
-  def index(idx)
-    number(tk_send_without_enc('index', idx))
-  end
-  def insert(pos,text)
-    tk_send_without_enc('insert', pos, _get_eval_enc_str(text))
-    self
-  end
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-  def mark(pos)
-    tk_send_without_enc('scan', 'mark', pos)
-    self
-  end
-  def dragto(pos)
-    tk_send_without_enc('scan', 'dragto', pos)
-    self
-  end
-  def selection_adjust(index)
-    tk_send_without_enc('selection', 'adjust', index)
-    self
-  end
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-  def selection_from(index)
-    tk_send_without_enc('selection', 'from', index)
-    self
-  end
-  def selection_present()
-    bool(tk_send_without_enc('selection', 'present'))
-  end
-  def selection_range(s, e)
-    tk_send_without_enc('selection', 'range', s, e)
-    self
-  end
-  def selection_to(index)
-    tk_send_without_enc('selection', 'to', index)
-    self
-  end
-
-  def invoke_validate
-    bool(tk_send_without_enc('validate'))
-  end
-  def validate(mode = nil)
-    if mode
-      configure 'validate', mode
-    else
-      invoke_validate
-    end
-  end
-
-  def value
-    _fromUTF8(tk_send_without_enc('get'))
-  end
-  def value= (val)
-    tk_send_without_enc('delete', 0, 'end')
-    tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
-    val
-  end
-  alias get value
-  alias set value=
-
-  def [](*args)
-    self.value[*args]
-  end
-  def []=(*args)
-    val = args.pop
-    str = self.value
-    str[*args] = val
-    self.value = str
-    val
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/event.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/event.rb
deleted file mode 100644
index 70a1e38..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/event.rb
+++ /dev/null
@@ -1,488 +0,0 @@
-#
-#  tk/event.rb - module for event
-#
-
-module TkEvent
-end
-
-########################
-
-require 'tkutil'
-require 'tk'
-
-########################
-
-module TkEvent
-  class Event < TkUtil::CallbackSubst
-    module Grp
-      KEY         =           0x1
-      BUTTON      =           0x2
-      MOTION      =           0x4
-      CROSSING    =           0x8
-      FOCUS       =           0x10
-      EXPOSE      =           0x20
-      VISIBILITY  =           0x40
-      CREATE      =           0x80
-      DESTROY     =           0x100
-      UNMAP       =           0x200
-      MAP         =           0x400
-      REPARENT    =           0x800
-      CONFIG      =           0x1000
-      GRAVITY     =           0x2000
-      CIRC        =           0x4000
-      PROP        =           0x8000
-      COLORMAP    =           0x10000
-      VIRTUAL     =           0x20000
-      ACTIVATE    =           0x40000
-      MAPREQ      =           0x80000
-      CONFIGREQ   =           0x100000
-      RESIZEREQ   =           0x200000
-      CIRCREQ     =           0x400000
-
-      MWHEEL      =           0x10000000
-
-      ALL         =           0xFFFFFFFF
-
-      KEY_BUTTON_MOTION_VIRTUAL  = (KEY|MWHEEL|BUTTON|MOTION|VIRTUAL)
-      KEY_BUTTON_MOTION_CROSSING = (KEY|MWHEEL|BUTTON|MOTION|CROSSING|VIRTUAL)
-    end
-
-    type_data = [
-      #-----+-------------------+------------------+-----------------------#
-      #  ID |  const            |  group_flag      |  context_name         #
-      #-----+-------------------+------------------+-----------------------#
-      [  2,  :KeyPress,          Grp::KEY,         'KeyPress',    'Key'    ], 
-      [  3,  :KeyRelease,        Grp::KEY,         'KeyRelease'            ], 
-      [  4,  :ButtonPress,       Grp::BUTTON,      'ButtonPress', 'Button' ], 
-      [  5,  :ButtonRelease,     Grp::BUTTON,      'ButtonRelease'         ], 
-      [  6,  :MotionNotify,      Grp::MOTION,      'Motion'                ], 
-      [  7,  :EnterNotify,       Grp::CROSSING,    'Enter'                 ], 
-      [  8,  :LeaveNotify,       Grp::CROSSING,    'Leave'                 ], 
-      [  9,  :FocusIn,           Grp::FOCUS,       'FocusIn'               ], 
-      [ 10,  :FocusOut,          Grp::FOCUS,       'FocusOut'              ], 
-      [ 11,  :KeymapNotify,      0,                                        ], 
-      [ 12,  :Expose,            Grp::EXPOSE,      'Expose'                ], 
-      [ 13,  :GraphicsExpose,    Grp::EXPOSE,                              ], 
-      [ 14,  :NoExpose,          0,                                        ], 
-      [ 15,  :VisibilityNotify,  Grp::VISIBILITY,  'Visibility'            ], 
-      [ 16,  :CreateNotify,      Grp::CREATE,      'Create'                ], 
-      [ 17,  :DestroyNotify,     Grp::DESTROY,     'Destroy'               ], 
-      [ 18,  :UnmapNotify,       Grp::UNMAP,       'Unmap'                 ], 
-      [ 19,  :MapNotify,         Grp::MAP,         'Map'                   ], 
-      [ 20,  :MapRequest,        Grp::MAPREQ,      'MapRequest'            ], 
-      [ 21,  :ReparentNotify,    Grp::REPARENT,    'Reparent'              ], 
-      [ 22,  :ConfigureNotify,   Grp::CONFIG,      'Configure'             ], 
-      [ 23,  :ConfigureRequest,  Grp::CONFIGREQ,   'ConfigureRequest'      ], 
-      [ 24,  :GravityNotify,     Grp::GRAVITY,     'Gravity'               ], 
-      [ 25,  :ResizeRequest,     Grp::RESIZEREQ,   'ResizeRequest'         ], 
-      [ 26,  :CirculateNotify,   Grp::CIRC,        'Circulate'             ], 
-      [ 27,  :CirculateRequest,  0,                'CirculateRequest'      ], 
-      [ 28,  :PropertyNotify,    Grp::PROP,        'Property'              ], 
-      [ 29,  :SelectionClear,    0,                                        ], 
-      [ 30,  :SelectionRequest,  0,                                        ], 
-      [ 31,  :SelectionNotify,   0,                                        ], 
-      [ 32,  :ColormapNotify,    Grp::COLORMAP,    'Colormap'              ], 
-      [ 33,  :ClientMessage,     0,                                        ], 
-      [ 34,  :MappingNotify,     0,                                        ], 
-      [ 35,  :VirtualEvent,      Grp::VIRTUAL,                             ],
-      [ 36,  :ActivateNotify,    Grp::ACTIVATE,    'Activate'              ],
-      [ 37,  :DeactivateNotify,  Grp::ACTIVATE,    'Deactivate'            ],
-      [ 38,  :MouseWheelEvent,   Grp::MWHEEL,      'MouseWheel'            ],
-      [ 39,  :TK_LASTEVENT,      0,                                        ]
-    ]
-
-    module TypeNum
-    end
-
-    TYPE_NAME_TBL  = Hash.new
-    TYPE_ID_TBL    = Hash.new
-    TYPE_GROUP_TBL = Hash.new
-
-    type_data.each{|id, c_name, g_flag, *t_names|
-      TypeNum.const_set(c_name, id)
-      t_names.each{|t_name| t_name.freeze; TYPE_NAME_TBL[t_name] = id }
-      TYPE_ID_TBL[id]    = t_names
-      TYPE_GROUP_TBL[id] = g_flag
-    }
-
-    TYPE_NAME_TBL.freeze
-    TYPE_ID_TBL.freeze
-
-    def self.type_id(name)
-      TYPE_NAME_TBL[name.to_s]
-    end
-
-    def self.type_name(id)
-      TYPE_ID_TBL[id] && TYPE_ID_TBL[id][0]
-    end
-
-    def self.group_flag(id)
-      TYPE_GROUP_TBL[id] || 0
-    end
-
-    #############################################
-
-    module StateMask
-      ShiftMask      =        (1<<0)
-      LockMask       =        (1<<1)
-      ControlMask    =        (1<<2)
-      Mod1Mask       =        (1<<3)
-      Mod2Mask       =        (1<<4)
-      Mod3Mask       =        (1<<5)
-      Mod4Mask       =        (1<<6)
-      Mod5Mask       =        (1<<7)
-      Button1Mask    =        (1<<8)
-      Button2Mask    =        (1<<9)
-      Button3Mask    =        (1<<10)
-      Button4Mask    =        (1<<11)
-      Button5Mask    =        (1<<12)
-
-      AnyModifier    =        (1<<15)
-
-      META_MASK      =  (AnyModifier<<1)
-      ALT_MASK       =  (AnyModifier<<2)
-      EXTENDED_MASK  =  (AnyModifier<<3)
-
-      CommandMask    =  Mod1Mask
-      OptionMask     =  Mod2Mask
-    end
-
-    #############################################
-
-    FIELD_FLAG = {
-      # key  =>  flag
-      'above'       => Grp::CONFIG, 
-      'borderwidth' => (Grp::CREATE|Grp::CONFIG),
-      'button'      => Grp::BUTTON, 
-      'count'       => Grp::EXPOSE, 
-      'data'        => Grp::VIRTUAL, 
-      'delta'       => Grp::MWHEEL, 
-      'detail'      => (Grp::FOCUS|Grp::CROSSING),
-      'focus'       => Grp::CROSSING,
-      'height'      => (Grp::EXPOSE|Grp::CONFIG),
-      'keycode'     => Grp::KEY,
-      'keysym'      => Grp::KEY,
-      'mode'        => (Grp::CROSSING|Grp::FOCUS),
-      'override'    => (Grp::CREATE|Grp::MAP|Grp::REPARENT|Grp::CONFIG),
-      'place'       => Grp::CIRC,
-      'root'        => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING),
-      'rootx'       => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING),
-      'rooty'       => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING),
-      'sendevent'   => Grp::ALL,
-      'serial'      => Grp::ALL,
-      'state'       => (Grp::KEY_BUTTON_MOTION_VIRTUAL|
-                        Grp::CROSSING|Grp::VISIBILITY),
-      'subwindow'   => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING),
-      'time'        => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING|
-                        Grp::PROP),
-      'warp'        => Grp::KEY_BUTTON_MOTION_VIRTUAL,
-      'width'       => (Grp::EXPOSE|Grp::CREATE|Grp::CONFIG),
-      'window'      => (Grp::CREATE|Grp::UNMAP|Grp::MAP|Grp::REPARENT|
-                        Grp::CONFIG|Grp::GRAVITY|Grp::CIRC),
-      'when'        => Grp::ALL,
-      'x'           => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING|
-                        Grp::EXPOSE|Grp::CREATE|Grp::CONFIG|Grp::GRAVITY|
-                        Grp::REPARENT),
-      'y'           => (Grp::KEY_BUTTON_MOTION_VIRTUAL|Grp::CROSSING|
-                        Grp::EXPOSE|Grp::CREATE|Grp::CONFIG|Grp::GRAVITY|
-                        Grp::REPARENT),
-    }
-
-    FIELD_OPERATION = {
-      'root' => proc{|val| 
-        begin
-          Tk.tk_call_without_enc('winfo', 'pathname', val)
-          val
-        rescue
-          nil
-        end
-      }, 
-
-      'subwindow' => proc{|val| 
-        begin
-          Tk.tk_call_without_enc('winfo', 'pathname', val)
-          val
-        rescue
-          nil
-        end
-      }, 
-
-      'window' => proc{|val| nil}
-    }
-
-    #-------------------------------------------
-
-    def valid_fields(group_flag=nil)
-      group_flag = self.class.group_flag(self.type) unless group_flag
-
-      fields = {}
-      FIELD_FLAG.each{|key, flag|
-        next if (flag & group_flag) == 0
-        begin
-          val = self.__send__(key)
-        rescue
-          next
-        end
-        next if !val || val == '??'
-        fields[key] = val
-      }
-
-      fields
-    end
-
-    def valid_for_generate(group_flag=nil)
-      fields = valid_fields(group_flag)
-
-      FIELD_OPERATION.each{|key, cmd|
-        next unless fields.has_key?(key)
-        val = FIELD_OPERATION[key].call(fields[key])
-        if val
-          fields[key] = val
-        else
-          fields.delete(key)
-        end
-      }
-
-      fields
-    end
-
-    def generate(win, modkeys={})
-      klass = self.class
-
-      if modkeys.has_key?(:type) || modkeys.has_key?('type')
-        modkeys = TkComm._symbolkey2str(modkeys)
-        type_id = modkeys.delete('type')
-      else
-        type_id = self.type
-      end
-
-      type_name  = klass.type_name(type_id)
-      unless type_name
-        fail RuntimeError, "type_id #{type_id} is invalid"
-      end
-
-      group_flag = klass.group_flag(type_id)
-
-      opts = valid_for_generate(group_flag)
-
-      modkeys.each{|key, val|
-        if val
-          opts[key.to_s] = val
-        else
-          opts.delete(key.to_s)
-        end
-      }
-
-      if group_flag != Grp::KEY
-        Tk.event_generate(win, type_name, opts)
-      else
-        # If type is KEY event, focus should be set to target widget.
-        # If not set, original widget will get the same event. 
-        # That will make infinite loop.
-        w = Tk.tk_call_without_enc('focus')
-        begin
-          Tk.tk_call_without_enc('focus', win)
-          Tk.event_generate(win, type_name, opts)
-        ensure
-          Tk.tk_call_without_enc('focus', w)
-        end
-      end
-    end
-
-    #############################################
-
-    # [ <'%' subst-key char>, <proc type char>, <instance var (accessor) name>]
-    KEY_TBL = [
-      [ ?#, ?n, :serial ], 
-      [ ?a, ?s, :above ], 
-      [ ?b, ?n, :num ], 
-      [ ?c, ?n, :count ], 
-      [ ?d, ?s, :detail ], 
-      [ ?f, ?b, :focus ], 
-      [ ?h, ?n, :height ], 
-      [ ?i, ?s, :win_hex ], 
-      [ ?k, ?n, :keycode ], 
-      [ ?m, ?s, :mode ], 
-      [ ?o, ?b, :override ], 
-      [ ?p, ?s, :place ], 
-      [ ?s, ?x, :state ], 
-      [ ?t, ?n, :time ], 
-      [ ?w, ?n, :width ], 
-      [ ?x, ?n, :x ], 
-      [ ?y, ?n, :y ], 
-      [ ?A, ?s, :char ], 
-      [ ?B, ?n, :borderwidth ], 
-      [ ?D, ?n, :wheel_delta ], 
-      [ ?E, ?b, :send_event ], 
-      [ ?K, ?s, :keysym ], 
-      [ ?N, ?n, :keysym_num ], 
-      [ ?P, ?s, :property ], 
-      [ ?R, ?s, :rootwin_id ], 
-      [ ?S, ?s, :subwindow ], 
-      [ ?T, ?n, :type ], 
-      [ ?W, ?w, :widget ], 
-      [ ?X, ?n, :x_root ], 
-      [ ?Y, ?n, :y_root ], 
-      nil
-    ]
-
-    # [ <proc type char>, <proc/method to convert tcl-str to ruby-obj>]
-    PROC_TBL = [
-      [ ?n, TkComm.method(:num_or_str) ], 
-      [ ?s, TkComm.method(:string) ], 
-      [ ?b, TkComm.method(:bool) ], 
-      [ ?w, TkComm.method(:window) ], 
-
-      [ ?x, proc{|val|
-          begin
-            TkComm::number(val)
-          rescue ArgumentError
-            val
-          end
-        }
-      ], 
-
-      nil
-    ]
-
-    # setup tables to be used by scan_args, _get_subst_key, _get_all_subst_keys
-    #
-    #     _get_subst_key() and _get_all_subst_keys() generates key-string 
-    #     which describe how to convert callback arguments to ruby objects. 
-    #     When binding parameters are given, use _get_subst_key(). 
-    #     But when no parameters are given, use _get_all_subst_keys() to 
-    #     create a Event class object as a callback parameter. 
-    #
-    #     scan_args() is used when doing callback. It convert arguments 
-    #     ( which are Tcl strings ) to ruby objects based on the key string 
-    #     that is generated by _get_subst_key() or _get_all_subst_keys(). 
-    #
-    _setup_subst_table(KEY_TBL, PROC_TBL);
-
-    #
-    # NOTE: The order of parameters which passed to callback procedure is 
-    #        <extra_arg>, <extra_arg>, ... , <subst_arg>, <subst_arg>, ...
-    #
-
-    # If you need support extra arguments given by Tcl/Tk, 
-    # please override _get_extra_args_tbl
-    #
-    #def self._get_extra_args_tbl
-    #  # return an array of convert procs
-    #  []
-    #end
-
-=begin
-    alias button num
-    alias delta  wheel_delta
-    alias root   rootwin_id
-    alias rootx  x_root
-    alias root_x x_root
-    alias rooty  y_root
-    alias root_y y_root
-    alias sendevent send_event
-=end
-    ALIAS_TBL = {
-      :button    => :num, 
-      :data      => :detail, 
-      :delta     => :wheel_delta, 
-      :root      => :rootwin_id, 
-      :rootx     => :x_root, 
-      :root_x    => :x_root, 
-      :rooty     => :y_root, 
-      :root_y    => :y_root, 
-      :sendevent => :send_event, 
-      :window    => :widget
-    }
-
-    _define_attribute_aliases(ALIAS_TBL)
-
-  end
-
-  ###############################################
-
-  def install_bind_for_event_class(klass, cmd, *args)
-    extra_args_tbl = klass._get_extra_args_tbl
-
-    if args.compact.size > 0
-      args = args.join(' ')
-      keys = klass._get_subst_key(args)
-
-      if cmd.kind_of?(String)
-        id = cmd
-      elsif cmd.kind_of?(TkCallbackEntry)
-        id = install_cmd(cmd)
-      else
-        id = install_cmd(proc{|*arg|
-          ex_args = []
-          extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)}
-          begin
-            TkUtil.eval_cmd(cmd, *(ex_args.concat(klass.scan_args(keys, arg))))
-          rescue Exception=>e
-            if TkCore::INTERP.kind_of?(TclTkIp)
-              fail e
-            else
-              # MultiTkIp
-              fail Exception, "#{e.class}: #{e.message.dup}"
-            end
-          end
-        })
-      end
-    else
-      keys, args = klass._get_all_subst_keys
-
-      if cmd.kind_of?(String)
-        id = cmd
-      elsif cmd.kind_of?(TkCallbackEntry)
-        id = install_cmd(cmd)
-      else
-        id = install_cmd(proc{|*arg|
-          ex_args = []
-          extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)}
-          begin
-            TkUtil.eval_cmd(cmd, *(ex_args << klass.new(*klass.scan_args(keys, arg))))
-          rescue Exception=>e
-            if TkCore::INTERP.kind_of?(TclTkIp)
-              fail e
-            else
-              # MultiTkIp
-              fail Exception, "#{e.class}: #{e.message.dup}"
-            end
-          end
-        })
-      end
-    end
-
-    if TkCore::INTERP.kind_of?(TclTkIp)
-      id + ' ' + args
-    else
-      # MultiTkIp
-      "if {[set st [catch {#{id} #{args}} ret]] != 0} {
-         if {$st == 4} {
-           return -code continue $ret
-         } elseif {$st == 3} {
-           return -code break $ret
-         } elseif {$st == 2} {
-           return -code return $ret
-         } elseif {[regexp {^Exception: (TkCallbackContinue: .*)$} \
-                                                               $ret m msg]} {
-           return -code continue $msg
-         } elseif {[regexp {^Exception: (TkCallbackBreak: .*)$} $ret m msg]} {
-           return -code break $msg
-         } elseif {[regexp {^Exception: (TkCallbackReturn: .*)$} $ret m msg]} {
-           return -code return $msg
-         } elseif {[regexp {^Exception: (\\S+: .*)$} $ret m msg]} {
-           return -code return $msg
-         } else {
-           return -code error $ret
-         }
-       } else {
-          set ret
-       }"
-    end
-  end
-
-  def install_bind(cmd, *args)
-    install_bind_for_event_class(TkEvent::Event, cmd, *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/font.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/font.rb
deleted file mode 100644
index ab58ac5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/font.rb
+++ /dev/null
@@ -1,1762 +0,0 @@
-#
-#  tk/font.rb - the class to treat fonts on Ruby/Tk
-#
-#                               by  Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkFont
-  include Tk
-  extend TkCore
-
-  TkCommandNames = ['font'.freeze].freeze
-
-  Tk_FontID = ["@font".freeze, "00000".taint].freeze
-  Tk_FontNameTBL = TkCore::INTERP.create_table
-  Tk_FontUseTBL  = TkCore::INTERP.create_table
-
-  TkCore::INTERP.init_ip_env{ 
-    Tk_FontNameTBL.clear
-    Tk_FontUseTBL.clear
-  }
-
-  # option_type : default => string
-  OptionType = Hash.new(?s)
-  OptionType['size'] = ?n
-  OptionType['pointadjust'] = ?n
-  OptionType['underline'] = ?b
-  OptionType['overstrike'] = ?b
-
-  # metric_type : default => num_or_str
-  MetricType = Hash.new(?n)
-  MetricType['fixed'] = ?b
-
-  # set default font
-  case Tk::TK_VERSION
-  when /^4\.*/
-    DEFAULT_LATIN_FONT_NAME = 'a14'.freeze
-    DEFAULT_KANJI_FONT_NAME = 'k14'.freeze
-
-  when /^8\.*/
-    if JAPANIZED_TK
-      begin
-        fontnames = tk_call('font', 'names')
-        case fontnames
-        when /defaultgui/
-          # Tcl/Tk-JP for Windows
-          ltn = 'defaultgui'
-          knj = 'defaultgui'
-        when /Mincho:Helvetica-Bold-12/
-          # Tcl/Tk-JP for UNIX/X
-          ltn, knj = tk_split_simplelist(tk_call('font', 'configure', 
-                                                 'Mincho:Helvetica-Bold-12', 
-                                                 '-compound'))
-        else
-          # unknown Tcl/Tk-JP
-          #platform = tk_call('set', 'tcl_platform(platform)')
-          platform = Tk::PLATFORM['platform']
-          case platform
-          when 'unix'
-            ltn = {'family'=>'Helvetica'.freeze, 
-                   'size'=>-12, 'weight'=>'bold'.freeze}
-            #knj = 'k14'
-            #knj = '-misc-fixed-medium-r-normal--14-*-*-*-c-*-jisx0208.1983-0'
-            knj = '-*-fixed-bold-r-normal--12-*-*-*-c-*-jisx0208.1983-0'
-          when 'windows'
-            ltn = {'family'=>'MS Sans Serif'.freeze, 'size'=>8}
-            knj = 'mincho'
-          when 'macintosh'
-            ltn = 'system'
-            knj = 'mincho'
-          else # unknown
-            ltn = 'Helvetica'
-            knj = 'mincho'
-          end
-        end
-      rescue
-        ltn = 'Helvetica'
-        knj = 'mincho'
-      end
-
-    else # not JAPANIZED_TK
-      begin
-        #platform = tk_call('set', 'tcl_platform(platform)')
-        platform = Tk::PLATFORM['platform']
-        case platform
-        when 'unix'
-          ltn = {'family'=>'Helvetica'.freeze, 
-                 'size'=>-12, 'weight'=>'bold'.freeze}
-        when 'windows'
-          ltn = {'family'=>'MS Sans Serif'.freeze, 'size'=>8}
-        when 'macintosh'
-          ltn = 'system'
-        else # unknown
-          ltn = 'Helvetica'
-        end
-      rescue
-        ltn = 'Helvetica'
-      end
-
-      knj = ltn.dup
-    end
-
-    DEFAULT_LATIN_FONT_NAME = ltn.freeze
-    DEFAULT_KANJI_FONT_NAME = knj.freeze
-
-  else # unknown version
-    DEFAULT_LATIN_FONT_NAME = 'Helvetica'.freeze
-    DEFAULT_KANJI_FONT_NAME = 'mincho'.freeze
-
-  end
-
-  if $DEBUG
-    print "default latin font = "; p DEFAULT_LATIN_FONT_NAME
-    print "default kanji font = "; p DEFAULT_KANJI_FONT_NAME
-  end
-
-
-  ###################################
-  class DescendantFont
-    def initialize(compound, type)
-      unless compound.kind_of?(TkFont)
-        fail ArgumentError, "a TkFont object is expected for the 1st argument"
-      end
-      @compound = compound
-      case type
-      when 'kanji', 'latin', 'ascii'
-        @type = type
-      when :kanji, :latin, :ascii
-        @type = type.to_s
-      else
-        fail ArgumentError, "unknown type '#{type}'"
-      end
-    end
-
-    def dup
-      fail RuntimeError, "cannot dupulicate a descendant font"
-    end
-    def clone
-      fail RuntimeError, "cannot clone a descendant font"
-    end
-
-    def to_eval
-      @compound.__send__(@type + '_font_id')
-    end
-    def font
-      @compound.__send__(@type + '_font_id')
-    end
-
-    def [](slot)
-      @compound.__send__(@type + '_configinfo', slot)
-    end
-    def []=(slot, value)
-      @compound.__send__(@type + '_configure', slot, value)
-      value
-    end
-
-    def method_missing(id, *args)
-      @compound.__send__(@type + '_' + id.id2name, *args)
-    end
-  end
-
-
-  ###################################
-  # class methods
-  ###################################
-  def TkFont.actual(fnt, option=nil)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-     fnt.actual(option)
-    else
-      actual_core(fnt, nil, option)
-    end
-  end
-
-  def TkFont.actual_displayof(fnt, win, option=nil)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-     fnt.actual_displayof(win, option)
-    else
-      win = '.' unless win
-      actual_core(fnt, win, option)
-    end
-  end
-
-  def TkFont.configure(fnt, slot, value=None)
-    if fnt.kind_of?(TkFont)
-      fnt.configure(fnt, slot, value)
-    else
-      configure_core(fnt, slot, value)
-    end
-    fnt
-  end
-
-  def TkFont.configinfo(fnt, slot=nil)
-    if fnt.kind_of?(TkFont)
-      fnt.configinfo(fnt, slot)
-    else
-      configinfo_core(fnt, slot)
-    end
-  end
-
-  def TkFont.current_configinfo(fnt, slot=nil)
-    if fnt.kind_of?(TkFont)
-      fnt.current_configinfo(fnt, slot)
-    else
-      current_configinfo_core(fnt, slot)
-    end
-  end
-
-  def TkFont.measure(fnt, text)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-      fnt.measure(text)
-    else
-      measure_core(fnt, nil, text)
-    end
-  end
-
-  def TkFont.measure_displayof(fnt, win, text)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-      fnt.measure_displayof(win, text)
-    else
-      win = '.' unless win
-      measure_core(fnt, win, text)
-    end
-  end
-
-  def TkFont.metrics(fnt, option=nil)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-      fnt.metrics(option)
-    else
-      metrics_core(fnt, nil, option)
-    end
-  end
-
-  def TkFont.metrics_displayof(fnt, win, option=nil)
-    fnt = '{}' if fnt == ''
-    if fnt.kind_of?(TkFont)
-      font.metrics_displayof(win, option=nil)
-    else
-      win = '.' unless win
-      metrics_core(fnt, win, option)
-    end
-  end
-
-  def TkFont.families(win=nil)
-    case (Tk::TK_VERSION)
-    when /^4\.*/
-      ['fixed']
-
-    when /^8\.*/
-      if win
-        tk_split_simplelist(tk_call('font', 'families', '-displayof', win))
-      else
-        tk_split_simplelist(tk_call('font', 'families'))
-      end
-    end
-  end
-
-  def TkFont.names
-    case (Tk::TK_VERSION)
-    when /^4\.*/
-      r = ['fixed']
-      r += ['a14', 'k14'] if JAPANIZED_TK
-      Tk_FontNameTBL.each_value{|obj| r.push(obj)}
-      r | []
-
-    when /^8\.*/
-      tk_split_simplelist(tk_call('font', 'names'))
-
-    end
-  end
-
-  def TkFont.create_copy(font)
-    fail 'source-font must be a TkFont object' unless font.kind_of? TkFont
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      keys = {}
-      font.configinfo.each{|key,value| keys[key] = value }
-      TkFont.new(font.latin_font_id, font.kanji_font_id, keys)
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      TkFont.new(font.latin_font_id, font.kanji_font_id, font.configinfo)
-    end
-  end
-
-  def TkFont.get_obj(name)
-    if name =~ /^(@font[0-9]+)(|c|l|k)$/
-      Tk_FontNameTBL[$1]
-    else
-      nil
-    end
-  end
-
-  def TkFont.init_widget_font(pathname, *args)
-    win, tag, key = pathname.split(';')
-    key = 'font' if key == nil || key == ''
-    path = [win, tag, key].join(';')
-
-    case (Tk::TK_VERSION)
-    when /^4\.*/
-      regexp = /^-(|kanji)#{key} /
-
-      conf_list = tk_split_simplelist(tk_call(*args)).
-        find_all{|prop| prop =~ regexp}.
-        collect{|prop| tk_split_simplelist(prop)}
-
-      if conf_list.size == 0
-        raise RuntimeError, "the widget may not support 'font' option"
-      end
-
-      args << {}
-
-      ltn_key = "-#{key}"
-      knj_key = "-kanji#{key}"
-
-      ltn_info = conf_list.find{|conf| conf[0] == ltn_key}
-      ltn = ltn_info[-1]
-      ltn = nil if ltn == [] || ltn == ""
-
-      knj_info = conf_list.find{|conf| conf[0] == knj_key}
-      knj = knj_info[-1]
-      knj = nil if knj == [] || knj == ""
-
-      TkFont.new(ltn, knj).call_font_configure([path, key], *args)
-
-    when /^8\.*/
-      regexp = /^-#{key} /
-
-      conf_list = tk_split_simplelist(tk_call(*args)).
-        find_all{|prop| prop =~ regexp}.
-        collect{|prop| tk_split_simplelist(prop)}
-
-      if conf_list.size == 0
-        raise RuntimeError, "the widget may not support 'font' option"
-      end
-
-      args << {}
-
-      optkey = "-#{key}"
-
-      info = conf_list.find{|conf| conf[0] == optkey}
-      fnt = info[-1]
-      fnt = nil if fnt == [] || fnt == ""
-
-      unless fnt
-        # create dummy
-        # TkFont.new(nil, nil).call_font_configure([path, key], *args)
-        dummy_fnt = TkFont.allocate
-        dummy_fnt.instance_eval{ init_dummy_fontobj() }
-        dummy_fnt
-      else
-        begin
-          compound = tk_split_simplelist(
-              Hash[*tk_split_simplelist(tk_call('font', 'configure', 
-                                                fnt))].collect{|k,v|
-                [k[1..-1], v]
-              }.assoc('compound')[1])
-        rescue
-          compound = []
-        end
-        if compound == []
-          TkFont.new(fnt).call_font_configure([path, key], *args)
-        else
-          TkFont.new(compound[0], 
-                     compound[1]).call_font_configure([path, key], *args)
-        end
-      end
-    end
-  end
-
-  def TkFont.used_on(path=nil)
-    if path
-      Tk_FontUseTBL[path]
-    else
-      Tk_FontUseTBL.values | []
-    end
-  end
-
-  def TkFont.failsafe(font)
-    begin
-      if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK
-        tk_call('font', 'failsafe', font)
-      end
-    rescue
-    end
-  end
-
-  ###################################
-  # instance methods
-  ###################################
-  private
-  ###################################
-  def init_dummy_fontobj
-    @id = Tk_FontID.join(TkCore::INTERP._ip_id_)
-    Tk_FontID[1].succ!
-    Tk_FontNameTBL[@id] = self
-
-    @latin_desscendant = nil
-    @kanji_desscendant = nil
-
-    case (Tk::TK_VERSION)
-    when /^4\.*/
-      @latinfont = ""
-      @kanjifont = ""
-      if JAPANIZED_TK
-        @compoundfont = [[@latinfont], [@kanjifont]]
-        @fontslot = {'font'=>@latinfont, 'kanjifont'=>@kanjifont}
-      else
-        @compoundfont = @latinfont
-        @fontslot = {'font'=>@latinfont}
-      end
-    else
-      @latinfont = @id + 'l'
-      @kanjifont = @id + 'k'
-      @compoundfont = @id + 'c'
-
-      if JAPANIZED_TK
-        tk_call('font', 'create', @latinfont, '-charset', 'iso8859')
-        tk_call('font', 'create', @kanjifont, '-charset', 'jisx0208.1983')
-        tk_call('font', 'create', @compoundfont, 
-                '-compound', [@latinfont, @kanjifont])
-      else
-        tk_call('font', 'create', @latinfont)
-        tk_call('font', 'create', @kanjifont)
-        tk_call('font', 'create', @compoundfont)
-      end
-
-      @fontslot = {'font'=>@compoundfont}
-    end
-
-    self
-  end
-
-  def initialize(ltn=nil, knj=nil, keys=nil)
-    ltn = '{}' if ltn == ''
-    knj = '{}' if knj == ''
-
-    # @id = Tk_FontID.join('')
-    @id = Tk_FontID.join(TkCore::INTERP._ip_id_)
-    Tk_FontID[1].succ!
-    Tk_FontNameTBL[@id] = self
-
-    @latin_desscendant = nil
-    @kanji_desscendant = nil
-
-    if knj.kind_of?(Hash) && !keys
-      keys = knj
-      knj = nil
-    end
-
-    # compound font check
-    if Tk::TK_VERSION == '8.0' && JAPANIZED_TK
-      begin
-        compound = tk_split_simplelist(tk_call('font', 'configure', 
-                                               ltn, '-compound'))
-        if knj == nil
-          if compound != []
-            ltn, knj = compound
-          end
-        else
-          if compound != []
-            ltn = compound[0]
-          end
-          compound = tk_split_simplelist(tk_call('font', 'configure', 
-                                                 knj, '-compound'))
-          if compound != []
-            knj = compound[1]
-          end
-        end
-      rescue
-      end
-    end
-
-    if ltn
-      if JAPANIZED_TK && !knj
-        if Tk::TK_VERSION =~ /^4.*/
-          knj = DEFAULT_KANJI_FONT_NAME
-        else
-          knj = ltn 
-        end
-      end
-    else
-      ltn = DEFAULT_LATIN_FONT_NAME
-      knj = DEFAULT_KANJI_FONT_NAME if JAPANIZED_TK && !knj
-    end
-
-    create_compoundfont(ltn, knj, keys)
-  end
-
-  def initialize_copy(font)
-    unless font.kind_of?(TkFont)
-      fail TypeError, '"initialize_copy should take same class object'
-    end
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      keys = {}
-      font.configinfo.each{|key,value| keys[key] = value }
-      initialize(font.latin_font_id, font.kanji_font_id, keys)
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      initialize(font.latin_font_id, font.kanji_font_id, font.configinfo)
-    end
-  end
-
-  def _get_font_info_from_hash(font)
-    font = _symbolkey2str(font)
-    foundry  = (info = font['foundry'] .to_s)?  info: '*'
-    family   = (info = font['family']  .to_s)?  info: '*'
-    weight   = (info = font['weight']  .to_s)?  info: '*'
-    slant    = (info = font['slant']   .to_s)?  info: '*'
-    swidth   = (info = font['swidth']  .to_s)?  info: '*'
-    adstyle  = (info = font['adstyle'] .to_s)?  info: '*'
-    pixels   = (info = font['pixels']  .to_s)?  info: '*'
-    points   = (info = font['points']  .to_s)?  info: '*'
-    resx     = (info = font['resx']    .to_s)?  info: '*'
-    resy     = (info = font['resy']    .to_s)?  info: '*'
-    space    = (info = font['space']   .to_s)?  info: '*'
-    avgWidth = (info = font['avgWidth'].to_s)?  info: '*'
-    charset  = (info = font['charset'] .to_s)?  info: '*'
-    encoding = (info = font['encoding'].to_s)?  info: '*'
-
-    [foundry, family, weight, slant, swidth, adstyle,
-      pixels, points, resx, resy, space, avgWidth, charset, encoding]
-  end
-
-  def create_latinfont_tk4x(font)
-    if font.kind_of? Hash
-      @latinfont = '-' + _get_font_info_from_hash(font).join('-') + '-'
-
-    elsif font.kind_of? Array
-      finfo = {}
-      finfo['family'] = font[0].to_s
-      if font[1]
-        fsize = font[1].to_s
-        if fsize != '0' && fsize =~ /^(|\+|-)([0-9]+)$/
-          if $1 == '-'
-            finfo['pixels'] = $2
-          else
-            finfo['points'] = $2
-          end
-        else
-          finfo['points'] = '13'
-        end
-      end
-      font[2..-1].each{|style|
-        case (style)
-        when 'normal'
-          finfo['weight'] = style
-        when 'bold'
-          finfo['weight'] = style
-        when 'roman'
-          finfo['slant'] = 'r'
-        when 'italic'
-          finfo['slant'] = 'i'
-        end
-      }
-
-      @latinfont = '-' + _get_font_info_from_hash(finfo).join('-') + '-'
-
-    elsif font.kind_of? TkFont
-      @latinfont = font.latin_font
-
-    else
-      if font
-        @latinfont = font
-      else
-        @latinfont = DEFAULT_LATIN_FONT_NAME
-      end
-
-    end
-  end
-
-  def create_kanjifont_tk4x(font)
-    unless JAPANIZED_TK
-      @kanjifont = ""
-      return
-    end
-
-    if font.kind_of? Hash
-      @kanjifont = '-' + _get_font_info_from_hash(font).join('-') + '-'
-
-    elsif font.kind_of? Array
-      finfo = {}
-      finfo['family'] = font[0].to_s
-      if font[1]
-        fsize = font[1].to_s
-        if fsize != '0' && fsize =~ /^(|\+|-)([0-9]+)$/
-          if $1 == '-'
-            finfo['pixels'] = $2
-          else
-            finfo['points'] = $2
-          end
-        else
-          finfo['points'] = '13'
-        end
-      end
-      font[2..-1].each{|style|
-        case (style)
-        when 'normal'
-          finfo['weight'] = style
-        when 'bold'
-          finfo['weight'] = style
-        when 'roman'
-          finfo['slant'] = 'r'
-        when 'italic'
-          finfo['slant'] = 'i'
-        end
-      }
-
-      @kanjifont = '-' + _get_font_info_from_hash(finfo).join('-') + '-'
-    elsif font.kind_of? TkFont
-      @kanjifont = font.kanji_font_id
-    else
-      if font
-        @kanjifont = font
-      else
-        @kanjifont = DEFAULT_KANJI_FONT_NAME
-      end
-    end
-  end
-
-  def create_compoundfont_tk4x(ltn, knj, keys)
-    create_latinfont(ltn)
-    create_kanjifont(knj)
-
-    if JAPANIZED_TK
-      @compoundfont = [[@latinfont], [@kanjifont]]
-      @fontslot = {'font'=>@latinfont, 'kanjifont'=>@kanjifont}
-    else
-      @compoundfont = @latinfont
-      @fontslot = {'font'=>@latinfont}
-    end
-  end
-
-  def create_latinfont_tk8x(font)
-    @latinfont = @id + 'l'
-
-    if JAPANIZED_TK
-      if font.kind_of? Hash
-        if font[:charset] || font['charset']
-          tk_call('font', 'create', @latinfont, *hash_kv(font))
-        else
-          tk_call('font', 'create', @latinfont, 
-                  '-charset', 'iso8859', *hash_kv(font))
-        end
-      elsif font.kind_of? Array
-        tk_call('font', 'create', @latinfont, '-copy', array2tk_list(font))
-        tk_call('font', 'configure', @latinfont, '-charset', 'iso8859')
-      elsif font.kind_of? TkFont
-        tk_call('font', 'create', @latinfont, '-copy', font.latin_font)
-      elsif font
-        tk_call('font', 'create', @latinfont, '-copy', font, 
-                '-charset', 'iso8859')
-      else
-        tk_call('font', 'create', @latinfont, '-charset', 'iso8859')
-      end
-    else
-      if font.kind_of? Hash
-        tk_call('font', 'create', @latinfont, *hash_kv(font))
-      else
-        keys = {}
-        if font.kind_of? Array
-          actual_core(array2tk_list(font)).each{|key,val| keys[key] = val}
-        elsif font.kind_of? TkFont
-          actual_core(font.latin_font).each{|key,val| keys[key] = val}
-        elsif font
-          actual_core(font).each{|key,val| keys[key] = val}
-        end
-        tk_call('font', 'create', @latinfont, *hash_kv(keys))
-      end
-
-      if font && @compoundfont
-        keys = {}
-        actual_core(@latinfont).each{|key,val| keys[key] = val}
-        tk_call('font', 'configure', @compoundfont, *hash_kv(keys))
-      end
-    end
-  end
-
-  def create_kanjifont_tk8x(font)
-    @kanjifont = @id + 'k'
-
-    if JAPANIZED_TK
-      if font.kind_of? Hash
-        if font[:charset] || font['charset']
-          tk_call('font', 'create', @kanjifont, *hash_kv(font))
-        else
-          tk_call('font', 'create', @kanjifont, 
-                  '-charset', 'jisx0208.1983', *hash_kv(font))
-        end
-      elsif font.kind_of? Array
-        tk_call('font', 'create', @kanjifont, '-copy', array2tk_list(font))
-        tk_call('font', 'configure', @kanjifont, '-charset', 'jisx0208.1983')
-      elsif font.kind_of? TkFont
-        tk_call('font', 'create', @kanjifont, '-copy', font.kanji_font_id)
-      elsif font
-        tk_call('font', 'create', @kanjifont, '-copy', font, 
-                '-charset', 'jisx0208.1983')
-      else
-        tk_call('font', 'create', @kanjifont, '-charset', 'jisx0208.1983')
-      end
-      # end of JAPANIZED_TK
-
-    else
-      if font.kind_of? Hash
-        tk_call('font', 'create', @kanjifont, *hash_kv(font))
-      else
-        keys = {}
-        if font.kind_of? Array
-          actual_core(array2tk_list(font)).each{|key,val| keys[key] = val}
-        elsif font.kind_of? TkFont
-          actual_core(font.kanji_font_id).each{|key,val| keys[key] = val}
-        elsif font
-          actual_core(font).each{|key,val| keys[key] = val}
-        end
-        tk_call('font', 'create', @kanjifont, *hash_kv(keys))
-      end
-
-      if font && @compoundfont
-        keys = {}
-        actual_core(@kanjifont).each{|key,val| keys[key] = val}
-        tk_call('font', 'configure', @compoundfont, *hash_kv(keys))
-      end
-    end
-  end
-
-  def create_compoundfont_tk8x(ltn, knj, keys)
-    if knj
-      create_latinfont(ltn)
-      create_kanjifont(knj)
-    else
-      cfnt = ltn
-      create_kanjifont(cfnt)
-      create_latinfont(cfnt)
-    end
-
-    @compoundfont = @id + 'c'
-
-    if JAPANIZED_TK
-      unless keys
-        keys = {}
-      else
-        keys = keys.dup
-      end
-      if (tk_call('font', 'configure', @latinfont, '-underline') == '1' &&
-          tk_call('font', 'configure', @kanjifont, '-underline') == '1' &&
-          !keys.key?('underline'))
-        keys['underline'] = true
-      end
-      if (tk_call('font', 'configure', @latinfont, '-overstrike') == '1' &&
-          tk_call('font', 'configure', @kanjifont, '-overstrike') == '1' &&
-          !keys.key?('overstrike'))
-        keys['overstrike'] = true
-      end
-
-      @fontslot = {'font'=>@compoundfont}
-      begin
-        tk_call('font', 'create', @compoundfont, 
-                '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-      rescue RuntimeError => e
-        if ltn == knj
-          if e.message =~ /kanji font .* specified/
-            tk_call('font', 'delete', @latinfont)
-            create_latinfont(DEFAULT_LATIN_FONT_NAME)
-            opts = []
-            Hash[*(tk_split_simplelist(tk_call('font', 'configure', 
-                                               @kanjifont)))].each{|k,v|
-              case k
-              when '-size', '-weight', '-slant', '-underline', '-overstrike'
-                opts << k << v
-              end
-            }
-            tk_call('font', 'configure', @latinfont, *opts)
-            tk_call('font', 'create', @compoundfont, 
-                    '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-
-          elsif e.message =~ /ascii font .* specified/
-            tk_call('font', 'delete', @kanjifont)
-            create_kanjifont(DEFAULT_KANJI_FONT_NAME)
-            opts = []
-            Hash[*(tk_split_simplelist(tk_call('font', 'configure', 
-                                               @latinfont)))].each{|k,v|
-              case k
-              when '-size', '-weight', '-slant', '-underline', '-overstrike'
-                opts << k << v
-              end
-            }
-            tk_call('font', 'configure', @kanjifont, *opts)
-            tk_call('font', 'create', @compoundfont, 
-                    '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-
-          else
-            raise e
-          end
-        else
-          raise e
-        end
-      end
-    else
-      tk_call('font', 'create', @compoundfont)
-
-      latinkeys = {}
-      begin
-        actual_core(@latinfont).each{|key,val| latinkeys[key] = val}
-      rescue
-        latinkeys = {}
-      end
-      if latinkeys != {}
-        tk_call('font', 'configure', @compoundfont, *hash_kv(latinkeys))
-      end
-
-      if knj
-        compoundkeys = nil
-        kanjikeys = {}
-        begin
-          actual_core(@kanjifont).each{|key,val| kanjikeys[key] = val}
-        rescue
-          kanjikeys = {}
-        end
-        if kanjikeys != {}
-          tk_call('font', 'configure', @compoundfont, *hash_kv(kanjikeys))
-        end
-      end
-
-      if cfnt
-        if cfnt.kind_of?(Hash)
-          compoundkeys = cfnt.dup
-        else
-          compoundkeys = {}
-          actual_core(cfnt).each{|key,val| compoundkeys[key] = val}
-        end
-        compoundkeys.update(_symbolkey2str(keys))
-        keys = compoundkeys
-      end
-
-      @fontslot = {'font'=>@compoundfont}
-      tk_call('font', 'configure', @compoundfont, *hash_kv(keys))
-    end
-  end
-
-  ###################################
-  public
-  ###################################
-  def inspect
-    sprintf("#<%s:%0x:%s>", self.class.inspect, self.__id__, @compoundfont)
-  end
-
-  def method_missing(id, *args)
-    name = id.id2name
-    case args.length
-    when 1
-      if name[-1] == ?=
-        configure name[0..-2], args[0]
-        args[0]
-      else
-        configure name, args[0]
-        self
-      end
-    when 0
-      begin
-        configinfo name
-      rescue
-        super(id, *args)
-#        fail NameError, "undefined local variable or method `#{name}' for #{self.to_s}", error_at
-      end
-    else
-      super(id, *args)
-#      fail NameError, "undefined method `#{name}' for #{self.to_s}", error_at
-    end
-  end
-
-  def call_font_configure(path, *args)
-    if path.kind_of?(Array)
-      # [path, optkey]
-      win, tag = path[0].split(';')
-      optkey = path[1].to_s
-    else
-      win, tag, optkey = path.split(';')
-    end
-
-    fontslot = _symbolkey2str(@fontslot)
-    if optkey && optkey != ""
-      ltn = fontslot.delete('font')
-      knj = fontslot.delete('kanjifont')
-      fontslot[optkey] = ltn if ltn
-      fontslot["kanji#{optkey}"] = knj if knj
-    end
-
-    keys = _symbolkey2str(args.pop).update(fontslot)
-    args.concat(hash_kv(keys))
-    tk_call(*args)
-    Tk_FontUseTBL[[win, tag, optkey].join(';')] = self
-    self
-  end
-
-  def used
-    ret = []
-    Tk_FontUseTBL.each{|key,value|
-      next unless self == value
-      if key.include?(';')
-        win, tag, optkey = key.split(';')
-        winobj = tk_tcl2ruby(win)
-        if winobj.kind_of? TkText
-          if optkey
-            ret.push([winobj, winobj.tagid2obj(tag), optkey])
-          else
-            ret.push([winobj, winobj.tagid2obj(tag)])
-          end
-        elsif winobj.kind_of? TkCanvas
-          if (tagobj = TkcTag.id2obj(winobj, tag)).kind_of? TkcTag
-            if optkey
-              ret.push([winobj, tagobj, optkey])
-            else
-              ret.push([winobj, tagobj])
-            end
-          elsif (tagobj = TkcItem.id2obj(winobj, tag)).kind_of? TkcItem
-            if optkey
-              ret.push([winobj, tagobj, optkey])
-            else
-              ret.push([winobj, tagobj])
-            end
-          else
-            if optkey
-              ret.push([winobj, tag, optkey])
-            else
-              ret.push([winobj, tag])
-            end
-          end
-        elsif winobj.kind_of? TkMenu
-          if optkey
-            ret.push([winobj, tag, optkey])
-          else
-            ret.push([winobj, tag])
-          end
-        else
-          if optkey
-            ret.push([win, tag, optkey])
-          else
-            ret.push([win, tag])
-          end
-        end
-      else
-        ret.push(tk_tcl2ruby(key))
-      end
-    }
-    ret
-  end
-
-  def id
-    @id
-  end
-
-  def to_eval
-    font
-  end
-
-  def font
-    @compoundfont
-  end
-  alias font_id font
-
-  def latin_font_id
-    @latinfont
-  end
-
-  def latin_font
-    # @latinfont
-    if @latin_descendant
-      @latin_descendant
-    else
-      @latin_descendant = DescendantFont.new(self, 'latin')
-    end
-  end
-  alias latinfont latin_font
-
-  def kanji_font_id
-    @kanjifont
-  end
-
-  def kanji_font
-    # @kanjifont
-    if @kanji_descendant
-      @kanji_descendant
-    else
-      @kanji_descendant = DescendantFont.new(self, 'kanji')
-    end
-  end
-  alias kanjifont kanji_font
-
-  def actual(option=nil)
-    actual_core(@compoundfont, nil, option)
-  end
-
-  def actual_displayof(win, option=nil)
-    win = '.' unless win
-    actual_core(@compoundfont, win, option)
-  end
-
-  def latin_actual(option=nil)
-    actual_core(@latinfont, nil, option)
-  end
-
-  def latin_actual_displayof(win, option=nil)
-    win = '.' unless win
-    actual_core(@latinfont, win, option)
-  end
-
-  def kanji_actual(option=nil)
-    #if JAPANIZED_TK
-    if @kanjifont != ""
-      actual_core(@kanjifont, nil, option)
-    else
-      actual_core_tk4x(nil, nil, option)
-    end
-  end
-
-  def kanji_actual_displayof(win, option=nil)
-    #if JAPANIZED_TK
-    if @kanjifont != ""
-      win = '.' unless win
-      actual_core(@kanjifont, win, option)
-    else
-      actual_core_tk4x(nil, win, option)
-    end
-  end
-
-  def [](slot)
-    configinfo slot
-  end
-
-  def []=(slot, val)
-    configure slot, val
-    val
-  end
-
-  def configure(slot, value=None)
-    configure_core(@compoundfont, slot, value)
-    self
-  end
-
-  def configinfo(slot=nil)
-    configinfo_core(@compoundfont, slot)
-  end
-
-  def current_configinfo(slot=nil)
-    current_configinfo_core(@compoundfont, slot)
-  end
-
-  def delete
-    delete_core
-  end
-
-  def latin_configure(slot, value=None)
-    if JAPANIZED_TK
-      configure_core(@latinfont, slot, value)
-    else
-      configure(slot, value)
-    end
-    self
-  end
-
-  def latin_configinfo(slot=nil)
-    if JAPANIZED_TK
-      configinfo_core(@latinfont, slot)
-    else
-      configinfo(slot)
-    end
-  end
-
-  def kanji_configure(slot, value=None)
-    #if JAPANIZED_TK
-    if @kanjifont != ""
-      configure_core(@kanjifont, slot, value)
-      configure('size'=>configinfo('size')) # to reflect new configuration
-    else
-      #""
-      configure(slot, value)
-    end
-    self
-  end
-
-  def kanji_configinfo(slot=nil)
-    #if JAPANIZED_TK
-    if @kanjifont != ""
-      configinfo_core(@kanjifont, slot)
-    else
-      #[]
-      configinfo(slot)
-    end
-  end
-
-  def replace(ltn, knj=None)
-    knj = ltn if knj == None
-    latin_replace(ltn)
-    kanji_replace(knj)
-    self
-  end
-
-  def latin_replace(ltn)
-    latin_replace_core(ltn)
-    reset_pointadjust
-    self
-  end
-
-  def kanji_replace(knj)
-    kanji_replace_core(knj)
-    reset_pointadjust
-    self
-  end
-
-  def measure(text)
-    measure_core(@compoundfont, nil, text)
-  end
-
-  def measure_displayof(win, text)
-    win = '.' unless win
-    measure_core(@compoundfont, win, text)
-  end
-
-  def metrics(option=nil)
-    metrics_core(@compoundfont, nil, option)
-  end
-
-  def metrics_displayof(win, option=nil)
-    win = '.' unless win
-    metrics_core(@compoundfont, win, option)
-  end
-
-  def latin_metrics(option=nil)
-    metrics_core(@latinfont, nil, option)
-  end
-
-  def latin_metrics_displayof(win, option=nil)
-    win = '.' unless win
-    metrics_core(@latinfont, win, option)
-  end
-
-  def kanji_metrics(option=nil)
-    if JAPANIZED_TK
-      metrics_core(@kanjifont, nil, option)
-    else
-      metrics_core_tk4x(nil, nil, option)
-    end
-  end
-
-  def kanji_metrics_displayof(win, option=nil)
-    if JAPANIZED_TK
-      win = '.' unless win
-      metrics_core(@kanjifont, win, option)
-    else
-      metrics_core_tk4x(nil, win, option)
-    end
-  end
-
-  def reset_pointadjust
-    begin
-      if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK
-        configure('pointadjust' => latin_actual.assoc('size')[1].to_f / 
-                                      kanji_actual.assoc('size')[1].to_f )
-      end
-    rescue
-    end
-    self
-  end
-
-  ###################################
-  # private alias
-  ###################################
-  case (Tk::TK_VERSION)
-  when /^4\.*/
-    alias create_latinfont        create_latinfont_tk4x
-    alias create_kanjifont        create_kanjifont_tk4x
-    alias create_compoundfont     create_compoundfont_tk4x
-
-  when /^8\.[0-5]/
-    alias create_latinfont        create_latinfont_tk8x
-    alias create_kanjifont        create_kanjifont_tk8x
-    alias create_compoundfont     create_compoundfont_tk8x
-
-  else
-    alias create_latinfont        create_latinfont_tk8x
-    alias create_kanjifont        create_kanjifont_tk8x
-    alias create_compoundfont     create_compoundfont_tk8x
-
-  end
-
-  ###################################
-  # public alias
-  ###################################
-  alias ascii_font             latin_font
-  alias asciifont              latinfont
-  alias create_asciifont       create_latinfont
-  alias ascii_actual           latin_actual
-  alias ascii_actual_displayof latin_actual_displayof
-  alias ascii_configure        latin_configure
-  alias ascii_configinfo       latin_configinfo
-  alias ascii_replace          latin_replace
-  alias ascii_metrics          latin_metrics
-
-  ###################################
-=begin
-  def dup
-    TkFont.new(self)
-  end
-  def clone
-    TkFont.new(self)
-  end
-=end
-end
-
-module TkFont::CoreMethods
-  include Tk
-  extend TkCore
-
-  private
-
-  def actual_core_tk4x(font, win=nil, option=nil)
-    # dummy
-    if option == 'pointadjust' || option == :pointadjust
-        1.0
-    elsif option
-      case TkFont::OptionType[option.to_s]
-      when ?n
-        0
-      when ?b
-        false
-      else
-        ''
-      end
-    else
-      [['family',''], ['size',0], ['weight',''], ['slant',''], 
-        ['underline',false], ['overstrike',false], ['charset',''], 
-        ['pointadjust',0]]
-    end
-  end
-
-  def actual_core_tk8x(font, win=nil, option=nil)
-    font = '{}' if font == ''
-
-    if option == 'compound' || option == :compound
-      ""
-    elsif option
-      if win
-        val = tk_call('font', 'actual', font, 
-                      "-displayof", win, "-#{option}")
-      else
-        val = tk_call('font', 'actual', font, "-#{option}")
-      end
-      case TkFont::OptionType[option.to_s]
-      when ?n
-        num_or_str(val)
-      when ?b
-        bool(val)
-      else
-        val
-      end
-    else
-      l = tk_split_simplelist(if win
-                                 tk_call('font', 'actual', font, 
-                                                     "-displayof", win)
-                              else
-                                 tk_call('font', 'actual', font)
-                              end)
-      r = []
-      while key=l.shift
-        if key == '-compound'
-          l.shift
-        else
-          key = key[1..-1]
-          val = l.shift
-          case TkFont::OptionType[key]
-          when ?n
-            r.push [key, num_or_str(val)]
-          when ?b
-            r.push [key, bool(val)]
-          else
-            r.push [key, val]
-          end
-        end
-      end
-      r
-    end
-  end
-
-  def configure_core_tk4x(font, slot, value=None)
-    #""
-    self
-  end
-
-  def configinfo_core_tk4x(font, option=nil)
-    # dummy
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      if option == 'pointadjust' || option == :pointadjust
-        1.0
-      elsif option
-        case TkFont::OptionType[option.to_s]
-        when ?n
-          0
-        when ?b
-          false
-        else
-          ''
-        end
-      else
-        [['family',''], ['size',0], ['weight',''], ['slant',''], 
-          ['underline',false], ['overstrike',false], ['charset',''], 
-          ['pointadjust',1.0]]
-      end
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      current_configinfo_core_tk4x(font, option)
-    end
-  end
-
-  def current_configinfo_core_tk4x(font, option=nil)
-    if option
-      case TkFont::OptionType[option.to_s]
-      when ?n
-        0
-      when ?b
-        false
-      else
-        ''
-      end
-    else
-      {'family'=>'', 'size'=>0, 'weight'=>'', 'slant'=>'', 
-        'underline'=>false, 'overstrike'=>false, 
-        'charset'=>false, 'pointadjust'=>1.0}
-    end
-  end
-
-  def configure_core_tk8x(font, slot, value=None)
-    if JAPANIZED_TK
-      begin
-        padjust = tk_call('font', 'configure', font, '-pointadjust')
-      rescue
-        padjust = nil
-      end
-    else
-      padjust = nil
-    end
-    if slot.kind_of? Hash
-      if JAPANIZED_TK && (slot.key?('family') || slot.key?(:family))
-        slot = _symbolkey2str(slot)
-        configure_core_tk8x(font, 'family', slot.delete('family'))
-      end
-
-      if ((slot.key?('size') || slot.key?(:size)) && 
-          padjust && !slot.key?('pointadjust') && !slot.key?(:pointadjust))
-        tk_call('font', 'configure', font, 
-                '-pointadjust', padjust, *hash_kv(slot))
-      else
-        tk_call('font', 'configure', font, *hash_kv(slot))
-      end
-    elsif (slot == 'size' || slot == :size) && padjust != nil
-      tk_call('font', 'configure', font, 
-              "-#{slot}", value, '-pointadjust', padjust)
-    elsif JAPANIZED_TK && (slot == 'family' || slot == :family)
-      # coumpund font?
-      begin
-        compound = tk_split_simplelist(tk_call('font', 'configure', 
-                                               font, '-compound'))
-      rescue
-        tk_call('font', 'configure', font, '-family', value)
-        return self
-      end
-      if compound == []
-        tk_call('font', 'configure', font, '-family', value)
-        return self
-      end
-      ltn, knj = compound
-
-      lfnt = tk_call('font', 'create', '-copy', ltn)
-      begin
-        tk_call('font', 'configure', lfnt, '-family', value)
-        latin_replace_core_tk8x(lfnt)
-      rescue RuntimeError => e
-        fail e if $DEBUG
-      ensure
-        tk_call('font', 'delete', lfnt) if lfnt != ''
-      end
-
-      kfnt = tk_call('font', 'create', '-copy', knj)
-      begin
-        tk_call('font', 'configure', kfnt, '-family', value)
-        kanji_replace_core_tk8x(lfnt)
-      rescue RuntimeError => e
-        fail e if $DEBUG
-      ensure
-        tk_call('font', 'delete', kfnt) if kfnt != ''
-      end
-      
-    else
-      tk_call('font', 'configure', font, "-#{slot}", value)
-    end
-    self
-  end
-
-  def configinfo_core_tk8x(font, option=nil)
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      if option == 'compound' || option == :compound
-        ""
-      elsif option
-        val = tk_call('font', 'configure', font, "-#{option}")
-        case TkFont::OptionType[option.to_s]
-        when ?n
-          num_or_str(val)
-        when ?b
-          bool(val)
-        else
-          val
-        end
-      else
-        l = tk_split_simplelist(tk_call('font', 'configure', font))
-        r = []
-        while key=l.shift
-          if key == '-compound'
-            l.shift
-          else
-            key = key[1..-1]
-            val = l.shift
-            case TkFont::OptionType[key]
-            when ?n
-              r.push [key, num_or_str(val)]
-            when ?b
-              r.push [key, bool(val)]
-            else
-              r.push [key, val]
-            end
-          end
-        end
-        r
-      end
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      current_configinfo_core_tk8x(font, option)
-    end
-  end
-
-  def current_configinfo_core_tk8x(font, option=nil)
-    if option == 'compound'
-      ""
-    elsif option
-      val = tk_call('font', 'configure', font, "-#{option}")
-      case TkFont::OptionType[option.to_s]
-      when ?n
-        num_or_str(val)
-      when ?b
-        bool(val)
-      else
-        val
-      end
-    else
-      l = tk_split_simplelist(tk_call('font', 'configure', font))
-      h = {}
-      while key=l.shift
-        if key == '-compound'
-          l.shift
-        else
-          key = key[1..-1]
-          val = l.shift
-          case TkFont::OptionType[key]
-          when ?n
-            h[key] = num_or_str(val)
-          when ?b
-            h[key] = bool(val)
-          else
-            h[key] = val
-          end
-        end
-      end
-      h
-    end
-  end
-
-  def delete_core_tk4x
-    TkFont::Tk_FontNameTBL.delete(@id)
-    TkFont::Tk_FontUseTBL.delete_if{|key,value| value == self}
-  end
-
-  def delete_core_tk8x
-    begin
-      tk_call('font', 'delete', @latinfont)
-    rescue
-    end
-    begin
-      tk_call('font', 'delete', @kanjifont)
-    rescue
-    end
-    begin
-      tk_call('font', 'delete', @compoundfont)
-    rescue
-    end
-    TkFont::Tk_FontNameTBL.delete(@id)
-    TkFont::Tk_FontUseTBL.delete_if{|key,value| value == self}
-  end
-
-  def latin_replace_core_tk4x(ltn)
-    create_latinfont_tk4x(ltn)
-    @compoundfont[0] = [@latinfont] if JAPANIZED_TK
-    @fontslot['font'] = @latinfont
-    TkFont::Tk_FontUseTBL.dup.each{|w, fobj|
-      if self == fobj
-        begin
-          if w.include?(';')
-            win, tag, optkey = w.split(';')
-            optkey = 'font' if optkey == nil || optkey == ''
-            winobj = tk_tcl2ruby(win)
-#           winobj.tagfont_configure(tag, {'font'=>@latinfont})
-            if winobj.kind_of? TkText
-              tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @latinfont)
-            elsif winobj.kind_of? TkCanvas
-              tk_call(win, 'itemconfigure', tag, "-#{optkey}", @latinfont)
-            elsif winobj.kind_of? TkMenu
-              tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
-            else
-              raise RuntimeError, "unknown widget type"
-            end
-          else
-#           tk_tcl2ruby(w).font_configure('font'=>@latinfont)
-            tk_call(w, 'configure', '-font', @latinfont)
-          end
-        rescue
-          TkFont::Tk_FontUseTBL.delete(w)
-        end
-      end
-    }
-    self
-  end
-
-  def kanji_replace_core_tk4x(knj)
-    return self unless JAPANIZED_TK
-
-    create_kanjifont_tk4x(knj)
-    @compoundfont[1] = [@kanjifont]
-    @fontslot['kanjifont'] = @kanjifont
-    TkFont::Tk_FontUseTBL.dup.each{|w, fobj|
-      if self == fobj
-        begin
-          if w.include?(';')
-            win, tag, optkey = w.split(';')
-            optkey = 'kanjifont' unless optkey
-            winobj = tk_tcl2ruby(win)
-#           winobj.tagfont_configure(tag, {'kanjifont'=>@kanjifont})
-            if winobj.kind_of? TkText
-              tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @kanjifont)
-            elsif winobj.kind_of? TkCanvas
-              tk_call(win, 'itemconfigure', tag, "-#{optkey}", @kanjifont)
-            elsif winobj.kind_of? TkMenu
-              tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
-            else
-              raise RuntimeError, "unknown widget type"
-            end
-          else
-#           tk_tcl2ruby(w).font_configure('kanjifont'=>@kanjifont)
-            tk_call(w, 'configure', '-kanjifont', @kanjifont)
-          end
-        rescue
-          TkFont::Tk_FontUseTBL.delete(w)
-        end
-      end
-    }
-    self
-  end
-
-  def latin_replace_core_tk8x(ltn)
-    ltn = '{}' if ltn == ''
-
-    if JAPANIZED_TK
-      begin
-        tk_call('font', 'delete', '@font_tmp')
-      rescue
-      end
-      begin
-        fnt_bup = tk_call('font', 'create', '@font_tmp', '-copy', @latinfont)
-      rescue
-        #fnt_bup = ''
-        fnt_bup = TkFont::DEFAULT_LATIN_FONT_NAME
-      end
-    end
-
-    begin
-      tk_call('font', 'delete', @latinfont)
-    rescue
-    end
-    create_latinfont(ltn)
-
-    if JAPANIZED_TK
-      keys = self.configinfo
-      tk_call('font', 'delete', @compoundfont)
-      begin
-        tk_call('font', 'create', @compoundfont, 
-                '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-=begin
-        latinkeys = {}
-        begin
-          actual_core(@latinfont).each{|key,val| latinkeys[key] = val}
-        rescue
-          latinkeys = {}
-        end
-        if latinkeys != {}
-          tk_call('font', 'configure', @compoundfont, *hash_kv(latinkeys))
-        end
-=end
-      rescue RuntimeError => e
-        tk_call('font', 'delete', @latinfont)
-        if fnt_bup && fnt_bup != ''
-          tk_call('font', 'create', @latinfont, '-copy', fnt_bup)
-          tk_call('font', 'create', @compoundfont, 
-                  '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-          tk_call('font', 'delete', fnt_bup)
-        else
-          fail e
-        end
-      end
-
-    else
-      latinkeys = {}
-      begin
-        actual_core(@latinfont).each{|key,val| latinkeys[key] = val}
-      rescue
-        latinkeys = {}
-      end
-      if latinkeys != {}
-        tk_call('font', 'configure', @compoundfont, *hash_kv(latinkeys))
-      end
-    end    
-    self
-  end
-
-  def kanji_replace_core_tk8x(knj)
-    knj = '{}' if knj == ''
-
-    if JAPANIZED_TK
-      begin
-        tk_call('font', 'delete', '@font_tmp')
-      rescue
-      end
-      begin
-        fnt_bup = tk_call('font', 'create', '@font_tmp', '-copy', @kanjifont)
-      rescue
-        #fnt_bup = ''
-        fnt_bup = TkFont::DEFAULT_KANJI_FONT_NAME
-      end
-    end
-
-    begin
-      tk_call('font', 'delete', @kanjifont)
-    rescue
-    end
-    create_kanjifont(knj)
-
-    if JAPANIZED_TK
-      keys = self.configinfo
-      tk_call('font', 'delete', @compoundfont)
-      begin
-        tk_call('font', 'create', @compoundfont, 
-                '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-      rescue RuntimeError => e
-        tk_call('font', 'delete', @kanjifont)
-        if fnt_bup && fnt_bup != ''
-          tk_call('font', 'create', @kanjifont, '-copy', fnt_bup)
-          tk_call('font', 'create', @compoundfont, 
-                  '-compound', [@latinfont, @kanjifont], *hash_kv(keys))
-          tk_call('font', 'delete', fnt_bup)
-        else
-          fail e
-        end
-      end
-    end    
-    self
-  end
-
-  def measure_core_tk4x(font, win, text)
-    0
-  end
-
-  def measure_core_tk8x(font, win, text)
-    font = '{}' if font == ''
-
-    if win
-      number(tk_call('font', 'measure', font, 
-                     '-displayof', win, text))
-    else
-      number(tk_call('font', 'measure', font, text))
-    end
-  end
-
-  def metrics_core_tk4x(font, win, option=nil)
-    # dummy
-    if option
-      ""
-    else
-      [['ascent',[]], ['descent',[]], ['linespace',[]], ['fixed',[]]]
-    end
-  end
-
-  def metrics_core_tk8x(font, win, option=nil)
-    font = '{}' if font == ''
-
-    if option
-      if win
-        number(tk_call('font', 'metrics', font, 
-                       "-displayof", win, "-#{option}"))
-      else
-        number(tk_call('font', 'metrics', font, "-#{option}"))
-      end
-    else
-      l = tk_split_list(if win
-                          tk_call('font','metrics',font,"-displayof",win)
-                        else
-                          tk_call('font','metrics',font)
-                        end)
-      r = []
-      while key=l.shift
-        r.push [key[1..-1], l.shift.to_i]
-      end
-      r
-    end
-  end
-
-  ###################################
-  # private alias
-  ###################################
-  case (Tk::TK_VERSION)
-  when /^4\.*/
-    alias actual_core             actual_core_tk4x
-    alias configure_core          configure_core_tk4x
-    alias configinfo_core         configinfo_core_tk4x
-    alias current_configinfo_core current_configinfo_core_tk4x
-    alias delete_core             delete_core_tk4x
-    alias latin_replace_core      latin_replace_core_tk4x
-    alias kanji_replace_core      kanji_replace_core_tk4x
-    alias measure_core            measure_core_tk4x
-    alias metrics_core            metrics_core_tk4x
-
-  when /^8\.[0-5]/
-    alias actual_core             actual_core_tk8x
-    alias configure_core          configure_core_tk8x
-    alias configinfo_core         configinfo_core_tk8x
-    alias current_configinfo_core current_configinfo_core_tk8x
-    alias delete_core             delete_core_tk8x
-    alias latin_replace_core      latin_replace_core_tk8x
-    alias kanji_replace_core      kanji_replace_core_tk8x
-    alias measure_core            measure_core_tk8x
-    alias metrics_core            metrics_core_tk8x
-
-  else
-    alias actual_core             actual_core_tk8x
-    alias configure_core          configure_core_tk8x
-    alias configinfo_core         configinfo_core_tk8x
-    alias current_configinfo_core current_configinfo_core_tk8x
-    alias delete_core             delete_core_tk8x
-    alias latin_replace_core      latin_replace_core_tk8x
-    alias kanji_replace_core      kanji_replace_core_tk8x
-    alias measure_core            measure_core_tk8x
-    alias metrics_core            metrics_core_tk8x
-
-  end
-end
-
-class TkFont
-  include TkFont::CoreMethods
-  extend  TkFont::CoreMethods
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/frame.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/frame.rb
deleted file mode 100644
index 6636fef..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/frame.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# tk/frame.rb : treat frame widget
-#
-require 'tk'
-
-class TkFrame<TkWindow
-  TkCommandNames = ['frame'.freeze].freeze
-  WidgetClassName = 'Frame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-################# old version
-#  def initialize(parent=nil, keys=nil)
-#    if keys.kind_of? Hash
-#      keys = keys.dup
-#      @classname = keys.delete('classname') if keys.key?('classname')
-#      @colormap  = keys.delete('colormap')  if keys.key?('colormap')
-#      @container = keys.delete('container') if keys.key?('container')
-#      @visual    = keys.delete('visual')    if keys.key?('visual')
-#    end
-#    super(parent, keys)
-#  end
-#
-#  def create_self
-#    s = []
-#    s << "-class"     << @classname if @classname
-#    s << "-colormap"  << @colormap  if @colormap
-#    s << "-container" << @container if @container
-#    s << "-visual"    << @visual    if @visual
-#    tk_call 'frame', @path, *s
-#  end
-#################
-
-  def __boolval_optkeys
-    super() << 'container'
-  end
-  private :__boolval_optkeys
-
-  def initialize(parent=nil, keys=nil)
-    my_class_name = nil
-    if self.class < WidgetClassNames[self.class::WidgetClassName]
-      my_class_name = self.class.name
-      my_class_name = nil if my_class_name == ''
-    end
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-    else
-      if keys
-        keys = _symbolkey2str(keys)
-        keys['parent'] = parent
-      else
-        keys = {'parent'=>parent}
-      end
-    end
-    if keys.key?('classname')
-       keys['class'] = keys.delete('classname')
-    end
-    @classname = keys['class']
-    @colormap  = keys['colormap']
-    @container = keys['container']
-    @visual    = keys['visual']
-    if !@classname && my_class_name
-      keys['class'] = @classname = my_class_name
-    end
-    if @classname.kind_of? TkBindTag
-      @db_class = @classname
-      @classname = @classname.id
-    elsif @classname
-      @db_class = TkDatabaseClass.new(@classname)
-    else
-      @db_class = self.class
-      @classname = @db_class::WidgetClassName
-    end
-    super(keys)
-  end
-
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('frame', @path, *hash_kv(keys))
-  #  else
-  #    tk_call_without_enc( 'frame', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def database_classname
-    @classname
-  end
-
-  def self.database_class
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      self
-    else
-      TkDatabaseClass.new(self.name)
-    end
-  end
-  def self.database_classname
-    self.database_class.name
-  end
-
-  def self.bind(*args, &b)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args, &b)
-    else
-      TkDatabaseClass.new(self.name).bind(*args, &b)
-    end
-  end
-  def self.bind_append(*args, &b)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args, &b)
-    else
-      TkDatabaseClass.new(self.name).bind_append(*args, &b)
-    end
-  end
-  def self.bind_remove(*args)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args)
-    else
-      TkDatabaseClass.new(self.name).bind_remove(*args)
-    end
-  end
-  def self.bindinfo(*args)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args)
-    else
-      TkDatabaseClass.new(self.name).bindinfo(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/grid.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/grid.rb
deleted file mode 100644
index 10fdf35..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/grid.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-#
-# tk/grid.rb : control grid geometry manager
-#
-require 'tk'
-
-module TkGrid
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['grid'.freeze].freeze
-
-  def anchor(master, anchor=None)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    tk_call_without_enc('grid', 'anchor', master, anchor)
-  end
-
-  def bbox(master, *args)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    args.unshift(master)
-    list(tk_call_without_enc('grid', 'bbox', *args))
-  end
-
-  def configure(win, *args)
-    if args[-1].kind_of?(Hash)
-      opts = args.pop
-    else
-      opts = {}
-    end
-    params = []
-    params.push(_epath(win))
-    args.each{|win|
-      case win
-      when '-', 'x', '^'  # RELATIVE PLACEMENT
-        params.push(win)
-      else
-        params.push(_epath(win))
-      end
-    }
-    opts.each{|k, v|
-      params.push("-#{k}")
-      params.push((v.kind_of?(TkObject))? v.epath: v)
-    }
-    if Tk::TCL_MAJOR_VERSION < 8 ||
-        (Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION <= 3)
-      if params[0] == '-' || params[0] == 'x' || params[0] == '^'
-        tk_call_without_enc('grid', *params)
-      else
-        tk_call_without_enc('grid', 'configure', *params)
-      end
-    else
-      tk_call_without_enc('grid', 'configure', *params)
-    end
-  end
-  alias grid configure
-
-  def columnconfigure(master, index, args)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    tk_call_without_enc("grid", 'columnconfigure', 
-                        master, index, *hash_kv(args))
-  end
-
-  def rowconfigure(master, index, args)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    tk_call_without_enc("grid", 'rowconfigure', master, index, *hash_kv(args))
-  end
-
-  def columnconfiginfo(master, index, slot=nil)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    if slot
-      case slot
-      when 'uniform', :uniform
-        tk_call_without_enc('grid', 'columnconfigure', 
-                            master, index, "-#{slot}")
-      else
-        num_or_str(tk_call_without_enc('grid', 'columnconfigure', 
-                                       master, index, "-#{slot}"))
-      end
-    else
-      #ilist = list(tk_call_without_enc('grid','columnconfigure',master,index))
-      ilist = simplelist(tk_call_without_enc('grid', 'columnconfigure', 
-                                             master, index))
-      info = {}
-      while key = ilist.shift
-        case key
-        when 'uniform'
-          info[key[1..-1]] = ilist.shift
-        else
-          info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
-        end
-      end
-      info
-    end
-  end
-
-  def rowconfiginfo(master, index, slot=nil)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    if slot
-      case slot
-      when 'uniform', :uniform
-        tk_call_without_enc('grid', 'rowconfigure', 
-                            master, index, "-#{slot}")
-      else
-        num_or_str(tk_call_without_enc('grid', 'rowconfigure', 
-                                       master, index, "-#{slot}"))
-      end
-    else
-      #ilist = list(tk_call_without_enc('grid', 'rowconfigure', master, index))
-      ilist = simplelist(tk_call_without_enc('grid', 'rowconfigure', 
-                                             master, index))
-      info = {}
-      while key = ilist.shift
-        case key
-        when 'uniform'
-          info[key[1..-1]] = ilist.shift
-        else
-          info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
-        end
-      end
-      info
-    end
-  end
-
-  def add(widget, *args)
-    configure(widget, *args)
-  end
-
-  def forget(*args)
-    return '' if args.size == 0
-    wins = args.collect{|win|
-      # (win.kind_of?(TkObject))? win.epath: win
-      _epath(win)
-    }
-    tk_call_without_enc('grid', 'forget', *wins)
-  end
-
-  def info(slave)
-    # slave = slave.epath if slave.kind_of?(TkObject)
-    slave = _epath(slave)
-    #ilist = list(tk_call_without_enc('grid', 'info', slave))
-    ilist = simplelist(tk_call_without_enc('grid', 'info', slave))
-    info = {}
-    while key = ilist.shift
-      #info[key[1..-1]] = ilist.shift
-      info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
-    end
-    return info
-  end
-
-  def location(master, x, y)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    list(tk_call_without_enc('grid', 'location', master, x, y))
-  end
-
-  def propagate(master, mode=None)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    if mode == None
-      bool(tk_call_without_enc('grid', 'propagate', master))
-    else
-      tk_call_without_enc('grid', 'propagate', master, mode)
-    end
-  end
-
-  def remove(*args)
-    return '' if args.size == 0
-    wins = args.collect{|win|
-      # (win.kind_of?(TkObject))? win.epath: win
-      _epath(win)
-    }
-    tk_call_without_enc('grid', 'remove', *wins)
-  end
-
-  def size(master)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    list(tk_call_without_enc('grid', 'size', master))
-  end
-
-  def slaves(master, args)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    list(tk_call_without_enc('grid', 'slaves', master, *hash_kv(args)))
-  end
-
-  module_function :bbox, :forget, :propagate, :info
-  module_function :remove, :size, :slaves, :location
-  module_function :grid, :configure, :columnconfigure, :rowconfigure
-  module_function :columnconfiginfo, :rowconfiginfo
-end
-=begin
-def TkGrid(win, *args)
-  if args[-1].kind_of?(Hash)
-    opts = args.pop
-  else
-    opts = {}
-  end
-  params = []
-  params.push((win.kind_of?(TkObject))? win.epath: win)
-  args.each{|win|
-    case win
-    when '-', 'x', '^'  # RELATIVE PLACEMENT
-      params.push(win)
-    else
-      params.push((win.kind_of?(TkObject))? win.epath: win)
-    end
-  }
-  opts.each{|k, v|
-    params.push("-#{k}")
-    params.push((v.kind_of?(TkObject))? v.epath: v)
-  }
-  tk_call_without_enc("grid", *params)
-end
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/image.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/image.rb
deleted file mode 100644
index 35e2c4e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/image.rb
+++ /dev/null
@@ -1,237 +0,0 @@
-#
-# tk/image.rb : treat Tk image objects
-#
-
-require 'tk'
-
-class TkImage<TkObject
-  include Tk
-
-  TkCommandNames = ['image'.freeze].freeze
-
-  Tk_IMGTBL = TkCore::INTERP.create_table
-  Tk_Image_ID = ['i'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ Tk_IMGTBL.clear }
-
-  def self.new(keys=nil)
-    if keys.kind_of?(Hash)
-      name = nil
-      if keys.key?(:imagename)
-        name = keys[:imagename]
-      elsif keys.key?('imagename')
-        name = keys['imagename']
-      end
-      if name
-        if name.kind_of?(TkImage)
-          obj = name
-        else
-          name = _get_eval_string(name)
-          obj = Tk_IMGTBL[name]
-        end
-        if obj
-          if !(keys[:without_creating] || keys['without_creating'])
-            keys = _symbolkey2str(keys)
-            keys.delete('imagename')
-            keys.delete('without_creating')
-            obj.instance_eval{
-              tk_call_without_enc('image', 'create', 
-                                  @type, @path, *hash_kv(keys, true))
-            }
-          end
-          return obj
-        end
-      end
-    end
-    super(keys)
-  end
-
-  def initialize(keys=nil)
-    @path = nil
-    without_creating = false
-    if keys.kind_of?(Hash)
-      keys = _symbolkey2str(keys)
-      @path = keys.delete('imagename')
-      without_creating = keys.delete('without_creating')
-    end
-    unless @path
-      # @path = Tk_Image_ID.join('')
-      @path = Tk_Image_ID.join(TkCore::INTERP._ip_id_)
-      Tk_Image_ID[1].succ!
-    end
-    unless without_creating
-      tk_call_without_enc('image', 'create', 
-                          @type, @path, *hash_kv(keys, true))
-    end
-    Tk_IMGTBL[@path] = self
-  end
-
-  def delete
-    Tk_IMGTBL.delete(@id) if @id
-    tk_call_without_enc('image', 'delete', @path)
-    self
-  end
-  def height
-    number(tk_call_without_enc('image', 'height', @path))
-  end
-  def inuse
-    bool(tk_call_without_enc('image', 'inuse', @path))
-  end
-  def itemtype
-    tk_call_without_enc('image', 'type', @path)
-  end
-  def width
-    number(tk_call_without_enc('image', 'width', @path))
-  end
-
-  def TkImage.names
-    Tk.tk_call_without_enc('image', 'names').split.collect!{|id|
-      (Tk_IMGTBL[id])? Tk_IMGTBL[id] : id
-    }
-  end
-
-  def TkImage.types
-    Tk.tk_call_without_enc('image', 'types').split
-  end
-end
-
-class TkBitmapImage<TkImage
-  def __strval_optkeys
-    super() + ['maskdata', 'maskfile']
-  end
-  private :__strval_optkeys
-
-  def initialize(*args)
-    @type = 'bitmap'
-    super(*args)
-  end
-end
-
-class TkPhotoImage<TkImage
-  NullArgOptionKeys = [ "shrink", "grayscale" ]
-
-  def _photo_hash_kv(keys)
-    keys = _symbolkey2str(keys)
-    NullArgOptionKeys.collect{|opt|
-      if keys[opt]
-        keys[opt] = None
-      else
-        keys.delete(opt)
-      end
-    }
-    keys.collect{|k,v|
-      ['-' << k, v]
-    }.flatten
-  end
-  private :_photo_hash_kv
-
-  def initialize(*args)
-    @type = 'photo'
-    super(*args)
-  end
-
-  def blank
-    tk_send_without_enc('blank')
-    self
-  end
-
-  def cget(option)
-    case option.to_s
-    when 'data', 'file'
-      tk_send 'cget', '-' << option.to_s
-    else
-      tk_tcl2ruby(tk_send('cget', '-' << option.to_s))
-    end
-  end
-
-  def copy(src, *opts)
-    if opts.size == 0
-      tk_send('copy', src)
-    elsif opts.size == 1 && opts[0].kind_of?(Hash)
-      tk_send('copy', src, *_photo_hash_kv(opts[0]))
-    else
-      # for backward compatibility
-      args = opts.collect{|term|
-        if term.kind_of?(String) && term.include?(?\s)
-          term.split
-        else
-          term
-        end
-      }.flatten
-      tk_send('copy', src, *args)
-    end
-    self
-  end
-
-  def data(keys={})
-    #tk_send('data', *_photo_hash_kv(keys))
-    tk_split_list(tk_send('data', *_photo_hash_kv(keys)))
-  end
-
-  def get(x, y)
-    tk_send('get', x, y).split.collect{|n| n.to_i}
-  end
-
-  def put(data, *opts)
-    if opts == []
-      tk_send('put', data)
-    elsif opts.size == 1 && opts[0].kind_of?(Hash)
-      tk_send('put', data, *_photo_hash_kv(opts[0]))
-    else
-      # for backward compatibility
-      tk_send('put', data, '-to', *opts)
-    end
-    self
-  end
-
-  def read(file, *opts)
-    if opts.size == 0
-      tk_send('read', file)
-    elsif opts.size == 1 && opts[0].kind_of?(Hash)
-      tk_send('read', file, *_photo_hash_kv(opts[0]))
-    else
-      # for backward compatibility
-      args = opts.collect{|term|
-        if term.kind_of?(String) && term.include?(?\s)
-          term.split
-        else
-          term
-        end
-      }.flatten
-      tk_send('read', file, *args)
-    end
-    self
-  end
-
-  def redither
-    tk_send 'redither'
-    self
-  end
-
-  def get_transparency(x, y)
-    bool(tk_send('transparency', 'get', x, y))
-  end
-  def set_transparency(x, y, st)
-    tk_send('transparency', 'set', x, y, st)
-    self
-  end
-
-  def write(file, *opts)
-    if opts.size == 0
-      tk_send('write', file)
-    elsif opts.size == 1 && opts[0].kind_of?(Hash)
-      tk_send('write', file, *_photo_hash_kv(opts[0]))
-    else
-      # for backward compatibility
-      args = opts.collect{|term|
-        if term.kind_of?(String) && term.include?(?\s)
-          term.split
-        else
-          term
-        end
-      }.flatten
-      tk_send('write', file, *args)
-    end
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemconfig.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemconfig.rb
deleted file mode 100644
index a7885e7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemconfig.rb
+++ /dev/null
@@ -1,1061 +0,0 @@
-#
-# tk/itemconfig.rb : control item/tag configuration of widget
-#
-require 'tk'
-require 'tkutil'
-require 'tk/itemfont.rb'
-
-module TkItemConfigOptkeys
-  include TkUtil
-
-  def __item_numval_optkeys(id)
-    []
-  end
-  private :__item_numval_optkeys
-
-  def __item_numstrval_optkeys(id)
-    []
-  end
-  private :__item_numstrval_optkeys
-
-  def __item_boolval_optkeys(id)
-    ['exportselection', 'jump', 'setgrid', 'takefocus']
-  end
-  private :__item_boolval_optkeys
-
-  def __item_strval_optkeys(id)
-    # maybe need to override
-    [
-      'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile', 
-      'activebackground', 'activeforeground', 'background', 
-      'disabledforeground', 'disabledbackground', 'foreground', 
-      'highlightbackground', 'highlightcolor', 'insertbackground', 
-      'selectbackground', 'selectforeground', 'troughcolor'
-    ]
-  end
-  private :__item_strval_optkeys
-
-  def __item_listval_optkeys(id)
-    []
-  end
-  private :__item_listval_optkeys
-
-  def __item_numlistval_optkeys(id)
-    # maybe need to override
-    ['dash', 'activedash', 'disableddash']
-  end
-  private :__item_numlistval_optkeys
-
-  def __item_tkvariable_optkeys(id)
-    ['variable', 'textvariable']
-  end
-  private :__item_tkvariable_optkeys
-
-  def __item_val2ruby_optkeys(id)  # { key=>method, ... }
-    # The method is used to convert a opt-value to a ruby's object.
-    # When get the value of the option "key", "method.call(id, val)" is called.
-    {}
-  end
-  private :__item_val2ruby_optkeys
-
-  def __item_ruby2val_optkeys(id)  # { key=>method, ... }
-    # The method is used to convert a ruby's object to a opt-value.
-    # When set the value of the option "key", "method.call(id, val)" is called.
-    # That is, "-#{key} #{method.call(id, value)}".
-    {}
-  end
-  private :__item_ruby2val_optkeys
-
-  def __item_methodcall_optkeys(id)  # { key=>method, ... }
-    # Use the method for both of get and set.
-    # Usually, the 'key' will not be a widget option.
-    #
-    # maybe need to override
-    # {'coords'=>'coords'}
-    {}
-  end
-  private :__item_methodcall_optkeys
-
-  ################################################
-
-  def __item_keyonly_optkeys(id)  # { def_key=>(undef_key|nil), ... }
-    # maybe need to override
-    {}
-  end
-  private :__item_keyonly_optkeys
-
-
-  def __conv_item_keyonly_opts(id, keys)
-    return keys unless keys.kind_of?(Hash)
-    keyonly = __item_keyonly_optkeys(id)
-    keys2 = {}
-    keys.each{|k, v|
-      optkey = keyonly.find{|kk,vv| kk.to_s == k.to_s}
-      if optkey
-        defkey, undefkey = optkey
-        if v
-          keys2[defkey.to_s] = None
-        else
-          keys2[undefkey.to_s] = None
-        end
-      else
-        keys2[k.to_s] = v
-      end
-    }
-    keys2
-  end
-
-  def itemconfig_hash_kv(id, keys, enc_mode = nil, conf = nil)
-    hash_kv(__conv_item_keyonly_opts(id, keys), enc_mode, conf)
-  end
-end
-
-module TkItemConfigMethod
-  include TkUtil
-  include TkTreatItemFont
-  include TkItemConfigOptkeys
-
-  def __item_cget_cmd(id)
-    # maybe need to override
-    [self.path, 'itemcget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    # maybe need to override
-    [self.path, 'itemconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_confinfo_cmd(id)
-    # maybe need to override
-    __item_config_cmd(id)
-  end
-  private :__item_confinfo_cmd
-
-  def __item_configinfo_struct(id)
-    # maybe need to override
-    {:key=>0, :alias=>1, :db_name=>1, :db_class=>2, 
-      :default_value=>3, :current_value=>4}
-  end
-  private :__item_configinfo_struct
-
-  ################################################
-
-  def tagid(tagOrId)
-    # maybe need to override
-    tagOrId
-  end
-
-  ################################################
-
-  def itemcget(tagOrId, option)
-    orig_opt = option
-    option = option.to_s
-
-    if option.length == 0
-      fail ArgumentError, "Invalid option `#{orig_opt.inspect}'"
-    end
-
-    if ( method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[option] )
-      optval = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
-      begin
-        return method.call(tagOrId, optval)
-      rescue => e
-        warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-        return optval
-      end
-    end
-
-    if ( method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[option] )
-      return self.__send__(method, tagOrId)
-    end
-
-    case option
-    when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-      begin
-        number(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
-      rescue
-        nil
-      end
-
-    when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-      num_or_str(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
-
-    when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-      begin
-        bool(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
-      rescue
-        nil
-      end
-
-    when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-      simplelist(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
-
-    when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-      conf = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
-      if conf =~ /^[0-9]/
-        list(conf)
-      else
-        conf
-      end
-
-    when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-      v = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
-      (v.empty?)? nil: TkVarAccess.new(v)
-
-    when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-      _fromUTF8(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
-
-    when /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/
-      fontcode = $1
-      fontkey  = $2
-      fnt = tk_tcl2ruby(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{fontkey}")), true)
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(tagid(tagOrId), fontkey)
-      end
-      if fontcode == 'kanji' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")), true)
-    end
-  end
-
-  def itemconfigure(tagOrId, slot, value=None)
-    if slot.kind_of? Hash
-      slot = _symbolkey2str(slot)
-
-      __item_methodcall_optkeys(tagid(tagOrId)).each{|key, method|
-        value = slot.delete(key.to_s)
-        self.__send__(method, tagOrId, value) if value
-      }
-
-      __item_ruby2val_optkeys(tagid(tagOrId)).each{|key, method|
-        key = key.to_s
-        slot[key] = method.call(tagOrId, slot[key]) if slot.has_key?(key)
-      }
-
-      __item_keyonly_optkeys(tagid(tagOrId)).each{|defkey, undefkey|
-        conf = slot.find{|kk, vv| kk == defkey.to_s}
-        if conf
-          k, v = conf
-          if v
-            slot[k] = None
-          else
-            slot[undefkey.to_s] = None if undefkey
-            slot.delete(k)
-          end
-        end
-      }
-
-      if (slot.find{|k, v| k =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/})
-        tagfont_configure(tagid(tagOrId), slot)
-      elsif slot.size > 0
-        tk_call(*(__item_config_cmd(tagid(tagOrId)).concat(hash_kv(slot))))
-      end
-
-    else
-      orig_slot = slot
-      slot = slot.to_s
-      if slot.length == 0
-        fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
-      end
-
-      if ( conf = __item_keyonly_optkeys(tagid(tagOrId)).find{|k, v| k.to_s == slot } )
-        defkey, undefkey = conf
-        if value
-          tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{defkey}"))
-        elsif undefkey
-          tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{undefkey}"))
-        end
-      elsif ( method = _symbolkey2str(__item_ruby2val_optkeys(tagid(tagOrId)))[slot] )
-        tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{slot}" << method.call(tagOrId, value)))
-      elsif ( method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot] )
-        self.__send__(method, tagOrId, value)
-      elsif (slot =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
-        if value == None
-          tagfontobj(tagid(tagOrId), $2)
-        else
-          tagfont_configure(tagid(tagOrId), {slot=>value})
-        end
-      else
-        tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{slot}" << value))
-      end
-    end
-    self
-  end
-
-  def __itemconfiginfo_core(tagOrId, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
-        fontkey  = $2
-        # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}"))))
-        conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}")), false, true)
-        conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-          conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-        if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-            || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-          conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), fontkey)
-        elsif ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-               && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 \
-               && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
-          conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-            conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-        end
-        conf
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
-            end
-
-          when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
-            return [slot, '', '', '', self.__send__(method, tagOrId)]
-
-          when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-          when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-              if v.empty?
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              else
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-              if v.empty?
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              else
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
-              end
-            end
-
-          else
-            # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_list(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), 0, false, true)
-          end
-          conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-            conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-
-          if ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 \
-              && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
-            conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-          end
-
-          conf
-
-        else
-          # ret = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))))).collect{|conflist|
-          #   conf = tk_split_simplelist(conflist)
-          ret = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false).collect{|conflist|
-            conf = tk_split_simplelist(conflist, false, true)
-            conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-              conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-
-            optkey = conf[__item_configinfo_struct(tagid(tagOrId))[:key]]
-            case optkey
-            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-                begin
-                  val = method(tagOrId, optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                begin
-                  val = method.call(tagOrId, optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
-              end
-
-            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-              # do nothing
-
-            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-                if v.empty?
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                if v.empty?
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
-                end
-              end
-
-            else
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                if conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]].index('{')
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]) 
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]) 
-                end
-              end
-              if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]].index('{')
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]) 
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]) 
-                end
-              end
-            end
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-                && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-            end
-
-            conf
-          }
-
-          __item_font_optkeys(tagid(tagOrId)).each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret.assoc(optkey)
-            if fontconf && fontconf.size > 2
-              ret.delete_if{|inf| inf[0] =~ /^(|latin|ascii|kanji)#{optkey}$/}
-              fontconf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), optkey)
-              ret.push(fontconf)
-            end
-          }
-
-          __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
-            ret << [optkey.to_s, '', '', '', self.__send__(method, tagOrId)]
-          }
-
-          ret
-        end
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
-        fontkey  = $2
-        # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}"))))
-        conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}")), false, true)
-        conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-          conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-
-        if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-            || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-          conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = fontobj(tagid(tagOrId), fontkey)
-          { conf.shift => conf }
-        elsif ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-               && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-          if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
-            conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-          end
-          { conf[0] => conf[1] }
-        else
-          { conf.shift => conf }
-        end
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
-            end
-
-          when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
-            return {slot => ['', '', '', self.__send__(method, tagOrId)]}
-
-          when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                num_or_stre(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              begin
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              rescue
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              end
-            end
-
-          when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
-              conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-            end
-
-          when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-            # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-          when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-            conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-              v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-              if v.empty?
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-              else
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
-              end
-            end
-            if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-              v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-              if v.empty?
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-              else
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
-              end
-            end
-
-          else
-            # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
-            conf = tk_split_list(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), 0, false, true)
-          end
-          conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-            conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-
-          if ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-            if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
-              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-            end
-            { conf[0] => conf[1] }
-          else
-            { conf.shift => conf }
-          end
-
-        else
-          ret = {}
-          # tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))))).each{|conflist|
-          #   conf = tk_split_simplelist(conflist)
-          tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false).each{|conflist|
-            conf = tk_split_simplelist(conflist, false, true)
-            conf[__item_configinfo_struct(tagid(tagOrId))[:key]] = 
-              conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
-
-            optkey = conf[__item_configinfo_struct(tagid(tagOrId))[:key]]
-            case optkey
-            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-                begin
-                  val = method.call(tagOrId, optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                begin
-                  val = method.call(tagOrId, optval)
-                rescue => e
-                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                  val = optval
-                end
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
-              end
-
-            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-              # do nothing
-
-            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                begin
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-                rescue
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                end
-              end
-
-            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
-                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-              end
-
-            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
-                if v.empty?
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
-                end
-              end
-              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
-                v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                if v.empty?
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
-                end
-              end
-
-            else
-              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value] \
-                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
-                if conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]].index('{')
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]) 
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = 
-                    tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
-                end
-              end
-              if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
-                if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]].index('{')
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]) 
-                else
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = 
-                    tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
-                end
-              end
-            end
-
-            if ( __item_configinfo_struct(tagid(tagOrId))[:alias] \
-                && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-              if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
-                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] = 
-                  conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
-              end
-              ret[conf[0]] = conf[1]
-            else
-              ret[conf.shift] = conf
-            end
-          }
-
-          __item_font_optkeys(tagid(tagOrId)).each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret[optkey]
-            if fontconf.kind_of?(Array)
-              ret.delete(optkey)
-              ret.delete('latin' << optkey)
-              ret.delete('ascii' << optkey)
-              ret.delete('kanji' << optkey)
-              fontconf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), optkey)
-              ret[optkey] = fontconf
-            end
-          }
-
-          __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
-            ret[optkey.to_s] = ['', '', '', self.__send__(method, tagOrId)]
-          }
-
-          ret
-        end
-      end
-    end
-  end
-  private :__itemconfiginfo_core
-
-  def itemconfiginfo(tagOrId, slot = nil)
-    __itemconfiginfo_core(tagOrId, slot)
-  end
-
-  def current_itemconfiginfo(tagOrId, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        org_slot = slot
-        begin
-          conf = __itemconfiginfo_core(tagOrId, slot)
-          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-            return {conf[0] => conf[-1]}
-          end
-          slot = conf[__item_configinfo_struct(tagid(tagOrId))[:alias]]
-        end while(org_slot != slot)
-        fail RuntimeError, 
-          "there is a configure alias loop about '#{org_slot}'"
-      else
-        ret = {}
-        __itemconfiginfo_core(tagOrId).each{|conf|
-          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-            ret[conf[0]] = conf[-1]
-          end
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      __itemconfiginfo_core(tagOrId, slot).each{|key, conf|
-        ret[key] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemfont.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemfont.rb
deleted file mode 100644
index ab9e3ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/itemfont.rb
+++ /dev/null
@@ -1,300 +0,0 @@
-#
-# tk/itemfont.rb : control font of widget items
-#
-require 'tk'
-
-module TkItemFontOptkeys
-  def __item_font_optkeys(id)
-    # maybe need to override
-    ['font']
-  end
-  private :__item_font_optkeys
-end
-
-module TkTreatItemFont
-  include TkItemFontOptkeys
-
-  def __item_pathname(id)
-    # maybe need to override
-    [self.path, id].join(';')
-  end
-  private :__item_pathname
-
-  ################################################
-
-  def tagfont_configinfo(tagOrId, key = nil)
-    optkeys = __item_font_optkeys(tagid(tagOrId))
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __item_pathname(tagid(tagOrId)).split(';')
-
-    if key
-      pathname = [win, tag, key].join(';')
-      TkFont.used_on(pathname) || 
-        TkFont.init_widget_font(pathname, 
-                                *(__item_confinfo_cmd(tagid(tagOrId))))
-    elsif optkeys.size == 1
-      pathname = [win, tag, optkeys[0]].join(';')
-      TkFont.used_on(pathname) || 
-        TkFont.init_widget_font(pathname, 
-                                *(__item_confinfo_cmd(tagid(tagOrId))))
-    else
-      fonts = {}
-      optkeys.each{|key|
-        key = key.to_s
-        pathname = [win, tag, key].join(';')
-        fonts[key] = 
-          TkFont.used_on(pathname) || 
-          TkFont.init_widget_font(pathname, 
-                                  *(__item_confinfo_cmd(tagid(tagOrId))))
-      }
-      fonts
-    end
-  end
-  alias tagfontobj tagfont_configinfo
-
-  def tagfont_configure(tagOrId, slot)
-    pathname = __item_pathname(tagid(tagOrId))
-
-    slot = _symbolkey2str(slot)
-
-    __item_font_optkeys(tagid(tagOrId)).each{|optkey|
-      optkey = optkey.to_s
-      l_optkey = 'latin' << optkey
-      a_optkey = 'ascii' << optkey
-      k_optkey = 'kanji' << optkey
-
-      if slot.key?(optkey)
-        fnt = slot.delete(optkey)
-        if fnt.kind_of?(TkFont)
-          slot.delete(l_optkey)
-          slot.delete(a_optkey)
-          slot.delete(k_optkey)
-
-          fnt.call_font_configure([pathname, optkey], 
-                                  *(__item_config_cmd(tagid(tagOrId)) << {}))
-          next
-        else
-          if fnt
-            if (slot.key?(l_optkey) || 
-                slot.key?(a_optkey) || 
-                slot.key?(k_optkey))
-              fnt = TkFont.new(fnt)
-
-              lfnt = slot.delete(l_optkey)
-              lfnt = slot.delete(a_optkey) if slot.key?(a_optkey)
-              kfnt = slot.delete(k_optkey)
-
-              fnt.latin_replace(lfnt) if lfnt
-              fnt.kanji_replace(kfnt) if kfnt
-
-              fnt.call_font_configure([pathname, optkey], 
-                                      *(__item_config_cmd(tagid(tagOrId)) << {}))
-              next
-            else
-              tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << fnt))
-            end
-          end
-          next
-        end
-      end
-
-      lfnt = slot.delete(l_optkey)
-      lfnt = slot.delete(a_optkey) if slot.key?(a_optkey)
-      kfnt = slot.delete(k_optkey)
-
-      if lfnt && kfnt
-        TkFont.new(lfnt, kfnt).call_font_configure([pathname, optkey], 
-                                                   *(__item_config_cmd(tagid(tagOrId)) << {}))
-      elsif lfnt
-        latintagfont_configure([lfnt, optkey])
-      elsif kfnt
-        kanjitagfont_configure([kfnt, optkey])
-      end
-    }
-
-    # configure other (without font) options
-    tk_call(*(__item_config_cmd(tagid(tagOrId)).concat(hash_kv(slot)))) if slot != {}
-    self
-  end
-
-  def latintagfont_configure(tagOrId, ltn, keys=nil)
-    if ltn.kind_of?(Array)
-      key = ltn[1]
-      ltn = ltn[0]
-    else
-      key = nil
-    end
-
-    optkeys = __item_font_optkeys(tagid(tagOrId))
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __item_pathname(tagid(tagOrId)).split(';')
-
-    optkeys = [key] if key
-
-    optkeys.each{|optkey|
-      optkey = optkey.to_s
-
-      pathname = [win, tag, optkey].join(';')
-
-      if (fobj = TkFont.used_on(pathname))
-        fobj = TkFont.new(fobj) # create a new TkFont object
-      elsif Tk::JAPANIZED_TK
-        fobj = fontobj          # create a new TkFont object
-      else
-        tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << ltn))
-        next
-      end
-
-      if fobj.kind_of?(TkFont)
-        if ltn.kind_of?(TkFont)
-          conf = {}
-          ltn.latin_configinfo.each{|key,val| conf[key] = val}
-          if keys
-            fobj.latin_configure(conf.update(keys))
-          else
-            fobj.latin_configure(conf)
-          end
-        else
-          fobj.latin_replace(ltn)
-        end
-      end
-
-      fobj.call_font_configure([pathname, optkey], *(__item_config_cmd(tagid(tagOrId)) << {}))
-    }
-    self
-  end
-  alias asciitagfont_configure latintagfont_configure
-
-  def kanjitagfont_configure(tagOrId, knj, keys=nil)
-    if knj.kind_of?(Array)
-      key = knj[1]
-      knj = knj[0]
-    else
-      key = nil
-    end
-
-    optkeys = __item_font_optkeys(tagid(tagOrId))
-    if key && !optkeys.find{|opt| opt.to_s == key.to_s}
-      fail ArgumentError, "unknown font option name `#{key}'"
-    end
-
-    win, tag = __item_pathname(tagid(tagOrId)).split(';')
-
-    optkeys = [key] if key
-
-    optkeys.each{|optkey|
-      optkey = optkey.to_s
-
-      pathname = [win, tag, optkey].join(';')
-
-      if (fobj = TkFont.used_on(pathname))
-        fobj = TkFont.new(fobj) # create a new TkFont object
-      elsif Tk::JAPANIZED_TK
-        fobj = fontobj          # create a new TkFont object
-      else
-        tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << knj))
-        next
-      end
-
-      if fobj.kind_of?(TkFont)
-        if knj.kind_of?(TkFont)
-          conf = {}
-          knj.kanji_configinfo.each{|key,val| conf[key] = val}
-          if keys
-            fobj.kanji_configure(conf.update(keys))
-          else
-            fobj.kanji_configure(conf)
-          end
-        else
-          fobj.kanji_replace(knj)
-        end
-      end
-
-      fobj.call_font_configure([pathname, optkey], *(__item_config_cmd(tagid(tagOrId)) << {}))
-    }
-    self
-  end
-
-  def tagfont_copy(tagOrId, win, wintag=nil, winkey=nil, targetkey=nil)
-    if wintag
-      if winkey
-        fnt = win.tagfontobj(wintag, winkey).dup
-      else
-        fnt = win.tagfontobj(wintag).dup
-      end
-    else
-      if winkey
-        fnt = win.fontobj(winkey).dup
-      else
-        fnt = win.fontobj.dup
-      end
-    end
-
-    if targetkey
-      fnt.call_font_configure([__item_pathname(tagid(tagOrId)), targetkey], 
-                              *(__item_config_cmd(tagid(tagOrId)) << {}))
-    else
-      fnt.call_font_configure(__item_pathname(tagid(tagOrId)), 
-                              *(__item_config_cmd(tagid(tagOrId)) << {}))
-    end
-    self
-  end
-
-
-  def latintagfont_copy(tagOrId, win, wintag=nil, winkey=nil, targetkey=nil)
-    if targetkey
-      fontobj(targetkey).dup.call_font_configure([__item_pathname(tagid(tagOrId)), targetkey], 
-                                                 *(__item_config_cmd(tagid(tagOrId)) << {}))
-    else
-      fontobj.dup.call_font_configure(__item_pathname(tagid(tagOrId)), 
-                                      *(__item_config_cmd(tagid(tagOrId)) << {}))
-    end
-
-    if wintag
-      if winkey
-        fontobj.latin_replace(win.tagfontobj(wintag, winkey).latin_font_id)
-      else
-        fontobj.latin_replace(win.tagfontobj(wintag).latin_font_id)
-      end
-    else
-      if winkey
-        fontobj.latin_replace(win.fontobj(winkey).latin_font_id)
-      else
-        fontobj.latin_replace(win.fontobj.latin_font_id)
-      end
-    end
-    self
-  end
-  alias asciitagfont_copy latintagfont_copy
-
-  def kanjifont_copy(tagOrId, win, wintag=nil, winkey=nil, targetkey=nil)
-    if targetkey
-      fontobj(targetkey).dup.call_font_configure([__item_pathname(tagid(tagOrId)), targetkey], 
-                                                 *(__item_config_cmd(tagid(tagOrId)) << {}))
-    else
-        fontobj.dup.call_font_configure(__item_pathname(tagid(tagOrId)), 
-                                        *(__item_config_cmd(tagid(tagOrId)) << {}))
-    end
-
-    if wintag
-      if winkey
-        fontobj.kanji_replace(win.tagfontobj(wintag, winkey).kanji_font_id)
-      else
-        fontobj.kanji_replace(win.tagfontobj(wintag).kanji_font_id)
-      end
-    else
-      if winkey
-        fontobj.kanji_replace(win.fontobj(winkey).kanji_font_id)
-      else
-        fontobj.kanji_replace(win.fontobj.kanji_font_id)
-      end
-    end
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/kinput.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/kinput.rb
deleted file mode 100644
index a29dbcd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/kinput.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# tk/kinput.rb : control kinput
-#
-require 'tk'
-
-module TkKinput
-  include Tk
-  extend Tk
-
-  TkCommandNames = [
-    'kinput_start'.freeze, 
-    'kinput_send_spot'.freeze, 
-    'kanjiInput'.freeze
-  ].freeze
-
-  def TkKinput.start(win, style=None)
-    tk_call('kinput_start', win, style)
-  end
-  def kinput_start(style=None)
-    TkKinput.start(self, style)
-  end
-
-  def TkKinput.send_spot(win)
-    tk_call('kinput_send_spot', win)
-  end
-  def kinput_send_spot
-    TkKinput.send_spot(self)
-  end
-
-  def TkKinput.input_start(win, keys=nil)
-    tk_call('kanjiInput', 'start', win, *hash_kv(keys))
-  end
-  def kanji_input_start(keys=nil)
-    TkKinput.input_start(self, keys)
-  end
-
-  def TkKinput.attribute_config(win, slot, value=None)
-    if slot.kind_of? Hash
-      tk_call('kanjiInput', 'attribute', win, *hash_kv(slot))
-    else
-      tk_call('kanjiInput', 'attribute', win, "-#{slot}", value)
-    end
-  end
-  def kinput_attribute_config(slot, value=None)
-    TkKinput.attribute_config(self, slot, value)
-  end
-
-  def TkKinput.attribute_info(win, slot=nil)
-    if slot
-      conf = tk_split_list(tk_call('kanjiInput', 'attribute', 
-                                   win, "-#{slot}"))
-      conf[0] = conf[0][1..-1]
-      conf
-    else
-      tk_split_list(tk_call('kanjiInput', 'attribute', win)).collect{|conf|
-        conf[0] = conf[0][1..-1]
-        conf
-      }
-    end
-  end
-  def kinput_attribute_info(slot=nil)
-    TkKinput.attribute_info(self, slot)
-  end
-
-  def TkKinput.input_end(win)
-    tk_call('kanjiInput', 'end', win)
-  end
-  def kanji_input_end
-    TkKinput.input_end(self)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/label.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/label.rb
deleted file mode 100644
index 8b45db9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/label.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# tk/label.rb : treat label widget
-#
-require 'tk'
-
-class TkLabel<TkWindow
-  TkCommandNames = ['label'.freeze].freeze
-  WidgetClassName = 'Label'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('label', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('label', @path)
-  #  end
-  #end
-  #private :create_self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/labelframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/labelframe.rb
deleted file mode 100644
index 73d5603..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/labelframe.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# tk/labelframe.rb : treat labelframe widget
-#
-require 'tk'
-require 'tk/frame'
-
-class TkLabelFrame<TkFrame
-  TkCommandNames = ['labelframe'.freeze].freeze
-  WidgetClassName = 'Labelframe'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('labelframe', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('labelframe', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    super().update('labelwidget'=>proc{|v| window(v)})
-  end
-  private :__val2ruby_optkeys
-end
-TkLabelframe = TkLabelFrame
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/listbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/listbox.rb
deleted file mode 100644
index 41d02d2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/listbox.rb
+++ /dev/null
@@ -1,279 +0,0 @@
-#
-# tk/listbox.rb : treat listbox widget
-#
-require 'tk'
-require 'tk/itemconfig'
-require 'tk/scrollable'
-require 'tk/txtwin_abst'
-
-module TkListItemConfig
-  include TkItemConfigMethod
-
-  def __item_listval_optkeys(id)
-    []
-  end
-  private :__item_listval_optkeys
-end
-
-class TkListbox<TkTextWin
-  include TkListItemConfig
-  include Scrollable
-
-  TkCommandNames = ['listbox'.freeze].freeze
-  WidgetClassName = 'Listbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('listbox', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('listbox', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def __tkvariable_optkeys
-    super() << 'listvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def tagid(id)
-    #id.to_s
-    _get_eval_string(id)
-  end
-
-  def activate(y)
-    tk_send_without_enc('activate', y)
-    self
-  end
-  def curselection
-    list(tk_send_without_enc('curselection'))
-  end
-  def get(first, last=nil)
-    if last
-      # tk_split_simplelist(_fromUTF8(tk_send_without_enc('get', first, last)))
-      tk_split_simplelist(tk_send_without_enc('get', first, last), false, true)
-    else
-      _fromUTF8(tk_send_without_enc('get', first))
-    end
-  end
-  def nearest(y)
-    tk_send_without_enc('nearest', y).to_i
-  end
-  def size
-    tk_send_without_enc('size').to_i
-  end
-  def selection_anchor(index)
-    tk_send_without_enc('selection', 'anchor', index)
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', first, last)
-    self
-  end
-  def selection_includes(index)
-    bool(tk_send_without_enc('selection', 'includes', index))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', first, last)
-    self
-  end
-
-  def index(idx)
-    tk_send_without_enc('index', idx).to_i
-  end
-
-  def value
-    get('0', 'end')
-  end
-
-  def value= (vals)
-    unless vals.kind_of?(Array)
-      fail ArgumentError, 'an Array is expected'
-    end
-    tk_send_without_enc('delete', '0', 'end')
-    tk_send_without_enc('insert', '0', 
-                        *(vals.collect{|v| _get_eval_enc_str(v)}))
-    vals
-  end
-
-  def clear
-    tk_send_without_enc('delete', '0', 'end')
-    self
-  end
-  alias erase clear
-
-=begin
-  def itemcget(index, key)
-    case key.to_s
-    when 'text', 'label', 'show'
-      _fromUTF8(tk_send_without_enc('itemcget', index, "-#{key}"))
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_send('itemcget', index, "-#{key}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', index, 
-                                                      '-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(index, fnt)
-      end
-      if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', index, "-#{key}")))
-    end
-  end
-  def itemconfigure(index, key, val=None)
-    if key.kind_of? Hash
-      if (key['font'] || key[:font] || 
-          key['kanjifont'] || key[:kanjifont] || 
-          key['latinfont'] || key[:latinfont] || 
-          key['asciifont'] || key[:asciifont] )
-        tagfont_configure(index, _symbolkey2str(key))
-      else
-        tk_send_without_enc('itemconfigure', index, *hash_kv(key, true))
-      end
-
-    else
-      if (key == 'font' || key == :font || 
-          key == 'kanjifont' || key == :kanjifont || 
-          key == 'latinfont' || key == :latinfont || 
-          key == 'asciifont' || key == :asciifont )
-        if val == None
-          tagfontobj(index)
-        else
-          tagfont_configure(index, {key=>val})
-        end
-      else
-        tk_call('itemconfigure', index, "-#{key}", val)
-      end
-    end
-    self
-  end
-
-  def itemconfiginfo(index, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-          conf[4] = tagfont_configinfo(index, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', index))).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-        fontconf = ret.assoc('font')
-        if fontconf
-          ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
-          fontconf[4] = tagfont_configinfo(index, fontconf[4])
-          ret.push(fontconf)
-        else
-          ret
-        end
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-          conf[4] = tagfont_configinfo(index, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', index))).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        fontconf = ret['font']
-        if fontconf
-          ret.delete('font')
-          ret.delete('kanjifont')
-          fontconf[3] = tagfont_configinfo(index, fontconf[3])
-          ret['font'] = fontconf
-        end
-        ret
-      end
-    end
-  end
-
-  def current_itemconfiginfo(index, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = itemconfiginfo(index, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        itemconfiginfo(index).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      itemconfiginfo(index, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-=end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/macpkg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/macpkg.rb
deleted file mode 100644
index 1802073..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/macpkg.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-#
-#   tk/macpkg.rb : methods for Tcl/Tk packages for Macintosh
-#                     2000/11/22 by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-#     ATTENTION !!
-#         This is NOT TESTED. Because I have no test-environment.
-#
-#
-require 'tk'
-
-module Tk
-  def Tk.load_tclscript_rsrc(resource_name, file=None)
-    # Mac only
-    tk_call('source', '-rsrc', resource_name, file)
-  end
-
-  def Tk.load_tclscript_rsrcid(resource_id, file=None)
-    # Mac only
-    tk_call('source', '-rsrcid', resource_id, file)
-  end
-end
-
-module TkMacResource
-  extend Tk
-  extend TkMacResource
-
-  TkCommandNames = ['resource'.freeze].freeze
-
-  PACKAGE_NAME = 'resource'.freeze
-  def self.package_name
-    PACKAGE_NAME
-  end
-
-  tk_call_without_enc('package', 'require', 'resource')
-
-  def close(rsrcRef)
-    tk_call('resource', 'close', rsrcRef)
-  end
-
-  def delete(rsrcType, opts=nil)
-    tk_call('resource', 'delete', *(hash_kv(opts) << rsrcType))
-  end
-
-  def files(rsrcRef=nil)
-    if rsrcRef
-      tk_call('resource', 'files', rsrcRef)
-    else
-      tk_split_simplelist(tk_call('resource', 'files'))
-    end
-  end
-
-  def list(rsrcType, rsrcRef=nil)
-    tk_split_simplelist(tk_call('resource', 'list', rsrcType, rsrcRef))
-  end
-
-  def open(fname, access=nil)
-    tk_call('resource', 'open', fname, access)
-  end
-
-  def read(rsrcType, rsrcID, rsrcRef=nil)
-    tk_call('resource', 'read', rsrcType, rsrcID, rsrcRef)
-  end
-
-  def types(rsrcRef=nil)
-    tk_split_simplelist(tk_call('resource', 'types', rsrcRef))
-  end
-
-  def write(rsrcType, data, opts=nil)
-    tk_call('resource', 'write', *(hash_kv(opts) << rsrcType << data))
-  end
-
-  module_function :close, :delete, :files, :list, :open, :read, :types, :write
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menu.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menu.rb
deleted file mode 100644
index ddddc8e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menu.rb
+++ /dev/null
@@ -1,632 +0,0 @@
-#
-# tk/menu.rb : treat menu and menubutton
-#
-require 'tk'
-require 'tk/itemconfig'
-require 'tk/menuspec'
-
-module TkMenuEntryConfig
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'entrycget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'entryconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_strval_optkeys(id)
-    super(id) << 'selectcolor'
-  end
-  private :__item_strval_optkeys
-
-  def __item_listval_optkeys(id)
-    []
-  end
-  private :__item_listval_optkeys
-
-  def __item_val2ruby_optkeys(id)  # { key=>proc, ... }
-    super(id).update('menu'=>proc{|i, v| window(v)})
-  end
-  private :__item_val2ruby_optkeys
-
-  alias entrycget itemcget
-  alias entryconfigure itemconfigure
-  alias entryconfiginfo itemconfiginfo
-  alias current_entryconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-class TkMenu<TkWindow
-  include Wm
-  include TkMenuEntryConfig
-  extend TkMenuSpec
-
-  TkCommandNames = ['menu'.freeze].freeze
-  WidgetClassName = 'Menu'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('menu', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('menu', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def __strval_optkeys
-    super() << 'selectcolor' << 'title'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'tearoff'
-  end
-  private :__boolval_optkeys
-
-  def self.new_menuspec(menu_spec, parent = nil, tearoff = false, keys = nil)
-    if parent.kind_of?(Hash)
-      keys = _symbolkey2str(parent)
-      parent = keys.delete('parent')
-      tearoff = keys.delete('tearoff')
-    elsif tearoff.kind_of?(Hash)
-      keys = _symbolkey2str(tearoff)
-      tearoff = keys.delete('tearoff')
-    elsif keys
-      keys = _symbolkey2str(keys)
-    else
-      keys = {}
-    end
-
-    widgetname = keys.delete('widgetname')
-    _create_menu(parent, menu_spec, widgetname, tearoff, keys)
-  end
-
-  def tagid(id)
-    #id.to_s
-    _get_eval_string(id)
-  end
-
-  def activate(index)
-    tk_send_without_enc('activate', _get_eval_enc_str(index))
-    self
-  end
-  def add(type, keys=nil)
-    tk_send_without_enc('add', type, *hash_kv(keys, true))
-    self
-  end
-  def add_cascade(keys=nil)
-    add('cascade', keys)
-  end
-  def add_checkbutton(keys=nil)
-    add('checkbutton', keys)
-  end
-  def add_command(keys=nil)
-    add('command', keys)
-  end
-  def add_radiobutton(keys=nil)
-    add('radiobutton', keys)
-  end
-  def add_separator(keys=nil)
-    add('separator', keys)
-  end
-
-  def clone_menu(*args)
-    if args[0].kind_of?(TkWindow)
-      parent = args.shift
-    else
-      parent = self
-    end
-
-    if args[0].kind_of?(String) || args[0].kind_of?(Symbol) # menu type
-      type = args.shift
-    else
-      type = None # 'normal'
-    end
-
-    if args[0].kind_of?(Hash)
-      keys = _symbolkey2str(args.shift)
-    else
-      keys = {}
-    end
-
-    parent = keys.delete('parent') if keys.has_key?('parent')
-    type = keys.delete('type') if keys.has_key?('type')
-
-    if keys.empty?
-      TkMenuClone.new(self, parent, type)
-    else
-      TkMenuClone.new(self, parent, type, keys)
-    end
-  end
-
-  def index(idx)
-    ret = tk_send_without_enc('index', _get_eval_enc_str(idx))
-    (ret == 'none')? nil: number(ret)
-  end
-  def invoke(index)
-    _fromUTF8(tk_send_without_enc('invoke', _get_eval_enc_str(index)))
-  end
-  def insert(index, type, keys=nil)
-    tk_send_without_enc('insert', _get_eval_enc_str(index), 
-                        type, *hash_kv(keys, true))
-    self
-  end
-  def delete(first, last=nil)
-    if last
-      tk_send_without_enc('delete', _get_eval_enc_str(first), 
-                          _get_eval_enc_str(last))
-    else
-      tk_send_without_enc('delete', _get_eval_enc_str(first))
-    end
-    self
-  end
-  def popup(x, y, index=nil)
-    if index
-      tk_call_without_enc('tk_popup', path, x, y, 
-                          _get_eval_enc_str(index))
-    else
-      tk_call_without_enc('tk_popup', path, x, y)
-    end
-    self
-  end
-  def post(x, y)
-    _fromUTF8(tk_send_without_enc('post', x, y))
-  end
-  def postcascade(index)
-    tk_send_without_enc('postcascade', _get_eval_enc_str(index))
-    self
-  end
-  def postcommand(cmd=Proc.new)
-    configure_cmd 'postcommand', cmd
-    self
-  end
-  def set_focus
-    tk_call_without_enc('tk_menuSetFocus', path)
-    self
-  end
-  def tearoffcommand(cmd=Proc.new)
-    configure_cmd 'tearoffcommand', cmd
-    self
-  end
-  def menutype(index)
-    tk_send_without_enc('type', _get_eval_enc_str(index))
-  end
-  def unpost
-    tk_send_without_enc('unpost')
-    self
-  end
-  def yposition(index)
-    number(tk_send_without_enc('yposition', _get_eval_enc_str(index)))
-  end
-
-=begin
-  def entrycget(index, key)
-    case key.to_s
-    when 'text', 'label', 'show'
-      _fromUTF8(tk_send_without_enc('entrycget', 
-                                    _get_eval_enc_str(index), "-#{key}"))
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_send('entrycget', index, "-#{key}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('entrycget', _get_eval_enc_str(index), '-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(index, fnt)
-      end
-      if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('entrycget', _get_eval_enc_str(index), "-#{key}")))
-    end
-  end
-  def entryconfigure(index, key, val=None)
-    if key.kind_of? Hash
-      if (key['font'] || key[:font] || 
-          key['kanjifont'] || key[:kanjifont] || 
-          key['latinfont'] || key[:latinfont] || 
-          key['asciifont'] || key[:asciifont])
-        tagfont_configure(index, _symbolkey2str(key))
-      else
-        tk_send_without_enc('entryconfigure', _get_eval_enc_str(index), 
-                            *hash_kv(key, true))
-      end
-
-    else
-      if (key == 'font' || key == :font || 
-          key == 'kanjifont' || key == :kanjifont || 
-          key == 'latinfont' || key == :latinfont || 
-          key == 'asciifont' || key == :asciifont )
-        if val == None
-          tagfontobj(index)
-        else
-          tagfont_configure(index, {key=>val})
-        end
-      else
-        tk_call('entryconfigure', index, "-#{key}", val)
-      end
-    end
-    self
-  end
-
-  def entryconfiginfo(index, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-          conf[4] = tagfont_configinfo(index, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure', _get_eval_enc_str(index)))).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-        if fontconf
-          ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
-          fontconf[4] = tagfont_configinfo(index, fontconf[4])
-          ret.push(fontconf)
-        else
-          ret
-        end
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-          conf[4] = tagfont_configinfo(index, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure', _get_eval_enc_str(index)))).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        fontconf = ret['font']
-        if fontconf
-          ret.delete('font')
-          ret.delete('kanjifont')
-          fontconf[3] = tagfont_configinfo(index, fontconf[3])
-          ret['font'] = fontconf
-        end
-        ret
-      end
-    end
-  end
-
-  def current_entryconfiginfo(index, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = entryconfiginfo(index, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        entryconfiginfo(index).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      entryconfiginfo(index, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-=end
-end
-
-
-class TkMenuClone<TkMenu
-=begin
-  def initialize(parent, type=None)
-    widgetname = nil
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-      parent = keys.delete('parent')
-      widgetname = keys.delete('widgetname')
-      type = keys.delete('type'); type = None unless type
-    end
-    #unless parent.kind_of?(TkMenu)
-    #  fail ArgumentError, "parent must be TkMenu"
-    #end
-    @parent = parent
-    install_win(@parent.path, widgetname)
-    tk_call_without_enc(@parent.path, 'clone', @path, type)
-  end
-=end
-  def initialize(src_menu, *args)
-    widgetname = nil
-
-    if args[0].kind_of?(TkWindow)  # parent window
-      parent = args.shift
-    else
-      parent = src_menu
-    end
-
-    if args[0].kind_of?(String) || args[0].kind_of?(Symbol)  # menu type
-      type = args.shift
-    else
-      type = None  # 'normal'
-    end
-
-    if args[0].kind_of?(Hash)
-      keys = _symbolkey2str(args.shift)
-      parent = keys.delete('parent') if keys.has_key?('parent')
-      widgetname = keys.delete('widgetname')
-      type = keys.delete('type') if keys.has_key?('type')
-    else
-      keys = nil
-    end
-
-    @src_menu = src_menu
-    @parent = parent
-    @type = type
-    install_win(@parent.path, widgetname)
-    tk_call_without_enc(@src_menu.path, 'clone', @path, @type)
-    configure(keys) if keys && !keys.empty?
-  end
-
-  def source_menu
-    @src_menu
-  end
-end
-TkCloneMenu = TkMenuClone
-
-module TkSystemMenu
-  def initialize(parent, keys=nil)
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-      parent = keys.delete('parent')
-    end
-    #unless parent.kind_of? TkMenu
-    #  fail ArgumentError, "parent must be a TkMenu object"
-    #end
-    # @path = Kernel.format("%s.%s", parent.path, self.class::SYSMENU_NAME)
-    @path = parent.path + '.' + self.class::SYSMENU_NAME
-    #TkComm::Tk_WINDOWS[@path] = self
-    TkCore::INTERP.tk_windows[@path] = self
-    if self.method(:create_self).arity == 0
-      p 'create_self has no arg' if $DEBUG
-      create_self
-      configure(keys) if keys
-    else
-      p 'create_self has an arg' if $DEBUG
-      create_self(keys)
-    end
-  end
-end
-
-
-class TkSysMenu_Help<TkMenu
-  # for all platform
-  include TkSystemMenu
-  SYSMENU_NAME = 'help'
-end
-
-
-class TkSysMenu_System<TkMenu
-  # for Windows
-  include TkSystemMenu
-  SYSMENU_NAME = 'system'
-end
-
-
-class TkSysMenu_Apple<TkMenu
-  # for Machintosh
-  include TkSystemMenu
-  SYSMENU_NAME = 'apple'
-end
-
-
-class TkMenubutton<TkLabel
-  TkCommandNames = ['menubutton'.freeze].freeze
-  WidgetClassName = 'Menubutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  def create_self(keys)
-    if keys and keys != None
-      # tk_call_without_enc('menubutton', @path, *hash_kv(keys, true))
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      # tk_call_without_enc('menubutton', @path)
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def __boolval_optkeys
-    super() << 'indicatoron'
-  end
-  private :__boolval_optkeys
-
-end
-TkMenuButton = TkMenubutton
-
-
-class TkOptionMenubutton<TkMenubutton
-  TkCommandNames = ['tk_optionMenu'.freeze].freeze
-
-  class OptionMenu<TkMenu
-    def initialize(path)  #==> return value of tk_optionMenu
-      @path = path
-      #TkComm::Tk_WINDOWS[@path] = self
-      TkCore::INTERP.tk_windows[@path] = self
-    end
-  end
-
-  def initialize(*args)
-    # args :: [parent,] [var,] [value[, ...],] [keys]
-    #    parent --> TkWindow or nil
-    #    var    --> TkVariable or nil
-    #    keys   --> Hash
-    #       keys[:parent] or keys['parent']     --> parent
-    #       keys[:variable] or keys['variable'] --> var
-    #       keys[:values] or keys['values']     --> value, ...
-    #       other Hash keys are menubutton options
-    keys = {}
-    keys = args.pop if args[-1].kind_of?(Hash)
-    keys = _symbolkey2str(keys)
-
-    parent = nil
-    if args[0].kind_of?(TkWindow) || args[0] == nil
-      keys.delete('parent') # ignore
-      parent = args.shift 
-    else
-      parent = keys.delete('parent')
-    end
-
-    @variable = nil
-    if args[0].kind_of?(TkVariable) || args[0] == nil
-      keys.delete('variable') # ignore
-      @variable = args.shift 
-    else
-      @variable = keys.delete('variable')
-    end
-    @variable = TkVariable.new unless @variable
-
-    (args = keys.delete('values') || []) if args.empty?
-    if args.empty?
-      args << @variable.value
-    else
-      @variable.value = args[0]
-    end
-
-    install_win(if parent then parent.path end)
-    @menu = OptionMenu.new(tk_call('tk_optionMenu', 
-                                   @path, @variable.id, *args))
-
-    configure(keys) if keys
-  end
-
-  def value
-    @variable.value
-  end
-
-  def value=(val)
-    @variable.value = val
-  end
-
-  def activate(index)
-    @menu.activate(index)
-    self
-  end
-  def add(value)
-    @menu.add('radiobutton', 'variable'=>@variable, 
-              'label'=>value, 'value'=>value)
-    self
-  end
-  def index(index)
-    @menu.index(index)
-  end
-  def invoke(index)
-    @menu.invoke(index)
-  end
-  def insert(index, value)
-    @menu.insert(index, 'radiobutton', 'variable'=>@variable, 
-              'label'=>value, 'value'=>value)
-    self
-  end
-  def delete(index, last=None)
-    @menu.delete(index, last)
-    self
-  end
-  def yposition(index)
-    @menu.yposition(index)
-  end
-  def menu
-    @menu
-  end
-  def menucget(key)
-    @menu.cget(key)
-  end
-  def menuconfigure(key, val=None)
-    @menu.configure(key, val)
-    self
-  end
-  def menuconfiginfo(key=nil)
-    @menu.configinfo(key)
-  end
-  def current_menuconfiginfo(key=nil)
-    @menu.current_configinfo(key)
-  end
-  def entrycget(index, key)
-    @menu.entrycget(index, key)
-  end
-  def entryconfigure(index, key, val=None)
-    @menu.entryconfigure(index, key, val)
-    self
-  end
-  def entryconfiginfo(index, key=nil)
-    @menu.entryconfiginfo(index, key)
-  end
-  def current_entryconfiginfo(index, key=nil)
-    @menu.current_entryconfiginfo(index, key)
-  end
-end
-TkOptionMenuButton = TkOptionMenubutton
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menubar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menubar.rb
deleted file mode 100644
index 392b6fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menubar.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# tk/menubar.rb
-#
-# Original version:
-#   Copyright (C) 1998 maeda shugo. All rights reserved. 
-#   This file can be distributed under the terms of the Ruby.
-
-# Usage:
-#
-# menu_spec = [
-#   [['File', 0],
-#     ['Open', proc{puts('Open clicked')}, 0],
-#     '---',
-#     ['Quit', proc{exit}, 0]],
-#   [['Edit', 0],
-#     ['Cut', proc{puts('Cut clicked')}, 2],
-#     ['Copy', proc{puts('Copy clicked')}, 0],
-#     ['Paste', proc{puts('Paste clicked')}, 0]]
-# ]
-# menubar = TkMenubar.new(nil, menu_spec,
-#                       'tearoff'=>false,
-#                       'foreground'=>'grey40',
-#                       'activeforeground'=>'red',
-#                       'font'=>'-adobe-helvetica-bold-r-*--12-*-iso8859-1')
-# menubar.pack('side'=>'top', 'fill'=>'x')
-#
-#
-# OR
-#
-#
-# menubar = TkMenubar.new
-# menubar.add_menu([['File', 0],
-#                  ['Open', proc{puts('Open clicked')}, 0],
-#                  '---',
-#                  ['Quit', proc{exit}, 0]])
-# menubar.add_menu([['Edit', 0],
-#                  ['Cut', proc{puts('Cut clicked')}, 2],
-#                  ['Copy', proc{puts('Copy clicked')}, 0],
-#                  ['Paste', proc{puts('Paste clicked')}, 0]])
-# menubar.configure('tearoff', false)
-# menubar.configure('foreground', 'grey40')
-# menubar.configure('activeforeground', 'red')
-# menubar.configure('font', '-adobe-helvetica-bold-r-*--12-*-iso8859-1')
-# menubar.pack('side'=>'top', 'fill'=>'x')
-#
-#
-# OR
-#
-# radio_var = TkVariable.new('y')
-# menu_spec = [
-#   [['File', 0],
-#     {:label=>'Open', :command=>proc{puts('Open clicked')}, :underline=>0},
-#     '---',
-#     ['Check_A', TkVariable.new(true), 6],
-#     {:type=>'checkbutton', :label=>'Check_B', 
-#                 :variable=>TkVariable.new, :underline=>6},
-#     '---',
-#     ['Radio_X', [radio_var, 'x'], 6],
-#     ['Radio_Y', [radio_var, 'y'], 6],
-#     ['Radio_Z', [radio_var, 'z'], 6],
-#     '---',
-#     ['cascade', [ 
-#                    ['sss', proc{p 'sss'}, 0], 
-#                    ['ttt', proc{p 'ttt'}, 0], 
-#                    ['uuu', proc{p 'uuu'}, 0], 
-#                    ['vvv', proc{p 'vvv'}, 0], 
-#                 ], 0],
-#     '---',
-#     ['Quit', proc{exit}, 0]],
-#   [['Edit', 0],
-#     ['Cut', proc{puts('Cut clicked')}, 2],
-#     ['Copy', proc{puts('Copy clicked')}, 0],
-#     ['Paste', proc{puts('Paste clicked')}, 0]]
-# ]
-# menubar = TkMenubar.new(nil, menu_spec,
-#                        'tearoff'=>false,
-#                        'foreground'=>'grey40',
-#                        'activeforeground'=>'red',
-#                        'font'=>'Helvetia 12 bold')
-# menubar.pack('side'=>'top', 'fill'=>'x')
-
-# See tk/menuspce.rb about the format of the menu_spec
-
-# To use add_menu, configuration must be done by calling configure after
-# adding all menus by add_menu, not by the constructor arguments.
-
-require 'tk'
-require 'tk/frame'
-require 'tk/composite'
-require 'tk/menuspec'
-
-class TkMenubar<TkFrame
-  include TkComposite
-  include TkMenuSpec
-  
-  def initialize(parent = nil, spec = nil, options = nil)
-    if parent.kind_of? Hash
-      options = _symbolkey2str(parent)
-      spec = options.delete('spec')
-      super(options)
-    else
-      super(parent, options)
-    end
-
-    @menus = []
-    
-    spec.each{|info| add_menu(info)} if spec
-
-    options.each{|key, value| configure(key, value)} if options
-  end
-
-  def add_menu(menu_info)
-    mbtn, menu = _create_menubutton(@frame, menu_info)
-
-    submenus = _get_cascade_menus(menu).flatten
-
-    @menus.push([mbtn, menu])
-    delegate('tearoff', menu, *submenus)
-    delegate('foreground', mbtn, menu, *submenus)
-    delegate('background', mbtn, menu, *submenus)
-    delegate('disabledforeground', mbtn, menu, *submenus)
-    delegate('activeforeground', mbtn, menu, *submenus)
-    delegate('activebackground', mbtn, menu, *submenus)
-    delegate('font', mbtn, menu, *submenus)
-    delegate('kanjifont', mbtn, menu, *submenus)
-  end
-  
-  def [](index)
-    return @menus[index]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menuspec.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menuspec.rb
deleted file mode 100644
index 118a4f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/menuspec.rb
+++ /dev/null
@@ -1,269 +0,0 @@
-#
-# tk/menuspec.rb
-#                              Hidethoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-# based on tkmenubar.rb :
-#   Copyright (C) 1998 maeda shugo. All rights reserved. 
-#   This file can be distributed under the terms of the Ruby.
-#
-# The format of the menu_spec is:
-#   [ menu_info, menu_info, ... ]
-#
-# And the format of the menu_info is:
-#   [
-#     [text, underline, configs], # menu button/entry (*1)
-#     [label, command, underline, accelerator, configs],   # command entry
-#     [label, TkVar_obj, underline, accelerator, configs], # checkbutton entry
-#     [label, [TkVar_obj, value], 
-#                        underline, accelerator, configs], # radiobutton entry
-#     [label, [[...menu_info...], [...menu_info...], ...], 
-#                        underline, accelerator, configs], # cascade entry (*2)
-#     '---', # separator
-#     ...
-#   ]
-#
-# underline, accelerator, and configs are optional pearameters. 
-# Hashes are OK instead of Arrays. Then the entry type ('command', 
-# 'checkbutton', 'radiobutton' or 'cascade') is given by 'type' key
-# (e.g. :type=>'cascade'). When type is 'cascade', an array of menu_info
-# is acceptable for 'menu' key (then, create sub-menu).
-#
-# NOTE: (*1)
-#   If you want to make special menus (*.help for UNIX, *.system for Win, 
-#   and *.apple for Mac), append 'menu_name'=>name (name is 'help' for UNIX, 
-#   'system' for Win, and 'apple' for Mac) option to the configs hash of 
-#   menu button/entry information.
-#
-# NOTE: (*2)
-#   If you want to configure a cascade menu, add :menu_config=>{...configs..}
-#   to the configs of the cascade entry.
-
-module TkMenuSpec
-  def _create_menu(parent, menu_info, menu_name = nil, 
-                   tearoff = false, default_opts = nil)
-    if tearoff.kind_of?(Hash)
-      default_opts = tearoff
-      tearoff = false
-    end
-
-    if menu_name.kind_of?(Hash)
-      default_opts = menu_name
-      menu_name = nil
-      tearoff = false
-    end
-
-    if default_opts.kind_of?(Hash)
-      orig_opts = _symbolkey2str(default_opts)
-    else
-      orig_opts = {}
-    end
-
-    tearoff = orig_opts.delete('tearoff') if orig_opts.key?('tearoff')
-
-    if menu_name
-      menu = TkMenu.new(parent, :widgetname=>menu_name, :tearoff=>tearoff)
-    else
-      menu = TkMenu.new(parent, :tearoff=>tearoff)
-    end
-
-    for item_info in menu_info
-      if item_info.kind_of?(Hash)
-        options = orig_opts.dup
-        options.update(_symbolkey2str(item_info))
-        item_type = (options.delete('type') || 'command').to_s
-        menu_name = options.delete('menu_name')
-        menu_opts = orig_opts.dup
-        menu_opts.update(_symbolkey2str(options.delete('menu_config') || {}))
-        if item_type == 'cascade' && options['menu'].kind_of?(Array)
-          # create cascade menu
-          submenu = _create_menu(menu, options['menu'], menu_name, 
-                                 tearoff, menu_opts)
-          options['menu'] = submenu
-        end
-        menu.add(item_type, options)
-
-      elsif item_info.kind_of?(Array)
-        options = orig_opts.dup
-
-        options['label'] = item_info[0] if item_info[0]
-
-        case item_info[1]
-        when TkVariable
-          # checkbutton
-          item_type = 'checkbutton'
-          options['variable'] = item_info[1]
-          options['onvalue']  = true
-          options['offvalue'] = false
-
-        when Array
-          # radiobutton or cascade
-          if item_info[1][0].kind_of?(TkVariable)
-            # radiobutton
-            item_type = 'radiobutton'
-            options['variable'] = item_info[1][0]
-            options['value'] = item_info[1][1] if item_info[1][1]
-
-          else
-            # cascade
-            item_type = 'cascade'
-            menu_opts = orig_opts.dup
-            if item_info[4] && item_info[4].kind_of?(Hash)
-              opts = _symbolkey2str(item_info[4])
-              menu_name = opts.delete('menu_name')
-              menu_config = opts.delete('menu_config') || {}
-              menu_opts.update(_symbolkey2str(menu_config))
-            end
-            submenu = _create_menu(menu, item_info[1], menu_name, 
-                                   tearoff, menu_opts)
-            options['menu'] = submenu
-          end
-
-        else
-          # command
-          item_type = 'command'
-          options['command'] = item_info[1] if item_info[1]
-        end
-
-        options['underline'] = item_info[2] if item_info[2]
-        options['accelerator'] = item_info[3] if item_info[3]
-        if item_info[4] && item_info[4].kind_of?(Hash)
-          opts = _symbolkey2str(item_info[4])
-          if item_type == 'cascade'
-            opts.delete('menu_name')
-            opts.delete('menu_config')
-          end
-          options.update(opts)
-        end
-        menu.add(item_type, options)
-
-      elsif /^-+$/ =~ item_info
-        menu.add('separator')
-
-      else
-        menu.add('command', 'label' => item_info)
-      end
-    end
-
-    menu
-  end
-  private :_create_menu
-
-  def _use_menubar?(parent)
-    use_menubar = false
-    if parent.kind_of?(TkRoot) || parent.kind_of?(TkToplevel)
-      return true 
-    else
-      begin
-        parent.cget('menu')
-        return true 
-      rescue
-      end
-    end
-    false
-  end
-  private :_use_menubar?
-
-  def _create_menu_for_menubar(parent)
-    unless (mbar = parent.menu).kind_of?(TkMenu)
-      mbar = TkMenu.new(parent, :tearoff=>false)
-      parent.menu(mbar)
-    end
-    mbar
-  end
-  private :_create_menu_for_menubar
-
-  def _create_menubutton(parent, menu_info, tearoff=false, default_opts = nil)
-    btn_info = menu_info[0]
-
-    if tearoff.kind_of?(Hash)
-      default_opts = tearoff
-      tearoff = false
-    end
-
-    if default_opts.kind_of?(Hash)
-      keys = _symbolkey2str(default_opts)
-    else
-      keys = {}
-    end
-
-    tearoff = keys.delete('tearoff') if keys.key?('tearoff')
-
-    if _use_menubar?(parent)
-      # menubar by menu entries
-
-      mbar = _create_menu_for_menubar(parent)
-
-      menu_name = nil
-
-      if btn_info.kind_of?(Hash)
-        keys.update(_symbolkey2str(btn_info))
-        menu_name = keys.delete('menu_name')
-        keys['label'] = keys.delete('text') if keys.key?('text')
-      elsif btn_info.kind_of?(Array)
-        keys['label'] = btn_info[0] if btn_info[0]
-        keys['underline'] = btn_info[1] if btn_info[1]
-        if btn_info[2]&&btn_info[2].kind_of?(Hash)
-          keys.update(_symbolkey2str(btn_info[2]))
-          menu_name = keys.delete('menu_name')
-        end
-      else
-        keys = {:label=>btn_info}
-      end
-
-      menu = _create_menu(mbar, menu_info[1..-1], menu_name, 
-                          tearoff, default_opts)
-      menu.tearoff(tearoff)
-
-      keys['menu'] = menu
-      mbar.add('cascade', keys)
-
-      [mbar, menu]
-
-    else
-      # menubar by menubuttons
-      mbtn = TkMenubutton.new(parent)
-
-      menu_name = nil
-
-      if btn_info.kind_of?(Hash)
-        keys.update(_symbolkey2str(btn_info))
-        menu_name = keys.delete('menu_name')
-        keys['text'] = keys.delete('label') if keys.key?('label')
-        mbtn.configure(keys)
-      elsif btn_info.kind_of?(Array)
-        mbtn.configure('text', btn_info[0]) if btn_info[0]
-        mbtn.configure('underline', btn_info[1]) if btn_info[1]
-        # mbtn.configure('accelerator', btn_info[2]) if btn_info[2]
-        if btn_info[2]&&btn_info[2].kind_of?(Hash)
-          keys.update(_symbolkey2str(btn_info[2]))
-          menu_name = keys.delete('menu_name')
-          mbtn.configure(keys)
-        end
-      else
-        mbtn.configure('text', btn_info)
-      end
-
-      mbtn.pack('side' => 'left')
-
-      menu = _create_menu(mbtn, menu_info[1..-1], menu_name, 
-                          tearoff, default_opts)
-    
-      mbtn.menu(menu)
-
-      [mbtn, menu]
-    end
-  end
-  private :_create_menubutton
-
-  def _get_cascade_menus(menu)
-    menus = []
-    (0..(menu.index('last'))).each{|idx|
-      if menu.menutype(idx) == 'cascade'
-        submenu = menu.entrycget(idx, 'menu')
-        menus << [submenu, _get_cascade_menus(submenu)]
-      end
-    }
-    menus
-  end
-  private :_get_cascade_menus
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/message.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/message.rb
deleted file mode 100644
index 79121be..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/message.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# tk/message.rb : treat message widget
-#
-require 'tk'
-require 'tk/label'
-
-class TkMessage<TkLabel
-  TkCommandNames = ['message'.freeze].freeze
-  WidgetClassName = 'Message'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('message', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('message', @path)
-  #  end
-  #end
-  private :create_self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/mngfocus.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/mngfocus.rb
deleted file mode 100644
index 1a2049c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/mngfocus.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#   tk/mngfocus.rb : methods for Tcl/Tk standard library 'focus.tcl'
-#                           by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-module TkManageFocus
-  extend Tk
-
-  TkCommandNames = [
-    'tk_focusFollowMouse'.freeze, 
-    'tk_focusNext'.freeze, 
-    'tk_focusPrev'.freeze
-  ].freeze
-
-  def TkManageFocus.followsMouse
-    tk_call_without_enc('tk_focusFollowsMouse')
-  end
-
-  def TkManageFocus.next(win)
-    tk_tcl2ruby(tk_call('tk_focusNext', win))
-  end
-  def focusNext
-    TkManageFocus.next(self)
-  end
-
-  def TkManageFocus.prev(win)
-    tk_tcl2ruby(tk_call('tk_focusPrev', win))
-  end
-  def focusPrev
-    TkManageFocus.prev(self)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/msgcat.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/msgcat.rb
deleted file mode 100644
index 061e43f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/msgcat.rb
+++ /dev/null
@@ -1,292 +0,0 @@
-#
-#   tk/msgcat.rb : methods for Tcl message catalog
-#                     by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-#class TkMsgCatalog
-class TkMsgCatalog < TkObject
-  include TkCore
-  extend Tk
-  #extend TkMsgCatalog
-
-  TkCommandNames = [
-    '::msgcat::mc'.freeze, 
-    '::msgcat::mcmax'.freeze, 
-    '::msgcat::mclocale'.freeze, 
-    '::msgcat::mcpreferences'.freeze, 
-    '::msgcat::mcload'.freeze, 
-    '::msgcat::mcset'.freeze, 
-    '::msgcat::mcmset'.freeze, 
-    '::msgcat::mcunknown'.freeze
-  ].freeze
-
-  tk_call_without_enc('package', 'require', 'Tcl', '8.2')
-
-  PACKAGE_NAME = 'msgcat'.freeze
-  def self.package_name
-    PACKAGE_NAME
-  end
-
-  if self.const_defined? :FORCE_VERSION
-    tk_call_without_enc('package', 'require', 'msgcat', FORCE_VERSION)
-  else
-    tk_call_without_enc('package', 'require', 'msgcat')
-  end
-
-  MSGCAT_EXT = '.msg'
-
-  UNKNOWN_CBTBL = Hash.new{|hash,key| hash[key] = {}}.taint
-
-  TkCore::INTERP.add_tk_procs('::msgcat::mcunknown', 'args', <<-'EOL')
-    if {[set st [catch {eval {ruby_cmd TkMsgCatalog callback} [namespace current] $args} ret]] != 0} {
-       #return -code $st $ret
-       set idx [string first "\n\n" $ret]
-       if {$idx > 0} {
-          return -code $st \
-                 -errorinfo [string range $ret [expr $idx + 2] \
-                                               [string length $ret]] \
-                 [string range $ret 0 [expr $idx - 1]]
-       } else {
-          return -code $st $ret
-       }
-    } else {
-        return $ret
-    }
-  EOL
-
-  def self.callback(namespace, locale, src_str, *args)
-    src_str = sprintf(src_str, *args) unless args.empty?
-    cmd_tbl = TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip]
-    cmd = cmd_tbl[namespace]
-    cmd = cmd_tbl['::'] unless cmd  # use global scope as interp default
-    return src_str unless cmd       # no cmd -> return src-str (default action)
-    begin
-      cmd.call(locale, src_str)
-    rescue SystemExit
-      exit(0)
-    rescue Interrupt
-      exit!(1)
-    rescue Exception => e
-      begin
-        msg = _toUTF8(e.class.inspect) + ': ' + 
-              _toUTF8(e.message) + "\n" + 
-              "\n---< backtrace of Ruby side >-----\n" + 
-              _toUTF8(e.backtrace.join("\n")) + 
-              "\n---< backtrace of Tk side >-------"
-        msg.instance_variable_set(:@encoding, 'utf-8')
-      rescue Exception
-        msg = e.class.inspect + ': ' + e.message + "\n" + 
-              "\n---< backtrace of Ruby side >-----\n" + 
-              e.backtrace.join("\n") + 
-              "\n---< backtrace of Tk side >-------"
-      end
-      fail(e, msg)
-    end
-  end
-
-  def initialize(namespace = nil)
-    if namespace.kind_of?(TkNamespace)
-      @namespace = namespace
-    elsif namespace == nil
-      @namespace = TkNamespace.new('::')  # global namespace
-    else
-      @namespace = TkNamespace.new(namespace)
-    end
-    @path = @namespace.path
-
-    @msgcat_ext = '.msg'
-  end
-  attr_accessor :msgcat_ext
-
-  def method_missing(id, *args)
-    # locale(src, trans) ==> set_translation(locale, src, trans)
-    loc = id.id2name
-    case args.length
-    when 0 # set locale
-      self.locale=(loc)
-
-    when 1 # src only, or trans_list
-      if args[0].kind_of?(Array)
-        # trans_list
-        #list = args[0].collect{|src, trans|
-        #  [ Tk::UTF8_String.new(src), Tk::UTF8_String.new(trans) ]
-        #}
-        self.set_translation_list(loc, args[0])
-      else
-        # src
-        #self.set_translation(loc, Tk::UTF8_String.new(args[0]))
-        self.set_translation(loc, args[0])
-      end
-
-    when 2 # src and trans, or, trans_list and enc
-      if args[0].kind_of?(Array)
-      else
-        #self.set_translation(loc, args[0], Tk::UTF8_String.new(args[1]))
-        self.set_translation(loc, *args)
-      end
-
-    when 3 # src and trans and enc
-      self.set_translation(loc, *args)
-
-    else
-      super(id, *args)
-#      fail NameError, "undefined method `#{name}' for #{self.to_s}", error_at
-
-    end
-  end
-
-  # *args ::= form, arg, arg, ...
-  def self.translate(*args)
-    dst = args.collect{|src|
-      tk_call_without_enc('::msgcat::mc', _get_eval_string(src, true))
-    }
-    Tk.UTF8_String(sprintf(*dst))
-  end
-  class << self
-    alias mc translate
-    alias [] translate
-  end
-  def translate(*args)
-    dst = args.collect{|src|
-      @namespace.eval{tk_call_without_enc('::msgcat::mc', 
-                                          _get_eval_string(src, true))}
-    }
-    Tk.UTF8_String(sprintf(*dst))
-  end
-  alias mc translate
-  alias [] translate
-
-  def self.maxlen(*src_strings)
-    tk_call('::msgcat::mcmax', *src_strings).to_i
-  end
-  def maxlen(*src_strings)
-    @namespace.eval{tk_call('::msgcat::mcmax', *src_strings).to_i}
-  end
-
-  def self.locale
-    tk_call('::msgcat::mclocale')
-  end
-  def locale
-    @namespace.eval{tk_call('::msgcat::mclocale')}
-  end
-
-  def self.locale=(locale)
-    tk_call('::msgcat::mclocale', locale)
-  end
-  def locale=(locale)
-    @namespace.eval{tk_call('::msgcat::mclocale', locale)}
-  end
-
-  def self.preferences
-    tk_split_simplelist(tk_call('::msgcat::mcpreferences'))
-  end
-  def preferences
-    tk_split_simplelist(@namespace.eval{tk_call('::msgcat::mcpreferences')})
-  end
-
-  def self.load_tk(dir)
-    number(tk_call('::msgcat::mcload', dir))
-  end
-
-  def self.load_rb(dir)
-    count = 0
-    preferences().each{|loc|
-      file = File.join(dir, loc + self::MSGCAT_EXT)
-      if File.readable?(file)
-        count += 1
-        eval(open(file){|f| f.read})
-      end
-    }
-    count
-  end
-
-  def load_tk(dir)
-    number(@namespace.eval{tk_call('::msgcat::mcload', dir)})
-  end
-
-  def load_rb(dir)
-    count = 0
-    preferences().each{|loc|
-      file = File.join(dir, loc + @msgcat_ext)
-      if File.readable?(file)
-        count += 1
-        @namespace.eval(open(file){|f| f.read})
-      end
-    }
-    count
-  end
-
-  def self.load(dir)
-    self.load_rb(dir)
-  end
-  alias load load_rb
-
-  def self.set_translation(locale, src_str, trans_str=None, enc='utf-8')
-    if trans_str && trans_str != None
-      trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc))
-      Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset', 
-                                         locale, 
-                                         _get_eval_string(src_str, true), 
-                                         trans_str))
-    else
-      Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset', 
-                                         locale, 
-                                         _get_eval_string(src_str, true)))
-    end
-  end
-  def set_translation(locale, src_str, trans_str=None, enc='utf-8')
-    if trans_str && trans_str != None
-      trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc)) 
-      Tk.UTF8_String(@namespace.eval{
-                       tk_call_without_enc('::msgcat::mcset', 
-                                           locale, 
-                                           _get_eval_string(src_str, true), 
-                                           trans_str)
-                     })
-    else
-      Tk.UTF8_String(@namespace.eval{
-                       tk_call_without_enc('::msgcat::mcset', 
-                                           locale, 
-                                           _get_eval_string(src_str, true))})
-    end
-  end
-
-  def self.set_translation_list(locale, trans_list, enc='utf-8')
-    # trans_list ::= [ [src, trans], [src, trans], ... ]
-    list = []
-    trans_list.each{|src, trans|
-      if trans && trans != None
-        list << _get_eval_string(src, true) 
-        list << Tk.UTF8_Stirng(_toUTF8(trans, enc))
-      else
-        list << _get_eval_string(src, true) << ''
-      end
-    }
-    number(tk_call_without_enc('::msgcat::mcmset', locale, list))
-  end
-  def set_translation_list(locale, trans_list, enc='utf-8')
-    # trans_list ::= [ [src, trans], [src, trans], ... ]
-    list = []
-    trans_list.each{|src, trans|
-      if trans && trans != None
-        list << _get_eval_string(src, true) 
-        list << Tk.UTF8_String(_toUTF8(trans, enc))
-      else
-        list << _get_eval_string(src, true) << ''
-      end
-    }
-    number(@namespace.eval{
-             tk_call_without_enc('::msgcat::mcmset', locale, list)
-           })
-  end
-
-  def self.def_unknown_proc(cmd=Proc.new)
-    TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip]['::'] = cmd
-  end
-  def def_unknown_proc(cmd=Proc.new)
-    TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip][@namespace.path] = cmd
-  end
-end
-
-TkMsgCat = TkMsgCatalog
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/namespace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/namespace.rb
deleted file mode 100644
index 5bf6474..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/namespace.rb
+++ /dev/null
@@ -1,500 +0,0 @@
-#
-#   tk/namespace.rb : methods to manipulate Tcl/Tk namespace
-#                           by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-class TkNamespace < TkObject
-  extend Tk
-
-  TkCommandNames = [
-    'namespace'.freeze, 
-  ].freeze
-
-  Tk_Namespace_ID_TBL = TkCore::INTERP.create_table
-  Tk_Namespace_ID = ["ns".freeze, "00000".taint].freeze
-
-  Tk_NsCode_RetObjID_TBL = TkCore::INTERP.create_table
-
-  TkCore::INTERP.init_ip_env{
-    Tk_Namespace_ID_TBL.clear
-    Tk_NsCode_RetObjID_TBL.clear
-  }
-
-  def TkNamespace.id2obj(id)
-    Tk_Namespace_ID_TBL[id]? Tk_Namespace_ID_TBL[id]: id
-  end
-
-  #####################################
-
-  class Ensemble < TkObject
-    def __cget_cmd
-      ['namespace', 'ensemble', 'configure', self.path]
-    end
-    private :__cget_cmd
-
-    def __config_cmd
-      ['namespace', 'ensemble', 'configure', self.path]
-    end
-    private :__config_cmd
-
-    def __configinfo_struct
-      {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil, 
-        :default_value=>nil, :current_value=>2}
-    end
-    private :__configinfo_struct
-
-    def __boolval_optkeys
-      ['prefixes']
-    end
-    private :__boolval_optkeys
-
-    def __listval_optkeys
-      ['map', 'subcommands', 'unknown']
-    end
-    private :__listval_optkeys
-
-    def self.exist?(ensemble)
-      bool(tk_call('namespace', 'ensemble', 'exists', ensemble))
-    end
-
-    def initialize(keys = {})
-      @ensemble = @path = tk_call('namespace', 'ensemble', 'create', keys)
-    end
-
-    def cget(slot)
-      if slot == :namespace || slot == 'namespace'
-        ns = super(slot)
-        if TkNamespace::Tk_Namespace_ID_TBL.key?(ns)
-          TkNamespace::Tk_Namespace_ID_TBL[ns]
-        else
-          ns
-        end
-      else
-        super(slot)
-      end
-    end
-
-    def configinfo(slot = nil)
-      if slot
-        if slot == :namespace || slot == 'namespace'
-          val = super(slot)
-          if TkNamespace::Tk_Namespace_ID_TBL.key?(val)
-            val = TkNamespace::Tk_Namespace_ID_TBL[val]
-          end
-        else
-          val = super(slot)
-        end
-
-        if TkComm::GET_CONFIGINFO_AS_ARRAY
-          [slot.to_s, val]
-        else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-          {slot.to_s => val}
-        end
-
-      else
-        info = super()
-
-        if TkComm::GET_CONFIGINFO_AS_ARRAY
-          info.map!{|inf| 
-            if inf[0] == 'namespace' && 
-                TkNamespace::Tk_Namespace_ID_TBL.key?(inf[-1])
-              [inf[0], TkNamespace::Tk_Namespace_ID_TBL[inf[-1]]]
-            else
-              inf
-            end
-          }
-        else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-          val = info['namespace']
-          if TkNamespace::Tk_Namespace_ID_TBL.key?(val)
-            info['namespace'] = TkNamespace::Tk_Namespace_ID_TBL[val]
-          end
-        end
-
-        info
-      end
-    end
-
-    def exists?
-      bool(tk_call('namespace', 'ensemble', 'exists', @path))
-    end
-  end
-
-  #####################################
-
-  class ScopeArgs < Array
-    include Tk
-
-    # alias __tk_call             tk_call
-    # alias __tk_call_without_enc tk_call_without_enc
-    # alias __tk_call_with_enc    tk_call_with_enc
-    def tk_call(*args)
-      #super('namespace', 'eval', @namespace, *args)
-      args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-      super('namespace', 'eval', @namespace, 
-            TkCore::INTERP._merge_tklist(*args))
-    end
-    def tk_call_without_enc(*args)
-      #super('namespace', 'eval', @namespace, *args)
-      args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-      super('namespace', 'eval', @namespace, 
-            TkCore::INTERP._merge_tklist(*args))
-    end
-    def tk_call_with_enc(*args)
-      #super('namespace', 'eval', @namespace, *args)
-      args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-      super('namespace', 'eval', @namespace, 
-            TkCore::INTERP._merge_tklist(*args))
-    end
-
-    def initialize(namespace, *args)
-      @namespace = namespace
-      super(args.size)
-      self.replace(args)
-    end
-  end
-
-  #####################################
-
-  class NsCode < TkObject
-    def initialize(scope, use_obj_id = false)
-      @scope = scope + ' '
-      @use_obj_id = use_obj_id
-    end
-    def path
-      @scope
-    end
-    def to_eval
-      @scope
-    end
-    def call(*args)
-      ret = TkCore::INTERP._eval_without_enc(@scope + array2tk_list(args))
-      if @use_obj_id
-        ret = TkNamespace::Tk_NsCode_RetObjID_TBL.delete(ret.to_i)
-      end
-      ret
-    end
-  end
-
-  #####################################
-
-  def install_cmd(cmd)
-    lst = tk_split_simplelist(super(cmd), false, false)
-    if lst[1] =~ /^::/
-      lst[1] = @fullname
-    else
-      lst.insert(1, @fullname)
-    end
-    TkCore::INTERP._merge_tklist(*lst)
-  end
-
-  alias __tk_call             tk_call
-  alias __tk_call_without_enc tk_call_without_enc
-  alias __tk_call_with_enc    tk_call_with_enc
-  def tk_call(*args)
-    #super('namespace', 'eval', @fullname, *args)
-    args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-    super('namespace', 'eval', @fullname, 
-          TkCore::INTERP._merge_tklist(*args))
-  end
-  def tk_call_without_enc(*args)
-    #super('namespace', 'eval', @fullname, *args)
-    args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-    super('namespace', 'eval', @fullname,  
-          TkCore::INTERP._merge_tklist(*args))
-  end
-  def tk_call_with_enc(*args)
-    #super('namespace', 'eval', @fullname, *args)
-    args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
-    super('namespace', 'eval', @fullname, 
-          TkCore::INTERP._merge_tklist(*args))
-  end
-  alias ns_tk_call             tk_call
-  alias ns_tk_call_without_enc tk_call_without_enc
-  alias ns_tk_call_with_enc    tk_call_with_enc
-
-  def initialize(name = nil, parent = nil)
-    unless name
-      # name = Tk_Namespace_ID.join('')
-      name = Tk_Namespace_ID.join(TkCore::INTERP._ip_id_)
-      Tk_Namespace_ID[1].succ!
-    end
-    name = __tk_call('namespace', 'current') if name == ''
-    if parent
-      if parent =~ /^::/
-        if name =~ /^::/
-          @fullname = parent + name
-        else
-          @fullname = parent +'::'+ name
-        end
-      else
-        ancestor = __tk_call('namespace', 'current')
-        ancestor = '' if ancestor == '::'
-        if name =~ /^::/
-          @fullname = ancestor + '::' + parent + name
-        else
-          @fullname = ancestor + '::'+ parent +'::'+ name
-        end
-      end
-    else # parent == nil
-      ancestor = __tk_call('namespace', 'current')
-      ancestor = '' if ancestor == '::'
-      if name =~ /^::/
-        @fullname = name
-      else
-        @fullname = ancestor + '::' + name
-      end
-    end
-    @path = @fullname
-    @parent = __tk_call('namespace', 'qualifiers', @fullname)
-    @name = __tk_call('namespace', 'tail', @fullname)
-
-    # create namespace
-    __tk_call('namespace', 'eval', @fullname, '')
-
-    Tk_Namespace_ID_TBL[@fullname] = self
-  end
-
-  def self.children(*args)
-    # args ::= [<namespace>] [<pattern>]
-    # <pattern> must be glob-style pattern
-    tk_split_simplelist(tk_call('namespace', 'children', *args)).collect{|ns|
-      # ns is fullname
-      if Tk_Namespace_ID_TBL.key?(ns)
-        Tk_Namespace_ID_TBL[ns]
-      else
-        ns
-      end
-    }
-  end
-  def children(pattern=None)
-    TkNamespace.children(@fullname, pattern)
-  end
-
-  def self.code(script = Proc.new)
-    TkNamespace.new('').code(script)
-  end
-=begin
-  def code(script = Proc.new)
-    if script.kind_of?(String)
-      cmd = proc{|*args| ScopeArgs.new(@fullname,*args).instance_eval(script)}
-    elsif script.kind_of?(Proc)
-      cmd = proc{|*args| ScopeArgs.new(@fullname,*args).instance_eval(&script)}
-    else
-      fail ArgumentError, "String or Proc is expected"
-    end
-    TkNamespace::NsCode.new(tk_call_without_enc('namespace', 'code', 
-                                                _get_eval_string(cmd, false)))
-  end
-=end
-  def code(script = Proc.new)
-    if script.kind_of?(String)
-      cmd = proc{|*args|
-        ret = ScopeArgs.new(@fullname,*args).instance_eval(script)
-        id = ret.object_id
-        TkNamespace::Tk_NsCode_RetObjID_TBL[id] = ret
-        id
-      }
-    elsif script.kind_of?(Proc)
-      cmd = proc{|*args|
-        ret = ScopeArgs.new(@fullname,*args).instance_eval(&script)
-        id = ret.object_id
-        TkNamespace::Tk_NsCode_RetObjID_TBL[id] = ret
-        id
-      }
-    else
-      fail ArgumentError, "String or Proc is expected"
-    end
-    TkNamespace::NsCode.new(tk_call_without_enc('namespace', 'code', 
-                                                _get_eval_string(cmd, false)), 
-                            true)
-  end
-
-  def self.current_path
-    tk_call('namespace', 'current')
-  end
-  def current_path
-    @fullname
-  end
-
-  def self.current
-    ns = self.current_path
-    if Tk_Namespace_ID_TBL.key?(ns)
-      Tk_Namespace_ID_TBL[ns]
-    else
-      ns
-    end
-  end
-  def current_namespace
-    # ns_tk_call('namespace', 'current')
-    # @fullname
-    self
-  end
-  alias current current_namespace
-
-  def self.delete(*ns_list)
-    tk_call('namespace', 'delete', *ns_list)
-    ns_list.each{|ns|
-      if ns.kind_of?(TkNamespace)
-        Tk_Namespace_ID_TBL.delete(ns.path)
-      else
-        Tk_Namespace_ID_TBL.delete(ns.to_s)
-      end
-    }
-  end
-  def delete
-    TkNamespece.delete(@fullname)
-  end
-
-  def self.ensemble_create(*keys)
-    tk_call('namespace', 'ensemble', 'create', *hash_kv(keys))
-  end
-  def self.ensemble_configure(cmd, slot, value=None)
-    if slot.kind_of?(Hash)
-      tk_call('namespace', 'ensemble', 'configure', cmd, *hash_kv(slot))
-    else
-      tk_call('namespace', 'ensemble', 'configure', cmd, '-'+slot.to_s, value)
-    end
-  end
-  def self.ensemble_configinfo(cmd, slot = nil)
-    if slot
-      tk_call('namespace', 'ensemble', 'configure', cmd, '-' + slot.to_s)
-    else
-      inf = {}
-      Hash(*tk_split_simplelist(tk_call('namespace', 'ensemble', 'configure', cmd))).each{|k, v| inf[k[1..-1]] = v}
-      inf
-    end
-  end
-  def self.ensemble_exist?(cmd)
-    bool(tk_call('namespace', 'ensemble', 'exists', cmd))
-  end
-
-  def self.eval(namespace, cmd = Proc.new, *args)
-    #tk_call('namespace', 'eval', namespace, cmd, *args)
-    TkNamespace.new(namespece).eval(cmd, *args)
-  end
-=begin
-  def eval(cmd = Proc.new, *args)
-    #TkNamespace.eval(@fullname, cmd, *args)
-    #ns_tk_call(cmd, *args)
-    code_obj = code(cmd)
-    ret = code_obj.call(*args)
-    # uninstall_cmd(TkCore::INTERP._split_tklist(code_obj.path)[-1])
-    uninstall_cmd(_fromUTF8(TkCore::INTERP._split_tklist(_toUTF8(code_obj.path))[-1]))
-    tk_tcl2ruby(ret)
-  end
-=end
-  def eval(cmd = Proc.new, *args)
-    code_obj = code(cmd)
-    ret = code_obj.call(*args)
-    uninstall_cmd(_fromUTF8(TkCore::INTERP._split_tklist(_toUTF8(code_obj.path))[-1]))
-    ret
-  end
-
-  def self.exist?(ns)
-    bool(tk_call('namespace', 'exists', ns))
-  end
-  def exist?
-    TkNamespece.exist?(@fullname)
-  end
-
-  def self.export(*patterns)
-    tk_call('namespace', 'export', *patterns)
-  end
-  def self.export_with_clear(*patterns)
-    tk_call('namespace', 'export', '-clear', *patterns)
-  end
-  def export
-    TkNamespace.export(@fullname)
-  end
-  def export_with_clear
-    TkNamespace.export_with_clear(@fullname)
-  end
-
-  def self.forget(*patterns)
-    tk_call('namespace', 'forget', *patterns)
-  end
-  def forget
-    TkNamespace.forget(@fullname)
-  end
-
-  def self.import(*patterns)
-    tk_call('namespace', 'import', *patterns)
-  end
-  def self.force_import(*patterns)
-    tk_call('namespace', 'import', '-force', *patterns)
-  end
-  def import
-    TkNamespace.import(@fullname)
-  end
-  def force_import
-    TkNamespace.force_import(@fullname)
-  end
-
-  def self.inscope(namespace, script, *args)
-    tk_call('namespace', 'inscope', namespace, script, *args)
-  end
-  def inscope(script, *args)
-    TkNamespace.inscope(@fullname, script, *args)
-  end
-
-  def self.origin(cmd)
-    tk_call('namespace', 'origin', cmd)
-  end
-
-  def self.parent(namespace=None)
-    ns = tk_call('namespace', 'parent', namespace)
-    if Tk_Namespace_ID_TBL.key?(ns)
-      Tk_Namespace_ID_TBL[ns]
-    else
-      ns
-    end
-  end
-  def parent
-    tk_call('namespace', 'parent', @fullname)
-  end
-
-  def self.get_path
-    tk_call('namespace', 'path')
-  end
-  def self.set_path(*namespace_list)
-    tk_call('namespace', 'path', array2tk_list(namespace_list))
-  end
-  def set_path
-    tk_call('namespace', 'path', @fullname)
-  end
-
-  def self.qualifiers(str)
-    tk_call('namespace', 'qualifiers', str)
-  end
-
-  def self.tail(str)
-    tk_call('namespace', 'tail', str)
-  end
-
-  def self.upvar(namespace, *var_pairs)
-    tk_call('namespace', 'upvar', namespace, *(var_pairs.flatten))
-  end
-  def upvar(*var_pairs)
-    TkNamespace.inscope(@fullname, *(var_pairs.flatten))
-  end
-
-  def self.get_unknown_handler
-    tk_tcl2ruby(tk_call('namespace', 'unknown'))
-  end
-  def self.set_unknown_handler(cmd = Proc.new)
-    tk_call('namespace', 'unknown', cmd)
-  end
-
-  def self.which(name)
-    tk_call('namespace', 'which', name)
-  end
-  def self.which_command(name)
-    tk_call('namespace', 'which', '-command', name)
-  end
-  def self.which_variable(name)
-    tk_call('namespace', 'which', '-variable', name)
-  end
-end
-
-TkNamespace::Global = TkNamespace.new('::')
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optiondb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optiondb.rb
deleted file mode 100644
index a806f39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optiondb.rb
+++ /dev/null
@@ -1,371 +0,0 @@
-#
-# tk/optiondb.rb : treat option database
-#
-require 'tk'
-
-module TkOptionDB
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['option'.freeze].freeze
-  CmdClassID = ['CMD_CLASS'.freeze, '00000'.taint].freeze
-
-  module Priority
-    WidgetDefault = 20
-    StartupFile   = 40
-    UserDefault   = 60
-    Interactive   = 80
-  end
-
-  def add(pat, value, pri=None)
-    # if $SAFE >= 4
-    #   fail SecurityError, "can't call 'TkOptionDB.add' at $SAFE >= 4"
-    # end
-    tk_call('option', 'add', pat, value, pri)
-  end
-  def clear
-    # if $SAFE >= 4
-    #   fail SecurityError, "can't call 'TkOptionDB.crear' at $SAFE >= 4"
-    # end
-    tk_call_without_enc('option', 'clear')
-  end
-  def get(win, name, klass)
-    tk_call('option', 'get', win ,name, klass)
-  end
-  def readfile(file, pri=None)
-    tk_call('option', 'readfile', file, pri)
-  end
-  alias read_file readfile
-  module_function :add, :clear, :get, :readfile, :read_file
-
-  def read_entries(file, f_enc=nil)
-    if TkCore::INTERP.safe?
-      fail SecurityError, 
-        "can't call 'TkOptionDB.read_entries' on a safe interpreter"
-    end
-
-    i_enc = ((Tk.encoding)? Tk.encoding : Tk.encoding_system)
-
-    unless f_enc
-      f_enc = i_enc
-    end
-
-    ent = []
-    cline = ''
-    open(file, 'r') {|f|
-      while line = f.gets
-        #cline += line.chomp!
-        cline.concat(line.chomp!)
-        case cline
-        when /\\$/    # continue
-          cline.chop!
-          next
-        when /^\s*(!|#)/     # coment
-          cline = ''
-          next
-        when /^([^:]+):(.*)$/
-          pat = $1.strip
-          val = $2.lstrip
-          p "ResourceDB: #{[pat, val].inspect}" if $DEBUG
-          pat = TkCore::INTERP._toUTF8(pat, f_enc)
-          pat = TkCore::INTERP._fromUTF8(pat, i_enc)
-          val = TkCore::INTERP._toUTF8(val, f_enc)
-          val = TkCore::INTERP._fromUTF8(val, i_enc)
-          ent << [pat, val]
-          cline = ''
-        else          # unknown --> ignore
-          cline = ''
-          next
-        end
-      end
-    }
-    ent
-  end
-  module_function :read_entries
-      
-  def read_with_encoding(file, f_enc=nil, pri=None)
-    # try to read the file as an OptionDB file
-    read_entries(file, f_enc).each{|pat, val|
-      add(pat, val, pri)
-    }
-
-=begin
-    i_enc = Tk.encoding()
-
-    unless f_enc
-      f_enc = i_enc
-    end
-
-    cline = ''
-    open(file, 'r') {|f|
-      while line = f.gets
-        cline += line.chomp!
-        case cline
-        when /\\$/    # continue
-          cline.chop!
-          next
-        when /^\s*!/     # coment
-          cline = ''
-          next
-        when /^([^:]+):\s(.*)$/
-          pat = $1
-          val = $2
-          p "ResourceDB: #{[pat, val].inspect}" if $DEBUG
-          pat = TkCore::INTERP._toUTF8(pat, f_enc)
-          pat = TkCore::INTERP._fromUTF8(pat, i_enc)
-          val = TkCore::INTERP._toUTF8(val, f_enc)
-          val = TkCore::INTERP._fromUTF8(val, i_enc)
-          add(pat, val, pri)
-          cline = ''
-        else          # unknown --> ignore
-          cline = ''
-          next
-        end
-      end
-    }
-=end
-  end
-  module_function :read_with_encoding
-
-  # support procs on the resource database
-  @@resource_proc_class = Class.new
-
-  @@resource_proc_class.const_set(:CARRIER, '.'.freeze)
-
-  @@resource_proc_class.instance_variable_set('@method_tbl', 
-                                              TkCore::INTERP.create_table)
-  @@resource_proc_class.instance_variable_set('@add_method', false)
-  @@resource_proc_class.instance_variable_set('@safe_mode', 4)
-
-  class << @@resource_proc_class
-    private :new
-
-=begin 
-    CARRIER    = '.'.freeze
-    METHOD_TBL = TkCore::INTERP.create_table
-    ADD_METHOD = false
-    SAFE_MODE  = 4
-=end
-
-=begin
-    def __closed_block_check__(str)
-      depth = 0
-      str.scan(/[{}]/){|x|
-        if x == "{"
-          depth += 1
-        elsif x == "}"
-          depth -= 1
-        end
-        if depth <= 0 && !($' =~ /\A\s*\Z/)
-          fail RuntimeError, "bad string for procedure : #{str.inspect}"
-        end
-      }
-      str
-    end
-    private :__closed_block_check__
-=end
-
-    def __check_proc_string__(str)
-      # If you want to check the proc_string, do it in this method.
-      # Please define this in the block given to 'new_proc_class' method. 
-      str
-    end
-
-    def method_missing(id, *args)
-      #res_proc, proc_str = self::METHOD_TBL[id]
-      res_proc, proc_str = @method_tbl[id]
-
-      proc_source = TkOptionDB.get(self::CARRIER, id.id2name, '').strip
-      res_proc = nil if proc_str != proc_source # resource is changed
-
-      # unless res_proc.kind_of?(Proc)
-      unless TkComm._callback_entry?(res_proc)
-        #if id == :new || !(self::METHOD_TBL.has_key?(id) || self::ADD_METHOD)
-        if id == :new || !(@method_tbl.has_key?(id) || @add_method)
-          raise NoMethodError, 
-                "not support resource-proc '#{id.id2name}' for #{self.name}"
-        end
-        proc_str = proc_source
-        proc_str = '{' + proc_str + '}' unless /\A\{.*\}\Z/ =~ proc_str
-        #proc_str = __closed_block_check__(proc_str)
-        proc_str = __check_proc_string__(proc_str)
-        res_proc = proc{ 
-          begin
-            #eval("$SAFE = #{self::SAFE_MODE};\nProc.new" + proc_str)
-            eval("$SAFE = #{@safe_mode};\nProc.new" + proc_str)
-          rescue SyntaxError=>err
-            raise SyntaxError, 
-              TkCore::INTERP._toUTF8(err.message.gsub(/\(eval\):\d:/, 
-                                                      "(#{id.id2name}):"))
-          end
-        }.call
-        #self::METHOD_TBL[id] = [res_proc, proc_source]
-        @method_tbl[id] = [res_proc, proc_source]
-      end
-      res_proc.call(*args)
-    end
-
-    private :__check_proc_string__, :method_missing
-  end
-  @@resource_proc_class.freeze
-
-=begin
-  def __create_new_class(klass, func, safe = 4, add = false, parent = nil)
-    klass = klass.to_s if klass.kind_of? Symbol
-    unless (?A..?Z) === klass[0]
-      fail ArgumentError, "bad string '#{klass}' for class name"
-    end
-    unless func.kind_of? Array
-      fail ArgumentError, "method-list must be Array"
-    end
-    func_str = func.join(' ')
-    if parent == nil
-      install_win(parent)
-    elsif parent <= @@resource_proc_class
-      install_win(parent::CARRIER)
-    else
-      fail ArgumentError, "parent must be Resource-Proc class"
-    end
-    carrier = Tk.tk_call_without_enc('frame', @path, '-class', klass)
-
-    body = <<-"EOD"
-      class #{klass} < TkOptionDB.module_eval('@@resource_proc_class')
-        CARRIER    = '#{carrier}'.freeze
-        METHOD_TBL = TkCore::INTERP.create_table
-        ADD_METHOD = #{add}
-        SAFE_MODE  = #{safe}
-        %w(#{func_str}).each{|f| METHOD_TBL[f.intern] = nil }
-      end
-    EOD
-
-    if parent.kind_of?(Class) && parent <= @@resource_proc_class
-      parent.class_eval(body)
-      eval(parent.name + '::' + klass)
-    else
-      eval(body)
-      eval('TkOptionDB::' + klass)
-    end
-  end
-=end
-  def __create_new_class(klass, func, safe = 4, add = false, parent = nil)
-    if klass.kind_of?(TkWindow)
-      carrier = klass.path
-      klass = CmdClassID.join(TkCore::INTERP._ip_id_)
-      CmdClassID[1].succ!
-      parent = nil # ignore parent
-    else
-      klass = klass.to_s if klass.kind_of?(Symbol)
-      unless (?A..?Z) === klass[0]
-        fail ArgumentError, "bad string '#{klass}' for class name"
-      end
-      if parent == nil
-        install_win(nil)
-      elsif parent.kind_of?(TkWindow)
-        install_win(parent.path)
-      elsif parent <= @@resource_proc_class
-        install_win(parent::CARRIER)
-      else
-        fail ArgumentError, "parent must be Resource-Proc class"
-      end
-      carrier = Tk.tk_call_without_enc('frame', @path, '-class', klass)
-    end
-
-    unless func.kind_of?(Array)
-      fail ArgumentError, "method-list must be Array"
-    end
-    func_str = func.join(' ')
-
-    if parent.kind_of?(Class) && parent <= @@resource_proc_class
-      cmd_klass = Class.new(parent)
-    else
-      cmd_klass = Class.new(TkOptionDB.module_eval('@@resource_proc_class'))
-    end
-    cmd_klass.const_set(:CARRIER, carrier.dup.freeze)
-
-    cmd_klass.instance_variable_set('@method_tbl', TkCore::INTERP.create_table)
-    cmd_klass.instance_variable_set('@add_method', add)
-    cmd_klass.instance_variable_set('@safe_mode', safe)
-    func.each{|f| 
-      cmd_klass.instance_variable_get('@method_tbl')[f.to_s.intern] = nil
-    }
-=begin
-    cmd_klass.const_set(:METHOD_TBL, TkCore::INTERP.create_table)
-    cmd_klass.const_set(:ADD_METHOD, add)
-    cmd_klass.const_set(:SAFE_MODE, safe)
-    func.each{|f| cmd_klass::METHOD_TBL[f.to_s.intern] = nil }
-=end
-
-    cmd_klass
-  end
-  module_function :__create_new_class
-  private_class_method :__create_new_class
-
-  def __remove_methods_of_proc_class(klass)
-    # for security, make these methods invalid
-    class << klass
-      def __null_method(*args); nil; end
-      [ :class_eval, :name, :superclass, :clone, :dup, :autoload, :autoload?, 
-        :ancestors, :const_defined?, :const_get, :const_set, :const_missing, 
-        :class_variables, :constants, :included_modules, :instance_methods, 
-        :method_defined?, :module_eval, :private_instance_methods, 
-        :protected_instance_methods, :public_instance_methods, 
-        :singleton_methods, :remove_const, :remove_method, :undef_method, 
-        :to_s, :inspect, :display, :method, :methods, :respond_to?, 
-        :instance_variable_get, :instance_variable_set, :instance_method, 
-        :instance_eval, :instance_variables, :kind_of?, :is_a?,
-        :private_methods, :protected_methods, :public_methods ].each{|m|
-        alias_method(m, :__null_method)
-      }
-    end
-  end
-  module_function :__remove_methods_of_proc_class
-  private_class_method :__remove_methods_of_proc_class
-
-  RAND_BASE_CNT = [0]
-  RAND_BASE_HEAD = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-  RAND_BASE_CHAR = RAND_BASE_HEAD + 'abcdefghijklmnopqrstuvwxyz0123456789_'
-  def __get_random_basename
-    name = '%s%03d' % [RAND_BASE_HEAD[rand(RAND_BASE_HEAD.size),1], 
-                       RAND_BASE_CNT[0]]
-    len = RAND_BASE_CHAR.size
-    (6+rand(10)).times{
-      name << RAND_BASE_CHAR[rand(len),1]
-    }
-    RAND_BASE_CNT[0] = RAND_BASE_CNT[0] + 1
-    name
-  end
-  module_function :__get_random_basename
-  private_class_method :__get_random_basename
-
-  # define new proc class :
-  # If you want to modify the new class or create a new subclass, 
-  # you must do such operation in the block parameter. 
-  # Because the created class is flozen after evaluating the block. 
-  def new_proc_class(klass, func, safe = 4, add = false, parent = nil, &b)
-    new_klass = __create_new_class(klass, func, safe, add, parent)
-    new_klass.class_eval(&b) if block_given?
-    __remove_methods_of_proc_class(new_klass)
-    new_klass.freeze
-    new_klass
-  end
-  module_function :new_proc_class
-
-  def eval_under_random_base(parent = nil, &b)
-    new_klass = __create_new_class(__get_random_basename(), 
-                                   [], 4, false, parent)
-    ret = new_klass.class_eval(&b) if block_given?
-    __remove_methods_of_proc_class(new_klass)
-    new_klass.freeze
-    ret
-  end
-  module_function :eval_under_random_base
-
-  def new_proc_class_random(klass, func, safe = 4, add = false, &b)
-    eval_under_random_base(){
-      TkOption.new_proc_class(klass, func, safe, add, self, &b)
-    }
-  end
-  module_function :new_proc_class_random
-end
-TkOption = TkOptionDB
-TkResourceDB = TkOptionDB
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optionobj.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optionobj.rb
deleted file mode 100644
index 8fe7e0e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/optionobj.rb
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# tk/optionobj.rb : control options for a group of widgets
-#
-#  NOTE: If you want to use key-only option (no value), 
-#        use Tk::None for the value of the key-only option. 
-#
-#        e.g. hash_kv({'aaa'=>1, 'bbb'=>Tk::None, 'ccc'=>3}) 
-#                 => ["-aaa", 1, "-bbb", "-ccc", 3]
-#
-require 'tk'
-
-module Tk
-  class OptionObj < Hash
-    include TkUtil
-
-    def initialize(hash = nil)
-      super()
-      @observ = []
-      update_without_notify(_symbolkey2str(hash)) if hash
-    end
-
-    def observ_info
-      @observ.dup
-    end
-
-    def observs
-      @observ.collect{|win|
-        if win.kind_of?(Array)
-          win[0]
-        else
-          win
-        end
-      }
-    end
-
-    def _remove_win(win)
-      if win.kind_of?(Array)
-        widget, method = win
-        @observ.delete_if{|x| 
-          if x.kind_of?(Array)
-            x[0] == widget
-          else
-            x == widget
-          end
-        }
-      else
-        @observ.delete_if{|x|
-          if x.kind_of?(Array)
-            x[0] == win
-          else
-            x == win
-          end
-        }
-      end
-    end
-    private :_remove_win
-
-    def assign(*wins)
-      # win := 
-      #   widget             #==> call widget.configure(hash)
-      #   [widget]           #==> call widget.configure(hash)
-      #   [widget, nil, {src=>target, ... }]
-      #                      #==> call widget.configure(hash) 
-      #                               with converting hash-key
-      #   [widget, method]   #==> call widget.method(hash)
-      #   [widget, method, {src=>target, ... }]
-      #                      #==> call widget.method(hash) 
-      #                               with converting hash-key
-      #   [widget [receiver, method, arg, ... ]]
-      #                      #==> call receiver.method(arg, ... , hash)
-      #   [widget [receiver, method, arg, ... ], {src=>target, ... }]
-      #                      #==> call receiver.method(arg, ... , hash)
-      #                               with onverting hash-key
-      #
-      # src := option_name_on_optobj
-      #
-      # target := 
-      #   nil                #==> not use the src
-      #   option_name_on_target_widget
-      #   [ option_name_on_target_widget, ... ]
-      #                      #==> set all of them
-      #
-      wins.each{|win|
-        _remove_win(win)
-        @observ << win
-        notify(win)
-      }
-      self
-    end
-
-    def unassign(*wins)
-      wins.each{|win|
-        _remove_win(win)
-      }
-      self
-    end
-
-    def notify(target = nil)
-      if target
-        targets = [target]
-      elsif @observ.empty?
-        return self
-      else
-        targets = @observ.dup
-      end
-
-      return self if empty?
-
-      org_hash = _symbolkey2str(self)
-
-      targets.each{|win|
-        widget = receiver = win
-        hash = org_hash
-        begin
-          if win.kind_of?(Array)
-            widget, method, conv_tbl = win
-            receiver = widget
-
-            if conv_tbl
-              hash = {}
-              org_hash.each{|key, val|
-                key = conv_tbl[key] if conv_tbl.key?(key)
-                next unless key
-                if key.kind_of?(Array)
-                  key.each{|k| hash[k] = val}
-                else              
-                  hash[key] = val
-                end
-              }
-            end
-
-            if method.kind_of?(Array)
-              receiver, method, *args = method
-              receiver.__send__(method, *(args << hash))
-            elsif method
-              widget.__send__(method, hash)
-            else
-              widget.configure(hash)
-            end
-
-          else
-            widget.configure(self)
-          end
-        rescue => e
-          if ( ( widget.kind_of?(TkObject) \
-                && widget.respond_to?('exist?') \
-                && ! receiver.exist? ) \
-            || ( receiver.kind_of?(TkObject) \
-                && receiver.respond_to?('exist?') \
-                && ! receiver.exist? ) )
-            @observ.delete(win)
-          else
-            fail e
-          end
-        end
-      }
-
-      self
-    end
-    alias apply notify
-
-    def +(hash)
-      unless hash.kind_of?(Hash)
-        fail ArgumentError, "expect a Hash"
-      end
-      new_obj = self.dup
-      new_obj.update_without_notify(_symbolkey2str(hash))
-      new_obj
-    end
-
-    alias update_without_notify update
-
-    def update(hash)
-      update_without_notify(_symbolkey2str(hash))
-      notify
-    end
-
-    def configure(key, value=nil)
-      if key.kind_of?(Hash)
-        update(key)
-      else
-        store(key,value)
-      end
-    end
-
-    def [](key)
-      super(key.to_s)
-    end
-    alias cget []
-
-    def store(key, val)
-      key = key.to_s
-      super(key, val)
-      notify
-    end
-    def []=(key, val)
-      store(key,val)
-    end
-
-    def replace(hash)
-      super(_symbolkey2str(hash))
-      notify
-    end
-
-    def default(opt)
-      fail RuntimeError, "unknown option `#{opt}'"
-    end
-    private :default
-
-    undef :default=
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/pack.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/pack.rb
deleted file mode 100644
index 8fab363..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/pack.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-#
-# tk/pack.rb : control pack geometry manager
-#
-require 'tk'
-
-module TkPack
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['pack'.freeze].freeze
-
-  def configure(win, *args)
-    if args[-1].kind_of?(Hash)
-      opts = args.pop
-    else
-      opts = {}
-    end
-    params = []
-    # params.push((win.kind_of?(TkObject))? win.epath: win)
-    params.push(_epath(win))
-    args.each{|win|
-      # params.push((win.kind_of?(TkObject))? win.epath: win)
-      params.push(_epath(win))
-    }
-    opts.each{|k, v|
-      params.push("-#{k}")
-      # params.push((v.kind_of?(TkObject))? v.epath: v)
-      params.push(_epath(v))
-    }
-    tk_call_without_enc("pack", 'configure', *params)
-  end
-  alias pack configure
-
-  def forget(*args)
-    return '' if args.size == 0
-    wins = args.collect{|win|
-      # (win.kind_of?(TkObject))? win.epath: win
-      _epath(win)
-    }
-    tk_call_without_enc('pack', 'forget', *wins)
-  end
-
-  def info(slave)
-    # slave = slave.epath if slave.kind_of?(TkObject)
-    slave = _epath(slave)
-    ilist = list(tk_call_without_enc('pack', 'info', slave))
-    info = {}
-    while key = ilist.shift
-      info[key[1..-1]] = ilist.shift
-    end
-    return info
-  end
-
-  def propagate(master, mode=None)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    if mode == None
-      bool(tk_call_without_enc('pack', 'propagate', master))
-    else
-      tk_call_without_enc('pack', 'propagate', master, mode)
-    end
-  end
-
-  def slaves(master)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    list(tk_call_without_enc('pack', 'slaves', master))
-  end
-
-  module_function :pack, :configure, :forget, :info, :propagate, :slaves
-end
-=begin
-def TkPack(win, *args)
-  if args[-1].kind_of?(Hash)
-    opts = args.pop
-  else
-    opts = {}
-  end
-  params = []
-  params.push((win.kind_of?(TkObject))? win.epath: win)
-  args.each{|win|
-    params.push((win.kind_of?(TkObject))? win.epath: win)
-  }
-  opts.each{|k, v|
-    params.push("-#{k}")
-    params.push((v.kind_of?(TkObject))? v.epath: v)
-  }
-  tk_call_without_enc("pack", *params)
-end
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/package.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/package.rb
deleted file mode 100644
index d1eb276..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/package.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-#
-# tk/package.rb : package command
-#
-require 'tk'
-
-module TkPackage
-  include TkCore
-  extend TkPackage
-
-  TkCommandNames = ['package'.freeze].freeze
-
-  def add_path(path)
-    Tk::AUTO_PATH.value = Tk::AUTO_PATH.to_a << path
-  end
-
-  def forget(package)
-    tk_call('package', 'forget', package)
-    nil
-  end
-
-  def if_needed(pkg, ver, *arg, &b)
-    size = arg.size
-
-    if size==0 && !b
-      # proc info
-      procedure(tk_call('package', 'ifneeded', pkg, ver))
-
-    elsif size==0 && b
-      # set proc
-      cmd = proc(&b)
-      tk_call('package', 'ifneeded', pkg, ver, cmd)
-      cmd
-
-    elsif size==1 && !b
-      # set proc
-      cmd = arg[0]
-      if cmd
-        tk_call('package', 'ifneeded', pkg, ver, cmd)
-        cmd
-      else
-        # remove proc
-        tk_call('package', 'ifneeded', pkg, ver, '')
-        nil
-      end
-
-    else
-      fail ArgumentError, 'too many arguments'
-    end
-  end
-
-  def names
-    tk_split_simplelist(tk_call('package', 'names'))
-  end
-
-  def provide(package, version=nil)
-    if version
-      tk_call('package', 'provide', package, version)
-    end
-    if (ret = tk_call('package', 'provide', package)) == ''
-      nil
-    else
-      ret
-    end
-  end
-
-  def present(package, version=None)
-    begin
-      tk_call('package', 'present', package, version)
-    rescue => e
-      fail e.class, 'TkPackage ' << e.message
-    end
-  end
-
-  def present_exact(package, version)
-    begin
-      tk_call('package', 'present', '-exact', package, version)
-    rescue => e
-      fail e.class, 'TkPackage ' << e.message
-    end
-  end
-
-  def require(package, version=None)
-    begin
-      tk_call('package', 'require', package, version)
-    rescue => e
-      fail e.class, 'TkPackage ' << e.message
-    end
-  end
-
-  def require_exact(package, version)
-    begin
-      tk_call('package', 'require', '-exact', package, version)
-    rescue => e
-      fail e.class, 'TkPackage ' << e.message
-    end
-  end
-
-  def unknown_proc(*arg, &b)
-    size = arg.size
-
-    if size==0 && !b
-      # proc info
-      procedure(tk_call('package', 'unknown'))
-
-    elsif size==0 && b
-      # set proc
-      cmd = proc(&b)
-      tk_call('package', 'unknown', cmd)
-      cmd
-
-    elsif size==1 && !b
-      # set proc
-      cmd = arg[0]
-      if cmd
-        tk_call('package', 'unknown', cmd)
-        cmd
-      else
-        # remove proc
-        tk_call('package', 'unknown', '')
-        nil
-      end
-
-    else
-      fail ArgumentError, 'too many arguments'
-    end
-  end
-
-  def versions(package)
-    tk_split_simplelist(tk_call('package', 'versions', package))
-  end
-
-  def vcompare(version1, version2)
-    number(tk_call('package', 'vcompare', version1, version2))
-  end
-
-  def vsatisfies(version1, version2)
-    bool(tk_call('package', 'vsatisfies', version1, version2))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/palette.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/palette.rb
deleted file mode 100644
index 2b6fdf5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/palette.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-#   tk/palette.rb : methods for Tcl/Tk standard library 'palette.tcl'
-#                     1998/06/21 by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-module TkPalette
-  include Tk
-  extend Tk
-
-  TkCommandNames = [
-    'tk_setPalette'.freeze, 
-    'tk_bisque'.freeze, 
-    'tkDarken'.freeze
-  ].freeze
-
-  def TkPalette.set(*args)
-    args = args.to_a.flatten if args.kind_of? Hash
-    tk_call('tk_setPalette', *args)
-  end
-  def TkPalette.setPalette(*args)
-    TkPalette.set(*args)
-  end
-
-  def TkPalette.bisque
-    tk_call('tk_bisque')
-  end
-
-  def TkPalette.darken(color, percent)
-    tk_call('tkDarken', color, percent)
-  end
-
-  def TkPalette.recolorTree(win, colors)
-    if not colors.kind_of?(Hash)
-      fail "2nd arg need to be Hash"
-    end
-
-    tk_call('global', "tkPalette")
-    colors.each{|key, value|
-      begin
-        if win.cget(key) == tk_call('set', "tkPalette(#{key})")
-          win[key] = colors[key]
-        end
-      rescue
-        # ignore
-      end
-    }
-
-    TkWinfo.children(win).each{|w| TkPalette.recolorTree(w, colors)}
-  end
-
-  def recolorTree(colors)
-    TkPalette.recolorTree(self, colors)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/panedwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/panedwindow.rb
deleted file mode 100644
index c6cf3cd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/panedwindow.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-#
-# tk/panedwindow.rb : treat panedwindow
-#
-require 'tk'
-
-class TkPanedWindow<TkWindow
-  TkCommandNames = ['panedwindow'.freeze].freeze
-  WidgetClassName = 'Panedwindow'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('panedwindow', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('panedwindow', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def add(*args)
-    keys = args.pop
-    fail ArgumentError, "no window in arguments" unless keys
-    if keys && keys.kind_of?(Hash)
-      fail ArgumentError, "no window in arguments" if args == []
-      # args = args.collect{|w| (w.kind_of?(TkObject))? w.epath: w }
-      args = args.collect{|w| _epath(w) }
-      #args.push(hash_kv(keys))
-      args.concat(hash_kv(keys))
-    else
-      args.push(keys) if keys
-      # args = args.collect{|w| (w.kind_of?(TkObject))? w.epath: w }
-      args = args.collect{|w| _epath(w) }
-    end
-    tk_send_without_enc('add', *args)
-    self
-  end
-
-  def forget(win, *wins)
-    wins.unshift(win)
-    # tk_send_without_enc('forget', *((w.kind_of?(TkObject))? w.epath: w))
-    tk_send_without_enc('forget', *(wins.collect{|w| _epath(w)}))
-    self
-  end
-  alias del forget
-  alias delete forget
-  alias remove forget
-
-  def identify(x, y)
-    list(tk_send_without_enc('identify', x, y))
-  end
-
-  def proxy_coord
-    list(tk_send_without_enc('proxy', 'coord'))
-  end
-  def proxy_forget
-    tk_send_without_enc('proxy', 'forget')
-    self
-  end
-  def proxy_place(x, y)
-    tk_send_without_enc('proxy', 'place', x, y)
-    self
-  end
-
-  def sash_coord(index)
-    list(tk_send('sash', 'coord', index))
-  end
-  def sash_dragto(index, x, y)
-    tk_send('sash', 'dragto', index, x, y)
-    self
-  end
-  def sash_mark(index, x, y)
-    tk_send('sash', 'mark', index, x, y)
-    self
-  end
-  def sash_place(index, x, y)
-    tk_send('sash', 'place', index, x, y)
-    self
-  end
-
-  def panecget(win, key)
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    tk_tcl2ruby(tk_send_without_enc('panecget', win, "-#{key}"))
-  end
-
-  def paneconfigure(win, key, value=nil)
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    if key.kind_of? Hash
-      params = []
-      key.each{|k, v|
-        params.push("-#{k}")
-        # params.push((v.kind_of?(TkObject))? v.epath: v)
-        params.push(_epath(v))
-      }
-      tk_send_without_enc('paneconfigure', win, *params)
-    else
-      # value = value.epath if value.kind_of?(TkObject)
-      value = _epath(value)
-      tk_send_without_enc('paneconfigure', win, "-#{key}", value)
-    end
-    self
-  end
-  alias pane_config paneconfigure
-
-  def paneconfiginfo(win, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      # win = win.epath if win.kind_of?(TkObject)
-      win = _epath(win)
-      if key
-        #conf = tk_split_list(tk_send_without_enc('paneconfigure', 
-        #                                         win, "-#{key}"))
-        conf = tk_split_list(tk_send_without_enc('paneconfigure', 
-                                                 win, "-#{key}"), 
-                             false, true)
-        conf[0] = conf[0][1..-1]
-        if conf[0] == 'hide'
-          conf[3] = bool(conf[3]) unless conf[3].empty?
-          conf[4] = bool(conf[4]) unless conf[4].empty?
-        end
-        conf
-      else
-        #tk_split_simplelist(tk_send_without_enc('paneconfigure', 
-        #                                        win)).collect{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('paneconfigure', win), 
-                            false, false).collect{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          conf[0] = conf[0][1..-1]
-          if conf[3]
-            if conf[0] == 'hide'
-              conf[3] = bool(conf[3]) unless conf[3].empty?
-            elsif conf[3].index('{')
-              conf[3] = tk_split_list(conf[3]) 
-            else
-              conf[3] = tk_tcl2ruby(conf[3]) 
-            end
-          end
-          if conf[4]
-            if conf[0] == 'hide'
-              conf[4] = bool(conf[4]) unless conf[4].empty?
-            elsif conf[4].index('{')
-              conf[4] = tk_split_list(conf[4]) 
-            else
-              conf[4] = tk_tcl2ruby(conf[4]) 
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      # win = win.epath if win.kind_of?(TkObject)
-      win = _epath(win)
-      if key
-        #conf = tk_split_list(tk_send_without_enc('paneconfigure', 
-        #                                         win, "-#{key}"))
-        conf = tk_split_list(tk_send_without_enc('paneconfigure', 
-                                                 win, "-#{key}"), 
-                             false, true)
-        key = conf.shift[1..-1]
-        if key == 'hide'
-          conf[2] = bool(conf[2]) unless conf[2].empty?
-          conf[3] = bool(conf[3]) unless conf[3].empty?
-        end
-        { key => conf }
-      else
-        ret = {}
-        #tk_split_simplelist(tk_send_without_enc('paneconfigure', 
-        #                                        win)).each{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('paneconfigure', win), 
-                            false, false).each{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          key = conf.shift[1..-1]
-          if key
-            if key == 'hide'
-              conf[2] = bool(conf[2]) unless conf[2].empty?
-            elsif conf[2].index('{')
-              conf[2] = tk_split_list(conf[2]) 
-            else
-              conf[2] = tk_tcl2ruby(conf[2]) 
-            end
-          end
-          if conf[3]
-            if key == 'hide'
-              conf[3] = bool(conf[3]) unless conf[3].empty?
-            elsif conf[3].index('{')
-              conf[3] = tk_split_list(conf[3]) 
-            else
-              conf[3] = tk_tcl2ruby(conf[3]) 
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        ret
-      end
-    end
-  end
-  alias pane_configinfo paneconfiginfo
-
-  def current_paneconfiginfo(win, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = paneconfiginfo(win, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        paneconfiginfo(win).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      paneconfiginfo(win, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-
-  alias current_pane_configinfo current_paneconfiginfo
-
-  def panes
-    list(tk_send_without_enc('panes'))
-  end
-end
-TkPanedwindow = TkPanedWindow
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/place.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/place.rb
deleted file mode 100644
index f7ebdfc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/place.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# tk/place.rb : control place geometry manager
-#
-require 'tk'
-
-module TkPlace
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['place'.freeze].freeze
-
-  def configure(win, slot, value=None)
-    # for >= Tk8.4a2 ?
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    if slot.kind_of? Hash
-      params = []
-      slot.each{|k, v|
-        params.push("-#{k}")
-        # params.push((v.kind_of?(TkObject))? v.epath: v)
-        params.push(_epath(v))
-      }
-      tk_call_without_enc('place', 'configure', win, *params)
-    else
-      # value = value.epath if value.kind_of?(TkObject)
-      value = _epath(value)
-      tk_call_without_enc('place', 'configure', win, "-#{slot}", value)
-    end
-  end
-  alias place configure
-
-  def configinfo(win, slot = nil)
-    # for >= Tk8.4a2 ?
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      # win = win.epath if win.kind_of?(TkObject)
-      win = _epath(win)
-      if slot
-        #conf = tk_split_list(tk_call_without_enc('place', 'configure', 
-        #                                        win, "-#{slot}") )
-        conf = tk_split_simplelist(tk_call_without_enc('place', 'configure', 
-                                                       win, "-#{slot}") )
-        conf[0] = conf[0][1..-1]
-        conf[1] = tk_tcl2ruby(conf[1])
-        conf[2] = tk_tcl2ruby(conf[1])
-        conf[3] = tk_tcl2ruby(conf[1])
-        conf[4] = tk_tcl2ruby(conf[1])
-        conf
-      else
-        tk_split_simplelist(tk_call_without_enc('place', 'configure', 
-                                                win)).collect{|conflist|
-          #conf = list(conflist)
-          conf = simplelist(conflist).collect!{|inf| tk_tcl2ruby(inf)}
-          conf[0] = conf[0][1..-1]
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      current_configinfo(win, slot)
-    end
-  end
-
-  def current_configinfo(win, slot = nil)
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    if slot
-      #conf = tk_split_list(tk_call_without_enc('place', 'configure', 
-      #                                         win, "-#{slot}") )
-      conf = tk_split_simplelist(tk_call_without_enc('place', 'configure', 
-                                                     win, "-#{slot}") )
-      # { conf[0][1..-1] => conf[1] }
-      { conf[0][1..-1] => tk_tcl2ruby(conf[4]) }
-    else
-      ret = {}
-      #tk_split_list(tk_call_without_enc('place','configure',win)).each{|conf|
-      tk_split_simplelist(tk_call_without_enc('place', 'configure', 
-                                              win)).each{|conf_list|
-        #ret[conf[0][1..-1]] = conf[1]
-        conf = simplelist(conf_list)
-        ret[conf[0][1..-1]] = tk_tcl2ruby(conf[4])
-      }
-      ret
-    end
-  end
-
-  def forget(win)
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    tk_call_without_enc('place', 'forget', win)
-  end
-
-  def info(win)
-    # win = win.epath if win.kind_of?(TkObject)
-    win = _epath(win)
-    #ilist = list(tk_call_without_enc('place', 'info', win))
-    ilist = simplelist(tk_call_without_enc('place', 'info', win))
-    info = {}
-    while key = ilist.shift
-      #info[key[1..-1]] = ilist.shift
-      info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
-    end
-    return info
-  end
-
-  def slaves(master)
-    # master = master.epath if master.kind_of?(TkObject)
-    master = _epath(master)
-    list(tk_call('place', 'slaves', master))
-  end
-
-  module_function :place, :configure, :configinfo, :current_configinfo
-  module_function :forget, :info, :slaves
-end
-=begin
-def TkPlace(win, slot, value=None)
-  win = win.epath if win.kind_of?(TkObject)
-  if slot.kind_of? Hash
-    params = []
-    slot.each{|k, v|
-      params.push("-#{k}")
-      params.push((v.kind_of?(TkObject))? v.epath: v)
-    }
-    tk_call_without_enc('place', win, *params)
-  else
-    value = value.epath if value.kind_of?(TkObject)
-    tk_call_without_enc('place', win, "-#{slot}", value)
-  end
-end
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/radiobutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/radiobutton.rb
deleted file mode 100644
index f8f67d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/radiobutton.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# tk/radiobutton.rb : treat radiobutton widget
-#
-require 'tk'
-require 'tk/button'
-
-class TkRadioButton<TkButton
-  TkCommandNames = ['radiobutton'.freeze].freeze
-  WidgetClassName = 'Radiobutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('radiobutton', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('radiobutton', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def __boolval_optkeys
-    super() << 'indicatoron'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'selectcolor'
-  end
-  private :__strval_optkeys
-
-  def __ruby2val_optkeys  # { key=>proc, ... }
-    {
-      'variable'=>proc{|v| tk_trace_variable(v)}  # for backward compatibility
-    }
-  end
-  private :__ruby2val_optkeys
-
-
-  def deselect
-    tk_send_without_enc('deselect')
-    self
-  end
-  def select
-    tk_send_without_enc('select')
-    self
-  end
-
-  def get_value
-    var = tk_send_without_enc('cget', '-variable')
-    if TkVariable::USE_TCLs_SET_VARIABLE_FUNCTIONS
-      _fromUTF8(INTERP._get_global_var(var))
-    else
-      INTERP._eval(Kernel.format('global %s; set %s', var, var))
-    end
-  end
-
-  def set_value(val)
-    var = tk_send_without_enc('cget', '-variable')
-    if TkVariable::USE_TCLs_SET_VARIABLE_FUNCTIONS
-      _fromUTF8(INTERP._set_global_var(var, _get_eval_string(val, true)))
-    else
-      s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(Kernel.format('global %s; set %s %s', var, var, s))
-    end
-  end
-end
-TkRadiobutton = TkRadioButton
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/root.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/root.rb
deleted file mode 100644
index 0e5584c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/root.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# tk/root.rb : treat root widget
-#
-require 'tk'
-require 'tk/wm'
-require 'tk/menuspec'
-
-class TkRoot<TkWindow
-  include Wm
-  include TkMenuSpec
-
-  def __methodcall_optkeys  # { key=>method, ... }
-    TOPLEVEL_METHODCALL_OPTKEYS
-  end
-  private :__methodcall_optkeys
-
-=begin
-  ROOT = []
-  def TkRoot.new(keys=nil)
-    if ROOT[0]
-      Tk_WINDOWS["."] = ROOT[0]
-      return ROOT[0]
-    end
-    new = super(:without_creating=>true, :widgetname=>'.')
-    if keys  # wm commands
-      keys.each{|k,v|
-        if v.kind_of? Array
-          new.send(k,*v)
-        else
-          new.send(k,v)
-        end
-      }
-    end
-    ROOT[0] = new
-    Tk_WINDOWS["."] = new
-  end
-=end
-  def TkRoot.new(keys=nil, &b)
-    unless TkCore::INTERP.tk_windows['.']
-      TkCore::INTERP.tk_windows['.'] = 
-        super(:without_creating=>true, :widgetname=>'.'){}
-    end
-    root = TkCore::INTERP.tk_windows['.']
-
-    keys = _symbolkey2str(keys)
-
-    # wm commands
-    root.instance_eval{
-      __methodcall_optkeys.each{|key, method|
-        value = keys.delete(key.to_s)
-        self.__send__(method, value) if value
-      }
-    }
-
-    if keys  # wm commands ( for backward comaptibility )
-      keys.each{|k,v|
-        if v.kind_of? Array
-          root.__send__(k,*v)
-        else
-          root.__send__(k,v)
-        end
-      }
-    end
-
-    root.instance_eval(&b) if block_given?
-    root
-  end
-
-  WidgetClassName = 'Tk'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.to_eval
-    # self::WidgetClassName
-    '.'
-  end
-
-  def create_self
-    @path = '.'
-  end
-  private :create_self
-
-  def path
-    "."
-  end
-
-  def add_menu(menu_info, tearoff=false, opts=nil)
-    # See tk/menuspec.rb for menu_info.
-    # opts is a hash of default configs for all of cascade menus. 
-    # Configs of menu_info can override it. 
-    if tearoff.kind_of?(Hash)
-      opts = tearoff
-      tearoff = false
-    end
-    _create_menubutton(self, menu_info, tearoff, opts)
-  end
-
-  def add_menubar(menu_spec, tearoff=false, opts=nil)
-    # See tk/menuspec.rb for menu_spec.
-    # opts is a hash of default configs for all of cascade menus.
-    # Configs of menu_spec can override it. 
-    menu_spec.each{|info| add_menu(info, tearoff, opts)}
-    self.menu
-  end
-
-  def TkRoot.destroy
-    TkCore::INTERP._invoke('destroy', '.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scale.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scale.rb
deleted file mode 100644
index 0b703aa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scale.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# tk/scale.rb : treat scale widget
-#
-require 'tk'
-
-class TkScale<TkWindow
-  TkCommandNames = ['scale'.freeze].freeze
-  WidgetClassName = 'Scale'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    if keys and keys != None
-      if keys.key?('command') && ! keys['command'].kind_of?(String)
-        cmd = keys.delete('command')
-        keys['command'] = proc{|val| cmd.call(val.to_f)}
-      end
-      #tk_call_without_enc('scale', @path, *hash_kv(keys, true))
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      #tk_call_without_enc('scale', @path)
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'label'
-  end
-  private :__strval_optkeys
-
-  def _wrap_command_arg(cmd)
-    proc{|val|
-      if val.kind_of?(String)
-        cmd.call(number(val))
-      else
-        cmd.call(val)
-      end
-    }
-  end
-  private :_wrap_command_arg
-
-  def configure_cmd(slot, value)
-    configure(slot=>value)
-  end
-
-  def configure(slot, value=None)
-    if (slot == 'command' || slot == :command)
-      configure('command'=>value)
-    elsif slot.kind_of?(Hash) && 
-        (slot.key?('command') || slot.key?(:command))
-      slot = _symbolkey2str(slot)
-      slot['command'] = _wrap_command_arg(slot.delete('command'))
-    end
-    super(slot, value)
-  end
-
-  def command(cmd=Proc.new)
-    configure('command'=>cmd)
-  end
-
-  def get(x=None, y=None)
-    number(tk_send_without_enc('get', x, y))
-  end
-
-  def coords(val=None)
-    tk_split_list(tk_send_without_enc('coords', val))
-  end
-
-  def identify(x, y)
-    tk_send_without_enc('identify', x, y)
-  end
-
-  def set(val)
-    tk_send_without_enc('set', val)
-  end
-
-  def value
-    get
-  end
-
-  def value= (val)
-    set(val)
-    val
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollable.rb
deleted file mode 100644
index 96959b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollable.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# tk/scrollable.rb : module for scrollable widget
-#
-require 'tk'
-
-module Tk
-  module XScrollable
-    def xscrollcommand(cmd=Proc.new)
-      configure_cmd 'xscrollcommand', cmd
-      # Tk.update  # avoid scrollbar trouble
-      self
-    end
-
-    def xview(*index)
-      if index.size == 0
-        list(tk_send_without_enc('xview'))
-      else
-        tk_send_without_enc('xview', *index)
-        self
-      end
-    end
-    def xview_moveto(*index)
-      xview('moveto', *index)
-    end
-    def xview_scroll(*index)
-      xview('scroll', *index)
-    end
-
-    def xscrollbar(bar=nil)
-      if bar
-        @xscrollbar = bar
-        @xscrollbar.orient 'horizontal'
-        self.xscrollcommand {|*arg| @xscrollbar.set(*arg)}
-        @xscrollbar.command {|*arg| self.xview(*arg)}
-        Tk.update  # avoid scrollbar trouble
-      end
-      @xscrollbar
-    end
-  end
-
-  module YScrollable
-    def yscrollcommand(cmd=Proc.new)
-      configure_cmd 'yscrollcommand', cmd
-      # Tk.update  # avoid scrollbar trouble
-      self
-    end
-
-    def yview(*index)
-      if index.size == 0
-        list(tk_send_without_enc('yview'))
-      else
-        tk_send_without_enc('yview', *index)
-        self
-      end
-    end
-    def yview_moveto(*index)
-      yview('moveto', *index)
-    end
-    def yview_scroll(*index)
-      yview('scroll', *index)
-    end
-
-    def yscrollbar(bar=nil)
-      if bar
-        @yscrollbar = bar
-        @yscrollbar.orient 'vertical'
-        self.yscrollcommand {|*arg| @yscrollbar.set(*arg)}
-        @yscrollbar.command {|*arg| self.yview(*arg)}
-        Tk.update  # avoid scrollbar trouble
-      end
-      @yscrollbar
-    end
-  end
-
-  X_Scrollable = XScrollable
-  Y_Scrollable = YScrollable
-
-  module Scrollable
-    include XScrollable
-    include YScrollable
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbar.rb
deleted file mode 100644
index 70aadfd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbar.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# tk/scrollbar.rb : treat scrollbar widget
-#
-require 'tk'
-
-class TkScrollbar<TkWindow
-  TkCommandNames = ['scrollbar'.freeze].freeze
-  WidgetClassName = 'Scrollbar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    @assigned = []
-    @scroll_proc = proc{|*args| 
-      if self.orient == 'horizontal'
-        @assigned.each{|w| w.xview(*args)}
-      else # 'vertical'
-        @assigned.each{|w| w.yview(*args)}
-      end
-    }
-
-    if keys and keys != None
-      #tk_call_without_enc('scrollbar', @path, *hash_kv(keys, true))
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      #tk_call_without_enc('scrollbar', @path)
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def propagate_set(src_win, first, last)
-    self.set(first, last)
-    if self.orient == 'horizontal'
-      @assigned.each{|w| w.xview('moveto', first) if w != src_win}
-    else # 'vertical'
-      @assigned.each{|w| w.yview('moveto', first) if w != src_win}
-    end
-  end
-
-  def assign(*wins)
-    begin
-      self.command(@scroll_proc) if self.cget('command').cmd != @scroll_proc
-    rescue Exception
-      self.command(@scroll_proc)
-    end
-    orient = self.orient
-    wins.each{|w|
-      @assigned << w unless @assigned.index(w)
-      if orient == 'horizontal'
-        w.xscrollcommand proc{|first, last| self.propagate_set(w, first, last)}
-      else # 'vertical'
-        w.yscrollcommand proc{|first, last| self.propagate_set(w, first, last)}
-      end
-    }
-    Tk.update  # avoid scrollbar trouble
-    self
-  end
-
-  def assigned_list
-    begin
-      return @assigned.dup if self.cget('command').cmd == @scroll_proc
-    rescue Exception
-    end
-    fail RuntimeError, "not depend on the assigned_list"
-  end
-
-  def configure(*args)
-    ret = super(*args)
-    # Tk.update  # avoid scrollbar trouble
-    ret
-  end
-
-  #def delta(deltax=None, deltay=None)
-  def delta(deltax, deltay)
-    number(tk_send_without_enc('delta', deltax, deltay))
-  end
-
-  #def fraction(x=None, y=None)
-  def fraction(x, y)
-    number(tk_send_without_enc('fraction', x, y))
-  end
-
-  def identify(x, y)
-    tk_send_without_enc('identify', x, y)
-  end
-
-  def get
-    #ary1 = tk_send('get').split
-    #ary2 = []
-    #for i in ary1
-    #  ary2.push number(i)
-    #end
-    #ary2
-    list(tk_send_without_enc('get'))
-  end
-
-  def set(first, last)
-    tk_send_without_enc('set', first, last)
-    self
-  end
-
-  def activate(element=None)
-    tk_send_without_enc('activate', element)
-  end
-end
-
-class TkXScrollbar<TkScrollbar
-  def create_self(keys)
-    keys = {} unless keys
-    keys['orient'] = 'horizontal'
-    super(keys)
-  end
-  private :create_self
-end
-
-class TkYScrollbar<TkScrollbar
-  def create_self(keys)
-    keys = {} unless keys
-    keys['orient'] = 'vertical'
-    super(keys)
-  end
-  private :create_self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbox.rb
deleted file mode 100644
index 0b92408..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/scrollbox.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#               tk/scrollbox.rb - Tk Listbox with Scrollbar
-#                                 as an example of Composite Widget
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at netlab.co.jp>
-#
-require 'tk'
-require 'tk/listbox'
-
-class TkScrollbox<TkListbox
-  include TkComposite
-  def initialize_composite(keys=nil)
-    list = TkListbox.new(@frame)
-    scroll = TkScrollbar.new(@frame)
-    @path = list.path
-
-=begin
-    list.configure 'yscroll', scroll.path+" set"
-    list.pack 'side'=>'left','fill'=>'both','expand'=>'yes'
-    scroll.configure 'command', list.path+" yview"
-    scroll.pack 'side'=>'right','fill'=>'y'
-=end
-    list.yscrollbar(scroll)
-    list.pack('side'=>'left','fill'=>'both','expand'=>'yes')
-    scroll.pack('side'=>'right','fill'=>'y')
-
-    delegate('DEFAULT', list)
-    delegate('foreground', list)
-    delegate('background', list, scroll)
-    delegate('borderwidth', @frame)
-    delegate('relief', @frame)
-
-    configure keys if keys
-  end
-  private :initialize_composite
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/selection.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/selection.rb
deleted file mode 100644
index 5caa6ef..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/selection.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# tk/selection.rb : control selection
-#
-require 'tk'
-
-module TkSelection
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['selection'.freeze].freeze
-
-  def self.clear(sel=nil)
-    if sel
-      tk_call_without_enc('selection', 'clear', '-selection', sel)
-    else
-      tk_call_without_enc('selection', 'clear')
-    end
-  end
-  def self.clear_on_display(win, sel=nil)
-    if sel
-      tk_call_without_enc('selection', 'clear', 
-                          '-displayof', win, '-selection', sel)
-    else
-      tk_call_without_enc('selection', 'clear', '-displayof', win)
-    end
-  end
-  def clear(sel=nil)
-    TkSelection.clear_on_display(self, sel)
-    self
-  end
-
-  def self.get(keys=nil)
-    #tk_call('selection', 'get', *hash_kv(keys))
-    _fromUTF8(tk_call_without_enc('selection', 'get', *hash_kv(keys)))
-  end
-  def self.get_on_display(win, keys=nil)
-    #tk_call('selection', 'get', '-displayof', win, *hash_kv(keys))
-    _fromUTF8(tk_call_without_enc('selection', 'get', '-displayof', 
-                                  win, *hash_kv(keys)))
-  end
-  def get(keys=nil)
-    TkSelection.get_on_display(self, sel)
-  end
-
-  def self.handle(win, func=Proc.new, keys=nil, &b)
-    if func.kind_of?(Hash) && keys == nil
-      keys = func
-      func = Proc.new(&b)
-    end
-    args = ['selection', 'handle']
-    args.concat(hash_kv(keys))
-    args.concat([win, func])
-    tk_call_without_enc(*args)
-  end
-  def handle(func=Proc.new, keys=nil, &b)
-    TkSelection.handle(self, func, keys, &b)
-  end
-
-  def self.get_owner(sel=nil)
-    if sel
-      window(tk_call_without_enc('selection', 'own', '-selection', sel))
-    else
-      window(tk_call_without_enc('selection', 'own'))
-    end
-  end
-  def self.get_owner_on_display(win, sel=nil)
-    if sel
-      window(tk_call_without_enc('selection', 'own', 
-                                 '-displayof', win, '-selection', sel))
-    else
-      window(tk_call_without_enc('selection', 'own', '-displayof', win))
-    end
-  end
-  def get_owner(sel=nil)
-    TkSelection.get_owner_on_display(self, sel)
-    self
-  end
-
-  def self.set_owner(win, keys=nil)
-    tk_call_without_enc('selection', 'own', *(hash_kv(keys) << win))
-  end
-  def set_owner(keys=nil)
-    TkSelection.set_owner(self, keys)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/spinbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/spinbox.rb
deleted file mode 100644
index 66744be..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/spinbox.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-#               tk/spinbox.rb - Tk spinbox classes
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at caelum.co.jp>
-#
-require 'tk'
-require 'tk/entry'
-
-class TkSpinbox<TkEntry
-  TkCommandNames = ['spinbox'.freeze].freeze
-  WidgetClassName = 'Spinbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  class SpinCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?d, ?s, :direction ], 
-        [ ?s, ?e, :current ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-
-        [ ?e, proc{|val|
-            #enc = Tk.encoding
-            enc = ((Tk.encoding)? Tk.encoding : Tk.encoding_system)
-            if enc
-              Tk.fromUTF8(TkComm::string(val), enc)
-            else
-              TkComm::string(val)
-            end
-          }
-        ], 
-
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        (val)? '1': '0'
-      end
-    end
-
-    def self._config_keys
-      ['command']
-    end
-  end
-
-  def __validation_class_list
-    super() << SpinCommand
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, SpinCommand)
-
-  #def create_self(keys)
-  #  tk_call_without_enc('spinbox', @path)
-  #  if keys and keys != None
-  #    configure(keys)
-  #  end
-  #end
-  #private :create_self
-
-  def __boolval_optkeys
-    super() << 'wrap'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'buttonbackground' << 'format'
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    super() << 'values'
-  end
-  private :__listval_optkeys
-
-  def identify(x, y)
-    tk_send_without_enc('identify', x, y)
-  end
-
-  def spinup
-    tk_send_without_enc('invoke', 'spinup')
-    self
-  end
-
-  def spindown
-    tk_send_without_enc('invoke', 'spindown')
-    self
-  end
-
-  def set(str)
-    _fromUTF8(tk_send_without_enc('set', _get_eval_enc_str(str)))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/tagfont.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/tagfont.rb
deleted file mode 100644
index a180739..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/tagfont.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# tk/tagfont.rb : control font of tags
-#
-require 'tk'
-
-module TkTreatTagFont
-  def font_configinfo
-    @parent.tagfont_configinfo(@id)
-  end
-#  alias font font_configinfo
-
-  def font_configure(slot)
-    @parent.tagfont_configure(@id, slot)
-    self
-  end
-
-  def latinfont_configure(ltn, keys=nil)
-    @parent.latintagfont_configure(@id, ltn, keys)
-    self
-  end
-  alias asciifont_configure latinfont_configure
-
-  def kanjifont_configure(knj, keys=nil)
-    @parent.kanjitagfont_configure(@id, ltn, keys)
-    self
-  end
-
-  def font_copy(win, wintag=nil)
-    @parent.tagfont_copy(@id, win, wintag)
-    self
-  end
-
-  def latinfont_copy(win, wintag=nil)
-    @parent.latintagfont_copy(@id, win, wintag)
-    self
-  end
-  alias asciifont_copy latinfont_copy
-
-  def kanjifont_copy(win, wintag=nil)
-    @parent.kanjitagfont_copy(@id, win, wintag)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/text.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/text.rb
deleted file mode 100644
index 56edc3e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/text.rb
+++ /dev/null
@@ -1,1550 +0,0 @@
-#
-#               tk/text.rb - Tk text classes
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yukihiro Matsumoto <matz at caelum.co.jp>
-require 'tk'
-require 'tk/itemfont'
-require 'tk/itemconfig'
-require 'tk/scrollable'
-require 'tk/txtwin_abst'
-
-module TkTextTagConfig
-  include TkTreatItemFont
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)  # id := [ type, tagOrId ]
-    [self.path, id[0], 'cget', id[1]]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)  # id := [ type, tagOrId ]
-    [self.path, id[0], 'configure', id[1]]
-  end
-  private :__item_config_cmd
-
-  def __item_pathname(id)
-    if id.kind_of?(Array)
-      id = tagid(id[1])
-    end
-    [self.path, id].join(';')
-  end
-  private :__item_pathname
-
-  def tag_cget(tagOrId, option)
-    itemcget(['tag', tagOrId], option)
-  end
-  def tag_configure(tagOrId, slot, value=None)
-    itemconfigure(['tag', tagOrId], slot, value)
-  end
-  def tag_configinfo(tagOrId, slot=nil)
-    itemconfigure(['tag', tagOrId], slot)
-  end
-  def current_tag_configinfo(tagOrId, slot=nil)
-    itemconfigure(['tag', tagOrId], slot)
-  end
-
-  def window_cget(tagOrId, option)
-    itemcget(['window', tagOrId], option)
-  end
-  def window_configure(tagOrId, slot, value=None)
-    itemconfigure(['window', tagOrId], slot, value)
-  end
-  def window_configinfo(tagOrId, slot=nil)
-    itemconfigure(['window', tagOrId], slot)
-  end
-  def current_window_configinfo(tagOrId, slot=nil)
-    itemconfigure(['window', tagOrId], slot)
-  end
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-class TkText<TkTextWin
-  ItemConfCMD = ['tag'.freeze, 'configure'.freeze].freeze
-  #include TkTreatTextTagFont
-  include TkTextTagConfig
-  include Scrollable
-
-  #######################################
-
-  module IndexModMethods
-    def +(mod)
-      return chars(mod) if mod.kind_of?(Numeric)
-
-      mod = mod.to_s
-      if mod =~ /^\s*[+-]?\d/
-        TkText::IndexString.new(String.new(id) << ' + ' << mod)
-      else
-        TkText::IndexString.new(String.new(id) << ' ' << mod)
-      end
-    end
-
-    def -(mod)
-      return chars(-mod) if mod.kind_of?(Numeric)
-
-      mod = mod.to_s
-      if mod =~ /^\s*[+-]?\d/
-        TkText::IndexString.new(String.new(id) << ' - ' << mod)
-      elsif mod =~ /^\s*[-]\s+(\d.*)$/
-        TkText::IndexString.new(String.new(id) << ' - -' << $1)
-      else
-        TkText::IndexString.new(String.new(id) << ' ' << mod)
-      end
-    end
-
-    def chars(mod)
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
-      end
-    end
-    alias char chars
-
-    def display_chars(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
-      end
-    end
-    alias display_char display_chars
-
-    def any_chars(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
-      end
-    end
-    alias any_char any_chars
-
-    def indices(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
-      end
-    end
-
-    def display_indices(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
-      end
-    end
-
-    def any_indices(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
-      end
-    end
-
-    def lines(mod)
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
-      end
-    end
-    alias line lines
-
-    def display_lines(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
-      end
-    end
-    alias display_line display_lines
-
-    def any_lines(mod)
-      # Tk8.5 feature
-      fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
-      if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
-      else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
-      end
-    end
-    alias any_line any_lines
-
-    def linestart
-      TkText::IndexString.new(String.new(id) << ' linestart')
-    end
-    def lineend
-      TkText::IndexString.new(String.new(id) << ' lineend')
-    end
-
-    def display_linestart
-      # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display linestart')
-    end
-    def display_lineend
-      # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display lineend')
-    end
-
-    def wordstart
-      TkText::IndexString.new(String.new(id) << ' wordstart')
-    end
-    def wordend
-      TkText::IndexString.new(String.new(id) << ' wordend')
-    end
-
-    def display_wordstart
-      # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display wordstart')
-    end
-    def display_wordend
-      # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display wordend')
-    end
-  end
-
-  class IndexString < String
-    include IndexModMethods
-
-    def self.at(x,y)
-      self.new("@#{x},#{y}")
-    end
-
-    def self.new(str)
-      if str.kind_of?(String)
-        super(str)
-      elsif str.kind_of?(Symbol)
-        super(str.to_s)
-      else
-        str
-      end
-    end
-
-    def id
-      self
-    end
-  end
-
-  #######################################
-
-  TkCommandNames = ['text'.freeze].freeze
-  WidgetClassName = 'Text'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.new(*args, &block)
-    obj = super(*args){}
-    obj.init_instance_variable
-    obj.instance_eval(&block) if defined? yield
-    obj
-  end
-
-  def init_instance_variable
-    @cmdtbl = []
-    @tags = {}
-  end
-
-  def __destroy_hook__
-    TkTextTag::TTagID_TBL.delete(@path)
-    TkTextMark::TMarkID_TBL.delete(@path)
-  end
-
-  def create_self(keys)
-    #if keys and keys != None
-    #  #tk_call_without_enc('text', @path, *hash_kv(keys, true))
-    #  tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-    #                     *hash_kv(keys, true))
-    #else
-    #  #tk_call_without_enc('text', @path)
-    #  tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    #end
-    super(keys)
-    init_instance_variable
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'inactiveseletcionbackground'
-  end
-  private :__strval_optkeys
-
-  def self.at(x, y)
-    TkText::IndexString.at(x, y)
-  end
-
-  def at(x, y)
-    TkText::IndexString.at(x, y)
-  end
-
-  def index(idx)
-    TkText::IndexString.new(tk_send_without_enc('index', 
-                                                _get_eval_enc_str(idx)))
-  end
-
-  def get_displaychars(*index)
-    # Tk8.5 feature
-    get('-displaychars', *index)
-  end
-
-  def value
-    _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
-  end
-
-  def value= (val)
-    tk_send_without_enc('delete', "1.0", 'end')
-    tk_send_without_enc('insert', "1.0", _get_eval_enc_str(val))
-    val
-  end
-
-  def clear
-    tk_send_without_enc('delete', "1.0", 'end')
-    self
-  end
-  alias erase clear
-
-  def _addcmd(cmd)
-    @cmdtbl.push cmd
-  end
-
-  def _addtag(name, obj)
-    @tags[name] = obj
-  end
-
-  def tagid(tag)
-    if tag.kind_of?(TkTextTag) \
-      || tag.kind_of?(TkTextMark) \
-      || tag.kind_of?(TkTextImage) \
-      || tag.kind_of?(TkTextWindow)
-      tag.id
-    else
-      tag  # maybe an Array of configure paramters
-    end
-  end
-  private :tagid
-
-  def tagid2obj(tagid)
-    if @tags[tagid]
-      @tags[tagid]
-    else
-      tagid
-    end
-  end
-
-  def tag_names(index=None)
-    #tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def mark_names
-    #tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def mark_gravity(mark, direction=nil)
-    if direction
-      tk_send_without_enc('mark', 'gravity', 
-                          _get_eval_enc_str(mark), direction)
-      self
-    else
-      tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
-    end
-  end
-
-  def mark_set(mark, index)
-    tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark), 
-                        _get_eval_enc_str(index))
-    self
-  end
-  alias set_mark mark_set
-
-  def mark_unset(*marks)
-    tk_send_without_enc('mark', 'unset', 
-                        *(marks.collect{|mark| _get_eval_enc_str(mark)}))
-    self
-  end
-  alias unset_mark mark_unset
-
-  def mark_next(index)
-    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next', 
-                                            _get_eval_enc_str(index))))
-  end
-  alias next_mark mark_next
-
-  def mark_previous(index)
-    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous', 
-                                            _get_eval_enc_str(index))))
-  end
-  alias previous_mark mark_previous
-
-  def image_cget(index, slot)
-    case slot.to_s
-    when 'text', 'label', 'show', 'data', 'file'
-      _fromUTF8(tk_send_without_enc('image', 'cget', 
-                                    _get_eval_enc_str(index), "-#{slot}"))
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget', 
-                                                _get_eval_enc_str(index), 
-                                                "-#{slot}")))
-    end
-  end
-
-  def image_configure(index, slot, value=None)
-    if slot.kind_of?(Hash)
-      _fromUTF8(tk_send_without_enc('image', 'configure', 
-                                    _get_eval_enc_str(index), 
-                                    *hash_kv(slot, true)))
-    else
-      _fromUTF8(tk_send_without_enc('image', 'configure', 
-                                    _get_eval_enc_str(index), 
-                                    "-#{slot}", 
-                                    _get_eval_enc_str(value)))
-    end
-    self
-  end
-
-  def image_configinfo(index, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
-        else
-          #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        # tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
-        else
-          #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        ret
-      end
-    end
-  end
-
-  def current_image_configinfo(index, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        conf = image_configinfo(index, slot)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        image_configinfo(index).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      image_configinfo(index, slot).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-
-  def image_names
-    #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def set_insert(index)
-    tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index))
-    self
-  end
-
-  def set_current(index)
-    tk_send_without_enc('mark','set','current', _get_eval_enc_str(index))
-    self
-  end
-
-  def insert(index, chars, *tags)
-    if tags[0].kind_of?(Array)
-      # multiple chars-taglist argument :: str, [tag,...], str, [tag,...], ...
-      args = [chars]
-      while tags.size > 0
-        args << tags.shift.collect{|x|_get_eval_string(x)}.join(' ')  # taglist
-        args << tags.shift if tags.size > 0                           # chars
-      end
-      super(index, *args)
-    else
-      # single chars-taglist argument :: str, tag, tag, ...
-      if tags.size == 0
-        super(index, chars)
-      else
-        super(index, chars, tags.collect{|x|_get_eval_string(x)}.join(' '))
-      end
-    end
-  end
-
-  def destroy
-    @tags = {} unless @tags
-    @tags.each_value do |t|
-      t.destroy
-    end
-    super()
-  end
-
-  def backspace
-    self.delete 'insert'
-  end
-
-  def bbox(index)
-    list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
-  end
-
-  def compare(idx1, op, idx2)
-    bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1), 
-                             op, _get_eval_enc_str(idx2)))
-  end
-
-  def count(idx1, idx2, *opts)
-    # opts are Tk8.5 feature
-    cnt = 0
-    args = opts.collect{|opt|
-      str = opt.to_s
-      cnt += 1 if str != 'update'
-      '-' + str
-    }
-    args << _get_eval_enc_str(idx1) << _get_eval_enc_str(idx2)
-    if cnt <= 1
-      number(tk_send_without_enc('count', *opts))
-    else
-      list(tk_send_without_enc('count', *opts))
-    end
-  end
-
-  def count_info(idx1, idx2, update=true)
-    # Tk8.5 feature
-    opts = [
-      :chars, :displaychars, :displayindices, :displaylines, 
-      :indices, :lines, :xpixels, :ypixels
-    ]
-    if update
-      lst = count(idx1, idx2, :update, *opts)
-    else
-      lst = count(idx1, idx2, *opts)
-    end
-    info = {}
-    opts.each_with_index{|key, idx| info[key] = lst[idx]}
-    info
-  end
-
-  def peer_names()
-    # Tk8.5 feature
-    list(tk_send_without_enc('peer', 'names'))
-  end
-
-  def replace(idx1, idx2, *opts)
-    tk_send('replace', idx1, idx2, *opts)
-    self
-  end
-
-  def debug
-    bool(tk_send_without_enc('debug'))
-  end
-  def debug=(boolean)
-    tk_send_without_enc('debug', boolean)
-    #self
-    boolean
-  end
-
-  def dlineinfo(index)
-    list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
-  end
-
-  def modified?
-    bool(tk_send_without_enc('edit', 'modified'))
-  end
-  def modified(mode)
-    tk_send_without_enc('edit', 'modified', mode)
-    self
-  end
-  def modified=(mode)
-    modified(mode)
-    mode
-  end
-
-  def edit_redo
-    tk_send_without_enc('edit', 'redo')
-    self
-  end
-  def edit_reset
-    tk_send_without_enc('edit', 'reset')
-    self
-  end
-  def edit_separator
-    tk_send_without_enc('edit', 'separator')
-    self
-  end
-  def edit_undo
-    tk_send_without_enc('edit', 'undo')
-    self
-  end
-
-  def xview_pickplace(index)
-    tk_send_without_enc('xview', '-pickplace', _get_eval_enc_str(index))
-    self
-  end
-
-  def yview_pickplace(index)
-    tk_send_without_enc('yview', '-pickplace', _get_eval_enc_str(index))
-    self
-  end
-
-  def text_copy
-    # Tk8.4 feature
-    tk_call_without_enc('tk_textCopy', @path)
-    self
-  end
-
-  def text_cut
-    # Tk8.4 feature
-    tk_call_without_enc('tk_textCut', @path)
-    self
-  end
-
-  def text_paste
-    # Tk8.4 feature
-    tk_call_without_enc('tk_textPaste', @path)
-    self
-  end
-
-  def tag_add(tag, index1, index2=None)
-    tk_send_without_enc('tag', 'add', _get_eval_enc_str(tag), 
-                        _get_eval_enc_str(index1), 
-                        _get_eval_enc_str(index2))
-    self
-  end
-  alias addtag tag_add
-  alias add_tag tag_add
-
-  def tag_delete(*tags)
-    tk_send_without_enc('tag', 'delete', 
-                        *(tags.collect{|tag| _get_eval_enc_str(tag)}))
-    if TkTextTag::TTagID_TBL[@path]
-      tags.each{|tag|
-        if tag.kind_of?(TkTextTag)
-          TkTextTag::TTagID_TBL[@path].delete(tag.id) 
-        else
-          TkTextTag::TTagID_TBL[@path].delete(tag) 
-        end
-      }
-    end
-    self
-  end
-  alias deltag tag_delete
-  alias delete_tag tag_delete
-
-  #def tag_bind(tag, seq, cmd=Proc.new, *args)
-  #  _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
-  #  self
-  #end
-  def tag_bind(tag, seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
-    self
-  end
-
-  #def tag_bind_append(tag, seq, cmd=Proc.new, *args)
-  #  _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
-  #  self
-  #end
-  def tag_bind_append(tag, seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
-    self
-  end
-
-  def tag_bind_remove(tag, seq)
-    _bind_remove([@path, 'tag', 'bind', tag], seq)
-    self
-  end
-
-  def tag_bindinfo(tag, context=nil)
-    _bindinfo([@path, 'tag', 'bind', tag], context)
-  end
-
-=begin
-  def tag_cget(tag, key)
-    case key.to_s
-    when 'text', 'label', 'show', 'data', 'file'
-      tk_call_without_enc(@path, 'tag', 'cget', 
-                          _get_eval_enc_str(tag), "-#{key}")
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_send('tag', 'cget', tag, "-#{key}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('tag','cget',_get_eval_enc_str(tag),'-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(tag, fnt)
-      end
-      if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@path,'tag','cget',_get_eval_enc_str(tag),"-#{key}")))
-    end
-  end
-
-  def tag_configure(tag, key, val=None)
-    if key.kind_of?(Hash)
-      key = _symbolkey2str(key)
-      if ( key['font'] || key['kanjifont'] \
-          || key['latinfont'] || key['asciifont'] )
-        tagfont_configure(tag, key)
-      else
-        tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), 
-                            *hash_kv(key, true))
-      end
-
-    else
-      if  key == 'font' || key == :font || 
-          key == 'kanjifont' || key == :kanjifont ||
-          key == 'latinfont' || key == :latinfont || 
-          key == 'asciifont' || key == :asciifont
-        if val == None
-          tagfontobj(tag)
-        else
-          tagfont_configure(tag, {key=>val})
-        end
-      else
-        tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), 
-                            "-#{key}", _get_eval_enc_str(val))
-      end
-    end
-    self
-  end
-
-  def tag_configinfo(tag, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-          conf[4] = tagfont_configinfo(tag, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        ret = tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-        fontconf = ret.assoc('font')
-        if fontconf
-          ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
-          fontconf[4] = tagfont_configinfo(tag, fontconf[4])
-          ret.push(fontconf)
-        else
-          ret
-        end
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        case key.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-        when 'font', 'kanjifont'
-          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-          conf[4] = tagfont_configinfo(tag, conf[4])
-        else
-          conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        fontconf = ret['font']
-        if fontconf
-          ret.delete('font')
-          ret.delete('kanjifont')
-          fontconf[3] = tagfont_configinfo(tag, fontconf[3])
-          ret['font'] = fontconf
-        end
-        ret
-      end
-    end
-  end
-
-  def current_tag_configinfo(tag, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = tag_configinfo(tag, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        tag_configinfo(tag).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      tag_configinfo(tag, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-=end
-
-  def tag_raise(tag, above=None)
-    tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag), 
-                        _get_eval_enc_str(above))
-    self
-  end
-
-  def tag_lower(tag, below=None)
-    tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag), 
-                        _get_eval_enc_str(below))
-    self
-  end
-
-  def tag_remove(tag, *indices)
-    tk_send_without_enc('tag', 'remove', _get_eval_enc_str(tag), 
-                        *(indices.collect{|idx| _get_eval_enc_str(idx)}))
-    self
-  end
-
-  def tag_ranges(tag)
-    #l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
-    #                                            _get_eval_enc_str(tag)))
-    l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
-                                                _get_eval_enc_str(tag)), 
-                            false, true)
-    r = []
-    while key=l.shift
-      r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
-    end
-    r
-  end
-
-  def tag_nextrange(tag, first, last=None)
-    simplelist(tk_send_without_enc('tag', 'nextrange', 
-                                   _get_eval_enc_str(tag), 
-                                   _get_eval_enc_str(first), 
-                                   _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
-    }
-  end
-
-  def tag_prevrange(tag, first, last=None)
-    simplelist(tk_send_without_enc('tag', 'prevrange', 
-                                   _get_eval_enc_str(tag), 
-                                   _get_eval_enc_str(first), 
-                                   _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
-    }
-  end
-
-=begin
-  def window_cget(index, slot)
-    case slot.to_s
-    when 'text', 'label', 'show', 'data', 'file'
-      _fromUTF8(tk_send_without_enc('window', 'cget', 
-                                    _get_eval_enc_str(index), "-#{slot}"))
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_send('window', 'cget', index, "-#{slot}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), '-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(index, fnt)
-      end
-      if slot.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), "-#{slot}")))
-    end
-  end
-
-  def window_configure(index, slot, value=None)
-    if index.kind_of?(TkTextWindow)
-      index.configure(slot, value)
-    else
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        win = slot['window']
-        # slot['window'] = win.epath if win.kind_of?(TkWindow)
-        slot['window'] = _epath(win) if win
-        if slot['create']
-          p_create = slot['create']
-          if p_create.kind_of?(Proc)
-#=begin
-            slot['create'] = install_cmd(proc{
-                                           id = p_create.call
-                                           if id.kind_of?(TkWindow)
-                                             id.epath
-                                           else
-                                             id
-                                           end
-                                         })
-#=end
-            slot['create'] = install_cmd(proc{_epath(p_create.call)})
-          end
-        end
-        tk_send_without_enc('window', 'configure', 
-                            _get_eval_enc_str(index), 
-                            *hash_kv(slot, true))
-      else
-        if slot == 'window' || slot == :window
-          # id = value 
-          # value = id.epath if id.kind_of?(TkWindow)
-          value = _epath(value)
-        end
-        if slot == 'create' || slot == :create
-          p_create = value
-          if p_create.kind_of?(Proc)
-#=begin
-            value = install_cmd(proc{
-                                  id = p_create.call
-                                  if id.kind_of?(TkWindow)
-                                    id.epath
-                                  else
-                                    id
-                                  end
-                                })
-#=end
-            value = install_cmd(proc{_epath(p_create.call)})
-          end
-        end
-        tk_send_without_enc('window', 'configure', 
-                            _get_eval_enc_str(index), 
-                            "-#{slot}", _get_eval_enc_str(value))
-      end
-    end
-    self
-  end
-
-  def window_configinfo(win, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
-        else
-          conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
-        else
-          conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        ret
-      end
-    end
-  end
-
-  def current_window_configinfo(win, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        conf = window_configinfo(win, slot)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        window_configinfo(win).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      window_configinfo(win, slot).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-=end
-
-  def window_names
-    # tk_split_simplelist(_fromUTF8(tk_send_without_enc('window', 'names'))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('window', 'names'), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def _ktext_length(txt)
-    if $KCODE !~ /n/i
-      return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
-    end
-
-    # $KCODE == 'NONE'
-    if JAPANIZED_TK
-      tk_call_without_enc('kstring', 'length', 
-                          _get_eval_enc_str(txt)).to_i
-    else
-      begin
-        tk_call_without_enc('encoding', 'convertto', 'ascii', 
-                            _get_eval_enc_str(txt)).length
-      rescue StandardError, NameError
-        # sorry, I have no plan
-        txt.length
-      end
-    end
-  end
-  private :_ktext_length
-
-  def tksearch(*args)
-    # call 'search' subcommand of text widget
-    #   args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]
-    # If <pattern> is regexp, then it must be a regular expression of Tcl
-    nocase = false
-    if args[0].kind_of?(Array)
-      opts = args.shift.collect{|opt|
-        s_opt = opt.to_s
-        nocase = true if s_opt == 'nocase'
-        '-' + s_opt
-      }
-    else
-      opts = []
-    end
-
-    if args[0].kind_of?(Regexp)
-      regexp = args.shift
-      if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
-        opts << '-nocase'
-      end
-      args.unshift(regexp.source)
-    end
-
-    opts << '--'
-
-    ret = tk_send('search', *(opts + args))
-    if ret == ""
-      nil
-    else
-      TkText::IndexString.new(ret)
-    end
-  end
-
-  def tksearch_with_count(*args)
-    # call 'search' subcommand of text widget
-    #   args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]
-    # If <pattern> is regexp, then it must be a regular expression of Tcl
-    nocase = false
-    if args[0].kind_of?(Array)
-      opts = args.shift.collect{|opt|
-        s_opt = opt.to_s
-        nocase = true if s_opt == 'nocase'
-        '-' + s_opt
-      }
-    else
-      opts = []
-    end
-
-    opts << '-count' << args.shift
-
-    if args[0].kind_of?(Regexp)
-      regexp = args.shift
-      if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
-        opts << '-nocase'
-      end
-      args.unshift(regexp.source)
-    end
-
-    opts << '--'
-
-    ret = tk_send('search', *(opts + args))
-    if ret == ""
-      nil
-    else
-      TkText::IndexString.new(ret)
-    end
-  end
-
-  def search_with_length(pat,start,stop=None)
-    pat = pat.chr if pat.kind_of?(Integer)
-    if stop != None
-      return ["", 0] if compare(start,'>=',stop)
-      txt = get(start,stop)
-      if (pos = txt.index(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of?(String)
-          #return [index(start + " + #{pos} chars"), pat.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(pat), pat.dup]
-        else
-          #return [index(start + " + #{pos} chars"), $&.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(match), match]
-        end
-      else
-        return ["", 0]
-      end
-    else
-      txt = get(start,'end - 1 char')
-      if (pos = txt.index(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of?(String)
-          #return [index(start + " + #{pos} chars"), pat.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(pat), pat.dup]
-        else
-          #return [index(start + " + #{pos} chars"), $&.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(match), match]
-        end
-      else
-        txt = get('1.0','end - 1 char')
-        if (pos = txt.index(pat))
-          match = $&
-          #pos = txt[0..(pos-1)].split('').length if pos > 0
-          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-          if pat.kind_of?(String)
-            #return [index("1.0 + #{pos} chars"), pat.split('').length]
-            return [index("1.0 + #{pos} chars"), 
-                    _ktext_length(pat), pat.dup]
-          else
-            #return [index("1.0 + #{pos} chars"), $&.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-          end
-        else
-          return ["", 0]
-        end
-      end
-    end
-  end
-
-  def search(pat,start,stop=None)
-    search_with_length(pat,start,stop)[0]
-  end
-
-  def rsearch_with_length(pat,start,stop=None)
-    pat = pat.chr if pat.kind_of?(Integer)
-    if stop != None
-      return ["", 0] if compare(start,'<=',stop)
-      txt = get(stop,start)
-      if (pos = txt.rindex(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of?(String)
-          #return [index(stop + " + #{pos} chars"), pat.split('').length]
-          return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup]
-        else
-          #return [index(stop + " + #{pos} chars"), $&.split('').length]
-          return [index(stop + " + #{pos} chars"), _ktext_length(match), match]
-        end
-      else
-        return ["", 0]
-      end
-    else
-      txt = get('1.0',start)
-      if (pos = txt.rindex(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of?(String)
-          #return [index("1.0 + #{pos} chars"), pat.split('').length]
-          return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
-        else
-          #return [index("1.0 + #{pos} chars"), $&.split('').length]
-          return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-        end
-      else
-        txt = get('1.0','end - 1 char')
-        if (pos = txt.rindex(pat))
-          match = $&
-          #pos = txt[0..(pos-1)].split('').length if pos > 0
-          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-          if pat.kind_of?(String)
-            #return [index("1.0 + #{pos} chars"), pat.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
-          else
-            #return [index("1.0 + #{pos} chars"), $&.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-          end
-        else
-          return ["", 0]
-        end
-      end
-    end
-  end
-
-  def rsearch(pat,start,stop=None)
-    rsearch_with_length(pat,start,stop)[0]
-  end
-
-  def dump(type_info, *index, &block)
-    if type_info.kind_of?(Symbol)
-      type_info = [ type_info.to_s ]
-    elsif type_info.kind_of?(String)
-      type_info = [ type_info ]
-    end
-    args = type_info.collect{|inf| '-' + inf}
-    args << '-command' << block if block
-    str = tk_send('dump', *(args + index))
-    result = []
-    sel = nil
-    i = 0
-    while i < str.size
-      # retrieve key
-      idx = str.index(/ /, i)
-      result.push str[i..(idx-1)]
-      i = idx + 1
-      
-      # retrieve value
-      case result[-1]
-      when 'text'
-        if str[i] == ?{
-          # text formed as {...}
-          val, i = _retrieve_braced_text(str, i)
-          result.push val
-        else
-          # text which may contain backslahes
-          val, i = _retrieve_backslashed_text(str, i)
-          result.push val
-        end
-      else
-        idx = str.index(/ /, i)
-        val = str[i..(idx-1)]
-        case result[-1]
-        when 'mark'
-          case val
-          when 'insert'
-            result.push TkTextMarkInsert.new(self)
-          when 'current'
-            result.push TkTextMarkCurrent.new(self)
-          when 'anchor'
-            result.push TkTextMarkAnchor.new(self)
-          else
-            result.push tk_tcl2ruby(val)
-          end
-        when 'tagon'
-          if val == 'sel'
-            if sel
-              result.push sel
-            else
-              result.push TkTextTagSel.new(self)
-            end
-          else
-            result.push tk_tcl2ruby(val)
-          end
-        when 'tagoff'
-            result.push tk_tcl2ruby(val)
-        when 'window'
-          result.push tk_tcl2ruby(val)
-        when 'image'
-          result.push tk_tcl2ruby(val)
-        end
-        i = idx + 1
-      end
-
-      # retrieve index
-      idx = str.index(/ /, i)
-      if idx
-        result.push(TkText::IndexString.new(str[i..(idx-1)]))
-        i = idx + 1
-      else
-        result.push(TkText::IndexString.new(str[i..-1]))
-        break
-      end
-    end
-    
-    kvis = []
-    until result.empty?
-      kvis.push [result.shift, result.shift, result.shift]
-    end
-    kvis  # result is [[key1, value1, index1], [key2, value2, index2], ...]
-  end
-
-  def _retrieve_braced_text(str, i)
-    cnt = 0
-    idx = i
-    while idx < str.size
-      case str[idx]
-      when ?{
-        cnt += 1
-      when ?}
-        cnt -= 1
-        if cnt == 0
-          break
-        end
-      end
-      idx += 1
-    end
-    return str[i+1..idx-1], idx + 2
-  end
-  private :_retrieve_braced_text
-
-  def _retrieve_backslashed_text(str, i)
-    j = i
-    idx = nil
-    loop {
-      idx = str.index(/ /, j)
-      if str[idx-1] == ?\\
-        j += 1
-      else
-        break
-      end
-    }
-    val = str[i..(idx-1)]
-    val.gsub!(/\\( |\{|\})/, '\1')
-    return val, idx + 1
-  end
-  private :_retrieve_backslashed_text
-
-  def dump_all(*index, &block)
-    dump(['all'], *index, &block)
-  end
-  def dump_mark(*index, &block)
-    dump(['mark'], *index, &block)
-  end
-  def dump_tag(*index, &block)
-    dump(['tag'], *index, &block)
-  end
-  def dump_text(*index, &block)
-    dump(['text'], *index, &block)
-  end
-  def dump_window(*index, &block)
-    dump(['window'], *index, &block)
-  end
-  def dump_image(*index, &block)
-    dump(['image'], *index, &block)
-  end
-end
-
-#######################################
-
-class TkText::Peer < TkText
-  # Tk8.5 feature
-  def initialize(text, parent=nil, keys={})
-    unless text.kind_of?(TkText)
-      fail ArgumentError, "TkText is expected for 1st argument"
-    end
-    @src_text = text
-    super(parent, keys)
-  end
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(@src_text.path, 'peer', 'create', @path)
-    else
-      tk_call_without_enc(@src_text.path, 'peer', 'create', @path)
-    end
-  end
-  private :create_self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textimage.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textimage.rb
deleted file mode 100644
index a29b23c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textimage.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# tk/textimage.rb - treat Tk text image object
-#
-require 'tk'
-require 'tk/text'
-
-class TkTextImage<TkObject
-  include TkText::IndexModMethods
-
-  def initialize(parent, index, keys)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @t = parent
-    if index == 'end' || index == :end
-      @path = TkTextMark.new(@t, tk_call(@t.path, 'index', 'end - 1 chars'))
-    elsif index.kind_of? TkTextMark
-      if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end')
-        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                       'end - 1 chars'))
-      else
-        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                       index.path))
-      end
-    else
-      @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                     _get_eval_enc_str(index)))
-    end
-    @path.gravity = 'left'
-    @index = @path.path
-    @id = tk_call_without_enc(@t.path, 'image', 'create', @index, 
-                              *hash_kv(keys, true)).freeze
-    @path.gravity = 'right'
-  end
-
-  def id
-    TkText::IndexString.new(@id)
-  end
-  def mark
-    @path
-  end
-
-  def [](slot)
-    cget(slot)
-  end
-  def []=(slot, value)
-    configure(slot, value)
-    value
-  end
-
-  def cget(slot)
-    @t.image_cget(@index, slot)
-  end
-
-  def configure(slot, value=None)
-    @t.image_configure(@index, slot, value)
-    self
-  end
-#  def configure(slot, value)
-#    tk_call @t.path, 'image', 'configure', @index, "-#{slot}", value
-#  end
-
-  def configinfo(slot = nil)
-    @t.image_configinfo(@index, slot)
-  end
-
-  def current_configinfo(slot = nil)
-    @t.current_image_configinfo(@index, slot)
-  end
-
-  def image
-    img = tk_call_without_enc(@t.path, 'image', 'cget', @index, '-image')
-    TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
-  end
-
-  def image=(value)
-    tk_call_without_enc(@t.path, 'image', 'configure', @index, '-image', 
-                        _get_eval_enc_str(value))
-    #self
-    value
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textmark.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textmark.rb
deleted file mode 100644
index 650d95a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textmark.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-#
-# tk/textmark.rb - methods for treating text marks
-#
-require 'tk'
-require 'tk/text'
-
-class TkTextMark<TkObject
-  include TkText::IndexModMethods
-
-  TMarkID_TBL = TkCore::INTERP.create_table
-  Tk_TextMark_ID = ['mark'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ TMarkID_TBL.clear }
-
-  def TkTextMark.id2obj(text, id)
-    tpath = text.path
-    return id unless TMarkID_TBL[tpath]
-    TMarkID_TBL[tpath][id]? TMarkID_TBL[tpath][id]: id
-  end
-
-  def initialize(parent, index)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @parent = @t = parent
-    @tpath = parent.path
-    # @path = @id = Tk_TextMark_ID.join('')
-    @path = @id = Tk_TextMark_ID.join(TkCore::INTERP._ip_id_).freeze
-    TMarkID_TBL[@id] = self
-    TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
-    TMarkID_TBL[@tpath][@id] = self
-    Tk_TextMark_ID[1].succ!
-    tk_call_without_enc(@t.path, 'mark', 'set', @id, 
-                        _get_eval_enc_str(index))
-    @t._addtag id, self
-  end
-
-  def id
-    TkText::IndexString.new(@id)
-  end
-
-  def exist?
-    #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'names'))).find{|id| id == @id } )
-    if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'mark', 'names'), false, true).find{|id| id == @id } )
-      true
-    else
-      false
-    end
-  end
-
-=begin
-  # move to TkText::IndexModMethods module
-  def +(mod)
-    return chars(mod) if mod.kind_of?(Numeric)
-
-    mod = mod.to_s
-    if mod =~ /^\s*[+-]?\d/
-      TkText::IndexString.new(@id + ' + ' + mod)
-    else
-      TkText::IndexString.new(@id + ' ' + mod)
-    end
-  end
-
-  def -(mod)
-    return chars(-mod) if mod.kind_of?(Numeric)
-
-    mod = mod.to_s
-    if mod =~ /^\s*[+-]?\d/
-      TkText::IndexString.new(@id + ' - ' + mod)
-    elsif mod =~ /^\s*[-]\s+(\d.*)$/
-      TkText::IndexString.new(@id + ' - -' + $1)
-    else
-      TkText::IndexString.new(@id + ' ' + mod)
-    end
-  end
-=end
-
-  def pos
-    @t.index(@id)
-  end
-
-  def pos=(where)
-    set(where)
-  end
-
-  def set(where)
-    tk_call_without_enc(@t.path, 'mark', 'set', @id, 
-                        _get_eval_enc_str(where))
-    self
-  end
-
-  def unset
-    tk_call_without_enc(@t.path, 'mark', 'unset', @id)
-    self
-  end
-  alias destroy unset
-
-  def gravity
-    tk_call_without_enc(@t.path, 'mark', 'gravity', @id)
-  end
-
-  def gravity=(direction)
-    tk_call_without_enc(@t.path, 'mark', 'gravity', @id, direction)
-    #self
-    direction
-  end
-
-  def next(index = nil)
-    if index
-      @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', _get_eval_enc_str(index))))
-    else
-      @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', @id)))
-    end
-  end
-
-  def previous(index = nil)
-    if index
-      @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', _get_eval_enc_str(index))))
-    else
-      @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', @id)))
-    end
-  end
-end
-
-class TkTextNamedMark<TkTextMark
-  def self.new(parent, name, *args)
-    if TMarkID_TBL[parent.path] && TMarkID_TBL[parent.path][name]
-      return TMarkID_TBL[parent.path][name]
-    else
-      super(parent, name, *args)
-    end
-  end
-
-  def initialize(parent, name, index=nil)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @parent = @t = parent
-    @tpath = parent.path
-    @path = @id = name
-    TMarkID_TBL[@id] = self
-    TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
-    TMarkID_TBL[@tpath][@id] = self unless TMarkID_TBL[@tpath][@id]
-    tk_call_without_enc(@t.path, 'mark', 'set', @id, 
-                        _get_eval_enc_str(index)) if index
-    @t._addtag id, self
-  end
-end
-
-class TkTextMarkInsert<TkTextNamedMark
-  def self.new(parent,*args)
-    super(parent, 'insert', *args)
-  end
-end
-
-class TkTextMarkCurrent<TkTextNamedMark
-  def self.new(parent,*args)
-    super(parent, 'current', *args)
-  end
-end
-
-class TkTextMarkAnchor<TkTextNamedMark
-  def self.new(parent,*args)
-    super(parent, 'anchor', *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/texttag.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/texttag.rb
deleted file mode 100644
index cc2c562..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/texttag.rb
+++ /dev/null
@@ -1,279 +0,0 @@
-#
-# tk/texttag.rb - methods for treating text tags
-#
-require 'tk'
-require 'tk/text'
-require 'tk/tagfont'
-
-class TkTextTag<TkObject
-  include TkTreatTagFont
-  include TkText::IndexModMethods
-
-  TTagID_TBL = TkCore::INTERP.create_table
-  Tk_TextTag_ID = ['tag'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ TTagID_TBL.clear }
-
-  def TkTextTag.id2obj(text, id)
-    tpath = text.path
-    return id unless TTagID_TBL[tpath]
-    TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id
-  end
-
-  def initialize(parent, *args)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @parent = @t = parent
-    @tpath = parent.path
-    # @path = @id = Tk_TextTag_ID.join('')
-    @path = @id = Tk_TextTag_ID.join(TkCore::INTERP._ip_id_).freeze
-    # TTagID_TBL[@id] = self
-    TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
-    TTagID_TBL[@tpath][@id] = self
-    Tk_TextTag_ID[1].succ!
-    #tk_call @t.path, "tag", "configure", @id, *hash_kv(keys)
-    if args != []
-      keys = args.pop
-      if keys.kind_of?(Hash)
-        add(*args) if args != []
-        configure(keys)
-      else
-        args.push keys
-        add(*args)
-      end
-    end
-    @t._addtag id, self
-  end
-
-  def id
-    TkText::IndexString.new(@id)
-  end
-
-  def exist?
-    #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'names'))).find{|id| id == @id } )
-    if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'names'), false, true).find{|id| id == @id } )
-      true
-    else
-      false
-    end
-  end
-
-  def first
-    TkText::IndexString.new(@id + '.first')
-  end
-
-  def last
-    TkText::IndexString.new(@id + '.last')
-  end
-
-  def add(*indices)
-    tk_call_without_enc(@t.path, 'tag', 'add', @id, 
-                        *(indices.collect{|idx| _get_eval_enc_str(idx)}))
-    self
-  end
-
-  def remove(*indices)
-    tk_call_without_enc(@t.path, 'tag', 'remove', @id, 
-                        *(indices.collect{|idx| _get_eval_enc_str(idx)}))
-    self
-  end
-
-  def ranges
-    l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id))
-    r = []
-    while key=l.shift
-      r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
-    end
-    r
-  end
-
-  def nextrange(first, last=None)
-    simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id, 
-                                   _get_eval_enc_str(first), 
-                                   _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
-    }
-  end
-
-  def prevrange(first, last=None)
-    simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id, 
-                                   _get_eval_enc_str(first), 
-                                   _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
-    }
-  end
-
-  def [](key)
-    cget key
-  end
-
-  def []=(key,val)
-    configure key, val
-    val
-  end
-
-  def cget(key)
-    @t.tag_cget @id, key
-  end
-=begin
-  def cget(key)
-    case key.to_s
-    when 'text', 'label', 'show', 'data', 'file'
-      _fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#{key}"))
-    when 'font', 'kanjifont'
-      #fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#{key}"))
-      fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', 
-                                                      @id, '-font')))
-      unless fnt.kind_of?(TkFont)
-        fnt = tagfontobj(@id, fnt)
-      end
-      if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
-        # obsolete; just for compatibility
-        fnt.kanji_font
-      else
-        fnt
-      end
-    else
-      tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', 
-                                                @id, "-#{key}")))
-    end
-  end
-=end
-
-  def configure(key, val=None)
-    @t.tag_configure @id, key, val
-  end
-#  def configure(key, val=None)
-#    if key.kind_of?(Hash)
-#      tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key)
-#    else
-#      tk_call @t.path, 'tag', 'configure', @id, "-#{key}", val
-#    end
-#  end
-#  def configure(key, value)
-#    if value == FALSE
-#      value = "0"
-#    elsif value.kind_of?(Proc)
-#      value = install_cmd(value)
-#    end
-#    tk_call @t.path, 'tag', 'configure', @id, "-#{key}", value
-#  end
-
-  def configinfo(key=nil)
-    @t.tag_configinfo @id, key
-  end
-
-  def current_configinfo(key=nil)
-    @t.current_tag_configinfo @id, key
-  end
-
-  #def bind(seq, cmd=Proc.new, *args)
-  #  _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
-  #  self
-  #end
-  def bind(seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
-    self
-  end
-
-  #def bind_append(seq, cmd=Proc.new, *args)
-  #  _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
-  #  self
-  #end
-  def bind_append(seq, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
-    self
-  end
-
-  def bind_remove(seq)
-    _bind_remove([@t.path, 'tag', 'bind', @id], seq)
-    self
-  end
-
-  def bindinfo(context=nil)
-    _bindinfo([@t.path, 'tag', 'bind', @id], context)
-  end
-
-  def raise(above=None)
-    tk_call_without_enc(@t.path, 'tag', 'raise', @id, 
-                        _get_eval_enc_str(above))
-    self
-  end
-
-  def lower(below=None)
-    tk_call_without_enc(@t.path, 'tag', 'lower', @id, 
-                        _get_eval_enc_str(below))
-    self
-  end
-
-  def destroy
-    tk_call_without_enc(@t.path, 'tag', 'delete', @id)
-    TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath]
-    self
-  end
-end
-
-class TkTextNamedTag<TkTextTag
-  def self.new(parent, name, *args)
-    if TTagID_TBL[parent.path] && TTagID_TBL[parent.path][name]
-      tagobj = TTagID_TBL[parent.path][name]
-      if args != []
-        keys = args.pop
-        if keys.kind_of?(Hash)
-          tagobj.add(*args) if args != []
-          tagobj.configure(keys)
-        else
-          args.push keys
-          tagobj.add(*args)
-        end
-      end
-      return tagobj
-    else
-      super(parent, name, *args)
-    end
-  end
-
-  def initialize(parent, name, *args)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @parent = @t = parent
-    @tpath = parent.path
-    @path = @id = name
-    TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
-    TTagID_TBL[@tpath][@id] = self unless TTagID_TBL[@tpath][@id]
-    #if mode
-    #  tk_call @t.path, "addtag", @id, *args
-    #end
-    if args != []
-      keys = args.pop
-      if keys.kind_of?(Hash)
-        add(*args) if args != []
-        configure(keys)
-      else
-        args.push keys
-        add(*args)
-      end
-    end
-    @t._addtag id, self
-  end
-end
-
-class TkTextTagSel<TkTextNamedTag
-  def self.new(parent, *args)
-    super(parent, 'sel', *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textwindow.rb
deleted file mode 100644
index 605c40a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/textwindow.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-#
-# tk/textwindow.rb - treat Tk text window object
-#
-require 'tk'
-require 'tk/text'
-
-class TkTextWindow<TkObject
-  include TkText::IndexModMethods
-
-  def initialize(parent, index, keys = {})
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
-    #end
-    @t = parent
-    if index == 'end' || index == :end
-      @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                     'end - 1 chars'))
-    elsif index.kind_of?(TkTextMark)
-      if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end')
-        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                       'end - 1 chars'))
-      else
-        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
-                                                       index.path))
-      end
-    else
-      @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', _get_eval_enc_str(index)))
-    end
-    @path.gravity = 'left'
-    @index = @path.path
-    keys = _symbolkey2str(keys)
-    @id = keys['window']
-    # keys['window'] = @id.epath if @id.kind_of?(TkWindow)
-    keys['window'] = _epath(@id) if @id
-    if keys['create']
-      @p_create = keys['create']
-      # if @p_create.kind_of?(Proc)
-      if TkComm._callback_entry?(@p_create)
-=begin
-        keys['create'] = install_cmd(proc{
-                                       @id = @p_create.call
-                                       if @id.kind_of?(TkWindow)
-                                         @id.epath
-                                       else
-                                         @id
-                                       end
-                                     })
-=end
-        keys['create'] = install_cmd(proc{@id = @p_create.call; _epath(@id)})
-      end
-    end
-    tk_call_without_enc(@t.path, 'window', 'create', @index, 
-                        *hash_kv(keys, true))
-    @path.gravity = 'right'
-  end
-
-  def id
-    TkText::IndexString.new(_epath(@id))
-  end
-  def mark
-    @path
-  end
-
-  def [](slot)
-    cget(slot)
-  end
-  def []=(slot, value)
-    configure(slot, value)
-    value
-  end
-
-  def cget(slot)
-    @t.window_cget(@index, slot)
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot = _symbolkey2str(slot)
-      if slot['window']
-        @id = slot['window'] 
-        # slot['window'] = @id.epath if @id.kind_of?(TkWindow)
-        slot['window'] = _epath(@id) if @id
-      end
-      if slot['create']
-        self.create=slot.delete('create')
-      end
-      if slot.size > 0
-        tk_call_without_enc(@t.path, 'window', 'configure', @index, 
-                            *hash_kv(slot, true))
-      end
-    else
-      if slot == 'window' || slot == :window
-        @id = value 
-        # value = @id.epath if @id.kind_of?(TkWindow)
-        value = _epath(@id) if @id
-      end
-      if slot == 'create' || slot == :create
-        self.create=value
-      else
-        tk_call_without_enc(@t.path, 'window', 'configure', @index, 
-                            "-#{slot}", _get_eval_enc_str(value))
-      end
-    end
-    self
-  end
-
-  def configinfo(slot = nil)
-    @t.window_configinfo(@index, slot)
-  end
-
-  def current_configinfo(slot = nil)
-    @t.current_window_configinfo(@index, slot)
-  end
-
-  def window
-    @id
-  end
-
-  def window=(value)
-    @id = value
-    # value = @id.epath if @id.kind_of?(TkWindow)
-    value = _epath(@id) if @id
-    tk_call_without_enc(@t.path, 'window', 'configure', @index, 
-                        '-window', _get_eval_enc_str(value))
-    value
-  end
-
-  def create
-    @p_create
-  end
-
-  def create=(value)
-    @p_create = value
-    # if @p_create.kind_of?(Proc)
-    if TkComm._callback_entry?(@p_create)
-      value = install_cmd(proc{
-                            @id = @p_create.call
-                            if @id.kind_of?(TkWindow)
-                              @id.epath
-                            else
-                              @id
-                            end
-                          })
-    end
-    tk_call_without_enc(@t.path, 'window', 'configure', @index, 
-                        '-create', _get_eval_enc_str(value))
-    value
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/timer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/timer.rb
deleted file mode 100644
index f7faa37..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/timer.rb
+++ /dev/null
@@ -1,634 +0,0 @@
-#
-#   tk/timer.rb : methods for Tcl/Tk after command
-#
-#   $Id: timer.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-require 'tk'
-
-class TkTimer
-  include TkCore
-  extend TkCore
-
-  TkCommandNames = ['after'.freeze].freeze
-
-  Tk_CBID = ['a'.freeze, '00000'.taint].freeze
-  Tk_CBTBL = {}.taint
-
-  TkCore::INTERP.add_tk_procs('rb_after', 'id', <<-'EOL')
-    if {[set st [catch {eval {ruby_cmd TkTimer callback} $id} ret]] != 0} {
-        return -code $st $ret
-    } {
-        return $ret
-    }
-  EOL
-
-  DEFAULT_IGNORE_EXCEPTIONS = [ NameError, RuntimeError ].freeze
-
-  ###############################
-  # class methods
-  ###############################
-  def self.start(*args, &b)
-    self.new(*args, &b).start
-  end
-
-  def self.callback(obj_id)
-    ex_obj = Tk_CBTBL[obj_id]
-    return "" if ex_obj == nil; # canceled
-    ex_obj.cb_call
-  end
-
-  def self.info(obj = nil)
-    if obj
-      if obj.kind_of?(TkTimer)
-        if obj.after_id
-          inf = tk_split_list(tk_call_without_enc('after','info',obj.after_id))
-          [Tk_CBTBL[inf[0][1]], inf[1]]
-        else
-          nil
-        end
-      else
-        fail ArgumentError, "TkTimer object is expected"
-      end
-    else
-      tk_call_without_enc('after', 'info').split(' ').collect!{|id|
-        ret = Tk_CBTBL.find{|key,val| val.after_id == id}
-        (ret == nil)? id: ret[1]
-      }
-    end
-  end
-
-
-  ###############################
-  # instance methods
-  ###############################
-  def do_callback
-    @in_callback = true
-    @after_id = nil
-    begin
-      @return_value = @current_proc.call(self)
-    rescue SystemExit
-      exit(0)
-    rescue Interrupt
-      exit!(1)
-    rescue Exception => e
-      if @cancel_on_exception && 
-          @cancel_on_exception.find{|exc| e.kind_of?(exc)}
-        cancel
-        @return_value = e
-        @in_callback = false
-        return e
-      else
-        fail e
-      end
-    end
-    if @set_next
-      set_next_callback(@current_args)
-    else
-      @set_next = true
-    end
-    @in_callback = false
-    @return_value
-  end
-
-  def set_callback(sleep, args=nil)
-    if TkCore::INTERP.deleted?
-      self.cancel
-      return self
-    end
-    @after_script = "rb_after #{@id}"
-    @after_id = tk_call_without_enc('after', sleep, @after_script)
-    @current_args = args
-    @current_script = [sleep, @after_script]
-    self
-  end
-
-  def set_next_callback(args)
-    if @running == false || @proc_max == 0 || @do_loop == 0
-      Tk_CBTBL.delete(@id) ;# for GC
-      @running = false
-      @wait_var.value = 0
-      return
-    end
-    if @current_pos >= @proc_max
-      if @do_loop < 0 || (@do_loop -= 1) > 0
-        @current_pos = 0
-      else
-        Tk_CBTBL.delete(@id) ;# for GC
-        @running = false
-        @wait_var.value = 0
-        return
-      end
-    end
-
-    @current_args = args
-
-    # if @sleep_time.kind_of?(Proc)
-    if TkComm._callback_entry?(@sleep_time)
-      sleep = @sleep_time.call(self)
-    else
-      sleep = @sleep_time
-    end
-    @current_sleep = sleep
-
-    cmd, *cmd_args = @loop_proc[@current_pos]
-    @current_pos += 1
-    @current_proc = cmd
-
-    set_callback(sleep, cmd_args)
-  end
-
-  def initialize(*args, &b)
-    # @id = Tk_CBID.join('')
-    @id = Tk_CBID.join(TkCore::INTERP._ip_id_)
-    Tk_CBID[1].succ!
-
-    @wait_var = TkVariable.new(0)
-
-    @cb_cmd = TkCore::INTERP.get_cb_entry(self.method(:do_callback))
-
-    @set_next = true
-
-    @init_sleep = 0
-    @init_proc = nil
-    @init_args = []
-
-    @current_script = []
-    @current_proc = nil
-    @current_args = nil
-    @return_value = nil
-
-    @sleep_time = 0
-    @current_sleep = 0
-    @loop_exec = 0
-    @do_loop = 0
-    @loop_proc = []
-    @proc_max = 0
-    @current_pos = 0
-
-    @after_id = nil
-    @after_script = nil
-
-    @cancel_on_exception = DEFAULT_IGNORE_EXCEPTIONS
-    # Unless @cancel_on_exception, Ruby/Tk shows an error dialog box when 
-    # an excepsion is raised on TkTimer callback procedure. 
-    # If @cancel_on_exception is an array of exception classes and the raised 
-    # exception is included in the array, Ruby/Tk cancels executing TkTimer 
-    # callback procedures silently (TkTimer#cancel is called and no dialog is 
-    # shown). 
-
-    if b
-      case args.size
-      when 0
-        add_procs(b)
-      when 1
-        args << -1 << b
-      else
-        args << b
-      end
-    end
-
-    set_procs(*args) if args != []
-
-    @running = false
-    @in_callback = false
-  end
-
-  attr :after_id
-  attr :after_script
-  attr :current_proc
-  attr :current_args
-  attr :current_sleep
-  alias :current_interval :current_sleep
-  attr :return_value
-
-  attr_accessor :loop_exec
-
-  def cb_call
-    @cb_cmd.call
-  end
-
-  def get_procs
-    [@init_sleep, @init_proc, @init_args, @sleep_time, @loop_exec, @loop_proc]
-  end
-
-  def current_status
-    [@running, @current_sleep, @current_proc, @current_args, 
-      @do_loop, @cancel_on_exception]
-  end
-
-  def cancel_on_exception?
-    @cancel_on_exception
-  end
-
-  def cancel_on_exception=(mode)
-    if mode.kind_of?(Array)
-      @cancel_on_exception = mode
-    elsif mode
-      @cancel_on_exception = DEFAULT_IGNORE_EXCEPTIONS
-    else
-      @cancel_on_exception = false
-    end
-    #self
-  end
-
-  def running?
-    @running
-  end
-
-  def loop_rest
-    @do_loop
-  end
-
-  def loop_rest=(rest)
-    @do_loop = rest
-    #self
-  end
-
-  def set_interval(interval)
-    #if interval != 'idle' && interval != :idle \
-    #  && !interval.kind_of?(Integer) && !interval.kind_of?(Proc)
-    if interval != 'idle' && interval != :idle \
-      && !interval.kind_of?(Integer) && !TkComm._callback_entry?(interval)
-      fail ArgumentError, "expect Integer or Proc"
-    end
-    @sleep_time = interval
-  end
-
-  def set_procs(interval, loop_exec, *procs)
-    #if interval != 'idle' && interval != :idle \
-    #   && !interval.kind_of?(Integer) && !interval.kind_of?(Proc)
-    if interval != 'idle' && interval != :idle \
-      && !interval.kind_of?(Integer) && !TkComm._callback_entry?(interval)
-      fail ArgumentError, "expect Integer or Proc for 1st argument"
-    end
-    @sleep_time = interval
-
-    @loop_proc = []
-    procs.each{|e|
-      # if e.kind_of?(Proc)
-      if TkComm._callback_entry?(e)
-        @loop_proc.push([e])
-      else
-        @loop_proc.push(e)
-      end
-    }
-    @proc_max = @loop_proc.size
-    @current_pos = 0
-
-    if loop_exec.kind_of?(Integer) && loop_exec < 0
-      @loop_exec = -1
-    elsif loop_exec == true
-      @loop_exec = -1
-    elsif loop_exec == nil || loop_exec == false || loop_exec == 0
-      @loop_exec = 0
-    else
-      if not loop_exec.kind_of?(Integer)
-        fail ArgumentError, "expect Integer for 2nd argument"
-      end
-      @loop_exec = loop_exec
-    end
-    @do_loop = @loop_exec
-
-    self
-  end
-
-  def add_procs(*procs)
-    procs.each{|e|
-      # if e.kind_of?(Proc)
-      if TkComm._callback_entry?(e)
-        @loop_proc.push([e])
-      else
-        @loop_proc.push(e)
-      end
-    }
-    @proc_max = @loop_proc.size
-
-    self
-  end
-
-  def delete_procs(*procs)
-    procs.each{|e|
-      # if e.kind_of?(Proc)
-      if TkComm._callback_entry?(e)
-        @loop_proc.delete([e])
-      else
-        @loop_proc.delete(e)
-      end
-    }
-    @proc_max = @loop_proc.size
-
-    cancel if @proc_max == 0
-
-    self
-  end
-
-  def delete_at(n)
-    @loop_proc.delete_at(n)
-    @proc_max = @loop_proc.size
-    cancel if @proc_max == 0
-    self
-  end
-
-  def set_start_proc(sleep=nil, init_proc=nil, *init_args, &b)
-    # set parameters for 'restart'
-    sleep = @init_sleep unless sleep
-
-    if sleep != 'idle' && sleep != :idle && !sleep.kind_of?(Integer)
-      fail ArgumentError, "expect Integer or 'idle' for 1st argument"
-    end
-
-    @init_sleep = sleep
-    @init_proc = init_proc
-    @init_args = init_args
-
-    @init_proc = b if !@init_proc && b
-    @init_proc = proc{|*args| } if @init_sleep > 0 && !@init_proc
-
-    self
-  end
-
-  def start(*init_args, &b)
-    return nil if @running
-
-    Tk_CBTBL[@id] = self
-    @do_loop = @loop_exec
-    @current_pos = 0
-    @return_value = nil
-    @after_id = nil
-
-    @init_sleep = 0
-    @init_proc  = nil
-    @init_args  = nil
-
-    argc = init_args.size
-    if argc > 0
-      sleep = init_args.shift
-      if sleep != 'idle' && sleep != :idle && !sleep.kind_of?(Integer)
-        fail ArgumentError, "expect Integer or 'idle' for 1st argument"
-      end
-      @init_sleep = sleep
-    end
-    @init_proc = init_args.shift if argc > 1
-    @init_args = init_args if argc > 2
-
-    @init_proc = b if !@init_proc && b
-    @init_proc = proc{|*args| } if @init_sleep > 0 && !@init_proc
-
-    @current_sleep = @init_sleep
-    @running = true
-    if @init_proc
-      # if not @init_proc.kind_of?(Proc)
-      if !TkComm._callback_entry?(@init_proc)
-        fail ArgumentError, "Argument '#{@init_proc}' need to be Proc"
-      end
-      @current_proc = @init_proc
-      set_callback(@init_sleep, @init_args)
-      @set_next = false if @in_callback
-    else
-      set_next_callback(@init_args)
-    end
-
-    self
-  end
-
-  def reset(*reset_args)
-    restart() if @running
-
-    if @init_proc
-      @return_value = @init_proc.call(self)
-    else
-      @return_value = nil
-    end
-
-    @current_pos   = 0
-    @current_args  = @init_args
-    @current_script = []
-
-    @set_next = false if @in_callback
-
-    self
-  end
-
-  def restart(*restart_args, &b)
-    cancel if @running
-    if restart_args == [] && !b
-      start(@init_sleep, @init_proc, *@init_args)
-    else
-      start(*restart_args, &b)
-    end
-  end
-
-  def cancel
-    @running = false
-    @wait_var.value = 0
-    tk_call 'after', 'cancel', @after_id if @after_id
-    @after_id = nil
-
-    Tk_CBTBL.delete(@id) ;# for GC
-    self
-  end
-  alias stop cancel
-
-  def continue(wait=nil)
-    fail RuntimeError, "is already running" if @running
-    return restart() if @current_script.empty?
-    sleep, cmd = @current_script
-    fail RuntimeError, "no procedure to continue" unless cmd
-    if wait
-      unless wait.kind_of?(Integer)
-        fail ArgumentError, "expect Integer for 1st argument"
-      end
-      sleep = wait
-    end
-    Tk_CBTBL[@id] = self
-    @running = true
-    @after_id = tk_call_without_enc('after', sleep, cmd)
-    self
-  end
-
-  def skip
-    fail RuntimeError, "is not running now" unless @running
-    cancel
-    Tk_CBTBL[@id] = self
-    @running = true
-    set_next_callback(@current_args)
-    self
-  end
-
-  def info
-    if @after_id
-      inf = tk_split_list(tk_call_without_enc('after', 'info', @after_id))
-      [Tk_CBTBL[inf[0][1]], inf[1]]
-    else
-      nil
-    end
-  end
-
-  def wait(on_thread = true, check_root = false)
-    if $SAFE >= 4
-      fail SecurityError, "can't wait timer at $SAFE >= 4"
-    end
-
-    unless @running
-      if @return_value.kind_of?(Exception)
-        fail @return_value 
-      else
-        return @return_value 
-      end
-    end
-
-    @wait_var.wait(on_thread, check_root)
-    if @return_value.kind_of?(Exception)
-      fail @return_value 
-    else
-      @return_value 
-    end
-  end
-  def eventloop_wait(check_root = false)
-    wait(false, check_root)
-  end
-  def thread_wait(check_root = false)
-    wait(true, check_root)
-  end
-  def tkwait(on_thread = true)
-    wait(on_thread, true)
-  end
-  def eventloop_tkwait
-    wait(false, true)
-  end
-  def thread_tkwait
-    wait(true, true)
-  end
-end
-
-TkAfter = TkTimer
-
-
-class TkRTTimer < TkTimer
-  DEFAULT_OFFSET_LIST_SIZE = 5
-
-  def initialize(*args, &b)
-    super(*args, &b)
-
-    @offset_list = Array.new(DEFAULT_OFFSET_LIST_SIZE){ [0, 0] }
-    @offset_s = 0
-    @offset_u = 0
-    @est_time = nil
-  end
-
-  def start(*args, &b)
-    return nil if @running
-    @est_time = nil
-    @cb_start_time = Time.now
-    super(*args, &b)
-  end
-
-  def cancel
-    super()
-    @est_time = nil
-    @cb_start_time = Time.now
-    self
-  end
-  alias stop cancel
-
-  def continue(wait=nil)
-    fail RuntimeError, "is already running" if @running
-    @cb_start_time = Time.now
-    super(wait)
-  end
-
-  def set_interval(interval)
-    super(interval)
-    @est_time = nil
-  end
-
-  def _offset_ave
-    size = 0
-    d_sec = 0; d_usec = 0
-    @offset_list.each_with_index{|offset, idx|
-      # weight = 1
-      weight = idx + 1
-      size += weight
-      d_sec += offset[0] * weight
-      d_usec += offset[1] * weight
-    }
-    offset_s, mod = d_sec.divmod(size)
-    offset_u = ((mod * 1000000 + d_usec) / size.to_f).round
-    [offset_s, offset_u]
-  end
-  private :_offset_ave
-
-  def set_next_callback(args)
-    if @running == false || @proc_max == 0 || @do_loop == 0
-      Tk_CBTBL.delete(@id) ;# for GC
-      @running = false
-      @wait_var.value = 0
-      return
-    end
-    if @current_pos >= @proc_max
-      if @do_loop < 0 || (@do_loop -= 1) > 0
-        @current_pos = 0
-      else
-        Tk_CBTBL.delete(@id) ;# for GC
-        @running = false
-        @wait_var.value = 0
-        return
-      end
-    end
-
-    @current_args = args
-
-    cmd, *cmd_args = @loop_proc[@current_pos]
-    @current_pos += 1
-    @current_proc = cmd
-
-    @offset_s, @offset_u = _offset_ave
-
-    if TkComm._callback_entry?(@sleep_time)
-      sleep = @sleep_time.call(self)
-    else
-      sleep = @sleep_time
-    end
-
-    if @est_time
-      @est_time = Time.at(@est_time.to_i, @est_time.usec + sleep*1000)
-    else
-      @est_time = Time.at(@cb_start_time.to_i, 
-                          @cb_start_time.usec + sleep*1000)
-    end
-
-    now = Time.now
-    real_sleep = ((@est_time.to_i - now.to_i + @offset_s)*1000.0 + 
-                  (@est_time.usec - now.usec + @offset_u)/1000.0).round
-    if real_sleep <= 0
-      real_sleep = 0
-      @offset_s = now.to_i
-      @offset_u = now.usec
-    end
-    @current_sleep = real_sleep
-
-    set_callback(real_sleep, cmd_args)
-  end
-
-  def cb_call
-    if @est_time
-      @offset_list.shift
-
-      @cb_start_time = Time.now
-
-      if @current_sleep == 0
-        @offset_list.push([
-                            @offset_s - @cb_start_time.to_i, 
-                            @offset_u - @cb_start_time.usec
-                          ])
-      else
-        @offset_list.push([
-                            @offset_s + (@est_time.to_i - @cb_start_time.to_i),
-                            @offset_u + (@est_time.usec - @cb_start_time.usec)
-                          ])
-      end
-    end
-
-    @cb_cmd.call
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/toplevel.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/toplevel.rb
deleted file mode 100644
index 5e199e1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/toplevel.rb
+++ /dev/null
@@ -1,257 +0,0 @@
-#
-# tk/toplevel.rb : treat toplevel widget
-#
-require 'tk'
-require 'tk/wm'
-require 'tk/menuspec'
-
-class TkToplevel<TkWindow
-  include Wm
-  include TkMenuSpec
-
-  TkCommandNames = ['toplevel'.freeze].freeze
-  WidgetClassName = 'Toplevel'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-################# old version
-#  def initialize(parent=nil, screen=nil, classname=nil, keys=nil)
-#    if screen.kind_of? Hash
-#      keys = screen.dup
-#    else
-#      @screen = screen
-#    end
-#    @classname = classname
-#    if keys.kind_of? Hash
-#      keys = keys.dup
-#      @classname = keys.delete('classname') if keys.key?('classname')
-#      @colormap  = keys.delete('colormap')  if keys.key?('colormap')
-#      @container = keys.delete('container') if keys.key?('container')
-#      @screen    = keys.delete('screen')    if keys.key?('screen')
-#      @use       = keys.delete('use')       if keys.key?('use')
-#      @visual    = keys.delete('visual')    if keys.key?('visual')
-#    end
-#    super(parent, keys)
-#  end
-#
-#  def create_self
-#    s = []
-#    s << "-class"     << @classname if @classname
-#    s << "-colormap"  << @colormap  if @colormap
-#    s << "-container" << @container if @container
-#    s << "-screen"    << @screen    if @screen 
-#    s << "-use"       << @use       if @use
-#    s << "-visual"    << @visual    if @visual
-#    tk_call 'toplevel', @path, *s
-#  end
-#################
-
-  def __boolval_optkeys
-    super() << 'container'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'screen'
-  end
-  private :__strval_optkeys
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    super().update('menu'=>proc{|v| window(v)})
-  end
-  private :__val2ruby_optkeys
-
-  def __methodcall_optkeys  # { key=>method, ... }
-    TOPLEVEL_METHODCALL_OPTKEYS
-  end
-  private :__methodcall_optkeys
-
-  def _wm_command_option_chk(keys)
-    keys = {} unless keys
-    new_keys = {}
-    wm_cmds = {}
-
-    conf_methods = _symbolkey2str(__methodcall_optkeys())
-
-    keys.each{|k,v|
-      if conf_methods.key?(k)
-        wm_cmds[conf_methods[k]] = v
-      elsif Wm.method_defined?(k)
-        case k
-        when 'screen','class','colormap','container','use','visual'
-          new_keys[k] = v
-        else
-          case self.method(k).arity
-          when -1,1
-            wm_cmds[k] = v
-          else
-            new_keys[k] = v
-          end
-        end
-      else
-        new_keys[k] = v
-      end
-    }
-    [new_keys, wm_cmds]
-  end
-  private :_wm_command_option_chk
-
-  def initialize(parent=nil, screen=nil, classname=nil, keys=nil)
-    my_class_name = nil
-    if self.class < WidgetClassNames[WidgetClassName]
-      my_class_name = self.class.name
-      my_class_name = nil if my_class_name == ''
-    end
-    if parent.kind_of? Hash
-      keys = _symbolkey2str(parent)
-      if keys.key?('classname')
-        keys['class'] = keys.delete('classname')
-      end
-      @classname = keys['class']
-      @colormap  = keys['colormap']
-      @container = keys['container']
-      @screen    = keys['screen']
-      @use       = keys['use']
-      @visual    = keys['visual']
-      if !@classname && my_class_name
-        keys['class'] = @classname = my_class_name 
-      end
-      if @classname.kind_of? TkBindTag
-        @db_class = @classname
-        @classname = @classname.id
-      elsif @classname
-        @db_class = TkDatabaseClass.new(@classname)
-      else
-        @db_class = self.class
-        @classname = @db_class::WidgetClassName
-      end
-      keys, cmds = _wm_command_option_chk(keys)
-      super(keys)
-      cmds.each{|k,v| 
-        if v.kind_of? Array
-          self.__send__(k,*v)
-        else
-          self.__send__(k,v)
-        end
-      }
-      return
-    end
-
-    if screen.kind_of? Hash
-      keys = screen
-    else
-      @screen = screen
-      if classname.kind_of? Hash
-        keys = classname
-      else
-        @classname = classname
-      end
-    end
-    if keys.kind_of? Hash
-      keys = _symbolkey2str(keys)
-      if keys.key?('classname')
-        keys['class'] = keys.delete('classname')
-      end
-      @classname = keys['class']  unless @classname
-      @colormap  = keys['colormap']
-      @container = keys['container']
-      @screen    = keys['screen'] unless @screen
-      @use       = keys['use']
-      @visual    = keys['visual']
-    else
-      keys = {}
-    end
-    if !@classname && my_class_name
-      keys['class'] = @classname = my_class_name 
-    end
-    if @classname.kind_of? TkBindTag
-      @db_class = @classname
-      @classname = @classname.id
-    elsif @classname
-      @db_class = TkDatabaseClass.new(@classname)
-    else
-      @db_class = self.class
-      @classname = @db_class::WidgetClassName
-    end
-    keys, cmds = _wm_command_option_chk(keys)
-    super(parent, keys)
-    cmds.each{|k,v| 
-      if v.kind_of? Array
-        self.send(k,*v)
-      else
-        self.send(k,v)
-      end
-    }
-  end
-
-  #def create_self(keys)
-  #  if keys and keys != None
-  #    tk_call_without_enc('toplevel', @path, *hash_kv(keys, true))
-  #  else
-  #    tk_call_without_enc('toplevel', @path)
-  #  end
-  #end
-  #private :create_self
-
-  def specific_class
-    @classname
-  end
-
-  def add_menu(menu_info, tearoff=false, opts=nil)
-    # See tk/menuspec.rb for menu_info.
-    # opts is a hash of default configs for all of cascade menus. 
-    # Configs of menu_info can override it. 
-    if tearoff.kind_of?(Hash)
-      opts = tearoff
-      tearoff = false
-    end
-    _create_menubutton(self, menu_info, tearoff, opts)
-  end
-
-  def add_menubar(menu_spec, tearoff=false, opts=nil)
-    # See tk/menuspec.rb for menu_spec.
-    # opts is a hash of default configs for all of cascade menus.
-    # Configs of menu_spec can override it. 
-    menu_spec.each{|info| add_menu(info, tearoff, opts)}
-    self.menu
-  end
-
-  def self.database_class
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      self
-    else
-      TkDatabaseClass.new(self.name)
-    end
-  end
-  def self.database_classname
-    self.database_class.name
-  end
-
-  def self.bind(*args, &b)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args, &b)
-    else
-      TkDatabaseClass.new(self.name).bind(*args, &b)
-    end
-  end
-  def self.bind_append(*args, &b)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args, &b)
-    else
-      TkDatabaseClass.new(self.name).bind_append(*args, &b)
-    end
-  end
-  def self.bind_remove(*args)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args)
-    else
-      TkDatabaseClass.new(self.name).bind_remove(*args)
-    end
-  end
-  def self.bindinfo(*args)
-    if self == WidgetClassNames[WidgetClassName] || self.name == ''
-      super(*args)
-    else
-      TkDatabaseClass.new(self.name).bindinfo(*args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/txtwin_abst.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/txtwin_abst.rb
deleted file mode 100644
index 540f806..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/txtwin_abst.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# tk/txtwin_abst.rb : TkTextWin abstruct class
-#
-require 'tk'
-
-class TkTextWin<TkWindow
-  TkCommandNames = [].freeze
-  #def create_self
-  #  fail RuntimeError, "TkTextWin is an abstract class"
-  #end
-  #private :create_self
-
-  def bbox(index)
-    list(tk_send_without_enc('bbox', index))
-  end
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-  def get(*index)
-    _fromUTF8(tk_send_without_enc('get', *index))
-  end
-  def insert(index, *args)
-    tk_send('insert', index, *args)
-    self
-  end
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-  def see(index)
-    tk_send_without_enc('see', index)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/validation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/validation.rb
deleted file mode 100644
index 0c5b5c6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/validation.rb
+++ /dev/null
@@ -1,376 +0,0 @@
-#
-#  tk/validation.rb - validation support module for entry, spinbox, and so on
-#
-require 'tk'
-
-module Tk
-  module ValidateConfigure
-    def self.__def_validcmd(scope, klass, keys=nil)
-      keys = klass._config_keys unless keys
-      keys.each{|key|
-        eval("def #{key}(*args, &b)
-                 __validcmd_call(#{klass.name}, '#{key}', *args, &b)
-              end", scope)
-      }
-    end
-
-    def __validcmd_call(klass, key, *args, &b)
-      return cget(key) if args.empty? && !b
-
-      cmd = (b)? proc(&b) : args.shift
-
-      if cmd.kind_of?(klass)
-        configure(key, cmd)
-      elsif !args.empty?
-        configure(key, [cmd, args])
-      else
-        configure(key, cmd)
-      end
-    end
-
-    def __validation_class_list
-      # maybe need to override
-      []
-    end
-
-    def __get_validate_key2class
-      k2c = {}
-      __validation_class_list.each{|klass|
-        klass._config_keys.each{|key|
-          k2c[key.to_s] = klass
-        }
-      }
-      k2c
-    end
-
-    def __conv_vcmd_on_hash_kv(keys)
-      key2class = __get_validate_key2class
-
-      keys = _symbolkey2str(keys)
-      key2class.each{|key, klass|
-        if keys[key].kind_of?(Array)
-          cmd, *args = keys[key]
-          keys[key] = klass.new(cmd, args.join(' '))
-        # elsif keys[key].kind_of?(Proc) ||  keys[key].kind_of?(Method)
-        elsif TkComm._callback_entry?(keys[key])
-          keys[key] = klass.new(keys[key])
-        end
-      }
-      keys
-    end
-
-    def create_self(keys)
-      super(__conv_vcmd_on_hash_kv(keys))
-    end
-    private :create_self
-
-    def configure(slot, value=TkComm::None)
-      if slot.kind_of?(Hash)
-        super(__conv_vcmd_on_hash_kv(slot))
-      else
-        super(__conv_vcmd_on_hash_kv(slot=>value))
-      end
-      self
-    end
-=begin
-    def configure(slot, value=TkComm::None)
-      key2class = __get_validate_key2class
-
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        key2class.each{|key, klass|
-          if slot[key].kind_of?(Array)
-            cmd, *args = slot[key]
-            slot[key] = klass.new(cmd, args.join(' '))
-          elsif slot[key].kind_of?(Proc) || slot[key].kind_of?(Method)
-            slot[key] = klass.new(slot[key])
-          end
-        }
-        super(slot)
-
-      else
-        slot = slot.to_s
-        if (klass = key2class[slot])
-          if value.kind_of?(Array)
-            cmd, *args = value
-            value = klass.new(cmd, args.join(' '))
-          elsif value.kind_of?(Proc) || value.kind_of?(Method)
-            value = klass.new(value)
-          end
-        end
-        super(slot, value)
-      end
-
-      self
-    end
-=end
-  end
-
-  module ItemValidateConfigure
-    def self.__def_validcmd(scope, klass, keys=nil)
-      keys = klass._config_keys unless keys
-      keys.each{|key|
-        eval("def item_#{key}(id, *args, &b)
-                 __item_validcmd_call(#{klass.name}, '#{key}', id, *args, &b)
-              end", scope)
-      }
-    end
-
-    def __item_validcmd_call(tagOrId, klass, key, *args, &b)
-      return itemcget(tagid(tagOrId), key) if args.empty? && !b
-
-      cmd = (b)? proc(&b) : args.shift
-
-      if cmd.kind_of?(klass)
-        itemconfigure(tagid(tagOrId), key, cmd)
-      elsif !args.empty?
-        itemconfigure(tagid(tagOrId), key, [cmd, args])
-      else
-        itemconfigure(tagid(tagOrId), key, cmd)
-      end
-    end
-
-    def __item_validation_class_list(id)
-      # maybe need to override
-      []
-    end
-
-    def __get_item_validate_key2class(id)
-      k2c = {}
-      __item_validation_class_list(id).each{|klass|
-        klass._config_keys.each{|key|
-          k2c[key.to_s] = klass
-        }
-      }
-    end
-
-    def __conv_item_vcmd_on_hash_kv(keys)
-      key2class = __get_item_validate_key2class(tagid(tagOrId))
-
-      keys = _symbolkey2str(keys)
-      key2class.each{|key, klass|
-        if keys[key].kind_of?(Array)
-          cmd, *args = keys[key]
-          keys[key] = klass.new(cmd, args.join(' '))
-        # elsif keys[key].kind_of?(Proc) || keys[key].kind_of?(Method)
-        elsif TkComm._callback_entry?(keys[key])
-          keys[key] = klass.new(keys[key])
-        end
-      }
-      keys
-    end
-
-    def itemconfigure(tagOrId, slot, value=TkComm::None)
-      if slot.kind_of?(Hash)
-        super(__conv_item_vcmd_on_hash_kv(slot))
-      else
-        super(__conv_item_vcmd_on_hash_kv(slot=>value))
-      end
-      self
-    end
-=begin
-    def itemconfigure(tagOrId, slot, value=TkComm::None)
-      key2class = __get_item_validate_key2class(tagid(tagOrId))
-
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        key2class.each{|key, klass|
-          if slot[key].kind_of?(Array)
-            cmd, *args = slot[key]
-            slot[key] = klass.new(cmd, args.join(' '))
-          elsif slot[key].kind_of?(Proc) ||  slot[key].kind_of?(Method)
-            slot[key] = klass.new(slot[key])
-          end
-        }
-        super(slot)
-
-      else
-        slot = slot.to_s
-        if (klass = key2class[slot])
-          if value.kind_of?(Array)
-            cmd, *args = value
-            value = klass.new(cmd, args.join(' '))
-          elsif value.kind_of?(Proc) || value.kind_of?(Method)
-            value = klass.new(value)
-          end
-        end
-        super(slot, value)
-      end
-
-      self
-    end
-=end
-  end
-end
-
-class TkValidateCommand
-  include TkComm
-  extend  TkComm
-
-  class ValidateArgs < TkUtil::CallbackSubst
-    KEY_TBL = [
-      [ ?d, ?n, :action ], 
-      [ ?i, ?x, :index ], 
-      [ ?s, ?e, :current ], 
-      [ ?v, ?s, :type ], 
-      [ ?P, ?e, :value ], 
-      [ ?S, ?e, :string ], 
-      [ ?V, ?s, :triggered ], 
-      [ ?W, ?w, :widget ], 
-      nil
-    ]
-
-    PROC_TBL = [
-      [ ?n, TkComm.method(:number) ], 
-      [ ?s, TkComm.method(:string) ], 
-      [ ?w, TkComm.method(:window) ], 
-
-      [ ?e, proc{|val|
-          #enc = Tk.encoding
-          enc = ((Tk.encoding)? Tk.encoding : Tk.encoding_system)
-          if enc
-            Tk.fromUTF8(TkComm::string(val), enc)
-          else
-            TkComm::string(val)
-          end
-        }
-      ], 
-
-      [ ?x, proc{|val|
-          idx = TkComm::number(val)
-          if idx < 0
-            nil
-          else
-            idx
-          end
-        }
-      ], 
-
-      nil
-    ]
-
-    _setup_subst_table(KEY_TBL, PROC_TBL);
-
-    #
-    # NOTE: The order of parameters which passed to callback procedure is 
-    #        <extra_arg>, <extra_arg>, ... , <subst_arg>, <subst_arg>, ...
-    #
-
-    #def self._get_extra_args_tbl
-    #  # return an array of convert procs
-    #  []
-    #end
-
-    def self.ret_val(val)
-      (val)? '1': '0'
-    end
-  end
-
-  ###############################################
-
-  def self._config_keys
-    # array of config-option key (string or symbol)
-    ['vcmd', 'validatecommand', 'invcmd', 'invalidcommand']
-  end
-
-  def _initialize_for_cb_class(klass, cmd = Proc.new, *args)
-    extra_args_tbl = klass._get_extra_args_tbl
-
-    if args.compact.size > 0
-      args = args.join(' ')
-      keys = klass._get_subst_key(args)
-      if cmd.kind_of?(String)
-        id = cmd
-      elsif cmd.kind_of?(TkCallbackEntry)
-        @id = install_cmd(cmd)
-      else
-        @id = install_cmd(proc{|*arg|
-             ex_args = []
-             extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)}
-             klass.ret_val(cmd.call(
-               *(ex_args.concat(klass.scan_args(keys, arg)))
-             ))
-        }) + ' ' + args
-      end
-    else
-      keys, args = klass._get_all_subst_keys
-      if cmd.kind_of?(String)
-        id = cmd
-      elsif cmd.kind_of?(TkCallbackEntry)
-        @id = install_cmd(cmd)
-      else
-        @id = install_cmd(proc{|*arg|
-             ex_args = []
-             extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)}
-             klass.ret_val(cmd.call(
-               *(ex_args << klass.new(*klass.scan_args(keys, arg)))
-             ))
-        }) + ' ' + args
-      end
-    end
-  end
-
-  def initialize(cmd = Proc.new, *args)
-    _initialize_for_cb_class(self.class::ValidateArgs, cmd, *args)
-  end
-
-  def to_eval
-    @id
-  end
-end
-
-module TkValidation
-  include Tk::ValidateConfigure
-
-  class ValidateCmd < TkValidateCommand
-    module Action
-      Insert = 1
-      Delete = 0
-      Others = -1
-      Focus  = -1
-      Forced = -1
-      Textvariable = -1
-      TextVariable = -1
-    end
-  end
-
-  #####################################
-
-  def __validation_class_list
-    super() << ValidateCmd
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, ValidateCmd)
-
-=begin
-  def validatecommand(cmd = Proc.new, args = nil)
-    if cmd.kind_of?(ValidateCmd)
-      configure('validatecommand', cmd)
-    elsif args
-      configure('validatecommand', [cmd, args])
-    else
-      configure('validatecommand', cmd)
-    end
-  end
-=end
-#  def validatecommand(*args, &b)
-#    __validcmd_call(ValidateCmd, 'validatecommand', *args, &b)
-#  end
-#  alias vcmd validatecommand
-
-=begin
-  def invalidcommand(cmd = Proc.new, args = nil)
-    if cmd.kind_of?(ValidateCmd)
-      configure('invalidcommand', cmd)
-    elsif args
-      configure('invalidcommand', [cmd, args])
-    else
-      configure('invalidcommand', cmd)
-    end
-  end
-=end
-#  def invalidcommand(*args, &b)
-#    __validcmd_call(ValidateCmd, 'invalidcommand', *args, &b)
-#  end
-#  alias invcmd invalidcommand
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/variable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/variable.rb
deleted file mode 100644
index e5cacad..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/variable.rb
+++ /dev/null
@@ -1,1651 +0,0 @@
-#
-# tk/variable.rb : treat Tk variable object
-#
-require 'tk'
-
-class TkVariable
-  include Tk
-  extend TkCore
-
-  include Comparable
-
-  #TkCommandNames = ['tkwait'.freeze].freeze
-  TkCommandNames = ['vwait'.freeze].freeze
-
-  #TkVar_CB_TBL = {}
-  #TkVar_ID_TBL = {}
-  TkVar_CB_TBL = TkCore::INTERP.create_table
-  TkVar_ID_TBL = TkCore::INTERP.create_table
-  Tk_VARIABLE_ID = ["v".freeze, "00000".taint].freeze
-
-  #TkCore::INTERP.add_tk_procs('rb_var', 'args', 
-  #     "ruby [format \"TkVariable.callback %%Q!%s!\" $args]")
-TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL')
-    if {[set st [catch {eval {ruby_cmd TkVariable callback} $args} ret]] != 0} {
-       set idx [string first "\n\n" $ret]
-       if {$idx > 0} {
-          global errorInfo
-          set tcl_backtrace $errorInfo
-          set errorInfo [string range $ret [expr $idx + 2] \
-                                           [string length $ret]]
-          append errorInfo "\n" $tcl_backtrace
-          bgerror [string range $ret 0 [expr $idx - 1]]
-       } else {
-          bgerror $ret
-       }
-       return ""
-       #return -code $st $ret
-    } else {
-        return $ret
-    }
-  EOL
-
-  #def TkVariable.callback(args)
-  def TkVariable.callback(id, name1, name2, op)
-    #name1,name2,op = tk_split_list(args)
-    #name1,name2,op = tk_split_simplelist(args)
-    if TkVar_CB_TBL[id]
-      #_get_eval_string(TkVar_CB_TBL[name1].trace_callback(name2,op))
-      begin
-        _get_eval_string(TkVar_CB_TBL[id].trace_callback(name2, op))
-      rescue SystemExit
-        exit(0)
-      rescue Interrupt
-        exit!(1)
-      rescue Exception => e
-        begin
-          msg = _toUTF8(e.class.inspect) + ': ' + 
-                _toUTF8(e.message) + "\n" + 
-                "\n---< backtrace of Ruby side >-----\n" + 
-                _toUTF8(e.backtrace.join("\n")) + 
-                "\n---< backtrace of Tk side >-------"
-          msg.instance_variable_set(:@encoding, 'utf-8')
-        rescue Exception
-          msg = e.class.inspect + ': ' + e.message + "\n" + 
-                "\n---< backtrace of Ruby side >-----\n" + 
-                e.backtrace.join("\n") + 
-                "\n---< backtrace of Tk side >-------"
-        end
-        fail(e, msg)
-      end
-=begin
-      begin
-        raise 'check backtrace'
-      rescue
-        # ignore backtrace before 'callback'
-        pos = -($!.backtrace.size)
-      end
-      begin
-        _get_eval_string(TkVar_CB_TBL[name1].trace_callback(name2,op))
-      rescue
-        trace = $!.backtrace
-        raise $!, "\n#{trace[0]}: #{$!.message} (#{$!.class})\n" + 
-                  "\tfrom #{trace[1..pos].join("\n\tfrom ")}"
-      end
-=end
-    else
-      ''
-    end
-  end
-
-  def self.new_hash(val = {})
-    if val.kind_of?(Hash)
-      self.new(val)
-    else
-      fail ArgumentError, 'Hash is expected'
-    end
-  end
-
-  #
-  # default_value is available only when the variable is an assoc array. 
-  #
-  def default_value(val=nil, &b)
-    if b
-      @def_default = :proc
-      @default_val = proc(&b)
-    else
-      @def_default = :val
-      @default_val = val
-    end
-    self
-  end
-  def set_default_value(val)
-    @def_default = :val
-    @default_val = val
-    self
-  end
-  alias default_value= set_default_value
-  def default_proc(cmd = Proc.new)
-    @def_default = :proc
-    @default_val = cmd
-    self
-  end
-
-  def undef_default
-    @default_val = nil
-    @def_default = false
-    self
-  end
-
-  def default_value_type
-    @type
-  end
-  def default_element_value_type(idxs)
-    if idxs.kind_of?(Array)
-      index = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',')
-    else
-      index = _get_eval_string(idxs, true)
-    end
-    @element_type[index]
-  end
-
-  def _set_default_value_type_core(type, idxs)
-    if type.kind_of?(Class)
-      if type == NilClass
-        type = nil
-      elsif type == Numeric
-        type = :numeric
-      elsif type == TrueClass || type == FalseClass
-        type = :bool
-      elsif type == String
-        type = :string
-      elsif type == Symbol
-        type = :symbol
-      elsif type == Array
-        type = :list
-      elsif type <= TkVariable
-        type = :variable
-      elsif type <= TkWindow
-        type = :window
-      elsif TkComm._callback_entry_class?(type)
-        type = :procedure
-      else
-        type = nil
-      end
-    else
-      case(type)
-      when nil
-        type = nil
-      when :numeric, 'numeric'
-        type = :numeric
-      when true, false, :bool, 'bool'
-        type = :bool
-      when :string, 'string'
-        type = :string
-      when :symbol, 'symbol'
-        type = :symbol
-      when :list, 'list'
-        type = :list
-      when :numlist, 'numlist'
-        type = :numlist
-      when :variable, 'variable'
-        type = :variable
-      when :window, 'window'
-        type = :window
-      when :procedure, 'procedure'
-        type = :procedure
-      else
-        return _set_default_value_type_core(type.class, idxs)
-      end
-    end
-    if idxs
-      if idxs.kind_of?(Array)
-        index = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',')
-      else
-        index = _get_eval_string(idxs, true)
-      end
-      @element_type[index] = type
-    else
-      @type = type
-    end
-    type
-  end
-  private :_set_default_value_type_core
-
-  def set_default_value_type(type)
-    _set_default_value_type_core(type, nil)
-    self
-  end
-  alias default_value_type= set_default_value_type
-
-  def set_default_element_value_type(idxs, type)
-    _set_default_value_type_core(type, idxs)
-    self
-  end
-
-  def _to_default_type(val, idxs = nil)
-    if idxs
-      if idxs.kind_of?(Array)
-        index = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',')
-      else
-        index = _get_eval_string(idxs, true)
-      end
-      type = @element_type[index]
-    else
-      type = @type
-    end
-    return val unless type
-    if val.kind_of?(Hash)
-      val.keys.each{|k| val[k] = _to_default_type(val[k], idxs) }
-      val
-    else
-      begin
-        case(type)
-        when :numeric
-          number(val)
-        when :bool
-          TkComm.bool(val)
-        when :string
-          val
-        when :symbol
-          val.intern
-        when :list
-          tk_split_simplelist(val)
-        when :numlist
-          tk_split_simplelist(val).collect!{|v| number(v)}
-        when :variable
-          TkVarAccess.new(val)
-        when :window
-          TkComm.window(val)
-        when :procedure
-          TkComm.procedure(val)
-        else
-          val
-        end
-      rescue
-        val
-      end
-    end
-  end
-  private :_to_default_type
-
-  def _to_default_element_type(idxs, val)
-    _to_default_type(val, idxs)
-  end
-  private :_to_default_element_type
-
-  def initialize(val="", type=nil)
-    # @id = Tk_VARIABLE_ID.join('')
-    begin
-      @id = Tk_VARIABLE_ID.join(TkCore::INTERP._ip_id_)
-      Tk_VARIABLE_ID[1].succ!
-    end until INTERP._invoke_without_enc('info', 'globals', @id).empty?
-
-    TkVar_ID_TBL[@id] = self
-
-    @var  = @id
-    @elem = nil
-
-    @def_default = false
-    @default_val = nil
-
-    @trace_var  = nil
-    @trace_elem = nil
-    @trace_opts = nil
-
-    @type = nil
-    var = self
-    @element_type = Hash.new{|k,v| var.default_value_type }
-
-    self.default_value_type = type
-
-    # teach Tk-ip that @id is global var
-    INTERP._invoke_without_enc('global', @id)
-    #INTERP._invoke('global', @id)
-
-    # create and init
-    if val.kind_of?(Hash)
-      # assoc-array variable
-      self[''] = 0
-      self.clear
-    end
-    self.value = val
-
-=begin
-    if val == []
-      # INTERP._eval(format('global %s; set %s(0) 0; unset %s(0)', 
-      #                     @id, @id, @id))
-    elsif val.kind_of?(Array)
-      a = []
-      # val.each_with_index{|e,i| a.push(i); a.push(array2tk_list(e))}
-      # s = '"' + a.join(" ").gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      val.each_with_index{|e,i| a.push(i); a.push(e)}
-      #s = '"' + array2tk_list(a).gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + array2tk_list(a).gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(format('global %s; array set %s %s', @id, @id, s))
-    elsif  val.kind_of?(Hash)
-      #s = '"' + val.to_a.collect{|e| array2tk_list(e)}.join(" ")\
-      #             .gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + val.to_a.collect{|e| array2tk_list(e)}.join(" ")\
-                   .gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(format('global %s; array set %s %s', @id, @id, s))
-    else
-      #s = '"' + _get_eval_string(val).gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(format('global %s; set %s %s', @id, @id, s))
-    end
-=end
-=begin
-    if  val.kind_of?(Hash)
-      #s = '"' + val.to_a.collect{|e| array2tk_list(e)}.join(" ")\
-      #             .gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + val.to_a.collect{|e| array2tk_list(e)}.join(" ")\
-                   .gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(Kernel.format('global %s; array set %s %s', @id, @id, s))
-    else
-      #s = '"' + _get_eval_string(val).gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(Kernel.format('global %s; set %s %s', @id, @id, s))
-    end
-=end
-  end
-
-  def wait(on_thread = false, check_root = false)
-    if $SAFE >= 4
-      fail SecurityError, "can't wait variable at $SAFE >= 4"
-    end
-    on_thread &= (Thread.list.size != 1)
-    if on_thread
-      if check_root
-        INTERP._thread_tkwait('variable', @id)
-      else
-        INTERP._thread_vwait(@id)
-      end
-    else 
-      if check_root
-        INTERP._invoke_without_enc('tkwait', 'variable', @id)
-      else
-        INTERP._invoke_without_enc('vwait', @id)
-      end
-    end
-  end
-  def eventloop_wait(check_root = false)
-    wait(false, check_root)
-  end
-  def thread_wait(check_root = false)
-    wait(true, check_root)
-  end
-  def tkwait(on_thread = true)
-    wait(on_thread, true)
-  end
-  def eventloop_tkwait
-    wait(false, true)
-  end
-  def thread_tkwait
-    wait(true, true)
-  end
-
-  def id
-    @id
-  end
-
-  def ref(*idxs)
-    # "#{@id}(#{idxs.collect{|idx| _get_eval_string(idx)}.join(',')})"
-    TkVarAccess.new("#{@id}(#{idxs.collect{|idx| _get_eval_string(idx)}.join(',')})")
-  end
-
-  def is_hash?
-    #ITNERP._eval("global #{@id}; array exist #{@id}") == '1'
-    INTERP._invoke_without_enc('global', @id)
-    # INTERP._invoke_without_enc('array', 'exist', @id) == '1'
-    TkComm.bool(INTERP._invoke_without_enc('array', 'exist', @id))
-  end
-
-  def is_scalar?
-    ! is_hash?
-  end
-
-  def exist?(*elems)
-    INTERP._invoke_without_enc('global', @id)
-    if elems.empty?
-      TkComm.bool(tk_call('info', 'exist', @id))
-    else
-      # array
-      index = elems.collect{|idx| _get_eval_string(idx, true)}.join(',')
-      TkComm.bool(tk_call('info', 'exist', "#{@id}")) && 
-        TkComm.bool(tk_call('info', 'exist', "#{@id}(#{index})"))
-    end
-  end
-
-  def keys
-    if (is_scalar?)
-      fail RuntimeError, 'cannot get keys from a scalar variable'
-    end
-    #tk_split_simplelist(INTERP._eval("global #{@id}; array get #{@id}"))
-    INTERP._invoke_without_enc('global', @id)
-    #tk_split_simplelist(INTERP._fromUTF8(INTERP._invoke_without_enc('array', 'names', @id)))
-    tk_split_simplelist(INTERP._invoke_without_enc('array', 'names', @id), 
-                        false, true)
-  end
-
-  def size
-    INTERP._invoke_without_enc('global', @id)
-    TkComm.number(INTERP._invoke_without_enc('array', 'size', @id))
-  end
-
-  def clear
-    if (is_scalar?)
-      fail RuntimeError, 'cannot clear a scalar variable'
-    end
-    keys.each{|k| unset(k)}
-    self
-  end
-
-  def update(hash)
-    if (is_scalar?)
-      fail RuntimeError, 'cannot update a scalar variable'
-    end
-    hash.each{|k,v| self[k] = v}
-    self
-  end
-
-unless const_defined?(:USE_TCLs_SET_VARIABLE_FUNCTIONS)
-  USE_TCLs_SET_VARIABLE_FUNCTIONS = true
-end
-
-if USE_TCLs_SET_VARIABLE_FUNCTIONS
-  ###########################################################################
-  # use Tcl function version of set tkvariable
-  ###########################################################################
-
-  def _value
-    #if INTERP._eval("global #{@id}; array exist #{@id}") == '1'
-    INTERP._invoke_without_enc('global', @id)
-    # if INTERP._invoke('array', 'exist', @id) == '1'
-    if TkComm.bool(INTERP._invoke('array', 'exist', @id))
-      #Hash[*tk_split_simplelist(INTERP._eval("global #{@id}; array get #{@id}"))]
-      Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', @id))]
-    else
-      _fromUTF8(INTERP._get_global_var(@id))
-    end
-  end
-
-  def value=(val)
-    val = val._value if !@type && @type != :variable && val.kind_of?(TkVariable)
-    if val.kind_of?(Hash)
-      self.clear
-      val.each{|k, v|
-        #INTERP._set_global_var2(@id, _toUTF8(_get_eval_string(k)), 
-        #                       _toUTF8(_get_eval_string(v)))
-        INTERP._set_global_var2(@id, _get_eval_string(k, true), 
-                                _get_eval_string(v, true))
-      }
-      self.value
-#    elsif val.kind_of?(Array)
-=begin
-      INTERP._set_global_var(@id, '')
-      val.each{|v|
-        #INTERP._set_variable(@id, _toUTF8(_get_eval_string(v)), 
-        INTERP._set_variable(@id, _get_eval_string(v, true), 
-                             TclTkLib::VarAccessFlag::GLOBAL_ONLY   | 
-                             TclTkLib::VarAccessFlag::LEAVE_ERR_MSG |
-                             TclTkLib::VarAccessFlag::APPEND_VALUE  | 
-                             TclTkLib::VarAccessFlag::LIST_ELEMENT)
-      }
-      self.value
-=end
-#      _fromUTF8(INTERP._set_global_var(@id, array2tk_list(val, true)))
-    else
-      #_fromUTF8(INTERP._set_global_var(@id, _toUTF8(_get_eval_string(val))))
-      _fromUTF8(INTERP._set_global_var(@id, _get_eval_string(val, true)))
-    end
-  end
-
-  def _element_value(*idxs)
-    index = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',')
-    begin
-      _fromUTF8(INTERP._get_global_var2(@id, index))
-    rescue => e
-      case @def_default
-      when :proc
-        @default_val.call(self, *idxs)
-      when :val
-        @default_val
-      else
-        fail e
-      end
-    end
-    #_fromUTF8(INTERP._get_global_var2(@id, index))
-    #_fromUTF8(INTERP._get_global_var2(@id, _toUTF8(_get_eval_string(index))))
-    #_fromUTF8(INTERP._get_global_var2(@id, _get_eval_string(index, true)))
-  end
-
-  def []=(*args)
-    val = args.pop
-    type = default_element_value_type(args)
-    val = val._value if !type && type != :variable && val.kind_of?(TkVariable)
-    index = args.collect{|idx| _get_eval_string(idx, true)}.join(',')
-    _fromUTF8(INTERP._set_global_var2(@id, index, _get_eval_string(val, true)))
-    #_fromUTF8(INTERP._set_global_var2(@id, _toUTF8(_get_eval_string(index)), 
-    #                                 _toUTF8(_get_eval_string(val))))
-    #_fromUTF8(INTERP._set_global_var2(@id, _get_eval_string(index, true), 
-    #                                 _get_eval_string(val, true)))
-  end
-
-  def unset(*elems)
-    if elems.empty?
-      INTERP._unset_global_var(@id)
-    else
-      index = elems.collect{|idx| _get_eval_string(idx, true)}.join(',')
-      INTERP._unset_global_var2(@id, index)
-    end
-  end
-  alias remove unset
-
-else
-  ###########################################################################
-  # use Ruby script version of set tkvariable (traditional methods)
-  ###########################################################################
-
-  def _value
-    begin
-      INTERP._eval(Kernel.format('global %s; set %s', @id, @id))
-      #INTERP._eval(Kernel.format('set %s', @id))
-      #INTERP._invoke_without_enc('set', @id)
-    rescue
-      if INTERP._eval(Kernel.format('global %s; array exists %s', 
-                            @id, @id)) != "1"
-      #if INTERP._eval(Kernel.format('array exists %s', @id)) != "1"
-      #if INTERP._invoke_without_enc('array', 'exists', @id) != "1"
-        fail
-      else
-        Hash[*tk_split_simplelist(INTERP._eval(Kernel.format('global %s; array get %s', @id, @id)))]
-        #Hash[*tk_split_simplelist(_fromUTF8(INTERP._invoke_without_enc('array', 'get', @id)))]
-      end
-    end
-  end
-
-  def value=(val)
-    val = val._value if !@type && @type != :variable && val.kind_of?(TkVariable)
-    begin
-      #s = '"' + _get_eval_string(val).gsub(/[\[\]$"]/, '\\\\\&') + '"'
-      s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-      INTERP._eval(Kernel.format('global %s; set %s %s', @id, @id, s))
-      #INTERP._eval(Kernel.format('set %s %s', @id, s))
-      #_fromUTF8(INTERP._invoke_without_enc('set', @id, _toUTF8(s)))
-    rescue
-      if INTERP._eval(Kernel.format('global %s; array exists %s', 
-                            @id, @id)) != "1"
-      #if INTERP._eval(Kernel.format('array exists %s', @id)) != "1"
-      #if INTERP._invoke_without_enc('array', 'exists', @id) != "1"
-        fail
-      else
-        if val == []
-          INTERP._eval(Kernel.format('global %s; unset %s; set %s(0) 0; unset %s(0)', @id, @id, @id, @id))
-          #INTERP._eval(Kernel.format('unset %s; set %s(0) 0; unset %s(0)', 
-          #                          @id, @id, @id))
-          #INTERP._invoke_without_enc('unset', @id)
-          #INTERP._invoke_without_enc('set', @id+'(0)', 0)
-          #INTERP._invoke_without_enc('unset', @id+'(0)')
-        elsif val.kind_of?(Array)
-          a = []
-          val.each_with_index{|e,i| a.push(i); a.push(array2tk_list(e, true))}
-          #s = '"' + a.join(" ").gsub(/[\[\]$"]/, '\\\\\&') + '"'
-          s = '"' + a.join(" ").gsub(/[\[\]$"\\]/, '\\\\\&') + '"'
-          INTERP._eval(Kernel.format('global %s; unset %s; array set %s %s', 
-                                     @id, @id, @id, s))
-          #INTERP._eval(Kernel.format('unset %s; array set %s %s', 
-          #                          @id, @id, s))
-          #INTERP._invoke_without_enc('unset', @id)
-          #_fromUTF8(INTERP._invoke_without_enc('array','set', @id, _toUTF8(s)))
-        elsif  val.kind_of?(Hash)
-          #s = '"' + val.to_a.collect{|e| array2tk_list(e)}.join(" ")\
-          #                      .gsub(/[\[\]$"]/, '\\\\\&') + '"'
-          s = '"' + val.to_a.collect{|e| array2tk_list(e, true)}.join(" ")\
-                                .gsub(/[\[\]$\\"]/, '\\\\\&') + '"'
-          INTERP._eval(Kernel.format('global %s; unset %s; array set %s %s', 
-                                     @id, @id, @id, s))
-          #INTERP._eval(Kernel.format('unset %s; array set %s %s', 
-          #                          @id, @id, s))
-          #INTERP._invoke_without_enc('unset', @id)
-          #_fromUTF8(INTERP._invoke_without_enc('array','set', @id, _toUTF8(s)))
-        else
-          fail
-        end
-      end
-    end
-  end
-
-  def _element_value(*idxs)
-    index = idxs.collect{|idx| _get_eval_string(idx)}.join(',')
-    begin
-      INTERP._eval(Kernel.format('global %s; set %s(%s)', @id, @id, index))
-    rescue => e
-      case @def_default
-      when :proc
-        @default_val.call(self, *idxs)
-      when :val
-        @default_val
-      else
-        fail e
-      end
-    end
-    #INTERP._eval(Kernel.format('global %s; set %s(%s)', @id, @id, index))
-    #INTERP._eval(Kernel.format('global %s; set %s(%s)', 
-    #                           @id, @id, _get_eval_string(index)))
-    #INTERP._eval(Kernel.format('set %s(%s)', @id, _get_eval_string(index)))
-    #INTERP._eval('set ' + @id + '(' + _get_eval_string(index) + ')')
-  end
-
-  def []=(*args)
-    val = args.pop
-    type = default_element_value_type(args)
-    val = val._value if !type && type != :variable && val.kind_of?(TkVariable)
-    index = args.collect{|idx| _get_eval_string(idx)}.join(',')
-    INTERP._eval(Kernel.format('global %s; set %s(%s) %s', @id, @id, 
-                              index, _get_eval_string(val)))
-    #INTERP._eval(Kernel.format('global %s; set %s(%s) %s', @id, @id, 
-    #                          _get_eval_string(index), _get_eval_string(val)))
-    #INTERP._eval(Kernel.format('set %s(%s) %s', @id, 
-    #                          _get_eval_string(index), _get_eval_string(val)))
-    #INTERP._eval('set ' + @id + '(' + _get_eval_string(index) + ') ' + 
-    #            _get_eval_string(val))
-  end
-
-  def unset(*elems)
-    if elems.empty?
-      INTERP._eval(Kernel.format('global %s; unset %s', @id, @id))
-      #INTERP._eval(Kernel.format('unset %s', @id))
-      #INTERP._eval('unset ' + @id)
-    else
-      index = elems.collect{|idx| _get_eval_string(idx, true)}.join(',')
-      INTERP._eval(Kernel.format('global %s; unset %s(%s)', @id, @id, index))
-      #INTERP._eval(Kernel.format('global %s; unset %s(%s)', 
-      #                           @id, @id, _get_eval_string(elem)))
-      #INTERP._eval(Kernel.format('unset %s(%s)', @id, tk_tcl2ruby(elem)))
-      #INTERP._eval('unset ' + @id + '(' + _get_eval_string(elem) + ')')
-    end
-  end
-  alias remove unset
-
-end
-
-  protected :_value, :_element_value
-
-  def value
-    _to_default_type(_value)
-  end
-
-  def [](*idxs)
-    _to_default_element_type(idxs, _element_value(*idxs))
-  end
-
-  def set_value(val)
-    self.value = val
-    self
-  end
-
-  def set_element_value(idxs, val)
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-
-  def set_value_type(val)
-    self.default_value_type = val.class
-    self.value = val
-    self
-  end
-
-  alias value_type= set_value_type
-
-  def set_element_value_type(idxs, val)
-    self.set_default_element_value_type(idxs, val.class)
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-
-  def numeric
-    number(_value)
-  end
-  def numeric_element(*idxs)
-    number(_element_value(*idxs))
-  end
-  def set_numeric(val)
-    case val
-    when Numeric
-      self.value=(val)
-    when TkVariable
-      self.value=(val.numeric)
-    else
-      raise ArgumentError, "Numeric is expected"
-    end
-    self
-  end
-  alias numeric= set_numeric
-  def set_numeric_element(idxs, val)
-    case val
-    when Numeric
-      val
-    when TkVariable
-      val = val.numeric
-    else
-      raise ArgumentError, "Numeric is expected"
-    end
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-  def set_numeric_type(val)
-    @type = :numeric
-    self.numeric=(val)
-    self
-  end
-  alias numeric_type= set_numeric_type
-  def set_numeric_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :numeric)
-    self.set_numeric_element(idxs, val)
-  end
-
-  def bool
-    TkComm.bool(_value)
-=begin
-    # see Tcl_GetBoolean man-page
-    case _value.downcase
-    when '0', 'false', 'no', 'off'
-      false
-    else
-      true
-    end
-=end
-  end
-  def bool_element(*idxs)
-    TkComm.bool(_element_value(*idxs))
-  end
-  def set_bool(val)
-    if ! val
-      self.value = '0'
-    else
-      case val.to_s.downcase
-      when 'false', '0', 'no', 'off'
-        self.value = '0'
-      else
-        self.value = '1'
-      end
-    end
-    self
-  end
-  alias bool= set_bool
-  def set_bool_element(idxs, val)
-    if ! val
-      val = '0'
-    else
-      case val.to_s.downcase
-      when 'false', '0', 'no', 'off'
-        val = '0'
-      else
-        val = '1'
-      end
-    end
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-  def set_bool_type(val)
-    @type = :bool
-    self.bool=(val)
-    self
-  end
-  alias bool_type= set_bool_type
-  def set_bool_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :bool)
-    self.set_bool_element(idxs, val)
-  end
-
-  def variable
-    # keeps a Tcl's variable name
-    TkVarAccess.new(self._value)
-  end
-  def variable_element(*idxs)
-    TkVarAccess.new(_element_value(*idxs))
-  end
-  def set_variable(var)
-    var = var.id if var.kind_of?(TkVariable)
-    self.value = var
-    self
-  end
-  alias variable= set_variable
-  def set_variable_element(idxs, var)
-    var = var.id if var.kind_of?(TkVariable)
-    if idxs.kind_of?(Array)
-      self[*idxs]=var
-    else
-      self[idxs]=var
-    end
-    self
-  end
-  def set_variable_type(var)
-    @type = :variable
-    var = var.id if var.kind_of?(TkVariable)
-    self.value = var
-    self
-  end
-  alias variable_type= set_variable_type
-  def set_variable_element_type(idxs, var)
-    self.set_default_element_value_type(idxs, :variable)
-    self.set_variable_element(idxs, var)
-  end
-
-  def window
-    TkComm.window(self._value)
-  end
-  def window_element(*idxs)
-    TkComm.window(_element_value(*idxs))
-  end
-  def set_window(win)
-    win = win._value if win.kind_of?(TkVariable)
-    self.value = win
-    self
-  end
-  alias window= set_window
-  def set_window_element(idxs, win)
-    win = win._value if win.kind_of?(TkVariable)
-    if idxs.kind_of?(Array)
-      self[*idxs]=win
-    else
-      self[idxs]=win
-    end
-    self
-  end
-  def set_window_type(win)
-    @type = :window
-    self.window=(win)
-    self
-  end
-  alias window_type= set_window_type
-  def set_window_element_type(idxs, win)
-    self.set_default_element_value_type(idxs, :window)
-    self.set_window_element(idxs, win)
-  end
-
-  def procedure
-    TkComm.procedure(self._value)
-  end
-  def procedure_element(*idxs)
-    TkComm.procedure(_element_value(*idxs))
-  end
-  def set_procedure(cmd)
-    self.value = cmd
-    self
-  end
-  alias procedure= set_procedure
-  def set_procedure_element(idxs, cmd)
-    cmd = cmd._value if cmd.kind_of?(TkVariable)
-    if idxs.kind_of?(Array)
-      self[*idxs]=cmd
-    else
-      self[idxs]=cmd
-    end
-    self
-  end
-  def set_procedure_type(cmd)
-    @type = :procedure
-    self.procedure=(cmd)
-    self
-  end
-  alias procedure_type= set_procedure_type
-  def set_procedure_element_type(idxs, cmd)
-    self.set_default_element_value_type(idxs, :procedure)
-    self.set_proceure_element(idxs, cmd)
-  end
-
-  def to_i
-    number(_value).to_i
-  end
-  def element_to_i(*idxs)
-    number(_element_value(*idxs)).to_i
-  end
-
-  def to_f
-    number(_value).to_f
-  end
-  def element_to_f(*idxs)
-    number(_element_value(*idxs)).to_f
-  end
-
-  def to_s
-    #string(value).to_s
-    _value
-  end
-  alias string to_s
-  def element_to_s(*idxs)
-    _element_value(*idxs)
-  end
-  def string_element(*idxs)
-    _element_value(*idxs)
-  end
-  def set_string(val)
-    val = val._value if val.kind_of?(TkVariable)
-    self.value=val
-    self
-  end
-  alias string= set_string
-  def set_string_element(idxs, val)
-    val = val._value if val.kind_of?(TkVariable)
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-  def set_string_type(val)
-    @type = :string
-    self.string=(val)
-    self
-  end
-  alias string_type= set_string_type
-  def set_string_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :string)
-    self.set_string_element(idxs, val)
-  end
-
-  def to_sym
-    _value.intern
-  end
-  alias symbol to_sym
-  def element_to_sym(*idxs)
-    _element_value(*idxs).intern
-  end
-  alias symbol_element element_to_sym
-  def set_symbol(val)
-    val = val._value if val.kind_of?(TkVariable)
-    self.value=val
-    self
-  end
-  alias symbol= set_symbol
-  def set_symbol_element(idxs, val)
-    val = val._value if val.kind_of?(TkVariable)
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-  def set_symbol_type(val)
-    @type = :symbol
-    self.value=(val)
-    self
-  end
-  alias symbol_type= set_symbol_type
-  def set_symbol_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :symbol)
-    self.set_symbol_element(idxs, val)
-  end
-
-  def list
-    #tk_split_list(value)
-    tk_split_simplelist(_value)
-  end
-  alias to_a list
-  def list_element(*idxs)
-    tk_split_simplelist(_element_value(*idxs))
-  end
-  alias element_to_a list_element
-
-  def numlist
-    list.collect!{|val| number(val)}
-  end
-  def numlist_element(*idxs)
-    list_element(*idxs).collect!{|val| number(val)}
-  end
-
-  def set_list(val)
-    case val
-    when Array
-      self.value=(val)
-    when TkVariable
-      self.value=(val.list)
-    else
-      raise ArgumentError, "Array is expected"
-    end
-    self
-  end
-  alias list= set_list
-
-  alias set_numlist set_list
-  alias numlist= set_numlist
-
-  def set_list_element(idxs, val)
-    case val
-    when Array
-      val
-    when TkVariable
-      val = val.list
-    else
-      raise ArgumentError, "Array is expected"
-    end
-    if idxs.kind_of?(Array)
-      self[*idxs]=val
-    else
-      self[idxs]=val
-    end
-    self
-  end
-  alias set_numlist_element set_list_element
-
-  def set_list_type(val)
-    @type = :list
-    self.list=(val)
-    self
-  end
-  alias list_type= set_list_type
-  def set_list_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :list)
-    self.set_list_element(idxs, val)
-  end
-  def set_numlist_type(val)
-    @type = :numlist
-    self.numlist=(val)
-    self
-  end
-  alias numlist_type= set_numlist_type
-  def set_numlist_element_type(idxs, val)
-    self.set_default_element_value_type(idxs, :numlist)
-    self.set_numlist_element(idxs, val)
-  end
-
-  def lappend(*elems)
-    tk_call('lappend', @id, *elems)
-    self
-  end
-  def element_lappend(idxs, *elems)
-    if idxs.kind_of?(Array)
-      idxs = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',')
-    end
-    tk_call('lappend', "#{@id}(#{idxs})", *elems)
-    self
-  end
-
-  def lindex(idx)
-    tk_call('lindex', self._value, idx)
-  end
-  alias lget lindex
-  def element_lindex(elem_idxs, idx)
-    if elem_idxs.kind_of?(Array)
-      val = _element_value(*elem_idxs)
-    else
-      val = _element_value(elem_idxs)
-    end
-    tk_call('lindex', val, idx)
-  end
-  alias element_lget element_lindex
-
-  def lget_i(idx)
-    number(lget(idx)).to_i
-  end
-  def element_lget_i(elem_idxs, idx)
-    number(element_lget(elem_idxs, idx)).to_i
-  end
-
-  def lget_f(idx)
-    number(lget(idx)).to_f
-  end
-  def element_lget_f(elem_idxs, idx)
-    number(element_lget(elem_idxs, idx)).to_f
-  end
-
-  def lset(idx, val)
-    tk_call('lset', @id, idx, val)
-    self
-  end
-  def element_lset(elem_idxs, idx, val)
-    if elem_idxs.kind_of?(Array)
-      idxs = elem_idxs.collect{|i| _get_eval_string(i, true)}.join(',')
-    end
-    tk_call('lset', "#{@id}(#{idxs})", idx, val)
-    self
-  end
-
-  def inspect
-    #Kernel.format "#<TkVariable: %s>", @id
-    '#<TkVariable: ' + @id + '>'
-  end
-
-  def coerce(other)
-    case other
-    when TkVariable
-      [other._value, self._value]
-    when String
-      [other, self.to_s]
-    when Symbol
-      [other, self.to_sym]
-    when Integer
-      [other, self.to_i]
-    when Float
-      [other, self.to_f]
-    when Array
-      [other, self.to_a]
-    else
-      [other, self._value]
-    end
-  end
-
-  def &(other)
-    if other.kind_of?(Array)
-      self.to_a & other.to_a
-    else
-      self.to_i & other.to_i
-    end
-  end
-  def |(other)
-    if other.kind_of?(Array)
-      self.to_a | other.to_a
-    else
-      self.to_i | other.to_i
-    end
-  end
-  def +(other)
-    case other
-    when Array
-      self.to_a + other
-    when String
-      self._value + other
-    else
-      begin
-        number(self._value) + other
-      rescue
-        self._value + other.to_s
-      end
-    end
-  end
-  def -(other)
-    if other.kind_of?(Array)
-      self.to_a - other
-    else
-      number(self._value) - other
-    end
-  end
-  def *(other)
-    num_or_str(self._value) * other.to_i
-    #begin
-    #  number(self._value) * other
-    #rescue
-    #  self._value * other
-    #end
-  end
-  def /(other)
-    number(self._value) / other
-  end
-  def %(other)
-    num_or_str(self._value) % other.to_i
-    #begin
-    #  number(self._value) % other
-    #rescue
-    #  self._value % other
-    #end
-  end
-  def **(other)
-    number(self._value) ** other
-  end
-  def =~(other)
-    self._value =~ other
-  end
-
-  def ==(other)
-    case other
-    when TkVariable
-      #self.equal?(other)
-      self._value == other._value
-    when String
-      self.to_s == other
-    when Symbol
-      self.to_sym == other
-    when Integer
-      self.to_i == other
-    when Float
-      self.to_f == other
-    when Array
-      self.to_a == other
-    when Hash
-      # false if self is not an assoc array
-      self._value == other
-    else
-      # false
-      self._value == _get_eval_string(other)
-    end
-  end
-
-  def zero?
-    numeric.zero?
-  end
-  def nonzero?
-    !(numeric.zero?)
-  end
-
-  def <=>(other)
-    if other.kind_of?(TkVariable)
-      begin
-        val = other.numeric
-        other = val
-      rescue
-        other = other._value
-      end
-    elsif other.kind_of?(Numeric)
-      begin
-        return self.numeric <=> other
-      rescue
-        return self._value <=> other.to_s
-      end
-    elsif other.kind_of?(Array)
-      return self.list <=> other
-    else
-      return self._value <=> other
-    end
-  end
-
-  def to_eval
-    @id
-  end
-
-  def trace_callback(elem, op)
-    if @trace_var.kind_of? Array
-      @trace_var.each{|m,e| e.call(self,elem,op) if m.index(op)}
-    end
-    if elem.kind_of?(String) && elem != ''
-      if @trace_elem.kind_of?(Hash) && @trace_elem[elem].kind_of?(Array)
-        @trace_elem[elem].each{|m,e| e.call(self,elem,op) if m.index(op)}
-      end
-    end
-  end
-
-  def trace(opts, cmd = Proc.new)
-    @trace_var = [] if @trace_var == nil
-    #opts = ['r','w','u'].find_all{|c| opts.index(c)}.join('')
-    opts = opts.to_s
-    opts = ['r','w','u'].find_all{|c| opts.index(c)}.join('')
-    @trace_var.unshift([opts,cmd])
-    if @trace_opts == nil
-      TkVar_CB_TBL[@id] = self
-      @trace_opts = opts.dup
-      Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                             'rb_var ' << @id)
-=begin
-      if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-        # TCL_VERSION >= 8.4
-        Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                               @id, @trace_opts, 'rb_var')
-      else
-        # TCL_VERSION <= 8.3
-        Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 'rb_var')
-      end
-=end
-    else
-      newopts = @trace_opts.dup
-      #opts.each_byte{|c| newopts += c.chr unless newopts.index(c)}
-      opts.each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-      if newopts != @trace_opts
-        Tk.tk_call_without_enc('trace', 'vdelete', @id, @trace_opts, 
-                               'rb_var ' << @id)
-        @trace_opts.replace(newopts)
-        Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                               'rb_var ' << @id)
-=begin
-        if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-          # TCL_VERSION >= 8.4
-          Tk.tk_call_without_enc('trace', 'remove', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-          @trace_opts.replace(newopts)
-          Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        else
-          # TCL_VERSION <= 8.3
-          Tk.tk_call_without_enc('trace', 'vdelete', 
-                                 @id, @trace_opts, 'rb_var')
-          @trace_opts.replace(newopts)
-          Tk.tk_call_without_enc('trace', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        end
-=end
-      end
-    end
-    self
-  end
-
-  def trace_element(elem, opts, cmd = Proc.new)
-    if @elem
-      fail(RuntimeError, 
-           "invalid for a TkVariable which denotes an element of Tcl's array")
-    end
-    @trace_elem = {} if @trace_elem == nil
-    @trace_elem[elem] = [] if @trace_elem[elem] == nil
-    opts = opts.to_s
-    opts = ['r','w','u'].find_all{|c| opts.index(c)}.join('')
-    @trace_elem[elem].unshift([opts,cmd])
-    if @trace_opts == nil
-      TkVar_CB_TBL[@id] = self
-      @trace_opts = opts.dup
-      Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                             'rb_var ' << @id)
-=begin
-      if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-        # TCL_VERSION >= 8.4
-        Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                               @id, @trace_opts, 'rb_var')
-      else
-        # TCL_VERSION <= 8.3
-        Tk.tk_call_without_enc('trace', 'variable', 
-                               @id, @trace_opts, 'rb_var')
-      end
-=end
-    else
-      newopts = @trace_opts.dup
-      # opts.each_byte{|c| newopts += c.chr unless newopts.index(c)}
-      opts.each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-      if newopts != @trace_opts
-        Tk.tk_call_without_enc('trace', 'vdelete', @id, @trace_opts, 
-                               'rb_var ' << @id)
-        @trace_opts.replace(newopts)
-        Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                               'rb_var ' << @id)
-=begin
-        if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-          # TCL_VERSION >= 8.4
-          Tk.tk_call_without_enc('trace', 'remove', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-          @trace_opts.replace(newopts)
-          Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        else
-          # TCL_VERSION <= 8.3
-          Tk.tk_call_without_enc('trace', 'vdelete', 
-                                 @id, @trace_opts, 'rb_var')
-          @trace_opts.replace(newopts)
-          Tk.tk_call_without_enc('trace', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        end
-=end
-      end
-    end
-    self
-  end
-
-  def trace_vinfo
-    return [] unless @trace_var
-    @trace_var.dup
-  end
-
-  def _trace_vinfo_for_element(elem)
-    if @elem
-      fail(RuntimeError, 
-           "invalid for a TkVariable which denotes an element of Tcl's array")
-    end
-    return [] unless @trace_elem
-    return [] unless @trace_elem[elem]
-    @trace_elem[elem].dup
-  end
-
-  def trace_vdelete(opts,cmd)
-    return self unless @trace_var.kind_of? Array
-    opts = opts.to_s
-    opts = ['r','w','u'].find_all{|c| opts.index(c)}.join('')
-    idx = -1
-    newopts = ''
-    @trace_var.each_with_index{|e,i| 
-      if idx < 0 && e[0] == opts && e[1] == cmd
-        idx = i
-        next
-      end
-      # e[0].each_byte{|c| newopts += c.chr unless newopts.index(c)}
-      e[0].each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-    }
-    if idx >= 0
-      @trace_var.delete_at(idx) 
-    else
-      return self
-    end
-
-    @trace_elem.each{|elem|
-      @trace_elem[elem].each{|e|
-        # e[0].each_byte{|c| newopts += c.chr unless newopts.index(c)}
-        e[0].each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-      }
-    }
-
-    newopts = newopts.to_s
-    newopts = ['r','w','u'].find_all{|c| newopts.index(c)}.join('')
-    if newopts != @trace_opts
-      Tk.tk_call_without_enc('trace', 'vdelete', @id, @trace_opts, 
-                             'rb_var ' << @id)
-=begin
-      if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-        # TCL_VERSION >= 8.4
-        Tk.tk_call_without_enc('trace', 'remove', 'variable', 
-                               @id, @trace_opts, 'rb_var')
-      else
-        # TCL_VERSION <= 8.3
-        Tk.tk_call_without_enc('trace', 'vdelete', 
-                               @id, @trace_opts, 'rb_var')
-      end
-=end
-      @trace_opts.replace(newopts)
-      if @trace_opts != ''
-        Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                               'rb_var ' << @id)
-=begin
-        if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-          # TCL_VERSION >= 8.4
-          Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        else
-          # TCL_VERSION <= 8.3
-          Tk.tk_call_without_enc('trace', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        end
-=end
-      end
-    end
-
-    self
-  end
-
-  def trace_vdelete_for_element(elem,opts,cmd)
-    if @elem
-      fail(RuntimeError, 
-           "invalid for a TkVariable which denotes an element of Tcl's array")
-    end
-    return self unless @trace_elem.kind_of? Hash
-    return self unless @trace_elem[elem].kind_of? Array
-    opts = opts.to_s
-    opts = ['r','w','u'].find_all{|c| opts.index(c)}.join('')
-    idx = -1
-    @trace_elem[elem].each_with_index{|e,i| 
-      if idx < 0 && e[0] == opts && e[1] == cmd
-        idx = i
-        next
-      end
-    }
-    if idx >= 0
-      @trace_elem[elem].delete_at(idx)
-    else
-      return self
-    end
-
-    newopts = ''
-    @trace_var.each{|e| 
-      # e[0].each_byte{|c| newopts += c.chr unless newopts.index(c)}
-      e[0].each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-    }
-    @trace_elem.each{|elem|
-      @trace_elem[elem].each{|e|
-        # e[0].each_byte{|c| newopts += c.chr unless newopts.index(c)}
-        e[0].each_byte{|c| newopts.concat(c.chr) unless newopts.index(c)}
-      }
-    }
-
-    newopts = newopts.to_s
-    newopts = ['r','w','u'].find_all{|c| newopts.index(c)}.join('')
-    if newopts != @trace_opts
-      Tk.tk_call_without_enc('trace', 'vdelete', @id, @trace_opts, 
-                             'rb_var ' << @id)
-=begin
-      if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-        # TCL_VERSION >= 8.4
-        Tk.tk_call_without_enc('trace', 'remove', 'variable', 
-                               @id, @trace_opts, 'rb_var')
-      else
-        # TCL_VERSION <= 8.3
-        Tk.tk_call_without_enc('trace', 'vdelete', 
-                               @id, @trace_opts, 'rb_var')
-      end
-=end
-      @trace_opts.replace(newopts)
-      if @trace_opts != ''
-        Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 
-                               'rb_var ' << @id)
-=begin
-        if /^(8\.([4-9]|[1-9][0-9])|9\.|[1-9][0-9])/ =~ Tk::TCL_VERSION
-          # TCL_VERSION >= 8.4
-          Tk.tk_call_without_enc('trace', 'add', 'variable', 
-                                 @id, @trace_opts, 'rb_var')
-        else
-          # TCL_VERSION <= 8.3
-          Tk.tk_call_without_enc('trace', 'variable', @id, 
-                                 @trace_opts, 'rb_var')
-        end
-=end
-      end
-    end
-
-    self
-  end
-end
-
-class TkVarAccess<TkVariable
-  def self.new(name, *args)
-    if name.kind_of?(TkVariable)
-      name.value = args[0] unless args.empty?
-      return name 
-    end
-
-    if v = TkVar_ID_TBL[name]
-      v.value = args[0] unless args.empty?
-      return v
-    end
-
-    super(name, *args)
-  end
-
-  def self.new_hash(name, *args)
-    if name.kind_of?(TkVariable)
-      unless name.is_hash?
-        fail ArgumentError, "already exist as a scalar variable"
-      end
-      name.value = args[0] unless args.empty?
-      return name 
-    end
-
-    if v = TkVar_ID_TBL[name]
-      unless v.is_hash?
-        fail ArgumentError, "already exist as a scalar variable"
-      end
-      v.value = args[0] unless args.empty?
-      return v
-    end
-
-    INTERP._invoke_without_enc('global', name)
-    if args.empty? && INTERP._invoke_without_enc('array', 'exist', name) == '0'
-      self.new(name, {})  # force creating
-    else
-      self.new(name, *args)
-    end
-  end
-
-  def initialize(varname, val=nil)
-    @id = varname
-    TkVar_ID_TBL[@id] = self
-
-    @var  = @id
-    @elem = nil
-
-    @def_default = false
-    @default_val = nil
-
-    @trace_var  = nil
-    @trace_elem = nil
-    @trace_opts = nil
-
-    @type = nil
-    var = self
-    @element_type = Hash.new{|k,v| var.default_value_type }
-
-    # is an element?
-    if @id =~ /^([^(]+)\((.+)\)$/
-      # is an element --> var == $1, elem == $2
-      @var  = $1
-      @elem = $2
-    end
-
-    # teach Tk-ip that @id is global var
-    INTERP._invoke_without_enc('global', @var)
-=begin
-    begin
-      INTERP._invoke_without_enc('global', @id)
-    rescue => e
-      if @id =~ /^(.+)\([^()]+\)$/
-        # is an element --> varname == $1
-        INTERP._invoke_without_enc('global', $1)
-      else
-        fail e
-      end
-    end
-=end
-
-    if val
-      if val.kind_of?(Hash)
-        # assoc-array variable
-        self[''] = 0
-        self.clear
-      end
-      #s = '"' + _get_eval_string(val).gsub(/[\[\]$"]/, '\\\\\&') + '"' #"
-      #s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"' #"
-      #INTERP._eval(Kernel.format('global %s; set %s %s', @id, @id, s))
-      #INTERP._set_global_var(@id, _toUTF8(_get_eval_string(val)))
-      self.value = val
-    end
-  end
-end
-
-module Tk
-  begin
-    INTERP._invoke_without_enc('global', 'auto_path')
-    auto_path = INTERP._invoke('set', 'auto_path')
-  rescue => e
-    begin
-      INTERP._invoke_without_enc('global', 'env')
-      auto_path = INTERP._invoke('set', 'env(TCLLIBPATH)')
-    rescue => e
-      auto_path = Tk::LIBRARY
-    end
-  end
-
-  AUTO_PATH = TkVarAccess.new('auto_path', auto_path)
-
-=begin
-  AUTO_OLDPATH = tk_split_simplelist(INTERP._invoke('set', 'auto_oldpath'))
-  AUTO_OLDPATH.each{|s| s.freeze}
-  AUTO_OLDPATH.freeze
-=end
-
-  TCL_PACKAGE_PATH = TkVarAccess.new('tcl_pkgPath')
-  PACKAGE_PATH = TCL_PACKAGE_PATH
-
-  TCL_LIBRARY_PATH = TkVarAccess.new('tcl_libPath')
-  LIBRARY_PATH = TCL_LIBRARY_PATH
-
-  TCL_PRECISION = TkVarAccess.new('tcl_precision')
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/virtevent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/virtevent.rb
deleted file mode 100644
index d47e80a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/virtevent.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-#   tk/virtevent.rb : treats virtual events
-#                     1998/07/16 by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-require 'tk'
-
-class TkVirtualEvent<TkObject
-  extend Tk
-
-  TkCommandNames = ['event'.freeze].freeze
-
-  TkVirtualEventID = ["VirtEvent".freeze, "00000".taint].freeze
-  TkVirtualEventTBL = TkCore::INTERP.create_table
-
-  TkCore::INTERP.init_ip_env{ TkVirtualEventTBL.clear }
-
-  class PreDefVirtEvent<self
-    def self.new(event, *sequences)
-      if event =~ /^<(<.*>)>$/
-        event = $1
-      elsif event !~ /^<.*>$/
-        event = '<' + event + '>'
-      end
-      if TkVirtualEvent::TkVirtualEventTBL.has_key?(event)
-        TkVirtualEvent::TkVirtualEventTBL[event]
-      else
-        super(event, *sequences)
-      end
-    end
-
-    def initialize(event, *sequences)
-      @path = @id = event
-      TkVirtualEvent::TkVirtualEventTBL[@id] = self
-      add(*sequences)
-    end
-  end
-
-  def TkVirtualEvent.getobj(event)
-    obj = TkVirtualEventTBL[event]
-    if obj
-      obj
-    else
-      if tk_call_without_enc('event', 'info').index("<#{event}>")
-        PreDefVirtEvent.new(event)
-      else
-        fail ArgumentError, "undefined virtual event '<#{event}>'"
-      end
-    end
-  end
-
-  def TkVirtualEvent.info
-    tk_call_without_enc('event', 'info').split(/\s+/).collect!{|seq|
-      TkVirtualEvent.getobj(seq[1..-2])
-    }
-  end
-
-  def initialize(*sequences)
-    # @path = @id = '<' + TkVirtualEventID.join('') + '>'
-    @path = @id = '<' + TkVirtualEventID.join(TkCore::INTERP._ip_id_) + '>'
-    TkVirtualEventID[1].succ!
-    add(*sequences)
-  end
-
-  def add(*sequences)
-    if sequences != []
-      tk_call_without_enc('event', 'add', "<#{@id}>", 
-                          *(sequences.collect{|seq| 
-                              "<#{tk_event_sequence(seq)}>"
-                            }) )
-      TkVirtualEventTBL[@id] = self
-    end
-    self
-  end
-
-  def delete(*sequences)
-    if sequences == []
-      tk_call_without_enc('event', 'delete', "<#{@id}>")
-      TkVirtualEventTBL.delete(@id)
-    else
-      tk_call_without_enc('event', 'delete', "<#{@id}>", 
-                          *(sequences.collect{|seq| 
-                              "<#{tk_event_sequence(seq)}>"
-                            }) )
-      TkVirtualEventTBL.delete(@id) if info == []
-    end
-    self
-  end
-
-  def info
-    tk_call_without_enc('event','info',"<#{@id}>").split(/\s+/).collect!{|seq|
-      l = seq.scan(/<*[^<>]+>*/).collect!{|subseq|
-        case (subseq)
-        when /^<<[^<>]+>>$/
-          TkVirtualEvent.getobj(subseq[1..-2])
-        when /^<[^<>]+>$/
-          subseq[1..-2]
-        else
-          subseq.split('')
-        end
-      }.flatten
-      (l.size == 1) ? l[0] : l
-    }
-  end
-end
-
-TkNamedVirtualEvent = TkVirtualEvent::PreDefVirtEvent
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winfo.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winfo.rb
deleted file mode 100644
index c649b4a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winfo.rb
+++ /dev/null
@@ -1,392 +0,0 @@
-#
-# tk/winfo.rb : methods for winfo command
-#
-module TkWinfo
-end
-
-require 'tk'
-
-module TkWinfo
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['winfo'.freeze].freeze
-
-  def TkWinfo.atom(name, win=nil)
-    if win
-      number(tk_call_without_enc('winfo', 'atom', '-displayof', win, 
-                                 _get_eval_enc_str(name)))
-    else
-      number(tk_call_without_enc('winfo', 'atom', _get_eval_enc_str(name)))
-    end
-  end
-  def winfo_atom(name)
-    TkWinfo.atom(name, self)
-  end
-
-  def TkWinfo.atomname(id, win=nil)
-    if win
-      _fromUTF8(tk_call_without_enc('winfo', 'atomname', 
-                                    '-displayof', win, id))
-    else
-      _fromUTF8(tk_call_without_enc('winfo', 'atomname', id))
-    end
-  end
-  def winfo_atomname(id)
-    TkWinfo.atomname(id, self)
-  end
-
-  def TkWinfo.cells(win)
-    number(tk_call_without_enc('winfo', 'cells', win))
-  end
-  def winfo_cells
-    TkWinfo.cells self
-  end
-
-  def TkWinfo.children(win)
-    list(tk_call_without_enc('winfo', 'children', win))
-  end
-  def winfo_children
-    TkWinfo.children self
-  end
-
-  def TkWinfo.classname(win)
-    tk_call_without_enc('winfo', 'class', win)
-  end
-  def winfo_classname
-    TkWinfo.classname self
-  end
-  alias winfo_class winfo_classname
-
-  def TkWinfo.colormapfull(win)
-     bool(tk_call_without_enc('winfo', 'colormapfull', win))
-  end
-  def winfo_colormapfull
-    TkWinfo.colormapfull self
-  end
-
-  def TkWinfo.containing(rootX, rootY, win=nil)
-    if win
-      window(tk_call_without_enc('winfo', 'containing', 
-                                 '-displayof', win, rootX, rootY))
-    else
-      window(tk_call_without_enc('winfo', 'containing', rootX, rootY))
-    end
-  end
-  def winfo_containing(x, y)
-    TkWinfo.containing(x, y, self)
-  end
-
-  def TkWinfo.depth(win)
-    number(tk_call_without_enc('winfo', 'depth', win))
-  end
-  def winfo_depth
-    TkWinfo.depth self
-  end
-
-  def TkWinfo.exist?(win)
-    bool(tk_call_without_enc('winfo', 'exists', win))
-  end
-  def winfo_exist?
-    TkWinfo.exist? self
-  end
-
-  def TkWinfo.fpixels(win, dist)
-    number(tk_call_without_enc('winfo', 'fpixels', win, dist))
-  end
-  def winfo_fpixels(dist)
-    TkWinfo.fpixels self, dist
-  end
-
-  def TkWinfo.geometry(win)
-    tk_call_without_enc('winfo', 'geometry', win)
-  end
-  def winfo_geometry
-    TkWinfo.geometry self
-  end
-
-  def TkWinfo.height(win)
-    number(tk_call_without_enc('winfo', 'height', win))
-  end
-  def winfo_height
-    TkWinfo.height self
-  end
-
-  def TkWinfo.id(win)
-    tk_call_without_enc('winfo', 'id', win)
-  end
-  def winfo_id
-    TkWinfo.id self
-  end
-
-  def TkWinfo.interps(win=nil)
-    if win
-      #tk_split_simplelist(tk_call_without_enc('winfo', 'interps',
-      #                                        '-displayof', win))
-      tk_split_simplelist(tk_call_without_enc('winfo', 'interps',
-                                              '-displayof', win),
-                          false, true)
-    else
-      #tk_split_simplelist(tk_call_without_enc('winfo', 'interps'))
-      tk_split_simplelist(tk_call_without_enc('winfo', 'interps'), 
-                          false, true)
-    end
-  end
-  def winfo_interps
-    TkWinfo.interps self
-  end
-
-  def TkWinfo.mapped?(win)
-    bool(tk_call_without_enc('winfo', 'ismapped', win))
-  end
-  def winfo_mapped?
-    TkWinfo.mapped? self
-  end
-
-  def TkWinfo.manager(win)
-    tk_call_without_enc('winfo', 'manager', win)
-  end
-  def winfo_manager
-    TkWinfo.manager self
-  end
-
-  def TkWinfo.appname(win)
-    tk_call('winfo', 'name', win)
-  end
-  def winfo_appname
-    TkWinfo.appname self
-  end
-
-  def TkWinfo.parent(win)
-    window(tk_call_without_enc('winfo', 'parent', win))
-  end
-  def winfo_parent
-    TkWinfo.parent self
-  end
-
-  def TkWinfo.widget(id, win=nil)
-    if win
-      window(tk_call_without_enc('winfo', 'pathname', '-displayof', win, id))
-    else
-      window(tk_call_without_enc('winfo', 'pathname', id))
-    end
-  end
-  def winfo_widget(id)
-    TkWinfo.widget id, self
-  end
-
-  def TkWinfo.pixels(win, dist)
-    number(tk_call_without_enc('winfo', 'pixels', win, dist))
-  end
-  def winfo_pixels(dist)
-    TkWinfo.pixels self, dist
-  end
-
-  def TkWinfo.reqheight(win)
-    number(tk_call_without_enc('winfo', 'reqheight', win))
-  end
-  def winfo_reqheight
-    TkWinfo.reqheight self
-  end
-
-  def TkWinfo.reqwidth(win)
-    number(tk_call_without_enc('winfo', 'reqwidth', win))
-  end
-  def winfo_reqwidth
-    TkWinfo.reqwidth self
-  end
-
-  def TkWinfo.rgb(win, color)
-    list(tk_call_without_enc('winfo', 'rgb', win, color))
-  end
-  def winfo_rgb(color)
-    TkWinfo.rgb self, color
-  end
-
-  def TkWinfo.rootx(win)
-    number(tk_call_without_enc('winfo', 'rootx', win))
-  end
-  def winfo_rootx
-    TkWinfo.rootx self
-  end
-
-  def TkWinfo.rooty(win)
-    number(tk_call_without_enc('winfo', 'rooty', win))
-  end
-  def winfo_rooty
-    TkWinfo.rooty self
-  end
-
-  def TkWinfo.screen(win)
-    tk_call('winfo', 'screen', win)
-  end
-  def winfo_screen
-    TkWinfo.screen self
-  end
-
-  def TkWinfo.screencells(win)
-    number(tk_call_without_enc('winfo', 'screencells', win))
-  end
-  def winfo_screencells
-    TkWinfo.screencells self
-  end
-
-  def TkWinfo.screendepth(win)
-    number(tk_call_without_enc('winfo', 'screendepth', win))
-  end
-  def winfo_screendepth
-    TkWinfo.screendepth self
-  end
-
-  def TkWinfo.screenheight (win)
-    number(tk_call_without_enc('winfo', 'screenheight', win))
-  end
-  def winfo_screenheight
-    TkWinfo.screenheight self
-  end
-
-  def TkWinfo.screenmmheight(win)
-    number(tk_call_without_enc('winfo', 'screenmmheight', win))
-  end
-  def winfo_screenmmheight
-    TkWinfo.screenmmheight self
-  end
-
-  def TkWinfo.screenmmwidth(win)
-    number(tk_call_without_enc('winfo', 'screenmmwidth', win))
-  end
-  def winfo_screenmmwidth
-    TkWinfo.screenmmwidth self
-  end
-
-  def TkWinfo.screenvisual(win)
-    tk_call_without_enc('winfo', 'screenvisual', win)
-  end
-  def winfo_screenvisual
-    TkWinfo.screenvisual self
-  end
-
-  def TkWinfo.screenwidth(win)
-    number(tk_call_without_enc('winfo', 'screenwidth', win))
-  end
-  def winfo_screenwidth
-    TkWinfo.screenwidth self
-  end
-
-  def TkWinfo.server(win)
-    tk_call('winfo', 'server', win)
-  end
-  def winfo_server
-    TkWinfo.server self
-  end
-
-  def TkWinfo.toplevel(win)
-    window(tk_call_without_enc('winfo', 'toplevel', win))
-  end
-  def winfo_toplevel
-    TkWinfo.toplevel self
-  end
-
-  def TkWinfo.visual(win)
-    tk_call_without_enc('winfo', 'visual', win)
-  end
-  def winfo_visual
-    TkWinfo.visual self
-  end
-
-  def TkWinfo.visualid(win)
-    tk_call_without_enc('winfo', 'visualid', win)
-  end
-  def winfo_visualid
-    TkWinfo.visualid self
-  end
-
-  def TkWinfo.visualsavailable(win, includeids=false)
-    if includeids
-      list(tk_call_without_enc('winfo', 'visualsavailable', 
-                               win, "includeids"))
-    else
-      list(tk_call_without_enc('winfo', 'visualsavailable', win))
-    end
-  end
-  def winfo_visualsavailable(includeids=false)
-    TkWinfo.visualsavailable self, includeids
-  end
-
-  def TkWinfo.vrootheight(win)
-    number(tk_call_without_enc('winfo', 'vrootheight', win))
-  end
-  def winfo_vrootheight
-    TkWinfo.vrootheight self
-  end
-
-  def TkWinfo.vrootwidth(win)
-    number(tk_call_without_enc('winfo', 'vrootwidth', win))
-  end
-  def winfo_vrootwidth
-    TkWinfo.vrootwidth self
-  end
-
-  def TkWinfo.vrootx(win)
-    number(tk_call_without_enc('winfo', 'vrootx', win))
-  end
-  def winfo_vrootx
-    TkWinfo.vrootx self
-  end
-
-  def TkWinfo.vrooty(win)
-    number(tk_call_without_enc('winfo', 'vrooty', win))
-  end
-  def winfo_vrooty
-    TkWinfo.vrooty self
-  end
-
-  def TkWinfo.width(win)
-    number(tk_call_without_enc('winfo', 'width', win))
-  end
-  def winfo_width
-    TkWinfo.width self
-  end
-
-  def TkWinfo.x(win)
-    number(tk_call_without_enc('winfo', 'x', win))
-  end
-  def winfo_x
-    TkWinfo.x self
-  end
-
-  def TkWinfo.y(win)
-    number(tk_call_without_enc('winfo', 'y', win))
-  end
-  def winfo_y
-    TkWinfo.y self
-  end
-
-  def TkWinfo.viewable(win)
-    bool(tk_call_without_enc('winfo', 'viewable', win))
-  end
-  def winfo_viewable
-    TkWinfo.viewable self
-  end
-
-  def TkWinfo.pointerx(win)
-    number(tk_call_without_enc('winfo', 'pointerx', win))
-  end
-  def winfo_pointerx
-    TkWinfo.pointerx self
-  end
-
-  def TkWinfo.pointery(win)
-    number(tk_call_without_enc('winfo', 'pointery', win))
-  end
-  def winfo_pointery
-    TkWinfo.pointery self
-  end
-
-  def TkWinfo.pointerxy(win)
-    list(tk_call_without_enc('winfo', 'pointerxy', win))
-  end
-  def winfo_pointerxy
-    TkWinfo.pointerxy self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winpkg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winpkg.rb
deleted file mode 100644
index 737fb95..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/winpkg.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-#
-#   tk/winpkg.rb : methods for Tcl/Tk packages for Microsoft Windows
-#                     2000/11/22 by Hidetoshi Nagai <nagai at ai.kyutech.ac.jp>
-#
-#     ATTENTION !!
-#         This is NOT TESTED. Because I have no test-environment.
-#
-require 'tk'
-
-module TkWinDDE
-  extend Tk
-  extend TkWinDDE
-
-  TkCommandNames = ['dde'.freeze].freeze
-
-  PACKAGE_NAME = 'dde'.freeze
-  def self.package_name
-    PACKAGE_NAME
-  end
-
-  if self.const_defined? :FORCE_VERSION
-    tk_call_without_enc('package', 'require', 'dde', FORCE_VERSION)
-  else
-    tk_call_without_enc('package', 'require', 'dde')
-  end
-
-  #def servername(topic=None)
-  #  tk_call('dde', 'servername', topic)
-  #end
-  def servername(*args)
-    if args.size == 0
-      tk_call('dde', 'servername')
-    else
-      if args[-1].kind_of?(Hash)  # dde 1.2 +
-        keys = _symbolkey2str(args.pop)
-        force = (keys.delete('force'))? '-force': None
-        exact = (keys.delete('exact'))? '-exact': None
-        if keys.size == 0
-          tk_call('dde', 'servername', force, exact)
-        elsif args.size == 0
-          tk_call('dde', 'servername', force, exact, *hash_kv(keys))
-        else
-          tk_call('dde', 'servername', force, exact, 
-                  *((hash_kv(keys) << '--') + args))
-        end
-      else
-        tk_call('dde', 'servername', *args)
-      end
-    end
-  end
-
-  def execute(service, topic, data)
-    tk_call('dde', 'execute', service, topic, data)
-  end
-
-  def async_execute(service, topic, data)
-    tk_call('dde', '-async', 'execute', service, topic, data)
-  end
-
-  def poke(service, topic, item, data)
-    tk_call('dde', 'poke', service, topic, item, data)
-  end
-
-  def request(service, topic, item)
-    tk_call('dde', 'request', service, topic, item)
-  end
-
-  def binary_request(service, topic, item)
-    tk_call('dde', 'request', '-binary', service, topic, item)
-  end
-
-  def services(service, topic)
-    tk_call('dde', 'services', service, topic)
-  end
-
-  def eval(topic, cmd, *args)
-    tk_call('dde', 'eval', topic, cmd, *args)
-  end
-
-  def async_eval(topic, cmd, *args)
-    tk_call('dde', 'eval', -async, topic, cmd, *args)
-  end
-
-  module_function :servername, :execute, :async_execute, 
-                  :poke, :request, :services, :eval
-end
-
-module TkWinRegistry
-  extend Tk
-  extend TkWinRegistry
-
-  TkCommandNames = ['registry'.freeze].freeze
-
-  if self.const_defined? :FORCE_VERSION
-    tk_call('package', 'require', 'registry', FORCE_VERSION)
-  else
-    tk_call('package', 'require', 'registry')
-  end
-
-  def broadcast(keynam, timeout=nil)
-    if timeout
-      tk_call('registry', 'broadcast', keynam, '-timeout', timeout)
-    else
-      tk_call('registry', 'broadcast', keynam)
-    end
-  end
-
-  def delete(keynam, valnam=None)
-    tk_call('registry', 'delete', keynam, valnam)
-  end
-
-  def get(keynam, valnam)
-    tk_call('registry', 'get', keynam, valnam)
-  end
-
-  def keys(keynam, pattern=nil)
-    lst = tk_split_simplelist(tk_call('registry', 'keys', keynam))
-    if pattern
-      lst.find_all{|key| key =~ pattern}
-    else
-      lst
-    end
-  end
-
-  def set(keynam, valnam=None, data=None, dattype=None)
-    tk_call('registry', 'set', keynam, valnam, data, dattype)
-  end
-
-  def type(keynam, valnam)
-    tk_call('registry', 'type', keynam, valnam)
-  end
-
-  def values(keynam, pattern=nil)
-    lst = tk_split_simplelist(tk_call('registry', 'values', keynam))
-    if pattern
-      lst.find_all{|val| val =~ pattern}
-    else
-      lst
-    end
-  end
-
-  module_function :delete, :get, :keys, :set, :type, :values
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/wm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/wm.rb
deleted file mode 100644
index 1f432a3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/wm.rb
+++ /dev/null
@@ -1,360 +0,0 @@
-#
-# tk/wm.rb : methods for wm command
-#
-require 'tk'
-
-module Tk
-  module Wm
-    include TkComm
-
-    TkCommandNames = ['wm'.freeze].freeze
-
-    TOPLEVEL_METHODCALL_OPTKEYS = {}
-
-    def aspect(*args)
-      if args.length == 0
-        list(tk_call_without_enc('wm', 'aspect', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call('wm', 'aspect', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['aspect'] = 'aspect'
-
-    def attributes(slot=nil,value=None)
-      if slot == nil
-        lst = tk_split_list(tk_call('wm', 'attributes', path))
-        info = {}
-        while key = lst.shift
-          info[key[1..-1]] = lst.shift
-        end
-        info
-      elsif slot.kind_of? Hash
-        tk_call('wm', 'attributes', path, *hash_kv(slot))
-        self
-      elsif value == None
-        tk_call('wm', 'attributes', path, "-#{slot}")
-      else
-        tk_call('wm', 'attributes', path, "-#{slot}", value)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['attributes'] = 'attributes'
-
-    def client(name=None)
-      if name == None
-        tk_call('wm', 'client', path)
-      else
-        name = '' if name == nil
-        tk_call('wm', 'client', path, name)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['client'] = 'client'
-
-    def colormapwindows(*args)
-      if args.size == 0
-        list(tk_call_without_enc('wm', 'colormapwindows', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'colormapwindows', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['colormapwindows'] = 'colormapwindows'
-
-    def wm_command(value=nil)
-      if value
-        tk_call('wm', 'command', path, value)
-        self
-      else
-        #procedure(tk_call('wm', 'command', path))
-        tk_call('wm', 'command', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['wm_command'] = 'wm_command'
-
-    def deiconify(ex = true)
-      if ex
-        tk_call_without_enc('wm', 'deiconify', path)
-      else
-        self.iconify
-      end
-      self
-    end
-
-    def focusmodel(mode = nil)
-      if mode
-        tk_call_without_enc('wm', 'focusmodel', path, mode)
-        self
-      else
-        tk_call_without_enc('wm', 'focusmodel', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['focusmodel'] = 'focusmodel'
-
-    def frame
-      tk_call_without_enc('wm', 'frame', path)
-    end
-
-    def geometry(geom=nil)
-      if geom
-        tk_call_without_enc('wm', 'geometry', path, geom)
-        self
-      else
-        tk_call_without_enc('wm', 'geometry', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['geometry'] = 'geometry'
-
-    def wm_grid(*args)
-      if args.size == 0
-        list(tk_call_without_enc('wm', 'grid', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'grid', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['wm_grid'] = 'wm_grid'
-
-    def group(leader = nil)
-      if leader
-        tk_call('wm', 'group', path, leader)
-        self
-      else
-        window(tk_call('wm', 'group', path))
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['group'] = 'group'
-
-    def iconbitmap(bmp=nil)
-      if bmp
-        tk_call_without_enc('wm', 'iconbitmap', path, bmp)
-        self
-      else
-        image_obj(tk_call_without_enc('wm', 'iconbitmap', path))
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconbitmap'] = 'iconbitmap'
-
-    def iconphoto(*imgs)
-      if imgs.empty?
-        @wm_iconphoto = nil unless defined? @wm_iconphoto
-        return @wm_iconphoto 
-      end
-
-      imgs = imgs[0] if imgs.length == 1 && imgs[0].kind_of?(Array)
-      tk_call_without_enc('wm', 'iconphoto', path, *imgs)
-      @wm_iconphoto = imgs
-      self
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconphoto'] = 'iconphoto'
-
-    def iconphoto_default(*imgs)
-      imgs = imgs[0] if imgs.length == 1 && imgs[0].kind_of?(Array)
-      tk_call_without_enc('wm', 'iconphoto', path, '-default', *imgs)
-      self
-    end
-
-    def iconify(ex = true)
-      if ex
-        tk_call_without_enc('wm', 'iconify', path)
-      else
-        self.deiconify
-      end
-      self
-    end
-
-    def iconmask(bmp=nil)
-      if bmp
-        tk_call_without_enc('wm', 'iconmask', path, bmp)
-        self
-      else
-        image_obj(tk_call_without_enc('wm', 'iconmask', path))
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconmask'] = 'iconmask'
-
-    def iconname(name=nil)
-      if name
-        tk_call('wm', 'iconname', path, name)
-        self
-      else
-        tk_call('wm', 'iconname', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconname'] = 'iconname'
-
-    def iconposition(*args)
-      if args.size == 0
-        list(tk_call_without_enc('wm', 'iconposition', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'iconposition', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconposition'] = 'iconposition'
-
-    def iconwindow(win = nil)
-      if win
-        tk_call_without_enc('wm', 'iconwindow', path, win)
-        self
-      else
-        w = tk_call_without_enc('wm', 'iconwindow', path)
-        (w == '')? nil: window(w)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['iconwindow'] = 'iconwindow'
-
-    def maxsize(*args)
-      if args.size == 0
-        list(tk_call_without_enc('wm', 'maxsize', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'maxsize', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['maxsize'] = 'maxsize'
-
-    def minsize(*args)
-      if args.size == 0
-        list(tk_call_without_enc('wm', 'minsize', path))
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'minsize', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['minsize'] = 'minsize'
-
-    def overrideredirect(mode=None)
-      if mode == None
-        bool(tk_call_without_enc('wm', 'overrideredirect', path))
-      else
-        tk_call_without_enc('wm', 'overrideredirect', path, mode)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['overrideredirect'] = 'overrideredirect'
-
-    def positionfrom(who=None)
-      if who == None
-        r = tk_call_without_enc('wm', 'positionfrom', path)
-        (r == "")? nil: r
-      else
-        tk_call_without_enc('wm', 'positionfrom', path, who)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['positionfrom'] = 'positionfrom'
-
-    def protocol(name=nil, cmd=nil, &b)
-      if cmd
-        tk_call_without_enc('wm', 'protocol', path, name, cmd)
-        self
-      elsif b
-        tk_call_without_enc('wm', 'protocol', path, name, proc(&b))
-        self
-      elsif name
-        result = tk_call_without_enc('wm', 'protocol', path, name)
-        (result == "")? nil : tk_tcl2ruby(result)
-      else
-        tk_split_simplelist(tk_call_without_enc('wm', 'protocol', path))
-      end
-    end
-
-    def protocols(kv=nil)
-      unless kv
-        ret = {}
-        self.protocol.each{|name|
-          ret[name] = self.protocol(name)
-        }
-        return ret
-      end
-
-      unless kv.kind_of?(Hash)
-        fail ArgumentError, 'expect a hash of protocol=>command'
-      end
-      kv.each{|k, v| self.protocol(k, v)}
-      self
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['protocols'] = 'protocols'
-
-    def resizable(*args)
-      if args.length == 0
-        list(tk_call_without_enc('wm', 'resizable', path)).collect{|e| bool(e)}
-      else
-        args = args[0] if args.length == 1 && args[0].kind_of?(Array)
-        tk_call_without_enc('wm', 'resizable', path, *args)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['resizable'] = 'resizable'
-
-    def sizefrom(who=None)
-      if who == None
-        r = tk_call_without_enc('wm', 'sizefrom', path)
-        (r == "")? nil: r
-      else
-        tk_call_without_enc('wm', 'sizefrom', path, who)
-        self
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['sizefrom'] = 'sizefrom'
-
-    def stackorder
-      list(tk_call('wm', 'stackorder', path))
-    end
-
-    def stackorder_isabove(win)
-      bool(tk_call('wm', 'stackorder', path, 'isabove', win))
-    end
-
-    def stackorder_isbelow(win)
-      bool(tk_call('wm', 'stackorder', path, 'isbelow', win))
-    end
-
-    def state(st=nil)
-      if st
-        tk_call_without_enc('wm', 'state', path, st)
-        self
-      else
-        tk_call_without_enc('wm', 'state', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['state'] = 'state'
-
-    def title(str=nil)
-      if str
-        tk_call('wm', 'title', path, str)
-        self
-      else
-        tk_call('wm', 'title', path)
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['title'] = 'title'
-
-    def transient(master=nil)
-      if master
-        tk_call_without_enc('wm', 'transient', path, master)
-        self
-      else
-        window(tk_call_without_enc('wm', 'transient', path))
-      end
-    end
-    TOPLEVEL_METHODCALL_OPTKEYS['transient'] = 'transient'
-
-    def withdraw(ex = true)
-      if ex
-        tk_call_without_enc('wm', 'withdraw', path)
-      else
-        self.deiconify
-      end
-      self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/xim.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/xim.rb
deleted file mode 100644
index 0ac8559..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tk/xim.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# tk/xim.rb : control imput_method
-#
-require 'tk'
-
-module TkXIM
-  include Tk
-  extend Tk
-
-  TkCommandNames = ['imconfigure'.freeze].freeze
-
-  def TkXIM.useinputmethods(value = None, win = nil)
-    if value == None
-      if win
-        bool(tk_call_without_enc('tk', 'useinputmethods', 
-                                 '-displayof', win))
-      else
-        bool(tk_call_without_enc('tk', 'useinputmethods'))
-      end
-    else
-      if win
-        bool(tk_call_without_enc('tk', 'useinputmethods', 
-                                 '-displayof', win, value))
-      else
-        bool(tk_call_without_enc('tk', 'useinputmethods', value))
-      end
-    end
-  end
-
-  def TkXIM.useinputmethods_displayof(win, value = None)
-    TkXIM.useinputmethods(value, win)
-  end
-
-  def TkXIM.caret(win, keys=nil)
-    if keys
-      tk_call_without_enc('tk', 'caret', win, *hash_kv(keys))
-      self
-    else
-      lst = tk_split_list(tk_call_without_enc('tk', 'caret', win))
-      info = {}
-      while key = lst.shift
-        info[key[1..-1]] = lst.shift
-      end
-      info
-    end
-  end
-
-  def TkXIM.configure(win, slot, value=None)
-    begin
-      if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK
-        if slot.kind_of? Hash
-          tk_call('imconfigure', win, *hash_kv(slot))
-        else
-          tk_call('imconfigure', win, "-#{slot}", value)
-        end
-      end
-    rescue
-    end
-  end
-
-  def TkXIM.configinfo(win, slot=nil)
-    if TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      begin
-        if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK
-          if slot
-            conf = tk_split_list(tk_call('imconfigure', win, "-#{slot}"))
-            conf[0] = conf[0][1..-1]
-            conf
-          else
-            tk_split_list(tk_call('imconfigure', win)).collect{|conf|
-              conf[0] = conf[0][1..-1]
-              conf
-            }
-          end
-        else
-          []
-        end
-      rescue
-        []
-      end
-    else # ! TkComm::GET_CONFIGINFOwoRES_AS_ARRAY
-      TkXIM.current_configinfo(win, slot)
-    end
-  end
-
-  def TkXIM.current_configinfo(win, slot=nil)
-    begin
-      if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK
-        if slot
-          conf = tk_split_list(tk_call('imconfigure', win, "-#{slot}"))
-          { conf[0][1..-1] => conf[1] }
-        else
-          ret = {}
-          tk_split_list(tk_call('imconfigure', win)).each{|conf|
-            ret[conf[0][1..-1]] = conf[1]
-          }
-          ret
-        end
-      else
-        {}
-      end
-    rescue
-      {}
-    end
-  end
-
-  def useinputmethods(value=None)
-    TkXIM.useinputmethods(value, self)
-  end
-
-  def caret(keys=nil)
-    TkXIM.caret(self, keys=nil)
-  end
-
-  def imconfigure(slot, value=None)
-    TkXIM.configure(self, slot, value)
-  end
-
-  def imconfiginfo(slot=nil)
-    TkXIM.configinfo(self, slot)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkafter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkafter.rb
deleted file mode 100644
index f659458..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkafter.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkafter.rb - load tk/after.rb
-#
-require 'tk/timer'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkbgerror.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkbgerror.rb
deleted file mode 100644
index deba7a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkbgerror.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkbgerror.rb - load tk/bgerror.rb
-#
-require 'tk/bgerror'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkcanvas.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkcanvas.rb
deleted file mode 100644
index 9524614..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkcanvas.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkcanvas.rb - load tk/canvas.rb
-#
-require 'tk/canvas'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkclass.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkclass.rb
deleted file mode 100644
index b2f0a13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkclass.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-#               tkclass.rb - Tk classes
-#                       Date: 2000/11/27 09:23:36
-#                       by Yukihiro Matsumoto <matz at caelum.co.jp>
-#
-#                       $Id: tkclass.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require "tk"
-
-TopLevel = TkToplevel
-Frame = TkFrame
-Label = TkLabel
-Button = TkButton
-Radiobutton = TkRadioButton
-Checkbutton = TkCheckButton
-Message = TkMessage
-Entry = TkEntry
-Spinbox = TkSpinbox
-Text = TkText
-Scale = TkScale
-Scrollbar = TkScrollbar
-Listbox = TkListbox
-Menu = TkMenu
-Menubutton = TkMenubutton
-Canvas = TkCanvas
-Arc = TkcArc
-Bitmap = TkcBitmap
-Line = TkcLine
-Oval = TkcOval
-Polygon = TkcPolygon
-Rectangle = TkcRectangle
-TextItem = TkcText
-WindowItem = TkcWindow
-BitmapImage = TkBitmapImage
-PhotoImage = TkPhotoImage
-Selection = TkSelection
-Winfo = TkWinfo
-Pack = TkPack
-Grid = TkGrid
-Place = TkPlace
-Variable = TkVariable
-Font = TkFont
-VirtualEvent = TkVirtualEvent
-
-def Mainloop
-  Tk.mainloop
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkconsole.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkconsole.rb
deleted file mode 100644
index 9960ddb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkconsole.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkconsole.rb - load tk/console.rb
-#
-require 'tk/console'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkdialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkdialog.rb
deleted file mode 100644
index bec5e5d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkdialog.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkdialog.rb - load tk/dialog.rb
-#
-require 'tk/dialog'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkentry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkentry.rb
deleted file mode 100644
index 2dcfcab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkentry.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkentry.rb - load tk/entry.rb
-#
-require 'tk/entry'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS.rb
deleted file mode 100644
index 18d84c0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  ICONS support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/ICONS/setup.rb'
-
-# load library
-require 'tkextlib/ICONS/icons'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/icons.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/icons.rb
deleted file mode 100644
index b430bae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/icons.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-#  tkextlib/ICONS/icons.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/ICONS/setup.rb'
-
-# TkPackage.require('icons', '1.0')
-TkPackage.require('icons')
-
-module Tk
-  class ICONS < TkImage
-    extend Tk
-
-    PACKAGE_NAME = 'icons'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('icons')
-      rescue
-        ''
-      end
-    end
-
-    def self.create(*args)  # icon, icon, ..., ?option=>value, ...?
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        icons = simplelist(tk_call('::icons::icons', 'create', 
-                                   *(hash_kv(keys) << (args.flatten))))
-      else
-        icons = simplelist(tk_call('::icons::icons', 'create', 
-                                   args.flatten))
-      end
-
-      icons.collect{|icon| self.new(icon, :without_creating=>true)}
-    end
-
-    def self.delete(*icons)  # icon, icon, ...
-      icons = icons.flatten
-      return if icons.empty?
-      icons.map!{|icon|
-        if icon.kind_of?(Tk::ICONS)
-          Tk_IMGTBL.delete(icon.path)
-          icon.name
-        elsif icon.to_s =~ /^::icon::(.*)/
-          name = $1
-          Tk_IMGTBL.delete(icon)
-          name
-        else
-          Tk_IMGTBL.delete("::icon::#{icon}")
-          icon
-        end
-      }
-      tk_call('::icons::icons', 'delete', icons)
-    end
-
-    def self.query(*args)  # icon, icon, ..., ?option=>value, ...?
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        simplelist(tk_call('::icons::icons', 'query', 
-                           *(hash_kv(keys) << (args.flatten))))
-      else
-        simplelist(tk_call('::icons::icons', 'query', args.flatten))
-      end . map{|inf| list(inf) }
-    end
-
-    ##########################################
-
-    class << self
-      alias _new new
-
-      def new(name, keys=nil)
-        if obj = Tk_IMGTBL["::icon::#{name}"]
-          if keys
-            keys = _symbolkey2str(keys)
-            unless keys.delete('without_creating')
-              tk_call('::icons::icons', 'create', *(hash_kv(keys) << obj.name))
-            end
-          end
-        else
-          obj = _new(name, keys)
-        end
-        obj
-      end
-    end
-
-    ##########################################
-
-    def initialize(name, keys=nil)
-      if name.kind_of?(String) && name =~ /^::icon::(.+)$/
-          @name = $1
-          @path = name
-      else
-        @name = name.to_s
-        @path = "::icon::#{@name}"
-      end
-      keys = _symbolkey2str(keys)
-      unless keys.delete('without_creating')
-        tk_call('::icons::icons', 'create', *(hash_kv(keys) << @name))
-      end
-      Tk_IMGTBL[@path] = self
-    end
-
-    def name
-      @name
-    end
-
-    def delete
-      Tk_IMGTBL.delete(@path)
-      tk_call('::icons::icons', 'delete', @name)
-      self
-    end
-
-    def query(keys={})
-      list(simplelist(tk_call('::icons::icons', 'query', 
-                               *(hash_kv(keys) << @name))
-                      )[0])
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/ICONS/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/SUPPORT_STATUS b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/SUPPORT_STATUS
deleted file mode 100644
index 15925cb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/SUPPORT_STATUS
+++ /dev/null
@@ -1,196 +0,0 @@
-
-  [ current support status of Tcl/Tk extensions ]
-
-  *** RELEASE_DATE of the libraries => see 'tkextlib/version.rb' ***
-
-The following list shows *CURRENT* status when this file was modifyed
-at last. If you want to add other Tcl/Tk extensions to the planed list
-(or change its status position), please request them at the ruby-talk,
-ruby-list, or ruby-dev ML. Although we cannot promise to support your 
-requests, we'll try to do. 
-
-If you want to check that wrapper libraries are ready to use on your 
-environment, please execute 'pkg_checker.rb' with no arguments. The 
-script may give you some hints about that.
-
-
-  ***** IMPORTANT NOTE **********************************************
-
-    'support' means that Ruby/Tk's wrapper libraries are released. 
-    'not support' does *NOT* mean that the extension doesn't work
-    on Ruby/Tk. 
-
-    The version number of each extension means the latest version
-    which is checked its feature. That is, it does NOT means only 
-    version of working. Library files maybe include some features 
-    which is included in the former version but removed from the 
-    latest, and maybe able to support the later version then the 
-    shown version.
-
-    Even if the status of the extension is 'not support', you can 
-    control the functions/widgets of the extension without wrapper 
-    libraries by Tk.tk_call(), Tk.ip_eval(), and so on. 
-
-    If you cannot use installed Tcl/Tk extension, please check the 
-    followings. 
-
-     (1) On your Tcl/Tk, does the extention work?
-
-     (2) Do DLL libraries of the extension exist on DLL load-path?
-         (See also "<ruby archive>/ext/tcltklib/README.ActiveTcl")
-
-     (3) Is the Tcl library directory of the extension included in 
-         library search-path of the Tcl interpreter linked Ruby/Tk?
-
-    The check results may request you to do some setup operations 
-    before using the extension. If so, then please write the step 
-    of setup oprations into the "setup.rb" file in the directory 
-    of the wrapper libraries for the extention (It is the wrapper
-    libraries have the standard structure of the libraries in this 
-    directory). The "setup" file is required before requiring the 
-    Tcl library package (TkPackage.require(<libname>)). 
-
-  *******************************************************************
-
-
-===< support with some examples (may be beta quality) >=======================
-
-Tcllib       1.8     
-Tklib        0.4.1   http://sourceforge.net/projects/tcllib      ==> tcllib
-
-IWidgets     4.0.2   http://sourceforge.net/projects/incrtcl     ==> iwidgets
-
-BWidgets     1.7     http://sourceforge.net/projects/tcllib      ==> bwidget
-
-TkTable      2.9     http://sourceforge.net/projects/tktable     ==> tktable
-                         * see also <http://www.korus.hu/~fery/ruby/tktable.rb>
-                                    written by Ferenc Engard (ferenc at engard.hu)
-
-vu           2.3.0   http://sourceforge.net/projects/tktable     ==> vu
-
-TkHTML       2.0     http://www.hwaci.com/sw/tkhtml/             ==> tkHTML
-
-ICONS        1.0     http://www.satisoft.com/tcltk/icons/        ==> ICONS
-
-TkImg        1.3     http://sourceforge.net/projects/tkimg       ==> tkimg
-
-
-BLT          2.4z    http://sourceforge.net/projects/blt
-                        * see also tcltk-ext library on RAA 
-                                (http://raa.ruby-lang.org/)
-                      ==> blt
-
-TkTreeCtrl   CVS/Hd(2005-12-02)
-                     http://sourceforge.net/projects/tktreectrl  ==> treectrl
-
-Tile         0.7.8
-                     http://sourceforge.net/projects/tktable     ==> tile
-
-
-
-===< support (may be alpha or beta quality) >=================================
-
-IncrTcl      CVS/Hd(2005-02-14)
-                     http://sourceforge.net/projects/incrtcl     ==> itcl, itk
-
-TclX         CVS/Hd(2005-02-07)
-                     http://sourceforge.net/projects/tclx
-                       ==> tclx (partial support; infox command and 
-                                                   XPG/3 message catalogs only)
-
-Trofs        0.4.3   http://math.nist.gov/~DPorter/tcltk/trofs/
-
-
-
-===< possibly available (not tested; alpha quality) >=========================
-
-winico       0.6
-                     http://sourceforge.net/projects/tktable
-                       ==> winico (win32 only)
-
-TkTrans      latest(2004-10-11)
-                     http://www2.cmp.uea.ac.uk/~fuzz/tktrans/default.html
-                       ==>  tktrans (win32 only)
-
-TkDND        1.0a2   http://sourceforge.net/projects/tkdnd       ==> tkDND
-
-
-
-===< plan to support (alpha quality libraries may be included) >==============
-
-GraphViz     ***     http://www.graphviz.org/
-
-Tkgeomap     ***     http://tkgeomap.sourceforge.net/index.html
-
-
-
-===< not determined to supprt or not >========================================
-
-Tix          ***     http://tixlibrary.sourceforge.net/
-                        * see also tcltk-ext library on RAA 
-                                (http://raa.ruby-lang.org/)
-
-TkZinc       ***     http://www.tkzinc.org/
-
-Wbc          ***     http://home.t-online.de/home/csaba.nemethi/
-
-Mentry       ***     http://home.t-online.de/home/csaba.nemethi/
-
-Tablelist    ***     http://home.t-online.de/home/csaba.nemethi/
-
-ANIGIF       ***     http://cardtable.sourceforge.net/tcltk/
-
-IMG_ROTATE   ***     http://cardtable.sourceforge.net/tcltk/
-
-TclVfs       ***     http://sourceforge.net/projects/tclvfs/
-
-vfwtcl       ***     http://sourceforge.net/projects/avicaptcl
-                        * Win32 only
-
-multicast    ***     http://sourceforge.net/projects/avicaptcl
-                        * Win32 only
-
-XBit         ***     http://www.geocities.com/~chengye/
-                        * current implementation is for Windows only
-
-QuickTimeTcl ***     http://hem.fyristorg.com/matben/qt/
-                        * works under Mac OS (8,9,X) or Windows
-
-
-
-===< may not support (already exist, out of Ruby/Tk scope, and so on) >=======
-
-TkCon        ***     http://sourceforge.net/projects/tkcon
-
-Expect       ***     http://sourceforge.net/projects/expect
-
-TclXML       ***     http://sourceforge.net/projects/tclxml
-
-TclXSLT      ***     http://sourceforge.net/projects/tclxml
-
-TclDOM       ***     http://sourceforge.net/projects/tclxml
-
-TclSOAP      ***     http://sourceforge.net/projects/tclsoap
-
-Snack        ***     http://www.speech.kth.se/~kare/snack2.2.tar.gz
-                        * use Snack for Ruby 
-                              (see http://rbsnack.sourceforge.net/)
-
-Tcom         ***     http://www.vex.net/~cthuang/tcom/
-
-tDOM         ***     http://www.tdom.org
-
-Mk4tcl       ***     http://www.equi4.com/metakit/tcl.html
-
-Memchan      ***     http://sourceforge.net/projects/memchan
-
-XOTcl        ***     http://www.xotcl.org/
-
-
-===< tool (may not supprt) >==================================================
-
-tbcload/tclcompiler 
-             ***     http://www.tcl.tk/software/tclpro/
-
-
-(End of List)
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt.rb
deleted file mode 100644
index 115eb92..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-#
-#  BLT support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/variable'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/blt/setup.rb'
-
-# load all image format handlers
-#TkPackage.require('BLT', '2.4')
-TkPackage.require('BLT')
-
-module Tk
-  module BLT
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    extend TkCore
-
-    VERSION = tk_call('set', 'blt_version')
-    PATCH_LEVEL = tk_call('set', 'blt_patchLevel')
-
-    begin
-      lib = INTERP._invoke('set', 'blt_library')
-    rescue
-      lib = ''
-    end
-    LIBRARY  = TkVarAccess.new('blt_library', lib)
-
-    begin
-      lib = INTERP._invoke('set', 'blt_libPath')
-    rescue
-      lib = ''
-    end
-    LIB_PATH = TkVarAccess.new('blt_libPath', lib)
-
-    PACKAGE_NAME = 'BLT'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('BLT')
-      rescue
-        ''
-      end
-    end
-
-    ####################################################
-
-    def self.beep(percent = 50)
-      tk_call('::blt::beep', percent)
-    end
-
-    def self.bgexec(*args)
-      if args[0].kind_of?(TkVariable)
-        var = args.shift
-      else
-        var = TkVariable.new
-      end
-      params = [var]
-
-      params.concat(hash_kv(args.shift, true)) if args[0].kind_of?(Hash)
-
-      params << '--' if args[0] =~ /^\s*-[^-]/
-      params.concat(args)
-
-      tk_call('::blt::bgexec', *params)
-      var
-    end
-
-    def self.detach_bgexec(*args)
-      if args[0].kind_of?(TkVariable)
-        var = args.shift
-      else
-        var = TkVariable.new
-      end
-      params = [var]
-
-      params.concat(hash_kv(args.shift, true)) if args[0].kind_of?(Hash)
-
-      params << '--' if args[0] =~ /^\s*-[^-]/
-      params.concat(args)
-      params << '&'
-
-      [var, tk_split_list(tk_call('::blt::bgexec', *params))]
-    end
-
-    def self.bltdebug(lvl = nil)
-      if lvl
-        tk_call('::blt::bltdebug', lvl)
-      else
-        number(tk_call('::blt::bltdebug'))
-      end
-    end
-
-    def self.crc32_file(name)
-      tk_call_without_enc('::blt::crc32', name)
-    end
-    def self.crc32_data(dat)
-      tk_call_without_enc('::blt::crc32', '-data', dat)
-    end
-
-    ####################################################
-
-    def self.active_legend(graph)
-      tk_call_without_enc('Blt_ActiveLegend', graph)
-    end
-    def self.crosshairs(graph)
-      tk_call_without_enc('Blt_Crosshairs', graph)
-    end
-    def self.zoom_stack(graph)
-      tk_call_without_enc('Blt_ZoomStack', graph)
-    end
-    def self.print_key(graph)
-      tk_call_without_enc('Blt_PrintKey', graph)
-    end
-    def self.closest_point(graph)
-      tk_call_without_enc('Blt_ClosestPoint', graph)
-    end
-
-    module GraphCommand
-      def active_legend
-        tk_call_without_enc('Blt_ActiveLegend', @path)
-        self
-      end
-      def crosshairs
-        tk_call_without_enc('Blt_Crosshairs', @path)
-        self
-      end
-      def zoom_stack
-        tk_call_without_enc('Blt_ZoomStack', @path)
-        self
-      end
-      def print_key
-        tk_call_without_enc('Blt_PrintKey', @path)
-        self
-      end
-      def closest_point
-        tk_call_without_enc('Blt_ClosestPoint', @path)
-        self
-      end
-    end
-
-    ####################################################
-
-    autoload :PlotComponent,'tkextlib/blt/component.rb'
-
-    autoload :Barchart,     'tkextlib/blt/barchart.rb'
-    autoload :Bitmap,       'tkextlib/blt/bitmap.rb'
-    autoload :Busy,         'tkextlib/blt/busy.rb'
-    autoload :Container,    'tkextlib/blt/container.rb'
-    autoload :CutBuffer,    'tkextlib/blt/cutbuffer.rb'
-    autoload :DragDrop,     'tkextlib/blt/dragdrop.rb'
-    autoload :EPS,          'tkextlib/blt/eps.rb'
-    autoload :Htext,        'tkextlib/blt/htext.rb'
-    autoload :Graph,        'tkextlib/blt/graph.rb'
-    autoload :Spline,       'tkextlib/blt/spline.rb'
-    autoload :Stripchart,   'tkextlib/blt/stripchart.rb'
-    autoload :Table,        'tkextlib/blt/table.rb'
-    autoload :Tabnotebook,  'tkextlib/blt/tabnotebook.rb'
-    autoload :Tabset,       'tkextlib/blt/tabset.rb'
-    autoload :Ted,          'tkextlib/blt/ted.rb'
-    autoload :Tile,         'tkextlib/blt/tile.rb'
-    autoload :Tree,         'tkextlib/blt/tree.rb'
-    autoload :TreeView,     'tkextlib/blt/treeview.rb'
-    autoload :Hiertable,    'tkextlib/blt/treeview.rb'
-    # Hierbox is obsolete
-    autoload :Vector,       'tkextlib/blt/vector.rb'
-    autoload :VectorAccess, 'tkextlib/blt/vector.rb'
-    autoload :Watch,        'tkextlib/blt/watch.rb'
-    autoload :Winop,        'tkextlib/blt/winop.rb'
-    autoload :WinOp,        'tkextlib/blt/winop.rb'
-
-    # Unix only
-    autoload :DnD,          'tkextlib/blt/unix_dnd.rb'
-
-    # Windows only
-    autoload :Printer,      'tkextlib/blt/win_printer.rb'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/barchart.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/barchart.rb
deleted file mode 100644
index cb481c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/barchart.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-#  tkextlib/blt/barchart.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-require 'tkextlib/blt/component.rb'
-
-module Tk::BLT
-  class Barchart < TkWindow
-    TkCommandNames = ['::blt::barchart'.freeze].freeze
-    WidgetClassName = 'Barchart'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    include PlotComponent
-    include GraphCommand
-
-    def __boolval_optkeys
-      ['bufferelements', 'buffergraph', 'invertxy']
-    end
-    private :__boolval_optkeys
-
-    def __strval_optkeys
-      ['text', 'label', 'title', 'file', 
-        'background', 'plotbackground']
-    end
-    private :__strval_optkeys
-
-    def __tkvariable_optkeys
-      super() << 'colormap' << 'fontmap'
-    end
-    private :__tkvariable_optkeys
-
-=begin
-    BarElement_ID = ['blt_barchart_bar'.freeze, '00000'.taint].freeze
-
-    def bar(elem=nil, keys={})
-      if elem.kind_of?(Hash)
-        keys = elem
-        elem = nil
-      end
-      unless elem
-        elem = BarElement_ID.join(TkCore::INTERP._ip_id_).freeze
-        BarElement_ID[1].succ!
-      end
-      tk_send('bar', elem, keys)
-      Element.new(self, elem, :without_creating=>true)
-    end
-=end
-
-    def extents(item)
-      num_or_str(tk_send_without_enc('extents', item))
-    end
-
-    def invtransform(x, y)
-      list(tk_send_without_enc('invtransform', x, y))
-    end
-
-    def inside(x, y)
-      bool(tk_send_without_enc('inside', x, y))
-    end
-
-    def metafile(file=None)
-      # Windows only
-      tk_send('metafile', file)
-      self
-    end
-
-    def snap(output, keys={})
-      tk_send_without_enc('snap', *(hash_kv(keys, false) + output))
-      self
-    end
-
-    def transform(x, y)
-      list(tk_send_without_enc('transform', x, y))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/bitmap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/bitmap.rb
deleted file mode 100644
index 31cf8d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/bitmap.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-#  tkextlib/blt/bitmap.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Bitmap < TkObject
-    extend TkCore
-
-    TkCommandNames = ['::blt::bitmap'.freeze].freeze
-
-    BITMAP_ID_TBL = TkCore::INTERP.create_table
-    BITMAP_ID = ['blt_bitmap_id'.freeze, '00000'.taint].freeze
-
-    def self.data(name)
-      dat = tk_simple_list(tk_call('::blt::bitmap', 'data', name))
-      [ tk_split_list(dat[0]), tk_simple_list(dat[1]) ]
-    end
-
-    def self.exist?(name)
-      bool(tk_call('::blt::bitmap', 'exists', name))
-    end
-
-    def self.height(name)
-      number(tk_call('::blt::bitmap', 'height', name))
-    end
-
-    def self.width(name)
-      number(tk_call('::blt::bitmap', 'width', name))
-    end
-
-    def self.source(name)
-      tk_simple_list(tk_call('::blt::bitmap', 'source', name))
-    end
-
-    #################################
-
-    class << self
-      alias _new new
-
-      def new(data, keys={})
-        _new(:data, nil, data, keys)
-      end
-      alias define new
-
-      def new_with_name(name, data, keys={})
-        _new(:data, name, data, keys)
-      end
-      alias define_with_name new_with_name
-
-      def compose(text, keys={})
-        _new(:text, nil, text, keys)
-      end
-
-      def compose_with_name(name, text, keys={})
-        _new(:text, name, text, keys)
-      end
-    end
-
-    def initialize(type, name, data, keys = {})
-      if name
-        @id = name
-      else
-        @id = BITMAP_ID.join(TkCore::INTERP._ip_id_)
-        BITMAP_ID[1].succ!
-        BITMAP_ID_TBL[@id] = self
-      end
-
-      @path = @id
-
-      unless bool(tk_call('::blt::bitmap', 'exists', @id))
-        if type == :text
-          tk_call('::blt::bitmap', 'compose', @id, data, *hash_kv(keys))
-        else # :data
-          tk_call('::blt::bitmap', 'define', @id, data, *hash_kv(keys))
-        end
-      end
-    end
-
-    def exist?
-      bool(tk_call('::blt::bitmap', 'exists', @id))
-    end
-
-    def height
-      number(tk_call('::blt::bitmap', 'height', @id))
-    end
-
-    def width
-      number(tk_call('::blt::bitmap', 'width', @id))
-    end
-
-    def source
-      tk_simple_list(tk_call('::blt::bitmap', 'source', @id))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/busy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/busy.rb
deleted file mode 100644
index 4726e46..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/busy.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-#  tkextlib/blt/busy.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/itemconfig.rb'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Busy
-    extend TkCore
-    extend TkItemConfigMethod
-
-    TkCommandNames = ['::blt::busy'.freeze].freeze
-
-    ###########################
-
-    class Shield < TkWindow
-      def self.shield_path(win)
-        win = window(win) unless win.kind_of?(TkWindow)
-        if win.kind_of?(TkToplevel)
-          win.path + '._Busy'
-        else
-          win.path + '_Busy'
-        end
-      end
-
-      def initialize(win)
-        @path = self.class.shield_path(win)
-      end
-    end
-
-    def self.shield_path(win)
-      Tk::BLT::Busy::Shield.shield_path(win)
-    end
-  end
-end
-
-class << Tk::BLT::Busy
-  def __item_config_cmd(win)
-    ['::blt::busy', 'configure', win]
-  end
-  private :__item_config_cmd
-
-  undef itemcget
-  alias configure itemconfigure
-  alias configinfo itemconfiginfo
-  alias current_configinfo current_itemconfiginfo
-  private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
-
-  ##################################
-
-  def hold(win, keys={})
-    tk_call('::blt::busy', 'hold', win, *hash_kv(keys))
-  end
-
-  def release(*wins)
-    tk_call('::blt::busy', 'release', *wins)
-  end
-
-  def forget(*wins)
-    tk_call('::blt::busy', 'forget', *wins)
-  end
-
-  def is_busy(pat=None)
-    tk_split_list(tk_call('::blt::busy', 'isbusy', pat))
-  end
-
-  def names(pat=None)
-    tk_split_list(tk_call('::blt::busy', 'names', pat))
-  end
-  alias windows names
-
-  def check(win)
-    bool(tk_call('::blt::busy', 'check', win))
-  end
-
-  def status(win)
-    bool(tk_call('::blt::busy', 'status', win))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/component.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/component.rb
deleted file mode 100644
index ad78a54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/component.rb
+++ /dev/null
@@ -1,1835 +0,0 @@
-#
-#  tkextlib/blt/component.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module PlotComponent
-    include TkItemConfigMethod
-
-    module OptKeys
-      def __item_font_optkeys(id)
-        ['font', 'tickfont', 'titlefont']
-      end
-      private :__item_font_optkeys
-
-      def __item_numstrval_optkeys(id)
-        ['xoffset', 'yoffset']
-      end
-      private :__item_numstrval_optkeys
-
-      def __item_boolval_optkeys(id)
-        ['hide', 'under', 'descending', 'logscale', 'loose', 'showticks', 
-          'titlealternate', 'scalesymbols', 'minor', 'raised', 
-          'center', 'decoration', 'landscape', 'maxpect']
-      end
-      private :__item_boolval_optkeys
-
-      def __item_strval_optkeys(id)
-        ['text', 'label', 'limits', 'title', 
-          'show', 'file', 'maskdata', 'maskfile', 
-          'color', 'titlecolor', 'fill', 'outline', 'offdash']
-      end
-      private :__item_strval_optkeys
-
-      def __item_listval_optkeys(id)
-        ['bindtags']
-      end
-      private :__item_listval_optkeys
-
-      def __item_numlistval_optkeys(id)
-        ['dashes', 'majorticks', 'minorticks']
-      end
-      private :__item_numlistval_optkeys
-
-      def __item_tkvariable_optkeys(id)
-        ['variable', 'textvariable', 'colormap', 'fontmap']
-      end
-      private :__item_tkvariable_optkeys
-    end
-
-    include OptKeys
-
-    def __item_cget_cmd(id)
-      if id.kind_of?(Array)
-        # id := [ type, name ]
-        [self.path, id[0], 'cget', id[1]]
-      else
-        [self.path, id, 'cget']
-      end
-    end
-    private :__item_cget_cmd
-
-    def __item_config_cmd(id)
-      if id.kind_of?(Array)
-        # id := [ type, name, ... ]
-        type, *names = id
-        [self.path, type, 'configure'].concat(names)
-      else
-        [self.path, id, 'configure']
-      end
-    end
-    private :__item_config_cmd
-
-    def __item_pathname(id)
-      if id.kind_of?(Array)
-        id = tagid(id[1])
-      end
-      [self.path, id].join(';')
-    end
-    private :__item_pathname
-
-    def axis_cget(id, option)
-      ret = itemcget(['axis', tagid(id)], option)
-    end
-    def axis_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-        slot = _symbolkey2str(slot)
-        if cmd = slot.delete('command')
-          slot['command'] = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      else
-        value = slot
-        slot = args.pop
-        if slot == :command || slot == 'command'
-          cmd = value
-          value = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('axis')
-      itemconfigure(id_list, slot, value)
-    end
-    def axis_configinfo(id, slot=nil)
-      itemconfiginfo(['axis', tagid(id)], slot)
-    end
-    def current_axis_configinfo(id, slot=nil)
-      current_itemconfiginfo(['axis', tagid(id)], slot)
-    end
-
-    def crosshairs_cget(option)
-      itemcget('crosshairs', option)
-    end
-    def crosshairs_configure(slot, value=None)
-      itemconfigure('crosshairs', slot, value)
-    end
-    def crosshairs_configinfo(slot=nil)
-      itemconfiginfo('crosshairs', slot)
-    end
-    def current_crosshairs_configinfo(slot=nil)
-      current_itemconfiginfo('crosshairs', slot)
-    end
-
-    def element_cget(id, option)
-      itemcget(['element', tagid(id)], option)
-    end
-    def element_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-      else
-        value = slot
-        slot = args.pop
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('element')
-      itemconfigure(id_list, slot, value)
-    end
-    def element_configinfo(id, slot=nil)
-      itemconfiginfo(['element', tagid(id)], slot)
-    end
-    def current_element_configinfo(id, slot=nil)
-      current_itemconfiginfo(['element', tagid(id)], slot)
-    end
-
-    def bar_cget(id, option)
-      itemcget(['bar', tagid(id)], option)
-    end
-    def bar_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-      else
-        value = slot
-        slot = args.pop
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('bar')
-      itemconfigure(id_list, slot, value)
-    end
-    def bar_configinfo(id, slot=nil)
-      itemconfiginfo(['bar', tagid(id)], slot)
-    end
-    def current_bar_configinfo(id, slot=nil)
-      current_itemconfiginfo(['bar', tagid(id)], slot)
-    end
-
-    def line_cget(id, option)
-      itemcget(['line', tagid(id)], option)
-    end
-    def line_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-      else
-        value = slot
-        slot = args.pop
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('line')
-      itemconfigure(id_list, slot, value)
-    end
-    def line_configinfo(id, slot=nil)
-      itemconfiginfo(['line', tagid(id)], slot)
-    end
-    def current_line_configinfo(id, slot=nil)
-      current_itemconfiginfo(['line', tagid(id)], slot)
-    end
-
-    def gridline_cget(option)
-      itemcget('grid', option)
-    end
-    def gridline_configure(slot, value=None)
-      itemconfigure('grid', slot, value)
-    end
-    def gridline_configinfo(slot=nil)
-      itemconfiginfo('grid', slot)
-    end
-    def current_gridline_configinfo(slot=nil)
-      current_itemconfiginfo('grid', slot)
-    end
-
-    def legend_cget(option)
-      itemcget('legend', option)
-    end
-    def legend_configure(slot, value=None)
-      itemconfigure('legend', slot, value)
-    end
-    def legend_configinfo(slot=nil)
-      itemconfiginfo('legend', slot)
-    end
-    def current_legend_configinfo(slot=nil)
-      current_itemconfiginfo('legend', slot)
-    end
-
-    def pen_cget(id, option)
-      itemcget(['pen', tagid(id)], option)
-    end
-    def pen_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-      else
-        value = slot
-        slot = args.pop
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('pen')
-      itemconfigure(id_list, slot, value)
-    end
-    def pen_configinfo(id, slot=nil)
-      itemconfiginfo(['pen', tagid(id)], slot)
-    end
-    def current_pen_configinfo(id, slot=nil)
-      current_itemconfiginfo(['pen', tagid(id)], slot)
-    end
-
-    def postscript_cget(option)
-      itemcget('postscript', option)
-    end
-    def postscript_configure(slot, value=None)
-      itemconfigure('postscript', slot, value)
-    end
-    def postscript_configinfo(slot=nil)
-      itemconfiginfo('postscript', slot)
-    end
-    def current_postscript_configinfo(slot=nil)
-      current_itemconfiginfo('postscript', slot)
-    end
-
-    def marker_cget(id, option)
-      itemcget(['marker', tagid(id)], option)
-    end
-    def marker_configure(*args)
-      slot = args.pop
-      if slot.kind_of?(Hash)
-        value = None
-      else
-        value = slot
-        slot = args.pop
-      end
-      id_list = args.flatten.collect!{|id| tagid(id)}.unshift('marker')
-      itemconfigure(id_list, slot, value)
-    end
-    def marker_configinfo(id, slot=nil)
-      itemconfiginfo(['marker', tagid(id)], slot)
-    end
-    def current_marker_configinfo(id, slot=nil)
-      current_itemconfiginfo(['marker', tagid(id)], slot)
-    end
-
-    alias __itemcget itemcget
-    alias __itemconfiginfo itemconfiginfo
-    alias __current_itemconfiginfo current_itemconfiginfo
-    private :__itemcget, :__itemconfiginfo, :__current_itemconfiginfo
-
-    def itemcget(tagOrId, option)
-      ret = __itemcget(tagid(tagOrId), option)
-      if option == 'bindtags' || option == :bindtags
-        ret.collect{|tag| TkBindTag.id2obj(tag)}
-      else
-        ret
-      end
-    end
-    def itemconfiginfo(tagOrId, slot = nil)
-      ret = __itemconfiginfo(tagid(tagOrId), slot)
-
-      if TkComm::GET_CONFIGINFO_AS_ARRAY
-        if slot
-          if slot == 'bindtags' || slot == :bindtags
-            ret[-2] = ret[-2].collect{|tag| TkBindTag.id2obj(tag)}
-            ret[-1] = ret[-1].collect{|tag| TkBindTag.id2obj(tag)}
-          end
-        else
-          if (inf = ret.assoc('bindtags'))
-            inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
-            inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
-          end
-        end
-
-      else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-        if (inf = ret['bindtags'])
-          inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
-          inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
-          ret['bindtags'] = inf
-        end
-      end
-
-      ret
-    end
-    def current_itemconfiginfo(tagOrId, slot = nil)
-      ret = __current_itemconfiginfo(tagid(tagOrId), slot)
-
-      if (val = ret['bindtags'])
-        ret['bindtags'] = val.collect{|tag| TkBindTag.id2obj(tag)}
-      end
-
-      ret
-    end
-
-    private :itemcget, :itemconfigure
-    private :itemconfiginfo, :current_itemconfiginfo
-
-    #################
-
-    class Axis < TkObject
-      OBJ_ID = ['blt_chart_axis'.freeze, '00000'.taint].freeze
-      OBJ_TBL={}
-
-      def self.id2obj(chart, id)
-        cpath = chart.path
-        return id unless OBJ_TBL[cpath]
-        OBJ_TBL[cpath][id]? OBJ_TBL[cpath][id]: id
-      end
-
-      def self.new(chart, axis=nil, keys={})
-        if axis.kind_of?(Hash)
-          keys = axis
-          axis = nil
-        end
-        OBJ_TBL[chart.path] = {} unless OBJ_TBL[chart.path]
-        return OBJ_TBL[chart.path][axis] if axis && OBJ_TBL[chart.path][axis]
-        super(chart, axis, keys)
-      end
-
-      def initialize(chart, axis=nil, keys={})
-        if axis.kind_of?(Hash)
-          keys = axis
-          axis = nil
-        end
-        if axis
-          @axis = @id = axis.to_s
-        else
-          @axis = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
-          OBJ_ID[1].succ!
-        end
-        @path = @id
-        @parent = @chart = chart
-        @cpath = @chart.path
-        Axis::OBJ_TBL[@cpath][@axis] = self
-        keys = _symbolkey2str(keys)
-        unless keys.delete('without_creating')
-          # @chart.axis_create(@axis, keys)
-          tk_call(@chart, 'axis', 'create', @axis, keys)
-        end
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.axis_cget(@id, option)
-      end
-      def configure(key, value=None)
-        @chart.axis_configure(@id, key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.axis_configinfo(@id, key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_axis_configinfo(@id, key)
-      end
-
-      def command(cmd=nil, &b)
-        if cmd
-          configure('command', cmd)
-        elsif b
-          configure('command', Proc.new(&b))
-        else
-          cget('command')
-        end
-      end
-
-      def delete
-        @chart.axis_delete(@id)
-        self
-      end
-
-      def invtransform(val)
-        @chart.axis_invtransform(@id, val)
-      end
-
-      def limits
-        @chart.axis_limits(@id)
-      end
-
-      def name
-        @axis
-      end
-        
-      def transform(val)
-        @chart.axis_transform(@id, val)
-      end
-
-      def view
-        @chart.axis_view(@id)
-        self
-      end
-
-      def use(name=None) # if @id == xaxis | x2axis | yaxis | y2axis
-        @chart.axis_use(@id, name)
-      end
-
-      def use_as(axis) # axis := xaxis | x2axis | yaxis | y2axis
-        @chart.axis_use(axis, @id)
-      end
-    end
-
-    #################
-
-    class Crosshairs < TkObject
-      OBJ_TBL={}
-
-      def self.new(chart, keys={})
-        return OBJ_TBL[chart.path] if OBJ_TBL[chart.path]
-        super(chart, keys)
-      end
-
-      def initialize(chart, keys={})
-        @parent = @chart = chart
-        @cpath = @chart.path
-        Crosshairs::OBJ_TBL[@cpath] = self
-        @chart.crosshair_configure(keys) unless keys.empty?
-        @path = @id = 'crosshairs'
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.crosshair_cget(option)
-      end
-      def configure(key, value=None)
-        @chart.crosshair_configure(key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.crosshair_configinfo(key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_crosshair_configinfo(key)
-      end
-
-      def off
-        @chart.crosshair_off
-        self
-      end
-      def on
-        @chart.crosshair_on
-        self
-      end
-      def toggle
-        @chart.crosshair_toggle
-        self
-      end
-    end
-
-    #################
-
-    class Element < TkObject
-      extend Tk
-      extend TkItemFontOptkeys
-      extend TkItemConfigOptkeys
-
-      extend Tk::BLT::PlotComponent::OptKeys
-
-      ElementTypeName = 'element'
-      ElementTypeToClass = { ElementTypeName=>self }
-      ElementID_TBL = TkCore::INTERP.create_table
-
-      TkCore::INTERP.init_ip_env{ ElementID_TBL.clear }
-
-      OBJ_ID = ['blt_chart_element'.freeze, '00000'.taint].freeze
-      OBJ_TBL={}
-
-      def Element.type2class(type)
-        ElementTypeToClass[type]
-      end
-
-      def Element.id2obj(chart, id)
-        cpath = chart.path
-        return id unless OBJ_TBL[cpath]
-        OBJ_TBL[cpath][id]? OBJ_TBL[cpath][id]: id
-      end
-
-      def self.new(chart, element=nil, keys={})
-        if element.kind_of?(Hash)
-          keys = element
-          element = nil
-        end
-        OBJ_TBL[chart.path] = {} unless OBJ_TBL[chart.path]
-        if element && OBJ_TBL[chart.path][element]
-          return OBJ_TBL[chart.path][element]
-        end
-        super(chart, element, keys)
-      end
-
-      def initialize(chart, element=nil, keys={})
-        if element.kind_of?(Hash)
-          keys = element
-          element = nil
-        end
-        if element
-          @element = @id = element.to_s
-        else
-          @element = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
-          OBJ_ID[1].succ!
-        end
-        @path = @id
-        @parent = @chart = chart
-        @cpath = @chart.path
-        @typename = self.class::ElementTypeName
-        Element::OBJ_TBL[@cpath][@element] = self
-        keys = _symbolkey2str(keys)
-        unless keys.delete('without_creating')
-          # @chart.element_create(@element, keys)
-          tk_call(@chart, @typename, 'create', @element, keys)
-        end
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        # @chart.element_cget(@id, option)
-        @chart.__send__(@typename + '_cget', @id, option)
-      end
-      def configure(key, value=None)
-        # @chart.element_configure(@id, key, value)
-        @chart.__send__(@typename + '_configure', @id, key, value)
-        self
-      end
-      def configinfo(key=nil)
-        # @chart.element_configinfo(@id, key)
-        @chart.__send__(@typename + '_configinfo', @id, key)
-      end
-      def current_configinfo(key=nil)
-        # @chart.current_element_configinfo(@id, key)
-        @chart.__send__('current_' << @typename << '_configinfo', @id, key)
-      end
-
-      def activate(*args)
-        @chart.element_activate(@id, *args)
-      end
-
-      def closest(x, y, var, keys={})
-        # @chart.element_closest(x, y, var, @id, keys)
-        @chart.__send__(@typename + '_closest', x, y, var, @id, keys)
-      end
-
-      def deactivate
-        @chart.element_deactivate(@id)
-        self
-      end
-
-      def delete
-        @chart.element_delete(@id)
-        self
-      end
-
-      def exist?
-        @chart.element_exist?(@id)
-      end
-
-      def name
-        @element
-      end
-
-      def type
-        @chart.element_type(@id)
-      end
-    end
-
-    class Bar < Element
-      ElementTypeName = 'bar'.freeze
-      ElementTypeToClass[ElementTypeName] = self
-    end
-    class Line < Element
-      ElementTypeName = 'line'.freeze
-      ElementTypeToClass[ElementTypeName] = self
-    end
-
-    #################
-
-    class GridLine < TkObject
-      OBJ_TBL={}
-
-      def self.new(chart, keys={})
-        return OBJ_TBL[chart.path] if OBJ_TBL[chart.path]
-        super(chart, keys)
-      end
-
-      def initialize(chart, keys={})
-        @parent = @chart = chart
-        @cpath = @chart.path
-        GridLine::OBJ_TBL[@cpath] = self
-        @chart.gridline_configure(keys) unless keys.empty?
-        @path = @id = 'grid'
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.gridline_cget(option)
-      end
-      def configure(key, value=None)
-        @chart.gridline_configure(key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.gridline_configinfo(key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_gridline_configinfo(key)
-      end
-
-      def off
-        @chart.gridline_off
-        self
-      end
-      def on
-        @chart.gridline_on
-        self
-      end
-      def toggle
-        @chart.gridline_toggle
-        self
-      end
-    end
-
-    #################
-
-    class Legend < TkObject
-      OBJ_TBL={}
-
-      def self.new(chart, keys={})
-        return OBJ_TBL[chart.path] if OBJ_TBL[chart.path]
-        super(chart, keys)
-      end
-
-      def initialize(chart, keys={})
-        @parent = @chart = chart
-        @cpath = @chart.path
-        Crosshairs::OBJ_TBL[@cpath] = self
-        @chart.crosshair_configure(keys) unless keys.empty?
-        @path = @id = 'legend'
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.legend_cget(option)
-      end
-      def configure(key, value=None)
-        @chart.legend_configure(key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.legend_configinfo(key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_legend_configinfo(key)
-      end
-
-      def activate(*args)
-        @chart.legend_activate(*args)
-      end
-
-      def deactivate(*args)
-        @chart.legend_deactivate(*args)
-      end
-
-      def get(pos, y=nil)
-        @chart.legend_get(pos, y)
-      end
-    end
-
-    #################
-
-    class Pen < TkObject
-      OBJ_ID = ['blt_chart_pen'.freeze, '00000'.taint].freeze
-      OBJ_TBL={}
-
-      def self.id2obj(chart, id)
-        cpath = chart.path
-        return id unless OBJ_TBL[cpath]
-        OBJ_TBL[cpath][id]? OBJ_TBL[cpath][id]: id
-      end
-
-      def self.new(chart, pen=nil, keys={})
-        if pen.kind_of?(Hash)
-          keys = pen
-          pen = nil
-        end
-        OBJ_TBL[chart.path] = {} unless OBJ_TBL[chart.path]
-        return OBJ_TBL[chart.path][pen] if pen && OBJ_TBL[chart.path][pen]
-        super(chart, pen, keys)
-      end
-
-      def initialize(chart, pen=nil, keys={})
-        if pen.kind_of?(Hash)
-          keys = pen
-          pen = nil
-        end
-        if pen
-          @pen = @id = pen.to_s
-        else
-          @pen = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
-          OBJ_ID[1].succ!
-        end
-        @path = @id
-        @parent = @chart = chart
-        @cpath = @chart.path
-        Pen::OBJ_TBL[@cpath][@pen] = self
-        keys = _symbolkey2str(keys)
-        unless keys.delete('without_creating')
-          # @chart.pen_create(@pen, keys)
-          tk_call(@chart, 'pen', 'create', @pen, keys)
-        end
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.pen_cget(@id, option)
-      end
-      def configure(key, value=None)
-        @chart.pen_configure(@id, key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.pen_configinfo(@id, key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_pen_configinfo(@id, key)
-      end
-
-      def delete
-        @chart.pen_delete(@id)
-        self
-      end
-
-      def name
-        @pen
-      end
-    end
-
-    #################
-
-    class Postscript < TkObject
-      OBJ_TBL={}
-
-      def self.new(chart, keys={})
-        return OBJ_TBL[chart.path] if OBJ_TBL[chart.path]
-        super(chart, keys)
-      end
-
-      def initialize(chart, keys={})
-        @parent = @chart = chart
-        @cpath = @chart.path
-        Postscript::OBJ_TBL[@cpath] = self
-        @chart.postscript_configure(keys) unless keys.empty?
-        @path = @id = 'postscript'
-      end
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.postscript_cget(option)
-      end
-      def configure(key, value=None)
-        @chart.postscript_configure(key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.postscript_configinfo(key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_postscript_configinfo(key)
-      end
-
-      def output(file=nil, keys={})
-        if file.kind_of?(Hash)
-          keys = file
-          file = nil
-        end
-
-        ret = @chart.postscript_output(file, keys)
-
-        if file
-          self
-        else
-          ret
-        end
-      end
-    end
-
-    #################
-    class Marker < TkObject
-      extend Tk
-      extend TkItemFontOptkeys
-      extend TkItemConfigOptkeys
-
-      extend Tk::BLT::PlotComponent::OptKeys
-
-      MarkerTypeName = nil
-      MarkerTypeToClass = {}
-      MarkerID_TBL = TkCore::INTERP.create_table
-
-      TkCore::INTERP.init_ip_env{ MarkerID_TBL.clear }
-
-      def Marker.type2class(type)
-        MarkerTypeToClass[type]
-      end
-
-      def Marker.id2obj(chart, id)
-        cpath = chart.path
-        return id unless MarkerID_TBL[cpath]
-        MarkerID_TBL[cpath][id]? MarkerID_TBL[cpath][id]: id
-      end
-
-      def self._parse_create_args(keys)
-        fontkeys = {}
-        methodkeys = {}
-        if keys.kind_of? Hash
-          keys = _symbolkey2str(keys)
-
-          __item_font_optkeys(nil).each{|key|
-            fkey = key.to_s
-            fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-            fkey = "kanji#{key}"
-            fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-            fkey = "latin#{key}"
-            fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-
-            fkey = "ascii#{key}"
-            fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
-          }
-
-          __item_methodcall_optkeys(nil).each{|key|
-            key = key.to_s
-            methodkeys[key] = keys.delete(key) if keys.key?(key)
-          }
-
-          __item_ruby2val_optkeys(nil).each{|key, method|
-            key = key.to_s
-            keys[key] = method.call(keys[key]) if keys.has_key?(key)
-          }
-
-          args = itemconfig_hash_kv(nil, keys)
-        else
-          args = []
-        end
-
-        [args, fontkeys]
-      end
-      private_class_method :_parse_create_args
-
-      def self.create(chart, keys={})
-        unless self::MarkerTypeName
-          fail RuntimeError, "#{self} is an abstract class"
-        end
-        args, fontkeys = _parse_create_args(keys)
-        idnum = tk_call_without_enc(chart.path, 'marker', 'create', 
-                                    self::MarkerTypeName, *args)
-        chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
-        idnum.to_i  # 'item id' is an integer number
-      end
-
-      def self.create_type(chart, type, keys={})
-        args, fontkeys = _parse_create_args(keys)
-        idnum = tk_call_without_enc(chart.path, 'marker', 'create', 
-                                    type, *args)
-        chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
-        id = idnum.to_i  # 'item id' is an integer number
-        obj = self.allocate
-        obj.instance_eval{
-          @parent = @chart = chart
-          @cpath = chart.path
-          @id = id
-          unless Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath]
-            Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] = {}
-          end
-          Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@id] = self
-        }
-        obj
-      end
-
-      def initialize(parent, *args)
-        @parent = @chart = parent
-        @cpath = parent.path
-
-        @path = @id = create_self(*args) # an integer number as 'item id'
-        unless Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath]
-          Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] = {}
-        end
-        Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@id] = self
-      end
-      def create_self(*args)
-        self.class.create(@chart, *args) # return an integer as 'item id'
-      end
-      private :create_self
-
-      def id
-        @id
-      end
-
-      def to_eval
-        @id
-      end
-
-      def cget(option)
-        @chart.marker_cget(@id, option)
-      end
-      def configure(key, value=None)
-        @chart.marker_configure(@id, key, value)
-        self
-      end
-      def configinfo(key=nil)
-        @chart.marker_configinfo(@id, key)
-      end
-      def current_configinfo(key=nil)
-        @chart.current_marker_configinfo(@id, key)
-      end
-
-      def after(target=None)
-        @chart.marker_after(@id, target)
-      end
-
-      def before(target=None)
-        @chart.marker_before(@id, target)
-      end
-
-      def delete
-        @chart.marker_delete(@id)
-      end
-
-      def exist?
-        @chart.marker_exist(@id)
-      end
-
-      def type
-        @chart.marker_type(@id)
-      end
-    end
-
-    class TextMarker < Marker
-      MarkerTypeName = 'text'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-    class LineMarker < Marker
-      MarkerTypeName = 'line'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-    class BitmapMarker < Marker
-      MarkerTypeName = 'bitmap'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-    class ImageMarker < Marker
-      MarkerTypeName = 'image'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-    class PolygonMarker < Marker
-      MarkerTypeName = 'polygon'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-    class WindowMarker < Marker
-      MarkerTypeName = 'window'.freeze
-      MarkerTypeToClass[MarkerTypeName] = self
-    end
-
-    #################
-
-    def __destroy_hook__
-      Axis::OBJ_TBL.delete(@path)
-      Crosshairs::OBJ_TBL.delete(@path)
-      Element::OBJ_TBL.delete(@path)
-      GridLine::OBJ_TBL.delete(@path)
-      Legend::OBJ_TBL.delete(@path)
-      Pen::OBJ_TBL.delete(@path)
-      Postscript::OBJ_TBL.delete(@path)
-      Marker::OBJ_TBL.delete(@path)
-      super()
-    end
-
-    #################
-
-    def tagid(tag)
-      if tag.kind_of?(Axis) ||
-          tag.kind_of?(Crosshairs) ||
-          tag.kind_of?(Element) ||
-          tag.kind_of?(GridLine) ||
-          tag.kind_of?(Legend) ||
-          tag.kind_of?(Pen) ||
-          tag.kind_of?(Postscript) ||
-          tag.kind_of?(Marker)
-        tag.id
-      else
-        tag  # maybe an Array of configure paramters
-      end
-    end
-
-    def _component_bind(target, tag, context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, target, 'bind', tagid(tag)], context, cmd, *args)
-      self
-    end
-    def _component_bind_append(target, tag, context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, target, 'bind', tagid(tag)], context, cmd, *args)
-      self
-    end
-    def _component_bind_remove(target, tag, context)
-      _bind_remove([path, target, 'bind', tagid(tag)], context)
-      self
-    end
-    def _component_bindinfo(target, tag, context=nil)
-      _bindinfo([path, target, 'bind', tagid(tag)], context)
-    end
-    private :_component_bind, :_component_bind_append
-    private :_component_bind_remove, :_component_bindinfo
-
-    def axis_bind(tag, context, *args)
-      _component_bind('axis', tag, context, *args)
-    end
-    def axis_bind_append(tag, context, *args)
-      _component_bind_append('axis', tag, context, *args)
-    end
-    def axis_bind_remove(tag, context)
-      _component_bind_remove('axis', tag, context)
-    end
-    def axis_bindinfo(tag, context=nil)
-      _component_bindinfo('axis', tag, context)
-    end
-
-    def element_bind(tag, context, *args)
-      _component_bind('element', tag, context, *args)
-    end
-    def element_bind_append(tag, context, *args)
-      _component_bind_append('element', tag, context, *args)
-    end
-    def element_bind_remove(tag, context)
-      _component_bind_remove('element', tag, context)
-    end
-    def element_bindinfo(tag, context=nil)
-      _component_bindinfo('element', tag, context)
-    end
-
-    def bar_bind(tag, context, *args)
-      _component_bind('bar', tag, context, *args)
-    end
-    def bar_bind_append(tag, context, *args)
-      _component_bind_append('bar', tag, context, *args)
-    end
-    def bar_bind_remove(tag, context)
-      _component_bind_remove('bar', tag, context)
-    end
-    def bar_bindinfo(tag, context=nil)
-      _component_bindinfo('bar', tag, context)
-    end
-
-    def line_bind(tag, context, *args)
-      _component_bind('line', tag, context, *args)
-    end
-    def line_bind_append(tag, context, *args)
-      _component_bind_append('line', tag, context, *args)
-    end
-    def line_bind_remove(tag, context)
-      _component_bind_remove('line', tag, context)
-    end
-    def line_bindinfo(tag, context=nil)
-      _component_bindinfo('line', tag, context)
-    end
-
-    def legend_bind(tag, context, *args)
-      _component_bind('legend', tag, context, *args)
-    end
-    def legend_bind_append(tag, context, *args)
-      _component_bind_append('legend', tag, context, *args)
-    end
-    def legend_bind_remove(tag, context)
-      _component_bind_remove('legend', tag, context)
-    end
-    def legend_bindinfo(tag, context=nil)
-      _component_bindinfo('legend', tag, context)
-    end
-
-    def marker_bind(tag, context, *args)
-      _component_bind('marker', tag, context, *args)
-    end
-    def marker_bind_append(tag, context, *args)
-      _component_bind_append('marker', tag, context, *args)
-    end
-    def marker_bind_remove(tag, context)
-      _component_bind_remove('marker', tag, context)
-    end
-    def marker_bindinfo(tag, context=nil)
-      _component_bindinfo('marker', tag, context)
-    end
-
-    ###################
-
-    def axis_create(id=nil, keys={})
-      # tk_send('axis', 'create', tagid(id), keys)
-      Tk::BLT::PlotComponent::Axis.new(self, tagid(id), keys)
-    end
-    def axis_delete(*ids)
-      tk_send('axis', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def axis_invtransform(id, val)
-      list(tk_send('axis', 'invtransform', tagid(id), val))
-    end
-    def axis_limits(id)
-      list(tk_send('axis', 'limits', tagid(id)))
-    end
-    def axis_names(*pats)
-      simplelist(tk_send('axis', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|axis|
-        Tk::BLT::PlotComponent::Axis.id2obj(self, axis)
-      }
-    end
-    def axis_transform(id, val)
-      list(tk_send('axis', 'transform', tagid(id), val))
-    end
-    def axis_view(id)
-      tk_send('axis', 'view', tagid(id))
-      self
-    end
-    def axis_use(id, target=nil)
-      if target
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('axis', 'use', 
-                                                    tagid(id), tagid(target)))
-      else
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('axis', 'use', tagid(id)))
-      end
-    end
-
-    ###################
-
-    def crosshairs_off
-      tk_send_without_enc('crosshairs', 'off')
-      self
-    end
-    def crosshairs_on
-      tk_send_without_enc('crosshairs', 'on')
-      self
-    end
-    def crosshairs_toggle
-      tk_send_without_enc('crosshairs', 'toggle')
-      self
-    end
-
-    ###################
-
-    def element_create(id=nil, keys={})
-      # tk_send('element', 'create', tagid(id), keys)
-      Tk::BLT::PlotComponent::Element.new(self, tagid(id), keys)
-    end
-    def element_activate(*args)
-      if args.empty?
-        list(tk_send('element', 'activate')).collect{|elem|
-          Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-        }
-      else
-        # id, *indices
-        id = args.shift
-        tk_send('element', 'activate', tagid(id), *args)
-      end
-    end
-    def element_closest(x, y, var, *args)
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        bool(tk_send('element', 'closest', x, y, var, 
-                     *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
-      else
-        bool(tk_send('element', 'closest', x, y, var, 
-                     *(args.collect{|id| tagid(id)})))
-      end
-    end
-    def element_deactivate(*ids)
-      tk_send('element', 'deactivate', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def element_delete(*ids)
-      tk_send('element', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def element_exist?(id)
-      bool(tk_send('element', 'exists', tagid(id)))
-    end
-    def element_names(*pats)
-      simplelist(tk_send('element', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
-        Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-      }
-    end
-    def element_show(*names)
-      if names.empty?
-        simplelist(tk_send('element', 'show'))
-      else
-        tk_send('element', 'show', *(names.collect{|n| tagid(n)}))
-        self
-      end
-    end
-    def element_type(id)
-      tk_send('element', 'type', tagid(id))
-    end
-
-    ###################
-
-    def bar_create(id=nil, keys={})
-      # tk_send('bar', 'create', tagid(id), keys)
-      Tk::BLT::PlotComponent::Bar.new(self, tagid(id), keys)
-    end
-    alias bar bar_create
-    def bar_activate(*args)
-      if args.empty?
-        list(tk_send('bar', 'activate')).collect{|elem|
-          Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-        }
-      else
-        # id, *indices
-        id = args.shift
-        tk_send('bar', 'activate', tagid(id), *args)
-      end
-    end
-    def bar_closest(x, y, var, *args)
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        bool(tk_send('bar', 'closest', x, y, var, 
-                     *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
-      else
-        bool(tk_send('bar', 'closest', x, y, var, 
-                     *(args.collect{|id| tagid(id)})))
-      end
-    end
-    def bar_deactivate(*ids)
-      tk_send('bar', 'deactivate', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def bar_delete(*ids)
-      tk_send('bar', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def bar_exist?(id)
-      bool(tk_send('bar', 'exists', tagid(id)))
-    end
-    def bar_names(*pats)
-      simplelist(tk_send('bar', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
-        Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-      }
-    end
-    def bar_show(*names)
-      if names.empty?
-        simplelist(tk_send('bar', 'show'))
-      else
-        tk_send('bar', 'show', *(names.collect{|n| tagid(n)}))
-        self
-      end
-    end
-    def bar_type(id)
-      tk_send('bar', 'type', tagid(id))
-    end
-
-    ###################
-
-    def line_create(id=nil, keys={})
-      # tk_send('line', 'create', tagid(id), keys)
-      Tk::BLT::PlotComponent::Line.new(self, tagid(id), keys)
-    end
-    alias bar line_create
-    def line_activate(*args)
-      if args.empty?
-        list(tk_send('line', 'activate')).collect{|elem|
-          Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-        }
-      else
-        # id, *indices
-        id = args.shift
-        tk_send('line', 'activate', tagid(id), *args)
-      end
-    end
-    def line_closest(x, y, var, *args)
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        bool(tk_send('line', 'closest', x, y, var, 
-                     *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
-      else
-        bool(tk_send('line', 'closest', x, y, var, 
-                     *(args.collect{|id| tagid(id)})))
-      end
-    end
-    def line_deactivate(*ids)
-      tk_send('line', 'deactivate', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def line_delete(*ids)
-      tk_send('line', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def line_exist?(id)
-      bool(tk_send('line', 'exists', tagid(id)))
-    end
-    def line_names(*pats)
-      simplelist(tk_send('line', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
-        Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-      }
-    end
-    def line_show(*names)
-      if names.empty?
-        simplelist(tk_send('line', 'show'))
-      else
-        tk_send('line', 'show', *(names.collect{|n| tagid(n)}))
-        self
-      end
-    end
-    def line_type(id)
-      tk_send('line', 'type', tagid(id))
-    end
-
-    ###################
-
-    def gridline_off
-      tk_send_without_enc('grid', 'off')
-      self
-    end
-    def gridline_on
-      tk_send_without_enc('grid', 'on')
-      self
-    end
-    def gridline_toggle
-      tk_send_without_enc('grid', 'toggle')
-      self
-    end
-
-    ###################
-
-    def legend_window_create(parent=nil, keys=nil)
-      if parent.kind_of?(Hash)
-        keys = _symbolkey2str(parent)
-        parent = keys.delete('parent')
-        widgetname = keys.delete('widgetname')
-        keys.delete('without_creating')
-      elsif keys
-        keys = _symbolkey2str(keys)
-        widgetname = keys.delete('widgetname')
-        keys.delete('without_creating')
-      end
-
-      legend = self.class.new(parent, :without_creating=>true, 
-                              :widgetname=>widgetname)
-      class << legend
-        def __destroy_hook__
-          TkCore::INTERP.tk_windows.delete(@path)
-        end
-      end
-
-      if keys
-        self.legend_configure(keys.update('position'=>legend))
-      else
-        self.legend_configure('position'=>legend)
-      end
-      legend
-    end
-
-    def legend_activate(*pats)
-      list(tk_send('legend', 'activate', 
-                   *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
-        Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-      }
-    end
-    def legend_deactivate(*pats)
-      list(tk_send('legend', 'deactivate', 
-                   *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
-        Tk::BLT::PlotComponent::Element.id2obj(self, elem)
-      }
-    end
-    def legend_get(pos, y=nil)
-      if y
-        Tk::BLT::PlotComponent::Element.id2obj(self, 
-                                               tk_send('legend', 'get', 
-                                                       _at(pos, y)))
-      else
-        Tk::BLT::PlotComponent::Element.id2obj(self, 
-                                               tk_send('legend', 'get', pos))
-      end
-    end
-
-    ###################
-
-    def pen_create(id=nil, keys={})
-      # tk_send('pen', 'create', tagid(id), keys)
-      Tk::BLT::PlotComponent::Pen.new(self, tagid(id), keys)
-    end
-    def pen_delete(*ids)
-      tk_send('pen', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def pen_names(*pats)
-      simplelist(tk_send('pen', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|pen|
-        Tk::BLT::PlotComponent::Pen.id2obj(self, pen)
-      }
-    end
-
-    ###################
-
-    def postscript_output(file=nil, keys={})
-      if file.kind_of?(Hash)
-        keys = file
-        file = nil
-      end
-
-      if file
-        tk_send('postscript', 'output', file, keys)
-        self
-      else
-        tk_send('postscript', 'output', keys)
-      end
-    end
-
-    ###################
-
-    def marker_create(type, keys={})
-      case type
-      when :text, 'text'
-        Tk::BLT::PlotComponent::TextMarker.new(self, keys)
-      when :line, 'line'
-        Tk::BLT::PlotComponent::LineMarker.new(self, keys)
-      when :bitmap, 'bitmap'
-        Tk::BLT::PlotComponent::BitmapMarker.new(self, keys)
-      when :image, 'image'
-        Tk::BLT::PlotComponent::ImageMarker.new(self, keys)
-      when :polygon, 'polygon'
-        Tk::BLT::PlotComponent::PolygonMarker.new(self, keys)
-      when :window, 'window'
-        Tk::BLT::PlotComponent::WindowMarker.new(self, keys)
-      else
-        if type.kind_of?(Tk::BLT::PlotComponent::Marker)
-          type.new(self, keys)
-        else
-          Tk::BLT::PlotComponent::Marker.create_type(self, type, keys)
-        end
-      end
-    end
-    def marker_after(id, target=nil)
-      if target
-        tk_send_without_enc('marker', 'after', tagid(id), tagid(target))
-      else
-        tk_send_without_enc('marker', 'after', tagid(id))
-      end
-      self
-    end
-    def marker_before(id, target=None)
-      if target
-        tk_send_without_enc('marker', 'before', tagid(id), tagid(target))
-      else
-        tk_send_without_enc('marker', 'before', tagid(id))
-      end
-      self
-    end
-    def marker_delete(*ids)
-      tk_send('marker', 'delete', *(ids.collect{|id| tagid(id)}))
-      self
-    end
-    def marker_exist?(id)
-      bool(tk_send('marker', 'exists', tagid(id)))
-    end
-    def marker_names(*pats)
-      simplelist(tk_send('marker', 'names', 
-                         *(pats.collect{|pat| tagid(pat)}))).collect{|id|
-        Tk::BLT::PlotComponent::Marker.id2obj(self, id)
-      }
-    end
-    def marker_type(id)
-      tk_send('marker', 'type', tagid(id))
-    end
-
-    ###################
-
-    def xaxis_cget(option)
-      itemcget('xaxis', option)
-    end
-    def xaxis_configure(slot, value=None)
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        if cmd = slot.delete('command')
-          slot['command'] = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      elsif slot == :command || slot == 'command'
-        cmd = value
-        value = proc{|w, tick| 
-          cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-        }
-      end
-      itemconfigure('xaxis', slot, value)
-    end
-    def xaxis_configinfo(slot=nil)
-      itemconfiginfo('xaxis', slot)
-    end
-    def current_xaxis_configinfo(slot=nil)
-      current_itemconfiginfo('xaxis', slot)
-    end
-    def xaxis_bind(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, 'xaxis', 'bind'], context, cmd, *args)
-      self
-    end
-    def xaxis_bind_append(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, 'xaxis', 'bind'], context, cmd, *args)
-      self
-    end
-    def xaxis_bind_remove(context)
-      _bind_remove([path, 'xaxis', 'bind'], context)
-      self
-    end
-    def xaxis_bindinfo(context=nil)
-      _bindinfo([path, 'xaxis', 'bind'], context)
-    end
-    def xaxis_invtransform(val)
-      list(tk_send('xaxis', 'invtransform', val))
-    end
-    def xaxis_limits
-      list(tk_send('xaxis', 'limits'))
-    end
-    def xaxis_transform(val)
-      list(tk_send('xaxis', 'transform', val))
-    end
-    def xaxis_use(target=nil)
-      if target
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('xaxis', 'use', 
-                                                    tagid(target)))
-      else
-        Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('xaxis', 'use'))
-      end
-    end
-
-    def x2axis_cget(option)
-      itemcget('x2axis', option)
-    end
-    def x2axis_configure(slot, value=None)
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        if cmd = slot.delete('command')
-          slot['command'] = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      elsif slot == :command || slot == 'command'
-        cmd = value
-        value = proc{|w, tick| 
-          cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-        }
-      end
-      itemconfigure('x2axis', slot, value)
-    end
-    def x2axis_configinfo(slot=nil)
-      itemconfiginfo('x2axis', slot)
-    end
-    def current_x2axis_configinfo(slot=nil)
-      current_itemconfiginfo('x2axis', slot)
-    end
-    def x2axis_bind(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, 'x2axis', 'bind'], context, cmd, *args)
-      self
-    end
-    def x2axis_bind_append(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, 'x2axis', 'bind'], context, cmd, *args)
-      self
-    end
-    def x2axis_bind_remove(context)
-      _bind_remove([path, 'x2axis', 'bind'], context)
-      self
-    end
-    def x2axis_bindinfo(context=nil)
-      _bindinfo([path, 'x2axis', 'bind'], context)
-    end
-    def x2axis_invtransform(val)
-      list(tk_send('x2axis', 'invtransform', val))
-    end
-    def x2axis_limits
-      list(tk_send('x2axis', 'limits'))
-    end
-    def x2axis_transform(val)
-      list(tk_send('x2axis', 'transform', val))
-    end
-    def x2axis_use(target=nil)
-      if target
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('x2axis', 'use', 
-                                                    tagid(target)))
-      else
-        Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('x2axis', 'use'))
-      end
-    end
-
-    def yaxis_cget(option)
-      itemcget('yaxis', option)
-    end
-    def yaxis_configure(slot, value=None)
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        if cmd = slot.delete('command')
-          slot['command'] = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      elsif slot == :command || slot == 'command'
-        cmd = value
-        value = proc{|w, tick| 
-          cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-        }
-      end
-      itemconfigure('yaxis', slot, value)
-    end
-    def yaxis_configinfo(slot=nil)
-      itemconfiginfo('yaxis', slot)
-    end
-    def current_yaxis_configinfo(slot=nil)
-      current_itemconfiginfo('yaxis', slot)
-    end
-    def yaxis_bind(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, 'yaxis', 'bind'], context, cmd, *args)
-      self
-    end
-    def yaxis_bind_append(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, 'yaxis', 'bind'], context, cmd, *args)
-      self
-    end
-    def yaxis_bind_remove(context)
-      _bind_remove([path, 'yaxis', 'bind'], context)
-      self
-    end
-    def yaxis_bindinfo(context=nil)
-      _bindinfo([path, 'yaxis', 'bind'], context)
-    end
-    def yaxis_invtransform(val)
-      list(tk_send('yaxis', 'invtransform', val))
-    end
-    def yaxis_limits
-      list(tk_send('yaxis', 'limits'))
-    end
-    def yaxis_transform(val)
-      list(tk_send('yaxis', 'transform', val))
-    end
-    def yaxis_use(target=nil)
-      if target
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('yaxis', 'use', 
-                                                    tagid(target)))
-      else
-        Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('yaxis', 'use'))
-      end
-    end
-
-    def y2axis_cget(option)
-      itemcget('y2axis', option)
-    end
-    def y2axis_configure(slot, value=None)
-      if slot.kind_of?(Hash)
-        slot = _symbolkey2str(slot)
-        if cmd = slot.delete('command')
-          slot['command'] = proc{|w, tick| 
-            cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-          }
-        end
-      elsif slot == :command || slot == 'command'
-        cmd = value
-        value = proc{|w, tick| 
-          cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
-        }
-      end
-      itemconfigure('y2axis', slot, value)
-    end
-    def y2axis_configinfo(slot=nil)
-      axis_configinfo('y2axis', slot)
-    end
-    def current_y2axis_configinfo(slot=nil)
-      current_itemconfiginfo('y2axis', slot)
-    end
-    def y2axis_bind(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, 'y2axis', 'bind'], context, cmd, *args)
-      self
-    end
-    def y2axis_bind_append(context, *args)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, 'y2axis', 'bind'], context, cmd, *args)
-      self
-    end
-    def y2axis_bind_remove(context)
-      _bind_remove([path, 'y2axis', 'bind'], context)
-      self
-    end
-    def y2axis_bindinfo(context=nil)
-      _bindinfo([path, 'y2axis', 'bind'], context)
-    end
-    def y2axis_invtransform(val)
-      list(tk_send('y2axis', 'invtransform', val))
-    end
-    def y2axis_limits
-      list(tk_send('y2axis', 'limits'))
-    end
-    def y2axis_transform(val)
-      list(tk_send('y2axis', 'transform', val))
-    end
-    def y2axis_use(target=nil)
-      if target
-        Tk::BLT::PlotComponent::Axis.id2obj(self, 
-                                            tk_send('y2axis', 'use', 
-                                                    tagid(target)))
-      else
-        Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('y2axis', 'use'))
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/container.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/container.rb
deleted file mode 100644
index cdbec21..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/container.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-#  tkextlib/blt/container.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Container < TkWindow
-    TkCommandNames = ['::blt::container'.freeze].freeze
-    WidgetClassName = 'Container'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    def __strval_optkeys
-      super() << 'name'
-    end
-    private :__strval_optkeys
-
-    def find_command(pat)
-      Hash[*simplelist(tk_send_without_enc('find', '-command', pat))]
-    end
-
-    def find_name(pat)
-      Hash[*simplelist(tk_send_without_enc('find', '-name', pat))]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/cutbuffer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/cutbuffer.rb
deleted file mode 100644
index 1cc39df..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/cutbuffer.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-#  tkextlib/blt/cutbuffer.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module CutBuffer
-    TkCommandNames = ['::blt::cutbuffer'.freeze].freeze
-
-    def self.get(num = 0)
-      Tk.tk_call('::blt::cutbuffer', 'get', num)
-    end
-    def self.rotate(count = 1)
-      Tk.tk_call('::blt::cutbuffer', 'rotate', count)
-    end
-    def self.set(val, num = 0)
-      Tk.tk_call('::blt::cutbuffer', 'set', val, num)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/dragdrop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/dragdrop.rb
deleted file mode 100644
index 68fb9e5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/dragdrop.rb
+++ /dev/null
@@ -1,214 +0,0 @@
-#
-#  tkextlib/blt/dragdrop.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/itemconfig'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module DragDrop
-    extend TkCore
-
-    TkCommandNames = ['::blt::drag&drop'.freeze].freeze
-
-    class Token < TkWindow
-      WidgetClassName = 'DragDropToken'.freeze
-      WidgetClassNames[WidgetClassName] = self
-
-      def initialize(arg)
-        if arg.kind_of?(Hash) # arg is a hash includes the widgetpath of token
-          arg = _symbolkey2str(arg)
-          install_win(nil, arg['widgetname'])
-        else  # arg is a drag&drop source
-          tk_call('::blt::drag&drop', 'source', arg)
-          install_win(nil, tk_call('::blt::drag&drop', 'token', arg))
-        end
-      end
-    end
-
-    ###################################
-
-    extend TkItemConfigMethod
-    extend Tk::ValidateConfigure
-
-    class << self
-      def __item_config_cmd(id)  # id := ['source'|'target', win]
-        ['::blt::drag&drop', id[0], id[1]]
-      end
-      private :__item_config_cmd
-
-      def __item_boolval_optkeys(id)
-        super(id) << 'selftarget'
-      end
-      private :__item_boolval_optkeys
-
-      def __item_listval_optkeys(id)
-        super(id) << 'send'
-      end
-      private :__item_listval_optkeys
-
-      def __item_strval_optkeys(id)
-        super(id) << 'rejectbg' << 'rejectfg' << 'tokenbg'
-      end
-      private :__item_strval_optkeys
-
-      undef itemcget
-      private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
-
-      def source_configure(win, slot, value=None)
-        itemconfigure(['source', win], slot, value)
-      end
-      def source_configinfo(win, slot=nil)
-        itemconfiginfo(['source', win], slot)
-      end
-      def current_source_configinfo(win, slot=nil)
-        current_itemconfiginfo(['source', win], slot)
-      end
-    end
-
-    class PackageCommand < TkValidateCommand
-      class ValidateArgs < TkUtil::CallbackSubst
-        KEY_TBL = [
-          [ ?t, ?w, :token ],
-          [ ?W, ?w, :widget ],
-          nil
-        ]
-
-        PROC_TBL = [
-          [ ?w, TkComm.method(:window) ], 
-          nil
-        ]
-
-        _setup_subst_table(KEY_TBL, PROC_TBL)
-
-        def self.ret_val(val)
-          val
-        end
-      end
-
-      def self._config_keys
-        ['packagecmd']
-      end
-    end
-
-    class SiteCommand < TkValidateCommand
-      class ValidateArgs < TkUtil::CallbackSubst
-        KEY_TBL = [
-          [ ?s, ?b, :compatible ],
-          [ ?t, ?w, :token ],
-          nil
-        ]
-
-        PROC_TBL = [
-          [ ?b, TkComm.method(:bool) ], 
-          [ ?w, TkComm.method(:window) ], 
-          nil
-        ]
-
-        _setup_subst_table(KEY_TBL, PROC_TBL)
-
-        def self.ret_val(val)
-          val
-        end
-      end
-
-      def self._config_keys
-        ['sitecmd']
-      end
-    end
-
-    def self.__validation_class_list
-      super() << PackageCommand << SiteCommand
-    end
-
-    class << self
-      Tk::ValidateConfigure.__def_validcmd(binding, PackageCommand)
-      Tk::ValidateConfigure.__def_validcmd(binding, SiteCommand)
-    end
-
-    ###################################
-
-    class DnD_Handle < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?i, ?s, :ip_name ],
-        [ ?v, ?v, :value ],
-        [ ?W, ?w, :widget ],
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?i, TkComm.method(:string) ], 
-        [ ?v, TkComm.method(:tk_tcl2ruby) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL)
-    end
-
-    def self.source_handler(win, datatype, cmd=Proc.new, *args)
-      _bind_for_event_class(DnD_Handle, 
-                            ['::blt::drag&drop', 'source', win, 'handler'], 
-                            cmd, *args)
-    end
-
-    def self.target_handler(win, datatype, cmd=Proc.new, *args)
-      _bind_for_event_class(DnD_Handle, 
-                            ['::blt::drag&drop', 'target', win, 'handler'], 
-                            cmd, *args)
-    end
-
-    ###################################
-
-    def self.init_source(win)
-      tk_call('::blt::drag&drop', 'source', win)
-    end
-
-    def self.source()
-      list(tk_call('::blt::drag&drop', 'source'))
-    end
-
-    def self.source_handler_list(win)
-      simplelist(tk_call('::blt::drag&drop', 'source', win, 'handler'))
-    end
-    def self.source_handler_info(win, type)
-      tk_tcl2ruby(tk_call('::blt::drag&drop', 'source', win, 'handler', type))
-    end
-
-    def self.target
-      list(tk_call('::blt::drag&drop', 'target'))
-    end
-    def self.target_handler_list(win)
-      simplelist(tk_call('::blt::drag&drop', 'target', win, 'handler'))
-    end
-
-    def self.handle_target(win, type, val=None)
-      tk_call('::blt::drag&drop', 'target', win, 'handle', type, val)
-    end
-
-    def self.token(win)
-      window(tk_call('::blt::drag&drop', 'token', win))
-    end
-
-    def self.drag(win, x, y)
-      tk_call('::blt::drag&drop', 'drag', win, x, y)
-    end
-    def self.drop(win, x, y)
-      tk_call('::blt::drag&drop', 'drop', win, x, y)
-    end
-
-    def self.errors(cmd=Proc.new)
-      tk_call('::blt::drag&drop', 'errors', cmd)
-    end
-
-    def self.active
-      bool(tk_call('::blt::drag&drop', 'active'))
-    end
-
-    def self.location(x=None, y=None)
-      list(tk_call('::blt::drag&drop', 'location', x, y))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/eps.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/eps.rb
deleted file mode 100644
index 586a424..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/eps.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-#  tkextlib/blt/eps.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/canvas'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class EPS < TkcItem
-    CItemTypeName = 'eps'.freeze
-    CItemTypeToClass[CItemTypeName] = self
-  end
-end
-
-class TkCanvas
-  alias __BLT_EPS_item_strval_optkeys __item_strval_optkeys
-  def __item_strval_optkeys(id)
-    __BLT_EPS_item_strval_optkeys(id) + [
-      'shadowcolor', 'title', 'titlecolor'
-    ]
-  end
-  private :__item_strval_optkeys
-
-  alias __BLT_EPS_item_boolval_optkeys __item_boolval_optkeys
-  def __item_boolval_optkeys(id)
-    __BLT_EPS_item_boolval_optkeys(id) + ['showimage']
-  end
-  private :__item_boolval_optkeys
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/graph.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/graph.rb
deleted file mode 100644
index 9ae99bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/graph.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#  tkextlib/blt/graph.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-require 'tkextlib/blt/component.rb'
-
-module Tk::BLT
-  class Graph < TkWindow
-    TkCommandNames = ['::blt::graph'.freeze].freeze
-    WidgetClassName = 'Graph'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    include PlotComponent
-    include GraphCommand
-
-    def __boolval_optkeys
-      ['bufferelements', 'invertxy']
-    end
-    private :__boolval_optkeys
-
-    def __strval_optkeys
-      ['text', 'label', 'title', 'file', 'plotbackground']
-    end
-    private :__strval_optkeys
-
-=begin
-    BarElement_ID = ['blt_graph_bar'.freeze, '00000'.taint].freeze
-
-    def bar(elem=nil, keys={})
-      if elem.kind_of?(Hash)
-        keys = elem
-        elem = nil
-      end
-      unless elem
-        elem = BarElement_ID.join(TkCore::INTERP._ip_id_).freeze
-        BarElement_ID[1].succ!
-      end
-      tk_send('bar', elem, keys)
-      Element.new(self, elem, :without_creating=>true)
-    end
-=end
-
-    def extents(item)
-      num_or_str(tk_send_without_enc('extents', item))
-    end
-
-    def invtransform(x, y)
-      list(tk_send_without_enc('invtransform', x, y))
-    end
-
-    def inside(x, y)
-      bool(tk_send_without_enc('inside', x, y))
-    end
-
-    def snap(output, keys={})
-      tk_send_without_enc('snap', *(hash_kv(keys, false) + output))
-      self
-    end
-
-    def transform(x, y)
-      list(tk_send_without_enc('transform', x, y))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/htext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/htext.rb
deleted file mode 100644
index a0cf3dc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/htext.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-#  tkextlib/blt/htext.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/itemconfig.rb'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Htext<TkWindow
-    Htext_Var = TkVarAccess.new_hash('htext')
-    Htext_Widget = TkVarAccess.new('htext(widget)', :window)
-    Htext_File = TkVarAccess.new('htext(file)')
-    Htext_Line = TkVarAccess.new('htext(line)')
-
-    include TkItemConfigMethod
-    include Scrollable
-
-    TkCommandNames = ['::blt::htext'.freeze].freeze
-    WidgetClassName = 'Htext'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    alias window_cget itemcget
-    alias window_configure itemconfigure
-    alias window_configuinfo itemconfiginfo
-    alias current_window_configuinfo current_itemconfiginfo
-
-    def __strval_optkeys
-      super() << 'filename'
-    end
-  private :__strval_optkeys
-
-    def append(win, keys={})
-      tk_send('append', _epath(win), keys)
-      self
-    end
-
-    def goto_line(idx)
-      tk_send_without_enc('gotoline', idx)
-      self
-    end
-    def current_line
-      number(tk_send_without_enc('gotoline'))
-    end
-
-    def index(str)
-      number(tk_send('index', str))
-    end
-
-    def line_pos(str)
-      tk_send('linepos', str)
-    end
-
-    def range(from=None, to=None)
-      tk_send_without_enc('range', from, to)
-    end
-
-    def scan_mark(pos)
-      tk_send_without_enc('scan', 'mark', pos)
-      self
-    end
-
-    def scan_dragto(pos)
-      tk_send_without_enc('scan', 'dragto', pos)
-      self
-    end
-
-    def search(pat, from=None, to=None)
-      num = number(tk_send('search', pat, from, to))
-      (num < 0)? nil: num
-    end
-
-    def selection_adjust(index)
-      tk_send_without_enc('selection', 'adjust', index)
-      self
-    end
-    def selection_clear()
-      tk_send_without_enc('selection', 'clear')
-      self
-    end
-    def selection_from(index)
-      tk_send_without_enc('selection', 'from', index)
-      self
-    end
-    def selection_line(index)
-      tk_send_without_enc('selection', 'line', index)
-      self
-    end
-    def selection_present()
-      bool(tk_send_without_enc('selection', 'present'))
-    end
-    def selection_range(first, last)
-      tk_send_without_enc('selection', 'range', first, last)
-      self
-    end
-    def selection_to(index)
-      tk_send_without_enc('selection', 'to', index)
-      self
-    end
-    def selection_word(index)
-      tk_send_without_enc('selection', 'word', index)
-      self
-    end
-
-    def windows(pat=None)
-      list(tk_send('windows', pat))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/spline.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/spline.rb
deleted file mode 100644
index 9f75a0b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/spline.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-#  tkextlib/blt/spline.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Spline
-    extend TkCore
-
-    TkCommandNames = ['::blt::spline'.freeze].freeze
-
-    def self.natural(x, y, sx, sy)
-      tk_call('::blt::spline', 'natural', x, y, sx, sy)
-    end
-
-    def self.quadratic(x, y, sx, sy)
-      tk_call('::blt::spline', 'quadratic', x, y, sx, sy)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/stripchart.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/stripchart.rb
deleted file mode 100644
index fe5afbb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/stripchart.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-#  tkextlib/blt/stripchart.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-require 'tkextlib/blt/component.rb'
-
-module Tk::BLT
-  class Stripchart < TkWindow
-    TkCommandNames = ['::blt::stripchart'.freeze].freeze
-    WidgetClassName = 'Stripchart'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    include PlotComponent
-    include GraphCommand
-
-    def __boolval_optkeys
-      ['bufferelements', 'buffergraph', 'invertxy']
-    end
-    private :__boolval_optkeys
-
-    def __strval_optkeys
-      ['text', 'label', 'title', 'file', 
-        'background', 'plotbackground']
-    end
-    private :__strval_optkeys
-
-=begin
-    BarElement_ID = ['blt_stripchart_bar'.freeze, '00000'.taint].freeze
-
-    def bar(elem=nil, keys={})
-      if elem.kind_of?(Hash)
-        keys = elem
-        elem = nil
-      end
-      unless elem
-        elem = BarElement_ID.join(TkCore::INTERP._ip_id_).freeze
-        BarElement_ID[1].succ!
-      end
-      tk_send('bar', elem, keys)
-      Element.new(self, elem, :without_creating=>true)
-    end
-=end
-
-    def extents(item)
-      num_or_str(tk_send_without_enc('extents', item))
-    end
-
-    def invtransform(x, y)
-      list(tk_send_without_enc('invtransform', x, y))
-    end
-
-    def inside(x, y)
-      bool(tk_send_without_enc('inside', x, y))
-    end
-
-    def metafile(file=None)
-      # Windows only
-      tk_send('metafile', file)
-      self
-    end
-
-    def snap(output, keys={})
-      tk_send_without_enc('snap', *(hash_kv(keys, false) + output))
-      self
-    end
-
-    def transform(x, y)
-      list(tk_send_without_enc('transform', x, y))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/table.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/table.rb
deleted file mode 100644
index 0be9d8d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/table.rb
+++ /dev/null
@@ -1,386 +0,0 @@
-#
-#  tkextlib/blt/table.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/itemconfig.rb'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Table
-    include Tk
-    extend Tk
-    extend TkItemConfigMethod
-
-    TkCommandNames = ['::blt::table'.freeze].freeze
-
-    module TableContainer
-      def blt_table_add(*args)
-        Tk::BLT::Table.add(self, *args)
-        self
-      end
-
-      def blt_table_arrange()
-        Tk::BLT::Table.arrange(self)
-        self
-      end
-
-      def blt_table_cget(*args)
-        Tk::BLT::Table.cget(self, *args)
-      end
-
-      def blt_table_configure(*args)
-        Tk::BLT::Table.configure(self, *args)
-        self
-      end
-
-      def blt_table_configinfo(*args)
-        Tk::BLT::Table.configinfo(self, *args)
-      end
-
-      def blt_table_current_configinfo(*args)
-        Tk::BLT::Table.current_configinfo(self, *args)
-      end
-
-      def blt_table_locate(x, y)
-        Tk::BLT::Table.locate(self, x, y)
-      end
-
-      def blt_table_delete(*args)
-        Tk::BLT::Table.delete(self, *args)
-        self
-      end
-
-      def blt_table_extents(item)
-        Tk::BLT::Table.extents(self, item)
-      end
-
-      def blt_table_insert(*args)
-        Tk::BLT::Table.insert(self, *args)
-        self
-      end
-
-      def blt_table_insert_before(*args)
-        Tk::BLT::Table.insert_before(self, *args)
-        self
-      end
-
-      def blt_table_insert_after(*args)
-        Tk::BLT::Table.insert_after(self, *args)
-        self
-      end
-
-      def blt_table_join(first, last)
-        Tk::BLT::Table.join(self, first, last)
-        self
-      end
-
-      def blt_table_save()
-        Tk::BLT::Table.save(self)
-      end
-
-      def blt_table_search(*args)
-        Tk::BLT::Table.search(self, *args)
-      end
-
-      def blt_table_split(*args)
-        Tk::BLT::Table.split(self, *args)
-        self
-      end
-
-      def blt_table_itemcget(*args)
-        Tk::BLT::Table.itemcget(self, *args)
-      end
-
-      def blt_table_itemconfigure(*args)
-        Tk::BLT::Table.itemconfigure(self, *args)
-        self
-      end
-
-      def blt_table_itemconfiginfo(*args)
-        Tk::BLT::Table.itemconfiginfo(self, *args)
-      end
-
-      def blt_table_current_itemconfiginfo(*args)
-        Tk::BLT::Table.current_itemconfiginfo(self, *args)
-      end
-
-      def blt_table_iteminfo(item)
-        Tk::BLT::Table.iteminfo(self, item)
-      end
-    end
-  end
-end
-
-
-############################################
-class << Tk::BLT::Table
-  def __item_cget_cmd(id) # id := [ container, item ]
-    win = (id[0].kind_of?(TkWindow))? id[0].path: id[0].to_s
-    ['::blt::table', 'cget', win, id[1]]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id) # id := [ container, item, ... ]
-    container, *items = id
-    win = (container.kind_of?(TkWindow))? container.path: container.to_s
-    ['::blt::table', 'configure', win, *items]
-  end
-  private :__item_config_cmd
-
-  def __item_pathname(id)
-    win = (id[0].kind_of?(TkWindow))? id[0].path: id[0].to_s
-    win + ';'
-  end
-  private :__item_pathname
-
-  alias __itemcget itemcget
-  alias __itemconfigure itemconfigure
-  alias __itemconfiginfo itemconfiginfo
-  alias __current_itemconfiginfo current_itemconfiginfo
-
-  private :__itemcget, :__itemconfigure
-  private :__itemconfiginfo, :__current_itemconfiginfo
-
-  def __boolval_optkeys
-    super() << 'propagate'
-  end
-  private :__boolval_optkeys
-
-  def tagid(tag)
-    if tag.kind_of?(Array)
-      case tag[0]
-      when Integer
-        # [row, col]
-        tag.join(',')
-      when :c, :C, 'c', 'C', :r, :R, 'r', 'R'
-        # c0 or r1 or C*, and so on
-        tag.collect{|elem| elem.to_s}.join('')
-      else
-        tag
-      end
-    elsif tag.kind_of?(TkWindow)
-      _epath(tag)
-    else
-      tag
-    end
-  end
-
-  def tagid2obj(tagid)
-    tagid
-  end
-
-  ############################################
-
-  def cget(container, option)
-    __itemcget([container], option)
-  end
-
-  def configure(container, *args)
-    __itemconfigure([container], *args)
-  end
-
-  def configinfo(container, *args)
-    __itemconfiginfo([container], *args)
-  end
-
-  def current_configinfo(container, *args)
-    __current_itemconfiginfo([container], *args)
-  end
-
-  def itemcget(container, item, option)
-    __itemcget([container, tagid(item)], option)
-  end
-
-  def itemconfigure(container, *args)
-    if args[-1].kind_of?(Hash)
-      # container, item, item, ... , hash_optkeys
-      keys = args.pop
-      fail ArgumentError, 'no item is given' if args.empty?
-      id = [container]
-      args.each{|item| id << tagid(item)}
-      __itemconfigure(id, keys)
-    else
-      # container, item, item, ... , option, value
-      val = args.pop
-      opt = args.pop
-      fail ArgumentError, 'no item is given' if args.empty?
-      id = [container]
-      args.each{|item| id << tagid(item)}
-      __itemconfigure(id, opt, val)
-    end
-    container
-  end
-
-  def itemconfiginfo(container, *args)
-    slot = args[-1]
-    if slot.kind_of?(String) || slot.kind_of?(Symbol)
-      slot = slot.to_s
-      if slot[0] == ?. || slot =~ /^\d+,\d+$/ || slot =~ /^(c|C|r|R)(\*|\d+)/
-        #   widget     ||    row,col          ||    Ci or Ri
-        slot = nil
-      else
-        # option
-        slot = args.pop
-      end
-    else
-      slot = nil
-    end
-
-    fail ArgumentError, 'no item is given' if args.empty?
-
-    id = [container]
-    args.each{|item| id << tagid(item)}
-    __itemconfiginfo(id, slot)
-  end
-
-  def current_itemconfiginfo(container, *args)
-    slot = args[-1]
-    if slot.kind_of?(String) || slot.kind_of?(Symbol)
-      slot = slot.to_s
-      if slot[0] == ?. || slot =~ /^\d+,\d+$/ || slot =~ /^(c|C|r|R)(\*|\d+)/
-        #   widget     ||    row,col          ||    Ci or Ri
-        slot = nil
-      else
-        # option
-        slot = args.pop
-      end
-    else
-      slot = nil
-    end
-
-    fail ArgumentError, 'no item is given' if args.empty?
-
-    id = [container]
-    args.each{|item| id << tagid(item)}
-    __current_itemconfiginfo(id, slot)
-  end
-
-  def info(container)
-    ret = {}
-    inf = list(tk_call('::blt::table', 'info', container))
-    until inf.empty?
-      opt = inf.slice!(0..1)
-      ret[opt[1..-1]] = opt[1]
-    end
-    ret
-  end
-
-  def iteminfo(container, item)
-    inf = list(tk_call('::blt::table', 'info', container, tagid(item)).chomp)
-
-    ret = []
-    until inf.empty? || (inf[0].kind_of?(String) && inf[0] =~ /^-/)
-      ret << inf.shift
-    end
-
-    if inf.length > 1
-      keys = {}
-      while inf.length > 1
-        opt = inf.slice!(0..1)
-        keys[opt[0][1..-1]] = opt[1]
-      end
-      ret << keys
-    end
-
-    ret
-  end
-
-  ############################################
-
-  def create_container(container)
-    tk_call('::blt::table', container)
-    begin
-      class << container
-        include Tk::BLT::Table::TableContainer
-      end
-    rescue
-      warn('fail to include TableContainer methods (frozen object?)')
-    end
-    container
-  end
-
-  def add(container, *args)
-    if args.empty?
-      tk_call('::blt::table', container)
-    else
-      args = args.collect{|arg|
-        if arg.kind_of?(TkWindow)
-          _epath(arg)
-        elsif arg.kind_of?(Array)  # index
-          arg.join(',')
-        else
-          arg
-        end
-      }
-      tk_call('::blt::table', container, *args)
-    end
-    container
-  end
-
-  def arrange(container)
-    tk_call('::blt::table', 'arrange', container)
-    container
-  end
-
-  def delete(container, *args)
-    tk_call('::blt::table', 'delete', container, *args)
-  end
-
-  def extents(container, item)
-    ret = []
-    inf = list(tk_call('::blt::table', 'extents', container, item))
-    ret << inf.slice!(0..4) until inf.empty?
-    ret
-  end
-
-  def forget(*wins)
-    wins = wins.collect{|win| _epath(win)}
-    tk_call('::blt::table', 'forget', *wins)
-  end
-
-  def insert(container, *args)
-    tk_call('::blt::table', 'insert', container, *args)
-  end
-
-  def insert_before(container, *args)
-    tk_call('::blt::table', 'insert', container, '-before', *args)
-  end
-
-  def insert_after(container, *args)
-    tk_call('::blt::table', 'insert', container, '-after', *args)
-  end
-
-  def join(container, first, last)
-    tk_call('::blt::table', 'join', container, first, last)
-  end
-
-  def locate(container, x, y)
-    tk_call('::blt::table', 'locate', container, x, y)
-  end
-
-  def containers(arg={})
-    list(tk_call('::blt::table', 'containers', *hash_kv(arg)))
-  end
-
-  def containers_pattern(pat)
-    list(tk_call('::blt::table', 'containers', '-pattern', pat))
-  end
-
-  def containers_slave(win)
-    list(tk_call('::blt::table', 'containers', '-slave', win))
-  end
-
-  def save(container)
-    tk_call('::blt::table', 'save', container)
-  end
-
-  def search(container, keys={})
-    list(tk_call('::blt::table', 'containers', *hash_kv(keys)))
-  end
-
-  def split(container, *args)
-    tk_call('::blt::table', 'split', container, *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabnotebook.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabnotebook.rb
deleted file mode 100644
index 508fa2b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabnotebook.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-#  tkextlib/blt/tabnotebook.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-require 'tkextlib/blt/tabset.rb'
-
-module Tk::BLT
-  class Tabnotebook < Tabset
-    TkCommandNames = ['::blt::tabnotebook'.freeze].freeze
-    WidgetClassName = 'Tabnotebook'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    def get_tab(index)
-      Tk::BLT::Tabset::Tab.id2obj(tk_send_without_enc('id', tagindex(index)))
-    end
-    alias get_id get_tab
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabset.rb
deleted file mode 100644
index c26b6ee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tabset.rb
+++ /dev/null
@@ -1,401 +0,0 @@
-#
-#  tkextlib/blt/tabset.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Tabset < TkWindow
-    class Tab < TkObject
-      include TkTreatItemFont
-
-      TabID_TBL = TkCore::INTERP.create_table
-      TabsetTab_ID = ['blt_tabset_tab'.freeze, '00000'.taint].freeze
-
-      TkCore::INTERP.init_ip_env{ TabID_TBL.clear }
-
-      def self.id2obj(tabset, id)
-        tpath = tabset.path
-        return id unless TabID_TBL[tpath]
-        TabID_TBL[tpath][id]? TabID_TBL[tpath]: id
-      end
-
-      def self.new(parent, pos=nil, name=nil, keys={})
-        if pos.kind_of?(Hash)
-          keys = pos
-          name = nil
-          pos  = nil
-        end
-        if name.kind_of?(Hash)
-          keys = name
-          name = nil
-        end
-
-        if name && TabID_TBL[parent.path] && TabID_TBL[parent.path][name]
-          TabID_TBL[parent.path][name]
-        else
-          super(parent, pos, name, keys)
-        end
-      end
-
-      def initialize(parent, pos, name, keys)
-        @t = parent
-        @tpath = parent.path
-        if name
-          @path = @id = name
-          TabID_TBL[@tpath] = {} unless TabID_TBL[@tpath]
-          TabID_TBL[@tpath][@id] = self
-
-          unless (list(tk_call(@tpath, 'tab', 'names', @id)).empty?)
-            if pos
-              idx = tk_call(@tpath, 'index', '-name', @id)
-              if pos.to_s == 'end'
-                tk_call(@tpath, idx, 'moveto', 'after', 'end')
-              else
-                tk_call(@tpath, idx, 'moveto', 'before', pos)
-              end
-            end
-            tk_call(@tpath, 'tab', 'configure', @id, keys)
-            return
-          end
-
-        else
-          @path = @id = TabsetTab_ID.join(TkCore::INTERP._ip_id_)
-          TabID_TBL[@tpath] = {} unless TabID_TBL[@tpath]
-          TabID_TBL[@tpath][@id] = self
-          TabsetTab_ID[1].succ!
-        end
-
-        pos = 'end' unless pos
-        tk_call(@tpath, 'insert', pos, @id, keys)
-      end
-
-      #def bind(context, cmd=Proc.new, *args)
-      #  @t.tab_bind(@id, context, cmd, *args)
-      #  self
-      #end
-      def bind(context, *args)
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-        @t.tab_bind(@id, context, cmd, *args)
-        self
-      end
-      #def bind_append(context, cmd=Proc.new, *args)
-      #  @t.tab_bind_append(@id, context, cmd, *args)
-      #  self
-      #end
-      def bind_append(context, *args)
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-        @t.tab_bind_append(@id, context, cmd, *args)
-        self
-      end
-      def bind_remove(context)
-        @t.tab_bind_remove(@id, context)
-        self
-      end
-      def bindinfo(context=nil)
-        @t.tab_bindinfo(@id, context)
-      end
-
-      def cget(*args)
-        @t.tab_cget(@id, *args)
-      end
-      def configure(*args)
-        @t.tab_configure(@id, *args)
-      end
-      def configinfo(*args)
-        @t.tab_configinfo(@id, *args)
-      end
-      def current_configinfo(*args)
-        @t.current_tab_configinfo(@id, *args)
-      end
-
-      def delete()
-        @t.delete(@id)
-        TabID_TBL[@tpath].delete(@id)
-        self
-      end
-
-      def get_name()
-        @id.dup
-      end
-
-      def focus()
-        @t.focus(self.index)
-      end
-
-      def index()
-        @t.index_name(@id)
-      end
-
-      def invoke()
-        @t.invoke(self.index)
-      end
-
-      def move_before(idx)
-        @t.move_before(self.index, idx)
-      end
-      def move_after(idx)
-        @t.move_after(self.index, idx)
-      end
-
-      def perforation_highlight(mode)
-        @t.perforation.highlight(self.index, mode)
-      end
-      def perforation_invoke()
-        @t.perforation.invoke(self.index)
-      end
-
-      def see()
-        @t.see(self.index)
-      end
-
-      def tearoff(name=None)
-        @t.tab_tearoff(self.index, *args)
-      end
-    end
-
-    ########################################
-
-    class NamedTab < Tab
-      def self.new(parent, name)
-        super(parent, nil, name, {})
-      end
-    end
-
-    ########################################
-
-    include X_Scrollable
-    include TkItemConfigMethod
-
-    TkCommandNames = ['::blt::tabset'.freeze].freeze
-    WidgetClassName = 'Tabset'.freeze
-    WidgetClassNames[WidgetClassName] = self
-
-    def __destroy_hook__
-      Tk::BLT::Tabset::Tab::TabID_TBL.delete(@path)
-    end
-
-    ########################################
-
-    def __boolval_optkeys
-      super() << 'samewidth' << 'tearoff'
-    end
-    private :__strval_optkeys
-
-    def __strval_optkeys
-      super() << 'tabbackground' << 'tabforeground'
-    end
-    private :__strval_optkeys
-
-    def __item_cget_cmd(id)
-      [self.path, 'tab', 'cget', id]
-    end
-    private :__item_cget_cmd
-
-    def __item_config_cmd(id)
-      [self.path, 'tab', 'configure', id]
-    end
-    private :__item_config_cmd
-
-    def __item_pathname(tagOrId)
-      if tagOrId.kind_of?(Tk::BLT::Tabset::Tab)
-        self.path + ';' + tagOrId.id.to_s
-      else
-        self.path + ';' + tagOrId.to_s
-      end
-    end
-    private :__item_pathname
-
-    alias tab_cget itemcget
-    alias tab_configure itemconfigure
-    alias tab_configinfo itemconfiginfo
-    alias current_tab_configinfo current_itemconfiginfo
-
-    def __item_strval_optkeys(id)
-      super(id) << 'shadow'
-    end
-    private :__item_strval_optkeys
-
-    def tagid(tab)
-      if tab.kind_of?(Tk::BLT::Tabset::Tab)
-        tab.id
-      else
-        tab
-      end
-    end
-
-    def tagindex(tab)
-      if tab.kind_of?(Tk::BLT::Tabset::Tab)
-        tab.index
-      else
-        tab
-      end
-    end
-
-    ########################################
-
-    def activate(index)
-      tk_send('activate', tagindex(index))
-      self
-    end
-    alias highlight activate
-
-    #def tabbind(tag, context, cmd=Proc.new, *args)
-    #  _bind([path, "bind", tagid(tag)], context, cmd, *args)
-    #  self
-    #end
-    def tabbind(tag, context, *args)
-      # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind([path, "bind", tagid(tag)], context, cmd, *args)
-      self
-    end
-    #def tabbind_append(tag, context, cmd=Proc.new, *args)
-    #  _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-    #  self
-    #end
-    def tabbind_append(tag, context, *args)
-      # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-      if TkComm._callback_entry?(args[0]) || !block_given?
-        cmd = args.shift
-      else
-        cmd = Proc.new
-      end
-      _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-      self
-    end
-    def tabbind_remove(tag, context)
-      _bind_remove([path, "bind", tagid(tag)], context)
-      self
-    end
-    def tabbindinfo(tag, context=nil)
-      _bindinfo([path, "bind", tagid(tag)], context)
-    end
-
-    def delete(first, last=None)
-      tk_send('delete', tagindex(first), tagindex(last))
-      if first.kind_of?(Tk::BLT::Tabset::Tab)
-        TabID_TBL[@path].delete(first.id)
-      end
-      # middle tabs of the range are unknown
-      if last.kind_of?(Tk::BLT::Tabset::Tab)
-        TabID_TBL[@path].delete(last.id)
-      end
-      self
-    end
-
-    def focus(index)
-      tk_send('focus', tagindex(index))
-      self
-    end
-
-    def get_tab(index)
-      Tk::BLT::Tabset::Tab.id2obj(tk_send_without_enc('get', tagindex(index)))
-    end
-
-    def index(str)
-      num_or_str(tk_send('index', str))
-    end
-    def index_name(tab)
-      num_or_str(tk_send('index', '-mame', tagid(tab)))
-    end
-
-    def insert(pos, tab, keys={})
-      Tk::BLT::Tabset::Tab.new(self, tagindex(pos), tagid(tab), keys)
-    end
-
-    def invoke(index)
-      tk_send('invoke', tagindex(index))
-    end
-
-    def move_before(index, base_idx)
-      tk_send('move', tagindex(index), 'before', tagindex(base_idx))
-      self
-    end
-    def move_after(index, base_idx)
-      tk_send('move', tagindex(index), 'after', tagindex(base_idx))
-      self
-    end
-
-    def nearest(x, y)
-      Tk::BLT::Tabset::Tab.id2obj(num_or_str(tk_send_without_enc('nearest', x, y)))
-    end
-
-    def perforation_highlight(index, mode)
-      tk_send('perforation', 'highlight', tagindex(index), mode)
-      self
-    end
-    def perforation_invoke(index)
-      tk_send('perforation', 'invoke', tagindex(index))
-    end
-
-    def scan_mark(x, y)
-      tk_send_without_enc('scan', 'mark', x, y)
-      self
-    end
-    def scan_dragto(x, y)
-      tk_send_without_enc('scan', 'dragto', x, y)
-      self
-    end
-
-    def see(index)
-      tk_send('see', tagindex(index))
-      self
-    end
-
-    def size()
-      number(tk_send_without_enc('size'))
-    end
-
-    def select(index)
-      tk_send('select', tagindex(index))
-      self
-    end
-
-    def tab_names(pat=None)
-      simplelist(tk_send('tab', 'names', pat)).collect{|name|
-        Tk::BLT::Tabset::Tab.id2obj(name)
-      }
-    end
-
-    def tab_tearoff(index, name=None)
-      window(tk_send('tab', 'tearoff', tagindex(index), name))
-    end
-
-    def xscrollcommand(cmd=Proc.new)
-      configure_cmd 'scrollcommand', cmd
-      self
-    end
-    alias scrollcommand xscrollcommand
-
-    def xview(*index)
-      if index.empty?
-        list(tk_send_without_enc('view'))
-      else
-        tk_send_without_enc('view', *index)
-        self
-      end
-    end
-    alias view xview
-    alias view_moveto xview_moveto
-    alias view_scroll xview_scroll
-
-    alias scrollbar xscrollbar
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/ted.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/ted.rb
deleted file mode 100644
index 3949584..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/ted.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-#  tkextlib/blt/ted.rb
-#
-#    *** This is alpha version, because there is no document on BLT. ***
-#
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Ted
-    extend TkCore
-
-    TkCommandNames = ['::blt::ted'.freeze].freeze
-
-    ##############################
-
-    extend TkItemConfigMethod
-
-    class << self
-      def __item_cget_cmd(id)
-        ['::blt::ted', 'cget', id]
-      end
-      private :__item_cget_cmd
-
-      def __item_config_cmd(id)
-        ['::blt::ted', 'configure', id]
-      end
-      private :__item_config_cmd
-
-      private :itemcget, :itemconfigure
-      private :itemconfiginfo, :current_itemconfiginfo
-
-      def cget(master, option)
-        itemconfigure(master, slot, value)
-      end
-      def configure(master, slot, value=None)
-        itemconfigure(master, slot, value)
-      end
-      def configinfo(master, slot=nil)
-        itemconfiginfo(master, slot)
-      end
-      def current_configinfo(master, slot=nil)
-        current_itemconfiginfo(master, slot)
-      end
-    end
-
-    ##############################
-
-    def self.edit(master, *args)
-      tk_call('::blt::ted', 'edit', master, *args)
-    end
-    def self.rep(master, *args)
-      tk_call('::blt::ted', 'rep', master, *args)
-    end
-    def self.select(master, *args)
-      tk_call('::blt::ted', 'select', master, *args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile.rb
deleted file mode 100644
index 5f5242f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-#  tkextlib/blt/tile.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Tile
-    autoload :Button,      'tkextlib/blt/tile/button.rb'
-    autoload :CheckButton, 'tkextlib/blt/tile/checkbutton.rb'
-    autoload :Checkbutton, 'tkextlib/blt/tile/checkbutton.rb'
-    autoload :Radiobutton, 'tkextlib/blt/tile/radiobutton.rb'
-    autoload :RadioButton, 'tkextlib/blt/tile/radiobutton.rb'
-    autoload :Frame,       'tkextlib/blt/tile/frame.rb'
-    autoload :Label,       'tkextlib/blt/tile/label.rb'
-    autoload :Scrollbar,   'tkextlib/blt/tile/scrollbar.rb'
-    autoload :Toplevel,    'tkextlib/blt/tile/toplevel.rb'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/button.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/button.rb
deleted file mode 100644
index dd715c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/button.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#  tkextlib/blt/tile/button.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/button'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class Button < TkButton
-      TkCommandNames = ['::blt::tile::button'.freeze].freeze
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/checkbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/checkbutton.rb
deleted file mode 100644
index ad58999..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/checkbutton.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-#  tkextlib/blt/tile/checkbutton.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/checkbutton'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class CheckButton < TkCheckButton
-      TkCommandNames = ['::blt::tile::checkbutton'.freeze].freeze
-    end
-    Checkbutton = CheckButton
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/frame.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/frame.rb
deleted file mode 100644
index 10469fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/frame.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#  tkextlib/blt/tile/frame.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class Frame < TkFrame
-      TkCommandNames = ['::blt::tile::frame'.freeze].freeze
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/label.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/label.rb
deleted file mode 100644
index ec67bab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/label.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#  tkextlib/blt/tile/label.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/label'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class Label < TkLabel
-      TkCommandNames = ['::blt::tile::label'.freeze].freeze
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/radiobutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/radiobutton.rb
deleted file mode 100644
index 2316923..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/radiobutton.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-#  tkextlib/blt/tile/radiobutton.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/radiobutton'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class RadioButton < TkRadioButton
-      TkCommandNames = ['::blt::tile::radiobutton'.freeze].freeze
-    end
-    Radiobutton = RadioButton
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/scrollbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/scrollbar.rb
deleted file mode 100644
index ba3bf31..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/scrollbar.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#  tkextlib/blt/tile/scrollbar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/scrollbar'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class Scrollbar < TkScrollbar
-      TkCommandNames = ['::blt::tile::scrollbar'.freeze].freeze
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/toplevel.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/toplevel.rb
deleted file mode 100644
index 6cc2c91..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tile/toplevel.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-#  tkextlib/blt/tile/toplevel.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/toplevel'
-require 'tkextlib/blt/tile.rb'
-
-module Tk::BLT
-  module Tile
-    class Toplevel < TkToplevel
-      TkCommandNames = ['::blt::tile::toplevel'.freeze].freeze
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tree.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tree.rb
deleted file mode 100644
index 07dc7ef..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/tree.rb
+++ /dev/null
@@ -1,923 +0,0 @@
-#
-#  tkextlib/blt/tree.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Tree < TkObject
-    TkCommandNames = ['::blt::tree'.freeze].freeze
-
-    ###################################
-
-   class Node < TkObject
-      TreeNodeID_TBL = TkCore::INTERP.create_table
-      TkCore::INTERP.init_ip_env{ TreeNodeID_TBL.clear }
-
-      def self.id2obj(tree, id)
-        tpath = tree.path
-        return id unless TreeNodeID_TBL[tpath]
-        if TreeNodeID_TBL[tpath][id]
-          TreeNodeID_TBL[tpath][id]
-        else
-          begin
-            self.new(tree, nil, 'node'=>Integer(id))
-          rescue
-            id
-          end
-        end
-      end
-
-      def self.new(tree, parent, keys={})
-        keys = _symbolkey2str(keys)
-        tpath = tree.path
-
-        if (id = keys['node']) && (obj = TreeNodeID_TBL[tpath][id])
-          keys.delete('node')
-          tk_call(tree.path, 'move', id, parent, keys) if parent
-          return obj
-        end
-
-        super(tree, parent, keys)
-      end
-
-      def initialize(tree, parent, keys={})
-        @parent = @tree = tree
-        @tpath = @parent.path
-
-        parent = tk_call(@tpath, 'root') unless parent
-
-        if (id = keys['node']) && bool(tk_call(@tpath, 'exists', id))
-          @path = @id = id
-          keys.delete('node')
-          tk_call(@tpath, 'move', @id, parent, keys) if parent
-        else
-          @path = @id = tk_call(@tpath, 'insert', parent, keys)
-        end
-
-        TreeNodeID_TBL[@tpath] = {} unless TreeNodeID_TBL[@tpath]
-        TreeNodeID_TBL[@tpath][@id] = self
-      end
-
-      def id
-        @id
-      end
-
-      def apply(keys={})
-        @tree.apply(@id, keys)
-        self
-      end
-
-      def children()
-        @tree.children(@id)
-      end
-
-      def copy(parent, keys={})
-        @tree.copy(@id, parent, keys)
-      end
-      def copy_to(dest_tree, parent, keys={})
-        @tree.copy_to(@id, dest_tree, parent, keys)
-      end
-
-      def degree()
-        @tree.degree(@id)
-      end
-
-      def delete()
-        @tree.delete(@id)
-        self
-      end
-
-      def depth()
-        @tree.depth(@id)
-      end
-
-      def dump()
-        @tree.dump(@id)
-      end
-
-      def dump_to_file(file)
-        @tree.dump_to_file(@id, file)
-        self
-      end
-
-      def exist?(keys={})
-        @tree.exist?(@id, keys)
-      end
-
-      def find(keys={})
-        @tree.find(@id, keys)
-      end
-
-      def find_child(label)
-        @tree.find_child(@id, label)
-      end
-
-      def first_child()
-        @tree.first_child(@id)
-      end
-
-      def get()
-        @tree.get(@id)
-      end
-      def get_value(key, default_val=None)
-        @tree.get_value(@id, key, default_val)
-      end
-
-      def index()
-        @tree.index(@id)
-      end
-
-      def leaf?()
-        @tree.leaf?(@id)
-      end
-      def link?()
-        @tree.link?(@id)
-      end
-      def root?()
-        @tree.root?(@id)
-      end
-
-      def keys()
-        @tree.keys(@id)
-      end
-
-      def label(text = nil)
-        @tree.label(@id, nil)
-      end
-      def label=(text)
-        @tree.label(@id, text)
-      end
-
-      def last_child()
-        @tree.last_child(@id)
-      end
-
-      def move(dest, keys={})
-        @tree.keys(@id, dest, keys)
-        self
-      end      
-
-      def next()
-        @tree.next(@id)
-      end
-
-      def next_sibling()
-        @tree.next_sibling(@id)
-      end
-
-      def parent()
-        @tree.parent(@id)
-      end
-
-      def fullpath()
-        @tree.fullpath(@id)
-      end
-
-      def position()
-        @tree.position(@id)
-      end
-
-      def previous()
-        @tree.previous(@id)
-      end
-
-      def prev_sibling()
-        @tree.prev_sibling(@id)
-      end
-
-      def restore(str, keys={})
-        @tree.restore(@id, str, keys)
-        self
-      end
-      def restore_overwrite(str, keys={})
-        @tree.restore_overwrite(@id, str, keys)
-        self
-      end
-
-      def restore_from_file(file, keys={})
-        @tree.restore_from_file(@id, file, keys)
-        self
-      end
-      def restore_overwrite_from_file(file, keys={})
-        @tree.restore_overwrite_from_file(@id, file, keys)
-        self
-      end
-
-      def root()
-        @tree.root(@id)
-        self
-      end
-
-      def set(data)
-        @tree.set(@id, data)
-        self
-      end
-
-      def size()
-        @tree.size(@id)
-      end
-
-      def sort(keys={})
-        @tree.sort(@id, keys)
-        self
-      end
-
-      def type(key)
-        @tree.type(@id, key)
-      end
-
-      def unset(*keys)
-        @tree.unset(@id, *keys)
-        self
-      end
-
-      def values(key=None)
-        @tree.values(@id, key)
-      end
-    end
-
-    ###################################
-
-    class Tag < TkObject
-      TreeTagID_TBL = TkCore::INTERP.create_table
-      TkCore::INTERP.init_ip_env{ TreeTagID_TBL.clear }
-      TreeTag_ID = ['blt_tree_tag'.freeze, '00000'.taint].freeze
-
-      def self.id2obj(tree, id)
-        tpath = tree.path
-        return id unless TreeTagID_TBL[tpath]
-        if TreeTagID_TBL[tpath][id]
-          TreeTagID_TBL[tpath][id]
-        else
-          self.new(tree, id)
-        end
-      end
-
-      def initialize(tree, tag_str = nil)
-        @parent = @tree = tree
-        @tpath = @parent.path
-
-        if tag_str
-          @path = @id = tag_str.dup.freeze
-        else
-          @path = @id = TreeTag_ID.join(TkCore::INTERP._ip_id_)
-          TreeTagID_TBL[@id] = self
-          TreeTag_ID[1].succ!
-        end
-        TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
-        TreeTagID_TBL[@tpath][@id] = self
-      end
-
-      def id
-        @id
-      end
-
-      def add(*nodes)
-        tk_call(@tpath, 'tag', 'add', @id, *nodes)
-        self
-      end
-
-      def delete(*nodes)
-        tk_call(@tpath, 'tag', 'delete', @id, *nodes)
-        self
-      end
-
-      def forget()
-        tk_call(@tpath, 'tag', 'forget', @id)
-        TreeTagID_TBL[@tpath].delete(@id)
-        self
-      end
-
-      def nodes()
-        simplelist(tk_call(@tpath, 'tag', 'nodes', @id)).collect{|node|
-          Tk::BLT::Tree::Node.id2obj(@path, node)
-        }
-      end
-
-      def set(node)
-        tk_call(@tpath, 'tag', 'set', node, @id)
-        self
-      end
-
-      def unset(node)
-        tk_call(@tpath, 'tag', 'unset', node, @id)
-        self
-      end
-    end
-
-    ###################################
-
-    class Notify < TkObject
-      NotifyID_TBL = TkCore::INTERP.create_table
-      TkCore::INTERP.init_ip_env{ NotifyID_TBL.clear }
-
-      def self.id2obj(tree, id)
-        tpath = tree.path
-        return id unless NotifyID_TBL[tpath]
-        if NotifyID_TBL[tpath][id]
-          NotifyID_TBL[tpath][id]
-        else
-          begin
-            self.new([tree, id])
-          rescue
-            id
-          end
-        end
-      end
-
-      def self.new(tree, *args, &b)
-        if tree.kind_of?(Array)
-          # not create
-          if obj = NotifyID_TBL[tree[0].path][tree[1]]
-            return obj
-          else
-            return super(false, tree[0], tree[1])
-          end
-        end
-
-        super(true, tree, *args, &b)
-      end
-
-      def initialize(create, tree, *args, &b)
-        @parent = @tree = tree
-        @tpath = @parent.path
-
-        unless create
-          @path = @id = args[0]
-          return
-        end
-
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0])
-          cmd = args.shift
-        # elsif args[-1].kind_of?(Proc) || args[-1].kind_of?(Method)
-        elsif TkComm._callback_entry?(args[-1])
-          cmd = args.pop
-        elsif b
-          cmd = Proc.new(&b)
-        else
-          fail ArgumentError, "lack of 'command' argument"
-        end
-
-        args = args.collect{|arg| '-' << arg.to_s}
-
-        args << proc{|id, type|
-          cmd.call(Tk::BLT::Tree::Node.id2obj(@tree, id), 
-                   ((type[0] == ?-)? type[1..-1]: type))
-        }
-
-        @path = @id = tk_call(@tpath, 'notify', 'create', *args)
-      end
-
-      def id
-        @id
-      end
-
-      def delete()
-        tk_call(@tpath, 'notify', 'delete', @id)
-        NotifyID_TBL[tpath].delete(@id)
-        self
-      end
-
-      def info()
-        lst = simplelist(tk_call(@tpath, 'notify', 'info', id))
-        lst[0] = Tk::BLT::Tree::Notify.id2obj(@tree, lst[0])
-        lst[1] = simplelist(lst[1]).collect{|flag| flag[1..-1]}
-        lst[2] = tk_tcl2ruby(lst[2])
-        lst
-      end
-    end
-
-    ###################################
-
-    class Trace < TkObject
-      TraceID_TBL = TkCore::INTERP.create_table
-      TkCore::INTERP.init_ip_env{ TraceID_TBL.clear }
-
-      def self.id2obj(tree, id)
-        tpath = tree.path
-        return id unless TraceID_TBL[tpath]
-        if TraceID_TBL[tpath][id]
-          TraceID_TBL[tpath][id]
-        else
-          begin
-            self.new([tree, id])
-          rescue
-            id
-          end
-        end
-      end
-
-      def self.new(tree, *args, &b)
-        if tree.kind_of?(Array)
-          # not create
-          if obj = TraceID_TBL[tree[0].path][tree[1]]
-            return obj
-          else
-            return super(false, tree[0], tree[1])
-          end
-        end
-
-        super(true, tree, *args, &b)
-      end
-
-      def initialize(create, tree, node, key, opts, cmd=nil, &b)
-        @parent = @tree = tree
-        @tpath = @parent.path
-
-        unless create
-          @path = @id = node  # == traceID
-          return
-        end
-
-        if !cmd
-          if b
-            cmd = Proc.new(&b)
-          else
-            fail ArgumentError, "lack of 'command' argument"
-          end
-        end
-
-        @path = @id = tk_call(@tpath, 'trace', 'create', node, key, opts, 
-                              proc{|t, id, k, ops| 
-                                tobj = Tk::BLT::Tree.id2obj(t)
-                                if tobj.kind_of?(Tk::BLT::Tree)
-                                  nobj = Tk::BLT::Tree::Node.id2obj(tobj, id)
-                                else
-                                  nobj = id
-                                end
-                                cmd.call(tobj, nobj, k, ops)
-                              })
-      end
-
-      def id
-        @id
-      end
-
-      def delete()
-        tk_call(@tpath, 'trace', 'delete', @id)
-        TraceID_TBL[tpath].delete(@id)
-        self
-      end
-
-      def info()
-        lst = simplelist(tk_call(@tpath, 'trace', 'info', id))
-        lst[0] = Tk::BLT::Tree::Trace.id2obj(@tree, lst[0])
-        lst[2] = simplelist(lst[2])
-        lst[3] = tk_tcl2ruby(lst[3])
-        lst
-      end
-    end
-
-    ###################################
-
-    TreeID_TBL = TkCore::INTERP.create_table
-    Tree_ID = ['blt_tree'.freeze, '00000'.taint].freeze
-
-    def __keyonly_optkeys
-      {
-        # apply / find  command
-        'invert'=>nil, 'leafonly'=>nil, 'nocase'=>nil,
-
-        # apply / find / sort command
-        'path'=>nil,
-
-        # copy / restore / restorefile command
-        'overwrite'=>nil,
-
-        # copy command
-        'recurse'=>nil, 'tags'=>nil,
-
-        # sort command
-        'ascii'=>nil, 'decreasing'=>nil, 'disctionary'=>nil, 
-        'integer'=>nil, 'real'=>nil, 'recurse'=>nil, 'reorder'=>nil, 
-      }
-    end
-
-    def self.id2obj(id)
-      TreeID_TBL[id]? TreeID_TBL[id]: id
-    end
-
-    def self.names(pat = None)
-      simplelist(tk_call('::blt::tree', 'names', pat)).collect{|name|
-        id2obj(name)
-      }
-    end
-
-    def self.destroy(*names)
-      tk_call('::blt::tree', 'destroy',
-              *(names.collect{|n| (n.kind_of?(Tk::BLT::Tree))? n.id: n }) )
-    end
-
-    def self.new(name = nil)
-      return TreeID_TBL[name] if name && TreeID_TBL[name]
-      super(name)
-    end
-
-    def initialzie(name = nil)
-      if name
-        @path = @id = name
-      else
-        @path = @id = Tree_ID.join(TkCore::INTERP._ip_id_)
-        TreeID_TBL[@id] = self
-        Tree_ID[1].succ!
-      end
-      TreeID_TBL[@id] = self
-      tk_call('::blt::tree', 'create', @id)
-    end
-
-    def __destroy_hook__
-      Tk::BLT::Tree::Node::TreeNodeID_TBL.delete(@path)
-      Tk::BLT::Tree::Tag::TreeTagID_TBL.delete(@path)
-      Tk::BLT::Tree::Notify::NotifyID_TBL.delete(@path)
-      Tk::BLT::Tree::Trace::TraceID_TBL.delete(@path)
-    end
-
-    def tagid(tag)
-      if tag.kind_of?(Tk::BLT::Tree::Node) ||
-          tag.kind_of?(Tk::BLT::Tree::Tag) ||
-          tag.kind_of?(Tk::BLT::Tree::Notify) ||
-          tag.kind_of?(Tk::BLT::Tree::Trace)
-        tag.id
-      else
-        tag  # maybe an Array of configure paramters
-      end
-    end
-
-    def destroy()
-      tk_call('::blt::tree', 'destroy', @id)
-      self
-    end
-
-    def ancestor(node1, node2)
-      Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'ancestor', 
-                                               tagid(node1), tagid(node2)))
-    end
-
-    def apply(node, keys={})
-      tk_call('::blt::tree', 'apply', tagid(node), __conv_keyonly_opts(keys))
-      self
-    end
-
-    def attach(tree_obj)
-      tk_call('::blt::tree', 'attach', tree_obj)
-      self
-    end
-
-    def children(node)
-      simplelist(tk_call('::blt::tree', 'children', tagid(node))).collect{|n|
-        Tk::BLT::Tree::Node.id2obj(self, n)
-      }
-    end
-
-    def copy(src, parent, keys={})
-      id = tk_call('::blt::tree', 'copy', tagid(src), tagid(parent), 
-                   __conv_keyonly_opts(keys))
-      Tk::BLT::Tree::Node.new(self, nil, 'node'=>id)
-    end
-    def copy_to(src, dest_tree, parent, keys={})
-      return copy(src, parent, keys={}) unless dest_tree
-
-      id = tk_call('::blt::tree', 'copy', tagid(src), dest_tree, 
-                   tagid(parent), __conv_keyonly_opts(keys))
-      Tk::BLT::Tree::Node.new(dest_tree, nil, 'node'=>id)
-    end
-
-    def degree(node)
-      number(tk_call('::blt::tree', 'degree', tagid(node)))
-    end
-
-    def delete(*nodes)
-      tk_call('::blt::tree', 'delete', *(nodes.collect{|node| tagid(node)}))
-      nodes.each{|node|
-        if node.kind_of?(Tk::BLT::Tree::Node)
-          Tk::BLT::Tree::Node::TreeNodeID_TBL[@path].delete(node.id)
-        else
-          Tk::BLT::Tree::Node::TreeNodeID_TBL[@path].delete(node.to_s)
-        end
-      }
-      self
-    end
-
-    def depth(node)
-      number(tk_call('::blt::tree', 'depth', tagid(node)))
-    end
-
-    def dump(node)
-      simplelist(tk_call('::blt::tree', 'dump', tagid(node))).collect{|n|
-        simplelist(n)
-      }
-    end
-
-    def dump_to_file(node, file)
-      tk_call('::blt::tree', 'dumpfile', tagid(node), file)
-      self
-    end
-
-    def exist?(node, key=None)
-      bool(tk_call('::blt::tree', 'exists', tagid(node), key))
-    end
-
-    def find(node, keys={})
-      simplelist(tk_call('::blt::tree', 'find', tagid(node), 
-                         __conv_keyonly_opts(keys))).collect{|n|
-        Tk::BLT::Tree::Node.id2obj(self, n)
-      }
-    end
-
-    def find_child(node, label)
-      ret = tk_call('::blt::tree', 'findchild', tagid(node), label)
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def first_child(node)
-      ret = tk_call('::blt::tree', 'firstchild', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def get(node)
-      Hash[*simplelist(tk_call('::blt::tree', 'get', tagid(node)))]
-    end
-    def get_value(node, key, default_val=None)
-      tk_call('::blt::tree', 'get', tagid(node), key, default_val)
-    end
-
-    def index(node)
-      Tk::BLT::Tree::Node.id2obj(self, 
-                                 tk_call('::blt::tree', 'index', tagid(node)))
-    end
-
-    def insert(parent, keys={})
-      id = tk_call('::blt::tree', 'insert', tagid(parent), keys)
-      Tk::BLT::Tree::Node.new(self, nil, 'node'=>id)
-    end
-
-    def ancestor?(node1, node2)
-      bool(tk_call('::blt::tree', 'is', 'ancestor', 
-                   tagid(node1), tagid(node2)))
-    end
-    def before?(node1, node2)
-      bool(tk_call('::blt::tree', 'is', 'before', 
-                   tagid(node1), tagid(node2)))
-    end
-    def leaf?(node)
-      bool(tk_call('::blt::tree', 'is', 'leaf', tagid(node)))
-    end
-    def link?(node)
-      bool(tk_call('::blt::tree', 'is', 'link', tagid(node)))
-    end
-    def root?(node)
-      bool(tk_call('::blt::tree', 'is', 'root', tagid(node)))
-    end
-
-    def keys(node, *nodes)
-      if nodes.empty?
-        simplelist(tk_call('blt::tree', 'keys', tagid(node)))
-      else
-        simplelist(tk_call('blt::tree', 'keys', tagid(node), 
-                           *(nodes.collect{|n| tagid(n)}))).collect{|lst|
-          simplelist(lst)
-        }
-      end
-    end
-
-    def label(node, text=nil)
-      if text
-        tk_call('::blt::tree', 'label', tagid(node), text)
-        text
-      else
-        tk_call('::blt::tree', 'label', tagid(node))
-      end
-    end
-
-    def last_child(node)
-      ret = tk_call('::blt::tree', 'lastchild', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def link(parent, node, keys={})
-      ret = tk_call('::blt::tree', 'link', tagid(parent), tagid(node), 
-                    __conv_keyonly_opts(keys))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def move(node, dest, keys={})
-      tk_call('::blt::tree', 'move', tagid(node), tagid(dest), keys)
-      self
-    end
-
-    def next(node)
-      ret = tk_call('::blt::tree', 'next', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def next_sibling(node)
-      ret = tk_call('::blt::tree', 'nextsibling', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def notify_create(*args, &b)
-      Tk::BLT::Tree::Notify.new(self, *args, &b)
-    end
-
-    def notify_delete(id)
-      if id.kind_of?(Tk::BLT::Tree::Notify)
-        id.delete
-      else
-        tk_call(@path, 'notify', 'delete', id)
-        Tk::BLT::Tree::Notify::NotifyID_TBL[@path].delete(id.to_s)
-      end
-      self
-    end
-
-    def notify_info(id)
-      lst = simplelist(tk_call(@path, 'notify', 'info', tagid(id)))
-      lst[0] = Tk::BLT::Tree::Notify.id2obj(self, lst[0])
-      lst[1] = simplelist(lst[1]).collect{|flag| flag[1..-1]}
-      lst[2] = tk_tcl2ruby(lst[2])
-      lst
-    end
-
-    def notify_names()
-      tk_call(@path, 'notify', 'names').collect{|id|
-        Tk::BLT::Tree::Notify.id2obj(self, id)
-      }
-    end
-
-    def parent(node)
-      ret = tk_call('::blt::tree', 'parent', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def fullpath(node)
-      tk_call('::blt::tree', 'path', tagid(node))
-    end
-
-    def position(node)
-      number(tk_call('::blt::tree', 'position', tagid(node)))
-    end
-
-    def previous(node)
-      ret = tk_call('::blt::tree', 'previous', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def prev_sibling(node)
-      ret = tk_call('::blt::tree', 'prevsibling', tagid(node))
-      (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
-    end
-
-    def restore(node, str, keys={})
-      tk_call('::blt::tree', 'restore', tagid(node), str, 
-              __conv_keyonly_opts(keys))
-      self
-    end
-    def restore_overwrite(node, str, keys={})
-      keys = __conv_keyonly_opts(keys)
-      keys.delete('overwrite')
-      keys.delete(:overwrite)
-      tk_call('::blt::tree', 'restore', tagid(node), str, '-overwrite', keys)
-      self
-    end
-
-    def restore_from_file(node, file, keys={})
-      tk_call('::blt::tree', 'restorefile', tagid(node), file, 
-              __conv_keyonly_opts(keys))
-      self
-    end
-    def restore_overwrite_from_file(node, file, keys={})
-      keys = __conv_keyonly_opts(keys)
-      keys.delete('overwrite')
-      keys.delete(:overwrite)
-      tk_call('::blt::tree', 'restorefile', tagid(node), file, 
-              '-overwrite', keys)
-      self
-    end
-
-    def root(node=None)
-      Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'root', 
-                                               tagid(node)))
-    end
-
-    def set(node, data)
-      unless data.kind_of?(Hash)
-        fail ArgumentError, 'Hash is expected for data'
-      end
-      args = []
-      data.each{|k, v|  args << k << v}
-      tk_call('::blt::tree', 'set', tagid(node), *args)
-      self
-    end
-
-    def size(node)
-      number(tk_call('::blt::tree', 'size', tagid(node)))
-    end
-
-    def sort(node, keys={})
-      tk_call('::blt::tree', 'sort', tagid(node), __conv_keyonly_opts(keys))
-      self
-    end
-
-    def tag_add(tag, *nodes)
-      tk_call(@path, 'tag', 'add', tagid(tag), *(nodes.collect{|n| tagid(n)}))
-      self
-    end
-
-    def tag_delete(tag, *nodes)
-      tk_call(@path, 'tag', 'delete', tagid(tag), 
-              *(nodes.collect{|n| tagid(n)}))
-      self
-    end
-
-    def tag_forget(tag)
-      tag = tag.id if tag.kind_of?(Tk::BLT::Tree::Tag)
-      tk_call(@path, 'tag', 'forget', tag)
-      TreeTagID_TBL[@path].delete(tag)
-      self
-    end
-
-    def tag_get(node, *patterns)
-      simplelist(tk_call(@tpath, 'tag', 'get', tagid(node), 
-                         *(patterns.collect{|pat| tagid(pat)}))).collect{|str|
-        Tk::BLT::Tree::Tag.id2obj(self, str)
-      }
-    end
-
-    def tag_names(node = None)
-      simplelist(tk_call(@tpath, 'tag', 'names', tagid(node))).collect{|str|
-        Tk::BLT::Tree::Tag.id2obj(self, str)
-      }
-    end
-
-    def tag_nodes(tag)
-      simplelist(tk_call(@tpath, 'tag', 'nodes', tagid(tag))).collect{|node|
-        Tk::BLT::Tree::Node.id2obj(self, node)
-      }
-    end
-
-    def tag_set(node, *tags)
-      tk_call(@path, 'tag', 'set', tagid(node), *(tags.collect{|t| tagid(t)}))
-      self
-    end
-
-    def tag_unset(node, *tags)
-      tk_call(@path, 'tag', 'unset', tagid(node), 
-              *(tags.collect{|t| tagid(t)}))
-      self
-    end
-
-    def trace_create(*args, &b)
-      Tk::BLT::Tree::Trace.new(self, *args, &b)
-    end
-
-=begin
-    def trace_delete(*args)
-      args.each{|id|
-        if id.kind_of?(Tk::BLT::Tree::Trace)
-          id.delete
-        else
-          tk_call(@path, 'trace', 'delete', id)
-          Tk::BLT::Tree::Trace::TraceID_TBL[@path].delete(id.to_s)
-        end
-        self
-      }
-    end
-=end
-    def trace_delete(*args)
-      args = args.collect{|id| tagid(id)}
-      tk_call(@path, 'trace', 'delete', *args)
-      args.each{|id| Tk::BLT::Tree::Trace::TraceID_TBL[@path].delete(id.to_s)}
-      self
-    end
-
-    def trace_info(id)
-      lst = simplelist(tk_call(@path, 'trace', 'info', tagid(id)))
-      lst[0] = Tk::BLT::Tree::Trace.id2obj(self, lst[0])
-      lst[2] = simplelist(lst[2])
-      lst[3] = tk_tcl2ruby(lst[3])
-      lst
-    end
-
-    def trace_names()
-      tk_call(@path, 'trace', 'names').collect{|id|
-        Tk::BLT::Tree::Trace.id2obj(self, id)
-      }
-    end
-
-    def type(node, key)
-      tk_call('::blt::tree', 'type', tagid(node), key)
-    end
-
-    def unset(node, *keys)
-      tk_call('::blt::tree', 'unset', tagid(node), *keys)
-      self
-    end
-
-    def values(node, key=None)
-      simplelist(tk_call('::blt::tree', 'values', tagid(node), key))
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/treeview.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/treeview.rb
deleted file mode 100644
index 0343d28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/treeview.rb
+++ /dev/null
@@ -1,1146 +0,0 @@
-#
-#  tkextlib/blt/treeview.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-require 'tk/validation.rb'
-
-module Tk::BLT
-  class Treeview < TkWindow
-    module ConfigMethod
-    end
-
-    module TagOrID_Methods
-    end
-
-    class Node < TkObject
-    end
-
-    class Tag < TkObject
-    end
-  end
-
-  class Hiertable < Treeview
-  end
-end
-
-######################################
-
-module Tk::BLT::Treeview::ConfigMethod
-  include TkItemConfigMethod
-
-  def __item_boolval_optkeys(id)
-    case id
-    when Array
-      # id := [ 'column', name ]
-      ['edit', 'hide']
-    when 'sort'
-      ['decreasing']
-    else
-      []
-    end
-  end
-  private :__item_boolval_optkeys
-
-  def __item_strval_optkeys(id)
-    case id
-    when Array
-      # id := [ 'column', name ]
-      super() << 'titleforeground' << 'titleshadow'
-    when 'sort'
-      ['decreasing']
-    else
-      []
-    end
-  end
-  private :__item_strval_optkeys
-
-  def __item_listval_optkeys(id)
-    case id
-    when 'entry'
-      ['bindtags']
-    else
-      []
-    end
-  end
-  private :__item_listval_optkeys
-
-  def __item_cget_cmd(id)
-    if id.kind_of?(Array)
-      # id := [ type, name ]
-      [self.path, id[0], 'cget', id[1]]
-    else
-      [self.path, id, 'cget']
-    end
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    if id.kind_of?(Array)
-      # id := [ type, name ]
-      [self.path, id[0], 'configure', id[1]]
-    else
-      [self.path, id, 'configure']
-    end
-  end
-  private :__item_config_cmd
-
-  def __item_pathname(id)
-    if id.kind_of?(Array)
-      id = tagid(id[1])
-    end
-    [self.path, id].join(';')
-  end
-  private :__item_pathname
-
-  def column_cget(name, option)
-    itemcget(['column', name], option)
-  end
-  def column_configure(name, slot, value=None)
-    itemconfigure(['column', name], slot, value)
-  end
-  def column_configinfo(name, slot=nil)
-    itemconfiginfo(['column', name], slot)
-  end
-  def current_column_configinfo(name, slot=nil)
-    current_itemconfiginfo(['column', name], slot)
-  end
-
-  def button_cget(option)
-    itemcget('button', option)
-  end
-  def button_configure(slot, value=None)
-    itemconfigure('button', slot, value)
-  end
-  def button_configinfo(slot=nil)
-    itemconfiginfo('button', slot)
-  end
-  def current_button_configinfo(slot=nil)
-    current_itemconfiginfo('button', slot)
-  end
-
-  def entry_cget(option)
-    ret = itemcget('entry', option)
-    if option == 'bindtags' || option == :bindtags
-      ret.collect{|tag| TkBindTag.id2obj(tag)}
-    else
-      ret
-    end
-  end
-  def entry_configure(slot, value=None)
-    itemconfigure('entry', slot, value)
-  end
-  def entry_configinfo(slot=nil)
-    ret = itemconfiginfo('entry', slot)
-
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        if slot == 'bindtags' || slot == :bindtags
-          ret[-2] = ret[-2].collect{|tag| TkBindTag.id2obj(tag)}
-          ret[-1] = ret[-1].collect{|tag| TkBindTag.id2obj(tag)}
-        end
-      else
-        inf = ret.assoc('bindtags')
-        inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
-        inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (inf = ret['bindtags'])
-        inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
-        inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
-        ret['bindtags'] = inf
-      end
-    end
-
-    ret
-  end
-  def current_entry_configinfo(slot=nil)
-    ret = current_itemconfiginfo('entry', slot)
-
-    if (val = ret['bindtags'])
-      ret['bindtags'] = val.collect{|tag| TkBindTag.id2obj(tag)}
-    end
-
-    ret
-  end
-
-  def sort_cget(option)
-    itemcget('sort', option)
-  end
-  def sort_configure(slot, value=None)
-    itemconfigure('sort', slot, value)
-  end
-  def sort_configinfo(slot=nil)
-    itemconfiginfo('sort', slot)
-  end
-  def current_sort_configinfo(slot=nil)
-    current_itemconfiginfo('sort', slot)
-  end
-
-  def text_cget(option)
-    itemcget('text', option)
-  end
-  def text_configure(slot, value=None)
-    itemconfigure('text', slot, value)
-  end
-  def text_configinfo(slot=nil)
-    itemconfiginfo('text', slot)
-  end
-  def current_text_configinfo(slot=nil)
-    current_itemconfiginfo('text', slot)
-  end
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-class Tk::BLT::Treeview
-  TkCommandNames = ['::blt::treeview'.freeze].freeze
-  WidgetClassName = 'TreeView'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  include Scrollable
-  include ValidateConfigure
-  include ItemValidateConfigure
-  include Tk::BLT::Treeview::ConfigMethod
-
-  ########################
-
-  def __boolval_optkeys
-    ['autocreate', 'allowduplicates', 'exportselection', 'flat', 'hideroot', 
-      'newtags', 'showtitles', 'sortselection']
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() + ['focusforeground', 'linecolor', 'separator', 'trim']
-  end
-  private :__strval_optkeys
-
-  ########################
-
-  class OpenCloseCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?W, ?w, :widget ], 
-        [ ?p, ?s, :name ], 
-        [ ?P, ?s, :fullpath ], 
-        [ ?#, ?x, :node_id ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?x, TkComm.method(:num_or_str) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      ['opencommand', 'closecomand']
-    end
-  end
-
-  def __validation_class_list
-    super() << OpenCloseCommand
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, OpenCloseCommand)
-
-  ########################
-
-  def __item_validation_class_list(id)
-    case id
-    when 'entry'
-      super(id) << OpenCloseCommand
-    else
-      super(id)
-    end
-  end
-
-  Tk::ItemValidateConfigure.__def_validcmd(binding, OpenCloseCommand)
-
-  ########################
-
-  def __destroy_hook__
-    Tk::BLT::Treeview::Node::TreeNodeID_TBL.delete(@path)
-    Tk::BLT::Treeview::Tag::TreeTagID_TBL.delete(@path)
-  end
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::BLT::Treeview::Node) \
-      || tag.kind_of?(Tk::BLT::Treeview::Tag)
-      tag.id
-    else
-      tag  # maybe an Array of configure paramters
-    end
-  end
-  private :tagid
-
-  def tagid2obj(tagid)
-    if tagid.kind_of?(Integer)
-      Tk::BLT::Treeview::Node.id2obj(self, tagid.to_s)
-    elsif tagid.kind_of?(String)
-      if tagid =~ /^\d+$/
-        Tk::BLT::Treeview::Node.id2obj(self, tagid)
-      else
-        Tk::BLT::Treeview::Tag.id2obj(self, tagid)
-      end
-    else
-      tagid
-    end
-  end
-
-  def bbox(*tags)
-    list(tk_send('bbox', *(tags.collect{|tag| tagid(tag)})))
-  end
-
-  def screen_bbox(*tags)
-    list(tk_send('bbox', '-screen', *(tags.collect{|tag| tagid(tag)})))
-  end
-
-  def tag_bind(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@path, 'bind', tagid(tag)], seq, cmd, *args)
-    self
-  end
-  def tag_bind_append(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@path, 'bind', tagid(tag)], seq, cmd, *args)
-    self
-  end
-  def tag_bind_remove(tag, seq)
-    _bind_remove([@path, 'bind', tagid(tag)], seq)
-    self
-  end
-  def tag_bindinfo(tag, seq=nil)
-    _bindinfo([@path, 'bind', tagid(tag)], seq)
-  end
-
-  def button_activate(tag)
-    tk_send('button', 'activate', tagid(tag))
-    self
-  end
-
-  def button_bind(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@path, 'button', 'bind', tagid(tag)], seq, cmd, *args)
-    self
-  end
-  def button_bind_append(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@path, 'button', 'bind', tagid(tag)], seq, cmd, *args)
-    self
-  end
-  def button_bind_remove(tag, seq)
-    _bind_remove([@path, 'button', 'bind', tagid(tag)], seq)
-    self
-  end
-  def button_bindinfo(tag, seq=nil)
-    _bindinfo([@path, 'button', 'bind', tagid(tag)], seq)
-  end
-
-  def close(*tags)
-    tk_send('close', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-  def close_recurse(*tags)
-    tk_send('close', '-recurse', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-
-  def column_activate(column=None)
-    if column == None
-      tk_send('column', 'activate')
-    else
-      tk_send('column', 'activate', column)
-      self
-    end
-  end
-
-  def column_delete(*fields)
-    tk_send('column', 'delete', *fields)
-    self
-  end
-  def column_insert(pos, field, *opts)
-    tk_send('column', 'insert', pos, field, *opts)
-    self
-  end
-  def column_invoke(field)
-    tk_send('column', 'invoke', field)
-    self
-  end
-  def column_move(name, dest)
-    tk_send('column', 'move', name, dest)
-    self
-  end
-  def column_names()
-    simplelist(tk_send('column', 'names'))
-  end
-  def column_nearest(x, y=None)
-    tk_send('column', 'nearest', x, y)
-  end
-
-  def curselection
-    simplelist(tk_send('curselection')).collect{|id| tagid2obj(id)}
-  end
-
-  def delete(*tags)
-    tk_send('delete', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-
-  def entry_activate(tag)
-    tk_send('entry', 'activate', tagid(tag))
-    self
-  end
-  def entry_children(tag, first=None, last=None)
-    simplelist(tk_send('entry', 'children', tagid(tag), 
-                       first, last)).collect{|id| tagid2obj(id)}
-  end
-  def entry_delete(tag, first=None, last=None)
-    tk_send('entry', 'delete', tagid(tag), first, last)
-  end
-  def entry_before?(tag1, tag2)
-    bool(tk_send('entry', 'isbefore', tagid(tag1), tagid(tag2)))
-  end
-  def entry_hidden?(tag)
-    bool(tk_send('entry', 'ishidden', tagid(tag)))
-  end
-  def entry_open?(tag)
-    bool(tk_send('entry', 'isopen', tagid(tag)))
-  end
-
-  def entry_size(tag)
-    number(tk_send('entry', 'size', tagid(tag)))
-  end
-  def entry_size_recurse(tag)
-    number(tk_send('entry', 'size', '-recurse', tagid(tag)))
-  end
-
-  def _search_flags(keys)
-    keys = _symbolkey2str(keys)
-    keys['exact'] = None if keys.delete('exact')
-    keys['glob'] = None if keys.delete('glob')
-    keys['regexp'] = None if keys.delete('regexp')
-    keys['nonmatching'] = None if keys.delete('nonmatching')
-  end
-  private :_search_flags
-
-  ################################
-
-  class FindExecFlagValue < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?W, ?w, :widget ], 
-        [ ?p, ?s, :name ], 
-        [ ?P, ?s, :fullpath ], 
-        [ ?#, ?x, :node_id ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?x, TkComm.method(:num_or_str) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      []
-    end
-  end
-
-  def _find_exec_flag_value(val)
-    if val.kind_of?(Array)
-      cmd, *args = val
-      FindExecFlagValue.new(cmd, args.join(' '))
-    elsif TkComm._callback_entry?(val)
-      FindExecFlagValue.new(val)
-    else
-      val
-    end
-  end
-
-  ################################
-
-  def find(first, last, keys={})
-    keys = _search_flags(keys)
-    keys['exec'] = _find_exec_flag_value(keys['exec']) if keys.key?('exec')
-    args = hash_kv(keys) << '--' << tagid(first) << tagid(last)
-    simplelist(tk_send('find', *args)).collect{|id| tagid2obj(id)}
-  end
-
-  def tag_focus(tag)
-    tk_send('focus', tagid(tag))
-    self
-  end
-  def get(*tags)
-    simplelist(tk_send('get', *(tags.collect{|tag| tagid(tag)})))
-  end
-  def get_full(*tags)
-    simplelist(tk_send('get', '-full', *(tags.collect{|tag| tagid(tag)})))
-  end
-
-  def hide(*tags)
-    if tags[-1].kind_of?(Hash)
-      keys = tags.pop
-    else
-      keys = {}
-    end
-    keys = _search_flags(keys)
-    args = hash_kv(keys) << '--'
-    args.concat(tags.collect{|t| tagid(t)})
-    tk_send('hide', *args)
-    self
-  end
-
-  def index(str)
-    tagid2obj(tk_send('index', str))
-  end
-  def index_at(tag, str)
-    tagid2obj(tk_send('index', '-at', tagid(tag), str))
-  end
-  def index_at_path(tag, str)
-    tagid2obj(tk_send('index', '-at', tagid(tag), '-path', str))
-  end
-
-  def insert(pos, parent=nil, keys={})
-    Tk::BLT::Treeview::Node.new(pos, parent, keys)
-  end
-  def insert_at(tag, pos, parent=nil, keys={})
-    if parent.kind_of?(Hash)
-      keys = parent
-      parent = nil
-    end
-
-    keys = _symbolkey2str(keys)
-    keys['at'] = tagid(tag)
-
-    Tk::BLT::Treeview::Node.new(pos, parent, keys)
-  end
-
-  def move_before(tag, dest)
-    tk_send('move', tagid(tag), 'before', tagid(dest))
-    self
-  end
-  def move_after(tag, dest)
-    tk_send('move', tagid(tag), 'after', tagid(dest))
-    self
-  end
-  def move_into(tag, dest)
-    tk_send('move', tagid(tag), 'into', tagid(dest))
-    self
-  end
-
-  def nearest(x, y, var=None)
-    tagid2obj(tk_send('nearest', x, y, var))
-  end
-
-  def open(*tags)
-    tk_send('open', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-  def open_recurse(*tags)
-    tk_send('open', '-recurse', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-
-  def range(first, last)
-    simplelist(tk_send('range', tagid(first), tagid(last))).collect{|id|
-      tagid2obj(id)
-    }
-  end
-  def range_open(first, last)
-    simplelist(tk_send('range', '-open', 
-                       tagid(first), tagid(last))).collect{|id|
-      tagid2obj(id)
-    }
-  end
-
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-
-  def see(tag)
-    tk_send_without_enc('see', tagid(tag))
-    self
-  end
-  def see_anchor(anchor, tag)
-    tk_send_without_enc('see', '-anchor', anchor, tagid(tag))
-    self
-  end
-
-  def selection_anchor(tag)
-    tk_send_without_enc('selection', 'anchor', tagid(tag))
-    self
-  end
-  def selection_cancel()
-    tk_send_without_enc('selection', 'cancel')
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', tagid(first), tagid(last))
-    self
-  end
-  def selection_clear_all()
-    tk_send_without_enc('selection', 'clearall')
-    self
-  end
-  def selection_mark(tag)
-    tk_send_without_enc('selection', 'mark', tagid(tag))
-    self
-  end
-  def selection_include?(tag)
-    bool(tk_send('selection', 'include', tagid(tag)))
-  end
-  def selection_present?()
-    bool(tk_send('selection', 'present'))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', tagid(first), tagid(last))
-    self
-  end
-  def selection_toggle(first, last=None)
-    tk_send_without_enc('selection', 'toggle', tagid(first), tagid(last))
-    self
-  end
-
-  def show(*tags)
-    if tags[-1].kind_of?(Hash)
-      keys = tags.pop
-    else
-      keys = {}
-    end
-    keys = _search_flags(keys)
-    args = hash_kv(keys) << '--'
-    args.concat(tags.collect{|t| tagid(t)})
-    tk_send('show', *args)
-    self
-  end
-
-  def sort_auto(mode)
-    tk_send('sort', 'auto', mode)
-    self
-  end
-  def sort_auto=(mode)
-    tk_send('sort', 'auto', mode)
-    mode
-  end
-  def sort_auto?
-    bool(tk_send('sort', 'auto'))
-  end
-  def sort_once(*tags)
-    tk_send('sort', 'once', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-  def sort_once_recurse(*tags)
-    tk_send('sort', 'once', '-recurse', *(tags.collect{|tag| tagid(tag)}))
-    self
-  end
-
-  def tag_add(tag, *ids)
-    tk_send('tag', 'add', tagid(tag), *ids)
-    self
-  end
-  def tag_delete(tag, *ids)
-    tk_send('tag', 'delete', tagid(tag), *ids)
-    self
-  end
-  def tag_forget(tag)
-    tk_send('tag', 'forget', tagid(tag))
-    self
-  end
-  def tag_names(id=nil)
-    id = (id)? tagid(id): None
-
-    simplelist(tk_send('tag', 'nodes', id)).collect{|tag|
-      Tk::BLT::Treeview::Tag.id2obj(self, tag)
-    }
-  end
-  def tag_nodes(tag)
-    simplelist(tk_send('tag', 'nodes', tagid(tag))).collect{|id|
-      Tk::BLT::Treeview::Node.id2obj(self, id)
-    }
-  end
-
-  def text_apply
-    tk_send('text', 'apply')
-    self
-  end
-  def text_cancel
-    tk_send('text', 'cancel')
-    self
-  end
-
-  def text_delete(first, last)
-    tk_send('text', 'delete', first, last)
-    self
-  end
-  def text_get(x, y)
-    tk_send('text', 'get', x, y)
-  end
-  def text_get_root(x, y)
-    tk_send('text', 'get', '-root', x, y)
-  end
-  def text_icursor(idx)
-    tk_send('text', 'icursor', idx)
-    self
-  end
-  def text_index(idx)
-    num_or_str(tk_send('text', 'index', idx))
-  end
-  def text_insert(idx, str)
-    tk_send('text', 'insert', idx, str)
-    self
-  end
-
-  def text_selection_adjust(idx)
-    tk_send('text', 'selection', 'adjust', idx)
-    self
-  end
-  def text_selection_clear
-    tk_send('text', 'selection', 'clear')
-    self
-  end
-  def text_selection_from(idx)
-    tk_send('text', 'selection', 'from', idx)
-    self
-  end
-  def text_selection_present
-    num_or_str(tk_send('text', 'selection', 'present'))
-  end
-  def text_selection_range(start, last)
-    tk_send('text', 'selection', 'range', start, last)
-    self
-  end
-  def text_selection_to(idx)
-    tk_send('text', 'selection', 'to', idx)
-    self
-  end
-
-  def toggle(tag)
-    tk_send('toggle', tagid(tag))
-    self
-  end
-end
-
-######################################
-
-module Tk::BLT::Treeview::TagOrID_Methods
-  def bbox
-    @tree.bbox(self)
-  end
-  def screen_bbox
-    @tree.screen_bbox(self)
-  end
-
-  def bind(seq, *args)
-    @tree.tag_bind(self, seq, *args)
-    self
-  end
-  def bind_append(seq, *args)
-    @tree.tag_bind_append(self, seq, *args)
-    self
-  end
-  def bind_remove(seq)
-    @tree.tag_bind_remove(self, seq)
-    self
-  end
-  def bindinfo(seq=nil)
-    @tree.tag_bindinfo(self, seq)
-  end
-
-  def button_activate
-    @tree.button_activate(self)
-    self
-  end
-
-  def button_bind(seq, *args)
-    @tree.button_bind(self, seq, *args)
-    self
-  end
-  def button_bind_append(seq, *args)
-    @tree.button_bind_append(self, seq, *args)
-    self
-  end
-  def button_bind_remove(seq)
-    @tree.button_bind_remove(self, seq)
-    self
-  end
-  def button_bindinfo(seq=nil)
-    @tree.button_bindinfo(self, seq)
-  end
-
-  def close
-    @tree.close(self)
-    self
-  end
-  def close_recurse
-    @tree.close_recurse(self)
-    self
-  end
-
-  def delete
-    @tree.delete(self)
-    self
-  end
-
-  def entry_activate
-    @tree.entry_activate(self)
-    self
-  end
-  def entry_children(first=None, last=None)
-    @tree.entry_children(self, first, last)
-  end
-  def entry_delete(first=None, last=None)
-    @tree.entry_delete(self, first, last)
-  end
-  def entry_before?(tag)
-    @tree.entry_before?(self, tag)
-  end
-  def entry_hidden?
-    @tree.entry_before?(self)
-  end
-  def entry_open?
-    @tree.entry_open?(self)
-  end
-
-  def entry_size
-    @tree.entry_size(self)
-  end
-  def entry_size_recurse
-    @tree.entry_size_recurse(self)
-  end
-
-  def focus
-    @tree.tag_focus(self)
-    self
-  end
-
-  def get
-    @tree.get(self)
-  end
-  def get_full
-    @tree.get_full(self)
-  end
-
-  def hide
-    @tree.hide(self)
-    self
-  end
-
-  def index(str)
-    @tree.index_at(self, str)
-  end
-  def index_path(str)
-    @tree.index_at_path(self, str)
-  end
-
-  def insert(pos, parent=nil, keys={})
-    @tree.insert_at(self, pos, parent, keys)
-  end
-
-  def move_before(dest)
-    @tree.move_before(self, dest)
-    self
-  end
-  def move_after(dest)
-    @tree.move_after(self, dest)
-    self
-  end
-  def move_into(dest)
-    @tree.move_into(self, dest)
-    self
-  end
-
-  def open
-    @tree.open(self)
-    self
-  end
-  def open_recurse
-    @tree.open_recurse(self)
-    self
-  end
-
-  def range_to(tag)
-    @tree.range(self, tag)
-  end
-  def range_open_to(tag)
-    @tree.range(self, tag)
-  end
-
-  def see
-    @tree.see(self)
-    self
-  end
-  def see_anchor(anchor)
-    @tree.see_anchor(anchor, self)
-    self
-  end
-
-  def selection_anchor
-    @tree.selection_anchor(self)
-    self
-  end
-  def selection_clear
-    @tree.selection_clear(self)
-    self
-  end
-  def selection_mark
-    @tree.selection_mark(self)
-    self
-  end
-  def selection_include?
-    @tree.selection_include?(self)
-  end
-  def selection_set
-    @tree.selection_set(self)
-    self
-  end
-  def selection_toggle
-    @tree.selection_toggle(self)
-    self
-  end
-
-  def show
-    @tree.show(self)
-    self
-  end
-
-  def sort_once
-    @tree.sort_once(self)
-    self
-  end
-  def sort_once_recurse
-    @tree.sort_once_recurse(self)
-    self
-  end
-
-  def toggle
-    @tree.toggle(self)
-    self
-  end
-end
-
-######################################
-
-class Tk::BLT::Treeview::Node < TkObject
-  include Tk::BLT::Treeview::TagOrID_Methods
-
-  TreeNodeID_TBL = TkCore::INTERP.create_table
-  TreeNode_ID = ['blt_treeview_node'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ TreeNodeID_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless TreeNodeID_TBL[tpath]
-    if TreeNodeID_TBL[tpath][id]
-      TreeNodeID_TBL[tpath][id]
-    else
-      begin
-        self.new(tree, nil, nil, 'node'=>Integer(id))
-      rescue
-        id
-      end
-    end
-  end
-
-  def self.new(tree, pos, parent=nil, keys={})
-    if parent.kind_of?(Hash)
-      keys = parent
-      parent = nil
-    end
-
-    keys = _symbolkey2str(keys)
-    tpath = tree.path
-
-    if (id = keys['node']) && (obj = TreeNodeID_TBL[tpath][id])
-      keys.delete('node')
-      tk_call(tree.path, 'move', id, pos, parent) if parent
-      return obj
-    end
-
-    super(tree, pos, parent, keys)
-  end
-
-  def initialize(tree, pos, parent, keys)
-    @parent = @tree = tree
-    @tpath = @parent.path
-
-    if (id = keys['node'])
-      @path = @id = id
-      tk_call(@tpath, 'move', @id, pos, tagid(parent)) if parent
-    else
-      name = TreeNode_ID.join(TkCore::INTERP._ip_id_).freeze
-      TreeNode_ID[1].succ!
-
-      at = keys.delete['at']
-
-      if parent
-        if parent.kind_of?(Tk::BLT::Treeview::Node) || 
-            parent.kind_of?(Tk::BLT::Treeview::Tag)
-          path = [get_full(parent.id)[0], name]
-          at = nil # ignore 'at' option
-        else
-          path = [parent.to_s, name]
-        end
-      else
-        path = name
-      end
-
-      if at
-        @id = tk_call(@tpath, 'insert', '-at', tagid(at), pos, path, keys)
-      else
-        @id = tk_call(@tpath, 'insert', pos, path, keys)
-      end
-      @path = @id
-    end
-
-    TreeNodeID_TBL[@tpath] = {} unless TreeNodeID_TBL[@tpath]
-    TreeNodeID_TBL[@tpath][@id] = self
-  end
-
-  def id
-    @id
-  end
-end
-
-######################################
-
-class Tk::BLT::Treeview::Tag < TkObject
-  include Tk::BLT::Treeview::TagOrID_Methods
-
-  TreeTagID_TBL = TkCore::INTERP.create_table
-  TreeTag_ID = ['blt_treeview_tag'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ TreeTagID_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless TreeTagID_TBL[tpath]
-    if TreeTagID_TBL[tpath][id]
-      TreeTagID_TBL[tpath][id]
-    else
-      begin
-        self.new(tree, nil, nil, 'name'=>Integer(id))
-      rescue
-        id
-      end
-    end
-  end
-
-  def self.new_by_name(tree, name, *ids)
-    if (obj = TreeTagID_TBL[tree.path][name])
-      return obj
-    end
-    new([tree, name], ids)
-  end
-
-  def self.new(tree, *ids)
-    if tree.kind_of?(Array)
-      super(tree[0], tree[1], ids)
-    else
-      super(tree, nil, ids)
-    end
-  end
-
-  def initialize(tree, name, ids)
-    @parent = @tree = tree
-    @tpath = @parent.path
-
-    if name
-      @path = @id = name
-    else
-      @path = @id = TreeTag_ID.join(TkCore::INTERP._ip_id_).freeze
-      TreeTag_ID[1].succ!
-    end
-
-    TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
-    TreeTagID_TBL[@tpath][@id] = self
-
-    unless ids.empty?
-      tk_call(@tpath, 'tag', 'add', @id, *(ids.collect{|id| tagid(id)}))
-    end
-  end
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::BLT::Treeview::Node) \
-      || tag.kind_of?(Tk::BLT::Treeview::Tag)
-      tag.id
-    else
-      tag
-    end
-  end
-  private :tagid
-
-  def id
-    @id
-  end
-
-  def add(*ids)
-    tk_call(@tpath, 'tag', 'add', @id, *(ids{|id| tagid(id)}))
-    self
-  end
-
-  def remove(*ids)
-    tk_call(@tpath, 'tag', 'delete', @id, *(ids{|id| tagid(id)}))
-    self
-  end
-
-  def forget
-    tk_call(@tpath, 'tag', 'forget', @id)
-    self
-  end
-
-  def nodes
-    simplelist(tk_call(@tpath, 'tag', 'nodes', @id)).collect{|id|
-      Tk::BLT::Treeview::Node.id2obj(@tree, id)
-    }
-  end
-end
-
-class Tk::BLT::Hiertable
-  TkCommandNames = ['::blt::hiertable'.freeze].freeze
-  WidgetClassName = 'Hiertable'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/unix_dnd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/unix_dnd.rb
deleted file mode 100644
index 3130c1e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/unix_dnd.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-#  tkextlib/blt/unix_dnd.rb
-#
-#    *** This is alpha version, because there is no document on BLT. ***
-#
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module DnD
-    extend TkCore
-
-    TkCommandNames = ['::blt::dnd'.freeze].freeze
-
-    ##############################
-
-    extend TkItemConfigMethod
-
-    class << self
-      def __item_cget_cmd(id)
-        ['::blt::dnd', *id]
-      end
-      private :__item_cget_cmd
-
-      def __item_config_cmd(id)
-        ['::blt::dnd', *id]
-      end
-      private :__item_config_cmd
-
-      private :itemcget, :itemconfigure
-      private :itemconfiginfo, :current_itemconfiginfo
-
-      def cget(win, option)
-        itemconfigure(['cget', win], slot, value)
-      end
-      def configure(win, slot, value=None)
-        itemconfigure(['configure', win], slot, value)
-      end
-      def configinfo(win, slot=nil)
-        itemconfiginfo(['configure', win], slot)
-      end
-      def current_configinfo(win, slot=nil)
-        current_itemconfiginfo(['configure', win], slot)
-      end
-
-      def tokwn_cget(win, option)
-        itemconfigure(['token', 'cget', win], slot, value)
-      end
-      def token_configure(win, slot, value=None)
-        itemconfigure(['token', 'configure', win], slot, value)
-      end
-      def token_configinfo(win, slot=nil)
-        itemconfiginfo(['token', 'configure', win], slot)
-      end
-      def current_token_configinfo(win, slot=nil)
-        current_itemconfiginfo(['token', 'configure', win], slot)
-      end
-
-      def token_windowconfigure(win, slot, value=None)
-        itemconfigure(['token', 'window', win], slot, value)
-      end
-      def token_windowconfiginfo(win, slot=nil)
-        itemconfiginfo(['token', 'window', win], slot)
-      end
-      def current_token_windowconfiginfo(win, slot=nil)
-        current_itemconfiginfo(['token', 'window', win], slot)
-      end
-    end
-
-    ##############################
-
-    def self.cancel(win)
-      tk_call('::blt::dnd', 'cancel', *wins)
-    end
-    def self.delete(*wins)
-      tk_call('::blt::dnd', 'delete', *wins)
-    end
-    def self.delete_source(*wins)
-      tk_call('::blt::dnd', 'delete', '-source', *wins)
-    end
-    def self.delete_target(*wins)
-      tk_call('::blt::dnd', 'delete', '-target', *wins)
-    end
-    def self.drag(win, x, y, token=None)
-      tk_call('::blt::dnd', 'drag', win, x, y, token)
-    end
-    def self.drop(win, x, y, token=None)
-      tk_call('::blt::dnd', 'drop', win, x, y, token)
-    end
-    def self.get_data(win, fmt=nil, cmd=nil)
-      if fmt
-        tk_call('::blt::dnd', 'getdata', win, fmt, cmd)
-      else
-        list(tk_call('::blt::dnd', 'getdata', win))
-      end
-    end
-    def self.names(pat=None)
-      list(tk_call('::blt::dnd', 'names', pat))
-    end
-    def self.source_names(pat=None)
-      list(tk_call('::blt::dnd', 'names', '-source', pat))
-    end
-    def self.target_names(pat=None)
-      list(tk_call('::blt::dnd', 'names', '-target', pat))
-    end
-    def self.pull(win, fmt)
-      tk_call('::blt::dnd', 'pull', win, fmt)
-    end
-    def self.register(win, keys={})
-      tk_call('::blt::dnd', 'register', win, keys)
-    end
-    def self.select(win, x, y, timestamp)
-      tk_call('::blt::dnd', 'select', win, x, y, timestamp)
-    end
-    def self.set_data(win, fmt=nil, cmd=nil)
-      if fmt
-        tk_call('::blt::dnd', 'setdata', win, fmt, cmd)
-      else
-        list(tk_call('::blt::dnd', 'setdata', win))
-      end
-    end
-    def self.token(*args)
-      tk_call('::blt::dnd', 'token', *args)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/vector.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/vector.rb
deleted file mode 100644
index 540b6b9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/vector.rb
+++ /dev/null
@@ -1,243 +0,0 @@
-#
-#  tkextlib/blt/vector.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Vector < TkVariable
-    TkCommandNames = ['::blt::vector'.freeze].freeze
-
-    def self.create(*args)
-      tk_call('::blt::vector', 'create', *args)
-    end
-
-    def self.destroy(*args)
-      tk_call('::blt::vector', 'destroy', *args)
-    end
-
-    def self.expr(expression)
-      tk_call('::blt::vector', 'expr', expression)
-    end
-
-    def self.names(pat=None)
-      simplelist(tk_call('::blt::vector', 'names', pat)).collect{|name|
-        if TkVar_ID_TBL[name]
-          TkVar_ID_TBL[name]
-        elsif name[0..1] == '::' && TkVar_ID_TBL[name[2..-1]]
-          TkVar_ID_TBL[name[2..-1]]
-        else
-          name
-        end
-      }
-    end
-
-    ####################################
-
-    def initialize(size=nil, keys={})
-      if size.kind_of?(Hash)
-        keys = size
-        size = nil
-      end
-      if size.kind_of?(Array)
-        # [first, last]
-        size = size.join(':')
-      end
-      if size
-        @id = INTERP._invoke('::blt::vector', 'create', 
-                             "#auto(#{size})", *hash_kv(keys))
-      else
-        @id = INTERP._invoke('::blt::vector', 'create', 
-                             "#auto", *hash_kv(keys))
-      end
-
-      TkVar_ID_TBL[@id] = self
-
-      @def_default = false
-      @default_val = nil
-
-      @trace_var  = nil
-      @trace_elem = nil
-      @trace_opts = nil
-
-      # teach Tk-ip that @id is global var
-      INTERP._invoke_without_enc('global', @id)
-    end
-
-    def destroy
-      tk_call('::blt::vector', 'destroy', @id)
-    end
-
-    def inspect
-      '#<Tk::BLT::Vector: ' + @id + '>'
-    end
-
-    def to_s
-      @id
-    end
-
-    def *(item)
-      list(tk_call(@id, '*', item))
-    end
-
-    def +(item)
-      list(tk_call(@id, '+', item))
-    end
-
-    def -(item)
-      list(tk_call(@id, '-', item))
-    end
-
-    def /(item)
-      list(tk_call(@id, '/', item))
-    end
-
-    def append(*vectors)
-      tk_call(@id, 'append', *vectors)
-    end
-
-    def binread(channel, len=None, keys={})
-      if len.kind_of?(Hash)
-        keys = len
-        len = None
-      end
-      keys = _symbolkey2str(keys)
-      keys['swap'] = None if keys.delete('swap')
-      tk_call(@id, 'binread', channel, len, keys)
-    end
-
-    def clear()
-      tk_call(@id, 'clear')
-      self
-    end
-
-    def delete(*indices)
-      tk_call(@id, 'delete', *indices)
-      self
-    end
-
-    def dup_vector(vec)
-      tk_call(@id, 'dup', vec)
-      self
-    end
-
-    def expr(expression)
-      tk_call(@id, 'expr', expression)
-      self
-    end
-
-    def index(idx, val=None)
-      number(tk_call(@id, 'index', idx, val))
-    end
-
-    def [](idx)
-      index(idx)
-    end
-
-    def []=(idx, val)
-      index(idx, val)
-    end
-
-    def length()
-      number(tk_call(@id, 'length'))
-    end
-
-    def length=(size)
-      number(tk_call(@id, 'length', size))
-    end
-
-    def merge(*vectors)
-      tk_call(@id, 'merge', *vectors)
-      self
-    end
-
-    def normalize(vec=None)
-      tk_call(@id, 'normalize', vec)
-      self
-    end
-
-    def notify(keyword)
-      tk_call(@id, 'notify', keyword)
-      self
-    end
-
-    def offset()
-      number(tk_call(@id, 'offset'))
-    end
-
-    def offset=(val)
-      number(tk_call(@id, 'offset', val))
-    end
-
-    def random()
-      tk_call(@id, 'random')
-    end
-
-    def populate(vector, density=None)
-      tk_call(@id, 'populate', vector, density)
-      self
-    end
-
-    def range(first, last=None)
-      list(tk_call(@id, 'range', first, last))
-    end
-
-    def search(val1, val2=None)
-      list(tk_call(@id, 'search', val1, val2))
-    end
-
-    def set(item)
-      tk_call(@id, 'set', item)
-      self
-    end
-
-    def seq(start, finish=None, step=None)
-      tk_call(@id, 'seq', start, finish, step)
-      self
-    end
-
-    def sort(*vectors)
-      tk_call(@id, 'sort', *vectors)
-      self
-    end
-
-    def sort_reverse(*vectors)
-      tk_call(@id, 'sort', '-reverse', *vectors)
-      self
-    end
-
-    def split(*vectors)
-      tk_call(@id, 'split', *vectors)
-      self
-    end
-
-    def variable(var)
-      tk_call(@id, 'variable', var)
-      self
-    end
-  end
-
-  class VectorAccess < Vector
-    def self.new(name)
-      return TkVar_ID_TBL[name] if TkVar_ID_TBL[name]
-      super(name, size=nil, keys={})
-    end
-
-    def initialize(vec_name)
-      @id = vec_name
-      TkVar_ID_TBL[@id] = self
-
-      @def_default = false
-      @default_val = nil
-
-      @trace_var  = nil
-      @trace_elem = nil
-      @trace_opts = nil
-
-      # teach Tk-ip that @id is global var
-      INTERP._invoke_without_enc('global', @id)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/watch.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/watch.rb
deleted file mode 100644
index ae5e50f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/watch.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-#
-#  tkextlib/blt/watch.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Watch < TkObject
-    extend TkCore
-
-    TkCommandNames = ['::blt::watch'.freeze].freeze
-
-    WATCH_ID_TBL = TkCore::INTERP.create_table
-    BLT_WATCH_ID = ['blt_watch_id'.freeze, '00000'.taint].freeze
-
-    def self.names(state = None)
-      tk_split_list(tk_call('::blt::watch', 'names', state)).collect{|name|
-        WATCH_ID_TBL[name] || name
-      }
-    end
-
-    def __numval_optkeys
-      ['maxlevel']
-    end
-    private :__numval_optkeys
-
-    def __boolval_optkeys
-      ['active']
-    end
-    private :__boolval_optkeys
-
-    def __config_cmd
-      ['::blt::watch', 'configure', self.path]
-    end
-    private :__config_cmd
-
-    def initialize(name = nil, keys = {})
-      if name.kind_of?(Hash)
-        keys = name
-        name = nil
-      end
-
-      if name
-        @id = name.to_s
-      else
-        @id = BLT_WATCH_ID.join(TkCore::INTERP._ip_id_)
-        BLT_WATCH_ID[1].succ!
-      end
-
-      @path = @id
-
-      WATCH_ID_TBL[@id] = self
-      tk_call('::blt::watch', 'create', @id, *hash_kv(keys))
-    end
-
-    def activate
-      tk_call('::blt::watch', 'activate', @id)
-      self
-    end
-    def deactivate
-      tk_call('::blt::watch', 'deactivate', @id)
-      self
-    end
-    def delete
-      tk_call('::blt::watch', 'delete', @id)
-      self
-    end
-    def info
-      ret = []
-      lst = tk_split_simplelist(tk_call('::blt::watch', 'info', @id))
-      until lst.empty?
-        k, v, *lst = lst
-        k = k[1..-1]
-        case k
-        when /^(#{__strval_optkeys.join('|')})$/
-          # do nothing
-
-        when /^(#{__numval_optkeys.join('|')})$/
-          begin
-            v = number(v)
-          rescue
-            v = nil
-          end
-
-        when /^(#{__numstrval_optkeys.join('|')})$/
-          v = num_or_str(v)
-
-        when /^(#{__boolval_optkeys.join('|')})$/
-          begin
-            v = bool(v)
-          rescue
-            v = nil
-          end
-
-        when /^(#{__listval_optkeys.join('|')})$/
-          v = simplelist(v)
-
-        when /^(#{__numlistval_optkeys.join('|')})$/
-          v = list(v)
-
-        else
-          if v.index('{')
-            v = tk_split_list(v)
-          else
-            v = tk_tcl2ruby(v)
-          end
-        end
-
-        ret << [k, v]
-      end
-
-      ret
-    end
-    def configinfo(slot = nil)
-      if slot
-        slot = slot.to_s
-        v = cget(slot)
-        if TkComm::GET_CONFIGINFO_AS_ARRAY
-          [slot, v]
-        else
-          {slot=>v}
-        end
-      else
-        if TkComm::GET_CONFIGINFO_AS_ARRAY
-          info
-        else
-          Hash[*(info.flatten)]
-        end
-      end
-    end
-    def cget(key)
-      key = key.to_s
-      begin
-        info.assoc(key)[1]
-      rescue
-        fail ArgumentError, "unknown option '#{key}'"
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/win_printer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/win_printer.rb
deleted file mode 100644
index 7ac6a0d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/win_printer.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#  tkextlib/blt/win_printer.rb
-#
-#      *** Windows only ***
-#
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  class Printer < TkObject
-    extend TkCore
-
-    TkCommandNames = ['::blt::printer'.freeze].freeze
-
-    def self.enum(attribute)
-      simplelist(tk_call('::blt::printer', 'enum', attribute))
-    end
-
-    def self.names(pat=None)
-      simplelist(tk_call('::blt::printer', 'names', pat))
-    end
-
-    def self.open(printer)
-      self.new(printer)
-    end
-
-    #################################
-
-    def initialize(printer)
-      @printer_id = tk_call('::blt::printer', 'open', printer)
-    end
-
-    def close
-      tk_call('::blt::print', 'close', @printer_id)
-      self
-    end
-    def get_attrs(var)
-      tk_call('::blt::print', 'getattrs', @printer_id, var)
-      var
-    end
-    def set_attrs(var)
-      tk_call('::blt::print', 'setattrs', @printer_id, var)
-      self
-    end
-    def snap(win)
-      tk_call('::blt::print', 'snap', @printer_id, win)
-      self
-    end
-    def write(str)
-      tk_call('::blt::print', 'write', @printer_id, str)
-      self
-    end
-    def write_with_title(title, str)
-      tk_call('::blt::print', 'write', @printer_id, title, str)
-      self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/winop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/winop.rb
deleted file mode 100644
index e371d28..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/blt/winop.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#  tkextlib/blt/winop.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/blt.rb'
-
-module Tk::BLT
-  module Winop
-    extend TkCore
-
-    TkCommandNames = ['::blt::winop'.freeze].freeze
-  end
-  WinOp = Winop
-end
-
-class << Tk::BLT::Winop
-  def changes(win)
-    tk_call('::blt::winop', 'changes', win)
-  end
-
-  def colormap(win)
-    Hash[*list(tk_call('::blt::winop', 'colormap', win))]
-  end
-
-  def convolve(src, dest, filter)
-    tk_call('::blt::winop', 'convolve', src, dest, filter)
-  end
-
-  def image_convolve(src, dest, filter)
-    tk_call('::blt::winop', 'image', 'convolve', src, dest, filter)
-  end
-  def image_gradient(photo, left, right, type)
-    tk_call('::blt::winop', 'image', 'gradient', photo, left, right, type)
-  end
-  def image_read_jpeg(file, photo)
-    tk_call('::blt::winop', 'image', 'readjpeg', file, photo)
-  end
-  def image_resample(src, dest, horiz_filter=None, vert_filter=None)
-    tk_call('::blt::winop', 'image', 'resample', 
-            src, dest, horiz_filter, vert_filter)
-  end
-  def image_rotate(src, dest, angle)
-    tk_call('::blt::winop', 'image', 'rotate', src, dest, angle)
-  end
-  def image_snap(win, photo, width=None, height=None)
-    tk_call('::blt::winop', 'image', 'snap', win, photo, width, height)
-  end
-  def image_subsample(src, dest, x, y, width, height, 
-                      horiz_filter=None, vert_filter=None)
-    tk_call('::blt::winop', 'image', 'subsample', 
-            src, dest, x, y, width, height, horiz_filter, vert_filter)
-  end
-
-  def quantize(src, dest, colors)
-    tk_call('::blt::winop', 'quantize', src, dest, colors)
-  end
-
-  def query()
-    tk_call('::blt::winop', 'query')
-  end
-
-  def read_jpeg(file, photo)
-    tk_call('::blt::winop', 'readjpeg', file, photo)
-  end
-
-  def resample(src, dest, horiz_filter=None, vert_filter=None)
-    tk_call('::blt::winop', 'resample', 
-            src, dest, horiz_filter, vert_filter)
-  end
-
-  def subsample(src, dest, x, y, width, height, 
-                horiz_filter=None, vert_filter=None)
-    tk_call('::blt::winop', 'subsample', 
-            src, dest, x, y, width, height, horiz_filter, vert_filter)
-  end
-
-  def raise(*wins)
-    tk_call('::blt::winop', 'raise', *wins)
-  end
-
-  def lower(*wins)
-    tk_call('::blt::winop', 'lower', *wins)
-  end
-
-  def map(*wins)
-    tk_call('::blt::winop', 'map', *wins)
-  end
-
-  def unmap(*wins)
-    tk_call('::blt::winop', 'unmap', *wins)
-  end
-
-  def move(win, x, y)
-    tk_call('::blt::winop', 'move', win, x, y)
-  end
-
-  def snap(win, photo)
-    tk_call('::blt::winop', 'snap', win, photo)
-  end
-
-  def warpto(win = None)
-    tk_call('::blt::winop', 'warpto', win)
-  end
-  alias warp_to warpto
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget.rb
deleted file mode 100644
index 62631d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-#
-#  BWidget extension support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/bwidget/setup.rb'
-
-# load all image format handlers
-#TkPackage.require('BWidget', '1.7')
-TkPackage.require('BWidget')
-
-module Tk
-  module BWidget
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    extend TkCore
-
-    LIBRARY = tk_call('set', '::BWIDGET::LIBRARY')
-
-    PACKAGE_NAME = 'BWidget'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('BWidget')
-      rescue
-        ''
-      end
-    end
-
-    def self.XLFDfont(cmd, *args)
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        args.concat(hash_kv(keys))
-      end
-      tk_call('BWidget::XLFDfont', cmd, *args)
-    end
-
-    def self.assert(exp, msg=None)
-      tk_call('BWidget::assert', exp, msg)
-    end
-
-    def self.badOptionString(type, value, list)
-      tk_call('BWidget::badOptionString', type, value, list)
-    end
-
-    def self.bindMouseWheel(widget)
-      tk_call('BWidget::bindMouseWheel', widget)
-    end
-
-    def self.classes(klass)
-      list(tk_call('BWidget::classes', klass))
-    end
-
-    def self.clonename(menu)
-      tk_call('BWidget::clonename', menu)
-    end
-
-    def self.focus(opt, path)
-      tk_call('BWidget::focus', opt, path)
-    end
-
-    def self.get3dcolor(path, bgcolor)
-      tk_call('BWidget::get3dcolor', path, bgcolor)
-    end
-
-    def self.getname(name)
-      tk_call('BWidget::getname', name)
-    end
-
-    def self.grab(opt, path)
-      tk_call('BWidget::grab', opt, path)
-    end
-
-    def self.inuse(klass)
-      bool(tk_call('BWidget::inuse', klass))
-    end
-
-    def self.library(klass, *klasses)
-      tk_call('BWidget::library', klass, *klasses)
-    end
-
-    def self.lreorder(list, neworder)
-      tk_call('BWidget::lreorder', list, neworder)
-    end
-
-    def self.parsetext(text)
-      tk_call('BWidget::parsetext', text)
-    end
-
-    def self.place(path, w, h, *args)
-      if args[-1].kind_of?(Hash)
-        keys = args.pop
-        args.concat(hash_kv(keys))
-      end
-      tk_call('BWidget::place', path, w, h, *(args.flatten))
-    end
-
-    def self.write(file, mode=None)
-      tk_call('BWidget::write', file, mode)
-    end
-
-    def self.wrongNumArgsString(str)
-      tk_call('BWidget::wrongNumArgsString', str)
-    end
-
-    ####################################################
-
-    autoload :ArrowButton,     'tkextlib/bwidget/arrowbutton'
-    autoload :Bitmap,          'tkextlib/bwidget/bitmap'
-    autoload :Button,          'tkextlib/bwidget/button'
-    autoload :ButtonBox,       'tkextlib/bwidget/buttonbox'
-    autoload :ComboBox,        'tkextlib/bwidget/combobox'
-    autoload :Dialog,          'tkextlib/bwidget/dialog'
-    autoload :DragSite,        'tkextlib/bwidget/dragsite'
-    autoload :DropSite,        'tkextlib/bwidget/dropsite'
-    autoload :DynamicHelp,     'tkextlib/bwidget/dynamichelp'
-    autoload :Entry,           'tkextlib/bwidget/entry'
-    autoload :Label,           'tkextlib/bwidget/label'
-    autoload :LabelEntry,      'tkextlib/bwidget/labelentry'
-    autoload :LabelFrame,      'tkextlib/bwidget/labelframe'
-    autoload :ListBox,         'tkextlib/bwidget/listbox'
-    autoload :MainFrame,       'tkextlib/bwidget/mainframe'
-    autoload :MessageDlg,      'tkextlib/bwidget/messagedlg'
-    autoload :NoteBook,        'tkextlib/bwidget/notebook'
-    autoload :PagesManager,    'tkextlib/bwidget/pagesmanager'
-    autoload :PanedWindow,     'tkextlib/bwidget/panedwindow'
-    autoload :PasswdDlg,       'tkextlib/bwidget/passwddlg'
-    autoload :ProgressBar,     'tkextlib/bwidget/progressbar'
-    autoload :ProgressDlg,     'tkextlib/bwidget/progressdlg'
-    autoload :ScrollableFrame, 'tkextlib/bwidget/scrollableframe'
-    autoload :ScrolledWindow,  'tkextlib/bwidget/scrolledwindow'
-    autoload :ScrollView,      'tkextlib/bwidget/scrollview'
-    autoload :SelectColor,     'tkextlib/bwidget/selectcolor'
-    autoload :SelectFont,      'tkextlib/bwidget/selectfont'
-    autoload :Separator,       'tkextlib/bwidget/separator'
-    autoload :SpinBox,         'tkextlib/bwidget/spinbox'
-    autoload :TitleFrame,      'tkextlib/bwidget/titleframe'
-    autoload :Tree,            'tkextlib/bwidget/tree'
-    autoload :Widget,          'tkextlib/bwidget/widget'
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/arrowbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/arrowbutton.rb
deleted file mode 100644
index 770e5e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/arrowbutton.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-#  tkextlib/bwidget/arrowbutton.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/button'
-
-module Tk
-  module BWidget
-    class ArrowButton < Tk::BWidget::Button
-    end
-  end
-end
-
-class Tk::BWidget::ArrowButton
-  TkCommandNames = ['ArrowButton'.freeze].freeze
-  WidgetClassName = 'ArrowButton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/bitmap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/bitmap.rb
deleted file mode 100644
index 6cfde20..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/bitmap.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-#  tkextlib/bwidget/bitmap.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tk/image'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Bitmap < TkPhotoImage
-    end
-  end
-end
-
-class Tk::BWidget::Bitmap
-  def initialize(name)
-    @path = tk_call_without_enc('Bitmap::get', name)
-    Tk_IMGTBL[@path] = self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/button.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/button.rb
deleted file mode 100644
index 4a9d4a7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/button.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-#  tkextlib/bwidget/button.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/button'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Button < TkButton
-    end
-  end
-end
-
-class Tk::BWidget::Button
-  TkCommandNames = ['Button'.freeze].freeze
-  WidgetClassName = 'Button'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/buttonbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/buttonbox.rb
deleted file mode 100644
index ef99923..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/buttonbox.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-#  tkextlib/bwidget/buttonbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/button'
-
-module Tk
-  module BWidget
-    class ButtonBox < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::ButtonBox
-  TkCommandNames = ['ButtonBox'.freeze].freeze
-  WidgetClassName = 'ButtonBox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  include TkItemConfigMethod
-
-  def __boolval_optkeys
-    super() << 'homogeneous'
-  end
-  private :__boolval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::BWidget::Button)
-      name = tagOrId[:name]
-      return index(name) unless name.empty?
-    end
-    if tagOrId.kind_of?(TkButton)
-      return index(tagOrId[:text])
-    end
-    # index(tagOrId.to_s)
-    index(_get_eval_string(tagOrId))
-  end
-
-  def add(keys={}, &b)
-    win = window(tk_send('add', *hash_kv(keys)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def delete(idx)
-    tk_send('delete', tagid(idx))
-    self
-  end
-
-  def index(idx)
-    if idx.kind_of?(Tk::BWidget::Button)
-      name = idx[:name]
-      idx = name unless name.empty?
-    end
-    if idx.kind_of?(TkButton)
-      idx = idx[:text]
-    end
-    number(tk_send('index', idx.to_s))
-  end
-
-  def insert(idx, keys={}, &b)
-    win = window(tk_send('insert', tagid(idx), *hash_kv(keys)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def invoke(idx)
-    tk_send('invoke', tagid(idx))
-    self
-  end
-
-  def set_focus(idx)
-    tk_send('setfocus', tagid(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/combobox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/combobox.rb
deleted file mode 100644
index 31f71c3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/combobox.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-#  tkextlib/bwidget/combobox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/listbox'
-require 'tkextlib/bwidget/spinbox'
-
-module Tk
-  module BWidget
-    class ComboBox < Tk::BWidget::SpinBox
-    end
-  end
-end
-
-class Tk::BWidget::ComboBox
-  include Scrollable
-
-  TkCommandNames = ['ComboBox'.freeze].freeze
-  WidgetClassName = 'ComboBox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def get_listbox(&b)
-    win = window(tk_send_without_enc('getlistbox'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def icursor(idx)
-    tk_send_without_enc('icursor', idx)
-  end
-
-  def post
-    tk_send_without_enc('post')
-    self
-  end
-
-  def unpost
-    tk_send_without_enc('unpost')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dialog.rb
deleted file mode 100644
index 2790d88..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dialog.rb
+++ /dev/null
@@ -1,157 +0,0 @@
-#
-#  tkextlib/bwidget/dialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/buttonbox'
-
-module Tk
-  module BWidget
-    class Dialog < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::Dialog
-  TkCommandNames = ['Dialog'.freeze].freeze
-  WidgetClassName = 'Dialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  include TkItemConfigMethod
-
-  def __strval_optkeys
-    super() << 'title'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'transient' << 'homogeneous'
-  end
-  private :__boolval_optkeys
-
-  def initialize(parent=nil, keys=nil)
-    @relative = ''
-    if parent.kind_of?(Hash)
-      keys = _symbolkey2str(parent)
-      @relative = keys['parent'] if keys.key?('parent')
-      @relative = keys.delete('relative') if keys.key?('relative')
-      super(keys)
-    elsif keys
-      keys = _symbolkey2str(keys)
-      @relative = keys.delete('parent') if keys.key?('parent')
-      @relative = keys.delete('relative') if keys.key?('relative')
-      super(parent, keys)
-    else
-      super(parent)
-    end
-  end
-
-  def create_self(keys)
-    cmd = self.class::TkCommandNames[0]
-    if keys and keys != None
-      tk_call_without_enc(cmd, @path, '-parent', @relative, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(cmd, @path, '-parent', @relative)
-    end
-  end
-
-  def cget(slot)
-    if slot.to_s == 'relative'
-      super('parent')
-    else
-      super(slot)
-    end
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot = _symbolkey2str(slot)
-      slot['parent'] = slot.delete('relative') if slot.key?('relative')
-      super(slot)
-    else
-      if slot.to_s == 'relative'
-        super('parent', value)
-      else
-        super(slot, value)
-      end
-    end
-  end
-
-  def configinfo(slot=nil)
-    if slot
-      if slot.to_s == 'relative'
-        super('parent')
-      else
-        super(slot)
-      end
-    else
-      ret = super()
-      if TkComm::GET_CONFIGINFO_AS_ARRAY
-        ret << ['relative', 'parent']
-      else
-        ret['relative'] = 'parent'
-      end
-    end
-  end
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::BWidget::Button)
-      name = tagOrId[:name]
-      return index(name) unless name.empty?
-    end
-    if tagOrId.kind_of?(TkButton)
-      return index(tagOrId[:text])
-    end
-    # index(tagOrId.to_s)
-    index(_get_eval_string(tagOrId))
-  end
-
-  def add(keys={}, &b)
-    win = window(tk_send('add', *hash_kv(keys)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_frame(&b)
-    win = window(tk_send('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_buttonbox(&b)
-    win = window(@path + '.bbox')
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def draw(focus_win=None)
-    tk_send('draw', focus_win)
-  end
-
-  def enddialog(ret)
-    tk_send('enddialog', ret)
-  end
-
-  def index(idx)
-    get_buttonbox.index(idx)
-  end
-
-  def invoke(idx)
-    tk_send('invoke', tagid(idx))
-    self
-  end
-
-  def set_focus(idx)
-    tk_send('setfocus', tagid(idx))
-    self
-  end
-
-  def withdraw
-    tk_send('withdraw')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dragsite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dragsite.rb
deleted file mode 100644
index 4d4de17..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dragsite.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-#  tkextlib/bwidget/dragsite.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    module DragSite
-    end
-  end
-end
-
-module Tk::BWidget::DragSite
-  include Tk
-  extend Tk
-
-  def self.include(klass, type, event)
-    tk_call('DragSite::include', klass, type, event)
-  end
-
-  def self.register(path, keys={})
-    tk_call('DragSite::register', path, *hash_kv(keys))
-  end
-
-  def self.set_drag(path, subpath, initcmd, endcmd, force=None)
-    tk_call('DragSite::setdrag', path, subpath, initcmd, endcmd, force)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dropsite.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dropsite.rb
deleted file mode 100644
index e5e98fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dropsite.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#  tkextlib/bwidget/dropsite.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    module DropSite
-    end
-  end
-end
-
-module Tk::BWidget::DropSite
-  include Tk
-  extend Tk
-
-  def self.include(klass, type)
-    tk_call('DropSite::include', klass, type)
-  end
-
-  def self.register(path, keys={})
-    tk_call('DropSite::register', path, *hash_kv(keys))
-  end
-
-  def self.set_cursor(cursor)
-    tk_call('DropSite::setcursor', cursor)
-  end
-
-  def self.set_drop(path, subpath, dropover, drop, force=None)
-    tk_call('DropSite::setdrop', path, subpath, dropover, drop, force)
-  end
-
-  def self.set_operation(op)
-    tk_call('DropSite::setoperation', op)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dynamichelp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dynamichelp.rb
deleted file mode 100644
index 224304f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/dynamichelp.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-#  tkextlib/bwidget/dynamichelp.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    module DynamicHelp
-    end
-  end
-end
-
-module Tk::BWidget::DynamicHelp
-  include Tk
-  extend Tk
-
-  def self.__pathname
-    'DynamicHelp::configure'
-  end
-
-  def __strval_optkeys
-    super() << 'topbackground'
-  end
-  private :__strval_optkeys
-
-  def self.__cget_cmd
-    ['DynamicHelp::configure']
-  end
-
-  def self.__config_cmd
-    ['DynamicHelp::configure']
-  end
-
-  def self.cget(slot)
-    self.current_configinfo(slot).values[0]
-  end
-
-  def self.add(widget, keys={})
-    tk_call('DynamicHelp::add', widget, *hash_kv(keys))
-  end
-
-  def self.delete(widget)
-    tk_call('DynamicHelp::delete', widget)
-  end
-
-  def self.include(klass, type)
-    tk_call('DynamicHelp::include', klass, type)
-  end
-
-  def self.sethelp(path, subpath, force=None)
-    tk_call('DynamicHelp::sethelp', path, subpath, force)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/entry.rb
deleted file mode 100644
index aafb4aa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/entry.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-#  tkextlib/bwidget/entry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Entry < TkEntry
-    end
-  end
-end
-
-class Tk::BWidget::Entry
-  include Scrollable
-
-  TkCommandNames = ['Entry'.freeze].freeze
-  WidgetClassName = 'Entry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext' << 'insertbackground'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'dragenabled' << 'dropenabled' << 'editable'
-  end
-  private :__boolval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  def invoke
-    tk_send_without_enc('invoke')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/label.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/label.rb
deleted file mode 100644
index ce10eca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/label.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-#  tkextlib/bwidget/label.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/label'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Label < TkLabel
-    end
-  end
-end
-
-class Tk::BWidget::Label
-  TkCommandNames = ['Label'.freeze].freeze
-  WidgetClassName = 'Label'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'dragenabled' << 'dropenabled'
-  end
-  private :__boolval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  def set_focus
-    tk_send_without_enc('setfocus')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelentry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelentry.rb
deleted file mode 100644
index 931feb9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelentry.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-#
-#  tkextlib/bwidget/labelentry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/labelframe'
-require 'tkextlib/bwidget/entry'
-
-module Tk
-  module BWidget
-    class LabelEntry < TkEntry
-    end
-  end
-end
-
-class Tk::BWidget::LabelEntry
-  include Scrollable
-
-  TkCommandNames = ['LabelEntry'.freeze].freeze
-  WidgetClassName = 'LabelEntry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext' << 'insertbackground' << 'entryfg' << 'entrybg'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  def __font_optkeys
-    super() << 'labelfont'
-  end
-  private :__font_optkeys
-
-  #def entrybind(*args)
-  #  _bind([path, 'bind'], *args)
-  #  self
-  #end
-  def entrybind(context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([path, 'bind'], context, cmd, *args)
-    self
-  end
-
-  #def entrybind_append(*args)
-  #  _bind_append([path, 'bind'], *args)
-  #  self
-  #end
-  def entrybind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([path, 'bind'], context, cmd, *args)
-    self
-  end
-
-  def entrybind_remove(*args)
-    _bind_remove([path, 'bind'], *args)
-    self
-  end
-
-  def entrybindinfo(*args)
-    _bindinfo([path, 'bind'], *args)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelframe.rb
deleted file mode 100644
index f7b267e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/labelframe.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#  tkextlib/bwidget/labelframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/label'
-
-module Tk
-  module BWidget
-    class LabelFrame < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::LabelFrame
-  TkCommandNames = ['LabelFrame'.freeze].freeze
-  WidgetClassName = 'LabelFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'dragenabled' << 'dropenabled'
-  end
-  private :__boolval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  def self.align(*args)
-    tk_call('LabelFrame::align', *args)
-  end
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/listbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/listbox.rb
deleted file mode 100644
index 1267500..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/listbox.rb
+++ /dev/null
@@ -1,339 +0,0 @@
-#
-#  tkextlib/bwidget/listbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/canvas'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class ListBox < TkWindow
-      # is NOT a subclass of a listbox widget class.
-      # because it constructed on a canvas widget. 
-
-      class Item < TkObject
-      end
-    end
-  end
-end
-
-class Tk::BWidget::ListBox
-  include TkItemConfigMethod
-  include Scrollable
-
-  TkCommandNames = ['ListBox'.freeze].freeze
-  WidgetClassName = 'ListBox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  class Event_for_Items < TkEvent::Event
-    def self._get_extra_args_tbl
-      [ 
-        TkComm.method(:string)   # item idenfier
-      ]
-    end
-  end
-
-  def __boolval_optkeys
-    super() << 'autofocus' << 'dragenabled' << 'dropenabled' << 'selectfill'
-  end
-  private :__boolval_optkeys
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::BWidget::ListBox::Item)
-      tag.id
-    else
-      # tag
-      _get_eval_string(tag)
-    end
-  end
-
-  #def imagebind(*args)
-  #  _bind_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  #  self
-  #end
-  def imagebind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_for_event_class(Event_for_Items, [path, 'bindImage'], 
-                          context, cmd, *args)
-    self
-  end
-
-  #def imagebind_append(*args)
-  #  _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  #  self
-  #end
-  def imagebind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], 
-                                 context, cmd, *args)
-    self
-  end
-
-  def imagebind_remove(*args)
-    _bind_remove_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-    self
-  end
-
-  def imagebindinfo(*args)
-    _bindinfo_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  end
-
-  #def textbind(*args)
-  #  _bind_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  #  self
-  #end
-  def textbind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_for_event_class(Event_for_Items, [path, 'bindText'], 
-                          context, cmd, *args)
-    self
-  end
-
-  #def textbind_append(*args)
-  #  _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  #  self
-  #end
-  def textbind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], 
-                                 context, cmd, *args)
-    self
-  end
-
-  def textbind_remove(*args)
-    _bind_remove_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-    self
-  end
-
-  def textbindinfo(*args)
-    _bindinfo_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  end
-
-  def delete(*args)
-    tk_send('delete', *args)
-    self
-  end
-
-  def edit(item, text, *args)
-    tk_send('edit', tagid(item), text, *args)
-    self
-  end
-
-  def exist?(item)
-    bool(tk_send('exists', tagid(item)))
-  end
-
-  def index(item)
-    num_or_str(tk_send('index', tagid(item)))
-  end
-
-  def insert(idx, item, keys={})
-    tk_send('insert', idx, tagid(item), *hash_kv(keys))
-    self
-  end
-
-  def get_item(idx)
-    tk_send('items', idx)
-  end
-
-  def items(first=None, last=None)
-    list(tk_send('items', first, last))
-  end
-
-  def move(item, idx)
-    tk_send('move', tagid(item), idx)
-    self
-  end
-
-  def reorder(neworder)
-    tk_send('reorder', neworder)
-    self
-  end
-
-  def see(item)
-    tk_send('see', tagid(item))
-    self
-  end
-
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-
-  def selection_set(*args)
-    tk_send_without_enc('selection', 'set', 
-                        *(args.collect{|item| tagid(item)}))
-    self
-  end
-
-  def selection_add(*args)
-    tk_send_without_enc('selection', 'add', 
-                        *(args.collect{|item| tagid(item)}))
-    self
-  end
-
-  def selection_remove(*args)
-    tk_send_without_enc('selection', 'remove', 
-                        *(args.collect{|item| tagid(item)}))
-    self
-  end
-
-  def selection_get(*args)
-    simplelist(tk_send_without_enc('selection', 'get')).collect{|item|
-      Tk::BWidget::ListBox::Item.id2obj(self, item)
-    }
-  end
-end
-
-class Tk::BWidget::ListBox::Item
-  include TkTreatTagFont
-
-  ListItem_TBL = TkCore::INTERP.create_table
-  ListItem_ID = ['bw:item'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ ListItem_TBL.clear }
-
-  def self.id2obj(lbox, id)
-    lpath = lbox.path
-    return id unless ListItem_TBL[lpath]
-    ListItem_TBL[lpath][id]? ListItem_TBL[lpath][id]: id
-  end
-
-  def initialize(lbox, *args)
-    if lbox.kind_of?(Tk::BWidget::ListBox)
-      @listbox = lbox
-    else
-      fail RuntimeError, 
-        "expect Tk::BWidget::ListBox or Tk::BWidget::ListBox::Item for 1st argument"
-    end
-
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = {}
-    end
-
-    index = keys.delete('index')
-    unless args.empty?
-      index = args.shift
-    end
-    index = 'end' unless index
-
-    unless args.empty?
-      fail RuntimeError, 'too much arguments'
-    end
-
-    @lpath = @listbox.path
-
-    if keys.key?('itemname')
-      @path = @id = keys.delete('itemname')
-    else
-      @path = @id = ListItem_ID.join(TkCore::INTERP._ip_id_)
-      ListItem_ID[1].succ!
-    end
-
-    ListItem_TBL[@id] = self
-    ListItem_TBL[@lpath] = {} unless ListItem_TBL[@lpath]
-    ListItem_TBL[@lpath][@id] = self
-
-    @listbox.insert(index, @id, keys)
-  end
-
-  def listbox
-    @listbox
-  end
-
-  def id
-    @id
-  end
-
-  def [](key)
-    cget(key)
-  end
-
-  def []=(key, val)
-    configure(key, val)
-    val
-  end
-
-  def cget(key)
-    @listbox.itemcget(@id, key)
-  end
-
-  def configure(key, val=None)
-    @listbox.itemconfigure(@id, key, val)
-  end
-
-  def configinfo(key=nil)
-    @listbox.itemconfiginfo(@id, key)
-  end
-
-  def current_configinfo(key=nil)
-    @listbox.current_itemconfiginfo(@id, key)
-  end
-
-  def delete
-    @listbox.delete(@id)
-    self
-  end
-
-  def edit(*args)
-    @listbox.edit(@id, *args)
-    self
-  end
-
-  def exist?
-    @listbox.exist?(@id)
-  end
-
-  def index
-    @listbox.index(@id)
-  end
-
-  def move(index)
-    @listbox.move(@id, index)
-  end
-
-  def see
-    @listbox.see(@id)
-  end
-
-  def selection_add
-    @listbox.selection_add(@id)
-  end
-
-  def selection_remove
-    @listbox.selection_remove(@id)
-  end
-
-  def selection_set
-    @listbox.selection_set(@id)
-  end
-
-  def selection_toggle
-    @listbox.selection_toggle(@id)
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/mainframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/mainframe.rb
deleted file mode 100644
index c54e878..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/mainframe.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-#  tkextlib/bwidget/mainframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/progressbar'
-
-module Tk
-  module BWidget
-    class MainFrame < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::MainFrame
-  TkCommandNames = ['MainFrame'.freeze].freeze
-  WidgetClassName = 'MainFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'progressfg'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'progressvar'
-  end
-  private :__tkvariable_optkeys
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    # The method is used to convert a opt-value to a ruby's object.
-    # When get the value of the option "key", "proc.call(value)" is called.
-    {
-      'menu'=>proc{|v| simplelist(v).collect!{|elem| simplelist(v)}}
-    }
-  end
-  private :__val2ruby_optkeys
-
-  def add_indicator(keys={}, &b)
-    win = window(tk_send('addindicator', *hash_kv(keys)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def add_toolbar(&b)
-    win = window(tk_send('addtoolbar'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_frame(&b)
-    win = window(tk_send('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_indicator(idx, &b)
-    win = window(tk_send('getindicator', idx))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_menu(menu_id, &b)
-    win = window(tk_send('getmenu', menu_id))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_toolbar(idx, &b)
-    win = window(tk_send('gettoolbar', idx))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def set_menustate(tag, state)
-    tk_send('setmenustate', tag, state)
-    self
-  end
-
-  def show_statusbar(name)
-    tk_send('showstatusbar', name)
-    self
-  end
-
-  def show_toolbar(idx, mode)
-    tk_send('showtoolbar', idx, mode)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/messagedlg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/messagedlg.rb
deleted file mode 100644
index 9c946d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/messagedlg.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-#
-#  tkextlib/bwidget/messagedlg.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/dialog.rb'
-
-module Tk
-  module BWidget
-    class MessageDlg < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::MessageDlg
-  TkCommandNames = ['MessageDlg'.freeze].freeze
-  WidgetClassName = 'MessageDlg'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def initialize(parent=nil, keys=nil)
-    @relative = ''
-    if parent.kind_of?(Hash)
-      keys = _symbolkey2str(parent)
-      @relative = keys['parent'] if keys.key?('parent')
-      @relative = keys.delete('relative') if keys.key?('relative')
-      super(keys)
-    elsif keys
-      keys = _symbolkey2str(keys)
-      @relative = keys.delete('parent') if keys.key?('parent')
-      @relative = keys.delete('relative') if keys.key?('relative')
-      super(parent, keys)
-    else
-      super(parent)
-    end
-  end
-
-  def create_self(keys)
-    # NOT create widget.
-    # Because the widget no longer exist when returning from creation.
-    @keys = _symbolkey2str(keys).update('parent'=>@relative)
-    @info = nil
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'message' << 'title'
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    super() << 'buttons'
-  end
-  private :__listval_optkeys
-
-  def cget(slot)
-    slot = slot.to_s
-    if slot == 'relative'
-      slot = 'parent'
-    end
-    if winfo_exist?
-      val = super(slot)
-      @keys[slot] = val
-    end
-    @keys[slot]
-  end
-
-  def configure(slot, value=None)
-    if winfo_exist?
-      super(slot, value)
-    end
-    if slot.kind_of?(Hash)
-      slot = _symbolkey2str(slot)
-      slot['parent'] = slot.delete('relative') if slot.key?('relative')
-      @keys.update(slot)
-
-      if @info
-        # update @info
-        slot.each{|k, v|
-          if TkComm::GET_CONFIGINFO_AS_ARRAY
-            if (inf = @info.assoc(k))
-              inf[-1] = v
-            else
-              @info << [k, '', '', '', v]
-            end
-          else
-            if (inf = @info[k])
-              inf[-1] = v
-            else
-              @info[k] = ['', '', '', v]
-            end
-          end
-        }
-      end
-
-    else # ! Hash
-      slot = slot.to_s
-      slot = 'parent' if slot == 'relative'
-      @keys[slot] = value
-
-      if @info
-        # update @info
-        if TkComm::GET_CONFIGINFO_AS_ARRAY
-          if (inf = @info.assoc(slot))
-            inf[-1] = value
-          else
-            @info << [slot, '', '', '', value]
-          end
-        else
-          if (inf = @info[slot])
-            inf[-1] = value
-          else
-            @info[slot] = ['', '', '', value]
-          end
-        end
-      end
-    end
-
-    self
-  end
-
-  def configinfo(slot=nil)
-    if winfo_exist?
-      @info = super()
-      if TkComm::GET_CONFIGINFO_AS_ARRAY
-        @info << ['relative', 'parent']
-      else
-        @info['relative'] = 'parent'
-      end
-    end
-
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if @info
-        if winfo_exist?
-          # update @keys
-          @info.each{|inf| @keys[inf[0]] = inf[-1] if inf.size > 2 }
-        end
-      else
-        @info = []
-        @keys.each{|k, v|
-          @info << [k, '', '', '', v]
-        }
-        @info << ['relative', 'parent']
-      end
-
-      if slot
-        @info.asoc(slot.to_s).dup
-      else
-        @info.dup
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if @info
-        if winfo_exist?
-          # update @keys
-          @info.each{|k, inf| @keys[k] = inf[-1] if inf.size > 2 }
-        end
-      else
-        @info = {}
-        @keys.each{|k, v|
-          @info[k] = ['', '', '', v]
-        }
-        @info['relative'] = 'parent'
-      end
-
-      if slot
-        @info[slot.to_s].dup
-      else
-        @info.dup
-      end
-    end
-  end
-
-  def create
-    num_or_str(tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys)))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/notebook.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/notebook.rb
deleted file mode 100644
index 5146d49..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/notebook.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-#  tkextlib/bwidget/notebook.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class NoteBook < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::NoteBook
-  include TkItemConfigMethod
-
-  TkCommandNames = ['NoteBook'.freeze].freeze
-  WidgetClassName = 'NoteBook'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  class Event_for_Tabs < TkEvent::Event
-    def self._get_extra_args_tbl
-      [ 
-        TkComm.method(:string)   # page idenfier
-      ]
-    end
-  end
-
-  def __boolval_optkeys
-    super() << 'homogeneous'
-  end
-  private :__boolval_optkeys
-
-  def tagid(id)
-    if id.kind_of?(TkWindow)
-      #id.path
-      id.epath
-    elsif id.kind_of?(TkObject)
-      id.to_eval
-    else
-      # id.to_s
-      _get_eval_string(id)
-    end
-  end
-
-  #def tabbind(*args)
-  #  _bind_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args)
-  #  self
-  #end
-  def tabbind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_for_event_class(Event_for_Tabs, [path, 'bindtabs'], 
-                          context, cmd, *args)
-    self
-  end
-
-  #def tabbind_append(*args)
-  #  _bind_append_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args)
-  #  self
-  #end
-  def tabbind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append_for_event_class(Event_for_Tabs, [path, 'bindtabs'], 
-                                 context, cmd, *args)
-    self
-  end
-
-  def tabbind_remove(*args)
-    _bind_remove_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args)
-    self
-  end
-
-  def tabbindinfo(*args)
-    _bindinfo_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args)
-  end
-
-  def add(page, &b)
-    win = window(tk_send('add', tagid(page)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def compute_size
-    tk_send('compute_size')
-    self
-  end
-
-  def delete(page, destroyframe=None)
-    tk_send('delete', tagid(page), destroyframe)
-    self
-  end
-
-  def get_frame(page, &b)
-    win = window(tk_send('getframe', tagid(page)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def index(page)
-    num_or_str(tk_send('index', tagid(page)))
-  end
-
-  def insert(index, page, keys={}, &b)
-    win = window(tk_send('insert', index, tagid(page), *hash_kv(keys)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def move(page, index)
-    tk_send('move', tagid(page), index)
-    self
-  end
-
-  def get_page(page)
-    tk_send('pages', page)
-  end
-
-  def pages(first=None, last=None)
-    list(tk_send('pages', first, last))
-  end
-
-  def raise(page=nil)
-    if page
-      tk_send('raise', page)
-      self
-    else
-      tk_send('raise')
-    end
-  end
-
-  def see(page)
-    tk_send('see', page)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/pagesmanager.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/pagesmanager.rb
deleted file mode 100644
index fc01284..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/pagesmanager.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#  tkextlib/bwidget/pagesmanager.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class PagesManager < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::PagesManager
-  TkCommandNames = ['PagesManager'.freeze].freeze
-  WidgetClassName = 'PagesManager'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def tagid(id)
-    # id.to_s
-    _get_eval_string(id)
-  end
-
-  def add(page, &b)
-    win = window(tk_send('add', tagid(page)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def compute_size
-    tk_send('compute_size')
-    self
-  end
-
-  def delete(page)
-    tk_send('delete', tagid(page))
-    self
-  end
-
-  def get_frame(page, &b)
-    win = window(tk_send('getframe', tagid(page)))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def get_page(page)
-    tk_send('pages', page)
-  end
-
-  def pages(first=None, last=None)
-    list(tk_send('pages', first, last))
-  end
-
-  def raise(page=None)
-    tk_send('raise', page)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panedwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panedwindow.rb
deleted file mode 100644
index 19982c6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panedwindow.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-#  tkextlib/bwidget/panedwindow.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class PanedWindow < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::PanedWindow
-  TkCommandNames = ['PanedWindow'.freeze].freeze
-  WidgetClassName = 'PanedWindow'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def add(keys={})
-    window(tk_send('add', *hash_kv(keys)))
-  end
-
-  def get_frame(idx, &b)
-    win = window(tk_send_without_enc('getframe', idx))
-    win.instance_eval(&b) if b
-    win
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panelframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panelframe.rb
deleted file mode 100644
index 13f8817..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/panelframe.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-#  tkextlib/bwidget/panelframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class PanelFrame < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::PanelFrame
-  TkCommandNames = ['PanelFrame'.freeze].freeze
-  WidgetClassName = 'PanelFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() + ['panelforeground', 'panelbackground']
-  end
-  private :__strval_optkeys
-
-  def add(win, keys={})
-    tk_send('add', win, keys)
-    self
-  end
-
-  def delete(*wins)
-    tk_send('delete', *wins)
-    self
-  end
-
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def items
-    list(tk_send('items'))
-  end
-
-  def remove(*wins)
-    tk_send('remove', *wins)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/passwddlg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/passwddlg.rb
deleted file mode 100644
index 0b635d9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/passwddlg.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-#  tkextlib/bwidget/passwddlg.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/messagedlg'
-
-module Tk
-  module BWidget
-    class PasswdDlg < Tk::BWidget::MessageDlg
-    end
-  end
-end
-
-class Tk::BWidget::PasswdDlg
-  TkCommandNames = ['PasswdDlg'.freeze].freeze
-  WidgetClassName = 'PasswdDlg'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'loginhelptext' << 'loginlabel' << 'logintext' << 
-      'passwdlabel' << 'passwdtext'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'passwdeditable' << 'homogeneous'
-  end
-  private :__boolval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'loginhelpvar' << 'logintextvariable' << 
-      'passwdhelpvar' << 'passwdtextvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def create
-    login, passwd = simplelist(tk_call(self.class::TkCommandNames[0], 
-                                       @path, *hash_kv(@keys)))
-    [login, passwd]
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressbar.rb
deleted file mode 100644
index 0253ce2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressbar.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/bwidget/progressbar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class ProgressBar < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::ProgressBar
-  TkCommandNames = ['ProgressBar'.freeze].freeze
-  WidgetClassName = 'ProgressBar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressdlg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressdlg.rb
deleted file mode 100644
index fbf00f3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/progressdlg.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-#  tkextlib/bwidget/progressdlg.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/variable'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/progressbar'
-require 'tkextlib/bwidget/messagedlg'
-
-module Tk
-  module BWidget
-    class ProgressDlg < Tk::BWidget::MessageDlg
-    end
-  end
-end
-
-class Tk::BWidget::ProgressDlg
-  TkCommandNames = ['ProgressDlg'.freeze].freeze
-  WidgetClassName = 'ProgressDlg'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    # NOT create widget for reusing the object
-    super(keys)
-    @keys['textvariable'] = TkVariable.new unless @keys.key?('textvariable')
-    @keys['variable']     = TkVariable.new unless @keys.key?('variable')
-  end
-
-  def textvariable
-    @keys['textvariable']
-  end
-
-  def text
-    @keys['textvariable'].value
-  end
-
-  def text= (txt)
-    @keys['textvariable'].value = txt
-  end
-
-  def variable
-    @keys['variable']
-  end
-
-  def value
-    @keys['variable'].value
-  end
-
-  def value= (val)
-    @keys['variable'].value = val
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollableframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollableframe.rb
deleted file mode 100644
index a398668..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollableframe.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-#  tkextlib/bwidget/scrollableframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class ScrollableFrame < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::ScrollableFrame
-  include Scrollable
-
-  TkCommandNames = ['ScrollableFrame'.freeze].freeze
-  WidgetClassName = 'ScrollableFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def see(win, vert=None, horiz=None)
-    tk_send_without_enc('see', win, vert, horiz)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrolledwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrolledwindow.rb
deleted file mode 100644
index e9e5323..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrolledwindow.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-#  tkextlib/bwidget/scrolledwindow.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class ScrolledWindow < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::ScrolledWindow
-  TkCommandNames = ['ScrolledWindow'.freeze].freeze
-  WidgetClassName = 'ScrolledWindow'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def set_widget(win)
-    tk_send_without_enc('setwidget', win)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollview.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollview.rb
deleted file mode 100644
index 0546af2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/scrollview.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-#  tkextlib/bwidget/scrollview.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class ScrollView < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::ScrollView
-  TkCommandNames = ['ScrollView'.freeze].freeze
-  WidgetClassName = 'ScrollView'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'fill'
-  end
-  private :__strval_optkeys
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectcolor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectcolor.rb
deleted file mode 100644
index 742a84c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectcolor.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-#  tkextlib/bwidget/selectcolor.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/messagedlg'
-
-module Tk
-  module BWidget
-    class SelectColor < Tk::BWidget::MessageDlg
-    end
-  end
-end
-
-class Tk::BWidget::SelectColor
-  extend Tk
-
-  TkCommandNames = ['SelectColor'.freeze].freeze
-  WidgetClassName = 'SelectColor'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def dialog(keys={})
-    newkeys = @keys.dup
-    newkeys.update(_symbolkey2str(keys))
-    tk_call('SelectColor::dialog', @path, *hash_kv(newkeys))
-  end
-
-  def menu(*args)
-    if args[-1].kind_of?(Hash)
-      keys = args.pop
-    else
-      keys = {}
-    end
-    place = args.flatten
-    newkeys = @keys.dup
-    newkeys.update(_symbolkey2str(keys))
-    tk_call('SelectColor::menu', @path, place, *hash_kv(newkeys))
-  end
-
-  def self.set_color(idx, color)
-    tk_call('SelectColor::setcolor', idx, color)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectfont.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectfont.rb
deleted file mode 100644
index 4787876..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/selectfont.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-#  tkextlib/bwidget/selectfont.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/messagedlg'
-
-module Tk
-  module BWidget
-    class SelectFont < Tk::BWidget::MessageDlg
-      class Dialog < Tk::BWidget::SelectFont
-      end
-      class Toolbar < TkWindow
-      end
-    end
-  end
-end
-
-class Tk::BWidget::SelectFont
-  extend Tk
-
-  TkCommandNames = ['SelectFont'.freeze].freeze
-  WidgetClassName = 'SelectFont'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'sampletext' <<  'title'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    [] # without fontobj operation
-  end
-  private :__font_optkeys
-
-  def create
-    tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys))
-  end
-
-  def self.load_font
-    tk_call('SelectFont::loadfont')
-  end
-end
-
-class Tk::BWidget::SelectFont::Dialog
-  def __font_optkeys
-    [] # without fontobj operation
-  end
-
-  def create_self(keys)
-    super(keys)
-    @keys['type'] = 'dialog'
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot.delete['type']
-      slot.delete[:type]
-      return self if slot.empty?
-    else
-      return self if slot == 'type' || slot == :type
-    end
-    super(slot, value)
-  end
-
-  def create
-    @keys['type'] = 'dialog'
-    tk_call(Tk::BWidget::SelectFont::TkCommandNames[0], @path, *hash_kv(@keys))
-  end
-end
-
-class Tk::BWidget::SelectFont::Toolbar
-  def __font_optkeys
-    [] # without fontobj operation
-  end
-
-  def create_self(keys)
-    keys = {} unless keys
-    keys = _symbolkey2str(keys)
-    keys['type'] = 'toolbar'
-    tk_call(Tk::BWidget::SelectFont::TkCommandNames[0], @path, *hash_kv(keys))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/separator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/separator.rb
deleted file mode 100644
index d9c3458..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/separator.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/bwidget/separator.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Separator < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::Separator
-  TkCommandNames = ['Separator'.freeze].freeze
-  WidgetClassName = 'Separator'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/spinbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/spinbox.rb
deleted file mode 100644
index ca4c046..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/spinbox.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-#  tkextlib/bwidget/entry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-require 'tkextlib/bwidget/arrowbutton'
-require 'tkextlib/bwidget/entry'
-
-module Tk
-  module BWidget
-    class SpinBox < TkEntry
-    end
-  end
-end
-
-class Tk::BWidget::SpinBox
-  include Scrollable
-
-  TkCommandNames = ['SpinBox'.freeze].freeze
-  WidgetClassName = 'SpinBox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helptext' << 'insertbackground' << 'entryfg' << 'entrybg'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'dragenabled' << 'dropenabled' << 'editable'
-  end
-  private :__boolval_optkeys
-
-  def __listval_optkeys
-    super() << 'values'
-  end
-  private :__listval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  #def entrybind(*args)
-  #  _bind([path, 'bind'], *args)
-  #  self
-  #end
-  def entrybind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([path, 'bind'], context, cmd, *args)
-    self
-  end
-
-  #def entrybind_append(*args)
-  #  _bind_append([path, 'bind'], *args)
-  #  self
-  #end
-  def entrybind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([path, 'bind'], context, cmd, *args)
-    self
-  end
-
-  def entrybind_remove(*args)
-    _bind_remove([path, 'bind'], *args)
-    self
-  end
-
-  def entrybindinfo(*args)
-    _bindinfo([path, 'bind'], *args)
-    self
-  end
-
-  def get_index_of_value
-    number(tk_send_without_enc('getvalue'))
-  end
-  alias get_value get_index_of_value
-  alias get_value_index get_index_of_value
-
-  def set_value_by_index(idx)
-    idx = "@#{idx}" if idx.kind_of?(Integer)
-    tk_send_without_enc('setvalue', idx)
-    self
-  end
-  alias set_value set_value_by_index
-  alias set_index_value set_value_by_index
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/statusbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/statusbar.rb
deleted file mode 100644
index df16e4c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/statusbar.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#  tkextlib/bwidget/statusbar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class StatusBar < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::StatusBar
-  TkCommandNames = ['StatusBar'.freeze].freeze
-  WidgetClassName = 'StatusBar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'showresize'
-  end
-  private :__boolval_optkeys
-
-  def add(win, keys={})
-    tk_send('add', win, keys)
-    self
-  end
-
-  def delete(*wins)
-    tk_send('delete', *wins)
-    self
-  end
-
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def items
-    list(tk_send('items'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/titleframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/titleframe.rb
deleted file mode 100644
index f519490..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/titleframe.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-#  tkextlib/bwidget/titleframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/frame'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class TitleFrame < TkWindow
-    end
-  end
-end
-
-class Tk::BWidget::TitleFrame
-  TkCommandNames = ['TitleFrame'.freeze].freeze
-  WidgetClassName = 'TitleFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def get_frame(&b)
-    win = window(tk_send_without_enc('getframe'))
-    win.instance_eval(&b) if b
-    win
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/tree.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/tree.rb
deleted file mode 100644
index e7178de..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/tree.rb
+++ /dev/null
@@ -1,434 +0,0 @@
-#
-#  tkextlib/bwidget/tree.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/canvas'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    class Tree < TkWindow
-      class Node < TkObject
-      end
-    end
-  end
-end
-
-class Tk::BWidget::Tree
-  include TkItemConfigMethod
-  include Scrollable
-
-  TkCommandNames = ['Tree'.freeze].freeze
-  WidgetClassName = 'Tree'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  class Event_for_Items < TkEvent::Event
-    def self._get_extra_args_tbl
-      [ 
-        TkComm.method(:string)   # item idenfier
-      ]
-    end
-  end
-
-  def __strval_optkeys
-    super() << 'crossfill' << 'linesfill'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'dragenabled' << 'dropenabled' << 
-      'redraw' << 'selectfill' << 'showlines'
-  end
-  private :__boolval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvar'
-  end
-  private :__tkvariable_optkeys
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::BWidget::Tree::Node)
-      tag.id
-    else
-      # tag
-      _get_eval_string(tag)
-    end
-  end
-
-  #def imagebind(*args)
-  #  _bind_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  #  self
-  #end
-  def imagebind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_for_event_class(Event_for_Items, [path, 'bindImage'], 
-                          context, cmd, *args)
-    self
-  end
-
-  #def imagebind_append(*args)
-  #  _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  #  self
-  #end
-  def imagebind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], 
-                                 context, cmd, *args)
-    self
-  end
-
-  def imagebind_remove(*args)
-    _bind_remove_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-    self
-  end
-
-  def imagebindinfo(*args)
-    _bindinfo_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
-  end
-
-  #def textbind(*args)
-  #  _bind_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  #  self
-  #end
-  def textbind(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_for_event_class(Event_for_Items, [path, 'bindText'], 
-                          context, cmd, *args)
-    self
-  end
-
-  #def textbind_append(*args)
-  #  _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  #  self
-  #end
-  def textbind_append(context, *args)
-    #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], 
-                                 context, cmd, *args)
-    self
-  end
-
-  def textbind_remove(*args)
-    _bind_remove_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-    self
-  end
-
-  def textbindinfo(*args)
-    _bindinfo_for_event_class(Event_for_Items, [path, 'bindText'], *args)
-  end
-
-  def close_tree(node, recurse=None)
-    tk_send('closetree', tagid(node), recurse)
-    self
-  end
-
-  def delete(*args)
-    tk_send('delete', *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def edit(node, text, *args)
-    tk_send('edit', tagid(node), text, *args)
-    self
-  end
-
-  def exist?(node)
-    bool(tk_send('exists', tagid(node)))
-  end
-
-  def index(node)
-    num_or_str(tk_send('index', tagid(node)))
-  end
-
-  def insert(idx, parent, node, keys={})
-    tk_send('insert', idx, tagid(parent), tagid(node), *hash_kv(keys))
-    self
-  end
-
-  def move(parent, node, idx)
-    tk_send('move', tagid(parent), tagid(node), idx)
-    self
-  end
-
-  def get_node(node, idx)
-    Tk::BWidget::Tree::Node.id2obj(self, tk_send('nodes', tagid(node), idx))
-  end
-
-  def nodes(node, first=None, last=None)
-    simplelist(tk_send('nodes', tagid(node), first, last)).collect{|node|
-      Tk::BWidget::Tree::Node.id2obj(self, node)
-    }
-  end
-
-  def open?(node)
-    bool(@tree.itemcget(tagid(node), 'open'))
-  end
-
-  def open_tree(node, recurse=None)
-    tk_send('opentree', tagid(node), recurse)
-    self
-  end
-
-  def parent(node)
-    Tk::BWidget::Tree::Node.id2obj(self, tk_send('parent', tagid(node)))
-  end
-
-  def reorder(node, neworder)
-    tk_send('reorder', tagid(node), neworder)
-    self
-  end
-
-  def see(node)
-    tk_send('see', tagid(node))
-    self
-  end
-
-  def selection_add(*args)
-    tk_send_without_enc('selection', 'add', 
-                        *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-
-  def selection_get
-    list(tk_send_without_enc('selection', 'get'))
-  end
-
-  def selection_include?(*args)
-    bool(tk_send_without_enc('selection', 'get', 
-                             *(args.collect{|node| tagid(node)})))
-  end
-
-  def selection_range(*args)
-    tk_send_without_enc('selection', 'range', 
-                        *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def selection_remove(*args)
-    tk_send_without_enc('selection', 'remove', 
-                        *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def selection_set(*args)
-    tk_send_without_enc('selection', 'set', 
-                        *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def selection_toggle(*args)
-    tk_send_without_enc('selection', 'toggle', 
-                        *(args.collect{|node| tagid(node)}))
-    self
-  end
-
-  def toggle(node)
-    tk_send_without_enc('toggle', tagid(node))
-    self
-  end
-
-  def visible(node)
-    bool(tk_send_without_enc('visible', tagid(node)))
-  end
-end
-
-class Tk::BWidget::Tree::Node
-  include TkTreatTagFont
-
-  TreeNode_TBL = TkCore::INTERP.create_table
-  TreeNode_ID = ['bw:node'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ TreeNode_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless TreeNode_TBL[tpath]
-    TreeNode_TBL[tpath][id]? TreeNode_TBL[tpath][id]: id
-  end
-
-  def initialize(tree, *args)
-    if tree.kind_of?(Tk::BWidget::Tree)
-      @tree = tree
-      parent = args.shift
-      if parent.kind_of?(Tk::BWidget::Tree::Node)
-        if parent.tree.path != @tree.path
-          fail RuntimeError, 'tree of parent node is not match'
-        end
-      end
-    elsif tree.kind_of?(Tk::BWidget::Tree::Node)
-      @tree = tree.tree
-      parent = tree.parent
-    else
-      fail RuntimeError, 
-        "expect Tk::BWidget::Tree or Tk::BWidget::Tree::Node for 1st argument"
-    end
-
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-    else
-      keys = {}
-    end
-
-    index = keys.delete('index')
-    unless args.empty?
-      index = args.shift
-    end
-    index = 'end' unless index
-
-    unless args.empty?
-      fail RuntimeError, 'too much arguments'
-    end
-
-    @tpath = @tree.path
-
-    if keys.key?('nodename')
-      @path = @id = keys.delete('nodename')
-    else
-      @path = @id = TreeNode_ID.join(TkCore::INTERP._ip_id_)
-      TreeNode_ID[1].succ!
-    end
-
-    TreeNode_TBL[@id] = self
-    TreeNode_TBL[@tpath] = {} unless TreeNode_TBL[@tpath]
-    TreeNode_TBL[@tpath][@id] = self
-
-    @tree.insert(index, parent, @id, keys)
-  end
-
-  def tree
-    @tree
-  end
-
-  def id
-    @id
-  end
-
-  def [](key)
-    cget(key)
-  end
-
-  def []=(key, val)
-    configure(key, val)
-    val
-  end
-
-  def cget(key)
-    @tree.itemcget(@id, key)
-  end
-
-  def configure(key, val=None)
-    @tree.itemconfigure(@id, key, val)
-  end
-
-  def configinfo(key=nil)
-    @tree.itemconfiginfo(@id, key)
-  end
-
-  def current_configinfo(key=nil)
-    @tree.current_itemconfiginfo(@id, key)
-  end
-
-  def close_tree(recurse=None)
-    @tree.close_tree(@id, recurse)
-    self
-  end
-
-  def delete
-    @tree.delete(@id)
-    self
-  end
-
-  def edit(*args)
-    @tree.edit(@id, *args)
-    self
-  end
-
-  def exist?
-    @tree.exist?(@id)
-  end
-
-  def index
-    @tree.index(@id)
-  end
-
-  def move(index, parent=nil)
-    if parent
-      @tree.move(parent, @id, index)
-    else
-      @tree.move(self.parent, @id, index)
-    end
-  end
-
-  def open_tree(recurse=None)
-    @tree.open_tree(@id, recurse)
-    self
-  end
-
-  def open?
-    bool(@tree.itemcget(@id, 'open'))
-  end
-
-  def parent
-    @tree.parent(@id)
-  end
-
-  def reorder(neworder)
-    @tree.reorder(@id, neworder)
-  end
-
-  def see
-    @tree.see(@id)
-  end
-
-  def selection_add
-    @tree.selection_add(@id)
-  end
-
-  def selection_remove
-    @tree.selection_remove(@id)
-  end
-
-  def selection_set
-    @tree.selection_set(@id)
-  end
-
-  def selection_toggle
-    @tree.selection_toggle(@id)
-  end
-
-  def toggle
-    @tree.toggle(@id)
-  end
-
-  def visible
-    @tree.visible(@id)
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/widget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/widget.rb
deleted file mode 100644
index 568e503..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/bwidget/widget.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-#  tkextlib/bwidget/widget.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/bwidget.rb'
-
-module Tk
-  module BWidget
-    module Widget
-    end
-  end
-end
-
-module Tk::BWidget::Widget
-  include Tk
-  extend Tk
-
-  def self.__pathname
-    'Widget::configure'
-  end
-
-  def self.__cget_cmd
-    ['Widget::cget']
-  end
-
-  def self.__config_cmd
-    ['Widget::configure']
-  end
-
-  def self.cget(slot)
-    self.current_configinfo(slot).values[0]
-  end
-
-  def self.add_map(klass, subclass, subpath, opts)
-    tk_call('Widget::addmap', klass, subclass, subpath, opts)
-  end
-
-  def self.bwinclude(klass, subclass, subpath, *args)
-    tk_call('Widget::bwinclude', klass, subclass, subpath, *args)
-  end
-
-  def self.create(klass, path, rename=None, &b)
-    win = window(tk_call('Widget::create', klass, path, rename))
-    win.instance_eval(&b) if b
-    win
-  end
-
-  def self.declare(klass, optlist)
-    tk_call('Widget::declare', klass, optlist)
-  end
-
-  def self.define(klass, filename, *args)
-    tk_call('Widget::define', klass, filename, *args)
-  end
-
-  def self.destroy(win)
-    tk_call('Widget::destroy', _epath(win))
-  end
-
-  def self.focus_next(win)
-    tk_call('Widget::focusNext', win)
-  end
-
-  def self.focus_ok(win)
-    tk_call('Widget::focusOk', win)
-  end
-
-  def self.focus_prev(win)
-    tk_call('Widget::focusPrev', win)
-  end
-
-  def self.generate_doc(dir, widgetlist)
-    tk_call('Widget::generate-doc', dir, widgetlist)
-  end
-
-  def self.generate_widget_doc(klass, iscmd, file)
-    tk_call('Widget::generate-widget-doc', klass, iscmd, file)
-  end
-
-  def self.get_option(win, option)
-    tk_call('Widget::getoption', win, option)
-  end
-
-  def self.get_variable(win, varname, my_varname=None)
-    tk_call('Widget::getVariable', win, varname, my_varname)
-  end
-
-  def self.has_changed(win, option, pvalue)
-    tk_call('Widget::hasChanged', win, option, pvalue)
-  end
-
-  def self.init(klass, win, options)
-    tk_call('Widget::init', klass, win, options)
-  end
-
-  def self.set_option(win, option, value)
-    tk_call('Widget::setoption', win, option, value)
-  end
-
-  def self.sub_cget(win, subwidget)
-    tk_call('Widget::subcget', win, subwidget)
-  end
-
-  def self.sync_options(klass, subclass, subpath, options)
-    tk_call('Widget::syncoptions', klass, subclass, subpath, options)
-  end
-
-  def self.tkinclude(klass, tkwidget, subpath, *args)
-    tk_call('Widget::tkinclude', klass, tkwidget, subpath, *args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl.rb
deleted file mode 100644
index 1d6ecf0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  [incr Tcl] support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/itcl/setup.rb'
-
-# load library
-require 'tkextlib/itcl/incr_tcl.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/incr_tcl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/incr_tcl.rb
deleted file mode 100644
index 07abf3a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/incr_tcl.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-#
-#  tkextlib/itk/incr_tcl.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script
-require 'tkextlib/itcl.rb'
-
-# TkPackage.require('Itcl', '3.2')
-TkPackage.require('Itcl')
-
-module Tk
-  module Itcl
-    include Tk
-    extend Tk
-
-    LIBRARY = TkVarAccess.new('::itcl::library')
-    PURIST = TkVarAccess.new('::itcl::purist')
-
-    VERSION    = TkCore::INTERP._invoke("set", "::itcl::version").freeze
-    PATCHLEVEL = TkCore::INTERP._invoke("set", "::itcl::patchLevel").freeze
-
-    PACKAGE_NAME = 'Itcl'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Itcl')
-      rescue
-        ''
-      end
-    end
-
-    ##############################################
-
-    class ItclObject < TkObject
-      ITCL_CLASSNAME = ''.freeze
-
-      ITCL_OBJ_ID = ['itclobj'.freeze, '00000'.taint].freeze
-      ITCL_OBJ_TBL = {}.taint
-
-      def initialize(*args)
-        if (@klass = self.class::ITCL_CLASSNAME).empty?
-          fail RuntimeError, 'unknown itcl class (abstract class?)'
-        end
-        @id = Tk::Itcl::ItclObject::TCL_OBJ_ID.join(TkCore::INTERP._ip_id_)
-        @path = @id
-        Tk::Itcl::ItclObject::ITCL_OBJ_ID[1].succ!
-      end
-
-      def self.call_proc(name, *args)
-        tk_call("#{ITCL_CLASSNAME}::#{cmd}", *args)
-      end
-
-      def call_method(name, *args)
-        tk_call(@path, name, *args)
-      end
-
-      def isa(klass)
-        bool(tk_call(@path, 'isa', klass))
-      end
-      alias itcl_kind_of? isa
-
-      def info_class
-        tk_call(@path, 'info', 'class')
-      end
-
-      def info_inherit
-        simplelist(tk_call(@path, 'info', 'inherit'))
-      end
-
-      def info_heritage
-        list(tk_call(@path, 'info', 'heritage'))
-      end
-
-      def info_function(*args)
-        if args[-1].kind_of?(Array)
-          params = args.pop
-          params.each{|param|
-            param = param.to_s
-            args << ( (param[0] == ?-)? param: "-#{param}" )
-          }
-        end
-        list(tk_call(@path, 'info', 'function', *args))
-      end
-
-      def info_variable(*args)
-        if args[-1].kind_of?(Array)
-          params = args.pop
-          params.each{|param|
-            param = param.to_s
-            args << ( (param[0] == ?-)? param: "-#{param}" )
-          }
-        end
-        list(tk_call(@path, 'info', 'variable', *args))
-      end
-    end
-
-    ##############################################
-
-    def self.body(klass, func, args, body)
-      tk_call('::itcl::body', "#{klass}::#{func}", args, body)
-    end
-
-    def self.code(cmd, *args)
-      tk_call('::itcl::code', cmd, *args)
-    end
-
-    def self.code_in_namespace(namespace, cmd, *args)
-      tk_call('::itcl::code', '-namespace', namespace, cmd, *args)
-    end
-
-    def self.configbody(klass, var, body)
-      tk_call('::itcl::configbody', "#{klass}::#{var}", body)
-    end
-
-    def self.create_itcl_class(name, body)
-      TkCore::INTERP._invoke('::itcl::class', name, body)
-      klass = Class.new(Tk::Itcl::ItclObject)
-      klass.const_set('ITCL_CLASSNAME', name.dup.freeze)
-      klass
-    end
-
-    def self.delete_itcl_class(*names)
-      tk_call('::itcl::delete', 'class',  *names)
-    end
-
-    def self.delete_itcl_object(*names)
-      tk_call('::itcl::delete', 'object',  *names)
-    end
-
-    def self.delete_namespace(*names)
-      tk_call('::itcl::delete', 'namespace',  *names)
-    end
-
-    def self.ensemble(name, *args)
-      tk_call('::itcl::ensemble', name, *args)
-    end
-
-    def self.find_classes(pat=None)
-      simplelist(tk_call('::itcl::find', 'classes', pat))
-    end
-
-    def self.find_objects(*args)
-      simplelist(tk_call('::itcl::find', 'objects', *args))
-    end
-
-    def self.is_itcl_class(target)
-      bool(tk_call('::itcl::is', 'class', target))
-    end
-
-    def self.is_itcl_object(target)
-      bool(tk_call('::itcl::is', 'object', target))
-    end
-
-    def self.create_local_obj(klass, name, *args)
-      tk_call('::itcl::local', klass, name, *args)
-    end
-
-    def self.is_itcl_instance(klass, target)
-      bool(tk_call('::itcl::is', 'object', '-class', klass, target))
-    end
-
-    def self.scope(var)
-      tk_call('::itcl::scope', var)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/setup.rb
deleted file mode 100644
index 5be0588..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itcl/setup.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
-
-
-# set [incr Tcl] library directory
-
-# ENV['ITCL_LIBRARY'] = '/usr/local/ActiveTcl/lib/itcl3.2/'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk.rb
deleted file mode 100644
index 7492bd3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  [incr Tk] support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/itk/setup.rb'
-
-# load library
-require 'tkextlib/itk/incr_tk.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/incr_tk.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/incr_tk.rb
deleted file mode 100644
index 0626536..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/incr_tk.rb
+++ /dev/null
@@ -1,428 +0,0 @@
-#
-#  tkextlib/itk/incr_tk.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/menuspec'
-require 'tkextlib/itcl.rb'
-
-# call setup script
-require 'tkextlib/itk.rb'
-
-#TkPackage.require('Itk', '3.2')
-TkPackage.require('Itk')
-
-module Tk
-  module Itk
-    include Tk
-    extend Tk
-
-    LIBRARY = TkVarAccess.new('::itk::library')
-
-    PACKAGE_NAME = 'Itk'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Itk')
-      rescue
-        ''
-      end
-    end
-
-    def self.usual(arg, *args)
-      tk_call('::itk::usual', arg, *args)
-    end
-
-    def self.usual_names
-      list(tk_call('::itk::usual'))
-    end
-
-    ############################
-
-    class Archetype < TkWindow
-      TkCommandNames = [].freeze
-      # WidgetClassName = 'Archetype'.freeze
-      # WidgetClassNames[WidgetClassName] = self
-
-      def self.to_eval
-        '::itk::' << self::WidgetClassName
-      end
-
-      def __destroy_hook__
-        Tk::Itk::Component::ComponentID_TBL.delete(self.path)
-      end
-
-      #### [incr Tk] public methods
-      def component
-        simplelist(tk_send('component'))
-      end
-
-      def component_path(name)
-        window(tk_send('component', name))
-      end
-      alias component_widget component_path
-
-      def component_invoke(name, cmd, *args)
-        window(tk_send('component', name, cmd, *args))
-      end
-
-      def component_obj(*names)
-        names = component if names.empty?
-        names.collect{|name| Tk::Itk::Component.new(self.path, name) }
-      end
-
-      #### [incr Tk] protected methods
-=begin
-      def itk_component_add(visibility, name, create_cmds, option_cmds=None)
-        args = []
-        visibility.each{|v| v = v.to_s; args << ( (v[0] == ?-)? v: "-#{v}" )}
-        args << '--' << name << create_cmd << option_cmds
-        tk_call('itk_component', 'add', *args)
-      end
-
-      def itk_component_delete(*names)
-        tk_call('itk_component', 'delete', *names)
-      end
-
-      def itk_initialize(keys={})
-        tk_call('itk_initialize', keys)
-      end
-
-      def itk_option_add(*args)
-        tk_call('itk_option', 'add', *args)
-      end
-
-      def itk_option_define(name, resource, klass, init, config=None)
-        tk_call('itk_option', 'define', name, resource, klass, init, config)
-      end
-      
-      def itk_option_remove(*args)
-        tk_call('itk_option', 'remove', *args)
-      end
-=end
-    end
-
-    ############################
-
-    class Toplevel < Archetype
-      TkCommandNames = ['::itk::Toplevel'].freeze
-      WidgetClassName = 'Toplevel'.freeze
-      WidgetClassNames[WidgetClassName] = self
-
-      include Wm
-      include TkMenuSpec
-
-      def __strval_optkeys
-        super() << 'title'
-      end
-      private :__strval_optkeys
-    end
-
-    ############################
-
-    class Widget < Archetype
-      TkCommandNames = ['::itk::Widget'].freeze
-      WidgetClassName = 'Widget'.freeze
-      WidgetClassNames[WidgetClassName] = self
-    end
-
-
-    ############################
-
-    class Component < TkObject
-      def __cget_cmd
-        [self.master, 'component', self.name, 'cget']
-      end
-      private :__cget_cmd
-
-      def __config_cmd
-        [self.master, 'component', self.name, 'configure']
-      end
-      private :__config_cmd
-
-      ComponentID_TBL = TkCore::INTERP.create_table
-      Itk_Component_ID = ['itk:component'.freeze, '00000'.taint].freeze
-
-      TkCore::INTERP.init_ip_env{ ComponentID_TBL.clear }
-
-      def self.id2obj(master, id)
-        if master.kind_of?(TkObject)
-          master = master.path
-        else
-          master = master.to_s
-        end
-        return id unless ComponentID_TBL.key?(master)
-        (ComponentID_TBL.key?(id))? ComponentID_TBL[master][id]: id
-      end
-
-      def self.new(master, component=nil)
-        if master.kind_of?(TkObject)
-          master = master.path
-        else
-          master = master.to_s
-        end
-
-        if component.kind_of?(Tk::Itk::Component)
-          component = component.name
-        elsif component
-          component = component.to_s
-        else
-          component = Itk_Component_ID.join(TkCore::INTERP._ip_id_)
-          Itk_Component_ID[1].succ!
-        end
-
-        if ComponentID_TBL.key?(master)
-          if ComponentID_TBL[master].key?(component)
-            return ComponentID_TBL[master][component] 
-          end
-        else
-          ComponentID_TBL[master] = {}
-        end
-
-        super(master, component)
-      end
-
-      def initialize(master, component)
-        @master = master
-        @component = component
-
-        ComponentID_TBL[@master][@component] = self
-
-        begin
-          @widget = window(tk_call(@master, 'component', @component))
-          @path = @widget.path
-        rescue
-          @widget = nil
-          @path = nil
-        end
-      end
-
-      def path
-        unless @path
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        @path
-      end
-
-      def epath
-        path()
-      end
-
-      def to_eval
-        path()
-      end
-
-      def master
-        @master
-      end
-
-      def name
-        @component
-      end
-
-      def widget
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        @widget
-      end
-
-      def widget_class
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-            @widget.classname
-          rescue
-            nil
-          end
-        end
-      end
-
-      def method_missing(id, *args)
-        name = id.id2name
-
-        # try 1 : component command
-        begin
-          return tk_call(@master, 'component', @component, name, *args)
-        rescue
-        end
-
-        # try 2 : component configure
-        len = args.length
-        begin
-          case len
-          when 1
-            if name[-1] == ?=
-              return configure(name[0..-2], args[0])
-            else
-              return configure(name, args[0])
-            end
-          when 0
-            return cget(name)
-          end
-        rescue
-        end
-
-        # try 3 : widget method or widget configure
-        begin
-          unless @widget
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          end
-          @widget.__send__(id, *args)
-        rescue
-        end
-
-        # unknown method
-        super(id, *args)
-        # fail RuntimeError, "unknown method '#{name}' for #{self.inspect}"
-      end
-
-      def tk_send(cmd, *rest)
-        begin
-          tk_call(@master, 'component', @component, cmd, *rest)
-        rescue
-          unless @path
-            begin
-              @widget = window(tk_call(@master, 'component', @component))
-              @path = @widget.path
-            rescue
-              fail RuntimeError, 'component is not assigned to a widget'
-            end
-          end
-          tk_call(@path, cmd, *rest)
-        end
-      end
-
-      def tk_send_without_enc(cmd, *rest)
-        begin
-          tk_call_without_enc(@master, 'component', @component, cmd, *rest)
-        rescue
-          unless @path
-            begin
-              @widget = window(tk_call(@master, 'component', @component))
-              @path = @widget.path
-            rescue
-              fail RuntimeError, 'component is not assigned to a widget'
-            end
-          end
-          tk_call_without_enc(@path, cmd, *rest)
-        end
-      end
-
-      def tk_send_with_enc(cmd, *rest)
-        begin
-          tk_call_with_enc(@master, 'component', @component, cmd, *rest)
-        rescue
-          unless @path
-            begin
-              @widget = window(tk_call(@master, 'component', @component))
-              @path = @widget.path
-            rescue
-              fail RuntimeError, 'component is not assigned to a widget'
-            end
-          end
-          tk_call_with_enc(@path, cmd, *rest)
-        end
-      end
-
-      #def bind(*args)
-      #  unless @widget
-      #    begin
-      #      @widget = window(tk_call(@master, 'component', @component))
-      #      @path = @widget.path
-      #    rescue
-      #      fail RuntimeError, 'component is not assigned to a widget'
-      #    end
-      #  end
-      #  @widget.bind(*args)
-      #end
-      def bind(context, *args)
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-        @widget.bind(context, cmd, *args)
-      end
-
-      #def bind_append(*args)
-      #  unless @widget
-      #    begin
-      #      @widget = window(tk_call(@master, 'component', @component))
-      #      @path = @widget.path
-      #    rescue
-      #      fail RuntimeError, 'component is not assigned to a widget'
-      #    end
-      #  end
-      #  @widget.bind_append(*args)
-      #end
-      def bind_append(context, *args)
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-        @widget.bind_append(context, cmd, *args)
-      end
-
-      def bind_remove(*args)
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        @widget.bind_remove(*args)
-      end
-
-      def bindinfo(*args)
-        unless @widget
-          begin
-            @widget = window(tk_call(@master, 'component', @component))
-            @path = @widget.path
-          rescue
-            fail RuntimeError, 'component is not assigned to a widget'
-          end
-        end
-        @widget.bindinfo(*args)
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/setup.rb
deleted file mode 100644
index e47b64a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/itk/setup.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
-
-
-# set [incr Tk] library directory
-
-# ENV['ITK_LIBRARY'] = '/usr/local/ActiveTcl/lib/itk3.2/'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets.rb
deleted file mode 100644
index ebd4cf7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-#
-#  [incr Widgets] support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/itcl'
-require 'tkextlib/itk'
-
-# call setup script for general 'tkextlib' libraries
-#require 'tkextlib/setup.rb'
-
-# call setup script
-#require 'tkextlib/iwidgets/setup.rb'
-
-# load all image format handlers
-#TkPackage.require('Iwidgets', '4.0')
-TkPackage.require('Iwidgets')
-
-module Tk
-  module Iwidgets
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    extend TkCore
-
-    PACKAGE_NAME = 'Iwidgets'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Iwidgets')
-      rescue
-        ''
-      end
-    end
-
-    ####################################################
-
-    autoload :Buttonbox,             'tkextlib/iwidgets/buttonbox'
-    autoload :Calendar,              'tkextlib/iwidgets/calendar'
-    autoload :Canvasprintbox,        'tkextlib/iwidgets/canvasprintbox'
-    autoload :Canvasprintdialog,     'tkextlib/iwidgets/canvasprintdialog'
-    autoload :Checkbox,              'tkextlib/iwidgets/checkbox'
-    autoload :Combobox,              'tkextlib/iwidgets/combobox'
-    autoload :Dateentry,             'tkextlib/iwidgets/dateentry'
-    autoload :Datefield,             'tkextlib/iwidgets/datefield'
-    autoload :Dialog,                'tkextlib/iwidgets/dialog'
-    autoload :Dialogshell,           'tkextlib/iwidgets/dialogshell'
-    autoload :Disjointlistbox,       'tkextlib/iwidgets/disjointlistbox'
-    autoload :Entryfield,            'tkextlib/iwidgets/entryfield'
-    autoload :Extbutton,             'tkextlib/iwidgets/extbutton'
-    autoload :Extfileselectionbox,   'tkextlib/iwidgets/extfileselectionbox'
-    autoload :Extfileselectiondialog,'tkextlib/iwidgets/extfileselectiondialog'
-    autoload :Feedback,              'tkextlib/iwidgets/feedback'
-    autoload :Fileselectionbox,      'tkextlib/iwidgets/fileselectionbox'
-    autoload :Fileselectiondialog,   'tkextlib/iwidgets/fileselectiondialog'
-    autoload :Finddialog,            'tkextlib/iwidgets/finddialog'
-    autoload :Hierarchy,             'tkextlib/iwidgets/hierarchy'
-    autoload :Hyperhelp,             'tkextlib/iwidgets/hyperhelp'
-    autoload :Labeledframe,          'tkextlib/iwidgets/labeledframe'
-    autoload :Labeledwidget,         'tkextlib/iwidgets/labeledwidget'
-    autoload :Mainwindow,            'tkextlib/iwidgets/mainwindow'
-    autoload :Menubar,               'tkextlib/iwidgets/menubar'
-    autoload :Messagebox,            'tkextlib/iwidgets/messagebox'
-    autoload :Messagedialog,         'tkextlib/iwidgets/messagedialog'
-    autoload :Notebook,              'tkextlib/iwidgets/notebook'
-    autoload :Optionmenu,            'tkextlib/iwidgets/optionmenu'
-    autoload :Panedwindow,           'tkextlib/iwidgets/panedwindow'
-    autoload :Pushbutton,            'tkextlib/iwidgets/pushbutton'
-    autoload :Promptdialog,          'tkextlib/iwidgets/promptdialog'
-    autoload :Radiobox,              'tkextlib/iwidgets/radiobox'
-    autoload :Scrolledcanvas,        'tkextlib/iwidgets/scrolledcanvas'
-    autoload :Scrolledframe,         'tkextlib/iwidgets/scrolledframe'
-    autoload :Scrolledhtml,          'tkextlib/iwidgets/scrolledhtml'
-    autoload :Scrolledlistbox,       'tkextlib/iwidgets/scrolledlistbox'
-    autoload :Scrolledtext,          'tkextlib/iwidgets/scrolledtext'
-    autoload :Scrolledwidget,        'tkextlib/iwidgets/scrolledwidget'
-    autoload :Selectionbox,          'tkextlib/iwidgets/selectionbox'
-    autoload :Selectiondialog,       'tkextlib/iwidgets/selectiondialog'
-    autoload :Shell,                 'tkextlib/iwidgets/shell'
-    autoload :Spindate,              'tkextlib/iwidgets/spindate'
-    autoload :Spinint,               'tkextlib/iwidgets/spinint'
-    autoload :Spinner,               'tkextlib/iwidgets/spinner'
-    autoload :Spintime,              'tkextlib/iwidgets/spintime'
-    autoload :Tabnotebook,           'tkextlib/iwidgets/tabnotebook'
-    autoload :Tabset,                'tkextlib/iwidgets/tabset'
-    autoload :Timeentry,             'tkextlib/iwidgets/timeentry'
-    autoload :Timefield,             'tkextlib/iwidgets/timefield'
-    autoload :Toolbar,               'tkextlib/iwidgets/toolbar'
-    autoload :Watch,                 'tkextlib/iwidgets/watch'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/buttonbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/buttonbox.rb
deleted file mode 100644
index a055e07..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/buttonbox.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-#  tkextlib/iwidgets/buttonbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Buttonbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Buttonbox
-  TkCommandNames = ['::iwidgets::buttonbox'.freeze].freeze
-  WidgetClassName = 'Buttonbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'buttoncget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'buttonconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'defaultring'
-  end
-  private :__item_boolval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias buttoncget itemcget
-  alias buttonconfigure itemconfigure
-  alias buttonconfiginfo itemconfiginfo
-  alias current_buttonconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'add', tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def default(idx)
-    tk_call(@path, 'default', index(idx))
-    self
-  end
-
-  def delete(idx)
-    tk_call(@path, 'delete', index(idx))
-    self
-  end
-
-  def hide(idx)
-    tk_call(@path, 'hide', index(idx))
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'insert', index(idx), tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def invoke(idx=nil)
-    if idx
-      tk_call(@path, 'invoke', index(idx))
-    else
-      tk_call(@path, 'invoke')
-    end
-    self
-  end
-
-  def show(idx)
-    tk_call(@path, 'show', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/calendar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/calendar.rb
deleted file mode 100644
index 0152f85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/calendar.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-#  tkextlib/iwidgets/calendar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Calendar < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Calendar
-  TkCommandNames = ['::iwidgets::calendar'.freeze].freeze
-  WidgetClassName = 'Calendar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() + [
-      'buttonforeground', 'outline', 'selectcolor', 
-      'weekdaybackground', 'weekendbackground'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    super() << 'days'
-  end
-  private :__listval_optkeys
-
-  def __font_optkeys
-    super() + ['currentdatefont', 'datefont', 'dayfont', 'titlefont']
-  end
-  private :__font_optkeys
-
-  ####################################
-
-  include Tk::ValidateConfigure
-
-  class CalendarCommand < TkValidateCommand
-    #class CalCmdArgs < TkUtil::CallbackSubst
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ [?d, ?s, :date], nil ]
-      PROC_TBL = [ [?s, TkComm.method(:string) ], nil ]
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      # array of config-option key (string or symbol)
-      ['command']
-    end
-
-    #def initialize(cmd = Proc.new, *args)
-    #  _initialize_for_cb_class(CalCmdArgs, cmd, *args)
-    #end
-  end
-
-  def __validation_class_list
-    super() << CalendarCommand
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, CalendarCommand)
-=begin
-  def command(cmd = Proc.new, args = nil)
-    if cmd.kind_of?(CalendarCommand)
-      configure('command', cmd)
-    elsif args
-      configure('command', [cmd, args])
-    else
-      configure('command', cmd)
-    end
-  end
-=end
-
-  ####################################
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def select(date)
-    tk_call(@path, 'select', date)
-    self
-  end
-
-  def show(date)
-    tk_call(@path, 'show', date)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintbox.rb
deleted file mode 100644
index fa5e90a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintbox.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-#  tkextlib/iwidgets/canvasprintbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Canvasprintbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Canvasprintbox
-  TkCommandNames = ['::iwidgets::canvasprintbox'.freeze].freeze
-  WidgetClassName = 'Canvasprintbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'filename'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'stretch'
-  end
-  private :__boolval_optkeys
-
-  def get_output
-    tk_call(@path, 'getoutput')
-  end
-
-  def print
-    bool(tk_call(@path, 'print'))
-  end
-
-  def refresh
-    tk_call(@path, 'refresh')
-    self
-  end
-
-  def set_canvas(win)
-    tk_call(@path, 'setcanvas', win)
-    self
-  end
-
-  def stop
-    tk_call(@path, 'stop')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintdialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintdialog.rb
deleted file mode 100644
index bbf5076..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/canvasprintdialog.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-#  tkextlib/iwidgets/canvasprintdialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Canvasprintdialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Canvasprintdialog
-  TkCommandNames = ['::iwidgets::canvasprintdialog'.freeze].freeze
-  WidgetClassName = 'Canvasprintdialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def get_output
-    tk_call(@path, 'getoutput')
-  end
-
-  def print
-    bool(tk_call(@path, 'print'))
-  end
-
-  def refresh
-    tk_call(@path, 'refresh')
-    self
-  end
-
-  def set_canvas(win)
-    tk_call(@path, 'setcanvas', win)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/checkbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/checkbox.rb
deleted file mode 100644
index 46ca389..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/checkbox.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-#  tkextlib/iwidgets/checkbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Checkbox < Tk::Iwidgets::Labeledframe
-    end
-  end
-end
-
-class Tk::Iwidgets::Checkbox
-  TkCommandNames = ['::iwidgets::checkbox'.freeze].freeze
-  WidgetClassName = 'Checkbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'buttoncget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'buttonconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'defaultring'
-  end
-  private :__item_boolval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias buttoncget itemcget
-  alias buttonconfigure itemconfigure
-  alias buttonconfiginfo itemconfiginfo
-  alias current_buttonconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'add', tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def delete(idx)
-    tk_call(@path, 'delete', index(idx))
-    self
-  end
-
-  def deselect(idx)
-    tk_call(@path, 'deselect', index(idx))
-    self
-  end
-
-  def flash(idx)
-    tk_call(@path, 'flash', index(idx))
-    self
-  end
-
-  def get(idx)
-    simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
-      Tk::Itk::Component.id2obj(self, id)
-    }
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'insert', index(idx), tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def select(idx)
-    tk_call(@path, 'select', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/combobox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/combobox.rb
deleted file mode 100644
index a6d54d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/combobox.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-#  tkextlib/iwidgets/combobox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Combobox < Tk::Iwidgets::Entryfield
-    end
-  end
-end
-
-class Tk::Iwidgets::Combobox
-  TkCommandNames = ['::iwidgets::combobox'.freeze].freeze
-  WidgetClassName = 'Combobox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'completion' << 'dropdown' << 'editable' << 'unique'
-  end
-  private :__boolval_optkeys
-
-  def clear(component=None)
-    tk_call(@path, 'clear', component)
-    self
-  end
-
-  def delete_list(first, last=None)
-    tk_call(@path, 'delete', 'list', first, last)
-    self
-  end
-
-  def delete_entry(first, last=None)
-    tk_call(@path, 'delete', 'entry', first, last)
-    self
-  end
-
-  def get_list_contents(index)
-    tk_call(@path, 'get', index)
-  end
-
-  def insert_list(idx, *elems)
-    tk_call(@path, 'insert', 'list', idx, *elems)
-    self
-  end
-
-  def insert_entry(idx, *elems)
-    tk_call(@path, 'insert', 'entry', idx, *elems)
-    self
-  end
-
-  # listbox methods
-  def size
-    tk_send_without_enc('size').to_i
-  end
-  def see(index)
-    tk_send_without_enc('see', index)
-    self
-  end
-  def selection_anchor(index)
-    tk_send_without_enc('selection', 'anchor', index)
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', first, last)
-    self
-  end
-  def selection_includes(index)
-    bool(tk_send_without_enc('selection', 'includes', index))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', first, last)
-    self
-  end
-
-  # scrolledlistbox methods
-  def get_curselection
-    tk_call(@path, 'getcurselection')
-  end
-  def justify(dir)
-    tk_call(@path, 'justify', dir)
-    self
-  end
-  def sort(*params, &b)
-    # see 'lsort' man page about params
-    if b
-      tk_call(@path, 'sort', '-command', proc(&b), *params)
-    else
-      tk_call(@path, 'sort', *params)
-    end
-    self
-  end
-  def sort_ascending
-    tk_call(@path, 'sort', 'ascending')
-    self
-  end
-  def sort_descending
-    tk_call(@path, 'sort', 'descending')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dateentry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dateentry.rb
deleted file mode 100644
index 0a8897f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dateentry.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/iwidgets/dateentry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Dateentry < Tk::Iwidgets::Datefield
-    end
-  end
-end
-
-class Tk::Iwidgets::Dateentry
-  TkCommandNames = ['::iwidgets::dateentry'.freeze].freeze
-  WidgetClassName = 'Dateentry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/datefield.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/datefield.rb
deleted file mode 100644
index 632f333..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/datefield.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-#  tkextlib/iwidgets/datefield.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Datefield < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Datefield
-  TkCommandNames = ['::iwidgets::datefield'.freeze].freeze
-  WidgetClassName = 'Datefield'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'gmt'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def valid?
-    bool(tk_call(@path, 'isvalid'))
-  end
-  alias isvalid? valid?
-
-  def show(date=None)
-    tk_call(@path, 'show', date)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialog.rb
deleted file mode 100644
index 8540eae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialog.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/iwidgets/dialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Dialog < Tk::Iwidgets::Dialogshell
-    end
-  end
-end
-
-class Tk::Iwidgets::Dialog
-  TkCommandNames = ['::iwidgets::dialog'.freeze].freeze
-  WidgetClassName = 'Dialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialogshell.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialogshell.rb
deleted file mode 100644
index d6c6686..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/dialogshell.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-#  tkextlib/iwidgets/dialogshell.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Dialogshell < Tk::Iwidgets::Shell
-    end
-  end
-end
-
-class Tk::Iwidgets::Dialogshell
-  TkCommandNames = ['::iwidgets::dialogshell'.freeze].freeze
-  WidgetClassName = 'Dialogshell'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'buttoncget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'buttonconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'defaultring'
-  end
-  private :__item_boolval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias buttoncget itemcget
-  alias buttonconfigure itemconfigure
-  alias buttonconfiginfo itemconfiginfo
-  alias current_buttonconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'add', tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def default(idx)
-    tk_call(@path, 'default', index(idx))
-    self
-  end
-
-  def delete(idx)
-    tk_call(@path, 'delete', index(idx))
-    self
-  end
-
-  def hide(idx)
-    tk_call(@path, 'hide', index(idx))
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'insert', index(idx), tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def invoke(idx=nil)
-    if idx
-      tk_call(@path, 'invoke', index(idx))
-    else
-      tk_call(@path, 'invoke')
-    end
-    self
-  end
-
-  def show(idx)
-    tk_call(@path, 'show', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/disjointlistbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/disjointlistbox.rb
deleted file mode 100644
index 9bc063b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/disjointlistbox.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-#  tkextlib/iwidgets/disjointlistbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Disjointlistbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Disjointlistbox
-  TkCommandNames = ['::iwidgets::disjointlistbox'.freeze].freeze
-  WidgetClassName = 'Disjointlistbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'lhslabeltext' << 'rhslabeltext' << 'lhsbuttonlabel' << 'rhsbuttonlabel'
-  end
-  private :__strval_optkeys
-
-  def set_lhs(*items)
-    tk_call(@path, 'setlhs', items)
-    self
-  end
-  def set_rhs(*items)
-    tk_call(@path, 'setrhs', items)
-    self
-  end
-
-  def get_lhs
-    simplelist(tk_call(@path, 'getlhs'))
-  end
-  def get_rhs
-    simplelist(tk_call(@path, 'getrhs'))
-  end
-
-  def insert_lhs(*items)
-    tk_call(@path, 'insertlhs', items)
-    self
-  end
-  def insert_rhs(*items)
-    tk_call(@path, 'insertrhs', items)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/entryfield.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/entryfield.rb
deleted file mode 100644
index 6aa933c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/entryfield.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-#
-#  tkextlib/iwidgets/entryfield.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Entryfield < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Entryfield
-  TkCommandNames = ['::iwidgets::entryfield'.freeze].freeze
-  WidgetClassName = 'Entryfield'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  ####################################
-
-  include Tk::ValidateConfigure
-
-  class EntryfieldValidate < TkValidateCommand
-    #class CalCmdArgs < TkUtil::CallbackSubst
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ 
-        [ ?c, ?s, :char ], 
-        [ ?P, ?s, :post ], 
-        [ ?S, ?s, :current ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-      PROC_TBL = [ 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-    end
-
-    def self._config_keys
-      ['validate', 'invalid']
-    end
-  end
-
-  def __validation_class_list
-    super() << EntryfieldValidate
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, EntryfieldValidate)
-=begin
-  def validate(cmd = Proc.new, args = nil)
-    if cmd.kind_of?(ValidateCmd)
-      configure('validate', cmd)
-    elsif args
-      configure('validate', [cmd, args])
-    else
-      configure('validate', cmd)
-    end
-  end
-
-  def invalid(cmd = Proc.new, args = nil)
-    if cmd.kind_of?(ValidateCmd)
-      configure('invalid', cmd)
-    elsif args
-      configure('invalid', [cmd, args])
-    else
-      configure('invalid', cmd)
-    end
-  end
-=end
-
-  ####################################
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-
-  def value
-    _fromUTF8(tk_send_without_enc('get'))
-  end
-  def value= (val)
-    tk_send_without_enc('delete', 0, 'end')
-    tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
-    val
-  end
-  alias get value
-  alias set value=
-
-  def cursor=(index)
-    tk_send_without_enc('icursor', index)
-    #self
-    index
-  end
-  alias icursor cursor=
-
-  def index(index)
-    number(tk_send_without_enc('index', index))
-  end
-
-  def insert(pos,text)
-    tk_send_without_enc('insert', pos, _get_eval_enc_str(text))
-    self
-  end
-
-  def mark(pos)
-    tk_send_without_enc('scan', 'mark', pos)
-    self
-  end
-  def dragto(pos)
-    tk_send_without_enc('scan', 'dragto', pos)
-    self
-  end
-  def selection_adjust(index)
-    tk_send_without_enc('selection', 'adjust', index)
-    self
-  end
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-  def selection_from(index)
-    tk_send_without_enc('selection', 'from', index)
-    self
-  end
-  def selection_present()
-    bool(tk_send_without_enc('selection', 'present'))
-  end
-  def selection_range(s, e)
-    tk_send_without_enc('selection', 'range', s, e)
-    self
-  end
-  def selection_to(index)
-    tk_send_without_enc('selection', 'to', index)
-    self
-  end
-
-  # based on tk/scrollable.rb
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extbutton.rb
deleted file mode 100644
index 158d9d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extbutton.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-#  tkextlib/iwidgets/extbutton.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Extbutton < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Extbutton
-  TkCommandNames = ['::iwidgets::extbutton'.freeze].freeze
-  WidgetClassName = 'Extbutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'bitmapforeground' << 'ringbackground'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'defaultring'
-  end
-  private :__boolval_optkeys
-
-  def invoke
-    tk_call(@path, 'invoke')
-    self
-  end
-
-  def flash
-    tk_call(@path, 'flash')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectionbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectionbox.rb
deleted file mode 100644
index 501f4c9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectionbox.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#  tkextlib/iwidgets/extfileselectionbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Extfileselectionbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Extfileselectionbox
-  TkCommandNames = ['::iwidgets::extfileselectionbox'.freeze].freeze
-  WidgetClassName = 'Extfileselectionbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() + [
-      'dirslabel', 'fileslabel', 'filterlabel', 'mask', 'nomatchstring', 
-      'selectionlabel'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() + ['dirson', 'fileson', 'filteron', 'selectionon']
-  end
-  private :__boolval_optkeys
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def filter
-    tk_call(@path, 'filter')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectiondialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectiondialog.rb
deleted file mode 100644
index 14388be..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/extfileselectiondialog.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  tkextlib/iwidgets/extfileselectiondialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Extfileselectiondialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Extfileselectiondialog
-  TkCommandNames = ['::iwidgets::extfileselectiondialog'.freeze].freeze
-  WidgetClassName = 'Extfileselectiondialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def filter
-    tk_call(@path, 'filter')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/feedback.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/feedback.rb
deleted file mode 100644
index 0a25237..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/feedback.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-#  tkextlib/iwidgets/feedback.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Feedback < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Feedback
-  TkCommandNames = ['::iwidgets::feedback'.freeze].freeze
-  WidgetClassName = 'Feedback'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'barcolor'
-  end
-  private :__strval_optkeys
-
-  def reset
-    tk_call(@path, 'reset')
-    self
-  end
-
-  def step(inc=1)
-    tk_call(@path, 'step', inc)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectionbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectionbox.rb
deleted file mode 100644
index 7b331d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectionbox.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#  tkextlib/iwidgets/fileselectionbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Fileselectionbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Fileselectionbox
-  TkCommandNames = ['::iwidgets::fileselectionbox'.freeze].freeze
-  WidgetClassName = 'Fileselectionbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() + [
-      'directory', 'dirslabel', 'fileslabel', 'filterlabel', 'mask', 
-      'nomatchstring', 'selectionlabel'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() + ['dirson', 'fileson', 'filteron', 'selectionon']
-  end
-  private :__boolval_optkeys
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def filter
-    tk_call(@path, 'filter')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectiondialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectiondialog.rb
deleted file mode 100644
index 50f459e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/fileselectiondialog.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  tkextlib/iwidgets/fileselectiondialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Fileselectiondialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Fileselectiondialog
-  TkCommandNames = ['::iwidgets::fileselectiondialog'.freeze].freeze
-  WidgetClassName = 'Fileselectiondialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def filter
-    tk_call(@path, 'filter')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/finddialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/finddialog.rb
deleted file mode 100644
index 75e219c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/finddialog.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-#  tkextlib/iwidgets/finddialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Finddialog < Tk::Iwidgets::Dialogshell
-    end
-  end
-end
-
-class Tk::Iwidgets::Finddialog
-  TkCommandNames = ['::iwidgets::finddialog'.freeze].freeze
-  WidgetClassName = 'Finddialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() + [
-      'patternbackground', 'patternforeground', 
-      'searchbackground', 'searchforeground'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    super().update('textwidget'=>proc{|v| window(v)})
-  end
-  private :__val2ruby_optkeys
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def find
-    tk_call(@path, 'find')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hierarchy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hierarchy.rb
deleted file mode 100644
index 4cc6aee..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hierarchy.rb
+++ /dev/null
@@ -1,309 +0,0 @@
-#
-#  tkextlib/iwidgets/hierarchy.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/text'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Hierarchy < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Hierarchy
-  ItemConfCMD = ['tag'.freeze, 'configure'.freeze].freeze
-  include TkTextTagConfig
-
-  TkCommandNames = ['::iwidgets::hierarchy'.freeze].freeze
-  WidgetClassName = 'Hierarchy'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include Tk::ValidateConfigure
-
-  class QueryCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ [?n, ?s, :node], nil ]
-      PROC_TBL = [ [?s, TkComm.method(:string) ], nil ]
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      # array of config-option key (string or symbol)
-      ['querycommand']
-    end
-  end
-
-  class IndicatorCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ 
-        [ ?n, ?s, :node ], 
-        [ ?s, ?b, :status ], 
-        nil
-      ]
-
-      PROC_TBL = [ 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?b, TkComm.method(:bool) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      # array of config-option key (string or symbol)
-      ['iconcommand', 'icondblcommand', 'imagedblcommand']
-    end
-  end
-
-  class IconCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ 
-        [ ?n, ?s, :node ], 
-        [ ?i, ?s, :icon ], 
-        nil
-      ]
-      PROC_TBL = [ [ ?s, TkComm.method(:string) ], nil ]
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      # array of config-option key (string or symbol)
-      ['dblclickcommand', 'imagecommand', 'selectcommand']
-    end
-  end
-
-  def __validation_class_list
-    super() << QueryCommand << IndicatorCommand << IconCommand
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, QueryCommand)
-  Tk::ValidateConfigure.__def_validcmd(binding, IndicatorCommand)
-  Tk::ValidateConfigure.__def_validcmd(binding, IconCommand)
-
-  ####################################
-
-  def __boolval_optkeys
-    super() << 'alwaysquery' << 'expanded' << 'filter'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'markbackground' << 'markforeground' << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def collapse(node)
-    tk_call(@path, 'collapse')
-    self
-  end
-
-  def current
-    tk_call(@path, 'current')
-  end
-
-  def draw(mode=None)
-    case mode
-    when None
-      # do nothing
-    when 'now', :now
-      mode = '-now'
-    when 'eventually', :eventually
-      mode = '-eventually'
-    when String, Symbol
-      mode = mode.to_s
-      mode = '-' << mode if mode[0] != ?-
-    end
-    tk_call(@path, 'draw', mode)
-  end
-
-  def expand(node)
-    tk_call(@path, 'expand', node)
-    self
-  end
-
-  def expanded?(node)
-    bool(tk_call(@path, 'expanded', node))
-  end
-
-  def exp_state
-    list(tk_call(@path, 'expState'))
-  end
-  alias expand_state  exp_state
-  alias expanded_list exp_state
-
-  def mark_clear
-    tk_call(@path, 'mark', 'clear')
-    self
-  end
-  def mark_add(*nodes)
-    tk_call(@path, 'mark', 'add', *nodes)
-    self
-  end
-  def mark_remove(*nodes)
-    tk_call(@path, 'mark', 'remove', *nodes)
-    self
-  end
-  def mark_get
-    list(tk_call(@path, 'mark', 'get'))
-  end
-
-  def refresh(node)
-    tk_call(@path, 'refresh', node)
-    self
-  end
-
-  def prune(node)
-    tk_call(@path, 'prune', node)
-    self
-  end
-
-  def selection_clear
-    tk_call(@path, 'selection', 'clear')
-    self
-  end
-  def selection_add(*nodes)
-    tk_call(@path, 'selection', 'add', *nodes)
-    self
-  end
-  def selection_remove(*nodes)
-    tk_call(@path, 'selection', 'remove', *nodes)
-    self
-  end
-  def selection_get
-    list(tk_call(@path, 'selection', 'get'))
-  end
-
-  def toggle(node)
-    tk_call(@path, 'toggle', node)
-    self
-  end
-
-  # based on TkText widget
-
-  def bbox(index)
-    list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
-  end
-
-  def compare(idx1, op, idx2)
-    bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1), 
-                             op, _get_eval_enc_str(idx2)))
-  end
-
-  def debug
-    bool(tk_send_without_enc('debug'))
-  end
-  def debug=(boolean)
-    tk_send_without_enc('debug', boolean)
-    #self
-    boolean
-  end
-
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-
-  def dlineinfo(index)
-    list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
-  end
-
-  def get(*index)
-    _fromUTF8(tk_send_without_enc('get', *index))
-  end
-
-  def index(index)
-    tk_send_without_enc('index', _get_eval_enc_str(index))
-  end
-
-  def insert(index, chars, *tags)
-    if tags[0].kind_of? Array
-      # multiple chars-taglist argument :: str, [tag,...], str, [tag,...], ...
-      args = [chars]
-      while tags.size > 0
-        args << tags.shift.collect{|x|_get_eval_string(x)}.join(' ')  # taglist
-        args << tags.shift if tags.size > 0                           # chars
-      end
-      super(index, *args)
-    else
-      # single chars-taglist argument :: str, tag, tag, ...
-      if tags.size == 0
-        super(index, chars)
-      else
-        super(index, chars, tags.collect{|x|_get_eval_string(x)}.join(' '))
-      end
-    end
-  end
-
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-  def see(index)
-    tk_send_without_enc('see', index)
-    self
-  end
-
-  # based on tk/scrollable.rb
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-
-  def yview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('yview'))
-    else
-      tk_send_without_enc('yview', *index)
-      self
-    end
-  end
-  def yview_moveto(*index)
-    yview('moveto', *index)
-  end
-  def yview_scroll(*index)
-    yview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hyperhelp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hyperhelp.rb
deleted file mode 100644
index 77b0e09..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/hyperhelp.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-#  tkextlib/iwidgets/hyperhelp.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Hyperhelp < Tk::Iwidgets::Shell
-    end
-  end
-end
-
-class Tk::Iwidgets::Hyperhelp
-  TkCommandNames = ['::iwidgets::hyperhelp'.freeze].freeze
-  WidgetClassName = 'Hyperhelp'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'helpdir'
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    super() << 'topics'
-  end
-  private :__listval_optkeys
-
-  def show_topic(topic)
-    tk_call(@path, 'showtopic', topic)
-    self
-  end
-
-  def follow_link(href)
-    tk_call(@path, 'followlink', href)
-    self
-  end
-
-  def forward
-    tk_call(@path, 'forward')
-    self
-  end
-
-  def back
-    tk_call(@path, 'back')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledframe.rb
deleted file mode 100644
index e77e850..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledframe.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#  tkextlib/iwidgets/labeledframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Labeledframe < Tk::Itk::Archetype
-    end
-  end
-end
-
-class Tk::Iwidgets::Labeledframe
-  TkCommandNames = ['::iwidgets::labeledframe'.freeze].freeze
-  WidgetClassName = 'Labeledframe'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'labeltext'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'labelvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def __font_optkeys
-    super() << 'labelfont'
-  end
-  private :__font_optkeys
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledwidget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledwidget.rb
deleted file mode 100644
index 9938771..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/labeledwidget.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-#  tkextlib/iwidgets/labeledwidget.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Labeledwidget < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Labeledwidget
-  extend TkCore
-
-  TkCommandNames = ['::iwidgets::labeledwidget'.freeze].freeze
-  WidgetClassName = 'Labeledwidget'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'labeltext'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'labelvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def __font_optkeys
-    super() << 'labelfont'
-  end
-  private :__font_optkeys
-
-  def self.alignlabels(*wins)
-    tk_call('::iwidgets::Labeledwidget::alignlabels', *wins)
-  end
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/mainwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/mainwindow.rb
deleted file mode 100644
index 4b2541b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/mainwindow.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-#  tkextlib/iwidgets/mainwindow.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Mainwindow < Tk::Iwidgets::Shell
-    end
-  end
-end
-
-class Tk::Iwidgets::Mainwindow
-  TkCommandNames = ['::iwidgets::mainwindow'.freeze].freeze
-  WidgetClassName = 'Mainwindow'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'helpline' << 'statusline'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'menubarbackground' << 'menubarforeground' << 'toolbarforeground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'menubarfont' << 'toolbarfont'
-  end
-  private :__font_optkeys
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def menubar(*args)
-    unless args.empty?
-      tk_call(@path, 'menubar', *args)
-    end
-    window(tk_call(@path, 'menubar'))
-  end
-
-  def mousebar(*args)
-    unless args.empty?
-      tk_call(@path, 'mousebar', *args)
-    end
-    window(tk_call(@path, 'mousebar'))
-  end
-
-  def msgd(*args)
-    unless args.empty?
-      tk_call(@path, 'msgd', *args)
-    end
-    window(tk_call(@path, 'msgd'))
-  end
-
-  def toolbar(*args)
-    unless args.empty?
-      tk_call(@path, 'toolbar', *args)
-    end
-    window(tk_call(@path, 'toolbar'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/menubar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/menubar.rb
deleted file mode 100644
index dea3d34..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/menubar.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-#  tkextlib/iwidgets/menubar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Menubar < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Menubar
-  TkCommandNames = ['::iwidgets::menubar'.freeze].freeze
-  WidgetClassName = 'Menubar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'menubuttons'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvariable'
-  end
-  private :__tkvariable_optkeys
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'menucget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'menuconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_strval_optkeys(id)
-    super(id) << 'selectcolor'
-  end
-  private :__item_strval_optkeys
-
-  def __item_tkvariable_optkeys(id)
-    super(id) << 'helpstr'
-  end
-  private :__item_tkvariable_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias menucget itemcget
-  alias menuconfigure itemconfigure
-  alias menuconfiginfo itemconfiginfo
-  alias current_menuconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __methodcall_optkeys
-    {'menubuttons'=>'menubuttons'}
-  end
-
-  def menubuttons(val = nil)
-    unless val
-      return tk_call(@path, 'cget', '-menubuttons')
-    end
-
-    tk_call(@path, 'configure', '-menubuttons', _parse_menu_spec(val))
-    self
-  end
-
-  def _parse_menu_spec(menu_spec)
-    ret = ''
-    menu_spec.each{|spec|
-      next unless spec
-
-      if spec.kind_of?(Hash)
-        args = [spec]
-        type = 'options'
-      else
-        type, *args = spec
-      end
-
-      type = type.to_s
-      case type
-      when 'options'
-        keys = args[0]
-        ary = [type]
-        ary.concat(hash_kv(keys))
-        ret << array2tk_list(ary) << "\n"
-
-      when 'menubutton', 'cascade'
-        name, keys = args
-        if keys
-          ary = [type, name]
-          keys = _symbolkey2str(keys)
-          keys['menu'] = _parse_menu_spec(keys['menu']) if keys.key?('menu')
-          ary.concat(hash_kv(keys))
-          ret << array2tk_list(ary) << "\n"
-        else
-          ret << array2tk_list([type, name]) << "\n"
-        end
-
-      else
-        name, keys = args
-        if keys
-          ary = [type, name]
-          ary.concat(hash_kv(keys))
-          ret << array2tk_list(ary) << "\n"
-        else
-          ret << array2tk_list([type, name]) << "\n"
-        end
-      end
-    }
-    ret
-  end
-
-  ####################################
-
-  def add(type, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    keys = _symbolkey2str(keys)
-    keys['menu'] = _parse_menu_spec(keys['menu']) if keys.key?('menu')
-    tk_call(@path, 'add', type, tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def delete(path1, path2=nil)
-    if path2
-    else
-      tk_call(@path, 'delete', index(idx))
-    end
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, type, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    keys = _symbolkey2str(keys)
-    keys['menu'] = _parse_menu_spec(keys['menu']) if keys.key?('menu')
-    tk_call(@path, 'insert', index(idx), type, tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def invoke(idx)
-    tk_call(@path, 'invoke', index(idx))
-    self
-  end
-
-  def menupath(pat)
-    if (win = tk_call(@path, 'path', pat)) == '-1'
-      return nil
-    end
-    window(win)
-  end
-  def menupath_glob(pat)
-    if (win = tk_call(@path, 'path', '-glob', pat)) == '-1'
-      return nil
-    end
-    window(win)
-  end
-  def menupath_tclregexp(pat)
-    if (win = tk_call(@path, 'path', '-regexp', pat)) == '-1'
-      return nil
-    end
-    window(win)
-  end
-
-  def type(path)
-    tk_call(@path, 'type', path)
-  end
-
-  def yposition(path)
-    number(tk_call(@path, 'yposition', path))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagebox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagebox.rb
deleted file mode 100644
index 2bbbec7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagebox.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-#  tkextlib/iwidgets/messagebox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Messagebox < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Messagebox
-  TkCommandNames = ['::iwidgets::messagebox'.freeze].freeze
-  WidgetClassName = 'Messagebox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'type', 'cget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'type', 'configure', id]
-  end
-  private :__item_config_cmd
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'bell' << 'show'
-  end
-  private :__item_boolval_optkeys
-
-  alias typecget itemcget
-  alias typeconfigure itemconfigure
-  alias typeconfiginfo itemconfiginfo
-  alias current_typeconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __strval_optkeys
-    super() << 'filename' << 'savedir'
-  end
-  private :__strval_optkeys
-
-  def type_add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    unless tag
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'type', 'add', tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def export(file)
-    tk_call(@path, 'export', file)
-    self
-  end
-
-  def issue(string, type=None, *args)
-    tk_call(@path, 'issue', string, tagid(type), *args)
-    self
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagedialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagedialog.rb
deleted file mode 100644
index c19b83e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/messagedialog.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/iwidgets/messagedialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Messagedialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Messagedialog
-  TkCommandNames = ['::iwidgets::messagedialog'.freeze].freeze
-  WidgetClassName = 'Messagedialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/notebook.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/notebook.rb
deleted file mode 100644
index 0f9d713..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/notebook.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-#
-#  tkextlib/iwidgets/notebook.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Notebook < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Notebook
-  TkCommandNames = ['::iwidgets::notebook'.freeze].freeze
-  WidgetClassName = 'Notebook'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'pagecget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'pageconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias pagecget itemcget
-  alias pageconfigure itemconfigure
-  alias pageconfiginfo itemconfiginfo
-  alias current_pageconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __boolval_optkeys
-    super() << 'auto'
-  end
-  private :__boolval_optkeys
-
-  def add(keys={})
-    window(tk_call(@path, 'add', *hash_kv(keys)))
-  end
-
-  def child_site_list
-    list(tk_call(@path, 'childsite'))
-  end
-
-  def child_site(idx)
-    if (new_idx = self.index(idx)) < 0
-      new_idx = tagid(idx)
-    end
-    window(tk_call(@path, 'childsite', new_idx))
-  end
-
-  def delete(idx1, idx2=nil)
-    if (new_idx1 = self.index(idx1)) < 0
-      new_idx1 = tagid(idx1)
-    end
-    if idx2
-      if (new_idx2 = self.index(idx2)) < 0
-        new_idx2 = tagid(idx2)
-      end
-      tk_call(@path, 'delete', new_idx1, new_idx2)
-    else
-      tk_call(@path, 'delete', new_idx1)
-    end
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, keys={})
-    if (new_idx = self.index(idx)) < 0
-      new_idx = tagid(idx)
-    end
-    window(tk_call(@path, 'insert', new_idx, *hash_kv(keys)))
-  end
-
-  def next
-    tk_call(@path, 'next')
-    self
-  end
-
-  def prev
-    tk_call(@path, 'prev')
-    self
-  end
-
-  def select(idx)
-    if (new_idx = self.index(idx)) < 0
-      new_idx = tagid(idx)
-    end
-    tk_call(@path, 'select', new_idx)
-    self
-  end
-
-  def scrollcommand(cmd=Proc.new)
-    configure_cmd 'scrollcommand', cmd
-    self
-  end
-  alias xscrollcommand scrollcommand
-  alias yscrollcommand scrollcommand
-
-  def xscrollbar(bar=nil)
-    if bar
-      @scrollbar = bar
-      @scrollbar.orient 'horizontal'
-      self.scrollcommand {|*arg| @scrollbar.set(*arg)}
-      @scrollbar.command {|*arg| self.xview(*arg)}
-      Tk.update  # avoid scrollbar trouble
-    end
-    @scrollbar
-  end
-  def yscrollbar(bar=nil)
-    if bar
-      @scrollbar = bar
-      @scrollbar.orient 'vertical'
-      self.scrollcommand {|*arg| @scrollbar.set(*arg)}
-      @scrollbar.command {|*arg| self.yview(*arg)}
-      Tk.update  # avoid scrollbar trouble
-    end
-    @scrollbar
-  end
-  alias scrollbar yscrollbar
-
-  def view(*idxs)
-    if idxs.size == 0
-      window(tk_send_without_enc('view'))
-    else
-      tk_send_without_enc('view', *idxs)
-      self
-    end
-  end
-  alias xview view
-  alias yview view
-
-  def view_moveto(*idxs)
-    view('moveto', *idxs)
-  end
-  alias xview_moveto view_moveto
-  alias yview_moveto view_moveto
-  def view_scroll(*idxs)
-    view('scroll', *idxs)
-  end
-  alias xview_scroll view_scroll
-  alias yview_scroll view_scroll
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/optionmenu.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/optionmenu.rb
deleted file mode 100644
index 0c74440..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/optionmenu.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-#  tkextlib/iwidgets/optionmenu.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Optionmenu < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Optionmenu
-  TkCommandNames = ['::iwidgets::optionmenu'.freeze].freeze
-  WidgetClassName = 'Optionmenu'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'cyclicon'
-  end
-  private :__boolval_optkeys
-
-  def delete(first, last=nil)
-    if last
-      tk_call(@path, 'delete', first, last)
-    else
-      tk_call(@path, 'delete', first)
-    end
-    self
-  end
-
-  def disable(idx)
-    tk_call(@path, 'disable', idx)
-    self
-  end
-
-  def enable(idx)
-    tk_call(@path, 'enable', idx)
-    self
-  end
-
-  def get(first=nil, last=nil)
-    if last
-      simplelist(tk_call(@path, 'get', first, last))
-    elsif first
-      tk_call(@path, 'get', first)
-    else
-      tk_call(@path, 'get')
-    end
-  end
-  def get_range(first, last)
-    get(first, last)
-  end
-  def get_selected
-    get()
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', idx))
-  end
-
-  def insert(idx, *args)
-    tk_call(@path, 'insert', idx, *args)
-    self
-  end
-
-  def select(idx)
-    tk_call(@path, 'select', idx)
-    self
-  end
-
-  def sort(*params, &b)
-    # see 'lsort' man page about params
-    if b
-      tk_call(@path, 'sort', '-command', proc(&b), *params)
-    else
-      tk_call(@path, 'sort', *params)
-    end
-    self
-  end
-  def sort_ascending
-    tk_call(@path, 'sort', 'ascending')
-    self
-  end
-  def sort_descending
-    tk_call(@path, 'sort', 'descending')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/panedwindow.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/panedwindow.rb
deleted file mode 100644
index 035df0a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/panedwindow.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-#  tkextlib/iwidgets/panedwindow.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Panedwindow < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Panedwindow
-  TkCommandNames = ['::iwidgets::panedwindow'.freeze].freeze
-  WidgetClassName = 'Panedwindow'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'panecget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'paneconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias panecget itemcget
-  alias paneconfigure itemconfigure
-  alias paneconfiginfo itemconfiginfo
-  alias current_paneconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __boolval_optkeys
-    super() << 'showhandle'
-  end
-  private :__boolval_optkeys
-
-  def add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    window(tk_call(@path, 'add', tagid(tag), *hash_kv(keys)))
-    tag
-  end
-
-  def child_site_list
-    list(tk_call(@path, 'childsite'))
-  end
-
-  def child_site(idx)
-    window(tk_call(@path, 'childsite', index(idx)))
-  end
-
-  def delete(idx)
-    tk_call(@path, 'delete', index(idx))
-    self
-  end
-
-  def fraction(*percentages)
-    tk_call(@path, 'fraction', *percentages)
-    self
-  end
-
-  def hide(idx)
-    tk_call(@path, 'hide', index(idx))
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    window(tk_call(@path, 'insert', index(idx), tagid(tag), *hash_kv(keys)))
-    tag
-  end
-
-  def invoke(idx=nil)
-    if idx
-      tk_call(@path, 'invoke', index(idx))
-    else
-      tk_call(@path, 'invoke')
-    end
-    self
-  end
-
-  def reset
-    tk_call(@path, 'reset')
-    self
-  end
-
-  def show(idx)
-    tk_call(@path, 'show', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/promptdialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/promptdialog.rb
deleted file mode 100644
index 620b14b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/promptdialog.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-#  tkextlib/iwidgets/promptdialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Promptdialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Promptdialog
-  TkCommandNames = ['::iwidgets::promptdialog'.freeze].freeze
-  WidgetClassName = 'Promptdialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  # index method is not available, because it shows index of the entry field
-  def default(name)
-    tk_call(@path, 'default', tagid(name))
-    self
-  end
-
-  def hide(name)
-    tk_call(@path, 'hide', tagid(name))
-    self
-  end
-
-  def invoke(name=nil)
-    if name
-      tk_call(@path, 'invoke', tagid(name))
-    else
-      tk_call(@path, 'invoke')
-    end
-    self
-  end
-
-  def show(name)
-    tk_call(@path, 'show', tagid(name))
-    self
-  end
-
-
-  # based on Tk::Iwidgets::Entryfield
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-
-  def value
-    _fromUTF8(tk_send_without_enc('get'))
-  end
-  def value= (val)
-    tk_send_without_enc('delete', 0, 'end')
-    tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
-    val
-  end
-  alias get value
-  alias set value=
-
-  def cursor=(index)
-    tk_send_without_enc('icursor', index)
-    #self
-    index
-  end
-  alias icursor cursor=
-
-  def index(idx)
-    number(tk_send_without_enc('index', idx))
-  end
-
-  def insert(pos,text)
-    tk_send_without_enc('insert', pos, _get_eval_enc_str(text))
-    self
-  end
-
-  def mark(pos)
-    tk_send_without_enc('scan', 'mark', pos)
-    self
-  end
-  def dragto(pos)
-    tk_send_without_enc('scan', 'dragto', pos)
-    self
-  end
-  def selection_adjust(index)
-    tk_send_without_enc('selection', 'adjust', index)
-    self
-  end
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-  def selection_from(index)
-    tk_send_without_enc('selection', 'from', index)
-    self
-  end
-  def selection_present()
-    bool(tk_send_without_enc('selection', 'present'))
-  end
-  def selection_range(s, e)
-    tk_send_without_enc('selection', 'range', s, e)
-    self
-  end
-  def selection_to(index)
-    tk_send_without_enc('selection', 'to', index)
-    self
-  end
-
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/pushbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/pushbutton.rb
deleted file mode 100644
index c21007c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/pushbutton.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-#  tkextlib/iwidgets/pushbutton.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Pushbutton < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Pushbutton
-  TkCommandNames = ['::iwidgets::pushbutton'.freeze].freeze
-  WidgetClassName = 'Pushbutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'defaultring'
-  end
-  private :__boolval_optkeys
-
-  def invoke
-    tk_call_without_enc(@path, 'invoke')
-    self
-  end
-
-  def flash
-    tk_call_without_enc(@path, 'flash')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/radiobox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/radiobox.rb
deleted file mode 100644
index 1a2821b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/radiobox.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-#  tkextlib/iwidgets/radiobox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Radiobox < Tk::Iwidgets::Labeledframe
-    end
-  end
-end
-
-class Tk::Iwidgets::Radiobox
-  TkCommandNames = ['::iwidgets::radiobox'.freeze].freeze
-  WidgetClassName = 'Radiobox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'buttoncget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'buttonconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'defaultring'
-  end
-  private :__item_boolval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias buttoncget itemcget
-  alias buttonconfigure itemconfigure
-  alias buttonconfiginfo itemconfiginfo
-  alias current_buttonconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def add(tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'add', tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def delete(idx)
-    tk_call(@path, 'delete', index(idx))
-    self
-  end
-
-  def deselect(idx)
-    tk_call(@path, 'deselect', index(idx))
-    self
-  end
-
-  def flash(idx)
-    tk_call(@path, 'flash', index(idx))
-    self
-  end
-
-  def get(idx)
-    simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
-      Tk::Itk::Component.id2obj(self, id)
-    }
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    tk_call(@path, 'insert', index(idx), tagid(tag), *hash_kv(keys))
-    tag
-  end
-
-  def select(idx)
-    tk_call(@path, 'select', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scopedobject.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scopedobject.rb
deleted file mode 100644
index bddef50..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scopedobject.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-#  tkextlib/iwidgets/buttonbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scopedobject < TkObject
-    end
-  end
-end
-
-class Tk::Iwidgets::Scopedobject
-  TkCommandNames = ['::iwidgets::scopedobject'.freeze].freeze
-  WidgetClassName = 'Scopedobject'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def initialize(obj_name, keys={})
-    @path = tk_call(self.class::TkCommandNames[0], obj_name, *hash_kv(keys))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledcanvas.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledcanvas.rb
deleted file mode 100644
index 407c8f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledcanvas.rb
+++ /dev/null
@@ -1,347 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledcanvas.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/canvas'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledcanvas < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledcanvas
-  TkCommandNames = ['::iwidgets::scrolledcanvas'.freeze].freeze
-  WidgetClassName = 'Scrolledcanvas'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ################################
-
-  def __boolval_optkeys
-    super() << 'autoresize'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def initialize(*args)
-    super(*args)
-    @canvas = component_widget('canvas')
-  end
-
-  def method_missing(id, *args)
-    if @canvas.methods.include?(id.id2name)
-      @canvas.__send__(id, *args)
-    else
-      super(id, *args)
-    end
-  end
-
-  ################################
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def justify(dir)
-    tk_call(@path, 'justify', dir)
-    self
-  end
-
-  ##########################
-  include TkCanvasItemConfig
-
-  def tagid(tag)
-    if tag.kind_of?(TkcItem) || tag.kind_of?(TkcTag)
-      tag.id
-    elsif tag.kind_of?(Tk::Itk::Component)
-      tag.name
-    else
-      tag  # maybe an Array of configure paramters
-    end
-  end
-  private :tagid
-
-  # create a canvas item without creating a TkcItem object
-  def create(type, *args)
-    type.create(self, *args)
-  end
-
-  #######################
-
-  def addtag(tag, mode, *args)
-    tk_send_without_enc('addtag', tagid(tag), mode, *args)
-    self
-  end
-  def addtag_above(tagOrId, target)
-    addtag(tagOrId, 'above', tagid(target))
-  end
-  def addtag_all(tagOrId)
-    addtag(tagOrId, 'all')
-  end
-  def addtag_below(tagOrId, target)
-    addtag(tagOrId, 'below', tagid(target))
-  end
-  def addtag_closest(tagOrId, x, y, halo=None, start=None)
-    addtag(tagOrId, 'closest', x, y, halo, start)
-  end
-  def addtag_enclosed(tagOrId, x1, y1, x2, y2)
-    addtag(tagOrId, 'enclosed', x1, y1, x2, y2)
-  end
-  def addtag_overlapping(tagOrId, x1, y1, x2, y2)
-    addtag(tagOrId, 'overlapping', x1, y1, x2, y2)
-  end
-  def addtag_withtag(tagOrId, tag)
-    addtag(tagOrId, 'withtag', tagid(tag))
-  end
-
-  def bbox(tagOrId, *tags)
-    list(tk_send_without_enc('bbox', tagid(tagOrId), 
-                             *tags.collect{|t| tagid(t)}))
-  end
-
-  #def itembind(tag, context, cmd=Proc.new, *args)
-  #  _bind([path, "bind", tagid(tag)], context, cmd, *args)
-  #  self
-  #end
-  def itembind(tag, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([path, "bind", tagid(tag)], context, cmd, *args)
-    self
-  end
-
-  #def itembind_append(tag, context, cmd=Proc.new, *args)
-  #  _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-  #  self
-  #end
-  def itembind_append(tag, context, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
-    self
-  end
-
-  def itembind_remove(tag, context)
-    _bind_remove([path, "bind", tagid(tag)], context)
-    self
-  end
-
-  def itembindinfo(tag, context=nil)
-    _bindinfo([path, "bind", tagid(tag)], context)
-  end
-
-  def canvasx(screen_x, *args)
-    #tk_tcl2ruby(tk_send_without_enc('canvasx', screen_x, *args))
-    number(tk_send_without_enc('canvasx', screen_x, *args))
-  end
-  def canvasy(screen_y, *args)
-    #tk_tcl2ruby(tk_send_without_enc('canvasy', screen_y, *args))
-    number(tk_send_without_enc('canvasy', screen_y, *args))
-  end
-
-  def coords(tag, *args)
-    if args == []
-      tk_split_list(tk_send_without_enc('coords', tagid(tag)))
-    else
-      tk_send_without_enc('coords', tagid(tag), *(args.flatten))
-      self
-    end
-  end
-
-  def dchars(tag, first, last=None)
-    tk_send_without_enc('dchars', tagid(tag), 
-                        _get_eval_enc_str(first), _get_eval_enc_str(last))
-    self
-  end
-
-  def delete(*args)
-    if TkcItem::CItemID_TBL[self.path]
-      find('withtag', *args).each{|item| 
-        if item.kind_of?(TkcItem)
-          TkcItem::CItemID_TBL[self.path].delete(item.id)
-        end
-      }
-    end
-    tk_send_without_enc('delete', *args.collect{|t| tagid(t)})
-    self
-  end
-  alias remove delete
-
-  def dtag(tag, tag_to_del=None)
-    tk_send_without_enc('dtag', tagid(tag), tag_to_del)
-    self
-  end
-
-  def find(mode, *args)
-    list(tk_send_without_enc('find', mode, *args)).collect!{|id| 
-      TkcItem.id2obj(self, id)
-    }
-  end
-  def find_above(target)
-    find('above', tagid(target))
-  end
-  def find_all
-    find('all')
-  end
-  def find_below(target)
-    find('below', tagid(target))
-  end
-  def find_closest(x, y, halo=None, start=None)
-    find('closest', x, y, halo, start)
-  end
-  def find_enclosed(x1, y1, x2, y2)
-    find('enclosed', x1, y1, x2, y2)
-  end
-  def find_overlapping(x1, y1, x2, y2)
-    find('overlapping', x1, y1, x2, y2)
-  end
-  def find_withtag(tag)
-    find('withtag', tag)
-  end
-
-  def itemfocus(tagOrId=nil)
-    if tagOrId
-      tk_send_without_enc('focus', tagid(tagOrId))
-      self
-    else
-      ret = tk_send_without_enc('focus')
-      if ret == ""
-        nil
-      else
-        TkcItem.id2obj(self, ret)
-      end
-    end
-  end
-
-  def gettags(tagOrId)
-    list(tk_send_without_enc('gettags', tagid(tagOrId))).collect{|tag|
-      TkcTag.id2obj(self, tag)
-    }
-  end
-
-  def icursor(tagOrId, index)
-    tk_send_without_enc('icursor', tagid(tagOrId), index)
-    self
-  end
-
-  def index(tagOrId, idx)
-    number(tk_send_without_enc('index', tagid(tagOrId), idx))
-  end
-
-  def insert(tagOrId, index, string)
-    tk_send_without_enc('insert', tagid(tagOrId), index, 
-                        _get_eval_enc_str(string))
-    self
-  end
-
-  def lower(tag, below=nil)
-    if below
-      tk_send_without_enc('lower', tagid(tag), tagid(below))
-    else
-      tk_send_without_enc('lower', tagid(tag))
-    end
-    self
-  end
-
-  def move(tag, x, y)
-    tk_send_without_enc('move', tagid(tag), x, y)
-    self
-  end
-
-  def postscript(keys)
-    tk_send("postscript", *hash_kv(keys))
-  end
-
-  def raise(tag, above=nil)
-    if above
-      tk_send_without_enc('raise', tagid(tag), tagid(above))
-    else
-      tk_send_without_enc('raise', tagid(tag))
-    end
-    self
-  end
-
-  def scale(tag, x, y, xs, ys)
-    tk_send_without_enc('scale', tagid(tag), x, y, xs, ys)
-    self
-  end
-
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-
-  def select(mode, *args)
-    r = tk_send_without_enc('select', mode, *args)
-    (mode == 'item')? TkcItem.id2obj(self, r): self
-  end
-  def select_adjust(tagOrId, index)
-    select('adjust', tagid(tagOrId), index)
-  end
-  def select_clear
-    select('clear')
-  end
-  def select_from(tagOrId, index)
-    select('from', tagid(tagOrId), index)
-  end
-  def select_item
-    select('item')
-  end
-  def select_to(tagOrId, index)
-    select('to', tagid(tagOrId), index)
-  end
-
-  def itemtype(tag)
-    TkcItem.type2class(tk_send('type', tagid(tag)))
-  end
-
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-
-  def yview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('yview'))
-    else
-      tk_send_without_enc('yview', *index)
-      self
-    end
-  end
-  def yview_moveto(*index)
-    yview('moveto', *index)
-  end
-  def yview_scroll(*index)
-    yview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledframe.rb
deleted file mode 100644
index 8b47460..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledframe.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledframe < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledframe
-  TkCommandNames = ['::iwidgets::scrolledframe'.freeze].freeze
-  WidgetClassName = 'Scrolledframe'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def justify(dir)
-    tk_call(@path, 'justify', dir)
-    self
-  end
-
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-
-  def yview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('yview'))
-    else
-      tk_send_without_enc('yview', *index)
-      self
-    end
-  end
-  def yview_moveto(*index)
-    yview('moveto', *index)
-  end
-  def yview_scroll(*index)
-    yview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledhtml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledhtml.rb
deleted file mode 100644
index 9b69ef0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledhtml.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledhtml.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledhtml < Tk::Iwidgets::Scrolledtext
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledhtml
-  TkCommandNames = ['::iwidgets::scrolledhtml'.freeze].freeze
-  WidgetClassName = 'Scrolledhtml'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'update'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'fontname' << 'link' << 'alink' << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'fixedfont'
-  end
-  private :__font_optkeys
-
-  def import(href)
-    tk_call(@path, 'import', href)
-    self
-  end
-
-  def import_link(href)
-    tk_call(@path, 'import', '-link', href)
-    self
-  end
-
-  def pwd
-    tk_call(@path, 'pwd')
-  end
-
-  def render(htmltext, workdir=None)
-    tk_call(@path, 'render', htmltext, workdir)
-    self
-  end
-
-  def title
-    tk_call(@path, 'title')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledlistbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledlistbox.rb
deleted file mode 100644
index cd1f6f0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledlistbox.rb
+++ /dev/null
@@ -1,207 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledlistbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/listbox'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledlistbox < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledlistbox
-  TkCommandNames = ['::iwidgets::scrolledlistbox'.freeze].freeze
-  WidgetClassName = 'Scrolledlistbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'listvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  ################################
-
-  def initialize(*args)
-    super(*args)
-    @listbox = component_widget('listbox')
-  end
-
-  def method_missing(id, *args)
-    if @listbox.methods.include?(id.id2name)
-      @listbox.__send__(id, *args)
-    else
-      super(id, *args)
-    end
-  end
-
-  ################################
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def get_curselection
-    tk_call(@path, 'getcurselection')
-  end
-
-  def justify(dir)
-    tk_call(@path, 'justify', dir)
-    self
-  end
-
-  def selected_item_count
-    number(tk_call(@path, 'selecteditemcount'))
-  end
-
-  def sort(*params, &b)
-    # see 'lsort' man page about params
-    if b
-      tk_call(@path, 'sort', '-command', proc(&b), *params)
-    else
-      tk_call(@path, 'sort', *params)
-    end
-    self
-  end
-  def sort_ascending
-    tk_call(@path, 'sort', 'ascending')
-    self
-  end
-  def sort_descending
-    tk_call(@path, 'sort', 'descending')
-    self
-  end
-
-  #####################################
-
-  def bbox(index)
-    list(tk_send_without_enc('bbox', index))
-  end
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-  def get(*index)
-    _fromUTF8(tk_send_without_enc('get', *index))
-  end
-  def insert(index, *args)
-    tk_send('insert', index, *args)
-    self
-  end
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-  def see(index)
-    tk_send_without_enc('see', index)
-    self
-  end
-
-  #####################################
-
-  include TkListItemConfig
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::Itk::Component)
-      tag.name
-    else
-      super(tag)
-    end
-  end
-  private :tagid
-
-  #####################################
-
-  def activate(y)
-    tk_send_without_enc('activate', y)
-    self
-  end
-  def curselection
-    list(tk_send_without_enc('curselection'))
-  end
-  def get(first, last=nil)
-    if last
-      # tk_split_simplelist(_fromUTF8(tk_send_without_enc('get', first, last)))
-      tk_split_simplelist(tk_send_without_enc('get', first, last), 
-                          false, true)
-    else
-      _fromUTF8(tk_send_without_enc('get', first))
-    end
-  end
-  def nearest(y)
-    tk_send_without_enc('nearest', y).to_i
-  end
-  def size
-    tk_send_without_enc('size').to_i
-  end
-  def selection_anchor(index)
-    tk_send_without_enc('selection', 'anchor', index)
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', first, last)
-    self
-  end
-  def selection_includes(index)
-    bool(tk_send_without_enc('selection', 'includes', index))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', first, last)
-    self
-  end
-
-  def index(idx)
-    tk_send_without_enc('index', idx).to_i
-  end
-
-  #####################################
-
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-
-  def yview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('yview'))
-    else
-      tk_send_without_enc('yview', *index)
-      self
-    end
-  end
-  def yview_moveto(*index)
-    yview('moveto', *index)
-  end
-  def yview_scroll(*index)
-    yview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledtext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledtext.rb
deleted file mode 100644
index fdafc8d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledtext.rb
+++ /dev/null
@@ -1,538 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledtext.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/text'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledtext < Tk::Iwidgets::Scrolledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledtext
-  TkCommandNames = ['::iwidgets::scrolledtext'.freeze].freeze
-  WidgetClassName = 'Scrolledtext'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  ################################
-
-  def initialize(*args)
-    super(*args)
-    @text = component_widget('text')
-  end
-
-  def method_missing(id, *args)
-    if @text.methods.include?(id.id2name)
-      @text.__send__(id, *args)
-    else
-      super(id, *args)
-    end
-  end
-
-  ################################
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def clear
-    tk_call(@path, 'clear')
-    self
-  end
-
-  def import(file, idx=nil)
-    if idx
-      tk_call(@path, 'import', file, index(idx))
-    else
-      tk_call(@path, 'import', file)
-    end
-    self
-  end
-
-  def export(file)
-    tk_call(@path, 'export', file)
-    self
-  end
-
-  #####################################
-
-  include TkTextTagConfig
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::Itk::Component)
-      tag.name
-    else
-      super(tag)
-    end
-  end
-  private :tagid
-
-  def bbox(index)
-    list(tk_send('bbox', index))
-  end
-  def compare(idx1, op, idx2)
-    bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1), 
-                             op, _get_eval_enc_str(idx2)))
-  end
-
-  def debug
-    bool(tk_send_without_enc('debug'))
-  end
-  def debug=(boolean)
-    tk_send_without_enc('debug', boolean)
-    #self
-    boolean
-  end
-
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-
-  def dlineinfo(index)
-    list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
-  end
-
-  def get(*index)
-    _fromUTF8(tk_send_without_enc('get', *index))
-  end
-  def get_displaychars(*index)
-    # Tk8.5 feature
-    get('-displaychars', *index)
-  end
-
-  def image_cget(index, slot)
-    case slot.to_s
-    when 'text', 'label', 'show', 'data', 'file'
-      _fromUTF8(tk_send_without_enc('image', 'cget', 
-                                    _get_eval_enc_str(index), "-#{slot}"))
-    else
-      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget', 
-                                                _get_eval_enc_str(index), 
-                                                "-#{slot}")))
-    end
-  end
-
-  def image_configure(index, slot, value=None)
-    if slot.kind_of? Hash
-      _fromUTF8(tk_send_without_enc('image', 'configure', 
-                                    _get_eval_enc_str(index), 
-                                    *hash_kv(slot, true)))
-    else
-      _fromUTF8(tk_send_without_enc('image', 'configure', 
-                                    _get_eval_enc_str(index), 
-                                    "-#{slot}", 
-                                    _get_eval_enc_str(value)))
-    end
-    self
-  end
-
-  def image_configinfo(index, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
-        else
-          #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
-        end
-        conf[0] = conf[0][1..-1]
-        conf
-      else
-        #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          conf[0] = conf[0][1..-1]
-          case conf[0]
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-            if conf[4]
-              if conf[4].index('{')
-                conf[4] = tk_split_list(conf[4]) 
-              else
-                conf[4] = tk_tcl2ruby(conf[4]) 
-              end
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        case slot.to_s
-        when 'text', 'label', 'show', 'data', 'file'
-          #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
-        else
-          #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
-          conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
-        end
-        key = conf.shift[1..-1]
-        { key => conf }
-      else
-        ret = {}
-        #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
-        #  conf = tk_split_simplelist(conflist)
-        tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
-          conf = tk_split_simplelist(conflist, false, true)
-          key = conf.shift[1..-1]
-          case key
-          when 'text', 'label', 'show', 'data', 'file'
-          else
-            if conf[2]
-              if conf[2].index('{')
-                conf[2] = tk_split_list(conf[2]) 
-              else
-                conf[2] = tk_tcl2ruby(conf[2]) 
-              end
-            end
-            if conf[3]
-              if conf[3].index('{')
-                conf[3] = tk_split_list(conf[3]) 
-              else
-                conf[3] = tk_tcl2ruby(conf[3]) 
-              end
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        ret
-      end
-    end
-  end
-
-  def current_image_configinfo(index, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        conf = image_configinfo(index, slot)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        image_configinfo(index).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      image_configinfo(index, slot).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-
-  def image_names
-    #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def index(idx)
-    tk_send_without_enc('index', _get_eval_enc_str(idx))
-  end
-
-  def insert(index, *args)
-    tk_send('insert', index, *args)
-    self
-  end
-
-  def mark_names
-    #tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
-    tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
-      tagid2obj(elt)
-    }
-  end
-
-  def mark_gravity(mark, direction=nil)
-    if direction
-      tk_send_without_enc('mark', 'gravity', 
-                          _get_eval_enc_str(mark), direction)
-      self
-    else
-      tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
-    end
-  end
-
-  def mark_set(mark, index)
-    tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark), 
-                        _get_eval_enc_str(index))
-    self
-  end
-  alias set_mark mark_set
-
-  def mark_unset(*marks)
-    tk_send_without_enc('mark', 'unset', 
-                        *(marks.collect{|mark| _get_eval_enc_str(mark)}))
-    self
-  end
-  alias unset_mark mark_unset
-
-  def mark_next(index)
-    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next', 
-                                            _get_eval_enc_str(index))))
-  end
-  alias next_mark mark_next
-
-  def mark_previous(index)
-    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous', 
-                                            _get_eval_enc_str(index))))
-  end
-  alias previous_mark mark_previous
-
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-
-
-  def _ktext_length(txt)
-    if $KCODE !~ /n/i
-      return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
-    end
-
-    # $KCODE == 'NONE'
-    if JAPANIZED_TK
-      tk_call_without_enc('kstring', 'length', 
-                          _get_eval_enc_str(txt)).to_i
-    else
-      begin
-        tk_call_without_enc('encoding', 'convertto', 'ascii', 
-                            _get_eval_enc_str(txt)).length
-      rescue StandardError, NameError
-        # sorry, I have no plan
-        txt.length
-      end
-    end
-  end
-  private :_ktext_length
-
-  def tksearch(*args)
-    # call 'search' subcommand of text widget
-    #   args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]
-    # If <pattern> is regexp, then it must be a regular expression of Tcl
-    if args[0].kind_of?(Array)
-      opts = args.shift.collect{|opt| '-' + opt.to_s }
-    else
-      opts = []
-    end
-
-    opts << '--'
-
-    ret = tk_send('search', *(opts + args))
-    if ret == ""
-      nil
-    else
-      ret
-    end
-  end
-
-  def tksearch_with_count(*args)
-    # call 'search' subcommand of text widget
-    #   args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]
-    # If <pattern> is regexp, then it must be a regular expression of Tcl
-    if args[0].kind_of?(Array)
-      opts = args.shift.collect{|opt| '-' + opt.to_s }
-    else
-      opts = []
-    end
-
-    opts << '-count' << args.shift << '--'
-
-    ret = tk_send('search', *(opts + args))
-    if ret == ""
-      nil
-    else
-      ret
-    end
-  end
-
-  def search_with_length(pat,start,stop=None)
-    pat = pat.chr if pat.kind_of? Integer
-    if stop != None
-      return ["", 0] if compare(start,'>=',stop)
-      txt = get(start,stop)
-      if (pos = txt.index(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of? String
-          #return [index(start + " + #{pos} chars"), pat.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(pat), pat.dup]
-        else
-          #return [index(start + " + #{pos} chars"), $&.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(match), match]
-        end
-      else
-        return ["", 0]
-      end
-    else
-      txt = get(start,'end - 1 char')
-      if (pos = txt.index(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of? String
-          #return [index(start + " + #{pos} chars"), pat.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(pat), pat.dup]
-        else
-          #return [index(start + " + #{pos} chars"), $&.split('').length]
-          return [index(start + " + #{pos} chars"), 
-                  _ktext_length(match), match]
-        end
-      else
-        txt = get('1.0','end - 1 char')
-        if (pos = txt.index(pat))
-          match = $&
-          #pos = txt[0..(pos-1)].split('').length if pos > 0
-          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-          if pat.kind_of? String
-            #return [index("1.0 + #{pos} chars"), pat.split('').length]
-            return [index("1.0 + #{pos} chars"), 
-                    _ktext_length(pat), pat.dup]
-          else
-            #return [index("1.0 + #{pos} chars"), $&.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-          end
-        else
-          return ["", 0]
-        end
-      end
-    end
-  end
-
-  def search(pat,start,stop=None)
-    search_with_length(pat,start,stop)[0]
-  end
-
-  def rsearch_with_length(pat,start,stop=None)
-    pat = pat.chr if pat.kind_of? Integer
-    if stop != None
-      return ["", 0] if compare(start,'<=',stop)
-      txt = get(stop,start)
-      if (pos = txt.rindex(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of? String
-          #return [index(stop + " + #{pos} chars"), pat.split('').length]
-          return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup]
-        else
-          #return [index(stop + " + #{pos} chars"), $&.split('').length]
-          return [index(stop + " + #{pos} chars"), _ktext_length(match), match]
-        end
-      else
-        return ["", 0]
-      end
-    else
-      txt = get('1.0',start)
-      if (pos = txt.rindex(pat))
-        match = $&
-        #pos = txt[0..(pos-1)].split('').length if pos > 0
-        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-        if pat.kind_of? String
-          #return [index("1.0 + #{pos} chars"), pat.split('').length]
-          return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
-        else
-          #return [index("1.0 + #{pos} chars"), $&.split('').length]
-          return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-        end
-      else
-        txt = get('1.0','end - 1 char')
-        if (pos = txt.rindex(pat))
-          match = $&
-          #pos = txt[0..(pos-1)].split('').length if pos > 0
-          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
-          if pat.kind_of? String
-            #return [index("1.0 + #{pos} chars"), pat.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
-          else
-            #return [index("1.0 + #{pos} chars"), $&.split('').length]
-            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
-          end
-        else
-          return ["", 0]
-        end
-      end
-    end
-  end
-
-  def rsearch(pat,start,stop=None)
-    rsearch_with_length(pat,start,stop)[0]
-  end
-
-  def see(index)
-    tk_send_without_enc('see', index)
-    self
-  end
-
-  ###############################
-
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-
-  def yview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('yview'))
-    else
-      tk_send_without_enc('yview', *index)
-      self
-    end
-  end
-  def yview_moveto(*index)
-    yview('moveto', *index)
-  end
-  def yview_scroll(*index)
-    yview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledwidget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledwidget.rb
deleted file mode 100644
index eef093d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/scrolledwidget.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-#  tkextlib/iwidgets/scrolledwidget.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Scrolledwidget < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Scrolledwidget
-  TkCommandNames = ['::iwidgets::scrolledwidget'.freeze].freeze
-  WidgetClassName = 'Scrolledwidget'.freeze
-  WidgetClassNames[WidgetClassName] = self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectionbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectionbox.rb
deleted file mode 100644
index bb81fcc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectionbox.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-#  tkextlib/iwidgets/selectionbox.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Selectionbox < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Selectionbox
-  TkCommandNames = ['::iwidgets::selectionbox'.freeze].freeze
-  WidgetClassName = 'Selectionbox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'itemson' << 'selectionon'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'itemslabel' << 'selectionlabel'
-  end
-  private :__strval_optkeys
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def clear_items
-    tk_call(@path, 'clear', 'items')
-    self
-  end
-
-  def clear_selection
-    tk_call(@path, 'clear', 'selection')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-
-  def insert_items(idx, *args)
-    tk_call(@path, 'insert', 'items', idx, *args)
-  end
-
-  def insert_selection(pos, text)
-    tk_call(@path, 'insert', 'selection', pos, text)
-  end
-
-  def select_item
-    tk_call(@path, 'selectitem')
-    self
-  end
-
-  # based on TkListbox ( and TkTextWin )
-  def curselection
-    list(tk_send_without_enc('curselection'))
-  end
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-  def index(idx)
-    tk_send_without_enc('index', idx).to_i
-  end
-  def nearest(y)
-    tk_send_without_enc('nearest', y).to_i
-  end
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-  def selection_anchor(index)
-    tk_send_without_enc('selection', 'anchor', index)
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', first, last)
-    self
-  end
-  def selection_includes(index)
-    bool(tk_send_without_enc('selection', 'includes', index))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', first, last)
-    self
-  end
-  def size
-    tk_send_without_enc('size').to_i
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectiondialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectiondialog.rb
deleted file mode 100644
index ab790e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/selectiondialog.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-#  tkextlib/iwidgets/selectiondialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Selectiondialog < Tk::Iwidgets::Dialog
-    end
-  end
-end
-
-class Tk::Iwidgets::Selectiondialog
-  TkCommandNames = ['::iwidgets::selectiondialog'.freeze].freeze
-  WidgetClassName = 'Selectiondialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def clear_items
-    tk_call(@path, 'clear', 'items')
-    self
-  end
-
-  def clear_selection
-    tk_call(@path, 'clear', 'selection')
-    self
-  end
-
-  def get
-    tk_call(@path, 'get')
-  end
-
-  def insert_items(idx, *args)
-    tk_call(@path, 'insert', 'items', idx, *args)
-  end
-
-  def insert_selection(pos, text)
-    tk_call(@path, 'insert', 'selection', pos, text)
-  end
-
-  def select_item
-    tk_call(@path, 'selectitem')
-    self
-  end
-
-  # based on TkListbox ( and TkTextWin )
-  def curselection
-    list(tk_send_without_enc('curselection'))
-  end
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-  def index(idx)
-    tk_send_without_enc('index', idx).to_i
-  end
-  def nearest(y)
-    tk_send_without_enc('nearest', y).to_i
-  end
-  def scan_mark(x, y)
-    tk_send_without_enc('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send_without_enc('scan', 'dragto', x, y)
-    self
-  end
-  def selection_anchor(index)
-    tk_send_without_enc('selection', 'anchor', index)
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send_without_enc('selection', 'clear', first, last)
-    self
-  end
-  def selection_includes(index)
-    bool(tk_send_without_enc('selection', 'includes', index))
-  end
-  def selection_set(first, last=None)
-    tk_send_without_enc('selection', 'set', first, last)
-    self
-  end
-  def size
-    tk_send_without_enc('size').to_i
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/shell.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/shell.rb
deleted file mode 100644
index dabf2e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/shell.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-#  tkextlib/iwidgets/shell.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Shell < Tk::Itk::Toplevel
-    end
-  end
-end
-
-class Tk::Iwidgets::Shell
-  TkCommandNames = ['::iwidgets::shell'.freeze].freeze
-  WidgetClassName = 'Shell'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def activate
-    tk_call(@path, 'activate')  # may return val of deactibate method
-  end
-
-  def center(win=None)
-    tk_call(@path, 'center', win)
-    self
-  end
-
-  def child_site
-    window(tk_call(@path, 'childsite'))
-  end
-
-  def deactivate(val=None)
-    tk_call(@path, 'deactivate', val)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spindate.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spindate.rb
deleted file mode 100644
index 2c98eb4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spindate.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-#  tkextlib/iwidgets/spindate.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Spindate < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Spindate
-  TkCommandNames = ['::iwidgets::spindate'.freeze].freeze
-  WidgetClassName = 'Spindate'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'dayon' << 'monthon' << 'yearon'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'daylabel' << 'monthformat' << 'monthlabel' << 'yearlabel'
-  end
-  private :__strval_optkeys
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def show(date=None)
-    tk_call(@path, 'show', date)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinint.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinint.rb
deleted file mode 100644
index 5eb944d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinint.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tkextlib/iwidgets/spinint.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Spinint < Tk::Iwidgets::Spinner
-    end
-  end
-end
-
-class Tk::Iwidgets::Spinint
-  TkCommandNames = ['::iwidgets::spinint'.freeze].freeze
-  WidgetClassName = 'Spinint'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'wrap'
-  end
-  private :__boolval_optkeys
-
-  def __numlistval_optkeys
-    super() << 'range'
-  end
-  private :__numlistval_optkeys
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinner.rb
deleted file mode 100644
index 174b9bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spinner.rb
+++ /dev/null
@@ -1,150 +0,0 @@
-#
-#  tkextlib/iwidgets/spinner.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Spinner < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Spinner
-  TkCommandNames = ['::iwidgets::spinner'.freeze].freeze
-  WidgetClassName = 'Spinner'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include Tk::ValidateConfigure
-
-  class EntryfieldValidate < TkValidateCommand
-    #class CalCmdArgs < TkUtil::CallbackSubst
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL  = [ 
-        [ ?c, ?s, :char ], 
-        [ ?P, ?s, :post ], 
-        [ ?S, ?s, :current ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-      PROC_TBL = [ 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-    end
-
-    def self._config_keys
-      ['validate', 'invalid']
-    end
-  end
-
-  def __validation_class_list
-    super() << EntryfieldValidate
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, EntryfieldValidate)
-
-  ####################################
-
-  def up
-    tk_call_without_enc(@path, 'up')
-    self
-  end
-
-  def down
-    tk_call_without_enc(@path, 'down')
-    self
-  end
-
-  def clear
-    tk_call_without_enc(@path, 'clear')
-    self
-  end
-
-  def delete(first, last=None)
-    tk_send_without_enc('delete', first, last)
-    self
-  end
-
-  def value
-    _fromUTF8(tk_send_without_enc('get'))
-  end
-  def value= (val)
-    tk_send_without_enc('delete', 0, 'end')
-    tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
-    val
-  end
-  alias get value
-  alias set value=
-
-  def cursor=(index)
-    tk_send_without_enc('icursor', index)
-    #self
-    index
-  end
-  alias icursor cursor=
-
-  def index(idx)
-    number(tk_send_without_enc('index', idx))
-  end
-
-  def insert(pos,text)
-    tk_send_without_enc('insert', pos, _get_eval_enc_str(text))
-    self
-  end
-
-  def mark(pos)
-    tk_send_without_enc('scan', 'mark', pos)
-    self
-  end
-  def dragto(pos)
-    tk_send_without_enc('scan', 'dragto', pos)
-    self
-  end
-  def selection_adjust(index)
-    tk_send_without_enc('selection', 'adjust', index)
-    self
-  end
-  def selection_clear
-    tk_send_without_enc('selection', 'clear')
-    self
-  end
-  def selection_from(index)
-    tk_send_without_enc('selection', 'from', index)
-    self
-  end
-  def selection_present()
-    bool(tk_send_without_enc('selection', 'present'))
-  end
-  def selection_range(s, e)
-    tk_send_without_enc('selection', 'range', s, e)
-    self
-  end
-  def selection_to(index)
-    tk_send_without_enc('selection', 'to', index)
-    self
-  end
-
-  # based on tk/scrollable.rb
-  def xview(*index)
-    if index.size == 0
-      list(tk_send_without_enc('xview'))
-    else
-      tk_send_without_enc('xview', *index)
-      self
-    end
-  end
-  def xview_moveto(*index)
-    xview('moveto', *index)
-  end
-  def xview_scroll(*index)
-    xview('scroll', *index)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spintime.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spintime.rb
deleted file mode 100644
index 0ff683a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/spintime.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-#  tkextlib/iwidgets/spintime.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Spintime < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Spintime
-  TkCommandNames = ['::iwidgets::spintime'.freeze].freeze
-  WidgetClassName = 'Spintime'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'houron' << 'militaryon' << 'minutelabel' << 'secondlabel'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'hourlabel' << 'minuteon' << 'secondon'
-  end
-  private :__strval_optkeys
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def show(date=None)
-    tk_call(@path, 'show', date)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabnotebook.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabnotebook.rb
deleted file mode 100644
index 0d9715f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabnotebook.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-#  tkextlib/iwidgets/tabnotebook.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Tabnotebook < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Tabnotebook
-  TkCommandNames = ['::iwidgets::tabnotebook'.freeze].freeze
-  WidgetClassName = 'Tabnotebook'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'pagecget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'pageconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def __item_strval_optkeys(id)
-    super(id) << 'tabbackground' << 'tabforeground'
-  end
-  private :__item_strval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias pagecget itemcget
-  alias pageconfigure itemconfigure
-  alias pageconfiginfo itemconfiginfo
-  alias current_pageconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __boolval_optkeys
-    super() << 'auto' << 'equaltabs' << 'raiseselect' << 'tabborders'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'backdrop' << 'tabbackground' << 'tabforeground'
-  end
-  private :__strval_optkeys
-
-  def initialize(*args)
-    super(*args)
-    @tabset = self.component_widget('tabset')
-  end
-
-  def add(keys={})
-    window(tk_call(@path, 'add', *hash_kv(keys)))
-  end
-
-  def child_site_list
-    list(tk_call(@path, 'childsite'))
-  end
-
-  def child_site(idx)
-    window(tk_call(@path, 'childsite', index(idx)))
-  end
-
-  def delete(idx1, idx2=nil)
-    if idx2
-      tk_call(@path, 'delete', index(idx1), index(idx2))
-    else
-      tk_call(@path, 'delete', index(idx1))
-    end
-    self
-  end
-
-  def index(idx)
-    #number(tk_call(@path, 'index', tagid(idx)))
-    @tabset.index(tagid(idx))
-  end
-
-  def insert(idx, keys={})
-    window(tk_call(@path, 'insert', index(idx), *hash_kv(keys)))
-  end
-
-  def next
-    tk_call(@path, 'next')
-    self
-  end
-
-  def prev
-    tk_call(@path, 'prev')
-    self
-  end
-
-  def select(idx)
-    tk_call(@path, 'select', index(idx))
-    self
-  end
-
-  def scrollcommand(cmd=Proc.new)
-    configure_cmd 'scrollcommand', cmd
-    self
-  end
-  alias xscrollcommand scrollcommand
-  alias yscrollcommand scrollcommand
-
-  def xscrollbar(bar=nil)
-    if bar
-      @scrollbar = bar
-      @scrollbar.orient 'horizontal'
-      self.scrollcommand {|*arg| @scrollbar.set(*arg)}
-      @scrollbar.command {|*arg| self.xview(*arg)}
-      Tk.update  # avoid scrollbar trouble
-    end
-    @scrollbar
-  end
-  def yscrollbar(bar=nil)
-    if bar
-      @scrollbar = bar
-      @scrollbar.orient 'vertical'
-      self.scrollcommand {|*arg| @scrollbar.set(*arg)}
-      @scrollbar.command {|*arg| self.yview(*arg)}
-      Tk.update  # avoid scrollbar trouble
-    end
-    @scrollbar
-  end
-  alias scrollbar yscrollbar
-
-  def view(*index)
-    if index.size == 0
-      window(tk_send_without_enc('view'))
-    else
-      tk_send_without_enc('view', *index)
-      self
-    end
-  end
-  alias xview view
-  alias yview view
-
-  def view_moveto(*index)
-    view('moveto', *index)
-  end
-  alias xview_moveto view_moveto
-  alias yview_moveto view_moveto
-  def view_scroll(*index)
-    view('scroll', *index)
-  end
-  alias xview_scroll view_scroll
-  alias yview_scroll view_scroll
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabset.rb
deleted file mode 100644
index 54e56d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/tabset.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-#  tkextlib/iwidgets/tabset.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Tabset < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Tabset
-  TkCommandNames = ['::iwidgets::tabset'.freeze].freeze
-  WidgetClassName = 'Tabset'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'tabcget', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'tabconfigure', id]
-  end
-  private :__item_config_cmd
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  alias tabcget itemcget
-  alias tabconfigure itemconfigure
-  alias tabconfiginfo itemconfiginfo
-  alias current_tabconfiginfo current_itemconfiginfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-
-  ####################################
-
-  def __boolval_optkeys
-    super() << 'equaltabs' << 'raiseselect' << 'tabborders'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'backdrop'
-  end
-  private :__strval_optkeys
-
-  def add(keys={})
-    window(tk_call(@path, 'add', *hash_kv(keys)))
-  end
-
-  def delete(idx1, idx2=nil)
-    if idx2
-      tk_call(@path, 'delete', index(idx1), index(idx2))
-    else
-      tk_call(@path, 'delete', index(idx1))
-    end
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, keys={})
-    window(tk_call(@path, 'insert', index(idx), *hash_kv(keys)))
-  end
-
-  def next
-    tk_call(@path, 'next')
-    self
-  end
-
-  def prev
-    tk_call(@path, 'prev')
-    self
-  end
-
-  def select(idx)
-    tk_call(@path, 'select', index(idx))
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timeentry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timeentry.rb
deleted file mode 100644
index 588da77..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timeentry.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-#  tkextlib/iwidgets/timeentry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Timeentry < Tk::Iwidgets::Timefield
-    end
-  end
-end
-
-class Tk::Iwidgets::Timeentry
-  TkCommandNames = ['::iwidgets::timeentry'.freeze].freeze
-  WidgetClassName = 'Timeentry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __strval_optkeys
-    super() << 'closetext'
-  end
-  private :__strval_optkeys
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timefield.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timefield.rb
deleted file mode 100644
index 28e1504..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/timefield.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-#  tkextlib/iwidgets/timefield.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class  Timefield < Tk::Iwidgets::Labeledwidget
-    end
-  end
-end
-
-class Tk::Iwidgets::Timefield
-  TkCommandNames = ['::iwidgets::timefield'.freeze].freeze
-  WidgetClassName = 'Timefield'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'gmt'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'textbackground'
-  end
-  private :__strval_optkeys
-
-  def __font_optkeys
-    super() << 'textfont'
-  end
-  private :__font_optkeys
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def valid?
-    bool(tk_call(@path, 'isvalid'))
-  end
-  alias isvalid? valid?
-
-  def show(time=None)
-    tk_call(@path, 'show', time)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/toolbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/toolbar.rb
deleted file mode 100644
index 17cfa62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/toolbar.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-#  tkextlib/iwidgets/toolbar.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Toolbar < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Toolbar
-  TkCommandNames = ['::iwidgets::toolbar'.freeze].freeze
-  WidgetClassName = 'Toolbar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __tkvariable_optkeys
-    super() << 'helpvariable'
-  end
-  private :__tkvariable_optkeys
-
-  ####################################
-
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)
-    [self.path, 'itemcget', self.index(id)]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'itemconfigure', self.index(id)]
-  end
-  private :__item_config_cmd
-
-  def __item_strval_optkeys(id)
-    super(id) << 'helpstr' << 'balloonstr'
-  end
-  private :__item_strval_optkeys
-
-  def tagid(tagOrId)
-    if tagOrId.kind_of?(Tk::Itk::Component)
-      tagOrId.name
-    else
-      #_get_eval_string(tagOrId)
-      tagOrId
-    end
-  end
-
-  ####################################
-
-  def __strval_optkeys
-    super() << 'balloonbackground' << 'balloonforeground'
-  end
-  private :__strval_optkeys
-
-  def __tkvariable_optkeys
-    super() << 'helpvariable'
-  end
-  private :__tkvariable_optkeys
-
-  def __font_optkeys
-    super() << 'balloonfont'
-  end
-  private :__font_optkeys
-
-  def add(type, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    window(tk_call(@path, 'add', type, tagid(tag), *hash_kv(keys)))
-    tag
-  end
-
-  def delete(idx1, idx2=nil)
-    if idx2
-      tk_call(@path, 'delete', index(idx1), index(idx2))
-    else
-      tk_call(@path, 'delete', index(idx1))
-    end
-    self
-  end
-
-  def index(idx)
-    number(tk_call(@path, 'index', tagid(idx)))
-  end
-
-  def insert(idx, type, tag=nil, keys={})
-    if tag.kind_of?(Hash)
-      keys = tag
-      tag = nil
-    end
-    if tag
-      tag = Tk::Itk::Component.new(self, tagid(tag))
-    else
-      tag = Tk::Itk::Component.new(self)
-    end
-    window(tk_call(@path, 'insert', index(idx), type, 
-                   tagid(tag), *hash_kv(keys)))
-    tag
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/watch.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/watch.rb
deleted file mode 100644
index ab2b687..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/iwidgets/watch.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-#  tkextlib/iwidgets/watch.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tkextlib/iwidgets.rb'
-
-module Tk
-  module Iwidgets
-    class Watch < Tk::Itk::Widget
-    end
-  end
-end
-
-class Tk::Iwidgets::Watch
-  TkCommandNames = ['::iwidgets::watch'.freeze].freeze
-  WidgetClassName = 'Watch'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'showampm'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'clockcolor' << 'hourcolor' << 'minutecolor' << 
-      'pivotcolor' << 'secondcolor' << 'tickcolor'
-  end
-  private :__strval_optkeys
-
-  def get_string
-    tk_call(@path, 'get', '-string')
-  end
-  alias get get_string
-
-  def get_clicks
-    number(tk_call(@path, 'get', '-clicks'))
-  end
-
-  def show(time=None)
-    tk_call(@path, 'show', time)
-    self
-  end
-  def show_now
-    tk_call(@path, 'show', 'now')
-    self
-  end
-
-  def watch(*args)
-    unless args.empty?
-      tk_call(@path, 'watch', *args)
-    end
-    component_path('canvas')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/pkg_checker.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/pkg_checker.rb
deleted file mode 100644
index 5002ed7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/pkg_checker.rb
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  Ruby/Tk extension library checker
-#
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-TkRoot.new.withdraw  # hide root window
-
-name = File.basename(__FILE__)
-
-add_path = false
-verbose  = false
-
-def help_msg
-  print "Usage: #{$0} [-l] [-v] [-h] [--] [dir]\n"
-  print "\tIf dir is omitted, check the directry that this command exists.\n"
-  print "\tAvailable options are \n"
-  print "\t  -l : Add dir to $LOAD_PATH\n"
-  print "\t       (If dir == '<parent>/tkextlib', add <parent> also.)\n"
-  print "\t  -v : Verbose mode (show reason of fail)\n"
-  print "\t  -h : Show this message\n"
-  print "\t  -- : End of options\n"
-end
-
-while(ARGV[0] && ARGV[0][0] == ?-)
-  case ARGV[0]
-  when '--'
-    ARGV.shift
-    break;
-  when '-l'
-    ARGV.shift
-    add_path = true
-  when '-v'
-    ARGV.shift
-    verbose = true
-  when '-h'
-    help_msg
-    exit(0)
-  else
-    print "Argument Error!! : unknown option '#{ARGV[0]}'\n"
-    help_msg
-    exit(1)
-  end
-end
-
-if ARGV[0]
-  dir = File.expand_path(ARGV[0])
-else
-  dir = File.dirname(File.expand_path(__FILE__))
-end
-
-if add_path
-  $LOAD_PATH.unshift(dir)
-  if File.basename(dir) == 'tkextlib'
-    $LOAD_PATH.unshift(File.dirname(dir))
-  end
-end
-
-print "\nRuby/Tk extension library checker\n"
-print "( Note:: This check is very simple one. Shown status may be wrong. )\n"
-print "\n check directory :: #{dir}"
-print "\n $LOAD_PATH :: #{$LOAD_PATH.inspect}\n"
-
-def get_pkg_list(file)
-  pkg_list = []
-
-  File.foreach(file){|l|
-    if l =~ /^(?:[^#]+\s|\s*)(?:|;\s*)TkPackage\s*\.\s*require\s*\(?\s*(["'])((\w|:)+)\1/
-      pkg = [$2, :package]
-      pkg_list << pkg unless pkg_list.member?(pkg)
-    end
-    if l =~ /^(?:[^#]+\s|\s*)(?:|;\s*)Tk\s*\.\s*load_tcllibrary\s*\(?\s*(["'])((\w|:)+)\1/
-      pkg = [$2, :library]
-      pkg_list << pkg unless pkg_list.member?(pkg)
-    end
-    if l =~ /^(?:[^#]+\s|\s*)(?:|;\s*)Tk\s*\.\s*load_tclscript\s*\(?\s*(["'])((\w|:)+)\1/
-      pkg = [$2, :script]
-      pkg_list << pkg unless pkg_list.member?(pkg)
-    end
-    if l =~ /^(?:[^#]+\s|\s*)(?:|;\s*)require\s*\(?\s*(["'])((\w|\/|:)+)\1/
-      pkg = [$2, :require_ruby_lib]
-      pkg_list << pkg unless pkg_list.member?(pkg)
-    end
-  }
-
-  pkg_list
-end
-
-def check_pkg(file, verbose=false)
-  pkg_list = get_pkg_list(file)
-
-  error_list = []
-  success_list = {}
-
-  pkg_list.each{|name, type|
-    next if success_list[name]
-
-    begin
-      case type
-      when :package
-        ver = TkPackage.require(name)
-        success_list[name] = ver
-        error_list.delete_if{|n, t| n == name}
-
-      when :library
-        Tk.load_tcllibrary(name)
-        success_list[name] = :library
-        error_list.delete_if{|n, t| n == name}
-
-      when :script
-        Tk.load_tclscript(name)
-        success_list[name] = :script
-        error_list.delete_if{|n, t| n == name}
-
-      when :require_ruby_lib
-        require name
-
-      end
-    rescue => e
-      if verbose
-        error_list << [name, type, e.message]
-      else
-        error_list << [name, type]
-      end
-    end
-  }
-
-  success_list.dup.each{|name, ver|
-    unless ver.kind_of?(String)
-      begin
-        ver = TkPackage.require(name)
-        sccess_list[name] = ver
-      rescue
-      end
-    end
-  }
-
-  [success_list, error_list]
-end
-
-def subdir_check(dir, verbose=false)
-  Dir.foreach(dir){|f|
-    next if f == '.' || f == '..'
-    if File.directory?(f)
-      subdir_check(File.join(dir, f))
-    elsif File.extname(f) == '.rb'
-      path = File.join(dir, f)
-      suc, err = check_pkg(path, verbose)
-      if err.empty?
-        print 'Ready : ', path, ' : require->', suc.inspect, "\n"
-      else
-        print '*LACK : ', path, ' : require->', suc.inspect, 
-          '  FAIL->', err.inspect, "\n"
-      end
-    end
-  }
-end
-
-Dir.chdir(dir)
-
-(Dir['*.rb'] - ['setup.rb', name]).each{|f|
-  subdir = File.basename(f, '.*')
-=begin
-  begin
-    # read 'setup.rb' as if the library has standard structure
-    require File.join(subdir, 'setup.rb')
-  rescue LoadError
-    # ignore error
-  end
-=end
-  print "\n"
-
-  suc, err = check_pkg(f, verbose)
-  if err.empty?
-    print 'Ready : ', f, ' : require->', suc.inspect, "\n"
-  else
-    print '*LACK : ', f, ' : require->', suc.inspect, 
-      '  FAIL->', err.inspect, "\n"
-  end
-
-  subdir_check(subdir, verbose) if File.directory?(subdir)
-}
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/setup.rb
deleted file mode 100644
index 12867e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before using Tk extension libraries
-#
-#    If you need some setup operations for Tk extensions (for example, 
-#    modify the dynamic library path) required, please write the setup 
-#    operations in this file. This file is required at the last of 
-#    "require 'tk'". 
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib.rb
deleted file mode 100644
index c6138f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-#
-#  tcllib extension support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tcllib/setup.rb'
-
-err = ''
-
-# package:: autoscroll
-target = 'tkextlib/tcllib/autoscroll'
-begin
-  require target
-rescue => e
-  err << "\n  ['" << target << "'] "  << e.class.name << ' : ' << e.message
-end
-
-# package:: cursor
-target = 'tkextlib/tcllib/cursor'
-begin
-  require target
-rescue => e
-  err << "\n  ['" << target << "'] "  << e.class.name << ' : ' << e.message
-end
-
-# package:: style
-target = 'tkextlib/tcllib/style'
-begin
-  require target
-rescue => e
-  err << "\n  ['" << target << "'] "  << e.class.name << ' : ' << e.message
-end
-
-# autoload
-module Tk
-  module Tcllib
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    # package:: ctext
-    autoload :CText,              'tkextlib/tcllib/ctext'
-
-    # package:: getstring
-    autoload :GetString_Dialog,   'tkextlib/tcllib/getstring'
-
-    # package:: history
-    autoload :History,            'tkextlib/tcllib/history'
-
-    # package:: datefield
-    autoload :Datefield,          'tkextlib/tcllib/datefield'
-    autoload :DateField,          'tkextlib/tcllib/datefield'
-
-    # package:: ico
-    autoload :ICO,                'tkextlib/tcllib/ico'
-
-    # package:: ipentry
-    autoload :IP_Entry,           'tkextlib/tcllib/ip_entry'
-    autoload :IPEntry,            'tkextlib/tcllib/ip_entry'
-
-    # package:: swaplist
-    autoload :Swaplist_Dialog,    'tkextlib/tcllib/swaplist'
-
-    # package:: Plotchart
-    autoload :Plotchart,          'tkextlib/tcllib/plotchart'
-
-    # package:: tablelist
-    autoload :Tablelist,           'tkextlib/tcllib/tablelist'
-    autoload :TableList,           'tkextlib/tcllib/tablelist'
-    autoload :Tablelist_Tile,      'tkextlib/tcllib/tablelist_tile'
-    autoload :TableList_Tile,      'tkextlib/tcllib/tablelist_tile'
-
-    # package:: tkpiechart
-    autoload :Tkpiechart,         'tkextlib/tcllib/tkpiechart'
-
-    # package:: tooltip
-    autoload :Tooltip,            'tkextlib/tcllib/tooltip'
-
-    # package:: widget
-    autoload :Wdiget,             'tkextlib/tcllib/widget'
-  end
-end
-
-if $VERBOSE && !err.empty?
-  warn("Warning: some sub-packages are failed to require : " + err)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/autoscroll.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/autoscroll.rb
deleted file mode 100644
index 6940a91..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/autoscroll.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-#  tkextlib/tcllib/autoscroll.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Provides for a scrollbar to automatically mapped and unmapped as needed
-#
-# (The following is the original description of the library.)
-#
-# This package allows scrollbars to be mapped and unmapped as needed 
-# depending on the size and content of the scrollbars scrolled widget. 
-# The scrollbar must be managed by either pack or grid, other geometry 
-# managers are not supported.
-#
-# When managed by pack, any geometry changes made in the scrollbars parent 
-# between the time a scrollbar is unmapped, and when it is mapped will be 
-# lost. It is an error to destroy any of the scrollbars siblings while the 
-# scrollbar is unmapped. When managed by grid, if anything becomes gridded 
-# in the same row and column the scrollbar occupied it will be replaced by 
-# the scrollbar when remapped.
-#
-# This package may be used on any scrollbar-like widget as long as it 
-# supports the set subcommand in the same style as scrollbar. If the set 
-# subcommand is not used then this package will have no effect.
-#
-
-require 'tk'
-require 'tk/scrollbar'
-require 'tkextlib/tcllib.rb'
-
-module Tk
-  module Tcllib
-    module Autoscroll
-      PACKAGE_NAME = 'autoscroll'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('autoscroll')
-        rescue
-          ''
-        end
-      end
-
-      def self.not_available
-        fail RuntimeError, "'tkextlib/tcllib/autoscroll' extension is not available on your current environment."
-      end
-
-      def self.autoscroll(win)
-        Tk::Tcllib::Autoscroll.not_available
-      end
-
-      def self.unautoscroll(win)
-        Tk::Tcllib::Autoscroll.not_available
-      end
-    end
-  end
-end
-
-module Tk
-  module Scrollable
-    def autoscroll(mode = nil)
-      case mode
-      when :x, 'x'
-        if @xscrollbar
-          Tk::Tcllib::Autoscroll.autoscroll(@xscrollbar)
-        end
-      when :y, 'y'
-        if @yscrollbar
-          Tk::Tcllib::Autoscroll.autoscroll(@yscrollbar)
-        end
-      when nil, :both, 'both'
-        if @xscrollbar
-          Tk::Tcllib::Autoscroll.autoscroll(@xscrollbar)
-        end
-        if @yscrollbar
-          Tk::Tcllib::Autoscroll.autoscroll(@yscrollbar)
-        end
-      else
-        fail ArgumentError, "'x', 'y' or 'both' (String or Symbol) is expected"
-      end
-      self
-    end
-    def unautoscroll(mode = nil)
-      case mode
-      when :x, 'x'
-        if @xscrollbar
-          Tk::Tcllib::Autoscroll.unautoscroll(@xscrollbar)
-        end
-      when :y, 'y'
-        if @yscrollbar
-          Tk::Tcllib::Autoscroll.unautoscroll(@yscrollbar)
-        end
-      when nil, :both, 'both'
-        if @xscrollbar
-          Tk::Tcllib::Autoscroll.unautoscroll(@xscrollbar)
-        end
-        if @yscrollbar
-          Tk::Tcllib::Autoscroll.unautoscroll(@yscrollbar)
-        end
-      else
-        fail ArgumentError, "'x', 'y' or 'both' (String or Symbol) is expected"
-      end
-      self
-    end
-  end
-end
-
-class TkScrollbar
-  def autoscroll
-    # Arranges for the already existing scrollbar to be mapped 
-    # and unmapped as needed.
-    #tk_call_without_enc('::autoscroll::autoscroll', @path)
-    Tk::Tcllib::Autoscroll.autoscroll(self)
-    self
-  end
-  def unautoscroll
-    #     Returns the scrollbar to its original static state. 
-    #tk_call_without_enc('::autoscroll::unautoscroll', @path)
-    Tk::Tcllib::Autoscroll.unautoscroll(self)
-    self
-  end
-end
-
-# TkPackage.require('autoscroll', '1.0')
-# TkPackage.require('autoscroll', '1.1')
-TkPackage.require('autoscroll')
-
-module Tk
-  module Tcllib
-    class << Autoscroll
-      undef not_available
-    end
-
-    module Autoscroll
-      extend TkCore
-      def self.autoscroll(win)
-        tk_call_without_enc('::autoscroll::autoscroll', win.path)
-      end
-
-      def self.unautoscroll(win)
-        tk_call_without_enc('::autoscroll::unautoscroll', win.path)
-      end
-
-      def self.wrap
-        # v1.1
-        tk_call_without_enc('::autoscroll::wrap')
-      end
-
-      def self.unwrap
-        # v1.1
-        tk_call_without_enc('::autoscroll::unwrap')
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ctext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ctext.rb
deleted file mode 100644
index 70a45dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ctext.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-#
-#  tkextlib/tcllib/ctext.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Overloads the text widget and provides new commands
-#
-
-require 'tk'
-require 'tk/text'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('ctext', '3.1')
-TkPackage.require('ctext')
-
-module Tk
-  module Tcllib
-    class CText < TkText
-      PACKAGE_NAME = 'ctext'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('ctext')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-class Tk::Tcllib::CText
-  TkCommandNames = ['ctext'.freeze].freeze
-  WidgetClassName = 'Ctext'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'linemapfg' << 'linemapbg' << 
-      'linemap_select_fg' << 'linemap_select_bg'
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() << 'highlight' << 'linemap_markable'
-  end
-  private :__boolval_optkeys
-
-  def append(*args)
-    tk_send('append', *args)
-  end
-
-  def copy
-    tk_send('copy')
-  end
-
-  def cut
-    tk_send('cut')
-  end
-
-  def fast_delete(*args)
-    tk_send('fastdelete', *args)
-  end
-
-  def fast_insert(*args)
-    tk_send('fastinsert', *args)
-  end
-
-  def highlight(*args)
-    tk_send('highlight', *args)
-  end
-
-  def paste
-    tk_send('paste')
-  end
-
-  def edit(*args)
-    tk_send('edit', *args)
-  end
-
-  def add_highlight_class(klass, col, *keywords)
-    tk_call('ctext::addHighlightClass', @path, klass, col, keywords.flatten)
-    self
-  end
-
-  def add_highlight_class_for_special_chars(klass, col, *chrs)
-    tk_call('ctext::addHighlightClassForSpecialChars', 
-            @path, klass, col, chrs.join(''))
-    self
-  end
-
-  def add_highlight_class_for_regexp(klass, col, tcl_regexp)
-    tk_call('ctext::addHighlightClassForRegexp', 
-            @path, klass, col, tcl_regexp)
-    self
-  end
-
-  def add_highlight_class_with_only_char_start(klass, col, chr)
-    tk_call('ctext::addHighlightClassWithOnlyCharStart', 
-            @path, klass, col, chr)
-    self
-  end
-
-  def clear_highlight_classes
-    tk_call('ctext::clearHighlightClasses', @path)
-    self
-  end
-
-  def get_highlight_classes
-    tk_split_simplelist(tk_call('ctext::getHighlightClasses', @path))
-  end
-
-  def delete_highlight_class(klass)
-    tk_call('ctext::deleteHighlightClass', @path, klass)
-    self
-  end
-
-  def enable_C_comments
-    tk_call('ctext::enableComments', @path)
-    self
-  end
-
-  def disable_C_comments
-    tk_call('ctext::disableComments', @path)
-    self
-  end
-
-  def find_next_char(idx, chr)
-    tk_call('ctext::findNextChar', @path, idx, chr)
-  end
-
-  def find_next_space(idx)
-    tk_call('ctext::findNextSpace', @path, idx)
-  end
-
-  def find_previous_space(idx)
-    tk_call('ctext::findPreviousSpace', @path, idx)
-  end
-
-  def set_update_proc(cmd=Proc.new)
-    tk_call('proc', 'ctext::update', '', cmd)
-    self
-  end
-
-  def modified?(mode)
-    bool(tk_call('ctext::modified', @path, mode))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/cursor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/cursor.rb
deleted file mode 100644
index 9bb828e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/cursor.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-#  tkextlib/tcllib/cursor.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Procedures to handle CURSOR data
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-module Tk
-  module Tcllib
-    module Cursor
-      PACKAGE_NAME = 'cursor'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('cursor')
-        rescue
-          ''
-        end
-      end
-
-      def self.not_available
-        fail RuntimeError, "'tkextlib/tcllib/cursor' extension is not available on your current environment."
-      end
-
-      def self.cursor_display(win=None)
-        Tk::Tcllib::Cursor.not_available
-      end
-
-      def self.cursor_propagate(win, cursor)
-        Tk::Tcllib::Cursor.not_available
-      end
-
-      def self.cursor_restore(win, cursor = None)
-        Tk::Tcllib::Cursor.not_available
-      end
-    end
-  end
-
-  def self.cursor_display(parent=None)
-    # Pops up a dialog with a listbox containing all the cursor names. 
-    # Selecting a cursor name will display it in that dialog. 
-    # This is simply for viewing any available cursors on the platform .
-    #tk_call_without_enc('::cursor::display', parent)
-    Tk::Tcllib::Cursor.cursor_display(parent)
-  end
-end
-
-class TkWindow
-  def cursor_propagate(cursor)
-    # Sets the cursor for self and all its descendants to cursor. 
-    #tk_call_without_enc('::cursor::propagate', @path, cursor)
-    Tk::Tcllib::Cursor.cursor_propagate(self, cursor)
-  end
-  def cursor_restore(cursor = None)
-    # Restore the original or previously set cursor for self and all its 
-    # descendants. If cursor is specified, that will be used if on any 
-    # widget that did not have a preset cursor (set by a previous call 
-    # to TkWindow#cursor_propagate). 
-    #tk_call_without_enc('::cursor::restore', @path, cursor)
-    Tk::Tcllib::Cursor.cursor_restore(self, cursor)
-  end
-end
-
-# TkPackage.require('cursor', '0.1')
-TkPackage.require('cursor')
-
-module Tk
-  module Tcllib
-    class << Cursor
-      undef not_available
-    end
-
-    module Cursor
-      extend TkCore
-      def self.cursor_display(win=None)
-        tk_call_without_enc('::cursor::display', _epath(win))
-      end
-
-      def self.cursor_propagate(win, cursor)
-        #tk_call_without_enc('::cursor::propagate', win.path, cursor)
-        tk_call_without_enc('::cursor::propagate', _epath(win), cursor)
-      end
-
-      def self.cursor_restore(win, cursor = None)
-        #tk_call_without_enc('::cursor::restore', win.path, cursor)
-        tk_call_without_enc('::cursor::restore', _epath(win), cursor)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/datefield.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/datefield.rb
deleted file mode 100644
index bd84488..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/datefield.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-#  tkextlib/tcllib/datefield.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Tk datefield widget
-#
-# (The following is the original description of the library.)
-#
-# The datefield package provides the datefield widget which is an enhanced 
-# text entry widget for the purpose of date entry. Only valid dates of the 
-# form MM/DD/YYYY can be entered.
-# 
-# The datefield widget is, in fact, just an entry widget with specialized 
-# bindings. This means all the command and options for an entry widget apply 
-# equally here.
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('datefield', '0.1')
-TkPackage.require('datefield')
-
-module Tk
-  module Tcllib
-    class Datefield < TkEntry
-      PACKAGE_NAME = 'datefield'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('datefield')
-        rescue
-          ''
-        end
-      end
-    end
-    DateField = Datefield
-  end
-end
-
-class Tk::Tcllib::Datefield
-  TkCommandNames = ['::datefield::datefield'.freeze].freeze
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/dialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/dialog.rb
deleted file mode 100644
index 825621b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/dialog.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-#  tkextlib/tcllib/dialog.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Generic dialog widget (themed)
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::dialog', '1.2')
-TkPackage.require('widget::dialog')
-
-module Tk::Tcllib
-  module Widget
-    class Dialog < TkWindow
-      PACKAGE_NAME = 'widget::dialog'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::dialog')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-class Tk::Tcllib::Widget::Dialog
-  TkCommandNames = ['::widget::dialog'.freeze].freeze
-
-  def __boolval_optkeys
-    ['separator', 'synchronous', 'transient']
-  end
-  private :__boolval_optkeys
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def add(what, *args)
-    window(tk_send('add', *args))
-  end
-
-  def get_frame
-    window(tk_send('getframe'))
-  end
-
-  def set_widget(widget)
-    tk_send('setwidget', widget)
-    self
-  end
-
-  def display
-    tk_send('display')
-    self
-  end
-  alias show display
-
-  def cancel
-    tk_send('cancel')
-    self
-  end
-
-  def close(reason = None)
-    tk_send('close', reason)
-  end
-
-  def withdraw
-    tk_send('withdraw')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/getstring.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/getstring.rb
deleted file mode 100644
index bf5e54e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/getstring.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-#  tkextlib/tcllib/getstring.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * A dialog which consists of an Entry, OK, and Cancel buttons.
-#
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('getstring', '0.1')
-TkPackage.require('getstring')
-
-module Tk::Tcllib
-  class GetString_Dialog < TkWindow
-    PACKAGE_NAME = 'getstring'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('getstring')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-
-class Tk::Tcllib::GetString_Dialog
-  TkCommandNames = ['::getstring::tk_getString'.freeze].freeze
-  WidgetClassName = 'TkSDialog'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.show(*args)
-    dialog = self.new(*args)
-    dialog.show
-    [dialog.status, dialog.value]
-  end
-  def self.display(*args)
-    self.show(*args)
-  end
-
-  def initialize(*args)   # args = (parent=nil, text='', keys=nil)
-    keys = args.pop
-    if keys.kind_of?(Hash)
-      text = args.pop
-      @keys = _symbolkey2str(keys)
-      args.push(keys)
-    else
-      text = keys
-      @keys = {}
-    end
-    if text
-      @text = text.dup
-    else
-      @text = ''
-    end
-
-    @variable = TkVariable.new
-    @status = nil
-
-    super(*args)
-  end
-
-  def create_self(keys)
-    # dummy
-  end
-  private :create_self
-
-  def show
-    @variable.value = ''
-    @status = bool(tk_call(self.class::TkCommandNames[0], 
-                           @path, @variable, @text, *hash_kv(@keys)))
-  end
-  alias display show
-
-  def status
-    @status
-  end
-
-  def value
-    @variable.value
-  end
-
-  def cget(slot)
-    slot = slot.to_s
-    if slot == 'text'
-      @text
-    else
-      @keys[slot]
-    end
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot.each{|k, v| configure(k, v)}
-    else
-      slot = slot.to_s
-      value = _symbolkey2str(value) if value.kind_of?(Hash)
-      if value && value != None
-        if slot == 'text'
-          @text = value.to_s
-        else
-          @keys[slot] = value
-        end
-      else
-        if slot == 'text'
-          @text = ''
-        else
-          @keys.delete(slot)
-        end
-      end
-    end
-    self
-  end
-
-  def configinfo(slot = nil)
-    if slot
-      slot = slot.to_s
-      [ slot, nil, nil, nil, ( (slot == 'text')? @text: @keys[slot] ) ]
-    else
-      @keys.collect{|k, v| [ k, nil, nil, nil, v ] }   \
-      << [ 'text', nil, nil, nil, @text ]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/history.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/history.rb
deleted file mode 100644
index a01a4eb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/history.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-#
-#  tkextlib/tcllib/history.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Provides a history for Entry widgets
-#
-
-require 'tk'
-require 'tk/entry'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('history', '0.1')
-TkPackage.require('history')
-
-module Tk::Tcllib
-  module History
-    PACKAGE_NAME = 'history'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('history')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-module Tk::Tcllib::History
-  extend TkCore
-
-  def self.init(entry, length=None)
-    tk_call_without_enc('::history::init', entry.path, length)
-    entry.extend(self)  # add methods to treat history to the entry widget
-  end
-
-  def self.remove(entry)
-    tk_call_without_enc('::history::remove', entry.path)
-    entry
-  end
-
-  def history_remove
-    tk_call_without_enc('::history::remove', @path)
-    self
-  end
-
-  def history_add(text)
-    tk_call('::history::add', @path, text)
-    self
-  end
-
-  def history_get
-    simplelist(tk_call_without_enc('::history::get', @path))
-  end
-
-  def history_clear
-    tk_call_without_enc('::history::clear', @path)
-    self
-  end
-
-  def history_configure(opt, value)
-    tk_call('::history::configure', @path, opt, value)
-    self
-  end
-
-  def history_configinfo(opt)
-    tk_call('::history::configure', @path, opt)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ico.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ico.rb
deleted file mode 100644
index 3beeb11..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ico.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-#  tkextlib/tcllib/ico.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Reading and writing windows icons
-#
-
-require 'tk'
-require 'tk/image'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('ico', '0.3')
-TkPackage.require('ico')
-
-module Tk
-  module Tcllib
-    class ICO < TkImage
-      PACKAGE_NAME = 'ico'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('ico')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-class Tk::Tcllib::ICO
-  def self.list(file, keys=nil)
-    tk_split_list(tk_call_without_enc('::ico::getIconList', file,
-                                      *hash_kv(keys, true)))
-  end
-
-  def self.get(file, index, keys=nil)
-    tk_call_without_enc('::ico::getIcon', file, index, *hash_kv(keys, true))
-  end
-
-  def self.get_image(file, index, keys={})
-    keys = _symbolkey2str(keys)
-    keys.delete('format')
-    self.new(file, index, keys)
-  end
-
-  def self.get_data(file, index, keys={})
-    keys['format'] = 'data'
-    tk_split_list(tk_call_without_enc('::ico::getIcon', file, index, 
-                                      *hash_kv(keys, true)))
-  end
-
-  def self.write(file, index, depth, data, keys=nil)
-    tk_call_without_enc('::ico::writeIcon', file, index, depth, data, 
-                        *hash_kv(keys, true))
-  end
-
-  def self.copy(from_file, from_index, to_file, to_index, keys=nil)
-    tk_call_without_enc('::ico::copyIcon', 
-                        from_file, from_index, to_file, to_index, 
-                        *hash_kv(keys, true))
-  end
-
-  def self.exe_to_ico(exe_file, ico_file, keys=nil)
-    tk_call_without_enc('::ico::copyIcon', exe_file, ico_file, 
-                        *hash_kv(keys, true))
-  end
-
-  def self.clear_cache(file=None)
-    tk_call_without_enc('::ico::clearCache', file)
-  end
-
-  def self.transparent_color(image, color)
-    if image.kind_of?(Array)
-      tk_split_list(tk_call_without_enc('::ico::transparentColor', 
-                                        image, color))
-    else
-      tk_call_without_enc('::ico::transparentColor', image, color)
-    end
-  end
-
-  def self.show(file, keys=nil)
-    tk_call_without_enc('::ico::Show', file, *hash_kv(keys, true))
-  end
-
-  ###########################
-
-  def initialize(file, index, keys=nil)
-    keys = _symbolkey2str(keys)
-    if keys.key?('name')
-      @path = keys['name'].to_s
-    else
-      @path = Tk_Image_ID.join(TkCore::INTERP._ip_id_)
-      Tk_Image_ID[1].succ!
-    end
-    tk_call_without_enc('::ico::getIcon', file, index, '-name', @path, 
-                        '-format', 'image', *hash_kv(keys, true))
-    Tk_IMGTBL[@path] = self
-  end
-
-  def write(file, index, depth, keys=nil)
-    Tk::Tcllib::ICO.write(file, index, depth, @path, keys=nil)
-    self
-  end
-
-  def transparent_color(color)
-    tk_call_without_enc('::ico::transparentColor', @path, color)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ip_entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ip_entry.rb
deleted file mode 100644
index 8c9e0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ip_entry.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-#  tkextlib/tcllib/ip_entry.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * An IP address entry widget
-#
-# (The following is the original description of the library.)
-#
-# This package provides a widget for the entering of a IP address. 
-# It guarantees a valid address at all times.
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('ipentry', '0.1')
-TkPackage.require('ipentry')
-
-module Tk
-  module Tcllib
-    class IP_Entry < TkEntry
-      PACKAGE_NAME = 'ipentry'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('ipentry')
-        rescue
-          ''
-        end
-      end
-    end
-    IPEntry = IP_Entry
-  end
-end
-
-class Tk::Tcllib::IP_Entry
-  TkCommandNames = ['::ipentry::ipentry'.freeze].freeze
-  WidgetClassName = 'IPEntry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'fg' << 'bg' << 'insertbackground'
-  end
-  private :__strval_optkeys
-
-  def complete?
-    bool(tk_send_without_enc('complete'))
-  end
-
-  def insert(*ip)
-    tk_send_without_enc('insert', array2tk_list(ip.flatten))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/panelframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/panelframe.rb
deleted file mode 100644
index 2a4562e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/panelframe.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-#  tkextlib/tcllib/panelframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Create PanelFrame widgets.
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::panelframe', '1.0')
-TkPackage.require('widget::panelframe')
-
-module Tk::Tcllib
-  module Widget
-    class PanelFrame < TkWindow
-      PACKAGE_NAME = 'widget::panelframe'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::panelframe')
-        rescue
-          ''
-        end
-      end
-    end
-    Panelframe = PanelFrame
-  end
-end
-
-class Tk::Tcllib::Widget::PanelFrame
-  TkCommandNames = ['::widget::panelframe'.freeze].freeze
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def add(what, *args)
-    window(tk_send('add', *args))
-  end
-
-  #def get_frame
-  #  window(tk_send('getframe'))
-  #end
-
-  def set_widget(widget)
-    tk_send('setwidget', widget)
-    self
-  end
-
-  def remove(*wins)
-    tk_send('remove', *wins)
-  end
-  def remove_destroy(*wins)
-    tk_send('remove', '-destroy', *wins)
-  end
-  alias delete remove_destroy
-
-  def items
-    simplelist(tk_send('items')).collect!{|w| window(w)}
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/plotchart.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/plotchart.rb
deleted file mode 100644
index f5f344c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/plotchart.rb
+++ /dev/null
@@ -1,865 +0,0 @@
-#
-#  tkextlib/tcllib/plotchart.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Simple plotting and charting package
-#
-# (The following is the original description of the library.)
-#
-# Plotchart is a Tcl-only package that focuses on the easy creation of 
-# xy-plots, barcharts and other common types of graphical presentations. 
-# The emphasis is on ease of use, rather than flexibility. The procedures 
-# that create a plot use the entire canvas window, making the layout of the 
-# plot completely automatic.
-#
-# This results in the creation of an xy-plot in, say, ten lines of code:
-# --------------------------------------------------------------------
-#    package require Plotchart
-#
-#    canvas .c -background white -width 400 -height 200
-#    pack   .c -fill both
-#
-#    #
-#    # Create the plot with its x- and y-axes
-#    #
-#    set s [::Plotchart::createXYPlot .c {0.0 100.0 10.0} {0.0 100.0 20.0}]
-#
-#    foreach {x y} {0.0 32.0 10.0 50.0 25.0 60.0 78.0 11.0 } {
-#        $s plot series1 $x $y
-#    }
-#
-#    $s title "Data series"
-# --------------------------------------------------------------------
-#
-# A drawback of the package might be that it does not do any data management. 
-# So if the canvas that holds the plot is to be resized, the whole plot must 
-# be redrawn. The advantage, though, is that it offers a number of plot and 
-# chart types:
-#
-#    * XY-plots like the one shown above with any number of data series.
-#    * Stripcharts, a kind of XY-plots where the horizontal axis is adjusted 
-#      automatically. The result is a kind of sliding window on the data 
-#      series.
-#    * Polar plots, where the coordinates are polar instead of cartesian.
-#    * Isometric plots, where the scale of the coordinates in the two 
-#      directions is always the same, i.e. a circle in world coordinates 
-#      appears as a circle on the screen.
-#      You can zoom in and out, as well as pan with these plots (Note: this 
-#      works best if no axes are drawn, the zooming and panning routines do 
-#      not distinguish the axes), using the mouse buttons with the control 
-#      key and the arrow keys with the control key.
-#    * Piecharts, with automatic scaling to indicate the proportions.
-#    * Barcharts, with either vertical or horizontal bars, stacked bars or 
-#      bars side by side.
-#    * Timecharts, where bars indicate a time period and milestones or other 
-#      important moments in time are represented by triangles.
-#    * 3D plots (both for displaying surfaces and 3D bars)
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('Plotchart', '0.9')
-# TkPackage.require('Plotchart', '1.1')
-TkPackage.require('Plotchart')
-
-module Tk
-  module Tcllib
-    module Plotchart
-      PACKAGE_NAME = 'Plotchart'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('Plotchart')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-module Tk::Tcllib::Plotchart
-  extend TkCore
-  ############################
-  def self.view_port(w, *args) # args := pxmin, pymin, pxmax, pymax
-    tk_call_without_enc('::Plotchart::viewPort', w.path, *(args.flatten))
-  end
-
-  def self.world_coordinates(w, *args) # args := xmin, ymin, xmax, ymax
-    tk_call_without_enc('::Plotchart::worldCoordinates', 
-                        w.path, *(args.flatten))
-  end
-
-  def self.world_3D_coordinates(w, *args) 
-    # args := xmin, ymin, zmin, xmax, ymax, zmax
-    tk_call_without_enc('::Plotchart::world3DCoordinates', 
-                        w.path, *(args.flatten))
-  end
-
-  def self.coords_to_pixel(w, x, y)
-    list(tk_call_without_enc('::Plotchart::coordsToPixel', w.path, x, y))
-  end
-
-  def self.coords_3D_to_pixel(w, x, y, z)
-    list(tk_call_without_enc('::Plotchart::coords3DToPixel', w.path, x, y, z))
-  end
-
-  def self.polar_coordinates(w, radmax)
-    tk_call_without_enc('::Plotchart::polarCoordinates', w.path, radmax)
-  end
-
-  def self.polar_to_pixel(w, rad, phi)
-    list(tk_call_without_enc('::Plotchart::polarToPixel', w.path, rad, phi))
-  end
-
-  def self.pixel_to_coords(w, x, y)
-    list(tk_call_without_enc('::Plotchart::coordsToPixel', w.path, x, y))
-  end
-
-  def self.determine_scale(w, xmax, ymax)
-    tk_call_without_enc('::Plotchart::determineScale', w.path, xmax, ymax)
-  end
-
-  def self.set_zoom_pan(w)
-    tk_call_without_enc('::Plotchart::setZoomPan', w.path)
-  end
-
-  ############################
-  module ChartMethod
-    include TkCore
-
-    def title(str)
-      tk_call_without_enc(@chart, 'title', _get_eval_enc_str(str))
-      self
-    end
-
-    def save_plot(filename)
-      tk_call_without_enc(@chart, 'saveplot', filename)
-      self
-    end
-
-    def xtext(str)
-      tk_call_without_enc(@chart, 'xtext', _get_eval_enc_str(str))
-      self
-    end
-
-    def ytext(str)
-      tk_call_without_enc(@chart, 'ytext', _get_eval_enc_str(str))
-      self
-    end
-
-    def xconfig(key, value=None)
-      if key.kind_of?(Hash)
-        tk_call_without_enc(@chart, 'xconfig', *hash_kv(key, true))
-      else
-        tk_call_without_enc(@chart, 'xconfig', 
-                            "-#{key}", _get_eval_enc_str(value))
-      end
-      self
-    end
-
-    def yconfig(key, value=None)
-      if key.kind_of?(Hash)
-        tk_call_without_enc(@chart, 'yconfig', *hash_kv(key, true))
-      else
-        tk_call_without_enc(@chart, 'yconfig', 
-                            "-#{key}", _get_eval_enc_str(value))
-      end
-      self
-    end
-
-    ############################
-    def view_port(*args) # args := pxmin, pymin, pxmax, pymax
-      tk_call_without_enc('::Plotchart::viewPort', @path, *(args.flatten))
-      self
-    end
-
-    def world_coordinates(*args) # args := xmin, ymin, xmax, ymax
-      tk_call_without_enc('::Plotchart::worldCoordinates', 
-                          @path, *(args.flatten))
-      self
-    end
-
-    def world_3D_coordinates(*args) 
-      # args := xmin, ymin, zmin, xmax, ymax, zmax
-      tk_call_without_enc('::Plotchart::world3DCoordinates', 
-                          @path, *(args.flatten))
-      self
-    end
-
-    def coords_to_pixel(x, y)
-      list(tk_call_without_enc('::Plotchart::coordsToPixel', @path, x, y))
-    end
-
-    def coords_3D_to_pixel(x, y, z)
-      list(tk_call_without_enc('::Plotchart::coords3DToPixel', @path, x, y, z))
-    end
-
-    def polar_coordinates(radmax)
-      tk_call_without_enc('::Plotchart::polarCoordinates', @path, radmax)
-      self
-    end
-
-    def polar_to_pixel(rad, phi)
-      list(tk_call_without_enc('::Plotchart::polarToPixel', @path, rad, phi))
-    end
-
-    def pixel_to_coords(x, y)
-      list(tk_call_without_enc('::Plotchart::coordsToPixel', @path, x, y))
-    end
-
-    def determine_scale(xmax, ymax)
-      tk_call_without_enc('::Plotchart::determineScale', @path, xmax, ymax)
-      self
-    end
-
-    def set_zoom_pan()
-      tk_call_without_enc('::Plotchart::setZoomPan', @path)
-      self
-    end
-  end
-
-  ############################
-  class XYPlot < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createXYPlot'.freeze
-    ].freeze
-
-    def initialize(*args) # args := ([parent,] xaxis, yaxis [, keys])
-                          # xaxis := Array of [minimum, maximum, stepsize]
-                          # yaxis := Array of [minimum, maximum, stepsize]
-      if args[0].kind_of?(Array)
-        @xaxis = args.shift
-        @yaxis = args.shift
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @xaxis = args.shift
-        @yaxis = args.shift
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          array2tk_list(@xaxis), array2tk_list(@yaxis))
-    end
-    private :_create_chart
-
-    def __destroy_hook__
-      Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
-    end
-
-    def plot(series, x, y)
-      tk_call_without_enc(@chart, 'plot', _get_eval_enc_str(series), x, y)
-      self
-    end
-
-    def contourlines(xcrd, ycrd, vals, clss=None)
-      xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
-      ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
-      vals = array2tk_list(vals) if vals.kind_of?(Array)
-      clss = array2tk_list(clss) if clss.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'contourlines', xcrd, ycrd, vals, clss)
-      self
-    end
-
-    def contourfill(xcrd, ycrd, vals, klasses=None)
-      xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
-      ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
-      vals = array2tk_list(vals) if vals.kind_of?(Array)
-      clss = array2tk_list(clss) if clss.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'contourfill', xcrd, ycrd, vals, clss)
-      self
-    end
-
-    def contourbox(xcrd, ycrd, vals, klasses=None)
-      xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
-      ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
-      vals = array2tk_list(vals) if vals.kind_of?(Array)
-      clss = array2tk_list(clss) if clss.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'contourbox', xcrd, ycrd, vals, clss)
-      self
-    end
-
-    def color_map(colors)
-      colors = array2tk_list(colors) if colors.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'colorMap', colors)
-      self
-    end
-
-    def grid_cells(xcrd, ycrd)
-      xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
-      ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'grid', xcrd, ycrd)
-      self
-    end
-
-    def dataconfig(series, key, value=None)
-      if key.kind_of?(Hash)
-        tk_call_without_enc(@chart, 'dataconfig', series, *hash_kv(key, true))
-      else
-        tk_call_without_enc(@chart, 'dataconfig', series, 
-                            "-#{key}", _get_eval_enc_str(value))
-      end
-    end
-  end
-
-  ############################
-  class Stripchart < XYPlot
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createStripchart'.freeze
-    ].freeze
-  end
-
-  ############################
-  class PolarPlot < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createPolarplot'.freeze
-    ].freeze
-
-    def initialize(*args) # args := ([parent,] radius_data [, keys])
-                          # radius_data := Array of [maximum_radius, stepsize]
-      if args[0].kind_of?(Array)
-        @radius_data = args.shift
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @radius_data = args.shift
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          array2tk_list(@radius_data))
-    end
-    private :_create_chart
-
-    def __destroy_hook__
-      Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
-    end
-
-    def plot(series, radius, angle)
-      tk_call_without_enc(@chart, 'plot', _get_eval_enc_str(series), 
-                          radius, angle)
-      self
-    end
-
-    def dataconfig(series, key, value=None)
-      if key.kind_of?(Hash)
-        tk_call_without_enc(@chart, 'dataconfig', series, *hash_kv(key, true))
-      else
-        tk_call_without_enc(@chart, 'dataconfig', series, 
-                            "-#{key}", _get_eval_enc_str(value))
-      end
-    end
-  end
-  Polarplot = PolarPlot
-
-  ############################
-  class IsometricPlot < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createIsometricPlot'.freeze
-    ].freeze
-
-    def initialize(*args) # args := ([parent,] xaxis, yaxis, [, step] [, keys])
-                          # xaxis := Array of [minimum, maximum]
-                          # yaxis := Array of [minimum, maximum]
-                          # step := Float of stepsize | "noaxes" | :noaxes
-      if args[0].kind_of?(Array)
-        @xaxis = args.shift
-        @yaxis = args.shift
-
-        if args[0].kind_of?(Hash)
-          @stepsize = :noaxes
-        else
-          @stepsize = args.shift
-        end
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @xaxis = args.shift
-        @yaxis = args.shift
-
-        if args[0].kind_of?(Hash)
-          @stepsize = :noaxes
-        else
-          @stepsize = args.shift
-        end
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          array2tk_list(@xaxis), array2tk_list(@yaxis), 
-                          @stepsize)
-    end
-    private :_create_chart
-
-    def plot(type, *args)
-      self.__send__("plot_#{type.to_s.tr('-', '_')}", *args)
-    end
-
-    def plot_rectangle(*args) # args := x1, y1, x2, y2, color
-      tk_call_without_enc(@chart, 'plot', 'rectangle', *(args.flatten))
-      self
-    end
-
-    def plot_filled_rectangle(*args) # args := x1, y1, x2, y2, color
-      tk_call_without_enc(@chart, 'plot', 'filled-rectangle', *(args.flatten))
-      self
-    end
-
-    def plot_circle(*args) # args := xc, yc, radius, color
-      tk_call_without_enc(@chart, 'plot', 'circle', *(args.flatten))
-      self
-    end
-
-    def plot_filled_circle(*args) # args := xc, yc, radius, color
-      tk_call_without_enc(@chart, 'plot', 'filled-circle', *(args.flatten))
-      self
-    end
-  end
-  Isometricplot = IsometricPlot
-
-  ############################
-  class Plot3D < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::create3DPlot'.freeze
-    ].freeze
-
-    def initialize(*args) # args := ([parent,] xaxis, yaxis, zaxis [, keys])
-                          # xaxis := Array of [minimum, maximum, stepsize]
-                          # yaxis := Array of [minimum, maximum, stepsize]
-                          # zaxis := Array of [minimum, maximum, stepsize]
-      if args[0].kind_of?(Array)
-        @xaxis = args.shift
-        @yaxis = args.shift
-        @zaxis = args.shift
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @xaxis = args.shift
-        @yaxis = args.shift
-        @zaxis = args.shift
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          array2tk_list(@xaxis), 
-                          array2tk_list(@yaxis), 
-                          array2tk_list(@zaxis))
-    end
-    private :_create_chart
-
-    def plot_function(cmd=Proc.new)
-      Tk.ip_eval("proc #{@path}_#{@chart} {x y} {#{install_cmd(cmd)} $x $y}")
-      tk_call_without_enc(@chart, 'plotfunc', "#{@path}_#{@chart}")
-      self
-    end
-
-    def plot_funcont(conts, cmd=Proc.new)
-      conts = array2tk_list(conts) if conts.kind_of?(Array)
-      Tk.ip_eval("proc #{@path}_#{@chart} {x y} {#{install_cmd(cmd)} $x $y}")
-      tk_call_without_enc(@chart, 'plotfuncont', "#{@path}_#{@chart}", conts)
-      self
-    end
-
-    def grid_size(nxcells, nycells)
-      tk_call_without_enc(@chart, 'gridsize', nxcells, nycells)
-      self
-    end
-
-    def plot_data(dat)
-      # dat has to be provided as a 2 level array. 
-      # 1st level contains rows, drawn in y-direction, 
-      # and each row is an array whose elements are drawn in x-direction, 
-      # for the columns. 
-      tk_call_without_enc(@chart, 'plotdata', dat)
-      self
-    end
-
-    def colour(fill, border)
-      # configure the colours to use for polygon borders and inner area
-      tk_call_without_enc(@chart, 'colour', fill, border)
-      self
-    end
-    alias colours colour
-    alias colors  colour
-    alias color   colour
-  end
-
-  ############################
-  class Piechart < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createPiechart'.freeze
-    ].freeze
-
-    def initialize(*args) # args := ([parent] [, keys])
-      if args[0].kind_of?(TkCanvas)
-        parent = args.shift
-        @path = parent.path
-      else
-        super(*args) # create canvas widget
-      end
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path)
-    end
-    private :_create_chart
-
-    def plot(*dat)  # argument is a list of [label, value]
-      tk_call_without_enc(@chart, 'plot', dat.flatten)
-      self
-    end
-  end
-
-  ############################
-  class Barchart < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createBarchart'.freeze
-    ].freeze
-
-    def initialize(*args) 
-      # args := ([parent,] xlabels, ylabels [, series] [, keys])
-      # xlabels, ylabels := labels | axis ( depend on normal or horizontal )
-      # labels := Array of [label, label, ...]
-      #   (It determines the number of bars that will be plotted per series.)
-      # axis := Array of [minimum, maximum, stepsize]
-      # series := Integer number of data series | 'stacked' | :stacked
-      if args[0].kind_of?(Array)
-        @xlabels = args.shift
-        @ylabels  = args.shift
-
-        if args[0].kind_of?(Hash)
-          @series_size = :stacked
-        else
-          @series_size  = args.shift
-        end
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @xlabels = args.shift
-        @ylabels = args.shift
-
-        if args[0].kind_of?(Hash)
-          @series_size = :stacked
-        else
-          @series_size  = args.shift
-        end
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          array2tk_list(@xlabels), array2tk_list(@ylabels), 
-                          @series_size)
-    end
-    private :_create_chart
-
-    def __destroy_hook__
-      Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
-    end
-
-    def plot(series, dat, col=None)
-      tk_call_without_enc(@chart, 'plot', series, dat, col)
-      self
-    end
-
-    def colours(*cols)
-      # set the colours to be used
-      tk_call_without_enc(@chart, 'colours', *cols)
-      self
-    end
-    alias colour colours
-    alias colors colours
-    alias color  colours
-  end
-
-  ############################
-  class HorizontalBarchart < Barchart
-    TkCommandNames = [
-      'canvas'.freeze, 
-      '::Plotchart::createHorizontalBarchart'.freeze
-    ].freeze
-  end
-
-  ############################
-  class Timechart < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze,
-      '::Plotchart::createTimechart'.freeze
-    ].freeze
-
-    def initialize(*args)
-      # args := ([parent,] time_begin, time_end, items [, keys])
-      # time_begin := String of time format (e.g. "1 january 2004")
-      # time_end   := String of time format (e.g. "1 january 2004")
-      # items := Expected/maximum number of items
-      #          ( This determines the vertical spacing. )
-      if args[0].kind_of?(String)
-        @time_begin = args.shift
-        @time_end   = args.shift
-        @items      = args.shift
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @time_begin = args.shift
-        @time_end   = args.shift
-        @items      = args.shift
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          @time_begin, @time_end, @items)
-    end
-    private :_create_chart
-
-    def period(txt, time_begin, time_end, col=None)
-      tk_call_without_enc(@chart, 'period', txt, time_begin, time_end, col)
-      self
-    end
-
-    def milestone(txt, time, col=None)
-      tk_call_without_enc(@chart, 'milestone', txt, time, col)
-      self
-    end
-
-    def vertline(txt, time)
-      tk_call_without_enc(@chart, 'vertline', txt, time)
-      self
-    end
-  end
-
-  ############################
-  class Gnattchart < TkCanvas
-    include ChartMethod
-
-    TkCommandNames = [
-      'canvas'.freeze,
-      '::Plotchart::createGnattchart'.freeze
-    ].freeze
-
-    def initialize(*args)
-      # args := ([parent,] time_begin, time_end, items [, text_width] [, keys])
-      # time_begin := String of time format (e.g. "1 january 2004")
-      # time_end   := String of time format (e.g. "1 january 2004")
-      # items := Expected/maximum number of items
-      #          ( This determines the vertical spacing. )
-      if args[0].kind_of?(String)
-        @time_begin = args.shift
-        @time_end   = args.shift
-        @items      = args.shift
-
-        if args[0].kind_of?(Fixnum)
-          @text_width = args.shift
-        else
-          @text_width = None
-        end
-
-        super(*args) # create canvas widget
-      else
-        parent = args.shift
-
-        @time_begin = args.shift
-        @time_end   = args.shift
-        @items      = args.shift
-
-        if args[0].kind_of?(Fixnum)
-          @text_width = args.shift
-        else
-          @text_width = None
-        end
-
-        if parent.kind_of?(TkCanvas)
-          @path = parent.path
-        else
-          super(parent, *args) # create canvas widget
-        end
-      end
-
-      @chart = _create_chart
-    end
-
-    def _create_chart
-      p self.class::TkCommandNames[1] if $DEBUG
-      tk_call_without_enc(self.class::TkCommandNames[1], @path, 
-                          @time_begin, @time_end, @items, @text_width)
-    end
-    private :_create_chart
-
-    def task(txt, time_begin, time_end, completed=0.0)
-      list(tk_call_without_enc(@chart, 'task', txt, time_begin, time_end, 
-                               completed)).collect!{|id|
-        TkcItem.id2obj(self, id)
-      }
-    end
-
-    def milestone(txt, time, col=None)
-      tk_call_without_enc(@chart, 'milestone', txt, time, col)
-      self
-    end
-
-    def vertline(txt, time)
-      tk_call_without_enc(@chart, 'vertline', txt, time)
-      self
-    end
-
-    def connect(from_task, to_task)
-      from_task = array2tk_list(from_task) if from_task.kind_of?(Array)
-      to_task   = array2tk_list(to_task)   if to_task.kind_of?(Array)
-
-      tk_call_without_enc(@chart, 'connect', from_task, to_task)
-      self
-    end
-
-    def summary(txt, tasks)
-      tasks = array2tk_list(tasks) if tasks.kind_of?(Array)
-      tk_call_without_enc(@chart, 'summary', tasks)
-      self
-    end
-
-    def color_of_part(keyword, newcolor)
-      tk_call_without_enc(@chart, 'color', keyword, newcolor)
-      self
-    end
-
-    def font_of_part(keyword, newfont)
-      tk_call_without_enc(@chart, 'font', keyword, newfont)
-      self
-    end
-  end
-
-  ############################
-  class PlotSeries < TkObject
-    SeriesID_TBL = TkCore::INTERP.create_table
-    Series_ID = ['series'.freeze, '00000'.taint].freeze
-    TkCore::INTERP.init_ip_env{ SeriesID_TBL.clear }
-
-    def self.id2obj(chart, id)
-      path = chart.path
-      return id unless SeriesID_TBL[path]
-      SeriesID_TBL[path][id]? SeriesID_TBL[path][id]: id
-    end
-
-    def initialize(chart, keys=nil)
-      @parent = @chart_obj = chart
-      @ppath = @chart_obj.path
-      @path = @series = @id = Series_ID.join(TkCore::INTERP._ip_id_)
-      # SeriesID_TBL[@id] = self
-      SeriesID_TBL[@ppath] = {} unless SeriesID_TBL[@ppath]
-      SeriesID_TBL[@ppath][@id] = self
-      Series_ID[1].succ!
-      dataconfig(keys) if keys.kind_of?(Hash)
-    end
-
-    def plot(*args)
-      @chart_obj.plot(@series, *args)
-    end
-
-    def dataconfig(key, value=None)
-      @chart_obj.dataconfig(@series, key, value)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ruler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ruler.rb
deleted file mode 100644
index 88ffb2c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/ruler.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-#  tkextlib/tcllib/ruler.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * ruler widget
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::ruler', '1.0')
-TkPackage.require('widget::ruler')
-
-module Tk::Tcllib
-  module Widget
-    class Ruler < TkWindow
-      PACKAGE_NAME = 'widget::ruler'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::ruler')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-class Tk::Tcllib::Widget::Ruler
-  TkCommandNames = ['::widget::ruler'.freeze].freeze
-
-  def __boolval_optkeys
-    ['showvalues', 'outline', 'grid']
-  end
-  private :__boolval_optkeys
-
-  def __numlistval_optkeys
-    ['interval', 'sizes']
-  end
-  private :__numlistval_optkeys
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def redraw
-    tk_send('redraw')
-    self
-  end
-
-  def shade(org, dest, frac)
-    tk_send('shade', org, dest, frac)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/screenruler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/screenruler.rb
deleted file mode 100644
index 1b4067e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/screenruler.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-#  tkextlib/tcllib/screenruler.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * screenruler dialog
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::screenruler', '1.1')
-TkPackage.require('widget::screenruler')
-
-module Tk::Tcllib
-  module Widget
-    class ScreenRuler < TkWindow
-      PACKAGE_NAME = 'widget::ruler'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::screenruler')
-        rescue
-          ''
-        end
-      end
-    end
-    Screenruler = ScreenRuler
-  end
-end
-
-class Tk::Tcllib::Widget::ScreenRuler
-  TkCommandNames = ['::widget::screenruler'.freeze].freeze
-
-  def __boolval_optkeys
-    ['topmost', 'reflect']
-  end
-  private :__boolval_optkeys
-
-  def __numlistval_optkeys
-    ['alpha']
-  end
-  private :__numlistval_optkeys
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def display
-    tk_send('display')
-    self
-  end
-  alias show display
-
-  def hide
-    tk_send('hide')
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/scrollwin.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/scrollwin.rb
deleted file mode 100644
index 717728e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/scrollwin.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#  tkextlib/tcllib/scrollwin.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Scrolled widget
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::scrolledwindow', '1.0')
-TkPackage.require('widget::scrolledwindow')
-
-module Tk::Tcllib
-  module Widget
-    class ScrolledWindow < TkWindow
-      PACKAGE_NAME = 'widget::scrolledwindow'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::scrolledwindow')
-        rescue
-          ''
-        end
-      end
-    end
-    Scrolledwindow = ScrolledWindow
-  end
-end
-
-class Tk::Tcllib::Widget::ScrolledWindow
-  TkCommandNames = ['::widget::scrolledwindow'.freeze].freeze
-
-  def __numlistval_optkeys
-    ['ipad']
-  end
-  private :__numlistval_optkeys
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def get_frame
-    window(tk_send('getframe'))
-  end
-
-  def set_widget(widget)
-    tk_send('setwidget', widget)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/style.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/style.rb
deleted file mode 100644
index dac6916..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/style.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#  tkextlib/tcllib/style.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * select and use some 'style' of option (resource) DB
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-module Tk::Tcllib
-  module Style
-    PACKAGE_NAME = 'style'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('style')
-      rescue
-        ''
-      end
-    end
-
-    def self.not_available
-      fail RuntimeError, "'tkextlib/tcllib/style' extension is not available on your current environment."
-    end
-
-    def self.names
-      Tk::Tcllib::Style.not_available
-    end
-
-    def self.use(style)
-      Tk::Tcllib::Style.not_available
-    end
-  end
-end
-
-# TkPackage.require('style', '0.1')
-# TkPackage.require('style', '0.3')
-TkPackage.require('style')
-
-module Tk::Tcllib
-  class << Style
-    undef not_available
-  end
-
-  module Style
-    extend TkCore
-
-    def self.names
-      tk_split_simplelist(tk_call('style::names'))
-    end
-
-    def self.use(style)
-      tk_call('style::use', style)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/superframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/superframe.rb
deleted file mode 100644
index 35da37e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/superframe.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-#  tkextlib/tcllib/superframe.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Superframe widget - enhanced labelframe widget
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget::superframe', '1.0')
-TkPackage.require('widget::superframe')
-
-module Tk::Tcllib
-  module Widget
-    class SuperFrame < TkWindow
-      PACKAGE_NAME = 'widget::superframe'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('widget::superframe')
-        rescue
-          ''
-        end
-      end
-    end
-    Superframe = SuperlFrame
-  end
-end
-
-class Tk::Tcllib::Widget::SuperFrame
-  TkCommandNames = ['::widget::superframe'.freeze].freeze
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def labelwidget
-    window(tk_send('labelwidget'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/swaplist.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/swaplist.rb
deleted file mode 100644
index 97de0a2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/swaplist.rb
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-#  tkextlib/tcllib/swaplist.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * A dialog which allows a user to move options between two lists
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('swaplist', '0.1')
-TkPackage.require('swaplist')
-
-module Tk::Tcllib
-  class Swaplist_Dialog < TkWindow
-    PACKAGE_NAME = 'swaplist'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('swaplist')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-
-class Tk::Tcllib::Swaplist_Dialog
-  TkCommandNames = ['::swaplist::swaplist'.freeze].freeze
-  WidgetClassName = 'Swaplist'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.show(*args)
-    dialog = self.new(*args)
-    dialog.show
-    [dialog.status, dialog.value]
-  end
-  def self.display(*args)
-    self.show(*args)
-  end
-
-  def initialize(*args) 
-    # args = (parent=nil, complete_list=[], selected_list=[], keys=nil)
-    keys = args.pop
-    if keys.kind_of?(Hash)
-      @selected_list = args.pop
-      @complete_list = args.pop
-      @keys = _symbolkey2str(keys)
-      args.push(keys)
-    else
-      @selected_list = keys
-      @complete_list = args.pop
-      @keys = {}
-    end
-
-    @selected_list = [] unless @selected_list
-    @complete_list = [] unless @complete_list
-
-    @variable = TkVariable.new
-    @status = nil
-
-    super(*args)
-  end
-
-  def create_self(keys)
-    # dummy
-  end
-  private :create_self
-
-  def show
-    @variable.value = ''
-    @status = bool(tk_call(self.class::TkCommandNames[0], 
-                           @path, @variable, 
-                           @complete_list, @selected_list, 
-                           *hash_kv(@keys)))
-  end
-  alias display show
-
-  def status
-    @status
-  end
-
-  def value
-    @variable.list
-  end
-  alias selected value
-
-  def cget(slot)
-    slot = slot.to_s
-    if slot == 'complete_list'
-      @complete_list
-    elsif slot == 'selected_list'
-      @selected_list
-    else
-      @keys[slot]
-    end
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot.each{|k, v| configure(k, v)}
-    else
-      slot = slot.to_s
-      value = _symbolkey2str(value) if value.kind_of?(Hash)
-      if value && value != None
-        if slot == 'complete_list'
-          @complete_list = value
-        elsif slot == 'selected_list'
-          @selected_list = value
-        else
-          @keys[slot] = value
-        end
-      else
-        if slot == 'complete_list'
-          @complete_list = []
-        elsif slot == 'selected_list'
-          @selected_list = []
-        else
-          @keys.delete(slot)
-        end
-      end
-    end
-    self
-  end
-
-  def configinfo(slot = nil)
-    if slot
-      slot = slot.to_s
-      if slot == 'complete_list'
-        [ slot, nil, nil, nil, @complete_list ]
-      elsif slot == 'selected_list'
-        [ slot, nil, nil, nil, @selected_list ]
-      else
-        [ slot, nil, nil, nil, @keys[slot] ]
-      end
-    else
-      @keys.collect{|k, v| [ k, nil, nil, nil, v ] }           \
-      << [ 'complete_list', nil, nil, nil, @complete_list ]   \
-      << [ 'selected_list', nil, nil, nil, @selected_list ]
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist.rb
deleted file mode 100644
index efeb8fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-#  tkextlib/tcllib/tablelist.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * A multi-column listbox
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# check Tile extension :: If already loaded, use tablelist_tile.
-unless defined? Tk::Tcllib::Tablelist_usingTile
-  Tk::Tcllib::Tablelist_usingTile = TkPackage.provide('tile')
-end
-
-if Tk::Tcllib::Tablelist_usingTile
-  # with Tile
-  require 'tkextlib/tcllib/tablelist_tile'
-
-else
-  # without Tile
-
-  # TkPackage.require('Tablelist', '4.2')
-  TkPackage.require('Tablelist')
-
-  require 'tkextlib/tcllib/tablelist_core'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_core.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_core.rb
deleted file mode 100644
index a939a58..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_core.rb
+++ /dev/null
@@ -1,770 +0,0 @@
-#
-#  tkextlib/tcllib/tablelist_core.rb
-#
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * This file is required by 'tkextlib/tcllib/tablelist.rb' or 
-#     'tkextlib/tcllib/tablelist_tile.rb'.
-#
-
-module Tk
-  module Tcllib
-    class Tablelist < TkWindow
-      if Tk::Tcllib::Tablelist_usingTile
-        PACKAGE_NAME = 'Tablelist_tile'.freeze
-      else
-        PACKAGE_NAME = 'Tablelist'.freeze
-      end
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require(self.package_name)
-        rescue
-          ''
-        end
-      end
-
-      def self.use_Tile?
-        (Tk::Tcllib::Tablelist_usingTile)? true: false
-      end
-    end
-    TableList = Tablelist
-  end
-end
-
-module Tk::Tcllib::TablelistItemConfig
-  include TkItemConfigMethod
-
-  def _to_idx(idx)
-    if idx.kind_of?(Array)
-      idx.collect{|elem| _get_eval_string(elem)}.join(',')
-    else
-      idx
-    end
-  end
-  def _from_idx(idx)
-    return idx unless idx.kind_of?(String)
-
-    if idx[0] == ?@  # '@x,y'
-      idx
-    elsif idx =~ /([^,]+),([^,]+)/
-      row = $1, column = $2
-      [num_or_str(row), num_or_str(column)]
-    else 
-      num_or_str(idx)
-    end
-  end
-  private :_to_idx, :_from_idx
-
-  def __item_cget_cmd(mixed_id)
-    [self.path, mixed_id[0] + 'cget', _to_idx(mixed_id[1])]
-  end
-  def __item_config_cmd(mixed_id)
-    [self.path, mixed_id[0] + 'configure', _to_idx(mixed_id[1])]
-  end
-
-  def cell_cget(tagOrId, option)
-    itemcget(['cell', tagOrId], option)
-  end
-  def cell_configure(tagOrId, slot, value=None)
-    itemconfigure(['cell', tagOrId], slot, value)
-  end
-  def cell_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['cell', tagOrId], slot)
-  end
-  def current_cell_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['cell', tagOrId], slot)
-  end
-  alias cellcget cell_cget
-  alias cellconfigure cell_configure
-  alias cellconfiginfo cell_configinfo
-  alias current_cellconfiginfo current_cell_configinfo
-
-  def column_cget(tagOrId, option)
-    itemcget(['column', tagOrId], option)
-  end
-  def column_configure(tagOrId, slot, value=None)
-    itemconfigure(['column', tagOrId], slot, value)
-  end
-  def column_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['column', tagOrId], slot)
-  end
-  def current_column_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['column', tagOrId], slot)
-  end
-  alias columncget column_cget
-  alias columnconfigure column_configure
-  alias columnconfiginfo column_configinfo
-  alias current_columnconfiginfo current_column_configinfo
-
-  def row_cget(tagOrId, option)
-    itemcget(['row', tagOrId], option)
-  end
-  def row_configure(tagOrId, slot, value=None)
-    itemconfigure(['row', tagOrId], slot, value)
-  end
-  def row_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['row', tagOrId], slot)
-  end
-  def current_row_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['row', tagOrId], slot)
-  end
-  alias rowcget row_cget
-  alias rowconfigure row_configure
-  alias rowconfiginfo row_configinfo
-  alias current_rowconfiginfo current_row_configinfo
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-class Tk::Tcllib::Tablelist
-  include Tk::Tcllib::TablelistItemConfig
-  include Scrollable
-
-  TkCommandNames = ['::tablelist::tablelist'.freeze].freeze
-  WidgetClassName = 'Tablelist'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  ##########################
-
-  def __numval_optkeys
-    super() + ['titlecolumns']
-  end
-  private :__numval_optkeys
-
-  def __strval_optkeys
-    super() + ['snipstring']
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    super() + [
-      'forceeditendcommand', 'movablecolumns', 'movablerows', 
-      'protecttitlecolumns', 'resizablecolumns', 
-      'showarrow', 'showlabels', 'showseparators'
-    ]
-  end
-  private :__boolval_optkeys
-
-  def __listval_optkeys
-    super() + ['columns']
-  end
-  private :__listval_optkeys
-
-  def __tkvariable_optkeys
-    super() + ['listvariable']
-  end
-  private :__tkvariable_optkeys
-
-  def __val2ruby_optkeys  # { key=>proc, ... }
-    # The method is used to convert a opt-value to a ruby's object.
-    # When get the value of the option "key", "proc.call(value)" is called.
-    super().update('stretch'=>proc{|v| (v == 'all')? v: simplelist(v)})
-  end
-  private :__val2ruby_optkeys
-
-  def __ruby2val_optkeys  # { key=>proc, ... }
-    # The method is used to convert a ruby's object to a opt-value.
-    # When set the value of the option "key", "proc.call(value)" is called.
-    # That is, "-#{key} #{proc.call(value)}".
-    super().update('stretch'=>proc{|v| 
-                     (v.kind_of?(Array))? v.collect{|e| _to_idx(e)}: v
-                   })
-  end
-  private :__ruby2val_optkeys
-
-  def __font_optkeys
-    super() + ['labelfont']
-  end
-  private :__font_optkeys
-
-  ##########################
-
-  def __item_strval_optkeys(id)
-    if id[0] == 'cell'
-      super(id) + ['title']
-    else
-      super(id) - ['text'] + ['title']
-    end
-  end
-  private :__item_strval_optkeys
-
-  def __item_boolval_optkeys(id)
-    super(id) + [
-      'editable', 'hide', 'resizable', 'showarrow', 'stretchable', 
-    ]
-  end
-  private :__item_boolval_optkeys
-
-  def __item_listval_optkeys(id)
-    if id[0] == 'cell'
-      super(id)
-    else
-      super(id) + ['text']
-    end
-  end
-  private :__item_listval_optkeys
-
-  def __item_font_optkeys(id)
-    # maybe need to override
-    super(id) + ['labelfont']
-  end
-  private :__item_font_optkeys
-
-  ##########################
-
-  def activate(index)
-    tk_send('activate', _to_idx(index))
-    self
-  end
-
-  def activate_cell(index)
-    tk_send('activatecell', _to_idx(index))
-    self
-  end
-  alias activatecell activate_cell 
-
-  def get_attrib(name=nil)
-    if name && name != None
-      tk_send('attrib', name)
-    else
-      ret = []
-      lst = simplelist(tk_send('attrib'))
-      until lst.empty?
-        ret << ( [lst.shift] << lst.shift )
-      end
-      ret
-    end
-  end
-  def set_attrib(*args)
-    tk_send('attrib', *(args.flatten))
-    self
-  end
-
-  def bbox(index)
-    list(tk_send('bbox', _to_idx(index)))
-  end
-
-  def bodypath
-    window(tk_send('bodypath'))
-  end
-
-  def bodytag
-    TkBindTag.new_by_name(tk_send('bodytag'))
-  end
-
-  def cancel_editing 
-    tk_send('cancelediting')
-    self
-  end
-  alias cancelediting cancel_editing
-
-  def cellindex(idx)
-    _from_idx(tk_send('cellindex', _to_idx(idx)))
-  end
-
-  def cellselection_anchor(idx)
-    tk_send('cellselection', 'anchor', _to_idx(idx))
-    self
-  end
-
-  def cellselection_clear(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('cellselection', 'clear', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('cellselection', 'clear', first, last)
-    end
-    self
-  end
-
-  def cellselection_includes(idx)
-    bool(tk_send('cellselection', 'includes', _to_idx(idx)))
-  end
-
-  def cellselection_set(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('cellselection', 'set', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('cellselection', 'set', first, last)
-    end
-    self
-  end
-
-  def columncount
-    number(tk_send('columncount'))
-  end
-
-  def columnindex(idx)
-    number(tk_send('columnindex', _to_idx(idx)))
-  end
-
-  def containing(y)
-    idx = num_or_str(tk_send('containing', y))
-    (idx.kind_of?(Fixnum) && idx < 0)?  nil: idx
-  end
-
-  def containing_cell(x, y)
-    idx = _from_idx(tk_send('containingcell', x, y))
-    if idx.kind_of?(Array)
-      [
-        ((idx[0].kind_of?(Fixnum) && idx[0] < 0)?  nil: idx[0]), 
-        ((idx[1].kind_of?(Fixnum) && idx[1] < 0)?  nil: idx[1])
-      ]
-    else
-      idx
-    end
-  end
-  alias containingcell containing_cell
-
-  def containing_column(x)
-    idx = num_or_str(tk_send('containingcolumn', x))
-    (idx.kind_of?(Fixnum) && idx < 0)?  nil: idx
-  end
-  alias containingcolumn containing_column
-
-  def curcellselection
-    simplelist(tk_send('curcellselection')).collect!{|idx| _from_idx(idx)}
-  end
-
-  def curselection
-    list(tk_send('curselection'))
-  end
-
-  def delete_items(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('delete', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('delete', first, last)
-    end
-    self
-  end
-  alias delete delete_items
-  alias deleteitems delete_items
-
-  def delete_columns(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('deletecolumns', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('deletecolumns', first, last)
-    end
-    self
-  end
-  alias deletecolumns delete_columns
-
-  def edit_cell(idx)
-    tk_send('editcell', _to_idx(idx))
-    self
-  end
-  alias editcell edit_cell
-
-  def editwinpath
-    window(tk_send('editwinpath'))
-  end
-
-  def entrypath
-    window(tk_send('entrypath'))
-  end
-
-  def fill_column(idx, txt)
-    tk_send('fillcolumn', _to_idx(idx), txt)
-    self
-  end
-  alias fillcolumn fill_column
-
-  def finish_editing
-    tk_send('finishediting')
-    self
-  end
-  alias finishediting finish_editing
-
-  def get(first, last=nil)
-    if first.kind_of?(Array)
-      simplelist(tk_send('get', first.collect{|idx| _to_idx(idx)})).collect!{|elem| simplelist(elem) }
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      simplelist(tk_send('get', first, last))
-    end
-  end
-
-  def get_cells(first, last=nil)
-    if first.kind_of?(Array)
-      simplelist(tk_send('getcells', first.collect{|idx| _to_idx(idx)})).collect!{|elem| simplelist(elem) }
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      simplelist(tk_send('getcells', first, last))
-    end
-  end
-  alias getcells get_cells
-
-  def get_columns(first, last=nil)
-    if first.kind_of?(Array)
-      simplelist(tk_send('getcolumns', first.collect{|idx| _to_idx(idx)})).collect!{|elem| simplelist(elem) }
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      simplelist(tk_send('getcolumns', first, last))
-    end
-  end
-  alias getcolumns get_columns
-
-  def get_keys(first, last=nil)
-    if first.kind_of?(Array)
-      simplelist(tk_send('getkeys', first.collect{|idx| _to_idx(idx)})).collect!{|elem| simplelist(elem) }
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      simplelist(tk_send('getkeys', first, last))
-    end
-  end
-  alias getkeys get_keys
-
-  def imagelabelpath(idx)
-    window(tk_send('imagelabelpath', _to_idx(idx)))
-  end
-
-  def index(idx)
-    number(tk_send('index', _to_idx(idx)))
-  end
-
-  def insert(idx, *items)
-    tk_send('insert', _to_idx(idx), *items)
-    self
-  end
-
-  def insert_columnlist(idx, columnlist)
-    tk_send('insertcolumnlist', _to_idx(idx), columnlist)
-    self
-  end
-  alias insertcolumnlist insert_columnlist
-
-  def insert_columns(idx, *args)
-    tk_send('insertcolums', _to_idx(idx), *args)
-    self
-  end
-  alias insertcolumns insert_columns
-
-  def insert_list(idx, list)
-    tk_send('insertlist', _to_idx(idx), list)
-    self
-  end
-  alias insertlist insert_list
-
-  def itemlistvar
-    TkVarAccess.new(tk_send('itemlistvar'))
-  end
-
-  def labelpath(idx)
-    window(tk_send('labelpath', _to_idx(idx)))
-  end
-
-  def labels
-    simplelist(tk_send('labels'))
-  end
-
-  def move(src, target)
-    tk_send('move', _to_idx(src), _to_idx(target))
-    self
-  end
-
-  def move_column(src, target)
-    tk_send('movecolumn', _to_idx(src), _to_idx(target))
-    self
-  end
-  alias movecolumn move_column
-
-  def nearest(y)
-    _from_idx(tk_send('nearest', y))
-  end
-
-  def nearest_cell(x, y)
-    _from_idx(tk_send('nearestcell', x, y))
-  end
-  alias nearestcell nearest_cell
-
-  def nearest_column(x)
-    _from_idx(tk_send('nearestcolumn', x))
-  end
-  alias nearestcolumn nearest_column
-
-  def reject_input
-    tk_send('rejectinput')
-    self
-  end
-  alias rejectinput reject_input
-
-  def reset_sortinfo
-    tk_send('resetsortinfo')
-    self
-  end
-  alias resetsortinfo reset_sortinfo
-
-  def scan_mark(x, y)
-    tk_send('scan', 'mark', x, y)
-    self
-  end
-
-  def scan_dragto(x, y)
-    tk_send('scan', 'dragto', x, y)
-    self
-  end
-
-  def see(idx)
-    tk_send('see', _to_idx(idx))
-    self
-  end
-
-  def see_cell(idx)
-    tk_send('seecell', _to_idx(idx))
-    self
-  end
-  alias seecell see_cell
-
-  def see_column(idx)
-    tk_send('seecolumn', _to_idx(idx))
-    self
-  end
-  alias seecolumn see_column
-
-  def selection_anchor(idx)
-    tk_send('selection', 'anchor', _to_idx(idx))
-    self
-  end
-
-  def selection_clear(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('selection', 'clear', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('selection', 'clear', first, last)
-    end
-    self
-  end
-
-  def selection_includes(idx)
-    bool(tk_send('selection', 'includes', _to_idx(idx)))
-  end
-
-  def selection_set(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('selection', 'set', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('selection', 'set', first, last)
-    end
-    self
-  end
-
-  def separatorpath(idx=nil)
-    if idx
-      window(tk_send('separatorpath', _to_idx(idx)))
-    else
-      window(tk_send('separatorpath'))
-    end
-  end
-
-  def separators
-    simplelist(tk_send('separators')).collect!{|w| window(w)}
-  end
-
-  def size
-    number(tk_send('size'))
-  end
-
-  def sort(order=nil)
-    if order
-      order = order.to_s
-      order = '-' << order if order[0] != ?-
-      if order.length < 2
-        order = nil
-      end
-    end
-    if order
-      tk_send('sort', order)
-    else
-      tk_send('sort')
-    end
-    self
-  end
-  def sort_increasing
-    tk_send('sort', '-increasing')
-    self
-  end
-  def sort_decreasing
-    tk_send('sort', '-decreasing')
-    self
-  end
-
-  DEFAULT_sortByColumn_cmd = '::tablelist::sortByColumn'
-
-  def sort_by_column(idx, order=nil)
-    if order
-      order = order.to_s
-      order = '-' << order if order[0] != ?-
-      if order.length < 2
-        order = nil
-      end
-    end
-    if order
-      tk_send('sortbycolumn', _to_idx(idx), order)
-    else
-      tk_send('sortbycolumn', _to_idx(idx))
-    end
-    self
-  end
-  def sort_by_column_increasing(idx)
-    tk_send('sortbycolumn', _to_idx(idx), '-increasing')
-    self
-  end
-  def sort_by_column_decreasing(idx)
-    tk_send('sortbycolumn', _to_idx(idx), '-decreasing')
-    self
-  end
-
-  def sortcolumn
-    idx = num_or_str(tk_send('sortcolum'))
-    (idx.kind_of?(Fixnum) && idx < 0)?  nil: idx
-  end
-
-  def sortorder
-    tk_send('sortorder')
-  end
-
-  def toggle_visibility(first, last=nil)
-    if first.kind_of?(Array)
-      tk_send('togglevisibility', first.collect{|idx| _to_idx(idx)})
-    else
-      first = _to_idx(first)
-      last = (last)? _to_idx(last): first
-      tk_send('togglevisibility', first, last)
-    end
-    self
-  end
-  alias togglevisibility toggle_visibility
-
-  def windowpath(idx)
-    window(tk_send('windowpath', _to_idx(idx)))
-  end
-end
-
-class << Tk::Tcllib::Tablelist
-  ############################################################
-  # helper commands
-  def getTablelistPath(descendant)
-    window(Tk.tk_call('::tablelist::getTablelistPath', descendant))
-  end
-
-  def convEventFields(descendant, x, y)
-    window(Tk.tk_call('::tablelist::convEventFields', descendant, x, y))
-  end
-
-
-  ############################################################
-  # with the BWidget package 
-  def addBWidgetEntry(name=None)
-    Tk.tk_call('::tablelist::addBWidgetEntry', name)
-  end
-
-  def addBWidgetSpinBox(name=None)
-    Tk.tk_call('::tablelist::addBWidgetSpinBox', name)
-  end
-
-  def addBWidgetComboBox(name=None)
-    Tk.tk_call('::tablelist::addBWidgetComboBox', name)
-  end
-
-
-  ############################################################
-  # with the Iwidgets ([incr Widgets]) package 
-  def addIncrEntryfield(name=None)
-    Tk.tk_call('::tablelist::addIncrEntry', name)
-  end
-
-  def addIncrDateTimeWidget(type, seconds=false, name=None)
-    # type := 'datefield'|'dateentry'|timefield'|'timeentry'
-    if seconds && seconds != None
-      seconds = '-seconds'
-    else
-      seconds = None
-    end
-    Tk.tk_call('::tablelist::addDateTimeWidget', type, seconds, name)
-  end
-
-  def addIncrSpinner(name=None)
-    Tk.tk_call('::tablelist::addIncrSpinner', name)
-  end
-
-  def addIncrSpinint(name=None)
-    Tk.tk_call('::tablelist::addIncrSpinint', name)
-  end
-
-  def addIncrCombobox(name=None)
-    Tk.tk_call('::tablelist::addIncrCombobox', name)
-  end
-
-
-  ############################################################
-  # with Bryan Oakley's combobox package
-  def addOakleyCombobox(name=None)
-    Tk.tk_call('::tablelist::addOakleyCombobox', name)
-  end
-
-  ############################################################
-  # with the multi-entry package Mentry is a library extension
-  def addDateMentry(format, separator, gmt=false, name=None)
-    if gmt && gmt != None
-      gmt = '-gmt'
-    else
-      gmt = None
-    end
-    Tk.tk_call('::tablelist::addDateMentry', format, separator, gmt, name)
-  end
-
-  def addTimeMentry(format, separator, gmt=false, name=None)
-    if gmt && gmt != None
-      gmt = '-gmt'
-    else
-      gmt = None
-    end
-    Tk.tk_call('::tablelist::addTimeMentry', format, separator, gmt, name)
-  end
-
-  def addFixedPointMentry(count1, count2, comma=false, name=None)
-    if comma && comma != None
-      comma = '-comma'
-    else
-      comma = None
-    end
-    Tk.tk_call('::tablelist::addFixedPoingMentry', count1, count2, comma, name)
-  end
-
-  def addIPAddrMentry(name=None)
-    Tk.tk_call('::tablelist::addIPAddrMentry', name)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_tile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_tile.rb
deleted file mode 100644
index 0cb4eb7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tablelist_tile.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-#  tkextlib/tcllib/tablelist_tlie.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * A multi-column listbox
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('tablelist_tile', '4.2')
-TkPackage.require('Tablelist_tile')
-
-unless defined? Tk::Tcllib::Tablelist_usingTile
-  Tk::Tcllib::Tablelist_usingTile = true
-end
-
-requrie 'tkextlib/tcllib/tablelist_core'
-
-module Tk
-  module Tcllib
-    Tablelist_Tile = Tablelist
-    TableList_Tile = Tablelist
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tkpiechart.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tkpiechart.rb
deleted file mode 100644
index 92dde65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tkpiechart.rb
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-#  tkextlib/tcllib/tkpiechart.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Create 2D or 3D pies with labels in Tcl canvases
-#
-
-require 'tk'
-require 'tk/canvas'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('tkpiechart', '6.6')
-TkPackage.require('tkpiechart')
-
-module Tk
-  module Tcllib
-    module Tkpiechart
-    end
-  end
-end
-
-module Tk::Tcllib::Tkpiechart
-  PACKAGE_NAME = 'tkpiechart'.freeze
-  def self.package_name
-    PACKAGE_NAME
-  end
-
-  def self.package_version
-    begin
-      TkPackage.require('tkpiechart')
-    rescue
-      ''
-    end
-  end
-
-  module ConfigMethod
-    include TkConfigMethod
-
-    def __pathname
-      self.path + ';' + self.tag
-    end
-    private :__pathname
-
-    def __cget_cmd
-      ['::switched::cget', self.tag]
-    end
-
-    def __config_cmd
-      ['::switched::configure', self.tag]
-    end
-    private :__config_cmd
-
-    def __configinfo_struct
-      {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil, 
-        :default_value=>1, :current_value=>2}
-    end
-    private :__configinfo_struct
-
-    def __boolval_optkeys
-      super() << 'select' << 'autoupdate' << 'selectable'
-    end
-    private :__boolval_optkeys
-
-    def __strval_optkeys
-      super() << 'bordercolor' << 'textbackground' << 
-        'widestvaluetext' << 'title'
-    end
-    private :__strval_optkeys
-
-    def __listval_optkeys
-      super() << 'colors'
-    end
-    private :__listval_optkeys
-  end
-
-  ####################################
-  class PieChartObj < TkcItem
-    include ConfigMethod
-
-    def __font_optkeys
-      ['titlefont']
-    end
-    private :__font_optkeys
-  end
-
-  ####################################
-  class Pie < TkcItem
-    include ConfigMethod
-
-    def create_self(x, y, width, height, keys=None)
-      if keys and keys != None
-        @tag_key = tk_call_without_enc('::stooop::new', 'pie', 
-                                       @c, x, y, *hash_kv(keys, true))
-      else
-        @tag_key = tk_call_without_enc('::stooop::new', 'pie', @c, x, y)
-      end
-
-      @slice_tbl = {}
-
-      id = "pie(#{@tag_key})"
-
-      @tag = @tag_pie = TkcNamedTag(@c, id)
-      @tag_slices = TkcNamedTag(@c, "pieSlices(#{@tag_key})")
-
-      id
-    end
-    private :create_self
-
-    def tag_key
-      @tag_key
-    end
-    def tag
-      @tag
-    end
-    def canvas
-      @c
-    end
-    def _entry_slice(slice)
-      @slice_tbl[slice.to_eval] = slice
-    end
-    def _delete_slice(slice)
-      @slice_tbl.delete(slice.to_eval)
-    end
-
-    def delete
-      tk_call_without_enc('::stooop::delete', @tag_key)
-      CItemID_TBL[@path].delete(@id) if CItemID_TBL[@path]
-      self
-    end
-
-    def new_slice(text=None)
-      Slice.new(self, text)
-    end
-
-    def delete_slice(slice)
-      unless slice.kind_of?(Slice)
-        unless (slice = @slice_tbl[slice])
-          return tk_call_without_enc('pie::deleteSlice', @tag_key, slice)
-        end
-      end
-      unless slice.kind_of?(Slice) && slice.pie == self
-        fail ArgumentError, "argument is not a slice of self"
-      end
-      slice.delete
-    end
-
-    def selected_slices
-      tk_split_simplelist(tk_call_without_enc('pie::selectedSlices', 
-                                              @tag_key)).collect{|slice|
-        @slice_tbl[slice] || Slice.new(:no_create, self, slice)
-      }
-    end
-  end
-
-  ####################################
-  class Slice < TkcItem
-    include ConfigMethod
-
-    def __config_cmd
-      ['::switched::configure', self.tag]
-    end
-    private :__config_cmd
-
-    #------------------------
-
-    def initialize(pie, *args)
-      unless pie.kind_of?(Pie) && pie != :no_create
-        fail ArgumentError, "expects TkPiechart::Pie for 1st argument"
-      end
-
-      if pie == :no_create
-        @pie, @tag_key = args
-      else
-        text = args[0] || None
-        @pie = pie
-        @tag_key = tk_call_without_enc('pie::newSlice', @pie.tag_key, text)
-      end
-      @parent = @c = @pie.canvas
-      @path = @parent.path
-
-      @pie._entry_slice(self)
-
-      @id = "slices(#{@tag_key})"
-      @tag = TkcNamedTag.new(@pie.canvas, @id)
-
-      CItemID_TBL[@path] = {} unless CItemID_TBL[@path]
-      CItemID_TBL[@path][@id] = self
-    end
-
-    def tag_key
-      @tag_key
-    end
-    def tag
-      @tag
-    end
-    def pie
-      @pie
-    end
-
-    def delete
-      tk_call_without_enc('pie::deleteSlice', @pie.tag_key, @tag_key)
-      CItemID_TBL[@path].delete(@id) if CItemID_TBL[@path]
-      @pie._delete_slice(self)
-      self
-    end
-
-    def size(share, disp=None)
-      tk_call_without_enc('pie::sizeSlice', 
-                          @pie.tag_key, @tag_key, share, disp)
-      self
-    end
-
-    def label(text)
-      tk_call_without_enc('pie::labelSlice', @pie.tag_key, @tag_key, text)
-      self
-    end
-  end
-
-  ####################################
-  class BoxLabeler < TkcItem
-    include ConfigMethod
-
-    def __config_cmd
-      ['::switched::configure', self.tag]
-    end
-    private :__config_cmd
-
-    #------------------------
-
-    def create_self(keys=None)
-      if keys and keys != None
-        @tag_key = tk_call_without_enc('::stooop::new', 'pieBoxLabeler', 
-                                       *hash_kv(keys, true))
-      else
-        @tag_key = tk_call_without_enc('::stooop::new', 'pieBoxLabeler')
-      end
-
-      id = "pieBoxLabeler(#{@tag_key})"
-      @tag = TkcNamedTag(@c, id)
-
-      id
-    end
-    private :create_self
-  end
-
-  ####################################
-  class PeripheralLabeler < TkcItem
-    include ConfigMethod
-
-    def __font_optkeys
-      ['font', 'smallfont']
-    end
-    private :__font_optkeys
-
-    def __config_cmd
-      ['::switched::configure', self.tag]
-    end
-    private :__config_cmd
-
-    #------------------------
-
-    def create_self(keys=None)
-      if keys and keys != None
-        @tag_key = tk_call_without_enc('::stooop::new', 
-                                       'piePeripheralLabeler', 
-                                       *hash_kv(keys, true))
-      else
-        @tag_key = tk_call_without_enc('::stooop::new', 'piePeripheralLabeler')
-      end
-
-      id = "piePeripheralLabeler(#{@tag_key})"
-      @tag = TkcNamedTag(@c, id)
-
-      id
-    end
-    private :create_self
-  end
-
-  ####################################
-  class Label < TkcItem
-    include ConfigMethod
-
-    def __config_cmd
-      ['::switched::configure', self.tag]
-    end
-    private :__config_cmd
-
-    #------------------------
-
-    def create_self(x, y, keys=None)
-      if keys and keys != None
-        @tag_key = tk_call_without_enc('::stooop::new', 'canvasLabel', 
-                                       @c, x, y, width, height, 
-                                       *hash_kv(keys, true))
-      else
-        @tag_key = tk_call_without_enc('::stooop::new', 'canvasLabel', 
-                                       @c, x, y, width, height)
-      end
-
-      id = "canvasLabel(#{@tag_key})"
-      @tag = TkcNamedTag(@c, id)
-
-      id
-    end
-    private :create_self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tooltip.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tooltip.rb
deleted file mode 100644
index 4301b39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/tooltip.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-#  tkextlib/tcllib/tooltip.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * Provides tooltips, a small text message that is displayed when the 
-#     mouse hovers over a widget.
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('tooltip', '1.1')
-TkPackage.require('tooltip')
-
-module Tk::Tcllib
-  module Tooltip
-    PACKAGE_NAME = 'tooltip'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('tooltip')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-module Tk::Tcllib::Tooltip
-  extend TkCore
-
-  WidgetClassName = 'Tooltip'.freeze
-  def self.database_classname
-    self::WidgetClassName
-  end
-  def self.database_class
-    WidgetClassNames[self::WidgetClassName]
-  end
-
-  def self.clear(glob_path_pat = None)
-    self.clear_glob(glob_path_pat)
-  end
-
-  def self.clear_glob(glob_path_pat)
-    tk_call_without_enc('::tooltip::tooltip', 'clear', glob_path_pat)
-  end
-
-  def self.clear_widgets(*args)
-    self.clear_glob("{#{args.collect{|w| _get_eval_string(w)}.join(',')}}")
-  end
-
-  def self.clear_children(*args)
-    self.clear_glob("{#{args.collect{|w| s = _get_eval_string(w); "#{s},#{s}.*"}.join(',')}}")
-  end
-
-  def self.delay(millisecs=None)
-    number(tk_call_without_enc('::tooltip::tooltip', 'delay', millisecs))
-  end
-  def self.delay=(millisecs)
-    self.delay(millisecs)
-  end
-
-  def self.disable
-    tk_call_without_enc('::tooltip::tooltip', 'disable')
-    false
-  end
-  def self.off
-    self.disable
-  end
-
-  def self.enable
-    tk_call_without_enc('::tooltip::tooltip', 'enable')
-    true
-  end
-  def self.on
-    self.enable
-  end
-
-  def self.register(widget, msg, keys=nil)
-    if keys.kind_of?(Hash)
-      args = hash_kv(keys) << msg
-    else
-      args = msg
-    end
-    tk_call_without_enc('::tooltip::tooltip', widget.path, *args)
-  end
-
-  def self.erase(widget)
-    tk_call_without_enc('::tooltip::tooltip', widget.path, '')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/widget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/widget.rb
deleted file mode 100644
index ed69f67..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tcllib/widget.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-#  tkextlib/tcllib/widget.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#   * Part of tcllib extension
-#   * megawidget package that uses snit as the object system (snidgets)
-#
-
-require 'tk'
-require 'tkextlib/tcllib.rb'
-
-# TkPackage.require('widget', '3.0')
-TkPackage.require('widget')
-
-module Tk::Tcllib
-  module Widget
-    PACKAGE_NAME = 'widget'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('widget')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-module Tk::Tcllib::Widget
-  autoload :Dialog,             'tkextlib/tcllib/dialog'
-
-  autoload :Panelframe,         'tkextlib/tcllib/panelframe'
-  autoload :PanelFrame,         'tkextlib/tcllib/panelframe'
-
-  autoload :Ruler,              'tkextlib/tcllib/ruler'
-
-  autoload :Screenruler,        'tkextlib/tcllib/screenruler'
-  autoload :ScreenRuler,        'tkextlib/tcllib/screenruler'
-
-  autoload :Scrolledwindow,     'tkextlib/tcllib/scrollwin'
-  autoload :ScrolledWindow,     'tkextlib/tcllib/scrollwin'
-
-  autoload :Superframe,         'tkextlib/tcllib/superframe'
-  autoload :SuperFrame,         'tkextlib/tcllib/superframe'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx.rb
deleted file mode 100644
index 3a4ff27..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  TclX support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tclx/setup.rb'
-
-# load library
-require 'tkextlib/tclx/tclx'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/tclx.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/tclx.rb
deleted file mode 100644
index 5a908fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tclx/tclx.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-#  tclx/tclx.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tclx/setup.rb'
-
-# TkPackage.require('Tclx', '8.0')
-TkPackage.require('Tclx')
-
-module Tk
-  module TclX
-    PACKAGE_NAME = 'Tclx'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Tclx')
-      rescue
-        ''
-      end
-    end
-
-    def self.infox(*args)
-      Tk.tk_call('infox', *args)
-    end
-
-    def self.signal(*args)
-      warn("Warning: Don't recommend to use TclX's 'signal' command. Please use Ruby's 'Signal.trap' method")
-      Tk.tk_call('signal', *args)
-    end
-
-    def self.signal_restart(*args)
-      warn("Warning: Don't recommend to use TclX's 'signal' command. Please use Ruby's 'Signal.trap' method")
-      Tk.tk_call('signal', '-restart', *args)
-    end
-
-    ##############################
-
-    class XPG3_MsgCat
-      class << self
-        alias open new
-      end
-
-      def initialize(catname, fail_mode=false)
-        if fail_mode
-          @msgcat_id = Tk.tk_call('catopen', '-fail', catname)
-        else
-          @msgcat_id = Tk.tk_call('catopen', '-nofail', catname)
-        end
-      end
-
-      def close(fail_mode=false)
-        if fail_mode
-          Tk.tk_call('catclose', '-fail', @msgcat_id)
-        else
-          Tk.tk_call('catclose', '-nofail', @msgcat_id)
-        end
-        self
-      end
-
-      def get(setnum, msgnum, defaultstr)
-        Tk.tk_call('catgets', @msgcat_id, setnum, msgnum, defaultstr)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile.rb
deleted file mode 100644
index acc7beb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-#
-#  Tile theme engin (tile widget set) support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# library directory
-require 'tkextlib/tile/setup.rb'
-
-# load package
-# TkPackage.require('tile', '0.4')
-# TkPackage.require('tile', '0.6')
-# TkPackage.require('tile', '0.7')
-verstr = TkPackage.require('tile')
-ver = verstr.split('.')
-if ver[0].to_i == 0 && ver[1].to_i <= 4
-  # version 0.4 or former
-  module Tk
-    module Tile
-      USE_TILE_NAMESPACE = true
-      USE_TTK_NAMESPACE  = false
-      TILE_SPEC_VERSION_ID = 0
-    end
-  end
-elsif ver[0].to_i == 0 && ver[1].to_i <= 6
-  # version 0.5 -- version 0.6
-  module Tk
-    module Tile
-      USE_TILE_NAMESPACE = true
-      USE_TTK_NAMESPACE  = true
-      TILE_SPEC_VERSION_ID = 5
-    end
-  end
-else
-  # version 0.7 or later
-  module Tk
-    module Tile
-      USE_TILE_NAMESPACE = false
-      USE_TTK_NAMESPACE  = true
-      TILE_SPEC_VERSION_ID = 7
-    end
-  end
-end
-
-# autoload
-module Tk
-  module Tile
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    PACKAGE_NAME = 'tile'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('tile')
-      rescue
-        ''
-      end
-    end
-
-    def self.__Import_Tile_Widgets__!
-      Tk.tk_call('namespace', 'import', '-force', 'ttk::*')
-    end
-
-    def self.load_images(imgdir, pat=TkComm::None)
-      images = Hash[*TkComm.simplelist(Tk.tk_call('::tile::LoadImages', 
-                                                  imgdir, pat))]
-      images.keys.each{|k|
-        images[k] = TkPhotoImage.new(:imagename=>images[k], 
-                                     :without_creating=>true)
-      }
-
-      images
-    end
-
-    def self.style(*args)
-      args.map!{|arg| TkComm._get_eval_string(arg)}.join('.')
-    end
-
-    module KeyNav
-      def self.enableMnemonics(w)
-        Tk.tk_call('::keynav::enableMnemonics', w)
-      end
-      def self.defaultButton(w)
-        Tk.tk_call('::keynav::defaultButton', w)
-      end
-    end
-
-    module Font
-      Default      = 'TkDefaultFont'
-      Text         = 'TkTextFont'
-      Heading      = 'TkHeadingFont'
-      Caption      = 'TkCaptionFont'
-      Tooltip      = 'TkTooltipFont'
-
-      Fixed        = 'TkFixedFont'
-      Menu         = 'TkMenuFont'
-      SmallCaption = 'TkSmallCaptionFont'
-      Icon         = 'TkIconFont'
-    end
-
-    module ParseStyleLayout
-      def _style_layout(lst)
-        ret = []
-        until lst.empty?
-          sub = [lst.shift]
-          keys = {}
-
-          until lst.empty?
-            if lst[0][0] == ?-
-              k = lst.shift[1..-1]
-              children = lst.shift 
-              children = _style_layout(children) if children.kind_of?(Array)
-              keys[k] = children
-            else
-              break
-            end
-          end
-
-          sub << keys unless keys.empty?
-          ret << sub
-        end
-        ret
-      end
-      private :_style_layout
-    end
-
-    module TileWidget
-      include Tk::Tile::ParseStyleLayout
-
-      def __val2ruby_optkeys  # { key=>proc, ... }
-        # The method is used to convert a opt-value to a ruby's object.
-        # When get the value of the option "key", "proc.call(value)" is called.
-        super().update('style'=>proc{|v| _style_layout(list(v))})
-      end
-      private :__val2ruby_optkeys
-
-      def instate(state, script=nil, &b)
-        if script
-          tk_send('instate', state, script)
-        elsif b
-          tk_send('instate', state, Proc.new(&b))
-        else
-          bool(tk_send('instate', state))
-        end
-      end
-
-      def state(state=nil)
-        if state
-          tk_send('state', state)
-        else
-          list(tk_send('state'))
-        end
-      end
-
-      def identify(x, y)
-        ret = tk_send_without_enc('identify', x, y)
-        (ret.empty?)? nil: ret
-      end
-    end
-
-    ######################################
-
-    autoload :TButton,       'tkextlib/tile/tbutton'
-    autoload :Button,        'tkextlib/tile/tbutton'
-
-    autoload :TCheckButton,  'tkextlib/tile/tcheckbutton'
-    autoload :CheckButton,   'tkextlib/tile/tcheckbutton'
-    autoload :TCheckbutton,  'tkextlib/tile/tcheckbutton'
-    autoload :Checkbutton,   'tkextlib/tile/tcheckbutton'
-
-    autoload :Dialog,        'tkextlib/tile/dialog'
-
-    autoload :TEntry,        'tkextlib/tile/tentry'
-    autoload :Entry,         'tkextlib/tile/tentry'
-
-    autoload :TCombobox,     'tkextlib/tile/tcombobox'
-    autoload :Combobox,      'tkextlib/tile/tcombobox'
-
-    autoload :TFrame,        'tkextlib/tile/tframe'
-    autoload :Frame,         'tkextlib/tile/tframe'
-
-    autoload :TLabelframe,   'tkextlib/tile/tlabelframe'
-    autoload :Labelframe,    'tkextlib/tile/tlabelframe'
-
-    autoload :TLabel,        'tkextlib/tile/tlabel'
-    autoload :Label,         'tkextlib/tile/tlabel'
-
-    autoload :TMenubutton,   'tkextlib/tile/tmenubutton'
-    autoload :Menubutton,    'tkextlib/tile/tmenubutton'
-
-    autoload :TNotebook,     'tkextlib/tile/tnotebook'
-    autoload :Notebook,      'tkextlib/tile/tnotebook'
-
-    autoload :TPaned,        'tkextlib/tile/tpaned'
-    autoload :Paned,         'tkextlib/tile/tpaned'
-
-    autoload :TProgressbar,  'tkextlib/tile/tprogressbar'
-    autoload :Progressbar,   'tkextlib/tile/tprogressbar'
-
-    autoload :TRadioButton,  'tkextlib/tile/tradiobutton'
-    autoload :RadioButton,   'tkextlib/tile/tradiobutton'
-    autoload :TRadiobutton,  'tkextlib/tile/tradiobutton'
-    autoload :Radiobutton,   'tkextlib/tile/tradiobutton'
-
-    autoload :TScale,        'tkextlib/tile/tscale'
-    autoload :Scale,         'tkextlib/tile/tscale'
-    autoload :TProgress,     'tkextlib/tile/tscale'
-    autoload :Progress,      'tkextlib/tile/tscale'
-
-    autoload :TScrollbar,    'tkextlib/tile/tscrollbar'
-    autoload :Scrollbar,     'tkextlib/tile/tscrollbar'
-
-    autoload :TSeparator,    'tkextlib/tile/tseparator'
-    autoload :Separator,     'tkextlib/tile/tseparator'
-
-    autoload :TSquare,       'tkextlib/tile/tsquare'
-    autoload :Square,        'tkextlib/tile/tsquare'
-
-    autoload :Treeview,      'tkextlib/tile/treeview'
-
-    autoload :Style,         'tkextlib/tile/style'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/dialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/dialog.rb
deleted file mode 100644
index b10378d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/dialog.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-#  ttk::dialog  (tile-0.7+)
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class Dialog < TkWindow
-    end
-  end
-end
-
-class Tk::Tile::Dialog
-  TkCommandNames = ['::ttk::dialog'.freeze].freeze
-
-  def self.show(*args)
-    dialog = self.new(*args)
-    dialog.show
-    [dialog.status, dialog.value]
-  end
-  def self.display(*args)
-    self.show(*args)
-  end
-
-  def self.define_dialog_type(name, keys)
-    Tk.tk_call('::ttk::dialog::define', name, keys)
-    name
-  end
-
-  def self.style(*args)
-    ['Dialog', *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  #########################
-
-  def initialize(keys={})
-    @keys = _symbolkey2str(keys)
-    super(*args)
-  end
-
-  def create_self(keys)
-    # dummy
-  end
-  private :create_self
-
-  def show
-    tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys))
-  end
-  alias display show
-
-  def client_frame
-    window(tk_call_without_enc('::ttk::dialog::clientframe', @path))
-  end
-
-  def cget(slot)
-    @keys[slot]
-  end
-
-  def configure(slot, value=None)
-    if slot.kind_of?(Hash)
-      slot.each{|k, v| configure(k, v)}
-    else
-      slot = slot.to_s
-      value = _symbolkey2str(value) if value.kind_of?(Hash)
-      if value && value != None
-        @keys[slot] = value
-      else
-        @keys.delete(slot)
-      end
-    end
-    self
-  end
-
-  def configinfo(slot = nil)
-    if slot
-      slot = slot.to_s
-      [ slot, nil, nil, nil, @keys[slot] ]
-    else
-      @keys.collect{|k, v| [ k, nil, nil, nil, v ] }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/sizegrip.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/sizegrip.rb
deleted file mode 100644
index ea79658..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/sizegrip.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-#  ttk::sizegrip widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class SizeGrip < TkWindow
-    end
-  end
-end
-
-class Tk::Tile::SizeGrip < TkWindow
-  include Tk::Tile::TileWidget
-
-  TkCommandNames = ['::ttk::sizegrip'.freeze].freeze
-  WidgetClassName = 'TSizegrip'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/style.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/style.rb
deleted file mode 100644
index 59bc4b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/style.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#  style commands
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    module Style
-    end
-  end
-end
-
-module Tk::Tile::Style
-  extend TkCore
-end
-
-class << Tk::Tile::Style
-  def configure(style=nil, keys=nil)
-    if style.kind_of?(Hash)
-      keys = style
-      style = nil
-    end
-    style = '.' unless style
-
-    if Tk::Tile::TILE_SPEC_VERSION_ID < 7
-      sub_cmd = 'default'
-    else
-      sub_cmd = 'configure'
-    end
-
-    if keys && keys != None
-      tk_call('style', sub_cmd, style, *hash_kv(keys))
-    else
-      tk_call('style', sub_cmd, style)
-    end
-  end
-  alias default configure
-
-  def map(style=nil, keys=nil)
-    if style.kind_of?(Hash)
-      keys = style
-      style = nil
-    end
-    style = '.' unless style
-
-    if keys && keys != None
-      tk_call('style', 'map', style, *hash_kv(keys))
-    else
-      tk_call('style', 'map', style)
-    end
-  end
-
-  def lookup(style, opt, state=None, fallback_value=None)
-    tk_call('style', 'lookup', style, '-' << opt.to_s, state, fallback_value)
-  end
-
-  include Tk::Tile::ParseStyleLayout
-
-  def layout(style=nil, spec=nil)
-    if style.kind_of?(Hash)
-      spec = style
-      style = nil
-    end
-    style = '.' unless style
-
-    if spec
-      tk_call('style', 'layout', style, spec)
-    else
-      _style_layout(list(tk_call('style', 'layout', style)))
-    end
-  end
-
-  def element_create(name, type, *args)
-    tk_call('style', 'element', 'create', name, type, *args)
-  end
-
-  def element_names()
-    list(tk_call('style', 'element', 'names'))
-  end
-
-  def element_options(elem)
-    simplelist(tk_call('style', 'element', 'options', elem))
-  end
-
-  def theme_create(name, keys=nil)
-    if keys && keys != None
-      tk_call('style', 'theme', 'create', name, *hash_kv(keys))
-    else
-      tk_call('style', 'theme', 'create', name)
-    end
-  end
-
-  def theme_settings(name, cmd=nil, &b)
-    cmd = Proc.new(&b) if !cmd && b
-    tk_call('style', 'theme', 'settings', name, cmd)
-  end
-
-  def theme_names()
-    list(tk_call('style', 'theme', 'names'))
-  end
-
-  def theme_use(name)
-    tk_call('style', 'theme', 'use', name)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tbutton.rb
deleted file mode 100644
index 1142a27..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tbutton.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tbutton widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TButton < TkButton
-    end
-    Button = TButton
-  end
-end
-
-class Tk::Tile::TButton < TkButton
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::button'.freeze].freeze
-  else
-    TkCommandNames = ['::tbutton'.freeze].freeze
-  end
-  WidgetClassName = 'TButton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcheckbutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcheckbutton.rb
deleted file mode 100644
index fce7996..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcheckbutton.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-#  tcheckbutton widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TCheckButton < TkCheckButton
-    end
-    TCheckbutton = TCheckButton
-    CheckButton  = TCheckButton
-    Checkbutton  = TCheckButton
-  end
-end
-
-class Tk::Tile::TCheckButton < TkCheckButton
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::checkbutton'.freeze].freeze
-  else
-    TkCommandNames = ['::tcheckbutton'.freeze].freeze
-  end
-  WidgetClassName = 'TCheckbutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcombobox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcombobox.rb
deleted file mode 100644
index e8e042f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tcombobox.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-#  tcombobox widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TCombobox < Tk::Tile::TEntry
-    end
-    Combobox = TCombobox
-  end
-end
-
-class Tk::Tile::TCombobox < Tk::Tile::TEntry
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::combobox'.freeze].freeze
-  else
-    TkCommandNames = ['::tcombobox'.freeze].freeze
-  end
-  WidgetClassName = 'TCombobox'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'exportselection'
-  end
-  private :__boolval_optkeys
-
-  def __listval_optkeys
-    super() << 'values'
-  end
-  private :__listval_optkeys
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  def current
-    number(tk_send_without_enc('current'))
-  end
-  def current=(idx)
-    tk_send_without_enc('current', idx)
-  end
-
-  def set(val)
-    tk_send('set', val)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tentry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tentry.rb
deleted file mode 100644
index 4d57ce7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tentry.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-#  tentry widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TEntry < TkEntry
-    end
-    Entry = TEntry
-  end
-end
-
-class Tk::Tile::TEntry < TkEntry
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::entry'.freeze].freeze
-  else
-    TkCommandNames = ['::tentry'.freeze].freeze
-  end
-  WidgetClassName = 'TEntry'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __boolval_optkeys
-    super() << 'exportselection'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'show'
-  end
-  private :__strval_optkeys
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tframe.rb
deleted file mode 100644
index 691c9c4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tframe.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tframe widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TFrame < TkFrame
-    end
-    Frame = TFrame
-  end
-end
-
-class Tk::Tile::TFrame < TkFrame
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::frame'.freeze].freeze
-  else
-    TkCommandNames = ['::tframe'.freeze].freeze
-  end
-  WidgetClassName = 'TFrame'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabel.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabel.rb
deleted file mode 100644
index 4111d19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabel.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tlabel widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TLabel < TkLabel
-    end
-    Label = TLabel
-  end
-end
-
-class Tk::Tile::TLabel < TkLabel
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::label'.freeze].freeze
-  else
-    TkCommandNames = ['::tlabel'.freeze].freeze
-  end
-  WidgetClassName = 'TLabel'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabelframe.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabelframe.rb
deleted file mode 100644
index 8981232..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tlabelframe.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tlabelframe widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TLabelframe < Tk::Tile::TFrame
-    end
-    Labelframe = TLabelframe
-  end
-end
-
-class Tk::Tile::TLabelframe < Tk::Tile::TFrame
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::labelframe'.freeze].freeze
-  else
-    TkCommandNames = ['::tlabelframe'.freeze].freeze
-  end
-  WidgetClassName = 'TLabelframe'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tmenubutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tmenubutton.rb
deleted file mode 100644
index 4b81fa1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tmenubutton.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tmenubutton widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TMenubutton < TkMenubutton
-    end
-    Menubutton = TMenubutton
-  end
-end
-
-class Tk::Tile::TMenubutton < TkMenubutton
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::menubutton'.freeze].freeze
-  else
-    TkCommandNames = ['::tmenubutton'.freeze].freeze
-  end
-  WidgetClassName = 'TMenubutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tnotebook.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tnotebook.rb
deleted file mode 100644
index a928e64..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tnotebook.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-#  tnotebook widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TNotebook < TkWindow
-    end
-    Notebook = TNotebook
-  end
-end
-
-class Tk::Tile::TNotebook < TkWindow
-  ################################
-  include TkItemConfigMethod
-  
-  def __item_cget_cmd(id)
-    [self.path, 'tab', id]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, 'tab', id]
-  end
-  private :__item_config_cmd
-
-  def __item_listval_optkeys(id)
-    []
-  end
-  private :__item_listval_optkeys
-
-  def __item_methodcall_optkeys(id)  # { key=>method, ... }
-    {}
-  end
-  private :__item_methodcall_optkeys
-
-  #alias tabcget itemcget
-  alias tabconfigure itemconfigure
-  alias tabconfiginfo itemconfiginfo
-  alias current_tabconfiginfo current_itemconfiginfo
-
-  def tabcget(tagOrId, option)
-    tabconfigure(tagOrId, option)[-1]
-  end
-  ################################
-
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::notebook'.freeze].freeze
-  else
-    TkCommandNames = ['::tnotebook'.freeze].freeze
-  end
-  WidgetClassName = 'TNotebook'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  def enable_traversal()
-    if Tk::Tile::TILE_SPEC_VERSION_ID < 5
-      tk_call_without_enc('::tile::enableNotebookTraversal', @path)
-    elsif Tk::Tile::TILE_SPEC_VERSION_ID < 7
-      tk_call_without_enc('::tile::notebook::enableTraversal', @path)
-    else
-      tk_call_without_enc('::ttk::notebook::enableTraversal', @path)
-    end
-    self
-  end
-
-  def add(child, keys=nil)
-    if keys && keys != None
-      tk_send_without_enc('add', _epath(child), *hash_kv(keys))
-    else
-      tk_send_without_enc('add', _epath(child))
-    end
-    self
-  end
-
-  def forget(idx)
-    tk_send('forget', idx)
-    self
-  end    
-
-  def index(idx)
-    number(tk_send('index', idx))
-  end
-
-  def insert(idx, subwin, keys=nil)
-    if keys && keys != None
-      tk_send('insert', idx, subwin, *hash_kv(keys))
-    else
-      tk_send('insert', idx, subwin)
-    end
-    self
-  end
-
-  def select(idx)
-    tk_send('select', idx)
-    self
-  end
-
-  def selected
-    window(tk_send_without_enc('select'))
-  end
-
-  def tabs
-    list(tk_send('tabs'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tpaned.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tpaned.rb
deleted file mode 100644
index 11178b1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tpaned.rb
+++ /dev/null
@@ -1,188 +0,0 @@
-#
-#  tpaned widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TPaned < TkWindow
-    end
-    Paned = TPaned
-  end
-end
-
-class Tk::Tile::TPaned < TkWindow
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::paned'.freeze].freeze
-  else
-    TkCommandNames = ['::tpaned'.freeze].freeze
-  end
-  WidgetClassName = 'TPaned'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  def add(win, keys)
-    win = _epath(win)
-    tk_send_without_enc('add', win, *hash_kv(keys))
-    self
-  end
-
-  def forget(pane)
-    pane = _epath(pane)
-    tk_send_without_enc('forget', pane)
-    self
-  end
-
-  def insert(pos, win, keys)
-    win = _epath(win)
-    tk_send_without_enc('insert', pos, win, *hash_kv(keys))
-    self
-  end
-
-  def panecget(pane, slot)
-    pane = _epath(pane)
-    tk_tcl2ruby(tk_send_without_enc('pane', pane, "-#{slot}"))
-  end
-  alias pane_cget panecget
-
-  def paneconfigure(pane, key, value=nil)
-    pane = _epath(pane)
-    if key.kind_of? Hash
-      params = []
-      key.each{|k, v|
-        params.push("-#{k}")
-        # params.push((v.kind_of?(TkObject))? v.epath: v)
-        params.push(_epath(v))
-      }
-      tk_send_without_enc('pane', pane, *params)
-    else
-      # value = value.epath if value.kind_of?(TkObject)
-      value = _epath(value)
-      tk_send_without_enc('pane', pane, "-#{key}", value)
-    end
-    self
-  end
-  alias pane_config paneconfigure
-  alias pane_configure paneconfigure
-
-  def paneconfiginfo(win)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      win = _epath(win)
-      if key
-        conf = tk_split_list(tk_send_without_enc('pane', win, "-#{key}"))
-        conf[0] = conf[0][1..-1]
-        if conf[0] == 'hide'
-          conf[3] = bool(conf[3]) unless conf[3].empty?
-          conf[4] = bool(conf[4]) unless conf[4].empty?
-        end
-        conf
-      else
-        tk_split_simplelist(tk_send_without_enc('pane', 
-                                                win)).collect{|conflist|
-          conf = tk_split_simplelist(conflist)
-          conf[0] = conf[0][1..-1]
-          if conf[3]
-            if conf[0] == 'hide'
-              conf[3] = bool(conf[3]) unless conf[3].empty?
-            elsif conf[3].index('{')
-              conf[3] = tk_split_list(conf[3]) 
-            else
-              conf[3] = tk_tcl2ruby(conf[3]) 
-            end
-          end
-          if conf[4]
-            if conf[0] == 'hide'
-              conf[4] = bool(conf[4]) unless conf[4].empty?
-            elsif conf[4].index('{')
-              conf[4] = tk_split_list(conf[4]) 
-            else
-              conf[4] = tk_tcl2ruby(conf[4]) 
-            end
-          end
-          conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
-          conf
-        }
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      win = _epath(win)
-      if key
-        conf = tk_split_list(tk_send_without_enc('pane', win, "-#{key}"))
-        key = conf.shift[1..-1]
-        if key == 'hide'
-          conf[2] = bool(conf[2]) unless conf[2].empty?
-          conf[3] = bool(conf[3]) unless conf[3].empty?
-        end
-        { key => conf }
-      else
-        ret = {}
-        tk_split_simplelist(tk_send_without_enc('pane', 
-                                                win)).each{|conflist|
-          conf = tk_split_simplelist(conflist)
-          key = conf.shift[1..-1]
-          if key
-            if key == 'hide'
-              conf[2] = bool(conf[2]) unless conf[2].empty?
-            elsif conf[2].index('{')
-              conf[2] = tk_split_list(conf[2]) 
-            else
-              conf[2] = tk_tcl2ruby(conf[2]) 
-            end
-          end
-          if conf[3]
-            if key == 'hide'
-              conf[3] = bool(conf[3]) unless conf[3].empty?
-            elsif conf[3].index('{')
-              conf[3] = tk_split_list(conf[3]) 
-            else
-              conf[3] = tk_tcl2ruby(conf[3]) 
-            end
-          end
-          if conf.size == 1
-            ret[key] = conf[0][1..-1]  # alias info
-          else
-            ret[key] = conf
-          end
-        }
-        ret
-      end
-    end
-  end
-  alias pane_configinfo paneconfiginfo
-
-  def current_paneconfiginfo(win, key=nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if key
-        conf = paneconfiginfo(win, key)
-        {conf[0] => conf[4]}
-      else
-        ret = {}
-        paneconfiginfo(win).each{|conf|
-          ret[conf[0]] = conf[4] if conf.size > 2
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      paneconfiginfo(win, key).each{|k, conf|
-        ret[k] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-  alias current_pane_configinfo current_paneconfiginfo
-
-  def identify(x, y)
-    list(tk_send_without_enc('identify', x, y))
-  end
-
-  def sashpos(idx, newpos=None)
-    num_or_str(tk_send_without_enc('sashpos', idx, newpos))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tprogressbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tprogressbar.rb
deleted file mode 100644
index 36c1c75..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tprogressbar.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-#  tprogressbar widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TProgressbar < TkWindow
-    end
-    Progressbar = TProgressbar
-  end
-end
-
-class Tk::Tile::TProgressbar
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::progressbar'.freeze].freeze
-  else
-    TkCommandNames = ['::tprogressbar'.freeze].freeze
-  end
-  WidgetClassName = 'TProgressbar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  def step(amount=None)
-    tk_send_without_enc('step', amount).to_f
-  end
-  #def step=(amount)
-  #  tk_send_without_enc('step', amount)
-  #end
-
-  def start(interval=None)
-    if Tk::Tile::TILE_SPEC_VERSION_ID < 5
-      tk_call_without_enc('::tile::progressbar::start', @path, interval)
-    else
-      tk_send_without_enc('start', interval)
-    end
-  end
-
-  def stop(amount=None)
-    if Tk::Tile::TILE_SPEC_VERSION_ID < 5
-      tk_call_without_enc('::tile::progressbar::stop', @path)
-    else
-      tk_send_without_enc('stop', amount)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tradiobutton.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tradiobutton.rb
deleted file mode 100644
index e2f614c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tradiobutton.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-#  tradiobutton widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TRadioButton < TkRadioButton
-    end
-    TRadiobutton = TRadioButton
-    RadioButton  = TRadioButton
-    Radiobutton  = TRadioButton
-  end
-end
-
-class Tk::Tile::TRadioButton < TkRadioButton
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::radiobutton'.freeze].freeze
-  else
-    TkCommandNames = ['::tradiobutton'.freeze].freeze
-  end
-  WidgetClassName = 'TRadiobutton'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/treeview.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/treeview.rb
deleted file mode 100644
index 68e4788..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/treeview.rb
+++ /dev/null
@@ -1,1133 +0,0 @@
-#
-#  treeview widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class Treeview < TkWindow
-    end
-  end
-end
-
-module Tk::Tile::TreeviewConfig
-  include TkItemConfigMethod
-
-  def __item_configinfo_struct(id)
-    # maybe need to override
-    {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil, 
-      :default_value=>nil, :current_value=>1}
-  end
-  private :__item_configinfo_struct
-
-  def __itemconfiginfo_core(tagOrId, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
-        fontkey  = $2
-        return [slot.to_s, tagfontobj(tagid(tagOrId), fontkey)]
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__tile_specific_item_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
-              val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << slot))
-            rescue
-              # Maybe, 'state' option has '-' in future.
-              val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            end
-            return [slot, val]
-
-          when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
-            optval = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            begin
-              val = method.call(tagOrId, optval)
-            rescue => e
-              warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-              val = optval
-            end
-            return [slot, val]
-
-          when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
-            return [slot, self.__send__(method, tagOrId)]
-
-          when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              val = number(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            rescue
-              val = nil
-            end
-            return [slot, val]
-
-          when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = num_or_str(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            return [slot, val]
-
-          when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              val = bool(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            rescue
-              val = nil
-            end
-            return [slot, val]
-
-          when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            return [slot, val]
-
-          when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val =~ /^[0-9]/
-              return [slot, list(val)]
-            else
-              return [slot, val]
-            end
-
-          when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            return [slot, val]
-
-          when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val.empty?
-              return [slot, nil]
-            else
-              return [slot, TkVarAccess.new(val)]
-            end
-
-          else
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val.index('{')
-              return [slot, tk_split_list(val)]
-            else
-              return [slot, tk_tcl2ruby(val)]
-            end
-          end
-
-        else # ! slot
-          ret = Hash[*(tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false))].to_a.collect{|conf|
-            conf[0] = conf[0][1..-1] if conf[0][0] == ?-
-            case conf[0]
-            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[conf[0]]
-              optval = conf[1]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[1] = val
-
-            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-              # do nothing
-
-            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-              begin
-                conf[1] = number(conf[1])
-              rescue
-                conf[1] = nil
-              end
-
-            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-              conf[1] = num_or_str(conf[1])
-
-            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-              begin
-                conf[1] = bool(conf[1])
-              rescue
-                conf[1] = nil
-              end
-
-            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-              conf[1] = simplelist(conf[1])
-
-            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-              if conf[1] =~ /^[0-9]/
-                conf[1] = list(conf[1])
-              end
-
-            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-              if conf[1].empty?
-                conf[1] = nil
-              else
-                conf[1] = TkVarAccess.new(conf[1])
-              end
-
-            else
-              if conf[1].index('{')
-                conf[1] = tk_split_list(conf[1])
-              else
-                conf[1] = tk_tcl2ruby(conf[1])
-              end
-            end
-
-            conf
-          }
-
-          __item_font_optkeys(tagid(tagOrId)).each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret.assoc(optkey)
-            if fontconf
-              ret.delete_if{|inf| inf[0] =~ /^(|latin|ascii|kanji)#{optkey}$/}
-              fontconf[1] = tagfontobj(tagid(tagOrId), optkey)
-              ret.push(fontconf)
-            end
-          }
-
-          __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
-            ret << [optkey.to_s, self.__send__(method, tagOrId)]
-          }
-
-          ret
-        end
-      end
-
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
-        fontkey  = $2
-        return {slot.to_s => tagfontobj(tagid(tagOrId), fontkey)}
-      else
-        if slot
-          slot = slot.to_s
-          case slot
-          when /^(#{__tile_specific_item_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              # On tile-0.7.{2-8}, 'state' option has no '-' at its head.
-              val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << slot))
-            rescue
-              # Maybe, 'state' option has '-' in future.
-              val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            end
-            return {slot => val}
-
-          when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
-            optval = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            begin
-              val = method.call(tagOrId, optval)
-            rescue => e
-              warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-              val = optval
-            end
-            return {slot => val}
-
-          when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
-            method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
-            return {slot => self.__send__(method, tagOrId)}
-
-          when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              val = number(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            rescue
-              val = nil
-            end
-            return {slot => val}
-
-          when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = num_or_str(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            return {slot => val}
-
-          when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-            begin
-              val = bool(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            rescue
-              val = nil
-            end
-            return {slot => val}
-
-          when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
-            return {slot => val}
-
-          when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val =~ /^[0-9]/
-              return {slot => list(val)}
-            else
-              return {slot => val}
-            end
-
-          when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            return {slot => val}
-
-          when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val.empty?
-              return {slot => nil}
-            else
-              return {slot => TkVarAccess.new(val)}
-            end
-
-          else
-            val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
-            if val.index('{')
-              return {slot => tk_split_list(val)}
-            else
-              return {slot => tk_tcl2ruby(val)}
-            end
-          end
-
-        else # ! slot
-          ret = {}
-          ret = Hash[*(tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false))].to_a.collect{|conf|
-            conf[0] = conf[0][1..-1] if conf[0][0] == ?-
-
-            optkey = conf[0]
-            case optkey
-            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
-              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
-              optval = conf[1]
-              begin
-                val = method.call(tagOrId, optval)
-              rescue => e
-                warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
-                val = optval
-              end
-              conf[1] = val
-
-            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
-              # do nothing
-
-            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
-              begin
-                conf[1] = number(conf[1])
-              rescue
-                conf[1] = nil
-              end
-
-            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
-              conf[1] = num_or_str(conf[1])
-
-            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
-              begin
-                conf[1] = bool(conf[1])
-              rescue
-                conf[1] = nil
-              end
-
-            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
-              conf[1] = simplelist(conf[1])
-
-            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
-              if conf[1] =~ /^[0-9]/
-                conf[1] = list(conf[1])
-              end
-
-            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
-              if conf[1].empty?
-                conf[1] = nil
-              else
-                conf[1] = TkVarAccess.new(conf[1])
-              end
-
-            else
-              if conf[1].index('{')
-                return [slot, tk_split_list(conf[1])]
-              else
-                return [slot, tk_tcl2ruby(conf[1])]
-              end
-            end
-
-            ret[conf[0]] = conf[1]
-          }
-
-          __item_font_optkeys(tagid(tagOrId)).each{|optkey|
-            optkey = optkey.to_s
-            fontconf = ret[optkey]
-            if fontconf.kind_of?(Array)
-              ret.delete(optkey)
-              ret.delete('latin' << optkey)
-              ret.delete('ascii' << optkey)
-              ret.delete('kanji' << optkey)
-              fontconf[1] = tagfontobj(tagid(tagOrId), optkey)
-              ret[optkey] = fontconf
-            end
-          }
-
-          __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
-            ret[optkey.to_s] = self.__send__(method, tagOrId)
-          }
-
-          ret
-        end
-      end
-    end
-  end
-
-  ###################
-
-  def __item_cget_cmd(id)
-    [self.path, id[0], id[1]]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)
-    [self.path, id[0], id[1]]
-  end
-  private :__item_config_cmd
-
-  def __item_numstrval_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      ['width']
-    when :column, 'column'
-      super(id[1])
-    when :tag, 'tag'
-      super(id[1])
-    when :heading, 'heading'
-      super(id[1])
-    else
-      super(id[1])
-    end
-  end
-  private :__item_numstrval_optkeys
-
-  def __item_strval_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      super(id) + ['id']
-    when :column, 'column'
-      super(id[1])
-    when :tag, 'tag'
-      super(id[1])
-    when :heading, 'heading'
-      super(id[1])
-    else
-      super(id[1])
-    end
-  end
-  private :__item_strval_optkeys
-
-  def __item_boolval_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      ['open']
-    when :column, 'column'
-      super(id[1])
-    when :tag, 'tag'
-      super(id[1])
-    when :heading, 'heading'
-      super(id[1])
-    end
-  end
-  private :__item_boolval_optkeys
-
-  def __item_listval_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      ['values']
-    when :column, 'column'
-      []
-    when :heading, 'heading'
-      []
-    else
-      []
-    end
-  end
-  private :__item_listval_optkeys
-
-  def __item_val2ruby_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      { 
-        'tags'=>proc{|arg_id, val|
-          simplelist(val).collect{|tag|
-            Tk::Tile::Treeview::Tag.id2obj(self, tag)
-          }
-        }
-      }
-    when :column, 'column'
-      {}
-    when :heading, 'heading'
-      {}
-    else
-      {}
-    end
-  end
-  private :__item_val2ruby_optkeys
-
-  def __tile_specific_item_optkeys(id)
-    case id[0]
-    when :item, 'item'
-      []
-    when :column, 'column'
-      []
-    when :heading, 'heading'
-      ['state']  # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
-    else
-      []
-    end
-  end
-  private :__item_val2ruby_optkeys
-
-  def itemconfiginfo(tagOrId, slot = nil)
-    __itemconfiginfo_core(tagOrId, slot)
-  end
-
-  def current_itemconfiginfo(tagOrId, slot = nil)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      if slot
-        org_slot = slot
-        begin
-          conf = __itemconfiginfo_core(tagOrId, slot)
-          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-            return {conf[0] => conf[-1]}
-          end
-          slot = conf[__item_configinfo_struct(tagid(tagOrId))[:alias]]
-        end while(org_slot != slot)
-        fail RuntimeError, 
-          "there is a configure alias loop about '#{org_slot}'"
-      else
-        ret = {}
-        __itemconfiginfo_core(tagOrId).each{|conf|
-          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
-              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
-            ret[conf[0]] = conf[-1]
-          end
-        }
-        ret
-      end
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      ret = {}
-      __itemconfiginfo_core(tagOrId, slot).each{|key, conf|
-        ret[key] = conf[-1] if conf.kind_of?(Array)
-      }
-      ret
-    end
-  end
-
-  alias __itemcget itemcget
-  alias __itemconfigure itemconfigure
-  alias __itemconfiginfo itemconfiginfo
-  alias __current_itemconfiginfo current_itemconfiginfo
-
-  private :__itemcget, :__itemconfigure
-  private :__itemconfiginfo, :__current_itemconfiginfo
-
-  # Treeview Item
-  def itemcget(tagOrId, option)
-    __itemcget([:item, tagOrId], option)
-  end
-  def itemconfigure(tagOrId, slot, value=None)
-    __itemconfigure([:item, tagOrId], slot, value)
-  end
-  def itemconfiginfo(tagOrId, slot=nil)
-    __itemconfiginfo([:item, tagOrId], slot)
-  end
-  def current_itemconfiginfo(tagOrId, slot=nil)
-    __current_itemconfiginfo([:item, tagOrId], slot)
-  end
-
-  # Treeview Column
-  def columncget(tagOrId, option)
-    __itemcget([:column, tagOrId], option)
-  end
-  def columnconfigure(tagOrId, slot, value=None)
-    __itemconfigure([:column, tagOrId], slot, value)
-  end
-  def columnconfiginfo(tagOrId, slot=nil)
-    __itemconfiginfo([:column, tagOrId], slot)
-  end
-  def current_columnconfiginfo(tagOrId, slot=nil)
-    __current_itemconfiginfo([:column, tagOrId], slot)
-  end
-  alias column_cget columncget
-  alias column_configure columnconfigure
-  alias column_configinfo columnconfiginfo
-  alias current_column_configinfo current_columnconfiginfo
-
-  # Treeview Heading
-  def headingcget(tagOrId, option)
-    if __tile_specific_item_optkeys([:heading, tagOrId]).index(option.to_s)
-      begin
-        # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
-        tk_call(*(__item_cget_cmd([:heading, tagOrId]) << option.to_s))
-      rescue
-        # Maybe, 'state' option has '-' in future.
-        tk_call(*(__item_cget_cmd([:heading, tagOrId]) << "-#{option}"))
-      end
-    else
-      __itemcget([:heading, tagOrId], option)
-    end
-  end
-  def headingconfigure(tagOrId, slot, value=None)
-    if slot.kind_of?(Hash)
-      slot = _symbolkey2str(slot)
-      sp_kv = []
-      __tile_specific_item_optkeys([:heading, tagOrId]).each{|k|
-        sp_kv << k << _get_eval_string(slot.delete(k)) if slot.has_key?(k)
-      }
-      tk_call(*(__item_config_cmd([:heading, tagOrId]).concat(sp_kv)))
-      tk_call(*(__item_config_cmd([:heading, tagOrId]).concat(hash_kv(slot))))
-    elsif __tile_specific_item_optkeys([:heading, tagOrId]).index(slot.to_s)
-      begin
-        # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
-        tk_call(*(__item_cget_cmd([:heading, tagOrId]) << slot.to_s << value))
-      rescue
-        # Maybe, 'state' option has '-' in future.
-        tk_call(*(__item_cget_cmd([:heading, tagOrId]) << "-#{slot}" << value))
-      end
-    else
-      __itemconfigure([:heading, tagOrId], slot, value)
-    end
-    self
-  end
-  def headingconfiginfo(tagOrId, slot=nil)
-    __itemconfiginfo([:heading, tagOrId], slot)
-  end
-  def current_headingconfiginfo(tagOrId, slot=nil)
-    __current_itemconfiginfo([:heading, tagOrId], slot)
-  end
-  alias heading_cget headingcget
-  alias heading_configure headingconfigure
-  alias heading_configinfo headingconfiginfo
-  alias current_heading_configinfo current_headingconfiginfo
-
-  # Treeview Tag
-  def tagcget(tagOrId, option)
-    __itemcget([:tag, tagOrId], option)
-  end
-  def tagconfigure(tagOrId, slot, value=None)
-    __itemconfigure([:tag, tagOrId], slot, value)
-  end
-  def tagconfiginfo(tagOrId, slot=nil)
-    __itemconfiginfo([:tag, tagOrId], slot)
-  end
-  def current_tagconfiginfo(tagOrId, slot=nil)
-    __current_itemconfiginfo([:tag, tagOrId], slot)
-  end
-  alias tag_cget tagcget
-  alias tag_configure tagconfigure
-  alias tag_configinfo tagconfiginfo
-  alias current_tag_configinfo current_tagconfiginfo
-end
-
-########################
-
-class Tk::Tile::Treeview::Item < TkObject
-  ItemID_TBL = TkCore::INTERP.create_table
-  TkCore::INTERP.init_ip_env{ Tk::Tile::Treeview::Item::ItemID_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::Tile::Treeview::Item::ItemID_TBL[tpath]
-    (Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id])? \
-          Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]: id
-  end
-
-  def self.assign(tree, id)
-    tpath = tree.path
-    if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
-        Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]
-      return Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]
-    end
-
-    obj = self.allocate
-    obj.instance_eval{
-      @parent = @t = tree
-      @tpath = tpath
-      @path = @id = id
-    }
-    ItemID_TBL[tpath] = {} unless ItemID_TBL[tpath]
-    Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id] = obj
-    obj
-  end
-
-  def _insert_item(tree, parent_item, idx, keys={})
-    keys = _symbolkey2str(keys)
-    id = keys.delete('id')
-    if id
-      num_or_str(tk_call(tree, 'insert', 
-                         parent_item, idx, '-id', id, *hash_kv(keys)))
-    else
-      num_or_str(tk_call(tree, 'insert', parent_item, idx, *hash_kv(keys)))
-    end
-  end
-  private :_insert_item
-
-  def initialize(tree, parent_item = '', idx = 'end', keys = {})
-    if parent_item.kind_of?(Hash)
-      keys = parent_item
-      idx = 'end'
-      parent_item = ''
-    elsif idx.kind_of?(Hash)
-      keys = idx
-      idx = 'end'
-    end
-
-    @parent = @t = tree
-    @tpath = tree.path
-    @path = @id = _insert_item(@t, parent_item, idx, keys)
-    ItemID_TBL[@tpath] = {} unless ItemID_TBL[@tpath]
-    ItemID_TBL[@tpath][@id] = self
-  end
-  def id
-    @id
-  end
-
-  def cget(option)
-    @t.itemcget(@id, option)
-  end
-
-  def configure(key, value=None)
-    @t.itemconfigure(@id, key, value)
-    self
-  end
-
-  def configinfo(key=nil)
-    @t.itemconfiginfo(@id, key)
-  end
-
-  def current_configinfo(key=nil)
-    @t.current_itemconfiginfo(@id, key)
-  end
-
-  def open?
-    cget('open')
-  end
-  def open
-    configure('open', true)
-    self
-  end
-  def close
-    configure('open', false)
-    self
-  end
-
-  def bbox(column=None)
-    @t.bbox(@id, column)
-  end
-
-  def children
-    @t.children(@id)
-  end
-  def set_children(*items)
-    @t.set_children(@id, *items)
-    self
-  end
-
-  def delete
-    @t.delete(@id)
-    self
-  end
-
-  def detach
-    @t.detach(@id)
-    self
-  end
-
-  def exist?
-    @t.exist?(@id)
-  end
-
-  def focus
-    @t.focus_item(@id)
-  end
-
-  def index
-    @t.index(@id)
-  end
-
-  def insert(idx='end', keys={})
-    @t.insert(@id, idx, keys)
-  end
-
-  def move(parent, idx)
-    @t.move(@id, parent, idx)
-    self
-  end
-
-  def next_item
-    @t.next_item(@id)
-  end
-
-  def parent_item
-    @t.parent_item(@id)
-  end
-
-  def prev_item
-    @t.prev_item(@id)
-  end
-
-  def see
-    @t.see(@id)
-    self
-  end
-
-  def selection_add
-    @t.selection_add(@id)
-    self
-  end
-
-  def selection_remove
-    @t.selection_remove(@id)
-    self
-  end
-
-  def selection_set
-    @t.selection_set(@id)
-    self
-  end
-
-  def selection_toggle
-    @t.selection_toggle(@id)
-    self
-  end
-
-  def get_directory
-    @t.get_directory(@id)
-  end
-  alias get_dictionary get_directory
-
-  def get(col)
-    @t.get(@id, col)
-  end
-
-  def set(col, value)
-    @t.set(@id, col, value)
-  end
-end
-
-########################
-
-class Tk::Tile::Treeview::Root < Tk::Tile::Treeview::Item
-  def self.new(tree, keys = {})
-    tpath = tree.path
-    if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
-        Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
-      Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
-    else
-      super(tree, keys)
-    end
-  end
-
-  def initialize(tree, keys = {})
-    @parent = @t = tree
-    @tpath = tree.path
-    @path = @id = ''
-    unless Tk::Tile::Treeview::Item::ItemID_TBL[@tpath]
-      Tk::Tile::Treeview::Item::ItemID_TBL[@tpath] = {}
-    end
-    Tk::Tile::Treeview::Item::ItemID_TBL[@tpath][@id] = self
-  end
-end
-
-########################
-
-class Tk::Tile::Treeview::Tag < TkObject
-  include TkTreatTagFont
-
-  TagID_TBL = TkCore::INTERP.create_table
-  Tag_ID = ['tile_treeview_tag'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ Tk::Tile::Treeview::Tag::TagID_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::Tile::Treeview::Tag::TagID_TBL[tpath]
-    (Tk::Tile::Treeview::Tag::TagID_TBL[tpath][id])? \
-          Tk::Tile::Treeview::Tag::TagID_TBL[tpath][id]: id
-  end
-
-  def initialize(tree, keys=nil)
-    @parent = @t = tree
-    @tpath = tree.path
-    @path = @id = Tag_ID.join(TkCore::INTERP._ip_id_)
-    TagID_TBL[@tpath] = {} unless TagID_TBL[@tpath]
-    TagID_TBL[@tpath][@id] = self
-    Tag_ID[1].succ!
-    if keys && keys != None
-      tk_call_without_enc(@tpath, 'tag', 'configure', *hash_kv(keys, true))
-    end
-  end
-  def id
-    @id
-  end
-
-  def bind(seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    @t.tag_bind(@id, seq, cmd, *args)
-    self
-  end
-
-  def bind_append(seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    @t.tag_bind_append(@id, seq, cmd, *args)
-    self
-  end
-
-  def bind_remove(seq)
-    @t.tag_bind_remove(@id, seq)
-    self
-  end
-
-  def bindinfo(seq=nil)
-    @t.tag_bindinfo(@id, seq)
-  end
-
-  def cget(option)
-    @t.tagcget(@id, option)
-  end
-
-  def configure(key, value=None)
-    @t.tagconfigure(@id, key, value)
-    self
-  end
-
-  def configinfo(key=nil)
-    @t.tagconfiginfo(@id, key)
-  end
-
-  def current_configinfo(key=nil)
-    @t.current_tagconfiginfo(@id, key)
-  end
-end
-
-########################
-
-class Tk::Tile::Treeview < TkWindow
-  include Tk::Tile::TileWidget
-  include Scrollable
-
-  include Tk::Tile::TreeviewConfig
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::treeview'.freeze].freeze
-  else
-    TkCommandNames = ['::treeview'.freeze].freeze
-  end
-  WidgetClassName = 'Treeview'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __destroy_hook__
-    Tk::Tile::Treeview::Item::ItemID_TBL.delete(@path)
-    Tk::Tile::Treeview::Tag::ItemID_TBL.delete(@path)
-  end
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-
-  def tagid(id)
-    if id.kind_of?(Tk::Tile::Treeview::Item) || 
-        id.kind_of?(Tk::Tile::Treeview::Tag)
-      id.id
-    elsif id.kind_of?(Array)
-      [id[0], _get_eval_string(id[1])]
-    else
-      _get_eval_string(id)
-    end
-  end
-
-  def root
-    Tk::Tile::Treeview::Root.new(self)
-  end
-
-  def bbox(item, column=None)
-    list(tk_send('item', 'bbox', item, column))
-  end
-
-  def children(item)
-    simplelist(tk_send_without_enc('children', item)).collect{|id|
-      Tk::Tile::Treeview::Item.id2obj(self, id)
-    }
-  end
-  def set_children(item, *items)
-    tk_send_without_enc('children', item, 
-                        array2tk_list(items.flatten, true))
-    self
-  end
-
-  def delete(*items)
-    tk_send_without_enc('delete', array2tk_list(items.flatten, true))
-    self
-  end
-
-  def detach(*items)
-    tk_send_without_enc('detach', array2tk_list(items.flatten, true))
-    self
-  end
-
-  def exist?(item)
-    bool(tk_send_without_enc('exists', _get_eval_enc_str(item)))
-  end
-
-  def focus_item(item = nil)
-    if item
-      tk_send('focus', item)
-      item
-    else
-      id = tk_send('focus')
-      (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
-    end
-  end
-
-  def identify(x, y)
-    # tile-0.7.2 or previous
-    ret = simplelist(tk_send('identify', x, y))
-    case ret[0]
-    when 'heading', 'separator'
-      ret[-1] = num_or_str(ret[-1])
-    when 'cell'
-      ret[1] = Tk::Tile::Treeview::Item.id2obj(self, ret[1])
-      ret[-1] = num_or_str(ret[-1])
-    when 'item', 'row'
-      ret[1] = Tk::Tile::Treeview::Item.id2obj(self, ret[1])
-    end
-  end
-
-  def row_identify(x, y)
-    id = tk_send('identify', 'row', x, y)
-    (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
-  end
-
-  def column_identify(x, y)
-    tk_send('identify', 'column', x, y)
-  end
-
-  def index(item)
-    number(tk_send('index', item))
-  end
-
-  # def insert(parent, idx='end', keys={})
-  #   keys = _symbolkey2str(keys)
-  #   id = keys.delete('id')
-  #   if id
-  #     num_or_str(tk_send('insert', parent, idx, '-id', id, *hash_kv(keys)))
-  #   else
-  #     num_or_str(tk_send('insert', parent, idx, *hash_kv(keys)))
-  #   end
-  # end
-  def insert(parent, idx='end', keys={})
-    Tk::Tile::Treeview::Item.new(self, parent, idx, keys)
-  end
-
-  # def instate(spec, cmd=Proc.new)
-  #   tk_send('instate', spec, cmd)
-  # end
-  # def state(spec=None)
-  #   tk_send('state', spec)
-  # end
-
-  def move(item, parent, idx)
-    tk_send('move', item, parent, idx)
-    self
-  end
-
-  def next_item(item)
-    id = tk_send('next', item)
-    (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
-  end
-
-  def parent_item(item)
-    if (id = tk_send('parent', item)).empty?
-      Tk::Tile::Treeview::Root.new(self)
-    else
-      Tk::Tile::Treeview::Item.id2obj(self, id)
-    end
-  end
-
-  def prev_item(item)
-    id = tk_send('prev', item)
-    (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
-  end
-
-  def see(item)
-    tk_send('see', item)
-    self
-  end
-
-  def selection
-    simplelist(tk_send('selection')).collect{|id|
-      Tk::Tile::Treeview::Item.id2obj(self, id)
-    }
-  end
-  alias selection_get selection
-
-  def selection_add(*items)
-    tk_send('selection', 'add', array2tk_list(items.flatten, true))
-    self
-  end
-  def selection_remove(*items)
-    tk_send('selection', 'remove', array2tk_list(items.flatten, true))
-    self
-  end
-  def selection_set(*items)
-    tk_send('selection', 'set', array2tk_list(items.flatten, true))
-    self
-  end
-  def selection_toggle(*items)
-    tk_send('selection', 'toggle', array2tk_list(items.flatten, true))
-    self
-  end
-
-  def get_directory(item)
-    # tile-0.7+
-    ret = []
-    lst = simplelist(tk_send('set', item))
-    until lst.empty?
-      col = lst.shift
-      val = lst.shift
-      ret << [col, val]
-    end
-    ret
-  end
-  alias get_dictionary get_directory
-
-  def get(item, col)
-    tk_send('set', item, col)
-  end
-  def set(item, col, value)
-    tk_send('set', item, col, value)
-    self
-  end
-
-  def tag_bind(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
-    self
-  end
-  alias tagbind tag_bind
-
-  def tag_bind_append(tag, seq, *args)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
-    self
-  end
-  alias tagbind_append tag_bind_append
-
-  def tag_bind_remove(tag, seq)
-    _bind_remove([@path, 'tag', 'bind', tag], seq)
-    self
-  end
-  alias tagbind_remove tag_bind_remove
-
-  def tag_bindinfo(tag, context=nil)
-    _bindinfo([@path, 'tag', 'bind', tag], context)
-  end
-  alias tagbindinfo tag_bindinfo
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscale.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscale.rb
deleted file mode 100644
index 7ec72e3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscale.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-#  tscale & tprogress widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TScale < TkScale
-    end
-    Scale = TScale
-
-    class TProgress < TScale
-    end
-    Progress = TProgress
-  end
-end
-
-class Tk::Tile::TScale < TkScale
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::scale'.freeze].freeze
-  else
-    TkCommandNames = ['::tscale'.freeze].freeze
-  end
-  WidgetClassName = 'TScale'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
-
-class Tk::Tile::TProgress < Tk::Tile::TScale
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::progress'.freeze].freeze
-  else
-    TkCommandNames = ['::tprogress'.freeze].freeze
-  end
-  WidgetClassName = 'TProgress'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscrollbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscrollbar.rb
deleted file mode 100644
index bd49ae1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tscrollbar.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tscrollbar widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TScrollbar < TkScrollbar
-    end
-    Scrollbar = TScrollbar
-  end
-end
-
-class Tk::Tile::TScrollbar < TkScrollbar
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::scrollbar'.freeze].freeze
-  else
-    TkCommandNames = ['::tscrollbar'.freeze].freeze
-  end
-  WidgetClassName = 'TScrollbar'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tseparator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tseparator.rb
deleted file mode 100644
index ca731d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tseparator.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tseparator widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TSeparator < TkWindow
-    end
-    Separator = TSeparator
-  end
-end
-
-class Tk::Tile::TSeparator < TkWindow
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::separator'.freeze].freeze
-  else
-    TkCommandNames = ['::tseparator'.freeze].freeze
-  end
-  WidgetClassName = 'TSeparator'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tsquare.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tsquare.rb
deleted file mode 100644
index 600b55e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tile/tsquare.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#  tsquare widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tkextlib/tile.rb'
-
-module Tk
-  module Tile
-    class TSquare < TkWindow
-    end
-    Square = TSquare
-  end
-end
-
-class Tk::Tile::TSquare < TkWindow
-  include Tk::Tile::TileWidget
-
-  if Tk::Tile::USE_TTK_NAMESPACE
-    TkCommandNames = ['::ttk::square'.freeze].freeze
-  else
-    TkCommandNames = ['::tsquare'.freeze].freeze
-  end
-  WidgetClassName = 'TSquare'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def self.style(*args)
-    [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND.rb
deleted file mode 100644
index 5d52e34..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-#  TkDND (Tk Drag & Drop Extension) support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkDND/setup.rb'
-
-module Tk
-  module TkDND
-    autoload :DND,   'tkextlib/tkDND/tkdnd'
-    autoload :Shape, 'tkextlib/tkDND/shape'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/shape.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/shape.rb
deleted file mode 100644
index 570c93b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/shape.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-#
-#  tkextlib/tkDND/shape.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkDND/setup.rb'
-
-# TkPackage.require('shape', '0.3')
-TkPackage.require('shape')
-
-module Tk
-  module TkDND
-    module Shape
-      extend TkCore
-
-      PACKAGE_NAME = 'shape'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-=begin
-      def self.package_version
-        begin
-          TkPackage.require('shape')
-        rescue
-          ''
-        end
-      end
-=end
-      def self.package_version
-        Tk.tk_call('set', 'shape_version')
-      end
-      alias shape_version package_version
-
-      def self.package_patchlevel
-        Tk.tk_call('set', 'shape_patchlevel')
-      end
-      alias shape_patchlevel package_patchlevel
-
-      def self.version
-        tk_call('shape', 'version')
-      end
-      alias xshape_version version
-
-      ############################
-
-      def shape_bounds(kind=nil)
-        if kind
-          ret = tk_call('shape', 'bounds', @path, "-#{kind}")
-        else
-          ret = tk_call('shape', 'bounds', @path)
-        end
-        if ret == ""
-          nil
-        else
-          list(ret)
-        end
-      end
-
-      def shape_get(kind=nil)
-        if kind
-          list(tk_call('shape', 'get', @path, "-#{kind}"))
-        else
-          list(tk_call('shape', 'get', @path))
-        end
-      end
-
-      def shape_offset(x, y, kind=nil)
-        if kind
-          tk_call('shape', 'get', @path, "-#{kind}", x, y)
-        else
-          tk_call('shape', 'get', @path, x, y)
-        end
-        self
-      end
-
-      def _parse_shapespec_param(args)
-        cmd = []
-
-        kind_keys    = ['bounding', 'clip', 'both']
-        offset_keys  = ['offset']
-        srckind_keys = ['bitmap', 'rectangles', 'reset', 'test', 'window']
-
-        cmd << "-#{args.shift}" if kind_keys.member?(args[0].to_s)
-
-        if offset_keys.member?(args[0].to_s)
-          cmd << "-#{args.shift}"
-          cmd << args.shift # xOffset
-          cmd << args.shift # yOffset
-        end
-
-        if srckind_keys.member?(args[0].to_s)
-          cmd << "-#{args.shift}"
-        end
-
-        cmd.concat(args)
-
-        cmd
-      end
-      private :_parse_shapespec_param
-
-      def shape_set(*args) # ?kind? ?offset <x> <y>? srckind ?arg ...?
-        tk_call('shape', 'set', @path, *(_parse_shapespec_param(args)))
-        self
-      end
-
-      def shape_update(op, *args) # ?kind? ?offset <x> <y>? srckind ?arg ...?
-        tk_call('shape', 'update', @path, op, *(_parse_shapespec_param(args)))
-        self
-      end
-    end
-  end
-end
-
-class TkWindow
-  include Tk::TkDND::Shape
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/tkdnd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/tkdnd.rb
deleted file mode 100644
index a040532..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkDND/tkdnd.rb
+++ /dev/null
@@ -1,164 +0,0 @@
-#
-#  tkextlib/tkDND/tkdnd.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkDND/setup.rb'
-
-TkPackage.require('tkdnd')
-
-module Tk
-  module TkDND
-    PACKAGE_NAME = 'tkdnd'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('tkdnd')
-      rescue
-        ''
-      end
-    end
-
-    class DND_Subst < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?a, ?l, :actions ], 
-        [ ?A, ?s, :action ], 
-        [ ?b, ?L, :codes ], 
-        [ ?c, ?s, :code ], 
-        [ ?d, ?l, :descriptions ], 
-        [ ?D, ?l, :data ], 
-        [ ?L, ?l, :source_types ], 
-        [ ?m, ?l, :modifiers ], 
-        [ ?t, ?l, :types ], 
-        [ ?T, ?s, :type ], 
-        [ ?W, ?w, :widget ], 
-        [ ?x, ?n, :x ], 
-        [ ?X, ?n, :x_root ], 
-        [ ?y, ?n, :y ], 
-        [ ?Y, ?n, :y_root ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:num_or_str) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?l, TkComm.method(:list) ], 
-        [ ?L, TkComm.method(:simplelist) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      # setup tables
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-    end
-
-    module DND
-      def self.version
-        begin
-          TkPackage.require('tkdnd')
-        rescue
-          ''
-        end
-      end
-
-      def dnd_bindtarget_info(type=nil, event=nil)
-        if event
-          procedure(tk_call('dnd', 'bindtarget', @path, type, event))
-        elsif type
-          procedure(tk_call('dnd', 'bindtarget', @path, type))
-        else
-          simplelist(tk_call('dnd', 'bindtarget', @path))
-        end
-      end
-
-      #def dnd_bindtarget(type, event, cmd=Proc.new, prior=50, *args)
-      #  event = tk_event_sequence(event)
-      #  if prior.kind_of?(Numeric)
-      #    tk_call('dnd', 'bindtarget', @path, type, event, 
-      #            install_bind_for_event_class(DND_Subst, cmd, *args), 
-      #            prior)
-      #  else
-      #    tk_call('dnd', 'bindtarget', @path, type, event, 
-      #            install_bind_for_event_class(DND_Subst, cmd, prior, *args))
-      #  end
-      #  self
-      #end
-      def dnd_bindtarget(type, event, *args)
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-
-        prior = 50
-        prior = args.shift unless args.empty?
-
-        event = tk_event_sequence(event)
-        if prior.kind_of?(Numeric)
-          tk_call('dnd', 'bindtarget', @path, type, event, 
-                  install_bind_for_event_class(DND_Subst, cmd, *args), 
-                  prior)
-        else
-          tk_call('dnd', 'bindtarget', @path, type, event, 
-                  install_bind_for_event_class(DND_Subst, cmd, prior, *args))
-        end
-        self
-      end
-
-      def dnd_cleartarget
-        tk_call('dnd', 'cleartarget', @path)
-        self
-      end
-
-      def dnd_bindsource_info(type=nil)
-        if type
-          procedure(tk_call('dnd', 'bindsource', @path, type))
-        else
-          simplelist(tk_call('dnd', 'bindsource', @path))
-        end
-      end
-
-      #def dnd_bindsource(type, cmd=Proc.new, prior=None)
-      #  tk_call('dnd', 'bindsource', @path, type, cmd, prior)
-      #  self
-      #end
-      def dnd_bindsource(type, *args)
-        # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-        if TkComm._callback_entry?(args[0]) || !block_given?
-          cmd = args.shift
-        else
-          cmd = Proc.new
-        end
-
-        args = [None] if args.empty
-
-        tk_call('dnd', 'bindsource', @path, type, cmd, *args)
-        self
-      end
-
-      def dnd_clearsource()
-        tk_call('dnd', 'clearsource', @path)
-        self
-      end
-
-      def dnd_drag(keys=nil)
-        tk_call('dnd', 'drag', @path, *hash_kv(keys))
-        self
-      end
-    end
-  end
-end
-
-class TkWindow
-  include Tk::TkDND::DND
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML.rb
deleted file mode 100644
index 5fddde7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  TkHtml support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkHTML/setup.rb'
-
-# load library
-require 'tkextlib/tkHTML/htmlwidget'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/htmlwidget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/htmlwidget.rb
deleted file mode 100644
index 8527f61..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/htmlwidget.rb
+++ /dev/null
@@ -1,444 +0,0 @@
-#
-#  tkextlib/tkHTML/htmlwidget.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkHTML/setup.rb'
-
-# TkPackage.require('Tkhtml', '2.0')
-TkPackage.require('Tkhtml')
-
-module Tk
-  class HTML_Widget < TkWindow
-    PACKAGE_NAME = 'Tkhtml'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Tkhtml')
-      rescue
-        ''
-      end
-    end
-
-    class ClippingWindow < TkWindow
-    end
-  end
-end
-
-class Tk::HTML_Widget::ClippingWindow
-  WidgetClassName = 'HtmlClip'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  HtmlClip_TBL = TkCore::INTERP.create_table
-  TkCore::INTERP.init_ip_env{ HtmlClip_TBL.clear }
-
-  def self.new(parent, keys={})
-    if parent.kind_of?(Hash)
-      keys = TkComm._symbolkey2str(parent)
-      parent = keys.delete('parent')
-    end
-
-    if parent.kind_of?(String)
-      ppath = parent.path
-    elsif parent
-      ppath = parent
-    else
-      ppath = ''
-    end
-    return HtmlClip_TBL[ppath] if HtmlClip_TBL[ppath]
-
-    widgetname = keys.delete('widgetname')
-    if widgetname =~ /^(.*)\.[^.]+$/
-      ppath2 = $1
-      if ppath2[0] != ?.
-        ppath2 = ppath + '.' + ppath2
-      end
-      return HtmlClip_TBL[ppath2] if HtmlClip_TBL[ppath2]
-
-      ppath = ppath2
-    end
-    
-    parent = TkComm._genobj_for_tkwidget(ppath)
-    unless parent.kind_of?(Tk::HTML_Widget)
-      fail ArgumentError, "parent must be a Tk::HTML_Widget instance"
-    end
-
-    super(parent)
-  end
-
-  def initialize(parent)
-    @parent = parent
-    @ppath = parent.path
-    @path = @id = @ppath + '.x'
-    HtmlClip_TBL[@ppath] = self
-  end
-
-  def method_missing(m, *args, &b)
-    @parent.__send__(m, *args, &b)
-  end
-end
-
-class Tk::HTML_Widget
-  include Scrollable
-
-  TkCommandNames = ['html'.freeze].freeze
-  WidgetClassName = 'Html'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  def __strval_optkeys
-    super() << 'base' << 'selectioncolor' << 'unvisitedcolor' << 'visitedcolor'
-  end
-  private :__strval_optkeys
-
-  ###################################
-  #  class methods
-  ###################################
-  def self.reformat(src, dst, txt)
-    tk_call('html', 'reformat', src, dst, txt)
-  end
-
-  def self.url_join(*args) # args := sheme authority path query fragment
-    tk_call('html', 'urljoin', *args)
-  end
-
-  def self.url_split(uri)
-    tk_call('html', 'urlsplit', uri)
-  end
-
-  def self.lockcopy(src, dst)
-    tk_call('html', 'lockcopy', src, dst)
-  end
-
-  def self.gzip_file(file, dat)
-    tk_call('html', 'gzip', 'file', file, dat)
-  end
-
-  def self.gunzip_file(file, dat)
-    tk_call('html', 'gunzip', 'file', filet)
-  end
-
-  def self.gzip_data(dat)
-    tk_call('html', 'gzip', 'data', file, dat)
-  end
-
-  def self.gunzip_data(dat)
-    tk_call('html', 'gunzip', 'data', filet)
-  end
-
-  def self.base64_encode(dat)
-    tk_call('html', 'base64', 'encode', dat)
-  end
-
-  def self.base64_decode(dat)
-    tk_call('html', 'base64', 'encode', dat)
-  end
-
-  def self.text_format(dat, len)
-    tk_call('html', 'text', 'format', dat, len)
-  end
-
-  def self.xor(cmd, *args)
-    tk_call('html', 'xor', cmd, *args)
-  end
-
-  def self.stdchan(cmd, channel)
-    tk_call('html', 'stdchan', cmd, channel)
-  end
-
-  def self.crc32(data)
-    tk_call('html', 'crc32', data)
-  end
-
-  ###################################
-  #  instance methods
-  ###################################
-  def clipping_window
-    ClippingWindow.new(self)
-  end
-  alias clipwin  clipping_window
-  alias htmlclip clipping_window
-
-  def bgimage(image, tid=None)
-    tk_send('bgimage', image, tid)
-    self
-  end
-
-  def clear()
-    tk_send('clear')
-    self
-  end
-
-  def coords(index=None, percent=None)
-    tk_send('coords', index, percent)
-  end
-
-  def forminfo(*args)
-    tk_send('forminfo', *args)
-  end
-  alias form_info forminfo
-
-  def href(x, y)
-    simplelist(tk_send('href', x, y))
-  end
-
-  def image_add(id, img)
-    tk_send('imageadd', id, img)
-    self
-  end
-
-  def image_at(x, y)
-    tk_send('imageat', x, y)
-  end
-
-  def images()
-    list(tk_send('images'))
-  end
-
-  def image_set(id, num)
-    tk_send('imageset', id, num)
-    self
-  end
-
-  def image_update(id, imgs)
-    tk_send('imageupdate', id, imgs)
-    self
-  end
-
-  def index(idx, count=None, unit=None)
-    tk_send('index', idx, count, unit)
-  end
-
-  def insert_cursor(idx)
-    tk_send('insert', idx)
-  end
-
-  def names()
-    simple_list(tk_send('names'))
-  end
-
-  def on_screen(id, x, y)
-    bool(tk_send('onscreen', id, x, y))
-  end
-
-  def over(x, y)
-    list(tk_send('over', x, y))
-  end
-
-  def over_markup(x, y)
-    list(tk_send('over', x, y, '-muponly'))
-  end
-
-  def over_attr(x, y, attrs)
-    list(tk_send('overattr', x, y, attrs))
-  end
-
-  def parse(txt)
-    tk_send('parse', txt)
-    self
-  end
-
-  def resolver(*uri_args)
-    tk_send('resolver', *uri_args)
-  end
-
-  def selection_clear()
-    tk_send('selection', 'clear')
-    self
-  end
-
-  def selection_set(first, last)
-    tk_send('selection', 'set', first, last)
-    self
-  end
-
-  def refresh(*opts)
-    tk_send('refresh', *opts)
-  end
-
-  def layout()
-    tk_send('layout')
-  end
-
-  def sizewindow(*args)
-    tk_send('sizewindow', *args)
-  end
-
-  def postscript(*args)
-    tk_send('postscript', *args)
-  end
-
-  def source()
-    tk_send('source')
-  end
-
-  def plain_text(first, last)
-    tk_send('text', 'ascii', first, last)
-  end
-  alias ascii_text plain_text
-  alias text_ascii plain_text
-
-  def text_delete(first, last)
-    tk_send('text', 'delete', first, last)
-    self
-  end
-
-  def html_text(first, last)
-    tk_send('text', 'html', first, last)
-  end
-  alias text_html html_text
-
-  def text_insert(idx, txt)
-    tk_send('text', 'insert', idx, txt)
-    self
-  end
-
-  def break_text(idx)
-    tk_send('text', 'break', idx)
-  end
-  alias text_break break_text
-
-  def text_find(txt, *args)
-    tk_send('text', 'find', txt, *args)
-  end
-
-  def text_table(idx, imgs=None, attrs=None)
-    tk_send('text', 'table', idx, imgs, attrs)
-  end
-
-  def token_append(tag, *args)
-    tk_send('token', 'append', tag, *args)
-    self
-  end
-
-  def token_delete(first, last=None)
-    tk_send('token', 'delete', first, last)
-    self
-  end
-
-  def token_define(*args)
-    tk_send('token', 'defile', *args)
-    self
-  end
-
-  def token_find(tag, *args)
-    list(tk_send('token', 'find', tag, *args))
-  end
-
-  def token_get(first, last=None)
-    list(tk_send('token', 'get', first, last))
-  end
-
-  def token_list(first, last=None)
-    list(tk_send('token', 'list', first, last))
-  end
-
-  def token_markup(first, last=None)
-    list(tk_send('token', 'markup', first, last))
-  end
-
-  def token_DOM(first, last=None)
-    list(tk_send('token', 'domtokens', first, last))
-  end
-  alias token_dom token_DOM
-  alias token_domtokens token_DOM
-  alias token_dom_tokens token_DOM
-
-  def token_get_end(idx)
-    tk_send('token', 'getend', idx)
-  end
-  alias token_getend token_get_end
-
-  def token_offset(start, num1, num2)
-    list(tk_send('token', 'offset', start, num1, num2))
-  end
-
-  def token_get_attr(idx, name=None)
-    list(tk_send('token', 'attr', idx, name))
-  end
-
-  def token_set_attr(idx, name=None, val=None)
-    tk_send('token', 'attr', idx, name, val)
-    self
-  end
-
-  def token_handler(tag, cmd=nil, &b)
-    cmd = Proc.new(&b) if !cmd && b
-    if cmd
-      tk_send('token', 'handler', tag, cmd)
-      return self
-    else
-      return tk_send('token', 'handler', tag)
-    end
-  end
-
-  def token_insert(idx, tag, *args)
-    tk_send('token', 'insert', idx, tag, *args)
-    self
-  end
-
-  def token_attrs(*args)
-    list(tk_send('token', 'attrs', *args))
-  end
-
-  def token_unique(*args)
-    list(tk_send('token', 'unique', *args))
-  end
-
-  def token_on_events(*args)
-    list(tk_send('token', 'onEvents', *args))
-  end
-
-  def dom_nameidx(tag, name)
-    number(tk_send('dom', 'nameidx', tag, name))
-  end
-  alias dom_name_index dom_nameidx
-
-  def dom_radioidx(tag, name)
-    number(tk_send('dom', 'radioidx', tag, name))
-  end
-  alias dom_radio_index dom_radioidx
-
-  def dom_id(*spec)
-    tk_send('dom', 'id', *spec)
-  end
-
-  def dom_ids(*spec)
-    list(tk_send('dom', 'ids', *spec))
-  end
-
-  def dom_value(*spec)
-    list(tk_send('dom', 'value', *spec))
-  end
-
-  def dom_attr(idx)
-    tk_send('dom', 'attr', idx)
-  end
-
-  def dom_formel(name)
-    tk_send('dom', 'formel', name)
-  end
-  alias dom_form_element dom_formel
-
-  def dom_tree(idx, val)
-    list(tk_send('dom', 'tree', idx, val))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkHTML/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg.rb
deleted file mode 100644
index c01359d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#  TkImg extension support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# load all image format handlers
-#TkPackage.require('Img', '1.3')
-TkPackage.require('Img')
-
-module Tk
-  module Img
-    PACKAGE_NAME = 'Img'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Img')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-# autoload
-autoload :TkPixmapImage, 'tkextlib/tkimg/pixmap'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/bmp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/bmp.rb
deleted file mode 100644
index ea90181..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/bmp.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'bmp'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-#TkPackage.require('img::bmp', '1.3')
-TkPackage.require('img::bmp')
-
-module Tk
-  module Img
-    module BMP
-      PACKAGE_NAME = 'img::bmp'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::bmp')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/gif.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/gif.rb
deleted file mode 100644
index d542d47..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/gif.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'gif'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::gif', '1.3')
-TkPackage.require('img::gif')
-
-module Tk
-  module Img
-    module GIF
-      PACKAGE_NAME = 'img::gif'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::gif')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ico.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ico.rb
deleted file mode 100644
index e79bdf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ico.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'ico'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::ico', '1.3')
-TkPackage.require('img::ico')
-
-module Tk
-  module Img
-    module ICO
-      PACKAGE_NAME = 'img::ico'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::ico')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/jpeg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/jpeg.rb
deleted file mode 100644
index 2126120..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/jpeg.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'jpeg'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::jpeg', '1.3')
-TkPackage.require('img::jpeg')
-
-module Tk
-  module Img
-    module JPEG
-      PACKAGE_NAME = 'img::jpeg'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::jpeg')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pcx.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pcx.rb
deleted file mode 100644
index 6831f4d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pcx.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'pcx'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::pcx', '1.3')
-TkPackage.require('img::pcx')
-
-module Tk
-  module Img
-    module PCX
-      PACKAGE_NAME = 'img::pcx'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::pcx')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pixmap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pixmap.rb
deleted file mode 100644
index bd1b870..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/pixmap.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-#  TkImg - format 'pixmap'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::pixmap', '1.3')
-TkPackage.require('img::pixmap')
-
-module Tk
-  module Img
-    module PIXMAP
-      PACKAGE_NAME = 'img::pixmap'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::pixmap')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
-
-class TkPixmapImage<TkImage
-  def self.version
-    Tk::Img::PIXMAP.version
-  end
-
-  def initialize(*args)
-    @type = 'pixmap'
-    super(*args)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/png.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/png.rb
deleted file mode 100644
index 5c829f4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/png.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'png'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::png', '1.3')
-TkPackage.require('img::png')
-
-module Tk
-  module Img
-    module PNG
-      PACKAGE_NAME = 'img::png'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::png')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ppm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ppm.rb
deleted file mode 100644
index eacfae4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ppm.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'ppm'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::ppm', '1.3')
-TkPackage.require('img::ppm')
-
-module Tk
-  module Img
-    module PPM
-      PACKAGE_NAME = 'img::ppm'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::ppm')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ps.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ps.rb
deleted file mode 100644
index 68e9178..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/ps.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'ps'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::ps', '1.3')
-TkPackage.require('img::ps')
-
-module Tk
-  module Img
-    module PS
-      PACKAGE_NAME = 'img::ps'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::ps')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sgi.rb
deleted file mode 100644
index ec7038b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sgi.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'sgi'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::sgi', '1.3')
-TkPackage.require('img::sgi')
-
-module Tk
-  module Img
-    module SGI
-      PACKAGE_NAME = 'img::sgi'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::sgi')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sun.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sun.rb
deleted file mode 100644
index 651f946..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/sun.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'sun'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::sun', '1.3')
-TkPackage.require('img::sun')
-
-module Tk
-  module Img
-    module SUN
-      PACKAGE_NAME = 'img::sun'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::sun')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tga.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tga.rb
deleted file mode 100644
index 1eae407..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tga.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'tga'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::tga', '1.3')
-TkPackage.require('img::tga')
-
-module Tk
-  module Img
-    module TGA
-      PACKAGE_NAME = 'img::tga'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::tga')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tiff.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tiff.rb
deleted file mode 100644
index ed271c2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/tiff.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'tiff'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::tiff', '1.3')
-TkPackage.require('img::tiff')
-
-module Tk
-  module Img
-    module TIFF
-      PACKAGE_NAME = 'img::tiff'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::tiff')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/window.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/window.rb
deleted file mode 100644
index 3b5906f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/window.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'window'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::window', '1.3')
-TkPackage.require('img::window')
-
-module Tk
-  module Img
-    module WINDOW
-      PACKAGE_NAME = 'img::window'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::window')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xbm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xbm.rb
deleted file mode 100644
index f4bea03..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xbm.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'xbm'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::xbm', '1.3')
-TkPackage.require('img::xbm')
-
-module Tk
-  module Img
-    module XBM
-      PACKAGE_NAME = 'img::xbm'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::xbm')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xpm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xpm.rb
deleted file mode 100644
index 5119c87..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tkimg/xpm.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#  TkImg - format 'xpm'
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tkimg/setup.rb'
-
-# TkPackage.require('img::xpm', '1.3')
-TkPackage.require('img::xpm')
-
-module Tk
-  module Img
-    module XPM
-      PACKAGE_NAME = 'img::xpm'.freeze
-      def self.package_name
-        PACKAGE_NAME
-      end
-
-      def self.package_version
-        begin
-          TkPackage.require('img::xpm')
-        rescue
-          ''
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable.rb
deleted file mode 100644
index 385eb13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-#  TkTable support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tktable/setup.rb'
-
-# load library
-require 'tkextlib/tktable/tktable'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/tktable.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/tktable.rb
deleted file mode 100644
index 4edaabc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktable/tktable.rb
+++ /dev/null
@@ -1,839 +0,0 @@
-#
-#  tkextlib/tktable/tktable.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-require 'tk/validation'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tktable/setup.rb'
-
-# TkPackage.require('Tktable', '2.8')
-TkPackage.require('Tktable')
-
-module Tk
-  class TkTable < TkWindow
-    PACKAGE_NAME = 'Tktable'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('Tktable')
-      rescue
-        ''
-      end
-    end
-
-    class CellTag < TkObject
-    end
-
-    module ConfigMethod
-    end
-  end
-end
-
-module Tk::TkTable::ConfigMethod
-  include TkItemConfigMethod
-
-  def __item_cget_cmd(id)  # id := [ type, tagOrId ]
-    [self.path, id[0], 'cget', id[1]]
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(id)  # id := [ type, tagOrId ]
-    [self.path, id[0], 'configure', id[1]]
-  end
-  private :__item_config_cmd
-
-  def __item_pathname(id)
-    if id.kind_of?(Array)
-      id = tagid(id[1])
-    end
-    [self.path, id].join(';')
-  end
-  private :__item_pathname
-
-  def __item_boolval_optkeys(id)
-    super(id) << 'multiline' << 'showtext' << 'wrap'
-  end
-  private :__item_boolval_optkeys
-
-  def __item_strval_optkeys(id)
-    super(id) << 'ellipsis'
-  end
-  private :__item_strval_optkeys
-
-  def __item_val2ruby_optkeys(id)  # { key=>method, ... }
-    super(id).update('window'=>proc{|v| window(v)})
-  end
-  private :__item_val2ruby_optkeys
-
-  def tag_cget(tagOrId, option)
-    itemcget(['tag', tagid(tagOrId)], option)
-  end
-  def tag_configure(tagOrId, slot, value=None)
-    itemconfigure(['tag', tagid(tagOrId)], slot, value)
-  end
-  def tag_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['tag', tagid(tagOrId)], slot)
-  end
-  def current_tag_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['tag', tagid(tagOrId)], slot)
-  end
-
-  def window_cget(tagOrId, option)
-    itemcget(['window', tagid(tagOrId)], option)
-  end
-  def window_configure(tagOrId, slot, value=None)
-    if slot == :window || slot == 'window'
-      value = _epath(value)
-    elsif slot.kind_of?(Hash)
-      if slot.key?(:window) || slot.key?('window')
-        slot = _symbolkey2str(slot)
-        slot['window'] = _epath(slot['window'])
-      end
-    end
-    itemconfigure(['window', tagid(tagOrId)], slot, value)
-  end
-  def window_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['window', tagid(tagOrId)], slot)
-  end
-  def current_window_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['window', tagid(tagOrId)], slot)
-  end
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-#####################################################
-
-class Tk::TkTable::CellTag
-  include TkTreatTagFont
-
-  CellTagID_TBL = TkCore::INTERP.create_table
-  CellTag_ID = ['tktbl:celltag'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ CellTagID_TBL.clear }
-
-  def self.id2obj(table, id)
-    tpath = table.path
-    return id unless CellTagID_TBL[tpath]
-    CellTagID_TBL[tpath][id]? CellTagID_TBL[tpath][id] : id
-  end
-
-  def initialize(parent, keys=nil)
-    @parent = @t = parent
-    @tpath - parent.path
-    @path = @id = CellTag_ID.join(TkCore::INTERP._ip_id_)
-    CellTagID_TBL[@tpath] = {} unless CellTagID_TBL[@tpath]
-    CellTagID_TBL[@tpath][@id] = self
-    CellTag_ID[1].succ!
-    configure(keys) if keys
-  end
-
-  def id
-    @id
-  end
-
-  def destroy
-    tk_call(@tpath, 'tag', 'delete', @id)
-    CellTagID_TBL[@tpath].delete(@id) if CellTagID_TBL[@tpath]
-    self
-  end
-  alias delete destroy
-
-  def exist?
-    @t.tag_exist?(@id)
-  end
-  def include?(idx)
-    @t.tag_include?(@id, idx)
-  end
-
-  def add_cell(*args)
-    @t.tag_cell(@id, *args)
-  end
-  def add_col(*args)
-    @t.tag_col(@id, *args)
-  end
-  def add_row(*args)
-    @t.tag_row(@id, *args)
-  end
-
-  def raise(target=None)
-    @t.tag_raise(@id, target)
-  end
-  def lower(target=None)
-    @t.tag_lower(@id, target)
-  end
-
-  def cget(key)
-    @t.tag_cget(@id, key)
-  end
-  def configure(key, val=None)
-    @t.tag_configure(@id, key, val)
-  end
-  def configinfo(key=nil)
-    @t.tag_configinfo(@id, key)
-  end
-  def current_configinfo(key=nil)
-    @t.current_tag_configinfo(@id, key)
-  end
-end
-
-class Tk::TkTable::NamedCellTag < Tk::TkTable::CellTag
-  def self.new(parent, name, keys=nil)
-    if CellTagID_TBL[parent.path] && CellTagID_TBL[parent.path][name]
-      cell = CellTagID_TBL[parent.path][name]
-      cell.configure(keys) if keys
-      return cell
-    else
-      super(parent, name, keys)
-    end
-  end
-
-  def initialize(parent, name, keys=nil)
-    @parent = @t = parent
-    @tpath - parent.path
-    @path = @id = name
-    CellTagID_TBL[@tpath] = {} unless CellTagID_TBL[@tpath]
-    CellTagID_TBL[@tpath][@id] = self
-    configure(keys) if keys
-  end
-end
-
-#####################################################
-
-class Tk::TkTable
-  TkCommandNames = ['table'.freeze].freeze
-  WidgetClassName = 'Table'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  include Scrollable
-  include Tk::TkTable::ConfigMethod
-  include Tk::ValidateConfigure
-
-  def __destroy_hook__
-    Tk::TkTable::CelTag::CellTagID_TBL.delete(@path)
-  end
-
-  def __boolval_optkeys
-    super() << 'autoclear' << 'flashmode' << 'invertselected' <<
-      'multiline' << 'selecttitle' << 'wrap'
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() << 'colseparator' << 'ellipsis' << 'rowseparator' << 'sparsearray'
-  end
-  private :__strval_optkeys
-
-
-  #################################
-
-  class BrowseCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?c, ?n, :column ], 
-        [ ?C, ?s, :index ], 
-        [ ?i, ?x, :cursor ], 
-        [ ?r, ?n, :row ], 
-        [ ?s, ?s, :last_index ], 
-        [ ?S, ?s, :new_index ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:number) ], 
-        [ ?x, TkComm.method(:num_or_str) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      ['browsecommand', 'browsecmd']
-    end
-  end
-  #--------------------------------
-  class CellCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?c, ?n, :column ], 
-        [ ?C, ?s, :index ], 
-        [ ?i, ?m, :rw_mode ], 
-        [ ?r, ?n, :row ], 
-        [ ?s, ?v, :value ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:number) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        [ ?m, proc{|val| (val == '0')? (:r) : (:w)} ], 
-        [ ?v, proc{|val| TkComm.tk_tcl2ruby(val, true, false)} ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        TkComm._get_eval_string(val)
-      end
-    end
-
-    def self._config_keys
-      ['command']
-    end
-  end
-  #--------------------------------
-  class SelectionCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?c, ?n, :sel_columns ], 
-        [ ?C, ?s, :sel_area ], 
-        [ ?i, ?n, :total ], 
-        [ ?r, ?n, :sel_rows ], 
-        [ ?s, ?s, :value ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:number) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val.to_s
-      end
-    end
-
-    def self._config_keys
-      ['selectioncommand', 'selcmd']
-    end
-  end
-  #--------------------------------
-  class ValidateCommand < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?c, ?n, :column ], 
-        [ ?C, ?s, :index ], 
-        [ ?i, ?x, :cursor ], 
-        [ ?r, ?n, :row ], 
-        [ ?s, ?v, :current_value ], 
-        [ ?S, ?v, :new_value ], 
-        [ ?W, ?w, :widget ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:number) ], 
-        [ ?x, TkComm.method(:num_or_str) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?w, TkComm.method(:window) ], 
-        [ ?v, proc{|val| TkComm.tk_tcl2ruby(val, true, false)} ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-    end
-
-    def self._config_keys
-      ['vcmd', 'validatecommand']
-    end
-  end
-
-  #################################
-
-  def __validation_class_list
-    super() << 
-      BrowseCommand << CellCommand << SelectionCommand << ValidateCommand
-  end
-
-  Tk::ValidateConfigure.__def_validcmd(binding, BrowseCommand)
-  Tk::ValidateConfigure.__def_validcmd(binding, CellCommand)
-  Tk::ValidateConfigure.__def_validcmd(binding, SelectionCommand)
-  Tk::ValidateConfigure.__def_validcmd(binding, ValidateCommand)
-
-  #################################
-
-  def activate(idx)
-    tk_send('activate', tagid(idx))
-  end
-
-  def bbox(idx)
-    list(tk_send('bbox', tagid(idx)))
-  end
-
-  def border_mark(x, y)
-    simplelist(tk_send('border', 'mark', x, y))
-  end
-  def border_mark_row(x, y)
-    tk_send('border', 'mark', x, y, 'row')
-  end
-  def border_mark_col(x, y)
-    tk_send('border', 'mark', x, y, 'col')
-  end
-  def border_dragto(x, y)
-    tk_send('border', 'dragto', x, y)
-  end
-
-  def clear_cache(first=None, last=None)
-    tk_send('clear', 'cache', tagid(first), tagid(last))
-    self
-  end
-  def clear_sizes(first=None, last=None)
-    tk_send('clear', 'sizes', tagid(first), tagid(last))
-    self
-  end
-  def clear_tags(first=None, last=None)
-    tk_send('clear', 'tags', tagid(first), tagid(last))
-    self
-  end
-  def clear_all(first=None, last=None)
-    tk_send('clear', 'all', tagid(first), tagid(last))
-    self
-  end
-
-  def curselection
-    simplelist(tk_send('curselection'))
-  end
-  def curselection=(val)
-    tk_send('curselection', val)
-    val
-  end
-
-  def curvalue
-    tk_tcl2ruby(tk_send('curvalue'), true, false)
-  end
-  def curvalue=(val)
-    tk_send('curvalue', val)
-    val
-  end
-
-  def delete_active(idx1, idx2=None)
-    tk_send('delete', 'active', tagid(idx1), tagid(idx2))
-    self
-  end
-  def delete_cols(*args) # ?switches_array?, index, ?count?
-    params = []
-    if args[0].kind_of?(Array)
-      switches = args.shift
-      switches.each{|k| params << "-#{k}"}
-    end
-    params << '--'
-    params << tagid(args.shift)
-    params.concat(args)
-    tk_send('delete', 'cols', *params)
-    self
-  end
-  def delete_rows(*args) # ?switches_array?, index, ?count?
-    params = []
-    if args[0].kind_of?(Array)
-      switches = args.shift
-      switches.each{|k| params << "-#{k}"}
-    end
-    params << '--'
-    params << tagid(args.shift)
-    params.concat(args)
-    tk_send('delete', 'rows', *params)
-    self
-  end
-
-  def get(idx)
-    tk_tcl2ruby(tk_send('get', tagid(idx)), true, false)
-  end
-  def get_area(idx1, idx2)
-    simplelist(tk_send('get', tagid(idx1), tagid(idx2))).collect{|v|
-      tk_tcl2ruby(v, true, false)
-    }
-  end
-
-  def height_list
-    list(tk_send('height'))
-  end
-  def height(row)
-    number(tk_send('height', row))
-  end
-  def set_height(*pairs)
-    tk_send('height', *(pairs.flatten))
-    self
-  end
-
-  def hidden_list
-    simplelist(tk_send('hidden'))
-  end 
-  def hidden?(idx, *args)
-    if args.empty?
-      if (ret = tk_send('hidden', tagid(idx))) == ''
-        false
-      else
-        ret
-      end
-    else
-      bool(tk_send('hidden', tagid(idx), *(args.collect{|i| tagid(i)})))
-    end
-  end
-
-  def icursor
-    number(tk_send('icursor'))
-  end
-  def icursor_set(idx)
-    number(tk_send('icursor', tagid(idx)))
-  end
-
-  def index(idx)
-    tk_send('index', tagid(idx))
-  end
-  def row_index(idx)
-    number(tk_send('index', tagid(idx), 'row'))
-  end
-  def col_index(idx)
-    number(tk_send('index', tagid(idx), 'col'))
-  end
-
-  def insert_active(idx, val)
-    tk_send('insert', 'active', tagid(idx), val)
-    self
-  end
-  def insert_cols(*args) # ?switches_array?, index, ?count?
-    params = []
-    if args[0].kind_of?(Array)
-      switches = args.shift
-      switches.each{|k| params << "-#{k}"}
-    end
-    params << '--'
-    params.concat(args)
-    params << tagid(args.shift)
-    tk_send('insert', 'cols', *params)
-    self
-  end
-  def insert_rows(*args) # ?switches_array?, index, ?count?
-    params = []
-    if args[0].kind_of?(Array)
-      switches = args.shift
-      switches.each{|k| params << "-#{k}"}
-    end
-    params << '--'
-    params << tagid(args.shift)
-    params.concat(args)
-    tk_send('insert', 'rows', *params)
-    self
-  end
-
-  # def postscript(*args)
-  #   tk_send('postscript', *args)
-  # end
-
-  def reread
-    tk_send('reread')
-    self
-  end
-
-  def scan_mark(x, y)
-    tk_send('scan', 'mark', x, y)
-    self
-  end
-  def scan_dragto(x, y)
-    tk_send('scan', 'dragto', x, y)
-    self
-  end
-
-  def see(idx)
-    tk_send('see', tagid(idx))
-    self
-  end
-
-  def selection_anchor(idx)
-    tk_send('selection', 'anchor', tagid(idx))
-    self
-  end
-  def selection_clear(first, last=None)
-    tk_send('selection', 'clear', tagid(first), tagid(last))
-    self
-  end
-  def selection_clear_all
-    selection_clear('all')
-  end
-  def selection_include?(idx)
-    bool(tk_send('selection', 'includes', tagid(idx)))
-  end
-  def selection_present
-    bool(tk_send('selection', 'present'))
-  end
-  def selection_set(first, last=None)
-    tk_send('selection', 'set', tagid(first), tagid(last))
-    self
-  end
-
-  def set(*pairs) # idx, val, idx, val, ... 
-    args = []
-    0.step(pairs.size-1, 2){|i|
-      args << tagid(pairs[i])
-      args << pairs[i+1]
-    }
-    tk_send('set', *args)
-    self
-  end
-  def set_row(*pairs) # idx, val, idx, val, ... 
-    args = []
-    0.step(pairs.size-1, 2){|i|
-      args << tagid(pairs[i])
-      args << pairs[i+1]
-    }
-    tk_send('set', 'row', *args)
-    self
-  end
-  def set_col(*pairs) # idx, val, idx, val, ... 
-    args = []
-    0.step(pairs.size-1, 2){|i|
-      args << tagid(pairs[i])
-      args << pairs[i+1]
-    }
-    tk_send('set', 'col', *args)
-    self
-  end
-=begin
-  def set(*pairs) # idx, val, idx, val, ...  OR [idx, val], [idx, val], ...
-    if pairs[0].kind_of?(Array)
-      # [idx, val], [idx, val], ...
-      args = []
-      pairs.each{|idx, val| args << tagid(idx) << val }
-      tk_send('set', *args)
-    else
-      # idx, val, idx, val, ... 
-      args = []
-      0.step(pairs.size-1, 2){|i|
-        args << tagid(pairs[i])
-        args << pairs[i+1]
-      }
-      tk_send('set', *args)
-    end
-    self
-  end
-  def set_row(*pairs)
-    if pairs[0].kind_of?(Array)
-      # [idx, val], [idx, val], ...
-      args = []
-      pairs.each{|idx, val| args << tagid(idx) << val }
-      tk_send('set', 'row', *args)
-    else
-      # idx, val, idx, val, ... 
-      args = []
-      0.step(pairs.size-1, 2){|i|
-        args << tagid(pairs[i])
-        args << pairs[i+1]
-      }
-      tk_send('set', 'row', *args)
-    end
-    self
-  end
-  def set_col(*pairs)
-    if pairs[0].kind_of?(Array)
-      # [idx, val], [idx, val], ...
-      args = []
-      pairs.each{|idx, val| args << idx << val }
-      tk_send('set', 'col', *args)
-    else
-      # idx, val, idx, val, ... 
-      args = []
-      0.step(pairs.size-1, 2){|i|
-        args << tagid(pairs[i])
-        args << pairs[i+1]
-      }
-      tk_send('set', 'col', *args)
-    end
-    self
-  end
-=end
-
-  def spans
-    simplelist(tk_send('spans')).collect{|inf|
-      lst = simplelist(inf)
-      idx = lst[0]
-      rows, cols = lst[1].split(',').map!{|n| Integer(n)}
-      [idx [rows, cols]]
-    }
-  end
-  alias span_list spans
-  def span(idx)
-    lst = simplelist(tk_send('spans', tagid(idx)))
-    idx = lst[0]
-    rows, cols = lst[1].split(',').map!{|n| Integer(n)}
-    [idx [rows, cols]]
-  end
-  def set_spans(*pairs)
-    # idx, val, idx, val, ... 
-    args = []
-    0.step(pairs.size-1, 2){|i|
-      args << tagid(pairs[i])
-      val = pairs[i+1]
-      if val.kind_of?(Array)
-        args << val.join(',')
-      else
-        args << val
-      end
-    }
-    tk_send('spans', *args)
-    self
-  end
-=begin
-  def set_spans(*pairs)
-    if pairs[0].kind_of?(Array)
-      # [idx, val], [idx, val], ...
-      args = []
-      pairs.each{|idx, val|
-        args << tagid(idx)
-        if val.kind_of?(Array)
-          args << val.join(',')
-        else
-          args << val
-        end
-      }
-      tk_send('spans', *args)
-    else
-      # idx, val, idx, val, ... 
-      args = []
-      0.step(pairs.size-1, 2){|i|
-        args << tagid(pairs[i])
-        val = pairs[i+1]
-        if val.kind_of?(Array)
-          args << val.join(',')
-        else
-          args << val
-        end
-      }
-      tk_send('spans', *args)
-    end
-    self
-  end
-=end
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::TkTable::CellTag)
-      tag.id
-    elsif tag.kind_of?(Array)
-      if tag[0].kind_of?(Integer) && tag[1].kind_of?(Integer)
-        # [row, col]
-        tag.join(',')
-      else
-        tag
-      end
-    else
-      tag
-    end
-  end
-
-  def tagid2obj(tagid)
-    if Tk::TkTable::CellTag::CellTagID_TBL.key?(@path)
-      if Tk::TkTable::CellTag::CellTagID_TBL[@path].key?(tagid)
-        Tk::TkTable::CellTag::CellTagID_TBL[@path][tagid]
-      else
-        tagid
-      end
-    else
-      tagid
-    end
-  end
-
-  def tag_cell(tag, *cells)
-    tk_send('tag', 'cell', tagid(tag), *(cells.collect{|idx| tagid(idx)}))
-    self
-  end
-  def tag_reset(*cells)
-    tk_send('tag', 'cell', '', *(cells.collect{|idx| tagid(idx)}))
-    self
-  end
-  def tag_col(tag, *cols)
-    tk_send('tag', 'col', tagid(tag), *cols)
-    self
-  end
-  def tag_col_reset(*cols)
-    tk_send('tag', 'col', '', *cols)
-    self
-  end
-  def tag_delete(tag)
-    tk_send('tag', 'delete', tagid(tag))
-    if Tk::TkTable::CellTag::CellTagID_TBL[@path]
-      if tag.kind_of? Tk::TkTable::CellTag
-        Tk::TkTable::CellTag::CellTagID_TBL[@path].delete(tag.id) 
-      else
-        Tk::TkTable::CellTag::CellTagID_TBL[@path].delete(tag) 
-      end
-    end
-    self
-  end
-  def tag_exist?(tag)
-    bool(tk_send('tag', 'exists', tagid(tag)))
-  end
-  def tag_include?(tag, idx)
-    bool(tk_send('tag', 'includes', tagid(tag), tagid(idx)))
-  end
-  def tag_lower(tag, target=None)
-    tk_send('tag', 'lower', tagid(tag), tagid(target))
-    self
-  end
-  def tag_names(pat=None)
-    simplelist(tk_send('tag', 'names', pat)).collect{|tag| tagid2obj(tag)}
-  end
-  def tag_raise(tag, target=None)
-    tk_send('tag', 'raise', tagid(tag), tagid(target))
-    self
-  end
-  def tag_row(tag, *rows)
-    tk_send('tag', 'row', tagid(tag), *rows)
-    self
-  end
-  def tag_row_reset(*rows)
-    tk_send('tag', 'row', '', *rows)
-    self
-  end
-
-  def validate(idx)
-    bool(tk_send('validate', tagid(idx)))
-  end
-
-  def width_list
-    list(tk_send('width'))
-  end
-  def width(row)
-    number(tk_send('width', row))
-  end
-  def set_width(*pairs)
-    tk_send('width', *(pairs.flatten))
-    self
-  end
-
-  def window_delete(*args)
-    tk_send('window', 'delete', *(args.collect{|idx| tagid(idx)}))
-    self
-  end
-  def window_move(from_idx, to_idx)
-    tk_send('window', 'move', tagid(from_idx), tagid(to_idx))
-    self
-  end
-  def window_names(pat=None)
-    simplelist(tk_send('window', 'names', pat))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans.rb
deleted file mode 100644
index c5de5be..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-#  TkTrans support (win32 only)
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tktrans/setup.rb'
-
-# load library
-require 'tkextlib/tktrans/tktrans'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/tktrans.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/tktrans.rb
deleted file mode 100644
index 665c57a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/tktrans/tktrans.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-#  TkTrans support (win32 only)
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tktrans/setup.rb'
-
-TkPackage.require('tktrans') rescue Tk.load_tcllibrary('tktrans')
-
-module Tk
-  module TkTrans
-    PACKAGE_NAME = 'tktrans'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('tktrans')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-class TkWindow
-  def tktrans_set_image(img)
-    tk_send('tktrans::setwidget', @path, img)
-    self
-  end
-  def tktrans_get_image()
-    tk_send('tktrans::setwidget', @path)
-  end
-end
-
-class TkRoot
-  undef tktrans_set_image, tktrans_get_image
-
-  def tktrans_set_image(img)
-    tk_send('tktrans::settoplevel', @path, img)
-    self
-  end
-  def tktrans_get_image()
-    tk_send('tktrans::settoplevel', @path)
-  end
-end
-
-class TkToplevel
-  undef tktrans_set_image, tktrans_get_image
-
-  def tktrans_set_image(img)
-    tk_send('tktrans::settoplevel', @path, img)
-    self
-  end
-  def tktrans_get_image()
-    tk_send('tktrans::settoplevel', @path)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl.rb
deleted file mode 100644
index 1944fb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  TkTreeCtrl support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/treectrl/setup.rb'
-
-# load library
-require 'tkextlib/treectrl/tktreectrl'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/tktreectrl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/tktreectrl.rb
deleted file mode 100644
index 12f7cff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/treectrl/tktreectrl.rb
+++ /dev/null
@@ -1,2311 +0,0 @@
-#
-#  tkextlib/treectrl/tktreectrl.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/treectrl/setup.rb'
-
-# TkPackage.require('treectrl', '1.0')
-# TkPackage.require('treectrl', '1.1')
-TkPackage.require('treectrl')
-
-module Tk
-  class TreeCtrl < TkWindow
-    BindTag_FileList = TkBindTag.new_by_name('TreeCtrlFileList')
-
-    PACKAGE_NAME = 'treectrl'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('treectrl')
-      rescue
-        ''
-      end
-    end
-
-    HasColumnCreateCommand = 
-      (TkPackage.vcompare(self.package_version, '1.1') >= 0)
-
-    # dummy :: 
-    #  pkgIndex.tcl of TreeCtrl-1.0 doesn't support auto_load for 
-    #  'loupe' command (probably it is bug, I think). 
-    #  So, calling a 'treectrl' command for loading the dll with 
-    #  the auto_load facility. 
-    begin
-      tk_call('treectrl')
-    rescue
-    end
-    def self.loupe(img, x, y, w, h, zoom)
-      # NOTE: platform == 'unix' only
-
-      # img  => TkPhotoImage
-      # x, y => screen coords 
-      # w, h => magnifier width and height
-      # zoom => zooming rate
-      Tk.tk_call_without_enc('loupe', img, x, y, w, h, zoom)
-    end
-
-    def self.text_layout(font, text, keys={})
-      TkComm.list(Tk.tk_call_without_enc('textlayout', font, text, keys))
-    end
-
-    def self.image_tint(img, color, alpha)
-      Tk.tk_call_without_enc('imagetint', img, color, alpha)
-    end
-
-    class NotifyEvent < TkUtil::CallbackSubst
-    end
-
-    module ConfigMethod
-    end
-  end
-  TreeCtrl_Widget = TreeCtrl
-end
-
-##############################################
-
-class Tk::TreeCtrl::NotifyEvent
-  # [ <'%' subst-key char>, <proc type char>, <instance var (accessor) name>]
-  KEY_TBL = [
-    [ ?c, ?n, :item_num ], 
-    [ ?d, ?s, :detail ], 
-    [ ?D, ?l, :items ], 
-    [ ?e, ?e, :event ], 
-    [ ?I, ?n, :id ], 
-    [ ?l, ?n, :lower_bound ], 
-    [ ?p, ?n, :active_id ], 
-    [ ?P, ?e, :pattern ], 
-    [ ?S, ?l, :sel_items ], 
-    [ ?T, ?w, :widget ], 
-    [ ?u, ?n, :upper_bound ], 
-    [ ?W, ?o, :object ], 
-    [ ??, ?x, :parm_info ], 
-    nil
-  ]
-
-  # [ <proc type char>, <proc/method to convert tcl-str to ruby-obj>]
-  PROC_TBL = [
-    [ ?n, TkComm.method(:num_or_str) ], 
-    [ ?s, TkComm.method(:string) ], 
-    [ ?l, TkComm.method(:list) ], 
-    [ ?w, TkComm.method(:window) ], 
-
-    [ ?e, proc{|val|
-        case val
-        when /^<<[^<>]+>>$/
-          TkVirtualEvent.getobj(val[1..-2])
-        when /^<[^<>]+>$/
-          val[1..-2]
-        else
-          val
-        end
-      }
-    ], 
-
-    [ ?o, proc{|val| TkComm.tk_tcl2ruby(val)} ], 
-
-    [ ?x, proc{|val|
-        begin
-          inf = {}
-          Hash[*(TkComm.list(val))].each{|k, v|
-            if keyinfo = KEY_TBL.assoc(k[0])
-              if cmd = PROC_TBL.assoc(keyinfo[1])
-                begin
-                  new_v = cmd.call(v)
-                  v = new_v
-                rescue
-                end
-              end
-            end
-            inf[k] = v
-          }
-          inf
-        rescue
-          val
-        end
-      } ], 
-
-    nil
-  ]
-
-  # setup tables to be used by scan_args, _get_subst_key, _get_all_subst_keys
-  #
-  #     _get_subst_key() and _get_all_subst_keys() generates key-string 
-  #     which describe how to convert callback arguments to ruby objects. 
-  #     When binding parameters are given, use _get_subst_key(). 
-  #     But when no parameters are given, use _get_all_subst_keys() to 
-  #     create a Event class object as a callback parameter. 
-  #
-  #     scan_args() is used when doing callback. It convert arguments 
-  #     ( which are Tcl strings ) to ruby objects based on the key string 
-  #     that is generated by _get_subst_key() or _get_all_subst_keys(). 
-  #
-  _setup_subst_table(KEY_TBL, PROC_TBL);
-end
-
-##############################################
-
-module Tk::TreeCtrl::ConfigMethod
-  include TkItemConfigMethod
-
-  def treectrl_tagid(key, obj)
-    if key.kind_of?(Array)
-      key = key.join(' ')
-    else
-      key = key.to_s
-    end
-
-    if (obj.kind_of?(Tk::TreeCtrl::Column) ||
-        obj.kind_of?(Tk::TreeCtrl::Element) ||
-        obj.kind_of?(Tk::TreeCtrl::Item) ||
-        obj.kind_of?(Tk::TreeCtrl::Style)) 
-      obj = obj.id
-    end
-
-    case key
-    when 'column'
-      obj
-
-    when 'debug'
-      None
-
-    when 'dragimage'
-      None
-
-    when 'element'
-      obj
-
-    when 'item element'
-      obj
-
-    when 'marquee'
-      None
-
-    when 'notify'
-      obj
-
-    when 'style'
-      obj
-
-    else
-      obj
-    end
-  end
-
-  def tagid(mixed_id)
-    if mixed_id == 'debug'
-      ['debug', None]
-    elsif mixed_id == 'dragimage'
-      ['dragimage', None]
-    elsif mixed_id == 'marquee'
-      ['marquee', None]
-    elsif mixed_id.kind_of?(Array)
-      [mixed_id[0], treectrl_tagid(*mixed_id)]
-    else
-      tagid(mixed_id.split(':'))
-    end
-  end
-
-  def __item_cget_cmd(mixed_id)
-    if mixed_id[0] == 'column' && mixed_id[1] == 'drag'
-      return [self.path, 'column', 'dragcget']
-    end 
-
-    if mixed_id[1].kind_of?(Array)
-      id = mixed_id[1]
-    else
-      id = [mixed_id[1]]
-    end
-
-    if mixed_id[0].kind_of?(Array)
-      ([self.path].concat(mixed_id[0]) << 'cget').concat(id)
-    else
-      [self.path, mixed_id[0], 'cget'].concat(id)
-    end
-  end
-  private :__item_cget_cmd
-
-  def __item_config_cmd(mixed_id)
-    if mixed_id[0] == 'column' && mixed_id[1] == 'drag'
-      return [self.path, 'column', 'dragconfigure']
-    end 
-
-    if mixed_id[1].kind_of?(Array)
-      id = mixed_id[1]
-    else
-      id = [mixed_id[1]]
-    end
-
-    if mixed_id[0].kind_of?(Array)
-      ([self.path].concat(mixed_id[0]) << 'configure').concat(id)
-    else
-      [self.path, mixed_id[0], 'configure'].concat(id)
-    end
-  end
-  private :__item_config_cmd
-
-  def __item_pathname(id)
-    if id.kind_of?(Array)
-      key = id[0]
-      if key.kind_of?(Array)
-        key = key.join(' ')
-      end
-
-      tag = id[1]
-      if tag.kind_of?(Array)
-        tag = tag.join(' ')
-      end
-
-      id = [key, tag].join(':')
-    end
-    [self.path, id].join(';')
-  end
-  private :__item_pathname
-
-  def __item_configinfo_struct(id)
-    if id.kind_of?(Array) && id[0].to_s == 'notify'
-      {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil, 
-        :default_value=>nil, :current_value=>1}
-    else
-      {:key=>0, :alias=>1, :db_name=>1, :db_class=>2, 
-        :default_value=>3, :current_value=>4}
-    end
-  end
-  private :__item_configinfo_struct
-
-
-  def __item_font_optkeys(id)
-    if id.kind_of?(Array) && (id[0] == 'element' || 
-                              (id[0].kind_of?(Array) && id[0][1] == 'element'))
-      []
-    else
-      ['font']
-    end
-  end
-  private :__item_font_optkeys
-
-  def __item_numstrval_optkeys(id)
-    if id == 'debug'
-      ['displaydelay']
-    else
-      super(id)
-    end
-  end
-  private :__item_numstrval_optkeys
-
-  def __item_boolval_optkeys(id)
-    if id == 'debug'
-      ['data', 'display', 'enable']
-    elsif id == 'dragimage'
-      ['visible']
-    elsif id == 'marquee'
-      ['visible']
-    elsif id.kind_of?(Array)
-      case id[0]
-      when 'item'
-        ['button', 'visible']
-      when 'column'
-        if id[1] == 'drag'
-          ['enable']
-        else
-          ['button', 'expand', 'resize', 'squeeze', 'sunken', 
-            'visible', 'widthhack']
-        end
-      when 'element'
-        ['draw', 'filled', 'showfocus', 'destroy']
-      when 'notify'
-        ['active']
-      when 'style'
-        ['detach']
-      else
-        if id[0].kind_of?(Array) && id[0][1] == 'element'
-          ['filled', 'showfocus']
-        else
-          super(id)
-        end
-      end
-    else
-      super(id)
-    end
-  end
-  private :__item_boolval_optkeys
-
-  def __item_strval_optkeys(id)
-    if id == 'debug'
-      ['erasecolor']
-    elsif id.kind_of?(Array)
-      case id[0]
-      when 'column'
-        if id[1] == 'drag'
-          ['indicatorcolor']
-        else
-          super(id) << 'textcolor'
-        end
-      when 'element'
-        super(id) << 'fill' << 'outline' << 'format'
-      else
-        super(id)
-      end
-    else
-      super(id)
-    end
-  end
-  private :__item_strval_optkeys
-
-  def __item_listval_optkeys(id)
-    if id.kind_of?(Array)
-      case id[0]
-      when 'column'
-        ['itembackground']
-      when 'element'
-        ['relief']
-      when 'style'
-        ['union']
-      else
-        if id[0].kind_of?(Array) && id[0][1] == 'element'
-          ['relief']
-        else
-          []
-        end
-      end
-    else
-      []
-    end
-  end
-  private :__item_listval_optkeys
-
-  def __item_keyonly_optkeys(id)  # { def_key=>(undef_key|nil), ... }
-    {
-      'notreally'=>nil, 
-      'increasing'=>'decreasing',
-      'decreasing'=>'increasing', 
-      'ascii'=>nil,
-      'dictionary'=>nil, 
-      'integer'=>nil, 
-      'real'=>nil
-    }
-  end
-  private :__item_keyonly_optkeys
-
-  def column_cget(tagOrId, option)
-    itemcget(['column', tagOrId], option)
-  end
-  def column_configure(tagOrId, slot, value=None)
-    itemconfigure(['column', tagOrId], slot, value)
-  end
-  def column_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['column', tagOrId], slot)
-  end
-  def current_column_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['column', tagOrId], slot)
-  end
-
-  def column_dragcget(option)
-    itemcget(['column', 'drag'], option)
-  end
-  def column_dragconfigure(slot, value=None)
-    itemconfigure(['column', 'drag'], slot, value)
-  end
-  def column_dragconfiginfo(slot=nil)
-    itemconfiginfo(['column', 'drag'], slot)
-  end
-  def current_column_dragconfiginfo(slot=nil)
-    current_itemconfiginfo(['column', 'drag'], slot)
-  end
-
-  def debug_cget(option)
-    itemcget('debug', option)
-  end
-  def debug_configure(slot, value=None)
-    itemconfigure('debug', slot, value)
-  end
-  def debug_configinfo(slot=nil)
-    itemconfiginfo('debug', slot)
-  end
-  def current_debug_configinfo(slot=nil)
-    current_itemconfiginfo('debug', slot)
-  end
-
-  def dragimage_cget(option)
-    itemcget('dragimage', option)
-  end
-  def dragimage_configure(slot, value=None)
-    itemconfigure('dragimage', slot, value)
-  end
-  def dragimage_configinfo(slot=nil)
-    itemconfiginfo('dragimage', slot)
-  end
-  def current_dragimage_configinfo(slot=nil)
-    current_itemconfiginfo('dragimage', slot)
-  end
-
-  def element_cget(tagOrId, option)
-    itemcget(['element', tagOrId], option)
-  end
-  def element_configure(tagOrId, slot, value=None)
-    itemconfigure(['element', tagOrId], slot, value)
-  end
-  def element_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['element', tagOrId], slot)
-  end
-  def current_element_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['element', tagOrId], slot)
-  end
-
-  def item_cget(tagOrId, option)
-    itemcget(['item', tagOrId], option)
-  end
-  def item_configure(tagOrId, slot, value=None)
-    itemconfigure(['item', tagOrId], slot, value)
-  end
-  def item_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['item', tagOrId], slot)
-  end
-  def current_item_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['item', tagOrId], slot)
-  end
-
-  def item_element_cget(item, column, elem, option)
-    itemcget([['item', 'element'], [item, column, elem]], option)
-  end
-  def item_element_configure(item, column, elem, slot, value=None)
-    itemconfigure([['item', 'element'], [item, column, elem]], slot, value)
-  end
-  def item_element_configinfo(item, column, elem, slot=nil)
-    itemconfiginfo([['item', 'element'], [item, column, elem]], slot)
-  end
-  def current_item_element_configinfo(item, column, elem, slot=nil)
-    current_itemconfiginfo([['item', 'element'], [item, column, elem]], slot)
-  end
-
-  def marquee_cget(option)
-    itemcget('marquee', option)
-  end
-  def marquee_configure(slot, value=None)
-    itemconfigure('marquee', slot, value)
-  end
-  def marquee_configinfo(slot=nil)
-    itemconfiginfo('marquee', slot)
-  end
-  def current_marquee_configinfo(slot=nil)
-    current_itemconfiginfo('marquee', slot)
-  end
-
-  def notify_cget(win, pattern, option)
-    pattern = "<#{pattern}>"
-    itemconfigure(['notify', [win, pattern]], option)
-  end
-  def notify_configure(win, pattern, slot, value=None)
-    pattern = "<#{pattern}>"
-    itemconfigure(['notify', [win, pattern]], slot, value)
-  end
-  def notify_configinfo(win, pattern, slot=nil)
-    pattern = "<#{pattern}>"
-    itemconfiginfo(['notify', [win, pattern]], slot)
-  end
-  alias current_notify_configinfo notify_configinfo
-
-  def style_cget(tagOrId, option)
-    itemcget(['style', tagOrId], option)
-  end
-  def style_configure(tagOrId, slot, value=None)
-    itemconfigure(['style', tagOrId], slot, value)
-  end
-  def style_configinfo(tagOrId, slot=nil)
-    itemconfiginfo(['style', tagOrId], slot)
-  end
-  def current_style_configinfo(tagOrId, slot=nil)
-    current_itemconfiginfo(['style', tagOrId], slot)
-  end
-
-  private :itemcget, :itemconfigure
-  private :itemconfiginfo, :current_itemconfiginfo
-end
-
-##############################################
-
-class Tk::TreeCtrl
-  include Tk::TreeCtrl::ConfigMethod
-  include Scrollable
-
-  TkCommandNames = ['treectrl'.freeze].freeze
-  WidgetClassName = 'TreeCtrl'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  #########################
-
-  def __destroy_hook__
-    Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.delete(@path)
-    Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.delete(@path)
-    Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.delete(@path)
-    Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.delete(@path)
-  end
-
-  #########################
-
-  def __strval_optkeys
-    super() + [
-      'buttoncolor', 'columnprefix', 'itemprefix', 'linecolor'
-    ]
-  end
-  private :__strval_optkeys
-
-  def __boolval_optkeys
-    [
-      'itemwidthequal', 'usetheme', 
-      'showbuttons', 'showheader', 'showlines', 'showroot', 
-      'showrootbutton', 'showrootlines',
-    ]
-  end
-  private :__boolval_optkeys
-
-  def __listval_optkeys
-    [ 'defaultstyle' ]
-  end
-  private :__listval_optkeys
-
-  #########################
-
-  def install_bind(cmd, *args)
-    install_bind_for_event_class(Tk::TreeCtrl::NotifyEvent, cmd, *args)
-  end
-
-  #########################
-
-  def create_self(keys)
-    if keys and keys != None
-      tk_call_without_enc(self.class::TkCommandNames[0], @path, 
-                          *hash_kv(keys, true))
-    else
-      tk_call_without_enc(self.class::TkCommandNames[0], @path)
-    end
-  end
-  private :create_self
-
-  #########################
-
-  def activate(desc)
-    tk_send('activate', desc)
-    self
-  end
-
-  def canvasx(x)
-    number(tk_send('canvasx', x))
-  end
-
-  def canvasy(y)
-    number(tk_send('canvasy', y))
-  end
-
-  def collapse(*dsc)
-    tk_send_without_enc('collapse', *(dsc.map!{|d| _get_eval_string(d, true)}))
-    self
-  end
-
-  def collapse_recurse(*dsc)
-    tk_send_without_enc('collapse', '-recurse', 
-                        *(dsc.map!{|d| _get_eval_string(d, true)}))
-    self
-  end
-
-  def column_bbox(idx)
-    list(tk_send('column', 'bbox', idx))
-  end
-
-  def column_compare(column1, op, column2)
-    bool(tk_send('column', 'compare', column1, op, column2))
-  end
-
-  def column_count
-    num_or_str(tk_send('column', 'count'))
-  end
-
-  def column_create(keys=nil)
-    if keys && keys.kind_of?(Hash)
-      num_or_str(tk_send('column', 'create', *hash_kv(keys)))
-    else
-      num_or_str(tk_send('column', 'create'))
-    end
-  end
-
-  def column_delete(idx)
-    if Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[self.path]
-      Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[self.path].delete(idx)
-    end
-    tk_send('column', 'delete', idx)
-    self
-  end
-
-  def column_index(idx)
-    num_or_str(tk_send('column', 'index', idx))
-  end
-
-  def column_id(idx)
-    tk_send('column', 'id', idx)
-  end
-
-  def column_list(visible=false)
-    if visible
-      simplelist(tk_send('column', 'list', '-visible'))
-    else
-      simplelist(tk_send('column', 'list'))
-    end
-  end
-  def column_visible_list
-    column_list(true)
-  end
-
-  def column_move(idx, before)
-    tk_send('column', 'move', idx, before)
-    self
-  end
-
-  def column_needed_width(idx)
-    num_or_str(tk_send('column', 'neededwidth', idx))
-  end
-  alias column_neededwidth column_needed_width
-
-  def column_order(column, visible=false)
-    if visible
-      num_or_str(tk_send('column', 'order', column, '-visible'))
-    else
-      num_or_str(tk_send('column', 'order', column))
-    end
-  end
-  def column_visible_order(column)
-    column_order(column, true)
-  end
-
-  def column_width(idx)
-    num_or_str(tk_send('column', 'width', idx))
-  end
-
-  def compare(item1, op, item2)
-    bool(tk_send('compare', item1, op, item2))
-  end
-
-  def contentbox()
-    list(tk_send('contentbox'))
-  end
-
-  def depth(item=None)
-    num_or_str(tk_send_without_enc('depth', _get_eval_string(item, true)))
-  end
-
-  def dragimage_add(item, *args)
-    tk_send('dragimage', 'add', item, *args)
-    self
-  end
-
-  def dragimage_clear()
-    tk_send('dragimage', 'clear')
-    self
-  end
-
-  def dragimage_offset(*args) # x, y
-    if args.empty?
-      list(tk_send('dragimage', 'offset'))
-    else
-      tk_send('dragimage', 'offset', *args)
-      self
-    end
-  end
-
-  def dragimage_visible(*args) # mode
-    if args..empty?
-      bool(tk_send('dragimage', 'visible'))
-    else
-      tk_send('dragimage', 'visible', *args)
-      self
-    end
-  end
-  def dragimage_visible?
-    dragimage_visible()
-  end
-
-  def debug_dinfo
-    tk_send('debug', 'dinfo')
-    self
-  end
-
-  def debug_scroll
-    tk_send('debug', 'scroll')
-  end
-
-  def element_create(elem, type, keys=nil)
-    if keys && keys.kind_of?(Hash)
-      tk_send('element', 'create', elem, type, *hash_kv(keys))
-    else
-      tk_send('element', 'create', elem, type)
-    end
-  end
-
-  def element_delete(*elems)
-    if Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[self.path]
-      elems.each{|elem|
-        Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[self.path].delete(elem)
-      }
-    end
-    tk_send('element', 'delete', *elems)
-    self
-  end
-
-  def element_names()
-    list(tk_send('element', 'names')).collect!{|elem|
-      Tk::TreeCtrl::Element.id2obj(self, elem)
-    }
-  end
-
-  def _conv_element_perstate_val(opt, val)
-    case opt
-    when 'background', 'foreground', 'fill', 'outline', 'format'
-      val
-    when 'draw', 'filled', 'showfocus', 'destroy'
-      bool(val)
-    else
-      tk_tcl2ruby(val)
-    end
-  end
-  private :_conv_element_perstate_val
-
-  def element_perstate(elem, opt, st_list)
-    tk_send('element', 'perstate', elem, "-{opt}", st_list)
-  end
-
-  def element_type(elem)
-    tk_send('element', 'type', elem)
-  end
-
-  def element_class(elem)
-    Tk::TreeCtrl::Element.type2class(element_type(elem))
-  end
-
-  def expand(*dsc)
-    tk_send('expand', *dsc)
-    self
-  end
-
-  def expand_recurse(*dsc)
-    tk_send('expand', '-recurse', *dsc)
-    self
-  end
-
-  def identify(x, y)
-    lst = list(tk_send('identify', x, y))
-
-    if lst[0] == 'item'
-      lst[1] = Tk::TreeCtrl::Item.id2obj(self, lst[1])
-      size = lst.size
-      i = 2
-      while i < size
-        case lst[i]
-        when 'line'
-          i += 1
-          lst[i] = Tk::TreeCtrl::Item.id2obj(self, lst[i])
-          i += 1
-
-        when 'button'
-          i += 1
-
-        when 'column'
-          i += 2
-
-        when 'elem'
-          i += 1
-          lst[i] = Tk::TreeCtrl::Element.id2obj(self, lst[i])
-          i += 1
-
-        else
-          i += 1
-        end
-      end
-    end
-
-    lst
-  end
-
-  def index(idx)
-    num_or_str(tk_send('index', idx))
-  end
-
-  def item_ancestors(item)
-    list(tk_send('item', 'ancestors', item)).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def item_bbox(item, *args)
-    list(tk_send('item', 'bbox', item, *args))
-  end
-
-  def item_children(item)
-    list(tk_send('item', 'children', item)).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def item_collapse(item)
-    tk_send_without_enc('item', 'collapse', _get_eval_string(item, true))
-    self
-  end
-
-  def item_collapse_recurse(item)
-    tk_send_without_enc('item', 'collapse', 
-                        _get_eval_string(item, true), '-recurse')
-    self
-  end
-
-  def item_compare(item1, op, item2)
-    bool(tk_send('item', 'compare', item1, op, item2))
-  end
-
-  def item_complex(item, *args)
-    tk_send_without_enc('item', 'complex', 
-                        _get_eval_string(item, true), 
-                        *(args.map!{|arg| _get_eval_string(arg, true)}))
-    self
-  end
-
-  def item_count
-    num_or_str(tk_send('item', 'count'))
-  end
-
-  def item_create(keys={})
-    num_or_str(tk_send_without_enc('item', 'create', *hash_kv(keys, true)))
-  end
-
-  def _erase_children(item)
-    item_children(item).each{|i| _erase_children(i)}
-    Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path].delete(item)
-  end
-  private :_erase_children
-
-  def item_delete(first, last=None)
-    if Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path]
-      if first == 'all' || first == :all || last == 'all' || last == :all
-        Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path].clear
-      elsif last == None
-        _erase_children(first)
-      else
-        self.range(first, last).each{|id|
-          _erase_children(id)
-        }
-      end
-    end
-    tk_send('item', 'delete', first, last)
-    self
-  end
-
-  def item_dump(item)
-    list(tk_send('item', 'dump', item))
-  end
-
-  def item_dump_hash(item)
-    Hash[*list(tk_send('item', 'dump', item))]
-  end
-
-  def item_element_actual(item, column, elem, key)
-    tk_send('item', 'element', 'actual', item, column, elem, "-#{key}")
-  end
-
-  def item_element_perstate(elem, opt, st_list)
-    tk_send('item', 'element', 'perstate', elem, "-{opt}", st_list)
-  end
-
-  def item_expand(item)
-    tk_send('item', 'expand', item)
-    self
-  end
-
-  def item_expand_recurse(item)
-    tk_send('item', 'expand', item, '-recurse')
-    self
-  end
-
-  def item_firstchild(parent, child=nil)
-    if child
-      tk_send_without_enc('item', 'firstchild', 
-                          _get_eval_string(parent, true), 
-                          _get_eval_string(child, true))
-      self
-    else
-      id = num_or_str(tk_send_without_enc('item', 'firstchild', 
-                                          _get_eval_string(parent, true)))
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    end
-  end
-  alias item_first_child item_firstchild
-
-  def item_hasbutton(item, st=None)
-    if st == None
-      bool(tk_send_without_enc('item', 'hasbutton', 
-                               _get_eval_string(item, true)))
-    else
-      tk_send_without_enc('item', 'hasbutton', 
-                          _get_eval_string(item, true), 
-                          _get_eval_string(st))
-      self
-    end
-  end
-  alias item_has_button item_hasbutton
-
-  def item_hasbutton?(item)
-    item_hasbutton(item)
-  end
-  alias item_has_button? item_hasbutton?
-
-  def item_id(item)
-    tk_send('item', 'id', item)
-  end
-
-  def item_image(item, column=nil, *args)
-    if args.empty?
-      if column
-        img = tk_send('item', 'image', item, column)
-        TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
-      else
-        simplelist(tk_send('item', 'image', item)).collect!{|img|
-          TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
-        }
-      end
-    else
-      tk_send('item', 'image', item, column, *args)
-      self
-    end
-  end
-  def get_item_image(item, column=nil)
-    item_image(item, column)
-  end
-  def set_item_image(item, col, img, *args)
-    item_image(item, col, img, *args)
-  end
-
-  def item_index(item)
-    list(tk_send('item', 'index', item))
-  end
-
-  def item_isancestor(item, des)
-    bool(tk_send('item', 'isancestor', item, des))
-  end
-  alias item_is_ancestor  item_isancestor
-  alias item_isancestor?  item_isancestor
-  alias item_is_ancestor? item_isancestor
-
-  def item_isopen(item)
-    bool(tk_send('item', 'isopen', item))
-  end
-  alias item_is_open    item_isopen
-  alias item_isopen?    item_isopen
-  alias item_is_open?   item_isopen
-  alias item_isopened?  item_isopen
-  alias item_is_opened? item_isopen
-
-  def item_lastchild(parent, child=nil)
-    if child
-      tk_send_without_enc('item', 'lastchild', 
-                          _get_eval_string(parent, true),
-                          _get_eval_string(child, true))
-      self
-    else
-      id = num_or_str(tk_send_without_enc('item', 'lastchild', 
-                                          _get_eval_string(parent, true)))
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    end
-  end
-  alias item_last_child item_lastchild
-
-  def item_nextsibling(sibling, nxt=nil)
-    if nxt
-      tk_send('item', 'nextsibling', sibling, nxt)
-      self
-    else
-      id = num_or_str(tk_send('item', 'nextsibling', sibling))
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    end
-  end
-  alias item_next_sibling item_nextsibling
-
-  def item_numchildren(item)
-    number(tk_send_without_enc('item', 'numchildren', 
-                               _get_eval_string(item, true)))
-  end
-  alias item_num_children  item_numchildren
-  alias item_children_size item_numchildren
-
-  def item_order(item, visible=false)
-    if visible
-      ret = num_or_str(tk_send('item', 'order', item, '-visible'))
-    else
-      ret = num_or_str(tk_send('item', 'order', item))
-    end
-
-    (ret.kind_of?(Fixnum) && ret < 0)? nil: ret
-  end
-  def item_visible_order(item)
-    item_order(item, true)
-  end
-
-  def item_parent(item)
-    id = num_or_str(tk_send('item', 'parent', item))
-    Tk::TreeCtrl::Item.id2obj(self, id)
-  end
-
-  def item_prevsibling(sibling, prev=nil)
-    if prev
-      tk_send('item', 'prevsibling', sibling, prev)
-      self
-    else
-      id = num_or_str(tk_send('item', 'prevsibling', sibling))
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    end
-  end
-  alias item_prev_sibling item_prevsibling
-
-  def item_range(first, last)
-    simplelist(tk_send('item', 'range', first, last))
-  end
-
-  def item_remove(item)
-    tk_send('item', 'remove', item)
-    self
-  end
-
-  def item_rnc(item)
-    list(tk_send('item', 'rnc', item))
-  end
-
-  def _item_sort_core(real_sort, item, *opts)
-    # opts ::= sort_param [, sort_param, ... ]
-    # sort_param ::= {key=>val, ...}
-    #                [type, desc, {key=>val, ...}]
-    #                param
-    opts = opts.collect{|param|
-      if param.kind_of?(Hash)
-        param = _symbolkey2str(param)
-        if param.key?('column')
-          key = '-column'
-          desc = param.delete('column')
-        elsif param.key?('element')
-          key = '-element'
-          desc = param.delete('element')
-        else
-          key = nil
-        end
-
-        if param.empty?
-          param = None
-        else
-          param = hash_kv(__conv_item_keyonly_opts(item, param))
-        end
-
-        if key
-          [key, desc].concat(param)
-        else
-          param
-        end
-
-      elsif param.kind_of?(Array)
-        if param[2].kind_of?(Hash)
-          param[2] = hash_kv(__conv_item_keyonly_opts(item, param[2]))
-        end
-        param
-
-      elsif param.kind_of?(String) && param =~ /\A[a-z]+\Z/
-        '-' << param
-
-      elsif param.kind_of?(Symbol)
-        '-' << param.to_s
-
-      else
-        param
-      end
-    }.flatten
-
-    if real_sort
-      tk_send('item', 'sort', item, *opts)
-      self
-    else
-      list(tk_send('item', 'sort', item, '-notreally', *opts))
-    end
-  end
-  private :_item_sort_core
-
-  def item_sort(item, *opts)
-    _item_sort_core(true, item, *opts)
-  end
-  def item_sort_not_really(item, *opts)
-    _item_sort_core(false, item, *opts)
-  end
-
-  def item_span(item, column=nil, *args)
-    if args.empty?
-      if column
-        list(tk_send('item', 'span', item, column))
-      else
-        simplelist(tk_send('item', 'span', item)).collect!{|elem| list(elem)}
-      end
-    else
-      tk_send('item', 'span', item, column, *args)
-      self
-    end
-  end
-  def get_item_span(item, column=nil)
-    item_span(item, column)
-  end
-  def set_item_span(item, col, num, *args)
-    item_span(item, col, num, *args)
-  end
-
-  def item_state_forcolumn(item, column, *args)
-    tk_send('item', 'state', 'forcolumn', item, column, *args)
-  end
-  alias item_state_for_column item_state_forcolumn
-
-  def item_state_get(item, *args)
-    if args.empty?
-      list(tk_send('item', 'state', 'get', item *args))
-    else
-      bool(tk_send('item', 'state', 'get', item))
-    end
-  end
-
-  def item_state_set(item, *args)
-    tk_send('item', 'state', 'set', item, *args)
-  end
-
-  def item_style_elements(item, column)
-    list(tk_send('item', 'style', 'elements', item, column)).collect!{|id|
-      Tk::TreeCtrl::Style.id2obj(self, id)
-    }
-  end
-
-  def item_style_map(item, column, style, map)
-    tk_send('item', 'style', 'map', item, column, style, map)
-    self
-  end
-
-  def item_style_set(item, column=nil, *args)
-    if args.empty?
-      if column
-        id = tk_send_without_enc('item', 'style', 'set', 
-                                 _get_eval_string(item, true), 
-                                 _get_eval_string(column, true))
-        Tk::TreeCtrl::Style.id2obj(self, id)
-      else
-        list(tk_send_without_enc('item', 'style', 'set', 
-                                 _get_eval_string(item, true))).collect!{|id|
-          Tk::TreeCtrl::Style.id2obj(self, id)
-        }
-      end
-    else
-      tk_send_without_enc('item', 'style', 'set', 
-                          _get_eval_string(item, true), 
-                          _get_eval_string(column, true), 
-                          *(args.flatten.map!{|arg|
-                              _get_eval_string(arg, true)
-                            }))
-      self
-    end
-  end
-
-  def item_text(item, column, txt=nil, *args)
-    if args.empty?
-      if txt
-        tk_send('item', 'text', item, column, txt)
-        self
-      else
-        tk_send('item', 'text', item, column)
-      end
-    else
-      tk_send('item', 'text', item, column, txt, *args)
-      self
-    end
-  end
-
-  def item_toggle(item)
-    tk_send('item', 'toggle', item)
-    self
-  end
-
-  def item_toggle_recurse(item)
-    tk_send('item', 'toggle', item, '-recurse')
-    self
-  end
-
-  def item_visible(item, st=None)
-    if st == None
-      bool(tk_send('item', 'visible', item))
-    else
-      tk_send('item', 'visible', item, st)
-      self
-    end
-  end
-  def item_visible?(item)
-    item_visible(item)
-  end
-
-  def marquee_anchor(*args)
-    if args.empty?
-      list(tk_send('marquee', 'anchor'))
-    else
-      tk_send('marquee', 'anchor', *args)
-      self
-    end
-  end
-
-  def marquee_coords(*args)
-    if args.empty?
-      list(tk_send('marquee', 'coords'))
-    else
-      tk_send('marquee', 'coords', *args)
-      self
-    end
-  end
-
-  def marquee_corner(*args)
-    if args.empty?
-      tk_send('marquee', 'corner')
-    else
-      tk_send('marquee', 'corner', *args)
-      self
-    end
-  end
-
-  def marquee_identify()
-    list(tk_send('marquee', 'identify')).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def marquee_visible(st=None)
-    if st == None
-      bool(tk_send('marquee', 'visible'))
-    else
-      tk_send('marquee', 'visible', st)
-      self
-    end
-  end
-  def marquee_visible?()
-    marquee_visible()
-  end
-
-  #def notify_bind(obj, event, cmd=Proc.new, *args)
-  #  _bind([@path, 'notify', 'bind', obj], event, cmd, *args)
-  #  self
-  #end
-  def notify_bind(obj, event, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind([@path, 'notify', 'bind', obj], event, cmd, *args)
-    self
-  end
-
-  #def notify_bind_append(obj, event, cmd=Proc.new, *args)
-  #  _bind_append([@path, 'notify', 'bind', obj], event, cmd, *args)
-  #  self
-  #end
-  def notify_bind_append(obj, event, *args)
-    # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
-    if TkComm._callback_entry?(args[0]) || !block_given?
-      cmd = args.shift
-    else
-      cmd = Proc.new
-    end
-    _bind_append([@path, 'notify', 'bind', obj], event, cmd, *args)
-    self
-  end
-
-  def notify_bind_remove(obj, event)
-    _bind_remove([@path, 'notify', 'bind', obj], event)
-    self
-  end
-
-  def notify_bindinfo(obj, event=nil)
-    _bindinfo([@path, 'notify', 'bind', obj], event)
-  end
-
-  def notify_detailnames(event)
-    list(tk_send('notify', 'detailnames', event))
-  end
-
-  def notify_eventnames()
-    list(tk_send('notify', 'eventnames'))
-  end
-
-  def notify_generate(pattern, char_map=None, percents_cmd=None)
-    pattern = "<#{pattern}>"
-    tk_send('notify', 'generate', pattern, char_map, percents_cmd)
-    self
-  end
-
-  def notify_install(pattern, percents_cmd=nil, &b)
-    pattern = "<#{pattern}>"
-    percents_cmd = Proc.new(&b) if !percents_cmd && b
-    if percents_cmd
-      procedure(tk_send('notify', 'install', pattern, percents_cmd))
-    else
-      procedure(tk_send('notify', 'install', pattern))
-    end
-  end
-
-  def notify_install_detail(event, detail, percents_cmd=nil, &b)
-    percents_cmd = Proc.new(&b) if !percents_cmd && b
-    if percents_cmd
-      tk_send('notify', 'install', 'detail', event, detail, percents_cmd)
-    else
-      tk_send('notify', 'install', 'detail', event, detail)
-    end
-  end
-
-  def notify_install_event(event, percents_cmd=nil, &b)
-    percents_cmd = Proc.new(&b) if !percents_cmd && b
-    if percents_cmd
-      tk_send('notify', 'install', 'event', event, percents_cmd)
-    else
-      tk_send('notify', 'install', 'event', event)
-    end
-  end
-
-  def notify_linkage(pattern, detail=None)
-    if detail != None
-      tk_send('notify', 'linkage', pattern, detail)
-    else
-      begin
-        if pattern.to_s.index(?-)
-          # TreeCtrl 1.1 format?
-          begin
-            tk_send('notify', 'linkage', "<#{pattern}>")
-          rescue
-            # TreeCtrl 1.0?
-            tk_send('notify', 'linkage', pattern)
-          end
-        else
-          # TreeCtrl 1.0 format?
-          begin
-            tk_send('notify', 'linkage', pattern)
-          rescue
-            # TreeCtrl 1.1?
-            tk_send('notify', 'linkage', "<#{pattern}>")
-          end
-        end
-      end
-    end
-  end
-
-  def notify_unbind(pattern=nil)
-    if pattern
-      tk_send('notify', 'unbind', "<#{pattern}>")
-    else
-      tk_send('notify', 'unbind')
-    end
-    self
-  end
-
-  def notify_uninstall(pattern)
-    pattern = "<#{pattern}>"
-    tk_send('notify', 'uninstall', pattern)
-    self
-  end
-
-  def notify_uninstall_detail(event, detail)
-    tk_send('notify', 'uninstall', 'detail', event, detail)
-    self
-  end
-
-  def notify_uninstall_event(event)
-    tk_send('notify', 'uninstall', 'event', event)
-    self
-  end
-
-  def numcolumns()
-    num_or_str(tk_send('numcolumns'))
-  end
-  alias num_columns  numcolumns
-  alias columns_size numcolumns
-
-  def numitems()
-    num_or_str(tk_send('numitems'))
-  end
-  alias num_items  numitems
-  alias items_size numitems
-
-  def orphans()
-    list(tk_send('orphans')).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def range(first, last)
-    list(tk_send('range', first, last)).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def state_define(name)
-    tk_send('state', 'define', name)
-    self
-  end
-
-  def state_linkage(name)
-    tk_send('state', 'linkage', name)
-  end
-
-  def state_names()
-    list(tk_send('state', 'names'))
-  end
-
-  def state_undefine(*names)
-    tk_send('state', 'undefine', *names)
-    self
-  end
-
-  def see(item)
-    tk_send('see', item)
-    self
-  end
-
-  def selection_add(first, last=None)
-    tk_send('selection', 'add', first, last)
-    self
-  end
-
-  def selection_anchor(item=None)
-    id = num_or_str(tk_send('selection', 'anchor', item))
-    Tk::TreeCtrl::Item.id2obj(self, id)
-  end
-
-  def selection_clear(*args) # first, last
-    tk_send('selection', 'clear', *args)
-    self
-  end
-
-  def selection_count()
-    number(tk_send('selection', 'count'))
-  end
-
-  def selection_get()
-    list(tk_send('selection', 'get')).collect!{|id|
-      Tk::TreeCtrl::Item.id2obj(self, id)
-    }
-  end
-
-  def selection_includes(item)
-    bool(tk_send('selection', 'includes', item))
-  end
-
-  def selection_modify(sel, desel)
-    tk_send('selection', 'modify', sel, desel)
-    self
-  end
-
-  def style_create(style, keys=None)
-    if keys && keys != None
-      tk_send('style', 'create', style, *hash_kv(keys))
-    else
-      tk_send('style', 'create', style)
-    end
-  end
-
-  def style_delete(*args)
-    if Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[self.path]
-      args.each{|sty|
-        Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[self.path].delete(sty)
-      }
-    end
-    tk_send('style', 'delete', *args)
-    self
-  end
-
-  def style_elements(style, *elems)
-    if elems.empty?
-      list(tk_send('style', 'elements', style)).collect!{|id|
-        Tk::TreeCtrl::Element.id2obj(self, id)
-      }
-    else
-      tk_send('style', 'elements', style, elems.flatten)
-      self
-    end
-  end
-
-  def _conv_style_layout_val(sty, val)
-    case sty.to_s
-    when 'padx', 'pady', 'ipadx', 'ipady'
-      lst = list(val)
-      (lst.size == 1)? lst[0]: lst
-    when 'detach', 'indent'
-      bool(val)
-    when 'union'
-      simplelist(val).collect!{|elem|
-        Tk::TreeCtrl::Element.id2obj(self, elem)
-      }
-    else
-      val
-    end
-  end
-  private :_conv_style_layout_val
-
-  def style_layout(style, elem, keys=None)
-    if keys && keys != None
-      if keys.kind_of?(Hash)
-        tk_send('style', 'layout', style, elem, *hash_kv(keys))
-        self
-      else
-        _conv_style_layout_val(keys, 
-                               tk_send('style', 'layout', 
-                                       style, elem, "-#{keys}"))
-      end
-    else
-      ret = Hash.new
-      Hash[*simplelist(tk_send('style', 'layout', style, elem))].each{|k, v|
-        k = k[1..-1]
-        ret[k] = _conv_style_layout_val(k, v)
-      }
-      ret
-    end
-  end
-  def get_style_layout(style, elem, opt=None)
-    style_layout(style, elem, opt)
-  end
-  def set_style_layout(style, elem, slot, value=None)
-    if slot.kind_of?(Hash)
-      style_layout(style, elem, slot)
-    else
-      style_layout(style, elem, {slot=>value})
-    end
-  end
-
-  def style_names()
-    list(tk_send('style', 'names')).collect!{|id|
-      Tk::TreeCtrl::Style.id2obj(self, id)
-    }
-  end
-
-  def toggle(*items)
-    tk_send('toggle', *items)
-    self
-  end
-
-  def toggle_recurse()
-    tk_send('toggle', '-recurse', *items)
-    self
-  end
-end
-
-#####################
-
-class Tk::TreeCtrl::Column < TkObject
-  TreeCtrlColumnID_TBL = TkCore::INTERP.create_table
-  TreeCtrlColumnID = ['treectrl_column'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.clear}
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath]
-    Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath][id]? \
-                 Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath][id] : id
-  end
-
-  def initialize(parent, keys={})
-    @tree = parent
-    @tpath = parent.path
-
-    keys = _symbolkey2str(keys)
-
-    @path = @id = 
-      keys.delete('tag') ||
-      Tk::TreeCtrl::Column::TreeCtrlColumnID.join(TkCore::INTERP._ip_id_)
-
-    keys['tag'] = @id
-
-    unless Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[@tpath]
-      Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[@tpath] = {} 
-    end
-    Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[@tpath][@id] = self
-    Tk::TreeCtrl::Column::TreeCtrlColumnID[1].succ!
-
-    @tree.column_create(keys)
-  end
-
-  def id
-    @id
-  end
-
-  def to_s
-    @id.to_s.dup
-  end
-
-  def cget(opt)
-    @tree.column_cget(@tree.column_index(@id), opt)
-  end
-
-  def configure(*args)
-    @tree.column_configure(@tree.column_index(@id), *args)
-  end
-
-  def configinfo(*args)
-    @tree.column_configinfo(@tree.column_index(@id), *args)
-  end
-
-  def current_configinfo(*args)
-    @tree.current_column_configinfo(@tree.column_index(@id), *args)
-  end
-
-  def delete
-    @tree.column_delete(@tree.column_index(@id))
-    self
-  end
-
-  def index
-    @tree.column_index(@id)
-  end
-
-  def move(before)
-    @tree.column_move(@tree.column_index(@id), before)
-    self
-  end
-
-  def needed_width
-    @tree.column_needed_width(@tree.column_index(@id))
-  end
-  alias neededwidth needed_width
-
-  def current_width
-    @tree.column_width(@tree.column_index(@id))
-  end
-end
-
-#####################
-
-class Tk::TreeCtrl::Element < TkObject
-  TreeCtrlElementID_TBL = TkCore::INTERP.create_table
-  TreeCtrlElementID = ['treectrl_element'.freeze, '00000'.taint].freeze
-  TreeCtrlElemTypeToClass = {}
-
-  TkCore::INTERP.init_ip_env{
-    Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.clear
-  }
-
-  def self.type2class(type)
-    TreeCtrlElemTypeToClass[type] || type
-  end
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath]
-    Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath][id]? \
-                 Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath][id] : id
-  end
-
-  def initialize(parent, type, keys=nil)
-    @tree = parent
-    @tpath = parent.path
-    @type = type.to_s
-    @path = @id = 
-      Tk::TreeCtrl::Element::TreeCtrlElementID.join(TkCore::INTERP._ip_id_)
-    unless Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[@tpath]
-      Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[@tpath] = {} 
-    end
-    Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[@tpath][@id] = self
-    Tk::TreeCtrl::Element::TreeCtrlElementID[1].succ!
-
-    @tree.element_create(@id, @type, keys)
-  end
-
-  def id
-    @id
-  end
-
-  def to_s
-    @id.dup
-  end
-
-  def cget(opt)
-    @tree.element_cget(@id, opt)
-  end
-
-  def configure(*args)
-    @tree.element_configure(@id, *args)
-  end
-
-  def configinfo(*args)
-    @tree.element_configinfo(@id, *args)
-  end
-
-  def current_configinfo(*args)
-    @tree.current_element_configinfo(@id, *args)
-  end
-
-  def delete
-    @tree.element_delete(@id)
-    self
-  end
-
-  def element_type
-    @tree.element_type(@id)
-  end
-
-  def element_class
-    @tree.element_class(@id)
-  end
-end
-
-class Tk::TreeCtrl::BitmapElement < Tk::TreeCtrl::Element
-  TreeCtrlElemTypeToClass['bitmap'] = self
-
-  def initialize(parent, keys=nil)
-    super(parent, 'bitmap', keys)
-  end
-end
-
-class Tk::TreeCtrl::BorderElement < Tk::TreeCtrl::Element
-  TreeCtrlElemTypeToClass['border'] = self
-
-  def initialize(parent, keys=nil)
-    super(parent, 'border', keys)
-  end
-end
-
-class Tk::TreeCtrl::ImageElement < Tk::TreeCtrl::Element
-  TreeCtrlElemTypeToClass['image'] = self
-
-  def initialize(parent, keys=nil)
-    super(parent, 'image', keys)
-  end
-end
-
-class Tk::TreeCtrl::RectangleElement < Tk::TreeCtrl::Element
-  TreeCtrlElemTypeToClass['rect'] = self
-
-  def initialize(parent, keys=nil)
-    super(parent, 'rect', keys)
-  end
-end
-
-#####################
-
-class Tk::TreeCtrl::Item < TkObject
-  TreeCtrlItemID_TBL = TkCore::INTERP.create_table
-
-  TkCore::INTERP.init_ip_env{Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.clear}
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath]
-    Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath][id]? \
-                 Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath][id] : id
-  end
-
-  def initialize(parent, keys={})
-    @tree = parent
-    @tpath = parent.path
-    @path = @id = @tree.item_create(keys)
-
-    unless Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[@tpath]
-      Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[@tpath] = {} 
-    end
-    Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[@tpath][@id] = self
-  end
-
-  def id
-    @id
-  end
-
-  def to_s
-    @id.to_s.dup
-  end
-
-  def ancestors
-    @tree.item_ancestors(@id)
-  end
-
-  def bbox(*args)
-    @tree.item_bbox(@id, *args)
-  end
-
-  def children
-    @tree.item_children(@id)
-  end
-
-  def collapse
-    @tree.item_collapse(@id)
-    self
-  end
-
-  def collapse_recurse
-    @tree.item_collapse_recurse(@id)
-    self
-  end
-
-  def complex(*args)
-    @tree.item_complex(@id, *args)
-    self
-  end
-
-  def cget(opt)
-    @tree.item_cget(@id, opt)
-  end
-
-  def configure(*args)
-    @tree.item_configure(@id, *args)
-  end
-
-  def configinfo(*args)
-    @tree.item_configinfo(@id, *args)
-  end
-
-  def current_configinfo(*args)
-    @tree.current_item_configinfo(@id, *args)
-  end
-
-  def delete
-    @tree.item_delete(@id)
-    self
-  end
-
-  def element_dump
-    @tree.item_dump(@id)
-  end
-
-  def element_dump_hash
-    @tree.item_dump_hash(@id)
-  end
-
-  def element_actual(column, elem, key)
-    @tree.item_element_actual(@id, column, elem, key)
-  end
-
-  def element_cget(opt)
-    @tree.item_element_cget(@id, opt)
-  end
-
-  def element_configure(*args)
-    @tree.item_element_configure(@id, *args)
-  end
-
-  def element_configinfo(*args)
-    @tree.item_element_configinfo(@id, *args)
-  end
-
-  def current_element_configinfo(*args)
-    @tree.current_item_element_configinfo(@id, *args)
-  end
-
-  def expand
-    @tree.item_expand(@id)
-    self
-  end
-
-  def expand_recurse
-    @tree.item_expand_recurse(@id)
-    self
-  end
-
-  def firstchild(child=nil)
-    if child
-      @tree.item_firstchild(@id, child)
-      self
-    else
-      @tree.item_firstchild(@id)
-    end
-  end
-  alias first_child firstchild
-
-  def hasbutton(st=None)
-    if st == None
-      @tree.item_hasbutton(@id)
-    else
-      @tree.item_hasbutton(@id, st)
-      self
-    end
-  end
-  alias has_button hasbutton
-
-  def hasbutton?
-    @tree.item_hasbutton(@id)
-  end
-  alias has_button? hasbutton?
-
-  def index
-    @tree.item_index(@id)
-  end
-
-  def isancestor(des)
-    @tree.item_isancestor(@id, des)
-  end
-  alias is_ancestor  isancestor
-  alias isancestor?  isancestor
-  alias is_ancestor? isancestor
-  alias ancestor?    isancestor
-
-  def isopen
-    @tree.item_isopen(@id)
-  end
-  alias is_open    isopen
-  alias isopen?    isopen
-  alias is_open?   isopen
-  alias isopened?  isopen
-  alias is_opened? isopen
-  alias open?      isopen
-
-  def lastchild(child=nil)
-    if child
-      @tree.item_lastchild(@id, child)
-      self
-    else
-      @tree.item_lastchild(@id)
-    end
-  end
-  alias last_child lastchild
-
-  def nextsibling(nxt=nil)
-    if nxt
-      @tree.item_nextsibling(@id, nxt)
-      self
-    else
-      @tree.item_nextsibling(@id)
-    end
-  end
-  alias next_sibling nextsibling
-
-  def numchildren
-    @tree.item_numchildren(@id)
-  end
-  alias num_children  numchildren
-  alias children_size numchildren
-
-  def parent_index
-    @tree.item_parent(@id)
-  end
-
-  def prevsibling(nxt=nil)
-    if nxt
-      @tree.item_prevsibling(@id, nxt)
-      self
-    else
-      @tree.item_prevsibling(@id)
-    end
-  end
-  alias prev_sibling prevsibling
-
-  def remove
-    @tree.item_remove(@id)
-  end
-
-  def rnc
-    @tree.item_rnc(@id)
-  end
-
-  def sort(*opts)
-    @tree.item_sort(@id, *opts)
-  end
-  def sort_not_really(*opts)
-    @tree.item_sort_not_really(@id, *opts)
-    self
-  end
-
-  def state_forcolumn(column, *args)
-    @tree.item_state_forcolumn(@id, column, *args)
-    self
-  end
-  alias state_for_column state_forcolumn
-
-  def state_get(*args)
-    @tree.item_state_get(@id, *args)
-  end
-
-  def state_set(*args)
-    @tree.item_state_set(@id, *args)
-    self
-  end
-
-  def style_elements(column)
-    @tree.item_style_elements(@id, column)
-  end
-
-  def style_map(column, style, map)
-    @tree.item_style_map(@id, column, style, map)
-    self
-  end
-
-  def style_set(column=nil, *args)
-    if args.empty?
-      @tree.item_style_set(@id, column)
-    else
-      @tree.item_style_set(@id, column, *args)
-      self
-    end
-  end
-
-  def item_text(column, txt=nil, *args)
-    if args.empty?
-      if txt
-        @tree.item_text(@id, column, txt)
-        self
-      else
-        @tree.item_text(@id, column)
-      end
-    else
-      @tree.item_text(@id, column, txt, *args)
-      self
-    end
-  end
-
-  def toggle
-    @tree.item_toggle(@id)
-    self
-  end
-
-  def toggle_recurse
-    @tree.item_toggle_recurse(@id)
-    self
-  end
-
-  def visible(st=None)
-    if st == None
-      @tree.item_visible(@id)
-    else
-      @tree.item_visible(@id, st)
-      self
-    end
-  end
-end
-
-#####################
-
-class Tk::TreeCtrl::Style < TkObject
-  TreeCtrlStyleID_TBL = TkCore::INTERP.create_table
-  TreeCtrlStyleID = ['treectrl_style'.freeze, '00000'.taint].freeze
-
-  TkCore::INTERP.init_ip_env{ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.clear }
-
-  def self.id2obj(tree, id)
-    tpath = tree.path
-    return id unless Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath]
-    Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath][id]? \
-                 Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath][id] : id
-  end
-
-  def initialize(parent, keys=nil)
-    @tree = parent
-    @tpath = parent.path
-    @path = @id = 
-      Tk::TreeCtrl::Style::TreeCtrlStyleID.join(TkCore::INTERP._ip_id_)
-    unless Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[@tpath]
-      Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[@tpath] = {} 
-    end
-    Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[@tpath][@id] = self
-    Tk::TreeCtrl::Style::TreeCtrlStyleID[1].succ!
-
-    @tree.style_create(@id, keys)
-  end
-
-  def id
-    @id
-  end
-
-  def to_s
-    @id.dup
-  end
-
-  def cget(opt)
-    @tree.style_cget(@id, opt)
-  end
-
-  def configure(*args)
-    @tree.style_configure(@id, *args)
-  end
-
-  def configinfo(*args)
-    @tree.style_configinfo(@id, *args)
-  end
-
-  def current_configinfo(*args)
-    @tree.current_style_configinfo(@id, *args)
-  end
-
-  def delete
-    @tree.style_delete(@id)
-    self
-  end
-
-  def elements(*elems)
-    if elems.empty?
-      @tree.style_elements(@id)
-    else
-      @tree.style_elements(@id, *elems)
-      self
-    end
-  end
-
-  def layout(elem, keys=None)
-    if keys && keys != None && keys.kind_of?(Hash)
-      @tree.style_layout(@id, elem, keys)
-      self
-    else
-      @tree.style_layout(@id, elem, keys)
-    end
-  end
-end
-
-module Tk::TreeCtrl::BindCallback
-  include Tk
-  extend Tk
-end
-
-class << Tk::TreeCtrl::BindCallback
-  def percentsCmd(*args)
-    tk_call('::TreeCtrl::PercentsCmd', *args)
-  end
-  def cursorCheck(w, x, y)
-    tk_call('::TreeCtrl::CursorCheck', w, x, y)
-  end
-  def cursorCheckAux(w)
-    tk_call('::TreeCtrl::CursorCheckAux', w)
-  end
-  def cursorCancel(w)
-    tk_call('::TreeCtrl::CursorCancel', w)
-  end
-  def buttonPress1(w, x, y)
-    tk_call('::TreeCtrl::ButtonPress1', w, x, y)
-  end
-  def doubleButton1(w, x, y)
-    tk_call('::TreeCtrl::DoubleButton1', w, x, y)
-  end
-  def motion1(w, x, y)
-    tk_call('::TreeCtrl::Motion1', w, x, y)
-  end
-  def leave1(w, x, y)
-    tk_call('::TreeCtrl::Leave1', w, x, y)
-  end
-  def release1(w, x, y)
-    tk_call('::TreeCtrl::Release1', w, x, y)
-  end
-  def beginSelect(w, el)
-    tk_call('::TreeCtrl::BeginSelect', w, el)
-  end
-  def motion(w, le)
-    tk_call('::TreeCtrl::Motion', w, el)
-  end
-  def beginExtend(w, el)
-    tk_call('::TreeCtrl::BeginExtend', w, el)
-  end
-  def beginToggle(w, el)
-    tk_call('::TreeCtrl::BeginToggle', w, el)
-  end
-  def cancelRepeat
-    tk_call('::TreeCtrl::CancelRepeat')
-  end
-  def autoScanCheck(w, x, y)
-    tk_call('::TreeCtrl::AutoScanCheck', w, x, y)
-  end
-  def autoScanCheckAux(w)
-    tk_call('::TreeCtrl::AutoScanCheckAux', w)
-  end
-  def autoScanCancel(w)
-    tk_call('::TreeCtrl::AutoScanCancel', w)
-  end
-  def up_down(w, n)
-    tk_call('::TreeCtrl::UpDown', w, n)
-  end
-  def left_right(w, n)
-    tk_call('::TreeCtrl::LeftRight', w, n)
-  end
-  def setActiveItem(w, idx)
-    tk_call('::TreeCtrl::SetActiveItem', w, idx)
-  end
-  def extendUpDown(w, amount)
-    tk_call('::TreeCtrl::ExtendUpDown', w, amount)
-  end
-  def dataExtend(w, el)
-    tk_call('::TreeCtrl::DataExtend', w, el)
-  end
-  def cancel(w)
-    tk_call('::TreeCtrl::Cancel', w)
-  end
-  def selectAll(w)
-    tk_call('::TreeCtrl::selectAll', w)
-  end
-  def marqueeBegin(w, x, y)
-    tk_call('::TreeCtrl::MarqueeBegin', w, x, y)
-  end
-  def marqueeUpdate(w, x, y)
-    tk_call('::TreeCtrl::MarqueeUpdate', w, x, y)
-  end
-  def marqueeEnd(w, x, y)
-    tk_call('::TreeCtrl::MarqueeEnd', w, x, y)
-  end
-  def scanMark(w, x, y)
-    tk_call('::TreeCtrl::ScanMark', w, x, y)
-  end
-  def scanDrag(w, x, y)
-    tk_call('::TreeCtrl::ScanDrag', w, x, y)
-  end
-
-  # filelist-bindings
-  def fileList_button1(w, x, y)
-    tk_call('::TreeCtrl::FileListButton1', w, x, y)
-  end
-  def fileList_motion1(w, x, y)
-    tk_call('::TreeCtrl::FileListMotion1', w, x, y)
-  end
-  def fileList_motion(w, x, y)
-    tk_call('::TreeCtrl::FileListMotion', w, x, y)
-  end
-  def fileList_leave1(w, x, y)
-    tk_call('::TreeCtrl::FileListLeave1', w, x, y)
-  end
-  def fileList_release1(w, x, y)
-    tk_call('::TreeCtrl::FileListRelease1', w, x, y)
-  end
-  def fileList_edit(w, i, s, e)
-    tk_call('::TreeCtrl::FileListEdit', w, i, s, e)
-  end
-  def fileList_editCancel(w)
-    tk_call('::TreeCtrl::FileListEditCancel', w)
-  end
-  def fileList_autoScanCheck(w, x, y)
-    tk_call('::TreeCtrl::FileListAutoScanCheck', w, x, y)
-  end
-  def fileList_autoScanCheckAux(w)
-    tk_call('::TreeCtrl::FileListAutoScanCheckAux', w)
-  end
-
-  def entryOpen(w, item, col, elem)
-    tk_call('::TreeCtrl::EntryOpen', w, item, col, elem)
-  end
-  def entryExpanderOpen(w, item, col, elem)
-    tk_call('::TreeCtrl::EntryExpanderOpen', w, item, col, elem)
-  end
-  def entryClose(w, accept)
-    tk_call('::TreeCtrl::EntryClose', w, accept)
-  end
-  def entryExpanderKeypress(w)
-    tk_call('::TreeCtrl::EntryExpanderKeypress', w)
-  end
-  def textOpen(w, item, col, elem, width=0, height=0)
-    tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width, height)
-  end
-  def textExpanderOpen(w, item, col, elem, width)
-    tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width)
-  end
-  def textClose(w, accept)
-    tk_call('::TreeCtrl::TextClose', w, accept)
-  end
-  def textExpanderKeypress(w)
-    tk_call('::TreeCtrl::TextExpanderKeypress', w)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs.rb
deleted file mode 100644
index 5914e51..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-#  trofs support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/trofs/setup.rb'
-
-# load library
-require 'tkextlib/trofs/trofs.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/trofs.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/trofs.rb
deleted file mode 100644
index 7a2606a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/trofs/trofs.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-#  tkextlib/trofs/trofs.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/trofs/setup.rb'
-
-# TkPackage.require('trofs', '0.4')
-TkPackage.require('trofs')
-
-module Tk
-  module Trofs
-    extend TkCore
-
-    PACKAGE_NAME = 'trofs'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('trofs')
-      rescue
-        ''
-      end
-    end
-
-    ##############################################
-
-    def self.create_archive(dir, archive)
-      tk_call('::trofs::archive', dir, archive)
-      archive
-    end
-
-    def self.mount(archive, mountpoint=None)
-      # returns the normalized path to mountpoint
-      tk_call('::trofs::mount', archive, mountpoint)
-    end
-
-    def self.umount(mountpoint)
-      tk_call('::trofs::umount', mountpoint)
-      mountpoint
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/version.rb
deleted file mode 100644
index c7816fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/version.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# release date of tkextlib
-#
-module Tk
-  Tkextlib_RELEASE_DATE = '2007-05-26'.freeze
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu.rb
deleted file mode 100644
index d2234eb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-#  The vu widget set support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/vu/setup.rb'
-
-# load package
-# TkPackage.require('vu', '2.1')
-TkPackage.require('vu')
-
-# autoload
-module Tk
-  module Vu
-    TkComm::TkExtlibAutoloadModule.unshift(self)
-
-    PACKAGE_NAME = 'vu'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('vu')
-      rescue
-        ''
-      end
-    end
-
-    ##########################################
-
-    autoload :Dial,          'tkextlib/vu/dial'
-
-    autoload :Pie,           'tkextlib/vu/pie'
-    autoload :PieSlice,      'tkextlib/vu/pie'
-    autoload :NamedPieSlice, 'tkextlib/vu/pie'
-
-    autoload :Spinbox,       'tkextlib/vu/spinbox'
-
-    autoload :Bargraph,      'tkextlib/vu/bargraph'
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/bargraph.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/bargraph.rb
deleted file mode 100644
index 27ff3c7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/bargraph.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-#  ::vu::bargraph widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# create module/class
-module Tk
-  module Vu
-    class Bargraph < TkWindow
-    end
-  end
-end
-
-
-# call setup script  --  <libdir>/tkextlib/vu.rb
-require 'tkextlib/vu.rb'
-
-class Tk::Vu::Bargraph < TkWindow
-  TkCommandNames = ['::vu::bargraph'.freeze].freeze
-  WidgetClassName = 'Bargraph'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ###############################
-
-  def __boolval_optkeys
-    ['showminmax', 'showvalue']
-  end
-  private :__boolval_optkeys
-
-  def __strval_optkeys
-    super() + [
-      'title', 
-      'barbackground', 'barcolor', 'barcolour', 
-      'tickcolor', 'tickcolour', 
-      'textcolor', 'textcolour', 
-    ]
-  end
-  private :__strval_optkeys
-
-  def __listval_optkeys
-    ['alabels', 'blabels']
-  end
-  private :__listval_optkeys
-
-  def __font_optkeys
-    ['alabfont', 'blabfont']
-  end
-  private :__font_optkeys
-
-  ###############################
-
-  def set(val = None)
-    tk_call_without_enc(@path, 'set', val)
-    self
-  end
-
-  def get()
-    num_or_str(tk_call_without_enc(@path, 'get'))
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/charts.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/charts.rb
deleted file mode 100644
index ee4298f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/charts.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-#  charts -- Create and manipulate canvas Add-On Items
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-require 'tk/canvas'
-
-# call setup script  --  <libdir>/tkextlib/vu.rb
-require 'tkextlib/vu.rb'
-
-module Tk
-  module Vu
-    module ChartsConfig
-      include TkItemConfigOptkeys
-      def __item_boolval_optkeys(id)
-        super(id) << 'lefttrunc' << 'autocolor'
-      end
-      private :__item_boolval_optkeys
-
-      def __item_strval_optkeys(id)
-        super(id) << 'bar' << 'color' << 'outline' << 
-          'fill' << 'scaleline' << 'stripline'
-      end
-      private :__item_strval_optkeys
-
-      def __item_listval_optkeys(id)
-        super(id) << 'values' << 'tags'
-      end
-      private :__item_listval_optkeys
-    end
-
-    class TkcSticker < TkcItem
-      include ChartsConfig
-
-      CItemTypeName = 'sticker'.freeze
-      CItemTypeToClass[CItemTypeName] = self
-    end
-
-    class TkcStripchart < TkcItem
-      include ChartsConfig
-
-      CItemTypeName = 'stripchart'.freeze
-      CItemTypeToClass[CItemTypeName] = self
-    end
-
-    class TkcBarchart < TkcItem
-      include ChartsConfig
-
-      CItemTypeName = 'barchart'.freeze
-      CItemTypeToClass[CItemTypeName] = self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/dial.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/dial.rb
deleted file mode 100644
index e27a38a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/dial.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-#  ::vu::dial widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# create module/class
-module Tk
-  module Vu
-    class Dial < TkWindow
-    end
-  end
-end
-
-# call setup script  --  <libdir>/tkextlib/vu.rb
-require 'tkextlib/vu.rb'
-
-# define module/class
-class Tk::Vu::Dial < TkWindow
-  TkCommandNames = ['::vu::dial'.freeze].freeze
-  WidgetClassName = 'Dial'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  ###############################
-
-  def __methodcall_optkeys  # { key=>method, ... }
-    {'coords'=>'coords'}
-  end
-  private :__methodcall_optkeys
-
-  ###############################
-
-  def coords(val = nil)
-    if val
-      tk_split_list(tk_send_without_enc('coords'))
-    else
-      tk_send_without_enc('coords', val)
-      self
-    end
-  end
-
-  def constrain(val = None)
-    num_or_str(tk_call(@path, 'constrain', val))
-  end
-
-  def get(*args)
-    num_or_str(tk_call(@path, 'get', *args))
-  end
-
-  def identify(x, y)
-    tk_call(@path, 'identify', x, y)
-  end
-
-  def get_label(val=nil)
-    if val
-      tk_call(@path, 'label', val)
-    else
-      ret = []
-      lst = simplelist(tk_call(@path, 'label'))
-      while lst.size > 0
-        ret << ([num_or_str(lst.shift)] << lst.shift)
-      end
-    end
-  end
-
-  def set_label(val, str, *args)
-    tk_call(@path, 'label', val, str, *args)
-    self
-  end
-
-  def set_label_constrain(val, str, *args)
-    tk_call(@path, 'label', '-constrain', val, str, *args)
-    self
-  end
-
-  def get_tag(val=nil)
-    if val
-      tk_call(@path, 'tag', val)
-    else
-      ret = []
-      lst = simplelist(tk_call(@path, 'tag'))
-      while lst.size > 0
-        ret << ([num_or_str(lst.shift)] << lst.shift)
-      end
-    end
-  end
-
-  def set_tag(val, str, *args)
-    tk_call(@path, 'tag', val, str, *args)
-    self
-  end
-
-  def set_tag_constrain(val, str, *args)
-    tk_call(@path, 'tag', '-constrain', val, str, *args)
-    self
-  end
-
-  def set(val = None)
-    tk_call_without_enc(@path, 'set', val)
-    self
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/pie.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/pie.rb
deleted file mode 100644
index 78f3fa5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/pie.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-#
-#  ::vu::pie widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# create module/class
-module Tk
-  module Vu
-    module PieSliceConfigMethod
-    end
-    class Pie < TkWindow
-    end
-    class PieSlice < TkObject
-    end
-    class NamedPieSlice < PieSlice
-    end
-  end
-end
-
-# call setup script  --  <libdir>/tkextlib/vu.rb
-require 'tkextlib/vu.rb'
-
-module Tk::Vu::PieSliceConfigMethod
-  include TkItemConfigMethod
-
-  def __item_pathname(tagOrId)
-    if tagOrId.kind_of?(Tk::Vu::PieSlice)
-      self.path + ';' + tagOrId.id.to_s
-    else
-      self.path + ';' + tagOrId.to_s
-    end
-  end
-  private :__item_pathname
-end
-
-class Tk::Vu::Pie < TkWindow
-  TkCommandNames = ['::vu::pie'.freeze].freeze
-  WidgetClassName = 'Pie'.freeze
-  WidgetClassNames[WidgetClassName] = self
-
-  def __destroy_hook__
-    Tk::Vu::PieSlice::SliceID_TBL.delete(@path)
-  end
-
-  ###############################
-
-  include Tk::Vu::PieSliceConfigMethod
-
-  def tagid(tag)
-    if tag.kind_of?(Tk::Vu::PieSlice)
-      tag.id
-    else
-      # tag
-      _get_eval_string(tag)
-    end
-  end
-
-  ###############################
-
-  def delete(*glob_pats)
-    tk_call(@path, 'delete', *glob_pats)
-    self
-  end
-
-  def explode(slice, *args)
-    tk_call(@path, 'explode', slice, *args)
-    self
-  end
-
-  def explode_value(slice)
-    num_or_str(tk_call(@path, 'explode', slice))
-  end
-
-  def lower(slice, below=None)
-    tk_call(@path, 'lower', slice, below)
-    self
-  end
-
-  def names(*glob_pats)
-    simplelist(tk_call(@path, 'names', *glob_pats))
-  end
-  alias slices names
-
-  def order(*args)
-    tk_call(@path, 'order', *args)
-    self
-  end
-
-  def raise(slice, above=None)
-    tk_call(@path, 'raise', slice, above)
-    self
-  end
-
-  def swap(slice1, slice2)
-    tk_call(@path, 'swap', slice1, slice2)
-    self
-  end
-
-  def set(slice, *args)
-    num_or_str(tk_call(@path, 'set', slice, *args))
-  end
-  alias set_value  set
-  alias set_values set
-  alias create     set
-
-  def slice_value(slice)
-    num_or_str(tk_call(@path, 'set', slice))
-  end
-
-  def value(val = None)
-    num_or_str(tk_call_without_enc(@path, 'value'))
-  end
-  alias sum_value value
-end
-
-class Tk::Vu::PieSlice
-  SliceID_TBL = TkCore::INTERP.create_table
-  Pie_Slice_ID = ['vu:pie'.freeze, '00000'.taint].freeze
-  TkCore::INTERP.init_ip_env{ SliceID_TBL.clear }
-
-  def self.id2obj(pie, id)
-    pie_path = pie.path
-    return id unless SliceID_TBL[pie_path]
-    SliceID_TBL[pie_path][id]? SliceID_TBL[pie_path][id]: id
-  end
-
-  def initialize(parent, *args)
-    unless parent.kind_of?(Tk::Vu::Pie)
-      fail ArgumentError, "expect a Tk::Vu::Pie instance for 1st argument"
-    end
-    @parent = @pie = parent
-    @ppath = parent.path
-    @path = @id = Pie_Slice_ID.join(TkCore::INTERP._ip_id_)
-    SliceID_TBL[@ppath] = {} unless SliceID_TBL[@ppath]
-    SliceID_TBL[@ppath][@id] = self
-    Pie_Slice_ID[1].succ!
-
-    if args[-1].kind_of?(Hash)
-      keys = args.unshift
-    end
-    @pie.set(@id, *args)
-    configure(keys)
-  end
-
-  def id
-    @id
-  end
-
-  def [](key)
-    cget key
-  end
-
-  def []=(key,val)
-    configure key, val
-    val
-  end
-
-  def cget(slot)
-    @pie.itemcget(@id, slot)
-  end
-
-  def configure(*args)
-    @pie.itemconfigure(@id, *args)
-    self
-  end
-
-  def configinfo(*args)
-    @pie.itemconfiginfo(@id, *args)
-  end
-
-  def current_configinfo(*args)
-    @pie.current_itemconfiginfo(@id, *args)
-  end
-
-  def delete
-    @pie.delete(@id)
-  end
-
-  def explode(value)
-    @pie.explode(@id, value)
-    self
-  end
-
-  def explode_value
-    @pie.explode_value(@id)
-  end
-
-  def lower(other=None)
-    @pie.lower(@id, other)
-    self
-  end
-
-  def raise(other=None)
-    @pie.raise(@id, other)
-    self
-  end
-
-  def set(value)
-    @pie.set(@id, value)
-    self
-  end
-  alias set_value set
-
-  def value
-    @pie.set(@id)
-  end
-end
-
-class Tk::Vu::NamedPieSlice
-  def self.new(parent, name, *args)
-    if SliceID_TBL[parent.path] && SliceID_TBL[parent.path][name]
-      return SliceID_TBL[parent.path][name]
-    else
-      super(parent, name, *args)
-    end
-  end
-
-  def initialize(parent, name, *args)
-    unless parent.kind_of?(Tk::Vu::Pie)
-      fail ArgumentError, "expect a Tk::Vu::Pie instance for 1st argument"
-    end
-    @parent = @pie = parent
-    @ppath = parent.path
-    @path = @id = name.to_s
-    SliceID_TBL[@ppath] = {} unless SliceID_TBL[@ppath]
-    SliceID_TBL[@ppath][@id] = self
-
-    if args[-1].kind_of?(Hash)
-      keys = args.unshift
-    end
-    @pie.set(@id, *args)
-    configure(keys)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/spinbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/spinbox.rb
deleted file mode 100644
index b649964..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/vu/spinbox.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-#  ::vu::spinbox widget
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-#  a standard spinbox (<= 8.3)
-#  This is the same as the 8.4 core spinbox widget.
-#
-require 'tk'
-
-if (Tk::TK_MAJOR_VERSION < 8 || 
-    (Tk::TK_MAJOR_VERSION == 8 && Tk::TK_MINOR_VERSION < 4))
-  # call setup script  --  <libdir>/tkextlib/vu.rb
-  require 'tkextlib/vu.rb'
-
-  Tk.tk_call('namespace', 'import', '::vu::spinbox')
-end
-
-module Tk
-  module Vu
-    Spinbox = TkSpinbox
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico.rb
deleted file mode 100644
index ce7b8ea..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-#  winico -- Windows Icon extension support
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/tktable/setup.rb'
-
-# load library
-require 'tkextlib/winico/winico'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/setup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/setup.rb
deleted file mode 100644
index ce0f0bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/setup.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#  setup.rb   --   setup script before calling TkPackage.require()
-#
-#    If you need some setup operations (for example, add a library path
-#    to the library search path) before using Tcl/Tk library packages 
-#    wrapped by Ruby scripts in this directory, please write the setup 
-#    operations in this file.
-#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/winico.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/winico.rb
deleted file mode 100644
index c53a3ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkextlib/winico/winico.rb
+++ /dev/null
@@ -1,189 +0,0 @@
-#
-#  tkextlib/winico/winico.rb
-#                               by Hidetoshi NAGAI (nagai at ai.kyutech.ac.jp)
-#
-
-require 'tk'
-
-# call setup script for general 'tkextlib' libraries
-require 'tkextlib/setup.rb'
-
-# call setup script
-require 'tkextlib/winico/setup.rb'
-
-# TkPackage.require('winico', '0.5')
-# TkPackage.require('winico', '0.6')
-TkPackage.require('winico')
-
-module Tk
-  class Winico < TkObject
-    PACKAGE_NAME = 'winico'.freeze
-    def self.package_name
-      PACKAGE_NAME
-    end
-
-    def self.package_version
-      begin
-        TkPackage.require('winico')
-      rescue
-        ''
-      end
-    end
-  end
-end
-
-class Tk::Winico
-  WinicoID_TBL = TkCore::INTERP.create_table
-  TkCore::INTERP.init_ip_env{ WinicoID_TBL.clear }
-
-  def self.id2obj(id)
-    (WinicoID_TBL.key?(id))? WinicoID_TBL[id] : id
-  end
-
-  def self.info
-    simplelist(Tk.tk_call('winico', 'info')).collect{|id| 
-      Tk::Winico.id2obj(id)
-    }
-  end
-
-  def self.icon_info(id)
-    simplelist(Tk.tk_call('winico', 'info', id)).collect{|inf|
-      h = Hash[*list(inf)]
-      h.keys.each{|k| h[k[1..-1]] = h.delete(k)}
-    }
-  end
-
-  #################################
-
-  def self.new_from_file(file_name)
-    self.new(file_name)
-  end
-
-  def self.new_from_resource(resource_name, file_name = nil)
-    self.new(file_name, resource_name)
-  end
-
-  def initialize(file_name, resource_name=nil, winico_id=nil)
-    if resource_name
-      # from resource
-      if file_name
-        @id = Tk.tk_call('winico', 'load', resource_name, file_name)
-      else
-        @id = Tk.tk_call('winico', 'load', resource_name)
-      end
-    elsif file_name
-      # from .ico file
-      @id = Tk.tk_call('winico', 'createfrom', file_name)
-    elsif winico_id
-      @id = winico_id
-    else
-      fail ArgumentError, 
-           "must be given proper information from where loading icons"
-    end
-    @path = @id
-    WinicoID_TBL[@id] = self
-  end
-
-  def id
-    @id
-  end
-
-  def set_window(win_id, *opts) # opts := ?'big'|'small'?, ?pos?
-    # NOTE:: the window, which is denoted by win_id, MUST BE MAPPED. 
-    #        If not, then this may fail or crash.
-    tk_call('winico', 'setwindow', win_id, @id, *opts)
-  end
-
-  def delete
-    tk_call('winico', 'delete', @id)
-    WinicoID_TBL.delete(@id)
-    self
-  end
-  alias destroy delete
-
-  def info
-    Tk::Winico.icon_info(@id)
-  end
-
-  #################################
-
-  class Winico_callback < TkValidateCommand
-    class ValidateArgs < TkUtil::CallbackSubst
-      KEY_TBL = [
-        [ ?m, ?s, :message ], 
-        [ ?i, ?x, :icon ], 
-        [ ?x, ?n, :x ], 
-        [ ?y, ?n, :y ], 
-        [ ?X, ?n, :last_x ], 
-        [ ?Y, ?n, :last_y ], 
-        [ ?t, ?n, :tickcount ], 
-        [ ?w, ?n, :icon_idnum ], 
-        [ ?l, ?n, :msg_idnum ], 
-        nil
-      ]
-
-      PROC_TBL = [
-        [ ?n, TkComm.method(:number) ], 
-        [ ?s, TkComm.method(:string) ], 
-        [ ?x, proc{|id| 
-            if Tk::Winico::WinicoID_TBL.key?(id)
-              Tk::Winico::WinicoID_TBL[id]
-            else
-              Tk::Winico.new(nil, nil, id)
-            end
-          } ], 
-        nil
-      ]
-
-      _setup_subst_table(KEY_TBL, PROC_TBL);
-
-      def self.ret_val(val)
-        val
-      end
-    end
-
-    def self._config_keys
-      ['callback']
-    end
-  end
-
-  #################################
-
-  def add_to_taskbar(keys = {})
-    keys = _symbolkey2str(keys)
-    Winico_callback._config_keys.each{|k|
-      if keys[k].kind_of?(Array)
-        cmd, *args = keys[k]
-        keys[k] = Winico_callback.new(cmd, args.join(' '))
-       # elsif keys[k].kind_of?(Proc)
-      elsif TkComm._callback_entry?(keys[k])
-        keys[k] = Winico_callback.new(keys[k])
-      end
-    }
-    tk_call('winico', 'taskbar', 'add', @id, *(hash_kv(keys)))
-    self
-  end
-  alias taskbar_add add_to_taskbar
-
-  def modify_taskbar(keys = {})
-    keys = _symbolkey2str(keys)
-    Winico_callback._config_keys.each{|k|
-      if keys[k].kind_of?(Array)
-        cmd, *args = keys[k]
-        keys[k] = Winico_callback.new(cmd, args.join(' '))
-      # elsif keys[k].kind_of?(Proc)
-      elsif TkComm._callback_entry?(keys[k])
-        keys[k] = Winico_callback.new(keys[k])
-      end
-    }
-    tk_call('winico', 'taskbar', 'modify', @id, *(hash_kv(keys)))
-    self
-  end
-  alias taskbar_modify modify_taskbar
-
-  def delete_from_taskbar
-    tk_call('winico', 'taskbar', 'delete', @id)
-    self
-  end
-  alias taskbar_delete delete_from_taskbar
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkfont.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkfont.rb
deleted file mode 100644
index 38a9663..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkfont.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkfont.rb - load tk/font.rb
-#
-require 'tk/font'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmacpkg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmacpkg.rb
deleted file mode 100644
index 35560e7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmacpkg.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkmacpkg.rb - load tk/macpkg.rb
-#
-require 'tk/macpkg'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmenubar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmenubar.rb
deleted file mode 100644
index 70214fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmenubar.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkmenubar.rb - load tk/menubar.rb
-#
-require 'tk/menubar'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmngfocus.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmngfocus.rb
deleted file mode 100644
index fe70950..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkmngfocus.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkmngfocus.rb - load tk/mngfocus.rb
-#
-require 'tk/mngfocus'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkpalette.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkpalette.rb
deleted file mode 100644
index 56b203b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkpalette.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkpalette.rb - load tk/palette.rb
-#
-require 'tk/palette'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkscrollbox.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkscrollbox.rb
deleted file mode 100644
index 6093b2e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkscrollbox.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkscrollbox.rb - load tk/scrollbox.rb
-#
-require 'tk/scrollbox'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tktext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tktext.rb
deleted file mode 100644
index 97ad62a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tktext.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tktext.rb - load tk/text.rb
-#
-require 'tk/text'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkvirtevent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkvirtevent.rb
deleted file mode 100644
index f4fae19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkvirtevent.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkvirtevent.rb - load tk/virtevent.rb
-#
-require 'tk/virtevent'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkwinpkg.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkwinpkg.rb
deleted file mode 100644
index 83371c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tkwinpkg.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-#   tkwinpkg.rb - load tk/winpkg.rb
-#
-require 'tk/winpkg'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tmpdir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tmpdir.rb
deleted file mode 100644
index 9f518ab..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tmpdir.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# tmpdir - retrieve temporary directory path
-#
-# $Id: tmpdir.rb 17799 2008-07-02 09:22:26Z shyouhei $
-#
-
-class Dir
-
-  @@systmpdir = '/tmp'
-
-  begin
-    require 'Win32API'
-    CSIDL_LOCAL_APPDATA = 0x001c
-    max_pathlen = 260
-    windir = ' '*(max_pathlen+1)
-    begin
-      getdir = Win32API.new('shell32', 'SHGetFolderPath', 'LLLLP', 'L')
-      raise RuntimeError if getdir.call(0, CSIDL_LOCAL_APPDATA, 0, 0, windir) != 0
-      windir = File.expand_path(windir.rstrip)
-    rescue RuntimeError
-      begin
-        getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L')
-      rescue RuntimeError
-        getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L')
-      end
-      len = getdir.call(windir, windir.size)
-      windir = File.expand_path(windir[0, len])
-    end
-    temp = File.join(windir.untaint, 'temp')
-    @@systmpdir = temp if File.directory?(temp) and File.writable?(temp)
-  rescue LoadError
-  end
-
-  ##
-  # Returns the operating system's temporary file path.
-
-  def Dir::tmpdir
-    tmp = '.'
-    if $SAFE > 0
-      tmp = @@systmpdir
-    else
-      for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'],
-	          ENV['USERPROFILE'], @@systmpdir, '/tmp']
-	if dir and File.directory?(dir) and File.writable?(dir)
-	  tmp = dir
-	  break
-	end
-      end
-      File.expand_path(tmp)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tracer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tracer.rb
deleted file mode 100644
index 71aa49c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tracer.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-#   tracer.rb - 
-#   	$Release Version: 0.2$
-#   	$Revision: 1.8 $
-#   	$Date: 1998/05/19 03:42:49 $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#   
-#
-
-#
-# tracer main class
-#
-class Tracer
-  @RCS_ID='-$Id: tracer.rb,v 1.8 1998/05/19 03:42:49 keiju Exp keiju $-'
-
-  @stdout = STDOUT
-  @verbose = false
-  class << self
-    attr :verbose, true
-    alias verbose? verbose
-    attr :stdout, true
-  end
-  
-  EVENT_SYMBOL = {
-    "line" => "-",
-    "call" => ">",
-    "return" => "<",
-    "class" => "C",
-    "end" => "E",
-    "c-call" => ">",
-    "c-return" => "<",
-  }
-  
-  def initialize
-    @threads = Hash.new
-    if defined? Thread.main
-      @threads[Thread.main.object_id] = 0
-    else
-      @threads[Thread.current.object_id] = 0
-    end
-
-    @get_line_procs = {}
-
-    @filters = []
-  end
-  
-  def stdout
-    Tracer.stdout
-  end
-
-  def on
-    if block_given?
-      on
-      begin
-	yield
-      ensure
-	off
-      end
-    else
-      set_trace_func method(:trace_func).to_proc
-      stdout.print "Trace on\n" if Tracer.verbose?
-    end
-  end
-  
-  def off
-    set_trace_func nil
-    stdout.print "Trace off\n" if Tracer.verbose?
-  end
-
-  def add_filter(p = proc)
-    @filters.push p
-  end
-
-  def set_get_line_procs(file, p = proc)
-    @get_line_procs[file] = p
-  end
-  
-  def get_line(file, line)
-    if p = @get_line_procs[file]
-      return p.call(line)
-    end
-
-    unless list = SCRIPT_LINES__[file]
-      begin
-	f = open(file)
-	begin 
-	  SCRIPT_LINES__[file] = list = f.readlines
-	ensure
-	  f.close
-	end
-      rescue
-	SCRIPT_LINES__[file] = list = []
-      end
-    end
-
-    if l = list[line - 1]
-      l
-    else
-      "-\n"
-    end
-  end
-  
-  def get_thread_no
-    if no = @threads[Thread.current.object_id]
-      no
-    else
-      @threads[Thread.current.object_id] = @threads.size
-    end
-  end
-  
-  def trace_func(event, file, line, id, binding, klass, *)
-    return if file == __FILE__
-    
-    for p in @filters
-      return unless p.call event, file, line, id, binding, klass
-    end
-    
-    saved_crit = Thread.critical
-    Thread.critical = true
-    stdout.printf("#%d:%s:%d:%s:%s: %s",
-      get_thread_no,
-      file,
-      line,
-      klass || '',
-      EVENT_SYMBOL[event],
-      get_line(file, line))
-    Thread.critical = saved_crit
-  end
-
-  Single = new
-  def Tracer.on
-    if block_given?
-      Single.on{yield}
-    else
-      Single.on
-    end
-  end
-  
-  def Tracer.off
-    Single.off
-  end
-  
-  def Tracer.set_get_line_procs(file_name, p = proc)
-    Single.set_get_line_procs(file_name, p)
-  end
-
-  def Tracer.add_filter(p = proc)
-    Single.add_filter(p)
-  end
-  
-end
-
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
-
-if $0 == __FILE__
-  # direct call
-    
-  $0 = ARGV[0]
-  ARGV.shift
-  Tracer.on
-  require $0
-elsif caller(0).size == 1
-  Tracer.on
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tsort.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tsort.rb
deleted file mode 100644
index a014e7f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/tsort.rb
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# tsort.rb - provides a module for topological sorting and strongly connected components.
-#++
-#
-
-#
-# TSort implements topological sorting using Tarjan's algorithm for
-# strongly connected components.
-#
-# TSort is designed to be able to be used with any object which can be
-# interpreted as a directed graph.
-#
-# TSort requires two methods to interpret an object as a graph,
-# tsort_each_node and tsort_each_child.
-#
-# * tsort_each_node is used to iterate for all nodes over a graph.
-# * tsort_each_child is used to iterate for child nodes of a given node.
-#
-# The equality of nodes are defined by eql? and hash since
-# TSort uses Hash internally.
-#
-# == A Simple Example
-#
-# The following example demonstrates how to mix the TSort module into an
-# existing class (in this case, Hash). Here, we're treating each key in
-# the hash as a node in the graph, and so we simply alias the required
-# #tsort_each_node method to Hash's #each_key method. For each key in the
-# hash, the associated value is an array of the node's child nodes. This
-# choice in turn leads to our implementation of the required #tsort_each_child
-# method, which fetches the array of child nodes and then iterates over that
-# array using the user-supplied block.
-#
-#   require 'tsort'
-#   
-#   class Hash
-#     include TSort
-#     alias tsort_each_node each_key
-#     def tsort_each_child(node, &block)
-#       fetch(node).each(&block)
-#     end
-#   end
-#   
-#   {1=>[2, 3], 2=>[3], 3=>[], 4=>[]}.tsort
-#   #=> [3, 2, 1, 4]
-#   
-#   {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}.strongly_connected_components
-#   #=> [[4], [2, 3], [1]]
-#
-# == A More Realistic Example
-#
-# A very simple `make' like tool can be implemented as follows:
-#
-#   require 'tsort'
-#   
-#   class Make
-#     def initialize
-#       @dep = {}
-#       @dep.default = []
-#     end
-#     
-#     def rule(outputs, inputs=[], &block)
-#       triple = [outputs, inputs, block]
-#       outputs.each {|f| @dep[f] = [triple]}
-#       @dep[triple] = inputs
-#     end
-#     
-#     def build(target)
-#       each_strongly_connected_component_from(target) {|ns|
-#         if ns.length != 1
-#           fs = ns.delete_if {|n| Array === n}
-#           raise TSort::Cyclic.new("cyclic dependencies: #{fs.join ', '}")
-#         end
-#         n = ns.first
-#         if Array === n
-#           outputs, inputs, block = n
-#           inputs_time = inputs.map {|f| File.mtime f}.max
-#           begin
-#             outputs_time = outputs.map {|f| File.mtime f}.min
-#           rescue Errno::ENOENT
-#             outputs_time = nil
-#           end
-#           if outputs_time == nil ||
-#              inputs_time != nil && outputs_time <= inputs_time
-#             sleep 1 if inputs_time != nil && inputs_time.to_i == Time.now.to_i
-#             block.call
-#           end
-#         end
-#       }
-#     end
-#     
-#     def tsort_each_child(node, &block)
-#       @dep[node].each(&block)
-#     end
-#     include TSort
-#   end
-#   
-#   def command(arg)
-#     print arg, "\n"
-#     system arg
-#   end
-#   
-#   m = Make.new
-#   m.rule(%w[t1]) { command 'date > t1' }
-#   m.rule(%w[t2]) { command 'date > t2' }
-#   m.rule(%w[t3]) { command 'date > t3' }
-#   m.rule(%w[t4], %w[t1 t3]) { command 'cat t1 t3 > t4' }
-#   m.rule(%w[t5], %w[t4 t2]) { command 'cat t4 t2 > t5' }
-#   m.build('t5')
-#
-# == Bugs
-#
-# * 'tsort.rb' is wrong name because this library uses
-#   Tarjan's algorithm for strongly connected components.
-#   Although 'strongly_connected_components.rb' is correct but too long.
-#
-# == References
-#
-# R. E. Tarjan, "Depth First Search and Linear Graph Algorithms",
-# <em>SIAM Journal on Computing</em>, Vol. 1, No. 2, pp. 146-160, June 1972.
-#
-
-module TSort
-  class Cyclic < StandardError
-  end
-
-  #
-  # Returns a topologically sorted array of nodes.
-  # The array is sorted from children to parents, i.e.
-  # the first element has no child and the last node has no parent.
-  #
-  # If there is a cycle, TSort::Cyclic is raised.
-  #
-  def tsort
-    result = []
-    tsort_each {|element| result << element}
-    result
-  end
-
-  #
-  # The iterator version of the #tsort method.
-  # <tt><em>obj</em>.tsort_each</tt> is similar to <tt><em>obj</em>.tsort.each</tt>, but
-  # modification of _obj_ during the iteration may lead to unexpected results.
-  #
-  # #tsort_each returns +nil+.
-  # If there is a cycle, TSort::Cyclic is raised.
-  #
-  def tsort_each # :yields: node
-    each_strongly_connected_component {|component|
-      if component.size == 1
-        yield component.first
-      else
-        raise Cyclic.new("topological sort failed: #{component.inspect}")
-      end
-    }
-  end
-
-  #
-  # Returns strongly connected components as an array of arrays of nodes.
-  # The array is sorted from children to parents.
-  # Each elements of the array represents a strongly connected component.
-  #
-  def strongly_connected_components
-    result = []
-    each_strongly_connected_component {|component| result << component}
-    result
-  end
-
-  #
-  # The iterator version of the #strongly_connected_components method.
-  # <tt><em>obj</em>.each_strongly_connected_component</tt> is similar to
-  # <tt><em>obj</em>.strongly_connected_components.each</tt>, but
-  # modification of _obj_ during the iteration may lead to unexpected results.
-  #
-  #
-  # #each_strongly_connected_component returns +nil+.
-  #
-  def each_strongly_connected_component # :yields: nodes
-    id_map = {}
-    stack = []
-    tsort_each_node {|node|
-      unless id_map.include? node
-        each_strongly_connected_component_from(node, id_map, stack) {|c|
-          yield c
-        }
-      end
-    }
-    nil
-  end
-
-  #
-  # Iterates over strongly connected component in the subgraph reachable from 
-  # _node_.
-  #
-  # Return value is unspecified.
-  #
-  # #each_strongly_connected_component_from doesn't call #tsort_each_node.
-  #
-  def each_strongly_connected_component_from(node, id_map={}, stack=[]) # :yields: nodes
-    minimum_id = node_id = id_map[node] = id_map.size
-    stack_length = stack.length
-    stack << node
-
-    tsort_each_child(node) {|child|
-      if id_map.include? child
-        child_id = id_map[child]
-        minimum_id = child_id if child_id && child_id < minimum_id
-      else
-        sub_minimum_id =
-          each_strongly_connected_component_from(child, id_map, stack) {|c|
-            yield c
-          }
-        minimum_id = sub_minimum_id if sub_minimum_id < minimum_id
-      end
-    }
-
-    if node_id == minimum_id
-      component = stack.slice!(stack_length .. -1)
-      component.each {|n| id_map[n] = nil}
-      yield component
-    end
-
-    minimum_id
-  end
-
-  #
-  # Should be implemented by a extended class.
-  #
-  # #tsort_each_node is used to iterate for all nodes over a graph.
-  #
-  def tsort_each_node # :yields: node
-    raise NotImplementedError.new
-  end
-
-  #
-  # Should be implemented by a extended class.
-  #
-  # #tsort_each_child is used to iterate for child nodes of _node_.
-  #
-  def tsort_each_child(node) # :yields: child
-    raise NotImplementedError.new
-  end
-end
-
-if __FILE__ == $0
-  require 'test/unit'
-
-  class TSortHash < Hash # :nodoc:
-    include TSort
-    alias tsort_each_node each_key
-    def tsort_each_child(node, &block)
-      fetch(node).each(&block)
-    end
-  end
-
-  class TSortArray < Array # :nodoc:
-    include TSort
-    alias tsort_each_node each_index
-    def tsort_each_child(node, &block)
-      fetch(node).each(&block)
-    end
-  end
-
-  class TSortTest < Test::Unit::TestCase # :nodoc:
-    def test_dag
-      h = TSortHash[{1=>[2, 3], 2=>[3], 3=>[]}]
-      assert_equal([3, 2, 1], h.tsort)
-      assert_equal([[3], [2], [1]], h.strongly_connected_components)
-    end
-
-    def test_cycle
-      h = TSortHash[{1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}]
-      assert_equal([[4], [2, 3], [1]],
-        h.strongly_connected_components.map {|nodes| nodes.sort})
-      assert_raise(TSort::Cyclic) { h.tsort }
-    end
-
-    def test_array
-      a = TSortArray[[1], [0], [0], [2]]
-      assert_equal([[0, 1], [2], [3]],
-        a.strongly_connected_components.map {|nodes| nodes.sort})
-
-      a = TSortArray[[], [0]]
-      assert_equal([[0], [1]],
-        a.strongly_connected_components.map {|nodes| nodes.sort})
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/un.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/un.rb
deleted file mode 100644
index 9bf6c13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/un.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-# 
-# = un.rb
-# 
-# Copyright (c) 2003 WATANABE Hirofumi <eban at ruby-lang.org>
-# 
-# This program is free software.
-# You can distribute/modify this program under the same terms of Ruby.
-# 
-# == Utilities to replace common UNIX commands in Makefiles etc
-#
-# == SYNOPSIS
-#
-#   ruby -run -e cp -- [OPTION] SOURCE DEST
-#   ruby -run -e ln -- [OPTION] TARGET LINK_NAME
-#   ruby -run -e mv -- [OPTION] SOURCE DEST
-#   ruby -run -e rm -- [OPTION] FILE
-#   ruby -run -e mkdir -- [OPTION] DIRS
-#   ruby -run -e rmdir -- [OPTION] DIRS
-#   ruby -run -e install -- [OPTION] SOURCE DEST
-#   ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-#   ruby -run -e touch -- [OPTION] FILE
-#   ruby -run -e help [COMMAND]
-
-require "fileutils"
-require "optparse"
-
-module FileUtils
-#  @fileutils_label = ""
-  @fileutils_output = $stdout
-end
-
-def setup(options = "")
-  ARGV.map! do |x|
-    case x
-    when /^-/
-      x.delete "^-#{options}v"
-    when /[*?\[{]/
-      Dir[x]
-    else
-      x
-    end
-  end
-  ARGV.flatten!
-  ARGV.delete_if{|x| x == "-"}
-  opt_hash = {}
-  OptionParser.new do |o|
-    options.scan(/.:?/) do |s|
-      o.on("-" + s.tr(":", " ")) do |val|
-        opt_hash[s.delete(":").intern] = val
-      end
-    end
-    o.on("-v") do opt_hash[:verbose] = true end
-    o.parse!
-  end
-  yield ARGV, opt_hash
-end
-
-##
-# Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
-#
-#   ruby -run -e cp -- [OPTION] SOURCE DEST
-#
-#   -p		preserve file attributes if possible
-#   -r		copy recursively
-#   -v		verbose
-#
-
-def cp
-  setup("pr") do |argv, options|
-    cmd = "cp"
-    cmd += "_r" if options.delete :r
-    options[:preserve] = true if options.delete :p
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.send cmd, argv, dest, options
-  end
-end
-
-##
-# Create a link to the specified TARGET with LINK_NAME.
-#
-#   ruby -run -e ln -- [OPTION] TARGET LINK_NAME
-#
-#   -s		make symbolic links instead of hard links
-#   -f		remove existing destination files
-#   -v		verbose
-#
-
-def ln
-  setup("sf") do |argv, options|
-    cmd = "ln"
-    cmd += "_s" if options.delete :s
-    options[:force] = true if options.delete :f
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.send cmd, argv, dest, options
-  end
-end
-
-##
-# Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
-#
-#   ruby -run -e mv -- [OPTION] SOURCE DEST
-#
-#   -v		verbose
-#
-
-def mv
-  setup do |argv, options|
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.mv argv, dest, options
-  end
-end
-
-##
-# Remove the FILE
-#
-#   ruby -run -e rm -- [OPTION] FILE
-#
-#   -f		ignore nonexistent files
-#   -r		remove the contents of directories recursively
-#   -v		verbose
-#
-
-def rm
-  setup("fr") do |argv, options|
-    cmd = "rm"
-    cmd += "_r" if options.delete :r
-    options[:force] = true if options.delete :f
-    FileUtils.send cmd, argv, options
-  end
-end
-
-##
-# Create the DIR, if they do not already exist.
-#
-#   ruby -run -e mkdir -- [OPTION] DIR
-#
-#   -p		no error if existing, make parent directories as needed
-#   -v		verbose
-#
-
-def mkdir
-  setup("p") do |argv, options|
-    cmd = "mkdir"
-    cmd += "_p" if options.delete :p
-    FileUtils.send cmd, argv, options
-  end
-end
-
-##
-# Remove the DIR.
-#
-#   ruby -run -e rmdir -- [OPTION] DIR
-#
-#   -v		verbose
-#
-
-def rmdir
-  setup do |argv, options|
-    FileUtils.rmdir argv, options
-  end
-end
-
-##
-# Copy SOURCE to DEST.
-#
-#   ruby -run -e install -- [OPTION] SOURCE DEST
-#
-#   -p		apply access/modification times of SOURCE files to
-#  		corresponding destination files
-#   -m		set permission mode (as in chmod), instead of 0755
-#   -v		verbose
-#
-
-def install
-  setup("pm:") do |argv, options|
-    options[:mode] = (mode = options.delete :m) ? mode.oct : 0755
-    options[:preserve] = true if options.delete :p
-    dest = argv.pop
-    argv = argv[0] if argv.size == 1
-    FileUtils.install argv, dest, options
-  end
-end
-
-##
-# Change the mode of each FILE to OCTAL-MODE.
-#
-#   ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-#
-#   -v		verbose
-#
-
-def chmod
-  setup do |argv, options|
-    mode = argv.shift.oct
-    FileUtils.chmod mode, argv, options
-  end
-end
-
-##
-# Update the access and modification times of each FILE to the current time.
-#
-#   ruby -run -e touch -- [OPTION] FILE
-#
-#   -v		verbose
-#
-
-def touch
-  setup do |argv, options|
-    FileUtils.touch argv, options
-  end
-end
-
-##
-# Display help message.
-#
-#   ruby -run -e help [COMMAND]
-#
-
-def help
-  setup do |argv,|
-    all = argv.empty?
-    open(__FILE__) do |me|
-      while me.gets("##\n")
-	if help = me.gets("\n\n")
-	  if all or argv.delete help[/-e \w+/].sub(/-e /, "")
-	    print help.gsub(/^# ?/, "")
-	  end
-	end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri.rb
deleted file mode 100644
index d06fb40..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# URI support for Ruby
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# Documentation:: Akira Yamada <akira at ruby-lang.org>, Dmitry V. Sabanin <sdmitry at lrn.ru>
-# License:: 
-#  Copyright (c) 2001 akira yamada <akira at ruby-lang.org>
-#  You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: uri.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# 
-# See URI for documentation
-#
-
-module URI
-  # :stopdoc:
-  VERSION_CODE = '000911'.freeze
-  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
-  # :startdoc:
-
-end
-
-require 'uri/common'
-require 'uri/generic'
-require 'uri/ftp'
-require 'uri/http'
-require 'uri/https'
-require 'uri/ldap'
-require 'uri/mailto'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/common.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/common.rb
deleted file mode 100644
index 8b2ed96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/common.rb
+++ /dev/null
@@ -1,611 +0,0 @@
-# = uri/common.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# Revision:: $Id: common.rb 16982 2008-06-07 20:11:00Z shyouhei $
-# License:: 
-#   You can redistribute it and/or modify it under the same term as Ruby.
-#
-
-module URI
-  module REGEXP
-    #
-    # Patterns used to parse URI's
-    #
-    module PATTERN
-      # :stopdoc:
-
-      # RFC 2396 (URI Generic Syntax)
-      # RFC 2732 (IPv6 Literal Addresses in URL's)
-      # RFC 2373 (IPv6 Addressing Architecture)
-
-      # alpha         = lowalpha | upalpha
-      ALPHA = "a-zA-Z"
-      # alphanum      = alpha | digit
-      ALNUM = "#{ALPHA}\\d"
-
-      # hex           = digit | "A" | "B" | "C" | "D" | "E" | "F" |
-      #                         "a" | "b" | "c" | "d" | "e" | "f"
-      HEX     = "a-fA-F\\d"
-      # escaped       = "%" hex hex
-      ESCAPED = "%[#{HEX}]{2}"
-      # mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
-      #                 "(" | ")"
-      # unreserved    = alphanum | mark
-      UNRESERVED = "-_.!~*'()#{ALNUM}"
-      # reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
-      #                 "$" | ","
-      # reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | 
-      #                 "$" | "," | "[" | "]" (RFC 2732)
-      RESERVED = ";/?:@&=+$,\\[\\]"
-
-      # uric          = reserved | unreserved | escaped
-      URIC = "(?:[#{UNRESERVED}#{RESERVED}]|#{ESCAPED})"
-      # uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
-      #                 "&" | "=" | "+" | "$" | ","
-      URIC_NO_SLASH = "(?:[#{UNRESERVED};?:@&=+$,]|#{ESCAPED})"
-      # query         = *uric
-      QUERY = "#{URIC}*"
-      # fragment      = *uric
-      FRAGMENT = "#{URIC}*"
-
-      # domainlabel   = alphanum | alphanum *( alphanum | "-" ) alphanum
-      DOMLABEL = "(?:[#{ALNUM}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
-      # toplabel      = alpha | alpha *( alphanum | "-" ) alphanum
-      TOPLABEL = "(?:[#{ALPHA}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
-      # hostname      = *( domainlabel "." ) toplabel [ "." ]
-      HOSTNAME = "(?:#{DOMLABEL}\\.)*#{TOPLABEL}\\.?"
-
-      # RFC 2373, APPENDIX B:
-      # IPv6address = hexpart [ ":" IPv4address ]
-      # IPv4address   = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
-      # hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
-      # hexseq  = hex4 *( ":" hex4)
-      # hex4    = 1*4HEXDIG
-      #
-      # XXX: This definition has a flaw. "::" + IPv4address must be
-      # allowed too.  Here is a replacement.
-      #
-      # IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
-      IPV4ADDR = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"
-      # hex4     = 1*4HEXDIG
-      HEX4 = "[#{HEX}]{1,4}"
-      # lastpart = hex4 | IPv4address
-      LASTPART = "(?:#{HEX4}|#{IPV4ADDR})"
-      # hexseq1  = *( hex4 ":" ) hex4
-      HEXSEQ1 = "(?:#{HEX4}:)*#{HEX4}"
-      # hexseq2  = *( hex4 ":" ) lastpart
-      HEXSEQ2 = "(?:#{HEX4}:)*#{LASTPART}"
-      # IPv6address = hexseq2 | [ hexseq1 ] "::" [ hexseq2 ]
-      IPV6ADDR = "(?:#{HEXSEQ2}|(?:#{HEXSEQ1})?::(?:#{HEXSEQ2})?)"
-
-      # IPv6prefix  = ( hexseq1 | [ hexseq1 ] "::" [ hexseq1 ] ) "/" 1*2DIGIT
-      # unused
-
-      # ipv6reference = "[" IPv6address "]" (RFC 2732)
-      IPV6REF = "\\[#{IPV6ADDR}\\]"
-
-      # host          = hostname | IPv4address
-      # host          = hostname | IPv4address | IPv6reference (RFC 2732)
-      HOST = "(?:#{HOSTNAME}|#{IPV4ADDR}|#{IPV6REF})"
-      # port          = *digit
-      PORT = '\d*'
-      # hostport      = host [ ":" port ]
-      HOSTPORT = "#{HOST}(?::#{PORT})?"
-
-      # userinfo      = *( unreserved | escaped |
-      #                    ";" | ":" | "&" | "=" | "+" | "$" | "," )
-      USERINFO = "(?:[#{UNRESERVED};:&=+$,]|#{ESCAPED})*"
-
-      # pchar         = unreserved | escaped |
-      #                 ":" | "@" | "&" | "=" | "+" | "$" | ","
-      PCHAR = "(?:[#{UNRESERVED}:@&=+$,]|#{ESCAPED})"
-      # param         = *pchar
-      PARAM = "#{PCHAR}*"
-      # segment       = *pchar *( ";" param )
-      SEGMENT = "#{PCHAR}*(?:;#{PARAM})*"
-      # path_segments = segment *( "/" segment )
-      PATH_SEGMENTS = "#{SEGMENT}(?:/#{SEGMENT})*"
-
-      # server        = [ [ userinfo "@" ] hostport ]
-      SERVER = "(?:#{USERINFO}@)?#{HOSTPORT}"
-      # reg_name      = 1*( unreserved | escaped | "$" | "," |
-      #                     ";" | ":" | "@" | "&" | "=" | "+" )
-      REG_NAME = "(?:[#{UNRESERVED}$,;:@&=+]|#{ESCAPED})+"
-      # authority     = server | reg_name
-      AUTHORITY = "(?:#{SERVER}|#{REG_NAME})"
-
-      # rel_segment   = 1*( unreserved | escaped |
-      #                     ";" | "@" | "&" | "=" | "+" | "$" | "," )
-      REL_SEGMENT = "(?:[#{UNRESERVED};@&=+$,]|#{ESCAPED})+"
-
-      # scheme        = alpha *( alpha | digit | "+" | "-" | "." )
-      SCHEME = "[#{ALPHA}][-+.#{ALPHA}\\d]*"
-
-      # abs_path      = "/"  path_segments
-      ABS_PATH = "/#{PATH_SEGMENTS}"
-      # rel_path      = rel_segment [ abs_path ]
-      REL_PATH = "#{REL_SEGMENT}(?:#{ABS_PATH})?"
-      # net_path      = "//" authority [ abs_path ]
-      NET_PATH   = "//#{AUTHORITY}(?:#{ABS_PATH})?"
-
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      HIER_PART   = "(?:#{NET_PATH}|#{ABS_PATH})(?:\\?(?:#{QUERY}))?"
-      # opaque_part   = uric_no_slash *uric
-      OPAQUE_PART = "#{URIC_NO_SLASH}#{URIC}*"
-
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      ABS_URI   = "#{SCHEME}:(?:#{HIER_PART}|#{OPAQUE_PART})"
-      # relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
-      REL_URI = "(?:#{NET_PATH}|#{ABS_PATH}|#{REL_PATH})(?:\\?#{QUERY})?"
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-      URI_REF = "(?:#{ABS_URI}|#{REL_URI})?(?:##{FRAGMENT})?"
-
-      # XXX:
-      X_ABS_URI = "
-        (#{PATTERN::SCHEME}):                     (?# 1: scheme)
-        (?:
-           (#{PATTERN::OPAQUE_PART})              (?# 2: opaque)
-        |
-           (?:(?:
-             //(?:
-                 (?:(?:(#{PATTERN::USERINFO})@)?  (?# 3: userinfo)
-                   (?:(#{PATTERN::HOST})(?::(\\d*))?))?(?# 4: host, 5: port)
-               |
-                 (#{PATTERN::REG_NAME})           (?# 6: registry)
-               )
-             |
-             (?!//))                              (?# XXX: '//' is the mark for hostport)
-             (#{PATTERN::ABS_PATH})?              (?# 7: path)
-           )(?:\\?(#{PATTERN::QUERY}))?           (?# 8: query)
-        )
-        (?:\\#(#{PATTERN::FRAGMENT}))?            (?# 9: fragment)
-      "
-      X_REL_URI = "
-        (?:
-          (?:
-            //
-            (?:
-              (?:(#{PATTERN::USERINFO})@)?       (?# 1: userinfo)
-                (#{PATTERN::HOST})?(?::(\\d*))?  (?# 2: host, 3: port)
-            |
-              (#{PATTERN::REG_NAME})             (?# 4: registry)
-            )
-          )
-        |
-          (#{PATTERN::REL_SEGMENT})              (?# 5: rel_segment)
-        )?
-        (#{PATTERN::ABS_PATH})?                  (?# 6: abs_path)
-        (?:\\?(#{PATTERN::QUERY}))?              (?# 7: query)
-        (?:\\#(#{PATTERN::FRAGMENT}))?           (?# 8: fragment)
-      "
-      # :startdoc:
-    end # PATTERN
-
-    # :stopdoc:
-
-    # for URI::split
-    ABS_URI = Regexp.new('^' + PATTERN::X_ABS_URI + '$', #'
-                         Regexp::EXTENDED, 'N').freeze
-    REL_URI = Regexp.new('^' + PATTERN::X_REL_URI + '$', #'
-                         Regexp::EXTENDED, 'N').freeze
-
-    # for URI::extract
-    URI_REF     = Regexp.new(PATTERN::URI_REF, false, 'N').freeze
-    ABS_URI_REF = Regexp.new(PATTERN::X_ABS_URI, Regexp::EXTENDED, 'N').freeze
-    REL_URI_REF = Regexp.new(PATTERN::X_REL_URI, Regexp::EXTENDED, 'N').freeze
-
-    # for URI::escape/unescape
-    ESCAPED = Regexp.new(PATTERN::ESCAPED, false, 'N').freeze
-    UNSAFE  = Regexp.new("[^#{PATTERN::UNRESERVED}#{PATTERN::RESERVED}]",
-                         false, 'N').freeze
-
-    # for Generic#initialize
-    SCHEME   = Regexp.new("^#{PATTERN::SCHEME}$", false, 'N').freeze #"
-    USERINFO = Regexp.new("^#{PATTERN::USERINFO}$", false, 'N').freeze #"
-    HOST     = Regexp.new("^#{PATTERN::HOST}$", false, 'N').freeze #"
-    PORT     = Regexp.new("^#{PATTERN::PORT}$", false, 'N').freeze #"
-    OPAQUE   = Regexp.new("^#{PATTERN::OPAQUE_PART}$", false, 'N').freeze #"
-    REGISTRY = Regexp.new("^#{PATTERN::REG_NAME}$", false, 'N').freeze #"
-    ABS_PATH = Regexp.new("^#{PATTERN::ABS_PATH}$", false, 'N').freeze #"
-    REL_PATH = Regexp.new("^#{PATTERN::REL_PATH}$", false, 'N').freeze #"
-    QUERY    = Regexp.new("^#{PATTERN::QUERY}$", false, 'N').freeze #"
-    FRAGMENT = Regexp.new("^#{PATTERN::FRAGMENT}$", false, 'N').freeze #"
-    # :startdoc:
-  end # REGEXP
-
-  module Util # :nodoc:
-    def make_components_hash(klass, array_hash)
-      tmp = {}
-      if array_hash.kind_of?(Array) &&
-          array_hash.size == klass.component.size - 1
-        klass.component[1..-1].each_index do |i|
-          begin
-            tmp[klass.component[i + 1]] = array_hash[i].clone
-          rescue TypeError
-            tmp[klass.component[i + 1]] = array_hash[i]
-          end
-        end
-
-      elsif array_hash.kind_of?(Hash)
-        array_hash.each do |key, value|
-          begin
-            tmp[key] = value.clone
-          rescue TypeError
-            tmp[key] = value
-          end
-        end
-      else
-        raise ArgumentError, 
-          "expected Array of or Hash of components of #{klass.to_s} (#{klass.component[1..-1].join(', ')})"
-      end
-      tmp[:scheme] = klass.to_s.sub(/\A.*::/, '').downcase
-
-      return tmp
-    end
-    module_function :make_components_hash
-  end
-
-  module Escape
-    include REGEXP
-
-    #
-    # == Synopsis
-    #
-    #   URI.escape(str [, unsafe])
-    #
-    # == Args
-    #
-    # +str+::
-    #   String to replaces in.
-    # +unsafe+::
-    #   Regexp that matches all symbols that must be replaced with codes.
-    #   By default uses <tt>REGEXP::UNSAFE</tt>.
-    #   When this argument is a String, it represents a character set.
-    #
-    # == Description
-    #
-    # Escapes the string, replacing all unsafe characters with codes.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   enc_uri = URI.escape("http://example.com/?a=\11\15")
-    #   p enc_uri
-    #   # => "http://example.com/?a=%09%0D"
-    #
-    #   p URI.unescape(enc_uri)
-    #   # => "http://example.com/?a=\t\r"
-    #
-    #   p URI.escape("@?@!", "!?")
-    #   # => "@%3F@%21"
-    #
-    def escape(str, unsafe = UNSAFE)
-      unless unsafe.kind_of?(Regexp)
-        # perhaps unsafe is String object
-        unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
-      end
-      str.gsub(unsafe) do |us|
-        tmp = ''
-        us.each_byte do |uc|
-          tmp << sprintf('%%%02X', uc)
-        end
-        tmp
-      end
-    end
-    alias encode escape
-    #
-    # == Synopsis
-    #
-    #   URI.unescape(str)
-    #
-    # == Args
-    #
-    # +str+::
-    #   Unescapes the string.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   enc_uri = URI.escape("http://example.com/?a=\11\15")
-    #   p enc_uri
-    #   # => "http://example.com/?a=%09%0D"
-    #
-    #   p URI.unescape(enc_uri)
-    #   # => "http://example.com/?a=\t\r"
-    #
-    def unescape(str)
-      str.gsub(ESCAPED) do
-        $&[1,2].hex.chr
-      end
-    end
-    alias decode unescape
-  end
-
-  include REGEXP
-  extend Escape
-
-  @@schemes = {}
-  
-  #
-  # Base class for all URI exceptions.
-  #
-  class Error < StandardError; end
-  #
-  # Not a URI.
-  #
-  class InvalidURIError < Error; end
-  #
-  # Not a URI component.
-  #
-  class InvalidComponentError < Error; end
-  #
-  # URI is valid, bad usage is not.
-  #
-  class BadURIError < Error; end
-
-  #
-  # == Synopsis
-  #
-  #   URI::split(uri)
-  #
-  # == Args
-  #
-  # +uri+::
-  #   String with URI.
-  #
-  # == Description
-  #
-  # Splits the string on following parts and returns array with result:
-  #
-  #   * Scheme
-  #   * Userinfo
-  #   * Host
-  #   * Port
-  #   * Registry
-  #   * Path
-  #   * Opaque
-  #   * Query
-  #   * Fragment
-  # 
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   p URI.split("http://www.ruby-lang.org/")
-  #   # => ["http", nil, "www.ruby-lang.org", nil, nil, "/", nil, nil, nil]
-  #
-  def self.split(uri)
-    case uri
-    when ''
-      # null uri
-
-    when ABS_URI
-      scheme, opaque, userinfo, host, port, 
-        registry, path, query, fragment = $~[1..-1]
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      # opaque_part   = uric_no_slash *uric
-
-      # abs_path      = "/"  path_segments
-      # net_path      = "//" authority [ abs_path ]
-
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-
-      if !scheme
-        raise InvalidURIError, 
-          "bad URI(absolute but no scheme): #{uri}"
-      end
-      if !opaque && (!path && (!host && !registry))
-        raise InvalidURIError,
-          "bad URI(absolute but no path): #{uri}" 
-      end
-
-    when REL_URI
-      scheme = nil
-      opaque = nil
-
-      userinfo, host, port, registry, 
-        rel_segment, abs_path, query, fragment = $~[1..-1]
-      if rel_segment && abs_path
-        path = rel_segment + abs_path
-      elsif rel_segment
-        path = rel_segment
-      elsif abs_path
-        path = abs_path
-      end
-
-      # URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
-
-      # relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
-
-      # net_path      = "//" authority [ abs_path ]
-      # abs_path      = "/"  path_segments
-      # rel_path      = rel_segment [ abs_path ]
-
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-
-    else
-      raise InvalidURIError, "bad URI(is not URI?): #{uri}"
-    end
-
-    path = '' if !path && !opaque # (see RFC2396 Section 5.2)
-    ret = [
-      scheme, 
-      userinfo, host, port,         # X
-      registry,                        # X
-      path,                         # Y
-      opaque,                        # Y
-      query,
-      fragment
-    ]
-    return ret
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::parse(uri_str)
-  #
-  # == Args
-  #
-  # +uri_str+::
-  #   String with URI.
-  #
-  # == Description
-  #
-  # Creates one of the URI's subclasses instance from the string.
-  #  
-  # == Raises
-  #
-  # URI::InvalidURIError
-  #   Raised if URI given is not a correct one.
-  #
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   uri = URI.parse("http://www.ruby-lang.org/")
-  #   p uri
-  #   # => #<URI::HTTP:0x202281be URL:http://www.ruby-lang.org/>
-  #   p uri.scheme 
-  #   # => "http" 
-  #   p uri.host 
-  #   # => "www.ruby-lang.org" 
-  # 
-  def self.parse(uri)
-    scheme, userinfo, host, port, 
-      registry, path, opaque, query, fragment = self.split(uri)
-
-    if scheme && @@schemes.include?(scheme.upcase)
-      @@schemes[scheme.upcase].new(scheme, userinfo, host, port, 
-                                   registry, path, opaque, query, 
-                                   fragment)
-    else
-      Generic.new(scheme, userinfo, host, port, 
-                  registry, path, opaque, query, 
-                  fragment)
-    end
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::join(str[, str, ...])
-  #
-  # == Args
-  #
-  # +str+::
-  #   String(s) to work with
-  #
-  # == Description
-  #
-  # Joins URIs.
-  #
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   p URI.join("http://localhost/","main.rbx")
-  #   # => #<URI::HTTP:0x2022ac02 URL:http://localhost/main.rbx>
-  #
-  def self.join(*str)
-    u = self.parse(str[0])
-    str[1 .. -1].each do |x|
-      u = u.merge(x)
-    end
-    u
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::extract(str[, schemes][,&blk])
-  #
-  # == Args
-  #
-  # +str+:: 
-  #   String to extract URIs from.
-  # +schemes+::
-  #   Limit URI matching to a specific schemes.
-  #
-  # == Description
-  #
-  # Extracts URIs from a string. If block given, iterates through all matched URIs.
-  # Returns nil if block given or array with matches.
-  #
-  # == Usage
-  #
-  #   require "uri"
-  #
-  #   URI.extract("text here http://foo.example.org/bla and here mailto:test at example.com and here also.")
-  #   # => ["http://foo.example.com/bla", "mailto:test at example.com"]
-  #
-  def self.extract(str, schemes = nil, &block)
-    if block_given?
-      str.scan(regexp(schemes)) { yield $& }
-      nil
-    else
-      result = []
-      str.scan(regexp(schemes)) { result.push $& }
-      result
-    end
-  end
-
-  #
-  # == Synopsis
-  #
-  #   URI::regexp([match_schemes])
-  #
-  # == Args
-  #
-  # +match_schemes+:: 
-  #   Array of schemes. If given, resulting regexp matches to URIs
-  #   whose scheme is one of the match_schemes.
-  # 
-  # == Description
-  # Returns a Regexp object which matches to URI-like strings.
-  # The Regexp object returned by this method includes arbitrary
-  # number of capture group (parentheses).  Never rely on it's number.
-  # 
-  # == Usage
-  #
-  #   require 'uri'
-  #
-  #   # extract first URI from html_string
-  #   html_string.slice(URI.regexp)
-  # 
-  #   # remove ftp URIs
-  #   html_string.sub(URI.regexp(['ftp'])
-  # 
-  #   # You should not rely on the number of parentheses
-  #   html_string.scan(URI.regexp) do |*matches|
-  #     p $&
-  #   end
-  #
-  def self.regexp(schemes = nil)
-    unless schemes
-      ABS_URI_REF
-    else
-      /(?=#{Regexp.union(*schemes)}:)#{PATTERN::X_ABS_URI}/xn
-    end
-  end
-
-end
-
-module Kernel
-  # alias for URI.parse.
-  #
-  # This method is introduced at 1.8.2.
-  def URI(uri_str) # :doc:
-    URI.parse(uri_str)
-  end
-  module_function :URI
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ftp.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ftp.rb
deleted file mode 100644
index 4a6ecb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ftp.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-# = uri/ftp.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: ftp.rb 11757 2007-02-15 11:36:28Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # RFC1738 section 3.2.
-  #
-  class FTP < Generic
-    DEFAULT_PORT = 21
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port,
-      :path, :typecode
-    ].freeze
-    #
-    # Typecode is, "a", "i" or "d". 
-    # As for "a" the text, as for "i" binary, 
-    # as for "d" the directory is displayed. 
-    # "A" with the text, as for "i" being binary, 
-    # is because the respective data type was called ASCII and 
-    # IMAGE with the protocol of FTP.
-    #
-    TYPECODE = ['a', 'i', 'd'].freeze
-    TYPECODE_PREFIX = ';type='.freeze
-
-    def self.new2(user, password, host, port, path, 
-                  typecode = nil, arg_check = true)
-      typecode = nil if typecode.size == 0
-      if typecode && !TYPECODE.include?(typecode)
-        raise ArgumentError,
-          "bad typecode is specified: #{typecode}"
-      end
-
-      # do escape
-
-      self.new('ftp',
-               [user, password], 
-               host, port, nil, 
-               typecode ? path + TYPECODE_PREFIX + typecode : path, 
-               nil, nil, nil, arg_check)
-    end
-
-    #
-    # == Description
-    #
-    # Creates a new URI::FTP object from components of URI::FTP with
-    # check.  It is scheme, userinfo, host, port, path and typecode. It
-    # provided by an Array or a Hash. typecode is "a", "i" or "d".
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:typecode]
-        if tmp[:typecode].size == 1
-          tmp[:typecode] = TYPECODE_PREFIX + tmp[:typecode] 
-        end
-        tmp[:path] << tmp[:typecode]
-      end
-
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Create a new URI::FTP object from ``generic'' components with no
-    # check.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #   p ftp = URI.parse("ftp://ftp.ruby-lang.org/pub/ruby/;type=d") 
-    #   # => #<URI::FTP:0x201fad08 URL:ftp://ftp.ruby-lang.org/pub/ruby/;type=d>
-    #   p ftp.typecode
-    #   # => "d"
-    #
-    def initialize(*arg)
-      super(*arg)
-      @typecode = nil
-      tmp = @path.index(TYPECODE_PREFIX)
-      if tmp
-        typecode = @path[tmp + TYPECODE_PREFIX.size..-1]
-        self.set_path(@path[0..tmp - 1])
-        
-        if arg[-1]
-          self.typecode = typecode
-        else
-          self.set_typecode(typecode)
-        end
-      end
-    end
-    attr_reader :typecode
-
-    def check_typecode(v)
-      if TYPECODE.include?(v)
-        return true
-      else
-        raise InvalidComponentError,
-          "bad typecode(expected #{TYPECODE.join(', ')}): #{v}"
-      end
-    end
-    private :check_typecode
-
-    def set_typecode(v)
-      @typecode = v
-    end
-    protected :set_typecode
-
-    def typecode=(typecode)
-      check_typecode(typecode)
-      set_typecode(typecode)
-      typecode
-    end
-
-    def merge(oth) # :nodoc:
-      tmp = super(oth)
-      if self != tmp
-        tmp.set_typecode(oth.typecode)
-      end
-
-      return tmp
-    end
-
-    def to_s
-      save_path = nil
-      if @typecode
-        save_path = @path
-        @path = @path + TYPECODE_PREFIX + @typecode
-      end
-      str = super
-      if @typecode
-        @path = save_path
-      end
-
-      return str
-    end
-  end
-  @@schemes['FTP'] = FTP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/generic.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/generic.rb
deleted file mode 100644
index 9f0030d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/generic.rb
+++ /dev/null
@@ -1,1122 +0,0 @@
-#
-# = uri/generic.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: generic.rb 17096 2008-06-11 06:23:18Z shyouhei $
-#
-
-require 'uri/common'
-
-module URI
-  
-  #
-  # Base class for all URI classes.
-  # Implements generic URI syntax as per RFC 2396.
-  #
-  class Generic
-    include URI
-    include REGEXP
-
-    DEFAULT_PORT = nil
-
-    #
-    # Returns default port
-    #
-    def self.default_port
-      self::DEFAULT_PORT
-    end
-
-    def default_port
-      self.class.default_port
-    end
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port, :registry, 
-      :path, :opaque, 
-      :query, 
-      :fragment
-    ].freeze
-
-    #
-    # Components of the URI in the order.
-    #
-    def self.component
-      self::COMPONENT
-    end
-
-    USE_REGISTRY = false
-
-    #
-    # DOC: FIXME!
-    #
-    def self.use_registry
-      self::USE_REGISTRY
-    end
-
-    #
-    # == Synopsis
-    #
-    # See #new
-    #
-    # == Description
-    #
-    # At first, tries to create a new URI::Generic instance using
-    # URI::Generic::build. But, if exception URI::InvalidComponentError is raised, 
-    # then it URI::Escape.escape all URI components and tries again.
-    #
-    #
-    def self.build2(args)
-      begin
-        return self.build(args)
-      rescue InvalidComponentError
-        if args.kind_of?(Array)
-          return self.build(args.collect{|x| 
-            if x
-              URI.escape(x)
-            else
-              x
-            end
-          })
-        elsif args.kind_of?(Hash)
-          tmp = {}
-          args.each do |key, value|
-            tmp[key] = if value
-                URI.escape(value)
-              else
-                value
-              end
-          end
-          return self.build(tmp)
-        end
-      end
-    end
-
-    #
-    # == Synopsis
-    #
-    # See #new
-    #
-    # == Description
-    #
-    # Creates a new URI::Generic instance from components of URI::Generic
-    # with check.  Components are: scheme, userinfo, host, port, registry, path,
-    # opaque, query and fragment. You can provide arguments either by an Array or a Hash.
-    # See #new for hash keys to use or for order of array items.
-    #
-    def self.build(args)
-      if args.kind_of?(Array) &&
-          args.size == ::URI::Generic::COMPONENT.size
-        tmp = args
-      elsif args.kind_of?(Hash)
-        tmp = ::URI::Generic::COMPONENT.collect do |c|
-          if args.include?(c)
-            args[c]
-          else
-            nil
-          end
-        end
-      else
-        raise ArgumentError, 
-        "expected Array of or Hash of components of #{self.class} (#{self.class.component.join(', ')})"
-      end
-
-      tmp << true
-      return self.new(*tmp)
-    end
-    #
-    # == Args
-    #
-    # +scheme+::
-    #   Protocol scheme, i.e. 'http','ftp','mailto' and so on.
-    # +userinfo+::
-    #   User name and password, i.e. 'sdmitry:bla'
-    # +host+::
-    #   Server host name
-    # +port+::
-    #   Server port
-    # +registry+::
-    #   DOC: FIXME!
-    # +path+::
-    #   Path on server
-    # +opaque+::
-    #   DOC: FIXME!
-    # +query+::
-    #   Query data
-    # +fragment+::
-    #   A part of URI after '#' sign
-    # +arg_check+::
-    #   Check arguments [false by default]
-    #
-    # == Description
-    #
-    # Creates a new URI::Generic instance from ``generic'' components without check.
-    #
-    def initialize(scheme, 
-                   userinfo, host, port, registry, 
-                   path, opaque, 
-                   query, 
-                   fragment,
-                   arg_check = false)
-      @scheme = nil
-      @user = nil
-      @password = nil
-      @host = nil
-      @port = nil
-      @path = nil
-      @query = nil
-      @opaque = nil
-      @registry = nil
-      @fragment = nil
-
-      if arg_check
-        self.scheme = scheme
-        self.userinfo = userinfo
-        self.host = host
-        self.port = port
-        self.path = path
-        self.query = query
-        self.opaque = opaque
-        self.registry = registry
-        self.fragment = fragment
-      else
-        self.set_scheme(scheme)
-        self.set_userinfo(userinfo)
-        self.set_host(host)
-        self.set_port(port)
-        self.set_path(path)
-        self.set_query(query)
-        self.set_opaque(opaque)
-        self.set_registry(registry)
-        self.set_fragment(fragment)
-      end
-      if @registry && !self.class.use_registry
-        raise InvalidURIError, 
-          "the scheme #{@scheme} does not accept registry part: #{@registry} (or bad hostname?)"
-      end
-      
-      @scheme.freeze if @scheme
-      self.set_path('') if !@path && !@opaque # (see RFC2396 Section 5.2)
-      self.set_port(self.default_port) if self.default_port && !@port
-    end
-    attr_reader :scheme
-    attr_reader :host
-    attr_reader :port
-    attr_reader :registry
-    attr_reader :path
-    attr_reader :query
-    attr_reader :opaque
-    attr_reader :fragment
-
-    # replace self by other URI object
-    def replace!(oth)
-      if self.class != oth.class
-        raise ArgumentError, "expected #{self.class} object"
-      end
-
-      component.each do |c|
-        self.__send__("#{c}=", oth.__send__(c))
-      end
-    end
-    private :replace!
-
-    def component
-      self.class.component
-    end
-
-    def check_scheme(v)
-      if v && SCHEME !~ v
-        raise InvalidComponentError,
-          "bad component(expected scheme component): #{v}"
-      end
-
-      return true
-    end
-    private :check_scheme
-
-    def set_scheme(v)
-      @scheme = v
-    end
-    protected :set_scheme
-
-    def scheme=(v)
-      check_scheme(v)
-      set_scheme(v)
-      v
-    end
-
-    def check_userinfo(user, password = nil)
-      if !password
-        user, password = split_userinfo(user)
-      end
-      check_user(user)
-      check_password(password, user)
-
-      return true
-    end
-    private :check_userinfo
-
-    def check_user(v)
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set user with registry or opaque"
-      end
-
-      return v unless v
-
-      if USERINFO !~ v
-        raise InvalidComponentError,
-          "bad component(expected userinfo component or user component): #{v}"
-      end
-
-      return true
-    end
-    private :check_user
-
-    def check_password(v, user = @user)
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set password with registry or opaque"
-      end
-      return v unless v
-
-      if !user
-        raise InvalidURIError,
-          "password component depends user component"
-      end
-
-      if USERINFO !~ v
-        raise InvalidComponentError,
-          "bad component(expected user component): #{v}"
-      end
-
-      return true
-    end
-    private :check_password
-
-    #
-    # Sets userinfo, argument is string like 'name:pass'
-    #
-    def userinfo=(userinfo)
-      if userinfo.nil?
-        return nil
-      end
-      check_userinfo(*userinfo)
-      set_userinfo(*userinfo)
-      # returns userinfo
-    end
-
-    def user=(user)
-      check_user(user)
-      set_user(user)
-      # returns user
-    end
-    
-    def password=(password)
-      check_password(password)
-      set_password(password)
-      # returns password
-    end
-
-    def set_userinfo(user, password = nil)
-      unless password 
-        user, password = split_userinfo(user)
-      end
-      @user     = user
-      @password = password if password
-
-      [@user, @password]
-    end
-    protected :set_userinfo
-
-    def set_user(v)
-      set_userinfo(v, @password)
-      v
-    end
-    protected :set_user
-
-    def set_password(v)
-      @password = v
-      # returns v
-    end
-    protected :set_password
-
-    def split_userinfo(ui)
-      return nil, nil unless ui
-      user, password = ui.split(/:/, 2)
-
-      return user, password
-    end
-    private :split_userinfo
-
-    def escape_userpass(v)
-      v = URI.escape(v, /[@:\/]/o) # RFC 1738 section 3.1 #/
-    end
-    private :escape_userpass
-
-    def userinfo
-      if @user.nil?
-        nil
-      elsif @password.nil?
-        @user
-      else
-        @user + ':' + @password
-      end
-    end
-
-    def user
-      @user
-    end
-
-    def password
-      @password
-    end
-
-    def check_host(v)
-      return v unless v
-
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set host with registry or opaque"
-      elsif HOST !~ v
-        raise InvalidComponentError,
-          "bad component(expected host component): #{v}"
-      end
-
-      return true
-    end
-    private :check_host
-
-    def set_host(v)
-      @host = v
-    end
-    protected :set_host
-
-    def host=(v)
-      check_host(v)
-      set_host(v)
-      v
-    end
-
-    def check_port(v)
-      return v unless v
-
-      if @registry || @opaque
-        raise InvalidURIError, 
-          "can not set port with registry or opaque"
-      elsif !v.kind_of?(Fixnum) && PORT !~ v
-        raise InvalidComponentError,
-          "bad component(expected port component): #{v}"
-      end
-
-      return true
-    end
-    private :check_port
-
-    def set_port(v)
-      unless !v || v.kind_of?(Fixnum)
-        if v.empty?
-          v = nil
-        else
-          v = v.to_i
-        end
-      end
-      @port = v
-    end
-    protected :set_port
-
-    def port=(v)
-      check_port(v)
-      set_port(v)
-      port
-    end
-
-    def check_registry(v)
-      return v unless v
-
-      # raise if both server and registry are not nil, because:
-      # authority     = server | reg_name
-      # server        = [ [ userinfo "@" ] hostport ]
-      if @host || @port || @user # userinfo = @user + ':' + @password
-        raise InvalidURIError, 
-          "can not set registry with host, port, or userinfo"
-      elsif v && REGISTRY !~ v
-        raise InvalidComponentError,
-          "bad component(expected registry component): #{v}"
-      end
-
-      return true
-    end
-    private :check_registry
-
-    def set_registry(v)
-      @registry = v
-    end
-    protected :set_registry
-
-    def registry=(v)
-      check_registry(v)
-      set_registry(v)
-      v
-    end
-
-    def check_path(v)
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if v && @opaque
-        raise InvalidURIError, 
-          "path conflicts with opaque"
-      end
-
-      if @scheme
-        if v && v != '' && ABS_PATH !~ v
-          raise InvalidComponentError, 
-            "bad component(expected absolute path component): #{v}"
-        end
-      else
-        if v && v != '' && ABS_PATH !~ v && REL_PATH !~ v
-          raise InvalidComponentError, 
-            "bad component(expected relative path component): #{v}"
-        end
-      end
-
-      return true
-    end
-    private :check_path
-
-    def set_path(v)
-      @path = v
-    end
-    protected :set_path
-
-    def path=(v)
-      check_path(v)
-      set_path(v)
-      v
-    end
-
-    def check_query(v)
-      return v unless v
-
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if @opaque
-        raise InvalidURIError, 
-          "query conflicts with opaque"
-      end
-
-      if v && v != '' && QUERY !~ v
-          raise InvalidComponentError, 
-            "bad component(expected query component): #{v}"
-        end
-
-      return true
-    end
-    private :check_query
-
-    def set_query(v)
-      @query = v
-    end
-    protected :set_query
-
-    def query=(v)
-      check_query(v)
-      set_query(v)
-      v
-    end
-
-    def check_opaque(v)
-      return v unless v
-
-      # raise if both hier and opaque are not nil, because:
-      # absoluteURI   = scheme ":" ( hier_part | opaque_part )
-      # hier_part     = ( net_path | abs_path ) [ "?" query ]
-      if @host || @port || @user || @path  # userinfo = @user + ':' + @password
-        raise InvalidURIError, 
-          "can not set opaque with host, port, userinfo or path"
-      elsif v && OPAQUE !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_opaque
-
-    def set_opaque(v)
-      @opaque = v
-    end
-    protected :set_opaque
-
-    def opaque=(v)
-      check_opaque(v)
-      set_opaque(v)
-      v
-    end
-
-    def check_fragment(v)
-      return v unless v
-
-      if v && v != '' && FRAGMENT !~ v
-        raise InvalidComponentError, 
-          "bad component(expected fragment component): #{v}"
-      end
-
-      return true
-    end
-    private :check_fragment
-
-    def set_fragment(v)
-      @fragment = v
-    end
-    protected :set_fragment
-
-    def fragment=(v)
-      check_fragment(v)
-      set_fragment(v)
-      v
-    end
-
-    #
-    # Checks if URI has a path
-    #
-    def hierarchical?
-      if @path
-        true
-      else
-        false
-      end
-    end
-
-    #
-    # Checks if URI is an absolute one
-    #
-    def absolute?
-      if @scheme
-        true
-      else
-        false
-      end
-    end
-    alias absolute absolute?
-
-    #
-    # Checks if URI is relative
-    #
-    def relative?
-      !absolute?
-    end
-
-    def split_path(path)
-      path.split(%r{/+}, -1)
-    end
-    private :split_path
-
-    def merge_path(base, rel)
-      # RFC2396, Section 5.2, 5)
-      if rel[0] == ?/ #/
-        # RFC2396, Section 5.2, 5)
-        return rel
-
-      else
-        # RFC2396, Section 5.2, 6)
-        base_path = split_path(base)
-        rel_path  = split_path(rel)
-
-        # RFC2396, Section 5.2, 6), a)
-	base_path << '' if base_path.last == '..'
-	while i = base_path.index('..')
-	  base_path.slice!(i - 1, 2)
-        end
-        if base_path.empty?
-          base_path = [''] # keep '/' for root directory
-        else
-	  base_path.pop
-        end
-
-        # RFC2396, Section 5.2, 6), c)
-        # RFC2396, Section 5.2, 6), d)
-        rel_path.push('') if rel_path.last == '.' || rel_path.last == '..'
-        rel_path.delete('.')
-
-        # RFC2396, Section 5.2, 6), e)
-        tmp = []
-        rel_path.each do |x|
-          if x == '..' &&
-              !(tmp.empty? || tmp.last == '..')
-            tmp.pop
-          else
-            tmp << x
-          end
-        end
-
-        add_trailer_slash = true
-        while x = tmp.shift
-          if x == '..' && base_path.size > 1
-            # RFC2396, Section 4
-            # a .. or . in an absolute path has no special meaning
-            base_path.pop
-          else
-            # if x == '..'
-            #   valid absolute (but abnormal) path "/../..."
-            # else
-            #   valid absolute path
-            # end
-            base_path << x
-            tmp.each {|t| base_path << t}
-            add_trailer_slash = false
-            break
-          end
-        end
-        base_path.push('') if add_trailer_slash
-
-        return base_path.join('/')
-      end
-    end
-    private :merge_path
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Destructive form of #merge
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("http://my.example.com")
-    #   uri.merge!("/main.rbx?page=1")
-    #   p uri
-    #   # =>  #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
-    #
-    def merge!(oth)
-      t = merge(oth)
-      if self == t
-        nil
-      else
-        replace!(t)
-        self
-      end
-    end
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Merges two URI's.
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("http://my.example.com")
-    #   p uri.merge("/main.rbx?page=1")
-    #   # =>  #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
-    #
-    def merge(oth)
-      begin
-        base, rel = merge0(oth)
-      rescue
-        raise $!.class, $!.message
-      end
-
-      if base == rel
-        return base
-      end
-
-      authority = rel.userinfo || rel.host || rel.port
-
-      # RFC2396, Section 5.2, 2)
-      if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query
-        base.set_fragment(rel.fragment) if rel.fragment
-        return base
-      end
-
-      base.set_query(nil)
-      base.set_fragment(nil)
-
-      # RFC2396, Section 5.2, 4)
-      if !authority
-        base.set_path(merge_path(base.path, rel.path)) if base.path && rel.path
-      else
-        # RFC2396, Section 5.2, 4)
-        base.set_path(rel.path) if rel.path
-      end
-
-      # RFC2396, Section 5.2, 7)
-      base.set_userinfo(rel.userinfo) if rel.userinfo
-      base.set_host(rel.host)         if rel.host
-      base.set_port(rel.port)         if rel.port
-      base.set_query(rel.query)       if rel.query
-      base.set_fragment(rel.fragment) if rel.fragment
-
-      return base
-    end # merge
-    alias + merge
-
-    # return base and rel.
-    # you can modify `base', but can not `rel'.
-    def merge0(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      if self.relative? && oth.relative?
-        raise BadURIError, 
-          "both URI are relative"
-      end
-
-      if self.absolute? && oth.absolute?
-        #raise BadURIError, 
-        #  "both URI are absolute"
-        # hmm... should return oth for usability?
-        return oth, oth
-      end
-
-      if self.absolute?
-        return self.dup, oth
-      else
-        return oth, oth
-      end
-    end
-    private :merge0
-
-    def route_from_path(src, dst)
-      # RFC2396, Section 4.2
-      return '' if src == dst
-
-      src_path = split_path(src)
-      dst_path = split_path(dst)
-
-      # hmm... dst has abnormal absolute path, 
-      # like "/./", "/../", "/x/../", ...
-      if dst_path.include?('..') ||
-          dst_path.include?('.')
-        return dst.dup
-      end
-
-      src_path.pop
-
-      # discard same parts
-      while dst_path.first == src_path.first
-        break if dst_path.empty?
-
-        src_path.shift
-        dst_path.shift
-      end
-
-      tmp = dst_path.join('/')
-
-      # calculate
-      if src_path.empty?
-        if tmp.empty?
-          return './'
-        elsif dst_path.first.include?(':') # (see RFC2396 Section 5)
-          return './' + tmp
-        else
-          return tmp
-        end
-      end
-
-      return '../' * src_path.size + tmp
-    end
-    private :route_from_path
-
-    def route_from0(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      if self.relative?
-        raise BadURIError, 
-          "relative URI: #{self}"
-      end
-      if oth.relative?
-        raise BadURIError, 
-          "relative URI: #{oth}"
-      end
-
-      if self.scheme != oth.scheme
-        return self, self.dup
-      end
-      rel = URI::Generic.new(nil, # it is relative URI
-                             self.userinfo, self.host, self.port, 
-                             self.registry, self.path, self.opaque,
-                             self.query, self.fragment)
-
-      if rel.userinfo != oth.userinfo ||
-          rel.host.to_s.downcase != oth.host.to_s.downcase ||
-          rel.port != oth.port
-	if self.userinfo.nil? && self.host.nil?
-	  return self, self.dup
-	end
-        rel.set_port(nil) if rel.port == oth.default_port
-        return rel, rel
-      end
-      rel.set_userinfo(nil)
-      rel.set_host(nil)
-      rel.set_port(nil)
-
-      if rel.path && rel.path == oth.path
-        rel.set_path('')
-        rel.set_query(nil) if rel.query == oth.query
-        return rel, rel
-      elsif rel.opaque && rel.opaque == oth.opaque
-        rel.set_opaque('')
-        rel.set_query(nil) if rel.query == oth.query
-        return rel, rel
-      end
-
-      # you can modify `rel', but can not `oth'.
-      return oth, rel
-    end
-    private :route_from0
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Calculates relative path from oth to self
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://my.example.com/main.rbx?page=1')
-    #   p uri.route_from('http://my.example.com')
-    #   #=> #<URI::Generic:0x20218858 URL:/main.rbx?page=1>
-    #
-    def route_from(oth)
-      # you can modify `rel', but can not `oth'.
-      begin
-        oth, rel = route_from0(oth)
-      rescue
-        raise $!.class, $!.message
-      end
-      if oth == rel
-        return rel
-      end
-
-      rel.set_path(route_from_path(oth.path, self.path))
-      if rel.path == './' && self.query
-        # "./?foo" -> "?foo"
-        rel.set_path('')
-      end
-
-      return rel
-    end
-
-    alias - route_from
-
-    #
-    # == Args
-    #
-    # +oth+::
-    #    URI or String
-    #
-    # == Description
-    #
-    # Calculates relative path to oth from self
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://my.example.com')
-    #   p uri.route_to('http://my.example.com/main.rbx?page=1')
-    #   #=> #<URI::Generic:0x2020c2f6 URL:/main.rbx?page=1>
-    #    
-    def route_to(oth)
-      case oth
-      when Generic
-      when String
-        oth = URI.parse(oth)
-      else
-        raise ArgumentError,
-          "bad argument(expected URI object or URI string)"
-      end
-
-      oth.route_from(self)
-    end
-
-    #
-    # Returns normalized URI
-    # 
-    def normalize
-      uri = dup
-      uri.normalize!
-      uri
-    end
-
-    #
-    # Destructive version of #normalize
-    #
-    def normalize!
-      if path && path == ''
-        set_path('/')
-      end
-      if host && host != host.downcase
-        set_host(self.host.downcase)
-      end        
-    end
-
-    def path_query
-      str = @path
-      if @query
-        str += '?' + @query
-      end
-      str
-    end
-    private :path_query
-
-    #
-    # Constructs String from URI
-    # 
-    def to_s
-      str = ''
-      if @scheme
-        str << @scheme
-        str << ':'
-      end
-
-      if @opaque
-        str << @opaque
-
-      else
-        if @registry
-          str << @registry
-        else
-          if @host
-            str << '//'
-          end
-          if self.userinfo
-            str << self.userinfo
-            str << '@'
-          end
-          if @host
-            str << @host
-          end
-          if @port && @port != self.default_port
-            str << ':'
-            str << @port.to_s
-          end
-        end
-
-        str << path_query
-      end
-
-      if @fragment
-        str << '#'
-        str << @fragment
-      end
-
-      str
-    end
-
-    #
-    # Compares to URI's
-    #
-    def ==(oth)
-      if self.class == oth.class
-        self.normalize.component_ary == oth.normalize.component_ary
-      else
-        false
-      end
-    end
-
-    def hash
-      self.component_ary.hash
-    end
-
-    def eql?(oth)
-      self.component_ary.eql?(oth.component_ary)
-    end
-
-=begin
-
---- URI::Generic#===(oth)
-
-=end
-#    def ===(oth)
-#      raise NotImplementedError
-#    end
-
-=begin
-=end
-    def component_ary
-      component.collect do |x|
-        self.send(x)
-      end
-    end
-    protected :component_ary
-
-    # == Args
-    #
-    # +components+::
-    #    Multiple Symbol arguments defined in URI::HTTP
-    #
-    # == Description
-    #
-    # Selects specified components from URI
-    #
-    # == Usage
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse('http://myuser:mypass@my.example.com/test.rbx')
-    #   p uri.select(:userinfo, :host, :path)
-    #   # => ["myuser:mypass", "my.example.com", "/test.rbx"]
-    #
-    def select(*components)
-      components.collect do |c|
-        if component.include?(c)
-          self.send(c)
-        else
-          raise ArgumentError, 
-            "expected of components of #{self.class} (#{self.class.component.join(', ')})"
-        end
-      end
-    end
-
-    @@to_s = Kernel.instance_method(:to_s)
-    def inspect
-      @@to_s.bind(self).call.sub!(/>\z/) {" URL:#{self}>"}
-    end
-
-    def coerce(oth)
-      case oth
-      when String
-        oth = URI.parse(oth)
-      else
-        super
-      end
-
-      return oth, self
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/http.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/http.rb
deleted file mode 100644
index dd2e792..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/http.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# = uri/http.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: http.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # The syntax of HTTP URIs is defined in RFC1738 section 3.3.
-  #
-  # Note that the Ruby URI library allows HTTP URLs containing usernames and
-  # passwords. This is not legal as per the RFC, but used to be 
-  # supported in Internet Explorer 5 and 6, before the MS04-004 security 
-  # update. See <URL:http://support.microsoft.com/kb/834489>.
-  #
-  class HTTP < Generic
-    DEFAULT_PORT = 80
-
-    COMPONENT = [
-      :scheme, 
-      :userinfo, :host, :port, 
-      :path, 
-      :query, 
-      :fragment
-    ].freeze
-
-    #
-    # == Description
-    #
-    # Create a new URI::HTTP object from components, with syntax checking.
-    #
-    # The components accepted are userinfo, host, port, path, query and
-    # fragment.
-    #
-    # The components should be provided either as an Array, or as a Hash 
-    # with keys formed by preceding the component names with a colon. 
-    #
-    # If an Array is used, the components must be passed in the order
-    # [userinfo, host, port, path, query, fragment].
-    #
-    # Example:
-    #
-    #     newuri = URI::HTTP.build({:host => 'www.example.com', 
-    #       :path> => '/foo/bar'})
-    #
-    #     newuri = URI::HTTP.build([nil, "www.example.com", nil, "/path", 
-    #       "query", 'fragment'])
-    #
-    # Currently, if passed userinfo components this method generates 
-    # invalid HTTP URIs as per RFC 1738.
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Create a new URI::HTTP object from generic URI components as per
-    # RFC 2396. No HTTP-specific syntax checking (as per RFC 1738) is 
-    # performed.
-    #
-    # Arguments are +scheme+, +userinfo+, +host+, +port+, +registry+, +path+, 
-    # +opaque+, +query+ and +fragment+, in that order.
-    #
-    # Example:
-    #
-    #     uri = URI::HTTP.new(['http', nil, "www.example.com", nil, "/path",
-    #       "query", 'fragment'])
-    #
-    def initialize(*arg)
-      super(*arg)
-    end
-
-    #
-    # == Description
-    #
-    # Returns the full path for an HTTP request, as required by Net::HTTP::Get.
-    #
-    # If the URI contains a query, the full path is URI#path + '?' + URI#query.
-    # Otherwise, the path is simply URI#path.
-    #
-    def request_uri
-      r = path_query
-      if r[0] != ?/
-        r = '/' + r
-      end
-
-      r
-    end
-  end
-
-  @@schemes['HTTP'] = HTTP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/https.rb
deleted file mode 100644
index 5043ae6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/https.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# = uri/https.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: https.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/http'
-
-module URI
-
-  # The default port for HTTPS URIs is 443, and the scheme is 'https:' rather
-  # than 'http:'. Other than that, HTTPS URIs are identical to HTTP URIs;
-  # see URI::HTTP.
-  class HTTPS < HTTP
-    DEFAULT_PORT = 443
-  end
-  @@schemes['HTTPS'] = HTTPS
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ldap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ldap.rb
deleted file mode 100644
index 7c14ff8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/ldap.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-#
-# = uri/ldap.rb
-#
-# Author:: 
-#  Takaaki Tateishi <ttate at jaist.ac.jp>
-#  Akira Yamada <akira at ruby-lang.org>
-# License:: 
-#   URI::LDAP is copyrighted free software by Takaaki Tateishi and Akira Yamada.
-#   You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: ldap.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # LDAP URI SCHEMA (described in RFC2255)
-  # ldap://<host>/<dn>[?<attrs>[?<scope>[?<filter>[?<extensions>]]]]
-  #
-  class LDAP < Generic
-
-    DEFAULT_PORT = 389
-    
-    COMPONENT = [
-      :scheme,
-      :host, :port,
-      :dn,
-      :attributes,
-      :scope,
-      :filter,
-      :extensions,
-    ].freeze
-
-    SCOPE = [
-      SCOPE_ONE = 'one',
-      SCOPE_SUB = 'sub',
-      SCOPE_BASE = 'base',
-    ].freeze
-
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:dn]
-        tmp[:path] = tmp[:dn]
-      end
-
-      query = []
-      [:extensions, :filter, :scope, :attributes].collect do |x|
-        next if !tmp[x] && query.size == 0
-        query.unshift(tmp[x])
-      end
-
-      tmp[:query] = query.join('?')
-
-      return super(tmp)
-    end
-
-    def initialize(*arg)
-      super(*arg)
-
-      if @fragment
-        raise InvalidURIError, 'bad LDAP URL'
-      end
-
-      parse_dn
-      parse_query
-    end
-
-    def parse_dn
-      @dn = @path[1..-1]
-    end
-    private :parse_dn
-
-    def parse_query
-      @attributes = nil
-      @scope      = nil
-      @filter     = nil
-      @extensions = nil
-
-      if @query
-        attrs, scope, filter, extensions = @query.split('?')
-
-        @attributes = attrs if attrs && attrs.size > 0
-        @scope      = scope if scope && scope.size > 0
-        @filter     = filter if filter && filter.size > 0
-        @extensions = extensions if extensions && extensions.size > 0
-      end
-    end
-    private :parse_query
-
-    def build_path_query
-      @path = '/' + @dn
-
-      query = []
-      [@extensions, @filter, @scope, @attributes].each do |x|
-        next if !x && query.size == 0
-        query.unshift(x)
-      end
-      @query = query.join('?')
-    end
-    private :build_path_query
-
-    def dn
-      @dn
-    end
-
-    def set_dn(val)
-      @dn = val
-      build_path_query
-      @dn
-    end
-    protected :set_dn
-
-    def dn=(val)
-      set_dn(val)
-      val
-    end
-
-    def attributes
-      @attributes
-    end
-
-    def set_attributes(val)
-      @attributes = val
-      build_path_query
-      @attributes
-    end
-    protected :set_attributes
-
-    def attributes=(val)
-      set_attributes(val)
-      val
-    end
-
-    def scope
-      @scope
-    end
-
-    def set_scope(val)
-      @scope = val
-      build_path_query
-      @scope
-    end
-    protected :set_scope
-
-    def scope=(val)
-      set_scope(val)
-      val
-    end
-
-    def filter
-      @filter
-    end
-
-    def set_filter(val)
-      @filter = val
-      build_path_query
-      @filter
-    end
-    protected :set_filter
-
-    def filter=(val)
-      set_filter(val)
-      val
-    end
-
-    def extensions
-      @extensions
-    end
-
-    def set_extensions(val)
-      @extensions = val
-      build_path_query
-      @extensions
-    end
-    protected :set_extensions
-
-    def extensions=(val)
-      set_extensions(val)
-      val
-    end
-
-    def hierarchical?
-      false
-    end
-  end
-
-  @@schemes['LDAP'] = LDAP
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/mailto.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/mailto.rb
deleted file mode 100644
index c8d3e3e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/uri/mailto.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-#
-# = uri/mailto.rb
-#
-# Author:: Akira Yamada <akira at ruby-lang.org>
-# License:: You can redistribute it and/or modify it under the same term as Ruby.
-# Revision:: $Id: mailto.rb 11747 2007-02-15 02:41:45Z knu $
-#
-
-require 'uri/generic'
-
-module URI
-
-  #
-  # RFC2368, The mailto URL scheme
-  #
-  class MailTo < Generic
-    include REGEXP
-
-    DEFAULT_PORT = nil
-
-    COMPONENT = [ :scheme, :to, :headers ].freeze
-
-    # :stopdoc:
-    #  "hname" and "hvalue" are encodings of an RFC 822 header name and
-    #  value, respectively. As with "to", all URL reserved characters must
-    #  be encoded.
-    #
-    #  "#mailbox" is as specified in RFC 822 [RFC822]. This means that it
-    #  consists of zero or more comma-separated mail addresses, possibly
-    #  including "phrase" and "comment" components. Note that all URL
-    #  reserved characters in "to" must be encoded: in particular,
-    #  parentheses, commas, and the percent sign ("%"), which commonly occur
-    #  in the "mailbox" syntax.
-    #
-    #  Within mailto URLs, the characters "?", "=", "&" are reserved.
-
-    # hname      =  *urlc
-    # hvalue     =  *urlc
-    # header     =  hname "=" hvalue
-    HEADER_PATTERN = "(?:[^?=&]*=[^?=&]*)".freeze
-    HEADER_REGEXP  = Regexp.new(HEADER_PATTERN, 'N').freeze
-    # headers    =  "?" header *( "&" header )
-    # to         =  #mailbox
-    # mailtoURL  =  "mailto:" [ to ] [ headers ]
-    MAILBOX_PATTERN = "(?:#{PATTERN::ESCAPED}|[^(),%?=&])".freeze
-    MAILTO_REGEXP = Regexp.new(" # :nodoc:
-      \\A
-      (#{MAILBOX_PATTERN}*?)                          (?# 1: to)
-      (?:
-        \\?
-        (#{HEADER_PATTERN}(?:\\&#{HEADER_PATTERN})*)  (?# 2: headers)
-      )?
-      (?:
-        \\#
-        (#{PATTERN::FRAGMENT})                        (?# 3: fragment)
-      )?
-      \\z
-    ", Regexp::EXTENDED, 'N').freeze
-    # :startdoc:
-
-    #
-    # == Description
-    #
-    # Creates a new URI::MailTo object from components, with syntax checking.
-    #
-    # Components can be provided as an Array or Hash. If an Array is used,
-    # the components must be supplied as [to, headers].
-    #
-    # If a Hash is used, the keys are the component names preceded by colons.
-    #
-    # The headers can be supplied as a pre-encoded string, such as 
-    # "subject=subscribe&cc=address", or as an Array of Arrays like
-    # [['subject', 'subscribe'], ['cc', 'address']]
-    #
-    # Examples:
-    # 
-    #    require 'uri'
-    #    
-    #    m1 = URI::MailTo.build(['joe at example.com', 'subject=Ruby'])
-    #    puts m1.to_s  ->  mailto:joe at example.com?subject=Ruby
-    #    
-    #    m2 = URI::MailTo.build(['john at example.com', [['Subject', 'Ruby'], ['Cc', 'jack at example.com']]])
-    #    puts m2.to_s  ->  mailto:john at example.com?Subject=Ruby&Cc=jack at example.com
-    #    
-    #    m3 = URI::MailTo.build({:to => 'listman at example.com', :headers => [['subject', 'subscribe']]})
-    #    puts m3.to_s  ->  mailto:listman at example.com?subject=subscribe
-    #
-    def self.build(args)
-      tmp = Util::make_components_hash(self, args)
-
-      if tmp[:to]
-        tmp[:opaque] = tmp[:to]
-      else
-        tmp[:opaque] = ''
-      end
-
-      if tmp[:headers]
-        tmp[:opaque] << '?'
-
-        if tmp[:headers].kind_of?(Array)
-          tmp[:opaque] << tmp[:headers].collect { |x|
-            if x.kind_of?(Array)
-              x[0] + '=' + x[1..-1].to_s
-            else
-              x.to_s
-            end
-          }.join('&')
-
-        elsif tmp[:headers].kind_of?(Hash)
-          tmp[:opaque] << tmp[:headers].collect { |h,v|
-            h + '=' + v
-          }.join('&')
-
-        else
-          tmp[:opaque] << tmp[:headers].to_s
-        end
-      end
-
-      return super(tmp)
-    end
-
-    #
-    # == Description
-    #
-    # Creates a new URI::MailTo object from generic URL components with
-    # no syntax checking.
-    #
-    # This method is usually called from URI::parse, which checks
-    # the validity of each component.
-    #
-    def initialize(*arg)
-      super(*arg)
-
-      @to = nil
-      @headers = []
-
-      if MAILTO_REGEXP =~ @opaque
-         if arg[-1]
-          self.to = $1
-          self.headers = $2
-        else
-          set_to($1)
-          set_headers($2)
-        end
-
-      else
-        raise InvalidComponentError,
-          "unrecognised opaque part for mailtoURL: #{@opaque}"
-      end
-    end
-
-    # The primary e-mail address of the URL, as a String
-    attr_reader :to
-
-    # E-mail headers set by the URL, as an Array of Arrays
-    attr_reader :headers
-
-    def check_to(v)
-      return true unless v
-      return true if v.size == 0
-
-      if OPAQUE !~ v || /\A#{MAILBOX_PATTERN}*\z/o !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_to
-
-    def set_to(v)
-      @to = v
-    end
-    protected :set_to
-
-    def to=(v)
-      check_to(v)
-      set_to(v)
-      v
-    end
-
-    def check_headers(v)
-      return true unless v
-      return true if v.size == 0
-
-      if OPAQUE !~ v || 
-          /\A(#{HEADER_PATTERN}(?:\&#{HEADER_PATTERN})*)\z/o !~ v
-        raise InvalidComponentError,
-          "bad component(expected opaque component): #{v}"
-      end
-
-      return true
-    end
-    private :check_headers
-
-    def set_headers(v)
-      @headers = []
-      if v
-        v.scan(HEADER_REGEXP) do |x|
-          @headers << x.split(/=/o, 2)
-        end
-      end
-    end
-    protected :set_headers
-
-    def headers=(v)
-      check_headers(v)
-      set_headers(v)
-      v
-    end
-
-    def to_s
-      @scheme + ':' + 
-        if @to 
-          @to
-        else
-          ''
-        end + 
-        if @headers.size > 0
-          '?' + @headers.collect{|x| x.join('=')}.join('&')
-        else
-          ''
-        end +
-        if @fragment
-          '#' + @fragment
-        else
-          ''
-        end
-    end
-    
-    # Returns the RFC822 e-mail text equivalent of the URL, as a String.
-    #
-    # Example:
-    #
-    #   require 'uri'
-    #
-    #   uri = URI.parse("mailto:ruby-list at ruby-lang.org?Subject=subscribe&cc=myaddr")
-    #   uri.to_mailtext
-    #   # => "To: ruby-list at ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n"
-    #
-    def to_mailtext
-      to = URI::unescape(@to)
-      head = ''
-      body = ''
-      @headers.each do |x|
-        case x[0]
-        when 'body'
-          body = URI::unescape(x[1])
-        when 'to'
-          to << ', ' + URI::unescape(x[1])
-        else
-          head << URI::unescape(x[0]).capitalize + ': ' +
-            URI::unescape(x[1])  + "\n"
-        end
-      end
-
-      return "To: #{to}
-#{head}
-#{body}
-"
-    end
-    alias to_rfc822text to_mailtext
-  end
-
-  @@schemes['MAILTO'] = MailTo
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/weakref.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/weakref.rb
deleted file mode 100644
index 591819c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/weakref.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require "delegate"
-
-# WeakRef is a class to represent a reference to an object that is not seen by
-# the tracing phase of the garbage collector.  This allows the referenced
-# object to be garbage collected as if nothing is referring to it. Because
-# WeakRef delegates method calls to the referenced object, it may be used in
-# place of that object, i.e. it is of the same duck type.
-#
-# Usage:
-#
-#   foo = Object.new
-#   foo = Object.new
-#   p foo.to_s			# original's class
-#   foo = WeakRef.new(foo)
-#   p foo.to_s			# should be same class
-#   ObjectSpace.garbage_collect
-#   p foo.to_s			# should raise exception (recycled)
-class WeakRef<Delegator
-
-  # RefError is raised if an object cannot be referenced by a WeakRef.
-  class RefError<StandardError
-  end
-
-  @@id_map =  {}                # obj -> [ref,...]
-  @@id_rev_map =  {}            # ref -> obj
-  @@final = lambda{|id|
-    __old_status = Thread.critical
-    Thread.critical = true
-    begin
-      rids = @@id_map[id]
-      if rids
-	for rid in rids
-	  @@id_rev_map.delete(rid)
-	end
-	@@id_map.delete(id)
-      end
-      rid = @@id_rev_map[id]
-      if rid
-	@@id_rev_map.delete(id)
-	@@id_map[rid].delete(id)
-	@@id_map.delete(rid) if @@id_map[rid].empty?
-      end
-    ensure
-      Thread.critical = __old_status
-    end
-  }
-
-  # Create a new WeakRef from +orig+.
-  def initialize(orig)
-    super
-    __setobj__(orig)
-  end
-
-  # Return the object this WeakRef references. Raises RefError if the object
-  # has been garbage collected.  The object returned is the object to which
-  # method calls are delegated (see Delegator).
-  def __getobj__
-    unless @@id_rev_map[self.__id__] == @__id
-      raise RefError, "Illegal Reference - probably recycled", caller(2)
-    end
-    begin
-      ObjectSpace._id2ref(@__id)
-    rescue RangeError
-      raise RefError, "Illegal Reference - probably recycled", caller(2)
-    end
-  end
-
-  def __setobj__(obj)
-    @__id = obj.__id__
-    __old_status = Thread.critical
-    begin
-      Thread.critical = true
-      unless @@id_rev_map.key?(self)
-        ObjectSpace.define_finalizer obj, @@final
-        ObjectSpace.define_finalizer self, @@final
-      end
-      @@id_map[@__id] = [] unless @@id_map[@__id]
-    ensure
-      Thread.critical = __old_status
-    end
-    @@id_map[@__id].push self.__id__
-    @@id_rev_map[self.__id__] = @__id
-  end
-
-  # Returns true if the referenced object still exists, and false if it has
-  # been garbage collected.
-  def weakref_alive?
-    @@id_rev_map[self.__id__] == @__id
-  end
-end
-
-if __FILE__ == $0
-  require 'thread'
-  foo = Object.new
-  p foo.to_s			# original's class
-  foo = WeakRef.new(foo)
-  p foo.to_s			# should be same class
-  ObjectSpace.garbage_collect
-  p foo.to_s			# should raise exception (recycled)
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick.rb
deleted file mode 100644
index 8fca81b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# WEBrick -- WEB server toolkit.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: webrick.rb,v 1.12 2002/10/01 17:16:31 gotoyuzo Exp $
-
-require 'webrick/compat.rb'
-
-require 'webrick/version.rb'
-require 'webrick/config.rb'
-require 'webrick/log.rb'
-require 'webrick/server.rb'
-require 'webrick/utils.rb'
-require 'webrick/accesslog'
-
-require 'webrick/htmlutils.rb'
-require 'webrick/httputils.rb'
-require 'webrick/cookie.rb'
-require 'webrick/httpversion.rb'
-require 'webrick/httpstatus.rb'
-require 'webrick/httprequest.rb'
-require 'webrick/httpresponse.rb'
-require 'webrick/httpserver.rb'
-require 'webrick/httpservlet.rb'
-require 'webrick/httpauth.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/accesslog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/accesslog.rb
deleted file mode 100644
index f977695..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/accesslog.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# accesslog.rb -- Access log handling utilities
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 keita yamaguchi
-# Copyright (c) 2002 Internet Programming with Ruby writers
-#
-# $IPR: accesslog.rb,v 1.1 2002/10/01 17:16:32 gotoyuzo Exp $
-
-module WEBrick
-  module AccessLog
-    class AccessLogError < StandardError; end
-
-    CLF_TIME_FORMAT     = "[%d/%b/%Y:%H:%M:%S %Z]"
-    COMMON_LOG_FORMAT   = "%h %l %u %t \"%r\" %s %b"
-    CLF                 = COMMON_LOG_FORMAT
-    REFERER_LOG_FORMAT  = "%{Referer}i -> %U"
-    AGENT_LOG_FORMAT    = "%{User-Agent}i"
-    COMBINED_LOG_FORMAT = "#{CLF} \"%{Referer}i\" \"%{User-agent}i\""
-
-    module_function
-
-    # This format specification is a subset of mod_log_config of Apache.
-    #   http://httpd.apache.org/docs/mod/mod_log_config.html#formats
-    def setup_params(config, req, res)
-      params = Hash.new("")
-      params["a"] = req.peeraddr[3]
-      params["b"] = res.sent_size
-      params["e"] = ENV
-      params["f"] = res.filename || ""
-      params["h"] = req.peeraddr[2]
-      params["i"] = req
-      params["l"] = "-"
-      params["m"] = req.request_method
-      params["n"] = req.attributes
-      params["o"] = res
-      params["p"] = req.port
-      params["q"] = req.query_string
-      params["r"] = req.request_line.sub(/\x0d?\x0a\z/o, '')
-      params["s"] = res.status       # won't support "%>s"
-      params["t"] = req.request_time
-      params["T"] = Time.now - req.request_time
-      params["u"] = req.user || "-"
-      params["U"] = req.unparsed_uri
-      params["v"] = config[:ServerName]
-      params
-    end
-
-    def format(format_string, params)
-      format_string.gsub(/\%(?:\{(.*?)\})?>?([a-zA-Z%])/){
-         param, spec = $1, $2
-         case spec[0]
-         when ?e, ?i, ?n, ?o
-           raise AccessLogError,
-             "parameter is required for \"#{spec}\"" unless param
-           params[spec][param] || "-"
-         when ?t
-           params[spec].strftime(param || CLF_TIME_FORMAT)
-         when ?%
-           "%"
-         else
-           params[spec]
-         end
-      }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cgi.rb
deleted file mode 100644
index 3ece0e0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cgi.rb
+++ /dev/null
@@ -1,257 +0,0 @@
-#
-# cgi.rb -- Yet another CGI library
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $Id: cgi.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require "webrick/httprequest"
-require "webrick/httpresponse"
-require "webrick/config"
-require "stringio"
-
-module WEBrick
-  class CGI
-    CGIError = Class.new(StandardError)
-
-    attr_reader :config, :logger
-
-    def initialize(*args)
-      if defined?(MOD_RUBY)
-        unless ENV.has_key?("GATEWAY_INTERFACE")
-          Apache.request.setup_cgi_env
-        end
-      end
-      if %r{HTTP/(\d+\.\d+)} =~ ENV["SERVER_PROTOCOL"]
-        httpv = $1
-      end
-      @config = WEBrick::Config::HTTP.dup.update(
-        :ServerSoftware => ENV["SERVER_SOFTWARE"] || "null",
-        :HTTPVersion    => HTTPVersion.new(httpv || "1.0"),
-        :RunOnCGI       => true,   # to detect if it runs on CGI.
-        :NPH            => false   # set true to run as NPH script.
-      )
-      if config = args.shift
-        @config.update(config)
-      end
-      @config[:Logger] ||= WEBrick::BasicLog.new($stderr)
-      @logger = @config[:Logger]
-      @options = args
-    end
-
-    def [](key)
-      @config[key]
-    end
-
-    def start(env=ENV, stdin=$stdin, stdout=$stdout)
-      sock = WEBrick::CGI::Socket.new(@config, env, stdin, stdout)
-      req = HTTPRequest.new(@config)
-      res = HTTPResponse.new(@config)
-      unless @config[:NPH] or defined?(MOD_RUBY)
-        def res.setup_header
-          unless @header["status"]
-            phrase = HTTPStatus::reason_phrase(@status)
-            @header["status"] = "#{@status} #{phrase}"
-          end
-          super
-        end
-        def res.status_line
-          ""
-        end
-      end
-
-      begin
-        req.parse(sock)
-        req.script_name = (env["SCRIPT_NAME"] || File.expand_path($0)).dup
-        req.path_info = (env["PATH_INFO"] || "").dup
-        req.query_string = env["QUERY_STRING"]
-        req.user = env["REMOTE_USER"]
-        res.request_method = req.request_method
-        res.request_uri = req.request_uri
-        res.request_http_version = req.http_version
-        res.keep_alive = req.keep_alive?
-        self.service(req, res)
-      rescue HTTPStatus::Error => ex
-        res.set_error(ex)
-      rescue HTTPStatus::Status => ex
-        res.status = ex.code
-      rescue Exception => ex 
-        @logger.error(ex)
-        res.set_error(ex, true)
-      ensure
-        req.fixup
-        if defined?(MOD_RUBY)
-          res.setup_header
-          Apache.request.status_line = "#{res.status} #{res.reason_phrase}"
-          Apache.request.status = res.status
-          table = Apache.request.headers_out
-          res.header.each{|key, val|
-            case key
-            when /^content-encoding$/i
-              Apache::request.content_encoding = val
-            when /^content-type$/i
-              Apache::request.content_type = val
-            else
-              table[key] = val.to_s
-            end
-          }
-          res.cookies.each{|cookie|
-            table.add("Set-Cookie", cookie.to_s)
-          }
-          Apache.request.send_http_header
-          res.send_body(sock)
-        else
-          res.send_response(sock)
-        end
-      end
-    end
-
-    def service(req, res)
-      method_name = "do_" + req.request_method.gsub(/-/, "_")
-      if respond_to?(method_name)
-        __send__(method_name, req, res)
-      else
-        raise HTTPStatus::MethodNotAllowed,
-              "unsupported method `#{req.request_method}'."
-      end
-    end
-
-    class Socket
-      include Enumerable
-
-      private
-  
-      def initialize(config, env, stdin, stdout)
-        @config = config
-        @env = env
-        @header_part = StringIO.new
-        @body_part = stdin
-        @out_port = stdout
-        @out_port.binmode
-  
-        @server_addr = @env["SERVER_ADDR"] || "0.0.0.0"
-        @server_name = @env["SERVER_NAME"]
-        @server_port = @env["SERVER_PORT"]
-        @remote_addr = @env["REMOTE_ADDR"]
-        @remote_host = @env["REMOTE_HOST"] || @remote_addr
-        @remote_port = @env["REMOTE_PORT"] || 0
-
-        begin
-          @header_part << request_line << CRLF
-          setup_header
-          @header_part << CRLF
-          @header_part.rewind
-        rescue Exception => ex
-          raise CGIError, "invalid CGI environment"
-        end
-      end
-
-      def request_line
-        meth = @env["REQUEST_METHOD"] || "GET"
-        unless url = @env["REQUEST_URI"]
-          url = (@env["SCRIPT_NAME"] || File.expand_path($0)).dup
-          url << @env["PATH_INFO"].to_s
-          url = WEBrick::HTTPUtils.escape_path(url)
-          if query_string = @env["QUERY_STRING"]
-            unless query_string.empty?
-              url << "?" << query_string
-            end
-          end
-        end
-        # we cannot get real HTTP version of client ;)
-        httpv = @config[:HTTPVersion]
-        return "#{meth} #{url} HTTP/#{httpv}"
-      end
-  
-      def setup_header
-        add_header("CONTENT_TYPE", "Content-Type")
-        add_header("CONTENT_LENGTH", "Content-length")
-        @env.each_key{|name|
-          if /^HTTP_(.*)/ =~ name
-            add_header(name, $1.gsub(/_/, "-"))
-          end
-        }
-      end
-  
-      def add_header(envname, hdrname)
-        if value = @env[envname]
-          unless value.empty?
-            @header_part << hdrname << ": " << value << CRLF
-          end
-        end
-      end
-
-      def input
-        @header_part.eof? ? @body_part : @header_part
-      end
-  
-      public
-  
-      def peeraddr
-        [nil, @remote_port, @remote_host, @remote_addr]
-      end
-  
-      def addr
-        [nil, @server_port, @server_name, @server_addr]
-      end
-  
-      def gets(eol=LF)
-        input.gets(eol)
-      end
-  
-      def read(size=nil)
-        input.read(size)
-      end
-
-      def each
-        input.each{|line| yield(line) }
-      end
-  
-      def <<(data)
-        @out_port << data
-      end
-
-      def cert
-        return nil unless defined?(OpenSSL)
-        if pem = @env["SSL_SERVER_CERT"]
-          OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-        end
-      end
-
-      def peer_cert
-        return nil unless defined?(OpenSSL)
-        if pem = @env["SSL_CLIENT_CERT"]
-          OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-        end
-      end
-
-      def peer_cert_chain
-        return nil unless defined?(OpenSSL)
-        if @env["SSL_CLIENT_CERT_CHAIN_0"]
-          keys = @env.keys
-          certs = keys.sort.collect{|k|
-            if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k
-              if pem = @env[k]
-                OpenSSL::X509::Certificate.new(pem) unless pem.empty?
-              end
-            end
-          }
-          certs.compact
-        end
-      end
-
-      def cipher
-        return nil unless defined?(OpenSSL)
-        if cipher = @env["SSL_CIPHER"]
-          ret = [ cipher ]
-          ret << @env["SSL_PROTOCOL"]
-          ret << @env["SSL_CIPHER_USEKEYSIZE"]
-          ret << @env["SSL_CIPHER_ALGKEYSIZE"]
-          ret
-        end
-      end
-    end
-  end 
-end  
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/compat.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/compat.rb
deleted file mode 100644
index ad7760b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/compat.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# compat.rb -- cross platform compatibility
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: compat.rb,v 1.6 2002/10/01 17:16:32 gotoyuzo Exp $
-
-module Errno
-  class EPROTO       < SystemCallError; end
-  class ECONNRESET   < SystemCallError; end
-  class ECONNABORTED < SystemCallError; end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/config.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/config.rb
deleted file mode 100644
index 5897b97..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/config.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# config.rb -- Default configurations.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: config.rb,v 1.52 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/version'
-require 'webrick/httpversion'
-require 'webrick/httputils'
-require 'webrick/utils'
-require 'webrick/log'
-
-module WEBrick
-  module Config
-    LIBDIR = File::dirname(__FILE__)
-
-    # for GenericServer
-    General = {
-      :ServerName     => Utils::getservername,
-      :BindAddress    => nil,   # "0.0.0.0" or "::" or nil
-      :Port           => nil,   # users MUST specifiy this!!
-      :MaxClients     => 100,   # maximum number of the concurrent connections
-      :ServerType     => nil,   # default: WEBrick::SimpleServer
-      :Logger         => nil,   # default: WEBrick::Log.new
-      :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " +
-                         "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})",
-      :TempDir        => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp',
-      :DoNotListen    => false,
-      :StartCallback  => nil,
-      :StopCallback   => nil,
-      :AcceptCallback => nil,
-    }
-
-    # for HTTPServer, HTTPRequest, HTTPResponse ...
-    HTTP = General.dup.update(
-      :Port           => 80,
-      :RequestTimeout => 30,
-      :HTTPVersion    => HTTPVersion.new("1.1"),
-      :AccessLog      => nil,
-      :MimeTypes      => HTTPUtils::DefaultMimeTypes,
-      :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"],
-      :DocumentRoot   => nil,
-      :DocumentRootOptions => { :FancyIndexing => true },
-      :RequestHandler => nil,
-      :RequestCallback => nil,  # alias of :RequestHandler
-      :ServerAlias    => nil,
-
-      # for HTTPProxyServer
-      :ProxyAuthProc  => nil,
-      :ProxyContentHandler => nil,
-      :ProxyVia       => true,
-      :ProxyTimeout   => true,
-      :ProxyURI       => nil,
-
-      :CGIInterpreter => nil,
-      :CGIPathEnv     => nil,
-
-      # workaround: if Request-URIs contain 8bit chars,
-      # they should be escaped before calling of URI::parse().
-      :Escape8bitURI  => false
-    )
-
-    FileHandler = {
-      :NondisclosureName => [".ht*", "*~"],
-      :FancyIndexing     => false,
-      :HandlerTable      => {},
-      :HandlerCallback   => nil,
-      :DirectoryCallback => nil,
-      :FileCallback      => nil,
-      :UserDir           => nil,  # e.g. "public_html"
-      :AcceptableLanguages => []  # ["en", "ja", ... ]
-    }
-
-    BasicAuth = {
-      :AutoReloadUserDB     => true,
-    }
-
-    DigestAuth = {
-      :Algorithm            => 'MD5-sess', # or 'MD5' 
-      :Domain               => nil,        # an array includes domain names.
-      :Qop                  => [ 'auth' ], # 'auth' or 'auth-int' or both.
-      :UseOpaque            => true,
-      :UseNextNonce         => false,
-      :CheckNc              => false,
-      :UseAuthenticationInfoHeader => true,
-      :AutoReloadUserDB     => true,
-      :NonceExpirePeriod    => 30*60,
-      :NonceExpireDelta     => 60,
-      :InternetExplorerHack => true,
-      :OperaHack            => true,
-    }
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cookie.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cookie.rb
deleted file mode 100644
index 814e664..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/cookie.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# cookie.rb -- Cookie class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: cookie.rb,v 1.16 2002/09/21 12:23:35 gotoyuzo Exp $
-
-require 'time'
-require 'webrick/httputils'
-
-module WEBrick
-  class Cookie
-
-    attr_reader :name
-    attr_accessor :value, :version
-    attr_accessor :domain, :path, :secure
-    attr_accessor :comment, :max_age
-    #attr_accessor :comment_url, :discard, :port
-
-    def initialize(name, value)
-      @name = name
-      @value = value
-      @version = 0     # Netscape Cookie
-
-      @domain = @path = @secure = @comment = @max_age =
-      @expires = @comment_url = @discard = @port = nil
-    end
-
-    def expires=(t)
-      @expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s)
-    end
-
-    def expires
-      @expires && Time.parse(@expires)
-    end
-
-    def to_s
-      ret = ""
-      ret << @name << "=" << @value
-      ret << "; " << "Version=" << @version.to_s if @version > 0
-      ret << "; " << "Domain="  << @domain  if @domain
-      ret << "; " << "Expires=" << @expires if @expires
-      ret << "; " << "Max-Age=" << @max_age.to_s if @max_age
-      ret << "; " << "Comment=" << @comment if @comment
-      ret << "; " << "Path="    << @path if @path
-      ret << "; " << "Secure"   if @secure
-      ret
-    end
-
-    # Cookie::parse()
-    #   It parses Cookie field sent from the user agent.
-    def self.parse(str)
-      if str
-        ret = []
-        cookie = nil
-        ver = 0
-        str.split(/[;,]\s+/).each{|x|
-          key, val = x.split(/=/,2)
-          val = val ? HTTPUtils::dequote(val) : ""
-          case key
-          when "$Version"; ver = val.to_i
-          when "$Path";    cookie.path = val
-          when "$Domain";  cookie.domain = val
-          when "$Port";    cookie.port = val
-          else
-            ret << cookie if cookie
-            cookie = self.new(key, val)
-            cookie.version = ver
-          end
-        }
-        ret << cookie if cookie
-        ret
-      end
-    end
-
-    def self.parse_set_cookie(str)
-      cookie_elem = str.split(/;/)
-      first_elem = cookie_elem.shift
-      first_elem.strip!
-      key, value = first_elem.split(/=/, 2)
-      cookie = new(key, HTTPUtils.dequote(value))
-      cookie_elem.each{|pair|
-        pair.strip!
-        key, value = pair.split(/=/, 2)
-        if value
-          value = HTTPUtils.dequote(value.strip)
-        end
-        case key.downcase
-        when "domain"  then cookie.domain  = value
-        when "path"    then cookie.path    = value
-        when "expires" then cookie.expires = value
-        when "max-age" then cookie.max_age = Integer(value)
-        when "comment" then cookie.comment = value
-        when "version" then cookie.version = Integer(value)
-        when "secure"  then cookie.secure = true
-        end
-      }
-      return cookie
-    end
-
-    def self.parse_set_cookies(str)
-      return str.split(/,(?=[^;,]*=)|,$/).collect{|c|
-        parse_set_cookie(c)
-      }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/htmlutils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/htmlutils.rb
deleted file mode 100644
index cf8d542..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/htmlutils.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# htmlutils.rb -- HTMLUtils Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htmlutils.rb,v 1.7 2002/09/21 12:23:35 gotoyuzo Exp $
-
-module WEBrick
-  module HTMLUtils
-
-    def escape(string)
-      str = string ? string.dup : ""
-      str.gsub!(/&/n, '&')
-      str.gsub!(/\"/n, '"')
-      str.gsub!(/>/n, '>')
-      str.gsub!(/</n, '<')
-      str
-    end
-    module_function :escape
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth.rb
deleted file mode 100644
index 147c040..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# httpauth.rb -- HTTP access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpauth.rb,v 1.14 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/httpauth/basicauth'
-require 'webrick/httpauth/digestauth'
-require 'webrick/httpauth/htpasswd'
-require 'webrick/httpauth/htdigest'
-require 'webrick/httpauth/htgroup'
-
-module WEBrick
-  module HTTPAuth
-    module_function
-
-    def _basic_auth(req, res, realm, req_field, res_field, err_type, block)
-      user = pass = nil
-      if /^Basic\s+(.*)/o =~ req[req_field]
-        userpass = $1
-        user, pass = userpass.unpack("m*")[0].split(":", 2)
-      end
-      if block.call(user, pass)
-        req.user = user
-        return
-      end
-      res[res_field] = "Basic realm=\"#{realm}\""
-      raise err_type
-    end
-
-    def basic_auth(req, res, realm, &block)
-      _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate",
-                  HTTPStatus::Unauthorized, block)
-    end
-
-    def proxy_basic_auth(req, res, realm, &block)
-      _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate",
-                  HTTPStatus::ProxyAuthenticationRequired, block)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/authenticator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/authenticator.rb
deleted file mode 100644
index fe2dbf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/authenticator.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# httpauth/authenticator.rb -- Authenticator mix-in module.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: authenticator.rb,v 1.3 2003/02/20 07:15:47 gotoyuzo Exp $
-
-module WEBrick
-  module HTTPAuth
-    module Authenticator
-      RequestField      = "Authorization"
-      ResponseField     = "WWW-Authenticate"
-      ResponseInfoField = "Authentication-Info"
-      AuthException     = HTTPStatus::Unauthorized
-      AuthScheme        = nil # must override by the derived class
-
-      attr_reader :realm, :userdb, :logger
-
-      private
-
-      def check_init(config)
-        [:UserDB, :Realm].each{|sym|
-          unless config[sym]
-            raise ArgumentError, "Argument #{sym.inspect} missing."
-          end
-        } 
-        @realm     = config[:Realm]
-        @userdb    = config[:UserDB]
-        @logger    = config[:Logger] || Log::new($stderr)
-        @reload_db = config[:AutoReloadUserDB]
-        @request_field   = self::class::RequestField
-        @response_field  = self::class::ResponseField
-        @resp_info_field = self::class::ResponseInfoField
-        @auth_exception  = self::class::AuthException
-        @auth_scheme     = self::class::AuthScheme
-      end
-
-      def check_scheme(req)
-        unless credentials = req[@request_field]
-          error("no credentials in the request.")
-          return nil 
-        end  
-        unless match = /^#{@auth_scheme}\s+/.match(credentials)
-          error("invalid scheme in %s.", credentials)
-          info("%s: %s", @request_field, credentials) if $DEBUG
-          return nil
-        end
-        return match.post_match
-      end
-
-      def log(meth, fmt, *args)
-        msg = format("%s %s: ", @auth_scheme, @realm)
-        msg << fmt % args
-        @logger.send(meth, msg)
-      end
-
-      def error(fmt, *args)
-        if @logger.error?
-          log(:error, fmt, *args)
-        end
-      end                             
-
-      def info(fmt, *args)
-        if @logger.info?
-          log(:info, fmt, *args)
-        end
-      end
-    end
-
-    module ProxyAuthenticator
-      RequestField  = "Proxy-Authorization"
-      ResponseField = "Proxy-Authenticate"
-      InfoField     = "Proxy-Authentication-Info"
-      AuthException = HTTPStatus::ProxyAuthenticationRequired
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/basicauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/basicauth.rb
deleted file mode 100644
index e835361..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/basicauth.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# httpauth/basicauth.rb -- HTTP basic access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: basicauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
-
-require 'webrick/config'
-require 'webrick/httpstatus'
-require 'webrick/httpauth/authenticator'
-
-module WEBrick
-  module HTTPAuth
-    class BasicAuth
-      include Authenticator
-
-      AuthScheme = "Basic"
-
-      def self.make_passwd(realm, user, pass)
-        pass ||= ""
-        pass.crypt(Utils::random_string(2))
-      end
-
-      attr_reader :realm, :userdb, :logger
-
-      def initialize(config, default=Config::BasicAuth)
-        check_init(config)
-        @config = default.dup.update(config)
-      end
-
-      def authenticate(req, res)
-        unless basic_credentials = check_scheme(req)
-          challenge(req, res)
-        end
-        userid, password = basic_credentials.unpack("m*")[0].split(":", 2) 
-        password ||= ""
-        if userid.empty?
-          error("user id was not given.")
-          challenge(req, res)
-        end
-        unless encpass = @userdb.get_passwd(@realm, userid, @reload_db)
-          error("%s: the user is not allowed.", userid)
-          challenge(req, res)
-        end
-        if password.crypt(encpass) != encpass
-          error("%s: password unmatch.", userid)
-          challenge(req, res)
-        end
-        info("%s: authentication succeeded.", userid)
-        req.user = userid
-      end
-
-      def challenge(req, res)
-        res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\""
-        raise @auth_exception
-      end
-    end
-
-    class ProxyBasicAuth < BasicAuth
-      include ProxyAuthenticator
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/digestauth.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/digestauth.rb
deleted file mode 100644
index 318e0bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/digestauth.rb
+++ /dev/null
@@ -1,343 +0,0 @@
-#
-# httpauth/digestauth.rb -- HTTP digest access authentication
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers.
-# Copyright (c) 2003 H.M.
-#
-# The original implementation is provided by H.M.
-#   URL: http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=
-#        %C7%A7%BE%DA%B5%A1%C7%BD%A4%F2%B2%FE%C2%A4%A4%B7%A4%C6%A4%DF%A4%EB
-#
-# $IPR: digestauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
-
-require 'webrick/config'
-require 'webrick/httpstatus'
-require 'webrick/httpauth/authenticator'
-require 'digest/md5'
-require 'digest/sha1'
-
-module WEBrick
-  module HTTPAuth
-    class DigestAuth
-      include Authenticator
-
-      AuthScheme = "Digest"
-      OpaqueInfo = Struct.new(:time, :nonce, :nc)
-      attr_reader :algorithm, :qop
-
-      def self.make_passwd(realm, user, pass)
-        pass ||= ""
-        Digest::MD5::hexdigest([user, realm, pass].join(":"))
-      end
-
-      def initialize(config, default=Config::DigestAuth)
-        check_init(config)
-        @config                 = default.dup.update(config)
-        @algorithm              = @config[:Algorithm]
-        @domain                 = @config[:Domain]
-        @qop                    = @config[:Qop]
-        @use_opaque             = @config[:UseOpaque]
-        @use_next_nonce         = @config[:UseNextNonce]
-        @check_nc               = @config[:CheckNc]
-        @use_auth_info_header   = @config[:UseAuthenticationInfoHeader]
-        @nonce_expire_period    = @config[:NonceExpirePeriod]
-        @nonce_expire_delta     = @config[:NonceExpireDelta]
-        @internet_explorer_hack = @config[:InternetExplorerHack]
-        @opera_hack             = @config[:OperaHack]
-
-        case @algorithm
-        when 'MD5','MD5-sess'
-          @h = Digest::MD5
-        when 'SHA1','SHA1-sess'  # it is a bonus feature :-)
-          @h = Digest::SHA1
-        else
-          msg = format('Alogrithm "%s" is not supported.', @algorithm)
-          raise ArgumentError.new(msg)
-        end
-
-        @instance_key = hexdigest(self.__id__, Time.now.to_i, Process.pid)
-        @opaques = {}
-        @last_nonce_expire = Time.now
-        @mutex = Mutex.new
-      end
-
-      def authenticate(req, res)
-        unless result = @mutex.synchronize{ _authenticate(req, res) }
-          challenge(req, res)
-        end
-        if result == :nonce_is_stale
-          challenge(req, res, true)
-        end
-        return true
-      end
-
-      def challenge(req, res, stale=false)
-        nonce = generate_next_nonce(req)
-        if @use_opaque
-          opaque = generate_opaque(req)
-          @opaques[opaque].nonce = nonce
-        end
-
-        param = Hash.new
-        param["realm"]  = HTTPUtils::quote(@realm)
-        param["domain"] = HTTPUtils::quote(@domain.to_a.join(" ")) if @domain
-        param["nonce"]  = HTTPUtils::quote(nonce)
-        param["opaque"] = HTTPUtils::quote(opaque) if opaque
-        param["stale"]  = stale.to_s
-        param["algorithm"] = @algorithm
-        param["qop"]    = HTTPUtils::quote(@qop.to_a.join(",")) if @qop
-
-        res[@response_field] =
-          "#{@auth_scheme} " + param.map{|k,v| "#{k}=#{v}" }.join(", ")
-        info("%s: %s", @response_field, res[@response_field]) if $DEBUG
-        raise @auth_exception
-      end
-
-      private
-
-      MustParams = ['username','realm','nonce','uri','response']
-      MustParamsAuth = ['cnonce','nc']
-
-      def _authenticate(req, res)
-        unless digest_credentials = check_scheme(req)
-          return false
-        end
-
-        auth_req = split_param_value(digest_credentials)
-        if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-          req_params = MustParams + MustParamsAuth
-        else
-          req_params = MustParams
-        end
-        req_params.each{|key|
-          unless auth_req.has_key?(key)
-            error('%s: parameter missing. "%s"', auth_req['username'], key)
-            raise HTTPStatus::BadRequest
-          end
-        }
-
-        if !check_uri(req, auth_req)
-          raise HTTPStatus::BadRequest  
-        end
-
-        if auth_req['realm'] != @realm  
-          error('%s: realm unmatch. "%s" for "%s"',
-                auth_req['username'], auth_req['realm'], @realm)
-          return false
-        end
-
-        auth_req['algorithm'] ||= 'MD5' 
-        if auth_req['algorithm'] != @algorithm &&
-           (@opera_hack && auth_req['algorithm'] != @algorithm.upcase)
-          error('%s: algorithm unmatch. "%s" for "%s"',
-                auth_req['username'], auth_req['algorithm'], @algorithm)
-          return false
-        end
-
-        if (@qop.nil? && auth_req.has_key?('qop')) ||
-           (@qop && (! @qop.member?(auth_req['qop'])))
-          error('%s: the qop is not allowed. "%s"',
-                auth_req['username'], auth_req['qop'])
-          return false
-        end
-
-        password = @userdb.get_passwd(@realm, auth_req['username'], @reload_db)
-        unless password
-          error('%s: the user is not allowd.', auth_req['username'])
-          return false
-        end
-
-        nonce_is_invalid = false
-        if @use_opaque
-          info("@opaque = %s", @opaque.inspect) if $DEBUG
-          if !(opaque = auth_req['opaque'])
-            error('%s: opaque is not given.', auth_req['username'])
-            nonce_is_invalid = true
-          elsif !(opaque_struct = @opaques[opaque])
-            error('%s: invalid opaque is given.', auth_req['username'])
-            nonce_is_invalid = true
-          elsif !check_opaque(opaque_struct, req, auth_req)
-            @opaques.delete(auth_req['opaque'])
-            nonce_is_invalid = true
-          end
-        elsif !check_nonce(req, auth_req)
-          nonce_is_invalid = true
-        end
-
-        if /-sess$/ =~ auth_req['algorithm'] ||
-           (@opera_hack && /-SESS$/ =~ auth_req['algorithm'])
-          ha1 = hexdigest(password, auth_req['nonce'], auth_req['cnonce'])
-        else
-          ha1 = password
-        end
-
-        if auth_req['qop'] == "auth" || auth_req['qop'] == nil
-          ha2 = hexdigest(req.request_method, auth_req['uri'])
-          ha2_res = hexdigest("", auth_req['uri'])
-        elsif auth_req['qop'] == "auth-int"
-          ha2 = hexdigest(req.request_method, auth_req['uri'],
-                          hexdigest(req.body))
-          ha2_res = hexdigest("", auth_req['uri'], hexdigest(res.body))
-        end
-
-        if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-          param2 = ['nonce', 'nc', 'cnonce', 'qop'].map{|key|
-            auth_req[key]
-          }.join(':')
-          digest     = hexdigest(ha1, param2, ha2)
-          digest_res = hexdigest(ha1, param2, ha2_res)
-        else
-          digest     = hexdigest(ha1, auth_req['nonce'], ha2)
-          digest_res = hexdigest(ha1, auth_req['nonce'], ha2_res)
-        end
-
-        if digest != auth_req['response']
-          error("%s: digest unmatch.", auth_req['username'])
-          return false
-        elsif nonce_is_invalid
-          error('%s: digest is valid, but nonce is not valid.',
-                auth_req['username'])
-          return :nonce_is_stale
-        elsif @use_auth_info_header
-          auth_info = {
-            'nextnonce' => generate_next_nonce(req),
-            'rspauth'   => digest_res
-          }
-          if @use_opaque
-            opaque_struct.time  = req.request_time
-            opaque_struct.nonce = auth_info['nextnonce']
-            opaque_struct.nc    = "%08x" % (auth_req['nc'].hex + 1)
-          end
-          if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
-            ['qop','cnonce','nc'].each{|key|
-              auth_info[key] = auth_req[key]
-            }
-          end
-          res[@resp_info_field] = auth_info.keys.map{|key|
-            if key == 'nc'
-              key + '=' + auth_info[key]
-            else
-              key + "=" + HTTPUtils::quote(auth_info[key])
-            end
-          }.join(', ')
-        end
-        info('%s: authentication scceeded.', auth_req['username'])
-        req.user = auth_req['username']
-        return true
-      end
-
-      def split_param_value(string)
-        ret = {}
-        while string.size != 0
-          case string           
-          when /^\s*([\w\-\.\*\%\!]+)=\s*\"((\\.|[^\"])*)\"\s*,?/
-            key = $1
-            matched = $2
-            string = $'
-            ret[key] = matched.gsub(/\\(.)/, "\\1")
-          when /^\s*([\w\-\.\*\%\!]+)=\s*([^,\"]*),?/
-            key = $1
-            matched = $2
-            string = $'
-            ret[key] = matched.clone
-          when /^s*^,/
-            string = $'
-          else
-            break
-          end
-        end
-        ret
-      end
-
-      def generate_next_nonce(req)
-        now = "%012d" % req.request_time.to_i
-        pk  = hexdigest(now, @instance_key)[0,32]
-        nonce = [now + ":" + pk].pack("m*").chop # it has 60 length of chars.
-        nonce
-      end
-
-      def check_nonce(req, auth_req)
-        username = auth_req['username']
-        nonce = auth_req['nonce']
-
-        pub_time, pk = nonce.unpack("m*")[0].split(":", 2)
-        if (!pub_time || !pk)
-          error("%s: empty nonce is given", username)
-          return false
-        elsif (hexdigest(pub_time, @instance_key)[0,32] != pk)
-          error("%s: invalid private-key: %s for %s",
-                username, hexdigest(pub_time, @instance_key)[0,32], pk)
-          return false
-        end
-
-        diff_time = req.request_time.to_i - pub_time.to_i
-        if (diff_time < 0)
-          error("%s: difference of time-stamp is negative.", username)
-          return false
-        elsif diff_time > @nonce_expire_period
-          error("%s: nonce is expired.", username)
-          return false
-        end
-
-        return true
-      end
-
-      def generate_opaque(req)
-        @mutex.synchronize{
-          now = req.request_time
-          if now - @last_nonce_expire > @nonce_expire_delta
-            @opaques.delete_if{|key,val|
-              (now - val.time) > @nonce_expire_period
-            }
-            @last_nonce_expire = now
-          end
-          begin
-            opaque = Utils::random_string(16)
-          end while @opaques[opaque]
-          @opaques[opaque] = OpaqueInfo.new(now, nil, '00000001')
-          opaque
-        }
-      end
-
-      def check_opaque(opaque_struct, req, auth_req)
-        if (@use_next_nonce && auth_req['nonce'] != opaque_struct.nonce)
-          error('%s: nonce unmatched. "%s" for "%s"',
-                auth_req['username'], auth_req['nonce'], opaque_struct.nonce)
-          return false
-        elsif !check_nonce(req, auth_req)
-          return false
-        end
-        if (@check_nc && auth_req['nc'] != opaque_struct.nc)
-          error('%s: nc unmatched."%s" for "%s"',
-                auth_req['username'], auth_req['nc'], opaque_struct.nc)
-          return false
-        end
-        true
-      end
-
-      def check_uri(req, auth_req)
-        uri = auth_req['uri']
-        if uri != req.request_uri.to_s && uri != req.unparsed_uri &&
-           (@internet_explorer_hack && uri != req.path)
-          error('%s: uri unmatch. "%s" for "%s"', auth_req['username'], 
-                auth_req['uri'], req.request_uri.to_s)
-          return false
-        end
-        true
-      end
-
-      def hexdigest(*args)
-        @h.hexdigest(args.join(":"))
-      end
-    end
-
-    class ProxyDigestAuth < DigestAuth
-      include ProxyAuthenticator
-
-      def check_uri(req, auth_req)
-        return true
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htdigest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htdigest.rb
deleted file mode 100644
index 3949756..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htdigest.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# httpauth/htdigest.rb -- Apache compatible htdigest file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htdigest.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $
-
-require 'webrick/httpauth/userdb'
-require 'webrick/httpauth/digestauth'
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htdigest
-      include UserDB
-
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @digest = Hash.new
-        @mutex = Mutex::new
-        @auth_type = DigestAuth
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        mtime = File::mtime(@path)
-        if mtime > @mtime
-          @digest.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              user, realm, pass = line.split(/:/, 3)
-              unless @digest[realm]
-                @digest[realm] = Hash.new
-              end
-              @digest[realm][user] = pass
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htpasswd", File::dirname(output))
-        begin
-          each{|item| tmp.puts(item.join(":")) }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def get_passwd(realm, user, reload_db)
-        reload() if reload_db
-        if hash = @digest[realm]
-          hash[user]
-        end
-      end
-
-      def set_passwd(realm, user, pass)
-        @mutex.synchronize{
-          unless @digest[realm]
-            @digest[realm] = Hash.new
-          end
-          @digest[realm][user] = make_passwd(realm, user, pass)
-        }
-      end
-
-      def delete_passwd(realm, user)
-        if hash = @digest[realm]
-          hash.delete(user)
-        end
-      end
-
-      def each
-        @digest.keys.sort.each{|realm|
-          hash = @digest[realm]
-          hash.keys.sort.each{|user|
-            yield([user, realm, hash[user]])
-          }
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htgroup.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htgroup.rb
deleted file mode 100644
index c9270c6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htgroup.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# httpauth/htgroup.rb -- Apache compatible htgroup file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htgroup.rb,v 1.1 2003/02/16 22:22:56 gotoyuzo Exp $
-
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htgroup
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @group = Hash.new
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        if (mtime = File::mtime(@path)) > @mtime
-          @group.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              group, members = line.split(/:\s*/)
-              @group[group] = members.split(/\s+/)
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htgroup", File::dirname(output))
-        begin
-          @group.keys.sort.each{|group|
-            tmp.puts(format("%s: %s", group, self.members(group).join(" ")))
-          }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def members(group)
-        reload
-        @group[group] || []
-      end
-
-      def add(group, members)
-        @group[group] = members(group) | members
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htpasswd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htpasswd.rb
deleted file mode 100644
index 40f9297..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/htpasswd.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# httpauth/htpasswd -- Apache compatible htpasswd file
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: htpasswd.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $
-
-require 'webrick/httpauth/userdb'
-require 'webrick/httpauth/basicauth'
-require 'tempfile'
-
-module WEBrick
-  module HTTPAuth
-    class Htpasswd
-      include UserDB
-
-      def initialize(path)
-        @path = path
-        @mtime = Time.at(0)
-        @passwd = Hash.new
-        @auth_type = BasicAuth
-        open(@path,"a").close unless File::exist?(@path)
-        reload
-      end
-
-      def reload
-        mtime = File::mtime(@path)
-        if mtime > @mtime
-          @passwd.clear
-          open(@path){|io|
-            while line = io.gets
-              line.chomp!
-              case line
-              when %r!\A[^:]+:[a-zA-Z0-9./]{13}\z!
-                user, pass = line.split(":")
-              when /:\$/, /:\{SHA\}/
-                raise NotImplementedError,
-                      'MD5, SHA1 .htpasswd file not supported'
-              else
-                raise StandardError, 'bad .htpasswd file'
-              end
-              @passwd[user] = pass
-            end
-          }
-          @mtime = mtime
-        end
-      end
-
-      def flush(output=nil)
-        output ||= @path
-        tmp = Tempfile.new("htpasswd", File::dirname(output))
-        begin
-          each{|item| tmp.puts(item.join(":")) }
-          tmp.close
-          File::rename(tmp.path, output)
-        rescue
-          tmp.close(true)
-        end
-      end
-
-      def get_passwd(realm, user, reload_db)
-        reload() if reload_db
-        @passwd[user]
-      end
-
-      def set_passwd(realm, user, pass)
-        @passwd[user] = make_passwd(realm, user, pass)
-      end
-
-      def delete_passwd(realm, user)
-        @passwd.delete(user)
-      end
-
-      def each
-        @passwd.keys.sort.each{|user|
-          yield([user, @passwd[user]])
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/userdb.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/userdb.rb
deleted file mode 100644
index 33e0140..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpauth/userdb.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# httpauth/userdb.rb -- UserDB mix-in module.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: userdb.rb,v 1.2 2003/02/20 07:15:48 gotoyuzo Exp $
-
-module WEBrick
-  module HTTPAuth
-    module UserDB
-      attr_accessor :auth_type # BasicAuth or DigestAuth
-
-      def make_passwd(realm, user, pass)
-        @auth_type::make_passwd(realm, user, pass)
-      end
-
-      def set_passwd(realm, user, pass)
-        self[user] = pass
-      end                             
-
-      def get_passwd(realm, user, reload_db=false)
-        # reload_db is dummy
-        make_passwd(realm, user, self[user])
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpproxy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpproxy.rb
deleted file mode 100644
index 14e3499..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpproxy.rb
+++ /dev/null
@@ -1,254 +0,0 @@
-#
-# httpproxy.rb -- HTTPProxy Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 GOTO Kentaro
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpproxy.rb,v 1.18 2003/03/08 18:58:10 gotoyuzo Exp $
-# $kNotwork: straw.rb,v 1.3 2002/02/12 15:13:07 gotoken Exp $
-
-require "webrick/httpserver"
-require "net/http"
-
-Net::HTTP::version_1_2 if RUBY_VERSION < "1.7"
-
-module WEBrick
-  NullReader = Object.new
-  class << NullReader
-    def read(*args)
-      nil
-    end
-    alias gets read
-  end
-
-  class HTTPProxyServer < HTTPServer
-    def initialize(config)
-      super
-      c = @config
-      @via = "#{c[:HTTPVersion]} #{c[:ServerName]}:#{c[:Port]}"
-    end
-
-    def service(req, res)
-      if req.request_method == "CONNECT"
-        proxy_connect(req, res)
-      elsif req.unparsed_uri =~ %r!^http://!
-        proxy_service(req, res)
-      else
-        super(req, res)
-      end
-    end
-
-    def proxy_auth(req, res)
-      if proc = @config[:ProxyAuthProc]
-        proc.call(req, res)
-      end
-      req.header.delete("proxy-authorization")
-    end
-
-    # Some header fields shuold not be transfered.
-    HopByHop = %w( connection keep-alive proxy-authenticate upgrade
-                   proxy-authorization te trailers transfer-encoding )
-    ShouldNotTransfer = %w( set-cookie proxy-connection )
-    def split_field(f) f ? f.split(/,\s+/).collect{|i| i.downcase } : [] end
-
-    def choose_header(src, dst)
-      connections = split_field(src['connection'])
-      src.each{|key, value|
-        key = key.downcase
-        if HopByHop.member?(key)          || # RFC2616: 13.5.1
-           connections.member?(key)       || # RFC2616: 14.10
-           ShouldNotTransfer.member?(key)    # pragmatics
-          @logger.debug("choose_header: `#{key}: #{value}'")
-          next
-        end
-        dst[key] = value
-      }
-    end
-
-    # Net::HTTP is stupid about the multiple header fields.
-    # Here is workaround:
-    def set_cookie(src, dst)
-      if str = src['set-cookie']
-        cookies = []
-        str.split(/,\s*/).each{|token|
-          if /^[^=]+;/o =~ token
-            cookies[-1] << ", " << token
-          elsif /=/o =~ token
-            cookies << token
-          else
-            cookies[-1] << ", " << token
-          end
-        }
-        dst.cookies.replace(cookies)
-      end
-    end
-
-    def set_via(h)
-      if @config[:ProxyVia]
-        if  h['via']
-          h['via'] << ", " << @via
-        else
-          h['via'] = @via
-        end
-      end
-    end
-
-    def proxy_uri(req, res)
-      @config[:ProxyURI]
-    end
-
-    def proxy_service(req, res)
-      # Proxy Authentication
-      proxy_auth(req, res)      
-
-      # Create Request-URI to send to the origin server
-      uri  = req.request_uri
-      path = uri.path.dup
-      path << "?" << uri.query if uri.query
-
-      # Choose header fields to transfer
-      header = Hash.new
-      choose_header(req, header)
-      set_via(header)
-
-      # select upstream proxy server
-      if proxy = proxy_uri(req, res)
-        proxy_host = proxy.host
-        proxy_port = proxy.port
-        if proxy.userinfo
-          credentials = "Basic " + [proxy.userinfo].pack("m*")
-          credentials.chomp!
-          header['proxy-authorization'] = credentials
-        end
-      end
-
-      response = nil
-      begin
-        http = Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port)
-        http.start{
-          if @config[:ProxyTimeout]
-            ##################################   these issues are 
-            http.open_timeout = 30   # secs  #   necessary (maybe bacause
-            http.read_timeout = 60   # secs  #   Ruby's bug, but why?)
-            ##################################
-          end
-          case req.request_method
-          when "GET"  then response = http.get(path, header)
-          when "POST" then response = http.post(path, req.body || "", header)
-          when "HEAD" then response = http.head(path, header)
-          else
-            raise HTTPStatus::MethodNotAllowed,
-              "unsupported method `#{req.request_method}'."
-          end
-        }
-      rescue => err
-        logger.debug("#{err.class}: #{err.message}")
-        raise HTTPStatus::ServiceUnavailable, err.message
-      end
-  
-      # Persistent connction requirements are mysterious for me.
-      # So I will close the connection in every response.
-      res['proxy-connection'] = "close"
-      res['connection'] = "close"
-
-      # Convert Net::HTTP::HTTPResponse to WEBrick::HTTPProxy
-      res.status = response.code.to_i
-      choose_header(response, res)
-      set_cookie(response, res)
-      set_via(res)
-      res.body = response.body
-
-      # Process contents
-      if handler = @config[:ProxyContentHandler]
-        handler.call(req, res)
-      end
-    end
-
-    def proxy_connect(req, res)
-      # Proxy Authentication
-      proxy_auth(req, res)
-
-      ua = Thread.current[:WEBrickSocket]  # User-Agent
-      raise HTTPStatus::InternalServerError,
-        "[BUG] cannot get socket" unless ua
-
-      host, port = req.unparsed_uri.split(":", 2)
-      # Proxy authentication for upstream proxy server
-      if proxy = proxy_uri(req, res)
-        proxy_request_line = "CONNECT #{host}:#{port} HTTP/1.0"
-        if proxy.userinfo
-          credentials = "Basic " + [proxy.userinfo].pack("m*")
-          credentials.chomp!
-        end
-        host, port = proxy.host, proxy.port
-      end
-
-      begin
-        @logger.debug("CONNECT: upstream proxy is `#{host}:#{port}'.")
-        os = TCPSocket.new(host, port)     # origin server
-
-        if proxy
-          @logger.debug("CONNECT: sending a Request-Line")
-          os << proxy_request_line << CRLF
-          @logger.debug("CONNECT: > #{proxy_request_line}")
-          if credentials
-            @logger.debug("CONNECT: sending a credentials")
-            os << "Proxy-Authorization: " << credentials << CRLF
-          end
-          os << CRLF
-          proxy_status_line = os.gets(LF)
-          @logger.debug("CONNECT: read a Status-Line form the upstream server")
-          @logger.debug("CONNECT: < #{proxy_status_line}")
-          if %r{^HTTP/\d+\.\d+\s+200\s*} =~ proxy_status_line
-            while line = os.gets(LF)
-              break if /\A(#{CRLF}|#{LF})\z/om =~ line
-            end
-          else
-            raise HTTPStatus::BadGateway
-          end
-        end
-        @logger.debug("CONNECT #{host}:#{port}: succeeded")
-        res.status = HTTPStatus::RC_OK
-      rescue => ex
-        @logger.debug("CONNECT #{host}:#{port}: failed `#{ex.message}'")
-        res.set_error(ex)
-        raise HTTPStatus::EOFError
-      ensure
-        if handler = @config[:ProxyContentHandler]
-          handler.call(req, res)
-        end
-        res.send_response(ua)
-        access_log(@config, req, res)
-
-        # Should clear request-line not to send the sesponse twice.
-        # see: HTTPServer#run
-        req.parse(NullReader) rescue nil
-      end
-
-      begin
-        while fds = IO::select([ua, os])
-          if fds[0].member?(ua)
-            buf = ua.sysread(1024);
-            @logger.debug("CONNECT: #{buf.size} byte from User-Agent")
-            os.syswrite(buf)
-          elsif fds[0].member?(os)
-            buf = os.sysread(1024);
-            @logger.debug("CONNECT: #{buf.size} byte from #{host}:#{port}")
-            ua.syswrite(buf)
-          end
-        end
-      rescue => ex
-        os.close
-        @logger.debug("CONNECT #{host}:#{port}: closed")
-      end
-
-      raise HTTPStatus::EOFError
-    end
-
-    def do_OPTIONS(req, res)
-      res['allow'] = "GET,HEAD,POST,OPTIONS,CONNECT"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httprequest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httprequest.rb
deleted file mode 100644
index 1d32293..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httprequest.rb
+++ /dev/null
@@ -1,365 +0,0 @@
-#
-# httprequest.rb -- HTTPRequest Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httprequest.rb,v 1.64 2003/07/13 17:18:22 gotoyuzo Exp $
-
-require 'timeout'
-require 'uri'
-
-require 'webrick/httpversion'
-require 'webrick/httpstatus'
-require 'webrick/httputils'
-require 'webrick/cookie'
-
-module WEBrick
-
-  class HTTPRequest
-    BODY_CONTAINABLE_METHODS = [ "POST", "PUT" ]
-    BUFSIZE = 1024*4
-
-    # Request line
-    attr_reader :request_line
-    attr_reader :request_method, :unparsed_uri, :http_version
-
-    # Request-URI
-    attr_reader :request_uri, :host, :port, :path
-    attr_accessor :script_name, :path_info, :query_string
-
-    # Header and entity body
-    attr_reader :raw_header, :header, :cookies
-    attr_reader :accept, :accept_charset
-    attr_reader :accept_encoding, :accept_language
-
-    # Misc
-    attr_accessor :user
-    attr_reader :addr, :peeraddr
-    attr_reader :attributes
-    attr_reader :keep_alive
-    attr_reader :request_time
-
-    def initialize(config)
-      @config = config
-      @logger = config[:Logger]
-
-      @request_line = @request_method =
-        @unparsed_uri = @http_version = nil
-
-      @request_uri = @host = @port = @path = nil
-      @script_name = @path_info = nil
-      @query_string = nil
-      @query = nil
-      @form_data = nil
-
-      @raw_header = Array.new
-      @header = nil
-      @cookies = []
-      @accept = []
-      @accept_charset = []
-      @accept_encoding = []
-      @accept_language = []
-      @body = ""
-
-      @addr = @peeraddr = nil
-      @attributes = {}
-      @user = nil
-      @keep_alive = false
-      @request_time = nil
-
-      @remaining_size = nil
-      @socket = nil
-    end
-
-    def parse(socket=nil)
-      @socket = socket
-      begin
-        @peeraddr = socket.respond_to?(:peeraddr) ? socket.peeraddr : []
-        @addr = socket.respond_to?(:addr) ? socket.addr : []
-      rescue Errno::ENOTCONN
-        raise HTTPStatus::EOFError
-      end
-
-      read_request_line(socket)
-      if @http_version.major > 0
-        read_header(socket)
-        @header['cookie'].each{|cookie|
-          @cookies += Cookie::parse(cookie)
-        }
-        @accept = HTTPUtils.parse_qvalues(self['accept'])
-        @accept_charset = HTTPUtils.parse_qvalues(self['accept-charset'])
-        @accept_encoding = HTTPUtils.parse_qvalues(self['accept-encoding'])
-        @accept_language = HTTPUtils.parse_qvalues(self['accept-language'])
-      end
-      return if @request_method == "CONNECT"
-      return if @unparsed_uri == "*"
-
-      begin
-        @request_uri = parse_uri(@unparsed_uri)
-        @path = HTTPUtils::unescape(@request_uri.path)
-        @path = HTTPUtils::normalize_path(@path)
-        @host = @request_uri.host
-        @port = @request_uri.port
-        @query_string = @request_uri.query
-        @script_name = ""
-        @path_info = @path.dup
-      rescue
-        raise HTTPStatus::BadRequest, "bad URI `#{@unparsed_uri}'."
-      end
-
-      if /close/io =~ self["connection"]
-        @keep_alive = false
-      elsif /keep-alive/io =~ self["connection"]
-        @keep_alive = true
-      elsif @http_version < "1.1"
-        @keep_alive = false
-      else
-        @keep_alive = true
-      end
-    end
-
-    def body(&block)
-      block ||= Proc.new{|chunk| @body << chunk }
-      read_body(@socket, block)
-      @body.empty? ? nil : @body
-    end
-
-    def query
-      unless @query
-        parse_query()
-      end
-      @query
-    end
-
-    def content_length
-      return Integer(self['content-length'])
-    end
-
-    def content_type
-      return self['content-type']
-    end
-
-    def [](header_name)
-      if @header
-        value = @header[header_name.downcase]
-        value.empty? ? nil : value.join(", ")
-      end
-    end
-
-    def each
-      @header.each{|k, v|
-        value = @header[k]
-        yield(k, value.empty? ? nil : value.join(", "))
-      }
-    end
-
-    def keep_alive?
-      @keep_alive
-    end
-
-    def to_s
-      ret = @request_line.dup
-      @raw_header.each{|line| ret << line }
-      ret << CRLF
-      ret << body if body
-      ret
-    end
-
-    def fixup()
-      begin
-        body{|chunk| }   # read remaining body
-      rescue HTTPStatus::Error => ex
-        @logger.error("HTTPRequest#fixup: #{ex.class} occured.")
-        @keep_alive = false
-      rescue => ex
-        @logger.error(ex)
-        @keep_alive = false
-      end
-    end
-
-    def meta_vars
-      # This method provides the metavariables defined by the revision 3
-      # of ``The WWW Common Gateway Interface Version 1.1''.
-      # (http://Web.Golux.Com/coar/cgi/)
-
-      meta = Hash.new
-
-      cl = self["Content-Length"]
-      ct = self["Content-Type"]
-      meta["CONTENT_LENGTH"]    = cl if cl.to_i > 0
-      meta["CONTENT_TYPE"]      = ct.dup if ct
-      meta["GATEWAY_INTERFACE"] = "CGI/1.1"
-      meta["PATH_INFO"]         = @path_info ? @path_info.dup : ""
-     #meta["PATH_TRANSLATED"]   = nil      # no plan to be provided
-      meta["QUERY_STRING"]      = @query_string ? @query_string.dup : ""
-      meta["REMOTE_ADDR"]       = @peeraddr[3]
-      meta["REMOTE_HOST"]       = @peeraddr[2]
-     #meta["REMOTE_IDENT"]      = nil      # no plan to be provided
-      meta["REMOTE_USER"]       = @user
-      meta["REQUEST_METHOD"]    = @request_method.dup
-      meta["REQUEST_URI"]       = @request_uri.to_s
-      meta["SCRIPT_NAME"]       = @script_name.dup
-      meta["SERVER_NAME"]       = @host
-      meta["SERVER_PORT"]       = @port.to_s
-      meta["SERVER_PROTOCOL"]   = "HTTP/" + @config[:HTTPVersion].to_s
-      meta["SERVER_SOFTWARE"]   = @config[:ServerSoftware].dup
-
-      self.each{|key, val|
-        next if /^content-type$/i =~ key
-        next if /^content-length$/i =~ key
-        name = "HTTP_" + key
-        name.gsub!(/-/o, "_")
-        name.upcase!
-        meta[name] = val
-      }
-
-      meta
-    end
-
-    private
-
-    def read_request_line(socket)
-      @request_line = read_line(socket) if socket
-      @request_time = Time.now
-      raise HTTPStatus::EOFError unless @request_line
-      if /^(\S+)\s+(\S+)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line
-        @request_method = $1
-        @unparsed_uri   = $2
-        @http_version   = HTTPVersion.new($3 ? $3 : "0.9")
-      else
-        rl = @request_line.sub(/\x0d?\x0a\z/o, '')
-        raise HTTPStatus::BadRequest, "bad Request-Line `#{rl}'."
-      end
-    end
-
-    def read_header(socket)
-      if socket
-        while line = read_line(socket)
-          break if /\A(#{CRLF}|#{LF})\z/om =~ line
-          @raw_header << line
-        end
-      end
-      begin
-        @header = HTTPUtils::parse_header(@raw_header)
-      rescue => ex
-        raise  HTTPStatus::BadRequest, ex.message
-      end
-    end
-
-    def parse_uri(str, scheme="http")
-      if @config[:Escape8bitURI]
-        str = HTTPUtils::escape8bit(str)
-      end
-      uri = URI::parse(str)
-      return uri if uri.absolute?
-      if self["host"]
-        pattern = /\A(#{URI::REGEXP::PATTERN::HOST})(?::(\d+))?\z/n
-        host, port = *self['host'].scan(pattern)[0]
-      elsif @addr.size > 0
-        host, port = @addr[2], @addr[1]
-      else
-        host, port = @config[:ServerName], @config[:Port]
-      end
-      uri.scheme = scheme
-      uri.host = host
-      uri.port = port ? port.to_i : nil
-      return URI::parse(uri.to_s)
-    end
-
-    def read_body(socket, block)
-      return unless socket
-      if tc = self['transfer-encoding']
-        case tc
-        when /chunked/io then read_chunked(socket, block)
-        else raise HTTPStatus::NotImplemented, "Transfer-Encoding: #{tc}."
-        end
-      elsif self['content-length'] || @remaining_size
-        @remaining_size ||= self['content-length'].to_i
-        while @remaining_size > 0 
-          sz = BUFSIZE < @remaining_size ? BUFSIZE : @remaining_size
-          break unless buf = read_data(socket, sz)
-          @remaining_size -= buf.size
-          block.call(buf)
-        end
-        if @remaining_size > 0 && @socket.eof?
-          raise HTTPStatus::BadRequest, "invalid body size."
-        end
-      elsif BODY_CONTAINABLE_METHODS.member?(@request_method)
-        raise HTTPStatus::LengthRequired
-      end
-      return @body
-    end
-
-    def read_chunk_size(socket)
-      line = read_line(socket)
-      if /^([0-9a-fA-F]+)(?:;(\S+))?/ =~ line
-        chunk_size = $1.hex
-        chunk_ext = $2
-        [ chunk_size, chunk_ext ]
-      else
-        raise HTTPStatus::BadRequest, "bad chunk `#{line}'."
-      end
-    end
-
-    def read_chunked(socket, block)
-      chunk_size, = read_chunk_size(socket)
-      while chunk_size > 0
-        data = ""
-        while data.size < chunk_size
-          tmp = read_data(socket, chunk_size-data.size) # read chunk-data
-          break unless tmp
-          data << tmp
-        end
-        if data.nil? || data.size != chunk_size
-          raise BadRequest, "bad chunk data size."
-        end
-        read_line(socket)                    # skip CRLF
-        block.call(data)
-        chunk_size, = read_chunk_size(socket)
-      end
-      read_header(socket)                    # trailer + CRLF
-      @header.delete("transfer-encoding")
-      @remaining_size = 0
-    end
-
-    def _read_data(io, method, arg)
-      begin
-        timeout(@config[:RequestTimeout]){
-          return io.__send__(method, arg)
-        }
-      rescue Errno::ECONNRESET
-        return nil
-      rescue TimeoutError
-        raise HTTPStatus::RequestTimeout
-      end
-    end
-
-    def read_line(io)
-      _read_data(io, :gets, LF)
-    end
-
-    def read_data(io, size)
-      _read_data(io, :read, size)
-    end
-
-    def parse_query()
-      begin
-        if @request_method == "GET" || @request_method == "HEAD"
-          @query = HTTPUtils::parse_query(@query_string)
-        elsif self['content-type'] =~ /^application\/x-www-form-urlencoded/
-          @query = HTTPUtils::parse_query(body)
-        elsif self['content-type'] =~ /^multipart\/form-data; boundary=(.+)/
-          boundary = HTTPUtils::dequote($1)
-          @query = HTTPUtils::parse_form_data(body, boundary)
-        else
-          @query = Hash.new
-        end
-      rescue => ex
-        raise HTTPStatus::BadRequest, ex.message
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpresponse.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpresponse.rb
deleted file mode 100644
index d0f232d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpresponse.rb
+++ /dev/null
@@ -1,327 +0,0 @@
-#
-# httpresponse.rb -- HTTPResponse Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpresponse.rb,v 1.45 2003/07/11 11:02:25 gotoyuzo Exp $
-
-require 'time'
-require 'webrick/httpversion'
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  class HTTPResponse
-    BUFSIZE = 1024*4
-
-    attr_reader :http_version, :status, :header
-    attr_reader :cookies
-    attr_accessor :reason_phrase
-    attr_accessor :body
-
-    attr_accessor :request_method, :request_uri, :request_http_version
-    attr_accessor :filename
-    attr_accessor :keep_alive
-    attr_reader :config, :sent_size
-
-    def initialize(config)
-      @config = config
-      @logger = config[:Logger]
-      @header = Hash.new
-      @status = HTTPStatus::RC_OK
-      @reason_phrase = nil
-      @http_version = HTTPVersion::convert(@config[:HTTPVersion])
-      @body = ''
-      @keep_alive = true
-      @cookies = []
-      @request_method = nil
-      @request_uri = nil
-      @request_http_version = @http_version  # temporary
-      @chunked = false
-      @filename = nil
-      @sent_size = 0
-    end
-
-    def status_line
-      "HTTP/#@http_version #@status #@reason_phrase #{CRLF}"
-    end
-
-    def status=(status)
-      @status = status
-      @reason_phrase = HTTPStatus::reason_phrase(status)
-    end
-
-    def [](field)
-      @header[field.downcase]
-    end
-
-    def []=(field, value)
-      @header[field.downcase] = value.to_s
-    end
-
-    def content_length
-      if len = self['content-length']
-        return Integer(len)
-      end
-    end
-
-    def content_length=(len)
-      self['content-length'] = len.to_s
-    end
-
-    def content_type
-      self['content-type']
-    end
-
-    def content_type=(type)
-      self['content-type'] = type
-    end
-
-    def each
-      @header.each{|k, v|  yield(k, v) }
-    end
-
-    def chunked?
-      @chunked
-    end
-
-    def chunked=(val)
-      @chunked = val ? true : false
-    end
-
-    def keep_alive?
-      @keep_alive
-    end
-
-    def send_response(socket)
-      begin
-        setup_header()
-        send_header(socket)
-        send_body(socket)
-      rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ENOTCONN => ex
-        @logger.debug(ex)
-        @keep_alive = false
-      rescue Exception => ex
-        @logger.error(ex)
-        @keep_alive = false
-      end
-    end
-
-    def setup_header()
-      @reason_phrase    ||= HTTPStatus::reason_phrase(@status)
-      @header['server'] ||= @config[:ServerSoftware]
-      @header['date']   ||= Time.now.httpdate
-
-      # HTTP/0.9 features
-      if @request_http_version < "1.0"
-        @http_version = HTTPVersion.new("0.9")
-        @keep_alive = false
-      end
-
-      # HTTP/1.0 features
-      if @request_http_version < "1.1"
-        if chunked?
-          @chunked = false
-          ver = @request_http_version.to_s
-          msg = "chunked is set for an HTTP/#{ver} request. (ignored)"
-          @logger.warn(msg)
-        end
-      end
-
-      # Determin the message length (RFC2616 -- 4.4 Message Length)
-      if @status == 304 || @status == 204 || HTTPStatus::info?(@status)
-        @header.delete('content-length')
-        @body = ""
-      elsif chunked?
-        @header["transfer-encoding"] = "chunked"
-        @header.delete('content-length')
-      elsif %r{^multipart/byteranges} =~ @header['content-type']
-        @header.delete('content-length')
-      elsif @header['content-length'].nil?
-        unless @body.is_a?(IO)
-          @header['content-length'] = @body ? @body.size : 0
-        end
-      end
-
-      # Keep-Alive connection.
-      if @header['connection'] == "close"
-         @keep_alive = false
-      elsif keep_alive?
-        if chunked? || @header['content-length']
-          @header['connection'] = "Keep-Alive"
-        end
-      else
-        @header['connection'] = "close"
-      end
-
-      # Location is a single absoluteURI.
-      if location = @header['location']
-        if @request_uri
-          @header['location'] = @request_uri.merge(location)
-        end
-      end
-    end
-
-    def send_header(socket)
-      if @http_version.major > 0
-        data = status_line()
-        @header.each{|key, value|
-          tmp = key.gsub(/\bwww|^te$|\b\w/){|s| s.upcase }
-          data << "#{tmp}: #{value}" << CRLF
-        }
-        @cookies.each{|cookie|
-          data << "Set-Cookie: " << cookie.to_s << CRLF
-        }
-        data << CRLF
-        _write_data(socket, data)
-      end
-    end
-
-    def send_body(socket)
-      case @body
-      when IO then send_body_io(socket)
-      else send_body_string(socket)
-      end
-    end
-
-    def to_s
-      ret = ""
-      send_response(ret)
-      ret
-    end
-
-    def set_redirect(status, url)
-      @body = "<HTML><A HREF=\"#{url.to_s}\">#{url.to_s}</A>.</HTML>\n"
-      @header['location'] = url.to_s
-      raise status
-    end
-
-    def set_error(ex, backtrace=false)
-      case ex
-      when HTTPStatus::Status 
-        @keep_alive = false if HTTPStatus::error?(ex.code)
-        self.status = ex.code
-      else 
-        @keep_alive = false
-        self.status = HTTPStatus::RC_INTERNAL_SERVER_ERROR
-      end
-      @header['content-type'] = "text/html"
-
-      if respond_to?(:create_error_page)
-        create_error_page()
-        return
-      end
-
-      if @request_uri
-        host, port = @request_uri.host, @request_uri.port
-      else
-        host, port = @config[:ServerName], @config[:Port]
-      end
-
-      @body = ''
-      @body << <<-_end_of_html_
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-  <HEAD><TITLE>#{HTMLUtils::escape(@reason_phrase)}</TITLE></HEAD>
-  <BODY>
-    <H1>#{HTMLUtils::escape(@reason_phrase)}</H1>
-    #{HTMLUtils::escape(ex.message)}
-    <HR>
-      _end_of_html_
-
-      if backtrace && $DEBUG
-        @body << "backtrace of `#{HTMLUtils::escape(ex.class.to_s)}' "
-        @body << "#{HTMLUtils::escape(ex.message)}"
-        @body << "<PRE>"
-        ex.backtrace.each{|line| @body << "\t#{line}\n"}
-        @body << "</PRE><HR>"
-      end
-
-      @body << <<-_end_of_html_
-    <ADDRESS>
-     #{HTMLUtils::escape(@config[:ServerSoftware])} at
-     #{host}:#{port}
-    </ADDRESS>
-  </BODY>
-</HTML>
-      _end_of_html_
-    end
-
-    private
-
-    def send_body_io(socket)
-      begin
-        if @request_method == "HEAD"
-          # do nothing
-        elsif chunked?
-          while buf = @body.read(BUFSIZE)
-            next if buf.empty?
-            data = ""
-            data << format("%x", buf.size) << CRLF
-            data << buf << CRLF
-            _write_data(socket, data)
-            @sent_size += buf.size
-          end
-          _write_data(socket, "0#{CRLF}#{CRLF}")
-        else
-          size = @header['content-length'].to_i
-          _send_file(socket, @body, 0, size)
-          @sent_size = size
-        end
-      ensure
-        @body.close
-      end
-    end
-
-    def send_body_string(socket)
-      if @request_method == "HEAD"
-        # do nothing
-      elsif chunked?
-        remain = body ? @body.size : 0
-        while buf = @body[@sent_size, BUFSIZE]
-          break if buf.empty?
-          data = ""
-          data << format("%x", buf.size) << CRLF
-          data << buf << CRLF
-          _write_data(socket, data)
-          @sent_size += buf.size
-        end
-        _write_data(socket, "0#{CRLF}#{CRLF}")
-      else
-        if @body && @body.size > 0
-          _write_data(socket, @body)
-          @sent_size = @body.size
-        end
-      end
-    end
-
-    def _send_file(output, input, offset, size)
-      while offset > 0
-        sz = BUFSIZE < offset ? BUFSIZE : offset
-        buf = input.read(sz)
-        offset -= buf.size
-      end
-
-      if size == 0
-        while buf = input.read(BUFSIZE)
-          _write_data(output, buf)
-        end
-      else
-        while size > 0
-          sz = BUFSIZE < size ? BUFSIZE : size
-          buf = input.read(sz)
-          _write_data(output, buf)
-          size -= buf.size
-        end
-      end
-    end
-
-    def _write_data(socket, data)
-      socket << data
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/https.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/https.rb
deleted file mode 100644
index 81b65ce..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/https.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# https.rb -- SSL/TLS enhancement for HTTPServer
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: https.rb,v 1.15 2003/07/22 19:20:42 gotoyuzo Exp $
-
-require 'webrick/ssl'
-
-module WEBrick
-  module Config
-    HTTP.update(SSL)
-  end
-
-  class HTTPRequest
-    attr_reader :cipher, :server_cert, :client_cert
-
-    alias orig_parse parse
-
-    def parse(socket=nil)
-      if socket.respond_to?(:cert)
-        @server_cert = socket.cert || @config[:SSLCertificate]
-        @client_cert = socket.peer_cert
-        @client_cert_chain = socket.peer_cert_chain
-        @cipher      = socket.cipher
-      end
-      orig_parse(socket)
-    end
-
-    alias orig_parse_uri parse_uri
-
-    def parse_uri(str, scheme="https")
-      if @server_cert
-        return orig_parse_uri(str, scheme)
-      end
-      return orig_parse_uri(str)
-    end
-
-    alias orig_meta_vars meta_vars
-
-    def meta_vars
-      meta = orig_meta_vars
-      if @server_cert
-        meta["HTTPS"] = "on"
-        meta["SSL_SERVER_CERT"] = @server_cert.to_pem
-        meta["SSL_CLIENT_CERT"] = @client_cert ? @client_cert.to_pem : ""
-        if @client_cert_chain
-          @client_cert_chain.each_with_index{|cert, i|
-            meta["SSL_CLIENT_CERT_CHAIN_#{i}"] = cert.to_pem
-          }
-        end
-        meta["SSL_CIPHER"] = @cipher[0]
-        meta["SSL_PROTOCOL"] = @cipher[1]
-        meta["SSL_CIPHER_USEKEYSIZE"] = @cipher[2].to_s
-        meta["SSL_CIPHER_ALGKEYSIZE"] = @cipher[3].to_s
-      end
-      meta
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpserver.rb
deleted file mode 100644
index 9edb001..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpserver.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# httpserver.rb -- HTTPServer Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpserver.rb,v 1.63 2002/10/01 17:16:32 gotoyuzo Exp $
-
-require 'webrick/server'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-require 'webrick/httprequest'
-require 'webrick/httpresponse'
-require 'webrick/httpservlet'
-require 'webrick/accesslog'
-
-module WEBrick
-  class HTTPServerError < ServerError; end
-
-  class HTTPServer < ::WEBrick::GenericServer
-    def initialize(config={}, default=Config::HTTP)
-      super
-      @http_version = HTTPVersion::convert(@config[:HTTPVersion])
-
-      @mount_tab = MountTable.new
-      if @config[:DocumentRoot]
-        mount("/", HTTPServlet::FileHandler, @config[:DocumentRoot],
-              @config[:DocumentRootOptions])
-      end
-
-      unless @config[:AccessLog]
-        @config[:AccessLog] = [
-          [ $stderr, AccessLog::COMMON_LOG_FORMAT ],
-          [ $stderr, AccessLog::REFERER_LOG_FORMAT ]
-        ]
-      end
- 
-      @virtual_hosts = Array.new
-    end
-
-    def run(sock)
-      while true 
-        res = HTTPResponse.new(@config)
-        req = HTTPRequest.new(@config)
-        server = self
-        begin
-          timeout = @config[:RequestTimeout]
-          while timeout > 0
-            break if IO.select([sock], nil, nil, 0.5)
-            timeout = 0 if @status != :Running
-            timeout -= 0.5
-          end
-          raise HTTPStatus::EOFError if timeout <= 0 || sock.eof?
-          req.parse(sock)
-          res.request_method = req.request_method
-          res.request_uri = req.request_uri
-          res.request_http_version = req.http_version
-          res.keep_alive = req.keep_alive?
-          server = lookup_server(req) || self
-          if callback = server[:RequestCallback] || server[:RequestHandler]
-            callback.call(req, res)
-          end
-          server.service(req, res)
-        rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex
-          res.set_error(ex)
-        rescue HTTPStatus::Error => ex
-          @logger.error(ex.message)
-          res.set_error(ex)
-        rescue HTTPStatus::Status => ex
-          res.status = ex.code
-        rescue StandardError => ex
-          @logger.error(ex)
-          res.set_error(ex, true)
-        ensure
-          if req.request_line
-            req.fixup()
-            res.send_response(sock)
-            server.access_log(@config, req, res)
-          end
-        end
-        break if @http_version < "1.1"
-        break unless req.keep_alive?
-        break unless res.keep_alive?
-      end
-    end
-
-    def service(req, res)
-      if req.unparsed_uri == "*"
-        if req.request_method == "OPTIONS"
-          do_OPTIONS(req, res)
-          raise HTTPStatus::OK
-        end
-        raise HTTPStatus::NotFound, "`#{req.unparsed_uri}' not found."
-      end
-
-      servlet, options, script_name, path_info = search_servlet(req.path)
-      raise HTTPStatus::NotFound, "`#{req.path}' not found." unless servlet
-      req.script_name = script_name
-      req.path_info = path_info
-      si = servlet.get_instance(self, *options)
-      @logger.debug(format("%s is invoked.", si.class.name))
-      si.service(req, res)
-    end
-
-    def do_OPTIONS(req, res)
-      res["allow"] = "GET,HEAD,POST,OPTIONS"
-    end
-
-    def mount(dir, servlet, *options)
-      @logger.debug(sprintf("%s is mounted on %s.", servlet.inspect, dir))
-      @mount_tab[dir] = [ servlet, options ]
-    end
-
-    def mount_proc(dir, proc=nil, &block)
-      proc ||= block
-      raise HTTPServerError, "must pass a proc or block" unless proc
-      mount(dir, HTTPServlet::ProcHandler.new(proc))
-    end
-
-    def unmount(dir)
-      @logger.debug(sprintf("unmount %s.", dir))
-      @mount_tab.delete(dir)
-    end
-    alias umount unmount
-
-    def search_servlet(path)
-      script_name, path_info = @mount_tab.scan(path)
-      servlet, options = @mount_tab[script_name]
-      if servlet
-        [ servlet, options, script_name, path_info ]
-      end
-    end
-
-    def virtual_host(server)
-      @virtual_hosts << server
-      @virtual_hosts = @virtual_hosts.sort_by{|s|
-        num = 0
-        num -= 4 if s[:BindAddress]
-        num -= 2 if s[:Port]
-        num -= 1 if s[:ServerName]
-        num
-      }
-    end
-
-    def lookup_server(req)
-      @virtual_hosts.find{|s|
-        (s[:BindAddress].nil? || req.addr[3] == s[:BindAddress]) &&
-        (s[:Port].nil?        || req.port == s[:Port])           &&
-        ((s[:ServerName].nil?  || req.host == s[:ServerName]) ||
-         (!s[:ServerAlias].nil? && s[:ServerAlias].find{|h| h === req.host}))
-      }
-    end
-
-    def access_log(config, req, res)
-      param = AccessLog::setup_params(config, req, res)
-      @config[:AccessLog].each{|logger, fmt|
-        logger << AccessLog::format(fmt+"\n", param)
-      }
-    end
-
-    class MountTable
-      def initialize
-        @tab = Hash.new
-        compile
-      end
-
-      def [](dir)
-        dir = normalize(dir)
-        @tab[dir]
-      end
-
-      def []=(dir, val)
-        dir = normalize(dir)
-        @tab[dir] = val
-        compile
-        val
-      end
-
-      def delete(dir)
-        dir = normalize(dir)
-        res = @tab.delete(dir)
-        compile
-        res
-      end
-
-      def scan(path)
-        @scanner =~ path
-        [ $&, $' ]
-      end
-
-      private
-
-      def compile
-        k = @tab.keys
-        k.sort!
-        k.reverse!
-        k.collect!{|path| Regexp.escape(path) }
-        @scanner = Regexp.new("^(" + k.join("|") +")(?=/|$)")
-      end
-
-      def normalize(dir)
-        ret = dir ? dir.dup : ""
-        ret.sub!(%r|/+$|, "")
-        ret
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet.rb
deleted file mode 100644
index ac7c022..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# httpservlet.rb -- HTTPServlet Utility File
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpservlet.rb,v 1.21 2003/02/23 12:24:46 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract'
-require 'webrick/httpservlet/filehandler'
-require 'webrick/httpservlet/cgihandler'
-require 'webrick/httpservlet/erbhandler'
-require 'webrick/httpservlet/prochandler'
-
-module WEBrick
-  module HTTPServlet
-    FileHandler.add_handler("cgi", CGIHandler)
-    FileHandler.add_handler("rhtml", ERBHandler)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/abstract.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/abstract.rb
deleted file mode 100644
index 5375c46..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/abstract.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# httpservlet.rb -- HTTPServlet Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: abstract.rb,v 1.24 2003/07/11 11:16:46 gotoyuzo Exp $
-
-require 'thread'
-
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  module HTTPServlet
-    class HTTPServletError < StandardError; end
-
-    class AbstractServlet
-      def self.get_instance(config, *options)
-        self.new(config, *options)
-      end
-
-      def initialize(server, *options)
-        @server = @config = server
-        @logger = @server[:Logger]
-        @options = options
-      end
-
-      def service(req, res)
-        method_name = "do_" + req.request_method.gsub(/-/, "_")
-        if respond_to?(method_name)
-          __send__(method_name, req, res)
-        else
-          raise HTTPStatus::MethodNotAllowed,
-                "unsupported method `#{req.request_method}'."
-        end
-      end
-
-      def do_GET(req, res)
-        raise HTTPStatus::NotFound, "not found."
-      end
-
-      def do_HEAD(req, res)
-        do_GET(req, res)
-      end
-
-      def do_OPTIONS(req, res)
-        m = self.methods.grep(/^do_[A-Z]+$/)
-        m.collect!{|i| i.sub(/do_/, "") }
-        m.sort!
-        res["allow"] = m.join(",")
-      end
-
-      private
-
-      def redirect_to_directory_uri(req, res)
-        if req.path[-1] != ?/
-          location = WEBrick::HTTPUtils.escape_path(req.path + "/")
-          if req.query_string && req.query_string.size > 0
-            location << "?" << req.query_string
-          end
-          res.set_redirect(HTTPStatus::MovedPermanently, location)
-        end
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgi_runner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgi_runner.rb
deleted file mode 100644
index 006abd4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgi_runner.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# cgi_runner.rb -- CGI launcher.
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $
-
-def sysread(io, size)
-  buf = ""
-  while size > 0
-    tmp = io.sysread(size)
-    buf << tmp
-    size -= tmp.size
-  end
-  return buf
-end
-
-STDIN.binmode
-
-buf = ""
-len = sysread(STDIN, 8).to_i
-out = sysread(STDIN, len)
-STDOUT.reopen(open(out, "w"))
-
-len = sysread(STDIN, 8).to_i
-err = sysread(STDIN, len)
-STDERR.reopen(open(err, "w"))
-
-len  = sysread(STDIN, 8).to_i
-dump = sysread(STDIN, len)
-hash = Marshal.restore(dump)
-ENV.keys.each{|name| ENV.delete(name) }
-hash.each{|k, v| ENV[k] = v if v }
-
-dir = File::dirname(ENV["SCRIPT_FILENAME"])
-Dir::chdir dir
-
-if interpreter = ARGV[0]
-  argv = ARGV.dup
-  argv << ENV["SCRIPT_FILENAME"]
-  exec(*argv)
-  # NOTREACHED
-end
-exec ENV["SCRIPT_FILENAME"]
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgihandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgihandler.rb
deleted file mode 100644
index a35b59e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/cgihandler.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-# 
-# cgihandler.rb -- CGIHandler Class
-#       
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#   
-# $IPR: cgihandler.rb,v 1.27 2003/03/21 19:56:01 gotoyuzo Exp $
-
-require 'rbconfig'
-require 'tempfile'
-require 'webrick/config'
-require 'webrick/httpservlet/abstract'
-
-module WEBrick
-  module HTTPServlet
-
-    class CGIHandler < AbstractServlet
-      Ruby = File::join(::Config::CONFIG['bindir'],
-                        ::Config::CONFIG['ruby_install_name'])
-      Ruby << ::Config::CONFIG['EXEEXT']
-      CGIRunner = "\"#{Ruby}\" \"#{Config::LIBDIR}/httpservlet/cgi_runner.rb\""
-
-      def initialize(server, name)
-        super
-        @script_filename = name
-        @tempdir = server[:TempDir]
-        @cgicmd = "#{CGIRunner} #{server[:CGIInterpreter]}"
-      end
-
-      def do_GET(req, res)
-        data = nil
-        status = -1
-
-        cgi_in = IO::popen(@cgicmd, "wb")
-        cgi_out = Tempfile.new("webrick.cgiout.", @tempdir)
-        cgi_err = Tempfile.new("webrick.cgierr.", @tempdir)
-        begin
-          cgi_in.sync = true
-          meta = req.meta_vars
-          meta["SCRIPT_FILENAME"] = @script_filename
-          meta["PATH"] = @config[:CGIPathEnv]
-          if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM
-            meta["SystemRoot"] = ENV["SystemRoot"]
-          end
-          dump = Marshal.dump(meta)
-
-          cgi_in.write("%8d" % cgi_out.path.size)
-          cgi_in.write(cgi_out.path)
-          cgi_in.write("%8d" % cgi_err.path.size)
-          cgi_in.write(cgi_err.path)
-          cgi_in.write("%8d" % dump.size)
-          cgi_in.write(dump)
-
-          if req.body and req.body.size > 0
-            cgi_in.write(req.body)
-          end
-        ensure
-          cgi_in.close
-          status = $?.exitstatus
-          sleep 0.1 if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM
-          data = cgi_out.read
-          cgi_out.close(true)
-          if errmsg = cgi_err.read
-            if errmsg.size > 0
-              @logger.error("CGIHandler: #{@script_filename}:\n" + errmsg)
-            end
-          end 
-          cgi_err.close(true)
-        end
-        
-        if status != 0
-          @logger.error("CGIHandler: #{@script_filename} exit with #{status}")
-        end
-
-        data = "" unless data
-        raw_header, body = data.split(/^[\xd\xa]+/on, 2) 
-        raise HTTPStatus::InternalServerError,
-          "Premature end of script headers: #{@script_filename}" if body.nil?
-
-        begin
-          header = HTTPUtils::parse_header(raw_header)
-          if /^(\d+)/ =~ header['status'][0]
-            res.status = $1.to_i
-            header.delete('status')
-          end
-          if header.has_key?('set-cookie')
-            header['set-cookie'].each{|k|
-              res.cookies << Cookie.parse_set_cookie(k)
-            }
-            header.delete('set-cookie')
-          end
-          header.each{|key, val| res[key] = val.join(", ") }
-        rescue => ex
-          raise HTTPStatus::InternalServerError, ex.message
-        end
-        res.body = body
-      end
-      alias do_POST do_GET
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/erbhandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/erbhandler.rb
deleted file mode 100644
index b9d5e65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/erbhandler.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# 
-# erbhandler.rb -- ERBHandler Class
-# 
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-# 
-# $IPR: erbhandler.rb,v 1.25 2003/02/24 19:25:31 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract.rb'
-
-require 'erb'
-
-module WEBrick
-  module HTTPServlet
-
-    class ERBHandler < AbstractServlet
-      def initialize(server, name)
-        super
-        @script_filename = name
-      end
-
-      def do_GET(req, res)
-        unless defined?(ERB)
-          @logger.warn "#{self.class}: ERB not defined."
-          raise HTTPStatus::Forbidden, "ERBHandler cannot work."
-        end
-        begin
-          data = open(@script_filename){|io| io.read }
-          res.body = evaluate(ERB.new(data), req, res)
-          res['content-type'] =
-            HTTPUtils::mime_type(@script_filename, @config[:MimeTypes])
-        rescue StandardError => ex
-          raise
-        rescue Exception => ex
-          @logger.error(ex)
-          raise HTTPStatus::InternalServerError, ex.message
-        end
-      end
-
-      alias do_POST do_GET
-
-      private
-      def evaluate(erb, servlet_request, servlet_response)
-        Module.new.module_eval{
-          meta_vars = servlet_request.meta_vars
-          query = servlet_request.query
-          erb.result(binding)
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/filehandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/filehandler.rb
deleted file mode 100644
index 24f59d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/filehandler.rb
+++ /dev/null
@@ -1,435 +0,0 @@
-#
-# filehandler.rb -- FileHandler Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: filehandler.rb,v 1.44 2003/06/07 01:34:51 gotoyuzo Exp $
-
-require 'thread'
-require 'time'
-
-require 'webrick/htmlutils'
-require 'webrick/httputils'
-require 'webrick/httpstatus'
-
-module WEBrick
-  module HTTPServlet
-
-    class DefaultFileHandler < AbstractServlet
-      def initialize(server, local_path)
-        super
-        @local_path = local_path
-      end
-
-      def do_GET(req, res)
-        st = File::stat(@local_path)
-        mtime = st.mtime
-        res['etag'] = sprintf("%x-%x-%x", st.ino, st.size, st.mtime.to_i)
-
-        if not_modified?(req, res, mtime, res['etag'])
-          res.body = ''
-          raise HTTPStatus::NotModified
-        elsif req['range'] 
-          make_partial_content(req, res, @local_path, st.size)
-          raise HTTPStatus::PartialContent
-        else
-          mtype = HTTPUtils::mime_type(@local_path, @config[:MimeTypes])
-          res['content-type'] = mtype
-          res['content-length'] = st.size
-          res['last-modified'] = mtime.httpdate
-          res.body = open(@local_path, "rb")
-        end
-      end
-
-      def not_modified?(req, res, mtime, etag)
-        if ir = req['if-range']
-          begin
-            if Time.httpdate(ir) >= mtime
-              return true
-            end
-          rescue
-            if HTTPUtils::split_header_value(ir).member?(res['etag'])
-              return true
-            end
-          end
-        end
-
-        if (ims = req['if-modified-since']) && Time.parse(ims) >= mtime
-          return true
-        end
-
-        if (inm = req['if-none-match']) &&
-           HTTPUtils::split_header_value(inm).member?(res['etag'])
-          return true
-        end
-
-        return false
-      end
-
-      def make_partial_content(req, res, filename, filesize)
-        mtype = HTTPUtils::mime_type(filename, @config[:MimeTypes])
-        unless ranges = HTTPUtils::parse_range_header(req['range'])
-          raise HTTPStatus::BadRequest,
-            "Unrecognized range-spec: \"#{req['range']}\""
-        end
-        open(filename, "rb"){|io|
-          if ranges.size > 1
-            time = Time.now
-            boundary = "#{time.sec}_#{time.usec}_#{Process::pid}"
-            body = ''
-            ranges.each{|range|
-              first, last = prepare_range(range, filesize)
-              next if first < 0
-              io.pos = first
-              content = io.read(last-first+1)
-              body << "--" << boundary << CRLF
-              body << "Content-Type: #{mtype}" << CRLF
-              body << "Content-Range: #{first}-#{last}/#{filesize}" << CRLF
-              body << CRLF
-              body << content
-              body << CRLF
-            }
-            raise HTTPStatus::RequestRangeNotSatisfiable if body.empty?
-            body << "--" << boundary << "--" << CRLF
-            res["content-type"] = "multipart/byteranges; boundary=#{boundary}"
-            res.body = body
-          elsif range = ranges[0]
-            first, last = prepare_range(range, filesize)
-            raise HTTPStatus::RequestRangeNotSatisfiable if first < 0
-            if last == filesize - 1
-              content = io.dup
-              content.pos = first
-            else
-              io.pos = first
-              content = io.read(last-first+1)
-            end
-            res['content-type'] = mtype
-            res['content-range'] = "#{first}-#{last}/#{filesize}"
-            res['content-length'] = last - first + 1
-            res.body = content
-          else
-            raise HTTPStatus::BadRequest
-          end
-        }
-      end
-
-      def prepare_range(range, filesize)
-        first = range.first < 0 ? filesize + range.first : range.first
-        return -1, -1 if first < 0 || first >= filesize
-        last = range.last < 0 ? filesize + range.last : range.last
-        last = filesize - 1 if last >= filesize
-        return first, last
-      end
-    end
-
-    class FileHandler < AbstractServlet
-      HandlerTable = Hash.new
-
-      def self.add_handler(suffix, handler)
-        HandlerTable[suffix] = handler
-      end
-
-      def self.remove_handler(suffix)
-        HandlerTable.delete(suffix)
-      end
-
-      def initialize(server, root, options={}, default=Config::FileHandler)
-        @config = server.config
-        @logger = @config[:Logger]
-        @root = File.expand_path(root)
-        if options == true || options == false
-          options = { :FancyIndexing => options }
-        end
-        @options = default.dup.update(options)
-      end
-
-      def service(req, res)
-        # if this class is mounted on "/" and /~username is requested.
-        # we're going to override path informations before invoking service.
-        if defined?(Etc) && @options[:UserDir] && req.script_name.empty?
-          if %r|^(/~([^/]+))| =~ req.path_info
-            script_name, user = $1, $2
-            path_info = $'
-            begin
-              passwd = Etc::getpwnam(user)
-              @root = File::join(passwd.dir, @options[:UserDir])
-              req.script_name = script_name
-              req.path_info = path_info
-            rescue
-              @logger.debug "#{self.class}#do_GET: getpwnam(#{user}) failed"
-            end
-          end
-        end
-        prevent_directory_traversal(req, res)
-        super(req, res)
-      end
-
-      def do_GET(req, res)
-        unless exec_handler(req, res)
-          set_dir_list(req, res)
-        end
-      end
-
-      def do_POST(req, res)
-        unless exec_handler(req, res)
-          raise HTTPStatus::NotFound, "`#{req.path}' not found."
-        end
-      end
-
-      def do_OPTIONS(req, res)
-        unless exec_handler(req, res)
-          super(req, res)
-        end
-      end
-
-      # ToDo
-      # RFC2518: HTTP Extensions for Distributed Authoring -- WEBDAV
-      #
-      # PROPFIND PROPPATCH MKCOL DELETE PUT COPY MOVE
-      # LOCK UNLOCK
-
-      # RFC3253: Versioning Extensions to WebDAV
-      #          (Web Distributed Authoring and Versioning)
-      #
-      # VERSION-CONTROL REPORT CHECKOUT CHECK_IN UNCHECKOUT
-      # MKWORKSPACE UPDATE LABEL MERGE ACTIVITY
-
-      private
-
-      def trailing_pathsep?(path)
-        # check for trailing path separator:
-        #   File.dirname("/aaaa/bbbb/")      #=> "/aaaa")
-        #   File.dirname("/aaaa/bbbb/x")     #=> "/aaaa/bbbb")
-        #   File.dirname("/aaaa/bbbb")       #=> "/aaaa")
-        #   File.dirname("/aaaa/bbbbx")      #=> "/aaaa")
-        return File.dirname(path) != File.dirname(path+"x")
-      end
-
-      def prevent_directory_traversal(req, res)
-        # Preventing directory traversal on Windows platforms;
-        # Backslashes (0x5c) in path_info are not interpreted as special
-        # character in URI notation. So the value of path_info should be
-        # normalize before accessing to the filesystem.
-
-        if trailing_pathsep?(req.path_info)
-          # File.expand_path removes the trailing path separator.
-          # Adding a character is a workaround to save it.
-          #  File.expand_path("/aaa/")        #=> "/aaa"
-          #  File.expand_path("/aaa/" + "x")  #=> "/aaa/x"
-          expanded = File.expand_path(req.path_info + "x")
-          expanded.chop!  # remove trailing "x"
-        else
-          expanded = File.expand_path(req.path_info)
-        end
-        req.path_info = expanded
-      end
-
-      def exec_handler(req, res)
-        raise HTTPStatus::NotFound, "`#{req.path}' not found" unless @root
-        if set_filename(req, res)
-          handler = get_handler(req, res)
-          call_callback(:HandlerCallback, req, res)
-          h = handler.get_instance(@config, res.filename)
-          h.service(req, res)
-          return true
-        end
-        call_callback(:HandlerCallback, req, res)
-        return false
-      end
-
-      def get_handler(req, res)
-        suffix1 = (/\.(\w+)\z/ =~ res.filename) && $1.downcase
-        if /\.(\w+)\.([\w\-]+)\z/ =~ res.filename
-          if @options[:AcceptableLanguages].include?($2.downcase)
-            suffix2 = $1.downcase
-          end
-        end
-        handler_table = @options[:HandlerTable]
-        return handler_table[suffix1] || handler_table[suffix2] ||
-               HandlerTable[suffix1] || HandlerTable[suffix2] ||
-               DefaultFileHandler
-      end
-
-      def set_filename(req, res)
-        res.filename = @root.dup
-        path_info = req.path_info.scan(%r|/[^/]*|)
-
-        path_info.unshift("")  # dummy for checking @root dir
-        while base = path_info.first
-          break if base == "/"
-          break unless File.directory?(File.expand_path(res.filename + base))
-          shift_path_info(req, res, path_info)
-          call_callback(:DirectoryCallback, req, res)
-        end
-
-        if base = path_info.first
-          if base == "/"
-            if file = search_index_file(req, res)
-              shift_path_info(req, res, path_info, file)
-              call_callback(:FileCallback, req, res)
-              return true
-            end
-            shift_path_info(req, res, path_info)
-          elsif file = search_file(req, res, base)
-            shift_path_info(req, res, path_info, file)
-            call_callback(:FileCallback, req, res)
-            return true
-          else
-            raise HTTPStatus::NotFound, "`#{req.path}' not found."
-          end
-        end
-
-        return false
-      end
-
-      def check_filename(req, res, name)
-        if nondisclosure_name?(name) || windows_ambiguous_name?(name)
-          @logger.warn("the request refers nondisclosure name `#{name}'.")
-          raise HTTPStatus::NotFound, "`#{req.path}' not found."
-        end
-      end
-
-      def shift_path_info(req, res, path_info, base=nil)
-        tmp = path_info.shift
-        base = base || tmp
-        req.path_info = path_info.join
-        req.script_name << base
-        res.filename = File.expand_path(res.filename + base)
-        check_filename(req, res, File.basename(res.filename))
-      end
-
-      def search_index_file(req, res)
-        @config[:DirectoryIndex].each{|index|
-          if file = search_file(req, res, "/"+index)
-            return file
-          end
-        }
-        return nil
-      end
-
-      def search_file(req, res, basename)
-        langs = @options[:AcceptableLanguages]
-        path = res.filename + basename
-        if File.file?(path)
-          return basename
-        elsif langs.size > 0
-          req.accept_language.each{|lang|
-            path_with_lang = path + ".#{lang}"
-            if langs.member?(lang) && File.file?(path_with_lang)
-              return basename + ".#{lang}"
-            end
-          }
-          (langs - req.accept_language).each{|lang|
-            path_with_lang = path + ".#{lang}"
-            if File.file?(path_with_lang)
-              return basename + ".#{lang}"
-            end
-          }
-        end
-        return nil
-      end
-
-      def call_callback(callback_name, req, res)
-        if cb = @options[callback_name]
-          cb.call(req, res)
-        end
-      end
-
-      def windows_ambiguous_name?(name)
-        return true if /[. ]+\z/ =~ name
-        return true if /::\$DATA\z/ =~ name
-        return false
-      end
-
-      def nondisclosure_name?(name)
-        @options[:NondisclosureName].each{|pattern|
-          if File.fnmatch(pattern, name, File::FNM_CASEFOLD)
-            return true
-          end
-        }
-        return false
-      end
-
-      def set_dir_list(req, res)
-        redirect_to_directory_uri(req, res)
-        unless @options[:FancyIndexing]
-          raise HTTPStatus::Forbidden, "no access permission to `#{req.path}'"
-        end
-        local_path = res.filename
-        list = Dir::entries(local_path).collect{|name|
-          next if name == "." || name == ".."
-          next if nondisclosure_name?(name)
-          next if windows_ambiguous_name?(name)
-          st = (File::stat(File.join(local_path, name)) rescue nil)
-          if st.nil?
-            [ name, nil, -1 ]
-          elsif st.directory?
-            [ name + "/", st.mtime, -1 ]
-          else
-            [ name, st.mtime, st.size ]
-          end
-        }
-        list.compact!
-
-        if    d0 = req.query["N"]; idx = 0
-        elsif d0 = req.query["M"]; idx = 1
-        elsif d0 = req.query["S"]; idx = 2
-        else  d0 = "A"           ; idx = 0
-        end
-        d1 = (d0 == "A") ? "D" : "A"
-
-        if d0 == "A"
-          list.sort!{|a,b| a[idx] <=> b[idx] }
-        else
-          list.sort!{|a,b| b[idx] <=> a[idx] }
-        end
-
-        res['content-type'] = "text/html"
-
-        res.body = <<-_end_of_html_
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-  <HEAD><TITLE>Index of #{HTMLUtils::escape(req.path)}</TITLE></HEAD>
-  <BODY>
-    <H1>Index of #{HTMLUtils::escape(req.path)}</H1>
-        _end_of_html_
-
-        res.body << "<PRE>\n"
-        res.body << " <A HREF=\"?N=#{d1}\">Name</A>                          "
-        res.body << "<A HREF=\"?M=#{d1}\">Last modified</A>         "
-        res.body << "<A HREF=\"?S=#{d1}\">Size</A>\n"
-        res.body << "<HR>\n"
-       
-        list.unshift [ "..", File::mtime(local_path+"/.."), -1 ]
-        list.each{ |name, time, size|
-          if name == ".."
-            dname = "Parent Directory"
-          elsif name.size > 25
-            dname = name.sub(/^(.{23})(.*)/){ $1 + ".." }
-          else
-            dname = name
-          end
-          s =  " <A HREF=\"#{HTTPUtils::escape(name)}\">#{dname}</A>"
-          s << " " * (30 - dname.size)
-          s << (time ? time.strftime("%Y/%m/%d %H:%M      ") : " " * 22)
-          s << (size >= 0 ? size.to_s : "-") << "\n"
-          res.body << s
-        }
-        res.body << "</PRE><HR>"
-
-        res.body << <<-_end_of_html_    
-    <ADDRESS>
-     #{HTMLUtils::escape(@config[:ServerSoftware])}<BR>
-     at #{req.host}:#{req.port}
-    </ADDRESS>
-  </BODY>
-</HTML>
-        _end_of_html_
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/prochandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/prochandler.rb
deleted file mode 100644
index 783cb27..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpservlet/prochandler.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# 
-# prochandler.rb -- ProcHandler Class
-#       
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#   
-# $IPR: prochandler.rb,v 1.7 2002/09/21 12:23:42 gotoyuzo Exp $
-
-require 'webrick/httpservlet/abstract.rb'
-
-module WEBrick
-  module HTTPServlet
-
-    class ProcHandler < AbstractServlet
-      def get_instance(server, *options)
-        self
-      end  
-
-      def initialize(proc)
-        @proc = proc
-      end
-
-      def do_GET(request, response)
-        @proc.call(request, response)
-      end
-
-      alias do_POST do_GET
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpstatus.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpstatus.rb
deleted file mode 100644
index 0b22c99..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpstatus.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# httpstatus.rb -- HTTPStatus Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpstatus.rb,v 1.11 2003/03/24 20:18:55 gotoyuzo Exp $
-
-module WEBrick
-
-  module HTTPStatus
-
-    class Status      < StandardError; end
-    class Info        < Status; end
-    class Success     < Status; end
-    class Redirect    < Status; end
-    class Error       < Status; end
-    class ClientError < Error; end
-    class ServerError < Error; end
-    
-    class EOFError < StandardError; end
-
-    StatusMessage = {
-      100, 'Continue',
-      101, 'Switching Protocols',
-      200, 'OK',
-      201, 'Created',
-      202, 'Accepted',
-      203, 'Non-Authoritative Information',
-      204, 'No Content',
-      205, 'Reset Content',
-      206, 'Partial Content',
-      300, 'Multiple Choices',
-      301, 'Moved Permanently',
-      302, 'Found',
-      303, 'See Other',
-      304, 'Not Modified',
-      305, 'Use Proxy',
-      307, 'Temporary Redirect',
-      400, 'Bad Request',
-      401, 'Unauthorized',
-      402, 'Payment Required',
-      403, 'Forbidden',
-      404, 'Not Found',
-      405, 'Method Not Allowed',
-      406, 'Not Acceptable',
-      407, 'Proxy Authentication Required',
-      408, 'Request Timeout',
-      409, 'Conflict',
-      410, 'Gone',
-      411, 'Length Required',
-      412, 'Precondition Failed',
-      413, 'Request Entity Too Large',
-      414, 'Request-URI Too Large',
-      415, 'Unsupported Media Type',
-      416, 'Request Range Not Satisfiable',
-      417, 'Expectation Failed',
-      500, 'Internal Server Error',
-      501, 'Not Implemented',
-      502, 'Bad Gateway',
-      503, 'Service Unavailable',
-      504, 'Gateway Timeout',
-      505, 'HTTP Version Not Supported'
-    }
-
-    CodeToError = {}
-
-    StatusMessage.each{|code, message|
-      var_name = message.gsub(/[ \-]/,'_').upcase
-      err_name = message.gsub(/[ \-]/,'')
-
-      case code
-      when 100...200; parent = Info
-      when 200...300; parent = Success
-      when 300...400; parent = Redirect
-      when 400...500; parent = ClientError
-      when 500...600; parent = ServerError
-      end
-
-      eval %-
-        RC_#{var_name} = #{code}
-        class #{err_name} < #{parent}
-          def self.code() RC_#{var_name} end
-          def self.reason_phrase() StatusMessage[code] end
-          def code() self::class::code end 
-          def reason_phrase() self::class::reason_phrase end
-          alias to_i code
-        end
-      -
-
-      CodeToError[code] = const_get(err_name)
-    }
-
-    def reason_phrase(code)
-      StatusMessage[code.to_i]
-    end
-    def info?(code)
-      code.to_i >= 100 and code.to_i < 200
-    end
-    def success?(code)
-      code.to_i >= 200 and code.to_i < 300
-    end
-    def redirect?(code)
-      code.to_i >= 300 and code.to_i < 400
-    end
-    def error?(code)
-      code.to_i >= 400 and code.to_i < 600
-    end
-    def client_error?(code)
-      code.to_i >= 400 and code.to_i < 500
-    end
-    def server_error?(code)
-      code.to_i >= 500 and code.to_i < 600
-    end
-
-    def self.[](code)
-      CodeToError[code]
-    end
-
-    module_function :reason_phrase
-    module_function :info?, :success?, :redirect?, :error?
-    module_function :client_error?, :server_error?
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httputils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httputils.rb
deleted file mode 100644
index 976d3e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httputils.rb
+++ /dev/null
@@ -1,391 +0,0 @@
-#
-# httputils.rb -- HTTPUtils Module
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httputils.rb,v 1.34 2003/06/05 21:34:08 gotoyuzo Exp $
-
-require 'socket'
-require 'tempfile'
-
-module WEBrick
-  CR   = "\x0d"
-  LF   = "\x0a"
-  CRLF = "\x0d\x0a"
-
-  module HTTPUtils
-
-    def normalize_path(path)
-      raise "abnormal path `#{path}'" if path[0] != ?/
-      ret = path.dup
-
-      ret.gsub!(%r{/+}o, '/')                    # //      => /
-      while ret.sub!(%r'/\.(?:/|\Z)', '/'); end  # /.      => /
-      while ret.sub!(%r'/(?!\.\./)[^/]+/\.\.(?:/|\Z)', '/'); end # /foo/.. => /foo
-
-      raise "abnormal path `#{path}'" if %r{/\.\.(/|\Z)} =~ ret
-      ret
-    end
-    module_function :normalize_path
-
-    #####
-
-    DefaultMimeTypes = {
-      "ai"    => "application/postscript",
-      "asc"   => "text/plain",
-      "avi"   => "video/x-msvideo",
-      "bin"   => "application/octet-stream",
-      "bmp"   => "image/bmp",
-      "class" => "application/octet-stream",
-      "cer"   => "application/pkix-cert",
-      "crl"   => "application/pkix-crl",
-      "crt"   => "application/x-x509-ca-cert",
-     #"crl"   => "application/x-pkcs7-crl",
-      "css"   => "text/css",
-      "dms"   => "application/octet-stream",
-      "doc"   => "application/msword",
-      "dvi"   => "application/x-dvi",
-      "eps"   => "application/postscript",
-      "etx"   => "text/x-setext",
-      "exe"   => "application/octet-stream",
-      "gif"   => "image/gif",
-      "htm"   => "text/html",
-      "html"  => "text/html",
-      "jpe"   => "image/jpeg",
-      "jpeg"  => "image/jpeg",
-      "jpg"   => "image/jpeg",
-      "lha"   => "application/octet-stream",
-      "lzh"   => "application/octet-stream",
-      "mov"   => "video/quicktime",
-      "mpe"   => "video/mpeg",
-      "mpeg"  => "video/mpeg",
-      "mpg"   => "video/mpeg",
-      "pbm"   => "image/x-portable-bitmap",
-      "pdf"   => "application/pdf",
-      "pgm"   => "image/x-portable-graymap",
-      "png"   => "image/png",
-      "pnm"   => "image/x-portable-anymap",
-      "ppm"   => "image/x-portable-pixmap",
-      "ppt"   => "application/vnd.ms-powerpoint",
-      "ps"    => "application/postscript",
-      "qt"    => "video/quicktime",
-      "ras"   => "image/x-cmu-raster",
-      "rb"    => "text/plain",
-      "rd"    => "text/plain",
-      "rtf"   => "application/rtf",
-      "sgm"   => "text/sgml",
-      "sgml"  => "text/sgml",
-      "tif"   => "image/tiff",
-      "tiff"  => "image/tiff",
-      "txt"   => "text/plain",
-      "xbm"   => "image/x-xbitmap",
-      "xls"   => "application/vnd.ms-excel",
-      "xml"   => "text/xml",
-      "xpm"   => "image/x-xpixmap",
-      "xwd"   => "image/x-xwindowdump",
-      "zip"   => "application/zip",
-    }
-
-    # Load Apache compatible mime.types file.
-    def load_mime_types(file)
-      open(file){ |io|
-        hash = Hash.new
-        io.each{ |line|
-          next if /^#/ =~ line
-          line.chomp!
-          mimetype, ext0 = line.split(/\s+/, 2)
-          next unless ext0   
-          next if ext0.empty?
-          ext0.split(/\s+/).each{ |ext| hash[ext] = mimetype }
-        }
-        hash
-      }
-    end
-    module_function :load_mime_types
-
-    def mime_type(filename, mime_tab)
-      suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase)
-      suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase)
-      mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream"
-    end
-    module_function :mime_type
-
-    #####
-
-    def parse_header(raw)
-      header = Hash.new([].freeze)
-      field = nil
-      raw.each{|line|
-        case line
-        when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om
-          field, value = $1, $2
-          field.downcase!
-          header[field] = [] unless header.has_key?(field)
-          header[field] << value
-        when /^\s+(.*?)\s*\z/om
-          value = $1
-          unless field
-            raise "bad header '#{line.inspect}'."
-          end
-          header[field][-1] << " " << value
-        else
-          raise "bad header '#{line.inspect}'."
-        end
-      }
-      header.each{|key, values|
-        values.each{|value|
-          value.strip!
-          value.gsub!(/\s+/, " ")
-        }
-      }
-      header
-    end
-    module_function :parse_header
-
-    def split_header_value(str)
-      str.scan(%r'\G((?:"(?:\\.|[^"])+?"|[^",]+)+)
-                    (?:,\s*|\Z)'xn).flatten
-    end
-    module_function :split_header_value
-
-    def parse_range_header(ranges_specifier)
-      if /^bytes=(.*)/ =~ ranges_specifier
-        byte_range_set = split_header_value($1)
-        byte_range_set.collect{|range_spec|
-          case range_spec
-          when /^(\d+)-(\d+)/ then $1.to_i .. $2.to_i
-          when /^(\d+)-/      then $1.to_i .. -1
-          when /^-(\d+)/      then -($1.to_i) .. -1
-          else return nil
-          end
-        }
-      end
-    end
-    module_function :parse_range_header
-
-    def parse_qvalues(value)
-      tmp = []
-      if value
-        parts = value.split(/,\s*/)
-        parts.each {|part|
-          if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
-            val = m[1]
-            q = (m[2] or 1).to_f
-            tmp.push([val, q])
-          end
-        }
-        tmp = tmp.sort_by{|val, q| -q}
-        tmp.collect!{|val, q| val}
-      end
-      return tmp
-    end
-    module_function :parse_qvalues
-
-    #####
-
-    def dequote(str)
-      ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup
-      ret.gsub!(/\\(.)/, "\\1")
-      ret
-    end
-    module_function :dequote
-
-    def quote(str)
-      '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
-    end
-    module_function :quote
-
-    #####
-
-    class FormData < String
-      EmptyRawHeader = [].freeze
-      EmptyHeader = {}.freeze
-
-      attr_accessor :name, :filename, :next_data
-      protected :next_data
-
-      def initialize(*args)
-        @name = @filename = @next_data = nil
-        if args.empty?
-          @raw_header = []
-          @header = nil
-          super("")
-        else
-          @raw_header = EmptyRawHeader
-          @header = EmptyHeader 
-          super(args.shift)
-          unless args.empty?
-            @next_data = self.class.new(*args)
-          end
-        end
-      end
-
-      def [](*key)
-        begin
-          @header[key[0].downcase].join(", ")
-        rescue StandardError, NameError
-          super
-        end
-      end
-
-      def <<(str)
-        if @header
-          super
-        elsif str == CRLF
-          @header = HTTPUtils::parse_header(@raw_header)
-          if cd = self['content-disposition']
-            if /\s+name="(.*?)"/ =~ cd then @name = $1 end
-            if /\s+filename="(.*?)"/ =~ cd then @filename = $1 end
-          end
-        else
-          @raw_header << str
-        end
-        self
-      end
-
-      def append_data(data)
-        tmp = self
-        while tmp
-          unless tmp.next_data 
-            tmp.next_data = data
-            break
-          end
-          tmp = tmp.next_data
-        end
-        self
-      end
-
-      def each_data
-        tmp = self
-        while tmp
-          next_data = tmp.next_data
-          yield(tmp)
-          tmp = next_data
-        end
-      end
-
-      def list
-        ret = []
-        each_data{|data|
-          ret << data.to_s
-        }
-        ret
-      end
-
-      alias :to_ary :list
-
-      def to_s
-        String.new(self)
-      end
-    end
-
-    def parse_query(str)
-      query = Hash.new
-      if str
-        str.split(/[&;]/).each{|x|
-          next if x.empty? 
-          key, val = x.split(/=/,2)
-          key = unescape_form(key)
-          val = unescape_form(val.to_s)
-          val = FormData.new(val)
-          val.name = key
-          if query.has_key?(key)
-            query[key].append_data(val)
-            next
-          end
-          query[key] = val
-        }
-      end
-      query
-    end
-    module_function :parse_query
-
-    def parse_form_data(io, boundary)
-      boundary_regexp = /\A--#{boundary}(--)?#{CRLF}\z/
-      form_data = Hash.new
-      return form_data unless io
-      data = nil
-      io.each{|line|
-        if boundary_regexp =~ line
-          if data
-            data.chop!
-            key = data.name
-            if form_data.has_key?(key)
-              form_data[key].append_data(data)
-            else
-              form_data[key] = data 
-            end
-          end
-          data = FormData.new
-          next
-        else
-          if data
-            data << line
-          end
-        end
-      }
-      return form_data
-    end
-    module_function :parse_form_data
-
-    #####
-
-    reserved = ';/?:@&=+$,'
-    num      = '0123456789'
-    lowalpha = 'abcdefghijklmnopqrstuvwxyz'
-    upalpha  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-    mark     = '-_.!~*\'()'
-    unreserved = num + lowalpha + upalpha + mark
-    control  = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f"
-    space    = " "
-    delims   = '<>#%"'
-    unwise   = '{}|\\^[]`'
-    nonascii = (0x80..0xff).collect{|c| c.chr }.join
-
-    module_function
-
-    def _make_regex(str) /([#{Regexp.escape(str)}])/n end
-    def _make_regex!(str) /([^#{Regexp.escape(str)}])/n end
-    def _escape(str, regex) str.gsub(regex){ "%%%02X" % $1[0] } end
-    def _unescape(str, regex) str.gsub(regex){ $1.hex.chr } end
-
-    UNESCAPED = _make_regex(control+space+delims+unwise+nonascii)
-    UNESCAPED_FORM = _make_regex(reserved+control+delims+unwise+nonascii)
-    NONASCII  = _make_regex(nonascii)
-    ESCAPED   = /%([0-9a-fA-F]{2})/
-    UNESCAPED_PCHAR = _make_regex!(unreserved+":@&=+$,")
-
-    def escape(str)
-      _escape(str, UNESCAPED)
-    end
-
-    def unescape(str)
-      _unescape(str, ESCAPED)
-    end
-
-    def escape_form(str)
-      ret = _escape(str, UNESCAPED_FORM)
-      ret.gsub!(/ /, "+")
-      ret
-    end
-
-    def unescape_form(str)
-      _unescape(str.gsub(/\+/, " "), ESCAPED)
-    end
-
-    def escape_path(str)
-      result = ""
-      str.scan(%r{/([^/]*)}).each{|i|
-        result << "/" << _escape(i[0], UNESCAPED_PCHAR)
-      }
-      return result
-    end
-
-    def escape8bit(str)
-      _escape(str, NONASCII)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpversion.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpversion.rb
deleted file mode 100644
index 86907a2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/httpversion.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# HTTPVersion.rb -- presentation of HTTP version
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $
-
-module WEBrick
-  class HTTPVersion
-    include Comparable
-
-    attr_accessor :major, :minor
-
-    def self.convert(version)
-      version.is_a?(self) ? version : new(version)
-    end
-
-    def initialize(version)
-      case version
-      when HTTPVersion
-        @major, @minor = version.major, version.minor
-      when String
-        if /^(\d+)\.(\d+)$/ =~ version
-          @major, @minor = $1.to_i, $2.to_i
-        end
-      end
-      if @major.nil? || @minor.nil?
-        raise ArgumentError,
-          format("cannot convert %s into %s", version.class, self.class)
-      end
-    end
-
-    def <=>(other)
-      unless other.is_a?(self.class)
-        other = self.class.new(other)
-      end
-      if (ret = @major <=> other.major) == 0
-        return @minor <=> other.minor
-      end
-      return ret
-    end
-
-    def to_s
-      format("%d.%d", @major, @minor)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/log.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/log.rb
deleted file mode 100644
index 5d4fd0a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/log.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# log.rb -- Log Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: log.rb,v 1.26 2002/10/06 17:06:10 gotoyuzo Exp $
-
-module WEBrick
-  class BasicLog
-    # log-level constant
-    FATAL, ERROR, WARN, INFO, DEBUG = 1, 2, 3, 4, 5
-
-    attr_accessor :level
-
-    def initialize(log_file=nil, level=nil)
-      @level = level || INFO
-      case log_file
-      when String
-        @log = open(log_file, "a+")
-        @log.sync = true
-        @opened = true
-      when NilClass
-        @log = $stderr
-      else
-        @log = log_file  # requires "<<". (see BasicLog#log)
-      end
-    end
-
-    def close
-      @log.close if @opened
-      @log = nil
-    end
-
-    def log(level, data)
-      if @log && level <= @level
-        data += "\n" if /\n\Z/ !~ data
-        @log << data
-      end
-    end
-
-    def <<(obj)
-      log(INFO, obj.to_s)
-    end
-
-    def fatal(msg) log(FATAL, "FATAL " << format(msg)); end
-    def error(msg) log(ERROR, "ERROR " << format(msg)); end
-    def warn(msg)  log(WARN,  "WARN  " << format(msg)); end
-    def info(msg)  log(INFO,  "INFO  " << format(msg)); end
-    def debug(msg) log(DEBUG, "DEBUG " << format(msg)); end
-
-    def fatal?; @level >= FATAL; end
-    def error?; @level >= ERROR; end
-    def warn?;  @level >= WARN; end
-    def info?;  @level >= INFO; end
-    def debug?; @level >= DEBUG; end
-
-    private
-
-    def format(arg)
-      str = if arg.is_a?(Exception)
-        "#{arg.class}: #{arg.message}\n\t" <<
-        arg.backtrace.join("\n\t") << "\n"
-      elsif arg.respond_to?(:to_str)
-        arg.to_str
-      else
-        arg.inspect
-      end
-    end
-  end
-
-  class Log < BasicLog
-    attr_accessor :time_format 
-
-    def initialize(log_file=nil, level=nil)
-      super(log_file, level)
-      @time_format = "[%Y-%m-%d %H:%M:%S]"
-    end
-
-    def log(level, data)
-      tmp = Time.now.strftime(@time_format)
-      tmp << " " << data
-      super(level, tmp)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/server.rb
deleted file mode 100644
index 16dbd46..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/server.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-#
-# server.rb -- GenericServer Class
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: server.rb,v 1.62 2003/07/22 19:20:43 gotoyuzo Exp $
-
-require 'thread'
-require 'socket'
-require 'timeout'
-require 'webrick/config'
-require 'webrick/log'
-
-module WEBrick
-
-  class ServerError < StandardError; end
-
-  class SimpleServer
-    def SimpleServer.start
-      yield
-    end
-  end
-
-  class Daemon
-    def Daemon.start
-      exit!(0) if fork
-      Process::setsid
-      exit!(0) if fork
-      Dir::chdir("/")
-      File::umask(0)
-      STDIN.reopen("/dev/null")
-      STDOUT.reopen("/dev/null", "w")
-      STDERR.reopen("/dev/null", "w")
-      yield if block_given?
-    end
-  end
-
-  class GenericServer
-    attr_reader :status, :config, :logger, :tokens, :listeners
-
-    def initialize(config={}, default=Config::General)
-      @config = default.dup.update(config)
-      @status = :Stop
-      @config[:Logger] ||= Log::new
-      @logger = @config[:Logger]
-
-      @tokens = SizedQueue.new(@config[:MaxClients])
-      @config[:MaxClients].times{ @tokens.push(nil) }
-
-      webrickv = WEBrick::VERSION
-      rubyv = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
-      @logger.info("WEBrick #{webrickv}")
-      @logger.info("ruby #{rubyv}")
-
-      @listeners = []
-      unless @config[:DoNotListen]
-        if @config[:Listen]
-          warn(":Listen option is deprecated; use GenericServer#listen")
-        end
-        listen(@config[:BindAddress], @config[:Port])
-        if @config[:Port] == 0
-          @config[:Port] = @listeners[0].addr[1]
-        end
-      end
-    end
-
-    def [](key)
-      @config[key]
-    end
-
-    def listen(address, port)
-      @listeners += Utils::create_listeners(address, port, @logger)
-    end
-
-    def start(&block)
-      raise ServerError, "already started." if @status != :Stop
-      server_type = @config[:ServerType] || SimpleServer
-
-      server_type.start{
-        @logger.info \
-          "#{self.class}#start: pid=#{$$} port=#{@config[:Port]}"
-        call_callback(:StartCallback)
-
-        thgroup = ThreadGroup.new
-        @status = :Running
-        while @status == :Running
-          begin
-            if svrs = IO.select(@listeners, nil, nil, 2.0)
-              svrs[0].each{|svr|
-                @tokens.pop          # blocks while no token is there.
-                if sock = accept_client(svr)
-                  th = start_thread(sock, &block)
-                  th[:WEBrickThread] = true
-                  thgroup.add(th)
-                else
-                  @tokens.push(nil)
-                end
-              }
-            end
-          rescue Errno::EBADF, IOError => ex
-            # if the listening socket was closed in GenericServer#shutdown,
-            # IO::select raise it.
-          rescue Exception => ex
-            msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-            @logger.error msg
-          end
-        end
-
-        @logger.info "going to shutdown ..."
-        thgroup.list.each{|th| th.join if th[:WEBrickThread] }
-        call_callback(:StopCallback)
-        @logger.info "#{self.class}#start done."
-        @status = :Stop
-      }
-    end
-
-    def stop
-      if @status == :Running
-        @status = :Shutdown
-      end
-    end
-
-    def shutdown
-      stop
-      @listeners.each{|s|
-        if @logger.debug?
-          addr = s.addr
-          @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})")
-        end
-        s.close
-      }
-      @listeners.clear
-    end
-
-    def run(sock)
-      @logger.fatal "run() must be provided by user."
-    end
-
-    private
-
-    def accept_client(svr)
-      sock = nil
-      begin
-        sock = svr.accept
-        sock.sync = true
-        Utils::set_non_blocking(sock)
-        Utils::set_close_on_exec(sock)
-      rescue Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPROTO => ex
-        # TCP connection was established but RST segment was sent
-        # from peer before calling TCPServer#accept.
-      rescue Exception => ex
-        msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-        @logger.error msg
-      end
-      return sock
-    end
-
-    def start_thread(sock, &block)
-      Thread.start{
-        begin
-          Thread.current[:WEBrickSocket] = sock
-          begin
-            addr = sock.peeraddr
-            @logger.debug "accept: #{addr[3]}:#{addr[1]}"
-          rescue SocketError
-            @logger.debug "accept: <address unknown>"
-            raise
-          end
-          call_callback(:AcceptCallback, sock)
-          block ? block.call(sock) : run(sock)
-        rescue Errno::ENOTCONN
-          @logger.debug "Errno::ENOTCONN raised"
-        rescue ServerError => ex
-          msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
-          @logger.error msg
-        rescue Exception => ex
-          @logger.error ex
-        ensure
-          @tokens.push(nil)
-          Thread.current[:WEBrickSocket] = nil
-          if addr
-            @logger.debug "close: #{addr[3]}:#{addr[1]}"
-          else
-            @logger.debug "close: <address unknown>"
-          end
-          sock.close
-        end
-      }
-    end
-
-    def call_callback(callback_name, *args)
-      if cb = @config[callback_name]
-        cb.call(*args)
-      end
-    end
-  end    # end of GenericServer
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/ssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/ssl.rb
deleted file mode 100644
index 4c71c87..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/ssl.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# ssl.rb -- SSL/TLS enhancement for GenericServer
-#
-# Copyright (c) 2003 GOTOU Yuuzou All rights reserved.
-# 
-# $Id: ssl.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'webrick'
-require 'openssl'
-
-module WEBrick
-  module Config
-    svrsoft = General[:ServerSoftware]
-    osslv = ::OpenSSL::OPENSSL_VERSION.split[1]
-    SSL = {
-      :ServerSoftware       => "#{svrsoft} OpenSSL/#{osslv}",
-      :SSLEnable            => false,
-      :SSLCertificate       => nil,
-      :SSLPrivateKey        => nil,
-      :SSLClientCA          => nil,
-      :SSLExtraChainCert    => nil,
-      :SSLCACertificateFile => nil,
-      :SSLCACertificatePath => nil,
-      :SSLCertificateStore  => nil,
-      :SSLVerifyClient      => ::OpenSSL::SSL::VERIFY_NONE,
-      :SSLVerifyDepth       => nil,
-      :SSLVerifyCallback    => nil,   # custom verification
-      :SSLTimeout           => nil,
-      :SSLOptions           => nil,
-      :SSLStartImmediately  => true,
-      # Must specify if you use auto generated certificate.
-      :SSLCertName          => nil,
-      :SSLCertComment       => "Generated by Ruby/OpenSSL"
-    }
-    General.update(SSL)
-  end
-
-  module Utils
-    def create_self_signed_cert(bits, cn, comment)
-      rsa = OpenSSL::PKey::RSA.new(bits){|p, n|
-        case p
-        when 0; $stderr.putc "."  # BN_generate_prime
-        when 1; $stderr.putc "+"  # BN_generate_prime
-        when 2; $stderr.putc "*"  # searching good prime,  
-                                  # n = #of try,
-                                  # but also data from BN_generate_prime
-        when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
-                                  # but also data from BN_generate_prime
-        else;   $stderr.putc "*"  # BN_generate_prime
-        end
-      }
-      cert = OpenSSL::X509::Certificate.new
-      cert.version = 3
-      cert.serial = 0
-      name = OpenSSL::X509::Name.new(cn)
-      cert.subject = name
-      cert.issuer = name
-      cert.not_before = Time.now
-      cert.not_after = Time.now + (365*24*60*60)
-      cert.public_key = rsa.public_key
-
-      ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
-      ef.issuer_certificate = cert
-      cert.extensions = [
-        ef.create_extension("basicConstraints","CA:FALSE"),
-        ef.create_extension("keyUsage", "keyEncipherment"),
-        ef.create_extension("subjectKeyIdentifier", "hash"),
-        ef.create_extension("extendedKeyUsage", "serverAuth"),
-        ef.create_extension("nsComment", comment),
-      ]
-      aki = ef.create_extension("authorityKeyIdentifier",
-                                "keyid:always,issuer:always")
-      cert.add_extension(aki)
-      cert.sign(rsa, OpenSSL::Digest::SHA1.new)
-
-      return [ cert, rsa ]
-    end
-    module_function :create_self_signed_cert
-  end
-
-  class GenericServer
-    def ssl_context
-      @ssl_context ||= nil
-    end
-
-    def listen(address, port)
-      listeners = Utils::create_listeners(address, port, @logger)
-      if @config[:SSLEnable]
-        unless ssl_context
-          @ssl_context = setup_ssl_context(@config)
-          @logger.info("\n" + @config[:SSLCertificate].to_text) 
-        end
-        listeners.collect!{|svr|
-          ssvr = ::OpenSSL::SSL::SSLServer.new(svr, ssl_context)
-          ssvr.start_immediately = @config[:SSLStartImmediately]
-          ssvr
-        }
-      end
-      @listeners += listeners
-    end
-
-    def setup_ssl_context(config)
-      unless config[:SSLCertificate]
-        cn = config[:SSLCertName]
-        comment = config[:SSLCertComment]
-        cert, key = Utils::create_self_signed_cert(1024, cn, comment)
-        config[:SSLCertificate] = cert
-        config[:SSLPrivateKey] = key
-      end
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.key = config[:SSLPrivateKey]
-      ctx.cert = config[:SSLCertificate]
-      ctx.client_ca = config[:SSLClientCA]
-      ctx.extra_chain_cert = config[:SSLExtraChainCert]
-      ctx.ca_file = config[:SSLCACertificateFile]
-      ctx.ca_path = config[:SSLCACertificatePath]
-      ctx.cert_store = config[:SSLCertificateStore]
-      ctx.verify_mode = config[:SSLVerifyClient]
-      ctx.verify_depth = config[:SSLVerifyDepth]
-      ctx.verify_callback = config[:SSLVerifyCallback]
-      ctx.timeout = config[:SSLTimeout]
-      ctx.options = config[:SSLOptions]
-      ctx
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/utils.rb
deleted file mode 100644
index cf9da6f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/utils.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# utils.rb -- Miscellaneous utilities
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
-# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $
-
-require 'socket'
-require 'fcntl'
-begin
-  require 'etc'
-rescue LoadError
-  nil
-end
-
-module WEBrick
-  module Utils
-    def set_non_blocking(io)
-      flag = File::NONBLOCK
-      if defined?(Fcntl::F_GETFL)
-        flag |= io.fcntl(Fcntl::F_GETFL)
-      end
-      io.fcntl(Fcntl::F_SETFL, flag)
-    end
-    module_function :set_non_blocking
-
-    def set_close_on_exec(io)
-      if defined?(Fcntl::FD_CLOEXEC)
-        io.fcntl(Fcntl::FD_CLOEXEC, 1)
-      end
-    end
-    module_function :set_close_on_exec
-
-    def su(user)
-      if defined?(Etc)
-        pw = Etc.getpwnam(user)
-        Process::initgroups(user, pw.gid)
-        Process::Sys::setgid(pw.gid)
-        Process::Sys::setuid(pw.uid)
-      else
-        warn("WEBrick::Utils::su doesn't work on this platform")
-      end
-    end
-    module_function :su
-
-    def getservername
-      host = Socket::gethostname
-      begin
-        Socket::gethostbyname(host)[0]
-      rescue
-        host
-      end
-    end
-    module_function :getservername
-
-    def create_listeners(address, port, logger=nil)
-      unless port
-        raise ArgumentError, "must specify port"
-      end
-      res = Socket::getaddrinfo(address, port,
-                                Socket::AF_UNSPEC,   # address family
-                                Socket::SOCK_STREAM, # socket type
-                                0,                   # protocol
-                                Socket::AI_PASSIVE)  # flag
-      last_error = nil
-      sockets = []
-      res.each{|ai|
-        begin
-          logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
-          sock = TCPServer.new(ai[3], port)
-          port = sock.addr[1] if port == 0
-          Utils::set_close_on_exec(sock)
-          sockets << sock
-        rescue => ex
-          logger.warn("TCPServer Error: #{ex}") if logger
-          last_error  = ex
-        end
-      }
-      raise last_error if sockets.empty?
-      return sockets
-    end
-    module_function :create_listeners
-
-    RAND_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
-                 "0123456789" +
-                 "abcdefghijklmnopqrstuvwxyz" 
-
-    def random_string(len)
-      rand_max = RAND_CHARS.size
-      ret = "" 
-      len.times{ ret << RAND_CHARS[rand(rand_max)] }
-      ret 
-    end
-    module_function :random_string
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/version.rb
deleted file mode 100644
index b2b9fd3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/webrick/version.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# version.rb -- version and release date
-#
-# Author: IPR -- Internet Programming with Ruby -- writers
-# Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
-# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
-# reserved.
-#
-# $IPR: version.rb,v 1.74 2003/07/22 19:20:43 gotoyuzo Exp $
-
-module WEBrick
-  VERSION      = "1.3.1"
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/registry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/registry.rb
deleted file mode 100644
index 9a2f382..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/registry.rb
+++ /dev/null
@@ -1,831 +0,0 @@
-=begin
-= Win32 Registry I/F
-win32/registry is registry accessor library for Win32 platform.
-It uses Win32API to call Win32 Registry APIs.
-
-== example
-  Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\foo') do |reg|
-    value = reg['foo']                               # read a value
-    value = reg['foo', Win32::Registry::REG_SZ]      # read a value with type
-    type, value = reg.read('foo')                    # read a value
-    reg['foo'] = 'bar'                               # write a value
-    reg['foo', Win32::Registry::REG_SZ] = 'bar'      # write a value with type
-    reg.write('foo', Win32::Registry::REG_SZ, 'bar') # write a value
-    
-    reg.each_value { |name, type, data| ... }        # Enumerate values
-    reg.each_key { |key, wtime| ... }                # Enumerate subkeys
-    
-    reg.delete_value(name)                         # Delete a value
-    reg.delete_key(name)                           # Delete a subkey
-    reg.delete_key(name, true)                     # Delete a subkey recursively
-  end
-
-= Reference
-
-== Win32::Registry class
-
-=== including modules
-
-* Enumerable
-* Registry::Constants
-
-=== class methods
---- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
---- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) { |reg| ... }
-    Open the registry key ((|subkey|)) under ((|key|)).
-    ((|key|)) is Win32::Registry object of parent key.
-    You can use predefined key HKEY_* (see ((<constants>)))
-    
-    ((|desired|)) and ((|opt|)) is access mask and key option.
-    For detail, see ((<MSDN Library|URL:http://msdn.microsoft.com/library/en-us/sysinfo/base/regopenkeyex.asp>)).
-    
-    If block is given, the key is closed automatically.
-
---- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
---- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) { |reg| ... }
-    Create or open the registry key ((|subkey|)) under ((|key|)).
-    You can use predefined key HKEY_* (see ((<constants>)))
-    
-    If subkey is already exists, key is opened and Registry#((<created?>))
-    method will return false.
-    
-    If block is given, the key is closed automatically.
-
---- Registry.expand_environ(str)
-    Replace (({%\w+%})) into the environment value of ((|str|)).
-    This method is used for REG_EXPAND_SZ.
-    
-    For detail, see ((<ExpandEnvironmentStrings|URL:http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp>)) Win32 API.
-
---- Registry.type2name(type)
-    Convert registry type value to readable string.
-
---- Registry.wtime2time(wtime)
-    Convert 64-bit FILETIME integer into Time object.
-
---- Registry.time2wtime(time)
-    Convert Time object or Integer object into 64-bit FILETIME.
-
-=== instance methods
---- open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
-    Same as (({Win32::((<Registry.open>))(self, subkey, desired, opt)}))
-
---- create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
-    Same as (({Win32::((<Registry.create>))(self, subkey, desired, opt)}))
-
---- close
-    Close key.
-    
-    After closed, most method raises error.
-
---- read(name, *rtype)
-    Read a registry value named ((|name|)) and return array of
-    [ ((|type|)), ((|data|)) ].
-    When name is nil, the `default' value is read.
-    
-    ((|type|)) is value type. (see ((<Win32::Registry::Constants module>)))
-    ((|data|)) is value data, its class is:
-    :REG_SZ, REG_EXPAND_SZ
-       String
-    :REG_MULTI_SZ
-       Array of String
-    :REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD
-       Integer
-    :REG_BINARY
-       String (contains binary data)
-    
-    When ((|rtype|)) is specified, the value type must be included by
-    ((|rtype|)) array, or TypeError is raised.
-
---- self[name, *rtype]
-    Read a registry value named ((|name|)) and return its value data.
-    The class of value is same as ((<read>)) method returns.
-    
-    If the value type is REG_EXPAND_SZ, returns value data whose environment
-    variables are replaced.
-    If the value type is neither REG_SZ, REG_MULTI_SZ, REG_DWORD,
-    REG_DWORD_BIG_ENDIAN, nor REG_QWORD, TypeError is raised.
-    
-    The meaning of ((|rtype|)) is same as ((<read>)) method.
-
---- read_s(name)
---- read_i(name)
---- read_bin(name)
-    Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin)
-    registry value named ((|name|)).
-    
-    If the values type does not match, TypeError is raised.
-
---- read_s_expand(name)
-    Read a REG_SZ or REG_EXPAND_SZ registry value named ((|name|)).
-    
-    If the value type is REG_EXPAND_SZ, environment variables are replaced.
-    Unless the value type is REG_SZ or REG_EXPAND_SZ, TypeError is raised.
-
---- write(name, type, data)
-    Write ((|data|)) to a registry value named ((|name|)).
-    When name is nil, write to the `default' value.
-    
-    ((|type|)) is type value. (see ((<Registry::Constants module>)))
-    Class of ((|data|)) must be same as which ((<read>))
-    method returns.
-
---- self[name, wtype = nil] = value
-    Write ((|value|)) to a registry value named ((|name|)).
-    
-    If ((|wtype|)) is specified, the value type is it.
-    Otherwise, the value type is depend on class of ((|value|)):
-    :Integer
-      REG_DWORD
-    :String
-      REG_SZ
-    :Array
-      REG_MULTI_SZ
-
---- write_s(name, value)
---- write_i(name, value)
---- write_bin(name, value)
-    Write ((|value|)) to a registry value named ((|name|)).
-    
-    The value type is REG_SZ(write_s), REG_DWORD(write_i), or
-    REG_BINARY(write_bin).
-
---- each { |name, type, value| ... }
---- each_value { |name, type, value| ... }
-    Enumerate values.
-
---- each_key { |subkey, wtime| ... }
-    Enumerate subkeys.
-    
-    ((|subkey|)) is String which contains name of subkey.
-    ((|wtime|)) is last write time as FILETIME (64-bit integer).
-    (see ((<Registry.wtime2time>)))
-
---- delete(name)
---- delete_value(name)
-    Delete a registry value named ((|name|)).
-    We can not delete the `default' value.
-
---- delete_key(name, recursive = false)
-    Delete a subkey named ((|name|)) and all its values.
-    
-    If ((|recursive|)) is false, the subkey must not have subkeys.
-    Otherwise, this method deletes all subkeys and values recursively.
-
---- flush
-    Write all the attributes into the registry file.
-
---- created?
-    Returns if key is created ((*newly*)).
-    (see ((<Registry.create>)))
-
---- open?
-    Returns if key is not closed.
-
---- hkey
-    Returns key handle value.
-
---- parent
-    Win32::Registry object of parent key, or nil if predefeined key.
-
---- keyname
-    Same as ((|subkey|)) value of ((<Registry.open>)) or
-    ((<Registry.create>)) method.
-
---- disposition
-    Disposition value (REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY).
-
---- name
---- to_s
-    Full path of key such as (({'HKEY_CURRENT_USER\SOFTWARE\foo\bar'})).
-
---- info
-    Returns key information as Array of:
-    :num_keys
-      The number of subkeys.
-    :max_key_length
-      Maximum length of name of subkeys.
-    :num_values
-      The number of values.
-    :max_value_name_length
-      Maximum length of name of values.
-    :max_value_length
-      Maximum length of value of values.
-    :descriptor_length
-      Length of security descriptor.
-    :wtime
-      Last write time as FILETIME(64-bit integer)
-    
-    For detail, see ((<RegQueryInfoKey|URL:http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryinfokey.asp>)) Win32 API.
-
---- num_keys
---- max_key_length
---- num_values
---- max_value_name_length
---- max_value_length
---- descriptor_length
---- wtime
-    Returns an item of key information.
-
-=== constants
---- HKEY_CLASSES_ROOT
---- HKEY_CURRENT_USER
---- HKEY_LOCAL_MACHINE
---- HKEY_PERFORMANCE_DATA
---- HKEY_CURRENT_CONFIG
---- HKEY_DYN_DATA
-    Win32::Registry object whose key is predefined key.
-    For detail, see ((<MSDN Library|URL:http://msdn.microsoft.com/library/en-us/sysinfo/base/predefined_keys.asp>)).
-
-== Win32::Registry::Constants module
-
-For detail, see ((<MSDN Library|URL:http://msdn.microsoft.com/library/en-us/sysinfo/base/registry.asp>)).
-
---- HKEY_*
-    Predefined key ((*handle*)).
-    These are Integer, not Win32::Registry.
-
---- REG_*
-    Registry value type.
-
---- KEY_*
-    Security access mask.
-
---- KEY_OPTIONS_*
-    Key options.
-
---- REG_CREATED_NEW_KEY
---- REG_OPENED_EXISTING_KEY
-    If the key is created newly or opened existing key.
-    See also Registry#((<disposition>)) method.
-
-=end
-
-require 'Win32API'
-
-module Win32
-  class Registry
-    module Constants
-      HKEY_CLASSES_ROOT = 0x80000000
-      HKEY_CURRENT_USER = 0x80000001
-      HKEY_LOCAL_MACHINE = 0x80000002
-      HKEY_USERS = 0x80000003
-      HKEY_PERFORMANCE_DATA = 0x80000004
-      HKEY_PERFORMANCE_TEXT = 0x80000050
-      HKEY_PERFORMANCE_NLSTEXT = 0x80000060
-      HKEY_CURRENT_CONFIG = 0x80000005
-      HKEY_DYN_DATA = 0x80000006
-      
-      REG_NONE = 0
-      REG_SZ = 1
-      REG_EXPAND_SZ = 2
-      REG_BINARY = 3
-      REG_DWORD = 4
-      REG_DWORD_LITTLE_ENDIAN = 4
-      REG_DWORD_BIG_ENDIAN = 5
-      REG_LINK = 6
-      REG_MULTI_SZ = 7
-      REG_RESOURCE_LIST = 8
-      REG_FULL_RESOURCE_DESCRIPTOR = 9
-      REG_RESOURCE_REQUIREMENTS_LIST = 10
-      REG_QWORD = 11
-      REG_QWORD_LITTLE_ENDIAN = 11
-      
-      STANDARD_RIGHTS_READ = 0x00020000
-      STANDARD_RIGHTS_WRITE = 0x00020000
-      KEY_QUERY_VALUE = 0x0001
-      KEY_SET_VALUE = 0x0002
-      KEY_CREATE_SUB_KEY = 0x0004
-      KEY_ENUMERATE_SUB_KEYS = 0x0008
-      KEY_NOTIFY = 0x0010
-      KEY_CREATE_LINK = 0x0020
-      KEY_READ = STANDARD_RIGHTS_READ |
-        KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
-      KEY_WRITE = STANDARD_RIGHTS_WRITE |
-        KEY_SET_VALUE | KEY_CREATE_SUB_KEY
-      KEY_EXECUTE = KEY_READ
-      KEY_ALL_ACCESS = KEY_READ | KEY_WRITE | KEY_CREATE_LINK
-      
-      REG_OPTION_RESERVED = 0x0000
-      REG_OPTION_NON_VOLATILE = 0x0000
-      REG_OPTION_VOLATILE = 0x0001
-      REG_OPTION_CREATE_LINK = 0x0002
-      REG_OPTION_BACKUP_RESTORE = 0x0004
-      REG_OPTION_OPEN_LINK = 0x0008
-      REG_LEGAL_OPTION = REG_OPTION_RESERVED |
-        REG_OPTION_NON_VOLATILE | REG_OPTION_CREATE_LINK |
-        REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK
-      
-      REG_CREATED_NEW_KEY = 1
-      REG_OPENED_EXISTING_KEY = 2
-      
-      REG_WHOLE_HIVE_VOLATILE = 0x0001
-      REG_REFRESH_HIVE = 0x0002
-      REG_NO_LAZY_FLUSH = 0x0004
-      REG_FORCE_RESTORE = 0x0008
-      
-      MAX_KEY_LENGTH = 514
-      MAX_VALUE_LENGTH = 32768
-    end
-    include Constants
-    include Enumerable
-    
-    #
-    # Error
-    #
-    class Error < ::StandardError
-      FormatMessageA = Win32API.new('kernel32.dll', 'FormatMessageA', 'LPLLPLP', 'L')
-      def initialize(code)
-        @code = code
-        msg = "\0" * 1024
-        len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
-        super msg[0, len].tr("\r", '').chomp
-      end
-      attr_reader :code
-    end
-    
-    #
-    # Predefined Keys
-    #
-    class PredefinedKey < Registry
-      def initialize(hkey, keyname)
-        @hkey = hkey
-        @parent = nil
-        @keyname = keyname
-        @disposition = REG_OPENED_EXISTING_KEY
-      end
-      
-      # Predefined keys cannot be closed
-      def close
-        raise Error.new(5) ## ERROR_ACCESS_DENIED
-      end
-      
-      # Fake class for Registry#open, Registry#create
-      def class
-        Registry
-      end
-      
-      # Make all
-      Constants.constants.grep(/^HKEY_/) do |c|
-        Registry.const_set c, new(Constants.const_get(c), c)
-      end
-    end
-    
-    #
-    # Win32 APIs
-    #
-    module API
-      [
-        %w/RegOpenKeyExA    LPLLP        L/,
-        %w/RegCreateKeyExA  LPLLLLPPP    L/,
-        %w/RegEnumValueA    LLPPPPPP     L/,
-        %w/RegEnumKeyExA    LLPPLLLP     L/,
-        %w/RegQueryValueExA LPLPPP       L/,
-        %w/RegSetValueExA   LPLLPL       L/,
-        %w/RegDeleteValue   LP           L/,
-        %w/RegDeleteKey     LP           L/,
-        %w/RegFlushKey      L            L/,
-        %w/RegCloseKey      L            L/,
-        %w/RegQueryInfoKey  LPPPPPPPPPPP L/,
-      ].each do |fn|
-        const_set fn[0].intern, Win32API.new('advapi32.dll', *fn)
-      end
-      
-      module_function
-      
-      def check(result)
-        raise Error, result, caller(2) if result != 0
-      end
-      
-      def packdw(dw)
-        [dw].pack('V')
-      end
-      
-      def unpackdw(dw)
-        dw += [0].pack('V')
-        dw.unpack('V')[0]
-      end
-      
-      def packqw(qw)
-        [ qw & 0xFFFFFFFF, qw >> 32 ].pack('VV')
-      end
-      
-      def unpackqw(qw)
-        qw = qw.unpack('VV')
-        (qw[1] << 32) | qw[0]
-      end
-      
-      def OpenKey(hkey, name, opt, desired)
-        result = packdw(0)
-        check RegOpenKeyExA.call(hkey, name, opt, desired, result)
-        unpackdw(result)
-      end
-      
-      def CreateKey(hkey, name, opt, desired)
-        result = packdw(0)
-        disp = packdw(0)
-        check RegCreateKeyExA.call(hkey, name, 0, 0, opt, desired,
-                                   0, result, disp)
-        [ unpackdw(result), unpackdw(disp) ]
-      end
-      
-      def EnumValue(hkey, index)
-        name = ' ' * Constants::MAX_KEY_LENGTH
-        size = packdw(Constants::MAX_KEY_LENGTH)
-        check RegEnumValueA.call(hkey, index, name, size, 0, 0, 0, 0)
-        name[0, unpackdw(size)]
-      end
-      
-      def EnumKey(hkey, index)
-        name = ' ' * Constants::MAX_KEY_LENGTH
-        size = packdw(Constants::MAX_KEY_LENGTH)
-        wtime = ' ' * 8
-        check RegEnumKeyExA.call(hkey, index, name, size, 0, 0, 0, wtime)
-        [ name[0, unpackdw(size)], unpackqw(wtime) ]
-      end
-      
-      def QueryValue(hkey, name)
-        type = packdw(0)
-        size = packdw(0)
-        check RegQueryValueExA.call(hkey, name, 0, type, 0, size)
-        data = ' ' * unpackdw(size)
-        check RegQueryValueExA.call(hkey, name, 0, type, data, size)
-        [ unpackdw(type), data[0, unpackdw(size)] ]
-      end
-      
-      def SetValue(hkey, name, type, data, size)
-        check RegSetValueExA.call(hkey, name, 0, type, data, size)
-      end
-      
-      def DeleteValue(hkey, name)
-        check RegDeleteValue.call(hkey, name)
-      end
-      
-      def DeleteKey(hkey, name)
-        check RegDeleteKey.call(hkey, name)
-      end
-      
-      def FlushKey(hkey)
-        check RegFlushKey.call(hkey)
-      end
-      
-      def CloseKey(hkey)
-        check RegCloseKey.call(hkey)
-      end
-      
-      def QueryInfoKey(hkey)
-        subkeys = packdw(0)
-        maxsubkeylen = packdw(0)
-        values = packdw(0)
-        maxvaluenamelen = packdw(0)
-        maxvaluelen = packdw(0)
-        secdescs = packdw(0)
-        wtime = ' ' * 8
-        check RegQueryInfoKey.call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
-          values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
-        [ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
-          unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
-          unpackdw(secdescs), unpackqw(wtime) ]
-      end
-    end
-    
-    #
-    # utility functions
-    #
-    def self.expand_environ(str)
-      str.gsub(/%([^%]+)%/) { ENV[$1] || ENV[$1.upcase] || $& }
-    end
-    
-    @@type2name = { }
-    %w[
-      REG_NONE REG_SZ REG_EXPAND_SZ REG_BINARY REG_DWORD
-      REG_DWORD_BIG_ENDIAN REG_LINK REG_MULTI_SZ
-      REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR
-      REG_RESOURCE_REQUIREMENTS_LIST REG_QWORD
-    ].each do |type|
-      @@type2name[Constants.const_get(type)] = type
-    end
-    
-    def self.type2name(type)
-      @@type2name[type] || type.to_s
-    end
-    
-    def self.wtime2time(wtime)
-      Time.at((wtime - 116444736000000000) / 10000000)
-    end
-    
-    def self.time2wtime(time)
-      time.to_i * 10000000 + 116444736000000000
-    end
-    
-    #
-    # constructors
-    #
-    private_class_method :new
-    
-    def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
-      subkey = subkey.chomp('\\')
-      newkey = API.OpenKey(hkey.hkey, subkey, opt, desired)
-      obj = new(newkey, hkey, subkey, REG_OPENED_EXISTING_KEY)
-      if block_given?
-        begin
-          yield obj
-        ensure
-          obj.close
-        end
-      else
-        obj
-      end
-    end
-    
-    def self.create(hkey, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
-      newkey, disp = API.CreateKey(hkey.hkey, subkey, opt, desired)
-      obj = new(newkey, hkey, subkey, disp)
-      if block_given?
-        begin
-          yield obj
-        ensure
-          obj.close
-        end
-      else
-        obj
-      end
-    end
-    
-    #
-    # finalizer
-    #
-    @@final = proc { |hkey| proc { API.CloseKey(hkey[0]) if hkey[0] } }
-    
-    #
-    # initialize
-    #
-    def initialize(hkey, parent, keyname, disposition)
-      @hkey = hkey
-      @parent = parent
-      @keyname = keyname
-      @disposition = disposition
-      @hkeyfinal = [ hkey ]
-      ObjectSpace.define_finalizer self, @@final.call(@hkeyfinal)
-    end
-    attr_reader :hkey, :parent, :keyname, :disposition
-    
-    #
-    # attributes
-    #
-    def created?
-      @disposition == REG_CREATED_NEW_KEY
-    end
-    
-    def open?
-      !@hkey.nil?
-    end
-    
-    def name
-      parent = self
-      name = @keyname
-      while parent = parent.parent
-        name = parent.keyname + '\\' + name
-      end
-      name
-    end
-    
-    def inspect
-      "\#<Win32::Registry key=#{name.inspect}>"
-    end
-    
-    #
-    # marshalling
-    #
-    def _dump(depth)
-      raise TypeError, "can't dump Win32::Registry"
-    end
-    
-    #
-    # open/close
-    #
-    def open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED, &blk)
-      self.class.open(self, subkey, desired, opt, &blk)
-    end
-    
-    def create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED, &blk)
-      self.class.create(self, subkey, desired, opt, &blk)
-    end
-    
-    def close
-      API.CloseKey(@hkey)
-      @hkey = @parent = @keyname = nil
-      @hkeyfinal[0] = nil
-    end
-    
-    #
-    # iterator
-    #
-    def each_value
-      index = 0
-      while true
-        begin
-          subkey = API.EnumValue(@hkey, index)
-        rescue Error
-          break
-        end
-        begin
-          type, data = read(subkey)
-        rescue Error
-          next
-        end
-        yield subkey, type, data
-        index += 1
-      end
-      index
-    end
-    alias each each_value
-    
-    def each_key
-      index = 0
-      while true
-        begin
-          subkey, wtime = API.EnumKey(@hkey, index)
-        rescue Error
-          break
-        end
-        yield subkey, wtime
-        index += 1
-      end
-      index
-    end
-    
-    def keys
-      keys_ary = []
-      each_key { |key,| keys_ary << key }
-      keys_ary
-    end
-    
-    #
-    # reader
-    #
-    def read(name, *rtype)
-      type, data = API.QueryValue(@hkey, name)
-      unless rtype.empty? or rtype.include?(type)
-        raise TypeError, "Type mismatch (expect #{rtype.inspect} but #{type} present)"
-      end
-      case type
-      when REG_SZ, REG_EXPAND_SZ
-        [ type, data.chop ]
-      when REG_MULTI_SZ
-        [ type, data.split(/\0/) ]
-      when REG_BINARY
-        [ type, data ]
-      when REG_DWORD
-        [ type, API.unpackdw(data) ]
-      when REG_DWORD_BIG_ENDIAN
-        [ type, data.unpack('N')[0] ]
-      when REG_QWORD
-        [ type, API.unpackqw(data) ]
-      else
-        raise TypeError, "Type #{type} is not supported."
-      end
-    end
-    
-    def [](name, *rtype)
-      type, data = read(name, *rtype)
-      case type
-      when REG_SZ, REG_DWORD, REG_QWORD, REG_MULTI_SZ
-        data
-      when REG_EXPAND_SZ
-        Registry.expand_environ(data)
-      else
-        raise TypeError, "Type #{type} is not supported."
-      end
-    end
-    
-    def read_s(name)
-      read(name, REG_SZ)[1]
-    end
-    
-    def read_s_expand(name)
-      type, data = read(name, REG_SZ, REG_EXPAND_SZ)
-      if type == REG_EXPAND_SZ
-        Registry.expand_environ(data)
-      else
-        data
-      end
-    end
-    
-    def read_i(name)
-      read(name, REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD)[1]
-    end
-    
-    def read_bin(name)
-      read(name, REG_BINARY)[1]
-    end
-    
-    #
-    # writer
-    #
-    def write(name, type, data)
-      case type
-      when REG_SZ, REG_EXPAND_SZ
-        data = data.to_s + "\0"
-      when REG_MULTI_SZ
-        data = data.to_a.join("\0") + "\0\0"
-      when REG_BINARY
-        data = data.to_s
-      when REG_DWORD
-        data = API.packdw(data.to_i)
-      when REG_DWORD_BIG_ENDIAN
-        data = [data.to_i].pack('N')
-      when REG_QWORD
-        data = API.packqw(data.to_i)
-      else
-        raise TypeError, "Unsupported type #{type}"
-      end
-      API.SetValue(@hkey, name, type, data, data.length)
-    end
-    
-    def []=(name, rtype, value = nil)
-      if value
-        write name, rtype, value
-      else
-        case value = rtype
-        when Integer
-          write name, REG_DWORD, value
-        when String
-          write name, REG_SZ, value
-        when Array
-          write name, REG_MULTI_SZ, value
-        else
-          raise TypeError, "Unexpected type #{value.class}"
-        end
-      end
-      value
-    end
-    
-    def write_s(name, value)
-      write name, REG_SZ, value.to_s
-    end
-    
-    def write_i(name, value)
-      write name, REG_DWORD, value.to_i
-    end
-    
-    def write_bin(name, value)
-      write name, REG_BINARY, value.to_s
-    end
-    
-    #
-    # delete
-    #
-    def delete_value(name)
-      API.DeleteValue(@hkey, name)
-    end
-    alias delete delete_value
-    
-    def delete_key(name, recursive = false)
-      if recursive
-        open(name, KEY_ALL_ACCESS) do |reg|
-          reg.keys.each do |key|
-            begin
-              reg.delete_key(key, true)
-            rescue Error
-              #
-            end
-          end
-        end
-        API.DeleteKey(@hkey, name)
-      else
-        begin
-          API.EnumKey @hkey, 0
-        rescue Error
-          return API.DeleteKey(@hkey, name)
-        end
-        raise Error.new(5) ## ERROR_ACCESS_DENIED
-      end
-    end
-    
-    #
-    # flush
-    #
-    def flush
-      API.FlushKey @hkey
-    end
-    
-    #
-    # key information
-    #
-    def info
-      API.QueryInfoKey(@hkey)
-    end
-    %w[
-      num_keys max_key_length
-      num_values max_value_name_length max_value_length
-      descriptor_length wtime
-    ].each_with_index do |s, i|
-      eval <<-__END__
-        def #{s}
-          info[#{i}]
-        end
-      __END__
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/resolv.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/resolv.rb
deleted file mode 100644
index 92336fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32/resolv.rb
+++ /dev/null
@@ -1,366 +0,0 @@
-=begin
-= Win32 DNS and DHCP I/F
-
-=end
-
-require 'win32/registry'
-
-module Win32
-  module Resolv
-    API = Registry::API
-    
-    def self.get_hosts_path
-      path = get_hosts_dir
-      path = File.expand_path('hosts', path)
-      File.exist?(path) ? path : nil
-    end
-    
-    def self.get_resolv_info
-      search, nameserver = get_info
-      if search.empty?
-        search = nil
-      else
-        search.delete("")
-        search.uniq!
-      end
-      if nameserver.empty?
-        nameserver = nil
-      else
-        nameserver.delete("")
-        nameserver.delete("0.0.0.0")
-        nameserver.uniq!
-      end
-      [ search, nameserver ]
-    end
-
-getv = Win32API.new('kernel32.dll', 'GetVersionExA', 'P', 'L')
-info = [ 148, 0, 0, 0, 0 ].pack('V5') + "\0" * 128
-getv.call(info)
-if info.unpack('V5')[4] == 2  # VER_PLATFORM_WIN32_NT
-#====================================================================
-# Windows NT
-#====================================================================
-  module_eval <<-'__EOS__', __FILE__, __LINE__+1
-    TCPIP_NT = 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'
-    
-    class << self
-      private
-      def get_hosts_dir
-        Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
-          reg.read_s_expand('DataBasePath')
-        end
-      end
-      
-      def get_info
-        search = nil
-        nameserver = []
-        Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
-          begin
-            slist = reg.read_s('SearchList')
-            search = slist.split(/,\s*/) unless slist.empty?
-          rescue Registry::Error
-          end
-          
-          if add_search = search.nil?
-            search = []
-            begin
-              nvdom = reg.read_s('NV Domain')
-              unless nvdom.empty?
-                @search = [ nvdom ]
-                if reg.read_i('UseDomainNameDevolution') != 0
-                  if /^[\w\d]+\./ =~ nvdom
-                    devo = $'
-                  end
-                end
-              end
-            rescue Registry::Error
-            end
-          end
-          
-          reg.open('Interfaces') do |reg|
-            reg.each_key do |iface,|
-              reg.open(iface) do |regif|
-                begin
-                  [ 'NameServer', 'DhcpNameServer' ].each do |key|
-                    ns = regif.read_s(key)
-                    unless ns.empty?
-                      nameserver.concat(ns.split(/[,\s]\s*/))
-                      break
-                    end
-                  end
-                rescue Registry::Error
-                end
-                
-                if add_search
-                  begin
-                    [ 'Domain', 'DhcpDomain' ].each do |key|
-                      dom = regif.read_s(key)
-                      unless dom.empty?
-                        search.concat(dom.split(/,\s*/))
-                        break
-                      end
-                    end
-                  rescue Registry::Error
-                  end
-                end
-              end
-            end
-          end
-          search << devo if add_search and devo
-        end
-        [ search.uniq, nameserver.uniq ]
-      end
-    end
-  __EOS__
-else
-#====================================================================
-# Windows 9x
-#====================================================================
-  module_eval <<-'__EOS__', __FILE__, __LINE__+1
-    TCPIP_9X = 'SYSTEM\CurrentControlSet\Services\VxD\MSTCP'
-    DHCP_9X = 'SYSTEM\CurrentControlSet\Services\VxD\DHCP'
-    WINDOWS = 'Software\Microsoft\Windows\CurrentVersion'
-    
-    class << self
-   #   private
-      
-      def get_hosts_dir
-        Registry::HKEY_LOCAL_MACHINE.open(WINDOWS) do |reg|
-          reg.read_s_expand('SystemRoot')
-        end
-      end
-      
-      def get_info
-        search = []
-        nameserver = []
-        begin
-          Registry::HKEY_LOCAL_MACHINE.open(TCPIP_9X) do |reg|
-            if reg.read_s("EnableDNS") == "1"
-              domain = reg.read_s("Domain")
-              ns = reg.read_s("NameServer")
-              slist = reg.read_s("SearchList")
-              search << domain unless domain.empty?
-              search.concat(slist.split(/,\s*/))
-              nameserver.concat(ns.split(/[,\s]\s*/))
-            end
-          end
-        rescue Registry::Error
-        end
-        
-        dhcpinfo = get_dhcpinfo
-        search.concat(dhcpinfo[0])
-        nameserver.concat(dhcpinfo[1])
-        [ search, nameserver ]
-      end
-      
-      def get_dhcpinfo
-        macaddrs = {}
-        ipaddrs = {}
-        WsControl.get_iflist.each do |index, macaddr, *ipaddr|
-          macaddrs[macaddr] = 1
-          ipaddr.each { |ipaddr| ipaddrs[ipaddr] = 1 }
-        end
-        iflist = [ macaddrs, ipaddrs ]
-        
-        search = []
-        nameserver = []
-        version = -1
-        Registry::HKEY_LOCAL_MACHINE.open(DHCP_9X) do |reg|
-          begin
-            version = API.unpackdw(reg.read_bin("Version"))
-          rescue Registry::Error
-          end
-          
-          reg.each_key do |key,|
-            catch(:not_used) do
-              reg.open(key) do |regdi|
-                dom, ns = get_dhcpinfo_key(version, regdi, iflist)
-                search << dom if dom
-                nameserver.concat(ns) if ns
-              end
-            end
-          end
-        end
-        [ search, nameserver ]
-      end
-      
-      def get_dhcpinfo_95(reg)
-        dhcp = reg.read_bin("DhcpInfo")
-        [
-          API.unpackdw(dhcp[4..7]),
-          API.unpackdw(dhcp[8..11]),
-          1,
-          dhcp[45..50],
-          reg.read_bin("OptionInfo"),
-        ]
-      end
-      
-      def get_dhcpinfo_98(reg)
-        [
-          API.unpackdw(reg.read_bin("DhcpIPAddress")),
-          API.unpackdw(reg.read_bin("DhcpSubnetMask")),
-          API.unpackdw(reg.read_bin("HardwareType")),
-          reg.read_bin("HardwareAddress"),
-          reg.read_bin("OptionInfo"),
-        ]
-      end
-      
-      def get_dhcpinfo_key(version, reg, iflist)
-        info = case version
-               when 1
-                 get_dhcpinfo_95(reg)
-               when 2
-                 get_dhcpinfo_98(reg)
-               else
-                 begin
-                   get_dhcpinfo_98(reg)
-                 rescue Registry::Error
-                   get_dhcpinfo_95(reg)
-                 end
-               end
-        ipaddr, netmask, hwtype, macaddr, opt = info
-        throw :not_used unless
-          ipaddr and ipaddr != 0 and
-          netmask and netmask != 0 and
-          macaddr and macaddr.size == 6 and
-          hwtype == 1 and
-          iflist[0][macaddr] and iflist[1][ipaddr]
-        
-        size = opt.size
-        idx = 0
-        while idx <= size
-          opttype = opt[idx]
-          optsize = opt[idx + 1]
-          optval  = opt[idx + 2, optsize]
-          case opttype
-          when 0xFF    ## term
-            break
-          when 0x0F    ## domain
-            domain = optval.chomp("\0")
-          when 0x06    ## dns
-            nameserver = optval.scan(/..../).collect { |addr|
-              "%d.%d.%d.%d" % addr.unpack('C4')
-            }
-          end
-          idx += optsize + 2
-        end
-        [ domain, nameserver ]
-      rescue Registry::Error
-        throw :not_used
-      end
-    end
-    
-    module WsControl
-      WsControl = Win32API.new('wsock32.dll', 'WsControl', 'LLPPPP', 'L')
-      WSAGetLastError = Win32API.new('wsock32.dll', 'WSAGetLastError', 'V', 'L')
-      
-      MAX_TDI_ENTITIES = 512
-      IPPROTO_TCP = 6
-      WSCTL_TCP_QUERY_INFORMATION = 0
-      INFO_CLASS_GENERIC = 0x100
-      INFO_CLASS_PROTOCOL = 0x200
-      INFO_TYPE_PROVIDER = 0x100
-      ENTITY_LIST_ID = 0
-      GENERIC_ENTITY = 0
-      CL_NL_ENTITY = 0x301
-      IF_ENTITY = 0x200
-      ENTITY_TYPE_ID = 1
-      CL_NL_IP = 0x303
-      IF_MIB = 0x202
-      IF_MIB_STATS_ID = 1
-      IP_MIB_ADDRTABLE_ENTRY_ID = 0x102
-      
-      def self.wsctl(tei_entity, tei_instance,
-                     toi_class, toi_type, toi_id,
-                     buffsize)
-        reqinfo = [
-                  ## TDIEntityID
-                    tei_entity, tei_instance,
-                  ## TDIObjectID
-                    toi_class, toi_type, toi_id,
-                  ## TCP_REQUEST_INFORMATION_EX
-                    ""
-                  ].pack('VVVVVa16')
-        reqsize = API.packdw(reqinfo.size)
-        buff = "\0" * buffsize
-        buffsize = API.packdw(buffsize)
-        result = WsControl.call(
-                   IPPROTO_TCP,
-                   WSCTL_TCP_QUERY_INFORMATION,
-                   reqinfo, reqsize,
-                   buff, buffsize)
-        if result != 0
-          raise RuntimeError, "WsControl failed.(#{result})"
-        end
-        [ buff, API.unpackdw(buffsize) ]
-      end
-      private_class_method :wsctl
-      
-      def self.get_iflist
-        # Get TDI Entity List
-        entities, size =
-          wsctl(GENERIC_ENTITY, 0,
-                INFO_CLASS_GENERIC,
-                INFO_TYPE_PROVIDER,
-                ENTITY_LIST_ID,
-                MAX_TDI_ENTITIES * 8)  # sizeof(TDIEntityID)
-        entities = entities[0, size].
-                     scan(/.{8}/).
-                     collect { |e| e.unpack('VV') }
-
-        # Get MIB Interface List
-        iflist = []
-        ifcount = 0
-        entities.each do |entity, instance|
-          if( (entity & IF_ENTITY)>0 )
-            ifcount += 1
-            etype, = wsctl(entity, instance,
-                           INFO_CLASS_GENERIC,
-                           INFO_TYPE_PROVIDER,
-                           ENTITY_TYPE_ID,
-                           4)
-            if( (API.unpackdw(etype) & IF_MIB)==IF_MIB )
-              ifentry, = wsctl(entity, instance,
-                               INFO_CLASS_PROTOCOL,
-                               INFO_TYPE_PROVIDER,
-                               IF_MIB_STATS_ID,
-                               21 * 4 + 8 + 130)  # sizeof(IFEntry)
-              iflist << [
-                API.unpackdw(ifentry[0,4]),
-                ifentry[20, 6]
-              ]
-            end
-          end
-        end
-        
-        # Get IP Addresses
-        entities.each do |entity, instance|
-          if entity == CL_NL_ENTITY
-            etype, = wsctl(entity, instance,
-                           INFO_CLASS_GENERIC,
-                           INFO_TYPE_PROVIDER,
-                           ENTITY_TYPE_ID,
-                           4)
-            if API.unpackdw(etype) == CL_NL_IP
-              ipentries, = wsctl(entity, instance,
-                                 INFO_CLASS_PROTOCOL,
-                                 INFO_TYPE_PROVIDER,
-                                 IP_MIB_ADDRTABLE_ENTRY_ID,
-                                 24 * (ifcount+1))  # sizeof(IPAddrEntry)
-              ipentries.scan(/.{24}/) do |ipentry|
-                ipaddr, index = ipentry.unpack('VV')
-                if ifitem = iflist.assoc(index)
-                  ifitem << ipaddr
-                end
-              end
-            end
-          end
-        end
-        iflist
-      end
-    end
-  __EOS__
-end
-#====================================================================
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32ole/property.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32ole/property.rb
deleted file mode 100644
index a68bad9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/win32ole/property.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# OLEProperty
-# helper class of Property with arguments.
-class OLEProperty
-  def initialize(obj, dispid, gettypes, settypes)
-    @obj = obj
-    @dispid = dispid
-    @gettypes = gettypes
-    @settypes = settypes
-  end
-  def [](*args)
-    @obj._getproperty(@dispid, args, @gettypes)
-  end
-  def []=(*args)
-    @obj._setproperty(@dispid, args, @settypes)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/binding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/binding.rb
deleted file mode 100644
index 58a21d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/binding.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - WSDL binding definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Binding < Info
-  attr_reader :name		# required
-  attr_reader :type		# required
-  attr_reader :operations
-  attr_reader :soapbinding
-
-  def initialize
-    super
-    @name = nil
-    @type = nil
-    @operations = XSD::NamedElements.new
-    @soapbinding = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when OperationName
-      o = OperationBinding.new
-      @operations << o
-      o
-    when SOAPBindingName
-      o = WSDL::SOAP::Binding.new
-      @soapbinding = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TypeAttrName
-      @type = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/data.rb
deleted file mode 100644
index 45eaad8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/data.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-# WSDL4R - WSDL data definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'wsdl/documentation'
-require 'wsdl/definitions'
-require 'wsdl/types'
-require 'wsdl/message'
-require 'wsdl/part'
-require 'wsdl/portType'
-require 'wsdl/operation'
-require 'wsdl/param'
-require 'wsdl/binding'
-require 'wsdl/operationBinding'
-require 'wsdl/service'
-require 'wsdl/port'
-require 'wsdl/import'
-
-
-module WSDL
-
-
-ArrayTypeAttrName = XSD::QName.new(Namespace, 'arrayType')
-BindingName = XSD::QName.new(Namespace, 'binding')
-DefinitionsName = XSD::QName.new(Namespace, 'definitions')
-DocumentationName = XSD::QName.new(Namespace, 'documentation')
-FaultName = XSD::QName.new(Namespace, 'fault')
-ImportName = XSD::QName.new(Namespace, 'import')
-InputName = XSD::QName.new(Namespace, 'input')
-MessageName = XSD::QName.new(Namespace, 'message')
-OperationName = XSD::QName.new(Namespace, 'operation')
-OutputName = XSD::QName.new(Namespace, 'output')
-PartName = XSD::QName.new(Namespace, 'part')
-PortName = XSD::QName.new(Namespace, 'port')
-PortTypeName = XSD::QName.new(Namespace, 'portType')
-ServiceName = XSD::QName.new(Namespace, 'service')
-TypesName = XSD::QName.new(Namespace, 'types')
-
-SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
-
-SOAPAddressName = XSD::QName.new(SOAPBindingNamespace, 'address')
-SOAPBindingName = XSD::QName.new(SOAPBindingNamespace, 'binding')
-SOAPHeaderName = XSD::QName.new(SOAPBindingNamespace, 'header')
-SOAPBodyName = XSD::QName.new(SOAPBindingNamespace, 'body')
-SOAPFaultName = XSD::QName.new(SOAPBindingNamespace, 'fault')
-SOAPOperationName = XSD::QName.new(SOAPBindingNamespace, 'operation')
-
-BindingAttrName = XSD::QName.new(nil, 'binding')
-ElementAttrName = XSD::QName.new(nil, 'element')
-LocationAttrName = XSD::QName.new(nil, 'location')
-MessageAttrName = XSD::QName.new(nil, 'message')
-NameAttrName = XSD::QName.new(nil, 'name')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-ParameterOrderAttrName = XSD::QName.new(nil, 'parameterOrder')
-TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
-TypeAttrName = XSD::QName.new(nil, 'type')
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/definitions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/definitions.rb
deleted file mode 100644
index 5235037..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/definitions.rb
+++ /dev/null
@@ -1,250 +0,0 @@
-# WSDL4R - WSDL definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Definitions < Info
-  attr_reader :name
-  attr_reader :targetnamespace
-  attr_reader :imports
-
-  attr_accessor :location
-  attr_reader :importedschema
-
-  def initialize
-    super
-    @name = nil
-    @targetnamespace = nil
-    @location = nil
-    @importedschema = {}
-
-    @types = nil
-    @imports = []
-    @messages = XSD::NamedElements.new
-    @porttypes = XSD::NamedElements.new
-    @bindings = XSD::NamedElements.new
-    @services = XSD::NamedElements.new
-
-    @anontypes = XSD::NamedElements.new
-    @root = self
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__, @name || '(unnamed)')
-  end
-
-  def targetnamespace=(targetnamespace)
-    @targetnamespace = targetnamespace
-    if @name
-      @name = XSD::QName.new(@targetnamespace, @name.name)
-    end
-  end
-
-  def collect_attributes
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_attributes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_attributes)
-    end
-    result
-  end
-
-  def collect_elements
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_elements)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_elements)
-    end
-    result
-  end
-
-  def collect_complextypes
-    result = @anontypes.dup
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_complextypes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_complextypes)
-    end
-    result
-  end
-
-  def collect_simpletypes
-    result = XSD::NamedElements.new
-    if @types
-      @types.schemas.each do |schema|
-	result.concat(schema.collect_simpletypes)
-      end
-    end
-    @imports.each do |import|
-      result.concat(import.content.collect_simpletypes)
-    end
-    result
-  end
-
-  # ToDo: simpletype must be accepted...
-  def add_type(complextype)
-    @anontypes << complextype
-  end
-
-  def messages
-    result = @messages.dup
-    @imports.each do |import|
-      result.concat(import.content.messages) if self.class === import.content
-    end
-    result
-  end
-
-  def porttypes
-    result = @porttypes.dup
-    @imports.each do |import|
-      result.concat(import.content.porttypes) if self.class === import.content
-    end
-    result
-  end
-
-  def bindings
-    result = @bindings.dup
-    @imports.each do |import|
-      result.concat(import.content.bindings) if self.class === import.content
-    end
-    result
-  end
-
-  def services
-    result = @services.dup
-    @imports.each do |import|
-      result.concat(import.content.services) if self.class === import.content
-    end
-    result
-  end
-
-  def message(name)
-    message = @messages[name]
-    return message if message
-    @imports.each do |import|
-      message = import.content.message(name) if self.class === import.content
-      return message if message
-    end
-    nil
-  end
-
-  def porttype(name)
-    porttype = @porttypes[name]
-    return porttype if porttype
-    @imports.each do |import|
-      porttype = import.content.porttype(name) if self.class === import.content
-      return porttype if porttype
-    end
-    nil
-  end
-
-  def binding(name)
-    binding = @bindings[name]
-    return binding if binding
-    @imports.each do |import|
-      binding = import.content.binding(name) if self.class === import.content
-      return binding if binding
-    end
-    nil
-  end
-
-  def service(name)
-    service = @services[name]
-    return service if service
-    @imports.each do |import|
-      service = import.content.service(name) if self.class === import.content
-      return service if service
-    end
-    nil
-  end
-
-  def porttype_binding(name)
-    binding = @bindings.find { |item| item.type == name }
-    return binding if binding
-    @imports.each do |import|
-      binding = import.content.porttype_binding(name) if self.class === import.content
-      return binding if binding
-    end
-    nil
-  end
-
-  def parse_element(element)
-    case element
-    when ImportName
-      o = Import.new
-      @imports << o
-      o
-    when TypesName
-      o = Types.new
-      @types = o
-      o
-    when MessageName
-      o = Message.new
-      @messages << o
-      o
-    when PortTypeName
-      o = PortType.new
-      @porttypes << o
-      o
-    when BindingName
-      o = Binding.new
-      @bindings << o
-      o
-    when ServiceName
-      o = Service.new
-      @services << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TargetNamespaceAttrName
-      self.targetnamespace = value.source
-    else
-      nil
-    end
-  end
-
-  def self.parse_element(element)
-    if element == DefinitionsName
-      Definitions.new
-    else
-      nil
-    end
-  end
-
-private
-
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/documentation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/documentation.rb
deleted file mode 100644
index 3a7fd7d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/documentation.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# WSDL4R - WSDL SOAP documentation element.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Documentation < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/import.rb
deleted file mode 100644
index faf6087..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/import.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# WSDL4R - WSDL import definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/importer'
-
-
-module WSDL
-
-
-class Import < Info
-  attr_reader :namespace
-  attr_reader :location
-  attr_reader :content
-
-  def initialize
-    super
-    @namespace = nil
-    @location = nil
-    @content = nil
-    @web_client = nil
-  end
-
-  def parse_element(element)
-    case element
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NamespaceAttrName
-      @namespace = value.source
-      if @content
-	@content.targetnamespace = @namespace
-      end
-      @namespace
-    when LocationAttrName
-      @location = URI.parse(value.source)
-      if @location.relative? and !parent.location.nil? and
-          !parent.location.relative?
-        @location = parent.location + @location
-      end
-      if root.importedschema.key?(@location)
-        @content = root.importedschema[@location]
-      else
-        root.importedschema[@location] = nil      # placeholder
-        @content = import(@location)
-        if @content.is_a?(Definitions)
-          @content.root = root
-          if @namespace
-            @content.targetnamespace = @namespace
-          end
-        end
-        root.importedschema[@location] = @content
-      end
-      @location
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location, root)
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/importer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/importer.rb
deleted file mode 100644
index 481bd81..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/importer.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# WSDL4R - WSDL importer library.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/importer'
-require 'wsdl/parser'
-
-
-module WSDL
-
-
-class Importer < WSDL::XMLSchema::Importer
-  def self.import(location, originalroot = nil)
-    new.import(location, originalroot)
-  end
-
-private
-
-  def parse(content, location, originalroot)
-    opt = {
-      :location => location,
-      :originalroot => originalroot
-    }
-    begin
-      WSDL::Parser.new(opt).parse(content)
-    rescue WSDL::Parser::ParseError
-      super(content, location, originalroot)
-    end
-  end
-
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/info.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/info.rb
deleted file mode 100644
index ffd9039..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/info.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# WSDL4R - WSDL information base.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module WSDL
-
-
-class Info
-  attr_accessor :root
-  attr_accessor :parent
-  attr_accessor :id
-
-  def initialize
-    @root = nil
-    @parent = nil
-    @id = nil
-  end
-
-  def inspect
-    if self.respond_to?(:name)
-      sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.name)
-    else
-      sprintf("#<%s:0x%x>", self.class.name, __id__)
-    end
-  end
-
-  def parse_element(element); end	# abstract
-  
-  def parse_attr(attr, value); end	# abstract
-
-  def parse_epilogue; end		# abstract
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/message.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/message.rb
deleted file mode 100644
index cecc602..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/message.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - WSDL message definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Message < Info
-  attr_reader :name	# required
-  attr_reader :parts
-
-  def initialize
-    super
-    @name = nil
-    @parts = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when PartName
-      o = Part.new
-      @parts << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(parent.targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operation.rb
deleted file mode 100644
index fb7f4a8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operation.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-# WSDL4R - WSDL operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Operation < Info
-  class NameInfo
-    attr_reader :op_name
-    attr_reader :optype_name
-    attr_reader :parts
-    def initialize(op_name, optype_name, parts)
-      @op_name = op_name
-      @optype_name = optype_name
-      @parts = parts
-    end
-  end
-
-  attr_reader :name		# required
-  attr_reader :parameter_order	# optional
-  attr_reader :input
-  attr_reader :output
-  attr_reader :fault
-  attr_reader :type		# required
-
-  def initialize
-    super
-    @name = nil
-    @type = nil
-    @parameter_order = nil
-    @input = nil
-    @output = nil
-    @fault = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def input_info
-    typename = input.find_message.name
-    NameInfo.new(@name, typename, inputparts)
-  end
-
-  def output_info
-    typename = output.find_message.name
-    NameInfo.new(@name, typename, outputparts)
-  end
-
-  def inputparts
-    sort_parts(input.find_message.parts)
-  end
-
-  def inputname
-    XSD::QName.new(targetnamespace, input.name ? input.name.name : @name.name)
-  end
-
-  def outputparts
-    sort_parts(output.find_message.parts)
-  end
-
-  def outputname
-    XSD::QName.new(targetnamespace,
-      output.name ? output.name.name : @name.name + 'Response')
-  end
-
-  def parse_element(element)
-    case element
-    when InputName
-      o = Param.new
-      @input = o
-      o
-    when OutputName
-      o = Param.new
-      @output = o
-      o
-    when FaultName
-      o = Param.new
-      @fault << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when TypeAttrName
-      @type = value
-    when ParameterOrderAttrName
-      @parameter_order = value.source.split(/\s+/)
-    else
-      nil
-    end
-  end
-
-private
-
-  def sort_parts(parts)
-    return parts.dup unless parameter_order
-    result = []
-    parameter_order.each do |orderitem|
-      if (ele = parts.find { |part| part.name == orderitem })
-	result << ele
-      end
-    end
-    if result.length == 0
-      return parts.dup
-    end
-    # result length can be shorter than parts's.
-    # return part must not be a part of the parameterOrder.
-    result
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operationBinding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operationBinding.rb
deleted file mode 100644
index c2b8cd6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/operationBinding.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# WSDL4R - WSDL bound operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class OperationBinding < Info
-  attr_reader :name		# required
-  attr_reader :input
-  attr_reader :output
-  attr_reader :fault
-  attr_reader :soapoperation
-
-  def initialize
-    super
-    @name = nil
-    @input = nil
-    @output = nil
-    @fault = []
-    @soapoperation = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def porttype
-    root.porttype(parent.type)
-  end
-
-  def find_operation
-    porttype.operations[@name] or raise RuntimeError.new("#{@name} not found")
-  end
-
-  def soapoperation_name
-    if @soapoperation
-      @soapoperation.input_info.op_name
-    else
-      find_operation.name
-    end
-  end
-
-  def soapoperation_style
-    style = nil
-    if @soapoperation
-      style = @soapoperation.operation_style
-    elsif parent.soapbinding
-      style = parent.soapbinding.style
-    else
-      raise TypeError.new("operation style definition not found")
-    end
-    style || :document
-  end
-
-  def soapaction
-    if @soapoperation
-      @soapoperation.soapaction
-    else
-      nil
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when InputName
-      o = Param.new
-      @input = o
-      o
-    when OutputName
-      o = Param.new
-      @output = o
-      o
-    when FaultName
-      o = Param.new
-      @fault << o
-      o
-    when SOAPOperationName
-      o = WSDL::SOAP::Operation.new
-      @soapoperation = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/param.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/param.rb
deleted file mode 100644
index b6836b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/param.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# WSDL4R - WSDL param definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Param < Info
-  attr_reader :message	# required
-  attr_reader :name	# optional but required for fault.
-  attr_reader :soapbody
-  attr_reader :soapheader
-  attr_reader :soapfault
-
-  def initialize
-    super
-    @message = nil
-    @name = nil
-    @soapbody = nil
-    @soapheader = []
-    @soapfault = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def find_message
-    root.message(@message) or raise RuntimeError.new("#{@message} not found")
-  end
-
-  def soapbody_use
-    if @soapbody
-      @soapbody.use || :literal
-    else
-      raise RuntimeError.new("soap:body not found")
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when SOAPBodyName
-      o = WSDL::SOAP::Body.new
-      @soapbody = o
-      o
-    when SOAPHeaderName
-      o = WSDL::SOAP::Header.new
-      @soapheader << o
-      o
-    when SOAPFaultName
-      o = WSDL::SOAP::Fault.new
-      @soap_fault = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      if value.namespace.nil?
-        value = XSD::QName.new(targetnamespace, value.source)
-      end
-      @message = value
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/parser.rb
deleted file mode 100644
index f96e96e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/parser.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-# WSDL4R - WSDL XML Instance parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-require 'xsd/datatypes'
-require 'xsd/xmlparser'
-require 'wsdl/wsdl'
-require 'wsdl/data'
-require 'wsdl/xmlSchema/data'
-require 'wsdl/soap/data'
-
-
-module WSDL
-
-
-class Parser
-  include WSDL
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-  class AttributeConstraintError < FormatDecodeError; end
-
-private
-
-  class ParseFrame
-    attr_reader :ns
-    attr_reader :name
-    attr_accessor :node
-
-  private
-
-    def initialize(ns, name, node)
-      @ns = ns
-      @name = name
-      @node = node
-    end
-  end
-
-public
-
-  def initialize(opt = {})
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @ignored = {}
-    @location = opt[:location]
-    @originalroot = opt[:originalroot]
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-    @textbuf = ''
-    @parser.do_parse(string_or_readable)
-    @lastnode
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-    else
-      ns = XSD::NS.new
-      parent = nil
-    end
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    node = decode_tag(ns, name, attrs, parent)
-    @parsestack << ParseFrame.new(ns, name, node)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      ns = lastframe.ns
-      decode_text(ns, text)
-    else
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node)
-    @lastnode = lastframe.node
-  end
-
-private
-
-  def decode_tag(ns, name, attrs, parent)
-    o = nil
-    elename = ns.parse(name)
-    if !parent
-      if elename == DefinitionsName
-	o = Definitions.parse_element(elename)
-        o.location = @location
-      else
-	raise UnknownElementError.new("unknown element: #{elename}")
-      end
-      o.root = @originalroot if @originalroot   # o.root = o otherwise
-    else
-      if elename == XMLSchema::AnnotationName
-        # only the first annotation element is allowed for each xsd element.
-        o = XMLSchema::Annotation.new
-      else
-        o = parent.parse_element(elename)
-      end
-      unless o
-        unless @ignored.key?(elename)
-          warn("ignored element: #{elename}")
-          @ignored[elename] = elename
-        end
-	o = Documentation.new	# which accepts any element.
-      end
-      # node could be a pseudo element.  pseudo element has its own parent.
-      o.root = parent.root
-      o.parent = parent if o.parent.nil?
-    end
-    attrs.each do |key, value|
-      attr_ele = ns.parse(key, true)
-      value_ele = ns.parse(value, true)
-      value_ele.source = value  # for recovery; value may not be a QName
-      unless o.parse_attr(attr_ele, value_ele)
-        unless @ignored.key?(attr_ele)
-          warn("ignored attr: #{attr_ele}")
-          @ignored[attr_ele] = attr_ele
-        end
-      end
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    node.parse_epilogue
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/part.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/part.rb
deleted file mode 100644
index 5dafd4e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/part.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# WSDL4R - WSDL part definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Part < Info
-  attr_reader :name	# required
-  attr_reader :element	# optional
-  attr_reader :type	# optional
-
-  def initialize
-    super
-    @name = nil
-    @element = nil
-    @type = nil
-  end
-
-  def parse_element(element)
-    case element
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = value.source
-    when ElementAttrName
-      @element = value
-    when TypeAttrName
-      @type = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/port.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/port.rb
deleted file mode 100644
index 883cc32..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/port.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-# WSDL4R - WSDL port definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Port < Info
-  attr_reader :name		# required
-  attr_reader :binding		# required
-  attr_reader :soap_address
-
-  def initialize
-    super
-    @name = nil
-    @binding = nil
-    @soap_address = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def porttype
-    root.porttype(find_binding.type)
-  end
-
-  def find_binding
-    root.binding(@binding) or raise RuntimeError.new("#{@binding} not found")
-  end
-
-  def inputoperation_map
-    result = {}
-    find_binding.operations.each do |op_bind|
-      op_info = op_bind.soapoperation.input_info
-      result[op_info.op_name] = op_info
-    end
-    result
-  end
-
-  def outputoperation_map
-    result = {}
-    find_binding.operations.each do |op_bind|
-      op_info = op_bind.soapoperation.output_info
-      result[op_info.op_name] = op_info
-    end
-    result
-  end
-
-  def parse_element(element)
-    case element
-    when SOAPAddressName
-      o = WSDL::SOAP::Address.new
-      @soap_address = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when BindingAttrName
-      @binding = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/portType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/portType.rb
deleted file mode 100644
index 03e3769..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/portType.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - WSDL portType definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class PortType < Info
-  attr_reader :name		# required
-  attr_reader :operations
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def initialize
-    super
-    @name = nil
-    @operations = XSD::NamedElements.new
-  end
-
-  def find_binding
-    root.bindings.find { |item| item.type == @name } or
-      raise RuntimeError.new("#{@name} not found")
-  end
-
-  def locations
-    bind_name = find_binding.name
-    result = []
-    root.services.each do |service|
-      service.ports.each do |port|
-        if port.binding == bind_name
-          result << port.soap_address.location if port.soap_address
-        end
-      end
-    end
-    result
-  end
-
-  def parse_element(element)
-    case element
-    when OperationName
-      o = Operation.new
-      @operations << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/service.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/service.rb
deleted file mode 100644
index 652b127..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/service.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-# WSDL4R - WSDL service definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-
-
-class Service < Info
-  attr_reader :name		# required
-  attr_reader :ports
-  attr_reader :soap_address
-
-  def initialize
-    super
-    @name = nil
-    @ports = XSD::NamedElements.new
-    @soap_address = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when PortName
-      o = Port.new
-      @ports << o
-      o
-    when SOAPAddressName
-      o = WSDL::SOAP::Address.new
-      @soap_address = o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/address.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/address.rb
deleted file mode 100644
index 0b2b59c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/address.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# WSDL4R - WSDL SOAP address definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Address < Info
-  attr_reader :location
-
-  def initialize
-    super
-    @location = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when LocationAttrName
-      @location = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/binding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/binding.rb
deleted file mode 100644
index 7e15a99..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/binding.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# WSDL4R - WSDL SOAP binding definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Binding < Info
-  attr_reader :style
-  attr_reader :transport
-
-  def initialize
-    super
-    @style = nil
-    @transport = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when StyleAttrName
-      if ["document", "rpc"].include?(value.source)
-	@style = value.source.intern
-      else
-	raise Parser::AttributeConstraintError.new(
-          "Unexpected value #{ value }.")
-      end
-    when TransportAttrName
-      @transport = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/body.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/body.rb
deleted file mode 100644
index 824f812..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/body.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Body < Info
-  attr_reader :parts
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @parts = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when PartsAttrName
-      @parts = value.source
-    when UseAttrName
-      if ['literal', 'encoded'].include?(value.source)
-        @use = value.source.intern
-      else
-        raise RuntimeError.new("unknown use of soap:body: #{value.source}")
-      end
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/cgiStubCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/cgiStubCreator.rb
deleted file mode 100644
index 2c4dff2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/cgiStubCreator.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# WSDL4R - Creating CGI stub code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class CGIStubCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    warn("CGI stub can have only 1 port.  Creating stub for the first port...  Rests are ignored.")
-    port = @definitions.service(service_name).ports[0]
-    dump_porttype(port.porttype.name)
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-    c1 = XSD::CodeGen::ClassDef.new(class_name)
-    c1.def_require("soap/rpc/cgistub")
-    c1.def_require("soap/mapping/registry")
-    c1.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c1.def_code(mr_creator.dump(types))
-    c1.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
-      "::SOAP::RPC::CGIStub")
-    c2.def_method("initialize", "*arg") do
-      <<-EOD
-        super(*arg)
-        servant = #{class_name}.new
-        #{class_name}::Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            @router.add_document_operation(servant, *definitions)
-          else
-            @router.add_rpc_operation(servant, *definitions)
-          end
-        end
-        self.mapping_registry = #{class_name}::MappingRegistry
-        self.level = Logger::Severity::ERROR
-      EOD
-    end
-    c1.dump + "\n" + c2.dump + format(<<-EOD)
-      #{class_name}App.new('app', nil).start
-    EOD
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreator.rb
deleted file mode 100644
index aeb67c0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreator.rb
+++ /dev/null
@@ -1,314 +0,0 @@
-# WSDL4R - Creating class definition from WSDL
-# Copyright (C) 2002, 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/data'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class ClassDefCreator
-  include ClassDefCreatorSupport
-
-  def initialize(definitions)
-    @elements = definitions.collect_elements
-    @simpletypes = definitions.collect_simpletypes
-    @complextypes = definitions.collect_complextypes
-    @faulttypes = nil
-    if definitions.respond_to?(:collect_faulttypes)
-      @faulttypes = definitions.collect_faulttypes
-    end
-  end
-
-  def dump(type = nil)
-    result = "require 'xsd/qname'\n"
-    if type
-      result = dump_classdef(type.name, type)
-    else
-      str = dump_element
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-      str = dump_complextype
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-      str = dump_simpletype
-      unless str.empty?
-        result << "\n" unless result.empty?
-        result << str
-      end
-    end
-    result
-  end
-
-private
-
-  def dump_element
-    @elements.collect { |ele|
-      if ele.local_complextype
-        dump_classdef(ele.name, ele.local_complextype,
-          ele.elementform == 'qualified')
-      elsif ele.local_simpletype
-        dump_simpletypedef(ele.name, ele.local_simpletype)
-      else
-        nil
-      end
-    }.compact.join("\n")
-  end
-
-  def dump_simpletype
-    @simpletypes.collect { |type|
-      dump_simpletypedef(type.name, type)
-    }.compact.join("\n")
-  end
-
-  def dump_complextype
-    @complextypes.collect { |type|
-      case type.compoundtype
-      when :TYPE_STRUCT, :TYPE_EMPTY
-        dump_classdef(type.name, type)
-      when :TYPE_ARRAY
-        dump_arraydef(type)
-      when :TYPE_SIMPLE
-        dump_simpleclassdef(type)
-      when :TYPE_MAP
-        # mapped as a general Hash
-        nil
-      else
-        raise RuntimeError.new(
-          "unknown kind of complexContent: #{type.compoundtype}")
-      end
-    }.compact.join("\n")
-  end
-
-  def dump_simpletypedef(qname, simpletype)
-    if !simpletype.restriction or simpletype.restriction.enumeration.empty?
-      return nil
-    end
-    c = XSD::CodeGen::ModuleDef.new(create_class_name(qname))
-    c.comment = "#{qname}"
-    const = {}
-    simpletype.restriction.enumeration.each do |value|
-      constname = safeconstname(value)
-      const[constname] ||= 0
-      if (const[constname] += 1) > 1
-        constname += "_#{const[constname]}"
-      end
-      c.def_const(constname, ndq(value))
-    end
-    c.dump
-  end
-
-  def dump_simpleclassdef(type_or_element)
-    qname = type_or_element.name
-    base = create_class_name(type_or_element.simplecontent.base)
-    c = XSD::CodeGen::ClassDef.new(create_class_name(qname), base)
-    c.comment = "#{qname}"
-    c.dump
-  end
-
-  def dump_classdef(qname, typedef, qualified = false)
-    if @faulttypes and @faulttypes.index(qname)
-      c = XSD::CodeGen::ClassDef.new(create_class_name(qname),
-        '::StandardError')
-    else
-      c = XSD::CodeGen::ClassDef.new(create_class_name(qname))
-    end
-    c.comment = "#{qname}"
-    c.def_classvar('schema_type', ndq(qname.name))
-    c.def_classvar('schema_ns', ndq(qname.namespace))
-    c.def_classvar('schema_qualified', dq('true')) if qualified
-    schema_element = []
-    init_lines = ''
-    params = []
-    typedef.each_element do |element|
-      if element.type == XSD::AnyTypeName
-        type = nil
-      elsif klass = element_basetype(element)
-        type = klass.name
-      elsif element.type
-        type = create_class_name(element.type)
-      else
-        type = nil      # means anyType.
-        # do we define a class for local complexType from it's name?
-        #   type = create_class_name(element.name)
-        # <element>
-        #   <complexType>
-        #     <seq...>
-        #   </complexType>
-        # </element>
-      end
-      name = name_element(element).name
-      attrname = safemethodname?(name) ? name : safemethodname(name)
-      varname = safevarname(name)
-      c.def_attr(attrname, true, varname)
-      init_lines << "@#{varname} = #{varname}\n"
-      if element.map_as_array?
-        params << "#{varname} = []"
-        type << '[]' if type
-      else
-        params << "#{varname} = nil"
-      end
-      # nil means @@schema_ns + varname
-      eleqname =
-        (varname == name && element.name.namespace == qname.namespace) ?
-        nil : element.name
-      schema_element << [varname, eleqname, type]
-    end
-    unless typedef.attributes.empty?
-      define_attribute(c, typedef.attributes)
-      init_lines << "@__xmlattr = {}\n"
-    end
-    c.def_classvar('schema_element',
-      '[' +
-        schema_element.collect { |varname, name, type|
-          '[' +
-            (
-              if name
-                varname.dump + ', [' + ndq(type) + ', ' + dqname(name) + ']'
-              else
-                varname.dump + ', ' + ndq(type)
-              end
-            ) +
-          ']'
-        }.join(', ') +
-      ']'
-    )
-    c.def_method('initialize', *params) do
-      init_lines
-    end
-    c.dump
-  end
-
-  def element_basetype(ele)
-    if klass = basetype_class(ele.type)
-      klass
-    elsif ele.local_simpletype
-      basetype_class(ele.local_simpletype.base)
-    else
-      nil
-    end
-  end
-
-  def attribute_basetype(attr)
-    if klass = basetype_class(attr.type)
-      klass
-    elsif attr.local_simpletype
-      basetype_class(attr.local_simpletype.base)
-    else
-      nil
-    end
-  end
-
-  def basetype_class(type)
-    return nil if type.nil?
-    if simpletype = @simpletypes[type]
-      basetype_mapped_class(simpletype.base)
-    else
-      basetype_mapped_class(type)
-    end
-  end
-
-  def define_attribute(c, attributes)
-    schema_attribute = []
-    attributes.each do |attribute|
-      name = name_attribute(attribute)
-      if klass = attribute_basetype(attribute)
-        type = klass.name
-      else
-        type = nil
-      end
-      methodname = safemethodname('xmlattr_' + name.name)
-      c.def_method(methodname) do <<-__EOD__
-          (@__xmlattr ||= {})[#{dqname(name)}]
-        __EOD__
-      end
-      c.def_method(methodname + '=', 'value') do <<-__EOD__
-          (@__xmlattr ||= {})[#{dqname(name)}] = value
-        __EOD__
-      end
-      schema_attribute << [name, type]
-    end
-    c.def_classvar('schema_attribute',
-      '{' +
-        schema_attribute.collect { |name, type|
-          dqname(name) + ' => ' + ndq(type)
-        }.join(', ') +
-      '}'
-    )
-  end
-
-  def name_element(element)
-    return element.name if element.name 
-    return element.ref if element.ref
-    raise RuntimeError.new("cannot define name of #{element}")
-  end
-
-  def name_attribute(attribute)
-    return attribute.name if attribute.name 
-    return attribute.ref if attribute.ref
-    raise RuntimeError.new("cannot define name of #{attribute}")
-  end
-
-  DEFAULT_ITEM_NAME = XSD::QName.new(nil, 'item')
-
-  def dump_arraydef(complextype)
-    qname = complextype.name
-    c = XSD::CodeGen::ClassDef.new(create_class_name(qname), '::Array')
-    c.comment = "#{qname}"
-    child_type = complextype.child_type
-    c.def_classvar('schema_type', ndq(child_type.name))
-    c.def_classvar('schema_ns', ndq(child_type.namespace))
-    child_element = complextype.find_aryelement
-    schema_element = []
-    if child_type == XSD::AnyTypeName
-      type = nil
-    elsif child_element and (klass = element_basetype(child_element))
-      type = klass.name
-    elsif child_type
-      type = create_class_name(child_type)
-    else
-      type = nil
-    end
-    if child_element
-      if child_element.map_as_array?
-        type << '[]' if type
-      end
-      child_element_name = child_element.name
-    else
-      child_element_name = DEFAULT_ITEM_NAME
-    end
-    schema_element << [child_element_name.name, child_element_name, type]
-    c.def_classvar('schema_element',
-      '[' +
-        schema_element.collect { |varname, name, type|
-          '[' +
-            (
-              if name
-                varname.dump + ', [' + ndq(type) + ', ' + dqname(name) + ']'
-              else
-                varname.dump + ', ' + ndq(type)
-              end
-            ) +
-          ']'
-        }.join(', ') +
-      ']'
-    )
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb
deleted file mode 100644
index 8f33565..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/classDefCreatorSupport.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-# WSDL4R - Creating class code support from WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'soap/mapping'
-require 'soap/mapping/typeMap'
-require 'xsd/codegen/gensupport'
-
-
-module WSDL
-module SOAP
-
-
-module ClassDefCreatorSupport
-  include XSD::CodeGen::GenSupport
-
-  def create_class_name(qname)
-    if klass = basetype_mapped_class(qname)
-      ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name
-    else
-      safeconstname(qname.name)
-    end
-  end
-
-  def basetype_mapped_class(name)
-    ::SOAP::TypeMap[name]
-  end
-
-  def dump_method_signature(operation)
-    name = operation.name.name
-    input = operation.input
-    output = operation.output
-    fault = operation.fault
-    signature = "#{ name }#{ dump_inputparam(input) }"
-    str = <<__EOD__
-# SYNOPSIS
-#   #{name}#{dump_inputparam(input)}
-#
-# ARGS
-#{dump_inout_type(input).chomp}
-#
-# RETURNS
-#{dump_inout_type(output).chomp}
-#
-__EOD__
-    unless fault.empty?
-      faultstr = (fault.collect { |f| dump_inout_type(f).chomp }).join(', ')
-      str <<<<__EOD__
-# RAISES
-#   #{faultstr}
-#
-__EOD__
-    end
-    str
-  end
-
-  def dq(ele)
-    ele.dump
-  end
-
-  def ndq(ele)
-    ele.nil? ? 'nil' : dq(ele)
-  end
-
-  def sym(ele)
-    ':' + ele
-  end
-
-  def dqname(qname)
-    qname.dump
-  end
-
-private
-
-  def dump_inout_type(param)
-    if param
-      message = param.find_message
-      params = ""
-      message.parts.each do |part|
-        name = safevarname(part.name)
-        if part.type
-          typename = safeconstname(part.type.name)
-          params << add_at("#   #{name}", "#{typename} - #{part.type}\n", 20)
-        elsif part.element
-          typename = safeconstname(part.element.name)
-          params << add_at("#   #{name}", "#{typename} - #{part.element}\n", 20)
-        end
-      end
-      unless params.empty?
-        return params
-      end
-    end
-    "#   N/A\n"
-  end
-
-  def dump_inputparam(input)
-    message = input.find_message
-    params = ""
-    message.parts.each do |part|
-      params << ", " unless params.empty?
-      params << safevarname(part.name)
-    end
-    if params.empty?
-      ""
-    else
-      "(#{ params })"
-    end
-  end
-
-  def add_at(base, str, pos)
-    if base.size >= pos
-      base + ' ' + str
-    else
-      base + ' ' * (pos - base.size) + str
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb
deleted file mode 100644
index 916f0d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/clientSkeltonCreator.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# WSDL4R - Creating client skelton code from WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class ClientSkeltonCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    result = ""
-    @definitions.service(service_name).ports.each do |port|
-      result << dump_porttype(port.porttype.name)
-      result << "\n"
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    drv_name = create_class_name(name)
-
-    result = ""
-    result << <<__EOD__
-endpoint_url = ARGV.shift
-obj = #{ drv_name }.new(endpoint_url)
-
-# run ruby with -d to see SOAP wiredumps.
-obj.wiredump_dev = STDERR if $DEBUG
-
-__EOD__
-    @definitions.porttype(name).operations.each do |operation|
-      result << dump_method_signature(operation)
-      result << dump_input_init(operation.input) << "\n"
-      result << dump_operation(operation) << "\n\n"
-    end
-    result
-  end
-
-  def dump_operation(operation)
-    name = operation.name
-    input = operation.input
-    "puts obj.#{ safemethodname(name.name) }#{ dump_inputparam(input) }"
-  end
-
-  def dump_input_init(input)
-    result = input.find_message.parts.collect { |part|
-      safevarname(part.name)
-    }.join(" = ")
-    if result.empty?
-      ""
-    else
-      result << " = nil"
-    end
-    result
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/complexType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/complexType.rb
deleted file mode 100644
index b2e13d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/complexType.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-# WSDL4R - SOAP complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/complexType'
-require 'soap/mapping'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexType < Info
-  def compoundtype
-    @compoundtype ||= check_type
-  end
-
-  def check_type
-    if content
-      if attributes.empty? and
-          content.elements.size == 1 and content.elements[0].maxoccurs != '1'
-        if name == ::SOAP::Mapping::MapQName
-          :TYPE_MAP
-        else
-          :TYPE_ARRAY
-        end
-      else
-	:TYPE_STRUCT
-      end
-    elsif complexcontent
-      if complexcontent.base == ::SOAP::ValueArrayName
-        :TYPE_ARRAY
-      else
-        complexcontent.basetype.check_type
-      end
-    elsif simplecontent
-      :TYPE_SIMPLE
-    elsif !attributes.empty?
-      :TYPE_STRUCT
-    else # empty complexType definition (seen in partner.wsdl of salesforce)
-      :TYPE_EMPTY
-    end
-  end
-
-  def child_type(name = nil)
-    case compoundtype
-    when :TYPE_STRUCT
-      if ele = find_element(name)
-        ele.type
-      elsif ele = find_element_by_name(name.name)
-	ele.type
-      end
-    when :TYPE_ARRAY
-      @contenttype ||= content_arytype
-    when :TYPE_MAP
-      item_ele = find_element_by_name("item") or
-        raise RuntimeError.new("'item' element not found in Map definition.")
-      content = item_ele.local_complextype or
-        raise RuntimeError.new("No complexType definition for 'item'.")
-      if ele = content.find_element(name)
-        ele.type
-      elsif ele = content.find_element_by_name(name.name)
-        ele.type
-      end
-    else
-      raise NotImplementedError.new("Unknown kind of complexType.")
-    end
-  end
-
-  def child_defined_complextype(name)
-    ele = nil
-    case compoundtype
-    when :TYPE_STRUCT, :TYPE_MAP
-      unless ele = find_element(name)
-       	if name.namespace.nil?
-  	  ele = find_element_by_name(name.name)
-   	end
-      end
-    when :TYPE_ARRAY
-      if content.elements.size == 1
-	ele = content.elements[0]
-      else
-	raise RuntimeError.new("Assert: must not reach.")
-      end
-    else
-      raise RuntimeError.new("Assert: Not implemented.")
-    end
-    unless ele
-      raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
-    end
-    ele.local_complextype
-  end
-
-  def find_arytype
-    unless compoundtype == :TYPE_ARRAY
-      raise RuntimeError.new("Assert: not for array")
-    end
-    if complexcontent
-      complexcontent.attributes.each do |attribute|
-	if attribute.ref == ::SOAP::AttrArrayTypeName
-	  return attribute.arytype
-	end
-      end
-      if check_array_content(complexcontent.content)
-        return element_simpletype(complexcontent.content.elements[0])
-      end
-    elsif check_array_content(content)
-      return element_simpletype(content.elements[0])
-    end
-    raise RuntimeError.new("Assert: Unknown array definition.")
-  end
-
-  def find_aryelement
-    unless compoundtype == :TYPE_ARRAY
-      raise RuntimeError.new("Assert: not for array")
-    end
-    if complexcontent
-      if check_array_content(complexcontent.content)
-        return complexcontent.content.elements[0]
-      end
-    elsif check_array_content(content)
-      return content.elements[0]
-    end
-    nil # use default item name
-  end
-
-private
-
-  def element_simpletype(element)
-    if element.type
-      element.type 
-    elsif element.local_simpletype
-      element.local_simpletype.base
-    else
-      nil
-    end
-  end
-
-  def check_array_content(content)
-    content and content.elements.size == 1 and
-      content.elements[0].maxoccurs != '1'
-  end
-
-  def content_arytype
-    if arytype = find_arytype
-      ns = arytype.namespace
-      name = arytype.name.sub(/\[(?:,)*\]$/, '')
-      XSD::QName.new(ns, name)
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/data.rb
deleted file mode 100644
index 48512d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/data.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# WSDL4R - WSDL SOAP binding data definitions.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'wsdl/soap/definitions'
-require 'wsdl/soap/binding'
-require 'wsdl/soap/operation'
-require 'wsdl/soap/body'
-require 'wsdl/soap/element'
-require 'wsdl/soap/header'
-require 'wsdl/soap/headerfault'
-require 'wsdl/soap/fault'
-require 'wsdl/soap/address'
-require 'wsdl/soap/complexType'
-
-
-module WSDL
-module SOAP
-
-
-HeaderFaultName = XSD::QName.new(SOAPBindingNamespace, 'headerfault')
-
-LocationAttrName = XSD::QName.new(nil, 'location')
-StyleAttrName = XSD::QName.new(nil, 'style')
-TransportAttrName = XSD::QName.new(nil, 'transport')
-UseAttrName = XSD::QName.new(nil, 'use')
-PartsAttrName = XSD::QName.new(nil, 'parts')
-PartAttrName = XSD::QName.new(nil, 'part')
-NameAttrName = XSD::QName.new(nil, 'name')
-MessageAttrName = XSD::QName.new(nil, 'message')
-EncodingStyleAttrName = XSD::QName.new(nil, 'encodingStyle')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-SOAPActionAttrName = XSD::QName.new(nil, 'soapAction')
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/definitions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/definitions.rb
deleted file mode 100644
index b014d5a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/definitions.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-# WSDL4R - WSDL additional definitions for SOAP.
-# Copyright (C) 2002-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-require 'soap/mapping'
-
-
-module WSDL
-
-
-class Definitions < Info
-  def self.soap_rpc_complextypes
-    types = XSD::NamedElements.new
-    types << array_complextype
-    types << fault_complextype
-    types << exception_complextype
-    types
-  end
-
-  def self.array_complextype
-    type = XMLSchema::ComplexType.new(::SOAP::ValueArrayName)
-    type.complexcontent = XMLSchema::ComplexContent.new
-    type.complexcontent.base = ::SOAP::ValueArrayName
-    attr = XMLSchema::Attribute.new
-    attr.ref = ::SOAP::AttrArrayTypeName
-    anytype = XSD::AnyTypeName.dup
-    anytype.name += '[]'
-    attr.arytype = anytype
-    type.complexcontent.attributes << attr
-    type
-  end
-
-=begin
-<xs:complexType name="Fault" final="extension">
-  <xs:sequence>
-    <xs:element name="faultcode" type="xs:QName" /> 
-    <xs:element name="faultstring" type="xs:string" /> 
-    <xs:element name="faultactor" type="xs:anyURI" minOccurs="0" /> 
-    <xs:element name="detail" type="tns:detail" minOccurs="0" /> 
-  </xs:sequence>
-</xs:complexType>
-=end
-  def self.fault_complextype
-    type = XMLSchema::ComplexType.new(::SOAP::EleFaultName)
-    faultcode = XMLSchema::Element.new(::SOAP::EleFaultCodeName, XSD::XSDQName::Type)
-    faultstring = XMLSchema::Element.new(::SOAP::EleFaultStringName, XSD::XSDString::Type)
-    faultactor = XMLSchema::Element.new(::SOAP::EleFaultActorName, XSD::XSDAnyURI::Type)
-    faultactor.minoccurs = 0
-    detail = XMLSchema::Element.new(::SOAP::EleFaultDetailName, XSD::AnyTypeName)
-    detail.minoccurs = 0
-    type.all_elements = [faultcode, faultstring, faultactor, detail]
-    type.final = 'extension'
-    type
-  end
-
-  def self.exception_complextype
-    type = XMLSchema::ComplexType.new(XSD::QName.new(
-	::SOAP::Mapping::RubyCustomTypeNamespace, 'SOAPException'))
-    excn_name = XMLSchema::Element.new(XSD::QName.new(nil, 'excn_type_name'), XSD::XSDString::Type)
-    cause = XMLSchema::Element.new(XSD::QName.new(nil, 'cause'), XSD::AnyTypeName)
-    backtrace = XMLSchema::Element.new(XSD::QName.new(nil, 'backtrace'), ::SOAP::ValueArrayName)
-    message = XMLSchema::Element.new(XSD::QName.new(nil, 'message'), XSD::XSDString::Type)
-    type.all_elements = [excn_name, cause, backtrace, message]
-    type
-  end
-
-  def soap_rpc_complextypes(binding)
-    types = rpc_operation_complextypes(binding)
-    types + self.class.soap_rpc_complextypes
-  end
-
-  def collect_faulttypes
-    result = []
-    collect_fault_messages.each do |name|
-      faultparts = message(name).parts
-      if faultparts.size != 1
-	raise RuntimeError.new("expecting fault message to have only 1 part")
-      end
-      if result.index(faultparts[0].type).nil?
-	result << faultparts[0].type
-      end
-    end
-    result
-  end
-
-private
-
-  def collect_fault_messages
-    result = []
-    porttypes.each do |porttype|
-      porttype.operations.each do |operation|
-	operation.fault.each do |fault|
-	  if result.index(fault.message).nil?
-	    result << fault.message
-	  end
-	end
-      end
-    end
-    result
-  end
-
-  def rpc_operation_complextypes(binding)
-    types = XSD::NamedElements.new
-    binding.operations.each do |op_bind|
-      if op_bind_rpc?(op_bind)
-	operation = op_bind.find_operation
-	if op_bind.input
-	  type = XMLSchema::ComplexType.new(op_bind.soapoperation_name)
-	  message = messages[operation.input.message]
-	  type.sequence_elements = elements_from_message(message)
-	  types << type
-	end
-	if op_bind.output
-	  type = XMLSchema::ComplexType.new(operation.outputname)
-	  message = messages[operation.output.message]
-	  type.sequence_elements = elements_from_message(message)
-	  types << type
-	end
-      end
-    end
-    types
-  end
-
-  def op_bind_rpc?(op_bind)
-    op_bind.soapoperation_style == :rpc
-  end
-
-  def elements_from_message(message)
-    message.parts.collect { |part|
-      if part.element
-        collect_elements[part.element]
-      elsif part.name.nil? or part.type.nil?
-	raise RuntimeError.new("part of a message must be an element or typed")
-      else
-        qname = XSD::QName.new(nil, part.name)
-        XMLSchema::Element.new(qname, part.type)
-      end
-    }
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/driverCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/driverCreator.rb
deleted file mode 100644
index eba7c15..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/driverCreator.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# WSDL4R - Creating driver code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class DriverCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(porttype = nil)
-    if porttype.nil?
-      result = ""
-      @definitions.porttypes.each do |type|
-	result << dump_porttype(type.name)
-	result << "\n"
-      end
-    else
-      result = dump_porttype(porttype)
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-    binding = @definitions.bindings.find { |item| item.type == name }
-    return '' unless binding.soapbinding        # not a SOAP binding
-    address = @definitions.porttype(name).locations[0]
-
-    c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
-    c.def_require("soap/rpc/driver")
-    c.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c.def_const("DefaultEndpointUrl", ndq(address))
-    c.def_code(mr_creator.dump(types))
-    c.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c.def_method("initialize", "endpoint_url = nil") do
-      <<-EOD
-        endpoint_url ||= DefaultEndpointUrl
-        super(endpoint_url, nil)
-        self.mapping_registry = MappingRegistry
-        init_methods
-      EOD
-    end
-    c.def_privatemethod("init_methods") do
-      <<-EOD
-        Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            add_document_operation(*definitions)
-          else
-            add_rpc_operation(*definitions)
-            qname = definitions[0]
-            name = definitions[2]
-            if qname.name != name and qname.name.capitalize == name.capitalize
-              ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
-                __send__(name, *arg)
-              end
-            end
-          end
-        end
-      EOD
-    end
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/element.rb
deleted file mode 100644
index 0fa6017..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/element.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# WSDL4R - XMLSchema element definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/xmlSchema/element'
-
-
-module WSDL
-module XMLSchema
-
-
-class Element < Info
-  def map_as_array?
-    maxoccurs != '1'
-  end
-
-  def attributes
-    @local_complextype.attributes
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/fault.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/fault.rb
deleted file mode 100644
index 2862b65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/fault.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Fault < Info
-  attr_reader :name	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @name = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/header.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/header.rb
deleted file mode 100644
index 8d7c4e9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/header.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Header < Info
-  attr_reader :headerfault
-
-  attr_reader :message	# required
-  attr_reader :part	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @message = nil
-    @part = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-    @headerfault = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def find_message
-    root.message(@message) or raise RuntimeError.new("#{@message} not found")
-  end
-
-  def find_part
-    find_message.parts.each do |part|
-      if part.name == @part
-	return part
-      end
-    end
-    raise RuntimeError.new("#{@part} not found")
-  end
-
-  def parse_element(element)
-    case element
-    when HeaderFaultName
-      o = WSDL::SOAP::HeaderFault.new
-      @headerfault = o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      if value.namespace.nil?
-        value = XSD::QName.new(targetnamespace, value.source)
-      end
-      @message = value
-    when PartAttrName
-      @part = value.source
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/headerfault.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/headerfault.rb
deleted file mode 100644
index d6b14f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/headerfault.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - WSDL SOAP body definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class HeaderFault < Info
-  attr_reader :message	# required
-  attr_reader :part	# required
-  attr_reader :use	# required
-  attr_reader :encodingstyle
-  attr_reader :namespace
-
-  def initialize
-    super
-    @message = nil
-    @part = nil
-    @use = nil
-    @encodingstyle = nil
-    @namespace = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MessageAttrName
-      @message = value
-    when PartAttrName
-      @part = value.source
-    when UseAttrName
-      @use = value.source
-    when EncodingStyleAttrName
-      @encodingstyle = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb
deleted file mode 100644
index 8669339..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/mappingRegistryCreator.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# WSDL4R - Creating MappingRegistry code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class MappingRegistryCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-    @complextypes = @definitions.collect_complextypes
-    @types = nil
-  end
-
-  def dump(types)
-    @types = types
-    map_cache = []
-    map = ""
-    @types.each do |type|
-      if map_cache.index(type).nil?
-	map_cache << type
-	if type.namespace != XSD::Namespace
-	  if typemap = dump_typemap(type)
-            map << typemap
-          end
-	end
-      end
-   end
-    return map
-  end
-
-private
-
-  def dump_typemap(type)
-    if definedtype = @complextypes[type]
-      case definedtype.compoundtype
-      when :TYPE_STRUCT
-        dump_struct_typemap(definedtype)
-      when :TYPE_ARRAY
-        dump_array_typemap(definedtype)
-      when :TYPE_MAP, :TYPE_EMPTY
-        nil
-      else
-        raise NotImplementedError.new("must not reach here")
-      end
-    end
-  end
-
-  def dump_struct_typemap(definedtype)
-    ele = definedtype.name
-    return <<__EOD__
-MappingRegistry.set(
-  #{create_class_name(ele)},
-  ::SOAP::SOAPStruct,
-  ::SOAP::Mapping::Registry::TypedStructFactory,
-  { :type => #{dqname(ele)} }
-)
-__EOD__
-  end
-
-  def dump_array_typemap(definedtype)
-    ele = definedtype.name
-    arytype = definedtype.find_arytype || XSD::AnyTypeName
-    type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, ''))
-    @types << type
-    return <<__EOD__
-MappingRegistry.set(
-  #{create_class_name(ele)},
-  ::SOAP::SOAPArray,
-  ::SOAP::Mapping::Registry::TypedArrayFactory,
-  { :type => #{dqname(type)} }
-)
-__EOD__
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb
deleted file mode 100644
index f3ffadb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb
+++ /dev/null
@@ -1,228 +0,0 @@
-# WSDL4R - Creating driver code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'soap/rpc/element'
-
-
-module WSDL
-module SOAP
-
-
-class MethodDefCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-    @simpletypes = @definitions.collect_simpletypes
-    @complextypes = @definitions.collect_complextypes
-    @elements = @definitions.collect_elements
-    @types = []
-  end
-
-  def dump(porttype)
-    @types.clear
-    result = ""
-    operations = @definitions.porttype(porttype).operations
-    binding = @definitions.porttype_binding(porttype)
-    operations.each do |operation|
-      op_bind = binding.operations[operation.name]
-      next unless op_bind # no binding is defined
-      next unless op_bind.soapoperation # not a SOAP operation binding
-      result << ",\n" unless result.empty?
-      result << dump_method(operation, op_bind).chomp
-    end
-    return result, @types
-  end
-
-  def collect_rpcparameter(operation)
-    result = operation.inputparts.collect { |part|
-      collect_type(part.type)
-      param_set(::SOAP::RPC::SOAPMethod::IN, part.name, rpcdefinedtype(part))
-    }
-    outparts = operation.outputparts
-    if outparts.size > 0
-      retval = outparts[0]
-      collect_type(retval.type)
-      result << param_set(::SOAP::RPC::SOAPMethod::RETVAL, retval.name,
-        rpcdefinedtype(retval))
-      cdr(outparts).each { |part|
-	collect_type(part.type)
-	result << param_set(::SOAP::RPC::SOAPMethod::OUT, part.name,
-          rpcdefinedtype(part))
-      }
-    end
-    result
-  end
-
-  def collect_documentparameter(operation)
-    param = []
-    operation.inputparts.each do |input|
-      param << param_set(::SOAP::RPC::SOAPMethod::IN, input.name,
-        documentdefinedtype(input), elementqualified(input))
-    end
-    operation.outputparts.each do |output|
-      param << param_set(::SOAP::RPC::SOAPMethod::OUT, output.name,
-        documentdefinedtype(output), elementqualified(output))
-    end
-    param
-  end
-
-private
-
-  def dump_method(operation, binding)
-    name = safemethodname(operation.name.name)
-    name_as = operation.name.name
-    style = binding.soapoperation_style
-    inputuse = binding.input.soapbody_use
-    outputuse = binding.output.soapbody_use
-    namespace = binding.input.soapbody.namespace
-    if style == :rpc
-      qname = XSD::QName.new(namespace, name_as)
-      paramstr = param2str(collect_rpcparameter(operation))
-    else
-      qname = nil
-      paramstr = param2str(collect_documentparameter(operation))
-    end
-    if paramstr.empty?
-      paramstr = '[]'
-    else
-      paramstr = "[ " << paramstr.split(/\r?\n/).join("\n    ") << " ]"
-    end
-    definitions = <<__EOD__
-#{ndq(binding.soapaction)},
-  #{dq(name)},
-  #{paramstr},
-  { :request_style =>  #{sym(style.id2name)}, :request_use =>  #{sym(inputuse.id2name)},
-    :response_style => #{sym(style.id2name)}, :response_use => #{sym(outputuse.id2name)} }
-__EOD__
-    if style == :rpc
-      return <<__EOD__
-[ #{qname.dump},
-  #{definitions}]
-__EOD__
-    else
-      return <<__EOD__
-[ #{definitions}]
-__EOD__
-    end
-  end
-
-  def rpcdefinedtype(part)
-    if mapped = basetype_mapped_class(part.type)
-      ['::' + mapped.name]
-    elsif definedtype = @simpletypes[part.type]
-      ['::' + basetype_mapped_class(definedtype.base).name]
-    elsif definedtype = @elements[part.element]
-      #['::SOAP::SOAPStruct', part.element.namespace, part.element.name]
-      ['nil', part.element.namespace, part.element.name]
-    elsif definedtype = @complextypes[part.type]
-      case definedtype.compoundtype
-      when :TYPE_STRUCT, :TYPE_EMPTY    # ToDo: empty should be treated as void.
-        type = create_class_name(part.type)
-	[type, part.type.namespace, part.type.name]
-      when :TYPE_MAP
-	[Hash.name, part.type.namespace, part.type.name]
-      when :TYPE_ARRAY
-	arytype = definedtype.find_arytype || XSD::AnyTypeName
-	ns = arytype.namespace
-	name = arytype.name.sub(/\[(?:,)*\]$/, '')
-        type = create_class_name(XSD::QName.new(ns, name))
-	[type + '[]', ns, name]
-      else
-	raise NotImplementedError.new("must not reach here")
-      end
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def documentdefinedtype(part)
-    if mapped = basetype_mapped_class(part.type)
-      ['::' + mapped.name, nil, part.name]
-    elsif definedtype = @simpletypes[part.type]
-      ['::' + basetype_mapped_class(definedtype.base).name, nil, part.name]
-    elsif definedtype = @elements[part.element]
-      ['::SOAP::SOAPElement', part.element.namespace, part.element.name]
-    elsif definedtype = @complextypes[part.type]
-      ['::SOAP::SOAPElement', part.type.namespace, part.type.name]
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def elementqualified(part)
-    if mapped = basetype_mapped_class(part.type)
-      false
-    elsif definedtype = @simpletypes[part.type]
-      false
-    elsif definedtype = @elements[part.element]
-      definedtype.elementform == 'qualified'
-    elsif definedtype = @complextypes[part.type]
-      false
-    else
-      raise RuntimeError.new("part: #{part.name} cannot be resolved")
-    end
-  end
-
-  def param_set(io_type, name, type, ele = nil)
-    [io_type, name, type, ele]
-  end
-
-  def collect_type(type)
-    # ignore inline type definition.
-    return if type.nil?
-    return if @types.include?(type)
-    @types << type
-    return unless @complextypes[type]
-    @complextypes[type].each_element do |element|
-      collect_type(element.type)
-    end
-  end
-
-  def param2str(params)
-    params.collect { |param|
-      io, name, type, ele = param
-      unless ele.nil?
-        "[#{dq(io)}, #{dq(name)}, #{type2str(type)}, #{ele2str(ele)}]"
-      else
-        "[#{dq(io)}, #{dq(name)}, #{type2str(type)}]"
-      end
-    }.join(",\n")
-  end
-
-  def type2str(type)
-    if type.size == 1
-      "[#{dq(type[0])}]" 
-    else
-      "[#{dq(type[0])}, #{ndq(type[1])}, #{dq(type[2])}]" 
-    end
-  end
-
-  def ele2str(ele)
-    qualified = ele
-    if qualified
-      "true"
-    else
-      "false"
-    end
-  end
-
-  def cdr(ary)
-    result = ary.dup
-    result.shift
-    result
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/operation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/operation.rb
deleted file mode 100644
index 502d34a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/operation.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-# WSDL4R - WSDL SOAP operation definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module SOAP
-
-
-class Operation < Info
-  class OperationInfo
-    attr_reader :style
-    attr_reader :op_name
-    attr_reader :optype_name
-    attr_reader :headerparts
-    attr_reader :bodyparts
-    attr_reader :faultpart
-    attr_reader :soapaction
-    
-    def initialize(style, op_name, optype_name, headerparts, bodyparts, faultpart, soapaction)
-      @style = style
-      @op_name = op_name
-      @optype_name = optype_name
-      @headerparts = headerparts
-      @bodyparts = bodyparts
-      @faultpart = faultpart
-      @soapaction = soapaction
-    end
-  end
-
-  attr_reader :soapaction
-  attr_reader :style
-
-  def initialize
-    super
-    @soapaction = nil
-    @style = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when StyleAttrName
-      if ["document", "rpc"].include?(value.source)
-	@style = value.source.intern
-      else
-	raise Parser::AttributeConstraintError.new(
-          "Unexpected value #{ value }.")
-      end
-    when SOAPActionAttrName
-      @soapaction = value.source
-    else
-      nil
-    end
-  end
-
-  def input_info
-    name_info = parent.find_operation.input_info
-    param_info(name_info, parent.input)
-  end
-
-  def output_info
-    name_info = parent.find_operation.output_info
-    param_info(name_info, parent.output)
-  end
-
-  def operation_style
-    return @style if @style
-    if parent_binding.soapbinding
-      return parent_binding.soapbinding.style
-    end
-    nil
-  end
-
-private
-
-  def parent_binding
-    parent.parent
-  end
-
-  def param_info(name_info, param)
-    op_name = name_info.op_name
-    optype_name = name_info.optype_name
-
-    soapheader = param.soapheader
-    headerparts = soapheader.collect { |item| item.find_part }
-
-    soapbody = param.soapbody
-    if soapbody.encodingstyle and
-	soapbody.encodingstyle != ::SOAP::EncodingNamespace
-      raise NotImplementedError.new(
-	"EncodingStyle '#{ soapbody.encodingstyle }' not supported.")
-    end
-    if soapbody.namespace
-      op_name = XSD::QName.new(soapbody.namespace, op_name.name)
-    end
-    if soapbody.parts
-      target = soapbody.parts.split(/\s+/)
-      bodyparts = name_info.parts.find_all { |part|
-	target.include?(part.name)
-      }
-    else
-      bodyparts = name_info.parts
-    end
-
-    faultpart = nil
-    OperationInfo.new(operation_style, op_name, optype_name, headerparts, bodyparts, faultpart, parent.soapaction)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb
deleted file mode 100644
index 88294ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/servantSkeltonCreator.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-# WSDL4R - Creating servant skelton code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/classDefCreatorSupport'
-require 'xsd/codegen'
-
-
-module WSDL
-module SOAP
-
-
-class ServantSkeltonCreator
-  include ClassDefCreatorSupport
-  include XSD::CodeGen::GenSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(porttype = nil)
-    if porttype.nil?
-      result = ""
-      @definitions.porttypes.each do |type|
-	result << dump_porttype(type.name)
-	result << "\n"
-      end
-    else
-      result = dump_porttype(porttype)
-    end
-    result
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    c = XSD::CodeGen::ClassDef.new(class_name)
-    operations = @definitions.porttype(name).operations
-    operations.each do |operation|
-      name = safemethodname(operation.name.name)
-      input = operation.input
-      params = input.find_message.parts.collect { |part|
-        safevarname(part.name)
-      }
-      m = XSD::CodeGen::MethodDef.new(name, params) do <<-EOD
-            p [#{params.join(", ")}]
-            raise NotImplementedError.new
-          EOD
-        end
-      m.comment = dump_method_signature(operation)
-      c.add_method(m)
-    end
-    c.dump
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb
deleted file mode 100644
index 0b751b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/standaloneServerStubCreator.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# WSDL4R - Creating standalone server stub code from WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/soap/mappingRegistryCreator'
-require 'wsdl/soap/methodDefCreator'
-require 'wsdl/soap/classDefCreatorSupport'
-
-
-module WSDL
-module SOAP
-
-
-class StandaloneServerStubCreator
-  include ClassDefCreatorSupport
-
-  attr_reader :definitions
-
-  def initialize(definitions)
-    @definitions = definitions
-  end
-
-  def dump(service_name)
-    warn("- Standalone stub can have only 1 port for now.  So creating stub for the first port and rests are ignored.")
-    warn("- Standalone server stub ignores port location defined in WSDL.  Location is http://localhost:10080/ by default.  Generated client from WSDL must be configured to point this endpoint manually.")
-    port = @definitions.service(service_name).ports[0]
-    dump_porttype(port.porttype.name)
-  end
-
-private
-
-  def dump_porttype(name)
-    class_name = create_class_name(name)
-    methoddef, types = MethodDefCreator.new(@definitions).dump(name)
-    mr_creator = MappingRegistryCreator.new(@definitions)
-
-    c1 = XSD::CodeGen::ClassDef.new(class_name)
-    c1.def_require("soap/rpc/standaloneServer")
-    c1.def_require("soap/mapping/registry")
-    c1.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
-    c1.def_code(mr_creator.dump(types))
-    c1.def_code <<-EOD
-Methods = [
-#{methoddef.gsub(/^/, "  ")}
-]
-    EOD
-    c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
-      "::SOAP::RPC::StandaloneServer")
-    c2.def_method("initialize", "*arg") do
-      <<-EOD
-        super(*arg)
-        servant = #{class_name}.new
-        #{class_name}::Methods.each do |definitions|
-          opt = definitions.last
-          if opt[:request_style] == :document
-            @router.add_document_operation(servant, *definitions)
-          else
-            @router.add_rpc_operation(servant, *definitions)
-          end
-        end
-        self.mapping_registry = #{class_name}::MappingRegistry
-      EOD
-    end
-    c1.dump + "\n" + c2.dump + format(<<-EOD)
-
-      if $0 == __FILE__
-        # Change listen port.
-        server = #{class_name}App.new('app', nil, '0.0.0.0', 10080)
-        trap(:INT) do
-          server.shutdown
-        end
-        server.start
-      end
-    EOD
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/wsdl2ruby.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/wsdl2ruby.rb
deleted file mode 100644
index 16b05fb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/soap/wsdl2ruby.rb
+++ /dev/null
@@ -1,176 +0,0 @@
-# WSDL4R - WSDL to ruby mapping library.
-# Copyright (C) 2002-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'logger'
-require 'xsd/qname'
-require 'wsdl/importer'
-require 'wsdl/soap/classDefCreator'
-require 'wsdl/soap/servantSkeltonCreator'
-require 'wsdl/soap/driverCreator'
-require 'wsdl/soap/clientSkeltonCreator'
-require 'wsdl/soap/standaloneServerStubCreator'
-require 'wsdl/soap/cgiStubCreator'
-
-
-module WSDL
-module SOAP
-
-
-class WSDL2Ruby
-  attr_accessor :location
-  attr_reader :opt
-  attr_accessor :logger
-  attr_accessor :basedir
-
-  def run
-    unless @location
-      raise RuntimeError, "WSDL location not given"
-    end
-    @wsdl = import(@location)
-    @name = @wsdl.name ? @wsdl.name.name : 'default'
-    create_file
-  end
-
-private
-
-  def initialize
-    @location = nil
-    @opt = {}
-    @logger = Logger.new(STDERR)
-    @basedir = nil
-    @wsdl = nil
-    @name = nil
-  end
-
-  def create_file
-    create_classdef if @opt.key?('classdef')
-    create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton')
-    create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub')
-    create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub')
-    create_driver(@opt['driver']) if @opt.key?('driver')
-    create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton')
-  end
-
-  def create_classdef
-    @logger.info { "Creating class definition." }
-    @classdef_filename = @name + '.rb'
-    check_file(@classdef_filename) or return
-    write_file(@classdef_filename) do |f|
-      f << WSDL::SOAP::ClassDefCreator.new(@wsdl).dump
-    end
-  end
-
-  def create_client_skelton(servicename)
-    @logger.info { "Creating client skelton." }
-    servicename ||= @wsdl.services[0].name.name
-    @client_skelton_filename = servicename + 'Client.rb'
-    check_file(@client_skelton_filename) or return
-    write_file(@client_skelton_filename) do |f|
-      f << shbang << "\n"
-      f << "require '#{@driver_filename}'\n\n" if @driver_filename
-      f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl).dump(
-	create_name(servicename))
-    end
-  end
-
-  def create_servant_skelton(porttypename)
-    @logger.info { "Creating servant skelton." }
-    @servant_skelton_filename = (porttypename || @name + 'Servant') + '.rb'
-    check_file(@servant_skelton_filename) or return
-    write_file(@servant_skelton_filename) do |f|
-      f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
-      f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl).dump(
-	create_name(porttypename))
-    end
-  end
-
-  def create_cgi_stub(servicename)
-    @logger.info { "Creating CGI stub." }
-    servicename ||= @wsdl.services[0].name.name
-    @cgi_stubFilename = servicename + '.cgi'
-    check_file(@cgi_stubFilename) or return
-    write_file(@cgi_stubFilename) do |f|
-      f << shbang << "\n"
-      if @servant_skelton_filename
-	f << "require '#{@servant_skelton_filename}'\n\n"
-      end
-      f << WSDL::SOAP::CGIStubCreator.new(@wsdl).dump(create_name(servicename))
-    end
-  end
-
-  def create_standalone_server_stub(servicename)
-    @logger.info { "Creating standalone stub." }
-    servicename ||= @wsdl.services[0].name.name
-    @standalone_server_stub_filename = servicename + '.rb'
-    check_file(@standalone_server_stub_filename) or return
-    write_file(@standalone_server_stub_filename) do |f|
-      f << shbang << "\n"
-      f << "require '#{@servant_skelton_filename}'\n\n" if @servant_skelton_filename
-      f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl).dump(
-	create_name(servicename))
-    end
-  end
-
-  def create_driver(porttypename)
-    @logger.info { "Creating driver." }
-    @driver_filename = (porttypename || @name) + 'Driver.rb'
-    check_file(@driver_filename) or return
-    write_file(@driver_filename) do |f|
-      f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
-      f << WSDL::SOAP::DriverCreator.new(@wsdl).dump(
-	create_name(porttypename))
-    end
-  end
-
-  def write_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    File.open(filename, "w") do |f|
-      yield f
-    end
-  end
-
-  def check_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    if FileTest.exist?(filename)
-      if @opt.key?('force')
-	@logger.warn {
-	  "File '#{filename}' exists but overrides it."
-	}
-	true
-      else
-	@logger.warn {
-	  "File '#{filename}' exists.  #{$0} did not override it."
-	}
-	false
-      end
-    else
-      @logger.info { "Creates file '#{filename}'." }
-      true
-    end
-  end
-
-  def shbang
-    "#!/usr/bin/env ruby"
-  end
-
-  def create_name(name)
-    name ? XSD::QName.new(@wsdl.targetnamespace, name) : nil
-  end
-
-  def import(location)
-    WSDL::Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/types.rb
deleted file mode 100644
index 96ae5a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/types.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# WSDL4R - WSDL types definition.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-
-
-class Types < Info
-  attr_reader :schemas
-
-  def initialize
-    super
-    @schemas = []
-  end
-
-  def parse_element(element)
-    case element
-    when SchemaName
-      o = XMLSchema::Schema.new
-      @schemas << o
-      o
-    when DocumentationName
-      o = Documentation.new
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    nil
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/wsdl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/wsdl.rb
deleted file mode 100644
index eb13c18..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/wsdl.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# WSDL4R - Base definitions.
-# Copyright (C) 2000, 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-
-
-module WSDL
-
-
-Version = '0.0.2'
-
-Namespace = 'http://schemas.xmlsoap.org/wsdl/'
-SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/'
-
-class Error < StandardError; end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/all.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/all.rb
deleted file mode 100644
index bb9566f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/all.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class All < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/annotation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/annotation.rb
deleted file mode 100644
index 633bd19..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/annotation.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# WSDL4R - WSDL SOAP documentation element.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Annotation < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/any.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/any.rb
deleted file mode 100644
index 72d25e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/any.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# WSDL4R - XMLSchema any definition for WSDL.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Any < Info
-  attr_accessor :maxoccurs
-  attr_accessor :minoccurs
-  attr_accessor :namespace
-  attr_accessor :process_contents
-
-  def initialize
-    super()
-    @maxoccurs = '1'
-    @minoccurs = '1'
-    @namespace = '##any'
-    @process_contents = 'strict'
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    when NamespaceAttrName
-      @namespace = value.source
-    when ProcessContentsAttrName
-      @process_contents = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/attribute.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/attribute.rb
deleted file mode 100644
index f904866..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/attribute.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-# WSDL4R - XMLSchema attribute definition for WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Attribute < Info
-  class << self
-    if RUBY_VERSION > "1.7.0"
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        define_method(name) {
-          instance_variable_get("@#{name}") ||
-            (refelement ? refelement.__send__(name) : nil)
-        }
-      end
-    else
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @#{name} || (refelement ? refelement.#{name} : nil)
-          end
-        EOS
-      end
-    end
-  end
-
-  attr_writer :use
-  attr_writer :form
-  attr_writer :name
-  attr_writer :type
-  attr_writer :local_simpletype
-  attr_writer :default
-  attr_writer :fixed
-
-  attr_reader_ref :use
-  attr_reader_ref :form
-  attr_reader_ref :name
-  attr_reader_ref :type
-  attr_reader_ref :local_simpletype
-  attr_reader_ref :default
-  attr_reader_ref :fixed
-
-  attr_accessor :ref
-  attr_accessor :arytype
-
-  def initialize
-    super
-    @use = nil
-    @form = nil
-    @name = nil
-    @type = nil
-    @local_simpletype = nil
-    @default = nil
-    @fixed = nil
-    @ref = nil
-    @refelement = nil
-    @arytype = nil
-  end
-
-  def refelement
-    @refelement ||= root.collect_attributes[@ref]
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when SimpleTypeName
-      @local_simpletype = SimpleType.new
-      @local_simpletype
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when RefAttrName
-      @ref = value
-    when UseAttrName
-      @use = value.source
-    when FormAttrName
-      @form = value.source
-    when NameAttrName
-      if directelement?
-        @name = XSD::QName.new(targetnamespace, value.source)
-      else
-        @name = XSD::QName.new(nil, value.source)
-      end
-    when TypeAttrName
-      @type = value
-    when DefaultAttrName
-      @default = value.source
-    when FixedAttrName
-      @fixed = value.source
-    when ArrayTypeAttrName
-      @arytype = if value.namespace.nil?
-          XSD::QName.new(XSD::Namespace, value.source)
-        else
-          value
-        end
-    else
-      nil
-    end
-  end
-
-private
-
-  def directelement?
-    parent.is_a?(Schema)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/choice.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/choice.rb
deleted file mode 100644
index f6d27fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/choice.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Choice < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexContent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexContent.rb
deleted file mode 100644
index f7fb6c1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexContent.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# WSDL4R - XMLSchema complexContent definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexContent < Info
-  attr_accessor :base
-  attr_reader :derivetype
-  attr_reader :content
-  attr_reader :attributes
-
-  def initialize
-    super
-    @base = nil
-    @derivetype = nil
-    @content = nil
-    @attributes = XSD::NamedElements.new
-    @basetype = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def basetype
-    @basetype ||= root.collect_complextypes[@base]
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName, ExtensionName
-      @derivetype = element.name
-      self
-    when AllName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = All.new
-      @content
-    when SequenceName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = Sequence.new
-      @content
-    when ChoiceName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      @content = Choice.new
-      @content
-    when AttributeName
-      if @derivetype.nil?
-	raise Parser::ElementConstraintError.new("base attr not found.")
-      end
-      o = Attribute.new
-      @attributes << o
-      o
-    end
-  end
-
-  def parse_attr(attr, value)
-    if @derivetype.nil?
-      return nil
-    end
-    case attr
-    when BaseAttrName
-      @base = value
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexType.rb
deleted file mode 100644
index dc9ec95..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/complexType.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/content'
-require 'wsdl/xmlSchema/element'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class ComplexType < Info
-  attr_accessor :name
-  attr_accessor :complexcontent
-  attr_accessor :simplecontent
-  attr_reader :content
-  attr_accessor :final
-  attr_accessor :mixed
-  attr_reader :attributes
-
-  def initialize(name = nil)
-    super()
-    @name = name
-    @complexcontent = nil
-    @simplecontent = nil
-    @content = nil
-    @final = nil
-    @mixed = false
-    @attributes = XSD::NamedElements.new
-  end
-
-  def targetnamespace
-    # inner elements can be qualified
-    # parent.is_a?(WSDL::XMLSchema::Element) ? nil : parent.targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
- 
-  AnyAsElement = Element.new(XSD::QName.new(nil, 'any'), XSD::AnyTypeName)
-  def each_element
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          yield(AnyAsElement)
-        else
-          yield(element)
-        end
-      end
-    end
-  end
-
-  def find_element(name)
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          return AnyAsElement if name == AnyAsElement.name
-        else
-          return element if name == element.name
-        end
-      end
-    end
-    nil
-  end
-
-  def find_element_by_name(name)
-    if content
-      content.elements.each do |element|
-        if element.is_a?(Any)
-          return AnyAsElement if name == AnyAsElement.name.name
-        else
-          return element if name == element.name.name
-        end
-      end
-    end
-    nil
-  end
-
-  def sequence_elements=(elements)
-    @content = Sequence.new
-    elements.each do |element|
-      @content << element
-    end
-  end
-
-  def all_elements=(elements)
-    @content = All.new
-    elements.each do |element|
-      @content << element
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when AllName
-      @content = All.new
-    when SequenceName
-      @content = Sequence.new
-    when ChoiceName
-      @content = Choice.new
-    when ComplexContentName
-      @complexcontent = ComplexContent.new
-    when SimpleContentName
-      @simplecontent = SimpleContent.new
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when FinalAttrName
-      @final = value.source
-    when MixedAttrName
-      @mixed = (value.source == 'true')
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/content.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/content.rb
deleted file mode 100644
index 2f1dfb4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/content.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Content < Info
-  attr_accessor :final
-  attr_accessor :mixed
-  attr_accessor :type
-  attr_reader :contents
-  attr_reader :elements
-
-  def initialize
-    super()
-    @final = nil
-    @mixed = false
-    @type = nil
-    @contents = []
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def <<(content)
-    @contents << content
-    update_elements
-  end
-
-  def each
-    @contents.each do |content|
-      yield content
-    end
-  end
-
-  def parse_element(element)
-    case element
-    when AllName, SequenceName, ChoiceName
-      o = Content.new
-      o.type = element.name
-      @contents << o
-      o
-    when AnyName
-      o = Any.new
-      @contents << o
-      o
-    when ElementName
-      o = Element.new
-      @contents << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when FinalAttrName
-      @final = value.source
-    when MixedAttrName
-      @mixed = (value.source == 'true')
-    else
-      nil
-    end
-  end
-
-  def parse_epilogue
-    update_elements
-  end
-
-private
-
-  def update_elements
-    @elements = []
-    @contents.each do |content|
-      if content.is_a?(Element)
-	@elements << [content.name, content]
-      end
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/data.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/data.rb
deleted file mode 100644
index 23ab1ad..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/data.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# WSDL4R - XMLSchema data definitions.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-require 'wsdl/xmlSchema/annotation'
-require 'wsdl/xmlSchema/schema'
-require 'wsdl/xmlSchema/import'
-require 'wsdl/xmlSchema/include'
-require 'wsdl/xmlSchema/simpleType'
-require 'wsdl/xmlSchema/simpleRestriction'
-require 'wsdl/xmlSchema/simpleExtension'
-require 'wsdl/xmlSchema/complexType'
-require 'wsdl/xmlSchema/complexContent'
-require 'wsdl/xmlSchema/simpleContent'
-require 'wsdl/xmlSchema/any'
-require 'wsdl/xmlSchema/element'
-require 'wsdl/xmlSchema/all'
-require 'wsdl/xmlSchema/choice'
-require 'wsdl/xmlSchema/sequence'
-require 'wsdl/xmlSchema/attribute'
-require 'wsdl/xmlSchema/unique'
-require 'wsdl/xmlSchema/enumeration'
-require 'wsdl/xmlSchema/length'
-require 'wsdl/xmlSchema/pattern'
-
-module WSDL
-module XMLSchema
-
-
-AllName = XSD::QName.new(XSD::Namespace, 'all')
-AnnotationName = XSD::QName.new(XSD::Namespace, 'annotation')
-AnyName = XSD::QName.new(XSD::Namespace, 'any')
-AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
-ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
-ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent')
-ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType')
-ElementName = XSD::QName.new(XSD::Namespace, 'element')
-EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
-ExtensionName = XSD::QName.new(XSD::Namespace, 'extension')
-ImportName = XSD::QName.new(XSD::Namespace, 'import')
-IncludeName = XSD::QName.new(XSD::Namespace, 'include')
-LengthName = XSD::QName.new(XSD::Namespace, 'length')
-PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
-RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction')
-SequenceName = XSD::QName.new(XSD::Namespace, 'sequence')
-SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
-SimpleContentName = XSD::QName.new(XSD::Namespace, 'simpleContent')
-SimpleTypeName = XSD::QName.new(XSD::Namespace, 'simpleType')
-UniqueName = XSD::QName.new(XSD::Namespace, 'unique')
-
-AttributeFormDefaultAttrName = XSD::QName.new(nil, 'attributeFormDefault')
-BaseAttrName = XSD::QName.new(nil, 'base')
-DefaultAttrName = XSD::QName.new(nil, 'default')
-ElementFormDefaultAttrName = XSD::QName.new(nil, 'elementFormDefault')
-FinalAttrName = XSD::QName.new(nil, 'final')
-FixedAttrName = XSD::QName.new(nil, 'fixed')
-FormAttrName = XSD::QName.new(nil, 'form')
-IdAttrName = XSD::QName.new(nil, 'id')
-MaxOccursAttrName = XSD::QName.new(nil, 'maxOccurs')
-MinOccursAttrName = XSD::QName.new(nil, 'minOccurs')
-MixedAttrName = XSD::QName.new(nil, 'mixed')
-NameAttrName = XSD::QName.new(nil, 'name')
-NamespaceAttrName = XSD::QName.new(nil, 'namespace')
-NillableAttrName = XSD::QName.new(nil, 'nillable')
-ProcessContentsAttrName = XSD::QName.new(nil, 'processContents')
-RefAttrName = XSD::QName.new(nil, 'ref')
-SchemaLocationAttrName = XSD::QName.new(nil, 'schemaLocation')
-TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
-TypeAttrName = XSD::QName.new(nil, 'type')
-UseAttrName = XSD::QName.new(nil, 'use')
-ValueAttrName = XSD::QName.new(nil, 'value')
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/element.rb
deleted file mode 100644
index fffb648..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/element.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-# WSDL4R - XMLSchema element definition for WSDL.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Element < Info
-  class << self
-    if RUBY_VERSION > "1.7.0"
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        define_method(name) {
-          instance_variable_get("@#{name}") ||
-            (refelement ? refelement.__send__(name) : nil)
-        }
-      end
-    else
-      def attr_reader_ref(symbol)
-        name = symbol.to_s
-        module_eval <<-EOS
-          def #{name}
-            @#{name} || (refelement ? refelement.#{name} : nil)
-          end
-        EOS
-      end
-    end
-  end
-
-  attr_writer :name	# required
-  attr_writer :form
-  attr_writer :type
-  attr_writer :local_simpletype
-  attr_writer :local_complextype
-  attr_writer :constraint
-  attr_writer :maxoccurs
-  attr_writer :minoccurs
-  attr_writer :nillable
-
-  attr_reader_ref :name
-  attr_reader_ref :form
-  attr_reader_ref :type
-  attr_reader_ref :local_simpletype
-  attr_reader_ref :local_complextype
-  attr_reader_ref :constraint
-  attr_reader_ref :maxoccurs
-  attr_reader_ref :minoccurs
-  attr_reader_ref :nillable
-
-  attr_accessor :ref
-
-  def initialize(name = nil, type = nil)
-    super()
-    @name = name
-    @form = nil
-    @type = type
-    @local_simpletype = @local_complextype = nil
-    @constraint = nil
-    @maxoccurs = '1'
-    @minoccurs = '1'
-    @nillable = nil
-    @ref = nil
-    @refelement = nil
-  end
-
-  def refelement
-    @refelement ||= (@ref ? root.collect_elements[@ref] : nil)
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def elementform
-    self.form.nil? ? parent.elementformdefault : self.form
-  end
-
-  def parse_element(element)
-    case element
-    when SimpleTypeName
-      @local_simpletype = SimpleType.new
-      @local_simpletype
-    when ComplexTypeName
-      @type = nil
-      @local_complextype = ComplexType.new
-      @local_complextype
-    when UniqueName
-      @constraint = Unique.new
-      @constraint
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      # namespace may be nil
-      if directelement? or elementform == 'qualified'
-        @name = XSD::QName.new(targetnamespace, value.source)
-      else
-        @name = XSD::QName.new(nil, value.source)
-      end
-    when FormAttrName
-      @form = value.source
-    when TypeAttrName
-      @type = value
-    when RefAttrName
-      @ref = value
-    when MaxOccursAttrName
-      if parent.is_a?(All)
-	if value.source != '1'
-	  raise Parser::AttrConstraintError.new(
-            "cannot parse #{value} for #{attr}")
-	end
-      end
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      if parent.is_a?(All)
-	unless ['0', '1'].include?(value.source)
-	  raise Parser::AttrConstraintError.new(
-            "cannot parse #{value} for #{attr}")
-	end
-      end
-      @minoccurs = value.source
-    when NillableAttrName
-      @nillable = (value.source == 'true')
-    else
-      nil
-    end
-  end
-
-private
-
-  def directelement?
-    parent.is_a?(Schema)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/enumeration.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/enumeration.rb
deleted file mode 100644
index 5a16476..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/enumeration.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# WSDL4R - XMLSchema enumeration definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Enumeration < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      parent.enumeration << value.source
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/import.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/import.rb
deleted file mode 100644
index d3487af..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/import.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - XMLSchema import definition.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/importer'
-
-
-module WSDL
-module XMLSchema
-
-
-class Import < Info
-  attr_reader :namespace
-  attr_reader :schemalocation
-  attr_reader :content
-
-  def initialize
-    super
-    @namespace = nil
-    @schemalocation = nil
-    @content = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NamespaceAttrName
-      @namespace = value.source
-    when SchemaLocationAttrName
-      @schemalocation = URI.parse(value.source)
-      if @schemalocation.relative? and !parent.location.nil? and
-          !parent.location.relative?
-        @schemalocation = parent.location + @schemalocation
-      end
-      if root.importedschema.key?(@schemalocation)
-        @content = root.importedschema[@schemalocation]
-      else
-        root.importedschema[@schemalocation] = nil      # placeholder
-        @content = import(@schemalocation)
-        root.importedschema[@schemalocation] = @content
-      end
-      @schemalocation
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location, root)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/importer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/importer.rb
deleted file mode 100644
index f57bfd9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/importer.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-# WSDL4R - XSD importer library.
-# Copyright (C) 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'soap/httpconfigloader'
-require 'wsdl/xmlSchema/parser'
-
-
-module WSDL
-module XMLSchema
-
-
-class Importer
-  def self.import(location, originalroot = nil)
-    new.import(location, originalroot)
-  end
-
-  def initialize
-    @web_client = nil
-  end
-
-  def import(location, originalroot = nil)
-    unless location.is_a?(URI)
-      location = URI.parse(location)
-    end
-    content = parse(fetch(location), location, originalroot)
-    content.location = location
-    content
-  end
-
-private
-
-  def parse(content, location, originalroot)
-    opt = {
-      :location => location,
-      :originalroot => originalroot
-    }
-    WSDL::XMLSchema::Parser.new(opt).parse(content)
-  end
-
-  def fetch(location)
-    warn("importing: #{location}") if $DEBUG
-    content = nil
-    if location.scheme == 'file' or
-        (location.relative? and FileTest.exist?(location.path))
-      content = File.open(location.path).read
-    elsif location.scheme and location.scheme.size == 1 and
-        FileTest.exist?(location.to_s)
-      # ToDo: remove this ugly workaround for a path with drive letter
-      # (D://foo/bar)
-      content = File.open(location.to_s).read
-    else
-      client = web_client.new(nil, "WSDL4R")
-      client.proxy = ::SOAP::Env::HTTP_PROXY
-      client.no_proxy = ::SOAP::Env::NO_PROXY
-      if opt = ::SOAP::Property.loadproperty(::SOAP::PropertyName)
-        ::SOAP::HTTPConfigLoader.set_options(client,
-          opt["client.protocol.http"])
-      end
-      content = client.get_content(location)
-    end
-    content
-  end
-
-  def web_client
-    @web_client ||= begin
-	require 'http-access2'
-	if HTTPAccess2::VERSION < "2.0"
-	  raise LoadError.new("http-access/2.0 or later is required.")
-	end
-	HTTPAccess2::Client
-      rescue LoadError
-	warn("Loading http-access2 failed.  Net/http is used.") if $DEBUG
-	require 'soap/netHttpClient'
-	::SOAP::NetHttpClient
-      end
-    @web_client
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/include.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/include.rb
deleted file mode 100644
index af1ef94..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/include.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - XMLSchema include definition.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'wsdl/xmlSchema/importer'
-
-
-module WSDL
-module XMLSchema
-
-
-class Include < Info
-  attr_reader :schemalocation
-  attr_reader :content
-
-  def initialize
-    super
-    @schemalocation = nil
-    @content = nil
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when SchemaLocationAttrName
-      @schemalocation = URI.parse(value.source)
-      if @schemalocation.relative?
-        @schemalocation = parent.location + @schemalocation
-      end
-      @content = import(@schemalocation)
-      @schemalocation
-    else
-      nil
-    end
-  end
-
-private
-
-  def import(location)
-    Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/length.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/length.rb
deleted file mode 100644
index 7f61602..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/length.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# WSDL4R - XMLSchema length definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Length < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/parser.rb
deleted file mode 100644
index 057d9d9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/parser.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# WSDL4R - WSDL XML Instance parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-require 'xsd/datatypes'
-require 'xsd/xmlparser'
-require 'wsdl/xmlSchema/data'
-
-
-module WSDL
-module XMLSchema
-
-
-class Parser
-  include XSD
-
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-  class AttributeConstraintError < FormatDecodeError; end
-
-private
-
-  class ParseFrame
-    attr_reader :ns
-    attr_reader :name
-    attr_accessor :node
-
-  private
-
-    def initialize(ns, name, node)
-      @ns = ns
-      @name = name
-      @node = node
-    end
-  end
-
-public
-
-  def initialize(opt = {})
-    @parser = XSD::XMLParser.create_parser(self, opt)
-    @parsestack = nil
-    @lastnode = nil
-    @ignored = {}
-    @location = opt[:location]
-    @originalroot = opt[:originalroot]
-  end
-
-  def parse(string_or_readable)
-    @parsestack = []
-    @lastnode = nil
-    @textbuf = ''
-    @parser.do_parse(string_or_readable)
-    @lastnode
-  end
-
-  def charset
-    @parser.charset
-  end
-
-  def start_element(name, attrs)
-    lastframe = @parsestack.last
-    ns = parent = nil
-    if lastframe
-      ns = lastframe.ns.clone_ns
-      parent = lastframe.node
-    else
-      ns = XSD::NS.new
-      parent = nil
-    end
-    attrs = XSD::XMLParser.filter_ns(ns, attrs)
-    node = decode_tag(ns, name, attrs, parent)
-    @parsestack << ParseFrame.new(ns, name, node)
-  end
-
-  def characters(text)
-    lastframe = @parsestack.last
-    if lastframe
-      # Need not to be cloned because character does not have attr.
-      ns = lastframe.ns
-      decode_text(ns, text)
-    else
-      p text if $DEBUG
-    end
-  end
-
-  def end_element(name)
-    lastframe = @parsestack.pop
-    unless name == lastframe.name
-      raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
-    end
-    decode_tag_end(lastframe.ns, lastframe.node)
-    @lastnode = lastframe.node
-  end
-
-private
-
-  def decode_tag(ns, name, attrs, parent)
-    o = nil
-    elename = ns.parse(name)
-    if !parent
-      if elename == SchemaName
-	o = Schema.parse_element(elename)
-        o.location = @location
-      else
-	raise UnknownElementError.new("unknown element: #{elename}")
-      end
-      o.root = @originalroot if @originalroot   # o.root = o otherwise
-    else
-      if elename == AnnotationName
-        # only the first annotation element is allowed for each element.
-        o = Annotation.new
-      else
-        o = parent.parse_element(elename)
-      end
-      unless o
-        unless @ignored.key?(elename)
-          warn("ignored element: #{elename} of #{parent.class}")
-          @ignored[elename] = elename
-        end
-	o = Documentation.new	# which accepts any element.
-      end
-      # node could be a pseudo element.  pseudo element has its own parent.
-      o.root = parent.root
-      o.parent = parent if o.parent.nil?
-    end
-    attrs.each do |key, value|
-      attr_ele = ns.parse(key, true)
-      value_ele = ns.parse(value, true)
-      value_ele.source = value  # for recovery; value may not be a QName
-      if attr_ele == IdAttrName
-	o.id = value_ele
-      else
-        unless o.parse_attr(attr_ele, value_ele)
-          unless @ignored.key?(attr_ele)
-            warn("ignored attr: #{attr_ele}")
-            @ignored[attr_ele] = attr_ele
-          end
-        end
-      end
-    end
-    o
-  end
-
-  def decode_tag_end(ns, node)
-    node.parse_epilogue
-  end
-
-  def decode_text(ns, text)
-    @textbuf << text
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/pattern.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/pattern.rb
deleted file mode 100644
index f826be4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/pattern.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# WSDL4R - XMLSchema pattern definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Pattern < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    nil
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when ValueAttrName
-      parent.pattern = /\A#{value.source}\z/n
-      value.source
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/schema.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/schema.rb
deleted file mode 100644
index ec97d07..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/schema.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-# WSDL4R - XMLSchema schema definition for WSDL.
-# Copyright (C) 2002, 2003-2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class Schema < Info
-  attr_reader :targetnamespace	# required
-  attr_reader :complextypes
-  attr_reader :simpletypes
-  attr_reader :elements
-  attr_reader :attributes
-  attr_reader :imports
-  attr_accessor :attributeformdefault
-  attr_accessor :elementformdefault
-
-  attr_reader :importedschema
-
-  def initialize
-    super
-    @targetnamespace = nil
-    @complextypes = XSD::NamedElements.new
-    @simpletypes = XSD::NamedElements.new
-    @elements = XSD::NamedElements.new
-    @attributes = XSD::NamedElements.new
-    @imports = []
-    @attributeformdefault = "unqualified"
-    @elementformdefault = "unqualified"
-    @importedschema = {}
-    @location = nil
-    @root = self
-  end
-
-  def location
-    @location || (root.nil? ? nil : root.location)
-  end
-
-  def location=(location)
-    @location = location
-  end
-
-  def parse_element(element)
-    case element
-    when ImportName
-      o = Import.new
-      @imports << o
-      o
-    when IncludeName
-      o = Include.new
-      @imports << o
-      o
-    when ComplexTypeName
-      o = ComplexType.new
-      @complextypes << o
-      o
-    when SimpleTypeName
-      o = SimpleType.new
-      @simpletypes << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when TargetNamespaceAttrName
-      @targetnamespace = value.source
-    when AttributeFormDefaultAttrName
-      @attributeformdefault = value.source
-    when ElementFormDefaultAttrName
-      @elementformdefault = value.source
-    else
-      nil
-    end
-  end
-
-  def collect_attributes
-    result = XSD::NamedElements.new
-    result.concat(@attributes)
-    @imports.each do |import|
-      result.concat(import.content.collect_attributes) if import.content
-    end
-    result
-  end
-
-  def collect_elements
-    result = XSD::NamedElements.new
-    result.concat(@elements)
-    @imports.each do |import|
-      result.concat(import.content.collect_elements) if import.content
-    end
-    result
-  end
-
-  def collect_complextypes
-    result = XSD::NamedElements.new
-    result.concat(@complextypes)
-    @imports.each do |import|
-      result.concat(import.content.collect_complextypes) if import.content
-    end
-    result
-  end
-
-  def collect_simpletypes
-    result = XSD::NamedElements.new
-    result.concat(@simpletypes)
-    @imports.each do |import|
-      result.concat(import.content.collect_simpletypes) if import.content
-    end
-    result
-  end
-
-  def self.parse_element(element)
-    if element == SchemaName
-      Schema.new
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/sequence.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/sequence.rb
deleted file mode 100644
index 823fa3b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/sequence.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# WSDL4R - XMLSchema complexType definition for WSDL.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Sequence < Info
-  attr_reader :minoccurs
-  attr_reader :maxoccurs
-  attr_reader :elements
-
-  def initialize
-    super()
-    @minoccurs = '1'
-    @maxoccurs = '1'
-    @elements = []
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def elementformdefault
-    parent.elementformdefault
-  end
-
-  def <<(element)
-    @elements << element
-  end
-
-  def parse_element(element)
-    case element
-    when AnyName
-      o = Any.new
-      @elements << o
-      o
-    when ElementName
-      o = Element.new
-      @elements << o
-      o
-    else
-      nil
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when MaxOccursAttrName
-      @maxoccurs = value.source
-    when MinOccursAttrName
-      @minoccurs = value.source
-    else
-      nil
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleContent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleContent.rb
deleted file mode 100644
index e1f35c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleContent.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# WSDL4R - XMLSchema simpleContent definition for WSDL.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleContent < Info
-  attr_reader :restriction
-  attr_reader :extension
-
-  def check_lexical_format(value)
-    check(value)
-  end
-
-  def initialize
-    super
-    @restriction = nil
-    @extension = nil
-  end
-
-  def base
-    content.base
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName
-      @restriction = SimpleRestriction.new
-      @restriction
-    when ExtensionName
-      @extension = SimpleExtension.new
-      @extension
-    end
-  end
-
-private
-
-  def content
-    @restriction || @extension
-  end
-
-  def check(value)
-    unless content.valid?(value)
-      raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb
deleted file mode 100644
index 3c53a73..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleExtension.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# WSDL4R - XMLSchema simpleType extension definition for WSDL.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleExtension < Info
-  attr_reader :base
-  attr_reader :attributes
-
-  def initialize
-    super
-    @base = nil
-    @attributes = XSD::NamedElements.new
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-  
-  def valid?(value)
-    true
-  end
-
-  def parse_element(element)
-    case element
-    when AttributeName
-      o = Attribute.new
-      @attributes << o
-      o
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when BaseAttrName
-      @base = value
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb
deleted file mode 100644
index e8bf3eb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleRestriction.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - XMLSchema simpleContent restriction definition for WSDL.
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleRestriction < Info
-  attr_reader :base
-  attr_reader :enumeration
-  attr_accessor :length
-  attr_accessor :pattern
-
-  def initialize
-    super
-    @base = nil
-    @enumeration = []   # NamedElements?
-    @length = nil
-    @pattern = nil
-  end
-  
-  def valid?(value)
-    return false unless check_restriction(value)
-    return false unless check_length(value)
-    return false unless check_pattern(value)
-    true
-  end
-
-  def parse_element(element)
-    case element
-    when EnumerationName
-      Enumeration.new   # just a parsing handler
-    when LengthName
-      Length.new   # just a parsing handler
-    when PatternName
-      Pattern.new   # just a parsing handler
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when BaseAttrName
-      @base = value
-    end
-  end
-
-private
-
-  def check_restriction(value)
-    @enumeration.empty? or @enumeration.include?(value)
-  end
-
-  def check_length(value)
-    @length.nil? or value.size == @length
-  end
-
-  def check_pattern(value)
-    @pattern.nil? or @pattern =~ value
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleType.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleType.rb
deleted file mode 100644
index e808c31..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/simpleType.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# WSDL4R - XMLSchema simpleType definition for WSDL.
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-require 'xsd/namedelements'
-
-
-module WSDL
-module XMLSchema
-
-
-class SimpleType < Info
-  attr_accessor :name
-  attr_reader :restriction
-
-  def check_lexical_format(value)
-    if @restriction
-      check_restriction(value)
-    else
-      raise ArgumentError.new("incomplete simpleType")
-    end
-  end
-
-  def base
-    if @restriction
-      @restriction.base
-    else
-      raise ArgumentError.new("incomplete simpleType")
-    end
-  end
-
-  def initialize(name = nil)
-    super()
-    @name = name
-    @restriction = nil
-  end
-
-  def targetnamespace
-    parent.targetnamespace
-  end
-
-  def parse_element(element)
-    case element
-    when RestrictionName
-      @restriction = SimpleRestriction.new
-      @restriction
-    end
-  end
-
-  def parse_attr(attr, value)
-    case attr
-    when NameAttrName
-      @name = XSD::QName.new(targetnamespace, value.source)
-    end
-  end
-
-private
-
-  def check_restriction(value)
-    unless @restriction.valid?(value)
-      raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/unique.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/unique.rb
deleted file mode 100644
index 837ff22..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/unique.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# WSDL4R - XMLSchema unique element.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'wsdl/info'
-
-
-module WSDL
-module XMLSchema
-
-
-class Unique < Info
-  def initialize
-    super
-  end
-
-  def parse_element(element)
-    # Accepts any element.
-    self
-  end
-
-  def parse_attr(attr, value)
-    # Accepts any attribute.
-    true
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb
deleted file mode 100644
index afe5fc5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-# XSD4R - XSD to ruby mapping library.
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'wsdl/xmlSchema/importer'
-require 'wsdl/soap/classDefCreator'
-
-
-module WSDL
-module XMLSchema
-
-
-class XSD2Ruby
-  attr_accessor :location
-  attr_reader :opt
-  attr_accessor :logger
-  attr_accessor :basedir
-
-  def run
-    unless @location
-      raise RuntimeError, "XML Schema location not given"
-    end
-    @xsd = import(@location)
-    @name = create_classname(@xsd)
-    create_file
-  end
-
-private
-
-  def initialize
-    @location = nil
-    @opt = {}
-    @logger = Logger.new(STDERR)
-    @basedir = nil
-    @xsd = nil
-    @name = nil
-  end
-
-  def create_file
-    create_classdef
-  end
-
-  def create_classdef
-    @logger.info { "Creating class definition." }
-    @classdef_filename = @name + '.rb'
-    check_file(@classdef_filename) or return
-    write_file(@classdef_filename) do |f|
-      f << WSDL::SOAP::ClassDefCreator.new(@xsd).dump
-    end
-  end
-
-  def write_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    File.open(filename, "w") do |f|
-      yield f
-    end
-  end
-
-  def check_file(filename)
-    if @basedir
-      filename = File.join(basedir, filename)
-    end
-    if FileTest.exist?(filename)
-      if @opt.key?('force')
-	@logger.warn {
-	  "File '#{filename}' exists but overrides it."
-	}
-	true
-      else
-	@logger.warn {
-	  "File '#{filename}' exists.  #{$0} did not override it."
-	}
-	false
-      end
-    else
-      @logger.info { "Creates file '#{filename}'." }
-      true
-    end
-  end
-
-  def create_classname(xsd)
-    name = nil
-    if xsd.targetnamespace
-      name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0]
-    end
-    if name.nil?
-      'default'
-    else
-      XSD::CodeGen::GenSupport.safevarname(name)
-    end
-  end
-
-  def import(location)
-    WSDL::XMLSchema::Importer.import(location)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/base64.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/base64.rb
deleted file mode 100644
index 0fe5b82..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/base64.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-=begin
-= xmlrpc/base64.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::Base64>))
-
-= XMLRPC::Base64
-== Description
-This class is necessary for (('xmlrpc4r')) to determine that a string should 
-be transmitted base64-encoded and not as a raw-string. 
-You can use (({XMLRPC::Base64})) on the client and server-side as a 
-parameter and/or return-value.
-
-== Class Methods
---- XMLRPC::Base64.new( str, state = :dec )
-    Creates a new (({XMLRPC::Base64})) instance with string ((|str|)) as the
-    internal string. When ((|state|)) is (({:dec})) it assumes that the 
-    string ((|str|)) is not in base64 format (perhaps already decoded), 
-    otherwise if ((|state|)) is (({:enc})) it decodes ((|str|)) 
-    and stores it as the internal string.
-    
---- XMLRPC::Base64.decode( str )
-    Decodes string ((|str|)) with base64 and returns that value.
-
---- XMLRPC::Base64.encode( str )
-    Encodes string ((|str|)) with base64 and returns that value.
-
-== Instance Methods
---- XMLRPC::Base64#decoded
-    Returns the internal string decoded.
-
---- XMLRPC::Base64#encoded
-    Returns the internal string encoded with base64.
-
-=end
-
-module XMLRPC
-
-class Base64
-  
-  def initialize(str, state = :dec)
-    case state
-    when :enc
-      @str = Base64.decode(str)
-    when :dec
-      @str = str
-    else
-      raise ArgumentError, "wrong argument; either :enc or :dec"
-    end
-  end
-  
-  def decoded
-    @str  
-  end
-  
-  def encoded
-    Base64.encode(@str)
-  end
-
-
-  def Base64.decode(str)
-    str.gsub(/\s+/, "").unpack("m")[0]
-  end
-
-  def Base64.encode(str)
-    [str].pack("m")
-  end
-
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: base64.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/client.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/client.rb
deleted file mode 100644
index 816926b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/client.rb
+++ /dev/null
@@ -1,619 +0,0 @@
-=begin
-= xmlrpc/client.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::Client>))
-* ((<XMLRPC::Client::Proxy>))
-
-
-= XMLRPC::Client
-== Synopsis
-    require "xmlrpc/client"
-
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-    begin
-      param = server.call("michael.add", 4, 5)
-      puts "4 + 5 = #{param}"
-    rescue XMLRPC::FaultException => e
-      puts "Error:"
-      puts e.faultCode
-      puts e.faultString
-    end
-
-or
-
-    require "xmlrpc/client"
-  
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-    ok, param = server.call2("michael.add", 4, 5)
-    if ok then
-      puts "4 + 5 = #{param}"
-    else
-      puts "Error:"
-      puts param.faultCode
-      puts param.faultString
-    end
-
-== Description
-Class (({XMLRPC::Client})) provides remote procedure calls to a XML-RPC server.
-After setting the connection-parameters with ((<XMLRPC::Client.new>)) which
-creates a new (({XMLRPC::Client})) instance, you can execute a remote procedure 
-by sending the ((<call|XMLRPC::Client#call>)) or ((<call2|XMLRPC::Client#call2>))
-message to this new instance. The given parameters indicate which method to 
-call on the remote-side and of course the parameters for the remote procedure.
-
-== Class Methods
---- XMLRPC::Client.new( host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil, user=nil, password=nil, use_ssl=false, timeout =nil)
-    Creates an object which represents the remote XML-RPC server on the 
-    given host ((|host|)). If the server is CGI-based, ((|path|)) is the
-    path to the CGI-script, which will be called, otherwise (in the
-    case of a standalone server) ((|path|)) should be (({"/RPC2"})).
-    ((|port|)) is the port on which the XML-RPC server listens.
-    If ((|proxy_host|)) is given, then a proxy server listening at
-    ((|proxy_host|)) is used. ((|proxy_port|)) is the port of the
-    proxy server.
-
-    Default values for ((|host|)), ((|path|)) and ((|port|)) are 'localhost', '/RPC2' and
-    '80' respectively using SSL '443'.
-
-    If ((|user|)) and ((|password|)) are given, each time a request is send, 
-    a Authorization header is send. Currently only Basic Authentification is 
-    implemented no Digest.
-
-    If ((|use_ssl|)) is set to (({true})), comunication over SSL is enabled.
-    Note, that you need the SSL package from RAA installed.
-
-    Parameter ((|timeout|)) is the time to wait for a XML-RPC response, defaults to 30.
-
---- XMLRPC::Client.new2( uri, proxy=nil, timeout=nil)
---- XMLRPC::Client.new_from_uri( uri, proxy=nil, timeout=nil)
-:   uri
-    URI specifying protocol (http or https), host, port, path, user and password.
-    Example: https://user:password@host:port/path
-
-:   proxy
-    Is of the form "host:port".
- 
-:   timeout
-    Defaults to 30. 
-
---- XMLRPC::Client.new3( hash={} )
---- XMLRPC::Client.new_from_hash( hash={} )
-    Parameter ((|hash|)) has following case-insensitive keys:
-    * host
-    * path
-    * port
-    * proxy_host
-    * proxy_port
-    * user
-    * password
-    * use_ssl
-    * timeout
-
-    Calls ((<XMLRPC::Client.new>)) with the corresponding values.
-
-== Instance Methods
---- XMLRPC::Client#call( method, *args )
-    Invokes the method named ((|method|)) with the parameters given by 
-    ((|args|)) on the XML-RPC server.
-    The parameter ((|method|)) is converted into a (({String})) and should 
-    be a valid XML-RPC method-name.  
-    Each parameter of ((|args|)) must be of one of the following types,
-    where (({Hash})), (({Struct})) and (({Array})) can contain any of these listed ((:types:)):
-    * (({Fixnum})), (({Bignum}))
-    * (({TrueClass})), (({FalseClass})) ((({true})), (({false})))
-    * (({String})), (({Symbol}))
-    * (({Float}))
-    * (({Hash})), (({Struct}))
-    * (({Array}))
-    * (({Date})), (({Time})), (({XMLRPC::DateTime}))
-    * (({XMLRPC::Base64})) 
-    * A Ruby object which class includes XMLRPC::Marshallable (only if Config::ENABLE_MARSHALLABLE is (({true}))). 
-      That object is converted into a hash, with one additional key/value pair "___class___" which contains the class name
-      for restoring later that object.
-    
-    The method returns the return-value from the RPC 
-    ((-stands for Remote Procedure Call-)). 
-    The type of the return-value is one of the above shown,
-    only that a (({Bignum})) is only allowed when it fits in 32-bit and
-    that a XML-RPC (('dateTime.iso8601')) type is always returned as
-    a ((<(({XMLRPC::DateTime}))|URL:datetime.html>)) object and 
-    a (({Struct})) is never returned, only a (({Hash})), the same for a (({Symbol})), where
-    always a (({String})) is returned. 
-    A (({XMLRPC::Base64})) is returned as a (({String})) from xmlrpc4r version 1.6.1 on.
-    
-    If the remote procedure returned a fault-structure, then a 
-    (({XMLRPC::FaultException})) exception is raised, which has two accessor-methods
-    (({faultCode})) and (({faultString})) of type (({Integer})) and (({String})).
-
---- XMLRPC::Client#call2( method, *args )
-    The difference between this method and ((<call|XMLRPC::Client#call>)) is, that
-    this method do ((*not*)) raise a (({XMLRPC::FaultException})) exception.
-    The method returns an array of two values. The first value indicates if 
-    the second value is a return-value ((({true}))) or an object of type
-    (({XMLRPC::FaultException})). 
-    Both are explained in ((<call|XMLRPC::Client#call>)).
-
-    Simple to remember: The "2" in "call2" denotes the number of values it returns.
-
---- XMLRPC::Client#multicall( *methods )
-    You can use this method to execute several methods on a XMLRPC server which supports
-    the multi-call extension.
-    Example:
-
-      s.multicall(
-        ['michael.add', 3, 4],
-        ['michael.sub', 4, 5]
-      )
-      # => [7, -1]
-
---- XMLRPC::Client#multicall2( *methods )
-    Same as ((<XMLRPC::Client#multicall>)), but returns like ((<XMLRPC::Client#call2>)) two parameters 
-    instead of raising an (({XMLRPC::FaultException})).
-
---- XMLRPC::Client#proxy( prefix, *args )
-    Returns an object of class (({XMLRPC::Client::Proxy})), initialized with
-    ((|prefix|)) and ((|args|)). A proxy object returned by this method behaves
-    like ((<XMLRPC::Client#call>)), i.e. a call on that object will raise a
-    (({XMLRPC::FaultException})) when a fault-structure is returned by that call. 
-
---- XMLRPC::Client#proxy2( prefix, *args )
-    Almost the same like ((<XMLRPC::Client#proxy>)) only that a call on the returned
-    (({XMLRPC::Client::Proxy})) object behaves like ((<XMLRPC::Client#call2>)), i.e.
-    a call on that object will return two parameters. 
-
-
-
-
---- XMLRPC::Client#call_async(...)
---- XMLRPC::Client#call2_async(...)
---- XMLRPC::Client#multicall_async(...)
---- XMLRPC::Client#multicall2_async(...)
---- XMLRPC::Client#proxy_async(...)
---- XMLRPC::Client#proxy2_async(...)
-    In contrast to corresponding methods without "_async", these can be
-    called concurrently and use for each request a new connection, where the 
-    non-asynchronous counterparts use connection-alive (one connection for all requests)
-    if possible. 
-
-    Note, that you have to use Threads to call these methods concurrently. 
-    The following example calls two methods concurrently:
-    
-      Thread.new {
-        p client.call_async("michael.add", 4, 5)
-      }
- 
-      Thread.new {
-        p client.call_async("michael.div", 7, 9)
-      }
- 
-
---- XMLRPC::Client#timeout
---- XMLRPC::Client#user
---- XMLRPC::Client#password
-    Return the corresponding attributes.
-
---- XMLRPC::Client#timeout= (new_timeout)
---- XMLRPC::Client#user= (new_user)
---- XMLRPC::Client#password= (new_password)
-    Set the corresponding attributes.
-    
-
---- XMLRPC::Client#set_writer( writer )
-    Sets the XML writer to use for generating XML output.
-    Should be an instance of a class from module (({XMLRPC::XMLWriter})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_WRITER})) is used. 
-
---- XMLRPC::Client#set_parser( parser )
-    Sets the XML parser to use for parsing XML documents.
-    Should be an instance of a class from module (({XMLRPC::XMLParser})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_PARSER})) is used.
-
---- XMLRPC::Client#cookie
---- XMLRPC::Client#cookie= (cookieString)
-    Get and set the HTTP Cookie header.
-
---- XMLRPC::Client#http_header_extra= (additionalHeaders)
-    Set extra HTTP headers that are included in the request.
-
---- XMLRPC::Client#http_header_extra
-    Access the via ((<XMLRPC::Client#http_header_extra=>)) assigned header. 
-
---- XMLRPC::Client#http_last_response
-    Returns the (({Net::HTTPResponse})) object of the last RPC.
-
-= XMLRPC::Client::Proxy
-== Synopsis
-    require "xmlrpc/client"
-
-    server = XMLRPC::Client.new("www.ruby-lang.org", "/RPC2", 80)
-
-    michael  = server.proxy("michael")
-    michael2 = server.proxy("michael", 4)
-
-    # both calls should return the same value '9'.
-    p michael.add(4,5)
-    p michael2.add(5)
-
-== Description
-Class (({XMLRPC::Client::Proxy})) makes XML-RPC calls look nicer!
-You can call any method onto objects of that class - the object handles 
-(({method_missing})) and will forward the method call to a XML-RPC server.
-Don't use this class directly, but use instead method ((<XMLRPC::Client#proxy>)) or
-((<XMLRPC::Client#proxy2>)).
-
-== Class Methods
---- XMLRPC::Client::Proxy.new( server, prefix, args=[], meth=:call, delim="." ) 
-    Creates an object which provides (({method_missing})).
-
-    ((|server|)) must be of type (({XMLRPC::Client})), which is the XML-RPC server to be used
-    for a XML-RPC call. ((|prefix|)) and ((|delim|)) will be prepended to the methodname
-    called onto this object. 
-
-    Parameter ((|meth|)) is the method (call, call2, call_async, call2_async) to use for
-    a RPC.
-
-    ((|args|)) are arguments which are automatically given
-    to every XML-RPC call before the arguments provides through (({method_missing})).
-    
-== Instance Methods
-Every method call is forwarded to the XML-RPC server defined in ((<new|XMLRPC::Client::Proxy#new>)).
-    
-Note: Inherited methods from class (({Object})) cannot be used as XML-RPC names, because they get around
-(({method_missing})). 
-          
-
-
-= History
-    $Id: client.rb 16907 2008-06-07 16:54:15Z shyouhei $
-
-=end
-
-
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"     # ParserWriterChooseMixin
-require "net/http"
-
-module XMLRPC
-
-  class Client
-   
-    USER_AGENT = "XMLRPC::Client (Ruby #{RUBY_VERSION})"
-
-    include ParserWriterChooseMixin
-    include ParseContentType
-
-
-    # Constructors -------------------------------------------------------------------
-
-    def initialize(host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil, 
-                   user=nil, password=nil, use_ssl=nil, timeout=nil)
-
-      @http_header_extra = nil
-      @http_last_response = nil 
-      @cookie = nil
-
-      @host       = host || "localhost"
-      @path       = path || "/RPC2"
-      @proxy_host = proxy_host
-      @proxy_port = proxy_port
-      @proxy_host ||= 'localhost' if @proxy_port != nil
-      @proxy_port ||= 8080 if @proxy_host != nil
-      @use_ssl    = use_ssl || false
-      @timeout    = timeout || 30
-
-      if use_ssl
-        require "net/https"
-        @port = port || 443
-      else
-        @port = port || 80
-      end
-
-      @user, @password = user, password
-
-      set_auth
-
-      # convert ports to integers
-      @port = @port.to_i if @port != nil
-      @proxy_port = @proxy_port.to_i if @proxy_port != nil
-
-      # HTTP object for synchronous calls
-      Net::HTTP.version_1_2
-      @http = Net::HTTP.new(@host, @port, @proxy_host, @proxy_port) 
-      @http.use_ssl = @use_ssl if @use_ssl
-      @http.read_timeout = @timeout
-      @http.open_timeout = @timeout
-
-      @parser = nil
-      @create = nil
-    end
-
-
-    class << self
-
-    def new2(uri, proxy=nil, timeout=nil)
-      if match = /^([^:]+):\/\/(([^@]+)@)?([^\/]+)(\/.*)?$/.match(uri)
-        proto = match[1]
-        user, passwd = (match[3] || "").split(":")
-        host, port = match[4].split(":") 
-        path = match[5]
-
-        if proto != "http" and proto != "https"
-          raise "Wrong protocol specified. Only http or https allowed!"
-        end
-
-      else
-        raise "Wrong URI as parameter!"
-      end
- 
-      proxy_host, proxy_port = (proxy || "").split(":")
-
-      self.new(host, path, port, proxy_host, proxy_port, user, passwd, (proto == "https"), timeout)
-    end
-
-    alias new_from_uri new2
-
-    def new3(hash={})
-
-      # convert all keys into lowercase strings
-      h = {}
-      hash.each { |k,v| h[k.to_s.downcase] = v }
-
-      self.new(h['host'], h['path'], h['port'], h['proxy_host'], h['proxy_port'], h['user'], h['password'],
-               h['use_ssl'], h['timeout'])
-    end
-
-    alias new_from_hash new3
-
-    end
-
-
-    # Attribute Accessors -------------------------------------------------------------------
-
-    # add additional HTTP headers to the request
-    attr_accessor :http_header_extra
-
-    # makes last HTTP response accessible
-    attr_reader :http_last_response
-
-    # Cookie support
-    attr_accessor :cookie
-    
-
-    attr_reader :timeout, :user, :password
-
-    def timeout=(new_timeout)
-      @timeout = new_timeout
-      @http.read_timeout = @timeout
-      @http.open_timeout = @timeout
-    end
-
-    def user=(new_user)
-      @user = new_user
-      set_auth
-    end
-
-    def password=(new_password)
-      @password = new_password
-      set_auth
-    end
-
-    # Call methods --------------------------------------------------------------
-
-    def call(method, *args)
-      ok, param = call2(method, *args) 
-      if ok
-        param
-      else
-        raise param
-      end
-    end 
-
-    def call2(method, *args)
-      request = create().methodCall(method, *args)
-      data = do_rpc(request, false)
-      parser().parseMethodResponse(data)
-    end
-
-    def call_async(method, *args)
-      ok, param = call2_async(method, *args) 
-      if ok
-        param
-      else
-        raise param
-      end
-    end 
-
-    def call2_async(method, *args)
-      request = create().methodCall(method, *args)
-      data = do_rpc(request, true)
-      parser().parseMethodResponse(data)
-    end
-
-
-    # Multicall methods --------------------------------------------------------------
-
-    def multicall(*methods)
-      ok, params = multicall2(*methods)
-      if ok
-        params
-      else
-        raise params
-      end
-    end
-
-    def multicall2(*methods)
-      gen_multicall(methods, false)
-    end
-
-    def multicall_async(*methods)
-      ok, params = multicall2_async(*methods)
-      if ok
-        params
-      else
-        raise params
-      end
-    end
-
-    def multicall2_async(*methods)
-      gen_multicall(methods, true)
-    end
-
-
-    # Proxy generating methods ------------------------------------------
-    
-    def proxy(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call)
-    end
-
-    def proxy2(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call2)
-    end
-
-    def proxy_async(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call_async)
-    end
-
-    def proxy2_async(prefix=nil, *args)
-      Proxy.new(self, prefix, args, :call2_async)
-    end
-
-
-    private # ----------------------------------------------------------
-
-    def set_auth
-      if @user.nil?
-        @auth = nil
-      else
-        a =  "#@user"
-        a << ":#@password" if @password != nil
-        @auth = ("Basic " + [a].pack("m")).chomp
-      end
-    end
-
-    def do_rpc(request, async=false)
-      header = {  
-       "User-Agent"     =>  USER_AGENT,
-       "Content-Type"   => "text/xml; charset=utf-8",
-       "Content-Length" => request.size.to_s, 
-       "Connection"     => (async ? "close" : "keep-alive")
-      }
-
-      header["Cookie"] = @cookie        if @cookie
-      header.update(@http_header_extra) if @http_header_extra
-
-      if @auth != nil
-        # add authorization header
-        header["Authorization"] = @auth
-      end
- 
-      resp = nil
-      @http_last_response = nil
-
-      if async
-        # use a new HTTP object for each call 
-        Net::HTTP.version_1_2
-        http = Net::HTTP.new(@host, @port, @proxy_host, @proxy_port) 
-        http.use_ssl = @use_ssl if @use_ssl
-        http.read_timeout = @timeout
-        http.open_timeout = @timeout
-        
-        # post request
-        http.start {
-          resp = http.post2(@path, request, header) 
-        }
-      else
-        # reuse the HTTP object for each call => connection alive is possible
-        # we must start connection explicitely first time so that http.request
-        # does not assume that we don't want keepalive
-        @http.start if not @http.started?
-        
-        # post request
-        resp = @http.post2(@path, request, header) 
-      end
-  
-      @http_last_response = resp
-
-      data = resp.body
-
-      if resp.code == "401"
-        # Authorization Required
-        raise "Authorization failed.\nHTTP-Error: #{resp.code} #{resp.message}" 
-      elsif resp.code[0,1] != "2"
-        raise "HTTP-Error: #{resp.code} #{resp.message}" 
-      end
-
-      ct = parse_content_type(resp["Content-Type"]).first
-      if ct != "text/xml"
-        if ct == "text/html"
-          raise "Wrong content-type (received '#{ct}' but expected 'text/xml'): \n#{data}"
-        else
-          raise "Wrong content-type (received '#{ct}' but expected 'text/xml')"
-        end
-      end
-
-      expected = resp["Content-Length"] || "<unknown>"
-      if data.nil? or data.size == 0 
-        raise "Wrong size. Was #{data.size}, should be #{expected}" 
-      elsif expected != "<unknown>" and expected.to_i != data.size and resp["Transfer-Encoding"].nil?
-        raise "Wrong size. Was #{data.size}, should be #{expected}"
-      end
-
-      c = resp["Set-Cookie"]
-      @cookie = c if c
-
-      return data
-    end
-
-    def gen_multicall(methods=[], async=false)
-      meth = :call2
-      meth = :call2_async if async
-
-      ok, params = self.send(meth, "system.multicall", 
-        methods.collect {|m| {'methodName' => m[0], 'params' => m[1..-1]} }
-      )
-
-      if ok 
-        params = params.collect do |param|
-          if param.is_a? Array
-            param[0]
-          elsif param.is_a? Hash
-            XMLRPC::FaultException.new(param["faultCode"], param["faultString"])
-          else
-            raise "Wrong multicall return value"
-          end 
-        end
-      end
-
-      return ok, params
-    end
-
-
-
-    class Proxy
-
-      def initialize(server, prefix, args=[], meth=:call, delim=".")
-	@server = server
-	@prefix = prefix ? prefix + delim : ""
-	@args   = args 
-        @meth   = meth
-      end
-
-      def method_missing(mid, *args)
-	pre = @prefix + mid.to_s
-	arg = @args + args
-	@server.send(@meth, pre, *arg)
-      end
-
-    end # class Proxy
-
-  end # class Client
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/config.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/config.rb
deleted file mode 100644
index 52f7340..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/config.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# $Id: config.rb 11708 2007-02-12 23:01:19Z shyouhei $
-# Configuration file for XML-RPC for Ruby
-#
-
-module XMLRPC
-
-  module Config
-
-    DEFAULT_WRITER = XMLWriter::Simple            # or XMLWriter::XMLParser
-    
-    # available parser:
-    #   * XMLParser::NQXMLTreeParser
-    #   * XMLParser::NQXMLStreamParser
-    #   * XMLParser::XMLTreeParser
-    #   * XMLParser::XMLStreamParser (fastest)
-    #   * XMLParser::REXMLStreamParser
-    #   * XMLParser::XMLScanStreamParser
-    DEFAULT_PARSER = XMLParser::REXMLStreamParser
-
-    # enable <nil/> tag
-    ENABLE_NIL_CREATE    = false
-    ENABLE_NIL_PARSER    = false
-    
-    # allows integers greater than 32-bit if true
-    ENABLE_BIGINT        = false
-
-    # enable marshalling ruby objects which include XMLRPC::Marshallable
-    ENABLE_MARSHALLING   = true 
-
-    # enable multiCall extension by default
-    ENABLE_MULTICALL     = false
-    
-    # enable Introspection extension by default
-    ENABLE_INTROSPECTION = false
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/create.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/create.rb
deleted file mode 100644
index 0b007c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/create.rb
+++ /dev/null
@@ -1,290 +0,0 @@
-#
-# Creates XML-RPC call/response documents
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: create.rb 11820 2007-02-23 03:47:59Z knu $
-#
-
-require "date"
-require "xmlrpc/base64"
-
-module XMLRPC
-
-  module XMLWriter
-
-    class Abstract
-      def ele(name, *children)
-	element(name, nil, *children)
-      end
-
-      def tag(name, txt)
-	element(name, nil, text(txt))
-      end
-    end
-
-
-    class Simple < Abstract
-
-      def document_to_str(doc)
-	doc
-      end
-
-      def document(*params)
-	params.join("")
-      end
-
-      def pi(name, *params)
-	"<?#{name} " + params.join(" ") + " ?>"
-      end
-
-      def element(name, attrs, *children)
-	raise "attributes not yet implemented" unless attrs.nil?
-        if children.empty?
-          "<#{name}/>" 
-        else
-          "<#{name}>" + children.join("") + "</#{name}>"
-        end
-      end
-
-      def text(txt)
-        cleaned = txt.dup
-        cleaned.gsub!(/&/, '&')
-        cleaned.gsub!(/</, '<')
-        cleaned.gsub!(/>/, '>')
-        cleaned
-      end
-
-    end # class Simple
-
-
-    class XMLParser < Abstract
-
-      def initialize
-	require "xmltreebuilder"
-      end
-
-      def document_to_str(doc)
-	doc.to_s
-      end
-
-      def document(*params)
-	XML::SimpleTree::Document.new(*params) 
-      end
-
-      def pi(name, *params)
-	XML::SimpleTree::ProcessingInstruction.new(name, *params)
-      end
-
-      def element(name, attrs, *children)
-	XML::SimpleTree::Element.new(name, attrs, *children)
-      end
-
-      def text(txt)
-	XML::SimpleTree::Text.new(txt)
-      end
-
-    end # class XMLParser
-
-    Classes = [Simple, XMLParser]
-
-    # yields an instance of each installed XML writer
-    def self.each_installed_writer
-      XMLRPC::XMLWriter::Classes.each do |klass|
-        begin
-          yield klass.new
-        rescue LoadError
-        end
-      end
-    end
-
-  end # module XMLWriter
-
-  class Create
-
-    def initialize(xml_writer = nil)
-      @writer = xml_writer || Config::DEFAULT_WRITER.new
-    end
-
-
-    def methodCall(name, *params)
-      name = name.to_s
-
-      if name !~ /[a-zA-Z0-9_.:\/]+/
-	raise ArgumentError, "Wrong XML-RPC method-name"
-      end
-
-      parameter = params.collect do |param|
-	@writer.ele("param", conv2value(param))
-      end
-
-      tree = @writer.document(
-	       @writer.pi("xml", 'version="1.0"'),
-	       @writer.ele("methodCall",   
-		 @writer.tag("methodName", name),
-		 @writer.ele("params", *parameter)    
-	       )
-	     )
-
-      @writer.document_to_str(tree) + "\n"
-    end
-
-
-
-    #
-    # generates a XML-RPC methodResponse document
-    #
-    # if is_ret == false then the params array must
-    # contain only one element, which is a structure
-    # of a fault return-value.
-    # 
-    # if is_ret == true then a normal 
-    # return-value of all the given params is created.
-    #
-    def methodResponse(is_ret, *params)
-
-      if is_ret 
-	resp = params.collect do |param|
-	  @writer.ele("param", conv2value(param))
-	end
-     
-	resp = [@writer.ele("params", *resp)]
-      else
-	if params.size != 1 or params[0] === XMLRPC::FaultException 
-	  raise ArgumentError, "no valid fault-structure given"
-	end
-	resp = @writer.ele("fault", conv2value(params[0].to_h))
-      end
-
-	
-      tree = @writer.document(
-	       @writer.pi("xml", 'version="1.0"'),
-	       @writer.ele("methodResponse", resp) 
-	     )
-
-      @writer.document_to_str(tree) + "\n"
-    end
-
-
-
-    #####################################
-    private
-    #####################################
-
-    #
-    # converts a Ruby object into
-    # a XML-RPC <value> tag
-    #
-    def conv2value(param)
-
-	val = case param
-	when Fixnum 
-	  @writer.tag("i4", param.to_s)
-
-	when Bignum
-          if Config::ENABLE_BIGINT
-            @writer.tag("i4", param.to_s)
-          else
-            if param >= -(2**31) and param <= (2**31-1)
-              @writer.tag("i4", param.to_s)
-            else
-              raise "Bignum is too big! Must be signed 32-bit integer!"
-            end
-          end
-	when TrueClass, FalseClass
-	  @writer.tag("boolean", param ? "1" : "0")
-
-	when String 
-	  @writer.tag("string", param)
-
-	when Symbol 
-	  @writer.tag("string", param.to_s)
-
-        when NilClass
-          if Config::ENABLE_NIL_CREATE
-            @writer.ele("nil")
-          else
-            raise "Wrong type NilClass. Not allowed!"
-          end
-
-	when Float
-	  @writer.tag("double", param.to_s)
-
-	when Struct
-	  h = param.members.collect do |key| 
-	    value = param[key]
-	    @writer.ele("member", 
-	      @writer.tag("name", key.to_s),
-	      conv2value(value) 
-	    )
-	  end
-
-	  @writer.ele("struct", *h) 
-
-	when Hash
-	  # TODO: can a Hash be empty?
-	  
-	  h = param.collect do |key, value|
-	    @writer.ele("member", 
-	      @writer.tag("name", key.to_s),
-	      conv2value(value) 
-	    )
-	  end
-
-	  @writer.ele("struct", *h) 
-
-	when Array
-	  # TODO: can an Array be empty?
-	  a = param.collect {|v| conv2value(v) }
-	  
-	  @writer.ele("array", 
-	    @writer.ele("data", *a)
-	  )
-
-	when Time, Date, ::DateTime
-	  @writer.tag("dateTime.iso8601", param.strftime("%Y%m%dT%H:%M:%S"))  
-
-	when XMLRPC::DateTime
-	  @writer.tag("dateTime.iso8601", 
-	    format("%.4d%02d%02dT%02d:%02d:%02d", *param.to_a))
-   
-	when XMLRPC::Base64
-	  @writer.tag("base64", param.encoded) 
-
-	else 
-          if Config::ENABLE_MARSHALLING and param.class.included_modules.include? XMLRPC::Marshallable
-            # convert Ruby object into Hash
-            ret = {"___class___" => param.class.name}
-            param.instance_variables.each {|v| 
-              name = v[1..-1]
-              val = param.instance_variable_get(v)
-
-              if val.nil?
-                ret[name] = val if Config::ENABLE_NIL_CREATE
-              else
-                ret[name] = val
-              end
-            }
-            return conv2value(ret)
-          else 
-            ok, pa = wrong_type(param)
-            if ok
-              return conv2value(pa)
-            else 
-              raise "Wrong type!"
-            end
-          end
-	end
-	 
-	@writer.ele("value", val)
-    end
-
-    def wrong_type(value)
-      false
-    end
-
-    
-  end # class Create
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/datetime.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/datetime.rb
deleted file mode 100644
index 86342c2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/datetime.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-=begin
-= xmlrpc/datetime.rb
-Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::DateTime>))
-
-= XMLRPC::DateTime
-== Description
-This class is important to handle XMLRPC (('dateTime.iso8601')) values,
-correcly, because normal UNIX-dates (class (({Date}))) only handle dates 
-from year 1970 on, and class (({Time})) handles dates without the time
-component. (({XMLRPC::DateTime})) is able to store a XMLRPC 
-(('dateTime.iso8601')) value correctly.
-
-== Class Methods
---- XMLRPC::DateTime.new( year, month, day, hour, min, sec )
-    Creates a new (({XMLRPC::DateTime})) instance with the
-    parameters ((|year|)), ((|month|)), ((|day|)) as date and 
-    ((|hour|)), ((|min|)), ((|sec|)) as time.
-    Raises (({ArgumentError})) if a parameter is out of range, or ((|year|)) is not
-    of type (({Integer})).
-    
-== Instance Methods
---- XMLRPC::DateTime#year
---- XMLRPC::DateTime#month
---- XMLRPC::DateTime#day
---- XMLRPC::DateTime#hour
---- XMLRPC::DateTime#min
---- XMLRPC::DateTime#sec
-    Return the value of the specified date/time component.
-
---- XMLRPC::DateTime#mon
-    Alias for ((<XMLRPC::DateTime#month>)).
-
---- XMLRPC::DateTime#year=( value )
---- XMLRPC::DateTime#month=( value )
---- XMLRPC::DateTime#day=( value )
---- XMLRPC::DateTime#hour=( value )
---- XMLRPC::DateTime#min=( value )
---- XMLRPC::DateTime#sec=( value )
-    Set ((|value|)) as the new date/time component.
-    Raises (({ArgumentError})) if ((|value|)) is out of range, or in the case
-    of (({XMLRPC::DateTime#year=})) if ((|value|)) is not of type (({Integer})).
-
---- XMLRPC::DateTime#mon=( value )
-    Alias for ((<XMLRPC::DateTime#month=>)).
-
---- XMLRPC::DateTime#to_time
-    Return a (({Time})) object of the date/time which (({self})) represents.
-    If the (('year')) is below 1970, this method returns (({nil})), 
-    because (({Time})) cannot handle years below 1970.
-    The used timezone is GMT.
-
---- XMLRPC::DateTime#to_date
-    Return a (({Date})) object of the date which (({self})) represents.
-    The (({Date})) object do ((*not*)) contain the time component (only date).
-
---- XMLRPC::DateTime#to_a
-    Returns all date/time components in an array.
-    Returns (({[year, month, day, hour, min, sec]})).
-=end
-
-require "date"
-
-module XMLRPC
-
-class DateTime
-  
-  attr_reader :year, :month, :day, :hour, :min, :sec
-
-  def year= (value)
-    raise ArgumentError, "date/time out of range" unless value.is_a? Integer
-    @year = value
-  end
-
-  def month= (value)
-    raise ArgumentError, "date/time out of range" unless (1..12).include? value
-    @month = value
-  end
-
-  def day= (value)
-    raise ArgumentError, "date/time out of range" unless (1..31).include? value
-    @day = value
-  end
-
-  def hour= (value)
-    raise ArgumentError, "date/time out of range" unless (0..24).include? value
-    @hour = value
-  end
-
-  def min= (value)
-    raise ArgumentError, "date/time out of range" unless (0..59).include? value
-    @min = value
-  end
-
-  def sec= (value)
-    raise ArgumentError, "date/time out of range" unless (0..59).include? value
-    @sec = value
-  end
-
-  alias mon  month
-  alias mon= month= 
- 
-
-  def initialize(year, month, day, hour, min, sec)
-    self.year, self.month, self.day = year, month, day
-    self.hour, self.min, self.sec   = hour, min, sec
-  end
- 
-  def to_time
-    if @year >= 1970
-      Time.gm(*to_a)
-    else
-      nil
-    end
-  end
-
-  def to_date
-    Date.new(*to_a[0,3])
-  end
-
-  def to_a
-    [@year, @month, @day, @hour, @min, @sec]
-  end
-
-  def ==(o)
-    Array(self) == Array(o)
-  end
-
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: datetime.rb 11708 2007-02-12 23:01:19Z shyouhei $
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/httpserver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/httpserver.rb
deleted file mode 100644
index d98db89..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/httpserver.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-#
-# Implements a simple HTTP-server by using John W. Small's (jsmall at laser.net) 
-# ruby-generic-server.
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: httpserver.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-
-require "gserver"
-
-class HttpServer < GServer
-
-  ##
-  # handle_obj specifies the object, that receives calls to request_handler
-  # and ip_auth_handler 
-  def initialize(handle_obj, port = 8080, host = DEFAULT_HOST, maxConnections = 4, 
-                 stdlog = $stdout, audit = true, debug = true)
-    @handler = handle_obj
-    super(port, host, maxConnections, stdlog, audit, debug)
-  end
-
-private
-
-  # Constants -----------------------------------------------
-  
-  CRLF        = "\r\n"
-  HTTP_PROTO  = "HTTP/1.0"
-  SERVER_NAME = "HttpServer (Ruby #{RUBY_VERSION})"
-
-  DEFAULT_HEADER = {
-    "Server" => SERVER_NAME
-  }
-
-  ##
-  # Mapping of status code and error message
-  #
-  StatusCodeMapping = {
-    200 => "OK",
-    400 => "Bad Request",
-    403 => "Forbidden",
-    405 => "Method Not Allowed",
-    411 => "Length Required",
-    500 => "Internal Server Error"
-  }
-
-  # Classes -------------------------------------------------
-  
-  class Request
-    attr_reader :data, :header, :method, :path, :proto
-    
-    def initialize(data, method=nil, path=nil, proto=nil)
-      @header, @data = Table.new, data
-      @method, @path, @proto = method, path, proto
-    end
-    
-    def content_length
-      len = @header['Content-Length']
-      return nil if len.nil?
-      return len.to_i 
-    end
-    
-  end
-  
-  class Response
-    attr_reader   :header
-    attr_accessor :body, :status, :status_message
-    
-    def initialize(status=200)
-      @status = status
-      @status_message = nil
-      @header = Table.new
-    end
-  end
-
-
-  ##
-  # a case-insensitive Hash class for HTTP header
-  #
-  class Table
-    include Enumerable
-
-    def initialize(hash={})
-      @hash = hash 
-      update(hash)
-    end
-
-    def [](key)
-      @hash[key.to_s.capitalize]
-    end
-
-    def []=(key, value)
-      @hash[key.to_s.capitalize] = value
-    end
-
-    def update(hash)
-      hash.each {|k,v| self[k] = v}
-      self
-    end
-
-    def each
-      @hash.each {|k,v| yield k.capitalize, v }
-    end
-
-    def writeTo(port)
-      each { |k,v| port << "#{k}: #{v}" << CRLF }
-    end
-  end # class Table
-
-
-  # Helper Methods ------------------------------------------
-
-  def http_header(header=nil)
-    new_header = Table.new(DEFAULT_HEADER)
-    new_header.update(header) unless header.nil? 
-
-    new_header["Connection"] = "close"
-    new_header["Date"]       = http_date(Time.now)
-
-    new_header
-  end
-
-  def http_date( aTime )
-    aTime.gmtime.strftime( "%a, %d %b %Y %H:%M:%S GMT" )
-  end
-
-  def http_resp(status_code, status_message=nil, header=nil, body=nil)
-    status_message ||= StatusCodeMapping[status_code]
-    
-    str = ""
-    str << "#{HTTP_PROTO} #{status_code} #{status_message}" << CRLF
-    http_header(header).writeTo(str)
-    str << CRLF
-    str << body unless body.nil?
-    str
-  end
-
-  # Main Serve Loop -----------------------------------------
-  
-  def serve(io)  
-    # perform IP authentification
-    unless @handler.ip_auth_handler(io)
-      io << http_resp(403, "Forbidden")
-      return
-    end
-
-    # parse first line
-    if io.gets =~ /^(\S+)\s+(\S+)\s+(\S+)/
-      request = Request.new(io, $1, $2, $3)
-    else
-      io << http_resp(400, "Bad Request") 
-      return
-    end
-     
-    # parse HTTP headers
-    while (line=io.gets) !~ /^(\n|\r)/
-      if line =~ /^([\w-]+):\s*(.*)$/
-	request.header[$1] = $2.strip
-      end
-    end
-
-    io.binmode    
-    response = Response.new
-
-    # execute request handler
-    @handler.request_handler(request, response)
-   
-    # write response back to the client
-    io << http_resp(response.status, response.status_message,
-                    response.header, response.body) 
-
-  rescue Exception => e
-    io << http_resp(500, "Internal Server Error")
-  end
-
-end # class HttpServer
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/marshal.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/marshal.rb
deleted file mode 100644
index ba8c720..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/marshal.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Marshalling of XML-RPC methodCall and methodResponse
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: marshal.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"
-
-module XMLRPC
-
-  class Marshal
-    include ParserWriterChooseMixin
-
-    # class methods -------------------------------
-   
-    class << self
-
-      def dump_call( methodName, *params )
-        new.dump_call( methodName, *params )
-      end
-
-      def dump_response( param )
-        new.dump_response( param )
-      end
-
-      def load_call( stringOrReadable )
-        new.load_call( stringOrReadable )
-      end
-
-      def load_response( stringOrReadable )
-        new.load_response( stringOrReadable )
-      end
-
-      alias dump dump_response
-      alias load load_response
-
-    end # class self
-
-    # instance methods ----------------------------
-
-    def initialize( parser = nil, writer = nil )
-      set_parser( parser )
-      set_writer( writer )
-    end
-
-    def dump_call( methodName, *params )
-      create.methodCall( methodName, *params )
-    end
-
-    def dump_response( param ) 
-      create.methodResponse( ! param.kind_of?( XMLRPC::FaultException ) , param )
-    end
-
-    ##
-    # returns [ methodname, params ]
-    #
-    def load_call( stringOrReadable )
-      parser.parseMethodCall( stringOrReadable )
-    end
-
-    ##
-    # returns paramOrFault
-    #
-    def load_response( stringOrReadable )
-      parser.parseMethodResponse( stringOrReadable )[1]
-    end
-
-  end # class Marshal
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/parser.rb
deleted file mode 100644
index 5c0d9a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/parser.rb
+++ /dev/null
@@ -1,813 +0,0 @@
-#
-# Parser for XML-RPC call and response
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: parser.rb 16907 2008-06-07 16:54:15Z shyouhei $
-#
-
-
-require "date"
-require "xmlrpc/base64"
-require "xmlrpc/datetime"
-
-
-# add some methods to NQXML::Node
-module NQXML
-  class Node
-
-    def removeChild(node)
-      @children.delete(node)
-    end
-    def childNodes
-      @children
-    end
-    def hasChildNodes
-      not @children.empty?
-    end
-    def [] (index)
-      @children[index]
-    end
-
-    def nodeType
-      if @entity.instance_of? NQXML::Text then :TEXT
-      elsif @entity.instance_of? NQXML::Comment then :COMMENT
-      #elsif @entity.instance_of? NQXML::Element then :ELEMENT
-      elsif @entity.instance_of? NQXML::Tag then :ELEMENT
-      else :ELSE
-      end
-    end
-
-    def nodeValue
-      #TODO: error when wrong Entity-type
-      @entity.text
-    end
-    def nodeName
-      #TODO: error when wrong Entity-type
-      @entity.name
-    end
-  end # class Node
-end # module NQXML
-
-module XMLRPC
-
-  class FaultException < StandardError
-    attr_reader :faultCode, :faultString
-
-    alias message faultString
-
-    def initialize(faultCode, faultString)
-      @faultCode   = faultCode
-      @faultString = faultString
-    end
-    
-    # returns a hash
-    def to_h
-      {"faultCode" => @faultCode, "faultString" => @faultString}
-    end
-  end
-
-  module Convert
-    def self.int(str)
-      str.to_i
-    end
-
-    def self.boolean(str)
-      case str
-      when "0" then false
-      when "1" then true
-      else
-        raise "RPC-value of type boolean is wrong" 
-      end
-    end
-
-    def self.double(str)
-      str.to_f
-    end
-
-    def self.dateTime(str)
-      case str
-      when /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(?:Z|([+-])(\d\d):?(\d\d))?$/
-        a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
-        if $7
-          ofs = $8.to_i*3600 + $9.to_i*60
-          ofs = -ofs if $7=='+'
-          utc = Time.utc(*a) + ofs
-          a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ]
-        end
-        XMLRPC::DateTime.new(*a)
-      when /^(-?\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(Z|([+-]\d\d):(\d\d))?$/
-        a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i}
-        if a[0] < 70
-          a[0] += 2000
-        else
-          a[0] += 1900
-        end
-        if $7
-          ofs = $8.to_i*3600 + $9.to_i*60
-          ofs = -ofs if $7=='+'
-          utc = Time.utc(*a) + ofs
-          a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ]
-        end
-        XMLRPC::DateTime.new(*a)
-      else
-        raise "wrong dateTime.iso8601 format " + str
-      end
-    end
-
-    def self.base64(str)
-      XMLRPC::Base64.decode(str)
-    end
-
-    def self.struct(hash)
-      # convert to marhalled object
-      klass = hash["___class___"]
-      if klass.nil? or Config::ENABLE_MARSHALLING == false 
-        hash
-      else
-        begin
-          mod = Module
-          klass.split("::").each {|const| mod = mod.const_get(const.strip)}
-
-          obj = mod.allocate
-          
-          hash.delete "___class___"
-          hash.each {|key, value| 
-            obj.instance_variable_set("@#{ key }", value) if key =~ /^([\w_][\w_0-9]*)$/
-          }
-          obj
-        rescue
-          hash
-        end
-      end
-    end
-
-    def self.fault(hash)
-      if hash.kind_of? Hash and hash.size == 2 and 
-        hash.has_key? "faultCode" and hash.has_key? "faultString" and 
-        hash["faultCode"].kind_of? Integer and hash["faultString"].kind_of? String
-
-        XMLRPC::FaultException.new(hash["faultCode"], hash["faultString"]) 
-      else
-        raise "wrong fault-structure: #{hash.inspect}"
-      end
-    end
-
-  end # module Convert
-
-  module XMLParser
-
-    class AbstractTreeParser
-
-      def parseMethodResponse(str)
-	methodResponse_document(createCleanedTree(str))
-      end
-
-      def parseMethodCall(str)
-	methodCall_document(createCleanedTree(str))
-      end
-
-      private
-
-      #
-      # remove all whitespaces but in the tags i4, int, boolean....
-      # and all comments
-      #
-      def removeWhitespacesAndComments(node)
-	remove = []
-	childs = node.childNodes.to_a
-	childs.each do |nd|
-	  case _nodeType(nd)
-	  when :TEXT
-            # TODO: add nil?
-            unless %w(i4 int boolean string double dateTime.iso8601 base64).include? node.nodeName
-
-               if node.nodeName == "value" 
-                 if not node.childNodes.to_a.detect {|n| _nodeType(n) == :ELEMENT}.nil?
-                   remove << nd if nd.nodeValue.strip == "" 
-                 end
-               else
-                 remove << nd if nd.nodeValue.strip == ""
-               end
-	    end
-	  when :COMMENT
-	    remove << nd
-	  else
-	    removeWhitespacesAndComments(nd)
-	  end 
-	end
-
-	remove.each { |i| node.removeChild(i) }
-      end
-
-
-      def nodeMustBe(node, name)
-	cmp = case name
-	when Array 
-	  name.include?(node.nodeName)
-	when String
-	  name == node.nodeName
-	else
-	  raise "error"
-	end  
-
-	if not cmp then
-	  raise "wrong xml-rpc (name)"
-	end
-
-	node
-      end
-
-      #
-      # returns, when successfully the only child-node
-      #
-      def hasOnlyOneChild(node, name=nil)
-	if node.childNodes.to_a.size != 1
-	  raise "wrong xml-rpc (size)"
-	end
-	if name != nil then
-	  nodeMustBe(node.firstChild, name)
-	end
-      end
-
-
-      def assert(b)
-	if not b then
-	  raise "assert-fail" 
-	end
-      end
-
-      # the node `node` has empty string or string
-      def text_zero_one(node)
-	nodes = node.childNodes.to_a.size
-
-	if nodes == 1
-	  text(node.firstChild)
-	elsif nodes == 0
-	  ""
-	else
-	  raise "wrong xml-rpc (size)"
-	end
-      end
-     
-
-      def integer(node)
-	#TODO: check string for float because to_i returnsa
-	#      0 when wrong string
-	 nodeMustBe(node, %w(i4 int))    
-	hasOnlyOneChild(node)
-	
-	Convert.int(text(node.firstChild))
-      end
-
-      def boolean(node)
-	nodeMustBe(node, "boolean")    
-	hasOnlyOneChild(node)
-	
-        Convert.boolean(text(node.firstChild))
-      end
-
-      def v_nil(node)
-        nodeMustBe(node, "nil")
-	assert( node.childNodes.to_a.size == 0 )
-        nil
-      end
-
-      def string(node)
-	nodeMustBe(node, "string")    
-	text_zero_one(node)
-      end
-
-      def double(node)
-	#TODO: check string for float because to_f returnsa
-	#      0.0 when wrong string
-	nodeMustBe(node, "double")    
-	hasOnlyOneChild(node)
-	
-	Convert.double(text(node.firstChild))
-      end
-
-      def dateTime(node)
-	nodeMustBe(node, "dateTime.iso8601")
-	hasOnlyOneChild(node)
-	
-        Convert.dateTime( text(node.firstChild) )
-      end
-
-      def base64(node)
-	nodeMustBe(node, "base64")
-	#hasOnlyOneChild(node)
-	 
-        Convert.base64(text_zero_one(node))
-      end
-
-      def member(node)
-	nodeMustBe(node, "member")
-	assert( node.childNodes.to_a.size == 2 ) 
-
-	[ name(node[0]), value(node[1]) ]
-      end
-
-      def name(node)
-	nodeMustBe(node, "name")
-	#hasOnlyOneChild(node)
-	text_zero_one(node) 
-      end
-
-      def array(node)
-	nodeMustBe(node, "array")
-	hasOnlyOneChild(node, "data") 
-	data(node.firstChild)  
-      end
-
-      def data(node)
-	nodeMustBe(node, "data")
-
-	node.childNodes.to_a.collect do |val|
-	  value(val)
-	end 
-      end
-
-      def param(node)
-	nodeMustBe(node, "param")
-	hasOnlyOneChild(node, "value")
-	value(node.firstChild) 
-      end
- 
-      def methodResponse(node)
-	nodeMustBe(node, "methodResponse")
-	hasOnlyOneChild(node, %w(params fault))
-	child = node.firstChild
-
-	case child.nodeName
-	when "params"
-	  [ true, params(child,false) ] 
-	when "fault"
-	  [ false, fault(child) ]
-	else
-	  raise "unexpected error"
-	end
-
-      end
-
-      def methodName(node)
-	nodeMustBe(node, "methodName")
-	hasOnlyOneChild(node)
-	text(node.firstChild) 
-      end
-
-      def params(node, call=true)
-	nodeMustBe(node, "params")
-
-	if call 
-	  node.childNodes.to_a.collect do |n|
-	    param(n)
-	  end
-	else # response (only one param)
-	  hasOnlyOneChild(node)
-	  param(node.firstChild)
-	end
-      end
-
-      def fault(node)
-	nodeMustBe(node, "fault")
-	hasOnlyOneChild(node, "value")
-	f = value(node.firstChild) 
-        Convert.fault(f)
-      end
-
-
-
-      # _nodeType is defined in the subclass
-      def text(node)
-	assert( _nodeType(node) == :TEXT )
-	assert( node.hasChildNodes == false )
-	assert( node.nodeValue != nil )
-
-	node.nodeValue.to_s
-      end
-
-      def struct(node)
-	nodeMustBe(node, "struct")    
-
-	hash = {}
-	node.childNodes.to_a.each do |me|
-	  n, v = member(me)  
-	  hash[n] = v
-	end 
-
-        Convert.struct(hash)
-     end
-
-
-      def value(node)
-	nodeMustBe(node, "value")
-	nodes = node.childNodes.to_a.size
-        if nodes == 0 
-          return ""
-        elsif nodes > 1 
-	  raise "wrong xml-rpc (size)"
-        end
-
-	child = node.firstChild
-
-	case _nodeType(child)
-	when :TEXT
-          text_zero_one(node)
-	when :ELEMENT
-	  case child.nodeName
-	  when "i4", "int"        then integer(child)
-	  when "boolean"          then boolean(child)
-	  when "string"           then string(child)
-	  when "double"           then double(child)
-	  when "dateTime.iso8601" then dateTime(child)
-	  when "base64"           then base64(child)
-	  when "struct"           then struct(child)
-	  when "array"            then array(child) 
-          when "nil"              
-            if Config::ENABLE_NIL_PARSER
-              v_nil(child)
-            else
-              raise "wrong/unknown XML-RPC type 'nil'"
-            end
-	  else 
-	    raise "wrong/unknown XML-RPC type"
-	  end
-	else
-	  raise "wrong type of node"
-	end
-
-      end
-
-      def methodCall(node)
-	nodeMustBe(node, "methodCall")
-	assert( (1..2).include?( node.childNodes.to_a.size ) ) 
-	name = methodName(node[0])
-
-	if node.childNodes.to_a.size == 2 then
-	  pa = params(node[1])
-	else # no parameters given
-	  pa = []
-	end
-	[name, pa]
-      end
-
-    end # module TreeParserMixin
-
-    class AbstractStreamParser
-      def parseMethodResponse(str)
-        parser = @parser_class.new
-        parser.parse(str)
-        raise "No valid method response!" if parser.method_name != nil
-        if parser.fault != nil
-          # is a fault structure
-          [false, parser.fault] 
-        else
-          # is a normal return value
-          raise "Missing return value!" if parser.params.size == 0
-          raise "Too many return values. Only one allowed!" if parser.params.size > 1
-          [true, parser.params[0]]
-        end
-      end
-
-      def parseMethodCall(str)
-        parser = @parser_class.new
-        parser.parse(str)
-        raise "No valid method call - missing method name!" if parser.method_name.nil?
-        [parser.method_name, parser.params]
-      end
-    end
-
-    module StreamParserMixin
-      attr_reader :params
-      attr_reader :method_name
-      attr_reader :fault
-
-      def initialize(*a)
-        super(*a)
-        @params = []
-        @values = []
-        @val_stack = []
-
-        @names = []
-        @name = []
-
-        @structs = []
-        @struct = {}
-
-        @method_name = nil
-        @fault = nil
-
-        @data = nil
-      end
-
-      def startElement(name, attrs=[])
-        @data = nil
-        case name
-        when "value"
-          @value = nil
-        when "nil"
-          raise "wrong/unknown XML-RPC type 'nil'" unless Config::ENABLE_NIL_PARSER
-          @value = :nil 
-        when "array"
-          @val_stack << @values
-          @values = []
-        when "struct"
-          @names << @name
-          @name = []
-
-          @structs << @struct
-          @struct = {} 
-        end
-      end
-
-      def endElement(name)
-        @data ||= ""
-        case name
-        when "string"
-          @value = @data
-        when "i4", "int"
-          @value = Convert.int(@data)
-        when "boolean"
-          @value = Convert.boolean(@data)
-        when "double"
-          @value = Convert.double(@data)
-        when "dateTime.iso8601"
-          @value = Convert.dateTime(@data)
-        when "base64"
-          @value = Convert.base64(@data)
-        when "value"
-          @value = @data if @value.nil?
-          @values << (@value == :nil ? nil : @value) 
-        when "array"
-          @value = @values
-          @values = @val_stack.pop
-        when "struct"
-          @value = Convert.struct(@struct)
-
-          @name = @names.pop
-          @struct = @structs.pop
-        when "name"
-          @name[0] = @data 
-        when "member"
-          @struct[@name[0]] = @values.pop 
-
-        when "param"
-          @params << @values[0]
-          @values = []
-
-        when "fault"
-          @fault = Convert.fault(@values[0])
-
-        when "methodName"
-          @method_name = @data 
-        end
-
-        @data = nil
-      end
-
-      def character(data)
-        if @data
-          @data << data
-        else
-          @data = data
-        end
-      end
-
-    end # module StreamParserMixin
-
-    # ---------------------------------------------------------------------------
-    class XMLStreamParser < AbstractStreamParser
-      def initialize
-        require "xmlparser"
-        @parser_class = Class.new(::XMLParser) {
-          include StreamParserMixin
-        }
-      end
-    end # class XMLStreamParser
-    # ---------------------------------------------------------------------------
-    class NQXMLStreamParser < AbstractStreamParser
-      def initialize
-        require "nqxml/streamingparser"
-        @parser_class = XMLRPCParser
-      end
-
-      class XMLRPCParser 
-        include StreamParserMixin
-
-        def parse(str)
-          parser = NQXML::StreamingParser.new(str)
-          parser.each do |ele|
-            case ele
-            when NQXML::Text
-              @data = ele.text
-              #character(ele.text)
-            when NQXML::Tag
-              if ele.isTagEnd
-                endElement(ele.name)
-              else
-                startElement(ele.name, ele.attrs)
-              end
-            end
-          end # do
-        end # method parse
-      end # class XMLRPCParser
-
-    end # class NQXMLStreamParser
-    # ---------------------------------------------------------------------------
-    class XMLTreeParser < AbstractTreeParser
-
-      def initialize
-        require "xmltreebuilder"
-
-        # The new XMLParser library (0.6.2+) uses a slightly different DOM implementation. 
-        # The following code removes the differences between both versions.
-        if defined? XML::DOM::Builder 
-          return if defined? XML::DOM::Node::DOCUMENT # code below has been already executed
-          klass = XML::DOM::Node
-          klass.const_set("DOCUMENT", klass::DOCUMENT_NODE)
-          klass.const_set("TEXT", klass::TEXT_NODE)
-          klass.const_set("COMMENT", klass::COMMENT_NODE)
-          klass.const_set("ELEMENT", klass::ELEMENT_NODE)
-        end
-      end
-
-      private
-
-      def _nodeType(node)
-	tp = node.nodeType
-	if tp == XML::SimpleTree::Node::TEXT then :TEXT
-	elsif tp == XML::SimpleTree::Node::COMMENT then :COMMENT 
-	elsif tp == XML::SimpleTree::Node::ELEMENT then :ELEMENT 
-	else :ELSE
-	end
-      end
-
-
-      def methodResponse_document(node)
-	assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
-	hasOnlyOneChild(node, "methodResponse")
-	
-	methodResponse(node.firstChild)
-      end
-
-      def methodCall_document(node)
-	assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
-	hasOnlyOneChild(node, "methodCall")
-	
-	methodCall(node.firstChild)
-      end
-
-      def createCleanedTree(str)
-	doc = XML::SimpleTreeBuilder.new.parse(str)
-	doc.documentElement.normalize
-	removeWhitespacesAndComments(doc)
-	doc
-      end
-
-    end # class XMLParser
-    # ---------------------------------------------------------------------------
-    class NQXMLTreeParser < AbstractTreeParser
-
-      def initialize
-        require "nqxml/treeparser"
-      end
-
-      private
-
-      def _nodeType(node)
-	node.nodeType
-      end
-
-      def methodResponse_document(node)
-	methodResponse(node)
-      end
-
-      def methodCall_document(node)
-	methodCall(node)
-      end
-
-      def createCleanedTree(str)
-        doc = ::NQXML::TreeParser.new(str).document.rootNode 
-	removeWhitespacesAndComments(doc)
-	doc
-      end
-
-    end # class NQXMLTreeParser
-    # ---------------------------------------------------------------------------
-    class REXMLStreamParser < AbstractStreamParser
-      def initialize
-        require "rexml/document"
-        @parser_class = StreamListener
-      end
-
-      class StreamListener 
-        include StreamParserMixin
-
-        alias :tag_start :startElement
-        alias :tag_end :endElement
-        alias :text :character
-        alias :cdata :character
-
-        def method_missing(*a)
-          # ignore
-        end
-
-        def parse(str)
-          parser = REXML::Document.parse_stream(str, self)
-       end
-      end 
-
-    end
-    # ---------------------------------------------------------------------------
-    class XMLScanStreamParser < AbstractStreamParser
-      def initialize
-        require "xmlscan/parser"
-        @parser_class = XMLScanParser
-      end
-
-      class XMLScanParser
-        include StreamParserMixin
-
-        Entities = {
-          "lt"   => "<",
-          "gt"   => ">",
-          "amp"  => "&",
-          "quot" => '"',
-          "apos" => "'"
-        }
-
-        def parse(str)
-          parser  = XMLScan::XMLParser.new(self)
-          parser.parse(str)
-        end
-
-        alias :on_stag :startElement
- 	alias :on_etag :endElement
-
-        def on_stag_end(name); end
-
-        def on_stag_end_empty(name)
-          startElement(name)
-          endElement(name)
-        end
-       
-        def on_chardata(str)
-          character(str)
-        end
-
-        def on_cdata(str)
-          character(str)
-        end
-
-        def on_entityref(ent)
-          str = Entities[ent]
-          if str
-            character(str)
-          else
-            raise "unknown entity"
-          end
-        end
-
-        def on_charref(code)
-          character(code.chr)
-        end
-
-        def on_charref_hex(code)
-          character(code.chr)
-        end
-
-        def method_missing(*a)
-        end
-
-        # TODO: call/implement?
-        # valid_name?
-        # valid_chardata?
-        # valid_char?
-        # parse_error  
-
-      end
-    end
-    # ---------------------------------------------------------------------------
-    XMLParser   = XMLTreeParser
-    NQXMLParser = NQXMLTreeParser
-
-    Classes = [XMLStreamParser, XMLTreeParser, 
-               NQXMLStreamParser, NQXMLTreeParser, 
-               REXMLStreamParser, XMLScanStreamParser]
-
-    # yields an instance of each installed parser
-    def self.each_installed_parser
-      XMLRPC::XMLParser::Classes.each do |klass|
-        begin
-          yield klass.new
-        rescue LoadError
-        end
-      end
-    end
-
-  end # module XMLParser
-
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/server.rb
deleted file mode 100644
index d297431..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/server.rb
+++ /dev/null
@@ -1,780 +0,0 @@
-=begin
-= xmlrpc/server.rb
-Copyright (C) 2001, 2002, 2003, 2005 by Michael Neumann (mneumann at ntecs.de)
-
-Released under the same term of license as Ruby.
-
-= Classes
-* ((<XMLRPC::BasicServer>))
-* ((<XMLRPC::CGIServer>))
-* ((<XMLRPC::ModRubyServer>))
-* ((<XMLRPC::Server>))
-* ((<XMLRPC::WEBrickServlet>))
-
-= XMLRPC::BasicServer
-== Description
-Is the base class for all XML-RPC server-types (CGI, standalone).
-You can add handler and set a default handler. 
-Do not use this server, as this is/should be an abstract class.
-
-=== How the method to call is found
-The arity (number of accepted arguments) of a handler (method or (({Proc})) object) is 
-compared to the given arguments submitted by the client for a RPC ((-Remote Procedure Call-)). 
-A handler is only called if it accepts the number of arguments, otherwise the search 
-for another handler will go on. When at the end no handler was found, 
-the ((<default_handler|XMLRPC::BasicServer#set_default_handler>)) will be called.
-With this technique it is possible to do overloading by number of parameters, but
-only for (({Proc})) handler, because you cannot define two methods of the same name in
-the same class. 
-
-
-== Class Methods
---- XMLRPC::BasicServer.new( class_delim="." )
-    Creates a new (({XMLRPC::BasicServer})) instance, which should not be 
-    done, because (({XMLRPC::BasicServer})) is an abstract class. This
-    method should be called from a subclass indirectly by a (({super})) call
-    in the method (({initialize})). The paramter ((|class_delim|)) is used
-    in ((<add_handler|XMLRPC::BasicServer#add_handler>)) when an object is
-    added as handler, to delimit the object-prefix and the method-name.
-
-== Instance Methods
---- XMLRPC::BasicServer#add_handler( name, signature=nil, help=nil ) { aBlock }
-    Adds ((|aBlock|)) to the list of handlers, with ((|name|)) as the name of the method.
-    Parameters ((|signature|)) and ((|help|)) are used by the Introspection method if specified, 
-    where ((|signature|)) is either an Array containing strings each representing a type of it's 
-    signature (the first is the return value) or an Array of Arrays if the method has multiple 
-    signatures. Value type-names are "int, boolean, double, string, dateTime.iso8601, base64, array, struct".
-
-    Parameter ((|help|)) is a String with informations about how to call this method etc.
-
-    A handler method or code-block can return the types listed at
-    ((<XMLRPC::Client#call|URL:client.html#index:0>)). 
-    When a method fails, it can tell it the client by throwing an 
-    (({XMLRPC::FaultException})) like in this example:
-        s.add_handler("michael.div") do |a,b|
-          if b == 0
-            raise XMLRPC::FaultException.new(1, "division by zero")
-          else
-            a / b 
-          end
-        end 
-    The client gets in the case of (({b==0})) an object back of type
-    (({XMLRPC::FaultException})) that has a ((|faultCode|)) and ((|faultString|))
-    field.
-
---- XMLRPC::BasicServer#add_handler( prefix, obj )
-    This is the second form of ((<add_handler|XMLRPC::BasicServer#add_handler>)).
-    To add an object write:
-        server.add_handler("michael", MyHandlerClass.new)
-    All public methods of (({MyHandlerClass})) are accessible to
-    the XML-RPC clients by (('michael."name of method"')). This is 
-    where the ((|class_delim|)) in ((<new|XMLRPC::BasicServer.new>)) 
-    has it's role, a XML-RPC method-name is defined by 
-    ((|prefix|)) + ((|class_delim|)) + (('"name of method"')). 
-
---- XMLRPC::BasicServer#add_handler( interface, obj )
-    This is the third form of ((<add_handler|XMLRPC::BasicServer#add_handler>)).
-
-    Use (({XMLRPC::interface})) to generate an ServiceInterface object, which
-    represents an interface (with signature and help text) for a handler class.
-
-    Parameter ((|interface|)) must be of type (({XMLRPC::ServiceInterface})).
-    Adds all methods of ((|obj|)) which are defined in ((|interface|)) to the
-    server.
-
-    This is the recommended way of adding services to a server!
-
-
---- XMLRPC::BasicServer#get_default_handler
-    Returns the default-handler, which is called when no handler for
-    a method-name is found.
-    It is a (({Proc})) object or (({nil})).
-
---- XMLRPC::BasicServer#set_default_handler ( &handler )
-    Sets ((|handler|)) as the default-handler, which is called when 
-    no handler for a method-name is found. ((|handler|)) is a code-block.
-    The default-handler is called with the (XML-RPC) method-name as first argument, and
-    the other arguments are the parameters given by the client-call.
-  
-    If no block is specified the default of (({XMLRPC::BasicServer})) is used, which raises a
-    XMLRPC::FaultException saying "method missing".
-
-
---- XMLRPC::BasicServer#set_writer( writer )
-    Sets the XML writer to use for generating XML output.
-    Should be an instance of a class from module (({XMLRPC::XMLWriter})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_WRITER})) is used. 
-
---- XMLRPC::BasicServer#set_parser( parser )
-    Sets the XML parser to use for parsing XML documents.
-    Should be an instance of a class from module (({XMLRPC::XMLParser})).
-    If this method is not called, then (({XMLRPC::Config::DEFAULT_PARSER})) is used.
-
---- XMLRPC::BasicServer#add_introspection
-    Adds the introspection handlers "system.listMethods", "system.methodSignature" and "system.methodHelp", 
-    where only the first one works.
-
---- XMLRPC::BasicServer#add_multicall
-    Adds the multi-call handler "system.multicall".
-
---- XMLRPC::BasicServer#get_service_hook
-    Returns the service-hook, which is called on each service request (RPC) unless it's (({nil})).
-
---- XMLRPC::BasicServer#set_service_hook ( &handler )
-    A service-hook is called for each service request (RPC).
-    You can use a service-hook for example to wrap existing methods and catch exceptions of them or
-    convert values to values recognized by XMLRPC. You can disable it by passing (({nil})) as parameter  
-    ((|handler|)) .
-
-    The service-hook is called with a (({Proc})) object and with the parameters for this (({Proc})).
-    An example:
-
-       server.set_service_hook {|obj, *args|
-         begin
-           ret = obj.call(*args)  # call the original service-method
-           # could convert the return value 
-         resuce
-           # rescue exceptions
-         end
-       }
-
-=end
-
-
-
-require "xmlrpc/parser"
-require "xmlrpc/create"
-require "xmlrpc/config"
-require "xmlrpc/utils"         # ParserWriterChooseMixin
-
-
-
-module XMLRPC
-
-
-class BasicServer
-
-  include ParserWriterChooseMixin
-  include ParseContentType
-
-  ERR_METHOD_MISSING        = 1 
-  ERR_UNCAUGHT_EXCEPTION    = 2
-  ERR_MC_WRONG_PARAM        = 3
-  ERR_MC_MISSING_PARAMS     = 4
-  ERR_MC_MISSING_METHNAME   = 5
-  ERR_MC_RECURSIVE_CALL     = 6
-  ERR_MC_WRONG_PARAM_PARAMS = 7
-  ERR_MC_EXPECTED_STRUCT    = 8
-
-
-  def initialize(class_delim=".")
-    @handler = []
-    @default_handler = nil 
-    @service_hook = nil
-
-    @class_delim = class_delim
-    @create = nil
-    @parser = nil
-
-    add_multicall     if Config::ENABLE_MULTICALL
-    add_introspection if Config::ENABLE_INTROSPECTION
-  end
-
-  def add_handler(prefix, obj_or_signature=nil, help=nil, &block)
-    if block_given?
-      # proc-handler
-      @handler << [prefix, block, obj_or_signature, help]   
-    else
-      if prefix.kind_of? String
-        # class-handler
-        raise ArgumentError, "Expected non-nil value" if obj_or_signature.nil?
-        @handler << [prefix + @class_delim, obj_or_signature]
-      elsif prefix.kind_of? XMLRPC::Service::BasicInterface
-        # class-handler with interface
-        # add all methods
-        @handler += prefix.get_methods(obj_or_signature, @class_delim)
-      else
-        raise ArgumentError, "Wrong type for parameter 'prefix'"
-      end
-    end
-    self
-  end
-
-  def get_service_hook
-    @service_hook
-  end
-
-  def set_service_hook(&handler)
-    @service_hook = handler
-    self
-  end
- 
-  def get_default_handler
-    @default_handler
-  end
-
-  def set_default_handler (&handler)
-    @default_handler = handler
-    self
-  end  
-
-  def add_multicall
-    add_handler("system.multicall", %w(array array), "Multicall Extension") do |arrStructs|
-      unless arrStructs.is_a? Array 
-        raise XMLRPC::FaultException.new(ERR_MC_WRONG_PARAM, "system.multicall expects an array")
-      end
-
-      arrStructs.collect {|call|
-        if call.is_a? Hash
-          methodName = call["methodName"]
-          params     = call["params"]  
-
-          if params.nil?
-            multicall_fault(ERR_MC_MISSING_PARAMS, "Missing params")
-          elsif methodName.nil?
-            multicall_fault(ERR_MC_MISSING_METHNAME, "Missing methodName")
-          else
-            if methodName == "system.multicall"
-              multicall_fault(ERR_MC_RECURSIVE_CALL, "Recursive system.multicall forbidden")
-            else
-              unless params.is_a? Array
-                multicall_fault(ERR_MC_WRONG_PARAM_PARAMS, "Parameter params have to be an Array")
-              else
-                ok, val = call_method(methodName, *params)
-                if ok
-                  # correct return value
-                  [val]
-                else
-                  # exception
-                  multicall_fault(val.faultCode, val.faultString) 
-                end
-              end
-            end
-          end  
-           
-        else
-          multicall_fault(ERR_MC_EXPECTED_STRUCT, "system.multicall expected struct")
-        end
-      } 
-    end # end add_handler
-    self
-  end
-
-  def add_introspection
-    add_handler("system.listMethods",%w(array), "List methods available on this XML-RPC server") do
-      methods = []
-      @handler.each do |name, obj|
-        if obj.kind_of? Proc
-          methods << name
-        else
-          obj.methods.each {|meth| methods << name + meth}
-        end
-      end
-      methods
-    end
-
-    add_handler("system.methodSignature", %w(array string), "Returns method signature") do |meth|
-      sigs = []
-      @handler.each do |name, obj, sig|
-        if obj.kind_of? Proc and sig != nil and name == meth
-          if sig[0].kind_of? Array
-            # sig contains multiple signatures, e.g. [["array"], ["array", "string"]]
-            sig.each {|s| sigs << s}
-          else
-            # sig is a single signature, e.g. ["array"]
-            sigs << sig 
-          end
-        end
-      end
-      sigs.uniq! || sigs  # remove eventually duplicated signatures
-    end
-
-    add_handler("system.methodHelp", %w(string string), "Returns help on using this method") do |meth|
-      help = nil 
-      @handler.each do |name, obj, sig, hlp|
-        if obj.kind_of? Proc and name == meth 
-          help = hlp
-          break      
-        end
-      end
-      help || ""
-    end
-
-    self
-  end
-
-
-  
-  def process(data)
-    method, params = parser().parseMethodCall(data) 
-    handle(method, *params)
-  end
- 
-  private # --------------------------------------------------------------
-
-  def multicall_fault(nr, str)
-    {"faultCode" => nr, "faultString" => str}
-  end
- 
-  #
-  # method dispatch
-  #
-  def dispatch(methodname, *args)
-    for name, obj in @handler
-      if obj.kind_of? Proc
-        next unless methodname == name
-      else
-        next unless methodname =~ /^#{name}(.+)$/
-        next unless obj.respond_to? $1
-        obj = obj.method($1)
-      end
-
-      if check_arity(obj, args.size)
-        if @service_hook.nil?
-          return obj.call(*args) 
-        else
-          return @service_hook.call(obj, *args)
-        end
-      end
-    end 
- 
-    if @default_handler.nil?
-      raise XMLRPC::FaultException.new(ERR_METHOD_MISSING, "Method #{methodname} missing or wrong number of parameters!")
-    else
-      @default_handler.call(methodname, *args) 
-    end
-  end
-
-
-  #
-  # returns true, if the arity of "obj" matches
-  #
-  def check_arity(obj, n_args)
-    ary = obj.arity
-
-    if ary >= 0
-      n_args == ary
-    else
-      n_args >= (ary+1).abs 
-    end
-  end
-
-
-
-  def call_method(methodname, *args)
-    begin
-      [true, dispatch(methodname, *args)]
-    rescue XMLRPC::FaultException => e  
-      [false, e]  
-    rescue Exception => e
-      [false, XMLRPC::FaultException.new(ERR_UNCAUGHT_EXCEPTION, "Uncaught exception #{e.message} in method #{methodname}")]
-    end
-  end
-
-  #
-  #
-  #
-  def handle(methodname, *args)
-    create().methodResponse(*call_method(methodname, *args))
-  end
-
-
-end
-
-
-=begin
-= XMLRPC::CGIServer
-== Synopsis
-    require "xmlrpc/server"
- 
-    s = XMLRPC::CGIServer.new     
-
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
-  
-    s.serve
-
-== Description
-Implements a CGI-based XML-RPC server.
-
-== Superclass
-((<XMLRPC::BasicServer>))
-
-== Class Methods
---- XMLRPC::CGIServer.new( *a )
-    Creates a new (({XMLRPC::CGIServer})) instance. All parameters given
-    are by-passed to ((<XMLRPC::BasicServer.new>)). You can only create 
-    ((*one*)) (({XMLRPC::CGIServer})) instance, because more than one makes
-    no sense.
-
-== Instance Methods
---- XMLRPC::CGIServer#serve
-    Call this after you have added all you handlers to the server.
-    This method processes a XML-RPC methodCall and sends the answer
-    back to the client. 
-    Make sure that you don't write to standard-output in a handler, or in
-    any other part of your program, this would case a CGI-based server to fail!
-=end
-
-class CGIServer < BasicServer
-  @@obj = nil
-
-  def CGIServer.new(*a)
-    @@obj = super(*a) if @@obj.nil?
-    @@obj
-  end
-
-  def initialize(*a)
-    super(*a)
-  end
-  
-  def serve
-    catch(:exit_serve) {
-      length = ENV['CONTENT_LENGTH'].to_i
-
-      http_error(405, "Method Not Allowed") unless ENV['REQUEST_METHOD'] == "POST" 
-      http_error(400, "Bad Request")        unless parse_content_type(ENV['CONTENT_TYPE']).first == "text/xml"
-      http_error(411, "Length Required")    unless length > 0 
-
-      # TODO: do we need a call to binmode?
-      $stdin.binmode if $stdin.respond_to? :binmode
-      data = $stdin.read(length)
-
-      http_error(400, "Bad Request")        if data.nil? or data.size != length
-
-      http_write(process(data), "Content-type" => "text/xml; charset=utf-8")
-    }
-  end
-
-
-  private
-
-  def http_error(status, message)
-    err = "#{status} #{message}"
-    msg = <<-"MSGEND" 
-      <html>
-        <head>
-          <title>#{err}</title>
-        </head>
-        <body>
-          <h1>#{err}</h1>
-          <p>Unexpected error occured while processing XML-RPC request!</p>
-        </body>
-      </html>
-    MSGEND
-
-    http_write(msg, "Status" => err, "Content-type" => "text/html")
-    throw :exit_serve # exit from the #serve method
-  end
-
-  def http_write(body, header)
-    h = {}
-    header.each {|key, value| h[key.to_s.capitalize] = value}
-    h['Status']         ||= "200 OK"
-    h['Content-length'] ||= body.size.to_s 
-
-    str = ""
-    h.each {|key, value| str << "#{key}: #{value}\r\n"}
-    str << "\r\n#{body}"
-
-    print str
-  end
-
-end
-
-=begin
-= XMLRPC::ModRubyServer
-== Description
-Implements a XML-RPC server, which works with Apache mod_ruby.
-
-Use it in the same way as CGIServer!
-
-== Superclass
-((<XMLRPC::BasicServer>))
-=end 
-
-class ModRubyServer < BasicServer
-
-  def initialize(*a)
-    @ap = Apache::request
-    super(*a)
-  end
-
-  def serve
-    catch(:exit_serve) {
-      header = {}
-      @ap.headers_in.each {|key, value| header[key.capitalize] = value}
-
-      length = header['Content-length'].to_i
-
-      http_error(405, "Method Not Allowed") unless @ap.request_method  == "POST" 
-      http_error(400, "Bad Request")        unless parse_content_type(header['Content-type']).first == "text/xml"
-      http_error(411, "Length Required")    unless length > 0 
-
-      # TODO: do we need a call to binmode?
-      @ap.binmode
-      data = @ap.read(length)
-
-      http_error(400, "Bad Request")        if data.nil? or data.size != length
-
-      http_write(process(data), 200, "Content-type" => "text/xml; charset=utf-8")
-    }
-  end
-
-
-  private
-
-  def http_error(status, message)
-    err = "#{status} #{message}"
-    msg = <<-"MSGEND" 
-      <html>
-        <head>
-          <title>#{err}</title>
-        </head>
-        <body>
-          <h1>#{err}</h1>
-          <p>Unexpected error occured while processing XML-RPC request!</p>
-        </body>
-      </html>
-    MSGEND
-
-    http_write(msg, status, "Status" => err, "Content-type" => "text/html")
-    throw :exit_serve # exit from the #serve method
-  end
-
-  def http_write(body, status, header)
-    h = {}
-    header.each {|key, value| h[key.to_s.capitalize] = value}
-    h['Status']         ||= "200 OK"
-    h['Content-length'] ||= body.size.to_s 
-
-    h.each {|key, value| @ap.headers_out[key] = value }
-    @ap.content_type = h["Content-type"] 
-    @ap.status = status.to_i 
-    @ap.send_http_header 
-
-    @ap.print body
-  end
-
-end
-
-=begin
-= XMLRPC::Server
-== Synopsis
-    require "xmlrpc/server"
- 
-    s = XMLRPC::Server.new(8080) 
-
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
- 
-    s.serve
-
-== Description
-Implements a standalone XML-RPC server. The method (({serve}))) is left if a SIGHUP is sent to the
-program.
-
-== Superclass
-((<XMLRPC::WEBrickServlet>))
-
-== Class Methods
---- XMLRPC::Server.new( port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a )
-    Creates a new (({XMLRPC::Server})) instance, which is a XML-RPC server listening on
-    port ((|port|)) and accepts requests for the host ((|host|)), which is by default only the localhost. 
-    The server is not started, to start it you have to call ((<serve|XMLRPC::Server#serve>)).
-
-    Parameters ((|audit|)) and ((|debug|)) are obsolete!
-
-    All additionally given parameters in ((|*a|)) are by-passed to ((<XMLRPC::BasicServer.new>)). 
-    
-== Instance Methods
---- XMLRPC::Server#serve
-    Call this after you have added all you handlers to the server.
-    This method starts the server to listen for XML-RPC requests and answer them.
-
---- XMLRPC::Server#shutdown
-    Stops and shuts the server down.
-    
-=end
-
-class WEBrickServlet < BasicServer; end # forward declaration
-
-class Server < WEBrickServlet
-
-  def initialize(port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a)
-    super(*a)
-    require 'webrick'
-    @server = WEBrick::HTTPServer.new(:Port => port, :BindAddress => host, :MaxClients => maxConnections, 
-                                      :Logger => WEBrick::Log.new(stdlog))
-    @server.mount("/", self)
-  end
-  
-  def serve
-    if RUBY_PLATFORM =~ /mingw|mswin32/
-      signals = [1]
-    else
-      signals = %w[INT TERM HUP]
-    end
-    signals.each { |signal| trap(signal) { @server.shutdown } }
-
-    @server.start
-  end
-  
-  def shutdown
-    @server.shutdown
-  end
- 
-end
-
-=begin
-= XMLRPC::WEBrickServlet
-== Synopsis
-
-    require "webrick"
-    require "xmlrpc/server"
-
-    s = XMLRPC::WEBrickServlet.new
-    s.add_handler("michael.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("michael.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-                                       " or wrong number of parameters!")
-    end
-
-    httpserver = WEBrick::HTTPServer.new(:Port => 8080)    
-    httpserver.mount("/RPC2", s)
-    trap("HUP") { httpserver.shutdown }   # use 1 instead of "HUP" on Windows
-    httpserver.start
-
-== Instance Methods
-
---- XMLRPC::WEBrickServlet#set_valid_ip( *ip_addr )
-    Specifies the valid IP addresses that are allowed to connect to the server.
-    Each IP is either a (({String})) or a (({Regexp})).
-
---- XMLRPC::WEBrickServlet#get_valid_ip
-    Return the via method ((<set_valid_ip|XMLRPC::Server#set_valid_ip>)) specified
-    valid IP addresses.
- 
-== Description
-Implements a servlet for use with WEBrick, a pure Ruby (HTTP-) server framework.
-
-== Superclass
-((<XMLRPC::BasicServer>))
-
-=end
-
-class WEBrickServlet < BasicServer
-  def initialize(*a)
-    super
-    require "webrick/httpstatus"
-    @valid_ip = nil
-  end
-
-  # deprecated from WEBrick/1.2.2. 
-  # but does not break anything.
-  def require_path_info?
-    false 
-  end
-
-  def get_instance(config, *options)
-    # TODO: set config & options
-    self
-  end
-
-  def set_valid_ip(*ip_addr)
-    if ip_addr.size == 1 and ip_addr[0].nil?
-      @valid_ip = nil
-    else
-      @valid_ip = ip_addr
-    end
-  end
-
-  def get_valid_ip
-    @valid_ip
-  end
-
-  def service(request, response)
-
-    if @valid_ip 
-      raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
-    end
-
-    if request.request_method != "POST"
-      raise WEBrick::HTTPStatus::MethodNotAllowed,
-            "unsupported method `#{request.request_method}'."
-    end
-
-    if parse_content_type(request['Content-type']).first != "text/xml" 
-      raise WEBrick::HTTPStatus::BadRequest
-    end 
-
-    length = (request['Content-length'] || 0).to_i
-
-    raise WEBrick::HTTPStatus::LengthRequired unless length > 0
-
-    data = request.body
-
-    if data.nil? or data.size != length
-      raise WEBrick::HTTPStatus::BadRequest
-    end
-
-    resp = process(data)
-    if resp.nil? or resp.size <= 0  
-      raise WEBrick::HTTPStatus::InternalServerError
-    end
-
-    response.status = 200
-    response['Content-Length'] = resp.size
-    response['Content-Type']   = "text/xml; charset=utf-8"
-    response.body = resp 
-  end
-end
-
-
-end # module XMLRPC
-
-
-=begin
-= History
-    $Id: server.rb 16966 2008-06-07 19:56:11Z shyouhei $    
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/utils.rb
deleted file mode 100644
index ca74b88..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xmlrpc/utils.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# Defines ParserWriterChooseMixin, which makes it possible to choose a
-# different XML writer and/or XML parser then the default one.
-# The Mixin is used in client.rb (class Client) and server.rb (class 
-# BasicServer)
-# 
-# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann at ntecs.de)
-#
-# $Id: utils.rb 16907 2008-06-07 16:54:15Z shyouhei $ 
-#
-
-module XMLRPC
-
-  #
-  # This module enables a user-class to be marshalled
-  # by XML-RPC for Ruby into a Hash, with one additional
-  # key/value pair "___class___" => ClassName
-  # 
-  module Marshallable
-  end
-
-
-  module ParserWriterChooseMixin
-
-    def set_writer(writer)
-      @create = Create.new(writer)
-      self
-    end
-
-    def set_parser(parser)
-      @parser = parser
-      self
-    end
-
-    private
-
-    def create
-      # if set_writer was not already called then call it now
-      if @create.nil? then
-	set_writer(Config::DEFAULT_WRITER.new)
-      end
-      @create
-    end
-
-    def parser
-      # if set_parser was not already called then call it now
-      if @parser.nil? then
-	set_parser(Config::DEFAULT_PARSER.new)
-      end
-      @parser
-    end
-
-  end # module ParserWriterChooseMixin
-
-
-  module Service
-
-  #
-  # base class for Service Interface definitions, used
-  # by BasicServer#add_handler
-  #
-
-  class BasicInterface
-    attr_reader :prefix, :methods
-
-    def initialize(prefix)
-      @prefix = prefix
-      @methods = []
-    end
-
-    def add_method(sig, help=nil, meth_name=nil)
-      mname = nil
-      sig = [sig] if sig.kind_of? String
-
-      sig = sig.collect do |s| 
-        name, si = parse_sig(s)
-        raise "Wrong signatures!" if mname != nil and name != mname 
-        mname = name
-        si
-      end
-
-      @methods << [mname, meth_name || mname, sig, help]
-    end
-
-    private # ---------------------------------
-  
-    def parse_sig(sig)
-      # sig is a String
-      if sig =~ /^\s*(\w+)\s+([^(]+)(\(([^)]*)\))?\s*$/
-        params = [$1]
-        name   = $2.strip 
-        $4.split(",").each {|i| params << i.strip} if $4 != nil
-        return name, params
-      else
-        raise "Syntax error in signature"
-      end
-    end
-
-  end # class BasicInterface
-
-  #
-  # class which wraps a Service Interface definition, used
-  # by BasicServer#add_handler
-  #
-  class Interface < BasicInterface
-    def initialize(prefix, &p)
-      raise "No interface specified" if p.nil?
-      super(prefix)
-      instance_eval(&p)
-    end
-
-    def get_methods(obj, delim=".") 
-      prefix = @prefix + delim
-      @methods.collect { |name, meth, sig, help| 
-        [prefix + name, obj.method(meth).to_proc, sig, help] 
-      }
-    end
-
-    private # ---------------------------------
-
-    def meth(*a)
-      add_method(*a)
-    end
-
-  end # class Interface
-
-  class PublicInstanceMethodsInterface < BasicInterface
-    def initialize(prefix)
-      super(prefix)
-    end
-
-    def get_methods(obj, delim=".")
-      prefix = @prefix + delim
-      obj.class.public_instance_methods(false).collect { |name|
-        [prefix + name, obj.method(name).to_proc, nil, nil] 
-      }
-    end
-  end
-
-
-  end # module Service
-
-
-  # 
-  # short-form to create a Service::Interface
-  #
-  def self.interface(prefix, &p)
-    Service::Interface.new(prefix, &p)  
-  end
-
-  # short-cut for creating a PublicInstanceMethodsInterface
-  def self.iPIMethods(prefix)
-    Service::PublicInstanceMethodsInterface.new(prefix) 
-  end
-
-
-  module ParseContentType
-    def parse_content_type(str)
-      a, *b = str.split(";")
-      return a.strip.downcase, *b
-    end
-  end
-
-end # module XMLRPC
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/charset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/charset.rb
deleted file mode 100644
index 15d5500..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/charset.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-# XSD4R - Charset handling library.
-# Copyright (C) 2001, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-module Charset
-  @internal_encoding = $KCODE
-
-  class XSDError < StandardError; end
-  class CharsetError < XSDError; end
-  class UnknownCharsetError < CharsetError; end
-  class CharsetConversionError < CharsetError; end
-
-public
-
-  ###
-  ## Maps
-  #
-  EncodingConvertMap = {}
-  def Charset.init
-    EncodingConvertMap[['UTF8', 'X_ISO8859_1']] =
-      Proc.new { |str| str.unpack('U*').pack('C*') }
-    EncodingConvertMap[['X_ISO8859_1', 'UTF8']] =
-      Proc.new { |str| str.unpack('C*').pack('U*') }
-    begin
-      require 'xsd/iconvcharset'
-      @internal_encoding = 'UTF8'
-      sjtag = (/(mswin|bccwin|mingw|cygwin|emx)/ =~ RUBY_PLATFORM) ? 'cp932' :
-        'shift_jis'
-      EncodingConvertMap[['UTF8', 'EUC' ]] =
-        Proc.new { |str| IconvCharset.safe_iconv("euc-jp", "utf-8", str) }
-      EncodingConvertMap[['EUC' , 'UTF8']] =
-        Proc.new { |str| IconvCharset.safe_iconv("utf-8", "euc-jp", str) }
-      EncodingConvertMap[['EUC' , 'SJIS']] =
-        Proc.new { |str| IconvCharset.safe_iconv(sjtag, "euc-jp", str) }
-      EncodingConvertMap[['UTF8', 'SJIS']] =
-        Proc.new { |str| IconvCharset.safe_iconv(sjtag, "utf-8", str) }
-      EncodingConvertMap[['SJIS', 'UTF8']] =
-        Proc.new { |str| IconvCharset.safe_iconv("utf-8", sjtag, str) }
-      EncodingConvertMap[['SJIS', 'EUC' ]] =
-        Proc.new { |str| IconvCharset.safe_iconv("euc-jp", sjtag, str) }
-    rescue LoadError
-      begin
-       	require 'nkf'
-	EncodingConvertMap[['EUC' , 'SJIS']] =
-          Proc.new { |str| NKF.nkf('-sXm0', str) }
-	EncodingConvertMap[['SJIS', 'EUC' ]] =
-          Proc.new { |str| NKF.nkf('-eXm0', str) }
-      rescue LoadError
-      end
-  
-      begin
-	require 'uconv'
-	@internal_encoding = 'UTF8'
-	EncodingConvertMap[['UTF8', 'EUC' ]] = Uconv.method(:u8toeuc)
-	EncodingConvertMap[['UTF8', 'SJIS']] = Uconv.method(:u8tosjis)
-	EncodingConvertMap[['EUC' , 'UTF8']] = Uconv.method(:euctou8)
-	EncodingConvertMap[['SJIS', 'UTF8']] = Uconv.method(:sjistou8)
-      rescue LoadError
-      end
-    end
-  end
-  self.init
-
-  CharsetMap = {
-    'NONE' => 'us-ascii',
-    'EUC' => 'euc-jp',
-    'SJIS' => 'shift_jis',
-    'UTF8' => 'utf-8',
-    'X_ISO_8859_1' => 'iso-8859-1',
-    'X_UNKNOWN' => nil,
-  }
-
-
-  ###
-  ## handlers
-  #
-  def Charset.encoding
-    @internal_encoding
-  end
-
-  def Charset.encoding=(encoding)
-    warn("xsd charset is set to #{encoding}") if $DEBUG
-    @internal_encoding = encoding
-  end
-
-  def Charset.xml_encoding_label
-    charset_label(@internal_encoding)
-  end
-
-  def Charset.encoding_to_xml(str, charset)
-    encoding_conv(str, @internal_encoding, charset_str(charset))
-  end
-
-  def Charset.encoding_from_xml(str, charset)
-    encoding_conv(str, charset_str(charset), @internal_encoding)
-  end
-
-  def Charset.encoding_conv(str, enc_from, enc_to)
-    if enc_from == enc_to or enc_from == 'NONE' or enc_to == 'NONE'
-      str
-    elsif converter = EncodingConvertMap[[enc_from, enc_to]]
-      converter.call(str)
-    else
-      raise CharsetConversionError.new(
-	"Converter not found: #{enc_from} -> #{enc_to}")
-    end
-  end
-
-  def Charset.charset_label(encoding)
-    CharsetMap[encoding.upcase]
-  end
-
-  def Charset.charset_str(label)
-    if CharsetMap.respond_to?(:key)
-      CharsetMap.key(label.downcase) || 'X_UNKNOWN'
-    else
-      CharsetMap.index(label.downcase) || 'X_UNKNOWN'
-    end
-  end
-
-  # us_ascii = '[\x00-\x7F]'
-  us_ascii = '[\x9\xa\xd\x20-\x7F]'	# XML 1.0 restricted.
-  USASCIIRegexp = Regexp.new("\\A#{us_ascii}*\\z", nil, "NONE")
-
-  twobytes_euc = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'
-  threebytes_euc = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'
-  character_euc = "(?:#{us_ascii}|#{twobytes_euc}|#{threebytes_euc})"
-  EUCRegexp = Regexp.new("\\A#{character_euc}*\\z", nil, "NONE")
-
-  # onebyte_sjis = '[\x00-\x7F\xA1-\xDF]'
-  onebyte_sjis = '[\x9\xa\xd\x20-\x7F\xA1-\xDF]'	# XML 1.0 restricted.
-  twobytes_sjis = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'
-  character_sjis = "(?:#{onebyte_sjis}|#{twobytes_sjis})"
-  SJISRegexp = Regexp.new("\\A#{character_sjis}*\\z", nil, "NONE")
-
-  # 0xxxxxxx
-  # 110yyyyy 10xxxxxx
-  twobytes_utf8 = '(?:[\xC0-\xDF][\x80-\xBF])'
-  # 1110zzzz 10yyyyyy 10xxxxxx
-  threebytes_utf8 = '(?:[\xE0-\xEF][\x80-\xBF][\x80-\xBF])'
-  # 11110uuu 10uuuzzz 10yyyyyy 10xxxxxx
-  fourbytes_utf8 = '(?:[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF])'
-  character_utf8 =
-    "(?:#{us_ascii}|#{twobytes_utf8}|#{threebytes_utf8}|#{fourbytes_utf8})"
-  UTF8Regexp = Regexp.new("\\A#{character_utf8}*\\z", nil, "NONE")
-
-  def Charset.is_us_ascii(str)
-    USASCIIRegexp =~ str
-  end
-
-  def Charset.is_utf8(str)
-    UTF8Regexp =~ str
-  end
-
-  def Charset.is_euc(str)
-    EUCRegexp =~ str
-  end
-
-  def Charset.is_sjis(str)
-    SJISRegexp =~ str
-  end
-
-  def Charset.is_ces(str, code = $KCODE)
-    case code
-    when 'NONE'
-      is_us_ascii(str)
-    when 'UTF8'
-      is_utf8(str)
-    when 'EUC'
-      is_euc(str)
-    when 'SJIS'
-      is_sjis(str)
-    else
-      raise UnknownCharsetError.new("Unknown charset: #{code}")
-    end
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen.rb
deleted file mode 100644
index d820ebf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-# XSD4R - Generating code library
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/moduledef'
-require 'xsd/codegen/classdef'
-require 'xsd/codegen/methoddef'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/classdef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/classdef.rb
deleted file mode 100644
index 9eb1ce6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/classdef.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-# XSD4R - Generating class definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/moduledef'
-require 'xsd/codegen/methoddef'
-
-
-module XSD
-module CodeGen
-
-
-class ClassDef < ModuleDef
-  include GenSupport
-
-  def initialize(name, baseclass = nil)
-    super(name)
-    @baseclass = baseclass
-    @classvar = []
-    @attrdef = []
-  end
-
-  def def_classvar(var, value)
-    var = var.sub(/\A@@/, "")
-    unless safevarname?(var)
-      raise ArgumentError.new("#{var} seems to be unsafe")
-    end
-    @classvar << [var, value]
-  end
-
-  def def_attr(attrname, writable = true, varname = nil)
-    unless safevarname?(varname || attrname)
-      raise ArgumentError.new("#{varname || attrname} seems to be unsafe")
-    end
-    @attrdef << [attrname, writable, varname]
-  end
-
-  def dump
-    buf = ""
-    unless @requirepath.empty?
-      buf << dump_requirepath 
-    end
-    buf << dump_emptyline unless buf.empty?
-    package = @name.split(/::/)[0..-2]
-    buf << dump_package_def(package) unless package.empty?
-    buf << dump_comment if @comment
-    buf << dump_class_def
-    spacer = false
-    unless @classvar.empty?
-      spacer = true
-      buf << dump_classvar
-    end
-    unless @const.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_const
-    end
-    unless @code.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_code
-    end
-    unless @attrdef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_attributes
-    end
-    unless @methoddef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_methods
-    end
-    buf << dump_class_def_end
-    buf << dump_package_def_end(package) unless package.empty?
-    buf.gsub(/^\s+$/, '')
-  end
-
-private
-
-  def dump_class_def
-    name = @name.to_s.split(/::/)
-    if @baseclass
-      format("class #{name.last} < #{@baseclass}")
-    else
-      format("class #{name.last}")
-    end
-  end
-
-  def dump_class_def_end
-    str = format("end")
-  end
-
-  def dump_classvar
-    dump_static(
-      @classvar.collect { |var, value|
-        %Q(@@#{var.sub(/^@@/, "")} = #{dump_value(value)})
-      }.join("\n")
-    )
-  end
-
-  def dump_attributes
-    str = ""
-    @attrdef.each do |attrname, writable, varname|
-      varname ||= attrname
-      if attrname == varname
-        str << format(dump_accessor(attrname, writable), 2)
-      end
-    end
-    @attrdef.each do |attrname, writable, varname|
-      varname ||= attrname
-      if attrname != varname
-        str << "\n" unless str.empty?
-        str << format(dump_attribute(attrname, writable, varname), 2)
-      end
-    end
-    str
-  end
-
-  def dump_accessor(attrname, writable)
-    if writable
-      "attr_accessor :#{attrname}"
-    else
-      "attr_reader :#{attrname}"
-    end
-  end
-
-  def dump_attribute(attrname, writable, varname)
-    str = nil
-    mr = MethodDef.new(attrname)
-    mr.definition = "@#{varname}"
-    str = mr.dump
-    if writable
-      mw = MethodDef.new(attrname + "=", 'value')
-      mw.definition = "@#{varname} = value"
-      str << "\n" + mw.dump
-    end
-    str
-  end
-end
-
-
-end
-end
-
-
-if __FILE__ == $0
-  require 'xsd/codegen/classdef'
-  include XSD::CodeGen
-  c = ClassDef.new("Foo::Bar::HobbitName", String)
-  c.def_require("foo/bar")
-  c.comment = <<-EOD
-      foo
-    bar
-      baz
-  EOD
-  c.def_const("FOO", 1)
-  c.def_classvar("@@foo", "var".dump)
-  c.def_classvar("baz", "1".dump)
-  c.def_attr("Foo", true, "foo")
-  c.def_attr("bar")
-  c.def_attr("baz", true)
-  c.def_attr("Foo2", true, "foo2")
-  c.def_attr("foo3", false, "foo3")
-  c.def_method("foo") do
-    <<-EOD
-        foo.bar = 1
-\tbaz.each do |ele|
-\t  ele
-        end
-    EOD
-  end
-  c.def_method("baz", "qux") do
-    <<-EOD
-      [1, 2, 3].each do |i|
-        p i
-      end
-    EOD
-  end
-
-  m = MethodDef.new("qux", "quxx", "quxxx") do
-    <<-EOD
-    p quxx + quxxx
-    EOD
-  end
-  m.comment = "hello world\n123"
-  c.add_method(m)
-  c.def_code <<-EOD
-    Foo.new
-    Bar.z
-  EOD
-  c.def_code <<-EOD
-    Foo.new
-    Bar.z
-  EOD
-  c.def_privatemethod("foo", "baz", "*arg", "&block")
-
-  puts c.dump
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/commentdef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/commentdef.rb
deleted file mode 100644
index c9493a1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/commentdef.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# XSD4R - Generating comment definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-
-
-module XSD
-module CodeGen
-
-
-module CommentDef
-  include GenSupport
-
-  attr_accessor :comment
-
-private
-
-  def dump_comment
-    if /\A#/ =~ @comment
-      format(@comment)
-    else
-      format(@comment).gsub(/^/, '# ')
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/gensupport.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/gensupport.rb
deleted file mode 100644
index 1e85d36..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/gensupport.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# XSD4R - Code generation support
-# Copyright (C) 2004, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-module CodeGen
-
-# from the file 'keywords' in 1.9.
-KEYWORD = {}
-%w(
-__LINE__
-__FILE__
-BEGIN
-END
-alias
-and
-begin
-break
-case
-class
-def
-defined?
-do
-else
-elsif
-end
-ensure
-false
-for
-if
-in
-module
-next
-nil
-not
-or
-redo
-rescue
-retry
-return
-self
-super
-then
-true
-undef
-unless
-until
-when
-while
-yield
-).each { |k| KEYWORD[k] = nil }
-
-module GenSupport
-  def capitalize(target)
-    target.sub(/^([a-z])/) { $1.tr!('[a-z]', '[A-Z]') }
-  end
-  module_function :capitalize
-
-  def uncapitalize(target)
-    target.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
-  end
-  module_function :uncapitalize
-
-  def safeconstname(name)
-    safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
-      GenSupport.capitalize(ele)
-    }.join
-    if /^[A-Z]/ !~ safename or keyword?(safename)
-      safename = "C_#{safename}"
-    end
-    safename
-  end
-  module_function :safeconstname
-
-  def safeconstname?(name)
-    /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
-  end
-  module_function :safeconstname?
-
-  def safemethodname(name)
-    safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
-    safename = uncapitalize(safename)
-    if /^[a-z]/ !~ safename
-      safename = "m_#{safename}"
-    end
-    safename
-  end
-  module_function :safemethodname
-
-  def safemethodname?(name)
-    /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name
-  end
-  module_function :safemethodname?
-
-  def safevarname(name)
-    safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
-    if /^[a-z]/ !~ safename or keyword?(safename)
-      "v_#{safename}"
-    else
-      safename
-    end
-  end
-  module_function :safevarname
-
-  def safevarname?(name)
-    /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
-  end
-  module_function :safevarname?
-
-  def keyword?(word)
-    KEYWORD.key?(word)
-  end
-  module_function :keyword?
-
-  def format(str, indent = nil)
-    str = trim_eol(str)
-    str = trim_indent(str)
-    if indent
-      str.gsub(/^/, " " * indent)
-    else
-      str
-    end
-  end
-
-private
-
-  def trim_eol(str)
-    str.collect { |line|
-      line.sub(/\r?\n\z/, "") + "\n"
-    }.join
-  end
-
-  def trim_indent(str)
-    indent = nil
-    str = str.collect { |line| untab(line) }.join
-    str.each do |line|
-      head = line.index(/\S/)
-      if !head.nil? and (indent.nil? or head < indent)
-        indent = head
-      end
-    end
-    return str unless indent
-    str.collect { |line|
-      line.sub(/^ {0,#{indent}}/, "")
-    }.join
-  end
-
-  def untab(line, ts = 8)
-    while pos = line.index(/\t/)
-      line = line.sub(/\t/, " " * (ts - (pos % ts)))
-    end
-    line
-  end
-
-  def dump_emptyline
-    "\n"
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/methoddef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/methoddef.rb
deleted file mode 100644
index 15892fc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/methoddef.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-# XSD4R - Generating method definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/commentdef'
-
-
-module XSD
-module CodeGen
-
-
-class MethodDef
-  include GenSupport
-  include CommentDef
-
-  attr_accessor :definition
-
-  def initialize(name, *params)
-    unless safemethodname?(name)
-      raise ArgumentError.new("name '#{name}' seems to be unsafe")
-    end
-    @name = name
-    @params = params
-    @comment = nil
-    @definition = yield if block_given?
-  end
-
-  def dump
-    buf = ""
-    buf << dump_comment if @comment
-    buf << dump_method_def
-    buf << dump_definition if @definition and !@definition.empty?
-    buf << dump_method_def_end
-    buf
-  end
-
-private
-
-  def dump_method_def
-    if @params.empty?
-      format("def #{@name}")
-    else
-      format("def #{@name}(#{@params.join(", ")})")
-    end
-  end
-
-  def dump_method_def_end
-    format("end")
-  end
-
-  def dump_definition
-    format(@definition, 2)
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/moduledef.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/moduledef.rb
deleted file mode 100644
index 744af2f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/codegen/moduledef.rb
+++ /dev/null
@@ -1,191 +0,0 @@
-# XSD4R - Generating module definition code
-# Copyright (C) 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/codegen/gensupport'
-require 'xsd/codegen/methoddef'
-require 'xsd/codegen/commentdef'
-
-
-module XSD
-module CodeGen
-
-
-class ModuleDef
-  include GenSupport
-  include CommentDef
-
-  def initialize(name)
-    @name = name
-    @comment = nil
-    @const = []
-    @code = []
-    @requirepath = []
-    @methoddef = []
-  end
-
-  def def_require(path)
-    @requirepath << path
-  end
-
-  def def_const(const, value)
-    unless safeconstname?(const)
-      raise ArgumentError.new("#{const} seems to be unsafe")
-    end
-    @const << [const, value]
-  end
-
-  def def_code(code)
-    @code << code
-  end
-
-  def def_method(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
-  end
-  alias def_publicmethod def_method
-
-  def def_protectedmethod(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? },
-      :protected)
-  end
-
-  def def_privatemethod(name, *params)
-    add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
-  end
-
-  def add_method(m, visibility = :public)
-    @methoddef << [visibility, m]
-  end
-
-  def dump
-    buf = ""
-    unless @requirepath.empty?
-      buf << dump_requirepath 
-    end
-    buf << dump_emptyline unless buf.empty?
-    package = @name.split(/::/)[0..-2]
-    buf << dump_package_def(package) unless package.empty?
-    buf << dump_comment if @comment
-    buf << dump_module_def
-    spacer = false
-    unless @const.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_const
-    end
-    unless @code.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_code
-    end
-    unless @methoddef.empty?
-      buf << dump_emptyline if spacer
-      spacer = true
-      buf << dump_methods
-    end
-    buf << dump_module_def_end
-    buf << dump_package_def_end(package) unless package.empty?
-    buf.gsub(/^\s+$/, '')
-  end
-
-private
-
-  def dump_requirepath
-    format(
-      @requirepath.collect { |path|
-        %Q(require '#{path}')
-      }.join("\n")
-    )
-  end
-
-  def dump_const
-    dump_static(
-      @const.sort.collect { |var, value|
-        %Q(#{var} = #{dump_value(value)})
-      }.join("\n")
-    )
-  end
-
-  def dump_code
-    dump_static(@code.join("\n"))
-  end
-
-  def dump_static(str)
-    format(str, 2)
-  end
-
-  def dump_methods
-    methods = {}
-    @methoddef.each do |visibility, method|
-      (methods[visibility] ||= []) << method
-    end
-    str = ""
-    [:public, :protected, :private].each do |visibility|
-      if methods[visibility]
-        str << "\n" unless str.empty?
-        str << visibility.to_s << "\n\n" unless visibility == :public
-        str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n")
-      end
-    end
-    str
-  end
-
-  def dump_value(value)
-    if value.respond_to?(:to_src)
-      value.to_src
-    else
-      value
-    end
-  end
-
-  def dump_package_def(package)
-    format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n"
-  end
-
-  def dump_package_def_end(package)
-    "\n\n" + format(package.collect { |ele| "end" }.join("; "))
-  end
-
-  def dump_module_def
-    name = @name.to_s.split(/::/)
-    format("module #{name.last}")
-  end
-
-  def dump_module_def_end
-    format("end")
-  end
-end
-
-
-end
-end
-
-
-if __FILE__ == $0
-  require 'xsd/codegen/moduledef'
-  include XSD::CodeGen
-  m = ModuleDef.new("Foo::Bar::HobbitName")
-  m.def_require("foo/bar")
-  m.def_require("baz")
-  m.comment = <<-EOD
-    foo
-    bar
-    baz
-  EOD
-  m.def_method("foo") do
-    <<-EOD
-      foo.bar = 1
-      baz.each do |ele|
-        ele + 1
-      end
-    EOD
-  end
-  m.def_method("baz", "qux")
-  #m.def_protectedmethod("aaa")
-  m.def_privatemethod("bbb")
-  puts m.dump
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes.rb
deleted file mode 100644
index bbe6c85..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes.rb
+++ /dev/null
@@ -1,1269 +0,0 @@
-# XSD4R - XML Schema Datatype implementation.
-# Copyright (C) 2000, 2001, 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/charset'
-require 'uri'
-
-
-###
-## XMLSchamaDatatypes general definitions.
-#
-module XSD
-
-
-Namespace = 'http://www.w3.org/2001/XMLSchema'
-InstanceNamespace = 'http://www.w3.org/2001/XMLSchema-instance'
-
-AttrType = 'type'
-NilValue = 'true'
-
-AnyTypeLiteral = 'anyType'
-AnySimpleTypeLiteral = 'anySimpleType'
-NilLiteral = 'nil'
-StringLiteral = 'string'
-BooleanLiteral = 'boolean'
-DecimalLiteral = 'decimal'
-FloatLiteral = 'float'
-DoubleLiteral = 'double'
-DurationLiteral = 'duration'
-DateTimeLiteral = 'dateTime'
-TimeLiteral = 'time'
-DateLiteral = 'date'
-GYearMonthLiteral = 'gYearMonth'
-GYearLiteral = 'gYear'
-GMonthDayLiteral = 'gMonthDay'
-GDayLiteral = 'gDay'
-GMonthLiteral = 'gMonth'
-HexBinaryLiteral = 'hexBinary'
-Base64BinaryLiteral = 'base64Binary'
-AnyURILiteral = 'anyURI'
-QNameLiteral = 'QName'
-
-NormalizedStringLiteral = 'normalizedString'
-#3.3.2 token
-#3.3.3 language
-#3.3.4 NMTOKEN
-#3.3.5 NMTOKENS
-#3.3.6 Name
-#3.3.7 NCName
-#3.3.8 ID
-#3.3.9 IDREF
-#3.3.10 IDREFS
-#3.3.11 ENTITY
-#3.3.12 ENTITIES
-IntegerLiteral = 'integer'
-NonPositiveIntegerLiteral = 'nonPositiveInteger'
-NegativeIntegerLiteral = 'negativeInteger'
-LongLiteral = 'long'
-IntLiteral = 'int'
-ShortLiteral = 'short'
-ByteLiteral = 'byte'
-NonNegativeIntegerLiteral = 'nonNegativeInteger'
-UnsignedLongLiteral = 'unsignedLong'
-UnsignedIntLiteral = 'unsignedInt'
-UnsignedShortLiteral = 'unsignedShort'
-UnsignedByteLiteral = 'unsignedByte'
-PositiveIntegerLiteral = 'positiveInteger'
-
-AttrTypeName = QName.new(InstanceNamespace, AttrType)
-AttrNilName = QName.new(InstanceNamespace, NilLiteral)
-
-AnyTypeName = QName.new(Namespace, AnyTypeLiteral)
-AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral)
-
-class Error < StandardError; end
-class ValueSpaceError < Error; end
-
-
-###
-## The base class of all datatypes with Namespace.
-#
-class NSDBase
-  @@types = []
-
-  attr_accessor :type
-
-  def self.inherited(klass)
-    @@types << klass
-  end
-
-  def self.types
-    @@types
-  end
-
-  def initialize
-  end
-
-  def init(type)
-    @type = type
-  end
-end
-
-
-###
-## The base class of XSD datatypes.
-#
-class XSDAnySimpleType < NSDBase
-  include XSD
-  Type = QName.new(Namespace, AnySimpleTypeLiteral)
-
-  # @data represents canonical space (ex. Integer: 123).
-  attr_reader :data
-  # @is_nil represents this data is nil or not.
-  attr_accessor :is_nil
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  # true or raise
-  def check_lexical_format(value)
-    screen_data(value)
-    true
-  end
-
-  # set accepts a string which follows lexical space (ex. String: "+123"), or
-  # an object which follows canonical space (ex. Integer: 123).
-  def set(value)
-    if value.nil?
-      @is_nil = true
-      @data = nil
-      _set(nil)
-    else
-      @is_nil = false
-      _set(screen_data(value))
-    end
-  end
-
-  # to_s creates a string which follows lexical space (ex. String: "123").
-  def to_s()
-    if @is_nil
-      ""
-    else
-      _to_s
-    end
-  end
-
-private
-
-  def init(type, value)
-    super(type)
-    set(value)
-  end
-
-  # raises ValueSpaceError if check failed
-  def screen_data(value)
-    value
-  end
-
-  def _set(value)
-    @data = value
-  end
-
-  def _to_s
-    @data.to_s
-  end
-end
-
-class XSDNil < XSDAnySimpleType
-  Type = QName.new(Namespace, NilLiteral)
-  Value = 'true'
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-end
-
-
-###
-## Primitive datatypes.
-#
-class XSDString < XSDAnySimpleType
-  Type = QName.new(Namespace, StringLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    unless XSD::Charset.is_ces(value, XSD::Charset.encoding)
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    value
-  end
-end
-
-class XSDBoolean < XSDAnySimpleType
-  Type = QName.new(Namespace, BooleanLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    if value.is_a?(String)
-      str = value.strip
-      if str == 'true' || str == '1'
-	true
-      elsif str == 'false' || str == '0'
-	false
-      else
-	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-    else
-      value ? true : false
-    end
-  end
-end
-
-class XSDDecimal < XSDAnySimpleType
-  Type = QName.new(Namespace, DecimalLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def nonzero?
-    (@number != '0')
-  end
-
-private
-
-  def screen_data(d)
-    if d.is_a?(String)
-      # Integer("00012") => 10 in Ruby.
-      d.sub!(/^([+\-]?)0*(?=\d)/, "\\1")
-    end
-    screen_data_str(d)
-  end
-
-  def screen_data_str(str)
-    /^([+\-]?)(\d*)(?:\.(\d*)?)?$/ =~ str.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    sign = $1 || '+'
-    int_part = $2
-    frac_part = $3
-    int_part = '0' if int_part.empty?
-    frac_part = frac_part ? frac_part.sub(/0+$/, '') : ''
-    point = - frac_part.size
-    number = int_part + frac_part
-    # normalize
-    if sign == '+'
-      sign = ''
-    elsif sign == '-'
-      if number == '0'
-	sign = ''
-      end
-    end
-    [sign, point, number]
-  end
-
-  def _set(data)
-    if data.nil?
-      @sign = @point = @number = @data = nil
-      return
-    end
-    @sign, @point, @number = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  # 0.0 -> 0; right?
-  def _to_s
-    str = @number.dup
-    if @point.nonzero?
-      str[@number.size + @point, 0] = '.'
-    end
-    @sign + str
-  end
-end
-
-module FloatConstants
-  NaN = 0.0/0.0
-  POSITIVE_INF = +1.0/0.0
-  NEGATIVE_INF = -1.0/0.0
-  POSITIVE_ZERO = +1.0/POSITIVE_INF
-  NEGATIVE_ZERO = -1.0/POSITIVE_INF
-  MIN_POSITIVE_SINGLE = 2.0 ** -149
-end
-
-class XSDFloat < XSDAnySimpleType
-  include FloatConstants
-  Type = QName.new(Namespace, FloatLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    # "NaN".to_f => 0 in some environment.  libc?
-    if value.is_a?(Float)
-      return narrow32bit(value)
-    end
-    str = value.to_s.strip
-    if str == 'NaN'
-      NaN
-    elsif str == 'INF'
-      POSITIVE_INF
-    elsif str == '-INF'
-      NEGATIVE_INF
-    else
-      if /^[+\-\.\deE]+$/ !~ str
-	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-      # Float("-1.4E") might fail on some system.
-      str << '0' if /e$/i =~ str
-      begin
-  	return narrow32bit(Float(str))
-      rescue ArgumentError
-  	raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-      end
-    end
-  end
-
-  def _to_s
-    if @data.nan?
-      'NaN'
-    elsif @data.infinite? == 1
-      'INF'
-    elsif @data.infinite? == -1
-      '-INF'
-    else
-      sign = XSDFloat.positive?(@data) ? '+' : '-'
-      sign + sprintf("%.10g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
-    end
-  end
-
-  # Convert to single-precision 32-bit floating point value.
-  def narrow32bit(f)
-    if f.nan? || f.infinite?
-      f
-    elsif f.abs < MIN_POSITIVE_SINGLE
-      XSDFloat.positive?(f) ? POSITIVE_ZERO : NEGATIVE_ZERO
-    else
-      f
-    end
-  end
-
-  def self.positive?(value)
-    (1 / value) > 0.0
-  end
-end
-
-# Ruby's Float is double-precision 64-bit floating point value.
-class XSDDouble < XSDAnySimpleType
-  include FloatConstants
-  Type = QName.new(Namespace, DoubleLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    # "NaN".to_f => 0 in some environment.  libc?
-    if value.is_a?(Float)
-      return value
-    end
-    str = value.to_s.strip
-    if str == 'NaN'
-      NaN
-    elsif str == 'INF'
-      POSITIVE_INF
-    elsif str == '-INF'
-      NEGATIVE_INF
-    else
-      begin
-	return Float(str)
-      rescue ArgumentError
-	# '1.4e' cannot be parsed on some architecture.
-	if /e\z/i =~ str
-	  begin
-	    return Float(str + '0')
-	  rescue ArgumentError
-	    raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-	  end
-	else
-	  raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-	end
-      end
-    end
-  end
-
-  def _to_s
-    if @data.nan?
-      'NaN'
-    elsif @data.infinite? == 1
-      'INF'
-    elsif @data.infinite? == -1
-      '-INF'
-    else
-      sign = (1 / @data > 0.0) ? '+' : '-'
-      sign + sprintf("%.16g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
-    end
-  end
-end
-
-class XSDDuration < XSDAnySimpleType
-  Type = QName.new(Namespace, DurationLiteral)
-
-  attr_accessor :sign
-  attr_accessor :year
-  attr_accessor :month
-  attr_accessor :day
-  attr_accessor :hour
-  attr_accessor :min
-  attr_accessor :sec
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    /^([+\-]?)P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/ =~ value.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    if ($5 and ((!$2 and !$3 and !$4) or (!$6 and !$7 and !$8)))
-      # Should we allow 'PT5S' here?
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    sign = $1
-    year = $2.to_i
-    month = $3.to_i
-    day = $4.to_i
-    hour = $6.to_i
-    min = $7.to_i
-    sec = $8 ? XSDDecimal.new($8) : 0
-    [sign, year, month, day, hour, min, sec]
-  end
-
-  def _set(data)
-    if data.nil?
-      @sign = @year = @month = @day = @hour = @min = @sec = @data = nil
-      return
-    end
-    @sign, @year, @month, @day, @hour, @min, @sec = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  def _to_s
-    str = ''
-    str << @sign if @sign
-    str << 'P'
-    l = ''
-    l << "#{ @year }Y" if @year.nonzero?
-    l << "#{ @month }M" if @month.nonzero?
-    l << "#{ @day }D" if @day.nonzero?
-    r = ''
-    r << "#{ @hour }H" if @hour.nonzero?
-    r << "#{ @min }M" if @min.nonzero?
-    r << "#{ @sec }S" if @sec.nonzero?
-    str << l
-    if l.empty?
-      str << "0D"
-    end
-    unless r.empty?
-      str << "T" << r
-    end
-    str
-  end
-end
-
-
-require 'rational'
-require 'date'
-
-module XSDDateTimeImpl
-  SecInDay = 86400	# 24 * 60 * 60
-
-  def to_obj(klass)
-    if klass == Time
-      to_time
-    elsif klass == Date
-      to_date
-    elsif klass == DateTime
-      to_datetime
-    else
-      nil
-    end
-  end
-
-  def to_time
-    begin
-      if @data.offset * SecInDay == Time.now.utc_offset
-        d = @data
-	usec = (d.sec_fraction * SecInDay * 1000000).round
-        Time.local(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
-      else
-        d = @data.newof
-	usec = (d.sec_fraction * SecInDay * 1000000).round
-        Time.gm(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
-      end
-    rescue ArgumentError
-      nil
-    end
-  end
-
-  def to_date
-    Date.new0(@data.class.jd_to_ajd(@data.jd, 0, 0), 0, @data.start)
-  end
-
-  def to_datetime
-    data
-  end
-
-  def tz2of(str)
-    /^(?:Z|(?:([+\-])(\d\d):(\d\d))?)$/ =~ str
-    sign = $1
-    hour = $2.to_i
-    min = $3.to_i
-
-    of = case sign
-      when '+'
-	of = +(hour.to_r * 60 + min) / 1440	# 24 * 60
-      when '-'
-	of = -(hour.to_r * 60 + min) / 1440	# 24 * 60
-      else
-	0
-      end
-    of
-  end
-
-  def of2tz(offset)
-    diffmin = offset * 24 * 60
-    if diffmin.zero?
-      'Z'
-    else
-      ((diffmin < 0) ? '-' : '+') << format('%02d:%02d',
-    	(diffmin.abs / 60.0).to_i, (diffmin.abs % 60.0).to_i)
-    end
-  end
-
-  def screen_data(t)
-    # convert t to a DateTime as an internal representation.
-    if t.respond_to?(:to_datetime)      # 1.9 or later
-      t.to_datetime
-    elsif t.is_a?(DateTime)
-      t
-    elsif t.is_a?(Date)
-      t = screen_data_str(t)
-      t <<= 12 if t.year < 0
-      t
-    elsif t.is_a?(Time)
-      jd = DateTime.civil_to_jd(t.year, t.mon, t.mday, DateTime::ITALY)
-      fr = DateTime.time_to_day_fraction(t.hour, t.min, [t.sec, 59].min) +
-        t.usec.to_r / 1000000 / SecInDay
-      of = t.utc_offset.to_r / SecInDay
-      DateTime.new0(DateTime.jd_to_ajd(jd, fr, of), of, DateTime::ITALY)
-    else
-      screen_data_str(t)
-    end
-  end
-
-  def add_tz(s)
-    s + of2tz(@data.offset)
-  end
-end
-
-class XSDDateTime < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, DateTimeLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    if $1 == '0000'
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    mday = $3.to_i
-    hour = $4.to_i
-    min = $5.to_i
-    sec = $6.to_i
-    secfrac = $7
-    zonestr = $8
-    data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr))
-    if secfrac
-      diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
-      data += diffday
-      # FYI: new0 and jd_to_rjd are not necessary to use if you don't have
-      # exceptional reason.
-    end
-    [data, secfrac]
-  end
-
-  def _set(data)
-    if data.nil?
-      @data = @secfrac = nil
-      return
-    end
-    @data, @secfrac = data
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d-%02dT%02d:%02d:%02d',
-      year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec)
-    if @data.sec_fraction.nonzero?
-      if @secfrac
-  	s << ".#{ @secfrac }"
-      else
-	s << sprintf("%.16f",
-          (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
-      end
-    end
-    add_tz(s)
-  end
-end
-
-class XSDTime < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, TimeLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    hour = $1.to_i
-    min = $2.to_i
-    sec = $3.to_i
-    secfrac = $4
-    zonestr = $5
-    data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr))
-    if secfrac
-      diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
-      data += diffday
-    end
-    [data, secfrac]
-  end
-
-  def _set(data)
-    if data.nil?
-      @data = @secfrac = nil
-      return
-    end
-    @data, @secfrac = data
-  end
-
-  def _to_s
-    s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec)
-    if @data.sec_fraction.nonzero?
-      if @secfrac
-  	s << ".#{ @secfrac }"
-      else
-	s << sprintf("%.16f",
-          (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
-      end
-    end
-    add_tz(s)
-  end
-end
-
-class XSDDate < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, DateLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    mday = $3.to_i
-    zonestr = $4
-    DateTime.civil(year, mon, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d-%02d', year, @data.mon, @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGYearMonth < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GYearMonthLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    mon = $2.to_i
-    zonestr = $3
-    DateTime.civil(year, mon, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d-%02d', year, @data.mon)
-    add_tz(s)
-  end
-end
-
-class XSDGYear < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GYearLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    year = $1.to_i
-    if year < 0
-      year += 1
-    end
-    zonestr = $2
-    DateTime.civil(year, 1, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    year = (@data.year > 0) ? @data.year : @data.year - 1
-    s = format('%.4d', year)
-    add_tz(s)
-  end
-end
-
-class XSDGMonthDay < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GMonthDayLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mon = $1.to_i
-    mday = $2.to_i
-    zonestr = $3
-    DateTime.civil(1, mon, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d-%02d', @data.mon, @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGDay < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GDayLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mday = $1.to_i
-    zonestr = $2
-    DateTime.civil(1, 1, mday, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d', @data.mday)
-    add_tz(s)
-  end
-end
-
-class XSDGMonth < XSDAnySimpleType
-  include XSDDateTimeImpl
-  Type = QName.new(Namespace, GMonthLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(t)
-    /^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
-    end
-    mon = $1.to_i
-    zonestr = $2
-    DateTime.civil(1, mon, 1, 0, 0, 0, tz2of(zonestr))
-  end
-
-  def _to_s
-    s = format('%02d', @data.mon)
-    add_tz(s)
-  end
-end
-
-class XSDHexBinary < XSDAnySimpleType
-  Type = QName.new(Namespace, HexBinaryLiteral)
-
-  # String in Ruby could be a binary.
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def set_encoded(value)
-    if /^[0-9a-fA-F]*$/ !~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    @data = String.new(value).strip
-    @is_nil = false
-  end
-
-  def string
-    [@data].pack("H*")
-  end
-
-private
-
-  def screen_data(value)
-    value.unpack("H*")[0].tr('a-f', 'A-F')
-  end
-end
-
-class XSDBase64Binary < XSDAnySimpleType
-  Type = QName.new(Namespace, Base64BinaryLiteral)
-
-  # String in Ruby could be a binary.
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-  def set_encoded(value)
-    if /^[A-Za-z0-9+\/=]*$/ !~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    @data = String.new(value).strip
-    @is_nil = false
-  end
-
-  def string
-    @data.unpack("m")[0]
-  end
-
-private
-
-  def screen_data(value)
-    [value].pack("m").strip
-  end
-end
-
-class XSDAnyURI < XSDAnySimpleType
-  Type = QName.new(Namespace, AnyURILiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    begin
-      URI.parse(value.to_s.strip)
-    rescue URI::InvalidURIError
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-  end
-end
-
-class XSDQName < XSDAnySimpleType
-  Type = QName.new(Namespace, QNameLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    /^(?:([^:]+):)?([^:]+)$/ =~ value.to_s.strip
-    unless Regexp.last_match
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    prefix = $1
-    localpart = $2
-    [prefix, localpart]
-  end
-
-  def _set(data)
-    if data.nil?
-      @prefix = @localpart = @data = nil
-      return
-    end
-    @prefix, @localpart = data
-    @data = _to_s
-    @data.freeze
-  end
-
-  def _to_s
-    if @prefix
-      "#{ @prefix }:#{ @localpart }"
-    else
-      "#{ @localpart }"
-    end
-  end
-end
-
-
-###
-## Derived types
-#
-class XSDNormalizedString < XSDString
-  Type = QName.new(Namespace, NormalizedStringLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data(value)
-    if /[\t\r\n]/ =~ value
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
-    end
-    super
-  end
-end
-
-class XSDInteger < XSDDecimal
-  Type = QName.new(Namespace, IntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def screen_data_str(str)
-    begin
-      data = Integer(str)
-    rescue ArgumentError
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    unless validate(data)
-      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
-    end
-    data
-  end
-
-  def _set(value)
-    @data = value
-  end
-
-  def _to_s()
-    @data.to_s
-  end
-
-  def validate(v)
-    max = maxinclusive
-    min = mininclusive
-    (max.nil? or v <= max) and (min.nil? or v >= min)
-  end
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    nil
-  end
-
-  PositiveMinInclusive = 1
-  def positive(v)
-    PositiveMinInclusive <= v
-  end
-end
-
-class XSDNonPositiveInteger < XSDInteger
-  Type = QName.new(Namespace, NonPositiveIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    0
-  end
-
-  def mininclusive
-    nil
-  end
-end
-
-class XSDNegativeInteger < XSDNonPositiveInteger
-  Type = QName.new(Namespace, NegativeIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    -1
-  end
-
-  def mininclusive
-    nil
-  end
-end
-
-class XSDLong < XSDInteger
-  Type = QName.new(Namespace, LongLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +9223372036854775807
-  end
-
-  def mininclusive
-    -9223372036854775808
-  end
-end
-
-class XSDInt < XSDLong
-  Type = QName.new(Namespace, IntLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +2147483647
-  end
-
-  def mininclusive
-    -2147483648
-  end
-end
-
-class XSDShort < XSDInt
-  Type = QName.new(Namespace, ShortLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +32767
-  end
-
-  def mininclusive
-    -32768
-  end
-end
-
-class XSDByte < XSDShort
-  Type = QName.new(Namespace, ByteLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +127
-  end
-
-  def mininclusive
-    -128
-  end
-end
-
-class XSDNonNegativeInteger < XSDInteger
-  Type = QName.new(Namespace, NonNegativeIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedLong < XSDNonNegativeInteger
-  Type = QName.new(Namespace, UnsignedLongLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +18446744073709551615
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedInt < XSDUnsignedLong
-  Type = QName.new(Namespace, UnsignedIntLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +4294967295
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedShort < XSDUnsignedInt
-  Type = QName.new(Namespace, UnsignedShortLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +65535
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDUnsignedByte < XSDUnsignedShort
-  Type = QName.new(Namespace, UnsignedByteLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    +255
-  end
-
-  def mininclusive
-    0
-  end
-end
-
-class XSDPositiveInteger < XSDNonNegativeInteger
-  Type = QName.new(Namespace, PositiveIntegerLiteral)
-
-  def initialize(value = nil)
-    init(Type, value)
-  end
-
-private
-
-  def maxinclusive
-    nil
-  end
-
-  def mininclusive
-    1
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes1999.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes1999.rb
deleted file mode 100644
index c7d6479..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/datatypes1999.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# XSD4R - XML Schema Datatype 1999 support
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-
-
-module XSD
-  Namespace.replace('http://www.w3.org/1999/XMLSchema')
-  InstanceNamespace.replace('http://www.w3.org/1999/XMLSchema-instance')
-  AnyTypeLiteral.replace('ur-type')
-  AnySimpleTypeLiteral.replace('ur-type')
-  NilLiteral.replace('null')
-  NilValue.replace('1')
-  DateTimeLiteral.replace('timeInstant')
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/iconvcharset.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/iconvcharset.rb
deleted file mode 100644
index 7e629d5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/iconvcharset.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# XSD4R - Charset handling with iconv.
-# Copyright (C) 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'iconv'
-
-
-module XSD
-
-
-class IconvCharset
-  def self.safe_iconv(to, from, str)
-    iconv = Iconv.new(to, from)
-    out = ""
-    begin
-      out << iconv.iconv(str)
-    rescue Iconv::IllegalSequence => e
-      out << e.success
-      ch, str = e.failed.split(//, 2)
-      out << '?'
-      warn("Failed to convert #{ch}")
-      retry
-    end
-    return out
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/mapping.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/mapping.rb
deleted file mode 100644
index 06d30d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/mapping.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# XSD4R - XML Mapping for Ruby
-# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require "soap/parser"
-require 'soap/encodingstyle/literalHandler'
-require "soap/generator"
-require "soap/mapping"
-require "soap/mapping/wsdlliteralregistry"
-
-
-module XSD
-
-
-module Mapping
-  MappingRegistry = SOAP::Mapping::WSDLLiteralRegistry.new
-  MappingOpt = {:default_encodingstyle => SOAP::LiteralNamespace}
-
-  def self.obj2xml(obj, elename = nil, io = nil)
-    if !elename.nil? and !elename.is_a?(XSD::QName)
-      elename = XSD::QName.new(nil, elename)
-    end
-    elename ||= XSD::QName.new(nil, SOAP::Mapping.name2elename(obj.class.to_s))
-    soap = SOAP::Mapping.obj2soap(obj, MappingRegistry)
-    soap.elename = elename
-    generator = SOAP::SOAPGenerator.new(MappingOpt)
-    generator.generate(soap, io)
-  end
-
-  def self.xml2obj(stream)
-    parser = SOAP::Parser.new(MappingOpt)
-    soap = parser.parse(stream)
-    SOAP::Mapping.soap2obj(soap, MappingRegistry)
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/namedelements.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/namedelements.rb
deleted file mode 100644
index a13396b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/namedelements.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# XSD4R - WSDL named element collection.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-class NamedElements
-  include Enumerable
-
-  def initialize
-    @elements = []
-    @cache = {}
-  end
-
-  def dup
-    o = NamedElements.new
-    o.elements = @elements.dup
-    o
-  end
-
-  def freeze
-    super
-    @elements.freeze
-    self
-  end
-
-  def empty?
-    size == 0
-  end
-
-  def size
-    @elements.size
-  end
-
-  def [](idx)
-    if idx.is_a?(Numeric)
-      @elements[idx]
-    else
-      @cache[idx] ||= @elements.find { |item| item.name == idx }
-    end
-  end
-
-  def find_name(name)
-    @elements.find { |item| item.name.name == name }
-  end
-
-  def keys
-    collect { |element| element.name }
-  end
-
-  def each
-    @elements.each do |element|
-      yield(element)
-    end
-  end
-
-  def <<(rhs)
-    @elements << rhs
-    self
-  end
-  
-  def delete(rhs)
-    @elements.delete(rhs)
-  end
-
-  def +(rhs)
-    o = NamedElements.new
-    o.elements = @elements + rhs.elements
-    o
-  end
-
-  def concat(rhs)
-    @elements.concat(rhs.elements)
-    self
-  end
-
-  Empty = NamedElements.new.freeze
-
-protected
-
-  def elements=(rhs)
-    @elements = rhs
-  end
-
-  def elements
-    @elements
-  end
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/ns.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/ns.rb
deleted file mode 100644
index 53eeae7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/ns.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# XSD4R - XML Schema Namespace library
-# Copyright (C) 2000-2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/datatypes'
-
-
-module XSD
-
-
-class NS
-  class Assigner
-    def initialize
-      @count = 0
-    end
-
-    def assign(ns)
-      @count += 1
-      "n#{@count}"
-    end
-  end
-
-  attr_reader :default_namespace
-
-  class FormatError < Error; end
-
-public
-
-  def initialize(tag2ns = {})
-    @tag2ns = tag2ns
-    @assigner = nil
-    @ns2tag = {}
-    @tag2ns.each do |tag, ns|
-      @ns2tag[ns] = tag
-    end
-    @default_namespace = nil
-  end
-
-  def assign(ns, tag = nil)
-    if (tag == '')
-      @default_namespace = ns
-      tag
-    else
-      @assigner ||= Assigner.new
-      tag ||= @assigner.assign(ns)
-      @ns2tag[ns] = tag
-      @tag2ns[tag] = ns
-      tag
-    end
-  end
-
-  def assigned?(ns)
-    @default_namespace == ns or @ns2tag.key?(ns)
-  end
-
-  def assigned_tag?(tag)
-    @tag2ns.key?(tag)
-  end
-
-  def clone_ns
-    cloned = NS.new(@tag2ns.dup)
-    cloned.assigner = @assigner
-    cloned.assign(@default_namespace, '') if @default_namespace
-    cloned
-  end
-
-  def name(name)
-    if (name.namespace == @default_namespace)
-      name.name
-    elsif @ns2tag.key?(name.namespace)
-      "#{@ns2tag[name.namespace]}:#{name.name}"
-    else
-      raise FormatError.new("namespace: #{name.namespace} not defined yet")
-    end
-  end
-
-  def compare(ns, name, rhs)
-    if (ns == @default_namespace)
-      return true if (name == rhs)
-    end
-    @tag2ns.each do |assigned_tag, assigned_ns|
-      if assigned_ns == ns && "#{assigned_tag}:#{name}" == rhs
-	return true
-      end
-    end
-    false
-  end
-
-  # $1 and $2 are necessary.
-  ParseRegexp = Regexp.new('^([^:]+)(?::(.+))?$')
-
-  def parse(str, local = false)
-    if ParseRegexp =~ str
-      if (name = $2) and (ns = @tag2ns[$1])
-        return XSD::QName.new(ns, name)
-      end
-    end
-    XSD::QName.new(local ? nil : @default_namespace, str)
-  end
-
-  # For local attribute key parsing
-  #   <foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" />
-  #     =>
-  #   {}bar, {urn:a}baz
-  def parse_local(elem)
-    ParseRegexp =~ elem
-    if $2
-      ns = @tag2ns[$1]
-      name = $2
-      if !ns
-	raise FormatError.new("unknown namespace qualifier: #{$1}")
-      end
-    elsif $1
-      ns = nil
-      name = $1
-    else
-      raise FormatError.new("illegal element format: #{elem}")
-    end
-    XSD::QName.new(ns, name)
-  end
-
-  def each_ns
-    @ns2tag.each do |ns, tag|
-      yield(ns, tag)
-    end
-  end
-
-protected
-
-  def assigner=(assigner)
-    @assigner = assigner
-  end
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/qname.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/qname.rb
deleted file mode 100644
index bb9763a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/qname.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# XSD4R - XML QName definition.
-# Copyright (C) 2002, 2003, 2004  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-module XSD
-
-
-class QName
-  attr_accessor :namespace
-  attr_accessor :name
-  attr_accessor :source
-
-  def initialize(namespace = nil, name = nil)
-    @namespace = namespace
-    @name = name
-    @source = nil
-  end
-
-  def dup_name(name)
-    XSD::QName.new(@namespace, name)
-  end
-
-  def dump
-    ns = @namespace.nil? ? 'nil' : @namespace.dump
-    name = @name.nil? ? 'nil' : @name.dump
-    "XSD::QName.new(#{ns}, #{name})"
-  end
-
-  def match(rhs)
-    if rhs.namespace and (rhs.namespace != @namespace)
-      return false
-    end
-    if rhs.name and (rhs.name != @name)
-      return false
-    end
-    true
-  end
-
-  def ==(rhs)
-    !rhs.nil? and @namespace == rhs.namespace and @name == rhs.name
-  end
-
-  def ===(rhs)
-    (self == rhs)
-  end
-
-  def eql?(rhs)
-    (self == rhs)
-  end
-
-  def hash
-    @namespace.hash ^ @name.hash
-  end
-  
-  def to_s
-    "{#{ namespace }}#{ name }"
-  end
-
-  def inspect
-    sprintf("#<%s:0x%x %s>", self.class.name, __id__,
-      "{#{ namespace }}#{ name }")
-  end
-
-  NormalizedNameRegexp = /^\{([^}]*)\}(.*)$/
-  def parse(str)
-    NormalizedNameRegexp =~ str
-    self.new($1, $2)
-  end
-
-  EMPTY = QName.new.freeze
-end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser.rb
deleted file mode 100644
index e79e36c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-# XSD4R - XML Instance parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser/parser'
-
-
-module XSD
-
-
-module XMLParser
-  def create_parser(host, opt)
-    XSD::XMLParser::Parser.create_parser(host, opt)
-  end
-  module_function :create_parser
-
-  # $1 is necessary.
-  NSParseRegexp = Regexp.new('^xmlns:?(.*)$')
-
-  def filter_ns(ns, attrs)
-    return attrs if attrs.nil? or attrs.empty?
-    newattrs = {}
-    attrs.each do |key, value|
-      if (NSParseRegexp =~ key)
-	# '' means 'default namespace'.
-	tag = $1 || ''
-	ns.assign(value, tag)
-      else
-	newattrs[key] = value
-      end
-    end
-    newattrs
-  end
-  module_function :filter_ns
-end
-
-
-end
-
-
-# Try to load XML processor.
-loaded = false
-[
-  'xsd/xmlparser/xmlparser',
-  'xsd/xmlparser/xmlscanner',
-  'xsd/xmlparser/rexmlparser',
-].each do |lib|
-  begin
-    require lib
-    loaded = true
-    break
-  rescue LoadError
-  end
-end
-unless loaded
-  raise RuntimeError.new("XML processor module not found.")
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/parser.rb
deleted file mode 100644
index ad01d55..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/parser.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# XSD4R - XML Instance parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/qname'
-require 'xsd/ns'
-require 'xsd/charset'
-
-
-module XSD
-module XMLParser
-
-
-class Parser
-  class ParseError < Error; end
-  class FormatDecodeError < ParseError; end
-  class UnknownElementError < FormatDecodeError; end
-  class UnknownAttributeError < FormatDecodeError; end
-  class UnexpectedElementError < FormatDecodeError; end
-  class ElementConstraintError < FormatDecodeError; end
-
-  @@parser_factory = nil
-
-  def self.factory
-    @@parser_factory
-  end
-
-  def self.create_parser(host, opt = {})
-    @@parser_factory.new(host, opt)
-  end
-
-  def self.add_factory(factory)
-    if $DEBUG
-      puts "Set #{ factory } as XML processor."
-    end
-    @@parser_factory = factory
-  end
-
-public
-
-  attr_accessor :charset
-
-  def initialize(host, opt = {})
-    @host = host
-    @charset = opt[:charset] || nil
-  end
-
-  def parse(string_or_readable)
-    @textbuf = ''
-    prologue
-    do_parse(string_or_readable)
-    epilogue
-  end
-
-private
-
-  def do_parse(string_or_readable)
-    raise NotImplementError.new(
-      'Method do_parse must be defined in derived class.')
-  end
-
-  def start_element(name, attrs)
-    @host.start_element(name, attrs)
-  end
-
-  def characters(text)
-    @host.characters(text)
-  end
-
-  def end_element(name)
-    @host.end_element(name)
-  end
-
-  def prologue
-  end
-
-  def epilogue
-  end
-
-  def xmldecl_encoding=(charset)
-    if @charset.nil?
-      @charset = charset
-    else
-      # Definition in a stream (like HTTP) has a priority.
-      p "encoding definition: #{ charset } is ignored." if $DEBUG
-    end
-  end
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb
deleted file mode 100644
index 61da9aa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# XSD4R - REXMLParser XML parser library.
-# Copyright (C) 2002, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'rexml/streamlistener'
-require 'rexml/document'
-
-
-module XSD
-module XMLParser
-
-
-class REXMLParser < XSD::XMLParser::Parser
-  include REXML::StreamListener
-
-  def do_parse(string_or_readable)
-    source = nil
-    source = REXML::SourceFactory.create_from(string_or_readable)
-    source.encoding = charset if charset
-    # Listener passes a String in utf-8.
-    @charset = 'utf-8'
-    REXML::Document.parse_stream(source, self)
-  end
-
-  def epilogue
-  end
-
-  def tag_start(name, attrs)
-    start_element(name, attrs)
-  end
-
-  def tag_end(name)
-    end_element(name)
-  end
-
-  def text(text)
-    characters(text)
-  end
-
-  def xmldecl(version, encoding, standalone)
-    # Version should be checked.
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb
deleted file mode 100644
index 6db914c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# XSD4R - XMLParser XML parser library.
-# Copyright (C) 2001, 2003  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'xml/parser'
-
-
-module XSD
-module XMLParser
-
-
-class XMLParser < XSD::XMLParser::Parser
-  class Listener < XML::Parser
-    begin
-      require 'xml/encoding-ja'
-      include XML::Encoding_ja
-    rescue LoadError
-      # uconv may not be installed.
-    end
-  end
-
-  def do_parse(string_or_readable)
-    # XMLParser passes a String in utf-8.
-    @charset = 'utf-8'
-    @parser = Listener.new
-    @parser.parse(string_or_readable) do |type, name, data|
-      case type
-      when XML::Parser::START_ELEM
-	start_element(name, data)
-      when XML::Parser::END_ELEM
-	end_element(name)
-      when XML::Parser::CDATA
-	characters(data)
-      else
-	raise FormatDecodeError.new("Unexpected XML: #{ type }/#{ name }/#{ data }.")
-      end
-    end
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlscanner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlscanner.rb
deleted file mode 100644
index c80dc23..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/xsd/xmlparser/xmlscanner.rb
+++ /dev/null
@@ -1,147 +0,0 @@
-# XSD4R - XMLScan XML parser library.
-# Copyright (C) 2002, 2003, 2005  NAKAMURA, Hiroshi <nahi at ruby-lang.org>.
-
-# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
-# redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-
-
-require 'xsd/xmlparser'
-require 'xmlscan/scanner'
-
-
-module XSD
-module XMLParser
-
-
-class XMLScanner < XSD::XMLParser::Parser
-  include XMLScan::Visitor
-
-  def do_parse(string_or_readable)
-    @attrs = {}
-    @curattr = nil
-    @scanner = XMLScan::XMLScanner.new(self)
-    @scanner.kcode = XSD::Charset.charset_str(charset) if charset
-    @scanner.parse(string_or_readable)
-  end
-
-  def scanner_kcode=(charset)
-    @scanner.kcode = XSD::Charset.charset_str(charset) if charset
-    self.xmldecl_encoding = charset
-  end
-
-  ENTITY_REF_MAP = {
-    'lt' => '<',
-    'gt' => '>',
-    'amp' => '&',
-    'quot' => '"',
-    'apos' => '\''
-  }
-
-  def parse_error(msg)
-    raise ParseError.new(msg)
-  end
-
-  def wellformed_error(msg)
-    raise NotWellFormedError.new(msg)
-  end
-
-  def valid_error(msg)
-    raise NotValidError.new(msg)
-  end
-
-  def warning(msg)
-    p msg if $DEBUG
-  end
-
-  # def on_xmldecl; end
-
-  def on_xmldecl_version(str)
-    # 1.0 expected.
-  end
-
-  def on_xmldecl_encoding(str)
-    self.scanner_kcode = str
-  end
-
-  # def on_xmldecl_standalone(str); end
-
-  # def on_xmldecl_other(name, value); end
-
-  # def on_xmldecl_end; end
-
-  # def on_doctype(root, pubid, sysid); end
-
-  # def on_prolog_space(str); end
-
-  # def on_comment(str); end
-
-  # def on_pi(target, pi); end
-
-  def on_chardata(str)
-    characters(str)
-  end
-
-  # def on_cdata(str); end
-
-  def on_etag(name)
-    end_element(name)
-  end
-
-  def on_entityref(ref)
-    characters(ENTITY_REF_MAP[ref])
-  end
-
-  def on_charref(code)
-    characters([code].pack('U'))
-  end
-
-  def on_charref_hex(code)
-    on_charref(code)
-  end
-
-  # def on_start_document; end
-
-  # def on_end_document; end
-
-  def on_stag(name)
-    @attrs = {}
-  end
-
-  def on_attribute(name)
-    @attrs[name] = @curattr = ''
-  end
-
-  def on_attr_value(str)
-    @curattr << str
-  end
-
-  def on_attr_entityref(ref)
-    @curattr << ENTITY_REF_MAP[ref]
-  end
-
-  def on_attr_charref(code)
-    @curattr << [code].pack('U')
-  end
-
-  def on_attr_charref_hex(code)
-    on_attr_charref(code)
-  end
-
-  # def on_attribute_end(name); end
-
-  def on_stag_end_empty(name)
-    on_stag_end(name)
-    on_etag(name)
-  end
-
-  def on_stag_end(name)
-    start_element(name, @attrs)
-  end
-
-  add_factory(self)
-end
-
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml.rb
deleted file mode 100644
index fe8092a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml.rb
+++ /dev/null
@@ -1,440 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-# $Id: yaml.rb 17246 2008-06-15 13:12:40Z shyouhei $
-#
-# = yaml.rb: top-level module with methods for loading and parsing YAML documents
-#
-# Author:: why the lucky stiff
-# 
-
-require 'stringio'
-require 'yaml/error'
-require 'yaml/syck'
-require 'yaml/tag'
-require 'yaml/stream'
-require 'yaml/constants'
-
-# == YAML
-#
-# YAML(tm) (rhymes with 'camel') is a
-# straightforward machine parsable data serialization format designed for
-# human readability and interaction with scripting languages such as Perl
-# and Python. YAML is optimized for data serialization, formatted
-# dumping, configuration files, log files, Internet messaging and
-# filtering. This specification describes the YAML information model and
-# serialization format. Together with the Unicode standard for characters, it
-# provides all the information necessary to understand YAML Version 1.0
-# and construct computer programs to process it.
-#                         
-# See http://yaml.org/ for more information.  For a quick tutorial, please
-# visit YAML In Five Minutes (http://yaml.kwiki.org/?YamlInFiveMinutes).
-#                              
-# == About This Library
-#                         
-# The YAML 1.0 specification outlines four stages of YAML loading and dumping.
-# This library honors all four of those stages, although data is really only
-# available to you in three stages.
-#     
-# The four stages are: native, representation, serialization, and presentation.
-#     
-# The native stage refers to data which has been loaded completely into Ruby's
-# own types. (See +YAML::load+.)
-#
-# The representation stage means data which has been composed into
-# +YAML::BaseNode+ objects.  In this stage, the document is available as a
-# tree of node objects.  You can perform YPath queries and transformations
-# at this level.  (See +YAML::parse+.)
-#   
-# The serialization stage happens inside the parser.  The YAML parser used in
-# Ruby is called Syck.  Serialized nodes are available in the extension as
-# SyckNode structs.
-#       
-# The presentation stage is the YAML document itself.  This is accessible
-# to you as a string.  (See +YAML::dump+.)
-#   
-# For more information about the various information models, see Chapter
-# 3 of the YAML 1.0 Specification (http://yaml.org/spec/#id2491269).
-#
-# The YAML module provides quick access to the most common loading (YAML::load)
-# and dumping (YAML::dump) tasks.  This module also provides an API for registering
-# global types (YAML::add_domain_type).
-#
-# == Example
-#
-# A simple round-trip (load and dump) of an object.
-#
-#     require "yaml"
-#
-#     test_obj = ["dogs", "cats", "badgers"]
-#
-#     yaml_obj = YAML::dump( test_obj )
-#                         # -> ---
-#                              - dogs
-#                              - cats
-#                              - badgers
-#     ruby_obj = YAML::load( yaml_obj )
-#                         # => ["dogs", "cats", "badgers"]
-#     ruby_obj == test_obj
-#                         # => true
-#
-# To register your custom types with the global resolver, use +add_domain_type+.
-#
-#     YAML::add_domain_type( "your-site.com,2004", "widget" ) do |type, val|
-#         Widget.new( val )
-#     end
-#
-module YAML
-
-    Resolver = YAML::Syck::Resolver
-    DefaultResolver = YAML::Syck::DefaultResolver
-    DefaultResolver.use_types_at( @@tagged_classes )
-    GenericResolver = YAML::Syck::GenericResolver
-    Parser = YAML::Syck::Parser
-    Emitter = YAML::Syck::Emitter
-
-    # Returns a new default parser
-    def YAML.parser; Parser.new.set_resolver( YAML.resolver ); end
-    # Returns a new generic parser
-    def YAML.generic_parser; Parser.new.set_resolver( GenericResolver ); end
-    # Returns the default resolver
-    def YAML.resolver; DefaultResolver; end
-    # Returns a new default emitter
-    def YAML.emitter; Emitter.new.set_resolver( YAML.resolver ); end
-
-	#
-	# Converts _obj_ to YAML and writes the YAML result to _io_.
-    #     
-    #   File.open( 'animals.yaml', 'w' ) do |out|
-    #     YAML.dump( ['badger', 'elephant', 'tiger'], out )
-    #   end
-    #
-    # If no _io_ is provided, a string containing the dumped YAML
-    # is returned.
-	#
-    #   YAML.dump( :locked )
-    #      #=> "--- :locked"
-    #
-	def YAML.dump( obj, io = nil )
-        obj.to_yaml( io || io2 = StringIO.new )
-        io || ( io2.rewind; io2.read )
-	end
-
-	#
-	# Load a document from the current _io_ stream.
-	#
-    #   File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
-    #      #=> ['badger', 'elephant', 'tiger']
-    #
-    # Can also load from a string.
-    #
-    #   YAML.load( "--- :locked" )
-    #      #=> :locked
-    #
-	def YAML.load( io )
-		yp = parser.load( io )
-	end
-
-    #
-    # Load a document from the file located at _filepath_.
-    #
-    #   YAML.load_file( 'animals.yaml' )
-    #      #=> ['badger', 'elephant', 'tiger']
-    #
-    def YAML.load_file( filepath )
-        File.open( filepath ) do |f|
-            load( f )
-        end
-    end
-
-	#
-	# Parse the first document from the current _io_ stream
-	#
-    #   File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
-    #      #=> #<YAML::Syck::Node:0x82ccce0
-    #           @kind=:seq,
-    #           @value=
-    #            [#<YAML::Syck::Node:0x82ccd94
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="badger">,
-    #             #<YAML::Syck::Node:0x82ccd58
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="elephant">,
-    #             #<YAML::Syck::Node:0x82ccd1c
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="tiger">]>
-    #
-    # Can also load from a string.
-    #
-    #   YAML.parse( "--- :locked" )
-    #      #=> #<YAML::Syck::Node:0x82edddc 
-    #            @type_id="tag:ruby.yaml.org,2002:sym", 
-    #            @value=":locked", @kind=:scalar>
-    #
-	def YAML.parse( io )
-		yp = generic_parser.load( io )
-	end
-
-    #
-    # Parse a document from the file located at _filepath_.
-    #
-    #   YAML.parse_file( 'animals.yaml' )
-    #      #=> #<YAML::Syck::Node:0x82ccce0
-    #           @kind=:seq,
-    #           @value=
-    #            [#<YAML::Syck::Node:0x82ccd94
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="badger">,
-    #             #<YAML::Syck::Node:0x82ccd58
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="elephant">,
-    #             #<YAML::Syck::Node:0x82ccd1c
-    #              @kind=:scalar,
-    #              @type_id="str",
-    #              @value="tiger">]>
-    #
-    def YAML.parse_file( filepath )
-        File.open( filepath ) do |f|
-            parse( f )
-        end
-    end
-
-	#
-	# Calls _block_ with each consecutive document in the YAML
-    # stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.each_document( yf ) do |ydoc|
-    #       ## ydoc contains the single object
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.each_document( io, &block )
-		yp = parser.load_documents( io, &block )
-    end
-
-	#
-	# Calls _block_ with each consecutive document in the YAML
-    # stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.load_documents( yf ) do |ydoc|
-    #       ## ydoc contains the single object
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.load_documents( io, &doc_proc )
-		YAML.each_document( io, &doc_proc )
-    end
-
-	#
-	# Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
-    # each consecutive document in the YAML stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.each_node( yf ) do |ydoc|
-    #       ## ydoc contains a tree of nodes
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.each_node( io, &doc_proc )
-		yp = generic_parser.load_documents( io, &doc_proc )
-    end
-
-	#
-	# Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
-    # each consecutive document in the YAML stream contained in _io_.
-    #
-    #   File.open( 'many-docs.yaml' ) do |yf|
-    #     YAML.parse_documents( yf ) do |ydoc|
-    #       ## ydoc contains a tree of nodes
-    #       ## from the YAML document
-    #     end
-    #   end
-	#
-	def YAML.parse_documents( io, &doc_proc )
-		YAML.each_node( io, &doc_proc )
-    end
-
-	#
-	# Loads all documents from the current _io_ stream, 
-    # returning a +YAML::Stream+ object containing all
-    # loaded documents.
-	#
-	def YAML.load_stream( io )
-		d = nil
-		parser.load_documents( io ) do |doc|
-			d = YAML::Stream.new if not d
-			d.add( doc ) 
-        end
-		return d
-	end
-
-	#
-    # Returns a YAML stream containing each of the items in +objs+,
-    # each having their own document.
-    #
-    #   YAML.dump_stream( 0, [], {} )
-    #     #=> --- 0
-    #         --- []
-    #         --- {}
-    #
-	def YAML.dump_stream( *objs )
-		d = YAML::Stream.new
-        objs.each do |doc|
-			d.add( doc ) 
-        end
-        d.emit
-	end
-
-	#
-	# Add a global handler for a YAML domain type.
-	#
-	def YAML.add_domain_type( domain, type_tag, &transfer_proc )
-        resolver.add_type( "tag:#{ domain }:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a transfer method for a builtin type
-	#
-	def YAML.add_builtin_type( type_tag, &transfer_proc )
-	    resolver.add_type( "tag:yaml.org,2002:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a transfer method for a builtin type
-	#
-	def YAML.add_ruby_type( type_tag, &transfer_proc )
-	    resolver.add_type( "tag:ruby.yaml.org,2002:#{ type_tag }", transfer_proc )
-	end
-
-	#
-	# Add a private document type
-	#
-	def YAML.add_private_type( type_re, &transfer_proc )
-	    resolver.add_type( "x-private:" + type_re, transfer_proc )
-	end
-
-    #
-    # Detect typing of a string
-    #
-    def YAML.detect_implicit( val )
-        resolver.detect_implicit( val )
-    end
-
-    #
-    # Convert a type_id to a taguri
-    #
-    def YAML.tagurize( val )
-        resolver.tagurize( val )
-    end
-
-    #
-    # Apply a transfer method to a Ruby object
-    #
-    def YAML.transfer( type_id, obj )
-        resolver.transfer( YAML.tagurize( type_id ), obj )
-    end
-
-	#
-	# Apply any implicit a node may qualify for
-	#
-	def YAML.try_implicit( obj )
-		YAML.transfer( YAML.detect_implicit( obj ), obj )
-	end
-
-    #
-    # Method to extract colon-seperated type and class, returning
-    # the type and the constant of the class
-    #
-    def YAML.read_type_class( type, obj_class )
-        scheme, domain, type, tclass = type.split( ':', 4 )
-        tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) } if tclass
-        return [ type, obj_class ]
-    end
-
-    #
-    # Allocate blank object
-    #
-    def YAML.object_maker( obj_class, val )
-        if Hash === val
-            o = obj_class.allocate
-            val.each_pair { |k,v|
-                o.instance_variable_set("@#{k}", v)
-            }
-            o
-        else
-            raise YAML::Error, "Invalid object explicitly tagged !ruby/Object: " + val.inspect
-        end
-    end
-
-	#
-	# Allocate an Emitter if needed
-	#
-	def YAML.quick_emit( oid, opts = {}, &e )
-        out = 
-            if opts.is_a? YAML::Emitter
-                opts
-            else
-                emitter.reset( opts )
-            end
-        oid =
-            case oid when Fixnum, NilClass; oid
-            else oid = "#{oid.object_id}-#{oid.hash}"
-            end
-        out.emit( oid, &e )
-	end
-	
-end
-
-require 'yaml/rubytypes'
-require 'yaml/types'
-
-module Kernel
-    #
-    # ryan:: You know how Kernel.p is a really convenient way to dump ruby
-    #        structures?  The only downside is that it's not as legible as
-    #        YAML.
-    #
-    # _why:: (listening)
-    #
-    # ryan:: I know you don't want to urinate all over your users' namespaces.
-    #        But, on the other hand, convenience of dumping for debugging is,
-    #        IMO, a big YAML use case.
-    #
-    # _why:: Go nuts!  Have a pony parade!
-    #
-    # ryan:: Either way, I certainly will have a pony parade.
-    #
-
-    # Prints any supplied _objects_ out in YAML.  Intended as
-    # a variation on +Kernel::p+.
-    #
-    #   S = Struct.new(:name, :state)
-    #   s = S['dave', 'TX']
-    #   y s
-    #
-    # _produces:_
-    #
-    #   --- !ruby/struct:S 
-    #   name: dave
-    #   state: TX
-    #
-    def y( object, *objects )
-        objects.unshift object
-        puts( if objects.length == 1
-                  YAML::dump( *objects )
-              else
-                  YAML::dump_stream( *objects )
-              end )
-    end
-    private :y
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/baseemitter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/baseemitter.rb
deleted file mode 100644
index 1aef152..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/baseemitter.rb
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# BaseEmitter
-#
-
-require 'yaml/constants'
-require 'yaml/encoding'
-require 'yaml/error'
-
-module YAML
-
-    module BaseEmitter
-
-        def options( opt = nil )
-            if opt
-                @options[opt] || YAML::DEFAULTS[opt]
-            else
-                @options
-            end
-        end
-
-        def options=( opt )
-            @options = opt
-        end
-
-        #
-        # Emit binary data
-        #
-        def binary_base64( value )
-            self << "!binary "
-            self.node_text( [value].pack("m"), '|' )
-        end
-
-		#
-		# Emit plain, normal flowing text
-		#
-		def node_text( value, block = nil )
-            @seq_map = false
-			valx = value.dup
-            unless block
-            block =
-                if options(:UseBlock)
-                    '|'
-                elsif not options(:UseFold) and valx =~ /\n[ \t]/ and not valx =~ /#{YAML::ESCAPE_CHAR}/
-                    '|'
-                else
-                    '>'
-                end 
-
-                indt = $&.to_i if block =~ /\d+/
-                if valx =~ /(\A\n*[ \t#]|^---\s+)/
-                    indt = options(:Indent) unless indt.to_i > 0
-                    block += indt.to_s
-                end
-
-            block +=
-                if valx =~ /\n\Z\n/
-                    "+"
-                elsif valx =~ /\Z\n/
-                    ""
-                else
-                    "-"
-                end
-            end
-            block += "\n"
-            if block[0] == ?"
-                esc_skip = ( "\t\n" unless valx =~ /^[ \t]/ ) || ""
-                valx = fold( YAML::escape( valx, esc_skip ) + "\"" ).chomp
-                self << '"' + indent_text( valx, indt, false )
-            else
-                if block[0] == ?> 
-                    valx = fold( valx ) 
-                end
-                #p [block, indt]
-                self << block + indent_text( valx, indt )
-            end
-		end
-
-		#
-		# Emit a simple, unqouted string
-		#
-		def simple( value )
-            @seq_map = false
-            self << value.to_s
-		end
-
-		#
-		# Emit double-quoted string
-		#
-		def double( value )
-			"\"#{YAML.escape( value )}\"" 
-		end
-
-		#
-		# Emit single-quoted string
-		#
-		def single( value )
-			"'#{value}'"
-		end
-
-		#
-		# Write a text block with the current indent
-		#
-		def indent_text( text, mod, first_line = true )
-			return "" if text.to_s.empty?
-            spacing = indent( mod )
-            text = text.gsub( /\A([^\n])/, "#{ spacing }\\1" ) if first_line
-			return text.gsub( /\n^([^\n])/, "\n#{spacing}\\1" )
-		end
-
-		#
-		# Write a current indent
-		#
-        def indent( mod = nil )
-            #p [ self.id, level, mod, :INDENT ]
-            if level <= 0
-                mod ||= 0
-            else
-                mod ||= options(:Indent)
-                mod += ( level - 1 ) * options(:Indent)
-            end
-            return " " * mod
-		end
-
-		#
-		# Add indent to the buffer
-		#
-		def indent!
-			self << indent
-		end
-
-		#
-		# Folding paragraphs within a column
-		#
-		def fold( value )
-            value.gsub( /(^[ \t]+.*$)|(\S.{0,#{options(:BestWidth) - 1}})(?:[ \t]+|(\n+(?=[ \t]|\Z))|$)/ ) do |s| 
-                $1 || $2 + ( $3 || "\n" )
-            end
-		end
-
-        #
-        # Quick mapping
-        #
-        def map( type, &e )
-            val = Mapping.new
-            e.call( val )
-			self << "#{type} " if type.length.nonzero?
-
-			#
-			# Empty hashes
-			#
-			if val.length.zero?
-				self << "{}"
-                @seq_map = false
-			else
-                # FIXME
-                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
-			    #     @headless = 1 
-                # end
-
-                defkey = @options.delete( :DefaultKey )
-                if defkey
-                    seq_map_shortcut
-                    self << "= : "
-                    defkey.to_yaml( :Emitter => self )
-                end
-
-				#
-				# Emit the key and value
-				#
-                val.each { |v|
-                    seq_map_shortcut
-                    if v[0].is_complex_yaml?
-                        self << "? "
-                    end
-                    v[0].to_yaml( :Emitter => self )
-                    if v[0].is_complex_yaml?
-                        self << "\n"
-                        indent!
-                    end
-                    self << ": " 
-                    v[1].to_yaml( :Emitter => self )
-                }
-			end
-        end
-
-        def seq_map_shortcut
-            # FIXME: seq_map needs to work with the new anchoring system
-            # if @seq_map
-            #     @anchor_extras[@buffer.length - 1] = "\n" + indent
-            #     @seq_map = false
-            # else
-                self << "\n"
-                indent! 
-            # end
-        end
-
-        #
-        # Quick sequence
-        #
-        def seq( type, &e )
-            @seq_map = false
-            val = Sequence.new
-            e.call( val )
-			self << "#{type} " if type.length.nonzero?
-
-			#
-			# Empty arrays
-			#
-			if val.length.zero?
-				self << "[]"
-			else
-                # FIXME
-                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
-			    #     @headless = 1 
-                # end
-
-				#
-				# Emit the key and value
-				#
-                val.each { |v|
-                    self << "\n"
-                    indent!
-                    self << "- "
-                    @seq_map = true if v.class == Hash
-                    v.to_yaml( :Emitter => self )
-                }
-			end
-        end
-
-    end
-
-    #
-    # Emitter helper classes
-    #
-    class Mapping < Array
-        def add( k, v )
-            push [k, v]
-        end
-    end
-
-    class Sequence < Array
-        def add( v )
-            push v
-        end
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/basenode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/basenode.rb
deleted file mode 100644
index 5439903..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/basenode.rb
+++ /dev/null
@@ -1,216 +0,0 @@
-#
-# YAML::BaseNode class
-#
-require 'yaml/ypath'
-
-module YAML
-
-    #
-    # YAML Generic Model container
-    #
-    module BaseNode
-
-        #
-        # Search for YPath entry and return
-        # qualified nodes.
-        #
-        def select( ypath_str )
-            matches = match_path( ypath_str )
-
-            #
-            # Create a new generic view of the elements selected
-            #
-            if matches
-                result = []
-                matches.each { |m|
-                    result.push m.last
-                }
-                YAML.transfer( 'seq', result )
-            end
-        end
-
-        #
-        # Search for YPath entry and return
-        # transformed nodes.
-        #
-        def select!( ypath_str )
-            matches = match_path( ypath_str )
-
-            #
-            # Create a new generic view of the elements selected
-            #
-            if matches
-                result = []
-                matches.each { |m|
-                    result.push m.last.transform
-                }
-                result
-            end
-        end
-
-        #
-        # Search for YPath entry and return a list of
-        # qualified paths.
-        #
-        def search( ypath_str )
-            matches = match_path( ypath_str )
-
-            if matches
-                matches.collect { |m|
-                    path = []
-                    m.each_index { |i|
-                        path.push m[i] if ( i % 2 ).zero?
-                    }
-                    "/" + path.compact.join( "/" )
-                }
-            end
-        end
-
-        def at( seg )
-            if Hash === @value
-                self[seg]
-            elsif Array === @value and seg =~ /\A\d+\Z/ and @value[seg.to_i]
-                @value[seg.to_i]
-            end
-        end
-
-        #
-        # YPath search returning a complete depth array
-        #
-        def match_path( ypath_str )
-            depth = 0
-            matches = []
-            YPath.each_path( ypath_str ) do |ypath|
-                seg = match_segment( ypath, 0 )
-                matches += seg if seg
-            end
-            matches.uniq
-        end
-
-        #
-        # Search a node for a single YPath segment
-        #
-        def match_segment( ypath, depth )
-            deep_nodes = []
-            seg = ypath.segments[ depth ]
-            if seg == "/"
-                unless String === @value
-                    idx = -1
-                    @value.collect { |v|
-                        idx += 1
-                        if Hash === @value
-                            match_init = [v[0].transform, v[1]]
-                            match_deep = v[1].match_segment( ypath, depth )
-                        else
-                            match_init = [idx, v]
-                            match_deep = v.match_segment( ypath, depth )
-                        end
-                        if match_deep
-                            match_deep.each { |m|
-                                deep_nodes.push( match_init + m )
-                            }
-                        end
-                    }
-                end
-                depth += 1
-                seg = ypath.segments[ depth ]
-            end
-            match_nodes =
-                case seg
-                when "."
-                    [[nil, self]]
-                when ".."
-                    [["..", nil]]
-                when "*"
-                    if @value.is_a? Enumerable
-                        idx = -1
-                        @value.collect { |h|
-                            idx += 1
-                            if Hash === @value
-                                [h[0].transform, h[1]]
-                            else
-                                [idx, h]
-                            end
-                        }
-                    end
-                else
-                    if seg =~ /^"(.*)"$/
-                        seg = $1
-                    elsif seg =~ /^'(.*)'$/
-                        seg = $1
-                    end
-                    if ( v = at( seg ) )
-                        [[ seg, v ]]
-                    end
-                end
-            return deep_nodes unless match_nodes
-            pred = ypath.predicates[ depth ]
-            if pred
-                case pred
-                when /^\.=/
-                    pred = $'   # '
-                    match_nodes.reject! { |n|
-                        n.last.value != pred
-                    }
-                else
-                    match_nodes.reject! { |n|
-                        n.last.at( pred ).nil?
-                    }
-                end
-            end
-            return match_nodes + deep_nodes unless ypath.segments.length > depth + 1
-
-            #puts "DEPTH: #{depth + 1}"
-            deep_nodes = []
-            match_nodes.each { |n|
-                if n[1].is_a? BaseNode
-                    match_deep = n[1].match_segment( ypath, depth + 1 )
-                    if match_deep
-                        match_deep.each { |m|
-                            deep_nodes.push( n + m )
-                        }
-                    end
-                else
-                    deep_nodes = []
-                end
-            }
-            deep_nodes = nil if deep_nodes.length == 0
-            deep_nodes
-        end
-
-        #
-        # We want the node to act like as Hash
-        # if it is.
-        #
-        def []( *key )
-            if Hash === @value
-                v = @value.detect { |k,| k.transform == key.first }
-                v[1] if v
-            elsif Array === @value
-                @value.[]( *key )
-            end
-        end
-
-        def children
-            if Hash === @value
-                @value.values.collect { |c| c[1] }
-            elsif Array === @value
-                @value
-            end
-        end
-
-        def children_with_index
-            if Hash === @value
-                @value.keys.collect { |i| [self[i], i] }
-            elsif Array === @value
-                i = -1; @value.collect { |v| i += 1; [v, i] }
-            end
-        end
-
-        def emit
-            transform.to_yaml
-        end
-    end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/constants.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/constants.rb
deleted file mode 100644
index fb833d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/constants.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Constants used throughout the library
-#
-module YAML
-
-	#
-	# Constants
-	#
-	VERSION = '0.60'
-	SUPPORTED_YAML_VERSIONS = ['1.0']
-
-	#
-	# Parser tokens
-	#
-	WORD_CHAR = 'A-Za-z0-9'
-	PRINTABLE_CHAR = '-_A-Za-z0-9!?/()$\'". ' 
-	NOT_PLAIN_CHAR = '\x7f\x0-\x1f\x80-\x9f'
-	ESCAPE_CHAR = '[\\x00-\\x09\\x0b-\\x1f]'
-	INDICATOR_CHAR = '*&!|\\\\^@%{}[]='
-	SPACE_INDICATORS = '-#:,?'
-	RESTRICTED_INDICATORS = '#:,}]'
-	DNS_COMP_RE = "\\w(?:[-\\w]*\\w)?"
-	DNS_NAME_RE = "(?:(?:#{DNS_COMP_RE}\\.)+#{DNS_COMP_RE}|#{DNS_COMP_RE})"
-	ESCAPES = %w{\x00   \x01	\x02	\x03	\x04	\x05	\x06	\a
-			     \x08	\t		\n		\v		\f		\r		\x0e	\x0f
-				 \x10	\x11	\x12	\x13	\x14	\x15	\x16	\x17
-				 \x18	\x19	\x1a	\e		\x1c	\x1d	\x1e	\x1f
-			    }
-	UNESCAPES = {
-				'a' => "\x07", 'b' => "\x08", 't' => "\x09", 
-				'n' => "\x0a", 'v' => "\x0b", 'f' => "\x0c",
-				'r' => "\x0d", 'e' => "\x1b", '\\' => '\\',
-			    }
-
-	#
-	# Default settings
-	#
-	DEFAULTS = {
-		:Indent => 2, :UseHeader => false, :UseVersion => false, :Version => '1.0',
-		:SortKeys => false, :AnchorFormat => 'id%03d', :ExplicitTypes => false,
-		:WidthType => 'absolute', :BestWidth => 80,
-		:UseBlock => false, :UseFold => false, :Encoding => :None
-	}
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/dbm.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/dbm.rb
deleted file mode 100644
index 87d6009..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/dbm.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require 'yaml'
-require 'dbm'
-#
-# YAML + DBM = YDBM
-# - Same interface as DBM class
-#
-module YAML
-
-class DBM < ::DBM
-    VERSION = "0.1"
-    def []( key )
-        fetch( key )
-    end
-    def []=( key, val )
-        store( key, val )
-    end
-    def fetch( keystr, ifnone = nil )
-        begin
-            val = super( keystr )
-            return YAML::load( val ) if String === val
-        rescue IndexError
-        end
-        if block_given?
-            yield keystr
-        else
-            ifnone
-        end
-    end
-    def index( keystr )
-        super( keystr.to_yaml )
-    end
-    def values_at( *keys )
-        keys.collect { |k| fetch( k ) }
-    end
-    def delete( key )
-        v = super( key )
-        if String === v
-            v = YAML::load( v ) 
-        end
-        v
-    end
-    def delete_if
-        del_keys = keys.dup
-        del_keys.delete_if { |k| yield( k, fetch( k ) ) == false }
-        del_keys.each { |k| delete( k ) } 
-        self
-    end
-    def reject
-        hsh = self.to_hash
-        hsh.reject { |k,v| yield k, v }
-    end
-    def each_pair
-        keys.each { |k| yield k, fetch( k ) }
-        self
-    end
-    def each_value
-        super { |v| yield YAML::load( v ) }
-        self
-    end
-    def values
-        super.collect { |v| YAML::load( v ) }
-    end
-    def has_value?( val )
-        each_value { |v| return true if v == val }
-        return false
-    end
-    def invert
-        h = {}
-        keys.each { |k| h[ self.fetch( k ) ] = k }
-        h
-    end
-    def replace( hsh )
-        clear
-        update( hsh )
-    end
-    def shift
-        a = super
-        a[1] = YAML::load( a[1] ) if a
-        a
-    end
-    def select( *keys )
-        if block_given?
-            self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact
-        else
-            values_at( *keys )
-        end
-    end
-    def store( key, val )
-        super( key, val.to_yaml )
-        val
-    end
-    def update( hsh )
-        hsh.keys.each do |k|
-            self.store( k, hsh.fetch( k ) )
-        end
-        self
-    end
-    def to_a
-        a = []
-        keys.each { |k| a.push [ k, self.fetch( k ) ] }
-        a
-    end
-    def to_hash
-        h = {}
-        keys.each { |k| h[ k ] = self.fetch( k ) }
-        h
-    end
-    alias :each :each_pair
-end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/encoding.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/encoding.rb
deleted file mode 100644
index 37f5cfd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/encoding.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Handle Unicode-to-Internal conversion
-#
-
-module YAML
-
-	#
-	# Escape the string, condensing common escapes
-	#
-	def YAML.escape( value, skip = "" )
-		value.gsub( /\\/, "\\\\\\" ).
-              gsub( /"/, "\\\"" ).
-              gsub( /([\x00-\x1f])/ ) do |x|
-                 skip[x] || ESCAPES[ x.unpack("C")[0] ]
-             end
-	end
-
-	#
-	# Unescape the condenses escapes
-	#
-	def YAML.unescape( value )
-		value.gsub( /\\(?:([nevfbart\\])|0?x([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/ ) { |x| 
-			if $3
-				["#$3".hex ].pack('U*')
-			elsif $2
-				[$2].pack( "H2" ) 
-			else
-				UNESCAPES[$1] 
-			end
-		}
-	end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/error.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/error.rb
deleted file mode 100644
index 15865a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/error.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Error messages and exception class
-#
-
-module YAML
-
-	#
-	# Error messages
-	#
-
-	ERROR_NO_HEADER_NODE = "With UseHeader=false, the node Array or Hash must have elements"
-	ERROR_NEED_HEADER = "With UseHeader=false, the node must be an Array or Hash"
-	ERROR_BAD_EXPLICIT = "Unsupported explicit transfer: '%s'"
-    ERROR_MANY_EXPLICIT = "More than one explicit transfer"
-	ERROR_MANY_IMPLICIT = "More than one implicit request"
-	ERROR_NO_ANCHOR = "No anchor for alias '%s'"
-	ERROR_BAD_ANCHOR = "Invalid anchor: %s"
-	ERROR_MANY_ANCHOR = "More than one anchor"
-	ERROR_ANCHOR_ALIAS = "Can't define both an anchor and an alias"
-	ERROR_BAD_ALIAS = "Invalid alias: %s"
-	ERROR_MANY_ALIAS = "More than one alias"
-	ERROR_ZERO_INDENT = "Can't use zero as an indentation width"
-	ERROR_UNSUPPORTED_VERSION = "This release of YAML.rb does not support YAML version %s"
-	ERROR_UNSUPPORTED_ENCODING = "Attempt to use unsupported encoding: %s"
-
-	#
-	# YAML Error classes
-	#
-    
-	class Error < StandardError; end
-	class ParseError < Error; end
-    class TypeError < StandardError; end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/loader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/loader.rb
deleted file mode 100644
index eb0709e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/loader.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# YAML::Loader class
-# .. type handling ..
-#
-module YAML
-    class Loader
-        TRANSFER_DOMAINS = {
-            'yaml.org,2002' => {},
-            'ruby.yaml.org,2002' => {}
-        }
-        PRIVATE_TYPES = {}
-        IMPLICIT_TYPES = [ 'null', 'bool', 'time', 'int', 'float' ]
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/rubytypes.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/rubytypes.rb
deleted file mode 100644
index dc6bb33..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/rubytypes.rb
+++ /dev/null
@@ -1,408 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-require 'date'
-
-class Class
-	def to_yaml( opts = {} )
-		raise TypeError, "can't dump anonymous class %s" % self.class
-	end
-end
-
-class Object
-    yaml_as "tag:ruby.yaml.org,2002:object"
-    def to_yaml_style; end
-    def to_yaml_properties; instance_variables.sort; end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-				to_yaml_properties.each do |m|
-                    map.add( m[1..-1], instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class Hash
-    yaml_as "tag:ruby.yaml.org,2002:hash"
-    yaml_as "tag:yaml.org,2002:map"
-    def yaml_initialize( tag, val )
-        if Array === val
-            update Hash.[]( *val )		# Convert the map to a sequence
-        elsif Hash === val
-            update val
-        else
-            raise YAML::TypeError, "Invalid map explicitly tagged #{ tag }: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-                each do |k, v|
-                    map.add( k, v )
-                end
-            end
-        end
-	end
-end
-
-class Struct
-    yaml_as "tag:ruby.yaml.org,2002:struct"
-    def self.yaml_tag_class_name; self.name.gsub( "Struct::", "" ); end
-    def self.yaml_tag_read_class( name ); "Struct::#{ name }"; end
-    def self.yaml_new( klass, tag, val )
-        if Hash === val
-            struct_type = nil
-
-            #
-            # Use existing Struct if it exists
-            #
-            props = {}
-            val.delete_if { |k,v| props[k] = v if k =~ /^@/ }
-            begin
-                struct_name, struct_type = YAML.read_type_class( tag, Struct )
-            rescue NameError
-            end
-            if not struct_type
-                struct_def = [ tag.split( ':', 4 ).last ]
-                struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) ) 
-            end
-
-            #
-            # Set the Struct properties
-            #
-            st = YAML::object_maker( struct_type, {} )
-            st.members.each do |m|
-                st.send( "#{m}=", val[m] )
-            end
-            props.each do |k,v|
-                st.instance_variable_set(k, v)
-            end
-            st
-        else
-            raise YAML::TypeError, "Invalid Ruby Struct: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-			#
-			# Basic struct is passed as a YAML map
-			#
-            out.map( taguri, to_yaml_style ) do |map|
-				self.members.each do |m|
-                    map.add( m, self[m] )
-                end
-				self.to_yaml_properties.each do |m|
-                    map.add( m, instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class Array
-    yaml_as "tag:ruby.yaml.org,2002:array"
-    yaml_as "tag:yaml.org,2002:seq"
-    def yaml_initialize( tag, val ); concat( val.to_a ); end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.seq( taguri, to_yaml_style ) do |seq|
-                each do |x|
-                    seq.add( x )
-                end
-            end
-        end
-	end
-end
-
-class Exception
-    yaml_as "tag:ruby.yaml.org,2002:exception"
-    def Exception.yaml_new( klass, tag, val )
-        o = YAML.object_maker( klass, { 'mesg' => val.delete( 'message' ) } )
-        val.each_pair do |k,v|
-            o.instance_variable_set("@#{k}", v)
-        end
-        o
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.map( taguri, to_yaml_style ) do |map|
-                map.add( 'message', message )
-				to_yaml_properties.each do |m|
-                    map.add( m[1..-1], instance_variable_get( m ) )
-                end
-            end
-        end
-	end
-end
-
-class String
-    yaml_as "tag:ruby.yaml.org,2002:string"
-    yaml_as "tag:yaml.org,2002:binary"
-    yaml_as "tag:yaml.org,2002:str"
-    def is_complex_yaml?
-        to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
-    end
-    def is_binary_data?
-        ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
-    end
-    def String.yaml_new( klass, tag, val )
-        val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"
-        val = { 'str' => val } if String === val
-        if Hash === val
-            s = klass.allocate
-            # Thank you, NaHi
-            String.instance_method(:initialize).
-                  bind(s).
-                  call( val.delete( 'str' ) )
-            val.each { |k,v| s.instance_variable_set( k, v ) }
-            s
-        else
-            raise YAML::TypeError, "Invalid String: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( is_complex_yaml? ? self : nil, opts ) do |out|
-            if is_binary_data?
-                out.scalar( "tag:yaml.org,2002:binary", [self].pack("m"), :literal )
-            elsif to_yaml_properties.empty?
-                out.scalar( taguri, self, self =~ /^:/ ? :quote2 : to_yaml_style )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'str', "#{self}" )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Symbol
-    yaml_as "tag:ruby.yaml.org,2002:symbol"
-    yaml_as "tag:ruby.yaml.org,2002:sym"
-    def Symbol.yaml_new( klass, tag, val )
-        if String === val
-            val = YAML::load( val ) if val =~ /\A(["']).*\1\z/
-            val.intern
-        else
-            raise YAML::TypeError, "Invalid Symbol: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:str", self.inspect, :plain )
-        end
-	end
-end
-
-class Range
-    yaml_as "tag:ruby.yaml.org,2002:range"
-    def Range.yaml_new( klass, tag, val )
-        inr = %r'(\w+|[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?|"(?:[^\\"]|\\.)*")'
-        opts = {}
-        if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/o
-            r1, rdots, r2 = $1, $2, $3
-            opts = {
-                'begin' => YAML.load( "--- #{r1}" ),
-                'end' => YAML.load( "--- #{r2}" ),
-                'excl' => rdots.length == 3
-            }
-            val = {}
-        elsif Hash === val
-            opts['begin'] = val.delete('begin')
-            opts['end'] = val.delete('end')
-            opts['excl'] = val.delete('excl')
-        end
-        if Hash === opts
-            r = YAML::object_maker( klass, {} )
-            # Thank you, NaHi
-            Range.instance_method(:initialize).
-                  bind(r).
-                  call( opts['begin'], opts['end'], opts['excl'] )
-            val.each { |k,v| r.instance_variable_set( k, v ) }
-            r
-        else
-            raise YAML::TypeError, "Invalid Range: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            # if self.begin.is_complex_yaml? or self.begin.respond_to? :to_str or
-            #   self.end.is_complex_yaml? or self.end.respond_to? :to_str or
-            #   not to_yaml_properties.empty?
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'begin', self.begin )
-                    map.add( 'end', self.end )
-                    map.add( 'excl', self.exclude_end? )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            # else
-            #     out.scalar( taguri ) do |sc|
-            #         sc.embed( self.begin )
-            #         sc.concat( self.exclude_end? ? "..." : ".." )
-            #         sc.embed( self.end )
-            #     end
-            # end
-        end
-	end
-end
-
-class Regexp
-    yaml_as "tag:ruby.yaml.org,2002:regexp"
-    def Regexp.yaml_new( klass, tag, val )
-        if String === val and val =~ /^\/(.*)\/([mix]*)$/
-            val = { 'regexp' => $1, 'mods' => $2 }
-        end
-        if Hash === val
-            mods = nil
-            unless val['mods'].to_s.empty?
-                mods = 0x00
-                mods |= Regexp::EXTENDED if val['mods'].include?( 'x' )
-                mods |= Regexp::IGNORECASE if val['mods'].include?( 'i' )
-                mods |= Regexp::MULTILINE if val['mods'].include?( 'm' )
-            end
-            val.delete( 'mods' )
-            r = YAML::object_maker( klass, {} )
-            Regexp.instance_method(:initialize).
-                  bind(r).
-                  call( val.delete( 'regexp' ), mods )
-            val.each { |k,v| r.instance_variable_set( k, v ) }
-            r
-        else
-            raise YAML::TypeError, "Invalid Regular expression: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            if to_yaml_properties.empty?
-                out.scalar( taguri, self.inspect, :plain )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    src = self.inspect
-                    if src =~ /\A\/(.*)\/([a-z]*)\Z/
-                        map.add( 'regexp', $1 )
-                        map.add( 'mods', $2 )
-                    else
-		                raise YAML::TypeError, "Invalid Regular expression: " + src
-                    end
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Time
-    yaml_as "tag:ruby.yaml.org,2002:time"
-    yaml_as "tag:yaml.org,2002:timestamp"
-    def Time.yaml_new( klass, tag, val )
-        if Hash === val
-            t = val.delete( 'at' )
-            val.each { |k,v| t.instance_variable_set( k, v ) }
-            t
-        else
-            raise YAML::TypeError, "Invalid Time: " + val.inspect
-        end
-    end
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            tz = "Z"
-            # from the tidy Tobias Peters <t-peters at gmx.de> Thanks!
-            unless self.utc?
-                utc_same_instant = self.dup.utc
-                utc_same_writing = Time.utc(year,month,day,hour,min,sec,usec)
-                difference_to_utc = utc_same_writing - utc_same_instant
-                if (difference_to_utc < 0) 
-                    difference_sign = '-'
-                    absolute_difference = -difference_to_utc
-                else
-                    difference_sign = '+'
-                    absolute_difference = difference_to_utc
-                end
-                difference_minutes = (absolute_difference/60).round
-                tz = "%s%02d:%02d" % [ difference_sign, difference_minutes / 60, difference_minutes % 60]
-            end
-            standard = self.strftime( "%Y-%m-%d %H:%M:%S" )
-            standard += ".%06d" % [usec] if usec.nonzero?
-            standard += " %s" % [tz]
-            if to_yaml_properties.empty?
-                out.scalar( taguri, standard, :plain )
-            else
-                out.map( taguri, to_yaml_style ) do |map|
-                    map.add( 'at', standard )
-                    to_yaml_properties.each do |m|
-                        map.add( m, instance_variable_get( m ) )
-                    end
-                end
-            end
-        end
-	end
-end
-
-class Date
-    yaml_as "tag:yaml.org,2002:timestamp#ymd"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( self, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:timestamp", self.to_s, :plain )
-        end
-	end
-end
-
-class Integer
-    yaml_as "tag:yaml.org,2002:int"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
-        end
-	end
-end
-
-class Float
-    yaml_as "tag:yaml.org,2002:float"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            str = self.to_s
-            if str == "Infinity"
-                str = ".Inf"
-            elsif str == "-Infinity"
-                str = "-.Inf"
-            elsif str == "NaN"
-                str = ".NaN"
-            end
-            out.scalar( "tag:yaml.org,2002:float", str, :plain )
-        end
-	end
-end
-
-class TrueClass
-    yaml_as "tag:yaml.org,2002:bool#yes"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "true", :plain )
-        end
-	end
-end
-
-class FalseClass
-    yaml_as "tag:yaml.org,2002:bool#no"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "false", :plain )
-        end
-	end
-end
-
-class NilClass 
-    yaml_as "tag:yaml.org,2002:null"
-	def to_yaml( opts = {} )
-		YAML::quick_emit( nil, opts ) do |out|
-            out.scalar( taguri, "", :plain )
-        end
-	end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/store.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/store.rb
deleted file mode 100644
index 2ffa955..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/store.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# YAML::Store
-#
-require 'yaml'
-require 'pstore'
-
-class YAML::Store < PStore
-  def initialize( *o )
-    @opt = YAML::DEFAULTS.dup
-    if String === o.first
-      super(o.shift)
-    end
-    if o.last.is_a? Hash
-      @opt.update(o.pop)
-    end
-  end
-
-  def dump(table)
-    @table.to_yaml(@opt)
-  end
-
-  def load(content)
-    YAML::load(content)
-  end
-
-  def load_file(file)
-    YAML::load(file)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stream.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stream.rb
deleted file mode 100644
index 060fbc4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stream.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module YAML
-
-	#
-	# YAML::Stream -- for emitting many documents
-	#
-	class Stream
-
-		attr_accessor :documents, :options
-
-		def initialize( opts = {} )
-			@options = opts
-			@documents = []
-		end
-		
-        def []( i )
-            @documents[ i ]
-        end
-
-		def add( doc )
-			@documents << doc
-		end
-
-		def edit( doc_num, doc )
-			@documents[ doc_num ] = doc
-		end
-
-		def emit( io = nil )
-            # opts = @options.dup
-			# opts[:UseHeader] = true if @documents.length > 1
-            out = YAML.emitter
-            out.reset( io || io2 = StringIO.new )
-            @documents.each { |v|
-                v.to_yaml( out )
-            }
-            io || ( io2.rewind; io2.read )
-		end
-
-	end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stringio.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stringio.rb
deleted file mode 100644
index 8ad949f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/stringio.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# Limited StringIO if no core lib is available
-#
-begin
-require 'stringio'
-rescue LoadError
-    # StringIO based on code by MoonWolf
-    class StringIO
-        def initialize(string="")
-            @string=string
-            @pos=0
-            @eof=(string.size==0)
-        end
-        def pos
-            @pos
-        end    
-        def eof
-            @eof
-        end
-        alias eof? eof
-        def readline(rs=$/)
-            if @eof
-                raise EOFError
-            else
-                if p = @string[@pos..-1]=~rs
-                    line = @string[@pos,p+1]
-                else
-                    line = @string[@pos..-1]
-                end
-                @pos+=line.size
-                @eof =true if @pos==@string.size
-                $_ = line
-            end
-        end
-        def rewind
-            seek(0,0)
-        end
-        def seek(offset,whence)
-            case whence
-            when 0
-                @pos=offset
-            when 1
-                @pos+=offset
-            when 2
-                @pos=@string.size+offset
-            end
-            @eof=(@pos>=@string.size)
-            0
-        end
-    end
-
-	#
-	# Class method for creating streams
-	#
-	def YAML.make_stream( io )
-        if String === io
-            io = StringIO.new( io )
-        elsif not IO === io
-            raise YAML::Error, "YAML stream must be an IO or String object."
-        end
-        if YAML::unicode
-            def io.readline
-                YAML.utf_to_internal( readline( @ln_sep ), @utf_encoding )
-            end
-            def io.check_unicode
-                @utf_encoding = YAML.sniff_encoding( read( 4 ) )
-                @ln_sep = YAML.enc_separator( @utf_encoding )
-                seek( -4, IO::SEEK_CUR )
-            end
-		    def io.utf_encoding
-		    	@utf_encoding
-		    end
-            io.check_unicode
-        else
-            def io.utf_encoding
-                :None
-            end
-        end
-        io
-	end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/syck.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/syck.rb
deleted file mode 100644
index faf57e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/syck.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# YAML::Syck module
-# .. glues syck and yaml.rb together ..
-#
-require 'syck'
-require 'yaml/basenode'
-
-module YAML
-    module Syck
-
-        #
-        # Mixin BaseNode functionality
-        #
-        class Node
-            include YAML::BaseNode
-        end
-
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/tag.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/tag.rb
deleted file mode 100644
index a91f2bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/tag.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
-# $Id: tag.rb 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# = yaml/tag.rb: methods for associating a taguri to a class.
-#
-# Author:: why the lucky stiff
-# 
-module YAML
-    # A dictionary of taguris which map to
-    # Ruby classes.
-    @@tagged_classes = {}
-    
-    # 
-    # Associates a taguri _tag_ with a Ruby class _cls_.  The taguri is used to give types
-    # to classes when loading YAML.  Taguris are of the form:
-    #
-    #   tag:authorityName,date:specific
-    #
-    # The +authorityName+ is a domain name or email address.  The +date+ is the date the type
-    # was issued in YYYY or YYYY-MM or YYYY-MM-DD format.  The +specific+ is a name for
-    # the type being added.
-    # 
-    # For example, built-in YAML types have 'yaml.org' as the +authorityName+ and '2002' as the
-    # +date+.  The +specific+ is simply the name of the type:
-    #
-    #  tag:yaml.org,2002:int
-    #  tag:yaml.org,2002:float
-    #  tag:yaml.org,2002:timestamp
-    #
-    # The domain must be owned by you on the +date+ declared.  If you don't own any domains on the
-    # date you declare the type, you can simply use an e-mail address.
-    #
-    #  tag:why at ruby-lang.org,2004:notes/personal
-    #
-    def YAML.tag_class( tag, cls )
-        if @@tagged_classes.has_key? tag
-            warn "class #{ @@tagged_classes[tag] } held ownership of the #{ tag } tag"
-        end
-        @@tagged_classes[tag] = cls
-    end
-
-    # Returns the complete dictionary of taguris, paired with classes.  The key for
-    # the dictionary is the full taguri.  The value for each key is the class constant
-    # associated to that taguri.
-    #
-    #  YAML.tagged_classes["tag:yaml.org,2002:int"] => Integer
-    #
-    def YAML.tagged_classes
-        @@tagged_classes
-    end
-end
-
-class Module
-    # :stopdoc:
-
-    # Adds a taguri _tag_ to a class, used when dumping or loading the class
-    # in YAML.  See YAML::tag_class for detailed information on typing and
-    # taguris.
-    def yaml_as( tag, sc = true )
-        verbose, $VERBOSE = $VERBOSE, nil
-        class_eval <<-"end;", __FILE__, __LINE__+1
-            attr_writer :taguri
-            def taguri
-                if respond_to? :to_yaml_type
-                    YAML::tagurize( to_yaml_type[1..-1] )
-                else
-                    return @taguri if defined?(@taguri) and @taguri
-                    tag = #{ tag.dump }
-                    if self.class.yaml_tag_subclasses? and self.class != YAML::tagged_classes[tag]
-                        tag = "\#{ tag }:\#{ self.class.yaml_tag_class_name }"
-                    end
-                    tag
-                end
-            end
-            def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end
-        end;
-        YAML::tag_class tag, self
-    ensure
-        $VERBOSE = verbose
-    end
-    # Transforms the subclass name into a name suitable for display
-    # in a subclassed tag.
-    def yaml_tag_class_name
-        self.name
-    end
-    # Transforms the subclass name found in the tag into a Ruby
-    # constant name.
-    def yaml_tag_read_class( name )
-        name
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/types.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/types.rb
deleted file mode 100644
index 3871c62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/types.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4 -*- vim: sw=4
-#
-# Classes required by the full core typeset
-#
-
-module YAML
-
-    #
-    # Default private type
-    #
-    class PrivateType
-        def self.tag_subclasses?; false; end
-        verbose, $VERBOSE = $VERBOSE, nil
-        def initialize( type, val )
-            @type_id = type; @value = val
-            @value.taguri = "x-private:#{ @type_id }"
-        end
-        def to_yaml( opts = {} )
-            @value.to_yaml( opts )
-        end
-    ensure
-        $VERBOSE = verbose
-    end
-
-    #
-    # Default domain type
-    #
-    class DomainType
-        def self.tag_subclasses?; false; end
-        verbose, $VERBOSE = $VERBOSE, nil
-        def initialize( domain, type, val )
-            @domain = domain; @type_id = type; @value = val
-            @value.taguri = "tag:#{ @domain }:#{ @type_id }"
-        end
-        def to_yaml( opts = {} )
-            @value.to_yaml( opts )
-        end
-    ensure
-        $VERBOSE = verbose
-    end
-
-    #
-    # Unresolved objects
-    #
-    class Object
-        def self.tag_subclasses?; false; end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.map( "tag:ruby.yaml.org,2002:object:#{ @class }", to_yaml_style ) do |map|
-                    @ivars.each do |k,v|
-                        map.add( k, v )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # YAML Hash class to support comments and defaults
-    #
-    class SpecialHash < ::Hash 
-        attr_accessor :default
-        def inspect
-            self.default.to_s
-        end
-        def to_s
-            self.default.to_s
-        end
-        def update( h )
-            if YAML::SpecialHash === h
-                @default = h.default if h.default
-            end
-            super( h )
-        end
-        def to_yaml( opts = {} )
-            opts[:DefaultKey] = self.default
-            super( opts )
-        end
-    end
-
-    #
-    # Builtin collection: !omap
-    #
-    class Omap < ::Array
-        yaml_as "tag:yaml.org,2002:omap"
-        def yaml_initialize( tag, val )
-            if Array === val
-                val.each do |v|
-                    if Hash === v
-                        concat( v.to_a )		# Convert the map to a sequence
-                    else
-                        raise YAML::Error, "Invalid !omap entry: " + val.inspect
-                    end
-                end
-            else
-                raise YAML::Error, "Invalid !omap: " + val.inspect
-            end
-            self
-        end
-        def self.[]( *vals )
-            o = Omap.new
-            0.step( vals.length - 1, 2 ) do |i|
-                o[vals[i]] = vals[i+1]
-            end
-            o
-        end
-        def []( k )
-            self.assoc( k ).to_a[1]
-        end
-        def []=( k, *rest )
-            val, set = rest.reverse
-            if ( tmp = self.assoc( k ) ) and not set
-                tmp[1] = val
-            else
-                self << [ k, val ] 
-            end
-            val
-        end
-        def has_key?( k )
-            self.assoc( k ) ? true : false
-        end
-        def is_complex_yaml?
-            true
-        end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.seq( taguri, to_yaml_style ) do |seq|
-                    self.each do |v|
-                        seq.add( Hash[ *v ] )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # Builtin collection: !pairs
-    #
-    class Pairs < ::Array
-        yaml_as "tag:yaml.org,2002:pairs"
-        def yaml_initialize( tag, val )
-            if Array === val
-                val.each do |v|
-                    if Hash === v
-                        concat( v.to_a )		# Convert the map to a sequence
-                    else
-                        raise YAML::Error, "Invalid !pairs entry: " + val.inspect
-                    end
-                end
-            else
-                raise YAML::Error, "Invalid !pairs: " + val.inspect
-            end
-            self
-        end
-        def self.[]( *vals )
-            p = Pairs.new
-            0.step( vals.length - 1, 2 ) { |i|
-                p[vals[i]] = vals[i+1]
-            }
-            p
-        end
-        def []( k )
-            self.assoc( k ).to_a
-        end
-        def []=( k, val )
-            self << [ k, val ] 
-            val
-        end
-        def has_key?( k )
-            self.assoc( k ) ? true : false
-        end
-        def is_complex_yaml?
-            true
-        end
-        def to_yaml( opts = {} )
-            YAML::quick_emit( self, opts ) do |out|
-                out.seq( taguri, to_yaml_style ) do |seq|
-                    self.each do |v|
-                        seq.add( Hash[ *v ] )
-                    end
-                end
-            end
-        end
-    end
-
-    #
-    # Builtin collection: !set
-    #
-    class Set < ::Hash
-        yaml_as "tag:yaml.org,2002:set"
-    end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/yamlnode.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/yamlnode.rb
deleted file mode 100644
index e36a18e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/yamlnode.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# YAML::YamlNode class
-#
-require 'yaml/basenode'
-
-module YAML
-
-    #
-    # YAML Generic Model container
-    #
-    class YamlNode
-        include BaseNode
-        attr_accessor :kind, :type_id, :value, :anchor
-        def initialize( t, v )
-            @type_id = t
-            if Hash === v
-                @kind = 'map'
-                @value = {}
-                v.each { |k,v|
-                    @value[ k.transform ] = [ k, v ]
-                }
-            elsif Array === v
-                @kind = 'seq'
-                @value = v
-            elsif String === v
-                @kind = 'scalar'
-                @value = v
-            end
-        end
-
-        #
-        # Transform this node fully into a native type
-        #
-        def transform
-            t = nil
-            if @value.is_a? Hash
-                t = {}
-                @value.each { |k,v|
-                    t[ k ] = v[1].transform
-                }
-            elsif @value.is_a? Array
-                t = []
-                @value.each { |v|
-                    t.push v.transform
-                }
-            else
-                t = @value
-            end
-            YAML.transfer_method( @type_id, t )
-        end
-
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/ypath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/ypath.rb
deleted file mode 100644
index 81348ca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/1.8/yaml/ypath.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# YAML::YPath
-#
-
-module YAML
-
-    class YPath
-        attr_accessor :segments, :predicates, :flags
-        def initialize( str )
-            @segments = []
-            @predicates = []
-            @flags = nil
-            while str =~ /^\/?(\/|[^\/\[]+)(?:\[([^\]]+)\])?/
-                @segments.push $1
-                @predicates.push $2
-                str = $'
-            end
-            unless str.to_s.empty?
-                @segments += str.split( "/" )
-            end
-            if @segments.length == 0
-                @segments.push "."
-            end
-        end
-        def YPath.each_path( str )
-            #
-            # Find choices
-            #
-            paths = []
-            str = "(#{ str })"
-            while str.sub!( /\(([^()]+)\)/, "\n#{ paths.length }\n" )
-                paths.push $1.split( '|' )
-            end
-
-            #
-            # Construct all possible paths
-            #
-            all = [ str ]
-            ( paths.length - 1 ).downto( 0 ) do |i|
-                all = all.collect do |a|
-                    paths[i].collect do |p|
-                        a.gsub( /\n#{ i }\n/, p )
-                    end
-                end.flatten.uniq
-            end
-            all.collect do |path|
-                yield YPath.new( path )
-            end
-        end
-    end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ParseTree-3.0.3-x86-mswin32-60.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ParseTree-3.0.3-x86-mswin32-60.gem
deleted file mode 100644
index 792d5d1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ParseTree-3.0.3-x86-mswin32-60.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/RubyInline-3.8.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/RubyInline-3.8.1.gem
deleted file mode 100644
index c4bdef0..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/RubyInline-3.8.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ZenTest-4.0.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ZenTest-4.0.0.gem
deleted file mode 100644
index 053e421..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ZenTest-4.0.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/abstract-1.0.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/abstract-1.0.0.gem
deleted file mode 100644
index a9be232..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/abstract-1.0.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionmailer-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionmailer-2.2.2.gem
deleted file mode 100644
index 3abb74c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionmailer-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionpack-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionpack-2.2.2.gem
deleted file mode 100644
index 8a3b8dd..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/actionpack-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activerecord-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activerecord-2.2.2.gem
deleted file mode 100644
index 2a11901..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activerecord-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activeresource-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activeresource-2.2.2.gem
deleted file mode 100644
index 70393d6..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activeresource-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activesupport-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activesupport-2.2.2.gem
deleted file mode 100644
index 4e81de2..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/activesupport-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/addressable-2.0.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/addressable-2.0.2.gem
deleted file mode 100644
index d8fa6c5..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/addressable-2.0.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/bcrypt-ruby-2.0.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/bcrypt-ruby-2.0.4.gem
deleted file mode 100644
index 405071b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/bcrypt-ruby-2.0.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/builder-2.1.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/builder-2.1.2.gem
deleted file mode 100644
index c901697..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/builder-2.1.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/camping-1.5.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/camping-1.5.gem
deleted file mode 100644
index 9098a8e..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/camping-1.5.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/cgi_multipart_eof_fix-2.5.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/cgi_multipart_eof_fix-2.5.0.gem
deleted file mode 100644
index 5111044..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/cgi_multipart_eof_fix-2.5.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/data_objects-0.9.12.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/data_objects-0.9.12.gem
deleted file mode 100644
index 01c155f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/data_objects-0.9.12.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/defunkt-github-0.3.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/defunkt-github-0.3.4.gem
deleted file mode 100644
index 0be28ad..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/defunkt-github-0.3.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/diff-lcs-1.1.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/diff-lcs-1.1.2.gem
deleted file mode 100644
index aa0be73..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/diff-lcs-1.1.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-adjust-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-adjust-0.9.11.gem
deleted file mode 100644
index dfeb2df..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-adjust-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-aggregates-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-aggregates-0.9.11.gem
deleted file mode 100644
index a3b5aa7..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-aggregates-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ar-finders-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ar-finders-0.9.11.gem
deleted file mode 100644
index 23a062b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ar-finders-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-cli-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-cli-0.9.11.gem
deleted file mode 100644
index ff2fad2..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-cli-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-constraints-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-constraints-0.9.11.gem
deleted file mode 100644
index 1ed07d6..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-constraints-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-core-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-core-0.9.11.gem
deleted file mode 100644
index f14544c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-core-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-couchdb-adapter-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-couchdb-adapter-0.9.11.gem
deleted file mode 100644
index 4335a0b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-couchdb-adapter-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ferret-adapter-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ferret-adapter-0.9.11.gem
deleted file mode 100644
index 35aecb1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-ferret-adapter-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-example-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-example-0.9.11.gem
deleted file mode 100644
index e062ab1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-example-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-list-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-list-0.9.11.gem
deleted file mode 100644
index a87ecf6..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-list-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-nested_set-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-nested_set-0.9.11.gem
deleted file mode 100644
index f38c0aa..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-nested_set-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-remixable-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-remixable-0.9.11.gem
deleted file mode 100644
index fc6f6a3..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-remixable-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-searchable-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-searchable-0.9.11.gem
deleted file mode 100644
index d819cc7..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-searchable-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-state_machine-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-state_machine-0.9.11.gem
deleted file mode 100644
index 519b3b3..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-state_machine-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-tree-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-tree-0.9.11.gem
deleted file mode 100644
index 6d7f9e6..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-tree-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-versioned-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-versioned-0.9.11.gem
deleted file mode 100644
index 824e71d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-versioned-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-viewable-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-viewable-0.9.11.gem
deleted file mode 100644
index 3ef6b11..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-is-viewable-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-migrations-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-migrations-0.9.11.gem
deleted file mode 100644
index 0c7d61b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-migrations-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-more-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-more-0.9.11.gem
deleted file mode 100644
index 6d9b6e4..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-more-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-observer-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-observer-0.9.11.gem
deleted file mode 100644
index 415e354..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-observer-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-querizer-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-querizer-0.9.11.gem
deleted file mode 100644
index 0aacbbb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-querizer-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-rest-adapter-0.9.12.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-rest-adapter-0.9.12.gem
deleted file mode 100644
index 0d9b371..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-rest-adapter-0.9.12.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-serializer-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-serializer-0.9.11.gem
deleted file mode 100644
index 6369823..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-serializer-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-shorthand-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-shorthand-0.9.11.gem
deleted file mode 100644
index 490edcc..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-shorthand-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-sweatshop-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-sweatshop-0.9.11.gem
deleted file mode 100644
index 9c0a434..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-sweatshop-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-tags-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-tags-0.9.11.gem
deleted file mode 100644
index ea03b07..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-tags-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-types-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-types-0.9.11.gem
deleted file mode 100644
index 964fdef..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-types-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-validations-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-validations-0.9.11.gem
deleted file mode 100644
index c86db87..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/dm-validations-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/do_mysql-0.9.12.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/do_mysql-0.9.12.gem
deleted file mode 100644
index 22d603c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/do_mysql-0.9.12.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/erubis-2.6.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/erubis-2.6.4.gem
deleted file mode 100644
index cd7c1fb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/erubis-2.6.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/extlib-0.9.11.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/extlib-0.9.11.gem
deleted file mode 100644
index 9199126..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/extlib-0.9.11.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/facade-1.0.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/facade-1.0.2.gem
deleted file mode 100644
index cff3c81..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/facade-1.0.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ferret-0.11.6.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ferret-0.11.6.gem
deleted file mode 100644
index 1fb87d4..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ferret-0.11.6.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/flexmock-0.8.6.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/flexmock-0.8.6.gem
deleted file mode 100644
index d7d1d05..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/flexmock-0.8.6.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxri-0.3.6.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxri-0.3.6.gem
deleted file mode 100644
index a04dfeb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxri-0.3.6.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxruby-1.6.16-x86-mswin32-60.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxruby-1.6.16-x86-mswin32-60.gem
deleted file mode 100644
index 6cbffe1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/fxruby-1.6.16-x86-mswin32-60.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/gem_plugin-0.2.3.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/gem_plugin-0.2.3.gem
deleted file mode 100644
index 4c8af3f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/gem_plugin-0.2.3.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/grit-1.0.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/grit-1.0.1.gem
deleted file mode 100644
index b58f277..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/grit-1.0.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/haml-2.0.9.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/haml-2.0.9.gem
deleted file mode 100644
index d1bdca8..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/haml-2.0.9.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/highline-1.5.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/highline-1.5.0.gem
deleted file mode 100644
index c3b41fd..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/highline-1.5.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hoe-1.10.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hoe-1.10.0.gem
deleted file mode 100644
index 10eb57f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hoe-1.10.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hpricot-0.6.164-x86-mswin32.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hpricot-0.6.164-x86-mswin32.gem
deleted file mode 100644
index ae097de..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/hpricot-0.6.164-x86-mswin32.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/json_pure-1.1.3.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/json_pure-1.1.3.gem
deleted file mode 100644
index 4a398e5..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/json_pure-1.1.3.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/log4r-1.0.5.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/log4r-1.0.5.gem
deleted file mode 100644
index 428f32d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/log4r-1.0.5.gem
+++ /dev/null
@@ -1,5980 +0,0 @@
-        MD5SUM = "062269d83adf030fcc8a1dcc85b8bef2"
-        if $0 == __FILE__
-          require 'optparse'
-        
-          options = {}
-          ARGV.options do |opts|
-            opts.on_tail("--help", "show this message") {puts opts; exit}
-            opts.on('--dir=DIRNAME', "Installation directory for the Gem") {|options[:directory]|}
-            opts.on('--force', "Force Gem to intall, bypassing dependency checks") {|options[:force]|}
-            opts.on('--gen-rdoc', "Generate RDoc documentation for the Gem") {|options[:gen_rdoc]|}
-            opts.parse!
-          end
-
-          require 'rubygems'
-          @directory = options[:directory] || Gem.dir  
-          @force = options[:force]
-  
-          gem = Gem::Installer.new(__FILE__).install(@force, @directory)      
-          if options[:gen_rdoc]
-            Gem::DocManager.new(gem).generate_rdoc
-          end
-end
-
-__END__
---- !ruby/object:Gem::Specification 
-rubygems_version: "1.0"
-name: log4r
-version: !ruby/object:Gem::Version 
-  version: 1.0.5
-date: 2004-03-17 15:46:31.322989 -08:00
-platform: 
-summary: Log4r is a comprehensive and flexible logging library for Ruby.
-require_paths: 
-  - src
-files: 
-  - doc/rdoc
-  - doc/log4r.css
-  - doc/images
-  - doc/contact.html
-  - doc/contribute.html
-  - doc/index.html
-  - doc/license.html
-  - doc/manual.html
-  - doc/rdoc/created.rid
-  - doc/rdoc/rdoc-style.css
-  - doc/rdoc/files
-  - doc/rdoc/classes
-  - doc/rdoc/fr_file_index.html
-  - doc/rdoc/fr_class_index.html
-  - doc/rdoc/fr_method_index.html
-  - doc/rdoc/index.html
-  - doc/rdoc/blank.html
-  - doc/rdoc/files/log4r_rb.html
-  - doc/rdoc/files/log4r
-  - doc/rdoc/files/log4r/outputter
-  - doc/rdoc/files/log4r/yamlconfigurator_rb.html
-  - doc/rdoc/files/log4r/logserver_rb.html
-  - doc/rdoc/files/log4r/logger_rb.html
-  - doc/rdoc/files/log4r/configurator_rb.html
-  - doc/rdoc/files/log4r/formatter
-  - doc/rdoc/files/log4r/outputter/syslogoutputter_rb.html
-  - doc/rdoc/files/log4r/outputter/outputter_rb.html
-  - doc/rdoc/files/log4r/outputter/emailoutputter_rb.html
-  - doc/rdoc/files/log4r/outputter/datefileoutputter_rb.html
-  - doc/rdoc/files/log4r/formatter/patternformatter_rb.html
-  - doc/rdoc/files/log4r/formatter/formatter_rb.html
-  - doc/rdoc/classes/Log4r
-  - doc/rdoc/classes/Log4r.html
-  - doc/rdoc/classes/Log4r/LogEvent.src
-  - doc/rdoc/classes/Log4r/StderrOutputter.src
-  - doc/rdoc/classes/Log4r/Configurator.src
-  - doc/rdoc/classes/Log4r/StdoutOutputter.src
-  - doc/rdoc/classes/Log4r/ObjectFormatter.src
-  - doc/rdoc/classes/Log4r/DateFileOutputter.src
-  - doc/rdoc/classes/Log4r/FileOutputter.src
-  - doc/rdoc/classes/Log4r/RemoteOutputter.src
-  - doc/rdoc/classes/Log4r/Outputter.src
-  - doc/rdoc/classes/Log4r/SimpleFormatter.src
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src
-  - doc/rdoc/classes/Log4r/Log4rTools.src
-  - doc/rdoc/classes/Log4r/RootLogger.src
-  - doc/rdoc/classes/Log4r/LogServer.src
-  - doc/rdoc/classes/Log4r/PatternFormatter.src
-  - doc/rdoc/classes/Log4r/EmailOutputter.src
-  - doc/rdoc/classes/Log4r/IOOutputter.src
-  - doc/rdoc/classes/Log4r/Logger.src
-  - doc/rdoc/classes/Log4r/RollingFileOutputter.src
-  - doc/rdoc/classes/Log4r/SyslogOutputter.src
-  - doc/rdoc/classes/Log4r/BasicFormatter.src
-  - doc/rdoc/classes/Log4r/Formatter.src
-  - doc/rdoc/classes/Log4r/LogEvent.html
-  - doc/rdoc/classes/Log4r/StderrOutputter.html
-  - doc/rdoc/classes/Log4r/DefaultFormatter.html
-  - doc/rdoc/classes/Log4r/Configurator.html
-  - doc/rdoc/classes/Log4r/StdoutOutputter.html
-  - doc/rdoc/classes/Log4r/ObjectFormatter.html
-  - doc/rdoc/classes/Log4r/DateFileOutputter.html
-  - doc/rdoc/classes/Log4r/FileOutputter.html
-  - doc/rdoc/classes/Log4r/RemoteOutputter.html
-  - doc/rdoc/classes/Log4r/Outputter.html
-  - doc/rdoc/classes/Log4r/SimpleFormatter.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.html
-  - doc/rdoc/classes/Log4r/ConfigError.html
-  - doc/rdoc/classes/Log4r/Log4rTools.html
-  - doc/rdoc/classes/Log4r/RootLogger.html
-  - doc/rdoc/classes/Log4r/LogServer.html
-  - doc/rdoc/classes/Log4r/PatternFormatter.html
-  - doc/rdoc/classes/Log4r/EmailOutputter.html
-  - doc/rdoc/classes/Log4r/IOOutputter.html
-  - doc/rdoc/classes/Log4r/Logger.html
-  - doc/rdoc/classes/Log4r/RollingFileOutputter.html
-  - doc/rdoc/classes/Log4r/SyslogOutputter.html
-  - doc/rdoc/classes/Log4r/BasicFormatter.html
-  - doc/rdoc/classes/Log4r/Formatter.html
-  - doc/rdoc/classes/Log4r/LogEvent.src/M000001.html
-  - doc/rdoc/classes/Log4r/StderrOutputter.src/M000002.html
-  - doc/rdoc/classes/Log4r/Configurator.src/M000003.html
-  - doc/rdoc/classes/Log4r/Configurator.src/M000004.html
-  - doc/rdoc/classes/Log4r/Configurator.src/M000005.html
-  - doc/rdoc/classes/Log4r/Configurator.src/M000006.html
-  - doc/rdoc/classes/Log4r/Configurator.src/M000007.html
-  - doc/rdoc/classes/Log4r/StdoutOutputter.src/M000008.html
-  - doc/rdoc/classes/Log4r/ObjectFormatter.src/M000009.html
-  - doc/rdoc/classes/Log4r/DateFileOutputter.src/M000010.html
-  - doc/rdoc/classes/Log4r/FileOutputter.src/M000011.html
-  - doc/rdoc/classes/Log4r/RemoteOutputter.src/M000012.html
-  - doc/rdoc/classes/Log4r/RemoteOutputter.src/M000013.html
-  - doc/rdoc/classes/Log4r/RemoteOutputter.src/M000014.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000015.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000016.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000017.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000018.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000019.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000020.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000021.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000022.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000023.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000024.html
-  - doc/rdoc/classes/Log4r/Outputter.src/M000025.html
-  - doc/rdoc/classes/Log4r/SimpleFormatter.src/M000026.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src/M000027.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src/M000028.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src/M000029.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src/M000030.html
-  - doc/rdoc/classes/Log4r/YamlConfigurator.src/M000031.html
-  - doc/rdoc/classes/Log4r/Log4rTools.src/M000032.html
-  - doc/rdoc/classes/Log4r/Log4rTools.src/M000033.html
-  - doc/rdoc/classes/Log4r/Log4rTools.src/M000034.html
-  - doc/rdoc/classes/Log4r/Log4rTools.src/M000035.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000036.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000037.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000038.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000039.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000040.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000041.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000042.html
-  - doc/rdoc/classes/Log4r/RootLogger.src/M000043.html
-  - doc/rdoc/classes/Log4r/LogServer.src/M000044.html
-  - doc/rdoc/classes/Log4r/LogServer.src/M000045.html
-  - doc/rdoc/classes/Log4r/PatternFormatter.src/M000046.html
-  - doc/rdoc/classes/Log4r/EmailOutputter.src/M000047.html
-  - doc/rdoc/classes/Log4r/EmailOutputter.src/M000048.html
-  - doc/rdoc/classes/Log4r/IOOutputter.src/M000049.html
-  - doc/rdoc/classes/Log4r/IOOutputter.src/M000050.html
-  - doc/rdoc/classes/Log4r/IOOutputter.src/M000051.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000052.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000053.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000054.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000055.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000056.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000057.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000058.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000059.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000060.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000061.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000062.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000063.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000064.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000065.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000066.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000067.html
-  - doc/rdoc/classes/Log4r/Logger.src/M000068.html
-  - doc/rdoc/classes/Log4r/RollingFileOutputter.src/M000069.html
-  - doc/rdoc/classes/Log4r/SyslogOutputter.src/M000070.html
-  - doc/rdoc/classes/Log4r/SyslogOutputter.src/M000071.html
-  - doc/rdoc/classes/Log4r/SyslogOutputter.src/M000072.html
-  - doc/rdoc/classes/Log4r/BasicFormatter.src/M000073.html
-  - doc/rdoc/classes/Log4r/BasicFormatter.src/M000074.html
-  - doc/rdoc/classes/Log4r/BasicFormatter.src/M000075.html
-  - doc/rdoc/classes/Log4r/Formatter.src/M000076.html
-  - doc/rdoc/classes/Log4r/Formatter.src/M000077.html
-  - doc/images/crush
-  - doc/images/log4r-logo.png
-  - doc/images/logo2.png
-  - doc/images/crush/logo2.png
-  - examples/fileroll.rb
-  - examples/README
-  - examples/logs
-  - examples/customlevels.rb
-  - examples/log4r_yaml.yaml
-  - examples/logclient.rb
-  - examples/logserver.rb
-  - examples/moderate.xml
-  - examples/moderateconfig.rb
-  - examples/myformatter.rb
-  - examples/outofthebox.rb
-  - examples/rrconfig.xml
-  - examples/rrsetup.rb
-  - examples/simpleconfig.rb
-  - examples/xmlconfig.rb
-  - examples/yaml.rb
-  - src/log4r
-  - src/log4r.rb
-  - src/log4r/config.rb
-  - src/log4r/base.rb
-  - src/log4r/formatter
-  - src/log4r/configurator.rb
-  - src/log4r/logevent.rb
-  - src/log4r/logger.rb
-  - src/log4r/loggerfactory.rb
-  - src/log4r/logserver.rb
-  - src/log4r/repository.rb
-  - src/log4r/staticlogger.rb
-  - src/log4r/yamlconfigurator.rb
-  - src/log4r/lib
-  - src/log4r/outputter
-  - src/log4r/rdoc
-  - src/log4r/formatter/formatter.rb
-  - src/log4r/formatter/patternformatter.rb
-  - src/log4r/lib/drbloader.rb
-  - src/log4r/lib/xmlloader.rb
-  - src/log4r/outputter/consoleoutputters.rb
-  - src/log4r/outputter/datefileoutputter.rb
-  - src/log4r/outputter/emailoutputter.rb
-  - src/log4r/outputter/fileoutputter.rb
-  - src/log4r/outputter/iooutputter.rb
-  - src/log4r/outputter/outputter.rb
-  - src/log4r/outputter/outputterfactory.rb
-  - src/log4r/outputter/remoteoutputter.rb
-  - src/log4r/outputter/rollingfileoutputter.rb
-  - src/log4r/outputter/staticoutputter.rb
-  - src/log4r/outputter/syslogoutputter.rb
-  - src/log4r/rdoc/configurator
-  - src/log4r/rdoc/emailoutputter
-  - src/log4r/rdoc/formatter
-  - src/log4r/rdoc/log4r
-  - src/log4r/rdoc/logger
-  - src/log4r/rdoc/logserver
-  - src/log4r/rdoc/outputter
-  - src/log4r/rdoc/patternformatter
-  - src/log4r/rdoc/syslogoutputter
-  - src/log4r/rdoc/yamlconfigurator
-  - tests/junk
-  - tests/xml
-  - tests/include.rb
-  - tests/runtest.rb
-  - tests/testbase.rb
-  - tests/testcustom.rb
-  - tests/testdefault.rb
-  - tests/testformatter.rb
-  - tests/testlogger.rb
-  - tests/testoutputter.rb
-  - tests/testpatternformatter.rb
-  - tests/testxmlconf.rb
-  - tests/xml/testconf.xml
-autorequire: log4r
-author: Leon Torres
-email: leon(at)ugcs.caltech.edu
-homepage: http://log4r.sourceforge.net
-has_rdoc: true
-description: "Log4r is a comprehensive and flexible logging library written in Ruby for use in Ruby programs. It features a heiarchial logging system of any number of levels, custom level names, logger inheritance, multiple output destinations per log event, execution tracing, custom formatting, thread safteyness, XML and YAML configuration, and more."
---- 
-- 
-  size: 2026
-  mode: 420
-  path: doc/log4r.css
-- 
-  size: 4128
-  mode: 420
-  path: doc/contact.html
-- 
-  size: 4182
-  mode: 420
-  path: doc/contribute.html
-- 
-  size: 7166
-  mode: 420
-  path: doc/index.html
-- 
-  size: 5734
-  mode: 420
-  path: doc/license.html
-- 
-  size: 21739
-  mode: 420
-  path: doc/manual.html
-- 
-  size: 29
-  mode: 420
-  path: doc/rdoc/created.rid
-- 
-  size: 1473
-  mode: 420
-  path: doc/rdoc/rdoc-style.css
-- 
-  size: 1488
-  mode: 420
-  path: doc/rdoc/fr_file_index.html
-- 
-  size: 2356
-  mode: 420
-  path: doc/rdoc/fr_class_index.html
-- 
-  size: 7106
-  mode: 420
-  path: doc/rdoc/fr_method_index.html
-- 
-  size: 745
-  mode: 420
-  path: doc/rdoc/index.html
-- 
-  size: 43
-  mode: 420
-  path: doc/rdoc/blank.html
-- 
-  size: 8994
-  mode: 420
-  path: doc/rdoc/files/log4r_rb.html
-- 
-  size: 5403
-  mode: 420
-  path: doc/rdoc/files/log4r/yamlconfigurator_rb.html
-- 
-  size: 7480
-  mode: 420
-  path: doc/rdoc/files/log4r/logserver_rb.html
-- 
-  size: 11261
-  mode: 420
-  path: doc/rdoc/files/log4r/logger_rb.html
-- 
-  size: 13876
-  mode: 420
-  path: doc/rdoc/files/log4r/configurator_rb.html
-- 
-  size: 5675
-  mode: 420
-  path: doc/rdoc/files/log4r/outputter/syslogoutputter_rb.html
-- 
-  size: 9182
-  mode: 420
-  path: doc/rdoc/files/log4r/outputter/outputter_rb.html
-- 
-  size: 8337
-  mode: 420
-  path: doc/rdoc/files/log4r/outputter/emailoutputter_rb.html
-- 
-  size: 5397
-  mode: 420
-  path: doc/rdoc/files/log4r/outputter/datefileoutputter_rb.html
-- 
-  size: 10614
-  mode: 420
-  path: doc/rdoc/files/log4r/formatter/patternformatter_rb.html
-- 
-  size: 6220
-  mode: 420
-  path: doc/rdoc/files/log4r/formatter/formatter_rb.html
-- 
-  size: 4390
-  mode: 420
-  path: doc/rdoc/classes/Log4r.html
-- 
-  size: 3332
-  mode: 420
-  path: doc/rdoc/classes/Log4r/LogEvent.html
-- 
-  size: 1727
-  mode: 420
-  path: doc/rdoc/classes/Log4r/StderrOutputter.html
-- 
-  size: 1377
-  mode: 420
-  path: doc/rdoc/classes/Log4r/DefaultFormatter.html
-- 
-  size: 3696
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.html
-- 
-  size: 1727
-  mode: 420
-  path: doc/rdoc/classes/Log4r/StdoutOutputter.html
-- 
-  size: 1938
-  mode: 420
-  path: doc/rdoc/classes/Log4r/ObjectFormatter.html
-- 
-  size: 1948
-  mode: 420
-  path: doc/rdoc/classes/Log4r/DateFileOutputter.html
-- 
-  size: 2284
-  mode: 420
-  path: doc/rdoc/classes/Log4r/FileOutputter.html
-- 
-  size: 2602
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RemoteOutputter.html
-- 
-  size: 6238
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.html
-- 
-  size: 1914
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SimpleFormatter.html
-- 
-  size: 3229
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.html
-- 
-  size: 1288
-  mode: 420
-  path: doc/rdoc/classes/Log4r/ConfigError.html
-- 
-  size: 2927
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Log4rTools.html
-- 
-  size: 4355
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.html
-- 
-  size: 2546
-  mode: 420
-  path: doc/rdoc/classes/Log4r/LogServer.html
-- 
-  size: 3057
-  mode: 420
-  path: doc/rdoc/classes/Log4r/PatternFormatter.html
-- 
-  size: 3186
-  mode: 420
-  path: doc/rdoc/classes/Log4r/EmailOutputter.html
-- 
-  size: 2796
-  mode: 420
-  path: doc/rdoc/classes/Log4r/IOOutputter.html
-- 
-  size: 9543
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.html
-- 
-  size: 2778
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RollingFileOutputter.html
-- 
-  size: 2762
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SyslogOutputter.html
-- 
-  size: 3262
-  mode: 420
-  path: doc/rdoc/classes/Log4r/BasicFormatter.html
-- 
-  size: 2162
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Formatter.html
-- 
-  size: 627
-  mode: 420
-  path: doc/rdoc/classes/Log4r/LogEvent.src/M000001.html
-- 
-  size: 593
-  mode: 420
-  path: doc/rdoc/classes/Log4r/StderrOutputter.src/M000002.html
-- 
-  size: 541
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.src/M000003.html
-- 
-  size: 558
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.src/M000004.html
-- 
-  size: 1087
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.src/M000005.html
-- 
-  size: 623
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.src/M000006.html
-- 
-  size: 613
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Configurator.src/M000007.html
-- 
-  size: 592
-  mode: 420
-  path: doc/rdoc/classes/Log4r/StdoutOutputter.src/M000008.html
-- 
-  size: 834
-  mode: 420
-  path: doc/rdoc/classes/Log4r/ObjectFormatter.src/M000009.html
-- 
-  size: 1828
-  mode: 420
-  path: doc/rdoc/classes/Log4r/DateFileOutputter.src/M000010.html
-- 
-  size: 2123
-  mode: 420
-  path: doc/rdoc/classes/Log4r/FileOutputter.src/M000011.html
-- 
-  size: 841
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RemoteOutputter.src/M000012.html
-- 
-  size: 643
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RemoteOutputter.src/M000013.html
-- 
-  size: 542
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RemoteOutputter.src/M000014.html
-- 
-  size: 1135
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000015.html
-- 
-  size: 581
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000016.html
-- 
-  size: 581
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000017.html
-- 
-  size: 587
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000018.html
-- 
-  size: 625
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000019.html
-- 
-  size: 639
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000020.html
-- 
-  size: 813
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000021.html
-- 
-  size: 730
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000022.html
-- 
-  size: 1137
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000023.html
-- 
-  size: 1216
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000024.html
-- 
-  size: 502
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Outputter.src/M000025.html
-- 
-  size: 661
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SimpleFormatter.src/M000026.html
-- 
-  size: 549
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.src/M000027.html
-- 
-  size: 566
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.src/M000028.html
-- 
-  size: 1095
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.src/M000029.html
-- 
-  size: 605
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.src/M000030.html
-- 
-  size: 593
-  mode: 420
-  path: doc/rdoc/classes/Log4r/YamlConfigurator.src/M000031.html
-- 
-  size: 756
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Log4rTools.src/M000032.html
-- 
-  size: 713
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Log4rTools.src/M000033.html
-- 
-  size: 1113
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Log4rTools.src/M000034.html
-- 
-  size: 613
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Log4rTools.src/M000035.html
-- 
-  size: 870
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000036.html
-- 
-  size: 523
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000037.html
-- 
-  size: 514
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000038.html
-- 
-  size: 505
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000039.html
-- 
-  size: 495
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000040.html
-- 
-  size: 501
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000041.html
-- 
-  size: 490
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000042.html
-- 
-  size: 496
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RootLogger.src/M000043.html
-- 
-  size: 853
-  mode: 420
-  path: doc/rdoc/classes/Log4r/LogServer.src/M000044.html
-- 
-  size: 621
-  mode: 420
-  path: doc/rdoc/classes/Log4r/LogServer.src/M000045.html
-- 
-  size: 1265
-  mode: 420
-  path: doc/rdoc/classes/Log4r/PatternFormatter.src/M000046.html
-- 
-  size: 1119
-  mode: 420
-  path: doc/rdoc/classes/Log4r/EmailOutputter.src/M000047.html
-- 
-  size: 612
-  mode: 420
-  path: doc/rdoc/classes/Log4r/EmailOutputter.src/M000048.html
-- 
-  size: 598
-  mode: 420
-  path: doc/rdoc/classes/Log4r/IOOutputter.src/M000049.html
-- 
-  size: 529
-  mode: 420
-  path: doc/rdoc/classes/Log4r/IOOutputter.src/M000050.html
-- 
-  size: 737
-  mode: 420
-  path: doc/rdoc/classes/Log4r/IOOutputter.src/M000051.html
-- 
-  size: 566
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000052.html
-- 
-  size: 555
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000053.html
-- 
-  size: 841
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000054.html
-- 
-  size: 753
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000055.html
-- 
-  size: 714
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000056.html
-- 
-  size: 626
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000057.html
-- 
-  size: 755
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000058.html
-- 
-  size: 1257
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000059.html
-- 
-  size: 723
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000060.html
-- 
-  size: 688
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000061.html
-- 
-  size: 1002
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000062.html
-- 
-  size: 522
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000063.html
-- 
-  size: 560
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000064.html
-- 
-  size: 1205
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000065.html
-- 
-  size: 764
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000066.html
-- 
-  size: 520
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000067.html
-- 
-  size: 596
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Logger.src/M000068.html
-- 
-  size: 2251
-  mode: 420
-  path: doc/rdoc/classes/Log4r/RollingFileOutputter.src/M000069.html
-- 
-  size: 1057
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SyslogOutputter.src/M000070.html
-- 
-  size: 572
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SyslogOutputter.src/M000071.html
-- 
-  size: 755
-  mode: 420
-  path: doc/rdoc/classes/Log4r/SyslogOutputter.src/M000072.html
-- 
-  size: 649
-  mode: 420
-  path: doc/rdoc/classes/Log4r/BasicFormatter.src/M000073.html
-- 
-  size: 858
-  mode: 420
-  path: doc/rdoc/classes/Log4r/BasicFormatter.src/M000074.html
-- 
-  size: 1061
-  mode: 420
-  path: doc/rdoc/classes/Log4r/BasicFormatter.src/M000075.html
-- 
-  size: 514
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Formatter.src/M000076.html
-- 
-  size: 514
-  mode: 420
-  path: doc/rdoc/classes/Log4r/Formatter.src/M000077.html
-- 
-  size: 32138
-  mode: 420
-  path: doc/images/log4r-logo.png
-- 
-  size: 13703
-  mode: 420
-  path: doc/images/logo2.png
-- 
-  size: 13630
-  mode: 420
-  path: doc/images/crush/logo2.png
-- 
-  size: 928
-  mode: 420
-  path: examples/fileroll.rb
-- 
-  size: 797
-  mode: 420
-  path: examples/README
-- 
-  size: 732
-  mode: 420
-  path: examples/customlevels.rb
-- 
-  size: 1903
-  mode: 420
-  path: examples/log4r_yaml.yaml
-- 
-  size: 893
-  mode: 420
-  path: examples/logclient.rb
-- 
-  size: 521
-  mode: 420
-  path: examples/logserver.rb
-- 
-  size: 995
-  mode: 420
-  path: examples/moderate.xml
-- 
-  size: 2438
-  mode: 420
-  path: examples/moderateconfig.rb
-- 
-  size: 651
-  mode: 420
-  path: examples/myformatter.rb
-- 
-  size: 606
-  mode: 420
-  path: examples/outofthebox.rb
-- 
-  size: 2800
-  mode: 420
-  path: examples/rrconfig.xml
-- 
-  size: 1097
-  mode: 420
-  path: examples/rrsetup.rb
-- 
-  size: 1393
-  mode: 420
-  path: examples/simpleconfig.rb
-- 
-  size: 578
-  mode: 420
-  path: examples/xmlconfig.rb
-- 
-  size: 914
-  mode: 420
-  path: examples/yaml.rb
-- 
-  size: 449
-  mode: 420
-  path: src/log4r.rb
-- 
-  size: 226
-  mode: 420
-  path: src/log4r/config.rb
-- 
-  size: 2333
-  mode: 420
-  path: src/log4r/base.rb
-- 
-  size: 6795
-  mode: 420
-  path: src/log4r/configurator.rb
-- 
-  size: 1033
-  mode: 420
-  path: src/log4r/logevent.rb
-- 
-  size: 5957
-  mode: 420
-  path: src/log4r/logger.rb
-- 
-  size: 2646
-  mode: 420
-  path: src/log4r/loggerfactory.rb
-- 
-  size: 676
-  mode: 420
-  path: src/log4r/logserver.rb
-- 
-  size: 1886
-  mode: 420
-  path: src/log4r/repository.rb
-- 
-  size: 1419
-  mode: 420
-  path: src/log4r/staticlogger.rb
-- 
-  size: 5763
-  mode: 420
-  path: src/log4r/yamlconfigurator.rb
-- 
-  size: 2781
-  mode: 420
-  path: src/log4r/formatter/formatter.rb
-- 
-  size: 3989
-  mode: 420
-  path: src/log4r/formatter/patternformatter.rb
-- 
-  size: 1235
-  mode: 420
-  path: src/log4r/lib/drbloader.rb
-- 
-  size: 401
-  mode: 420
-  path: src/log4r/lib/xmlloader.rb
-- 
-  size: 387
-  mode: 420
-  path: src/log4r/outputter/consoleoutputters.rb
-- 
-  size: 3181
-  mode: 420
-  path: src/log4r/outputter/datefileoutputter.rb
-- 
-  size: 3448
-  mode: 420
-  path: src/log4r/outputter/emailoutputter.rb
-- 
-  size: 1429
-  mode: 420
-  path: src/log4r/outputter/fileoutputter.rb
-- 
-  size: 1325
-  mode: 420
-  path: src/log4r/outputter/iooutputter.rb
-- 
-  size: 3995
-  mode: 420
-  path: src/log4r/outputter/outputter.rb
-- 
-  size: 1677
-  mode: 420
-  path: src/log4r/outputter/outputterfactory.rb
-- 
-  size: 826
-  mode: 420
-  path: src/log4r/outputter/remoteoutputter.rb
-- 
-  size: 3599
-  mode: 420
-  path: src/log4r/outputter/rollingfileoutputter.rb
-- 
-  size: 777
-  mode: 420
-  path: src/log4r/outputter/staticoutputter.rb
-- 
-  size: 2068
-  mode: 420
-  path: src/log4r/outputter/syslogoutputter.rb
-- 
-  size: 7327
-  mode: 420
-  path: src/log4r/rdoc/configurator
-- 
-  size: 3505
-  mode: 420
-  path: src/log4r/rdoc/emailoutputter
-- 
-  size: 1241
-  mode: 420
-  path: src/log4r/rdoc/formatter
-- 
-  size: 3054
-  mode: 420
-  path: src/log4r/rdoc/log4r
-- 
-  size: 5476
-  mode: 420
-  path: src/log4r/rdoc/logger
-- 
-  size: 2633
-  mode: 420
-  path: src/log4r/rdoc/logserver
-- 
-  size: 3414
-  mode: 420
-  path: src/log4r/rdoc/outputter
-- 
-  size: 5331
-  mode: 420
-  path: src/log4r/rdoc/patternformatter
-- 
-  size: 799
-  mode: 420
-  path: src/log4r/rdoc/syslogoutputter
-- 
-  size: 657
-  mode: 420
-  path: src/log4r/rdoc/yamlconfigurator
-- 
-  size: 117
-  mode: 420
-  path: tests/include.rb
-- 
-  size: 137
-  mode: 420
-  path: tests/runtest.rb
-- 
-  size: 2010
-  mode: 420
-  path: tests/testbase.rb
-- 
-  size: 1067
-  mode: 420
-  path: tests/testcustom.rb
-- 
-  size: 541
-  mode: 420
-  path: tests/testdefault.rb
-- 
-  size: 995
-  mode: 420
-  path: tests/testformatter.rb
-- 
-  size: 6519
-  mode: 420
-  path: tests/testlogger.rb
-- 
-  size: 4420
-  mode: 420
-  path: tests/testoutputter.rb
-- 
-  size: 784
-  mode: 420
-  path: tests/testpatternformatter.rb
-- 
-  size: 1186
-  mode: 420
-  path: tests/testxmlconf.rb
-- 
-  size: 1127
-  mode: 420
-  path: tests/xml/testconf.xml
----
-eJy9VctuwyAQPMdfgZRzIrtpVcU5RX38BzbrBNWAhXGatOq/F2Nw/HbSQ5Es
-WeyyzMwyEAlyQd/eIsLxx0GKgpNVLFIhQ7R8N2PnLRLB1SrBjKaXMMc8X+Ug
-abLzfjwPhynlH+gbVYuWfvD4ut+gHx3AsaInuIb2e18PEzrRnCogg8uOQpxA
-Dizz1nDGLEuhhNuEhJjgIs9wDBprJCQBGQbZGeUipQQtff951+QXXokxLA+U
-hwEwQyaTsI7EuaxvI74uo6Pu00taqMyqNQNedDE1ZaoCOf2CMNAFa5CrFBIV
-ogZUV9UlSHo4TmdEQinBRlIalN/MGMevqDLCIjTGwkYMDQaEFqycs+Wcojbp
-EwzwSKSknGsCcRvr2TmOdcqoTnWGEtl0woROToKoSJKbFQjKPtb0ff9uxFO0
-pzWs/bndvrxUoh+r3KfyP8OEUH6oGVuGsa4JXFmS/3tW+3yGrpshOosRNkfA
-pLwkJogMHHSrwd+PeaPPA97q9vZh9khPZTjGgzldWVqdt9u35qr9WlPGM0YZ
-J4y7BMa06SvTsX+/0b0+1yTmhJhx9qzUlqaODRngRpf7bZubV+quLk4dhZts
-3rdFsBm3eVQ+nN3QQ/V8/gJmNXh/
----
-eJzVWG1v2zYQ/q5fwXFt0AKxZM9x6ySSOidt1w42GtgtsH4aaImSmFCkSlJx
-sg/77TtKtGM7zkvXAV39IbEo3gvvee5457AwJY+9sKAkjT2EQsMMp/FY5gcK
-ddCpFIYkJgzaZbuBM3GBFOUR1uaaU11QajAy1xWNsKFXJki0xqhQNIswt2p8
-uwAmgtZGOJfpdex5YcouEeEsFxFWLC8MjkNW5kirJMKsJDnVQSPfgb/Sr0SO
-gzgMQMq6q5CQuiAptZoMmXOK5lKlVEW4i1FCOdcVSZjII9xvnyuSps0zvF+w
-1BQR7nW7T3GMQIGyan7qdNCMpXRO4OgdsGLS1c7BU4wunbdGVvY8rdUNU927
-TDWWwOWFIhUoUDXFS4ttqE/klbOpYmt3pX/d1QeNOQcTKgxVGN2o29TCidYR
-LqmoG1hxCzeAnEKAbSweEpvXWYbjPTHX1fG6mD0PZ9q4o7QBuhHD6KuQAbY1
-n81TrcUoJI5nTKT0yrdUxvE7WVJ0BvQJA9L61Xi4lLoRKoypjoJAy1olNJMq
-p76gJqiUPKeJCXQhFxkDgvtVUb3KlayrP1kaHfT7hy/AiddyIbgkqbOyHbkt
-qB9p1DE+wPGvaNZseWu3WBvebSNrajmD6GjqQjBunx4WS9r0dmKrZN8SCxog
-N9ZW5yyoTd2oN7jNhpYOr2VyN7m/ks8babubpDvIDR7U8Gj0Dpj+3wyPm/cr
-tEoiasIdWD2/6w/QpFlaIqa2gd4QV6lMgvVMaVVMLUKjs/fbsH8r7vSSclnZ
-wH9v/G88+QEZEBLv3sphFEkuqApeEdNUpxe9YW9vs1rtZbVIormSC21r0Umd
-6zsZ8y/MHdxvbkq/1FQb/bhqpNi8NnStILUL/x053aVrm5jvS0vrwo9Ykrav
-ssVi4at6ft3hROQ+ECWgYqPMTOHlw+A7befkgihDfALuFrRRZ6/E8wCKl95Q
-O2p2NO3T+T10foSzipCODaCvrOZXgpQ0mr75YzIG3+2/Rzuvyk7WZMnfiaxN
-YA0FSpYV3OfTD5OzO/Qs6YoHu9B1e27BcX9DYXdAM+01zfQdqayztrG+3d0s
-CTEc4pVz/R721jpswmFtrUWxOEjo4B+XpxuLLiUnhAmUSF6XYrv7Htru20WA
-08zcasXbsHxj/h4ObPp6uxPYJZQtUSDlUtg1TMgAD90tQ9WunL5H1V1Z/bAk
-ODuGiQqlS8tHXljZNSnQR6kU1cjb4+aYw8IzYp7XeaJRKg1KADyaFM13mtYW
-s73cHMNkpoLYOyMaxipB9tHpaB99mo3Qs08fTzvD56AdXq9qslQaDNbcDYXx
-xOYtQDgzRAiiUpgegWtoKjlMjPlb6KQ/1KaqDYQcEZE2LxOi4B0ic0gXVII0
-nIuIhDqVMwNHQ+O6lNppm11rIO1Kkdv3OymZRid1cuG2leTC6m1HK3JJGG94
-QTQiyJaj32ipUU5LJz8SqaLw8l0tlm5/Hk3GwEaRsbxWcNdBTBfMFOgzKfnp
-alkqoLANweYNc0PvFTFbonvbHfX6HLtjIPbCDMJts0JC2v08bD4YafYXDNud
-XpPlEP8n79MjtN7L71+int9Hv3S7B0G3H/Rewtej3sujwSHKIPYSvbmq0BPw
-g4HT1oT1qZ2sg3Y8h2m9+WHgH2sbFcs=
----
-eJzVWFtv2zYUftev4Lg2WIFYtJekTVNJXXrDCjRokO5hbwMtHklMKFEjqTje
-w377Din5mvs6oKsfbF147t85/OikcrXKoqQCLrKIkMRJpyD7pMt9Q0bkrW6c
-kdPOQcL6N36Nks0FMaBSat1cga0AHCVu3kJKHVw5lltLSWWgSKnymmL/AK2w
-3kwy1WKeRVEi5CXhSpZNSo0sK0ezRNYlsSZPqax5CZYF+RF+67htSsqyhKGU
-99iQRtuKC/CaHJ8qIFNtBJiUjinJQSnb8lw2ZUr3+vuWCxHu8f1MCleldDIe
-P6UZQQXGq/lhNCJfpIApx+hHaMWJ5cqDp5RcDt463fp4eqsbpsa3mQqW0OWZ
-4S0qMB3QhcU+22/01WDTZN7uUv+6q/caGxzMoXFgKFmp29SiuLUpraHpQllp
-X3EsssAE+1zcJzbtioJmO83Utq/WxXw8Slo3hNInaCVGyaMqg2gLn82o1nKU
-8AFnshFwFXs00+xXXQM5RfgkjPd+BQ8XUiuhyrn2iDGrO5NDoU0JcQOOtUaf
-Q+6YrfSskAjwuK3a16XRXfuHFOn+3t7L5+jEOz1rlOZisLKdua1SP9DogHhG
-s1/Il7Dkg1/ibUTXjaypVRKzY2FIwaf+7n6xHDuc524Qe9vfXRNjoZAbz5Zx
-VuBbN50cXEdDD4d3Or8d3I/E80bb3gzSG8CNHnR46+wNZfp/IzwL75fVqnnT
-cTUUaxKP4wNyEh4tKma2C70hboTO2Xqn9CrOfIWOTz9ul/1r6w6XoHTrE/+t
-67/y5DtEQMKjOyeHMzy/AMNecxem0/PJ4WRnc1rtFF2Tp1OjZ9bPojddaW9F
-zL8wt3+3uTP4swPr7MOmUc831gbSgoD8V+AcNl1PYr4tLL0L3+NI2t7KZrNZ
-bLrpfKR4U8YIFAbNxpg5w5f3F3/Qds4vuHE85uhuBUGd3xLPGQ4vu6H2OKwI
-9On8Djg/wFnD+cgnMDZe8+uG15Cevf/95BP67n8e7LypR0Xokr9z3TnmDTGj
-6xb387PPJ6e36FnAlR7cVN1hzbVy3E0o/Aok01Eg07e0si16Yn2d3SwAcXhI
-l87tTWi0xrC5wmdrFMXXQSODf1ifbjwcWvKEy4bkWnV1s82+Dz37HjKgoHDX
-qHiflq/s35cHvn2jmxt4aCg/olBqaOHlfELFxGnyGBo9aLqtqe+XRF8/FmSu
-O1xkK29+NT+JRRLsqnW3iDYExf2cwDyL1Z64G7UKuAUijG4JbwjUXKogB7o5
-Igq/f+LuWVfmlgjtSI61h7wK1yA6X/KY/FaBgWgmlcLszvjckimeXbS58IqE
-jpHOIi0PLln84agmPNCkxqYm3MBRlLTMg6HAMIiVf+F5cjTx1e38GVXJjHzw
-S6e4faGbghSKz+xuiMtgAF6XrJFIX0K/+kQbIJ8713YOyzxYFRqxY6TuLGlk
-4eaDS2sSXvUUvAgu7pkj7nW66ZccNwJNFuh9ZyzsEtuibRESjcOo1Fr4qAVJ
-co1n01ejZwkLVwj1EAbz0W12w3o7LIHcN0a0zcDXz703HKCH5GEXaWzTHw/D
-h24kUyIrfPJRHJGt3Xb3kkyQDf48Hu+z8R6bvMDLo8mLo4OXpMCUaPL+qiVP
-0BWZrYLoD+OsP9HjAT/8nfAPbFQrcA==
----
-eJzVWWtz3LYV/c5fAbOJ285IpBRLqePuriMrdqMZufFIziT91MGS4BIWSLAA
-qNX6Q397zwVAiquHpcSZSaPJxEsucB/nnvsAdla7Ri2SWS14uUgYmznplFic
-6tWBYbvsLW97rmZ5eEvfK9leMCPUPLVuo4SthXApc5tOzFMnrlxeWJuy2ohq
-niqSktELaMiDitlSl5tFksxKecm4kqt2nhq5ql26mMlmxawp5qls+ErY3O/f
-xf911rWrNF/Mcuwiaw1rta15KUiS40sl2FKbUph5upeyQihlO17IdjVPn4Xn
-jpelf8b3a1m6ep7u7+19mS4YBBgS82R3l53LUiw5PN+FFleOKw+/TNlltNbp
-jvwJWrdU7d2nymuCyWvDOwgwvUgHjQHpV/oq6jQL0jvKn5r6oLJoYCFaJ0zK
-rsVtS1Hc2nnaiLb3YU1DtBHkEgATFg9tW/ZVlS6etkvb/X26jfxR0rroSgDo
-elvKflFkwDb/t+3VBKMZjzyTbSmuMmJyuvheN4K9A31mOQ92eQuHXdebaue6
-F3ludW8KUWmzElkrXN4Z/UEULre1XlcSBM+6unu5Mrrv/i3L+cGzZ998DSO+
-0+tWaV5GLTeRuxHqRyqNjM/Txbfs3C95Q0tIR3JbyUSskkDHigjBaXh6eFuh
-W8cLF7cdh6db23IfyK13o5+1oNSd7x/eZkOgw3e6uJ/cv5DPW2l7N0nvIDcs
-6PHo7B1h+v9m+MJ/P0ar8bU4Bms/28sOx/IcImZuBnpruyl1kU8zJYg4owgd
-vTu5GfbPjbu4FEp3BPzvHf9rS/6ADJjx5JOVwxleXAiTv+TOV6ev95/vP92u
-Vk+rvi3mS6PXlmrRq35l72XMr1B38Gl1Z+I/vbDOPq4aGbnsnZgUpPDityNn
-bLo0xPy+tCQT/ogl6WYrW6/XmemXm13F21UGouSi3SozZ/jy4eBHaR/4BTeO
-Zxzm1sKLo5b4IUfxsltij/wKPz59+ASdH2Gs4XyXAMwMSX7Z8kbMz17//PYU
-ttM/jzbeNLuVz5L/Frp3OSnKjW469POzH96+u0fOQNf08K7oxjW3wvHpgYJW
-YJhO/DB9TyrbKgzWt6ebgRDPn6ejcc/202QyYXOFd5MRheKgMcE/Lk+3XsaU
-fMtlywqt+qa9OX0/p+k7IqBE5W6N4gGWz8zfbw4pfZO7EzgmFJUo7IopfMTe
-6bUwVa/I/RXEo7AsDTcbBpgZEf+ueH9C8H05/vBOf56oD4a3dNYiovxUcxeP
-GCeoNvXBIglP0jIOuJvOiBrDorwUjLclq5S4koShig6p6NDaSAc9DEHyfpGD
-vRXDM8MEuzK8sRk7cawS3PVGkArwh5uillyNIu3GOtEkuoLGDWv7ZikMw5Oi
-Rm13WNFbp5vwyCgb8Y72YpVsawFDeFuInaTplZMdbEWydb1jJdqMbNGYdIsd
-4koUPX1m1LOgdxQM0xuOGNIrhyziZWJ55cSmFRYbkfEein8d4QPQreSqN17q
-jn/faCOyZNblUyhbxkuYRtOO05AqWFdLpa3u6o33LfreW4+AbMjuzkisT6zj
-wIMm1IxN4gXC2iAMCibSfOTGOK25l5/45qkVSSftsg1ekv9L4QNJCJYZCd/6
-tuC0gtlgekIhuUCdJaETQL3na+lqpJ7ZkLxSrIxAiLEO3mjjg5KxEZIEu5Fm
-omSWfIBbY/xHf71yIxpKffwHDpV9EazSpfD6Eq4ajebWakQUkfSc7Z03Cpwq
-8N12MCgbAnDwSnC7oY/EVPJgCKfYIYHEApCK8CKpBKnbZMkxtxiqmS2M7KKN
-tD/I91cVjBPsHo5GtrLxhmwRZY14iYSowihq6C6ygNco5F2n6COR1Iu2wrG+
-Q0gtzooFpU25LYzRKZQlwIeYibQjYmbseCt3y3jICTuIMEZfylKUO8FMTi6Y
-P1sWDhE7CQfuFRG2EDT9B2rrS8DBIewjMl1cccLEDjElsBoCBHjyJWQzpD1h
-l7wDj4uQiRU7BeaOnfcG7LbCI1EAJsHhr6eBdGytzQVYbGO0CBZgqhRLOi0p
-D6YRXft1tpOEDFSSodE7uNNDOLSSHWPVCc+/4WwBu8IBfYdhGiV4W+0IKNhU
-OOaz+Rp9hKhQukUyHFmCqcIMwGzfoVPIAoUwQfpLxVHHJJU2Xyzi+Z9xEIZk
-G6E8XWTriyTRjfwOVCXoOdVeS3lPyp1QG1hD6YrjPLsGrgyHHxGSF4WS4UWL
-VNQXlIqA3Udw6rBXcEeB+6HDxtDyB3u9TZOMi6nswwyTM/Y+CjVJvKEgWdH9
-oVD69nGKeaznmCOGmwxqI4ilD7Ju77vpCLUxXvZEa7xQwsIfHXw6tFQxKSGp
-m5Ts9OT49T/PX2dh8oCni8mFIs0gGkPOn46O9vBH48XttvoKQP5Ub16Gjprg
-IzRs9zd4chGdf8kCmsl7ahE+xo1vfbrd1ctLqXsLX7lFScjYG2ms20lGYQia
-Kj0nlsIXBiRyLMU/tsgl54v0Ktt68lAMIqAv0sRzFM0chaX2hY9TmheqpxqS
-sXMB+eXOuHHMMoAPgZ6GvvHzod1TDOMqKjA0CU17C18S46SzQlW0tJRVFZpk
-wvtSUvGhnke+RJ07bAOGTaskapZvGEOjCifQWKucbHxhTyI+nA35wBqKgtlE
-8T4OXriXE7ulpwpvdN8GKtMtNqpHMvXBk5kuA6lKD0lU80vfaTXp83cc9Jak
-3dHkqHR7r3xiISfA2VqojoKOfkcJL2N/avgVkuOj8KICoDSUxAmChfvI5A2a
-slKb60BBIDVH6EMZGOOw3Wu8H0N5oVqLBShSSac4TPjLmDCi/CuSr/JQrXmY
-Z0qx7FcErpIiQoVu4ptF8Noir3wwqLHcmweIEOACnwqqfQVXWUKT/q9JwH8I
-P8Cxc/DZDfkQr7F9Ss40/aqh5IINN7UhPJwyhMF061srSvNjL2cfuBHeKkVB
-83uk2sCLoZsOBWrm3GJ4hyHfLWIz0WYz9LNpDQsCT1rQCqFDwTR92xIAJIcO
-mtQi6bvMLL24sOFMRL9blM17bhKbyR0i7flxmHXC4zHIg0E7GH3vXWKI7/Qu
-0R+BxhkjyPrc43iCsLPxTO4bCAe5eHkJolL3iMj9PE7uN/Q+cMX0BMc14k3y
-PcdMVfXtkyRW7u0rpOvz63jyDCfZ5OaV+fSHqjt+8UpmFQwYGf/c/6XokB/F
-PN3d98f4RcK+OClfsGu4dy7ZfvY39tXe3kG+9yzfx8f9FweHL77aYxVyU7PX
-Vx37AlZImEwKyKLww1kefn1Dkvif/f4HY2BHsQ==
----
-eJzVWG1z2kgS/nz8ij7drmtdBRLEccpxgCyJ8YYqbCiMbzefrgZpgEkkjXZm
-ZMx+uN9+3TNCCIxfcrmqvaXKBo2mu5/ufrqnpfbSJHG31l5yFnVrAG0jTMy7
-Q7l4rWAoQp5q3g7cIt2ORfoVFI87njbrmOsl58YDs854xzP83gSh1h4sFZ93
-vJiU+LSABgJnoT2T0bpbq7UjcQcsFou04ymxWBqv2xbJArQKO55I2ILrwMo3
-8L/0s3ThBd12gFIEVkEq9ZJFnDQZNos5zKSKuOp4TQ9CHsc6Y6FIFx3vxF1n
-LIrsNd5ficgsO16r2fzR6wIqUKTm740G3IiIz5iCRgOtmKjcefqjB3cFWiMz
-8sdZ3THVfMyUtYSQV4plqEDl3NtYdIH+IO8Lm6pLdkv9VajPGisAYs4MVx5s
-1e1qiZnWHS/haW7T6rlkY5IjDDDF4jmxWT6fe92jdKazd1Ux8icW2hSuuABt
-xTz4pswg2+xn16tKjNqs4JlII37vE5G97ieZcBgjfdoBc7gswo3UVmhpTHYe
-BFrmKuRzqRbcT7kJMiW/8NAEeilXc4EE97Nl9n6hZJ79S0Sd1ycnb98giAu5
-SmPJosLKfuT2Uv1CowXjA6/7M9zYLZe0hWzUHhqpqI1dnRYhKKv2ObFQpoaF
-phD76K4eiAU2kTtrpZ9LTqXbaZ0+ZIOjw4UMHyf3N/J5p2wPk/QAuRFBjpdG
-H0jT/zfDu/Z+ma2EpTmLi2S1/KZ/Cld2aZMxtZ/oHXEVyTCoVopTMaEM9caD
-/bR/b975HY9lRoH/s/O/RfIXZECb1Z7sHEax8CtXwXtmbHd60zprHe12q6N5
-noadmZIrTb3oQ77QjzLmvzD3+mlzE/57zrXRL+tGSsxywysNyS3878hZHLo0
-xPy5tCQIf8WWtH+UrVYrX+WzdSNm6cJHogQ83WkzE7z5fPILbV/YV6YM8xnC
-XXKrjo7ELwE2L72jtmd32PHpyxN0fgFYxViDAugr0vw+ZQnvTPq/XQ0RO329
-GLxKGnNbJf8OZW4CMhQomWR4nk9GV+NH9Gzo6p0eym6x50E6nh4oaAcO0zU7
-TD9SynruBuuH082GEGdnXgnupOXVKhM2i3GtMqJQHiRO8C+r053FoiSvmEgh
-lHGepPvT9xlN30UEYj43D0ZxF5bvrN+3p1S+tcMFXBQUtSiUqo7NlWekl4zP
-hYbHivl5SfI3Uxg8Z11oDFq2tk9QPIK54hy0nJsVU/hItIYhlylMpVJcw1Fs
-3sV4/XO+CLUfYg55uPR5lB8tzDu/9lnmELIUH+4irAbXeEEYYGkUSAWJjMR8
-TQs5lqECLswSv/AfYBgTDXJuL34ZD+tQk+4Ogo6EETLVMMNTeHVewwbT8oFs
-JWyNf185GYCFuMMfK1y642qGp0tCfgleqnX0BeRvUiy5VlU6u0I8WHYIn8CH
-ZLQOOFjf4SNdhPuZgTVajfIMp2WGrrE43tEkMYgiZfE2oDjGG8yutggxCTIU
-jKKM8cGkiIQr7ZNDryoOuSihJWX1bOEXMJHlLF0DerqHzoGwECUg2JgzbOqj
-6/5GxVzGGEEksQ2i69LHkMUMw2LtWdvkm403GiKpcT5Df3EOT6jAMC2S0rYS
-mm+U4MemAdcTuEQCxWvo3TERUzHVQefhEp0nMmVSG7QPmomo9jfYM2gk3GqO
-rYWsII/w4BdYqDQBJkipPKnTDVTDCj9IBUFkOWZOkbxIwziPnnJnE0e/jMHs
-GHJt0RcSGM8y2jJFZ4gZKF7kRGVSWZ2IphIC7GIsFX/YO1vl4THyiU4Em7RU
-pg1tkAxMRcDveZjbhqPRnrVPGzWlD3lD1J9j5A15SQjgkGQdVkuB8U1yzDWL
-Uc+Ml7TYwoiOXYps7qAsT3KCKYVnGbdPOM7ONqRWwcmWnJW63ueknNEDKILG
-6GMuthAdBCq7g9X0LVTdM18NIBVYLGaKqTXYp+79uqlbssgFtxGwfooU1eWh
-o8dPBT/cQxJkbOH8KDl4TAowXiuU58Q1VGUlyrKvhnWHXiwM8RQnAtD+neiX
-AU9wGhEpbyjOInsIFf1Kzjcsf8hcJJdte4/SaueGJVfdWqzQdicIT7pXZvuw
-n99DsdcP+h/lc1PMtDnDqe5AK0ScFFZrc6+d/4TNRosZli8GHzsttt742Fo7
-9WH6aXADN6PL6a+9SR/w93gy+ufgon8BXu8Grz3oXV/Ar4Ppp9HtFH9/hv5v
-40n/5gZGE2dncDUeDnA/Kpj0rqeD/k0dBtcfh7cXg+tf6qXocHA1mPamg9F1
-HY32N2JOx1YWRpdw1Z98/ISXvQ+D4WD62SK4HEyvyerlaAI9GPcm08HH22Gv
-wDC+nYxHN30f5yB7ou8+p2yHpHK8ceNSbf+9TPVt6IHXqrX2HEcHmq0kDm//
-OLMfD7T4g3e8RsvOit0a/DCIzqH6Iql+hyd1C141m6+CZitovYHm2/PTN+fN
-Jk5U2ZLnGvr3GfyASATCJiOEyr2hDdxr3nbgXi//Bz7kKyA=
----
-eJztXHuT28aR//vwKSZ07LWquKQUy4mz3l3dWpZsVcmWTlLKl3K5XENgSEIL
-YhAMsBQd+z779a97BhjwseLaqculKipbAsF59PT7NTxfNqviMjlfGp1dJkqd
-N3lTmMsHk/uTT9Vzu3hYq2902erifCrfYEyRl9eqNsXFyDWbwrilMc1INZvK
-XIwa866Zps6N1LI284tRgTUmeEG7TGWb85nNNpdJcp7lN0oX+aK8GNX5YtmM
-Ls/z1UK5Or0Y5Su9MG7K80/pbzupysVoenk+pVmAuFaldUudGazU6Flh1MzW
-makvRvdHKjVF4Sqd5uXiYvSJfK50lvFn+n6dZ83yYvTg/v0PR5eKFqixzO9O
-T9XrPDMzXavTU9qlybqRn344Ujce2sZWOI/sOtjq/qGteCcCeV3rihaoWzMK
-Owqev7Dv/J71Jfbt1o9Bfe9mHsDUlI2pR6pfbrhKoZ27GK1M2TJZR5cMAxE5
-IwQDF++bNmvn89HlR+XMVZ/H03CeIneNP4ogqJ82UneiDHEb/xmeKsLRufZ8
-lpeZeTcBN48uv7Yro14S+5xPtcDFEIZZ/aRl01Rn06mzbZ2aua0XZlKaZlrV
-9q1Jm6lb2vU8JwafVMvq0aK2bfVjnl08/OSTP/+RgPjSrsvC6szvso25LVIf
-uann+Ono8j/Vax7yFEOwR7K7SbRskRN2nPEoeC6f3j8ttWWj08ZPeyyfdqZN
-mZCDd905lwaie/Hg011uEHb40qaHmfuO/DwQ2/1Muoe5CYKWPjZuD5n+f3P4
-JX/fUWvFutgTS5R0UM9CsXqb0IPpdWbTaSwpssQrUOjq5bNtsv9WupsbU9gK
-iP9n07+H5F+QA851cqvmaGqdXpt6+kg3rJ3++OCzBx8NtdVH87ZML2a1XTvo
-oi/ahTvIMb9iu4e3b/fK/K01rnHHaaM6n7WNiRSSvPjHMac3unBi/rlsCRD+
-FVXStilbr9eTup1tTgtdLibEKFNTDtTMK/ry/cT3q73V17pu9EQTuEvDy8Ek
-vp2S8nKDZa94BLtPb29h5yOArbU+BQInNVZ+VOqVuXj15L+/eU6w45+jga9X
-p3OWkv9JbdtMsdG0tquK7PmrF9+8PLBOYNfRp/uo68fskON2hwIjyJlO2Jk+
-IMpuLo71rncTGOKzz0YdcJ88GCWRh60Lehe5KKCDJQ/+ODkdvPQi+Y3OS5Xa
-ol2V2973Z/C+PQYKM292XHFBy2+U3z9/CvFN9guwFyioKJrlRXhvoHSMD+2X
-OSTR75/J0YNWzKqEhBRIWD6MPOIP+OUbRoedq8cyzYm3unyI6S1CvyKP5rjU
-VnSs1/gHs94sczdwMQajc4rqvlvqxiPgmdszhsTAzmf23ejyRdtgyYZElvTu
-vqE3pr7JzZqG+iceRA4MAP2P4eACNp32V8/5gUduD7GLhal5jDztG0TwVW3T
-yLgX3Yd9Q0lwVjoMfdp92DeUiDTPFzTsMT+0NRlLW+4bWZuVbQjl6hU/MKjE
-pX7odJdEpByJrITEq5rxGU/Yjyp9Y/OM1CX+oZEUGtXENQS6ekJS1B4EjcIf
-cjg3CKjWYILNo32j1ktTm8aCE+hBvbF7R8FroL3DqKekFA+sxivZE6fe6OKa
-pjzyJ+PEQzSybIvCzt4KLr6lD57KARF7ULewTbrURL2v5GEPD1amZjKXKdHk
-Zf9h31CJ2ASAl/JBPWucKeZeCQKCOFMB5WZJe35wdXWf/gxE2EveXiHuxLEZ
-iqOX42+s6ySL3HiV+XCHCatq4/LMOEW6FQOSw9GASHEcDYyVs7KpRB6kkAjP
-M6NmdW7miS4z1WjS/Y2hB6sqYyvSNo7eNWA0elUYXZdKz0jMvJawtSIiq7Wm
-sIAGOEMwrXslQmTBazufm3qSnFdTclf9CQD+wpSmJkCCrhgrTUukfNJUFwUB
-khwlK4rIdyPL1nl67RQfJq8YUa2jUYkAZObzPM0JncXGw/OYYu1rZQWfYXM2
-CIB8YdWMPGQ8DvF9i0JWdHySL1pkZSYJ73Ir23Rck7sDLLOjloVX5A3RU9Oi
-q6o2S1O6/Mbw6eeFeZcDukLQRD7lrNb1Rq3rnDRdCczAlUtIKAhFJnwGKhek
-UtyE2F/NjW5aYjragjwHXafLnOgVlnQb15hVQufHect2NSM1RJ9EnY9V2rrG
-ruQjn5HeiR6n3Uh15A2kcZys2oKIBUyyylZESGI55niaYd6ZtBWyiN7pFvY6
-nF81hDCdJU7PG7MpjaOJ5OsxKv56RQ9prLvH/H5la+O5oEcl8XcGrSYMDaJX
-y7ywzlbLDZ/Nn525Srl8BbirOqfxCckK4QN8MFERzchVcbIYbRCtxpTr6LTW
-vH7CYZMtWOSWIIucEuefGSYkMJhNsPjg21RjBPEwg56AJKRyMywaIZRPvs6b
-JTld9QbrZWZRGyIxjaPT2JqJMlEdShKaTQ4WCSPrDzpWR//uvLw5WT84ffQf
-8VDWejm2meH9El2soNtKSxQlSjLPtqLXiKdS+m5IDEiUII5OZbTb4BGcihME
-cpoxFhTjzfjCqkBpQwL+WDvoOZfWeeVhxHxZn5PUSgPtjI5VXuYrBmTAKGui
-l0nAKgpUo7giTzVUpK6qAo9gUl7amUa1FVRYU9PhCbZsuJhC/lElhB9wJokd
-GHNCuiOW3aG+B8OIasvGAqbGEeqToMTHiSa8z8GwKRsMYW1oVBqa2Z9I0s07
-DZy4QFMgawWEED71jNZWJPas3l4SH6ciiaRfCeeNet3WxN3OMCZSQpPRpRM2
-yBu1tjW0rfPUAloIp2RWksrmkIOYomse56ocmKEtAWinuFctLe7tXqd15PM/
-MKokuMS2j9WMFA2ht7QNEEUwkcFnae6xTyRKC1uSMFzBaKk5OTrKtXAryIro
-IiHxzwtNeiyHamNl4TO/ShPDYO3aFMwueclKEuzGxolZFajX0L0Oco/NG1Ns
-CBqIa9oEggFxmaS9jAgvLDC9KEkULfwqoJ0pGB+YN9ij4F5UNFGCvQAvwxRJ
-nBdlJjOBPFFv/KJ14nPTWMsfPyhKNh/PKRJvNUWQIYcNMxLcFlsKNN9BqHoN
-g42Jy+B5jMFVAwYlk0MnVbZqWDwjnw5AJ44cBVIwFBISlQrYgM1YVQWYFCQQ
-lbmC4aXFYPuM0Klf5jQFAWkZoQHRGwpNQzk/hqqCYML4WD7gvzn63xy9xdH7
-qzZi7X3hykPDiwIXnAZlBV/CB4CJoVMd6Sf2Ufheb3E3NPehxddkJU4YX94i
-YBjFhcGubtvFiRR1farCz8GmJKrhLYNRm7+1xG7qhMtdJ2Th0qLNAnqTD1RK
-ckmCp4P3h3Nk6mS1oc8nnU/BdHJNRudL+Ct14cPASWnWYbh8NelDfRrVhfoT
-P532/JYOtjZsmTGevBjyg+yP9Pwx/X+Pokq8zsysXagRp0bYHyMn1YHYbGzF
-c/3yyRd/+WrkJ8Djes/4Z98+fRGGrxEx3T78u6tX34bhpq5JRG8f/+TVqxev
-woS5bkhx3T7h6dWbq+ejhCQh8QhgFN6joJYoidiWq/AJJMJ74BwaQhLJ6VkZ
-YmUOIK4N+7BnybGMwZhTvNuZej+OE0bdUeMxMGHUHTUcAxNG3FHDeWTCeDtq
-PI/cwuZTIqSBKkR4lKYckUAmQwBEyqaxtdejiJSXku28NhsJwHPSuRCU49E9
-FJrvvcD84EsA6gP1FbmopCUDDAhtt6B+3VaVdTCoXVBPhqtECK/Om0Yoej6l
-pzF/Bh34I+cP8Aao5jcBURKNIzVgSzIFGMP4lUFhmkchPU2SN5YklVltDEDg
-WDPmGNcI9NzSFhnCP6EOoBwue0ecTWTpC+VXGKDkVVuW4H/sMJAfOcAmN0V2
-B5n4v+XC441Kl6/db1SiJK43J98ZURMlKdqFlZAjRGDeiZIszcOa3A3yMlYr
-5B/onSGLPghtmHnQieTjZHOnxBZ7JmEt5op5W9MiNby81ulicgc8hFT0Xiz0
-6WmPAwGGjOdWhkQyI1G+AP4GQiZkRQx5ejlbJfZ4GpfASC01MjdqSeYXkNe5
-JS8McRl9Z/k0/YSJ+hrx3pgkSiycTxoksObsd8aJAQyCMDNysQg81ext65qQ
-ZDifXW4J1/l0dpnE4H9BTpyZ67ZoejXGVoFR4j1fhjk37Cve1Up8VDSfi/7n
-J1bt/CQCw497OPxZ6b1Uc5Pb1oUUnigOvWb/hhRId1R/zm2FkWABFJCyXm31
-ouVu131qR/cl4ljT5pwrqsTd5BQYD5ZcWQgHnOnQCNSEnAFZg0nyV9uqnj32
-pNlkPVoZK60Usq8GorihievcLXnrJJALxtySR+yx413SApF+SH6GtLA4acin
-ebnmpFsiu3a5BOYjB2Nlijk7cC1FcBtYmdKYLGQAoNPnnI0i74KzKZJGDqlC
-Yg3YSk4gD2Wfm7akkerHeuaVwKFvIJp3kvZQVdov7n2lSeT9zVJyfZIj4bB1
-rlPOnUbJWO+zhkKVkA5COCQCZ15ZFQpPgo5DAu9Jh0KTCtDkyfO8pDeIWvC7
-PYfC3w0ImpIqWRBJsw0dHgFvsemBJM5LvEMCvmen5JUhXyCnlxvWqhSg1xSL
-k3qLM9zdCl4DJ0j/IPHI3J2Rf8qT/dnPgvLoDJhwjlcqOWHJnx/BPSfMkGbS
-LhQEciRveWfXkEbplFGnMSUB5sgglX2kyABCjHze2WtU/w1FdH06Os5wBVrS
-NNJrQFiiM8uZiSXjs9Yp8QAnBSWB2iDm4+xxPif+o+NApF1l0nyeI2t75Zc8
-cSJJkv/g3el0lrU6c0LYmsXRJy5stIHzpE4GpNaOcyGcksOQdTkRp2FmiA0J
-Q9gPuRQkXSVlQMeya0SyJuH4yycvCYLKronB20IgIgHNyX+L1dNWJcDj+5Co
-C7JjWT8s6lMZfVjitwaI4N8lhO4KxYeC6Kh47K39VblHvNTHgGqsalKnz16M
-fQA7VqZJJ/eA7dqQbXFiWzhHpJJudWVnSFYQW5R9EMtlM51UKLylLdIRwpLE
-X33FQyTr465yfY9pxDO3HeXEMyYzQ3+wsUR0zwNZmFGjkKTupZ8z7lJeSLwW
-MKJuVrrMq1YSQgOt8IRs0EZ1eAYipERz6vSc0IUjoS7HctYVgGSIC1F7yMM4
-mLcePyFftLa1lDCYwZIaqpjYM8tFVXpu5Bo1K+ZFLfaY+KLwxq7Tsk2kwrKz
-jppdRmKsRDoyCtH5NfOi+lhyHVgVws6ncVUBdAM9P6EG2VaS3SBvNLeZKN57
-Y15u43BKTp9ZTsysdF6gYESkg1qao5wA5aGL/CdC8YsYn7CvyJhCcj11JNGS
-+bxeWuuGfUHV115AnTF7lZ2z3YWpCWc7M19kQnk3YhYMZNUSKhRc3shMl/yz
-SMJJV5IKObXbNUK8/FFKoZvQP/UaIrnL8Dvqi7hbZK++GHaQiL646vtKRA84
-ioscF/vEnFJUUzP7Dg1iKbzgVY1sPUlew6sj29vvNIh7xqrnRHaIve5WL3lw
-2U2bJNtvJH5xXMScn7JSkOxxfmOYRwSEGEjm7sQU+Qpa0JfzwY98Ml+e7SG9
-nQ165B7JBt2E/uk2NrhluGeDWX0Yum1s3RnGSha4I6iHZt2RcUPv0l6m3eln
-Er4Nr8FKvVubcjqfAgoi8k2umeL9AraWUrteFfHLhOM8lB5JDW/E1RBFaTmt
-E3cIiMbEJQxozKhEyjXxHlBZbFjdR8fCSjMns5HtwEap2axQgugK7UmwZnwk
-m2lfEhrWakkdeuB6i8n7RfLHAWLSFbRRDI3i/BzKe3sNwOSVNJe62CddUaCV
-4x35l7MekKgyAtHyTTjiCoYSemYmfVIootBskzRa6ijZDcX+UCx0JBQ0KHDo
-lAMxQ9E13FR6lhccv98ur1sV8qPEIY2Y4hanbt+wWEafBpbYbuconH0PBBti
-zSOh2B7agXGHyDK0Au4VvN32QO9hPuMKHvldYiZYSlgoQuZHLLuOvUVYixAs
-+Lp/aRpmxqRnjYg3pHVlUIqit1zrCk1C6G/mbqx2xhJMvOPDqBCH0afXpr6B
-PpRwRc7UV2JuZSHBTggfjg8JHG95mwbdGSTte4DlqoBG1TBrxabPnSGB0aMZ
-Xm9NeIaKE29M0PUEz0eebjj2ltN57ThldTXd2iI+4XsH3pE7uZduf4/x3ga7
-QboTPT6S7sms8fXmlrScbsS3Vabk4NB3EKK6CE+H4nXBsZAcuUpOVJEW5HW8
-J0PjbSGlf5ICIg1td57vhSu/nKiQhU6Qhk6Z/1GyChXQxqTLMseVFcl1QRZq
-KQ7vVD7pQ9ILCqfT7pJL8p25e7H63nZdj+Co/OLzwb6fKY7LCfbMlieNDOFT
-5kj/2WSlr00fMXBKsrE/ulCOQdYJnWnkp0f1HY6zxP5xD2PiUSehKSdSIRxk
-kzPLsf5vqQh2NdeP1WpDO0x8LPb3n83PyvSfqp9VNQHsv/yi7m3VNERJmneV
-b5lqunIRhUCpBkENR5+CFug5rvIKAtgCsw6jEAyOcqAIEivOhdpblwY1Qifk
-br7wqzddFcb3dUA9Qn+Oh6lmUZg+1/zi6VOhgy+aNMqnnCUE67hhonzICu+e
-1Di6FVgcFuQv6dq2yLR3XBTPg4jM89oxeogbfI8LGELaFMkj6cLj40mWz/tK
-+aO4bH4XEqL6LGQMd749MdGUABbDaXMUMbI2FRoAaf3GPu8uTWgdCelsCSkH
-km8it9BX1AK3aKByiZbglo8+TOFHkUzXJsRZco6okR1c546Tj2GdOTkZ5G39
-V7SXTGZeS5dGV5wjyMsbey1iqjmNtoC/x30y9K0pydFynDEJsr2voXLCueb4
-XCFfExdfyIT5xM12sj7k1WdczIebqhVf3IOrR57ydeivIbqgGYjAlZSoZ4Rx
-h35Ukh5FnMsGL4GZ8zjtyyAsgH2L6k4i9o20WFt0oKJr6DAzCwezQBICZ4Xt
-erC3Khm/QvOovx/Lt+qXPR0SAsyOdmB3H64Aatz5fKvUz861b7ihUejuTbb4
-Maru3cHodNc69pqdwV0PMTF4hRkhHYsiVVtk7A3BnjxSL3ACaNc656ZS+EgU
-mki2mNgodO3XbeHNbLuaeYL5Rh8sBl7O04CDCp4je5JIHOB7vIGnltMW5NUz
-65Pu8/2BZKIyo7kL2re9FribEFe/Qt7S75BELeUifBk03Q2KqFxAM0VFGy10
-mf9kuEwGjepiXkV0BdUbseswKBTH3AdJfdUHAtiWKXGztHCEAJMtJSoVCmFd
-pul7rqU+a04gKU7uTOCChRyyt6xeYXPa/cYWN6yIpMLO2VV4nr17xPao0e56
-7AHqWsG5I1kc2DigHp4qkd9FOJ7pultCB24rRFeH4psKBdDNJRHnLDkozXZB
-M4q0o6AmVJiSiKDiYbLPWOlFF7HrXoro4GtdZ91VGc8lvka/mUTdTrIheXvk
-0yLj1ZVb6V1eI22+nVF3E/WXkrVxiWxAkXTMGB0h5LCJ0ULJ39eBWCpUKKSK
-U8pFmMSnRlCpK2nDqATA6X7GSvRS4EfjK4AjKjuQFp2JNcxY4rO4uH4DOwjT
-kqFILrkQ8PEG+MkIKvZOd6TCi8PxrNFdDbuFNbr7YqGRxDuiXSi1Fv8nPikQ
-1llHQu1KelcfDYqsCXbnxAx7CTWZmto3pqIoSfOhuaFbYNG53Ha8/dhqqprw
-XuqC3Ys9ZkK+5qqHKaUBjEN6VIBUlIy9i9QdlrjtK3YhncB2yPuSA63PhQr4
-ssFGxfdxcugnm6bacZmwAMgLC9eZdDLrLI6d4G7iqh4mUXiy6SRQFuwqs/29
-GPStcA+qj728gtpJSB/eItnaQ+/6TqjJQNvdO562aC6Z97vzjx9tAzX6aNF8
-Tu4vxuKC84ePGUa3BeDpaTTOJ3Hx5vsPC5ryg/pwhS+m0TcJv+i2x6s9rYQ7
-vbPmxFtG3tkSTU9S0jFnZ4uazEalz84qfTLuIhm5knOHrpzvpS1nZ82zs5X5
-gS8feQ/613acdXc+ccHzQCZi6yqosPWz0tt26coXl9OHcqA/WKQoegfBm5Ha
-2kaiNuychMor52uHt1o4HaFnzhYtd6/DNRb1aDj14SshXQSQiMufwbK7odNO
-kHD8JkGExBDSDN5wsba0kRGa+NCW5BLJ2dB7GWQWPZic/vMNGsj+HqQn4XSb
-oqXN3bCtGihJ+PWgEXrN2YUMVagNn3z0a2ncXdLdq7eim7u9wkLfEjtUrqs/
-jCMthpgb/YY8UyiGGd6LJadHrzUH5GfRnXifuvRlBu8dRW0wRJ7MkPmB0UTE
-5Ls7SvRXMi5Q+CYuyNNQw0fAlxcZ8dsw48+wkFY7B3EugV/pLb3g8J9fcsTK
-kRpCVcUbh7xKz7TcO2LjOMKJIHu4xDcRvwRRp2zY78LpgK7wDeVNrrnDJTRb
-h1yJdISQ4zclHDGivtzFSd/kNw4XMOFHRs5YnIzxzm3Sebf+UhwBvuk7j52o
-bnFD/f088dmRJyNLxZULT6BETsw+oTiSIrq+DiSj3ApgcJHbSw/OyUzN1gGL
-J1n/00Fj72RQMCd3/tA+Gd/v9A0DiNzpW/IoORiKccVBCrGSYP7Zi8718xQg
-NISvAuURCRbWhdTToZkqnJh1TdewuEXhAIq/mX6sSA4uxe8Vy62b8l40X9aW
-4gSgBoKH1JVGAiZc3pByG5lOzz0oYOPnRYDTlV6UeYMbIbZOkNJyBQpQ0tuK
-uW/JMZBs8LhLrrkG3J7pFbSma36nSO33DiE5KbEj4KRJfBdJ0reAyAk/V8hV
-vaVJr6WWlqDdMB+GDb0i8S5waXRN57mhuNEtpZIJFam3iiqzTbJHoQTL1JZY
-bdAyFQyEZC+9ifGRp29qnbcN33Blrj9xg7tv3aW17mpZSEmEC95ygy3ZvcGG
-5BgPFhTPzFZDWJT81Dc6L7TvWCCe5dz00g6Mo5F0nSO7Z34KqVfuKKWAOGUl
-FgPOjR9zCQkn6uNvkYAuI4+Rr5SOCWM0o2lLropO7t2Bv8MvORwsb+z+vEMc
-pcqdPt/uF11SI7Xv0xbO36IG1xEj0yhgzRER6HGhmepJZdEWxS3c3KBLRius
-hYbDl1IS4qu7u78uMPwhv7T/IT++UCYXH2xttrq8OT0WbZIMfqUn/pme7gd2
-5Ad7ku1fBox/j3PPD3sm53OLKMzT4DP+M1Iu/4nwf/qAf62IPJDfP8vOVPQr
-d+Mb9WDy4KH6w/37D6f3P5k++JP6w4Oz+386o3dzQpJVT95V6vcJzOL5FFt0
-Hsf5VH5mlAjFv3H6v7hMzYs=
----
-eJwLT01R8E0sUjA0VzA0sQIiE2OFgOAQBSMDAxMuAG9cBrU=
----
-eJy1VNFO3DAQfM9XrIR4i1GOIwjlnlAR6hf03YmdxMKxg7PXCyD+nbWdHFxI
-W7WoK52UG8WzszPrJKUVTymKtIcXqK1BVvNO6acCfkgnuOEp3DrFdQrfpf4p
-UVWEDNwMbJBO1TtIIFZltXUFnGVUV9kueU2SC47omDvMzIN6lgWMIxs6rvXu
-eOSK6uYG/AlUqCVz1p8pefXQOLs3gs1vfqO6v9/NPU86hwrtN1P7UjUsEvr2
-xJgcXy41kXueIOwgVdMioVaLI/j3PnwYUnPXyAC2E/d11o+eu+dCKNMUsCEA
-tvSbH6Lo4M2p7KXmz/UPgn/NEyYgD0Mg/HHPFxIC3klsrWCGdzKFGLR/hpdk
-RdEX9mo1n1OpENdpwjtyXhmmZU0HLifTlwu63UazkZdaDvsy2E1zzP9nKI5z
-UAJbH1h2HsimFmh7AuX4ESstou0KuMgn/Bh3TiH7oPM5bFhZmAQ+b+gf7kFp
-nZCEYatMHMrnwLQaMKg/8SOPjRdiL6NWrYxk87pusvw80gk5VE71qKz5OuFa
-bu/r9O75Wrqrq4ByRCZkZR33Cgsw1gQfl3Gv+XhoFfpbGu6dq0jvw3/ofnf3
-u+6hec8d7wbVxH1bt4gElnv/Oai15aTBeSnw+gZImMYJ
----
-eJydVMFu2zAMvfsrNA+7VXECZECb2AaGAcM+YNh1oC3aFiZLnqQk9Yb++yjb
-TRsvaJLxEEaPfI8kKDmK0sa3KieHIMi16IE13nccf+3kPos/G+1Re/6t7zBm
-5XjKYo+PPgnULSsbsA59Jp3h9/cfH/gqJiHne4Xk33EeMVYY0bM/UQHlz9qa
-nRa8NMrYDXsvyKpqSzlkFcnzClqp+g37jlaAhjv2yUpQd+wrqj16WRLiQDvu
-0Mpqy0bmxHXyN27YatU9HgMjHrrZMG1sC2oqpqRG3qCsG0+U9SvKYM8NLsnW
-y8B5ioTcLwrQGi0NQ1Mdx5nyAELexBzs0EiPAexACKlrqhROLdha6g0bdF91
-/rD8cEQOU2uFUSKAp/0uBp2wBg5K1qRV0mLQBvQghW8oZxnUngiIOKdVJM87
-KcAh89QCbS0WpjxIHVaWTHcgLIscDctKBc5l8ThznH+RCl2aUITidE8sVllc
-BTBRpl7bH7ZYhEsR58NxYYs0gTwt7Pn0hK5TJeudBW/m3JPYRaEqLNbT+C//
-5npnUm6Q7Qanr1CfZ14sQr/1v4Ijeg2Z3sH+LH8MXJQwO9/thtYFeAyRIzIX
-fSP1hjLYglRX1DjNu6HAFdr/I+t6R9AV4rPEiyV6aNVbT2EePxFMhueaDh/j
-/C+YPfvE
----
-eJyVlt9v2jAQx9/5K7xMe6sJlZjUpoC0da02aRLTWk3ao5NcEm+OzWwHyqr+
-7zsHyo8U15kfML7v3Sd3uUtgMJhUthYz3IDluNVgGamsXVD40/DlNLpW0oK0
-9H69gIhkm9M0svBgYxd6RbKKaQN2yo2iFxfvL+l5hCBj1wJwf0PpgJBU5Wvy
-OEhZ9rvUqpE5zZRQOiFvc1xFcYU+uArE04LVXKwT8gN0ziQ7Ix80Z+KMfAax
-BMsztBgmDTWgeXFFNpHbWMP/QkLOzxcPO2Fjd9kkRCpdM7G9mOASaAW8rCyG
-jA9C2vWc4AjXeORingY5Xw5TJiVoLAar2pWz9WPM+W0j27WquAVnXLA857LE
-K7lTzXTJZUJa7kHml6N3O8tqm1qqRO6Mx/kOW45rA2WCl8jKsDGgnXXFc1uh
-z8jRntAwoBRbET/3JGUGiMUUsGtRrrIVl65l8XYGXLNww2JJJpgx02hTczS7
-dkcwkxg19MBJ0VBMo2xjjr+qcqyHbiqiWft9ErPZJNU+1/gjMzy7dU2xmPph
-ZJIcayESjmnByxutVQdzIPRjNJrZ05CNEqJ8YhZuuYB5YxfNy7JeyEEeFKwR
-1nOXumqIdlMzLjypHWsh0is1/ld9nsJ6V/Rl7sniQAgx2s97pYQ5RuztPQg3
-S3wAX8S31h7Rd6CX3Qp25h7x5YngMhw5T39B5huujhhkne5D7y58a68iPcl0
-1RDtO9TK+ia0IwZZSuDbt3xl5E95hKnKnurc3h4i3PF6IcBzwzpikGVz0NpT
-XkfswVKN9bMOxSBrbYQqfaxjMcT6yWrhf8t31T0tbn8SJ+0fntk/lxwfRw==
----
-eJytmeuv2jYUwL/zV2SpJm1ScwkQnvdCtUerTVrVqbeaNE0TMokJ3pyY2QYu
-m/q/7zg8mtiGkIR8SIRz8st5+fg4tFpPK5nQGVwwiuCSYImclZRrD/+zIdup
-+wNLJU6l92m/xq4THn5NXYlfZFs9+uiEK8QFllMimDca9cdexwWQkHuK4fqV
-57UcZ8GivfNfa4HCv2PONmnkhYwyPnFeRXAsl48gA8cS8N4SJYTuJ85vmEco
-Ra+d7zhB9LXzE6ZbLEkIIwKlwhOYk+Wjc3jy+Kwg/+KJ0+msX843DuNKm4mT
-Mp4genwZJSn2VpjEKwmPBLlHsuOkoA9H4KtnPrcisn1YoDTFHIwBq87mHOUQ
-UnLHJ7NjtyISq8E1iiKSxvAm9StBPCbpxMm4Oc3H/tfnkd1RtQWjkRos6vuQ
-cVQYPERJDKwQAoO5Gt2RSK5Axle0zzDQ8jwIRfsUkwUS2JGgAkTNjVi4I6kK
-WfuYAypYcAFjnZAiIabuwWZ39h7LFYvEUxvugQRkCsfLqZtJYdH+hcUBV+cY
-8weVHK/eK68MRu5sOnW+yW5PJof73z610expwS9iIPGWJN5wJFke5vfc2R9/
-nmF5qVLkh41cb6QsKNfpF3hnkVLY7yihF3TsDgtMXbIUbXiwHxSAN3rwmoYj
-BZzWV9HqSg16uy8vxTooAps5cQCRhklY1YsfGZMGK+gWWV+EaujVyVhEki2u
-PEvs2lmJFXR83gvKYluMh2B4SBnUjxNWky1l//zBxu13dG5Orom+J2705t4a
-+ya5is7Z+RNjVOSgPcjRkCUJmos1JTKfDUfh2nNJkTdCsmRO8RZTUW9WXasp
-40tvqFMALb6BahDhkEV4voBbdXxjFtaBO8MoXFWddtbyN9ZYlXJB02t4YM1p
-duce6nX9I5KdbtZQ1AqGzFrSjahj+EecMImt3gx0qiZbyn6bIEJt6GCko4ui
-5eWGJGuK36lmUvcF5NMyG/9SbYrCpfDvkSChjT0MDHZRtjx6i79wKG1sf2yw
-NeFSuFXloYG9hyP6J+qcZUrW9octm89ehvE6vYw5l0Fd6LSrzmGTA51vTNkC
-0caoAcSFiDmHjuDNXTqOng1YoeGwQ2GeZitJrR7GGtyuQWwQ2IFv0BrubaB6
-UIai+UtC50tCcb01+hJ9mKMLyWE3evceoOcf37FHugmVm4Brr+nkX6PZcoft
-lko8Fs+J2lCn1efbr1nxSG21K4AQp3h3JuqiDVa1YZFccU2D8zPm2yKyX0Se
-ZWq2zMG4yKvYLpv6BXX1sy4rWmhuj8mzjDDnNov9bpGpSd5ChnbNSh4Z5Lxk
-g9W1VwRXXFPtlVxzbYUy/iOS+B3UEWuP6Bexhmx5Hlwid7RcqES9sh3VNK66
-FTVL1diYArUXR83mCl08oxQq8CVnDsZ69E3xJjsFLWGr7hOukLvNyHB+u8Wp
-zE/bjhGvTKRexMByltL9PN+2N+hnoJyeN4fiPp+iemM7s9EHMzB7jbj6H6J5
-JwyViUNYt/gu5gY9A9fE0j4koOqp7/J5AvoDkS0/d9r3dwYZEKJbq2TYvAfV
-UXIU1vtoaca2a+BuR1m+P0Fst4iS6PB5q7BxqvABygLuHsGwfB3Y19Ht7A+a
-p+zvt9n/q9UjAw==
----
-eJx9UstqwzAQvPsrFkEuJbaStIaUyoYSKBRa6KH3INvrWESRUkl5/X2lOG5s
-SHrQQTszO7MrRaxxG5lHrEFe5REAc8JJzKfJJEnhQ6+eDLx+vTPalgNhg45D
-49w2xp+d2GdkoZVD5eLv0xYJlO0tIw6PjobuL1A23Fh0mbA6ns/T53hKvCVt
-PSNWG75Bj3uttBmZTUbjBxK8vNsfZvTBY9N0NH70J52MLowrC6wpM1KbZS0k
-LoWq8JgEf+IZ5/gZefOIJaA8u7vc7VJKbu2wTatbBOA/pd9Qo6uBtFV+noFO
-yWg33O1Z534Ps96cF5eLTQhPZXigpSkGLpUuD0LdlhWSq/WAbfXOlHgvktJt
-4TqrLxa6OkGx8q+lTUYOjXBI+gSAhRTlGpj/JwbrjAQ/2ltH3qBBRnkOtTbA
-QWkVtz6DLns0VmgFugbXCAtbvsKkH4SGJF3ya9T+FOGbhR/+C6Tk3zM=
----
-eJzjsskoyc2xs0nKT6lUSEpPzs/JL7JVKs/ILElVsrPRBwkDKbAaAEOQDsE=
----
-eJytWmFz27gR/c5fgarXTDtjSbaTtDlHUsd27Bt3nLPHdpu5Tx2IhCTEFKED
-QCm6m/73vl2QIkVLjixfZmJTwAK72H27+0A56k38NB30Jkomg0iIntc+VYNL
-naoTkZrxO9uxw143jNL8VHkpJt7P2urXXM/7rXOTeZX59sNyploiDp/6La++
-+S7t/VHEE2md8n3tTPvDh/c/to9avFWqs0dhVdq/98tU3U+U8mJi1ajf6nS6
-na5NTNx2NNWJnWsJDwXFvvx5qhIt+y62SmW8Hx71zNflvsq5DKMtkcpsnMsx
-pv6F0fswyuv+1G7j1yjPYq9NJmZmdm4S9dfcpn8Tv2NGiJm0OFRnZOVUuY4z
-uY1VJzWx5AV9AVHI/Q//u912mzftBr2DqNcNvu0NTbIUw3FsUmP7rcVEewX9
-Uc/LYarEQid+0m8dHR7+hazqeSviVDqHk5Dv29Yswngy2LQC8qSW5st1Qz1u
-h7UjBIVCk7qZzPrHgx4NCKd/U/3220HvjMPd657h8W7Q69LsoBb7ZLWzTPU4
-67esHk98q7QjViltHOts3D/kTzOZJPTpmBeGf6WB1edElJa6qUzTuq2DW+kn
-JyvV9TVblzwxuFjTXVO8yYytW342iR5plbzQks/AxGk+Fkc/iuOjk6P3J4fv
-xO2nB3F8eHj8rHX4RB4NAyzJ8+VwuTYsWo0ObYliMZRZpqwgwOEXIRH4SvS8
-tDVRAZVALcI3ORocdQ4770VPVnnHksp1r9mdlMCtAT/3unIgTm+vxJ0aKaRD
-DMRgh6g3G0RfVBqbqRLeCD9RL9zPlvt1oocJngSSTfiFEcVSYUaVzAErGAGv
-wsyVnWu1EDJLeJTlaUveaMn7pNp5lYg8I4cQzB2LnxdbW+VmCmk/V+myw/Or
-bR0SBo8R7Zw7RVa8/Gyky8EzkZ7OUjVFEQklI0EV1ak7EAs6sXSV7a6YY2Uo
-thOTwOQ5RjjZvGGD5tJqk8M1w68w33WAhlkIxQM5AuVLqG+SdDqhM+ylXbDH
-uXyqTkpxy1jTWZzmWMGm0xQNh72wbN3X7BPHZyo9MpVfjaXCH6uZZ3U9Ge3m
-o9LuyTGNiWuFODjA6jjo393XM2vmOqHgOtiTLUXKW8HECHVhjGJEMxDQViUd
-OimPFVIEFJkJYwESgAW9is6WUbEXVmaPGBsuoxlcbrUHTsjHU4NFiKqxXqKY
-yrCX0C4gdIISCcRpOKRcV+I04qWpfgTmxAJ1nNYjc5wiK5YikeiwOKyJtSTs
-LrSfYKPO7m6t3MG+WMilIwWIpAegdTYydhpwOCw8VQMQ+YZCTNbe5H6We08f
-J3KuVqdEP4RzMA786ngC0+08OL+QAEiRWhOTwtmn5ZmGKjWLgMXVNE6XppgR
-aCzGsqPZf8EKhCRa2YCd0FbIbBTc5UHduBjRwx4UOJxzKt2jMLlnb8JUr+M8
-lTYKtjNW01SFZo84BxDUPHC2hMR0qLMVRCp7XQiH8RTd3QMyUtLn2OJAmEyx
-uQmQGAcTA94i9hHMZwwo53VW1gpGLSWWpFjCGOkBNIG6saQFc+1ydObfCD5J
-hEQc6TGUrZLr7eCTGsk89VWCva2KRVLMIU9W+RCAqm2FXUoDuINzpVE+Pl2c
-/fsn8Sb1H8XVz5c34enL6d3P4eni7u7mLjxenj6cXq8KDIw4z5030ydm/WJy
-9lHA3HpG4+MS08EpByEaNI1spXC5eIIy+5JcYQDKHHbA3TFBi1yiEaaAZPjT
-UYoHt5CXQlUu6oMcURrAJMAqnIY6CmhDIIc1WN2mCJjiNF8VNiYt3TJk0hv7
-XzssTHw6x+xGDiLkb9lBakE+M+hy0i43RbnWVdk8mRb+PACV8YPT62vQCT/g
-I9LAzeVlGAj5najMeBWhWTHuF2G3VWUFjNN0VXItDWTAeSiUaxAK6RMVbbfk
-C+mGcozGgyw1C9dAG0wNYGouckXYuISgYdsghpOst7QcZ0bGeVrLykOCm3VH
-MCpUxj134zmjsnOvu4uWIdOpsIxWC1FN0Ik9cYyq4THZuCnJRtH0Cv5HLJUo
-5rwg3N7MWoNLeLYozoGQ8l1gHUkpzzcxFEZL9EQVs9yuqCqudV1RXZcpRaqn
-puINIi+y4pIb1bNWjEqR6qlpxQaRF1lRpSASeqvrX5rEa6pL4k/AuLUgZHqG
-FD2vCPDOVKgAUp7iR6oHW9d1A5Tqy09OwhiXxba4wk3ejmTMpLOAMlmNXb+z
-ddWy13ZfDRcKTjMRYBHV2x0VNykKyO6mbwWTdX2r4VIfKrfMmBQWQOD6gYpO
-rXdHXef1UK6pq8+UGqNS4wpEpHLnYK5M6nI8EVkomatM01WohMer+LJDMbOA
-WlztG9WIFfWDKgk7ouhhqTGPVA6f3MVcuBQYp6Ly9kbxZMbb7FjHgzs1RVsp
-2fjreH9gRsSiiy6Ng6FpR2QZZjOF3mcfO+Ke22/UKJpMYDfVzTBR5KzY1HiP
-B1/Ax978+cPx0T8+OvGToQgDx1eZg2X/3OdUEyLSGQgfnJ5Rqw5kmHsxemeM
-iwpIUY7GDG8viA2ODZUJWkJK0XjDdYLiE1LsoCQ1sughEdGXRLDdf//I5y3O
-wEEf40qMSweZsYIDaeOLn8OlpyOumDPCwxkoUwEGNGykMu/ANyA8F/1fK0d8
-AHILk4P3g64H4sgQY2JI3qVNiG6ByPBFLJ/VGNRVoL3wXOaJwjD3VcWVgukz
-mnKG5s9NV+FmBs5cuPqAb1zbeSH9vA/BbpbEMMyRYX60dYuLKZCxpfitzzUu
-vzdMq65wMduBB5zmSDBb9aFrhcA/GAtS9f1+9h+k8VoX++EqOWnw0UYaFOA/
-mIujztEhv8XqHn7oHh+Kw3fh7VaEm/9E5U5cfJuJH7Z0tm6i59XrzvprwveN
-l5+l4eX7T1rg8iG/YmuhaPya832ICo/boIpfiNXfehHS2/QiCHs3eQltsvr0
-ZJa4v6kJuCcSjl7oxNt3sCCxOOO6mgZzqPjJjH9lOzCZpiR3izrbQ+NGH1qu
-/P4HeL6kI5QEn02SP+P+MP29RlfqoS8C6hRmaEV3EL3Jhm72MfxEd+UXZNv7
-8pl0Om4QgQ37n5ysC+6tL3T7C2vNc8pqUq/UVGccz6iq6Mdeuj5Jr+hi0ihi
-GxU+kd1fa3gFsUv0mqJ769xUqzdqfFq499K3q1f/GI/u4srX+/DqZpcT1aT2
-1sQ/H4wB79quqBJ6jZ4L4o3Pa2GR1+ioE41tSirWsa+W8fdUjF+x/w1/87AL
-zhqS+2vcAWuvR9ptaKy7HKwpurfOcA/a5XwNyf01Blqya1HaJP4K3cZ/F52V
-0N567vk7t10C2ZDcX6NPlLW7OLQh+RqNoJU7aqxL7q9x6UAwd9K4Lrm3xl/k
-NN2RAzVFazqZlkZCROV35cVb/NpX4i58Y97r0l9q8B9u0J/G/B9k2cc1
----
-eJytWP9v0zgU/71/xbvA3UAiTbuBgJJEgjHETqChdboTOp2QkziJIYlzttOt
-h/jf79lu2rR0JVxWbW1sP7/P++aPHY/8XJVF6OeUJOEIwFdMFTR8wwo6gyUp
-i5hXKcsaQRQXYxH5nhXQoiVVBHKlapf+07BF4JzyStFKuVfLmjoQ21bgKHqj
-PA3zAuKcCElVwCR3nz178tydOkZVwaovIGgRzNWyoPOcUgW5oGngjMee/vNE
-wmNX6tFxLKUDCjFWqk27pAkjgYwFpZVRiY+sVl25z2RBbK8DBamyhmQ49Dv2
-zm2vmfeL6+JP2lSxYryCmtenPKEPGlE8hK84AlATgX6NU0FKKseSNyKm44LH
-xEwIAEVR7hv+e57rGqWexQ1Hvmcj7Uc8WUKUxbzgInCuc6Yo4o98RaKCwjVL
-VB4408nkV22VrwTEBZESPdHhdwW/tv1JuG8GymtYPd7Oi1jm2rkp5kVnp5A1
-qYLj0NcdINm/NHBPQv+VSb7vvcLHy9D39Gi4vxKSNQgpWFYFjmBZrpzWpJgW
-GiNmVRZMTKsmSaJbx2ai/bS2btoJtEbLkhRF1+zwA1H5bA3dnXPrlIJnj4V3
-yIOVEm/Lkn123YrxnicsZTT5SdP+pAm8JwKmT2E6nU1PZpOn8GF+BceTyeOD
-1mFLh9h2GEkz3na3c+2kdW8k2gqHiFQVFaCLEX90lWLtJWzR2ppQW7FY0ZjP
-fBqermKH6QOfbC1OM4VK750O9FgvdCc0z75HQixMlR+c4X3E1Jx2U9NRMZvt
-jmqluIqm6Fcdjq5yCrsS1gesyYJfS+AVBcUBWQeaGg0Z9Td9wQh8fPn+3RjO
-FTAJjaS61Esu1YjekFgVSyDyoE7vdsd2nQJSJaMc9Sn0SSK3QEqJagSVjzCF
-tfZXmIwv4zRDmvnObfzcgxy1LEHmXCj9uBL/6yjl/OhvnBURsSnOe8i5dUFi
-KoFVUpFKP/EU7n1F8W/YZ2zRIbBpxMkrhch3JPmkF9WnFOnigdY/1s2jh9pY
-bahOz2UTLWE6fqp9w99nSDvImVaZja1mU0nFGN5SRH9k+2JSQURtvBUfteuW
-/lzl8UZpZ7QLEb8Zt0EMRy+1GWhjTivJFhQwl2WNhIXC5KcgRtbadRI0/2Od
-1IIvWIK2rwK40i8hYYLGmKplx5grrv1EOZxowGbb2RZ6c0XXj/bz2FE33FeY
-8i9Sl/vLKhEUa+ltg4FPsThK8kUvXQNTcykZMkJrRX4cXqCdAs6rlOPaOrba
-/qBCokczuH+e7D0MPFpgTqeGrbzJiadZ7PmKxVJMOIezmxrur0A8ZJfNBtfd
-DZ7sbHeaeTu0aSbIJjLE6YSXNh7oFdad3HDfNs11uazCteQWTOoNfp1djGZG
-xScRrXJqo2t7TWptB9ZQ3ShFhYfLQ7F43d7ShAW82KvMDuzVJ2jJFd3o0/Fd
-R+kO4nRqC9esPNyemgPBssM9Kr+F0se1zjJAJeCFo9+qSNYv7DfSmyHhg8T/
-ikgWv+GiJDoCt0LMZtuCQyAtYZ4JwQ/hdaSGg3W5/wBaZ3f7n3CviaL67HbR
-1tQBzO9kBwHTlDSF6pPJXdEhsGclYUUfZ7cFh0D2De+dhbZPTO8kmOcXffzq
-SA0BM99XHF9BDmBthAZCnS3069pBICMyEGZuuP4wzny9HwwAyn6Ekg2DuIg+
-4ymlT+XtSA4C7VF9d1J7H4ypVR/3dkWHwF6a7b6PlzuSg0B5gaqzvqy1T3wY
-PFc/rNeN0BCoOdMn7D5J3ZEcBKrw5Vn0ieyO5EBQPDT2BO1KDgJdSjy/9gLd
-lhwCuv9eYC/q3ksCC2tOuPgeNWqvPkqqcp5A54ZD2gsQ39OXcuaOTt+J/gfx
-gukP
----
-eJytWXtz2zYS/5+fYqvcWcmMRdpOe+fIkjrNc9JJYk/sTu7mpnMDkhCJGiJY
-ALRO1+l3v12AL9Gyq57iSWwRWOzzt7tYKpjldiUXs5yzdBEAzKywki/eCsmn
-IFVmuL7jOtTxLPI7RLPilkFubTnhv1bibj56pQrLCzu52ZR8BIl/mo8s/4+N
-iP8FJDnThtu5MGpyfv7di8npyLGSorgFzeX82m4kv845t5BrvpyPwjCif5FO
-VTIxtBsmxozAooyatXte8VSwuUk054VjiR9Faft0v7A75ldHIFmRVSzDrR9x
-9dqvunPfTCb4Z1kViRWqgFKVr1TKn1ZaPoPfcAegZBrtCpearbgJjap0wkOp
-EuYOzAFJke53/B9Fk4ljGnm5i2AWeRfPYpVuIM4SJZWej9a5sBzlBzPLYslh
-LVKbz0enJyd/Ja1mVkMimTFoCbl/otXar6eLXSeQnsTSfnMuFtnEn11iXCg6
-0pSsmJ8tZrQARvyXzyfPF7OXLuqz6CV+/LyYRbS7GEAgbbkzKbJiPtIiy+2o
-0SXhkpgnosjmJ+6pZGlKT2fuoP9plOyeU2i0NSsmZV/fxRWz+bQV3T/z4BFU
-+lsd7VS9Ph1tqbBLoQeZf1SpWAqe/kmdPiJCfmQFnJ3D6Yvpt+fTk3O4ur6B
-s5OTs0e1wyfyrV9wlG6/WW7O+kPtaqwbTEPMioJrIPjhH8Iloi0Vd42uKfcY
-RQxjIPPTxWe+UpbDB5VlGDoE7ikyLhfBF4ZwsQoqw2HGttLUseIm+kCeDynl
-Rwv3eRaxBSgMAjAouF0rffs9fFJBqRXqufoGfkBWwYOsIq/LZWXLylq+xXo6
-HWySrGAtpATDixSENWTDmzvMWUN6s8dF4e9rj5ctIe0ysQ/hJudoPhoS1KcB
-iwIwA5yZDUnBKgdVCQw1IEfhjs05ljhjQS0f1WDotxDDiW6f5WeLn5DT58uP
-VxiMMx8M1APlCgOqwLxjNslRjqqyfOoIaUdTddY8bWJmc1yklBBYtuC9JRoW
-vP4cT6S45WA2xvIV1hObg6lKrmPAX0ulV6xIuDMo5uRnWHJmK7QohHdorBPH
-bGcadYZpFOkqRo7VchkqnUVarcrR4v4aGRp1hva83VjaLpG+RqxKucFQ3grU
-Bx1KKMUtrKPoAb6KeYpGOZ2m0zqc8IHMY0FBpsj6xDFsVIWOKyATd+hICy2O
-zLELIuFH8jsunelGoafJayaQPjGw86DH0xoAScKNEVQEt9HuDhNFghUBYxGj
-8sEAuMgZyRTiBNNUGdsG/nnnD7jmtkJv4ZrzinskjxDuQngrtLHH9blSu3JR
-xx/Gg3o4JjIiqXEESyWlWpNJaLdx6IVOcIHdLoWjJ+dnp3+7SDCZNJPu6e8X
-pDj1P0laB6XSFl7gz3Rbjy6xCr5+Oq5ZjI9hbJOSMIBgablMicH4WV/FLxwQ
-gqKsJLMuUuTSJmqqjRqlmg/xQD5Zjd3Zx/1frfyfYevnCWSaxcgPLebrTuma
-QYiNDMbGpihwDLt+nqCWt04n9DTl3F88dWsKAvpexWpAPkTELqh3uzbHfBuA
-/ZUUdDkJvuS8gCG7jOLK2nJ4TFq6SonpvWaaiiVpvEa+nGzu5ZytY23oXlfw
-xLqCgplQACKeY2k4vicu5jm7w9JIdSVgTY46rdGwWibhrVPJFeg6B2r6pxhQ
-JE+pwokiyLlgOskFpnCdgc96iTJUYZAue+RHi6RIO17t81a+/FS4Yom3S4GI
-7cHvvhdSxU1Re8/iE9q3AVdPrUXtQ8w91nkXsw5dQL2idX6710kJ4ZJctBaG
-H98DDVWzmLcdCHmaiknXs3yVrrQgIG0JgVWFuUvHSp64m0247aZhC6bsGCcO
-bZjDU+Q5P8rsxcPJ3CXAc2xkFPb7aVCH6R1ldZOCQ/NcC5cOG4MMX20o5boU
-d8/jn5sdn7u1yv1gflLrYwQ9L7hzhOOS4ZPGNNjOl85dBrusTCmjkCBR5SYM
-XisyyvYr6S4FQ1EsFRz9Wil7cUO9mPovdhFjcB6BJToPas09TV/TK63SCluM
-b+IeD1R972MFs9QonN62FXj/6e2l12IKj8vul6t/fPwAONstRVZpN+Q8XrA8
-7lx+1L32sgfc7T7e0WKBGHTmuLL+GoJ45nhLpPJAXYiw23YxLAl4X2FpvXgf
-FEfSXrjM/nfiTCCQukt0vWG69jb3DqeP/hM4VLuPD8Ha77ZMwzDse+41j6vm
-+lx7zF+4NE/UCi1K/b2sydXahO1m67TvtdoYyyPBLKhVpz7oUe1ZcVfAe44m
-gmGg6C7iak0IL5FfUNeD5jb7Zy/3De4CgUO/LrriTCpp7u4EVPfqCz/i4Jpz
-J9FwP2jP4sWXXiEM3rlswo33hREp/34WxQsM9pZWPq46rrVxj27Mw2kDKyys
-lOYBpVtTyyIceLopuz+ZfjeYuWkY7E1y7oCpYjfLjbDN1HfqJc7KphvHtiev
-/nhFEcULtqG3DK0JPtoDAyK/6saYekHEUapjqWh0a434Cma8amYXBAgOtNUj
-tvjtPTDRiKJXOj2AIBOIFsFREZvywv+mywqSPsozesmMSN76bskfFjGdbhMe
-ItKXujdaq8fk9agOF0Z1dQ9pnuwQca+xpdH7ncEovVPmPdqDBPMlq6TdJ5JD
-0kPEvlkxIfcxdpvwEJH7uveruXYfn34VZ76/3MeuHtUhwtzvG6WkeURWR3Sg
-KHe/e1yQIzlQTP/N0kNyutdMBwjK/khKdpiIy/gX7Nv7IG9AeZDQPdD3VbB3
-5VQt9jFvSHqI2J1vOXdK3fHK8/8WirMK3hz2rVq7yA8Tr+wf4rUjOkTUNb1J
-4fsEdUB5kFCLdza9j2cHlAcKxdlwT6F9yoOEbgxeV/cSuk15iNB/spXc8wo1
-JO2JdTdcnN+C5ssS/04Xet+JGP+VCU4hKt247/HoC9P/Aasro+8=
----
-eJytWm1z2zYS/s5fgXN6cTIjS7GTNq0iKeO8uHXHaXJx7nI3nUwHIkGRDUWo
-BChHbfPf79kFSEKy4qhVPLZFggvsYl+fBRWNMjsvJqNMyWQSCTGyuS3U5Cwv
-1FAUejZTVb+ajgZumAjmykqRWbs4Ur/V+XJ88FSXVpX26M1qoQ5E7O7GB1Z9
-sANa/JGIM1kZZce50Ufffvv1d0fHB7xUkZfvRaWK8aVdFeoyU8qKrFLp+KDf
-H9DvoEp0fGToaT825kBY8PBL8/1cJbkcm7hSquQlcZkvbEj3q1xKN3ogClnO
-ajnDox8xeulGed4/jo7wkdZlbHNdioVePNWJulNXxV3xB54IsZAV9tVPKzlX
-pm90XcWqX+hY8oSxACnoPuJvMDg64kUHju8kGg2cfkdTnazEdBbrQlfjg6ss
-twr8o5GV00KJqzyx2fjg+N69f5JUI1uJuJDGYCek/qNKX7nxZLJtBuiJLT1v
-5k3z2ZGbm8IuZJ3CLGQ5PpmMaECY/Hc1Pro/GT1hk48GT3D5ejIa0NNJaP+k
-XVoW+awcH1T5LLMHjSCxKmjlOC9n43t8t5BJQncnPNH9NBJ294loRDVzWRSh
-sJNX0mbDlnU455NTIPGDanBdbj91sMZ/mzSfXPmFTvI0V8lfFOitSsQLWYnj
-h+L4eHh8f3jvoXh1+Uac3Lv34EbpcEeKdQNMyc+b4Waum9SOTqvGm8VUlqWq
-BDkePsgj4WdJvmxkTZTzTngvrJgdTy5Yawa+eowVF5PID4hFpZd5ooTNlMgR
-3VUqYyVSXXGCgI0xKkYyCkOXmSgzuCCD9CkNHEz4ejSQk754owViVlolpM8y
-PZHmlbHw0LmK6gU822Z4WCLamFVu++J7raHqTOexMuAZF7WXiql0ytfMWdSG
-5bK9SAqjqiWmMFVPYK3NKSlcvw8lLty+rwvH1Im4fevbk+NvHs1XGOXrh4+G
-zbSKTeVU1i/V1Z1DJju8SwT0kFY+TaE9tziJ1+09tyI3wlhpMvCBOiXy4kKb
-3OpqBXVBSC/JXCKBqKhStsrVEsTSClmuhM3naqswP3tB3om1n1tihmzLj+Aq
-8ftQzHML9RcFRLB1VYoyL0TuNOWFgKyltrBLXSZ9cVpgVyW2tFTFqkeksoye
-f4gVOxcRw9fyCrJeZYq2VupSfcixW2SgbkV4j0KKjVXSI17e/W6RmHCKuSxh
-e1li8zAu4nCr4kF853CqZ7Vh3bd7rWQObxQ/wYzPq4rcKSWdJ1qZ8tAKlqbV
-QHYyeSHLfFEXjZnc6t7kRrys7aK21gXLyXqwYFeVFbq2zoNLTdeemg25anaB
-/AiVOEcN9othlDWbwdUhJ8qmSKC72Baw+0rMKQ2t/BQvl7nVsYhkVcnVhnKc
-lcebDhFFpBpES41QuFKHS+X9Pgl2SOIfg1ml61lGNw+aBfsdV6xNZD36f9I+
-x07uYOA+Dz+4244rGWe/tJPFH3/qP4Xup0Vtso+dGzrRW/lA/3UoxkORyaUL
-YyMO6elh+5huHx7Cocyiv11aN6HHn98crknsJnfSVmqul+qOn9E8DaLlVaGk
-UbCU6pJgy2zQXv1STX0edEVqCwlXLDkR5Oo35dNBa54wsw6H7TCvQllzrisV
-ySm5Y+CG3jvguhc+gb9ghwvcGTmQfMZockUOAqQZ1PXKSmSnRZXrKrcIdoRi
-mxiIzHuuy5eS0l3kHl+pKoaaknauKJC+Cqbc5q79K4nUc/u3WttHbzKkB/xK
-LG8M8JuLrXalt6evf3KU7exUWln46afi7PTN6UUz2VMGFnwCGPfecFzKwmgK
-Tk5Lm0kmEOyPDclo2ufF+9gukqhpPUP+iVx+Ij1TllsUecwBaJDeSZ1ylsdM
-43MxfLouLEZUmYRboAoBhnNZrZAvUp9JSTSbwXRkgynt0qU8n8ks14AYmIUS
-UVlA+qhLK6wPcgKej39ssL4451oFw6d1wU6WaBKVpK8to2FZrCL1YaFKg5Ig
-2H+McyBaDqsAR3c++K9aQehtHijNe8SB2BlXUH2B/JUvp7FcECqKUOUb9+xc
-mDfzSfs+ZqsA8SMvtpPJjo/XPewxkWX6SrgYYz97HNrFbc5FheHAnjpnk7Ez
-t8nYOIbgCGvqc8GQaK5YS1nUBFGc2Vg22rMuHRUVuGA7W513t5U+hnXxLfnB
-Ke+VpL5cqDhHnF2QMs3jzngjayenFxfApdanM1y8PDtzA74A/gbdAMSg3E+x
-HgGKrVHHyTtNH4stP7eErWq4eZr6dALBwcbPgmPvPAvSdrOavAPTWU6EXqn+
-Z3x7hpsXPtVB7kSleakAhe60CONuqLantbF67tXE+vCTiTzw+ct6AdBHTucj
-dKkYAQAP/5U4iDj/MBh2jHmXZkOvZ1qL2wU28gT9ib/4fQ2tkhMoMadGT1A8
-x7a3JdkbjpMg4xPNfIsRp8SHFdmWlXW93mrSTSg2idctsM2e1wK1yVU0tYvG
-tsUR5yWSRA74Gauu2/lJV9S9oaZ5lNohU4+KCKYbfw7AcB2WgXu81tp6+CnO
-gX2jDbTYuFiXdQ2FDTWTvFfuBnTJTQDD7tyJx6DQTdZpwHq9U3FrrQTVLuwH
-eiPMlnbyT4G9gb8DMXvXeicT+U6oWwIpUlfUOdJaPFqt2HMTVeTznGrUdBV5
-4MEfT3WZ5jO+ARNq3p95UijmDHVCfZDIeKrXNBPNSqTjyA2kEtWNk8VwyLmC
-sGMVmKJpwZoAYZFIN63kETmDJ4uR6T1hrxmbVZiykO0wLeAfBaNXKvI9YND2
-FPl7xKO+oecjhsOhZzEc0t9crcNFhgy+vNMVaoCltloTfFUOBbgzNANPzOMs
-7HqoBZDRGbkqY2fMkkudJ+QaTSOxBqn8IQIdddA5xdIf3li9OPDRcAtlvOAp
-7pQBfwQmrjJdKKCMOMsLmchhqNJrO/Rqi6LuoOJGluvsfkS0XzPs+lrNYYh3
-eoItlvTY+DgaWJFWSBm0/65z7m1viLdb6V2YKVooLU6TJEdrCyDX5Yonq8ZX
-ew1YCjomcsDRdCLdRKSYKZ14kLhzJUuPyDg+I8ZCLuob5GlohOxaFGEct+mk
-dXQ+RcHVglURTRUaIiDOHuela9MopjqJqAqDRwqm3cnHupJSrQ/f9Zsp6JmY
-eK0+bPbFnKx6QrYa4+CyFR0XeSeOM1mixItkBR/IY0640bT25iQkXYoOOuqF
-qtz5qjRbKw/3gFa7E5GmCjfQ8njS5bzOdjcV0kGQy9c6q3Ah4EyG1WisvCnY
-TjCXU7khiNykfSeTE35W6Kks2j1QuBtEGQQ+LVfN5LYFJw9KuZebToLkfa2s
-sLnZg4BEIj7OUWi31iB76K+fW8rqNfTWFZtuouvFKN8UysI4Lk0hKDvpZY0C
-DtORheWKmwbnAdtPrlzH5DVfgVGvPdFhpfV8Uf3Zpwki8eK/o2OS9aduTvM8
-aDW+dxZgHLYNdYkrOpIaqfkEFNWKIcpogFvyMWQxdNOufSGdGY7k0oH+vniL
-ikFFOMT10JOSJi82D2TW9tZ36h+7hcIA48RIKaGu2MtNk/amKiVRSHuaG57m
-9ElvJqJoMyhOgqAQzzQdimm/z0YfoaGtUUUqOLeAFFGYOyjiZEZTj7ZToRqV
-UEqxCh2oQfsEGWukPvnenciS52g6IktFWVOOm/4KYBkE7X9fXAiHJWoX/F3s
-rh21+DCOW1J97YwlfNYcrlDHKstIL+lUWF2RHMQxIM3LAGKd2zZMwJv7gYZU
-tSeDhJawiDuoTXWB+KPNesAjEOV1kURsyTTN4xzK2vAIIfr9Pn8SEg9OnccO
-Ii8kV6lV14uwBfzTZ8+f/Pt7P87p1o9Tm+OuqGPx7xaIQZPWaZjzOg0OwtGA
-uD05onFjE9wz+dr4NnrjJ6DN64mEsiV9oqfAxxSw53dVri9k2pV43JewcGy7
-ZvzWu3X8s4a3F5rHBu16pPGNIxRVqDnVX3Jg3Z2mNU2rjmOg0TnyaE52pcxl
-XPeKp9QI0rFuGQGbVTlG+QUDLVX40oFL8hFJ7UNz6E/TsDQlHfJDd9jLRRoj
-/egHfUW5yDVeW8UzTj5XO7cvg5rscDFVKVqIs4YJ3PzMHxY2Pgvx4kwBVRE1
-sWvGHTO3PBAWeT6T/IXXPwCr8Xs5U0FOeslZ7LxMtU9DN+HW/0B0pIUOQH51
-ngQvq3tLcdw/ecCv2Ab37g/o1dt3/tVbCkCixfMPC/HV58HqaQ2QUXVsLhRq
-3RtdoWw7X8T9HWnv1rPY9FHorIqzvkpqdrDt8HWQ5MvufW/4mvTrjbe/jUTN
-C2CaYOopv1s8mLymd+/0RoVeXZktrPhNYPi6jyLmCGWJ3ne3ufPvHVPzEYN7
-2kHtKHz1mso4GDN0Khi7J60KvoASnjonc+cpOqlv0IR7vMMhSsOKvpoQuCwW
-EYNJdLucmsUj9384ZP43rjl4guoft+3aJ1kMh+uE+7B0pZPPoG7gF1Dtz8wX
-2M9xc2T7sHsGbEnfU9h4/7GV5zXavRg79LyLJTdJ92H7fC7zYpfNrhPuw3JX
-9X4x1e6i0y+izPOXu+wroNqHGf9/o3VhbuDVEe3J6jm/UrmREZPsyeYSkPlG
-5bU0ezKafY7LbD8WL7nn2MXzNij3YrqD930R33vFopa7bG+TdB+2r9Vc251y
-xwblXkzRbAE57Jq1tpHvx379vOgTTMPDo7/L6jIn/L2LUTco92LKDdQumt2g
-3JMpsOaOTEPKvZiu6CtDOzFdp9yH6f/kvNgRQm2SBmwZ4aKjjZqv/vkvYQTf
-8DPuC4CjAX0Blb+PSt/6/T+uH34a
----
-eJytW/tz2zYS/p1/Bc69xsmMJMZ2e20VWTd5tr5pGk/se3Q6nQwkQhIbilBJ
-0Ip6c//7fbsASJCmHaVKJnEkvHax++0DCziarMw6m05WSibTSIiJSU2mpq/S
-TI3FXOeLdFkV0uhiVMwmse2kYWtlpFgZsxmq36v05vzouc6Nys3werdRRzST
-vp0fGfXBxETiiZivZFEqc56Wevjtt19/Nzw54qWyNH8vCpWdX5ldpq5WShmx
-KtTi/Gg0iulvXCR6PiypdzQvyyNhQMMtzd/XKknleTkvlMp5SXxMNyYc95u8
-kbb1SGQyX1Zyia5/oPXKtvK8vwyH+G9R5XOT6lxs9Oa5TtTDqsgeif+iR4iN
-LLCv0aKQa1WOSl0VczXK9FzyhHOBoRj3P/yL4+GQF40t3Wk0ia2UJzOd7MRs
-OdeZLs6PtqvUKNCPJkbOMiW2aWJW50cnjx9/SVxNTCHmmSxL7ITEPyz01rYn
-074ZGE9kqd/Pm6XLoZ27gF5IO1m5kfn56XRCDaJM/1Dnw7Pp5BkrfhI/w8e3
-00lMvdPbKEhqAjJLl/n5UZEuV+bIszNXGa0/T/Pl+WP+tpFJQt9OeaL94/ls
-vifCM1yuZZaFLE8vpVmNa9LhnDunZHr5VRHfxb1bIG5x0cfTneu/1km6SFXy
-iWz9WyXitSzEyTfi5GR8cjZ+/I24vLoWp48ff3Uvd/hG4rUNPJL7fbOfayfV
-rbPCI1vMZJ6rQhAI8R+hE5hL0hvPa6IsUoFk6HJ1Mn3uZAfViYlsGSVPUWX8
-Iwl5RAZ+NOXPk1hOAUizundG/DxUSzB9PA57aDFYzQn2s5lG1yslwl7LNzCY
-6W0pdK6E0QIeRlQbEI/2Z/cmleI/r38ciaeAKW0fS+4GUZsWlCfTvISzMSud
-lETLY0sJme8+jWSiFrLKTDkSFzk5FZPOq0wWHaKbQt+kUIuQjixTrUqj1zBZ
-YSAQoHxJ+snUjcrKERS/sdL6JIWlJMay2RHbcVVi4ejnpySZV+DGrKQZEFFs
-mCY4+ZfpOgXrxFpbYpAisH6fWOKf5Tq7GwrdXmJ1FF1mSpYKilYNxHYYGVr6
-u2LmlrJeoNvPnkBOowX4TBDK0pbo3r4EGmiLBQW3ApugcdTWrAGUjMT3AJsd
-LE2zUQqL4zjebrejoprthhRvRrpYxiqPCymHWVqaUUHs/T1HGDnnFY6mnzae
-2a85vtbQlgXEbQsZ+HEFOw+3KXF820Ee00gaNVmdTp8zzsSPDCxY4akldVVt
-Nhq0droSW4noQUQXmoywwSEMIhGFzN+X4zbxV1qLB5l5Ip4BMe7DHzVVNnLI
-HX+h4zTbCTmf6/UGEljB0baXauHGGsU7S/3hMcgcD8QxiOC/MUg8atNQ3p6w
-vtoYgNiQl4MXKUS5W88QIEfiB73FcsXAWZzf2hrfxEreqIi0UbJZCKQF4gbR
-0ELlLdRIWCkNBISVnsK2usuUK11liZgRkk00U5jHfsSsSIwYwUaWkFtz7nR/
-9zIQmsx0mzpMOG/jSEfbNMuIcKYRCZIA+D9Dp3OZsxNtc5vm1kNeY7MPvvj2
-9OSbJyV2CPHAOtDZAkFUKk6g/MqADtnI89B4GkBdLBhLJFFrTAP+Tnw0DvaT
-nCvLy7KrIUEwl5YDsUgLKG5bINuKZH7bnMVDZGLzVU0cbqbIBRRZmirZkVJo
-Haw3r9bIARni2HakPkggFEBw3rqWR5ISqmYVLf7ID89Z6hSiaAgxsSggZmI5
-zSPQZq+/RH4pZOlE2jWiFvJpuXcf1tm7BVK3h8fxBplSbHRMX0doP74F/U+K
-DLfFVO5Ko9YRRAHt78QiUx9SChe0wQ1MplhUGYe1hZwjXqSGcFzqtdqSoYCT
-hbLxxeho/mczDIiYjIzp6AL5TITwY+R7oLACuGVyA8tDji/0wqptoaQBkHz8
-InstybplRtuzToBsjaw7ep/rLWFd7XjgXTjHNxw5hEN7HUFWZ5Q50ZJjFt8L
-eFuMuFHkRc8aPagPEEZZosPKjXhlz7GC5lVOMoKD8pyLC46oYqLWZE1REqyK
-JjgZi+m63cZo8lFDeKYKRGRawOwznXPGQMkStBKpTBGeIUoj1nJHjqFQxBka
-iQFy5ohvFspKPOQY9OD3SpsnvK79+AjcRyQdt9yAXKnkLGGVws89JGdPUx8s
-/Tw0xL7lkVVUPX1EEirYKVp3QHpYkLSJ7Y2ap4sd9IH+tUWlnOmKbFLo2W/Y
-P5FWKekabVHDPTGV10RIZs58vT8G7Aqs3bE44tUtnEgjb28/pk2EhnYB+nQy
-lhn5CqPvXJAncoJPbbR6W0K+xU2Kg1kBOe+5YTPwThbyMwWfmmLH6gOBUWwZ
-+bkmrVJ8sd8dqJ9eXtyF30tJp12jigC/T0U5X0GIwvrMNjYpoa1noMmBuc7R
-4REzl79GHf/i3QuHUReC3lRmUxlajX3MK9Y5fSUTbbK0Egfraa4n8QwEP5hC
-iq0u3oOmsF4VSfYAiBeEf4IHt1ppls4f8NHBpr2wwRVal+zrLWGSb6LmOlEu
-XRCspdJGRUExhsRGC7sQiRyB4o2B15e3duNdo6zQjK2TBHftDNxGXQ4OQHdE
-6rSGy1GMTx12p8RUEMedK6jVwGRwqtFLXfHJRYrW/rwvcOLwAT6aGDPN1RaH
-STN1GdOIok+Z0gkS6kN+0REUVqIaQr3LDu7HFJbI6MU5QVg08QrMlfF6h3i2
-PKaBpqjyuR+FL+o4xPu/lU1UnCcAK2svrSx9bw2gz+Q8W7Y2ZG23xa9tEkzd
-9RNx+6ltq34r1Nq3DTbXcJCdOhqNuhGZBdJ2gHHjs6C83yjnNJ2RtXpH4icY
-dcSJKHWkOfYifJYnHVop9EH7aZO/2fyQT30IcHYuuZsIkuSsxGfF+E5Ycwh2
-kVk8NPpdyoaaIlIsYZADocz8EbGzjTLVECqDMwPneUhI05yjW9cqeIeJeL2r
-WyJO59qBV9YH9Rp/XXWP1zu0nngELXAiqFtPXevJ6VmoiqdsiUtriX1ZKLuM
-hlVGWtnr2vtwFuzJocwy47rBTB/K7DaoDVtgSDUtvYC6KHMW/N+eGHs2ydO5
-+rsgWx4PH7Et9zj6fyHssc+5qmalSU3lkvSz+oD5nvDEGFTuRLyhPEHPkcNo
-0v3dpQuZl5Qe3HgaZUCjPls3QYNO07A/k64VshJ7PHCWzi7pi/9CFP+zXomh
-2fF27JY7/LA1gN9MwkOnpgGVzY1gUk5oJGWLW1o7hUtrFiascV2Nk0PsMV3L
-Yhdhn5KslKXtUeMgg8PDYiEoN0l9ILLpPWKR3PkSjiD3MYj41KwybqeIEuQ3
-lN66AwNCLsWGxrxmik/e7jR3hRCVJxA1YdiFGJzUd7QEGx+OqZLs1545vPj8
-uSYII9d1qmy2mpZg924UJNmSrc29bDjwOi6tiPjQFbnD9lY5lrPM5tStEy6x
-YvNffwBiHYWUfvl1dPdJ6BcqaJAcj38V553ActzxuIWSCw7B5Nb0fA5NUeQG
-Ciy+3EoNxpRElkPqUXzooQS8gYX3tDWsYR/Mu9tuixXXxiU1f3bs8SBh3Gj4
-ge3jY39wCXb4DBBYq27h52Mxa5+Vn1Lot8GhrRgSJRcdPNSsi79lmQ4d0HzU
-DCKhhzkjCb3KXY7BvcQUmHhnfTFxZUe5aBlBc31n+h7Btldp/GzDZHDAcXJ3
-7ppdhetpwyveYy2WTs9KlHhx0Ydy8nAl8usu6e8wHSokA5lc0oGPatafvt2y
-aXddftNdiDAnQWdrkt3dsrMde2LxXfUEuzPhN9fDSk+SpNg5llTHYl8Le6Nk
-CJk8Z+xdR9GU7/gw5FwQYAeYimQHxaTzUWdSUJSrSjJiqtc0hU57u1BjOAoq
-N7Ya4ePqCZ+Cvse2EB+aC4yn2EGutwNBDqj23t6tL+1weElby9V/svwVVN3e
-auz1pTWRpuBGwiyoxxkPidPbGNeEu1bGpQGKaZCLWs9Ukri6AGSZsNdkN8rW
-X69ZBxYuRPEFQsoF0Xmfu1vvhh/W2ZCB0wZqfd0xzNJZAdmrXsS2uA4v46if
-br94TPuoudRwRBzjhsNba8Z3LhpiEzK9LNTQjvKbb4u6scBQ4L4uAuGFhOxB
-0901eTlVGX5k6dRlKJ9+o/LF68f4c/rd0bRVJye0OBj6KlAEkqAUkltmeiYz
-nxPdPS4w47vHElDyChgqgpSrntmZWNYzYxYBktHLWphj0b2gCEprn1VEUaA2
-ch7AtS901MU2W+fAlhpts9VMZlOqKHJRYqYim8WmMJ/7TqktDgh6r7Qe0I0J
-/fiDwXlrSCsmAENcC7F07yNFlvHTm2tx9c/Lyzdvr1++aEzhFifuLsCfmls8
-9RTBOtr6nmFkteWV1fBhQWYpOAIvXj775/d3VNeQOt3aisMpRrJLoJXoi12G
-Ddo38bdmeLjwD4oKjjzSFk06NVVo2E4MimXhLvtqZZfBwaYIMmSb5Pclj5mk
-3IFuGIPLTqqWQasfO7FB4a4gTXn5DVxvh74vIL9oF5AHrpRnT2uGat/e5ds6
-NfiygdZbp4AW6ioF3Zf5i+G6qNqXfvWlRtxoaxsnPRmS7bYHtZPWGXmfFU8/
-suJpa8Um6epLS+r2s7pIe9bkMGc9A7/qG/hVf6LT9W908wkGxEsrzbbV9Ae+
-qAlgfZlfO6iG7iOImHRJO/CW3Z7X43da/T1mjIVCI24NvyMJ7UtEYTUUkWNf
-BOnLQ/289W7DBeKcer/MxC9fJr+KL9eueBL0dTbXy869+bdTRZBmuBONraa2
-C9f0VIM+Ow/rdXg70Qgv4f/sBdkbW9hupyK3L/N80klFmB8tf4NuwZ1rFBRD
-4D2izl1YVdIl27LCqTDDvkteCJk2fJbjL0hH39BFnXiBrKupUL1mbTRs+ouM
-h7ZysdIblTzyUuU0c1FnzL5478qTfA+IoSU92QjJcmJ6kS+0I+PeUdFrL3qq
-deNesRm9OZr+C7umg6N9YIV/f71Ibr2EHNyIk9HJKb/Zih+fxfSW6zv3lmsB
-kWmY7Eb8ldIX/0yrfpGFD0l60zz3C9/Hfd15/Oc59O//OGxUM35OdjR9W79O
-QYZd9pDix1/hCy++DKTnJEfB+yALy+6LGdvK6Y9tqMEcI4k36bz+7vqRncdI
-4bkKVbRWL1Vx00vAdvTSKNRaG9XQ8EL7DGJ77srXBO3XOqnukZ3t3sPwPCl6
-yxpYIRYR8TR6kM/KzRP7czxm+ve/jnsmy3Re33PdSWI8bg88hKR1NC+LQt9H
-Lxh1OLHwydc91IKngH+S3AukU61Lnnto3hp7EGH77mYfTXaHHkL25Vqm2T6b
-bQ88hOS+4v1sot1Hpp9FmBdv9tlXMOoQYvzzWtPzs7tpNYMOJPXyhur99xLi
-IQeSuWI3fz+dqzoUHEBo+TEqy8NI2JxqH+R1Rh5EdA/0fRbsXdq8eJ/tdYce
-QvYtR/p9dtkZeRBRnWHp5b5eq2/4YeS1+Shem0GHkLpK6ei4j1I7Iw8iapAD
-FvtItjPyQKLIF/ckGo48iOiuROq6F9H2yEOI9r+a76Xa94TekeUMF4fQyP9+
-iLsiCX4NpLS/JTKJ6TeW+BeY6JfF/g+Qt+63
----
-eJytWHtv2zYQ/1+f4qZ1eQCxZDtt1zmSgDZNhwzpEsTphmEYClqiJbayqJKU
-nezx3XckJdtRHceFEji2dLy73714R8kJMjXLoyCjJIkcgEAxldPoHcvpCOSd
-zHnKK1VWSlHhiUng23XNOaOKQKZU2aNfKjYP3VNeKFqo3s1dSV2I7V3oKnqr
-fI1yAnFGhKQqZJL3Xr168VNv4BpVOSs+g6B5OFZ3OR1nlCrIBJ2Gruf59ccX
-CY97UjN4sZQuKISptZv7GU0YCWUsKC2MVrxkpVrn+0TmxFJdyEmRViTFpV+Q
-OrZUI/ddr4c/06qIFeMFlLw85Qk9qER+CP/gCkBJBLrmTQWZUelJXomYejmP
-iREIAVmR7z/89/1ezyj1LW7kBL6NdTDhyR1M0pjnXITuImOKIr4TKDLJKSxY
-orLQHfT7P2irAiUgzomU6InOQE/whaUn0SYJ5Newer2Rm7C0Z2WnmBqdoFyW
-pAiHUaAJINnfNOwdR8Ebk/7Af4OX11Hg69VoYy0kSwySs7QIXcHSTLmNRTHN
-NUTMijTsm7uSJIm+GxpB+9eYurpPoLFZzkier1sdXRGVjZbQ6zIPiqDdz4W/
-NN3f4kqtzb9n0iYDHwR7zxM2ZTT5Rht/pwm8JwIGP8JgOBq8GvX7cDW+gWG/
-/3yrdXinY20JhtOsN+RG1gotqRPRVDpMSFFQAboo8UdXK9ZgwuaNrQm1lYuV
-jYnNBtHYhO+yCR/W8wA1l5HzGlpLoAQp5JSLmQQCAXFae9ogUOlfmATh99lc
-byvdK9zIEEejhhr4JAJWKI6aYoyeg1c2kQeHHoxZEdP6HjIigSkJfFGABidK
-Yc3pVUVnR2DKoVmgQjq4mQGrlwuaeBgi9CTIhtEHic0BnRta5244VJIe1eul
-MBHfy9WJUnupOhG6B6Ke/UeKbV+L+FZG69J6TOwKoLdkVuZtiPuK97+ibIFy
-kLkOSQh1OFsZ8gq6ONj7UnF1UmAvs1dHRjUv1X6ozfwe76e4iXOm7mrK4VKz
-R4WoFaiMYdwx0wWcXV9jO5Y6gnbtcN3Xm4yCtRITittCRf6cCB+1ydoHrFMV
-wcFbOmGkOESlraCMaQlwDIPB6PnxqP8SFCtxslCpjfpz8LJ//NcINpvTtgNr
-JQMi0mqGNSaNMdZ3LHdpzSBFYuhNDGoqZqDU5ZuA4o5et6H1eEkLw+KBBkjo
-lFQ5qtYCmu3i8uePV+dv4V/QV6eXv46XME6z/mF8dm2p6FRJcQ7NaX7XFKcx
-vXYOpkxInHHiDpiuHu2GmUIenCtYcPFZwgIbrwdXOSWSosKSC4VoOHuqFIsf
-vZuyWxxjtfa6neimpzvWvO7sipdu9BtuF9Rte5sePc/Ok03HhKM5DLwXpnn5
-/WMfm9qwXze1KQJyOLst4ZnjrPrVZrzXlcq4WMGNFZ1TuKhmXH678AXF2XzD
-BYb0vnDTQQMf295qAq/PqxetedwANiNZC8hqYjq6G13bHaoDi+QNUKb/rjdZ
-vfl6OZP6BBKQ1dln2aVWVx/FpO6Qdv9vYNG9cqVmmZi25Kpz8FUzJ/cNwFPc
-lKWVIIp/Jb++ZgRtISzj+ASRPLUTwuxBnKzVlnDaZVg3fsOUsQ40aPrcWU8a
-7QDqAT9y9oqJLE/s92hkTHhMrf+GSBa/axLwIMpodJ+xI+qpycCZEHwb5BrX
-k+DZjD8KuCqMDohviaL6NLqaWA/DfsXbFdu27l2y2mbtiHw2IyzfxeX7jB1R
-d43zU8Z4l+A+VVTPL3fxbo2rI575vuH4mLUFbsXUHW3t+PwQ1vIs3Q1pTMV8
-axSXPN2x0seA0s4ol5NPeMjapRZbnF1xd6jHp6rGK2NwsYuTbdaOyNd0xtVO
-naXF2RWX56g93bWtbWLvbAFXj1bwiqkj2tg8AeyS4BZnV1yV4FPgLiFucXbH
-xYPrjrjrnF1xW8/QW3Dbr0o64f5BZvmOJ7A26xqyOSzjM7TTvACaUXxOSmDt
-PY+0r4ECX7+iNG8s9Tvi/wFI1D4r
----
-eJytWntz27gR/5+fAlXS5G5GIm3nkuZkSVPn4as79jkTu712Op0biIREJhDB
-A0Ap6s199+4u+IAkSnZG8SQyCSz2t1jsCysHo9Qu5GSUCp5MAsZGNrNSTC4z
-KYZMlbYorRU61NNR5GaQZiEsZ6m1xUD8VmbLce+tyq3I7eB+XYgei93buGfF
-Fxsh/3MWp1wbYceZUYPXr1/+ODjtESuZ5Z+ZFnJ8Z9dS3KVCWJZqMRv3wjCq
-/kU6UfHAIEEYG9NjFmAq7vS+EEnGxybWQuTEFR6zwvp0n/iSu9Eekzyfl3wO
-U3+H0Ts3Suv+NBjAr1mZxzZTOStU8VYl4rtSy+/Z7zDDWME1bC2cab4QJjSq
-1LEIpYo5LRgzIAW6P+B/FA0GxDRyuJNgFDktj6YqWbPpPFZS6XFvlWZWAH4w
-snwqBVtliU3HvdOTkz+jVCOrWSy5MbATPIGBVis3nky6VgA9wuJ8vW6azQdu
-7QyOBg9ImoLn47PJCAeYyf4nxoMXk9EbOvhR9AYeP05GEc5Otqwgabhzmc3z
-cU9n89T2alliIZF5nOXz8Qm9FTxJ8O2MFrqfWsj2PWG1tGbBpfTlnXzgNh02
-0P6avUukmv+go0b0qHMTFZ9oQ5gu0fbC3Kgkm2Ui+UrpLnXG7kTBTs/Y6avh
-y5fDH16wD+/u2dnJyYuD0sEbatkNECXN18P1WreoGZ3q2rrZlOe50AwNEX6h
-hYLdJdmyljURzlrBmuFI09PJba04A+Z7CkyLSXCRs2aYZYZxBuqewxkzWG6z
-3DnDKrMpTIHH2CwuJddsxdfMKjZTesEtS7jlYXAF/s6JhVgKySw4v0mVBOvK
-4T+bSfElQ7ty0wtuPoewscIJ0grHFqVBTkvBcnLNiig9m1zTyvuaMWzjbGc1
-LbSpyDRTq3xbFgOPKLCY8VJa3MLI2olWyoKKwbGJPAQIsYZdS8lyZdlKg1vD
-LtaoHAYUuTW1TjSHqCeFIca5Aw4auB3Zb2DXrdgXEkRGHcPUug8I3mHE8DaF
-naACQUxENoWIwUZjtynDVC7Xw1qFmkxJQeC6swn4SMMpzMWKPYdIbpQUz5Em
-xIW/ghrevX/zj5/67PLi/uK6MdMnxNfN0dG56blwioB8gJAIh9tqBf4oCmUy
-q/S63eAvqcjb3AO2oSGsaMGtSPqoqzUzsIDOa2GEXArDsnxDD4Fu2EJwW2Ro
-fKAOWMCuwVIBtyUIN3VxUA+w0fGzuT1nb0kcb6IRF1g0i//TzP/XiwwVi59A
-NZkFh4w/s5lWC5LOWG7S0FfVJTkLMPMMwNNO5Ty1S4lZlouETdfA2rBmbciu
-ZmCU7QB4bVAZBir1nbPsdpqsGAypNMI3xw2vv5gaq3lsW8HAAWA/BmzNs0iM
-K0g+VWj61ZrKu/MSYNT0k4ith3IF5YOmQDJnG+EHYUoJHzKbjHhVJ5i1ATNv
-FPKrnoZYcuymgC1CSgR8wgYBmIRB83AEEA8j4L8JIhY8k4/A2KRrId7jOLqj
-6WQPVQ7OCb3cZd5MNNzwGMGAFwossAq8DdeI9AOauiunpHqxV3FNgVXRRdeE
-d3XbGr+Tg8aHQ2+i2hVYHQW4q9vqEDc3FxzE2Xa0DaytScQLBuypoeGvRBFa
-70fxJz0UGP4aFKya9mBsTFV6w7AM9gZuC5Nfg/NRSSiY5wfguiiqfW2gkgOa
-QmYUhCCGwOccKkvzVcolh9mn3M3JVoi9vnYYjFxoD9bmXAUl9vjcAyomv9qn
-3c3JCmj2CHesIuxuPMOwuVJ+usP6JWHPnrw+O3117iyeXv5yTofWToCRNhNa
-BFWKZLy0CsJ4FkPVuWaQFTCxYLHC/DoFk2qexZByUqVtXFqzlQi9LOaEgCTm
-Mlf9vkMEAm0Q4btPFLqFbQ7s4hS6hZtExMnLinDhnGXzUoOuO+u5rWqQFKdF
-LKBmwowJiUjPywWWZKQOLFKBDvMV0lNgQ63VpKYurATUb0DEwX4XUwW5i54t
-yhGyC0hmVQYO/PIljgVcRrFkHNIJUNFIItHYrM3wNN5KBnE+aF7bQo6cGCoL
-KCkzkcMRNhvvs0IKbtAO1ef66Mm+A6+w9wpo3PtWsUslVl0sVjUkcPruIcfZ
-dJknNyfwc/aiN6nKRvSV73HTQbPfWqkx1MBzMNxkDcqvzLY0mP1REtTR2KkG
-TihVifHkvzCkCikh+eDZii98ASpgaga3U9xUZvpw2QFbR3tfcp2p0uA9xAUh
-KMHKAoQKvNy2VRv76RBrwfdfFLjW1a0rDAW9Pe+z56Sw55XJ/nLx8ee+fxus
-ftqzrghv1m2NBgwDLKRBKdRW4RKOHWUdViX6o0ShUt0d6ZjkoAEP18f0yveV
-oONwRrZmn9CBWuvx6/8xu//b1V0fPi/ufZ/81801q/2SboCtZ95VXH2vAJ9K
-M5lorPVndMrPpD2nmufXmNighujgt46ki46UjRNtZYyePH72W6ns+WKNQZQe
-XVPIPXcXG26uYVqxdZvH0er+c/Xz5S3ORN5UI0VbEj4sHKbjSjY6t2oYz65T
-FNwADm3keAKtZzxiZI5YOPzkd9BawW36R4TDIbzRMp/Gx9FlHuPYjEsjHEA9
-dGijYdheYJyLii+F5HQxgXuaH0fixlzUTt3rz1Wlb78Jyl5YhKNlK1XChTdH
-s8bgUeCVo7qlg2/UcVWw5sqD5jcSC7TZoIn9kJJhCO5KFu8rc4gndKtsqltk
-6W71VsG927tNwQSGrX4A8a3PFEVZlKTvxdGqH2C72xdZvlSfIQ9BJiG/y9lM
-lpB8FHUHYDEvChC7kYVudDhzdRvEKSw1TjntxYuucLFURlR0ruSjW6epg77T
-0e3lJenIv+lRnrvKZ6ry4qrvhN0xbG0tq+afVUVv8k/YAezYNcGwL/n0Ktns
-HveX7DR8Rf2t6OTH6PSMnb2o+l4zEEtBLCvYUyyb6pZWN9JFCRlAt0DXAhR0
-rzTkLhcW4P2v5Tw2IZyHFXEaiqQky9xgXXfRRlGSLdvOq9+tfLnVh63FqVux
-uMCUU+rq9SYfMWJrOCD0JdMBRT04v9GGDjeQmcHOM+ZengR7e5YzuDErvQ78
-q1sT0dunbQ/qIKGK1c0aizWipHZIo4hvoIq3rioga7tRSXlAH26aPXAjdXuq
-0fALg6oex80AHxZNgmf51BTn7nM4JBEeYhu9wU5Fm373oQyHm4RHoroM+V5r
-dQjSo/omeFUYfQjQkR2J+A5uIR031E7YHdpjsbcaWYegt0iPRO66nnbi7t5V
-j0B9rJ6/pY4fo9xvpdWdZlQn2lZn6gg8+rxXSpoDcC3R8Wjv8XuBw1hEcjzS
-nWsiHoRyNMdjzR8Cmh+Ncktl0GNscYvyWNxH2OO3ssYPJHD+mE1ukx6J3NkF
-6wTuaIkdg7u3wdkNvqfbeZQEyj5owS3RkWh3GbYrHnPAW5TH4na1xbtxd3vk
-x+HuNv334W5/A3AMblenuht3t219BO6/+UI+sgLbJvWQqViGu3VQf4vvGmHM
-6+kZ913+KMK/LaE/NcE/6/k/C83WLw==
----
-eJytWmtz2zYW/c5fgVVm42ZHomy32WZtSZtH42k6SZOxvdPdmZ3JQCQkoiEJ
-FgCtqo//vudekCKlRI52FI9jm8B9HtwXqESTzBf5bJIpmc4iISZe+1zNrnSu
-LoQqpM5N7avae2VjO5+MwzYRFspLkXlfjdQvtb6bDl6Y0qvSj27XlRqIJDxN
-B1796sek5FIkmbRO+al2ZvTkyeN/jM4GLCrX5QdhVT698etc3WRKeZFZtZgO
-4njcfI9tapKRI4I4cW4gPNQ00vm5UKmWU5dYpUqWij915ft0P8s7GVYHIpfl
-spZLbP2A1Zuwynx/GY3wa1GXidemFJWpXphUfVXb/JH4HTtCVNLCtXhhZaFc
-7ExtExXnJpHMMBUgBd2f+Dcej0YsdBz0zqLJOEA9mZt0LebLxOTGTgerTHsF
-/dHEy3muxEqnPpsOzk5P/0pWTbwVSS6dgyd0AiNrVmE9nX2KA/SklvZbvrle
-jgLvAkdDB5S7SpbT89mEFoTTv6np6OvZ5Dmf/mT8HH9ezyZj2p19KhTSjQqZ
-62U5HVi9zPygNShROWlIdLmcnvJTJdOUns6ZMXy1lnbPqWhNdoXM877Rs3fS
-Zxcb1X2evSy5WX5jxxvTx/s9aYSNtyz6lH17db0xqV5olf6fJv6kUvFGWnH2
-rTg7uzj7+uL0W/Hu5lacn55+c691eCKowwJT8n673PIGps3q3LZxLuayLJUV
-FJL4RbGKCEz1XWtrqkLcIq5xrtnZ7CWh97ZFD8F8BsHVLLrNtBP4lqVQv1bK
-6gIZIvMgR/hMIsBUmYJAlHUxhzKzEAtjCwk5qcAhCXUHFhdJFnJ99UI8OT8P
-JSgWr8CemTpPxcrYD2KhSyX0Qvyo/MXNm9t3IjXKlQ8fPDk/+/bSi0TWTkWy
-XIvKGrhcuFj8UDsvdIk9p4YCVUJ6BWOgeAljSmRyKljA3y85YhphsCWNlvoO
-6jzZtQkc4Q08UnBNsRDEtXAeQslxJwoAKuZrbAMUBgFOLCIIWcAhF7jLNPg3
-JOErnedYg5HeqXxBFG+vrkg/5JqqVRLjHKuA+SuYY9NgChwG47DdtBwTliqz
-VeLk/hw4IS7imGTnM4YTpXyhl7XlgoZDPg8Kn8FCaZd1cBFaCX8+gBiuWwAE
-Za6uKmNxqLF4F85eFQKHmkmXRaicQBo6mX3i/axUKwSmn8XiFkhiEfmDYwZq
-rlIJZxNxS9SropCjVOW6QKlMo1zjQBFE7IsTX1FxAe1K+0z81/2NwgPRC/fT
-Rz3MnlF8yqJCe9vGisW8Byao39tBHsNEcbLZPxn287r7unDK3ik7fbj0lyfU
-DPLMuP3UhBHTnj/eR5Ia6CyDQGcKtcqURfMzxV6hC2uKQF+opwtj4rm0e4m9
-CaR0QC3xUHSMQzE3v5mnSW5WJTC4x/F6/rNKgjcnr5HJ14q82worLL+k/BbP
-68WCC0cTU9tYU6hb5bgeoLc6NGhHWSvFnPli8VOmSk66sIAYl0kGIhklynrg
-1dSXIRNRhBEhNTcOs36qIbOoXJEBPK6AmbIYfFEzvTgKsE5ZiNFULWSd+49l
-U9Ci/YKKkttHHyvfE3JxS4XYg4BTgPqAS0GrmveQG7TZR/Uqr11G6m7IGYay
-Q5Y3ySE4uYMyA8B+U8CjHbEmSwYxBO1pOfJYu4hqmCmxoukIUbaFWzuUuqay
-qzKRlatzKqkkyGW1TxE1VH4TxaXPN/UU9V0sjUGCp0qSS6kJNZKEkiGbquR2
-0OrykU78fVeIf//D/CFMvCB3/9ygw+UK2yVq2J3K10Nh0DMSYKHLO/NBCabH
-IlvcSUtRMRIP+n1nxXx9NZ1vcMAZseNgabxerBuAE1UxhE1YhdhjDCnqAqhc
-+4Cgp5MgGGPxXAGexmSsDjk/ZJshpIWdWJXcVyMGdOPSjidgfU9F8n3nki4X
-Rjz8pTb+kgJ8jxkCVj74/RadPS7N6s9AvxWN3M45Q//ZheEmlhBwa6GgGUbO
-Va/5S24Sa6rwipKdIsH18IEhcwUrkJVFZRx1ltsmcIIYyvbQLdZA5U7mtSKE
-Kf+8rZvkbEDabkNMEyxZaOt8rxW1aa65VQUakdaW4GC7GnM09ch4b7R0spHc
-ZA3XzAetQDjqDIIQvzugqI1SrCBw0z7Arwq+5CDLfqSg0slOf97Jcgp2AJ00
-zRxIkyMc9jxVUM3oUEZ3KTGCWY7EZizCgMOtt6msFHWV1cZqv47Fv5za1Fjd
-WvZeBgx3cWaFzRHxyARV6Nqf6uyCO/tXuUaSwoN/v3kdqZzHqkd88B7XjCWL
-bCwHfFfPbp+9ZiUvr6/fXu9N3r6dOI8Qw8w8DJwfR/XLMC70piDAktSEgdjA
-RJNtk8xU+wEjZt+FyT+4YdM7KGzqirbPHxNfpJqzbk6C9jfWOfLpxfWrW97+
-6dn1j9sOfWpAaY26p98LbtHiZG7mT5lcUV8fClxkyw+9lb0iuj7FgvaPLts4
-B63kxpC92poMcL775s0bzNcT2b0KSDZkxr6385jeKrQXvP4eX+rkjHIsSpWn
-+TAW32N46gr1vjHwYe4vu2ZA14JpCIkW3vAU3iqEv7cPowmgLTha2BqG88eN
-EE6CZvHZ69fhDwKL2cmUPo600WFIu+Pd7Q1fmEVpaTOJMkO3viGlmZEWMPh1
-EcDE7c6G1JvNI5z6TBBtuMY9tjiOG5C72whv9gICKf6d6YLgdnODQqGgGyBd
-dWgcxo8Ke74pg0NqHSg4eMYkYrk9ypKLNxVqTJUuai5rSEopVuhGnKxhzGqG
-WJGucegQmedr3ClwfcSdeS3utKQZFGB+iFDQMpM+GnJuosWjIbY1qTee9pep
-h+jSW5PWiUrB+PFoSP3qtL3jkuFCL0vq+R9T0tBENbXAJThasT6zU8zbdjTG
-Vb57p9R/BfN45w0TvebovaNgBkDCbykGs+twkUxxOcNy96Jh+51C/8UBZc6I
-CjnJblN4c+S7ydvdTE33akHOorBL12qdhFobIbLGrvDVxrkv4N4LWlWhFr/B
-Id3jY9jeqkrhOwkyxq/J5OBcq41ebw5mvEFeQY4Yz6KH5dxVl+HnxQWb8Dmx
-4+fS6eSqGZz2a7m42CY8Umuozi+tNfep7FF9EX1NKf+cwkB2pMbvUELppWfX
-Uver/Yj2WN1hzjzkVHdJj9S8M0Xs17v70u8orYfi/CUxPgTcL4Xqq7eHeNej
-OlIf/7w1BjPOfnUd0fHa+JJyvy4mOV7TDU8r96sKNMfrWn5O0fJoLW95wjgk
-Fncoj9V7QDx+qWh8xwaXhzi5S3qk5mtVGH9QZdmhPFavySF9eWhZ+xT50RYY
-/9kI7oiO1Haj6dp0yAHvUB6r16fK2kMg3qE8Xi+G0gP19imP1bt2GHkP0rtN
-eaTe/8giP3AC2yXtaeZhGVe9qP2kMdyaRO8DRRc+b5yM6ZNw/mCc/ifC/wCz
-KKTK
----
-eJytWG1v2zYQ/q5fcTPQNyCW4jRdO0cSsKYtsGFFizhDsU8FLdESO4pUSSqZ
-N+y/746SHNlNUg1KkSYieXfPcy88Ugri0lUyjUvO8jQAiJ1wkqfvhORLyJnj
-G3zSjasb57gJzTqOWgmSrbhjUDpXz/nXRlwls3OtHFdufrmt+QyydpTMHP/L
-RYRzBlnJjOUuEVbPX7168dN8MfOmpFB/guEyWbmt5KuScwel4ZtkFoZR9xOZ
-XGdzSwJhZu0MHMJ01v244rlgic0M58pbxUdRu6HcF3bF2tkZSKaKhhW49CvO
-rtpZr/fDfI5/No3KnNAKal2f65w/bYx8Bv/gCkDNDLoWbgyruA2tbkzGQ6kz
-5hUSQFGU+xf/R9F87o1GLW4axFEb7Xit8y2si0xLbZLZdSkcR/wgdmwtOVyL
-3JXJbHF8/IhYxc5AJpm16AllYG70dTufp7dpoDzB0nqvtxbFvNXdYGooQdLW
-TCUnaUwTYMXfPJk/T+PXvgDi6DU+XqRxRKvpHdWQ71CYFIVKZkYUpZv1nDIu
-CSQTqkiO/ahmeU6jE6/Y/uvJ3oxz6Fnbikk55J1+ZK5c7qCHOneqSF2cmmhH
-PbrXmc5etEfqNop3wr3XudgInv9Plp94Du+ZgcVLWCyWi+fL45fwcXUJJ8fH
-p/eywxFFu53wkn69n+51W6Xd7Nr01Q5rphQ3QIWJf6hisQ5zcdVzzXlbvVjd
-mNpykb7BAFKRfOgDiFW9QNt1GqyatdcCvYE9EXAlc9QCVMEtDjhgWoDSgK1G
-yG0In0qugIHi1zizDda8EMoedTNeUFjA/Y3gOZa7K70VSiYIlckmx2mh/KTC
-nRmir0goLk/S3y3udOR4QhyNj1S++Yzpx836jS8hwj19QhaeHA2TB7DMhaH5
-5PHXRruzyFV1+3SES2jmc83IgEoeF+6sXXlUzR/l7ePQ1jPiRkSI3QV5gOE6
-97HpaabBz95xjNI3vmOg+JUPKe6xxlA3AicqDszCRpuKaOSw3u4CFHTMQGk0
-iCgGUCgru0wglSuhG+uNhPD0skQ0/GHYFaoawVfO4K4NMl1h78P2rcJnsNJH
-FG5tqGic7lLr7W0MnglcZVtyiyaMllIj4yP40lgXMOk69j57PTk04llBqTHh
-zLrWGHpvwZa6kegThwKdNxSHEN5pE2CNOKYyfkTq/Vqn1EWgEqpx/Kirh70C
-CId5w2rosva+S1mfJdTzMclYY7uYbcila4xKh4Xolng3NWjVYwLDeDmsYdtU
-JIqKQXcuIWvjMMStk6dYzZ1KFzL01yz3KRPQ5+NT7Fa7wYvh4Md2EIbhPnG0
-qeQWpKiEa88oj0EJrmujGUZc2HZ/dtWQCcvbisqwN2iHcQ9wlnKdU5GRmO9g
-3HaVJ/C4N1dMAmaeSbuXdai5ETqn0vSwgd1ax6t+g0bYam5OvuEp8eLgHKQ2
-POihXsE2a99FZ+kFXUQMEvQJuWmE+z1v2NhoM8+lsHTyHx4SewdEt2opfBk+
-4wba8X4A5uc0izXEFB4BOm/uod8uQ8wOb0hZayP6jZiGdOGa9Wh0v5qlfiGO
-GNmBKA0eq7Wtz9rfy6Wn8D2z0WtmRfau6zB3oyyX+4ITUfFmuRHFW2P0fZAD
-qQfBa7CRjABsxSYifnsI3Q17y+E7DZtvWCPdmKweik5EflvhwT/G5X3Biahj
-4/yQMR4T3IeK6i8fxng3kJqI539fanyduAfuRmg62tsrevu6F8uLTEda4ZF2
-bxR3MtOxiu8BFZNRPqy/8GzURj+QnIo7oh4fqho/tle5MU4eik5EvuCVdqM6
-y4HkVFy8ZeGVY2xbu018MgPtvlvBN0IT0Vb+lWRMgg8kp+I6fNExY0J8IDkd
-F++hI3GHklNxtxZvuqNw9yUn4v7BKjnyBnYoOkD2l2V8GQr6jxwVdyW+gwy+
-Zdj2U0cc0ac4/2WOvob+B3Xx6Ds=
----
-eJytWm1v20YS/s5fsefUQQJIlOWeW58iCZe47jW9GAli914QBMGKXEmsSS7L
-XVpRD/ff75nZJUXRsqOeYjiOuC8zszPPzhsVjJc2S6fjpZLxNBBibBObqumP
-SapGopDWqjKf6zLjT2E5Gw/cAlqaKSvF0tqir36rkrvJ0YXOrcpt/2ZdqCMR
-uafJkVWf7YDYvBDRUpZG2UlidP/8/Owv/eERk0qT/FaUKp1c23WqrpdKWbEs
-1XxyFIYD/zsoYx31DS0II2OOhAUbT52fMxUncmKiUqmcqeJjUtj2ul/lnXSj
-RyKV+aKSC0z9jNFrN8r7/tTv4795lUc20bkodHGhY/WsKtPn4j+YEdBMiaOF
-81JmyoRGV2WkwlRHkjdMBJZi3X/xbzDo95nowPGdBuOBU/Z4puO1mC0inepy
-crRaJlaBfzC2cpYqsUpiu5wcDU9OjkmqsS1FlEpjcBKyQL/UKzceT3ftwHpi
-S/P1vlmy6Lu9c5iGDJSaQuaT0+mYBoRJfleT/rfT8Su2/3jwCh/fT8cDmp3u
-BkPcMJFpssgnR2WyWNqjWqRIpcQjSvLF5ISfChnH9HTKG91PLevmORa10CaT
-adoWe/pO2uWoYd3e8+CWVC/+XA4a0QePncWTG2zJtEvCB7ld6TiZJyr+g0Je
-ATk/y1ycnouT89HJGX7Fu+sbcXpycvqodHgiZbsBXsnz9XC9121qRmdljXUx
-k3muSkGwxH+EV6AwTu5qWWPlsAtsw7LLIZmA9PdjrT9AegjSxTTozgg9n6vS
-AGtZkSqr2CuUOhX6DpN2qYQsCiVLmUcKa8VYBp17zzIoM3hDNgzJjRxN+fN4
-IKcClhXqDnfRAP52qSv4DXkHgAmrg1WZEMfKWJ2JjUieYihe50KXdGSrhZW3
-kCW+k7mFT4Ao947SE0ZnSsxllqQSlNfMUfwda1T6xBRlkts5CPKpLoR7Dhov
-khg4OKghU3ms4pDkETYhgo4BZO4J6EgahVPpWyGtuMF8aGw5p4UhbFc8oGUZ
-RaqADiyUp6ABsxSyXFQZKWbk93mQEJQJh3f+wlpd0HVtLjgAYqcOuuRb3tQK
-9nIKiANRwyDYIO1hmrG06tNuwj9g6v+nidiz1HGHJM2SynhYuCVk2whXTTxL
-cmOBcEJZZQghbeGed5jXV4q0fQN7dhW0LTkZl8Bhl/SQJoDS098qbV8cp+LD
-cfwxOD4/uXIjPQFHHy2BBaMysDBC1nFW6BxOXFdpLHKinqZrTBlDUN5GWSh+
-0itYBZgksMUJkGWTOyJWKmEKFcEBRXT0P3ifQvFK4WQQQ4mFhkA9gVv79Mn5
-6fD7FyaI+NbyNYDAWZIjdC3WNTCXp9ObzSh8Anz8OE7pj4W/mR6PBzPolx7i
-eHrTFlwkMSBGXrMMxSWYrJ0q5dyym4B+q4LOI/NYJHmUVhREWGG4qaSDscqm
-G3IQGhvNeIBREat5krOitxbxJJs9jhsZuyS2RH7jqEIAVjsSGcbFh+gittlV
-evyRoREKHM00R4KbWAIot0nO0APoZLBSXqXQNOypAAar6GC8d81WjJFdIQrH
-YqZSverK6eHXOkxHtXmVzUhWUhgMrktiYNbZDEEf0mOvc7wG9O0KGZOoLeS2
-BLsU6vSZkCq7AsCbWpohR18mRvFhZR7Q8RYEGgblmj0zxIOlAXPOWEAqxQlp
-B4cYxv1sTfdClQluMMvzIKUCAiQG+1h3W4QTwyuAyCSrMq8SAgyloTJiW5J7
-0MVazEvECL5MMFB9rXFVkcRscWmIys9ENPBEPRloYX7vfNhB21VMxqRz9ZFq
-LfLeht0qSdNgRlqe2/6viFecP4TiLVaUK2izJxLWLmdXrRUPoXcLDi9xHLg6
-CgbO8kauTc97qNdiJXkc1FkWumSMDBfeaCJ4VlvmOWW+NokqREAPgdDRES9b
-txn8Sh+R6da1gBWATWNvVkYXSGxu510gNF82KbpA3Bx8wA4GruafdDLS6A/N
-2vq+Zkrm991RtKWkd6WOq4i9BLwXcFY7PZEjx0e4lsZ21X2xJ4V5hfjzMJl4
-Nxk6CycIrIE63jjf7pRHe7cCLHSMrGK2DuqZOkzOpozMXCWEKA5XNSEPQzWX
-VWoZifAIiJAqDp69vn57/t3J8Hkornf4IPuw3HO6N2RIFHZqc/F4rknZ3IVt
-5X93SKuUCXCy9xX+IAzQjeuJGbI6h392u1CkQKJXYLRUtkJgZG34EEnBXpUf
-Tj6GwS6hs/ueUud95AbQB7lIkg41nUESSPJJYgsV6U+G0wjyUs7769mv2MEB
-GqqCc9LO8D7v2G3qq3vcPa86C3RHsT7j+EL0HrySJomaLJCD+ZOrE/x8f3bk
-Q8QnJycFd45OgU+LAKrObnLgbH44K2vXfU41xOVnyixhBmjBjVyzbzSBC8Ws
-N7JnHbJVatRuvKT3Vc+m9LAAjdSpvLk4KUIXSfpGZrNY7lbpdlZxfCzIOzpR
-6Soeh+Jlvm4l2QQjim1FqWfI8dY+pi2Qcql7Vmu8y+VnSQWM4RDepFujHUlO
-9zazHFSXeG+vKFlH2eFqFMyUW4koXeDW1UVCtg785eQgQKWBcSkmueYRlYfD
-Pn6Hp2L47Wh4Njo76WooHJ6eZA+JBYRnGhrDGtGKi63LWl+HLtnhWdcDMFHa
-pj6rqOKyx4KgcwWo/A2dwN8finUuQqhcV4ul4AYINQtUAL1k8tZF3tVScwwm
-fQ3PXAdph4F8SeTR6e2CrPRlk123UvUEtqTYM0Nxttw2KSUws4Rcig9/5BsN
-puPAxzuu3KiYIJ9FrkGYpV5tMEyAneHUt8pux7oaAHxz8JB3NQxlJagPuWbx
-R3XW6FE+DpfsfCuTxFECf7K6wMO9pZLexeMPx+lHcRyL0QhXYHiW+ShNP08m
-Txf+44cfLl/98rePu0BEO28oK+B0jyUkPmVdFCHhKRXDWdwrR5vMwd+7joSF
-mNzbE+Zq9WxU28pJ+NhJnjfCwNI/bm635fqvtj6k9IGTxnsi1r5m2NZkLV9F
-YEqT6bVLMSnxaF1NAh0mt1Zwbs9Oua43QZuiV+PDtotSt9TXpGGb4i/evHUk
-dnI3KwYsG4RshfEtv5FvO45HYjxj0KulHe9DcVGV1NdM1z2XKLpiFNM+Eeht
-WhA3HswNf/BTnwHX1CtlU8z6GrbRRNPRcOUSGcnsVHiPtwa0b9QeZ3Q4GPgR
-9+BUDE5b4CJktXonL1OaknTZ6ZxtlUUyp8NuciyQKlxa40K+SzqosAmaIntX
-06EnTAXHIp31odvIzcJENEDZRD0AZ7AWms35uyp107bZSddZpdgkmtwXElcI
-XYGrUJSznep2P2o7J/mdvnVJTGOOXK/qwlUHHUvU5+kYwg07OziguxEK6H7A
-yf0MR5bimutOwa8JZIrTPQ88Hna5AQ8L31QYTv919UZc6HyeLKqSG+ybduNL
-Al2RSnbY8LvthClqtujyUznzrQ7XCm7PcfNXTp3aqHUWNK2ze1jiXlvpug0k
-FqohnLhpNYTiJ9TyzdVH0apc3tB10al90TSf3fsJh+AuM++1G9w/4hDJFtwB
-JuItI9E4IZCGB51xL8qmM86DjWMdTt+pkucibtyaJFbOAmZjAnIEhV9GSTxi
-K7zApssm2yVjt44jr5Fr1/twbZzZjkLOdCo5lDlGcVc13HZIu+XodFlBpEys
-944SKaal11TcQIBvXesqoJc73ojIj1Zk8LWyDiB0Y7wXh+x1V0eK27SKuWTw
-NyoknQdLqm5yxtGMWsfGtbPgZ5p1nummIQRFR4qLGjmDxwlah2oaxHAB87o1
-QVWTrow7prOt8QkXo8a0+nPcUBCv87n2MfKxpvA/XP216a9+8zre+VKwdyeG
-4Sm/qBicDAen52L4nX+BgeJhqSDc5edCfPPl/u7LCuKXre6zgqO60YhKhpGa
-4vmv1SIyIbyaVdEyVHHFoN3dvR3Eyd3mlVr7/dNZ5wVbLU79jo02mGrGL2iO
-pu/JdSEH5MLW7GDFr1Pa70zIE/bTxNArxbH0LzMbpXX90ebVVPOJfFJzgK9w
-hAtXOTIyrhBAHjmHmxaN2I/1jmtu9Aa31UgGHTGYBk/zmSleuL+jEYvwJbK7
-itpdXEaj7YUHcnUB5rIs9WMsW6u+Cj8fgb7E0C07kCO9cKH3um85i3lctffW
-HsrbpZ77WLW79EDOl5lM0n2OvL3wQK776vlr6ngf5X4trb5+u8/pWqsO5Md/
-b7ROzSPsNosO53bJDcpHefGSwzldq/LuUS02aw7ntfgSo8XBXN5yu3EfLHZW
-Hsp3Dzx+LTTeK1oeZnn/mxIHcX6vMmTL+5y1s/JQvjoF9cW+bm3X8oMl0PaL
-CN4sOpDbNXUI1T4G7qw8lK9FhVXuo+LOysP5otTYk2975aF81wYJ8F58t1ce
-yPffMkv3zMC6S1ucOVlGDR3UX6TyTZfW96WM+zoValYdr/m7f/R1y/8B3fzM
-cw==
----
-eJytWW1v2zYQ/q5fcXO7oAVqy3ZatHVkAU2aAi3apaiDYfs00BJtcaFFlaTs
-eMP+++6oF8uukrhQisSxyLt7jvdO1QsSu5JhkHAWhx5AYIWVPPwgJJ/AQukV
-s5brgZ4HfrFDNCtuGSTWZn3+PRfrae9CpZantn+9zXgPouJp2rP81vok/wyi
-hGnD7VQY1X/z5tXb/qjnREmR3oDmcjqzW8lnCecWEs0X095g4Jc/vo5V1DdE
-MIiM6YFFmFK6e17xWLCpiTTnqZOKX0Vmm3R/szUrVnsgWbrM2RK3PuHqrFh1
-fL/0+/hnkaeRFSqFTGUXKubPci2fw7+4A5AxjUcbLDRbcTMwKtcRH0gVMccw
-BSRFuv/w1/f7fSfUL3BDL/ALKwdzFW9hvoyUVHra2yTCcsT3AsvmksNGxDaZ
-9kbD4a+kVWA1RJIZgychD/S12hTrcdjGgfQES/sV31ws+wXvAl1DDpImY+l0
-HAa0AEb8w6f90zA4d44P/HP8+i0MfNoND6IgrqUzKZbptKfFMrG9SpeISxIe
-iXQ5HbqnjMUxPY0dY/GvUnL3HEOlrVkxKZv6hl+ZTSY1dJPnThapli+1X6vu
-tx6ilOPvKdOm2p0wX1QsFoLHP6ndF4yVGc9gOILRq8np6WQ8hK/vr2E8HJ7e
-qx0+kZWLBUfp9qvlirdgqlfnuopumLM05RooEPEPRSjGXSzWla4xL6IVoxld
-mozCD5XhDIbvCIVmobdbA0wHTF+TqdQIcj/auSob6HP4rJaXa0wYiJllA3iX
-wlVus5x4PbVJiYRBLQ4DWUoQ6VrdcLAJJ/aXejKpCZ4UojHhbaJiyLRAOKu8
-jRYEN8Ajo3pBMg7frZmQLiD3DoAxGOQSP6QIA+YdVBpnA258B+ufMyOimntA
-dawXlhrt7wU+C70+xHzBcmnRoD6KPwrjq+NP70A53C1xVspYWEh+SxYfYCBx
-qHGygqUO97/0vJR5mBGHlC4xWPgz2s/EKpP8DuUPNkvdpUDX7lvPxczManSg
-AZXKLTyTagOpEoY//xl1ruZ/88jeoc7BZqkOQYvUZLhFsagckWmCluy/5VLu
-NO6D3QgtSV0Q1sCC2hZLY4gVN6i5TVBaLcV3EYfJ88eXz4CtciGWuXYNY5dS
-M1RBLLYu6nc4JJLku3PCM2awrNiQ2hrmtg2fQ57Gjsyj9RNpz1SVXidLe+aI
-IBaajrfmkzI9Mu0KyB45pNjQpiffc2XPjFpx3Cgeiia626DH4okQXB0iQXUY
-Nelbk6XY8ktu4vX3lCYlSUGyyjsD/DaTTKQcDZFCMwKi2pDqhyhv7pVx/cKZ
-NmEm8Zhe5issSga2KoeNymWMPtNUpbfY4NHSVjlDp3xTmJCqnHEewloP5Aa+
-Im96OA6g3YrigksDuKL4PcxbgkUnbUEtSAvD60I1Ci9yY9Wq8jmGzS4mznMh
-46JERntUKFGQZazmK454nJntAD4hDdUgNBZxuJCxCbMeEvI0NgdxpdZcaxHz
-/ZDbr7ADuE54CksMHoxDqrR0CoHjHdZ8i6aoq7mpjoS/Hxdk2JMnb8aj12do
-uQY9+hCnQJdreUZUujraYtdTkAht+8LD8sEM6sdu6EBSqRtAzTrEQKM/vMd+
-BHWTKDsD5aErpocj6H6dqZrafoGpVl1lKXDKXk0TBY0D63Jgsirrhb/jSbEC
-FIMDzXJPP8b7E/eLNYwGr91M4A/f+jgrjMflrBDxLOG5gcvbDJ5SnakGgbrn
-4xfs6ruhsjmIvToYMSv9qimTGEw+dwNLL/xGM75G3y1wNDQtUG68aM4QVEr6
-Uhgaqg0CSm5V6hVemaNHa90eQbuLwjMuonEYy+9Rsdh+yLuFUys0up6UHia/
-ohzwQ+8knZvsrPicTJwKDwZN2zTRgtI2WnRALbrNpdbqPsgG1aPglUn3EGBB
-1hERE5nTpaWuRPfA/kDbFbsY+I7x6iFpR+TLFVauY468T9gR9Vg7P6aNjzHu
-Y1n149Uxp2tQdcRzn9cKb+P3wO2IuqM12tZdWHUP64Y043p9rxVrmu5Yy4eA
-lp1RWq8WrXAt94wuuEfE42NFY/tdtBWy7WLaAfkbXyl7VGU5oOyKqyRKXx5b
-1trIO2ug7IMRvCPqiNZ6X2+FbLm8d8G1eEvVx5j4gLI7Ll4tj8RtUnbF3Rqc
-do/C3afsiPsnW8kjJ7BD0gayG5bxau5V7wzLt22NV4OmeHMY+PQm273Ypv9E
-+B/w2fyH
----
-eJyVWMuO2zYU3fsrWBUFmoWsSdsAqStpMZMZIEUKB/Fsuioo6VpiSokqSXni
-Bvn3XpJ+yPKD7GIs8fLo3BfFQ80sbXTL87QBWuUzQlLNNIf8D1ENHBbkg6h/
-kWnijGa6BU1Jo3Ufwz8D22TRg+g0dDp+3vYQkdKNskjDF50Y6t9I2VCpQGdM
-ifjt2ze/xq8jS8VZ9zeRwLOV3nJYNQCaNBLWWTSfJ/NEVqKMlZmal0pFRKOD
-Ha8dt1AxmqlSAnSWD29Zr8e4z3RDnTUinHb1QGuc+h2tK2e1z30Xx3hZD12p
-mehIL/oHUcGPg+SvyFecIaSnEpOaryVtQc2VGGQJcy5Kah/ICEIR9w3/kiSO
-LWni/OazNHGlTQtRbUlRl4ILmUUvDdOA/mezVNOCA3lhlW6y6PXd3Q8RKYSs
-QGZ3pATOVU9L1tXZHRKnWpKSU6UwQ9OTWIqXyNqrvb1gdezm1tgMmyJJzS1R
-7F/I4p/z9H7X3zS5x8GnPE3MfG6bjVyJrnaUlLO6yyLJ6mbP5KI9icuOelpV
-ZvSThREb6Wb3vBZ9tDOPI1Ut5fwk1vfdYufdj52l9Lhc1oyDSrhJ4C9ZzM3C
-i3I7nMsiTehVdCIG3Q9ag0zUVqHpMJ7wXAfuPZzBNK6Pcgw7g0jB8S2oTTy3
-cdAKfRtyuFvTUgu5NRh/zgHZevNk4mZgZ8n5o4KWMh4Q2ikuvNMV1XAS1nUX
-Z9BrVcCdT4kRTh1rwVmRfGk5F7Qal8iYK1kczdcC39KWI/2a1YOk2NtptNP5
-0xDdMsT7euxcQi8U8y0U/FUgN+cFOkyc+nJeAlagA15grS9QwsbsvjfYbhXn
-UmGu8ayFbKntZm8v3cEwZb2ODPcRQH7G6gAFVXBspcvQjHe75nEHxVvptu3E
-7ttOmty0m9tPpIXciyEpaNeBJEa38GIEDVWqYpv9XlyBEzcUvyhP+3z2vHy3
-XBCUw7IhQ9cbua+MaKJcmjeBfP/1abn8RmhXkYoB+uyNY2RE5v31IIRjMXlz
-Iov4EIY8EgX7gBoKKwtR/mCsoKwfJ3DKJnshUwslhx5Z5UvuqWLl06HktiV7
-V+awEjmFXCxOgaYxSEqSK7QPtj+PUopbnCNUGOFuSfsYHcxH+Q63uSdcpcvD
-Nned9wzrJYc1HbgOqewU6qN+NAoQEvQp0EcbWor/VYaQ/IMTf78MiW+E8hHa
-32chuLrBdwQF0D3abfsmmYUEUK2c1tzkcpgAstrHVPtplsVnKINW9ATpJQ7o
-anBPPzptCglzCvVRf7In0pBoJ0gvsTsSh76Bl+B+F0J718ER5KNbsbbnEFLk
-CdJLrFF/ZUgVJsgAYjynBhKPkV5i+2UURHyK9BH/iUfcQNmbQkfUVvrxlDPb
-n3TwfNIIPJQcDzTKnXfSxHyu26938++R/wB76d/Y
----
-eJzNV21v1DgQ/p5fMRd0CKRms+WortcmkaDHB06UQ5T7hPjg2N7E1BsHe7JL
-78R/Z2wn+9KW6yGhU6vuxrHHM4/n5fFsUrS41FXRSiaqBKBAhVpWZ5o5dwKv
-TPPUnpzQ48VKdljkcdXLLSUyaBH7TH4a1KpMz0yHJJO9u+plCjy+lSnKz5h7
-G6fAW2adxFI5kx0fH/2WHaZBlVbdJVipywu80vKilRKhtXJRprNZ7v9zKwzP
-nF+dcedSQLIxqg7vSykUKx23UnZBJQ1Vj7tyH9mKxdkUNOuagTW09AfNXsTZ
-sO+nLKPHYug4KtNBb/ozI+SjwerH8A+tAPTM0rlmC8uW0s2cGSyXM204CxtK
-IFGS+0KfPM+yoDSPdqukyKObi9qIK6gbbrSxZbpuFUqynyQFslpLWCuBbZke
-zuc/p1AbK6Qt58Cl1q5nXHVNOSfFBVrgPk50Qh+WzJp1GubFNF+rJotrC4pH
-OCIUfghO/S3L7JeqeB5jXeTPafy2KnK/XF0LPCnNUYy6mVZNV6ZWNe2kMsLe
-AxjeeiaEf3sSxCBAXo370fTpOL0L2S2Z1nugX3Yno/W7ZRPtgef0LT3uma2n
-XVsNNLRbPP9J7ZsQ9O+A8Wf9UXL8F9s08D6L+RGX49q0UNR2ykioWddJCz55
-6OGzilJFqNUEQMiYYZSBaVX0pISNBTQFcOYrMK22hcwqWFvWOxh6CqgGbCUs
-lfNBY500gwPBkCWk3nDFUApKSmyBAbm2oZCCQ5pdetXwEqGR6Kg0nCNBZs3Q
-CUATlK6YVVIk3Cx705G4A7OADT6q7pBqW3xPbQDHSINrzaAF1NJvUcQnVjpM
-gl7jKN2spKIjKFTesnN0eDcj9/nj0+d3gh9YiKlOipNxQWj/hZWm9NBFTqNC
-iOod4fT6G/JuWPEGPXg6LMREgr/I4qvXz85fXLwPIh/8AenYQY5xHJhO4t6O
-mGFGAcqFiMbQMi7tnjX5WfIhMAb5kXv2w8ESTqivKLOw4hQTv4WGwPA6FnK4
-ctApnaiIU3Urc0m7d+NOh9l6tZHBrQ8fHD85/PXUQYDklSyYdvtofdz3sJqQ
-y2SHgKzZJszkMDMBCxlBN0JrxJ4u74o9XX5ix7ne4Ru94yH2FCwGrW8o8ZNX
-8Ik8rhaUW9+nNA8pQLnw2qCMcptEQkWcjmxJZUGuYYDMXVJCLNDHemHskiEl
-4SbLcirBKtk+tyw48d7RHpXTFqrwHeIIG9xQB+pIq/PgQBf44BYy2K14f+RM
-K+e5ZhP0B+dz/0e3aifXPtwHPw7bM0Sr6gHlt+HdvASO7qD93euES1/g6WSe
-PG0zS/fZw652/en7tx/iYJeCdzk4yHuvpGMC74tV3+T//xHYNpnvIbiREe8h
-snvrsonX74K2uesTmv0BtfhmqLXiEPq2kXVvq8pbu8md8qRmdX4NxdRr3kAQ
-rYz2PeN4D5TphnCopY2kU1ePQiYdjEx8EK8aevqyfAy3tCbO8nxUFC8s4l1L
-Nys1VqG73oSKBP1PhbSigae3xH/ddvCxbYqgYac7crF5IpjUgId+3P/4+Qr+
-+xlq
----
-eJytVVtv0zAUfs+vOBiQNmlJusGkUZI8bE9DTJso78hx3MTgxsF2Wsq0/86x
-nbTZKDeJqG3sc/2Oz+fTKGvsShZZw2lVRACZFVby4kpSY+bwXtWv9Xy+sBXX
-+ra3XW8t11kajJz5ilsKjbVdzL/2Yp2TK9Va3tr447bjBFjY5cTybzZ1qd4C
-a6g23ObCqPji4vxNfEp8KCnaL6C5zBd2K/mi4dxCo/kyJ0mSuk+qK8Vi47QJ
-M4aAxRxDaL9f8UrQ3DDNeetD4lJ0dmr3ma5pkBKQtK17WqPqHUoXQer9nsUx
-vpZ9y6xQLXSqu1IVP+q1PIZ71AB0VGNdyVLTFTeJUb1mPJGKUe+QA5qi3QN+
-0zSOfdA05C2iLA2nnZWq2kJZMyWVzsmmEZZj/ijKLC0lh42obJOT09nsJYFS
-aWxCPgPGpTQdZaKt8xkGzqwG5tqFFbq2xFptiJdXo7wUdRx0S+yHLxEytwQj
-vvM8flVkl6HlWXqJ6w9Fljp1cbj/GDu11ZCCSlG3OdGibsbIAf0jnH7X0apy
-uzNvBh75evC3qiODeIrcrKiUj7Bft/Mh+59tI+nwp2oEniIdjZJ8JzCJLsdA
-+6C41HuIf5XpztPhH5DB8GR04Pj17e58E3dPyOjMtrRFh4l+54xIafEb/Lhw
-rQjsC+qgGxVZqUe+Q0nblmtw1MSX4ywSsRLrEUfFA3+R36TIuiJaIPWBmt+U
-UEwkDupRiy4n8MJ4Ph0jjM5hwSSYbPfe02ckzPmjq4AuWMPkeL2D6Ut/wKS4
-4bZRlfEVHyh3WpPDE0thXEd2ZTy/mbnnjBQt3zjYJztsER7Wf0B415dSMPA3
-DofWr+AenAOTa4VjZvYExTglfkIQsgz5Xa2u9JzsSsVhFMoti6NPoU0NNU1+
-/3AM+6N5MggSo1k6hBhIa6mucbaTMBF3JEZDN95JgQtPWvdzqOSBjAEuTDhn
-AiURIA5NP0Pd/9YPyZYgAg==
----
-eJyVVG2PlDAQ/s6vGGs0mgjdOzWee4UPd8ZEY6Lx/G5KmYVqt8W27Lka/7tT
-WPbF5KISoNN5fzozzUQX16YSHcqmygBE1NFgdW1kCEt459pnfrl8hSs5mPja
-+bWMEb3gk1bSX2OU0MXY5/ht0JuSXTsb0cb807ZHBmralSzi98hTrEtQnfQB
-Y6mDyy8unr/Mz9joymj7FTya8iZuDd50iBE6j6uSFQVPL/eNU3lI0kKFwCBS
-jJ3rcb/GRssyKI9oR5dE6j4e632RGzlxGRhp20G2JHpL3JuJO9rdy3NaVoNV
-UTsLveuvXYOPBm8ew0+SAPTSE65i5eUaQxHc4BUWxik5GpRAqqT3iz7O83x0
-yqe4VSb4dNyids0W6lY543zJbjsdkeJnmYiyNgi3uoldyc4WiwcMaucb9OUC
-FBoTeqm0bcsFORbRg0r1IoSpLLl3t2zkNzO/1m0+yVZUjxEiiERC0D+wzJ9W
-4mqqueBXRH+sBE/i6o4GIOc8NrsY0ujWlszrtptdT+mfJDruetk0aXc+qsGY
-+mZnH13Pduzj1MNaGnOS/Bu73EX/u24m5EkLrbTBwE1CRQB3aA7UZ18XqUdZ
-dadK4WvB5T74IREi/QHWP2X3Yeyh/0ADu2eP6koGrfZlmXKf7dVWWrI5Vdm7
-gL+gICIVcWrcSTzJZoGo/TwqUEtr0UPqalpSu1MPN3ozp9Lg1Po0GqwSfZW9
-H2I/pHwCxE5GaJx9eP/i/OzFJdG40hZBHlD+AbA6uogIw602Blq6K2KnwxOg
-KVId6ABq8Ol4zZYcZXcfV3XKHF0K3qcfISAk80oPQDZDpnuvcw0cIQsTcMHT
-VI9Dnm7W3yj5shE=
----
-eJzFV21v2zYQ/u5fcWOxJB0syWnzNkcSsGbD0CHBirofNgxDQEm0xY4SNZJK
-6hb77zuSUiwlTpcBhRskEcU78p577oXUJC5NJdK4ZLRIJwCx4Uaw9EJQredw
-KVdHaj6/kPWSr1pFjVRx5DWsbsUMhdKYJmB/t/wmIahoWG2Cd+uGEcj9W0IM
-+2Aia+cc8pIqzUzCtQzOzo6/Dw6J20rw+i9QTCQLsxZsUTJmoFRsmZAwjOxv
-pAqZB9pKw1xrAgZtdFu794oVnCY6V4zVbksc8sYM9d7TG+pnCQhar1q6QtEv
-OLvws27dN0GAj2Vb54bLGhrZXMiCHbRKPIdPKAFoqEK/wqWiFdOhlq3KWShk
-Tt2CBFAV9f7BvygKArdp5O2mkzjyVMeZLNaQrXIppErIbckNQ/uTSWxoJhjc
-8sKUCTmczb4lkElVMJXMIGdC6IbmvF4lM9w4NgpyGyv00IYlUPKWuPmin8/4
-KvCyJcbDuQixHYLmH1kSvEzjVz7ecfQKx2/TOLLidEvwcePIFN3+VPBVnRDF
-V2W/rYc+AuneGloU9u2FUwMH+6Zbb2RDuukhbF1RIUbAX9fzzvp/605iOkqf
-JRdMR8J6FOUDh65VFtrEJOlDWaiyOKJ35jamcag2jjwJzxuXMf8D/6/Ze5ab
-z9jGgSXbJ5cXe1kviDPVpzNktK6ZApt5+LApiXlW8JseQMF8emL6kjRu0smC
-MYjp5EtRGEeN/YcW0fLdc5MtfX4cj9Iel6BDA57cAt1mjimSXjFTykI797f4
-PnSwxkoNBNej1Hh2NbM/L0n6x58W5vSB6MiKku2yY5LmrTayuhbshgm9XevE
-0kKL6w+VuLYMbtc6HWhpo5CKTq+jaoKBHPnTM7Eh43Wdi7ZgBVSyaFHml36W
-CJdPWKh1L6wcoYHVIenbn367usS+hfL0y8XsTZsJnoPrN1A9GsCtXXDQV7DJ
-zu6h6HvkAwTeSmffUm/9S8hd8LEVuwTI0gNs7LR6Dpv4DJtfqFUedat8xoOh
-aoWHGfFHALmrZ5Xb84ykOOjyn6ZbvXysBie2CH/GM5CCw8QMU3vPzl4cnp5r
-2zlbNqqpXbF11LOVbOiaejxPYO1oJ6z9yJa8ZkPikBdT4sTX4+3Y83avXyCD
-3/nxE8g73gl5C2Y0mBIr3EEFDy+EdyXvyxVonrMG1fS6yqTQIBX4nqXDjtxG
-uXNp5MnI94P9q/X+FPYv3CSO5peeB7uBXWyx/CAwdjXeqVCynsJatpBjr9IN
-y/lyPUYIvAZsV/MxgD1hzt2hdO0Ppb2VOXddzwpQ5/60F4yQDmQAVwjDQ56C
-BzxYFj22LgzDO7d2m3YnPu3uHUCYdnZgFZ+Qdye7aXUY5BpLtAc2BQvapyLG
-FTaXCnvDXmLKDW8n7qbaXULc2IIIv0qln96jvD/NkXQ/fALlpzuh/PeunixU
-ZH7h0G0hm9fa4L0R5LKLz5jY7obZ9YaBGe3vmeg6fui47x77ofkvwMCZiQ==
----
-eJytVd9v0zAQfs9fcRiQNmlJOmDSKEketqchpk2Ud+TEbmJw42A7LWXa/87Z
-TtpslAESUdvY9/M73+drlDV2JYus4ZQVEUBmhZW8uJTUmDl8UPUbPZ8vLFO9
-velt11vLdZYGI2e+4pZCY20X82+9WOfkUrWWtzb+tO04gSrscmL5d5u6VO+g
-aqg23ObCqPj8/OxtfEp8KCnar6C5zBd2K/mi4dxCo/kyJ0mSuk+qmapi47RJ
-ZQwBizmG0H6/4kzQ3FSa89aHxKXo7NTuC13TICUgaVv3tEbVe5QugtT7PYtj
-fC37trJCtdCp7lIxftRreQx3qAHoqMa6kqWmK24So3pd8USqinqHHNAU7e7x
-m6Zx7IOmIW8RZWk47axUbAtlXSmpdE42jbAc80dRZmkpOWwEs01OTmezlwRK
-pRnX+QwqLqXpaCXaOp9h4MxqqFy7sELXllirDfFyNspLUcdBt8R++BIhc0sw
-4gfP49dFdhFanqUXuP5YZKlTF4f7j7FTy4YUVIq6zYkWdTNGDugf4PS7jjLm
-dq+8GXjk68Hfqo4M4ilys6JSPsB+1c6H7H+2jaTDn6oReIp0NEryncAkuhwD
-7YPiUu8h/lWmW0+Hf0AGw5PRgeNXN7vzTdw9IaNztaUtOkz0O2dESosn8OPC
-tSKwL6iDblRkpR75DiVtW67BURNfjrNIRCbWIw7GA3+R36TIuiJaIPWBmidK
-KCYSB/WoRZcTeGE8n44RRuewYBJMtnvv6TMS5uzBVUAXrGFyvN7B9KU/YFJc
-c9soZnzFB8qd1uTwxFIY15FdGc+vZ+45J0XLNw72yQ5bhIf1HxDe9qUUFfgb
-h0Prd3APzoHJtcIxM3uEYpwSvyAIWYb8rlZXek52peIwCuWWxdHn0KaGmia/
-uz+G/dE8GgSJ0VU6hBhIa6mucbaTMBF3JEZDN95JgQtPWvdzqOSBjAEuTDhn
-AiURIA5NP0Pd/9ZPrLogUA==
----
-eJytVV9v2zYQf/enuLFY0AKRZCctljqSHhpgQIsVK5a+DcNASWeJGU2qJOXM
-LfrdeyQl2e6StQNm2OaRd8f73V8u8s5tZZl3yJtyAZA74SSWN5Jbu4ZfdPvc
-rNe/VndYu5+12XLn0ORZFPLiW3QcOuf6BD8MYlewG60cKpe83/fIoI67gjn8
-22Xe1DXUHTcWXSGsTq6uXrxMVixcJYX6CwzK4tbtJd52iA46g5uCpWnmv5lp
-dJ1Yz01raxk4sjFeHfZbbAQvbG0QVbiSSNG7Y7k7vuPxlIHkqh14S6w3dHob
-T4PeD0lCy2ZQtRNaQa/7G93g08HIZ/CJOAA9N+RXujF8iza1ejA1plLXPCgU
-QKIk95l+WZYk4dIs2i0XeRajnVe62UPV1lpqU7D7Tjgk+4tF7nglEe5F47qC
-rZbLHxlU2jRoiiXUKKXteS1UWyzp4twZqH26yEOflsToexbOm+m8Em0SeRvK
-R3ARck+CFR+xSC7L/FVMeZ69Ivq3Ms88u3w4/3R35prRBJeiVQUzou2mmyP6
-E5xh1/Om8buLIAYB+W7Ud7pn4/ExcrvlUp5gf63Wo/Vvyy5yflJBGyHRZtI7
-Rf6N3hyoP02V+hJl5aMiqanyjM/GD0CINAe3vgvdu1BC/8EbGD+zV3NGIuxJ
-td5zReJH+Zo1/x07ET51sVojO/ImRl6ZqT+g4kqhAV/KtPgap8JtxG5C0WCs
-d+oHVub9hMeCDtVkwXUIltoH7vkehKmg0WjXZItk894EGJSIFo0iqfVGa4o+
-CAWri7PWXRP399U5XJ7D8z8elbwcJT+tCk+dfRi0u17F5bM35c14cLfOUGla
-wqDOnlxdrH66dtDSABLK9oQWmxTuBuugJ7Gwe0/oneE1giCXgptcpiP6jOJA
-8ZjXQ0dMPfDipLtJhcJ8lP2gYIcq5J+Vb9F1urEhKQ9k5DjsPgKJFPak/J+8
-XfrPS1bGSvZ1cD7DW1CA/geQ74ZKihpeK+u4orhsHwX94IA7mhc0P5dfAZnG
-3z9ARCsjBO+xD0DBZodpys5OV+VT3FHPPYNDaL6abak1dTYqj13luKFKoI4M
-Q37uMhL0LxYriQh95f8ecnbslwgUjtrCxq4hXPQOhGfBP8VfAKkFYkU=
----
-eJytVVuP3DQUfp9fcTBatCs18SxQqUyTSHQrJBAVFdsXnlZO7CQGJ07tk12G
-qv+dYzuZS7ulIBHNJPa5fz4Xb4oeB1MVvRKy2gAUqNGo6sYI73fws+2+dbvd
-S4HqB23ULzNOM6JyBU9iQWFQKKBHnDL1dtb3JbuxI6oRszf7STFo0q5kqP5E
-Hpw9h6YXzisstbfZs2dPv8uuWTRl9PgHOGXKW9wbddsrhdA71ZYsz3n4cSdt
-k/nAzRvvGSD5WEzH/aCkFqVvnFJjNElLPeGp3O/iXiQqAyPGbhYdsX4i6m2i
-Rr0vsow+7Tw2qO0Ik51urFSXszNX8I44AJNwhCtvnRiUz72dXaNyYxsRFUog
-UZJ7T3/Osywa5clvtSl4Ou+itnIPdddYY13JHnqNivxvNgWK2ih40BL7kl1v
-txcMauukcuUWGmWMn0Sjx67ckuECHTQhYYQwpCVz9oFFulzpte6yxGspHxEi
-FGEJXv+lyuybqniRkl7wF7T+tSp4YFefqgCyzlEuToTR3Vgyp7t+tZ3iP4s0
-7iYhZdh9HcUgxn6/6KOd2EI+jd0Pwpiz6H8cd4v3z8tuCnFWQy2h8NwEWNyu
-aLgkfIFzoNy5Og/FyqrPiuauLrg4BHMMjJbuCPNfRfs6FtV/QAfLc0B5lqUE
-YVVv9mIklQ/yeLDwzxhoEVKa6jixE29lFLVbOwdqMY7KQShy+oTqp5KW+n6N
-RKrUCdQprCqmavM9VUXYCQO98D0I180DnYSnldqRD5IppAkvrArEaie1G6nz
-yDsReKBKWb3UTjVo3R5sC9groORBSBa551KeqlMW7yYRjmA8t/FGDyr36Fqk
-BbTWDYK6BB1VLVxK1YrZIGgPX72dLT6/+C27GLILmXZXBz88BssJc7U5fo9d
-sfbB07MeJxU60pOMRwU/1zHnrHqlsLfSxwQ8cvqnRxwOJzPan7XAl6+29Fxv
-WTWqh5DwJ4fYNpS7/yHC13NtdANxlNA0/lS4jw64k2lB83P7QRTr+PsoguRl
-8R+wBuglO0ClKZvg1tXlXeA9iTVWvnt/Bcej+WjC5d41fDGy9BFSWdK1xdKw
-P/QVCYabi1W0iF0UXo+BXrojBQwnTeBTj1CIdB/E6yFcyn8DTTtq3g==
----
-eJy9Vm2P1DYQ/r6/YuqqFUgk2Ss9iS6JKzipEqgUxPGtqpATezcGb5zak71e
-Ef+dsZ1ks+WOayXU1e7GntfHnmfsrMoW94aXrRKSrwBK1GgUvzDC+w38anc/
-us3mF23UywH7AVG5skgmwXivUECL2Gfqz0EfKnZhO1QdZm+ue8WgSbOKofoL
-i5DoMTStcF5hpb3NHj06/yk7YzGU0d17cMpUl3ht1GWrFELr1LZieV6Eb+Gk
-bTIftHnjPQOkHGPoON8rqUXlG6dUF0PSUPe4tHsnDiJJGRjR7QaxI9Vzkl4m
-afT7JsvosR26BrXtoLf9hZXq3uDMffhAGoBeOFpXvnVir3zu7eAalRvbiOhQ
-AZmS3Uf6FUWWxaBFystXZZH2uqytvIZ611hjXcWuWo2K8q9WJYraKLjSEtuK
-na3X3zGorZPKVWtolDG+F43udtWaApfooAnFohWGsmTOXrEol5O81rss6bZU
-j7hEKMMQvP5bVdlDXj5NBS+LpzR+zcsiqPlN1afIBcoxgTB611XM6V07xU3Y
-T1DGWS+kDLMfohlE3IfRH23PRvESt98LY06QP+s2Y/a7bVcmoC/sBLzY0jLm
-We7qKcgxIA3dEd6/yvIqEuE/oILxU4qR3c9eznubhw5hk3NzLTpyWOhnZ0Iq
-+Bfw0yCUIfEuqZNuUpS1m5gOteg65SCQkh6BrURBqQ8TDqkSc4nZjJc9X1GP
-H1SnVdcQSZ3oe3LbWgeBJzk8oToHW2GgFb4F4XbDnvbI00htCAFFKKUJf8hL
-RL4JhemokQgcSYoglpL/RhKwW8BWQbAAtEAlpUdO+AopFxHQUa+eur8JIoFq
-9v959ipi9oKWyFfH55G4E1XPT1qQXGgHF8WNDn6oY3kZf6GwtdLH/b5hs5c7
-GhabGe0DH2YefPtiTZ8zOg07dRXq++DrYXuC6HQ9oLod3ud9e35Hpy5PgIYK
-rNxMXUH5Mkfn0Pdd7fvHv7/+Iw2WbbLsk2gfdoXxBRlOTPmtffo/gpt4dgey
-uf1WJP0K5Xs11EY3EI9ouuVu49mNF8eionQvrf+BYrpWPkOQsoz5A0nDBlRs
-5ijdXomnNb/3NugexG6vPny8D0dOn9wcuXdNMQYYTzqkw4FeBVi6QOcKkWF4
-G2CcBvGkC383LXg8wRJYWBxUPp1jBI/u2HjlhpecT0pWyeU=
----
-eJzNVt9v2zYQfvdfceMwoC0qy2lSoMskPtTYQ4YGDZK+F5R0trhRpEZSztyi
-/3uPpOQfadqmWIDNsC2Sd7z77rvjUbOi9Z3iRYui4TOAwkuvkC+VcO4c3pj1
-mT0/v8bOeHw7+H7wHm2RJ6Wg3qEX0HrfZ/j3IDclWxrtUfvs3bZHBnWalczj
-Pz4Prn6DuhXWoS+lM9mrVy9/zU5YNKWk/gssqvLGbxXetIgeWourks3nefjm
-tjF15oJ0XjvHwJOP0XScd9hIUbraIupokoay94d6f4qNSKsMlNDrQaxJ9Aet
-3qTVuO+nLKPHatC1l0ZDb/qlafDJYNVT+EgSgF5Yimu+sqJDN3dmsDXOlalF
-3FACqZLeJ/rleZZFo3nyy2dFntguKtNsoVrXRhlbsttWeiT/s1nhRaUQbmXj
-25KdLBa/MKiMbdCWC6hRKdeLWup1uSDDhbdQh3RRhCEtmTW3LK4303ol11mS
-rSgfMUQowhCc/IBldsqL1ynlRf6axte8yIOY359/sp37ZnQhlFzrklm5bifL
-Cf0RzjjrRdOE2YuoBhH5ZtzvTc/G5UPkrhNKHWG/0Oej9+/rzlTAn5sJeG5j
-ILv53FaTmb1JGto9wAf5uYrF8AO4YPwUYqzwHbfzcEbYtLXeCk3qB8zvduaC
-fwM7DUISUt0lcZJNgqKyU6VDJbRGC6Eo6RGqlUqwkZsJRYOpcqmyGS96PrtB
-3ENPh3MlFbo88U3/Du0G7XtbpXj4HQERHwMo8j78kS/yuXvu62eqmJdHZ4G2
-UCgHDMcNbqgix4xfom9N42Lg90R9GJqm45sp6UJSdhH9fLmgz8kZ4ys1uDYg
-ff6F9JRxjbf3y14cysaoZsT2kesJ9B73ha7V0GADnWkGkqWt38Qck06nTE/C
-LsaeBR3Gr99eXi2VpNqk5kNK/PE4vhoqJWuITQO6rxJ+bys76AzUKRd3UEyN
-7gsEycvoP3AegizZjnLqp4n2ij95H2TPoRWuLT9+egr7FN3pZXNn63w0MZ49
-L+yarieWmvruLJJiuKEYp8FYvIL/lyGfHof8jGC7h0V6+riR/usqutDOC13j
-/6GQzhKr48knXh9G6dljUfq1vjsLjXdJNwlEaOANONR0/+otvTR1QurAAl3Y
-v2/ovLsg9y1CuvFgbLtHDXfs/okNOHDm0h1A0dP7SXxdCa+InwGmaTtZ
----
-eJzVWW1v2zYQ/u5fcVOxoR0iyXGS5qWSgDRFgQ4rUiT9UhRFQEmUxZYWNZKK
-57X57zuSkiwnztxihdMGiU3xSN7dcy+8U0ZRqWc8iUpK8mQEEGmmOU3OOFHq
-BP4U0315cnLe6LrRmsoodGSzcEY1gVLr2qd/New69s5EpWml/beLmnqQuafY
-0/RvHRomzyAriVRUx0wJ/+jo4Njf9exRnFWfQFIeX+oFp5clpRpKSYvYC4LQ
-/IYyF5mvDDXIlPJAI4/2aPs8ozkjscokpZU9Eoes1sN1H8k1cbMecFJNGzJF
-0h84e+lm7b5ffB+/iqbKNBMV1KI+Ezl93Ej+BD4jBaAmEvUKCklmVAVKNDKj
-ARcZsRtiwKW47gb/wtD37aGh45uMotDhHKUiX0A6zQQXMvbmJdMU+Y9GkSYp
-pzBnuS5jb3c8/tWDVMicyngMGeVc1SRj1TQe48GRlpAZQ6GGxiy+FHPPzufd
-fMqmvqMVaA+rIkRmCIr9Q2N/L4meO2NH4XMcXyRRaMjJbcvjqaHO28MJZ9Mq
-9iSblt2ZTu4VCe1TTfLcPE3sMrAyX7f7tai9dnoos5oRzlekflWdtNw3rx1x
-I3koOsFDpdEyWf8cyPTOkn5UkEwLuTBrIrLiggXjVIX3brySaWB83EvuXYKH
-RiHpdVjqg0O5ROerlHxjffAbQDlPP9JM/wdvHBgLOnd1ZEfrCFEquwCBlFQV
-lWB8Gb+MkxvXDXN2nfQuPDT+wYpD45l48EBeu0E1qZXYS15TXYpcWTHWyBAh
-m25nhTHoc6aMir3BHr0e48/ugZe8/2AQ37lDOjKkeD3t2Esoycq1xMnYEa/E
-MiGuW4asC96oew7ZR6qQM2L2rxdiMkE/oteYENeTMW1WdL6etuclouKLK6LX
-63foJUqj2daLvvvUklG/lvy9jHqqtWRpo+n9dr2bQg42JI1hMsowIKj0OvaI
-rvQlpsPfqlTVz95ffHCDYcgMY8auN+40MM7ttcm9QbtF6axf/JCSmc/NgvWJ
-ZoSz38Gx3jQpZxnYOwzLgPtSx9qbdeBreHGPb0nR3bt3JHBcWv4mgozmsden
-HbzebepJk8eG8gSWUdbfp4GSWdjucDcHaCKnWBx5rqToLYILTX2EcSkze4GY
-j7UaDhJjTl3JgSWJkadORhcUAxB9B0gFyzsJd9dJF+Xbguipg6jLMwjTJoie
-fi+ItqThYa+hTbRfoeHhT6bhUefmce/nO0u/2qTt0VZc/hLbiIf39mOHlCsq
-rCd8/nILrpsvEATBzQbQjrcC2jtGea7AiLsU8LdHR5Pdw2fKKoaY5titFRRr
-UGx9HgJUU4h1oA6LsRbebwN2Mv65Ys+Uf0Z5WwKixlfOm0qiyvjzzYbQm+xu
-xYtOK1gjheuQzofFM1SUors5BQPcNHKbLoTQ2INO+13LCbttzjiHlAIX2IPk
-wAqoBEY7l9iTLCAXFTrm25JaVABVbWZY5yAfie6roBCci7k6aX035+ZDowF0
-ctIVWPgYmrkcVe9UWZFoII3dE8C5hYDwHchpQRqODLUAiZK7FbZJyge8hqXm
-gN/pEryX3YqW6cvlDpIE8GLAp8eunby99fa0NW8nUWgxWAni/12Tvaqw98YU
-8QOUZaajMjHTdVUmbOx4U7hMthIu+QJlZRm27QvzkqyaUtDovM5pHiK/7jm4
-+k4S8frdSqM2Aba3tau9R8h6PxfTAE4xKQicl6pPENjkCEnzB0Fx36E47PaN
-4/XPm7Dc3wqWL9Y7Xy9lAO9EAxlWUh8bpUHVNGPFAlO267mEfbVkioLRyjZn
-AVZdi08UTLaz9xV+g5D2mbXpoZ2sgOEpakTqWopaMqIfqLZoO7j2Dc7m2n2y
-nQbuDA0EVijj7ghzttrLmdm5ZJqaKaQsIG0KU6TlJjYAAwUvwGB0yWaME7v6
-1fkje94OKAGNwlip0KqqXVDgzYncV23QvgB0+MFASOVeAyJeIl/YF93m3wr/
-Anw+xZA=
----
-eJytVW2P1DYQ/r6/YnDVCqRLstBS0SWJVA4hUUGF7irxETn2bGLw2qnt7PVa
-8d87trO5XbgDKnW1u3Y8M57nmbes6iHsdFsPyGW7AqiDChrbc82938Ar2//k
-NptLtRs1vrBux0NAV1dZKarvMHAYQhgL/HNS+4adWxPQhOKP6xEZiPzUsIB/
-hSq6egpi4M5jaJS3xZMnj38pHrJ0lVbmAzjUzWW41ng5IAYYHG4bVpZV/FZO
-WlH4KC2F9wwC+ZivTs87lIo3XjhEk66krRrDsd57vuf5lIHmpp94T6Lf6PQy
-nya7e0VBy3YyIihrYLTjuZV4f3L6AfxDEoCRO+JVbh3foS+9nZzAUlvBk0ED
-pEp6H+lXVUWRLq2y33ZVVznadWflNXS9sNq6hl0NKiD5X63qwDuNcKVkGBr2
-cL3+nkFnnUTXrEGg1n7kQpm+WdPFdXAgYrqIYUxL4ewVS+fycN6pvsiyLeUj
-UYQ6bsGrv7EpfmzrZznldfWM9hdtXUVxe3v+6e4qyNkF16o3DXOqHw43Z/Qn
-ONPTyKWMT4+SGiTk+9k+2JHNx8fI/Y5rfYL9pdnM3r+uu6r5SQVtlUZf6UiK
-+M1sbnbvXFfGEmXtnSql6+qKL85vgNDW3dD6JnRvUgn9BzYwfxZWS0Yy7IOp
-uOaG1I/ytVh+GTttYupytWZxlh0EdecO/QEdNwYdxFKmJdY4Fa5U+wMKibne
-qR9YW49HyfiknOaYfzZkeAujs3IS6MFOYZwCaPUBV2FQfkOQ4pWjS2jf/nrx
-O1DSenSGGvKHPjyF59Td6M7grdIaLmynjLfmDGQ6vhfto20E9tySB2MDXDnq
-QAiOR5fcSJAHCRmPKALY7j0tvpzdV8SXeC/rTeUfav3xSReTCYXzKMvJwE9d
-yjNrX2MYrPQp+LdE/ji8kWehlT8p8+9er+nz6GfW5oqNQTxb4K0oUv8DyDdT
-p5WAl8YHbgTS1L0L9K2D7Ggu0JxcfwLkMOY+A5G9zBAi4xiAhi2EaZoupLv2
-Pu6ptx7A3UXnnahm47l7Anc9vZZYHuZLN5FifDOxljapf+LfbWTnvshA4aj8
-fe4OwkXzPo3/+Mr9F/OwX6w=
----
-eJzFl1Fv2zYQgN/1K24sNrRAJDnJijqpJGDNgGFDgxXzXoJhCCjpLLGjRY2k
-nGXD/vuOpBTbqbN5QOAasUXxjry7j8cjE2WtXckia5HXRQSQWWElFleSG3MJ
-71Xztb68vOEreaW6pWgGza3SWRq0nP4KLYfW2j7G3wexzhkpWuxs/PN9jwyq
-8JYzi3/Y1Nl6C1XLtUGbC6Pi+fz1RXzK/FRSdL+BRpkv7L3ERYtoodW4zFmS
-pO4v1bWqYuOkSWUMA0s2xqn9+wprwXNTacTOT0lN0dttvY98zUMvA8m7ZuAN
-iX6g3kXo9eO+iGN6LIeuskJ10Kv+StX4ctDyFfxFEoCea4orWWq+QpMYNegK
-E6kq7gfkQKqk9zd90zSO/aRpsFtEWRpwZ6Wq76FsKiWVztldKyyS/SjKLC8l
-wp2obZuz09nsSwal0jXqfAYVSml6XomuyWc0cWY1VG69KEK3LLFWd8z311N/
-KZo4yJa0Hj5EyFwTjPgT8/i8yN6FNc/Sd9T+qchSJy6eSACaPLX1aINL0XQ5
-06Jpp6mD+zuO+ree17V7O/Nq4F1fj+Ot6tnYve26WXEpd5z/vrscrf+3bpTx
-nRRaCokmlS6q9J6CqraCutVl4hKUFfvliS6zlD+Y3bhATb0J6CC/Pvjs+R9x
-/Fh+xMr+i21qOOgh0YI4yCZBVuoptaHkXYcaXBbSw6Un5Vwt1pMDNYZUpVRm
-RdYX0QIRMh49N8os7d0PWSYPHp6b7Jny5fXOVqAhFNgWLz/ADKUnxoprtK2q
-jcewh8F2oB3t3lgKs5MqL65n9Dl7w4pffnVunnwimjtRvl92wYpqMFatbiWu
-UZq9Wuczh4bXt47MrUO5X+10W81YTTBGxRFWREv6DMg+DKUUFfgSQFX0KX57
-C9PWNqe6N3vkxVS2PvEgWBntu8DdWuTsgT1VR8+/LF5SreWrV7Ch87geJUZX
-6TgyJB5Yrhs6Y1iozOxha+nKHTOsoMaYgrzYG+lT2yFy++E7Opo4eL/Qov7q
-xfzs9M1b44rZgDtpfSxi84lYvkF2Evw5kNz8KOS+xaXocBsesbEtdXw+dheB
-3aNtSxQhtA8EePFcAI8TtqtBLuzHdcjF7VpO9bDIz2fH2XRijR0lyuTcCTjX
-DdgW4eab6/ewOWLcHWyp9M6Z5e8y47Hk286L5HMknCvru+Sn0u7Yh/aB5E+P
-Qv5GDVDxzvOmBVh4D/cxF52xdKkAtRzXaZfveP0IbGDLjgmXEAJAN2J/QXb/
-lfwDBrkEkQ==
----
-eJyVVEuP0zAQvudXDJaQ4JC4y0NaipPDVisEAgmxHLghx54mBtcOttNuQfx3
-/GjZrlgtUKXyeGb8zTcPu2Jj2OiOjchlVwGwoILGbqW590t4a4dnbrlcWbNW
-w6Vz1jFaHJLrBgOHMYSpxm+z2rYk+gU0of64n5CAKLuWBLwONIV5CWLkzmNo
-lbf1+fnzF/UZyVBama/gULdXYa/xakQMMDpct6RpaPqok1bUPlkb4T2BEGMc
-oPN+g1Lx1guHaDJkFNUUTv2+8C0vWgKam2HmQzS9idqros3nHtR1XNazEUFZ
-A5OdVlbio9npx/AjWgAm7mJezdrxDfrG29kJbLQVPB9oIbpGv5/xT2ldZ1Ba
-4nYVo6XSrLdyD/0grLauJbtRBYzxq4oF3muEnZJhbMnZYvGQQG+dRNcuQKDW
-fuJCmaFdRGAWHIjUqphhakvt7I5kvTzqezXUxbaO/cgpAksiePUd2/ppxy5K
-uxm9iPKHjtFk7v7sfcSlQR7guVaDaYlTw3hELcxvccy7iUuZdk+yG2TW28P5
-YCdyUJ+y9huu9S3er83yEP3vvhXjt6ZnrTR6qlNCdM83WuScZseDdZ9d36TZ
-JN3d9sb1jPJ7Ie+DuwvqkMFNNlF0N7X5pxTf5xn8j5JcXguc0oDeEz4KqYVl
-You52I4G1rvjHYGeG4MO0jjHJc15HF6ptkcOEsvMx5CkY1NXvcLgwXHlUcJu
-RAO/S7o6LVKp3qkqFQ3QCDvHB8X5qucSPr1720RaU+IWg8bgxzX+AKojy/hG
-jVbCCRlfuDKabmC+kOkB/AXVFJbu
----
-eJzFVl9v2zYQf9enuLHY0AKW5MTJliWShjXtQ4cVK5o+Dggo6SyxoUSNpJx5
-xb77jqQU20u6bECRGbZF3R3v7++OjLLWdrLIWuR1EQFkVliJxaXkxpzDz6o5
-0efn/vFBKWmyNPCdZIeWQ2vtEONvo9jk7FL1Fnsbf9gOyKAKbzmz+LtNnZUL
-qFquDdpcGBWfnZ1+Hx8xr0qK/gY0yvzKbiVetYgWWo3rnCVJ6r6prlUVG8dN
-KmMYWLIxqfbvHdaC56bSiL1XSUsx2H25j3zDA5WB5H0z8oZYPxH1KlD9vq/i
-mB7rsa+sUD0MarhUNT4ftXwBn4gDMHBNcSVrzTs0iVGjrjCRquJ+Qw4kSnJ/
-0i9N49grTYPdIsrSkOisVPUWyqZSUumc3bbCItmPoszyUiLcitq2OTtaLr9m
-UCpdo86XUKGUZuCV6Jt8SYozq6FylaIIXVlirW6Zp9czvRRNHHhrqocPETK3
-BCP+wDxeFdnLUO0sfUnr90WWOnZxr/SkNrX1pJ1L0fQ506JpZ6XB8QMX/dvA
-69q9HXsx8E5vpv1WDWwi7zttOi7lgdtv+vPJ+uOykXQ+pyU3mOhy3rHbTUu9
-8+VfqXznS/4fXPil/IiV/QfbtHD5CugI7MCbGVmpZzxCyfseNTjo0MNhioBS
-i83sQI0BX4Q/VmRDEV2pjkqhuo4AOUPZkOrB6aeNpODuuavbXKnTA/jRFvJr
-L1y/wYylD5gVb9G2qjY+igdC2Pezp46JpTAuQxmfOvzZ2yV9VqescA7zazNI
-YbOUF4t7MiesqLGidrwuCZEPy6xY4dBVX0vcoPzhYaHjSYhbDHKT2JSTiBL/
-BTLzbiylqMB3Fw2oz6XpwZ7f6yMaKcu/eTFPhHseBCuTfRe2S3nO7qKmwXMv
-8rJ47lcLqHEgD5YvYJewXf8nRlfppChx45yGMNcNTXMWZiC76wdduYHOClq4
-xEbu78HAP4fhyIH4PRcGDfyom7Gj7nuttdIg1uCdBT6RQRjgPYjehxWYCbxy
-kYAZsBJrgSZq1S10vN+C1bxCoH2ayGAVnTqd2mBy0BxPVZDVXkHu8BrK8WgN
-Vl+qBk8U60mI9aB/KdSWm3YBZtuVygNwzUdpHw3+5EkAeNUqbavRwpqA5x13
-Cfnm2dnx0bcXVo/ol99dLGbamkuzIzqJBXhaRAp6IQmlhDgOLnpYa9XR2iXA
-XSkoVRZ1Aq+TJlmAsCCVujHetFOUBj0ElREnaotwg1szGw85nKxTS9RwHkj/
-D7ZPQ70PZjrV21Dj9c2jBT59mgI7t4w/KHlcoxQdXcNohtAJZShDNEG4LgWN
-DL2FXw1MKTlI53RCh1TAngkTzmkKmm56/uLn7tl/AaG+omU=
----
-eJzlWF9v2zYQf9en4FhsaIdJspN0cVJJw5q9ZGiBotl7QUlniRtNaiTlNBv2
-3XckJVtunMTDsnZADMeieP9/d7yTEmWtXYkia4HVRURIZrkVUFwIZsw5eaOa
-E31+/l4pi8sGdJYGuuNcgWWktbaL4feer3N6oaQFaeNfbjqgpAp3ObXw0abO
-yitStUwbsDk3Kl4sXp7Fc+pVCS5/IxpEfmVvBFy1AJa0GpY5TZLUfVNdqyo2
-jppUxlBi0cag2t+voOYsN5UGkF4lLnlnp3y/sjULu5QIJpueNUj6GXevwq6X
-+yqO8bLsZWW5kqRT3YWq4XmvxQvyJ1II6ZjGuJKlZiswiVG9riARqmJeICfI
-inx/4V+axrFXmga7RZSlAeisVPUNKZtKCaVzet1yC2g/ijLLSgHkmte2zel8
-NvuaklLpGnQ+IxUIYTpWcdnkM1ScWU0qlymM0KUl1uqa+v163C95EwfaEvPh
-QySZWxLD/4A8Pi6y1yHbWfoa1++LLHXk4lbqUW1q60E7E7yROdW8aUelwfEd
-F/1dx+ra3R15NuKdXg/yVnV02J46bVZMiB23L+X5YP1h3ihjO8Wz5AJMKlw8
-7hdD+aDLxBUkLaa7iS6zlG1MbM3hUm+dP8iHd75G/oHPZPhsfA+gBzdHueqG
-SeQd87GRud9rXLjUhEIM5EAbCVmpx9InJZMSNHFVihdXvliTNV+PLtQQShlL
-nRZZNwF7WykDttOuwQpiWtWLmpSAB91qDmuoscxtiyFHt0MutpKJRkVE6YcZ
-G6FKJhJyab95tjian74yxPRdpwyasgpNR1YzaYYDjPE7/1OMDqPcXLd1PFbu
-y53jiCII3iSbXsD0pc8nLd6CbVVtPNR7cJ6CKbGDxIKbnaJ99naGn5MjWqB5
-F9Z3t2hzT+OWryHfy3F8SgtuPjjgftjPsMDaxxSIO+S/p4WE6/20M1qo3na9
-taDNfvmTY1poWKk17CfPaIGZqDbeD9hHWIU7AI3QbtG9lJXoa8znStU90oLo
-vcj6w4BJlyNx5TMUOx5aXGGGBVglsUkjT/F4hfCuLwWviG+uZHVnVext+ZM2
-ihNl9okX40C45UGwMth3qLsYc7rJKc6dkNeyeP6C7D27RlfpwD80H8t0gzOb
-hkm3aUbI6MY2LXDhO5D7uSe+fw3kpTSWyQr+D1ieBiy3Z+wQQE8fF9D/PMhF
-CHLsExgi8+sHA108VqB3DZ7ITZ4rfEi0LZDQ9Yl3LSE/yhsS5rkhNSy5dL2/
-BQ1sif0KQROCSJwnyIMDQahrR42mOnA+NUzXWIGGqKUjcx0oZndmfK48nIU8
-7DRdTMZSqQczcfZZMvGTAuNAbTHKL4GQmycOoXGmHAbOyexpgDMP4EyeGA7E
-Z/408Dna4OOR+fYQaI6eBjTHAZrxUe5QdI6/LDrDq0yIjEwETXihwUDw7du/
-jLv/ffwNArtiyQ==
----
-eJy9Vm1v5DQQ/r6/YjDidIcuyR50paNNIt31052oqLp8Q6hynNnE4DjBdrYU
-xH9nbCfbbF8oSBXRbvwyY88zM4/HWeWt61SZt8jrcgWQO+kUlueKW3sK3/fN
-iTk9pWaLZo8mz6LYK3boOLTODQn+Nsp9wc577VC75MfbARmIOCqYw99d5o2c
-gWi5segKafvk/fvNd8k7FrZSUv8KBlWxdbcKty2ig9bgrmBpmvlfZupeJNZL
-U2EtA0c2pq3DuMNa8sIKg6jDltSVg1vq/cL3PM4yUFw3I29I9Jlmt3E2rPsi
-SajZjVo42WsY+uG8r/H1aNQb+JMkAAM35Fe6M7xDm9p+NAJT1QseFhRAqqT3
-F/2zLEnCplm0W67yLMY5r/r6FqpG9Ko3BbtppUOyv1rljlcK4UbWri3Yu/X6
-KwZVb2o0xRoEKmUHLqRuijVtnDsDwieKPPRpSUx/w8J8Pc9XskmibEf5CC5C
-7rtg5R9YJN+W+ceY7Dz7SP2rMs+8uLyfedo1c/W0OVey0QUzsmnnPSPuI4Rh
-NPC69qNvghoEzPtpvesHNk0vMduOK3WE+pM+naw/r7vK+RF3dlKhzZR3x79t
-8ObaVKmnJCvvCVJT5Rk/GLozSl1z58K/QnIZiPIfkMP0HDyg6DeEKSCd14lb
-rkk3ig5L4BnU1PEJimyM4iibBXllZv5DxbVGA56q1HgOEzFruZ8h1Bj5THxn
-ZT6Uqy0ivEjY82zwL7JFNg/tHbdmNm2OTggtIVcWsQ0L7FiF6LLyAl3b1zY4
-/ojXS9c0HepESXtEpC8v1vScnLBS443H+faBbLOUvRTuD84ZWY0On4b+8Nht
-njloywMsiJ9oDtTiZC8xVEJe6coOZz9d/Rw7SwYvKRz0fcRYORp5X6t8wMMD
-CVc0exT22fE73z9pocYaa+j6elQ+Aj6o/5ivYIjCoGdhF/I+Ibz64eJyvsS8
-UvlyebocKyUFhDIK3ZNke7S4L1JHd8f6Hoq59D9AEK1M9j0bvZMFOxCVbphI
-yKp8fb0blfLyt3BNeaK3wj1dtloq6ntbTu6xcGb0Gs5wgcWOK0ujV7wbzrgQ
-OLg3sFrWpRjK1BqRTUanMuW4aeiKZ/FiPHCLFP0tz0rqTEedl48G6alCs/KV
-5kPgdA0+m3TTSuhG66BCsAMKuZNYp0dF5P8K+eY45F9TEOxzEdu8UMSmqh3x
-wSJmNtZuQkRfG+Hjw3/q/Q3YyiDu
----
-eJzNVm1v2zYQ/u5fcVOxIgEiyU6bInMkAUmAAS1WLIjzbRgCiqQtLpSokVRc
-r+h/35GUZTmNkQ4oigl+oY738twbj5OssrUssooTVkwAMius5MW1JMbM4Te1
-eqvn8xtiLdfNr0rXfpWlgcvx19wSqKxtY/53Jx7z6Fo1ljc2vtu0PAIa3vLI
-8k82dbYugFZEG25zYVR8fn72SzyLvCopmgfQXOYLu5F8UXFuodJ8mUdJkrpP
-qpmisXG7CTUmAos2etX+veZMkNxQzXnjVeJStHbM9xd5JIEagSTNqiMr3PqA
-1EWgermf4hj/ll1DrVANtKq9VowfdVoew2fcAWiJRr+SpSY1N4lRnaY8kYoS
-L5ADsiLfF/ymaRx7pWmwW0yyNIQ7KxXbQLmiSiqdR+tKWI72J5PMklJyWAtm
-qzyaTac/R1AqzbjOp0C5lKYlVDSrfIqKM6uBunyhhy4tsVbryNPZll6KVRz2
-lpgP7yJkbglG/MPz+E2RXYWcZ+kVrm+LLHXbxYECQOWpZb0NIsWqySMtVtVW
-dYC/B9S/tYQx93bq2cBDf+zlrWqjnjyGbmoi5R749828t/4y7yQjeyW0FJKb
-VDqv0MHem7QN7g2Ee10mrlSj4iXORJdZSgYoO1i41Dsnvwnrja+o/+Ab9M/g
-4xUxgg5JCi5s5emGNCizzzKogBe8wIVLaSjjsB32thtZqbeNAyVpGq7B1Tj+
-ueLHimbicQuF8dAI2ChRkbXFZME5OjH5EYnK0tb9IBpENfzv6nVboWd7zYci
-6OwoG17AdKXPR1R85LZSzPjQPBOXsfMNnhexFGavOF99nOLz9l1UNHztcJ58
-P2yX1mpRdpYfhvd1u5690KDjxqdYtVwPhYbh1rHGE+h1U5r24o/bP8NiXNfj
-wvb8LipRwYjl97WP5VPu4mBv/Wh8fWX9LwF+M7ahnydI/Q5FdtOVUlDwIwTq
-g93w7GAb1R3OzekTFNux9xWCYKW371rJhSCPhk7C6Rq6qSyOKmKq/POXY9i1
-3NORlhhN0164Pzkt0Su8pkRhuA/5QUZ3U4kKXPRnCimedfbQmTdxh94lpby1
-BmzFYamkVGsXAIcU0G5XY1EYOOIC9zUQMNjFuK/8elOXSh7P+9OMSfdjMTh2
-VAH4njoiY8Ul9GQI52GvLPEnINsJP6nvPQ13ouavUG5pcfFED7gD3Plx25Ub
-zxncdmzA8IIopHne2NDsY1sGSAPKxwqsgjGqEzAtp2K5Abws0crbShq17mvO
-sVOckwlgXif8E6lbyU/AmesMp96OC6EjWHVvPAHh9zqFBYLGYTHEeuEjvcOe
-+lhj0O/QW8aXpJPWA9xGRBh4v/j9/N10dtJDlEo9GJDiwYVImG3SWu2n6Qaf
-uK5jxqCq5nU9x6jhk79e2Qu3OJ1OZzF+ZqcwezOfnc3Ppk6BE+4nRD90+wCM
-6syE0YsNgLdMf+l0N/1/AajjyGY=
----
-eJzNV21v2zYQ/u5fwXHY0AKV6K4N5qWSgDXYhw4tVjT7NgwFRZ0ldjSpkZSz
-rOh/35GUFLl5aYYFg40kJnnH43MvPD5ZFZ3fqarogDfVipDCS6+gOlPcuVPy
-2rTP7enpTzsu1S+D7wfvwRYs6QTtHXhOOu/7DP4c5L6kZ0Z70D779bIHSkSa
-ldTDX56Fk14Q0XHrwJfSmWyzOfkhe0qjKSX1H8SCKs/9pYLzDsCTzsK2pHnO
-wg+zjRGZC9JcOEeJxzNG03G+g0by0gkLoKNJHMreL/U+8D1Pq5QortuBtyj6
-GVfP02rc91WW4dd20MJLo0lv+jPTwKPBqsfkI0oI6blFv/Kt5TtwuTODFZAr
-I3jcUBJURb1P+MtYlkWjLJ1brQqWgl3UprkkdSuMMrakF530gOevVoXntQJy
-IRvflfTpev0NJbWxDdhyTQQo5XoupG7LNRouvCUiZAs9DGnJrLmgcb2Z1mvZ
-Zkm2xXxEF0kRhsTJv6HMnlXFy5Txgr3E8buqYEFc3Zh+NM18M57AlWx1Sa1s
-u8lwAn8AM8563jRh9l1UIxH4ftzvTU/H5SVwt+NKHUB/pU/H07+suyr4QQFt
-pQLHVPCJmckbBsG5efre1nkoU1rdrZfbumB8hnEFCYf2ysF74Xwba+lf+EXG
-z+zfnJuEfdoqLrlG9UXm5p13Y8dBSGIq2yROsklQ1Ha6KKTmWoMloabxKxR7
-KGHWyH01l/Iy/ycHhY020fDC37jBDXX0mFZvwHemcRHGDRgKPGbaqfEuZkq6
-g9R//WaNn+cbWm3V4Lrg+JNr0u9ppeFilD0U8h+9t7IePNwO/vpVOfnC5Vhe
-OoFVA3bONsfzMot3/1tdu/7Fb+9+T4NlXS0LK+qHmNGKC+E/V6tuLer/E9jg
-u9C9jxJcY7Al6KOE1ht7nAl1YPeRQRwhtKH+APe5B3N3XOHqAzSKt0OtpCDx
-AUYOc1u/u5EWLHoHso71Zygm0nANQTplPD+0wxCCks7dELlJ6oh19eh9kD0h
-HXdd+fHTY3LVPQ95Qe6sYKOF8R3y3LbI9GjiR3OSUDGQPQy5FfElCn/u8Pg/
-h/aVdp5rAccQ3U2K7vgaYXzvFdHNQ0V08V42kBgpMtaAqa9WDnRDkOMQrknk
-OxgO3xHfYQ4GG1gKqYftFplEwfpqeipHHpC8JgurLrEB9BKJbuS94V+NfwAq
-IthH
----
-eJzNVlFv2zYQftevuKnY0AKR5bTNliaSBjRAAQ8tUix9LyjxbLGhSY2k7HlF
-//uOpOTIi7N2QFDMsC2SR959d/fdUUnRurWsihYZrxKAwgknsbqSzNoLeKtX
-L83FxeL6undd7xyaIo8b/NY1Ogatc12Gf/RiU6ZXWjlULvuw6zCFJs7K1OGf
-LvdmLqFpmbHoSmF1dn5+9io7TYMqKdQtGJTljdtJvGkRHbQGl2U6m+X+mxuu
-m8x66ayxNgVHNgbVYb5GLlhpG4Oogkoais5N931iGxZXU5BMrXq2ItFvtHoT
-V8O5H7KMHsteNU5oBZ3urjTHp72Rz+AzSQA6Zsiv2dKwNdqZ1b1pcCZ1w8KB
-Emgr7ftCvzzPsqA0j3arpMhjpIta8x3Uq0ZLbcp02wqHZD9JCsdqibAV3LVl
-ejqf/5hCrQ1HU86hQSltxxqhVuWcFBfOQONTRR76tGRGb9Owzsf1WqyyKFtS
-PoKLUPghWPEXltmLqngd013kr2n8e1XkXlzdzz3pzR0f1DMpVqpMjVi1o9aI
-/ABjmHWMcz97HrZBQL0ZzjvdpcPyFLVdMykPcC/UxWD963sT6bHnegSeC70f
-z0w9qrhTR0NzB+6bbLwPJPgPmGD4FGxg9j6uM18b6Xi02TFF2ydR35/MWfUv
-2GngExD5FsVRNgqK2owMh5ophQY8GenhWUrU42IzouAYGUuMTquiq5LF9YPI
-q0l3YBUItdG3aKEzgljmWlSwlL1tgYqDZsnWsK5DDqRR15+wcTNYLL3Er1hn
-kK2BC7QnZDCJBickHEwetCQySk3FgnAWJanScP3mDTDFg1a7sw7XiW9HQvUE
-jHDQTuoYxuxgy3YzihB56L38oGEp6BzRBbbtjnQcguInQB2GOQQGRLIVxU5R
-F+DJT0/On5/+fBmIF8a/XAYAUutbYCEMEDk4Wssp2hT1/fOuesZ6OTvoAnSE
-kjnhWDhg+zqwLK3eoWs1tyH1R/I+Ta6HnElhPS33SX3ybk6fM2rIjdQWfVRP
-7knng5T/elT+8lVaKdwOssGzhDj3CP6972spGgitinL3kLNHG+ikJ1F/nv8D
-xdhe7yGIVgb73lcfuDLdu0pdPLpbV08/etkJfKQkn0DLbFt+/vIM7gI0pbA1
-TT4oGWrfMbOiazGNl8m+F9BGfzOmFQ1C9fu/o04/VLqB1UdBHK8jhcjtQPtY
-nb6ctoauJxoccvexUrpQ1jHV4P8gq57gPqt7klNmv5rFs/ljZfE7OXk6cfIb
-XTz9LkS98ojGq8C3z9DWJW5QDl39gIDDXRZ9hYk6G2808o3essJLl3/J/RtD
-IHff
----
-eJzVWm1v2zgS/u5fwdPiFu0htpMmdtNUUtHtHg45dK9F0y+HoggoamRxS4s+
-korr2+1/v+GLXpw69hZb2L6irSkORc48M3w4Q3sQl2Yu0rgEmqcDQmLDjYD0
-laBaX5HXcnahrq7wYwYqHnuZHTUHQ0lpzGII/6n5XRK9kpWBygzfrxYQEeaf
-ksjAZzO2KzwnrKRKg0m4lsPLy8mz4VnkphK8+kQUiOTGrATclACGlAqKJBqN
-xvbvWOWSDbWVjpjWETG4RpjaPc8h5zTRTAFUbkps8oXpj/uV3lHfGxFBq1lN
-Zyj6J/be+F733l+GQ/wo6ooZLiuykItXModHtRKPyW8oIWRBFdo1KhSdgx5p
-WSsGIyEZdS8kBIfiuC/4bzweDt2kY79uOojHHuQ4k/mKZDMmhVRJtCy5AVx/
-MIgNzQSQJc9NmURnp6d/jUgmVQ4qOSUMhNALyng1S05x4tgowqyX0ELrlqGS
-y8j1501/xmdDLyvQH85EEtsm0fy/kAzP0/gn7+l4/BO236Xx2IrTNbfjlGOT
-h5mp4LMqiRSflc2EXuk19dzTgua5fXrihhGn8F1438hFFLr7Cus5FWJN5evq
-Kqy+e+xAWLXH2qAzmHC6j1QWehUspOZGqlXX58cUlDXdMV2LvIIL0OP+2FuV
-jWw0R2m/F1+Nx7TVsdMXm6qz/g8Z8dYF2DcY/Sb7FZjZsjY2rId8LHqxlzWC
-OFNN9JOMVhUoYgMVP2wEY1jm/K5RIAcfzRjtURov0sENAPmTsMXjhf0PV8HV
-2s8urJpAmqztDHwFjehh417QdebQidJfwJQy187kDfb2japwMw8F1xbO1pYf
-fjnFP9PLKE0Sq+bJfdHkIko/fNwomk6iFJXeLDtzMm74HTww8TRKgbJys/Cp
-F96KwMmbxuDyMzCbZecoEzKjYrN2OD3Xt0pK82LzgFN0ItwhXW+e/tL5+JYj
-/6vqgUUmz6K0guXm+RFVWZtFbXACvXmRKdrgifgBOQKoYC7vYPPyT1CMBm5+
-F4VGUdb65nvF40tjFM9qAw+H5NdMOtnBnX1OZmAxj5rlKa43VHgk/FhlevH8
-w7uPvtFnlj61uPF2J3TheX9o+iC17VG5ohbCto5SObczjlKzo4Ws2+xHqZ7n
-mSNVzZRHqZjjz92atYnJAHu/A8O+rTPBGXEJLdYEDx3/G9PsHuliFn96T4sm
-Cf9KA79KWN8eJRaAJGqPGcz1w1GTpY8ek+6w8an1SCs2DoN9gkQMVXh0Y6bn
-SovWGzjQ1klRio2QNNF0o3EPJWsDm629A1OrShNTArF6kZCJkescvc8ZFcRI
-zOcGa1r61O11m3CMfAKxlrjtC9RzD2qTwuyC9fyoYCXbYbWvHgTUCw+qzWYR
-0NvmiN2K7MVekP0HGEIDnIiDKfGpUY8USs495m1xR6QiFReEF+GlwZLq6scf
-Lp+cPX1uSCHrKh8dBONJCFww3wDyZC8gv+afYGd0fvhI4DMDe61SUkO4IYpy
-DZr8C434u1IIPC++MuX+LORY3DH17vB1lmOR335vXHISYud3MhqNvmzzz3Qv
-/vk3B5HrLu5plTdbokDYMefEwA8dvHI7Qq+0gflhoH3aQdtWqQFh//hlN7BP
-vxewe7L50tu8Xvqi0b5UPrO27zb6ci/RdB30cxFjMbAx1L/Ccbd/3c698BuX
-yflCVnic6RF5ySwR6IGsxIpkQrJP2PleEg0YeTUr7dQ2LHHwCWEKqIGOxS1s
-+cBxwPS5uw8KfODieoZ1pyUXWpG2MjhMGD/zLnUXFX3CPiG33qt4zmC7vcsx
-qrYyf3lQUKG3U/uzvTh7Jx8re3+vkMa98ehGZA+czZBze9mNXbY0G2AVdBW8
-0O4sD+VaWeGA8ZeXNuX/WZJrUtI7530rekEevUF6Uks8OU7IdXC8wPO6wl50
-+3wVrtiDSD+2V4Kd1ZsWbTzQrftyjus23S92z+B8dk9tBQzDxpEpfAZWuwt+
-NxCN0EIubbqH8WWRW2LcZ9zc07X10Frc/un65rrShlYMjqDEsZeBjvbChaDd
-Jq69LfKnp3uJ/BswznmBdZxaJF+h9jYfF6sR+Vli2FeYrdOiAGYIK7nIMfYO
-Qjf2WthC2bsatmg2j1sBPdsroEElbjDZLvoQr4H7HtnQJuOOCA+DaKi/m9tc
-C6drb8VyP3W4xXJZgqXCPoJOPTxKX+Hpl+FRiqPWIxYKWgujbTXpgB3YIxNz
-aKRo5ITcV6DaKMdL4Yi151L/hA3d7v3Qfxj/hFK+vclHB/n2Vgftp6J/K4Bq
-ILnsihU8JMMO8FoeBLNQqa99Q2IDu+vYCt5+ivaGKd60SvXDmGQrZ5JlB9QS
-EEsGbcwj4rbAWRHD5wfijUnLxA7bv/1RcPdTrL/M8y4z1n0wsXmUeIZSu/lG
-7lsg3U99/c5p1kc13Cxx3TBzC3Nlefh4sA21dveV7Y4L0en/WWE9DYV14nlO
-2hNzq33fq4YOv4fwupFezGj/qwhUR+Yr+4L7/dT/AOXuurg=
----
-eJzNVm1v2zYQ/q5fceOwoQUq092WoXUlAm2AAR0WrEj6bRgGSqQlbpSokVQS
-r+h/35GUbCVxkg4ohhq2RfHl7rm7546XFa3vNCtayQXLAAqvvJbsVHPnNvCL
-aX6wm8250Vr1zU9Ky19HP4zeS1vQtDOc6aTn0Ho/5PLvUV2W5NT0XvY+f78b
-JIE6vZXEy2tPg75XULfcOulL5Uz+4sXJy/w5iaJQz19gpS4v/E7Li1ZKD62V
-25KsVjR8qRWmzl1YXdXOEfCoYxId3zspFC9dbaXso0gcqsEv9/3JL3maJaB5
-34y8waWfcfYizcZzX+U5PrZjX3tlehjMcGqEfDJa/RQ+4ArAwC3atdpa3km3
-cma0tVxpU/N4oATcivs+4o/SPI9CadLLsoImlxeVETuomtpoY0ty1SovUX+W
-FZ5XWsKVEr4tyfP1+hsClbFC2nINtdTaDbzGqJRrFFx4C3WIGVoYwpJbc0Xi
-vJjnK9XkaW2L8YgmQhGG4NQ/ssy/Z8WbFPeCvsHxOStoWGYPkAAVUC8mPVyr
-pi+JVU07i08m3AAb3wYuRHj7Lm6DCP9yOu/NQKbpJXzXca1vGPC230zaH9+b
-6WAENTNwapM1W7RmP7my1SzrIBeH9oDyk5S9i7T4D+Bg+hR84voNJ69CxpD5
-eL3jPR65FYa9BMrZAzbgIEQkMTEtp7V5oajszH2oeN9LC4Gm+Aj8RVIKdTkj
-ETJxGblOWDGgkBn+MaokK9jxUsIZ5ODGKkoGs80e8gS7e9i33EMIqYMQURTR
-R1aDsZlXnVzBayRcQMo1tNy1wG0zdhglhyO5QfsDfqHDn2eF92zT8esgAj2D
-EzTMCsHO+LXqxm4SvkXFMmoE1UO181gF0EdUiIUcb7GCHJeCZee2ECexWoqF
-GBpBUfQ7yw7PQ2LNqXRyo1LgEQzrgnXxAHo48o6wM+lbI1wkwREGLMPcY3HL
-tXKBqPuwfH22xs+PLwnr5VUIwbPPh+2191ZVIzrzXnh368rJI5VkWaFqjLu0
-+4ziqC+3WC6/7Ss3vPrt/Pc0WObvMoHj/uAVwmoz9v72PnZv9fgfkR3Y+0Vi
-C0n5RWJznlv//pPQ7YtphrOfgffvxkqrGuIVjF3MfQl6tDFYpAL2HetbKOa2
-4Q6CpGXSH7I7OKEk++TG7iQleMWe/BHWnsXqWX74+BQeKffO1nSSM11g6NkG
-Oz6S+qR9sHBjaPrQ9baO11f4O2b3dC0lzLC4fVy6nBAltlKxswot7b9oYGfy
----
-eJzNVmtv2zYU/e5fccdhQAtEppO2WOdJHNBsGDK0S1B3nwNKpCVutKiRVDKv
-7X/fJSkpcuP1AQTDjMQmeS8Pz+F9SIu88TvN8kZywRYAuVdeS3auuXNreGnq
-p3a93uydNvVl77vee2lzmpyC+056Do33XSb/7NVNQc5N62Xrszf7ThKo0qwg
-Xv7laTjqe6gabp30hXIme/782XfZKYlQWrV/gJW62Pi9lptGSg+NlduCLJc0
-/FErTJW5YF1WzhHweMYAHec7KRQvXGWlbCMkDlXn536/8xueVglo3tY9r9H0
-C65u0mrc91WW4c+2byuvTAud6c6NkI96qx/DW7QAdNyiruXW8p10S2d6W8ml
-NhWPGwpAV/R7j/+UZlkEpelctshpuu28NGIPZV0ZbWxBbhvlJZ6/WOSel1rC
-rRK+KcjpavUNgdJYIW2xgkpq7TpeqbYuVgicewtVCBcqDGHJrLklcV2M66Wq
-s2TbYjyiRMjDEJz6WxbZE5a/SCHP6Qscv2Y5DWZ2PP6ITb0YjuBa1W1BrKqb
-ETmxP+AZZx0XIszOohtE5jfDfm86MizPmbsd1/qA+0W7Hk7/tO8i5wcZtFVa
-OqqDKGpGNdRFddP82pbLkKiEfcJxacuc8onIHSkc2juJn8X0KqbTFyiD4TMp
-nKKTyI9bqz1v0X0Wu2nnx7njIIQxZW4yJ9toyEs71gqUvG2lhZDW+BPyPWQx
-FeqGTdk8z4BnB7mNmAg80xs3uL6Migl7JX1jhIs0jnDI8ZhxZ4vlmGnlDoL/
-9asVfr49I6zSxskg/OSe9XSwih+O21eEtfJ2sA3KFqj/4PiR+B33i7bSvZAC
-dkb0aEtbP8o7hgErpx2Nu6g/Cz6EpVpcr7HPOs9bj4jBlz3cdV/1pVYVxH4A
-u3+9+6Ndalb02ARXH7AYe9g9BumU4fxw9UFrQaabx1aZbr9kj66D7QQa7pri
-7fvHcBepD9rU0tmKDhBDUXhua3zykNSvpyJBx/DwIQwHsSzC11HJs5AJmfo5
-9vtAsGOLN420ErCS4Umkh8O632FdO0Towm4dvjwq92ytBFoQGac0rAnBUoOB
-aDkBIbe8196BNxBFx5ISM4jQjbrjGMl0CPLy8ufrq4sf4V0cnV/+urmHuMXQ
-aeX3RzFH433U3zY/vZ6waJSZsvGhkvEiJnsl/w/5eJryceoWmJOfl4WnD5WF
-/5HQs5nQL5B59kAyh2dLogizcnPpCYOU8P0pvk6FV9h/AFw8cSA=
----
-eJzNV21v3DYM/n6/gnWxIQHic16x7GobSIINybCuQTOgH4ahkGWerUYnuZIu
-6a3ofx8l2feSJmmGZcAOSU4WKZIP+Yh0RnnrZrLMW2R1OQLInXASyzPJrJ3A
-r7o5NJPJKbOC/6zNjDmHJs+ijteeoWPQOtel+HEuborkTCuHyqW/LzpMgMen
-InH4yWXe0yvgLTMWXSGsTo+Pj35M95JgSgp1DQZlceUWEq9aRAetwWmRjMeZ
-/8lMrXlqvXTMrU3AkY/edHieYS1YYblBVMEkLUXn1vU+sBsWdxOQTDVz1pDo
-F9q9irvh3Is0pa/pXHEntIJOd2e6xq25kdvwmSQAHTOEazw1bIZ2bPXccBxL
-zVk4UACpkt4X+s2yNA1Gs+i3HOVZTHZe6XoBVcO11KZIblvhkPyPRrljlUS4
-FbVri2Rvd/e7BCptajTFLnCU0naMC9UUu2Q4dwa4rxYh9GVJjb5Nwn497Fei
-SaNsSvUIECH3S7DiLyzSgzI/jRXPs1Navy3zzIvLe8tPpjNX9x6YFI0qEiOa
-djAcg98IMzx1rK79035QgxD4TX/e6S7pt9cDtzMm5UboF2rSe/+27ihnGwSa
-Cok2kx4TwevRrFbvTTX2DE3KB1XGpsoztnS+CoSWZgXrSdFdBgb9AzTQf5ao
-rsSsk7isSwx+MMAXTNGhOzpLI/ANHLTwZYzEjeIoGwR5ZYarAhVTCg14VtOX
-pztxuBY3Qyw1RurT1UjKvFsrzCaz+vTf7TashM7oes7Rgp67bu5AimsE1wo7
-oYC8wc6EWN+dvP0NqHwNGkU3cwIXUBvddVjDbAHvtL4W+MIf8eo+kjdmZQvE
-FJxhHIHWWj1uesuzifgAzMHe/vYEzrWjRuGY0xsOTqTVOyAc3WYpCQc6t0g7
-I+jyMbWAnz5xDInxKg06S7s1EcGVQtkOuaN8U8vAGzQLilE1gNLieAitHJ0z
-2wIzzXxGbCIIist5jUPsfRE9Jz25Nq6bd1KT8za4iEQkpfJc38LMx0YN2Wec
-ktIiWMf4dcyO01AL20m2GI9G8dgGNWhBxS9Hq+9VSxiawNFGd1tFOHQyf8DO
-q3ABkvI1ulbX9h5fgYbrXPO1SaWwG/f/5etd+vxwmJTxKntO7XwlPhrE73X1
-IaT+Pq2DpFR428t6gCPixzPAvJxXUnAInZiG2UOY750Pa/2Wxs/unSiG6fFV
-BNFL799j9fkrkiVUGlIRblVutUS14vOXbXjw/lrDs/5o340cUZNmfRIn5LI7
-kaIf90lJi9CJ/J9HoP7rnF4oIrAi8v4P0noY0zpQkTJL11u5J+X18Hnz+p9j
-PVrHurxXBJmWTwJ89FyAH5pHoYtGzxZqRq+zjHPC6rNAnU7Qbjj2lJZ65aix
-N6tWeun7vPWtneYWMAvK+5F32uZ9lpZzYd3Y5gy0YiYkMz5IrmfUsevUd2zA
-4ah9gp83oSJfRew7vn9r9t0/Fm3H76kg6P2T6O6cGsOJIv/Mv3OMvn95vL+3
-/wpOjGGLCfyxtwP7O3Dw56Mzo3+jiJyCtULZ+F5B3KGX5vAO7f9t+RsD/xZH
----
-eJzNVt+P0zgQfs9fMWeEBNIlKQfcwuLkgT2dxAl06JZ35DjTxODawXa77CH+
-d8Z20m1hlx86Hq5qG9tjz8z3+ZtpCz6GjW75iKJvCwAeVNDYnmnh/Sk8t8MD
-d3r6p3UbEQI6Xmdz3LjBIGAMYSrx3VbtGnZmTUATyleXEzKQedawgO9DHYM8
-ATkK5zE0ytvy0aOHj8t7LLnSyrwFh7o5D5caz0fEAKPDdcOqqo7v2vVWlj5a
-K+k9g0AxZtdpvsFeicZLh2iSSxqqKRzueyN2Iq8y0MIMWzGQ6S9aPc+r6dwv
-ZUmP9dbIoKyByU5ntsc7W6fvwgeyAEzCEa5q7cQGfeXt1kmstJUiHWiAttK+
-j/Sp67JMTuscty14nXnmne0voRuk1dY17GJUASl+UfAgOo1wofowNuzeanWb
-QWddj65ZgUSt/SSkMkOzIsc8OJDxoghhvJbS2QuW1vtlvVNDmW1ruo8EEXgc
-glf/YlPeb/nTfNm8fkrjf1peR3P7+c2T1zr0s3Oh1WAa5tQwLj5z3kcZptkk
-+j7OfkvbIOW8m88HO7F5+TBnvxFaH2X9zJzO0b+9t+DiSDtrpdHXOsIhZDOa
-q9Fr11VRnKy9cUvlOl6LffCrRGjormB9V3Yvk3h+AM3f3RuU4SuxaRCpzzrL
-5mxbDLxzi7KhE8aggyhCekR1kuR6tVsS6DErlZTMWj4dkLkXwszWQUsQLSgP
-woDofHBChuyNVkgpYLZaFzaj4HV0WVNACrx/XklnEcvDowKgI4TngKZ0wG+7
-RBRrX2AYbe8T+mugH+IzVLOlVv5IJ7derOh1csLafOUR0a9fmH9nrcGL2Tan
-XhCvPwHAy22nlYRUhtTJbkJzbXM4qDjqPavPslhaxxcZ5Chz/Ig1MtOwPVTq
-UBlu194ZhR+bDx/vwnVq8E7W86msDAjCDdTjWe6MbK9tJ2ObZy0NUjnFr6+g
-/M90PjM+CCPx/8DoSWZ00ReRSt0Gd9QKvsXqyc9i9aYqL2KZ/4FrZRDCqBYB
-gqJ6BiI113KwkJOHXgRRHVXy3FvmcwfOfe4whJd+7dKPX/yr8QkDKq7U
----
-eJx1klFvgjAUhd/5FTf1RRORTDfjsBCTZT7tcX+gwAUaS2HlKnOL/30tYOYS
-1wdKOd85XE7weEmVij1eoshiTpIUxho7mL7VxaMJQ7u9nlDTjAeD6PEKSUBJ
-1Pj4cZSniL3Umiziv58bZJAOp4gRflLg4reQlsK0SJFsa3+zeXr2H5gNauns
-AgEWhw6+rVHVJoTJyq79fgu5DfI7lEVJISS1yuDi2LSiX7gwiHpE+7gQJAkl
-04FtydwEr9dLu/6nDcId+uLxYJyUB31NHk/q7AxJ0aMR60pJ6D6oMRjzthEa
-UiXaNmJ2VhZPYC8VgnKFBvaKrs+FSeagpEZYrmy+9bgiAP7YDx2LM8xHHaSW
-JO24XzhVNkTNXWaBZg5kROr2TJCY9TkAu5HZXcWdUyGC8fmt52rRokIL5kel
-3K2D+zcsBmE8XOX7A6POxoF54Aqxrbm6+vbcv/YDXKHJ+g==
----
-eJx1kstugzAQRfd8xcjpIpFCUPqIUmLYVMqqUhftvuIxASvGUHsoTaP8e20g
-fUipd7bPvTNzbY+XVMnY4yUmecxJkMRYYQfTx7q41WH4TDlq/dRS0xKhnvFg
-YDxeISVQEjU+vrXiPWIPtSJU5L8cGmSQDbuIEX5Q4KpsICsTbZAiYWp/vb67
-95fMGhk6OEOAxb6DoxXKWocwubFru93Azhr5HYqipBDSWuZwcmxW0Q9caEQ1
-or1dCIISKbKBNaR/Ga9W13b9T2uEC/TJ48HYKQ/6tDye1vkB0qJHI9aVgtAN
-1GiMuWkSBZlMjImY7ZXFE9gKiSBdrkF9DjSwOZla4veBWeh0DlIohOWtLWlt
-XDYAfxz3HYtz3I33IJQgYSf4xOmrSiqcQ5mYMjqeZr30gti0DepRftZcmf6x
-B/HsclFU+ajigZvThuFS6ENxP+kL5bfB+Q==
----
-eJx1UkFuwjAQvOcVK3MBqSEqLYgGJ0KqxKnH3hAHJ1kSCydO7aUpqvh77ZCq
-VLR7sa2Znd0ZOeAV1SoNeIWiSDlJUphudzB+0eWjieNn3exleTSCtJnw6IIH
-vEYSUBG1Ib4d5XvCHI+wofD11CKD/PJKGOEHRX7CCvJKGIuUSKvD5XL+FN4z
-J2Tp5AUBpocOPl2j0iaG0YOrzWYFeycUdijLimLItCrg7Ll5TT/k0iA2A7WX
-i0GSUDK/cC2ZK+HFYubqf7ZB+IN9Dng0bMqjPqmAZ7o4QVb21IR1lST0hlqD
-KbetaCBXwtqEuV1ZOoKNVAjKhxrlV5lOTXYHSjYIs7mb4fp8GAC/JA4dSwvc
-D/gtZlF9g9PtbtwKI+rJCtbr/ma3/bG77cOmGNp45Pd25ryr3qT/FV8fsrBc
----
-eJx1kk1vwjAMhu/9FVa4gESpxjbGSlohTeK0426IQ9qaNiL9WGLo0MR/X9J2
-GhNbLlHix6/9OvF4QaWKPV6gyGJOkhTG210E49c6f9Bh+FJXe5kftaBaT3jQ
-Ax4vkQQURI2P70d5ipjlCCvy384NMkj7U8QIPyhwJVaQFkIbpEia2l8uH5/9
-O2aFDJ2dIMDs0MKnTVS1DmF0b9dms4K9FfJblHlBISS1yuDi2LSkHzjXiNWA
-dnIhSBJKpj1rSF8JLxZzu/6nNcIf9MXjwdApD7pReTypszMkeYdGrC0koTPU
-aIy5aUQFqRLGRMz2yuIRbKRCUG6oQXo105lOpqBkhTB/sjVsnhsGwC+JQ8vi
-DPdD/DZmUH0HZ/bxxo3QopzCSagjTlawXncXZtttO4j6yK0OVtkgwwPnw5p1
-LjvT7pt8AdeUtds=
----
-eJyFlE1vm0AQhu/+FVMsVUllIE3SKMULUlXVp56qnpKm0QJjWGVhnd3Brhu5
-v727gL8U3O4FoXnnmWHmXUaspEomI1YizxNGgiQmWWNIVY8SlygNnH1VxbWO
-os+qnoui0ZyUPmdhJx2xColDSbTw8bkRy9izOsKa/O/rBXqQdW+xR/iLQlds
-ClnJtUGKhVH+7e2Hj/57z4IMrR0QIHhawYtNlEpHML6yZzabwtyC/BWKoqQI
-UiVz2DhtVtFeXGjEupe2uAgEcSmyTmtIH4Bvbi7tOa3WCAPqzYiFfacsbIc2
-YqnK15AWrTT2VqUgdB+00Jgws+A1ZJIbE3u2Vy8Zw0xIBOmGGmYHMw10OgEp
-aoTrS1vD5rlhABwhnlZekuO8j7+OGZTbYHC0xrN33fO8ZQ5QNVKj6y3Y7rxA
-25JS9FoqdvU7ZmDEb4Q4hotT8LnS2xQxwNuVvQiC4IDZ4wBqXtkCfbl78RCQ
-ejS76D8a7BL/HEu0XU/4w4Qnp7jvts1/M5T/8/6Tf/cQHm6qO5oLg+Dc/0Vr
-pSfw9rlRNB2/ONYGhIHaDpXD0loth29NugZ7ZQzxmtpynXwCGZcS9emPxDo/
-Lv5/RXuTA+sf67Lt9e59MWy1PYGFzs7W887srffdf+MvQ4BeDg==
----
-eJx1ksFuwjAMhu99CitcQFqptgFiJe1lE6cdd6/S1LQRacNSs4Im3n1J6TbQ
-WA5REn/+7fxJwCuqdRrwCkWRclKkMdVGFNmh1tlGaYTxqylnNo6fTbNR5d4K
-MnbCozMa8BpJQEW0C/F9rz4S5jjChsK34w4ZyPMuYYQHinyxFchK2BYpUa0J
-l8v5U3jPnFBLRy8IMN128OkStbExjB7dWK9XsHFCYYeqrCiG3OgCTp6VNf3C
-pUVsBrSXi0GR0Eqe2ZbshfBi8eDG/7RFuEGfAh4NnfKoNy3guSmOkJc9mrCu
-UoT+QjuLKW93ogGpRdsmzPXK0hGsvavamxrJC0+nNr8DrRqE+czVcHneDIAr
-iW3H0gI3Q/xvrEX9HZxePePYT42ocdKLAhRIKCmz6IjhSEjaC535PHgxcl+7
-h5s22I19x/3iR2RyuzVsiqE6j/z1nUfenN4r/8++AEcxy70=
----
-eJx1kk1vgzAMhu/8CoteWmnAPquOBi6betpx9yoEF6IGwoIZrab99yXAtHbd
-cokSP35tv4nHSqpU6rESeZ4ykqQwVZrn20Olti0ZWRcwf9HFvYnjJ13vZNEZ
-TtosWDTCHquQOJRETYBvnXxPfMsR1hS8Hhv0QYynxCc8UOTKrUGU3LRIiWx1
-sFo9PAY3vhVq6egEAcJ9Dx82UWkTw+zOrs1mDTsrFPQoi5JiyLTK4dOxoqIf
-uDCI9YQOcjFI4kqKkbUDnQgvl7d2/U8bhD/oT49FU6csGmzzWKbzI2TFgCZ+
-X0pCN1BjMGVtw2sQirdt4tte/XQGG6kQlDM1Eieehia7AiVrhOW1rWHznBkA
-ZxL73k9z3E3xy1iL6jsY/nrI+bgtBlGAHAkFbQ1aYrrigjquti4PnrXoKvtw
-YY39WeZFSazzqSKL3MjWF2fI4I/7XV8tB8kL
----
-eJx1kstOwzAQRff5ilHKopWaRrxKSZ1skLpCYgF7lMc0serYwZ4QStV/x05S
-HlLxzva5d2au7bGKapF4rMK0SBhxEphI7GD6qMobHUXPVKiWnlpqWiLUMxYO
-jMdqpBQqoibAt5a/x/6DkoSSgpd9gz7kwy72CT8odFXWkFepNkgxNypYrW7v
-g0vfGhnaO0OAxa6DgxUKpSOYXNu12axha42CDnlZUQSZEgUcHZvX9AOXGlGO
-aG8XAadU8HxgDelfxsvllV3/0xrhDH30WDh2ysI+LY9lqthDVvZo7HcVJ3QD
-NRoTZppUQi5SY2Lf9uonE9hwgSBcrqE6BRranIwS+H1gFjqbg+AS4c5WtC4u
-GoA/hrvOTwrcjvfAJSduB/jE6atMa5xDlZoqPhxnvfSM2LQN6lF+0lyY/q0H
-8ex8UZTFqGKhG9Nm4ULoM3Ef6QthAsHp
----
-eJx1U8GOmzAQvfMVI0eqgrZAu21Xu8SQQ6WcKvXQ3tqqMjCAG2OzZrJptMq/
-rw1ZJWkTHxD2e/Pm8cYEvKVO5QFvUVQ5J0kK89rYThDMv5jmo03Tr8UfLGk1
-HhLakCcTLeAdkoCWqI/wcSOfMvbZaEJN0fddjwzKaZcxwr+U+EYLKFthB6RM
-Dia6v//0EL1nTmignRcEiNdbeHaFytgUZh/cWq0WUDuhaIuyaSmFwqgK9p5b
-dnQkNxZRH6ijXAqShJLlxB3Ingjf3d26dZ1tES6w9wFPDk55MgYW8MJUOyia
-kZqxbSsJ/Qf1FnM+9EJDqcQwZMx5ZfkMVlIhKJ9rUr8GenyLbfEWlNQID7eu
-lSv3mQCcKa23LK+wPuAwFc/xySUdjmyAYlPXkMF4FrtujZPWosNT+CaDqSgm
-K0pPkGoJy/NeLjWWv3ncGFpMz9euKUz7dPZ8KvLj3a/9BIRwc12qocVPfSZ4
-2VklSMRrqavfpl7Ov5GVugmdxyPqjJxQpR56d1XDf9Su+bjk4b+oUVcHnCd+
-qm70fubjFfC/zgsdag50
----
-eJydVdty00AMfc9XaJwOsSGxKZRSEju0Q5unMjBDeKJMZmMr8VLfuis3hEz+
-nV1f0iR1L1M/2dLZI+lIK7fckOJo2HJDZMHQJU4RDhNcgHmZzo9Ev3/OCEc8
-wm85ZTkRCst1SlTLjZEYhERZD29yfusZX9KEMKHeeJmhAX755RmEf8nRcQbg
-h0xIJI/LtHdy8uFT79BQRJKWmhDAvl7ASh2MUtGH9nv1jEYDmCmi3gL5PKQ+
-TNMogLXG+jHdgecCMamgBV0fOLGI+yVWktgiPj5+p56H0QKhAb1uuU6VqesU
-erXcaRosYTovoJ6xCDmhLigTOHRlxhLwIyalZ6hcjWEbtJIQaWWdtBbUCZTE
-M+XYWGwx7ULEE4SjjyqkotHaAOwwXi+MYYCzyg884cRVBf/QnCQsxi6ETIbe
-am0VRwFOdSe/M82fgAemdv/q69iTrLT+vh8gFTV/Ad/xK0mNYWeboFOBHyOq
-stl/zi9GZz8vx5Pzs/HFZPR1vJP1D2JxpnIe8xjtJF3obs5IfZg7VVmD6tAk
-4EJrsFVmaXhZheXZTXF1ak393YsWM3ktK6PucGHdFeJeQnzT0rqMjWSPYO+5
-kpRqnx66MUqyFR/6lIrlZ3NDbm01RDAuEZTaScBEcCFEKrrw6iZPadBpr+oT
-6w7EuSSYIjC4VSMXwIa4BHfBZ1GE4uHEMQn25+FUCzRlUndNZ2zrdx3PhIO3
-XWhojLomdVMseNOAKLOx1X0r355QHiOJz8/K3GvrS0arPvyci/NgfTu1WY3T
-2Sj585OqSv+T8sSsp6DbeJE3ctkyn5o75EItRse8sq8Wr60Dp+Kux2vSXt3d
-9HVpa2xp5+qw82SpMs+wlm17G1rNW/ROGdfRi1ttd73Wiy2vf47/Ab2oSVA=
----
-eJy1Vk1v2kAQvfMrJo5UQOJD6UeUOoakqppTpR6SWxShxZ7YqyxesjsOTRH/
-vbP22kCAKFVbn/Dum7dv3o5naEUZzdS4FWUoknFEkhSOc1xA57tOP5owvJIK
-fxQ0L4jQdKNhhWhFMyQBGdG8j4+FfBoFX3VOmFP/5nmOAcTV2ygg/ElDd8Y5
-xJkwFmkkre6fnX363D8JmMjSsyMEGDwsYMmBSpsQjj/wc3V1DvdM1F+gTDMK
-YapVAiuHjWe0BqcGMffQki4ESULJuMJaMhvEp6fv+TmMNgh70KtWNPRKo2Hp
-VSua6uQZpmkJHQWLTBK6hOYGx5GdixxiJawdBaw1GB+DcxKUc3Woa0OH97zY
-vA3MtAdK5ggnp3wcUzhfALbYHhbBOMF7vw8ylyRZ/S/sTHIxwx5kwmaj5apb
-hu4JtsUcjQ+vY3ZAuVQeUhF2W57ukkyRxzCCsj5utFZ2kGCsE5xM+aXjwD0I
-S9QeXl5HT1wLnDgPnAwmLcNvw3rlbpdA19JLWbdb+3zRwbhdB7c98K7RvkMm
-GxsbEYNyG45GcE1G5qkPBTBCWgRX3d+M0eZFbuXR7x4LTedfTFrMuPZhrQRm
-hSWYIgjPWiEbh2OhFJpDKjFP6mrYB/Hl5Q6DJ66ERJDU+Wb9vJq5K8sbtDTA
-n9LSRWfjPrpN8q/E75aOph1uR3mAunb2mkSeCJN4dyuH2sfLJmbVBmmB2dlF
-g2mhhCmTrpAvTNxno7J/qHphuDFM/6XymvHozaLXd384Ldybla8LzG3BPS2R
-BmPS5tlJqWVsU4MD8Ufo8h/wTyf9/5TDhrHuyLdbyuiDZv6ViTuf2OVGV2os
-qPe4Y9c+8azsNNgedHx/vDjYHhZb3z6EB4FiC9jtgj+dG2/Ks4InyUTykOVr
-UrBskq+CtqY2sHGXvg6dZ9x/gDTwYlOgWw6u9g+dtUfR0M04HoRuApYD0f2H
-+A3dnKpq
----
-eJydk09P4zAQxe/5FCNzoJVII9gFQXAiJKSeVlpptbeqQvkzbSwcO9gTQhf1
-u6+dJqWIwgHfxn7vN5NnJ+AV1TINeIVZmXISJDFV2MHkl17/NHH8B2tN+Lul
-piVCM+XRThPwGimDiqgJ8akVzwm714pQUfh30yCDYlcljPCFIt/lFooqMxYp
-EVaH19eXN+E5cyBLGw8EmD128OqMUpsYTn64NZ/fwsqBwg7FuqIYci1L2Hpt
-UdObeG0Q1SDtcTEIyqQodlpL5gB8dXXh1udqg3BEvQ14NEzKoz6tgOe63EC+
-7qUJ6ypB6D+oMZhy22QKCplZmzA3K0tPYC4kgvS5RnoMNDJ9wPt6ZvIzkEIh
-3Lh+juGDAXiHe+xYWuJqOAehBAk3/j+cPKisxjOoMlslr9tpbz1itm2DZrAf
-ekbDXWsEJDDxe4vYFcuPDD0Ceufi3bnLm6Wnznc6aJZ7ct6uVtaN+oYfd77V
-YzTvG30FOZ/OSD+Iw1HcGIvlsOFerMKCjueNqhwwPPL36x6Bv/3+Mfg/6D/B
-uhDB
----
-eJx1ksFO3DAQhu95ipGRKkCbDQWKIOvkUrGnVqCFF/AmQ2Lh2GE8Id1WvDt2
-NrQglblZ+vzPzGcnsuXOlIlsUdWlZM0GS4sjHP5wzTnl+QY7x3gzcD8wIx3J
-bM8kskNW0DL3KT4N+rkQ351ltJze73oUUO1PhWD8xVnssoKqVeSRC+1denn5
-7Sr9KkKQ510MBFg+jvAnXDSOcjg4C7Ver+AhBKUj6qblHLbO1PAS2arjf3BD
-iHZGp7gcNCujqz3rmd4FX1ychvqcJoT/0C+JzOZJZTbZSuTW1TvYNhNaiLHV
-jHGhnrCUvlcWKqO8L0SYVZQHsNYGwUSvmXsTmtEk+O95SdsFGG0RTk9CwxAS
-zcT6kPg4irLGh5kAbTXrsMFvPDxW1Pij+Q4AKe0RNoNl3eE1kaPFx6TgRpRf
-ngbHq/Dkd0jPSGAdgx/63hFjvYTNzc9b0B4ovjRhvcfn5guolDFIn42Jtp5J
-mUUzQV/0NmmMf+8VdbvTIw==
----
-eJx1kl1PgzAUhu/5FSfdjSYy4tQ5WeHGZFcmJsZ7w8cBmhWK7UEkZv/dtsOv
-ZPau6cPT87404A21Mg14g1mZchIkMa3kYBo4e1D1tY7jJ2wV4eNA/UCE+pxH
-RyrgLVIGDVEf4usg3hJ2rzrCjsLnqUcGxXGXMMJ3itw9WyiaTBukRBgVbjY3
-d+ElsyJDkxMCLPcjfNgPpdIxLK7s2u22UFlROKKoG4ohV7KEg2OLln7gWiN2
-M+p1MQjKpCiOrCH9S7xer+z6n9YIJ+hDwKN5Uh75vgKeq3KCvPZowsZGELpA
-vcaUmz7roJCZMQmzs7J0ATshEaTrNVJfhUbaF/y9X+r8AqToEFa39kIrcc0A
-/PHtR5aWWM3n4P+YpwDM1BWNHd9gV77kQ1Wh9qlOGCwxG3jkRra5XCCfzz2L
-T7lNsNk=
----
-eJyllE9P4zAQxe/5FCNzACSSiH8VG5yAhNQT0h7gVvXgJkNj4TrBnpKtVnz3
-tdM0LSLZRVrfrPf8m5exJwEvaaWygJcoioyTJIXZbA4nj9XyyiTJzzXVayI0
-pzzeigFfIQkoieoQ39byPWUPlSbUFD5vamSQb3cpI/xFscffQl4KY5FSaavw
-5ub6R3jOHMjSxgMBotcGfruDqjIJHF26NZ3ewosDhQ3KZUkJLCpVwIf35iva
-m5cGUXfWFpeAJKFkvvVaMgfgyeTCrXG3QRhwfwQ87pLyuG1TwBdVsYHFsrWm
-rCklof+g2mDGbS005EpYmzKXlWVHMJUKQfmOxtWuoY4pSOb9PjKLM1BSI0xc
-PcfwjQH4hHttWFbgS6d/1SyqnRjN5idarPC0pbgqkML9fV/Nzrw4b8WBIrKv
-4U5EWqq7zjngNUhro0cz5cLiTvQ1x0FNicMYd4ssO7ZUuDDHo4Xo4PhT6+0f
-b6Sx+Tfyf5KhMd9O5rzfSXaAHE+Gat/dL6K7t1ENdfEZ/hcH9KvzuqYNP879
-GR77YXAT40elnRz/n/kDslRvxw==
----
-eJx1kj1PwzAQhvf8ipM7FCTSqHxUJXWyIHVCYmFDDE5yTay6cbAvhAr1v2Mn
-oVAVvFn3+PHdawe8op1KA16hKFJOkhSmlgrdElw86vLWxPFTS01LhOaSRwMQ
-8B2SgIqoCfGtle8Je9A1YU3h875BBvmwSxjhB0X+ihXklTAWKZFWh8vl3X04
-Z05kae+FALNtB5/uoNImhsmNW+v1CjZOFHYoy4piyLQq4ODZfEc/cGkQ6xHt
-dTFIEkrmA2vJ/BIvFtdu/U8bhD/oQ8CjsVMe9VEFPNPFHrKyRxPWVZLQD9QY
-TLltRA25EtYmzPXK0gmspUJQPtFIfwfqnIJkftzPTHYFStYI84W70El8MgAn
-vm3H0gI3Y/28ZlF9F2fDS67g+IQvJ7iLhqXTAZqOZ17PjVgXY5FHfjyXgR++
-z8L/ni9R58Ck
----
-eJx1kj1PwzAQhvf8ipM7FCTSqHyUkjpekDohsbAhhnxcE6tuHOwroUL979hJ
-WqgK3qx7/PjutQNe0UaJgFeYFoKTJIXCUoHGwMWTLm9NHD9vqdkSobnkUQ8E
-fIOUQkXUhPi+lR8Je9Q1YU3hy65BBnm/SxjhJ0X+igXkVWosUiKtDufzu4dw
-ypzI0s4LASbrFr7cQaVNDKMbt5bLBaycKGxRlhXFkGlVwN6z+YZ+4NIg1gPa
-6WKQlCqZ96wl80s8m1279T9tEP6g9wGPhk551EUV8EwXO8jKDk1YW0lCP1Bj
-UHDbpDXkKrU2Ya5XJkawlApB+UQjfQjUOVOS+XE/MdkVKFkjTO/dhU7ikwE4
-8a1bJgpcDfXzmkV1KE76l1zA8QlfT3AXDRPjHhoPZ97OjVgXQ5FHfjyXgR++
-y8L/nm8olsB4
----
-eJx1kstuwjAQRff5ipHZgESI6ANBcCKkSqwqddMdYuEkQ2LhPGoPTVHFv9cO
-gbYq9c6e4zP2tT1eUKlijxcospiTJIXxZhvB8LnOH3QYvhyoORChHvHgXPV4
-iSSgIGp8fDvI94g91RVhRf7rsUEG6XkWMcIPCpx/CWkhtEGKpKn9+fxx4U+Z
-FRk6OiHAZN/Cp92oah3C4N6O9XoJOyvyW5R5QSEktcrg5Ni0pG8414hVj3a6
-ECQJJdMza0j/EM9md3b8T2uEG/TJ40F/Uh50OXk8qbMjJHmHRqwtJKG7UKMx
-5qYRFaRKGBMxe1YWD2AtFYJyiQb1JVDrFCTT63yikzEoWSFMF7ahlbhkAH75
-9i2LM9z19b81g+pSnNhnHFaixDFce4w6I8BqdV0yG8dsIfqmbrfFKuvNPHD3
-tGG4FLpQ3B/6AqlawAM=
----
-eJx1kttuwjAMhu/7FFa42SRKNdgQK2mFNImrSbvZC6StaSPSwxKzrgLefUmh
-7MDmO8e/Pzt/4vGCShV7vECRxZwkKYxRpAXcPNf5vQ7Dlx01OyLUtzw4lT1e
-IgkoiBof33byPWJPdUVYkf/aNcggPWURI/ygwA1YQloIbZAiaWp/sXh49O+Y
-BRnqHBBgsm1hbxtVrUMYzWys10vYWJDfoswLCiGpVQZHp01L+hLnGrE6S3tc
-CJKEkulJa0h/A8/nUxv/qzXCH+qjx4PzpjzojfJ4UmcdJHkvjVhbSEJ3oUZj
-zE0jKkiVMCZidlcWj2AtFYJyjgb1YKhlCpLpJZ/oZAxKVgjTmR1oIc4ZgB+8
-bcviDDfn+nXNoBqKE/eOPQFgtbqMMf057A+VKHEMl/PDNayTqLJh1C/58e/d
-sBoaeODMsI45q3rn3E/7BFD6zkI=
----
-eJx1ksFOg0AQhu88xYReNJESqzaVLqSJSU8mXrybBaaw6RZwdyiS2nd3Fwra
-tO5tZz6+GX5wWE47GTksR55GjARJjJAn+UdZU1UToYKb1zJ7VEHwNlRumd+D
-DtshcciJKg8/a7EP3ZeyICzIe28rdCHpb6FL+EW+HbWEJOdKI4VCl95i8fTs
-3btGpKm1QoDptoGDeVCWKoDJgznr9RI2RuQ1KLKcAohLmcLRssmOfuFMIRYn
-tNMFIIhLkfSsJvVHPJ/PzPmfVghX6KPD/NOmzO8ic1hcpi3EWYeGbpMLQvtC
-lcKI6YoXkEiudeiaXd1oAmshEaRN1B8jNk5OIhnvUxXfgRQFwmxuBhqJTQbg
-zLdt3CjFzal/2dMoh+b0/It2LoDVaqzonthzWSMcvsf696W2FSjTYegIHq/v
-h8WAMt8GYlKzcXXp2f/uBxC/1Z0=
----
-eJx9U9FO3DAQfM9XrIxUHdIlEbQ9Qc4J11Y9qVJVXvpWVciX7CUWjhPsDeFA
-9++1k8CBgPohsuOZ2dlZOeAV1SoLeIWiyDhJUphp7GH2syk/mSS57KjtiNAc
-83i8DXiNJKAiakO86eRtyr41mlBT+HvXIoN8PKWM8I5ir7+EvBLGIqXSNuHZ
-2efz8IQ5IUs7LwgQXffw4IiqMQkcfXRrvV7C1gmFPcqyogQ2jSpg77F5TQdw
-aRD1BB3kEpAklMxHrCXzTHixOHXrfbRBeAO9D3g8OeXxkFPAN02xg005QFPW
-V5LQN9QazLhthYZcCWtT5ryy7AjWUiEon2jcPAZ62EVmMwclNcLpwpVydJ8J
-wAul655lBW6ne5BaknTO73F2pUWNc6iErdKH/fFAfYMsn7gDIdJSXUxYACOk
-Rfhiyq52o/tuTGPmLyVckiz7cNM1tPwqChAT1Ebwy6mB0AX8uAS8azEnLKIR
-OVWcQy6UQvOeNdTF874BVt4hpKPT6d+t67YQhFe+0Zn/PLa6Wj1Faf8M1L+O
-+6qKRbX9b7wHGzz2k3Tj9nMexu5fyT/V9gZC
----
-eJx1UstOwzAQvOcrVqkERSKNeFWQOhEI0ROPA9wQQm6yJBZuHOxtS1Xl37Hj
-8AZfHDuzs7MzDlhFc5kFrEJeZIwEScwkLlGmMLxU5aFOkpsFNQsi1Dss9oCA
-zZE4VERNhC8LsUzDc1UT1hTdrRsMIfenNCR8pdi1mEBecW2QUmFUdHx8dBLt
-hZbI0NoRAoyeV7CxhVLpBAYHdk2nE3iyRNEKRVlRAjMlC2gdNp/TJ7jUiHUP
-7egSEMSlyD3WkP5CPB7v2/U/WiP8gW4DFvdKWdxZFbCZKtYwKztoGq4qQegG
-ajRmzDS8hlxyY9LQag2zAUyFRJDO0Vi9G/r5NdKzXZCiRjgY21a23HkC8I3p
-eRVmBT71/8HHNHzs9p0ODtBldqeUNKOlnarghB7wA3fanSAFf93ffkQ95Tkp
-vR7lGh2DjbtShRn+kmNQvuv5oqC0A9lRH4V9BbrmEjZbLwtFkw962B5sTms+
-x3bbjwHCwGBzeX12dXF77yU9tL6o/dsIrIu+MYud5zYYl0gXkHvSb5Wc76k=
----
-eJydVMFy2jAQvfMVWzNToAUzaWkmBdsJkwm90PbQ3NoOI+zFViNbjrSGeoj/
-vbItSJkkl/igsay3b5/e7rrjJZSKoOMlyKLAI04CA5mJcsUI+ksZT9R0+r2g
-vCBCNfDGLaLjpUgMEqJ8hPcF3/rOtcwIMxrdljk6ELY73yH8S+M6xwzChCmN
-5HMtRxcXnz6PzhxDpKmsCQHcux3sTaCQagrdj+ZZLGawMUSjHfI4oSmspYig
-qrFhSo/gWCFmFtrQTYETEzxssZrUf8Tn5x/M8zJaITyDrjre2Cr1xo1XHW8t
-oxLWcQP1nV3CCesL5QoDT+csg1AwrX3HaHWCLiy4QBC1o2N5MPTxzVXrIQie
-IUwmJpUJrz0BOGG62zlBhBt7DrZO/XcCtyj0oAkAUIxrhLmKi9SU4EYpqYan
-PMYRJ3h7X0iafeFpiqClWVqWN+13m2MIIRMC1VMd/CijjXMxzam8fI2Ga5b1
-qLbmcCOYL5evlcGzUBQRXtYcVsxBIAsT2D80uwdoevtWSnOwNdWPGOGqOeo3
-66CywVfNFvwDi5aK3A1XmizgOB0LFpJUpRsqrMnMhCQy0k8laxSb471aVktl
-NMWmFYwTK27mR2VMwN6eAbSOHNNBr7u/yliKVQ92yjSfbuwzi0XC+1/HWCve
-9KrAkIwJxoBv8683P36K35X7R/Ks/1J1hnBSikOXVc+3J2aRBXrjehLMuNRz
-0oxN/af5Bxb5d0I=
----
-eJyNVEuPmzAQvudXTIm0m0hJ6DPaEmC3WjWnSr30HjkwASvGZu2hNFrlv9eG
-FLJ5qT7Z8D08Y38ehDkVIh6EObI0DomTwHijdMGIUEcw+qGyzzoIflZUVu7T
-OPRb0CAskBjkROUUXyr+O/KelSSUNP21K9GDpF1FHuEf8p3NApKcaYMUcaOm
-Dw9fvk4/eFbI0M4JAsy2NbxaolA6gOEnO5bLBWys0LRGnuUUwFqJFPYOmxTU
-gzONKA/QRi4ATkzwpMUa0kfC8/lHO66jNcIF9H4Q+oedhn7TrkG4VukO1lkD
-jbw654SuoFJjHJqSSUgEMyby7F69eAhLLhCE66iv/jW0n830egKCS4T5e2tl
-6a4nAG+UtrUXp7g5/If+qEarbj5uaBeIvOP14NmWy3SlNo+j5Skf4KmDQXTE
-uaaPwty2eHbY8TmRyfScBneCFhEsT1z/ty6NplTWl9QjBFwaYjLBTuNqbbMz
-6KUy8fiAbutJrG9IdYXf6OmZmWbcILiYfdda6clblr3sXnz3UilafNNZVdgQ
-Qs0MSEXA+na+ayEH7QkkTIgbR3u6UfswZLY6e5tX3AZdSybgtZXsHgu4H74+
-SVbg/h4qw2UGdt13ppHft5z95ave24a+S5WNnstcE0H3cP0FSs+Muw==
----
-eJx1kctOwzAQRff5ipG7AYnU4lVC6mSD1BUSG34gj0ls1Y2DPSFUqP+OnQaV
-SsUrW3PmzvWdSEja6TwSEos6F6RIY97owUm4ejXtg03Tt4H6gQjtteDHeiR2
-SAVIoj7Gj0F9ZuzFdIQdxe/7HhlUx1fGCL+IhwlrqGRhHVKmnImT5PE5vmVe
-yNE+CAIstyN8+0ZtbAqLe382mzU0XigeUbWSUiiNruEQ2GpHJ7i1iN2MTnIp
-KCq0qo6sI/tHeLW68+d/2iJcoA+R4LNTwaekIlGaeg9lO6EZG6UiDB/qLebC
-9UUHlS6cy5j3yvIFbJRG0CFRbn4DPd2WtrwBrTqEp8SP8u0hE4Azpe3I8hqb
-uQ7Tli5T2NUzJXgw5F0Hu5P7sO4f9WijHQ==
----
-eJx1kk9PhDAQxe98ikmNZtfAEv8rW0iMcU+rF72phy4M0FgKtqPrxux3twWM
-muhcKJ037w2/EPCaGpUFvEZRZJwkKczK1jSCYLJsq2OTJHey6RQu+ktCM+Xx
-IAt4gySgJuoifHmVbym7ajWhpuh+0yGDfHhLGeE7xT5oDnktjEVKpW2j8/OT
-i+iAOSNLG28IMHtew4cbVK1JYOfI1WIxh9IZRWuUVU0JrFpVwNZr84a+xZVB
-1KO0t0tAklAyH7SWzA/j09NDV/+rDcIf6m3A43FTHvfAAr5qiw2sql6asnUt
-Cf0HdQYzbjuhIVfC2pS5XVm2AwupEJTnGpdfQL9PM7MKQUmNcHjmoty4ZwLw
-y+l5zbICy7EPw/AE3xzpaa8GsJ2RmsrJrzlHgGV7L68tzXf3LezavYrm7vGo
-h8vRMIQb8b50dmqJuqI6hOXt5c313UOfMFO+8xTCmPRVQ1OLBsPxXAgS07+3
-R12MYTz2oBxNj7Gn6v/GT7V01MM=
----
-eJx1kk1vwjAMhu/9FVa4gLRSjTHESlohTeK04y4T4pC2po1IP5aYddXEf19S
-OsHE5ksS+fFr+1U8XlCpYo8XKLKYkySF8XYH45c6n+swfBOleq6rvcyPWlCt
-Jzw4Mx4vkQQURI2P70f5ETHLEVbkv3YNMkjPr4gRflLguqwgLYQ2SJE0tb9c
-Pj7598wKGeqcIMD00MKXLVS1DmH0YGOzWcHeCvktyrygEJJaZXBybFrSBc41
-YjWgvVwIkoSS6Zk1pK+EF4uZjf9pjfAHffJ4MEzKg94tjyd11kGS92jE2kIS
-uoUajTE3jaggVcKYiNlZWTyCjVQIyhkbdNbX9MrXqU7uQMkKYTa3fWytMwTg
-l8yhZXGG+yF/mzOofpLT7W7cCC3KyQrW6/5mtv2xu63DKhvKeOBmtwu6zfpF
-3e/4Bncqs6E=
----
-eJx1ks1uwjAQhO95ipW5gESISltEgxMhVeLUYy8V4uAkS2Lh/NReSFHFu9dO
-UpWK1hfL3s+znrE9XlCpYo8XKLKYkySF8XYXwfilzh90GL6JUj3X1V7mRy2o
-1hMe9JDHSyQBBVHj4/tRniJmOcKK/NdzgwzSfhUxwg8KXJsVpIXQBimSpvaX
-y8cn/45ZIUNnJwgwO7TwaQ+qWocwurdjs1nB3gr5Lcq8oBCSWmVwcWxa0g+c
-a8RqQDu5ECQJJdOeNaSvhBeLuR3/0xrhD/ri8WC4KQ+6uDye1NkZkrxDI9YW
-ktAZajTG3DSiglQJYyJm78riEWykQlAu2OBsc02vcp3pZApKVgjzhe1jz7pA
-AH7JHFoWZ7gf6rc1g+q7OLOPOG6EFuUUTkIdcbKC9brbMNtu2kHUV251sMoG
-GR44L9awc9oZd9/lC2VTuSA=
----
-eJyFVE1vnDAQvfMrpqxUJdUCadpGCQtIVdU99VT10qZpZGAWrBi8sYfd0Gj7
-22sD+6WwrS8WmjfvjWfe4EQlVSJxohJZnkTESWCSNZpkdS9whULD2RdZvFdh
-+J1V4pOsF7xoFCOpzqOghztRhcSgJFp6+NjwVewaHGFN3rd2iS5k/VfsEj5R
-YAVnkJVMaaSYa+ldX3+48d66hkhTawkB/Ic1PJtEIVUIk3fmzOczWBgib428
-KCmEVIocNhabVbQHFwqxHqAdXQicmOBZj9WkDoivri7NOY1WCCPojRMFQ6VR
-0DXOiVKZt5AWHTR21yUntA9aKkwivWQ1ZIJpHbumVjeZwJwLBGEbG7Smr9lB
-X32VTkHwGuHyxuiYXNsQgCOah7Wb5LgY4i9jGsU26B+N8wz6+7zjHGFVSI2q
-t8Rm9gWakqSkl1C+0+85fc1/I8QxXJwiX0i1TeEjfDvZC9/3DzgHOoCaVUZg
-kLvldz7Je72L/qPAPvHPMUSZEQU/dXCyi/tqu/xXY/m/bj96P+6Cw0n1RzGu
-EewGfFZKqim8fmwkzSbPlmsDXENtmspgZeyWw9cmbcGsjSZWUyfXw6eQMSFQ
-nX4k1vmx+P8R3Ub7xj/GZds1f9Pf41bbM0SBtbTxvTV853/7//gLj55hTw==
----
-eJx1krFugzAQhnee4uQsiVRAadMoJYalUqaOXTpFBg6wYjA1l1JU5d1rE6om
-auoBCd/n/84feLyiWiUer1DkCSdJChOlRb4fRK32hVQI8xddrkwUvdmdZ90U
-sjwaQdoseHjmPV4jCaiIWh/fj/IjZpYjbMh/HVpkkJ3fYkb4SaHruIWsEqZD
-imWn/c3m8clfMhvU0eACAYJDD1/2oNImgtmDXbvdFgob5Pcoy4oiSLXK4eTY
-rKZfuDSIzYSOcRFIEkpmZ7YjcxG8Xt/b9T9tEG7QJ4+H06Q8HM15PNX5AGk5
-ojHrK0noLtQaTHjXigYyJbouZnZWlsxg58wqJzZ0prMLr4FJ70DJBmG1tH3s
-WScE4Crm0LMkx2Kq/611qH6KwfX3nIN7NqLGxRgLIDI6CrV32HwcLNAtNhfc
-4nZ/bPKpBQ/dPa0MZ2GU4v6qb/tqxeo=
----
-eJx1kjFPwzAQhff8ipO7tBJpBJSqpE4WpE6MLEyVm1wTq04c7CshQv3v2EkQ
-LQUvln3fPfs9O+AlVSoNeIkiTzlJUpgqLfJtJyq1tWRkXcD0WRcLE8evbu9J
-13tZHI0gbWY8GjoCXiEJKImaEN+O8j1hjiOsKXzpGmSQDauEEX5Q5M9cQ1YK
-Y5ESaXW4Wj08hrfMCVnqvCDA/NDCp2tU2sQwuXdjs1nD3gmFLcqipBh2WuVw
-8mxW0Q9cGMR6RHu5GCQJJbOBdabOhJfLOzf+pw3CH/Qp4NF4Ux712QV8p/MO
-dkWPJqwtJaE31BhMuW1EDZkS1ibM3ZWlE9hIhaB8sJHPOjvLdW52N6BkjbBY
-unNcrw8E4ELm0LI0x/1Yv65ZVN/F+e8XncIwz3pZAJHRUaitxy5LV6pY56Mo
-j7wzZ9/77mPwP+kLkY/CuA==
----
-eJx9klFvmzAQx9/5FCciTYkWoGm3KiOGqaqSp7yt2ss0TQauYNVgah9Joyrf
-fbZJ1lVrdw8g6/738/n+F7CGWpkHrEFe5YwEScx3XIqKE/6SuEMJ062qP+k0
-9b87paSZsWRUBqxF4tAQ9RE+DmKXhbeqI+woujv0GEI5nrKQ8IkSd9cKyoZr
-g5QJo6Ll8vOXaBFakKGDAwLED3t4toVS6RQmVzY2mxXcW1C0R1E3lEKhZAVH
-py1behHXGrE7ST0uBUH2LeWoNaT/Al9fX9p4X60R3lAfA5acOmWJn1nAClUd
-oKi9NAv3jSB0D+o15sz0vINScmOy0PYa5hPYCIkg3SyTghuMdTEHKTqEq6Vl
-W70bAsCr0od9mFd4f8r/mzMoz8n4tXtT/51DhT012cXMs9+gD51EY84XeMYI
-+DoSzoUAmguDcKProbXOrrVWeg4fHgdFK7shMO5MOxiCAkF0cBHHk+ft+vt6
-++04yuZ/WGOUXErUPxZxHE19n/ARFrOf77WKXfXfQb3kWeJMsE45i7xjbtl/
-A2908KY=
----
-eJyFkt9rwjAQx9/7VxwVhsJq2abialoZgz7J9uK79MfZBmPiklMnw/99SdXN
-ocO8HOE+983d9+KxmpYi8ViNWZkw4iQw2WSClzOBGxRjaE9U1dNR1ISpUsJ0
-WHjgPLZEyqAmWgX4seab2H9VklBSMN2t0IficIt9wk8K3UsjKOpMG6SYGxUM
-h/3n4MG3QoZ2ThCgu9jCly0USkfQerInTUcwt0LBFnlVUwS5EiXsHVss6Reu
-NKI8oo1cBJzsJMWBNaTPhAeDR3v+pzXCFXrvsfDYKQsbxzyWq3IHedWgsb+t
-OaEbaKUxYWaVSShEZkzs2179pAUpFwjCeRnmmcGuzu9BcInQ61ttyzsTAP6U
-LrZ+UuL8mL/MGRSnZPd8d20bOo3cFUGp6CRosa7kdtcXUCbLc2jBZTlT83H7
-bb1EzYvOrQq4q2gUw8tkcpsUjnxP0+vz4w/NQuetXYBzvlmE+8HfPkjm1g==
----
-eJydlM1O6zAQhfd5ipFZAFKTiF9BcMLiSl3dJTuEKieZ1hZuXOzpDdUV746d
-Bgi06QJvouSc+Xw8thNxSUtdRFyiqAtOijQWNVamxllpjIaTv2ZxabOsezz4
-L+6Up1tbxJdIAiTRKsaXtfqXsz+mIWwoftiskEG1fcsZ4SulYaI7qKSwDilX
-zsQ3N1e38RnzIEebAARInlv47wu1sRkcXfgxnd7B3IPiFtVCUgal0TW8BW+1
-pC/zwiI2vbXDZaBIaFVtvY7sAHx9fe7HuNsi7HG/RTztk/K0a1jES1NvoFx0
-1py1UhGGBa0sFtytRAOVFs7lzGdlxRFMlUbQoZdpKRwmtpyAVg3C1a1ne39o
-AsC30ueW+S2Z9/qu5lB/iMlg606kcHICbrP0HZuAJ4i1ptOOD1ALv3U5BM/j
-1vI0qiRkZu5pd2L1mSnUJI3S9z1jx2qR1rYZXULlezFk9Zg9oFbifozfYFYc
-k13jca9PdoqDOpqBxsg/Kn+dbS60OxCuk3+Xblg6Hg8H/P40HDA39cED+aXz
-NBx2fyPCVehuRvijvAMXqWiq
----
-eJx1kk1PwzAMhu/9FVZ22dDa8jlGl/aCtBNHjkioH14bLW1KYigT238naYvY
-xIgURZZfP7HfxOMV1TLxeIVpkXASJDHJVV2nr6aVgmD6pMpbHUX98ayUNDMe
-DjKP10gpVEStj2/v4iNmj6ohbMh/3rXIIB+imBF+UuguWkFepdogxcIof7m8
-e/CvmAUZ2jkgQLDt4MsWSqUjmNzYtV6vYGNBfoeirCiCTMkCDk6b1/QrLjVi
-M0p7XASCUinyQWtIH4EXi2u7/ldrhDPqg8fDsVMe9oZ5PFPFDrKyl8asqwSh
-G6jVmHDTpg3kMjUmZrZXlkxgLSSCdF6GWWow0NkcpGgQ7i8t2+qdCQAnpduO
-JQVuxvzfnEH5kwyOnm5qRxZNOeuBAEMUDKkThrYdhy/mYm53OIJmliQl5tbg
-vdmDcf6J9nC+OWyKsYyHbnDrjrOld8n9rm+PfMd5
----
-eJyVU01v1DAQvedXjNJDdyuyUYEuJXUiENKe9lRxqyrkJLOJVW8c7EnDgvrf
-GTup6IqlEj7ZM2/efD1HoqW9LiLRoqwLQYo0Fh2OsNia5r3NsltjiK8N2qVI
-J3ck9kgSWqI+we+DeszjL6Yj7Cj5eugxhmp65THhD0p9ghuoWmkdUq6cSa6v
-rz4mlzETOTp4QoDVwwi/OFAbm8HZOz6bzQ3smCgZUTUtZVAaXcOTx1Z7+gNu
-LGI3QwNdBoqkVtWEdWRfEK/Xb/n8G20RTqCfIpHOlYo0DCoSpakPUDYBmsdj
-qwh9Q73FQrhedlBp6Vwec61xcQYbpRG0H2mqwzRXtnwDWnUIl+sPTM8hfg4A
-R9EPY1zUuJv9oDpFiqv9iQEKEJa0YgQTfdP4iNotLoKRN7JTTZbxYxvsSzhV
-F3Zu4KanUJD+amSN9cuKAD4FP+Twebt9NpmB+oEIrWP73f1svsXeOEXGHu6O
-0vEa4uLcspjOZ+p7DvurV4d6d5z6dcJGm1Lq/6Sc5LyRlWddDd08PhZ1a2q3
-eI1heXpF2D0PTKReASwTr48gF/+9fgOn0hnp
----
-eJx1kk1PwzAMhu/9FVZ2AYmuGh9ltGk5IPXECXFH/fDaaGlTEo9Sof13kq7T
-QAOfYvnxm9dOPN5QK1OPN5hXKSdBElNh3rRS9AgXz6q+1VH0YjN7rFFf8uDA
-eLxFyqEh6n1834mPhD2pjrAj/3XskUF5yBJG+EmBuyWGssm1QUqEUf56fffg
-r5gVMjQ6QYDldoAv2yiVjmBxYyPLYthYIX9AUTcUQaFkBXvHli2d4FojdjM6
-yUUgKJeiPLCG9A/hMLy28T+tEf6g9x4PZqc8mLbl8UJVIxT1hCZsaAShG6jX
-mHLT5x2UMjcmYdYrSxeQCYkg3UoDOW1zqYsrkKJDWN2HVt62uD0A/OreDiyt
-cDPX4fg68TlFeodH7KyIXTXXeOAc2jGc/2kc9we+ASEFqdY=
----
-eJx1UctOwzAQvOcrVu6llUij8qhKakdISD1xQvyAk2wTq24c7KWhQv13bCcS
-IGAvXtsz4/Fswls66iLhLcq64KRIY6HxhFrA/Mk0tzbPn40h3zZoFzwbEQk/
-IkloifoUX9/USbBH0xF2lL6ce2RQjTvBCN8pC29soWqldUhCOZNuNnf36Yp5
-IUfnIAiwPAzw4Yna2BxmN752uy3svVA6oGpayqE0uoZLwFZH+gI3FrGboFEu
-B0VSq2rEOrLfhNfra1//oy3CH+hLwrPJKc9iVgkvTX2GsolQwYZWEYYP9RYL
-7nrZQaWlc4J5r6yYwU5pBB0izXRMc2nLK9CqQ1htVl7eU0IOAD/Yh4EVNe6n
-exhnM5dxXWzhITYgYDz5zcWunrg8C9a8/2A8/iOM/hOW86Y4
----
-eJx1kUFugzAQRfecYuRsEqkEpU0jSgybSqy6qnoBAwNYcTC1h9Koyt1rE6Sm
-SjsrW37z5/tPwFs6qizgLYoq4yRJYaYH6gciNDaF5YtutiZJXrUmd2zQrHh0
-wQJ+RBLQEvUhvg/yI2XPuiPsKHw79cigvNxSRvhJkR+0h7IVxiKl0uowjh+f
-wg1zQpZOXhBgfRjhyzUqbRJYPLjK8z3UTigcUTYtJVBoVcHZs+WRfuDGIHYz
-OsklIEkoWV5YS+ZKeLe7d/U/bRD+oM8Bj2anPJoCC3ihqxMUzYSmbGwlof9Q
-bzDjthcdlEpYmzLnlWULyKVCUD7SSE1prk1xB0p2CJt46+Rdi88B4Ff3YWRZ
-hfX8DlcLWtZar/a3NHbVTPPIm3GOvdXJud/4Nz82pEY=
----
-eJx1kU1OwzAQhfc5xcjdtBJpVH6ikjrZIGXFCnEBJ5nGVt042AMhQr07dhIJ
-EDArW/7mzfObiEs66yLiEkVTcFKksSArasxh/WjaW5tlT8aQP7ZoNzyZiYif
-kQRIoj7Gl1f1lrMH0xF2FD+PPTKo51vOCN8pCTMOUEthHVKunIn3+7v7eMe8
-kKMxCAJsTwN8+EZtbAarG19leYCjF4oHVK2kDCqjG7gEtj7TF9xaxG5BJ7kM
-FAmt6pl1ZL8Jp+m1r/9pi/AHfYl4sjjlyZRVxCvTjFC1E5qzQSrC8KHeYsFd
-LzqotXAuZ94rK1ZQKo2gQ6SJntLc2uoKtOoQdvvUy/uWkAPAj+7TwIoGj8s7
-zLtZH43ZHH6D2DULyJPgw5sNLifTYc+fU2yfiA==
----
-eJx1kctugzAQRfd8xcjZJFIJSh8RBcOmEquuqv6AwROw4mBqT0OjKv9em6A+
-1HZWtnzmzvWdiHd00GXEOxSy5KRIYymkVKSOWMDy0bS3NsuejCF/bNGueHKB
-In5AEtARDTG+vKpjwR5MT9hT/HwakEFzuRWM8I2SMCaHphPWIRXKmThN7+7j
-DfNCjk5BEGC9H+HdN2pjM1jc+KqqHHZeKB5RtR1lUBst4RzY5kBfcGsR+xmd
-5DJQJLRqLqwj+014u7329T9tEf6gzxFPZqc8meKKeG3kCep2Qgs2doowfGiw
-WHI3iB4aLZwrmPfKygVUSiPoEGmipzTXtr4CrXqETZp6ed8ScgD40b0fWSlx
-N7/D53qWO2NW+W8WezmzPAlWvN9gdPIdtv0BpjWiAA==
----
-eJx1kU1OwzAQhfc5xcjdtIg0lJ+qTZxskLpihbiAE08Tq04c7IFQod4dO40E
-FTArW/PN8/ObiDfU6iLiDQpZcFKksRBSwvzJ1Pc2TZ+NIX+s0S54cm5HvEUS
-0BD1Mb6+qfecPZqOsKP45dgjg+p8yxnhByXhgQyqRliHlCtn4s3mYRuvmBdy
-dAyCAMvDAJ9+UBubwuzO126Xwd4LxQOquqEUSqMlnAJbtfQN1xaxm9BRLgVF
-QqvqzDqyP4TX61tf/9MW4Q/6FPFkcsqTMaiIl0YeoaxHNGdDowjDh3qLBXe9
-6KDSwrmcea+smMFOaQQdIk30mObSltegVYew2t54eT8ScgC4mD4MrJC4n/rg
-FzO/2huzyH5j2MkJ40lw4a0Gj6PlsOIv0nGdZw==
----
-eJx1kU1OwzAQhfc5xcjdtIg0aoGqTZxskLJihbhAfiaJVScO9tAQod4dO4kE
-CJiVLX/z5vmNxxtqZeLxBrMy4SRIYqKxVReE9ZOq73UYPitF9lij3vBgJjze
-ImXQEPU+vr6JS8weVUfYkf8y9sigmG8xI3ynwM2IoGgybZBiYZR/PD6c/B2z
-QoZGJwiwPQ/wYRul0iGs7mylaQSVFfIHFHVDIeRKlnB1bNHSF1xrxG5BJ7kQ
-BGVSFDNrSH8TPhz2tv6nNcIf9NXjweKUB1NWHs9VOUJeT2jMhkYQug/1GhNu
-+qyDQmbGxMx6ZckKUiERpIs0kFOaW53fghQdwu60t/K2xeUA8KP7PLCkxGp5
-h3k365tKqU30m8SuXEgeOCPWrbM5uXaL/gRxYqAz
----
-eJx1U99vmzAQfs9fcSJSlUqhqN1adcSgSpXytLftHTlwAavGUPsIy6L87zsD
-bZYl84MR+Ptx9/mYiYpqnc5EhbJIBSnSmBrsYfG9Kb/aOObHD7Q7tLciGk9n
-okaSUBG1Ib53apcEr40hNBT+3LcYQD6+JQHhL4q8/grySlqHlCjXhM/Pj9/C
-+4CFHO29IMDdWw8HJurGxjD/wmu9XsGWhcIeVVlRDJtGF3D02LymE7i0iGaC
-DnIxKJJa5SPWkf1L+Onpgdf/0RbhCvo4E9FUqYiGnGZi0xR72JQDNAn6ShH6
-hlqLqXCtNJBr6VwScK1BOoe10gjaJxrx7oZA7+xmCVoZhPsHNmCSTwLgjP/W
-B2mB2+kclFGkuN7fuMi2ndZG1riErLOKd4071MkF3Sg90ZcwGPyzMlkUrLrD
-SyrZDj+5GVmZXwFtpXYn1I2s25XMc2zpdnK7YLiuRTsxzvoYOlieKvow/VB6
-4UYhGfqdvjiSlrIx0MWYw7k5z2/JWXPqmeKxtEZqONy8dw2tPkd7VMECJMH8
-4E2OI+J4/ULQFFP1IvI3zmPh52EYD/83/QHGABQT
----
-eJx1kttOhDAQhu95iklNjJpliccoW7gx7pVGs/oCXRihsdvidFZcje9uyxIP
-ic5FCek3f4evJLLllSkT2aKqS8maDZYWe9i7ds0J5Xl43CO9IO3LbLubyBWy
-gpa5S/F5rV8Kcekso+X0YdOhgGr7VgjGV85i/gyqVpFHLrR36fn56UV6KEKQ
-500MBJg+9fAeGo2jHHaOQ83nM3gMQWmPumk5h6UzNXxEtlrxN9wQoh3RIS4H
-zcroast6ph/BZ2dHof6nCeEP+iOR2TipzAZPiVy6egPLZkAL0beaMX5QR1hK
-3ykLlVHeFyLMKsodmGuDYKLRLKx+EDql5QSMtghHx+GA0BRNxPqV8NSLssbH
-kQBtNesw8RvuHShq/P7YA0BKe4TF2rJe4RWRo8nvpOBClLvPa8ezr1sF6xj8
-uuscMdZTWNze3IH2QPFmCestPh4+gUoZg/TfmGjrkZRZNBF0RU+DtviXfQJ0
-gsmd
----
-eJytlF9v0zAUxd/zKa6yh3USaRhspWROQEKqhITEJHhDCLnJbWPNdYJ9RyhT
-vzu245aGjD+T5qfE/p3j4ytfR6ymjSwiViOvCkaCJBYKO5i8a9YXOsuuORFq
-tWj0xn+dsbSHIrZB4lATtQl+vRXf8vhNowgVJR+3LcZQ9n95TPidUrfNFZQ1
-1wYpF6ZJ5vPLl8l5bI0MbZ0hwPSmgzsrlI3O4OS5HYvFFaysUdKhWNeUwbKR
-FewcW27oF7zWiCqg3i4DQVyKsmcN6SPj2eyZHX+mNcI99C5iaUjKUl+uiC2b
-agvLtUfzuKsFoTtQq7FgpuUKSsmNyWObNS5OYCEkgnSFTVf7gqZtX+HDxFQv
-n4AUCuHyhd3RurjSAAwMb7q4qHAV1kEoQcIe4AdOam7q/G535jX3qMxtizro
-PLwnX4cgkIOf/zSQ2grGxWlAToP+89i+2XuD98iC4q/kaEkJGdYO4SpO+OU/
-Eh5zD4h5LHucrLY76qb6Z9Qee2jSXvXYRX374f189vR8LBWHizaQTK3lqzHN
-VTXE+7SeDjv//qpMS42O7JsgCMxkfHlRrgaHGBF42Jylrg1tr7om9T3rXrqf
-VgKkyQ==
----
-eJyVVF1vm0AQfPev2GIpsatgFLeNUgwoUhU/tU2l5q2qogPWcMpxkLvFjmvx
-37vgz6ghUu8J2Jm52bk9BkFOhYoGQY4ijQKSpDDSuILR1zL7aHz/thBS3dVU
-1URoxoG3hQyCAklATlS5+FTLZeh8KTWhJvd+XaEDyfYtdAifyWs3mUGSC2OR
-QmlL9/r602f30mEhS+tWEGDyuIINE1VpfBh+4DWfz2DBQu4KZZaTD3GpUmha
-bFLQEZwZRL2DdnI+SBJKJlusJXMifHU15dWPNgivoJtB4O2cBl4X1iCIy3QN
-cdZBQ2eVS8K2ocpgFNhKaEiUsDZ02KsTDWEuFYJqY/XKfaAetvkeXicmvgAl
-NcLllPdjjTYYgBdyjysnSnGxq4PUkiTb/4OjBy0KvIBc2DzcNOOO+grZ1hWa
-Hf2UsycsWS0VhKPTjzdxvVhACL9+98nGmEm9d7UDMc8WVDHvO5Lv//x2/4OP
-Qxgavb+phBGFHR+QPHEZR8AJPUgeHqOFgs2hCnD2VJc0ezmQcD7c3LQdNOdg
-aq2lzqDdhH1JHj8oNTDAolmiaXx+rEpDzVbpIN30dWTQJjXuW7p9TrAiyZLh
-WUYzwLecj9zp+L/cL7iAKVAJXT6nXbzr8dsTGR7r/x49qv3gTBQuUfHJ3M3n
-fQGgTt8cw2M98Nqx57vRXorujrT/lb9sSV9a
----
-eJx1ks1qwzAQhO9+isWBpoU6Jk0bUkc2hVKfCr30HhR7Y4vIsiOtm4bgd69k
-pz+BdG9Cn2ZnZ+WxkiqZeKxEnieMBElMNrI1JVy/1sW9jqKXigv51lLTEqG+
-YeEAeaxC4lASNQHuWvER+8+1IlQUvB8a9CEbTrFP+Emha7OErOTaIMXC1MFi
-8fAYTH0rZOjgBAEm2z0c7UNZ6whGM1tpuoSNFQr2KIqSIljXMofOsVlFv3Ch
-EdUJ7eUiEMSlyAbWkP4jPJ/f2fqf1ggX6M5j4ckpC/u4PLau8wOsix6N/X0p
-CN1AjcaEmYYryCQ3JvatVz8ZQSokgnSxhvV3oCG6fH+OE72+BSkUwmxq+1kN
-FwzAmdx27yc5bk730O+rpwDMQWWldW9Q5Sun3I/kyq6zsPq2/UrYzWjFJRyv
-dm1Ny9QJYA7nq4bx6PikeIXdeMC6y05sp5MTFrrJbTwulz4m97m+AEENyNA=
----
-eJx1kstqwzAQRff+isHZJBDHpI+QOrIpFAKFQjbdB9me2CKy7ErjumnIv1dy
-nD4g1Upi7j0zc5HHSqpk4rESeZ4wEiQxUdjB+KUu7nQUPW82LTUtEeoJC891
-j1VIHEqiJsC3VrzH/lOtCBUFr4cGfcjOr9gn/KDQdVhBVnJtkGJh6mC5vH8I
-5r4FGTo4IMBs38HRGmWtIxjd2rNer2BnQUGHoigpgrSWOZycNqvoR1xoRDVI
-e1wEgrgU2VlrSP8CLxY39vyv1ghX1CePhcOkLOyT8lha5wdIi14a+10pCN1C
-jcaEmYYryCQ3JvbtrH4ygrWQCNJlGtaXQENRf99nOp2CFAphvrTNLMClAvCH
-te/8JMfdUAehBAk7+yeOt4pXOIWt5U2h5KaMj6dJD7iCMG2DeoBcnM5zMTxa
-CsQ97PoMqPLBzkK3sE3FxdGn477TF7ZpwSg=
----
-eJx1kttOwzAMhu/7FFZ2AxJtxAbT6NKChDQJCWk3vEAPXhstbUriUSa0dyfp
-yhgCfJXD59/+nQSipkalgagxK1NBkhSmhdIWy3u4eNbVjYnjp/V6R92OCM2l
-4EcmEA1SBjVRF+LrTr4l7FG3hC2FL/sOGRTHXcII34n7Kkso6sxYpERaHS4W
-t3fhNXNClvZeECDa9vDhEpU2MUxmLlarJWycUNijrGqKIdeqhINni4a+4cog
-tiM6yMUgKVOyOLKWzJnwfD518T9tEP6gD4HgY6eCD9MKRK7LPeTVgCasryWh
-N9QZTIXtshYKlVmbMNcrSyewkgpB+Zly/TVQLvVpHZn8CpRsEaYzV8wJ+KkA
-/NDa9iwtcTPew/hWAwfw4LSi86NfqdiWY6rgvk9nxrsYTPmf8AlQCar6
----
-eJx1Ul1LwzAUfe+vuHTgB9gVv8bs0ioIBUHYi+8ja+/aYJbU5NY5xv67SdtN
-Rc1T0p5z7r3n3IDVtJZZwGrkZcZIkMSskNoinD3r6sYkydN83lLTEqE5Z3GP
-CNgaiUNN1ET41or3NHzUilBR9LJtMISif6Uh4QfFvsYMipobi5QKq6Pp9PYu
-ugydkKWtFwQYv25g54hSmwRG1+7k+QxWTijaoKhqSmCpZQl7jy3W9AWuDKIa
-oJ1cAoK4FEWPtWS+CU8mV+78jzYIf6D3AYuHTlnceRWwpS63sKw6aBpuakHo
-B2oMZsw2XEEhubVp6HoNsxHkQiJI72msD4bGQh/vY7O8ACkUwtXUFXMC3hWA
-H1qvmzArcTX8hy6pDgXw4JTGfXS/KK2SaO2B1SGVkPcHpsR3lJDCPM+HT8fI
-c16QNttxYZATLlzstS7t2a8KFuWhq/NBw+1P5cZyIy+E2wajuITdyVuraXaU
-h9PR7kHxNe5P+2FKeJoDVyW4TQHSvqWesv/bDFTlUJbF3nkXj8+li8lv9idY
-z/B3
----
-eJx1kk1ugzAQRvecYuRsWqmA+pMoJYZNpay6qnoBAxOwYmxqT0qjKnevDURt
-ldYbhObNY+YzEW+pU0XEWxR1wUmSwsIaQ3D1bJoHm2X+0aC95ulUi3iHJKAl
-6mN8O8j3nD0ZTagpfj32yKCa3nJG+EFpsG+gaoV1SLl0Jl6vl4/xLfMiR8cg
-BEj2A3z6RmVsBot7f7bbDey8KB5QNi1lUBpVwymwVUffcGMR9YyOugwkCSWr
-iXVkf4hXqzt//qctwh/0KeLpPClPx5QiXpr6CGUzojkbWkkYFuotFtz1QkOl
-hHM587OyYgFbqRBUiNObBMlKjZkmtrwBJTXC0n/Ct4UsAH4Z9gMratzN9cua
-Q3UuJuHaNpeIRTpYfTa8eGi60kRqP42u8LIFdT3zPA1L+c3DymMC4Xf5Asg/
-udw=
----
-eJx1kk1uwyAQRvc+xYhsWqmO1b80tbE3lbzqshfA9sRGIeDCpG5U5e4F21Eb
-pWWD0DwefAMR72inioh3KJqCkySFRatMJRRcvZr2waapn1q01zyZqhHfIQno
-iPoY3/fyI2cvRhNqit8OPTKop1XOCD8pCf4M6k5Yh5RLZ+L1+vE5vmVe5OgQ
-hADL7QBffqMyNoXFvR9lmcHGi+IBZdtRCpVRDRwDW+/oB24top7RUZeCJKFk
-PbGO7C/xanXnx/+0RfiDPkY8mW/Kk7FPEa9Mc4CqHdGcDZ0kDIF6iwV3vdBQ
-K+FczvxdWbGAUioEFdrpTYJkrcaeLm11A0pqhCd/hN8WegFwZtgOrGhwM9cv
-aw7VqbicHi67hCzS3uqTwxpDlwzqZgZ4EnL4sCHlGDr8kW/ClrV1
----
-eJyNk0FP3DAQhe/5FSNzWJBIImiLaHByqbSnnlBvqxVynEli4bVTe7ZLVPHf
-a2fDwpZFwpcomjdf3rxxEt7TRlcJ71E0FSdFGqvVGs5/2u6rK4rw6NBd8Hxf
-SfgGSUBPNKT4e6v+lOyHNYSG0l/jgAzk/q1khE+UR/YdyF44j1Qqb9Pb22/f
-0ysWQJ7GCATIHnfwNzRq6wo4+xLOcnkHbQClO1RdTwXUVjfwHLVyQ6/iziGa
-WTrhClAktJJ7rSf3Bnxzcx3Ox2qHcEL9nPB8dsrzKaOE17YZoe4macl2vSKM
-Aw0OK+4HYUBq4X3JgldWncFSaQQd4wwkQUrqKdPM1ZeglUG4ug7fCH0xDIAj
-xOOOVQ22c/19zaN+KWar9flDu9XaiA1eTKj/YLOf1jqJHqTDYMYasC3cW0v7
-TYNqQyrQWPRmQYBPyhOMSNlbiydMOqStMy8+X3mZMmFoI/F9izqMdbBdlkeq
-sEBWLVyALT5MwLrPUTpta6EXx2Pc42C9IuvG1aF7fXoLaJq5l+dx0+E6xHsw
-XYv4B/0DNuQUaA==
----
-eJx9kk9PwkAQxe/9FJOSiCaU+j9atvVg5GQ8eTPGLO3Qblh2YXcQieG7u9sW
-0ADupWnmN29m39uAVTSVWcAq5EXGSJDErESC02ddXpskcZ8SzRmLm1LApkgc
-KqJZhPOF+EzDR60IFUWvqxmGkDd/aUj4RbEXH0BecWORUmF1dHd3cx9dhE7I
-0soLAvQnS/h2jVKbBDpX7gyHAxg7oWiJoqwogZGWBaw9m09pB5cGUbVoLZeA
-IC5F3rCWzC/h29tLd47TBuEAvQ5Y3G7K4tqkgI10sYJRWaNpuKwEob/QzGDG
-7IwryCW3Ng3drmHWgaGQCNLb6ZQ4iVzWnvbNqAdSKITLczfD9XkzAP5ITJZh
-VuC4re/XLMpNse9iO/0YL6RUfIpntRZAMwvSf1vftm3vbdseLbY7tNsrIR9a
-GMBwYRFenMCTMdr04GS+0DRoHg90O9/bAesuKE0uhIUq+g3Vg5xLiebYaFTF
-b382dzps1g5msQ/EpebjqtPzL/0H+/7xvA==
----
-eJx9kkFugzAQRfecYkQ2rRRATdsoIYZNpay6qnoBByZgxdjUnjRFVe5eG4jS
-Kkm9Qdb/82b444DV1Mg8YDXyMmckSGKOvKjh7lVXTyZN3adCc8+SQQtYg8Sh
-Jmoj/NiLzyx80YpQUfTetRhCMdyykPCLEk9fQVFzY5EyYXW0WDwvo4fQgSx1
-HggQ7w7w7QqlNilMHt1Zr1ewdaDogKKqKYWNliUcvbdo6GyuDKIarT0uBUFc
-imLwWjK/wPP5zJ3bboNwxX0MWDJOypI+pYBtdNnBpuqtWXioBaH/odZgzmzL
-FRSSW5uFbtYwn8BaSATp43QkTqKQfaax2UxBCoUwW7oers6HAfAHsTuEeYnb
-Ub/ULMqTGPu99YQrjK02J8Z2L6XiDU5hmOPSLNTJ+4attoK06WKh3PCqwHio
-smOnK706gbK81e3WgKjKf0M46yzxQbtt+DX0W/FP+AcQW+eC
----
-eJx1kkFvgjAUx+98ihe8bMmAbE7jsHBZ4snTsvtSyhMaK2XtU0fU774WNNui
-6619v/7e408DVtNG5QGrkZc5I0kKc+Si/lC6qtDA3VJXzyZNl/32niUDErAN
-EoeaqI3wcyt3WfiqG8KGoveuxRDEsMtCwi9KfJM5iJobi5RJq6PZbPISPYZO
-ZKnzQoB4vYeDu6i0SWE0dmuxmMPKiaI9yqqmFAqtSjh5VmzoB64MYnNGe10K
-kriSYmAtmV/i6fTJrf9pg3CDPgUsOU/Kkj6sgBW67KCoejQL97Uk9B/UGsyZ
-bXkDQnFrs9DNGuYjWEiFoHyczsRJiiHi2BQPoGSDMJ64Hu6eDwPgj2K9D/MS
-V+f6dc2iuhTjX7+vFwG8YautJG26WDaudyMwHgA70DuutgiH43B4vPZ3ElV5
-6T5Qp9tTYnPhWOKTcHH5nPrY/FP7Brktzn8=
----
-eJx1kktPwzAQhO/5FStzoJVIIp6C4AQhRE/ABW6oQm6yJBZbp9gLoUL8d+w0
-PAu+RJFnv53MJJINz6mIZIOqKiRrJiyore+0YbRGEYwu2nrPZpl/1GjHMl1p
-IjlHVtAwL2J8fNLPuThr/Yzh+Ga5QAHl6i0XjC+chi3HUDbKOuRcuzY+PNw/
-ireFBzleBiBA8tDBqx+k1mawsevPZHIM9x4Ud6jrhjOYtVTBW9CWc/4S1xbR
-DNIel4FmRbpcaR3bb+CDgx1//ldbhD/Ub5FMB6cy7dOK5KytljCre2kuukYz
-hg9aWCykWygDJSnncuG9imIDJpoQKMTpSYp1SX2miZ1tAWmDsLfrd/i5EAbA
-D8RDJ4oK74f79TuH9HGZfO9vRPiMlG+PeyTAZ685rBq9/YHySYlis/e4OeCm
-w+TaSov8ZM2/jvSn2Y+didF08stH4tBUo4ur08vz69ve6zSp2s6UyuHWOnSp
-kaqBO/47Jc8bBDINTfi6Qk99beFffwe4RvY1
----
-eJx9VF1v2kAQfOdXrBypAgmMmrYoBdttVZWnPlV5iyJ02It9ynFH7ta4tMp/
-756/IIHiFxt2djw7N+tBVNBWJYOoQJElEUlSmGisYPjT5B/tfM63HO0omjal
-QbRFElAQ7Sb4XMp9HHw3mlDT5P6wwwDS5lccEP6mqSdfQFoI65Bi6czk7u7T
-58n7gIkcHTwhQPhUwV9uVMbO4eYDX8vlAjZMNKlQ5gXNYW1UBi8em27pCM4t
-om6hNd0cJAkl0wbryJ4Qz2a3fP0fbREuoF8G0bRVGk1rkwbR2mQHWOc1NA6q
-QhL6gXYWk8jthIZUCefigLUGyQ0spUJQ3s6pqt0M7XoMSmqE2xmzc4e3AeBV
-81MVJBlu2jpILUmy2D84XG1KpbTY4hhWCveo4rNGLVXbyBiRZdy7x3MY2RKP
-OLIivQDaCOU61KjW+UZpO+ae1WWCpNGnMwFYIR3CN5uXWw7GD2uNHb8m4HMK
-knfPpaFFEzfYlo6gEHsEAX7SpthLTYVSjDqTKnu7eo9CtuJLq6SO9L0xyoWt
-WGwMHDa30TljqRU617PWsFPKnse/63gynU9X7Eotch9QUWeDh37t2teOCuLj
-MF3NlLQridA6rj48dn93B+1buue2lqFQq0pSsZK6QMu51yl2Yx/tYRlLkZKx
-h5Czxwld8boXJnPDM2ccqs21VLzBhHW6vLL6oe34hTvjpH/fQz/wI4OuMV1e
-FdRZW4+mfhF5W/2a1lvrv3D/ANkNmlY=
----
-eJx1UkFu2zAQvOsVCxlobKCSkKZJU5kSUhT1Ke2luRWBQUtriQgtOuTarmHo
-71mKDlKnCS8EubPD2RlGoqWVLiPRoqxLQYo0lhq3qAsY35rms81z3hq0E5GF
-aiRWSBJaonWCjxu1LeLvpiPsKLnbrzGGKpyKmPAvZZ5/ClUrrUMqlDPJ9fXl
-1+Q8ZiJHe08IkD7s4MCN2tgcRhe8ZrMpLJko2aFqWsphYXQNvcdWK3oBNxax
-O0IHuhwUSa2qgHVk/yG+uvrE6320RXgD3UciOyoV2eBTJBam3sOiGaBFvGsV
-oR9obbEUbi07qLR0rohZa1yOYKY0gvZ2ZnpwM7WLj6BVh/Dlgtm5w9sAcNL8
-sIvLGpfHOoRYxvNhnwxwgCGjO2O0S7c8SC0JA+AV7mY4QQHh+qWbxcxkRcbu
-U36LFc053tbUbvyfFof6WczkhCDloeaKU7ed1HD48LgxNA0lOBsdbpYbrTu5
-wv4M+BMAGRgdbn99+/nj95+g674PPf2J2rcdwa4+ihCZ95tD8WkM4fi//AQT
-oOl3
----
-eJx1UstuwjAQvOcrVkEqIDWJ+kI0OBFSJU499o5MsiQWJg72AkWIf6+dBFpa
-6kvs7OzMeNYeK2ktU4+VyPOUkSCJKc9zQWKHCQzeVfGs49h+CtRDFrUAj62R
-OJREdYCbrdgl/puqCCsKPg41+pC1p8Qn/KTISUwgK7k2SIkwKhiPX16DB98S
-GTo4QoBwtYejbZRKx9B7sms2m8DSEgV7FEVJMSyUzOHksNmavsGFRqw6aEMX
-gyAuRdZiDekfxKPRo13/ozXCDfTJY1HnlEVNVB5bqPwAi6KBJv6+FITuQrXG
-lJmaV5BJbkziW69+2oOZkAjSxRnJJs1QL+5Bigph/GjZbYeLAeCqebX30xyX
-XR0ukxnMz9th0wQwPf+ABC7FrtaOb8YzUvoQWj6rOrcjLFVuBn/0DMqz4PCK
-ILTG58JOVldcwvFus1U0aUvQ7x2ny62UFV/jqQ/CXLy2sNNvm7fvilXeSbPI
-JWnjdjk3sbuH+gUJsd81
----
-eJx9U11v2kAQfPevWBmpASnGSppGiTlbSJV4ymPf0WEv9inHmdwtdRHiv/c+
-TAsBxy/n1c6O92bGEWtoI4uINcirgpEgiQVpXmIO47e2ftJZZo8a9YSloRux
-DRKHhmib4MdO/M7jn60iVJT82m8xhjJUeUz4h1LHP4Oy4dog5cK0ycvLj9fk
-IbZEhvaOEGD63sHBDspWZzD6bp/FYgZrS5R0KOqGMli1soKjw5Yb+g+uNaLq
-oZ4uA0FcijJgDekz4ufnR/sMozXCDfQxYmm/KUu9ThFbtdUeVrWH5nHXCEJ3
-oa3GgpktV1BKbkwe213jYgQLIRGkkzOVXs2pXt2DFArh9cGy2wknA8DF8HsX
-FxWu+z4EW8ZLf048HGDuK8j78gZDyQ2eKMLsMLZrUJ2wF02rY1x8+9i1NCO9
-w/DWI++veRzmJo9vDn3k0+TwmijNMP2af9VFVV3Sh3QveEmt3k+t3NaUpU14
-01ZmfDVuUJ78mFwQTK2vS2GDrxWXcAgChRbcjQ7z9U5KxTd4vANhvJVC1QF1
-vN5S/DN9fu7YWfHFxVjqYmiz6kLqM+t+8b9tYkQb
----
-eJx1UstOwzAQvOcrVu6llUhDC1QltSMkpJ448gNOso2tOg/shRCh/jt2EgmQ
-ii+r1c6Md8aOuKLaZBFXKMuMkyaDWSctNiRg+dJW9zZNfanQrngyjSNeI0lQ
-RF2Mb+/6Q7DntiFPiV+HDhkUUycY4Scl4YIDFEpahyS0a+P9/uEx3jAv5GgI
-ggDrcw9fnmham8Lizp/j8QAnLxT3qCtFKeStKeESsEVNP+DKIjYzdJRLQZM0
-upiwjuwv4d1u68//aItwBX2JeDJvypMxqIjnbTlAXo1QwXqlCYOhzmLGXScb
-KIx0TjC/K8sWcNQGwYQ4EzOmubb5DRjdIGxut17eU0IOAH/Y555lJZ7mOcwP
-s5zqasQDPE0tiHl+XQabcpbhSdjSWwkeRkvhC3wD99Cm3g==
----
-eJx1kk1vwjAMhu/9FVa4wLTSsQ/ESlpNmsRpx92ntDFtRGi6xKxDE/99SakE
-iM2XyMnj13mdRLymrc4jXqOQOSdFGnOzo3ZHhNZlMH4z1aNNU79UaCc8OSIR
-3yIJqInaGD936itjr6YhbCh+37fIoDxmGSP8piQ0WUJZC+uQMuVMvFg8Pccz
-5oUc7YMgwHTTwY8v1MamMHrwsVotYe2F4g5VVVMKhdESDoEtt3SCK4vYDGgv
-l4IioVV5ZB3ZM+H5/N7H/7RF+IM+RDwZbsqTflgRL4zcQ1H1aMa6WhEGQ63F
-nLtWNFBq4VzG/F1ZPoKV0gg6jDPR/TSntrgFrRqE2d3Cy/uSMAeAi+pNx3KJ
-6+Eczh5n/HFKJn0hwMtpa1pqFHbYF1KOb674q0bYyKERT4IPbza47E2Hj/IL
-vHu1QQ==
----
-eJyNVE2P2jAQvfMrRkEqUEEQ7Xa1DeGjWi2nSr30VlXIxJPEwthZe7IsQvz3
-tRO+ukBbX6J43nt+8+JJI85pJceNOEfGxzEJkjhmnEP7u87uTBS5R4amE/fr
-UiNeITHIiYoePpfiZRQ8akWoqPdzU2AASf02Cghfqe/Fh5DkzFikkbC69/Dw
-5WtvEDghSxsvCBAu17B1RKlNBM3Pbs1mQ0idUG+NIsspgoWWHHYem6zoBM4M
-otpDK7kIBDEpkhpryZwJ399/cus22iBcQe8acX/vNO5XITXiheYbWGQVdBSs
-c0HoGyoMjmNbMAWJZNaOAuc1GDdhJiSC9HH2ZZVmaBZdkEIhDAZ3Tt5RfA4A
-f7CX62DMMd3XwX2U9se5LqkoidDYTsW4wkm1OXAoFyq7RAh1AJzp7eUANIyg
-XTHDpVB8rtNJ+8cB1oHJXjWC4+avaud35yhxLQWrVwgLZl3cLy50zkhodd78
-1WbEsf+LktJ0qOlrTo+iAIYJi+Av6JMx2nThw3Opafj0WmBCyMGzQaenjrqQ
-aYLmVofVgbsa34WESYnmtl2U9uRYh0rIyb9tPOpSctUiSL2NowdoNbdVsLvW
-fx+v+PtEp6cvHBalzUEfS/Voh+5OzoUbWqOYhG191DfOXSz63Irrhq1w1wLS
-/nWallLWOzVld+s+Xpiavrt0f2HEfT9UbvL8yFUT6P9Wb/w5g20=
----
-eJx9UttKw0AQfc9XDCmoFZOoVdF0EwShT4IgvolImkySpZvduJlYS+m/u5v0
-Jlb3JWTOhZkz47CSKhE7rMQkixlxEhhrrNQnwsmjKq50GJpPgXrIgh51WIWU
-QElUe/jR8s/IfVCSUJL3sqjRhbT/i1zCLwqs/xjSMtENUsQb5d3eXt95F64x
-amhhDQH82RyWRiiUDmEwMm8yGUNujLw58qKkEKZKZLCy3LSiHbnQiHJN7exC
-4JQInvbchvSe8c3NpXl/szXCAfbKYcG6UxZ0OTlsqrIFTIuOGrnzkhPagWqN
-MWvqREIqkqaJXNOrGw9gwgWCsHEGokvT19MzEFwiXIzOjb2R2BwAfqhnczfO
-MF/j0O/l5PRdtVS3RKibYSc6IMuV3shkUuFvApcbfM9u7QagIIKnTfnVOrxt
-sfsd389QICGoLdgfi2+mfOfmDLRMBCyPPlpF4+eu/Qy2cjgeLJVvzVfHkGtV
-2cJ93grR13rZ6q8RUWb/JrfDWWAXY7Zn19Zt0R79N1ej9xQ=
----
-eJx1ksFPgzAUxu/8FS/dRRMZmdNlQsGDyU4evZsCb9CsUGyfIjH7322BRZdp
-L03zfu/r+7424DU1Kgt4jaLMOElSmEn7arSmR7h61tWdiWO3VWiueTTVA94g
-CaiJuhDf3uVHyp50S9hS+DJ0yKCYTikj/KTI35BAUQtjkVJpdbjd3j+EK+aE
-LA1eEGB56OHLNSptYlis3drtEtg7obBHWdUUQ65VCUfPFg39wJVBbGd0lItB
-klCymFhL5pfwZnPr1v+0QfiDPgY8mifl0ZhUwHNdDpBXI5qyvpaE3lBnMOO2
-Ey0USlibMjcryxawkwpB+TgjNaa5NPkNKNkirNZbJ+9afA4AZ92HnmUl7uc6
-nF4muaT2Qlk8cRdVbMu5xiM/ovPhDYx+/Af4BnpDqHs=
----
-eJx1ks9OwzAMxu99Ciu7DImuDMY0uqQXpJ048gJt47XRsrQkHmVCe3eSrPwT
-w5co8s+f7S9JeEt7XSS8xVIWnBRpLISA6VPXLGye+6NBe8Wzcybhe6QSWqI+
-xZeDehXssTOEhtLnY48M6vNNMMI3yoL2Guq2tA5JKNelq9X9QzpnXsjRMQgC
-zHYDvPtC3dkcJnc+Nps1bL1QOqBqWsqh6rSEU2DrPX3DjUU0IxrlclBUalWf
-WUf2h/Byeevjf9oiXKBPCc/GSXkWPUp41ckjVE1EBRtaRRgW6i0W3PWlgVqX
-zgnmZ2XFBDZKI+hgZ6ajmzNbXYNWBmG+uPHyviT4APCrejewQuJ2zIMQ045a
-/xSRvMBapIM1n/ifNNkD/ptUX22U9J0gdpopeXkqNHLEeRaW9s4ES6JD4TN9
-AGzAvqA=
----
-eJzFVttu2kAQfecrpo6UgAQ26SVKwHapqvJUqVKVtyhCiz3YK2wv2R2X0CT/
-3l17uZWQkhapfgB5Z/bMmdljHzf8lPIsbPgpsjj0iVOGYYFzaH4VyXvZ630X
-WcaLZMgz/FbSrCRC2fK9OrHh50gMUqJZB+9K/iNwPouCsKDO9WKGDkT1XeAQ
-3pNnSvUhSplUSAFXonN5+eGqc+5oIEULAwjgTufwoDdmQvbg5J2+hsM+TDRQ
-Z448SakHY5HF8GRyo5zWyYlELGxqBdcDTizjUZ2rSG4AX1y81df+bInwTPZT
-w/csU9+rRtbwxyJewDipUgNnnnJC09BMYuirGSsgyphSgaO5OuEJmElCZobr
-ieVAPVlPeaJjq0VXjtugVxHOr3RVjWTGA7AFOp07YYwTGwdecOK6iZ/YHBUs
-xzakTKXBw1Or2gowiERZEATQtQs7aKqcobR4myCtfRv4qrpJc/XPaIqLj81e
-zu6VZtKCx8ffQlsY+lyc8Mwmn1msFthyACMb0qSbBuZmCXy7y0XITS43f65z
-23JJjPiq2AvdLXm4VRTeBPoo74syX+0FkIwrBCP9L1IK2YZdAqd3paD+J5mU
-uX4wYMUH8lIRjBF0fo1bZ9rqbYhYlqHcTxSLeFMlBzYDwVoKx+rgNKE+dP+d
-/mB98Eu6+zS4s/tVKiWeH65Sk7xHpSa0pVKz8Lcq3azzSpWarUdXacXnP6i0
-HuoxVLrdwTFVag9+SXcdU8QkXddR8+cWYn6whgdjptDYhXkJQ1A5h2vWzH1z
-MLGRZ1/M1myMrwDPc4w5I8wWoAToFsHsVcC0yYkJUIraBmUO9TC65jrvbFXf
-GpOtZ7BfKL22orqAsb3qaa4caGUxy15jRsw+7N3nbW49H98z5qod2Fhv5cTm
-G+YXRIfO0A==
----
-eJydVF1v0zAUfc+vuMoe1kpNw8eYRpZESIMipIkiCk8TqtLkNrHm2sG+JYTR
-/47tJFsrCprmp1z7nHNPTm7sxRVteOrFFWZFGhMjjqnABkbXsjxTUbRoNZfl
-fEv1lgjVOA47jBdvkDKoiOoAv2/Zj8S/koJQUPClrdGHvKsSn/AnhbbLJeRV
-pjRSwrQMLi5evQ6e+0ZIU2sFAaa3DdwZIpcqgpOXZs1ml7A2QkGDrKwogpXk
-BewsNt/QA7hUiKKHOrkIGGWc5R1Wk9oTPj9/Yda/0QrhCHrnxWHvNA5dWl68
-kkULq9JBE7+pGKF9oVphGus6E5DzTOvEN1799ARmjCNwm2soh0BD7QK+r6dq
-NQHOBMLZM9PQiNhkAA70bhs/LXDdnwMTjJjx/wtHS5FtcAJVpqvkbjd21CNk
-va1R9fR9zkBghfl0kMDIbt5Ervz2t4wcNBz55uDcZO6np4552qP+q+BcDP1t
-IvWega5+koOO+igL1/P3y08f3sJv93Q1/7gYT0kuWW9qneWMM2ofbA07TzI2
-kB9t7evi3ecDQ2+62TF+ur90KmsUIxf5pI9wcu96fHyMUBR9jzi0c2uG2061
-G3J7M/wBokxbCA==
----
-eJx1kstOwzAQRff5isHdgEQa8apK6gQkpK6QWMAP5DFNrLp2sCeECPXfsZOU
-hyjejXzmztxrB7ymnUwDXmNWppwESUwLqS2Wd3D6qKtrE8fPvZW6emqpaYnQ
-nPFo5AK+Q8qgJmpCfG3FW8IetCJUFL70DTIoxiphhO8U+UkrKOrMWKREWB0u
-lze34QVzQpZ6Lwgw33bw4RqlNjHMrtxZr1ewcUJhh6KqKYZcyxL2ni129A1X
-BlFN6CAXg6BMimJkLZkfwovFpTv/0wbhCL0PeDRtyqMhsYDnuuwhrwY0YV0t
-CL2hxmDKbZMpKGRmbcLcriydwVpIBOlzjfQh0MgOAX/Vc5OfgxQK4XrpBjoR
-nwzAL71tx9ISN9M9TG82cEdIg9QadYBP7seJc92gOnT96UFVTg088nacZ292
-8O4/zSdCpbr+
----
-eJx1Ul1P3DAQfM+vWOWkAlJzUWlBNOekSJXyVIkH+o58yZJY7NnB3nCNTvff
-a+fjWgT4zfbs7O7MRKLlHRWRaFHWhWDFhEVFxiGc/zLNN5tl94Mj09z13PXM
-aC9EOqEisUOW0DJ3CT736iWPfxrNqDn5PXQYQzXd8pjxD6ehzwaqVlqHnCtn
-kpubq+/Jl9gTOR4CIcD6aQ8HX0jGZrD66k9ZbuDREyV7VE3LGWwN1XAM2GrH
-/8CNRdQzdKTLQLEkVU1Yx/Y/4uvrS38+RluEd9DHSKTzpCId9YrE1tQDbJsR
-msf7VjGGhTqLhXCd1FCRdC6P/axxsYJSEQIFXVOzCJq6UeDTfW23n4GURri6
-9A09SVAG4BXf0z4uanyc/2F0bEQB3E5868nFN1W9JnRuKVzAWtGPpZ7wBQly
-uCvL+elkfikrNnZYVxYl44MPQGtqd/6miUNaZruYOXyaGr+cb/agfC6slgSH
-T8+94c2JHs5Wh1std3g8m1aqYUofSF2Dzw2wCWNNZcf3ZUFdz61FGnzwZgWX
-RtNC1v8CqLz4oQ==
----
-eJx9kstOwzAQRff5ipFZlEqkUXmW4EQIpK5YskMIucm0tnDjYA+EUvXfsd2g
-UvHwytacuR4fOeGSlrpMuERRl5wUaSwb7ODwzixObZ7fCKeqqbFLQYR2yLMt
-kvAlkgBJ1Kb48qreCnZrGsKG0vtViwyq7alghO+UhUuuoJLCOqRCOZNOJmeX
-6Zj5IEerEAgweu5g7Ru1sTkcnPg1nV7B3AelHaqFpBxmRtewCWy1pB28sIhN
-j8a4HBQJraot68h+Cz4/P/brb9oi/EJvEp71k/Isykr4zNQrmC0iWrBOKsLw
-oNZiyV0rGqi0cK5gflZWHsBUaQQdtGbzL6G73cjOjkCrBuFs7K/y7cEJwF7S
-c8fKGud9HVSjSPnJP/BQCieL9WYYewCua2xJQgGx8JDH4+PPMGO/siK3V/fa
-WDmInYOe+jfhYjgi86R+nxqbuud4FgR5i0FftBl+4Ce8+9Ng
----
-eJx9U01vm0AQvfMrRliqbMVAvxyleCFpq/jk9NLe0qhaYIBt1gtZxnGsyP+9
-uyyWbSnuHBDLvHnz9s3gsZpWMvVYjbxIGQmSmJaNXnGC8bKpPus4/sY7kS/6
-b4R6wiKH8tgKiUNN1Ab4tBbPif+9UYSKgl/bFn3I3SnxCV8osn3mkNdcd0iJ
-6Jrg6mr2JfjgG6KOtpYQIHzcwKsplI2OYfTJxGIxh9IQBRsUVU0xZI0sYGex
-+YoO4EojqgHa08UgiEuRO2xH+oj48vKjifNojfAGeuexaFDKot4vj2VNsYWs
-6qGJv6kFob1QqzFlXcsV5JJ3XeIbrX46goWQCNLaGpV7Qw9voc6mIIVCmM1M
-K1NuPQE4YXrc+GmB5ZAHVzzGZ+P0pEcDZOuyhAS6VgtF5fjmJrMTdMgp3PGX
-pYHLJaqK6iksf3y9u/153zOE0mYepgPREC6l+ApPOlwk4PqGpHlu5Cshr+H6
-VK4x3k/fPa0bmrvnXngM7jwevR6T3L9/2E1cZgIXZ7n21cc2HWS5q/5psr+Y
-D96EBSf+P8bf6hzj2zNAVQxQFtlxm52wy9Dvhv2l/gHXcBQN
----
-eJyNlF1vmzAUhu/5FUdEmlJ1QLd1XUeATauaq91td8tUGTiAG7CpfbI0qvjv
-s4E0jUSq+gYsP+/r8wVOVFFTJ05UIcuTiDjVmBRSNYzuZHqPGcH8pywvVRj+
-YJpny/6IUJ1FwQA7UYPEoCJqPXzY8H+xeyMFoSDv965FF7JhF7uEjxTY6xaQ
-VUxppJhr6V1ff/7qfXCNkaadNQTw11t4MsJaqhBmn8xaLhdQGCNvi7ysKIRU
-1jl0ls0aOsClQhQj2tuFwInVPBtYTeqF8dXVR7NO0wphgu6cKBgjjYK+bE6U
-ynwHadmjsbutOKFNqFWYRLplArKaaR27JlY3mcGS1wi1LWtQ7At6ePNV+h5q
-LhC+XJirjNzWBODIab11kxyL8RyOWjY3j7NeMiHizxpD+Wsu8jtZfIPbxwxb
-4lKMugmlQtoosVe/e9hIWtywjWkHzJ6sWc924bhrUGtWYrcSKxpgOF89u4/L
-ginL1qRYhn8ufN//nps4qr/+veRifhSDaZ6bDE4HzzGck+lirU9k/IsUF+Vb
-0zXSV67APTbVbS50az8kqhCGBr3s6ptLPVXj0bobiJMBivzVOTqcR4EdWTPX
-dqD7+bZ/h/+031gS
----
-eJx1UUFOwzAQvOcVK/fSSqRRKVQldXJByokjH3CSbWzVcYK9EErVv2OnQQWp
-7MnWzoxnxhGX1Oo84hJFnXNSpDE3OMD8pWsebJoWnW0FEdoFTy7biLdIAiRR
-H+Pbu/rI2HNnCA3Fr8ceGVSXW8YIPykJ+juopLAOKVOui7fbx6d4xbyQo2MQ
-BFgeBjh5ou5sCrO1n6LYwd4LxQOqRlIKZadrOAds1dIV3FhEM0FHuRQUCa2q
-C9aR/SW82dz7+R9tEW6gzxFPJqc8GXuKeNnVRyibEZqxQSrCEKi3mHPXCwOV
-Fs5lzHtl+QwKpRF0aDTZ/xR6PS1teQdaGYTV2j/l6aETgD9Kh4HlNe6nPSij
-SHnnXziXwsnsdF7c5qCpJw5Pgj2fIZgfs4Sv/wYR+qb8
----
-eJx1kU1ugzAQhfecYuRsEqkEpT8oJYZNJVZd9gIGBrBiMLWnoVGVu9cGqrRS
-6pVH/t6bmeeAt9SpLOAtiirjJElhVmvTCYL1q24eTZLkU0loNjyagYB3SAJa
-oiHE9w95StmL7gl7Ct/OAzIo5yplhJ8U+RYHKFthLFIqrQ73+6fncMeckaWz
-NwTYHkf4ckKlTQKrB3fy/AC1MwpHlE1LCRRaVXDxbNnRFW4MYr+gk10CkoSS
-5cxaMr+M4/jenf9pg3CDvgQ8Wibl0RRVwAtdnaFoJjRlYysJ/UKDwYzbQfRQ
-KmFtytysLFtBLhWC8olG9U+g19vWFHegZI+wi10rJ/eZAPxxOo4sq7Be3mEW
-r50nnlzYm9sC7KtFwCM/m1vATz4t4r/+G43XpyA=
----
-eJw0ewc0W//7f6hV0qJN7dZoVGhqpmqvCmLHjlm7UXtTq/YeMWs3ioriI1bt
-qhGkoqSqKFpKqoqqqs0/3/85v3tOcnNyTu593/s8r3XPkxRjQ+0rzDzMAADg
-CkJH0wQAoOGkfnZhoqW+3/ZdtaLu6NzVDdQBgOYsllNHegBAAIDQVDcLLf0V
-uZHLRwiiPEUdzMyEGE1GAuiYTFYEkRjhBpcxf08r3ub5oF8HixkZn5MX+ycc
-QPh3V204hKcrmWKENG0vAde3N8r7mn523ZU5eIjlvRTbrpkiLSphry/AI6NM
-fm5+1Lh80ms5ynUJoPm99FJM6BVA2sV5ScrhF4nk0wWfCxZxh1fde/Drf047
-7PkqOf9oqOSPsvDuvfvck63aHiF26UwkUGDN6Mvnig8M9qMV8b4keQqqQFDI
-+f3BmVymufl9A1MkCPAovRpdXCMqNI5/DUmFEpMPRfxAa0an2/CZ489PSPLO
-QPbLgpwyEA0VQbkIQQlNviwocX7rn6dsvUU9EnT207JfQUnJ1to6fLOhw6Ot
-GIxAgq4kDQ48esslA7ytyvlCr+LgTlRaRESK02SeyeTeyKqUkPhr+mpYqtDy
-waDk+zX/ahOEubnuRqDCjWXB+MDuRUgq9TCHG5SWWs4/CeyOwTQCqViL+ht0
-NIIvl3eWu4I2vw0mlZSUVJuIZjp/C4jP+nlwgi62LjBvsOhobxfLT23cdPCF
-h49w3rPN2DmhUCiD34yRICIeBB/Dv9/rMayV4ckAwec+fwYADMhylL6dkz7V
-kgmGuIEGmw7rhk/ULaRvr8zSPmwtQejsAhohnjctCRStrpr68f37yxmP+zxX
-tNByPFvLfcpK8jlBds1ei7Bc8OXYR0q3srSqIKlDTbObQXBk32jqX7M0DnsI
-AjPwyNffX/oWMFsqJRuMGMlF9M9eX6qzguIl+doWcDhdTDzAD5OeOLjY29s7
-OCiHiBUYxb/Hv9YrFO9N/nt+AXLMFK1GFWQQVrW7u0VCdmq6uxH18JHVe5O5
-XAElE19WCano8YKETlscuh0sj1dq3zJsltvrsagflg/hqzWGRCzxHs9+53Zo
-NX6hyB/ZGr2aGOVv4tkmkInCPPbryXMNAqCQMAOZwDKivxBGVVPfVCS1wDXM
-GPI7/8ZC0OTkJL9qVE9fX+PmMaWtg/NPWArgGhaCzQvuXnzafx50QVGdPFt/
-0OZm+k/pkf6b/FoSPTub65ArfGx2c47XB2ZhaVNtAvywFbywFSxemAtGny9J
-lJoeh2pSTs4HBga2M3i3JaI7w8M9SG6jRb6mkEcMmmrxR8Jso3HDYebkvp7e
-s/mfP782dHQln5ycxA0IAB8akPtiFqIEo5XYBUspYQhMvGMoJY616+I3a1vI
-8kRQt7Sz0RKNQF9R6IA8YzbAGPmqht0u5Eb1hBXGdfDbB7/S/f0gVIEwQige
-+qhBIlNpSuhbtEjuWBJ/VOjZ8f6vs4Omra05ZGDOsK/fIMu35GsxdxDFXk/a
-5mf2g6Ijz8q8Z/d63Frkb2XdI15bOKf1Pk+IWBcyeyzJBUx6CJBTkpOLPtk6
-3t88Mkzy7fvAz5BN4wIQBdA/AjBTcFh94tqjIHNrGxaDgPnNmxlavVEOmJf1
-llTwN+JwNehU7CucGGma87um8j4cCVrsDKDsnG/vGGZmOWztv5fjICVdktRk
-VqORBoxzXXpEu6qVx3ZP03vBvveWt7dufX0LTDni0FehrPH1a/1a04V2VxTH
-DQAcaf9jut/nWym1NS3q811RHQvKh78Hp5P4uxa34TfGAdeG2ARWlGgrAddi
-qiHZk4x377p4ZbwSU1b5BGswEzOoIW8Ehvv7O3EluqLavRQzb7M1wdMPOomm
-95hjH/n4NM14INDFzum+VzWi2WSGuAQYkrn0aCCUvADNPHYDDZfBH7Me0/PF
-Pa2a2MfHA4xVWlXWDQXEtW++o/Kcd4bwUCI+0O4i9xWgJ9voLq1RiWEtgUDw
-46OudXX5dCSKUvbz24tSV40ELjVmNsFjgEqMsWAs5AlPgF00OuV103WDVUbG
-1zPvZsw3nzgE2BWahAcH39FtPYroM6kTWBEaOeo5uOKLTONyjs+emTEn71mU
-GJSWZDBNaf8FaJCuk54F0MYkSwtW4l54iaxJzy3dqa93kV1l5dcqI601Rbhu
-PHG4rl4WQ4TfbDCp+74X9q1MhaDcn62ayCQReLBtN7nH5ZxBXeTR0eTmwfYY
-wh+Z4AaQIT0cArG7oD4FjUn+Z/xVT++/dobMQYWbcgorZ30VNWdOfrAyDuYE
-SWCcQJFhbcsc1MA05zYC85de8IGS8kR8tm41Fs0DK+lUDAHE0ICTZWLYKTIA
-UlHqKxxOjKhpjiR/aG82frvmim+mKSXHXYryF6IfqJfo99z+1XOy3Z1nQvCT
-o+ChSY6Q0ZtdjWl8u3sL+yxHv4b3engfeP/a3l7373ys9Mln6bVyxCtN9vd7
-sUABOiaACSDbdUzSZUH2T9i9CkuP+2jnuDfi5eUaHcSnvYHSSEtLI7eW4O4t
-OUOViiwsBDg451mDw212CTWyp/4N8zmL5RjDQ9/9h2TTiQcA4ED5CoC+PCNA
-D2m70H5Tu8NrrD3F1fFFzL6C+D11LvxZ5KfHHyzSECZjsNtD9k2W4oVeC/+U
-Jg8idetq0DXodX95VIHD46l+3m+ljOq//1EF7k9hvz5Gs3DNpKXTj5IpW5Ly
-0Tr0BZsU7aP4mJqciCVo/heTujc9np8259drXFA9U197b/l05A48eldkCpVN
-HdZmZMSOS6SeY/tUywz3jnpW5VKxviTVEHi4VprtbAb2MVRAMQYooAWUp6Q/
-Ly6YpBQWFLLM4FCQ0WHs9y6reseGkbiYxb6J+a3XC/u15LftZAhPFqF0T7ca
-j8dPbwQmDjpiwC1z+h/YHEA554tMFNvfK1HH5IoaNA+DepicrYoCXuu2Xys3
-gD6Z3VTTkKnFq2DSps3a1bW6FW+ytCQrK5tnezUzC9U/Gd7rAuMZbgYTO229
-O+0LXeck060b3Ird+KiAcEdxJL6AaEWqd4WWe+RgIQkajkq39PDpyXw5fuW0
-kqQbGlAyNI8409a28hOHrBedERMtbDb5pv6WNIluIhxHRktfFoWTanPHAhWC
-+Got6qkihnxfZljrx6eNzKsRdf6V9kjDfpQfglXDd3QcsFKpNM/EjmzVcvRz
-lUCsmqLNqwJIqaXrXB6D3hXlaNOtftNnv7Ak3tDQWShRvyb978RTziX3cpkh
-is2l9HaMGBFXI4gFIzJXBbBeC6u7VnwvoERIdcUBfajQ5Hd4DZpBXU10DaUl
-VwtwUk0Fo9rLJApZ7t7dXq9pbwU3vH7Ulur3nufK/MaHAQHerF4wQs49/Qrj
-pSYzPLTeCkpFD32S+SvTAlfswL+E0zoW51+/f/8mqJ778RFmG+1vLvd2+4eG
-di4XAjjEQDTJauLtr1+ZTRcU6tXX6ykqzpSVffmJ62t+1sLNC3wEix2Lp1fX
-RTMDkh3ZSsvLUwOtkSAyzID8EXYv03ngnrWxnWpIWKI2J51696I3jCds0lTO
-HZAX8NX2jiYZtogPnDX/E9ZpNeTPbZ4fohAh/WwOGBdD8HsnfwlAqpLU1ByU
-pBvx4koEvBlenysF7mqcv0yQ+rQVvPx0R5lKy9Fn+7tjY9QbvBn3jC5mT02c
-RodGzsmJC9msI5Z/Oq4b5FzV2uzY1IDeVxCMf3rrUIX14S2CkkFCylppRXm5
-ir7pFAbMJj8V+Jf+/asKjxzAFe0qZNOsDBkE4KKkB9CxWb/c6PLkGpJ8i/8A
-E0x9s/MQpA7alXNDFfiRaDRlEsygx30Sus7YJTGif3GNEMNhT+uPI/u66I2y
-Cs54MYug3Sp63pgAccPp/jOMCjJ+QllJierU9PT0svhVXj7whvLf+onuettG
-f5+GaUxfBlpYHb5oh6pz6LNd/Oz7QPbvmqto4eqgICvtLUI2OLtGifiKKRbi
-1WZ9k6q7TBodH6qjU2j+oo0+isjSXT6uONzQsJQoj4/e0FFaTaMDvKUxM7f7
-8J1NTVATaW5OTsZWYitrnuHeeY6QQdMgCL2uvHPsOE0y8e7dHmtlZWU7T/ui
-7DQZk/N7rlO7gpm3ndOlCsApox+GeJkEsanCfS2QjLTpIf4ZOn8SGXYlViDT
-uRlobs55szJu4FF0tGoqlirBnzzu+72MN1G+qOVyxrY6LbT/sOHOIvTt6GFc
-imu+fnX4QtzpEPWbpxs0MJ+xmW3KWo46Gdfmn+vrB6zFM7NrOM1e0RW2sh73
-8vzY3u5h2bReWDjhYU6i5ASUU6/+LZev+Lkd2wSkOtGxqNNWpYLA8idlE4Fx
-kX7uSwro5AMc9kn8gaAK5ClUSUBcmw0ajhat5jSYxpY4SnIphf9lAlD98GZX
-fHYCK6jQ0LaRMvvbLG0aRi3Jl+VlRpK5ecJRirbmLiEZeh2lhaBFcXBewwO5
-LukOy7vu8a52eb9CkzdgBvDkk8snFx3qnEMc1N+qqvIDGagi4XHDWV/tphDi
-OpHa+WytTILFNa4oWZ4MjjMzarFZbH5zi0sYkL07Fjb3a8h1UCo7Gc4G5QAk
-R9xa5s5ODkJCQuxm7VCoZi9eAE/GiKdsd/i+R7MV6OkYXp9rA5IadbbpUFFR
-Eb1psyyWr9sy98vn4p8P1VB6Lvwr8enrbG+/gzDptJU1CJAtCSvvaG11KV6v
-nc8xfuHdcdfwZ69iiIJPf+TRv62VwC7AGp22IeblkJ+bnh6q7efrpsIm2zr7
-vtLlL7C9sDk/Y+Tbg+FvYeembFIVk9FrEw/MiWIcaWl7eyn2owdniiHbX7qC
-6o0hp0cVF0eBCmdf41g92uZtfHrX5EiBCr1he24FrsvHnzqgxJ/74ay3lCSB
-zu7utVZQf9KqnCwwLmDpMWwp8sDObtYh6mgtvJfq1+RU3zFwJwp6kvfguNoA
-zliBNyE7S+fn5/mUN/Qrj9ibb2jEZCeshR63hcoAaPVryVVVVXctG0+3Oygy
-eQl/XFB3EJidE+qZ5JSUXlvUH0WUB9xK/OapkDHizEFHp1bETYZt2ZLEOGZs
-DaeCdDcGk1iXwyg3ybCLn03nYsBB7w4bCKi9vR04eHgp7i4NG8tDqlE7PusD
-I/KmV1dXIUywETNSi9ytq0ll9hKW0EaL+pY5z5CQg69fqVeuMor/laR6+q3t
-ySwGjJYtmfEIevpUkYhPYuU/X+Hst7KzMyC3LnpH/x5gVD0aM7qTO3Z8fJx/
-1/KdJB+QoW9ndnOfmmgOthc1Xvw+3mya9WhbXhRF6u4sdh8c7q42NDTEnZ1V
-VZz9Gm+KtuPNooeITAsyC9R7mEENf+57BpCt7Rpsu1qp8vd6BkjEuHLLJwl8
-RdLlqUgNBdhASRjNUWoAW1O92Pv36BFX4uEPyhUqtZcZUhZDlqllqtk5cbg4
-njUyMlI9/T14dnbmE32ygMX7n/zbYqV+M/FgOX1VjimW/+KQcHGYdfEKMs4a
-9Tuu/5TYb2ZuHmjPpkGanDzblUvHVgkUWYjhvK4TTczMNRlxOGp8hIDiubt+
-cH0f/hUPRoT3lkOJmas68dBWPasYERZOMc1Rclla/Vt5yfYPL3dd/PNct4JP
-sBLHkZMLtQUJcSpUQGURZjxmDs4EmNxaUJJl1o6QSTdY5oanW3nFQtwzTA1d
-DpvQXeaQ0keRyp+X1hPZ3eZ2vzn2T1k93RAesaqaklNUXPj8mS0eNAA8PQtE
-FE1qVQlafwDBEeTWoGCOsrLdKH63Fo1+1lUprZwbhM34x3fvnp6efmjPUiwj
-C/j+3C8rK4MZRO/XOwR1L0aoODRYKJaRVglZVLnpNaw1bbDYWexV3DpQjbg4
-85QcHfOf8Htc3G7dQCaTW1paBJg0P3z2lL1H9OfTpqqnWHoztYkqTr+LvHO/
-RU13M0msd3NTYIQ2uFINRNdEfFJWFtN239mroWjSEjx2hdZZMluOcWEdnYo/
-/cjmECpoyC5UXFAtdxXIMHm7a4XjaXkIhVS2OdvEz89fUtPZ2bkRtjQZ9a/F
-omWDR0uWT6XLz1nuVrQv5Wr+S0ngznL/8uZ+fF++rjDBj0kwd8zFx0ciU+g2
-02lu7viSfSPZD2LuqWhjnTr7yWl2gpm+fJLF4ftJFAjOy8vL+aTcKDJzlNvC
-wsJ28GtF62P1Ubu/nMqL8m/hIUPyO0HdlC7xd7qhslkXVbjcQwEkgmnQNzr6
-4uvXSjPI4eruUZX24Y8c+TIO7dtPpXOmQaL5mHgXbvt0CPjy9pdviTSYIbYH
-ELhdiNn90x9Vz1xf4BQyc8FjR0edOydEIlWN7vZra4Ij3nnKrpaGLGztDT68
-qMo6HEO8mPov6aF85ho4B//rcghDTkX5n4WOZ9lXhk7/4G2g8/gv3h1ZvFcM
-yOJ2XTAuoHffiffmp3uhp4cYMGrQEUIMlPzs2VYwaPypVShGmqc6eTvUk4dh
-Z7+mUFwYsXJyTi1xYWFhR0dHdL2iU3qQQtn/ej/rlvLxT8v+8FBKZtjmJ62q
-F5L/0pnrPCzqQgsltEtK8Kvfc19O73DGvmWmFTZAYmLYjM2zX9a6o3edBJNX
-fidPj4rYj1DBdbD0lJrwUMUWeuTps5OxUH33Fr3SQgPyl4U0OaPI6DBZsq5w
-GKxYgHQnV7eJMeHd/D9qxn8C49GmZvUO77VJUqm9TzU5J8LB8Np3PqZv3d04
-dFe1ScS+x8GMpXubtRoTYMjPs3j9z58/Qq1Pa+zNmmbThrFfNmw/notcEQx4
-tNUReylPykfW9H+eNVJI+1vWS52VQMM716f4gv39/c8WQ04YGevzGmElvL32
-3pIfVrjkCe4P3kn0uKXvwuiXOV8uMKs9Z+O6OjfwDFUv2tSD+eSxKKfi1YaF
-pGIfy5Z4eXml6P8NQb003pEEtkD33FuqGFnxi3YHVVkFRkb7Y/FQmHuz8At4
-3h85C5pxwNpGXojCt62FqU8F1mJrutW7oRHHP9ifnmwRD3Y4a0zzTaR9Ltnc
-+MfCbmhEj/FNyPav02Q7KbhhWd/nSKX/4O7e5ubdpiRgbNPZ0tMdargnBC0+
-ho0vv2mO2ilnT2S54QRIhbZUV4+tEVsmDOh8rRv8Qfkuc2NreWB1jbd+AoWX
-NLPBdF/xQI2m8ht02WDEDCzHFirZmrY5BfN6+nSh2Stqb32+92nCXgCmZoVW
-/HjFM8YVoCSnpsEVw2JsOvNtnsfby+Aq66SyRFeA+8n5mXW3153LvuetB3km
-76UVgUQ0ToH0Z37eNyDAWgwJWD4omaipFEgZVpoRIsOa7LrvEP07Zk/kMP/Q
-Mfd1N97v/SIWBtnNwrbG4Ee3GYNo08P//pgKVBCOLy0t/bXcz/+l98Skqnk7
-rHNOP/xTefNRP1YacrU+eYPbmXOfmevhsoiISHB3g2xJz0KG/dN7bdAGi0sx
-FvXCbmBUwb7NA0iMulTl6q9fv77O9ieGLDdsbyssbmtEq31+Pdyp+XKPam0Q
-uqY/9g99rbzbSomF8s7oWufysvztRZmkhykBpRLnaNW6D8IjZprwggEYkqxb
-rFVQuG+ycXpq++heejN93unpSi54bnmZP0OrpKTk+U4J663Xi71PDvveVg55
-uGr8Z1Vq2/eroalFstW64dTFRMeUKJknd6eY4UhJkgEP7LqKY06P/CJq9+YF
-kuu4CslHiH3zViL5TdEKntWt5c9g0rDWw2vPZ1Z4xI91acrpMgCASjfU/g9I
-Bvb7eaR8JlFEJJEyljcdpnvxfZode5unq/zePdcnT3rsO+7pyabrFAwjbOzs
-zujuSQOdg4LalndqEdgzmlCYs6fCcysArXtPcuOpFAhh+8mwNmBvfWJvb0/j
-heQtoKHqYWUohVRSW5sgIDCpUJFmkFQHMRBwExLRelnqvvewh40um8sUq/NE
-Ft3vs9zX29oic74d8jQ/da2rdG/qMZV6mBNi3yxXvDFkV/EjJQ1+6+0OWXjg
-07XTYxr1V6f8AWjQtppbLbWIFlzqTj3eDP5owbg0JZhX67b/TjmY6MFnOpkm
-V0ijif33sv4aks2YKwaYXfiy0krf0nJshEGUI1cus2p0r4e63ODuezHqOVos
-EdHNhzAD3oxESlihhAMJ4/InzeF15OEL+edQEh99tiuq0azGslH/gazJpMzB
-QdpW8MCBAcl84Q7AGAJwrtz8IRczGgcIuulVIgHaiDUeMTQ0Yo06Iu56/luT
-iA5j57u3rc+VOOEWEBJSeLr+oLDYIMWk6C4r/L3mQGHA+NFwd0pyzOhqEZWN
-tS7JZ8lPAsAA7hhAciO/gGah6wQe23Z/Zzz/1x/XO4hfVVl5A4+MoUu9IU2z
-W9RTONhbW19TX5SxssWAY2tfqqR1Rmp8Pm4a/7iHHag0E7untSHBpnLotUYy
-uouNPScp7lBBAUm9lkn4/WMqv+TBXQrFms9BqdIIqiAoKgTX5yYCuJy0RnOd
-U0flapPTpiVXSwWZtSVoXpUSHLkqKmzIdaXgjcK+l5EURRxOC/m3peLMMzLy
-THH5iPROxS5PLpNfKfRrmL144cLiotf5T0viTr+DvFx2lU7Ps8m0s7ofiXQ6
-ckbxFaBZA9sLeaFxOSN5o6pkrZz4V7Q/SjcBPNhYJoAoZaxU4S0ATLoHf97p
-je/S/TQ71X60Sohi+zKB3xt45BXUlj3ZfdTzaO67vzwRT/eSJQAKBj6cDeLN
-GPmxu5rPyOp/di7k4QS4Jqj74qtDn9LiHOLOdS+fSW8YaFKvBarVyhUnAAB8
-hEHz1QrC+lnRzO1XalJwx3SHN3J91zuCpJ//De8tMnmGVI5GlEys7+7ujj+q
-JOn1YqtgGkAa2hEhR3W6H4wCgrp7tzLyTHYjYyGCYsnMMcBKAbHkLux/Tn5d
-eEzPXxOT+upVqd6nhQfhpAf9c1Wts5t+JPdykXmYmXlkjZ6Rvn967nfnWtvQ
-ruWZXF8VvqtVq866aD5CP7nptO8d1xPZkuiLg+jowMC8ScrZtw+HP6oynh78
-6S0Hv81KOBdwA4gKPfyOGQIlIK7lrukX1OGkEbSal9Xc9Mel30vrm5bXpJuM
-WI1z3WiznipPkdMzPTr8nA3eXCtE81WEdD/w/hL6++vAz58/iRL9p6e/W6lA
-qDj/W5tcFFC6fXayQK2ZsnI+JSmORpJkqqkun5bgA44fk4YwI0FYHAY7Gi9A
-0RE1MuUhIEC7sAzuPfp+OrXHOQxvaUxIzoCRzqKGqp9dFcTh/a6evswjJVX5
-MZ4MJB+/tQXVxXpVlJVRcwUZdpMgWkjM16UHDMnBc5aJ+J6TrwMDEyXVB0s2
-XWwqUgBNs3t35+d5HLpA4JS/v18sPa6kCKcLxox0ThQlJtekrEnPy+4cHD0C
-ANjgb/C0OGbs2dFcPTXB1ZnRovp+fONs07abpTd8Jcb8fHkNJKVWKkCSO6CR
-HokJ+OYuJ1jK5nj9Ogne35W8whQz1AmsvD2fXNDY4iQ1P/eNl/e9348NUUWV
-9Yk7NDp9xzNLj0F06pFo9PrJVvAC/rWt+AHwko7AynPHbArNl+U5TikS/GG+
-AN3bL0cR66/pSUePJA8J0acEqpVta2v7uFfaHTKrcvj2Ws5IT/I5WE3jZXwM
-VMagqrFk3R+lYhQgj0WnNqY1f2AWZMbyJJqwZQsAlinqalWQjFUwYgU8BqlO
-dwVwC6ZAnfuXz4clnIa6z6KaZgPsQhTKqO7DcZRzfw5KVDn8GsfIeutzgbmj
-5+a/rbbc3FqxobBEiIKxkKYuk7m5W/HjYn+VJrnMAiI6s4o7sRFyjcKV+GVv
-egP2c//d1Ch/lrbfL6k7PF/BI3Se8aXEZDHB4ka9GtG1vTet8ZubVuKDvqP/
-DsLq4fotrV3Mmc4LwaXgOZeVsPIYdw7Xk6nH4K42VlbWnVOy6r3lrja/wJfv
-Fd/CdetK3Ho65d9EzKUJnX995hdIp/5WXgSgxmRjPe7R1mpbsBlki3LcklVV
-XO3L6rqKZk6ghTCP/rnuAONEBrWJ26WK2sU84GzTZ5OmbwPGJ6n/pRkBXCJd
-H2FyTiw6FHzMiNEEX6aRJLaCp1bkdEzZZWRybuiZ1ED8xAke99FeBgtfzDCa
-ndEO8gpOZ1E8hPWZ+uons9sV5Ya15LKym5N7mZmZngv2dnaRDFUtXt1mYq7t
-Z4wFIGpbQiW6G+8ipmntjt7fQBjL/tw/Xl93W/0q0Pe0I+qkXVjsR4CMKFPO
-ZQAbbWIOBzOiTtPS4j+rPAOytEG+VJyUXcGNwQ/M9PcrLOULReHLlN5b/Fkb
-LhiSG4IN7FhETdo1fgXDgBzwMJ4PmETenO0GlGxu+vQd1aCLe+0lUrEaLyrR
-xTosJ2fnS0u3AGwx4xsb/i2iky+uMmQLamEv5bGJEZ+7Nmuoi+e3eszYOzxg
-oSfjgcTpQDtTEDegJb0WLcuTwMiIrGIvLcvvXtz1lNUx9dmOBlPdxxUDGQPy
-tRLc7Np+UJ31sHdhiMLrBYOkh4SgvaYeafj39BSnVsjrDK3bBGrKHcP/2upY
-XlpedkCh0BXlHPxKVj6wPBZ9eYZKMWY71HPbLthDl6dPf+5KHfYNdSZC9DBH
-03r5F/v9WP+wCAppfTz1NS4ipLCs4mGB38IdTHwLtzWH2DghW0FDp9PW4oEs
-ad6L5p6tmSCpkxLm5OJ3pyudzTQG8Gjc6n1n6g8m3DNX0UR1s/xRvMDv3zBX
-pGakKsvDYnBeM0jKYuYz/rG4iPW6GRGf+LBlyvgqa+43SUPTMUmcT4+jQx+w
-trYd7f266bZTx0KZ/p1ER6VczsvrxGHM5o5gfHZb2/3IJ3ofZr7GMkdaWIPP
-zTDgo4jzP2tE1u1FluUw96PjoKeSb1nW+ukEGHTY1c3R4pyzm57OD3Ez+nYP
-sKO/gjN2rbKEykzMMWZ2lsz0dSbIT5++t93H9111OJfmz0J1l11J+riHn0tP
-dOSBI4rvpNMDaGJEEOVQHw/rfd7lz2Fr+WADquNpwP0s8elDieUDB3Uw37cX
-u6umRoMW3z1u7ev3oRt4Z1STLOX0NkxLp2YT0Zycn9rbt+3t073fVY8Lx/xY
-bZ7eRKDFrmsEln2n4nOofsbzqaK8Yhp/Y6xl6f/NAqgADw7Ogp/CeDKqHo9b
-xYy6oqQMqC7fpM64iVdPb56UaQbV6CB22y1tDJ2dg4GdXgtNffPA2LnArr72
-ETmfjgWnn12UMEcuaiy36fDeD+8d87V6LBtylXVCcojFD4+FWDWxOkSFrXR5
-+hgtLovkpox30lSKpp7MNImfLV/w2nf/WzrZ0YuHFuoe70otLq5VsQs51Q3d
-vxILSIUb52XRKyb/6PIOC7qvT6bcdnn242+4sq7ohLTfLZOhmL2igJsC7sX5
-Hm1m9ahh7Lqc5mxKkSo9wO/9ShGcPUtIS1QYPLP/FqZMTAXGmeDeu62PpQSF
-6yqUfd6DVN/BtnV17VpG3yeuyVEKxR2i9u46yCsq7kVGU/myluz+R0hXVAjP
-8t/X4YSLTO1SNrxZk3v74kYgxz5+8gt7CmOQCyo4MDDQd9PibJB1Kyr6hcY7
-+gRamQ+tb6wNLC1G12tQdVbq2Ypykjb3XCUFyhlRI/SXjAtcFyyIruhIOwVV
-gl7hy3pLv8iy2c2eWedBwRJDFKgZgvUrRYolCh1hYOYgI3Nhg5JMQu3Eepli
-CAjux5ckZQEBaWp+7xLXRDbMBSY9dAGuPyvViX8FFal5XqA7Pm/t7V4bsaY7
-0H5z+cG/f9/3AuoWEsbopkE0xuYIcREGu1eWTcWzja56eojqa/z8FOuG6UAF
-Awy3Gg6tK154l2NPT297JLGv+cXHzQ8b/w3EHISj+lWvxnI7A75aWQzjAw1s
-cLPwAQWi9JSR2J+nuugC8M+pqX+DSST6GqrzFUaIF9ZK9H43r5/bqPP3FTC4
-w+x8B5v4uP+f9drFacWP+bZNqp14E7an18ZTMfEjjvH0awwjzSwsD4wh7gqo
-6VYkBnD+4UcUmBtc7yFQdqL4CAWudbhUAoFWhK2Sz9/bw1qwwsHavtHb23oG
-Zw29Zqdtp42gBbikm45zr8bHgJFD+mQsrKysIuksKjhCv9igkzymVSWJ4KKI
-AdSpYfA2L+/grtVsa1Pk1hMikYhdC5bk8iVVjKVpsly6/rJ82dIFZd84O6gL
-B+4nUqw2Ky5/L6uh2qwGi82lDN7Qs/DmOTCn2I/LaslFtJJ2WeNrnu7ai3PN
-XorLm2uZmemrzgo8wwiM8fj6UXVq0d7ZqYvTkUqW0HtpccSb3nsNTXGrvyPK
-rySxwaGpoRjJEWBMOpv2bEDBWv3PD3tdSUkZFiwAMMKjzTrRkcncwcFBG1A9
-ZYVuoxO4++EzlwDdKNt1sr7YDdewzr8/6/OfzOp2bfPx12trTy/detJRNQXR
-x+QFAIzZr5jf573SOZdXY/qnWgK9sJDqiq7GWECtq5DiwIcAHASzWbyGt6vn
-trH5Oc+TKMh7dc5XR+T677M8qasxpdpIEI0A1gulk7wqlzum+blvNzQiMBC2
-pxQi3Rnua7wRLHEcRlv53b+loWF33vrjJuLkxEUuj1uGPUjT2bnqt+o54dd0
-tXb3/zYkiLs4sbb219TtpcdqxbGrleg/Al8dR6uY2CqcAgOM8wRMdOME2DR/
-ZXGvRKhcHG82sTLEzcUxrmDcqClND5BYs+bfGdFZ6mAvW1Dw3eTyPZagm8BL
-8KsjXEbXKvMIUk9kW9xMvdo+Dg6+XLz6tDdU4cqqXI1ZHiMbABjXfx4uAxz2
-LLhr2cSTiBQvHJR0SUcX/3v/hZ7gpzSZhtU5u9SqIzQUZDcTpDqV+pb/V+Fh
-qWlPd/fJP9Uz8q+zg4vBwaSfCREPaH7Tv3ctHpi+5ukp53BsYj+7RyBQHe/L
-qSLD2oEIerkmAVcAuzOS7XXrQg00YPDrkdJsUDnRsTcTpxt4E8tE/wwTkA1u
-RCe6orrK95SclQoiouOLlr9A84mxtLx0zyrtQjKz6hsKFJ8rpazJZbG502aS
-91/bfvr0aVyiv+d4v4mT5vWi3dp55OflAyMjgrrkmhLq9xpNK3iMUR2tJLvC
-hdVZsQ3fNx8LWrM13DloEBiVo6Rq8GmLgvI8zJc+q6GonjSdEKEwLFCJwAB8
-Nc0L7tuxJj6Mll0t3Syu2ewKVRmdm5uj8sq/Wypgd3dq8rLaOKhmiSq/9Crx
-m4/XlY6Oszn9rhAjecVczJDmR5pWf/kDh4vNX2uFrAcHWZmZeGi9mZiw7u7U
-7a4OwryX5hCYZlZYHYCkQx+/tNdk0sVA5pP1BTKdc0KhV9PllDBgL09PM7H8
-k4OdHRTH+9v6VwUEPXAeVgX5k08SYq3FcqyvBMgH2sGAt+AR0t9yL7dav576
-OnFHUcWtzFCBi45cVwGmqV7xWO35M8IeF96b8Dns4oxMJvOfUS5sxfLBCLxX
-t0ldvOOrzWNC7WJamENiskC0gyAmPnny4G/UHfWblNPv37/7nK/73FIKlfSW
-7Z/zXK967HjbNIZNgOZRMUe+7n9dHr1/TaqNIbI8pF0pWZ7cDZhVtibTGEjY
-ZMYMQyf0XvSey/NbiVx0bAQBnlcANfMBSTWMMVnN1yOwjIshByzNk/ONLaIC
-jNBisrO56+XNoC6QLT5ixUb3LfRXeYWeH5D2I0OyXBa7DBwRIN9mIurt/ck+
-qvM1+tNUjn8gXVLS+RxKhCli5Ac89praqLxr+ns33ZaUxrT81NbWeF7eadLV
-ednnE2a66sgPeB1xbbEbGOLA4yE3mVuJbAQlxI9TH+bid04xA7EHn3eo7WKU
-NOiowNcXFtWnwINIp1mhRWbfv2dnXezplYDXv3r1ryHjymfABwDILiT696XT
-9Qc2Z1H9y5P/CyzdjTZcWd/+wrYDhZZFknE4XfXKeEHEtXdcOtd0ro3/uR6s
-7AxQ405btfpLG3kawy6UGP+Ob4JRk1T0ipB89R5iNgWN9aradFJh7SIpZx2E
-//qb12H963v8zVtu7u4thgSWWFQBHBsll2WgpiTNF0Pxr9Ir3G5boKpnnYWN
-nc31l2Cp64aPdCa/w/t2ZEY8FyzuX2GrGEtQMQDeKU+7o7tfoaEaxcguN721
-0LGz3M8Pn7Lg2wkt/10aobILpa0s5uBkjnAVDtn3cH3ypI7sZ2g0toFe3juF
-k/M2cQ5nHm/a7mMDS2sEEInQ2uRGCndDgbACe9DNwJtsgpnPTLLBxqA86osN
-NPCN7akyWvIDwbnU8IHohMscND8RH+HvL/1cn4/AnUWYm3sOe55sIl42ay4q
-WOeKqDZx9Go4H7/bNmFQO5VtZLT7HezZdty3czlWRghpXmdWzKV1F3gDZR/M
-dzv1iySVnKV5dr9lv25y7r2azj74NS8Wh0VjN506ob+hTA+ThXSuqfggGABa
-Gy7SKVid2SDHQ5gBFWxUZ0XeEKhWjBuo9rbkDHZR4dDFgO2hmR3tbgm0sJLg
-qheHKr7eAmLFBSdLB+MXJ9E7Sd+mFrvRxet7R/6dpcS117wP3u0F+MjuceWy
-NUCmY98CaRUzhUfKX2VDq7DJtI/H5WvN3lcfawbnxxRaNxQ8Jl3yM5XXBoDp
-XLnNb5jfCLx5jwV2RSmrrGLPLfcm339Vt9v7+W/ezKglRxXfeZclSCuUA85k
-Sk/5a+7Pt/l02eZiKotkZHi8uvukqbe9qys1mcW6TseofBeOw3GkwZf9Dvlj
-AgNINg2fyqL6qR2wyrt82HtB6gfnTc/MzPCf/05KYr1lxpvhBPpGdVvpFWP+
-K109FgHtHYWNtnWSFnKqsyTSncEXk0WvrmGcpA6Wz0t2Hc71xsPw/RWGd4pr
-RNsnoESZCfXah4aGpdXCtvYM5O9V7HQ0LnPX15AgY3NjUNHEIwWqObpzXfpW
-fW7KdfjYVE7EVvEbpsFv/1GZDfEuM2vOBSN4LSZvz1g/zBIUaNdt3eDpYxkc
-bEua8eZUKHtNfh6+FGgYnuOpeMEZLRh5ceJz8dMyhJX1gaysbN+BMrn9bHP2
-2+HnAtcUtiJ+9Ub0qPwrMWsOaw4ehkMVI1PxY9GK4QxpXRRIPrPqSTHghguK
-Q+nO871j38Ofc895E1cmNBK4hJqhPq6uXT3vY996t/nnXnZOF9DFgPqPcbvL
-F4qNDUHnRxXaVVM/f+KKfCFEaQNM+Q4rVwktgGJYsFb1iotgjRlFablww67A
-rtw3yHW9ayAPcEMV10wejEnAfv769asqSwVTa/pm9Clo7IagDhPz2kfYo3Sj
-Wkmu396FFWW7VVXfD9+o8lzhuu6qqKVTTETU1x/P89zWvPpQOJNGrc9/+Mjo
-YuxuYVvwyTSJZOPTK8z0iTZVjwxDYNxbdULHwAi6C/hx5CKTkG58MjtLxRHY
-ldSJwz158mTw2we+jPGyzN/nnqSyMba6muaIJStrsZ1fZnazyvJS4cqyPEfo
-4pQZK46jtH6m/oNe9YKysrL7PFeQLUYYTSTIWvxEohd8gznRi5hA+/ckAhYL
-vc6nG8hnDBKgownle8j1RzJeADB5m1y3cnL6I/kg3HZWnpJnoisqGF+NLgIz
-x0hb7qez4TatVXYs6qv3921fVJaX5UwlX0naCFSogl2vMTRf3ImaPaq42Dsz
-pMRFqZrlbVULn1UXftetRjDN7tdnmr4yA8SEdH/ZEyCqYcqHSuOV0IiozBR8
-qKNNgZ1YCmM1MOnh5F6sgJyySs3JyT4hy2s5mnbcz5DdVBOBjNVwNKl3rUGX
-lq0pT6aussUANGdwB+7RWrOf6Czs62fE7broAF2NAaQkVIGULA0XzUuA/IhV
-ARpdTJTOkBIqTXSs9Kqv2biTEltUsxEK47maRIuIdferm3oceHa8Pzg4WDas
-dI90NOwuRKPUyYShQ9D2TdaaqvDhvQuDFchjLnKWgo2Q8/Hxvw0dHstnjc1d
-44A/7V44D67EMwEuwfaDf3dyx3j/P2jFVLRfZT/i1MH8TZe4lqXM+/dEC/R8
-smx5ef/lbQ69anM7Tpns8rMxfhyydA9mwBg30KsYgu1VjlTimBUvMfLUvSE8
-sdbq0famra21zVzf1FlSIG7AU5aFYvPB/mnGOeEilIOQ1N2NAUdSFJfnlpZk
-gVWzm1eSHkptjRau+RUXZGYhWsYi+cGXvXgD5NURWmRQnouhqNG1W4lf9g5d
-Ysl1fISppugry6dubdYTeCgT7S34XOA4BA4wqFwoDYCrE8byddfW1k5/4gzr
-YM9/7xZlEZBcKjSqTM/uWh5HHxVeBB5sP93pJXDZ2NnZ2djoYV6SN2DvJBc+
-v4JKdFdfC+zumVlxTMbQFSSUxjXGQbT9SdyXdoOajYCAy1L6pkRKgsHWfvhW
-cPecZ7D3cvvOYsvIKhydLDSSrI+ZtvW2rq9uK860ylwVq1Z4CxQIXvzBqGrc
-f7omR4zdtTKGwC2P5uetC1zjdouQCjQ/ZDhu15QupA+nT0Evaf4HbYWOrumo
-sPb53OZBFRTVmEHvlLImDa6urkao9At8THAM3VufiD6nRBtiNM1BGqMi72uu
-H1dBVjgPA8cJzipcvw1F+IAM6GImfQ1kT73lZN+Rwer8fSubJwmCFKUWLz1k
-YnlHdPj8VnCVZMTq/mz//pbPZiJNQKnd+w6mwd/PcfVchr5U7/9c/68qoGo1
-/TLDx93dXSfsuDv8Bwn/v+G1spCluYvfg08yEktdWYwFr22dFzNkOluKDWdc
-mQ3aX3Ue2yva0U5TFCB27kQ9mP/MtdRbUrPR0b/f0BSxX79y1DLshARNAR5x
-weNWnVd/6OwESxHVyDovACiG+JiaF65+dpx2kGzXbDAb4d3tFzvu2toDT5pS
-SgOUbrlvyZZXENIFseI18bQ6VAtpIV4xaV7v1gxhpDlW2YtkioUaDL/Xw+HK
-bLcfhGz/KivXxfyt4j/70TZrf7eQiP0GI+JPp01W5Pxa6srLBnyZ8mLRGiqs
-pVWuu/BLQv0fZiSkk0Q6UsnQ60by2a7yRLxby5y8wrte5TD72XDap0ImmjVo
-mVmDVHivrTiDOgrJXFNXUmMw+kvPYbzv4kyzgDHuWahT6o97W4EKjlzXNKaj
-HFJX2Z2dSaLYibARrpKQTmyNH1FjNsEkxYX7MY90YkKsK1fj5nHfskfbUKvd
-lJsqT8Yt1aj38k0W9cIIoZMTp4dG3XFfEQ6y12jTdyEr6m/dZVTKpsfAyau+
-Udiaxqf+a7omdTro8IiI1zicI1ffjghiJexWVevXroWm/vNPs/3lFao3TGEp
-KSgCEiQ1Uj6FNay9TmjOJaJX6kj9aRdHL1slmB+qxx16TtGTjnzlTo8mo8/P
-T3bq49SX9sA068mSKXv6BXVoj8YSB2uxxtef8a+PVehorgzmmThyfWh3RKeI
-6oLghRJ2XcFbxaHz/BRbICsNYPkgF6a8E9zW26vRfe+SToEw4zNN0RxXmMF2
-lyZGDaNZy/KSimNxrTRXblkeTyUOlvIJt1YyMnGwSCr1lZAJIJ/NzjxogXQj
-zbDu5bi0Vk4MXVjxdJiWptfTnh6lv0rm5v1nWz4X+w4XbZtdsbfEhmATwf1N
-y92WT2SrJcH49MyHK1xylMRnVODuZU3Rlq/h4I5F4eVFfLBbWdru7r+ntMe/
-Cb4UrQhxMR6iA4BFR9ewTsg6i7QEjYxsfxWfpBdCxGzXjX//QJWL3ndTTcQL
-E5Z/R/aTN94rNT1e6Nz9rEeWoqhQIEx9Quq1eUmCkomdfBxpxk1xOIzJZaZn
-ESrcQIUqZMfCfeDDR06xSmHh4Tj0/IO+3SsL7QH8UYeBT/gVfZJtMdl7Im6k
-gyPPkQjVcWmaNBkNhSdPWsIXjc2nGM9/1jfNt99DmBTU+PG1zNqTzWbsH9PF
-fLV6Wi4C3Bb5Dl85uvrt8d+N0MBJ87IrZJjB3opmk9Hu7Ln5RnB3htYlgG4N
-etD0q87vgLoa9tkg3eqVnx6Ntp9iYzTZs4R0TGVZDXVeSJrm7bnJpGIL7cNF
-KV1yPglsux1ciV+8OxQHXwT5Y0rLPTAvKf5uxR4A3CuBlDHevS+XIAlyiZLx
-c8AVK2U5X63bXc05k5QgO3cAmFhTSgjY9jUsMBj8z3PBz24wyBU1AnNFMaBG
-KOmRgFFPKsMufgxCYKgY2Ul7ZgKohIz/+YOHEsspN5UjdLYXyTb37hu4Dhqz
-0D+XQmDeuL5Y/S3ABi/KClAe5qSce3L4krh4M7QmWmS2pm4H+EgAH+omV769
-jdXxlRlk+hNmItZJJM74d76GdIKngJc2gxrRrfY793maKdw4sTD7t0cw4IsZ
-6afKWnV3EH9/eerXTYaNdyrxBx2C2/WvZbtC831lL428DZIivpX0RYs+1z8m
-EMZcVkBpqwK/IfuDHyTTHyyFOnt5NZjUlVZUaB9s74ZN0pD8ZJ4RAwBUikKG
-8O1R7wqUZTBUZVGQuIYtu4khVqOPx9ueRP9zjy6YpAwLH1uVWVrJTrlvnJw/
-hhXr3yFvmKUTwnBUM2xRPwMzEEGLuc4F3OtJ5tdbFD/94eTOJMTTtT1ZyxbZ
-vnLS58i1YGNTf3LyqZQx27+c1iXe146TYanB7L2tYbmhoIF8te+LyBv39MbX
-uJzXTOqsG65pxDOnoCJa5jyVbh2E90b1V9Sg3ZXK98PvCHpzcQiPTQWZQMX6
-JuMAnAb86X66gsRQvhbIOJZJ4aYIcM1fnomW4JfsaDx0mSJFATwS8keY3J+A
-GQziQUQhTOvbD5rNGrZjz7FcR6f5GVeQb2zZ1OmQev/Bc8Eb7dakjbqBorpN
-N9BzHI4r0QTiu5wkqUm2/UBb/qUR/j0XPBCokCyEROfHVfoGcxz3UctgpZ/8
-NdpXsxGXs/o7YglnpkskDusOI0FlbHW2WohYk7qCyYukqeSEF36hyYyM9v3R
-5WCPghnyxyqYk+evExXnDeweKEfvmsj3sbeyqJGIW5EOvp007Cz0r2cKpv+W
-dPIZXVsJ2wKHdZDR1Rt6s429uyO8CRoDB2cwg5a0ljcq6KhL0AgkaBcyDonE
-A4da7QuDg5kEcTj7rgiUphBLvdihMYsCBGCsW/W/EXps9nV4DpfCUSCmoEjU
-UPTmlSQu+PiwVm9Yx0+Cc9ywjoBGvMPg0amC1NKFadiLZVxQ6Z5cZmFhodfg
-fztLM1imdVbUOOANtAo9fxTxwjZ43NUcKUk8LJ0A60sI4Dpt/VyFk4UI7cN7
-ywnMBrX/m1/dOaAP08eAEeR5VAE4hRQmTJR1ec7DIFo4FpiqDkD8obviDMTr
-f3kJQ0SMfN8wu0zrVLyCfFmwGoMFYiHFJWoIzBCT4CLeZVAN2faQDsUAz7ks
-mOcfM+ondveuRUPBnZSiO8JvbywfiFCzBTQV+3znIPbtgVLuNHbHUvQeb6Iz
-6qXJgMBbSboX8LQSWUtBOjbc3ZFl7sRvSlF8Byfu6SniX0Upo50MlaPSQXz2
-0PXN/fnjcAPgEN6LWjwUR3LanGfjzlazYsiPKu1BC6KR6XdbeLqckRx/gMqa
-Er0agBv5v8fGHwOM9WdSnf/zMmnwJ9PpDkh+8BMAZlg8CZN19isVThn5bIV8
-A/by9mRKXvv16zWVkcsJCTjVZVASEwassS2SCiKIVhuNluH1fwY12JYDk2jb
-2adyP/DT3EqmQ+/6piZwXGG49EyD4i8/KFluOG2dfNi2HPWTk8O7fASRvCJf
-gAen7CZXjN88s8i/vkBc8+/CjaMS0+/Nx3EDLEETkp6EZjvLFiji99XhINvA
-xtvj7fcUr+5HIgqEURyFWq2XWhe2Bh6xwXO8FhIdD0uTkmViLjv7FXuUi2QQ
-jl2wdM9ABKNsBikklBha/EcuU/SKnEhe8aoUwlTKc6oVCif/mnuv/bJULxmP
-fVxcgy7GojE1goKlbGYgY5CZObxgBppGk+7UbFb/rLEkUXCyUGzbqWOhOi9T
-q2rg8fdLdKX1eVe505RZkx6aQMf7jLBMCYJPMzdFNZ1e501SLC00z7Xw6aS5
-G1Ix/729Kohr1GvczCPmh/d29dhC8tOdkH6LIga2LdyKKuvd3b8PpUpLwb1L
-YIOHJNOY7L3LlNuk2nQ4IEaHTRhwCclxwws5XwB+BLwSR5Se/3e97EDp09a7
-x3R+6clDMFeD+jfbN1D2dvafgpSBg1H9y/KqEsfnuSJX0yg29nJGRo8USPLV
-SsQhvukEd/XBD5YWsEG2VVG4Hpbp16Ak6JIyfPNAIy1+IAOrI7CDwylkOhev
-y+g8oNjOBg3CUkZLJCIqWBwEW2ObRTZtoGbIZOwrgLTQWqnA+l7YbNA3Gacz
-qKaSkCUXUoXwhv4qE7WPa7wWClYhieqa960xmvImwprs7epkE83JPY7bEXDo
-Ay7gUODd3VN9DZ3iGmlBBieA5LceTsKIZ0GJocGy5WqRaapGwnqwuB45O4Af
-wE2OVYv6gy5GLyQ2UthEAKJYjWQhYjHOo/gOC0mV4lRWufmouBg3jwTdnk98
-Ue+hlPRg+ArVz5z977kGg/qHnYM4gZgLwlLJvo6/izvWbX39hGO72f27NS+K
-t8TABDyjuVzweRr4UePJxz05ma6375mKlmVZ92QvMb2j377ZBkkxaJ6zGxbD
-UyF71z/l/efBwYOJXyqlQHczixwD/FzXOzgvc8Lr91DWkAeKbpQIapQSjHcE
-CjIiTL068wr17gOHwex/+D4G2+sqs4u28Ym0bEFSuZxdy6+PiCn4kORdqfzi
-VKxVhWTMP54wqJoD3UszTsXEZxE85VziaEr031B2IbhpU24NGg090otYNmuB
-6/FmGma6dY0OMEwcVDb7B/BSvvC7IgmOLwfIYiHAtpeNpAFuE7NTgsaNSlvn
-uzGqP5JhSKj/IGX+fVIRyXY91tcJWalryiMIJWq01KGLBZhwuHc1Dlum7u7u
-uWN0Lg/uxj9vekmnVsCoeUvChl1QE5nX9KM7PKXkimgAONXKnB4lSyd4NzVv
-78NexDKj7M80i78LlUtt1vcynX1k41wHLN7dVstFgui/gF+IrdWCENeQIHO2
-j0pG7ONVj1X4SG4yRPzXasB3vBUUCxGKl8u8pLYlWi09IjwSIJfzJ4IdHsX1
-acVqTLoZGoYSilnHxBP8ymsEqVLIJ0iAwQ1yXeckgYjZICJeu0rUWYoiJIiH
-iGEhY3i1jeGwe6lMxveJ1wzImc4WIFRxjWNRg5r8//6eYydeSFXjTltaHytT
-c3rnGy+Ss4ua5Z1zwVKxb6/SChuIgh37NddYnIE96NBLriBRJvX9oLHOGLYa
-0GaXSdPsA9n57u6Mu5bvJwzGJJlGdNhCUX/A6mqTcKY0oU9BiFm7ESuUViln
-ZUQMm5aOpo6GjrBmruuUpMtsvq3l6xlxYIqJGcgKlAPdg8FLb6NGaqjZg4XW
-Iu+aoFJJzqozCD71qcANhQTBkXl3EGYgKv5JkSQZUtsNGUqaObP9A+dXUHlf
-RXYNJtd0P1LJxPo2ibRNumqFXFuoqKiIW6AKB5T4H+VdV3Ueraq6ufkroack
-azHlQ05LefuAOgk3NTbJar5MN4PbNXXQQkOQcPpNvlsk4G2i9Cuzo2CGvWnU
-A+CgJNBH1pkrQCMU5S83RK/OBkchXcyr8fqVOdzVVgXNOCeD6zfgk/ii5giV
-CuWnHIkvvBZuwBh5/EoDPttBidfo1G/AGyCSbEtcRHmjVCESHthV5JieFuvO
-rWt6C66UOo2NqZkrZZt+bGzX/8GoDboiVwz5GWYvBGaivUGHAMHVBeIfjUgK
-RuR3En4T/fTfZWsjkSCrghdBpVgIgM08UBtVgOLb5OItlWBf4eIsTQq7ReVq
-VzhSJz0y4Q+Q0gMhQlJryBsu0lOYIaH41z/eS4/gsZD2rVbria2t4/y7I58K
-XFByiFCQIyqRHFdypx260gUFSjmbYd7PAZMcc2ockUOuKRbfnunUvYJg0OPt
-Xm3WFi11nzY/wlJqHB9RhT3p43/YRwtaxQy1yhWTYf2TrKwb5FoMOAeszqS+
-JDO5JzCpnV6dLvxB8TUe+3NgFp4+e5yfjLV60jHsFtBn9bkg4RNf7lHE9okK
-5Ysk8AeFGi3M2666W4LgTz0KjP9vFgAPXWg/s3Wl02xEF3NI6DT2yF0uMjEU
-xYBfQz7DmlcrJV+GeUMLMeDI8Itz0IuysrLd0C87BwPqsT/93irH7Ni6onGD
-oG2aay9jBWKYvYWXAO71kNR0KafiWHB+WCa7UKmzeiXm5eifhBI6Rna25qCb
-Nhxt0LuZRCjvJIWSlPTaPknpdnUrPlhXtOc+qiBO4FGY+HpnvHGscbJfpjGy
-wOGvZNVf2n+XH4Lo4Fxarpc3fF9DPsK4KZVR40/uL215ZN3iRmCkGex4Xwkw
-qZVS+C7/v46uwx/q/4/bnRFXHVlZXRyOkIRkn2yurJO99947yTgroyOZJ9TZ
-J3uFnHFxRrokK3T2zF4/39/rL/i836/n5zken8/79ab4Iflh7aNRzxB/Al9M
-7d/g68oOwfm8IKqu8TI9z5m2d+Cr1gfnv0AtSQ/bSbzLy82GWT9QKwRTFeXW
-ggnjWCjbQhaWRDil9k7P3dhiUvWWzVODfx5q5kO6cGoBvJOY4d/dplYCpojV
-jVsz/lXmGeI4R0c5HRmgtPatbSdVQaz7H+mm8fk9mRzCBI8XCg++omLvvbZF
-zkEiFeyGCH3Fx+ZmZ3/Z9AWrHsWWFDDtYLI+3Aunj+L9aMOa/HP0xmPpL319
-g15ODVPKIPIfuWBa5t50YGptdm26L23R7rHVIsXpS7eve54qRoatk/925e7T
-aaCsvZUFfGcP8djv/u1TG1LvdfBYnuG4S0CTGQimz82L/OOb62HSgQbTEk7J
-wpKlfMTZ5oYHJMb83XK++iNQN5SD0uOR6dZn6yvjFtV9rKfbPUyP84ZnZiyK
-R8nubEvqFFmT/5N/6WCtkX7UweRWhYYU6sSXOierqRD9FUlk5v17cve1xjaQ
-pQk9Ylf6HEOtBILB0lU1blKRY4XU4V9iahbmlp4l2AY2J/2RfjekXkdrdftL
-+kg09dcXPPW3qZRAsfvoQsAAqxbgrXBZdled1k1T0eatngJJnbvD1s3xVcJS
-7B1bChFn0gTfRqPnd55KMcgAnOBApS88pUqA2ElmmBvrb6x6JS6dyp7tBsyi
-XANlyEDzFBEgyZqkdldnvDAjZ61lyCFD/MfW4bHXx9OOb9nfmqP1B2VIbXNt
-Zr3JllLSynXHZwUKJ04VGCCTryYzQopW/Mv36yqu9S7GVd89ZxukpBZ5rrry
-xkgNwKukiEFKXmejkWLw2RfylDr2GciI+SBIR+Faa4Uv4aJyBomb9CmmjfiP
-ikkSr/SpcgJdpaV9i76bmiACEP2YYN2fpSXFtVf3ICLMjIsLVXzDQlTQdsZK
-7M/Z0VEThK7PW1Un0XhevPLHasnT6ovmZwq9AHLrP0dHR//+gWLu80Io1Cg+
-zHEk0zhNvXoa6B1jZeZvGN15P9TvDW8HkMei863hj5tm2hag+GcVEHVimv1O
-yB3bJAbKB7Hup8zKm0+Cx7YO7/QloPsPw63+ducT1/a/sF5RmE1tYaZLDs0b
-+szT96WTa/uq8JiGB6XOyvV3fx6HyadmqLpI2Y9nxvZQSVeP2Kilf8XIIKG2
-Oj05sdq3HjPuhGfaS5RUoT9LigSax7whBY9YU+cyBgWo58cofYlW7Pftllni
-NPkQDwTaKaPjkRRNvv17TaReBMpArr1SxNl3z01eQVaW4nWjGYq6pxCrLYbL
-tFH6wuxhhNKvjPHPI7qw3nyKjB4zMACtn/aAXxos+DTHDItfoQ/U60jIT9bT
-qxfQ+7eS6aV7A52rgiX32KUwmz8bu/HVOPJ20lsY+Xmw9rgB8Kb7C3qVdqgW
-jHe/paXdfbrJ+rvLrlVU2XP5Al8ygRsYG90KSL9YTSmvYS82SedW45QNfNlb
-O+OrkBZO5jbVnMY8FhytaIcwMBxo6DXVqXFHO0PwTSTvWVIi9aHcZ7PdySQC
-6Ww9KS+vNiMjSNpMbRQLvTWroPDkDuj11mmD+y28cl/fgyQVsndC9IhAm067
-BxrSlxMZApfEhT7mAZr4jRpLrXSqecp4845+lY+6ZaQKgC1DCk5LJdJi+vo3
-TQQfPOYVYEnmL+cLlkHfD5imiRAVYMqfo+1tLzMQtW0H6QkSveMmFbRNJs4/
-7OBRqQZk1+PP2DEBUuGxYrzO6ZlJAzEjEOQf1o+i+RDT0k+fTX2KX9KSA7AQ
-Oh3ihKkOsBdCKOJTjHoF+C0TUwO1/HDH5eFvNzSaJ9NmqoF6fnjGImDPwQgE
-lI+OoCRxjsjA4NE821larbPGr8he2vGTKHCsqBQ0D/4PPAZnK5+HHQC/gKJg
-5M1yUMDgX37f3OJUec10O1/fcf9ptEVZyl3tMipbRhj+bYXoIpUgLPblnWtU
-Q01rfMOvTSuJHpH3U/SytKa9CxdvMW7wAE5SuetODx+ncic6D0pfgz+8wUs+
-rHGkIiiE3OdSWvN47YzwbDt2+LHyhde6IH+sUuQGb469KtG5uux3U5F6+tGk
-o5O0XR2bpWjn8s/6aEfxEnXQfQwMTLsdAkaqGjLD0q5TPmasIqat2ej0YJCq
-O3yfIEiT9JrSIuyi0hfSlYpuj8br8ZOd7+xkX6c5dloMnYESVGJ8htN4mpJj
-jweFRyRFGCmqnKnnCt7SmiPnLX8+nXuSm9wXuadwSVIHeU633ANQBMk65yjz
-qcd+bsIoKzRl8VC7zja7wWKAy+2aHd13orgHJH5IeuTEiysLEiSgyCvpyvkh
-LXfmqymwIB5y5JVur4XIH9yVxhsQnuOfnS/egl25qbdQV0c2fipGoOLDLy3l
-Z1miAH+80OaMecepx3qLd/4DnKTOg4fXp5uUTsNvUjEgSYpkcKAYbxtUXFkd
-lVbKO4WDx7CqoOP/mHQ36TpDkAnof6fnegrn3xvc3wD8zIkN7rifx8fHf46a
-5FlHwIJGr2splE2Ab8C8Oiqo12OZemVhsvZ1CE7YqObpewjy+0oSae/8PBwG
-l5KScqn/VTHab37IZ8YC0xW0HN0+cnHsaUnRvnUjGkRNJvzbgwPp4xs5y9ij
-gcp7Cv+aTQpOnITeYXz76tVw8dNfds9EbuinAsEryhUq6TUQCuONktNaKL59
-SOfHWpcRH058coYfkAbmLRV0c5uDqhSEx+JspThZ8vv+ZKskz2KEqjCLSl4t
-0X85QAOCdGOSboimya/7sisBOziaZYN50+vG7wG2cgzNWyqTFNyMRagUJpql
-IE5dfot0KF7Cova6qgbG063fuHrYoW58fLz/8F7SxFvFbl/+f28VxZ6qA3s3
-8vIC2mc2AmBwqlTGPwFJ4p/BFzlPQAV7y1RKI/7mmR/+UOseUgcWyaYAu9O/
-MlNz0NyksmNlteV5XzP+3MdrhI1xrWd+cREsggfZci/kiieIv/Wltb1hy8br
-v/TBgiINQysAmKBd+e4SjT7aOPhUupRuN9WAwaTz2M1edgR5fdHTDUJYfCwz
-RhJGTpTSa6wL5TohNQ90cknxzxCGpL1jHg350/U6Ab18s9aAjenA2StHmVPK
-DNs52lmwvNzNWl5IzRt/3hbCRMWbBuTD3xag4XUTixIkCNy6r3NfSjlpaUhn
-rf1QPuLk8+yWp6enSvKXm0VjklrjMSfcohra6T9bcoogfIYw1Gt7NgQLC1XF
-Wrz4zJZrKrenfJiTNv8pWprfjiWWfrZsofbBOwgi1niRP/ZNVC2VIYdhQj64
-/Xvxq8ispF6N9GP59S52XtzG1Fds/NYCdtG6/zRcKu8/HWqGjoHAlZ3bmkLD
-xFWttpu7JYCETE00xDXnp1t6AMcQCYzULzk2K+ftIRMSSrVdPA2TJxXfeCxj
-3de3vgzhYEApiQ3tuYRGrz03fGgq0itZDKGQU7TR/mpiUpez6jByr9Ojnrf7
-euAjqarzdUdH1jhrk9cMZFzkWOqQJUsB4T3OFrLlJrDGeq+Pd3+VUSb3R0xJ
-pjBdKcib8RaOMHx0LFOgm7a1AO5KevlDoYZJSUu+V3qJU0UNjX1Xb/zFuFpb
-SR31YcwfXveJVc3csNfhOdxQWZ01VqOsp8pcq/hjvG0pRBveBPXV+JNJkRWt
-dXNMkiHP8d5KdKE9q09xkdro8atrqdzyi9Fz0ikQ5Ei1vRzX7Om2ymUPU/X5
-CVESibF/qhiqM65eqbbqn0lqmyVdLfosjI0Kj2xQ/xSwhvJbwM1tXVRB8cnJ
-1xEoAoHQl38biXZHyOmw4bRR9BpCsDRjFBOEJUwHMOavCog8yUxVC5MqXqg9
-P/K2lcvn/QzRKoLKkHo1Qdy2YUWQaO8iZ87ucHOBnFhD5hHCfu9Xoy2zN/ZK
-hs+HXxZp75pt+NVAFwT0juZ5ORgG58V226xR81i78vG5Zv9jbDW5sIC9YMkn
-Ntg+5NkfVoOHCVW+fUqxL/3uCNBSnHt8RJhAj4K+XaOM8MvMzdUOi+z6aR/u
-kvTJXjCZxtat1oSBhjKytlCDj6z787AnZtlZGD2eWILElNZPbUjjo7L6ja9H
-jtK9Lmd/c6Gm0pLkV3dbfqs5pge563uDt0LWUXFUrmBIVPOsqEIdxKyk3yVj
-Zv1UECevTIZPn2A///PHlSMhqZYPoNFu4eZOGxraNM7bMuMhRa0RDfSqwrwK
-efJoiGrBLF0TIQpOGNilro4Zoz/UIN5QNjGEI2wMYQ0iHz6dr0/uZ2QkkOyT
-1VaDC8J2aUlmVtAnMrwFYT7nF+GBsr2uGzSqSWlonincvqyRoV/EcErK0Y63
-BNf93baxhwKx1ufbcZ+gBIcHRH/P2Q4RQPfoKBwIa3bGVbIk2uJMRPHN0NvI
-bgNmDpp0eyqdBuGbr3gK5UjOg0WfUniAmv7D+1gQW08SM6CXNQ6QIFzihvTm
-xZc438SjUfey+VlvdmcbnzMWFCD4kLlAwh4jE1Ncj/XyqX3ZODgmL393wVae
-E7d3/BniE2Pg5XQVLA2I3YTLW1+rix77DLMm27aYqE90m0w0WroNJRVhvnnX
-zmVoiHOFKomVfyx3VRmRPP+rM4rF4Zcu/quOKH0RnYFf7mFpgt2ExvJQa6/h
-cSjlp1KtJ4I8+mcSSXO9O2ZmoL4rd/LiRH7Y19vf8baAreGegc6Dbzq9VhCt
-bB+qOz4uD4smJMY+bwRr5AvYN8/JKUPmOQ9YaXkB7Ue/5l8B+QDwJHvlbKjv
-lIVFs3KVeU89++zso9ge4byUj2tf/q0V5J65iH3USvdgpSj5VFqCMXVib9yg
-DwSgeOykgBSytJrPD/598gs7W7UbeyzLLh9xtm3cKTsoUSCeAHSVck3uC4Eb
-uAdrbo+DBcuJ3mUqjQ1eoNrz8INl+I8tvbBZyyGyvuyZDpHO8wNJhgXpiLXK
-xirz9lWRrDmu9ZnmjPqpOjTk754Z8ZY5we39o/e/sfog79lOIAeFKEB1Jval
-+/smUc/6GAh2L2xqL11SJ7HbFqoCiVaMByaMGYyH9fTf6XOTqnd4HmBOftYj
-ab41l/xDrmXebnf+8sRSwFvu/VChLu7rz2U/bViCoM4NTZ2MBL6/bf0SUAAW
-ajtS/M03BThi/YmHNVYJkICGpPAtC6pSkftMwhHs6OV4vjLQJyEJBrNq277m
-j/fIT/QQfF6rLIk+stez8AhERBoWBBPFR1mbbnXOXty/fJ39t2Y28mAdkVPa
-rtuXS3jlP+vj3mzRdBhVbUDdWZ7mMDkwMPCAUA58najG65qs2+Hg20gaRvfa
-7AwIFMRcu/beGVPpkchj4KxEdhZtz+aTctuBsoCqqs3aaxy8L6v1PJMUzcOa
-MYCzUfqTvSQjgreb6KWqbvYNqmyIBkYL2mPYJ1y8W3UaGmvR268oA/xAD9/v
-N85gJUWQ6Lq6uvPz8zd7ptVZIiyfob6GQwzFNe4erG1QOKuFqmpNl0qECpAH
-BbOGfK3dPD2wslpsNkLdINGS+JRpcWw4CuVujFrysxwEi2u9U/VTanKF8EFu
-BdGTcM/abdbythIz4kTgDO/GwdGO7biYRfgSM8xQnPeRx+/lw9PQ0FDfnm0C
-4TmOTgd//W7jhjJoMizFuoCm/wWwBrwj2VvPHsDZLeP0ykrnOUPPndTGJ9UM
-0fCc0qQbynRK8WDBzA8m4xI6t1wfFk9LXQmSP3WPYsw2KaF3LVRiQS6JryNd
-7Q14YHU/dyu8+riYu1kvn3Om07N81aPx/f2shbo6h9bp5X0TRAh+6XjHOx3s
-jNo/PR+y2Eq9WE61Q1yUMckfkVLlW3yWBk8VLmr58E/7+lLlj8GJ6F8zFhqC
-wlpFE3ztXODlYJA3HFyVKPYX5g3356b6dlgsV80pUzQFC9z8MO0x6hSfx9jq
-fRe7YScho6BwH4+d9tha33hXh6hxUGa1lNy+ymNw1ZhCqEpwRJeaeXnafO5z
-JS/z259vjbDreMDML1rk6kknLbr8GaeHW/Qk0p2PsaRcnq9CyjkQPkRs9luV
-l5KSZOCYxD+vY7XadaUdc2/B5nNizW8POeDCZhii+ZCZYNpENFSrDde+VONb
-mChC9ZwO8HDTT701WTUtL2+nRyUgAJcO3j+XI4T/H56cfZ4XXdzSpcEnc0pS
-eX9Rbx/rFmFgrBKEHmekNfmNaKsHlB0sJlC343TwLRuxUh9dtsQbdDd2gTeB
-QsD0qE0lZ3j5PQ6OoEDjKuJSl6K09Fwq9/1hggACVWX2On3MKtC4IzSQDVZW
-Vha4NTP9a4bm8ORkf62m9i1g1EjrafxtmEMOLWlyxTnfHpJCy9MP4FWWLjFJ
-1zTvQ732yzNrVpZ6NBkEvU5zEjaTTRifTIJm1UkPI/nUIDRTt6g0DN2J7m4e
-shwcilVd6H7hqE3qVN30D7pl465STwiUtFkBZa8MH6KW0NPDYZGC+B4jYXfJ
-7y8af5cbN0MJjnXzXkdiyNieIgcErLI07PL01+nWLWXdYYJC+EHFxfmW8OXB
-rAQuljvydwGBWglwuajHklL8JPhZ9YRX69Dw8IjNS6AyqhfSG9WrkmzLioJn
-VtiIVawtEi7lwrfavUFLSYI5UuypTCz0SsAx8EpAa4M7cW3/GWgy5/Er48c3
-eD5nP6OZCkeRC6Nlk1Thbv6yMWOjTlRAb2b28POUtaxKQIhaPBogR3ZUGjUC
-+04vF2V6fVJKiE6+oBjcLJ0IbFFn/yhkBPrtcsP86RD/WsCxW2yW1sSeF+sf
-iAQaMrCHJ7Na6jQieOb0+3tXxna/UQgxODhdGtCQLaAfchiShMGTFoKazTbX
-19vOD6bGV/7tLPSVWC+25Iuhkvom/YSy7pEPP8Q5vW5By/UN8dOU2Uj1JNM4
-13+X9igouF/3jSRnA4U5dcn0Sff8BKu+Xer2z2q3wNaXSLL/Cqv6d3o090Xh
-MUeJc1tD/Wkybu7AXQmYfh7+8s3jwE2D8yV/80cMC0dHQVIFgQEB34WNdZmY
-MrAMenp3ld6w3fpzlGh76wD086kSW59YTVUxFrzfYpdjVIegegmksgFSwdLg
-pnQUSuql3998aLH+bFppegU/GjgIqnEfrNlR8wGK/7snU/iwum13sN6VaNYn
-uHu2uGgnzckocCtmRALAPlS60bJwHCbJ/pKSgxT8DNSA2dwP0a2bVHhyvcfr
-7+mL0NBkj8OjMzmGHseysnu8nLYKhKeAiZD2HDTgFTk7Q1C+rWEvoCjkDm8M
-D4SCTh11r7yx5eNEvpXcxZHtcn5DXd0r4E1Ac8TGr/014kvzt/bvjKlL5hYq
-Xq2XDvS8CeWiowDB5DQKi39SNyl/gmgE58RaA5wPV6Enavz/cpkT0D9X/ELa
-LVDgHDQwSZBEh5vUVKIjrjVZ9OXu7V3F5yhVnvVCzrMnUesGzJ+EfDhtEB+n
-1YJ1sUkg6iHfYmhi/WCXiwUcZvT0toF3ClDhMeV1/NkiOHfob7CuuBE4wZoT
-Bm+3mJ2aGpfcmJubWzz7bQASwKO7eP61xTyj5q2F0kI14YteQJEsOY2atXSL
-aowTkLrrnl2orAg63vFdH+tTyF3w7V4Doi9xSOrR3oZ7BeZXkFtuQeJ5hwIn
-jQbWQ7kZkj/bJI4h1jkS/HRaw08D6iaiuQ1rmOJ7182b0RA6frvtuS6fWgCV
-kgiduAYEsEEhUtidVgQCVa+OsanAlBK7v/kaoEBFiqBbPXP7LSNOTu35n9ZY
-cCiMS6yS5XLddu+UReVVvBwmEPDSmwGtW52XF0PvHz0hPJaRSVArhuKjMESP
-+pyh0qo1ssf1L0Rg8IOAwFdiFRMuupU0XjVQvELY1hM8NuT9+5wqUnBHba13
-UNDRXBdlIWEQ1uXwIMAnWo6JlsLH/Erkk4JZd3spgrlGIrHoJv1GZaf+n08J
-+fdyhZE+e3+HDmdCCd6cmp+cr1xSPmmItHeVcHkAQAN3b13aLrJv0egSyO6e
-7xeZLtQgVEu42UEZqPyqa25xkeoPen9HpDIeiMZg3KcSqjgyha78WBokpCGZ
-43pbc0Jjg34ONo5p1A/ZDfzXXSD8gzqSwYcElB+QoBrkq4G9RD1LS7BS3L5m
-CaLWu7nM2J2S8nMUHuBVk627gFUF0JYrx0rqWEae7+uWPXinLX/+b3wnyG19
-00cJUDbe6+cCRPPFJCpbraN/weFi+hfDw1ddTr7+24W2NOGFSFtrOTdXwzVK
-CS7hxF6wTviwloaQ9gMnSa/2FBEtIbrK2cDUlM+j/YfnnyEdgIdiujDv3UHh
-nReeIuEKck/OF7jPl4fzHuubUhzHgTUKq4qMyifW/IeD35Tq6ellYP3sECJ0
-ggzewDlptS/V5L5CWjT19vYDu21QfJhhh5lXilgAeECK4ccGX4xTZal0ytia
-Bhxs/y4KSGPPp9GyjSqnq51ghwnnfrEU9ZxuC95YnTCtZIHdUAbIX8tGpKwd
-SD3iSFbrjf6EvE+8GyfEV90x6dFo/f49gZQ5ZiemfhouwZWBVUXB2K/bIdqg
-k13kj2VtBATO1qEFhFfoqEyQgGrlRMDBAVpu9tevk0lCxI+NAOGn9DEX+U9C
-D1bKChzOI54DQThN3Ee01RR/HuPkVE/DUL5c19Ont+e/rDiLv6PyNnOPdE7/
-fbpffXlQcEHLHlahs/KIHjlSUiH8/Z0+TjvJXSmedsDlYec0fzvXZkBwDvb0
-ED8PDOWKK1y+GQvoYIvZ9ZKt7KgaFLH0cWX2wQqF9Fj3Oz6Q5GRZ2PGpzc6y
-fwkU+5Iox9Sjz/NhaiOnNDgigiu2qNR5yIhet8ZOAkHz0hClnF+M5kl66e7L
-Q8VGM+YfEZb0Xue305yFnlP9orCx4p/M1D5N1uFxSVFk9DMwXhr5YV7/icIj
-tbvBsskZH+Y4qw1TPkSL/fwlNBPJ3eohwT4dtj/xaDasTkgvZuyOvghlqS0c
-pAQ8283Q45ILbRjZd2j3eFuSD7ZhpcPf2w0H9dnnKNM9sYfaQkmcqxK7hs1g
-Jw3XmO9o9bfgIuItKiUJhpfA9FJpDcVb0T13o+xESRMFQm0sVEpGmZnPxiWF
-L/e6v0lfe+29XHXt/H6UzIFP9E8XtopLkGxwAvojRBNENe8Uk6WFhsQ8c5ky
-Mdyx+sKl4HDtWsUsgTB8xgMwkjHSVm+dmpgJdhRjd/fwkHo/hPzFpJ245BMc
-EiLLnvwdDbRHkM9fx/MN8c/M4OrZQw+S7twp2vONCBnsW7CRZkDhezUHbvBm
-ggdIqVx5eXkTLvX+Ob89l0bF/5t4NzmJeC8+Kenep4QR+mxqZ0vp6b4DsTnc
-ZC4rs5PDdUR2aYZ9cjOnnjC+t2Rp8YeC22xa3osxKH3RmzOuqMCeHod9e2yd
-hMeaiWYBbFWI9ogG6NrBxhQHB8e0x+G/RdXOkPqO1vfhR0XELXoN5XQqcofr
-DSIaJoZpaK+eL6UJbhytolI6blPYtT9qlI/em7L+wttLcpVl0HIwjNgp99li
-TbaldfE3fXUxg8+TbDULJN+Phm5tzHSEt3Ralk9E/Hsa+X3TbxvZQdUrlNiL
-TofeR/5ZX19fXoYM+VqCsjg4IuDZ9oLHHWYgaYAJUBXB4sPlzWhg39Cw2WmC
-iQlKj3moMyGJMIT1FeXElj6X50TLkdDxrD3oeLdTCn0lYUvGs4i5/Oem1URx
-5THTY42Hiv7uUu810r+ylp/ci6xnLnqoQuFiU03USrczAy3wqO/m5pQ6TSHd
-8Y6O3aSCK5sb3FmQnx+S2AslZEzAALylCz/bLZ6BWqp6hKo/ehRyjrlJjUsm
-X/G9I0E956bGn6rEwMA0+7dxcUvHwTKs2zvZyX3vtq55yxH2rIZo6a6MxZEJ
-asmjkb6+fDYkzBoGgzPE9ewErfu1Hs9wlRjUQMdWrHoU4QZcXCzF8IAAIyhL
-cD4paectS59Wn69dUjXn2u1mK2sxVNXXCuJQJkbodi8PgEq5cFMdnjk0pKMz
-viuXmvHVK3emvPqA9vjf9vbEEnbt1AfE6xV8QzmGB/410wbBj01ipsbvUm/z
-aJgAP2M/OGPU4DepVnzeibI4pys+Nu5YXWRMe5Gwo0jk/r6WsUbsjCQNSwAA
-vP8N3fOY7tAxyhY0CFThDWGNLXypK/jaNwFpU2nxqNrSMXZ+P6R7oe9HhoAP
-6y5kUOZQhkkmUiP4rsHK56mjwbfzwylEl6KA0FfAYMdrOmXrkw/kC+4m1Vbd
-jXmDngMfo804tQHIx0BlgAa2rbXVVay04o7q20Yare7D8CRvEEz/C4WRgYy/
-Za17DzMI9om4ppGelA4WpXsBVNXJeKjDzZAkoPfvPHxlZ8FNAvF1J7rWzX3H
-SvOTNVADky41UUV1I23rlMcr2LS6L6WH9RbDq0DZn/6TXUoy7Es91nJcJDio
-1PkbK7RsNUBGOVEyL3hm4nHgwcHBD3ruH7M9RE4C7/SIEhmH2qb0V++YkDwI
-3erhZIbA+iI4XxfPE8Xe8sc1sp+4I3o/LepniU9pIreNy5Q2EQ7sx2pTz5nc
-ujKY4Hfa/EnihoYyJWUxZ7OZf4Z0QqUX94LTSo8xtKJHbRSAyi+zhjeb6WyR
-fIL4D9AFbExfTIrsbUcgbwL00P+8WM3WpHzDw/3KstlPps5GXp56tpGzlwN4
-AXGFLVN7csrx7lP6xaJ4n0ojrXGDdPDLZ3ask8kcex5ZG5umGw1ncy99giAw
-uJvOAomM7M6d//4F+OzyN1iJkY9KmG4lYGmqcZ/7jGy6KS3zXrFfJomdF8VT
-E3r4c0ccafsB0u9NtrpY+IE65vvbGfPakMabJa2PH0vxIqHVnoGG5wzZ192u
-eXMaf8AKXUSMon4MuLEumFb+WPFjSYRFygeK6T68Lkx3J3W/qzAiaDk3t3BH
-ehCbvaflI2NC7LVIvbFcoy2G43kiU0B4WjwaJOeQ5C97J0nc2PC3iyBa3aVe
-GTRqpc/F7fjfh8s55xxxlPU3CxNdhgVeZVXDwMDA6z1NflNZ+UuPUkjYKnuE
-S05DbbOgDGNPdjzfCSnSoSDSQj6cXbsMlp9oL2gAGtsKCdu3T7COf/z4Hi+P
-yj3NZ824X1F0LrifKysr53FMJMxg5O4tm5z52YuNs8jLLRtpu8JkunGmZA8L
-NWdBY8kHRyo/LCA3YM/KRVqnLfVPXGNu6viaEf1zA8r9ScN5xhbh9TfLo4D9
-e207QXIFhHnQrtzWfE8cD/uVcY7mUR/3qzX5iNHUzmj4b1zb9mbr2bq2rIIn
-Q9ygjbccp/zMbOpC0OHJ/tBUY4kapbsb5JGHeum7rJKN4L3jMzdpN3rl4BDk
-1vRCHRsfFdHlI6SplJfYC2yNzjTIL4YKE2Wr1ZFjP39/px0Y/7y7/CVGEd2P
-rdCq/H2k2X0pPFfBfJ+bPppMo//plYDo8Zu2W7R4NJg5nHcwvdRnTZfrtOqq
-vI9I6q0U2Rt6dBdBE0rzx5k1NmOA6nusv3ncBUP9tDkcTqUEKO4P/fcx7ETy
-yZM8NfjX7KbBrU7pm/D1cszoShS/tT/hLXO4lh+5JFuVRfvJoHB1PFZObzws
-sjPoLLsg/+9eszHonjILrtNwb+eKyepqO8T5khJKJ2YiZ89X9ByjybpTKErs
-UUUTGZQzsu+H1IpHvaS/+09P/7rpMcPJjiO8UmyNjLxm6y7/VCkKGW15Er8P
-b2+dcOii5cVg3DxcArdwxKpw+YLIk3+C3UE9/q15wxyebTubrVtSOUNCcubV
-03HPICPcYUfb88fHweUTPubGhobjknty3Kl9+mSWKPsB1rH9swnjCaKlAAKV
-pKancLJ8KwaoXKlwYXuC44iG9nmvXyN/IbqDCaJ6oCZ/mhR+Iqggq6wRzUzt
-yJYGnnGak441uGvQv/O21HoJMoit4FB7Y58J5HnYc0itNCI5hK3QLbPN4f8+
-Y6ChAbkuisee/KWv3rYh21/ZIyhcnu0R8kLam1tf3IZdrruJs9/rmQcDlHGc
-SW+1fJUA7vUVCse33D09/wbHizcaqQj7r/MAFAMouGax0Ia6u/6tPqyiEcda
-Unk0486csdnihai7SceyK2y82gDxJO86mfqNPNNkoA0bDehGMen6yhqT6ZNm
-CNK4ymxUstKi+j5LomXkRXCA14iTZC7RUu/vngTBXxkKz4TAkpJxC1f61OJR
-PtHNejs4f+nYp5kqvZm27WGM21Ssi9ebs3Q7hNnCgPIPN4l3VEpkE78KNXho
-oyGAaIjFz6d1nw5CNgvO2WZ/5YRfBINikzkeiVorYTDKOny8dp6eTL8MoeGR
-b+wPVUfD9oYOXKtlEqkV5B30CliePpVjCEb80bpHaageJY6T7v15i+r479C0
-wpnKYV5gtMfhlTIfXqNstQg0Pzypd50N3ag39pzGQl3vbFO/TFvxk+VK7VKh
-8T+YPw4O8YkukEvTrkusbTNRRfB/c7DoLHj43qXsrimqAoNEWyllDzsIlJXV
-TX77/VOMofjNh/G6B17OrLalzqYoanv4VdZhZOzWUxhCaX1rLsWgwdZTahrR
-SIqPH+V0lCriBDSMUIZH5IqI1VMMWl9TWIrlW/SCdKVRuVG50rca3QevVueq
-pROtFIW7Qg83600rjS3DrzAniB/xky3QLYb82WgoxQQjhNAAen7kQox4ybj4
-5szE5VAnLXD18BSBugopn3cb66C2SQNYtxx+LzXXlLs8H0o/oezpePEej/bC
-mXkz9vyac08ipr0ZzC1Fs/r6+pDWbbvDj8d+/LgvcOty4NZwMGus4uq1hOZZ
-KUtVwXb/NZT7VFxcHHfk2c5V1bsSLS4nCZywnb97vWFV5Rj3nBHC+ej5aTTP
-75MehfXPUx1bWwrBPtuLA3UR3Lz/VoWr3dqP+XFBcuwD7RatE6aiWaMDGgPZ
-qy0oZ2S6qpgo0kaOS+FivU6PW+6N/XE90aJ8a2MpePN+lmp6rlrPZ2i0d4J4
-LVSDWIyWjjj5t70ybtHYWl//mgi+a71FlRELsJPjup+lhfs5MJDAHVtfKbJ/
-4G5QXgtOe6LHzqg1Sxr/ZACiKAmGA6J59NlfW8NBSIwNQp4+OjJsO+r939SL
-nsgRi9CN7fX1y+Opzierh+bE9ojzk6sQbhm8b7g8aYqwuqdBrS8Q37uxtfUU
-blDn3nf46PCwta/vGYJv+BEQKZZ/Q6LYz4r1q7efebXKfNRCbtZS5t7Gi8Zf
-06JOj6mV5lo8ysad601HEuBwEGEPSBofheQQnuNUY1bhBnvh7LESBrvxfEJ0
-IKorAAMzlYDVcrJQwLP2/JtYE2im7tNCEGZ8RPORGtF/qsGaO6bxfKxtMSvY
-z+kt4mRc4fy5l2Vcz/x419w7ko7fdPjphrBnW21j69r9KxtIPDiwQ3Axxl24
-8TdOfZjMZendcSzQwS1sTTc/f6HxM5rtlrKkTvmEC8q+64nvsC/CaDb88BdT
-RBQWSqdCbgsHcskHeW3d7gzaGL7jG3o6+pT7vEfhYmF6K3xruvNijWJhufPy
-0CZSIWUhOaB1aqWiZzkrf3ktV4vg3cK7RpceUOq8ubnpo4zzDpMqIDg80Bk/
-cmswEx2XfNj4XznXBXPGphbIHffej/AOCcmxn5yZyW9vFKifCs7XGyY4lpVp
-KcUvHH0/HJc0p1NWARkmXdFushoTl9zy4Skaelhl2RgQ8GZhES6JgPrMpvpP
-G06gIXKERCZGKiUIsvtQrsyo9Qq5HqxrzwECRvdmKenC80nkiyMbAbwFACq5
-HrHfLxpBCBYZgSRBzKBMKhqiMQ5Gdovlikvl60Y+fBdU+eO/88vZf69xh3lt
-zbTL4T1m2o6Hpzwt2wOGvKf93UBtAR+XYp87yeZFf/HJKU1Z8HN7cflvfNiK
-5x6tBTNUI6Y/aVROr1tMVuEQKARLy3YoJ4baOl7b2tCoZHGpR3kzBE+FtHe0
-t7uz0vxbFULaSLzL5eb6m/h6wGRYplualGv/Lp+U7csHoCgB/GzE3ztsk0Oi
-mRXjmGE+09IEgYyBkwAyR0AJiH34ueZ9Q8y5mt/m2MnUzMyB3NbOQh8Tt3xb
-4BaXIqm9/Umgp55H/d9chcdyDIRhtymu0Bkr6cy/vq5iZKknoYGbv8M3HiLg
-P1Ll4zMVe5HiV60iDA//3ZPBNVlUP9fU09Vlta00co3dEcNfHG9vv9uK/LF1
-ijUz+ZERofDfHRo/nBstO0MPkx/NiEETq9+NaHWlV7vCtiPNiOejqRGfGxuz
-SM1QPM+5PCtD1BdlQNq9T1MriuhVNzHpOwz5d7hsYqRazHskq9c3ZOpzOs34
-NW7SdI0dJsplGSNdxlcktZ4rAcNmFbgZKWdnpydX9kMwGJqOghJBftWbMCOU
-N+heuQMHGcsA1qzV37WY+ECE3oy64w9j9GO69JSWqlfMcE2BjIRS58CtGep9
-ziTvm31eqt9dHmqkS9tKI1XhVCFrGQJXyhWcAw7Ofw5v8yXpFo9m65TxlWx1
-7A1fEUBjQ6O/uWVW22J5g4s1qxE/FfazFeHNsBDOViJP0xlp7P/pnrovL1XI
-EzbbGyQYgj84/54G/tCcMD7+uc03bmuzYWpDjMEeMYxdn6xzfNVFZus2FXC5
-PXK6dL9yfkQFogZZChs2MUJ5IGySPkGf44AfU745uEklKvox8cbU6lcnPvL4
-lgHePr99l5xMgej6XTRPbJasE/3ZqNy82eceEu1QtxJsgbJvcA/NN168Etmk
-bq/oN6qf3HMGZ7huUMHgfjpr7m5+LeYI+IhLgnGXCbPfSgtjGgcuqNYkt6CA
-crbgActRBw/g/fv3zjl/EQF7b41dUuquAIlAlTorXOykclSFbpz4txr1sNZh
-K0CliiXnL9D029GQkpHEBwRfwh4Sna1bVup8tcorgtv0g45nGjfp5JOInr/7
-Z0OZuLRvwgzHwRrdgLf2wecn+2jI4luMLgJlAFR8K4r3/YlRUmK04mZ4ECe+
-kEvXDZs4dRG9b3gn+tyAURYwGSXSJUjeSUsbpD7xrrS5rjURSLEsSJAg7I1B
-KdMe8SzcVGbfPzn48UOtunF07SXPzGuWvb2Q2jDDUib4rJsUpTR5i/dHzKp0
-yloL0OWg+KPqMnr99gLDAlURWRE1SZ4kSKoZ5weIDKarwuU5aTT+QLMGB2iP
-u5i+G1tYY9hj5wcGaGPSYq1VlWp+zxozMb2CaMowSevJGCvl0ds+BxWlMnIz
-voS/FWHBPxTl95DsfyusdJXbfrs3CgM4nqQedPiFjc+9AMYYle/3cF+Iadxc
-zvONiGA83X0rbOwx23E9LR+sITY9YWYcSP2C+V8vuRN5xDVIGLHKfOrnT1YG
-mvOITih+etqc6C0lJaXIHOcr+ozOBYyFZrx9bQC4bvnw+ssH3NmfZgG2TRVg
-s+knBgU9UQ8M4BOD8CqeT9XSF1/yzrEvjtVO2ULk1ymZ6AD+E66vX7x+0Cc5
-NPg2zt7Y/SXPFFk3ut2CSbNWKEMR0MXm8+lvR86wlj5zPJkoC/2In246Fe+H
-Ndnl7OYq+tAYNOQdlLIexF4Uyhqae186la0nV4WZBqauCHH8hsdCAXy4z8dm
-5tCvoxB3qT5MjgRLn/if39ypwZ0Ebrm5p0+1cDeH7w7TD+sM6yjV2DeL6VRh
-3CSUSKT1szbOZGUrpbsxQJvoNzKMxM92tW+YS8jzrO8bdke026xUP5jjIzMx
-nuKMvzIJBp6S2uOggjJCld6jTErlLdnlx9pGxRSUXbk8t1PFjQwmxHQaLYwN
-93tfUf/gsqRNoBik3thRnOKq1vzXkfw0cGVAsKSGjTJT/J22HWJ4j7OtYv/L
-yZhIxHTj6Xtc1hNKsU/dYhUsHiUP4c1829S5uoorqQvSOs8JeyyJr+0RKHvy
-SAYu0rO0JyROSVFij1PHWMBrtY/6heSYSbJOzXS7Kak5znrT64v6aMggEAkt
-F0U6w0GsTwHUuX259IDJ6Dl9TaOPLN3ZVkkQEVpaLHRY4mSl7I9jQUmpTPUE
-BkOeCT5bTzqOGGD10+4vZE0a+yaGNE1unGqDHo+XLW+/OTwddbqKAm770ASI
-7guRrGfD2WstJ0Ib/cch5MOP5H0jFgyUvxre8w2fLdDmj3kDxQvZUJlO1Y3Q
-5VB6Bku9V4Ld+VD3I5K74xOErgQkG6W4UlS1xvN63/4RztgmhRlPxWtgvvq4
-Br3/WCvdTr5AxboGg1mTDZwov2TcKGuJ07I0fkre9Cyxl4/gqynIqrJvSsvL
-nExGYT8H/FqufseU7KUDt9hXobtms1HEAsBv3Z9K8//i/sGAVDzhbqyx7lPJ
-aj3enH3ehQk2CJQ16/CfIJecJzrjdQy+XEA+qwp9ISGkEB4JHnXp/JrN+xUo
-xIqvq/gmwdX3eksgERbmB7pr4GNB0ZziG/MmqjZKvDtbgt9a++H1x4wrAQnu
-e11RdzgLHQm74+PBnHGuTA+MMh9o/Lreg4VWW7bSmLNipG8pD/kXrD7O1a/h
-W6Zgh40GydHEetgzrxUAHlEu0hL2Clto0bMubxeYqwCYZQwmeleUF6zz3JzY
-JW9pGmTczOycY3T8BFCjlLDpyvXU0gU210v+m42KPEh/7o6hKyNnp9C6imuE
-6ZJ+eGLg9YV0WsOsyiiQyfhIW4VRedcpJuIWw6duX+3xmABJa9bohieKLtvP
-pVM6tDuZKmFKIx1FdCrWXUpJrlMNC9JeAnPqPDGDWDMoi3N+XNV7i+ax1cNi
-9FwMj8Yzv/bNlpQFkxZRjbHXKHpbToPMccn9czkGfC9fAeFcbBHWxUYZcQeY
-Q5VEizMAqsZ85NGHFQ2V1rTrPHo06oZjZJp0LGDWKxh2qAtGROsCcdLMveHE
-/RvsjHFR1nSZ3XVfdF/+sIndCvjygSyHzv8p2XFI/qG9Cy/zxbtSQS9XM6I/
-5zWr/NXD+UH9W9TR4CsgpNjGVwmfml3Dzj8Oq1xQQtljoSqK9HSHnRMIqku2
-77McyTSFLMBSlW191L02+/itIj5qlsOW5/+SK5bxm02/QPebMYoGL0WZ9kPO
-x1x7hSVYj/xzSl/WdlWxwG5walrB1yKkQub1zQ8DMM5kSQD20SvVyqMuDGfV
-nuo9LQGZBRQR39usr4bMn1KTVFH7Ie3hS5qhrvgA87RnTupf9nL7vNlgMOBi
-HaLWBNRjLc/Jv1D7uKDAfhKB0CUfUbl9R0dSWVKTWkd41d/6v3F9aWOZvzsJ
-TIy7r15NOkmKIt1EBGp+T64Q15ya5eTlI9aSH3ESK6Op3iS8rpznoKax9I0Q
-xylCXaTe13RGVXC6aW+7GhLT91esksi/PS+fyBni97t+M7+P1qraTeo9WZJS
-LHumxtzg2nhjBxpD+5CheOwvjfF24/7yXAsSLZ1CycSUUzXhzcRkVkHzwra+
-/fvdk1Lbaa5tZBCdLlFWnlKPsWaqZKhCQuHnG0V5hRRbpwvGuJtuPm+QUOOF
-sRSyCzIzzgqKz/FdEX7mcfcxRy7nXFYu4jikM864OhZtwhgHwX+s4piaql8j
-uk5XfVqjWNfEMozBoAREfh3EZsE7OMwsN//vq5f+Pn++OQQAcz+sVEAohm/w
-0pVgMM/GFytRIysfp6vy7Vcv5J/ICqWktK34mYFWXNjFlMeGGU/mmbL0CtJ5
-ILthjoG3DTDCDmQVf+nKjs2D/L6kvjSkb0cIj3z8lTZfX128sc1Nzi2hU+fy
-Ghth3yM298zLPtsoe8jF51hTuFz5w9zdLwKfofS7zfcn/l5gdwyNYsRpCm4O
-azrt6LNJcta/FajxEJvViPqHZu6iq4raol/UhxeGr2Y98d3HW/m3VPXUfXDO
-AdPGPKq5RulAJvzpF8jqycsF43fAuaDt0e3z+3tFRV+ZGbKdfukT4e0pC9nP
-hFZbPpuMrIAc2WLzWCUNQbARf5ecfsk09+Jy48kwixS1k4GE4ACH/AKiQx2c
-VbcOyhvzSajB3Q3x2ShDrKH0eaDcj6fFbpK73WJ2FTZetsqLQ0Mnlpf7d5V3
-BfTMdELP94mh7VxHMoYCz52QlNX/8Dld51KUDQ5O5IstogaiVXcLbjunMu8a
-6QQyl1CyBDq3CD+IUhnw5vxSUa7uOW2rLCxs6v+luYbvJ2d5FHV4a8VaYrGP
-P1gDY9W1n0QKaTl8/PT2iKmqwRMhC441kzNjOa/9u0Gufm+ffEy61kDplGfQ
-Hv4Pqxphb2BocdmbfTQmpnMrs/Cexq60Hv6mSJaTnMOCd5fJOxI0xRtl/u+Y
-SoXinB0f3aH4VXJgJr+mVavsubV8WX7ZScff04icUtYHSore0JB82feT45+k
-3i91KOiM5/pabKjG9LdbkBQuSUd5gfKX3JeUvH5rPyqnAjcB5YMHGGZTOKjG
-hKhUt+VSEVdRs/wyoTNf+eNc8uAKT/lJvEuL5Un3/KP5wcE9v7jbRBf/cNZl
-+7JxYmRVdf0koNxNMCSfbPdxfYGLmWymkHHQeZkl6V35LNXeQq5W+ucLZHl7
-Tcjp2vCHGhTQTM/oDEegzqlGQ/BLPt0m/c1VEIjGbhfP9R7JlCWxNp7U6CZu
-J2PFO0VosR5F1Gt3jimpt2BzVAJ4oPSTOMvf4DYTUCJ1AWHAT4jqJbDPOV8g
-KRzuSia/cXCAizyv/nuVbxUuj6/IgdFjuu34tsK5c+uEsqu+Z8lNOgG5Ju3Z
-SuZKPap1pfuiZVqjlydnFjn/qpt2S8L+nrwlktfss4WtXAsf2rmesu55SD47
-f1Ql3xICxGqaF5MSSyzPzm9XHnJcn2ooAkgw9KSLO4a+qN3gYSiOUHhHWFqS
-GMJG79n4U9xUFuPNBJL/EUd0HN3VUAfR4uhs66HP08H0PeCUOjm9OgZGfaeu
-Z++AZQYdIf57neePSPcvd607L7uucbu5e1xMRJ7oPfKcjn4V78sYPslzHCse
-m681d+dcautYGGf8s6eFOXxNuPPfZQdI8kQXF7h1FLG2c/k2vKrzcHa0SAhA
-oQ5UZrCS1d1bnfgp1g1OiNyhzwTD4GDhsxbMTxah5IfS52KxC6l3v0oTZAhG
-u/z3lHN9sUYoeibUM9nJmY4L7svi89uR3g1mF+ezl+32OZHHWxfTLbQv719z
-Z+3KKz85ONusWBbGbXmwnW1WnVX3Iy8eJq3CIkl/wRpjw8MppGBHR0ckWh8R
-YBF5hwN317yPO2wEadthhoJTtVuIMssbpocTwj03PPWborceJDWj4/NSAg43
-Kywu4wZiJtbaZjsDtyxu9l2SLM8nko0t2w0mN4NnruJBAnX/nci7uYeHC4dG
-/+4/AsGa/deMikfJNFlxQZG1R4pAqYizhbz3jwZIBQVXT7638/ObRDpYjnA/
-hKNa+KJdbLtXTwwtyW/HD+gofTd7efGj4JxtdV89fTFy7xF3xL9RP6nyR+wK
-5yt6lu3BdcozP3M0R32aY37sKSadqElvbfVtVS5beij2j7rUqxWP2knIyMtf
-HBMi5Q/bAiN2M3BTnlepXA5lH1x79CrgRfKCkyRdSioCJY6TtsVi2Es1AAN1
-DLYMcRrv7JN8+fA+7fKO68apXE++Sfg7ki6PxhXsiVVP7jBee/USDfEntoce
-bh5aRE575w5KRR2TP3xdNwllUFEGjNy3+IY7iwjbP2pnPk9MEerdDLbIJzW4
-H4a0m1YGSLCGXRyTUq/eScvI9oOL09w9RybufPmQxR8umWNyePZKI/fQ1j+x
-Kzko+8mxvW6I0A32rKXZ83GF8LAAI1Dv9MZGIZQpX14n48OE09l869bmxkal
-sEqhIYfV7GFcz7yTZA6BlOs796mpKjSBevd0h+P/W+JH1l8FQbpPTXvcXvb5
-wi//+DGlJ50uhulinntMMrx9Ih08oDUugY+BRKs+gGfmvqk7DouMvFxeBsQ3
-KK79Xt8PaGgUGf89OTOzvA+danB/EWRxdEvbqdlMt2x8b2/vOIyxg3N7PErh
-4PTVMsf1M3vrf1uS1P92XxwTPx+fb3JxO9l6Mf47Pd8J4uwTtxtyn6pqrQLj
-O7YOT8OHm+0R/781mWp3Jx38rvTTWghnX0HY7oBNrVOj6ZCayoR/UzcOh6sv
-N74+HibuSEcrblV8FcoNG0jBVc6mdZPrfrJ5uiS0Zz/eJ6ez+Pbu5Suly6XK
-JTyuM//xcR5jkniN7Z0+ctxikJzueCbwGQg2kI3BJKst4JI5YoA41o/QN4Zl
-cLLCOmhryD4GgkxZUHy7fDk101yhDqCES45xdPV1Xzu57CSqAmE34I7e6jfu
-TL1bsfZi8b/N53fL2L53MZ/Du+PduWaxtGvNAO2kR+VGi0e+I5cx8SGLdh6+
-nTdvdJqndoce8FNySFInl0EDqpoO9uaMszYxnOjKWmHyX5byIQhrrHdn0/R5
-u02x6KZRpFwxLhaDobuWu2q2eZ16zdmmfXXrNfnntRbSnsZfjf9Om5Ld6YbW
-kiMvdyfSiGXyUUPWD0BM0pJXZDxXi4Umovv3zvAEXnf922MWfu/VpdFiYuEv
-XBM81k4jWGMb3LuUa1lP1eTVtkWsmW6biXYi+74fVnpOHXiNlr1pXq9dRXZ7
-fmhfdpi/V2Zu1cPbA991orgmfUxj5/uXjv4ganW1hNxTFHe9QkxnHIpPB1u7
-Lj+Wot6A3R4TarG8WNfq9mjafUK5d/dSjtWxd5Xg9LKYKUlc7IH8CDkLjOaQ
-FFRD78xsrl6+3Om0h77D49X1S1CgLnXuhSV4iIOYKd2qOKeMmKUMLrx7Dvgw
-KtQycu1W6dnfpvOzGrKr0oDpqlYpW0X/D64Vb5o=
----
-eJwBhzV4yolQTkcNChoKAAAADUlIRFIAAAEXAAAAZAgDAAAAm8yEPQAAAARn
-QU1BAACxjwv8YQUAAAMAUExURWUGBIWEhEVERKFERMTExKoKDMaEhKJlZKko
-KMekpGVkZGA0NNFkZNNERNELDKSkpNYoKHdGROXk5OiEhOmlpH4jJKeEhKFU
-VKJ0dIYJCerDxIdkZH41NNF0dKo4ONBUVHZUVKoYF4cXFsiUlNAcHKiTlMi1
-tOyVlOjU1Il0dOmztFZVVNY2NLtDRLpkZLxUVMIoKLt1dJc0NOt0dJgkJL8Y
-GPRTVPRkZJJTVPJERJWUlJwJC7S0tJVERNTU1OMODHV0dMI5OV1ERL4KDNml
-pPX09NiUlLeUlNmDhLiEhPrU1NiztPiUlPaEhJhkZOgcHJZ0dPm0tHwUFJeD
-hPAoJ/ikpJ0YF7elpPnExNfDxKFsbKsvL349PLlNTKJLTHlkZKJcXKJ8fLtr
-bLtcXNF7fOs3N9JsbP7k5Lt8fNJNTNoTFH4tLIUPD9JcXKogIcIxMpw8PPR8
-fJwsLMAgIJVcXJJMTGpVVPNcXHgIB3ItLLY4OHVdXPVsbPRMTF9LTKoPDsas
-rHM5Ok1MTE4+PHdNTNMxMegUFJsPD/EwMIyMjMzMzMeMjGxsbKysrOzs7OiM
-jOasrKeMjOjMzIpsbMmcnKacnMe8vOqcnOXc3Ih9fOm7vFxcXJycnLy8vNzc
-3H18fNmsrP7+/NednLecnNqLjLeMjPzc3Ni8vHkeHJiLjLesrNnMzHVtbP3s
-7GhdXPmcnPiMjJdsbJd8fPm8vPmsrPrMzGwGBZEaGdsfH+A4N806O8cKDO8f
-H/I5OLUpKbQxMlNDRK9ERK9kZNtlZN1DRIJFRIsjJK1VVK91dIk0NN50dN5V
-VIRUVMZERMZkZMZUVMl1dGpFRK5sbIk8PMdMTK1MTK1cXK57fMVrbMVdXOB9
-fNxsbMZ7fOBMTIosLN9bXIJcXGxMTIJMTJweHHsODG8yNHA+PLUKDOIqLJAJ
-CrQYGM0oJ8kZGZAPDrQgIMwvLsggILUPD98yNKk+PIceHNIiJNY+PMA+PL0S
-FOgiJOk+PLk+PNwNDKA0NPZ0dKEkJLe/PJEAACAASURBVHic7V0LXFVltu/I
-Rohr7O7RVDL1kikJ+UIestlsj3M8qEdQiddB85UmSYqAEAxBGDMDnO3Zxyf4
-YO998IVX1EDhaIVKaplZSBdf+UibbIawdDpjM2I+uGt9ex8kQ5u8M9a9v/up
-gMJ+/b+1/uu/1re+7SPr/n90NB75pW/gVzr+H5eOx/9BXKxaqwE+GawGw4Of
-5P8YLjJn1QpmmrNarRxFUbL1QU/UhotVluFkVi3HywC0Fv7C8dp/zs0+vGHg
-JY7S5VtYnuM5lqZpSn5Am3HiYgB4OZmjBDyXFtDhJLPFzP8PLPEXGAYt3L+m
-NP/NaKZYYAXRbKapB5xbBReDQZYA3eIttm0WW3FFBctWFNv88j3M8j/xrv/V
-A6xc6r8j49hvXzmfsv/EyQODBx+OZmjpwVxJxUUWBo642udWQEBA2q0++28M
-2p9d5/9HD52O/d9jMAarHD/hVqBDr4ffMBxJMRf6xdMC90BnU3DRUgNTrjjP
-qJw26e2jxaJOfGDietjDqtXSE5L1ymiCoU966WB4PG1mHygsEVysrO3PDr2+
-/Uk9J34WOZ62aP63OJKW49he7s77d4Wh/3ru2EcZjYWRlbj98wbiYpB0+a+o
-p3RVhuOb586uH28r1fBa6wOc9aEPK8+zO6c41GcIDQ1tdk2+0Tju5e6MTkNR
-GGJ/5gkRFyvj9+55FRU4Y3NoaOGluobOG15+TSdKPAd4/yse5Z85rDzFalwc
-TlSavZovX0xJn+SWMUG0aWiBlX42MIiLVtRNT4NTuuYVNsMpvZoL49J6TO45
-I2ySIMJJWf7B5dHDGVaJZXdeJbDoXV2bm5t3X/TPmDBpRkpAmM5iExmRln6u
-jiH2ItDRdXBOwNmrGUC5mJbSo2fPHrfSHuUYRhRFAOZX7UpW1iyaMy4RJ0Jr
-iQtIc/ng8KbG/fu8XSx+OgEeQfi5GpXgQlFjsuGUhV7zLse5192YOmvYpnGz
-sq9cKeNtZgHgZrlfMy4GVmfZ9jGBBawltDDAf//R2SvLxvZ9vMUxZE0nGyXR
-jPhzDYbwLsf3zybmcrk1u2F+77Hry0YfeewtfeBoykZTALfwoKrxYQyD5FHq
-91+tTsqNS3OZ9Un42ie7Df9+oqf+qJiv0fIs2Dz387iA4KLlNmQ3NYV6ecXV
-9T2ypNLXVO0T/FJSbWA/1kzJFM2Amv71GgynK/X4ze4mxVry4tJSZnVebzKa
-fHKKCjxbuoj5ZquWosGRHgAXqzymrqmp0Ku5tf6sT42p3FiTmnt9pD7wFM1w
-Vk56ANp6eIPTWMyvBdyxlrADnZeaEo01kZkxI2tbTms6aQxaXgCO/Pm4gNzd
-2doEPH55SkPXyuryRFPl7ZA9nvqWU4LIYeYksr9ae9HSGnqNvyJcXF0LAZZz
-3Z4sT7THwszerNVf9etkNlg5gf65xKvgIvS6qAdcCuvmL6kxJZZXR+TsLbgJ
-uEiCDDkqTbMPyV5+9lUMlMAyGapwcc1LCzvZefST5dvLqytv5+4BXAI6qbg8
-iL0YZHq6O9iLV2E24GLfboyqCt5b4KkPXM+zMsnd/3FcDJDWQqoCA4s5VsM/
-kpxYiabGdPiH/mpAMQYnu0/hTcvzzBfeqlb3BmsZVwawbDcquOgd33XyE9dZ
-OdYZqK1aOCsiZG0PE1yY0/5Q2Ct5gGa6O9pL3I2DPlHGO7iUcTSn2ss/hrYM
-6hgGD4PilC+ln+Am8H4Q6pzWqpVZjchZ4a/qtQwSrTWA5tSwHAdfdHQaOL/4
-xUXFiZq8/cPcNo1/NnG7IdEYVZlD7OXWGg0L9sKivQD0FCNqOZG1GqysoDXI
-LMQTLHfyGjPLczDuyGIlDyjtVYf8EncNcUm01yAutfrApZSGhyn5B+3FAAKL
-ESSJpZno6C3L+scPoHie9rBIsnTP+pZBC1GUlViBjt+wZeCWCtAaFg9B5uAx
-rJRGlGXBr5OHwLO8lqPZHzEEL/D053GKseiTU9Jnbhi/vDxx+/ZEe3WEwpBD
-JEEyGAAXiEcGWfQoZSSzhZa1gk3Qapn8fEgqKU5mddui+6OylyinhCV5gM1j
-YF07e7HXRKp+RFsomM9/jF9kXisLGs3OHTvSXfq4103J3j9r3Kbu0/MtrCRK
-WmuHBmeAKQIj37kjfdrVOvcpJxpn9irViQJtFuFmbR6MUOzxu99to1lGpEBH
-SXfdhGwzswP9SYRu0l9xmTFz08qla+3l5Ynl9iiCS63+NNWGiyxpPCwas81j
-W//4/hYLzdKlnfxomaOZZZMy/Kdc/aBnd8BGorg2XGSbrbvTXiIgHIG9ZBah
-vYwzW3iVX37KjwxWSRSKB36RMuXKpUstpIjjCFy4cOHFQxndt4iggqgONLNB
-5impeMe0W+ohjsBLcf6TixmdjZWYz5861uOkS8B351NOzpj2wbgKAOuHRQ+t
-udQc/b4SihwLp7lNGjasq09stb08Ee0lJxcjx3yeJn4EcVqyeVh6jQg79mHY
-if0p58NmnMx4412dIInTM/pcgku3tCz8Q8O4Yswx2+yFoZdNIfaS3eZHRWgv
-pxgNZ7D+NO+CN3CS7dWPr7pf0je11XFIIaep6dI+l8ZFyFE/ighWqyz134F3
-1e4Y/ZXsdJ2Gjs642NJWetN7Xg9aXMGYqR8cLZRabGGXyDH6fSd2TJ7RcCE4
-1ScKcQHeBX7xrG3p4sRF4Cna/Lm7w3lGvcMBPD15S/SItDz1X2onfn/kUYpi
-KYOKi1Wi+pN4FHetiw+xF8WPHJNF0C/oR9J9Sw1WHlxl23+d93Y4n40AopZy
-XPPy9jWM60+zd2dZICelLRnJ7Q5SD0h2mTwp3bs9uElfZa7aLNFSu8Bk4EWN
-boSSFekXnpg8Ydqo5/4elFMVZd9O4lFOCNpLAwW4KH5ECWumtK+8wS+Hu0sf
-77aJTPrrhSXjEyBp0K5zxmlKsZdC5BeCSybaiyNdRP2CavF+9mIVRJqZ/qET
-duX5QrE2hLWcZvii0DF0avdi4QeVHAiXcsXOPoF3jglVjwkNvRx30dvV9Q64
-Td/OnV1WUsHQ8p2YLUsS8/EVBdGF+yenp1z5puB6SHAkzGvi9sTqWKJfHH3W
-6GgDzBstULRNCejq7bniL7wmuUCTa8s3z53u3K/zSkFj4Z24cGx3d8Ivo8Be
-7sSjlo/BpeGsAuQB97YXLW02b+nl7nDOuqv6iIWACinneMGTugbu31Ehy0xb
-Hd0AgZxecavlDirNKo54kHKMq1Imaw71vnFg3LhTNg8N21Z6s3I8uyKtSYFl
-UGN6yiV97c2CouAIe7kRPMkOih3sRX/eYhFR14kCay59o60SQUYo3h35Aq6V
-t/DGgVM9e7icKrZYKLgEwYWndyr6ZdRBpx8Re/mzxYx+dF/eRYFhy0huUefd
-tSkvzzsuuTUtIK21NS6usBBmv/lyc2hhq8sYTiolc0EOs2nM29Ic7WyluXD3
-xdbW1mQ4qNkrK8vLS0EIspOL/jMm7ch4/3U/CFUCKDADWhtHD/RXDXTQ5Am3
-vPOa9J4ji3JiIRZFmcrtxF70en+bRlhH9IvEeLzgwBuEs3upZ4fr7Moil/Ju
-neZ2eMbV1tbDZg8bCzpGwYXtPoXYyyCVd1Vc3vDQcES/3FubWUUbsyXDu23a
-87zdb7n0SHdza2xsHDzreP2oUXX7kpMvXmwNuHVygybf4szM6VIPrBE6K4+F
-uwP8XXqcPPDii4OHDKpLLmzOwvuFO/a6vDstbEJPt5TW8x4WG8OINMtZYa54
-Ybp/Czk6MNttQkoh+IL+27eDIqurYytjo8qNgEsB5ke0SOK0KFCM5X0Cixda
-42WYhIs4AYhR1rzd/iN6Tp7mnhfaZ4PGTyOwlKz4EdW/zskv1e1w+Xcbw5E4
-fW8/4oBy06+0wXLJPaWHW89Tp4a93Lnf6NGjw8ee7dKXgJN9K8Ul/TUPEQQx
-AqPV+HmEeTtLSZAGp/Q4/PLilaNHdxu9fmOX4wsuhaLNZCEqVz84vOnwVPdL
-fbaYzTQtijSlhWRR1BxTCXvBB24pcaEAywKf0bNj7ZWRqVWx9vKa20GoX4B3
-JaJ3BdZW+gJcLLQ5y6vwovuUPn2yb/SpS/bOKyyMC/gwY8KOA/uv5OXlHaU0
-pTR4Ha/wLt9/X5NT15W38YsjnRaRd+l78y7Ic8EJCxhLsn+PyT0bZ0197LH3
-PrswHHJQk2/lktThZy/M73t6yEm3HTRESwEYwirpLP+RrB4VWhiQ0uNUv5Xh
-Y4cfGQ4P5bt0ycHHvr4Ed7w7IG3Q6U/Wl4XPf+4Z/bUSoZiiABiJ43WlaoGu
-ST/0g8lhBJb6pRw90zf2dnDw7QhTeVQq+lFLF1miFHsBrfuGgxSZCt0HNXQ5
-OKf3nLPz5/ftO/f04MbDPd2mLvgGJnaBL2fTyJLISM563ZQ7erctHgUeFpif
-4BfI9Qa6t/lQa5jbzMaGd/72TVJS0sTre4NuV5rs9qhYn4jIrqldz4wdt6mi
-RNTp4GScqLEccx4WlxbWOGZ9+PDM9/YWFb0UkhkZWx3b9cJ77yyomzJo1pyN
-S59c2jX3uqf+WgLFyqTowbEWv9+3qqHoxOSM1kKAZdRSWbTs7JaamxsUHBmF
-uEwEfumipXjFXkSd5QU9ipHL7vUHzyzxWVUJv3x8Vq3qNnrsJw2jviVaqWE5
-ZZYQRgWX1Vx/NR6dVXhXsZdL/SRRyRvvxS8g+taEtRU/AjImHx5c/21SLVFJ
-ngUxuTmVpnIgwprY2Eq4gfHjFxVrdDaYcE4SeyUTWNCHwg6vHD02+PuYgpue
-nkkFMSEAZ1TE8Asf9T095wzMk70yB9VUfYnEYjZFs5RY+sdWpfofOGhyehpY
-S9PQ9bygezN6SdDeor1BqTV2Yi+1LXO0rMovNM2834S12ri6vmciaqKqYcrs
-JlN17JKcj557RrnnlsWUyGhRj1FK/YXv7q7q3YioO/EocDRPc6ofdWwvsqR7
-I06d9sK0aTPHnX7umVqnjqktKApKjbWD+rRXV1ebTMby5WWLdzKCwPIyVzzN
-oQTNwvPTDi8q6xr0ElxQxfP74EqTqbIKbMynW7WxvBqykpGASwJLa61Yq9V4
-/Ga3qgqy3WakAefqA2fzglmnGwd2vicm97YTF/2c1YKST0N+xGYQXLwHHayK
-NdnLt5fbq2Mjc3Jfmpjkqd5x3TLzNkjCQM8p/GKlVP3i5F3IA0bWIi6ik3c7
-tBdZU9rpkCoKCtPCeo779D0FeIfD2/tSYFJMbmqlCXAxGu1GI2YtqzaOq+Cx
-oYTfMkU9LMClcaXvkmAnLADMzT25qVFGU01lZWxNtX07KUmC9dYnCLQWpt5s
-8Xv3kGItjgUzJod5g7m0dBnPMhoNMy6kYOTIPYCrvToyCO2lCydIRL9AFANc
-9KBZWuuPrIqC2So31UASVQRRyzmTgdN0HjqZ4KHyrhqPnLjEqvn0SorEo3vZ
-C2Qofm+AbiDk2Ro2ecyZz77Cp2s5PmzyhBWTG7vkBkXWoL0YyyHJTSyvjq1K
-PTNey0E+X7EjWZFYu/1P9tscOzxkIoFlYV1Aa/YfYr7PiTWWm6LA2AFNU2xq
-UAxMff0AGmsmFK0rfSPPSS47prmDtTQ1LJcYsyhIs79CV3w7E3EBMD31XThI
-d0h+xGnFP6O9NCfXD+8GZFFugqcMmajMI8maAk/HazxoIo54XvEjXA9oz7to
-L4DLOI2ON9xbvxhAW/urCiTA/8CG8AtFN/H8vTeXiGYGQuP6M5CeG+0mu7F8
-+/ZEsIDUnGCf1UC6IjMiD0U+WNm0cWvXwjOQA+ev7/W76RvKjuQSXMD3wNoT
-TZWpQdfBeusrWEjTZFnQ/VktuVzqM8EtBWJM040yrWATQQyfewbCfuBfPvIx
-mdD5brbM55R4BKqHsvyJ4NJafwZYTyFRpGa4bnZDw/H6+jnjeciTSTBR7GWd
-Vd7wA3tx1l8UXMBeOtYvBi27Ill1B/9p40Yv+WyPJ8I+QBJtGlz8pMZXG01R
-UcBxgAuYS8TtzKDhTxJcMkIRlua4lFnrl9eANoUDa/tupvM76Si54lzXaiPI
-1ijCAojLHsRlAM9zHCWZf/+do4nkfu49dvSoA7NJ7slzcI8Uzw27BOcsrJu7
-xGSPyNm7Z+TNjyiBtZK6N6XJ/y2GacQl1kTMJShmJFpL3YwNJSUJyxNKJFrD
-GpR8llLWj3iVX6616RdiLytpG3ef+q6B07zvcLLEsEXdhmMQ09c/CgkTAMmV
-UFxCQk1lVVVlbLU9EWvRkcG5IbmreJYxbznWjFnb5YBp59aaMN7AgaM2mP3y
-PRjQKMx4uwlkaw0IesTlNnmA+gQZ4hitee2JQleExeHtsmPy1K+TagMPxPM8
-KwiixE72Bjl42b1hiclYeTu3aM+eg5wEHgRkLZjzO/3JAfZy2f348G72RGNU
-Vc7eiXDVlj474ECW4kpEjU2wKnAo8cjAC0p+VHjjrJpPq/zCani1/tKBvRh4
-86sBTaq5nFw83ienCGhAP5ZiNBRhc1nmF3XNybkdGVFTTWr0qZkhRS8Np1jG
-Nv0JL8zbLt+atXi5KSITWd7hsi0/X+RRolRsrokA2VpZU20kuOQSe9ksy5xk
-nv6neajiXF2903p0P3z8rwUjH6sQWImXGBt4Z6HXrqx57nO7msqBrUP2Ft1e
-jWwmCYymNN/vfT3xo+NnIEjalQUmvT65F5h2sSBRgsiwVuW+KUHBRaKj2+q7
-SjwikTGwH+KixQpiR/aiNfu9G6ewZ0DKsLK1VYQlFq7nGUFB0aqlxlz4LDco
-J7Iyyg64RKRm7i3ac2EAy+j+40vMfbx2p3zSzVitHpj+ph9jxSjAUhVjgzOD
-cyIj4LBEgFPlXR7U8rY3vswqxLpAU3LKhE2zD4IWPBvPAOVilXJN2Lxdj+zK
-Sj4OfhhVmRqcmRm5FUwFntnm4aFhZjiaXIkf1djBjW4HXUd2SRloZliyeLFa
-Sd1A/bO0ggsl9c926pe2OoOnvmUlZb6PvXAWvz96Iy7NhedP9HsyCiOjXj90
-paAhSbPBquWE6Gt/e/yvucFVyqrU7aCiPQV7RwNd/z5r1y6Y2YD9s32NcCA+
-976dGsJ6wHY8M+Ttl77PzQHli4t8qbkxCu+ytOaL57OymrECEeffo/uj4UDk
-wWO3rIletqn7ij/+8YtDWbseeeTL1oauUeV2MLnIqtjNxdHFxSKjYQRKcAMr
-80J7WQqiCAtXQGqX0jUaoV1VyABeJAmigotcsqyuLZ9ur+sotJd71b0pm26E
-Qwm2VwePXh4F9AgXGjVAIAUvgAXcetItV8e3z11IrawuJ2tdRQUjJ66XJc3n
-OLG7vkwbsnGtsaYqCO1lyjKaJgcatByT8u0zb70ddBtmifAL+tGoDcW0uOYQ
-ZNperqEgrsPcVm5eWlkVEes7euzB77++knxx9+4vAZZHvNynAi7l1VGxsVF2
-++jwJYtXWERK5ukZyC/N7sC7RmXpEG63LtrsbDrF9mWcTFYQaTUeSSq/OOsM
-VeSg9rh0YC8SI55wYIpaGDDtk7VGxAUer34rRUhdy0lwgZ3nm5tdv/17DpwW
-byUkBnTXEpkyTyiEJ9g179ZpH0h9AZeRYNDxEukptWplPvqVwkLHt+8Fo/yx
-x6aquAiscCoO02y404v+M8aNXw6x3IjSNgZkCDwzWssjj8ybcnoJPIXRDvIA
-3Kmqa9dhA1mtLDEjnPxSYyzHJTI4acsJRkMrXfNaoHWe4ykWknaBU+KRNCm5
-fX6krKvVBpZRNn7dPfWuJNL7STfR5bRZY5801ii4zH1WQilthdABSUn0eZje
-vAUXIvFWAJeCkTdvdl0tMT29vXY9kvX0raOr7HCLmXuBzU6U8JSBsB7F2v70
-pVez99efdY21O+NR7YJFFCUddiWlJK/d56cNW788EeSZUU1y4f4VWOCss5ZE
-gfBJxPp3bERVlU+//pwVdM/7Doji89xVXDKLkkBUDBZ1tGKkPEQlFsIazUDK
-Lqvr9tHuP1g/AnsBFR24lCP8cg97AbwILoW7bw0OtwMuhOAbZBZxQbYWWWHN
-eZjfwitzU2OVKYKz1p55VmJOXcHn271/zirEi7DZkASeN5AgSTOWP32ZlXV5
-4WPDIY2wxyp+9NxmjmcbXQHPR7LmHQob3M+33GDYbgTWAvrxBLP1ygJUdn2Z
-dejqp6vI9wwww1il8i2L5yCFtwAuzV5eyLvl5VFKOFp4TrAJhNPATkRRxD8i
-LsIp+RG/TM2n5yDvGmFmITTe/GYlLxK923E8Ammwn9BL3P7eq+zOeTteIgoG
-siSMazZr/OF2vbzrj1QqPzDSs1Y/FpTipgWhgEvAoN7d7Ohf+GRDBlDgR6hN
-GbPuqXlwWNwoCAPEj/AR3tnMUcKBJi8kpqf9T3b2Xb19O+ASFYFCZaRnUygx
-l6wvv/P/oHc3k3G7Yd32RLsJ8lX72vBxCcBZHu9j4dIL/agcwngQqoorL0sM
-TySLgHjgYCVsU1Tz6WV31tVwfRpMFxiy4GWaoQz3XIeFVGW/Q+9aWAhRpZti
-DhNv1l6LZ1gDuQ5NcXy0e2hollfhqLOVRnQ0nFj9KisvjLmWB4YUMOgIOgo8
-OGjTxwbwkpZcjRaj/Quxrrbggk/1djuJR576d8ZTApPuaAZcnj807dxoIzpK
-oqIW9+6Z2AJ+lPXl808f+tDlxY2+IJTBYLYnlpcbTbFdD35aoqU0pX/OgrkA
-XLouJbhgEFzYjxNkrKKD19OQSMDggGesar8U1b29H4FLQ0oVs+f6FzbsOSTr
-JNiZYCBxDFnboHgk/UELSOvC1iFn4Eq49BlTcHPoTOywJskmpM073UkbVvbZ
-VUZSogdYWrpZJSH+9KVmr3lpU88gsYLb5u6NCSkDOYW9TYIkrElDuih0n78k
-qs2P/tJfNNtm6IFFsr4LGzZ6OeRdWLuA/DIConXue6Pq3NPS0m65fPBi526g
-k8FagHyM1Xjyt+eWyazG48/gaLuyCO9i5xMGwQXdeFpWvB6mEWUMPJ3WuR4g
-U4q9KPXd7ZiB384MCQnJKGUwQ6cYmpOBruEPxHYwNNxxAuKTohsXAr/EpTV0
-rTGi/srcu6fgbztA1hlkCclalgYCn3t5FWafrSy3KzSiH7pWKzL0i/tCAZfj
-R7qZlAQhKDcoXDCLPCdJHE+vgMNCvS5Pmb8E7EWNR1de87BYJnwDfvm8/4GV
-T1bXAHVgqmCHFKympnLJ7E+Owvi09+zwbmuNiZCP2e2mqFjUknuSnusHGlv3
-e+JogEsU4BJJRNGC8SyEabJrBOvp2KaidOH8qM6AEtMeVRl5Oyd4+GE/HW5y
-ojRmiaNYcCdBNGvMiAzp5GDFmX+pbcqLm3J6Y42SVeXuvf7VTFoA9pcgU5Nl
-dsUVpa9mTjeQb0Tu6x97lrdpxGEL4uY9ndagpHAgwW4H3168RcNg8sexmjAH
-Ocx9vk81sRd8hOTXLBbN5KF5zc+/0mNcWTefyNTU27dTI0HAYPGtOsp3KYyy
-Vd2W+poILGAqlVWpwSFFBUmeQ08xGrN5RJu9lDuj54JlWHHBgt5dPYRq3tgO
-FzhpOQIdURlVtuPVgQOji7e8+eqaZcsG9po+cOCKFSsGdo/eGT2mQkICX/b3
-m/rCgD7zfWrKce0zFfLCkPXoo6TjRCvTLuQB426c8YXH24u6Tz9fy+oYYdyg
-gKefvkVwScQngMutXQTHUJLEbvk8mcT/uCldFFzI1A4F3Sdsesw94JUvZi7u
-mpMJl4KRmxuUCSlDDiAU0S2q2o6lnvJEAzwChOhUZB5io5vAfotnkFhGcLGr
-/JL8m046rbIgyVvvxmUd4tJWf4HUF3g8Ci205kj91/vcb53/z/9sdd/nnpyc
-vA8+7aur27fgnS4bKsAli7u8FejdevXTJchK1TXo6MGrnsUyEGSoMoT/Kaj7
-vOIGzVYKIpi/nuHMNpYq/qD1u0O3hpyBBAELilFRUXajb/iGeEHUbPsiuYms
-aMRd/dTH3lZnGAX6hXq0y9RjX/TqOfijl2L2tI2YmJiivXtDgoJTsWlyOzIu
-1iirbmfujQEZhmspZZD0iG7I2ci7wC+xir0kT9eZERfh7kZWtU91zJR2ehdO
-S8SiiSR0roWgo0LbtSnoydL/2EWsIJX0e29oa9r+OXhUItxKZVVk5NIE3OlG
-yVatZB5B9HDzxSEbnwSiIzW5v/iy8N2SYrdbh165Omss4oLS1F6OXVqfTc34
-4oUnLucRXEJbIc7ZSV2KUMGjIKDjFw+b0OvzaQv+lnTT8wfj5s2C60W5OVWx
-JhKJwDercjDKKdXRUWutnMCcDEV7cT8OWYISHDFrYYENO5CuCi7yBmX96Bro
-XTvgAkIyUTHgm7UomLxC1WV0ZeiTvspcMp7iOGrA0ey0lBOfrAK2TjSagAtj
-o0xr+3t40OBK0paPk5W0Mm3WaKe56OevZiw0z5p7vf/h+bDBXZfi5cD0t5PL
-XU/KayZ5obJ+8sFsyPBMZGpr9dmLwHGZRWMmffxhq0Nfq79r1OLydO7tiCiF
-cyGdDtqrGIseRbiWYjQ9QrMUfokyYr8mnrT+SQqyxvvgovAL4oL2sj1xu4Hk
-eTEFgAtGfWX9PzQ0D1K2ppav5/YevRnDE3vKxT+sxyerSEHOCIHTbjQu7T1i
-BW4r2JmRrFZnUoaVxebsJeYS6KPV2HiO0eg+P/ZUxovha40YT8tJvRKnAVUI
-mQXXvICUwRt9yyHOqXnjIkGjK915asQLTxfeZb5tBfPvc1B/oRuBuYTsGanC
-0tJbKxfrdBmhkMSjH0G2rVbr6hMkWrEXqgNcOEpdP7oxpxLPC8BgD0ksCbx6
-V7IiqvQAXG6+fDnU231/47hTm57VypT45hdh78/oXIakBGrBaExEfff2X/p8
-+Nunvgt1JUXOvPPTNo0+Q0qVkFYu5zSCQctoird8/P6IwyvJMorRWJ6I2Udw
-yPUkBKY51NXhHeA/bdhoe2K5glet3n26X6dOnabPdPvwid0XthAgRgAAEiZJ
-REFUr1zCZqzAwIWOSwuHBjoCF367sMWRdD3kdiXeiSHRFBtJWr5wJhYOnWO0
-UjbLmhmKvTR0ddoL3E48w4CYBPVxV0u7Un9hVrhjtfVi/RxISMBa4A8YNqqY
-72PeqiVL3V7KFpzmy7t3p7m4zXRzmZEgcxU6j+mffzxhzNrVCirIMoBmTJI6
-7aSDxTtscr+uhP31+kvngHU4rISVVAz8OL37omdBnimLSzCHQAlvD02Om7c7
-7mKr/7GMA4t9jShoUxVc3vTL75RvqygZs6Pn4pfdXg4P7zx5RvoL6eHr3X6b
-ER7+csb7R4ODq6JA4eIiQqXy3PqhxwefGlOilQWbhm4Eftk1z72ha3VbEfDa
-IkEEewH50hEurMcf48CPQi8OAp2ViO5ejn5hxwJ+ZsjfF7i3Xky+2IpdGGlp
-7rdcZvScOSOltc8AmWIsDD2w16QNCWTpjtT9lTxJD6SE0w7IeKeknxr2UZGy
-IFFXIdPYPqiVKGHLwIHLFq2Nio3FUm4NhFiIghFdz8z6ICMsLCwjI72RtCgb
-nS3Kdds0Nj8PkaUEjZkW43muRLB5bPMoXq2N7rRGXk1btrEJ62uwzm4qJ2Wn
-icAuLZ9W0MU0BHiaodnDwAi7vNIawk3lpF8TcHsngWLRj+i7t4YodUzLq62Y
-ALZOPeOLhQsTIQrMLUBYRA4/2+X0rNMw8MPgo5907rd48LWFjuzNsqQxU6xt
-W3Tx+KU1NTVEfJaTS8Z4Yj3AC4ki+Wp6z8a5XymwJKdXsKT4hJGRrtiyZUy4
-D4Sw1NTISCyPg26NXbWx86meM3fOnNm932ggH0JzJKS6T9fZbDRbQTM6nUas
-kGiGsZXaGIFidR6MJGm2bROozaaoStBdankFHNd9hc5iY0QGdCklHW4GfpnX
-5/QqkLtYMfAkvEtrDUSFdmAvsqaXOxYM0maFg16IgturqcHVDXB8tHJfX9+l
-ZUvLypaqf8KPvPd4i2NUgpZlWI5+c9ua7ovh8apAmsXWwCHVkJF8pXhSc1za
-tAk7Zhx/XF3qzNCZGaUmztMQsiqiT80+kwOaB0YmfsgJzsy88FHDrAPDNj06
-YPza5aDQjCbVXpLf9bNIWk4SNRpGkEBtSyWswIKG5FkUBZygodkB3apA3yGt
-KrFdH/B6vp+ZkzHpkSU3jCBPX/3E11gdQaKVXn98K63R3suP1snMijpQDK1X
-h5WtxYWNSBzKg6LIjqpeW43DFxDzjY2IzAyBvFk/KoEDqc/b8i1rer54ZHhO
-Dlb+IytrTJDBVuV89s6+i7sPfRiWvmJCj7pv1EW9WzstugplKYISIH2ip/f6
-dA4I170wiopiYibumfhWQVLSW48/1mWj77OYFiYqrf6Y4rW+m2+TDYiLGese
-BjWZUT+i1QvSyq7Y5VGNvqyI61s6i1lxEC1rfh9XCw716PckpLjwfcTt2gYP
-i0zSo45w4cwr/nLT88qtGWOW+qTinJFBpjDnds7ttgF/yQEBXoSwYD1EkK2U
-xU+j2dl4+kIQKPKgzJyc1CqQMCDsN85+sdHNbZJbj6sL1R4zR9oks4dyl5g/
-sRxv6/SqW5ePQvYW7SkoKBiZ5OlZC0Nf63mzKHPJk0bkY+c6yc1aR/Lr+Wbs
-Xcd1aMgxSIKvDuVrXqLGHMwMTo21V0cGq0F6Ks0ISpWfE3WAy5dPHDv86KpI
-zN/RzWqzB2IeoPjRj/hlHaVbUT/x8Rs9enY+k5mLU+cce4v2KuMl+IUf4d/2
-TFSW2EdtlgQtXE5Da4pXDp77PR4Hajw3KPh2ZERs1NJu4YuHDZ6aPTRQr/T0
-NgWsoDU6XCowkKUIlmNLf+e38+WDIQDLyJGIiXP9/Jm3gyvtphpctk9s2xri
-/mYpg48AuJhFFjciYFIPIop8gsHJ3KbTfQ+O9a2pAqV7k6yUn6ZoaZ1SFBGY
-z1u/e+Kpz091PgioFChKuO7VfDNm/2KH/CL4DTwa8tGLMyfP+vtXEwtGFtyE
-PyNH3iy4ib9hJMHnAviIX4H+VsRm/WYWqFxmadrGyitd/rAHJ70AspWivd8D
-Opkf5b733NffkNZ9HHFPvA5ESXqGIe/AxlHs/bfQFf2O5GLnS5uAHVp/4FQ/
-n+rqCHBkSHecm6H0U3baGCtmvhobAAM5PQ5Kcg5KorT8lpOzhvXrd+Qz7FIg
-gm4O9u9i0RiMSZjk/+ELH684UP/2xLbrtb6rI1WRjuM07WfrPHzs4p4udc94
-oiEr8lGPE1irmLb6BX523n/fraxEoIY0UFv8+rS3AcqRiOJIxGfixIlJSXhx
-BZam3f/WycKYFViAJEB3c5zgkb8NcqwBG4PvKPYFDeElA1h2vCkCvDayslpZ
-RsCW02yIt9jnwZg1ZkYksVeg2w9WW6JLd5s580D942qXgn5hZx7txYpVEkrY
-mZHRq9fHfRYmtVmm/vzrDGu9VzyyiqXioqXjX3ZpzWtq35N+z4GnDZzDYyuS
-DPOnkSSbX3G3g39rw1CF0zkCs1/4XSc/G61sSTDIFMhLQIa1+VkgtFB8wlKf
-M2eH+J8/ca5fGXgDL4mjI4NCQoJyqnBlUF3pGVVC7FMirRLKIHCIogILxCbR
-Y8XOHSP8nX3nEBt8eYEiLM/QvNR/ZveeI85j05lzOP5kwSZyJR79WL/QNri3
-9bPS4nBF/B8atYHz13J4SbxPMzb1SdoBI9L2BXbws3+Zf27g6/keOkG5MvEi
-iTVbNKLGw0MjshIkoNrVCVtefbM/jy/5AaUh9s6NiYnBVjs7hH2lzgepjET8
-SKRJWYynVCdiyS/wJNqiYza4pXxXGKr2ng8du5qieWB5Fveu8hK76LDL7suh
-bQ+5MO13NoEykOpiR/GIZyFDmtl48sT+qcePz81urTs+t35QnfuU7Ozs4w31
-N64Nqj8Oo34K/MuNQfX19XP7djmz3CrBJREXnD6bjeWE0jeXnTs6CsJPC/zW
-k0+OvKuzy7aKHh46RtluZSBdXaJotrz6RY/0jPc/7jWpPx3PsqJZp0PVJtCs
-xPHxcyeOHLmnKBdiC6nzIVs0bGWVVhZRwl1cZFMcYVskXEK8jLlCYjeNOP/h
-1T435h6vHzRr7FZOKNYq5TgWgdy8ftjJEyeOZ0+pn3utdUqXMyvydSJH7KXD
-eATeABGU31pSMSAhoWJndMnyhA1r3nwtuqRkw+ZnE+LjSxK2Lt86YMtr0/sP
-WBRfsXnr1q2ydjUlslZSGQUux3qXxORvY6mSRf0Wn+s9+5PZsz/5tPe5w//+
-HxVyicZDJ7ZtQtNi6R1E6PQ0h97hcBQ+/Z+vHHPp0dhruhm0OkOXcBBgOHpU
-LabHIbdjjdihjMpUf5Sjid+iyVvJfsG7B3hgBQMZW3FJfHzC8gHxYFaCWKIs
-2tBglFhHXP0sPEv8tv4Ddr4+UJY1nSyS8hAd8Qtu/LToBCzYCrQIqonnaYtf
-vgW7bWlKKmaEEgqyEg+LmaWoYshQgMUEQazQEkSxW1PmWIE2W2wCdkvyCdTW
-rQklbHw841FqZgEEc4l6UVz+BVhEi23LtECl8bAZcpZ5cdlDhj0qsaDXSX0d
-l/mAr5/5HnDB7hisULT05hlsrcRHaF9xbP+llTKX5ufbpK0S0BYNPESTZAyb
-FQUe9wLB7GGFm/bQmT3yNVKFrlTUqi9L6shesJIJ7kcD08PJwFvhWWCOWQpE
-lEgzZmA2BhtMwWEABkAJvZnU/dB1AWqrFUKMKBYL4A80iZosoyst9fPTICO2
-7eLDeAl+QAsMW9xHT2ApnEeK0YXu9XNWDmBhVimIwPTHhbhjIPCdIzXGqCql
-T2Xo+hKztA5xYal7vpxDi2zHCKwACocVKlhqtdIuh7hYydowTVq5SKiHXEJS
-AiTHdqx3FQNH0pbIGgouguCmGKsVxRMqJwBbhiREVna6tu1yVbf2aA2KexBV
-AYwowU0xNp2GLpFXt22tMRBjAYMUcI9lxQ0FllCyeArAtPYZsgnyHYCXpied
-x1doeMXdOBJlj1XUi/7aZtbMET+679Z5K1ny4HEH553ZaNtXjtNIV/BIRto7
-D4H9mjTfob2sU1NcSqssoii/lQ9tiyp3MpJ1zm8qW7bxGC2xGJhMBJSwovyD
-/b347jcKWyggmsC3BwwipTxILrGxAVLMp+Na9x9exjAas2bFscuQje/Kurh/
-45PValuTfupWAWQd8SP+Pi9zMagvHTCo60BE1GGTOMGFeIykLBS1PReob/on
-cIEzysqi252hVT9o7/y97UtiJUolHSDCpXpwEoqcQ+VChR7Jj/KsAhzuD9BW
-TG0hXelkzJt3effTT++O2x3w1BtPvfHK89g0BGAd+mD92kolSOsvufECbSAT
-fv8t4mQFmEDvvEmZbCqQDW2oUbhZuu0xsRor/uj9DXdwQRNlsNmTI4NXB6d+
-4MhX+JFT/kZ+BrtF1LcKquSByAD5EAdUNphrSWcJJSGz0CzZWGWQhfRnPPV5
-l+ftvugOY4q7e1rrxbhmJGHiV4jL88cay7qlhsSQRCauFyXwykLyfe0Fp5cB
-V6XUeyVeDVJCKd8SqhEFCSOT8iTKMzA/2jHTDhetOt8s6QMhv0lDCHyBHwT1
-A35W/wm7RXD97E6wIZ5C+FlCgcYrMg20FxGnuLGH8I2Vp1dceyvQO8D/6pDT
-Xbp0mX/69PFB2fsuhXopPSyPZGVlPf3KiE3rh+cq9U/HKxYBC1o//UoBK76A
-BCUVq/yCQCkqm5aU7yIN0neeAZ+QdHbc9QaKdrigPqfJQ+EzKK0g7YfSH6L+
-szMpEdh2Z0RkeBbt4s73yW9yAK5rywrlGHhhS+Nn11JSegwL77Z06dJuq3zG
-Huky97lvHaFexGC+nPf0KxmTxp0lL58AeT3lN6Vm0m6EzRX3fZULRh3hzvVJ
-pgAG0jZ3+F1lFNNtP/bjNyI90v6MuJ1ZkdYsScoAIJKGKJ+VvztzE8SahOv2
-r7TCmIMnUVIXxI9RMMT1R3zZgMrE4EdM/09m9ZjQ/dG1y00mUjn1rYw8+9lf
-F+ahL335/KFjH684fPo9tU99QWOnfI3WGVru//YiA3YXkOxAuUncRc9p7wQn
-SL/wmyyrPgRLHuLuV0C0f58qhAxSymjHLpiGtPvY7ivl9Qvau98NRzgWhCd4
-D+u8MQlfwCD/4PUTVgi38Ztmdsf6blUkFgajTKbqqMrUs3Ozb50//yHkBxN6
-DBr6jJJmfxveP7+UXeeMJz96iLuAsaoJAnnjArnJ9vuLUW2oz8g5n+LHhHXX
-e2ZJ7DBYlZdxKMRpJexpbWNRq/qyDtK92NH7OpTwA5dWgVQo+Ic/aoBkPL54
-Wc/GOQczM4OCMoODsdBXU10d67PxXKPbjsnpPa7WLVSLD19v5G2dFHPpQIF1
-CA3W8NS4qYTFH39TDbUG693f7wiXO4eqGYjzy3ZSRmkP+skbM7QF+Y4uDFGd
-Fvv3/OD4e0VY2cVKXwhW+qqWLNk4++isqUDCzq3xQ5esLvazkA0NwNfi/cNR
-u1v4QY7w4+/eqRB3NP6V7yU23Puy2Osoimz8gVFvTSTlrJFJWMq6DgC99NJf
-//DtnTqffoFPImXR8YpgV/p3/oX37By/3PuaOUaknl10+vGbnqRGWFvr6emZ
-VJtEqt96skOdwJK22CqbdeTNDAZVkj+Mdxf9crhArAZhvNltysKOillKOW1o
-Q+OrIiVqeGf9kwj6/9u4gMaCeCBYVqycU3elA2gchXHTVg4QPCxmUa1/ku7A
-h/RqtF/yveeglwRLKb2aWjPh3Oyjg27cyB50vOH48b59jx9v6DL42L+9Wixh
-UUdSC31Y/wR2eTivRvslccFOV5uZpUQPhuOE6P7F/SsStiZsfXZ5woCSAbb8
-TjoGExtt2w+T0uBDemPcL/qefJRpDE3bdDQl6CwgjukS1J6UaLOUdupUCqCs
-dpY/lQKPcL8Xi/xTxy+LC1ZeGdJoLUGay5BdkQJNWhDalysNzkKfxD2slyT/
-sv+vgrJLwlkRkXmyugqf5PbqmBT6KOGhwvJL/38Tas0GS5tqqtBWElQFNylp
-kc0e6qtfHs74pf8fDrQYUgBhJWUp/k5SRiqDkINS+Ho7SMmph2ctvwJcDIqP
-iFiLwLqFMiRKydspAopSA/z5Ly//H4xfGpd1uHGP47GUpBS72so9ziVoUtJi
-sYTyEGH5NeCi7C2kWNZZXlN3jTlxIjWtn6i5/NPHrwEXtZSELXNKLYtusxmJ
-bDDpsHL0rx3/DbljDbIiVaC2AAAAAElFTkSuQmCCGUPp+A==
----
-eJwBPjXByolQTkcNChoKAAAADUlIRFIAAAEXAAAAZAgDAAAAm8yEPQAAAARn
-QU1BAACxjwv8YQUAAAMAUExURWUGBIWEhEVERKFERMTExKoKDMaEhKJlZKko
-KMekpGVkZGA0NNFkZNNERNELDKSkpNYoKHdGROXk5OiEhOmlpH4jJKeEhKFU
-VKJ0dIYJCerDxIdkZH41NNF0dKo4ONBUVHZUVKoYF4cXFsiUlNAcHKiTlMi1
-tOyVlOjU1Il0dOmztFZVVNY2NLtDRLpkZLxUVMIoKLt1dJc0NOt0dJgkJL8Y
-GPRTVPRkZJJTVPJERJWUlJwJC7S0tJVERNTU1OMODHV0dMI5OV1ERL4KDNml
-pPX09NiUlLeUlNmDhLiEhPrU1NiztPiUlPaEhJhkZOgcHJZ0dPm0tHwUFJeD
-hPAoJ/ikpJ0YF7elpPnExNfDxKFsbKsvL349PLlNTKJLTHlkZKJcXKJ8fLtr
-bLtcXNF7fOs3N9JsbP7k5Lt8fNJNTNoTFH4tLIUPD9JcXKogIcIxMpw8PPR8
-fJwsLMAgIJVcXJJMTGpVVPNcXHgIB3ItLLY4OHVdXPVsbPRMTF9LTKoPDsas
-rHM5Ok1MTE4+PHdNTNMxMegUFJsPD/EwMIyMjMzMzMeMjGxsbKysrOzs7OiM
-jOasrKeMjOjMzIpsbMmcnKacnMe8vOqcnOXc3Ih9fOm7vFxcXJycnLy8vNzc
-3H18fNmsrP7+/NednLecnNqLjLeMjPzc3Ni8vHkeHJiLjLesrNnMzHVtbP3s
-7GhdXPmcnPiMjJdsbJd8fPm8vPmsrPrMzGwGBZEaGdsfH+A4N806O8cKDO8f
-H/I5OLUpKbQxMlNDRK9ERK9kZNtlZN1DRIJFRIsjJK1VVK91dIk0NN50dN5V
-VIRUVMZERMZkZMZUVMl1dGpFRK5sbIk8PMdMTK1MTK1cXK57fMVrbMVdXOB9
-fNxsbMZ7fOBMTIosLN9bXIJcXGxMTIJMTJweHHsODG8yNHA+PLUKDOIqLJAJ
-CrQYGM0oJ8kZGZAPDrQgIMwvLsggILUPD98yNKk+PIceHNIiJNY+PMA+PL0S
-FOgiJOk+PLk+PNwNDKA0NPZ0dKEkJLe/PJEAADHpSURBVHja7X0JXBRXtr4t
-hRCeofJaoxKjecQoEeKGLFIUZTttu7SgErZG4xaNRKIICIEhEAwzA3TZ1a7g
-QlU1ccEnakChNQkqURNjjEgebnGJZmJmCCY66TEzkrjwP+dWdYsJmmX+vyzv
-zVUBhdq+e853vnPuuWWnV/89Ohqd/g3Bv3H5v42LVWs1wCeD1WD4Ny7qkDmr
-VjDTnNVq5SiKkq3/Mi5WWYaTWbUcLwPQWvgLx2t/a7AYeImjdAUWlud4jqVp
-mpIN/xouBoCXkzlKwHNpAR1OMlvMvOG3BYsW7l9TVvBaDFMisIJoNtOU9l/B
-xWCQJUC3ZIttm8VWUlnJspUltoACL7P8W0LFoJX678g8/vsXLqTuP3nqwODB
-h2MYWrL+K7jIwsAR1/reCgoKSr/Vd/+NQftz6gP/7KXTsb8dgzFY5YSJt4Id
-ej38huFIjr3YL4EWuH8BFy01MPWq84zKaZPfOFYi6kTrbwUWq1ZLT0zRK6MZ
-hj75uYNjEmgz+5PCEsHFytr+6tDr25/Ue9JHURNoi+a34khajmN7ezrv3x2G
-/vN54x5gNBZGVuL2j8fFIOkKXlBP6a4MxxdPnVs/wVam4bVW62/Al6w8z+6c
-6lCfITw8vMU95UbT+Od7MDoNRWGI/Qm4WJmAty6oqMAZW8LDiy7XN3bZ8PxL
-OlHiOcD71w8LxWrcHE5UWnxarlxKzZjskTlRtGlogZV+NDCIi1bUzUiHU7rn
-F7XAKX1aiuLTe07pNTNisiDCSVle/pUDY5VYduc1Aove3b2lpWX3pcDMiZNn
-pgZF6Cw2kRFpSf4JuFgFOqYezgk4+7QAKJfSU3v26tXzVvoDHMOIogjA/Kpd
-ycqaRXPmZeJEaC3xQelu7x7e1LR/n6+bJUAnwCMIP1ajElwoamwOnLLIZ/6V
-eM/6G9NmD9s0fnbO1avlvM0sANws92vGxcDqLNuOEljAWsKLggL3H5uzqnzc
-Yw+1Ooas7WyjJJoRf6zBEN7l+P45xFyutOU0Lugzbn356CMPvq4PHk3ZaArg
-FqhfcUZgkLzKAv6nzUm58elusz8Ys+6R7sO/meStPyYWaLQ8CzbPWX88Llpu
-Q05zc7iPT3z9Y0eWVvmbavxCn0uuC+7HmimZohlQ079eg+F0ZV6/292sWEt+
-fHrq7C7rTUaTX25xoXdrV7HAbNVSNDjST8DFKo+tb24u8mlpazjnV2uqMNam
-5X09Uh98mmY4Kyf9BNr6GWHRWMwvBd2xlogDXZaZkoy1UVmxI+taz2g6awxa
-XgCO/PG4gNzd2dYMPH5lamO3qpqKJFPV7bA93vrW04LIYeYksr9ae9HSGnpt
-oCJc3N2LAJbz3R+pSLLHwczerNNfC+hsNlg5gf6xxKvgIvS+pAdciuoXLK01
-JVXURObuLbwJuEiCDDkqTbM/k7386KsYKIFlMlXh4p6fHnGqy+hHKrZX1FTd
-ztsDuAR1VnH5KfZikOkZnmAvPkU5gIt9uzG6OnRvobc+eD3PyiR3/+G4GCCt
-hVQFBhZzrIYfkpxYiabGdPhufzWgGIOT3afwpuV55hNfVav7grWMLwdYthsV
-XPSOrzoHiK9aOdYZqK1aOCsiZG0PE1yY094t7JU8QDPDE+0l/sZBv2jjHVzK
-OZpT7eWHoS2DOobBw6A45Uvpe7gJvB+EOqe1amVWI3JW+KvVGWhorQE0p4bl
-OPiio9PA+cVPLilO1OwbGOGxacKTSdsNScboqlxiL7fWaliwFxbtBaCnGFHL
-iazVYGUFrUFmIZ5guZPXmFmeg3FHFit5QFnveuSX+OuIS5K9FnGp0wcvozQ8
-TMkPtBcDCCxGkCSWZmJitizvnzCA4nnayyLJ0j3rWwYtRFFWYgU6YcOWgVsq
-QWtYvASZg8ewUhpRloWAzl4Cz/Jajma/wxC8wNMfxyvGok9JzZi1YcKKiqTt
-25PsNZEKQw6RBMlgAFwgHhlk0auMkcwWWtYKNkGrZQoKIKmkOJnVbYvpj8pe
-opwSluQBNq+B9e3sxV4bpfoRbaFgPn8Yv8i8VhY0mp07dmS49fWsn5qzf/b4
-TT1mFFhYSZS01g4NzgBTBEa+c0fG9Gv1nlNPNs3qXaYTBdosws3avBihxOsP
-f9hGs4xIgY6SvnUTss3MDgwkEbpZf9Vt5qxNq5ats1dUJFXYowkudfozlAsX
-WdJ4WTRmm9e2/gn9LRaapcs6B9AyRzPLJ2cGTr32bq8egI1EcS5cZJuth9Ne
-IiEcgb1kFaO9jDdbeJVfvs+PDFZJFEoGfpI69erly62kiOMIXrRo0aVDmT22
-iKCCqA40s0HmKalkx/Rb6iGO4MvxgVNKGJ2NlZiPHz3e85Rb0FcXUk/NnP7u
-+EoA6+6ih9ZcZo55RwlFjkXTPSYPG9bNL67GXpGE9pKbh5FjAU8TP4I4Ldm8
-LL1HRBx/L+Lk/tQLETNPZb7ylk6QxBmZfS/DpVtbF/2pcXwJ5pgue2Ho5VOJ
-veS4/KgY7eU0o+EM1u/nXfAGTrK9ePSa52V9s/6uQk5z8+V9bk2LkaO+ExGs
-VlnqvwPvqt0x+qs5GToNHZN5qdVVetN7fx2ypJIxU3cdLZRZbBGXyTH6fSd3
-TJnZeDE0zS8acQHeBX7xrmvt6sRF4Cna/LGnw3lGvcMBPD1lS8yI9Hz1X+om
-fXPkAYpiKYOTXySqP4lH8de7+hF7UfzIMUUE/YJ+JN231GDlwVW2/c8FX4fz
-2QggainHPT9/X+P4/jT77SwL5KS0JTOl3UHqASluUyZn+LYHN/mzrNWbJVpq
-F5gMvKjRjVCyIv2ik1MmTh/11D9Dcquj7dtJPMoNQ3tppAAXxY8oYe3U9pU3
-+OXwdOvr65rI5L9fXDohEZIGrStOU4q9FCG/EFyy0F4cGSLqF1SL97MXqyDS
-zIz38u+YiTvWcSCxxVpOC3xR5Bg6rUeJcFclB8KlXLmzb/CdY8LVY8LDr8Rf
-8nV3vwNu85fz5pSXVjK0fCdmy5LEHL2qILpo/5SM1KtfFH4dFhoF85q0Pakm
-jugXR9+1OtoA80YLFG1TArp6e+74C69JLtDs3vrFU2e69OuyStBYeFfeyPbw
-JPwyCuzlTjxqPQouDWcVIA+w3kdxms1bens6nLPurj5iEaBCyjk+8KTuwft3
-VMoy46qjGyCQ0ytvtd5BpUXFEQ9SjnFXymQt4b43Dowff9rmpWFdpTcrx7Mr
-05sVWAY1ZaRe1tfdLCwOjbRXGMGT7KDYwV70FywWEXWdKLDmsldclQgywvHu
-yBdwrfxFNw6c7tXT7XSJxULBJQguPL1T0S+jDjr9iNjLXy1m9KP78i4KDFtm
-Sqs67+7N+fm+8Slt6UHpbW3x8UVFMPstV1rCi9rcxnJSGZkLcphNY96W7mhn
-Ky1Fuy+1tbWlwEEtPtnZPj4KQpCdXAqcOXlH5jsvB0CoEkCBGdDaOHpgoGqg
-g6ZMvOWb36z3HlmcGwexKNpUYSf2otcH2jTCq0S/SIzXMw68QTi7j3p2uM6u
-bHIp37bpHodnXmtrO2z2srGgYxRc2B5Tib0MUnlXxeUVLw1H9Mu9tZlVtDFb
-Mn1d057v63nLrWeGh0dTU9Pg2ScaRo2q35eSculSW9CtUxs0BRZnZk6XeWGN
-0Fl5LNodFOjW89SBZ58dPGRQfUpRSzbeL9yxz5Xd6RETe3mktl3wstgYRqRZ
-zgpzxQszAlvJ0cE5HhNTi8AX9F++ERJVUxNXFRddYQRcCjE/okUSp0WBYizv
-EFh80BqvwCRcwglAjLLn7w4c0WvKdM/88L4bNAEagaVkxY+o/vVOfqlph8t/
-2hiOxOl7+xEHlJtx1QXLZc/Unh69Tp8e9nyXfqNHjx4z7lzXxwg4ObdS3TJe
-8hJBECMwWk2AV4Svs5QEaXBqz8PPL1k1enT30es3dj2x8HI42kw2onLt3cOb
-Dk/zvNx3i9lM06JIU1pIFkXNcZWwF77rkRofDrAs9Bs9J85eFZVWHWevqL0d
-gvoFeFcieldgbWXPwMXCW7J9ii55Tu3bN+dG3/oU3/yiovig9zIn7jiw/2p+
-fv4xSlNGg9fxCu/y/fc1O3VdhYtfHBm0iLxL35t3QZ4LTljAWFICe07p1TR7
-2oMPvv3RxeGQg5r8q5amDT93ccFjZ4ac8thBQ7QUgCGsks7yXynqUeFFQak9
-T/dbNWbc8CPD4aH8ly09+ODnl+GOdwelDzrzwfryMQueekJ/vVQooSgARuJ4
-XZlaoGvWD313SgSBpWEZR8/yj7sdGno70lQRnYZ+1NpVlijFXkDrvuIgRaYi
-z0GNXQ/O7TP33IIFjz0278zgpsO9PKYt/AImdqE/Z9PIkshIznrd1Dt61xWP
-gg8LzPfwC+R6Az1dPtQW4TGrqfHNf3yRnJw86eu9IberTHZ7dJxfZFS3tG5n
-x43fVFkq6nRwMk7UWI47D4tPj2gau37M8Ky39xYXPxeWFRVXE9ft4ttvLqyf
-Omj23I3LHlnWLe9rb/31RIqVSdGDYy0Bf2xTQ9HJKZltRQDLqGWyaNnZPS0v
-LyQ0KhpxmQT80lVL8Yq9iDrLM3oUI1c8Gw6eXeq3ugp++fmtXt199LgPGkd9
-SbRS4wrKLCGMCi5ruP5qPDqn8K5iL5f7SaKSN96LX0D0rY1wFT+CMqccHtzw
-ZXIdUUnehbF5uVWmCiDC2ri4KriBCRMWl2h0NphwThJ7pxBY0IciDq8aPS70
-m9jCm97eyYWxYQBndOTwi+8/dmbuWZgne1UuqqmGUonFbIpmKbHsz21K9T94
-0JSMdLCW5qHreUH3WszSkL3Fe0PSau3EXupa52pZlV9omnmnGWu18fWPnY2s
-ja6BKbObTDVxS3Pff+oJ5Z5bl1Aio0U9Rin1F76Hp6p3I6PvxKPg0TzNqX7U
-sb3Iku6VeHXai9Knzxp/5qkn6pw6pq6wOCQtzg7q015TU2MyGStWlC/ZyQgC
-y8tcyXSHEjSLLkw/vLi8W8hzcEEVz29Cq0ymqmqwMb/uNcaKGshKRgIuiSyt
-tWKtVuP1u92qKsjxmJkOnKsPnsMLZp1uPNj5nti8205c9HPXCEo+DfkRm0lw
-8R10sDrOZK/YXmGviYvKzXtuUrK3esf1y83bIAkDPafwi5VS9YuTdyEPGFmH
-uIhO3u3QXmRNWedDqigoSo/oNf7DtxXgHQ5f38vBybF5aVUmwMVotBuNmLWs
-3ji+kseGEn7LVPWwILemVf5LQ52wADA39+SlRRtNtVVVcbU19u2kJAnW25Ao
-0FqYerMl4K1DirU4Fs6cEuEL5tLadQLLaDTM+LDCkSP3AK72mqgQtJeunCAR
-/QJRDHDRg2ZpaziyOhpmq8JUC0lUMUQt50wGT9d56WSCh8q7ajxy4hKn5tOr
-KBKP7mUvkKEEvAK6gZBnW8SUsWc/+gyfrvXEsCkTV05p6poXElWL9mKsgCQ3
-qaImrjrt7AQtB/l85Y4URWLtDjzVb3Pc8LBJBJZF9UFtOX+K/SY3zlhhigZj
-BzRNcWkhsTD1DQNorJlQtK7slXwnueyY7gnW0ty4QmLMoiDN+Qxd8Y0sxAXA
-9NZ35SDdIfkRpxX/ivbSktIwvDuQRYUJnjJskjKPJGsKPpOg8aKJOOJ5xY9w
-PaA976K9AC7jNTrecG/9YgBtHagqkKDAAxvGXCy+iefvs7lUNDMQGtefhfTc
-aDfZjRXbtyeBBaTlhvqtAdIVmRH5KPLByqaPX7cOnoEcuGB97z/M2FB+JI/g
-Ar4H1p5kqkoL+Rqst6GShTRNlgXdX9WSy+W+Ez1SIcY03yjXCjYRxPD5JyDs
-B//tfT+TCZ3vZusCTolHoHooy18ILm0NZ4H1FBJFaobr5jQ2nmhomDuBhzxZ
-aS9ScLHKG+6yF2f9RcEF7KVj/WLQsitTVHcInD5+9NKP9ngj7AMk0abBxU9q
-Qo3RFB0NHAe4gLlE3s4KGf4IwSUzHGFpiU+dvX5FLWhTOLDusc10QWcdJVee
-71ZjBNkaTVgAcdmDuAzgeY6jJPMfv3I0k9zPs+eOnvVgNim9eA7ukeK5YZfh
-nEX185aa7JG5e/eMvPk+JbBWUvemNAW/xzCNuMSZiLmExI5Ea6mfuaG0NHFF
-YqlEa1iDks9SyvoRr/LLdZd+IfayirZx96nvGjjNOw4nSwxb3H04BjF9wwOQ
-MAGQXCnFJSbWVlVXV8XV2JOwFh0VmheWt5pnGfOW4y2YtV0Jmn5+nQnjDRw4
-aoM5oMCLAY3CTLCbQLbWgqBHXG6TB2hIlCGO0ZqXHi5yR1gcvm47pkz7PLku
-+EACz7OCIErsFF+Qg1c8G5eajFW384r37DnISeBBQNaCuaDzXxxgL1c8Twzv
-bk8yRlfn7p0EV23tuwMOZCmuVNTYBKsChxKPDLyg5EdFN86p+bTKL6yGV+sv
-1o6a/MwvBjWr5nJqyQS/3GKgAf04itFQShlB5hd3y829HRVZW0Nq9GlZYcXP
-DadYxjbjYR/M267cmr1khSkyC1ne4batoEDkUaJUbq6NBNlaVVtjJLjkEXvZ
-LMucZJ7xl/mo4tzdfdN79jh84u+FIx+sFFiJlxgbeGeRz67s+Z7zupkqgK3D
-9hbfXoNsJgmMpqwg4B098aMTZyFI2pUFJr0+pTeYdokgUYLIsFblvilBwUWi
-Y1z1XSUekcgY3A9x0WIFsSN70ZoD3opX2DModVj5umrCEovW84xgVev81NiL
-H+WF5EZVRdsBl8i0rL3Fey4OYBndf32KuY/P7tQPuhtr1AMzXgtgrBgFWKpy
-XGhWaG5UJByWBHCqvMuDWt72yqfZRVgXaE5JnbhpzkHQgucSGKBcrFKujZi/
-q9Ou7JQT4IfRVWmhWVlRW8FU4JltXl4aZqaj2Z34Ua0d3Oh2yNfILqkDzQxL
-Fi/WKKkbqH+WVnChpP45Tv3iqjN461tXUeb72AtnCfizL+LSUnThZL9HojEy
-6vVDVwkaXtF8Wk6Iuf6Ph/6eF1qtrErdDineU7h3NND1H7N37YKZDdo/x98I
-B+Jz79upIawHbMczQ9547pu8XFC+uMiXlher8C5Laz55Oju7BSsQ8YE9ezww
-Bog8dNyWtTHLN/VY+ec/f3Ioe1enTp+2NXaLrrCDyUVVx20uiSkpERkNI1CC
-B1iZD9rLMhBFWLgCUrucodEI7apCBvAiSRAVXOTS5fWufLq9rqPQXu5V96Zs
-uhEOJdheGzx6RTTQI1xo1ACBFLwAFnDrybfcHV8+dTGtqqaCrHUVF46ctF6W
-NB/jxO76NH3IxnXG2uoQtJepy2laq7RVckzql0+8/kbIbZglwi/oR6M2lNDi
-2kOQafu4h4O4jvBYtXlZVXVknP/ocQe/+fxqyqXduz8FWDr5eE4DXCpqouPi
-ou320WOWLllpESmZp2civ7R4Au8alaVDuN36GLOz6RTbl3EyWUGk1Xgkqfzi
-rDNUk4Pa49KBvUiMeNKBKWpR0PQP1hkRF3i8hq0UIXUtJ8EFdl5oaXH/8p+5
-cFq8lbBY0F1LZco8sQieYNf8W2f8IPUFXEaCQSdIpKfUqpX5mBeKihxfvh2K
-8scel6biIrDC6XhMs+FOLwXOHD9hBcRyI0rbWJAh8MxoLZ06zZ96Zik8hdEO
-8gDcqbpbt2EDWa0sMSOc/FJrrMAlMjhp60lGQytd81qgdZ7jKRaSdoFT4pE0
-OaV9fqSsq9UFl1M2/tV76l1JpPeTbqIr6bPHPWKsVXCZ96SEUtoKoQOSkpgL
-ML35Cy9G4a0ALoUjb97stkZievn67OqU/fitY6vtcItZe4HNTpbylIGwHsXa
-/vKpT4vv5x91i7M741HdwsUUJR12J6Ukn90Xpg9bvyIJ5JlRTXLh/hVY4Kyz
-l0aD8EnC+ndcZHW1X7/+nBV0zzsOiOLzPVVcsoqTQVQMFnW0YqQ8RCUWwhrN
-QMouq+v2MZ53rR+BvYCKDl7GEX65h70AXgSXot23Bo+xAy6E4BtlFnFBthZZ
-Ye0FmN+iq/PS4pQpgrPWnX1SYk5fxefbvX/uasSLsNmQRJ43kCBJM5a/fJqd
-fWXRg8MhjbDHKX701GaOZ5vcAc9O2fMPRQzu519hMGw3AmsB/XiD2fpkAyq7
-Ps0+dO3D1eR7BphhrFL5lydwkMJbAJcWHx/k3YqKaCUcLTov2ATCaWAnoiji
-HxEX4ZT8iF+u5tNzkXeNMLMQGm9+sYoXid7tOB6BNNhP6CV+f5/Vdue8nSgV
-BQNZEsY1m7WBcLs+vg1HqpQfGOldpx8HSnHTwnDAJWhQn+529C98siEDKPAj
-1KaMWffofDgsfhSEAeJH+AhvbuYo4UCzDxLT44Gnuviv2b4dcImORKEy0rs5
-nJhL9qdfBb7bp7vJuN3w6vYkuwnyVfu6MeMTgbO83sHCpQ/6UQWE8RBUFVef
-lxieSBYB8cDBStimqObTy++sq+H6NJguMGTh8zRDGe65Dgupyn6H3r2oCKJK
-d8UcJt2su57AsAZyHZri+BjP8PBsn6JR56qM6Gg4sfrVVl4Yez0fDClo0BF0
-FHhw0KYPDuAlLbkaLcYEFmFdbeFFv5rtdhKPvPVvTqAEJsPRArg8fWj6+dFG
-dJQkRS3u3TOpFfwo+9OnHz/0ntuzG/1BKIPBbE+qqDCa4rod/LBUS2nK/poN
-cwG4dFtGcMEguKgfJ8hYRQevpyGRgMEBz1jVfimqR3s/ApeGlCp2z9ef2LDn
-kKyTYGeCgcQxZG2D4pH0u60grYvahpyFK+HSZ2zhzaGzsMOaJJuQNu/0JG1Y
-OedWG0mJHmBp7W6VhIQzl1t85qdPO4vECm6btzc2rBzkFPY2CZKwNh3poshz
-wdJolx/9rb9ots3UA4tkfxUxbPQKyLuwdgH5ZSRE67y3R9V7pqen33J799ku
-3UEng7UA+Rhr8ORvzCuXWY3XX8HRdmUT3sXOJwyCC7vztKx4PUwjyhh4Oq1z
-PUCmFHtR6rvbMQO/nRUWFpZZxmCGTjE0JwNdwx+I7WBouOMExCdFNy0CfolP
-b+xWa0T9lbV3T+E/doCsM8gSkrUsDQQ+9/EpyjlXVWFXaEQ/dJ1WZOhn94UD
-LieOdDcpCUJIXsgYwSzynCRxPL0SDgv3uTJ1wVKwFzUeXX3Jy2KZ+AX45dOB
-B1Y9UlML1IGpgh1SsNraqqVzPjgG48M+c8Z0X2dMgnzMbjdFx6GW3JP8VD/Q
-2Lo/EkcDXKIBlygiihZOYCFMk10jWE/HNhWlC+c7dQaUmPboqqjbuaHDDwfo
-cJMTpTFLHMWCOwmiWWNGZEgnByvO+ltdc3781DMba5WsKm/v15/NogVgfwky
-NVlmV15V+mrmdgf5RuS+/sEneZtGHLYwfv7j6Y1KCgcS7Hbo7SVbNAwmfxyr
-iXCQwzwX+NUQe8FHSHnJYtFMGZrf8vQLPceXd/eLSku7fTstCgQMFt9qov2X
-wShf3X2Zv4nAAqZSVZ0WGlZcmOw99DSjMZtHuOylwhk9Fy7HigsW9L7VQ6jm
-je1wgZNWINCRVdHlO14cODCmZMtrL65dvnxg7xkDB65cuXJgj5idMWMrJSTw
-5f+8qS8K6rvAr7YC1z7TIC8MW48+SjpOtDLtRh4w/sZZf3i8vaj79Au0rI4R
-xg8KevzxWwSXJHwCuNy6xXAMJUnslo9TSPyPn9pVwYVM7VDQfcKmBz2DXvhk
-1pJuuVlwKRh5eSFZkDLkAkKR3aNr7FjqqUgywCNAiE5D5iE2ugnst2QmiWUE
-F7vKLym/66zTKguSvNXwnT4ywMVVf4HUF3g8Gi209kjD5/s8b1347/9u89zn
-mZKSsg8+7auv37fwza4bKsElS7q+Huzbdu3DpchKNbXo6KGrn8QyEGSoMoT/
-qaj7fOIHzVEKIpi/nuXMNpYqebftq0O3hpyFBAELitHR0Xaj/5gNCYKo2fZJ
-SjNZ0Yi/9qGf3VVnGAX6hXqg67Tjn/TuNfj952L3uEZsbGzx3r1hIaFp2DS5
-HRkXa5TVt7P2xoIMw7WUckh6RA/kbORd4Jc4xV5SZujMiIvw7UZWtU917NR2
-ehdOS8SiiSR07kWgo8LbtSkoS//jFrOCVNrv7aFt6fvn4lFJcCtV1VFRyxJx
-pxslW7WSeQTRwy2Xhmx8BIiO1OT+5s/Cd0tLPG4deuHa7HGIC0pTewV2aX00
-LfOTZx6+kk9wCW+DOGcndSlCBQ+AgE5YMmxi74+nL/xH8k3vu8bNm4VfF+fl
-VseZSCQC36zOxSinVEdHrbNyAnMqHO3F8wRkCUpwxKyFBTbsQLoquMgblPWj
-66B37YALCMkkxYBv1qFg8glXl9GVoU/+LGvpBIrjqAHHctJTT36wGtg6yWgC
-LoyLNq3r7+VFgytJW46mKGll+uzRTnPRL1jDWGieNfd+570LEYO7LcPLgelv
-J5f7Ojm/heSFyvrJu3MgwzORqa3T5ywGx2UWj5189L02h75O/61Rh8vTebcj
-oxXOhXQ6ZK9iLHoU4VqK0fQMz1b4JdqI/Zp40oZHKMga74OLwi+IC9rL9qTt
-BpLnxRYCLhj1lfX/8PB8SNmaWz+f12f0ZgxP7Gm3wIieH6wmBTkjBE670bis
-z4iVuK1gZ2aKWp1JHVYel7uXmEuwn1Zj4zlGo/v4+KOZz45ZZ8R4WkHqlTgN
-qELILLjnB6UO3uhfAXFOzRsXCxpd2c7TI555vOhb5usqmH+Ti/oL3QjMJWzP
-SBWW1j5auUSnywyHJB79CLJttVrXkCjRir1QHeDCUer60Y25VXheAAZ7SOJI
-4NW7kxVRpQfgSsuVK+G+nvubxp/e9KRWpsTXPol4Z2aXciQlUAtGYxLquzf+
-1ve93z/6Vbg7KXLmX5i+afRZUqqEtHIFpxEMWkZTsuXoOyMOryLLKEZjRRJm
-H6FhXycjMC3h7g7foMDpw0bbkyoUvOr0njMCOnfuPGOWx3sP77509TI2YwUH
-L3JcXjQ02BG86MtFrY7kr8NuV+GdGJJMcVGk5QtnYtHQuUYrZbOsnanYS2M3
-p73A7SQwDIhJUB/famlX6i/MSk+stl5qmAsJCVgL/AHDRhXzTezrdWSp20fZ
-gtNyZffudDePWR5uMxNlrlLnNePjoxPHrlujoIIsA2jGJqvTTjpYfCOm9OtG
-2F+vv3weWIfDSlhp5cCjGT0WPwnyTFlcgjkESnhjaEr8/N3xl9oCj2ceWOJv
-REGbpuDyWkBB5wJbZenYHb2WPO/x/JgxXabMzHgmY8x6j99njhnzfOY7x0JD
-q6NB4eIiQpXy3PqhJwafHluqlQWbhm4Cftk137OxW42rCHh9sSCCvYB86QgX
-1uvP8eBH4ZcGgc5KQnevQL+wYwE/K+yfCz3bLqVcasMujPR0z1tuM3vNmpna
-1neATDEWhh7Ye/KGRLJ0R+r+Sp6kB1LCaQdkfFMzTg97v1hZkKivlGlsH9RK
-lLBl4MDli9dFx8VhKbcWQixEwchuZ2e/mxkREZGZmdFEWpSNzhbl+m0aW4CX
-yFKCxkyLCTxXKti8tnmVrNHGdF4rr6Et29jE9bVYZzdVkLLTJGCX1g8r6RIa
-AjzN0OxhYIRdPumNY0wVpF8TcHszkWLRj+hvbw1R6piWF9swAWybdtYfCxcm
-QhSYW4CwiBp+ruuZ2Wdg4IfBxz7o0m/J4OuLHDmbZUljpljbtpiSCctqa2uJ
-+Kwgl4z1xnqADxJFyrWMXk3zPlNgScmoZEnxCSMjXblly9gxfhDC0tKiorA8
-Dro1bvXGLqd7zdo5a1aPfqOBfAjNkZDqOUNns9FsJc3odBqxUqIZxlZmYwSK
-1XkxkqTZtk2gNpuiq0B3qeUVcFzPlTqLjREZ0KWUdLgF+GV+3zOrQe5ixcCb
-8C6tNRAV2oG9yJrenlgwSJ89BvRCNNxebS2uboDjo5X7+/svK19WXr5M/TPm
-yNsPtTpGJWpZhuXo17at7bEEHq8apFlcLRxSAxnJZ4ontcSnT5+4Y+aJh9Sl
-zkydmVFq4jwNIasy5vScs7mgeWBk4Yfc0Kysi+83zj4wbNMDAyasWwEKzWhS
-7SXlrQCLpOUkUaNhBAnUtlTKCixoSJ5FUcAJGpod0L0a9B3SqhLb9UEvFwSY
-ORmTHlnywAjy+LUP/I01kSRa6fUnttIa7b386FWZWVkPiqHt2rDydbiwEYVD
-eVAU2dE162pw+ANi/nGRUVlhkDfrRyVyIPV5W4Flba9njwzPzcXKf1RVrQky
-2Orcj97cd2n3ofciMlZO7Fn/hbqod2unRVdpVTfGQ/pEz+j94VwQrnthFBfH
-xk7aM+n1wuTk1x96sOtG/ycxLUxSWv0xxWt7q8AmGxAXM9Y9DGoyo35Eqxek
-Vd2wy6MGfVkR17d0FrPiIFrW/A6uFhzq2e8RSHHh+4jb9Q1eFpmkRx3hwplX
-/u2m99VbM8cu80vDOSODTGHu7dzbrgF/yQUBXoywYD1EkK2UJUCj2dl05mII
-KPKQrNzctGqQMCDsN855tsnDY7JHz2uL1B4zR/pks5dyl5g/sRxv6/yiR9f3
-w/YW7yksLByZ7O1dB0Nf532zOGvpI0bkY+c6yc06R8rLBWbsXcd1aMgxSIKv
-DuVrXqLGHswKTYuz10SFqkF6Gs0ISpWfE3WAy6cPHz/8wOoozN/RzepyBmIe
-oPjRd/eTULqVDZMeutGzV5ezWXk4dc6xt3ivMp6DX/gR/m3PJGWJfdRmSdDC
-5TS0pmTV4Hnf4HGgxvNCQm9HRcZFL+s+ZsmwwdNyhgbrlZ7e5qCVtEbHK289
-wHYNji37Q8DO5w+GASwjRyImzvXzJ94IrbKbanHZPsm1NcTztTIGHwFwMYss
-bkTApB5EFPkEg5O5TWceOzjOv7YalO5NslJ+hqIltUwpMB+3ffXwox+f7nIQ
-UClUlHD9iwVmzP7FDvlFCBh4LOz9Z2dNmf3PzyYVjiy8CX9GjrxZeBN/w0iG
-z4XwEb8C/a2IzYbNLFC5zNK0jZVXuf1pD056IWQrxXu/AXSy3s97+6nPvyCt
-+zjiH34ZiJL0DEPegY2j2PtvoSv7HcnDzheXgB3acOB0P7+amkhwZEh3nJuh
-9FN32hgrZr4aGwADOT0OSnIOSqK0/JZTs4f163fkI+xSIIJuLvbvYtEYjEmY
-HPjeM0dXHmh4Y5Lrem1v6UhVpOM4TQfYugwft6SXW/0T3mjIinzU4wTWKaat
-foGfnff/2FZWIlBDGqgteXn6GwDlSERxJOIzadKk5GS8uAJL8+7/6GxhzAos
-QBKguzlO8CrYBjnWgI2hdxT7wsYxpQNYdoIpErw2qqpGWUbAltMciLfY58GY
-NWZGJLFXoNsPVluqy/CYNetAw0Nql4J+URce7cWKVRJK2JmZ2bv30b6Lkl2W
-qb/wMsNa7xWPrGKZuHjZhOfd2vKbHfofMPC0wXN5bEWSYf40kmQLKOl+8B8u
-DFU4nSM455k/dA6w0Zy6K4ACeQnIsLYAC4QWik9c5nf23JDACyfP9ysHb+Al
-cXRUSFhYSG41rgyqKz2jSol9SqRVQhkEDlFUYIHYJHqt3LljRKCz7xxigz8v
-UITlGZqX+s/q0WvEBWw6cw7HXyzYRK7Eo+/qF9oG97Z+dno8roj/oFEXvGAd
-h5fE+zRjU5+kHTAifV9wBz/7twXnB75c4KUTtGoXBHiRxJotGlHj5aURWQkS
-UO2axC0vvtafx5f8gNIQ++TFxsZiq50dwr5S54NURiJ+JNKkLMZTqhOx5Bd4
-Em3RMRs8Ur8qCld7z4eOW0PRPLA8i3tXeYldfNht95Vw10MuSv+DTaAMpLrY
-UTziWciQZjWdOrl/2okT83La6k/MaxhU7zk1JyfnRGPDjeuDGk7AaJgK/3Jj
-UENDw7zHup5dYZXgkogLTp/NxnJC2WvLzx8bBeGnFX7rySdH/rU55VtFLy8d
-o2y3MpCuLlE0W178pGdG5jtHe0/uTyewrGjW6VC1CTQrcXzCvEkjR+4pzoPY
-Qup8yBaNW1mllUWUcBcX2RRH2BYJlxAvY66U2E0jLrx3re+NeScaBs0et5UT
-SrRKOY5FIDevH3bq5MkTOVMb5l1vm9r17MoCncgRe+kwHoE3QATlt5ZWDkhM
-rNwZU7oiccPa116KKS3dsPnJxISE0sStK7YO2PLSjP4DFidUbt66dausXUOJ
-rJVURoHLsd4lMQXbWKp0cb8l5/vM+WDOnA8+7HP+8H/+V6VcqvHSia5NaFos
-vYMInZHu0DscjqLH//uF4249m3rPMINWZ+hSDgIMR4+qw/Q47HacETuUUZnq
-j3E08Vs0eSvZL/jtAR5YyUDGVlKakJC4YkACmJUgliqLNjQYJdYR1zwJz5Kw
-rf+AnS8PlGVNZ4ukPERH/IIbPy06AQu2Ai2CauJ52hJQYMFuW5qSShihlIKs
-xMtiZimqBDIUYDFBECu1BFHs1pQ5VqDNFpuA3ZJ8IrV1a2Ipm5DAeJWZWQDB
-XKpeFJd/ARbRYtsyPVhpPGyBnGV+fM6QYQ9ILOh1Ul/HZT7g6ye+AVywOwYr
-FK19eAZbK/ER2lccDXd1h5rLCgps0lYJaIsGHqJJMobNigKPe4Fg9rDCTXvp
-zF4FGqlSVyZq1ZcldWQvWMkE96OB6eFk4K3wLDDHLAUiSqQZMzAbgw2m4DAA
-A6CE3kzqfui6ALXVCiFGFEsE8AeaRE2W0ZWVBQRokBFdu/gwXoIf0ALDlvRV
-+hWL5pNidJFnw9xVA1iYVQoiMH20CHcMBL95pNYYXa30qQxdX2qWXkVcWOqe
-L+fQItsxAiuAwmGFSpZao7TLIS5WsjZMk1YuEuohl5CUAMmxHevdV1VpztAS
-WUPBRRDcFGO1onhC5QRgy5CEyMpOV9cuV3Vrj9aguAdRFcCIEtwUY9Np6FJ5
-jWtrjYEYCxikgHssK28osISTxVMApq3vkE2Q7wC8ND35Ar5Cwyf+xpFoe5yi
-XvTXN7NmjvjRfbfOW8mSB487OO/MhmtfOU4jXckjGWnvPAT2a9J8h/biTHEp
-rbKIovxWPrgWVe5kJK86v6ls2cZjtMRiYDIRUMKK8l37e/HdbxS2UEA0gW8P
-GERKeZBcYmMDpJiPx7ftP7ycYTRmzcrjVyAb35V9af/GR2rUtib9tK0CyDri
-R/x9XuZiUF86YFDXgYiowyZxggvxGElZKHI9F6hv+ntwgTPKyqLbnaFVP2jv
-/N31JbESpZIOEOFSPTgJRc6hcqFCj+RHeVYBDvcHaCuntZKudDLmz7+y+/HH
-d8fvDnr0lUdfeeFpbBoCsA69u35dlRKk9Zc9eIE2kAm//xZxsgJMoHfepEw2
-FcgGF2oUbpZ2PSZWY8XvvL+hU7tNmBDlsdmTI4NXB6d+4MhX+JFT/kZ+BrtF
-1LcKquSByAD5EAdUNphrSWcJJSGz0CzZWGWQhYwnvPX5V+bvvuQJY6qnZ3rb
-pfgWJGHiV4jL08ebyrunhcWSRCa+NyXwykLyfe0Fp5cBV6XUeyVeDVJCKd8S
-qhEFCSOT8iTKMzDf2THTqb0FKvPNkj4Q8ps0hMAX+EFQP+Bn9Z+wWwTXz+4E
-G+IphJ8lFGi8ItNAexFxiht7CN9YeXrl9deDfYMCrw0507Vr1wVnzpwYlLPv
-criP0sPSKTs7+/EXRmxaPzxPqX86XrAIWND6/lcKWPEFJCipWOUXBEpR2bTk
-pB+lcUF9BnxC0tnxrTdQtMMF9TlNHgqfQWkFaT+U/hD1n51JicC2OyMiw7No
-F3e+T36TA3BdW1Yox8ALW5o+up6a2nPYmO7Lli3rvtpv3JGu85760hHuQwzm
-0/mPv5A5efw58vIJkNdTf1dmJu1G2Fxx31e5YNQR7lyfZApgIK65w+8qo4R2
-/dh334jU6a79qbxTWrMkKQOASBqifFb+7sxNEGsSrtu/0gpjDp5ESV0QP0bB
-ENcf8WUDKhODHzH9P5jdc2KPB9atMJlI5dS/KurcR39flI++9OnTh44fXXn4
-zNtqn/rCps4FGq0ztHDfs2kZX36AuYFyk7iLntPeCU6QfuE3WVZ9CJY8hOHe
-uGDIIKWMduyCaUi7j+2+Ul6/oP32u+EIx4LwBO9hnTcm4QsY5LteP2GFcJuw
-aVYPrO9WR2FhMNpkqomuSjs3L+fWhQvvQX4wseegoU8oafaXY/oXlLGueCLf
-/2UY+N4MpRzDOW+y/f5iVBvqM3LOp/guYX3rPbMkdhisyss4FOK0Eva0uljU
-qr6sg3QvdvS+DiX8wKVVIBUKvvtHDZCMJ5Qs79U092BWVkhIVmgoFvpqa2ri
-/Daeb/LYMSWj57X6RWrx4fONvK2zYi4dKLAOocEanho3lbD43W+qodZgNXT0
-EJ3udV41A3F+2U7KKO1B33tjBleQ7+jCENVpsX+vd0+8XYyVXaz0hWGlr3rp
-0o1zjs2eBiTs3Bo/dOmakgALp5bLxfuHo7sSBMP938dicNWGX/2BuPx/esuN
-4T53pqVEkU04MOr1SaScNTIZS1lfA0DPPff3P315p86nX+iXRFl0vCLYlf6d
-n+ENPb/c+5o5RqSeXHzmoZvepEZYV+ft7Z1cl0yq38oOdQJL+hKrbNZRLkH/
-M70D7JfDBWI1COPNHlMXBd+r+uUY2tj0okiJGt5Z/ySC/n83LqCxIB4IlpWr
-5tZf7QAaR1H89FUDBC+LWeTuCM+f69Vov+R7z0EvCZYyeg21duL5OccG3biR
-M+hE44kTjz124kRj18HH/+PFEgmLOpJa6MP6J7CL9n89LtjpajOzlOjFcJwQ
-07+kf2Xi1sStT65IHFA6wFbQWcdgYqN1/TApDf5Mb4z7Rd+TjzKNoWmbjqYE
-nQXEMV2K2pMSbZayzp3LAJQ1VpfkJBsOpJ/r1a6/LC5YeWVIo7UEaS5DdkUK
-NGlBaF+uNDgLfRL3c70k+Zf9fxWUXRLOiojMk9VV+CS3V8ek0EcJPyssv/T/
-N6HWbLC0qaYKrpKgKrhJSYts9lBf/fJ/AhdiMaQAwkrKUvydpIxUBiEHpfD1
-dpCSU9zP+KbxXxwXg+IjItYisG6hDIlS8naKgKLUAOWf8wXsv4L/twWLWVhK
-UopdrnKPcwmalLRYLKH8nO90/TX8fzZkbyHFss7ymrprzIkTqWnJhp/3Tbe/
-jv/nh5SSsGVOqWXRLpuRyAYT+Sf91wj/0vh/uWMNsuBiX1IAAAAASUVORK5C
-YIKhXJJ6
----
-eJylk0Fv1DAQhe/+FQ8vUnalKk0l1EPVckAtcEBCglY9O9lJYtWxU9shC9v9
-74zTDRRtQZW4RPb4vZeZz8kCH92I6DAEwhdnjLbNe23o8xD7IUbyQrw+w/k5
-ZJ4fB19J4el+0J6QGde88ZnQtjLDmvApbYVgV4CMrQ4YtTGI6o6gMLYcKoVY
-gDaq6w3B1eAE1FxHSfxahN7oiPI7ou4IlbMheqVtRNapTaplgou1bnCBrQBk
-8lrVkcTFW0hOC8fXFOI1S3PeyaMk2nsnzUkxlaIfbDUVeEViJ5KA++dcfjbk
-c0sjstvyatMb54mn3CtyN3MJLH6OV7Iu5W+rPMJj06tfGYa+kWH75dW7mw8J
-SeIQXEdMjTE4WyVigdi3Ru08t13st0HwOk9BAVs8xAceZ47VtnaQpVEtFtu4
-k3wUDFG/PMmLFQ/5MvahV9UB/KB/vBT+V5b+AT95H+GfFsVf+CfNv/nvFf/F
-f854lr+CUb4h2KErySdCE+XEuzhAPicdIN/NP8DaWXqFqqXqDrElxNHxFfLJ
-E/QB2mICh+X83ULxnc8cV1L8BLLgMRg=
----
-eJx1ksFu2zAMhu96CgI7pANmDVuzbuhOvWw7dCsQdEB7KmSHdgTIYkpKTfz2
-o+QkLYbWB9uifn7iT/F2g4B7N24DCjjGS2M+WaCcqE8bbGlvuYX/nwZ+0Q4S
-wYAJJDlOuIadTxsYffSjCyCY8tZ8tiC+oDuKvR9eQTXwV3wc4JqGJUPnJLsQ
-JnNuYaQ1sktvpTZwpRJGENpuvCTfuVLErDZLC/sxPKe6uD4Bre6U/Lvf1wd5
-1rCneOwDtE4UpYF35+aLBebq5shhPnArZ66EUT0f08+IIReCNqhF+N68NxcW
-Ag2C/IR85GigCx5jqt4aWOFICUt4KB050MxXC70PyBTCa1fxoocrlej3h6pv
-ctrmlJDNNwuTG8OLQ5f8UCPlNaffX73VCmNudT6o0vSCQ4CBii3pGDFWoq5K
-fQI+gk4MrD1jl4in6vijNeZPsaWyVW6nnzhKaQ7LJRS0TDG5fdllfMyaOlcI
-TodRp2sEL+W/V2u0Ex1OOAkXrDyVyOI5+FBSFhWxMOamffKUJUwfamWnMa9G
-Ip5uSCfD935eziep3os1/wBpYwSj
----
-eJxtkU9r20AQxe/7KR5KQQ0I5dD2UlICaZtSKMkh7blstWNp6XpH3T92bePv
-3llLDnYxCFbDm/f2N7NXeM7jyJGwJhj2dYKzvwmDXlnf4x0crchFeL0kg0+f
-7398afD18eGpAaWuVVcn/tog6DRQQJb6zbn1gbnBvQ4NtDfysy3eb9y/DdDO
-8TpiwxmJEagYIDnHgGKQ0gZ0HALFkb0pcEtKA5soOdZDY9TWO4oRa71p8X2w
-EQvrCGPglTU05dBfvRwdKfXqPW5vUbftTQxdrVSgP9kGQu0KU/1ffdOxX9g+
-y3wsovWdy4YmfiUAh9vkG3hdFhlH6uxiA85hHkJ9PAlouxwTL3/O81Wym6pB
-JduZjm2llMOHEt9TaD2tX9eTZU6rr5VrtTF4ToZzesppzCm9tLKP7EiapOtg
-kCy5Q0lThGsXzHfqcKA6gktRHfVfOhRdDlRp1qU40beTvj3VC/ShoXqUJXSD
-9j2V95zHeQGR+gLI7oxkfwFld8ayvwCzO6PZq39kuPKH
----
-eJzFVVFr2zAQ3rN+xdFgsgWSsdEnP61hyTJompAWSp+CYp8TDdkykhxmSv/7
-ZFmWHScZhT1M+EG++3R333cnREheyFwoBLNCeEKl70iMKpIs10xkxnRgCsyn
-DwhflIaXu+U9xCIiipbgVggLRsh4PCYDGI1GFvP1fvXjdlP9Ei72t3IbiSxh
-+5AADCDGhGUIlHPIJULtgslkYrzG0MECRIXSIt1yPCJXtQlgDN9nU7//+TD3
-+/Xmye+fNw9+P9ts/H5+V2P2XOwob2LaDKEPLIXQhtplZ04lTVGj7FSUGYsV
-4zdphDlSXmBlopSe48pz3G63I32FjHx7k8jJ4/7qtD6YjZeWtbNbsnO1atE4
-ZpodbbZhQrnCofNoSSN0eOepHc4vCp0Xusu5KkDpGKXsGEwNCeMIHROmlNlK
-yIWqoRSFvFq4ae2F/PCuAvpCtgHgI8siPoFEyJRayydPtU9zDLrMG10ebbJV
-A3FZPZ3QVQN9Jt0OiIyXW9qZrdMRPh3c7rhCW297NKYat7k1mts6DMogDWII
-FmGwDIPHocc5SNPfCmPmOUihhXieFrKuD8yblKSvRk3LpJ8bta9KYlGuJWf9
-PRWmT+WlotJOZ5FF/tDp5MZMdlpwM3hdrJazt88mq7rpKwdd3f9VvHdr5y5R
-X71ZdTH+Lp29OxeFa8dCoTxaZk7siPKDULrxFrtfGOmm+CUqRfcIiRQpDF7X
-D29hQ8OafHxtHoNv/WBaALQQmh2KMwhLU4xZpSzV4dnwJkyaV8TUYRrqG/jf
-u1Mv+4SdPYjT6w8ip1dfxGmJ5sbUjXffB/IH+YXh/g==
----
-eJxtU01r3DAQvetXvOwWtAuLt4Xm0CXJoZTSQqGQHHIIOcjW2FajlVx9ZElL
-/3tH9npLtx0wQqOZN+89yUt88gckjxwJt7T3ib7mNOSUKFS4I4L1XaTwzNtQ
-ozUhpkqIVztcXeGjsVR988atZFXJjYyhkWsR6Hs2gSC5822QZ/utn+G3YRx3
-2kthXGOzJnwphULw0vFYR4fVEWtdKa0hY9LcJXGMZeEfmeqhV0lGdMyog3cw
-LhpN4lwWA0JOw+UGf2KJvXoiqHMfRDnc5WCub2RqhuD3w267tb5Rtvcx7d5x
-jEBLZkCs1OdQNNyNtsHECaDObRvND7q+efMa/48lShH3cEVNrWesSE4XOSzx
-BPmXM4015NJkzWqWtZ7xOvNMJ7EFRGHuwIQiBNMmLoH2jj00qeehKQ8bOH4a
-loqlbL/Q1JZ1Zdesx1aa6txhMS4dM1yMWeNaj4XCYKhhI1qUxHR0UMFh8UE5
-HrrBvbEWt77mO/JuAz2mL6ZKCsEHLD5DBz8MpFG/4N77J0MX2K2mmlYlZbF4
-UrX3e+5jm4S4rJLZU8TPkeik72HW+7jGr9kWXYyos2v6wpGLiwJx3nBU8/6F
-UL6Wbx7TGQ88PY+H2d7HqrU59udXOiVT/8//JX4D9z0awQ==
----
-eJyFUbFOwzAQ3f0VpxTkVELOwkKUdkFCDGViYavc5HCMHF8425TPx25LW7Fw
-i/Xe+Z7vPS/gmfYQCVJA2JB5Rf5CFuKmha6DJ+tQfZD1tVRK3snAvVwKxs9k
-GUE6Mvcs/+CmJ/9uTWIdKTfFAt5eNnAhLXmwAYKdZoeAnpIZywI47XCAERnF
-9+RgBbe16A6K2+PwWgAUIhxWBK8nXFVHUEFiu6piPzNNc9s0jnrtRgqxfchV
-lVHoKMU5xYi8DnHIoGsuTNFuzuJrcQBXTy/FpuC2zYdBVh739cn/UulhAHnU
-lHCqRfEUEGE/6igDmJyigeLdBzvgr9zjVVjKkR622fw2RC63Sw5nudIEGyHN
-IjjEGf6vnL3Pv8vJ52nTO4s+Kt6VLbSnmLOG7H2yXjvxAwbCpbI=
----
-eJyNU8FKw0AQvfcrxvXgxXYvnkqag1hFUAsVwZts2mlcmG7CZlMtpf/uZDeb
-JgrSQEjm7ex7L282ycV4DO4TYVWYjc5howmhrnAN2R6+txTgic1gPE5HCRX5
-jf0IYDoCSEqLvZKBnIpMERDukGbibn779iBku9ZofeEVEVTo+LY7tMwI2sD7
-8xMoswYuS+U+QTmwtXF6i7ApLGiiunJWOV0Y78TzlcqqLTq0YPg5Ex2jgJ2i
-mpGJ5KqSYWHSrHgviez7HrXWitqVtWO66ronaHJvLuZD+K0zTdrtWx9Jtw3c
-vmTNe45wETExsCZa403KDZ5eHjrPx0R2cOhynMAq3SiqMJGh8N47wfPlV6TR
-OAGeuLui3kxcHtrgjzK09rI6SyCv9Vns3LfGrM7/4X91a7T27ycUpioIRTxa
-8+VysWwo4viYMefZ+bE0WKiH+Q839yYeO64h6gRzA5KYYkvy+HK/EDAgCR1n
-kEynPjE+YSvGeLgYz4YnT/2Pk8hQhIXT2Hnr71MggwZ/uX89/aQw+gGX2kXp
----
-eJx9VmFv2zYQ/a5fcVUGKAYM7cs+GU2ArmmKAEEDpB2CoQgCWjrJbGRSE6l4
-xrr/vnckJadxusCBZPL47u7du6NP6JPdLamxAzm7Zb/RpqWtHZgqu+07XXmu
-sxO6Zl846gf2bGqClSN8/Iap7exadbA2jW6p0R0HMDsOpPo+y35Z0du3dIn1
-8pvV5rQoy2JZuKEqFtnAf40arvLOtr8NeZZpU3VjzXQt3+n474R+tPCWtuqR
-KYTtyGmEzFmGzZaHcrDWlx0/cUdndPHh9z8+zjAp6rgZtjJk6ca+t45ph48y
-XuA36ompC3guJKboMw9PjBcQoeh9pxmWVaecA0IzDiBlEAKXBxjQVEW7dtQz
-qvaO7M4k9JJO/7Rj0XXhDKCsmRxTj//ggUKZygW27zZsAvIUnJKaDaxQsKVs
-7MOK8wilBm2IdWBkp7GwD5mkWIGFsg6sn0CI8shrTz0q5Wl0IgaFaN2GRBu2
-pkp13YoiwV8Lo7Zc3AfqIikQhfNq3SF7Z5FCt5f46MPt7c1tYOzy3Zd311OB
-DO9O83gyX0YjSa0LYnNqLwzW1hSeDHMdso1l/Daax5BDohU+3A+gcR2gV58u
-bwRzPXqgFYERDZJrXo9tK/kFEY86iyvI4YyOkVYrmAAuuF/MtqUfVMU44YeR
-k7Seiccx3kExT4WaWNwpF5hEbyG2j6OWPXCnqNroribbpMxKujKx3SrlQKoU
-R2yhWwP5wMcU/skklp2kpzrQv07iqCe7xJYdfT96D9GUdIdVZeBWmZYB4jeQ
-wJohUA1613vk4L3Q1IYg4QClKVRda6+fuBDkBs4QmjBsrKc9+zKbqxgVGbwf
-3GYyDm6mr4HnIsqgWNJKZogI6+y8kLr+GndKvMsumDYVnZ1Ht4vXoGKar0El
-UgXq1ZNI8rVjWA4VTwdPKOZvDUq4P/T5C5Wj2M6plkOZWhsE4WsehuxzeLyM
-2hpnOxb/YSydnaeGiP5eUji1YOLtvhSbA4sz3GyYWEmGM0c/MwyKn6zlNYxN
-jK+DvnaDltLapCtU+1l8iPoLtIRF7WOrhhuilPsmaWN0/HyCrTL0VYOGf5AF
-aO4Uz0VGsl8G/imf2zZP69o0lnJFvWY0IvpGFqbNnRoM5Rci7WFJdxL4rV1r
-5GuWVIflN5MtCoIg8yuqB9v36Jntnu6sfdT8hlanOSWzRnmMyfxRra3d4jCu
-w/m+YVVtHmIy/3yPz+8v0sHSgv4VcjDsQ+fVeyhNyzDYpy6Mt5ILQvIjMrBN
-QzJogLE6Lud0wd1cXv6khNOQCh2TZagQWvhGZnOa2m5jR0wdPHZ0EeOh9zEW
-iAMtzGZV/G+W6Q5L7EwYMZ8yR8ZhPD1vwPhTIXmWuRG8Hx2dDj5vwaNTIqKY
-JIbXMUQWhrKQHWSLiRZ+nsxiFQkLbLiuXM+VbjQEEMsAVc6N+nVulvtSjB9U
-avrIaf45xhVxMPvjQDD8t1/l2UEI9LJ3s/8AmHc6dA==
----
-eJxlkktvwjAQhO/+FaNQyUVE6YtTBJU4tCdoD1TqgXJwkw1EyoPamyKE8t/r
-JCSNwsGX8X4zu2uPwPqEvGAoBIXhPEWU61QxkxbixsdsBul5d0YHUghNP0Ws
-CU6S76baESJIlDFYnV5bBjNgWV36fqcJIKTo4ntLv5Tx2GrAdxFFmMP52BMS
-qyeIDUbnusKrhRIqC7FXBs4/MbFIplKCHJ0vWcu3xeplvemR21J+ZQOozsl3
-O9umDZJtUuVVymFCFcwWCBUr8OlA/eYq0auHL69SlsTSIM7MgQLuLPxhXc+o
-rZ3AuXL7JBzJrjxQSUIhFHc9sFYB6c391rbQYJSFojrCDmn32u6mntjL6Hgr
-h08sx1VtY2UJ1gXVggrDFl9zaL/He8GHoiIaH1OL0oXfWc2fe9+gsY2zKMfm
-wcWjiycX022tkta5hrOongKGFVNqx3HEH1wu0As=
----
-eJxlUsFO4zAQvfsrHu5KaaWSE6eKHnYXWJAQSEioR+TUk8TgerKOQ7Z/zzgt
-bCVysebNm+fnN5nhliIVPVoekRh9MjFh6F1o4Lm5iIiuaRPMaPbqxwqXl7hx
-nspXdmFelGWxLPq4LRb4/s3QmdTC1UehwAkuyAXek1WR/g4uEvTU1Erdc4M1
-7nO1WsnRUCwDjXPNQ+I6tVTxP734L76NZBLBZHXh5vnSWPup8DikbkhJRPpk
-KcZv5sbWbds83B/ebeUepWawUvCOJllJQVmqBXv5LLN+aakaGujpyKg+wC7U
-DG3QOdoSuEYGjr3RxAB9ZYJ4XWLjvMcTV5IHhyXsBJ8dqeKWI/QdbOSuI4vd
-HhvmN0dnWM2PpNpIkNBvpmLeySQFq05sykOCbNRTkt3WzksQMGGf2rzYirz0
-Nj+fHoTwTh7zq+tfz3+EYHH3cPO4UBJdD32+xu9WrE0/w0SUpKax9bmeAj+g
-X2vLvVMXHxzivec=
----
-eJytVlFv2zYQfs+vuHkP2QBZRtc9Ba4Br22GAGkyuCn6GFASLbGlRIGk4hrD
-/vvujqKs2JHbATOCOBKPx+++77tjlj/N5/BQKQf4I8BKoSE3zVaVsFVaQudk
-Adkel0pRS/CV8HBzWcPO2K+qKcE0cAH0eagkbDqM5G0cp40oHP4ZklvrpO/a
-1GYwn68ultqUv9vHcNYKcyxbK0eP+IKg3YBWXyVU4olOE+DxQLMFLZ+kdimd
-aiUISydaKUF+81bA1lgsom5NIxsf4NGnEF4kvPAqTV+DaAqEL0Mu3mOyLzL3
-UHR16+CXd+uH9a+MldHknfOmfgwnr/qsb+8//PU64a/fwterBGgj/n7/x6c/
-E7i5u75P4PN6c5fA+83mfpPANa7fhqSLF7Jy3XklmhKrMmET7CrZYI0yyFAa
-6Wittabocq+QlAFnqU2GInLGN7P17e1swfQuxvxe9Mfcd77tvJfWcYL4mg5J
-USD0Q24sisjFMGOVKpHzBJyBxgQ0A9XMcI9kaWJqaDDozYxC8d0M/L7Fx2u0
-yXD6LMLlc2bP9EfXcOEIpxW+gq01aD+FtjoQkh7KJ/vRgauf/+53/LOI5SwX
-wyozMkBcxcJJut4QkWPlHZhdA66VuUJiKQUbzzEmwOAGQ9CD0WneEDfK7dlU
-A5fEHjm1Mf6INzTyJye3nY4ZaB+5kDyvDQHY9uZ0+N7S64JAmrbG7ek5ykmS
-Cc5No/ePwiPrWPXsDH+U45S/njJtdnOqFuthLxP4WjCKQ0+5kUDDcgD1Flm4
-ju+iV0+V+dgqjxTuQVprLCtD6qOhnekF2UMtLUZFpShjM2qOE376zZGej77A
-5Kem5A7skRGUNXqyFVb4YAAeeFQqjp6ch+KRuglEXXmasrhj9W5oVJYOsFcn
-gfa5JhvojHrD5hcl/K9yRBJuTVkej41LKvyShj1JUwvsUM1hgR6SSysEMnfS
-PtFbi/F0k0SB+uiDew+DgSwKoiiUV0+4uBXakXBIOT5528lIwYDVrfqRk0Bs
-hCT6ZVSSCyWGoweN74xXOd47Zgc7vn5QYtWw37w1Ggzhp1Up8gqkliQly5hG
-selGLDvFfd9v07iJRoDzIkPT7KpwV0qcs87zSiZDc2cdwinSSWKurjD1kUNH
-9DAhz9hZTOXJjLDFOFmYwVPJAvGT2YKyP5jrPLDglf8n1UD/D1I2VDlYe+ii
-SX9z1/fjjpr60oV+V010xKjreX7RvGATUbo4KPubn2448Opwtz2va4AzG9/0
-kw0Sno47ZDWeK0dD9yjuuGtOmuZldL29XlJmFOOxDb4T0mqxH+bR+aCrK2sy
-4zn2gjGO/s/8FwNGkoQ=
----
-eJxtU11PGzEQfL9fsTWVLhHpoRaeENAHWlQk+lIqUamtIudu7+LG501tHyEC
-/nvHTkABVboPe3d2dr2z3qPvcxMIjybP2lItrjUdtcYyDYEbmq3h6nTPFOc6
-0mXZ00r8wriOxBV7iGf68fXqRSDoam0tor3f2Ku73hbF22M6OaELQKo/Ytyo
-rKpyUgZfl+PC89/BeKbSSnfky1f7gw3N4HUUOI2r7dAwXSVfgSq+yIqiUCu+
-R5G19Etx7CI1Omp6RxZuJyZwUVsdAp0DcJGxkT2hpKd1QdRwu+UZ8S04xrAR
-zYa2pVPKlsqlduyTOiOVnabdOlK6Cr1pptJ+HF1HjzaN0Th2G4L90x1gDmUb
-+D++yriw5DoSuybjPMfBP7GQ+uVS5uRMLxpwzTHlwUm7pY7zij4nrgEqrCdw
-QJGVsZZmjPPhnL1xUKf10ucodrfGi+tT+uJ8p9U/yy1h+RunL6sDbEP5AlJZ
-0c0U+k6T9qNyV3LoitpSBs8h5jFzxHe6X1ouim8ykwjae5Uaqk7PVFyJW6zV
-hJSXVTIcpnUtNq2P1GNRJHUamaKMDr0d4T8u8KmS5IdEmfLZ8OHV/v3OPk+G
-is/TvzRcM0mbR0ZVYWnNFsizoSOVfymnylbjWiG1E5YMG9dKQyj1SbuO/YRu
-UtuRFoKKm4A9md9skOy9eFKX1HhZLiFIv6YbkYXhN3Q8UpRBLeqxpBZ6JtIj
-MAuOwQdNxbqe515giu8fNouHV/2BafyYZFjLgGvpKDA/STLYGHCNQ+0ZI6pd
-g2OkEQoH6cZD2Q5xeZ+HEqsMypbnS5Zh/wCLC22G
----
-eJx9VMtu2zAQvPsrNkoA2YChXHoy6gDpw0CAIAGcAD7T0spmIpEqSdXV33d2
-5Ud6aHywJHIfszNDXtOLbbuGqfSutrs+mGS9I/5jZLWYXNNmz4HpcIlgeutj
-Iu+YGr/bcSDjKmrNO5NNskTJk6HaoqrsxFT5PhUT1DJVRWnP1Jm0lygEfwlk
-a0m00eX4dzGZpuEKbygS+u2g0ZObBX39SisULd68ddO8KPJ5HkOZzyaBf/UW
-uDKtl0mnlQ3AmPbW7SKg4GNOO07aPXifPkKPWLcpUsO/uRFYm/v1k4z+urdR
-B4uat2v81jTHMI2hR5NQxLu5EmQcpT448nVNGEJ7AAAqYQp0SfiQUdHiebWi
-YHf7RErv1AeqBmdaWyJxEEoG31MXuOYwmzzKXIvFo2IuBH8xoljScUvgyNxr
-brndcljQN7TsuLT1IF3NCFtxGjSMRpezB1c2fcXC1IkAUCJSuUHZo4MPkYuM
-XrxIonGliSyV8sCnGZWPOf1cr5/XSurq/vX+URCVgUGSAFD0EzHIGfZxIseH
-aRbViOKybCaJG7jOuHT0iTxuYCUOo2hHgxW3qe0K7EvG92MrKNCnrk+iTQ1m
-j3kFPSSquDZ9A7VR72KGs6Qnql804/lURhBSDmzRN5yjlZSVdAGhpH6E6h0k
-VAIU6oWUyovHU+hdeWokjv6nzTRHCSmbz2lC//stJAJ+4eWdxMfbkT1h4vM8
-bb68q00DDT+JU0qWdyeUMszs4xE+MxxpqqZoOe09dClL7kDvRQFBie9AamZ2
-JceZuKBAqemZ0/l5bG3z5A9QJeXQKQxyZlBvoVkVb3sYVx/ivExXras9ZYY6
-yyXA4UbBwrh1MDiS2Q/j4LQ5bSwO5tpvcdHIsa10+WqMhOKAmT1QFXzX4Q5q
-B9p4/275ihbTMaY2uJ8oezdb79srvWscsILV8WyIzKVvOzlkIwfiiotN/wKx
-A8Kx
----
-eJxdUcFK5EAQvfdXPONCZmDIXPYketKLMF5EcEGWoZOuJM10umKl46zo/ruV
-RGQUQqq7Xr2q96rP8dD6AfoFfyB07Ehsoopj7ZtCyg3KMWEcfGxgI/7c7bBg
-5hx9IDsQAvMBNn1xi39dMObXBS4vkRfFdpAqN0boefRCyAM3vyX/cd8uTUfl
-s4I+VmF0hN2EGR01UNLxr5AxJt/RrOPFirdloMFcn5Cfpoa9TW3+F1c6f6vX
-IdcWO7YOY4/U0qcF1D7QN3IRtGiv+vcTtFL2qal8PUmJfIRQT+r42J7Y/loZ
-HKsmR7Ue9jq90d2tNK6N/gpH5dggm8OEZHPWx5qRWfSeKgLXmBILdLQSkd3Y
-2JBs8OhDwD2XPg4cN3Bz+mypJBEWZLdwwn1PDt0rHvVxPJ3hYrXU1DbZgOxg
-S+ZOeRSdMbpm7VKQrdpZMMnb+xLff3jQ1Br/pwdJ3KMlIfMBSiHEiw==
----
-eJxlU11r2zAUfdevuDQDJRCclz2N7qHdYjZomhEKo5QQVOva1iZLnj7q5d/v
-SqnjkAUT20dHR/eecz2DB9t8dFAJA68IlTW1aqJDCdEr08Dz3eahgKdWecC/
-ous10gJ60GnX4Sg6XaQ/xj58gttbKJXG4pdVZs6Lgi+5dxVfwAx6EVpQ9Wkb
-kJixAZTxQWiNkjn8E5VD4HmdX72v0gljZSJYIsxgyIXAm3DKRg82hj6GgM4v
-wVsYBUKL3RIs3dyg/NgfVK39jf76mLPGSoqANbVyRv4raeJiJ5S+ICpT6Sjx
-5CtjVd3AZ3imDr5cdECW+Na60AojE+WFf9tu1nxPVF5wyL9Zqh6s0Ueyz4kO
-SZ48y2iKhfqKDtI+kFRZRbJHRs5oK+SZBKkNGBTZHyjEdFaRCDm6Q1qc86ss
-+SKpbDC0lnRsygxQVC3YOstW0QfbgcY31J5JrEHaA5Eampc53RcM0p5C4ivc
-5Mmh6+v6/uYdV6ae8O+P5Yj3Lkz4j93TiA/OTPjP3eOIo3MTvt7tRrwWFzrl
-HekgmUwthUhKtj51kWObxoZtx6cXnpf4vsgdUiLbsmTvYaRBgjDYi3nL/pBN
-PshUEQUKAoLqkIa76+lDyglQbsWKmGTYZFaakSad2B11fuL7BfsHG8cz2w==
----
-eJyNkE1rwzAMhu/+FSIp9BISJ2QwDDnssEOh0MvYZeyQOUri4VqZbJft36+4
-oQzGynTQx6sH8aIclHHaxgEVWJparnggXaVW5CKHroNDmJFh50ZKykMMM7FS
-kGKP5OCJmNGfd8/I3pBbl5vdsF4t+a04QV3WEhopm0reV40E2ar6TskWNC4z
-Rg+PnwtshGD8iIYRsosjimGJISBXo7F4nbK/OU3O0w/U32B96IPR/7nKZK1x
-020TI/GxT/iSirsKv9BznpDHXgfir0yIIw3RIuzT7+FS14dCBy91AbKA+rV8
-J+NgW24FukF8AwK/lq4=
----
-eJxNjU0LgkAQhu/7K14w2EvkKhU10MHSIpAK6eMQHUonFcyNtaKf3xoEzeWZ
-4f0YB1TrTKckHOzZNKWuidBZZoRU19cy75lL9wWvN4avlO8qz/VH8IakBqT6
-SPle8LNB9L6jI8RNZ8+KEeu8bwTwf86+bXB+72DHCjG/uGowwVGG0XS3kF3I
-5Wq+bnkIklXLKEnWSbvMg20Qy9Mvm7PZnB9FyFV5Kx9sbIskklbmOms9wlJ8
-AFdhPrg=
----
-eJx1VlFv2zYQfvevONgYbHc2kwB7yuYGAZYAA9wWaIq9pIbBSCeLiER6JJU0
-S/3fd3ekHCXtDFiWyLuPd999d/IEzq0rXXE+8vhPZzzCuHG73/xJ4WxlduPR
-qHVl1yCseXUEcLlewwpO6W798fLD1Q093E5pcboZ0doE/sTKWAwQawRCggYf
-sAngKlkRFMiQOoLvbDQtKvgrggmwMw9oBQYNmXvxKbHSXRMTEoQ9FjB7rNGC
-dy7yGTsyJOfCo45YzsGJn8B0Af2SXUxlsPwRYi3equhCdO02x8pYumkISjGI
-AH3hdHSIQLyEqG3ksCjREu6e6DRyaTHWrmTnT9fXCj5J/IK4DGiDiZQbCNZe
-+3hkpHAlXWos7iE6CIhgKkZgoOMRWDnPRBSmNHYHjzVRJ1DkUjol0cWnvaGw
-QRfROAuPrmvYk03Iu8B0GnPE23T6Z6Iv5Z+wgiMTAhY7IaQv3g6ZZ11SKNoS
-aBe4xMyShb13BfJGILI73bxQdk112Hd+7wJKthRFq2OkBBagX3i0uiX3D/rb
-mg9bo93FepC8QBk75FjUQvH5LLNWf8uVZSza8UxSMP+iYk0SUNKdSpC5zLN3
-6XcOk74FgD4eY+ctF0Ei3OYwLuCciiIWlAcYDulUKZUwFB8mm5BiWGXqbs1G
-RbcNeS8Jf4sPVKfx5JlND2Q7eTYH+BXOfs89pfZdqGGaDaZj8UZbjt5i/PKc
-gV/5UaDTfv3q76s192g2GMTJGlv1Bks4y8tvCrFK1H1xjrIkohN5W+J4e8Q6
-jFJ0Uqob17Ko25ZEVnVWxBhYYAW1TxigiesEPmvD+rj0u65FG6+8Z3qrXFCd
-l1kQJDZjKWuT+1jRrNnHOuP0TR6gdo8kCUtt6TXJnrw9L1MfeGzdAyrxYFUE
-bColiDQ4UmYzuS5om6BXp/PMSmcbFrzYJsOLZNkbkHA4kdd5LGC87kcgtNRS
-3I9JOJPnxPxhvDgipI+MHn97ptRyJlGwMuabbNWroP/9SS6D+ProrJPxqaxp
-LqSF+eHe2HLrqovZR4rYm2Le78D7lYz5/vGPFfTa//mxP+ridU+BNGN+bQzk
-irqo4fm7+d7vG+qn1P/Vy/172T0MkAah5Orf1M7HoovSnDQnnczJafQdThcw
-rXQT+IafFyBP/JYgOqgcJAwNdyTJjFV5mnwaak29RKOaWjDSKwKu1E4twPAk
-dPdBDmK4k4RGzHcoqxmFB9M9PgWYhqf2zjVTofM8PchcGhAoEeOWg5jxuQtI
-dov+5dcXkoSqiSe2uU0mm//dkcGzYSp5T2qfbfOMKzQFzntHBco7MbPGV87C
-SppvTDKhKXcxktujFfJ6jv1lcaDdvm77xtC7kOeFXpbYmNZEfk+bQKuP9B+A
-JsCdoUb2T/A1UDlKLuxr8sR5GxhplmZ/z1Z6Umnr5Gt4t6DvyZw8qMWKSNIL
-JD3FZvvDQFR85e9/Zf/dzg==
----
-eJy9GWtv20byu37FVGpBKlEpuzFQnBq5DRLnWsCpgzoo7upzBYpcSWypXR25
-tKPa6m+/mX1xSVFy0AIXoBY5O+/3sgOYZDzJq5RNoEhFMk4EX2TLqoilKHqD
-3gCmU7iSK1bAD3whFORnVpSZ4JMJfP5DOgGfIirmozs4jU6/gq9OTs7GJy/G
-p1/D6T8mpy8mJ1/DIuapgIuPG/i81yvYf6usYNDPxfKsGOPfJSv6bbCo5KaS
-khXjUsYyS9z7Hmaezccf13ku4rTrVCxLVtwdlVCwtZDMk4DGfrh6c4U2xjJZ
-QcU3cVGyFPAnXjNEKWHw8PbqagdoGKQZ661FWuUMLolzD2AA/2SyhCLOiOx+
-xTi89twFjKNBXDGaxyn8691lhFRJHpelQbwoCsR7iU5L2Eai2/Gc8bSnmF8z
-BtqIVhBaTEw4Af+ZaMNPFygMsgV8/+rni5l6U+fffaeMK2EK38flKuLsvqcO
-lCkQ17YHJdzFecXUacoWULJ8Ed3chgpj+I1jdaN+bpXamtMbtsg485nBfSZX
-COjkONUsR/q0g/NUn1jHaNeg3zFvIalKKdaQszuWlxF8WGUloMiVSCFOyKcl
-lNv1XOQloKNLWWR8WUaai+EFDTdGmuNMcwyDd9tgBMFrBcSnyaWCDxscXuVo
-I8f8xaPtCLaiwpTiUG5Yki22TR0xRJQIE0PqdHipIj3TkT53YDzYFKwDjAcN
-TZtnAO9QEa31CLTOTeLxEeooinrNKDWd8iz3nABQMFkVnKoCSzwqhJCUeSYk
-ZfYHoy5zYpAXGIaMnHCCUjycnlWcY8pgyPXRTXYbSTEr3Sky1gh/wvg/5ZiC
-qt4/w/dfb159+cvt2OGCrkz4sN0wVWgj6A8eCH0HmCZcSJ2SWQo/VfMtpQF2
-IS4Vx/4IY5jnrHDsbIL7T6oTRKlKeOMdMN7pWUxbX5gdHAUuspyRgBFQL9NZ
-TMVa1zi2AeUmzbwZCKKZYR+cEZvQ8rKRSLHYEjkrGGIYUJzIKs5nRAdvRFKt
-GZdU9uFbpFUPjsmwrfK/TSIr4hiuVfV0KJuh3xiiiIWx75DSuv5C/fNXlPYp
-a0X1P/W8KbK7WLIGvKlMh7iK5wy7aatX1gl0iXroBHIH/R8ZtnzdZqXQHtpz
-jMuhm9Mo+vL0tpU+zgCnm2d3iOPaekgz5SKlwkB4xHJGLilvgvHY7xuBFYFl
-UhNFPMu/bZnkjZ8R1FY1uxAYOapUdJKnT9hExiQok8Id1irUEaPfdkAcgWez
-gdbNL2waXh8Et47Gw4hYnKzCwI37YAgPj+zR8nXwkA13h8n12tKi1cAnCfVC
-sk+r4Y58Pwv2TWfHW20jwoa62bGZ57nGSe28ZS7mmHtWokegTz4FkxTywmHs
-cOtUA7cG1xSs7cZ6HSE3bh73eIabp9zYcsSneJKmCosk+yh9x87ZEsdWgx08
-Uz36g8D9IkrEeh3Pyk2eyVBT17LKpPLmEEzPQbJjFSlZtMaWFC9Zo9zOulrI
-fkW1AtQyuZ0whI3mYGthkVq0ZtjHA2VgsEdpkH16TXv546t3F9dRxlP2MTRY
-Q3U+wJGA+7Pe4dCDGtMfoNp/ahJj79a+DfHvCM6GRJ+sxO8McNDQFq1Oa2qK
-nrZXbxN6dXiisryMPJB6KtnqRTSiAUmb6EYFdmdHhufIp6XVwhzj2uNhQCKC
-4W0rDuopOC7Bb2ZGAjmd5aldnMxS5TNW4syxxMxsHRMoqCOsHHswPwTPt7NY
-tlAMNHAqmQjra86BzO9fWWNgnZUlLRyNdUzVwYtbuwj6ifhp3MiwLm4E97kd
-zsxGqivQcGgTQr36bJQTTLeYwo0tYINuXNSc0LT7UVFlHA60F0M2dCS4MnWU
-IZWgh3LYolgV2wsf2dM72lTlSgk4uguj2utYuXpq27QDNTq/g9aNfwDzKstT
-tQwzVM7c1GznrRYLZFoH88aW4+CBwraj3VCniU/xHElGE2XD9Hzw0BG2Xf9g
-3DwOTt/puXt0hA7iE7tLtvHDCu/aug94HaeW0IfnhiT6TWQ8DEY47jAlDUxd
-oc7dDUrPIeUlYtGcMe5DAs2Y+OiMqbe+9wW16zUkBcPqxBpxDWWCHo7dLNq1
-62YvB1oRimxjeOaXAVrmZ1fLvBaL453PS7DWlMNo7E26Q20OjjSQty6rDzeQ
-s84GYrPWz1GKdGdO1IFvRNkYQ8EOid/wr0b7bwe7c/VQD6gEfXN6b3P+i/uH
-uhXo0aHGj/KCvVq+EUxffRcxT7belyK8TJFnIC6W6toHsoh5qRnawdHOgsPl
-5XVcFqFGRTavJNMjfube9WpZf4HACU8BbRgWmU9r34JeBhy2kvPyJfQnqozV
-IT70p+d1WVfzcKOTzmq3c1o11o7/jyb+brrz3LW/Ug7gupqXMpMVhivmW8yQ
-hRA7Gk32u4X6tPfexo+6uzDXUBcmJxq7eneZ4oFfOnY/cj7xPhA+KmTk9hkE
-g4fguTp7HuwCc24N6gdkNeKSC4L+8T7irnR246FRqpdLKtv9Na15xdHkMxrR
-gof5CNjwSXnuGth0yKFvEU9scFWRtU4REjStuVYS3awcEdHft6OT4BN2xjhN
-M/pi2sKxYLeaFnGy17QJ5oxze3/HgD843vPIk+8eDbZ9bxJYTfSvQVUvPt5A
-/c8CLu7VGud6q13EEVC212SHY006tPUh7dCWBH/UNgCPaFfauCsJYfkK7d2p
-259E6m6jUyzcy7H6PlxviFp417C2PUU3EvpL//0PSjk3Ww==
----
-eJyNU0uP0zAQvvdXjNQDIK3KhVO1oCKxB6RlL8AJrdDUnqSmjqfYk3aXX8+M
-nYTCiUh52OPvMY+sYZvYs9uuBvZjJLjn/k1erQDWa3vY+u5MSeCS8VRgPAHG
-CHIgGEJxFCMm4rGAR0HAUtgFFPJwCXIAhMh9H1JfqYpoZFCuDXwU6EkKnBSh
-hzHzmDwIV+Iz5qCbjocTJz1egLvmCzD5RnXgMXrYk4VCEspUpOG5ELhMKCoL
-9CSUSuBUNoar2A/m1HESDIn8FpbAt0hnio+g1xe1YbQ9Zai7pmPeNB+gc83h
-qwrdP7z/dPd5AlaSq0vtaJIVhk5GjBNVwoE2TVEyOsqPkyI9kRtF3Vqp3BEy
-yZjVI+yf4VbkndPSU759rZ+AlfhfySt7WuJQIIUIoVkP6cxHJdNKalovClRx
-O9RhLLMj62MtQXXE+x/kTEnlLrj0S0vDczmsvTCQFt5PFJbfHwpbXVXPKrrQ
-TZYmXDfG2LCGs9Uz/NSyhc7G4X95KtcDC7XwMgoSBp0RHHSINWUEwXLUhnR1
-bDrOA4qOkc6JErioeS6jv7JUNJq/K5dX3W3t4w1sW/v0w6qmL/OorzmRCvRk
-ExokaCK/6OUEbRncwMxgBK9WrYm76cxuDu7qz/UWpv1rzAxpyrtZ2Q5XhU0L
-TIu/jFH9l+xp92/keU81
----
-eJy1WFlvGzcQftevGEgFJAf2Jm4CBFWq2kaaAgbcJoiN5sEwBHqXK7GllirJ
-taIG/u+d4bXU4aMFatiWdjmc45uTHMBYNKVsKz4GXanypVSzGde9QW8Akwl8
-tHOu4bypFT7j7+9cG6Ga8Ri+O6/G4IkLfXt4B8fF92/g+1ev3rx89frl8Vs4
-/mF8/Hr86i3UrKkUfPi6hO+Qw1lr50ojgwuuGrhSWnMDP0p8GDF70M5KU5RM
-Wl7OC161P/V6mv/VCs2hj8Le6JeqtcvWWp5962/TaL5URlil1ztLXuOalXtX
-jWVWlJ6m3+stVNVKDhe01gPA3wFccg45KzQe35eSGUOEhB3gD7NWTzVnFcI3
-btiCH8K4bqUMX5fMzvFD8jsu3aPmjd3dyKpKWHFHO6xmJX0mq03P0Q+CVAim
-GGBAQgq4mqOmzFh4DcgfX9EmQEljvzFsdzqgP+jnZwXnMGd3HJm49ycwciGw
-EgaFnw+lBNHgs7CwWINXe2gOAquoLnE7WyCr+OIkEDgjclmal0pXgCKAf+Vl
-azG4PBVKNlKtDK6JZkZWrRD5W2EPwBte8Rp1QfZMir/5aNqhO3WqTxqB0E6j
-ChOrW1pzzCc1k4Z7tUmvO+RRMRIeXmmGBsOZnrULtPCD1kofQj8gvWgR1IAS
-SewfAoasxBVRQ9KjQPkngZ2LoCulpCmCKO6VHPmPA2gbyTGC/GO+NdETz87K
-qHsyocSYsdwhKbswBDiNO2DS6RbXumDC1eub+DpiRlvi97BWcSanK2Hn0xAH
-rCl5tKKzFuX/4nOsQD+Jhk8x/OaqMiPDZR0J6XvhHEKS3Jew8jll8HUy4AaJ
-aIcj4U3VhcETGGGYWpObX5ilxAh2XnmvmlrMxmOv9CfMy5+5FAthE4K10o4F
-RptnFd4/FCW/MolbFrwCyvIUHNfHRXF0fEMxQlwKvljadfQymZN/LrW4I3eO
-N0yLGf+JaYOJ7rxK2klVuuAlDedcMF3O14eIlTUuHnyaHgILzAfOiwbIjT7N
-IXNmB+tzfL1Yk5EI7ul/A/c0hKbnUyzVMiwgTOGdB4qqx5w3oJVCTxgqPxXG
-5jo54zQo0u+nVwOsgUiKv6rhoGqHxqzFYthYzgkcZuEzMgyJPSPEfCJVOV+C
-DzlfhIKPG6LbsIrsKBDU/kOJZvQUCgd7xHSxX2DmVFNC3eDjyAnYtyNTjHAL
-C3kViXFFmMQC7kqF934NjQrffbpWnReykuQ9cOoJJ0mOe84Q6Sj83kx6ZhvC
-bIyYNWjfelrOhayQWVYedlJhbzjGlLjkNqt90ZY1Rpeg9FsX2G8oZRAhVte8
-tBBFFinefdvYLWaPl+4YyJs2/9tSGFyI6qN1GBgNk/AtNpzh4FtKr/shJTZY
-BYNvF7+d/frh8tqLvrnv32/oslknO4hCRRd2HVMigLYB1xW2S8Da4jplh1Fq
-p6PUGRICj7SN/wUHzOsopjN9Q/CW9as5d/NsZrNrOqaA96yBW+6g3YwaXrNW
-hpo/INgdIFRLsWfjkIYjY1P5OmusdqPKkEaNoSMZOuphh58fP0a+2SXkQg9M
-qV0yFLHREIGUb6BPrLGl0IfPRvqWaFz2eQW7nPu/sCf10N7+vas5ubLZQ+aB
-T5KTWZVqhhYHPxPCMZt9CSD/OBn5z4RQqnUZeTRxK74/dkNN5kq4XfuGqWhU
-rjlyKXnye0UNAgtRdLNYZDHfTUnouO4h6da9Kkq0MbY2jMTRix16VBogQnJW
-VRn3XEX8+rCWW/rtF+QHFzc901yQradwUYjnyFEUf1KnUfXJKKF3ACdh97iD
-9Nq9uema0ACMQo1vmRHl7hgNvrVYUPsEJKI4SV2tlzxOUXhexCqNQxRtpEKV
-9h3CDDkOvqnCnbru04SVpwHKVXkD3C/kvWplReFIjbaTQMHuDL0f7mHeZLNB
-5vpla+ag0tL+ZEKH88zlJAjV9CmFtWUzyVJR60SebnkxS6/PfKGw9mbhVGu1
-IBeaWOxSfDVU2h4PKu3YPRhXjs8jYdVFjBvd9yJWcYln0icx84Y9hJoz8gnc
-Ng4LwkxpUDp5lxXKtDiZjBS1iGiq5rbVvshSKIuKLkUcRSHyid0xcfcD2Thp
-5hRehDGy0YKTEW7mzuc1xDI8zqS6ZbJwXM7xVA2mXeK0hJswMpAJFtXGhJGL
-iI6OHOkX7g+kaa51RdBNsXQkwMzJVLrl6DzvbmdFd2UxIE26DJiFw4PQLnio
-DISWESdEd8FAvPDPrpS/HcmGawwOp4iq3IXDwK2/CAIHe4c5OHLJZjKNC9EY
-v0b9z/EAOnbzVbz3EGlkd+BilOB6gIlOSvhpPEL8qzB4DCK7HQyBWwYP8sKF
-MkEeGBeZ/gmi2FA9TWyoaMJ7Z0Lu41rgmFDApcIYiiY0GdidCYdb2mCEql0t
-vlDj3yRM+3Gwdxj2wtXQGx1bvhsKzejF9pnkwr0/KPxhiTem1fFsRA7s+QOj
-G4P8iOwukTAsGNUyf3YoEV/MQywlbrGgXPB3YpmaP+YXZOHWES4xtLAMYMvY
-c6uTz+DPNAOV9Sbs6ro9qZ9dXDx+EZLdQgzJkcONK4jNdZ+92xSbsxcNjA9M
-Xw+UKFd49szwXpo3sYAzTGdf4lN2+ihnNYXXSkgZ9lMvRkqMbalWO5ywTs2Y
-rtxNlD8aiHCUMkWnXTgmMX/8edfhybrTXhAXz1zUS/eOU7VSyIGni4m9G8LM
-/Cza7nzyXPLRi2dRxn6YE9N/+vsHJCpobg==
----
-eJydVttu20YQfddXjKk0tACFtoy2KJSqjgvIQAA1AZoifQgCYUUOJSKrXXW5
-lCLY/vfOLJc3XZwghm2ZO2fOXM7s0H0YK53oeNzrw0c0eabVeAwv3iZjkHq5
-RJOK2Gqzj8xiuIVRNBrBzfX1zdX16OrmNxj9Or7+hb4hxs0KixymXzfwotcz
-+F+RGYSAOH42VwuRY3B4aHCj84y5G1NYmug3blHZsNdb66SQCDM+78VS5Dn/
-TXn1ANqP92Wa0K/KITtAH3YIO6EsWM31QJamYLS2kcQt/D4B/nj50pfaOvTe
-f/7z79DhIcthWQhDVIgJsy0QEkwzRU+LPdgVATY6U9Z5kgVylGlUQuZrtCud
-5JdlnIHDABi0hVGUUxU/y+cc7NbbC/Ws+1LqBWc8gb/rVn4KmSD8zKWgPBfH
-GWEygff396BNw+ROvJclrGxie8wQ2kmgSqpG52idKVNL8D7cJlVIye0QhbR5
-tzffKC+lxKQSa4RMwezd3V/TD94CoPCrdfU4O6UdUt7h42Pr4G42C2t8oSi9
-OfH7GMMSOKgBbE6FzPE0gOs8BwyFlOGgZbamaFl1moZNs/jTN6zsb92rPya1
-DHYlLAi6DhRHs6ERs27e96jje0iM1EGPiKJoNv04nX1gyYTN8jTDdvDjFvOd
-6A7OgWd71Bq/UrFPZPxcC/RNUEe0Q8la4K5wnYafQDXqnbgCFPI8WUfb8zQX
-5U2iRVJJeNG+SSenppmLhrl1ne5UAkrvhjQMtMEwMwkkexrJLPYTU26fzNLC
-zi9gzFSH1+vZmV/n1kwCRvtS+g/OHiV6p2Ja2E+XibBiojI5hI3RG7EUFpOJ
-K2PwmnMNKiq3o+e4FdLRnpr2cksfbQie8mqNrtBg1K3hdAXg4/Zprrf6C0JM
-MhE5L3duV4n2xoRXtzUiprDVZqMnNOxEu9NzR+4QbiEoyQIYQ0C1B4M62Frs
-aelv+J2zobzppSKgelNFlG+sSTNhli4gpZHvMhuvjkZGJAmptkUelwt/VvId
-7n/wcXymwRsPO1bK5UCzQrM7CI7GlTUh/59e1bw/KntN4ApqzFyvApcFBWKC
-FhLJs/UIzk6wfYYyYZ6F1PGX+ZJ6om47wIqQhmfquqxwd+kTfhq6ERlC/6HR
-kw6ZvJ1n0wb+eqMLuymspf90IhTxCh4e9SPocy0dwFPLuf/Q6NGcNwFeffd9
-6Az4M++dNtOzd/X2NTia5lrWu6QTq7PdfjgUsxxF4o/q53+ogChI
----
-eJxlUstqwzAQvPsrlhiaphjn0lOooTkEemhpaaBXo1jrsCDL7kryoSH/Xj2c
-pEkNlu2dndnxSDmsSDfKSVwBy75Zqn5vkEfkLGP8dsQIc1975IDskef/yrRb
-St6pXsiAZl0vnUJ4DWAGkMMWEc4KSbvknYcaJYwJjdtYhKfw7kd4CEBYyzVj
-EIWVY8piNYc1jEKRhM/3tw/wdeicsbBDMAM21BLKMnZKbIE0WfLdP3hft04p
-LTosoPYsvyocUVWaVAGRcHPVQkrPHrGy7ALLsmiwaoUy/utONA0OdjExjRuQ
-r2ZE9eKichI4MZ6D9Sp6OWlYwbZO+dwnj9dDUjilD7EmbZG1UHCYXeKLAih9
-cpAfgv5xdoxU1DKlRy28rL82dchuEp02P8aZdBLF/+XUcRPkg+C9WZwTY0HG
-s5221OGGuecC/njSvQ3hDH1wVqZNIwPTEZKzAhqh1DQ0Ob08wxruX53K05U=
----
-eJyVVe9r2zAQ/e6/4qgLS1lw0lK2Yeg22AYr7EPZxr6ULqjWOdaiSJ4kJ83a
-7m/f6YedNLSUlTQJ8t27p/fuLjmUSnNdlVkOP9BYoVVZwuE5L8Fgq61w2mwK
-cz1ewXFxPIWT6fRkMn0zOZnC9HV5Oi1PXkGFbYOdhU83LRxmmcHfnTAIB1ao
-uUSn1UGWLTXvJMIXPT81WSWZtf77HE2WAeTwvcGdemDpHS0w+MxsA7oGGWIt
-LHCDHJwG16AwUHdSKrb0oYoHoNboleAht8Y1BajK0Z2szzHIuwp9KlSaI1xL
-zRwI5dFPzSTWoLsWiZKwEJnSF9u1xC7WviYMw5RtmUHl/AkqDp0lgmNoUFEN
-Qbg2wLCEsRauoVLx0gWc10R5oxXCQum1hUavPdCSLTxBKtgasWIOxwGEVIRl
-DPXk6BVBv24lywcjgf6EqmRHV/zWWxBOmXNmZpBxNFAmScOD8MaxpjzhBJPi
-D4YjgPe98mfBi0LhOjyhG2dDlkVZF5dXo96Oo5QslHWM5CgSyGUfcPUkxtkA
-Mk6mPw9G3OLZgJpulJNAzghc+X6QEqpGSE6e+Y5iEO17SICiZn3UKAb09fNt
-esNWsY1SB3gW8JJQpFgKR+KS0Q8bNGFwxvmG6Ma8IuVdRKvL8oNWtZiXZWyS
-C+aajz1kAqj1FrMXyFfbFyeFA2wESj4E1n1lYWdGa/cO7u4GPDj7C5P8NnC8
-nySEqOaOVzmsqcWB+mAYSoIkAs5oP1587K++oU7ewBz9eNFcOBocitAJgSnA
-G2EdNScdN2hEIE9ThVjE9l+iazRP8V3LSR8bJ/eBh+liNDlSqEUS3XN7zFzq
-fGvFXM1o8p5y+b8FVnjjvLBpe/TCDs/TeeqU3vqdjJZsDtL/zG+TOz2B+8PH
-bBgGlvaC1gsbOHtpamGs89cVCvkOdxZFe0FLxddKuZSkhPRElF9Dte5oiY3W
-jagaWlY0Lc77TLvO32d3FAc9qQ6feVH8uh557F5FZky4qmsK20pahmHvP9/e
-ifOZZ5aOiBD9bhBgYWkrwVuYAtd76lLCdhNe+thfWqjRc0WPrgaca+qNBXRK
-Im3VZAxx2NroQVvd7tkB+4snix/9/z/hSV4D
----
-eJydVE1rGzEQvftXDPFhHTALgZ5STMkhlICTg9tLMcYo2tm1iKwxktauSfLf
-O9JqvxzwoQcbJM289+bNzE7h3lBB8n6yp6LWCEuqvtkJgNTCuXCqMBwBprBC
-X1vjwO8QLJEHHV9zeCrQeCWFBk8pJa80vQodMwsswaEu85D0HWyEgRUfUqwy
-zgsjEdAU/8MVAsZMDXvHFRFa8MTwEz2IBAsn5Xd8KmutjdgjlJb2DTceyClP
-9gxkwSgNqkxJCecknMk8lFSbIp+MZaw3s22LeRufQkZJVqIDaVF4RQaoHJgR
-8JWHgjDC4l/lPJzR5yn9inuc2bEtFlkoOguqh5eNMVkCW3XVrbugTXwLZqUC
-l+oNk9PrDQuSePDsjfBBpxXKcS0vnPhoLUX5qZBrxlTovzqTerGIIZeCoDc+
-5zb8SJfQKOgFzOEm8WfT9w7jMwNDrZabOfD86NRB6AYDho0dGPBHoS5cPxzC
-FK1WbiXgEXk60oUycWzc2Xnc5+OiUchdIgp5Ld58kNs3pGtr3ry6ruBzkPMl
-+6KWTv6IfTuKvULWRB+FrhHeP5rLj8TcnD4vXXoyHq3hvQzvylSxxvg1AUn7
-AxneW5fDgwzz44CMPsOrJvnm8oTwm1gpe1fLXQAJxnLKvFkU7Jc1lF1ApgN2
-FrtRqSO2e81DKXinan+oPSu6nDzO2qokdaaZQi/u2gFs73kE07wnks14+cKK
-ptDhLHZ3jm2ZLV8enh9/rSPFJi/oZKRw3K5o4u2kb1b4D79/1xjJhg==
----
-eJylWHtv2zYQ39/+FFd7g+zWlZM1QDGvTlus7VasXYulGNB5nkFLVKxVJj09
-knqJ99l3PD5EyY8WXYBYIu/Be/x4PKoH41REWRXzMeSxjEYbtsoiKZL0sspZ
-KfNOr9ODyQTelEuew0uRSJr5jedFKsUYvn4Zj6EtFOaL4RWchqfw7cnJ2ejk
-wej0IZx+Nz59MD55CAkTsYTnH9fwdaeT87+rNOfQzeTlWT7C30ued9vTsirX
-VVnyfFSUrEwjN97hxN+C51dHdeR8JUvu6XCsgfIk6HRWMq4yDq+UYAegBz/y
-soCcpQWP4XrJBfzguQtcoEUCVRWwYDG8f/r6VYhiUcaKwnA+z3NkfIRuR3xd
-YuiQzkXcIe0XnIM2ck8knaL3SPOXRQLAkydrlrNVARP4iRXLUPDrDhHIZmBA
-ZI62BQVcsaziRI15AgXPknA66xPH4HunakqPGZmnNT3jSSq4rwyu03KJE3s1
-TrTKoabu0TzRFB2ApnRUFaVczTN+xbOiD/o5IB6AnJdVLlRaECRhLmUJaWJ4
-wiL9hyuknhjmBOOdQirgJAxDj8eQAQS6gqZo0jSdhaWcF46KijXDvzD6oxgB
-aqPxHRz/OX16//fZyPGChga826w5JXoI3d6NYt9CWoCQpQ5VGsOv1WKjIIE4
-FiVp7A4hYlnGc6fOBt5/IyiGMSXCRAfu6mfHctq8p1cIUAZJmnG1wBCxxeIC
-cAcTNKEGGOKQ4qS1NzOhhOYKj3OlqO/U2WSwqKxYNldsfXiBxFCuufD4Bm3D
-3ssKXRVkDtp3UeapuNxnUorh4cgjE+PGQdMK0tEH/dxrmk+qjdF/9L7O0ytW
-8sZ8c72GPloXS6VDJe3cufYA8STSzBCoDpCtyF6tuCgLX/wGbvF569KOg3DJ
-ivkHvnnch8BXGwwAi2Z7JRSYNtlmxLbIOftg1G47Ds4+Z4hWPnYra/R6hWoI
-jtb9mW+axowDQrTGYqx2mPIJnI8O0NPTMLx/OtvBcswjGXNKYL9hVZ0k9Wzm
-oCEUJS7XZn6dc6OEqNOgnghmlpcIru4XwSzkLFpiHuT61ipy5D7I9WDrS+rD
-yRPLpBPTNOXOjow+jw5JaaoWhEpkHCv9jqTLlgNwOy6+//h+vGIigw8Ao6JV
-epFpGjTm6kBeZnKBG8JbcBroueM8yoCaw5puDxW7aD1heQ+6/eXHhef/gl8i
-iD+hqogqr8DD5BxKfmwDlTxcYS7ZJW9sh7P2dtiP9lbw2vlENxoZVOxoMNYE
-DB9ZHsx2JAyTL6dlXv3y9PXzizAVMf/YN1wDovew+mJB0ac1xkhz+kfSOykx
-mHS2YQ3V0evj7xDOBko+WsoPHLCmq8aIqLW0yop2VJ/P+jD+BM59sFBTYUOj
-R3aT4Yauu45poA6kYKY6DxyQO8HMbTcj+elN1qwNZl0VI57FtnMwXYV0i5r5
-EqFj5tWrm7eeK0Izc1JkmzkrDc2MHLUHJui6lzyAwu4bazKs0qJQ522j5yBM
-PpjZbsfHxudpU77s06bmfW2HwdJAH00NBjYzNPTVUBRM+zOBqQ2GYTcxah5u
-qr9ROEf4GrrXt7E9O0Ch32M5bDkjnD/wmT37wnVVLGmBA41d3aeuGMV0Yiui
-m+pT6t2wLp09WFRpFlNPx9Es0+XYglYlCWqr0zVVyVXo792oxGzVNUEDwZe4
-hyLDMVk/Oe/d7EnMtnswM54GZ+/k3L06QTfjC7s7jAkAtkFLvdULf6vVa3Th
-nt22f8lU9IMhtkjqZNNzdBc4d1cBXeApTkpFs6a7G5mq6exoTa+bore5qpIr
-iLDVKtU+cKVhjDFmrvZv23tjpxlq5Sg0GO3DXQ9L5JuPrZaDLSXHq5iHrkS2
-DhbMiVoqkX52TOlKpC1dcKREvHBwPlwizvaWCItaH6Mqz/swgYbXiW9k2Tii
-kt0nlYMvTff/zvbes55e0Aj1zeWthf031zd1GdAnAp0jFHmDiK29Rj2TXF/m
-EiaijXcnLyWoIAHLL6kThzJnotCK7SnRBkMjquvloJkLV2DXS3uw6hslHaG3
-9YYQ/CM1Vw3HQvNp6TE543hJ96NH0B2r7JKf96A7Oa/3dLXom28HrVuM272N
-rqkHF9WiKNOywsAwscGcJFJuVcV3d176XvHWhkrVVGmOUheRem0spvv3BRIa
-R+QOUX+puTMxl1vDZzsRiiHc3PqfR+r7n5LH5e/g3a93E9hg4DPYBsP98egG
-KmgoqCIYdI/ve++KYnsPdfTpPkxttky2epaGIDajq5XEC342dCqOreVdbJqt
-0c4yVZ6CmcfXujPS1l2QHndiDRX7Mfs+07wDHtmGDKxFzZ6MxXFaplfWDTus
-u7ycRbwWpmHtUOjpbpyuetHDbU8Wegu7V8Ntx00BzxL9arhp4LP26JuBkNfU
-KdW3Y9txVWVhvPFvzh7VolrcajtBhKobWbv+mpga3bX+Vf9fdf4Dyq3zCA==
----
-eJylVm1v2zYQ/u5fcZVbxJ4V+a1AMaFJmjUdWiB9QTMsHxIjoCXaYkKRGkk1
-9QL/9x1JSZbVIOswAbYk3gvvnnvuqD7ETCS8TGkMUTRWqUzGK6lyYgxVvX6v
-D39SpZkUcQzPP6QxNMJILcNvMI1ewWwymY8nv44nU5jN4vk8nk0goUVGSw3v
-vhfwvNdT9K+SKQqBZmLNqZEiaC1yuX6pxkuiKa7mMi05hXO71usB9OH3ektg
-GogAstRGkcRAwom2KykQECXnIJe3NDFo5CWNIa4ApHQFTDDDCGd/00FGdHb0
-sB06GRWpu/fhjK6YoGAy3CunJpMpGqF/XS69UyMrDCAlhkSNa784wFzoNypM
-26/9d5lcsLzgdJdPoTDZhGqQpSlKA5zd+a1jp+7+AC5Pv34C9LumSpCcHsMZ
-EfgcwiXDnL/KJRNaihDjscvPrJWzPJPoWUgD94oZ9IuYUQ9XWkvQskDEKuC0
-zaZBrxvs60fwrJJuZQygC8WEWQ2CF79oeKGP8XctghA+ku/nqMjPqVibLITz
-T6cf311cOduIW8kihMpHfXmhzTqsni3oj2L7G9Es+Z/QxvABUiWLgqaQb+BS
-yjtGn1W67vZZ7TwBW3lQLS+xQ55wPFgxTrFjAGkznQ1jeI/gF9IQI/fcn3It
-Q2BYMlvaQlFjNocOT6zbBrsJ+8pgN1qVNTWums5wVFVyZGFSGwxPrIFyTaOG
-Du+R8EDUuswRRwy+avtGPkrRdzbCRsfo7iG3G3LsBcwN88woaEOSO58wNkHK
-dMHJJuo1hOlU4HWXQa5qb94srVrVQkdQsSTo/WuPoq2LEI2c4Cp2rwuQCtz7
-gXs/cAuvhpGRN2yvuZ9k7bJcrdBzTd69MH+Ou/vU3TF3b4cRBu9FDkgVCcZP
-4ASCAGIIBv2HtvBqstgOgyGMIEBhx40P7cZ37qDVHFYdG66l3qBQzThfEe0G
-GJAkkSq1dMGiMlx1xYy9amVwYRCVtWUGXl8sQtoyEFsLiB0k6I5HlW7DUav+
-pdOFmuWME2W3SmSOFEsPLcWA1ka6dvPZ5bW/pSWh2RTUEtLnHdo14QTVDnJV
-Odi7mvaI4FTgbsQSEw4P4VQpsonhahrCLIT5otchSY0v3uo6Mrd5dMdEeiNX
-J7uEGwJg25ZKQPCWlOvMQP/B6jtYt3H1llOtyZpur8W1CWB03Zl7bodl3W5X
-kyiKPPkX0a1kYhA4uzoi7PNuUL5i3YhQZWdCEaR6/jsA68NzP4nHoq/MtjXJ
-6g7rjOSaZ9Xp4ocIdgTckw0wnIb2HNoNIGhP4pWUdl7i2TudHddT1ZZpHsLL
-xZP680b/YXp0HEyDbbOFhwWZL8WBm6A1AjSN4LbUOJQt1ezbHxltTXdXYEvy
-Ztp5gv7347EaNNXocAm4MfHzUyL+cUr4IXG83/YtN+5TpSbHwKMwRIc7KTpu
-qVaodEdXM1d2ha7PRdd9mLutsv02cgCn/mOKtD7h3MFmgbcnaAj3GUsy5wFR
-TkqlMAS+6RwlDeb4cUZKvgf6D5pVUPb2D6sYUZ8=
----
-eJyNVm1v2zYQ/u5fcZBr2I4TJU6boFDjplnXosWadaiLAYPjBbJEx2woSiOp
-pF6R/747knpz2m1CXqTj3XPH43N37EPEZSLKlEUQhocqzZPDIjaGKbnOVWbf
-ev1eH2Yz+Gg2TMF7XLCS35nSPJdRBE/epxHsWoVqtX8H0/AYjo+Ojg+PpofH
-z2F6Gh2d4A8krNiwUsObrwU8QbCL0mxyhVjwgeUSPudKMQ1nAj9elTeJDpNY
-GJZsQpaWL3s9xf4quWIQiPzmmTqsnTZvQQ+gl+VpKRh8ICX87sOcMdg1+U7g
-qJuIWGv4za29rdbgDH6KNU9qAXkBIOgLdVNmTBoNJgddKC7NGm7ZlqUkSDHa
-xPA7dM/ITlurnyvp53iFcc7gmxUDBEkAs5cwZHeIGMo4Y8P9aul1e2ldCtFd
-Tt2y2851GpvWmmmbGhUnTC2Ols161l5H07hZuuzA5qsvGPioURw3msJpfvj1
-4vLNfOFUBP4TLUcDp4P/h1b00OTxMjbJBs8eyQZrrrRp5Y7JJC8lpg+TGsvU
-6mhTrtcQK1xIgZvQwXiwPXgyBa5biiuGW2AtzFxBEABfg8wNxEUheEKH0QAc
-VwCNzQ16K8hSckGmVBhsqBFCtgyfVoaDftiHjPYF99xsuNyFamyeVTaNxYbT
-X3Sfy6GBUjMYcTPUzilxy+kVKi+YEttxA3byOHLHvkbltJudeE0k75r8OEFd
-Dn9iNwyreQaHo8Wfg+XeeDQaHJxfpXujq/AqnYzPx6NF8jo12aUYLMfj81G4
-Nz5szj1l67gUeNrIWHA0syvv5x+fnx5NETcY/HEwyA4GKQzeRYPLaDAPrIb9
-g9WorhWLU4w/8iW9DxGhXe98Zgx7Tdqq3AS7kfGMy4XI77m8gU2sN0irqqhH
-jNv2F2OmFK3n9n2brXIxjjqkW5wZ89L7PDvE9yVUz0XVJv0OPVjYtmyH3Jhf
-wGeesT7qrw2+7NjbxobxeZx/eT6Vq62F8h0OcTD1JuZC11FMWmmauOBr4AuN
-lQd5YbD128bWSbAuWMLXW0fa2obchTK/BwdJZtjORQjYRhtk9jXOCsH2YYIc
-TyaU4InJr/UkrFXmHp4jETEOmNdHMbcH0S3+z0Tjx6wixntS7fvqEnl+q0Hw
-W0oi1/44m9C2+Bxk2UGawmYTZVmEicMHWxg+ON6mB/gzPYbp02h6Ep0cVdxC
-78AlNzwW/G82IkrNvj2MfRfUJRasFVaSVxU7ZmDli6EXDJe0SSuqyL30/ae2
-bZ9EA9CWtlHa8u9D+cPqIjnhIyAn/q+QqlLGXtJZCtHm3Db0tmcr9Ui7czhM
-sNRR048jZ6BHmom1c85k2vPH92iG3+cKTxvLIN3i6ORExS0dFZ4UkikGKkIH
-bMsP6n5BaKtY4/Ah7lPTLKkd4ne3qkOkHpLMJzDJJZaXJL6SK2K/x/oFTZjo
-68K42wINh1bL8YYUlO3IOGaBLj5MG3TJpUehtR3/nTJ4h4VnmzyFFN/wBOIk
-ybHUuN6w9Bze0pDdpwlzxzVWFouxIur270HocJJNLG9YM9EIBAeeNLQlK9Kh
-K7qdceNnjKz2XWp3KUrw8kLdBIcKDi/FqUYRTm1hrfLMOtq5IVG3atpcdcuq
-UoYVrDH5F3aIYXNj2UpU2fOH4Y6Zmhft2OOoUoK7Kl6zu1jQ6XLMCO35Luci
-DpsxQxX9P8lYrMfQj2SOV+rI07jvbjT7LgzmJ059UWszDahKinXYnVjuacca
-UESo14J5UTfcsP+tC/Hwgioj8EhMaPZd0LOzgzcf5/WS23bXSWuxafBhPZ6C
-xrPn5kPQMqHyrN4bT43UEY5Ghj07rIKqeXdSwVZ0aZntJMFdS8dXsiLI6Cqo
-nLe6EepX/Sf1VzAgKmlcWyx9Ydnv1oW+uo0NiblFwaQlsosD56kRWw+EishX
-o0qGSNRxiFW2tNx1DXdkSiWb9FvpbPc6FTp5FXat7jxOZs5uMV1CKQXTuv4O
-WVaY7XltsEKO3hKnnMLxst1e3f0LD952oO71D/skNi+mjGuOtsxxd3T3tF2A
-U6MqsAm2sax1q4yt0x8F/3QJEwh0ww+b9LOzneJfOO2TJZ2NbR11V6S2kJeq
-2wh+tPXTR7lpkaJSecTIOubhlQz2YYghU5jhl5zL0RAFY9oEki7YNQgQpBG3
-y8yq9Bo/9Jd+/wFfWMU+
----
-eJytVNFq2zAUfc9X3DoPdiDzw9iToVvKSNlDuowW9lKGUeRrV6BIniwnG2n+
-fVeS7Tpdm8JYCJYsnXt0zj1KppnShebZZKuLViKsdPXBTAA2WAkFNAEw+LMV
-BiE2elvHfunL1fdlfru++QaXYE2LE4dqeOvqWbE0Rpu/cCWTjQOiKuhJX1E+
-7U88vNPgFu7Q7NDAtJcH/lMbsWMWu7cCS2gsMzZvPDrJWyPmwDjH2s46EMAi
-7JIER5xlgTpVuD8tgCnsH5h1usIKiAaUkJ+eM6UboYqkQVnOIfINyzIaAm/U
-Hxx8hvG5u89SoLJvu+NaKeR2EOBTGd5IEA9EvbXA660tvDXf9Nm4wuBWW8yl
-rirfk44ipfy03GHyuqEh4+Uv1x2hFVx+BByRrzxpSty5UBaNYjJ5934GhxEG
-ILr1EtatrVtLKIinh4ViWzzGpFdILMDq3rqb0jaZOV5EI5rj+WPhgGOEyyqV
-uENJjtfX18NWH9J4RtcAoW2Q8tA1qyiR4umaD/eO8PmmLUs0r6fj9lNk/AEO
-j+50ZR/hpBXS2Sby1derm+XdfcAEoT/SQu8VZw2eVJzml2qKmv1OPM8cQv3c
-a5292Kx/TvBcaJyp2ALVXET/LZampX+c0EAukZkziXU/MD+4xx86S2Dw
----
-eJxlUD1rwzAQ3fUrDjKkXdIlk6GUDoYOzpIhBEoJsnUOgrNET7qQnx+d7aRJ
-OohD7+uetKhCdLGrzBCdEEITj2s2AC0efSgTgPFXPCMsGc8DvRWxDBjyciS/
-Pnf1YVvvNw28Q2ZBo4bUiSZZVzNH/i/sLSVVYnBGj/H9tLiq/nSFnztNtsXc
-FCzRGNmRTQlqQq0zIgAOezhZEjzE/gVpyK8zAQqX1TZn9q1kTN9K/9xoPxpX
-wdPHDQNI0hYTTjueLdfMIlplPGeQQFgq6f0hR994ZzGP6DSvf3EBh+Bymw==
----
-eJytjk0KwjAQhfc5xaN1UUHoxlXRAwhCFz1ACc1oA2lS87NRvLtpg8WCCxcu
-ZpgZvvfm5ai0EaarmKVbkJaQKXPd29IEPwbvyZbSLHPG2GBEUITzBDEgR8MH
-Anc41fUbK3S87bBxXkTpNmKd4s6hmfcFw+FTFClA0AVSSy+5kncq2mTUc9cf
-H8/tjAAujPFHu3qSoESQFiz1HwKStauAcf9/wGj6PeBUL8qBffQ=
----
-eJytVm1v2zYQ/q5fcZAbWN5cuQOyfcjiJsGSfErXYXExDEkg0BJts5VIjS8x
-vMD/vXcUJcuxUQzFjCAQyePd8zx3R3IAU7hmlt+Kkn90tnbWch0NogHcu3le
-MmNALWBvFeyKWchXTC65wQGHUi1hgSZQMFFuUvhrxSUwkHyNfgq2gTlfCmnG
-zVxjKgzkmmPkAtbCrryfAocgZF66AqeF9JOSVTz1iKZT+GTYkvsBQLHIlLPH
-8KcYJRnSxuHYm/Z+Z4XQtDKNJ7aq4zFO4PasZrRRTt/HJ9XbkyKG/X2jFsCf
-BBEV+c3T97NXnhRqcMALZeDPXjAOudOaSwtWVByYgYXSFcUsYL7pyKO3AASk
-QpcYQgOa5augdK35s1DOeDcpJLMVxsM/BkZUNYa/t1rIJaHPVVUzLYyS6Qju
-1Zj0VLogOCpkz7tcaP6P4zLfEC2a0KosFcIew2dnLHpipQ0kfIJahOjGQ4OV
-wpwyYxt3KIIBs1KuRGoclqiBJjlSAnWrNOIwlsmcj8lDuxz2BS0qIZ3l471E
-p/08Ydbjkw+xN/Aa5MyZoNGC8K9JhcYnRjEE0dWgZOsbGIpjsSKNq8gUN6Ir
-k2tRW0B82qKoDaNTrM6wKSiE5PRZAEcxsnenqZ73hj/vD39ph2maBsjoS5Yb
-KEUlLLNCycY3pbKutWIoqzBNp4W858LwpnpyJqWyKC56wnlKakElRYamYiWS
-DnUmJIr1zErAFLPS7KUXaq6FKqgQfWCivzGWV2kUUUkIzSHGqj7VE9U21oT4
-dKP4tZ0hKjl+L2kxqlThsCTvaC2KALBVikIQWUS0YmYFTC9dhV2BrDU/IxNv
-9nBu7fu2Uc8nOHjqOvEa4+VW6a5c28Onv7NXKbvtM2oZY/XCS9P0H6ba90tS
-8AVzpSXR45O/3zaHwIhQN4fgwRkD5/unYuTB3dxefbqbZddXs5vs9sPMl2nr
-LfImGAjTgiqwUvzLk4wojr0a05ftKGpIXlK4P7pST2j5YY/WE/ay3/Uw7E8P
-aT6Co7/X4PaC3VtW1RjKiyTVuhMq2QMz+jVsykJ2euiaiT6wZmb41EYawCvT
-ipkvJkxSDv1sMBaLLkhHCOeo8kn4GRZ5WrTFcJF0xqMefc2oaZCbLJgubrRW
-eKrFw8FLa7wdQoWHHB1UDLBRRAGdT7wbcmqmnZ5cFt33JeGdM0MKEJ6Uvsll
-Am/ejWGILT8cwY8Qp1igcdjGS8P/g4fklSI7Sdspn2eI41HLdgftwDB4/6yE
-TFre46M10iFKjZsnk+QxfVz/MHozQc2ywcuuTrYxEhs+/jTswhuHp0m/mJsF
-QuU/Bs3Pf9daPNNd159vBnQkUV/6vl5rEYyoZfwowVJnbchwhWFJhFPIhDu5
-h+gVCLwT8e7RLre9l4iv4oVWTdSOYxe5Yl/473x9G0x36fuetgkah87Z5cV/
-hdwkncno/01TT4hCtZclvVnaY5wFUS868kelzb6HeWjd/t5pT8PjsmaH65pb
-R48P7fhB6S9Y21/9nPeeOkS245b3OfkX6g4EvTfwIuu6FSXI3S73d/6Ko87O
-/BVLF9pLL1fx4XWBh85lOHFy/zYiNXwIwJU249u487I9oHe8Ei+bR7CvIHr3
-dr7GkFyiTDKHC4jXMZxBzHYHxrcpfJsApts3pH84qaP4t9EOu08G/fsK8CfQ
-PA==
----
-eJy1Vutv2zYQ/+6/4ibPsL25ShZsQCE0nYstQQbkMSzBgC0NBFqkbHYSqZJU
-HnX8v+9I6sE4cdsPmwHbJO94vMfvHkNIuMiKmrIE4nhPUZntsZLwQtamqo1h
-ajBQ7GPNFYNxIZc/qr2O0q/G2zzaEMMzXC+fEAUze7o01XgwKCWtCwanln0w
-AMgKojUc2acvWrHwBro1sgAQY1SqGKFISzRTt0zNIKmkMvhHJV4WuCBZZvek
-NivzUDFc6nrxgWVm4IRQlgMX3HBS8E9skgpSIs+K6NXhejN1LAC6rpgKaS3h
-Fm9RYtgkPJwv6jyHQ7i+aQ4WbMkFNBukW6ORfs5MklyeXf0eo4OUmXw3r4gi
-pZ52nKfOZTF6LuUCzRakgHVHBYi2PDQerudWyc0YVC0EF0uw8tGdnAkDUgAy
-eE9tElxaX22iTuCmWSmms5rB0X3GKsPx1uFbYJ9TavLqYPq1iuVIYBSMBGd1
-qOA3z1XZ4QPW0zUr8rhgt6xAl14cHzcEJuig/XeLIXIKCohSIAIcquGOmxWY
-FYOsVsp6yEauQZcFRl7UetVi4EFkK1g7Kam73erwoobRsb2Lhu70RLR5qmCl
-+C1CqYflbnBphCpa6wjXSXtyA1I5dF6P26OxO/thf38aG5nyVkYuVUlMzpU2
-KMZl3ZWUhY4pyyRl6QI3TjhmS8A7w+AVmrWqNMy8LBnlqGdKzOSl5Egt3lOP
-7YChM9za+iVZ846CCp8gIRbsrqEhb++MUELgkPB4fDPtgG5qJYDnVkYsePFz
-H9LWJZksS5LqquBmglzTmBGLg8fCRvGxg2GLwNPzd2dHlzEXlN1PHE+fzviO
-Ywtf+lxGURkwPUuqBPQ/vKpski8IhdDCRhv7ugVc0QAukNamh/8Idm8GL5F6
-t187kTdooVF1Www2zwP5haBb8ClZ9vGyuyBOdhvEh3DN4J1a1iVm55FSEit8
-dFYjbHXFMp4/gJNGKMWapSPrYSc/9HCKpaZ7zsjgMSN9fkRRp5zj3RV9I6fw
-9ZophuXTlrVGLyNjVlbmodWrKcS9bn4f6OcPvI7YSjNSrKQ2405ZW77763YX
-XLZbf/Xgp6fZ71tjf9Hvg6v+wF8+Ov/zenxycXllcd1HZm7bai/C7gIBdhvw
-VtjM72igqduHurqDUHrTrYMXmpPwlebIK5pkCLW0pN5YHftM6nzte37gbH8Q
-etufNJA4QzyRJQOZY8/8dn8TBdZYTNv+Pm+HjrkfOubt0DH3Q0dj+Ky35+Z5
-wmRESMExtinm/wSTTJhu7PAtp89GW9bjCvsK3kL4hXU8yOa7FRMuS21rEy0X
-eiP2K3CPhMUAi7o/hB0lom96FslODdeD3h4GDQndFtQLJ8835pvd5aIT3LCU
-eome7d7dbea2kU6nDzKcs5xZnpDJosDYrh/Z40v+2GzfbFXEsWE4xKmAFxQI
-OAes/MCJV+GP41/g9cFBWxLyDDfOgE5QdIzFKLFTl61Km/cigu974pV0JCO3
-CZceio7awHKb5Vf0saVf8ZLFQt7hDKlyg5sJRCMygxGF0QJGf8HoJBmdJaNL
-GH2C0d/RdFtQA/RXv9EE3gzX0Sh+nUcwgk4wZlO+maMmHt2bt+/FlojhGq3G
-OTJwmZu1WBBYPwO70Te2REuadC6b+bI9s1Wyb87/4xSaybqgYmwCRf/b6VPX
-qgNfwYh6YSz1v/b7L+j5E1o=
----
-eJytVE1P4zAQvedXPFKktlKU8nnYCBbQipWQEByo9oJQ5cbTYim1u7ZDYRH/
-fcdp4nZRDxw2l9ieNzPvzXjcQ6GNNGWR9PCLrFNGFwX2b2SBmarI1H5Ze082
-t9PsBYf5KY4ODo5HB99Gh0c4Oi5OT4uTY8yElgbXr0vsJ4ml37WyhLQy8xM7
-iiFGysR1+hnlvPCq5PU8GJOFkXVFuA22JAF6+GH0C2lFuiSsrFguyWJmLH4y
-yxxXUirP3EWFZ+GeIey8XpD2jldUhABNkMcz778XQZgWCzob8e4JwB1vYGbw
-z9SohjdgKvzLt9y8rXUZffgbhwPhKfpdMLqshHMNq/tOLM5wcx93SXAV3tuJ
-JSHZug6cIfJKGoikGZRmVaJSf2gwCZasUXf+/jFM1hRczXXobFpVa8Awac2X
-TWicrws5NqZyuaTSSJpMeTMI4CwS4B91gScdGXZuYI+R3hO47M1RvzvqP8WU
-arbxzdfF2DvHg7dKz1sIYIVyhPHbkq6tNTZDetU2DJuYWNTOY0oQrXuaoRRV
-1ZYQIC27rL113164VlKEi7BhE1oxJudzelXOXwy2pA0jIcZp4zfYppu7oR37
-B8+XXljZKej33iP8ow/lmogCluZ1JWxD8LMC1lC5z7lXVnkx/U/5u2B7O1Jz
-+SIJ4hKSdjVPpOSxLL2xbyFG5x+92MpXopk6XoZkX6volqoQ4kt6GLhLyS4F
-m6twuXVzI7HOxg9Qx17TahCxGQbtrFwgXaUokIp0OETrd9u8Szm/CROleYbD
-O/MeaaT/TjsTv2ybEDjzxQ3vCR/G7nQKPpIt7msxSfj9BQH0t24=
----
-eJyFU01v2zAMvftXcMkhGRB4l52KpSswLECBYrnsHqgWHWuVxUySE3hB/vso
-Wf5I26BG7Ej8eHx8lOZwZ0hScZdZ/NsoizDTtP9qv1DjD433OFnNXsc4L7wq
-eL0Pzqwm2WiEp+DLAPg3n4cPPG5h24OAMkd6QQcHq4wHX6GBUjeuAjJhBycr
-DgeUnBRz6fkPFj6HxzJ6Gcp5i6IGqdCteD8iO/QOlHeoOZZgu9lEBGFkTHWt
-81hDQcYr0zADLsjRUKO1LZxEm4fwmPKboFScxq3DqWoZ4rqwXEHBa48goGsf
-jKiZ9CIKsxjqaqIXELFN6HTMM3YWWjh3xf3bqFAI6FQb3QZRukSjUyR0eLKK
-KXjKY4bEksVVXgmt/uFyFxitYMdlV1AJV63Pl88xEMA1B7R9RPD1jofQ8Tom
-RQsamQ3gPGmH8vskNJ+ahtg5/Ajmfl5BhzgajUfU42QmoG8goTEaWaJoMUoP
-RTuM9QABo24bUXiybd5NZlejr0i6ZTgOfXtPcVY5D2nHhw+tERrOs1Hmxfz8
-EES5LFKzE/6J+OzyqtnuiWs+0kcu/caeVGHNS7J1OuUqBQYR4m4phRc902fc
-K5PWSZjuwoSga3u8Pclk0RVNUP2ntWRhfQ+KkEtbLOjIDZaWQn3F98TwbRB8
-xHkEVgwAtzTqEZWB9+T6lGS5CcA0xojpzBPjXwwzcDb4AZt3J8aj4r54350i
-vmGXD2mZG6zCeMf/8A3vf9idlxw=
----
-eJyVV2tv2zYU/e5fcWcXiDMbSp8D5jVNsrTdAqQNsAYFhiwwGIuy2cqkR1Jx
-3TT/fYcPUfKjQWcgsUTyvs89l+7RSMhJWeV8RFl2oHM1OVCVXVTWct3pdXp0
-eEgXdsY1nclC+ZWPXBuh5GhEj87yEaXjmb4Z3tKT7Bd6+vjxs4PHvx48eUpP
-n41evBg9f0YFk7miN18W9Ag6Tio7UxoqzrmSdKm05oZelng5rqYTk01Yaflk
-lvG8etXpaP5vJTSnrp1pzvJua6VU0+e6cbl5KtjEKr3qbh4tlJ4zfzQ9bZ0x
-llkxwfPUbXbmKq9KTudur9MhmpTMGLpIaSJ8oEiPnXPI1EiyOR/SqOS3vMR3
-MuRPHh8nHw0d0p/MzDLJlx2/iczIRjNJznNDjJzCjP5Syp57p2gpypJuOJUK
-FnMSBUlliZXOg1XUlCsJocsZpxlsENPTas6lhT5EygwVqizV0ozi8fh19dLa
-V8H1lwd4vKbwiYb9RkYXCwsIMESX84JVJbRaRRoOhhNrylL8SeEJva3XMnrd
-0hCf027ICmyQkMIKVoqvvD8O+XVRHd7d73eCg8iB38ikKI/iGpFmwnA6ibG/
-0VrpIXV/Z3mTj4zeQ4yATzq7IP5lwSeW51l3SEBhGatGxGUen46dGZTOm4tr
-t3AtZ5aPnVd996/2q13vKy96DVnDy6JTq60LtsKucEZXNJkxOeWEzmsl1OXB
-vx32x/67tuGhealUabLkiD+wce7YvznXG6XU4O1t6JlsAhhBw5yjSXPTd762
-LAEGGXpjLCREgAG66zaI3evd+Rjv94KnJAz17s7fn7x78+EqWL2+795vhv6B
-2yZWjwRYyOgEKFeOfUxCvJhKpXme8qFkuRoz2/85iNZ+7q77H2KOyhk1ry39
-lKrs8BPWMj5f2NXRg4pOmdyzzsfaPp2cn+/SFdn1yO1HjbUVNpnR3Tf/9u2B
-CoYC3m9WMGoxStusENrYHyumB94wSj9U09RBu4u71MKCsl30+EddGvyTJKJr
-E/ALWgkhIrwAANQ++6SE7CNV3bpUW2B4vbsPioYy/lYVUi3pU2UsGTSsKFag
-yVNHzFGJuvkE476r14QDkIS8VZ85DUC8A1KaBkKC9OWED2pxScI6lmSLhVYL
-LZDDrEMJdkkfWjE9t6mo8fazkPlYFUf9t5vnUM7Gr8OWTE05pfmOKh/pvo+u
-2aaXhw2vJhPrGjBnFwpKrDpyoz8Enc5+16Fs6yh8+xE5N9mSSGLQNeHQYZer
-Ba+7q+42WqIAfrA1cf30fV7+H9xUGSGnIKbG7cxP9R3UdApjVJQVRihoCecn
-blY01x636rvBLWFnRTdVUfCao3qeJdARftJ8EHNRMi9zdtHzWofgI/gDZpOI
-08QDBSYIJmzWDEB/eMO5+uPfgFPrR9fGXnTjY6QV4/thouZzYHz9ZpC5NCPh
-yyHOgNOWqipzkG7UMAjXgsEQTylvg9RixmqXVHeVAoU5fcn3B6bjvLL8CzDz
-zn234NKrbxbrFwtvbeuWkJDuVK/zN3nGy2rajBhxCrP2DNxA8KaFNRxrbist
-t+C3ZscHeRUSdu0Yxr/v+fc9v7DlyX5bT9uZqCsttfSltaBzl9v7OzETEYNK
-Wb62Hmt9OcPgDjMDpmReAjeuERow0wL9grsnysPIrhaOsJvpk9X3yYtbrt0t
-FRARfrC3GF1hj/mxPmO3Av6rYq21MnrHPtfoM5XmAZZOFIE1Yk6x/2VAhhW8
-1TOYEUo6x8bwu48/73pK9Eq6ERy6tx9S2Rza3x5Mp6FpYloCG0CGAG0WLiuY
-GblCquCRIynvKihX5NAYlTQlM7V8UJjRGcKnXHj2APvFk66p2qFGPe63Ac9d
-p3LpM9lkOeprccdGbKnHWqCH3LRimoE5Q1Vx2drEU/ihsTVkep6owxwWPF2T
-G27dab+V2JMbkAfuK63U4q3yN4DArS6RLs0Bbjk3SAuzniFjbXAVUHNq/bYy
-M09fahOA9X1hppZO7UZZ8mAmCiMHzr5Fij3NgepxG+UB3Sm9AUBObiMyt+lR
-9lskusy/aYDyKwfyVoLDyH0ikU6Udf/+AyYP/DE=
----
-eJytlG1v2jAQx9/nU5ygE0yiAboHTUysmiYqTWLri059U1XIxBew5Jwz24Gh
-dd9950BCSJm0F0UQEvsefve/c7owISNNMom6cI/WKUMTuPgqJ2AKnxfeo01F
-4o3dxXY52MA4fgNXo9HVcDQeXn2A8fvJ6B1/IcF8jYWD2a8cLqLI4s9CWYSO
-Nqu3drgUDjvtRYu5cSqEfrbF1xXaThRlRhYaYR5Wo0QL5+C24ooigNbSzR4V
-ulVRwB9FiS4kwp2ilUZvqFwtLwBdWAuSGh34rYGEOd0EQno2BrE0GwQBGjeo
-oU8GHCaGJAi7ApdjolKF8nUdytijK5t6MOne10E/Z1CUDOMN+DU2IhUZkq+C
-SEx5S6dxYlF4XGTo10a6PndjcIg1JaUrcwjSsFSxNcYzQWpsglVOzrTkByMk
-yqh2YCNlHUcriJMp4gK1LpGY/eBaG3M8yEhkyOAw//752+yu3oM6woI9+6VZ
-LM2WgoqDMD9HSiRZ36sUiGH3mWIu5hq4BdXzoVvXcHtz00hlhXIIP3Y5zqw1
-dgCdL4J6vmQ2pHcL4YNHZ8A91BrtwziOL8ePZwEs+sJSAAws/BfvGzydlkmb
-oE3IbhCJ4CBaJdihQaVSbA2fpiEi3zXgqz1Fx2xxHM9n97N5U0+Ahp57tR/Y
-+LGhKj+2pD2tjWmRSU8hXSlRicFTqFaEst3oE8hney8BdrYB0XGzPkVbBEIm
-5PF1O0rWZRV8sAuhYWuVxyGjZtzvQOzXfE4kOJF63BE61z5H7Qk9nKIW64GI
-O76fdh6FnknTHjw9NVZ4snq1S+a8hSm8umwUHLKGDnd/l05/+pyWs9GJKvzW
-EmRI8aCWWOdsmmodE+zfhgvcsBIhfdQ2bhf//IC+WN2df9f6MRB1/o+67Hy4
-hN9fGlP0Dg==
----
-eJxdUk1r4zAQvftXDM3BSQkphT2FzdJSAj20dGlhLyEYxRrHAllyR1KgW/Lf
-d6TKjrcHfc1782aYpxmsjZW2XheE70ERQqnt8QfdaHW4kXTQVkik8jtqg++D
-9zi5lUXRWRk0wlOkFAAzeEOELGePDumEtKIDQ7UWzsErdtbjy6AAP2G8F0wC
-kNiAMsorodVfnFdGdLiEVrh283leJAqACz3SFBuAu0AKNjCPsd2aH3uwlBi7
-kl/lfiQeQtM4rnBhD5FJyhAqU+x2sfK2UlMFzt7tc6C2xmDt0wuNTGfaVAOP
-93+21evL8+/MVabWQSLE0INWaHKadpgZ3+ZwLejohuYBSCjH2cF41eGWyNIS
-rtiEtzRwMNbHGfWWPMpVqgLKQXZUXi2hFlojZb2h23h+uTCDByZAo4NrwVtw
-DIEwHyzRCW7LHKPl2xM37iLuW4wQWwvZ89HMpDH49mHqFj6TXBXnx72eL6Xj
-pSd1Eh4vn6EWxhrF/Vb8oea8MFZd/K84Dia5supj2wN1xKZV2ZMvavoDvzaX
-D5Hp54mPcY/rH+8Y/jk=
----
-eJytVm1v2zYQ/jz/iqsc1HbrynaaFphRJ+mwdCiQbUCXbR+awKCls81FIj2S
-ipMl+e+7o0Qpjt2uLZYPDkXePXd87o2tNoyVTnUybrXhDzRWajUew977dAxG
-Z5lUi7nMUBduVTiHJjaz/hWM4gPYHw5fDobfD0b7sP9y/OrV+OAlzIVKNZxc
-r2Cv1TL4dyENQpTpxYEZ1BCDDcDosZx1wsmE1gs+bOU6LTKEUz5rtQDa8KF0
-6x2h/BpQ4AXYYpZkwlrQc9g8c0vh/GUssGmSUGDlP+jRNJ3LHGN4m6bS0e1F
-BkthlyDMoshROUsrHLOsl//4xrnDcS6uGeHNgD4uAOBncS3zIvew7IBborcF
-UsHsxqGNHyg7U6ikVP2uURWLLU2LiVap1y2vtvPqbzavyyQBCOfM1KBISWCc
-6EK5PgSvyxXfmlZEt3FntG735XgmLDKYEjmWOCnOyRMiRmSk2Z3ySd8TNLm9
-73kRgGNvACYwrDZssULzUDhIyrn/jOlneok3R93gUw/u7h4ddaqjTg8qbYBp
-tUe2uiz9MehfcCD9Tq120Yudnspal2wH9bik88mEqLtWRV7LABghLcLZzQpP
-jNGmD9HbKhGgRoa8sA5mCEJVAFEfEpFlxH7AQZXusgyThqWvNncIw88bOm7o
-CQZbj6V2hoCT4RMh4KPHIeC9jRDwxmYIvNonQuAL7ptD4JG/MQSl418Vgk1z
-XxSCip5gsDmri41O+V+s9HorQMcPqxAmvrpj3uPv7vG8Ogkl1fatDWSeYyqF
-w+wGrAZysGp21L3qvqJNDtGQ/0YvNsxEFRhD1bhN3TddyWeXL/f6/sepcKLK
-upJXvotftMs/v14ZeUXubeyXH0DNwrvGVtZGVkLcevxXlw3UGdiGNVKaXZFT
-Gi4RV+CMSC43emfZhgtjMbsiCl6UHPrdVKNVHVeDWcSckQyutHEeItHGYOJK
-lPUSld8tb74UakGIRqxkmt1sMfB8ArwuTT2HERlg3RFIy+yDwjU18JARvk0+
-YJ6ztJqG9kOIREMmOaYsDQ9yTTAShFSAudF55To3YprCUEXXd/LAZi4u8Rdc
-1x0+cKC0Qyisz5OlMCnBpJjCa0jlQroQbljL1C2JTLqLW9IPKl0slmWaHVVg
-K5FSGkTDCJ5B9zUJl7OB24CNyezCLXtETLNZ6dF12GPS3cjLmKZ6d9A9j8/X
-z3p7g77Hfw6d81GnHj7zR6Xyl5aq61epNI9qph8MBe1T/86I6bkxlXxJHv+3
-EWtD+7bWu4eEZqnDNLoPMYEQFE6oJvPCY0b4gB7V1G+F1bekJ6Fhx0pmR/D0
-6YNUOqy7edM/tirNZw66wlCOmmJns38SOlJtoxtaD4enbkm9yuIXd6zPW56L
-zOIWWT7LA1kNOQ0pM1xI1ZinZyINCm0DPjGYFNgMo53he9Dbo50vpg6F1oe1
-w4mYpVwA4M1sBD2qge63m3RZaVTvo2pnd3HxDUJiUuo1qdiH7rF/CMIRROsI
-xhCJqNfbYMyXvv9plxWX0LSbcR8vSIIeiHgt8hVVn39SM4v0PAdhqUMSoTzy
-pu/en55Mpzzy9jhjQnp2/Fu7QztSJVmR1g9s2uEEoC/yumKXW03nzxk96zNt
-0GtVMnH9jLckvotrf+moUabheQtRICGCySFEZ2h9inEY6TyqktAfjoa04Xny
-n5xq4N+dwYMMrzAj4z+e/PD7T+z+aDiM+dCSoTt35wkNwlLNNUSzTCwp0K4K
-sM1oiHRH8ZBh7xmCS+y/GKhk/j8GfuM20DDA+CUDr2lcf4KE4MQuEnbQEMR3
-0HBfJtq/vZpJMQ==
----
-eJx9UctqwzAQvPsrBnJwA8WnnlJC8wGFQHMqxgRjrRuDIhVJTihN/71a1ZHw
-gxpsrHloht0VNkoL3Wyysxa9JLzqjyeTZUAja2ux791n7xwZjwArvJEzHV0I
-tYK+c0UgBbWwJNuirB5UfaZ1QL0IW+x2UWxLJqtAAl3LikJ18mVAAEOuNwpN
-bQmsjcT1RAq5dcJbcjg+HcIhtiwUXaNi7iNjks8f5j5WRB9JbtBJkBID6P8Q
-nwHzWdnAjQfx1+M5DbG8V6sWxT58KuY+SbzCgdz/o9+G2T8mxXpoOV+B34se
-rTfFvHckhQXVzSlpchvW4fOF31FLhlRDkwLsWAgMOL5vk243fHEQJvDP8jj5
-juO48ULK8VLLnnzWLGXxfv7y+wvs9ffB
----
-eJxtVW1v2kgQ/s6vmDM9GSRkSNvTVVbShEudCMmBE6StTgihrb3Aqvauu7uO
-msvx3292vQuGNBLxel6emXl2ZtyFmPGsqHMaQxQNZS6yoXpWhdiKWle11lR2
-up0ufKFSMcHjGN5M8hjOTCL5bfAEF9Ef8HY0ej8cvRte/InH+OJDPBrBhvBc
-QPKzgjeINK71TkgEWmj6RCGtS6Ha4pQKDo9CSqo6HUl/1ExSCDHaezncCFkS
-E/B4Cs9tDkkdT69sMsE3bFtLokVb2VQVdjqlyOsCczPGnQ5A1xUMnNJcgRag
-qAa9o5DVSosSCiylUGjJNpBOxw/JIlLsXwof4QKFAJIwZfBInkgp5ACCB3RE
-N+2Qt5ZEyOmG8TPUABEoz20aukatrcEm0SRVSSYk04yaBG5bpUUNzrrB6QWf
-kr8+3wcYfDK9m5nndPY4uU3M6et4Pp1MrTKZz83jdj55NM9xmsztIXlI5vdB
-3/CRFUQpWNjwM88yXMLhbIt2jeXs4hhTU5pwrTpW3YWSVMpV06T4y6Kgh++o
-Rkfk/wkDKUphnKaAfQWzu7u+hVv8s0hn9+s0+ZKkC7iCpZWaP86KARzejJEl
-4kxmODkTOVLOpMjPmcRQ1RJhPHte+TofdxTbi+DvHeyI2uFxW5emoMbAmS0v
-tf4YsxwVl0M8riya48OKB6ZBSF1oy9Sak5Ke+JqZrFrOzrcRnzqbvP+efIL/
-mgpm08UJ0oZkrGD62WM5JC9+jfV5kcwtAirw5vHmSIET0LNJDmzZVy/7viNJ
-1RWVbZ1X2DLx9npGuGzIWIGQ1mgZ2vfQCqyzd2sqPPo17y3HRtB4vi69H2mx
-Zg7L13hE85IWnhcdEQ0BJzg3jrMrNwCRqCjvuXv0V+JxmkLMmB9IzAqhaH7t
-0CTVteTwm0O1YF7bbAeAU9fTNCIrg5oXFEfXC7FVfYAbO4KYLU6UEx3G+Y5k
-uE6eo0xSoum6pLirc9VTtNj4G0ibHYaga8bRhZMCXoLjcgi7LzfmxvahK8yx
-YofYblNhIgf7UyJwDTxhyBYrhAvOMlKs0fmwGXwWaG74bq+CpbeJbIErZynQ
-7qDJiSa+ATcgou+M52uxucaPVkYrjR8+s+z5YcJLZa416L6IyK7CPRANPfP6
-jWTftSQZXY5W+34MRlYi42RL94Hzx0Vno+AXrhIYSItriLFxlJa/CiOiRnf0
-pq8sGFcVzbQ3cf0AcNYDhjKkaADh7yocGO9+q4HMf/P7H0GWd9I=
----
-eJyFWW2P2zYS/s5fwdtD4M3BayNJPy28LrZ5a4C0WSTp3QVBEdAWbbORRFek
-1lEP99/vmRnq1dteUSQyRQ2HM88885Ib/dyXO7evK1fu9Vu//67SJxcP8nh9
-3b410VdKfTxYPVzR29yEoE2e+1PQvrQ6eh1s1PUxybp3Rv/7p7cLdZtlLjpf
-Ym8znwjxZTSuDLqw8eCzQEK2aYPVpmySLJXZnanzGBb6TamPpopuW+emmog7
-Vv7eZRZqJYGQp7Z1iL5wf0BD3CH3+z3dN7f3Ng8LpeQAR1cJ/eFmk1tdB9r5
-6RaX0K8gPh5MnJMU6OaCMskGwRUOupDu48vhwjZrzfnJFPnw9ULf5dYEC6NZ
-ldOeZYMt2+GWaqN3EJRZGImVff8SFiVlK/t77SpIp/e01n8HSy/0a3hCNpuo
-1SHG4/VyeTqdFlW9aa5yU+4XvtovbbmsjLnKXYiL6hCL/PvSFPaGv4TPPUwg
-Zjt3/Vwp3aqhZ3KBofIzpW5u9HM2vn7L1lbqQ308eohsfK1Ppowse+cJRL1T
-4PdMV6b8Gq7pjFfe65X+AQamP/8gKMIA+B/Wc3mjzXbriyOucLAZfzCysnj/
-i0i+nEHYbK5nkIa/riHusUA7wQWy7DHCpZGCAriudGiKjYfx9Y/+BCGAnIhs
-lS3wSx/MvdVkuqAVoUQbGOXe5E4c9B5GJw+FiDtD1C2gNpUTDr7OM72xHEUb
-i++sVgiBeCDTYAuBTmcUan2YzrUnPJ5c8lOKk1boyeU5icy9yWwGAH2C4bem
-5DPG57uSo1V/hPqzAG1xV+ALy2MfBbtliLF7CWDPh8hT6s2OvcsWYRzN+Tcd
-2kf2gG2YIoC0zOMgF+Z65ypY9FS5SAxwDm59eTq47aGTiiiqSr1pVIh11pCK
-JAfytnVhATFCE13BfjOACTyUWKK7W+bI3ZuahD9WaXvJNiM2oy2kxK6CsUhl
-fIazmW32lSm0Cck84Rx+JOTLtyL/snO5vZwtjyYeltEv6ecC67OEPzHI+V1D
-E6ItyPFwR6N3uf3miJpIyyMAWe3qnDlxZ7ZxrlykrcEX9kQoPFZ2Z4XLBsTa
-0z1uQtBkAb7KLHNYNF+tgthcm+weeDV7q/1OjLqzJsJ/LQkSygMFhclJusQO
-AZSD4mvpTwu6XcMb/xRR8VBZ2+IqMLBuyIok7ppt8gIcg7f3Noi17DfcLAQs
-iBFIP46xA3xhS7owYrnVVr9hKtZq5dYkLeukrZZujWgUkHXLnAw4mq8QwjXO
-MK5CFOW+5NQBGykyMWLSEsJgvqgK01CgVZY0wyIpQEwG/hVwWX3J3HrBMi8e
-i007IQjkStEXentw4IHLFe1e8+bVkp+nn1CswqJEFBJjsLLakS0pFR/t1u0a
-WBvvCwGT2fia4kH7zW+4KiloHXlypKfy/Ls7BOZJodNyFPi/gmxG+yrJykw0
-7d2Wa9AAZCM3YIFiMPrh5jUe8d+KvmlvyM+0Zdnu6bgKyQaRLADcWBCLg4b2
-G8FDnxiHpSd7E0XK7wSx27s3D6HpziBqbbQV0HSrw/aAi2rhlISUBJRjt5GA
-koDVFTvgi7ytKmi3GkRuF7jE/oln39XxWEeSxtH7it1CPxeS0VIuDXq1WZd+
-tdzgxG+xMvrkq684NJEOap85IlwTGsmDvCo2Q/KRiOQqTKoXRMQBwNgzF8rJ
-ZNPMbn1mU57T7IMg3K+Jg8lcCpJniAZi4gg+NGcXmWvhG1NjGbcm2zXjEkqy
-iiLaJOyR8ySCWn5v0iVJHTgrxWJneRaPytHvfc3VoRnfiKFOsSgWQOJaxbgu
-7Wm1xN9K0vqC/B8c89sB0Tk1CmS8Ah9392KsXhNFU9zpm7XuiRuahGXRgNj3
-M9oVq7rc8hY8WRQ9/7KSYFP84cAiWUHn7qvAOAVDe56OzRHEMNLhQrPkmwsS
-e9FGTKvT+iF9VsvutWxfLBbCl3yNMXkse16CiX8jvo6TnZ0TFvpnBBiXv4pe
-uBI6drWFSSiipAAfOXKC1COcckD6IpoinCzBeVS1FRYWCAQJWlxZIgQuo//i
-OHgcqHSPIJlrG7ePSZMTMj6dEQa1pOJyA8WPK5n5p0jle2X6p6Zf4eJjnIiU
-6TqVDiLiq+uiwfMT9vMOJWS39JSWnjx9BuRyEOwlCB6qeThQ+/MZDME/DIWB
-ohdaDrq5wDEdEESfNXRZLdPzwOdvQjmL7C9duq39noPi+uqxBMWYEf8JLudQ
-/VBvQnSxljIOFdlXcjCDwqZG40jpzW+Rej155M97L4OWDii6b2WrMBDe9Sw9
-v1KXArhHV1hkU6kg2whSpPzf/4Or/pf1F8hMaIIZbKIRAxQa52ZrianY4wxg
-SetQkJ1JAh1ooJdGzo+kOKdYXM0VBtUXrmcoWtiwDDvycHIvqs/dThPJTerD
-OW5vmrb51BS4c2lxbM7rxLmDLE0lWEopSErEoYT2jWWEpkJefwB/lxnMS1hL
-LIyOqqGvORbQexiKpFSwJoO1RbHwQqrg4snTp8yD0cJmIytK0SC82foziF24
-Uk8cq092ludS5I36FDpcirO2XmY/DM/4/OtiWjh/po6STDX7Vd9M6HeWlDc7
-zkFEH367hQ+AaHKq4CV932PGGiR4srvlUppTdu/yls06oALyrOjkbJkEpIJI
-grdj3f5QxCQep6SsfoDX0CPOx59NufyhL28pfQl1ji1H9+cWsPW+kOBZeCTH
-KRcGm8hSwyKHLFWXKU/y2xVC/otw2Frep/yhYOiHujMxyeCrRFi9LlIFJ0td
-SCzeXIytvPyzz/iq3UeU+bk9ptKv+4gokArJoRLqNoeQ0lB9j5D5f0qGtEKL
-SdOxm1bLdrnfyLqtRzqhmuXFbpPoplm96WFdurZMDoH6eGYboJLSMoo9qekm
-sdNPJrhElngkRwMYOmtgOLddTD4ajBvqQFCnjrefysgor0fNsPfljhFJhH3/
-GncAN1LhluG801xTZM5CR2F72QB6kFmSn04BZJDw3kPXlwlabISKVhLYyAyM
-Rh4zjfBIzRcnWtzEFhubZanzgjYZ0YFifuAI6aR1fMhtOEe04+HMNoV00Vyh
-Ob9iP7bg6OaIV7nbVDCNnaCk16xbpjd/u7rS/FaPGoS9BzszB19dDeQsHxbE
-2ICd7ip7Je+6QFSSolosD23WNpOI1aFY6QLS6BUX/oeejcZks0423uxzvzH5
-aKlH7nCZ7FzWcAG34/2mbk+QyuOuU/V6Oh6km4w0GV6G0Ay3TZt4bs1wYG8B
-7sfRRNEQgtsoonUuJhywMSnCR8etX3k/p1Ej/fHHajl+KSDn7kzkTkSRo39+
-91F/+OXu7t37jy9fJM+Oz0jzNpT7w7O4Z55a5zWbXqzDJ4gvRMLNxYuXP/zy
-mj+kAX33GlFC79f8GnjiH6tleqnUj5bmBbws3dVk+gFbyt7FuUbD1vluUL1V
-g9pAKpqH8mluiMhpPC2jbxWstM+w6V/Xo2zuNCGiiuQeUTs4n9veBIwXo+nO
-PDX2UpJGmkW1ZCEzJKglpNqCVPP8o22OaO4r436eiQzT/jQ18W9poJ50GUoW
-pd58wtX7X3339MHvnvJ3KaudZQ1ZeSZzlGcprTwbvfxu/PK7Yb45i0iapUO+
-fil3patO2S2x0nkCHfBkFzQDKqRR/rxF/OCLaZz1b8aAx6cXy+Hrh/L1OGcD
-lcSoS26UzlI27y2aI89hyvWjXH9+lP2qHxXUVLWrQ0XPD5yUGQPOTzWWTCfG
-sx/6Ryh67plfPcD9Stq0ycz2nYx6hCzPB8ZtvqUe660cM5+OnrgVIe6isFGT
-uWwdaOC7r1Fv5tA/sCRUFEjeqTuXTPSO58UvkMWo1/yJjdXP7C6lJzn4o80e
-t6bgTLzrSoN2aJVGADKARgdJ/661UP8D8Zmsjg==
----
-eJyFV21v2zYQ/s5fcXA/uJ01JQtWYChir2nXYBnSF6Qeug8DAlqibC6SqJFU
-PPflv++5k+SXIN6CIinJI+/uubvnTlN6U2lbvm9j08ZovFLzlQ2Ef7om809j
-vK1MHXVJWalDoLjSkYKpcwhQ3VYL48kVVDhfadzPqXRLMve4AoFACq/cXL6m
-n87OyLCilK5wf+XaMqe183dU2NqQLeidiS8+vp1/oNyZUI8jZboNBlZsSDXe
-LUpThZR+a0MkW+MwmIQyb3SEDCtdwpBaV7BgjNWPfoyrOS3tPV6P7Ixyg48U
-HVww8MXITVsvKUS8VInZlc4NLTY4BgriNYwu+JUCDgS+rRiBzqGED9a2LPEk
-TIvBlAWLvL+8FAtCdM2gJVXqqibn884G9s/GRCkib/5urTe97SdbU09Ex3Y5
-Vmo6JYHptasLu2y9jtbVSl3AAO2XbecCHmc8BdAUrnkggNdD2zTOI0opfeiC
-aSqO0kqHlWq0B3xQItcntVlPUpoDIqwKaxAvwBEak1mscr6mKXNVpb/PTWkr
-y8FXpUV8kA9idqCnjc5z7K9tXNGf4TsOdG4CPM2fAYwLTjFdNaV5wSDIpVs4
-S9MHWZnCGhpvz8cJpB/5eRGMvzd+OgOMmS5XLhwXZSCms7Pnx85zB201ngqu
-MuuV8SaFt0efK7yrIFyZl4Vz6UL7o5LRQY6RHyQT2t1KaOE+u5dZ6dY1nP4P
-T9vFXyaDB+NrFNyNYXe67MD6DdcfvWqLggv6EEpOSG+C1GllQtBLLFBRmhYi
-n9KnlamlNroN5KbOVobDrTLjI1DpCz8RqfMYZywZ7GdzfoLFfkWgAJhH2AIk
-S82Xudr4nuK1ZCvyZaeuy7ncFLotI02GlyecfT+cnuLYSaXtTpKD3EmHfSQR
-5E8B1hO5MKiQM+Q0Hwpgl2UbVvzsRzZX0FJKNtlUmP8AQHFNPOJU1Vjw054t
-EOeGAIR0y6VwFTuWowKmpLAJIJueTE2d6Sa0JTMZPxRWbcwRfgLrZUbIJ44F
-/aVzKMLcaDY/dx1B8Xtsw5YjguCxKx2O3u2O+758dV/JpQX79415A5s1SOTe
-lJuEHMg4g8u2vnd3hkQKm2LY7o0cBZxFyEPRAfYiD5ITg8vgYPWB0bWLttj0
-eGWmEUT68HdJwpAogUEwEs4BIJGBZVRSemXgcm8adhPJZD3ksoquM3Zdd51J
-QNqaLtjgwi0z0u3OcFsXjkbz43oJkXryZY5mmNZu/W3UZY50PSmYn5Xaxh3J
-sSEDBbBgYfZ6oxbK3TBtGq45Dp1sqc55KF0Y1giBxgXm6Xkf6e4ZrrmOgjdw
-+V6XrWEfJ9G3ZjK4zmxOWzanSae/sD7EyWF1WaH67pxU3nrWPRQrW2C5uaSH
-9bX3HEqMNQsjPRnegUfBIWXwd4cIdx+OONIsF+iuKrRqyzn/jnPCZn0fe1Br
-nIuAMOubHTBkgyUrpblyxe6SBzRdY/bwAmk/E6DRS6fqmYuTpfHWeRs3Kf0e
-upqb2MGcWx0nDxBUoqlHXWYG6CjD4x1QGuDT0t7x6EJ/vL0mU8pcgX6HWEZv
-xaotKQKoy4v5xbW48+bm5v3NAzrbtwx4j0Q66URHwF3QfNN1UZQz/M1ado62
-/vOs1hcXUyfwwTRXuPIuJD3nctjbho/Pnqv9Aa6HmM+3dgS2+fXN1VyOP13c
-vGODH+vXgynjhI72QprOaLxwi5cibLjnJVR4Xd/t7Rztgjuun9HxVn4IIfSx
-0Yn4MH78CmPKsXswZH00MjBiQMu2B86nfiEsnJvIQ09Kv2JYGPcD9G66Od/x
-J8+p09EAz4jipsH6EMLRoWWDp9PR2fNRl4HT0cX19Wgmcuf7Ps52/p2fHBx0
-st2UNNvOSOcn/U53zKPMDCPJDv/zE9nrjqOb9ab9X9g6+ZPhQpqmDMNuuJ1J
-7qIqfnH9Z0f3jZHJ1wFPxzx74VeDs9hTRMLEidrEGj3TC/PrWoiMOQujTVD9
-YI/81rQGF0e3nQD6uYnyDYKAJ8tygykV3xd6gf/dW82DEJC5w7Nx5fJniZQ/
-uheofyjfvRlpf5v51NbRu7zNTM7Kd0OKAk2fDh8+bDHZZc19bG/C4a7OhFPx
-J9FaNLgHFJeqfwH56IDj
----
-eJxtVMlu20AMvc9XEO6hSZ3Kl54C20CStkCLtCngHHqdWJTFZjQUhiMr/vuS
-8iInyEGAJD4u73FZwHdOjc8Zkzg3voNPCAml5Sj0FBAqTvaYmeIG7nnzbYsx
-Q+mzL9xNhIcut535AvfRIH4MDT2FABS3/IyQawSn/l/S9fUJ8WEfGxrMNZfQ
-JtJ8maFPZPkK5xYLuNl6Ct6qOS/6ExyC3Xqh9ZjzM0CJle9CHiF/BlM8BzUs
-GaqAL0azgBUiBAPPqiNo1u69Tj+K9DSGXFHTBjyPGEhZvinG5FvlpFQEOIYd
-XATuITIJXo6xHp7+4TqfxzI/itLqb9OUB4CMHr+7EM7xuacULAVQFqgQM/hY
-Qskomi3XGkSlhL+/7uGOY0WbLvlMHJ1baQ6qdkN7xojmbJHWwYvAhReY5l2L
-00voYjnYwc1zXs752P7lfKbfUFKymrd47RzAaIboG1xMhBvUfxOwaPtPe5ss
-Fazwk9QH+7sdnswMPZ+NqZ27EcCXNniKqIXHQyvXJ6pszbsaSNZeah3zTdfo
-HAvsuIOeu1CqTpoghJ1rjbMO4TRiPx02QgaRSGOrEnNamo6tT0rJZnE+o2UB
-D9bet4PmNJuKtQOuLLmgTTTcdZK5Oco99Oa2o1Du12f9yqpakJHLCRvUDOhl
-V8BPxdiYK1/zsC65XOsiKRBjKW9ayVtMiUp83eXXy1e4xxojbLR32nrjb3VT
-VCBKVuqnTZcCnPtRmXQfVZwziCovuL8UXWv2dGRTjSdGQarfldP18aIl+Wfj
-EJifQYt5t3P7O/BVb854DHR0dWcPE3K8S+4/Mc+1NA==
----
-eJxtVk1vGzcQvfNXDNCDgUJVLj0ZdgvFsQIDRhw4KYIcqV1KYswlBZKrrVr0
-v/fNkLsr2SmQak1yvt+8mVv65d+jickG/x89ht3vkVafH+jZbE00vjFKfTOu
-CZ2hHCjvzdmbOL5Z0tc9vkjjXx4CNU6nZBKF7fxmoVh4a52hAHtHawbSvhWV
-8p5ViqKT6HE2ZdNS71sTaQ2xJM/vimoVTTqYJtujcael3E9qEzX8KZr7ZNiL
-S79ZT+KIlO0OznTGZ50RP7Uma+vSggYOR6fZsVTvRFNn8j608OeIE71xkhoJ
-76ijDT0C3/yAc2mp1FcOL7SGzN+ajSWyHkpsKp6k1HfmWinCceP6trrJcnhy
-mS2JKhXPa0yd/hEiLpDfQxbVIg676vaWv+nRIENJqRL9IYajbTmVCbL+RE6u
-WZ0Lu531O77BAxtNu2QFclZeKS6L9hQiSoLSJJNZ0OsOCqP2LzjbnGDDhmjz
-SWpJXYAQ0hxi1j6TLrrIpoKHvd0h1WTh/Cg3oUJEnX1BhWkwNLA8Ep0Me3Gi
-VmfNCQyN1YwUNdi8h6YlvYpVAh30KbE0UprZoN+G2JWqb2oalpKlHeeYXXjq
-86HPmf/c66OZXD/oiIhZybC3zR7+xGPJ6PgCkQGe++CQwtXo6ca4MJTKT9c0
-WOdwQ3bnQyzpq1CFG0i0mpyApra17K927rQ4965BTaCDy4EAO51eKPRZcgRf
-s216p6MqrglanOPOQeRcdiktQn9/wk23sX4q+OxnIsltyFyrkt2t0bnH9YKC
-N+JCC8w0YlZVZEjccEmqZVK2fmwzwRfDVXNhYEhnQILQcicWONrUa2f/MYoL
-AXhv7Q7GlozqW/pgtrp3eYI2w6ytZ0DxiOkKIxtnZDFIEV5igpGm+3D//q+P
-dEMPn9ZP+Pm2ev6En/vn56dn/K5XX1ePxeZdn3LoJpPfQy8xF2Bc9hL+POG6
-BLkomeNr9AmnNjV7ME4FqRIA6B66kZqGS8uhWKS0lACxJ26cEg5HV8indp3e
-AgEK5lDW4iGzot1CFWcaCfvskFQjTePY4rsxmzqHuIwbQh+MvFfz+z6AdHU8
-nSf4jNzFgnY13AXd5PzH6vHx5h1+xUs+eFqvy4H0iGqND9kwrQqEhqJtohyg
-xrmJiyIfeMCqMMhUPcXlq1Cs9D/OJHdBVKIcZdgC6WFIUml4iIq+fpdqtqXz
-MCsi3sB1DrlHaMBx5udiorREuIxX6me8DIGfhqPGUXKZFRZD/3ALztSL/sOE
-yDzRhL9lqj2NU02pdYiVGtL1NdX/SlWdHKOe8mgmh/quPArj8fw1SqyFDd9I
-bMfj+WuUmHEEoLHQT+ElcXyOGG72AMzczYtBnXO/lo/r68p5v9GDh5WtbmSq
-1tTMz6bQ8HLlqQRywS4MaE01IbPgFCELoou0FzdqXAIKdBdT1pnQ3Vk0l3Jj
-nCxYGFFChcDReMsLz7SqvJ69CcCIWnp7entG59xCczmWVDpYuRBeGFpvtqhU
-loGQzLR3cQpkep43Nla6jpuwDvW3K0GhYh6wlWrgJzOPLFOavEH3x5clfZm4
-BP+X6SeVfk0k9A2sfpXoY+AcoTAPPsHQn6PhPU9MjyGAMD3zSQFAGaoYJVgz
-QKw9/kB8A0+IXWDosAgrAjuUZUAWiQKExcieepyhzJMtXYm/V5LbHXZGrAls
-ewYTTPBepRL2lCU9yCBhW+DjmnMwCUAmGmRpwXdlJmsSMxXeDaHHUN8YVeaK
-VJJniBSElTCXg1pld+oPSNNDmXuoms9MqjL8TN0TZH6CPzyoSfjBYInC0Kxl
-XshyRGpuoC9SDLFbD+871GNeItT/Ylon9Q==
----
-eJyNWG2P27gR/s5fQXg/eIM1tGib9gDD3sXmkk1TbJLrXYoUKIKAkiiLjST6
-SMqO7y7/vc8MqZd9ubbB3dqmZobz8sybtvLO7nbaeSHSF7l39mBKLUOtpemC
-dpUqtKyskw0oTLfDKXE9d5n8YGXhtApaKn6q3UpUxvkgC9tq2e/l0YQaDzvV
-RhkmZPK1taUsamsK7SGsaPp0HVPZir6LolHey97zhWEFGV67A1iYaiUh6wGL
-rEyjMynEY62YrJTL9oTfy7UQMtmddfp4no6fCXFTwd7ITPeORkEDabz0Qfka
-cuAAJZ3eW2+CdSf4Abenm1p1ErnG0+CMPoBYBam6kwym1bOL/5Uu/STv/TuT
-Ox0kP5K5Kr4I8SbAh01DAnvXyc400kRz04XQq7MBzu27MpM3DSzooP5BN6cV
-kapOvPpa6H0wtiPiUnvjoNex1mRGZzv91cCyLswkOl1pp7tClyu+Kyp9BuUE
-ItuqDgFUnYShvdfl3KEgOV/mdtd79ulol1PGI9zvEIhXzhESKvJqabXvlkGy
-DkJst/Kt6sy+b4YIRLFLL9/3Yd+HcA+rUNsFafsQcdZZ+p6oOCqnQU1VlrA5
-wonglQzCsWx1qAFIqOTh+xLOKUJzkvlJtrY01SmxDJlyNl0hlXPqxNbHkG0f
-RpcenUkguQdMj3p50Ama5cweUvoPuMLZflfTj+eDwGx215bJVvT3j3IkgAHn
-OPkTnz9/Np5rVdSfR27562/2N2mzqul9/Q1Ec7VA9ef57d/JWh1iZnm5pKfL
-8TH9/G4JePh99rSSkWHFn39Z3tMzMk86Ot3agz5PHMNT8UOjldcIBkP8ubsc
-5U/fMpdLAiHXofV69CXXmNY6BDwHsZjBgcF1l0rYW46551pBgfOWUMCIQ7rK
-QrugkOV7Z6wzAYkEmI9JR2QJNFxXhOKyER8ftSugfjnyygZloGHKCSnZUSGZ
-Fx9q5Br+U5DnvdrpiOOR9ePNj+8WI0+lgmrk4kbe3ny4uRtYFkK8aGzxxTPU
-VeMt4Z1TuXx44a/TjUT3X6/9NrKWOu93yFQRM5l8RfV935iCkexR6sglamcK
-pkm1Cijpm4AT3ZXwNNyDG1rlTkiyKtUX0iXUcDp5Lyc7xpJAlbBQTUN52zVQ
-VExZyLZS4JgTf9jJmXzDdRrBqvqGsVBaUo207YOiEqiak9Bf97rzKJGSY+5j
-0EkcpHQhQuXvvYamc6Ao/yUCjmondHGpLRRqr/KG29AAjwlCrNiDOFyzH5Wj
-kjCykNOv78f6mshqe4xgjmG/FiJqFhHoOQ3yCABVxLD4mt3pqTeyhY+AV1ou
-ugfV9NQno39ZBTLIdgsqzzOFH8Lof/J/Yx9+pNDcsPKk0E97XRhA+I584mHJ
-JoSrm7u7zSU+2RA6eH97Gw9S6f4Z5qKXohPlkEO9bgZurj9VdS2f+Hcmg+uB
-sKpKOQjVIDxxAVn/Nxd0nLiQtnB/4MKxGLi2VwkqrGCpK9NptOPzsd89Y4d8
-3/tg2+QAtjhxER1Q9lO/x1QxtArqR5ihEuYoRcmLRZTBynl2wq21ciNfKMd/
-f8EcQzHQsjW7mlor3B5WT5QvzxiMs9FYw9rRrzkELsbKuJgclBJvrgjdPrE9
-5dhHgB+ylliBhaF3yjcdUstgICm0EO+sa+FzVOA0r0wzSmqkNJxhaoXwLg5p
-cBqC86O1IY0k4k01HySGqBKCPSGyMnFMi3Of7Xjc46HLRFWi65hN2Gp2X8Z1
-IQo5SSq/UBpOoZ5eTcrmGLkwds10Wj2aez2Lpl+TDJQP60oIIGF86k4MmlI3
-pjVUezGliNQE+eN721Vmxz9wzQ8q1C8TLcb1WxRE/VWhROjVMEWKQZaLpVgT
-eBXqNufies2pSNOFm7l+2eqlFKQJ+WJSmCK8LFD2aADYORDsFb4S4ZK/HYf5
-Zz7BisZ8Adjto7mcJK3XSc56Tf/j4mfUS3ga57ZD31DzAi0rlgYVHbuTxe7S
-QbtjbYp6Pq0K+EyRL1rFIwO41MGakmI6zIdDu05jIrpJwydrAJka2bG2KPho
-YLVpVKnW8nd0HQSMzPTvb8gbdiGjh9pcIHsGsGDsl5VDYpEe05axmi8PT9/2
-ibJomoVuytJgEUBHx4hwGuK6GvLs/XyO1XKTX6nIoDeX+RWNz1Cq1aqLHVrM
-OmTMjmHW8HRCXsTZDPbLGTJ4VRT4uo+25hozJqaNFafrjONi0OGCJFa4Qmdz
-wytrl5+ygQjzJpOg4j3I75VUo/WMv+BojU0wKGrVoYPI8oTAmIILjMj7FAga
-jzo5DQl2rx0XBkwAT1ZRnpcD+UJgs0q1n2IxJbwYsnQ6GvJtcBL7Di6MvvA0
-zAzFKsqM5LvG5qoRgw4EeA800u6HNTMxj1sGRZUqO4V0ps6sDAqKAMcztVaY
-gTH23lg1R8+TQiiMAh6YN3Qh7tuKDR4KNzrAkTEpAf1JU9WjmcDNFA114lEu
-Rks8uUvHfpiqhcNFq3EDZQetxAAZeog9Gw4eTiIFcMQ9+TX/ij153oHlkXbi
-zzh2J+6AnynGZtfResFpQPZ7zo4uDmeZ/MgYE/cmMdiOjcY0p3t7Mt+aRQdu
-I7sQXBoopXrHiPJDcch1xVsNrLc8eg4rsH2UyDMAzhEoX1ravy2bcj82weum
-ijkJEoDcxCYXlcNGg8ldo1x2sBmbceqwYj6s0XjRo1yoL/GFDUXb0m5eya6n
-upD/G0MIJ8U/397J2Kb6mFZPrHzF+NzyrkejPJyMddEdjD6SWBIzIzNdRi9L
-luxrHs+Gh3ps/tRQwRbf11S2AcxJ29QSJdKob0pCnO+ryhQG5nLIpMyyjD83
-s/dJ28VeceE98SDIztouXr568Y/Xi1hutgsaJRdXItb9zVC2rrhobS7H3wPB
-uK5e+VDix2baeB/TeCLCaLySJZUQ+sTQh48c3fAX3c2YfeTeXEb1r37HlsXs
-9cl2MUiPqiwur0ZP8C6nG91S4b8YeS44YW1RYFZoUSsMOZVy1cfRHU+pxNDb
-GJTSgKTGqea55yLqckGhUTTGDa/ciAHUG3NF8Y4vZ7hDGXSov2LbPpDFYaaP
-mBTyF6mWP8W+IqBTvlDNJQGcV/Se4HZ4h5CAAWWKWqMrExWBfjiPa0qUig5N
-8EorKub1Pfo4VutM/AfqYjoJ
----
-eJx9Vl1v4zYQfOev2PoK+A5w5Ze+1IhzaC+9IEDuckguSIHiUFDSWiIikSpJ
-xfC/7ywly46T1A/+Ermc3Z2Z5ZpuuXWR6dpVlbEVKfWgbaToqA/p3189uSf2
-pMly3Dr/+JG+Ouq8yxtuf6LfhzWr1RDnpo9dHyPWb03TqMC2JBODLPrziS2+
-IbLe78HHHXtEz+h7zTgPB1DR6BA4kPZMOhDrsMMmhIrUd6QRUJDhSayZPIdI
-bjMEzIB+vaZ7PL69+fJNKQRFEBPIWaZCx6LGJtdX9SotkCee/+2N53Kfcazx
-ZwAoU3BGV1HWaHVxm//SmEemsAuRWyQXawp9xz4nvG2cb7UtOKHLOeW/YR17
-wMvoEsjTcTqSqmPsVsul73NE6jebzPlq6V3bLRP2qSJKTV8FQjBt1+xQuUeD
-I4aEK6lybZAUtzmXwJmOWa32Nb0WxFpZQdeMOxa0cz1qYakyT6hNpKllYUFS
-ZGlXw0/cpGyCQ/GkEEE1I0VaRhHLsUFFwSEYcOGEJWmzrCh006C8uYBXpyRx
-FuscGumpdiFmUoOjItAdx75TKn1IGYQMGX02PsSFUrTvHs0b6f8S7yFtnKfe
-08Y1jdsKZiQWEn2OglvdAti8AC29buYCpnGAK0iocz7Sb3it5JwDUS1v309b
-FjSPRSfdQ0unvSvZNv8AJTGBFqbrGx1TqaUm+7K7qezC5aFH6SzJgNZju/6e
-zvpBz17vqPI6RxTkwdsj3gwBMl0itRBLHDOn117vgO0xIUHVhP0/D6sTDU/6
-pF407jVKHp7GGlQ/IeWnxiCTjB5qti+JUEl/9GQTC8ElDoIW+q32YiKCcYvA
-LL07EkecB1KFs5aLmHQMtloCKxmKXJymAnnW+gn2kuSs9zpKiE1Q43FCmQOa
-5FkjTcf179Ez1KAUYzGWajbaF7WBzEaVfBi5fHr8yOg3KTzRYunTzuk3KH1v
-E+i46wyodsSgl1mWjoOdR3wC+Y6SQcUIXOK0GiVTEAPSEg+daolCHmJmdCMJ
-b014pYjiHzlPngxphV43ycUHq+u9EUo8C09tD2HlMNGOC7MxXGZSgJPYojCI
-MrEFAlsh0vr8bZkNVb4P0rEXrL0Ure0lcppDGkRNamfSXbsTIRyEl37Pf+yf
-DIoacSn11W0XoCPbRMdhb4VfHgR9zuRD/gGzpymF61hQuA5WduEAXMVjrzqA
-yYzdOJp9l5EkYwjOG4KusBa1oBHgTKlv3pU9fHgYXkMLxc2OGwuBBNdwCn71
-9fPNcMKK/j94MoO/vlzTJ2c3puqRnXH2dTsYuJAYOk6cmyMyPZ9maa0aJXgy
-n/I+DvMVHGPcMUSAYtXCp8ngIToMYi2+o456eJZE9E+R0J4r8bmzwx6Jsp7J
-+0wIup69xarZsDXLkojpgvM+iVqp4ULguXAtgJXDvWEvg5FN+8GSsKSxksM7
-khZGIJgDamDSsJ2TsR3VSAbFaY1lmCbRZvSHxBvlNV6X1HRdQ7ONxQZ7MCM5
-xXMaaeIG4+UNXbljHnEVqbFn+flDsge6FGIK9isbTMkfz5b5uThdSirDtQeW
-Qq2T6xVImqn/AAuEhqI=
----
-eJyNV22LGzcQ/r6/YrgU3BZn/aWfDtvgJrnUcMlB7koKJQR5LdvKyautpLXP
-hP73PjPaNzuXUMMdljQazTzzzItndFfHqo5R+5Bli7JfkgmkyLrt1pRbWusQ
-TamicSUdTdzhqFI+mqK2ytNRnSg62ji/VzFbq6hyWkbaKVGhD9pS3Hkdds6u
-SZX4o43VT2ZldXO8V+Exz7LeGNrXgTUcNJVqrwMOZzO6FeGHVtfZBZGNO208
-uWN5+WzAVxXhx0bVNrK10xjn3rk4neALZSKfQ7c+wUNrqXSRjt5EDYtPDARB
-ooyh9d+r8hGvBNFcppez7r2hve/gHMC1MJMhxNZpDKUDrAusVrCe8YFp/Fio
-dGE2pkiOBHKlPV1nGZGjGd3Htatjdz8v9ZFGhSuDs3rEMjmLf4bDr9/8/ufb
-Md0sHha31H5eiLZ0JvFIx1udPI66JDG/N/CDrlww0flTln3c4dz1wCuvqfBa
-Rb0eMwwnChCUWOyDtgcdyJRn/ma+U0fB7A1zCG7jAt2CcHivF8iJnf6hw/Bo
-NqdXYsJgtzMR97ubf3fnn2jwwf238N5EWqnikTbe7cWcEFXYpVjeCLtZHedJ
-p7xheeI+88uUek2rE3SF/g7yYQNGDZQgvZoQM2yvEy+740RBUKIOuuHSWWYu
-ViF6VcQsA2FhcwBRBnSyCrSE2MoxVRvZJvPKGprd6osuYlK8LHFH8nt7Vg1+
-ZR7+5iedq5NwCtjq1rlf0UuOWODopcNnbum9Mvbi0hveY8nQXeCF9odWAlCA
-BXuHkDZFSIy9r1finRYDb/nm9fXyrvf9JYdCUnZ517jZC17QCMI/Bdk6E9He
-X4pgqxe5MVYPBThdAQBIgINe7IOzFmb/UFpiEiprhHtgEv5vvTuGgUGC64WG
-c8QbSQF1KKiHKLdWCaaXeD2DdEPJM0o8HN0w87kyr2mUIByJL6ME1mhYFUjV
-0YHXplAWZQctglOLay8Nqy7fKE2BpNs5H4s6ctE/S93moU+cru3iGwl+vZPg
-xVAiT7ealH9OR55uDSREByPyypUbs629IPT9ViU4eF1oVHquDshAv6333DvE
-U+6ckGPwWT5j/BmQVjS07UCj0UBIIdD7lUPSyvfI7+e0QBa31aYPSaaKQldR
-mtu1gJvaG5ske5u2wjT7vWWccN2Ssq7/CFdRNNH8jC4Rns7zMVVWq8C0cY8I
-q3iRag/mhcKbiueFPNWoi34snaLtbU3Lg4afm771i1jcGdsgkhXotFs4vD4B
-uYZOdeDCxdrYwVnyC/Du3JoJtAhivrUoBBwQ/aT2MJvchnAd90wYE2DWwr+D
-8sbVgSealGJoCnXFzSsbFBnpw4O1tKM3Tw4MX96l3qRlNRrTSHwcMZk+Lj68
-H1NG33z6qLDYu1PfNqAr434NA/Q/tTkoi+iwddfNJPC/rJCJIAVgJlbIxuDR
-4ZuDKeGoBfhEhRN9YZ53MT4bM2b08Mfyfoz/iwfJlb/e3Xb5ImNjlt03aoaj
-A7i+M3bteaLYSACn0g0+F3J3LtEUuM/3BcRp34Q5kWZX+xN2riieKiyeL/lX
-8wb/aWP6vJmQlu9v7qaTdjPp75vYdx7kEn6VWDy7YmB79WzE/Kz2wxfeawX4
-LmuZv/gK1yoVd/9OeC/HajrpTjt9vi6L+UbZoKFIFs8bmeeJ9fqpskrKA6av
-1GKLLiCOu+z4rOw0iQ8I6ehqDKIlMwIZllWc0c3EDFq1lUP3AwwHcmrmHPSu
-uIXpxMzzDL8DMIhskXoyA3ZNmRWm8TqLDuNwPxrxCac2z8ioE06qCBsyHtSL
-ZjKP5z8aTHlwjyiwKJHC1BK/M2q452Q+xyVVVbC2MwLmbeQEO8UOV0PCpG+P
-MocV1gXdyknHllkxZE1RS9Dc3dwINHn2HxjNjlI=
----
-eJx9WG1P40gS/u5fUcoKAadgYO44rRCJNMPM3KID7ehgdSchNGrbnaQX2+1z
-twnZX79PVbcTO7CDVjvQ3fX21Ltn9E15r9v6q20r+S1J9k/ILha6dZTbqim1
-1/il9q0tyb7g0q80qabRqlV1rvE2ubXLf7RU2iXpF117R2vjV7bztFIvpl6S
-t7RuDfPpnLcV7QTlpXJOuzS5qcm2BXO35NUzJBQvqvZqyQLeqDwlZytNC1WZ
-UoHzRiQm/8YbXf7kmtbUfgGGous1xb8XXZ17Y2syjloN4ypdF7pIWR/yhhkG
-AdB5msBy5TSsss+kPD3gPnW+XfDD9B3MVJ7rBrb7Vas1LHcrUu2yqxiQyyS5
-8n7eBJqrU/x+eUnh57aHLUonCIECqVAUyuvv+2SfcfiXjysN6IudCL5g3eWE
-wi2DnKuypCNTO69VwRh3jl01FHgMM5MHILiv+1g4w8nu8Cv+ozRw3uSgpMeD
-4okOfj67m0wpWa9MvgLoTldZqR0pivzI1prWtisLqplpWW5w5RyrOHZnSr/Y
-NYCC8xN2a2HgQ29emFuryTU6NwuTM6HEY0qfNPQEd01LCzlTQiwfclRzFLPG
-CTSoTG0RuRvYOpvRw+4gSR6vsvnB1Wk2fyJ6GEokU8BfkKYh5Qu4bYLtauEl
-PwBI17Aiqi4oocGPqfOyK/gt2w3U2ZIrXc13vKEkuLirU5xSoRemFrxGbEYU
-8jIVbfe5ROVBexu4QgER6bQXrz7m14Wv7sqDJ3FsynYi6EEQTURmreDpZ1NL
-kCA8FAA9BKzwiYZDvS7wa8okoN2ILwrtlSlxkenSroNqMWQGWrNqgYrqrspY
-O8YLzrctc3WbKrMlJxToQsFxTJBpv9a6pt47gepdFAUaNoYR3NcgpRvPN1zl
-WuO0GKhqfg7TlhwjElMbKWHQEv5GmK5N4VdgVsI0Le61DVcVCd1sw6GtW4Mk
-E7Xq95iBhvk1UMQ4kArsI/bGyQvEoqm6igkCRKxivkLlzcWbnMe22dCiRVWV
-pGD/xLQEEdKu1GNZW9bqVVhHvpGT+PFm8cZcEDEHXbBT2cYTcmaJlOKHIAlx
-YVBSMsZ+4U9+R6nnDEF5/RWP2jUQnpIRxEHQmuVq+Ggcvru4/QhrUJK4ioZA
-cGrjpjS5obWSI7AT4ZxtEiPSCgLEuDvqnXOMstJ6k3doGDEU0gnY70IGglov
-ygkHNQ4w8Nr6XBDYD6c+2UNNgc6SbIr2YzIUmv+yLQze5+11n6KVRhAKHnnE
-4Vtriy6XMoDKhGBCFasV2hB9Vc4H7K5/8HbRwTH7BMU+AWsjXVDU7kt8KKvB
-aKYaNSRgY9tRZRq86jtRhrKCkKq14TiQbtEzDfGDIqe60of4GXPTaEuQfXRz
-/+vP/zw7P07pfltR/HsGLDjg2RMl6uYgafhuO6CEfBtJGgw0L5gowA2W/KfD
-/1DeOW+mlGGgCfErFRRwEmacBqcjTq32HfqWABY7GPda3T6ePQ3Vr4L6Uv5s
-fYJODFS47rGalXYOsw8rqlgkgLLfnTRtrlOhiNvsd1CMpHPrlILM6RA5sReG
-jr/bCY5i+rknKO1jxw+H34OU0fiAABkK/aScybeDkJRVcSUqhvebE2nf9OWV
-xyMACVvCyb2UKTfkJIkWgGBP9X1Vl04PoSsH0Ikbon9BUgbIEPQlOglrequq
-rFBDAGJPPzggrj9BG86Xg5Q+1pvBEMi+5rbStDZTWbkJPRl1D2NFkY4wCNw5
-s7+8Kp6anbTL7YyCCTDI7tOO41bk8pwcS7fmIRJjcJyZbdeO5jEeaEehRkSD
-TMPAs+lzSSotj64uDGRcCy/pw9nZ+Qn+O/9A53+/PL+4vDgLSqXnH86qbTpt
-1ULoVRYI4XbYdQbp1MdpYHN+4fet44f6VeedDN4eLEJ6NqpwrGMMZW4Z28K9
-96Nr2y1X3MtQUxtmAGwq9Rwa23plpcUxZucXoqYLjogTeoyzJPm4nTkHc6uB
-r7iaZ9gNVmOX8WCQGc5kUSxUKofrIon9QxYHHqG5bnCKklvZ9S4WOfwymPys
-/bh79P5OGAr8Ue8DCqQM1hOZ1KNVAfwpj7OoiaHYCUs2Llp2mTB+k8eDEuFd
-EBYAuPaimgiOP83m8u/j5y+ffvvX03vRwBQP3DZlYBJdwPEBs0GrJTzfbGI9
-NtIe+Syo0NDszdO01uujy94HUOatnscghue+7jKQG1JQITYkPphSYYcD9BYH
-Fv43ug+TFvfeQfYMLmSkldWzr2hgxMUeZWO8L4VHcV1KweK3CH3fs4JWEDvo
-cKOcRa0YJukP2p8ERLSyH6W4+6V03bUt2la5mYYZKOxLuI5tccoIxZDaCoYg
-/YqgKaO9u0Wr3696U7drbdgBGGz3LoRTIZVd83J4PptP4m+TABuYj7zPrk+h
-5MeSzxSnFxszxCXHqJzpwbwBHk3o7KHZhVZrF4na7XrvLbdTch1SWQVXAsA8
-3MIPfMB9NBwkOFGo91ac9odu7XZh/4utmWFsdvOVfAmgO94xkzBf6+Aivb9n
-9+409Yt9Dg18C35t13H3egf43iRx2Q73cDybH4ZfuAkeBlWP2ChK7mV3Iv3/
-zryoEhYd9w5/Lyuj35MZ/e/ulq5tvTDLrlVcslE2OY6aUkklREErebk+zbeP
-bJu2WbB6/NHjTRTwtyZeD6/MnOVgHofeYdc1MP8XrJOHvANy3HILRc/EqrvY
-lhq/afRsss9y0pf12dt6MpducjXALAbE8ISFnG6lzLkE0Tfdykku374cluEA
-h4uZ1sR7nhfRQpBmu08oarhp7E//nJa1DUuzfMZA33y7C7jRMiBzttPy7Sr9
-oQJ7H7FA3RofC47CQASetXDhgXxjO3ZHfYhGv2a/bLQPfuS4jKUP6va7v6Ln
-sitkKI1xmzKY8DpmZyADd2f8Tc6FjyDw4/ZdFMefDQBnrmU+VhnPGANDEOby
-zQ3JZBf94srTuO1cMC14zMUJQryOZv8nnmQDsg==
----
-eJx9Ul9r2zAQf9enOLKHJCTIDSl9MHVhrGEUylLi9mmUoSZnW0yWPOmc1LAP
-v5MdF9aVPUl3uvv9uVMGeReMK7ctNS0ReiE+v08BeWVD4XwdQMG9Ky99mvKx
-OaIl0JYcp/fKGOBb6Htncylybfd4jqFSATQFcCcLEUkRaVvGV8J6CSaCjg/o
-mccj6NI6jwcJQmQZPAVVohCPDtqAS84BXBPdePzVai6e9hCJG0UnA/FbPL1O
-uJrdWcBXVTcGlxHi7/bpP5n/AMb2s7tsnMq7yUmLp9nEqhonyx7QNTTNbj5x
-UKi9Npq6GM7fkCR6P5tQpXlaPAQLm90OagzR+2TO7iuEQQHPvfefHJVPuDOc
-9fU2YXaLL1rZOaP0NnNsANawWqWX6/TiCkg3FY84RNrvq6uL9XMKH7MOnLy+
-indStjWvPMBisKKdDQuuP8BitLPoN9eoEPAQv4OIGoepSNeg7eVJYExxwEK1
-hoZdx7L77dcfD3e38Bvi7cv2Wz6YiQTj+1O+2Q1ZVt/gnvQRTSejyrN6KLQP
-xH+2Ax3XHBWrKFXCHcHJ+Z8BTmiMhAeDKiADNc4TCGU7eGnL0PMV+hWDFH8A
-0rgOmg==
----
-eJxlUsFq3EAMvc9XCPbgFIJLINCykMPSSwrJJeQSQgnyWF4PGY+c0XgTU/rv
-lWyntOmcZPm9J+lJV/CNUxeOUw7pCDd8vMzwGkq/hvv9Aw7xHYGFs3P3PcHH
-LPiIIoAx8qsAJ4LCIFRgGjfNU0B4ONze1O57gSAwCbWKH1gK0Bv6EmdAea/6
-jzamFnr9V7Sw4EDQEZYpk5w7BzD77ghX/3ekb6e01M4gPedi4QZ/rDrm6oey
-GlyA69tBpjGiJ4GQpGCyiDvY/VT4L80tHdgQq0NK3gTryNg+zdrCUxcinZl+
-bZ/VJ+fupmaGi/rLMsdF/RU8Dyq8SKyewIhZKNdwTVrzfM15TNDQ4pNTM/02
-G21+8lSsN+uo4bfauYPpjpl6ShJOZKYOYyQD4cZZdf+YFDjZJsbMp9DqNrYB
-3cYUaEMmr17OKn/P1ooClLEse2/mZ3qZFARVtAKfbWT/1xIquxZMz2LncEht
-Jl3j9aQ+dLqhAZ/t5hbJkUVCE6l2vwEsDt63
----
-eJxTsdIrKC3O0FDS09MvLkpW0uQqSi0szSxKVVAvKs3LLNEvSS0uSU4sTlWH
-Syjl5KebFCmh8fWT8/PSMtNLixJL8oGSXJl5yTmlKakKPiBJOC8o1M8zhAsA
-/l0nWQ==
----
-eJxtyssKgCAQBdC9X3GxvRD0Qz5GEHyAM0IS/XvRslqfw5OFCnQfbkKIxQ+W
-Vkx3WvHbnGX6l0DRjiwPxtaRkCpWYzYFfPJesm813hnLkU6tqAZ1AUw8L8Y=
----
-eJytld9vmzAQx9/5K070AZAoXbdulaJlEu3IVIklEkm3R0Tgyiw5dmebalua
-/33GKS1drUmZ9wCy78fHx5eDE/i9IwLBJ6ymXYO+JwaL6BhRJ3VHThRKpXcM
-he95R7DppII1gjYBYQ3eor4xRX96Na2khJUOv6gkwnuzvNRLD6DBG+hBpV5U
-HVVlzZlU2gGQ87ZFkQjOFRxBLbBSCOobwkMoULxDKk2sPgCFKnWRFQ3TPI9f
-RS/tH7OL60/xqcVzNZ8t4tcWx9e0mMdvLI6sKBZFfGbxzNJVmsdvLZ7FbBa/
-s9jz7EuWL2M4t/nm6edsmUjyCx8CtKxj3e4qShqtjEk9TxTZoNzek/sBw3iJ
-P2q8VYQz2GpNz8SKcyqTIbE0MoYk2sHu2flDVpiKttvoV5kJwUX0N8jxaeTM
-2KvhzlkqQVjrzvHXvO2kb0B/aN9gzRss1zptdEo4Yo0iwu1EU6vph0B/NRjs
-YrONbyoqMYLpFHpzdACnj3enBCb1sRyT3nP2xANAJsEdwwh9ATn0mUaMJ2EO
-rmTfQM7FPMf8Sz1Bnxn8h8YZQI6d81iPc+sMJNfeGThOzWOBuLwt1/axcywV
-9T+l/vIur68mk362FmYqJ3oSh8PUTWRHlA7/DQn8qIA=
----
-eJylU01Lw0AQvedXDOuhCZQWwVNRhBYFoXiQisewbibpQroTZzetRvzvbpJK
-QsWm6mmZj/fe7uwbxpdSM4LQRuVlgiLgrwyXRrupKvXUoXU+MsgiCM6gDi24
-NYIqraONrqTTZIBSWFJ2wZDjFnMbqFxaCyvfvWj64LINpMUAIMG0YYq3MtdJ
-w+CzAB6D7GJ8VVjUyXD1VuANM3EE77Agk+qsZOmIJ6183MqByGmHrDy7gI9/
-Uj1ptwZbSLXnQpME/TsrRumwL2Ko0xkgvyUSYxBzye1RHdz3dKo/wsScstLW
-4ssm0b2x98QNujUltlHI4ar+2gx5YnAHo5bufNSXZ7QFmSR2FM5SojHk0ZHy
-9bH6s+SB8gC8Gih/g/dnF97LTecS/0s/j/mwtTq11VugN3OAoDHY4vFuNqtX
-5KFZtonfubBbn3r0oThYGRFFp8Na1/4KsndBjfkEA7hwOA==
----
-eJxtUD1PwzAQ3fMrjiBViYScPVLEUJYuIJV2pTLJOTUxdrDPKl347dhuIgJl
-sHz33r13H7fAW/JcqfMdEDpyYLQ6Ax0RhFHKnKTu68zih5cWIY8lyvQ92vw3
-aDyNnugKF8a+83/wMYF6Qf/w1mtJVZrGS8L8L9N6mdiQ6aRsFXcOdgF6QMG9
-ogygQ7FEWLIKOECKoEnsc4yZxlNiwjQwgNTw9PqGLbHWaEdck2POWEolABo/
-CaSA6iUaVHDzBcNEpfrgvJQfeqRiKKeKoEsoG6TuDkbcF+s4ewmr1UQ4P6K9
-LNQ0sN0/bnZ1HTutucPJZdqB8a4rZlXI5yaou2z5z6vHPL5svd9cPLfpgiwc
-sri6VZll3wMYtLU=
----
-eJyVUstugzAQvPMVK3oAJCu04doe+khPvbW3KEKOWRMLMKlt+lDVf68NCo0T
-RNUDknd3ZrwzWOFrJxRCKCSruwLDIGA11RpeUJvHVjXUGFRw3df3VGMAUCAH
-Y8ucKaRGtNL2ACwJlcllm+MHw73rwxeMEguJ7wveV3GWwPcM5wE57WrjUX1C
-JWSRtzweIWSSlFgOyuJ4ZS2afY05P8B6Vc3hBp77icfvh2721Jbl0IqjQQFG
-hSjpYfiG0gzQlTv24EsCnIAUNYFQtw1CQQ0Nk2MrVoTtYs0P2fQ6CYH09J50
-ws2WasFOzGztEneu/7cVTqt/GWG0rl3WoU8Mj4jLuQgmaRdgdkID2yGrtJuC
-UZQJWZ6ntD0LScg08V/SNHbpgdEueavKrrGTlVLtEEdIlU3GVgc/C40uYla5
-hRDW0XiONr+OsxnHOPGr/cUyt5i3SzrHObmIE3fN+oosSbZJBilFP8enYj8I
-fgDxQUXh
----
-eJzNWd1v2zYQf89fwepFNhCosJ29qEuHNGv6MK8B0gx76AKDkqiPhRY1iqpr
-tP3fe6SoL5pSlQwY9hDbOt79jvfj8XhUOPmnyjhBTpaHtIqIc3YWUlyW6Pfj
-DeN7LAThK/Qzah/OEIpIjGL1vCCfSC6WIEOIE1HxHDl9w79yB8ZIHp3Jv1Pk
-9XOR11bke1KKLUsSwgFXPlzjkmhYAY87zphQkHSFLlGt6nXCdSv86Eqp+1DL
-N51yQlmAqRKDR8LFQkJdgu05cu7ARvs/4DJ3BSqzPKFEsPyFs7QYbQyhl5Vq
-jr/IUcErAqCtKGcCHRh/BEgTzCswB7qkVZ5RPRO3RFqsJwND9TQkZT1WPmGa
-RVhkLO+h7sjnkBRSuLjiSbUHnLecM75EXxoucnJA3/omOeusBmoLV/sg7rmc
-xlLZGdPAlO5YHNeUd4xLcyfkBIx3eyJSFunoqUchSaTmn1d37weEeBEJqkSx
-GGNakiFdXpbHbHTwgHne8m+MEcnA2GCMBaZjgxDYqEcI3BzrYru9ubEjWZxM
-Al1tt0+fUuPEXKoo2rFKFJXci6Uy/SAikNw2wnrVY/xIVu5yWmGtFbCx5uBk
-kOe9jLw/FqTNRuyBJnIDllSlO0zISYtrVTPm6+tozm2GRuYbBjpMW9JzUrAy
-E4wf7fN4j/fE3HcJEYs63Drm5Yxd+LFv8GCbSUoyzMP0aF+LZiVkYJnIPhFU
-J0c/bbCXw2xl2oA+FCH11BRCIlDBWUE4PQ6rF4biJVJlJY3UwwwjndaDKl4L
-ASTKImmf5SnhmUC8roZq1Fki03tTOntITbQnFSYwifH9YDi1oGMhmM9C0LGA
-59MQdDTgseDr+EbCD3rhY+W2f2AcUgw4JSKfCxIK0mzH0MKB74fDqem0awcf
-pItwoBJ2TIXzmQp7TEnyZ5MVdmQFzyIr7JEVzCUrOiUrGmUqqmmKBuNRR1M0
-n6boWQkV/duEip6TUE/pOBaO70M1slWwKoefWU6iXe21tJQy5Ka49P2c+T60
-FNT3tarv74k7uzAEszEh9dOMRu7oprNtqSlAwZg7lpQn8yxmwQ7wismCeMpN
-cVLGjNAs89Q2Gp7gMP3yNa4olZl9jqgSf1UqCGWxFqAXAIlwHvWeQ63UdS41
-pHb1onXV5Aqy5Y3K49Lad9ZDsH/kAWD0SO1OkWOQ6vWzzvQwxXliJPiPesTJ
-7nKqLZ3sZ62tsBbD3lZfe1KWOCGoTFlFI/T+9l7+PKCqcLS6dCEvifD5Y2U5
-V+SoT6nc6Wo9D22QYMBEY6AiR079Nc9EMYmc+mueSXOYv727u70bWUs19t8t
-5pNvJ/+n1ezpek9ZyfXTV3JtX0ndlpn7mSW7gLLw0bankQvD9ag7do2ksstd
-dFeVUl1dBmfVsMnWNaZZhy8IDEvk6Cjkxb3h9BVytrfv3mxvr3/74Oi+vSPB
-MJxrBDfqU+m3sXKnG/0MU8lUkuWJteVnOek3/QvL/Q25JWuud2ZjDOa+Lw5M
-YwRTGM0N0GwsGwz4SDlpphNOQW1ce9tlQPl+zCretGhTgBduT6m5+ai9p8Rk
-jh/4BDvtjUx5+wm8ac71tigFFkT2QijmbA+rNMwNxPKQOJpiu0lgmohD1tiE
-IzbhiU3KW6NoxCganxsZMTF3ejc3I2n3FRWZfOdQ7+lYvr+7ySgx3yfI6zaw
-TUndM79Gjvfy7yp/fCn2xcqDfIez3Fcb/vL11XZbL0m8HkFbT6CtDbRf3775
-453G24zgbSbwNgaeOok03sUI3sUE3oWBd3N1f7XV2WW2OYrd9rWazM94dQ5h
-wN9Fk5A2E2hI5de6LRSWI7aGW9dQUmI7soZrrN8rWU6rSb3eQTWpNzijJjUH
-R9OIpo5ybjh4Zjh4Zjh4djh4VjjtCsUrL6SsJK9ge7S/Nu2vi/rX6U4Nq1Kw
-/S7uvdY/STjXVNJFloGa/T1hq3j5uv8PBjnaS1vEhkss+BHtj63xylhX+zDz
-WglMp/9PB+nt1EGrvbbADwf1/yvQ2Xd4YQkA
----
-eJytV99v4zYMfu9fQaQD3AA53253T8PSIbdLhwFdC7Qd9jAMgWLTiRdHzEly
-06zX/32UrfhXHNcp9tA0kUiK/Eh+ohR+TWOFMIhlkKQhDs7OgkRoDQ+ozW1q
-NqkxqOCn7PcvQuMZQIgRGP45exRJHAoTk+RVAFZDZWb4FODGLl5M1CJdozRT
-pUgN4RkKg77ELby8ScuLSIbCG8GPCT5iMr589+H7I5Yedht81UpEai3semEJ
-ZViNMqaqdUnlAfCc7QD8dluzfsHW6SMb/06bkFIz7BD75MRQqVwsjyWCMVzF
-CWZyg39SuXpv1psnP6HFYASD7SAXJhY7sCp0GLHVyIn4QUJZ3vYxXET5Uvgz
-jMdgVIrD6i75GbB27/bqangIiMIN6diQ2lXVSoD/ysP/2zeMvzVT8RCGHTqf
-TtXJIj2u0/C7LNeZkOEsUHhQu63Zvc+S2ACZVxhjL4PKG19+mX7+49d9nm3i
-mpnmJStv/0uxRlbx8qyyZ7YMOQ0yGF+W2XA1zQluOR/s+T94VVxEmbZrWixY
-ThGZfHFYFyxKvkDuC0YiTczVfiNXmLcfzsHTqmhAGF9CFn21l+xiw5g7fV66
-WcGs2Dx0rWEmOOaTWK28fi4EfZEKervD3dtwJ45XdYxcL7V5cbjVN0PUfjx4
-8co7Vtd1WiS/gtjBKQ2O/pqKRF9Qw71Rq3N5851nrQdmiaBQU6oCHMOcUhnq
-amtmK0LFqLvCsknul+N+0co4OXYJdWjdGxXLxRsUB3NapHrwBs13H53SeYZk
-uaWXlCYhzBE2DC+qRwzrVN5VwHBIkZaeenh3QHBMbF6vuNqoMb+GHTEWdDJ8
-sz1q2uM8N6zVeR66eLtpzPPf769jr4vw03VVk+m+orfne2tvYCl/ULv7yV3+
-h9NC2OVN1WrEjVq/1iPy3e64fbc0O24JspSrzA4VO1HbnEGdg0Z0bNKokEa4
-Y5fiwFZoLOMsXRQBFdc8z0OwRq3FAmuEwuuzNZolha8wiqYPNZr+c3J34waO
-vRsEGhHiCESS2NOtX842CJ6dM99c43G/wTpDMZZwfTP5fXrvakTik7FG1gXG
-HLMH375VVibX154Td4XKXb3hSXVm6CIT80PayoDn8BEQz4F2KgcnYx09f86l
-DM30iysqxjQvcIUmVZLDCtJ/94zMLmnmY7Vy/p/D1q4nO2CkPwsdBwVfeJpj
-EvM4ic3OnqUwQoUyQB5SLJPmd6ndsbBV6CrPUYaXD9NHVDuztAwaKVrneLPO
-1eRhcr3ns2BJK/Rz7x/5KQDZTT21X7Os8XEjqH0MoaO9yQ9xni6crS4iID+W
-3H4tgiX/3DDAFZ7eCsb0FAW0X0/SiIQRSU3jHCRtIUHDSXEtwsW5Y+CEXGCO
-elbRPOhyojY86brHgCt0mN7d3d71xawvZN1yJVIvAKdCdTJSLS85ksluJg7e
-rXRsxtZUG7G73qjkO+O9X7WlBnd9z5lgr8HM8UoZ7yXdZJ5l26n0o4GCgQum
-YwFkesPutqz8HRnIGik7VmYnF0VXvf0v9dtSXBm3/gd++rpG
----
-eJyNUu+L1DAQ/d6/YoiUvYO1d8fd+qG4yrIoCorijw+yLCVNpm3cNFmTCesh
-/u8maT1PUbDQNPPy3utMZhx+CcohMGWEDhJZ4X4iLhhFFyKoC0JPMTLoWFEI
-zb2HDxF6y4nQmefWjXkHjzO85R4LAIkdJGFznGgRAtCwhle279FVBk+wSIS6
-pkH5tHJaTKyKHBcYufG3mCEbg/ckbaA3gY4hOf5yWMAs41KCzfuYIzpqjG3w
-q8AjKWvg20TrotWfqWeves50/QRYKaF8pGFXbvelgLKE8uHNZXV9+Zplj38+
-D2rJCZv7Tp/+TzIiDVZClNTBo8iau1p3U537qru77DV0c9US29AD2xgJ6Saf
-shlXprPAXtjTwv9+gM5ZB4xHAQeHXOtb6OL3oEwPQ+gRtDIIp0GJAU4Igz3G
-SGkNLcaWqHFEOZulJm1cH0Y09CzZpps8Y96mcpJdy12Hkp1P7MojNS0Xh6nB
-G+f4bVaslsAm7HMwB+CUM+6Uxsq1cLW6mR101XHiGvB+jburJVwvYbXP4Pe4
-opFFeovtx5d1nabyXZ7fKo7x2d9mt/JBEZ4XPwB5P+6P
----
-eJy1VF1r2zAUfdevuKgDJw+1261PwQl0WVoKgUJpRyEE4djXtpgiZbK8dIT+
-914pS5dk/Ugf9mAhXR0dnXPvlS3+bKVF4FLnqi2QM7uJ2FZLl+StTBw2jlYa
-LWfsWmM/TY9H1/csVaY6syI3upTVIF1YfJ7nbePMXCj8haoZwIUxkCa7QZYm
-2yeSHTLm+W+X5oCrKmVmmYLA2uffRl/vLnkyeJ+8tvhxJ2TkXx+7Cgiyfz97
-SQA7gjkRwQyBkgtSF7hAGrRTv1musqaBW0r8/VwN6RSkYTXMGmQABZbgqyKU
-yYpTCgAMA3VrM2ds7MPiYa4EFU7qqkNF6wYUsaJ1QhuBDzkunDR6BWFns9fx
-ter34bS7Fx+bqkIbr83GwazHnY/Ha+pHGkn/vrrP76ujOh+s7hUVoexv6vhy
-gA7fEv8rTwR/U9/Za/fC6g//tvZJRA21yFwdTaEPURy9gPnrr5SKHjTNwlP2
-TRjTgm90E8Na9CQqpW1cr9cggYpoukHEM8oP8GWdOXA1Qo35D77jxn9MliDE
-xdV4JIS3/OmENod3V72eb92b8AeJqdc7W30da1x2+HMWjlbnN5ffJyfTR97t
-BtIndhODTQ==
----
-eJyVVE1vnDAQve+vmDqiJ6gvPVEvh0hBOVTaSnusopULXkJibGTMStto/3sG
-Gxs2H4dwgGE843nvzdjMisEWGyZ189McKq2ObVNsNgCsNyL+Az6sGgeru4MU
-JyGHotQ6hVtu0lv+H41WNYxeR/isRup/XILzbQlmETqv9NzwTlhh5lB0deee
-W/So4m8iHyCpIbGQQdIxuiz5bPo2fdkPFH63pOZWdAROXI74Nw6i8qUxdUVt
-cnzLMg8QuKrhqE3nSgE3AnRvW624TCHLXLYebT/apcx+R8Ce+8myNS7uwjqZ
-cbmdJ70Y9aZ3L2V89u+pA3n+x7MswyqJ4gT+kyoVJPJ7Y385aa6EwcCJ+AGV
-eNR1cfPiZLgwuvbOEkYIXpbI7GOedyuewpiFZ2guTgL5hNw7VjCD3pKbl9ja
-C7nmEBnf58l+ZvBmCr5EoQwMylaKd306onOKQ83wNGCdxwt9GtUz1tA/0IPF
-QoRPsGZUVYFvwai3vV8reT5wuxyR+XgE/wdIpwkMk+blTIHXdWvbk3BDGcOH
-MIeIqInMjq0ZbJ7jjGtVrxqCQodtMIjLQZAInlcigp/sGXwsVOx3KezvUihT
-GNxouy+2foV+8Gw8GLxH6PVFgnu7++UVD7JvWQ==
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mailfactory-1.4.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mailfactory-1.4.0.gem
deleted file mode 100644
index 5d3f536..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mailfactory-1.4.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/markaby-0.5.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/markaby-0.5.gem
deleted file mode 100644
index 16dea9e..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/markaby-0.5.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-1.1.gem
deleted file mode 100644
index ec0520c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-action-args-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-action-args-1.1.gem
deleted file mode 100644
index 0a26e6f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-action-args-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-assets-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-assets-1.1.gem
deleted file mode 100644
index 426cc59..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-assets-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-1.1.gem
deleted file mode 100644
index 21252b1..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-core-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-core-1.1.gem
deleted file mode 100644
index d8a67e2..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-core-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-more-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-more-1.1.gem
deleted file mode 100644
index f96daeb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-more-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-slice-password-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-slice-password-1.1.gem
deleted file mode 100644
index 0ffdeaf..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-auth-slice-password-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-cache-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-cache-1.1.gem
deleted file mode 100644
index c583618..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-cache-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-core-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-core-1.1.gem
deleted file mode 100644
index cfea288..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-core-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-exceptions-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-exceptions-1.1.gem
deleted file mode 100644
index 2c73185..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-exceptions-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-gen-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-gen-1.1.gem
deleted file mode 100644
index 3188960..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-gen-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-haml-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-haml-1.1.gem
deleted file mode 100644
index 97ac251..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-haml-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-helpers-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-helpers-1.1.gem
deleted file mode 100644
index b09e955..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-helpers-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-mailer-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-mailer-1.1.gem
deleted file mode 100644
index 55a7d17..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-mailer-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-more-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-more-1.1.gem
deleted file mode 100644
index 136451b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-more-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-param-protection-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-param-protection-1.1.gem
deleted file mode 100644
index b2166ec..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-param-protection-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-slices-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-slices-1.1.gem
deleted file mode 100644
index 605b09a..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb-slices-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb_datamapper-1.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb_datamapper-1.1.gem
deleted file mode 100644
index d38969c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/merb_datamapper-1.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/metaid-1.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/metaid-1.0.gem
deleted file mode 100644
index 8dc5c92..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/metaid-1.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mime-types-1.16.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mime-types-1.16.gem
deleted file mode 100644
index 49f1ef2..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mime-types-1.16.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/minitest-1.3.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/minitest-1.3.1.gem
deleted file mode 100644
index c490995..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/minitest-1.3.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mocha-0.9.5.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mocha-0.9.5.gem
deleted file mode 100644
index 4c81c20..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mocha-0.9.5.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mongrel-1.1.5-x86-mswin32-60.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mongrel-1.1.5-x86-mswin32-60.gem
deleted file mode 100644
index 1917f5c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/mongrel-1.1.5-x86-mswin32-60.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/open4-0.9.6.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/open4-0.9.6.gem
deleted file mode 100644
index 8cf6179..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/open4-0.9.6.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/pathname2-1.6.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/pathname2-1.6.1.gem
deleted file mode 100644
index f624b68..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/pathname2-1.6.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ptools-1.1.6.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ptools-1.1.6.gem
deleted file mode 100644
index cf02e0a..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ptools-1.1.6.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rack-0.9.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rack-0.9.1.gem
deleted file mode 100644
index e45e348..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rack-0.9.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rails-2.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rails-2.2.2.gem
deleted file mode 100644
index 07a43ba..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rails-2.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rake-0.8.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rake-0.8.4.gem
deleted file mode 100644
index 758fcd0..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rake-0.8.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rspec-1.1.12.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rspec-1.1.12.gem
deleted file mode 100644
index ce0420e..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rspec-1.1.12.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby-opengl-0.60.0-x86-mswin32.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby-opengl-0.60.0-x86-mswin32.gem
deleted file mode 100644
index 55d23af..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby-opengl-0.60.0-x86-mswin32.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby2ruby-1.2.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby2ruby-1.2.2.gem
deleted file mode 100644
index b49dc01..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/ruby2ruby-1.2.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rubyforge-1.0.3.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rubyforge-1.0.3.gem
deleted file mode 100644
index eed3a27..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/rubyforge-1.0.3.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/sexp_processor-3.0.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/sexp_processor-3.0.1.gem
deleted file mode 100644
index ea2c87d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/sexp_processor-3.0.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/templater-0.5.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/templater-0.5.0.gem
deleted file mode 100644
index a45e19f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/templater-0.5.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/test-unit-2.0.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/test-unit-2.0.1.gem
deleted file mode 100644
index c3420bb..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/test-unit-2.0.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/thor-0.9.9.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/thor-0.9.9.gem
deleted file mode 100644
index 80bbeee..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/thor-0.9.9.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-api-1.2.1-x86-mswin32-60.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-api-1.2.1-x86-mswin32-60.gem
deleted file mode 100644
index fce0096..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-api-1.2.1-x86-mswin32-60.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-clipboard-0.4.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-clipboard-0.4.4.gem
deleted file mode 100644
index 08b6287..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-clipboard-0.4.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-dir-0.3.2.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-dir-0.3.2.gem
deleted file mode 100644
index e6cdb2b..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-dir-0.3.2.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-eventlog-0.5.0.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-eventlog-0.5.0.gem
deleted file mode 100644
index 284689a..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-eventlog-0.5.0.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-0.5.5.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-0.5.5.gem
deleted file mode 100644
index 858771a..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-0.5.5.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-stat-1.3.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-stat-1.3.1.gem
deleted file mode 100644
index 3ca20c5..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-file-stat-1.3.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-open3-0.2.9-x86-mswin32-60.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-open3-0.2.9-x86-mswin32-60.gem
deleted file mode 100644
index c2c802d..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-open3-0.2.9-x86-mswin32-60.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-process-0.5.9.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-process-0.5.9.gem
deleted file mode 100644
index f0a3982..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-process-0.5.9.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sapi-0.1.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sapi-0.1.4.gem
deleted file mode 100644
index ab21984..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sapi-0.1.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sound-0.4.1.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sound-0.4.1.gem
deleted file mode 100644
index 176a300..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/win32-sound-0.4.1.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-api-0.2.4.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-api-0.2.4.gem
deleted file mode 100644
index 61ce359..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-api-0.2.4.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-pr-0.9.3.gem b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-pr-0.9.3.gem
deleted file mode 100644
index 951207c..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/cache/windows-pr-0.9.3.gem and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ParseTree-3.0.3-x86-mswin32-60.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ParseTree-3.0.3-x86-mswin32-60.gemspec
deleted file mode 100644
index c6cd095..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ParseTree-3.0.3-x86-mswin32-60.gemspec
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{ParseTree}
-  s.version = "3.0.3"
-  s.platform = %q{x86-mswin32-60}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.date = %q{2009-01-19}
-  s.description = %q{ParseTree is a C extension (using RubyInline) that extracts the parse tree for an entire class or a specific method and returns it as a s-expression (aka sexp) using ruby's arrays, strings, symbols, and integers.  As an example:  def conditional1(arg1) if arg1 == 0 then return 1 end return 0 end  becomes:  [:defn, :conditional1, [:scope, [:block, [:args, :arg1], [:if, [:call, [:lvar, :arg1], :==, [:array, [:lit, 0]]], [:return, [:lit, 1]], nil], [:return, [:lit, 0]]]]]}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.executables = ["parse_tree_abc", "parse_tree_audit", "parse_tree_deps", "parse_tree_show"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".autotest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/parse_tree_abc", "bin/parse_tree_audit", "bin/parse_tree_deps", "bin/parse_tree_show", "demo/printer.rb", "lib/gauntlet_parsetree.rb", "lib/parse_tree.rb", "lib/parse_tree_extensions.rb", "lib/unified_ruby.rb", "lib/unique.rb", "test/pt_testcase.rb", "test/something.rb", "test/test_all.rb", "test/test_parse_tree.rb", "test/test_parse_tree_extensions.rb", "test/test_unified_ruby.rb", "validate.sh", "lib/inline/Inline_RawParseTree_ab80.so"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/parsetree/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib", "test"]
-  s.rubyforge_project = %q{parsetree}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{ParseTree is a C extension (using RubyInline) that extracts the parse tree for an entire class or a specific method and returns it as a s-expression (aka sexp) using ruby's arrays, strings, symbols, and integers}
-  s.test_files = ["test/test_all.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<RubyInline>, [">= 3.7.0"])
-      s.add_runtime_dependency(%q<sexp_processor>, [">= 3.0.0"])
-      s.add_development_dependency(%q<hoe>, [">= 1.8.3"])
-    else
-      s.add_dependency(%q<RubyInline>, [">= 3.7.0"])
-      s.add_dependency(%q<sexp_processor>, [">= 3.0.0"])
-      s.add_dependency(%q<hoe>, [">= 1.8.3"])
-    end
-  else
-    s.add_dependency(%q<RubyInline>, [">= 3.7.0"])
-    s.add_dependency(%q<sexp_processor>, [">= 3.0.0"])
-    s.add_dependency(%q<hoe>, [">= 1.8.3"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/RubyInline-3.8.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/RubyInline-3.8.1.gemspec
deleted file mode 100644
index 200eb45..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/RubyInline-3.8.1.gemspec
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{RubyInline}
-  s.version = "3.8.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.date = %q{2008-10-24}
-  s.description = %q{Inline allows you to write foreign code within your ruby code. It automatically determines if the code in question has changed and builds it only when necessary. The extensions are then automatically loaded into the class/module that defines it.  You can even write extra builders that will allow you to write inlined code in any language. Use Inline::C as a template and look at Module#inline for the required API.}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "demo/fastmath.rb", "demo/hello.rb", "example.rb", "example2.rb", "lib/inline.rb", "test/test_inline.rb", "tutorial/example1.rb", "tutorial/example2.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/rubyinline/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.requirements = ["A POSIX environment and a compiler for your language."]
-  s.rubyforge_project = %q{rubyinline}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Inline allows you to write foreign code within your ruby code}
-  s.test_files = ["test/test_inline.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<ZenTest>, [">= 0"])
-      s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
-    else
-      s.add_dependency(%q<ZenTest>, [">= 0"])
-      s.add_dependency(%q<hoe>, [">= 1.8.0"])
-    end
-  else
-    s.add_dependency(%q<ZenTest>, [">= 0"])
-    s.add_dependency(%q<hoe>, [">= 1.8.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ZenTest-4.0.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ZenTest-4.0.0.gemspec
deleted file mode 100644
index 510bb05..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ZenTest-4.0.0.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{ZenTest}
-  s.version = "4.0.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis", "Eric Hodel"]
-  s.date = %q{2009-03-02}
-  s.description = %q{ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails.  ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Test::Unit.  unit_diff is a command-line filter to diff expected results from actual results and allow you to quickly see exactly what is wrong.  autotest is a continous testing facility meant to be used during development. As soon as you save a file, autotest will run the corresponding dependent tests.  multiruby runs anything you want on multiple versions of ruby. Great for compatibility checking! Use multiruby_setup to manage your installed versions.  Test::Rails helps you build industrial-strength Rails code.}
-  s.email = ["ryand-ruby at zenspider.com", "drbrain at segment7.net"]
-  s.executables = ["autotest", "multigem", "multiruby", "multiruby_setup", "unit_diff", "zentest"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "articles/how_to_use_zentest.txt", "example.txt"]
-  s.files = [".autotest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "articles/Article.css", "articles/getting_started_with_autotest.html", "articles/how_to_use_zentest.txt", "bin/autotest", "bin/multigem", "bin/multiruby", "bin/multiruby_setup", "bin/unit_diff", "bin/zentest", "example.txt", "example1.rb", "example2.rb", "example_dot_autotest.rb", "lib/autotest.rb", "lib/autotest/autoupdate.rb", "lib/autotest/camping.rb", "lib/autotest/cctray.rb", "lib/autotest/discover.rb", "lib/autotest/emacs.rb", "lib/autotest/email_notify.rb", "lib/autotest/fixtures.rb", "lib/autotest/growl.rb", "lib/autotest/heckle.rb", "lib/autotest/html_report.rb", "lib/autotest/jabber_notify.rb", "lib/autotest/kdenotify.rb", "lib/autotest/menu.rb", "lib/autotest/migrate.rb", "lib/autotest/notify.rb", "lib/autotest/once.rb", "lib/autotest/pretty.rb", "lib/autotest/rails.rb", "lib/autotest/rcov.rb", "lib/autotest/redgreen.rb", "lib/autotest/restart.rb", "lib/autotest/shame.rb", "lib/autotest/snarl.rb", "lib/autotest/timestamp.rb", "lib/focus.rb", "lib/functional_test_matrix.rb", "lib/multiruby.rb", "lib/unit_diff.rb", "lib/zentest.rb", "lib/zentest_mapping.rb", "test/test_autotest.rb", "test/test_focus.rb", "test/test_unit_diff.rb", "test/test_zentest.rb", "test/test_zentest_mapping.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.zenspider.com/ZSS/Products/ZenTest/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{zentest}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails}
-  s.test_files = ["test/test_autotest.rb", "test/test_focus.rb", "test/test_unit_diff.rb", "test/test_zentest.rb", "test/test_zentest_mapping.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<hoe>, [">= 1.9.0"])
-    else
-      s.add_dependency(%q<hoe>, [">= 1.9.0"])
-    end
-  else
-    s.add_dependency(%q<hoe>, [">= 1.9.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/abstract-1.0.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/abstract-1.0.0.gemspec
deleted file mode 100644
index b4d6fca..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/abstract-1.0.0.gemspec
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{abstract}
-  s.version = "1.0.0"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["makoto kuwata"]
-  s.cert_chain = nil
-  s.date = %q{2006-03-12}
-  s.description = %q{'abstract.rb' is a library which enable you to define abstract method in Ruby.}
-  s.files = ["lib/abstract.rb", "test/test.rb", "README.txt", "ChangeLog", "setup.rb", "abstract.gemspec"]
-  s.homepage = %q{http://rubyforge.org/projects/abstract}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{a library which enable you to define abstract method in Ruby}
-  s.test_files = ["test/test.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionmailer-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionmailer-2.2.2.gemspec
deleted file mode 100644
index 9028a6f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionmailer-2.2.2.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{actionmailer}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.autorequire = %q{action_mailer}
-  s.date = %q{2008-11-19}
-  s.description = %q{Makes it trivial to test and deliver emails sent from a single service layer.}
-  s.email = %q{david at loudthinking.com}
-  s.files = ["Rakefile", "install.rb", "README", "CHANGELOG", "MIT-LICENSE", "lib/action_mailer", "lib/action_mailer/adv_attr_accessor.rb", "lib/action_mailer/base.rb", "lib/action_mailer/helpers.rb", "lib/action_mailer/mail_helper.rb", "lib/action_mailer/part.rb", "lib/action_mailer/part_container.rb", "lib/action_mailer/quoting.rb", "lib/action_mailer/test_case.rb", "lib/action_mailer/test_helper.rb", "lib/action_mailer/utils.rb", "lib/action_mailer/vendor", "lib/action_mailer/vendor/text-format-0.6.3", "lib/action_mailer/vendor/text-format-0.6.3/text", "lib/action_mailer/vendor/text-format-0.6.3/text/format.rb", "lib/action_mailer/vendor/tmail-1.2.3", "lib/action_mailer/vendor/tmail-1.2.3/tmail", "lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/base64.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/compat.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/config.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/core_extensions.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/encode.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/header.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/interface.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/loader.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/mail.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/mailbox.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/mbox.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/net.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/obsolete.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/port.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/quoting.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner_r.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/stringio.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/utils.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail/version.rb", "lib/action_mailer/vendor/tmail-1.2.3/tmail.rb", "lib/action_mailer/vendor.rb", "lib/action_mailer/version.rb", "lib/action_mailer.rb", "lib/actionmailer.rb", "test/abstract_unit.rb", "test/delivery_method_test.rb", "test/fixtures", "test/fixtures/auto_layout_mailer", "test/fixtures/auto_layout_mailer/hello.html.erb", "test/fixtures/explicit_layout_mailer", "test/fixtures/explicit_layout_mailer/logout.html.erb", "test/fixtures/explicit_layout_mailer/signup.html.erb", "test/fixtures/first_mailer", "test/fixtures/first_mailer/share.erb", "test/fixtures/helper_mailer", "test/fixtures/helper_mailer/use_example_helper.erb", "test/fixtures/helper_mailer/use_helper.erb", "test/fixtures/helper_mailer/use_helper_method.erb", "test/fixtures/helper_mailer/use_mail_helper.erb", "test/fixtures/helpers", "test/fixtures/helpers/example_helper.rb", "test/fixtures/layouts", "test/fixtures/layouts/auto_layout_mailer.html.erb", "test/fixtures/layouts/spam.html.erb", "test/fixtures/path.with.dots", "test/fixtures/path.with.dots/funky_path_mailer", "test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb", "test/fixtures/raw_email", "test/fixtures/raw_email10", "test/fixtures/raw_email12", "test/fixtures/raw_email13", "test/fixtures/raw_email2", "test/fixtures/raw_email3", "test/fixtures/raw_email4", "test/fixtures/raw_email5", "test/fixtures/raw_email6", "test/fixtures/raw_email7", "test/fixtures/raw_email8", "test/fixtures/raw_email9", "test/fixtures/raw_email_quoted_with_0d0a", "test/fixtures/raw_email_with_invalid_characters_in_content_type", "test/fixtures/raw_email_with_nested_attachment", "test/fixtures/raw_email_with_partially_quoted_subject", "test/fixtures/second_mailer", "test/fixtures/second_mailer/share.erb", "test/fixtures/templates", "test/fixtures/templates/signed_up.erb", "test/fixtures/test_mailer", "test/fixtures/test_mailer/_subtemplate.text.plain.erb", "test/fixtures/test_mailer/body_ivar.erb", "test/fixtures/test_mailer/custom_templating_extension.text.html.haml", "test/fixtures/test_mailer/custom_templating_extension.text.plain.haml", "test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb", "test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak", "test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb", "test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~", "test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb", "test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb", "test/fixtures/test_mailer/included_subtemplate.text.plain.erb", "test/fixtures/test_mailer/rxml_template.builder", "test/fixtures/test_mailer/rxml_template.rxml", "test/fixtures/test_mailer/signed_up.html.erb", "test/fixtures/test_mailer/signed_up_with_url.erb", "test/mail_helper_test.rb", "test/mail_layout_test.rb", "test/mail_render_test.rb", "test/mail_service_test.rb", "test/quoting_test.rb", "test/test_helper_test.rb", "test/tmail_test.rb", "test/url_test.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.require_paths = ["lib"]
-  s.requirements = ["none"]
-  s.rubyforge_project = %q{actionmailer}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Service layer for easy email delivery and testing.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<actionpack>, ["= 2.2.2"])
-    else
-      s.add_dependency(%q<actionpack>, ["= 2.2.2"])
-    end
-  else
-    s.add_dependency(%q<actionpack>, ["= 2.2.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionpack-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionpack-2.2.2.gemspec
deleted file mode 100644
index bcdb32b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/actionpack-2.2.2.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{actionpack}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.autorequire = %q{action_controller}
-  s.date = %q{2008-11-19}
-  s.description = %q{Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser.}
-  s.email = %q{david at loudthinking.com}
-  s.files = ["Rakefile", "install.rb", "README", "RUNNING_UNIT_TESTS", "CHANGELOG", "MIT-LICENSE", "lib/action_controller", "lib/action_controller/assertions", "lib/action_controller/assertions/dom_assertions.rb", "lib/action_controller/assertions/model_assertions.rb", "lib/action_controller/assertions/response_assertions.rb", "lib/action_controller/assertions/routing_assertions.rb", "lib/action_controller/assertions/selector_assertions.rb", "lib/action_controller/assertions/tag_assertions.rb", "lib/action_controller/assertions.rb", "lib/action_controller/base.rb", "lib/action_controller/benchmarking.rb", "lib/action_controller/caching", "lib/action_controller/caching/actions.rb", "lib/action_controller/caching/fragments.rb", "lib/action_controller/caching/pages.rb", "lib/action_controller/caching/sql_cache.rb", "lib/action_controller/caching/sweeping.rb", "lib/action_controller/caching.rb", "lib/action_controller/cgi_ext", "lib/action_controller/cgi_ext/cookie.rb", "lib/action_controller/cgi_ext/query_extension.rb", "lib/action_controller/cgi_ext/session.rb", "lib/action_controller/cgi_ext/stdinput.rb", "lib/action_controller/cgi_ext.rb", "lib/action_controller/cgi_process.rb", "lib/action_controller/components.rb", "lib/action_controller/cookies.rb", "lib/action_controller/dispatcher.rb", "lib/action_controller/filters.rb", "lib/action_controller/flash.rb", "lib/action_controller/headers.rb", "lib/action_controller/helpers.rb", "lib/action_controller/http_authentication.rb", "lib/action_controller/integration.rb", "lib/action_controller/layout.rb", "lib/action_controller/mime_responds.rb", "lib/action_controller/mime_type.rb", "lib/action_controller/mime_types.rb", "lib/action_controller/performance_test.rb", "lib/action_controller/polymorphic_routes.rb", "lib/action_controller/rack_process.rb", "lib/action_controller/record_identifier.rb", "lib/action_controller/request.rb", "lib/action_controller/request_forgery_protection.rb", "lib/action_controller/request_profiler.rb", "lib/action_controller/rescue.rb", "lib/action_controller/resources.rb", "lib/action_controller/response.rb", "lib/action_controller/routing", "lib/action_controller/routing/builder.rb", "lib/action_controller/routing/optimisations.rb", "lib/action_controller/routing/recognition_optimisation.rb", "lib/action_controller/routing/route.rb", "lib/action_controller/routing/route_set.rb", "lib/action_controller/routing/routing_ext.rb", "lib/action_controller/routing/segments.rb", "lib/action_controller/routing.rb", "lib/action_controller/session", "lib/action_controller/session/active_record_store.rb", "lib/action_controller/session/cookie_store.rb", "lib/action_controller/session/drb_server.rb", "lib/action_controller/session/drb_store.rb", "lib/action_controller/session/mem_cache_store.rb", "lib/action_controller/session_management.rb", "lib/action_controller/status_codes.rb", "lib/action_controller/streaming.rb", "lib/action_controller/templates", "lib/action_controller/templates/rescues", "lib/action_controller/templates/rescues/_request_and_response.erb", "lib/action_controller/templates/rescues/_trace.erb", "lib/action_controller/templates/rescues/diagnostics.erb", "lib/action_controller/templates/rescues/layout.erb", "lib/action_controller/templates/rescues/missing_template.erb", "lib/action_controller/templates/rescues/routing_error.erb", "lib/action_controller/templates/rescues/template_error.erb", "lib/action_controller/templates/rescues/unknown_action.erb", "lib/action_controller/test_case.rb", "lib/action_controller/test_process.rb", "lib/action_controller/translation.rb", "lib/action_controller/url_rewriter.rb", "lib/action_controller/vendor", "lib/action_controller/vendor/html-scanner", "lib/action_controller/vendor/html-scanner/html", "lib/action_controller/vendor/html-scanner/html/document.rb", "lib/action_controller/vendor/html-scanner/html/node.rb", "lib/action_controller/vendor/html-scanner/html/sanitizer.rb", "lib/action_controller/vendor/html-scanner/html/selector.rb", "lib/action_controller/vendor/html-scanner/html/tokenizer.rb", "lib/action_controller/vendor/html-scanner/html/version.rb", "lib/action_controller/verification.rb", "lib/action_controller.rb", "lib/action_pack", "lib/action_pack/version.rb", "lib/action_pack.rb", "lib/action_view", "lib/action_view/base.rb", "lib/action_view/helpers", "lib/action_view/helpers/active_record_helper.rb", "lib/action_view/helpers/asset_tag_helper.rb", "lib/action_view/helpers/atom_feed_helper.rb", "lib/action_view/helpers/benchmark_helper.rb", "lib/action_view/helpers/cache_helper.rb", "lib/action_view/helpers/capture_helper.rb", "lib/action_view/helpers/date_helper.rb", "lib/action_view/helpers/debug_helper.rb", "lib/action_view/helpers/form_helper.rb", "lib/action_view/helpers/form_options_helper.rb", "lib/action_view/helpers/form_tag_helper.rb", "lib/action_view/helpers/javascript_helper.rb", "lib/action_view/helpers/javascripts", "lib/action_view/helpers/number_helper.rb", "lib/action_view/helpers/prototype_helper.rb", "lib/action_view/helpers/record_identification_helper.rb", "lib/action_view/helpers/record_tag_helper.rb", "lib/action_view/helpers/sanitize_helper.rb", "lib/action_view/helpers/scriptaculous_helper.rb", "lib/action_view/helpers/tag_helper.rb", "lib/action_view/helpers/text_helper.rb", "lib/action_view/helpers/translation_helper.rb", "lib/action_view/helpers/url_helper.rb", "lib/action_view/helpers.rb", "lib/action_view/inline_template.rb", "lib/action_view/locale", "lib/action_view/locale/en.yml", "lib/action_view/partials.rb", "lib/action_view/paths.rb", "lib/action_view/renderable.rb", "lib/action_view/renderable_partial.rb", "lib/action_view/template.rb", "lib/action_view/template_error.rb", "lib/action_view/template_handler.rb", "lib/action_view/template_handlers", "lib/action_view/template_handlers/builder.rb", "lib/action_view/template_handlers/erb.rb", "lib/action_view/template_handlers/rjs.rb", "lib/action_view/template_handlers.rb", "lib/action_view/test_case.rb", "lib/action_view.rb", "lib/actionpack.rb", "test/abstract_unit.rb", "test/active_record_unit.rb", "test/activerecord", "test/activerecord/active_record_store_test.rb", "test/activerecord/render_partial_with_record_identification_test.rb", "test/adv_attr_test.rb", "test/controller", "test/controller/action_pack_assertions_test.rb", "test/controller/addresses_render_test.rb", "test/controller/assert_select_test.rb", "test/controller/base_test.rb", "test/controller/benchmark_test.rb", "test/controller/caching_test.rb", "test/controller/capture_test.rb", "test/controller/cgi_test.rb", "test/controller/components_test.rb", "test/controller/content_type_test.rb", "test/controller/controller_fixtures", "test/controller/controller_fixtures/app", "test/controller/controller_fixtures/app/controllers", "test/controller/controller_fixtures/app/controllers/admin", "test/controller/controller_fixtures/app/controllers/admin/user_controller.rb", "test/controller/controller_fixtures/app/controllers/user_controller.rb", "test/controller/controller_fixtures/vendor", "test/controller/controller_fixtures/vendor/plugins", "test/controller/controller_fixtures/vendor/plugins/bad_plugin", "test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib", "test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb", "test/controller/cookie_test.rb", "test/controller/deprecation", "test/controller/deprecation/deprecated_base_methods_test.rb", "test/controller/dispatcher_test.rb", "test/controller/fake_controllers.rb", "test/controller/fake_models.rb", "test/controller/filter_params_test.rb", "test/controller/filters_test.rb", "test/controller/flash_test.rb", "test/controller/header_test.rb", "test/controller/helper_test.rb", "test/controller/html-scanner", "test/controller/html-scanner/cdata_node_test.rb", "test/controller/html-scanner/document_test.rb", "test/controller/html-scanner/node_test.rb", "test/controller/html-scanner/sanitizer_test.rb", "test/controller/html-scanner/tag_node_test.rb", "test/controller/html-scanner/text_node_test.rb", "test/controller/html-scanner/tokenizer_test.rb", "test/controller/http_authentication_test.rb", "test/controller/integration_test.rb", "test/controller/integration_upload_test.rb", "test/controller/layout_test.rb", "test/controller/logging_test.rb", "test/controller/mime_responds_test.rb", "test/controller/mime_type_test.rb", "test/controller/polymorphic_routes_test.rb", "test/controller/rack_test.rb", "test/controller/record_identifier_test.rb", "test/controller/redirect_test.rb", "test/controller/render_test.rb", "test/controller/request_forgery_protection_test.rb", "test/controller/request_test.rb", "test/controller/rescue_test.rb", "test/controller/resources_test.rb", "test/controller/routing_test.rb", "test/controller/selector_test.rb", "test/controller/send_file_test.rb", "test/controller/session", "test/controller/session/cookie_store_test.rb", "test/controller/session/mem_cache_store_test.rb", "test/controller/session_fixation_test.rb", "test/controller/session_management_test.rb", "test/controller/test_test.rb", "test/controller/translation_test.rb", "test/controller/url_rewriter_test.rb", "test/controller/verification_test.rb", "test/controller/view_paths_test.rb", "test/controller/webservice_test.rb", "test/fixtures", "test/fixtures/_top_level_partial.html.erb", "test/fixtures/_top_level_partial_only.erb", "test/fixtures/addresses", "test/fixtures/addresses/list.erb", "test/fixtures/bad_customers", "test/fixtures/bad_customers/_bad_customer.html.erb", "test/fixtures/companies.yml", "test/fixtures/company.rb", "test/fixtures/content_type", "test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml", "test/fixtures/content_type/render_default_for_rhtml.rhtml", "test/fixtures/content_type/render_default_for_rjs.rjs", "test/fixtures/content_type/render_default_for_rxml.rxml", "test/fixtures/customers", "test/fixtures/customers/_customer.html.erb", "test/fixtures/db_definitions", "test/fixtures/db_definitions/sqlite.sql", "test/fixtures/developer.rb", "test/fixtures/developers", "test/fixtures/developers/_developer.erb", "test/fixtures/developers.yml", "test/fixtures/developers_projects.yml", "test/fixtures/fun", "test/fixtures/fun/games", "test/fixtures/fun/games/_game.erb", "test/fixtures/fun/games/hello_world.erb", "test/fixtures/fun/serious", "test/fixtures/fun/serious/games", "test/fixtures/fun/serious/games/_game.erb", "test/fixtures/functional_caching", "test/fixtures/functional_caching/_partial.erb", "test/fixtures/functional_caching/formatted_fragment_cached.html.erb", "test/fixtures/functional_caching/formatted_fragment_cached.js.rjs", "test/fixtures/functional_caching/formatted_fragment_cached.xml.builder", "test/fixtures/functional_caching/fragment_cached.html.erb", "test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb", "test/fixtures/functional_caching/inline_fragment_cached.html.erb", "test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs", "test/fixtures/good_customers", "test/fixtures/good_customers/_good_customer.html.erb", "test/fixtures/helpers", "test/fixtures/helpers/abc_helper.rb", "test/fixtures/helpers/fun", "test/fixtures/helpers/fun/games_helper.rb", "test/fixtures/helpers/fun/pdf_helper.rb", "test/fixtures/layout_tests", "test/fixtures/layout_tests/alt", "test/fixtures/layout_tests/alt/hello.rhtml", "test/fixtures/layout_tests/layouts", "test/fixtures/layout_tests/layouts/controller_name_space", "test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml", "test/fixtures/layout_tests/layouts/item.rhtml", "test/fixtures/layout_tests/layouts/layout_test.rhtml", "test/fixtures/layout_tests/layouts/multiple_extensions.html.erb", "test/fixtures/layout_tests/layouts/symlinked", "test/fixtures/layout_tests/layouts/third_party_template_library.mab", "test/fixtures/layout_tests/views", "test/fixtures/layout_tests/views/hello.rhtml", "test/fixtures/layouts", "test/fixtures/layouts/_column.html.erb", "test/fixtures/layouts/block_with_layout.erb", "test/fixtures/layouts/builder.builder", "test/fixtures/layouts/partial_with_layout.erb", "test/fixtures/layouts/standard.erb", "test/fixtures/layouts/talk_from_action.erb", "test/fixtures/layouts/yield.erb", "test/fixtures/mascot.rb", "test/fixtures/mascots", "test/fixtures/mascots/_mascot.html.erb", "test/fixtures/mascots.yml", "test/fixtures/multipart", "test/fixtures/multipart/binary_file", "test/fixtures/multipart/boundary_problem_file", "test/fixtures/multipart/bracketed_param", "test/fixtures/multipart/large_text_file", "test/fixtures/multipart/mixed_files", "test/fixtures/multipart/mona_lisa.jpg", "test/fixtures/multipart/single_parameter", "test/fixtures/multipart/text_file", "test/fixtures/override", "test/fixtures/override/test", "test/fixtures/override/test/hello_world.erb", "test/fixtures/override2", "test/fixtures/override2/layouts", "test/fixtures/override2/layouts/test", "test/fixtures/override2/layouts/test/sub.erb", "test/fixtures/post_test", "test/fixtures/post_test/layouts", "test/fixtures/post_test/layouts/post.html.erb", "test/fixtures/post_test/layouts/super_post.iphone.erb", "test/fixtures/post_test/post", "test/fixtures/post_test/post/index.html.erb", "test/fixtures/post_test/post/index.iphone.erb", "test/fixtures/post_test/super_post", "test/fixtures/post_test/super_post/index.html.erb", "test/fixtures/post_test/super_post/index.iphone.erb", "test/fixtures/project.rb", "test/fixtures/projects", "test/fixtures/projects/_project.erb", "test/fixtures/projects.yml", "test/fixtures/public", "test/fixtures/public/404.html", "test/fixtures/public/500.html", "test/fixtures/public/images", "test/fixtures/public/images/rails.png", "test/fixtures/public/javascripts", "test/fixtures/public/javascripts/application.js", "test/fixtures/public/javascripts/bank.js", "test/fixtures/public/javascripts/cache", "test/fixtures/public/javascripts/controls.js", "test/fixtures/public/javascripts/dragdrop.js", "test/fixtures/public/javascripts/effects.js", "test/fixtures/public/javascripts/prototype.js", "test/fixtures/public/javascripts/robber.js", "test/fixtures/public/javascripts/subdir", "test/fixtures/public/javascripts/subdir/subdir.js", "test/fixtures/public/javascripts/version.1.0.js", "test/fixtures/public/stylesheets", "test/fixtures/public/stylesheets/bank.css", "test/fixtures/public/stylesheets/robber.css", "test/fixtures/public/stylesheets/subdir", "test/fixtures/public/stylesheets/subdir/subdir.css", "test/fixtures/public/stylesheets/version.1.0.css", "test/fixtures/replies", "test/fixtures/replies/_reply.erb", "test/fixtures/replies.yml", "test/fixtures/reply.rb", "test/fixtures/respond_to", "test/fixtures/respond_to/all_types_with_layout.html.erb", "test/fixtures/respond_to/all_types_with_layout.js.rjs", "test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb", "test/fixtures/respond_to/iphone_with_html_response_type.html.erb", "test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb", "test/fixtures/respond_to/layouts", "test/fixtures/respond_to/layouts/missing.html.erb", "test/fixtures/respond_to/layouts/standard.html.erb", "test/fixtures/respond_to/layouts/standard.iphone.erb", "test/fixtures/respond_to/using_defaults.html.erb", "test/fixtures/respond_to/using_defaults.js.rjs", "test/fixtures/respond_to/using_defaults.xml.builder", "test/fixtures/respond_to/using_defaults_with_type_list.html.erb", "test/fixtures/respond_to/using_defaults_with_type_list.js.rjs", "test/fixtures/respond_to/using_defaults_with_type_list.xml.builder", "test/fixtures/scope", "test/fixtures/scope/test", "test/fixtures/scope/test/modgreet.erb", "test/fixtures/shared.html.erb", "test/fixtures/symlink_parent", "test/fixtures/symlink_parent/symlinked_layout.erb", "test/fixtures/test", "test/fixtures/test/_counter.html.erb", "test/fixtures/test/_customer.erb", "test/fixtures/test/_customer_counter.erb", "test/fixtures/test/_customer_greeting.erb", "test/fixtures/test/_customer_with_var.erb", "test/fixtures/test/_form.erb", "test/fixtures/test/_hash_greeting.erb", "test/fixtures/test/_hash_object.erb", "test/fixtures/test/_hello.builder", "test/fixtures/test/_labelling_form.erb", "test/fixtures/test/_layout_for_block_with_args.html.erb", "test/fixtures/test/_layout_for_partial.html.erb", "test/fixtures/test/_local_inspector.html.erb", "test/fixtures/test/_partial.erb", "test/fixtures/test/_partial.html.erb", "test/fixtures/test/_partial.js.erb", "test/fixtures/test/_partial_for_use_in_layout.html.erb", "test/fixtures/test/_partial_only.erb", "test/fixtures/test/_partial_with_only_html_version.html.erb", "test/fixtures/test/_person.erb", "test/fixtures/test/_raise.html.erb", "test/fixtures/test/action_talk_to_layout.erb", "test/fixtures/test/calling_partial_with_layout.html.erb", "test/fixtures/test/capturing.erb", "test/fixtures/test/content_for.erb", "test/fixtures/test/content_for_concatenated.erb", "test/fixtures/test/content_for_with_parameter.erb", "test/fixtures/test/delete_with_js.rjs", "test/fixtures/test/dot.directory", "test/fixtures/test/dot.directory/render_file_with_ivar.erb", "test/fixtures/test/enum_rjs_test.rjs", "test/fixtures/test/formatted_html_erb.html.erb", "test/fixtures/test/formatted_xml_erb.builder", "test/fixtures/test/formatted_xml_erb.html.erb", "test/fixtures/test/formatted_xml_erb.xml.erb", "test/fixtures/test/greeting.erb", "test/fixtures/test/greeting.js.rjs", "test/fixtures/test/hello.builder", "test/fixtures/test/hello_world.erb", "test/fixtures/test/hello_world_container.builder", "test/fixtures/test/hello_world_from_rxml.builder", "test/fixtures/test/hello_world_with_layout_false.erb", "test/fixtures/test/hello_xml_world.builder", "test/fixtures/test/hyphen-ated.erb", "test/fixtures/test/implicit_content_type.atom.builder", "test/fixtures/test/list.erb", "test/fixtures/test/nested_layout.erb", "test/fixtures/test/non_erb_block_content_for.builder", "test/fixtures/test/potential_conflicts.erb", "test/fixtures/test/render_file_from_template.html.erb", "test/fixtures/test/render_file_with_ivar.erb", "test/fixtures/test/render_file_with_locals.erb", "test/fixtures/test/render_to_string_test.erb", "test/fixtures/test/sub_template_raise.html.erb", "test/fixtures/test/template.erb", "test/fixtures/test/update_element_with_capture.erb", "test/fixtures/test/using_layout_around_block.html.erb", "test/fixtures/test/using_layout_around_block_with_args.html.erb", "test/fixtures/topic.rb", "test/fixtures/topics", "test/fixtures/topics/_topic.html.erb", "test/fixtures/topics.yml", "test/template", "test/template/active_record_helper_i18n_test.rb", "test/template/active_record_helper_test.rb", "test/template/asset_tag_helper_test.rb", "test/template/atom_feed_helper_test.rb", "test/template/benchmark_helper_test.rb", "test/template/compiled_templates_test.rb", "test/template/date_helper_i18n_test.rb", "test/template/date_helper_test.rb", "test/template/erb_util_test.rb", "test/template/form_helper_test.rb", "test/template/form_options_helper_test.rb", "test/template/form_tag_helper_test.rb", "test/template/javascript_helper_test.rb", "test/template/number_helper_i18n_test.rb", "test/template/number_helper_test.rb", "test/template/prototype_helper_test.rb", "test/template/record_tag_helper_test.rb", "test/template/render_test.rb", "test/template/sanitize_helper_test.rb", "test/template/scriptaculous_helper_test.rb", "test/template/tag_helper_test.rb", "test/template/test_test.rb", "test/template/text_helper_test.rb", "test/template/translation_helper_test.rb", "test/template/url_helper_test.rb", "test/testing_sandbox.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.require_paths = ["lib"]
-  s.requirements = ["none"]
-  s.rubyforge_project = %q{actionpack}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Web-flow and rendering framework putting the VC in MVC.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<activesupport>, ["= 2.2.2"])
-    else
-      s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-    end
-  else
-    s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activerecord-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activerecord-2.2.2.gemspec
deleted file mode 100644
index c4116b7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activerecord-2.2.2.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{activerecord}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.autorequire = %q{active_record}
-  s.date = %q{2008-11-20}
-  s.description = %q{Implements the ActiveRecord pattern (Fowler, PoEAA) for ORM. It ties database tables and classes together for business objects, like Customer or Subscription, that can find, save, and destroy themselves without resorting to manual SQL.}
-  s.email = %q{david at loudthinking.com}
-  s.extra_rdoc_files = ["README"]
-  s.files = ["Rakefile", "install.rb", "README", "RUNNING_UNIT_TESTS", "CHANGELOG", "lib/active_record", "lib/active_record/aggregations.rb", "lib/active_record/association_preload.rb", "lib/active_record/associations", "lib/active_record/associations/association_collection.rb", "lib/active_record/associations/association_proxy.rb", "lib/active_record/associations/belongs_to_association.rb", "lib/active_record/associations/belongs_to_polymorphic_association.rb", "lib/active_record/associations/has_and_belongs_to_many_association.rb", "lib/active_record/associations/has_many_association.rb", "lib/active_record/associations/has_many_through_association.rb", "lib/active_record/associations/has_one_association.rb", "lib/active_record/associations/has_one_through_association.rb", "lib/active_record/associations.rb", "lib/active_record/attribute_methods.rb", "lib/active_record/base.rb", "lib/active_record/calculations.rb", "lib/active_record/callbacks.rb", "lib/active_record/connection_adapters", "lib/active_record/connection_adapters/abstract", "lib/active_record/connection_adapters/abstract/connection_pool.rb", "lib/active_record/connection_adapters/abstract/connection_specification.rb", "lib/active_record/connection_adapters/abstract/database_statements.rb", "lib/active_record/connection_adapters/abstract/query_cache.rb", "lib/active_record/connection_adapters/abstract/quoting.rb", "lib/active_record/connection_adapters/abstract/schema_definitions.rb", "lib/active_record/connection_adapters/abstract/schema_statements.rb", "lib/active_record/connection_adapters/abstract_adapter.rb", "lib/active_record/connection_adapters/mysql_adapter.rb", "lib/active_record/connection_adapters/postgresql_adapter.rb", "lib/active_record/connection_adapters/sqlite3_adapter.rb", "lib/active_record/connection_adapters/sqlite_adapter.rb", "lib/active_record/dirty.rb", "lib/active_record/dynamic_finder_match.rb", "lib/active_record/fixtures.rb", "lib/active_record/i18n_interpolation_deprecation.rb", "lib/active_record/locale", "lib/active_record/locale/en.yml", "lib/active_record/locking", "lib/active_record/locking/optimistic.rb", "lib/active_record/locking/pessimistic.rb", "lib/active_record/migration.rb", "lib/active_record/named_scope.rb", "lib/active_record/observer.rb", "lib/active_record/query_cache.rb", "lib/active_record/reflection.rb", "lib/active_record/schema.rb", "lib/active_record/schema_dumper.rb", "lib/active_record/serialization.rb", "lib/active_record/serializers", "lib/active_record/serializers/json_serializer.rb", "lib/active_record/serializers/xml_serializer.rb", "lib/active_record/test_case.rb", "lib/active_record/timestamp.rb", "lib/active_record/transactions.rb", "lib/active_record/validations.rb", "lib/active_record/version.rb", "lib/active_record.rb", "lib/activerecord.rb", "test/assets", "test/assets/example.log", "test/assets/flowers.jpg", "test/cases", "test/cases/aaa_create_tables_test.rb", "test/cases/active_schema_test_mysql.rb", "test/cases/active_schema_test_postgresql.rb", "test/cases/adapter_test.rb", "test/cases/aggregations_test.rb", "test/cases/ar_schema_test.rb", "test/cases/associations", "test/cases/associations/belongs_to_associations_test.rb", "test/cases/associations/callbacks_test.rb", "test/cases/associations/cascaded_eager_loading_test.rb", "test/cases/associations/eager_load_includes_full_sti_class_test.rb", "test/cases/associations/eager_load_nested_include_test.rb", "test/cases/associations/eager_singularization_test.rb", "test/cases/associations/eager_test.rb", "test/cases/associations/extension_test.rb", "test/cases/associations/has_and_belongs_to_many_associations_test.rb", "test/cases/associations/has_many_associations_test.rb", "test/cases/associations/has_many_through_associations_test.rb", "test/cases/associations/has_one_associations_test.rb", "test/cases/associations/has_one_through_associations_test.rb", "test/cases/associations/inner_join_association_test.rb", "test/cases/associations/join_model_test.rb", "test/cases/associations_test.rb", "test/cases/attribute_methods_test.rb", "test/cases/base_test.rb", "test/cases/binary_test.rb", "test/cases/calculations_test.rb", "test/cases/callbacks_observers_test.rb", "test/cases/callbacks_test.rb", "test/cases/class_inheritable_attributes_test.rb", "test/cases/column_alias_test.rb", "test/cases/column_definition_test.rb", "test/cases/connection_test_firebird.rb", "test/cases/connection_test_mysql.rb", "test/cases/copy_table_test_sqlite.rb", "test/cases/database_statements_test.rb", "test/cases/datatype_test_postgresql.rb", "test/cases/date_time_test.rb", "test/cases/default_test_firebird.rb", "test/cases/defaults_test.rb", "test/cases/deprecated_finder_test.rb", "test/cases/dirty_test.rb", "test/cases/finder_respond_to_test.rb", "test/cases/finder_test.rb", "test/cases/fixtures_test.rb", "test/cases/helper.rb", "test/cases/i18n_test.rb", "test/cases/inheritance_test.rb", "test/cases/invalid_date_test.rb", "test/cases/json_serialization_test.rb", "test/cases/lifecycle_test.rb", "test/cases/locking_test.rb", "test/cases/method_scoping_test.rb", "test/cases/migration_test.rb", "test/cases/migration_test_firebird.rb", "test/cases/mixin_test.rb", "test/cases/modules_test.rb", "test/cases/multiple_db_test.rb", "test/cases/named_scope_test.rb", "test/cases/pk_test.rb", "test/cases/pooled_connections_test.rb", "test/cases/query_cache_test.rb", "test/cases/readonly_test.rb", "test/cases/reflection_test.rb", "test/cases/reload_models_test.rb", "test/cases/reserved_word_test_mysql.rb", "test/cases/sanitize_test.rb", "test/cases/schema_authorization_test_postgresql.rb", "test/cases/schema_dumper_test.rb", "test/cases/schema_test_postgresql.rb", "test/cases/serialization_test.rb", "test/cases/synonym_test_oracle.rb", "test/cases/transactions_test.rb", "test/cases/unconnected_test.rb", "test/cases/validations_i18n_test.rb", "test/cases/validations_test.rb", "test/cases/xml_serialization_test.rb", "test/config.rb", "test/connections", "test/connections/native_db2", "test/connections/native_db2/connection.rb", "test/connections/native_firebird", "test/connections/native_firebird/connection.rb", "test/connections/native_frontbase", "test/connections/native_frontbase/connection.rb", "test/connections/native_mysql", "test/connections/native_mysql/connection.rb", "test/connections/native_openbase", "test/connections/native_openbase/connection.rb", "test/connections/native_oracle", "test/connections/native_oracle/connection.rb", "test/connections/native_postgresql", "test/connections/native_postgresql/connection.rb", "test/connections/native_sqlite", "test/connections/native_sqlite/connection.rb", "test/connections/native_sqlite3", "test/connections/native_sqlite3/connection.rb", "test/connections/native_sqlite3/in_memory_connection.rb", "test/connections/native_sybase", "test/connections/native_sybase/connection.rb", "test/fixtures", "test/fixtures/accounts.yml", "test/fixtures/all", "test/fixtures/all/developers.yml", "test/fixtures/all/people.csv", "test/fixtures/all/tasks.yml", "test/fixtures/author_addresses.yml", "test/fixtures/author_favorites.yml", "test/fixtures/authors.yml", "test/fixtures/binaries.yml", "test/fixtures/books.yml", "test/fixtures/categories", "test/fixtures/categories/special_categories.yml", "test/fixtures/categories/subsubdir", "test/fixtures/categories/subsubdir/arbitrary_filename.yml", "test/fixtures/categories.yml", "test/fixtures/categories_ordered.yml", "test/fixtures/categories_posts.yml", "test/fixtures/categorizations.yml", "test/fixtures/clubs.yml", "test/fixtures/comments.yml", "test/fixtures/companies.yml", "test/fixtures/computers.yml", "test/fixtures/courses.yml", "test/fixtures/customers.yml", "test/fixtures/developers.yml", "test/fixtures/developers_projects.yml", "test/fixtures/edges.yml", "test/fixtures/entrants.yml", "test/fixtures/fixture_database.sqlite3", "test/fixtures/fixture_database_2.sqlite3", "test/fixtures/fk_test_has_fk.yml", "test/fixtures/fk_test_has_pk.yml", "test/fixtures/funny_jokes.yml", "test/fixtures/items.yml", "test/fixtures/jobs.yml", "test/fixtures/legacy_things.yml", "test/fixtures/mateys.yml", "test/fixtures/members.yml", "test/fixtures/memberships.yml", "test/fixtures/minimalistics.yml", "test/fixtures/mixed_case_monkeys.yml", "test/fixtures/mixins.yml", "test/fixtures/movies.yml", "test/fixtures/naked", "test/fixtures/naked/csv", "test/fixtures/naked/csv/accounts.csv", "test/fixtures/naked/yml", "test/fixtures/naked/yml/accounts.yml", "test/fixtures/naked/yml/companies.yml", "test/fixtures/naked/yml/courses.yml", "test/fixtures/organizations.yml", "test/fixtures/owners.yml", "test/fixtures/parrots.yml", "test/fixtures/parrots_pirates.yml", "test/fixtures/people.yml", "test/fixtures/pets.yml", "test/fixtures/pirates.yml", "test/fixtures/posts.yml", "test/fixtures/price_estimates.yml", "test/fixtures/projects.yml", "test/fixtures/readers.yml", "test/fixtures/references.yml", "test/fixtures/reserved_words", "test/fixtures/reserved_words/distinct.yml", "test/fixtures/reserved_words/distincts_selects.yml", "test/fixtures/reserved_words/group.yml", "test/fixtures/reserved_words/select.yml", "test/fixtures/reserved_words/values.yml", "test/fixtures/ships.yml", "test/fixtures/sponsors.yml", "test/fixtures/subscribers.yml", "test/fixtures/subscriptions.yml", "test/fixtures/taggings.yml", "test/fixtures/tags.yml", "test/fixtures/tasks.yml", "test/fixtures/topics.yml", "test/fixtures/treasures.yml", "test/fixtures/vertices.yml", "test/fixtures/warehouse-things.yml", "test/migrations", "test/migrations/broken", "test/migrations/broken/100_migration_that_raises_exception.rb", "test/migrations/decimal", "test/migrations/decimal/1_give_me_big_numbers.rb", "test/migrations/duplicate", "test/migrations/duplicate/1_people_have_last_names.rb", "test/migrations/duplicate/2_we_need_reminders.rb", "test/migrations/duplicate/3_foo.rb", "test/migrations/duplicate/3_innocent_jointable.rb", "test/migrations/duplicate_names", "test/migrations/duplicate_names/20080507052938_chunky.rb", "test/migrations/duplicate_names/20080507053028_chunky.rb", "test/migrations/interleaved", "test/migrations/interleaved/pass_1", "test/migrations/interleaved/pass_1/3_innocent_jointable.rb", "test/migrations/interleaved/pass_2", "test/migrations/interleaved/pass_2/1_people_have_last_names.rb", "test/migrations/interleaved/pass_2/3_innocent_jointable.rb", "test/migrations/interleaved/pass_3", "test/migrations/interleaved/pass_3/1_people_have_last_names.rb", "test/migrations/interleaved/pass_3/2_i_raise_on_down.rb", "test/migrations/interleaved/pass_3/3_innocent_jointable.rb", "test/migrations/missing", "test/migrations/missing/1000_people_have_middle_names.rb", "test/migrations/missing/1_people_have_last_names.rb", "test/migrations/missing/3_we_need_reminders.rb", "test/migrations/missing/4_innocent_jointable.rb", "test/migrations/valid", "test/migrations/valid/1_people_have_last_names.rb", "test/migrations/valid/2_we_need_reminders.rb", "test/migrations/valid/3_innocent_jointable.rb", "test/models", "test/models/author.rb", "test/models/auto_id.rb", "test/models/binary.rb", "test/models/book.rb", "test/models/categorization.rb", "test/models/category.rb", "test/models/citation.rb", "test/models/club.rb", "test/models/column_name.rb", "test/models/comment.rb", "test/models/company.rb", "test/models/company_in_module.rb", "test/models/computer.rb", "test/models/contact.rb", "test/models/course.rb", "test/models/customer.rb", "test/models/default.rb", "test/models/developer.rb", "test/models/edge.rb", "test/models/entrant.rb", "test/models/guid.rb", "test/models/item.rb", "test/models/job.rb", "test/models/joke.rb", "test/models/keyboard.rb", "test/models/legacy_thing.rb", "test/models/matey.rb", "test/models/member.rb", "test/models/member_detail.rb", "test/models/membership.rb", "test/models/minimalistic.rb", "test/models/mixed_case_monkey.rb", "test/models/movie.rb", "test/models/order.rb", "test/models/organization.rb", "test/models/owner.rb", "test/models/parrot.rb", "test/models/person.rb", "test/models/pet.rb", "test/models/pirate.rb", "test/models/post.rb", "test/models/price_estimate.rb", "test/models/project.rb", "test/models/reader.rb", "test/models/reference.rb", "test/models/reply.rb", "test/models/ship.rb", "test/models/sponsor.rb", "test/models/subject.rb", "test/models/subscriber.rb", "test/models/subscription.rb", "test/models/tag.rb", "test/models/tagging.rb", "test/models/task.rb", "test/models/topic.rb", "test/models/treasure.rb", "test/models/vertex.rb", "test/models/warehouse_thing.rb", "test/schema", "test/schema/mysql_specific_schema.rb", "test/schema/postgresql_specific_schema.rb", "test/schema/schema.rb", "test/schema/schema2.rb", "test/schema/sqlite_specific_schema.rb", "examples/associations.png"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.rdoc_options = ["--main", "README"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{activerecord}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Implements the ActiveRecord pattern for ORM.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<activesupport>, ["= 2.2.2"])
-    else
-      s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-    end
-  else
-    s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activeresource-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activeresource-2.2.2.gemspec
deleted file mode 100644
index a3161f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activeresource-2.2.2.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{activeresource}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.autorequire = %q{active_resource}
-  s.date = %q{2008-11-19}
-  s.description = %q{Wraps web resources in model classes that can be manipulated through XML over REST.}
-  s.email = %q{david at loudthinking.com}
-  s.extra_rdoc_files = ["README"]
-  s.files = ["Rakefile", "README", "CHANGELOG", "lib/active_resource", "lib/active_resource/base.rb", "lib/active_resource/connection.rb", "lib/active_resource/custom_methods.rb", "lib/active_resource/formats", "lib/active_resource/formats/json_format.rb", "lib/active_resource/formats/xml_format.rb", "lib/active_resource/formats.rb", "lib/active_resource/http_mock.rb", "lib/active_resource/validations.rb", "lib/active_resource/version.rb", "lib/active_resource.rb", "lib/activeresource.rb", "test/abstract_unit.rb", "test/authorization_test.rb", "test/base", "test/base/custom_methods_test.rb", "test/base/equality_test.rb", "test/base/load_test.rb", "test/base_errors_test.rb", "test/base_test.rb", "test/connection_test.rb", "test/fixtures", "test/fixtures/beast.rb", "test/fixtures/customer.rb", "test/fixtures/person.rb", "test/fixtures/street_address.rb", "test/format_test.rb", "test/setter_trap.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.rdoc_options = ["--main", "README"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{activeresource}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Think Active Record for web resources.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<activesupport>, ["= 2.2.2"])
-    else
-      s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-    end
-  else
-    s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activesupport-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activesupport-2.2.2.gemspec
deleted file mode 100644
index f87b552..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/activesupport-2.2.2.gemspec
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{activesupport}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.date = %q{2008-11-20}
-  s.description = %q{Utility library which carries commonly used classes and goodies from the Rails framework}
-  s.email = %q{david at loudthinking.com}
-  s.files = ["CHANGELOG", "README", "lib/active_support", "lib/active_support/base64.rb", "lib/active_support/basic_object.rb", "lib/active_support/buffered_logger.rb", "lib/active_support/cache", "lib/active_support/cache/compressed_mem_cache_store.rb", "lib/active_support/cache/drb_store.rb", "lib/active_support/cache/file_store.rb", "lib/active_support/cache/mem_cache_store.rb", "lib/active_support/cache/memory_store.rb", "lib/active_support/cache/synchronized_memory_store.rb", "lib/active_support/cache.rb", "lib/active_support/callbacks.rb", "lib/active_support/core_ext", "lib/active_support/core_ext/array", "lib/active_support/core_ext/array/access.rb", "lib/active_support/core_ext/array/conversions.rb", "lib/active_support/core_ext/array/extract_options.rb", "lib/active_support/core_ext/array/grouping.rb", "lib/active_support/core_ext/array/random_access.rb", "lib/active_support/core_ext/array.rb", "lib/active_support/core_ext/base64", "lib/active_support/core_ext/base64/encoding.rb", "lib/active_support/core_ext/base64.rb", "lib/active_support/core_ext/benchmark.rb", "lib/active_support/core_ext/bigdecimal", "lib/active_support/core_ext/bigdecimal/conversions.rb", "lib/active_support/core_ext/bigdecimal.rb", "lib/active_support/core_ext/blank.rb", "lib/active_support/core_ext/cgi", "lib/active_support/core_ext/cgi/escape_skipping_slashes.rb", "lib/active_support/core_ext/cgi.rb", "lib/active_support/core_ext/class", "lib/active_support/core_ext/class/attribute_accessors.rb", "lib/active_support/core_ext/class/delegating_attributes.rb", "lib/active_support/core_ext/class/inheritable_attributes.rb", "lib/active_support/core_ext/class/removal.rb", "lib/active_support/core_ext/class.rb", "lib/active_support/core_ext/date", "lib/active_support/core_ext/date/behavior.rb", "lib/active_support/core_ext/date/calculations.rb", "lib/active_support/core_ext/date/conversions.rb", "lib/active_support/core_ext/date.rb", "lib/active_support/core_ext/date_time", "lib/active_support/core_ext/date_time/calculations.rb", "lib/active_support/core_ext/date_time/conversions.rb", "lib/active_support/core_ext/date_time.rb", "lib/active_support/core_ext/duplicable.rb", "lib/active_support/core_ext/enumerable.rb", "lib/active_support/core_ext/exception.rb", "lib/active_support/core_ext/file", "lib/active_support/core_ext/file/atomic.rb", "lib/active_support/core_ext/file.rb", "lib/active_support/core_ext/float", "lib/active_support/core_ext/float/rounding.rb", "lib/active_support/core_ext/float/time.rb", "lib/active_support/core_ext/float.rb", "lib/active_support/core_ext/hash", "lib/active_support/core_ext/hash/conversions.rb", "lib/active_support/core_ext/hash/deep_merge.rb", "lib/active_support/core_ext/hash/diff.rb", "lib/active_support/core_ext/hash/except.rb", "lib/active_support/core_ext/hash/indifferent_access.rb", "lib/active_support/core_ext/hash/keys.rb", "lib/active_support/core_ext/hash/reverse_merge.rb", "lib/active_support/core_ext/hash/slice.rb", "lib/active_support/core_ext/hash.rb", "lib/active_support/core_ext/integer", "lib/active_support/core_ext/integer/even_odd.rb", "lib/active_support/core_ext/integer/inflections.rb", "lib/active_support/core_ext/integer/time.rb", "lib/active_support/core_ext/integer.rb", "lib/active_support/core_ext/kernel", "lib/active_support/core_ext/kernel/agnostics.rb", "lib/active_support/core_ext/kernel/daemonizing.rb", "lib/active_support/core_ext/kernel/debugger.rb", "lib/active_support/core_ext/kernel/reporting.rb", "lib/active_support/core_ext/kernel/requires.rb", "lib/active_support/core_ext/kernel.rb", "lib/active_support/core_ext/load_error.rb", "lib/active_support/core_ext/logger.rb", "lib/active_support/core_ext/module", "lib/active_support/core_ext/module/aliasing.rb", "lib/active_support/core_ext/module/attr_accessor_with_default.rb", "lib/active_support/core_ext/module/attr_internal.rb", "lib/active_support/core_ext/module/attribute_accessors.rb", "lib/active_support/core_ext/module/delegation.rb", "lib/active_support/core_ext/module/inclusion.rb", "lib/active_support/core_ext/module/introspection.rb", "lib/active_support/core_ext/module/loading.rb", "lib/active_support/core_ext/module/model_naming.rb", "lib/active_support/core_ext/module/synchronization.rb", "lib/active_support/core_ext/module.rb", "lib/active_support/core_ext/name_error.rb", "lib/active_support/core_ext/numeric", "lib/active_support/core_ext/numeric/bytes.rb", "lib/active_support/core_ext/numeric/conversions.rb", "lib/active_support/core_ext/numeric/time.rb", "lib/active_support/core_ext/numeric.rb", "lib/active_support/core_ext/object", "lib/active_support/core_ext/object/conversions.rb", "lib/active_support/core_ext/object/extending.rb", "lib/active_support/core_ext/object/instance_variables.rb", "lib/active_support/core_ext/object/metaclass.rb", "lib/active_support/core_ext/object/misc.rb", "lib/active_support/core_ext/object.rb", "lib/active_support/core_ext/pathname", "lib/active_support/core_ext/pathname/clean_within.rb", "lib/active_support/core_ext/pathname.rb", "lib/active_support/core_ext/proc.rb", "lib/active_support/core_ext/process", "lib/active_support/core_ext/process/daemon.rb", "lib/active_support/core_ext/process.rb", "lib/active_support/core_ext/range", "lib/active_support/core_ext/range/blockless_step.rb", "lib/active_support/core_ext/range/conversions.rb", "lib/active_support/core_ext/range/include_range.rb", "lib/active_support/core_ext/range/overlaps.rb", "lib/active_support/core_ext/range.rb", "lib/active_support/core_ext/rexml.rb", "lib/active_support/core_ext/string", "lib/active_support/core_ext/string/access.rb", "lib/active_support/core_ext/string/behavior.rb", "lib/active_support/core_ext/string/conversions.rb", "lib/active_support/core_ext/string/filters.rb", "lib/active_support/core_ext/string/inflections.rb", "lib/active_support/core_ext/string/iterators.rb", "lib/active_support/core_ext/string/multibyte.rb", "lib/active_support/core_ext/string/starts_ends_with.rb", "lib/active_support/core_ext/string/xchar.rb", "lib/active_support/core_ext/string.rb", "lib/active_support/core_ext/symbol.rb", "lib/active_support/core_ext/time", "lib/active_support/core_ext/time/behavior.rb", "lib/active_support/core_ext/time/calculations.rb", "lib/active_support/core_ext/time/conversions.rb", "lib/active_support/core_ext/time/zones.rb", "lib/active_support/core_ext/time.rb", "lib/active_support/core_ext.rb", "lib/active_support/dependencies.rb", "lib/active_support/deprecation.rb", "lib/active_support/duration.rb", "lib/active_support/gzip.rb", "lib/active_support/inflections.rb", "lib/active_support/inflector.rb", "lib/active_support/json", "lib/active_support/json/decoding.rb", "lib/active_support/json/encoders", "lib/active_support/json/encoders/date.rb", "lib/active_support/json/encoders/date_time.rb", "lib/active_support/json/encoders/enumerable.rb", "lib/active_support/json/encoders/false_class.rb", "lib/active_support/json/encoders/hash.rb", "lib/active_support/json/encoders/nil_class.rb", "lib/active_support/json/encoders/numeric.rb", "lib/active_support/json/encoders/object.rb", "lib/active_support/json/encoders/regexp.rb", "lib/active_support/json/encoders/string.rb", "lib/active_support/json/encoders/symbol.rb", "lib/active_support/json/encoders/time.rb", "lib/active_support/json/encoders/true_class.rb", "lib/active_support/json/encoding.rb", "lib/active_support/json/variable.rb", "lib/active_support/json.rb", "lib/active_support/locale", "lib/active_support/locale/en.yml", "lib/active_support/memoizable.rb", "lib/active_support/multibyte", "lib/active_support/multibyte/chars.rb", "lib/active_support/multibyte/exceptions.rb", "lib/active_support/multibyte/unicode_database.rb", "lib/active_support/multibyte.rb", "lib/active_support/option_merger.rb", "lib/active_support/ordered_hash.rb", "lib/active_support/ordered_options.rb", "lib/active_support/rescuable.rb", "lib/active_support/secure_random.rb", "lib/active_support/string_inquirer.rb", "lib/active_support/test_case.rb", "lib/active_support/testing", "lib/active_support/testing/core_ext", "lib/active_support/testing/core_ext/test", "lib/active_support/testing/core_ext/test/unit", "lib/active_support/testing/core_ext/test/unit/assertions.rb", "lib/active_support/testing/core_ext/test.rb", "lib/active_support/testing/default.rb", "lib/active_support/testing/performance.rb", "lib/active_support/testing/setup_and_teardown.rb", "lib/active_support/time_with_zone.rb", "lib/active_support/values", "lib/active_support/values/time_zone.rb", "lib/active_support/values/unicode_tables.dat", "lib/active_support/vendor", "lib/active_support/vendor/builder-2.1.2", "lib/active_support/vendor/builder-2.1.2/blankslate.rb", "lib/active_support/vendor/builder-2.1.2/builder", "lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb", "lib/active_support/vendor/builder-2.1.2/builder/css.rb", "lib/active_support/vendor/builder-2.1.2/builder/xchar.rb", "lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb", "lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb", "lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb", "lib/active_support/vendor/builder-2.1.2/builder.rb", "lib/active_support/vendor/i18n-0.0.1", "lib/active_support/vendor/i18n-0.0.1/i18n", "lib/active_support/vendor/i18n-0.0.1/i18n/backend", "lib/active_support/vendor/i18n-0.0.1/i18n/backend/simple.rb", "lib/active_support/vendor/i18n-0.0.1/i18n/exceptions.rb", "lib/active_support/vendor/i18n-0.0.1/i18n.rb", "lib/active_support/vendor/memcache-client-1.5.1", "lib/active_support/vendor/memcache-client-1.5.1/memcache.rb", "lib/active_support/vendor/tzinfo-0.3.12", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb", "lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb", "lib/active_support/vendor/xml-simple-1.0.11", "lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb", "lib/active_support/vendor.rb", "lib/active_support/version.rb", "lib/active_support/whiny_nil.rb", "lib/active_support.rb", "lib/activesupport.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{activesupport}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Support and utility classes used by the Rails framework.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/addressable-2.0.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/addressable-2.0.2.gemspec
deleted file mode 100644
index 1a555b4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/addressable-2.0.2.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{addressable}
-  s.version = "2.0.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Bob Aman"]
-  s.date = %q{2009-01-29}
-  s.description = %q{Addressable is a replacement for the URI implementation that is part of Ruby's standard library. It more closely conforms to the relevant RFCs and adds support for IRIs and URI templates.}
-  s.email = %q{bob at sporkmonger.com}
-  s.extra_rdoc_files = ["README"]
-  s.files = ["lib/addressable", "lib/addressable/idna.rb", "lib/addressable/uri.rb", "lib/addressable/version.rb", "spec/addressable", "spec/addressable/idna_spec.rb", "spec/addressable/uri_spec.rb", "spec/data", "spec/data/rfc3986.txt", "tasks/clobber.rake", "tasks/gem.rake", "tasks/git.rake", "tasks/metrics.rake", "tasks/rdoc.rake", "tasks/rubyforge.rake", "tasks/spec.rake", "website/index.html", "CHANGELOG", "LICENSE", "Rakefile", "README"]
-  s.has_rdoc = true
-  s.homepage = %q{http://addressable.rubyforge.org/}
-  s.rdoc_options = ["--main", "README"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{addressable}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{URI Implementation}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<rake>, [">= 0.7.3"])
-      s.add_development_dependency(%q<rspec>, [">= 1.0.8"])
-      s.add_development_dependency(%q<launchy>, [">= 0.3.2"])
-    else
-      s.add_dependency(%q<rake>, [">= 0.7.3"])
-      s.add_dependency(%q<rspec>, [">= 1.0.8"])
-      s.add_dependency(%q<launchy>, [">= 0.3.2"])
-    end
-  else
-    s.add_dependency(%q<rake>, [">= 0.7.3"])
-    s.add_dependency(%q<rspec>, [">= 1.0.8"])
-    s.add_dependency(%q<launchy>, [">= 0.3.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/builder-2.1.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/builder-2.1.2.gemspec
deleted file mode 100644
index c32e776..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/builder-2.1.2.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{builder}
-  s.version = "2.1.2"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jim Weirich"]
-  s.autorequire = %q{builder}
-  s.cert_chain = nil
-  s.date = %q{2007-06-14}
-  s.description = %q{Builder provides a number of builder objects that make creating structured data simple to do.  Currently the following builder objects are supported:  * XML Markup * XML Events}
-  s.email = %q{jim at weirichhouse.org}
-  s.extra_rdoc_files = ["CHANGES", "Rakefile", "README", "doc/releases/builder-1.2.4.rdoc", "doc/releases/builder-2.0.0.rdoc", "doc/releases/builder-2.1.1.rdoc"]
-  s.files = ["lib/blankslate.rb", "lib/builder.rb", "lib/builder/blankslate.rb", "lib/builder/xchar.rb", "lib/builder/xmlbase.rb", "lib/builder/xmlevents.rb", "lib/builder/xmlmarkup.rb", "test/performance.rb", "test/preload.rb", "test/test_xchar.rb", "test/testblankslate.rb", "test/testeventbuilder.rb", "test/testmarkupbuilder.rb", "scripts/publish.rb", "CHANGES", "Rakefile", "README", "doc/releases/builder-1.2.4.rdoc", "doc/releases/builder-2.0.0.rdoc", "doc/releases/builder-2.1.1.rdoc"]
-  s.has_rdoc = true
-  s.homepage = %q{http://onestepback.org}
-  s.rdoc_options = ["--title", "Builder -- Easy XML Building", "--main", "README", "--line-numbers"]
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Builders for MarkUp.}
-  s.test_files = ["test/test_xchar.rb", "test/testblankslate.rb", "test/testeventbuilder.rb", "test/testmarkupbuilder.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/camping-1.5.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/camping-1.5.gemspec
deleted file mode 100644
index 8dd99f6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/camping-1.5.gemspec
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{camping}
-  s.version = "1.5"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["why the lucky stiff"]
-  s.cert_chain = nil
-  s.date = %q{2006-10-02}
-  s.default_executable = %q{camping}
-  s.description = %q{minature rails for stay-at-home moms}
-  s.email = %q{why at ruby-lang.org}
-  s.executables = ["camping"]
-  s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
-  s.files = ["COPYING", "README", "Rakefile", "bin/camping", "doc/camping.1.gz", "lib/camping", "lib/camping.rb", "lib/camping-unabridged.rb", "lib/camping/reloader.rb", "lib/camping/fastcgi.rb", "lib/camping/session.rb", "lib/camping/db.rb", "lib/camping/webrick.rb", "extras/permalink.gif", "extras/Camping.gif", "extras/flipbook_rdoc.rb", "examples/tepee.rb", "examples/blog.rb", "examples/campsh.rb", "CHANGELOG"]
-  s.has_rdoc = true
-  s.homepage = %q{http://code.whytheluckystiff.net/camping/}
-  s.rdoc_options = ["--quiet", "--title", "Camping, the Documentation", "--opname", "index.html", "--line-numbers", "--main", "README", "--inline-source", "--exclude", "^(examples|extras)\\/", "--exclude", "lib/camping.rb"]
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.2")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{minature rails for stay-at-home moms}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<activesupport>, [">= 1.3.1"])
-      s.add_runtime_dependency(%q<markaby>, [">= 0.5"])
-      s.add_runtime_dependency(%q<metaid>, ["> 0.0.0"])
-    else
-      s.add_dependency(%q<activesupport>, [">= 1.3.1"])
-      s.add_dependency(%q<markaby>, [">= 0.5"])
-      s.add_dependency(%q<metaid>, ["> 0.0.0"])
-    end
-  else
-    s.add_dependency(%q<activesupport>, [">= 1.3.1"])
-    s.add_dependency(%q<markaby>, [">= 0.5"])
-    s.add_dependency(%q<metaid>, ["> 0.0.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/cgi_multipart_eof_fix-2.5.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/cgi_multipart_eof_fix-2.5.0.gemspec
deleted file mode 100644
index 38f5fdd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/cgi_multipart_eof_fix-2.5.0.gemspec
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{cgi_multipart_eof_fix}
-  s.version = "2.5.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Evan Weaver"]
-  s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n\ncmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK\nCZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzI0OVoXDTA4MDkxNTEwMzI0OVow\nTjEcMBoGA1UEAwwTbW9uZ3JlbC1kZXZlbG9wbWVudDEZMBcGCgmSJomT8ixkARkW\nCXJ1Ynlmb3JnZTETMBEGCgmSJomT8ixkARkWA29yZzCCASIwDQYJKoZIhvcNAQEB\nBQADggEPADCCAQoCggEBAMb9v3B01eOHk3FyypbQgKXzJplUE5P6dXoG+xpPm0Lv\nP7BQmeMncOwqQ7zXpVQU+lTpXtQFTsOE3vL7KnhQFJKGvUAkbh24VFyopu1I0yqF\nmGu4nRqNXGXVj8TvLSj4S1WpSRLAa0acLPNyKhGmoV9+crqQypSjM6XKjBeppifo\n4eBmWGjiJEYMIJBvJZPJ4rAVDDA8C6CM1m3gMBGNh8ELDhU8HI9AP3dMIkTI2Wx9\n9xkJwHdroAaS0IFFtYChrwee4FbCF1FHDgoTosMwa47DrLHg4hZ6ojaKwK5QVWEV\nXGb6ju5UqpktnSWF2W+Lvl/K0tI42OH2CAhebT1gEVUCAwEAAaM5MDcwCQYDVR0T\nBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGHChyMSZ16u9WOzKhgJSQ9lqDc5\nMA0GCSqGSIb3DQEBBQUAA4IBAQA/lfeN2WdB1xN+82tT7vNS4HOjRQw6MUh5yktu\nGQjaGqm0UB+aX0Z9y0B0qpfv9rj7nmIvEGiwBmDepNWYCGuW15JyqpN7QVVnG2xS\nMrame7VqgjM7A+VGDD5In5LtWbM/CHAATvvFlQ5Ph13YE1EdnVbZ65c+KQv+5sFY\nQ+zEop74d878uaC/SAHHXS46TiXneocaLSYw1CEZs/MAIy+9c4Q5ESbGpgnfg1Ad\n6lwl7k3hsNHO/+tZzx4HJtOXDI1yAl3+q6T9J0yI3z97EinwvAKhS1eyOI2Y5eeT\ntbQaNYkU127B3l/VNpd8fQm3Jkl/PqCCmDBQjUszFrJEODug\n-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\nMIIDPzCCAiegAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n\ncmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK\nCZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzMwMFoXDTA4MDkxNTEwMzMwMFow\nPTENMAsGA1UEAwwEZXZhbjEYMBYGCgmSJomT8ixkARkWCGNsb3VkYnVyMRIwEAYK\nCZImiZPyLGQBGRYCc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk\nLQijz2fICmev4+9s0WB71WzJFYCUYFQQxqGlenbxWut9dlPSsBbskGjg+UITeOXi\ncTh3MTqAB0i1LJyNOiyvDsAivn7GjKXhVvflp2/npMhBBe83P4HOWqeQBjkk3QJI\nFFNBvqbFLeEXIP+HiqAOiyNHZEVXMepLEJLzGrg3Ly7M7A6L5fK7jDrt8jkm+c+8\nzGquVHV5ohAebGd/vpHMLjpA7lCG5+MBgYZd33rRfNtCxDJMNRgnOu9PsB05+LJn\nMpDKQq3x0SkOf5A+MVOcadNCaAkFflYk3SUcXaXWxu/eCHgqfW1m76RNSp5djpKE\nCgNPK9lGIWpB3CHzDaVNAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSw\nMB0GA1UdDgQWBBT5aonPfFBdJ5rWFG+8dZwgyB54LjANBgkqhkiG9w0BAQUFAAOC\nAQEAiKbzWgMcvZs/TPwJxr8tJ+7mSGz7+zDkWcbBl8FpQq1DtRcATh1oyTkQT7t+\nrFEBYMmb0FxbbUnojQp8hIFgFkUwFpStwWBL/okLSehntzI2iwjuEtfj4ac9Q3Y2\nuSdbmZqsQTuu+lEUc5C4qLK7YKwToaul+cx7vWxyk1YendcVwRlFLIBqA5cPrwo3\nyyGLTHlRYn2c9PSbM1B63Yg+LqSSAa4QSU3Wv9pNdffVpvwHPVEQpO7ZDo5slQFL\nGf6+gbD/eZAvhpvmn8JlXb+LxKaFVMs2Yvrk1xOuT76SsPjEGWxkr7jZCIpsYfgQ\nALN3mi/9z0Mf1YroliUgF0v5Yw==\n-----END CERTIFICATE-----\n"]
-  s.date = %q{2007-10-25}
-  s.description = %q{Fix an exploitable bug in CGI multipart parsing.}
-  s.email = %q{}
-  s.files = ["CHANGELOG", "lib/cgi_multipart_eof_fix.rb", "LICENSE", "Manifest", "README", "test/test_cgi_multipart_eof_fix.rb", "cgi_multipart_eof_fix.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://blog.evanweaver.com/pages/code#cgi_multipart_eof_fix}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{mongrel}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Fix an exploitable bug in CGI multipart parsing.}
-  s.test_files = ["test/test_cgi_multipart_eof_fix.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/data_objects-0.9.12.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/data_objects-0.9.12.gemspec
deleted file mode 100644
index 59293d8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/data_objects-0.9.12.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{data_objects}
-  s.version = "0.9.12"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Dirkjan Bussink"]
-  s.date = %q{2009-03-10}
-  s.description = %q{The Core DataObjects class}
-  s.email = ["d.bussink at gmail.com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".gitignore", "History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "lib/data_objects.rb", "lib/data_objects/command.rb", "lib/data_objects/connection.rb", "lib/data_objects/logger.rb", "lib/data_objects/quoting.rb", "lib/data_objects/reader.rb", "lib/data_objects/result.rb", "lib/data_objects/transaction.rb", "lib/data_objects/uri.rb", "lib/data_objects/version.rb", "spec/command_spec.rb", "spec/connection_spec.rb", "spec/dataobjects_spec.rb", "spec/do_mock.rb", "spec/reader_spec.rb", "spec/result_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/transaction_spec.rb", "spec/uri_spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/dorb}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{dorb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{The Core DataObjects class}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<addressable>, ["~> 2.0"])
-      s.add_runtime_dependency(%q<extlib>, ["~> 0.9.11"])
-      s.add_development_dependency(%q<hoe>, [">= 1.10.0"])
-    else
-      s.add_dependency(%q<addressable>, ["~> 2.0"])
-      s.add_dependency(%q<extlib>, ["~> 0.9.11"])
-      s.add_dependency(%q<hoe>, [">= 1.10.0"])
-    end
-  else
-    s.add_dependency(%q<addressable>, ["~> 2.0"])
-    s.add_dependency(%q<extlib>, ["~> 0.9.11"])
-    s.add_dependency(%q<hoe>, [">= 1.10.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/defunkt-github-0.3.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/defunkt-github-0.3.4.gemspec
deleted file mode 100644
index 0eb94bd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/defunkt-github-0.3.4.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{defunkt-github}
-  s.version = "0.3.4"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Chris Wanstrath, Kevin Ballard, Scott Chacon"]
-  s.date = %q{2008-05-18}
-  s.default_executable = %q{gh}
-  s.description = %q{The official `github` command line helper for simplifying your GitHub experience.}
-  s.email = %q{chris at ozmm.org}
-  s.executables = ["github", "gh"]
-  s.extra_rdoc_files = ["bin/github", "bin/gh", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "README"]
-  s.files = ["bin/github", "lib/commands/network.rb", "lib/commands/commands.rb", "lib/commands/helpers.rb", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "Manifest", "README", "spec/command_spec.rb", "spec/extensions_spec.rb", "spec/github_spec.rb", "spec/helper_spec.rb", "spec/spec_helper.rb", "spec/ui_spec.rb", "spec/windoze_spec.rb", "github-gem.gemspec", "bin/gh"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/}
-  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Github", "--main", "README"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{github}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{The official `github` command line helper for simplifying your GitHub experience.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<json_pure>, [">= 0"])
-    else
-      s.add_dependency(%q<json_pure>, [">= 0"])
-    end
-  else
-    s.add_dependency(%q<json_pure>, [">= 0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/diff-lcs-1.1.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/diff-lcs-1.1.2.gemspec
deleted file mode 100644
index 30af541..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/diff-lcs-1.1.2.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{diff-lcs}
-  s.version = "1.1.2"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.autorequire = %q{diff/lcs}
-  s.cert_chain = nil
-  s.date = %q{2004-10-20}
-  s.description = %q{Diff::LCS is a port of Algorithm::Diff that uses the McIlroy-Hunt longest common subsequence (LCS) algorithm to compute intelligent differences between two sequenced enumerable containers. The implementation is based on Mario I. Wolczko's Smalltalk version (1.2, 1993) and Ned Konz's Perl version (Algorithm::Diff).}
-  s.email = %q{diff-lcs at halostatue.ca}
-  s.executables = ["ldiff", "htmldiff"]
-  s.extra_rdoc_files = ["README", "ChangeLog", "Install"]
-  s.files = ["bin", "ChangeLog", "Install", "lib", "Rakefile", "README", "tests", "bin/htmldiff", "bin/ldiff", "lib/diff", "lib/diff/lcs", "lib/diff/lcs.rb", "lib/diff/lcs/array.rb", "lib/diff/lcs/block.rb", "lib/diff/lcs/callbacks.rb", "lib/diff/lcs/change.rb", "lib/diff/lcs/hunk.rb", "lib/diff/lcs/ldiff.rb", "lib/diff/lcs/string.rb", "tests/00test.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/ruwiki/}
-  s.rdoc_options = ["--title", "Diff::LCS -- A Diff Algorithm", "--main", "README", "--line-numbers"]
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.1")
-  s.rubyforge_project = %q{ruwiki}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Provides a list of changes that represent the difference between two sequenced collections.}
-  s.test_files = ["tests/00test.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-adjust-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-adjust-0.9.11.gemspec
deleted file mode 100644
index 85223b9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-adjust-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-adjust}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sindre Aarsaether"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin providing methods to increment and decrement properties}
-  s.email = ["sindre [a] identu [d] no"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-adjust.rb", "lib/dm-adjust/adapters/data_objects_adapter.rb", "lib/dm-adjust/collection.rb", "lib/dm-adjust/model.rb", "lib/dm-adjust/repository.rb", "lib/dm-adjust/resource.rb", "lib/dm-adjust/version.rb", "spec/integration/adjust_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-adjust}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing methods to increment and decrement properties}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-aggregates-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-aggregates-0.9.11.gemspec
deleted file mode 100644
index 45bc869..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-aggregates-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-aggregates}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Foy Savas"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin providing support for aggregates, functions on collections and datasets}
-  s.email = ["foysavas [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-aggregates.rb", "lib/dm-aggregates/adapters/data_objects_adapter.rb", "lib/dm-aggregates/aggregate_functions.rb", "lib/dm-aggregates/collection.rb", "lib/dm-aggregates/model.rb", "lib/dm-aggregates/repository.rb", "lib/dm-aggregates/support/symbol.rb", "lib/dm-aggregates/version.rb", "spec/public/collection_spec.rb", "spec/public/model_spec.rb", "spec/public/shared/aggregate_shared_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-aggregates}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing support for aggregates, functions on collections and datasets}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-ar-finders-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-ar-finders-0.9.11.gemspec
deleted file mode 100644
index 4246e02..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-ar-finders-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-ar-finders}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["John W Higgins"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin providing ActiveRecord-style finders}
-  s.email = ["john [a] wishVPS [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-ar-finders.rb", "lib/dm-ar-finders/version.rb", "spec/integration/ar-finders_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-ar-finders}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing ActiveRecord-style finders}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-cli-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-cli-0.9.11.gemspec
deleted file mode 100644
index 5abf869..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-cli-0.9.11.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-cli}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Wayne E. Seguin"]
-  s.date = %q{2009-03-10}
-  s.default_executable = %q{dm}
-  s.description = %q{DataMapper plugin allowing interaction with models through a CLI}
-  s.email = ["wayneeseguin [a] gmail [d] com"]
-  s.executables = ["dm"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "bin/.irbrc", "bin/dm", "lib/dm-cli.rb", "lib/dm-cli/cli.rb", "lib/dm-cli/version.rb", "spec/spec.opts", "spec/unit/cli_spec.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-cli}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin allowing interaction with models through a CLI}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-constraints-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-constraints-0.9.11.gemspec
deleted file mode 100644
index d433d75..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-constraints-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-constraints}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Dirkjan Bussink"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin constraining relationships}
-  s.email = ["d.bussink [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-constraints.rb", "lib/dm-constraints/data_objects_adapter.rb", "lib/dm-constraints/delete_constraint.rb", "lib/dm-constraints/mysql_adapter.rb", "lib/dm-constraints/postgres_adapter.rb", "lib/dm-constraints/version.rb", "spec/integration/constraints_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-constraints}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin constraining relationships}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-core-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-core-0.9.11.gemspec
deleted file mode 100644
index defb685..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-core-0.9.11.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-core}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Dan Kubb"]
-  s.date = %q{2009-03-10}
-  s.description = %q{Faster, Better, Simpler.}
-  s.email = ["dan.kubb at gmail.com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".autotest", ".gitignore", "CONTRIBUTING", "FAQ", "History.txt", "MIT-LICENSE", "Manifest.txt", "QUICKLINKS", "README.txt", "Rakefile", "SPECS", "TODO", "dm-core.gemspec", "lib/dm-core.rb", "lib/dm-core/adapters.rb", "lib/dm-core/adapters/abstract_adapter.rb", "lib/dm-core/adapters/data_objects_adapter.rb", "lib/dm-core/adapters/in_memory_adapter.rb", "lib/dm-core/adapters/mysql_adapter.rb", "lib/dm-core/adapters/postgres_adapter.rb", "lib/dm-core/adapters/sqlite3_adapter.rb", "lib/dm-core/associations.rb", "lib/dm-core/associations/many_to_many.rb", "lib/dm-core/associations/many_to_one.rb", "lib/dm-core/associations/one_to_many.rb", "lib/dm-core/associations/one_to_one.rb", "lib/dm-core/associations/relationship.rb", "lib/dm-core/associations/relationship_chain.rb", "lib/dm-core/auto_migrations.rb", "lib/dm-core/collection.rb", "lib/dm-core/dependency_queue.rb", "lib/dm-core/hook.rb", "lib/dm-core/identity_map.rb", "lib/dm-core/is.rb", "lib/dm-core/logger.rb", "lib/dm-core/migrations/destructive_migrations.rb", "lib/dm-core/migrator.rb", "lib/dm-core/model.rb", "lib/dm-core/naming_conventions.rb", "lib/dm-core/property.rb", "lib/dm-core/property_set.rb", "lib/dm-core/query.rb", "lib/dm-core/repository.rb", "lib/dm-core/resource.rb", "lib/dm-core/scope.rb", "lib/dm-core/support.rb", "lib/dm-core/support/array.rb", "lib/dm-core/support/assertions.rb", "lib/dm-core/support/errors.rb", "lib/dm-core/support/kernel.rb", "lib/dm-core/support/symbol.rb", "lib/dm-core/transaction.rb", "lib/dm-core/type.rb", "lib/dm-core/type_map.rb", "lib/dm-core/types.rb", "lib/dm-core/types/boolean.rb", "lib/dm-core/types/discriminator.rb", "lib/dm-core/types/object.rb", "lib/dm-core/types/paranoid_boolean.rb", "lib/dm-core/types/paranoid_datetime.rb", "lib/dm-core/types/serial.rb", "lib/dm-core/types/text.rb", "lib/dm-core/version.rb", "script/all", "script/performance.rb", "script/profile.rb", "spec/integration/association_spec.rb", "spec/integration/association_through_spec.rb", "spec/integration/associations/many_to_many_spec.rb", "spec/integration/associations/many_to_one_spec.rb", "spec/integration/associations/one_to_many_spec.rb", "spec/integration/auto_migrations_spec.rb", "spec/integration/collection_spec.rb", "spec/integration/data_objects_adapter_spec.rb", "spec/integration/dependency_queue_spec.rb", "spec/integration/model_spec.rb", "spec/integration/mysql_adapter_spec.rb", "spec/integration/postgres_adapter_spec.rb", "spec/integration/property_spec.rb", "spec/integration/query_spec.rb", "spec/integration/repository_spec.rb", "spec/integration/resource_spec.rb", "spec/integration/sqlite3_adapter_spec.rb", "spec/integration/sti_spec.rb", "spec/integration/strategic_eager_loading_spec.rb", "spec/integration/transaction_spec.rb", "spec/integration/type_spec.rb", "spec/lib/logging_helper.rb", "spec/lib/mock_adapter.rb", "spec/lib/model_loader.rb", "spec/lib/publicize_methods.rb", "spec/models/content.rb", "spec/models/vehicles.rb", "spec/models/zoo.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/adapters/abstract_adapter_spec.rb", "spec/unit/adapters/adapter_shared_spec.rb", "spec/unit/adapters/data_objects_adapter_spec.rb", "spec/unit/adapters/in_memory_adapter_spec.rb", "spec/unit/adapters/postgres_adapter_spec.rb", "spec/unit/associations/many_to_many_spec.rb", "spec/unit/associations/many_to_one_spec.rb", "spec/unit/associations/one_to_many_spec.rb", "spec/unit/associations/one_to_one_spec.rb", "spec/unit/associations/relationship_spec.rb", "spec/unit/associations_spec.rb", "spec/unit/auto_migrations_spec.rb", "spec/unit/collection_spec.rb", "spec/unit/data_mapper_spec.rb", "spec/unit/identity_map_spec.rb", "spec/unit/is_spec.rb", "spec/unit/migrator_spec.rb", "spec/unit/model_spec.rb", "spec/unit/naming_conventions_spec.rb", "spec/unit/property_set_spec.rb", "spec/unit/property_spec.rb", "spec/unit/query_spec.rb", "spec/unit/repository_spec.rb", "spec/unit/resource_spec.rb", "spec/unit/scope_spec.rb", "spec/unit/transaction_spec.rb", "spec/unit/type_map_spec.rb", "spec/unit/type_spec.rb", "tasks/ci.rb", "tasks/dm.rb", "tasks/doc.rb", "tasks/gemspec.rb", "tasks/hoe.rb", "tasks/install.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://datamapper.org}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An Object/Relational Mapper for Ruby}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<data_objects>, ["~> 0.9.12"])
-      s.add_runtime_dependency(%q<extlib>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<addressable>, ["~> 2.0.1"])
-    else
-      s.add_dependency(%q<data_objects>, ["~> 0.9.12"])
-      s.add_dependency(%q<extlib>, ["~> 0.9.11"])
-      s.add_dependency(%q<addressable>, ["~> 2.0.1"])
-    end
-  else
-    s.add_dependency(%q<data_objects>, ["~> 0.9.12"])
-    s.add_dependency(%q<extlib>, ["~> 0.9.11"])
-    s.add_dependency(%q<addressable>, ["~> 2.0.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-couchdb-adapter-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-couchdb-adapter-0.9.11.gemspec
deleted file mode 100644
index 31364d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-couchdb-adapter-0.9.11.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-couchdb-adapter}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Bernerd Schaefer"]
-  s.date = %q{2009-03-10}
-  s.description = %q{CouchDB Adapter for DataMapper}
-  s.email = ["bernerd [a] wieck [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = [".gitignore", "History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/couchdb_adapter.rb", "lib/couchdb_adapter/attachments.rb", "lib/couchdb_adapter/couch_resource.rb", "lib/couchdb_adapter/json_object.rb", "lib/couchdb_adapter/version.rb", "lib/couchdb_adapter/view.rb", "spec/couchdb_adapter_spec.rb", "spec/couchdb_attachments_spec.rb", "spec/couchdb_view_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/testfile.txt", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/adapters/dm-couchdb-adapter}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{CouchDB Adapter for DataMapper}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<mime-types>, ["~> 1.15"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_dependency(%q<mime-types>, ["~> 1.15"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    s.add_dependency(%q<mime-types>, ["~> 1.15"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-example-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-example-0.9.11.gemspec
deleted file mode 100644
index 8ef7004..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-example-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-example}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["John Doe"]
-  s.date = %q{2009-03-10}
-  s.description = %q{Example of a DataMapper plugin}
-  s.email = ["john [a] doe [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-example.rb", "lib/dm-is-example/is/example.rb", "lib/dm-is-example/is/version.rb", "spec/integration/example_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-example}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Example of a DataMapper plugin}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-list-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-list-0.9.11.gemspec
deleted file mode 100644
index 8cd902d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-list-0.9.11.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-list}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sindre Aarsaether"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for creating and organizing lists}
-  s.email = ["sindre [a] identu [d] no"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-list.rb", "lib/dm-is-list/is/list.rb", "lib/dm-is-list/is/version.rb", "spec/integration/list_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-list}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for creating and organizing lists}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-nested_set-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-nested_set-0.9.11.gemspec
deleted file mode 100644
index b2bbf16..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-nested_set-0.9.11.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-nested_set}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sindre Aarsaether"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin allowing the creation of nested sets from data models}
-  s.email = ["sindre [a] identu [d] no"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-nested_set.rb", "lib/dm-is-nested_set/is/nested_set.rb", "lib/dm-is-nested_set/is/version.rb", "spec/integration/nested_set_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-nested_set}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin allowing the creation of nested sets from data models}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-remixable-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-remixable-0.9.11.gemspec
deleted file mode 100644
index 9748676..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-remixable-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-remixable}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Cory O'Daniel"]
-  s.date = %q{2009-03-10}
-  s.description = %q{dm-is-remixable allow you to create reusable data functionality}
-  s.email = ["dm-is-remixable [a] coryodaniel [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-remixable.rb", "lib/dm-is-remixable/is/remixable.rb", "lib/dm-is-remixable/is/version.rb", "spec/data/addressable.rb", "spec/data/article.rb", "spec/data/billable.rb", "spec/data/bot.rb", "spec/data/commentable.rb", "spec/data/image.rb", "spec/data/rating.rb", "spec/data/tag.rb", "spec/data/taggable.rb", "spec/data/topic.rb", "spec/data/user.rb", "spec/data/viewable.rb", "spec/integration/remixable_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-remixable}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{dm-is-remixable allow you to create reusable data functionality}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-searchable-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-searchable-0.9.11.gemspec
deleted file mode 100644
index 93255c4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-searchable-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-searchable}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Bernerd Schaefer"]
-  s.date = %q{2009-03-10}
-  s.description = %q{A DataMapper plugin for searching}
-  s.email = ["bernerd [a] wieck [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-searchable.rb", "lib/dm-is-searchable/is/searchable.rb", "lib/dm-is-searchable/is/version.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-searchable}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A DataMapper plugin for searching}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-state_machine-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-state_machine-0.9.11.gemspec
deleted file mode 100644
index b35a3a0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-state_machine-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-state_machine}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David James"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for creating state machines}
-  s.email = ["djwonk [a] collectiveinsight [d] net"]
-  s.extra_rdoc_files = ["README.txt", "README.markdown", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.markdown", "README.txt", "Rakefile", "TODO", "lib/dm-is-state_machine.rb", "lib/dm-is-state_machine/is/data/event.rb", "lib/dm-is-state_machine/is/data/machine.rb", "lib/dm-is-state_machine/is/data/state.rb", "lib/dm-is-state_machine/is/dsl/event_dsl.rb", "lib/dm-is-state_machine/is/dsl/state_dsl.rb", "lib/dm-is-state_machine/is/state_machine.rb", "lib/dm-is-state_machine/is/version.rb", "spec/examples/invalid_events.rb", "spec/examples/invalid_states.rb", "spec/examples/invalid_transitions_1.rb", "spec/examples/invalid_transitions_2.rb", "spec/examples/slot_machine.rb", "spec/examples/traffic_light.rb", "spec/integration/invalid_events_spec.rb", "spec/integration/invalid_states_spec.rb", "spec/integration/invalid_transitions_spec.rb", "spec/integration/slot_machine_spec.rb", "spec/integration/traffic_light_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/data/event_spec.rb", "spec/unit/data/machine_spec.rb", "spec/unit/data/state_spec.rb", "spec/unit/dsl/event_dsl_spec.rb", "spec/unit/dsl/state_dsl_spec.rb", "spec/unit/state_machine_spec.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-state_machine}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for creating state machines}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-tree-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-tree-0.9.11.gemspec
deleted file mode 100644
index 5ffbc8f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-tree-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-tree}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Timothy Bennett"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin allowing the creation of tree structures from data models}
-  s.email = ["leapord729 [a] comcast.net"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-tree.rb", "lib/dm-is-tree/is/tree.rb", "lib/dm-is-tree/is/version.rb", "spec/integration/tree_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/tree_spec.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-tree}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin allowing the creation of tree structures from data models}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-versioned-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-versioned-0.9.11.gemspec
deleted file mode 100644
index 83cf32a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-versioned-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-versioned}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Bernerd Schaefer"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin enabling simple versioning of models}
-  s.email = ["bernerd [a] wieck [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-versioned.rb", "lib/dm-is-versioned/is/version.rb", "lib/dm-is-versioned/is/versioned.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/versioned_spec.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-versioned}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin enabling simple versioning of models}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-viewable-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-viewable-0.9.11.gemspec
deleted file mode 100644
index ca23da7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-is-viewable-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-is-viewable}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Cory O'Daniel"]
-  s.date = %q{2009-03-10}
-  s.description = %q{Viewable of a DataMapper plugin}
-  s.email = ["dm-is-viewable [a] coryodaniel [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-is-viewable.rb", "lib/dm-is-viewable/is/version.rb", "lib/dm-is-viewable/is/viewable.rb", "spec/data/location.rb", "spec/data/person.rb", "spec/integration/viewable_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-is-viewable}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Viewable of a DataMapper plugin}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-migrations-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-migrations-0.9.11.gemspec
deleted file mode 100644
index b3ad639..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-migrations-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-migrations}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Paul Sadauskas"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for writing and speccing migrations}
-  s.email = ["psadauskas [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "db/migrations/1_create_people_table.rb", "db/migrations/2_add_dob_to_people.rb", "db/migrations/config.rb", "examples/sample_migration.rb", "examples/sample_migration_spec.rb", "lib/dm-migrations.rb", "lib/dm-migrations/version.rb", "lib/migration.rb", "lib/migration_runner.rb", "lib/spec/example/migration_example_group.rb", "lib/spec/matchers/migration_matchers.rb", "lib/sql.rb", "lib/sql/column.rb", "lib/sql/mysql.rb", "lib/sql/postgresql.rb", "lib/sql/sqlite3.rb", "lib/sql/table.rb", "lib/sql/table_creator.rb", "lib/sql/table_modifier.rb", "spec/integration/migration_runner_spec.rb", "spec/integration/migration_spec.rb", "spec/integration/sql_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/migration_spec.rb", "spec/unit/sql/column_spec.rb", "spec/unit/sql/postgresql_spec.rb", "spec/unit/sql/sqlite3_extensions_spec.rb", "spec/unit/sql/table_creator_spec.rb", "spec/unit/sql/table_modifier_spec.rb", "spec/unit/sql/table_spec.rb", "spec/unit/sql_spec.rb", "tasks/db.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-migrations}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for writing and speccing migrations}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-more-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-more-0.9.11.gemspec
deleted file mode 100644
index 8af4af6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-more-0.9.11.gemspec
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-more}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sam Smoot"]
-  s.date = %q{2009-03-10}
-  s.description = %q{Faster, Better, Simpler.}
-  s.email = ["ssmoot [a] gmail [d] com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".gitignore", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.textile", "README.txt", "Rakefile", "TODO", "lib/dm-more.rb", "lib/dm-more/version.rb", "tasks/hoe.rb"]
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An Object/Relational Mapper for Ruby}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-serializer>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-validations>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-types>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-couchdb-adapter>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-ferret-adapter>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-rest-adapter>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-aggregates>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-ar-finders>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-cli>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-constraints>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-list>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-nested_set>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-remixable>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-searchable>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-state_machine>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-tree>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-versioned>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-is-viewable>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-migrations>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-observer>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-querizer>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-shorthand>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-sweatshop>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-tags>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<dm-timestamps>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-serializer>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-validations>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-types>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-couchdb-adapter>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-ferret-adapter>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-rest-adapter>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-aggregates>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-ar-finders>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-cli>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-constraints>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-list>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-nested_set>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-remixable>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-searchable>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-state_machine>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-tree>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-versioned>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-is-viewable>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-migrations>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-observer>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-querizer>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-shorthand>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-sweatshop>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-tags>, ["~> 0.9.11"])
-      s.add_dependency(%q<dm-timestamps>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-adjust>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-serializer>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-validations>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-types>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-couchdb-adapter>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-ferret-adapter>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-rest-adapter>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-aggregates>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-ar-finders>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-cli>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-constraints>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-list>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-nested_set>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-remixable>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-searchable>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-state_machine>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-tree>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-versioned>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-is-viewable>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-migrations>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-observer>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-querizer>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-shorthand>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-sweatshop>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-tags>, ["~> 0.9.11"])
-    s.add_dependency(%q<dm-timestamps>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-observer-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-observer-0.9.11.gemspec
deleted file mode 100644
index 5e6b07d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-observer-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-observer}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Mark Bates"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for observing Resource Models}
-  s.email = ["mark [a] mackframework [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-observer.rb", "lib/dm-observer/version.rb", "spec/integration/dm-observer_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-observer}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for observing Resource Models}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-querizer-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-querizer-0.9.11.gemspec
deleted file mode 100644
index 433a4a8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-querizer-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-querizer}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sindre Aarsaether"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin that provides a short rubyish query-syntax}
-  s.email = ["sindre [a] identu [d] no"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-querizer.rb", "lib/dm-querizer/collection.rb", "lib/dm-querizer/model.rb", "lib/dm-querizer/querizer.rb", "lib/dm-querizer/version.rb", "spec/querizer_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-querizer}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin that provides a short rubyish query-syntax}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-rest-adapter-0.9.12.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-rest-adapter-0.9.12.gemspec
deleted file mode 100644
index d197899..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-rest-adapter-0.9.12.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-rest-adapter}
-  s.version = "0.9.12"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Scott Burton @ Joyent Inc"]
-  s.date = %q{2009-03-10}
-  s.description = %q{REST Adapter for DataMapper}
-  s.email = ["scott.burton [a] joyent [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.markdown", "README.txt", "Rakefile", "TODO", "config/database.rb.example", "dm-rest-adapter.gemspec", "lib/rest_adapter.rb", "lib/rest_adapter/adapter.rb", "lib/rest_adapter/connection.rb", "lib/rest_adapter/exceptions.rb", "lib/rest_adapter/formats.rb", "lib/rest_adapter/version.rb", "spec/connection_spec.rb", "spec/crud_spec.rb", "spec/ruby_forker.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/datamapper/dm-more/tree/master/adapters/dm-rest-adapter}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{REST Adapter for DataMapper}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.12"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.12"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.12"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-serializer-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-serializer-0.9.11.gemspec
deleted file mode 100644
index 1d2f585..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-serializer-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-serializer}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Guy van den Berg"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for serializing DataMapper objects}
-  s.email = ["vandenberg.guy [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.textile", "Rakefile", "TODO", "autotest/discover.rb", "autotest/dmserializer_rspec.rb", "benchmarks/to_xml.rb", "lib/dm-serializer.rb", "lib/dm-serializer/common.rb", "lib/dm-serializer/to_csv.rb", "lib/dm-serializer/to_json.rb", "lib/dm-serializer/to_xml.rb", "lib/dm-serializer/to_yaml.rb", "lib/dm-serializer/version.rb", "lib/dm-serializer/xml_serializers.rb", "lib/dm-serializer/xml_serializers/libxml.rb", "lib/dm-serializer/xml_serializers/nokogiri.rb", "lib/dm-serializer/xml_serializers/rexml.rb", "spec/fixtures/cow.rb", "spec/fixtures/planet.rb", "spec/fixtures/quan_tum_cat.rb", "spec/lib/serialization_method_shared_spec.rb", "spec/public/serializer_spec.rb", "spec/public/to_csv_spec.rb", "spec/public/to_json_spec.rb", "spec/public/to_xml_spec.rb", "spec/public/to_yaml_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-serializer}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for serializing DataMapper objects}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-shorthand-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-shorthand-0.9.11.gemspec
deleted file mode 100644
index afd12dc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-shorthand-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-shorthand}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Leal"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin providing shortcuts for using multiple repositories}
-  s.email = ["dgleal [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-shorthand.rb", "lib/dm-shorthand/version.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/dm-shorthand.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-shorthand}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing shortcuts for using multiple repositories}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-types-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-types-0.9.11.gemspec
deleted file mode 100644
index 90055f5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-types-0.9.11.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-types}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sam Smoot"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin providing extra data types}
-  s.email = ["ssmoot [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-types.rb", "lib/dm-types/bcrypt_hash.rb", "lib/dm-types/csv.rb", "lib/dm-types/enum.rb", "lib/dm-types/epoch_time.rb", "lib/dm-types/file_path.rb", "lib/dm-types/flag.rb", "lib/dm-types/ip_address.rb", "lib/dm-types/json.rb", "lib/dm-types/regexp.rb", "lib/dm-types/serial.rb", "lib/dm-types/slug.rb", "lib/dm-types/uri.rb", "lib/dm-types/uuid.rb", "lib/dm-types/version.rb", "lib/dm-types/yaml.rb", "spec/integration/bcrypt_hash_spec.rb", "spec/integration/enum_spec.rb", "spec/integration/file_path_spec.rb", "spec/integration/flag_spec.rb", "spec/integration/ip_address_spec.rb", "spec/integration/json_spec.rb", "spec/integration/slug_spec.rb", "spec/integration/uri_spec.rb", "spec/integration/uuid_spec.rb", "spec/integration/yaml_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/unit/bcrypt_hash_spec.rb", "spec/unit/csv_spec.rb", "spec/unit/enum_spec.rb", "spec/unit/epoch_time_spec.rb", "spec/unit/file_path_spec.rb", "spec/unit/flag_spec.rb", "spec/unit/ip_address_spec.rb", "spec/unit/json_spec.rb", "spec/unit/regexp_spec.rb", "spec/unit/uri_spec.rb", "spec/unit/yaml_spec.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-types}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing extra data types}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_runtime_dependency(%q<addressable>, ["~> 2.0.1"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-      s.add_dependency(%q<addressable>, ["~> 2.0.1"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    s.add_dependency(%q<addressable>, ["~> 2.0.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-validations-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-validations-0.9.11.gemspec
deleted file mode 100644
index acbeb47..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/dm-validations-0.9.11.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{dm-validations}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Guy van den Berg"]
-  s.date = %q{2009-03-10}
-  s.description = %q{DataMapper plugin for performing validations on data models}
-  s.email = ["vandenberg.guy [a] gmail [d] com"]
-  s.extra_rdoc_files = ["README.txt", "LICENSE", "TODO", "History.txt"]
-  s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "lib/dm-validations.rb", "lib/dm-validations/absent_field_validator.rb", "lib/dm-validations/acceptance_validator.rb", "lib/dm-validations/auto_validate.rb", "lib/dm-validations/block_validator.rb", "lib/dm-validations/confirmation_validator.rb", "lib/dm-validations/contextual_validators.rb", "lib/dm-validations/custom_validator.rb", "lib/dm-validations/format_validator.rb", "lib/dm-validations/formats/email.rb", "lib/dm-validations/formats/url.rb", "lib/dm-validations/generic_validator.rb", "lib/dm-validations/length_validator.rb", "lib/dm-validations/method_validator.rb", "lib/dm-validations/numeric_validator.rb", "lib/dm-validations/primitive_validator.rb", "lib/dm-validations/required_field_validator.rb", "lib/dm-validations/support/object.rb", "lib/dm-validations/uniqueness_validator.rb", "lib/dm-validations/validation_errors.rb", "lib/dm-validations/version.rb", "lib/dm-validations/within_validator.rb", "spec/integration/absent_field_validator_spec.rb", "spec/integration/acceptance_validator_spec.rb", "spec/integration/auto_validate_spec.rb", "spec/integration/block_validator_spec.rb", "spec/integration/confirmation_validator_spec.rb", "spec/integration/contextual_validators_spec.rb", "spec/integration/custom_validator_spec.rb", "spec/integration/format_validator_spec.rb", "spec/integration/generic_validator_spec.rb", "spec/integration/length_validator/error_message_spec.rb", "spec/integration/length_validator/maximum_spec.rb", "spec/integration/length_validator/minimum_spec.rb", "spec/integration/length_validator/range_spec.rb", "spec/integration/length_validator/spec_helper.rb", "spec/integration/length_validator/valid_objects_spec.rb", "spec/integration/method_validator_spec.rb", "spec/integration/numeric_validator/float_type_spec.rb", "spec/integration/numeric_validator/integer_only_true_spec.rb", "spec/integration/numeric_validator/integer_type_spec.rb", "spec/integration/numeric_validator/spec_helper.rb", "spec/integration/numeric_validator_spec.rb", "spec/integration/primitive_validator_spec.rb", "spec/integration/required_field_validator/association_spec.rb", "spec/integration/required_field_validator/boolean_type_value_spec.rb", "spec/integration/required_field_validator/date_type_value_spec.rb", "spec/integration/required_field_validator/datetime_type_value_spec.rb", "spec/integration/required_field_validator/float_type_value_spec.rb", "spec/integration/required_field_validator/integer_type_value_spec.rb", "spec/integration/required_field_validator/plain_old_ruby_object_spec.rb", "spec/integration/required_field_validator/shared_examples.rb", "spec/integration/required_field_validator/spec_helper.rb", "spec/integration/required_field_validator/string_type_value_spec.rb", "spec/integration/required_field_validator/text_type_value_spec.rb", "spec/integration/uniqueness_validator_spec.rb", "spec/integration/validation_errors_spec.rb", "spec/integration/validation_spec.rb", "spec/integration/within_validator_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/install.rb", "tasks/spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/sam/dm-more/tree/master/dm-validations}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{datamapper}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin for performing validations on data models}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, ["~> 0.9.11"])
-    else
-      s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, ["~> 0.9.11"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/erubis-2.6.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/erubis-2.6.4.gemspec
deleted file mode 100644
index 03f1e01..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/erubis-2.6.4.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{erubis}
-  s.version = "2.6.4"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["makoto kuwata"]
-  s.date = %q{2009-02-17}
-  s.default_executable = %q{erubis}
-  s.description = %q{Erubis is an implementation of eRuby and has the following features:  * Very fast, almost three times faster than ERB and about 10% faster than eruby. * Multi-language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript) * Auto escaping support * Auto trimming spaces around '<% %>' * Embedded pattern changeable (default '<% %>') * Enable to handle Processing Instructions (PI) as embedded pattern (ex. '<?rb ... ?>') * Context object available and easy to combine eRuby template with YAML datafile * Print statement available * Easy to extend and customize in subclass * Ruby on Rails support}
-  s.email = %q{kwa(at)kuwata-lab.com}
-  s.executables = ["erubis"]
-  s.files = ["lib/erubis", "lib/erubis/context.rb", "lib/erubis/converter.rb", "lib/erubis/engine", "lib/erubis/engine/ec.rb", "lib/erubis/engine/ejava.rb", "lib/erubis/engine/ejavascript.rb", "lib/erubis/engine/enhanced.rb", "lib/erubis/engine/eperl.rb", "lib/erubis/engine/ephp.rb", "lib/erubis/engine/eruby.rb", "lib/erubis/engine/escheme.rb", "lib/erubis/engine/optimized.rb", "lib/erubis/engine.rb", "lib/erubis/enhancer.rb", "lib/erubis/error.rb", "lib/erubis/evaluator.rb", "lib/erubis/generator.rb", "lib/erubis/helper.rb", "lib/erubis/helpers", "lib/erubis/helpers/rails_form_helper.rb", "lib/erubis/helpers/rails_helper.rb", "lib/erubis/local-setting.rb", "lib/erubis/main.rb", "lib/erubis/preprocessing.rb", "lib/erubis/tiny.rb", "lib/erubis.rb", "bin/erubis", "examples/basic", "examples/basic/example.ec", "examples/basic/example.ejava", "examples/basic/example.ejs", "examples/basic/example.eperl", "examples/basic/example.ephp", "examples/basic/example.eruby", "examples/basic/example.escheme", "examples/basic/Makefile", "examples/pi", "examples/pi/example.ec", "examples/pi/example.ejava", "examples/pi/example.ejs", "examples/pi/example.eperl", "examples/pi/example.ephp", "examples/pi/example.eruby", "examples/pi/example.escheme", "examples/pi/Makefile", "test/assert-text-equal.rb", "test/data", "test/data/users-guide", "test/data/users-guide/array_example.result", "test/data/users-guide/arraybuffer_example.result", "test/data/users-guide/bipattern-example.rhtml", "test/data/users-guide/bipattern_example.result", "test/data/users-guide/context.rb", "test/data/users-guide/context.yaml", "test/data/users-guide/def_method.rb", "test/data/users-guide/def_method.result", "test/data/users-guide/escape_example.result", "test/data/users-guide/example.ec", "test/data/users-guide/Example.ejava", "test/data/users-guide/example.ejs", "test/data/users-guide/example.eperl", "test/data/users-guide/example.ephp", "test/data/users-guide/example.eruby", "test/data/users-guide/example.escheme", "test/data/users-guide/example1.eruby", "test/data/users-guide/example1.rb", "test/data/users-guide/example1.result", "test/data/users-guide/example10.rb", "test/data/users-guide/example10.result", "test/data/users-guide/example10.xhtml", "test/data/users-guide/example10_x.result", "test/data/users-guide/example11.php", "test/data/users-guide/example11.result", "test/data/users-guide/example11.rhtml", "test/data/users-guide/example11_C.result", "test/data/users-guide/example11_N.result", "test/data/users-guide/example11_php.result", "test/data/users-guide/example11_U.result", "test/data/users-guide/example1_x.result", "test/data/users-guide/example2.eruby", "test/data/users-guide/example2.rb", "test/data/users-guide/example2.result", "test/data/users-guide/example2_trim.result", "test/data/users-guide/example2_x.result", "test/data/users-guide/example3.eruby", "test/data/users-guide/example3.rb", "test/data/users-guide/example31.result", "test/data/users-guide/example32.result", "test/data/users-guide/example3_e.result", "test/data/users-guide/example4.eruby", "test/data/users-guide/example4.rb", "test/data/users-guide/example4.result", "test/data/users-guide/example4_x.result", "test/data/users-guide/example5.eruby", "test/data/users-guide/example5.rb", "test/data/users-guide/example5.result", "test/data/users-guide/example6.rb", "test/data/users-guide/example6.result", "test/data/users-guide/example7.eruby", "test/data/users-guide/example71.result", "test/data/users-guide/example72.result", "test/data/users-guide/example8.eruby", "test/data/users-guide/example8_ruby.result", "test/data/users-guide/example8_yaml.result", "test/data/users-guide/example9.eruby", "test/data/users-guide/example9.rb", "test/data/users-guide/example9.result", "test/data/users-guide/example91.result", "test/data/users-guide/example92.result", "test/data/users-guide/example_c.result", "test/data/users-guide/example_java.result", "test/data/users-guide/example_js.result", "test/data/users-guide/example_perl.result", "test/data/users-guide/example_php.result", "test/data/users-guide/example_scheme.result", "test/data/users-guide/example_scheme_display.result", "test/data/users-guide/fasteruby.rb", "test/data/users-guide/fasteruby.result", "test/data/users-guide/fasteruby.rhtml", "test/data/users-guide/headerfooter-example.eruby", "test/data/users-guide/headerfooter-example2.rb", "test/data/users-guide/headerfooter-example2.rhtml", "test/data/users-guide/headerfooter_example.result", "test/data/users-guide/headerfooter_example2.result", "test/data/users-guide/interpolation_example.result", "test/data/users-guide/main_program1.rb", "test/data/users-guide/main_program1.result", "test/data/users-guide/main_program2.rb", "test/data/users-guide/main_program2.result", "test/data/users-guide/nocode-example.eruby", "test/data/users-guide/nocode-php.result", "test/data/users-guide/nocode_example.result", "test/data/users-guide/normal-eruby-test.eruby", "test/data/users-guide/normal_eruby_test.result", "test/data/users-guide/notext-example.eruby", "test/data/users-guide/notext-example.php", "test/data/users-guide/notext-php.result", "test/data/users-guide/notext_example.result", "test/data/users-guide/percentline-example.rhtml", "test/data/users-guide/percentline_example.result", "test/data/users-guide/printenable_example.result", "test/data/users-guide/printenabled-example.eruby", "test/data/users-guide/printenabled-example.rb", "test/data/users-guide/printstatement_example.result", "test/data/users-guide/simplify_example.result", "test/data/users-guide/stderr.log", "test/data/users-guide/stdout_exmple.result", "test/data/users-guide/stringbuffer_example.result", "test/data/users-guide/tail_260.result", "test/data/users-guide/tailnewline.rhtml", "test/data/users-guide/template1.rhtml", "test/data/users-guide/template2.rhtml", "test/test-engines.rb", "test/test-enhancers.rb", "test/test-erubis.rb", "test/test-main.rb", "test/test-users-guide.rb", "test/test.rb", "test/testutil.rb", "doc/docstyle.css", "doc/users-guide.html", "README.txt", "CHANGES.txt", "MIT-LICENSE", "setup.rb", "contrib/erubis", "contrib/erubis-run.rb", "contrib/inline-require", "benchmark/bench.rb", "benchmark/bench_context.yaml", "benchmark/Makefile", "benchmark/templates", "benchmark/templates/_footer.html", "benchmark/templates/_header.html", "benchmark/templates/bench_erb.rhtml", "benchmark/templates/bench_erubis.rhtml", "benchmark/templates/bench_eruby.rhtml", "doc-api/classes", "doc-api/classes/ActionView", "doc-api/classes/ActionView/TemplateHandlers", "doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html", "doc-api/classes/ActionView.html", "doc-api/classes/ERB.html", "doc-api/classes/Erubis", "doc-api/classes/Erubis/ArrayBufferEnhancer.html", "doc-api/classes/Erubis/ArrayBufferEruby.html", "doc-api/classes/Erubis/ArrayEnhancer.html", "doc-api/classes/Erubis/ArrayEruby.html", "doc-api/classes/Erubis/Basic", "doc-api/classes/Erubis/Basic/Converter.html", "doc-api/classes/Erubis/Basic/Engine.html", "doc-api/classes/Erubis/Basic.html", "doc-api/classes/Erubis/BiPatternEnhancer.html", "doc-api/classes/Erubis/BiPatternEruby.html", "doc-api/classes/Erubis/CGenerator.html", "doc-api/classes/Erubis/CommandOptionError.html", "doc-api/classes/Erubis/Context.html", "doc-api/classes/Erubis/Converter.html", "doc-api/classes/Erubis/DeleteIndentEnhancer.html", "doc-api/classes/Erubis/DeleteIndentEruby.html", "doc-api/classes/Erubis/Ec.html", "doc-api/classes/Erubis/Ejava.html", "doc-api/classes/Erubis/Ejavascript.html", "doc-api/classes/Erubis/Engine.html", "doc-api/classes/Erubis/Eperl.html", "doc-api/classes/Erubis/Ephp.html", "doc-api/classes/Erubis/ErboutEnhancer.html", "doc-api/classes/Erubis/ErboutEruby.html", "doc-api/classes/Erubis/ErubisError.html", "doc-api/classes/Erubis/Eruby.html", "doc-api/classes/Erubis/EscapedEc.html", "doc-api/classes/Erubis/EscapedEjava.html", "doc-api/classes/Erubis/EscapedEjavascript.html", "doc-api/classes/Erubis/EscapedEperl.html", "doc-api/classes/Erubis/EscapedEphp.html", "doc-api/classes/Erubis/EscapedEruby.html", "doc-api/classes/Erubis/EscapedEscheme.html", "doc-api/classes/Erubis/EscapeEnhancer.html", "doc-api/classes/Erubis/Escheme.html", "doc-api/classes/Erubis/Evaluator.html", "doc-api/classes/Erubis/FastEruby.html", "doc-api/classes/Erubis/Generator.html", "doc-api/classes/Erubis/HeaderFooterEnhancer.html", "doc-api/classes/Erubis/HeaderFooterEruby.html", "doc-api/classes/Erubis/Helpers", "doc-api/classes/Erubis/Helpers/RailsFormHelper.html", "doc-api/classes/Erubis/Helpers/RailsHelper", "doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html", "doc-api/classes/Erubis/Helpers/RailsHelper.html", "doc-api/classes/Erubis/Helpers.html", "doc-api/classes/Erubis/InterpolationEnhancer.html", "doc-api/classes/Erubis/InterpolationEruby.html", "doc-api/classes/Erubis/JavaGenerator.html", "doc-api/classes/Erubis/JavascriptGenerator.html", "doc-api/classes/Erubis/Main.html", "doc-api/classes/Erubis/NoCodeEnhancer.html", "doc-api/classes/Erubis/NoCodeEruby.html", "doc-api/classes/Erubis/NoTextEnhancer.html", "doc-api/classes/Erubis/NoTextEruby.html", "doc-api/classes/Erubis/NotSupportedError.html", "doc-api/classes/Erubis/OptimizedEruby.html", "doc-api/classes/Erubis/OptimizedGenerator.html", "doc-api/classes/Erubis/OptimizedXmlEruby.html", "doc-api/classes/Erubis/PercentLineEnhancer.html", "doc-api/classes/Erubis/PercentLineEruby.html", "doc-api/classes/Erubis/PerlGenerator.html", "doc-api/classes/Erubis/PhpGenerator.html", "doc-api/classes/Erubis/PI", "doc-api/classes/Erubis/PI/Converter.html", "doc-api/classes/Erubis/PI/Ec.html", "doc-api/classes/Erubis/PI/Ejava.html", "doc-api/classes/Erubis/PI/Ejavascript.html", "doc-api/classes/Erubis/PI/Engine.html", "doc-api/classes/Erubis/PI/Eperl.html", "doc-api/classes/Erubis/PI/Ephp.html", "doc-api/classes/Erubis/PI/Eruby.html", "doc-api/classes/Erubis/PI/Escheme.html", "doc-api/classes/Erubis/PI/TinyEruby.html", "doc-api/classes/Erubis/PI.html", "doc-api/classes/Erubis/PreprocessingEruby.html", "doc-api/classes/Erubis/PreprocessingHelper.html", "doc-api/classes/Erubis/PrintEnabledEnhancer.html", "doc-api/classes/Erubis/PrintEnabledEruby.html", "doc-api/classes/Erubis/PrintOutEnhancer.html", "doc-api/classes/Erubis/PrintOutEruby.html", "doc-api/classes/Erubis/PrintOutSimplifiedEruby.html", "doc-api/classes/Erubis/RubyEvaluator.html", "doc-api/classes/Erubis/RubyGenerator.html", "doc-api/classes/Erubis/SchemeGenerator.html", "doc-api/classes/Erubis/SimplifiedEruby.html", "doc-api/classes/Erubis/SimplifyEnhancer.html", "doc-api/classes/Erubis/StdoutEnhancer.html", "doc-api/classes/Erubis/StdoutEruby.html", "doc-api/classes/Erubis/StdoutSimplifiedEruby.html", "doc-api/classes/Erubis/StringBufferEnhancer.html", "doc-api/classes/Erubis/StringBufferEruby.html", "doc-api/classes/Erubis/StringIOEruby.html", "doc-api/classes/Erubis/TinyEruby.html", "doc-api/classes/Erubis/XmlEruby.html", "doc-api/classes/Erubis/XmlHelper.html", "doc-api/classes/Erubis.html", "doc-api/created.rid", "doc-api/files", "doc-api/files/erubis", "doc-api/files/erubis/context_rb.html", "doc-api/files/erubis/converter_rb.html", "doc-api/files/erubis/engine", "doc-api/files/erubis/engine/ec_rb.html", "doc-api/files/erubis/engine/ejava_rb.html", "doc-api/files/erubis/engine/ejavascript_rb.html", "doc-api/files/erubis/engine/enhanced_rb.html", "doc-api/files/erubis/engine/eperl_rb.html", "doc-api/files/erubis/engine/ephp_rb.html", "doc-api/files/erubis/engine/eruby_rb.html", "doc-api/files/erubis/engine/escheme_rb.html", "doc-api/files/erubis/engine/optimized_rb.html", "doc-api/files/erubis/engine_rb.html", "doc-api/files/erubis/enhancer_rb.html", "doc-api/files/erubis/error_rb.html", "doc-api/files/erubis/evaluator_rb.html", "doc-api/files/erubis/generator_rb.html", "doc-api/files/erubis/helper_rb.html", "doc-api/files/erubis/helpers", "doc-api/files/erubis/helpers/rails_form_helper_rb.html", "doc-api/files/erubis/helpers/rails_helper_rb.html", "doc-api/files/erubis/local-setting_rb.html", "doc-api/files/erubis/main_rb.html", "doc-api/files/erubis/preprocessing_rb.html", "doc-api/files/erubis/tiny_rb.html", "doc-api/files/erubis_rb.html", "doc-api/files/README_txt.html", "doc-api/fr_class_index.html", "doc-api/fr_file_index.html", "doc-api/fr_method_index.html", "doc-api/index.html", "doc-api/rdoc-style.css"]
-  s.homepage = %q{http://www.kuwata-lab.com/erubis/}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{erubis}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{a fast and extensible eRuby implementation which supports multi-language}
-  s.test_files = ["test/test.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<abstract>, [">= 1.0.0"])
-    else
-      s.add_dependency(%q<abstract>, [">= 1.0.0"])
-    end
-  else
-    s.add_dependency(%q<abstract>, [">= 1.0.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/extlib-0.9.11.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/extlib-0.9.11.gemspec
deleted file mode 100644
index 5888626..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/extlib-0.9.11.gemspec
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{extlib}
-  s.version = "0.9.11"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Sam Smoot"]
-  s.date = %q{2009-03-10}
-  s.description = %q{Support library for DataMapper and Merb.}
-  s.email = %q{ssmoot at gmail.com}
-  s.extra_rdoc_files = ["LICENSE", "README", "History.txt"]
-  s.files = ["LICENSE", "README", "Rakefile", "History.txt", "lib/extlib", "lib/extlib/array.rb", "lib/extlib/assertions.rb", "lib/extlib/blank.rb", "lib/extlib/boolean.rb", "lib/extlib/class.rb", "lib/extlib/datetime.rb", "lib/extlib/dictionary.rb", "lib/extlib/hash.rb", "lib/extlib/hook.rb", "lib/extlib/inflection.rb", "lib/extlib/lazy_array.rb", "lib/extlib/logger.rb", "lib/extlib/mash.rb", "lib/extlib/module.rb", "lib/extlib/nil.rb", "lib/extlib/numeric.rb", "lib/extlib/object.rb", "lib/extlib/object_space.rb", "lib/extlib/pathname.rb", "lib/extlib/pooling.rb", "lib/extlib/rubygems.rb", "lib/extlib/simple_set.rb", "lib/extlib/string.rb", "lib/extlib/struct.rb", "lib/extlib/symbol.rb", "lib/extlib/tasks", "lib/extlib/tasks/release.rb", "lib/extlib/time.rb", "lib/extlib/version.rb", "lib/extlib/virtual_file.rb", "lib/extlib.rb", "spec/array_spec.rb", "spec/blank_spec.rb", "spec/class_spec.rb", "spec/datetime_spec.rb", "spec/hash_spec.rb", "spec/hook_spec.rb", "spec/inflection", "spec/inflection/plural_spec.rb", "spec/inflection/singular_spec.rb", "spec/inflection_extras_spec.rb", "spec/lazy_array_spec.rb", "spec/mash_spec.rb", "spec/module_spec.rb", "spec/object_space_spec.rb", "spec/object_spec.rb", "spec/pooling_spec.rb", "spec/simple_set_spec.rb", "spec/spec_helper.rb", "spec/string_spec.rb", "spec/struct_spec.rb", "spec/symbol_spec.rb", "spec/time_spec.rb", "spec/try_dup_spec.rb", "spec/virtual_file_spec.rb"]
-  s.homepage = %q{http://extlib.rubyforge.org}
-  s.require_paths = ["lib"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Support library for DataMapper and Merb.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/facade-1.0.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/facade-1.0.2.gemspec
deleted file mode 100644
index 83c6bb9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/facade-1.0.2.gemspec
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{facade}
-  s.version = "1.0.2"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.cert_chain = nil
-  s.date = %q{2007-06-10}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/facade.rb", "CHANGES", "MANIFEST", "Rakefile", "README", "test/tc_facade.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/shards}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An easy way to implement the facade pattern in your class}
-  s.test_files = ["test/tc_facade.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/flexmock-0.8.6.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/flexmock-0.8.6.gemspec
deleted file mode 100644
index 145b4ae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/flexmock-0.8.6.gemspec
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{flexmock}
-  s.version = "0.8.6"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jim Weirich"]
-  s.date = %q{2009-04-14}
-  s.description = %q{FlexMock is a extremely simple mock object class compatible with the Test::Unit framework.  Although the FlexMock's  interface is simple, it is very flexible.}
-  s.email = %q{jim at weirichhouse.org}
-  s.extra_rdoc_files = ["README", "CHANGES", "doc/GoogleExample.rdoc", "doc/releases/flexmock-0.4.0.rdoc", "doc/releases/flexmock-0.4.1.rdoc", "doc/releases/flexmock-0.4.2.rdoc", "doc/releases/flexmock-0.4.3.rdoc", "doc/releases/flexmock-0.5.0.rdoc", "doc/releases/flexmock-0.5.1.rdoc", "doc/releases/flexmock-0.6.0.rdoc", "doc/releases/flexmock-0.6.1.rdoc", "doc/releases/flexmock-0.6.2.rdoc", "doc/releases/flexmock-0.6.3.rdoc", "doc/releases/flexmock-0.6.4.rdoc", "doc/releases/flexmock-0.7.0.rdoc", "doc/releases/flexmock-0.7.1.rdoc", "doc/releases/flexmock-0.8.0.rdoc", "doc/releases/flexmock-0.8.2.rdoc", "doc/releases/flexmock-0.8.3.rdoc", "doc/releases/flexmock-0.8.4.rdoc", "doc/releases/flexmock-0.8.5.rdoc"]
-  s.files = ["CHANGES", "Rakefile", "README", "TAGS", "lib/flexmock/argument_matchers.rb", "lib/flexmock/argument_types.rb", "lib/flexmock/base.rb", "lib/flexmock/composite.rb", "lib/flexmock/core.rb", "lib/flexmock/core_class_methods.rb", "lib/flexmock/default_framework_adapter.rb", "lib/flexmock/deprecated_methods.rb", "lib/flexmock/errors.rb", "lib/flexmock/expectation.rb", "lib/flexmock/expectation_director.rb", "lib/flexmock/mock_container.rb", "lib/flexmock/noop.rb", "lib/flexmock/ordering.rb", "lib/flexmock/partial_mock.rb", "lib/flexmock/rails/view_mocking.rb", "lib/flexmock/rails.rb", "lib/flexmock/recorder.rb", "lib/flexmock/rspec.rb", "lib/flexmock/test_unit.rb", "lib/flexmock/test_unit_integration.rb", "lib/flexmock/undefined.rb", "lib/flexmock/validators.rb", "lib/flexmock.rb", "test/asserts.rb", "test/redirect_error.rb", "test/rspec_integration/integration_spec.rb", "test/test_aliasing.rb", "test/test_container_methods.rb", "test/test_default_framework_adapter.rb", "test/test_demeter_mocking.rb", "test/test_deprecated_methods.rb", "test/test_examples_from_readme.rb", "test/test_extended_should_receive.rb", "test/test_flexmodel.rb", "test/test_naming.rb", "test/test_new_instances.rb", "test/test_partial_mock.rb", "test/test_rails_view_stub.rb", "test/test_record_mode.rb", "test/test_samples.rb", "test/test_should_ignore_missing.rb", "test/test_should_receive.rb", "test/test_tu_integration.rb", "test/test_undefined.rb", "test/test_unit_integration/test_auto_test_unit.rb", "flexmock.blurb", "install.rb", "doc/GoogleExample.rdoc", "doc/releases/flexmock-0.4.0.rdoc", "doc/releases/flexmock-0.4.1.rdoc", "doc/releases/flexmock-0.4.2.rdoc", "doc/releases/flexmock-0.4.3.rdoc", "doc/releases/flexmock-0.5.0.rdoc", "doc/releases/flexmock-0.5.1.rdoc", "doc/releases/flexmock-0.6.0.rdoc", "doc/releases/flexmock-0.6.1.rdoc", "doc/releases/flexmock-0.6.2.rdoc", "doc/releases/flexmock-0.6.3.rdoc", "doc/releases/flexmock-0.6.4.rdoc", "doc/releases/flexmock-0.7.0.rdoc", "doc/releases/flexmock-0.7.1.rdoc", "doc/releases/flexmock-0.8.0.rdoc", "doc/releases/flexmock-0.8.2.rdoc", "doc/releases/flexmock-0.8.3.rdoc", "doc/releases/flexmock-0.8.4.rdoc", "doc/releases/flexmock-0.8.5.rdoc"]
-  s.has_rdoc = true
-  s.homepage = %q{http://flexmock.rubyforge.org}
-  s.rdoc_options = ["--title", "Flex Mock", "--main", "README", "--line-numbers"]
-  s.require_paths = ["lib"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Simple and Flexible Mock Objects for Testing}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxri-0.3.6.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxri-0.3.6.gemspec
deleted file mode 100644
index a137917..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxri-0.3.6.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{fxri}
-  s.version = "0.3.6"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.bindir = %q{.}
-  s.cert_chain = nil
-  s.date = %q{2006-12-17}
-  s.default_executable = %q{fxri}
-  s.description = %q{FxRi is an FXRuby interface to the RI documentation, with a search engine that allows for search-on-typing.}
-  s.email = %q{markus.prinz at qsig.org}
-  s.executables = ["fxri"]
-  s.files = ["lib", "fxri", "fxri.gemspec", "fxri-0.3.6.tar.gz", "fxri.rb", "lib/FoxDisplayer.rb", "lib/icons", "lib/Recursive_Open_Struct.rb", "lib/RiManager.rb", "lib/Globals.rb", "lib/fxirb.rb", "lib/Packet_Item.rb", "lib/Search_Engine.rb", "lib/Empty_Text_Field_Handler.rb", "lib/FoxTextFormatter.rb", "lib/Packet_List.rb", "lib/Icon_Loader.rb", "lib/icons/module.png", "lib/icons/method.png", "lib/icons/class.png", "./fxri"]
-  s.homepage = %q{http://rubyforge.org/projects/fxri/}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubyforge_project = %q{fxri}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Graphical interface to the RI documentation, with search engine.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<fxruby>, [">= 1.2.0"])
-    else
-      s.add_dependency(%q<fxruby>, [">= 1.2.0"])
-    end
-  else
-    s.add_dependency(%q<fxruby>, [">= 1.2.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxruby-1.6.16-x86-mswin32-60.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxruby-1.6.16-x86-mswin32-60.gemspec
deleted file mode 100644
index 17213d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/fxruby-1.6.16-x86-mswin32-60.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{fxruby}
-  s.version = "1.6.16"
-  s.platform = %q{x86-mswin32-60}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Lyle Johnson"]
-  s.date = %q{2008-07-03}
-  s.description = %q{FXRuby is the Ruby binding to the FOX GUI toolkit.}
-  s.email = %q{lyle.johnson at gmail.com}
-  s.extra_rdoc_files = ["rdoc-sources", "rdoc-sources/README.rdoc"]
-  s.files = ["LICENSE", "README", "doc/style.css", "doc/apes02.html", "doc/apes03.html", "doc/book.html", "doc/build.html", "doc/ch03s02.html", "doc/ch03s03.html", "doc/ch03s04.html", "doc/ch03s05.html", "doc/ch04s02.html", "doc/ch04s03.html", "doc/ch04s04.html", "doc/ch05s02.html", "doc/ch05s03.html", "doc/changes.html", "doc/clipboardtut.html", "doc/differences.html", "doc/dragdroptut.html", "doc/events.html", "doc/examples.html", "doc/gems.html", "doc/goals.html", "doc/implementation.html", "doc/infosources.html", "doc/library.html", "doc/opengl.html", "doc/pt01.html", "doc/pt02.html", "doc/scintilla.html", "doc/subversion.html", "doc/tutorial1.html", "doc/unicode.html", "doc/images/babelfish.png", "doc/images/browser.png", "doc/images/button.png", "doc/images/call-chain-example.png", "doc/images/colordialog.png", "doc/images/datatarget.png", "doc/images/dialog.png", "doc/images/dilbert.png", "doc/images/dirlist.png", "doc/images/dropsite-droprejected.png", "doc/images/foursplit.png", "doc/images/gltest.png", "doc/images/glviewer.png", "doc/images/groupbox.png", "doc/images/header.png", "doc/images/hello-with-button.png", "doc/images/hello-with-icon-1.png", "doc/images/hello-with-icon-2.png", "doc/images/hello-with-icon-3.png", "doc/images/hello-with-tooltip.png", "doc/images/hello-without-button.png", "doc/images/hello.png", "doc/images/hello2.png", "doc/images/iconlist-bigicons.png", "doc/images/iconlist-details.png", "doc/images/image.png", "doc/images/imageviewer.png", "doc/images/inheritance.png", "doc/images/mditest.png", "doc/images/raabrowser.png", "doc/images/scribble.png", "doc/images/shutter.png", "doc/images/splitter.png", "doc/images/tabbook.png", "doc/images/table.png", "doc/images/tutorial1.png", "examples/README", "examples/babelfish.rb", "examples/bounce.rb", "examples/browser.rb", "examples/button.rb", "examples/charts.rb", "examples/custom_table_item.rb", "examples/datatarget.rb", "examples/dctest.rb", "examples/dialog.rb", "examples/dilbert.rb", "examples/dirlist.rb", "examples/dragdrop.rb", "examples/dragsource.rb", "examples/dropsite.rb", "examples/foursplit.rb", "examples/gltest.rb", "examples/glviewer.rb", "examples/groupbox.rb", "examples/header.rb", "examples/hello.rb", "examples/hello2.rb", "examples/iconlist.rb", "examples/image.rb", "examples/imageviewer.rb", "examples/inputs.rb", "examples/iRAA.rb", "examples/mditest.rb", "examples/pig.rb", "examples/RAA.rb", "examples/raabrowser.rb", "examples/ratio.rb", "examples/rulerview.rb", "examples/scintilla-test.rb", "examples/scribble-orig.rb", "examples/scribble.rb", "examples/shutter.rb", "examples/splitter.rb", "examples/styledtext.rb", "examples/tabbook.rb", "examples/table.rb", "examples/unicode.rb", "examples/icons/backview.png", "examples/icons/big.png", "examples/icons/bigfolder.png", "examples/icons/bigpenguin.png", "examples/icons/bottomview.png", "examples/icons/camera.png", "examples/icons/capbutt.png", "examples/icons/capnotlast.png", "examples/icons/capproj.png", "examples/icons/capround.png", "examples/icons/colorpal.png", "examples/icons/copy.png", "examples/icons/cut.png", "examples/icons/delimit.png", "examples/icons/dippy.png", "examples/icons/double_dash.png", "examples/icons/filenew.png", "examples/icons/fileopen.png", "examples/icons/filesave.png", "examples/icons/filesaveas.png", "examples/icons/fonts.png", "examples/icons/fox.png", "examples/icons/foxicon.png", "examples/icons/frontview.png", "examples/icons/gem_big.png", "examples/icons/gem_small.png", "examples/icons/hello2.png", "examples/icons/help.png", "examples/icons/indent.png", "examples/icons/jbevel.png", "examples/icons/jmiter.png", "examples/icons/jround.png", "examples/icons/kill.png", "examples/icons/leftview.png", "examples/icons/light.png", "examples/icons/minidoc.png", "examples/icons/minifolder.png", "examples/icons/minifolderopen.png", "examples/icons/newfolder.png", "examples/icons/nolight.png", "examples/icons/onoff_dash.png", "examples/icons/palette.png", "examples/icons/parallel.png", "examples/icons/paste.png", "examples/icons/pattern.png", "examples/icons/penguin.png", "examples/icons/perspective.png", "examples/icons/printicon.png", "examples/icons/prop.png", "examples/icons/redo.png", "examples/icons/rightview.png", "examples/icons/saveas.png", "examples/icons/shutter1.png", "examples/icons/shutter2.png", "examples/icons/small.png", "examples/icons/smoothlight.png", "examples/icons/solid_line.png", "examples/icons/tbuplevel.png", "examples/icons/topview.png", "examples/icons/undo.png", "examples/icons/winapp.png", "examples/icons/zoom.png", "examples/icons/AngryGuyInBunnySuit.ico", "examples/icons/FatBot.ico", "examples/icons/FlippedySwitch.ico", "examples/icons/LeGoon.ico", "examples/icons/Net.ico", "examples/icons/RedMacOS.ico", "examples/icons/SawBlade.ico", "examples/textedit/commands.rb", "examples/textedit/helpwindow.rb", "examples/textedit/prefdialog.rb", "examples/textedit/textedit.rb", "lib/fox16/aliases.rb", "lib/fox16/calendar.rb", "lib/fox16/chore.rb", "lib/fox16/colors.rb", "lib/fox16/core.rb", "lib/fox16/dict.rb", "lib/fox16/exceptions_for_fxerror.rb", "lib/fox16/execute_nonmodal.rb", "lib/fox16/glgroup.rb", "lib/fox16/glshapes.rb", "lib/fox16/input.rb", "lib/fox16/irb.rb", "lib/fox16/iterators.rb", "lib/fox16/keys.rb", "lib/fox16/kwargs.rb", "lib/fox16/missingdep.rb", "lib/fox16/pseudokeyboard.rb", "lib/fox16/pseudomouse.rb", "lib/fox16/responder.rb", "lib/fox16/responder2.rb", "lib/fox16/scintilla.rb", "lib/fox16/settings.rb", "lib/fox16/signal.rb", "lib/fox16/splashscreen.rb", "lib/fox16/timeout.rb", "lib/fox16/undolist.rb", "lib/fox16/version.rb", "tests/README", "tests/stress1.rb", "tests/stress2.rb", "tests/stress3.rb", "tests/TC_downcast.rb", "tests/TC_FXAccelTable.rb", "tests/TC_FXApp.rb", "tests/TC_FXArc.rb", "tests/TC_FXBMPIcon.rb", "tests/TC_FXBMPImage.rb", "tests/TC_FXButton.rb", "tests/TC_FXCheckButton.rb", "tests/TC_FXComboBox.rb", "tests/TC_FXDataTarget.rb", "tests/TC_FXDC.rb", "tests/TC_FXDCPrint.rb", "tests/TC_FXDCWindow.rb", "tests/TC_FXDialogBox.rb", "tests/TC_FXDirList.rb", "tests/TC_FXFileAssoc.rb", "tests/TC_FXFileStream.rb", "tests/TC_FXFoldingList.rb", "tests/TC_FXFont.rb", "tests/TC_FXFontDesc.rb", "tests/TC_FXGLGroup.rb", "tests/TC_FXGLShape.rb", "tests/TC_FXGLViewer.rb", "tests/TC_FXGradientBar.rb", "tests/TC_FXHeader.rb", "tests/TC_FXHiliteStyle.rb", "tests/TC_FXIconDict.rb", "tests/TC_FXIconList.rb", "tests/TC_FXId.rb", "tests/TC_FXImage.rb", "tests/TC_FXLight.rb", "tests/TC_FXList.rb", "tests/TC_FXListBox.rb", "tests/TC_FXMainWindow.rb", "tests/TC_FXMat4f.rb", "tests/TC_FXMaterial.rb", "tests/TC_FXMemoryStream.rb", "tests/TC_FXMenuCheck.rb", "tests/TC_FXMenuCommand.rb", "tests/TC_FXMenuRadio.rb", "tests/TC_FXMessageBox.rb", "tests/TC_FXPoint.rb", "tests/TC_FXQuatf.rb", "tests/TC_FXRadioButton.rb", "tests/TC_FXRangef.rb", "tests/TC_FXRectangle.rb", "tests/TC_FXRegion.rb", "tests/TC_FXRegistry.rb", "tests/TC_FXScrollArea.rb", "tests/TC_FXScrollWindow.rb", "tests/TC_FXSegment.rb", "tests/TC_FXSettings.rb", "tests/TC_FXShell.rb", "tests/TC_FXSize.rb", "tests/TC_FXStream.rb", "tests/TC_FXTable.rb", "tests/TC_FXTableItem.rb", "tests/TC_FXText.rb", "tests/TC_FXTopWindow.rb", "tests/TC_FXTreeList.rb", "tests/TC_FXTreeListBox.rb", "tests/TC_FXUndoList.rb", "tests/TC_FXVec2d.rb", "tests/TC_FXVec2f.rb", "tests/TC_FXVec3d.rb", "tests/TC_FXVec3f.rb", "tests/TC_FXVec4f.rb", "tests/TC_FXViewport.rb", "tests/TC_FXXBMIcon.rb", "tests/TC_FXXBMImage.rb", "tests/TC_FXXPMIcon.rb", "tests/TC_FXXPMImage.rb", "tests/TC_Misc.rb", "tests/testcase.rb", "tests/TS_All.rb", "tests/blankpage.ps", "tests/howdypage.ps", "rdoc-sources/FX4Splitter.rb", "rdoc-sources/FX7Segment.rb", "rdoc-sources/FXAccelTable.rb", "rdoc-sources/FXApp.rb", "rdoc-sources/FXArrowButton.rb", "rdoc-sources/FXBitmap.rb", "rdoc-sources/FXBitmapFrame.rb", "rdoc-sources/FXBitmapView.rb", "rdoc-sources/FXBMPIcon.rb", "rdoc-sources/FXBMPImage.rb", "rdoc-sources/FXButton.rb", "rdoc-sources/FXCanvas.rb", "rdoc-sources/FXCheckButton.rb", "rdoc-sources/FXChoiceBox.rb", "rdoc-sources/FXColorBar.rb", "rdoc-sources/FXColorDialog.rb", "rdoc-sources/FXColorList.rb", "rdoc-sources/FXColorRing.rb", "rdoc-sources/FXColorSelector.rb", "rdoc-sources/FXColorWell.rb", "rdoc-sources/FXColorWheel.rb", "rdoc-sources/FXComboBox.rb", "rdoc-sources/FXComposite.rb", "rdoc-sources/FXCURCursor.rb", "rdoc-sources/FXCursor.rb", "rdoc-sources/FXDataTarget.rb", "rdoc-sources/FXDC.rb", "rdoc-sources/FXDCPrint.rb", "rdoc-sources/FXDCWindow.rb", "rdoc-sources/FXDebugTarget.rb", "rdoc-sources/fxdefs.rb", "rdoc-sources/FXDelegator.rb", "rdoc-sources/FXDial.rb", "rdoc-sources/FXDialogBox.rb", "rdoc-sources/FXDict.rb", "rdoc-sources/FXDirBox.rb", "rdoc-sources/FXDirDialog.rb", "rdoc-sources/FXDirList.rb", "rdoc-sources/FXDirSelector.rb", "rdoc-sources/FXDockBar.rb", "rdoc-sources/FXDockHandler.rb", "rdoc-sources/FXDockSite.rb", "rdoc-sources/FXDockTitle.rb", "rdoc-sources/FXDocument.rb", "rdoc-sources/FXDragCorner.rb", "rdoc-sources/FXDrawable.rb", "rdoc-sources/FXDriveBox.rb", "rdoc-sources/FXExtentd.rb", "rdoc-sources/FXExtentf.rb", "rdoc-sources/FXFileDialog.rb", "rdoc-sources/FXFileDict.rb", "rdoc-sources/FXFileList.rb", "rdoc-sources/FXFileSelector.rb", "rdoc-sources/FXFileStream.rb", "rdoc-sources/FXFoldingList.rb", "rdoc-sources/FXFont.rb", "rdoc-sources/FXFontDialog.rb", "rdoc-sources/FXFontSelector.rb", "rdoc-sources/FXFrame.rb", "rdoc-sources/FXGIFCursor.rb", "rdoc-sources/FXGIFIcon.rb", "rdoc-sources/FXGIFImage.rb", "rdoc-sources/FXGLCanvas.rb", "rdoc-sources/FXGLContext.rb", "rdoc-sources/FXGLObject.rb", "rdoc-sources/FXGLShape.rb", "rdoc-sources/FXGLViewer.rb", "rdoc-sources/FXGLVisual.rb", "rdoc-sources/FXGradientBar.rb", "rdoc-sources/FXGroupBox.rb", "rdoc-sources/FXHeader.rb", "rdoc-sources/FXHorizontalFrame.rb", "rdoc-sources/FXICOIcon.rb", "rdoc-sources/FXICOImage.rb", "rdoc-sources/FXIcon.rb", "rdoc-sources/FXIconDict.rb", "rdoc-sources/FXIconList.rb", "rdoc-sources/FXIconSource.rb", "rdoc-sources/FXId.rb", "rdoc-sources/FXImage.rb", "rdoc-sources/FXImageFrame.rb", "rdoc-sources/FXImageView.rb", "rdoc-sources/FXInputDialog.rb", "rdoc-sources/FXJPGIcon.rb", "rdoc-sources/FXJPGImage.rb", "rdoc-sources/FXKnob.rb", "rdoc-sources/FXLabel.rb", "rdoc-sources/FXList.rb", "rdoc-sources/FXListBox.rb", "rdoc-sources/FXMainWindow.rb", "rdoc-sources/FXMatrix.rb", "rdoc-sources/FXMDIButton.rb", "rdoc-sources/FXMDIChild.rb", "rdoc-sources/FXMDIClient.rb", "rdoc-sources/FXMemoryBuffer.rb", "rdoc-sources/FXMemoryStream.rb", "rdoc-sources/FXMenuBar.rb", "rdoc-sources/FXMenuButton.rb", "rdoc-sources/FXMenuCaption.rb", "rdoc-sources/FXMenuCascade.rb", "rdoc-sources/FXMenuCheck.rb", "rdoc-sources/FXMenuCommand.rb", "rdoc-sources/FXMenuPane.rb", "rdoc-sources/FXMenuRadio.rb", "rdoc-sources/FXMenuSeparator.rb", "rdoc-sources/FXMenuTitle.rb", "rdoc-sources/FXMessageBox.rb", "rdoc-sources/FXObject.rb", "rdoc-sources/FXOptionMenu.rb", "rdoc-sources/FXPacker.rb", "rdoc-sources/FXPCXIcon.rb", "rdoc-sources/FXPCXImage.rb", "rdoc-sources/FXPicker.rb", "rdoc-sources/FXPNGIcon.rb", "rdoc-sources/FXPNGImage.rb", "rdoc-sources/FXPopup.rb", "rdoc-sources/FXPPMIcon.rb", "rdoc-sources/FXPPMImage.rb", "rdoc-sources/FXPrintDialog.rb", "rdoc-sources/FXProgressBar.rb", "rdoc-sources/FXProgressDialog.rb", "rdoc-sources/FXQuatd.rb", "rdoc-sources/FXQuatf.rb", "rdoc-sources/FXRadioButton.rb", "rdoc-sources/FXRanged.rb", "rdoc-sources/FXRangef.rb", "rdoc-sources/FXRealSlider.rb", "rdoc-sources/FXRealSpinner.rb", "rdoc-sources/FXRecentFiles.rb", "rdoc-sources/FXRectangle.rb", "rdoc-sources/FXRegion.rb", "rdoc-sources/FXRegistry.rb", "rdoc-sources/FXReplaceDialog.rb", "rdoc-sources/FXRGBIcon.rb", "rdoc-sources/FXRGBImage.rb", "rdoc-sources/FXRootWindow.rb", "rdoc-sources/FXRuler.rb", "rdoc-sources/FXRulerView.rb", "rdoc-sources/FXScintilla.rb", "rdoc-sources/FXScrollArea.rb", "rdoc-sources/FXScrollBar.rb", "rdoc-sources/FXScrollPane.rb", "rdoc-sources/FXScrollWindow.rb", "rdoc-sources/FXSearchDialog.rb", "rdoc-sources/FXSeparator.rb", "rdoc-sources/FXSettings.rb", "rdoc-sources/FXShell.rb", "rdoc-sources/FXShutter.rb", "rdoc-sources/FXSize.rb", "rdoc-sources/FXSlider.rb", "rdoc-sources/FXSphered.rb", "rdoc-sources/FXSpheref.rb", "rdoc-sources/FXSpinner.rb", "rdoc-sources/FXSplashWindow.rb", "rdoc-sources/FXSplitter.rb", "rdoc-sources/FXSpring.rb", "rdoc-sources/FXStatusBar.rb", "rdoc-sources/FXStatusLine.rb", "rdoc-sources/FXStream.rb", "rdoc-sources/FXStringDict.rb", "rdoc-sources/FXSwitcher.rb", "rdoc-sources/FXTabBar.rb", "rdoc-sources/FXTabBook.rb", "rdoc-sources/FXTabItem.rb", "rdoc-sources/FXTable.rb", "rdoc-sources/FXText.rb", "rdoc-sources/FXTextField.rb", "rdoc-sources/FXTGAIcon.rb", "rdoc-sources/FXTGAImage.rb", "rdoc-sources/FXTIFIcon.rb", "rdoc-sources/FXTIFImage.rb", "rdoc-sources/FXToggleButton.rb", "rdoc-sources/FXToolBar.rb", "rdoc-sources/FXToolBarGrip.rb", "rdoc-sources/FXToolBarShell.rb", "rdoc-sources/FXToolBarTab.rb", "rdoc-sources/FXToolTip.rb", "rdoc-sources/FXTopWindow.rb", "rdoc-sources/FXTranslator.rb", "rdoc-sources/FXTreeList.rb", "rdoc-sources/FXTreeListBox.rb", "rdoc-sources/FXTriStateButton.rb", "rdoc-sources/FXVec2d.rb", "rdoc-sources/FXVec2f.rb", "rdoc-sources/FXVec3d.rb", "rdoc-sources/FXVec3f.rb", "rdoc-sources/FXVec4d.rb", "rdoc-sources/FXVec4f.rb", "rdoc-sources/FXVerticalFrame.rb", "rdoc-sources/FXVisual.rb", "rdoc-sources/FXWindow.rb", "rdoc-sources/FXWizard.rb", "rdoc-sources/FXXBMIcon.rb", "rdoc-sources/FXXBMImage.rb", "rdoc-sources/FXXPMIcon.rb", "rdoc-sources/FXXPMImage.rb", "rdoc-sources/README.rdoc", "rdoc-sources", "ext/fox16/fox16.so"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.fxruby.org}
-  s.rdoc_options = ["--main", "rdoc-sources/README.rdoc", "--exclude", "ext/fox16", "--exclude", /acceltable|aliases|bitmapview|canvas|html|kwargs|missingdep|responder|tkcompat/]
-  s.require_paths = ["ext/fox16", "lib"]
-  s.requirements = ["FOX library version 1.6.0 or higher"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{FXRuby is the Ruby binding to the FOX GUI toolkit.}
-  s.test_files = ["tests/TS_All.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/gem_plugin-0.2.3.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/gem_plugin-0.2.3.gemspec
deleted file mode 100644
index a9a3e96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/gem_plugin-0.2.3.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{gem_plugin}
-  s.version = "0.2.3"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Zed A. Shaw"]
-  s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n\ncmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK\nCZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzI0OVoXDTA4MDkxNTEwMzI0OVow\nTjEcMBoGA1UEAwwTbW9uZ3JlbC1kZXZlbG9wbWVudDEZMBcGCgmSJomT8ixkARkW\nCXJ1Ynlmb3JnZTETMBEGCgmSJomT8ixkARkWA29yZzCCASIwDQYJKoZIhvcNAQEB\nBQADggEPADCCAQoCggEBAMb9v3B01eOHk3FyypbQgKXzJplUE5P6dXoG+xpPm0Lv\nP7BQmeMncOwqQ7zXpVQU+lTpXtQFTsOE3vL7KnhQFJKGvUAkbh24VFyopu1I0yqF\nmGu4nRqNXGXVj8TvLSj4S1WpSRLAa0acLPNyKhGmoV9+crqQypSjM6XKjBeppifo\n4eBmWGjiJEYMIJBvJZPJ4rAVDDA8C6CM1m3gMBGNh8ELDhU8HI9AP3dMIkTI2Wx9\n9xkJwHdroAaS0IFFtYChrwee4FbCF1FHDgoTosMwa47DrLHg4hZ6ojaKwK5QVWEV\nXGb6ju5UqpktnSWF2W+Lvl/K0tI42OH2CAhebT1gEVUCAwEAAaM5MDcwCQYDVR0T\nBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGHChyMSZ16u9WOzKhgJSQ9lqDc5\nMA0GCSqGSIb3DQEBBQUAA4IBAQA/lfeN2WdB1xN+82tT7vNS4HOjRQw6MUh5yktu\nGQjaGqm0UB+aX0Z9y0B0qpfv9rj7nmIvEGiwBmDepNWYCGuW15JyqpN7QVVnG2xS\nMrame7VqgjM7A+VGDD5In5LtWbM/CHAATvvFlQ5Ph13YE1EdnVbZ65c+KQv+5sFY\nQ+zEop74d878uaC/SAHHXS46TiXneocaLSYw1CEZs/MAIy+9c4Q5ESbGpgnfg1Ad\n6lwl7k3hsNHO/+tZzx4HJtOXDI1yAl3+q6T9J0yI3z97EinwvAKhS1eyOI2Y5eeT\ntbQaNYkU127B3l/VNpd8fQm3Jkl/PqCCmDBQjUszFrJEODug\n-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\nMIIDPzCCAiegAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n\ncmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK\nCZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzMwMFoXDTA4MDkxNTEwMzMwMFow\nPTENMAsGA1UEAwwEZXZhbjEYMBYGCgmSJomT8ixkARkWCGNsb3VkYnVyMRIwEAYK\nCZImiZPyLGQBGRYCc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk\nLQijz2fICmev4+9s0WB71WzJFYCUYFQQxqGlenbxWut9dlPSsBbskGjg+UITeOXi\ncTh3MTqAB0i1LJyNOiyvDsAivn7GjKXhVvflp2/npMhBBe83P4HOWqeQBjkk3QJI\nFFNBvqbFLeEXIP+HiqAOiyNHZEVXMepLEJLzGrg3Ly7M7A6L5fK7jDrt8jkm+c+8\nzGquVHV5ohAebGd/vpHMLjpA7lCG5+MBgYZd33rRfNtCxDJMNRgnOu9PsB05+LJn\nMpDKQq3x0SkOf5A+MVOcadNCaAkFflYk3SUcXaXWxu/eCHgqfW1m76RNSp5djpKE\nCgNPK9lGIWpB3CHzDaVNAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSw\nMB0GA1UdDgQWBBT5aonPfFBdJ5rWFG+8dZwgyB54LjANBgkqhkiG9w0BAQUFAAOC\nAQEAiKbzWgMcvZs/TPwJxr8tJ+7mSGz7+zDkWcbBl8FpQq1DtRcATh1oyTkQT7t+\nrFEBYMmb0FxbbUnojQp8hIFgFkUwFpStwWBL/okLSehntzI2iwjuEtfj4ac9Q3Y2\nuSdbmZqsQTuu+lEUc5C4qLK7YKwToaul+cx7vWxyk1YendcVwRlFLIBqA5cPrwo3\nyyGLTHlRYn2c9PSbM1B63Yg+LqSSAa4QSU3Wv9pNdffVpvwHPVEQpO7ZDo5slQFL\nGf6+gbD/eZAvhpvmn8JlXb+LxKaFVMs2Yvrk1xOuT76SsPjEGWxkr7jZCIpsYfgQ\nALN3mi/9z0Mf1YroliUgF0v5Yw==\n-----END CERTIFICATE-----\n"]
-  s.date = %q{2007-10-25}
-  s.default_executable = %q{gpgen}
-  s.description = %q{A plugin system based on rubygems that uses dependencies only}
-  s.email = %q{}
-  s.executables = ["gpgen"]
-  s.files = ["test/test_plugins.rb", "setup.rb", "resources/resources/defaults.yaml", "resources/README", "resources/Rakefile", "resources/LICENSE", "resources/lib/project/init.rb", "resources/COPYING", "README", "Manifest", "LICENSE", "lib/gem_plugin.rb", "COPYING", "CHANGELOG", "bin/gpgen", "gem_plugin.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{mongrel}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A plugin system based on rubygems that uses dependencies only}
-  s.test_files = ["test/test_plugins.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/grit-1.0.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/grit-1.0.1.gemspec
deleted file mode 100644
index f1711bb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/grit-1.0.1.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{grit}
-  s.version = "1.0.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Tom Preston-Werner", "Scott Chacon"]
-  s.date = %q{2009-02-10}
-  s.description = %q{Grit is a Ruby library for extracting information from a git repository in an object oriented manner.}
-  s.email = %q{tom at mojombo.com}
-  s.files = ["API.txt", "History.txt", "README.txt", "VERSION.yml", "lib/grit", "lib/grit/actor.rb", "lib/grit/blame.rb", "lib/grit/blob.rb", "lib/grit/commit.rb", "lib/grit/commit_stats.rb", "lib/grit/config.rb", "lib/grit/diff.rb", "lib/grit/errors.rb", "lib/grit/git-ruby", "lib/grit/git-ruby/commit_db.rb", "lib/grit/git-ruby/file_index.rb", "lib/grit/git-ruby/git_object.rb", "lib/grit/git-ruby/internal", "lib/grit/git-ruby/internal/loose.rb", "lib/grit/git-ruby/internal/mmap.rb", "lib/grit/git-ruby/internal/pack.rb", "lib/grit/git-ruby/internal/raw_object.rb", "lib/grit/git-ruby/object.rb", "lib/grit/git-ruby/repository.rb", "lib/grit/git-ruby.rb", "lib/grit/git.rb", "lib/grit/index.rb", "lib/grit/lazy.rb", "lib/grit/merge.rb", "lib/grit/ref.rb", "lib/grit/repo.rb", "lib/grit/status.rb", "lib/grit/submodule.rb", "lib/grit/tag.rb", "lib/grit/tree.rb", "lib/grit.rb", "lib/open3_detach.rb", "test/bench", "test/bench/benchmarks.rb", "test/bench/benchmarks.txt", "test/dot_git", "test/dot_git/COMMIT_EDITMSG", "test/dot_git/config", "test/dot_git/description", "test/dot_git/FETCH_HEAD", "test/dot_git/file-index", "test/dot_git/HEAD", "test/dot_git/hooks", "test/dot_git/hooks/applypatch-msg", "test/dot_git/hooks/commit-msg", "test/dot_git/hooks/post-commit", "test/dot_git/hooks/post-receive", "test/dot_git/hooks/post-update", "test/dot_git/hooks/pre-applypatch", "test/dot_git/hooks/pre-commit", "test/dot_git/hooks/pre-rebase", "test/dot_git/hooks/prepare-commit-msg", "test/dot_git/hooks/update", "test/dot_git/index", "test/dot_git/info", "test/dot_git/info/exclude", "test/dot_git/logs", "test/dot_git/logs/HEAD", "test/dot_git/logs/refs", "test/dot_git/logs/refs/heads", "test/dot_git/logs/refs/heads/master", "test/dot_git/logs/refs/remotes", "test/dot_git/logs/refs/remotes/origin", "test/dot_git/logs/refs/remotes/origin/master", "test/dot_git/logs/refs/remotes/tom", "test/dot_git/logs/refs/remotes/tom/master", "test/dot_git/objects", "test/dot_git/objects/00", "test/dot_git/objects/00/03f8338f3668723f26b37c8ccf544a95e29ec6", "test/dot_git/objects/00/1569f8fc3eb464ba486e4b22f2f06494f399e2", "test/dot_git/objects/00/3274c8973e2053718cfad0d36a6965d192fcab", "test/dot_git/objects/00/b1c149e635d481ca18349082583b8151f72747", "test/dot_git/objects/00/b71297a9d326f1c9647dc3199759696aa0fcd3", "test/dot_git/objects/00/f3447967b64aba158140cd40ee8b367612ce81", "test/dot_git/objects/01", "test/dot_git/objects/01/0ad5aba678e910d4d663b42dcc23b42beb829f", "test/dot_git/objects/01/17826165bc3b90c75ef2caeec37f5c8d782705", "test/dot_git/objects/01/4488a55fe5fe9494441a9340cc8c15107a212a", "test/dot_git/objects/01/4fc17423d6af7ac4816071dd29f0f0e2784066", "test/dot_git/objects/01/b74bca756428371115795ddf6ca02019c8917f", "test/dot_git/objects/01/d78e86ee2b2d9d8d67d2d5b70610879184cfe2", "test/dot_git/objects/01/f8c258619443ee16bdfe857b4852df5fa3e9d2", "test/dot_git/objects/02", "test/dot_git/objects/02/036e2cb5b44b6f4a27cea2f5bcca47ddfb24d8", "test/dot_git/objects/02/1e14889189cd86cff25b5677e12ac2c7234e0b", "test/dot_git/objects/02/3d5211ccff94a988645cdeb1738ef681053928", "test/dot_git/objects/02/52e31caf4384d3af956ddcf99b0625ca32564f", "test/dot_git/objects/02/776a9f673a9cd6e2dfaebdb4a20de867303091", "test/dot_git/objects/02/7d4de30093393c0f994ccca83ac80524850f52", "test/dot_git/objects/02/85f374047a4541f8a36b9195ad281220dca3be", "test/dot_git/objects/02/88dcd891dc1c3452558a67240a2969afe5e1f2", "test/dot_git/objects/02/de1ef84c9b8c2c2659048269784ee8cfd1bbb5", "test/dot_git/objects/03", "test/dot_git/objects/03/337ca011923c5ade57033d950557f8e593542f", "test/dot_git/objects/03/37a36c245dcafeb65eb8a77322bfa353447774", "test/dot_git/objects/03/517194eb06a1dc1bd3cb0d605cf30a56241053", "test/dot_git/objects/03/6eb07bb7c6e7f3b35dd0302bf9cf6c289ea0ed", "test/dot_git/objects/03/7f79a326dbcb10176d28f61998d72924ce77c8", "test/dot_git/objects/03/cf7ee8c1bf722d28e8fa93eb780e2e4dc084c9", "test/dot_git/objects/04", "test/dot_git/objects/04/7b5ae7038ef06f45520462912f039e80c00b8c", "test/dot_git/objects/04/c3a03b3f0d0a60b313f4be77749845a5235c08", "test/dot_git/objects/04/cb7a6a139313c907e0fec984da3fd4e41fdd33", "test/dot_git/objects/04/e515305cf9bc9598dceafffb7cb9a756544628", "test/dot_git/objects/04/fb83a65293a39614752633f8e6d945b80b5eb0", "test/dot_git/objects/05", "test/dot_git/objects/05/68b92d8d9705c4ff045ffdb5e3a1f1595bd923", "test/dot_git/objects/05/7826b56de5733beb44b4561443d3b46a449691", "test/dot_git/objects/05/7926e768e8b202655a3aa26adc7f201c0edcfc", "test/dot_git/objects/05/7929610b4988ec16e3c45b8383bd158990b4a0", "test/dot_git/objects/05/87c4160d02715e27c0cb305d4227cf17481225", "test/dot_git/objects/05/af9a86721dbfc9c26aa1e51ae2a69e3e659d4e", "test/dot_git/objects/05/b059421d3747a7806ac17ae7fec58942f4febb", "test/dot_git/objects/05/cc37f0a03392de8deb2ffe699be03f7dfb969f", "test/dot_git/objects/06", "test/dot_git/objects/06/05c3b4232a3ce29e9eaa37c5b87798500a6e7d", "test/dot_git/objects/06/06fabcdde5c927345a40f121f361d2e216b074", "test/dot_git/objects/06/2279d5eb12f88189544abbaed53853c5ed9515", "test/dot_git/objects/06/aa7f9270d9750713a16c8876a80d8208d0474b", "test/dot_git/objects/06/e218ce2718fb29fe8c3406e20a03af92b2c211", "test/dot_git/objects/06/f8bf7db18ed246f33840f89db357ffdb9ed685", "test/dot_git/objects/07", "test/dot_git/objects/07/49016e612b0cc541a9157c5af5202fc13afee5", "test/dot_git/objects/07/7b694fe425c945e50bcf07a17273f70ea9969f", "test/dot_git/objects/08", "test/dot_git/objects/08/2abfcf77d1c6ce8288c9e51960c4dc0386e214", "test/dot_git/objects/08/31f152b831b72c29c402c43a4f0d5f9c08098b", "test/dot_git/objects/08/3a20c51f91b45bd89c4e659be3004f3160eb9d", "test/dot_git/objects/09", "test/dot_git/objects/09/3df8605b97af993b943e6c8d752adb3a80414d", "test/dot_git/objects/09/4371d805417da0d5d45f05862c04f840164700", "test/dot_git/objects/09/509a4195f9fb7afbf688b03c80695bf42415aa", "test/dot_git/objects/09/722f3e93f2ac8b7576ad9875570b9fcd9c7742", "test/dot_git/objects/09/c0737da31a89f508274573ccca3fab84b99291", "test/dot_git/objects/09/c978c6ca56674793681e1f46e48d548f87b9b7", "test/dot_git/objects/09/d253737e9b3478116b5c28bc353bb04f6b3b15", "test/dot_git/objects/0a", "test/dot_git/objects/0a/8a50a991f45aacd9182cc9660352291102d62c", "test/dot_git/objects/0a/d7278c1b329f53ccce178365ef46c0acf1b5cf", "test/dot_git/objects/0b", "test/dot_git/objects/0b/7cad903e284fb0c67b4c5c2b7dce7bcb1ab331", "test/dot_git/objects/0b/982595f497472374e559c4a60bdf6f5d515747", "test/dot_git/objects/0b/a43a25402d95cdf77eab9daa395554b6bf0fee", "test/dot_git/objects/0c", "test/dot_git/objects/0c/27bd8cee7c56836d7116224eeee572b14d9207", "test/dot_git/objects/0c/93fbac2cae83e0c1ae53b95b1ad1e52049f9dc", "test/dot_git/objects/0c/f5be059c72d69cccc249f53b35c3c40907665c", "test/dot_git/objects/0d", "test/dot_git/objects/0d/03c5056d874db5cf0088b70a67d943ddcb5413", "test/dot_git/objects/0d/520f86139b0b1fc0ab6d92a5f837533b07488b", "test/dot_git/objects/0d/757583ecf0ce5235d41487d26bee258c317b3e", "test/dot_git/objects/0d/b262cb85533c5004f6f1a2cb26f5ae2dd85d36", "test/dot_git/objects/0d/fc2a798d3c8f3190e3478644e73478bf5a2198", "test/dot_git/objects/0e", "test/dot_git/objects/0e/1d014f006f27f2857eb504c520d2ed2bdd8e73", "test/dot_git/objects/0f", "test/dot_git/objects/0f/138d68197242f4e6be55e9133fafb7dfa2ea51", "test/dot_git/objects/0f/341dd5b4a15b61545f8f8a22fdfcfa611b88ba", "test/dot_git/objects/0f/41b030d38bc256c46da51ec61d8fbf78d95c71", "test/dot_git/objects/0f/6adc7b610f48813007fa9624308fdcd19624eb", "test/dot_git/objects/0f/73ea263af628ee73a91fd828a090ec0c1108bd", "test/dot_git/objects/0f/8ab2768611398a9271137b976e790158fea99b", "test/dot_git/objects/0f/b309e304e40fd066779c842d3dfb969820ee05", "test/dot_git/objects/0f/f24bd854839ec2d63df82511b30a87563cf93b", "test/dot_git/objects/10", "test/dot_git/objects/10/3b19041fdc3d56c2a233faeb835250f7979025", "test/dot_git/objects/10/49a9f3dde7bb76587fe082462866b5d0dbd286", "test/dot_git/objects/10/d5041b45374ba1ca060c9273ea8239b2836377", "test/dot_git/objects/11", "test/dot_git/objects/11/8273918e8e542d828b37fb58cb2ec0f557fb5f", "test/dot_git/objects/11/af521eb0e6e9c112b3bb6c4ad7ec24986d3ca9", "test/dot_git/objects/11/c94e9b614f3f2e17f72854e8be0f181471bfcc", "test/dot_git/objects/11/ef852d995ba4f160bd20474cfb7b21fd643524", "test/dot_git/objects/12", "test/dot_git/objects/12/285f38fe70a726001e29108536954f64d7133a", "test/dot_git/objects/12/36260f7be3454a989e82e28f6096e096e35a89", "test/dot_git/objects/12/8db38df991e126c5079bd4c36d15c21674db99", "test/dot_git/objects/12/a41f2de1265a2f7c56793ad6c1e9a48b10690d", "test/dot_git/objects/12/c064d545702771fde2debf89ae5d2332897d88", "test/dot_git/objects/12/c33c0bcf3ac3f569850943ad62c46c9861edeb", "test/dot_git/objects/12/c7b3bf5cdc29830afecbe20755d6f08fe735a1", "test/dot_git/objects/12/fca324bece56e856667502ebfed1c5172d1477", "test/dot_git/objects/13", "test/dot_git/objects/13/2335def2380870cd3b8f40d326976aea182aa7", "test/dot_git/objects/13/8e53fadb078d2b3716833d8b50eb10f12c7348", "test/dot_git/objects/13/d306ed324d1be706c78071a72414d50c68dca5", "test/dot_git/objects/14", "test/dot_git/objects/14/35f68d9466fbd70fc6084977ac19fd311c7c57", "test/dot_git/objects/14/66fcacc4070eb9a8fd88b3a825c6647f6491f1", "test/dot_git/objects/14/67cde22fefa7ddcab86786d5066bc6f51b250a", "test/dot_git/objects/14/d58395b6da306a5b161fb950ac2c252a091a95", "test/dot_git/objects/15", "test/dot_git/objects/15/2111c53821f7dd53a3cc4f6a251a7de3789414", "test/dot_git/objects/15/5c2ca2a4e8b1e0f2f54c0e3b413dd077633fdf", "test/dot_git/objects/15/78a2576e89eaa4954d5277d69b2bf66e926cdf", "test/dot_git/objects/15/7c95ee8c2989db8127c48548ed80c15a76b778", "test/dot_git/objects/15/979622ad6ae9c5cf1c424cd17dd2784130e8f1", "test/dot_git/objects/15/d022ad2ff13d0ef33424ff412676b6047ffed8", "test/dot_git/objects/15/e293762a035e16b6d3f5562c51e8a524c84381", "test/dot_git/objects/15/e93eb1c0b39f51291d1c432156f0ff43ab1ffd", "test/dot_git/objects/15/ebfa5c7792de35a107f413b397407ac3330888", "test/dot_git/objects/16", "test/dot_git/objects/16/3268d3698bb1626f34cd3ba59da51a7e25e03e", "test/dot_git/objects/16/48e3b1e22ebb852ded047d0ab7eac1b05fe060", "test/dot_git/objects/16/81e1b6486f601c8edcaddcaba5b43cee4aea3f", "test/dot_git/objects/16/910c6a1377054903ccb52369d3ee07b13e5d08", "test/dot_git/objects/16/b7edf7af22dd2bada9e936795f53943719fe65", "test/dot_git/objects/16/cc3f1fa6b58278c4fe216999464aaef8ae6750", "test/dot_git/objects/16/ef31d5b51a674634edb8b54b5706c17b62f558", "test/dot_git/objects/16/ff20f07ceb75dc60619c082f530ccd3379d572", "test/dot_git/objects/17", "test/dot_git/objects/17/3f4345c58750e2eb870a65e850917f97dbed91", "test/dot_git/objects/17/6255627b2fac737a7f77a5591814e88dc49815", "test/dot_git/objects/17/96a891d45dea162f9021f8e8c472c5e2006696", "test/dot_git/objects/17/ac818de1cc5ab1b1e1fc5f2796b0bb816a600c", "test/dot_git/objects/17/d488c2f71729e5d182cb944d28c837fba95ccf", "test/dot_git/objects/17/da04256d519b3bc102ff6654388a15ede87a9e", "test/dot_git/objects/19", "test/dot_git/objects/19/3e6eef82e784e52ba86addcb5d7b1b7c733b39", "test/dot_git/objects/19/6583fa8a32069927196d341590917ec3a44068", "test/dot_git/objects/19/c05c4b965f08e0a7856864293a206e07743c37", "test/dot_git/objects/19/c3d5c87afaac1c69dc0473635ef8a7fe0738da", "test/dot_git/objects/19/e8c71b6a30e8725e9c0d8e487333d102b20eec", "test/dot_git/objects/19/f53b5d629ef910276aa4ff3da37098b84ebbe5", "test/dot_git/objects/1a", "test/dot_git/objects/1a/5458d91ca6a8303793f2b65add534398fbdecb", "test/dot_git/objects/1a/b11cd93f687672c9cc8fa9b3fbac91a28e455f", "test/dot_git/objects/1a/d7f5703990fffc0623027f890c8da5a84b7f69", "test/dot_git/objects/1b", "test/dot_git/objects/1b/4ac33eca9279c482cf15bfbdaeff285dd610b1", "test/dot_git/objects/1b/5178ad8b4a4bebf9f311a655317dcb2b8022cc", "test/dot_git/objects/1b/6572ea59d924437ef351841ad7769189744070", "test/dot_git/objects/1b/7450de981e2cabd7394fd5d6eabad5d3d755cc", "test/dot_git/objects/1b/9fe079b5b81a05c585e71d7a3f435cf740ef98", "test/dot_git/objects/1b/fb8784f878f9cd3cfeaca34357cf50a74f1e09", "test/dot_git/objects/1c", "test/dot_git/objects/1c/0b90070d7e30f014551321378b272fa3fa4513", "test/dot_git/objects/1c/13b4bce41332da238a5b3dea893831da48cd51", "test/dot_git/objects/1c/6ab3410ae104091c7c48eb51fafeb10ceb840a", "test/dot_git/objects/1c/e53e58e0fce1b52e687738be9f29d2b66ad102", "test/dot_git/objects/1d", "test/dot_git/objects/1d/52507d6a4b62353f17426395176114a78c3e27", "test/dot_git/objects/1d/779cd342a3dceb1181617c6d78cf49dd4ea6d9", "test/dot_git/objects/1d/a4fc732293ade7bc64fa5bf0fe500e98d44086", "test/dot_git/objects/1d/ad0ebe6a69a154ae53834551aac811e2084d92", "test/dot_git/objects/1d/fb7c5c1bfe1d3faa4faa02588446132806a84a", "test/dot_git/objects/1e", "test/dot_git/objects/1e/48c5e962aed49286c66caf359ec9c2d36c2702", "test/dot_git/objects/1e/602e850a67f89c395797eac185740d5f26d4d2", "test/dot_git/objects/1e/72f4a8d9f13be6e98e948927eea0d14a2e1058", "test/dot_git/objects/1e/d9b70c5aeb93e24139fa7203d9a7455476c102", "test/dot_git/objects/1e/eb71ddbc2be8fd6cc4fe8c8465361601d2e1a5", "test/dot_git/objects/1f", "test/dot_git/objects/1f/56023e68acd9d981833e3eb2567ed2d851dd32", "test/dot_git/objects/1f/cfb4f859faed6bf0384993f0fd5edf41f00ef5", "test/dot_git/objects/1f/f7f94c2c07e96787211d977794a01701c84c48", "test/dot_git/objects/20", "test/dot_git/objects/20/527a9f7bff75c1fbddd9d99bb7e6da2558650a", "test/dot_git/objects/20/58b040a09bd2a1fbaebb1e40aae595115a715e", "test/dot_git/objects/20/7f3efe50e24e9423f55d56924c43d7ea3c5ce7", "test/dot_git/objects/20/92842ab2e8c0f9bdab4646a4ed7f714f66b12b", "test/dot_git/objects/20/f3156fa79fcc5ccfd5e70a1136397c026414b6", "test/dot_git/objects/21", "test/dot_git/objects/21/0ce1bcc38e0e98f8ec8930a930dbd7988ac4b2", "test/dot_git/objects/21/1cd03423ab654fb825b0bee37154330ba18e55", "test/dot_git/objects/21/28b4b92723c769fb9288584aa67dd7e38d3e66", "test/dot_git/objects/21/39d6008849105ef06dd7aa4ed24dbeab73812b", "test/dot_git/objects/21/6092db5b7af3826eb8cab98f214b87338f2e85", "test/dot_git/objects/21/6df5b81cd60076fc086ac6a5cda5fb45a3f51f", "test/dot_git/objects/21/8e0267be4449ca7fc6fa10752014533c14c546", "test/dot_git/objects/21/9580bb02cbd719c7e1b02d73665669a180120a", "test/dot_git/objects/21/e7baafef8ab19c21b162aef7cb6f3c6d7d7c67", "test/dot_git/objects/22", "test/dot_git/objects/22/0553c2c0869a33996016d0f01a16471c3cdfb4", "test/dot_git/objects/22/26c0f88671d695655a16bc3f40336bbc1d13e1", "test/dot_git/objects/22/be54ac7977e0bb45ad7e83210611dc16ce102d", "test/dot_git/objects/22/fb8209d8655a24594398d47f339870f924804f", "test/dot_git/objects/23", "test/dot_git/objects/23/53738d894ae00535ad011781d82c135a92a269", "test/dot_git/objects/23/7f04e2053831498762d50fc2470cc66892d268", "test/dot_git/objects/23/92b105b8747c1814b9a48d2f5b546f25b78ba1", "test/dot_git/objects/24", "test/dot_git/objects/24/02a4ccbf9f8a3d0697562dc88c3a3a7740de56", "test/dot_git/objects/24/21ffe1b4b0ddf0d7efbd674ee1fff714c6d7ae", "test/dot_git/objects/24/b49076b413a71c428eb8bcdaa4f258791e6773", "test/dot_git/objects/24/b7e95c0acae11954a9e7018cd6748fbc9ac8da", "test/dot_git/objects/24/bc825eb69933d3c42e1a81c92cc9ebc6cc3472", "test/dot_git/objects/24/c1a000ee73335664497f277a9c1fc6ec7e1518", "test/dot_git/objects/25", "test/dot_git/objects/25/c813a868fe8f0aa7ffb09688c0d357b92deafe", "test/dot_git/objects/26", "test/dot_git/objects/26/ccf9637b785b1bc787bddb0d0d1c73f4662982", "test/dot_git/objects/27", "test/dot_git/objects/27/06e2fda31d93c2e9d213f3406022173b10f15e", "test/dot_git/objects/27/23ccc0bc573581a85c131ce62dd0670bc4ceb0", "test/dot_git/objects/27/9478dba188b07e2948b2f52ac865557065031e", "test/dot_git/objects/27/9771d5b69e4d0342bced5345231d43976091c3", "test/dot_git/objects/27/b04aeb5b6042a2d90fb40d4293863841257640", "test/dot_git/objects/27/bcf5fe0a83910d826d1d71d78740441835bace", "test/dot_git/objects/27/f8f0d70ce7e5c303f3c09e0ad169de7e1a7c3d", "test/dot_git/objects/28", "test/dot_git/objects/28/08c797feeb40639304a503a395e8333daa0aaf", "test/dot_git/objects/28/0ebe908f5b3306f56b95c2e6758abeed139e26", "test/dot_git/objects/28/6fa3d105eadff6c94298aa3c0bb84358dbdd9a", "test/dot_git/objects/28/e43ff74f1cbb5e666ee66ef3df5fb612af3cb0", "test/dot_git/objects/28/ea69ddb42462cde12ddeabd39349fbf9e47fec", "test/dot_git/objects/28/f509a6f26bcce60274974581e63d730236cf90", "test/dot_git/objects/29", "test/dot_git/objects/29/4764c43a2059b716a5016a7f0beb4f41ef762f", "test/dot_git/objects/29/bb16c9ad7a921a6887d5d72c51b9312d1b6ae9", "test/dot_git/objects/29/bb1b3a815aa0c6c6f41aaf4bca766d0bef1cdf", "test/dot_git/objects/2a", "test/dot_git/objects/2a/4ff408fd52be259cb69b058d1ac280425d3a14", "test/dot_git/objects/2a/525a828e4d0d02c01d14445b49c645771bb82a", "test/dot_git/objects/2a/5c7305b52b836fbc0ec7200df58f3f9ba06ec0", "test/dot_git/objects/2a/6063405e5767fb4b9aa48c2eda4ab87e6cecf2", "test/dot_git/objects/2a/6d2a310fdaed46fb3a44901392e0bf4f05f8e7", "test/dot_git/objects/2a/88c76b382e2e3c3e3587e0676301f9949d646d", "test/dot_git/objects/2a/8b7d95c7b2be929873d050f56b6eef546d3c18", "test/dot_git/objects/2a/9068e8f69713464cbe5ea7492476437d14e8bb", "test/dot_git/objects/2b", "test/dot_git/objects/2b/79e430dc370f0810552660b495e4ecdeca6aae", "test/dot_git/objects/2b/cec98e50e04c0d01bc097ffa372dcf55695025", "test/dot_git/objects/2b/f43dbc4e2088a807250eaa609234fd55e3e94b", "test/dot_git/objects/2c", "test/dot_git/objects/2c/7ac7d7cac1e740e45cb90b4ab2b4f8d4dfaca1", "test/dot_git/objects/2c/87b72dff61f8394b3f1f32e21c1d936314ec2e", "test/dot_git/objects/2c/8aa45018ca47fce1073b1bf3710e8df35b2dbe", "test/dot_git/objects/2c/97dd5ed8d14496cfc71e7ab12bedfec7c14f2e", "test/dot_git/objects/2c/da3256555de3eb182224bcf9bdcff079ccc44e", "test/dot_git/objects/2d", "test/dot_git/objects/2d/4e03533d8d37a44a1f3e9315ef5164d7e07764", "test/dot_git/objects/2d/643778ccaa7adc11f5b2531b418cb1394316ec", "test/dot_git/objects/2d/aa9345be6d2692c2b9303e12e8b69fb78d78ec", "test/dot_git/objects/2d/aea61e18b399977a0fc0b124c837e1d00934fa", "test/dot_git/objects/2d/d3efda11ed9a5e5e883cc3b2a624934f3a150e", "test/dot_git/objects/2d/f7c5ddd50228c2d751df8b6aab96b37cdbc965", "test/dot_git/objects/2e", "test/dot_git/objects/2e/1325969bea6889ccffe59660583f8f225eaf47", "test/dot_git/objects/2e/19521c5c4a51a2fc8aee97f952560b7044941b", "test/dot_git/objects/2e/e881239adb659aea65927a76daf526c0d83891", "test/dot_git/objects/2f", "test/dot_git/objects/2f/91a713750e086ab1704e05177d4a8f0d88953b", "test/dot_git/objects/30", "test/dot_git/objects/30/2bc1a9a65d8c4ddf073a56d0fdacaff71d5500", "test/dot_git/objects/30/2c67f5952bb0bda88f303e3b8c8a4cf7f27933", "test/dot_git/objects/30/a95debfc08077d566c9aa204f708104c716e1d", "test/dot_git/objects/30/c859bedf72cb8dfb745bb17f705e4774d4f339", "test/dot_git/objects/30/eaea1a7dbd755b4774f2e7b4663623398b09a3", "test/dot_git/objects/31", "test/dot_git/objects/31/5cd4d93bf65f8d00303515c7f31be1b888a349", "test/dot_git/objects/31/81d650ade16efe68108b01998c1297c7ff0095", "test/dot_git/objects/31/98cb65f97c46156ad634d04141a3aec5a7f637", "test/dot_git/objects/31/aaeceab051ff055f4b46b642f5891ac54e85ae", "test/dot_git/objects/31/c867dca3a847692dc87bc4906194f13d183cae", "test/dot_git/objects/31/eee41e36796777df147c26692c0624d73cd2d2", "test/dot_git/objects/32", "test/dot_git/objects/32/89cea29590f1ed0f3da77f118b12ae527f7be7", "test/dot_git/objects/32/d40772f3ec99939cc2fb68cf66d971bb70af47", "test/dot_git/objects/32/d7a7f04ce188e48735ca805f27a2e399a1cffc", "test/dot_git/objects/32/dec7871d83a6de85e5b96d06178ada1b4185c8", "test/dot_git/objects/33", "test/dot_git/objects/33/373556aa00a77c621c8957d66994e220dd391b", "test/dot_git/objects/33/49c1bb38f1a3bff19ffdb83fe81373f0947531", "test/dot_git/objects/33/58897c6333ced9f5d0b8b0d70b53207c32cbf2", "test/dot_git/objects/33/83cca49868379103ad80ebd52d0cd34731ea27", "test/dot_git/objects/33/86be79ac5e657a5c9a35c0b4ef87e62c47b8bb", "test/dot_git/objects/33/a3d4c5d14917e67edec483f3222245be341fd1", "test/dot_git/objects/33/b61981170deb261faec0ce907d8775dc9b0827", "test/dot_git/objects/34", "test/dot_git/objects/34/1780f4f7f8409797a6ee710254cadabbd442c7", "test/dot_git/objects/34/57115dfa37b9f7729f79eee2c75fc13f21438d", "test/dot_git/objects/34/a29f36e9085784d1c22db7331c0d9ac4e90d99", "test/dot_git/objects/34/a4e9b8065fdd743ca61dcfa82ffbc7cfecdc93", "test/dot_git/objects/35", "test/dot_git/objects/35/82158a912c79ee8d48eba6196c3613b1e34e57", "test/dot_git/objects/35/dbdfe43f8ad52f5d396abb7a7014bc453803a8", "test/dot_git/objects/35/e17670f8b2bc0f9a260d34aa83bd40a9d738e3", "test/dot_git/objects/36", "test/dot_git/objects/36/37c7a23088ef2dabae477f385cdaa65c70a251", "test/dot_git/objects/36/5e358e24b22ca327750961b28dbfba0330d53f", "test/dot_git/objects/36/840b2a85f282cb11294190666a52f764da2e35", "test/dot_git/objects/36/855d1bea32e3d3f7e0f0ae135e85cc9e9a2671", "test/dot_git/objects/36/dba981988940ffe26fd7a818d1216360ade56d", "test/dot_git/objects/36/e81104a0508fea06062a796fd85f457e829380", "test/dot_git/objects/36/f8ebd8d58b3ce1a337024e6b71107591eaa634", "test/dot_git/objects/37", "test/dot_git/objects/37/175959911a8e8032e07935cde93b873f2466f3", "test/dot_git/objects/37/593280ce24318d5ff8eb1448ae06c83772afe4", "test/dot_git/objects/37/6ea43a79070bdea30e0508edf49ee891279559", "test/dot_git/objects/37/7c4c6c44acbdfd450bdd0eba55845ee885be82", "test/dot_git/objects/37/a7c60c6a9466823e09acaf6c8cdfb9e0ca79a5", "test/dot_git/objects/37/b6a48b7f3b475a48fe1cbe6c85e1e5c47caa32", "test/dot_git/objects/37/e9dad721f3414c686125bef88f1de22eec34f1", "test/dot_git/objects/38", "test/dot_git/objects/38/2f4decb47b8d35ced4b1c386f9ea8a38147897", "test/dot_git/objects/38/507ac81bcab18fff9a4062c508b3ae1c3ed2b4", "test/dot_git/objects/38/5b7e7fbe895f4c9e866899c8a9dd413c687e3f", "test/dot_git/objects/38/5f9658195f704e1f20ae167f23c3a91871dba2", "test/dot_git/objects/38/6eb8dab973c5baa669c4627287f608a602a837", "test/dot_git/objects/38/965f6e6489e6a9c0011c367ffba2b988512f50", "test/dot_git/objects/38/d6fa611eb2c06126f711eb64f036ffa83331fe", "test/dot_git/objects/39", "test/dot_git/objects/39/414f3aeb1c46b4829d41c2b5a41bc243137ab6", "test/dot_git/objects/39/49bf564f18107bb9c42f7c78e93c935d749db2", "test/dot_git/objects/39/693b227a583b222dd22eacfd16c948e40e8c19", "test/dot_git/objects/39/d92ab22590d648ed6efea996048876bf599c0a", "test/dot_git/objects/39/dbd7e9d354ee652f7f5ca117f867696c32fd73", "test/dot_git/objects/3a", "test/dot_git/objects/3a/6030afdfb2890fd10a19d4fba1395d7b24f828", "test/dot_git/objects/3a/9edce0b66cad4c011fb35c90e80b796ba5610f", "test/dot_git/objects/3b", "test/dot_git/objects/3b/004186dc696853e8af1c478a961fd4b8ec0531", "test/dot_git/objects/3b/1fd96da523e9922a1f2b126bbcbc65c7ee9c71", "test/dot_git/objects/3b/494f98fb24ee05c63c63cfaafa730bd933f9ea", "test/dot_git/objects/3b/5bf78ab1d4b5f3d36129b66f1c4a00cc52dcd9", "test/dot_git/objects/3b/5cc49cd62921d1abc9eaac373c29ea6fa604c9", "test/dot_git/objects/3b/79e6461579ba7cc976cea73d36a0c7ac56ff57", "test/dot_git/objects/3b/d1a9b888fb95bf4ce7da5ba1d0f7db711a07ad", "test/dot_git/objects/3c", "test/dot_git/objects/3c/135209062a3ccd2032092ab2457eb3980b249f", "test/dot_git/objects/3c/612dfb7e6530546a433262c4ccddc633da823a", "test/dot_git/objects/3c/631958129f12cd496c2c918ff76c04e3aec471", "test/dot_git/objects/3c/681414cda7c8200292d9c37baef74b8e55b25e", "test/dot_git/objects/3d", "test/dot_git/objects/3d/68199aa3c3ae3e55fad81d987bb954265da64d", "test/dot_git/objects/3d/6fb637c4c133a62712c2f5c5bc5d6c918b257b", "test/dot_git/objects/3d/8cf6e46dbc2863435a7c0befa9f0f9b72f2b40", "test/dot_git/objects/3d/c1b8ad89993a94b8b8af627ecefb656f450b3a", "test/dot_git/objects/3d/e0ed396b3309d3135dd608633c7e24d7eb7a78", "test/dot_git/objects/3e", "test/dot_git/objects/3e/4e5142403fdafa5daaf580ad2754bd5469f297", "test/dot_git/objects/3e/8b951715d51b517615319e74f1ff5f143bdd33", "test/dot_git/objects/3e/c671d1b0661dec389ec97ac49729be98a98363", "test/dot_git/objects/3f", "test/dot_git/objects/3f/09b8a94def39594ff66018a0267e3a095f0166", "test/dot_git/objects/3f/a4e130fa18c92e3030d4accb5d3e0cadd40157", "test/dot_git/objects/3f/a8b0bb7b1158b3d75cb01a338c688465266ae8", "test/dot_git/objects/3f/ab2e2576d21e160f65e0f037ef49932153b750", "test/dot_git/objects/3f/ef1de16cfa99882a900d682c98bf4cdbb0bd1e", "test/dot_git/objects/40", "test/dot_git/objects/40/1b901ae82016d0e387f3369e2c73b9729fa960", "test/dot_git/objects/40/5da6eab49ad6c40202515218685cc5e47ba191", "test/dot_git/objects/40/878bdc3b0b546884c23cc56e36bb01bca26360", "test/dot_git/objects/40/98e7e0b3ddb23cbb02faed6443bb662103cca9", "test/dot_git/objects/40/b5472e26b885b5578a748a7199a49f78fc640f", "test/dot_git/objects/40/c2094b4c5f49c7a75493c3b60718f692238689", "test/dot_git/objects/40/fbcace81729947e3b6a50db55f20e3b0b8619c", "test/dot_git/objects/40/fccf8916dbf1a607b69cb308affb800b24eff8", "test/dot_git/objects/41", "test/dot_git/objects/41/773794cb94bc0b504c25fe2c7160a4297ac722", "test/dot_git/objects/41/96d4ceab2df8250b126c1fefe537aed40ba3b8", "test/dot_git/objects/42", "test/dot_git/objects/42/3bd8e89cc0374ecbac89cb81f4d7994971373e", "test/dot_git/objects/42/55d57961f71cbbf37c4895cf2e7944cfb3c920", "test/dot_git/objects/42/77d827856344ecab7a8cd9b4cc8de189a058b6", "test/dot_git/objects/42/8b046f3d44ee60a2707cd0ec870f214d52b51d", "test/dot_git/objects/42/e9f36ecb27ec85cd80085f1e9848158af142cc", "test/dot_git/objects/42/ea225300e8cf78bb8dee7867cd9b9dd62a2e42", "test/dot_git/objects/43", "test/dot_git/objects/43/66fbe9656ed24eac8afa838af2e6872e0c0f50", "test/dot_git/objects/43/67a306774650effecbaf8cd100f2d01d53c736", "test/dot_git/objects/43/990427a4d4cf451298aa2adff627c97c7fbbba", "test/dot_git/objects/44", "test/dot_git/objects/44/4120068cf48a97010e1291f7a6b148dc7db3fe", "test/dot_git/objects/44/6235527422ab47a85897515acf1ba002f7d621", "test/dot_git/objects/44/c1bb76bef6677159624272045dbbd9e1be3de6", "test/dot_git/objects/45", "test/dot_git/objects/45/7135f1291992d204581e4f70019268d2b41f88", "test/dot_git/objects/45/7629071e6056bf4a8595a6f171b3404892d528", "test/dot_git/objects/46", "test/dot_git/objects/46/ccdb048ecf2b9452dc2e0174dfdba426df0f62", "test/dot_git/objects/46/d3b63432ebd26da44b9b5f4463ecab8610003c", "test/dot_git/objects/47", "test/dot_git/objects/47/07d2feacccdc27e3ae08b6557313c66ad792cb", "test/dot_git/objects/47/36537c04c8c3d07d91d2b3d7d3ec9f772bc208", "test/dot_git/objects/47/5cda8f04478f1f3eccdfe350cef3beb5854267", "test/dot_git/objects/47/f94fe43e503475c4699b9bab535949d45786da", "test/dot_git/objects/48", "test/dot_git/objects/48/18f5a5bf96cc367861b358578bad5d14bc1ad9", "test/dot_git/objects/49", "test/dot_git/objects/49/9167ba61ed6a925dbf1d801a417fed31325e79", "test/dot_git/objects/49/c183e5076a69d95cb3267d65b15f07e8ef3dd0", "test/dot_git/objects/4a", "test/dot_git/objects/4a/4960fbcaa4f2b5f540c2417a0e6e3e13cd21e5", "test/dot_git/objects/4a/4aadbb8d70d1a8f1e0494d93c51cf0a70c73c7", "test/dot_git/objects/4b", "test/dot_git/objects/4b/69268fd027874cdc84e08be1a7b0adabe29bd6", "test/dot_git/objects/4b/6a031b5bca40f2d1197e0d0a8c053e48f2d1b8", "test/dot_git/objects/4b/ac1a816ea4c330c0a60a7faead02c80d216bf9", "test/dot_git/objects/4b/c83809c12606b8673503ea595bc9dc926a4f85", "test/dot_git/objects/4c", "test/dot_git/objects/4c/5d14c6b35b4b9f9f8a10db253e3a61968fe0d5", "test/dot_git/objects/4c/721af72f40368c4af46c04956fe6553505b03e", "test/dot_git/objects/4c/765b6172fefd3aa2f2462f40b2c5614f855e33", "test/dot_git/objects/4c/82aff6d42a4a658102f617678bfd9653e0a997", "test/dot_git/objects/4c/c3aff3a2c0395c6acba1f57f3adf77a254847f", "test/dot_git/objects/4c/c4d71390cf1c9fbe9543b5da0cb0506fc354da", "test/dot_git/objects/4c/ee78c5ee3ab8591996a1b2f03fd20c78a33491", "test/dot_git/objects/4d", "test/dot_git/objects/4d/15668f43bd3d20dea783448a37421254211974", "test/dot_git/objects/4d/251e90cddd2da086b1a094a40877f94699c97b", "test/dot_git/objects/4d/35b41a2bcd2d028a9abffa2218239d0b1a04dd", "test/dot_git/objects/4d/4af31ee8fb34570f7c50474042246adf5f9536", "test/dot_git/objects/4d/d750e01c939c69940c3633ec65c18c97e9480f", "test/dot_git/objects/4d/fbecaffa3aab6f4f8823db875466a4e079d311", "test/dot_git/objects/4e", "test/dot_git/objects/4e/0942f5895107d26ed935f94720ce8fcb5677f7", "test/dot_git/objects/4e/1ba5a8835b0208f7b4b8832a3ac1f11c5923ad", "test/dot_git/objects/4e/6593b191405aec3d286b1e5e61ef864a47e779", "test/dot_git/objects/4e/749569e29fd394f47f679262bf138307352c19", "test/dot_git/objects/4e/9d21828e2e5003af0be5bb895350c428e6cfac", "test/dot_git/objects/4e/f86eb244bbbde9b793fd8cfab92042adb51485", "test/dot_git/objects/4f", "test/dot_git/objects/4f/09b8bf59198a887fb97de69dc6d8385ee74756", "test/dot_git/objects/4f/72728413e0e66b7281b979dce17eadc2fd8c60", "test/dot_git/objects/4f/ccb01f2d6a0ba681a5cc489af24adacfdab09a", "test/dot_git/objects/4f/f1303d44eba1b583ea2a3b7765153ee1743e61", "test/dot_git/objects/50", "test/dot_git/objects/50/1b7e3e4924d35febd00c13edf3cb513695b09b", "test/dot_git/objects/50/3e3076ad906d21bda16fa7dcd22eab19847c96", "test/dot_git/objects/50/40f4c67674acda890725edcd0425d02093107c", "test/dot_git/objects/50/87e423df619ef636e056e28a24f8cb7b873adf", "test/dot_git/objects/51", "test/dot_git/objects/51/28cc1329ea4d1a14910c23fe2b76d669c27dce", "test/dot_git/objects/51/48455670cac62caf07b4104b898982a2ee1d27", "test/dot_git/objects/51/84bca98dfa4da277688eb0cf5d4c3c30049dbc", "test/dot_git/objects/52", "test/dot_git/objects/52/0dad6b8078f0ec22714905c569a55adb18207c", "test/dot_git/objects/52/7c32e1f12197b30c91a0b0c47492ee5f84d116", "test/dot_git/objects/52/985c69fce3578762db2c549414d93c5344973f", "test/dot_git/objects/52/a0ed389b902d699b002b4b974d5a422f5d648f", "test/dot_git/objects/52/c074ceaeeae3ad8faba5eaa883b29d47e3753d", "test/dot_git/objects/52/e6e4c8d61116b7306af1e3a83330e9b2f2b22e", "test/dot_git/objects/52/ebe29d5aab2f2d13bff0300809349e47a93578", "test/dot_git/objects/52/f056f557e9c34c1d410e38f28fb0ff3eb8cf8a", "test/dot_git/objects/53", "test/dot_git/objects/53/029523a88fbcc802bc09d177b250779077da61", "test/dot_git/objects/53/94a7335809300349d81816fcd5c7e4c838025b", "test/dot_git/objects/53/bed2e68961f68a0d28589ab78ac3cddea26870", "test/dot_git/objects/53/d7b4bf2a0de4f29efbcf9cc5151e6599bfb180", "test/dot_git/objects/53/e7f70cb60a4a2c42e0c16f9eac862d527ef2b5", "test/dot_git/objects/54", "test/dot_git/objects/54/1264963de31abc20ae319ffb81afb894a58777", "test/dot_git/objects/55", "test/dot_git/objects/55/1240c0e157f1f2758ca49851278b209229067a", "test/dot_git/objects/55/4dd421736514dbff8ee54bcd0fdb14c6066ec5", "test/dot_git/objects/55/551f97b57dda2e947f0fd75097a712f3c72fa4", "test/dot_git/objects/55/9b8493ad088486436a0e5569abd24005bd00b8", "test/dot_git/objects/55/a588a07006a47eaf9805311e73a5c6c8516344", "test/dot_git/objects/55/b1da2f93e556f8ff2ab9063d73b1ff633f2954", "test/dot_git/objects/56", "test/dot_git/objects/56/3e1a6828c118fda28f11a33f9349bc15dd2607", "test/dot_git/objects/56/47e47c36c08268426e558565baf40ab240fe9e", "test/dot_git/objects/56/cfafc365c69aa55f9558a59e6d909d2f6822d9", "test/dot_git/objects/56/d26caca2e437e35d35cf42f782f8c74b283df2", "test/dot_git/objects/56/d65dce3016a197a757b693799847d2fddbb04e", "test/dot_git/objects/57", "test/dot_git/objects/57/639e8ddac5fff2b7693c462538babc53ef81d4", "test/dot_git/objects/57/771c0727c589e983019a5a076190d156c5ef1c", "test/dot_git/objects/57/e4351700dc0a81ae1aa812484eb0551b1a0866", "test/dot_git/objects/58", "test/dot_git/objects/58/223b18290bf0265b04b3697f729dba40f9e7cc", "test/dot_git/objects/58/40f249cdfffd086dbad61feea0c3a8a4b3d109", "test/dot_git/objects/58/4b8f537c2d89e0e47d6bbde2627ea6f01d4a7f", "test/dot_git/objects/58/5c2c53d923fa6b480ae2ddc2b820b317b1403d", "test/dot_git/objects/58/628e6483b6cc5cc721f1ee6d398bd0c2a87312", "test/dot_git/objects/58/74dd25ed52fa87b8597015a538b56ab0100d55", "test/dot_git/objects/58/8455d11d4347b9ac17d31205e8f638533727f4", "test/dot_git/objects/58/872e956be186c8fc87efaad3175d4ad9324283", "test/dot_git/objects/58/b73b8c03710dbc09303ca0a6a6bf0041481ac8", "test/dot_git/objects/58/f04c947cbdd1f0c2782c1c5575328680790193", "test/dot_git/objects/59", "test/dot_git/objects/59/032046844377888d7f0d53e8bf49e469321ebf", "test/dot_git/objects/59/96606c30d29c0bc97f67b18a0f255f87cc2da3", "test/dot_git/objects/59/eb45a3f0a6b80dbbb7b99024e55227a4086eba", "test/dot_git/objects/59/ee1a70e83c28f2d74843b91e39e557340e6172", "test/dot_git/objects/59/ef600ad21001772c04e540918f28c00ea71b39", "test/dot_git/objects/5a", "test/dot_git/objects/5a/6c2633eb0410a8651550d1f894c0a06fd4f92d", "test/dot_git/objects/5b", "test/dot_git/objects/5b/02a248683c285d22af6640765232a018cd666c", "test/dot_git/objects/5b/2741fde089f266afca1adcfdc4eeb8dfe4a463", "test/dot_git/objects/5b/9e2e35bffc027b09677112d4bd1b3af4d5c313", "test/dot_git/objects/5b/c6f75b8462a5d6190fdd50f3e74cf9e1dfeed3", "test/dot_git/objects/5b/f84617e57e85ca06eb64271e0cabfdf8cd925f", "test/dot_git/objects/5b/fd1435a75583e9dd95536f2da3882f41604727", "test/dot_git/objects/5c", "test/dot_git/objects/5c/2c0c973c27c8ee488d48bfd12b6e96d202381c", "test/dot_git/objects/5c/72f12ea25d302ad4a4ceb9f5f9f033cbf3fffc", "test/dot_git/objects/5c/8279a64dcfe94e59973fd0125cf5824296623a", "test/dot_git/objects/5c/a47fc1a9590937f34809ea48f5bd873b218317", "test/dot_git/objects/5d", "test/dot_git/objects/5d/6109a9e5ef1f941a39144f14340ceef80ff331", "test/dot_git/objects/5d/66d8da0c12ac0eca4e8c6e766c82b74593ec88", "test/dot_git/objects/5d/84fe98507e47d78953bd0208ae063f06e52b1f", "test/dot_git/objects/5d/a88f7992de649d8eae9529095b419e8a70f026", "test/dot_git/objects/5d/c9b501f6b70d5aa3d6420fa5f35bb0a2154a6a", "test/dot_git/objects/5d/e68783db60cc4b7361b8639a73dda527b50b58", "test/dot_git/objects/5d/ed8819f036921e27f2668819236725c1bc793e", "test/dot_git/objects/5d/fc38afe33e85878cd25a50ad3f18949372afbe", "test/dot_git/objects/5e", "test/dot_git/objects/5e/2e8449f6aea6b4ca05a1bca0478c1ddfd5535a", "test/dot_git/objects/5e/329b884e07932517bf9909303f6017cb178a25", "test/dot_git/objects/5e/79da1a7446822b46659edf25e9144816fa0454", "test/dot_git/objects/5e/d3c8d603d0ee1d52e0d512123e11bc892ec244", "test/dot_git/objects/5f", "test/dot_git/objects/5f/04dc6aa3c9ac971fb0c6720602be9c120c16f4", "test/dot_git/objects/5f/701c07e50ba10b912455198fcfc2392e29bd44", "test/dot_git/objects/5f/7950617f2d778d6209a11cb13e511ae4fb845f", "test/dot_git/objects/5f/88d05fb1efcdb4d1c825b3590f6a941d878048", "test/dot_git/objects/5f/c8689d7e4cb9dc91900539ff0562130cf90fdb", "test/dot_git/objects/5f/ec1ca382b811bf51abc319eb929cd7553842e8", "test/dot_git/objects/60", "test/dot_git/objects/60/390f7ddecc01fafb62b7d891f93ea23498acb8", "test/dot_git/objects/60/7d0c6725b82a2b8ad5977fdf08f7319cfb5b2b", "test/dot_git/objects/61", "test/dot_git/objects/61/0bed6eb24528c64369a7eb731801d1111bdf4d", "test/dot_git/objects/61/45457b008cd93e22a44f4cfee2b65f05808d17", "test/dot_git/objects/61/7d5fec3e4ee86080adc1dedd4ef91cc1b515d4", "test/dot_git/objects/62", "test/dot_git/objects/62/d812d2a42d5ad62cbcef99a81749d1ed68f2c2", "test/dot_git/objects/63", "test/dot_git/objects/63/142041870ce53f5ef4451b8cf021151e145054", "test/dot_git/objects/63/2ff9f2fc143cb67362b8267d57ff969d91ce85", "test/dot_git/objects/63/5e6c9e4f53250d4aae886ead0a080d81e0af2c", "test/dot_git/objects/64", "test/dot_git/objects/64/29532bf470fad3153093c7f4b10f69ee82ae18", "test/dot_git/objects/64/2b8924b35c87dd48f07bbdb6d0deb1ae5495dc", "test/dot_git/objects/64/3cc80fe2609914350d4a5bde3cc1c4d7197dc2", "test/dot_git/objects/64/53d33435bcf98c2736530f3fdd4f74a2cfb974", "test/dot_git/objects/64/e717a84fb544375169f554be6b922aba692aa9", "test/dot_git/objects/64/ec7cc059b0db49a529e51823891aef4d8bf338", "test/dot_git/objects/64/ef0dfa8ef722d4caae716111efb647a1060405", "test/dot_git/objects/65", "test/dot_git/objects/65/46414b519e280abb855f6231e8da5287c7a47d", "test/dot_git/objects/65/d911ebcec541a3d3aecfde6d067b979e6e5086", "test/dot_git/objects/65/fded76255bcab79ffa0f0a8d0c914b4056b380", "test/dot_git/objects/66", "test/dot_git/objects/66/1b95aeb34878aeacb70d74bf1c577b2cc461c3", "test/dot_git/objects/66/34746a6fe80824066823779491b252ae012bd6", "test/dot_git/objects/66/51ea0653b01a5f73d9ae1593c2d8a7369a74d9", "test/dot_git/objects/66/5fa9d3c28c07aa174637aca8252f88e7ed15ff", "test/dot_git/objects/66/7e57234226564739a618858668734a6b244876", "test/dot_git/objects/66/893c143a41615e9d2690f179308fc2c9ea2e92", "test/dot_git/objects/66/9224346dd756bf1d344d5a8b233805fa7e46e1", "test/dot_git/objects/66/99b0c4524bcdf045b66498ef281f863fc10628", "test/dot_git/objects/66/de9d57e1401ecd2cca3cd6487fb4ef348f5911", "test/dot_git/objects/66/e81f2947ee43f489386e4839edbc51bbaa3200", "test/dot_git/objects/67", "test/dot_git/objects/67/3f9b7a23a3fffe64f9ce4701914a110d70172b", "test/dot_git/objects/67/948a3f3783988c41844a3e3cba519563a6b6ae", "test/dot_git/objects/67/9a2f922a0937fc209a3ae77bffcc9fda6c49d0", "test/dot_git/objects/68", "test/dot_git/objects/68/0d86dd159ecd96257a223e3e36f820ececa886", "test/dot_git/objects/68/ad8c20d09837654709a9511a22d719631606d4", "test/dot_git/objects/69", "test/dot_git/objects/69/51fae70af8ff7ee84d7c3f9f0bdc99214451ed", "test/dot_git/objects/69/b1ef658dcf275374265786e3ef979e1ce7acad", "test/dot_git/objects/69/d8022883cf48368b3559b6e8ce2ba460e620fa", "test/dot_git/objects/6a", "test/dot_git/objects/6a/0f0474e45585c06d7caac652d252483187d68e", "test/dot_git/objects/6a/17ba4e3597af94f36b95350d0cde8d1a580db8", "test/dot_git/objects/6a/20b5c1026c8229c32f870c92e8f1031da099e8", "test/dot_git/objects/6a/4e6a2f37fc02e35ef674d98097c8661c37360c", "test/dot_git/objects/6a/a4e1aa5e7dbd47c73b28ed8ca30bcab93b4638", "test/dot_git/objects/6a/bc261d2e17d6200800890bf6db1e9bd0d9e764", "test/dot_git/objects/6b", "test/dot_git/objects/6b/7b8ca7b28c4c62f8a25ccccb4d6ade9e46c2d7", "test/dot_git/objects/6b/86465bf8bfad93a003413d0fe62af740f02f94", "test/dot_git/objects/6b/8c15931c3bc81f0825cbfbeeca79c8a6c3fe82", "test/dot_git/objects/6b/91775915c89f4141223d3ff5648281347276d1", "test/dot_git/objects/6b/c9cacf63f0e9783c9222583b3f836a1fd14243", "test/dot_git/objects/6c", "test/dot_git/objects/6c/023c8d73917e5c90651fb720269884befdb306", "test/dot_git/objects/6c/1c2608eaf29388ff986d825f413aefacde71b6", "test/dot_git/objects/6c/4b8c2fd3da22ef73e392683f926ae3b7494e57", "test/dot_git/objects/6c/57ae690bc5271210392920898240c13f4e5634", "test/dot_git/objects/6c/b49e0e6182741e6fd69d9cf9c162a1bd26be8c", "test/dot_git/objects/6c/b6584d6d4c398766ba42bd0a4f3cb620b62b95", "test/dot_git/objects/6c/d7d640a01480625cdf36af25696eea32a7a5ce", "test/dot_git/objects/6c/e9e816cf0f060838d5f34ecf284ad2458f806f", "test/dot_git/objects/6d", "test/dot_git/objects/6d/50eaf75755f91cd174bd97a6fb26574d42a972", "test/dot_git/objects/6d/7b878255abaea31a1bd43cfacd89727a40b334", "test/dot_git/objects/6e", "test/dot_git/objects/6e/770404d1e88f7b87a687bdba3e4063e1b84c43", "test/dot_git/objects/6e/9dc33da171c918556c6474b9c1ff075a4b4667", "test/dot_git/objects/6e/af969270949b97cde160323221579ebf7d0ae6", "test/dot_git/objects/6e/ea8c4874e378d50b39180173efd8540a3dad17", "test/dot_git/objects/6e/fe28fff834a94fbc20cac51fe9cd65ecc78d43", "test/dot_git/objects/6f", "test/dot_git/objects/6f/6906254fa5d16d54cd4511e79acc3ee79da96c", "test/dot_git/objects/6f/ba35bc25c85a6950fe9ad5c4713fee174dcd1e", "test/dot_git/objects/70", "test/dot_git/objects/70/03498f1263cfdbc14d0ba3f5107959c4ccff7a", "test/dot_git/objects/70/7d0fbd934e645980235d52112ce9ed8a8da14c", "test/dot_git/objects/70/9df040a86df6a593c7f3247202fb9d2103914b", "test/dot_git/objects/70/a5bb43f72b4a6075e0e2bf83e5abafee417d01", "test/dot_git/objects/71", "test/dot_git/objects/71/1cf6f726379a9c1a83eea1fae4ec3a10af28f1", "test/dot_git/objects/71/8053589f8cff63551986b4961853f16903eda2", "test/dot_git/objects/71/a6696da9143512b4f2b6d7474d58835c9dea6d", "test/dot_git/objects/71/b079961daac90fe8402177b87a08fa87a86ab7", "test/dot_git/objects/71/be442fd1a2b656e262f5a50268e57f3d64ec68", "test/dot_git/objects/71/eb51ed930e26754304f1470cfde1d1675cf2be", "test/dot_git/objects/72", "test/dot_git/objects/72/1cf10ace0fad67e9d7ef5024bbfdea99d54b6d", "test/dot_git/objects/72/944ef1b06abd709ae708d6be3426937f248a32", "test/dot_git/objects/72/c02e7e07d2284fe144183529f9b5ca45027a99", "test/dot_git/objects/72/ec1f22a7b22aca941d9483e3b9fec79b46c8c2", "test/dot_git/objects/73", "test/dot_git/objects/73/1501ae418cdc7babb9a86f3cb869daf11c28e8", "test/dot_git/objects/73/167b43c845d98eaa2040c701334f0c6f24a69c", "test/dot_git/objects/73/5942ed3013eb862658960cf891e4c7de0f511e", "test/dot_git/objects/73/64a83cdea4b92b1604c498d9e82f1f16a80778", "test/dot_git/objects/73/6b8e522a9076b3622c0f45f54b4ae2b033ce8f", "test/dot_git/objects/73/84eef4cb81eca27a0e7996bf7305f77438ae9e", "test/dot_git/objects/73/d04ec8b76b7eb2cacdd6fdd5c34bd975ebb04e", "test/dot_git/objects/73/e65a8a571f4319984cf694e45f37186f55fd0a", "test/dot_git/objects/73/f11a5cf43de10f70cbf9cc1dfd1f34fbf918e3", "test/dot_git/objects/74", "test/dot_git/objects/74/30b0ca149b99aad6bec0e5ffdab3f602648ceb", "test/dot_git/objects/74/8a7d9c0d07f08f5ad23a0188cd017e2f1d9730", "test/dot_git/objects/74/e48401ad6085171109f933862cb87c98cf1132", "test/dot_git/objects/75", "test/dot_git/objects/75/20a2be3072026e93bafbcb83245de447c02211", "test/dot_git/objects/75/7a9ec68a0a196a196ac5b42c13a45de2a39e3b", "test/dot_git/objects/75/f3bbdeec9b0ce7b4dbf652348f7105099df310", "test/dot_git/objects/76", "test/dot_git/objects/76/517e7150248161747a113dd311b5f2e5112b7e", "test/dot_git/objects/76/940ef6ba3d8d1048e6059d48417279b74e057f", "test/dot_git/objects/76/aa89f0b0bc7e92b92758b7e6520a8dfd086739", "test/dot_git/objects/76/ac881b1ec4cd0b8f3ed71bc90f915ac465042c", "test/dot_git/objects/76/b3f0be5ec5ff6c63e471f4dc696917d64de92d", "test/dot_git/objects/76/d54fdb3b93105642dd779a429b81a32d4a4d07", "test/dot_git/objects/77", "test/dot_git/objects/77/aa887449c28a922a660b2bb749e4127f7664e5", "test/dot_git/objects/77/edfa1c893d3e8d80881ff5eb56dc9d10fd944b", "test/dot_git/objects/78", "test/dot_git/objects/78/06987ac105edba10fe27c9a9f415dab7c0f9b8", "test/dot_git/objects/78/3367a2b50a733782aec243f1e8760effd62769", "test/dot_git/objects/78/38858f15204b6c4b0f076c47d0c825350a845f", "test/dot_git/objects/78/447092f23b8719ca1d548075f46174d1f18269", "test/dot_git/objects/78/591e22e8e9fd665bf9bf955ecd7601bc10efc5", "test/dot_git/objects/78/99ce846a293ff465fd391e790a8c7e6d896cbf", "test/dot_git/objects/78/d03cddc9d41d27792e9c84ce3174ee141294c9", "test/dot_git/objects/78/e0f291158261fcdb038e8cd7c09903b4c95729", "test/dot_git/objects/78/e118de9e47c4652608412c27425c01764317b5", "test/dot_git/objects/79", "test/dot_git/objects/79/0005c92fc8f75b3d194ae031bb89b041eecb04", "test/dot_git/objects/79/0e7b517e808fb9ddbc67ac1e6b4c02bd4f302a", "test/dot_git/objects/79/657d266b1abff32fb3177c9e383f670dc285c0", "test/dot_git/objects/79/6a9d3b5c3ad98586fa0e68f91ddb9d317600ab", "test/dot_git/objects/79/8078f16e07ac653bd09edb381b77fd70aa434f", "test/dot_git/objects/79/9bfeaa86d66c4e1638f9c777cd823329ce532e", "test/dot_git/objects/79/b2b708e1b11d83d8d169bae09d8291698d5365", "test/dot_git/objects/79/d5f65d307915105523c1267ee2457c853f6d76", "test/dot_git/objects/7a", "test/dot_git/objects/7a/087349e9f350ece8e7fa7715da5e84927e9705", "test/dot_git/objects/7a/5e762fa8f7fa3e2302f1ad4c0710b6910812c1", "test/dot_git/objects/7a/b4406c6679ad4d2a6d7abb029f46b35b1bd3ec", "test/dot_git/objects/7a/e93eb82d94273605ea4ffa808223f3517751f1", "test/dot_git/objects/7b", "test/dot_git/objects/7b/0eb3a3b0d48710afc0fb2f7b95cf949c17db45", "test/dot_git/objects/7b/3c2f5c49cc882758b2dfebcda96f14bf04ba11", "test/dot_git/objects/7b/95db1c259d8fca0aa9d641dfc85127b079c311", "test/dot_git/objects/7b/bf33d461c4840401abc9cb8b37287c7997e9cf", "test/dot_git/objects/7c", "test/dot_git/objects/7c/04a6027ad8768258e2dbbb82b069fa1f061e6f", "test/dot_git/objects/7d", "test/dot_git/objects/7d/3a818a79464316e03c53b11b684e797e9d06ed", "test/dot_git/objects/7d/bfba85b625779105f0d853f89522971346b3ef", "test/dot_git/objects/7d/cfb401bdfd9817a0b3ca08ada41bf0c1080802", "test/dot_git/objects/7e", "test/dot_git/objects/7e/013cd6934d110979c95b17ad9b796264919b52", "test/dot_git/objects/7e/1c4e68dcc2fb435310e397e1269e257f1db6b4", "test/dot_git/objects/7e/3f8ceb97f84e983cbae9934eda025babbb393a", "test/dot_git/objects/7e/4639a2cb181a6592f431d42db83cf640a563d1", "test/dot_git/objects/7e/8b4499db8aeeb2b1b285657113076d643b5f5d", "test/dot_git/objects/7f", "test/dot_git/objects/7f/200467dab592a0a0f1e72777bb2404ef00d57e", "test/dot_git/objects/7f/4a452ac9fc4b6751b454035df3f357c458b150", "test/dot_git/objects/7f/8c688c758239f302451b0bc10679e547003b5e", "test/dot_git/objects/7f/d9cd76d00c54c434d003a49058592b6f0c10c1", "test/dot_git/objects/7f/e607b5531e290bd50f1f70ea236d0306a882a9", "test/dot_git/objects/80", "test/dot_git/objects/80/056ae72df1345efa2dd3e216360ca326943fb9", "test/dot_git/objects/80/8ac3c39d4453622e036118e256f502689d4067", "test/dot_git/objects/80/dd878d113eee55fd606afc60099d24ba50e670", "test/dot_git/objects/81", "test/dot_git/objects/81/17c407e1439f789727b5acdfa809c67bf29ddd", "test/dot_git/objects/81/21bb4a8880254f69d3ce36b1e85de59f85d9bc", "test/dot_git/objects/81/28628b8e0eb3e167d58b1a393db319bc379fe9", "test/dot_git/objects/81/a18c36ebe04e406ab84ccc911d79e65e14d1c0", "test/dot_git/objects/81/b45795bd079c07ed01170a19069372bc6bb885", "test/dot_git/objects/81/c78b8d7ecacc9aea1ca93221f8b6cbef2ffde7", "test/dot_git/objects/81/db1993b56df3c9e2511209eecc3339df0a416e", "test/dot_git/objects/81/f3aa336cc7f79b9765daf032f084059eb2b635", "test/dot_git/objects/82", "test/dot_git/objects/82/0d6dbc4c5d6aa2ac39e9f6e18d334ea3cafa44", "test/dot_git/objects/82/def912edf146e3f30dd02ec78c07356aefdfa5", "test/dot_git/objects/83", "test/dot_git/objects/83/1a6e4e570910039b5359a9cdb5e6b42ff4c423", "test/dot_git/objects/83/6dca6265fb655643b769aa1dd9d24de45713c4", "test/dot_git/objects/83/797cb2aabfcc30a94aba8ae9ba396b2a16c3a6", "test/dot_git/objects/83/a11c45ea6d699f2a874701bc231495df320ef8", "test/dot_git/objects/83/b2a44866c05489569466edd0b64fd64c35f3bf", "test/dot_git/objects/84", "test/dot_git/objects/84/8b08ba949f0d0f64d00a3318775e7f3becf164", "test/dot_git/objects/85", "test/dot_git/objects/85/12f2fa7f4b87784c64cb6615f1fbad7926abf2", "test/dot_git/objects/85/1c599e01cab929963ee07bb8911477da3817bd", "test/dot_git/objects/85/4e76fadf16d5005f334dbaac7a951bf690c310", "test/dot_git/objects/85/80c640aa9c03061a2607afd70a52d4a0fe21b3", "test/dot_git/objects/85/b40f2911319215ea768a7d599e267a465e2b85", "test/dot_git/objects/85/bb8a9e19a9a179bd9f5c2056588e6e25274288", "test/dot_git/objects/85/e5fdbc2cefd10f0aa7042e092bd5f4c8c823d3", "test/dot_git/objects/86", "test/dot_git/objects/86/165d83745d61a99aa3961957d191e038b2f5a6", "test/dot_git/objects/86/1b019631332e20abcedcd44efb78b4bc245797", "test/dot_git/objects/86/4a495e2f411c12a0a5df886d2a3bc0c36edf8b", "test/dot_git/objects/86/a7b47629e8ae1c822c8014a342d1d041609d8c", "test/dot_git/objects/87", "test/dot_git/objects/87/26f79534faaea1e04860001c426e9ea4082a88", "test/dot_git/objects/87/e2e8f0df7fdf8605ba86ecd97d8e7b5590893c", "test/dot_git/objects/88", "test/dot_git/objects/88/33b49921fe5b49266199aa3eba316a80c9e61b", "test/dot_git/objects/88/a86c6983316e48805a13bbb54fa0f9c80248b2", "test/dot_git/objects/89", "test/dot_git/objects/89/353c81b260c81a3340ce0a1b92da0d94d8f6de", "test/dot_git/objects/89/6cdba0f0e33856711cb64067e30256894fe40c", "test/dot_git/objects/89/d0fc07bb62c543b73721d9eb8e76375317777c", "test/dot_git/objects/89/e93573ff69db29a5a7d7f77319a743e8afa784", "test/dot_git/objects/8a", "test/dot_git/objects/8a/0d30f5ec46a905b14597f5f1a50526339313f1", "test/dot_git/objects/8a/4e031f65e18814ff506beee5de5576aca31aeb", "test/dot_git/objects/8a/8a57d37adad012752dbba3c6e1063a374b66a6", "test/dot_git/objects/8a/ac2492e118b62b049858e49286eda99b70424c", "test/dot_git/objects/8b", "test/dot_git/objects/8b/039964bc11de4db51deada1676b0a8e7c80fbf", "test/dot_git/objects/8b/3cdab3baad4295363739c4116a96d8321a67c7", "test/dot_git/objects/8b/8e7f353094009e7fc3b360ecc266081fa7e72d", "test/dot_git/objects/8b/a8d47b778c172e3fa94f59d715d3ccfec9eab8", "test/dot_git/objects/8b/e6f34ad98804d1d0d39d41d63a06d736050494", "test/dot_git/objects/8b/ea8baddf15affc95414c402dfff718790816ee", "test/dot_git/objects/8c", "test/dot_git/objects/8c/a7f29a74c0245e6d5ffe19047290e89c53c2e3", "test/dot_git/objects/8c/b1801bab79dbed4c457f7c56a4243b19a572a1", "test/dot_git/objects/8c/b23bbdc76c2644bcc177e96c648f49b04f2a62", "test/dot_git/objects/8c/be10141cdef6c19f769fe5feb9f97f218a751c", "test/dot_git/objects/8c/cc9b07c5a8c07bb3170758dcd76bfd26631f05", "test/dot_git/objects/8d", "test/dot_git/objects/8d/2896b596358c8d3fe2bde06f71b74322e6c69f", "test/dot_git/objects/8d/86c5f852a8cde3e1500f0bc7e4b75fa16478bc", "test/dot_git/objects/8d/94435b58a834245eb3e98204f6981949febda4", "test/dot_git/objects/8d/9939f789c32f715831c70529faa0ed8bdaeaef", "test/dot_git/objects/8d/c2a6356dbcaa309b457d54ecc297fe9abe4cac", "test/dot_git/objects/8d/e21b364f1831a676486d65deea2bfbe141962c", "test/dot_git/objects/8d/fad1edfb99419586b830f19f9e96ce9d241c49", "test/dot_git/objects/8e", "test/dot_git/objects/8e/f9baa02195f51e8d2322fb9304c8631acc126d", "test/dot_git/objects/8f", "test/dot_git/objects/8f/1becb8995005a7e1b22260e5d6d674249f094c", "test/dot_git/objects/8f/1d9f4bc14deac99f49eddae61ef2c3db7ab5c4", "test/dot_git/objects/8f/270405010cb4b04ee17d650e27bedf52ebc104", "test/dot_git/objects/8f/33d0578b63742b37657963d10bdbc3a30ac874", "test/dot_git/objects/8f/67e2313d82205d121e809ba1095930ded3e3c7", "test/dot_git/objects/8f/a525c77fec13ec6c2178840912c6c37b8c3cce", "test/dot_git/objects/90", "test/dot_git/objects/90/00a6cdf5f075a5b745726b97a7b27f1e669c47", "test/dot_git/objects/90/6fb7baecb35dff873248bae5084a74f59b4912", "test/dot_git/objects/90/87b71f5562c7c842fd3001419f5676f28385b4", "test/dot_git/objects/91", "test/dot_git/objects/91/9f3cce611b8364e605830f3dbb059d36b223df", "test/dot_git/objects/91/a3a5989e366c3037fbd7e917c49a36dcfbf79e", "test/dot_git/objects/92", "test/dot_git/objects/92/06fce962ca848ff0d6c4a9bf28e92b4a694c87", "test/dot_git/objects/92/10addf8611cebd99b28d8ecc01dd90006cf8e3", "test/dot_git/objects/92/1f3eccb5f75c6b81f9044aedd151dd391eef10", "test/dot_git/objects/92/214a8582931848b8146baf317db76dee9cfac1", "test/dot_git/objects/92/4b409ce9b20af189cf2a6ce930be8d977d3d3b", "test/dot_git/objects/92/6bfd86bcaf51e3926756ffce7b877665a2e87f", "test/dot_git/objects/92/d6e4952a99f3b26a0848f5d121f618d9a36c9e", "test/dot_git/objects/92/ffbe0beb74ed54fe13db418914b436f8b155b8", "test/dot_git/objects/93", "test/dot_git/objects/93/a8d9a44e349e3b8eb1138d58aed8574dd1e5eb", "test/dot_git/objects/93/e09a95f21568d850e6dce849a3a637c9459c01", "test/dot_git/objects/94", "test/dot_git/objects/94/2831545ab1b5a6c47998d5204e8fa4a13af252", "test/dot_git/objects/94/319883d8329892c2a817a819b2208369000d09", "test/dot_git/objects/94/9d05d450c007f882ca5bf52552966f40af5e96", "test/dot_git/objects/94/b0a3aa0d0e1faea2587a2ea7f60d8b4720dc54", "test/dot_git/objects/94/c860430bed915b713e537a4b1a1327df976c1c", "test/dot_git/objects/94/ccb02ffd3754e3db0024925d5c15fa1292aae1", "test/dot_git/objects/94/f4167ce48b9a84a94dce037146cd1e6cccd1d1", "test/dot_git/objects/94/f6073254faf452d56d37160580fa2480b0e42b", "test/dot_git/objects/95", "test/dot_git/objects/95/49f8c5b4d118463f75816da93143d538be3f45", "test/dot_git/objects/95/c29e184a0ec7c5fa0a2d4ecd105f17bec6218b", "test/dot_git/objects/95/efe1bd08e0b7b1469b4773c14dc728d5068b7e", "test/dot_git/objects/96", "test/dot_git/objects/96/39d45833816298a7e113f5e6bf048fb3fba7dd", "test/dot_git/objects/96/3bce669afa5f95366b27bf12345f9c3a7e91f0", "test/dot_git/objects/96/738a9834afe2e2e8abee5b78a8b88ffa9fca0c", "test/dot_git/objects/97", "test/dot_git/objects/97/71f107d373b028c2b73e2e169218951f772028", "test/dot_git/objects/97/bc5e8c3cff57c5ad09ee02a39e90a0de08109d", "test/dot_git/objects/97/ec7d3e32843a7a846c3b24332d812a05d28fff", "test/dot_git/objects/98", "test/dot_git/objects/98/1c454cda632d2c1729c5dd8ff72dbf33c2e819", "test/dot_git/objects/98/36cd7a87f3baa9c004d7ed277baef050b2ce3d", "test/dot_git/objects/98/4ab69b9f09ba4087a503628badb3bfb001e417", "test/dot_git/objects/98/b806b34a110411575eee9d45f949a72ac27c7a", "test/dot_git/objects/98/eae78c5916391dc2553c50c60bb6360bc4a298", "test/dot_git/objects/99", "test/dot_git/objects/99/6e0688dd70cbbf10bf760f392d8d52629a51c3", "test/dot_git/objects/99/d7785e7d61fe9f201fdd8d0443e390d77d2ab2", "test/dot_git/objects/9a", "test/dot_git/objects/9a/24db0198f7b9980743fb18ff030428bb4e0da8", "test/dot_git/objects/9a/6864cba7ee98c5f4813ae96ca60385916b449b", "test/dot_git/objects/9a/9060f4b2cf886595f6eb374d5de37755ae8cd0", "test/dot_git/objects/9a/d1e4b62307d64b0e86ca3b178fedde4e078376", "test/dot_git/objects/9b", "test/dot_git/objects/9b/1ffc7e40c8e14632213cdaf588378e9ba8e90b", "test/dot_git/objects/9b/70d75286c8218b28f623a9b0801b0b952ffb8b", "test/dot_git/objects/9b/7786e50a3bc4bdfb9c85ac9ab526ee5030fc34", "test/dot_git/objects/9b/a5af0916c41313afd8ab1ad808e9e810157f50", "test/dot_git/objects/9b/cba3f8ce0858c3a3d79d049995b3b7431cbe2c", "test/dot_git/objects/9c", "test/dot_git/objects/9c/08a48040fa6f5532bcc3a66a79a423a99e7f2a", "test/dot_git/objects/9c/0e612a10196a3ab25264a807d2501bcd520540", "test/dot_git/objects/9c/13d94648123c351a208389b375ef220832086c", "test/dot_git/objects/9c/274162674c99d986363d19a31379b999666765", "test/dot_git/objects/9c/5810283f7b71f0e6658f83fa3cea4c42add182", "test/dot_git/objects/9c/757047550f98256fe4c212d42a404ca75826ba", "test/dot_git/objects/9c/a4d54b87ae030f69c6a1652b06458229163bff", "test/dot_git/objects/9d", "test/dot_git/objects/9d/4cb25621a8fd3751691b5320a63acc0cb71359", "test/dot_git/objects/9d/637db3c6cfa5434f11a71cee9da87c7b8fcfcc", "test/dot_git/objects/9d/b04ec7ffa80fec3f65b02ee882a872e61fa363", "test/dot_git/objects/9d/bdbf17f96c75b31237c301b704a7b11036793d", "test/dot_git/objects/9d/ddf2d703b7acb646470caf3f9b320f8171a952", "test/dot_git/objects/9e", "test/dot_git/objects/9e/0ac6b7a43e94f49694ff169d9e4f55700668c1", "test/dot_git/objects/9e/5651973373448a7621f2b50a6c7719fc731717", "test/dot_git/objects/9e/a045ac20cfcc8c99e5a096926516d940810219", "test/dot_git/objects/9e/cfabcf37cf5ca8f1d9e4be940d38a0ca374592", "test/dot_git/objects/9f", "test/dot_git/objects/9f/17dfcb0f307446f1a9f5f4f265fd03f01e5337", "test/dot_git/objects/9f/625cc941888266a5ace9ea0f7b6de8056648bb", "test/dot_git/objects/9f/94c114fbd1a011d99783c2df5dc97db923fd27", "test/dot_git/objects/9f/9b08b0ed1e63325c5669c54b1666cf00231856", "test/dot_git/objects/9f/a2a086398a284a5ec686601a80f23a81d579f6", "test/dot_git/objects/9f/a6e958bf96ddee6b71a2905bdd4b13bb35bbc3", "test/dot_git/objects/9f/ace5ebf66d7a4990759a6b23d593b27c560371", "test/dot_git/objects/a0", "test/dot_git/objects/a0/1626c862e48de9548a21ee3877c96266a9f247", "test/dot_git/objects/a0/292a1e42c64c9738088223f119740f9bcf25a4", "test/dot_git/objects/a0/2fea10783145b59d53157dfa950e1624506160", "test/dot_git/objects/a0/7705679876a805028101587259fd8f496e8c07", "test/dot_git/objects/a0/89b4d1cc2b3887c816f5ba51ce48d90ea53e4a", "test/dot_git/objects/a0/931153ab2b7eadad5cccf57e8cfe67051a902a", "test/dot_git/objects/a0/94901cc0f4e3f9c311214bc2f9a1e0cf9a0c18", "test/dot_git/objects/a1", "test/dot_git/objects/a1/31034466bff753545671326d45a76592e59f86", "test/dot_git/objects/a1/3905543ce8634d5206f155d887818c261a34ca", "test/dot_git/objects/a1/5c431db0bd54892a5b5965a68c4f313174a415", "test/dot_git/objects/a1/65317959fbd09503f7cc9c0cf917a2bf74d426", "test/dot_git/objects/a2", "test/dot_git/objects/a2/83d38a51ccde7f05bf3b2cdbb374d3e794e3e4", "test/dot_git/objects/a2/a52fd45454e98d600a73080db9be8da494fd05", "test/dot_git/objects/a2/d4e7e0f4d030940b4a62cf905c7f18c9f3ed08", "test/dot_git/objects/a2/e10f1f8af34131fa4e48a41d0331684ca13a80", "test/dot_git/objects/a2/f5e090e38fba14a1d0f776716ddc761952863d", "test/dot_git/objects/a3", "test/dot_git/objects/a3/5cd0e0eff6610786f61c335565d72d9fa3ae69", "test/dot_git/objects/a3/961f321293662cee00c6b53f0fcfa1b91275cf", "test/dot_git/objects/a3/ed9657784be802136449dfd07e5a9586c7826f", "test/dot_git/objects/a4", "test/dot_git/objects/a4/89242712c5cb4eddb40a7969e8e9c12db7b594", "test/dot_git/objects/a4/8bbf51254111dea6d206b753781fbef82f8f63", "test/dot_git/objects/a4/8dbab8aaf71f35784363f7bd5fe0bbdc91219a", "test/dot_git/objects/a4/949eb5bfc411c724532a24a2070e16fafbdbf8", "test/dot_git/objects/a5", "test/dot_git/objects/a5/0da2e9910b2748aafc830288ff86192291e594", "test/dot_git/objects/a5/3312cdadae43ef320f56980491d2db43649ccc", "test/dot_git/objects/a5/7dfa71d8353c05d3c96880fc4c1c2a18168a0a", "test/dot_git/objects/a5/825bc61ad69802743867bafa342c5922fe23bc", "test/dot_git/objects/a5/9c6325fc1e9e00808f2f077f2ba382c8e71140", "test/dot_git/objects/a5/a096c8f88729e302bc0dcfcde69bd1d6cee54b", "test/dot_git/objects/a6", "test/dot_git/objects/a6/25a89a89cfe2916a812c0a19bbf7c88d2bc6c5", "test/dot_git/objects/a6/5cf40f373fb2652f724aa1fe552cfb1cac8f9c", "test/dot_git/objects/a6/61101de591928518b26e5cf19f976173af84b1", "test/dot_git/objects/a6/79381688bf42ef8c52ff13d7ad10fd357b716b", "test/dot_git/objects/a6/7dc709250bd465ac07b180985de98f5eb176b5", "test/dot_git/objects/a6/8e7f06b20e91283fa2729f9f442dee40816d5e", "test/dot_git/objects/a6/b63376a6c6208c700d28f4152f06561a8591f5", "test/dot_git/objects/a6/cc9707d22121121c4c436961f25ad3136c7a2d", "test/dot_git/objects/a7", "test/dot_git/objects/a7/56e607bf1b1f234346348f600ee9216a5687f6", "test/dot_git/objects/a7/b17990b0ddd4909d8a765c5ddbe50e9cb135ca", "test/dot_git/objects/a7/f6425fdc0d6eab1f94942603f9101a9eb010f3", "test/dot_git/objects/a8", "test/dot_git/objects/a8/26a873283fed2746f1f9f934f71db6d9a5e040", "test/dot_git/objects/a8/2dc65e43b5f13287fe61d9c0d535319e10d1fb", "test/dot_git/objects/a8/92c736936baf76e90a8400e13180846943dd65", "test/dot_git/objects/a8/a74a93cf26ee794cebc9f1440c56882b0124e7", "test/dot_git/objects/a8/b7e0fbece9a52e5539e4ab8f80e14504344410", "test/dot_git/objects/a8/f3b83e0ed58f5a7c58fd673eeca588942bcde5", "test/dot_git/objects/a9", "test/dot_git/objects/a9/35f4bb2d641436ab22510afdb2ddf59f953521", "test/dot_git/objects/a9/a1da34ff670558c1aa7d3c6e285cc5fb9b76db", "test/dot_git/objects/a9/b871f8f8bee8e9236b0e47333a0fce672b1445", "test/dot_git/objects/aa", "test/dot_git/objects/aa/74200714ce8190b38211795f974b4410f5a9d0", "test/dot_git/objects/aa/957bcdd3c48f838e0e613c3066ce09399423dc", "test/dot_git/objects/aa/ca7266c757878ce0f80a5edd9651afc32624c5", "test/dot_git/objects/ab", "test/dot_git/objects/ab/a5708519a06e49c3801a27e54e710f30fb13d4", "test/dot_git/objects/ab/c19c8c3819bbaa4964ca4f7fafc32d97834920", "test/dot_git/objects/ac", "test/dot_git/objects/ac/44d394114272dc8ced750155b89a4ea7feec8e", "test/dot_git/objects/ac/9ba205c42662c60238be9f5997d10c2df68d05", "test/dot_git/objects/ac/e84f11ee83b490c7b0421c3815da52172e6106", "test/dot_git/objects/ac/f6144115985ce9f37dbe5f56f4f5d96875b518", "test/dot_git/objects/ad", "test/dot_git/objects/ad/065db654ef09714c6463e2f13e6e936ca8a4b1", "test/dot_git/objects/ad/ac6394aaa5f63348d12c6d7c556cc5895bdb5e", "test/dot_git/objects/ad/be3ad1cfaed6ae867ff4c780e57b24aba92bb6", "test/dot_git/objects/ae", "test/dot_git/objects/ae/45e5b88fcd45b55efa1e8a1f60e6525897430f", "test/dot_git/objects/ae/51c7beb1d82b967d1ec70d43dc2546880e902c", "test/dot_git/objects/ae/88cc08586ab2baad34a00de9aed2be4e8ec297", "test/dot_git/objects/ae/aa7324c31d374eac09744a5e1cf3eb5c11b1ef", "test/dot_git/objects/af", "test/dot_git/objects/af/37cb1d947f50b5a9c4ea7c68dcfeb67ad66f8a", "test/dot_git/objects/af/4976e0ea1364d59c64bfcf0482d50e0e238d16", "test/dot_git/objects/af/6752006c8dfaea112143bd2692f439719162b8", "test/dot_git/objects/af/a1dfabcd436cf7af4deaf13e00180ef5368940", "test/dot_git/objects/af/ae8e12352682bf9d015dce28e338a451c5f55e", "test/dot_git/objects/af/d4d958e849a246bd3413f2cc02e7910f19f058", "test/dot_git/objects/b0", "test/dot_git/objects/b0/1401ffc98de4b600588fcfcd09a3961d162c69", "test/dot_git/objects/b0/3531d097981c72b9c99aca10eca9c50a70d466", "test/dot_git/objects/b0/c2e6b2e88b854dab551433cb113e3daf4c4e3e", "test/dot_git/objects/b0/fb915abf0e5be77c6c2400cffbbfd9c3bdcd00", "test/dot_git/objects/b1", "test/dot_git/objects/b1/35bf729745de0027719d613c8adef1007eaf6e", "test/dot_git/objects/b1/c0001ea8e43861235f34cd4d21853ca458158e", "test/dot_git/objects/b1/fc231270ad6b6edc230aa22b4c10267198b9e6", "test/dot_git/objects/b2", "test/dot_git/objects/b2/1d54ab7d3ec8d8a3c91c997ed9538777e46188", "test/dot_git/objects/b2/1f05a2f9d51a8ef2c143fb7b8282fc53be06dd", "test/dot_git/objects/b2/226c9a893eb2e71e0ff33742968479cd50b131", "test/dot_git/objects/b2/5dce6bbfa5e52108459b9a89b16def6963aec0", "test/dot_git/objects/b2/c2a902e25e522df67b8577b8bb8ddf9aa25098", "test/dot_git/objects/b3", "test/dot_git/objects/b3/6d57789486dabe2309bd7819f7793ef2e7487c", "test/dot_git/objects/b3/d79746ef32b978c65e1654d7ccddb89baa216d", "test/dot_git/objects/b4", "test/dot_git/objects/b4/07761d8d0840acc0c147dce23dcf7b741e3238", "test/dot_git/objects/b4/1467a894bdbe6be958a5de6984dd9c6dcb176b", "test/dot_git/objects/b4/3d94c5a8e399fff7661187411c2f3702898160", "test/dot_git/objects/b4/f07cbe632b5fb7ffe7c25e2a2ed215268ef15f", "test/dot_git/objects/b4/f32e4ada1229dbc85db12ed3f93d15056252ec", "test/dot_git/objects/b4/fd01bf7d2194b58ffc3a8e703bcdef5b3046bc", "test/dot_git/objects/b5", "test/dot_git/objects/b5/297f606fed8450572f35e6e34df7c81d2840e5", "test/dot_git/objects/b5/9047a78a3d6a92deac583900b77af84d0ada54", "test/dot_git/objects/b5/b60fcbee8f46d6b1efa206e139255ae33b81cc", "test/dot_git/objects/b5/e9a82adb2f8bfe4b02ee14b46c32eeb453d53a", "test/dot_git/objects/b5/fe7fc1265ffab1b6441b88055a7638688ba013", "test/dot_git/objects/b6", "test/dot_git/objects/b6/33e336e94e1090bd7e19773972b1bf177d18bb", "test/dot_git/objects/b6/9a6fedabd2d05896b06986e7ac8f69f6d32903", "test/dot_git/objects/b6/e387967dd4d8cc2a590dae48327dd7b1225992", "test/dot_git/objects/b7", "test/dot_git/objects/b7/0c8fd36430fb1e0b02119d7f802c2144fa2a41", "test/dot_git/objects/b7/2772427161ca37e13344c1a9573dfdde28a881", "test/dot_git/objects/b7/6a1914a9461f6e66a4fc5a32b890f38b3dbe89", "test/dot_git/objects/b7/90eae3127d5f3c9d501885ae9e17f342b25298", "test/dot_git/objects/b8", "test/dot_git/objects/b8/2e9938dbcadfcb79efff23a12763d6ec48f19d", "test/dot_git/objects/b8/46d2f4cb2a5adfb0c4f46e73f53a074e76c2f6", "test/dot_git/objects/b8/562d355858f20a0043c4b8adf03d7ad64b71e6", "test/dot_git/objects/b8/a5e1b3d5334ec5484f1299b77526b187a94c25", "test/dot_git/objects/b8/a73a8761cd544a512ec2d4461953db8ce95bd2", "test/dot_git/objects/b9", "test/dot_git/objects/b9/04b1fddfc7870be76bb238721ce91ee589856a", "test/dot_git/objects/b9/695b896e6e9cb7944d01b7161c394f558618b8", "test/dot_git/objects/b9/751e8e983d7cf18c3a165a82158a7ad242cbcb", "test/dot_git/objects/b9/79812846dd07c8f72f80075e482764f84e6da2", "test/dot_git/objects/b9/82edbe57b1cb1a9cbe7c5866406978172b994c", "test/dot_git/objects/b9/e18f001d183fcf54debaf1b2995d31a2f60de8", "test/dot_git/objects/b9/fe6cfc99544168ab86a9e5326d2278651204c9", "test/dot_git/objects/ba", "test/dot_git/objects/ba/017639ed43f1604c4bdc3f06cafce7b6678d4a", "test/dot_git/objects/ba/3f83d47153b9bc59a4051c30c1dd037a6eeedd", "test/dot_git/objects/ba/8e143dc8770a08a289c15e575adc55c5a4bb54", "test/dot_git/objects/ba/bdcc3cacd23b79d9fc2bdf3c0b4fc18fb539a5", "test/dot_git/objects/ba/c7b8660ab69c5728f49b9e63751ad1d86ef5d3", "test/dot_git/objects/bb", "test/dot_git/objects/bb/332bf8f4417e45a74d87c762665d27562d4e95", "test/dot_git/objects/bb/9eeafff7d803955a2f4984b2334f43143eede9", "test/dot_git/objects/bb/d2a60494d609583a1117447158a329e1629022", "test/dot_git/objects/bc", "test/dot_git/objects/bc/ba8937bbe9b916c050151ab09d43fa735de698", "test/dot_git/objects/bd", "test/dot_git/objects/bd/0ff2ff68bff3d9c961ac3c549e888204d51ceb", "test/dot_git/objects/bd/1d7e6252aaa69a1a67688101117881c20c6ce2", "test/dot_git/objects/bd/451870911b60ed681e43d21a079858da8263bd", "test/dot_git/objects/bd/4bd34e5de499f1c7cfeb5c7355ea9074d7c3d2", "test/dot_git/objects/bd/5ae9aa537db33ac612a1eb89ea18f3a0f6a6eb", "test/dot_git/objects/bd/76610f714db7ccae84d520a1b354a404f7d860", "test/dot_git/objects/bd/d8251cf5343dafc1ab05b6a939de869802a157", "test/dot_git/objects/be", "test/dot_git/objects/be/0ff545481a8562aa83969dea21653fc932f809", "test/dot_git/objects/be/1f6f33eed717448edf483296f6c2aa558fb937", "test/dot_git/objects/be/8cb297061306048ddd8c190161745ee928e49e", "test/dot_git/objects/be/96f23efa55a1c4cdcd2da6735566571ef94302", "test/dot_git/objects/be/df2c64a1d0b97f039e8bc0d80722f020adfb70", "test/dot_git/objects/bf", "test/dot_git/objects/bf/1f2fa6fd19e57dde89b415269effcd3ac68540", "test/dot_git/objects/bf/2c69e3ff4f9c3abc2c8711a4d9b94fad30e9f0", "test/dot_git/objects/bf/83cc523b783450eb66980b493d415097aeea79", "test/dot_git/objects/bf/d2fc2cdbf316abd7da4ef8d8d8b4536613eeb0", "test/dot_git/objects/c0", "test/dot_git/objects/c0/090cbbfd98cfdbcbe152dd50bfc71e243e8e74", "test/dot_git/objects/c0/489424bfdca21656c06c22b37165a8e72ab8f3", "test/dot_git/objects/c0/529776901fd212c4534feca9ddf0af66962bbc", "test/dot_git/objects/c0/7b369a37b99a56c3d73682e076d610cc66f9ea", "test/dot_git/objects/c0/7e0a3d15fac47b3a4b1628b959a16577ff3388", "test/dot_git/objects/c0/85faa2f50c6d1e7dba1494be5589adadf67c1b", "test/dot_git/objects/c0/a0771d3e3ca04f47b010867ac7a4a42408da0d", "test/dot_git/objects/c0/bff5fee2b3e7ced9f6db56394af1aad1ea7ed8", "test/dot_git/objects/c1", "test/dot_git/objects/c1/4f6e2efdd2993b0bb6b3f247eb50310762bbfb", "test/dot_git/objects/c1/c96e82e7c4ceed6a5e2d54f1e471eb914d1b02", "test/dot_git/objects/c1/ccd31fd431573003f6492034e888f7d9f0b9b8", "test/dot_git/objects/c1/f6b5ee610aeb6ac999ad6dfba1252f17d06d76", "test/dot_git/objects/c2", "test/dot_git/objects/c2/85fb81c97b0ad4b5e31d6c88f7d2de1a999bf6", "test/dot_git/objects/c2/c11d80b63f7583f569ccedf8956daf4dcd7738", "test/dot_git/objects/c2/c80f4043230f63b99f68ba1b31cd3af0e6151a", "test/dot_git/objects/c2/dcc243dd5586cdefe67c1a47922f2b33515e84", "test/dot_git/objects/c3", "test/dot_git/objects/c3/0c8c756c092cc3c5260805b630973786a0c740", "test/dot_git/objects/c3/465a138d3eb08fd7f3ddf6682e1ff5afee196d", "test/dot_git/objects/c3/927974367ccc76ff45e65f64691f866843eda9", "test/dot_git/objects/c3/d90063e61a4f18f0c67f40875c3fbef7679c37", "test/dot_git/objects/c4", "test/dot_git/objects/c4/346031a7f6dd0445b2bb6c8ecfb4b210f71c02", "test/dot_git/objects/c4/a254452489221950ff79204a3fef57bed8f22c", "test/dot_git/objects/c4/cce53174e22a2c0a4ad14d953df1ffa2fb6798", "test/dot_git/objects/c4/e1178df3417161a08166519c671cc7eb9d13da", "test/dot_git/objects/c5", "test/dot_git/objects/c5/316e5a772e358243b305cd39185907ba4000e8", "test/dot_git/objects/c5/4397c1097a4bb0139266faf7f87af3829969fa", "test/dot_git/objects/c5/4fed0d4c2cbdbae8e0e7153d36a0570181dc57", "test/dot_git/objects/c5/5a0b537cb1897139a0423c262c5896633c8ec2", "test/dot_git/objects/c5/ad873781f7507ecbdff12ebf2892aa63829165", "test/dot_git/objects/c5/b18055a68d5dad811238d2c06ae311503c2bba", "test/dot_git/objects/c6", "test/dot_git/objects/c6/1481cac83e3ade196547455a29355a04eada79", "test/dot_git/objects/c6/2a36758a44d5314d84f2a0e5519a12fa788c52", "test/dot_git/objects/c6/9bf949c1ad67d6b982e2a963f5f6f6338efe03", "test/dot_git/objects/c6/c29d8b2626547f47c454e3132643e911a9dca7", "test/dot_git/objects/c6/e98d328fadcc7fd967d0600ddc285e0a1c40c8", "test/dot_git/objects/c6/f25e80b8bcf0a21db2bea368b9e444c19bc0bf", "test/dot_git/objects/c6/fe7a87983e74b52fa926fa439dc86267ad0ece", "test/dot_git/objects/c7", "test/dot_git/objects/c7/3ab753abf0ab07061c6e5c9f18f723c8839eea", "test/dot_git/objects/c7/7d84a29d341be904705ff97f40060d896d32a2", "test/dot_git/objects/c8", "test/dot_git/objects/c8/7eab9bd090b6e7f3777681b5cd11f4ea7a0fdb", "test/dot_git/objects/c8/b4c9d59ca1c0115f3ad4bb89d46dccdcf4a00c", "test/dot_git/objects/c9", "test/dot_git/objects/c9/0f97abc5e730138e977fa4b3049e6a8417b8c6", "test/dot_git/objects/c9/378208eb8e4d7b44ff1d4ed8b24b2a3cec63ac", "test/dot_git/objects/c9/67cea0a628ff0f9b85d59003b56ab3db1ab2b4", "test/dot_git/objects/c9/868012bd4ec4530b50ec581eb4464640583367", "test/dot_git/objects/ca", "test/dot_git/objects/ca/296a4122a0f6c4412532bd8cb785eb477d670a", "test/dot_git/objects/ca/8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a", "test/dot_git/objects/ca/c661c85aa6405085fb561e4f5a1dbd62c89e0c", "test/dot_git/objects/cb", "test/dot_git/objects/cb/025c8d5557e85215123582995ce4f29ba8cf58", "test/dot_git/objects/cb/089cd89a7d7686d284d8761201649346b5aa1c", "test/dot_git/objects/cb/2d623b0705dab9033b26ba6b1d26347c9c7dc6", "test/dot_git/objects/cb/7524872ad0434e6ae1b9a467161d71cd052b20", "test/dot_git/objects/cb/865cdf59ba7e39d8a5130ff81b2c753dc87ed6", "test/dot_git/objects/cb/9af18c3753abd34f1bffd77af3c02e8975e24c", "test/dot_git/objects/cb/b903f44f2508c6204f58f812977dcc8cf9cefe", "test/dot_git/objects/cb/c8b3ec01bb98eb90e9988fe0005ecbc2dd33e8", "test/dot_git/objects/cc", "test/dot_git/objects/cc/04ea7b08f3c688db2d08837cd02cc314dcc993", "test/dot_git/objects/cc/21f81d7720b48f4c536e38de9228f590f747a2", "test/dot_git/objects/cc/5a59d08bd7e2ffe3e7b4476d809edab4038bb2", "test/dot_git/objects/cc/70a2b9b33e50633e146745b14be7b827a1b3fd", "test/dot_git/objects/cc/76d7de880e9bc84ff2b42cbfd394d0e3a61113", "test/dot_git/objects/cc/a47071801b43a39ca8d0a88f2201ad30ebedc9", "test/dot_git/objects/cc/fdeb08df97d990299a7cf523c0f26be1a17b72", "test/dot_git/objects/cd", "test/dot_git/objects/cd/34920bf0e591f952d46919b31ac464091c5ec6", "test/dot_git/objects/cd/3d162097c26b24b58f1d41cac56b871d945629", "test/dot_git/objects/cd/4b54aa066e4907be838d76250968a49d9a54a5", "test/dot_git/objects/cd/b5ce2c133787835ca0b75e3dddd4482d7d40ce", "test/dot_git/objects/ce", "test/dot_git/objects/ce/37aab31d5b51592d153e85dc31a1164f2c74d5", "test/dot_git/objects/ce/c2177c534977032173305e028aec34b2b15244", "test/dot_git/objects/ce/d71400e6918863c98829c3257274047aa86c3e", "test/dot_git/objects/cf", "test/dot_git/objects/cf/19fd85e7967177d5419c4d07398f990c33545d", "test/dot_git/objects/cf/1c5abec20238b4fda0b8fb9c9fcc0314198010", "test/dot_git/objects/cf/217f62ca6f13caa821e5f364e2db97d4139adc", "test/dot_git/objects/cf/940d627bfd8f62d084bc351a17e70f138754e7", "test/dot_git/objects/cf/ba8a784564e61ab02beec0546e2b7deb1dedf8", "test/dot_git/objects/cf/c1d07a120f8fa9812c821a93c6eea7b5f3f849", "test/dot_git/objects/d0", "test/dot_git/objects/d0/609bbcf9b21b5488a3d0ec2cac298072d39773", "test/dot_git/objects/d0/b8e19994cff4866d3464f604a44f5856436e67", "test/dot_git/objects/d0/b95097a4a97decfb88616ac5fa995bf8fd2353", "test/dot_git/objects/d0/c74daaca46f35c1ff78c5b600826deb5649524", "test/dot_git/objects/d1", "test/dot_git/objects/d1/13634b1167576fe27292c3857813ef5cc4a669", "test/dot_git/objects/d1/152cb07487bd11c9f63843437b277d51e07205", "test/dot_git/objects/d1/5036828e61ea14859aa7d1bfcebd0e3b0eb881", "test/dot_git/objects/d1/55f8b40aab911804bdc6375d9db0c585fd16ae", "test/dot_git/objects/d1/624b21caf0eee83ec682d312cf477e88f750d3", "test/dot_git/objects/d1/7653ab881d8ca2930b87b7456a41cf8745a4c2", "test/dot_git/objects/d1/d689918ec50ffe164a1eed435b6e3afb281aa0", "test/dot_git/objects/d1/f010bd414b89ab2d70d95f819b913dfe421a14", "test/dot_git/objects/d2", "test/dot_git/objects/d2/110dfef12479935cf619a11136153f94ca9b67", "test/dot_git/objects/d2/2e791be92d7cb52fb20e5734ace4423d1832b5", "test/dot_git/objects/d2/563757320e1557299ad7249cd23523f065e654", "test/dot_git/objects/d2/7b6ed3f2298528545a2d5fec952ab8468c52b4", "test/dot_git/objects/d2/d47b0e111aa46550e107f7c2d0342dab5fec54", "test/dot_git/objects/d2/ef2754d3f4498e5f39093a13bb7b63f5ac53e0", "test/dot_git/objects/d3", "test/dot_git/objects/d3/60d56c0dc32d09a1dac7d14227c0dc502e0315", "test/dot_git/objects/d3/6adf3899666534d3dfdbb7cb56ae6cd67c775f", "test/dot_git/objects/d3/e2f80ca20952878e5d2b113eea12af3b86548e", "test/dot_git/objects/d4", "test/dot_git/objects/d4/15fea0f0ad0b7894d6bef5705377f0bbdf14b1", "test/dot_git/objects/d4/47e353cbaaa11b404fc0f03d3cabe71cdf4938", "test/dot_git/objects/d4/c1f16003f3a9dbd786ff9c76fd870f6410219e", "test/dot_git/objects/d4/c52892a65b126bd009552425629d3ddeac187c", "test/dot_git/objects/d5", "test/dot_git/objects/d5/23191505a04e561b83f1d2d4161d0464fb7cc4", "test/dot_git/objects/d5/50ee25ecdea090a474e46047f5fb53c608225c", "test/dot_git/objects/d5/b2e50283d7c08ba11cff41cf969bc409e25b04", "test/dot_git/objects/d6", "test/dot_git/objects/d6/8924f19dad96912e1a653946aedca73e4f1515", "test/dot_git/objects/d6/8d89dbe9dd68f50039dce10c47e26f09515a49", "test/dot_git/objects/d6/a96d9347d002e1f4c994f6e706c92cacf34c1b", "test/dot_git/objects/d6/fa111185d38e869024040461d97e3fb1f2a3dd", "test/dot_git/objects/d7", "test/dot_git/objects/d7/06308dfda94ed1d1fa3b4e166204a3b3b821de", "test/dot_git/objects/d7/3109da898b1130ebf23ac384cd19f037244f2c", "test/dot_git/objects/d7/3cb7a250d50941a792fa4b7ce8967d8d19f172", "test/dot_git/objects/d7/769d5114d138fe191f89c4762207cf09ee6ff6", "test/dot_git/objects/d7/7e88e54007ca7054c80e4a553dfc9497033190", "test/dot_git/objects/d7/9588e68ca46be7ff40142a916384bb2e747a23", "test/dot_git/objects/d7/a66b7d6053a49c44d0be8431be4e3f83d2fca6", "test/dot_git/objects/d7/b6c50da9b2013a2b68a58ad248a5ee86e3e413", "test/dot_git/objects/d8", "test/dot_git/objects/d8/263d0d2544145f915010a759217b3cca42372d", "test/dot_git/objects/d8/32e468be4f1fc8898bf2e5273f1edbe96df5a1", "test/dot_git/objects/d8/5761603253c1244d71de61bbaede916abbc31e", "test/dot_git/objects/d8/73fa62a4ffb5d5a75d21432ffa8d1f6579024d", "test/dot_git/objects/d8/abe3ca243a8ff9bba26b084100087bfcb4cc76", "test/dot_git/objects/d8/c9929f8fd838bb3b382e0d59d64d98fde2c1c6", "test/dot_git/objects/d9", "test/dot_git/objects/d9/257b8d55aa73dd51720e85768d217c9305f3ff", "test/dot_git/objects/d9/8d313fdd7d2bfa25bc440ac7419b65548d0ccb", "test/dot_git/objects/d9/a1d623cba5e02e877ab45f642d103ef8d5b3b0", "test/dot_git/objects/d9/f86d513707635a11cbd37ea1bd2a7963122c0b", "test/dot_git/objects/da", "test/dot_git/objects/da/1669b4371b10947264cb338e9a1cbedc0ad569", "test/dot_git/objects/da/2906f8045e1fdb88e00041682e7bd681a8ad1d", "test/dot_git/objects/da/a1ae72d1b50ea84156ab4609e643a070bdef4e", "test/dot_git/objects/da/a957a7309b9c4151fbed3db2467a05a20af896", "test/dot_git/objects/da/d96db2312b0af8967b04f7071ef98dab98eda4", "test/dot_git/objects/da/fd8a6599574a188701e2efd965b5a9907925ee", "test/dot_git/objects/db", "test/dot_git/objects/db/0101ef085f8c71eb0f4a1ec982d292924a5d7e", "test/dot_git/objects/db/41697c57c3d294a776b4d42156868d6af91432", "test/dot_git/objects/db/668e5f99bf481aa0c196091e4922238fdaf341", "test/dot_git/objects/db/c9ba300c9939793123d04c4cb1b1f0b25e6bb3", "test/dot_git/objects/db/d625cae0863ef56c00c09d7954dea8165650db", "test/dot_git/objects/db/dff42a58d11af46dd1361105de13ae6cfcddf2", "test/dot_git/objects/db/fed0396f4690e49a9326015f0986f0d88e9bf8", "test/dot_git/objects/dc", "test/dot_git/objects/dc/0bcf3df4f74fa898ab5541c38e38b405dbcaa9", "test/dot_git/objects/dc/13b3e9e0c9f064e50c432158e3b038dc36b63e", "test/dot_git/objects/dc/5de731e66fa25fa825ef4d2d550914c50e3592", "test/dot_git/objects/dc/7dadd3e76635500988a1805b414074cca37470", "test/dot_git/objects/dc/80b6e1a79803154171b8b54021280c79345b03", "test/dot_git/objects/dc/a70d64a067eb0739bd71b8725d8e34fbc1ed0a", "test/dot_git/objects/dd", "test/dot_git/objects/dd/018cf1e22bb55a7603eb7b5dc40dd794df96f5", "test/dot_git/objects/dd/0d926603e93d455d1986c28adb6596062580f0", "test/dot_git/objects/dd/7efbb77e82a842d13c91288c372e26fc701ed6", "test/dot_git/objects/de", "test/dot_git/objects/de/6582afb45f6095e001f58add5ea7c10e9dcb6d", "test/dot_git/objects/de/b2346f42ba644e6768541b5eded5d381c26158", "test/dot_git/objects/de/e78dfdbff2d10b632252914a27b087c133c6c0", "test/dot_git/objects/df", "test/dot_git/objects/df/bda7c78373c97807758e7385e980ea1969a6a6", "test/dot_git/objects/df/eb56c9ad7ffe4aa3119f378720dea2e4c7b663", "test/dot_git/objects/df/eeb6e6ca48947e35b882ae04bdcc7cbc992d99", "test/dot_git/objects/e0", "test/dot_git/objects/e0/2bcf0380749a290c327fad97bfb383ca54bcb3", "test/dot_git/objects/e0/34f8ea24c4f0e5a5ad74291148ab8a94843dcf", "test/dot_git/objects/e1", "test/dot_git/objects/e1/c2a8f7843b588275eda6f3c8e321e23e74fd96", "test/dot_git/objects/e2", "test/dot_git/objects/e2/496eb77be920be74b1e9685a737a0f774d4fcf", "test/dot_git/objects/e2/4cc74b1f91acd0cc01b6cc413319155934735f", "test/dot_git/objects/e2/52fa762a251d01725a8d4c5becb136e9955fe8", "test/dot_git/objects/e2/56e219e2898ef4e259472205a4cfb3fb782f3b", "test/dot_git/objects/e2/a696dd7cc6a5870130b7111fd0d768101aef73", "test/dot_git/objects/e2/c9f53517ee568ac02ce2b8f2633e8b0a9f513e", "test/dot_git/objects/e3", "test/dot_git/objects/e3/2412d181cced969cb0259656bed360e07e1c3a", "test/dot_git/objects/e3/3e78cb3c472bc6e1566146f6758851ce2677b6", "test/dot_git/objects/e3/8017572b5eae23f041a40cb49292213e603cd2", "test/dot_git/objects/e3/a3038573f3b1246def8ef1a1614f054bedf997", "test/dot_git/objects/e3/e846396d26e98aa34d26c7417e851f46801f9a", "test/dot_git/objects/e4", "test/dot_git/objects/e4/2c5d4e90496dec671202ade0099d0ab93beb9d", "test/dot_git/objects/e4/36cb7f50f0d742c0e0aa972092ec9bebb7f576", "test/dot_git/objects/e4/45223b62c0dfe199d2db14b439c5eb1f10edd4", "test/dot_git/objects/e4/76515e4c1e9c034f44efea8cb96bc137cd4c94", "test/dot_git/objects/e4/c491a2a3369cd2dbb250ee51c77026a9f0e890", "test/dot_git/objects/e4/d1fc91a3740ecf260efeaaaf6e7376021900e1", "test/dot_git/objects/e4/e9744dfabd3c54cddf8274d95ffe7e8d4ae1f6", "test/dot_git/objects/e5", "test/dot_git/objects/e5/3c62a8e65bcb441de67dd388f22d9e59ff41b4", "test/dot_git/objects/e5/b2c414dddbe9e0c485e4021afe939e6f760113", "test/dot_git/objects/e6", "test/dot_git/objects/e6/04d431540c63ebb9387bd1506b7df63e3d4868", "test/dot_git/objects/e6/1b707b59d20dc125ae1c2383eb67e06ee6686e", "test/dot_git/objects/e6/2bf8d52ea71f4bfa9f703291736740662a569e", "test/dot_git/objects/e6/30c25e624543723c051a8cef0b7894a43b5d66", "test/dot_git/objects/e6/d63855e008c8a3a126fe042e8411bf60c6d6a1", "test/dot_git/objects/e6/e2baff2ba5e92ee6487187f4d0a47a6e981dc3", "test/dot_git/objects/e7", "test/dot_git/objects/e7/67e28974d0047a53f3880d1361822c2386873b", "test/dot_git/objects/e7/681e997de80c7d57e2c8e09c50c990c55d3b1c", "test/dot_git/objects/e7/68654a38ce8abc9f3b62d6860e386dc6188ed1", "test/dot_git/objects/e7/7a296aa02490f6a8d2ee4cb61e3600cdd416be", "test/dot_git/objects/e7/9953820104e86a400504a738d09a9af1a85d52", "test/dot_git/objects/e7/ca677143058e804352ae7225ec7ee077e732cc", "test/dot_git/objects/e8", "test/dot_git/objects/e8/c36a5942eb01f7036ed8969f5845c4d5385896", "test/dot_git/objects/e8/cecd71bf2bf0ee79b8254de22260bcacabe3aa", "test/dot_git/objects/e9", "test/dot_git/objects/e9/0d7972cddfcbed0e7efd7dac92cbe894c226f0", "test/dot_git/objects/e9/13e5150f7f6789f16afe8276c0c4cbd4e6d374", "test/dot_git/objects/e9/2a43db63f1c8bd572270140e8771fd33d1e415", "test/dot_git/objects/e9/462ac46b53343c09ea5dcdc7ab53b28dbdaf95", "test/dot_git/objects/e9/4f08ad7175d17064b709e487cf3d16954fb204", "test/dot_git/objects/e9/594eba936a7a228d42b65d700bebff95a4d7d9", "test/dot_git/objects/e9/5d5db706850682b2798f7643e31f3f82cfa8e0", "test/dot_git/objects/e9/6f1622e59e32a89c727359f2c8c5e598d719c8", "test/dot_git/objects/e9/95e20b7c6ad21823aedc5d3646271bbb5565a9", "test/dot_git/objects/e9/c97e96fc539a6586110b4698c64e8167f09b7d", "test/dot_git/objects/ea", "test/dot_git/objects/ea/35a4556f5a6f1e25e133e0c4928c1bd9994356", "test/dot_git/objects/ea/7d7232c2035543c3b0f349339d50157874b5f0", "test/dot_git/objects/ea/94f383c239922fd70cc0433e2f34484b630f52", "test/dot_git/objects/eb", "test/dot_git/objects/eb/0661fd2ee02af9e0c5c885028f147fbd5f13ab", "test/dot_git/objects/eb/275489327879906f5ced9f04220aa896534243", "test/dot_git/objects/eb/8ca7d4157905fe359425a58c05c4c43ceb3911", "test/dot_git/objects/eb/9c34e472281434001fb733bb12dcef2a27fc1e", "test/dot_git/objects/eb/edf3022c32069f7c375fed501e27ce570a8df7", "test/dot_git/objects/eb/ee5088c07150ab83f09d7f56b7317afdc0b447", "test/dot_git/objects/ec", "test/dot_git/objects/ec/256eeca5ef0eb92479e4b5dec684deb962e952", "test/dot_git/objects/ec/43985d3cabe16a0096836a5ad64317101bb0a6", "test/dot_git/objects/ec/a0c428506f18dc36589e9464513f7157cd6e52", "test/dot_git/objects/ec/c3c63aa7cd24a169698704dcbddd9dc19f81f1", "test/dot_git/objects/ed", "test/dot_git/objects/ed/0facca8d7f95104e95cc6682f77c8171c5423a", "test/dot_git/objects/ed/3d99d5dc459aca24614bb4ca672413aa41d64a", "test/dot_git/objects/ed/a08db954e49e1d794a7e74a81a2a5b2215a9a4", "test/dot_git/objects/ed/a3c8823fddd1f491948351df3757b624d5f3ef", "test/dot_git/objects/ed/c62f0fb7f82ee1ad7c29b42e513960fdcf13d9", "test/dot_git/objects/ee", "test/dot_git/objects/ee/0ca6cafabbf02988a2e023b35c1567f9b0795e", "test/dot_git/objects/ee/2b012174a4a37234adb948bc56ec2ed55881fb", "test/dot_git/objects/ee/88371bc4a42cb7980fdb7704be9f05fee3b0a3", "test/dot_git/objects/ee/ccc934cad8bb74624ed388988fe79c26e6900d", "test/dot_git/objects/ee/de095009fcdde7b3bb4ddc21f3f479eb2331c2", "test/dot_git/objects/ee/e211414ed00e6b5b65d81179ea21d5c052addd", "test/dot_git/objects/ee/e9df3d091825b2ce066c0fe717e2224f2f2931", "test/dot_git/objects/ef", "test/dot_git/objects/ef/9d99db794a654d4c67527d277064481e996c5a", "test/dot_git/objects/ef/9e75f59ccadfd4c67c6853828b9bc34d974ec7", "test/dot_git/objects/ef/b165f0221d9739b6be5179ae3cecd633e45ce8", "test/dot_git/objects/ef/e949a5fd8eb03a7380b2eccb2fc7dcabef6899", "test/dot_git/objects/f0", "test/dot_git/objects/f0/32303006cdfe5892e2f8f64cf0f972d351b9a3", "test/dot_git/objects/f0/5fb20e635d8ae2ff50ccb6a984274e58058632", "test/dot_git/objects/f0/6db1288baf0f8671f287ad5a2a91d943747068", "test/dot_git/objects/f0/f6f7e25c4bdd0647932e859fca992ff37869b3", "test/dot_git/objects/f0/f87fe091f1256b42135c6e2e482cd3a078c7f9", "test/dot_git/objects/f1", "test/dot_git/objects/f1/0267a9fd3a1baaf9ba9e869f23e9941f16a040", "test/dot_git/objects/f1/0a750f2d5017a105d99d49dac1a86adcfef830", "test/dot_git/objects/f1/279e3559971fcd3ab535140d9f320796f48269", "test/dot_git/objects/f1/43aeeecdd4c7736a3d9767acf598e9c5f10e9e", "test/dot_git/objects/f1/bf0001951ac41581e708bacacc4bdb4deddf3c", "test/dot_git/objects/f2", "test/dot_git/objects/f2/0b59e485ec38019c363f3e1e89e0f804ed48ec", "test/dot_git/objects/f2/2d0c85fbcfc90bc51ef9a9131d03033ca11115", "test/dot_git/objects/f2/41613e98ac4f7d57d45dfd8d7f38b7c8df99f3", "test/dot_git/objects/f2/46936f2d7e901199afad8bb7e1e3b27de590a6", "test/dot_git/objects/f2/4881f7c6a31653a8d979a9d57dc892987be60c", "test/dot_git/objects/f2/4e3a795e54ee05df27ecd67f24d7033f954e2d", "test/dot_git/objects/f2/55ce10804955454568678091a6f328ef66a8a6", "test/dot_git/objects/f2/7d9bd39b44bd80abd029a481c6a54617d0d170", "test/dot_git/objects/f2/8d3bb5dd2c9be42f4ec9458808a4d8487c2e3e", "test/dot_git/objects/f2/c90099c5e43ab88371cdccc411d0424b0a4fb9", "test/dot_git/objects/f2/ce4153e5b1231e5603dea5772cd7a895d93923", "test/dot_git/objects/f2/e63e8292a9e5750c459398d54f3ad9a23c18d7", "test/dot_git/objects/f3", "test/dot_git/objects/f3/58447ff06a87a0aeac39e1945e3c635b328801", "test/dot_git/objects/f3/7527fc3a9a67a11e982ac64d37b6f8ed68d297", "test/dot_git/objects/f3/b578c9694e83744b094524cbd190f2763f4a12", "test/dot_git/objects/f3/f1411becc7ea375d82a8cd1e6581f112dcb7d0", "test/dot_git/objects/f4", "test/dot_git/objects/f4/1be6d524d8db969348f7e3bdcc08908932bb4e", "test/dot_git/objects/f4/401b69f04ff4a08df8e03e7883feca260f30f1", "test/dot_git/objects/f4/e4a260042d8030185c55a6005496ca7735ac3e", "test/dot_git/objects/f5", "test/dot_git/objects/f5/0489c78cc3d06d797c82d871726716684fc61c", "test/dot_git/objects/f5/3a1631d49cfdb0a257974b3ebc0b5bc79bde52", "test/dot_git/objects/f5/3d11ab42a370d97a2121c864b411aaca6f08dd", "test/dot_git/objects/f5/3eb189e857104b44de96b0a41436ebf60ffd78", "test/dot_git/objects/f5/42ce17ea0da75b3de894eb7d0ffd8b9efe97d2", "test/dot_git/objects/f5/69f066cdae3a13946f7ef9608677006ff387ed", "test/dot_git/objects/f5/6b3f207a27f31f0d625926f822ca2e48d9d0d4", "test/dot_git/objects/f5/923002632da369454a1dc158ea3c0306fdeeee", "test/dot_git/objects/f5/c3d3175f45e9bc0d22a18c23d05aa3efd495dd", "test/dot_git/objects/f6", "test/dot_git/objects/f6/2215251c1d9fd76bdfb6454446cb1826ee9246", "test/dot_git/objects/f6/c9c0b559fd041a0a23d33ae4bb605f0dba7b58", "test/dot_git/objects/f7", "test/dot_git/objects/f7/3b9daf41c4c1380be40168b5cb7a3fefb87728", "test/dot_git/objects/f7/f0d1e2900534942ca33db3655dca736cf511cd", "test/dot_git/objects/f8", "test/dot_git/objects/f8/1eec2ace52484d074b1db7a29b32c8b716d056", "test/dot_git/objects/f8/206296fd197c506a224e9bbee22a8dccd2d8b7", "test/dot_git/objects/f8/5c1f389f7a79aff1d3f05abb8dbff7e7c15ee0", "test/dot_git/objects/f8/f75c70d9abddb176e61fe67520a0f0a168b8ee", "test/dot_git/objects/f9", "test/dot_git/objects/f9/1286d73b748a0008e48f03362e4642cd5dc9b3", "test/dot_git/objects/f9/f3fe3f0b327e5b7955a195e5d789791bcc08f1", "test/dot_git/objects/fa", "test/dot_git/objects/fa/18b41bbe8588286eaa9e969516ad761d0e3014", "test/dot_git/objects/fa/3c45fbf74c431e978028feee0b2fdd5253a150", "test/dot_git/objects/fa/64d91bcda155c1622505ca91dde0fa694c04c1", "test/dot_git/objects/fa/b9a01ca267b7eec6fa6f215c34b9967d8565a7", "test/dot_git/objects/fa/dd0862e018dbf21be3c6775acf9b93df85b8ae", "test/dot_git/objects/fb", "test/dot_git/objects/fb/646a3ac70216618af383ce1bec1e05692d81fd", "test/dot_git/objects/fb/720415bc5672ba589928d8ac63c5fcc7de2eb0", "test/dot_git/objects/fb/c4ed43dfd3173f9707e3d7657809dc77c0bd9a", "test/dot_git/objects/fc", "test/dot_git/objects/fc/0bfccdebfaea6fbb28e5a6cea62f9a820ea817", "test/dot_git/objects/fc/ee3824a8d0213b9a3a940653e9fafaeaeeae1d", "test/dot_git/objects/fd", "test/dot_git/objects/fd/f213805d60b3c1736a8121b8388ff143363e58", "test/dot_git/objects/fe", "test/dot_git/objects/fe/790b61726b8a710b66df71b8999798d9a8e176", "test/dot_git/objects/fe/7efffeafed1ecd4679b5526d72a7dd3df140a9", "test/dot_git/objects/fe/96440abd8d769d80037c7a8afcbf225156b604", "test/dot_git/objects/fe/a98a018892bd22aa0bf7de727097eafc66ecc2", "test/dot_git/objects/fe/cd79941b5854d9a729c4b0752ebc23c49ae0f0", "test/dot_git/objects/fe/d488d40a767dd69f1e6aa6ba060e8669666391", "test/dot_git/objects/fe/f69482cd45384aeccd1161cdbbf754a524a811", "test/dot_git/objects/ff", "test/dot_git/objects/ff/0f42a1d984cdcd4b647e713eaec668177fb1f6", "test/dot_git/objects/ff/2a1936f7883f44e7587a65dcbb5d18b03f3835", "test/dot_git/objects/ff/667b71fb08b0642e5a92087e763fc09096893c", "test/dot_git/objects/ff/97e5351d9fccccd047d798573c5a61771fc6c9", "test/dot_git/objects/info", "test/dot_git/objects/info/alternates", "test/dot_git/objects/pack", "test/dot_git/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.idx", "test/dot_git/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.keep", "test/dot_git/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.pack", "test/dot_git/ORIG_HEAD", "test/dot_git/packed-refs", "test/dot_git/refs", "test/dot_git/refs/heads", "test/dot_git/refs/heads/nonpack", "test/dot_git/refs/remotes", "test/dot_git/refs/remotes/origin", "test/dot_git/refs/remotes/origin/HEAD", "test/dot_git/refs/remotes/origin/master", "test/dot_git/refs/remotes/tom", "test/dot_git/refs/remotes/tom/master", "test/dot_git/refs/tags", "test/dot_git/refs/tags/v0.7.0", "test/dot_git_clone", "test/dot_git_clone/config", "test/dot_git_clone/description", "test/dot_git_clone/HEAD", "test/dot_git_clone/hooks", "test/dot_git_clone/hooks/applypatch-msg", "test/dot_git_clone/hooks/commit-msg", "test/dot_git_clone/hooks/post-commit", "test/dot_git_clone/hooks/post-receive", "test/dot_git_clone/hooks/post-update", "test/dot_git_clone/hooks/pre-applypatch", "test/dot_git_clone/hooks/pre-commit", "test/dot_git_clone/hooks/pre-rebase", "test/dot_git_clone/hooks/prepare-commit-msg", "test/dot_git_clone/hooks/update", "test/dot_git_clone/info", "test/dot_git_clone/info/exclude", "test/dot_git_clone/objects", "test/dot_git_clone/objects/info", "test/dot_git_clone/objects/info/alternates", "test/dot_git_clone/refs", "test/dot_git_clone/refs/heads", "test/dot_git_clone/refs/heads/master", "test/dot_git_clone/refs/heads/nonpack", "test/dot_git_clone/refs/heads/test", "test/dot_git_clone/refs/heads/test/chacon", "test/dot_git_clone/refs/heads/testing", "test/dot_git_clone/refs/tags", "test/dot_git_clone/refs/tags/v0.7.0", "test/dot_git_clone2", "test/dot_git_clone2/config", "test/dot_git_clone2/description", "test/dot_git_clone2/HEAD", "test/dot_git_clone2/hooks", "test/dot_git_clone2/hooks/applypatch-msg", "test/dot_git_clone2/hooks/commit-msg", "test/dot_git_clone2/hooks/post-commit", "test/dot_git_clone2/hooks/post-receive", "test/dot_git_clone2/hooks/post-update", "test/dot_git_clone2/hooks/pre-applypatch", "test/dot_git_clone2/hooks/pre-commit", "test/dot_git_clone2/hooks/pre-rebase", "test/dot_git_clone2/hooks/prepare-commit-msg", "test/dot_git_clone2/hooks/update", "test/dot_git_clone2/info", "test/dot_git_clone2/info/exclude", "test/dot_git_clone2/objects", "test/dot_git_clone2/objects/info", "test/dot_git_clone2/objects/info/alternates", "test/dot_git_clone2/refs", "test/dot_git_clone2/refs/heads", "test/dot_git_clone2/refs/heads/master", "test/dot_git_clone2/refs/heads/nonpack", "test/dot_git_clone2/refs/heads/test", "test/dot_git_clone2/refs/heads/test/chacon", "test/dot_git_clone2/refs/heads/testing", "test/dot_git_clone2/refs/tags", "test/dot_git_clone2/refs/tags/v0.7.0", "test/dot_git_iv2", "test/dot_git_iv2/config", "test/dot_git_iv2/description", "test/dot_git_iv2/HEAD", "test/dot_git_iv2/index", "test/dot_git_iv2/info", "test/dot_git_iv2/info/exclude", "test/dot_git_iv2/info/refs", "test/dot_git_iv2/objects", "test/dot_git_iv2/objects/info", "test/dot_git_iv2/objects/info/alternates", "test/dot_git_iv2/objects/info/packs", "test/dot_git_iv2/objects/pack", "test/dot_git_iv2/objects/pack/pack-4eb8bbafbe65e4f3841581537735fc5d448759c5.idx", "test/dot_git_iv2/objects/pack/pack-4eb8bbafbe65e4f3841581537735fc5d448759c5.pack", "test/dot_git_iv2/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.idx", "test/dot_git_iv2/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.keep", "test/dot_git_iv2/objects/pack/pack-c8881c2613522dc3ac69af9c7b4881a061aaec8c.pack", "test/dot_git_iv2/packed-refs", "test/dot_git_iv2/refs", "test/dot_git_iv2/refs/remotes", "test/dot_git_iv2/refs/remotes/origin", "test/dot_git_iv2/refs/remotes/origin/HEAD", "test/fixtures", "test/fixtures/blame", "test/fixtures/cat_file_blob", "test/fixtures/cat_file_blob_ruby", "test/fixtures/cat_file_blob_size", "test/fixtures/cat_file_commit_ruby", "test/fixtures/cat_file_tree_ruby", "test/fixtures/commit", "test/fixtures/diff_2", "test/fixtures/diff_2f", "test/fixtures/diff_f", "test/fixtures/diff_files", "test/fixtures/diff_i", "test/fixtures/diff_index", "test/fixtures/diff_mode_only", "test/fixtures/diff_new_mode", "test/fixtures/diff_p", "test/fixtures/for_each_ref", "test/fixtures/for_each_ref_remotes", "test/fixtures/for_each_ref_tags", "test/fixtures/gitmodules", "test/fixtures/log", "test/fixtures/ls_files", "test/fixtures/ls_tree_a", "test/fixtures/ls_tree_b", "test/fixtures/ls_tree_commit", "test/fixtures/ls_tree_paths_ruby", "test/fixtures/ls_tree_paths_ruby_deep", "test/fixtures/ls_tree_subdir", "test/fixtures/ls_tree_submodule", "test/fixtures/merge_result", "test/fixtures/rev_list", "test/fixtures/rev_list_all", "test/fixtures/rev_list_count", "test/fixtures/rev_list_lines", "test/fixtures/rev_list_range", "test/fixtures/rev_list_since", "test/fixtures/rev_list_single", "test/fixtures/rev_parse", "test/fixtures/ruby_diff", "test/fixtures/ruby_diff_full_index", "test/fixtures/ruby_for_each_ref", "test/fixtures/show_empty_commit", "test/fixtures/simple_config", "test/helper.rb", "test/profile.rb", "test/suite.rb", "test/test_actor.rb", "test/test_blame.rb", "test/test_blame_tree.rb", "test/test_blob.rb", "test/test_commit.rb", "test/test_commit_stats.rb", "test/test_commit_write.rb", "test/test_config.rb", "test/test_diff.rb", "test/test_file_index.rb", "test/test_git.rb", "test/test_grit.rb", "test/test_head.rb", "test/test_index_status.rb", "test/test_merge.rb", "test/test_raw.rb", "test/test_real.rb", "test/test_reality.rb", "test/test_remote.rb", "test/test_repo.rb", "test/test_rubygit.rb", "test/test_rubygit_alt.rb", "test/test_rubygit_index.rb", "test/test_rubygit_iv2.rb", "test/test_submodule.rb", "test/test_tag.rb", "test/test_tree.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://github.com/mojombo/grit}
-  s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{grit}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Grit is a Ruby library for extracting information from a git repository in an object oriented manner.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<mime-types>, [">= 1.15"])
-      s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
-    else
-      s.add_dependency(%q<mime-types>, [">= 1.15"])
-      s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
-    end
-  else
-    s.add_dependency(%q<mime-types>, [">= 1.15"])
-    s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/haml-2.0.9.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/haml-2.0.9.gemspec
deleted file mode 100644
index 9b297c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/haml-2.0.9.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{haml}
-  s.version = "2.0.9"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Nathan Weizenbaum", "Hampton Catlin"]
-  s.date = %q{2009-02-21}
-  s.description = %q{Haml (HTML Abstraction Markup Language) is a layer on top of XHTML or XML that's designed to express the structure of XHTML or XML documents in a non-repetitive, elegant, easy way, using indentation rather than closing tags and allowing Ruby to be embedded with ease. It was originally envisioned as a plugin for Ruby on Rails, but it can function as a stand-alone templating engine.}
-  s.email = %q{haml at googlegroups.com}
-  s.executables = ["haml", "html2haml", "sass", "css2sass"]
-  s.extra_rdoc_files = ["FAQ", "MIT-LICENSE", "VERSION", "README.rdoc", "REVISION"]
-  s.files = ["rails/init.rb", "lib/sass.rb", "lib/sass", "lib/sass/css.rb", "lib/sass/error.rb", "lib/sass/tree", "lib/sass/tree/comment_node.rb", "lib/sass/tree/node.rb", "lib/sass/tree/value_node.rb", "lib/sass/tree/directive_node.rb", "lib/sass/tree/attr_node.rb", "lib/sass/tree/rule_node.rb", "lib/sass/plugin", "lib/sass/plugin/rails.rb", "lib/sass/plugin/merb.rb", "lib/sass/constant.rb", "lib/sass/engine.rb", "lib/sass/plugin.rb", "lib/sass/constant", "lib/sass/constant/number.rb", "lib/sass/constant/operation.rb", "lib/sass/constant/literal.rb", "lib/sass/constant/color.rb", "lib/sass/constant/string.rb", "lib/sass/constant/nil.rb", "lib/haml", "lib/haml/filters.rb", "lib/haml/exec.rb", "lib/haml/error.rb", "lib/haml/template.rb", "lib/haml/engine.rb", "lib/haml/version.rb", "lib/haml/template", "lib/haml/template/patch.rb", "lib/haml/template/plugin.rb", "lib/haml/helpers.rb", "lib/haml/buffer.rb", "lib/haml/html.rb", "lib/haml/precompiler.rb", "lib/haml/util.rb", "lib/haml/helpers", "lib/haml/helpers/action_view_mods.rb", "lib/haml/helpers/action_view_extensions.rb", "lib/haml.rb", "bin/sass", "bin/css2sass", "bin/html2haml", "bin/haml", "test/linked_rails.rb", "test/benchmark.rb", "test/sass", "test/sass/css2sass_test.rb", "test/sass/results", "test/sass/results/constants.css", "test/sass/results/parent_ref.css", "test/sass/results/compressed.css", "test/sass/results/complex.css", "test/sass/results/compact.css", "test/sass/results/mixins.css", "test/sass/results/alt.css", "test/sass/results/subdir", "test/sass/results/subdir/subdir.css", "test/sass/results/subdir/nested_subdir", "test/sass/results/subdir/nested_subdir/nested_subdir.css", "test/sass/results/nested.css", "test/sass/results/import.css", "test/sass/results/multiline.css", "test/sass/results/basic.css", "test/sass/results/expanded.css", "test/sass/templates", "test/sass/templates/basic.sass", "test/sass/templates/bork.sass", "test/sass/templates/compressed.sass", "test/sass/templates/import.sass", "test/sass/templates/constants.sass", "test/sass/templates/expanded.sass", "test/sass/templates/nested.sass", "test/sass/templates/_partial.sass", "test/sass/templates/compact.sass", "test/sass/templates/subdir", "test/sass/templates/subdir/subdir.sass", "test/sass/templates/subdir/nested_subdir", "test/sass/templates/subdir/nested_subdir/nested_subdir.sass", "test/sass/templates/parent_ref.sass", "test/sass/templates/alt.sass", "test/sass/templates/importee.sass", "test/sass/templates/mixins.sass", "test/sass/templates/multiline.sass", "test/sass/templates/complex.sass", "test/sass/templates/bork2.sass", "test/sass/engine_test.rb", "test/sass/plugin_test.rb", "test/haml", "test/haml/mocks", "test/haml/mocks/article.rb", "test/haml/rhtml", "test/haml/rhtml/_av_partial_2.rhtml", "test/haml/rhtml/standard.rhtml", "test/haml/rhtml/_av_partial_1.rhtml", "test/haml/rhtml/action_view.rhtml", "test/haml/html2haml_test.rb", "test/haml/template_test.rb", "test/haml/helper_test.rb", "test/haml/results", "test/haml/results/tag_parsing.xhtml", "test/haml/results/content_for_layout.xhtml", "test/haml/results/helpers.xhtml", "test/haml/results/original_engine.xhtml", "test/haml/results/very_basic.xhtml", "test/haml/results/helpful.xhtml", "test/haml/results/list.xhtml", "test/haml/results/partials.xhtml", "test/haml/results/eval_suppressed.xhtml", "test/haml/results/nuke_inner_whitespace.xhtml", "test/haml/results/whitespace_handling.xhtml", "test/haml/results/render_layout.xhtml", "test/haml/results/silent_script.xhtml", "test/haml/results/standard.xhtml", "test/haml/results/just_stuff.xhtml", "test/haml/results/partial_layout.xhtml", "test/haml/results/filters.xhtml", "test/haml/results/nuke_outer_whitespace.xhtml", "test/haml/markaby", "test/haml/markaby/standard.mab", "test/haml/templates", "test/haml/templates/tag_parsing.haml", "test/haml/templates/nuke_inner_whitespace.haml", "test/haml/templates/partial_layout.haml", "test/haml/templates/_av_partial_2_ugly.haml", "test/haml/templates/partials.haml", "test/haml/templates/_layout_for_partial.haml", "test/haml/templates/original_engine.haml", "test/haml/templates/helpers.haml", "test/haml/templates/_layout.erb", "test/haml/templates/action_view_ugly.haml", "test/haml/templates/content_for_layout.haml", "test/haml/templates/silent_script.haml", "test/haml/templates/very_basic.haml", "test/haml/templates/render_layout.haml", "test/haml/templates/filters.haml", "test/haml/templates/_av_partial_1.haml", "test/haml/templates/standard_ugly.haml", "test/haml/templates/_partial.haml", "test/haml/templates/nuke_outer_whitespace.haml", "test/haml/templates/breakage.haml", "test/haml/templates/list.haml", "test/haml/templates/standard.haml", "test/haml/templates/whitespace_handling.haml", "test/haml/templates/eval_suppressed.haml", "test/haml/templates/action_view.haml", "test/haml/templates/_av_partial_2.haml", "test/haml/templates/partialize.haml", "test/haml/templates/just_stuff.haml", "test/haml/templates/helpful.haml", "test/haml/templates/_av_partial_1_ugly.haml", "test/haml/templates/_text_area.haml", "test/haml/engine_test.rb", "test/test_helper.rb", "test/rails", "extra/haml-mode.el", "extra/sass-mode.el", "Rakefile", "init.rb", "FAQ", "MIT-LICENSE", "VERSION", "README.rdoc", "REVISION"]
-  s.has_rdoc = true
-  s.homepage = %q{http://haml.hamptoncatlin.com/}
-  s.rdoc_options = ["--title", "Haml", "--main", "README.rdoc", "--exclude", "lib/haml/buffer.rb", "--line-numbers", "--inline-source"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{haml}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An elegant, structured XHTML/XML templating engine. Comes with Sass, a similar CSS templating engine.}
-  s.test_files = ["test/sass/css2sass_test.rb", "test/sass/engine_test.rb", "test/sass/plugin_test.rb", "test/haml/html2haml_test.rb", "test/haml/template_test.rb", "test/haml/helper_test.rb", "test/haml/engine_test.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/highline-1.5.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/highline-1.5.0.gemspec
deleted file mode 100644
index 3f65b0d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/highline-1.5.0.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{highline}
-  s.version = "1.5.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["James Edward Gray II"]
-  s.date = %q{2008-11-04}
-  s.description = %q{A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.}
-  s.email = %q{james at grayproductions.net}
-  s.extra_rdoc_files = ["README", "INSTALL", "TODO", "CHANGELOG", "LICENSE"]
-  s.files = ["examples/ansi_colors.rb", "examples/asking_for_arrays.rb", "examples/basic_usage.rb", "examples/color_scheme.rb", "examples/menus.rb", "examples/overwrite.rb", "examples/page_and_wrap.rb", "examples/password.rb", "examples/trapping_eof.rb", "examples/using_readline.rb", "lib/highline/color_scheme.rb", "lib/highline/import.rb", "lib/highline/menu.rb", "lib/highline/question.rb", "lib/highline/system_extensions.rb", "lib/highline.rb", "test/tc_color_scheme.rb", "test/tc_highline.rb", "test/tc_import.rb", "test/tc_menu.rb", "test/ts_all.rb", "Rakefile", "setup.rb", "README", "INSTALL", "TODO", "CHANGELOG", "LICENSE"]
-  s.has_rdoc = true
-  s.homepage = %q{http://highline.rubyforge.org}
-  s.rdoc_options = ["--title", "HighLine Documentation", "--main", "README"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{highline}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{HighLine is a high-level command-line IO library.}
-  s.test_files = ["test/ts_all.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hoe-1.10.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hoe-1.10.0.gemspec
deleted file mode 100644
index 0538a90..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hoe-1.10.0.gemspec
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{hoe}
-  s.version = "1.10.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu\nZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB\nGRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE\nAwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS\nJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda\nb9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx\ntaCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT\noOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh\nGiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt\nqhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV\ngBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw\nHQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB\nAQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m\nvzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/\nw6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0\nl1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl\nn0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T\nFBHgymkyj/AOSqKRIpXPhjC6\n-----END CERTIFICATE-----\n"]
-  s.date = %q{2009-03-09}
-  s.default_executable = %q{sow}
-  s.description = %q{Hoe is a simple rake/rubygems helper for project Rakefiles. It generates all the usual tasks for projects including rdoc generation, testing, packaging, and deployment.  Tasks Provided:  * announce          - Create news email file and post to rubyforge. * audit             - Run ZenTest against the package. * check_extra_deps  - Install missing dependencies. * check_manifest    - Verify the manifest. * clean             - Clean up all the extras. * config_hoe        - Create a fresh ~/.hoerc file. * debug_gem         - Show information about the gem. * default           - Run the default task(s). * deps:email        - Print a contact list for gems dependent on this gem * deps:fetch        - Fetch all the dependent gems of this gem into tarballs * deps:list         - List all the dependent gems of this gem * docs              - Build the docs HTML Files * email             - Generate email announcement file. * flay              - Analyze for code duplication. * flog              - Analyze code complexity. * gem               - Build the gem file hoe-1.9.0.gem * generate_key      - Generate a key for signing your gems. * install_gem       - Install the package as a gem. * multi             - Run the test suite using multiruby. * package           - Build all the packages * post_blog         - Post announcement to blog. * post_news         - Post announcement to rubyforge. * publish_docs      - Publish RDoc to RubyForge. * rcov              - Analyze code coverage with tests * release           - Package and upload the release to rubyforge. * ridocs            - Generate ri locally for testing. * tasks             - Generate a list of tasks for doco. * test              - Run the test suite. * test_deps         - Show which test files fail when run alone.  See class rdoc for help. Hint: ri Hoe}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.executables = ["sow"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/sow", "lib/hoe.rb", "template/.autotest.erb", "template/History.txt.erb", "template/Manifest.txt.erb", "template/README.txt.erb", "template/Rakefile.erb", "template/bin/file_name.erb", "template/lib/file_name.rb.erb", "template/test/test_file_name.rb.erb", "test/test_hoe.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/seattlerb/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{seattlerb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Hoe is a simple rake/rubygems helper for project Rakefiles}
-  s.test_files = ["test/test_hoe.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<rubyforge>, [">= 1.0.3"])
-      s.add_runtime_dependency(%q<rake>, [">= 0.8.4"])
-    else
-      s.add_dependency(%q<rubyforge>, [">= 1.0.3"])
-      s.add_dependency(%q<rake>, [">= 0.8.4"])
-    end
-  else
-    s.add_dependency(%q<rubyforge>, [">= 1.0.3"])
-    s.add_dependency(%q<rake>, [">= 0.8.4"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hpricot-0.6.164-x86-mswin32.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hpricot-0.6.164-x86-mswin32.gemspec
deleted file mode 100644
index 4b04523..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/hpricot-0.6.164-x86-mswin32.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{hpricot}
-  s.version = "0.6.164"
-  s.platform = %q{mswin32}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["why the lucky stiff"]
-  s.date = %q{2008-10-30}
-  s.description = %q{a swift, liberal HTML parser with a fantastic library}
-  s.email = %q{why at ruby-lang.org}
-  s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
-  s.files = ["CHANGELOG", "COPYING", "README", "Rakefile", "test/test_paths.rb", "test/test_preserved.rb", "test/test_parser.rb", "test/files", "test/files/cy0.html", "test/files/pace_application.html", "test/files/basic.xhtml", "test/files/utf8.html", "test/files/boingboing.html", "test/files/week9.html", "test/files/tenderlove.html", "test/files/immob.html", "test/files/why.xml", "test/files/uswebgen.html", "test/load_files.rb", "test/test_builder.rb", "test/test_xml.rb", "test/test_alter.rb", "lib/hpricot", "lib/hpricot/tags.rb", "lib/hpricot/builder.rb", "lib/hpricot/traverse.rb", "lib/hpricot/elements.rb", "lib/hpricot/modules.rb", "lib/hpricot/inspect.rb", "lib/hpricot/tag.rb", "lib/hpricot/blankslate.rb", "lib/hpricot/xchar.rb", "lib/hpricot/htmlinfo.rb", "lib/hpricot/parse.rb", "lib/hpricot.rb", "extras/mingw-rbconfig.rb", "ext/hpricot_scan/hpricot_scan.h", "ext/hpricot_scan/hpricot_gram.h", "ext/hpricot_scan/HpricotScanService.java", "ext/fast_xs/FastXsService.java", "ext/hpricot_scan/hpricot_scan.c", "ext/hpricot_scan/hpricot_gram.c", "ext/fast_xs/fast_xs.c", "ext/hpricot_scan/test.rb", "ext/hpricot_scan/extconf.rb", "ext/fast_xs/extconf.rb", "ext/hpricot_scan/hpricot_scan.rl", "ext/hpricot_scan/hpricot_scan.java.rl", "ext/hpricot_scan/hpricot_common.rl", "lib/hpricot_scan.so", "lib/fast_xs.so"]
-  s.has_rdoc = true
-  s.homepage = %q{http://code.whytheluckystiff.net/hpricot/}
-  s.rdoc_options = ["--quiet", "--title", "The Hpricot Reference", "--main", "README", "--inline-source"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{hobix}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{a swift, liberal HTML parser with a fantastic library}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/json_pure-1.1.3.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/json_pure-1.1.3.gemspec
deleted file mode 100644
index 37b76d7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/json_pure-1.1.3.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{json_pure}
-  s.version = "1.1.3"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Florian Frank"]
-  s.date = %q{2008-07-10}
-  s.default_executable = %q{edit_json.rb}
-  s.description = %q{}
-  s.email = %q{flori at ping.de}
-  s.executables = ["edit_json.rb"]
-  s.files = ["install.rb", "lib", "lib/json.rb", "lib/json", "lib/json/Array.xpm", "lib/json/FalseClass.xpm", "lib/json/json.xpm", "lib/json/editor.rb", "lib/json/Hash.xpm", "lib/json/Key.xpm", "lib/json/common.rb", "lib/json/String.xpm", "lib/json/pure", "lib/json/pure/generator.rb", "lib/json/pure/parser.rb", "lib/json/Numeric.xpm", "lib/json/ext.rb", "lib/json/pure.rb", "lib/json/NilClass.xpm", "lib/json/add", "lib/json/add/rails.rb", "lib/json/add/core.rb", "lib/json/TrueClass.xpm", "lib/json/version.rb", "ext", "ext/json", "ext/json/ext", "ext/json/ext/parser", "ext/json/ext/parser/unicode.h", "ext/json/ext/parser/parser.c", "ext/json/ext/parser/extconf.rb", "ext/json/ext/parser/unicode.c", "ext/json/ext/parser/parser.rl", "ext/json/ext/generator", "ext/json/ext/generator/unicode.h", "ext/json/ext/generator/extconf.rb", "ext/json/ext/generator/generator.c", "ext/json/ext/generator/unicode.c", "README", "diagrams", "CHANGES", "RUBY", "TODO", "VERSION", "tests", "tests/test_json.rb", "tests/test_json_addition.rb", "tests/fixtures", "tests/fixtures/fail11.json", "tests/fixtures/fail5.json", "tests/fixtures/fail10.json", "tests/fixtures/fail3.json", "tests/fixtures/pass15.json", "tests/fixtures/fail9.json", "tests/fixtures/fail22.json", "tests/fixtures/fail6.json", "tests/fixtures/pass2.json", "tests/fixtures/fail20.json", "tests/fixtures/fail19.json", "tests/fixtures/fail12.json", "tests/fixtures/fail7.json", "tests/fixtures/fail4.json", "tests/fixtures/fail1.json", "tests/fixtures/fail24.json", "tests/fixtures/fail21.json", "tests/fixtures/pass1.json", "tests/fixtures/fail2.json", "tests/fixtures/fail25.json", "tests/fixtures/pass16.json", "tests/fixtures/pass3.json", "tests/fixtures/fail18.json", "tests/fixtures/fail28.json", "tests/fixtures/fail13.json", "tests/fixtures/fail27.json", "tests/fixtures/pass17.json", "tests/fixtures/pass26.json", "tests/fixtures/fail23.json", "tests/fixtures/fail14.json", "tests/fixtures/fail8.json", "tests/runner.rb", "tests/test_json_generate.rb", "tests/test_json_rails.rb", "tests/test_json_unicode.rb", "tests/test_json_fixtures.rb", "benchmarks", "benchmarks/benchmark_parser.rb", "benchmarks/benchmark_generator.rb", "benchmarks/benchmark_rails.rb", "benchmarks/benchmark.txt", "Rakefile", "GPL", "data", "data/example.json", "data/index.html", "data/prototype.js", "bin", "bin/edit_json.rb", "bin/prettify_json.rb", "tools", "tools/fuzz.rb", "tools/server.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://json.rubyforge.org}
-  s.rdoc_options = ["--title", "JSON -- A JSON implemention", "--main", "JSON", "--line-numbers"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{json}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A JSON implementation in Ruby}
-  s.test_files = ["tests/runner.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/log4r-1.0.5.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/log4r-1.0.5.gemspec
deleted file mode 100644
index 3689b8a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/log4r-1.0.5.gemspec
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{log4r}
-  s.version = "1.0.5"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.autorequire = %q{log4r}
-  s.bindir = nil
-  s.cert_chain = nil
-  s.date = %q{2004-03-17}
-  s.description = %q{Log4r is a comprehensive and flexible logging library written in Ruby for use in Ruby programs. It features a heiarchial logging system of any number of levels, custom level names, logger inheritance, multiple output destinations per log event, execution tracing, custom formatting, thread safteyness, XML and YAML configuration, and more.}
-  s.email = %q{leon(at)ugcs.caltech.edu}
-  s.files = ["doc/rdoc", "doc/log4r.css", "doc/images", "doc/contact.html", "doc/contribute.html", "doc/index.html", "doc/license.html", "doc/manual.html", "doc/rdoc/created.rid", "doc/rdoc/rdoc-style.css", "doc/rdoc/files", "doc/rdoc/classes", "doc/rdoc/fr_file_index.html", "doc/rdoc/fr_class_index.html", "doc/rdoc/fr_method_index.html", "doc/rdoc/index.html", "doc/rdoc/blank.html", "doc/rdoc/files/log4r_rb.html", "doc/rdoc/files/log4r", "doc/rdoc/files/log4r/outputter", "doc/rdoc/files/log4r/yamlconfigurator_rb.html", "doc/rdoc/files/log4r/logserver_rb.html", "doc/rdoc/files/log4r/logger_rb.html", "doc/rdoc/files/log4r/configurator_rb.html", "doc/rdoc/files/log4r/formatter", "doc/rdoc/files/log4r/outputter/syslogoutputter_rb.html", "doc/rdoc/files/log4r/outputter/outputter_rb.html", "doc/rdoc/files/log4r/outputter/emailoutputter_rb.html", "doc/rdoc/files/log4r/outputter/datefileoutputter_rb.html", "doc/rdoc/files/log4r/formatter/patternformatter_rb.html", "doc/rdoc/files/log4r/formatter/formatter_rb.html", "doc/rdoc/classes/Log4r", "doc/rdoc/classes/Log4r.html", "doc/rdoc/classes/Log4r/LogEvent.src", "doc/rdoc/classes/Log4r/StderrOutputter.src", "doc/rdoc/classes/Log4r/Configurator.src", "doc/rdoc/classes/Log4r/StdoutOutputter.src", "doc/rdoc/classes/Log4r/ObjectFormatter.src", "doc/rdoc/classes/Log4r/DateFileOutputter.src", "doc/rdoc/classes/Log4r/FileOutputter.src", "doc/rdoc/classes/Log4r/RemoteOutputter.src", "doc/rdoc/classes/Log4r/Outputter.src", "doc/rdoc/classes/Log4r/SimpleFormatter.src", "doc/rdoc/classes/Log4r/YamlConfigurator.src", "doc/rdoc/classes/Log4r/Log4rTools.src", "doc/rdoc/classes/Log4r/RootLogger.src", "doc/rdoc/classes/Log4r/LogServer.src", "doc/rdoc/classes/Log4r/PatternFormatter.src", "doc/rdoc/classes/Log4r/EmailOutputter.src", "doc/rdoc/classes/Log4r/IOOutputter.src", "doc/rdoc/classes/Log4r/Logger.src", "doc/rdoc/classes/Log4r/RollingFileOutputter.src", "doc/rdoc/classes/Log4r/SyslogOutputter.src", "doc/rdoc/classes/Log4r/BasicFormatter.src", "doc/rdoc/classes/Log4r/Formatter.src", "doc/rdoc/classes/Log4r/LogEvent.html", "doc/rdoc/classes/Log4r/StderrOutputter.html", "doc/rdoc/classes/Log4r/DefaultFormatter.html", "doc/rdoc/classes/Log4r/Configurator.html", "doc/rdoc/classes/Log4r/StdoutOutputter.html", "doc/rdoc/classes/Log4r/ObjectFormatter.html", "doc/rdoc/classes/Log4r/DateFileOutputter.html", "doc/rdoc/classes/Log4r/FileOutputter.html", "doc/rdoc/classes/Log4r/RemoteOutputter.html", "doc/rdoc/classes/Log4r/Outputter.html", "doc/rdoc/classes/Log4r/SimpleFormatter.html", "doc/rdoc/classes/Log4r/YamlConfigurator.html", "doc/rdoc/classes/Log4r/ConfigError.html", "doc/rdoc/classes/Log4r/Log4rTools.html", "doc/rdoc/classes/Log4r/RootLogger.html", "doc/rdoc/classes/Log4r/LogServer.html", "doc/rdoc/classes/Log4r/PatternFormatter.html", "doc/rdoc/classes/Log4r/EmailOutputter.html", "doc/rdoc/classes/Log4r/IOOutputter.html", "doc/rdoc/classes/Log4r/Logger.html", "doc/rdoc/classes/Log4r/RollingFileOutputter.html", "doc/rdoc/classes/Log4r/SyslogOutputter.html", "doc/rdoc/classes/Log4r/BasicFormatter.html", "doc/rdoc/classes/Log4r/Formatter.html", "doc/rdoc/classes/Log4r/LogEvent.src/M000001.html", "doc/rdoc/classes/Log4r/StderrOutputter.src/M000002.html", "doc/rdoc/classes/Log4r/Configurator.src/M000003.html", "doc/rdoc/classes/Log4r/Configurator.src/M000004.html", "doc/rdoc/classes/Log4r/Configurator.src/M000005.html", "doc/rdoc/classes/Log4r/Configurator.src/M000006.html", "doc/rdoc/classes/Log4r/Configurator.src/M000007.html", "doc/rdoc/classes/Log4r/StdoutOutputter.src/M000008.html", "doc/rdoc/classes/Log4r/ObjectFormatter.src/M000009.html", "doc/rdoc/classes/Log4r/DateFileOutputter.src/M000010.html", "doc/rdoc/classes/Log4r/FileOutputter.src/M000011.html", "doc/rdoc/classes/Log4r/RemoteOutputter.src/M000012.html", "doc/rdoc/classes/Log4r/RemoteOutputter.src/M000013.html", "doc/rdoc/classes/Log4r/RemoteOutputter.src/M000014.html", "doc/rdoc/classes/Log4r/Outputter.src/M000015.html", "doc/rdoc/classes/Log4r/Outputter.src/M000016.html", "doc/rdoc/classes/Log4r/Outputter.src/M000017.html", "doc/rdoc/classes/Log4r/Outputter.src/M000018.html", "doc/rdoc/classes/Log4r/Outputter.src/M000019.html", "doc/rdoc/classes/Log4r/Outputter.src/M000020.html", "doc/rdoc/classes/Log4r/Outputter.src/M000021.html", "doc/rdoc/classes/Log4r/Outputter.src/M000022.html", "doc/rdoc/classes/Log4r/Outputter.src/M000023.html", "doc/rdoc/classes/Log4r/Outputter.src/M000024.html", "doc/rdoc/classes/Log4r/Outputter.src/M000025.html", "doc/rdoc/classes/Log4r/SimpleFormatter.src/M000026.html", "doc/rdoc/classes/Log4r/YamlConfigurator.src/M000027.html", "doc/rdoc/classes/Log4r/YamlConfigurator.src/M000028.html", "doc/rdoc/classes/Log4r/YamlConfigurator.src/M000029.html", "doc/rdoc/classes/Log4r/YamlConfigurator.src/M000030.html", "doc/rdoc/classes/Log4r/YamlConfigurator.src/M000031.html", "doc/rdoc/classes/Log4r/Log4rTools.src/M000032.html", "doc/rdoc/classes/Log4r/Log4rTools.src/M000033.html", "doc/rdoc/classes/Log4r/Log4rTools.src/M000034.html", "doc/rdoc/classes/Log4r/Log4rTools.src/M000035.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000036.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000037.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000038.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000039.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000040.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000041.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000042.html", "doc/rdoc/classes/Log4r/RootLogger.src/M000043.html", "doc/rdoc/classes/Log4r/LogServer.src/M000044.html", "doc/rdoc/classes/Log4r/LogServer.src/M000045.html", "doc/rdoc/classes/Log4r/PatternFormatter.src/M000046.html", "doc/rdoc/classes/Log4r/EmailOutputter.src/M000047.html", "doc/rdoc/classes/Log4r/EmailOutputter.src/M000048.html", "doc/rdoc/classes/Log4r/IOOutputter.src/M000049.html", "doc/rdoc/classes/Log4r/IOOutputter.src/M000050.html", "doc/rdoc/classes/Log4r/IOOutputter.src/M000051.html", "doc/rdoc/classes/Log4r/Logger.src/M000052.html", "doc/rdoc/classes/Log4r/Logger.src/M000053.html", "doc/rdoc/classes/Log4r/Logger.src/M000054.html", "doc/rdoc/classes/Log4r/Logger.src/M000055.html", "doc/rdoc/classes/Log4r/Logger.src/M000056.html", "doc/rdoc/classes/Log4r/Logger.src/M000057.html", "doc/rdoc/classes/Log4r/Logger.src/M000058.html", "doc/rdoc/classes/Log4r/Logger.src/M000059.html", "doc/rdoc/classes/Log4r/Logger.src/M000060.html", "doc/rdoc/classes/Log4r/Logger.src/M000061.html", "doc/rdoc/classes/Log4r/Logger.src/M000062.html", "doc/rdoc/classes/Log4r/Logger.src/M000063.html", "doc/rdoc/classes/Log4r/Logger.src/M000064.html", "doc/rdoc/classes/Log4r/Logger.src/M000065.html", "doc/rdoc/classes/Log4r/Logger.src/M000066.html", "doc/rdoc/classes/Log4r/Logger.src/M000067.html", "doc/rdoc/classes/Log4r/Logger.src/M000068.html", "doc/rdoc/classes/Log4r/RollingFileOutputter.src/M000069.html", "doc/rdoc/classes/Log4r/SyslogOutputter.src/M000070.html", "doc/rdoc/classes/Log4r/SyslogOutputter.src/M000071.html", "doc/rdoc/classes/Log4r/SyslogOutputter.src/M000072.html", "doc/rdoc/classes/Log4r/BasicFormatter.src/M000073.html", "doc/rdoc/classes/Log4r/BasicFormatter.src/M000074.html", "doc/rdoc/classes/Log4r/BasicFormatter.src/M000075.html", "doc/rdoc/classes/Log4r/Formatter.src/M000076.html", "doc/rdoc/classes/Log4r/Formatter.src/M000077.html", "doc/images/crush", "doc/images/log4r-logo.png", "doc/images/logo2.png", "doc/images/crush/logo2.png", "examples/fileroll.rb", "examples/README", "examples/logs", "examples/customlevels.rb", "examples/log4r_yaml.yaml", "examples/logclient.rb", "examples/logserver.rb", "examples/moderate.xml", "examples/moderateconfig.rb", "examples/myformatter.rb", "examples/outofthebox.rb", "examples/rrconfig.xml", "examples/rrsetup.rb", "examples/simpleconfig.rb", "examples/xmlconfig.rb", "examples/yaml.rb", "src/log4r", "src/log4r.rb", "src/log4r/config.rb", "src/log4r/base.rb", "src/log4r/formatter", "src/log4r/configurator.rb", "src/log4r/logevent.rb", "src/log4r/logger.rb", "src/log4r/loggerfactory.rb", "src/log4r/logserver.rb", "src/log4r/repository.rb", "src/log4r/staticlogger.rb", "src/log4r/yamlconfigurator.rb", "src/log4r/lib", "src/log4r/outputter", "src/log4r/rdoc", "src/log4r/formatter/formatter.rb", "src/log4r/formatter/patternformatter.rb", "src/log4r/lib/drbloader.rb", "src/log4r/lib/xmlloader.rb", "src/log4r/outputter/consoleoutputters.rb", "src/log4r/outputter/datefileoutputter.rb", "src/log4r/outputter/emailoutputter.rb", "src/log4r/outputter/fileoutputter.rb", "src/log4r/outputter/iooutputter.rb", "src/log4r/outputter/outputter.rb", "src/log4r/outputter/outputterfactory.rb", "src/log4r/outputter/remoteoutputter.rb", "src/log4r/outputter/rollingfileoutputter.rb", "src/log4r/outputter/staticoutputter.rb", "src/log4r/outputter/syslogoutputter.rb", "src/log4r/rdoc/configurator", "src/log4r/rdoc/emailoutputter", "src/log4r/rdoc/formatter", "src/log4r/rdoc/log4r", "src/log4r/rdoc/logger", "src/log4r/rdoc/logserver", "src/log4r/rdoc/outputter", "src/log4r/rdoc/patternformatter", "src/log4r/rdoc/syslogoutputter", "src/log4r/rdoc/yamlconfigurator", "tests/junk", "tests/xml", "tests/include.rb", "tests/runtest.rb", "tests/testbase.rb", "tests/testcustom.rb", "tests/testdefault.rb", "tests/testformatter.rb", "tests/testlogger.rb", "tests/testoutputter.rb", "tests/testpatternformatter.rb", "tests/testxmlconf.rb", "tests/xml/testconf.xml"]
-  s.has_rdoc = true
-  s.homepage = %q{http://log4r.sourceforge.net}
-  s.require_paths = ["src"]
-  s.required_ruby_version = nil
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Log4r is a comprehensive and flexible logging library for Ruby.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = -1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mailfactory-1.4.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mailfactory-1.4.0.gemspec
deleted file mode 100644
index 81c438a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mailfactory-1.4.0.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{mailfactory}
-  s.version = "1.4.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Powers"]
-  s.date = %q{2008-08-06}
-  s.description = %q{MailFactory is s simple module for producing RFC compliant mail that can include multiple attachments, multiple body parts, and arbitrary headers}
-  s.email = %q{david at grayskies.net}
-  s.files = ["./lib/mailfactory.rb", "./tests/test_mailfactory.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://mailfactory.rubyforge.org}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{mailfactory}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{MailFactory is a pure-ruby MIME mail generator}
-  s.test_files = ["./tests/test_mailfactory.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<mime-types>, [">= 1.13.1"])
-    else
-      s.add_dependency(%q<mime-types>, [">= 1.13.1"])
-    end
-  else
-    s.add_dependency(%q<mime-types>, [">= 1.13.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/markaby-0.5.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/markaby-0.5.gemspec
deleted file mode 100644
index 9904276..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/markaby-0.5.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{markaby}
-  s.version = "0.5"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Tim Fletcher and _why"]
-  s.cert_chain = nil
-  s.date = %q{2006-10-02}
-  s.extra_rdoc_files = ["README"]
-  s.files = ["README", "Rakefile", "setup.rb", "test/test_markaby.rb", "lib/markaby", "lib/markaby.rb", "lib/markaby/metaid.rb", "lib/markaby/tags.rb", "lib/markaby/builder.rb", "lib/markaby/cssproxy.rb", "lib/markaby/rails.rb", "lib/markaby/template.rb", "tools/rakehelp.rb"]
-  s.has_rdoc = true
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Markup as Ruby, write HTML in your native Ruby tongue}
-  s.test_files = ["test/test_markaby.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<builder>, [">= 2.0.0"])
-    else
-      s.add_dependency(%q<builder>, [">= 2.0.0"])
-    end
-  else
-    s.add_dependency(%q<builder>, [">= 2.0.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-action-args-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-action-args-1.1.gemspec
deleted file mode 100644
index 5b54d10..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-action-args-1.1.gemspec
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-action-args}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Yehuda Katz"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides support for ActionArgs}
-  s.email = %q{ykatz at engineyard.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-action-args.rb", "lib/merb-action-args", "lib/merb-action-args/vm_args.rb", "lib/merb-action-args/get_args.rb", "lib/merb-action-args/abstract_controller.rb", "lib/merb-action-args/mri_args.rb", "lib/merb-action-args/jruby_args.rb", "spec/controllers", "spec/controllers/action-args.rb", "spec/action_args_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides support for ActionArgs}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_runtime_dependency(%q<ruby2ruby>, [">= 1.1.9"])
-      s.add_runtime_dependency(%q<ParseTree>, [">= 2.1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_dependency(%q<ruby2ruby>, [">= 1.1.9"])
-      s.add_dependency(%q<ParseTree>, [">= 2.1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-    s.add_dependency(%q<ruby2ruby>, [">= 1.1.9"])
-    s.add_dependency(%q<ParseTree>, [">= 2.1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-assets-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-assets-1.1.gemspec
deleted file mode 100644
index 3e1a0f0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-assets-1.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-assets}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ezra Zygmuntowicz"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides the helpers for assets and asset bundling}
-  s.email = %q{ez at engineyard.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-assets.rb", "lib/merb-assets", "lib/merb-assets/assets_mixin.rb", "lib/merb-assets/assets.rb", "spec/merb-assets_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides the helpers for assets and asset bundling}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-1.1.gemspec
deleted file mode 100644
index 6995220..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-1.1.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-auth}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel Neighman"]
-  s.date = %q{2009-02-23}
-  s.description = %q{merb-auth.  The official authentication plugin for merb.  Setup for the default stack}
-  s.email = %q{has.sox at gmail.com}
-  s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "lib/merb-auth.rb"]
-  s.homepage = %q{http://www.merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb-auth}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{merb-auth.  The official authentication plugin for merb.  Setup for the default stack}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, ["~> 1.1"])
-      s.add_runtime_dependency(%q<merb-auth-core>, ["~> 1.1"])
-      s.add_runtime_dependency(%q<merb-auth-more>, ["~> 1.1"])
-      s.add_runtime_dependency(%q<merb-auth-slice-password>, ["~> 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, ["~> 1.1"])
-      s.add_dependency(%q<merb-auth-core>, ["~> 1.1"])
-      s.add_dependency(%q<merb-auth-more>, ["~> 1.1"])
-      s.add_dependency(%q<merb-auth-slice-password>, ["~> 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, ["~> 1.1"])
-    s.add_dependency(%q<merb-auth-core>, ["~> 1.1"])
-    s.add_dependency(%q<merb-auth-more>, ["~> 1.1"])
-    s.add_dependency(%q<merb-auth-slice-password>, ["~> 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-core-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-core-1.1.gemspec
deleted file mode 100644
index 15ca039..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-core-1.1.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-auth-core}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Adam French, Daniel Neighman"]
-  s.date = %q{2009-02-16}
-  s.description = %q{An Authentication framework for Merb}
-  s.email = %q{has.sox at gmail.com}
-  s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "lib/merb-auth-core", "lib/merb-auth-core/bootloader.rb", "lib/merb-auth-core/authentication.rb", "lib/merb-auth-core/responses.rb", "lib/merb-auth-core/authenticated_helper.rb", "lib/merb-auth-core/session_mixin.rb", "lib/merb-auth-core/customizations.rb", "lib/merb-auth-core/strategy.rb", "lib/merb-auth-core/router_helper.rb", "lib/merb-auth-core/errors.rb", "lib/merb-auth-core/callbacks.rb", "lib/merb-auth-core/merbtasks.rb", "lib/merb-auth-core.rb", "spec/merb-auth-core", "spec/merb-auth-core/merb-auth-core_spec.rb", "spec/merb-auth-core/activation_fixture.rb", "spec/merb-auth-core/router_helper_spec.rb", "spec/merb-auth-core/authentication_spec.rb", "spec/merb-auth-core/callbacks_spec.rb", "spec/merb-auth-core/strategy_spec.rb", "spec/merb-auth-core/errors_spec.rb", "spec/merb-auth-core/failed_login_spec.rb", "spec/merb-auth-core/customizations_spec.rb", "spec/helpers", "spec/helpers/authentication_helper_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com/}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An Authentication framework for Merb}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, ["~> 1.1"])
-      s.add_runtime_dependency(%q<extlib>, [">= 0"])
-    else
-      s.add_dependency(%q<merb-core>, ["~> 1.1"])
-      s.add_dependency(%q<extlib>, [">= 0"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, ["~> 1.1"])
-    s.add_dependency(%q<extlib>, [">= 0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-more-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-more-1.1.gemspec
deleted file mode 100644
index 532099e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-more-1.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-auth-more}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel Neighman"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Additional resources for use with the merb-auth-core authentication framework.}
-  s.email = %q{has.sox at gmail.com}
-  s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "lib/merb-auth-more", "lib/merb-auth-more/mixins", "lib/merb-auth-more/mixins/redirect_back.rb", "lib/merb-auth-more/mixins/salted_user.rb", "lib/merb-auth-more/mixins/salted_user", "lib/merb-auth-more/mixins/salted_user/ar_salted_user.rb", "lib/merb-auth-more/mixins/salted_user/dm_salted_user.rb", "lib/merb-auth-more/mixins/salted_user/relaxdb_salted_user.rb", "lib/merb-auth-more/mixins/salted_user/sq_salted_user.rb", "lib/merb-auth-more/strategies", "lib/merb-auth-more/strategies/abstract_password.rb", "lib/merb-auth-more/strategies/basic", "lib/merb-auth-more/strategies/basic/password_form.rb", "lib/merb-auth-more/strategies/basic/basic_auth.rb", "lib/merb-auth-more/strategies/basic/openid.rb", "lib/merb-auth-more/merbtasks.rb", "lib/merb-auth-more.rb", "spec/mixins", "spec/mixins/redirect_back_spec.rb", "spec/mixins/salted_user_spec.rb", "spec/spec_helper.rb", "spec/merb-auth-more_spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com/}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Additional resources for use with the merb-auth-core authentication framework.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-auth-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-auth-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-auth-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-slice-password-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-slice-password-1.1.gemspec
deleted file mode 100644
index a5d4657..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-auth-slice-password-1.1.gemspec
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-auth-slice-password}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel Neighman"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb Slice that provides UI for password strategy of merb-auth.}
-  s.email = %q{has.sox at gmail.com}
-  s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "lib/merb-auth-slice-password.rb", "lib/merb-auth-slice-password", "lib/merb-auth-slice-password/spectasks.rb", "lib/merb-auth-slice-password/slicetasks.rb", "lib/merb-auth-slice-password/merbtasks.rb", "spec/merb-auth-slice-password_spec.rb", "spec/spec_helper.rb", "app/controllers", "app/controllers/application.rb", "app/controllers/exceptions.rb", "app/controllers/sessions.rb", "app/views", "app/views/exceptions", "app/views/exceptions/unauthenticated.html.erb", "app/views/layout", "app/views/layout/merb-auth-slice-password.html.erb", "app/helpers", "app/helpers/application_helper.rb", "public/stylesheets", "public/stylesheets/master.css", "public/javascripts", "public/javascripts/master.js", "stubs/app", "stubs/app/controllers", "stubs/app/controllers/sessions.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com/}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb Slice that provides UI for password strategy of merb-auth.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-slices>, [">= 1.1"])
-      s.add_runtime_dependency(%q<merb-auth-core>, [">= 1.1"])
-      s.add_runtime_dependency(%q<merb-auth-more>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-slices>, [">= 1.1"])
-      s.add_dependency(%q<merb-auth-core>, [">= 1.1"])
-      s.add_dependency(%q<merb-auth-more>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-slices>, [">= 1.1"])
-    s.add_dependency(%q<merb-auth-core>, [">= 1.1"])
-    s.add_dependency(%q<merb-auth-more>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-cache-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-cache-1.1.gemspec
deleted file mode 100644
index 6884e4a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-cache-1.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-cache}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ben Burkert"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides caching (page, action, fragment, object)}
-  s.email = %q{ben at benburkert.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-cache", "lib/merb-cache/core_ext", "lib/merb-cache/core_ext/hash.rb", "lib/merb-cache/core_ext/enumerable.rb", "lib/merb-cache/merb_ext", "lib/merb-cache/merb_ext/controller.rb", "lib/merb-cache/cache_request.rb", "lib/merb-cache/cache.rb", "lib/merb-cache/stores", "lib/merb-cache/stores/strategy", "lib/merb-cache/stores/strategy/gzip_store.rb", "lib/merb-cache/stores/strategy/page_store.rb", "lib/merb-cache/stores/strategy/sha1_store.rb", "lib/merb-cache/stores/strategy/action_store.rb", "lib/merb-cache/stores/strategy/abstract_strategy_store.rb", "lib/merb-cache/stores/strategy/adhoc_store.rb", "lib/merb-cache/stores/fundamental", "lib/merb-cache/stores/fundamental/file_store.rb", "lib/merb-cache/stores/fundamental/abstract_store.rb", "lib/merb-cache/stores/fundamental/memcached_store.rb", "lib/merb-cache.rb", "spec/merb-cache", "spec/merb-cache/core_ext", "spec/merb-cache/core_ext/enumerable_spec.rb", "spec/merb-cache/core_ext/hash_spec.rb", "spec/merb-cache/merb_ext", "spec/merb-cache/merb_ext/controller_spec.rb", "spec/merb-cache/cache_request_spec.rb", "spec/merb-cache/cache_spec.rb", "spec/merb-cache/stores", "spec/merb-cache/stores/strategy", "spec/merb-cache/stores/strategy/gzip_store_spec.rb", "spec/merb-cache/stores/strategy/adhoc_store_spec.rb", "spec/merb-cache/stores/strategy/page_store_spec.rb", "spec/merb-cache/stores/strategy/action_store_spec.rb", "spec/merb-cache/stores/strategy/abstract_strategy_store_spec.rb", "spec/merb-cache/stores/strategy/sha1_store_spec.rb", "spec/merb-cache/stores/fundamental", "spec/merb-cache/stores/fundamental/file_store_spec.rb", "spec/merb-cache/stores/fundamental/memcached_store_spec.rb", "spec/merb-cache/stores/fundamental/abstract_store_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides caching (page, action, fragment, object)}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-core-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-core-1.1.gemspec
deleted file mode 100644
index 57e5220..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-core-1.1.gemspec
+++ /dev/null
@@ -1,60 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-core}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ezra Zygmuntowicz"]
-  s.date = %q{2009-02-16}
-  s.default_executable = %q{merb}
-  s.description = %q{Merb. Pocket rocket web framework.}
-  s.email = %q{ez at engineyard.com}
-  s.executables = ["merb"]
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "CHANGELOG", "PUBLIC_CHANGELOG", "CONTRIBUTORS", "bin/merb", "bin/merb-specs", "lib/merb-core.rb", "lib/merb-core", "lib/merb-core/test.rb", "lib/merb-core/server.rb", "lib/merb-core/logger.rb", "lib/merb-core/bootloader.rb", "lib/merb-core/constants.rb", "lib/merb-core/config.rb", "lib/merb-core/core_ext", "lib/merb-core/core_ext/hash.rb", "lib/merb-core/core_ext/kernel.rb", "lib/merb-core/core_ext/class.rb", "lib/merb-core/rack", "lib/merb-core/rack/middleware.rb", "lib/merb-core/rack/adapter", "lib/merb-core/rack/adapter/irb.rb", "lib/merb-core/rack/adapter/ebb.rb", "lib/merb-core/rack/adapter/fcgi.rb", "lib/merb-core/rack/adapter/mongrel.rb", "lib/merb-core/rack/adapter/swiftiplied_mongrel.rb", "lib/merb-core/rack/adapter/runner.rb", "lib/merb-core/rack/adapter/webrick.rb", "lib/merb-core/rack/adapter/thin.rb", "lib/merb-core/rack/adapter/evented_mongrel.rb", "lib/merb-core/rack/adapter/abstract.rb", "lib/merb-core/rack/adapter/thin_turbo.rb", "lib/merb-core/rack/application.rb", "lib/merb-core/rack/helpers.rb", "lib/merb-core/rack/handler", "lib/merb-core/rack/handler/mongrel.rb", "lib/merb-core/rack/adapter.rb", "lib/merb-core/rack/middleware", "lib/merb-core/rack/middleware/tracer.rb", "lib/merb-core/rack/middleware/content_length.rb", "lib/merb-core/rack/middleware/static.rb", "lib/merb-core/rack/middleware/profiler.rb", "lib/merb-core/rack/middleware/path_prefix.rb", "lib/merb-core/rack/middleware/conditional_get.rb", "lib/merb-core/rack/stream_wrapper.rb", "lib/merb-core/two-oh.rb", "lib/merb-core/controller", "lib/merb-core/controller/template.rb", "lib/merb-core/controller/exceptions.rb", "lib/merb-core/controller/mixins", "lib/merb-core/controller/mixins/authentication.rb", "lib/merb-core/controller/mixins/responder.rb", "lib/merb-core/controller/mixins/conditional_get.rb", "lib/merb-core/controller/mixins/controller.rb", "lib/merb-core/controller/mixins/render.rb", "lib/merb-core/controller/abstract_controller.rb", "lib/merb-core/controller/mime.rb", "lib/merb-core/controller/merb_controller.rb", "lib/merb-core/tasks", "lib/merb-core/tasks/gem_management.rb", "lib/merb-core/tasks/stats.rake", "lib/merb-core/tasks/merb_rake_helper.rb", "lib/merb-core/tasks/merb.rb", "lib/merb-core/tasks/audit.rake", "lib/merb-core/version.rb", "lib/merb-core/autoload.rb", "lib/merb-core/dispatch", "lib/merb-core/dispatch/router.rb", "lib/merb-core/dispatch/request_parsers.rb", "lib/merb-core/dispatch/router", "lib/merb-core/dispatch/router/route.rb", "lib/merb-core/dispatch/router/behavior.rb", "lib/merb-core/dispatch/router/resources.rb", "lib/merb-core/dispatch/router/cached_proc.rb", "lib/merb-core/dispatch/cookies.rb", "lib/merb-core/dispatch/request.rb", "lib/merb-core/dispatch/session.rb", "lib/merb-core/dispatch/worker.rb", "lib/merb-core/dispatch/dispatcher.rb", "lib/merb-core/dispatch/session", "lib/merb-core/dispatch/session/cookie.rb", "lib/merb-core/dispatch/session/memcached.rb", "lib/merb-core/dispatch/session/container.rb", "lib/merb-core/dispatch/session/store_container.rb", "lib/merb-core/dispatch/session/memory.rb", "lib/merb-core/dispatch/default_exception", "lib/merb-core/dispatch/default_exception/views", "lib/merb-core/dispatch/default_exception/views/_css.html.erb", "lib/merb-core/dispatch/default_exception/views/_javascript.html.erb", "lib/merb-core/dispatch/default_exception/views/index.html.erb", "lib/merb-core/dispatch/default_exception/default_exception.rb", "lib/merb-core/gem_ext", "lib/merb-core/gem_ext/erubis.rb", "lib/merb-core/rack.rb", "lib/merb-core/test", "lib/merb-core/test/matchers", "lib/merb-core/test/matchers/request_matchers.rb", "lib/merb-core/test/matchers/route_matchers.rb", "lib/merb-core/test/matchers/controller_matchers.rb", "lib/merb-core/test/tasks", "lib/merb-core/test/tasks/spectasks.rb", "lib/merb-core/test/helpers.rb", "lib/merb-core/test/test_ext", "lib/merb-core/test/test_ext/object.rb", "lib/merb-core/test/test_ext/string.rb", "lib/merb-core/test/test_ext/rspec.rb", "lib/merb-core/test/test_ext/hpricot.rb", "lib/merb-core/test/matchers.rb", "lib/merb-core/test/helpers", "lib/merb-core/test/helpers/controller_helper.rb", "lib/merb-core/test/helpers/mock_request_helper.rb", "lib/merb-core/test/helpers/route_helper.rb", "lib/merb-core/test/helpers/request_helper.rb", "lib/merb-core/test/helpers/multipart_request_helper.rb", "lib/merb-core/test/helpers/cookie_jar.rb", "lib/merb-core/test/run_specs.rb", "lib/merb-core/test/run_spec.rb", "lib/merb-core/core_ext.rb", "lib/merb-core/plugins.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
-  s.requirements = ["install the json gem to get faster json parsing"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb. Pocket rocket web framework.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<extlib>, [">= 0.9.8"])
-      s.add_runtime_dependency(%q<erubis>, [">= 2.6.2"])
-      s.add_runtime_dependency(%q<rake>, [">= 0"])
-      s.add_runtime_dependency(%q<json_pure>, [">= 0"])
-      s.add_runtime_dependency(%q<rspec>, [">= 0"])
-      s.add_runtime_dependency(%q<rack>, [">= 0"])
-      s.add_runtime_dependency(%q<mime-types>, [">= 0"])
-      s.add_runtime_dependency(%q<thor>, [">= 0.9.9"])
-      s.add_development_dependency(%q<webrat>, [">= 0.3.1"])
-    else
-      s.add_dependency(%q<extlib>, [">= 0.9.8"])
-      s.add_dependency(%q<erubis>, [">= 2.6.2"])
-      s.add_dependency(%q<rake>, [">= 0"])
-      s.add_dependency(%q<json_pure>, [">= 0"])
-      s.add_dependency(%q<rspec>, [">= 0"])
-      s.add_dependency(%q<rack>, [">= 0"])
-      s.add_dependency(%q<mime-types>, [">= 0"])
-      s.add_dependency(%q<thor>, [">= 0.9.9"])
-      s.add_dependency(%q<webrat>, [">= 0.3.1"])
-    end
-  else
-    s.add_dependency(%q<extlib>, [">= 0.9.8"])
-    s.add_dependency(%q<erubis>, [">= 2.6.2"])
-    s.add_dependency(%q<rake>, [">= 0"])
-    s.add_dependency(%q<json_pure>, [">= 0"])
-    s.add_dependency(%q<rspec>, [">= 0"])
-    s.add_dependency(%q<rack>, [">= 0"])
-    s.add_dependency(%q<mime-types>, [">= 0"])
-    s.add_dependency(%q<thor>, [">= 0.9.9"])
-    s.add_dependency(%q<webrat>, [">= 0.3.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-exceptions-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-exceptions-1.1.gemspec
deleted file mode 100644
index 4a250b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-exceptions-1.1.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-exceptions}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Andy Kent"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Email and web hook exceptions for Merb.}
-  s.email = %q{andy at new-bamboo.co.uk}
-  s.extra_rdoc_files = ["README.markdown", "LICENSE"]
-  s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/merb-exceptions.rb", "lib/merb-exceptions", "lib/merb-exceptions/exceptions_helper.rb", "lib/merb-exceptions/templates", "lib/merb-exceptions/templates/email.erb", "lib/merb-exceptions/default_exception_extensions.rb", "lib/merb-exceptions/notification.rb", "spec/default_exception_extensions_spec.rb", "spec/exceptions_helper_spec.rb", "spec/notification_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Email and web hook exceptions for Merb.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-gen-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-gen-1.1.gemspec
deleted file mode 100644
index 5bd2665..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-gen-1.1.gemspec
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-gen}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jonas Nicklas"]
-  s.date = %q{2009-02-16}
-  s.default_executable = %q{merb-gen}
-  s.description = %q{Generators suite for Merb.}
-  s.email = %q{jonas.nicklas at gmail.com}
-  s.executables = ["merb-gen"]
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-gen.rb", "lib/generators", "lib/generators/part_controller.rb", "lib/generators/merb", "lib/generators/merb/merb_stack.rb", "lib/generators/merb/merb_very_flat.rb", "lib/generators/merb/merb_core.rb", "lib/generators/merb/merb_flat.rb", "lib/generators/thor.rb", "lib/generators/model.rb", "lib/generators/migration.rb", "lib/generators/merb_plugin.rb", "lib/generators/templates", "lib/generators/templates/component", "lib/generators/templates/component/resource_controller", "lib/generators/templates/component/resource_controller/spec", "lib/generators/templates/component/resource_controller/spec/requests", "lib/generators/templates/component/resource_controller/spec/requests/%file_name%_spec.rb", "lib/generators/templates/component/resource_controller/app", "lib/generators/templates/component/resource_controller/app/controllers", "lib/generators/templates/component/resource_controller/app/controllers/%file_name%.rb", "lib/generators/templates/component/resource_controller/app/views", "lib/generators/templates/component/resource_controller/app/views/%file_name%", "lib/generators/templates/component/resource_controller/app/views/%file_name%/new.html.erb", "lib/generators/templates/component/resource_controller/app/views/%file_name%/index.html.erb", "lib/generators/templates/component/resource_controller/app/views/%file_name%/edit.html.erb", "lib/generators/templates/component/resource_controller/app/views/%file_name%/show.html.erb", "lib/generators/templates/component/resource_controller/test", "lib/generators/templates/component/resource_controller/test/controllers", "lib/generators/templates/component/resource_controller/test/controllers/%file_name%_test.rb", "lib/generators/templates/component/layout", "lib/generators/templates/component/layout/spec", "lib/generators/templates/component/layout/spec/views", "lib/generators/templates/component/layout/spec/views/layout", "lib/generators/templates/component/layout/spec/views/layout/%file_name%.html.erb_spec.rb", "lib/generators/templates/component/layout/app", "lib/generators/templates/component/layout/app/views", "lib/generators/templates/component/layout/app/views/layout", "lib/generators/templates/component/layout/app/views/layout/%file_name%.html.erb", "lib/generators/templates/component/controller", "lib/generators/templates/component/controller/spec", "lib/generators/templates/component/controller/spec/requests", "lib/generators/templates/component/controller/spec/requests/%file_name%_spec.rb", "lib/generators/templates/component/controller/app", "lib/generators/templates/component/controller/app/controllers", "lib/generators/templates/component/controller/app/controllers/%file_name%.rb", "lib/generators/templates/component/controller/app/views", "lib/generators/templates/component/controller/app/views/%file_name%", "lib/generators/templates/component/controller/app/views/%file_name%/index.html.erb", "lib/generators/templates/component/controller/test", "lib/generators/templates/component/controller/test/requests", "lib/generators/templates/component/controller/test/requests/%file_name%_test.rb", "lib/generators/templates/component/part_controller", "lib/generators/templates/component/part_controller/app", "lib/generators/templates/component/part_controller/app/parts", "lib/generators/templates/component/part_controller/app/parts/views", "lib/generators/templates/component/part_controller/app/parts/views/%file_name%_part", "lib/generators/templates/component/part_controller/app/parts/views/%file_name%_part/index.html.erb", "lib/generators/templates/component/part_controller/app/parts/%file_name%_part.rb", "lib/generators/templates/component/helper", "lib/generators/templates/component/helper/app", "lib/generators/templates/component/helper/app/helpers", "lib/generators/templates/component/helper/app/helpers/%file_name%_helper.rb", "lib/generators/templates/component/model", "lib/generators/templates/component/model/spec", "lib/generators/templates/component/model/spec/models", "lib/generators/templates/component/model/spec/models/%file_name%_spec.rb", "lib/generators/templates/component/model/app", "lib/generators/templates/component/model/app/models", "lib/generators/templates/component/model/app/models/%file_name%.rb", "lib/generators/templates/component/model/test", "lib/generators/templates/component/model/test/models", "lib/generators/templates/component/model/test/models/%file_name%_test.rb", "lib/generators/templates/application", "lib/generators/templates/application/merb_plugin", "lib/generators/templates/application/merb_plugin/LICENSE", "lib/generators/templates/application/merb_plugin/TODO", "lib/generators/templates/application/merb_plugin/README", "lib/generators/templates/application/merb_plugin/lib", "lib/generators/templates/application/merb_plugin/lib/%base_name%.rb", "lib/generators/templates/application/merb_plugin/lib/%base_name%", "lib/generators/templates/application/merb_plugin/lib/%base_name%/merbtasks.rb", "lib/generators/templates/application/merb_plugin/spec", "lib/generators/templates/application/merb_plugin/spec/%base_name%_spec.rb", "lib/generators/templates/application/merb_plugin/spec/spec_helper.rb", "lib/generators/templates/application/merb_plugin/Rakefile", "lib/generators/templates/application/merb_plugin/test", "lib/generators/templates/application/merb_plugin/test/%base_name%_test.rb", "lib/generators/templates/application/merb_plugin/test/test_helper.rb", "lib/generators/templates/application/merb_core", "lib/generators/templates/application/merb_core/public", "lib/generators/templates/application/merb_core/public/stylesheets", "lib/generators/templates/application/merb_core/public/stylesheets/master.css", "lib/generators/templates/application/merb_core/public/javascripts", "lib/generators/templates/application/merb_core/public/javascripts/application.js", "lib/generators/templates/application/merb_core/public/favicon.ico", "lib/generators/templates/application/merb_core/public/merb.fcgi", "lib/generators/templates/application/merb_core/public/images", "lib/generators/templates/application/merb_core/public/images/merb.jpg", "lib/generators/templates/application/merb_core/public/robots.txt", "lib/generators/templates/application/merb_core/doc", "lib/generators/templates/application/merb_core/doc/rdoc", "lib/generators/templates/application/merb_core/doc/rdoc/generators", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/merb_doc_styles.css", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/api_grease.js", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/merb.css", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/merb.rb", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/prototype.js", "lib/generators/templates/application/merb_core/doc/rdoc/generators/template/merb/index.html.erb", "lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb", "lib/generators/templates/application/merb_core/lib", "lib/generators/templates/application/merb_core/lib/merb", "lib/generators/templates/application/merb_core/lib/merb/session.rb", "lib/generators/templates/application/merb_core/autotest", "lib/generators/templates/application/merb_core/autotest/discover.rb", "lib/generators/templates/application/merb_core/autotest/merb.rb", "lib/generators/templates/application/merb_core/autotest/merb_rspec.rb", "lib/generators/templates/application/merb_core/spec", "lib/generators/templates/application/merb_core/spec/spec.opts", "lib/generators/templates/application/merb_core/spec/spec_helper.rb", "lib/generators/templates/application/merb_core/app", "lib/generators/templates/application/merb_core/app/controllers", "lib/generators/templates/application/merb_core/app/controllers/application.rb", "lib/generators/templates/application/merb_core/app/controllers/exceptions.rb", "lib/generators/templates/application/merb_core/app/views", "lib/generators/templates/application/merb_core/app/views/exceptions", "lib/generators/templates/application/merb_core/app/views/exceptions/not_acceptable.html.erb", "lib/generators/templates/application/merb_core/app/views/exceptions/not_found.html.erb", "lib/generators/templates/application/merb_core/app/helpers", "lib/generators/templates/application/merb_core/app/helpers/global_helpers.rb", "lib/generators/templates/application/merb_core/config", "lib/generators/templates/application/merb_core/config/router.rb", "lib/generators/templates/application/merb_core/config/init.rb", "lib/generators/templates/application/merb_core/config/rack.rb", "lib/generators/templates/application/merb_core/config/environments", "lib/generators/templates/application/merb_core/config/environments/test.rb", "lib/generators/templates/application/merb_core/config/environments/staging.rb", "lib/generators/templates/application/merb_core/config/environments/rake.rb", "lib/generators/templates/application/merb_core/config/environments/development.rb", "lib/generators/templates/application/merb_core/config/environments/production.rb", "lib/generators/templates/application/merb_core/test", "lib/generators/templates/application/merb_core/test/test_helper.rb", "lib/generators/templates/application/merb_flat", "lib/generators/templates/application/merb_flat/views", "lib/generators/templates/application/merb_flat/views/foo.html.erb", "lib/generators/templates/application/merb_flat/README.txt", "lib/generators/templates/application/merb_flat/spec", "lib/generators/templates/application/merb_flat/spec/spec_helper.rb", "lib/generators/templates/application/merb_flat/config", "lib/generators/templates/application/merb_flat/config/framework.rb", "lib/generators/templates/application/merb_flat/config/init.rb", "lib/generators/templates/application/merb_flat/test", "lib/generators/templates/application/merb_flat/test/test_helper.rb", "lib/generators/templates/application/merb_flat/application.rbt", "lib/generators/templates/application/merb_stack", "lib/generators/templates/application/merb_stack/merb", "lib/generators/templates/application/merb_stack/merb/merb-auth", "lib/generators/templates/application/merb_stack/merb/merb-auth/strategies.rb", "lib/generators/templates/application/merb_stack/merb/merb-auth/setup.rb", "lib/generators/templates/application/merb_stack/merb/session", "lib/generators/templates/application/merb_stack/merb/session/session.rb", "lib/generators/templates/application/merb_stack/public", "lib/generators/templates/application/merb_stack/public/stylesheets", "lib/generators/templates/application/merb_stack/public/stylesheets/master.css", "lib/generators/templates/application/merb_stack/public/javascripts", "lib/generators/templates/application/merb_stack/public/javascripts/application.js", "lib/generators/templates/application/merb_stack/public/favicon.ico", "lib/generators/templates/application/merb_stack/public/merb.fcgi", "lib/generators/templates/application/merb_stack/public/images", "lib/generators/templates/application/merb_stack/public/images/merb.jpg", "lib/generators/templates/application/merb_stack/public/robots.txt", "lib/generators/templates/application/merb_stack/doc", "lib/generators/templates/application/merb_stack/doc/rdoc", "lib/generators/templates/application/merb_stack/doc/rdoc/generators", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/merb_doc_styles.css", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/api_grease.js", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/merb.css", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/merb.rb", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/prototype.js", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/template/merb/index.html.erb", "lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb", "lib/generators/templates/application/merb_stack/autotest", "lib/generators/templates/application/merb_stack/autotest/discover.rb", "lib/generators/templates/application/merb_stack/autotest/merb.rb", "lib/generators/templates/application/merb_stack/autotest/merb_rspec.rb", "lib/generators/templates/application/merb_stack/spec", "lib/generators/templates/application/merb_stack/spec/spec.opts", "lib/generators/templates/application/merb_stack/spec/spec_helper.rb", "lib/generators/templates/application/merb_stack/app", "lib/generators/templates/application/merb_stack/app/controllers", "lib/generators/templates/application/merb_stack/app/controllers/application.rb", "lib/generators/templates/application/merb_stack/app/controllers/exceptions.rb", "lib/generators/templates/application/merb_stack/app/views", "lib/generators/templates/application/merb_stack/app/views/exceptions", "lib/generators/templates/application/merb_stack/app/views/exceptions/not_acceptable.html.erb", "lib/generators/templates/application/merb_stack/app/views/exceptions/not_found.html.erb", "lib/generators/templates/application/merb_stack/app/helpers", "lib/generators/templates/application/merb_stack/app/helpers/global_helpers.rb", "lib/generators/templates/application/merb_stack/app/models", "lib/generators/templates/application/merb_stack/app/models/user.rb", "lib/generators/templates/application/merb_stack/config", "lib/generators/templates/application/merb_stack/config/router.rb", "lib/generators/templates/application/merb_stack/config/dependencies.rb", "lib/generators/templates/application/merb_stack/config/init.rb", "lib/generators/templates/application/merb_stack/config/database.yml", "lib/generators/templates/application/merb_stack/config/rack.rb", "lib/generators/templates/application/merb_stack/config/environments", "lib/generators/templates/application/merb_stack/config/environments/test.rb", "lib/generators/templates/application/merb_stack/config/environments/staging.rb", "lib/generators/templates/application/merb_stack/config/environments/rake.rb", "lib/generators/templates/application/merb_stack/config/environments/development.rb", "lib/generators/templates/application/merb_stack/config/environments/production.rb", "lib/generators/templates/application/merb_stack/test", "lib/generators/templates/application/merb_stack/test/test_helper.rb", "lib/generators/templates/application/common", "lib/generators/templates/application/common/dotgitignore", "lib/generators/templates/application/common/doc.thor", "lib/generators/templates/application/common/jquery.js", "lib/generators/templates/application/common/merb_thor", "lib/generators/templates/application/common/merb_thor/app_script.rb", "lib/generators/templates/application/common/merb_thor/utils.rb", "lib/generators/templates/application/common/merb_thor/ops.rb", "lib/generators/templates/application/common/merb_thor/common.rb", "lib/generators/templates/application/common/merb_thor/gem_ext.rb", "lib/generators/templates/application/common/merb_thor/main.thor", "lib/generators/templates/application/common/dothtaccess", "lib/generators/templates/application/common/Rakefile", "lib/generators/templates/application/merb_very_flat", "lib/generators/templates/application/merb_very_flat/spec", "lib/generators/templates/application/merb_very_flat/spec/spec_helper.rb", "lib/generators/templates/application/merb_very_flat/test", "lib/generators/templates/application/merb_very_flat/test/test_helper.rb", "lib/generators/templates/application/merb_very_flat/application.rbt", "lib/generators/layout.rb", "lib/generators/resource.rb", "lib/generators/session_migration.rb", "lib/generators/resource_controller.rb", "lib/generators/helper.rb", "lib/generators/controller.rb", "lib/merb-gen", "lib/merb-gen/app_generator.rb", "lib/merb-gen/named_generator.rb", "lib/merb-gen/templater.rb", "lib/merb-gen/namespaced_generator.rb", "lib/merb-gen/generator.rb", "bin/merb-gen", "spec/generator_spec.rb", "spec/named_generator_spec.rb", "spec/resource_controller_spec.rb", "spec/part_controller_spec.rb", "spec/controller_spec.rb", "spec/migration_spec.rb", "spec/fixtures", "spec/fixtures/templates", "spec/fixtures/templates/some_modules.test", "spec/fixtures/templates/no_modules.test", "spec/fixtures/results", "spec/fixtures/results/some_modules.test", "spec/fixtures/results/no_modules.test", "spec/merb_very_flat_spec.rb", "spec/session_migration_spec.rb", "spec/merb_flat_spec.rb", "spec/namespaced_generator_spec.rb", "spec/merb_stack_spec.rb", "spec/layout_spec.rb", "spec/merb_core_spec.rb", "spec/model_spec.rb", "spec/resource_spec.rb", "spec/spec_helper.rb", "spec/merb_plugin_spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Generators suite for Merb.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_runtime_dependency(%q<templater>, [">= 0.3.3"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_dependency(%q<templater>, [">= 0.3.3"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-    s.add_dependency(%q<templater>, [">= 0.3.3"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-haml-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-haml-1.1.gemspec
deleted file mode 100644
index 1f292b1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-haml-1.1.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-haml}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Yehuda Katz"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides HAML support}
-  s.email = %q{ykatz at engineyard.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "Generators", "lib/generators", "lib/generators/templates", "lib/generators/templates/resource_controller", "lib/generators/templates/resource_controller/none", "lib/generators/templates/resource_controller/none/app", "lib/generators/templates/resource_controller/none/app/views", "lib/generators/templates/resource_controller/none/app/views/%file_name%", "lib/generators/templates/resource_controller/none/app/views/%file_name%/edit.html.haml", "lib/generators/templates/resource_controller/none/app/views/%file_name%/index.html.haml", "lib/generators/templates/resource_controller/none/app/views/%file_name%/show.html.haml", "lib/generators/templates/resource_controller/none/app/views/%file_name%/new.html.haml", "lib/generators/templates/resource_controller/activerecord", "lib/generators/templates/resource_controller/activerecord/app", "lib/generators/templates/resource_controller/activerecord/app/views", "lib/generators/templates/resource_controller/activerecord/app/views/%file_name%", "lib/generators/templates/resource_controller/activerecord/app/views/%file_name%/edit.html.haml", "lib/generators/templates/resource_controller/activerecord/app/views/%file_name%/index.html.haml", "lib/generators/templates/resource_controller/activerecord/app/views/%file_name%/show.html.haml", "lib/generators/templates/resource_controller/activerecord/app/views/%file_name%/new.html.haml", "lib/generators/templates/resource_controller/sequel", "lib/generators/templates/resource_controller/sequel/app", "lib/generators/templates/resource_controller/sequel/app/views", "lib/generators/templates/resource_controller/sequel/app/views/%file_name%", "lib/generators/templates/resource_controller/sequel/app/views/%file_name%/edit.html.haml", "lib/generators/templates/resource_controller/sequel/app/views/%file_name%/index.html.haml", "lib/generators/templates/resource_controller/sequel/app/views/%file_name%/show.html.haml", "lib/generators/templates/resource_controller/sequel/app/views/%file_name%/new.html.haml", "lib/generators/templates/resource_controller/datamapper", "lib/generators/templates/resource_controller/datamapper/app", "lib/generators/templates/resource_controller/datamapper/app/views", "lib/generators/templates/resource_controller/datamapper/app/views/%file_name%", "lib/generators/templates/resource_controller/datamapper/app/views/%file_name%/edit.html.haml", "lib/generators/templates/resource_controller/datamapper/app/views/%file_name%/index.html.haml", "lib/generators/templates/resource_controller/datamapper/app/views/%file_name%/show.html.haml", "lib/generators/templates/resource_controller/datamapper/app/views/%file_name%/new.html.haml", "lib/generators/templates/layout", "lib/generators/templates/layout/app", "lib/generators/templates/layout/app/views", "lib/generators/templates/layout/app/views/layout", "lib/generators/templates/layout/app/views/layout/%file_name%.html.haml", "lib/generators/templates/controller", "lib/generators/templates/controller/app", "lib/generators/templates/controller/app/views", "lib/generators/templates/controller/app/views/%file_name%", "lib/generators/templates/controller/app/views/%file_name%/index.html.haml", "lib/generators/layout.rb", "lib/generators/resource_controller.rb", "lib/generators/controller.rb", "lib/merb-haml.rb", "lib/merb-haml", "lib/merb-haml/template.rb", "lib/merb-haml/merbtasks.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides HAML support}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, ["= 1.1"])
-      s.add_runtime_dependency(%q<haml>, [">= 2.0.3"])
-    else
-      s.add_dependency(%q<merb-core>, ["= 1.1"])
-      s.add_dependency(%q<haml>, [">= 2.0.3"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, ["= 1.1"])
-    s.add_dependency(%q<haml>, [">= 2.0.3"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-helpers-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-helpers-1.1.gemspec
deleted file mode 100644
index 6317802..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-helpers-1.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-helpers}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Michael D. Ivey"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Helper support for Merb}
-  s.email = %q{ivey at gweezlebur.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-helpers", "lib/merb-helpers/time_dsl.rb", "lib/merb-helpers/core_ext", "lib/merb-helpers/core_ext/numeric.rb", "lib/merb-helpers/form", "lib/merb-helpers/form/helpers.rb", "lib/merb-helpers/form/builder.rb", "lib/merb-helpers/form_helpers.rb", "lib/merb-helpers/date_time_formatting.rb", "lib/merb-helpers/tag_helpers.rb", "lib/merb-helpers/core_ext.rb", "lib/merb-helpers/text_helpers.rb", "lib/merb-helpers/date_time_helpers.rb", "lib/merb-helpers.rb", "spec/fixture", "spec/fixture/public", "spec/fixture/public/stylesheets", "spec/fixture/public/stylesheets/master.css", "spec/fixture/public/merb.fcgi", "spec/fixture/public/images", "spec/fixture/public/images/merb.jpg", "spec/fixture/app", "spec/fixture/app/controllers", "spec/fixture/app/controllers/relative_date_span.rb", "spec/fixture/app/controllers/bound_option_tag.rb", "spec/fixture/app/controllers/radio_group.rb", "spec/fixture/app/controllers/bound_file_field.rb", "spec/fixture/app/controllers/bound_text_field.rb", "spec/fixture/app/controllers/select.rb", "spec/fixture/app/controllers/label.rb", "spec/fixture/app/controllers/application.rb", "spec/fixture/app/controllers/exceptions.rb", "spec/fixture/app/controllers/field_set.rb", "spec/fixture/app/controllers/bound_radio_group.rb", "spec/fixture/app/controllers/form_for.rb", "spec/fixture/app/controllers/bound_check_box.rb", "spec/fixture/app/controllers/form.rb", "spec/fixture/app/controllers/bound_hidden_field.rb", "spec/fixture/app/controllers/bound_radio_button.rb", "spec/fixture/app/controllers/bound_text_area.rb", "spec/fixture/app/controllers/bound_password_field.rb", "spec/fixture/app/controllers/fields_for.rb", "spec/fixture/app/controllers/text_area.rb", "spec/fixture/app/controllers/foo.rb", "spec/fixture/app/controllers/submit.rb", "spec/fixture/app/controllers/button.rb", "spec/fixture/app/controllers/check_box.rb", "spec/fixture/app/controllers/custom_builder.rb", "spec/fixture/app/controllers/password_field.rb", "spec/fixture/app/controllers/radio_button.rb", "spec/fixture/app/controllers/tag_helper.rb", "spec/fixture/app/controllers/specs_controller.rb", "spec/fixture/app/controllers/numeric_ext.rb", "spec/fixture/app/controllers/delete_button.rb", "spec/fixture/app/controllers/hacker.rb", "spec/fixture/app/controllers/bound_select.rb", "spec/fixture/app/controllers/file_field.rb", "spec/fixture/app/controllers/text_field.rb", "spec/fixture/app/controllers/hidden_field.rb", "spec/fixture/app/controllers/option_tag.rb", "spec/fixture/app/controllers/relative_date.rb", "spec/fixture/app/views", "spec/fixture/app/views/check_box_specs", "spec/fixture/app/views/check_box_specs/basic.html.erb", "spec/fixture/app/views/check_box_specs/raises_error_if_on_off_and_boolean_false.html.erb", "spec/fixture/app/views/check_box_specs/raise_unless_both_on_and_off.html.erb", "spec/fixture/app/views/check_box_specs/label.html.erb", "spec/fixture/app/views/check_box_specs/disabled.html.erb", "spec/fixture/app/views/check_box_specs/to_string.html.erb", "spec/fixture/app/views/check_box_specs/simple.html.erb", "spec/fixture/app/views/check_box_specs/boolean.html.erb", "spec/fixture/app/views/check_box_specs/unchecked.html.erb", "spec/fixture/app/views/check_box_specs/on_off_is_boolean.html.erb", "spec/fixture/app/views/check_box_specs/raises_error_if_not_boolean.html.erb", "spec/fixture/app/views/bound_password_field_specs", "spec/fixture/app/views/bound_password_field_specs/attributes.html.erb", "spec/fixture/app/views/bound_password_field_specs/basic.html.erb", "spec/fixture/app/views/bound_password_field_specs/label.html.erb", "spec/fixture/app/views/relative_date_span_specs", "spec/fixture/app/views/relative_date_span_specs/date_span_on_same_day.html.erb", "spec/fixture/app/views/relative_date_span_specs/date_span_on_same_day_on_different_year.html.erb", "spec/fixture/app/views/option_tag_specs", "spec/fixture/app/views/option_tag_specs/with_blank.html.erb", "spec/fixture/app/views/option_tag_specs/with_prompt.html.erb", "spec/fixture/app/views/option_tag_specs/collection.html.erb", "spec/fixture/app/views/option_tag_specs/array.html.erb", "spec/fixture/app/views/option_tag_specs/multiple_selects.html.erb", "spec/fixture/app/views/option_tag_specs/clean.html.erb", "spec/fixture/app/views/option_tag_specs/no_extra_attributes.html.erb", "spec/fixture/app/views/option_tag_specs/optgroups.html.erb", "spec/fixture/app/views/option_tag_specs/selected.html.erb", "spec/fixture/app/views/form_for_specs", "spec/fixture/app/views/form_for_specs/basic.html.erb", "spec/fixture/app/views/layout", "spec/fixture/app/views/layout/application.html.erb", "spec/fixture/app/views/hacker", "spec/fixture/app/views/hacker/option_tag.html.erb", "spec/fixture/app/views/hacker/radio_group.html.erb", "spec/fixture/app/views/hacker/hidden_field.html.erb", "spec/fixture/app/views/hacker/password_field.html.erb", "spec/fixture/app/views/hacker/radio_button.html.erb", "spec/fixture/app/views/hacker/text_area.html.erb", "spec/fixture/app/views/hacker/file_field.html.erb", "spec/fixture/app/views/hacker/text_field.html.erb", "spec/fixture/app/views/bound_radio_group_specs", "spec/fixture/app/views/bound_radio_group_specs/basic.html.erb", "spec/fixture/app/views/bound_radio_group_specs/override_id.html.erb", "spec/fixture/app/views/bound_radio_group_specs/hashes.html.erb", "spec/fixture/app/views/bound_radio_group_specs/mixed.html.erb", "spec/fixture/app/views/label_specs", "spec/fixture/app/views/label_specs/basic_with_class.html.erb", "spec/fixture/app/views/label_specs/basic.html.erb", "spec/fixture/app/views/label_specs/basic_with_attributes.html.erb", "spec/fixture/app/views/password_field_specs", "spec/fixture/app/views/password_field_specs/basic.html.erb", "spec/fixture/app/views/password_field_specs/disabled.html.erb", "spec/fixture/app/views/bound_hidden_field_specs", "spec/fixture/app/views/bound_hidden_field_specs/basic.html.erb", "spec/fixture/app/views/bound_hidden_field_specs/label.html.erb", "spec/fixture/app/views/bound_hidden_field_specs/errors.html.erb", "spec/fixture/app/views/bound_hidden_field_specs/hidden_error.html.erb", "spec/fixture/app/views/button_specs", "spec/fixture/app/views/button_specs/button_with_values.html.erb", "spec/fixture/app/views/button_specs/button_with_label.html.erb", "spec/fixture/app/views/button_specs/disabled_button.html.erb", "spec/fixture/app/views/bound_option_tag_specs", "spec/fixture/app/views/bound_option_tag_specs/grouped.html.erb", "spec/fixture/app/views/bound_option_tag_specs/nested.html.erb", "spec/fixture/app/views/bound_option_tag_specs/text_and_value.html.erb", "spec/fixture/app/views/radio_button_specs", "spec/fixture/app/views/radio_button_specs/basic.html.erb", "spec/fixture/app/views/radio_button_specs/checked.html.erb", "spec/fixture/app/views/radio_button_specs/label.html.erb", "spec/fixture/app/views/radio_button_specs/disabled.html.erb", "spec/fixture/app/views/radio_button_specs/unchecked.html.erb", "spec/fixture/app/views/form_specs", "spec/fixture/app/views/form_specs/fake_put_if_set.html.erb", "spec/fixture/app/views/form_specs/get_if_set.html.erb", "spec/fixture/app/views/form_specs/create_a_form.html.erb", "spec/fixture/app/views/form_specs/create_a_multipart_form.html.erb", "spec/fixture/app/views/form_specs/post_by_default.html.erb", "spec/fixture/app/views/form_specs/resourceful_form.html.erb", "spec/fixture/app/views/form_specs/fake_delete_if_set.html.erb", "spec/fixture/app/views/exeptions", "spec/fixture/app/views/exeptions/not_acceptable.html.erb", "spec/fixture/app/views/exeptions/not_found.html.erb", "spec/fixture/app/views/exeptions/client_error.html.erb", "spec/fixture/app/views/exeptions/internal_server_error.html.erb", "spec/fixture/app/views/tag_helper", "spec/fixture/app/views/tag_helper/nested_tags.html.erb", "spec/fixture/app/views/tag_helper/tag_with_attributes.html.erb", "spec/fixture/app/views/tag_helper/tag_with_content.html.erb", "spec/fixture/app/views/tag_helper/tag_with_content_in_the_block.html.erb", "spec/fixture/app/views/select_specs", "spec/fixture/app/views/select_specs/basic.html.erb", "spec/fixture/app/views/select_specs/multiple.html.erb", "spec/fixture/app/views/select_specs/blank.html.erb", "spec/fixture/app/views/select_specs/selected.html.erb", "spec/fixture/app/views/bound_text_area_specs", "spec/fixture/app/views/bound_text_area_specs/basic.html.erb", "spec/fixture/app/views/bound_text_area_specs/label.html.erb", "spec/fixture/app/views/delete_button_specs", "spec/fixture/app/views/delete_button_specs/delete_with_extra_params.html.erb", "spec/fixture/app/views/delete_button_specs/delete_with_label.html.erb", "spec/fixture/app/views/delete_button_specs/delete_with_explicit_url.html.erb", "spec/fixture/app/views/delete_button_specs/simple_delete.html.erb", "spec/fixture/app/views/bound_radio_button_specs", "spec/fixture/app/views/bound_radio_button_specs/basic.html.erb", "spec/fixture/app/views/radio_group_specs", "spec/fixture/app/views/radio_group_specs/attributes.html.erb", "spec/fixture/app/views/radio_group_specs/basic.html.erb", "spec/fixture/app/views/radio_group_specs/hash.html.erb", "spec/fixture/app/views/radio_group_specs/checked.html.erb", "spec/fixture/app/views/radio_group_specs/specific_attributes.html.erb", "spec/fixture/app/views/hidden_field_specs", "spec/fixture/app/views/hidden_field_specs/basic.html.erb", "spec/fixture/app/views/hidden_field_specs/label.html.erb", "spec/fixture/app/views/hidden_field_specs/disabled.html.erb", "spec/fixture/app/views/bound_select_specs", "spec/fixture/app/views/bound_select_specs/basic.html.erb", "spec/fixture/app/views/bound_select_specs/multiple.html.erb", "spec/fixture/app/views/bound_select_specs/prompt.html.erb", "spec/fixture/app/views/bound_select_specs/label.html.erb", "spec/fixture/app/views/bound_select_specs/with_options_with_blank.html.erb", "spec/fixture/app/views/bound_select_specs/blank.html.erb", "spec/fixture/app/views/bound_select_specs/with_options.html.erb", "spec/fixture/app/views/foo", "spec/fixture/app/views/foo/bar.html.erb", "spec/fixture/app/views/numeric_ext_specs", "spec/fixture/app/views/numeric_ext_specs/minutes_to_hours.html.erb", "spec/fixture/app/views/numeric_ext_specs/to_concurrency_default.html.erb", "spec/fixture/app/views/numeric_ext_specs/two_digits.html.erb", "spec/fixture/app/views/fields_for_specs", "spec/fixture/app/views/fields_for_specs/basic.html.erb", "spec/fixture/app/views/fields_for_specs/nil.html.erb", "spec/fixture/app/views/fields_for_specs/midstream.html.erb", "spec/fixture/app/views/bound_text_field_specs", "spec/fixture/app/views/bound_text_field_specs/basic.html.erb", "spec/fixture/app/views/bound_file_field_specs", "spec/fixture/app/views/bound_file_field_specs/with_label.html.erb", "spec/fixture/app/views/bound_file_field_specs/additional_attributes.html.erb", "spec/fixture/app/views/bound_file_field_specs/takes_string.html.erb", "spec/fixture/app/views/custom_builder_specs", "spec/fixture/app/views/custom_builder_specs/everything.html.erb", "spec/fixture/app/views/bound_check_box_specs", "spec/fixture/app/views/bound_check_box_specs/basic.html.erb", "spec/fixture/app/views/bound_check_box_specs/on_and_off.html.erb", "spec/fixture/app/views/bound_check_box_specs/basic_unchecked.html.erb", "spec/fixture/app/views/bound_check_box_specs/checked.html.erb", "spec/fixture/app/views/bound_check_box_specs/label.html.erb", "spec/fixture/app/views/bound_check_box_specs/errors.html.erb", "spec/fixture/app/views/bound_check_box_specs/raise_value_error.html.erb", "spec/fixture/app/views/fieldset_specs", "spec/fixture/app/views/fieldset_specs/legend.html.erb", "spec/fixture/app/views/relative_date_specs", "spec/fixture/app/views/relative_date_specs/relative_yesterday.html.erb", "spec/fixture/app/views/relative_date_specs/relative_date_with_year.html.erb", "spec/fixture/app/views/relative_date_specs/relative_today.html.erb", "spec/fixture/app/views/relative_date_specs/relative_date_without_year.html.erb", "spec/fixture/app/views/relative_date_specs/relative_tomorrow.html.erb", "spec/fixture/app/views/text_area_specs", "spec/fixture/app/views/text_area_specs/basic.html.erb", "spec/fixture/app/views/text_area_specs/nil.html.erb", "spec/fixture/app/views/text_area_specs/label.html.erb", "spec/fixture/app/views/text_area_specs/disabled.html.erb", "spec/fixture/app/views/file_field_specs", "spec/fixture/app/views/file_field_specs/with_label.html.erb", "spec/fixture/app/views/file_field_specs/makes_multipart.html.erb", "spec/fixture/app/views/file_field_specs/disabled.html.erb", "spec/fixture/app/views/file_field_specs/with_values.html.erb", "spec/fixture/app/views/text_field_specs", "spec/fixture/app/views/text_field_specs/basic.html.erb", "spec/fixture/app/views/text_field_specs/class.html.erb", "spec/fixture/app/views/text_field_specs/symbolized_name.html.erb", "spec/fixture/app/views/text_field_specs/label.html.erb", "spec/fixture/app/views/text_field_specs/disabled.html.erb", "spec/fixture/app/views/submit_specs", "spec/fixture/app/views/submit_specs/submit_with_label.html.erb", "spec/fixture/app/views/submit_specs/submit_with_values.html.erb", "spec/fixture/app/views/submit_specs/disabled_submit.html.erb", "spec/fixture/app/helpers", "spec/fixture/app/helpers/global_helpers.rb", "spec/fixture/app/models", "spec/fixture/app/models/third_generic_fake_model.rb", "spec/fixture/app/models/fake_dm_model.rb", "spec/fixture/app/models/hacker_generic_model.rb", "spec/fixture/app/models/first_generic_fake_model.rb", "spec/fixture/app/models/second_generic_fake_model.rb", "spec/fixture/config", "spec/fixture/config/router.rb", "spec/fixture/config/init.rb", "spec/fixture/config/rack.rb", "spec/fixture/config/environments", "spec/fixture/config/environments/test.rb", "spec/fixture/config/environments/development.rb", "spec/fixture/config/environments/production.rb", "spec/merb_helpers_form_spec.rb", "spec/merb_helpers_text_spec.rb", "spec/numeric_extlib_spec.rb", "spec/time_dsl_spec.rb", "spec/core_ext_spec.rb", "spec/merb_helpers_tag_helper_spec.rb", "spec/ordinalize_spec.rb", "spec/spec_helper.rb", "spec/merb_helpers_config_spec.rb", "spec/merb_helpers_date_time_spec.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Helper support for Merb}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-mailer-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-mailer-1.1.gemspec
deleted file mode 100644
index b623be5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-mailer-1.1.gemspec
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-mailer}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Yehuda Katz"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides mailer functionality to Merb}
-  s.email = %q{ykatz at engineyard.com}
-  s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "Generators", "lib/generators", "lib/generators/templates", "lib/generators/templates/mailer", "lib/generators/templates/mailer/spec", "lib/generators/templates/mailer/spec/mailers", "lib/generators/templates/mailer/spec/mailers/%file_name%_mailer_spec.rb", "lib/generators/templates/mailer/app", "lib/generators/templates/mailer/app/mailers", "lib/generators/templates/mailer/app/mailers/views", "lib/generators/templates/mailer/app/mailers/views/%file_name%_mailer", "lib/generators/templates/mailer/app/mailers/views/%file_name%_mailer/notify_on_event.text.erb", "lib/generators/templates/mailer/app/mailers/%file_name%_mailer.rb", "lib/generators/mailer_generator.rb", "lib/merb-mailer.rb", "lib/merb-mailer", "lib/merb-mailer/mailer.rb", "lib/merb-mailer/mailer_mixin.rb", "lib/merb-mailer/mail_controller.rb", "spec/mailer_spec.rb", "spec/mail_controller_spec.rb", "spec/mailers", "spec/mailers/views", "spec/mailers/views/layout", "spec/mailers/views/layout/application.html.erb", "spec/mailers/views/layout/application.text.erb", "spec/mailers/views/test_mail_controller", "spec/mailers/views/test_mail_controller/second.text.erb", "spec/mailers/views/test_mail_controller/generates_relative_url.text.erb", "spec/mailers/views/test_mail_controller/ninth.html.erb", "spec/mailers/views/test_mail_controller/eighth.html.erb", "spec/mailers/views/test_mail_controller/first.html.erb", "spec/mailers/views/test_mail_controller/first.text.erb", "spec/mailers/views/test_mail_controller/ninth.text.erb", "spec/mailers/views/test_mail_controller/third.html.erb", "spec/mailers/views/test_mail_controller/eighth.text.erb", "spec/mailers/views/test_mail_controller/generates_absolute_url.text.erb", "spec/mailer_generator_spec.rb", "spec/spec_helper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides mailer functionality to Merb}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_runtime_dependency(%q<mailfactory>, [">= 1.2.3"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_dependency(%q<mailfactory>, [">= 1.2.3"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-    s.add_dependency(%q<mailfactory>, [">= 1.2.3"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-more-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-more-1.1.gemspec
deleted file mode 100644
index 74d4952..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-more-1.1.gemspec
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-more}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Engine Yard"]
-  s.date = %q{2009-02-23}
-  s.description = %q{(merb - merb-core) == merb-more.  The Full Stack. Take what you need; leave what you don't.}
-  s.email = %q{merb at engineyard.com}
-  s.files = ["LICENSE", "README", "Rakefile", "TODO", "lib/merb-more.rb"]
-  s.homepage = %q{http://www.merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb-more}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{(merb - merb-core) == merb-more.  The Full Stack. Take what you need; leave what you don't.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_runtime_dependency(%q<merb-action-args>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-assets>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-slices>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-auth>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-cache>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-exceptions>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-gen>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-haml>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-helpers>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-mailer>, ["= 1.1"])
-      s.add_runtime_dependency(%q<merb-param-protection>, ["= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-      s.add_dependency(%q<merb-action-args>, ["= 1.1"])
-      s.add_dependency(%q<merb-assets>, ["= 1.1"])
-      s.add_dependency(%q<merb-slices>, ["= 1.1"])
-      s.add_dependency(%q<merb-auth>, ["= 1.1"])
-      s.add_dependency(%q<merb-cache>, ["= 1.1"])
-      s.add_dependency(%q<merb-exceptions>, ["= 1.1"])
-      s.add_dependency(%q<merb-gen>, ["= 1.1"])
-      s.add_dependency(%q<merb-haml>, ["= 1.1"])
-      s.add_dependency(%q<merb-helpers>, ["= 1.1"])
-      s.add_dependency(%q<merb-mailer>, ["= 1.1"])
-      s.add_dependency(%q<merb-param-protection>, ["= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-    s.add_dependency(%q<merb-action-args>, ["= 1.1"])
-    s.add_dependency(%q<merb-assets>, ["= 1.1"])
-    s.add_dependency(%q<merb-slices>, ["= 1.1"])
-    s.add_dependency(%q<merb-auth>, ["= 1.1"])
-    s.add_dependency(%q<merb-cache>, ["= 1.1"])
-    s.add_dependency(%q<merb-exceptions>, ["= 1.1"])
-    s.add_dependency(%q<merb-gen>, ["= 1.1"])
-    s.add_dependency(%q<merb-haml>, ["= 1.1"])
-    s.add_dependency(%q<merb-helpers>, ["= 1.1"])
-    s.add_dependency(%q<merb-mailer>, ["= 1.1"])
-    s.add_dependency(%q<merb-param-protection>, ["= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-param-protection-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-param-protection-1.1.gemspec
deleted file mode 100644
index d980823..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-param-protection-1.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-param-protection}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Lance Carlson"]
-  s.date = %q{2009-02-16}
-  s.description = %q{Merb plugin that provides params_accessible and params_protected class methods}
-  s.email = %q{lancecarlson at gmail.com}
-  s.extra_rdoc_files = ["README", "LICENSE"]
-  s.files = ["LICENSE", "README", "Rakefile", "lib/merb-param-protection", "lib/merb-param-protection/merbtasks.rb", "lib/merb-param-protection.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb plugin that provides params_accessible and params_protected class methods}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-slices-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-slices-1.1.gemspec
deleted file mode 100644
index 0962c9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb-slices-1.1.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb-slices}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Fabien Franzen"]
-  s.date = %q{2009-02-16}
-  s.default_executable = %q{slice}
-  s.description = %q{Merb-Slices is a Merb plugin for using and creating application 'slices' which help you modularize your application.}
-  s.email = %q{info at fabien.be}
-  s.executables = ["slice"]
-  s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
-  s.files = ["LICENSE", "README", "Rakefile", "Generators", "TODO", "lib/merb-slices", "lib/merb-slices/router_ext.rb", "lib/merb-slices/module_mixin.rb", "lib/merb-slices/module.rb", "lib/merb-slices/controller_mixin.rb", "lib/merb-slices/merbtasks.rb", "lib/generators", "lib/generators/templates", "lib/generators/templates/thin", "lib/generators/templates/thin/views", "lib/generators/templates/thin/views/layout", "lib/generators/templates/thin/views/layout/%symbol_name%.html.erb", "lib/generators/templates/thin/views/main", "lib/generators/templates/thin/views/main/index.html.erb", "lib/generators/templates/thin/stubs", "lib/generators/templates/thin/stubs/application.rb", "lib/generators/templates/thin/README", "lib/generators/templates/thin/lib", "lib/generators/templates/thin/lib/%base_name%.rb", "lib/generators/templates/very_thin", "lib/generators/templates/very_thin/README", "lib/generators/templates/very_thin/lib", "lib/generators/templates/very_thin/lib/%base_name%.rb", "lib/generators/templates/full", "lib/generators/templates/full/stubs", "lib/generators/templates/full/stubs/app", "lib/generators/templates/full/stubs/app/controllers", "lib/generators/templates/full/stubs/app/controllers/application.rb", "lib/generators/templates/full/stubs/app/controllers/main.rb", "lib/generators/templates/full/TODO", "lib/generators/templates/full/README", "lib/generators/templates/full/lib", "lib/generators/templates/full/lib/%base_name%.rb", "lib/generators/templates/full/spec", "lib/generators/templates/full/spec/requests", "lib/generators/templates/full/spec/requests/main_spec.rb", "lib/generators/templates/full/spec/%base_name%_spec.rb", "lib/generators/templates/full/spec/spec_helper.rb", "lib/generators/templates/full/Rakefile", "lib/generators/templates/full/app", "lib/generators/templates/full/app/controllers", "lib/generators/templates/full/app/controllers/application.rb", "lib/generators/templates/full/app/controllers/main.rb", "lib/generators/templates/full/app/views", "lib/generators/templates/full/app/views/layout", "lib/generators/templates/full/app/views/layout/%symbol_name%.html.erb", "lib/generators/templates/full/app/views/main", "lib/generators/templates/full/app/views/main/index.html.erb", "lib/generators/templates/full/app/helpers", "lib/generators/templates/full/app/helpers/application_helper.rb", "lib/generators/templates/full/config", "lib/generators/templates/full/config/router.rb", "lib/generators/templates/full/config/init.rb", "lib/generators/templates/common", "lib/generators/templates/common/application.rb", "lib/generators/templates/common/public", "lib/generators/templates/common/public/stylesheets", "lib/generators/templates/common/public/stylesheets/master.css", "lib/generators/templates/common/public/javascripts", "lib/generators/templates/common/public/javascripts/master.js", "lib/generators/templates/common/LICENSE", "lib/generators/templates/common/TODO", "lib/generators/templates/common/lib", "lib/generators/templates/common/lib/%base_name%", "lib/generators/templates/common/lib/%base_name%/spectasks.rb", "lib/generators/templates/common/lib/%base_name%/slicetasks.rb", "lib/generators/templates/common/lib/%base_name%/merbtasks.rb", "lib/generators/templates/common/Rakefile", "lib/generators/base.rb", "lib/generators/very_thin.rb", "lib/generators/full.rb", "lib/generators/thin.rb", "lib/merb-slices.rb", "spec/slice_generator_spec.rb", "spec/very_thin_slice_generator_spec.rb", "spec/thin_slice_generator_spec.rb", "spec/full_slice_spec.rb", "spec/thin_slice_spec.rb", "spec/very_thin_slice_spec.rb", "spec/full_slice_generator_spec.rb", "spec/slices", "spec/slices/very-thin-test-slice", "spec/slices/very-thin-test-slice/application.rb", "spec/slices/very-thin-test-slice/LICENSE", "spec/slices/very-thin-test-slice/TODO", "spec/slices/very-thin-test-slice/README", "spec/slices/very-thin-test-slice/lib", "spec/slices/very-thin-test-slice/lib/very-thin-test-slice.rb", "spec/slices/very-thin-test-slice/lib/very-thin-test-slice", "spec/slices/very-thin-test-slice/lib/very-thin-test-slice/slicetasks.rb", "spec/slices/very-thin-test-slice/lib/very-thin-test-slice/merbtasks.rb", "spec/slices/very-thin-test-slice/Rakefile", "spec/slices/thin-test-slice", "spec/slices/thin-test-slice/views", "spec/slices/thin-test-slice/views/layout", "spec/slices/thin-test-slice/views/layout/thin_test_slice.html.erb", "spec/slices/thin-test-slice/views/main", "spec/slices/thin-test-slice/views/main/index.html.erb", "spec/slices/thin-test-slice/application.rb", "spec/slices/thin-test-slice/public", "spec/slices/thin-test-slice/public/stylesheets", "spec/slices/thin-test-slice/public/stylesheets/master.css", "spec/slices/thin-test-slice/public/javascripts", "spec/slices/thin-test-slice/public/javascripts/master.js", "spec/slices/thin-test-slice/stubs", "spec/slices/thin-test-slice/stubs/application.rb", "spec/slices/thin-test-slice/LICENSE", "spec/slices/thin-test-slice/TODO", "spec/slices/thin-test-slice/README", "spec/slices/thin-test-slice/lib", "spec/slices/thin-test-slice/lib/thin-test-slice.rb", "spec/slices/thin-test-slice/lib/thin-test-slice", "spec/slices/thin-test-slice/lib/thin-test-slice/slicetasks.rb", "spec/slices/thin-test-slice/lib/thin-test-slice/merbtasks.rb", "spec/slices/thin-test-slice/Rakefile", "spec/slices/full-test-slice", "spec/slices/full-test-slice/public", "spec/slices/full-test-slice/public/stylesheets", "spec/slices/full-test-slice/public/stylesheets/master.css", "spec/slices/full-test-slice/public/javascripts", "spec/slices/full-test-slice/public/javascripts/master.js", "spec/slices/full-test-slice/stubs", "spec/slices/full-test-slice/stubs/app", "spec/slices/full-test-slice/stubs/app/controllers", "spec/slices/full-test-slice/stubs/app/controllers/application.rb", "spec/slices/full-test-slice/stubs/app/controllers/main.rb", "spec/slices/full-test-slice/LICENSE", "spec/slices/full-test-slice/TODO", "spec/slices/full-test-slice/README", "spec/slices/full-test-slice/lib", "spec/slices/full-test-slice/lib/full-test-slice", "spec/slices/full-test-slice/lib/full-test-slice/spectasks.rb", "spec/slices/full-test-slice/lib/full-test-slice/slicetasks.rb", "spec/slices/full-test-slice/lib/full-test-slice/merbtasks.rb", "spec/slices/full-test-slice/lib/full-test-slice.rb", "spec/slices/full-test-slice/Rakefile", "spec/slices/full-test-slice/app", "spec/slices/full-test-slice/app/controllers", "spec/slices/full-test-slice/app/controllers/application.rb", "spec/slices/full-test-slice/app/controllers/main.rb", "spec/slices/full-test-slice/app/views", "spec/slices/full-test-slice/app/views/layout", "spec/slices/full-test-slice/app/views/layout/full_test_slice.html.erb", "spec/slices/full-test-slice/app/views/main", "spec/slices/full-test-slice/app/views/main/index.html.erb", "spec/slices/full-test-slice/app/helpers", "spec/slices/full-test-slice/app/helpers/application_helper.rb", "spec/slices/full-test-slice/config", "spec/slices/full-test-slice/config/init.rb", "spec/merb-slice_spec.rb", "spec/spec_helper.rb", "bin/slice"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Merb-Slices is a Merb plugin for using and creating application 'slices' which help you modularize your application.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<merb-core>, [">= 1.1"])
-    else
-      s.add_dependency(%q<merb-core>, [">= 1.1"])
-    end
-  else
-    s.add_dependency(%q<merb-core>, [">= 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb_datamapper-1.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb_datamapper-1.1.gemspec
deleted file mode 100644
index d0f669a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/merb_datamapper-1.1.gemspec
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{merb_datamapper}
-  s.version = "1.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jason Toy"]
-  s.date = %q{2009-02-16}
-  s.description = %q{DataMapper plugin providing DataMapper support for Merb}
-  s.email = %q{jtoy at rubynow.com}
-  s.extra_rdoc_files = ["LICENSE", "TODO"]
-  s.files = ["LICENSE", "Rakefile", "TODO", "Generators", "lib/merb", "lib/merb/orms", "lib/merb/orms/data_mapper", "lib/merb/orms/data_mapper/connection.rb", "lib/merb/orms/data_mapper/database.yml.sample", "lib/merb/session", "lib/merb/session/data_mapper_session.rb", "lib/generators", "lib/generators/templates", "lib/generators/templates/views", "lib/generators/templates/views/new.html.erb", "lib/generators/templates/views/index.html.erb", "lib/generators/templates/views/edit.html.erb", "lib/generators/templates/views/show.html.erb", "lib/generators/templates/model.rb", "lib/generators/templates/migration.rb", "lib/generators/templates/resource_controller.rb", "lib/generators/templates/model_migration.rb", "lib/generators/data_mapper_migration.rb", "lib/generators/data_mapper_resource_controller.rb", "lib/generators/data_mapper_model.rb", "lib/merb_datamapper.rb", "lib/merb_datamapper", "lib/merb_datamapper/version.rb", "lib/merb_datamapper/merbtasks.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://merbivore.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{merb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{DataMapper plugin providing DataMapper support for Merb}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<dm-core>, [">= 0.9.5"])
-      s.add_runtime_dependency(%q<dm-migrations>, [">= 0.9.5"])
-      s.add_runtime_dependency(%q<merb-core>, ["~> 1.1"])
-    else
-      s.add_dependency(%q<dm-core>, [">= 0.9.5"])
-      s.add_dependency(%q<dm-migrations>, [">= 0.9.5"])
-      s.add_dependency(%q<merb-core>, ["~> 1.1"])
-    end
-  else
-    s.add_dependency(%q<dm-core>, [">= 0.9.5"])
-    s.add_dependency(%q<dm-migrations>, [">= 0.9.5"])
-    s.add_dependency(%q<merb-core>, ["~> 1.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/metaid-1.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/metaid-1.0.gemspec
deleted file mode 100644
index eb4dedc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/metaid-1.0.gemspec
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{metaid}
-  s.version = "1.0"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["why the lucky stiff"]
-  s.autorequire = %q{metaid}
-  s.cert_chain = nil
-  s.date = %q{2006-01-16}
-  s.email = %q{why at ruby-lang.org}
-  s.files = ["metaid.rb"]
-  s.homepage = %q{http://whytheluckystiff.net/metaid/}
-  s.require_paths = ["."]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubyforge_project = %q{hobix}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{slight metaprogramming helpers}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mime-types-1.16.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mime-types-1.16.gemspec
deleted file mode 100644
index 823b501..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mime-types-1.16.gemspec
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{mime-types}
-  s.version = "1.16"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Austin Ziegler"]
-  s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZhdXN0\naW4xGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZFgNv\ncmcwHhcNMDcxMTMwMDE0OTAwWhcNMDgxMTI5MDE0OTAwWjBBMQ8wDQYDVQQDDAZh\ndXN0aW4xGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZ\nFgNvcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOSg1riVV22ord\nq0t4YVx57GDPMqdjlnQ5M7D9iBnnW0c8pifegbb0dm+mC9hJSuPtcJS53+YPTy9F\nwlZbjI2cN+P0QLUUTOlZus2sHq7Pr9jz2nJf8hCT7t5Vlopv1N/xlKtXqpcyEkhJ\nJHTrxe1avGwuq8DIAIN01moQJ+hJlgrnR2eRJRazTGiXKBLGAFXDl/Agn78MHx6w\npzZ2APydo6Nuk7Ktq1MvCHzLzCACbOlYawFk3/9dbsmHhVjsi6YW+CpEJ2BnTy8X\nJBXlyNTk1JxDmcs3RzNr+9AmDQh3u4LcmJnWxtLJo9e7UBxH/bwVORJyf8dAOmOm\nHO6bFTLvAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW\nBBT9e1+pFfcV1LxVxILANqLtZzI/XTANBgkqhkiG9w0BAQUFAAOCAQEAhg42pvrL\nuVlqAaHqV88KqgnW2ymCWm0ePohicFTcyiS5Yj5cN3OXLsPV2x12zqvLCFsfpA4u\nD/85rngKFHITSW0h9e/CIT/pwQA6Uuqkbr0ypkoU6mlNIDS10PlK7aXXFTCP9X3f\nIndAajiNRgKwb67nj+zpQwHa6dmooyRQIRRijrMKTgY6ebaCCrm7J3BLLTJAyxOW\n+1nD0cuTkBEKIuSVK06E19Ml+xWt2bdtS9Wz/8jHivJ0SvUpbmhKVzh1rBslwm65\nJpQgg3SsV23vF4qkCa2dt1FL+FeWJyCdj23DV3598X72RYiK3D6muWURck16jqeA\nBRvUFuFHOwa/yA==\n-----END CERTIFICATE-----\n"]
-  s.date = %q{2009-03-01}
-  s.description = %q{MIME::Types for Ruby originally based on and synchronized with MIME::Types for Perl by Mark Overmeer, copyright 2001 - 2009. As of version 1.15, the data format for the MIME::Type list has changed and the synchronization will no longer happen.}
-  s.email = ["austin at rubyforge.org"]
-  s.extra_rdoc_files = ["History.txt", "Install.txt", "Licence.txt", "README.txt"]
-  s.files = ["History.txt", "Install.txt", "Licence.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/mime/types.rb", "lib/mime/types.rb.data", "mime-types.gemspec", "setup.rb", "test/test_mime_type.rb", "test/test_mime_types.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://mime-types.rubyforge.org/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{mime-types}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Manages a MIME Content-Type database that will return the Content-Type for a given filename.}
-  s.test_files = ["test/test_mime_type.rb", "test/test_mime_types.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<archive-tar-minitar>, ["~> 0.5"])
-      s.add_development_dependency(%q<nokogiri>, ["~> 1.2"])
-      s.add_development_dependency(%q<rcov>, ["~> 0.8"])
-      s.add_development_dependency(%q<hoe>, [">= 1.8.3"])
-    else
-      s.add_dependency(%q<archive-tar-minitar>, ["~> 0.5"])
-      s.add_dependency(%q<nokogiri>, ["~> 1.2"])
-      s.add_dependency(%q<rcov>, ["~> 0.8"])
-      s.add_dependency(%q<hoe>, [">= 1.8.3"])
-    end
-  else
-    s.add_dependency(%q<archive-tar-minitar>, ["~> 0.5"])
-    s.add_dependency(%q<nokogiri>, ["~> 1.2"])
-    s.add_dependency(%q<rcov>, ["~> 0.8"])
-    s.add_dependency(%q<hoe>, [">= 1.8.3"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/minitest-1.3.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/minitest-1.3.1.gemspec
deleted file mode 100644
index 19acf33..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/minitest-1.3.1.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{minitest}
-  s.version = "1.3.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.date = %q{2009-01-20}
-  s.description = %q{minitest/unit is a small and fast replacement for ruby's huge and slow test/unit. This is meant to be clean and easy to use both as a regular test writer and for language implementors that need a minimal set of methods to bootstrap a working unit test suite.  mini/spec is a functionally complete spec engine.  mini/mock, by Steven Baker, is a beautifully tiny mock object framework.  (This package was called miniunit once upon a time)}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".autotest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/minitest/autorun.rb", "lib/minitest/mock.rb", "lib/minitest/spec.rb", "lib/minitest/unit.rb", "test/test_mini_mock.rb", "test/test_mini_spec.rb", "test/test_mini_test.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/bfts}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{bfts}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{minitest/unit is a small and fast replacement for ruby's huge and slow test/unit}
-  s.test_files = ["test/test_mini_mock.rb", "test/test_mini_spec.rb", "test/test_mini_test.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
-    else
-      s.add_dependency(%q<hoe>, [">= 1.8.2"])
-    end
-  else
-    s.add_dependency(%q<hoe>, [">= 1.8.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mocha-0.9.5.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mocha-0.9.5.gemspec
deleted file mode 100644
index 830b95a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mocha-0.9.5.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-Gem::Specification.new do |s|
-  s.name = %q{mocha}
-  s.version = "0.9.5"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["James Mead"]
-  s.date = %q{2009-01-31}
-  s.description = %q{Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes.}
-  s.email = %q{mocha-developer at googlegroups.com}
-  s.extra_rdoc_files = ["README", "COPYING"]
-  s.files = ["lib/mocha/any_instance_method.rb", "lib/mocha/argument_iterator.rb", "lib/mocha/backtrace_filter.rb", "lib/mocha/cardinality.rb", "lib/mocha/central.rb", "lib/mocha/change_state_side_effect.rb", "lib/mocha/class_method.rb", "lib/mocha/configuration.rb", "lib/mocha/deprecation.rb", "lib/mocha/exception_raiser.rb", "lib/mocha/expectation.rb", "lib/mocha/expectation_error.rb", "lib/mocha/expectation_list.rb", "lib/mocha/in_state_ordering_constraint.rb", "lib/mocha/inspect.rb", "lib/mocha/instance_method.rb", "lib/mocha/is_a.rb", "lib/mocha/logger.rb", "lib/mocha/metaclass.rb", "lib/mocha/method_matcher.rb", "lib/mocha/mini_test_adapter.rb", "lib/mocha/mock.rb", "lib/mocha/mockery.rb", "lib/mocha/module_method.rb", "lib/mocha/multiple_yields.rb", "lib/mocha/names.rb", "lib/mocha/no_yields.rb", "lib/mocha/object.rb", "lib/mocha/parameter_matchers/all_of.rb", "lib/mocha/parameter_matchers/any_of.rb", "lib/mocha/parameter_matchers/any_parameters.rb", "lib/mocha/parameter_matchers/anything.rb", "lib/mocha/parameter_matchers/base.rb", "lib/mocha/parameter_matchers/equals.rb", "lib/mocha/parameter_matchers/has_entries.rb", "lib/mocha/parameter_matchers/has_entry.rb", "lib/mocha/parameter_matchers/has_key.rb", "lib/mocha/parameter_matchers/has_value.rb", "lib/mocha/parameter_matchers/includes.rb", "lib/mocha/parameter_matchers/instance_of.rb", "lib/mocha/parameter_matchers/is_a.rb", "lib/mocha/parameter_matchers/kind_of.rb", "lib/mocha/parameter_matchers/not.rb", "lib/mocha/parameter_matchers/object.rb", "lib/mocha/parameter_matchers/optionally.rb", "lib/mocha/parameter_matchers/regexp_matches.rb", "lib/mocha/parameter_matchers/responds_with.rb", "lib/mocha/parameter_matchers/yaml_equivalent.rb", "lib/mocha/parameter_matchers.rb", "lib/mocha/parameters_matcher.rb", "lib/mocha/pretty_parameters.rb", "lib/mocha/return_values.rb", "lib/mocha/sequence.rb", "lib/mocha/single_return_value.rb", "lib/mocha/single_yield.rb", "lib/mocha/standalone.rb", "lib/mocha/state_machine.rb", "lib/mocha/stubbing_error.rb", "lib/mocha/test_case_adapter.rb", "lib/mocha/unexpected_invocation.rb", "lib/mocha/yield_parameters.rb", "lib/mocha.rb", "lib/mocha_standalone.rb", "lib/stubba.rb", "test/acceptance/acceptance_test_helper.rb", "test/acceptance/bug_18914_test.rb", "test/acceptance/bug_21465_test.rb", "test/acceptance/bug_21563_test.rb", "test/acceptance/expected_invocation_count_test.rb", "test/acceptance/failure_messages_test.rb", "test/acceptance/minitest_test.rb", "test/acceptance/mocha_example_test.rb", "test/acceptance/mocha_test_result_test.rb", "test/acceptance/mock_test.rb", "test/acceptance/mock_with_initializer_block_test.rb", "test/acceptance/mocked_methods_dispatch_test.rb", "test/acceptance/optional_parameters_test.rb", "test/acceptance/parameter_matcher_test.rb", "test/acceptance/partial_mocks_test.rb", "test/acceptance/return_value_test.rb", "test/acceptance/sequence_test.rb", "test/acceptance/standalone_test.rb", "test/acceptance/states_test.rb", "test/acceptance/stub_any_instance_method_test.rb", "test/acceptance/stub_class_method_test.rb", "test/acceptance/stub_everything_test.rb", "test/acceptance/stub_instance_method_test.rb", "test/acceptance/stub_module_method_test.rb", "test/acceptance/stub_test.rb", "test/acceptance/stubba_example_test.rb", "test/acceptance/stubba_test.rb", "test/acceptance/stubba_test_result_test.rb", "test/acceptance/stubbing_error_backtrace_test.rb", "test/acceptance/stubbing_method_unnecessarily_test.rb", "test/acceptance/stubbing_non_existent_any_instance_method_test.rb", "test/acceptance/stubbing_non_existent_class_method_test.rb", "test/acceptance/stubbing_non_existent_instance_method_test.rb", "test/acceptance/stubbing_non_public_any_instance_method_test.rb", "test/acceptance/stubbing_non_public_class_method_test.rb", "test/acceptance/stubbing_non_public_instance_method_test.rb", "test/acceptance/stubbing_on_non_mock_object_test.rb", "test/deprecation_disabler.rb", "test/execution_point.rb", "test/method_definer.rb", "test/simple_counter.rb", "test/test_helper.rb", "test/test_runner.rb", "test/unit/any_instance_method_test.rb", "test/unit/array_inspect_test.rb", "test/unit/backtrace_filter_test.rb", "test/unit/cardinality_test.rb", "test/unit/central_test.rb", "test/unit/change_state_side_effect_test.rb", "test/unit/class_method_test.rb", "test/unit/date_time_inspect_test.rb", "test/unit/exception_raiser_test.rb", "test/unit/expectation_list_test.rb", "test/unit/expectation_test.rb", "test/unit/hash_inspect_test.rb", "test/unit/in_state_ordering_constraint_test.rb", "test/unit/metaclass_test.rb", "test/unit/method_matcher_test.rb", "test/unit/mock_test.rb", "test/unit/mockery_test.rb", "test/unit/multiple_yields_test.rb", "test/unit/no_yields_test.rb", "test/unit/object_inspect_test.rb", "test/unit/object_test.rb", "test/unit/parameter_matchers/all_of_test.rb", "test/unit/parameter_matchers/any_of_test.rb", "test/unit/parameter_matchers/anything_test.rb", "test/unit/parameter_matchers/equals_test.rb", "test/unit/parameter_matchers/has_entries_test.rb", "test/unit/parameter_matchers/has_entry_test.rb", "test/unit/parameter_matchers/has_key_test.rb", "test/unit/parameter_matchers/has_value_test.rb", "test/unit/parameter_matchers/includes_test.rb", "test/unit/parameter_matchers/instance_of_test.rb", "test/unit/parameter_matchers/is_a_test.rb", "test/unit/parameter_matchers/kind_of_test.rb", "test/unit/parameter_matchers/not_test.rb", "test/unit/parameter_matchers/regexp_matches_test.rb", "test/unit/parameter_matchers/responds_with_test.rb", "test/unit/parameter_matchers/stub_matcher.rb", "test/unit/parameter_matchers/yaml_equivalent_test.rb", "test/unit/parameters_matcher_test.rb", "test/unit/return_values_test.rb", "test/unit/sequence_test.rb", "test/unit/single_return_value_test.rb", "test/unit/single_yield_test.rb", "test/unit/state_machine_test.rb", "test/unit/string_inspect_test.rb", "test/unit/yield_parameters_test.rb", "examples/misc.rb", "examples/mocha.rb", "examples/stubba.rb", "COPYING", "MIT-LICENSE", "Rakefile", "README", "RELEASE"]
-  s.has_rdoc = true
-  s.homepage = %q{http://mocha.rubyforge.org}
-  s.rdoc_options = ["--title", "Mocha", "--main", "README", "--line-numbers"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{mocha}
-  s.rubygems_version = %q{1.2.0}
-  s.summary = %q{Mocking and stubbing library}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if current_version >= 3 then
-      s.add_runtime_dependency(%q<rake>, [">= 0"])
-    else
-      s.add_dependency(%q<rake>, [">= 0"])
-    end
-  else
-    s.add_dependency(%q<rake>, [">= 0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mongrel-1.1.5-x86-mswin32-60.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mongrel-1.1.5-x86-mswin32-60.gemspec
deleted file mode 100644
index 490662b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/mongrel-1.1.5-x86-mswin32-60.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{mongrel}
-  s.version = "1.1.5"
-  s.platform = %q{x86-mswin32-60}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Zed A. Shaw"]
-  s.date = %q{2008-05-21}
-  s.default_executable = %q{mongrel_rails}
-  s.description = %q{A small fast HTTP library and server that runs Rails, Camping, Nitro and Iowa apps.}
-  s.email = %q{}
-  s.executables = ["mongrel_rails"]
-  s.files = ["bin/mongrel_rails", "CHANGELOG", "COPYING", "examples/builder.rb", "examples/camping/blog.rb", "examples/camping/README", "examples/camping/tepee.rb", "examples/httpd.conf", "examples/mime.yaml", "examples/mongrel.conf", "examples/mongrel_simple_ctrl.rb", "examples/mongrel_simple_service.rb", "examples/monitrc", "examples/random_thrash.rb", "examples/simpletest.rb", "examples/webrick_compare.rb", "ext/http11/ext_help.h", "ext/http11/extconf.rb", "ext/http11/http11.c", "ext/http11/http11_parser.c", "ext/http11/http11_parser.h", "ext/http11/http11_parser.java.rl", "ext/http11/http11_parser.rl", "ext/http11/http11_parser_common.rl", "ext/http11_java/Http11Service.java", "ext/http11_java/org/jruby/mongrel/Http11.java", "ext/http11_java/org/jruby/mongrel/Http11Parser.java", "lib/mongrel/camping.rb", "lib/mongrel/cgi.rb", "lib/mongrel/command.rb", "lib/mongrel/configurator.rb", "lib/mongrel/const.rb", "lib/mongrel/debug.rb", "lib/mongrel/gems.rb", "lib/mongrel/handlers.rb", "lib/mongrel/header_out.rb", "lib/mongrel/http_request.rb", "lib/mongrel/http_response.rb", "lib/mongrel/init.rb", "lib/mongrel/mime_types.yml", "lib/mongrel/rails.rb", "lib/mongrel/stats.rb", "lib/mongrel/tcphack.rb", "lib/mongrel/uri_classifier.rb", "lib/mongrel.rb", "LICENSE", "Manifest", "mongrel-public_cert.pem", "mongrel.gemspec", "README", "setup.rb", "test/mime.yaml", "test/mongrel.conf", "test/test_cgi_wrapper.rb", "test/test_command.rb", "test/test_conditional.rb", "test/test_configurator.rb", "test/test_debug.rb", "test/test_handlers.rb", "test/test_http11.rb", "test/test_redirect_handler.rb", "test/test_request_progress.rb", "test/test_response.rb", "test/test_stats.rb", "test/test_uriclassifier.rb", "test/test_ws.rb", "test/testhelp.rb", "TODO", "tools/trickletest.rb", "lib/http11.so"]
-  s.has_rdoc = true
-  s.homepage = %q{http://mongrel.rubyforge.org}
-  s.require_paths = ["lib", "ext"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.4")
-  s.rubyforge_project = %q{mongrel}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A small fast HTTP library and server that runs Rails, Camping, Nitro and Iowa apps.}
-  s.test_files = ["test/test_cgi_wrapper.rb", "test/test_command.rb", "test/test_conditional.rb", "test/test_configurator.rb", "test/test_debug.rb", "test/test_handlers.rb", "test/test_http11.rb", "test/test_redirect_handler.rb", "test/test_request_progress.rb", "test/test_response.rb", "test/test_stats.rb", "test/test_uriclassifier.rb", "test/test_ws.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<gem_plugin>, [">= 0.2.3"])
-      s.add_runtime_dependency(%q<cgi_multipart_eof_fix>, [">= 2.4"])
-    else
-      s.add_dependency(%q<gem_plugin>, [">= 0.2.3"])
-      s.add_dependency(%q<cgi_multipart_eof_fix>, [">= 2.4"])
-    end
-  else
-    s.add_dependency(%q<gem_plugin>, [">= 0.2.3"])
-    s.add_dependency(%q<cgi_multipart_eof_fix>, [">= 2.4"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/open4-0.9.6.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/open4-0.9.6.gemspec
deleted file mode 100644
index 8ba10c0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/open4-0.9.6.gemspec
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{open4}
-  s.version = "0.9.6"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ara T. Howard"]
-  s.autorequire = %q{open4}
-  s.cert_chain = nil
-  s.date = %q{2007-07-17}
-  s.email = %q{ara.t.howard at noaa.gov}
-  s.files = ["gemspec.rb", "install.rb", "lib", "lib/open4.rb", "README", "sample", "sample/bg.rb", "sample/block.rb", "sample/exception.rb", "sample/simple.rb", "sample/spawn.rb", "sample/stdin_timeout.rb", "sample/timeout.rb", "white_box", "white_box/leak.rb"]
-  s.homepage = %q{http://codeforpeople.com/lib/ruby/open4/}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{open4}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/pathname2-1.6.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/pathname2-1.6.1.gemspec
deleted file mode 100644
index c44f7fd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/pathname2-1.6.1.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{pathname2}
-  s.version = "1.6.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.date = %q{2008-11-07}
-  s.description = %q{An alternate implementation of the Pathname class}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/pathname2.rb", "CHANGES", "MANIFEST", "Rakefile", "README", "test/test_pathname.rb", "test/test_pathname_windows.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/shards}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{shards}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An alternate implementation of the Pathname class}
-  s.test_files = ["test/test_pathname.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<facade>, [">= 1.0.0"])
-    else
-      s.add_dependency(%q<facade>, [">= 1.0.0"])
-    end
-  else
-    s.add_dependency(%q<facade>, [">= 1.0.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ptools-1.1.6.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ptools-1.1.6.gemspec
deleted file mode 100644
index eb3defd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ptools-1.1.6.gemspec
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{ptools}
-  s.version = "1.1.6"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.cert_chain = nil
-  s.date = %q{2007-08-31}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/ptools.rb", "CHANGES", "MANIFEST", "README", "Rakefile", "test/tc_binary.rb", "test/tc_constants.rb", "test/tc_head.rb", "test/tc_image.rb", "test/tc_middle.rb", "test/tc_nlconvert.rb", "test/tc_null.rb", "test/tc_tail.rb", "test/tc_touch.rb", "test/tc_wc.rb", "test/tc_whereis.rb", "test/tc_which.rb", "test/test_file1.txt", "test/test_file2.txt", "test/ts_all.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/shards}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Extra methods for the File class}
-  s.test_files = ["test/ts_all.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rack-0.9.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rack-0.9.1.gemspec
deleted file mode 100644
index fce2806..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rack-0.9.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{rack}
-  s.version = "0.9.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Christian Neukirchen"]
-  s.date = %q{2009-01-08}
-  s.default_executable = %q{rackup}
-  s.description = %q{Rack provides minimal, modular and adaptable interface for developing web applications in Ruby.  By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.  Also see http://rack.rubyforge.org.}
-  s.email = %q{chneukirchen at gmail.com}
-  s.executables = ["rackup"]
-  s.extra_rdoc_files = ["README", "SPEC", "RDOX", "KNOWN-ISSUES"]
-  s.files = ["AUTHORS", "COPYING", "KNOWN-ISSUES", "README", "Rakefile", "bin/rackup", "contrib/rack_logo.svg", "example/lobster.ru", "example/protectedlobster.rb", "example/protectedlobster.ru", "lib/rack.rb", "lib/rack/adapter/camping.rb", "lib/rack/auth/abstract/handler.rb", "lib/rack/auth/abstract/request.rb", "lib/rack/auth/basic.rb", "lib/rack/auth/digest/md5.rb", "lib/rack/auth/digest/nonce.rb", "lib/rack/auth/digest/params.rb", "lib/rack/auth/digest/request.rb", "lib/rack/auth/openid.rb", "lib/rack/builder.rb", "lib/rack/cascade.rb", "lib/rack/commonlogger.rb", "lib/rack/conditionalget.rb", "lib/rack/content_length.rb", "lib/rack/deflater.rb", "lib/rack/directory.rb", "lib/rack/file.rb", "lib/rack/handler.rb", "lib/rack/handler/cgi.rb", "lib/rack/handler/evented_mongrel.rb", "lib/rack/handler/fastcgi.rb", "lib/rack/handler/lsws.rb", "lib/rack/handler/mongrel.rb", "lib/rack/handler/scgi.rb", "lib/rack/handler/swiftiplied_mongrel.rb", "lib/rack/handler/thin.rb", "lib/rack/handler/webrick.rb", "lib/rack/head.rb", "lib/rack/lint.rb", "lib/rack/lobster.rb", "lib/rack/methodoverride.rb", "lib/rack/mime.rb", "lib/rack/mock.rb", "lib/rack/recursive.rb", "lib/rack/reloader.rb", "lib/rack/request.rb", "lib/rack/response.rb", "lib/rack/session/abstract/id.rb", "lib/rack/session/cookie.rb", "lib/rack/session/memcache.rb", "lib/rack/session/pool.rb", "lib/rack/showexceptions.rb", "lib/rack/showstatus.rb", "lib/rack/static.rb", "lib/rack/urlmap.rb", "lib/rack/utils.rb", "test/cgi/lighttpd.conf", "test/cgi/test", "test/cgi/test.fcgi", "test/cgi/test.ru", "test/spec_rack_auth_basic.rb", "test/spec_rack_auth_digest.rb", "test/spec_rack_auth_openid.rb", "test/spec_rack_builder.rb", "test/spec_rack_camping.rb", "test/spec_rack_cascade.rb", "test/spec_rack_cgi.rb", "test/spec_rack_commonlogger.rb", "test/spec_rack_conditionalget.rb", "test/spec_rack_content_length.rb", "test/spec_rack_deflater.rb", "test/spec_rack_directory.rb", "test/spec_rack_fastcgi.rb", "test/spec_rack_file.rb", "test/spec_rack_handler.rb", "test/spec_rack_head.rb", "test/spec_rack_lint.rb", "test/spec_rack_lobster.rb", "test/spec_rack_methodoverride.rb", "test/spec_rack_mock.rb", "test/spec_rack_mongrel.rb", "test/spec_rack_recursive.rb", "test/spec_rack_request.rb", "test/spec_rack_response.rb", "test/spec_rack_session_cookie.rb", "test/spec_rack_session_memcache.rb", "test/spec_rack_session_pool.rb", "test/spec_rack_showexceptions.rb", "test/spec_rack_showstatus.rb", "test/spec_rack_static.rb", "test/spec_rack_thin.rb", "test/spec_rack_urlmap.rb", "test/spec_rack_utils.rb", "test/spec_rack_webrick.rb", "test/testrequest.rb", "SPEC", "RDOX"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rack.rubyforge.org}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{rack}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{a modular Ruby webserver interface}
-  s.test_files = ["test/spec_rack_auth_basic.rb", "test/spec_rack_auth_digest.rb", "test/spec_rack_auth_openid.rb", "test/spec_rack_builder.rb", "test/spec_rack_camping.rb", "test/spec_rack_cascade.rb", "test/spec_rack_cgi.rb", "test/spec_rack_commonlogger.rb", "test/spec_rack_conditionalget.rb", "test/spec_rack_content_length.rb", "test/spec_rack_deflater.rb", "test/spec_rack_directory.rb", "test/spec_rack_fastcgi.rb", "test/spec_rack_file.rb", "test/spec_rack_handler.rb", "test/spec_rack_head.rb", "test/spec_rack_lint.rb", "test/spec_rack_lobster.rb", "test/spec_rack_methodoverride.rb", "test/spec_rack_mock.rb", "test/spec_rack_mongrel.rb", "test/spec_rack_recursive.rb", "test/spec_rack_request.rb", "test/spec_rack_response.rb", "test/spec_rack_session_cookie.rb", "test/spec_rack_session_memcache.rb", "test/spec_rack_session_pool.rb", "test/spec_rack_showexceptions.rb", "test/spec_rack_showstatus.rb", "test/spec_rack_static.rb", "test/spec_rack_thin.rb", "test/spec_rack_urlmap.rb", "test/spec_rack_utils.rb", "test/spec_rack_webrick.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rails-2.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rails-2.2.2.gemspec
deleted file mode 100644
index d3f047a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rails-2.2.2.gemspec
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{rails}
-  s.version = "2.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Heinemeier Hansson"]
-  s.date = %q{2008-11-20}
-  s.default_executable = %q{rails}
-  s.description = %q{Rails is a framework for building web-application using CGI, FCGI, mod_ruby, or WEBrick on top of either MySQL, PostgreSQL, SQLite, DB2, SQL Server, or Oracle with eRuby- or Builder-based templates.}
-  s.email = %q{david at loudthinking.com}
-  s.executables = ["rails"]
-  s.files = ["bin", "builtin", "CHANGELOG", "config.ru", "configs", "dispatches", "doc", "environments", "fresh_rakefile", "helpers", "html", "lib", "MIT-LICENSE", "pkg", "Rakefile", "README", "bin/about", "bin/console", "bin/dbconsole", "bin/destroy", "bin/generate", "bin/performance", "bin/performance/benchmarker", "bin/performance/profiler", "bin/performance/request", "bin/plugin", "bin/process", "bin/process/inspector", "bin/process/reaper", "bin/process/spawner", "bin/rails", "bin/runner", "bin/server", "builtin/rails_info", "builtin/rails_info/rails", "builtin/rails_info/rails/info.rb", "builtin/rails_info/rails/info_controller.rb", "builtin/rails_info/rails/info_helper.rb", "builtin/rails_info/rails_info_controller.rb", "configs/apache.conf", "configs/databases", "configs/databases/frontbase.yml", "configs/databases/ibm_db.yml", "configs/databases/mysql.yml", "configs/databases/oracle.yml", "configs/databases/postgresql.yml", "configs/databases/sqlite2.yml", "configs/databases/sqlite3.yml", "configs/empty.log", "configs/initializers", "configs/initializers/inflections.rb", "configs/initializers/mime_types.rb", "configs/initializers/new_rails_defaults.rb", "configs/lighttpd.conf", "configs/locales", "configs/locales/en.yml", "configs/routes.rb", "doc/guides", "doc/guides/html", "doc/guides/html/2_2_release_notes.html", "doc/guides/html/actioncontroller_basics.html", "doc/guides/html/activerecord_validations_callbacks.html", "doc/guides/html/association_basics.html", "doc/guides/html/authors.html", "doc/guides/html/benchmarking_and_profiling.html", "doc/guides/html/caching_with_rails.html", "doc/guides/html/command_line.html", "doc/guides/html/configuring.html", "doc/guides/html/creating_plugins.html", "doc/guides/html/debugging_rails_applications.html", "doc/guides/html/finders.html", "doc/guides/html/form_helpers.html", "doc/guides/html/getting_started_with_rails.html", "doc/guides/html/index.html", "doc/guides/html/layouts_and_rendering.html", "doc/guides/html/migrations.html", "doc/guides/html/routing_outside_in.html", "doc/guides/html/security.html", "doc/guides/html/testing_rails_applications.html", "doc/guides/source", "doc/guides/source/2_2_release_notes.txt", "doc/guides/source/actioncontroller_basics", "doc/guides/source/actioncontroller_basics/changelog.txt", "doc/guides/source/actioncontroller_basics/cookies.txt", "doc/guides/source/actioncontroller_basics/csrf.txt", "doc/guides/source/actioncontroller_basics/filters.txt", "doc/guides/source/actioncontroller_basics/http_auth.txt", "doc/guides/source/actioncontroller_basics/index.txt", "doc/guides/source/actioncontroller_basics/introduction.txt", "doc/guides/source/actioncontroller_basics/methods.txt", "doc/guides/source/actioncontroller_basics/parameter_filtering.txt", "doc/guides/source/actioncontroller_basics/params.txt", "doc/guides/source/actioncontroller_basics/request_response_objects.txt", "doc/guides/source/actioncontroller_basics/rescue.txt", "doc/guides/source/actioncontroller_basics/session.txt", "doc/guides/source/actioncontroller_basics/streaming.txt", "doc/guides/source/actioncontroller_basics/verification.txt", "doc/guides/source/active_record_basics.txt", "doc/guides/source/activerecord_validations_callbacks.txt", "doc/guides/source/association_basics.txt", "doc/guides/source/authors.txt", "doc/guides/source/benchmarking_and_profiling", "doc/guides/source/benchmarking_and_profiling/appendix.txt", "doc/guides/source/benchmarking_and_profiling/digging_deeper.txt", "doc/guides/source/benchmarking_and_profiling/edge_rails_features.txt", "doc/guides/source/benchmarking_and_profiling/gameplan.txt", "doc/guides/source/benchmarking_and_profiling/index.txt", "doc/guides/source/benchmarking_and_profiling/rubyprof.txt", "doc/guides/source/benchmarking_and_profiling/statistics.txt", "doc/guides/source/caching_with_rails.txt", "doc/guides/source/command_line.txt", "doc/guides/source/configuring.txt", "doc/guides/source/creating_plugins", "doc/guides/source/creating_plugins/acts_as_yaffle.txt", "doc/guides/source/creating_plugins/appendix.txt", "doc/guides/source/creating_plugins/controllers.txt", "doc/guides/source/creating_plugins/core_ext.txt", "doc/guides/source/creating_plugins/custom_route.txt", "doc/guides/source/creating_plugins/gem.txt", "doc/guides/source/creating_plugins/generator_method.txt", "doc/guides/source/creating_plugins/helpers.txt", "doc/guides/source/creating_plugins/index.txt", "doc/guides/source/creating_plugins/migration_generator.txt", "doc/guides/source/creating_plugins/models.txt", "doc/guides/source/creating_plugins/odds_and_ends.txt", "doc/guides/source/creating_plugins/test_setup.txt", "doc/guides/source/debugging_rails_applications.txt", "doc/guides/source/finders.txt", "doc/guides/source/form_helpers.txt", "doc/guides/source/getting_started_with_rails.txt", "doc/guides/source/images", "doc/guides/source/images/belongs_to.png", "doc/guides/source/images/bullet.gif", "doc/guides/source/images/csrf.png", "doc/guides/source/images/habtm.png", "doc/guides/source/images/has_many.png", "doc/guides/source/images/has_many_through.png", "doc/guides/source/images/has_one.png", "doc/guides/source/images/has_one_through.png", "doc/guides/source/images/header_backdrop.png", "doc/guides/source/images/icons", "doc/guides/source/images/icons/callouts", "doc/guides/source/images/icons/callouts/1.png", "doc/guides/source/images/icons/callouts/10.png", "doc/guides/source/images/icons/callouts/11.png", "doc/guides/source/images/icons/callouts/12.png", "doc/guides/source/images/icons/callouts/13.png", "doc/guides/source/images/icons/callouts/14.png", "doc/guides/source/images/icons/callouts/15.png", "doc/guides/source/images/icons/callouts/2.png", "doc/guides/source/images/icons/callouts/3.png", "doc/guides/source/images/icons/callouts/4.png", "doc/guides/source/images/icons/callouts/5.png", "doc/guides/source/images/icons/callouts/6.png", "doc/guides/source/images/icons/callouts/7.png", "doc/guides/source/images/icons/callouts/8.png", "doc/guides/source/images/icons/callouts/9.png", "doc/guides/source/images/icons/caution.png", "doc/guides/source/images/icons/example.png", "doc/guides/source/images/icons/home.png", "doc/guides/source/images/icons/important.png", "doc/guides/source/images/icons/next.png", "doc/guides/source/images/icons/note.png", "doc/guides/source/images/icons/prev.png", "doc/guides/source/images/icons/README", "doc/guides/source/images/icons/tip.png", "doc/guides/source/images/icons/up.png", "doc/guides/source/images/icons/warning.png", "doc/guides/source/images/polymorphic.png", "doc/guides/source/images/rails_logo_remix.gif", "doc/guides/source/images/ruby_on_rails_by_mike_rundle2.gif", "doc/guides/source/images/session_fixation.png", "doc/guides/source/index.txt", "doc/guides/source/layouts_and_rendering.txt", "doc/guides/source/migrations", "doc/guides/source/migrations/anatomy_of_a_migration.txt", "doc/guides/source/migrations/changelog.txt", "doc/guides/source/migrations/creating_a_migration.txt", "doc/guides/source/migrations/foreign_keys.txt", "doc/guides/source/migrations/index.txt", "doc/guides/source/migrations/rakeing_around.txt", "doc/guides/source/migrations/scheming.txt", "doc/guides/source/migrations/using_models_in_migrations.txt", "doc/guides/source/migrations/writing_a_migration.txt", "doc/guides/source/routing_outside_in.txt", "doc/guides/source/security.txt", "doc/guides/source/stylesheets", "doc/guides/source/stylesheets/base.css", "doc/guides/source/stylesheets/forms.css", "doc/guides/source/stylesheets/more.css", "doc/guides/source/templates", "doc/guides/source/templates/guides.html.erb", "doc/guides/source/templates/inline.css", "doc/guides/source/testing_rails_applications.txt", "doc/README_FOR_APP", "dispatches/dispatch.fcgi", "dispatches/dispatch.rb", "dispatches/gateway.cgi", "environments/boot.rb", "environments/development.rb", "environments/environment.rb", "environments/production.rb", "environments/test.rb", "helpers/application.rb", "helpers/application_helper.rb", "helpers/performance_test.rb", "helpers/test_helper.rb", "html/404.html", "html/422.html", "html/500.html", "html/favicon.ico", "html/images", "html/images/rails.png", "html/index.html", "html/javascripts", "html/javascripts/application.js", "html/javascripts/controls.js", "html/javascripts/dragdrop.js", "html/javascripts/effects.js", "html/javascripts/prototype.js", "html/robots.txt", "lib/code_statistics.rb", "lib/commands", "lib/commands/about.rb", "lib/commands/console.rb", "lib/commands/dbconsole.rb", "lib/commands/destroy.rb", "lib/commands/generate.rb", "lib/commands/ncgi", "lib/commands/ncgi/listener", "lib/commands/ncgi/tracker", "lib/commands/performance", "lib/commands/performance/benchmarker.rb", "lib/commands/performance/profiler.rb", "lib/commands/performance/request.rb", "lib/commands/plugin.rb", "lib/commands/process", "lib/commands/process/inspector.rb", "lib/commands/process/reaper.rb", "lib/commands/process/spawner.rb", "lib/commands/process/spinner.rb", "lib/commands/runner.rb", "lib/commands/server.rb", "lib/commands/servers", "lib/commands/servers/base.rb", "lib/commands/servers/lighttpd.rb", "lib/commands/servers/mongrel.rb", "lib/commands/servers/new_mongrel.rb", "lib/commands/servers/thin.rb", "lib/commands/servers/webrick.rb", "lib/commands/update.rb", "lib/commands.rb", "lib/console_app.rb", "lib/console_sandbox.rb", "lib/console_with_helpers.rb", "lib/dispatcher.rb", "lib/fcgi_handler.rb", "lib/initializer.rb", "lib/performance_test_help.rb", "lib/rails", "lib/rails/gem_builder.rb", "lib/rails/gem_dependency.rb", "lib/rails/mongrel_server", "lib/rails/mongrel_server/commands.rb", "lib/rails/mongrel_server/handler.rb", "lib/rails/plugin", "lib/rails/plugin/loader.rb", "lib/rails/plugin/locator.rb", "lib/rails/plugin.rb", "lib/rails/rack", "lib/rails/rack/logger.rb", "lib/rails/rack/static.rb", "lib/rails/rack.rb", "lib/rails/vendor_gem_source_index.rb", "lib/rails/version.rb", "lib/rails_generator", "lib/rails_generator/base.rb", "lib/rails_generator/commands.rb", "lib/rails_generator/generated_attribute.rb", "lib/rails_generator/generators", "lib/rails_generator/generators/applications", "lib/rails_generator/generators/applications/app", "lib/rails_generator/generators/applications/app/app_generator.rb", "lib/rails_generator/generators/applications/app/USAGE", "lib/rails_generator/generators/components", "lib/rails_generator/generators/components/controller", "lib/rails_generator/generators/components/controller/controller_generator.rb", "lib/rails_generator/generators/components/controller/templates", "lib/rails_generator/generators/components/controller/templates/controller.rb", "lib/rails_generator/generators/components/controller/templates/functional_test.rb", "lib/rails_generator/generators/components/controller/templates/helper.rb", "lib/rails_generator/generators/components/controller/templates/view.html.erb", "lib/rails_generator/generators/components/controller/USAGE", "lib/rails_generator/generators/components/integration_test", "lib/rails_generator/generators/components/integration_test/integration_test_generator.rb", "lib/rails_generator/generators/components/integration_test/templates", "lib/rails_generator/generators/components/integration_test/templates/integration_test.rb", "lib/rails_generator/generators/components/integration_test/USAGE", "lib/rails_generator/generators/components/mailer", "lib/rails_generator/generators/components/mailer/mailer_generator.rb", "lib/rails_generator/generators/components/mailer/templates", "lib/rails_generator/generators/components/mailer/templates/fixture.erb", "lib/rails_generator/generators/components/mailer/templates/fixture.rhtml", "lib/rails_generator/generators/components/mailer/templates/mailer.rb", "lib/rails_generator/generators/components/mailer/templates/unit_test.rb", "lib/rails_generator/generators/components/mailer/templates/view.erb", "lib/rails_generator/generators/components/mailer/templates/view.rhtml", "lib/rails_generator/generators/components/mailer/USAGE", "lib/rails_generator/generators/components/migration", "lib/rails_generator/generators/components/migration/migration_generator.rb", "lib/rails_generator/generators/components/migration/templates", "lib/rails_generator/generators/components/migration/templates/migration.rb", "lib/rails_generator/generators/components/migration/USAGE", "lib/rails_generator/generators/components/model", "lib/rails_generator/generators/components/model/model_generator.rb", "lib/rails_generator/generators/components/model/templates", "lib/rails_generator/generators/components/model/templates/fixtures.yml", "lib/rails_generator/generators/components/model/templates/migration.rb", "lib/rails_generator/generators/components/model/templates/model.rb", "lib/rails_generator/generators/components/model/templates/unit_test.rb", "lib/rails_generator/generators/components/model/USAGE", "lib/rails_generator/generators/components/observer", "lib/rails_generator/generators/components/observer/observer_generator.rb", "lib/rails_generator/generators/components/observer/templates", "lib/rails_generator/generators/components/observer/templates/observer.rb", "lib/rails_generator/generators/components/observer/templates/unit_test.rb", "lib/rails_generator/generators/components/observer/USAGE", "lib/rails_generator/generators/components/performance_test", "lib/rails_generator/generators/components/performance_test/performance_test_generator.rb", "lib/rails_generator/generators/components/performance_test/templates", "lib/rails_generator/generators/components/performance_test/templates/performance_test.rb", "lib/rails_generator/generators/components/performance_test/USAGE", "lib/rails_generator/generators/components/plugin", "lib/rails_generator/generators/components/plugin/plugin_generator.rb", "lib/rails_generator/generators/components/plugin/templates", "lib/rails_generator/generators/components/plugin/templates/generator.rb", "lib/rails_generator/generators/components/plugin/templates/init.rb", "lib/rails_generator/generators/components/plugin/templates/install.rb", "lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE", "lib/rails_generator/generators/components/plugin/templates/plugin.rb", "lib/rails_generator/generators/components/plugin/templates/Rakefile", "lib/rails_generator/generators/components/plugin/templates/README", "lib/rails_generator/generators/components/plugin/templates/tasks.rake", "lib/rails_generator/generators/components/plugin/templates/test_helper.rb", "lib/rails_generator/generators/components/plugin/templates/uninstall.rb", "lib/rails_generator/generators/components/plugin/templates/unit_test.rb", "lib/rails_generator/generators/components/plugin/templates/USAGE", "lib/rails_generator/generators/components/plugin/USAGE", "lib/rails_generator/generators/components/resource", "lib/rails_generator/generators/components/resource/resource_generator.rb", "lib/rails_generator/generators/components/resource/templates", "lib/rails_generator/generators/components/resource/templates/controller.rb", "lib/rails_generator/generators/components/resource/templates/functional_test.rb", "lib/rails_generator/generators/components/resource/templates/helper.rb", "lib/rails_generator/generators/components/resource/USAGE", "lib/rails_generator/generators/components/scaffold", "lib/rails_generator/generators/components/scaffold/scaffold_generator.rb", "lib/rails_generator/generators/components/scaffold/templates", "lib/rails_generator/generators/components/scaffold/templates/controller.rb", "lib/rails_generator/generators/components/scaffold/templates/functional_test.rb", "lib/rails_generator/generators/components/scaffold/templates/helper.rb", "lib/rails_generator/generators/components/scaffold/templates/layout.html.erb", "lib/rails_generator/generators/components/scaffold/templates/style.css", "lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb", "lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb", "lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb", "lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb", "lib/rails_generator/generators/components/scaffold/USAGE", "lib/rails_generator/generators/components/session_migration", "lib/rails_generator/generators/components/session_migration/session_migration_generator.rb", "lib/rails_generator/generators/components/session_migration/templates", "lib/rails_generator/generators/components/session_migration/templates/migration.rb", "lib/rails_generator/generators/components/session_migration/USAGE", "lib/rails_generator/lookup.rb", "lib/rails_generator/manifest.rb", "lib/rails_generator/options.rb", "lib/rails_generator/scripts", "lib/rails_generator/scripts/destroy.rb", "lib/rails_generator/scripts/generate.rb", "lib/rails_generator/scripts/update.rb", "lib/rails_generator/scripts.rb", "lib/rails_generator/secret_key_generator.rb", "lib/rails_generator/simple_logger.rb", "lib/rails_generator/spec.rb", "lib/rails_generator.rb", "lib/railties_path.rb", "lib/ruby_version_check.rb", "lib/rubyprof_ext.rb", "lib/source_annotation_extractor.rb", "lib/tasks", "lib/tasks/annotations.rake", "lib/tasks/databases.rake", "lib/tasks/documentation.rake", "lib/tasks/framework.rake", "lib/tasks/gems.rake", "lib/tasks/log.rake", "lib/tasks/misc.rake", "lib/tasks/rails.rb", "lib/tasks/routes.rake", "lib/tasks/statistics.rake", "lib/tasks/testing.rake", "lib/tasks/tmp.rake", "lib/test_help.rb", "lib/webrick_server.rb"]
-  s.homepage = %q{http://www.rubyonrails.org}
-  s.rdoc_options = ["--exclude", "."]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{rails}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Web-application framework with template engine, control-flow layer, and ORM.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<rake>, [">= 0.8.3"])
-      s.add_runtime_dependency(%q<activesupport>, ["= 2.2.2"])
-      s.add_runtime_dependency(%q<activerecord>, ["= 2.2.2"])
-      s.add_runtime_dependency(%q<actionpack>, ["= 2.2.2"])
-      s.add_runtime_dependency(%q<actionmailer>, ["= 2.2.2"])
-      s.add_runtime_dependency(%q<activeresource>, ["= 2.2.2"])
-    else
-      s.add_dependency(%q<rake>, [">= 0.8.3"])
-      s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-      s.add_dependency(%q<activerecord>, ["= 2.2.2"])
-      s.add_dependency(%q<actionpack>, ["= 2.2.2"])
-      s.add_dependency(%q<actionmailer>, ["= 2.2.2"])
-      s.add_dependency(%q<activeresource>, ["= 2.2.2"])
-    end
-  else
-    s.add_dependency(%q<rake>, [">= 0.8.3"])
-    s.add_dependency(%q<activesupport>, ["= 2.2.2"])
-    s.add_dependency(%q<activerecord>, ["= 2.2.2"])
-    s.add_dependency(%q<actionpack>, ["= 2.2.2"])
-    s.add_dependency(%q<actionmailer>, ["= 2.2.2"])
-    s.add_dependency(%q<activeresource>, ["= 2.2.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rake-0.8.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rake-0.8.4.gemspec
deleted file mode 100644
index f64bfcd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rake-0.8.4.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{rake}
-  s.version = "0.8.4"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jim Weirich"]
-  s.date = %q{2009-03-03}
-  s.default_executable = %q{rake}
-  s.description = %q{Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.}
-  s.email = %q{jim at weirichhouse.org}
-  s.executables = ["rake"]
-  s.extra_rdoc_files = ["README", "MIT-LICENSE", "TODO", "CHANGES", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc"]
-  s.files = ["install.rb", "CHANGES", "MIT-LICENSE", "Rakefile", "README", "TODO", "bin/rake", "lib/rake/classic_namespace.rb", "lib/rake/clean.rb", "lib/rake/contrib/compositepublisher.rb", "lib/rake/contrib/ftptools.rb", "lib/rake/contrib/publisher.rb", "lib/rake/contrib/rubyforgepublisher.rb", "lib/rake/contrib/sshpublisher.rb", "lib/rake/contrib/sys.rb", "lib/rake/gempackagetask.rb", "lib/rake/loaders/makefile.rb", "lib/rake/packagetask.rb", "lib/rake/rake_test_loader.rb", "lib/rake/rdoctask.rb", "lib/rake/repaired_system.rb", "lib/rake/ruby182_test_unit_fix.rb", "lib/rake/runtest.rb", "lib/rake/tasklib.rb", "lib/rake/testtask.rb", "lib/rake/win32.rb", "lib/rake.rb", "test/capture_stdout.rb", "test/check_expansion.rb", "test/contrib/test_sys.rb", "test/data/rakelib/test1.rb", "test/data/rbext/rakefile.rb", "test/filecreation.rb", "test/functional.rb", "test/in_environment.rb", "test/rake_test_setup.rb", "test/reqfile.rb", "test/reqfile2.rb", "test/session_functional.rb", "test/shellcommand.rb", "test/test_application.rb", "test/test_clean.rb", "test/test_definitions.rb", "test/test_earlytime.rb", "test/test_extension.rb", "test/test_file_creation_task.rb", "test/test_file_task.rb", "test/test_filelist.rb", "test/test_fileutils.rb", "test/test_ftp.rb", "test/test_invocation_chain.rb", "test/test_makefile_loader.rb", "test/test_multitask.rb", "test/test_namespace.rb", "test/test_package_task.rb", "test/test_pathmap.rb", "test/test_rake.rb", "test/test_rdoc_task.rb", "test/test_require.rb", "test/test_rules.rb", "test/test_task_arguments.rb", "test/test_task_manager.rb", "test/test_tasklib.rb", "test/test_tasks.rb", "test/test_test_task.rb", "test/test_top_level_functions.rb", "test/test_win32.rb", "test/data/imports/deps.mf", "test/data/sample.mf", "test/data/chains/Rakefile", "test/data/default/Rakefile", "test/data/dryrun/Rakefile", "test/data/file_creation_task/Rakefile", "test/data/imports/Rakefile", "test/data/multidesc/Rakefile", "test/data/namespace/Rakefile", "test/data/statusreturn/Rakefile", "test/data/unittest/Rakefile", "test/data/unittest/subdir", "doc/command_line_usage.rdoc", "doc/example", "doc/example/a.c", "doc/example/b.c", "doc/example/main.c", "doc/example/Rakefile1", "doc/example/Rakefile2", "doc/glossary.rdoc", "doc/jamis.rb", "doc/proto_rake.rdoc", "doc/rake.1.gz", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rake.rubyforge.org}
-  s.rdoc_options = ["--line-numbers", "--inline-source", "--main", "README", "--title", "Rake -- Ruby Make"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{rake}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Ruby based make-like utility.}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rspec-1.1.12.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rspec-1.1.12.gemspec
deleted file mode 100644
index 12ae3d9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rspec-1.1.12.gemspec
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{rspec}
-  s.version = "1.1.12"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["RSpec Development Team"]
-  s.date = %q{2009-01-10}
-  s.description = %q{Behaviour Driven Development for Ruby.}
-  s.email = ["rspec-devel at rubyforge.org"]
-  s.executables = ["autospec", "spec"]
-  s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "TODO.txt", "examples/failing/README.txt", "examples/passing/priority.txt", "spec/spec/runner/empty_file.txt", "spec/spec/runner/examples.txt", "spec/spec/runner/failed.txt"]
-  s.files = [".autotest", "History.txt", "License.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO.txt", "bin/autospec", "bin/spec", "examples/failing/README.txt", "examples/failing/diffing_spec.rb", "examples/failing/failing_autogenerated_docstrings_example.rb", "examples/failing/failure_in_after.rb", "examples/failing/failure_in_before.rb", "examples/failing/mocking_example.rb", "examples/failing/mocking_with_flexmock.rb", "examples/failing/mocking_with_mocha.rb", "examples/failing/mocking_with_rr.rb", "examples/failing/partial_mock_example.rb", "examples/failing/predicate_example.rb", "examples/failing/raising_example.rb", "examples/failing/spec_helper.rb", "examples/failing/syntax_error_example.rb", "examples/failing/team_spec.rb", "examples/failing/timeout_behaviour.rb", "examples/passing/autogenerated_docstrings_example.rb", "examples/passing/before_and_after_example.rb", "examples/passing/behave_as_example.rb", "examples/passing/custom_expectation_matchers.rb", "examples/passing/custom_formatter.rb", "examples/passing/dynamic_spec.rb", "examples/passing/file_accessor.rb", "examples/passing/file_accessor_spec.rb", "examples/passing/greeter_spec.rb", "examples/passing/helper_method_example.rb", "examples/passing/io_processor.rb", "examples/passing/io_processor_spec.rb", "examples/passing/legacy_spec.rb", "examples/passing/mocking_example.rb", "examples/passing/multi_threaded_example_group_runner.rb", "examples/passing/nested_classes_example.rb", "examples/passing/partial_mock_example.rb", "examples/passing/pending_example.rb", "examples/passing/predicate_example.rb", "examples/passing/priority.txt", "examples/passing/shared_example_group_example.rb", "examples/passing/shared_stack_examples.rb", "examples/passing/simple_matcher_example.rb", "examples/passing/spec_helper.rb", "examples/passing/stack.rb", "examples/passing/stack_spec.rb", "examples/passing/stack_spec_with_nested_example_groups.rb", "examples/passing/stubbing_example.rb", "examples/passing/yielding_example.rb", "examples/ruby1.9.compatibility/access_to_constants_spec.rb", "features/before_and_after_blocks/before_and_after_blocks.feature", "features/example_groups/autogenerated_docstrings.feature", "features/example_groups/example_group_with_should_methods.feature", "features/example_groups/nested_groups.feature", "features/example_groups/output.feature", "features/interop/examples_and_tests_together.feature", "features/interop/test_but_not_test_unit.feature", "features/interop/test_case_with_should_methods.feature", "features/mock_framework_integration/use_flexmock.feature", "features/step_definitions/running_rspec.rb", "features/support/env.rb", "features/support/helpers/cmdline.rb", "features/support/helpers/story_helper.rb", "features/support/matchers/smart_match.rb", "init.rb", "lib/adapters/mock_frameworks/flexmock.rb", "lib/adapters/mock_frameworks/mocha.rb", "lib/adapters/mock_frameworks/rr.rb", "lib/adapters/mock_frameworks/rspec.rb", "lib/autotest/discover.rb", "lib/autotest/rspec.rb", "lib/spec.rb", "lib/spec/dsl.rb", "lib/spec/dsl/main.rb", "lib/spec/example.rb", "lib/spec/example/before_and_after_hooks.rb", "lib/spec/example/errors.rb", "lib/spec/example/example_group.rb", "lib/spec/example/example_group_factory.rb", "lib/spec/example/example_group_methods.rb", "lib/spec/example/example_matcher.rb", "lib/spec/example/example_methods.rb", "lib/spec/example/module_reopening_fix.rb", "lib/spec/example/pending.rb", "lib/spec/example/shared_example_group.rb", "lib/spec/expectations.rb", "lib/spec/expectations/differs/default.rb", "lib/spec/expectations/errors.rb", "lib/spec/expectations/extensions.rb", "lib/spec/expectations/extensions/object.rb", "lib/spec/expectations/extensions/string_and_symbol.rb", "lib/spec/expectations/handler.rb", "lib/spec/interop/test.rb", "lib/spec/interop/test/unit/autorunner.rb", "lib/spec/interop/test/unit/testcase.rb", "lib/spec/interop/test/unit/testresult.rb", "lib/spec/interop/test/unit/testsuite_adapter.rb", "lib/spec/interop/test/unit/ui/console/testrunner.rb", "lib/spec/matchers.rb", "lib/spec/matchers/be.rb", "lib/spec/matchers/be_close.rb", "lib/spec/matchers/change.rb", "lib/spec/matchers/eql.rb", "lib/spec/matchers/equal.rb", "lib/spec/matchers/errors.rb", "lib/spec/matchers/exist.rb", "lib/spec/matchers/generated_descriptions.rb", "lib/spec/matchers/has.rb", "lib/spec/matchers/have.rb", "lib/spec/matchers/include.rb", "lib/spec/matchers/match.rb", "lib/spec/matchers/match_array.rb", "lib/spec/matchers/method_missing.rb", "lib/spec/matchers/operator_matcher.rb", "lib/spec/matchers/raise_error.rb", "lib/spec/matchers/respond_to.rb", "lib/spec/matchers/satisfy.rb", "lib/spec/matchers/simple_matcher.rb", "lib/spec/matchers/throw_symbol.rb", "lib/spec/matchers/wrap_expectation.rb", "lib/spec/mocks.rb", "lib/spec/mocks/argument_constraints.rb", "lib/spec/mocks/argument_expectation.rb", "lib/spec/mocks/error_generator.rb", "lib/spec/mocks/errors.rb", "lib/spec/mocks/extensions.rb", "lib/spec/mocks/extensions/object.rb", "lib/spec/mocks/framework.rb", "lib/spec/mocks/message_expectation.rb", "lib/spec/mocks/methods.rb", "lib/spec/mocks/mock.rb", "lib/spec/mocks/order_group.rb", "lib/spec/mocks/proxy.rb", "lib/spec/mocks/space.rb", "lib/spec/mocks/spec_methods.rb", "lib/spec/rake/spectask.rb", "lib/spec/rake/verify_rcov.rb", "lib/spec/ruby.rb", "lib/spec/runner.rb", "lib/spec/runner/backtrace_tweaker.rb", "lib/spec/runner/class_and_arguments_parser.rb", "lib/spec/runner/command_line.rb", "lib/spec/runner/configuration.rb", "lib/spec/runner/drb_command_line.rb", "lib/spec/runner/example_group_runner.rb", "lib/spec/runner/formatter/base_formatter.rb", "lib/spec/runner/formatter/base_text_formatter.rb", "lib/spec/runner/formatter/failing_example_groups_formatter.rb", "lib/spec/runner/formatter/failing_examples_formatter.rb", "lib/spec/runner/formatter/html_formatter.rb", "lib/spec/runner/formatter/nested_text_formatter.rb", "lib/spec/runner/formatter/profile_formatter.rb", "lib/spec/runner/formatter/progress_bar_formatter.rb", "lib/spec/runner/formatter/snippet_extractor.rb", "lib/spec/runner/formatter/specdoc_formatter.rb", "lib/spec/runner/formatter/story/html_formatter.rb", "lib/spec/runner/formatter/story/plain_text_formatter.rb", "lib/spec/runner/formatter/story/progress_bar_formatter.rb", "lib/spec/runner/formatter/text_mate_formatter.rb", "lib/spec/runner/heckle_runner.rb", "lib/spec/runner/heckle_runner_unsupported.rb", "lib/spec/runner/option_parser.rb", "lib/spec/runner/options.rb", "lib/spec/runner/reporter.rb", "lib/spec/runner/spec_parser.rb", "lib/spec/story.rb", "lib/spec/story/extensions.rb", "lib/spec/story/extensions/main.rb", "lib/spec/story/extensions/regexp.rb", "lib/spec/story/extensions/string.rb", "lib/spec/story/given_scenario.rb", "lib/spec/story/runner.rb", "lib/spec/story/runner/plain_text_story_runner.rb", "lib/spec/story/runner/scenario_collector.rb", "lib/spec/story/runner/scenario_runner.rb", "lib/spec/story/runner/story_mediator.rb", "lib/spec/story/runner/story_parser.rb", "lib/spec/story/runner/story_runner.rb", "lib/spec/story/scenario.rb", "lib/spec/story/step.rb", "lib/spec/story/step_group.rb", "lib/spec/story/step_mother.rb", "lib/spec/story/story.rb", "lib/spec/story/world.rb", "lib/spec/version.rb", "resources/rake/examples.rake", "resources/rake/examples_with_rcov.rake", "resources/rake/failing_examples_with_html.rake", "resources/rake/verify_rcov.rake", "resources/spec/example_group_with_should_methods.rb", "resources/spec/simple_spec.rb", "resources/spec/spec_with_flexmock.rb", "resources/test/spec_and_test_together.rb", "resources/test/spec_including_test_but_not_unit.rb", "resources/test/test_case_with_should_methods.rb", "rspec.gemspec", "spec/README.jruby", "spec/autotest/autotest_helper.rb", "spec/autotest/autotest_matchers.rb", "spec/autotest/discover_spec.rb", "spec/autotest/failed_results_re_spec.rb", "spec/autotest/rspec_spec.rb", "spec/rspec_suite.rb", "spec/ruby_forker.rb", "spec/spec.opts", "spec/spec/dsl/main_spec.rb", "spec/spec/example/example_group_class_definition_spec.rb", "spec/spec/example/example_group_factory_spec.rb", "spec/spec/example/example_group_methods_spec.rb", "spec/spec/example/example_group_spec.rb", "spec/spec/example/example_matcher_spec.rb", "spec/spec/example/example_methods_spec.rb", "spec/spec/example/helper_method_spec.rb", "spec/spec/example/nested_example_group_spec.rb", "spec/spec/example/pending_module_spec.rb", "spec/spec/example/predicate_matcher_spec.rb", "spec/spec/example/shared_example_group_spec.rb", "spec/spec/example/subclassing_example_group_spec.rb", "spec/spec/expectations/differs/default_spec.rb", "spec/spec/expectations/extensions/object_spec.rb", "spec/spec/expectations/fail_with_spec.rb", "spec/spec/expectations/wrap_expectation_spec.rb", "spec/spec/interop/test/unit/resources/spec_that_fails.rb", "spec/spec/interop/test/unit/resources/spec_that_passes.rb", "spec/spec/interop/test/unit/resources/spec_with_errors.rb", "spec/spec/interop/test/unit/resources/spec_with_options_hash.rb", "spec/spec/interop/test/unit/resources/test_case_that_fails.rb", "spec/spec/interop/test/unit/resources/test_case_that_passes.rb", "spec/spec/interop/test/unit/resources/test_case_with_errors.rb", "spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb", "spec/spec/interop/test/unit/spec_spec.rb", "spec/spec/interop/test/unit/test_unit_spec_helper.rb", "spec/spec/interop/test/unit/testcase_spec.rb", "spec/spec/interop/test/unit/testsuite_adapter_spec.rb", "spec/spec/matchers/be_close_spec.rb", "spec/spec/matchers/be_spec.rb", "spec/spec/matchers/change_spec.rb", "spec/spec/matchers/description_generation_spec.rb", "spec/spec/matchers/eql_spec.rb", "spec/spec/matchers/equal_spec.rb", "spec/spec/matchers/exist_spec.rb", "spec/spec/matchers/handler_spec.rb", "spec/spec/matchers/has_spec.rb", "spec/spec/matchers/have_spec.rb", "spec/spec/matchers/include_spec.rb", "spec/spec/matchers/match_array_spec.rb", "spec/spec/matchers/match_spec.rb", "spec/spec/matchers/matcher_methods_spec.rb", "spec/spec/matchers/mock_constraint_matchers_spec.rb", "spec/spec/matchers/operator_matcher_spec.rb", "spec/spec/matchers/raise_error_spec.rb", "spec/spec/matchers/respond_to_spec.rb", "spec/spec/matchers/satisfy_spec.rb", "spec/spec/matchers/simple_matcher_spec.rb", "spec/spec/matchers/throw_symbol_spec.rb", "spec/spec/mocks/any_number_of_times_spec.rb", "spec/spec/mocks/argument_expectation_spec.rb", "spec/spec/mocks/at_least_spec.rb", "spec/spec/mocks/at_most_spec.rb", "spec/spec/mocks/bug_report_10260_spec.rb", "spec/spec/mocks/bug_report_10263_spec.rb", "spec/spec/mocks/bug_report_11545_spec.rb", "spec/spec/mocks/bug_report_15719_spec.rb", "spec/spec/mocks/bug_report_496.rb", "spec/spec/mocks/bug_report_600_spec.rb", "spec/spec/mocks/bug_report_7611_spec.rb", "spec/spec/mocks/bug_report_7805_spec.rb", "spec/spec/mocks/bug_report_8165_spec.rb", "spec/spec/mocks/bug_report_8302_spec.rb", "spec/spec/mocks/failing_mock_argument_constraints_spec.rb", "spec/spec/mocks/hash_including_matcher_spec.rb", "spec/spec/mocks/hash_not_including_matcher_spec.rb", "spec/spec/mocks/mock_ordering_spec.rb", "spec/spec/mocks/mock_space_spec.rb", "spec/spec/mocks/mock_spec.rb", "spec/spec/mocks/multiple_return_value_spec.rb", "spec/spec/mocks/nil_expectation_warning_spec.rb", "spec/spec/mocks/null_object_mock_spec.rb", "spec/spec/mocks/once_counts_spec.rb", "spec/spec/mocks/options_hash_spec.rb", "spec/spec/mocks/partial_mock_spec.rb", "spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb", "spec/spec/mocks/passing_mock_argument_constraints_spec.rb", "spec/spec/mocks/precise_counts_spec.rb", "spec/spec/mocks/record_messages_spec.rb", "spec/spec/mocks/stub_spec.rb", "spec/spec/mocks/stubbed_message_expectations_spec.rb", "spec/spec/mocks/twice_counts_spec.rb", "spec/spec/package/bin_spec_spec.rb", "spec/spec/runner/class_and_argument_parser_spec.rb", "spec/spec/runner/command_line_spec.rb", "spec/spec/runner/configuration_spec.rb", "spec/spec/runner/drb_command_line_spec.rb", "spec/spec/runner/empty_file.txt", "spec/spec/runner/example_group_runner_spec.rb", "spec/spec/runner/examples.txt", "spec/spec/runner/failed.txt", "spec/spec/runner/formatter/base_formatter_spec.rb", "spec/spec/runner/formatter/base_text_formatter_spec.rb", "spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb", "spec/spec/runner/formatter/failing_examples_formatter_spec.rb", "spec/spec/runner/formatter/html_formatted-1.8.4.html", "spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html", "spec/spec/runner/formatter/html_formatted-1.8.5.html", "spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html", "spec/spec/runner/formatter/html_formatted-1.8.6.html", "spec/spec/runner/formatter/html_formatted-1.8.7.html", "spec/spec/runner/formatter/html_formatted-1.9.1.html", "spec/spec/runner/formatter/html_formatter_spec.rb", "spec/spec/runner/formatter/nested_text_formatter_spec.rb", "spec/spec/runner/formatter/profile_formatter_spec.rb", "spec/spec/runner/formatter/progress_bar_formatter_spec.rb", "spec/spec/runner/formatter/snippet_extractor_spec.rb", "spec/spec/runner/formatter/spec_mate_formatter_spec.rb", "spec/spec/runner/formatter/specdoc_formatter_spec.rb", "spec/spec/runner/formatter/story/html_formatter_spec.rb", "spec/spec/runner/formatter/story/plain_text_formatter_spec.rb", "spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb", "spec/spec/runner/formatter/text_mate_formatted-1.8.4.html", "spec/spec/runner/formatter/text_mate_formatted-1.8.6.html", "spec/spec/runner/formatter/text_mate_formatted-1.8.7.html", "spec/spec/runner/formatter/text_mate_formatted-1.9.1.html", "spec/spec/runner/heckle_runner_spec.rb", "spec/spec/runner/heckler_spec.rb", "spec/spec/runner/noisy_backtrace_tweaker_spec.rb", "spec/spec/runner/option_parser_spec.rb", "spec/spec/runner/options_spec.rb", "spec/spec/runner/output_one_time_fixture.rb", "spec/spec/runner/output_one_time_fixture_runner.rb", "spec/spec/runner/output_one_time_spec.rb", "spec/spec/runner/quiet_backtrace_tweaker_spec.rb", "spec/spec/runner/reporter_spec.rb", "spec/spec/runner/resources/a_bar.rb", "spec/spec/runner/resources/a_foo.rb", "spec/spec/runner/resources/a_spec.rb", "spec/spec/runner/resources/custom_example_group_runner.rb", "spec/spec/runner/resources/utf8_encoded.rb", "spec/spec/runner/spec.opts", "spec/spec/runner/spec_drb.opts", "spec/spec/runner/spec_parser/spec_parser_fixture.rb", "spec/spec/runner/spec_parser_spec.rb", "spec/spec/runner/spec_spaced.opts", "spec/spec/runner_spec.rb", "spec/spec/spec_classes.rb", "spec/spec/spec_spec.rb", "spec/spec/story/builders.rb", "spec/spec/story/extensions/main_spec.rb", "spec/spec/story/extensions_spec.rb", "spec/spec/story/given_scenario_spec.rb", "spec/spec/story/runner/plain_text_story_runner_spec.rb", "spec/spec/story/runner/scenario_collector_spec.rb", "spec/spec/story/runner/scenario_runner_spec.rb", "spec/spec/story/runner/story_mediator_spec.rb", "spec/spec/story/runner/story_parser_spec.rb", "spec/spec/story/runner/story_runner_spec.rb", "spec/spec/story/runner_spec.rb", "spec/spec/story/scenario_spec.rb", "spec/spec/story/step_group_spec.rb", "spec/spec/story/step_mother_spec.rb", "spec/spec/story/step_spec.rb", "spec/spec/story/story_helper.rb", "spec/spec/story/story_spec.rb", "spec/spec/story/world_spec.rb", "spec/spec_helper.rb", "story_server/prototype/javascripts/builder.js", "story_server/prototype/javascripts/controls.js", "story_server/prototype/javascripts/dragdrop.js", "story_server/prototype/javascripts/effects.js", "story_server/prototype/javascripts/prototype.js", "story_server/prototype/javascripts/rspec.js", "story_server/prototype/javascripts/scriptaculous.js", "story_server/prototype/javascripts/slider.js", "story_server/prototype/javascripts/sound.js", "story_server/prototype/javascripts/unittest.js", "story_server/prototype/lib/server.rb", "story_server/prototype/stories.html", "story_server/prototype/stylesheets/rspec.css", "story_server/prototype/stylesheets/test.css"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rspec.info/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{rspec}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{rspec 1.1.12}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<cucumber>, [">= 0.1.13"])
-      s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
-    else
-      s.add_dependency(%q<cucumber>, [">= 0.1.13"])
-      s.add_dependency(%q<hoe>, [">= 1.8.2"])
-    end
-  else
-    s.add_dependency(%q<cucumber>, [">= 0.1.13"])
-    s.add_dependency(%q<hoe>, [">= 1.8.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby-opengl-0.60.0-x86-mswin32.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby-opengl-0.60.0-x86-mswin32.gemspec
deleted file mode 100644
index eafaa54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby-opengl-0.60.0-x86-mswin32.gemspec
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{ruby-opengl}
-  s.version = "0.60.0"
-  s.platform = %q{i386-mswin32}
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Alain Hoang", "Jan Dvorak", "Minh Thu Vo", "James Adam"]
-  s.autorequire = %q{gl}
-  s.cert_chain = nil
-  s.date = %q{2008-01-07}
-  s.files = ["lib/gl.so", "lib/glu.so", "lib/glut.so", "lib/opengl.rb", "examples/misc", "examples/misc/anisotropic.rb", "examples/misc/fbo_test.rb", "examples/misc/font-glut.rb", "examples/misc/glfwtest.rb", "examples/misc/OGLBench.rb", "examples/misc/plane.rb", "examples/misc/readpixel.rb", "examples/misc/sdltest.rb", "examples/misc/trislam.rb", "examples/NeHe", "examples/NeHe/nehe_lesson02.rb", "examples/NeHe/nehe_lesson03.rb", "examples/NeHe/nehe_lesson04.rb", "examples/NeHe/nehe_lesson05.rb", "examples/NeHe/nehe_lesson36.rb", "examples/OrangeBook", "examples/OrangeBook/3Dlabs-License.txt", "examples/OrangeBook/brick.frag", "examples/OrangeBook/brick.rb", "examples/OrangeBook/brick.vert", "examples/OrangeBook/particle.frag", "examples/OrangeBook/particle.rb", "examples/OrangeBook/particle.vert", "examples/README", "examples/RedBook", "examples/RedBook/aapoly.rb", "examples/RedBook/aargb.rb", "examples/RedBook/accanti.rb", "examples/RedBook/accpersp.rb", "examples/RedBook/alpha.rb", "examples/RedBook/alpha3D.rb", "examples/RedBook/bezcurve.rb", "examples/RedBook/bezmesh.rb", "examples/RedBook/checker.rb", "examples/RedBook/clip.rb", "examples/RedBook/colormat.rb", "examples/RedBook/cube.rb", "examples/RedBook/depthcue.rb", "examples/RedBook/dof.rb", "examples/RedBook/double.rb", "examples/RedBook/drawf.rb", "examples/RedBook/feedback.rb", "examples/RedBook/fog.rb", "examples/RedBook/font.rb", "examples/RedBook/hello.rb", "examples/RedBook/image.rb", "examples/RedBook/jitter.rb", "examples/RedBook/lines.rb", "examples/RedBook/list.rb", "examples/RedBook/material.rb", "examples/RedBook/mipmap.rb", "examples/RedBook/model.rb", "examples/RedBook/movelight.rb", "examples/RedBook/pickdepth.rb", "examples/RedBook/planet.rb", "examples/RedBook/quadric.rb", "examples/RedBook/robot.rb", "examples/RedBook/select.rb", "examples/RedBook/smooth.rb", "examples/RedBook/stencil.rb", "examples/RedBook/stroke.rb", "examples/RedBook/surface.rb", "examples/RedBook/teaambient.rb", "examples/RedBook/teapots.rb", "examples/RedBook/tess.rb", "examples/RedBook/texbind.rb", "examples/RedBook/texgen.rb", "examples/RedBook/texturesurf.rb", "examples/RedBook/varray.rb", "examples/RedBook/wrap.rb", "doc/build_install.txt", "doc/history.txt", "doc/requirements_and_design.txt", "doc/roadmap.txt", "doc/scientific_use.txt", "doc/thanks.txt", "doc/tutorial.txt", "MIT-LICENSE", "README.txt"]
-  s.homepage = %q{http://ruby-opengl.rubyforge.org}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{OpenGL Interface for Ruby}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby2ruby-1.2.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby2ruby-1.2.2.gemspec
deleted file mode 100644
index 386496b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/ruby2ruby-1.2.2.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{ruby2ruby}
-  s.version = "1.2.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.date = %q{2009-01-20}
-  s.default_executable = %q{r2r_show}
-  s.description = %q{ruby2ruby provides a means of generating pure ruby code easily from ParseTree's Sexps. This makes making dynamic language processors much easier in ruby than ever before.}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.executables = ["r2r_show"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = [".autotest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/r2r_show", "lib/ruby2ruby.rb", "test/test_ruby2ruby.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://seattlerb.rubyforge.org/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{seattlerb}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{ruby2ruby provides a means of generating pure ruby code easily from ParseTree's Sexps}
-  s.test_files = ["test/test_ruby2ruby.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<ParseTree>, ["~> 3.0"])
-      s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
-    else
-      s.add_dependency(%q<ParseTree>, ["~> 3.0"])
-      s.add_dependency(%q<hoe>, [">= 1.8.2"])
-    end
-  else
-    s.add_dependency(%q<ParseTree>, ["~> 3.0"])
-    s.add_dependency(%q<hoe>, [">= 1.8.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rubyforge-1.0.3.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rubyforge-1.0.3.gemspec
deleted file mode 100644
index 08bc3a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/rubyforge-1.0.3.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{rubyforge}
-  s.version = "1.0.3"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis", "Eric Hodel", "Ara T Howard"]
-  s.date = %q{2009-02-26}
-  s.default_executable = %q{rubyforge}
-  s.description = %q{A script which automates a limited set of rubyforge operations.  * Run 'rubyforge help' for complete usage. * Setup: For first time users AND upgrades to 0.4.0: * rubyforge setup (deletes your username and password, so run sparingly!) * edit ~/.rubyforge/user-config.yml * rubyforge config * For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest. * Don't forget to login!  logging in will store a cookie in your .rubyforge directory which expires after a time.  always run the login command before any operation that requires authentication, such as uploading a package.}
-  s.email = ["ryand-ruby at zenspider.com", "drbrain at segment7.net", "ara.t.howard at gmail.com"]
-  s.executables = ["rubyforge"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/rubyforge", "lib/rubyforge.rb", "lib/rubyforge/client.rb", "lib/rubyforge/cookie_manager.rb", "test/test_rubyforge.rb", "test/test_rubyforge_client.rb", "test/test_rubyforge_cookie_manager.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://codeforpeople.rubyforge.org/rubyforge/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{codeforpeople}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A script which automates a limited set of rubyforge operations}
-  s.test_files = ["test/test_rubyforge.rb", "test/test_rubyforge_client.rb", "test/test_rubyforge_cookie_manager.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/sexp_processor-3.0.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/sexp_processor-3.0.1.gemspec
deleted file mode 100644
index 0aeaf5c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/sexp_processor-3.0.1.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{sexp_processor}
-  s.version = "3.0.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Ryan Davis"]
-  s.date = %q{2009-01-20}
-  s.description = %q{sexp_processor branches from ParseTree bringing all the generic sexp processing tools with it. Sexp, SexpProcessor, Environment, etc... all for your language processing pleasure.}
-  s.email = ["ryand-ruby at zenspider.com"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/composite_sexp_processor.rb", "lib/sexp.rb", "lib/sexp_processor.rb", "test/test_composite_sexp_processor.rb", "test/test_environment.rb", "test/test_sexp.rb", "test/test_sexp_processor.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/parsetree/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{parsetree}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{sexp_processor branches from ParseTree bringing all the generic sexp processing tools with it}
-  s.test_files = ["test/test_composite_sexp_processor.rb", "test/test_environment.rb", "test/test_sexp.rb", "test/test_sexp_processor.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
-    else
-      s.add_dependency(%q<hoe>, [">= 1.8.2"])
-    end
-  else
-    s.add_dependency(%q<hoe>, [">= 1.8.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/templater-0.5.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/templater-0.5.0.gemspec
deleted file mode 100644
index d27352d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/templater-0.5.0.gemspec
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{templater}
-  s.version = "0.5.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Jonas Nicklas, Michael Klishin"]
-  s.autorequire = %q{templater}
-  s.date = %q{2008-11-24}
-  s.description = %q{File generation system}
-  s.email = %q{jonas.nicklas at gmail.com, michael.s.klishin at gmail.com}
-  s.extra_rdoc_files = ["README", "LICENSE", "ROADMAP"]
-  s.files = ["LICENSE", "README", "Rakefile", "ROADMAP", "lib/templater", "lib/templater/actions", "lib/templater/actions/action.rb", "lib/templater/actions/directory.rb", "lib/templater/actions/empty_directory.rb", "lib/templater/actions/evaluation.rb", "lib/templater/actions/file.rb", "lib/templater/actions/template.rb", "lib/templater/capture_helpers.rb", "lib/templater/cli", "lib/templater/cli/generator.rb", "lib/templater/cli/manifold.rb", "lib/templater/cli/parser.rb", "lib/templater/core_ext", "lib/templater/core_ext/kernel.rb", "lib/templater/core_ext/string.rb", "lib/templater/description.rb", "lib/templater/discovery.rb", "lib/templater/generator.rb", "lib/templater/manifold.rb", "lib/templater/spec", "lib/templater/spec/helpers.rb", "lib/templater.rb", "spec/actions", "spec/actions/custom_action_spec.rb", "spec/actions/directory_spec.rb", "spec/actions/empty_directory_spec.rb", "spec/actions/evaluation_spec.rb", "spec/actions/file_spec.rb", "spec/actions/template_spec.rb", "spec/core_ext", "spec/core_ext/string_spec.rb", "spec/generator", "spec/generator/actions_spec.rb", "spec/generator/arguments_spec.rb", "spec/generator/desc_spec.rb", "spec/generator/destination_root_spec.rb", "spec/generator/empty_directories_spec.rb", "spec/generator/files_spec.rb", "spec/generator/generators_spec.rb", "spec/generator/glob_spec.rb", "spec/generator/invocations_spec.rb", "spec/generator/invoke_spec.rb", "spec/generator/options_spec.rb", "spec/generator/render_spec.rb", "spec/generator/source_root_spec.rb", "spec/generator/templates_spec.rb", "spec/manifold_spec.rb", "spec/options_parser_spec.rb", "spec/results", "spec/results/erb.rbs", "spec/results/file.rbs", "spec/results/random.rbs", "spec/results/simple_erb.rbs", "spec/spec_helper.rb", "spec/spec_helpers_spec.rb", "spec/templater_spec.rb", "spec/templates", "spec/templates/erb.rbt", "spec/templates/glob", "spec/templates/glob/arg.js", "spec/templates/glob/hellothar.%feh%", "spec/templates/glob/hellothar.html.%feh%", "spec/templates/glob/README", "spec/templates/glob/subfolder", "spec/templates/glob/subfolder/jessica_alba.jpg", "spec/templates/glob/subfolder/monkey.rb", "spec/templates/glob/test.rb", "spec/templates/literals_erb.rbt", "spec/templates/simple.rbt", "spec/templates/simple_erb.rbt"]
-  s.has_rdoc = true
-  s.homepage = %q{http://templater.rubyforge.org/}
-  s.require_paths = ["lib"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{File generation system}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
-      s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
-      s.add_runtime_dependency(%q<extlib>, [">= 0.9.5"])
-    else
-      s.add_dependency(%q<highline>, [">= 1.4.0"])
-      s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
-      s.add_dependency(%q<extlib>, [">= 0.9.5"])
-    end
-  else
-    s.add_dependency(%q<highline>, [">= 1.4.0"])
-    s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
-    s.add_dependency(%q<extlib>, [">= 0.9.5"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/test-unit-2.0.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/test-unit-2.0.1.gemspec
deleted file mode 100644
index 5d84039..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/test-unit-2.0.1.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{test-unit}
-  s.version = "2.0.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Kouhei Sutou", "Ryan Davis"]
-  s.date = %q{2008-11-08}
-  s.default_executable = %q{testrb}
-  s.description = %q{Test::Unit 2.x - Improved version of Test::Unit bundled in Ruby 1.8.x.  Ruby 1.9.x bundles miniunit not Test::Unit. Test::Unit bundled in Ruby 1.8.x had not been improved but unbundled Test::Unit (Test::Unit 2.x) will be improved actively.}
-  s.email = ["kou at cozmixng.org", "ryand-ruby at zenspider.com"]
-  s.executables = ["testrb"]
-  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
-  s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO", "bin/testrb", "html/classic.html", "html/index.html", "html/index.html.ja", "html/test-unit-classic.png", "lib/test/unit.rb", "lib/test/unit/assertionfailederror.rb", "lib/test/unit/assertions.rb", "lib/test/unit/attribute.rb", "lib/test/unit/autorunner.rb", "lib/test/unit/collector.rb", "lib/test/unit/collector/descendant.rb", "lib/test/unit/collector/dir.rb", "lib/test/unit/collector/load.rb", "lib/test/unit/collector/objectspace.rb", "lib/test/unit/color-scheme.rb", "lib/test/unit/color.rb", "lib/test/unit/diff.rb", "lib/test/unit/error.rb", "lib/test/unit/exceptionhandler.rb", "lib/test/unit/failure.rb", "lib/test/unit/fixture.rb", "lib/test/unit/notification.rb", "lib/test/unit/omission.rb", "lib/test/unit/pending.rb", "lib/test/unit/priority.rb", "lib/test/unit/runner/console.rb", "lib/test/unit/runner/emacs.rb", "lib/test/unit/testcase.rb", "lib/test/unit/testresult.rb", "lib/test/unit/testsuite.rb", "lib/test/unit/ui/console/outputlevel.rb", "lib/test/unit/ui/console/testrunner.rb", "lib/test/unit/ui/emacs/testrunner.rb", "lib/test/unit/ui/testrunner.rb", "lib/test/unit/ui/testrunnermediator.rb", "lib/test/unit/ui/testrunnerutilities.rb", "lib/test/unit/util/backtracefilter.rb", "lib/test/unit/util/observable.rb", "lib/test/unit/util/procwrapper.rb", "lib/test/unit/version.rb", "sample/adder.rb", "sample/subtracter.rb", "sample/tc_adder.rb", "sample/tc_subtracter.rb", "sample/test_user.rb", "sample/ts_examples.rb", "test/collector/test-descendant.rb", "test/collector/test-load.rb", "test/collector/test_dir.rb", "test/collector/test_objectspace.rb", "test/run-test.rb", "test/test-attribute.rb", "test/test-color-scheme.rb", "test/test-color.rb", "test/test-diff.rb", "test/test-emacs-runner.rb", "test/test-fixture.rb", "test/test-notification.rb", "test/test-omission.rb", "test/test-pending.rb", "test/test-priority.rb", "test/test_assertions.rb", "test/test_error.rb", "test/test_failure.rb", "test/test_testcase.rb", "test/test_testresult.rb", "test/test_testsuite.rb", "test/testunit-test-util.rb", "test/ui/test_testrunmediator.rb", "test/util/test_backtracefilter.rb", "test/util/test_observable.rb", "test/util/test_procwrapper.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://rubyforge.org/projects/test-unit/}
-  s.rdoc_options = ["--main", "README.txt"]
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{test-unit}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Test::Unit 2.x - Improved version of Test::Unit bundled in Ruby 1.8.x}
-  s.test_files = ["test/test_testcase.rb", "test/test_failure.rb", "test/collector/test_objectspace.rb", "test/collector/test_dir.rb", "test/test_testsuite.rb", "test/test_assertions.rb", "test/util/test_observable.rb", "test/util/test_procwrapper.rb", "test/util/test_backtracefilter.rb", "test/ui/test_testrunmediator.rb", "test/test_testresult.rb", "test/test_error.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
-    else
-      s.add_dependency(%q<hoe>, [">= 1.8.2"])
-    end
-  else
-    s.add_dependency(%q<hoe>, [">= 1.8.2"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/thor-0.9.9.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/thor-0.9.9.gemspec
deleted file mode 100644
index 763bcda..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/thor-0.9.9.gemspec
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{thor}
-  s.version = "0.9.9"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Yehuda Katz"]
-  s.date = %q{2008-12-15}
-  s.description = %q{A gem that maps options to a class}
-  s.email = %q{wycats at gmail.com}
-  s.executables = ["thor", "rake2thor"]
-  s.extra_rdoc_files = ["README.markdown", "LICENSE", "CHANGELOG.rdoc"]
-  s.files = ["README.markdown", "LICENSE", "CHANGELOG.rdoc", "Rakefile", "bin/rake2thor", "bin/thor", "lib/thor", "lib/thor/error.rb", "lib/thor/options.rb", "lib/thor/ordered_hash.rb", "lib/thor/runner.rb", "lib/thor/task.rb", "lib/thor/task_hash.rb", "lib/thor/tasks", "lib/thor/tasks/package.rb", "lib/thor/tasks.rb", "lib/thor/util.rb", "lib/thor.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://yehudakatz.com}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{thor}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A gem that maps options to a class}
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-api-1.2.1-x86-mswin32-60.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-api-1.2.1-x86-mswin32-60.gemspec
deleted file mode 100644
index fefd0b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-api-1.2.1-x86-mswin32-60.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-api}
-  s.version = "1.2.1"
-  s.platform = %q{x86-mswin32-60}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger", "Park Heesob"]
-  s.date = %q{2008-11-14}
-  s.description = %q{A superior replacement for Win32API}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST", "ext/win32/api.c"]
-  s.files = ["lib/win32/api.so", "test/test_win32_api.rb", "test/test_win32_api_callback.rb", "test/test_win32_api_function.rb", "README", "CHANGES", "MANIFEST", "ext/win32/api.c"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.2")
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A superior replacement for Win32API}
-  s.test_files = ["test/test_win32_api.rb", "test/test_win32_api_callback.rb", "test/test_win32_api_function.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-clipboard-0.4.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-clipboard-0.4.4.gemspec
deleted file mode 100644
index 5b21697..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-clipboard-0.4.4.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-clipboard}
-  s.version = "0.4.4"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger", "Park Heesob"]
-  s.date = %q{2008-08-26}
-  s.description = %q{A library for interacting with the Windows clipboard}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["CHANGES", "README", "MANIFEST"]
-  s.files = ["examples/clipboard_test.rb", "lib/win32/clipboard.rb", "test/test_clipboard.rb", "CHANGES", "examples", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-clipboard.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A library for interacting with the Windows clipboard}
-  s.test_files = ["test/test_clipboard.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-pr>, [">= 0.8.1"])
-    else
-      s.add_dependency(%q<windows-pr>, [">= 0.8.1"])
-    end
-  else
-    s.add_dependency(%q<windows-pr>, [">= 0.8.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-dir-0.3.2.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-dir-0.3.2.gemspec
deleted file mode 100644
index 4fce3a9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-dir-0.3.2.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-dir}
-  s.version = "0.3.2"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.cert_chain = nil
-  s.date = %q{2007-07-25}
-  s.description = %q{Extra constants and methods for the Dir class on Windows.}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/win32/dir.rb", "test/CVS", "test/tc_dir.rb", "CHANGES", "CVS", "examples", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-dir.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Extra constants and methods for the Dir class on Windows.}
-  s.test_files = ["test/tc_dir.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-pr>, [">= 0.5.1"])
-    else
-      s.add_dependency(%q<windows-pr>, [">= 0.5.1"])
-    end
-  else
-    s.add_dependency(%q<windows-pr>, [">= 0.5.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-eventlog-0.5.0.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-eventlog-0.5.0.gemspec
deleted file mode 100644
index bf8c6b2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-eventlog-0.5.0.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-eventlog}
-  s.version = "0.5.0"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger", "Park Heesob"]
-  s.date = %q{2008-09-12}
-  s.description = %q{Interface for the MS Windows Event Log.}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST", "doc/tutorial.txt"]
-  s.files = ["lib/win32/eventlog.rb", "lib/win32/mc.rb", "test/foo.mc", "test/test_eventlog.rb", "test/test_mc.rb", "CHANGES", "doc", "examples", "lib", "MANIFEST", "misc", "Rakefile", "README", "test", "win32-eventlog-0.5.0.gem", "win32-eventlog.gemspec", "doc/tutorial.txt"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Interface for the MS Windows Event Log.}
-  s.test_files = ["test/test_eventlog.rb", "test/test_mc.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-pr>, [">= 0.9.3"])
-      s.add_runtime_dependency(%q<ptools>, [">= 1.1.6"])
-      s.add_runtime_dependency(%q<test-unit>, [">= 2.0.0"])
-    else
-      s.add_dependency(%q<windows-pr>, [">= 0.9.3"])
-      s.add_dependency(%q<ptools>, [">= 1.1.6"])
-      s.add_dependency(%q<test-unit>, [">= 2.0.0"])
-    end
-  else
-    s.add_dependency(%q<windows-pr>, [">= 0.9.3"])
-    s.add_dependency(%q<ptools>, [">= 1.1.6"])
-    s.add_dependency(%q<test-unit>, [">= 2.0.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-0.5.5.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-0.5.5.gemspec
deleted file mode 100644
index 1ac482a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-0.5.5.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-file}
-  s.version = "0.5.5"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.date = %q{2007-11-22}
-  s.description = %q{Extra or redefined methods for the File class on Windows.}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES"]
-  s.files = ["lib/win32/file.rb", "test/CVS", "test/sometestfile.txt", "test/tc_file_attributes.rb", "test/tc_file_constants.rb", "test/tc_file_encryption.rb", "test/tc_file_path.rb", "test/tc_file_security.rb", "test/tc_file_stat.rb", "CHANGES", "CVS", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-file.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Extra or redefined methods for the File class on Windows.}
-  s.test_files = ["test/tc_file_attributes.rb", "test/tc_file_constants.rb", "test/tc_file_encryption.rb", "test/tc_file_path.rb", "test/tc_file_security.rb", "test/tc_file_stat.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<win32-file-stat>, [">= 1.2.0"])
-    else
-      s.add_dependency(%q<win32-file-stat>, [">= 1.2.0"])
-    end
-  else
-    s.add_dependency(%q<win32-file-stat>, [">= 1.2.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-stat-1.3.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-stat-1.3.1.gemspec
deleted file mode 100644
index 669e89c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-file-stat-1.3.1.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-file-stat}
-  s.version = "1.3.1"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger", "Park Heesob"]
-  s.date = %q{2008-08-09}
-  s.description = %q{A File::Stat class tailored to MS Windows}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES"]
-  s.files = ["lib/win32/file/stat.rb", "CHANGES", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-file-stat.gemspec", "test/sometestfile.exe", "test/sometestfile.txt", "test/test_file_stat.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{Win32Utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A File::Stat class tailored to MS Windows}
-  s.test_files = ["test/test_file_stat.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-pr>, [">= 0.9.1"])
-    else
-      s.add_dependency(%q<windows-pr>, [">= 0.9.1"])
-    end
-  else
-    s.add_dependency(%q<windows-pr>, [">= 0.9.1"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-open3-0.2.9-x86-mswin32-60.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-open3-0.2.9-x86-mswin32-60.gemspec
deleted file mode 100644
index 2a4666d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-open3-0.2.9-x86-mswin32-60.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-open3}
-  s.version = "0.2.9"
-  s.platform = %q{x86-mswin32-60}
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Park Heesob", "Daniel Berger"]
-  s.date = %q{2009-03-07}
-  s.description = %q{Provides an Open3.popen3 implementation for MS Windows}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST", "ext/win32/open3.c"]
-  s.files = ["lib/win32/open3.so", "test/test_win32_open3.rb", "README", "CHANGES", "MANIFEST", "ext/win32/open3.c"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.8.2")
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Provides an Open3.popen3 implementation for MS Windows}
-  s.test_files = ["test/test_win32_open3.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-process-0.5.9.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-process-0.5.9.gemspec
deleted file mode 100644
index f376bd9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-process-0.5.9.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-process}
-  s.version = "0.5.9"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel Berger", "Park Heesob"]
-  s.date = %q{2008-06-14}
-  s.description = %q{Adds create, fork, wait, wait2, waitpid, and a special kill method}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/win32/process.rb", "test/CVS", "test/tc_process.rb", "CHANGES", "CVS", "examples", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-process.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Adds create, fork, wait, wait2, waitpid, and a special kill method}
-  s.test_files = ["test/tc_process.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-pr>, [">= 0.8.6"])
-    else
-      s.add_dependency(%q<windows-pr>, [">= 0.8.6"])
-    end
-  else
-    s.add_dependency(%q<windows-pr>, [">= 0.8.6"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sapi-0.1.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sapi-0.1.4.gemspec
deleted file mode 100644
index 593f2f7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sapi-0.1.4.gemspec
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-sapi}
-  s.version = "0.1.4"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.cert_chain = nil
-  s.date = %q{2007-07-30}
-  s.description = %q{An interface to the MS SAPI (Sound API) library.}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/win32/sapi5.rb", "CHANGES", "CVS", "examples", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-sapi.gemspec", "test/CVS", "test/tc_sapi5.rb"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An interface to the MS SAPI (Sound API) library.}
-  s.test_files = ["test/tc_sapi5.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sound-0.4.1.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sound-0.4.1.gemspec
deleted file mode 100644
index dc78f52..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/win32-sound-0.4.1.gemspec
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{win32-sound}
-  s.version = "0.4.1"
-
-  s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.cert_chain = nil
-  s.date = %q{2007-07-27}
-  s.description = %q{A library for playing with sound on MS Windows.}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["CHANGES", "README", "MANIFEST"]
-  s.files = ["examples/sound_test.rb", "lib/win32/sound.rb", "test/tc_sound.rb", "CHANGES", "examples", "lib", "MANIFEST", "Rakefile", "README", "test", "win32-sound.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{A library for playing with sound on MS Windows.}
-  s.test_files = ["test/tc_sound.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 1
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-    else
-    end
-  else
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-api-0.2.4.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-api-0.2.4.gemspec
deleted file mode 100644
index 68e94a7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-api-0.2.4.gemspec
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{windows-api}
-  s.version = "0.2.4"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger"]
-  s.date = %q{2008-07-19}
-  s.description = %q{An easier way to create methods using Win32API}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
-  s.files = ["lib/windows/api.rb", "test/CVS", "test/test_windows_api.rb", "CHANGES", "CVS", "lib", "MANIFEST", "Rakefile", "README", "test", "windows-api.gemspec", "windows-api.gemspec~"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{An easier way to create methods using Win32API}
-  s.test_files = ["test/test_windows_api.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<win32-api>, [">= 1.0.5"])
-    else
-      s.add_dependency(%q<win32-api>, [">= 1.0.5"])
-    end
-  else
-    s.add_dependency(%q<win32-api>, [">= 1.0.5"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-pr-0.9.3.gemspec b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-pr-0.9.3.gemspec
deleted file mode 100644
index 6fa76e8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/gems/1.8/specifications/windows-pr-0.9.3.gemspec
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = %q{windows-pr}
-  s.version = "0.9.3"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.authors = ["Daniel J. Berger", "Park Heesob"]
-  s.date = %q{2008-09-12}
-  s.description = %q{Windows functions and constants bundled via Win32::API}
-  s.email = %q{djberg96 at gmail.com}
-  s.extra_rdoc_files = ["MANIFEST", "README", "CHANGES"]
-  s.files = ["doc/conversion_guide.txt", "lib/windows/clipboard.rb", "lib/windows/com/automation.rb", "lib/windows/com.rb", "lib/windows/console.rb", "lib/windows/debug.rb", "lib/windows/device_io.rb", "lib/windows/directory.rb", "lib/windows/error.rb", "lib/windows/eventlog.rb", "lib/windows/file.rb", "lib/windows/filesystem.rb", "lib/windows/file_mapping.rb", "lib/windows/gdi/bitmap.rb", "lib/windows/gdi/device_context.rb", "lib/windows/gdi/painting_drawing.rb", "lib/windows/handle.rb", "lib/windows/library.rb", "lib/windows/limits.rb", "lib/windows/memory.rb", "lib/windows/msvcrt/buffer.rb", "lib/windows/msvcrt/directory.rb", "lib/windows/msvcrt/file.rb", "lib/windows/msvcrt/io.rb", "lib/windows/msvcrt/string.rb", "lib/windows/msvcrt/time.rb", "lib/windows/national.rb", "lib/windows/network/management.rb", "lib/windows/network/snmp.rb", "lib/windows/network/winsock.rb", "lib/windows/nio.rb", "lib/windows/ntfs/file.rb", "lib/windows/path.rb", "lib/windows/pipe.rb", "lib/windows/process.rb", "lib/windows/registry.rb", "lib/windows/security.rb", "lib/windows/service.rb", "lib/windows/shell.rb", "lib/windows/sound.rb", "lib/windows/synchronize.rb", "lib/windows/system_info.rb", "lib/windows/thread.rb", "lib/windows/time.rb", "lib/windows/tool_helper.rb", "lib/windows/unicode.rb", "lib/windows/volume.rb", "lib/windows/window/dialog.rb", "lib/windows/window/message.rb", "lib/windows/window/properties.rb", "lib/windows/window/timer.rb", "lib/windows/window.rb", "test/tc_clipboard.rb", "test/tc_com.rb", "test/tc_console.rb", "test/tc_debug.rb", "test/tc_device_io.rb", "test/tc_directory.rb", "test/tc_error.rb", "test/tc_eventlog.rb", "test/tc_file.rb", "test/tc_filesystem.rb", "test/tc_file_mapping.rb", "test/tc_handle.rb", "test/tc_library.rb", "test/tc_limits.rb", "test/tc_memory.rb", "test/tc_msvcrt_buffer.rb", "test/tc_msvcrt_directory.rb", "test/tc_msvcrt_file.rb", "test/tc_msvcrt_io.rb", "test/tc_msvcrt_string.rb", "test/tc_msvcrt_time.rb", "test/tc_national.rb", "test/tc_network_management.rb", "test/tc_network_snmp.rb", "test/tc_nio.rb", "test/tc_path.rb", "test/tc_pipe.rb", "test/tc_process.rb", "test/tc_registry.rb", "test/tc_security.rb", "test/tc_service.rb", "test/tc_shell.rb", "test/tc_sound.rb", "test/tc_synchronize.rb", "test/tc_system_info.rb", "test/tc_thread.rb", "test/tc_time.rb", "test/tc_tool_helper.rb", "test/tc_unicode.rb", "test/tc_volume.rb", "test/tc_window.rb", "CHANGES", "doc", "lib", "MANIFEST", "Rakefile", "README", "test", "windows-pr.gemspec"]
-  s.has_rdoc = true
-  s.homepage = %q{http://www.rubyforge.org/projects/win32utils}
-  s.require_paths = ["lib"]
-  s.rubyforge_project = %q{win32utils}
-  s.rubygems_version = %q{1.3.1}
-  s.summary = %q{Windows functions and constants bundled via Win32::API}
-  s.test_files = ["test/tc_clipboard.rb", "test/tc_com.rb", "test/tc_console.rb", "test/tc_debug.rb", "test/tc_device_io.rb", "test/tc_directory.rb", "test/tc_error.rb", "test/tc_eventlog.rb", "test/tc_file.rb", "test/tc_filesystem.rb", "test/tc_file_mapping.rb", "test/tc_handle.rb", "test/tc_library.rb", "test/tc_limits.rb", "test/tc_memory.rb", "test/tc_msvcrt_buffer.rb", "test/tc_msvcrt_directory.rb", "test/tc_msvcrt_file.rb", "test/tc_msvcrt_io.rb", "test/tc_msvcrt_string.rb", "test/tc_msvcrt_time.rb", "test/tc_national.rb", "test/tc_network_management.rb", "test/tc_network_snmp.rb", "test/tc_nio.rb", "test/tc_path.rb", "test/tc_pipe.rb", "test/tc_process.rb", "test/tc_registry.rb", "test/tc_security.rb", "test/tc_service.rb", "test/tc_shell.rb", "test/tc_sound.rb", "test/tc_synchronize.rb", "test/tc_system_info.rb", "test/tc_thread.rb", "test/tc_time.rb", "test/tc_tool_helper.rb", "test/tc_unicode.rb", "test/tc_volume.rb", "test/tc_window.rb"]
-
-  if s.respond_to? :specification_version then
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
-    s.specification_version = 2
-
-    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<windows-api>, [">= 0.2.4"])
-      s.add_runtime_dependency(%q<win32-api>, [">= 1.2.0"])
-    else
-      s.add_dependency(%q<windows-api>, [">= 0.2.4"])
-      s.add_dependency(%q<win32-api>, [">= 1.2.0"])
-    end
-  else
-    s.add_dependency(%q<windows-api>, [">= 0.2.4"])
-    s.add_dependency(%q<win32-api>, [">= 1.2.0"])
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/ODBC/ODBC.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/ODBC/ODBC.rb
deleted file mode 100644
index 8f6a1e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/ODBC/ODBC.rb
+++ /dev/null
@@ -1,310 +0,0 @@
-#
-# DBD::ODBC
-#
-# Copyright (c) 2001-2004 Michael Neumann <mneumann at ntecs.de>
-# 
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-# 1. Redistributions of source code must retain the above copyright 
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright 
-#    notice, this list of conditions and the following disclaimer in the 
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-# THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $Id$
-#
-
-$:.delete(".")
-require "odbc"
-$: << "."
-
-module DBI
-module DBD
-module ODBC
-
-VERSION          = "0.2.2"
-USED_DBD_VERSION = "0.2"
-
-ODBCErr = ::ODBC::Error
-
-module Converter
-  def convert(val)
-    if val.is_a? DBI::Date
-      ::ODBC::Date.new(val.year, val.month, val.day)
-    elsif val.is_a? DBI::Time
-      ::ODBC::Time.new(val.hour, val.minute, val.second)
-    elsif val.is_a? DBI::Timestamp
-      ::ODBC::TimeStamp.new(val.year, val.month, val.day,
-          val.hour, val.minute, val.second, val.fraction)
-    elsif val.is_a? DBI::Binary
-      val.to_s
-    else
-      val
-    end
-  end
-end
-
-class Driver < DBI::BaseDriver
-  def initialize
-    super(USED_DBD_VERSION)
-  end
-
-  def data_sources
-    ::ODBC.datasources.collect {|dsn| "dbi:ODBC:" + dsn.name }
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def connect(dbname, user, auth, attr)
-    driver_attrs = dbname.split(';')
-
-    if driver_attrs.size > 1
-      # DNS-less connection
-      drv = ::ODBC::Driver.new
-      drv.name = 'Driver1'
-      driver_attrs.each do |param|
-        pv = param.split('=')
-        next if pv.size < 2
-        drv.attrs[pv[0]] = pv[1]
-      end
-      db = ::ODBC::Database.new
-      handle = db.drvconnect(drv)
-    else
-      # DNS given
-      handle = ::ODBC.connect(dbname, user, auth)
-    end
-
-    return Database.new(handle, attr)
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-end
-
-class Database < DBI::BaseDatabase
-  include Converter
-
-  def disconnect
-    @handle.rollback
-    @handle.disconnect 
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def ping
-    @handle.connected?
-  end
-
-  def columns(table)
-    cols = []
-
-    stmt = @handle.columns(table)
-    stmt.ignorecase = true
-
-    stmt.each_hash do |row|
-      info = Hash.new
-      cols << info
-
-      info['name']      = row['COLUMN_NAME']
-      info['type_name'] = row['TYPE_NAME']
-      info['sql_type']  = row['DATA_TYPE']
-      info['nullable']  = row['NULLABLE']  
-      info['precision'] = row['COLUMN_SIZE'] - (row['DECIMAL_DIGITS'] || 0)
-      info['scale']     = row['DECIMAL_DIGITS']
-    end
-
-    stmt.drop
-    cols
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def tables
-    stmt = @handle.tables
-    stmt.ignorecase = true
-    tabs = [] 
-    stmt.each_hash {|row|
-      tabs << row["TABLE_NAME"]
-    }
-    stmt.drop
-    tabs
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def prepare(statement)
-    Statement.new(@handle.prepare(statement))
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def do(statement, *bindvars)
-    bindvars = bindvars.collect{|v| convert(v)}
-    @handle.do(statement, *bindvars) 
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def execute(statement, *bindvars)
-    bindvars = bindvars.collect{|v| convert(v)}
-    stmt = @handle.run(statement, *bindvars) 
-    Statement.new(stmt)
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def []=(attr, value)
-    case attr
-    when 'AutoCommit'
-      @handle.autocommit(value)
-    when 'odbc_ignorecase'
-      @handle.ignorecase(value)
-    else
-      if attr =~ /^odbc_/ or attr != /_/
-        raise DBI::NotSupportedError, "Option '#{attr}' not supported"
-      else # option for some other driver - quitly ignore
-        return
-      end
-    end
-    @attr[attr] = value
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def commit
-    @handle.commit
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def rollback
-    @handle.rollback
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-end # class Database
-
-class Statement < DBI::BaseStatement
-  include Converter
-
-  def initialize(handle)
-    @handle = handle
-    @params = []
-    @arr = []
-  end
-
-  def bind_param(param, value, attribs)
-    raise InterfaceError, "only ? parameters supported" unless param.is_a? Fixnum
-    @params[param-1] = value
-  end
-
-  def execute
-    bindvars = @params.collect{|v| convert(v)}
-    @handle.execute(*bindvars)
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def finish
-    @handle.drop
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def cancel
-    @handle.cancel
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def fetch
-    convert_row(@handle.fetch)
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def fetch_scroll(direction, offset)
-    direction = case direction
-    when DBI::SQL_FETCH_FIRST    then ::ODBC::SQL_FETCH_FIRST
-    when DBI::SQL_FETCH_LAST     then ::ODBC::SQL_FETCH_LAST
-    when DBI::SQL_FETCH_NEXT     then ::ODBC::SQL_FETCH_NEXT
-    when DBI::SQL_FETCH_PRIOR    then ::ODBC::SQL_FETCH_PRIOR
-    when DBI::SQL_FETCH_ABSOLUTE then ::ODBC::SQL_FETCH_ABSOLUTE
-    when DBI::SQL_FETCH_RELATIVE then ::ODBC::SQL_FETCH_RELATIVE
-    end
-    
-    convert_row(@handle.fetch_scroll(direction, offset))
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def column_info
-    info = []
-    @handle.columns(true).each do |col|
-      info << {
-        'name'       => col.name, 
-        'table'      => col.table,
-        'nullable'   => col.nullable,
-        'searchable' => col.searchable,
-        'precision'  => col.precision,
-        'scale'      => col.scale,
-        'sql_type'   => col.type,
-        'type_name'  => DBI::SQL_TYPE_NAMES[col.type],
-        'length'     => col.length,
-        'unsigned'   => col.unsigned
-      }
-    end
-    info
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  def rows
-    @handle.nrows
-  rescue ODBCErr => err
-    raise DBI::DatabaseError.new(err.message)
-  end
-
-  private # -----------------------------------
-
-  # convert the ODBC datatypes to DBI datatypes
-  def convert_row(row)
-    return nil if row.nil?
-    row.collect do |col|
-      if col.is_a? ::ODBC::Date
-        DBI::Date.new(col.year, col.month, col.day)
-      elsif col.is_a? ::ODBC::Time
-        DBI::Time.new(col.hour, col.minute, col.second)
-      elsif col.is_a? ::ODBC::TimeStamp
-        DBI::Timestamp.new(col.year, col.month, col.day,
-          col.hour, col.minute, col.second, col.fraction)
-      else
-        col
-      end
-    end
-  end 
-end
-
-end # module ODBC
-end # module DBD
-end # module DBI
-
-
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/Proxy/Proxy.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/Proxy/Proxy.rb
deleted file mode 100644
index c1c618d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/DBD/Proxy/Proxy.rb
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# DBD::Proxy
-#
-# Copyright (c) 2001, 2002 Michael Neumann <neumann at s-direktnet.de>
-# 
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-# 1. Redistributions of source code must retain the above copyright 
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright 
-#    notice, this list of conditions and the following disclaimer in the 
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-# THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $Id$
-#
-
-require "drb"
-
-module DBI
-module DBD
-module Proxy
-
-VERSION          = "0.2"
-USED_DBD_VERSION = "0.2"
-
-module HelperMixin
-  def check_exception(obj)
-    if obj.kind_of? Exception
-      raise obj
-    else
-      obj
-    end
-  end
-
-  def define_methods(meths)
-    meths.each {|d|
-      eval %{
-	def #{d}(*a) 
-	  check_exception(@handle.#{d}(*a))
-	end
-      }
-    } 
-  end
-end # module HelperMixin
-
-
-class Driver < DBI::BaseDriver
-  include HelperMixin 
-
-  DEFAULT_PORT = 9001
-  DEFAULT_HOSTNAME = "localhost"
-
-  def initialize
-    super(USED_DBD_VERSION)
-    DRb.start_service
-  end
-
-  def connect(dsn, user, auth, attr)
-    # split dsn in two parts
-    i = dsn.index("dsn=")
-    raise InterfaceError, "must specify a DSN" if i.nil?
-
-    hash = Utils.parse_params(dsn[0...i])
-    dsn  = dsn[(i+4)..-1] # without dsn=
-
-    host = hash['hostname'] || DEFAULT_HOSTNAME
-    port = (hash['port'] || DEFAULT_PORT).to_i 
-
-    if dsn.nil? or dsn.empty?
-      raise InterfaceError, "must specify a DSN"
-    end
-
-    handle = DRbObject.new(nil, "druby://#{host}:#{port}")
-
-    major, minor = USED_DBD_VERSION.split(".")
-    r_major, r_minor = handle.get_used_DBD_version.split(".")
-
-    if major.to_i != r_major.to_i 
-      raise InterfaceError, "Proxy uses not compatible DBD version"
-    elsif minor.to_i > r_minor.to_i
-      # DBI may call methods, not available in former "minor" versions (e.g.DatbaseHandle#columns )
-      raise InterfaceError, "Proxy uses not compatible DBD version; may result in problems"
-    end
-
-    db_handle = handle.DBD_connect(dsn, user, auth, attr)
-    check_exception(db_handle)   
-
-    Database.new(db_handle)
-  end
-
-end
-
-class Database < DBI::BaseDatabase
-  include HelperMixin 
-  METHODS = %w(disconnect ping commit rollback tables execute
-               do quote [] []= columns)
-
-  def initialize(db_handle)
-    @handle = db_handle
-    define_methods METHODS
-  end
-
-  def prepare(statement)
-    sth = @handle.prepare(statement)
-    check_exception(sth)
-    Statement.new(sth)
-  end
-
-end # class Database
-
-
-class Statement < DBI::BaseStatement
-  include HelperMixin
-
-  METHODS = %w(bind_param execute finish fetch column_info bind_params
-               cancel fetch_scroll fetch_many fetch_all rows)
-
-  def initialize(handle)
-    @handle = handle
-    define_methods METHODS
-  end
-
-end # class Statement
-
-
-end # module Proxy
-end # module DBD
-end # module DBI
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi.rb
deleted file mode 100644
index 5935feb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi.rb
+++ /dev/null
@@ -1,1043 +0,0 @@
-$LOAD_PATH.unshift(File.dirname(__FILE__))
-#
-# Ruby/DBI
-#
-# Copyright (c) 2001, 2002, 2003 Michael Neumann <mneumann at ntecs.de>
-# 
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-# 1. Redistributions of source code must retain the above copyright 
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright 
-#    notice, this list of conditions and the following disclaimer in the 
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-# THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $Id: dbi.rb,v 1.8 2006/09/03 04:05:29 pdubois Exp $
-#
-
-require "find"
-require "dbi/row"
-require "dbi/utils"
-require "dbi/sql"
-require "dbi/columninfo"
-require "date"
-require "thread"
-require 'monitor'
-
-module DBI
-   VERSION = "0.2.2"
-   
-   module DBD
-      DIR         = "DBD"
-      API_VERSION = "0.3"
-   end
-   
-   #  Constants
-   
-   # Constants for fetch_scroll
-   #
-   SQL_FETCH_NEXT     = 1
-   SQL_FETCH_PRIOR    = 2
-   SQL_FETCH_FIRST    = 3
-   SQL_FETCH_LAST     = 4
-   SQL_FETCH_ABSOLUTE = 5
-   SQL_FETCH_RELATIVE = 6
-   
-   # SQL type constants
-   # 
-   SQL_CHAR       = 1
-   SQL_NUMERIC    = 2
-   SQL_DECIMAL    = 3
-   SQL_INTEGER    = 4
-   SQL_SMALLINT   = 5
-   SQL_FLOAT      = 6
-   SQL_REAL       = 7
-   SQL_DOUBLE     = 8
-   SQL_DATE       = 9  # 91
-   SQL_TIME       = 10 # 92 
-   SQL_TIMESTAMP  = 11 # 93 
-   SQL_VARCHAR    = 12
-   SQL_BOOLEAN    = 13
-   
-   SQL_LONGVARCHAR   = -1
-   SQL_BINARY        = -2
-   SQL_VARBINARY     = -3
-   SQL_LONGVARBINARY = -4
-   SQL_BIGINT        = -5
-   SQL_TINYINT       = -6
-   SQL_BIT           = -7
-   
-   # TODO
-   # Find types for these (XOPEN?)
-   #SQL_ARRAY = 
-   SQL_BLOB = -10   # TODO
-   SQL_CLOB = -11   # TODO
-   #SQL_DISTINCT = 
-   #SQL_OBJECT = 
-   #SQL_NULL = 
-   SQL_OTHER = 100
-   #SQL_REF = 
-   #SQL_STRUCT = 
-   
-   SQL_TYPE_NAMES = {
-      SQL_BIT               => 'BIT',
-      SQL_TINYINT           => 'TINYINT',
-      SQL_SMALLINT          => 'SMALLINT',
-      SQL_INTEGER           => 'INTEGER',
-      SQL_BIGINT            => 'BIGINT',
-      SQL_FLOAT             => 'FLOAT',
-      SQL_REAL              => 'REAL',
-      SQL_DOUBLE            => 'DOUBLE',
-      SQL_NUMERIC           => 'NUMERIC',
-      SQL_DECIMAL           => 'DECIMAL',
-      SQL_CHAR              => 'CHAR',
-      SQL_VARCHAR           => 'VARCHAR',
-      SQL_LONGVARCHAR       => 'LONG VARCHAR',
-      SQL_DATE              => 'DATE',
-      SQL_TIME              => 'TIME',
-      SQL_TIMESTAMP         => 'TIMESTAMP',
-      SQL_BINARY            => 'BINARY',
-      SQL_VARBINARY         => 'VARBINARY',
-      SQL_LONGVARBINARY     => 'LONG VARBINARY',
-      SQL_BLOB              => 'BLOB',
-      SQL_CLOB              => 'CLOB',
-      SQL_OTHER             => nil,
-      SQL_BOOLEAN           => 'BOOLEAN',
-
-   }
-   
-   #  Exceptions (borrowed by Python API 2.0)
-   
-   # Base class of all other error exceptions.  Use this to catch all DBI
-   # errors.
-   class Error < RuntimeError
-   end
-   
-   # For important warnings like data truncation, etc.
-   class Warning < RuntimeError
-   end
-   
-   # Exception for errors related to the DBI interface rather than the
-   # database itself.
-   class InterfaceError < Error
-   end
-   
-   # Exception raised if the DBD driver has not specified a mandatory method.
-   class NotImplementedError < InterfaceError
-   end
-   
-   # Exception for errors related to the database.
-   class DatabaseError < Error
-      attr_reader :err, :errstr, :state
-      
-      def initialize(errstr="", err=nil, state=nil)
-         super(errstr)
-         @err, @errstr, @state = err, errstr, state
-      end
-   end
-   
-   # Exception for errors due to problems with the processed 
-   # data such as division by zero, numeric value out of range, etc.
-   class DataError < DatabaseError
-   end
-   
-   # Exception for errors related to the database's operation which are not
-   # necessarily under the control of the programmer.  This includes such
-   # things as unexpected disconnect, datasource name not found, transaction
-   # could not be processed, a memory allocation error occured during
-   # processing, etc.
-   class OperationalError < DatabaseError
-   end
-   
-   # Exception raised when the relational integrity of the database
-   # is affected, e.g. a foreign key check fails.
-   class IntegrityError < DatabaseError
-   end
-   
-   # Exception raised when the database encounters an internal error, 
-   # e.g. the cursor is not valid anymore, the transaction is out of sync.
-   class InternalError < DatabaseError
-   end
-   
-   # Exception raised for programming errors, e.g. table not found
-   # or already exists, syntax error in SQL statement, wrong number
-   # of parameters specified, etc.
-   class ProgrammingError < DatabaseError
-   end
-   
-   # Exception raised if e.g. commit() is called for a database which do not
-   # support transactions.
-   class NotSupportedError < DatabaseError
-   end
-   
-   #  Datatypes
-   
-   # TODO: do we need Binary?
-   # perhaps easier to call #bind_param(1, binary_string, 'type' => SQL_BLOB)
-   class Binary
-      attr_accessor :data
-      def initialize(data)
-         @data = data
-      end
-      
-      def to_s
-         @data
-      end
-   end
-   
-   #  Module functions (of DBI)
-   DEFAULT_TRACE_MODE = 2
-   DEFAULT_TRACE_OUTPUT = STDERR
-   
-   # TODO: Is using class variables within a module such a wise idea? - Dan B.
-   @@driver_map     = Hash.new
-   @@driver_monitor = ::Monitor.new()
-   @@trace_mode     = DEFAULT_TRACE_MODE
-   @@trace_output   = DEFAULT_TRACE_OUTPUT
-   
-   class << self
-      
-      # Establish a database connection.  This is mostly a facade for the
-      # DBD's connect method.
-      def connect(driver_url, user=nil, auth=nil, params=nil, &p)
-         dr, db_args = _get_full_driver(driver_url)
-         dh = dr[0] # driver-handle
-         dh.connect(db_args, user, auth, params, &p)
-      end
-      
-      # Load a DBD and returns the DriverHandle object
-      def get_driver(driver_url)
-         _get_full_driver(driver_url)[0][0]  # return DriverHandle
-      end
-      
-      # Extracts the db_args from driver_url and returns the correspondeing
-      # entry of the @@driver_map.
-      def _get_full_driver(driver_url)
-         db_driver, db_args = parse_url(driver_url)
-         db_driver = load_driver(db_driver)
-         dr = @@driver_map[db_driver]
-         [dr, db_args]
-      end
-      
-      def trace(mode=nil, output=nil)
-         @@trace_mode   = mode   || @@trace_mode   || DBI::DEFAULT_TRACE_MODE
-         @@trace_output = output || @@trace_output || DBI::DEFAULT_TRACE_OUTPUT
-      end
-      
-      # Returns a list of the currently available drivers on your system in
-      # 'dbi:driver:' format.
-      def available_drivers
-         drivers = []
-         #path = File.dirname(File.dirname(__FILE__)) + "/" + DBD::DIR
-         path = File.dirname(__FILE__) + "/" + DBD::DIR
-         Find.find(path){ |f|
-            if File.file?(f)
-               driver = File.basename(f, ".rb")
-               drivers.push("dbi:#{driver}:")
-            end
-         }
-         drivers
-      end
-      
-      def data_sources(driver)
-         db_driver, = parse_url(driver)
-         db_driver = load_driver(db_driver)
-         dh = @@driver_map[db_driver][0]
-         dh.data_sources
-      end
-      
-      def disconnect_all( driver = nil )
-         if driver.nil?
-            @@driver_map.each {|k,v| v[0].disconnect_all}
-         else
-            db_driver, = parse_url(driver)
-            @@driver_map[db_driver][0].disconnect_all
-         end
-      end
-      
-      
-      private
-      
-      ##
-      # extended by John Gorman <jgorman at webbysoft.com> for
-      # case insensitive DBD names
-      # 
-      def load_driver(driver_name)
-          @@driver_monitor.synchronize do
-              if @@driver_map[driver_name].nil?
-
-                  dc = driver_name.downcase
-
-                  # caseless look for drivers already loaded
-                  found = @@driver_map.keys.find {|key| key.downcase == dc}
-                  return found if found
-
-                  if $SAFE >= 1
-                      # case-sensitive in safe mode
-                      require "#{DBD::DIR}/#{driver_name}/#{driver_name}"
-                  else
-                      # FIXME this whole require scheme is so horribly stupid I
-                      # can't even begin to think about how much I'd enjoy what
-                      # was smoked when this was thought up.
-                      #
-                      # Here's a hack to get tests to work.
-                      # try a quick load and then a caseless scan
-                      begin
-                          begin
-                              require "dbd/#{driver_name}"
-                          rescue LoadError 
-                              require "#{DBD::DIR}/#{driver_name}/#{driver_name}"
-                          end
-                      rescue LoadError
-                          $LOAD_PATH.each do |dir|
-                              path = "#{dir}/dbd"
-                              if FileTest.directory?(path)
-                                  require "#{path}/#{driver_name}"
-                                  break
-                              end
-
-                              path = "#{dir}/#{DBD::DIR}"
-                              next unless FileTest.directory?(path)
-                              found = Dir.entries(path).find {|e| e.downcase == dc}
-                              next unless found
-
-                              require "#{path}/#{found}/#{found}"
-                              break
-                          end
-                      end
-                  end
-
-                  found ||= driver_name
-
-                  # On a filesystem that is not case-sensitive (e.g., HFS+ on Mac OS X),
-                  # the initial require attempt that loads the driver may succeed even
-                  # though the lettercase of driver_name doesn't match the actual
-                  # filename. If that happens, const_get will fail and it become
-                  # necessary to look though the list of constants and look for a
-                  # caseless match.  The result of this match provides the constant
-                  # with the proper lettercase -- which can be used to generate the
-                  # driver handle.
-
-                  dr = nil
-                  begin
-                      dr = DBI::DBD.const_get(found.intern)
-                  rescue NameError
-                      # caseless look for constants to find actual constant
-                      found = found.downcase
-                      found = DBI::DBD.constants.find { |e| e.downcase == found }
-                      dr = DBI::DBD.const_get(found.intern) unless found.nil?
-                  end
-
-                  # If dr is nil at this point, it means the underlying driver
-                  # failed to load.  This usually means it's not installed, but
-                  # can fail for other reasons.
-                  if dr.nil?
-                      err = "Unable to load driver '#{driver_name}'"
-                      raise DBI::InterfaceError, err
-                  end
-
-                  dbd_dr = dr::Driver.new
-                  drh = DBI::DriverHandle.new(dbd_dr)
-                  drh.trace(@@trace_mode, @@trace_output)
-                  @@driver_map[found] = [drh, dbd_dr]
-                  return found
-              else
-                  return driver_name
-              end
-          end
-      rescue LoadError, NameError
-          if $SAFE >= 1
-              raise InterfaceError, "Could not load driver (#{$!.message}). Note that in SAFE mode >= 1, driver URLs have to be case sensitive!"
-          else
-              raise InterfaceError, "Could not load driver (#{$!.message})"
-          end
-      end
-      
-      # Splits a DBI URL into two components - the database driver name
-      # and the datasource (along with any options, if any) and returns
-      # a two element array, e.g. 'dbi:foo:bar' would return ['foo','bar'].
-      #
-      # A regular expression is used instead of a simple split to validate
-      # the proper format for the URL.  If it isn't correct, an Interface
-      # error is raised.
-      def parse_url(driver_url)
-         if driver_url =~ /^(DBI|dbi):([^:]+)(:(.*))$/ 
-            [$2, $4]
-         else
-            raise InterfaceError, "Invalid Data Source Name"
-         end
-      end
-      
-   end # self
-   
-   
-   
-   #----------------------------------------------------
-   #  Dispatch classes
-   #----------------------------------------------------
-   
-   
-   ##
-   # Dispatch classes (Handle, DriverHandle, DatabaseHandle and StatementHandle)
-   #
-   
-   class Handle
-      attr_reader :trace_mode, :trace_output
-      attr_reader :handle 
-      
-      def initialize(handle)
-         @handle = handle
-         @trace_mode = @trace_output = nil
-      end
-      
-      def trace(mode=nil, output=nil)
-         @trace_mode   = mode   || @trace_mode   || DBI::DEFAULT_TRACE_MODE
-         @trace_output = output || @trace_output || DBI::DEFAULT_TRACE_OUTPUT
-      end
-      
-      
-      ##
-      # call a driver specific function
-      #
-      def func(function, *values)
-         if @handle.respond_to?("__" + function.to_s) then
-            @handle.send("__" + function.to_s, *values)  
-         else
-            raise InterfaceError, "Driver specific function <#{function}> not available."
-         end
-      rescue ArgumentError
-         raise InterfaceError, "Wrong # of arguments for driver specific function"
-      end
-      
-      # error functions?
-   end
-   
-   class DriverHandle < Handle
-      
-      def connect(db_args, user, auth, params)
-         
-         user = @handle.default_user[0] if user.nil?
-         auth = @handle.default_user[1] if auth.nil?
-         
-         # TODO: what if only one of them is nil?
-         #if user.nil? and auth.nil? then
-         #  user, auth = @handle.default_user
-         #end
-         
-         params ||= {}
-         new_params = @handle.default_attributes
-         params.each {|k,v| new_params[k] = v} 
-         
-         
-         db = @handle.connect(db_args, user, auth, new_params)
-         dbh = DatabaseHandle.new(db)
-         dbh.trace(@trace_mode, @trace_output)
-         
-         if block_given?
-            begin
-               yield dbh
-            ensure  
-               dbh.disconnect if dbh.connected?
-            end  
-         else
-            return dbh
-         end
-      end
-      
-      def data_sources
-         @handle.data_sources
-      end
-      
-      def disconnect_all
-         @handle.disconnect_all
-      end
-   end
-   
-   class DatabaseHandle < Handle
-      
-      include DBI::Utils::ConvParam
-      
-      def connected?
-         not @handle.nil?
-      end
-      
-      def disconnect
-         raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-         @handle.disconnect
-         @handle = nil
-      end
-      
-      def prepare(stmt)
-         raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-         sth = StatementHandle.new(@handle.prepare(stmt), false)
-         sth.trace(@trace_mode, @trace_output)
-         
-         if block_given?
-            begin
-               yield sth
-            ensure
-               sth.finish unless sth.finished?
-            end
-         else
-            return sth
-         end 
-      end
-      
-      def execute(stmt, *bindvars)
-         raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-         sth = StatementHandle.new(@handle.execute(stmt, *conv_param(*bindvars)), true, false)
-         sth.trace(@trace_mode, @trace_output)
-         
-         if block_given?
-            begin
-               yield sth
-            ensure
-               sth.finish unless sth.finished?
-            end
-         else
-            return sth
-         end 
-      end
-      
-      def do(stmt, *bindvars)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.do(stmt, *conv_param(*bindvars))
-         end
-         
-         def select_one(stmt, *bindvars)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            row = nil
-            execute(stmt, *bindvars) do |sth|
-               row = sth.fetch 
-            end
-            row
-         end
-         
-         def select_all(stmt, *bindvars, &p)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            rows = nil
-            execute(stmt, *bindvars) do |sth|
-               if block_given?
-                  sth.each(&p)
-               else
-                  rows = sth.fetch_all 
-               end
-            end
-            return rows
-         end
-         
-         def tables
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.tables
-         end
-         
-         def columns( table )
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.columns( table ).collect {|col| ColumnInfo.new(col) }
-         end
-         
-         def ping
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.ping
-         end
-         
-         def quote(value)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.quote(value)
-         end
-         
-         def commit
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.commit
-         end
-         
-         def rollback
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle.rollback
-         end
-         
-         def transaction
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            raise InterfaceError, "No block given" unless block_given?
-            
-            commit
-            begin
-               yield self
-               commit
-            rescue Exception
-               rollback
-               raise
-            end
-         end
-         
-         
-         def [] (attr)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle[attr]
-         end
-         
-         def []= (attr, val)
-            raise InterfaceError, "Database connection was already closed!" if @handle.nil?
-            @handle[attr] = val
-         end
-         
-      end
-      
-      class StatementHandle < Handle
-         
-         include Enumerable
-         include DBI::Utils::ConvParam
-         
-         def initialize(handle, fetchable=false, prepared=true)
-            super(handle)
-            @fetchable = fetchable
-            @prepared  = prepared     # only false if immediate execute was used
-            @cols = nil
-            
-            # TODO: problems with other DB's?
-            #@row = DBI::Row.new(column_names,nil)
-            if @fetchable
-               @row = DBI::Row.new(column_names,nil)
-            else
-               @row = nil
-            end
-         end
-         
-         def finished?
-            @handle.nil?
-         end
-         
-         def fetchable?
-            @fetchable
-         end
-         
-         def bind_param(param, value, attribs=nil)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement wasn't prepared before." unless @prepared
-            @handle.bind_param(param, conv_param(value)[0], attribs)
-         end
-         
-         def execute(*bindvars)
-            cancel     # cancel before 
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement wasn't prepared before." unless @prepared
-            @handle.bind_params(*conv_param(*bindvars))
-            @handle.execute
-            @fetchable = true
-            
-            # TODO:?
-            #if @row.nil?
-            @row = DBI::Row.new(column_names,nil)
-            #end
-            return nil
-         end
-         
-         def finish
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle.finish
-            @handle = nil
-         end
-         
-         def cancel
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle.cancel if @fetchable
-            @fetchable = false
-         end
-         
-         def column_names
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            return @cols unless @cols.nil?
-            @cols = @handle.column_info.collect {|col| col['name'] }
-         end
-         
-         def column_info
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle.column_info.collect {|col| ColumnInfo.new(col) }
-         end
-         
-         def rows
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle.rows
-         end
-         
-         
-         def fetch(&p)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            
-            if block_given? 
-               while (res = @handle.fetch) != nil
-                  @row.set_values(res)
-                  yield @row
-               end
-               @handle.cancel
-               @fetchable = false
-               return nil
-            else
-               res = @handle.fetch
-               if res.nil?
-                  @handle.cancel
-                  @fetchable = false
-               else
-                  @row.set_values(res)
-                  res = @row
-               end
-               return res
-            end
-         end
-         
-         def each(&p)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            raise InterfaceError, "No block given" unless block_given?
-            
-            fetch(&p)
-         end
-         
-         def fetch_array
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            
-            if block_given? 
-               while (res = @handle.fetch) != nil
-                  yield res
-               end
-               @handle.cancel
-               @fetchable = false
-               return nil
-            else
-               res = @handle.fetch
-               if res.nil?
-                  @handle.cancel
-                  @fetchable = false
-               end
-               return res
-            end
-         end
-         
-         def fetch_hash
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            
-            cols = column_names
-            
-            if block_given? 
-               while (row = @handle.fetch) != nil
-                  hash = {}
-                  row.each_with_index {|v,i| hash[cols[i]] = v} 
-                  yield hash
-               end
-               @handle.cancel
-               @fetchable = false
-               return nil
-            else
-               row = @handle.fetch
-               if row.nil?
-                  @handle.cancel
-                  @fetchable = false
-                  return nil
-               else
-                  hash = {}
-                  row.each_with_index {|v,i| hash[cols[i]] = v} 
-                  return hash
-               end
-            end
-         end
-         
-         def fetch_many(cnt)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            
-            cols = column_names
-            rows = @handle.fetch_many(cnt)
-            if rows.nil?
-               @handle.cancel
-               @fetchable = false
-               return []
-            else
-               return rows.collect{|r| Row.new(cols, r)}
-            end
-         end
-         
-         def fetch_all
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            
-            cols = column_names
-            rows = @handle.fetch_all
-            if rows.nil?
-               @handle.cancel
-               @fetchable = false
-               return []
-            else
-               return rows.collect{|r| Row.new(cols, r)}
-            end
-         end
-         
-         def fetch_scroll(direction, offset=1)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            raise InterfaceError, "Statement must first be executed" unless @fetchable
-            
-            row = @handle.fetch_scroll(direction, offset)
-            if row.nil?
-               #@handle.cancel
-               #@fetchable = false
-               return nil
-            else
-               @row.set_values(row)
-               return @row
-            end
-         end
-         
-         def [] (attr)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle[attr]
-         end
-         
-         def []= (attr, val)
-            raise InterfaceError, "Statement was already closed!" if @handle.nil?
-            @handle[attr] = val
-         end
-         
-      end # class StatementHandle
-      
-      
-      
-      
-      
-      #----------------------------------------------------
-      #  Fallback classes
-      #----------------------------------------------------
-      
-      
-      ##
-      # Fallback classes for default behavior of DBD driver
-      # must be inherited by the DBD driver classes
-      #
-      
-      class Base
-      end
-      
-      
-      class BaseDriver < Base
-         
-         def initialize(dbd_version)
-            major, minor = dbd_version.split(".")
-            unless major.to_i == DBD::API_VERSION.split(".")[0].to_i
-               raise InterfaceError, "Wrong DBD API version used"
-            end
-         end
-         
-         def connect(dbname, user, auth, attr)
-            raise NotImplementedError
-         end
-         
-         def default_user
-            ['', '']
-         end
-         
-         def default_attributes
-            {}
-         end
-         
-         def data_sources
-            []
-         end
-         
-         def disconnect_all
-            raise NotImplementedError
-         end
-         
-      end # class BaseDriver
-      
-      class BaseDatabase < Base
-         
-         def initialize(handle, attr)
-            @handle = handle
-            @attr   = {}
-            attr.each {|k,v| self[k] = v} 
-         end
-         
-         def disconnect
-            raise NotImplementedError
-         end
-         
-         def ping
-            raise NotImplementedError
-         end
-         
-         def prepare(statement)
-            raise NotImplementedError
-         end
-         
-         #============================================
-         # OPTIONAL
-         #============================================
-         
-         def commit
-            raise NotSupportedError
-         end
-         
-         def rollback
-            raise NotSupportedError
-         end
-         
-         def tables
-            []
-         end
-         
-         def columns(table)
-            []
-         end
-         
-         
-         def execute(statement, *bindvars)
-            stmt = prepare(statement)
-            stmt.bind_params(*bindvars)
-            stmt.execute
-            stmt
-         end
-         
-         def do(statement, *bindvars)
-               stmt = execute(statement, *bindvars)
-               res = stmt.rows
-               stmt.finish
-               return res
-            end
-            
-            # includes quote
-            include DBI::SQL::BasicQuote
-            
-            def [](attr)
-               @attr[attr]
-            end
-            
-            def []=(attr, value)
-               raise NotSupportedError
-            end
-            
-         end # class BaseDatabase
-         
-         
-         class BaseStatement < Base
-            
-            def initialize(attr=nil)
-               @attr = attr || {}
-            end
-            
-            
-            
-            def bind_param(param, value, attribs)
-               raise NotImplementedError
-            end
-            
-            def execute
-               raise NotImplementedError
-            end
-            
-            def finish
-               raise NotImplementedError
-            end
-            
-            def fetch
-               raise NotImplementedError
-            end
-            
-            ##
-            # returns result-set column information as array
-            # of hashs, where each hash represents one column
-            def column_info
-               raise NotImplementedError
-            end
-            
-            #============================================
-            # OPTIONAL
-            #============================================
-            
-            def bind_params(*bindvars)
-               bindvars.each_with_index {|val,i| bind_param(i+1, val, nil) }
-               self
-            end
-            
-            def cancel
-            end
-            
-            def fetch_scroll(direction, offset)
-               case direction
-               when SQL_FETCH_NEXT
-                  return fetch
-               when SQL_FETCH_LAST
-                  last_row = nil
-                  while (row=fetch) != nil
-                     last_row = row
-                  end
-                  return last_row
-               when SQL_FETCH_RELATIVE
-                  raise NotSupportedError if offset <= 0
-                  row = nil
-                  offset.times { row = fetch; break if row.nil? }
-                  return row
-               else
-                  raise NotSupportedError
-               end
-            end
-            
-            def fetch_many(cnt)
-               rows = []
-               cnt.times do
-                  row = fetch
-                  break if row.nil?
-                  rows << row.dup
-               end
-               
-               if rows.empty?
-                  nil
-               else
-                  rows
-               end
-            end
-            
-            def fetch_all
-               rows = []
-               loop do
-                  row = fetch
-                  break if row.nil?
-                  rows << row.dup
-               end
-               
-               if rows.empty?
-                  nil
-               else
-                  rows
-               end
-            end
-            
-            def [](attr)
-               @attr[attr]
-            end
-            
-            def []=(attr, value)
-               raise NotSupportedError
-            end
-            
-         end # class BaseStatement
-         
-         
-      end # module DBI
-      
-      
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/columninfo.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/columninfo.rb
deleted file mode 100644
index 3e02c2c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/columninfo.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-class ColumnInfo < Hash
-
-   # Creates and returns a ColumnInfo object.  This represents metadata for
-   # columns within a given table, such as the data type, whether or not the
-   # the column is a primary key, etc.
-   #
-   # ColumnInfo is a subclass of Hash.
-   #
-   def initialize(hash=nil)
-      self.update(hash) if hash
-   end
-   
-   # Returns the column's name.
-   def name
-      self['name']
-   end
-   
-   # Sets the column's name.
-   def name=(val)
-      self['name'] = val
-   end
-   
-   # Returns a portable integer representation of the column's type.  Here are
-   # the constant names (under DBI) and their respective values:
-   #
-   # SQL_CHAR      = 1
-   # SQL_NUMERIC   = 2
-   # SQL_DECIMAL   = 3
-   # SQL_INTEGER   = 4
-   # SQL_SMALLINT  = 5
-   # SQL_FLOAT     = 6
-   # SQL_REAL      = 7
-   # SQL_DOUBLE    = 8
-   # SQL_DATE      = 9 
-   # SQL_TIME      = 10
-   # SQL_TIMESTAMP = 11
-   # SQL_VARCHAR   = 12
-   #
-   # SQL_LONGVARCHAR   = -1
-   # SQL_BINARY        = -2
-   # SQL_VARBINARY     = -3
-   # SQL_LONGVARBINARY = -4
-   # SQL_BIGINT        = -5
-   # SQL_BIT           = -7
-   # SQL_TINYINT       = -6
-   #
-   def sql_type
-      self['sql_type']
-   end
-   
-   # Sets the integer representation for the column's type.
-   def sql_type=(val)
-      self['sql_type'] = val
-   end
-   
-   # A string representation of the column's type, e.g. 'date'.
-   def type_name
-      self['type_name']
-   end
-   
-   # Sets the representation for the column's type.
-   def type_name=(val)
-      self['type_name'] = val
-   end
-   
-   # Returns the precision, i.e. number of bytes or digits.
-   def precision
-      self['precision']
-   end
-   
-   # Sets the precision, i.e. number of bytes or digits.
-   def precision=(val)
-      self['precision'] = val
-   end
-   
-   # Returns the number of digits from right.
-   def scale
-      self['scale']
-   end
-   
-   # Sets the number of digits from right.
-   def scale=(val)
-      self['scale'] = val
-   end
-   
-   # Returns the default value for the column, or nil if not set.
-   def default
-      self['default']
-   end
-   
-   # Sets the default value for the column.
-   def default=(val)
-      self['default'] = val
-   end
-   
-   # Returns whether or not the column is may contain a NULL.
-   def nullable
-      self['nullable']
-   end
-   
-   # Sets whether or not the column may contain a NULL.
-   def nullable=(val)
-      self['nullable'] = val
-   end
-   
-   # Returns whether or not the column is indexed.
-   def indexed
-      self['indexed']
-   end
-   
-   # Sets whether or not the column is indexed.
-   def indexed=(val)
-      self['indexed'] = 'val'
-   end
-   
-   # Returns whether or not the column is a primary key.
-   def primary
-      self['primary']
-   end
-   
-   # Sets whether or not the column is a primary key.
-   def primary=(val)
-      self['primary'] = val
-   end
-   
-   # Returns whether or not data in the column must be unique.
-   def unique
-      self['unique']
-   end
-   
-   # Sets whether or not data in the column must be unique.
-   def unique=(val)
-      self['unique'] = val
-   end
-
-   # Aliases
-   alias nullable? nullable
-   alias is_nullable? nullable
-
-   alias indexed? indexed
-   alias is_indexed? indexed
-
-   alias primary? primary
-   alias is_primary? primary
-
-   alias unique? unique
-   alias is_unique unique
-
-   alias size precision
-   alias size= precision=
-   alias length precision
-   alias length= precision=
-
-   alias decimal_digits scale
-   alias decimal_digits= scale=
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/row.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/row.rb
deleted file mode 100644
index d48db6e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/row.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-require "delegate"
-
-# The DBI::Row class is a delegate of Array, rather than a subclass, because
-# there are times when it should act like an Array, and others when it should
-# act like a Hash (and still others where it should act like String, Regexp,
-# etc).  It also needs to store metadata about the row, such as
-# column data type and index information, that users can then access.
-#
-module DBI
-   class Row < DelegateClass(Array)
-      attr_reader :column_names
-
-      # DBI::Row.new(columns, size_or_array=nil)
-      #
-      # Returns a new DBI::Row object using +columns+.  The +size_or_array+
-      # argument may either be an Integer or an Array.  If it is not provided,
-      # it defaults to the length of +columns+.
-      #
-      # DBI::Row is a delegate of the Array class, so all of the Array
-      # instance methods are available to your DBI::Row object (keeping in
-      # mind that initialize, [], and []= have been explicitly overridden).
-      #
-      def initialize(columns, size_or_array=nil)
-         size_or_array ||= columns.size 
-
-         case size_or_array
-            when Integer
-               @arr = Array.new(size_or_array)
-            when Array
-               @arr = size_or_array
-            else
-               raise TypeError, "parameter must be either Integer or Array"
-         end
-
-         # The '@column_map' is used to map column names to integer values so
-         # that users can reference row values by name or number.
-
-         @column_map   = {}
-         @column_names = columns
-         columns.each_with_index { |c,i| @column_map[c] = i }
-         super(@arr)
-      end
-
-      # Replaces the contents of @arr with +new_values+
-      def set_values(new_values)
-         @arr.replace(new_values)
-      end
-      
-      # Yields a column value by name (rather than index), along with the
-      # column name itself.
-      def each_with_name
-         @arr.each_with_index do |v, i|
-            yield v, @column_names[i]
-         end 
-      end
-      
-      # Returns the Row object as a hash
-      def to_h
-         hash = {}
-         each_with_name{ |v, n| hash[n] = v}
-         hash
-      end
-      
-      # Create a new row with 'new_values', reusing the field name hash.
-      def clone_with(new_values)    
-         Row.new(@column_names, new_values)
-      end
-
-      alias field_names column_names
-
-      # Retrieve a value by index (rather than name).
-      #
-      # Deprecated.  Since Row delegates to Array, just use Row#at.
-      def by_index(index)
-         @arr[index]
-      end
-    
-      # Value of the field named +field_name+ or nil if not found.
-      def by_field(field_name)
-         begin
-            @arr[@column_map[field_name.to_s]]
-         rescue TypeError
-            nil
-         end
-      end
- 
-      # Row#[]
-      #
-      # row[int]
-      # row[array]
-      # row[regexp]
-      # row[arg, arg]
-      # row[arg, arg, ...]
-      #
-      # Sample: Row.new(["first","last","age"], ["Daniel", "Berger", "36"])
-      #
-      # Retrieves row elements.  Exactly what it retrieves depends on the
-      # kind and number of arguments used.
-      #
-      # Zero arguments will raise an ArgumentError.
-      #
-      # One argument will return a single result.  This can be a String,
-      # Symbol, Integer, Range or Regexp and the appropriate result will
-      # be returned.  Strings, Symbols and Regexps act like hash lookups,
-      # while Integers and Ranges act like Array index lookups.
-      #
-      # Two arguments will act like the second form of Array#[], i.e it takes
-      # two integers, with the first number the starting point and the second
-      # number the length, and returns an array of values.
-      #
-      # If three or more arguments are provided, an array of results is
-      # returned.  The behavior for each argument is that of a single argument,
-      # i.e. Strings, Symbols, and Regexps act like hash lookups, while
-      # Integers and Ranges act like Array index lookups.
-      # 
-      # If no results are found, or an unhandled type is passed, then nil
-      # (or a nil element) is returned.
-      #
-      def [](*args)
-         begin
-            case args.length
-               when 0
-                  err = "wrong # of arguments(#{args.size} for at least 1)"
-                  raise ArgumentError, err
-               when 1
-                  case args[0]
-                     when Array
-                        args[0].collect { |e| self[e] }
-                     when Regexp
-                        self[@column_names.grep(args[0])] 
-                     else
-                        @arr[conv_param(args[0])]
-                  end
-               # We explicitly check for a length of 2 in order to properly
-               # simulate the second form of Array#[].
-               when 2
-                  @arr[conv_param(args[0]), conv_param(args[1])]
-               else
-                  results = []
-                  args.flatten.each{ |arg|
-                     case arg
-                        when Integer
-                           results.push(@arr[arg])
-                        when Regexp
-                           results.push(self[@column_names.grep(arg)])
-                        else
-                           results.push(self[conv_param(arg)])
-                     end
-                  }
-                  results.flatten
-            end
-         rescue TypeError
-            nil
-         end
-      end
-
-      # Assign a value to a Row object by element.  You can assign using
-      # a single element reference, or by using a start and length similar
-      # to the second form of Array#[]=.
-      #
-      # row[0]     = "kirk"
-      # row[:last] = "haines"
-      # row[0, 2]  = "test" 
-      #
-      def []=(key, value_or_length, obj=nil)
-         if obj
-            @arr[conv_param(key), conv_param(value_or_length)] = obj
-         else
-            @arr[conv_param(key)] = value_or_length
-         end
-      end
-
-      def clone
-         clone_with(@arr.dup)
-      end
-
-      alias dup clone
-
-      private
-
-      # Simple helper method to grab the proper value from @column_map
-      def conv_param(arg)
-         case arg
-            when String, Symbol
-               @column_map[arg.to_s]
-            when Range
-               if arg.first.kind_of?(Symbol) || arg.first.kind_of?(String)
-                  first = @column_map[arg.first.to_s]
-                  last  = @column_map[arg.last.to_s]
-               else
-                  first = arg.first
-                  last  = arg.last
-               end
-
-               if arg.exclude_end?
-                  (first...last) 
-               else
-                  (first..last)
-               end
-            else
-               arg
-         end
-      end
-   end # class Row
-end # module DBI
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/sql.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/sql.rb
deleted file mode 100644
index 1b84703..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/sql.rb
+++ /dev/null
@@ -1,239 +0,0 @@
-#
-# $Id: sql.rb,v 1.3 2006/03/27 20:25:02 francis Exp $
-#
-# parts extracted from Jim Weirichs DBD::Pg
-#
-
-module DBI
-require "dbi/utils"
-require "parsedate"
-require "time"
-
-module SQL
-
-  ## Is the SQL statement a query?
-  def SQL.query?(sql)
-    sql =~ /^\s*select\b/i
-  end
-
-
-  ####################################################################
-  # Mixin module useful for expanding SQL statements.
-  #
-  module BasicQuote
-
-    # by Masatoshi SEKI
-    class Coerce
-      def as_int(str)
-        return nil if str.nil?
-        if str == "" then nil else str.to_i end 
-      end 
-
-      def as_float(str)
-        return nil if str.nil?
-        str.to_f
-      end
-
-      def as_str(str)
-        str
-      end
-
-      def as_bool(str)
-        if str == "t" or str == "1"
-          true
-        elsif str == "f" or str == "0"
-          false
-        else
-          nil
-        end
-      end
-
-      def as_time(str)
-        return nil if str.nil? or str.empty?
-        t = ParseDate.parsedate(str)
-        DBI::Time.new(*t[3,3])
-      end
-
-
-      def as_timestamp(str)
-        return nil if str.nil? or str.empty?
-        ary = ParseDate.parsedate(str)
-        begin 
-          time = ::Time.gm(*(ary[0,6])) 
-        rescue ArgumentError => ae 
-          # don't fault stupid values that MySQL nevertheless stores 
-          return nil 
-        end
-        if ary[6] =~ /^((\+|\-)\d+)(:\d+)?$/
-          diff = $1.to_i * 3600  # seconds per hour 
-          time -= diff
-          time.localtime
-        end 
-        DBI::Timestamp.new(time)
-      end
-
-
-      def as_date(str)
-        return nil if str.nil?
-        ary = ParseDate.parsedate(str)
-        DBI::Date.new(*ary[0,3])
-      rescue
-        nil
-      end
-
-
-      def coerce(sym, str)
-        self.send(sym, str)
-      end
-
-    end # class Coerce
-
-    
-    ## Quote strings appropriately for SQL statements
-    def quote(value)
-      case value
-      when String
-	value = value.gsub(/'/, "''")	# ' (for ruby-mode)
-	"'#{value}'"
-      when NilClass
-	"NULL"
-      when TrueClass
-        "'t'"
-      when FalseClass
-        "'f'"
-      when Array
-	value.collect { |v| quote(v) }.join(", ")
-      when DBI::Date, DBI::Time, DBI::Timestamp, ::Date
-        "'#{value.to_s}'"
-      when ::Time
-        "'#{value.rfc2822}'"
-      else
-	value.to_s
-      end
-    end
-  end # module BasicQuote
-
-
-
-  ####################################################################
-  # Mixin module useful for binding arguments to an SQL string.
-  #
-  module BasicBind
-
-    ## Bind the :sql string to an array of :args, quoting with :quoter.
-    #
-    def bind(quoter, sql, args)
-      arg_index = 0
-      result = ""
-      tokens(sql).each { |part|
-	case part
-	when '?'
-	  result << quoter.quote(args[arg_index])
-	  arg_index += 1
-	when '??'
-	  result << "?"
-	else
-	  result << part
-	end
-      }
-      if arg_index < args.size
-        raise "Too many SQL parameters"
-      elsif arg_index > args.size
-        raise "Not enough SQL parameters"
-      end
-      result
-    end
-
-    ## Break the sql string into parts.
-    #
-    # This is NOT a full lexer for SQL.  It just breaks up the SQL
-    # string enough so that question marks, double question marks and
-    # quoted strings are separated.  This is used when binding
-    # arguments to "?" in the SQL string.  
-    #
-    # C-style (/* */) and Ada-style (--) comments are handled.
-    # Note: Nested C-style comments are NOT handled!
-    #
-    def tokens(sql)
-      sql.scan(%r{
-        (
-            -- .*                               (?# matches "--" style comments to the end of line or string )
-        |   -                                   (?# matches single "-" )
-        |
-            /[*] .*? [*]/                       (?# matches C-style comments )
-        |   /                                   (?# matches single slash )    
-        |
-            ' ( [^'\\]  |  ''  |  \\. )* '      (?# match strings surrounded by apostophes )
-        |
-            " ( [^"\\]  |  ""  |  \\. )* "      (?# match strings surrounded by " )
-        |
-            \?\??                               (?# match one or two question marks )
-        |
-            [^-/'"?]+                           (?# match all characters except ' " ? - and / )
-            
-        )}x).collect {|t| t.first}
-    end
-
-  end # module BasicBind
-
-
-  class PreparedStatement
-    include BasicBind # for method tokens(sql)
-
-    attr_accessor :unbound
-
-    def initialize(quoter, sql)
-      @quoter, @sql = quoter, sql
-      prepare
-    end
-
-    def bind(args)
-      if @arg_index < args.size
-        raise "Too many SQL parameters"
-      elsif @arg_index > args.size
-        raise "Not enough SQL parameters"
-      end
-
-      @unbound.each do |res_pos, arg_pos|
-        @result[res_pos] = @quoter.quote(args[arg_pos])
-      end
-
-      @result.join("")
-    end
-
-    private
-
-    def prepare
-      @result = [] 
-      @unbound = {}
-      pos = 0
-      @arg_index = 0
-
-      tokens(@sql).each { |part|
-	case part
-	when '?'
-          @result[pos] = nil
-          @unbound[pos] = @arg_index
-          pos += 1
-          @arg_index += 1
-	when '??'
-          if @result[pos-1] != nil
-            @result[pos-1] << "?"
-          else
-            @result[pos] = "?"
-            pos += 1
-          end
-	else
-          if @result[pos-1] != nil
-            @result[pos-1] << part
-          else
-            @result[pos] = part
-            pos += 1
-          end
-	end
-      }
-    end
-  end
-
-end # module SQL
-end # module DBI
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/trace.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/trace.rb
deleted file mode 100644
index 6834008..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/trace.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-# $Id: trace.rb,v 1.1 2006/01/04 02:03:22 francis Exp $
-# 
-# Tracing for DBI programs
-# 
-# Copyright (c) 2001 Michael Neumann
-#
-# 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 2
-# 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-
-# works only correct with the newest version > 0.3.3
-require "aspectr"
-require "dbi"      # to work as "ruby -r dbi/trace myapp.rb"
-
-module DBI
-
-class HandleTracer < AspectR::Aspect
-
-  def initialize(klass)
-    @never_wrap = /^__|^send$|^id$|^class$|^$ /
-    self.wrap(klass, :pre, :post, methods(klass)) 
-  end
-
-  # trace methods -------------------------------------------------------------- 
-
-  def pre(method, object, exitstatus, *args)
-    
-    par = args.collect{|a| a.inspect}.join(", ")
-
-    if object.trace_mode == 2 then
-      object.trace_output << "-> #{method} for #{object} (#{par})\n"
-    elsif object.trace_mode == 3 then
-      object.trace_output << "-> #{method} for #{object.inspect} (#{par})\n"
-    end
-  end
-
-  def post(method, object, exitstatus, *args)
-
-    case object.trace_mode
-    when 1, 2 # return values and errors
-      arrow = object.trace_mode == 1 ? "<=" : "<-"
-      if exitstatus.kind_of? Array
-        object.trace_output << "#{arrow} #{method} for #{object} = #{exitstatus[0] || 'nil'}\n" 
-      else
-        if exitstatus == true
-          object.trace_output << "!! #{$!.message.chomp}\n" 
-        end
-        object.trace_output << "#{arrow} #{method} for #{object}\n"
-      end
- 
-    when 3
-      if exitstatus.kind_of? Array
-        object.trace_output << "<- #{method} for #{object.inspect} = #{exitstatus[0].inspect}\n" 
-      else
-        if exitstatus == true
-          object.trace_output << "!! #{$!.inspect}\n" 
-        end
-        object.trace_output << "<- #{method} for #{object.inspect}\n"
-      end
-    end
-  
-  end
-
-  private # helper methods -----------------------------------------------------
-
-  def methods(klass)
-    meths = (DBI::Handle.instance_methods | klass.instance_methods) - %w(trace_mode trace_output trace)
-    /(#{meths.collect{|m| Regexp.quote(m)}.join('|')})/
-  end
-
-end
-
-@@tracer_driver    = HandleTracer.new(DBI::DriverHandle)
-@@tracer_database  = HandleTracer.new(DBI::DatabaseHandle)
-@@tracer_statement = HandleTracer.new(DBI::StatementHandle)
-
- 
-end # module DBI
-  
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/utils.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/utils.rb
deleted file mode 100644
index 3bd39c3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/utils.rb
+++ /dev/null
@@ -1,365 +0,0 @@
-#
-# $Id: utils.rb,v 1.5 2006/01/29 06:14:19 djberg96 Exp $
-#
-
-module DBI
-   class Date
-      attr_accessor :year, :month, :day
-
-      # DBI::Date.new(year = 0, month = 0, day = 0)
-      # DBI::Date.new(Date)
-      # DBI::Date.new(Time)
-      #
-      # Creates and returns a new DBI::Date object.  It's similar to the
-      # standard Date class' constructor except that it also accepts a
-      # Date or Time object.
-      def initialize(year=0, month=0, day=0)
-         case year
-            when ::Date
-               @year, @month, @day = year.year, year.month, year.day 
-               @original_date = year
-            when ::Time
-               @year, @month, @day = year.year, year.month, year.day 
-               @original_time = year
-            else
-               @year, @month, @day = year, month, day
-         end
-      end
-
-      # Aliases
-      alias :mon :month
-      alias :mon= :month=
-      alias :mday :day
-      alias :mday= :day=
-
-      # Returns a new Time object based on the year, month and day or, if a
-      # Time object was passed to the constructor, returns that object.
-      def to_time
-         @original_time || ::Time.local(@year, @month, @day, 0, 0, 0)
-      end
-
-      # Returns a new Date object based on the year, month and day or, if a
-      # Date object was passed to the constructor, returns that object.
-      def to_date
-         @original_date || ::Date.new(@year, @month, @day)
-      end
-
-      # Returns a DBI::Date object as a string in YYYY-MM-DD format.
-      def to_s
-         sprintf("%04d-%02d-%02d", @year, @month, @day)
-      end
-   end
-
-   class Time
-      attr_accessor :hour, :minute, :second
-
-      # DBI::Time.new(hour = 0, minute = 0, second = 0)
-      # DBI::Time.new(Time)
-      #
-      # Creates and returns a new DBI::Time object.  Unlike the Time object
-      # in the standard library, accepts an hour, minute and second, or a
-      # Time object.
-      def initialize(hour=0, minute=0, second=0)
-         case hour
-            when ::Time
-               @hour, @minute, @second = hour.hour, hour.min, hour.sec
-               @original_time = hour
-            else
-               @hour, @minute, @second = hour, minute, second
-         end
-      end
-
-      alias :min :minute
-      alias :min= :minute=
-      alias :sec :second
-      alias :sec= :second=
-
-      # Returns a new Time object based on the hour, minute and second, using
-      # the current year, month and day.  If a Time object was passed to the
-      # constructor, returns that object instead.
-      def to_time
-         if @original_time
-            @original_time
-         else
-            t = ::Time.now
-            ::Time.local(t.year, t.month, t.day, @hour, @minute, @second)
-         end
-      end
-
-      # Returns a DBI::Time object as a string in HH:MM:SS format.
-      def to_s
-         sprintf("%02d:%02d:%02d", @hour, @minute, @second)
-      end
-   end
-
-   class Timestamp
-      attr_accessor :year, :month, :day
-      attr_accessor :hour, :minute, :second
-      attr_writer   :fraction
-  
-      # DBI::Timestamp(year=0,month=0,day=0,hour=0,min=0,sec=0,fraction=nil)
-      # DBI::Timestamp(Time)
-      # DBI::Timestamp(Date)
-      #
-      # Creates and returns a new DBI::Timestamp object.  This is similar to
-      # a Time object in the standard library, but it also contains fractional
-      # seconds, expressed in nanoseconds.  In addition, the constructor
-      # accepts either a Date or Time object.
-      def initialize(year=0, month=0, day=0, hour=0, min=0, sec=0, fraction=nil)
-         case year
-            when ::Time
-               @year, @month, @day = year.year, year.month, year.day 
-               @hour, @minute, @second, @fraction = year.hour, year.min, year.sec, nil 
-               @original_time = year
-            when ::Date
-               @year, @month, @day = year.year, year.month, year.day 
-               @hour, @minute, @second, @fraction = 0, 0, 0, nil 
-               @original_date = year
-            else
-               @year, @month, @day = year, month, day
-               @hour, @minute, @second, @fraction = hour, min, sec, fraction
-         end
-      end
-
-      # Returns true if +timestamp+ has a year, month, day, hour, minute,
-      # second and fraction equal to the comparing object.
-      #
-      # Returns false if the comparison fails for any reason.
-      def ==(timestamp)
-         @year == timestamp.year and @month == timestamp.month and
-         @day == timestamp.day and @hour == timestamp.hour and
-         @minute == timestamp.minute and @second == timestamp.second and
-         (fraction() == timestamp.fraction)
-      rescue
-         false
-      end
-
-      # Returns fractional seconds, or 0 if not set.
-      def fraction
-         @fraction || 0
-      end
-
-      # Aliases
-      alias :mon :month
-      alias :mon= :month=
-      alias :mday :day
-      alias :mday= :day=
-      alias :min :minute
-      alias :min= :minute=
-      alias :sec :second
-      alias :sec= :second=
-
-      # Returns a DBI::Timestamp object as a string in YYYY-MM-DD HH:MM:SS
-      # format.  If a fraction is present, then it is appended in ".FF" format.
-      def to_s
-         string = sprintf("%04d-%02d-%02d %02d:%02d:%02d",
-             @year, @month, @day, @hour, @minute, @second) 
-
-         if @fraction
-            fraction = ("%.9f" % (@fraction.to_i / 1e9)).
-                        to_s[1..-1].gsub(/0{1,8}$/, "")
-            string += fraction
-         end
-
-         string
-      end
-
-      # Returns a new Time object based on the year, month and day or, if a
-      # Time object was passed to the constructor, returns that object.
-      def to_time
-         @original_time || ::Time.local(@year, @month, @day, @hour, @minute, @second)
-      end
-
-      # Returns a new Date object based on the year, month and day or, if a
-      # Date object was passed to the constructor, returns that object.
-      def to_date
-         @original_date || ::Date.new(@year, @month, @day)
-      end
-   end
-
-module Utils
-
-  module ConvParam
-    def conv_param(*params)
-      params.collect do |p|
-        case p
-        when ::Date
-          DBI::Date.new(p)
-        when ::Time
-          DBI::Timestamp.new(p)
-        else
-          p
-        end
-      end
-    end
-  end
-
-
-  def Utils.measure
-    start = ::Time.now
-    yield
-    ::Time.now - start
-  end
-  
-  ##
-  # parse a string of the form "database=xxx;key=val;..."
-  # or database:host and return hash of key/value pairs
-  #
-  # improved by John Gorman <jgorman at webbysoft.com>
-  def Utils.parse_params(str)
-    params = str.split(";")
-    hash = {}
-    params.each do |param| 
-      key, val = param.split("=") 
-      hash[key] = val if key and val
-    end 
-    if hash.empty?
-      database, host = str.split(":")
-      hash['database'] = database if database
-      hash['host']     = host if host   
-    end
-    hash 
-  end
-
-
-module XMLFormatter
-  def XMLFormatter.row(dbrow, rowtag="row", output=STDOUT)
-    #XMLFormatter.extended_row(dbrow, "row", [],  
-    output << "<#{rowtag}>\n"
-    dbrow.each_with_name do |val, name|
-      output << "  <#{name}>" + textconv(val) + "</#{name}>\n" 
-    end
-    output << "</#{rowtag}>\n"
-  end
-
-  # nil in cols_as_tag, means "all columns expect those listed in cols_in_row_tag"
-  # add_row_tag_attrs are additional attributes which are inserted into the row-tag
-  def XMLFormatter.extended_row(dbrow, rowtag="row", cols_in_row_tag=[], cols_as_tag=nil, add_row_tag_attrs={}, output=STDOUT)
-    if cols_as_tag.nil?
-      cols_as_tag = dbrow.column_names - cols_in_row_tag
-    end
-
-    output << "<#{rowtag}"
-    add_row_tag_attrs.each do |key, val|  
-      # TODO: use textconv ? " substitution?
-      output << %{ #{key}="#{textconv(val)}"}
-    end
-    cols_in_row_tag.each do |key|
-       # TODO: use textconv ? " substitution?
-      output << %{ #{key}="#{dbrow[key]}"}
-    end
-    output << ">\n"
-
-    cols_as_tag.each do |key|
-      output << "  <#{key}>" + textconv(dbrow[key]) + "</#{key}>\n" 
-    end
-    output << "</#{rowtag}>\n"
-  end
-
-
- 
-  def XMLFormatter.table(rows, roottag = "rows", rowtag = "row", output=STDOUT)
-    output << '<?xml version="1.0" encoding="UTF-8" ?>'
-    output << "\n<#{roottag}>\n"
-    rows.each do |row|
-      row(row, rowtag, output)
-    end
-    output << "</#{roottag}>\n"
-  end
-
-  class << self
-    private
-    # from xmloracle.rb 
-    def textconv(str)
-      str = str.to_s.gsub('&', "&")
-      str = str.gsub('\'', "'")
-      str = str.gsub('"', """)
-      str = str.gsub('<', "<")
-      str.gsub('>', ">")
-    end
-  end # class self
-
-end # module XMLFormatter
-
-
-module TableFormatter
-
-  # TODO: add a nr-column where the number of the column is shown
-  def TableFormatter.ascii(header, rows, 
-    header_orient=:left, rows_orient=:left, 
-    indent=2, cellspace=1, pagebreak_after=nil,
-    output=STDOUT)
-
-    header_orient ||= :left
-    rows_orient   ||= :left
-    indent        ||= 2
-    cellspace     ||= 1
-
-    # pagebreak_after n-rows (without counting header or split-lines)
-    # yield block with output as param after each pagebreak (not at the end)
-
-    col_lengths = (0...(header.size)).collect do |colnr|
-      [
-      (0...rows.size).collect { |rownr|
-        value = rows[rownr][colnr]
-        (value.nil? ? "NULL" : value).to_s.size
-      }.max,
-      header[colnr].size
-      ].max
-    end
-
-    indent = " " * indent
-
-    split_line = indent + "+"
-    col_lengths.each {|col| split_line << "-" * (col+cellspace*2) + "+" }
-
-    cellspace = " " * cellspace
-
-    output_row = proc {|row, orient|
-      output << indent + "|"
-      row.each_with_index {|c,i|
-        output << cellspace
-        str = (c.nil? ? "NULL" : c).to_s
-        output << case orient
-        when :left then   str.ljust(col_lengths[i])
-        when :right then  str.rjust(col_lengths[i])
-        when :center then str.center(col_lengths[i])
-        end 
-        output << cellspace
-        output << "|"
-      }
-      output << "\n" 
-    } 
-
-    rownr = 0
- 
-    loop do 
-      output << split_line + "\n"
-      output_row.call(header, header_orient)
-      output << split_line + "\n"
-      if pagebreak_after.nil?
-        rows.each {|ar| output_row.call(ar, rows_orient)}
-        output << split_line + "\n"
-        break
-      end      
-
-      rows[rownr,pagebreak_after].each {|ar| output_row.call(ar, rows_orient)}
-      output << split_line + "\n"
-
-      rownr += pagebreak_after
-
-      break if rownr >= rows.size
-      
-      yield output if block_given?
-    end
-    
-  end
-
-
-
-end # module TableFormatter
-
-end # module Utils
-end # module DBI
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/version.rb
deleted file mode 100644
index 18bb69f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/dbi/version.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# $Id: version.rb,v 1.1 2006/01/04 02:03:22 francis Exp $
-#
-
-module DBI
-
-VERSION = "0.0.23"
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/fcgi.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/fcgi.rb
deleted file mode 100644
index fd41c8d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/fcgi.rb
+++ /dev/null
@@ -1,618 +0,0 @@
-=begin
-
-fcgi.rb 0.8.5 - fcgi.so compatible pure-ruby FastCGI library
-
-fastcgi.rb Copyright (C) 2001 Eli Green
-fcgi.rb    Copyright (C) 2002-2003 MoonWolf <moonwolf at moonwolf.com>
-fcgi.rb    Copyright (C) 2004 Minero Aoki
-
-=end
-trap('SIGTERM') { exit }
-trap('SIGPIPE','IGNORE') rescue nil
-
-begin
-  raise LoadError if defined?(FCGI_PURE_RUBY) && FCGI_PURE_RUBY
-  require "fcgi.so"
-rescue LoadError
-  require 'socket'
-  require 'stringio'
-
-  class FCGI
-
-    def self::is_cgi?
-      begin
-        s = Socket.for_fd($stdin.fileno)
-        s.getpeername
-        false
-      rescue Errno::ENOTCONN
-        false
-      rescue Errno::ENOTSOCK, Errno::EINVAL
-        true
-      end
-    end
-
-    def self::each(&block)
-      f = default_connection()
-      Server.new(f).each_request(&block)
-    ensure
-      f.close if f
-    end
-
-    def self::each_request(&block)
-      f = default_connection()
-      Server.new(f).each_request(&block)
-    ensure
-      f.close if f
-    end
-
-    def self::default_connection
-      ::Socket.for_fd($stdin.fileno)
-    end
-
-
-
-    ProtocolVersion = 1
-
-    # Record types
-    FCGI_BEGIN_REQUEST = 1
-    FCGI_ABORT_REQUEST = 2
-    FCGI_END_REQUEST = 3
-    FCGI_PARAMS = 4
-    FCGI_STDIN = 5
-    FCGI_STDOUT = 6
-    FCGI_STDERR = 7
-    FCGI_DATA = 8
-    FCGI_GET_VALUES = 9
-    FCGI_GET_VALUES_RESULT = 10
-    FCGI_UNKNOWN_TYPE = 11
-    FCGI_MAXTYPE = FCGI_UNKNOWN_TYPE
-
-    FCGI_NULL_REQUEST_ID = 0
-
-    # FCGI_BEGIN_REQUSET.role
-    FCGI_RESPONDER = 1
-    FCGI_AUTHORIZER = 2
-    FCGI_FILTER = 3
-
-    # FCGI_BEGIN_REQUEST.flags
-    FCGI_KEEP_CONN = 1
-
-    # FCGI_END_REQUEST.protocolStatus
-    FCGI_REQUEST_COMPLETE = 0
-    FCGI_CANT_MPX_CONN = 1
-    FCGI_OVERLOADED = 2
-    FCGI_UNKNOWN_ROLE = 3
-
-
-    class Server
-
-      def initialize(server)
-        @server = server
-        @buffers = {}
-        @default_parameters = {
-          "FCGI_MAX_CONNS" => 1,
-          "FCGI_MAX_REQS"  => 1,
-          "FCGI_MPX_CONNS" => true
-        }
-      end
-
-      def each_request(&block)
-        graceful = false
-        trap("SIGUSR1") { graceful = true }
-        while true
-          begin
-            session(&block)
-          rescue Errno::EPIPE, EOFError
-            # HTTP request is canceled by the remote user
-          end
-          exit 0 if graceful
-        end
-      end
-      
-      def session
-        sock, addr = *@server.accept
-        return unless sock
-        fsock = FastCGISocket.new(sock)
-        req = next_request(fsock)
-        yield req
-        respond_to req, fsock, FCGI_REQUEST_COMPLETE
-      ensure
-        sock.close if sock and not sock.closed?
-      end
-
-      private
-
-      def next_request(sock)
-        while rec = sock.read_record
-          if rec.management_record?
-            case rec.type
-            when FCGI_GET_VALUES
-              sock.send_record handle_GET_VALUES(rec)
-            else
-              sock.send_record UnknownTypeRecord.new(rec.request_id, rec.type)
-            end
-          else
-            case rec.type
-            when FCGI_BEGIN_REQUEST
-              @buffers[rec.request_id] = RecordBuffer.new(rec)
-            when FCGI_ABORT_REQUEST
-              raise "got ABORT_REQUEST"   # FIXME
-            else
-              buf = @buffers[rec.request_id]   or next # inactive request
-              buf.push rec
-              if buf.ready?
-                @buffers.delete rec.request_id
-                return buf.new_request
-              end
-            end
-          end
-        end
-        raise "must not happen: FCGI socket unexpected EOF"
-      end
-
-      def handle_GET_VALUES(rec)
-        h = {}
-        rec.values.each_key do |name|
-          h[name] = @default_parameters[name]
-        end
-        ValuesRecord.new(FCGI_GET_VALUES_RESULT, rec.request_id, h)
-      end
-
-      def respond_to(req, sock, status)
-        split_data(FCGI_STDOUT, req.id, req.out) do |rec|
-          sock.send_record rec
-        end
-        split_data(FCGI_STDERR, req.id, req.err) do |rec|
-          sock.send_record rec
-        end if req.err.length > 0
-        sock.send_record EndRequestRecord.new(req.id, 0, status)
-      end
-
-      DATA_UNIT = 16384
-
-      def split_data(type, id, f)
-        unless f.length == 0
-          f.rewind
-          while s = f.read(DATA_UNIT)
-            yield GenericDataRecord.new(type, id, s)
-          end
-        end
-        yield GenericDataRecord.new(type, id, '')
-      end
-
-    end
-
-
-    class FastCGISocket
-      def initialize(sock)
-        @socket = sock
-      end
-
-      def read_record
-        header = @socket.read(Record::HEADER_LENGTH) or return nil
-        return nil unless header.size == Record::HEADER_LENGTH
-        version, type, reqid, clen, padlen, reserved = *Record.parse_header(header)
-        Record.class_for(type).parse(reqid, read_record_body(clen, padlen))
-      end
-
-      def read_record_body(clen, padlen)
-        buf = ''
-        while buf.length < clen
-          buf << @socket.read([1024, clen - buf.length].min)
-        end
-        @socket.read padlen if padlen
-        buf
-      end
-      private :read_record_body
-
-      def send_record(rec)
-        @socket.write rec.serialize
-        @socket.flush
-      end
-    end
-
-
-    class RecordBuffer
-      def initialize(rec)
-        @begin_request = rec
-        @envs = []
-        @stdins = []
-        @datas = []
-      end
-
-      def push(rec)
-        case rec
-        when ParamsRecord
-          @envs.push rec
-        when StdinDataRecord
-          @stdins.push rec
-        when DataRecord
-          @datas.push rec
-        else
-          raise "got unknown record: #{rec.class}"
-        end
-      end
-
-      def ready?
-        case @begin_request.role
-        when FCGI_RESPONDER
-          completed?(@envs) and
-          completed?(@stdins)
-        when FCGI_AUTHORIZER
-          completed?(@envs)
-        when FCGI_FILTER
-          completed?(@envs) and
-          completed?(@stdins) and
-          completed?(@datas)
-        else
-          raise "unknown role: #{@begin_request.role}"
-        end
-      end
-
-      def completed?(records)
-        records.last and records.last.empty?
-      end
-      private :completed?
-
-      def new_request
-        Request.new(@begin_request.request_id, env(), stdin(), nil, nil, data())
-      end
-
-      def env
-        h = {}
-        @envs.each {|rec| h.update rec.values }
-        h
-      end
-
-      def stdin
-        StringIO.new(@stdins.inject('') {|buf, rec| buf << rec.flagment })
-      end
-
-      def data
-        StringIO.new(@datas.inject('') {|buf, rec| buf << rec.flagment })
-      end
-    end
-
-
-    class Request
-      def initialize(id, env, stdin, stdout = nil, stderr = nil, data = nil)
-        @id = id
-        @env = env
-        @in = stdin
-        @out = stdout || StringIO.new
-        @err = stderr || StringIO.new
-        @data = data || StringIO.new
-      end
-
-      attr_reader :id
-      attr_reader :env
-      attr_reader :in
-      attr_reader :out
-      attr_reader :err
-      attr_reader :data
-
-      def finish   # for backword compatibility
-      end
-    end
-
-
-    class Record
-      # uint8_t  protocol_version;
-      # uint8_t  record_type;
-      # uint16_t request_id;     (big endian)
-      # uint16_t content_length; (big endian)
-      # uint8_t  padding_length;
-      # uint8_t  reserved;
-      HEADER_FORMAT = 'CCnnCC'
-      HEADER_LENGTH = 8
-
-      def self::parse_header(buf)
-        return *buf.unpack(HEADER_FORMAT)
-      end
-
-      def self::class_for(type)
-        RECORD_CLASS[type]
-      end
-
-      def initialize(type, reqid)
-        @type = type
-        @request_id = reqid
-      end
-
-      def version
-        ::FCGI::ProtocolVersion
-      end
-
-      attr_reader :type
-      attr_reader :request_id
-
-      def management_record?
-        @request_id == FCGI_NULL_REQUEST_ID
-      end
-
-      def serialize
-        body = make_body()
-        padlen = body.length % 8
-        header = make_header(body.length, padlen)
-        header + body + "\000" * padlen
-      end
-
-      private
-
-      def make_header(clen, padlen)
-        [version(), @type, @request_id, clen, padlen, 0].pack(HEADER_FORMAT)
-      end
-    end
-
-    class BeginRequestRecord < Record
-      # uint16_t role; (big endian)
-      # uint8_t  flags;
-      # uint8_t  reserved[5];
-      BODY_FORMAT = 'nCC5'
-
-      def BeginRequestRecord.parse(id, body)
-        role, flags, *reserved = *body.unpack(BODY_FORMAT)
-        new(id, role, flags)
-      end
-
-      def initialize(id, role, flags)
-        super FCGI_BEGIN_REQUEST, id
-        @role = role
-        @flags = flags
-      end
-
-      attr_reader :role
-      attr_reader :flags
-      
-      def make_body
-        [@role, @flags, 0, 0, 0, 0, 0].pack(BODY_FORMAT)
-      end
-    end
-
-    class AbortRequestRecord < Record
-      def AbortRequestRecord.parse(id, body)
-        new(id)
-      end
-
-      def initialize(id)
-        super FCGI_ABORT_REQUEST, id
-      end
-    end
-
-    class EndRequestRecord < Record
-      # uint32_t appStatus; (big endian)
-      # uint8_t  protocolStatus;
-      # uint8_t  reserved[3];
-      BODY_FORMAT = 'NCC3'
-
-      def self::parse(id, body)
-        appstatus, protostatus, *reserved = *body.unpack(BODY_FORMAT)
-        new(id, appstatus, protostatus)
-      end
-
-      def initialize(id, appstatus, protostatus)
-        super FCGI_END_REQUEST, id
-        @application_status = appstatus
-        @protocol_status = protostatus
-      end
-
-      attr_reader :application_status
-      attr_reader :protocol_status
-
-      private
-
-      def make_body
-        [@application_status, @protocol_status, 0, 0, 0].pack(BODY_FORMAT)
-      end
-    end
-
-    class UnknownTypeRecord < Record
-      # uint8_t type;
-      # uint8_t reserved[7];
-      BODY_FORMAT = 'CC7'
-
-      def self::parse(id, body)
-        type, *reserved = *body.unpack(BODY_FORMAT)
-        new(id, type)
-      end
-
-      def initialize(id, t)
-        super FCGI_UNKNOWN_TYPE, id
-        @unknown_type = t
-      end
-
-      attr_reader :unknown_type
-
-      private
-
-      def make_body
-        [@unknown_type, 0, 0, 0, 0, 0, 0, 0].pack(BODY_FORMAT)
-      end
-    end
-
-    class ValuesRecord < Record
-      def self::parse(id, body)
-        new(id, parse_values(body))
-      end
-
-      def self::parse_values(buf)
-        result = {}
-        until buf.empty?
-          name, value = *read_pair(buf)
-          result[name] = value
-        end
-        result
-      end
-      
-      def self::read_pair(buf)
-        nlen = read_length(buf)
-        vlen = read_length(buf)
-        return buf.slice!(0, nlen), buf.slice!(0, vlen)
-      end
-      
-      def self::read_length(buf)
-        if buf[0] >> 7 == 0
-        then buf.slice!(0,1)[0]
-        else buf.slice!(0,4).unpack('N')[0] & ((1<<31) - 1)
-        end
-      end
-
-      def initialize(type, id, values)
-        super type, id
-        @values = values
-      end
-
-      attr_reader :values
-
-      private
-
-      def make_body
-        buf = ''
-        @values.each do |name, value|
-          buf << serialize_length(name.length)
-          buf << serialize_length(value.length)
-          buf << name
-          buf << value
-        end
-        buf
-      end
-
-      def serialize_length(len)
-        if len < 0x80
-        then len.chr
-        else [len | (1<<31)].pack('N')
-        end
-      end
-    end
-
-    class GetValuesRecord < ValuesRecord
-      def initialize(id, values)
-        super FCGI_GET_VALUES, id, values
-      end
-    end
-
-    class ParamsRecord < ValuesRecord
-      def initialize(id, values)
-        super FCGI_PARAMS, id, values
-      end
-
-      def empty?
-        @values.empty?
-      end
-    end
-
-    class GenericDataRecord < Record
-      def self::parse(id, body)
-        new(id, body)
-      end
-
-      def initialize(type, id, flagment)
-        super type, id
-        @flagment = flagment
-      end
-
-      attr_reader :flagment
-
-      def empty?
-        @flagment.empty?
-      end
-
-      private
-
-      def make_body
-        @flagment
-      end
-    end
-
-    class StdinDataRecord < GenericDataRecord
-      def initialize(id, flagment)
-        super FCGI_STDIN, id, flagment
-      end
-    end
-
-    class StdoutDataRecord < GenericDataRecord
-      def initialize(id, flagment)
-        super FCGI_STDOUT, id, flagment
-      end
-    end
-
-    class DataRecord < GenericDataRecord
-      def initialize(id, flagment)
-        super FCGI_DATA, id, flagment
-      end
-    end
-
-    class Record   # redefine
-      RECORD_CLASS = {
-        FCGI_GET_VALUES    => GetValuesRecord,
-
-        FCGI_BEGIN_REQUEST => BeginRequestRecord,
-        FCGI_ABORT_REQUEST => AbortRequestRecord,
-        FCGI_PARAMS        => ParamsRecord,
-        FCGI_STDIN         => StdinDataRecord,
-        FCGI_DATA          => DataRecord,
-        FCGI_STDOUT        => StdoutDataRecord,
-        FCGI_END_REQUEST   => EndRequestRecord
-      }
-    end
-
-  end # FCGI class
-end # begin
-
-# There is no C version of 'each_cgi'
-# Note: for ruby-1.6.8 at least, the constants CGI_PARAMS/CGI_COOKIES
-# are defined within module 'CGI', even if you have subclassed it
-
-class FCGI
-  def self::each_cgi(*args)
-    require 'cgi'
-    
-    eval(<<-EOS,TOPLEVEL_BINDING)
-    class CGI
-      public :env_table
-      def self::remove_params
-        if (const_defined?(:CGI_PARAMS))
-          remove_const(:CGI_PARAMS)
-          remove_const(:CGI_COOKIES)
-        end
-      end
-    end # ::CGI class
-
-    class FCGI
-      class CGI < ::CGI
-        def initialize(request, *args)
-          ::CGI.remove_params
-          @request = request
-          super(*args)
-          @args = *args
-        end
-        def args
-          @args
-        end
-        def env_table
-          @request.env
-        end
-        def stdinput
-          @request.in
-        end
-        def stdoutput
-          @request.out
-        end
-      end # FCGI::CGI class
-    end # FCGI class
-    EOS
-    
-    if FCGI::is_cgi?
-      yield ::CGI.new(*args)
-    else
-      exit_requested = false
-      FCGI::each {|request|
-        $stdout, $stderr = request.out, request.err
-
-        yield CGI.new(request, *args)
-        
-        request.finish
-      }
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/fcgi.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/fcgi.so
deleted file mode 100644
index c2281bf..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/fcgi.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/odbc.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/odbc.so
deleted file mode 100644
index 52db6fe..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/odbc.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/swin.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/swin.so
deleted file mode 100644
index dd5cce7..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/swin.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/xmlparser.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/xmlparser.so
deleted file mode 100644
index 499453f..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/xmlparser.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/zlib.so b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/zlib.so
deleted file mode 100644
index 7c035a6..0000000
Binary files a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/i386-msvcrt/zlib.so and /dev/null differ
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
deleted file mode 100644
index 5b8f077..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-module Config
-
-  # Only define datadir if it doesn't already exist.
-  unless Config.respond_to?(:datadir)
-    
-    # Return the path to the data directory associated with the given
-    # package name.  Normally this is just
-    # "#{Config::CONFIG['datadir']}/#{package_name}", but may be
-    # modified by packages like RubyGems to handle versioned data
-    # directories.
-    def Config.datadir(package_name)
-      File.join(CONFIG['datadir'], package_name)
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems.rb
deleted file mode 100644
index e85d97c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems.rb
+++ /dev/null
@@ -1,888 +0,0 @@
-# -*- ruby -*-
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/rubygems_version'
-require 'rubygems/defaults'
-require 'thread'
-
-module Gem
-  class LoadError < ::LoadError
-    attr_accessor :name, :version_requirement
-  end
-end
-
-module Kernel
-
-  ##
-  # Use Kernel#gem to activate a specific version of +gem_name+.
-  #
-  # +version_requirements+ is a list of version requirements that the
-  # specified gem must match, most commonly "= example.version.number".  See
-  # Gem::Requirement for how to specify a version requirement.
-  #
-  # If you will be activating the latest version of a gem, there is no need to
-  # call Kernel#gem, Kernel#require will do the right thing for you.
-  #
-  # Kernel#gem returns true if the gem was activated, otherwise false.  If the
-  # gem could not be found, didn't match the version requirements, or a
-  # different version was already activated, an exception will be raised.
-  #
-  # Kernel#gem should be called *before* any require statements (otherwise
-  # RubyGems may load a conflicting library version).
-  #
-  # In older RubyGems versions, the environment variable GEM_SKIP could be
-  # used to skip activation of specified gems, for example to test out changes
-  # that haven't been installed yet.  Now RubyGems defers to -I and the
-  # RUBYLIB environment variable to skip activation of a gem.
-  #
-  # Example:
-  #
-  #   GEM_SKIP=libA:libB ruby -I../libA -I../libB ./mycode.rb
-
-  def gem(gem_name, *version_requirements) # :doc:
-    skip_list = (ENV['GEM_SKIP'] || "").split(/:/)
-    raise Gem::LoadError, "skipping #{gem_name}" if skip_list.include? gem_name
-    Gem.activate(gem_name, *version_requirements)
-  end
-
-  private :gem
-
-end
-
-##
-# Main module to hold all RubyGem classes/modules.
-
-module Gem
-
-  ConfigMap = {} unless defined?(ConfigMap)
-  require 'rbconfig'
-  RbConfig = Config unless defined? ::RbConfig
-
-  ConfigMap.merge!(
-    :BASERUBY => RbConfig::CONFIG["BASERUBY"],
-    :EXEEXT => RbConfig::CONFIG["EXEEXT"],
-    :RUBY_INSTALL_NAME => RbConfig::CONFIG["RUBY_INSTALL_NAME"],
-    :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"],
-    :arch => RbConfig::CONFIG["arch"],
-    :bindir => RbConfig::CONFIG["bindir"],
-    :datadir => RbConfig::CONFIG["datadir"],
-    :libdir => RbConfig::CONFIG["libdir"],
-    :ruby_install_name => RbConfig::CONFIG["ruby_install_name"],
-    :ruby_version => RbConfig::CONFIG["ruby_version"],
-    :sitedir => RbConfig::CONFIG["sitedir"],
-    :sitelibdir => RbConfig::CONFIG["sitelibdir"],
-    :vendordir => RbConfig::CONFIG["vendordir"] ,
-    :vendorlibdir => RbConfig::CONFIG["vendorlibdir"]
-  )
-
-  DIRECTORIES = %w[cache doc gems specifications] unless defined?(DIRECTORIES)
-
-  MUTEX = Mutex.new
-
-  RubyGemsPackageVersion = RubyGemsVersion
-
-  ##
-  # An Array of Regexps that match windows ruby platforms.
-
-  WIN_PATTERNS = [
-    /bccwin/i,
-    /cygwin/i,
-    /djgpp/i,
-    /mingw/i,
-    /mswin/i,
-    /wince/i,
-  ]
-
-  @@source_index = nil
-  @@win_platform = nil
-
-  @configuration = nil
-  @loaded_specs = {}
-  @platforms = []
-  @ruby = nil
-  @sources = []
-
-  @post_install_hooks   ||= []
-  @post_uninstall_hooks ||= []
-  @pre_uninstall_hooks  ||= []
-  @pre_install_hooks    ||= []
-
-  ##
-  # Activates an installed gem matching +gem+.  The gem must satisfy
-  # +version_requirements+.
-  #
-  # Returns true if the gem is activated, false if it is already
-  # loaded, or an exception otherwise.
-  #
-  # Gem#activate adds the library paths in +gem+ to $LOAD_PATH.  Before a Gem
-  # is activated its required Gems are activated.  If the version information
-  # is omitted, the highest version Gem of the supplied name is loaded.  If a
-  # Gem is not found that meets the version requirements or a required Gem is
-  # not found, a Gem::LoadError is raised.
-  #
-  # More information on version requirements can be found in the
-  # Gem::Requirement and Gem::Version documentation.
-
-  def self.activate(gem, *version_requirements)
-    if version_requirements.empty? then
-      version_requirements = Gem::Requirement.default
-    end
-
-    unless gem.respond_to?(:name) and
-           gem.respond_to?(:version_requirements) then
-      gem = Gem::Dependency.new(gem, version_requirements)
-    end
-
-    matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
-    report_activate_error(gem) if matches.empty?
-
-    if @loaded_specs[gem.name] then
-      # This gem is already loaded.  If the currently loaded gem is not in the
-      # list of candidate gems, then we have a version conflict.
-      existing_spec = @loaded_specs[gem.name]
-
-      unless matches.any? { |spec| spec.version == existing_spec.version } then
-        raise Gem::Exception,
-              "can't activate #{gem}, already activated #{existing_spec.full_name}"
-      end
-
-      return false
-    end
-
-    # new load
-    spec = matches.last
-    return false if spec.loaded?
-
-    spec.loaded = true
-    @loaded_specs[spec.name] = spec
-
-    # Load dependent gems first
-    spec.runtime_dependencies.each do |dep_gem|
-      activate dep_gem
-    end
-
-    # bin directory must come before library directories
-    spec.require_paths.unshift spec.bindir if spec.bindir
-
-    require_paths = spec.require_paths.map do |path|
-      File.join spec.full_gem_path, path
-    end
-
-    sitelibdir = ConfigMap[:sitelibdir]
-
-    # gem directories must come after -I and ENV['RUBYLIB']
-    insert_index = load_path_insert_index
-
-    if insert_index then
-      # gem directories must come after -I and ENV['RUBYLIB']
-      $LOAD_PATH.insert(insert_index, *require_paths)
-    else
-      # we are probably testing in core, -I and RUBYLIB don't apply
-      $LOAD_PATH.unshift(*require_paths)
-    end
-
-    return true
-  end
-
-  ##
-  # An Array of all possible load paths for all versions of all gems in the
-  # Gem installation.
-
-  def self.all_load_paths
-    result = []
-
-    Gem.path.each do |gemdir|
-      each_load_path all_partials(gemdir) do |load_path|
-        result << load_path
-      end
-    end
-
-    result
-  end
-
-  ##
-  # Return all the partial paths in +gemdir+.
-
-  def self.all_partials(gemdir)
-    Dir[File.join(gemdir, 'gems/*')]
-  end
-
-  private_class_method :all_partials
-
-  ##
-  # See if a given gem is available.
-
-  def self.available?(gem, *requirements)
-    requirements = Gem::Requirement.default if requirements.empty?
-
-    unless gem.respond_to?(:name) and
-           gem.respond_to?(:version_requirements) then
-      gem = Gem::Dependency.new gem, requirements
-    end
-
-    !Gem.source_index.search(gem).empty?
-  end
-
-  ##
-  # The mode needed to read a file as straight binary.
-
-  def self.binary_mode
-    @binary_mode ||= RUBY_VERSION > '1.9' ? 'rb:ascii-8bit' : 'rb'
-  end
-
-  ##
-  # The path where gem executables are to be installed.
-
-  def self.bindir(install_dir=Gem.dir)
-    return File.join(install_dir, 'bin') unless
-      install_dir.to_s == Gem.default_dir
-    Gem.default_bindir
-  end
-
-  ##
-  # Reset the +dir+ and +path+ values.  The next time +dir+ or +path+
-  # is requested, the values will be calculated from scratch.  This is
-  # mainly used by the unit tests to provide test isolation.
-
-  def self.clear_paths
-    @gem_home = nil
-    @gem_path = nil
-    @user_home = nil
-
-    @@source_index = nil
-
-    MUTEX.synchronize do
-      @searcher = nil
-    end
-  end
-
-  ##
-  # The path to standard location of the user's .gemrc file.
-
-  def self.config_file
-    File.join Gem.user_home, '.gemrc'
-  end
-
-  ##
-  # The standard configuration object for gems.
-
-  def self.configuration
-    @configuration ||= Gem::ConfigFile.new []
-  end
-
-  ##
-  # Use the given configuration object (which implements the ConfigFile
-  # protocol) as the standard configuration object.
-
-  def self.configuration=(config)
-    @configuration = config
-  end
-
-  ##
-  # The path the the data directory specified by the gem name.  If the
-  # package is not available as a gem, return nil.
-
-  def self.datadir(gem_name)
-    spec = @loaded_specs[gem_name]
-    return nil if spec.nil?
-    File.join(spec.full_gem_path, 'data', gem_name)
-  end
-
-  ##
-  # A Zlib::Deflate.deflate wrapper
-
-  def self.deflate(data)
-    require 'zlib'
-    Zlib::Deflate.deflate data
-  end
-
-  ##
-  # The path where gems are to be installed.
-
-  def self.dir
-    @gem_home ||= nil
-    set_home(ENV['GEM_HOME'] || Gem.configuration.home || default_dir) unless @gem_home
-    @gem_home
-  end
-
-  ##
-  # Expand each partial gem path with each of the required paths specified
-  # in the Gem spec.  Each expanded path is yielded.
-
-  def self.each_load_path(partials)
-    partials.each do |gp|
-      base = File.basename(gp)
-      specfn = File.join(dir, "specifications", base + ".gemspec")
-      if File.exist?(specfn)
-        spec = eval(File.read(specfn))
-        spec.require_paths.each do |rp|
-          yield(File.join(gp, rp))
-        end
-      else
-        filename = File.join(gp, 'lib')
-        yield(filename) if File.exist?(filename)
-      end
-    end
-  end
-
-  private_class_method :each_load_path
-
-  ##
-  # Quietly ensure the named Gem directory contains all the proper
-  # subdirectories.  If we can't create a directory due to a permission
-  # problem, then we will silently continue.
-
-  def self.ensure_gem_subdirectories(gemdir)
-    require 'fileutils'
-
-    Gem::DIRECTORIES.each do |filename|
-      fn = File.join gemdir, filename
-      FileUtils.mkdir_p fn rescue nil unless File.exist? fn
-    end
-  end
-
-  ##
-  # Returns a list of paths matching +file+ that can be used by a gem to pick
-  # up features from other gems.  For example:
-  #
-  #   Gem.find_files('rdoc/discover').each do |path| load path end
-  #
-  # find_files does not search $LOAD_PATH for files, only gems.
-
-  def self.find_files(path)
-    specs = searcher.find_all path
-
-    specs.map do |spec|
-      searcher.matching_files spec, path
-    end.flatten
-  end
-
-  ##
-  # Finds the user's home directory.
-  #--
-  # Some comments from the ruby-talk list regarding finding the home
-  # directory:
-  #
-  #   I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
-  #   to be depending on HOME in those code samples. I propose that
-  #   it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
-  #   least on Win32).
-
-  def self.find_home
-    ['HOME', 'USERPROFILE'].each do |homekey|
-      return ENV[homekey] if ENV[homekey]
-    end
-
-    if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
-      return "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}"
-    end
-
-    begin
-      File.expand_path("~")
-    rescue
-      if File::ALT_SEPARATOR then
-          "C:/"
-      else
-          "/"
-      end
-    end
-  end
-
-  private_class_method :find_home
-
-  ##
-  # Zlib::GzipReader wrapper that unzips +data+.
-
-  def self.gunzip(data)
-    require 'stringio'
-    require 'zlib'
-    data = StringIO.new data
-
-    Zlib::GzipReader.new(data).read
-  end
-
-  ##
-  # Zlib::GzipWriter wrapper that zips +data+.
-
-  def self.gzip(data)
-    require 'stringio'
-    require 'zlib'
-    zipped = StringIO.new
-
-    Zlib::GzipWriter.wrap zipped do |io| io.write data end
-
-    zipped.string
-  end
-
-  ##
-  # A Zlib::Inflate#inflate wrapper
-
-  def self.inflate(data)
-    require 'zlib'
-    Zlib::Inflate.inflate data
-  end
-
-  ##
-  # Return a list of all possible load paths for the latest version for all
-  # gems in the Gem installation.
-
-  def self.latest_load_paths
-    result = []
-
-    Gem.path.each do |gemdir|
-      each_load_path(latest_partials(gemdir)) do |load_path|
-        result << load_path
-      end
-    end
-
-    result
-  end
-
-  ##
-  # Return only the latest partial paths in the given +gemdir+.
-
-  def self.latest_partials(gemdir)
-    latest = {}
-    all_partials(gemdir).each do |gp|
-      base = File.basename(gp)
-      if base =~ /(.*)-((\d+\.)*\d+)/ then
-        name, version = $1, $2
-        ver = Gem::Version.new(version)
-        if latest[name].nil? || ver > latest[name][0]
-          latest[name] = [ver, gp]
-        end
-      end
-    end
-    latest.collect { |k,v| v[1] }
-  end
-
-  private_class_method :latest_partials
-
-  ##
-  # The index to insert activated gem paths into the $LOAD_PATH.
-  #
-  # Defaults to the site lib directory unless gem_prelude.rb has loaded paths,
-  # then it inserts the activated gem's paths before the gem_prelude.rb paths
-  # so you can override the gem_prelude.rb default $LOAD_PATH paths.
-
-  def self.load_path_insert_index
-    index = $LOAD_PATH.index ConfigMap[:sitelibdir]
-
-    $LOAD_PATH.each_with_index do |path, i|
-      if path.instance_variables.include?(:@gem_prelude_index) or
-        path.instance_variables.include?('@gem_prelude_index') then
-        index = i
-        break
-      end
-    end
-
-    index
-  end
-
-  ##
-  # The file name and line number of the caller of the caller of this method.
-
-  def self.location_of_caller
-    caller[1] =~ /(.*?):(\d+)$/i
-    file = $1
-    lineno = $2.to_i
-
-    [file, lineno]
-  end
-
-  ##
-  # manage_gems is useless and deprecated.  Don't call it anymore.
-
-  def self.manage_gems # :nodoc:
-    file, lineno = location_of_caller
-
-    warn "#{file}:#{lineno}:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009."
-  end
-
-  ##
-  # The version of the Marshal format for your Ruby.
-
-  def self.marshal_version
-    "#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"
-  end
-
-  ##
-  # Array of paths to search for Gems.
-
-  def self.path
-    @gem_path ||= nil
-
-    unless @gem_path then
-      paths = [ENV['GEM_PATH'] || Gem.configuration.path || default_path]
-
-      if defined?(APPLE_GEM_HOME) and not ENV['GEM_PATH'] then
-        paths << APPLE_GEM_HOME
-      end
-
-      set_paths paths.compact.join(File::PATH_SEPARATOR)
-    end
-
-    @gem_path
-  end
-
-  ##
-  # Set array of platforms this RubyGems supports (primarily for testing).
-
-  def self.platforms=(platforms)
-    @platforms = platforms
-  end
-
-  ##
-  # Array of platforms this RubyGems supports.
-
-  def self.platforms
-    @platforms ||= []
-    if @platforms.empty?
-      @platforms = [Gem::Platform::RUBY, Gem::Platform.local]
-    end
-    @platforms
-  end
-
-  ##
-  # Adds a post-install hook that will be passed an Gem::Installer instance
-  # when Gem::Installer#install is called
-
-  def self.post_install(&hook)
-    @post_install_hooks << hook
-  end
-
-  ##
-  # Adds a post-uninstall hook that will be passed a Gem::Uninstaller instance
-  # and the spec that was uninstalled when Gem::Uninstaller#uninstall is
-  # called
-
-  def self.post_uninstall(&hook)
-    @post_uninstall_hooks << hook
-  end
-
-  ##
-  # Adds a pre-install hook that will be passed an Gem::Installer instance
-  # when Gem::Installer#install is called
-
-  def self.pre_install(&hook)
-    @pre_install_hooks << hook
-  end
-
-  ##
-  # Adds a pre-uninstall hook that will be passed an Gem::Uninstaller instance
-  # and the spec that will be uninstalled when Gem::Uninstaller#uninstall is
-  # called
-
-  def self.pre_uninstall(&hook)
-    @pre_uninstall_hooks << hook
-  end
-
-  ##
-  # The directory prefix this RubyGems was installed at.
-
-  def self.prefix
-    prefix = File.dirname File.expand_path(__FILE__)
-
-    if File.dirname(prefix) == File.expand_path(ConfigMap[:sitelibdir]) or
-       File.dirname(prefix) == File.expand_path(ConfigMap[:libdir]) or
-       'lib' != File.basename(prefix) then
-      nil
-    else
-      File.dirname prefix
-    end
-  end
-
-  ##
-  # Refresh source_index from disk and clear searcher.
-
-  def self.refresh
-    source_index.refresh!
-
-    MUTEX.synchronize do
-      @searcher = nil
-    end
-  end
-
-  ##
-  # Safely read a file in binary mode on all platforms.
-
-  def self.read_binary(path)
-    File.open path, binary_mode do |f| f.read end
-  end
-
-  ##
-  # Report a load error during activation.  The message of load error
-  # depends on whether it was a version mismatch or if there are not gems of
-  # any version by the requested name.
-
-  def self.report_activate_error(gem)
-    matches = Gem.source_index.find_name(gem.name)
-
-    if matches.empty? then
-      error = Gem::LoadError.new(
-          "Could not find RubyGem #{gem.name} (#{gem.version_requirements})\n")
-    else
-      error = Gem::LoadError.new(
-          "RubyGem version error: " +
-          "#{gem.name}(#{matches.first.version} not #{gem.version_requirements})\n")
-    end
-
-    error.name = gem.name
-    error.version_requirement = gem.version_requirements
-    raise error
-  end
-
-  private_class_method :report_activate_error
-
-  def self.required_location(gemname, libfile, *version_constraints)
-    version_constraints = Gem::Requirement.default if version_constraints.empty?
-    matches = Gem.source_index.find_name(gemname, version_constraints)
-    return nil if matches.empty?
-    spec = matches.last
-    spec.require_paths.each do |path|
-      result = File.join(spec.full_gem_path, path, libfile)
-      return result if File.exist?(result)
-    end
-    nil
-  end
-
-  ##
-  # The path to the running Ruby interpreter.
-
-  def self.ruby
-    if @ruby.nil? then
-      @ruby = File.join(ConfigMap[:bindir],
-                        ConfigMap[:ruby_install_name])
-      @ruby << ConfigMap[:EXEEXT]
-
-      # escape string in case path to ruby executable contain spaces.
-      @ruby.sub!(/.*\s.*/m, '"\&"')
-    end
-
-    @ruby
-  end
-
-  ##
-  # A Gem::Version for the currently running ruby.
-
-  def self.ruby_version
-    return @ruby_version if defined? @ruby_version
-    version = RUBY_VERSION.dup
-    version << ".#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-    @ruby_version = Gem::Version.new version
-  end
-
-  ##
-  # The GemPathSearcher object used to search for matching installed gems.
-
-  def self.searcher
-    MUTEX.synchronize do
-      @searcher ||= Gem::GemPathSearcher.new
-    end
-  end
-
-  ##
-  # Set the Gem home directory (as reported by Gem.dir).
-
-  def self.set_home(home)
-    home = home.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
-    @gem_home = home
-    ensure_gem_subdirectories(@gem_home)
-  end
-
-  private_class_method :set_home
-
-  ##
-  # Set the Gem search path (as reported by Gem.path).
-
-  def self.set_paths(gpaths)
-    if gpaths
-      @gem_path = gpaths.split(File::PATH_SEPARATOR)
-
-      if File::ALT_SEPARATOR then
-        @gem_path.map! do |path|
-          path.gsub File::ALT_SEPARATOR, File::SEPARATOR
-        end
-      end
-
-      @gem_path << Gem.dir
-    else
-      # TODO: should this be Gem.default_path instead?
-      @gem_path = [Gem.dir]
-    end
-
-    @gem_path.uniq!
-    @gem_path.each do |path|
-      if 0 == File.expand_path(path).index(Gem.user_home)
-        unless win_platform? then
-          # only create by matching user
-          next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid
-        end
-      end
-      ensure_gem_subdirectories path
-    end
-  end
-
-  private_class_method :set_paths
-
-  ##
-  # Returns the Gem::SourceIndex of specifications that are in the Gem.path
-
-  def self.source_index
-    @@source_index ||= SourceIndex.from_installed_gems
-  end
-
-  ##
-  # Returns an Array of sources to fetch remote gems from.  If the sources
-  # list is empty, attempts to load the "sources" gem, then uses
-  # default_sources if it is not installed.
-
-  def self.sources
-    if @sources.empty? then
-      begin
-        gem 'sources', '> 0.0.1'
-        require 'sources'
-      rescue LoadError
-        @sources = default_sources
-      end
-    end
-
-    @sources
-  end
-
-  ##
-  # Need to be able to set the sources without calling
-  # Gem.sources.replace since that would cause an infinite loop.
-
-  def self.sources=(new_sources)
-    @sources = new_sources
-  end
-
-  ##
-  # Glob pattern for require-able path suffixes.
-
-  def self.suffix_pattern
-    @suffix_pattern ||= "{#{suffixes.join(',')}}"
-  end
-
-  ##
-  # Suffixes for require-able paths.
-
-  def self.suffixes
-    ['', '.rb', '.rbw', '.so', '.bundle', '.dll', '.sl', '.jar']
-  end
-
-  ##
-  # Use the +home+ and +paths+ values for Gem.dir and Gem.path.  Used mainly
-  # by the unit tests to provide environment isolation.
-
-  def self.use_paths(home, paths=[])
-    clear_paths
-    set_home(home) if home
-    set_paths(paths.join(File::PATH_SEPARATOR)) if paths
-  end
-
-  ##
-  # The home directory for the user.
-
-  def self.user_home
-    @user_home ||= find_home
-  end
-
-  ##
-  # Is this a windows platform?
-
-  def self.win_platform?
-    if @@win_platform.nil? then
-      @@win_platform = !!WIN_PATTERNS.find { |r| RUBY_PLATFORM =~ r }
-    end
-
-    @@win_platform
-  end
-
-  class << self
-
-    attr_reader :loaded_specs
-
-    ##
-    # The list of hooks to be run before Gem::Install#install does any work
-
-    attr_reader :post_install_hooks
-
-    ##
-    # The list of hooks to be run before Gem::Uninstall#uninstall does any
-    # work
-
-    attr_reader :post_uninstall_hooks
-
-    ##
-    # The list of hooks to be run after Gem::Install#install is finished
-
-    attr_reader :pre_install_hooks
-
-    ##
-    # The list of hooks to be run after Gem::Uninstall#uninstall is finished
-
-    attr_reader :pre_uninstall_hooks
-
-    # :stopdoc:
-
-    alias cache source_index # an alias for the old name
-
-    # :startdoc:
-
-  end
-
-  MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/"
-
-  YAML_SPEC_DIR = 'quick/'
-
-end
-
-module Config
-  # :stopdoc:
-  class << self
-    # Return the path to the data directory associated with the named
-    # package.  If the package is loaded as a gem, return the gem
-    # specific data directory.  Otherwise return a path to the share
-    # area as define by "#{ConfigMap[:datadir]}/#{package_name}".
-    def datadir(package_name)
-      Gem.datadir(package_name) ||
-        File.join(Gem::ConfigMap[:datadir], package_name)
-    end
-  end
-  # :startdoc:
-end
-
-require 'rubygems/exceptions'
-require 'rubygems/version'
-require 'rubygems/requirement'
-require 'rubygems/dependency'
-require 'rubygems/gem_path_searcher'    # Needed for Kernel#gem
-require 'rubygems/source_index'         # Needed for Kernel#gem
-require 'rubygems/platform'
-require 'rubygems/builder'              # HACK: Needed for rake's package task.
-
-begin
-  require 'rubygems/defaults/operating_system'
-rescue LoadError
-end
-
-if defined?(RUBY_ENGINE) then
-  begin
-    require "rubygems/defaults/#{RUBY_ENGINE}"
-  rescue LoadError
-  end
-end
-
-require 'rubygems/config_file'
-
-if RUBY_VERSION < '1.9' then
-  require 'rubygems/custom_require'
-end
-
-Gem.clear_paths
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/builder.rb
deleted file mode 100644
index 6fd8528..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/builder.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-
-  ##
-  # The Builder class processes RubyGem specification files
-  # to produce a .gem file.
-  #
-  class Builder
-  
-    include UserInteraction
-    ##
-    # Constructs a builder instance for the provided specification
-    #
-    # spec:: [Gem::Specification] The specification instance
-    #
-    def initialize(spec)
-      require "yaml"
-      require "rubygems/package"
-      require "rubygems/security"
-
-      @spec = spec
-    end
-
-    ##
-    # Builds the gem from the specification.  Returns the name of the file
-    # written.
-    #
-    def build
-      @spec.mark_version
-      @spec.validate
-      @signer = sign
-      write_package
-      say success
-      @spec.file_name
-    end
-    
-    def success
-      <<-EOM
-  Successfully built RubyGem
-  Name: #{@spec.name}
-  Version: #{@spec.version}
-  File: #{@spec.full_name+'.gem'}
-EOM
-    end
-
-    private
-
-    def sign
-      # if the signing key was specified, then load the file, and swap
-      # to the public key (TODO: we should probably just omit the
-      # signing key in favor of the signing certificate, but that's for
-      # the future, also the signature algorithm should be configurable)
-      signer = nil
-      if @spec.respond_to?(:signing_key) && @spec.signing_key
-        signer = Gem::Security::Signer.new(@spec.signing_key, @spec.cert_chain)
-        @spec.signing_key = nil
-        @spec.cert_chain = signer.cert_chain.map { |cert| cert.to_s }
-      end
-      signer
-    end
-
-    def write_package
-      open @spec.file_name, 'wb' do |gem_io|
-        Gem::Package.open gem_io, 'w', @signer do |pkg|
-          pkg.metadata = @spec.to_yaml
-
-          @spec.files.each do |file|
-            next if File.directory? file
-
-            stat = File.stat file
-            mode = stat.mode & 0777
-            size = stat.size
-
-            pkg.add_file_simple file, mode, size do |tar_io|
-              tar_io.write open(file, "rb") { |f| f.read }
-            end
-          end
-        end
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command.rb
deleted file mode 100644
index 860764e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command.rb
+++ /dev/null
@@ -1,406 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'optparse'
-
-require 'rubygems/user_interaction'
-
-module Gem
-
-  # Base class for all Gem commands.  When creating a new gem command, define
-  # #arguments, #defaults_str, #description and #usage (as appropriate).
-  class Command
-
-    include UserInteraction
-
-    # The name of the command.
-    attr_reader :command
-
-    # The options for the command.
-    attr_reader :options
-
-    # The default options for the command.
-    attr_accessor :defaults
-
-    # The name of the command for command-line invocation.
-    attr_accessor :program_name
-
-    # A short description of the command.
-    attr_accessor :summary
-
-    # Initializes a generic gem command named +command+.  +summary+ is a short
-    # description displayed in `gem help commands`.  +defaults+ are the
-    # default options.  Defaults should be mirrored in #defaults_str, unless
-    # there are none.
-    #
-    # Use add_option to add command-line switches.
-    def initialize(command, summary=nil, defaults={})
-      @command = command
-      @summary = summary
-      @program_name = "gem #{command}"
-      @defaults = defaults
-      @options = defaults.dup
-      @option_groups = Hash.new { |h,k| h[k] = [] }
-      @parser = nil
-      @when_invoked = nil
-    end
-
-    # True if +long+ begins with the characters from +short+.
-    def begins?(long, short)
-      return false if short.nil?
-      long[0, short.length] == short
-    end
-
-    # Override to provide command handling.
-    def execute
-      fail "Generic command has no actions"
-    end
-
-    # Get all gem names from the command line.
-    def get_all_gem_names
-      args = options[:args]
-
-      if args.nil? or args.empty? then
-        raise Gem::CommandLineError,
-              "Please specify at least one gem name (e.g. gem build GEMNAME)"
-      end
-
-      gem_names = args.select { |arg| arg !~ /^-/ }
-    end
-
-    # Get the single gem name from the command line.  Fail if there is no gem
-    # name or if there is more than one gem name given.
-    def get_one_gem_name
-      args = options[:args]
-
-      if args.nil? or args.empty? then
-        raise Gem::CommandLineError,
-             "Please specify a gem name on the command line (e.g. gem build GEMNAME)"
-      end
-
-      if args.size > 1 then
-        raise Gem::CommandLineError,
-              "Too many gem names (#{args.join(', ')}); please specify only one"
-      end
-
-      args.first
-    end
-
-    # Get a single optional argument from the command line.  If more than one
-    # argument is given, return only the first. Return nil if none are given.
-    def get_one_optional_argument
-      args = options[:args] || []
-      args.first
-    end
-
-    # Override to provide details of the arguments a command takes.
-    # It should return a left-justified string, one argument per line.
-    def arguments
-      ""
-    end
-
-    # Override to display the default values of the command
-    # options. (similar to +arguments+, but displays the default
-    # values).
-    def defaults_str
-      ""
-    end
-
-    # Override to display a longer description of what this command does.
-    def description
-      nil
-    end
-
-    # Override to display the usage for an individual gem command.
-    def usage
-      program_name
-    end
-
-    # Display the help message for the command.
-    def show_help
-      parser.program_name = usage
-      say parser
-    end
-
-    # Invoke the command with the given list of arguments.
-    def invoke(*args)
-      handle_options(args)
-      if options[:help]
-        show_help
-      elsif @when_invoked
-        @when_invoked.call(options)
-      else
-        execute
-      end
-    end
-
-    # Call the given block when invoked.
-    #
-    # Normal command invocations just executes the +execute+ method of
-    # the command.  Specifying an invocation block allows the test
-    # methods to override the normal action of a command to determine
-    # that it has been invoked correctly.
-    def when_invoked(&block)
-      @when_invoked = block
-    end
-
-    # Add a command-line option and handler to the command.
-    #
-    # See OptionParser#make_switch for an explanation of +opts+.
-    #
-    # +handler+ will be called with two values, the value of the argument and
-    # the options hash.
-    def add_option(*opts, &handler) # :yields: value, options
-      group_name = Symbol === opts.first ? opts.shift : :options
-
-      @option_groups[group_name] << [opts, handler]
-    end
-
-    # Remove previously defined command-line argument +name+.
-    def remove_option(name)
-      @option_groups.each do |_, option_list|
-        option_list.reject! { |args, _| args.any? { |x| x =~ /^#{name}/ } }
-      end
-    end
-
-    # Merge a set of command options with the set of default options
-    # (without modifying the default option hash).
-    def merge_options(new_options)
-      @options = @defaults.clone
-      new_options.each do |k,v| @options[k] = v end
-    end
-
-    # True if the command handles the given argument list.
-    def handles?(args)
-      begin
-        parser.parse!(args.dup)
-        return true
-      rescue
-        return false
-      end
-    end
-
-    # Handle the given list of arguments by parsing them and recording
-    # the results.
-    def handle_options(args)
-      args = add_extra_args(args)
-      @options = @defaults.clone
-      parser.parse!(args)
-      @options[:args] = args
-    end
-
-    def add_extra_args(args)
-      result = []
-      s_extra = Command.specific_extra_args(@command)
-      extra = Command.extra_args + s_extra
-      while ! extra.empty?
-        ex = []
-        ex << extra.shift
-        ex << extra.shift if extra.first.to_s =~ /^[^-]/
-        result << ex if handles?(ex)
-      end
-      result.flatten!
-      result.concat(args)
-      result
-    end
-
-    private
-
-    # Create on demand parser.
-    def parser
-      create_option_parser if @parser.nil?
-      @parser
-    end
-
-    def create_option_parser
-      @parser = OptionParser.new
-
-      @parser.separator("")
-      regular_options = @option_groups.delete :options
-
-      configure_options "", regular_options
-
-      @option_groups.sort_by { |n,_| n.to_s }.each do |group_name, option_list|
-        configure_options group_name, option_list
-      end
-
-      configure_options "Common", Command.common_options
-
-      @parser.separator("")
-      unless arguments.empty?
-        @parser.separator("  Arguments:")
-        arguments.split(/\n/).each do |arg_desc|
-          @parser.separator("    #{arg_desc}")
-        end
-        @parser.separator("")
-      end
-
-      @parser.separator("  Summary:")
-      wrap(@summary, 80 - 4).split("\n").each do |line|
-        @parser.separator("    #{line.strip}")
-      end
-
-      if description then
-        formatted = description.split("\n\n").map do |chunk|
-          wrap(chunk, 80 - 4)
-        end.join("\n")
-
-        @parser.separator ""
-        @parser.separator "  Description:"
-        formatted.split("\n").each do |line|
-          @parser.separator "    #{line.rstrip}"
-        end
-      end
-
-      unless defaults_str.empty?
-        @parser.separator("")
-        @parser.separator("  Defaults:")
-        defaults_str.split(/\n/).each do |line|
-          @parser.separator("    #{line}")
-        end
-      end
-    end
-
-    def configure_options(header, option_list)
-      return if option_list.nil? or option_list.empty?
-
-      header = header.to_s.empty? ? '' : "#{header} "
-      @parser.separator "  #{header}Options:"
-
-      option_list.each do |args, handler|
-        dashes = args.select { |arg| arg =~ /^-/ }
-        @parser.on(*args) do |value|
-          handler.call(value, @options)
-        end
-      end
-
-      @parser.separator ''
-    end
-
-    # Wraps +text+ to +width+
-    def wrap(text, width)
-      text.gsub(/(.{1,#{width}})( +|$\n?)|(.{1,#{width}})/, "\\1\\3\n")
-    end
-
-    ##################################################################
-    # Class methods for Command.
-    class << self
-      def common_options
-        @common_options ||= []
-      end
-
-      def add_common_option(*args, &handler)
-        Gem::Command.common_options << [args, handler]
-      end
-
-      def extra_args
-        @extra_args ||= []
-      end
-
-      def extra_args=(value)
-        case value
-        when Array
-          @extra_args = value
-        when String
-          @extra_args = value.split
-        end
-      end
-
-      # Return an array of extra arguments for the command.  The extra
-      # arguments come from the gem configuration file read at program
-      # startup.
-      def specific_extra_args(cmd)
-        specific_extra_args_hash[cmd]
-      end
-
-      # Add a list of extra arguments for the given command.  +args+
-      # may be an array or a string to be split on white space.
-      def add_specific_extra_args(cmd,args)
-        args = args.split(/\s+/) if args.kind_of? String
-        specific_extra_args_hash[cmd] = args
-      end
-
-      # Accessor for the specific extra args hash (self initializing).
-      def specific_extra_args_hash
-        @specific_extra_args_hash ||= Hash.new do |h,k|
-          h[k] = Array.new
-        end
-      end
-    end
-
-    # ----------------------------------------------------------------
-    # Add the options common to all commands.
-
-    add_common_option('-h', '--help',
-      'Get help on this command') do
-      |value, options|
-      options[:help] = true
-    end
-
-    add_common_option('-V', '--[no-]verbose',
-                      'Set the verbose level of output') do |value, options|
-      # Set us to "really verbose" so the progress meter works
-      if Gem.configuration.verbose and value then
-        Gem.configuration.verbose = 1
-      else
-        Gem.configuration.verbose = value
-      end
-    end
-
-    add_common_option('-q', '--quiet', 'Silence commands') do |value, options|
-      Gem.configuration.verbose = false
-    end
-
-    # Backtrace and config-file are added so they show up in the help
-    # commands.  Both options are actually handled before the other
-    # options get parsed.
-
-    add_common_option('--config-file FILE',
-      "Use this config file instead of default") do
-    end
-
-    add_common_option('--backtrace',
-      'Show stack backtrace on errors') do
-    end
-
-    add_common_option('--debug',
-      'Turn on Ruby debugging') do
-    end
-
-    # :stopdoc:
-    HELP = %{
-      RubyGems is a sophisticated package manager for Ruby.  This is a
-      basic help message containing pointers to more information.
-
-        Usage:
-          gem -h/--help
-          gem -v/--version
-          gem command [arguments...] [options...]
-
-        Examples:
-          gem install rake
-          gem list --local
-          gem build package.gemspec
-          gem help install
-
-        Further help:
-          gem help commands            list all 'gem' commands
-          gem help examples            show some examples of usage
-          gem help platforms           show information about platforms
-          gem help <COMMAND>           show help on COMMAND
-                                         (e.g. 'gem help install')
-        Further information:
-          http://rubygems.rubyforge.org
-    }.gsub(/^    /, "")
-
-    # :startdoc:
-
-  end # class
-
-  # This is where Commands will be placed in the namespace
-  module Commands; end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb
deleted file mode 100644
index dd9a1ae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'timeout'
-require 'rubygems/command'
-require 'rubygems/user_interaction'
-
-module Gem
-
-  ####################################################################
-  # The command manager registers and installs all the individual
-  # sub-commands supported by the gem command.
-  class CommandManager
-    include UserInteraction
-    
-    # Return the authoritative instance of the command manager.
-    def self.instance
-      @command_manager ||= CommandManager.new
-    end
-    
-    # Register all the subcommands supported by the gem command.
-    def initialize
-      @commands = {}
-      register_command :build
-      register_command :cert
-      register_command :check
-      register_command :cleanup
-      register_command :contents
-      register_command :dependency
-      register_command :environment
-      register_command :fetch
-      register_command :generate_index
-      register_command :help
-      register_command :install
-      register_command :list
-      register_command :lock
-      register_command :mirror
-      register_command :outdated
-      register_command :pristine
-      register_command :query
-      register_command :rdoc
-      register_command :search
-      register_command :server
-      register_command :sources
-      register_command :specification
-      register_command :stale
-      register_command :uninstall
-      register_command :unpack
-      register_command :update
-      register_command :which
-    end
-    
-    # Register the command object.
-    def register_command(command_obj)
-      @commands[command_obj] = false
-    end
-    
-    # Return the registered command from the command name.
-    def [](command_name)
-      command_name = command_name.intern
-      return nil if @commands[command_name].nil?
-      @commands[command_name] ||= load_and_instantiate(command_name)
-    end
-    
-    # Return a list of all command names (as strings).
-    def command_names
-      @commands.keys.collect {|key| key.to_s}.sort
-    end
-    
-    # Run the config specified by +args+.
-    def run(args)
-      process_args(args)
-    rescue StandardError, Timeout::Error => ex
-      alert_error "While executing gem ... (#{ex.class})\n    #{ex.to_s}"
-      ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if
-        Gem.configuration.backtrace
-      terminate_interaction(1)
-    rescue Interrupt
-      alert_error "Interrupted"
-      terminate_interaction(1)
-    end
-
-    def process_args(args)
-      args = args.to_str.split(/\s+/) if args.respond_to?(:to_str)
-      if args.size == 0
-        say Gem::Command::HELP
-        terminate_interaction(1)
-      end 
-      case args[0]
-      when '-h', '--help'
-        say Gem::Command::HELP
-        terminate_interaction(0)
-      when '-v', '--version'
-        say Gem::RubyGemsVersion
-        terminate_interaction(0)
-      when /^-/
-        alert_error "Invalid option: #{args[0]}.  See 'gem --help'."
-        terminate_interaction(1)
-      else
-        cmd_name = args.shift.downcase
-        cmd = find_command(cmd_name)
-        cmd.invoke(*args)
-      end
-    end
-
-    def find_command(cmd_name)
-      possibilities = find_command_possibilities(cmd_name)
-      if possibilities.size > 1
-        raise "Ambiguous command #{cmd_name} matches [#{possibilities.join(', ')}]"
-      end
-      if possibilities.size < 1
-        raise "Unknown command #{cmd_name}"
-      end
-
-      self[possibilities.first]
-    end
-
-    def find_command_possibilities(cmd_name)
-      len = cmd_name.length
-      self.command_names.select { |n| cmd_name == n[0,len] }
-    end
-    
-    private
-
-    def load_and_instantiate(command_name)
-      command_name = command_name.to_s
-      retried = false
-
-      begin
-        const_name = command_name.capitalize.gsub(/_(.)/) { $1.upcase }
-        Gem::Commands.const_get("#{const_name}Command").new
-      rescue NameError
-        if retried then
-          raise
-        else
-          retried = true
-          require "rubygems/commands/#{command_name}_command"
-          retry
-        end
-      end
-    end
-  end
-end 
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/build_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/build_command.rb
deleted file mode 100644
index e1f0122..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/build_command.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/builder'
-
-class Gem::Commands::BuildCommand < Gem::Command
-
-  def initialize
-    super('build', 'Build a gem from a gemspec')
-  end
-
-  def arguments # :nodoc:
-    "GEMSPEC_FILE  gemspec file name to build a gem for"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMSPEC_FILE"
-  end
-
-  def execute
-    gemspec = get_one_gem_name
-    if File.exist?(gemspec)
-      specs = load_gemspecs(gemspec)
-      specs.each do |spec|
-        Gem::Builder.new(spec).build
-      end
-    else
-      alert_error "Gemspec file not found: #{gemspec}"
-    end
-  end
-
-  def load_gemspecs(filename)
-    if yaml?(filename)
-      result = []
-      open(filename) do |f|
-        begin
-          while not f.eof? and spec = Gem::Specification.from_yaml(f)
-            result << spec
-          end
-        rescue Gem::EndOfYAMLException => e
-          # OK
-        end
-      end
-    else
-      result = [Gem::Specification.load(filename)]
-    end
-    result
-  end
-
-  def yaml?(filename)
-    line = open(filename) { |f| line = f.gets }
-    result = line =~ %r{!ruby/object:Gem::Specification}
-    result
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb
deleted file mode 100644
index f5b6988..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cert_command.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/security'
-
-class Gem::Commands::CertCommand < Gem::Command
-
-  def initialize
-    super 'cert', 'Manage RubyGems certificates and signing settings'
-
-    add_option('-a', '--add CERT',
-               'Add a trusted certificate.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      Gem::Security.add_trusted_cert(cert)
-      say "Added '#{cert.subject.to_s}'"
-    end
-
-    add_option('-l', '--list',
-               'List trusted certificates.') do |value, options|
-      glob_str = File::join(Gem::Security::OPT[:trust_dir], '*.pem')
-      Dir::glob(glob_str) do |path|
-        begin
-          cert = OpenSSL::X509::Certificate.new(File.read(path))
-          # this could probably be formatted more gracefully
-          say cert.subject.to_s
-        rescue OpenSSL::X509::CertificateError
-          next
-        end
-      end
-    end
-
-    add_option('-r', '--remove STRING',
-               'Remove trusted certificates containing',
-               'STRING.') do |value, options|
-      trust_dir = Gem::Security::OPT[:trust_dir]
-      glob_str = File::join(trust_dir, '*.pem')
-
-      Dir::glob(glob_str) do |path|
-        begin
-          cert = OpenSSL::X509::Certificate.new(File.read(path))
-          if cert.subject.to_s.downcase.index(value)
-            say "Removed '#{cert.subject.to_s}'"
-            File.unlink(path)
-          end
-        rescue OpenSSL::X509::CertificateError
-          next
-        end
-      end
-    end
-
-    add_option('-b', '--build EMAIL_ADDR',
-               'Build private key and self-signed',
-               'certificate for EMAIL_ADDR.') do |value, options|
-      vals = Gem::Security.build_self_signed_cert(value)
-      File.chmod 0600, vals[:key_path]
-      say "Public Cert: #{vals[:cert_path]}"
-      say "Private Key: #{vals[:key_path]}"
-      say "Don't forget to move the key file to somewhere private..."
-    end
-
-    add_option('-C', '--certificate CERT',
-               'Certificate for --sign command.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      Gem::Security::OPT[:issuer_cert] = cert
-    end
-
-    add_option('-K', '--private-key KEY',
-               'Private key for --sign command.') do |value, options|
-      key = OpenSSL::PKey::RSA.new(File.read(value))
-      Gem::Security::OPT[:issuer_key] = key
-    end
-
-    add_option('-s', '--sign NEWCERT',
-               'Sign a certificate with my key and',
-               'certificate.') do |value, options|
-      cert = OpenSSL::X509::Certificate.new(File.read(value))
-      my_cert = Gem::Security::OPT[:issuer_cert]
-      my_key = Gem::Security::OPT[:issuer_key]
-      cert = Gem::Security.sign_cert(cert, my_key, my_cert)
-      File.open(value, 'wb') { |file| file.write(cert.to_pem) }
-    end
-  end
-
-  def execute
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/check_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/check_command.rb
deleted file mode 100644
index 17c2c8f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/check_command.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/validator'
-
-class Gem::Commands::CheckCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'check', 'Check installed gems',
-          :verify => false, :alien => false
-
-    add_option(      '--verify FILE',
-               'Verify gem file against its internal',
-               'checksum') do |value, options|
-      options[:verify] = value
-    end
-
-    add_option('-a', '--alien', "Report 'unmanaged' or rogue files in the",
-               "gem repository") do |value, options|
-      options[:alien] = true
-    end
-
-    add_option('-t', '--test', "Run unit tests for gem") do |value, options|
-      options[:test] = true
-    end
-
-    add_version_option 'run tests for'
-  end
-
-  def execute
-    if options[:test]
-      version = options[:version] || Gem::Requirement.default
-      dep = Gem::Dependency.new get_one_gem_name, version
-      gem_spec = Gem::SourceIndex.from_installed_gems.search(dep).first
-      Gem::Validator.new.unit_test(gem_spec)
-    end
-
-    if options[:alien]
-      say "Performing the 'alien' operation"
-      Gem::Validator.new.alien.each do |key, val|
-        if(val.size > 0)
-          say "#{key} has #{val.size} problems"
-          val.each do |error_entry|
-            say "\t#{error_entry.path}:"
-            say "\t#{error_entry.problem}"
-            say
-          end
-        else  
-          say "#{key} is error-free"
-        end
-        say
-      end
-    end
-
-    if options[:verify]
-      gem_name = options[:verify]
-      unless gem_name
-        alert_error "Must specify a .gem file with --verify NAME"
-        return
-      end
-      unless File.exist?(gem_name)
-        alert_error "Unknown file: #{gem_name}."
-        return
-      end
-      say "Verifying gem: '#{gem_name}'"
-      begin
-        Gem::Validator.new.verify_gem_file(gem_name)
-      rescue Exception => e
-        alert_error "#{gem_name} is invalid."
-      end
-    end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb
deleted file mode 100644
index 40dcb9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/cleanup_command.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/source_index'
-require 'rubygems/dependency_list'
-
-class Gem::Commands::CleanupCommand < Gem::Command
-
-  def initialize
-    super 'cleanup',
-          'Clean up old versions of installed gems in the local repository',
-          :force => false, :test => false, :install_dir => Gem.dir
-
-    add_option('-d', '--dryrun', "") do |value, options|
-      options[:dryrun] = true
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to cleanup"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-dryrun"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [GEMNAME ...]"
-  end
-
-  def execute
-    say "Cleaning up installed gems..."
-    primary_gems = {}
-
-    Gem.source_index.each do |name, spec|
-      if primary_gems[spec.name].nil? or
-         primary_gems[spec.name].version < spec.version then
-        primary_gems[spec.name] = spec
-      end
-    end
-
-    gems_to_cleanup = []
-
-    unless options[:args].empty? then
-      options[:args].each do |gem_name|
-        specs = Gem.cache.search(/^#{gem_name}$/i)
-        specs.each do |spec|
-          gems_to_cleanup << spec
-        end
-      end
-    else
-      Gem.source_index.each do |name, spec|
-        gems_to_cleanup << spec
-      end
-    end
-
-    gems_to_cleanup = gems_to_cleanup.select { |spec|
-      primary_gems[spec.name].version != spec.version
-    }
-
-    uninstall_command = Gem::CommandManager.instance['uninstall']
-    deplist = Gem::DependencyList.new
-    gems_to_cleanup.uniq.each do |spec| deplist.add spec end
-
-    deps = deplist.strongly_connected_components.flatten.reverse
-
-    deps.each do |spec|
-      if options[:dryrun] then
-        say "Dry Run Mode: Would uninstall #{spec.full_name}"
-      else
-        say "Attempting to uninstall #{spec.full_name}"
-
-        options[:args] = [spec.name]
-        options[:version] = "= #{spec.version}"
-        options[:executables] = false
-
-        uninstaller = Gem::Uninstaller.new spec.name, options
-
-        begin
-          uninstaller.uninstall
-        rescue Gem::DependencyRemovalException,
-               Gem::GemNotInHomeException => e
-          say "Unable to uninstall #{spec.full_name}:"
-          say "\t#{e.class}: #{e.message}"
-        end
-      end
-    end
-
-    say "Clean Up Complete"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb
deleted file mode 100644
index bc75fb5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/contents_command.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-
-class Gem::Commands::ContentsCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'contents', 'Display the contents of the installed gems',
-          :specdirs => [], :lib_only => false
-
-    add_version_option
-
-    add_option('-s', '--spec-dir a,b,c', Array,
-               "Search for gems under specific paths") do |spec_dirs, options|
-      options[:specdirs] = spec_dirs
-    end
-
-    add_option('-l', '--[no-]lib-only',
-               "Only return files in the Gem's lib_dirs") do |lib_only, options|
-      options[:lib_only] = lib_only
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to list contents for"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-lib-only"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  def execute
-    version = options[:version] || Gem::Requirement.default
-    gem = get_one_gem_name
-
-    s = options[:specdirs].map do |i|
-      [i, File.join(i, "specifications")]
-    end.flatten
-
-    path_kind = if s.empty? then
-                  s = Gem::SourceIndex.installed_spec_directories
-                  "default gem paths"
-                else
-                  "specified path"
-                end
-
-    si = Gem::SourceIndex.from_gems_in(*s)
-
-    gem_spec = si.find_name(gem, version).last
-
-    unless gem_spec then
-      say "Unable to find gem '#{gem}' in #{path_kind}"
-
-      if Gem.configuration.verbose then
-        say "\nDirectories searched:"
-        s.each { |dir| say dir }
-      end
-
-      terminate_interaction
-    end
-
-    files = options[:lib_only] ? gem_spec.lib_files : gem_spec.files
-    files.each do |f|
-      say File.join(gem_spec.full_gem_path, f)
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb
deleted file mode 100644
index 44b269b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/dependency_command.rb
+++ /dev/null
@@ -1,188 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-
-class Gem::Commands::DependencyCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'dependency',
-          'Show the dependencies of an installed gem',
-          :version => Gem::Requirement.default, :domain => :local
-
-    add_version_option
-    add_platform_option
-
-    add_option('-R', '--[no-]reverse-dependencies',
-               'Include reverse dependencies in the output') do
-      |value, options|
-      options[:reverse_dependencies] = value
-    end
-
-    add_option('-p', '--pipe',
-               "Pipe Format (name --version ver)") do |value, options|
-      options[:pipe_format] = value
-    end
-
-    add_local_remote_options
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to show dependencies for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --version '#{Gem::Requirement.default}' --no-reverse-dependencies"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  def execute
-    options[:args] << '' if options[:args].empty?
-    specs = {}
-
-    source_indexes = Hash.new do |h, source_uri|
-      h[source_uri] = Gem::SourceIndex.new
-    end
-
-    pattern = if options[:args].length == 1 and
-                 options[:args].first =~ /\A\/(.*)\/(i)?\z/m then
-                flags = $2 ? Regexp::IGNORECASE : nil
-                Regexp.new $1, flags
-              else
-                /\A#{Regexp.union(*options[:args])}/
-              end
-
-    dependency = Gem::Dependency.new pattern, options[:version]
-
-    if options[:reverse_dependencies] and remote? and not local? then
-      alert_error 'Only reverse dependencies for local gems are supported.'
-      terminate_interaction 1
-    end
-
-    if local? then
-      Gem.source_index.search(dependency).each do |spec|
-        source_indexes[:local].add_spec spec
-      end
-    end
-
-    if remote? and not options[:reverse_dependencies] then
-      fetcher = Gem::SpecFetcher.fetcher
-
-      begin
-        fetcher.find_matching(dependency).each do |spec_tuple, source_uri|
-          spec = fetcher.fetch_spec spec_tuple, URI.parse(source_uri)
-
-          source_indexes[source_uri].add_spec spec
-        end
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          specs = Gem::SourceInfoCache.search_with_source dependency, false
-
-          specs.each do |spec, source_uri|
-            source_indexes[source_uri].add_spec spec
-          end
-        end
-      end
-    end
-
-    if source_indexes.empty? then
-      patterns = options[:args].join ','
-      say "No gems found matching #{patterns} (#{options[:version]})" if
-        Gem.configuration.verbose
-
-      terminate_interaction 1
-    end
-
-    specs = {}
-
-    source_indexes.values.each do |source_index|
-      source_index.gems.each do |name, spec|
-        specs[spec.full_name] = [source_index, spec]
-      end
-    end
-
-    reverse = Hash.new { |h, k| h[k] = [] }
-
-    if options[:reverse_dependencies] then
-      specs.values.each do |_, spec|
-        reverse[spec.full_name] = find_reverse_dependencies spec
-      end
-    end
-
-    if options[:pipe_format] then
-      specs.values.sort_by { |_, spec| spec }.each do |_, spec|
-        unless spec.dependencies.empty?
-          spec.dependencies.each do |dep|
-            say "#{dep.name} --version '#{dep.version_requirements}'"
-          end
-        end
-      end
-    else
-      response = ''
-
-      specs.values.sort_by { |_, spec| spec }.each do |_, spec|
-        response << print_dependencies(spec)
-        unless reverse[spec.full_name].empty? then
-          response << "  Used by\n"
-          reverse[spec.full_name].each do |sp, dep|
-            response << "    #{sp} (#{dep})\n"
-          end
-        end
-        response << "\n"
-      end
-
-      say response
-    end
-  end
-
-  def print_dependencies(spec, level = 0)
-    response = ''
-    response << '  ' * level + "Gem #{spec.full_name}\n"
-    unless spec.dependencies.empty? then
-      spec.dependencies.each do |dep|
-        response << '  ' * level + "  #{dep}\n"
-      end
-    end
-    response
-  end
-
-  # Retuns list of [specification, dep] that are satisfied by spec.
-  def find_reverse_dependencies(spec)
-    result = []
-
-    Gem.source_index.each do |name, sp|
-      sp.dependencies.each do |dep|
-        dep = Gem::Dependency.new(*dep) unless Gem::Dependency === dep
-
-        if spec.name == dep.name and
-           dep.version_requirements.satisfied_by?(spec.version) then
-          result << [sp.full_name, dep]
-        end
-      end
-    end
-
-    result
-  end
-
-  def find_gems(name, source_index)
-    specs = {}
-
-    spec_list = source_index.search name, options[:version]
-
-    spec_list.each do |spec|
-      specs[spec.full_name] = [source_index, spec]
-    end
-
-    specs
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb
deleted file mode 100644
index e672da5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/environment_command.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::EnvironmentCommand < Gem::Command
-
-  def initialize
-    super 'environment', 'Display information about the RubyGems environment'
-  end
-
-  def arguments # :nodoc:
-    args = <<-EOF
-          packageversion  display the package version
-          gemdir          display the path where gems are installed
-          gempath         display path used to search for gems
-          version         display the gem format version
-          remotesources   display the remote gem servers
-          <omitted>       display everything
-    EOF
-    return args.gsub(/^\s+/, '')
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The RubyGems environment can be controlled through command line arguments,
-gemrc files, environment variables and built-in defaults.
-
-Command line argument defaults and some RubyGems defaults can be set in
-~/.gemrc file for individual users and a /etc/gemrc for all users.  A gemrc
-is a YAML file with the following YAML keys:
-
-  :sources: A YAML array of remote gem repositories to install gems from
-  :verbose: Verbosity of the gem command.  false, true, and :really are the
-            levels
-  :update_sources: Enable/disable automatic updating of repository metadata
-  :backtrace: Print backtrace when RubyGems encounters an error
-  :bulk_threshold: Switch to a bulk update when this many sources are out of
-                   date (legacy setting)
-  :gempath: The paths in which to look for gems
-  gem_command: A string containing arguments for the specified gem command
-
-Example:
-
-  :verbose: false
-  install: --no-wrappers
-  update: --no-wrappers
-
-RubyGems' default local repository can be overriden with the GEM_PATH and
-GEM_HOME environment variables.  GEM_HOME sets the default repository to
-install into.  GEM_PATH allows multiple local repositories to be searched for
-gems.
-
-If you are behind a proxy server, RubyGems uses the HTTP_PROXY,
-HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables to discover the
-proxy server.
-
-If you are packaging RubyGems all of RubyGems' defaults are in
-lib/rubygems/defaults.rb.  You may override these in
-lib/rubygems/defaults/operating_system.rb
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [arg]"
-  end
-
-  def execute
-    out = ''
-    arg = options[:args][0]
-    case arg
-    when /^packageversion/ then
-      out << Gem::RubyGemsPackageVersion
-    when /^version/ then
-      out << Gem::RubyGemsVersion
-    when /^gemdir/, /^gemhome/, /^home/, /^GEM_HOME/ then
-      out << Gem.dir
-    when /^gempath/, /^path/, /^GEM_PATH/ then
-      out << Gem.path.join(File::PATH_SEPARATOR)
-    when /^remotesources/ then
-      out << Gem.sources.join("\n")
-    when nil then
-      out = "RubyGems Environment:\n"
-
-      out << "  - RUBYGEMS VERSION: #{Gem::RubyGemsVersion}\n"
-
-      out << "  - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
-      out << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-      out << ") [#{RUBY_PLATFORM}]\n"
-
-      out << "  - INSTALLATION DIRECTORY: #{Gem.dir}\n"
-
-      out << "  - RUBYGEMS PREFIX: #{Gem.prefix}\n" unless Gem.prefix.nil?
-
-      out << "  - RUBY EXECUTABLE: #{Gem.ruby}\n"
-
-      out << "  - EXECUTABLE DIRECTORY: #{Gem.bindir}\n"
-
-      out << "  - RUBYGEMS PLATFORMS:\n"
-      Gem.platforms.each do |platform|
-        out << "    - #{platform}\n"
-      end
-
-      out << "  - GEM PATHS:\n"
-      out << "     - #{Gem.dir}\n"
-
-      path = Gem.path.dup
-      path.delete Gem.dir
-      path.each do |p|
-        out << "     - #{p}\n"
-      end
-
-      out << "  - GEM CONFIGURATION:\n"
-      Gem.configuration.each do |name, value|
-        out << "     - #{name.inspect} => #{value.inspect}\n"
-      end
-
-      out << "  - REMOTE SOURCES:\n"
-      Gem.sources.each do |s|
-        out << "     - #{s}\n"
-      end
-
-    else
-      fail Gem::CommandLineError, "Unknown enviroment option [#{arg}]"
-    end
-    say out
-    true
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb
deleted file mode 100644
index 76c9924..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/fetch_command.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-
-class Gem::Commands::FetchCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'fetch', 'Download a gem and place it in the current directory'
-
-    add_bulk_threshold_option
-    add_proxy_option
-    add_source_option
-
-    add_version_option
-    add_platform_option
-  end
-
-  def arguments # :nodoc:
-    'GEMNAME       name of gem to download'
-  end
-
-  def defaults_str # :nodoc:
-    "--version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...]"
-  end
-
-  def execute
-    version = options[:version] || Gem::Requirement.default
-    all = Gem::Requirement.default
-
-    gem_names = get_all_gem_names
-
-    gem_names.each do |gem_name|
-      dep = Gem::Dependency.new gem_name, version
-
-      specs_and_sources = Gem::SpecFetcher.fetcher.fetch dep, all
-
-      specs_and_sources.sort_by { |spec,| spec.version }
-
-      spec, source_uri = specs_and_sources.last
-
-      if spec.nil? then
-        alert_error "Could not find #{gem_name} in any repository"
-        next
-      end
-
-      path = Gem::RemoteFetcher.fetcher.download spec, source_uri
-      FileUtils.mv path, "#{spec.full_name}.gem"
-
-      say "Downloaded #{spec.full_name}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb
deleted file mode 100644
index 1bd8756..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/generate_index_command.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/indexer'
-
-class Gem::Commands::GenerateIndexCommand < Gem::Command
-
-  def initialize
-    super 'generate_index',
-          'Generates the index files for a gem server directory',
-          :directory => '.'
-
-    add_option '-d', '--directory=DIRNAME',
-               'repository base dir containing gems subdir' do |dir, options|
-      options[:directory] = File.expand_path dir
-    end
-  end
-
-  def defaults_str # :nodoc:
-    "--directory ."
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The generate_index command creates a set of indexes for serving gems
-statically.  The command expects a 'gems' directory under the path given to
-the --directory option.  When done, it will generate a set of files like this:
-
-  gems/                                        # .gem files you want to index
-  quick/index
-  quick/index.rz                               # quick index manifest
-  quick/<gemname>.gemspec.rz                   # legacy YAML quick index file
-  quick/Marshal.<version>/<gemname>.gemspec.rz # Marshal quick index file
-  Marshal.<version>
-  Marshal.<version>.Z # Marshal full index
-  yaml
-  yaml.Z # legacy YAML full index
-
-The .Z and .rz extension files are compressed with the inflate algorithm.  The
-Marshal version number comes from ruby's Marshal::MAJOR_VERSION and
-Marshal::MINOR_VERSION constants.  It is used to ensure compatibility.  The
-yaml indexes exist for legacy RubyGems clients and fallback in case of Marshal
-version changes.
-    EOF
-  end
-
-  def execute
-    if not File.exist?(options[:directory]) or
-       not File.directory?(options[:directory]) then
-      alert_error "unknown directory name #{directory}."
-      terminate_interaction 1
-    else
-      indexer = Gem::Indexer.new options[:directory]
-      indexer.generate_index
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/help_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/help_command.rb
deleted file mode 100644
index 0c4a4ec..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/help_command.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::HelpCommand < Gem::Command
-
-  # :stopdoc:
-  EXAMPLES = <<-EOF
-Some examples of 'gem' usage.
-
-* Install 'rake', either from local directory or remote server:
-
-    gem install rake
-
-* Install 'rake', only from remote server:
-
-    gem install rake --remote
-
-* Install 'rake' from remote server, and run unit tests,
-  and generate RDocs:
-
-    gem install --remote rake --test --rdoc --ri
-
-* Install 'rake', but only version 0.3.1, even if dependencies
-  are not met, and into a user-specific directory:
-
-    gem install rake --version 0.3.1 --force --user-install
-
-* List local gems whose name begins with 'D':
-
-    gem list D
-
-* List local and remote gems whose name contains 'log':
-
-    gem search log --both
-
-* List only remote gems whose name contains 'log':
-
-    gem search log --remote
-
-* Uninstall 'rake':
-
-    gem uninstall rake
-
-* Create a gem:
-
-    See http://rubygems.rubyforge.org/wiki/wiki.pl?CreateAGemInTenMinutes
-
-* See information about RubyGems:
-
-    gem environment
-
-* Update all gems on your system:
-
-    gem update
-  EOF
-
-  PLATFORMS = <<-'EOF'
-RubyGems platforms are composed of three parts, a CPU, an OS, and a
-version.  These values are taken from values in rbconfig.rb.  You can view
-your current platform by running `gem environment`.
-
-RubyGems matches platforms as follows:
-
-  * The CPU must match exactly, unless one of the platforms has
-    "universal" as the CPU.
-  * The OS must match exactly.
-  * The versions must match exactly unless one of the versions is nil.
-
-For commands that install, uninstall and list gems, you can override what
-RubyGems thinks your platform is with the --platform option.  The platform
-you pass must match "#{cpu}-#{os}" or "#{cpu}-#{os}-#{version}".  On mswin
-platforms, the version is the compiler version, not the OS version.  (Ruby
-compiled with VC6 uses "60" as the compiler version, VC8 uses "80".)
-
-Example platforms:
-
-  x86-freebsd        # Any FreeBSD version on an x86 CPU
-  universal-darwin-8 # Darwin 8 only gems that run on any CPU
-  x86-mswin32-80     # Windows gems compiled with VC8
-
-When building platform gems, set the platform in the gem specification to
-Gem::Platform::CURRENT.  This will correctly mark the gem with your ruby's
-platform.
-  EOF
-  # :startdoc:
-
-  def initialize
-    super 'help', "Provide help on the 'gem' command"
-  end
-
-  def arguments # :nodoc:
-    args = <<-EOF
-      commands      List all 'gem' commands
-      examples      Show examples of 'gem' usage
-      <command>     Show specific help for <command>
-    EOF
-    return args.gsub(/^\s+/, '')
-  end
-
-  def usage # :nodoc:
-    "#{program_name} ARGUMENT"
-  end
-
-  def execute
-    command_manager = Gem::CommandManager.instance
-    arg = options[:args][0]
-
-    if begins? "commands", arg then
-      out = []
-      out << "GEM commands are:"
-      out << nil
-
-      margin_width = 4
-
-      desc_width = command_manager.command_names.map { |n| n.size }.max + 4
-
-      summary_width = 80 - margin_width - desc_width
-      wrap_indent = ' ' * (margin_width + desc_width)
-      format = "#{' ' * margin_width}%-#{desc_width}s%s"
-
-      command_manager.command_names.each do |cmd_name|
-        summary = command_manager[cmd_name].summary
-        summary = wrap(summary, summary_width).split "\n"
-        out << sprintf(format, cmd_name, summary.shift)
-        until summary.empty? do
-          out << "#{wrap_indent}#{summary.shift}"
-        end
-      end
-
-      out << nil
-      out << "For help on a particular command, use 'gem help COMMAND'."
-      out << nil
-      out << "Commands may be abbreviated, so long as they are unambiguous."
-      out << "e.g. 'gem i rake' is short for 'gem install rake'."
-
-      say out.join("\n")
-
-    elsif begins? "options", arg then
-      say Gem::Command::HELP
-
-    elsif begins? "examples", arg then
-      say EXAMPLES
-
-    elsif begins? "platforms", arg then
-      say PLATFORMS
-
-    elsif options[:help] then
-      command = command_manager[options[:help]]
-      if command
-        # help with provided command
-        command.invoke("--help")
-      else
-        alert_error "Unknown command #{options[:help]}.  Try 'gem help commands'"
-      end
-
-    elsif arg then
-      possibilities = command_manager.find_command_possibilities(arg.downcase)
-      if possibilities.size == 1
-        command = command_manager[possibilities.first]
-        command.invoke("--help")
-      elsif possibilities.size > 1
-        alert_warning "Ambiguous command #{arg} (#{possibilities.join(', ')})"
-      else
-        alert_warning "Unknown command #{arg}. Try gem help commands"
-      end
-
-    else
-      say Gem::Command::HELP
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb
deleted file mode 100644
index 1a6eb68..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/doc_manager'
-require 'rubygems/install_update_options'
-require 'rubygems/dependency_installer'
-require 'rubygems/local_remote_options'
-require 'rubygems/validator'
-require 'rubygems/version_option'
-
-class Gem::Commands::InstallCommand < Gem::Command
-
-  include Gem::VersionOption
-  include Gem::LocalRemoteOptions
-  include Gem::InstallUpdateOptions
-
-  def initialize
-    defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
-      :generate_rdoc => true,
-      :generate_ri   => true,
-      :format_executable => false,
-      :test => false,
-      :version => Gem::Requirement.default,
-    })
-
-    super 'install', 'Install a gem into the local repository', defaults
-
-    add_install_update_options
-    add_local_remote_options
-    add_platform_option
-    add_version_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to install"
-  end
-
-  def defaults_str # :nodoc:
-    "--both --version '#{Gem::Requirement.default}' --rdoc --ri --no-force\n" \
-    "--no-test --install-dir #{Gem.dir}"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The install command installs local or remote gem into a gem repository.
-
-For gems with executables ruby installs a wrapper file into the executable
-directory by deault.  This can be overridden with the --no-wrappers option.
-The wrapper allows you to choose among alternate gem versions using _version_.
-
-For example `rake _0.7.3_ --version` will run rake version 0.7.3 if a newer
-version is also installed.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...] [options] -- --build-flags"
-  end
-
-  def execute
-    if options[:include_dependencies] then
-      alert "`gem install -y` is now default and will be removed"
-      alert "use --ignore-dependencies to install only the gems you list"
-    end
-
-    installed_gems = []
-
-    ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9'
-
-    install_options = {
-      :env_shebang => options[:env_shebang],
-      :domain => options[:domain],
-      :force => options[:force],
-      :format_executable => options[:format_executable],
-      :ignore_dependencies => options[:ignore_dependencies],
-      :install_dir => options[:install_dir],
-      :security_policy => options[:security_policy],
-      :wrappers => options[:wrappers],
-      :bin_dir => options[:bin_dir],
-      :development => options[:development],
-    }
-
-    exit_code = 0
-
-    get_all_gem_names.each do |gem_name|
-      begin
-        inst = Gem::DependencyInstaller.new install_options
-        inst.install gem_name, options[:version]
-
-        inst.installed_gems.each do |spec|
-          say "Successfully installed #{spec.full_name}"
-        end
-
-        installed_gems.push(*inst.installed_gems)
-      rescue Gem::InstallError => e
-        alert_error "Error installing #{gem_name}:\n\t#{e.message}"
-        exit_code |= 1
-      rescue Gem::GemNotFoundException => e
-        alert_error e.message
-        exit_code |= 2
-#      rescue => e
-#        # TODO: Fix this handle to allow the error to propagate to
-#        # the top level handler.  Examine the other errors as
-#        # well.  This implementation here looks suspicious to me --
-#        # JimWeirich (4/Jan/05)
-#        alert_error "Error installing gem #{gem_name}: #{e.message}"
-#        return
-      end
-    end
-
-    unless installed_gems.empty? then
-      gems = installed_gems.length == 1 ? 'gem' : 'gems'
-      say "#{installed_gems.length} #{gems} installed"
-    end
-
-    # NOTE: *All* of the RI documents must be generated first.
-    # For some reason, RI docs cannot be generated after any RDoc
-    # documents are generated.
-
-    if options[:generate_ri] then
-      installed_gems.each do |gem|
-        Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
-      end
-
-      Gem::DocManager.update_ri_cache
-    end
-
-    if options[:generate_rdoc] then
-      installed_gems.each do |gem|
-        Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
-      end
-    end
-
-    if options[:test] then
-      installed_gems.each do |spec|
-        gem_spec = Gem::SourceIndex.from_installed_gems.search(spec.name, spec.version.version).first
-        result = Gem::Validator.new.unit_test(gem_spec)
-        if result and not result.passed?
-          unless ask_yes_no("...keep Gem?", true) then
-            Gem::Uninstaller.new(spec.name, :version => spec.version.version).uninstall
-          end
-        end
-      end
-    end
-
-    raise Gem::SystemExitException, exit_code
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/list_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/list_command.rb
deleted file mode 100644
index f3e5da9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/list_command.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/commands/query_command'
-
-##
-# An alternate to Gem::Commands::QueryCommand that searches for gems starting
-# with the the supplied argument.
-
-class Gem::Commands::ListCommand < Gem::Commands::QueryCommand
-
-  def initialize
-    super 'list', 'Display gems whose name starts with STRING'
-
-    remove_option('--name-matches')
-  end
-
-  def arguments # :nodoc:
-    "STRING        start of gem name to look for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --no-details"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [STRING]"
-  end
-
-  def execute
-    string = get_one_optional_argument || ''
-    options[:name] = /^#{string}/i
-    super
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb
deleted file mode 100644
index 5a43978..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/lock_command.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::LockCommand < Gem::Command
-
-  def initialize
-    super 'lock', 'Generate a lockdown list of gems',
-          :strict => false
-
-    add_option '-s', '--[no-]strict',
-               'fail if unable to satisfy a dependency' do |strict, options|
-      options[:strict] = strict
-    end
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to lock\nVERSION       version of gem to lock"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-strict"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The lock command will generate a list of +gem+ statements that will lock down
-the versions for the gem given in the command line.  It will specify exact
-versions in the requirements list to ensure that the gems loaded will always
-be consistent.  A full recursive search of all effected gems will be
-generated.
-
-Example:
-
-  gemlock rails-1.0.0 > lockdown.rb
-
-will produce in lockdown.rb:
-
-  require "rubygems"
-  gem 'rails', '= 1.0.0'
-  gem 'rake', '= 0.7.0.1'
-  gem 'activesupport', '= 1.2.5'
-  gem 'activerecord', '= 1.13.2'
-  gem 'actionpack', '= 1.11.2'
-  gem 'actionmailer', '= 1.1.5'
-  gem 'actionwebservice', '= 1.0.0'
-
-Just load lockdown.rb from your application to ensure that the current
-versions are loaded.  Make sure that lockdown.rb is loaded *before* any
-other require statements.
-
-Notice that rails 1.0.0 only requires that rake 0.6.2 or better be used.
-Rake-0.7.0.1 is the most recent version installed that satisfies that, so we
-lock it down to the exact version.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME-VERSION [GEMNAME-VERSION ...]"
-  end
-
-  def complain(message)
-    if options[:strict] then
-      raise Gem::Exception, message
-    else
-      say "# #{message}"
-    end
-  end
-
-  def execute
-    say "require 'rubygems'"
-
-    locked = {}
-
-    pending = options[:args]
-
-    until pending.empty? do
-      full_name = pending.shift
-
-      spec = Gem::SourceIndex.load_specification spec_path(full_name)
-
-      if spec.nil? then
-        complain "Could not find gem #{full_name}, try using the full name"
-        next
-      end
-
-      say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
-      locked[spec.name] = true
-
-      spec.runtime_dependencies.each do |dep|
-        next if locked[dep.name]
-        candidates = Gem.source_index.search dep
-
-        if candidates.empty? then
-          complain "Unable to satisfy '#{dep}' from currently installed gems"
-        else
-          pending << candidates.last.full_name
-        end
-      end
-    end
-  end
-
-  def spec_path(gem_full_name)
-    gemspecs = Gem.path.map do |path|
-      File.join path, "specifications", "#{gem_full_name}.gemspec"
-    end
-
-    gemspecs.find { |gemspec| File.exist? gemspec }
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb
deleted file mode 100644
index 959b8ea..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/mirror_command.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-require 'yaml'
-require 'zlib'
-
-require 'rubygems/command'
-require 'open-uri'
-
-class Gem::Commands::MirrorCommand < Gem::Command
-
-  def initialize
-    super 'mirror', 'Mirror a gem repository'
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The mirror command uses the ~/.gemmirrorrc config file to mirror remote gem
-repositories to a local path. The config file is a YAML document that looks
-like this:
-
-  ---
-  - from: http://gems.example.com # source repository URI
-    to: /path/to/mirror           # destination directory
-
-Multiple sources and destinations may be specified.
-    EOF
-  end
-
-  def execute
-    config_file = File.join Gem.user_home, '.gemmirrorrc'
-
-    raise "Config file #{config_file} not found" unless File.exist? config_file
-
-    mirrors = YAML.load_file config_file
-
-    raise "Invalid config file #{config_file}" unless mirrors.respond_to? :each
-
-    mirrors.each do |mir|
-      raise "mirror missing 'from' field" unless mir.has_key? 'from'
-      raise "mirror missing 'to' field" unless mir.has_key? 'to'
-
-      get_from = mir['from']
-      save_to = File.expand_path mir['to']
-
-      raise "Directory not found: #{save_to}" unless File.exist? save_to
-      raise "Not a directory: #{save_to}" unless File.directory? save_to
-
-      gems_dir = File.join save_to, "gems"
-
-      if File.exist? gems_dir then
-        raise "Not a directory: #{gems_dir}" unless File.directory? gems_dir
-      else
-        Dir.mkdir gems_dir
-      end
-
-      sourceindex_data = ''
-
-      say "fetching: #{get_from}/Marshal.#{Gem.marshal_version}.Z"
-
-      get_from = URI.parse get_from
-
-      if get_from.scheme.nil? then
-        get_from = get_from.to_s
-      elsif get_from.scheme == 'file' then
-        # check if specified URI contains a drive letter (file:/D:/Temp)
-        get_from = get_from.to_s
-        get_from = if get_from =~ /^file:.*[a-z]:/i then
-                     get_from[6..-1]
-                   else
-                     get_from[5..-1]
-                   end
-      end
-
-      open File.join(get_from.to_s, "Marshal.#{Gem.marshal_version}.Z"), "rb" do |y|
-        sourceindex_data = Zlib::Inflate.inflate y.read
-        open File.join(save_to, "Marshal.#{Gem.marshal_version}"), "wb" do |out|
-          out.write sourceindex_data
-        end
-      end
-
-      sourceindex = Marshal.load(sourceindex_data)
-
-      progress = ui.progress_reporter sourceindex.size,
-                                      "Fetching #{sourceindex.size} gems"
-      sourceindex.each do |fullname, gem|
-        gem_file = "#{fullname}.gem"
-        gem_dest = File.join gems_dir, gem_file
-
-        unless File.exist? gem_dest then
-          begin
-            open "#{get_from}/gems/#{gem_file}", "rb" do |g|
-              contents = g.read
-              open gem_dest, "wb" do |out|
-                out.write contents
-              end
-            end
-          rescue
-            old_gf = gem_file
-            gem_file = gem_file.downcase
-            retry if old_gf != gem_file
-            alert_error $!
-          end
-        end
-
-        progress.updated gem_file
-      end
-
-      progress.done
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb
deleted file mode 100644
index 9e054f9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/outdated_command.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-
-class Gem::Commands::OutdatedCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'outdated', 'Display all gems that need updates'
-
-    add_local_remote_options
-    add_platform_option
-  end
-
-  def execute
-    locals = Gem::SourceIndex.from_installed_gems
-
-    locals.outdated.sort.each do |name|
-      local = locals.find_name(name).last
-
-      dep = Gem::Dependency.new local.name, ">= #{local.version}"
-      remotes = Gem::SpecFetcher.fetcher.fetch dep
-      remote = remotes.last.first
-
-      say "#{local.name} (#{local.version} < #{remote.version})"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb
deleted file mode 100644
index d47fe54..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/pristine_command.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/format'
-require 'rubygems/installer'
-require 'rubygems/version_option'
-
-class Gem::Commands::PristineCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'pristine',
-          'Restores installed gems to pristine condition from files located in the gem cache',
-          :version => Gem::Requirement.default
-
-    add_option('--all',
-               'Restore all installed gems to pristine',
-               'condition') do |value, options|
-      options[:all] = value
-    end
-
-    add_version_option('restore to', 'pristine condition')
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       gem to restore to pristine condition (unless --all)"
-  end
-
-  def defaults_str # :nodoc:
-    "--all"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The pristine command compares the installed gems with the contents of the
-cached gem and restores any files that don't match the cached gem's copy.
-
-If you have made modifications to your installed gems, the pristine command
-will revert them.  After all the gem's files have been checked all bin stubs
-for the gem are regenerated.
-
-If the cached gem cannot be found, you will need to use `gem install` to
-revert the gem.
-    EOF
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [args]"
-  end
-
-  def execute
-    gem_name = nil
-
-    specs = if options[:all] then
-              Gem::SourceIndex.from_installed_gems.map do |name, spec|
-                spec
-              end
-            else
-              gem_name = get_one_gem_name
-              Gem::SourceIndex.from_installed_gems.find_name(gem_name,
-                                                          options[:version])
-            end
-
-    if specs.empty? then
-      raise Gem::Exception,
-            "Failed to find gem #{gem_name} #{options[:version]}"
-    end
-
-    install_dir = Gem.dir # TODO use installer option
-
-    raise Gem::FilePermissionError.new(install_dir) unless
-      File.writable?(install_dir)
-
-    say "Restoring gem(s) to pristine condition..."
-
-    specs.each do |spec|
-      gem = Dir[File.join(Gem.dir, 'cache', "#{spec.full_name}.gem")].first
-
-      if gem.nil? then
-        alert_error "Cached gem for #{spec.full_name} not found, use `gem install` to restore"
-        next
-      end
-
-      # TODO use installer options
-      installer = Gem::Installer.new gem, :wrappers => true, :force => true
-      installer.install
-
-      say "Restored #{spec.full_name}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/query_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/query_command.rb
deleted file mode 100644
index 29fe8ac..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/query_command.rb
+++ /dev/null
@@ -1,233 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-
-class Gem::Commands::QueryCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize(name = 'query',
-                 summary = 'Query gem information in local or remote repositories')
-    super name, summary,
-         :name => //, :domain => :local, :details => false, :versions => true,
-         :installed => false, :version => Gem::Requirement.default
-
-    add_option('-i', '--[no-]installed',
-               'Check for installed gem') do |value, options|
-      options[:installed] = value
-    end
-
-    add_version_option
-
-    add_option('-n', '--name-matches REGEXP',
-               'Name of gem(s) to query on matches the',
-               'provided REGEXP') do |value, options|
-      options[:name] = /#{value}/i
-    end
-
-    add_option('-d', '--[no-]details',
-               'Display detailed information of gem(s)') do |value, options|
-      options[:details] = value
-    end
-
-    add_option(      '--[no-]versions',
-               'Display only gem names') do |value, options|
-      options[:versions] = value
-      options[:details] = false unless value
-    end
-
-    add_option('-a', '--all',
-               'Display all gem versions') do |value, options|
-      options[:all] = value
-    end
-
-    add_local_remote_options
-  end
-
-  def defaults_str # :nodoc:
-    "--local --name-matches // --no-details --versions --no-installed"
-  end
-
-  def execute
-    exit_code = 0
-
-    name = options[:name]
-
-    if options[:installed] then
-      if name.source.empty? then
-        alert_error "You must specify a gem name"
-        exit_code |= 4
-      elsif installed? name, options[:version] then
-        say "true"
-      else
-        say "false"
-        exit_code |= 1
-      end
-
-      raise Gem::SystemExitException, exit_code
-    end
-
-    dep = Gem::Dependency.new name, Gem::Requirement.default
-
-    if local? then
-      if ui.outs.tty? or both? then
-        say
-        say "*** LOCAL GEMS ***"
-        say
-      end
-
-      specs = Gem.source_index.search dep
-
-      spec_tuples = specs.map do |spec|
-        [[spec.name, spec.version, spec.original_platform, spec], :local]
-      end
-
-      output_query_results spec_tuples
-    end
-
-    if remote? then
-      if ui.outs.tty? or both? then
-        say
-        say "*** REMOTE GEMS ***"
-        say
-      end
-
-      all = options[:all]
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        spec_tuples = fetcher.find_matching dep, all, false
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          dep.name = '' if dep.name == //
-
-          specs = Gem::SourceInfoCache.search_with_source dep, false, all
-
-          spec_tuples = specs.map do |spec, source_uri|
-            [[spec.name, spec.version, spec.original_platform, spec],
-             source_uri]
-          end
-        end
-      end
-
-      output_query_results spec_tuples
-    end
-  end
-
-  private
-
-  ##
-  # Check if gem +name+ version +version+ is installed.
-
-  def installed?(name, version = Gem::Requirement.default)
-    dep = Gem::Dependency.new name, version
-    !Gem.source_index.search(dep).empty?
-  end
-
-  def output_query_results(spec_tuples)
-    output = []
-    versions = Hash.new { |h,name| h[name] = [] }
-
-    spec_tuples.each do |spec_tuple, source_uri|
-      versions[spec_tuple.first] << [spec_tuple, source_uri]
-    end
-
-    versions = versions.sort_by do |(name,_),_|
-      name.downcase
-    end
-
-    versions.each do |gem_name, matching_tuples|
-      matching_tuples = matching_tuples.sort_by do |(name, version,_),_|
-        version
-      end.reverse
-
-      seen = {}
-
-      matching_tuples.delete_if do |(name, version,_),_|
-        if seen[version] then
-          true
-        else
-          seen[version] = true
-          false
-        end
-      end
-
-      entry = gem_name.dup
-
-      if options[:versions] then
-        versions = matching_tuples.map { |(name, version,_),_| version }.uniq
-        entry << " (#{versions.join ', '})"
-      end
-
-      if options[:details] then
-        detail_tuple = matching_tuples.first
-
-        spec = if detail_tuple.first.length == 4 then
-                 detail_tuple.first.last
-               else
-                 uri = URI.parse detail_tuple.last
-                 Gem::SpecFetcher.fetcher.fetch_spec detail_tuple.first, uri
-               end
-
-        entry << "\n"
-        authors = "Author#{spec.authors.length > 1 ? 's' : ''}: "
-        authors << spec.authors.join(', ')
-        entry << format_text(authors, 68, 4)
-
-        if spec.rubyforge_project and not spec.rubyforge_project.empty? then
-          rubyforge = "Rubyforge: http://rubyforge.org/projects/#{spec.rubyforge_project}"
-          entry << "\n" << format_text(rubyforge, 68, 4)
-        end
-
-        if spec.homepage and not spec.homepage.empty? then
-          entry << "\n" << format_text("Homepage: #{spec.homepage}", 68, 4)
-        end
-
-        if spec.loaded_from then
-          if matching_tuples.length == 1 then
-            loaded_from = File.dirname File.dirname(spec.loaded_from)
-            entry << "\n" << "    Installed at: #{loaded_from}"
-          else
-            label = 'Installed at'
-            matching_tuples.each do |(_,version,_,s),|
-              loaded_from = File.dirname File.dirname(s.loaded_from)
-              entry << "\n" << "    #{label} (#{version}): #{loaded_from}"
-              label = ' ' * label.length
-            end
-          end
-        end
-
-        entry << "\n\n" << format_text(spec.summary, 68, 4)
-      end
-      output << entry
-    end
-
-    say output.join(options[:details] ? "\n\n" : "\n")
-  end
-
-  ##
-  # Used for wrapping and indenting text
-
-  def format_text(text, wrap, indent=0)
-    result = []
-    work = text.dup
-
-    while work.length > wrap
-      if work =~ /^(.{0,#{wrap}})[ \n]/o then
-        result << $1
-        work.slice!(0, $&.length)
-      else
-        result << work.slice!(0, wrap)
-      end
-    end
-
-    result << work if work.length.nonzero?
-    result.join("\n").gsub(/^/, " " * indent)
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb
deleted file mode 100644
index 82180d4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/rdoc_command.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/doc_manager'
-
-module Gem
-  module Commands
-    class RdocCommand < Command
-      include VersionOption
-
-      def initialize
-        super('rdoc',
-          'Generates RDoc for pre-installed gems',
-          {
-            :version => Gem::Requirement.default,
-            :include_rdoc => true,
-            :include_ri => true,
-          })
-        add_option('--all',
-                   'Generate RDoc/RI documentation for all',
-                   'installed gems') do |value, options|
-          options[:all] = value
-        end
-        add_option('--[no-]rdoc', 
-          'Include RDoc generated documents') do
-          |value, options|
-          options[:include_rdoc] = value
-        end
-        add_option('--[no-]ri', 
-          'Include RI generated documents'
-          ) do |value, options|
-          options[:include_ri] = value
-        end
-        add_version_option
-      end
-
-      def arguments # :nodoc:
-        "GEMNAME       gem to generate documentation for (unless --all)"
-      end
-
-      def defaults_str # :nodoc:
-        "--version '#{Gem::Requirement.default}' --rdoc --ri"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} [args]"
-      end
-
-      def execute
-        if options[:all]
-          specs = Gem::SourceIndex.from_installed_gems.collect { |name, spec|
-            spec
-          }
-        else
-          gem_name = get_one_gem_name
-          specs = Gem::SourceIndex.from_installed_gems.search(
-            gem_name, options[:version])
-        end
-
-        if specs.empty?
-          fail "Failed to find gem #{gem_name} to generate RDoc for #{options[:version]}"
-        end
-
-        if options[:include_ri]
-          specs.each do |spec|
-            Gem::DocManager.new(spec).generate_ri
-          end
-
-          Gem::DocManager.update_ri_cache
-        end
-
-        if options[:include_rdoc]
-          specs.each do |spec|
-            Gem::DocManager.new(spec).generate_rdoc
-          end
-        end
-
-        true
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/search_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/search_command.rb
deleted file mode 100644
index 96da19c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/search_command.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/commands/query_command'
-
-module Gem
-  module Commands
-
-    class SearchCommand < QueryCommand
-
-      def initialize
-        super(
-          'search',
-          'Display all gems whose name contains STRING'
-        )
-        remove_option('--name-matches')
-      end
-
-      def arguments # :nodoc:
-        "STRING        fragment of gem name to search for"
-      end
-
-      def defaults_str # :nodoc:
-        "--local --no-details"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} [STRING]"
-      end
-
-      def execute
-        string = get_one_optional_argument
-        options[:name] = /#{string}/i
-        super
-      end
-    end
-    
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/server_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/server_command.rb
deleted file mode 100644
index 992ae1c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/server_command.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/server'
-
-class Gem::Commands::ServerCommand < Gem::Command
-
-  def initialize
-    super 'server', 'Documentation and gem repository HTTP server',
-          :port => 8808, :gemdir => Gem.dir, :daemon => false
-
-    add_option '-p', '--port=PORT', Integer,
-               'port to listen on' do |port, options|
-      options[:port] = port
-    end
-
-    add_option '-d', '--dir=GEMDIR',
-               'directory from which to serve gems' do |gemdir, options|
-      options[:gemdir] = File.expand_path gemdir
-    end
-
-    add_option '--[no-]daemon', 'run as a daemon' do |daemon, options|
-      options[:daemon] = daemon
-    end
-  end
-
-  def defaults_str # :nodoc:
-    "--port 8808 --dir #{Gem.dir} --no-daemon"
-  end
-
-  def description # :nodoc:
-    <<-EOF
-The server command starts up a web server that hosts the RDoc for your
-installed gems and can operate as a server for installation of gems on other
-machines.
-
-The cache files for installed gems must exist to use the server as a source
-for gem installation.
-
-To install gems from a running server, use `gem install GEMNAME --source
-http://gem_server_host:8808`
-    EOF
-  end
-
-  def execute
-    Gem::Server.run options
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb
deleted file mode 100644
index 9aabb77..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/sources_command.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/remote_fetcher'
-require 'rubygems/source_info_cache'
-require 'rubygems/spec_fetcher'
-
-class Gem::Commands::SourcesCommand < Gem::Command
-
-  def initialize
-    super 'sources',
-          'Manage the sources and cache file RubyGems uses to search for gems'
-
-    add_option '-a', '--add SOURCE_URI', 'Add source' do |value, options|
-      options[:add] = value
-    end
-
-    add_option '-l', '--list', 'List sources' do |value, options|
-      options[:list] = value
-    end
-
-    add_option '-r', '--remove SOURCE_URI', 'Remove source' do |value, options|
-      options[:remove] = value
-    end
-
-    add_option '-c', '--clear-all',
-               'Remove all sources (clear the cache)' do |value, options|
-      options[:clear_all] = value
-    end
-
-    add_option '-u', '--update', 'Update source cache' do |value, options|
-      options[:update] = value
-    end
-  end
-
-  def defaults_str
-    '--list'
-  end
-
-  def execute
-    options[:list] = !(options[:add] ||
-                       options[:clear_all] ||
-                       options[:remove] ||
-                       options[:update])
-
-    if options[:clear_all] then
-      path = Gem::SpecFetcher.fetcher.dir
-      FileUtils.rm_rf path
-
-      if not File.exist?(path) then
-        say "*** Removed specs cache ***"
-      elsif not File.writable?(path) then
-        say "*** Unable to remove source cache (write protected) ***"
-      else
-        say "*** Unable to remove source cache ***"
-      end
-
-      sic = Gem::SourceInfoCache
-      remove_cache_file 'user',          sic.user_cache_file
-      remove_cache_file 'latest user',   sic.latest_user_cache_file
-      remove_cache_file 'system',        sic.system_cache_file
-      remove_cache_file 'latest system', sic.latest_system_cache_file
-    end
-
-    if options[:add] then
-      source_uri = options[:add]
-      uri = URI.parse source_uri
-
-      begin
-        Gem::SpecFetcher.fetcher.load_specs uri, 'specs'
-        Gem.sources << source_uri
-        Gem.configuration.write
-
-        say "#{source_uri} added to sources"
-      rescue URI::Error, ArgumentError
-        say "#{source_uri} is not a URI"
-      rescue Gem::RemoteFetcher::FetchError => e
-        yaml_uri = uri + 'yaml'
-        gem_repo = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri rescue false
-
-        if e.uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ and
-           gem_repo then
-
-          alert_warning <<-EOF
-RubyGems 1.2+ index not found for:
-\t#{source_uri}
-
-Will cause RubyGems to revert to legacy indexes, degrading performance.
-          EOF
-
-          say "#{source_uri} added to sources"
-        else
-          say "Error fetching #{source_uri}:\n\t#{e.message}"
-        end
-      end
-    end
-
-    if options[:remove] then
-      source_uri = options[:remove]
-
-      unless Gem.sources.include? source_uri then
-        say "source #{source_uri} not present in cache"
-      else
-        Gem.sources.delete source_uri
-        Gem.configuration.write
-
-        say "#{source_uri} removed from sources"
-      end
-    end
-
-    if options[:update] then
-      fetcher = Gem::SpecFetcher.fetcher
-
-      if fetcher.legacy_repos.empty? then
-        Gem.sources.each do |update_uri|
-          update_uri = URI.parse update_uri
-          fetcher.load_specs update_uri, 'specs'
-          fetcher.load_specs update_uri, 'latest_specs'
-        end
-      else
-        Gem::SourceInfoCache.cache true
-        Gem::SourceInfoCache.cache.flush
-      end
-
-      say "source cache successfully updated"
-    end
-
-    if options[:list] then
-      say "*** CURRENT SOURCES ***"
-      say
-
-      Gem.sources.each do |source|
-        say source
-      end
-    end
-  end
-
-  private
-
-  def remove_cache_file(desc, path)
-    FileUtils.rm_rf path
-
-    if not File.exist?(path) then
-      say "*** Removed #{desc} source cache ***"
-    elsif not File.writable?(path) then
-      say "*** Unable to remove #{desc} source cache (write protected) ***"
-    else
-      say "*** Unable to remove #{desc} source cache ***"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb
deleted file mode 100644
index 5aaf6d1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/specification_command.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'yaml'
-require 'rubygems/command'
-require 'rubygems/local_remote_options'
-require 'rubygems/version_option'
-require 'rubygems/source_info_cache'
-require 'rubygems/format'
-
-class Gem::Commands::SpecificationCommand < Gem::Command
-
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'specification', 'Display gem specification (in yaml)',
-          :domain => :local, :version => Gem::Requirement.default
-
-    add_version_option('examine')
-    add_platform_option
-
-    add_option('--all', 'Output specifications for all versions of',
-               'the gem') do |value, options|
-      options[:all] = true
-    end
-
-    add_local_remote_options
-  end
-
-  def arguments # :nodoc:
-    "GEMFILE       name of gem to show the gemspec for"
-  end
-
-  def defaults_str # :nodoc:
-    "--local --version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} [GEMFILE]"
-  end
-
-  def execute
-    specs = []
-    gem = get_one_gem_name
-    dep = Gem::Dependency.new gem, options[:version]
-
-    if local? then
-      if File.exist? gem then
-        specs << Gem::Format.from_file_by_path(gem).spec rescue nil
-      end
-
-      if specs.empty? then
-        specs.push(*Gem.source_index.search(dep))
-      end
-    end
-
-    if remote? then
-      found = Gem::SpecFetcher.fetcher.fetch dep
-
-      specs.push(*found.map { |spec,| spec })
-    end
-
-    if specs.empty? then
-      alert_error "Unknown gem '#{gem}'"
-      terminate_interaction 1
-    end
-
-    output = lambda { |s| say s.to_yaml; say "\n" }
-
-    if options[:all] then
-      specs.each(&output)
-    else
-      spec = specs.sort_by { |s| s.version }.last
-      output[spec]
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb
deleted file mode 100644
index 78cbdcc..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/stale_command.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'rubygems/command'
-
-class Gem::Commands::StaleCommand < Gem::Command
-  def initialize
-    super('stale', 'List gems along with access times')
-  end
-
-  def usage # :nodoc:
-    "#{program_name}"
-  end
-
-  def execute
-    gem_to_atime = {}
-    Gem.source_index.each do |name, spec|
-      Dir["#{spec.full_gem_path}/**/*.*"].each do |file|
-        next if File.directory?(file)
-        stat = File.stat(file)
-        gem_to_atime[name] ||= stat.atime
-        gem_to_atime[name] = stat.atime if gem_to_atime[name] < stat.atime
-      end
-    end
-
-    gem_to_atime.sort_by { |_, atime| atime }.each do |name, atime|
-      say "#{name} at #{atime.strftime '%c'}"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb
deleted file mode 100644
index 3d6e238..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/uninstall_command.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/version_option'
-require 'rubygems/uninstaller'
-
-module Gem
-  module Commands
-    class UninstallCommand < Command
-
-      include VersionOption
-
-      def initialize
-        super 'uninstall', 'Uninstall gems from the local repository',
-              :version => Gem::Requirement.default
-
-        add_option('-a', '--[no-]all',
-          'Uninstall all matching versions'
-          ) do |value, options|
-          options[:all] = value
-        end
-
-        add_option('-I', '--[no-]ignore-dependencies',
-                   'Ignore dependency requirements while',
-                   'uninstalling') do |value, options|
-          options[:ignore] = value
-        end
-
-        add_option('-x', '--[no-]executables',
-                     'Uninstall applicable executables without',
-                     'confirmation') do |value, options|
-          options[:executables] = value
-        end
-
-        add_option('-i', '--install-dir DIR',
-                   'Directory to uninstall gem from') do |value, options|
-          options[:install_dir] = File.expand_path(value)
-        end
-
-        add_option('-n', '--bindir DIR',
-                   'Directory to remove binaries from') do |value, options|
-          options[:bin_dir] = File.expand_path(value)
-        end
-
-        add_version_option
-        add_platform_option
-      end
-
-      def arguments # :nodoc:
-        "GEMNAME       name of gem to uninstall"
-      end
-
-      def defaults_str # :nodoc:
-        "--version '#{Gem::Requirement.default}' --no-force " \
-        "--install-dir #{Gem.dir}"
-      end
-
-      def usage # :nodoc:
-        "#{program_name} GEMNAME [GEMNAME ...]"
-      end
-
-      def execute
-        get_all_gem_names.each do |gem_name|
-          begin
-            Gem::Uninstaller.new(gem_name, options).uninstall
-          rescue Gem::GemNotInHomeException => e
-            spec = e.spec
-            alert("In order to remove #{spec.name}, please execute:\n" \
-                  "\tgem uninstall #{spec.name} --install-dir=#{spec.installation_path}")
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb
deleted file mode 100644
index ab2494b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/unpack_command.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'fileutils'
-require 'rubygems/command'
-require 'rubygems/installer'
-require 'rubygems/version_option'
-
-class Gem::Commands::UnpackCommand < Gem::Command
-
-  include Gem::VersionOption
-
-  def initialize
-    super 'unpack', 'Unpack an installed gem to the current directory',
-          :version => Gem::Requirement.default,
-          :target  => Dir.pwd
-
-    add_option('--target', 'target directory for unpacking') do |value, options|
-      options[:target] = value
-    end
-
-    add_version_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to unpack"
-  end
-
-  def defaults_str # :nodoc:
-    "--version '#{Gem::Requirement.default}'"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME"
-  end
-
-  #--
-  # TODO: allow, e.g., 'gem unpack rake-0.3.1'.  Find a general solution for
-  # this, so that it works for uninstall as well.  (And check other commands
-  # at the same time.)
-  def execute
-    gemname = get_one_gem_name
-    path = get_path(gemname, options[:version])
-
-    if path then
-      basename = File.basename(path).sub(/\.gem$/, '')
-      target_dir = File.expand_path File.join(options[:target], basename)
-      FileUtils.mkdir_p target_dir
-      Gem::Installer.new(path, :unpack => true).unpack target_dir
-      say "Unpacked gem: '#{target_dir}'"
-    else
-      alert_error "Gem '#{gemname}' not installed."
-    end
-  end
-
-  # Return the full path to the cached gem file matching the given
-  # name and version requirement.  Returns 'nil' if no match.
-  #
-  # Example:
-  #
-  #   get_path('rake', '> 0.4')   # -> '/usr/lib/ruby/gems/1.8/cache/rake-0.4.2.gem'
-  #   get_path('rake', '< 0.1')   # -> nil
-  #   get_path('rak')             # -> nil (exact name required)
-  #--
-  # TODO: This should be refactored so that it's a general service. I don't
-  # think any of our existing classes are the right place though.  Just maybe
-  # 'Cache'?
-  #
-  # TODO: It just uses Gem.dir for now.  What's an easy way to get the list of
-  # source directories?
-  def get_path(gemname, version_req)
-    return gemname if gemname =~ /\.gem$/i
-
-    specs = Gem::source_index.find_name gemname, version_req
-
-    selected = specs.sort_by { |s| s.version }.last
-
-    return nil if selected.nil?
-
-    # We expect to find (basename).gem in the 'cache' directory.
-    # Furthermore, the name match must be exact (ignoring case).
-    if gemname =~ /^#{selected.name}$/i
-      filename = selected.full_name + '.gem'
-      path = nil
-
-      Gem.path.find do |gem_dir|
-        path = File.join gem_dir, 'cache', filename
-        File.exist? path
-      end
-
-      path
-    else
-      nil
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb
deleted file mode 100644
index 28d3a5d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/command_manager'
-require 'rubygems/install_update_options'
-require 'rubygems/local_remote_options'
-require 'rubygems/spec_fetcher'
-require 'rubygems/version_option'
-require 'rubygems/commands/install_command'
-
-class Gem::Commands::UpdateCommand < Gem::Command
-
-  include Gem::InstallUpdateOptions
-  include Gem::LocalRemoteOptions
-  include Gem::VersionOption
-
-  def initialize
-    super 'update',
-          'Update the named gems (or all installed gems) in the local repository',
-      :generate_rdoc => true,
-      :generate_ri => true,
-      :force => false,
-      :test => false
-
-    add_install_update_options
-
-    add_option('--system',
-               'Update the RubyGems system software') do |value, options|
-      options[:system] = value
-    end
-
-    add_local_remote_options
-
-    add_platform_option
-  end
-
-  def arguments # :nodoc:
-    "GEMNAME       name of gem to update"
-  end
-
-  def defaults_str # :nodoc:
-    "--rdoc --ri --no-force --no-test --install-dir #{Gem.dir}"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} GEMNAME [GEMNAME ...]"
-  end
-
-  def execute
-    hig = {}
-
-    if options[:system] then
-      say "Updating RubyGems"
-
-      unless options[:args].empty? then
-        fail "No gem names are allowed with the --system option"
-      end
-
-      rubygems_update = Gem::Specification.new
-      rubygems_update.name = 'rubygems-update'
-      rubygems_update.version = Gem::Version.new Gem::RubyGemsVersion
-      hig['rubygems-update'] = rubygems_update
-
-      options[:user_install] = false
-    else
-      say "Updating installed gems"
-
-      hig = {} # highest installed gems
-
-      Gem.source_index.each do |name, spec|
-        if hig[spec.name].nil? or hig[spec.name].version < spec.version then
-          hig[spec.name] = spec
-        end
-      end
-    end
-
-    gems_to_update = which_to_update hig, options[:args]
-
-    updated = []
-
-    installer = Gem::DependencyInstaller.new options
-
-    gems_to_update.uniq.sort.each do |name|
-      next if updated.any? { |spec| spec.name == name }
-
-      say "Updating #{name}"
-      installer.install name
-
-      installer.installed_gems.each do |spec|
-        updated << spec
-        say "Successfully installed #{spec.full_name}"
-      end
-    end
-
-    if gems_to_update.include? "rubygems-update" then
-      Gem.source_index.refresh!
-
-      update_gems = Gem.source_index.search 'rubygems-update'
-
-      latest_update_gem = update_gems.sort_by { |s| s.version }.last
-
-      say "Updating RubyGems to #{latest_update_gem.version}"
-      installed = do_rubygems_update latest_update_gem.version
-
-      say "RubyGems system software updated" if installed
-    else
-      if updated.empty? then
-        say "Nothing to update"
-      else
-        say "Gems updated: #{updated.map { |spec| spec.name }.join ', '}"
-      end
-    end
-  end
-
-  ##
-  # Update the RubyGems software to +version+.
-
-  def do_rubygems_update(version)
-    args = []
-    args.push '--prefix', Gem.prefix unless Gem.prefix.nil?
-    args << '--no-rdoc' unless options[:generate_rdoc]
-    args << '--no-ri' unless options[:generate_ri]
-    args << '--no-format-executable' if options[:no_format_executable]
-
-    update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}"
-
-    Dir.chdir update_dir do
-      say "Installing RubyGems #{version}"
-      setup_cmd = "#{Gem.ruby} setup.rb #{args.join ' '}"
-
-      # Make sure old rubygems isn't loaded
-      old = ENV["RUBYOPT"]
-      ENV.delete("RUBYOPT")
-      system setup_cmd
-      ENV["RUBYOPT"] = old if old
-    end
-  end
-
-  def which_to_update(highest_installed_gems, gem_names)
-    result = []
-
-    highest_installed_gems.each do |l_name, l_spec|
-      next if not gem_names.empty? and
-              gem_names.all? { |name| /#{name}/ !~ l_spec.name }
-
-      dependency = Gem::Dependency.new l_spec.name, "> #{l_spec.version}"
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        spec_tuples = fetcher.find_matching dependency
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          dependency.name = '' if dependency.name == //
-
-          specs = Gem::SourceInfoCache.search_with_source dependency
-
-          spec_tuples = specs.map do |spec, source_uri|
-            [[spec.name, spec.version, spec.original_platform], source_uri]
-          end
-        end
-      end
-
-      matching_gems = spec_tuples.select do |(name, version, platform),|
-        name == l_name and Gem::Platform.match platform
-      end
-
-      highest_remote_gem = matching_gems.sort_by do |(name, version),|
-        version
-      end.last
-
-      if highest_remote_gem and
-         l_spec.version < highest_remote_gem.first[1] then
-        result << l_name
-      end
-    end
-
-    result
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/which_command.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/which_command.rb
deleted file mode 100644
index 2267e44..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/commands/which_command.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'rubygems/command'
-require 'rubygems/gem_path_searcher'
-
-class Gem::Commands::WhichCommand < Gem::Command
-
-  EXT = %w[.rb .rbw .so .dll .bundle] # HACK
-
-  def initialize
-    super 'which', 'Find the location of a library file you can require',
-          :search_gems_first => false, :show_all => false
-
-    add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
-      options[:show_all] = show_all
-    end
-
-    add_option '-g', '--[no-]gems-first',
-               'search gems before non-gems' do |gems_first, options|
-      options[:search_gems_first] = gems_first
-    end
-  end
-
-  def arguments # :nodoc:
-    "FILE          name of file to find"
-  end
-
-  def defaults_str # :nodoc:
-    "--no-gems-first --no-all"
-  end
-
-  def usage # :nodoc:
-    "#{program_name} FILE [FILE ...]"
-  end
-
-  def execute
-    searcher = Gem::GemPathSearcher.new
-
-    options[:args].each do |arg|
-      dirs = $LOAD_PATH
-      spec = searcher.find arg
-
-      if spec then
-        if options[:search_gems_first] then
-          dirs = gem_paths(spec) + $LOAD_PATH
-        else
-          dirs = $LOAD_PATH + gem_paths(spec)
-        end
-
-        say "(checking gem #{spec.full_name} for #{arg})" if
-          Gem.configuration.verbose
-      end
-
-      paths = find_paths arg, dirs
-
-      if paths.empty? then
-        say "Can't find ruby library file or shared library #{arg}"
-      else
-        say paths
-      end
-    end
-  end
-
-  def find_paths(package_name, dirs)
-    result = []
-
-    dirs.each do |dir|
-      EXT.each do |ext|
-        full_path = File.join dir, "#{package_name}#{ext}"
-        if File.exist? full_path then
-          result << full_path
-          return result unless options[:show_all]
-        end
-      end
-    end
-
-    result
-  end
-
-  def gem_paths(spec)
-    spec.require_paths.collect { |d| File.join spec.full_gem_path, d }
-  end
-
-  def usage # :nodoc:
-    "#{program_name} FILE [...]"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/config_file.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/config_file.rb
deleted file mode 100644
index 276a5c1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/config_file.rb
+++ /dev/null
@@ -1,266 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'yaml'
-require 'rubygems'
-
-# Store the gem command options specified in the configuration file.  The
-# config file object acts much like a hash.
-
-class Gem::ConfigFile
-
-  DEFAULT_BACKTRACE = false
-  DEFAULT_BENCHMARK = false
-  DEFAULT_BULK_THRESHOLD = 1000
-  DEFAULT_VERBOSITY = true
-  DEFAULT_UPDATE_SOURCES = true
-
-  ##
-  # For Ruby packagers to set configuration defaults.  Set in
-  # rubygems/defaults/operating_system.rb
-
-  OPERATING_SYSTEM_DEFAULTS = {}
-
-  ##
-  # For Ruby implementers to set configuration defaults.  Set in
-  # rubygems/defaults/#{RUBY_ENGINE}.rb
-
-  PLATFORM_DEFAULTS = {}
-
-  system_config_path = 
-    begin
-      require 'Win32API'
-
-      CSIDL_COMMON_APPDATA = 0x0023
-      path = 0.chr * 260
-      SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'LLLLP', 'L'
-      SHGetFolderPath.call 0, CSIDL_COMMON_APPDATA, 0, 1, path
-
-      path.strip
-    rescue LoadError
-      '/etc'
-    end
-
-  SYSTEM_WIDE_CONFIG_FILE = File.join system_config_path, 'gemrc'
-  
-  # List of arguments supplied to the config file object.
-  attr_reader :args
-
-  # Where to look for gems
-  attr_accessor :path
-
-  attr_accessor :home
-
-  # True if we print backtraces on errors.
-  attr_writer :backtrace
-
-  # True if we are benchmarking this run.
-  attr_accessor :benchmark
-
-  # Bulk threshold value.  If the number of missing gems are above
-  # this threshold value, then a bulk download technique is used.
-  attr_accessor :bulk_threshold
-
-  # Verbose level of output:
-  # * false -- No output
-  # * true -- Normal output
-  # * :loud -- Extra output
-  attr_accessor :verbose
-
-  # True if we want to update the SourceInfoCache every time, false otherwise
-  attr_accessor :update_sources
-
-  # Create the config file object.  +args+ is the list of arguments
-  # from the command line.
-  #
-  # The following command line options are handled early here rather
-  # than later at the time most command options are processed.
-  #
-  # * --config-file and --config-file==NAME -- Obviously these need
-  #   to be handled by the ConfigFile object to ensure we get the
-  #   right config file.
-  #
-  # * --backtrace -- Backtrace needs to be turned on early so that
-  #   errors before normal option parsing can be properly handled.
-  #
-  # * --debug -- Enable Ruby level debug messages.  Handled early
-  #   for the same reason as --backtrace.
-  #
-  def initialize(arg_list)
-    @config_file_name = nil
-    need_config_file_name = false
-
-    arg_list = arg_list.map do |arg|
-      if need_config_file_name then
-        @config_file_name = arg
-        need_config_file_name = false
-        nil
-      elsif arg =~ /^--config-file=(.*)/ then
-        @config_file_name = $1
-        nil
-      elsif arg =~ /^--config-file$/ then
-        need_config_file_name = true
-        nil
-      else
-        arg
-      end
-    end.compact
-
-    @backtrace = DEFAULT_BACKTRACE
-    @benchmark = DEFAULT_BENCHMARK
-    @bulk_threshold = DEFAULT_BULK_THRESHOLD
-    @verbose = DEFAULT_VERBOSITY
-    @update_sources = DEFAULT_UPDATE_SOURCES
-
-    operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
-    platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
-    system_config = load_file SYSTEM_WIDE_CONFIG_FILE
-    user_config = load_file config_file_name.dup.untaint
-
-    @hash = operating_system_config.merge platform_config
-    @hash = @hash.merge system_config
-    @hash = @hash.merge user_config
-
-    # HACK these override command-line args, which is bad
-    @backtrace = @hash[:backtrace] if @hash.key? :backtrace
-    @benchmark = @hash[:benchmark] if @hash.key? :benchmark
-    @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
-    Gem.sources = @hash[:sources] if @hash.key? :sources
-    @verbose = @hash[:verbose] if @hash.key? :verbose
-    @update_sources = @hash[:update_sources] if @hash.key? :update_sources
-    @path = @hash[:gempath] if @hash.key? :gempath
-    @home = @hash[:gemhome] if @hash.key? :gemhome
-
-    handle_arguments arg_list
-  end
-
-  def load_file(filename)
-    begin
-      YAML.load(File.read(filename)) if filename and File.exist?(filename)
-    rescue ArgumentError
-      warn "Failed to load #{config_file_name}"
-    rescue Errno::EACCES
-      warn "Failed to load #{config_file_name} due to permissions problem."
-    end or {}
-  end
-
-  # True if the backtrace option has been specified, or debug is on.
-  def backtrace
-    @backtrace or $DEBUG
-  end
-
-  # The name of the configuration file.
-  def config_file_name
-    @config_file_name || Gem.config_file
-  end
-
-  # Delegates to @hash
-  def each(&block)
-    hash = @hash.dup
-    hash.delete :update_sources
-    hash.delete :verbose
-    hash.delete :benchmark
-    hash.delete :backtrace
-    hash.delete :bulk_threshold
-
-    yield :update_sources, @update_sources
-    yield :verbose, @verbose
-    yield :benchmark, @benchmark
-    yield :backtrace, @backtrace
-    yield :bulk_threshold, @bulk_threshold
-
-    yield 'config_file_name', @config_file_name if @config_file_name
-
-    hash.each(&block)
-  end
-
-  # Handle the command arguments.
-  def handle_arguments(arg_list)
-    @args = []
-
-    arg_list.each do |arg|
-      case arg
-      when /^--(backtrace|traceback)$/ then
-        @backtrace = true
-      when /^--bench(mark)?$/ then
-        @benchmark = true
-      when /^--debug$/ then
-        $DEBUG = true
-      else
-        @args << arg
-      end
-    end
-  end
-
-  # Really verbose mode gives you extra output.
-  def really_verbose
-    case verbose
-    when true, false, nil then false
-    else true
-    end
-  end
-
-  # to_yaml only overwrites things you can't override on the command line.
-  def to_yaml # :nodoc:
-    yaml_hash = {}
-    yaml_hash[:backtrace] = @hash.key?(:backtrace) ? @hash[:backtrace] :
-      DEFAULT_BACKTRACE
-    yaml_hash[:benchmark] = @hash.key?(:benchmark) ? @hash[:benchmark] :
-      DEFAULT_BENCHMARK
-    yaml_hash[:bulk_threshold] = @hash.key?(:bulk_threshold) ?
-      @hash[:bulk_threshold] : DEFAULT_BULK_THRESHOLD
-    yaml_hash[:sources] = Gem.sources
-    yaml_hash[:update_sources] = @hash.key?(:update_sources) ?
-      @hash[:update_sources] : DEFAULT_UPDATE_SOURCES
-    yaml_hash[:verbose] = @hash.key?(:verbose) ? @hash[:verbose] :
-      DEFAULT_VERBOSITY
-
-    keys = yaml_hash.keys.map { |key| key.to_s }
-    keys << 'debug'
-    re = Regexp.union(*keys)
-
-    @hash.each do |key, value|
-      key = key.to_s
-      next if key =~ re
-      yaml_hash[key.to_s] = value
-    end
-
-    yaml_hash.to_yaml
-  end
-
-  # Writes out this config file, replacing its source.
-  def write
-    File.open config_file_name, 'w' do |fp|
-      fp.write self.to_yaml
-    end
-  end
-
-  # Return the configuration information for +key+.
-  def [](key)
-    @hash[key.to_s]
-  end
-
-  # Set configuration option +key+ to +value+.
-  def []=(key, value)
-    @hash[key.to_s] = value
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and
-    @backtrace == other.backtrace and
-    @benchmark == other.benchmark and
-    @bulk_threshold == other.bulk_threshold and
-    @verbose == other.verbose and
-    @update_sources == other.update_sources and
-    @hash == other.hash
-  end
-
-  protected
-
-  attr_reader :hash
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb
deleted file mode 100644
index 78c7872..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-module Kernel
-
-  ##
-  # The Kernel#require from before RubyGems was loaded.
-
-  alias gem_original_require require
-
-  ##
-  # When RubyGems is required, Kernel#require is replaced with our own which
-  # is capable of loading gems on demand.
-  #
-  # When you call <tt>require 'x'</tt>, this is what happens:
-  # * If the file can be loaded from the existing Ruby loadpath, it
-  #   is.
-  # * Otherwise, installed gems are searched for a file that matches.
-  #   If it's found in gem 'y', that gem is activated (added to the
-  #   loadpath).
-  #
-  # The normal <tt>require</tt> functionality of returning false if
-  # that file has already been loaded is preserved.
-
-  def require(path) # :doc:
-    gem_original_require path
-  rescue LoadError => load_error
-    if load_error.message =~ /#{Regexp.escape path}\z/ and
-       spec = Gem.searcher.find(path) then
-      Gem.activate(spec.name, "= #{spec.version}")
-      gem_original_require path
-    else
-      raise load_error
-    end
-  end
-
-  private :require
-  private :gem_original_require
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/defaults.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/defaults.rb
deleted file mode 100644
index c894bf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/defaults.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-module Gem
-
-  @post_install_hooks   ||= []
-  @post_uninstall_hooks ||= []
-  @pre_uninstall_hooks  ||= []
-  @pre_install_hooks    ||= []
-
-  ##
-  # An Array of the default sources that come with RubyGems
-
-  def self.default_sources
-    %w[http://gems.rubyforge.org/]
-  end
-
-  ##
-  # Default home directory path to be used if an alternate value is not
-  # specified in the environment
-
-  def self.default_dir
-    if defined? RUBY_FRAMEWORK_VERSION then
-      File.join File.dirname(ConfigMap[:sitedir]), 'Gems',
-                ConfigMap[:ruby_version]
-    else
-      File.join(ConfigMap[:libdir], ruby_engine, 'gems',
-                ConfigMap[:ruby_version])
-    end
-  end
-
-  ##
-  # Path for gems in the user's home directory
-
-  def self.user_dir
-    File.join(Gem.user_home, '.gem', ruby_engine,
-              ConfigMap[:ruby_version])
-  end
-
-  ##
-  # Default gem load path
-
-  def self.default_path
-    [user_dir, default_dir]
-  end
-
-  ##
-  # Deduce Ruby's --program-prefix and --program-suffix from its install name
-
-  def self.default_exec_format
-    baseruby = ConfigMap[:BASERUBY] || 'ruby'
-    ConfigMap[:RUBY_INSTALL_NAME].sub(baseruby, '%s') rescue '%s'
-  end
-
-  ##
-  # The default directory for binaries
-
-  def self.default_bindir
-    if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
-      '/usr/bin'
-    else # generic install
-      ConfigMap[:bindir]
-    end
-  end
-
-  ##
-  # The default system-wide source info cache directory
-
-  def self.default_system_source_cache_dir
-    File.join Gem.dir, 'source_cache'
-  end
-
-  ##
-  # The default user-specific source info cache directory
-
-  def self.default_user_source_cache_dir
-    File.join Gem.user_home, '.gem', 'source_cache'
-  end
-
-  ##
-  # A wrapper around RUBY_ENGINE const that may not be defined
-
-  def self.ruby_engine
-    if defined? RUBY_ENGINE then
-      RUBY_ENGINE
-    else
-      'ruby'
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency.rb
deleted file mode 100644
index 7b9904d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# The Dependency class holds a Gem name and a Gem::Requirement
-
-class Gem::Dependency
-
-  ##
-  # Valid dependency types.
-  #--
-  # When this list is updated, be sure to change
-  # Gem::Specification::CURRENT_SPECIFICATION_VERSION as well.
-
-  TYPES = [
-    :development,
-    :runtime,
-  ]
-
-  ##
-  # Dependency name or regular expression.
-
-  attr_accessor :name
-
-  ##
-  # Dependency type.
-
-  attr_reader :type
-
-  ##
-  # Dependent versions.
-
-  attr_writer :version_requirements
-
-  ##
-  # Orders dependencies by name only.
-
-  def <=>(other)
-    [@name] <=> [other.name]
-  end
-
-  ##
-  # Constructs a dependency with +name+ and +requirements+.
-
-  def initialize(name, version_requirements, type=:runtime)
-    @name = name
-
-    unless TYPES.include? type
-      raise ArgumentError, "Valid types are #{TYPES.inspect}, not #{@type.inspect}"
-    end
-
-    @type = type
-
-    @version_requirements = Gem::Requirement.create version_requirements
-    @version_requirement = nil   # Avoid warnings.
-  end
-
-  def version_requirements
-    normalize if defined? @version_requirement and @version_requirement
-    @version_requirements
-  end
-
-  def requirement_list
-    version_requirements.as_list
-  end
-
-  alias requirements_list requirement_list
-
-  def normalize
-    ver = @version_requirement.instance_eval { @version }
-    @version_requirements = Gem::Requirement.new([ver])
-    @version_requirement = nil
-  end
-
-  def to_s # :nodoc:
-    "#{name} (#{version_requirements}, #{@type || :runtime})"
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other &&
-      self.name == other.name &&
-      self.type == other.type &&
-      self.version_requirements == other.version_requirements
-  end
-
-  ##
-  # Uses this dependency as a pattern to compare to the dependency +other+.
-  # This dependency will match if the name matches the other's name, and other
-  # has only an equal version requirement that satisfies this dependency.
-
-  def =~(other)
-    return false unless self.class === other
-
-    pattern = @name
-    pattern = /\A#{@name}\Z/ unless Regexp === pattern
-
-    return false unless pattern =~ other.name
-
-    reqs = other.version_requirements.requirements
-
-    return false unless reqs.length == 1
-    return false unless reqs.first.first == '='
-
-    version = reqs.first.last
-
-    version_requirements.satisfied_by? version
-  end
-
-  def hash # :nodoc:
-    name.hash + type.hash + version_requirements.hash
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb
deleted file mode 100644
index 9ae2659..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb
+++ /dev/null
@@ -1,258 +0,0 @@
-require 'rubygems'
-require 'rubygems/dependency_list'
-require 'rubygems/installer'
-require 'rubygems/spec_fetcher'
-require 'rubygems/user_interaction'
-
-##
-# Installs a gem along with all its dependencies from local and remote gems.
-
-class Gem::DependencyInstaller
-
-  include Gem::UserInteraction
-
-  attr_reader :gems_to_install
-  attr_reader :installed_gems
-
-  DEFAULT_OPTIONS = {
-    :env_shebang => false,
-    :domain => :both, # HACK dup
-    :force => false,
-    :format_executable => false, # HACK dup
-    :ignore_dependencies => false,
-    :security_policy => nil, # HACK NoSecurity requires OpenSSL.  AlmostNo? Low?
-    :wrappers => true
-  }
-
-  ##
-  # Creates a new installer instance.
-  #
-  # Options are:
-  # :cache_dir:: Alternate repository path to store .gem files in.
-  # :domain:: :local, :remote, or :both.  :local only searches gems in the
-  #           current directory.  :remote searches only gems in Gem::sources.
-  #           :both searches both.
-  # :env_shebang:: See Gem::Installer::new.
-  # :force:: See Gem::Installer#install.
-  # :format_executable:: See Gem::Installer#initialize.
-  # :ignore_dependencies:: Don't install any dependencies.
-  # :install_dir:: See Gem::Installer#install.
-  # :security_policy:: See Gem::Installer::new and Gem::Security.
-  # :user_install:: See Gem::Installer.new
-  # :wrappers:: See Gem::Installer::new
-
-  def initialize(options = {})
-    if options[:install_dir] then
-      spec_dir = options[:install_dir], 'specifications'
-      @source_index = Gem::SourceIndex.from_gems_in spec_dir
-    else
-      @source_index = Gem.source_index
-    end
-
-    options = DEFAULT_OPTIONS.merge options
-
-    @bin_dir = options[:bin_dir]
-    @development = options[:development]
-    @domain = options[:domain]
-    @env_shebang = options[:env_shebang]
-    @force = options[:force]
-    @format_executable = options[:format_executable]
-    @ignore_dependencies = options[:ignore_dependencies]
-    @security_policy = options[:security_policy]
-    @user_install = options[:user_install]
-    @wrappers = options[:wrappers]
-
-    @installed_gems = []
-
-    @install_dir = options[:install_dir] || Gem.dir
-    @cache_dir = options[:cache_dir] || @install_dir
-  end
-
-  ##
-  # Returns a list of pairs of gemspecs and source_uris that match
-  # Gem::Dependency +dep+ from both local (Dir.pwd) and remote (Gem.sources)
-  # sources.  Gems are sorted with newer gems prefered over older gems, and
-  # local gems preferred over remote gems.
-
-  def find_gems_with_sources(dep)
-    gems_and_sources = []
-
-    if @domain == :both or @domain == :local then
-      Dir[File.join(Dir.pwd, "#{dep.name}-[0-9]*.gem")].each do |gem_file|
-        spec = Gem::Format.from_file_by_path(gem_file).spec
-        gems_and_sources << [spec, gem_file] if spec.name == dep.name
-      end
-    end
-
-    if @domain == :both or @domain == :remote then
-      begin
-        requirements = dep.version_requirements.requirements.map do |req, ver|
-          req
-        end
-
-        all = requirements.length > 1 ||
-                (requirements.first != ">=" and requirements.first != ">")
-
-        found = Gem::SpecFetcher.fetcher.fetch dep, all
-        gems_and_sources.push(*found)
-
-      rescue Gem::RemoteFetcher::FetchError => e
-        if Gem.configuration.really_verbose then
-          say "Error fetching remote data:\t\t#{e.message}"
-          say "Falling back to local-only install"
-        end
-        @domain = :local
-      end
-    end
-
-    gems_and_sources.sort_by do |gem, source|
-      [gem, source =~ /^http:\/\// ? 0 : 1] # local gems win
-    end
-  end
-
-  ##
-  # Gathers all dependencies necessary for the installation from local and
-  # remote sources unless the ignore_dependencies was given.
-
-  def gather_dependencies
-    specs = @specs_and_sources.map { |spec,_| spec }
-
-    dependency_list = Gem::DependencyList.new
-    dependency_list.add(*specs)
-
-    unless @ignore_dependencies then
-      to_do = specs.dup
-      seen = {}
-
-      until to_do.empty? do
-        spec = to_do.shift
-        next if spec.nil? or seen[spec.name]
-        seen[spec.name] = true
-
-        deps = spec.runtime_dependencies
-        deps |= spec.development_dependencies if @development
-
-        deps.each do |dep|
-          results = find_gems_with_sources(dep).reverse
-
-          results.reject! do |dep_spec,|
-            to_do.push dep_spec
-
-            @source_index.any? do |_, installed_spec|
-              dep.name == installed_spec.name and
-                dep.version_requirements.satisfied_by? installed_spec.version
-            end
-          end
-
-          results.each do |dep_spec, source_uri|
-            next if seen[dep_spec.name]
-            @specs_and_sources << [dep_spec, source_uri]
-            dependency_list.add dep_spec
-          end
-        end
-      end
-    end
-
-    @gems_to_install = dependency_list.dependency_order.reverse
-  end
-
-  ##
-  # Finds a spec and the source_uri it came from for gem +gem_name+ and
-  # +version+.  Returns an Array of specs and sources required for
-  # installation of the gem.
-
-  def find_spec_by_name_and_version gem_name, version = Gem::Requirement.default
-    spec_and_source = nil
-
-    glob = if File::ALT_SEPARATOR then
-             gem_name.gsub File::ALT_SEPARATOR, File::SEPARATOR
-           else
-             gem_name
-           end
-
-    local_gems = Dir["#{glob}*"].sort.reverse
-
-    unless local_gems.empty? then
-      local_gems.each do |gem_file|
-        next unless gem_file =~ /gem$/
-        begin
-          spec = Gem::Format.from_file_by_path(gem_file).spec
-          spec_and_source = [spec, gem_file]
-          break
-        rescue SystemCallError, Gem::Package::FormatError
-        end
-      end
-    end
-
-    if spec_and_source.nil? then
-      dep = Gem::Dependency.new gem_name, version
-      spec_and_sources = find_gems_with_sources(dep).reverse
-
-      spec_and_source = spec_and_sources.find { |spec, source|
-        Gem::Platform.match spec.platform
-      }
-    end
-
-    if spec_and_source.nil? then
-      raise Gem::GemNotFoundException,
-        "could not find gem #{gem_name} locally or in a repository"
-    end
-
-    @specs_and_sources = [spec_and_source]
-  end
-
-  ##
-  # Installs the gem and all its dependencies.  Returns an Array of installed
-  # gems specifications.
-
-  def install dep_or_name, version = Gem::Requirement.default
-    if String === dep_or_name then
-      find_spec_by_name_and_version dep_or_name, version
-    else
-      @specs_and_sources = [find_gems_with_sources(dep_or_name).last]
-    end
-
-    @installed_gems = []
-
-    gather_dependencies
-
-    @gems_to_install.each do |spec|
-      last = spec == @gems_to_install.last
-      # HACK is this test for full_name acceptable?
-      next if @source_index.any? { |n,_| n == spec.full_name } and not last
-
-      # TODO: make this sorta_verbose so other users can benefit from it
-      say "Installing gem #{spec.full_name}" if Gem.configuration.really_verbose
-
-      _, source_uri = @specs_and_sources.assoc spec
-      begin
-        local_gem_path = Gem::RemoteFetcher.fetcher.download spec, source_uri,
-                                                             @cache_dir
-      rescue Gem::RemoteFetcher::FetchError
-        next if @force
-        raise
-      end
-
-      inst = Gem::Installer.new local_gem_path,
-                                :bin_dir             => @bin_dir,
-                                :development         => @development,
-                                :env_shebang         => @env_shebang,
-                                :force               => @force,
-                                :format_executable   => @format_executable,
-                                :ignore_dependencies => @ignore_dependencies,
-                                :install_dir         => @install_dir,
-                                :security_policy     => @security_policy,
-                                :source_index        => @source_index,
-                                :user_install        => @user_install,
-                                :wrappers            => @wrappers
-
-      spec = inst.install
-
-      @installed_gems << spec
-    end
-
-    @installed_gems
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_list.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_list.rb
deleted file mode 100644
index a129743..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/dependency_list.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'tsort'
-
-class Gem::DependencyList
-
-  include TSort
-
-  def self.from_source_index(src_index)
-    deps = new
-
-    src_index.each do |full_name, spec|
-      deps.add spec
-    end
-
-    deps
-  end
-
-  def initialize
-    @specs = []
-  end
-
-  # Adds +gemspecs+ to the dependency list.
-  def add(*gemspecs)
-    @specs.push(*gemspecs)
-  end
-
-  # Return a list of the specifications in the dependency list,
-  # sorted in order so that no spec in the list depends on a gem
-  # earlier in the list.
-  #
-  # This is useful when removing gems from a set of installed gems.
-  # By removing them in the returned order, you don't get into as
-  # many dependency issues.
-  #
-  # If there are circular dependencies (yuck!), then gems will be
-  # returned in order until only the circular dependents and anything
-  # they reference are left.  Then arbitrary gemspecs will be returned
-  # until the circular dependency is broken, after which gems will be
-  # returned in dependency order again.
-  def dependency_order
-    sorted = strongly_connected_components.flatten
-
-    result = []
-    seen = {}
-
-    sorted.each do |spec|
-      if index = seen[spec.name] then
-        if result[index].version < spec.version then
-          result[index] = spec
-        end
-      else
-        seen[spec.name] = result.length
-        result << spec
-      end
-    end
-
-    result.reverse
-  end
-
-  def find_name(full_name)
-    @specs.find { |spec| spec.full_name == full_name }
-  end
-
-  # Are all the dependencies in the list satisfied?
-  def ok?
-    @specs.all? do |spec|
-      spec.runtime_dependencies.all? do |dep|
-        @specs.find { |s| s.satisfies_requirement? dep }
-      end
-    end
-  end
-
-  # Is is ok to remove a gem from the dependency list?
-  #
-  # If removing the gemspec creates breaks a currently ok dependency,
-  # then it is NOT ok to remove the gem.
-  def ok_to_remove?(full_name)
-    gem_to_remove = find_name full_name
-
-    siblings = @specs.find_all { |s|
-      s.name == gem_to_remove.name &&
-        s.full_name != gem_to_remove.full_name
-    }
-
-    deps = []
-
-    @specs.each do |spec|
-      spec.dependencies.each do |dep|
-        deps << dep if gem_to_remove.satisfies_requirement?(dep)
-      end
-    end
-
-    deps.all? { |dep|
-      siblings.any? { |s|
-        s.satisfies_requirement? dep
-      }
-    }
-  end
-
-  def remove_by_name(full_name)
-    @specs.delete_if { |spec| spec.full_name == full_name }
-  end
-
-  # Return a hash of predecessors.  <tt>result[spec]</tt> is an
-  # Array of gemspecs that have a dependency satisfied by the named
-  # spec.
-  def spec_predecessors
-    result = Hash.new { |h,k| h[k] = [] }
-
-    specs = @specs.sort.reverse
-
-    specs.each do |spec|
-      specs.each do |other|
-        next if spec == other
-
-        other.dependencies.each do |dep|
-          if spec.satisfies_requirement? dep then
-            result[spec] << other
-          end
-        end
-      end
-    end
-
-    result
-  end
-
-  def tsort_each_node(&block)
-    @specs.each(&block)
-  end
-
-  def tsort_each_child(node, &block)
-    specs = @specs.sort.reverse
-
-    node.dependencies.each do |dep|
-      specs.each do |spec|
-        if spec.satisfies_requirement? dep then
-          begin
-            yield spec
-          rescue TSort::Cyclic
-          end
-          break
-        end
-      end
-    end
-  end
-
-  private
-
-  # Count the number of gemspecs in the list +specs+ that are not in
-  # +ignored+.
-  def active_count(specs, ignored)
-    result = 0
-    specs.each do |spec|
-      result += 1 unless ignored[spec.full_name]
-    end
-    result
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb
deleted file mode 100644
index d5a00b0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/digest_adapter.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-  
-  # There is an incompatibility between the way Ruby 1.8.5 and 1.8.6 
-  # handles digests. This DigestAdapter will take a pre-1.8.6 digest 
-  # and adapt it to the 1.8.6 API.
-  #
-  # Note that only the digest and hexdigest methods are adapted, 
-  # since these are the only functions used by Gems.
-  #
-  class DigestAdapter
-
-    # Initialize a digest adapter.
-    def initialize(digest_class)
-      @digest_class = digest_class
-    end
-
-    # Return a new digester.  Since we are only implementing the stateless
-    # methods, we will return ourself as the instance.
-    def new
-      self
-    end
-
-    # Return the digest of +string+ as a hex string.
-    def hexdigest(string)
-      @digest_class.new(string).hexdigest
-    end
-
-    # Return the digest of +string+ as a binary string.
-    def digest(string)
-      @digest_class.new(string).digest
-    end
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/md5.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/md5.rb
deleted file mode 100644
index f924579..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/md5.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/md5'
-
-# :stopdoc:
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    MD5 = Digest::MD5
-  else
-    require 'rubygems/digest/digest_adapter'
-    MD5 = DigestAdapter.new(Digest::MD5)
-    def MD5.md5(string)
-      self.hexdigest(string)
-    end
-  end
-end
-# :startdoc:
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha1.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha1.rb
deleted file mode 100644
index 2a6245d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha1.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/sha1'
-
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    SHA1 = Digest::SHA1
-  else
-    require 'rubygems/digest/digest_adapter'
-    SHA1 = DigestAdapter.new(Digest::SHA1)
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha2.rb
deleted file mode 100644
index 7bef16a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/digest/sha2.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'digest/sha2'
-
-module Gem
-  if RUBY_VERSION >= '1.8.6'
-    SHA256 = Digest::SHA256
-  else
-    require 'rubygems/digest/digest_adapter'
-    SHA256 = DigestAdapter.new(Digest::SHA256)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb
deleted file mode 100644
index 00ef4c5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb
+++ /dev/null
@@ -1,214 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'rubygems'
-
-##
-# The documentation manager generates RDoc and RI for RubyGems.
-
-class Gem::DocManager
-
-  include Gem::UserInteraction
-
-  @configured_args = []
-
-  def self.configured_args
-    @configured_args ||= []
-  end
-
-  def self.configured_args=(args)
-    case args
-    when Array
-      @configured_args = args
-    when String
-      @configured_args = args.split
-    end
-  end
-
-  ##
-  # Load RDoc from a gem if it is available, otherwise from Ruby's stdlib
-
-  def self.load_rdoc
-    begin
-      gem 'rdoc'
-    rescue Gem::LoadError
-      # use built-in RDoc
-    end
-
-    begin
-      require 'rdoc/rdoc'
-    rescue LoadError => e
-      raise Gem::DocumentError,
-          "ERROR: RDoc documentation generator not installed!"
-    end
-  end
-
-  ##
-  # Updates the RI cache for RDoc 2 if it is installed
-
-  def self.update_ri_cache
-    load_rdoc rescue return
-
-    return unless defined? RDoc::VERSION # RDoc 1 does not have VERSION
-
-    require 'rdoc/ri/driver'
-
-    options = {
-      :use_cache => true,
-      :use_system => true,
-      :use_site => true,
-      :use_home => true,
-      :use_gems => true,
-      :formatter => RDoc::RI::Formatter,
-    }
-
-    driver = RDoc::RI::Driver.new(options).class_cache
-  end
-
-  ##
-  # Create a document manager for +spec+. +rdoc_args+ contains arguments for
-  # RDoc (template etc.) as a String.
-
-  def initialize(spec, rdoc_args="")
-    @spec = spec
-    @doc_dir = File.join(spec.installation_path, "doc", spec.full_name)
-    @rdoc_args = rdoc_args.nil? ? [] : rdoc_args.split
-  end
-
-  ##
-  # Is the RDoc documentation installed?
-
-  def rdoc_installed?
-    File.exist?(File.join(@doc_dir, "rdoc"))
-  end
-
-  ##
-  # Generate the RI documents for this gem spec.
-  #
-  # Note that if both RI and RDoc documents are generated from the same
-  # process, the RI docs should be done first (a likely bug in RDoc will cause
-  # RI docs generation to fail if run after RDoc).
-
-  def generate_ri
-    if @spec.has_rdoc then
-      setup_rdoc
-      install_ri # RDoc bug, ri goes first
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-  end
-
-  ##
-  # Generate the RDoc documents for this gem spec.
-  #
-  # Note that if both RI and RDoc documents are generated from the same
-  # process, the RI docs should be done first (a likely bug in RDoc will cause
-  # RI docs generation to fail if run after RDoc).
-
-  def generate_rdoc
-    if @spec.has_rdoc then
-      setup_rdoc
-      install_rdoc
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-  end
-
-  ##
-  # Generate and install RDoc into the documentation directory
-
-  def install_rdoc
-    rdoc_dir = File.join @doc_dir, 'rdoc'
-
-    FileUtils.rm_rf rdoc_dir
-
-    say "Installing RDoc documentation for #{@spec.full_name}..."
-    run_rdoc '--op', rdoc_dir
-  end
-
-  ##
-  # Generate and install RI into the documentation directory
-
-  def install_ri
-    ri_dir = File.join @doc_dir, 'ri'
-
-    FileUtils.rm_rf ri_dir
-
-    say "Installing ri documentation for #{@spec.full_name}..."
-    run_rdoc '--ri', '--op', ri_dir
-  end
-
-  ##
-  # Run RDoc with +args+, which is an ARGV style argument list
-
-  def run_rdoc(*args)
-    args << @spec.rdoc_options
-    args << self.class.configured_args
-    args << '--quiet'
-    args << @spec.require_paths.clone
-    args << @spec.extra_rdoc_files
-    args = args.flatten.map do |arg| arg.to_s end
-
-    r = RDoc::RDoc.new
-
-    old_pwd = Dir.pwd
-    Dir.chdir(@spec.full_gem_path)
-    begin
-      r.document args
-    rescue Errno::EACCES => e
-      dirname = File.dirname e.message.split("-")[1].strip
-      raise Gem::FilePermissionError.new(dirname)
-    rescue RuntimeError => ex
-      alert_error "While generating documentation for #{@spec.full_name}"
-      ui.errs.puts "... MESSAGE:   #{ex}"
-      ui.errs.puts "... RDOC args: #{args.join(' ')}"
-      ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if
-      Gem.configuration.backtrace
-      ui.errs.puts "(continuing with the rest of the installation)"
-    ensure
-      Dir.chdir(old_pwd)
-    end
-  end
-
-  def setup_rdoc
-    if File.exist?(@doc_dir) && !File.writable?(@doc_dir) then
-      raise Gem::FilePermissionError.new(@doc_dir)
-    end
-
-    FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
-
-    self.class.load_rdoc
-  end
-
-  ##
-  # Remove RDoc and RI documentation
-
-  def uninstall_doc
-    raise Gem::FilePermissionError.new(@spec.installation_path) unless
-    File.writable? @spec.installation_path
-
-    original_name = [
-      @spec.name, @spec.version, @spec.original_platform].join '-'
-
-      doc_dir = File.join @spec.installation_path, 'doc', @spec.full_name
-      unless File.directory? doc_dir then
-        doc_dir = File.join @spec.installation_path, 'doc', original_name
-      end
-
-      FileUtils.rm_rf doc_dir
-
-      ri_dir = File.join @spec.installation_path, 'ri', @spec.full_name
-
-      unless File.directory? ri_dir then
-        ri_dir = File.join @spec.installation_path, 'ri', original_name
-      end
-
-      FileUtils.rm_rf ri_dir
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/exceptions.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/exceptions.rb
deleted file mode 100644
index c37507c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/exceptions.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-require 'rubygems'
-
-##
-# Base exception class for RubyGems.  All exception raised by RubyGems are a
-# subclass of this one.
-class Gem::Exception < RuntimeError; end
-
-class Gem::CommandLineError < Gem::Exception; end
-
-class Gem::DependencyError < Gem::Exception; end
-
-class Gem::DependencyRemovalException < Gem::Exception; end
-
-##
-# Raised when attempting to uninstall a gem that isn't in GEM_HOME.
-
-class Gem::GemNotInHomeException < Gem::Exception
-  attr_accessor :spec
-end
-
-class Gem::DocumentError < Gem::Exception; end
-
-##
-# Potentially raised when a specification is validated.
-class Gem::EndOfYAMLException < Gem::Exception; end
-
-##
-# Signals that a file permission error is preventing the user from
-# installing in the requested directories.
-class Gem::FilePermissionError < Gem::Exception
-  def initialize(path)
-    super("You don't have write permissions into the #{path} directory.")
-  end
-end
-
-##
-# Used to raise parsing and loading errors
-class Gem::FormatException < Gem::Exception
-  attr_accessor :file_path
-end
-
-class Gem::GemNotFoundException < Gem::Exception; end
-
-class Gem::InstallError < Gem::Exception; end
-
-##
-# Potentially raised when a specification is validated.
-class Gem::InvalidSpecificationException < Gem::Exception; end
-
-class Gem::OperationNotSupportedError < Gem::Exception; end
-
-##
-# Signals that a remote operation cannot be conducted, probably due to not
-# being connected (or just not finding host).
-#--
-# TODO: create a method that tests connection to the preferred gems server.
-# All code dealing with remote operations will want this.  Failure in that
-# method should raise this error.
-class Gem::RemoteError < Gem::Exception; end
-
-class Gem::RemoteInstallationCancelled < Gem::Exception; end
-
-class Gem::RemoteInstallationSkipped < Gem::Exception; end
-
-##
-# Represents an error communicating via HTTP.
-class Gem::RemoteSourceException < Gem::Exception; end
-
-class Gem::VerificationError < Gem::Exception; end
-
-##
-# Raised to indicate that a system exit should occur with the specified
-# exit_code
-
-class Gem::SystemExitException < SystemExit
-  attr_accessor :exit_code
-
-  def initialize(exit_code)
-    @exit_code = exit_code
-
-    super "Exiting RubyGems with exit_code #{exit_code}"
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext.rb
deleted file mode 100644
index 97ee762..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# Classes for building C extensions live here.
-
-module Gem::Ext; end
-
-require 'rubygems/ext/builder'
-require 'rubygems/ext/configure_builder'
-require 'rubygems/ext/ext_conf_builder'
-require 'rubygems/ext/rake_builder'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/builder.rb
deleted file mode 100644
index 36e9ec1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/builder.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext'
-
-class Gem::Ext::Builder
-
-  def self.class_name
-    name =~ /Ext::(.*)Builder/
-    $1.downcase
-  end
-
-  def self.make(dest_path, results)
-    unless File.exist? 'Makefile' then
-      raise Gem::InstallError, "Makefile not found:\n\n#{results.join "\n"}" 
-    end
-
-    mf = File.read('Makefile')
-    mf = mf.gsub(/^RUBYARCHDIR\s*=\s*\$[^$]*/, "RUBYARCHDIR = #{dest_path}")
-    mf = mf.gsub(/^RUBYLIBDIR\s*=\s*\$[^$]*/, "RUBYLIBDIR = #{dest_path}")
-
-    File.open('Makefile', 'wb') {|f| f.print mf}
-
-    make_program = ENV['make']
-    unless make_program then
-      make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
-    end
-
-    ['', ' install'].each do |target|
-      cmd = "#{make_program}#{target}"
-      results << cmd
-      results << `#{cmd} #{redirector}`
-
-      raise Gem::InstallError, "make#{target} failed:\n\n#{results}" unless
-        $?.success?
-    end
-  end
-
-  def self.redirector
-    '2>&1'
-  end
-
-  def self.run(command, results)
-    results << command
-    results << `#{command} #{redirector}`
-
-    unless $?.success? then
-      raise Gem::InstallError, "#{class_name} failed:\n\n#{results.join "\n"}"
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb
deleted file mode 100644
index 1cde691..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/configure_builder.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    unless File.exist?('Makefile') then
-      cmd = "sh ./configure --prefix=#{dest_path}"
-
-      run cmd, results
-    end
-
-    make dest_path, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb
deleted file mode 100644
index cbe0e80..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/ext_conf_builder.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    cmd = "#{Gem.ruby} #{File.basename extension}"
-    cmd << " #{ARGV.join ' '}" unless ARGV.empty?
-
-    run cmd, results
-
-    make dest_path, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb
deleted file mode 100644
index 0c64e61..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/ext/rake_builder.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/ext/builder'
-
-class Gem::Ext::RakeBuilder < Gem::Ext::Builder
-
-  def self.build(extension, directory, dest_path, results)
-    if File.basename(extension) =~ /mkrf_conf/i then
-      cmd = "#{Gem.ruby} #{File.basename extension}"
-      cmd << " #{ARGV.join " "}" unless ARGV.empty?
-      run cmd, results
-    end
-
-    cmd = ENV['rake'] || 'rake'
-    cmd += " RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
-
-    run cmd, results
-
-    results
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/format.rb
deleted file mode 100644
index 7dc127d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/format.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-
-require 'rubygems/package'
-
-module Gem
-
-  ##
-  # The format class knows the guts of the RubyGem .gem file format
-  # and provides the capability to read gem files
-  #
-  class Format
-    attr_accessor :spec, :file_entries, :gem_path
-    extend Gem::UserInteraction
-  
-    ##
-    # Constructs an instance of a Format object, representing the gem's
-    # data structure.
-    #
-    # gem:: [String] The file name of the gem
-    #
-    def initialize(gem_path)
-      @gem_path = gem_path
-    end
-    
-    ##
-    # Reads the named gem file and returns a Format object, representing 
-    # the data from the gem file
-    #
-    # file_path:: [String] Path to the gem file
-    #
-    def self.from_file_by_path(file_path, security_policy = nil)
-      format = nil
-
-      unless File.exist?(file_path)
-        raise Gem::Exception, "Cannot load gem at [#{file_path}] in #{Dir.pwd}"
-      end
-
-      # check for old version gem
-      if File.read(file_path, 20).include?("MD5SUM =")
-        require 'rubygems/old_format'
-
-        format = OldFormat.from_file_by_path(file_path)
-      else
-        open file_path, Gem.binary_mode do |io|
-          format = from_io io, file_path, security_policy
-        end
-      end
-
-      return format
-    end
-
-    ##
-    # Reads a gem from an io stream and returns a Format object, representing
-    # the data from the gem file
-    #
-    # io:: [IO] Stream from which to read the gem
-    #
-    def self.from_io(io, gem_path="(io)", security_policy = nil)
-      format = new gem_path
-
-      Package.open io, 'r', security_policy do |pkg|
-        format.spec = pkg.metadata
-        format.file_entries = []
-
-        pkg.each do |entry|
-          size = entry.header.size
-          mode = entry.header.mode
-
-          format.file_entries << [{
-              "size" => size, "mode" => mode, "path" => entry.full_name,
-            },
-            entry.read
-          ]
-        end
-      end
-
-      format
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_openssl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_openssl.rb
deleted file mode 100644
index 1456f2d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_openssl.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-# Some system might not have OpenSSL installed, therefore the core
-# library file openssl might not be available.  We localize testing
-# for the presence of OpenSSL in this file.
-
-module Gem
-  class << self
-    # Is SSL (used by the signing commands) available on this
-    # platform?
-    def ssl_available?
-      require 'rubygems/gem_openssl'
-      @ssl_available
-    end
-
-    # Set the value of the ssl_available flag.
-    attr_writer :ssl_available
-
-    # Ensure that SSL is available.  Throw an exception if it is not.
-    def ensure_ssl_available
-      unless ssl_available?
-        fail Gem::Exception, "SSL is not installed on this system"
-      end
-    end
-  end
-end
-
-begin
-  require 'openssl'
-
-  # Reference a constant defined in the .rb portion of ssl (just to
-  # make sure that part is loaded too).
-
-  dummy = OpenSSL::Digest::SHA1
-
-  Gem.ssl_available = true
-
-  class OpenSSL::X509::Certificate # :nodoc:
-    # Check the validity of this certificate.
-    def check_validity(issuer_cert = nil, time = Time.now)
-      ret = if @not_before && @not_before > time
-              [false, :expired, "not valid before '#@not_before'"]
-            elsif @not_after && @not_after < time
-              [false, :expired, "not valid after '#@not_after'"]
-            elsif issuer_cert && !verify(issuer_cert.public_key)
-              [false, :issuer, "#{issuer_cert.subject} is not issuer"]
-            else
-              [true, :ok, 'Valid certificate']
-            end
-
-      # return hash
-      { :is_valid => ret[0], :error => ret[1], :desc => ret[2] }
-    end
-  end
-
-rescue LoadError, StandardError
-  Gem.ssl_available = false
-end
-
-module Gem::SSL
-
-  # We make our own versions of the constants here.  This allows us
-  # to reference the constants, even though some systems might not
-  # have SSL installed in the Ruby core package.
-  #
-  # These constants are only used during load time.  At runtime, any
-  # method that makes a direct reference to SSL software must be
-  # protected with a Gem.ensure_ssl_available call.
-  #
-  if Gem.ssl_available? then
-    PKEY_RSA = OpenSSL::PKey::RSA
-    DIGEST_SHA1 = OpenSSL::Digest::SHA1
-  else
-    PKEY_RSA = :rsa
-    DIGEST_SHA1 = :sha1
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb
deleted file mode 100644
index e2b8543..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_path_searcher.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# GemPathSearcher has the capability to find loadable files inside
-# gems.  It generates data up front to speed up searches later.
-
-class Gem::GemPathSearcher
-
-  ##
-  # Initialise the data we need to make searches later.
-
-  def initialize
-    # We want a record of all the installed gemspecs, in the order
-    # we wish to examine them.
-    @gemspecs = init_gemspecs
-    # Map gem spec to glob of full require_path directories.
-    # Preparing this information may speed up searches later.
-    @lib_dirs = {}
-    @gemspecs.each do |spec|
-      @lib_dirs[spec.object_id] = lib_dirs_for(spec)
-    end
-  end
-
-  ##
-  # Look in all the installed gems until a matching _path_ is found.
-  # Return the _gemspec_ of the gem where it was found.  If no match
-  # is found, return nil.
-  #
-  # The gems are searched in alphabetical order, and in reverse
-  # version order.
-  #
-  # For example:
-  #
-  #   find('log4r')              # -> (log4r-1.1 spec)
-  #   find('log4r.rb')           # -> (log4r-1.1 spec)
-  #   find('rake/rdoctask')      # -> (rake-0.4.12 spec)
-  #   find('foobarbaz')          # -> nil
-  #
-  # Matching paths can have various suffixes ('.rb', '.so', and
-  # others), which may or may not already be attached to _file_.
-  # This method doesn't care about the full filename that matches;
-  # only that there is a match.
-
-  def find(path)
-    @gemspecs.find do |spec| matching_file? spec, path end
-  end
-
-  ##
-  # Works like #find, but finds all gemspecs matching +path+.
-
-  def find_all(path)
-    @gemspecs.select do |spec|
-      matching_file? spec, path
-    end
-  end
-
-  ##
-  # Attempts to find a matching path using the require_paths of the given
-  # +spec+.
-
-  def matching_file?(spec, path)
-    !matching_files(spec, path).empty?
-  end
-
-  ##
-  # Returns files matching +path+ in +spec+.
-  #--
-  # Some of the intermediate results are cached in @lib_dirs for speed.
-
-  def matching_files(spec, path)
-    glob = File.join @lib_dirs[spec.object_id], "#{path}#{Gem.suffix_pattern}"
-    Dir[glob].select { |f| File.file? f.untaint }
-  end
-
-  ##
-  # Return a list of all installed gemspecs, sorted by alphabetical order and
-  # in reverse version order.
-
-  def init_gemspecs
-    Gem.source_index.map { |_, spec| spec }.sort { |a,b|
-      (a.name <=> b.name).nonzero? || (b.version <=> a.version)
-    }
-  end
-
-  ##
-  # Returns library directories glob for a gemspec.  For example,
-  #   '/usr/local/lib/ruby/gems/1.8/gems/foobar-1.0/{lib,ext}'
-
-  def lib_dirs_for(spec)
-    "#{spec.full_gem_path}/{#{spec.require_paths.join(',')}}"
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb
deleted file mode 100644
index 5f91398..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/command_manager'
-require 'rubygems/config_file'
-require 'rubygems/doc_manager'
-
-module Gem
-
-  ####################################################################
-  # Run an instance of the gem program.
-  #
-  class GemRunner
-
-    def initialize(options={})
-      @command_manager_class = options[:command_manager] || Gem::CommandManager
-      @config_file_class = options[:config_file] || Gem::ConfigFile
-      @doc_manager_class = options[:doc_manager] || Gem::DocManager
-    end
-
-    # Run the gem command with the following arguments.
-    def run(args)
-      start_time = Time.now
-      do_configuration(args)
-      cmd = @command_manager_class.instance
-      cmd.command_names.each do |command_name|
-        config_args = Gem.configuration[command_name]
-        config_args = case config_args
-                      when String
-                        config_args.split ' '
-                      else
-                        Array(config_args)
-                      end
-        Command.add_specific_extra_args command_name, config_args
-      end
-      cmd.run(Gem.configuration.args)
-      end_time = Time.now
-      if Gem.configuration.benchmark 
-        printf "\nExecution time: %0.2f seconds.\n", end_time-start_time
-        puts "Press Enter to finish"
-        STDIN.gets
-      end
-    end
-
-    private
-
-    def do_configuration(args)
-      Gem.configuration = @config_file_class.new(args)
-      Gem.use_paths(Gem.configuration[:gemhome], Gem.configuration[:gempath])
-      Gem::Command.extra_args = Gem.configuration[:gem]
-      @doc_manager_class.configured_args = Gem.configuration[:rdoc]
-    end
-
-  end # class
-end # module
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/indexer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/indexer.rb
deleted file mode 100644
index e2dd57d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/indexer.rb
+++ /dev/null
@@ -1,370 +0,0 @@
-require 'fileutils'
-require 'tmpdir'
-require 'zlib'
-
-require 'rubygems'
-require 'rubygems/format'
-
-begin
-  require 'builder/xchar'
-rescue LoadError
-end
-
-##
-# Top level class for building the gem repository index.
-
-class Gem::Indexer
-
-  include Gem::UserInteraction
-
-  ##
-  # Index install location
-
-  attr_reader :dest_directory
-
-  ##
-  # Index build directory
-
-  attr_reader :directory
-
-  ##
-  # Create an indexer that will index the gems in +directory+.
-
-  def initialize(directory)
-    unless ''.respond_to? :to_xs then
-      fail "Gem::Indexer requires that the XML Builder library be installed:" \
-           "\n\tgem install builder"
-    end
-
-    @dest_directory = directory
-    @directory = File.join Dir.tmpdir, "gem_generate_index_#{$$}"
-
-    marshal_name = "Marshal.#{Gem.marshal_version}"
-
-    @master_index = File.join @directory, 'yaml'
-    @marshal_index = File.join @directory, marshal_name
-
-    @quick_dir = File.join @directory, 'quick'
-
-    @quick_marshal_dir = File.join @quick_dir, marshal_name
-
-    @quick_index = File.join @quick_dir, 'index'
-    @latest_index = File.join @quick_dir, 'latest_index'
-
-    @specs_index = File.join @directory, "specs.#{Gem.marshal_version}"
-    @latest_specs_index = File.join @directory,
-                                    "latest_specs.#{Gem.marshal_version}"
-
-    files = [
-      @specs_index,
-      "#{@specs_index}.gz",
-      @latest_specs_index,
-      "#{@latest_specs_index}.gz",
-      @quick_dir,
-      @master_index,
-      "#{@master_index}.Z",
-      @marshal_index,
-      "#{@marshal_index}.Z",
-    ]
-
-    @files = files.map do |path|
-      path.sub @directory, ''
-    end
-  end
-
-  ##
-  # Abbreviate the spec for downloading.  Abbreviated specs are only used for
-  # searching, downloading and related activities and do not need deployment
-  # specific information (e.g. list of files).  So we abbreviate the spec,
-  # making it much smaller for quicker downloads.
-
-  def abbreviate(spec)
-    spec.files = []
-    spec.test_files = []
-    spec.rdoc_options = []
-    spec.extra_rdoc_files = []
-    spec.cert_chain = []
-    spec
-  end
-
-  ##
-  # Build various indicies
-
-  def build_indicies(index)
-    progress = ui.progress_reporter index.size,
-                                    "Generating quick index gemspecs for #{index.size} gems",
-                                    "Complete"
-
-    index.each do |original_name, spec|
-      spec_file_name = "#{original_name}.gemspec.rz"
-      yaml_name = File.join @quick_dir, spec_file_name
-      marshal_name = File.join @quick_marshal_dir, spec_file_name
-
-      yaml_zipped = Gem.deflate spec.to_yaml
-      open yaml_name, 'wb' do |io| io.write yaml_zipped end
-
-      marshal_zipped = Gem.deflate Marshal.dump(spec)
-      open marshal_name, 'wb' do |io| io.write marshal_zipped end
-
-      progress.updated original_name
-    end
-
-    progress.done
-
-    say "Generating specs index"
-
-    open @specs_index, 'wb' do |io|
-      specs = index.sort.map do |_, spec|
-        platform = spec.original_platform
-        platform = Gem::Platform::RUBY if platform.nil? or platform.empty?
-        [spec.name, spec.version, platform]
-      end
-
-      specs = compact_specs specs
-
-      Marshal.dump specs, io
-    end
-
-    say "Generating latest specs index"
-
-    open @latest_specs_index, 'wb' do |io|
-      specs = index.latest_specs.sort.map do |spec|
-        platform = spec.original_platform
-        platform = Gem::Platform::RUBY if platform.nil? or platform.empty?
-        [spec.name, spec.version, platform]
-      end
-
-      specs = compact_specs specs
-
-      Marshal.dump specs, io
-    end
-
-    say "Generating quick index"
-
-    quick_index = File.join @quick_dir, 'index'
-    open quick_index, 'wb' do |io|
-      io.puts index.sort.map { |_, spec| spec.original_name }
-    end
-
-    say "Generating latest index"
-
-    latest_index = File.join @quick_dir, 'latest_index'
-    open latest_index, 'wb' do |io|
-      io.puts index.latest_specs.sort.map { |spec| spec.original_name }
-    end
-
-    say "Generating Marshal master index"
-
-    open @marshal_index, 'wb' do |io|
-      io.write index.dump
-    end
-
-    progress = ui.progress_reporter index.size,
-                                    "Generating YAML master index for #{index.size} gems (this may take a while)",
-                                    "Complete"
-
-    open @master_index, 'wb' do |io|
-      io.puts "--- !ruby/object:#{index.class}"
-      io.puts "gems:"
-
-      gems = index.sort_by { |name, gemspec| gemspec.sort_obj }
-      gems.each do |original_name, gemspec|
-        yaml = gemspec.to_yaml.gsub(/^/, '    ')
-        yaml = yaml.sub(/\A    ---/, '') # there's a needed extra ' ' here
-        io.print "  #{original_name}:"
-        io.puts yaml
-
-        progress.updated original_name
-      end
-    end
-
-    progress.done
-
-    say "Compressing indicies"
-    # use gzip for future files.
-
-    compress quick_index, 'rz'
-    paranoid quick_index, 'rz'
-
-    compress latest_index, 'rz'
-    paranoid latest_index, 'rz'
-
-    compress @marshal_index, 'Z'
-    paranoid @marshal_index, 'Z'
-
-    compress @master_index, 'Z'
-    paranoid @master_index, 'Z'
-
-    gzip @specs_index
-    gzip @latest_specs_index
-  end
-
-  ##
-  # Collect specifications from .gem files from the gem directory.
-
-  def collect_specs
-    index = Gem::SourceIndex.new
-
-    progress = ui.progress_reporter gem_file_list.size,
-                                    "Loading #{gem_file_list.size} gems from #{@dest_directory}",
-                                    "Loaded all gems"
-
-    gem_file_list.each do |gemfile|
-      if File.size(gemfile.to_s) == 0 then
-        alert_warning "Skipping zero-length gem: #{gemfile}"
-        next
-      end
-
-      begin
-        spec = Gem::Format.from_file_by_path(gemfile).spec
-
-        unless gemfile =~ /\/#{Regexp.escape spec.original_name}.*\.gem\z/i then
-          alert_warning "Skipping misnamed gem: #{gemfile} => #{spec.full_name} (#{spec.original_name})"
-          next
-        end
-
-        abbreviate spec
-        sanitize spec
-
-        index.gems[spec.original_name] = spec
-
-        progress.updated spec.original_name
-
-      rescue SignalException => e
-        alert_error "Received signal, exiting"
-        raise
-      rescue Exception => e
-        alert_error "Unable to process #{gemfile}\n#{e.message} (#{e.class})\n\t#{e.backtrace.join "\n\t"}"
-      end
-    end
-
-    progress.done
-
-    index
-  end
-
-  ##
-  # Compacts Marshal output for the specs index data source by using identical
-  # objects as much as possible.
-
-  def compact_specs(specs)
-    names = {}
-    versions = {}
-    platforms = {}
-
-    specs.map do |(name, version, platform)|
-      names[name] = name unless names.include? name
-      versions[version] = version unless versions.include? version
-      platforms[platform] = platform unless platforms.include? platform
-
-      [names[name], versions[version], platforms[platform]]
-    end
-  end
-
-  ##
-  # Compress +filename+ with +extension+.
-
-  def compress(filename, extension)
-    data = Gem.read_binary filename
-
-    zipped = Gem.deflate data
-
-    open "#{filename}.#{extension}", 'wb' do |io|
-      io.write zipped
-    end
-  end
-
-  ##
-  # List of gem file names to index.
-
-  def gem_file_list
-    Dir.glob(File.join(@dest_directory, "gems", "*.gem"))
-  end
-
-  ##
-  # Builds and installs indexicies.
-
-  def generate_index
-    make_temp_directories
-    index = collect_specs
-    build_indicies index
-    install_indicies
-  rescue SignalException
-  ensure
-    FileUtils.rm_rf @directory
-  end
-
-   ##
-  # Zlib::GzipWriter wrapper that gzips +filename+ on disk.
-
-  def gzip(filename)
-    Zlib::GzipWriter.open "#{filename}.gz" do |io|
-      io.write Gem.read_binary(filename)
-    end
-  end
-
-  ##
-  # Install generated indicies into the destination directory.
-
-  def install_indicies
-    verbose = Gem.configuration.really_verbose
-
-    say "Moving index into production dir #{@dest_directory}" if verbose
-
-    @files.each do |file|
-      src_name = File.join @directory, file
-      dst_name = File.join @dest_directory, file
-
-      FileUtils.rm_rf dst_name, :verbose => verbose
-      FileUtils.mv src_name, @dest_directory, :verbose => verbose,
-                   :force => true
-    end
-  end
-
-  ##
-  # Make directories for index generation
-
-  def make_temp_directories
-    FileUtils.rm_rf @directory
-    FileUtils.mkdir_p @directory, :mode => 0700
-    FileUtils.mkdir_p @quick_marshal_dir
-  end
-
-  ##
-  # Ensure +path+ and path with +extension+ are identical.
-
-  def paranoid(path, extension)
-    data = Gem.read_binary path
-    compressed_data = Gem.read_binary "#{path}.#{extension}"
-
-    unless data == Gem.inflate(compressed_data) then
-      raise "Compressed file #{compressed_path} does not match uncompressed file #{path}"
-    end
-  end
-
-  ##
-  # Sanitize the descriptive fields in the spec.  Sometimes non-ASCII
-  # characters will garble the site index.  Non-ASCII characters will
-  # be replaced by their XML entity equivalent.
-
-  def sanitize(spec)
-    spec.summary = sanitize_string(spec.summary)
-    spec.description = sanitize_string(spec.description)
-    spec.post_install_message = sanitize_string(spec.post_install_message)
-    spec.authors = spec.authors.collect { |a| sanitize_string(a) }
-
-    spec
-  end
-
-  ##
-  # Sanitize a single string.
-
-  def sanitize_string(string)
-    # HACK the #to_s is in here because RSpec has an Array of Arrays of
-    # Strings for authors.  Need a way to disallow bad values on gempsec
-    # generation.  (Probably won't happen.)
-    string ? string.to_s.to_xs : string
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/install_update_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/install_update_options.rb
deleted file mode 100644
index dd35acb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/install_update_options.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/security'
-
-##
-# Mixin methods for install and update options for Gem::Commands
-module Gem::InstallUpdateOptions
-
-  # Add the install/update options to the option parser.
-  def add_install_update_options
-    OptionParser.accept Gem::Security::Policy do |value|
-      value = Gem::Security::Policies[value]
-      raise OptionParser::InvalidArgument, value if value.nil?
-      value
-    end
-
-    add_option(:"Install/Update", '-i', '--install-dir DIR',
-               'Gem repository directory to get installed',
-               'gems') do |value, options|
-      options[:install_dir] = File.expand_path(value)
-    end
-
-    add_option(:"Install/Update", '-n', '--bindir DIR',
-	       'Directory where binary files are',
-	       'located') do |value, options|
-      options[:bin_dir] = File.expand_path(value)
-    end
-
-    add_option(:"Install/Update", '-d', '--[no-]rdoc',
-               'Generate RDoc documentation for the gem on',
-               'install') do |value, options|
-      options[:generate_rdoc] = value
-    end
-
-    add_option(:"Install/Update", '--[no-]ri',
-               'Generate RI documentation for the gem on',
-               'install') do |value, options|
-      options[:generate_ri] = value
-    end
-
-    add_option(:"Install/Update", '-E', '--[no-]env-shebang',
-               "Rewrite the shebang line on installed",
-               "scripts to use /usr/bin/env") do |value, options|
-      options[:env_shebang] = value
-    end
-
-    add_option(:"Install/Update", '-f', '--[no-]force',
-               'Force gem to install, bypassing dependency',
-               'checks') do |value, options|
-      options[:force] = value
-    end
-
-    add_option(:"Install/Update", '-t', '--[no-]test',
-               'Run unit tests prior to installation') do |value, options|
-      options[:test] = value
-    end
-
-    add_option(:"Install/Update", '-w', '--[no-]wrappers',
-               'Use bin wrappers for executables',
-               'Not available on dosish platforms') do |value, options|
-      options[:wrappers] = value
-    end
-
-    add_option(:"Install/Update", '-P', '--trust-policy POLICY',
-               Gem::Security::Policy,
-               'Specify gem trust policy') do |value, options|
-      options[:security_policy] = value
-    end
-
-    add_option(:"Install/Update", '--ignore-dependencies',
-               'Do not install any required dependent gems') do |value, options|
-      options[:ignore_dependencies] = value
-    end
-
-    add_option(:"Install/Update", '-y', '--include-dependencies',
-               'Unconditionally install the required',
-               'dependent gems') do |value, options|
-      options[:include_dependencies] = value
-    end
-
-    add_option(:"Install/Update",       '--[no-]format-executable',
-               'Make installed executable names match ruby.',
-               'If ruby is ruby18, foo_exec will be',
-               'foo_exec18') do |value, options|
-      options[:format_executable] = value
-    end
-
-    add_option(:"Install/Update",       '--[no-]user-install',
-               'Install in user\'s home directory instead',
-               'of GEM_HOME. Defaults to using home directory',
-               'only if GEM_HOME is not writable.') do |value, options|
-      options[:user_install] = value
-    end
-
-    add_option(:"Install/Update", "--development",
-                "Install any additional development",
-                "dependencies") do |value, options|
-      options[:development] = true
-    end
-  end
-
-  # Default options for the gem install command.
-  def install_update_defaults_str
-    '--rdoc --no-force --no-test --wrappers'
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/installer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/installer.rb
deleted file mode 100644
index d719580..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/installer.rb
+++ /dev/null
@@ -1,578 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'pathname'
-require 'rbconfig'
-
-require 'rubygems/format'
-require 'rubygems/ext'
-require 'rubygems/require_paths_builder'
-
-##
-# The installer class processes RubyGem .gem files and installs the
-# files contained in the .gem into the Gem.path.
-#
-# Gem::Installer does the work of putting files in all the right places on the
-# filesystem including unpacking the gem into its gem dir, installing the
-# gemspec in the specifications dir, storing the cached gem in the cache dir,
-# and installing either wrappers or symlinks for executables.
-
-class Gem::Installer
-
-  ##
-  # Raised when there is an error while building extensions.
-  #
-  class ExtensionBuildError < Gem::InstallError; end
-
-  include Gem::UserInteraction
-
-  include Gem::RequirePathsBuilder
-
-  ##
-  # The directory a gem's executables will be installed into
-
-  attr_reader :bin_dir
-
-  ##
-  # The gem repository the gem will be installed into
-
-  attr_reader :gem_home
-
-  ##
-  # The Gem::Specification for the gem being installed
-
-  attr_reader :spec
-
-  @home_install_warning = false
-  @path_warning = false
-
-  class << self
-
-    ##
-    # True if we've warned about ~/.gems install
-
-    attr_accessor :home_install_warning
-
-    ##
-    # True if we've warned about PATH not including Gem.bindir
-
-    attr_accessor :path_warning
-
-    attr_writer :exec_format
-
-    # Defaults to use Ruby's program prefix and suffix.
-    def exec_format
-      @exec_format ||= Gem.default_exec_format
-    end
-
-  end
-
-  ##
-  # Constructs an Installer instance that will install the gem located at
-  # +gem+.  +options+ is a Hash with the following keys:
-  #
-  # :env_shebang:: Use /usr/bin/env in bin wrappers.
-  # :force:: Overrides all version checks and security policy checks, except
-  #          for a signed-gems-only policy.
-  # :ignore_dependencies:: Don't raise if a dependency is missing.
-  # :install_dir:: The directory to install the gem into.
-  # :format_executable:: Format the executable the same as the ruby executable.
-  #                      If your ruby is ruby18, foo_exec will be installed as
-  #                      foo_exec18.
-  # :security_policy:: Use the specified security policy.  See Gem::Security
-  # :wrappers:: Install wrappers if true, symlinks if false.
-
-  def initialize(gem, options={})
-    @gem = gem
-
-    options = {
-      :bin_dir      => nil,
-      :env_shebang  => false,
-      :exec_format  => false,
-      :force        => false,
-      :install_dir  => Gem.dir,
-      :source_index => Gem.source_index,
-    }.merge options
-
-    @env_shebang = options[:env_shebang]
-    @force = options[:force]
-    gem_home = options[:install_dir]
-    @gem_home = Pathname.new(gem_home).expand_path
-    @ignore_dependencies = options[:ignore_dependencies]
-    @format_executable = options[:format_executable]
-    @security_policy = options[:security_policy]
-    @wrappers = options[:wrappers]
-    @bin_dir = options[:bin_dir]
-    @development = options[:development]
-    @source_index = options[:source_index]
-
-    begin
-      @format = Gem::Format.from_file_by_path @gem, @security_policy
-    rescue Gem::Package::FormatError
-      raise Gem::InstallError, "invalid gem format for #{@gem}"
-    end
-
-    begin
-      FileUtils.mkdir_p @gem_home
-    rescue Errno::EACCESS, Errno::ENOTDIR
-      # We'll divert to ~/.gems below
-    end
-
-    if not File.writable? @gem_home or
-        # TODO: Shouldn't have to test for existence of bindir; tests need it.
-        (@gem_home.to_s == Gem.dir and File.exist? Gem.bindir and
-         not File.writable? Gem.bindir) then
-      if options[:user_install] == false then # You don't want to use ~
-        raise Gem::FilePermissionError, @gem_home
-      elsif options[:user_install].nil? then
-        unless self.class.home_install_warning then
-          alert_warning "Installing to ~/.gem since #{@gem_home} and\n\t  #{Gem.bindir} aren't both writable."
-          self.class.home_install_warning = true
-        end
-      end
-      options[:user_install] = true
-    end
-
-    if options[:user_install] and not options[:unpack] then
-      @gem_home = Gem.user_dir
-
-      user_bin_dir = File.join(@gem_home, 'bin')
-      unless ENV['PATH'].split(File::PATH_SEPARATOR).include? user_bin_dir then
-        unless self.class.path_warning then
-          alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t  gem executables will not run."
-          self.class.path_warning = true
-        end
-      end
-
-      FileUtils.mkdir_p @gem_home unless File.directory? @gem_home
-      # If it's still not writable, you've got issues.
-      raise Gem::FilePermissionError, @gem_home unless File.writable? @gem_home
-    end
-
-    @spec = @format.spec
-
-    @gem_dir = File.join(@gem_home, "gems", @spec.full_name).untaint
-  end
-
-  ##
-  # Installs the gem and returns a loaded Gem::Specification for the installed
-  # gem.
-  #
-  # The gem will be installed with the following structure:
-  #
-  #   @gem_home/
-  #     cache/<gem-version>.gem #=> a cached copy of the installed gem
-  #     gems/<gem-version>/... #=> extracted files
-  #     specifications/<gem-version>.gemspec #=> the Gem::Specification
-
-  def install
-    # If we're forcing the install then disable security unless the security
-    # policy says that we only install singed gems.
-    @security_policy = nil if @force and @security_policy and
-                              not @security_policy.only_signed
-
-    unless @force then
-      if rrv = @spec.required_ruby_version then
-        unless rrv.satisfied_by? Gem.ruby_version then
-          raise Gem::InstallError, "#{@spec.name} requires Ruby version #{rrv}"
-        end
-      end
-
-      if rrgv = @spec.required_rubygems_version then
-        unless rrgv.satisfied_by? Gem::Version.new(Gem::RubyGemsVersion) then
-          raise Gem::InstallError,
-                "#{@spec.name} requires RubyGems version #{rrgv}"
-        end
-      end
-
-      unless @ignore_dependencies then
-        deps = @spec.runtime_dependencies
-        deps |= @spec.development_dependencies if @development
-
-        deps.each do |dep_gem|
-          ensure_dependency @spec, dep_gem
-        end
-      end
-    end
-
-    Gem.pre_install_hooks.each do |hook|
-      hook.call self
-    end
-
-    FileUtils.mkdir_p @gem_home unless File.directory? @gem_home
-
-    Gem.ensure_gem_subdirectories @gem_home
-
-    FileUtils.mkdir_p @gem_dir
-
-    extract_files
-    generate_bin
-    build_extensions
-    write_spec
-
-    write_require_paths_file_if_needed
-
-    # HACK remove?  Isn't this done in multiple places?
-    cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop
-    unless File.exist? cached_gem then
-      FileUtils.cp @gem, File.join(@gem_home, "cache")
-    end
-
-    say @spec.post_install_message unless @spec.post_install_message.nil?
-
-    @spec.loaded_from = File.join(@gem_home, 'specifications',
-                                  "#{@spec.full_name}.gemspec")
-
-    @source_index.add_spec @spec
-
-    Gem.post_install_hooks.each do |hook|
-      hook.call self
-    end
-
-    return @spec
-  rescue Zlib::GzipFile::Error
-    raise Gem::InstallError, "gzip error installing #{@gem}"
-  end
-
-  ##
-  # Ensure that the dependency is satisfied by the current installation of
-  # gem.  If it is not an exception is raised.
-  #
-  # spec       :: Gem::Specification
-  # dependency :: Gem::Dependency
-
-  def ensure_dependency(spec, dependency)
-    unless installation_satisfies_dependency? dependency then
-      raise Gem::InstallError, "#{spec.name} requires #{dependency}"
-    end
-
-    true
-  end
-
-  ##
-  # True if the gems in the source_index satisfy +dependency+.
-
-  def installation_satisfies_dependency?(dependency)
-    @source_index.find_name(dependency.name, dependency.version_requirements).size > 0
-  end
-
-  ##
-  # Unpacks the gem into the given directory.
-
-  def unpack(directory)
-    @gem_dir = directory
-    @format = Gem::Format.from_file_by_path @gem, @security_policy
-    extract_files
-  end
-
-  ##
-  # Writes the .gemspec specification (in Ruby) to the supplied
-  # spec_path.
-  #
-  # spec:: [Gem::Specification] The Gem specification to output
-  # spec_path:: [String] The location (path) to write the gemspec to
-
-  def write_spec
-    rubycode = @spec.to_ruby
-
-    file_name = File.join @gem_home, 'specifications',
-                          "#{@spec.full_name}.gemspec"
-
-    file_name.untaint
-
-    File.open(file_name, "w") do |file|
-      file.puts rubycode
-    end
-  end
-
-  ##
-  # Creates windows .bat files for easy running of commands
-
-  def generate_windows_script(bindir, filename)
-    if Gem.win_platform? then
-      script_name = filename + ".bat"
-      script_path = File.join bindir, File.basename(script_name)
-      File.open script_path, 'w' do |file|
-        file.puts windows_stub_script(bindir, filename)
-      end
-
-      say script_path if Gem.configuration.really_verbose
-    end
-  end
-
-  def generate_bin
-    return if @spec.executables.nil? or @spec.executables.empty?
-
-    # If the user has asked for the gem to be installed in a directory that is
-    # the system gem directory, then use the system bin directory, else create
-    # (or use) a new bin dir under the gem_home.
-    bindir = @bin_dir ? @bin_dir : Gem.bindir(@gem_home)
-
-    Dir.mkdir bindir unless File.exist? bindir
-    raise Gem::FilePermissionError.new(bindir) unless File.writable? bindir
-
-    @spec.executables.each do |filename|
-      filename.untaint
-      bin_path = File.expand_path File.join(@gem_dir, @spec.bindir, filename)
-      mode = File.stat(bin_path).mode | 0111
-      File.chmod mode, bin_path
-
-      if @wrappers then
-        generate_bin_script filename, bindir
-      else
-        generate_bin_symlink filename, bindir
-      end
-    end
-  end
-
-  ##
-  # Creates the scripts to run the applications in the gem.
-  #--
-  # The Windows script is generated in addition to the regular one due to a
-  # bug or misfeature in the Windows shell's pipe.  See
-  # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/193379
-
-  def generate_bin_script(filename, bindir)
-    bin_script_path = File.join bindir, formatted_program_filename(filename)
-
-    exec_path = File.join @gem_dir, @spec.bindir, filename
-
-    # HACK some gems don't have #! in their executables, restore 2008/06
-    #if File.read(exec_path, 2) == '#!' then
-      FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
-
-      File.open bin_script_path, 'w', 0755 do |file|
-        file.print app_script_text(filename)
-      end
-
-      say bin_script_path if Gem.configuration.really_verbose
-
-      generate_windows_script bindir, filename
-    #else
-    #  FileUtils.rm_f bin_script_path
-    #  FileUtils.cp exec_path, bin_script_path,
-    #               :verbose => Gem.configuration.really_verbose
-    #end
-  end
-
-  ##
-  # Creates the symlinks to run the applications in the gem.  Moves
-  # the symlink if the gem being installed has a newer version.
-
-  def generate_bin_symlink(filename, bindir)
-    if Gem.win_platform? then
-      alert_warning "Unable to use symlinks on Windows, installing wrapper"
-      generate_bin_script filename, bindir
-      return
-    end
-
-    src = File.join @gem_dir, 'bin', filename
-    dst = File.join bindir, formatted_program_filename(filename)
-
-    if File.exist? dst then
-      if File.symlink? dst then
-        link = File.readlink(dst).split File::SEPARATOR
-        cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ''))
-        return if @spec.version < cur_version
-      end
-      File.unlink dst
-    end
-
-    FileUtils.symlink src, dst, :verbose => Gem.configuration.really_verbose
-  end
-
-  ##
-  # Generates a #! line for +bin_file_name+'s wrapper copying arguments if
-  # necessary.
-
-  def shebang(bin_file_name)
-    if @env_shebang then
-      "#!/usr/bin/env " + Gem::ConfigMap[:ruby_install_name]
-    else
-      path = File.join @gem_dir, @spec.bindir, bin_file_name
-
-      File.open(path, "rb") do |file|
-        first_line = file.gets
-        if first_line =~ /^#!/ then
-          # Preserve extra words on shebang line, like "-w".  Thanks RPA.
-          shebang = first_line.sub(/\A\#!.*?ruby\S*/, "#!#{Gem.ruby}")
-        else
-          # Create a plain shebang line.
-          shebang = "#!#{Gem.ruby}"
-        end
-
-        shebang.strip # Avoid nasty ^M issues.
-      end
-    end
-  end
-
-  ##
-  # Return the text for an application file.
-
-  def app_script_text(bin_file_name)
-    <<-TEXT
-#{shebang bin_file_name}
-#
-# This file was generated by RubyGems.
-#
-# The application '#{@spec.name}' is installed as part of a gem, and
-# this file is here to facilitate running it.
-#
-
-require 'rubygems'
-
-version = "#{Gem::Requirement.default}"
-
-if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
-  version = $1
-  ARGV.shift
-end
-
-gem '#{@spec.name}', version
-load '#{bin_file_name}'
-TEXT
-  end
-
-  ##
-  # return the stub script text used to launch the true ruby script
-
-  def windows_stub_script(bindir, bin_file_name)
-    <<-TEXT
- at ECHO OFF
-IF NOT "%~f0" == "~f0" GOTO :WinNT
-@"#{File.basename(Gem.ruby)}" "#{File.join(bindir, bin_file_name)}" %1 %2 %3 %4 %5 %6 %7 %8 %9
-GOTO :EOF
-:WinNT
-@"#{File.basename(Gem.ruby)}" "%~dpn0" %*
-TEXT
-  end
-
-  ##
-  # Builds extensions.  Valid types of extensions are extconf.rb files,
-  # configure scripts and rakefiles or mkrf_conf files.
-
-  def build_extensions
-    return if @spec.extensions.empty?
-    say "Building native extensions.  This could take a while..."
-    start_dir = Dir.pwd
-    dest_path = File.join @gem_dir, @spec.require_paths.first
-    ran_rake = false # only run rake once
-
-    @spec.extensions.each do |extension|
-      break if ran_rake
-      results = []
-
-      builder = case extension
-                when /extconf/ then
-                  Gem::Ext::ExtConfBuilder
-                when /configure/ then
-                  Gem::Ext::ConfigureBuilder
-                when /rakefile/i, /mkrf_conf/i then
-                  ran_rake = true
-                  Gem::Ext::RakeBuilder
-                else
-                  results = ["No builder for extension '#{extension}'"]
-                  nil
-                end
-
-      begin
-        Dir.chdir File.join(@gem_dir, File.dirname(extension))
-        results = builder.build(extension, @gem_dir, dest_path, results)
-
-        say results.join("\n") if Gem.configuration.really_verbose
-
-      rescue => ex
-        results = results.join "\n"
-
-        File.open('gem_make.out', 'wb') { |f| f.puts results }
-
-        message = <<-EOF
-ERROR: Failed to build gem native extension.
-
-#{results}
-
-Gem files will remain installed in #{@gem_dir} for inspection.
-Results logged to #{File.join(Dir.pwd, 'gem_make.out')}
-        EOF
-
-        raise ExtensionBuildError, message
-      ensure
-        Dir.chdir start_dir
-      end
-    end
-  end
-
-  ##
-  # Reads the file index and extracts each file into the gem directory.
-  #
-  # Ensures that files can't be installed outside the gem directory.
-
-  def extract_files
-    expand_and_validate_gem_dir
-
-    raise ArgumentError, "format required to extract from" if @format.nil?
-
-    @format.file_entries.each do |entry, file_data|
-      path = entry['path'].untaint
-
-      if path =~ /\A\// then # for extra sanity
-        raise Gem::InstallError,
-              "attempt to install file into #{entry['path'].inspect}"
-      end
-
-      path = File.expand_path File.join(@gem_dir, path)
-
-      if path !~ /\A#{Regexp.escape @gem_dir}/ then
-        msg = "attempt to install file into %p under %p" %
-                [entry['path'], @gem_dir]
-        raise Gem::InstallError, msg
-      end
-
-      FileUtils.mkdir_p File.dirname(path)
-
-      File.open(path, "wb") do |out|
-        out.write file_data
-      end
-
-      FileUtils.chmod entry['mode'], path
-
-      say path if Gem.configuration.really_verbose
-    end
-  end
-
-  ##
-  # Prefix and suffix the program filename the same as ruby.
-
-  def formatted_program_filename(filename)
-    if @format_executable then
-      self.class.exec_format % File.basename(filename)
-    else
-      filename
-    end
-  end
-
-  private
-
-  ##
-  # HACK Pathname is broken on windows.
-
-  def absolute_path? pathname
-    pathname.absolute? or (Gem.win_platform? and pathname.to_s =~ /\A[a-z]:/i)
-  end
-
-  def expand_and_validate_gem_dir
-    @gem_dir = Pathname.new(@gem_dir).expand_path
-
-    unless absolute_path?(@gem_dir) then # HACK is this possible after #expand_path?
-      raise ArgumentError, "install directory %p not absolute" % @gem_dir
-    end
-
-    @gem_dir = @gem_dir.to_s
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/local_remote_options.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/local_remote_options.rb
deleted file mode 100644
index d77d600..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/local_remote_options.rb
+++ /dev/null
@@ -1,134 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'uri'
-require 'rubygems'
-
-##
-# Mixin methods for local and remote Gem::Command options.
-
-module Gem::LocalRemoteOptions
-
-  ##
-  # Allows OptionParser to handle HTTP URIs.
-
-  def accept_uri_http
-    OptionParser.accept URI::HTTP do |value|
-      begin
-        uri = URI.parse value
-      rescue URI::InvalidURIError
-        raise OptionParser::InvalidArgument, value
-      end
-
-      raise OptionParser::InvalidArgument, value unless uri.scheme == 'http'
-
-      value
-    end
-  end
-
-  ##
-  # Add local/remote options to the command line parser.
-
-  def add_local_remote_options
-    add_option(:"Local/Remote", '-l', '--local',
-               'Restrict operations to the LOCAL domain') do |value, options|
-      options[:domain] = :local
-    end
-
-    add_option(:"Local/Remote", '-r', '--remote',
-      'Restrict operations to the REMOTE domain') do |value, options|
-      options[:domain] = :remote
-    end
-
-    add_option(:"Local/Remote", '-b', '--both',
-               'Allow LOCAL and REMOTE operations') do |value, options|
-      options[:domain] = :both
-    end
-
-    add_bulk_threshold_option
-    add_source_option
-    add_proxy_option
-    add_update_sources_option
-  end
-
-  ##
-  # Add the --bulk-threshold option
-
-  def add_bulk_threshold_option
-    add_option(:"Local/Remote", '-B', '--bulk-threshold COUNT',
-               "Threshold for switching to bulk",
-               "synchronization (default #{Gem.configuration.bulk_threshold})") do
-      |value, options|
-      Gem.configuration.bulk_threshold = value.to_i
-    end
-  end
-
-  ##
-  # Add the --http-proxy option
-
-  def add_proxy_option
-    accept_uri_http
-
-    add_option(:"Local/Remote", '-p', '--[no-]http-proxy [URL]', URI::HTTP,
-               'Use HTTP proxy for remote operations') do |value, options|
-      options[:http_proxy] = (value == false) ? :no_proxy : value
-      Gem.configuration[:http_proxy] = options[:http_proxy]
-    end
-  end
-
-  ##
-  # Add the --source option
-
-  def add_source_option
-    accept_uri_http
-
-    add_option(:"Local/Remote", '--source URL', URI::HTTP,
-               'Use URL as the remote source for gems') do |source, options|
-      source << '/' if source !~ /\/\z/
-
-      if options[:added_source] then
-        Gem.sources << source
-      else
-        options[:added_source] = true
-        Gem.sources.replace [source]
-      end
-    end
-  end
-
-  ##
-  # Add the --source option
-
-  def add_update_sources_option
-
-    add_option(:"Local/Remote", '-u', '--[no-]update-sources',
-               'Update local source cache') do |value, options|
-      Gem.configuration.update_sources = value
-    end
-  end
-
-  ##
-  # Is fetching of local and remote information enabled?
-
-  def both?
-    options[:domain] == :both
-  end
-
-  ##
-  # Is local fetching enabled?
-
-  def local?
-    options[:domain] == :local || options[:domain] == :both
-  end
-
-  ##
-  # Is remote fetching enabled?
-
-  def remote?
-    options[:domain] == :remote || options[:domain] == :both
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/old_format.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/old_format.rb
deleted file mode 100644
index ef5d621..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/old_format.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'yaml'
-require 'zlib'
-
-module Gem
-
-  ##
-  # The format class knows the guts of the RubyGem .gem file format
-  # and provides the capability to read gem files
-  #
-  class OldFormat
-    attr_accessor :spec, :file_entries, :gem_path
-  
-    ##
-    # Constructs an instance of a Format object, representing the gem's
-    # data structure.
-    #
-    # gem:: [String] The file name of the gem
-    #
-    def initialize(gem_path)
-      @gem_path = gem_path
-    end
-    
-    ##
-    # Reads the named gem file and returns a Format object, representing 
-    # the data from the gem file
-    #
-    # file_path:: [String] Path to the gem file
-    #
-    def self.from_file_by_path(file_path)
-      unless File.exist?(file_path)
-        raise Gem::Exception, "Cannot load gem file [#{file_path}]"
-      end
-      File.open(file_path, 'rb') do |file|
-        from_io(file, file_path)
-      end
-    end
-
-    ##
-    # Reads a gem from an io stream and returns a Format object, representing
-    # the data from the gem file
-    #
-    # io:: [IO] Stream from which to read the gem
-    #
-    def self.from_io(io, gem_path="(io)")
-      format = self.new(gem_path)
-      skip_ruby(io)
-      format.spec = read_spec(io)
-      format.file_entries = []
-      read_files_from_gem(io) do |entry, file_data|
-        format.file_entries << [entry, file_data]
-      end
-      format
-    end
-    
-    private 
-    ##
-    # Skips the Ruby self-install header.  After calling this method, the
-    # IO index will be set after the Ruby code.
-    #
-    # file:: [IO] The IO to process (skip the Ruby code)
-    #
-    def self.skip_ruby(file)
-      end_seen = false
-      loop {
-        line = file.gets
-        if(line == nil || line.chomp == "__END__") then
-          end_seen = true
-          break
-        end
-      }
-     if(end_seen == false) then
-       raise Gem::Exception.new("Failed to find end of ruby script while reading gem")
-     end
-    end
-     
-    ##
-    # Reads the specification YAML from the supplied IO and constructs
-    # a Gem::Specification from it.  After calling this method, the
-    # IO index will be set after the specification header.
-    #
-    # file:: [IO] The IO to process
-    #
-    def self.read_spec(file)
-      yaml = ''
-      begin
-        read_until_dashes(file) do |line|
-          yaml << line
-        end
-        Specification.from_yaml(yaml)
-      rescue YAML::Error => e
-        raise Gem::Exception.new("Failed to parse gem specification out of gem file")
-      rescue ArgumentError => e
-        raise Gem::Exception.new("Failed to parse gem specification out of gem file")
-      end
-    end
-    
-    ##
-    # Reads lines from the supplied IO until a end-of-yaml (---) is
-    # reached
-    #
-    # file:: [IO] The IO to process
-    # block:: [String] The read line
-    #
-    def self.read_until_dashes(file)
-      while((line = file.gets) && line.chomp.strip != "---") do
-        yield line
-      end
-    end
-
-
-    ##
-    # Reads the embedded file data from a gem file, yielding an entry
-    # containing metadata about the file and the file contents themselves
-    # for each file that's archived in the gem.
-    # NOTE: Many of these methods should be extracted into some kind of
-    # Gem file read/writer
-    #
-    # gem_file:: [IO] The IO to process
-    #
-    def self.read_files_from_gem(gem_file)
-      errstr = "Error reading files from gem"
-      header_yaml = ''
-      begin
-        self.read_until_dashes(gem_file) do |line|
-          header_yaml << line
-        end
-        header = YAML.load(header_yaml)
-        raise Gem::Exception.new(errstr) unless header
-        header.each do |entry|
-          file_data = ''
-          self.read_until_dashes(gem_file) do |line|
-            file_data << line
-          end
-          yield [entry, Zlib::Inflate.inflate(file_data.strip.unpack("m")[0])]
-        end
-      rescue Exception,Zlib::DataError => e
-        raise Gem::Exception.new(errstr)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package.rb
deleted file mode 100644
index 9cb393b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'fileutils'
-require 'find'
-require 'stringio'
-require 'yaml'
-require 'zlib'
-
-require 'rubygems/digest/md5'
-require 'rubygems/security'
-require 'rubygems/specification'
-
-# Wrapper for FileUtils meant to provide logging and additional operations if
-# needed.
-class Gem::FileOperations
-
-  def initialize(logger = nil)
-    @logger = logger
-  end
-
-  def method_missing(meth, *args, &block)
-    case
-    when FileUtils.respond_to?(meth)
-      @logger.log "#{meth}: #{args}" if @logger
-      FileUtils.send meth, *args, &block
-    when Gem::FileOperations.respond_to?(meth)
-      @logger.log "#{meth}: #{args}" if @logger
-      Gem::FileOperations.send meth, *args, &block
-    else
-      super
-    end
-  end
-
-end
-
-module Gem::Package
-
-  class Error < StandardError; end
-  class NonSeekableIO < Error; end
-  class ClosedIO < Error; end
-  class BadCheckSum < Error; end
-  class TooLongFileName < Error; end
-  class FormatError < Error; end
-
-  def self.open(io, mode = "r", signer = nil, &block)
-    tar_type = case mode
-               when 'r' then TarInput
-               when 'w' then TarOutput
-               else
-                 raise "Unknown Package open mode"
-               end
-
-    tar_type.open(io, signer, &block)
-  end
-
-  def self.pack(src, destname, signer = nil)
-    TarOutput.open(destname, signer) do |outp|
-      dir_class.chdir(src) do
-        outp.metadata = (file_class.read("RPA/metadata") rescue nil)
-        find_class.find('.') do |entry|
-          case
-          when file_class.file?(entry)
-            entry.sub!(%r{\./}, "")
-            next if entry =~ /\ARPA\//
-            stat = File.stat(entry)
-            outp.add_file_simple(entry, stat.mode, stat.size) do |os|
-              file_class.open(entry, "rb") do |f|
-                os.write(f.read(4096)) until f.eof?
-              end
-            end
-          when file_class.dir?(entry)
-            entry.sub!(%r{\./}, "")
-            next if entry == "RPA"
-            outp.mkdir(entry, file_class.stat(entry).mode)
-          else
-            raise "Don't know how to pack this yet!"
-          end
-        end
-      end
-    end
-  end
-
-end
-
-require 'rubygems/package/f_sync_dir'
-require 'rubygems/package/tar_header'
-require 'rubygems/package/tar_input'
-require 'rubygems/package/tar_output'
-require 'rubygems/package/tar_reader'
-require 'rubygems/package/tar_reader/entry'
-require 'rubygems/package/tar_writer'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb
deleted file mode 100644
index 3e2e4a5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/f_sync_dir.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-module Gem::Package::FSyncDir
-
-  private
-
-  ##
-  # make sure this hits the disc
-
-  def fsync_dir(dirname)
-    dir = open dirname, 'r'
-    dir.fsync
-  rescue # ignore IOError if it's an unpatched (old) Ruby
-  ensure
-    dir.close if dir rescue nil
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_header.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_header.rb
deleted file mode 100644
index c194cc0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_header.rb
+++ /dev/null
@@ -1,245 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-##
-#--
-# struct tarfile_entry_posix {
-#   char name[100];     # ASCII + (Z unless filled)
-#   char mode[8];       # 0 padded, octal, null
-#   char uid[8];        # ditto
-#   char gid[8];        # ditto
-#   char size[12];      # 0 padded, octal, null
-#   char mtime[12];     # 0 padded, octal, null
-#   char checksum[8];   # 0 padded, octal, null, space
-#   char typeflag[1];   # file: "0"  dir: "5"
-#   char linkname[100]; # ASCII + (Z unless filled)
-#   char magic[6];      # "ustar\0"
-#   char version[2];    # "00"
-#   char uname[32];     # ASCIIZ
-#   char gname[32];     # ASCIIZ
-#   char devmajor[8];   # 0 padded, octal, null
-#   char devminor[8];   # o padded, octal, null
-#   char prefix[155];   # ASCII + (Z unless filled)
-# };
-#++
-
-class Gem::Package::TarHeader
-
-  FIELDS = [
-    :checksum,
-    :devmajor,
-    :devminor,
-    :gid,
-    :gname,
-    :linkname,
-    :magic,
-    :mode,
-    :mtime,
-    :name,
-    :prefix,
-    :size,
-    :typeflag,
-    :uid,
-    :uname,
-    :version,
-  ]
-
-  PACK_FORMAT = 'a100' + # name
-                'a8'   + # mode
-                'a8'   + # uid
-                'a8'   + # gid
-                'a12'  + # size
-                'a12'  + # mtime
-                'a7a'  + # chksum
-                'a'    + # typeflag
-                'a100' + # linkname
-                'a6'   + # magic
-                'a2'   + # version
-                'a32'  + # uname
-                'a32'  + # gname
-                'a8'   + # devmajor
-                'a8'   + # devminor
-                'a155'   # prefix
-
-  UNPACK_FORMAT = 'A100' + # name
-                  'A8'   + # mode
-                  'A8'   + # uid
-                  'A8'   + # gid
-                  'A12'  + # size
-                  'A12'  + # mtime
-                  'A8'   + # checksum
-                  'A'    + # typeflag
-                  'A100' + # linkname
-                  'A6'   + # magic
-                  'A2'   + # version
-                  'A32'  + # uname
-                  'A32'  + # gname
-                  'A8'   + # devmajor
-                  'A8'   + # devminor
-                  'A155'   # prefix
-
-  attr_reader(*FIELDS)
-
-  def self.from(stream)
-    header = stream.read 512
-    empty = (header == "\0" * 512)
-
-    fields = header.unpack UNPACK_FORMAT
-
-    name     = fields.shift
-    mode     = fields.shift.oct
-    uid      = fields.shift.oct
-    gid      = fields.shift.oct
-    size     = fields.shift.oct
-    mtime    = fields.shift.oct
-    checksum = fields.shift.oct
-    typeflag = fields.shift
-    linkname = fields.shift
-    magic    = fields.shift
-    version  = fields.shift.oct
-    uname    = fields.shift
-    gname    = fields.shift
-    devmajor = fields.shift.oct
-    devminor = fields.shift.oct
-    prefix   = fields.shift
-
-    new :name     => name,
-        :mode     => mode,
-        :uid      => uid,
-        :gid      => gid,
-        :size     => size,
-        :mtime    => mtime,
-        :checksum => checksum,
-        :typeflag => typeflag,
-        :linkname => linkname,
-        :magic    => magic,
-        :version  => version,
-        :uname    => uname,
-        :gname    => gname,
-        :devmajor => devmajor,
-        :devminor => devminor,
-        :prefix   => prefix,
-
-        :empty    => empty
-
-    # HACK unfactor for Rubinius
-    #new :name     => fields.shift,
-    #    :mode     => fields.shift.oct,
-    #    :uid      => fields.shift.oct,
-    #    :gid      => fields.shift.oct,
-    #    :size     => fields.shift.oct,
-    #    :mtime    => fields.shift.oct,
-    #    :checksum => fields.shift.oct,
-    #    :typeflag => fields.shift,
-    #    :linkname => fields.shift,
-    #    :magic    => fields.shift,
-    #    :version  => fields.shift.oct,
-    #    :uname    => fields.shift,
-    #    :gname    => fields.shift,
-    #    :devmajor => fields.shift.oct,
-    #    :devminor => fields.shift.oct,
-    #    :prefix   => fields.shift,
-
-    #    :empty => empty
-  end
-
-  def initialize(vals)
-    unless vals[:name] && vals[:size] && vals[:prefix] && vals[:mode] then
-      raise ArgumentError, ":name, :size, :prefix and :mode required"
-    end
-
-    vals[:uid] ||= 0
-    vals[:gid] ||= 0
-    vals[:mtime] ||= 0
-    vals[:checksum] ||= ""
-    vals[:typeflag] ||= "0"
-    vals[:magic] ||= "ustar"
-    vals[:version] ||= "00"
-    vals[:uname] ||= "wheel"
-    vals[:gname] ||= "wheel"
-    vals[:devmajor] ||= 0
-    vals[:devminor] ||= 0
-
-    FIELDS.each do |name|
-      instance_variable_set "@#{name}", vals[name]
-    end
-
-    @empty = vals[:empty]
-  end
-
-  def empty?
-    @empty
-  end
-
-  def ==(other)
-    self.class === other and
-    @checksum == other.checksum and
-    @devmajor == other.devmajor and
-    @devminor == other.devminor and
-    @gid      == other.gid      and
-    @gname    == other.gname    and
-    @linkname == other.linkname and
-    @magic    == other.magic    and
-    @mode     == other.mode     and
-    @mtime    == other.mtime    and
-    @name     == other.name     and
-    @prefix   == other.prefix   and
-    @size     == other.size     and
-    @typeflag == other.typeflag and
-    @uid      == other.uid      and
-    @uname    == other.uname    and
-    @version  == other.version
-  end
-
-  def to_s
-    update_checksum
-    header
-  end
-
-  def update_checksum
-    header = header " " * 8
-    @checksum = oct calculate_checksum(header), 6
-  end
-
-  private
-
-  def calculate_checksum(header)
-    header.unpack("C*").inject { |a, b| a + b }
-  end
-
-  def header(checksum = @checksum)
-    header = [
-      name,
-      oct(mode, 7),
-      oct(uid, 7),
-      oct(gid, 7),
-      oct(size, 11),
-      oct(mtime, 11),
-      checksum,
-      " ",
-      typeflag,
-      linkname,
-      magic,
-      oct(version, 2),
-      uname,
-      gname,
-      oct(devmajor, 7),
-      oct(devminor, 7),
-      prefix
-    ]
-
-    header = header.pack PACK_FORMAT
-                  
-    header << ("\0" * ((512 - header.size) % 512))
-  end
-
-  def oct(num, len)
-    "%0#{len}o" % num
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_input.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_input.rb
deleted file mode 100644
index 2ed3d6b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_input.rb
+++ /dev/null
@@ -1,219 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarInput
-
-  include Gem::Package::FSyncDir
-  include Enumerable
-
-  attr_reader :metadata
-
-  private_class_method :new
-
-  def self.open(io, security_policy = nil,  &block)
-    is = new io, security_policy
-
-    yield is
-  ensure
-    is.close if is
-  end
-
-  def initialize(io, security_policy = nil)
-    @io = io
-    @tarreader = Gem::Package::TarReader.new @io
-    has_meta = false
-
-    data_sig, meta_sig, data_dgst, meta_dgst = nil, nil, nil, nil
-    dgst_algo = security_policy ? Gem::Security::OPT[:dgst_algo] : nil
-
-    @tarreader.each do |entry|
-      case entry.full_name
-      when "metadata"
-        @metadata = load_gemspec entry.read
-        has_meta = true
-      when "metadata.gz"
-        begin
-          # if we have a security_policy, then pre-read the metadata file
-          # and calculate it's digest
-          sio = nil
-          if security_policy
-            Gem.ensure_ssl_available
-            sio = StringIO.new(entry.read)
-            meta_dgst = dgst_algo.digest(sio.string)
-            sio.rewind
-          end
-
-          gzis = Zlib::GzipReader.new(sio || entry)
-          # YAML wants an instance of IO
-          @metadata = load_gemspec(gzis)
-          has_meta = true
-        ensure
-          gzis.close unless gzis.nil?
-        end
-      when 'metadata.gz.sig'
-        meta_sig = entry.read
-      when 'data.tar.gz.sig'
-        data_sig = entry.read
-      when 'data.tar.gz'
-        if security_policy
-          Gem.ensure_ssl_available
-          data_dgst = dgst_algo.digest(entry.read)
-        end
-      end
-    end
-
-    if security_policy then
-      Gem.ensure_ssl_available
-
-      # map trust policy from string to actual class (or a serialized YAML
-      # file, if that exists)
-      if String === security_policy then
-        if Gem::Security::Policy.key? security_policy then
-          # load one of the pre-defined security policies
-          security_policy = Gem::Security::Policy[security_policy]
-        elsif File.exist? security_policy then
-          # FIXME: this doesn't work yet
-          security_policy = YAML.load File.read(security_policy)
-        else
-          raise Gem::Exception, "Unknown trust policy '#{security_policy}'"
-        end
-      end
-
-      if data_sig && data_dgst && meta_sig && meta_dgst then
-        # the user has a trust policy, and we have a signed gem
-        # file, so use the trust policy to verify the gem signature
-
-        begin
-          security_policy.verify_gem(data_sig, data_dgst, @metadata.cert_chain)
-        rescue Exception => e
-          raise "Couldn't verify data signature: #{e}"
-        end
-
-        begin
-          security_policy.verify_gem(meta_sig, meta_dgst, @metadata.cert_chain)
-        rescue Exception => e
-          raise "Couldn't verify metadata signature: #{e}"
-        end
-      elsif security_policy.only_signed
-        raise Gem::Exception, "Unsigned gem"
-      else
-        # FIXME: should display warning here (trust policy, but
-        # either unsigned or badly signed gem file)
-      end
-    end
-
-    @tarreader.rewind
-    @fileops = Gem::FileOperations.new
-
-    raise Gem::Package::FormatError, "No metadata found!" unless has_meta
-  end
-
-  def close
-    @io.close
-    @tarreader.close
-  end
-
-  def each(&block)
-    @tarreader.each do |entry|
-      next unless entry.full_name == "data.tar.gz"
-      is = zipped_stream entry
-
-      begin
-        Gem::Package::TarReader.new is do |inner|
-          inner.each(&block)
-        end
-      ensure
-        is.close if is
-      end
-    end
-
-    @tarreader.rewind
-  end
-
-  def extract_entry(destdir, entry, expected_md5sum = nil)
-    if entry.directory? then
-      dest = File.join(destdir, entry.full_name)
-
-      if File.dir? dest then
-        @fileops.chmod entry.header.mode, dest, :verbose=>false
-      else
-        @fileops.mkdir_p dest, :mode => entry.header.mode, :verbose => false
-      end
-
-      fsync_dir dest
-      fsync_dir File.join(dest, "..")
-
-      return
-    end
-
-    # it's a file
-    md5 = Digest::MD5.new if expected_md5sum
-    destdir = File.join destdir, File.dirname(entry.full_name)
-    @fileops.mkdir_p destdir, :mode => 0755, :verbose => false
-    destfile = File.join destdir, File.basename(entry.full_name)
-    @fileops.chmod 0600, destfile, :verbose => false rescue nil # Errno::ENOENT
-
-    open destfile, "wb", entry.header.mode do |os|
-      loop do
-        data = entry.read 4096
-        break unless data
-        # HACK shouldn't we check the MD5 before writing to disk?
-        md5 << data if expected_md5sum
-        os.write(data)
-      end
-
-      os.fsync
-    end
-
-    @fileops.chmod entry.header.mode, destfile, :verbose => false
-    fsync_dir File.dirname(destfile)
-    fsync_dir File.join(File.dirname(destfile), "..")
-
-    if expected_md5sum && expected_md5sum != md5.hexdigest then
-      raise Gem::Package::BadCheckSum
-    end
-  end
-
-  # Attempt to YAML-load a gemspec from the given _io_ parameter.  Return
-  # nil if it fails.
-  def load_gemspec(io)
-    Gem::Specification.from_yaml io
-  rescue Gem::Exception
-    nil
-  end
-
-  ##
-  # Return an IO stream for the zipped entry.
-  #
-  # NOTE:  Originally this method used two approaches, Return a GZipReader
-  # directly, or read the GZipReader into a string and return a StringIO on
-  # the string.  The string IO approach was used for versions of ZLib before
-  # 1.2.1 to avoid buffer errors on windows machines.  Then we found that
-  # errors happened with 1.2.1 as well, so we changed the condition.  Then
-  # we discovered errors occurred with versions as late as 1.2.3.  At this
-  # point (after some benchmarking to show we weren't seriously crippling
-  # the unpacking speed) we threw our hands in the air and declared that
-  # this method would use the String IO approach on all platforms at all
-  # times.  And that's the way it is.
-
-  def zipped_stream(entry)
-    if defined? Rubinius then
-      zis = Zlib::GzipReader.new entry
-      dis = zis.read
-      is = StringIO.new(dis)
-    else
-      # This is Jamis Buck's Zlib workaround for some unknown issue
-      entry.read(10) # skip the gzip header
-      zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
-      is = StringIO.new(zis.inflate(entry.read))
-    end
-  ensure
-    zis.finish if zis
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_output.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_output.rb
deleted file mode 100644
index b22f7dd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_output.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-##
-# TarOutput is a wrapper to TarWriter that builds gem-format tar file.
-#
-# Gem-format tar files contain the following files:
-# [data.tar.gz] A gzipped tar file containing the files that compose the gem
-#               which will be extracted into the gem/ dir on installation.
-# [metadata.gz] A YAML format Gem::Specification.
-# [data.tar.gz.sig] A signature for the gem's data.tar.gz.
-# [metadata.gz.sig] A signature for the gem's metadata.gz.
-#
-# See TarOutput::open for usage details.
-
-class Gem::Package::TarOutput
-
-  ##
-  # Creates a new TarOutput which will yield a TarWriter object for the
-  # data.tar.gz portion of a gem-format tar file.
-  #
-  # See #initialize for details on +io+ and +signer+.
-  #
-  # See #add_gem_contents for details on adding metadata to the tar file.
-
-  def self.open(io, signer = nil, &block) # :yield: data_tar_writer
-    tar_outputter = new io, signer
-    tar_outputter.add_gem_contents(&block)
-    tar_outputter.add_metadata
-    tar_outputter.add_signatures
-
-  ensure
-    tar_outputter.close
-  end
-
-  ##
-  # Creates a new TarOutput that will write a gem-format tar file to +io+.  If
-  # +signer+ is given, the data.tar.gz and metadata.gz will be signed and
-  # the signatures will be added to the tar file.
-
-  def initialize(io, signer)
-    @io = io
-    @signer = signer
-
-    @tar_writer = Gem::Package::TarWriter.new @io
-
-    @metadata = nil
-
-    @data_signature = nil
-    @meta_signature = nil
-  end
-
-  ##
-  # Yields a TarWriter for the data.tar.gz inside a gem-format tar file.
-  # The yielded TarWriter has been extended with a #metadata= method for
-  # attaching a YAML format Gem::Specification which will be written by
-  # add_metadata.
-
-  def add_gem_contents
-    @tar_writer.add_file "data.tar.gz", 0644 do |inner|
-      sio = @signer ? StringIO.new : nil
-      Zlib::GzipWriter.wrap(sio || inner) do |os|
-
-        Gem::Package::TarWriter.new os do |data_tar_writer|
-          def data_tar_writer.metadata() @metadata end
-          def data_tar_writer.metadata=(metadata) @metadata = metadata end
-
-          yield data_tar_writer
-
-          @metadata = data_tar_writer.metadata
-        end
-      end
-
-      # if we have a signing key, then sign the data
-      # digest and return the signature
-      if @signer then
-        digest = Gem::Security::OPT[:dgst_algo].digest sio.string
-        @data_signature = @signer.sign digest
-        inner.write sio.string
-      end
-    end
-
-    self
-  end
-
-  ##
-  # Adds metadata.gz to the gem-format tar file which was saved from a
-  # previous #add_gem_contents call.
-
-  def add_metadata
-    return if @metadata.nil?
-
-    @tar_writer.add_file "metadata.gz", 0644 do |io|
-      begin
-        sio = @signer ? StringIO.new : nil
-        gzos = Zlib::GzipWriter.new(sio || io)
-        gzos.write @metadata
-      ensure
-        gzos.flush
-        gzos.finish
-
-        # if we have a signing key, then sign the metadata digest and return
-        # the signature
-        if @signer then
-          digest = Gem::Security::OPT[:dgst_algo].digest sio.string
-          @meta_signature = @signer.sign digest
-          io.write sio.string
-        end
-      end
-    end
-  end
-
-  ##
-  # Adds data.tar.gz.sig and metadata.gz.sig to the gem-format tar files if
-  # a Gem::Security::Signer was sent to initialize.
-
-  def add_signatures
-    if @data_signature then
-      @tar_writer.add_file 'data.tar.gz.sig', 0644 do |io|
-        io.write @data_signature
-      end
-    end
-
-    if @meta_signature then
-      @tar_writer.add_file 'metadata.gz.sig', 0644 do |io|
-        io.write @meta_signature
-      end
-    end
-  end
-
-  ##
-  # Closes the TarOutput.
-
-  def close
-    @tar_writer.close
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb
deleted file mode 100644
index 4aa9c26..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarReader
-
-  include Gem::Package
-
-  class UnexpectedEOF < StandardError; end
-
-  def self.new(io)
-    reader = super
-
-    return reader unless block_given?
-
-    begin
-      yield reader
-    ensure
-      reader.close
-    end
-
-    nil
-  end
-
-  def initialize(io)
-    @io = io
-    @init_pos = io.pos
-  end
-
-  def close
-  end
-
-  def each
-    loop do
-      return if @io.eof?
-
-      header = Gem::Package::TarHeader.from @io
-      return if header.empty?
-
-      entry = Gem::Package::TarReader::Entry.new header, @io
-      size = entry.header.size
-
-      yield entry
-
-      skip = (512 - (size % 512)) % 512
-      pending = size - entry.bytes_read
-
-      begin
-        # avoid reading...
-        @io.seek pending, IO::SEEK_CUR
-        pending = 0
-      rescue Errno::EINVAL, NameError
-        while pending > 0 do
-          bytes_read = @io.read([pending, 4096].min).size
-          raise UnexpectedEOF if @io.eof?
-          pending -= bytes_read
-        end
-      end
-
-      @io.read skip # discard trailing zeros
-
-      # make sure nobody can use #read, #getc or #rewind anymore
-      entry.close
-    end
-  end
-
-  alias each_entry each
-
-  ##
-  # NOTE: Do not call #rewind during #each
-
-  def rewind
-    if @init_pos == 0 then
-      raise Gem::Package::NonSeekableIO unless @io.respond_to? :rewind
-      @io.rewind
-    else
-      raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-      @io.pos = @init_pos
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb
deleted file mode 100644
index dcc6615..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_reader/entry.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarReader::Entry
-
-  attr_reader :header
-
-  def initialize(header, io)
-    @closed = false
-    @header = header
-    @io = io
-    @orig_pos = @io.pos
-    @read = 0
-  end
-
-  def check_closed # :nodoc:
-    raise IOError, "closed #{self.class}" if closed?
-  end
-
-  def bytes_read
-    @read
-  end
-
-  def close
-    @closed = true
-  end
-
-  def closed?
-    @closed
-  end
-
-  def eof?
-    check_closed
-
-    @read >= @header.size
-  end
-
-  def full_name
-    if @header.prefix != "" then
-      File.join @header.prefix, @header.name
-    else
-      @header.name
-    end
-  end
-
-  def getc
-    check_closed
-
-    return nil if @read >= @header.size
-
-    ret = @io.getc
-    @read += 1 if ret
-
-    ret
-  end
-
-  def directory?
-    @header.typeflag == "5"
-  end
-
-  def file?
-    @header.typeflag == "0"
-  end
-
-  def pos
-    check_closed
-
-    bytes_read
-  end
-
-  def read(len = nil)
-    check_closed
-
-    return nil if @read >= @header.size
-
-    len ||= @header.size - @read
-    max_read = [len, @header.size - @read].min
-
-    ret = @io.read max_read
-    @read += ret.size
-
-    ret
-  end
-
-  def rewind
-    check_closed
-
-    raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-
-    @io.pos = @orig_pos
-    @read = 0
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb
deleted file mode 100644
index 6e11440..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/package/tar_writer.rb
+++ /dev/null
@@ -1,180 +0,0 @@
-#++
-# Copyright (C) 2004 Mauricio Julio Fernández Pradier
-# See LICENSE.txt for additional licensing information.
-#--
-
-require 'rubygems/package'
-
-class Gem::Package::TarWriter
-
-  class FileOverflow < StandardError; end
-
-  class BoundedStream
-
-    attr_reader :limit, :written
-
-    def initialize(io, limit)
-      @io = io
-      @limit = limit
-      @written = 0
-    end
-
-    def write(data)
-      if data.size + @written > @limit
-        raise FileOverflow, "You tried to feed more data than fits in the file."
-      end
-      @io.write data
-      @written += data.size
-      data.size
-    end
-
-  end
-
-  class RestrictedStream
-
-    def initialize(io)
-      @io = io
-    end
-
-    def write(data)
-      @io.write data
-    end
-
-  end
-
-  def self.new(io)
-    writer = super
-
-    return writer unless block_given?
-
-    begin
-      yield writer
-    ensure
-      writer.close
-    end
-
-    nil
-  end
-
-  def initialize(io)
-    @io = io
-    @closed = false
-  end
-
-  def add_file(name, mode)
-    check_closed
-
-    raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
-
-    name, prefix = split_name name
-
-    init_pos = @io.pos
-    @io.write "\0" * 512 # placeholder for the header
-
-    yield RestrictedStream.new(@io) if block_given?
-
-    size = @io.pos - init_pos - 512
-
-    remainder = (512 - (size % 512)) % 512
-    @io.write "\0" * remainder
-
-    final_pos = @io.pos
-    @io.pos = init_pos
-
-    header = Gem::Package::TarHeader.new :name => name, :mode => mode,
-                                         :size => size, :prefix => prefix
-
-    @io.write header
-    @io.pos = final_pos
-
-    self
-  end
-
-  def add_file_simple(name, mode, size)
-    check_closed
-
-    name, prefix = split_name name
-
-    header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
-                                         :size => size, :prefix => prefix).to_s
-
-    @io.write header
-    os = BoundedStream.new @io, size
-
-    yield os if block_given?
-
-    min_padding = size - os.written
-    @io.write("\0" * min_padding)
-
-    remainder = (512 - (size % 512)) % 512
-    @io.write("\0" * remainder)
-
-    self
-  end
-
-  def check_closed
-    raise IOError, "closed #{self.class}" if closed?
-  end
-
-  def close
-    check_closed
-
-    @io.write "\0" * 1024
-    flush
-
-    @closed = true
-  end
-
-  def closed?
-    @closed
-  end
-
-  def flush
-    check_closed
-
-    @io.flush if @io.respond_to? :flush
-  end
-
-  def mkdir(name, mode)
-    check_closed
-
-    name, prefix = split_name(name)
-
-    header = Gem::Package::TarHeader.new :name => name, :mode => mode,
-                                         :typeflag => "5", :size => 0,
-                                         :prefix => prefix
-
-    @io.write header
-
-    self
-  end
-
-  def split_name(name) # :nodoc:
-    raise Gem::Package::TooLongFileName if name.size > 256
-
-    if name.size <= 100 then
-      prefix = ""
-    else
-      parts = name.split(/\//)
-      newname = parts.pop
-      nxt = ""
-
-      loop do
-        nxt = parts.pop
-        break if newname.size + 1 + nxt.size > 100
-        newname = nxt + "/" + newname
-      end
-
-      prefix = (parts + [nxt]).join "/"
-      name = newname
-
-      if name.size > 100 or prefix.size > 155 then
-        raise Gem::Package::TooLongFileName 
-      end
-    end
-
-    return name, prefix
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/platform.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/platform.rb
deleted file mode 100644
index 3e5b5cd..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/platform.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-require 'rubygems'
-
-##
-# Available list of platforms for targeting Gem installations.
-
-class Gem::Platform
-
-  @local = nil
-
-  attr_accessor :cpu
-
-  attr_accessor :os
-
-  attr_accessor :version
-
-  def self.local
-    arch = Gem::ConfigMap[:arch]
-    arch = "#{arch}_60" if arch =~ /mswin32$/
-    @local ||= new(arch)
-  end
-
-  def self.match(platform)
-    Gem.platforms.any? do |local_platform|
-      platform.nil? or local_platform == platform or
-        (local_platform != Gem::Platform::RUBY and local_platform =~ platform)
-    end
-  end
-
-  def self.new(arch) # :nodoc:
-    case arch
-    when Gem::Platform::CURRENT then
-      Gem::Platform.local
-    when Gem::Platform::RUBY, nil, '' then
-      Gem::Platform::RUBY
-    else
-      super
-    end
-  end
-
-  def initialize(arch)
-    case arch
-    when Array then
-      @cpu, @os, @version = arch
-    when String then
-      arch = arch.split '-'
-
-      if arch.length > 2 and arch.last !~ /\d/ then # reassemble x86-linux-gnu
-        extra = arch.pop
-        arch.last << "-#{extra}"
-      end
-
-      cpu = arch.shift
-
-      @cpu = case cpu
-             when /i\d86/ then 'x86'
-             else cpu
-             end
-
-      if arch.length == 2 and arch.last =~ /^\d+(\.\d+)?$/ then # for command-line
-        @os, @version = arch
-        return
-      end
-
-      os, = arch
-      @cpu, os = nil, cpu if os.nil? # legacy jruby
-
-      @os, @version = case os
-                      when /aix(\d+)/ then             [ 'aix',       $1  ]
-                      when /cygwin/ then               [ 'cygwin',    nil ]
-                      when /darwin(\d+)?/ then         [ 'darwin',    $1  ]
-                      when /freebsd(\d+)/ then         [ 'freebsd',   $1  ]
-                      when /hpux(\d+)/ then            [ 'hpux',      $1  ]
-                      when /^java$/, /^jruby$/ then    [ 'java',      nil ]
-                      when /^java([\d.]*)/ then        [ 'java',      $1  ]
-                      when /linux/ then                [ 'linux',     $1  ]
-                      when /mingw32/ then              [ 'mingw32',   nil ]
-                      when /(mswin\d+)(\_(\d+))?/ then
-                        os, version = $1, $3
-                        @cpu = 'x86' if @cpu.nil? and os =~ /32$/
-                        [os, version]
-                      when /netbsdelf/ then            [ 'netbsdelf', nil ]
-                      when /openbsd(\d+\.\d+)/ then    [ 'openbsd',   $1  ]
-                      when /solaris(\d+\.\d+)/ then    [ 'solaris',   $1  ]
-                      # test
-                      when /^(\w+_platform)(\d+)/ then [ $1,          $2  ]
-                      else                             [ 'unknown',   nil ]
-                      end
-    when Gem::Platform then
-      @cpu = arch.cpu
-      @os = arch.os
-      @version = arch.version
-    else
-      raise ArgumentError, "invalid argument #{arch.inspect}"
-    end
-  end
-
-  def inspect
-    "#<%s:0x%x @cpu=%p, @os=%p, @version=%p>" % [self.class, object_id, *to_a]
-  end
-
-  def to_a
-    [@cpu, @os, @version]
-  end
-
-  def to_s
-    to_a.compact.join '-'
-  end
-
-  ##
-  # Is +other+ equal to this platform?  Two platforms are equal if they have
-  # the same CPU, OS and version.
-
-  def ==(other)
-    self.class === other and
-      @cpu == other.cpu and @os == other.os and @version == other.version
-  end
-
-  ##
-  # Does +other+ match this platform?  Two platforms match if they have the
-  # same CPU, or either has a CPU of 'universal', they have the same OS, and
-  # they have the same version, or either has no version.
-
-  def ===(other)
-    return nil unless Gem::Platform === other
-
-    # cpu
-    (@cpu == 'universal' or other.cpu == 'universal' or @cpu == other.cpu) and
-
-    # os
-    @os == other.os and
-
-    # version
-    (@version.nil? or other.version.nil? or @version == other.version)
-  end
-
-  ##
-  # Does +other+ match this platform?  If +other+ is a String it will be
-  # converted to a Gem::Platform first.  See #=== for matching rules.
-
-  def =~(other)
-    case other
-    when Gem::Platform then # nop
-    when String then
-      # This data is from http://gems.rubyforge.org/gems/yaml on 19 Aug 2007
-      other = case other
-              when /^i686-darwin(\d)/ then     ['x86',       'darwin',  $1]
-              when /^i\d86-linux/ then         ['x86',       'linux',   nil]
-              when 'java', 'jruby' then        [nil,         'java',    nil]
-              when /mswin32(\_(\d+))?/ then    ['x86',       'mswin32', $2]
-              when 'powerpc-darwin' then       ['powerpc',   'darwin',  nil]
-              when /powerpc-darwin(\d)/ then   ['powerpc',   'darwin',  $1]
-              when /sparc-solaris2.8/ then     ['sparc',     'solaris', '2.8']
-              when /universal-darwin(\d)/ then ['universal', 'darwin',  $1]
-              else                             other
-              end
-
-      other = Gem::Platform.new other
-    else
-      return nil
-    end
-
-    self === other
-  end
-
-  ##
-  # A pure-ruby gem that may use Gem::Specification#extensions to build
-  # binary files.
-
-  RUBY = 'ruby'
-
-  ##
-  # A platform-specific gem that is built for the packaging ruby's platform.
-  # This will be replaced with Gem::Platform::local.
-
-  CURRENT = 'current'
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb
deleted file mode 100644
index 1570740..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-require 'net/http'
-require 'stringio'
-require 'time'
-require 'uri'
-
-require 'rubygems'
-
-##
-# RemoteFetcher handles the details of fetching gems and gem information from
-# a remote source.
-
-class Gem::RemoteFetcher
-
-  include Gem::UserInteraction
-
-  ##
-  # A FetchError exception wraps up the various possible IO and HTTP failures
-  # that could happen while downloading from the internet.
-
-  class FetchError < Gem::Exception
-
-    ##
-    # The URI which was being accessed when the exception happened.
-
-    attr_accessor :uri
-
-    def initialize(message, uri)
-      super message
-      @uri = uri
-    end
-
-    def to_s # :nodoc:
-      "#{super} (#{uri})"
-    end
-
-  end
-
-  @fetcher = nil
-
-  ##
-  # Cached RemoteFetcher instance.
-
-  def self.fetcher
-    @fetcher ||= self.new Gem.configuration[:http_proxy]
-  end
-
-  ##
-  # Initialize a remote fetcher using the source URI and possible proxy
-  # information.
-  #
-  # +proxy+
-  # * [String]: explicit specification of proxy; overrides any environment
-  #             variable setting
-  # * nil: respect environment variables (HTTP_PROXY, HTTP_PROXY_USER,
-  #        HTTP_PROXY_PASS)
-  # * <tt>:no_proxy</tt>: ignore environment variables and _don't_ use a proxy
-
-  def initialize(proxy)
-    Socket.do_not_reverse_lookup = true
-
-    @connections = {}
-    @requests = Hash.new 0
-    @proxy_uri =
-      case proxy
-      when :no_proxy then nil
-      when nil then get_proxy_from_env
-      when URI::HTTP then proxy
-      else URI.parse(proxy)
-      end
-  end
-
-  ##
-  # Moves the gem +spec+ from +source_uri+ to the cache dir unless it is
-  # already there.  If the source_uri is local the gem cache dir copy is
-  # always replaced.
-
-  def download(spec, source_uri, install_dir = Gem.dir)
-    if File.writable?(install_dir)
-      cache_dir = File.join install_dir, 'cache'
-    else
-      cache_dir = File.join(Gem.user_dir, 'cache')
-    end
-
-    gem_file_name = "#{spec.full_name}.gem"
-    local_gem_path = File.join cache_dir, gem_file_name
-
-    FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
-
-    source_uri = URI.parse source_uri unless URI::Generic === source_uri
-    scheme = source_uri.scheme
-
-    # URI.parse gets confused by MS Windows paths with forward slashes.
-    scheme = nil if scheme =~ /^[a-z]$/i
-
-    case scheme
-    when 'http', 'https' then
-      unless File.exist? local_gem_path then
-        begin
-          say "Downloading gem #{gem_file_name}" if
-            Gem.configuration.really_verbose
-
-          remote_gem_path = source_uri + "gems/#{gem_file_name}"
-
-          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
-        rescue Gem::RemoteFetcher::FetchError
-          raise if spec.original_platform == spec.platform
-
-          alternate_name = "#{spec.original_name}.gem"
-
-          say "Failed, downloading gem #{alternate_name}" if
-            Gem.configuration.really_verbose
-
-          remote_gem_path = source_uri + "gems/#{alternate_name}"
-
-          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
-        end
-
-        File.open local_gem_path, 'wb' do |fp|
-          fp.write gem
-        end
-      end
-    when nil, 'file' then # TODO test for local overriding cache
-      begin
-        FileUtils.cp source_uri.to_s, local_gem_path
-      rescue Errno::EACCES
-        local_gem_path = source_uri.to_s
-      end
-
-      say "Using local gem #{local_gem_path}" if
-        Gem.configuration.really_verbose
-    else
-      raise Gem::InstallError, "unsupported URI scheme #{source_uri.scheme}"
-    end
-
-    local_gem_path
-  end
-
-  ##
-  # Downloads +uri+ and returns it as a String.
-
-  def fetch_path(uri, mtime = nil, head = false)
-    data = open_uri_or_path uri, mtime, head
-    data = Gem.gunzip data if data and not head and uri.to_s =~ /gz$/
-    data
-  rescue FetchError
-    raise
-  rescue Timeout::Error
-    raise FetchError.new('timed out', uri)
-  rescue IOError, SocketError, SystemCallError => e
-    raise FetchError.new("#{e.class}: #{e}", uri)
-  end
-
-  ##
-  # Returns the size of +uri+ in bytes.
-
-  def fetch_size(uri) # TODO: phase this out
-    response = fetch_path(uri, nil, true)
-
-    response['content-length'].to_i
-  end
-
-  def escape(str)
-    return unless str
-    URI.escape(str)
-  end
-
-  def unescape(str)
-    return unless str
-    URI.unescape(str)
-  end
-
-  ##
-  # Returns an HTTP proxy URI if one is set in the environment variables.
-
-  def get_proxy_from_env
-    env_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
-
-    return nil if env_proxy.nil? or env_proxy.empty?
-
-    uri = URI.parse env_proxy
-
-    if uri and uri.user.nil? and uri.password.nil? then
-      # Probably we have http_proxy_* variables?
-      uri.user = escape(ENV['http_proxy_user'] || ENV['HTTP_PROXY_USER'])
-      uri.password = escape(ENV['http_proxy_pass'] || ENV['HTTP_PROXY_PASS'])
-    end
-
-    uri
-  end
-
-  ##
-  # Normalize the URI by adding "http://" if it is missing.
-
-  def normalize_uri(uri)
-    (uri =~ /^(https?|ftp|file):/) ? uri : "http://#{uri}"
-  end
-
-  ##
-  # Creates or an HTTP connection based on +uri+, or retrieves an existing
-  # connection, using a proxy if needed.
-
-  def connection_for(uri)
-    net_http_args = [uri.host, uri.port]
-
-    if @proxy_uri then
-      net_http_args += [
-        @proxy_uri.host,
-        @proxy_uri.port,
-        @proxy_uri.user,
-        @proxy_uri.password
-      ]
-    end
-
-    connection_id = net_http_args.join ':'
-    @connections[connection_id] ||= Net::HTTP.new(*net_http_args)
-    connection = @connections[connection_id]
-
-    if uri.scheme == 'https' and not connection.started? then
-      require 'net/https'
-      connection.use_ssl = true
-      connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
-    end
-
-    connection.start unless connection.started?
-
-    connection
-  end
-
-  ##
-  # Read the data from the (source based) URI, but if it is a file:// URI,
-  # read from the filesystem instead.
-
-  def open_uri_or_path(uri, last_modified = nil, head = false, depth = 0)
-    raise "block is dead" if block_given?
-
-    return open(get_file_uri_path(uri)) if file_uri? uri
-
-    uri = URI.parse uri unless URI::Generic === uri
-    raise ArgumentError, 'uri is not an HTTP URI' unless URI::HTTP === uri
-
-    fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
-    response   = request uri, fetch_type, last_modified
-
-    case response
-    when Net::HTTPOK, Net::HTTPNotModified then
-      head ? response : response.body
-    when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
-         Net::HTTPTemporaryRedirect then
-      raise FetchError.new('too many redirects', uri) if depth > 10
-
-      open_uri_or_path(response['Location'], last_modified, head, depth + 1)
-    else
-      raise FetchError.new("bad response #{response.message} #{response.code}", uri)
-    end
-  end
-
-  ##
-  # Performs a Net::HTTP request of type +request_class+ on +uri+ returning
-  # a Net::HTTP response object.  request maintains a table of persistent
-  # connections to reduce connect overhead.
-
-  def request(uri, request_class, last_modified = nil)
-    request = request_class.new uri.request_uri
-
-    unless uri.nil? || uri.user.nil? || uri.user.empty? then
-      request.basic_auth uri.user, uri.password
-    end
-
-    ua = "RubyGems/#{Gem::RubyGemsVersion} #{Gem::Platform.local}"
-    ua << " Ruby/#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
-    ua << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
-    ua << ")"
-
-    request.add_field 'User-Agent', ua
-    request.add_field 'Connection', 'keep-alive'
-    request.add_field 'Keep-Alive', '30'
-
-    if last_modified then
-      last_modified = last_modified.utc
-      request.add_field 'If-Modified-Since', last_modified.rfc2822
-    end
-
-    connection = connection_for uri
-
-    retried = false
-    bad_response = false
-
-    begin
-      @requests[connection.object_id] += 1
-      response = connection.request request
-      say "#{request.method} #{response.code} #{response.message}: #{uri}" if
-        Gem.configuration.really_verbose
-    rescue Net::HTTPBadResponse
-      reset connection
-
-      raise FetchError.new('too many bad responses', uri) if bad_response
-
-      bad_response = true
-      retry
-    # HACK work around EOFError bug in Net::HTTP
-    # NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible
-    # to install gems.
-    rescue EOFError, Errno::ECONNABORTED, Errno::ECONNRESET
-      requests = @requests[connection.object_id]
-      say "connection reset after #{requests} requests, retrying" if
-        Gem.configuration.really_verbose
-
-      raise FetchError.new('too many connection resets', uri) if retried
-
-      reset connection
-
-      retried = true
-      retry
-    end
-
-    response
-  end
-
-  ##
-  # Resets HTTP connection +connection+.
-
-  def reset(connection)
-    @requests.delete connection.object_id
-
-    connection.finish
-    connection.start
-  end
-
-  ##
-  # Checks if the provided string is a file:// URI.
-
-  def file_uri?(uri)
-    uri =~ %r{\Afile://}
-  end
-
-  ##
-  # Given a file:// URI, returns its local path.
-
-  def get_file_uri_path(uri)
-    uri.sub(%r{\Afile://}, '')
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb
deleted file mode 100644
index fe4f593..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/require_paths_builder.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Gem
-  module RequirePathsBuilder
-    def write_require_paths_file_if_needed(spec = @spec, gem_home = @gem_home)
-      return if spec.require_paths == ["lib"] && (spec.bindir.nil? || spec.bindir == "bin")
-      file_name = File.join(gem_home, 'gems', "#{@spec.full_name}", ".require_paths")
-      file_name.untaint
-      File.open(file_name, "w") do |file|
-        spec.require_paths.each do |path|
-          file.puts path
-        end
-        file.puts spec.bindir if spec.bindir
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/requirement.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/requirement.rb
deleted file mode 100644
index c9128b5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/requirement.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems/version'
-
-##
-# Requirement version includes a prefaced comparator in addition
-# to a version number.
-#
-# A Requirement object can actually contain multiple, er,
-# requirements, as in (> 1.2, < 2.0).
-
-class Gem::Requirement
-
-  include Comparable
-
-  attr_reader :requirements
-
-  OPS = {
-    "="  =>  lambda { |v, r| v == r },
-    "!=" =>  lambda { |v, r| v != r },
-    ">"  =>  lambda { |v, r| v > r },
-    "<"  =>  lambda { |v, r| v < r },
-    ">=" =>  lambda { |v, r| v >= r },
-    "<=" =>  lambda { |v, r| v <= r },
-    "~>" =>  lambda { |v, r| v >= r && v < r.bump }
-  }
-
-  OP_RE = /#{OPS.keys.map{ |k| Regexp.quote k }.join '|'}/o
-
-  ##
-  # Factory method to create a Gem::Requirement object.  Input may be a
-  # Version, a String, or nil.  Intended to simplify client code.
-  #
-  # If the input is "weird", the default version requirement is returned.
-
-  def self.create(input)
-    case input
-    when Gem::Requirement then
-      input
-    when Gem::Version, Array then
-      new input
-    else
-      if input.respond_to? :to_str then
-        self.new [input.to_str]
-      else
-        self.default
-      end
-    end
-  end
-
-  ##
-  # A default "version requirement" can surely _only_ be '>= 0'.
-  #--
-  # This comment once said:
-  #
-  # "A default "version requirement" can surely _only_ be '> 0'."
-
-  def self.default
-    self.new ['>= 0']
-  end
-
-  ##
-  # Constructs a Requirement from +requirements+ which can be a String, a
-  # Gem::Version, or an Array of those.  See parse for details on the
-  # formatting of requirement strings.
-
-  def initialize(requirements)
-    @requirements = case requirements
-                    when Array then
-                      requirements.map do |requirement|
-                        parse(requirement)
-                      end
-                    else
-                      [parse(requirements)]
-                    end
-    @version = nil   # Avoid warnings.
-  end
-
-  ##
-  # Marshal raw requirements, rather than the full object
-
-  def marshal_dump # :nodoc:
-    [@requirements]
-  end
-
-  ##
-  # Load custom marshal format
-
-  def marshal_load(array) # :nodoc:
-    @requirements = array[0]
-    @version = nil
-  end
-
-  def to_s # :nodoc:
-    as_list.join(", ")
-  end
-
-  def as_list
-    normalize
-    @requirements.collect { |req|
-      "#{req[0]} #{req[1]}"
-    }
-  end
-
-  def normalize
-    return if not defined? @version or @version.nil?
-    @requirements = [parse(@version)]
-    @nums = nil
-    @version = nil
-    @op = nil
-  end
-
-  ##
-  # True if this requirement satisfied by the Gem::Version +version+.
-
-  def satisfied_by?(version)
-    normalize
-    @requirements.all? { |op, rv| satisfy?(op, version, rv) }
-  end
-
-  ##
-  # Is "+version+ +op+ +required_version+" satisfied?
-
-  def satisfy?(op, version, required_version)
-    OPS[op].call(version, required_version)
-  end
-
-  ##
-  # Parse the version requirement obj returning the operator and version.
-  #
-  # The requirement can be a String or a Gem::Version.  A String can be an
-  # operator (<, <=, =, =>, >, !=, ~>), a version number, or both, operator
-  # first.
-
-  def parse(obj)
-    case obj
-    when /^\s*(#{OP_RE})\s*([0-9.]+)\s*$/o then
-      [$1, Gem::Version.new($2)]
-    when /^\s*([0-9.]+)\s*$/ then
-      ['=', Gem::Version.new($1)]
-    when /^\s*(#{OP_RE})\s*$/o then
-      [$1, Gem::Version.new('0')]
-    when Gem::Version then
-      ['=', obj]
-    else
-      fail ArgumentError, "Illformed requirement [#{obj.inspect}]"
-    end
-  end
-
-  def <=>(other) # :nodoc:
-    to_s <=> other.to_s
-  end
-
-  def hash # :nodoc:
-    to_s.hash
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/rubygems_version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/rubygems_version.rb
deleted file mode 100644
index d7b5622..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/rubygems_version.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# DO NOT EDIT
-# This file is auto-generated by build scripts.
-# See:  rake update_version
-module Gem
-  RubyGemsVersion = '1.3.1'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/security.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/security.rb
deleted file mode 100644
index abf3cf4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/security.rb
+++ /dev/null
@@ -1,786 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/gem_openssl'
-
-# = Signed Gems README
-#
-# == Table of Contents
-# * Overview
-# * Walkthrough
-# * Command-Line Options
-# * OpenSSL Reference
-# * Bugs/TODO
-# * About the Author
-#
-# == Overview
-#
-# Gem::Security implements cryptographic signatures in RubyGems.  The section
-# below is a step-by-step guide to using signed gems and generating your own.
-#
-# == Walkthrough
-#
-# In order to start signing your gems, you'll need to build a private key and
-# a self-signed certificate.  Here's how:
-#
-#   # build a private key and certificate for gemmaster at example.com
-#   $ gem cert --build gemmaster at example.com
-#
-# This could take anywhere from 5 seconds to 10 minutes, depending on the
-# speed of your computer (public key algorithms aren't exactly the speediest
-# crypto algorithms in the world).  When it's finished, you'll see the files
-# "gem-private_key.pem" and "gem-public_cert.pem" in the current directory.
-#
-# First things first: take the "gem-private_key.pem" file and move it
-# somewhere private, preferably a directory only you have access to, a floppy
-# (yuck!), a CD-ROM, or something comparably secure.  Keep your private key
-# hidden; if it's compromised, someone can sign packages as you (note: PKI has
-# ways of mitigating the risk of stolen keys; more on that later).
-#
-# Now, let's sign an existing gem.  I'll be using my Imlib2-Ruby bindings, but
-# you can use whatever gem you'd like.  Open up your existing gemspec file and
-# add the following lines:
-#
-#   # signing key and certificate chain
-#   s.signing_key = '/mnt/floppy/gem-private_key.pem'
-#   s.cert_chain  = ['gem-public_cert.pem']
-#
-# (Be sure to replace "/mnt/floppy" with the ultra-secret path to your private
-# key).
-#
-# After that, go ahead and build your gem as usual.  Congratulations, you've
-# just built your first signed gem!  If you peek inside your gem file, you'll
-# see a couple of new files have been added:
-#
-#   $ tar tf tar tf Imlib2-Ruby-0.5.0.gem
-#   data.tar.gz
-#   data.tar.gz.sig
-#   metadata.gz
-#   metadata.gz.sig
-#
-# Now let's verify the signature.  Go ahead and install the gem, but add the
-# following options: "-P HighSecurity", like this:
-#
-#   # install the gem with using the security policy "HighSecurity"
-#   $ sudo gem install Imlib2-Ruby-0.5.0.gem -P HighSecurity
-#
-# The -P option sets your security policy -- we'll talk about that in just a
-# minute.  Eh, what's this?
-#
-#   Attempting local installation of 'Imlib2-Ruby-0.5.0.gem'
-#   ERROR:  Error installing gem Imlib2-Ruby-0.5.0.gem[.gem]: Couldn't
-#   verify data signature: Untrusted Signing Chain Root: cert =
-#   '/CN=gemmaster/DC=example/DC=com', error = 'path
-#   "/root/.rubygems/trust/cert-15dbb43a6edf6a70a85d4e784e2e45312cff7030.pem"
-#   does not exist'
-#
-# The culprit here is the security policy.  RubyGems has several different
-# security policies.  Let's take a short break and go over the security
-# policies.  Here's a list of the available security policies, and a brief
-# description of each one:
-#
-# * NoSecurity - Well, no security at all.  Signed packages are treated like
-#   unsigned packages.
-# * LowSecurity - Pretty much no security.  If a package is signed then
-#   RubyGems will make sure the signature matches the signing
-#   certificate, and that the signing certificate hasn't expired, but
-#   that's it.  A malicious user could easily circumvent this kind of
-#   security.
-# * MediumSecurity - Better than LowSecurity and NoSecurity, but still
-#   fallible.  Package contents are verified against the signing
-#   certificate, and the signing certificate is checked for validity,
-#   and checked against the rest of the certificate chain (if you don't
-#   know what a certificate chain is, stay tuned, we'll get to that).
-#   The biggest improvement over LowSecurity is that MediumSecurity
-#   won't install packages that are signed by untrusted sources.
-#   Unfortunately, MediumSecurity still isn't totally secure -- a
-#   malicious user can still unpack the gem, strip the signatures, and
-#   distribute the gem unsigned.
-# * HighSecurity - Here's the bugger that got us into this mess.
-#   The HighSecurity policy is identical to the MediumSecurity policy,
-#   except that it does not allow unsigned gems.  A malicious user
-#   doesn't have a whole lot of options here; he can't modify the
-#   package contents without invalidating the signature, and he can't
-#   modify or remove signature or the signing certificate chain, or
-#   RubyGems will simply refuse to install the package.  Oh well, maybe
-#   he'll have better luck causing problems for CPAN users instead :).
-#
-# So, the reason RubyGems refused to install our shiny new signed gem was
-# because it was from an untrusted source.  Well, my code is infallible
-# (hah!), so I'm going to add myself as a trusted source.
-#
-# Here's how:
-#
-#     # add trusted certificate
-#     gem cert --add gem-public_cert.pem
-#
-# I've added my public certificate as a trusted source.  Now I can install
-# packages signed my private key without any hassle.  Let's try the install
-# command above again:
-#
-#   # install the gem with using the HighSecurity policy (and this time
-#   # without any shenanigans)
-#   $ sudo gem install Imlib2-Ruby-0.5.0.gem -P HighSecurity
-#
-# This time RubyGems should accept your signed package and begin installing.
-# While you're waiting for RubyGems to work it's magic, have a look at some of
-# the other security commands:
-#
-#   Usage: gem cert [options]
-#
-#   Options:
-#     -a, --add CERT          Add a trusted certificate.
-#     -l, --list              List trusted certificates.
-#     -r, --remove STRING     Remove trusted certificates containing STRING.
-#     -b, --build EMAIL_ADDR  Build private key and self-signed certificate
-#                             for EMAIL_ADDR.
-#     -C, --certificate CERT  Certificate for --sign command.
-#     -K, --private-key KEY   Private key for --sign command.
-#     -s, --sign NEWCERT      Sign a certificate with my key and certificate.
-#
-# (By the way, you can pull up this list any time you'd like by typing "gem
-# cert --help")
-#
-# Hmm.  We've already covered the "--build" option, and the "--add", "--list",
-# and "--remove" commands seem fairly straightforward; they allow you to add,
-# list, and remove the certificates in your trusted certificate list.  But
-# what's with this "--sign" option?
-#
-# To answer that question, let's take a look at "certificate chains", a
-# concept I mentioned earlier.  There are a couple of problems with
-# self-signed certificates: first of all, self-signed certificates don't offer
-# a whole lot of security.  Sure, the certificate says Yukihiro Matsumoto, but
-# how do I know it was actually generated and signed by matz himself unless he
-# gave me the certificate in person?
-#
-# The second problem is scalability.  Sure, if there are 50 gem authors, then
-# I have 50 trusted certificates, no problem.  What if there are 500 gem
-# authors?  1000?  Having to constantly add new trusted certificates is a
-# pain, and it actually makes the trust system less secure by encouraging
-# RubyGems users to blindly trust new certificates.
-#
-# Here's where certificate chains come in.  A certificate chain establishes an
-# arbitrarily long chain of trust between an issuing certificate and a child
-# certificate.  So instead of trusting certificates on a per-developer basis,
-# we use the PKI concept of certificate chains to build a logical hierarchy of
-# trust.  Here's a hypothetical example of a trust hierarchy based (roughly)
-# on geography:
-#
-#
-#                         --------------------------
-#                         | rubygems at rubyforge.org |
-#                         --------------------------
-#                                     |
-#                   -----------------------------------
-#                   |                                 |
-#       ----------------------------    -----------------------------
-#       | seattle.rb at zenspider.com |    | dcrubyists at richkilmer.com |
-#       ----------------------------    -----------------------------
-#            |                |                 |             |
-#     ---------------   ----------------   -----------   --------------
-#     | alf at seattle |   | bob at portland |   | pabs at dc |   | tomcope at dc |
-#     ---------------   ----------------   -----------   --------------
-#
-#
-# Now, rather than having 4 trusted certificates (one for alf at seattle,
-# bob at portland, pabs at dc, and tomecope at dc), a user could actually get by with 1
-# certificate: the "rubygems at rubyforge.org" certificate.  Here's how it works:
-#
-# I install "Alf2000-Ruby-0.1.0.gem", a package signed by "alf at seattle".  I've
-# never heard of "alf at seattle", but his certificate has a valid signature from
-# the "seattle.rb at zenspider.com" certificate, which in turn has a valid
-# signature from the "rubygems at rubyforge.org" certificate.  Voila!  At this
-# point, it's much more reasonable for me to trust a package signed by
-# "alf at seattle", because I can establish a chain to "rubygems at rubyforge.org",
-# which I do trust.
-#
-# And the "--sign" option allows all this to happen.  A developer creates
-# their build certificate with the "--build" option, then has their
-# certificate signed by taking it with them to their next regional Ruby meetup
-# (in our hypothetical example), and it's signed there by the person holding
-# the regional RubyGems signing certificate, which is signed at the next
-# RubyConf by the holder of the top-level RubyGems certificate.  At each point
-# the issuer runs the same command:
-#
-#   # sign a certificate with the specified key and certificate
-#   # (note that this modifies client_cert.pem!)
-#   $ gem cert -K /mnt/floppy/issuer-priv_key.pem -C issuer-pub_cert.pem
-#      --sign client_cert.pem
-#
-# Then the holder of issued certificate (in this case, our buddy
-# "alf at seattle"), can start using this signed certificate to sign RubyGems.
-# By the way, in order to let everyone else know about his new fancy signed
-# certificate, "alf at seattle" would change his gemspec file to look like this:
-#
-#   # signing key (still kept in an undisclosed location!)
-#   s.signing_key = '/mnt/floppy/alf-private_key.pem'
-#   
-#   # certificate chain (includes the issuer certificate now too)
-#   s.cert_chain  = ['/home/alf/doc/seattlerb-public_cert.pem',
-#                    '/home/alf/doc/alf_at_seattle-public_cert.pem']
-#
-# Obviously, this RubyGems trust infrastructure doesn't exist yet.  Also, in
-# the "real world" issuers actually generate the child certificate from a
-# certificate request, rather than sign an existing certificate.  And our
-# hypothetical infrastructure is missing a certificate revocation system.
-# These are that can be fixed in the future...
-#
-# I'm sure your new signed gem has finished installing by now (unless you're
-# installing rails and all it's dependencies, that is ;D).  At this point you
-# should know how to do all of these new and interesting things:
-#
-# * build a gem signing key and certificate
-# * modify your existing gems to support signing
-# * adjust your security policy
-# * modify your trusted certificate list
-# * sign a certificate
-#
-# If you've got any questions, feel free to contact me at the email address
-# below.  The next couple of sections
-#
-#
-# == Command-Line Options
-#
-# Here's a brief summary of the certificate-related command line options:
-#
-#   gem install
-#     -P, --trust-policy POLICY        Specify gem trust policy.
-#
-#   gem cert
-#     -a, --add CERT                   Add a trusted certificate.
-#     -l, --list                       List trusted certificates.
-#     -r, --remove STRING              Remove trusted certificates containing
-#                                      STRING.
-#     -b, --build EMAIL_ADDR           Build private key and self-signed
-#                                      certificate for EMAIL_ADDR.
-#     -C, --certificate CERT           Certificate for --sign command.
-#     -K, --private-key KEY            Private key for --sign command.
-#     -s, --sign NEWCERT               Sign a certificate with my key and
-#                                      certificate.
-#
-# A more detailed description of each options is available in the walkthrough
-# above.
-#
-#
-# == OpenSSL Reference
-#
-# The .pem files generated by --build and --sign are just basic OpenSSL PEM
-# files.  Here's a couple of useful commands for manipulating them:
-#
-#   # convert a PEM format X509 certificate into DER format:
-#   # (note: Windows .cer files are X509 certificates in DER format)
-#   $ openssl x509 -in input.pem -outform der -out output.der
-#   
-#   # print out the certificate in a human-readable format:
-#   $ openssl x509 -in input.pem -noout -text
-#
-# And you can do the same thing with the private key file as well:
-#
-#   # convert a PEM format RSA key into DER format:
-#   $ openssl rsa -in input_key.pem -outform der -out output_key.der
-#   
-#   # print out the key in a human readable format:
-#   $ openssl rsa -in input_key.pem -noout -text
-#
-# == Bugs/TODO
-#
-# * There's no way to define a system-wide trust list.
-# * custom security policies (from a YAML file, etc)
-# * Simple method to generate a signed certificate request
-# * Support for OCSP, SCVP, CRLs, or some other form of cert
-#   status check (list is in order of preference)
-# * Support for encrypted private keys
-# * Some sort of semi-formal trust hierarchy (see long-winded explanation
-#   above)
-# * Path discovery (for gem certificate chains that don't have a self-signed
-#   root) -- by the way, since we don't have this, THE ROOT OF THE CERTIFICATE
-#   CHAIN MUST BE SELF SIGNED if Policy#verify_root is true (and it is for the
-#   MediumSecurity and HighSecurity policies)
-# * Better explanation of X509 naming (ie, we don't have to use email
-#   addresses)
-# * Possible alternate signing mechanisms (eg, via PGP).  this could be done
-#   pretty easily by adding a :signing_type attribute to the gemspec, then add
-#   the necessary support in other places
-# * Honor AIA field (see note about OCSP above)
-# * Maybe honor restriction extensions?
-# * Might be better to store the certificate chain as a PKCS#7 or PKCS#12
-#   file, instead of an array embedded in the metadata.  ideas?
-# * Possibly embed signature and key algorithms into metadata (right now
-#   they're assumed to be the same as what's set in Gem::Security::OPT)
-#
-# == About the Author
-#
-# Paul Duncan <pabs at pablotron.org>
-# http://pablotron.org/
-
-module Gem::Security
-
-  class Exception < Gem::Exception; end
-
-  #
-  # default options for most of the methods below
-  #
-  OPT = {
-    # private key options
-    :key_algo   => Gem::SSL::PKEY_RSA,
-    :key_size   => 2048,
-
-    # public cert options
-    :cert_age   => 365 * 24 * 3600, # 1 year
-    :dgst_algo  => Gem::SSL::DIGEST_SHA1,
-
-    # x509 certificate extensions
-    :cert_exts  => {
-      'basicConstraints'      => 'CA:FALSE',
-      'subjectKeyIdentifier'  => 'hash',
-      'keyUsage'              => 'keyEncipherment,dataEncipherment,digitalSignature',
-  },
-
-  # save the key and cert to a file in build_self_signed_cert()?
-  :save_key   => true,
-  :save_cert  => true,
-
-  # if you define either of these, then they'll be used instead of
-  # the output_fmt macro below
-  :save_key_path => nil,
-  :save_cert_path => nil,
-
-  # output name format for self-signed certs
-  :output_fmt => 'gem-%s.pem',
-  :munge_re   => Regexp.new(/[^a-z0-9_.-]+/),
-
-  # output directory for trusted certificate checksums
-  :trust_dir => File::join(Gem.user_home, '.gem', 'trust'),
-
-  # default permissions for trust directory and certs
-  :perms => {
-    :trust_dir      => 0700,
-    :trusted_cert   => 0600,
-    :signing_cert   => 0600,
-    :signing_key    => 0600,
-  },
-  }
-
-  #
-  # A Gem::Security::Policy object encapsulates the settings for verifying
-  # signed gem files.  This is the base class.  You can either declare an
-  # instance of this or use one of the preset security policies below.
-  #
-  class Policy
-    attr_accessor :verify_data, :verify_signer, :verify_chain,
-      :verify_root, :only_trusted, :only_signed
-
-    #
-    # Create a new Gem::Security::Policy object with the given mode and
-    # options.
-    #
-    def initialize(policy = {}, opt = {})
-      # set options
-      @opt = Gem::Security::OPT.merge(opt)
-
-      # build policy
-      policy.each_pair do |key, val|
-        case key
-        when :verify_data   then @verify_data   = val
-        when :verify_signer then @verify_signer = val
-        when :verify_chain  then @verify_chain  = val
-        when :verify_root   then @verify_root   = val
-        when :only_trusted  then @only_trusted  = val
-        when :only_signed   then @only_signed   = val
-        end
-      end
-    end
-
-    #
-    # Get the path to the file for this cert.
-    #
-    def self.trusted_cert_path(cert, opt = {})
-      opt = Gem::Security::OPT.merge(opt)
-
-      # get digest algorithm, calculate checksum of root.subject
-      algo = opt[:dgst_algo]
-      dgst = algo.hexdigest(cert.subject.to_s)
-
-      # build path to trusted cert file
-      name = "cert-#{dgst}.pem"
-
-      # join and return path components
-      File::join(opt[:trust_dir], name)
-    end
-
-    #
-    # Verify that the gem data with the given signature and signing chain
-    # matched this security policy at the specified time.
-    #
-    def verify_gem(signature, data, chain, time = Time.now)
-      Gem.ensure_ssl_available
-      cert_class = OpenSSL::X509::Certificate
-      exc = Gem::Security::Exception
-      chain ||= []
-
-      chain = chain.map{ |str| cert_class.new(str) }
-      signer, ch_len = chain[-1], chain.size
-
-      # make sure signature is valid
-      if @verify_data
-        # get digest algorithm (TODO: this should be configurable)
-        dgst = @opt[:dgst_algo]
-
-        # verify the data signature (this is the most important part, so don't
-        # screw it up :D)
-        v = signer.public_key.verify(dgst.new, signature, data)
-        raise exc, "Invalid Gem Signature" unless v
-
-        # make sure the signer is valid
-        if @verify_signer
-          # make sure the signing cert is valid right now
-          v = signer.check_validity(nil, time)
-          raise exc, "Invalid Signature: #{v[:desc]}" unless v[:is_valid]
-        end
-      end
-
-      # make sure the certificate chain is valid
-      if @verify_chain
-        # iterate down over the chain and verify each certificate against it's
-        # issuer
-        (ch_len - 1).downto(1) do |i|
-          issuer, cert = chain[i - 1, 2]
-          v = cert.check_validity(issuer, time)
-          raise exc, "%s: cert = '%s', error = '%s'" % [
-              'Invalid Signing Chain', cert.subject, v[:desc]
-          ] unless v[:is_valid]
-        end
-
-        # verify root of chain
-        if @verify_root
-          # make sure root is self-signed
-          root = chain[0]
-          raise exc, "%s: %s (subject = '%s', issuer = '%s')" % [
-              'Invalid Signing Chain Root',
-              'Subject does not match Issuer for Gem Signing Chain',
-              root.subject.to_s,
-              root.issuer.to_s,
-          ] unless root.issuer.to_s == root.subject.to_s
-
-          # make sure root is valid
-          v = root.check_validity(root, time)
-          raise exc, "%s: cert = '%s', error = '%s'" % [
-              'Invalid Signing Chain Root', root.subject, v[:desc]
-          ] unless v[:is_valid]
-
-          # verify that the chain root is trusted
-          if @only_trusted
-            # get digest algorithm, calculate checksum of root.subject
-            algo = @opt[:dgst_algo]
-            path = Gem::Security::Policy.trusted_cert_path(root, @opt)
-
-            # check to make sure trusted path exists
-            raise exc, "%s: cert = '%s', error = '%s'" % [
-                'Untrusted Signing Chain Root',
-                root.subject.to_s,
-                "path \"#{path}\" does not exist",
-            ] unless File.exist?(path)
-
-            # load calculate digest from saved cert file
-            save_cert = OpenSSL::X509::Certificate.new(File.read(path))
-            save_dgst = algo.digest(save_cert.public_key.to_s)
-
-            # create digest of public key
-            pkey_str = root.public_key.to_s
-            cert_dgst = algo.digest(pkey_str)
-
-            # now compare the two digests, raise exception
-            # if they don't match
-            raise exc, "%s: %s (saved = '%s', root = '%s')" % [
-                'Invalid Signing Chain Root',
-                "Saved checksum doesn't match root checksum",
-                save_dgst, cert_dgst,
-            ] unless save_dgst == cert_dgst
-          end
-        end
-
-        # return the signing chain
-        chain.map { |cert| cert.subject }
-      end
-    end
-  end
-
-  #
-  # No security policy: all package signature checks are disabled.
-  #
-  NoSecurity = Policy.new(
-    :verify_data      => false,
-    :verify_signer    => false,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # AlmostNo security policy: only verify that the signing certificate is the
-  # one that actually signed the data.  Make no attempt to verify the signing
-  # certificate chain.
-  #
-  # This policy is basically useless. better than nothing, but can still be
-  # easily spoofed, and is not recommended.
-  #
-  AlmostNoSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => false,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # Low security policy: only verify that the signing certificate is actually
-  # the gem signer, and that the signing certificate is valid.
-  #
-  # This policy is better than nothing, but can still be easily spoofed, and
-  # is not recommended.
-  #
-  LowSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => false,
-    :verify_root      => false,
-    :only_trusted     => false,
-    :only_signed      => false
-  )
-
-  #
-  # Medium security policy: verify the signing certificate, verify the signing
-  # certificate chain all the way to the root certificate, and only trust root
-  # certificates that we have explicitly allowed trust for.
-  #
-  # This security policy is reasonable, but it allows unsigned packages, so a
-  # malicious person could simply delete the package signature and pass the
-  # gem off as unsigned.
-  #
-  MediumSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => true,
-    :verify_root      => true,
-    :only_trusted     => true,
-    :only_signed      => false
-  )
-
-  #
-  # High security policy: only allow signed gems to be installed, verify the
-  # signing certificate, verify the signing certificate chain all the way to
-  # the root certificate, and only trust root certificates that we have
-  # explicitly allowed trust for.
-  #
-  # This security policy is significantly more difficult to bypass, and offers
-  # a reasonable guarantee that the contents of the gem have not been altered.
-  #
-  HighSecurity = Policy.new(
-    :verify_data      => true,
-    :verify_signer    => true,
-    :verify_chain     => true,
-    :verify_root      => true,
-    :only_trusted     => true,
-    :only_signed      => true
-  )
-
-  #
-  # Hash of configured security policies
-  #
-  Policies = {
-    'NoSecurity'       => NoSecurity,
-    'AlmostNoSecurity' => AlmostNoSecurity,
-    'LowSecurity'      => LowSecurity,
-    'MediumSecurity'   => MediumSecurity,
-    'HighSecurity'     => HighSecurity,
-  }
-
-  #
-  # Sign the cert cert with @signing_key and @signing_cert, using the digest
-  # algorithm opt[:dgst_algo]. Returns the newly signed certificate.
-  #
-  def self.sign_cert(cert, signing_key, signing_cert, opt = {})
-    opt = OPT.merge(opt)
-
-    # set up issuer information
-    cert.issuer = signing_cert.subject
-    cert.sign(signing_key, opt[:dgst_algo].new)
-
-    cert
-  end
-
-  #
-  # Make sure the trust directory exists.  If it does exist, make sure it's
-  # actually a directory.  If not, then create it with the appropriate
-  # permissions.
-  #
-  def self.verify_trust_dir(path, perms)
-    # if the directory exists, then make sure it is in fact a directory.  if
-    # it doesn't exist, then create it with the appropriate permissions
-    if File.exist?(path)
-      # verify that the trust directory is actually a directory
-      unless File.directory?(path)
-        err = "trust directory #{path} isn't a directory"
-        raise Gem::Security::Exception, err
-      end
-    else
-      # trust directory doesn't exist, so create it with permissions
-      FileUtils.mkdir_p(path)
-      FileUtils.chmod(perms, path)
-    end
-  end
-
-  #
-  # Build a certificate from the given DN and private key.
-  #
-  def self.build_cert(name, key, opt = {})
-    Gem.ensure_ssl_available
-    opt = OPT.merge(opt)
-
-    # create new cert
-    ret = OpenSSL::X509::Certificate.new
-
-    # populate cert attributes
-    ret.version = 2
-    ret.serial = 0
-    ret.public_key = key.public_key
-    ret.not_before = Time.now
-    ret.not_after = Time.now + opt[:cert_age]
-    ret.subject = name
-
-    # add certificate extensions
-    ef = OpenSSL::X509::ExtensionFactory.new(nil, ret)
-    ret.extensions = opt[:cert_exts].map { |k, v| ef.create_extension(k, v) }
-
-    # sign cert
-    i_key, i_cert = opt[:issuer_key] || key, opt[:issuer_cert] || ret
-    ret = sign_cert(ret, i_key, i_cert, opt)
-
-    # return cert
-    ret
-  end
-
-  #
-  # Build a self-signed certificate for the given email address.
-  #
-  def self.build_self_signed_cert(email_addr, opt = {})
-    Gem.ensure_ssl_available
-    opt = OPT.merge(opt)
-    path = { :key => nil, :cert => nil }
-
-    # split email address up
-    cn, dcs = email_addr.split('@')
-    dcs = dcs.split('.')
-
-    # munge email CN and DCs
-    cn = cn.gsub(opt[:munge_re], '_')
-    dcs = dcs.map { |dc| dc.gsub(opt[:munge_re], '_') }
-
-    # create DN
-    name = "CN=#{cn}/" << dcs.map { |dc| "DC=#{dc}" }.join('/')
-    name = OpenSSL::X509::Name::parse(name)
-
-    # build private key
-    key = opt[:key_algo].new(opt[:key_size])
-
-    # method name pretty much says it all :)
-    verify_trust_dir(opt[:trust_dir], opt[:perms][:trust_dir])
-
-    # if we're saving the key, then write it out
-    if opt[:save_key]
-      path[:key] = opt[:save_key_path] || (opt[:output_fmt] % 'private_key')
-      File.open(path[:key], 'wb') do |file|
-        file.chmod(opt[:perms][:signing_key])
-        file.write(key.to_pem)
-      end
-    end
-
-    # build self-signed public cert from key
-    cert = build_cert(name, key, opt)
-
-    # if we're saving the cert, then write it out
-    if opt[:save_cert]
-      path[:cert] = opt[:save_cert_path] || (opt[:output_fmt] % 'public_cert')
-      File.open(path[:cert], 'wb') do |file|
-        file.chmod(opt[:perms][:signing_cert])
-        file.write(cert.to_pem)
-      end
-    end
-
-    # return key, cert, and paths (if applicable)
-    { :key => key, :cert => cert,
-      :key_path => path[:key], :cert_path => path[:cert] }
-  end
-
-  #
-  # Add certificate to trusted cert list.
-  #
-  # Note: At the moment these are stored in OPT[:trust_dir], although that
-  # directory may change in the future.
-  #
-  def self.add_trusted_cert(cert, opt = {})
-    opt = OPT.merge(opt)
-
-    # get destination path
-    path = Gem::Security::Policy.trusted_cert_path(cert, opt)
-
-    # verify trust directory (can't write to nowhere, you know)
-    verify_trust_dir(opt[:trust_dir], opt[:perms][:trust_dir])
-
-    # write cert to output file
-    File.open(path, 'wb') do |file|
-      file.chmod(opt[:perms][:trusted_cert])
-      file.write(cert.to_pem)
-    end
-
-    # return nil
-    nil
-  end
-
-  #
-  # Basic OpenSSL-based package signing class.
-  #
-  class Signer
-    attr_accessor :key, :cert_chain
-
-    def initialize(key, cert_chain)
-      Gem.ensure_ssl_available
-      @algo = Gem::Security::OPT[:dgst_algo]
-      @key, @cert_chain = key, cert_chain
-
-      # check key, if it's a file, and if it's key, leave it alone
-      if @key && !@key.kind_of?(OpenSSL::PKey::PKey)
-        @key = OpenSSL::PKey::RSA.new(File.read(@key))
-      end
-
-      # check cert chain, if it's a file, load it, if it's cert data, convert
-      # it into a cert object, and if it's a cert object, leave it alone
-      if @cert_chain
-        @cert_chain = @cert_chain.map do |cert|
-          # check cert, if it's a file, load it, if it's cert data, convert it
-          # into a cert object, and if it's a cert object, leave it alone
-          if cert && !cert.kind_of?(OpenSSL::X509::Certificate)
-            cert = File.read(cert) if File::exist?(cert)
-            cert = OpenSSL::X509::Certificate.new(cert)
-          end
-          cert
-        end
-      end
-    end
-
-    #
-    # Sign data with given digest algorithm
-    #
-    def sign(data)
-      @key.sign(@algo.new, data)
-    end
-
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/server.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/server.rb
deleted file mode 100644
index 2c617ff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/server.rb
+++ /dev/null
@@ -1,629 +0,0 @@
-require 'webrick'
-require 'yaml'
-require 'zlib'
-require 'erb'
-
-require 'rubygems'
-require 'rubygems/doc_manager'
-
-##
-# Gem::Server and allows users to serve gems for consumption by
-# `gem --remote-install`.
-#
-# gem_server starts an HTTP server on the given port and serves the following:
-# * "/" - Browsing of gem spec files for installed gems
-# * "/specs.#{Gem.marshal_version}.gz" - specs name/version/platform index
-# * "/latest_specs.#{Gem.marshal_version}.gz" - latest specs
-#   name/version/platform index
-# * "/quick/" - Individual gemspecs
-# * "/gems" - Direct access to download the installable gems
-# * legacy indexes:
-#   * "/Marshal.#{Gem.marshal_version}" - Full SourceIndex dump of metadata
-#     for installed gems
-#   * "/yaml" - YAML dump of metadata for installed gems - deprecated
-#
-# == Usage
-#
-#   gem_server = Gem::Server.new Gem.dir, 8089, false
-#   gem_server.run
-#
-#--
-# TODO Refactor into a real WEBrick servlet to remove code duplication.
-
-class Gem::Server
-
-  include Gem::UserInteraction
-
-  DOC_TEMPLATE = <<-'WEBPAGE'
-  <?xml version="1.0" encoding="iso-8859-1"?>
-  <!DOCTYPE html
-       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <title>RubyGems Documentation Index</title>
-    <link rel="stylesheet" href="gem-server-rdoc-style.css" type="text/css" media="screen" />
-  </head>
-  <body>
-    <div id="fileHeader">
-      <h1>RubyGems Documentation Index</h1>
-    </div>
-    <!-- banner header -->
-
-  <div id="bodyContent">
-    <div id="contextContent">
-      <div id="description">
-        <h1>Summary</h1>
-  <p>There are <%=values["gem_count"]%> gems installed:</p>
-  <p>
-  <%= values["specs"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
-  <h1>Gems</h1>
-
-  <dl>
-  <% values["specs"].each do |spec| %>
-  	<dt>
-  	<% if spec["first_name_entry"] then %>
-  	  <a name="<%=spec["name"]%>"></a>
-  	<% end %>
-
-  	<b><%=spec["name"]%> <%=spec["version"]%></b>
-
-  	<% if spec["rdoc_installed"] then %>
-  	  <a href="<%=spec["doc_path"]%>">[rdoc]</a>
-  	<% else %>
-  	  <span title="rdoc not installed">[rdoc]</span>
-  	<% end %>
-
-  	<% if spec["homepage"] then %>
-  		<a href="<%=spec["homepage"]%>" title="<%=spec["homepage"]%>">[www]</a>
-  	<% else %>
-  		<span title="no homepage available">[www]</span>
-  	<% end %>
-
-  	<% if spec["has_deps"] then %>
-  	 - depends on
-  		<%= spec["dependencies"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
-  	<% end %>
-  	</dt>
-  	<dd>
-  	<%=spec["summary"]%>
-  	<% if spec["executables"] then %>
-  	  <br/>
-
-  		<% if spec["only_one_executable"] then %>
-  		    Executable is
-  		<% else %>
-  		    Executables are
-  		<%end%>
-
-  		<%= spec["executables"].map { |v| "<span class=\"context-item-name\">#{v["executable"]}</span>"}.join ', ' %>.
-
-  	<%end%>
-  	<br/>
-  	<br/>
-  	</dd>
-  <% end %>
-  </dl>
-
-      </div>
-     </div>
-    </div>
-  <div id="validator-badges">
-    <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
-  </div>
-  </body>
-  </html>
-  WEBPAGE
-
-  # CSS is copy & paste from rdoc-style.css, RDoc V1.0.1 - 20041108
-  RDOC_CSS = <<-RDOCCSS
-body {
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size:   90%;
-    margin: 0;
-    margin-left: 40px;
-    padding: 0;
-    background: white;
-}
-
-h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
-h1 { font-size: 150%; }
-h2,h3,h4 { margin-top: 1em; }
-
-a { background: #eef; color: #039; text-decoration: none; }
-a:hover { background: #039; color: #eef; }
-
-/* Override the base stylesheets Anchor inside a table cell */
-td > a {
-  background: transparent;
-  color: #039;
-  text-decoration: none;
-}
-
-/* and inside a section title */
-.section-title > a {
-  background: transparent;
-  color: #eee;
-  text-decoration: none;
-}
-
-/* === Structural elements =================================== */
-
-div#index {
-    margin: 0;
-    margin-left: -40px;
-    padding: 0;
-    font-size: 90%;
-}
-
-
-div#index a {
-    margin-left: 0.7em;
-}
-
-div#index .section-bar {
-   margin-left: 0px;
-   padding-left: 0.7em;
-   background: #ccc;
-   font-size: small;
-}
-
-
-div#classHeader, div#fileHeader {
-    width: auto;
-    color: white;
-    padding: 0.5em 1.5em 0.5em 1.5em;
-    margin: 0;
-    margin-left: -40px;
-    border-bottom: 3px solid #006;
-}
-
-div#classHeader a, div#fileHeader a {
-    background: inherit;
-    color: white;
-}
-
-div#classHeader td, div#fileHeader td {
-    background: inherit;
-    color: white;
-}
-
-
-div#fileHeader {
-    background: #057;
-}
-
-div#classHeader {
-    background: #048;
-}
-
-
-.class-name-in-header {
-  font-size:  180%;
-  font-weight: bold;
-}
-
-
-div#bodyContent {
-    padding: 0 1.5em 0 1.5em;
-}
-
-div#description {
-    padding: 0.5em 1.5em;
-    background: #efefef;
-    border: 1px dotted #999;
-}
-
-div#description h1,h2,h3,h4,h5,h6 {
-    color: #125;;
-    background: transparent;
-}
-
-div#validator-badges {
-    text-align: center;
-}
-div#validator-badges img { border: 0; }
-
-div#copyright {
-    color: #333;
-    background: #efefef;
-    font: 0.75em sans-serif;
-    margin-top: 5em;
-    margin-bottom: 0;
-    padding: 0.5em 2em;
-}
-
-
-/* === Classes =================================== */
-
-table.header-table {
-    color: white;
-    font-size: small;
-}
-
-.type-note {
-    font-size: small;
-    color: #DEDEDE;
-}
-
-.xxsection-bar {
-    background: #eee;
-    color: #333;
-    padding: 3px;
-}
-
-.section-bar {
-   color: #333;
-   border-bottom: 1px solid #999;
-    margin-left: -20px;
-}
-
-
-.section-title {
-    background: #79a;
-    color: #eee;
-    padding: 3px;
-    margin-top: 2em;
-    margin-left: -30px;
-    border: 1px solid #999;
-}
-
-.top-aligned-row {  vertical-align: top }
-.bottom-aligned-row { vertical-align: bottom }
-
-/* --- Context section classes ----------------------- */
-
-.context-row { }
-.context-item-name { font-family: monospace; font-weight: bold; color: black; }
-.context-item-value { font-size: small; color: #448; }
-.context-item-desc { color: #333; padding-left: 2em; }
-
-/* --- Method classes -------------------------- */
-.method-detail {
-    background: #efefef;
-    padding: 0;
-    margin-top: 0.5em;
-    margin-bottom: 1em;
-    border: 1px dotted #ccc;
-}
-.method-heading {
-  color: black;
-  background: #ccc;
-  border-bottom: 1px solid #666;
-  padding: 0.2em 0.5em 0 0.5em;
-}
-.method-signature { color: black; background: inherit; }
-.method-name { font-weight: bold; }
-.method-args { font-style: italic; }
-.method-description { padding: 0 0.5em 0 0.5em; }
-
-/* --- Source code sections -------------------- */
-
-a.source-toggle { font-size: 90%; }
-div.method-source-code {
-    background: #262626;
-    color: #ffdead;
-    margin: 1em;
-    padding: 0.5em;
-    border: 1px dashed #999;
-    overflow: hidden;
-}
-
-div.method-source-code pre { color: #ffdead; overflow: hidden; }
-
-/* --- Ruby keyword styles --------------------- */
-
-.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
-
-.ruby-constant  { color: #7fffd4; background: transparent; }
-.ruby-keyword { color: #00ffff; background: transparent; }
-.ruby-ivar    { color: #eedd82; background: transparent; }
-.ruby-operator  { color: #00ffee; background: transparent; }
-.ruby-identifier { color: #ffdead; background: transparent; }
-.ruby-node    { color: #ffa07a; background: transparent; }
-.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
-.ruby-regexp  { color: #ffa07a; background: transparent; }
-.ruby-value   { color: #7fffd4; background: transparent; }
-  RDOCCSS
-
-  def self.run(options)
-    new(options[:gemdir], options[:port], options[:daemon]).run
-  end
-
-  def initialize(gem_dir, port, daemon)
-    Socket.do_not_reverse_lookup = true
-
-    @gem_dir = gem_dir
-    @port = port
-    @daemon = daemon
-    logger = WEBrick::Log.new nil, WEBrick::BasicLog::FATAL
-    @server = WEBrick::HTTPServer.new :DoNotListen => true, :Logger => logger
-
-    @spec_dir = File.join @gem_dir, 'specifications'
-
-    unless File.directory? @spec_dir then
-      raise ArgumentError, "#{@gem_dir} does not appear to be a gem repository"
-    end
-
-    @source_index = Gem::SourceIndex.from_gems_in @spec_dir
-  end
-
-  def Marshal(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    index = Marshal.dump @source_index
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = index.length
-      return
-    end
-
-    if req.path =~ /Z$/ then
-      res['content-type'] = 'application/x-deflate'
-      index = Gem.deflate index
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    res.body << index
-  end
-
-  def latest_specs(req, res)
-    @source_index.refresh!
-
-    res['content-type'] = 'application/x-gzip'
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    specs = @source_index.latest_specs.sort.map do |spec|
-      platform = spec.original_platform
-      platform = Gem::Platform::RUBY if platform.nil?
-      [spec.name, spec.version, platform]
-    end
-
-    specs = Marshal.dump specs
-
-    if req.path =~ /\.gz$/ then
-      specs = Gem.gzip specs
-      res['content-type'] = 'application/x-gzip'
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = specs.length
-    else
-      res.body << specs
-    end
-  end
-
-  def quick(req, res)
-    @source_index.refresh!
-
-    res['content-type'] = 'text/plain'
-    res['date'] = File.stat(@spec_dir).mtime
-
-    case req.request_uri.path
-    when '/quick/index' then
-      res.body << @source_index.map { |name,| name }.sort.join("\n")
-    when '/quick/index.rz' then
-      index = @source_index.map { |name,| name }.sort.join("\n")
-      res['content-type'] = 'application/x-deflate'
-      res.body << Gem.deflate(index)
-    when '/quick/latest_index' then
-      index = @source_index.latest_specs.map { |spec| spec.full_name }
-      res.body << index.sort.join("\n")
-    when '/quick/latest_index.rz' then
-      index = @source_index.latest_specs.map { |spec| spec.full_name }
-      res['content-type'] = 'application/x-deflate'
-      res.body << Gem.deflate(index.sort.join("\n"))
-    when %r|^/quick/(Marshal.#{Regexp.escape Gem.marshal_version}/)?(.*?)-([0-9.]+)(-.*?)?\.gemspec\.rz$| then
-      dep = Gem::Dependency.new $2, $3
-      specs = @source_index.search dep
-      marshal_format = $1
-
-      selector = [$2, $3, $4].map { |s| s.inspect }.join ' '
-
-      platform = if $4 then
-                   Gem::Platform.new $4.sub(/^-/, '')
-                 else
-                   Gem::Platform::RUBY
-                 end
-
-      specs = specs.select { |s| s.platform == platform }
-
-      if specs.empty? then
-        res.status = 404
-        res.body = "No gems found matching #{selector}"
-      elsif specs.length > 1 then
-        res.status = 500
-        res.body = "Multiple gems found matching #{selector}"
-      elsif marshal_format then
-        res['content-type'] = 'application/x-deflate'
-        res.body << Gem.deflate(Marshal.dump(specs.first))
-      else # deprecated YAML format
-        res['content-type'] = 'application/x-deflate'
-        res.body << Gem.deflate(specs.first.to_yaml)
-      end
-    else
-      raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found."
-    end
-  end
-
-  def root(req, res)
-    @source_index.refresh!
-    res['date'] = File.stat(@spec_dir).mtime
-
-    raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found." unless
-      req.path == '/'
-
-    specs = []
-    total_file_count = 0
-
-    @source_index.each do |path, spec|
-      total_file_count += spec.files.size
-      deps = spec.dependencies.map do |dep|
-        { "name"    => dep.name,
-          "type"    => dep.type,
-          "version" => dep.version_requirements.to_s, }
-      end
-
-      deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
-      deps.last["is_last"] = true unless deps.empty?
-
-      # executables
-      executables = spec.executables.sort.collect { |exec| {"executable" => exec} }
-      executables = nil if executables.empty?
-      executables.last["is_last"] = true if executables
-
-      specs << {
-        "authors"             => spec.authors.sort.join(", "),
-        "date"                => spec.date.to_s,
-        "dependencies"        => deps,
-        "doc_path"            => "/doc_root/#{spec.full_name}/rdoc/index.html",
-        "executables"         => executables,
-        "only_one_executable" => (executables && executables.size == 1),
-        "full_name"           => spec.full_name,
-        "has_deps"            => !deps.empty?,
-        "homepage"            => spec.homepage,
-        "name"                => spec.name,
-        "rdoc_installed"      => Gem::DocManager.new(spec).rdoc_installed?,
-        "summary"             => spec.summary,
-        "version"             => spec.version.to_s,
-      }
-    end
-
-    specs << {
-      "authors" => "Chad Fowler, Rich Kilmer, Jim Weirich, Eric Hodel and others",
-      "dependencies" => [],
-      "doc_path" => "/doc_root/rubygems-#{Gem::RubyGemsVersion}/rdoc/index.html",
-      "executables" => [{"executable" => 'gem', "is_last" => true}],
-      "only_one_executable" => true,
-      "full_name" => "rubygems-#{Gem::RubyGemsVersion}",
-      "has_deps" => false,
-      "homepage" => "http://rubygems.org/",
-      "name" => 'rubygems',
-      "rdoc_installed" => true,
-      "summary" => "RubyGems itself",
-      "version" => Gem::RubyGemsVersion,
-    }
-
-    specs = specs.sort_by { |spec| [spec["name"].downcase, spec["version"]] }
-    specs.last["is_last"] = true
-
-    # tag all specs with first_name_entry
-    last_spec = nil
-    specs.each do |spec|
-      is_first = last_spec.nil? || (last_spec["name"].downcase != spec["name"].downcase)
-      spec["first_name_entry"] = is_first
-      last_spec = spec
-    end
-
-    # create page from template
-    template = ERB.new(DOC_TEMPLATE)
-    res['content-type'] = 'text/html'
-
-    values = { "gem_count" => specs.size.to_s, "specs" => specs,
-               "total_file_count" => total_file_count.to_s }
-
-    result = template.result binding
-    res.body = result
-  end
-
-  def run
-    @server.listen nil, @port
-
-    say "Starting gem server on http://localhost:#{@port}/"
-
-    WEBrick::Daemon.start if @daemon
-
-    @server.mount_proc "/yaml", method(:yaml)
-    @server.mount_proc "/yaml.Z", method(:yaml)
-
-    @server.mount_proc "/Marshal.#{Gem.marshal_version}", method(:Marshal)
-    @server.mount_proc "/Marshal.#{Gem.marshal_version}.Z", method(:Marshal)
-
-    @server.mount_proc "/specs.#{Gem.marshal_version}", method(:specs)
-    @server.mount_proc "/specs.#{Gem.marshal_version}.gz", method(:specs)
-
-    @server.mount_proc "/latest_specs.#{Gem.marshal_version}",
-                       method(:latest_specs)
-    @server.mount_proc "/latest_specs.#{Gem.marshal_version}.gz",
-                       method(:latest_specs)
-
-    @server.mount_proc "/quick/", method(:quick)
-
-    @server.mount_proc("/gem-server-rdoc-style.css") do |req, res|
-      res['content-type'] = 'text/css'
-      res['date'] = File.stat(@spec_dir).mtime
-      res.body << RDOC_CSS
-    end
-
-    @server.mount_proc "/", method(:root)
-
-    paths = { "/gems" => "/cache/", "/doc_root" => "/doc/" }
-    paths.each do |mount_point, mount_dir|
-      @server.mount(mount_point, WEBrick::HTTPServlet::FileHandler,
-                    File.join(@gem_dir, mount_dir), true)
-    end
-
-    trap("INT") { @server.shutdown; exit! }
-    trap("TERM") { @server.shutdown; exit! }
-
-    @server.start
-  end
-
-  def specs(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    specs = @source_index.sort.map do |_, spec|
-      platform = spec.original_platform
-      platform = Gem::Platform::RUBY if platform.nil?
-      [spec.name, spec.version, platform]
-    end
-
-    specs = Marshal.dump specs
-
-    if req.path =~ /\.gz$/ then
-      specs = Gem.gzip specs
-      res['content-type'] = 'application/x-gzip'
-    else
-      res['content-type'] = 'application/octet-stream'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = specs.length
-    else
-      res.body << specs
-    end
-  end
-
-  def yaml(req, res)
-    @source_index.refresh!
-
-    res['date'] = File.stat(@spec_dir).mtime
-
-    index = @source_index.to_yaml
-
-    if req.path =~ /Z$/ then
-      res['content-type'] = 'application/x-deflate'
-      index = Gem.deflate index
-    else
-      res['content-type'] = 'text/plain'
-    end
-
-    if req.request_method == 'HEAD' then
-      res['content-length'] = index.length
-      return
-    end
-
-    res.body << index
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_index.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_index.rb
deleted file mode 100644
index 8a8db2e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_index.rb
+++ /dev/null
@@ -1,559 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/user_interaction'
-require 'rubygems/specification'
-module Gem
-  autoload(:SpecFetcher, 'rubygems/spec_fetcher')
-end
-
-##
-# The SourceIndex object indexes all the gems available from a
-# particular source (e.g. a list of gem directories, or a remote
-# source).  A SourceIndex maps a gem full name to a gem
-# specification.
-#
-# NOTE:: The class used to be named Cache, but that became
-#        confusing when cached source fetchers where introduced. The
-#        constant Gem::Cache is an alias for this class to allow old
-#        YAMLized source index objects to load properly.
-
-class Gem::SourceIndex
-
-  include Enumerable
-
-  include Gem::UserInteraction
-
-  attr_reader :gems # :nodoc:
-
-  ##
-  # Directories to use to refresh this SourceIndex when calling refresh!
-
-  attr_accessor :spec_dirs
-
-  class << self
-    include Gem::UserInteraction
-
-    ##
-    # Factory method to construct a source index instance for a given
-    # path.
-    #
-    # deprecated::
-    #   If supplied, from_installed_gems will act just like
-    #   +from_gems_in+.  This argument is deprecated and is provided
-    #   just for backwards compatibility, and should not generally
-    #   be used.
-    #
-    # return::
-    #   SourceIndex instance
-
-    def from_installed_gems(*deprecated)
-      if deprecated.empty?
-        from_gems_in(*installed_spec_directories)
-      else
-        from_gems_in(*deprecated) # HACK warn
-      end
-    end
-
-    ##
-    # Returns a list of directories from Gem.path that contain specifications.
-
-    def installed_spec_directories
-      Gem.path.collect { |dir| File.join(dir, "specifications") }
-    end
-
-    ##
-    # Creates a new SourceIndex from the ruby format gem specifications in
-    # +spec_dirs+.
-
-    def from_gems_in(*spec_dirs)
-      source_index = new
-      source_index.spec_dirs = spec_dirs
-      source_index.refresh!
-    end
-
-    ##
-    # Loads a ruby-format specification from +file_name+ and returns the
-    # loaded spec.
-
-    def load_specification(file_name)
-      begin
-        spec_code = if RUBY_VERSION < '1.9' then
-                      File.read file_name
-                    else
-                      File.read file_name, :encoding => 'UTF-8'
-                    end.untaint
-
-        gemspec = eval spec_code, binding, file_name
-
-        if gemspec.is_a?(Gem::Specification)
-          gemspec.loaded_from = file_name
-          return gemspec
-        end
-        alert_warning "File '#{file_name}' does not evaluate to a gem specification"
-      rescue SignalException, SystemExit
-        raise
-      rescue SyntaxError => e
-        alert_warning e
-        alert_warning spec_code
-      rescue Exception => e
-        alert_warning "#{e.inspect}\n#{spec_code}"
-        alert_warning "Invalid .gemspec format in '#{file_name}'"
-      end
-      return nil
-    end
-
-  end
-
-  ##
-  # Constructs a source index instance from the provided
-  # specifications
-  #
-  # specifications::
-  #   [Hash] hash of [Gem name, Gem::Specification] pairs
-
-  def initialize(specifications={})
-    @gems = specifications
-    @spec_dirs = nil
-  end
-
-  ##
-  # Reconstruct the source index from the specifications in +spec_dirs+.
-
-  def load_gems_in(*spec_dirs)
-    @gems.clear
-
-    spec_dirs.reverse_each do |spec_dir|
-      spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
-
-      spec_files.each do |spec_file|
-        gemspec = self.class.load_specification spec_file.untaint
-        add_spec gemspec if gemspec
-      end
-    end
-
-    self
-  end
-
-  ##
-  # Returns an Array specifications for the latest versions of each gem in
-  # this index.
-
-  def latest_specs
-    result = Hash.new { |h,k| h[k] = [] }
-    latest = {}
-
-    sort.each do |_, spec|
-      name = spec.name
-      curr_ver = spec.version
-      prev_ver = latest.key?(name) ? latest[name].version : nil
-
-      next unless prev_ver.nil? or curr_ver >= prev_ver or
-                  latest[name].platform != Gem::Platform::RUBY
-
-      if prev_ver.nil? or
-         (curr_ver > prev_ver and spec.platform == Gem::Platform::RUBY) then
-        result[name].clear
-        latest[name] = spec
-      end
-
-      if spec.platform != Gem::Platform::RUBY then
-        result[name].delete_if do |result_spec|
-          result_spec.platform == spec.platform
-        end
-      end
-
-      result[name] << spec
-    end
-
-    result.values.flatten
-  end
-
-  ##
-  # Add a gem specification to the source index.
-
-  def add_spec(gem_spec)
-    @gems[gem_spec.full_name] = gem_spec
-  end
-
-  ##
-  # Add gem specifications to the source index.
-
-  def add_specs(*gem_specs)
-    gem_specs.each do |spec|
-      add_spec spec
-    end
-  end
-
-  ##
-  # Remove a gem specification named +full_name+.
-
-  def remove_spec(full_name)
-    @gems.delete(full_name)
-  end
-
-  ##
-  # Iterate over the specifications in the source index.
-
-  def each(&block) # :yields: gem.full_name, gem
-    @gems.each(&block)
-  end
-
-  ##
-  # The gem specification given a full gem spec name.
-
-  def specification(full_name)
-    @gems[full_name]
-  end
-
-  ##
-  # The signature for the source index.  Changes in the signature indicate a
-  # change in the index.
-
-  def index_signature
-    require 'rubygems/digest/sha2'
-
-    Gem::SHA256.new.hexdigest(@gems.keys.sort.join(',')).to_s
-  end
-
-  ##
-  # The signature for the given gem specification.
-
-  def gem_signature(gem_full_name)
-    require 'rubygems/digest/sha2'
-
-    Gem::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s
-  end
-
-  def size
-    @gems.size
-  end
-  alias length size
-
-  ##
-  # Find a gem by an exact match on the short name.
-
-  def find_name(gem_name, version_requirement = Gem::Requirement.default)
-    dep = Gem::Dependency.new(/^#{gem_name}$/, version_requirement)
-    search dep
-  end
-
-  ##
-  # Search for a gem by Gem::Dependency +gem_pattern+.  If +only_platform+
-  # is true, only gems matching Gem::Platform.local will be returned.  An
-  # Array of matching Gem::Specification objects is returned.
-  #
-  # For backwards compatibility, a String or Regexp pattern may be passed as
-  # +gem_pattern+, and a Gem::Requirement for +platform_only+.  This
-  # behavior is deprecated and will be removed.
-
-  def search(gem_pattern, platform_only = false)
-    version_requirement = nil
-    only_platform = false
-
-    # TODO - Remove support and warning for legacy arguments after 2008/11
-    unless Gem::Dependency === gem_pattern
-      warn "#{Gem.location_of_caller.join ':'}:Warning: Gem::SourceIndex#search support for #{gem_pattern.class} patterns is deprecated"
-    end
-
-    case gem_pattern
-    when Regexp then
-      version_requirement = platform_only || Gem::Requirement.default
-    when Gem::Dependency then
-      only_platform = platform_only
-      version_requirement = gem_pattern.version_requirements
-      gem_pattern = if Regexp === gem_pattern.name then
-                      gem_pattern.name
-                    elsif gem_pattern.name.empty? then
-                      //
-                    else
-                      /^#{Regexp.escape gem_pattern.name}$/
-                    end
-    else
-      version_requirement = platform_only || Gem::Requirement.default
-      gem_pattern = /#{gem_pattern}/i
-    end
-
-    unless Gem::Requirement === version_requirement then
-      version_requirement = Gem::Requirement.create version_requirement
-    end
-
-    specs = @gems.values.select do |spec|
-      spec.name =~ gem_pattern and
-        version_requirement.satisfied_by? spec.version
-    end
-
-    if only_platform then
-      specs = specs.select do |spec|
-        Gem::Platform.match spec.platform
-      end
-    end
-
-    specs.sort_by { |s| s.sort_obj }
-  end
-
-  ##
-  # Replaces the gems in the source index from specifications in the
-  # directories this source index was created from.  Raises an exception if
-  # this source index wasn't created from a directory (via from_gems_in or
-  # from_installed_gems, or having spec_dirs set).
-
-  def refresh!
-    raise 'source index not created from disk' if @spec_dirs.nil?
-    load_gems_in(*@spec_dirs)
-  end
-
-  ##
-  # Returns an Array of Gem::Specifications that are not up to date.
-
-  def outdated
-    outdateds = []
-
-    latest_specs.each do |local|
-      dependency = Gem::Dependency.new local.name, ">= #{local.version}"
-
-      begin
-        fetcher = Gem::SpecFetcher.fetcher
-        remotes = fetcher.find_matching dependency
-        remotes = remotes.map { |(name, version,_),_| version }
-      rescue Gem::RemoteFetcher::FetchError => e
-        raise unless fetcher.warn_legacy e do
-          require 'rubygems/source_info_cache'
-
-          specs = Gem::SourceInfoCache.search_with_source dependency, true
-
-          remotes = specs.map { |spec,| spec.version }
-        end
-      end
-
-      latest = remotes.sort.last
-
-      outdateds << local.name if latest and local.version < latest
-    end
-
-    outdateds
-  end
-
-  ##
-  # Updates this SourceIndex from +source_uri+.  If +all+ is false, only the
-  # latest gems are fetched.
-
-  def update(source_uri, all)
-    source_uri = URI.parse source_uri unless URI::Generic === source_uri
-    source_uri.path += '/' unless source_uri.path =~ /\/$/
-
-    use_incremental = false
-
-    begin
-      gem_names = fetch_quick_index source_uri, all
-      remove_extra gem_names
-      missing_gems = find_missing gem_names
-
-      return false if missing_gems.size.zero?
-
-      say "Missing metadata for #{missing_gems.size} gems" if
-      missing_gems.size > 0 and Gem.configuration.really_verbose
-
-      use_incremental = missing_gems.size <= Gem.configuration.bulk_threshold
-    rescue Gem::OperationNotSupportedError => ex
-      alert_error "Falling back to bulk fetch: #{ex.message}" if
-      Gem.configuration.really_verbose
-      use_incremental = false
-    end
-
-    if use_incremental then
-      update_with_missing(source_uri, missing_gems)
-    else
-      new_index = fetch_bulk_index(source_uri)
-      @gems.replace(new_index.gems)
-    end
-
-    true
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and @gems == other.gems 
-  end
-
-  def dump
-    Marshal.dump(self)
-  end
-
-  private
-
-  def fetcher
-    require 'rubygems/remote_fetcher'
-
-    Gem::RemoteFetcher.fetcher
-  end
-
-  def fetch_index_from(source_uri)
-    @fetch_error = nil
-
-    indexes = %W[
-        Marshal.#{Gem.marshal_version}.Z
-        Marshal.#{Gem.marshal_version}
-        yaml.Z
-        yaml
-      ]
-
-    indexes.each do |name|
-      spec_data = nil
-      index = source_uri + name
-      begin
-        spec_data = fetcher.fetch_path index
-        spec_data = unzip(spec_data) if name =~ /\.Z$/
-
-        if name =~ /Marshal/ then
-          return Marshal.load(spec_data)
-        else
-          return YAML.load(spec_data)
-        end
-      rescue => e
-        if Gem.configuration.really_verbose then
-          alert_error "Unable to fetch #{name}: #{e.message}"
-        end
-
-        @fetch_error = e
-      end
-    end
-
-    nil
-  end
-
-  def fetch_bulk_index(source_uri)
-    say "Bulk updating Gem source index for: #{source_uri}" if
-      Gem.configuration.verbose
-
-    index = fetch_index_from(source_uri)
-    if index.nil? then
-      raise Gem::RemoteSourceException,
-              "Error fetching remote gem cache: #{@fetch_error}"
-    end
-    @fetch_error = nil
-    index
-  end
-
-  ##
-  # Get the quick index needed for incremental updates.
-
-  def fetch_quick_index(source_uri, all)
-    index = all ? 'index' : 'latest_index'
-
-    zipped_index = fetcher.fetch_path source_uri + "quick/#{index}.rz"
-
-    unzip(zipped_index).split("\n")
-  rescue ::Exception => e
-    unless all then
-      say "Latest index not found, using quick index" if
-        Gem.configuration.really_verbose
-
-      fetch_quick_index source_uri, true
-    else
-      raise Gem::OperationNotSupportedError,
-            "No quick index found: #{e.message}"
-    end
-  end
-
-  ##
-  # Make a list of full names for all the missing gemspecs.
-
-  def find_missing(spec_names)
-    unless defined? @originals then
-      @originals = {}
-      each do |full_name, spec|
-        @originals[spec.original_name] = spec
-      end
-    end
-
-    spec_names.find_all { |full_name|
-      @originals[full_name].nil?
-    }
-  end
-
-  def remove_extra(spec_names)
-    dictionary = spec_names.inject({}) { |h, k| h[k] = true; h }
-    each do |name, spec|
-      remove_spec name unless dictionary.include? spec.original_name
-    end
-  end
-
-  ##
-  # Unzip the given string.
-
-  def unzip(string)
-    require 'zlib'
-    Gem.inflate string
-  end
-
-  ##
-  # Tries to fetch Marshal representation first, then YAML
-
-  def fetch_single_spec(source_uri, spec_name)
-    @fetch_error = nil
-
-    begin
-      marshal_uri = source_uri + "quick/Marshal.#{Gem.marshal_version}/#{spec_name}.gemspec.rz"
-      zipped = fetcher.fetch_path marshal_uri
-      return Marshal.load(unzip(zipped))
-    rescue => ex
-      @fetch_error = ex
-
-      if Gem.configuration.really_verbose then
-        say "unable to fetch marshal gemspec #{marshal_uri}: #{ex.class} - #{ex}"
-      end
-    end
-
-    begin
-      yaml_uri = source_uri + "quick/#{spec_name}.gemspec.rz"
-      zipped = fetcher.fetch_path yaml_uri
-      return YAML.load(unzip(zipped))
-    rescue => ex
-      @fetch_error = ex
-      if Gem.configuration.really_verbose then
-        say "unable to fetch YAML gemspec #{yaml_uri}: #{ex.class} - #{ex}"
-      end
-    end
-
-    nil
-  end
-
-  ##
-  # Update the cached source index with the missing names.
-
-  def update_with_missing(source_uri, missing_names)
-    progress = ui.progress_reporter(missing_names.size,
-        "Updating metadata for #{missing_names.size} gems from #{source_uri}")
-    missing_names.each do |spec_name|
-      gemspec = fetch_single_spec(source_uri, spec_name)
-      if gemspec.nil? then
-        ui.say "Failed to download spec #{spec_name} from #{source_uri}:\n" \
-                 "\t#{@fetch_error.message}"
-      else
-        add_spec gemspec
-        progress.updated spec_name
-      end
-      @fetch_error = nil
-    end
-    progress.done
-    progress.count
-  end
-
-end
-
-module Gem
-
-  # :stopdoc:
-
-  # Cache is an alias for SourceIndex to allow older YAMLized source index
-  # objects to load properly.
-  Cache = SourceIndex
-
-  # :startdoc:
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache.rb
deleted file mode 100644
index fdb30ad..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache.rb
+++ /dev/null
@@ -1,393 +0,0 @@
-require 'fileutils'
-
-require 'rubygems'
-require 'rubygems/source_info_cache_entry'
-require 'rubygems/user_interaction'
-
-##
-# SourceInfoCache stores a copy of the gem index for each gem source.
-#
-# There are two possible cache locations, the system cache and the user cache:
-# * The system cache is preferred if it is writable or can be created.
-# * The user cache is used otherwise
-#
-# Once a cache is selected, it will be used for all operations.
-# SourceInfoCache will not switch between cache files dynamically.
-#
-# Cache data is a Hash mapping a source URI to a SourceInfoCacheEntry.
-#
-#--
-# To keep things straight, this is how the cache objects all fit together:
-#
-#   Gem::SourceInfoCache
-#     @cache_data = {
-#       source_uri => Gem::SourceInfoCacheEntry
-#         @size = source index size
-#         @source_index = Gem::SourceIndex
-#       ...
-#     }
-
-class Gem::SourceInfoCache
-
-  include Gem::UserInteraction
-
-  ##
-  # The singleton Gem::SourceInfoCache.  If +all+ is true, a full refresh will
-  # be performed if the singleton instance is being initialized.
-
-  def self.cache(all = false)
-    return @cache if @cache
-    @cache = new
-    @cache.refresh all if Gem.configuration.update_sources
-    @cache
-  end
-
-  def self.cache_data
-    cache.cache_data
-  end
-
-  ##
-  # The name of the system cache file.
-
-  def self.latest_system_cache_file
-    File.join File.dirname(system_cache_file),
-              "latest_#{File.basename system_cache_file}"
-  end
-
-  ##
-  # The name of the latest user cache file.
-
-  def self.latest_user_cache_file
-    File.join File.dirname(user_cache_file),
-              "latest_#{File.basename user_cache_file}"
-  end
-
-  ##
-  # Reset all singletons, discarding any changes.
-
-  def self.reset
-    @cache = nil
-    @system_cache_file = nil
-    @user_cache_file = nil
-  end
-
-  ##
-  # Search all source indexes.  See Gem::SourceInfoCache#search.
-
-  def self.search(*args)
-    cache.search(*args)
-  end
-
-  ##
-  # Search all source indexes returning the source_uri.  See
-  # Gem::SourceInfoCache#search_with_source.
-
-  def self.search_with_source(*args)
-    cache.search_with_source(*args)
-  end
-
-  ##
-  # The name of the system cache file. (class method)
-
-  def self.system_cache_file
-    @system_cache_file ||= Gem.default_system_source_cache_dir
-  end
-
-  ##
-  # The name of the user cache file.
-
-  def self.user_cache_file
-    @user_cache_file ||=
-      ENV['GEMCACHE'] || Gem.default_user_source_cache_dir
-  end
-
-  def initialize # :nodoc:
-    @cache_data = nil
-    @cache_file = nil
-    @dirty = false
-    @only_latest = true
-  end
-
-  ##
-  # The most recent cache data.
-
-  def cache_data
-    return @cache_data if @cache_data
-    cache_file # HACK writable check
-
-    @only_latest = true
-
-    @cache_data = read_cache_data latest_cache_file
-
-    @cache_data
-  end
-
-  ##
-  # The name of the cache file.
-
-  def cache_file
-    return @cache_file if @cache_file
-    @cache_file = (try_file(system_cache_file) or
-      try_file(user_cache_file) or
-      raise "unable to locate a writable cache file")
-  end
-
-  ##
-  # Write the cache to a local file (if it is dirty).
-
-  def flush
-    write_cache if @dirty
-    @dirty = false
-  end
-
-  def latest_cache_data
-    latest_cache_data = {}
-
-    cache_data.each do |repo, sice|
-      latest = sice.source_index.latest_specs
-
-      new_si = Gem::SourceIndex.new
-      new_si.add_specs(*latest)
-
-      latest_sice = Gem::SourceInfoCacheEntry.new new_si, sice.size
-      latest_cache_data[repo] = latest_sice
-    end
-
-    latest_cache_data
-  end
-
-  ##
-  # The name of the latest cache file.
-
-  def latest_cache_file
-    File.join File.dirname(cache_file), "latest_#{File.basename cache_file}"
-  end
-
-  ##
-  # The name of the latest system cache file.
-
-  def latest_system_cache_file
-    self.class.latest_system_cache_file
-  end
-
-  ##
-  # The name of the latest user cache file.
-
-  def latest_user_cache_file
-    self.class.latest_user_cache_file
-  end
-
-  ##
-  # Merges the complete cache file into this Gem::SourceInfoCache.
-
-  def read_all_cache_data
-    if @only_latest then
-      @only_latest = false
-      all_data = read_cache_data cache_file
-
-      cache_data.update all_data do |source_uri, latest_sice, all_sice|
-        all_sice.source_index.gems.update latest_sice.source_index.gems
-
-        Gem::SourceInfoCacheEntry.new all_sice.source_index, latest_sice.size
-      end
-
-      begin
-        refresh true
-      rescue Gem::RemoteFetcher::FetchError
-      end
-    end
-  end
-
-  ##
-  # Reads cached data from +file+.
-
-  def read_cache_data(file)
-    # Marshal loads 30-40% faster from a String, and 2MB on 20061116 is small
-    data = open file, 'rb' do |fp| fp.read end
-    cache_data = Marshal.load data
-
-    cache_data.each do |url, sice|
-      next unless sice.is_a?(Hash)
-      update
-
-      cache = sice['cache']
-      size  = sice['size']
-
-      if cache.is_a?(Gem::SourceIndex) and size.is_a?(Numeric) then
-        new_sice = Gem::SourceInfoCacheEntry.new cache, size
-        cache_data[url] = new_sice
-      else # irreperable, force refetch.
-        reset_cache_for url, cache_data
-      end
-    end
-
-    cache_data
-  rescue Errno::ENOENT
-    {}
-  rescue => e
-    if Gem.configuration.really_verbose then
-      say "Exception during cache_data handling: #{e.class} - #{e}"
-      say "Cache file was: #{file}"
-      say "\t#{e.backtrace.join "\n\t"}"
-    end
-
-    {}
-  end
-
-  ##
-  # Refreshes each source in the cache from its repository.  If +all+ is
-  # false, only latest gems are updated.
-
-  def refresh(all)
-    Gem.sources.each do |source_uri|
-      cache_entry = cache_data[source_uri]
-      if cache_entry.nil? then
-        cache_entry = Gem::SourceInfoCacheEntry.new nil, 0
-        cache_data[source_uri] = cache_entry
-      end
-
-      update if cache_entry.refresh source_uri, all
-    end
-
-    flush
-  end
-
-  def reset_cache_for(url, cache_data)
-    say "Reseting cache for #{url}" if Gem.configuration.really_verbose
-
-    sice = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0
-    sice.refresh url, false # HACK may be unnecessary, see ::cache and #refresh
-
-    cache_data[url] = sice
-    cache_data
-  end
-
-  def reset_cache_data
-    @cache_data = nil
-    @only_latest = true
-  end
-
-  ##
-  # Force cache file to be reset, useful for integration testing of rubygems
-
-  def reset_cache_file
-    @cache_file = nil
-  end
-
-  ##
-  # Searches all source indexes.  See Gem::SourceIndex#search for details on
-  # +pattern+ and +platform_only+.  If +all+ is set to true, the full index
-  # will be loaded before searching.
-
-  def search(pattern, platform_only = false, all = false)
-    read_all_cache_data if all
-
-    cache_data.map do |source_uri, sic_entry|
-      next unless Gem.sources.include? source_uri
-      # TODO - Remove this gunk after 2008/11
-      unless pattern.kind_of?(Gem::Dependency)
-        pattern = Gem::Dependency.new(pattern, Gem::Requirement.default) 
-      end
-      sic_entry.source_index.search pattern, platform_only
-    end.flatten.compact
-  end
-
-  # Searches all source indexes for +pattern+.  If +only_platform+ is true,
-  # only gems matching Gem.platforms will be selected.  Returns an Array of
-  # pairs containing the Gem::Specification found and the source_uri it was
-  # found at.
-  def search_with_source(pattern, only_platform = false, all = false)
-    read_all_cache_data if all
-
-    results = []
-
-    cache_data.map do |source_uri, sic_entry|
-      next unless Gem.sources.include? source_uri
-
-      # TODO - Remove this gunk after 2008/11
-      unless pattern.kind_of?(Gem::Dependency)
-        pattern = Gem::Dependency.new(pattern, Gem::Requirement.default) 
-      end
-
-      sic_entry.source_index.search(pattern, only_platform).each do |spec|
-        results << [spec, source_uri]
-      end
-    end
-
-    results
-  end
-
-  ##
-  # Set the source info cache data directly.  This is mainly used for unit
-  # testing when we don't want to read a file system to grab the cached source
-  # index information.  The +hash+ should map a source URL into a
-  # SourceInfoCacheEntry.
-
-  def set_cache_data(hash)
-    @cache_data = hash
-    update
-  end
-
-  ##
-  # The name of the system cache file.
-
-  def system_cache_file
-    self.class.system_cache_file
-  end
-
-  ##
-  # Determine if +path+ is a candidate for a cache file.  Returns +path+ if
-  # it is, nil if not.
-
-  def try_file(path)
-    return path if File.writable? path
-    return nil if File.exist? path
-
-    dir = File.dirname path
-
-    unless File.exist? dir then
-      begin
-        FileUtils.mkdir_p dir
-      rescue RuntimeError, SystemCallError
-        return nil
-      end
-    end
-
-    return path if File.writable? dir
-
-    nil
-  end
-
-  ##
-  # Mark the cache as updated (i.e. dirty).
-
-  def update
-    @dirty = true
-  end
-
-  ##
-  # The name of the user cache file.
-
-  def user_cache_file
-    self.class.user_cache_file
-  end
-
-  ##
-  # Write data to the proper cache files.
-
-  def write_cache
-    if not File.exist?(cache_file) or not @only_latest then
-      open cache_file, 'wb' do |io|
-        io.write Marshal.dump(cache_data)
-      end
-    end
-
-    open latest_cache_file, 'wb' do |io|
-      io.write Marshal.dump(latest_cache_data)
-    end
-  end
-
-  reset
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb
deleted file mode 100644
index c3f75e5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/source_info_cache_entry.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rubygems'
-require 'rubygems/source_index'
-require 'rubygems/remote_fetcher'
-
-##
-# Entries held by a SourceInfoCache.
-
-class Gem::SourceInfoCacheEntry
-
-  ##
-  # The source index for this cache entry.
-
-  attr_reader :source_index
-
-  ##
-  # The size of the of the source entry.  Used to determine if the
-  # source index has changed.
-
-  attr_reader :size
-
-  ##
-  # Create a cache entry.
-
-  def initialize(si, size)
-    @source_index = si || Gem::SourceIndex.new({})
-    @size = size
-    @all = false
-  end
-
-  def refresh(source_uri, all)
-    begin
-      marshal_uri = URI.join source_uri.to_s, "Marshal.#{Gem.marshal_version}"
-      remote_size = Gem::RemoteFetcher.fetcher.fetch_size marshal_uri
-    rescue Gem::RemoteSourceException
-      yaml_uri = URI.join source_uri.to_s, 'yaml'
-      remote_size = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri
-    end
-
-    # TODO Use index_signature instead of size?
-    return false if @size == remote_size and @all
-
-    updated = @source_index.update source_uri, all
-    @size = remote_size
-    @all = all
-
-    updated
-  end
-
-  def ==(other) # :nodoc:
-    self.class === other and
-    @size == other.size and
-    @source_index == other.source_index
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb
deleted file mode 100644
index a1fc82e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb
+++ /dev/null
@@ -1,249 +0,0 @@
-require 'zlib'
-
-require 'rubygems'
-require 'rubygems/remote_fetcher'
-require 'rubygems/user_interaction'
-
-##
-# SpecFetcher handles metadata updates from remote gem repositories.
-
-class Gem::SpecFetcher
-
-  include Gem::UserInteraction
-
-  ##
-  # The SpecFetcher cache dir.
-
-  attr_reader :dir # :nodoc:
-
-  ##
-  # Cache of latest specs
-
-  attr_reader :latest_specs # :nodoc:
-
-  ##
-  # Cache of all spces
-
-  attr_reader :specs # :nodoc:
-
-  @fetcher = nil
-
-  def self.fetcher
-    @fetcher ||= new
-  end
-
-  def self.fetcher=(fetcher) # :nodoc:
-    @fetcher = fetcher
-  end
-
-  def initialize
-    @dir = File.join Gem.user_home, '.gem', 'specs'
-    @update_cache = File.stat(Gem.user_home).uid == Process.uid
-
-    @specs = {}
-    @latest_specs = {}
-
-    @fetcher = Gem::RemoteFetcher.fetcher
-  end
-
-  ##
-  # Retuns the local directory to write +uri+ to.
-
-  def cache_dir(uri)
-    File.join @dir, "#{uri.host}%#{uri.port}", File.dirname(uri.path)
-  end
-
-  ##
-  # Fetch specs matching +dependency+.  If +all+ is true, all matching
-  # versions are returned.  If +matching_platform+ is false, all platforms are
-  # returned.
-
-  def fetch(dependency, all = false, matching_platform = true)
-    specs_and_sources = find_matching dependency, all, matching_platform
-
-    specs_and_sources.map do |spec_tuple, source_uri|
-      [fetch_spec(spec_tuple, URI.parse(source_uri)), source_uri]
-    end
-
-  rescue Gem::RemoteFetcher::FetchError => e
-    raise unless warn_legacy e do
-      require 'rubygems/source_info_cache'
-
-      return Gem::SourceInfoCache.search_with_source(dependency,
-                                                     matching_platform, all)
-    end
-  end
-
-  def fetch_spec(spec, source_uri)
-    spec = spec - [nil, 'ruby', '']
-    spec_file_name = "#{spec.join '-'}.gemspec"
-
-    uri = source_uri + "#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}"
-
-    cache_dir = cache_dir uri
-
-    local_spec = File.join cache_dir, spec_file_name
-
-    if File.exist? local_spec then
-      spec = Gem.read_binary local_spec
-    else
-      uri.path << '.rz'
-
-      spec = @fetcher.fetch_path uri
-      spec = Gem.inflate spec
-
-      if @update_cache then
-        FileUtils.mkdir_p cache_dir
-
-        open local_spec, 'wb' do |io|
-          io.write spec
-        end
-      end
-    end
-
-    # TODO: Investigate setting Gem::Specification#loaded_from to a URI
-    Marshal.load spec
-  end
-
-  ##
-  # Find spec names that match +dependency+.  If +all+ is true, all matching
-  # versions are returned.  If +matching_platform+ is false, gems for all
-  # platforms are returned.
-
-  def find_matching(dependency, all = false, matching_platform = true)
-    found = {}
-
-    list(all).each do |source_uri, specs|
-      found[source_uri] = specs.select do |spec_name, version, spec_platform|
-        dependency =~ Gem::Dependency.new(spec_name, version) and
-          (not matching_platform or Gem::Platform.match(spec_platform))
-      end
-    end
-
-    specs_and_sources = []
-
-    found.each do |source_uri, specs|
-      uri_str = source_uri.to_s
-      specs_and_sources.push(*specs.map { |spec| [spec, uri_str] })
-    end
-
-    specs_and_sources
-  end
-
-  ##
-  # Returns Array of gem repositories that were generated with RubyGems less
-  # than 1.2.
-
-  def legacy_repos
-    Gem.sources.reject do |source_uri|
-      source_uri = URI.parse source_uri
-      spec_path = source_uri + "specs.#{Gem.marshal_version}.gz"
-
-      begin
-        @fetcher.fetch_size spec_path
-      rescue Gem::RemoteFetcher::FetchError
-        begin
-          @fetcher.fetch_size(source_uri + 'yaml') # re-raise if non-repo
-        rescue Gem::RemoteFetcher::FetchError
-          alert_error "#{source_uri} does not appear to be a repository"
-          raise
-        end
-        false
-      end
-    end
-  end
-
-  ##
-  # Returns a list of gems available for each source in Gem::sources.  If
-  # +all+ is true, all versions are returned instead of only latest versions.
-
-  def list(all = false)
-    list = {}
-
-    file = all ? 'specs' : 'latest_specs'
-
-    Gem.sources.each do |source_uri|
-      source_uri = URI.parse source_uri
-
-      if all and @specs.include? source_uri then
-        list[source_uri] = @specs[source_uri]
-      elsif not all and @latest_specs.include? source_uri then
-        list[source_uri] = @latest_specs[source_uri]
-      else
-        specs = load_specs source_uri, file
-
-        cache = all ? @specs : @latest_specs
-
-        cache[source_uri] = specs
-        list[source_uri] = specs
-      end
-    end
-
-    list
-  end
-
-  ##
-  # Loads specs in +file+, fetching from +source_uri+ if the on-disk cache is
-  # out of date.
-
-  def load_specs(source_uri, file)
-    file_name  = "#{file}.#{Gem.marshal_version}"
-    spec_path  = source_uri + "#{file_name}.gz"
-    cache_dir  = cache_dir spec_path
-    local_file = File.join(cache_dir, file_name)
-    loaded     = false
-
-    if File.exist? local_file then
-      spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file)
-
-      if spec_dump.nil? then
-        spec_dump = Gem.read_binary local_file
-      else
-        loaded = true
-      end
-    else
-      spec_dump = @fetcher.fetch_path spec_path
-      loaded = true
-    end
-
-    specs = Marshal.load spec_dump
-
-    if loaded and @update_cache then
-      begin
-        FileUtils.mkdir_p cache_dir
-
-        open local_file, 'wb' do |io|
-          Marshal.dump specs, io
-        end
-      rescue
-      end
-    end
-
-    specs
-  end
-
-  ##
-  # Warn about legacy repositories if +exception+ indicates only legacy
-  # repositories are available, and yield to the block.  Returns false if the
-  # exception indicates some other FetchError.
-
-  def warn_legacy(exception)
-    uri = exception.uri.to_s
-    if uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ then
-      alert_warning <<-EOF
-RubyGems 1.2+ index not found for:
-\t#{legacy_repos.join "\n\t"}
-
-RubyGems will revert to legacy indexes degrading performance.
-      EOF
-
-      yield
-
-      return true
-    end
-
-    false
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/specification.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/specification.rb
deleted file mode 100644
index 2e6cdc1..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/specification.rb
+++ /dev/null
@@ -1,1262 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-require 'rubygems/version'
-require 'rubygems/requirement'
-require 'rubygems/platform'
-
-# :stopdoc:
-# Time::today has been deprecated in 0.9.5 and will be removed.
-if RUBY_VERSION < '1.9' then
-  def Time.today
-    t = Time.now
-    t - ((t.to_f + t.gmt_offset) % 86400)
-  end unless defined? Time.today
-end
-
-class Date; end # for ruby_code if date.rb wasn't required
-
-# :startdoc:
-
-module Gem
-
-  ##
-  # == Gem::Specification
-  #
-  # The Specification class contains the metadata for a Gem.  Typically
-  # defined in a .gemspec file or a Rakefile, and looks like this:
-  #
-  #   spec = Gem::Specification.new do |s|
-  #     s.name = 'rfoo'
-  #     s.version = '1.0'
-  #     s.summary = 'Example gem specification'
-  #     ...
-  #   end
-  #
-  # There are many <em>gemspec attributes</em>, and the best place to learn
-  # about them in the "Gemspec Reference" linked from the RubyGems wiki.
-
-  class Specification
-
-    ##
-    # Allows deinstallation of gems with legacy platforms.
-
-    attr_accessor :original_platform # :nodoc:
-
-    ##
-    # The the version number of a specification that does not specify one
-    # (i.e. RubyGems 0.7 or earlier).
-
-    NONEXISTENT_SPECIFICATION_VERSION = -1
-
-    ##
-    # The specification version applied to any new Specification instances
-    # created.  This should be bumped whenever something in the spec format
-    # changes.
-    #--
-    # When updating this number, be sure to also update #to_ruby.
-    #
-    # NOTE RubyGems < 1.2 cannot load specification versions > 2.
-
-    CURRENT_SPECIFICATION_VERSION = 2
-
-    ##
-    # An informal list of changes to the specification.  The highest-valued
-    # key should be equal to the CURRENT_SPECIFICATION_VERSION.
-
-    SPECIFICATION_VERSION_HISTORY = {
-      -1 => ['(RubyGems versions up to and including 0.7 did not have versioned specifications)'],
-      1  => [
-        'Deprecated "test_suite_file" in favor of the new, but equivalent, "test_files"',
-        '"test_file=x" is a shortcut for "test_files=[x]"'
-      ],
-      2  => [
-        'Added "required_rubygems_version"',
-        'Now forward-compatible with future versions',
-      ],
-    }
-
-    # :stopdoc:
-    MARSHAL_FIELDS = { -1 => 16, 1 => 16, 2 => 16 }
-
-    now = Time.at(Time.now.to_i)
-    TODAY = now - ((now.to_i + now.gmt_offset) % 86400)
-    # :startdoc:
-
-    ##
-    # List of Specification instances.
-
-    @@list = []
-
-    ##
-    # Optional block used to gather newly defined instances.
-
-    @@gather = nil
-
-    ##
-    # List of attribute names: [:name, :version, ...]
-    @@required_attributes = []
-
-    ##
-    # List of _all_ attributes and default values:
-    #
-    #   [[:name, nil],
-    #    [:bindir, 'bin'],
-    #    ...]
-
-    @@attributes = []
-
-    @@nil_attributes = []
-    @@non_nil_attributes = [:@original_platform]
-
-    ##
-    # List of array attributes
-
-    @@array_attributes = []
-
-    ##
-    # Map of attribute names to default values.
-
-    @@default_value = {}
-
-    ##
-    # Names of all specification attributes
-
-    def self.attribute_names
-      @@attributes.map { |name, default| name }
-    end
-
-    ##
-    # Default values for specification attributes
-
-    def self.attribute_defaults
-      @@attributes.dup
-    end
-
-    ##
-    # The default value for specification attribute +name+
-
-    def self.default_value(name)
-      @@default_value[name]
-    end
-
-    ##
-    # Required specification attributes
-
-    def self.required_attributes
-      @@required_attributes.dup
-    end
-
-    ##
-    # Is +name+ a required attribute?
-
-    def self.required_attribute?(name)
-      @@required_attributes.include? name.to_sym
-    end
-
-    ##
-    # Specification attributes that are arrays (appendable and so-forth)
-
-    def self.array_attributes
-      @@array_attributes.dup
-    end
-
-    ##
-    # A list of Specification instances that have been defined in this Ruby
-    # instance.
-
-    def self.list
-      @@list
-    end
-
-    ##
-    # Specifies the +name+ and +default+ for a specification attribute, and
-    # creates a reader and writer method like Module#attr_accessor.
-    #
-    # The reader method returns the default if the value hasn't been set.
-
-    def self.attribute(name, default=nil)
-      ivar_name = "@#{name}".intern
-      if default.nil? then
-        @@nil_attributes << ivar_name
-      else
-        @@non_nil_attributes << [ivar_name, default]
-      end
-
-      @@attributes << [name, default]
-      @@default_value[name] = default
-      attr_accessor(name)
-    end
-
-    ##
-    # Same as :attribute, but ensures that values assigned to the attribute
-    # are array values by applying :to_a to the value.
-
-    def self.array_attribute(name)
-      @@non_nil_attributes << ["@#{name}".intern, []]
-
-      @@array_attributes << name
-      @@attributes << [name, []]
-      @@default_value[name] = []
-      code = %{
-        def #{name}
-          @#{name} ||= []
-        end
-        def #{name}=(value)
-          @#{name} = Array(value)
-        end
-      }
-
-      module_eval code, __FILE__, __LINE__ - 9
-    end
-
-    ##
-    # Same as attribute above, but also records this attribute as mandatory.
-
-    def self.required_attribute(*args)
-      @@required_attributes << args.first
-      attribute(*args)
-    end
-
-    ##
-    # Sometimes we don't want the world to use a setter method for a
-    # particular attribute.
-    #
-    # +read_only+ makes it private so we can still use it internally.
-
-    def self.read_only(*names)
-      names.each do |name|
-        private "#{name}="
-      end
-    end
-
-    # Shortcut for creating several attributes at once (each with a default
-    # value of +nil+).
-
-    def self.attributes(*args)
-      args.each do |arg|
-        attribute(arg, nil)
-      end
-    end
-
-    ##
-    # Some attributes require special behaviour when they are accessed.  This
-    # allows for that.
-
-    def self.overwrite_accessor(name, &block)
-      remove_method name
-      define_method(name, &block)
-    end
-
-    ##
-    # Defines a _singular_ version of an existing _plural_ attribute (i.e. one
-    # whose value is expected to be an array).  This means just creating a
-    # helper method that takes a single value and appends it to the array.
-    # These are created for convenience, so that in a spec, one can write 
-    #
-    #   s.require_path = 'mylib'
-    #
-    # instead of:
-    #
-    #   s.require_paths = ['mylib']
-    #
-    # That above convenience is available courtesy of:
-    #
-    #   attribute_alias_singular :require_path, :require_paths 
-
-    def self.attribute_alias_singular(singular, plural)
-      define_method("#{singular}=") { |val|
-        send("#{plural}=", [val])
-      }
-      define_method("#{singular}") { 
-        val = send("#{plural}")
-        val.nil? ? nil : val.first
-      }
-    end
-
-    ##
-    # Dump only crucial instance variables.
-    #--
-    # MAINTAIN ORDER!
-
-    def _dump(limit)
-      Marshal.dump [
-        @rubygems_version,
-        @specification_version,
-        @name,
-        @version,
-        (Time === @date ? @date : (require 'time'; Time.parse(@date.to_s))),
-        @summary,
-        @required_ruby_version,
-        @required_rubygems_version,
-        @original_platform,
-        @dependencies,
-        @rubyforge_project,
-        @email,
-        @authors,
-        @description,
-        @homepage,
-        @has_rdoc,
-        @new_platform,
-      ]
-    end
-
-    ##
-    # Load custom marshal format, re-initializing defaults as needed
-
-    def self._load(str)
-      array = Marshal.load str
-
-      spec = Gem::Specification.new
-      spec.instance_variable_set :@specification_version, array[1]
-
-      current_version = CURRENT_SPECIFICATION_VERSION
-
-      field_count = if spec.specification_version > current_version then
-                      spec.instance_variable_set :@specification_version,
-                                                 current_version
-                      MARSHAL_FIELDS[current_version]
-                    else
-                      MARSHAL_FIELDS[spec.specification_version]
-                    end
-
-      if array.size < field_count then
-        raise TypeError, "invalid Gem::Specification format #{array.inspect}"
-      end
-
-      spec.instance_variable_set :@rubygems_version,          array[0]
-      # spec version
-      spec.instance_variable_set :@name,                      array[2]
-      spec.instance_variable_set :@version,                   array[3]
-      spec.instance_variable_set :@date,                      array[4]
-      spec.instance_variable_set :@summary,                   array[5]
-      spec.instance_variable_set :@required_ruby_version,     array[6]
-      spec.instance_variable_set :@required_rubygems_version, array[7]
-      spec.instance_variable_set :@original_platform,         array[8]
-      spec.instance_variable_set :@dependencies,              array[9]
-      spec.instance_variable_set :@rubyforge_project,         array[10]
-      spec.instance_variable_set :@email,                     array[11]
-      spec.instance_variable_set :@authors,                   array[12]
-      spec.instance_variable_set :@description,               array[13]
-      spec.instance_variable_set :@homepage,                  array[14]
-      spec.instance_variable_set :@has_rdoc,                  array[15]
-      spec.instance_variable_set :@new_platform,              array[16]
-      spec.instance_variable_set :@platform,                  array[16].to_s
-      spec.instance_variable_set :@loaded,                    false
-
-      spec
-    end
-
-    ##
-    # List of depedencies that will automatically be activated at runtime.
-
-    def runtime_dependencies
-      dependencies.select { |d| d.type == :runtime || d.type == nil }
-    end
-
-    ##
-    # List of dependencies that are used for development
-
-    def development_dependencies
-      dependencies.select { |d| d.type == :development }
-    end
-
-    def test_suite_file # :nodoc:
-      warn 'test_suite_file deprecated, use test_files'
-      test_files.first
-    end
-
-    def test_suite_file=(val) # :nodoc:
-      warn 'test_suite_file= deprecated, use test_files='
-      @test_files = [] unless defined? @test_files
-      @test_files << val
-    end
-
-    ##
-    # true when this gemspec has been loaded from a specifications directory.
-    # This attribute is not persisted.
-
-    attr_accessor :loaded
-
-    ##
-    # Path this gemspec was loaded from.  This attribute is not persisted.
-
-    attr_accessor :loaded_from
-
-    ##
-    # Returns an array with bindir attached to each executable in the
-    # executables list
-
-    def add_bindir(executables)
-      return nil if executables.nil?
-
-      if @bindir then
-        Array(executables).map { |e| File.join(@bindir, e) }
-      else
-        executables
-      end
-    rescue
-      return nil
-    end
-
-    ##
-    # Files in the Gem under one of the require_paths
-
-    def lib_files
-      @files.select do |file|
-        require_paths.any? do |path|
-          file.index(path) == 0
-        end
-      end
-    end
-
-    ##
-    # True if this gem was loaded from disk
-
-    alias :loaded? :loaded
-
-    ##
-    # True if this gem has files in test_files
-
-    def has_unit_tests?
-      not test_files.empty?
-    end
-
-    alias has_test_suite? has_unit_tests? # :nodoc: deprecated
-    
-    ##
-    # Specification constructor.  Assigns the default values to the
-    # attributes, adds this spec to the list of loaded specs (see
-    # Specification.list), and yields itself for further initialization.
-
-    def initialize
-      @new_platform = nil
-      assign_defaults
-      @loaded = false
-      @loaded_from = nil
-      @@list << self
-
-      yield self if block_given?
-
-      @@gather.call(self) if @@gather
-    end
-
-    ##
-    # Each attribute has a default value (possibly nil).  Here, we initialize
-    # all attributes to their default value.  This is done through the
-    # accessor methods, so special behaviours will be honored.  Furthermore,
-    # we take a _copy_ of the default so each specification instance has its
-    # own empty arrays, etc.
-
-    def assign_defaults
-      @@nil_attributes.each do |name|
-        instance_variable_set name, nil
-      end
-
-      @@non_nil_attributes.each do |name, default|
-        value = case default
-                when Time, Numeric, Symbol, true, false, nil then default
-                else default.dup
-                end
-
-        instance_variable_set name, value
-      end
-
-      # HACK
-      instance_variable_set :@new_platform, Gem::Platform::RUBY
-    end
-
-    ##
-    # Special loader for YAML files.  When a Specification object is loaded
-    # from a YAML file, it bypasses the normal Ruby object initialization
-    # routine (#initialize).  This method makes up for that and deals with
-    # gems of different ages.
-    #
-    # 'input' can be anything that YAML.load() accepts: String or IO. 
-
-    def self.from_yaml(input)
-      input = normalize_yaml_input input
-      spec = YAML.load input
-
-      if spec && spec.class == FalseClass then
-        raise Gem::EndOfYAMLException
-      end
-
-      unless Gem::Specification === spec then
-        raise Gem::Exception, "YAML data doesn't evaluate to gem specification"
-      end
-
-      unless (spec.instance_variables.include? '@specification_version' or
-              spec.instance_variables.include? :@specification_version) and
-             spec.instance_variable_get :@specification_version
-        spec.instance_variable_set :@specification_version, 
-                                   NONEXISTENT_SPECIFICATION_VERSION
-      end
-
-      spec
-    end 
-
-    ##
-    # Loads ruby format gemspec from +filename+
-
-    def self.load(filename)
-      gemspec = nil
-      fail "NESTED Specification.load calls not allowed!" if @@gather
-      @@gather = proc { |gs| gemspec = gs }
-      data = File.read(filename)
-      eval(data)
-      gemspec
-    ensure
-      @@gather = nil
-    end
-
-    ##
-    # Make sure the YAML specification is properly formatted with dashes
-
-    def self.normalize_yaml_input(input)
-      result = input.respond_to?(:read) ? input.read : input
-      result = "--- " + result unless result =~ /^--- /
-      result
-    end
-    
-    ##
-    # Sets the rubygems_version to the current RubyGems version
-
-    def mark_version
-      @rubygems_version = RubyGemsVersion
-    end
-
-    ##
-    # Ignore unknown attributes while loading
-
-    def method_missing(sym, *a, &b) # :nodoc:
-      if @specification_version > CURRENT_SPECIFICATION_VERSION and
-         sym.to_s =~ /=$/ then
-        warn "ignoring #{sym} loading #{full_name}" if $DEBUG
-      else
-        super
-      end
-    end
-
-    ##
-    # Adds a development dependency named +gem+ with +requirements+ to this
-    # Gem.  For example:
-    #
-    #   spec.add_development_dependency 'jabber4r', '> 0.1', '<= 0.5'
-    #
-    # Development dependencies aren't installed by default and aren't
-    # activated when a gem is required.
-
-    def add_development_dependency(gem, *requirements)
-      add_dependency_with_type(gem, :development, *requirements)
-    end
-
-    ##
-    # Adds a runtime dependency named +gem+ with +requirements+ to this Gem.
-    # For example:
-    #
-    #   spec.add_runtime_dependency 'jabber4r', '> 0.1', '<= 0.5'
-
-    def add_runtime_dependency(gem, *requirements)
-      add_dependency_with_type(gem, :runtime, *requirements)
-    end
-
-    ##
-    # Adds a runtime dependency
-
-    alias add_dependency add_runtime_dependency
-
-    ##
-    # Returns the full name (name-version) of this Gem.  Platform information
-    # is included (name-version-platform) if it is specified and not the
-    # default Ruby platform.
-
-    def full_name
-      if platform == Gem::Platform::RUBY or platform.nil? then
-        "#{@name}-#{@version}"
-      else
-        "#{@name}-#{@version}-#{platform}"
-      end
-    end
-
-    ##
-    # Returns the full name (name-version) of this gemspec using the original
-    # platform.  For use with legacy gems.
-
-    def original_name # :nodoc:
-      if platform == Gem::Platform::RUBY or platform.nil? then
-        "#{@name}-#{@version}"
-      else
-        "#{@name}-#{@version}-#{@original_platform}"
-      end
-    end
-
-    ##
-    # The full path to the gem (install path + full name).
-
-    def full_gem_path
-      path = File.join installation_path, 'gems', full_name
-      return path if File.directory? path
-      File.join installation_path, 'gems', original_name
-    end
-
-    ##
-    # The default (generated) file name of the gem.
-
-    def file_name
-      full_name + ".gem"
-    end
-
-    ##
-    # The directory that this gem was installed into.
-
-    def installation_path
-      path = File.dirname(@loaded_from).split(File::SEPARATOR)[0..-2]
-      path = path.join File::SEPARATOR
-      File.expand_path path
-    end
-
-    ##
-    # Checks if this specification meets the requirement of +dependency+.
-
-    def satisfies_requirement?(dependency)
-      return @name == dependency.name && 
-        dependency.version_requirements.satisfied_by?(@version)
-    end
-
-    ##
-    # Returns an object you can use to sort specifications in #sort_by.
-
-    def sort_obj
-      [@name, @version.to_ints, @new_platform == Gem::Platform::RUBY ? -1 : 1]
-    end
-
-    def <=>(other) # :nodoc:
-      sort_obj <=> other.sort_obj
-    end
-
-    ##
-    # Tests specs for equality (across all attributes).
-
-    def ==(other) # :nodoc:
-      self.class === other && same_attributes?(other)
-    end
-
-    alias eql? == # :nodoc:
-
-    ##
-    # True if this gem has the same attributes as +other+.
-
-    def same_attributes?(other)
-      @@attributes.each do |name, default|
-        return false unless self.send(name) == other.send(name)
-      end
-      true
-    end
-
-    private :same_attributes?
-
-    def hash # :nodoc:
-      @@attributes.inject(0) { |hash_code, (name, default_value)|
-        n = self.send(name).hash
-        hash_code + n
-      }
-    end
-
-    def to_yaml(opts = {}) # :nodoc:
-      mark_version
-
-      attributes = @@attributes.map { |name,| name.to_s }.sort
-      attributes = attributes - %w[name version platform]
-
-      yaml = YAML.quick_emit object_id, opts do |out|
-        out.map taguri, to_yaml_style do |map|
-          map.add 'name', @name
-          map.add 'version', @version
-          platform = case @original_platform
-                     when nil, '' then
-                       'ruby'
-                     when String then
-                       @original_platform
-                     else
-                       @original_platform.to_s
-                     end
-          map.add 'platform', platform
-
-          attributes.each do |name|
-            map.add name, instance_variable_get("@#{name}")
-          end
-        end
-      end
-    end
-
-    def yaml_initialize(tag, vals) # :nodoc:
-      vals.each do |ivar, val|
-        instance_variable_set "@#{ivar}", val
-      end
-
-      @original_platform = @platform # for backwards compatibility
-      self.platform = Gem::Platform.new @platform
-    end
-
-    ##
-    # Returns a Ruby code representation of this specification, such that it
-    # can be eval'ed and reconstruct the same specification later.  Attributes
-    # that still have their default values are omitted.
-
-    def to_ruby
-      mark_version
-      result = []
-      result << "# -*- encoding: utf-8 -*-"
-      result << nil
-      result << "Gem::Specification.new do |s|"
-
-      result << "  s.name = #{ruby_code name}"
-      result << "  s.version = #{ruby_code version}"
-      unless platform.nil? or platform == Gem::Platform::RUBY then
-        result << "  s.platform = #{ruby_code original_platform}"
-      end
-      result << ""
-      result << "  s.required_rubygems_version = #{ruby_code required_rubygems_version} if s.respond_to? :required_rubygems_version="
-
-      handled = [
-        :dependencies,
-        :name,
-        :platform,
-        :required_rubygems_version,
-        :specification_version,
-        :version,
-      ]
-
-      attributes = @@attributes.sort_by { |attr_name,| attr_name.to_s }
-
-      attributes.each do |attr_name, default|
-        next if handled.include? attr_name
-        current_value = self.send(attr_name)
-        if current_value != default or
-           self.class.required_attribute? attr_name then
-          result << "  s.#{attr_name} = #{ruby_code current_value}"
-        end
-      end
-
-      result << nil
-      result << "  if s.respond_to? :specification_version then"
-      result << "    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION"
-      result << "    s.specification_version = #{specification_version}"
-      result << nil
-
-      result << "    if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then"
-
-      unless dependencies.empty? then
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          dep.instance_variable_set :@type, :runtime if dep.type.nil? # HACK
-          result << "      s.add_#{dep.type}_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      end
-
-      result << "    else"
-
-      unless dependencies.empty? then
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          result << "      s.add_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      end
-
-      result << '    end'
-
-      result << "  else"
-        dependencies.each do |dep|
-          version_reqs_param = dep.requirements_list.inspect
-          result << "    s.add_dependency(%q<#{dep.name}>, #{version_reqs_param})"
-        end
-      result << "  end"
-
-      result << "end"
-      result << nil
-
-      result.join "\n"
-    end
-
-    ##
-    # Checks that the specification contains all required fields, and does a
-    # very basic sanity check.
-    #
-    # Raises InvalidSpecificationException if the spec does not pass the
-    # checks..
-
-    def validate
-      extend Gem::UserInteraction
-      normalize
-
-      if rubygems_version != RubyGemsVersion then
-        raise Gem::InvalidSpecificationException,
-              "expected RubyGems version #{RubyGemsVersion}, was #{rubygems_version}"
-      end
-
-      @@required_attributes.each do |symbol|
-        unless self.send symbol then
-          raise Gem::InvalidSpecificationException,
-                "missing value for attribute #{symbol}"
-        end
-      end 
-
-      if require_paths.empty? then
-        raise Gem::InvalidSpecificationException,
-              "specification must have at least one require_path"
-      end
-
-      case platform
-      when Gem::Platform, Platform::RUBY then # ok
-      else
-        raise Gem::InvalidSpecificationException,
-              "invalid platform #{platform.inspect}, see Gem::Platform"
-      end
-
-      unless Array === authors and
-             authors.all? { |author| String === author } then
-        raise Gem::InvalidSpecificationException,
-              'authors must be Array of Strings'
-      end
-
-      # Warnings
-
-      %w[author email homepage rubyforge_project summary].each do |attribute|
-        value = self.send attribute
-        alert_warning "no #{attribute} specified" if value.nil? or value.empty?
-      end
-
-      alert_warning "RDoc will not be generated (has_rdoc == false)" unless
-        has_rdoc
-
-      alert_warning "deprecated autorequire specified" if autorequire
-
-      executables.each do |executable|
-        executable_path = File.join bindir, executable
-        shebang = File.read(executable_path, 2) == '#!'
-
-        alert_warning "#{executable_path} is missing #! line" unless shebang
-      end
-
-      true
-    end
-
-    ##
-    # Normalize the list of files so that:
-    # * All file lists have redundancies removed.
-    # * Files referenced in the extra_rdoc_files are included in the package
-    #   file list. 
-    #
-    # Also, the summary and description are converted to a normal format. 
-
-    def normalize
-      if defined?(@extra_rdoc_files) and @extra_rdoc_files then
-        @extra_rdoc_files.uniq!
-        @files ||= []
-        @files.concat(@extra_rdoc_files)
-      end
-      @files.uniq! if @files
-    end
-
-    ##
-    # Return a list of all gems that have a dependency on this gemspec.  The
-    # list is structured with entries that conform to:
-    #
-    #   [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
-
-    def dependent_gems
-      out = []
-      Gem.source_index.each do |name,gem|
-        gem.dependencies.each do |dep|
-          if self.satisfies_requirement?(dep) then
-            sats = []
-            find_all_satisfiers(dep) do |sat|
-              sats << sat
-            end
-            out << [gem, dep, sats]
-          end
-        end
-      end
-      out
-    end
-
-    def to_s
-      "#<Gem::Specification name=#{@name} version=#{@version}>"
-    end
-
-    def add_dependency_with_type(dependency, type, *requirements)
-      requirements = if requirements.empty? then
-                       Gem::Requirement.default
-                     else
-                       requirements.flatten
-                     end
-
-      unless dependency.respond_to?(:name) &&
-        dependency.respond_to?(:version_requirements)
-
-        dependency = Dependency.new(dependency, requirements, type)
-      end
-
-      dependencies << dependency
-    end
-
-    private :add_dependency_with_type
-
-    def find_all_satisfiers(dep)
-      Gem.source_index.each do |name,gem|
-        if(gem.satisfies_requirement?(dep)) then
-          yield gem
-        end
-      end
-    end
-
-    private :find_all_satisfiers
-
-    ##
-    # Return a string containing a Ruby code representation of the given
-    # object.
-
-    def ruby_code(obj)
-      case obj
-      when String            then '%q{' + obj + '}'
-      when Array             then obj.inspect
-      when Gem::Version      then obj.to_s.inspect
-      when Date              then '%q{' + obj.strftime('%Y-%m-%d') + '}'
-      when Time              then '%q{' + obj.strftime('%Y-%m-%d') + '}'
-      when Numeric           then obj.inspect
-      when true, false, nil  then obj.inspect
-      when Gem::Platform     then "Gem::Platform.new(#{obj.to_a.inspect})"
-      when Gem::Requirement  then "Gem::Requirement.new(#{obj.to_s.inspect})"
-      else raise Exception, "ruby_code case not handled: #{obj.class}"
-      end
-    end
-    
-    private :ruby_code
-
-    # :section: Required gemspec attributes
-    
-    ##
-    # The version of RubyGems used to create this gem
-
-    required_attribute :rubygems_version, Gem::RubyGemsVersion
-
-    ##
-    # The Gem::Specification version of this gemspec
-
-    required_attribute :specification_version, CURRENT_SPECIFICATION_VERSION
-
-    ##
-    # This gem's name
-
-    required_attribute :name
-
-    ##
-    # This gem's version
-
-    required_attribute :version
-
-    ##
-    # The date this gem was created
-
-    required_attribute :date, TODAY
-
-    ##
-    # A short summary of this gem's description.  Displayed in `gem list -d`.
-
-    required_attribute :summary
-
-    ##
-    # Paths in the gem to add to $LOAD_PATH when this gem is activated
-
-    required_attribute :require_paths, ['lib']
-
-    # :section: Optional gemspec attributes
-
-    ##
-    # A contact email for this gem
-    
-    attribute :email
-
-    ##
-    # The URL of this gem's home page
-
-    attribute :homepage
-
-    ##
-    # The rubyforge project this gem lives under.  i.e. RubyGems'
-    # rubyforge_project is "rubygems".
-    
-    attribute :rubyforge_project
-
-    ##
-    # A long description of this gem
-
-    attribute :description
-
-    ##
-    # Autorequire was used by old RubyGems to automatically require a file.
-    # It no longer is supported.
-
-    attribute :autorequire
-
-    ##
-    # The default executable for this gem.
-
-    attribute :default_executable
-
-    ##
-    # The path in the gem for executable scripts
-
-    attribute :bindir, 'bin'
-
-    ##
-    # True if this gem is RDoc-compliant
-
-    attribute :has_rdoc, false
-
-    ##
-    # True if this gem supports RDoc
-
-    alias :has_rdoc? :has_rdoc
-
-    ##
-    # The ruby of version required by this gem
-
-    attribute :required_ruby_version, Gem::Requirement.default
-
-    ##
-    # The RubyGems version required by this gem
-
-    attribute :required_rubygems_version, Gem::Requirement.default
-
-    ##
-    # The platform this gem runs on.  See Gem::Platform for details.
-
-    attribute :platform, Gem::Platform::RUBY
-
-    ##
-    # The key used to sign this gem.  See Gem::Security for details.
-
-    attribute :signing_key, nil
-
-    ##
-    # The certificate chain used to sign this gem.  See Gem::Security for
-    # details.
-
-    attribute :cert_chain, []
-
-    ##
-    # A message that gets displayed after the gem is installed
-
-    attribute :post_install_message, nil
-
-    ##
-    # The list of authors who wrote this gem
-
-    array_attribute :authors
-
-    ##
-    # Files included in this gem
-
-    array_attribute :files
-
-    ##
-    # Test files included in this gem
-
-    array_attribute :test_files
-
-    ##
-    # An ARGV-style array of options to RDoc
-
-    array_attribute :rdoc_options
-
-    ##
-    # Extra files to add to RDoc
-
-    array_attribute :extra_rdoc_files
-
-    ##
-    # Executables included in the gem
-
-    array_attribute :executables
-
-    ##
-    # Extensions to build when installing the gem.  See
-    # Gem::Installer#build_extensions for valid values.
-
-    array_attribute :extensions
-
-    ##
-    # An array or things required by this gem.  Not used by anything
-    # presently.
-
-    array_attribute :requirements
-
-    ##
-    # A list of Gem::Dependency objects this gem depends on.  Only appendable.
-
-    array_attribute :dependencies
-
-    read_only :dependencies
-
-    # :section: Aliased gemspec attributes
-
-    ##
-    # Singular accessor for executables
-    
-    attribute_alias_singular :executable, :executables
-
-    ##
-    # Singular accessor for authors
-
-    attribute_alias_singular :author, :authors
-
-    ##
-    # Singular accessor for require_paths
-
-    attribute_alias_singular :require_path, :require_paths
-
-    ##
-    # Singular accessor for test_files
-
-    attribute_alias_singular :test_file, :test_files
-
-    overwrite_accessor :version= do |version|
-      @version = Version.create(version)
-    end
-
-    overwrite_accessor :platform do
-      @new_platform
-    end
-
-    overwrite_accessor :platform= do |platform|
-      if @original_platform.nil? or
-         @original_platform == Gem::Platform::RUBY then
-        @original_platform = platform
-      end
-
-      case platform
-      when Gem::Platform::CURRENT then
-        @new_platform = Gem::Platform.local
-        @original_platform = @new_platform.to_s
-
-      when Gem::Platform then
-        @new_platform = platform
-
-      # legacy constants
-      when nil, Gem::Platform::RUBY then
-        @new_platform = Gem::Platform::RUBY
-      when 'mswin32' then # was Gem::Platform::WIN32
-        @new_platform = Gem::Platform.new 'x86-mswin32'
-      when 'i586-linux' then # was Gem::Platform::LINUX_586
-        @new_platform = Gem::Platform.new 'x86-linux'
-      when 'powerpc-darwin' then # was Gem::Platform::DARWIN
-        @new_platform = Gem::Platform.new 'ppc-darwin'
-      else
-        @new_platform = Gem::Platform.new platform
-      end
-
-      @platform = @new_platform.to_s
-
-      @new_platform
-    end
-
-    overwrite_accessor :required_ruby_version= do |value|
-      @required_ruby_version = Gem::Requirement.create(value)
-    end
-
-    overwrite_accessor :required_rubygems_version= do |value|
-      @required_rubygems_version = Gem::Requirement.create(value)
-    end
-
-    overwrite_accessor :date= do |date|
-      # We want to end up with a Time object with one-day resolution.
-      # This is the cleanest, most-readable, faster-than-using-Date
-      # way to do it.
-      case date
-      when String then
-        @date = if /\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
-                  Time.local($1.to_i, $2.to_i, $3.to_i)
-                else
-                  require 'time'
-                  Time.parse date
-                end
-      when Time then
-        @date = Time.local(date.year, date.month, date.day)
-      when Date then
-        @date = Time.local(date.year, date.month, date.day)
-      else
-        @date = TODAY
-      end
-    end
-
-    overwrite_accessor :date do
-      self.date = nil if @date.nil?  # HACK Sets the default value for date
-      @date
-    end
-
-    overwrite_accessor :summary= do |str|
-      @summary = if str then
-                   str.strip.
-                   gsub(/(\w-)\n[ \t]*(\w)/, '\1\2').
-                   gsub(/\n[ \t]*/, " ")
-                 end
-    end
-
-    overwrite_accessor :description= do |str|
-      @description = if str then
-                       str.strip.
-                       gsub(/(\w-)\n[ \t]*(\w)/, '\1\2').
-                       gsub(/\n[ \t]*/, " ")
-                     end
-    end
-
-    overwrite_accessor :default_executable do
-      begin
-        if defined?(@default_executable) and @default_executable
-          result = @default_executable
-        elsif @executables and @executables.size == 1
-          result = Array(@executables).first
-        else
-          result = nil
-        end
-        result
-      rescue
-        nil
-      end
-    end
-
-    overwrite_accessor :test_files do
-      # Handle the possibility that we have @test_suite_file but not
-      # @test_files.  This will happen when an old gem is loaded via
-      # YAML.
-      if defined? @test_suite_file then
-        @test_files = [@test_suite_file].flatten
-        @test_suite_file = nil
-      end
-      if defined?(@test_files) and @test_files then
-        @test_files
-      else
-        @test_files = []
-      end
-    end
-
-    overwrite_accessor :files do
-      result = []
-      result.push(*@files) if defined?(@files)
-      result.push(*@test_files) if defined?(@test_files)
-      result.push(*(add_bindir(@executables)))
-      result.push(*@extra_rdoc_files) if defined?(@extra_rdoc_files)
-      result.push(*@extensions) if defined?(@extensions)
-      result.uniq.compact
-    end
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/test_utilities.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/test_utilities.rb
deleted file mode 100644
index 8b23d32..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/test_utilities.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'tempfile'
-require 'rubygems'
-require 'rubygems/remote_fetcher'
-
-##
-# A fake Gem::RemoteFetcher for use in tests or to avoid real live HTTP
-# requests when testing code that uses RubyGems.
-#
-# Example:
-#
-#   @fetcher = Gem::FakeFetcher.new
-#   @fetcher.data['http://gems.example.com/yaml'] = source_index.to_yaml
-#   Gem::RemoteFetcher.fetcher = @fetcher
-#   
-#   # invoke RubyGems code
-#   
-#   paths = @fetcher.paths
-#   assert_equal 'http://gems.example.com/yaml', paths.shift
-#   assert paths.empty?, paths.join(', ')
-#
-# See RubyGems' tests for more examples of FakeFetcher.
-
-class Gem::FakeFetcher
-
-  attr_reader :data
-  attr_accessor :paths
-
-  def initialize
-    @data = {}
-    @paths = []
-  end
-
-  def fetch_path path, mtime = nil
-    path = path.to_s
-    @paths << path
-    raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
-
-    unless @data.key? path then
-      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
-    end
-
-    data = @data[path]
-
-    if data.respond_to?(:call) then
-      data.call
-    else
-      if path.to_s =~ /gz$/ and not data.nil? and not data.empty? then
-        data = Gem.gunzip data
-      end
-
-      data
-    end
-  end
-
-  def fetch_size(path)
-    path = path.to_s
-    @paths << path
-
-    raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
-
-    unless @data.key? path then
-      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
-    end
-
-    data = @data[path]
-
-    data.respond_to?(:call) ? data.call : data.length
-  end
-
-  def download spec, source_uri, install_dir = Gem.dir
-    name = "#{spec.full_name}.gem"
-    path = File.join(install_dir, 'cache', name)
-
-    Gem.ensure_gem_subdirectories install_dir
-
-    if source_uri =~ /^http/ then
-      File.open(path, "wb") do |f|
-        f.write fetch_path(File.join(source_uri, "gems", name))
-      end
-    else
-      FileUtils.cp source_uri, path
-    end
-
-    path
-  end
-
-end
-
-# :stopdoc:
-class Gem::RemoteFetcher
-
-  def self.fetcher=(fetcher)
-    @fetcher = fetcher
-  end
-
-end
-# :startdoc:
-
-##
-# A StringIO duck-typed class that uses Tempfile instead of String as the
-# backing store.
-#--
-# This class was added to flush out problems in Rubinius' IO implementation.
-
-class TempIO
-
-  @@count = 0
-
-  def initialize(string = '')
-    @tempfile = Tempfile.new "TempIO-#{@@count += 1}"
-    @tempfile.binmode
-    @tempfile.write string
-    @tempfile.rewind
-  end
-
-  def method_missing(meth, *args, &block)
-    @tempfile.send(meth, *args, &block)
-  end
-
-  def respond_to?(meth)
-    @tempfile.respond_to? meth
-  end
-
-  def string
-    @tempfile.flush
-
-    Gem.read_binary @tempfile.path
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/timer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/timer.rb
deleted file mode 100644
index 06250f2..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/timer.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# This file defines a $log variable for logging, and a time() method for recording timing
-# information.
-#
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-$log = Object.new
-def $log.debug(str)
-  STDERR.puts str
-end
-
-def time(msg, width=25)
-  t = Time.now
-  return_value = yield
-  elapsed = Time.now.to_f - t.to_f
-  elapsed = sprintf("%3.3f", elapsed)
-  $log.debug "#{msg.ljust(width)}: #{elapsed}s"
-  return_value
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/uninstaller.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/uninstaller.rb
deleted file mode 100644
index 5f19da5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/uninstaller.rb
+++ /dev/null
@@ -1,242 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'fileutils'
-require 'rubygems'
-require 'rubygems/dependency_list'
-require 'rubygems/doc_manager'
-require 'rubygems/user_interaction'
-
-##
-# An Uninstaller.
-
-class Gem::Uninstaller
-
-  include Gem::UserInteraction
-
-  ##
-  # The directory a gem's executables will be installed into
-
-  attr_reader :bin_dir
-
-  ##
-  # The gem repository the gem will be installed into
-
-  attr_reader :gem_home
-
-  ##
-  # The Gem::Specification for the gem being uninstalled, only set during
-  # #uninstall_gem
-
-  attr_reader :spec
-
-  ##
-  # Constructs an uninstaller that will uninstall +gem+
-
-  def initialize(gem, options = {})
-    @gem = gem
-    @version = options[:version] || Gem::Requirement.default
-    gem_home = options[:install_dir] || Gem.dir
-    @gem_home = File.expand_path gem_home
-    @force_executables = options[:executables]
-    @force_all = options[:all]
-    @force_ignore = options[:ignore]
-    @bin_dir = options[:bin_dir]
-
-    spec_dir = File.join @gem_home, 'specifications'
-    @source_index = Gem::SourceIndex.from_gems_in spec_dir
-  end
-
-  ##
-  # Performs the uninstall of the gem.  This removes the spec, the Gem
-  # directory, and the cached .gem file.
-
-  def uninstall
-    list = @source_index.find_name @gem, @version
-
-    if list.empty? then
-      raise Gem::InstallError, "Unknown gem #{@gem} #{@version}"
-
-    elsif list.size > 1 and @force_all then
-      remove_all list.dup
-
-    elsif list.size > 1 then
-      gem_names = list.collect {|gem| gem.full_name} + ["All versions"]
-
-      say
-      gem_name, index = choose_from_list "Select gem to uninstall:", gem_names
-
-      if index == list.size then
-        remove_all list.dup
-      elsif index >= 0 && index < list.size then
-        uninstall_gem list[index], list.dup
-      else
-        say "Error: must enter a number [1-#{list.size+1}]"
-      end
-    else
-      uninstall_gem list.first, list.dup
-    end
-  end
-
-  ##
-  # Uninstalls gem +spec+
-
-  def uninstall_gem(spec, specs)
-    @spec = spec
-
-    Gem.pre_uninstall_hooks.each do |hook|
-      hook.call self
-    end
-
-    specs.each { |s| remove_executables s }
-    remove spec, specs
-
-    Gem.post_uninstall_hooks.each do |hook|
-      hook.call self
-    end
-
-    @spec = nil
-  end
-
-  ##
-  # Removes installed executables and batch files (windows only) for
-  # +gemspec+.
-
-  def remove_executables(gemspec)
-    return if gemspec.nil?
-
-    if gemspec.executables.size > 0 then
-      bindir = @bin_dir ? @bin_dir : (Gem.bindir @gem_home)
-
-      list = @source_index.find_name(gemspec.name).delete_if { |spec|
-        spec.version == gemspec.version
-      }
-
-      executables = gemspec.executables.clone
-
-      list.each do |spec|
-        spec.executables.each do |exe_name|
-          executables.delete(exe_name)
-        end
-      end
-
-      return if executables.size == 0
-
-      answer = if @force_executables.nil? then
-                 ask_yes_no("Remove executables:\n" \
-                            "\t#{gemspec.executables.join(", ")}\n\nin addition to the gem?",
-                            true) # " # appease ruby-mode - don't ask
-               else
-                 @force_executables
-               end
-
-      unless answer then
-        say "Executables and scripts will remain installed."
-      else
-        raise Gem::FilePermissionError, bindir unless File.writable? bindir
-
-        gemspec.executables.each do |exe_name|
-          say "Removing #{exe_name}"
-          FileUtils.rm_f File.join(bindir, exe_name)
-          FileUtils.rm_f File.join(bindir, "#{exe_name}.bat")
-        end
-      end
-    end
-  end
-
-  ##
-  # Removes all gems in +list+.
-  #
-  # NOTE: removes uninstalled gems from +list+.
-
-  def remove_all(list)
-    list.dup.each { |spec| uninstall_gem spec, list }
-  end
-
-  ##
-  # spec:: the spec of the gem to be uninstalled
-  # list:: the list of all such gems
-  #
-  # Warning: this method modifies the +list+ parameter.  Once it has
-  # uninstalled a gem, it is removed from that list.
-
-  def remove(spec, list)
-    unless dependencies_ok? spec then
-      raise Gem::DependencyRemovalException,
-            "Uninstallation aborted due to dependent gem(s)"
-    end
-
-    unless path_ok? spec then
-      e = Gem::GemNotInHomeException.new \
-            "Gem is not installed in directory #{@gem_home}"
-      e.spec = spec
-
-      raise e
-    end
-
-    raise Gem::FilePermissionError, spec.installation_path unless
-      File.writable?(spec.installation_path)
-
-    FileUtils.rm_rf spec.full_gem_path
-
-    original_platform_name = [
-      spec.name, spec.version, spec.original_platform].join '-'
-
-    spec_dir = File.join spec.installation_path, 'specifications'
-    gemspec = File.join spec_dir, "#{spec.full_name}.gemspec"
-
-    unless File.exist? gemspec then
-      gemspec = File.join spec_dir, "#{original_platform_name}.gemspec"
-    end
-
-    FileUtils.rm_rf gemspec
-
-    cache_dir = File.join spec.installation_path, 'cache'
-    gem = File.join cache_dir, "#{spec.full_name}.gem"
-
-    unless File.exist? gem then
-      gem = File.join cache_dir, "#{original_platform_name}.gem"
-    end
-
-    FileUtils.rm_rf gem
-
-    Gem::DocManager.new(spec).uninstall_doc
-
-    say "Successfully uninstalled #{spec.full_name}"
-
-    list.delete spec
-  end
-
-  def path_ok?(spec)
-    full_path = File.join @gem_home, 'gems', spec.full_name
-    original_path = File.join @gem_home, 'gems', spec.original_name
-
-    full_path == spec.full_gem_path || original_path == spec.full_gem_path
-  end
-
-  def dependencies_ok?(spec)
-    return true if @force_ignore
-
-    deplist = Gem::DependencyList.from_source_index @source_index
-    deplist.ok_to_remove?(spec.full_name) || ask_if_ok(spec)
-  end
-
-  def ask_if_ok(spec)
-    msg = ['']
-    msg << 'You have requested to uninstall the gem:'
-    msg << "\t#{spec.full_name}"
-    spec.dependent_gems.each do |gem,dep,satlist|
-      msg <<
-        ("#{gem.name}-#{gem.version} depends on " +
-        "[#{dep.name} (#{dep.version_requirements})]")
-    end
-    msg << 'If you remove this gems, one or more dependencies will not be met.'
-    msg << 'Continue with Uninstall?'
-    return ask_yes_no(msg.join("\n"), true)
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/user_interaction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/user_interaction.rb
deleted file mode 100644
index 30a728c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/user_interaction.rb
+++ /dev/null
@@ -1,360 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-module Gem
-
-  ##
-  # Module that defines the default UserInteraction.  Any class including this
-  # module will have access to the +ui+ method that returns the default UI.
-
-  module DefaultUserInteraction
-
-    ##
-    # The default UI is a class variable of the singleton class for this
-    # module.
-
-    @ui = nil
-
-    ##
-    # Return the default UI.
-
-    def self.ui
-      @ui ||= Gem::ConsoleUI.new
-    end
-
-    ##
-    # Set the default UI.  If the default UI is never explicitly set, a simple
-    # console based UserInteraction will be used automatically.
-
-    def self.ui=(new_ui)
-      @ui = new_ui
-    end
-
-    ##
-    # Use +new_ui+ for the duration of +block+.
-
-    def self.use_ui(new_ui)
-      old_ui = @ui
-      @ui = new_ui
-      yield
-    ensure
-      @ui = old_ui
-    end
-
-    ##
-    # See DefaultUserInteraction::ui
-
-    def ui
-      DefaultUserInteraction.ui
-    end
-
-    ##
-    # See DefaultUserInteraction::ui=
-
-    def ui=(new_ui)
-      DefaultUserInteraction.ui = new_ui
-    end
-
-    ##
-    # See DefaultUserInteraction::use_ui
-
-    def use_ui(new_ui, &block)
-      DefaultUserInteraction.use_ui(new_ui, &block)
-    end
-
-  end
-
-  ##
-  # Make the default UI accessable without the "ui." prefix.  Classes
-  # including this module may use the interaction methods on the default UI
-  # directly.  Classes may also reference the ui and ui= methods.
-  #
-  # Example:
-  #
-  #   class X
-  #     include Gem::UserInteraction
-  #
-  #     def get_answer
-  #       n = ask("What is the meaning of life?")
-  #     end
-  #   end
-
-  module UserInteraction
-
-    include DefaultUserInteraction
-
-    [:alert,
-     :alert_error,
-     :alert_warning,
-     :ask,
-     :ask_yes_no,
-     :choose_from_list,
-     :say,
-     :terminate_interaction ].each do |methname|
-      class_eval %{
-        def #{methname}(*args)
-          ui.#{methname}(*args)
-        end
-      }, __FILE__, __LINE__
-    end
-  end
-
-  ##
-  # StreamUI implements a simple stream based user interface.
-
-  class StreamUI
-
-    attr_reader :ins, :outs, :errs
-
-    def initialize(in_stream, out_stream, err_stream=STDERR)
-      @ins = in_stream
-      @outs = out_stream
-      @errs = err_stream
-    end
-
-    ##
-    # Choose from a list of options.  +question+ is a prompt displayed above
-    # the list.  +list+ is a list of option strings.  Returns the pair
-    # [option_name, option_index].
-
-    def choose_from_list(question, list)
-      @outs.puts question
-
-      list.each_with_index do |item, index|
-        @outs.puts " #{index+1}. #{item}"
-      end
-
-      @outs.print "> "
-      @outs.flush
-
-      result = @ins.gets
-
-      return nil, nil unless result
-
-      result = result.strip.to_i - 1
-      return list[result], result
-    end
-
-    ##
-    # Ask a question.  Returns a true for yes, false for no.  If not connected
-    # to a tty, raises an exception if default is nil, otherwise returns
-    # default.
-
-    def ask_yes_no(question, default=nil)
-      unless @ins.tty? then
-        if default.nil? then
-          raise Gem::OperationNotSupportedError,
-                "Not connected to a tty and no default specified"
-        else
-          return default
-        end
-      end
-
-      qstr = case default
-             when nil
-               'yn'
-             when true
-               'Yn'
-             else
-               'yN'
-             end
-
-      result = nil
-
-      while result.nil?
-        result = ask("#{question} [#{qstr}]")
-        result = case result
-        when /^[Yy].*/
-          true
-        when /^[Nn].*/
-          false
-        when /^$/
-          default
-        else
-          nil
-        end
-      end
-
-      return result
-    end
-
-    ##
-    # Ask a question.  Returns an answer if connected to a tty, nil otherwise.
-
-    def ask(question)
-      return nil if not @ins.tty?
-
-      @outs.print(question + "  ")
-      @outs.flush
-
-      result = @ins.gets
-      result.chomp! if result
-      result
-    end
-
-    ##
-    # Display a statement.
-
-    def say(statement="")
-      @outs.puts statement
-    end
-
-    ##
-    # Display an informational alert.  Will ask +question+ if it is not nil.
-
-    def alert(statement, question=nil)
-      @outs.puts "INFO:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Display a warning in a location expected to get error messages.  Will
-    # ask +question+ if it is not nil.
-
-    def alert_warning(statement, question=nil)
-      @errs.puts "WARNING:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Display an error message in a location expected to get error messages.
-    # Will ask +question+ if it is not nil.
-
-    def alert_error(statement, question=nil)
-      @errs.puts "ERROR:  #{statement}"
-      ask(question) if question
-    end
-
-    ##
-    # Terminate the application with exit code +status+, running any exit
-    # handlers that might have been defined.
-
-    def terminate_interaction(status = 0)
-      raise Gem::SystemExitException, status
-    end
-
-    ##
-    # Return a progress reporter object chosen from the current verbosity.
-
-    def progress_reporter(*args)
-      case Gem.configuration.verbose
-      when nil, false
-        SilentProgressReporter.new(@outs, *args)
-      when true
-        SimpleProgressReporter.new(@outs, *args)
-      else
-        VerboseProgressReporter.new(@outs, *args)
-      end
-    end
-
-    ##
-    # An absolutely silent progress reporter.
-
-    class SilentProgressReporter
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message, terminal_message = nil)
-      end
-
-      def updated(message)
-      end
-
-      def done
-      end
-    end
-
-    ##
-    # A basic dotted progress reporter.
-
-    class SimpleProgressReporter
-      include DefaultUserInteraction
-
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message,
-                     terminal_message = "complete")
-        @out = out_stream
-        @total = size
-        @count = 0
-        @terminal_message = terminal_message
-
-        @out.puts initial_message
-      end
-
-      ##
-      # Prints out a dot and ignores +message+.
-
-      def updated(message)
-        @count += 1
-        @out.print "."
-        @out.flush
-      end
-
-      ##
-      # Prints out the terminal message.
-
-      def done
-        @out.puts "\n#{@terminal_message}"
-      end
-
-    end
-
-    ##
-    # A progress reporter that prints out messages about the current progress.
-
-    class VerboseProgressReporter
-      include DefaultUserInteraction
-
-      attr_reader :count
-
-      def initialize(out_stream, size, initial_message,
-                     terminal_message = 'complete')
-        @out = out_stream
-        @total = size
-        @count = 0
-        @terminal_message = terminal_message
-
-        @out.puts initial_message
-      end
-
-      ##
-      # Prints out the position relative to the total and the +message+.
-
-      def updated(message)
-        @count += 1
-        @out.puts "#{@count}/#{@total}: #{message}"
-      end
-
-      ##
-      # Prints out the terminal message.
-
-      def done
-        @out.puts @terminal_message
-      end
-    end
-  end
-
-  ##
-  # Subclass of StreamUI that instantiates the user interaction using STDIN,
-  # STDOUT, and STDERR.
-
-  class ConsoleUI < StreamUI
-    def initialize
-      super(STDIN, STDOUT, STDERR)
-    end
-  end
-
-  ##
-  # SilentUI is a UI choice that is absolutely silent.
-
-  class SilentUI
-    def method_missing(sym, *args, &block)
-      self
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/validator.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/validator.rb
deleted file mode 100644
index 4595ad9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/validator.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'find'
-
-require 'rubygems/digest/md5'
-require 'rubygems/format'
-require 'rubygems/installer'
-
-##
-# Validator performs various gem file and gem database validation
-
-class Gem::Validator
-
-  include Gem::UserInteraction
-
-  ##
-  # Given a gem file's contents, validates against its own MD5 checksum
-  # gem_data:: [String] Contents of the gem file
-
-  def verify_gem(gem_data)
-    raise Gem::VerificationError, 'empty gem file' if gem_data.size == 0
-
-    unless gem_data =~ /MD5SUM/ then
-      return # Don't worry about it...this sucks.  Need to fix MD5 stuff for
-      # new format
-      # FIXME
-    end
-
-    sum_data = gem_data.gsub(/MD5SUM = "([a-z0-9]+)"/,
-                             "MD5SUM = \"#{"F" * 32}\"")
-
-    unless Gem::MD5.hexdigest(sum_data) == $1.to_s then
-      raise Gem::VerificationError, 'invalid checksum for gem file'
-    end
-  end
-
-  ##
-  # Given the path to a gem file, validates against its own MD5 checksum
-  #
-  # gem_path:: [String] Path to gem file
-
-  def verify_gem_file(gem_path)
-    open gem_path, Gem.binary_mode do |file|
-      gem_data = file.read
-      verify_gem gem_data
-    end
-  rescue Errno::ENOENT
-    raise Gem::VerificationError, "missing gem file #{gem_path}"
-  end
-
-  private
-
-  def find_files_for_gem(gem_directory)
-    installed_files = []
-    Find.find(gem_directory) {|file_name|
-      fn = file_name.slice((gem_directory.size)..(file_name.size-1)).sub(/^\//, "")
-      if(!(fn =~ /CVS/ || File.directory?(fn) || fn == "")) then
-        installed_files << fn
-      end
-
-    }
-    installed_files
-  end
-
-  public
-
-  ErrorData = Struct.new :path, :problem
-
-  ##
-  # Checks the gem directory for the following potential
-  # inconsistencies/problems:
-  #
-  # * Checksum gem itself
-  # * For each file in each gem, check consistency of installed versions
-  # * Check for files that aren't part of the gem but are in the gems directory
-  # * 1 cache - 1 spec - 1 directory.
-  #
-  # returns a hash of ErrorData objects, keyed on the problem gem's name.
-
-  def alien
-    errors = {}
-
-    Gem::SourceIndex.from_installed_gems.each do |gem_name, gem_spec|
-      errors[gem_name] ||= []
-
-      gem_path = File.join(Gem.dir, "cache", gem_spec.full_name) + ".gem"
-      spec_path = File.join(Gem.dir, "specifications", gem_spec.full_name) + ".gemspec"
-      gem_directory = File.join(Gem.dir, "gems", gem_spec.full_name)
-
-      installed_files = find_files_for_gem(gem_directory)
-
-      unless File.exist? spec_path then
-        errors[gem_name] << ErrorData.new(spec_path, "Spec file doesn't exist for installed gem")
-      end
-
-      begin
-        verify_gem_file(gem_path)
-
-        open gem_path, Gem.binary_mode do |file|
-          format = Gem::Format.from_file_by_path(gem_path)
-          format.file_entries.each do |entry, data|
-            # Found this file.  Delete it from list
-            installed_files.delete remove_leading_dot_dir(entry['path'])
-
-            next unless data # HACK `gem check -a mkrf`
-
-            open File.join(gem_directory, entry['path']), Gem.binary_mode do |f|
-              unless Gem::MD5.hexdigest(f.read).to_s ==
-                Gem::MD5.hexdigest(data).to_s then
-                errors[gem_name] << ErrorData.new(entry['path'], "installed file doesn't match original from gem")
-              end
-            end
-          end
-        end
-      rescue Gem::VerificationError => e
-        errors[gem_name] << ErrorData.new(gem_path, e.message)
-      end
-
-      # Clean out directories that weren't explicitly included in the gemspec
-      # FIXME: This still allows arbitrary incorrect directories.
-      installed_files.delete_if {|potential_directory|
-        File.directory?(File.join(gem_directory, potential_directory))
-      }
-      if(installed_files.size > 0) then
-        errors[gem_name] << ErrorData.new(gem_path, "Unmanaged files in gem: #{installed_files.inspect}")
-      end
-    end
-
-    errors
-  end
-
-  if RUBY_VERSION < '1.9' then
-    class TestRunner
-      def initialize(suite, ui)
-        @suite = suite
-        @ui = ui
-      end
-
-      def self.run(suite, ui)
-        require 'test/unit/ui/testrunnermediator'
-        return new(suite, ui).start
-      end
-
-      def start
-        @mediator = Test::Unit::UI::TestRunnerMediator.new(@suite)
-        @mediator.add_listener(Test::Unit::TestResult::FAULT, &method(:add_fault))
-        return @mediator.run_suite
-      end
-
-      def add_fault(fault)
-        if Gem.configuration.verbose then
-          @ui.say fault.long_display
-        end
-      end
-    end
-
-    autoload :TestRunner, 'test/unit/ui/testrunnerutilities'
-  end
-
-  ##
-  # Runs unit tests for a given gem specification
-
-  def unit_test(gem_spec)
-    start_dir = Dir.pwd
-    Dir.chdir(gem_spec.full_gem_path)
-    $: << File.join(Gem.dir, "gems", gem_spec.full_name)
-    # XXX: why do we need this gem_spec when we've already got 'spec'?
-    test_files = gem_spec.test_files
-
-    if test_files.empty? then
-      say "There are no unit tests to run for #{gem_spec.full_name}"
-      return nil
-    end
-
-    gem gem_spec.name, "= #{gem_spec.version.version}"
-
-    test_files.each do |f| require f end
-
-    if RUBY_VERSION < '1.9' then
-      suite = Test::Unit::TestSuite.new("#{gem_spec.name}-#{gem_spec.version}")
-
-      ObjectSpace.each_object(Class) do |klass|
-        suite << klass.suite if (klass < Test::Unit::TestCase)
-      end
-
-      result = TestRunner.run suite, ui
-
-      alert_error result.to_s unless result.passed?
-    else
-      result = MiniTest::Unit.new
-      result.run
-    end
-
-    result
-  ensure
-    Dir.chdir(start_dir)
-  end
-
-  def remove_leading_dot_dir(path)
-    path.sub(/^\.\//, "")
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version.rb
deleted file mode 100644
index ff4a7bf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-##
-# The Version class processes string versions into comparable values
-
-class Gem::Version
-
-  include Comparable
-
-  attr_reader :ints
-
-  attr_reader :version
-
-  ##
-  # Returns true if +version+ is a valid version string.
-
-  def self.correct?(version)
-    case version
-    when Integer, /\A\s*(\d+(\.\d+)*)*\s*\z/ then true
-    else false
-    end
-  end
-
-  ##
-  # Factory method to create a Version object.  Input may be a Version or a
-  # String.  Intended to simplify client code.
-  #
-  #   ver1 = Version.create('1.3.17')   # -> (Version object)
-  #   ver2 = Version.create(ver1)       # -> (ver1)
-  #   ver3 = Version.create(nil)        # -> nil
-
-  def self.create(input)
-    if input.respond_to? :version then
-      input
-    elsif input.nil? then
-      nil
-    else
-      new input
-    end
-  end
-
-  ##
-  # Constructs a Version from the +version+ string.  A version string is a
-  # series of digits separated by dots.
-
-  def initialize(version)
-    raise ArgumentError, "Malformed version number string #{version}" unless
-      self.class.correct?(version)
-
-    self.version = version
-  end
-
-  def inspect # :nodoc:
-    "#<#{self.class} #{@version.inspect}>"
-  end
-
-  # Dump only the raw version string, not the complete object
-  def marshal_dump
-    [@version]
-  end
-
-  # Load custom marshal format
-  def marshal_load(array)
-    self.version = array[0]
-  end
-
-  ##
-  # Strip ignored trailing zeros.
-
-  def normalize
-    @ints = build_array_from_version_string
-
-    return if @ints.length == 1
-
-    @ints.pop while @ints.last == 0
-
-    @ints = [0] if @ints.empty?
-  end
-
-  ##
-  # Returns the text representation of the version
-  #
-  # return:: [String] version as string
-  #
-  def to_s
-    @version
-  end
-
-  ##
-  # Returns an integer array representation of this Version.
-
-  def to_ints
-    normalize unless @ints
-    @ints
-  end
-
-  def to_yaml_properties
-    ['@version']
-  end
-
-  def version=(version)
-    @version = version.to_s.strip
-    normalize
-  end
-
-  def yaml_initialize(tag, values)
-    self.version = values['version']
-  end
-
-  ##
-  # Compares this version with +other+ returning -1, 0, or 1 if the other
-  # version is larger, the same, or smaller than this one.
-
-  def <=>(other)
-    return nil unless self.class === other
-    return 1 unless other
-    @ints <=> other.ints
-  end
-
-  ##
-  # A Version is only eql? to another version if it has the same version
-  # string.  "1.0" is not the same version as "1".
-
-  def eql?(other)
-    self.class === other and @version == other.version
-  end
-
-  def hash # :nodoc:
-    @version.hash
-  end
-
-  # Return a new version object where the next to the last revision
-  # number is one greater. (e.g.  5.3.1 => 5.4)
-  def bump
-    ints = build_array_from_version_string
-    ints.pop if ints.size > 1
-    ints[-1] += 1
-    self.class.new(ints.join("."))
-  end
-
-  def build_array_from_version_string
-    @version.to_s.scan(/\d+/).map { |s| s.to_i }
-  end
-  private :build_array_from_version_string
-
-  #:stopdoc:
-
-  require 'rubygems/requirement'
-
-  # Gem::Requirement's original definition is nested in Version.
-  # Although an inappropriate place, current gems specs reference the nested
-  # class name explicitly.  To remain compatible with old software loading
-  # gemspecs, we leave a copy of original definition in Version, but define an
-  # alias Gem::Requirement for use everywhere else.
-
-  Requirement = ::Gem::Requirement
-
-  # :startdoc:
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version_option.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version_option.rb
deleted file mode 100644
index 1374018..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/rubygems/version_option.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'rubygems'
-
-# Mixin methods for --version and --platform Gem::Command options.
-module Gem::VersionOption
-
-  # Add the --platform option to the option parser.
-  def add_platform_option(task = command, *wrap)
-    OptionParser.accept Gem::Platform do |value|
-      if value == Gem::Platform::RUBY then
-        value
-      else
-        Gem::Platform.new value
-      end
-    end
-
-    add_option('--platform PLATFORM', Gem::Platform,
-               "Specify the platform of gem to #{task}", *wrap) do
-                 |value, options|
-      unless options[:added_platform] then
-        Gem.platforms = [Gem::Platform::RUBY]
-        options[:added_platform] = true
-      end
-
-      Gem.platforms << value unless Gem.platforms.include? value
-    end
-  end
-
-  # Add the --version option to the option parser.
-  def add_version_option(task = command, *wrap)
-    OptionParser.accept Gem::Requirement do |value|
-      Gem::Requirement.new value
-    end
-
-    add_option('-v', '--version VERSION', Gem::Requirement,
-               "Specify version of gem to #{task}", *wrap) do
-                 |value, options|
-      options[:version] = value
-    end
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/sax.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/sax.rb
deleted file mode 100644
index ce0d1d0..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/sax.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/sax'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/saxdriver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/saxdriver.rb
deleted file mode 100644
index b059955..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/saxdriver.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/saxdriver'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/ubygems.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/ubygems.rb
deleted file mode 100644
index fec880f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/ubygems.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file allows for the running of rubygems with a nice
-# command line look-and-feel: ruby -rubygems foo.rb
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
-require 'rubygems'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/clipboard.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/clipboard.rb
deleted file mode 100644
index dd35d9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/clipboard.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-###################################
-#
-# clipboard.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'sysmod'
-require 'Win32API'
-
-class Clipboard
-=begin
-== Clipboard
-A class for handling clipboard.
-
-=== Class Method
---- open(hwnd)
-    opens the clipboard and returns the instance.
-    When it is used in iterator style, clipboard is automatically closed
-    and returns whether it succeed to close clipboard or not.
-
-=== Methods
---- close
-    Closes clipboard.
---- enum_formats
-    Enums the clipboard formats to get from clipboard.
---- getData(format)
-    Gets data in the ((|format|)) from clipboard.
---- setData(format,data)
-    Sets data into the clipboard. (clipboard is cleared before set)
---- getText
-    same as getData(VR_CF_TEXT)
---- setText(string)
-    same as setData(VR_CF_TEXT, ((|string|)) )
-=end
-
-  include ClipboardFormat
-  GetClipboardData = Win32API.new('user32','GetClipboardData','I','L')
-  SetClipboardData = Win32API.new('user32','SetClipboardData','IL','L')
-  EnumClipboardFormats = Win32API.new('user32','EnumClipboardFormats','I','I')
-  OpenClipboard = Win32API.new('user32','OpenClipboard','L','I')
-  CloseClipboard = Win32API.new('user32','CloseClipboard','V','I')
-  EmptyClipboard = Win32API.new('user32','EmptyClipboard','V','I')
-
-#
-  VR_CF_TEXT = CF_OEMTEXT # modify if you like to use CF_TEXT than CF_OEMTEXT
-
-  def self.open(*args)
-    r = self.new(*args)
-    if iterator?
-      yield r
-      r.close
-    else
-      return r
-    end
-  end
-
-  def initialize(hwnd)
-    @hwnd = hwnd
-    @opened = (OpenClipboard.call(hwnd)!=0)
-    raise "fail to open clipboard" unless defined?(@opened)
-  end
-
-  def close
-    @opened = (CloseClipboard.call() == 0)
-  end
-
-  def getData(uformat)
-    raise "Clipboard not opened" unless defined?(@opened)
-    gmem = GetClipboardData.call(uformat.to_i)
-    raise "GetData failed" if gmem==0
-    GMEM::Get(gmem) if gmem!=0
-  end
-
-  def setData(uformat,data)
-    raise "Clipboard not opened" unless defined? @opened
-    EmptyClipboard.call
-    gmem = GMEM::AllocStr(66,data)
-    SetClipboardData.call(uformat,gmem)
-#    GMEM::Free(gmem)
-  end
-
-  def getText
-    r=getData(VR_CF_TEXT)
-    r.split(/\0/,0)[0]
-  end
-
-  def setText(str)
-    setData VR_CF_TEXT,str.to_s
-  end
-
-  def enum_formats
-    r=0
-    while true do
-      r=EnumClipboardFormats.call(r)
-      break if r==0
-      yield r 
-    end
-  end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/rubycompat.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/rubycompat.rb
deleted file mode 100644
index a2a4b9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/rubycompat.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'Win32API'
-
-if RUBY_VERSION < "1.6"  # for 1.5 or 1.4
-  def Win32API.new(dll,func,args,retval)
-    args = args.split(//) if args.is_a?(String)
-    super dll,func,args,retval
-  end
-  class Object
-    alias class :type
-  end
-
-elsif RUBY_VERSION < "1.7" # for 1.6
-
-
-#elsif RUBY_VERSION < "1.8" # for 1.7
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcomctl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcomctl.rb
deleted file mode 100644
index 5b5015e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcomctl.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class VRUpdown < VRNotifyControl
-  alias vrinitnew vrinit
-  undef vrinitnew
-  def vrinit
-    super
-    addNotifyHandler(WMsg::UDN_DELTAPOS,"deltapos",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_UPDOWN)
-#    addNotifyHandler(WMsg::UDN_DELTAPOS,"changed",
-#                    MSGTYPE::ARGSTRUCT,WStruct::NM_UPDOWN)
-    addFilterArg WMsg::UDN_DELTAPOS,"TF"
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcontrol.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcontrol.rb
deleted file mode 100644
index f46ec9d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrcontrol.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-unless defined?(VREdit) then
-  raise "compatibility file must be loaded after its original one."
-end
-
-class VREdit
-  alias vrinitnew vrinit
-  undef vrinitnew
-  def vrinit
-    super
-    addCommandHandler(0x300,"change",MSGTYPE::ARGNONE,nil) 
-    addCommandHandler(0x300,"changed",MSGTYPE::ARGNONE,nil)
-  end
-end
-
-class VRListbox
-  alias vrinitnew vrinit
-  undef vrinitnew
-  def vrinit
-    super
-    addCommandHandler(WMsg::LBN_SELCHANGE, "selchange",MSGTYPE::ARGNONE,nil)
-    addCommandHandler(WMsg::LBN_SELCHANGE, "selchanged",MSGTYPE::ARGNONE,nil)
-    set_liststrings
-  end
-
-  alias getCount      :countStrings
-  alias selectedIndex :selectedString
-  alias getString     :getTextOf
-  alias itemString    :getTextOf
-  alias setItemData   :setDataOf
-  alias getItemData   :getDataOf
-end
-
-class VRCombobox
-  alias vrinitnew vrinit
-  undef vrinitnew
-  def vrinit
-    super
-    set_liststrings
-    addCommandHandler(WMsg::CBN_SELCHANGE, "selchange",MSGTYPE::ARGNONE,nil)
-    addCommandHandler(WMsg::CBN_SELCHANGE, "selchanged",MSGTYPE::ARGNONE,nil)
-  end
-
-  alias getCount      :countStrings
-  alias selectedIndex :selectedString
-  alias getString     :getTextOf
-  alias itemString    :getTextOf
-  alias setItemData   :setDataOf
-  alias getItemData   :getDataOf
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrmmedia.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrmmedia.rb
deleted file mode 100644
index 78f4d3b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/compat/vrmmedia.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-unless defined?(VREdit) then
-  raise "compatibility file must be loaded after its original one."
-end
-
-
-class VRMediaView
-  def vr_e_compatibility
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMODE,"modechange",MSGTYPE::ARGINT,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYSIZE, "sizechange",MSGTYPE::ARGNONE,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMEDIA,"mediachange",MSGTYPE::ARGSTRING,nil)
-  end
-
-  alias vrinitnew vrinit
-  undef vrinitnew
-  def vrinit
-    super
-    vr_e_compatibility
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYERROR,"onerror",MSGTYPE::ARGINT,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMODE,"modechanged",MSGTYPE::ARGINT,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYSIZE, "sizechanged",MSGTYPE::ARGNONE,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMEDIA,"mediachanged",MSGTYPE::ARGSTRING,nil)
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/inifile.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/inifile.rb
deleted file mode 100644
index 2e8c3c8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/inifile.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-###############################
-#
-# contrib/inifile.rb
-#
-# These modules/classes are contributed by Yukimi_Sake-san.
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-
-class Inifile < Hash
-=begin
-===Inifile
-It makes inifile like Window's in working directory or absolute path.
-
-     [section]
-     key=value
-     ...
-
-===Methods
----deletekey(section,key)
-   Delete ((|key|)) and associated value in ((|section|)).
----erasesection(section)
-   Erase ((|section|)) and associated keys and values.
----read( section, key, [default=""])
-   Read value associated ((|key|)) in ((|section|)).
-   If ((|section|)) or ((|key|)) not exists ,value uses ((|default|)).
----write( section, key, value)
-   Write ((|value|)) in assiciated ((|key|)) and ((|section|)).
-   If ((|section|)) or ((|key|)) not exists , make them.
----frash
-   Write into ((|inifilename|)) of instance.
-=end
-  def initialize(iniFilename) #privatemethod. Use "new(inFilename)" instead.
-    sec={}
-    section=""
-    if File.dirname(iniFilename) == "."
-      @fn = Dir.getwd + "/" + iniFilename
-    else
-      @fn = iniFilename
-    end
-    if File.exist?(@fn) then
-      f=open @fn
-      f.each do |t|
-        if t =~ /\[.+\]/ then
-          section= t.sub(/\[(.+)\]/,'\1').strip
-          sec={section=>{}}
-          self.update sec
-        elsif t =~/.+=/ then
-          a=t.split(/=/)
-          val={a[0].strip=>a[1].strip}
-          self[section].update(val)
-        end
-      end
-      f.close
-    end
-  end
-
-  def deletekey(section,key)
-    self[section.strip].delete(key)
-  end
-
-  def erasesection(section)
-    self.delete(section)
-  end
-
-  def read( section, key, default="")
-    if self[section] && r=self[section][key] then r else default end
-  end
-
-  def write( section, key, value)
-    self.update({section.strip=>{}}) if self[section.strip] == nil
-    self[section.strip].update({key.strip => (value.to_s).strip})
-  end
-
-  def flash
-    f=open @fn,"w"
-    self.each do |k,v|
-      f.write'['+k+']' +"\n"
-      v.each do |k1,v1|
-         f.write k1+"="+v1.to_s+"\n"
-      end
-    end
-    f.close
-  end
-
-end
-
-=begin sample
-require 'inifile'
-
-ini =  Inifile.new ("test.ini") # generate instance and read if
-                                # targetfile exists
-
-p "writing as method"
-ini.write "section1","key11",11
-ini.write "section1","key12",12
-ini.write "section2","key21",21
-ini.write "section2","key22",22
-ini.write "section3","key31",31
-ini.write "section3","key32",32
-p ini.read "section1","key11",101
-p ini.read("section1","key13",103)
-p ini.read("section2","key22",202)
-p ini.read("section2","key23",203)
-p ini.read("section3","key32",302)
-p ini.read("section3","key33",303)
-p "writing as Hash"
-p ini["section1"]["key11"]
-p ini["section2"]
-#ini.deletekey("section1","key12")
-#ini.erasesection("section1")
-
-ini.flash  # now update inifile
-
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/msgboxconst.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/msgboxconst.rb
deleted file mode 100644
index 0b0afb8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/msgboxconst.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-###############################
-#
-# contrib/msgboxconst.rb
-#
-# These modules/classes are contributed by Yuya-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-#====================================================================#
-# WConst Module
-module WConst
-
-  MB_USERICON             = 128
-  MB_ICONASTERISK         = 64
-  MB_ICONEXCLAMATION      = 0x30
-  MB_ICONWARNING          = 0x30
-  MB_ICONERROR            = 16
-  MB_ICONHAND             = 16
-  MB_ICONQUESTION         = 32
-  MB_OK                   = 0
-  MB_ABORTRETRYIGNORE     = 2
-  MB_APPLMODAL            = 0
-  MB_DEFAULT_DESKTOP_ONLY = 0x20000
-  MB_HELP                 = 0x4000
-  MB_RIGHT                = 0x80000
-  MB_RTLREADING           = 0x100000
-  MB_TOPMOST              = 0x40000
-  MB_DEFBUTTON1           = 0
-  MB_DEFBUTTON2           = 256
-  MB_DEFBUTTON3           = 512
-  MB_DEFBUTTON4           = 0x300
-  MB_ICONINFORMATION      = 64
-  MB_ICONSTOP             = 16
-  MB_OKCANCEL             = 1
-  MB_RETRYCANCEL          = 5
-  MB_SERVICE_NOTIFICATION = 0x40000
-  MB_SETFOREGROUND        = 0x10000
-  MB_SYSTEMMODAL          = 4096
-  MB_TASKMODAL            = 0x2000
-  MB_YESNO                = 4
-  MB_YESNOCANCEL          = 3
-  MB_ICONMASK             = 240
-  MB_DEFMASK              = 3840
-  MB_MODEMASK             = 0x00003000
-  MB_MISCMASK             = 0x0000c000
-  MB_NOFOCUS              = 0x00008000
-  MB_TYPEMASK             = 15
-
-end
-
-#====================================================================#
-# End of source.
-#====================================================================#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/toolbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/toolbar.rb
deleted file mode 100644
index b45e602..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/toolbar.rb
+++ /dev/null
@@ -1,373 +0,0 @@
-###############################
-#
-# contrib/toolbar.rb
-#
-# These modules/classes are contributed by Yukimi_Sake-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-module WMsg
-# WM_USER                 = 0x400
-  TB_ENABLEBUTTON         = WM_USER + 1
-  TB_CHECKBUTTON          = WM_USER + 2
-  TB_PRESSBUTTON          = WM_USER + 3
-  TB_HIDEBUTTON           = WM_USER + 4
-  TB_INDETERMINATE        = WM_USER + 5
-  TB_ISBUTTONENABLED      = WM_USER + 9
-  TB_ISBUTTONCHECKED      = WM_USER + 10
-  TB_ISBUTTONPRESSED      = WM_USER + 11
-  TB_ISBUTTONHIDDEN       = WM_USER + 12
-  TB_ISBUTTONINDETERMINATE = WM_USER + 13
-  TB_SETSTATE             = WM_USER + 17
-  TB_GETSTATE             = WM_USER + 18
-  TB_ADDBITMAP            = WM_USER + 19
-  TB_ADDBUTTONS           = WM_USER + 20
-  TB_INSERTBUTTON         = WM_USER + 21
-  TB_DELETEBUTTON         = WM_USER + 22
-  TB_GETBUTTON            = WM_USER + 23
-  TB_BUTTONCOUNT          = WM_USER + 24
-  TB_COMMANDTOINDEX       = WM_USER + 25
-  TB_SAVERESTOREA         = WM_USER + 26
-  TB_SAVERESTOREW         = WM_USER + 76
-  TB_CUSTOMIZE            = WM_USER + 27
-  TB_ADDSTRINGA           = WM_USER + 28
-  TB_GETITEMRECT          = WM_USER + 29
-  TB_BUTTONSTRUCTSIZE     = WM_USER + 30
-  TB_SETBUTTONSIZE        = WM_USER + 31
-  TB_SETBITMAPSIZE        = WM_USER + 32
-  TB_AUTOSIZE             = WM_USER + 33
-  TB_GETTOOLTIPS          = WM_USER + 35
-  TB_SETTOOLTIPS          = WM_USER + 36
-  TB_SETPARENT            = WM_USER + 37
-  TB_SETROWS              = WM_USER + 39
-  TB_GETROWS              = WM_USER + 40
-  TB_GETBITMAPFLAGS       = WM_USER + 41
-  TB_SETCMDID             = WM_USER + 42
-  TB_CHANGEBITMAP         = WM_USER + 43
-  TB_GETBITMAP            = WM_USER + 44
-  TB_GETBUTTONTEXTA       = WM_USER + 45
-  TB_REPLACEBITMAP        = WM_USER + 46
-  TB_SETINDENT            = WM_USER + 47
-  TB_SETIMAGELIST         = WM_USER + 48
-  TB_GETIMAGELIST         = WM_USER + 49
-  TB_LOADIMAGES           = WM_USER + 50
-  TB_GETRECT              = WM_USER + 51 # wParam is the Cmd instead of index
-  TB_SETHOTIMAGELIST      = WM_USER + 52
-  TB_GETHOTIMAGELIST      = WM_USER + 53
-  TB_SETDISABLEDIMAGELIST = WM_USER + 54
-  TB_GETDISABLEDIMAGELIST = WM_USER + 55
-  TB_SETSTYLE             = WM_USER + 56
-  TB_GETSTYLE             = WM_USER + 57
-  TB_GETBUTTONSIZE        = WM_USER + 58
-  TB_SETBUTTONWIDTH       = WM_USER + 59
-  TB_SETMAXTEXTROWS       = WM_USER + 60
-  TB_GETTEXTROWS          = WM_USER + 61
-  TB_GETBUTTONTEXTW       = WM_USER + 75
-  TB_ADDSTRINGW           = WM_USER + 77
-
-  TBBF_LARGE              = 1
-
-  TB_GETBUTTONINFO      = WM_USER + 65
-  TB_SETBUTTONINFO      = WM_USER + 66
-
-
-  TBN_FIRST               = -700
-  TBN_GETBUTTONINFO       = TBN_FIRST-0
-  TBN_BEGINDRAG           = TBN_FIRST-1
-  TBN_ENDDRAG             = TBN_FIRST-2
-  TBN_BEGINADJUST         = TBN_FIRST-3
-  TBN_ENDADJUST           = TBN_FIRST-4
-  TBN_RESET               = TBN_FIRST-5
-  TBN_QUERYINSERT         = TBN_FIRST-6
-  TBN_QUERYDELETE         = TBN_FIRST-7
-  TBN_TOOLBARCHANGE       = TBN_FIRST-8
-  TBN_CUSTHELP            = TBN_FIRST-9
-  TBN_GETBUTTONINFOW      = TBN_FIRST-20
-end
-
-module WConst
-  TBSTATE_CHECKED       = 1
-  TBSTATE_PRESSED       = 2
-  TBSTATE_ENABLED       = 4
-  TBSTATE_HIDDEN        = 8
-  TBSTATE_INDETERMINATE = 16
-  TBSTATE_WRAP          = 32
-
-  TBSTYLE_BUTTON        = 0
-  TBSTYLE_SEP           = 1
-  TBSTYLE_CHECK         = 2
-  TBSTYLE_GROUP         = 4
-  TBSTYLE_CHECKGROUP    = (TBSTYLE_GROUP|TBSTYLE_CHECK)
-  TBSTYLE_TOOLTIPS      = 256
-  TBSTYLE_WRAPABLE      = 512
-  TBSTYLE_ALTDRAG       = 1024
-  TBSTYLE_FLAT          = 2048
-
-
-  TBIF_IMAGE = 0x00000001
-  TBIF_TEXT  = 0x00000002
-  TBIF_STATE = 0x00000004
-  TBIF_STYLE = 0x00000008
-  TBIF_LPARAM = 0x00000010
-  TBIF_COMMAND = 0x00000020
-  TBIF_SIZE = 0x00000040
-end
-
-module WStruct
-    TB_BUTTON = "IICCCCLI"
-                  # int iBitmap;int idCommand; BYTE fsState; BYTE fsStyle;
-                  # BYTE[2] fsReserved; DWORD dwData;int iString;
-    TBNOTIFY = NMHDR+"I"+TB_BUTTON+"IP"
-                  # NMHDR hdr; int iItem; TBBUTTON tbButton;
-                  # int cchText; LPTSTR pszText;
-    TBADDBITMAP="UU"
-                  #HINSTANCE hInst; UINT nID;
-
-end
-
-module VRToolbarUseable
-=begin
-== VRToolbarUseable
-  If you include this module in parent, you can solve the fault of a notify
-  events at the time of including a VRComCtlContainer, since toolbar buttons
-  are set to _vr_toolbar_buttons which is an original variable.
-  When not including this module , toolbar buttons are set to _vr_contorols
-  for back compatibility.
-=end
-  require 'vr/vrcontrol'
-  include VRStdControlContainer
-  attr_reader :_vr_toolbar_buttons
-  alias self_wmcommand_org self_wmcommand
-
-  def self_wmcommand(msg)
-    if @_vr_toolbar_buttons then
-      tbbid=LOWORD(msg.wParam)
-      tbbmid=HIWORD(msg.wParam)
-      c = @_vr_toolbar_buttons[tbbid]
-      if c then
-        c._vr_cmdhandlers[tbbmid].each{|shandler|
-          args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-          c.__send__(shandler[0],*args) if c.respond_to?(shandler[0])
-          msg.retval = controlmsg_dispatching(c,shandler[0],*args)
-        } if c._vr_cmdhandlers and c._vr_cmdhandlers[tbbmid]
-      end
-    end
-    self_wmcommand_org(msg)
-  end
-
-  def registerToolbarButton(c,name,id)
-    @_vr_toolbar_buttons = {} unless @_vr_toolbar_buttons
-    c.etc= id
-    c.name=name
-    @_vr_toolbar_buttons[id]=c
-  end
-
-end
-
-class VRToolbar < VRNotifyControl
-=begin
-== VRToolbar
-This class represents Toolbar.
-
-=== Methods
---- insertButton(i,name,style=TBSTYLE_BUTTON)
-    Inserts a button as ((|i|))-th button. ((|style|)) can be
-    a constant in WConst such as TBSTYLE_BUTTON (default),
-    TBSTYLE_SEP (separator), TBSTYLE_CHECK,...
---- addButton(style)
-    Adds a button at last of the buttons.
---- deleteButton(i)
-    Deletes a button at ((|i|))-th.
---- clearButtons
-    Deletes all buttons.
---- countButtons
-    Counts buttons.
---- setImagelist(imglist)
-    Sets the imagelist for the toolbar. ((|imglist|)) must be an instance of
-    SWin::Imagelist.
---- setParent(hwnd)
-    Sets the window to nofify command messages.
---- autoSize
-    Resizes toolbar.
---- indeterminateOf(i,bool=true)
-    Sets the indeterminate state of the ((|i|))-th button.
---- commandToIndex(id)
-    Retrieves the index number for the button whose id is ((|id|)).
-    This id is used in WM_COMMAND messages.
---- enableButton(i,bool=true)
-    Enables or disables the ((|i|))-th button.
---- getButtonStateOf(id)
-    Gets the state of the button whose id is ((|id|)).
---- setButtonStateOf(i,state)
-    Sets the state of the button whose id is ((|id|)).
---- setButtons(buttons)
-    Sets the array of ((|button|)) to a tool bar at once.
-    ((|button|)) must be an array of ((|[name,style]|))
---- enumButtons
-    Yields all toolbar buttons which are instance of
-    VRToolbar::VRToolbarButton.
-=== Event Handler
---- ????_clicked
-    Fired when the button clicked.
-
-== VRToolbar::VRToolbarButton
-This class is for each toolbar buttons. This resemble menus in using it.
-
-=== Methods
---- state
-    Returns the state of the button.
---- checked?
-    Returns true if the button is checked/pushed.
-=end
-
-  include WConst
-
-  class VRToolbarButton
-    attr_accessor :name, :etc
-    attr_reader :index, :toolbar
-
-    def _vr_cmdhandlers
-    {0=>[["clicked",MSGTYPE::ARGNONE,nil]]}
-    end
-
-    def initialize(i,toolbar)
-      @index, at toolbar = i,toolbar
-    end
-
-    def state
-      @toolbar.getButtonStateOf(@etc)
-    end
-
-    def checked?
-      (state&1)==1
-    end
-
-  end
-
-  def VRToolbar.Controltype() ["ToolbarWindow32",0] end
-
-  def vrinit
-    super
-    sendMessage WMsg::TB_BUTTONSTRUCTSIZE ,20,0
-    if defined?(VRTooltip) and defined?(@parent.tooltip) and @parent.tooltip then
-      sendMessage WMsg::TB_SETTOOLTIPS, at parent.tooltip.hWnd,0
-    end
-  end
-
-  def setButtonText(i,text)
-    if text.length>0 then
-      iid = indexToCommand(i)
-      tbi = [4*8,WConst::TBIF_TEXT,iid,0,0,0,text,text.length].pack("llllilpl")
-      sendMessage WMsg::TB_SETBUTTONINFO,i,tbi
-    end
-  end
-
-  def insertButton(i,name,tbStyle=TBSTYLE_BUTTON)
-    @_vr_tbbuttons = -1 unless defined?(@_vr_tbbuttons)
-    unless tbStyle == TBSTYLE_SEP
-      @_vr_tbbuttons += 1
-      iBitmap = @_vr_tbbuttons
-    else
-      iBitmap = 0
-    end
-    id = @parent.newControlID
-    tbb=@screen.application.arg2cstructStr(WStruct::TB_BUTTON,
-                                           iBitmap, id, 4, tbStyle, 0, 0, 0, 0)
-    sendMessage WMsg::TB_INSERTBUTTON,i,tbb
-    i = commandToIndex(id)
-    r=VRToolbarButton.new(i,self)
-    if @parent.respond_to?(:registerToolbarButton)
-      @parent.registerToolbarButton(r,name,id)
-    else
-      @parent.registerControl(r,name,id)
-    end
-    r
-  end
-
-  def addButton(name,tbStyle=TBSTYLE_BUTTON)
-    insertButton(0xffff,name,tbStyle)
-  end
-
-  def deleteButton(i)
-    sendMessage WMsg::TB_DELETEBUTTON,i,0
-  end
-
-  def countButtons
-    r=sendMessage WMsg::TB_BUTTONCOUNT,0,0
-  end
-
-  def clearButtons
-    (countButtons-1).downto(0) do |i|
-    deleteButton(i)
-    refresh
-    end
-  end
-
-  def setParent(win)
-    hwnd = if win.is_a?(SWin::Window) then win.hwnd else win end
-    sendMessage WMsg::TB_SETPARENT,hwnd,0
-  end
-
-  def autoSize
-    sendMessage WMsg::TB_AUTOSIZE ,0,0
-    refresh
-  end
-
-  def indeterminateOf(i,bool=true)
-    sendMessage WMsg::TB_INDETERMINATE,i,(if bool then -1 else 0 end)
-  end
-
-  def setImagelist(imagelist)
-    raise "not Imagelist" unless imagelist.is_a?(SWin::Imagelist)
-    self.properties["imagelist"]=imagelist
-    sendMessage WMsg::TB_SETIMAGELIST,0,imagelist.himagelist
-    refresh
-  end
-
-  def commandToIndex(id)
-    sendMessage WMsg::TB_COMMANDTOINDEX,id,0
-  end
-
-  def indexToCommand(i)
-    getButton(i)[1]
-  end
-
-  def checked?(i)
-    (getButtonStateOf(i) & 1)==1
-  end
-
-  def setButtonStateOf(id,state)
-    sendMessage WMsg::TB_SETSTATE,id,state
-  end
-
-  def getButtonStateOf(id)
-    sendMessage WMsg::TB_GETSTATE,id,0
-  end
-
-  def enableButton(id,bool=true)
-    sendMessage WMsg::TB_ENABLEBUTTON,id,(if bool then 1 else 0 end)
-  end
-
-  def getButton(i)
-    tbb=@screen.application.arg2cstructStr(WStruct::TB_BUTTON,
-                                            0,0,0,0,0,0,0,0)
-    sendMessage WMsg::TB_GETBUTTON ,i ,tbb
-    @screen.application.unpack(tbb,WStruct::TB_BUTTON)
-  end
-
-  def setButtons(a)
-    a.each{|i| addButton(i[0], (i[1] ? i[1] : TBSTYLE_BUTTON))}
-  end
-
-  def enumButtons
-    raise "Use VRToolbarUseable" unless parent.respond_to? :_vr_toolbar_buttons
-    n = countButtons
-    raise "unknown error" unless n == parent._vr_toolbar_buttons.size
-    parent._vr_toolbar_buttons.each{|key,val|
-      yield val
-    }
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrctlcolor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrctlcolor.rb
deleted file mode 100644
index 1fa0ba9..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrctlcolor.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-###############################
-#
-# contrib/vrctlcolor.rb
-#
-# These modules/classes are contributed by Shigitani-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-=begin
-== VRCtlColor 
-  VisualuRuby ‚É‚¨‚¢‚āAWM_CTLCOLOR ‚ðˆ—‚·‚郂ƒWƒ…[ƒ‹B
-
-=== Methods
---- addCtlColor(ctl)
-  WM_CTLCOLOR ‚ðŽó‚¯Žæ‚Á‚½‚Æ‚«‚ɏˆ—‚·‚é‘Ώۂ̃Rƒ“ƒgƒ[ƒ‹‚ð“o˜^‚·‚éB
-  ‚È‚¨A“o˜^‚·‚é‚Æ‚«‚É ctl ‚É‚Í setCtlTextColor, setCtlBkColor ‚Ì 2 ‚‚̓ÁˆÙƒƒ\ƒbƒh
-  ‚ª’ljÁ‚³‚ê‚Ü‚·B
-
---- setChildTextColor(ctl, textcolor)
---- setChildBkColor(ctl, bkcolor)
-  “o˜^‚µ‚½ƒRƒ“ƒgƒ[ƒ‹‚̃eƒLƒXƒgFA”wŒiF‚ðÝ’è‚·‚éB“o˜^‚³‚ê‚Ä‚¢‚È‚¢ƒRƒ“ƒg
-  ƒ[ƒ‹‚ðŽw’肵‚½ê‡‚͉½‚à‚µ‚È‚¢B
-
---- ctl.setCtlTextColor(textcolor)
---- ctl.setCtlBkColor(bkcolor)
-  addCtlColor ‚ŒljÁ‚³‚ꂽ“ÁˆÙƒƒ\ƒbƒhBƒRƒ“ƒgƒ[ƒ‹‚̃eƒLƒXƒgFA”wŒiF‚ðÝ’è
-  ‚·‚éB
-=end
-
-module WMsg
-  WM_CTLCOLORMSGBOX = 0x0132
-  WM_CTLCOLOREDIT = 0x0133
-  WM_CTLCOLORLISTBOX = 0x0134
-  WM_CTLCOLORBTN = 0x0135
-  WM_CTLCOLORDLG = 0x0136
-  WM_CTLCOLORSCROLLBAR = 0x0137
-  WM_CTLCOLORSTATIC = 0x0138
-end
-
-module VRCtlColor
-
-  include VRMessageHandler
-
-  def vrctlcolorinit
-    @win32_getBkColor = Win32API.new('gdi32.dll', 'GetBkColor', 'I', 'I')
-    @win32_setBkColor = Win32API.new('gdi32.dll', 'SetBkColor', 'II', 'I')
-    @win32_setTextColor = Win32API.new('gdi32.dll', 'SetTextColor', 'II', 'I')
-    @win32_createSolidBrush = Win32API.new('gdi32.dll', 'CreateSolidBrush', 'I', 'I')
-    @win32_deleteObject = Win32API.new('gdi32.dll', 'DeleteObject', 'I', 'I')
-
-    @_vrctlcolor = Hash.new
-    @_vrctlcolor_brush = Hash.new
-
-    msgs = [ WMsg::WM_CTLCOLORMSGBOX, WMsg::WM_CTLCOLOREDIT, WMsg::WM_CTLCOLORLISTBOX,
-             WMsg::WM_CTLCOLORBTN,    WMsg::WM_CTLCOLORDLG,  WMsg::WM_CTLCOLORSCROLLBAR,
-             WMsg::WM_CTLCOLORSTATIC ]
-    msgs.each {|msg| addHandler(msg, 'ctlcolor', MSGTYPE::ARGINTINT, nil) }
-    acceptEvents(msgs)
-    addHandler WMsg::WM_DESTROY,"_vrdestroy",MSGTYPE::ARGNONE,nil
-    acceptEvents [WMsg::WM_DESTROY]
-  end
-
-  def vrinit
-    super
-    vrctlcolorinit
-  end
-
-  def addCtlColor(ctl)
-    @_vrctlcolor[ctl.hWnd] = [nil, nil]
-    def ctl.setCtlTextColor(textcolor)
-      parent.setChildTextColor(self, textcolor)
-    end
-    def ctl.setCtlBkColor(bkcolor)
-      parent.setChildBkColor(self, bkcolor)
-    end
-  end
-
-  def setChildTextColor(ctl, textcolor)
-    return unless @_vrctlcolor.has_key?(ctl.hWnd)
-    @_vrctlcolor[ctl.hWnd][0] = textcolor
-  end
-
-  def setChildBkColor(ctl, bkcolor)
-    return unless @_vrctlcolor.has_key?(ctl.hWnd)
-    @_vrctlcolor[ctl.hWnd][1] = bkcolor
-  end
-
-  def self_ctlcolor(hDC, hWnd)
-    return nil unless @_vrctlcolor.has_key?(hWnd)
-    textcolor, bkcolor = @_vrctlcolor[hWnd]
-    @win32_setTextColor.call(hDC, textcolor) unless textcolor.nil?
-    bkcolor = @win32_getBkColor.call(hDC) if bkcolor.nil?
-    @win32_setBkColor.call(hDC, bkcolor)
-    SKIP_DEFAULTHANDLER[get_brush(bkcolor)]
-  end
-
-  def get_brush(bkcolor)
-    unless @_vrctlcolor_brush.has_key?(bkcolor) then
-      @_vrctlcolor_brush[bkcolor] = @win32_createSolidBrush.call(bkcolor)
-    end
-    @_vrctlcolor_brush[bkcolor]
-  end
-
-  def self__vrdestroy
-    @_vrctlcolor_brush.values.each {|brush| @win32_deleteObject.call(brush) }
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrhotkey.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrhotkey.rb
deleted file mode 100644
index c2a7b7e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrhotkey.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-###############################
-#
-# contrib/vrhotkey.rb
-#
-# These modules/classes are contributed by Yuya-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-
-#====================================================================#
-# WConst Module
-module WConst
-  WM_HOTKEY = 786
-end
-
-#====================================================================#
-# VRHotKey Module
-module VRHotKey
-
-  #==================================================================#
-  # Instance Methods
-
-  def vrinit
-    super
-    self.addHandler(WConst::WM_HOTKEY, 'hotkey', MSGTYPE::ARGWINT, nil)
-    self.addEvent(WConst::WM_HOTKEY)
-  end
-
-end
-
-#====================================================================#
-# End of source.
-#====================================================================#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrlistviewex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrlistviewex.rb
deleted file mode 100644
index be1334c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrlistviewex.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-###############################
-#
-# contrib/vrlistviewex.rb
-#
-# These modules/classes are contributed by Yuya-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-#====================================================================#
-# VRListview Class
-class VRListview
-
-  #==================================================================#
-  # Private Instance Methods
-
-  def exstyle_getter(style)
-    return (self.lvexstyle & style) == style
-  end
-  private :exstyle_getter
-
-  def exstyle_setter(style, bool)
-    if bool
-      self.lvexstyle |= style
-    else
-      self.lvexstyle &= 0xFFFFFFFF - style
-    end
-  end
-  private :exstyle_setter
-
-  #==================================================================#
-  # Instance Methods
-
-  def row_select
-    return exstyle_getter(WExStyle::LVS_EX_FULLROWSELECT)
-  end
-
-  def row_select=(bool)
-    exstyle_setter(WExStyle::LVS_EX_FULLROWSELECT, bool)
-  end
-
-  def grid_lines
-    return exstyle_getter(WExStyle::LVS_EX_GRIDLINES)
-  end
-
-  def grid_lines=(bool)
-    exstyle_setter(WExStyle::LVS_EX_GRIDLINES, bool)
-  end
-
-  def hide_selection
-    return !self.winstyle.getter(WStyle::LVS_SHOWSELALWAYS)
-  end
-
-  def hide_selection=(bool)
-    self.winstyle.setter(WStyle::LVS_SHOWSELALWAYS, !bool)
-  end
-
-  def extended_select
-    return !self.winstyle.getter(WStyle::LVS_SINGLESEL)
-  end
-
-  def extended_select=(bool)
-    self.winstyle.setter(WStyle::LVS_SINGLESEL, !bool)
-  end
-
-end
-
-#====================================================================#
-# End of source.
-#====================================================================#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrstdscrollbar.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrstdscrollbar.rb
deleted file mode 100644
index 25de22e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrstdscrollbar.rb
+++ /dev/null
@@ -1,414 +0,0 @@
-###############################
-#
-# contrib/vrctlcolor.rb
-#
-# These module is contributed by yas-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-
-=begin
-== VRStdScrollbar
-ƒEƒCƒ“ƒhƒE‚͐‚’¼‚Ɛ…•½‚̃XƒNƒ[ƒ‹ƒo[‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-ƒXƒNƒ[ƒ‹ƒo[‚̓EƒCƒ“ƒhƒEƒXƒ^ƒCƒ‹‚ÌWS_VSCROLL‚ÆWS_HSCROLL‚ðŽw’è‚·‚邱‚Æ‚Å•\Ž¦‚³‚ê‚Ü‚·B
-‚±‚̃‚ƒWƒ…[ƒ‹‚̓EƒCƒ“ƒhƒE‚̃XƒNƒ[ƒ‹ƒo[‚ðˆ—‚µ‚Ü‚·B
-
-‚±‚̃‚ƒWƒ…[ƒ‹‚ðƒRƒ“ƒgƒ[ƒ‹‚É‘g‚ݍž‚ñ‚¾‚Æ‚«‚ÌŒ‹‰Ê‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B
-
-* –â‘è‚È‚µ
-  * VRForm
-  * VRPanel
-  * VRCanvasPanel
-  * VRButton
-  * VRCheckbox
-  * VRRadiobutton
-* SDK‚Å’è‹`Ï‚݁B‘g‚ݍž‚Þ•K—v‚Í‚È‚¢
-  * VREdit
-  * VRText
-  * VRRichedit
-  * VRList
-* –â‘è‚ ‚è
-  * VRCombobox
-  * VREditCombobox
-  * VRGroupbox
-  * VRStatic
-  
-=== Methods
---- getVScrollRange
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚͈̔͂ð•Ô‚µ‚Ü‚·B[((|min|)),((|max|))]‚̃tƒH[ƒ}ƒbƒg‚Å•Ô‚è‚Ü‚·B
-    ((|min|))‚͍ŏ¬’lA((|max|))‚͍őå’l‚Å‚·B
-
---- setVScrollRange(min,max)
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚͈̔͂ðÝ’肵‚Ü‚·B ((|min|)) ‚͍ŏ¬’lA ((|max|)) ‚͍őå’l‚Å‚·B
-
---- getHScrollRange
---- setHScrollRange
-    …•½ƒXƒNƒ[ƒ‹ƒo[‚͈̔͂ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B ((<getVScrollRange>)),
-    ((<setVScrollRange>)) ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-    
---- vscroll_position
---- vscroll_position=(val)
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚̈ʒu‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-
---- hscroll_position
---- hscroll_position=(val)
-    …•½ƒXƒNƒ[ƒ‹ƒo[‚̈ʒu‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-
---- vscroll_pagesize
---- vscroll_pagesize=(val)
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚̃y[ƒWƒTƒCƒY‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ƒXƒNƒ[ƒ‹ƒo[‚́A‘S‘Ì‚Ì‘å‚«‚³‚Æ‚±‚Ì’l‚̔䂩‚ç“KØ‚Ȃ‚܂݂̑傫‚³‚ð‹‚ß‚Ü‚·B
-
---- hscroll_pagesize
---- hscroll_pagesize=(val)
-    …•½ƒXƒNƒ[ƒ‹ƒo[‚̃y[ƒWƒTƒCƒY‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ((<vscroll_pagesize>)),((<vscroll_pagesize=>))‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-
---- vscroll_smallstep
---- vscroll_smallstep=(val)
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚̏¬‚³‚¢ˆÚ“®—Ê‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ƒXƒNƒ[ƒ‹ƒo[‚Ì–îˆóƒ{ƒ^ƒ“‚ªƒNƒŠƒbƒN‚³‚ꂽê‡A‚±‚Ì’l‚̓XƒNƒ[ƒ‹ƒo[‚Ì
-    ˆÊ’u‚Ö‰Á‚¦‚ç‚ê‚Ü‚·B
-    
---- hscroll_smallstep
---- hscroll_smallstep=(val)
-    …•½ƒXƒNƒ[ƒ‹ƒo[‚̏¬‚³‚¢ˆÚ“®—Ê‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ((<hscroll_smallstep>)),((<hscroll_smallstep=>))‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-    
---- vscroll_longstep
---- vscroll_longstep=(val)
-    ‚’¼ƒXƒNƒ[ƒ‹ƒo[‚Ì‘å‚«‚¢ˆÚ“®—Ê‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ƒXƒNƒ[ƒ‹ƒo[‚Ì”wŒi‚ªƒNƒŠƒbƒN‚³‚ꂽê‡A‚±‚Ì’l‚̓XƒNƒ[ƒ‹ƒo[‚Ì
-    ˆÊ’u‚Ö‰Á‚¦‚ç‚ê‚Ü‚·B
-
---- hscroll_longstep
---- hscroll_longstep=(val)
-    …•½ƒXƒNƒ[ƒ‹ƒo[‚Ì‘å‚«‚¢ˆÚ“®—Ê‚ðŽæ“¾‚Ü‚½‚͐ݒ肵‚Ü‚·B
-    ((<hscroll_longstep>)),((<hscroll_longstep=>))‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-
-=== Events
---- vscroll(code)
---- hscroll(code)
-    ‚’¼‚Ü‚½‚͐…•½ƒXƒNƒ[ƒ‹ƒo[‚ª“®‚©‚³‚ꂽB((|code|))‚̓†[ƒU[‚ª—v‹‚µ‚½
-    ƒXƒNƒ[ƒ‹“®ì‚̈Ӗ¡‚ðŽ¦‚µ‚Ü‚·BÚ‚µ‚­‚ÍMSDN‚ÌWM_VSCROLL‚̍€‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-
-== VRStdScrollbar
-The windows have vertical and the horizontal scroll bar.
-The scroll bar is displayed by specifying WS_VSCROLL or WS_HSCROLL of the window style. 
-This module processes the scroll bars on the window. 
-
-Result of using this module
-
-* no problem
-  * VRForm
-  * VRPanel
-  * VRCanvasPanel
-  * VRButton
-  * VRCheckbox
-  * VRRadiobutton
-* defined by SDK. no necessity to include. 
-  * VREdit
-  * VRText
-  * VRRichedit
-  * VRList
-* not effective. 
-  * VRCombobox
-  * VREditCombobox
-  * VRGroupbox
-  * VRStatic
-
-=== Methods
---- getVScrollRange
-    returns the range of the vertical scroll bars. It returns by the format of 
-    [((|min|)), ((|max|))] .((|min|)) is the minimum value and ((|max|)) is maximum.
-
---- setVScrollRange(min,max)
-    Specifies the range of the vertical scroll bar.
-    ((|min|)) is the minimum value and ((|max|)) is maximum.
-
---- getHScrollRange
---- setHScrollRange
-    Retrieves or specifies range of the horizontal scroll bar.
-    Refer to ((<getVScrollRange>)) , ((<setVScrollRange>))
-    
---- vscroll_position
---- vscroll_position=(val)
-    Retrieves or Specifies position of the vertical scroll bar.
-
---- hscroll_position
---- hscroll_position=(val)
-    Retrieves or Specifies position of the horizontal scroll bar.
-
---- vscroll_pagesize
---- vscroll_pagesize=(val)
-    Retrieves or Specifies the page size of vertical scroll bar.
-    A scroll bar uses this value to determine the appropriate size of 
-    the proportional scroll box. 
-
---- hscroll_pagesize
---- hscroll_pagesize=(val)
-    Retrieves or Specifies the page size of horizontal scroll bar.
-    Refer to ((<vscroll_pagesize>)),((<vscroll_pagesize=>))
-
---- vscroll_smallstep
---- vscroll_smallstep=(val)
-    Retrieves or Specifies the small step of the vertical scroll bar. 
-    If the arrow button of the scroll bar was clicked, this value is added to
-    the position of the scroll bar. 
-
---- hscroll_smallstep
---- hscroll_smallstep=(val)
-    Retrieves or Specifies the small step of the horizontal scroll bar. 
-    Refer to ((<hscroll_smallstep>)),((<hscroll_smallstep=>))
-
---- vscroll_longstep
---- vscroll_longstep=(val)
-    Retrieves or Specifies the long step of the vertical scroll bar. 
-    If the background of the scroll bar was clicked, this value is added to
-    the position of the scroll bar. 
-
---- hscroll_longstep
---- hscroll_longstep=(val)
-    Retrieves or Specifies the long step of the horizontal scroll bar. 
-    Refer to ((<hscroll_longstep>)),((<hscroll_longstep=>))
-
-=== Events
---- vscroll(code)
---- hscroll(code)
-    the vertical or horizontal scroll bar was moved.((|code|)) that indicates 
-    the user's scrolling request. Refer to the paragraph of WM_VSCROLL in MSDN
-    
-=end
-
-module VRStdScrollbar
-  include VRMessageHandler
-  
-  SB_HORZ=0
-  SB_VERT=1
-  SB_CTL=2
-  
-  private
-  
-  #mask of scroll info
-  SIF_RANGE=0x0001
-  SIF_PAGE=0x0002
-  SIF_POS=0x0004
-  SIF_DISABLENOSCROLL=0x0008
-  SIF_TRACKPOS=0x0010
-  SIF_ALL=(SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
-  
-  SetScrollInfo=Win32API.new('user32','SetScrollInfo',%w(l l p l),'l')
-  GetScrollInfo=Win32API.new('user32','GetScrollInfo',%w(l l p),'l')
-  
-  def stdscrollbarinit
-    addHandler WMsg::WM_HSCROLL,"hstdscroll",MSGTYPE::ARGINTINT,nil
-    addHandler WMsg::WM_VSCROLL,"vstdscroll",MSGTYPE::ARGINTINT,nil
-    acceptEvents [ WMsg::WM_HSCROLL,WMsg::WM_VSCROLL]
-    @scroll_smallstep_vert=1 ; @scroll_smallstep_horz=1
-    @scroll_longstep_vert=10 ; @scroll_longstep_horz=10
-  end
-  
-  def setScrollInfo(btyp,mask=SIF_ALL,min=0,max=100,page=100,pos=0)
-    si=[4*7,mask,min,max,page,pos,0].pack(WStruct::SCROLLINFO)
-    SetScrollInfo.call(self.hWnd,btyp,si,1)
-  end
-  
-  def getScrollInfo(btyp)
-    si=[4*7,SIF_ALL,0,0,0,0,0].pack(WStruct::SCROLLINFO)
-    GetScrollInfo.call(self.hWnd,btyp,si)
-    return si.unpack(WStruct::SCROLLINFO)
-  end
-  
-  public
-  
-  def vrinit
-    super
-    stdscrollbarinit
-  end
-  
-  def getScrollRange(bar_type)
-    return getScrollInfo(bar_type)[2,3]
-  end
-  
-  def getVScrollRange
-    return getScrollRange(SB_VERT)
-  end
-  
-  def getHScrollRange
-    return getScrollRange(SB_HORZ)
-  end
-  
-  def setScrollRange(min,max,bar_type)
-    setScrollInfo(bar_type,SIF_RANGE,min.to_i,max.to_i)
-  end
-  
-  def setVScrollRange(min,max)
-    setScrollRange(min,max,SB_VERT)
-  end
-  
-  def setHScrollRange(min,max)
-    setScrollRange(min,max,SB_HORZ)
-  end
-  
-  def scroll_position(bar_type)
-    return getScrollInfo(bar_type)[5]
-  end
-  
-  def vscroll_position
-    return scroll_position(SB_VERT)
-  end
-  
-  def hscroll_position
-    return scroll_position(SB_HORZ)
-  end
-  
-  def setScrollPosition(val,bar_type)
-    setScrollInfo(bar_type,SIF_POS,0,0,0,val.to_i)
-  end
-  
-  def vscroll_position=(val)
-    setScrollPosition(val,SB_VERT)
-  end
-  
-  def hscroll_position=(val)
-    setScrollPosition(val,SB_HORZ)
-  end
-  
-  def scroll_pagesize(bar_type)
-    return getScrollInfo(bar_type)[4]
-  end
-  
-  def vscroll_pagesize
-    return scroll_pagesize(SB_VERT)
-  end
-  
-  def hscroll_pagesize
-    return scroll_pagesize(SB_HORZ)
-  end
-  
-  def setScrollPagesize(p,bar_type)
-    setScrollInfo(bar_type,SIF_PAGE,0,0,p.to_i,0)
-  end
-  
-  def vscroll_pagesize=(p)
-    setScrollPagesize(p,SB_VERT)
-  end
-  
-  def hscroll_pagesize=(p)
-    setScrollPagesize(p,SB_HORZ)
-  end
-  
-  def scroll_smallstep(bar_type)
-    res=case bar_type
-    when SB_HORZ
-      @scroll_smallstep_horz
-    when SB_VERT
-      @scroll_smallstep_vert
-    else
-      1
-    end
-    return res
-  end
-  
-  def vscroll_smallstep
-    return scroll_smallstep(SB_VERT)
-  end
-  
-  def hscroll_smallstep
-    return scroll_smallstep(SB_HORZ)
-  end
-  
-  def setScrollSmallstep(stp,bar_type)
-    case bar_type
-    when SB_HORZ
-      @scroll_smallstep_horz=stp
-    when SB_VERT
-      @scroll_smallstep_vert=stp
-    end
-  end
-  
-  def vscroll_smallstep=(stp)
-    setScrollSmallstep(stp,SB_VERT)
-  end
-  
-  def hscroll_smallstep=(stp)
-    setScrollSmallstep(stp,SB_HORZ)
-  end
-  
-  def scroll_longstep(bar_type)
-    res=case bar_type
-    when SB_HORZ
-      @scroll_longstep_horz
-    when SB_VERT
-      @scroll_longstep_vert
-    else
-      10
-    end
-    return res
-  end
-  
-  def vscroll_longstep
-    return scroll_longstep(SB_VERT)
-  end
-  
-  def hscroll_longstep
-    return scroll_longstep(SB_HORZ)
-  end
-  
-  def setScrollLongstep(stp,bar_type)
-    case bar_type
-    when SB_HORZ
-      @scroll_longstep_horz=stp
-    when SB_VERT
-      @scroll_longstep_vert=stp
-    end
-  end
-  
-  def vscroll_longstep=(stp)
-    setScrollLongstep(stp,SB_VERT)
-  end
-  
-  def hscroll_longstep=(stp)
-    setScrollLongstep(stp,SB_HORZ)
-  end
-  
-  def self_vrstdscroll(wparam,hwnd,bar_type)
-    srl=self
-    code=LOWORD(wparam)
-    if code==4 then
-      pos=HIWORD(wparam)
-    else
-      pos=srl.scroll_position(bar_type)
-    end
-    new_pos=case code
-    when 0 
-      pos-srl.scroll_smallstep(bar_type)
-    when 1
-      pos+srl.scroll_smallstep(bar_type)
-    when 2
-      pos-srl.scroll_longstep(bar_type)
-    when 3
-      pos+srl.scroll_longstep(bar_type)
-    when 4
-      pos
-    else
-      nil
-    end
-    if new_pos
-      srl.setScrollPosition(new_pos,bar_type)
-    end
-    return code
-  end
-  
-  def self_hstdscroll(wparam,hwnd)
-    code=self_vrstdscroll(wparam,hwnd,SB_HORZ)
-    selfmsg_dispatching(:hscroll,code)
-  end
-  
-  def self_vstdscroll(wparam,hwnd)
-    code=self_vrstdscroll(wparam,hwnd,SB_VERT)
-    selfmsg_dispatching(:vscroll,code)
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrtrayballoon.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrtrayballoon.rb
deleted file mode 100644
index 0f04e59..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrtrayballoon.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-###############################
-#
-# contrib/vrtrayballoon.rb
-#
-# These modules/classes are contributed by Drew Willcoxon.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# The original is at http://cs.stanford.edu/people/adw/vrballoon.zip
-#
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-module VRTrayiconFeasible
-  +  NIF_INFO    = 16   # Shell32.dll version 5.0 (Win2000/Me and later)
-  # Tooltip balloon icon flags
-  NIIF_NONE    = 0
-  NIIF_INFO    = 1
-  NIIF_WARNING = 2
-  NIIF_ERROR   = 3
-  NIIF_USER    = 4   # WinXP SP2 and later
-  NIIF_NOSOUND = 16  # Shell32.dll version 6.0 (WinXP/Vista)
-
-  # Tooltip balloon messages
-  NIN_BALLOONSHOW      = WMsg::WM_USER + 2
-  NIN_BALLOONHIDE      = WMsg::WM_USER + 3
-  NIN_BALLOONTIMEOUT   = WMsg::WM_USER + 4
-  NIN_BALLOONUSERCLICK = WMsg::WM_USER + 5
-
-  def modify_trayicon5(hicon,infotitle,infotext,infoicon=NIIF_NONE,
-                       infotimeout=20000,iconid=0)
-    flag = NIF_INFO
-    if hicon then
-      flag |= NIF_ICON
-    end
-    size = 4*10 + 128 + 256 + 64
-    s = [size, self.hWnd, iconid, flag, 0, hicon.to_i].pack(NOTIFYICONDATA_a) <<
-        ['', 0, 0, infotext.to_s[0, 256], infotimeout, infotitle.to_s[0, 64],
-         infoicon].pack('a128IIa256Ia64I')
-    Shell_NotifyIcon.call(NIM_MODIFY,s)
-  end
-
-  def self__vr_traynotify(wparam,lparam)
-    case lparam
-    when WMsg::WM_MOUSEMOVE
-      selfmsg_dispatching("trayrbuttondown",wparam)
-    when WMsg::WM_RBUTTONUP
-      selfmsg_dispatching("trayrbuttonup",wparam)
-    when NIN_BALLOONSHOW
-      selfmsg_dispatching("trayballoonshow",wparam)
-    when NIN_BALLOONHIDE
-      selfmsg_dispatching("trayballoonhide",wparam)
-    when NIN_BALLOONTIMEOUT
-      selfmsg_dispatching("trayballoontimeout",wparam)
-    when NIN_BALLOONUSERCLICK
-      selfmsg_dispatching("trayballoonclicked",wparam)
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrwincomponent.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrwincomponent.rb
deleted file mode 100644
index b5fcf65..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/contrib/vrwincomponent.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-###############################
-#
-# contrib/vrwincomponent.rb
-#
-# These modules/classes are contributed by Yuya-san.
-# Modified by nyasu <nyasu at osk.3web.ne.jp>
-# Distributed at http://vruby.sourceforge.net/index.html
-#
-###############################
-
-#====================================================================#
-# VRWinComponent Class
-class VRWinComponent
-
-  #==================================================================#
-  # Instance Methods
-
-  def maximizebox
-    return self.winstyle.getter(WStyle::WS_MAXIMIZEBOX)
-  end
-
-  def maximizebox=(bool)
-    self.winstyle.setter(WStyle::WS_MAXIMIZEBOX, bool)
-  end
-
-  def minimizebox
-    return self.winstyle.getter(WStyle::WS_MINIMIZEBOX)
-  end
-
-  def minimizebox=(bool)
-    self.winstyle.setter(WStyle::WS_MINIMIZEBOX, bool)
-  end
-
-  def sizebox
-    return self.winstyle.getter(WStyle::WS_SIZEBOX)
-  end
-
-  def sizebox=(bool)
-    self.winstyle.setter(WStyle::WS_SIZEBOX, bool)
-  end
-
-  def tabstop
-    return self.winstyle.getter(WStyle::WS_TABSTOP)
-  end
-
-  def tabstop=(bool)
-    self.winstyle.setter(WStyle::WS_TABSTOP, bool)
-  end
-
-end
-
-#====================================================================#
-# End of source.
-#====================================================================#
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/dragdropformat.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/dragdropformat.rb
deleted file mode 100644
index 5d3015f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/dragdropformat.rb
+++ /dev/null
@@ -1,209 +0,0 @@
-###################################
-#
-# dragdropformat.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2002-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'sysmod'
-require 'Win32API'
-
-module ClipboardFormat
-  RegisterClipboardFormat = 
-      Win32API.new("user32","RegisterClipboardFormat","P","I")
-
-  CF_URL = RegisterClipboardFormat.call("UniformResourceLocator")
-
-end
-
-class DragDropObject
-=begin
-== DragDropObject
-A capsule for OLE Drag and Drop
-This is just a base class. Don't use this directly.
-
-=== Methods
---- handle
-    Returns a global heap handle containing the file pathes.
---- free_handle
-    Tries to free the handle.
-    Please check you really need to free it, because sometimes your OS will 
-    free it automatically at the appropriate timing.
-=end
-
-  def initialize
-    @__binarydata=""
-  end
-  def handle
-    @handle=GMEM::AllocStr(0x2000, at __binarydata)
-  end
-  def free_handle
-    GMEM::Free(@handle)
-    @handle=0
-  end
-
-  def objectformat
-    self.class::FormatId
-  end
-
-end
-
-class DragDropText < DragDropObject
-=begin
-== DragDropText
-   This class deals the structure for drag-and-drop files.
-
-=== Class Methods
---- set(files)
-    Creates object and sets the file pathes in ((|files|)) to the object.
---- get(handle)
-    Create object and sets the file pathes containing in ((|handle|)).
-    The ((|handle|)) is a global heap handle.
-=== Methods
---- text
-    Returns the text.
-=end
-
-  FormatName="CF_TEXT"
-  FormatId=ClipboardFormat::CF_TEXT
-
-  def initialize(text,handle=0)
-    @__binarydata = @__texts = text.to_str.dup
-    @handle=handle
-  end
-
-  def self.set(texts)
-    self.new(texts)
-  end
-
-  def self.get(handle)
-    self.new(GMEM::Get(handle),handle)
-  end
-
-  def text
-    @__texts.dup
-  end
-end
-
-class DragDropFiles < DragDropObject
-=begin
-== DragDropFiles
-   This class deals the structure for drag-and-drop files.
-
-=== Class Methods
---- set(files)
-    Creates object and sets the file pathes in ((|files|)) to the object.
---- get(handle)
-    Create object and sets the file pathes containing in ((|handle|)).
-    The ((|handle|)) is a global heap handle.
-=== Methods
---- files
-    Returns the file pathes.
-=end
-
-  FormatName = "CF_HDROP"
-  FormatId = ClipboardFormat::CF_HDROP
-
-  DragQueryFile   = Win32API.new("shell32","DragQueryFile", ["I","I","P","I"],"I")
-
-  def initialize(files,handle=0)
-    @__files = files.dup
-    @handle=handle
-    @__binarydata="\0"*0x14+ at __files.join("\0")+"\0"
-    @__binarydata[0]="\x14"
-  end
-
-  def self.set(files)
-    self.new(files)
-  end
-
-  def self.get(handle)
-    __fnbuffer = "                "*16 #256bytes
-    n=DragQueryFile.call(handle,-1,__fnbuffer,__fnbuffer.size)
-    r=[]
-    0.upto(n-1) do |i|
-      s=DragQueryFile.call(handle,i,__fnbuffer,__fnbuffer.size)
-      r.push __fnbuffer[0,s]
-    end
-    self.new(r,handle)
-  end
-
-  def files
-    @__files.dup
-  end
-end
-
-
-module DragDropRubyObjectFactory
-=begin
-== DragDropRubyObjectFactory
-This class' feature is to register new clipboard format into your system for 
-drag&drop ruby object.
-
-=== Class Methods
---- declare_dndclass(classname,registername)
-    Registers new format and create new wrapper class for ruby.
-    The format is registered as ((|registername|)) and
-    the wrapper class is declared as DragDropRubyObjectFactory::((|classname|)).
-    This methods returns the wrapper class.
-=end
-
-
-  class DragDropRubyObject < DragDropObject
-=begin
-== DragDropRubyObjectFactory::DragDropRubyObject
-This is a base class of wrapper classes created by 
-DragDropRubyObjectFactory.declare_dndclass()
-
-=== Class Methods
---- new(binstr,handle=0)
-    No need to use this. (maybe)
---- set(obj)
-    Returns new wrapper object of ((|obj|)) for drag&drop.
---- get(handle)
-    Returns wrapper object using global heap of ((|handle|)).
-=== Method
---- object
-    returns the wrapped object.
-=end
-
-    include ClipboardFormat
-    FormatName = "DumpedRubyObjectForDnD"
-    FormatId = RegisterClipboardFormat.call(FormatName)
-
-    def initialize(bin,handle=0)
-      @objectformat = ClipboardFormat::CF_TEXT # only for base class
-      @__binarydata = bin
-      @handle=handle
-    end
-
-    def self.set(obj)
-      self.new(Marshal.dump(obj))
-    end
-
-    def self.get(handle)
-      bin =  GMEM::Get(handle)
-      self.new(bin,handle)
-    end
-
-    def object
-      Marshal.load(@__binarydata)
-    end
-  end
-
-  def self.declare_dndclass(classname,registername)
-    str = <<"EEOOFF"
-        class #{classname} < DragDropRubyObject
-          FormatName = '#{registername}'
-          FormatId = RegisterClipboardFormat.call(FormatName)
-        end
-EEOOFF
-    eval(str)
-    eval("#{classname} ")
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/handlers.rd b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/handlers.rd
deleted file mode 100644
index 99bd40e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/handlers.rd
+++ /dev/null
@@ -1,5 +0,0 @@
-=begin
-The names of event handlers includes '????', which is its user-defined name
-declared at argument for addControl method (VRParent.)
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/rscutil.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/rscutil.rb
deleted file mode 100644
index 971e5ce..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/rscutil.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-###################################
-#
-# rscutil.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-#
-###################################
-
-require 'swin'
-
-
-=begin
-= rscutil.rb
-Utilities for resources
-
-== Base64dumper
-The module to use binary data with base64
-=== Class Method
---- loadString(str)
-    Load a object from base64 encoded string.
-=== Method
---- dumpString
-    Dumps an object into base64 encoded string.
-=end
-
-module Base64dumper
-  def self.loadString(str)
-    Marshal.load(str.unpack("m")[0])
-  end
-  
-  def dumpString
-    [Marshal.dump(self)].pack("m")
-  end
-end
-
-
-
-module SWin
-  class Bitmap
-    include Base64dumper
-    def self.loadString(str) Base64dumper.loadString(str) end
-  end
-end
-
-#####
-
-module SWin
-  class Font
-    STRIKEOUT=4
-    UNDERLINE=2
-    ITALIC=1
-  end
-end
-
-## ####--------------------
-
-# FontStruct for handling fonts and text attributes.
-
-=begin
-== FontStruct
-Subclass of Struct for representing text attributes.
-
-=== Attributes
---- fontface
---- height
---- style
---- weight
---- width
---- escapement
---- orientation
---- pitch_family
---- charset
---- point
---- color
-
-=== Class Method
---- new2(args)
-    Use new2 instead of new.
-
-=== Methods
---- params
-    Returns parameters that can be used for parameter of 
-    SWin::LWFactory.newfont()
---- spec
-    Returns text attributes for parameter of SWin::CommonDialog.chooseFont
---- bold?
-    Returns whether the attributes means bold style
---- bold=(flag)
-    Sets or resets bold style.
---- italic?
-    Returns whether the attributes means italic style
---- italic=(flag)
-    Sets or resets italic style.
---- underlined?
-    Returns whether the attributes means underline style
---- underlined=(flag)
-    Sets or resets underline style.
---- striked?
-    Returns whether the attributes means strike-out style
---- striked=(flag)
-    Sets or resets strike-out style.
-=end
-
-FontStruct = Struct.new("FontStruct",
-           :fontface,:height,:style,:weight,:width,:escapement,
-           :orientation,:pitch_family,:charset,
-           :point,:color)
-
-class FontStruct
-  private_class_method :new
-
-  def self.new2(*args)
-    new(*args.flatten)
-  end
-
-  def params
-    to_a[0,9]
-  end
-
-  def spec
-    a=self.to_a
-    [ a[0,9],a[9],a[10] ]
-  end
-
-  def bold=(flag)
-    self.weight = if flag then 600 else 300 end
-  end
-  def bold?
-    (@weight>400)
-  end
-  
-  def italic=(flag)
-    if flag then
-      self.style |= 1  # 1=SWINFONT_ITALIC
-    else
-      self.style &= 0xfffffffe
-    end
-  end
-  def italic?
-    (self.style&1)>0
-  end
-
-  def underlined=(flag)
-    if flag then
-      self.style |= 2  # 2=SWINFONT_ULINE
-    else
-      self.style &= 0xfffffffd
-    end
-  end
-  def underlined?
-    (self.style&2)>0
-  end
-
-  def striked=(flag)
-    if flag then
-      self.style |= 4  # 4=SWINFONT_STRIKE
-    else
-      self.style &= 0xfffffffb
-    end
-  end
-  def striked?
-    (self.style&4)>0
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/sysmod.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/sysmod.rb
deleted file mode 100644
index afd9eaf..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/sysmod.rb
+++ /dev/null
@@ -1,249 +0,0 @@
-###################################
-#
-# sysmod.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-require 'Win32API'
-
-=begin
-= sysmod.rb
-Win32 Utilities
-=end
-
-module MEMCOPY  #Thanks, ruby-chan :)
-=begin
-== MEMCOPY
-This is for copying string and memory each other.
-
-=== Class Methods
---- MEMCOPY::Str2Mem(dst,src,len)
-    Copies src (String) into memory at address dst (Integer).
---- MEMCOPY::Mem2Str(dst,src,len)
-    Copies contents from address dst (Integer) into src (String).
-=end
-  begin
-    ## Windows2000
-    Pmemcpy1 = Win32API.new("NTDLL", "memcpy", ['P', 'L', 'I'], 'L')
-    Pmemcpy2 = Win32API.new("NTDLL", "memcpy", ['L', 'P', 'I'], 'L')
-  rescue
-    ## Windows95/98
-    Pmemcpy1 = Win32API.new("CRTDLL", "memcpy", ['P', 'L', 'I'], 'L')
-    Pmemcpy2 = Win32API.new("CRTDLL", "memcpy", ['L', 'P', 'I'], 'L')
-  end
-
-  def MEMCOPY::Str2Mem(dst,src,len)
-    Pmemcpy2.call(dst,src,len)
-  end
-  def MEMCOPY::Mem2Str(dst,src,len=dst.length)
-    Pmemcpy1.call(dst,src,len)
-  end
-end
-
-module GAtom
-=begin
-== GAtom
-This is for utilizing Global Atoms.
-
---- GAtom::Add(text)
-    Create a new global atom whose name is ((|text|)).
---- GAtom::Delete(atm)
-    Delete ((|atm|)) of global atom.
---- GAtom::GetName(atm)
-    Returns name of ((|atm|)) of global atom.
-=end
-
-  GlobalAddAtom = Win32API.new("kernel32","GlobalAddAtom",["P"],"I")
-  GlobalDeleteAtom=Win32API.new("kernel32","GlobalDeleteAtom",["I"],"I")
-  GlobalGetAtomName=Win32API.new("kernel32","GlobalGetAtomName",["I","P","I"],"I")
-
-  def GAtom::Add(text) (0xffff & GlobalAddAtom.call(text.to_s)) end
-  def GAtom::Delete(atm) GlobalDeleteAtom.call(atm) end
-
-  def GAtom::GetName(atm)
-    buffer=" "*256
-    r = GlobalGetAtomName.call(atm,buffer,256)
-    buffer[0,r]
-  end
-end
-
-module GMEM
-=begin
-== GMEM
-This is for utilizing Global memories.
-
-=== Class Methods
---- GMEM::AllocStr(mode,text)
-    Allocates a global memory and set its contents as ((|text|)).
---- GMEM::Set(gmem,text,len)
-    Sets the contents of global memory gmem as ((|text|)).
---- GMEM::Get(gmem)
-    Gets the contents of gmem.
-
---- GMEM::Alloc(size)
-    Allocates a global memory.
---- GMEM::Lock(gmem)
-    Locks gmem to access it.
---- GMEM::Unlock(gmem)
-    Unlocks gmem.
---- GMEM::Free(gmem)
-    Frees gmem.
---- GMEM::Size(gmem)
-    Returns the size of gmem.
-=end
-
-  #GlobalAlloc(method,size)
-  GlobalAlloc = Win32API.new("kernel32","GlobalAlloc",["I","I"],"I")
-
-  GlobalLock = Win32API.new("kernel32","GlobalLock",["I"],"I")
-  GlobalUnlock = Win32API.new("kernel32","GlobalUnlock",["I"],"")
-  GlobalFree = Win32API.new("kernel32","GlobalFree",["I"],"I")
-  GlobalSize = Win32API.new("kernel32","GlobalSize",["I"],"I")
-  GlobalFlags= Win32API.new("kernel32","GlobalFlags",["I"],"I")
-
-  def GMEM::Alloc(*arg)  GlobalAlloc.call(*arg) end
-  def GMEM::Lock(*arg)   GlobalLock.call(*arg) end
-  def GMEM::Unlock(*arg) GlobalUnlock.call(*arg) end
-  def GMEM::Free(*arg)   GlobalFree.call(*arg) end
-  def GMEM::Size(*arg)   GlobalSize.call(*arg) end
-
-  def GMEM::AllocStr(mode,text)
-    mem = GlobalAlloc.call(mode,text.length+1)
-    Set(mem,text,text.size+1)
-    mem
-  end
-
-  def GMEM::Set(hglb,text,siz=nil)
-    len= if siz then siz.to_i else [size,Size(hglb)].min end
-    lp = GlobalLock.call(hglb)
-    MEMCOPY::Str2Mem(lp,text.to_s,len)
-    GlobalUnlock.call(hglb)
-  end
-  def GMEM::Get(hglb)
-    lp = GlobalLock.call(hglb)
-    len = GlobalSize.call(hglb)
-#p format "%x %d, %x",hglb, lp, GlobalFlags.call(hglb)
-    raise "Memory not accessible" if len==0
-    str = " " * (len+1)
-    MEMCOPY::Mem2Str(str,lp,len)
-    GlobalUnlock.call(hglb)
-    str
-  end
-end
-
-module SMSG
-=begin
-== SMSG
-This is for Windows Messaging.
-
-=== Class Methods
---- sendMessage(hwnd,uMsg,wParam,lParam)
-    Calls SendMessage(). see Windows SDK document.
-    ((|lParam|)) can be both type of Integer and String
---- postMessage(hwnd,uMsg,wParam,lParam)
-    Calls PostMessage(). see Windows SDK document.
-    ((|lParam|)) can be both type of Integer and String
-=end
-
-  SendMessage = Win32API.new("user32","SendMessage",["I","I","I","I"],"I")
-  PostMessage = Win32API.new("user32","PostMessage",["I","I","I","I"],"I")
-  SendMessage2 = Win32API.new("user32","SendMessage",["I","I","I","P"],"I")
-  PostMessage2 = Win32API.new("user32","PostMessage",["I","I","I","P"],"I")
-
-  def SMSG.sendMessage(*arg)
-    if arg[3].is_a?(Integer) then
-      SendMessage.call(*arg)
-    else
-      SendMessage2.call(*arg)
-    end
-  end
-
-  def SMSG.postMessage(*arg)
-    if arg[3].is_a?(Integer) then
-      PostMessage.call(*arg)
-    else
-      PostMessage2.call(*arg)
-    end
-  end
-end
-
-module Cursor
-=begin
-== Cursor
-This is for System cursor handling.
-
-=== Class Methods
---- get_screenposition
-    Returns x,y in the screen coordinate.
---- set_screenposition(x,y)
-    Sets cursor position into (x,y) in the screen coordinate.
-=end
-
-  GetCursorPos = Win32API.new("user32","GetCursorPos","P","I")
-  SetCursorPos = Win32API.new("user32","SetCursorPos","II","I")
-  POINTSTRUCT="ll"
-
-  def self.get_screenposition
-    r=[0,0].pack(POINTSTRUCT)
-    GetCursorPos.call(r)
-    r.unpack(POINTSTRUCT)
-  end
-  
-  def self.set_screenposition(x,y)
-    SetCursorPos.call(x.to_i,y.to_i)
-  end
-end
-
-module LastError
-=begin
-== LastError
-This is for handling LastError.
-
-=== Class Methods
---- set(ecode)
-    Sets lasterror code as ((|ecode|)).
---- code
---- get
-    Gets last error code.
---- code2msg(ecode,msgarg=0)
-    Get the error message of ((|ecode|)). 
-    ((|msgarg|)) is optional argument for message formatting.
---- message(arg=0)
-    Returns last error message.
-=end
-
-  GetLastError = Win32API.new('kernel32','GetLastError','V','L')
-  SetLastError = Win32API.new('kernel32','SetLastError','L','V')
-  FormatMessage = Win32API.new('kernel32','FormatMessageA','LPLLPLP','L')
-  FORMAT_MESSAGE_FROM_SYSTEM = 4096
-
-  def self.set(ecode)
-    SetLastError.call(ecode)
-  end
-
-  def self.code
-    GetLastError.call()
-  end
-  def self.get() self.code end
-
-  def self.code2msg(scode,msg=0)
-    buffer = " "*(2048)
-    len = FormatMessage.call FORMAT_MESSAGE_FROM_SYSTEM,0,scode,0,
-                             buffer,buffer.size,msg
-    buffer[0,len]
-  end
-
-  def self.message(msg=0)
-    self.code2msg(self.code,msg)
-  end
-end
-
-module ClipboardFormat
-  CF_TEXT    =  1 
-  CF_OEMTEXT =  7
-  CF_HDROP   = 15
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vractivex.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vractivex.rb
deleted file mode 100644
index ad96947..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vractivex.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-###################################
-#
-# vractivex.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2003-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-require 'vr/vruby'
-require 'Win32API'
-require 'win32ole'
-
-class VRActiveXControl < VRControl
-  AtlAxWinInit=Win32API.new("atl.dll","AtlAxWinInit","","I")
-  AtlAxWinInit.call
-
-  WINCLASSINFO=["AtlAxWin",0]
-  ACTIVEXCINFO=["",""] # PROGID,EVENTSINK
-
-  alias :progId :caption
-  alias :progId= :caption=
-  def caption() "" end
-  def caption=(arg) arg end
-
-  def initialize
-    self.progId = self.class::ACTIVEXCINFO[0]
-    class <<self
-      undef_method :progId=
-    end
-  end
-
-  def vrinit
-    super
-	@_vr_win32ole = self.get_oleinterface
-    if self.class::ACTIVEXCINFO[1] then
-      @_vr_win32ole_event = 
-        WIN32OLE_EVENT.new(@_vr_win32ole,self.class::ACTIVEXCINFO[1])
-    end
-  end
-
-  def ole_interface() @_vr_win32ole; end
-  def ole_events() @_vr_win32ole_event; end
-
-  def add_oleeventhandler(evname,handlername=evname.downcase)
-    ole_events.on_event(evname) do |*args|
-      @parent.controlmsg_dispatching(self,handlername,*args)
-    end
-  end
-
-  def _invoke(*args) @_vr_win32ole._invoke(*args) end
-  def _setproperty(*args) @_vr_win32ole._setproperty(*args) end
-  def _getproperty(*args) @_vr_win32ole._getproperty(*args) end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrclipboard.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrclipboard.rb
deleted file mode 100644
index e58ca64..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrclipboard.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-###################################
-#
-# vrclipboard.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-module VRClipboardObserver
-=begin
-== VRClipboardObserver
-module for clipboard observing.
-
-=== Handlers
---- self_drawclipboard
-    Fired when clipboard is changed.
-=end
-
-  include VRMessageHandler
-
-  SetClipboardViewer = Win32API.new('user32','SetClipboardViewer','L','L')
-  ChangeClipboardChain = Win32API.new('user32','ChangeClipboardChain','LL','I')
-  WM_CHANGECBCHAIN = 781
-  WM_DRAWCLIPBOARD = 776
-
-  def clipboardobserverinit
-    @cbchainnext = SetClipboardViewer.call(self.hWnd)
-    addHandler WM_DRAWCLIPBOARD,"drawclipboard",MSGTYPE::ARGNONE,nil
-    addHandler WM_CHANGECBCHAIN,"vrchangecbchain",MSGTYPE::ARGINTINT,nil
-    addHandler WMsg::WM_DESTROY,"vrcbdestroy",MSGTYPE::ARGNONE,nil
-    acceptEvents [WM_DRAWCLIPBOARD,WM_CHANGECBCHAIN,WMsg::WM_DESTROY]
-  end
-
-  def vrinit
-    super
-    clipboardobserverinit
-  end
-
-  def self_vrchangecbchain(hwndremove,hwndnext)
-    @cbchainnext=hwndnext if hwndremove == @cbchainnext
-  end
-
-  def self_vrcbdestroy
-    ChangeClipboardChain.call self.hWnd, at cbchainnext
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcomctl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcomctl.rb
deleted file mode 100644
index b9b395e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcomctl.rb
+++ /dev/null
@@ -1,1830 +0,0 @@
-###################################
-#
-# vrcomctl.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-=begin
-= VisualuRuby(tmp) Common Controls.
-This file prepares classes of common controls, panels and menu modules.
-
-<<< handlers.rd
-
-=end
-
-require 'Win32API'
-
-begin
-  Win32API.new("comctl32","InitCommonControlsEx","P","").call [8,0x400].pack("LL")
-  VR_OLDCOMCTL=false
-rescue
-#  puts "comctl too old to use rebar and so on"
-  VR_OLDCOMCTL=true
-end
-
-module WMsg
-  NFR_ANSI=1
-  NFR_UNICODE=2
-  NF_QUERY=3
-  NF_REQUERY=4
-  WM_NOTIFYFORMAT=85
-end
-
-module WStyle
-  CCS_TOP              =  0x00000001
-  CCS_NOMOVEY          =  0x00000002
-  CCS_BOTTOM           =  0x00000003
-  CCS_NORESIZE         =  0x00000004
-end
-
-module WStruct
-  NMHDR="UUU"
-end
-
-
-##################
-#
-#  The following control windows send WM_NOTIFY message to their parent
-#  This definition is for handling them.
-#
-
-module VRComCtlContainer
-=begin
-== VRComCtlContainer
-This module provides a message handler for WM_NOTIFY, which calls
-defined method in a parent window.
-VRForm includes this module automatically loading "vrcomctl.rb".
-=end
-
-  include VRMessageHandler
-
-  def comctlcontainerinit
-    addHandler(WMsg::WM_NOTIFY,"wmnotify", MSGTYPE::ARGPASS, nil)
-    addHandler(WMsg::WM_NOTIFYFORMAT,"wmnotifyformat",MSGTYPE::ARGINTINT,nil)
-    addEvent WMsg::WM_NOTIFY
-    addEvent WMsg::WM_NOTIFYFORMAT
-
-    addNoRelayMessages [WMsg::WM_NOTIFY,WMsg::WM_NOTIFYFORMAT]
-  end
-
-  def vrinit
-    super
-    comctlcontainerinit
-  end
-
-  def self_wmnotifyformat(parent,command)
-    SKIP_DEFAULTHANDLER[1]
-  end
-
-  def self_wmnotify(msg)
-
-    orig_arg= @screen.application.cstruct2array(msg.lParam,WStruct::NMHDR)
-
-    id=msg.wParam
-    ct=@controls[id]       # Activated Control
-    if !ct then return end # Ignore message passed through childwin 
-    r=nil
-    return unless ct.is_a?(VRNotifyControl) and # Added by yukimi_sake
-                  ct._vr_ntfyhandlers and ct._vr_ntfyhandlers[orig_arg[2]]
-    ct._vr_ntfyhandlers[orig_arg[2]].each do |shandler|
-      args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-      if shandler[1] == MSGTYPE::ARGSTRUCT and args.size>0 and
-          ct.respond_to?("_vr_notifyarg") then
-
-        necessary_arg=ct._vr_notifyarg[orig_arg[2]]
-        if necessary_arg then
-          n=necessary_arg.size-1
-          0.upto(n) do |idx|
-            args[idx+3]=nil if necessary_arg[idx,1]=='F'
-          end
-        end
-        args=args[3..-1].compact if args.size > 3
-      end
-
-      r = ct.__send__(shandler[0],*args) if ct.respond_to?(shandler[0])
-      rr = controlmsg_dispatching(ct,shandler[0],*args)
-      r = rr if ( rr.kind_of?( SKIP_DEFAULTHANDLER ) )
-    end
-    r
-  end
-end
-
-module VRContainersSet
-  include VRComCtlContainer
-  INITIALIZERS.push :comctlcontainerinit
-end
-
-
-####################################
-#
-# Argument Utilities for Common Controls
-#
-
-class VRNotifyControl < VRControl
-=begin
-== VRNotifyControl
-All common controls have these event handlers.
-=== Event handlers
---- ????_clicked
-    fired when the control is clicked with left button.
---- ????_hitreturn
-    fired when the control has the input focus and the user press ((*ENTER*)) key.
---- ????_dblclicked
-    fired when the control is double-clicked with left button.
---- ????_rclicked
-    fired when the control is clicked with right button.
---- ????_rdblclicked
-    fired when the control is double-clicked with rightbutton.
---- ????_gotfocus
-    fired when the control has got the input focus
---- ????_lostfocus
-    fired when the control has lost the input focus
-=end
-
-  attr_reader :_vr_notifyarg
-
-  def _vr_ntfyhandlers
-    unless defined?(@_vr_ntfyhandlers)
-      @_vr_ntfyhandlers={} 
-    else
-      @_vr_ntfyhandlers
-    end
-  end
-
-
-  def notifycontrolinit
-    @_vr_notifyarg={}
-    addNotifyHandler(0xfffffffe,"clicked",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffffd,"dblclicked",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffffc,"hitreturn",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffffb,"rclicked",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffffa,"rdblclicked",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffff9,"gotfocus",MSGTYPE::ARGNONE,nil)
-    addNotifyHandler(0xfffffff8,"lostfocus",MSGTYPE::ARGNONE,nil)
-  end
-  def vrinit
-    super
-    notifycontrolinit
-  end
-  
-  def addFilterArg(msg,filter)   # filter as str : 'T'=true, 'F'=false
-    @_vr_notifyarg[msg]=filter
-  end
-  def deleteFilterArg(msg)
-    @_vr_notifyarg[msg]=nil
-  end
-  
-  def addNotifyHandler(msg,handlername,handlertype,argparsestr)
-    @_vr_ntfyhandlers={} unless defined?(@_vr_ntfyhandlers)
-    @_vr_ntfyhandlers[msg]=[] unless @_vr_ntfyhandlers[msg]
-    @_vr_ntfyhandlers[msg].push [handlername,handlertype,argparsestr]
-  end
-
-  def deleteNotifyHandler(msg,handlername)
-    return false unless @_vr_ntfyhandlers and @_vr_ntfyhandlers[msg]
-    @_vr_ntfyhandlers.delete_if do |shandler|
-      shandler[0] != (PREHANDLERSTR+handlername).intern
-    end
-  end
-end
-
-
-###################################
-# Common Controls
-#
-
-# Listview
-
-module WMsg
-  LVM_GETBKCOLOR    = 0x1000      #GETBKCOLOR, LVM_FIRST
-  LVM_SETBKCOLOR    = 0x1001
-
-  LVM_SETIMAGELIST  = 0x1003
-  LVM_GETITEMCOUNT  = 0x1004
-  LVM_GETITEM       = 0x1005       #GETITEMA
-  LVM_SETITEM       = 0x1006       #SETITEMA
-  LVM_INSERTITEM    = 0x1007       #INSERTITEMA
-  LVM_DELETEITEM    = 0x1008
-  LVM_DELETEALLITEM = 0x1009
-
-  LVM_GETNEXTITEM   = 0x1000 + 12
-  LVM_GETITEMRECT   = 0x1000 + 14
-  LVM_HITTEST       = 0x1000 + 18
-  LVM_ENSUREVISIBLE = 0x1000 + 19
-
-  LVM_GETCOLUMN     = 0x1000+25    #GETCOLUMNA
-  LVM_SETCOLUMN     = 0x1000+26    #SETCOLUMNA
-  LVM_INSERTCOLUMN  = 0x1000+27    #INSERTCOLUMNA
-  LVM_DELETECOLUMN  = 0x1000+28    #DELETECOLUMNA
-  LVM_GETCOLUMNWIDTH= 0x1000+29
-  LVM_SETCOLUMNWIDTH= 0x1000+30
-
-  LVM_SETITEMSTATE  = 0x1000+43
-  LVM_GETITEMSTATE  = 0x1000+44
-  LVM_GETITEMTEXT   = 0x1000+45    #GETITEMTEXTA
-  LVM_SETITEMTEXT   = 0x1000+46    #SETITEMTEXTA
-  LVM_SORTITEMS     = 0x1000+48
-  LVM_GETSELECTED   = 0x1000+50    #LVM_GETSELECTEDCOUNT
-  LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1000 + 54
-  LVM_GETEXTENDEDLISTVIEWSTYLE = 0x1000 + 55
-  LVM_SUBITEMHITTEST= 0x1000+57
-
-  LVN_ITEMCHANGING  = 0xffffffff-99
-  LVN_ITEMCHANGED   = LVN_ITEMCHANGING-1
-  LVN_INSERTITEM    = LVN_ITEMCHANGING-2
-  LVN_DELETEITEM    = LVN_ITEMCHANGING-3
-  LVN_COLUMNCLICK   = LVN_ITEMCHANGING-8
-  LVN_BEGINDRAG     = LVN_ITEMCHANGING-9
-  LVN_BEGINRDRAG    = LVN_ITEMCHANGING-11
-end
-module WStyle
-  LVS_ICON          =   0x0000
-  LVS_REPORT        =   0x0001
-  LVS_SMALLICON     =   0x0002
-  LVS_LIST          =   0x0003
-  LVS_SINGLESEL     =   4
-  LVS_SHOWSELALWAYS =   8
-end
-module WExStyle
-  LVS_EX_FULLROWSELECT=32
-  LVS_EX_GRIDLINES=1
-end
-
-module WConst
-  LVIS_FOCUSED      =  0x0001
-  LVIS_SELECTED     =  0x0002
-  LVIS_CUT          =  0x0004
-  LVIS_DROPHILITED  =  0x0008
-end
-module WStruct
-  LVITEM      = "UIIUUPIIL"
-  LVCOLUMN    = "UIIPIIII"
-  LVFIND      = "UPLPU"
-  LVHITTEST   = "IIUI"
-  NM_LISTVIEW= NMHDR+"IIUUULLL" #INT item,subitem,UINT nst,ost,chg,POINT,LParam
-end
-
-class VRListview < VRNotifyControl
-=begin
-== VRListview
-Listview.
-Some features has not implemented yet.
-=== Method
---- setViewMode(mode)
-    ((|mode|)) as viewmode. 0 for ICON, 1 for REPORT, 2 for SMALLICON and 
-    3 for LIST
---- getViewMode
-    Returns the view mode.
---- iconview
-    Sets the view mode for Icon view.
---- reportview
-    Sets the view mode for Report view.
---- smalliconview
-    Sets the view mode for Small icon view.
---- listview
-    Sets the view mode for listing view.
---- setBkColor(color)
---- bkcolor=(color)
-    Sets the background color.
---- lvexstyle
---- lvexstyle=(style)
-    Gets/Sets Listview extended style. 
-    If you need style mask, use setListviewExStyle()
---- setListviewExStyle(style,mask=0xffffffff)
-    Sets Listview extended style using style mask.
-
---- insertColumn(column,text,width=50,format=0,textsize=title.size)
-    Inserts a new column specified by ((|text|)), ((|width|)) and ((|format|))
-    into the index of ((|column|)), which is started from 0.
-    ((|format|)) means 0 for left-padded, 1 for right-padded, 2 for centred.
---- deleteColumn(column)
-    Deletes the column at the index of ((|column|))
---- clearColumns
-    Deletes all columns.
---- countColumns
-    Counts the number of columns.
---- addColumn(text,width=50,format=0,textsize=title.size)
-    Adds a new column after the last column.
---- setImagelist(imagelist,itype=0)
-    Set ((|imagelist|)) for displaying icons of items. ((|imagelist|)) must be
-    a kind of SWin::Imagelist. ((|itype|)) specifies the type of Imagelist.
-    itype : 0 for normal icon, 1 for small icon  (,2 for state icon).
---- setItemIconOf(hitem,img)
-    Sets image ids in a imagelist of the item. 
-    The imagelist is set by ((<setImagelist>)) method.
---- getItemIconOf(hitem)
-    Returns images id of the item. 
---- getColumnWidthOf(column)
-    Returns the width of the column whose index is ((|column|)).
---- setColumnWidthOf(column,width)
-    Sets the width of the column.
---- getColumnTextOf(column)
-    Returns the text of the column whose index is ((|column|)).
---- setColumnTextOf(column,text)
-    Sets the text of the column.
---- getColumnFormatOf(column)
-    Returns the format of the column whose index is ((|column|)).
-    (see ((<insertColumn>)) about format)
---- setColumnFormatOf(column,format)
-    Sets the format of the column.
---- insertItem(index,texts,lparam=0,textsize=128)
-    Inserts a new item into the index of ((|index|)).((|texts|)) is an array of
-    String which means [item_text, subitem_text, subitem2_text,...].
-    ((|lparam|)) is a 32bit value concerned with the item.
-    ((|textsize|)) is the limit length of the item texts.
---- addItem(texts,lparam=0,textsize=128)
-    Adds a new item after the last item.
---- insertMultiItems(index,multitexts)
-    Inserts new items into the index of ((|index|)).
-    ((|multitexts|)) is an array which is the arguments of ((<insertItem>))
-    excluding ((|index|))
---- deleteItem(idx)
-    Deletes an item at the index of ((|idx|)).
---- clearItems
-    Deletes all items.
---- countItems
-    Counts the items.
---- hittest(x,y)
-    Inspect the item index which is at the co-ordinate(((|x|)),((|y|)))
---- hittest2(x,y)
-    Returns the item information which is at the co-ordinate(((|x|)),((|y|))).
-    The information is the array [x,y,part,index,subitem]
---- getItemRect(idx)
-    Returns an co-ordinates array of integers [left,top,right,bottom]
---- getItemStateOf(idx)
-    Returns the item state at the index of ((|idx|)).
-    The state is 1 for forcused, 2 for selected, 3 for cut and 4 fordrophilited.
---- setItemStateOf(idx,state)
-    Sets the item state.
---- selectItem(idx,flag)
-    Change selected state of the item at the index of ((|idx|)). 
-    If ((|flag|)) is true, the item is selected and if it's false the item is 
-    un-selected.
---- getNextItem(start,flags)
-    Searches for an item described by ((|start|)) and ((|flags|)).
-    ((|flags|)) is 
-    * 1 : focused item after ((|start|))
-    * 2 : selected item after ((|start|))
-    * 4 : cut item after ((|start|))
-    * 8 : drophilited item after ((|start|))
-    * 0x100 : item above ((|start|))
-    * 0x200 : item below ((|start|))
-    * 0x400 : left item from ((|start|))
-    * 0x800 : right item from ((|start|))
---- focusedItem
-    Returns index of the focused item.
---- getItemTextOf(idx,subitem=0,textsize=128)
-    Retrieves the sub-text of the item (index ((|idx|)) ).
-    ((|subitem|)) specifies the subitem number.
---- setItemTextOf(idx,subitem,text,textsize=text.size)
-    Sets the sub-text of the item.
---- getItemLParamOf(idx)
-    Gets the lParam of the item.
---- setItemLParamOf(idx,lparam)
-    Sets the lParam of the item.
---- selected?(idx)
-    Returns true if the item is selected.
---- focused?(idx)
-    Returns true if the item is focused.
---- eachSelectedItems
-    Yields each selected item index.
---- countSelectedItems()
-    Counts the selected items.
---- ensureVisible(i,partial=true)
-    Ensures the item(idx) is visible by scrolling.
-
-=== Event handlers
---- ????_itemchanged(idx,state)
-    fired when the item state is changed. This also means that this is fired after changing selected items.
-    ((|idx|)) is the index of the item and ((|state|)) is the new state.
---- ????_itemchanging(idx,state)
-    fired when the item state is changing.
---- ????_columnclick(subitem)
-    fired when the column is clicked. ((|subitem|)) is the column index.
---- ????_begindrag
---- ????_beginrdrag
-=end
-
- public
-  WINCLASSINFO = ["SysListView32",WStyle::LVS_REPORT,0x200]
-
-  def listviewinit
-    addNotifyHandler(WMsg::LVN_ITEMCHANGED,"itemchanged",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_LISTVIEW)
-    addFilterArg WMsg::LVN_ITEMCHANGED,"TFFTFFFF"
-
-    addNotifyHandler(WMsg::LVN_ITEMCHANGING,"itemchanging",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_LISTVIEW)
-    addFilterArg WMsg::LVN_ITEMCHANGING,"TFFTFFFF"
-
-    addNotifyHandler(WMsg::LVN_COLUMNCLICK,"columnclick",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_LISTVIEW)
-    addFilterArg WMsg::LVN_COLUMNCLICK,"FTFFFFFF"
-
-    addNotifyHandler(WMsg::LVN_BEGINDRAG,"begindrag",
-                    MSGTYPE::ARGNONE,nil)
-
-    addNotifyHandler(WMsg::LVN_BEGINRDRAG,"beginrdrag",
-                    MSGTYPE::ARGNONE,nil)
-  end
-  def vrinit
-    super
-    listviewinit
-  end
-
-  def setViewMode(mode)
-    self.style = (self.style & 0xfffffff8) + (mode&3)
-  end
-  def getViewMode
-    self.style & 0xfffffff8
-  end
-  def iconview() setViewMode(0) end
-  def reportview() setViewMode(1) end
-  def smalliconview() setViewMode(2) end
-  def listview() setViewMode(3) end
-  
-
-  def setBkColor(color)
-    sendMessage WMsg::LVM_SETBKCOLOR,0,color.to_i
-  end
-
-  def bkcolor=(color)
-    setBkColor(color)
-  end
-
-  def setListviewExStyle(sty,mask=0xffffffff)
-    sendMessage WMsg::LVM_SETEXTENDEDLISTVIEWSTYLE,mask,sty
-  end
-  def lvexstyle=(sty)
-    setListviewExStyle(sty)
-  end
-  def lvexstyle
-    sendMessage WMsg::LVM_GETEXTENDEDLISTVIEWSTYLE,0,0
-  end
-
-  def insertColumn(column,title,width=50,style=0,textsize=title.size)
-    lv=@screen.application.arg2cstructStr(WStruct::LVCOLUMN,
-                   0xf,style.to_i,width.to_i,title.to_s,textsize,column,0,0)
-    sendMessage WMsg::LVM_INSERTCOLUMN,column.to_i,lv
-  end
-
-  def deleteColumn(column)
-    sendMessage(WMsg::LVM_DELETECOLUMN,column.to_i,0)
-  end
-  def clearColumns
-    while sendMessage(WMsg::LVM_DELETECOLUMN,0,0)!=0 do; end
-  end
-
-  def countColumns
-    r=0
-    while getColumnTextOf(r) do r+=1;  end
-    r
-  end
-
-  def addColumn(*args)
-    insertColumn(30000,*args)   #30000 as a big number. I believe this is enough.
-  end
-
-  def getColumnWidthOf(column)
-    sendMessage(WMsg::LVM_GETCOLUMNWIDTH,column.to_i,0)
-  end
-
-  def setColumnWidthOf(column,width)
-    sendMessage(WMsg::LVM_SETCOLUMNWIDTH,column.to_i,width.to_i)
-  end
-
-  def setColumnTextOf(column,text)
-    p=@screen.application.arg2cstructStr(WStruct::LVCOLUMN,
-                     4,0,0,text,text.size,0)
-    sendMessage WMsg::LVM_SETCOLUMN,column.to_i,p
-  end
-  def setColumnFormatOf(column,format)
-    p=@screen.application.arg2cstructStr(WStruct::LVCOLUMN,
-                     1,format,0,"",0,0)
-    sendMessage WMsg::LVM_SETCOLUMN,column.to_i,p
-  end
-  def getColumnTextOf(column)
-    p=@screen.application.arg2cstructStr(WStruct::LVCOLUMN,
-                     4,0,0,"\0"*128,128,0)
-    rv=sendMessage WMsg::LVM_GETCOLUMN,column.to_i,p
-    r=@screen.application.unpack(p,WStruct::LVCOLUMN)[3]
-    if rv!=0 then
-      @screen.application.pointer2string(r)
-    else
-      nil
-    end
-  end
-  def getColumnFormatOf(column)
-    p=@screen.application.arg2cstructStr(WStruct::LVCOLUMN,
-                     1,0,0,"",0,0)
-    rv=sendMessage WMsg::LVM_GETCOLUMN,column.to_i,p
-    if rv!=0 then
-      @screen.application.unpack(p,WStruct::LVCOLUMN)[1]
-    else
-      nil
-    end
-  end
-
-  def insertItem(index,texts,lparam=0,textsize=128)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0xf,index,0,0,0,texts[0].to_s,textsize,0,lparam)
-    item=sendMessage(WMsg::LVM_INSERTITEM,0,lvitem)
-
-    1.upto(texts.size-1) do |subitem|
-      setItemTextOf(item,subitem,texts[subitem],textsize)
-    end
-    item
-  end
-
-  def addItem(*args)
-    insertItem(30000,*args)
-  end
-
-  def insertMultiItems(index,multitexts,textsize=128)
-    n=multitexts.size
-    0.upto(n-1) do |i|
-      insertItem(index+i,*multitexts[i])
-    end
-  end
-
-  def deleteItem(idx)
-    sendMessage WMsg::LVM_DELETEITEM,idx.to_i,0
-  end
-  def clearItems
-    sendMessage WMsg::LVM_DELETEALLITEM,0,0
-  end
-  def countItems
-    sendMessage WMsg::LVM_GETITEMCOUNT,0,0
-  end
-  def hittest(x,y)
-    lvhit=@screen.application.arg2cstructStr(WStruct::LVHITTEST,
-                          x.to_i,y.to_i,0,0)
-    sendMessage WMsg::LVM_HITTEST,0,lvhit
-    @screen.application.unpack(lvhit,WStruct::LVHITTEST)[3]
-  end
-  def hittest2(x,y)
-    lvhit=@screen.application.arg2cstructStr(WStruct::LVHITTEST,
-                          x.to_i,y.to_i,0,0)
-    sendMessage WMsg::LVM_SUBITEMHITTEST,0,lvhit
-    @screen.application.unpack(lvhit,WStruct::LVHITTEST)
-  end
-
-  def getNextItem(start,flag)
-    r=sendMessage WMsg::LVM_GETNEXTITEM,start,MAKELPARAM(flag,0)
-    case(r)
-    when -1
-      0
-    when 0
-      nil
-    else
-      r
-    end
-  end
-
-  def focusedItem
-    getNextItem(0,1)
-  end
-
-  def setImagelist(imagelist,itype=0)
-    raise "not Imagelist" unless imagelist.is_a?(SWin::Imagelist)
-    self.properties["imagelist"]=imagelist
-    sendMessage WMsg::LVM_SETIMAGELIST,itype,imagelist.himagelist
-  end
-
-  def setItemIconOf(idx,imageid)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          2,idx,0,0,0xffff,"",0,imageid.to_i,0) # 2=LVIF_IMAGE
-    sendMessage WMsg::LVM_SETITEM,idx.to_i,lvitem
-  end
-  def getItemIconOf(idx)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0x2,idx,0,0,0,"",0,0,0)
-    sendMessage( WMsg::LVM_GETITEM,0,lvitem )
-    @screen.application.unpack(lvitem,WStruct::LVITEM)[7]
-  end
-
-  def setItemStateOf(idx,state)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0,0,0,state,0xffff,"",0,0,0)
-    sendMessage WMsg::LVM_SETITEMSTATE,idx.to_i,lvitem
-  end
-  def getItemStateOf(idx)
-    sendMessage WMsg::LVM_GETITEMSTATE,idx.to_i,0xffff
-  end
-  def selectItem(idx,flag)
-    if flag then
-      s = getItemStateOf(idx) | WConst::LVIS_SELECTED
-    else
-      s = getItemStateOf(idx) & (~ WConst::LVIS_SELECTED)
-    end
-    setItemStateOf(idx,s)
-  end
-
-  def setItemTextOf(idx,subitem,text,textsize=text.size)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0,0,subitem,0,0,text.to_s,textsize,0,0)
-    sendMessage WMsg::LVM_SETITEMTEXT,idx.to_i,lvitem
-  end
-  def getItemTextOf(idx,subitem=0,textsize=128)
-    app=@screen.application
-    lvitem=app.arg2cstructStr(WStruct::LVITEM,
-                     0,0,subitem,0,0,"\0"*textsize,textsize,0,0)
-    sendMessage( WMsg::LVM_GETITEMTEXT,idx,lvitem )
-    app.pointer2string(app.unpack(lvitem,WStruct::LVITEM)[5])
-  end
-
-  def setItemLParamOf(idx,lparam)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0x4,idx,0,0,0,"",0,0,lparam.to_i)
-    sendMessage WMsg::LVM_SETITEM,0,lvitem
-  end
-  def getItemLParamOf(idx)
-    lvitem=@screen.application.arg2cstructStr(WStruct::LVITEM,
-                          0x4,idx,0,0,0,"",0,0,0)
-    sendMessage( WMsg::LVM_GETITEM,0,lvitem )
-    @screen.application.unpack(lvitem,WStruct::LVITEM)[8]
-  end
-
-  def selected?(idx) (getItemStateOf(idx)&1)>0 end
-  def focused?(idx) (getItemStateOf(idx)&2)>0 end
-
-  def eachSelectedItems
-    n=countItems
-    0.upto(n-1) do |i|
-      if (getItemStateOf(i)&WConst::LVIS_SELECTED)>0 then
-        yield i
-      end
-    end
-  end
-
-  def countSelectedItems()
-    sendMessage WMsg::LVM_GETSELECTED,0,0
-  end
-
-  def getItemRect(item,code=0)
-    prc = [code,0,0,0].pack("iiii")
-    sendMessage WMsg::LVM_GETITEMRECT,item,prc
-    prc.unpack("iiii")
-  end
-
-  def ensureVisible(i,partial=true)
-    flag = if partial then 1 else 0 end
-    sendMessage WMsg::LVM_ENSUREVISIBLE,i.to_i,flag
-  end
-
-end
-
-
-#Treeview
-module WMsg
-  TVM_INSERTITEM    = 0x1100       #INSERTITEMA
-  TVM_DELETEITEM    = 0x1100+1
-  TVM_EXPAND	    = 0x1100+2
-  TVM_GETCOUNT      = 0x1100+5
-  TVM_SETIMAGELIST  = 0x1100+9
-  TVM_GETNEXTITEM   = 0x1100+10
-  TVM_SELECTITEM    = 0x1100+11
-  TVM_GETINDENT     = 0x1100+6
-  TVM_SETINDENT     = 0x1100+7
-  TVM_GETITEM       = 0x1100+12    #GETITEMA
-  TVM_SETITEM       = 0x1100+13    #SETITEMA
-  TVM_HITTEST       = 0x1100+17
-  TVM_SORTCHILDREN  = 0x1100+19
-
-  TVN_START = 0xffffffff-399
-  TVN_SELCHANGED    = TVN_START-2        #SELCHANGEDA
-  TVN_ITEMEXPANDED  = TVN_START-6        #ITEMEXPANDEDA
-  TVN_BEGINDRAG     = TVN_START-7        #BEGINDRAGA
-  TVN_BEGINRDRAG    = TVN_START-8        #BEGINRDRAGA
-  TVN_DELETEITEM    = TVN_START-9        #DELETEITEMA
-  TVN_KEYDOWN       = TVN_START-12
-end
-module WStyle
-  TVS_DEFAULT       =   0xf
-end
-
-module WConst
-  TVI_ROOT          = 0xffff0000
-  TVI_FIRST         = 0xffff0001
-  TVI_LAST          = 0xffff0002
-  TVI_SORT          = 0xffff0003
-  
-  TVGN_ROOT         = 0x0000
-  TVGN_NEXT         = 0x0001
-  TVGN_PARENT       = 0x0003
-  TVGN_CHILD        = 0x0004
-  TVGN_CARET        = 0x0009
-end
-module WStruct
-  TVITEM="UUUUPIIIIL"
-  TREEINSERTITEM="UU"+TVITEM
-  TVHITTEST = LVHITTEST
-  NM_TREEVIEW= NMHDR+"U"+TVITEM+TVITEM+"LL" #UINT action,TV_ITEM old, new,POINT
-end
-
-
-class VRTreeview < VRNotifyControl
-=begin
-== VRTreeview
-Treeview.
-
-=== Methods
-((|hitem|)) is an Integer value identifying treeview item.
-
---- insertItem(hparent,hafter,text,lparam=0,textsize=text.size)
-    Inserts a new item below ((|hparent|)) and after ((|hafter|)), the text is 
-    ((|text|)) and lparam=((|lparam|)).
---- insertMultiItems(hparent,hafter,items)
-    Inserts new items below ((|hparent|)) and after ((|hafter|)).
-    ((|items|)) is a structured array of item array.
-    [text,lparam, child item array as optional].
---- addItem(hparent,text,lparam=0,textsize=text.size)
-    Adds a new item below ((|hparent|)) at the last.
---- addMultiItems(hparent,items)
-    Same as insertMultiItems( ((|hparent|)),last,((|items|)) )
---- deleteItem(hitem)
-    Deletes the item.
---- clearItems
-    Deletes all items.
---- countItems
-    Counts items.
---- selectItem(hitem)
-    Selects the item.
---- expandItem(hitem,mode)
-    Expand or Collapse item.
-    ((|mode|)) means; 1: collapse, 2: expand, 3:toggle
---- indent
-    Returns the indent width.
---- indent=
-    Sets the indent width.
---- hittest(x,y)
-    Inspect the item index which is at the co-ordinate(((|x|)),((|y|)))
---- hittest2(x,y)
-    Returns the item information which is at the co-ordinate(((|x|)),((|y|))).
-    The information is the array [x,y,part,index,subitem]
---- getNextItem(hitem,code)
-    Searches for an item described by ((|start|)) and ((|code|)).
-    ((|code|)) is the series of TVGN_???? in commctrl.h
---- topItem
-    The top item in the listview. (not the visible top item)
---- root
-    The virtual root item which is not visible and touched.
---- last
-    The last item in the listview (not the visible last item)
---- selectedItem()
-    Returns the selected item. aliased as selected
---- getParentOf(hitem)
-    Returns the parent item of ((|hitem|)).
---- getChildOf(hitem)
-    Returns the first child item of ((|hitem|)).
---- getNextSiblingOf(hitem)
-    Returns the next sibling item of ((|hitem|)).
---- setImagelist(imagelist)
-    Set ((|imagelist|)) for displaying icons of items. ((|imagelist|)) must be
-    a kind of SWin::Imagelist.
---- setItemIconOf(hitem,img,simg)
-    Sets image ids of the item. ((|img|)) for normal state image and ((|simg|))
-    for selected state image. Both of them are Integers of id in ImageList and
-    ((|img|)) and ((|simg|)) can be ignored by setting nil instead of integer.
-    The imagelist is set by ((<setImagelist>)) method.
---- getItemIconOf(hitem)
-    Returns images id of the item. 
---- setItemLParamOf(hitem,lparam)
-    Sets lparam of the item.
---- getItemLParamOf(hitem)
-    Returns lparam of the item.
---- setItemTextOf(hitem,text)
-    Sets text of the item.
---- getItemTextOf(hitem,textsize=128)
-    Returns text of the item.
---- setItemStateOf(hitem,state)
-    Sets state of the item.
-    * 1 : focused
-    * 2 : selected
-    * 4 : cut
-    * 8 : drophilited
-    *16 : bold
-    *32 : expanded
---- getItemStateOf(hitem)
-    Returns state of the item.
-
-=== Event handlers
---- ????_selchanged(hitem,lparam)
-    fired when selected item is changed to ((|hitem|)) 
-    whose lparam is ((|lparam|)).
---- ????_itemexpanded(hitem,state,lparam)
-    fired when the ((|hitem|)) item is expanded or closed.
---- ????_deleteitem(hitem,lparam)
-    fired when the item is deleted.
---- ????_begindrag(hitem,state,lparam)
---- ????_beginrdrag(hitem,state,lparam)
-=end
-
- private
-  def nilnull(r) if r==0 then nil else r end end
-
- public
-  WINCLASSINFO = ["SysTreeView32",WStyle::TVS_DEFAULT,0x200]
-
-  def treeviewinit
-# "F FFFFFFFFFF FTFFFFFFFT FF"
-    addNotifyHandler(WMsg::TVN_SELCHANGED,"selchanged",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_TREEVIEW)
-    addFilterArg WMsg::TVN_SELCHANGED,"FFFFFFFFFFFFTFFFFFFFTFF" #hitem,lparam
-    addNotifyHandler(WMsg::TVN_ITEMEXPANDED,"itemexpanded",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_TREEVIEW)
-    addFilterArg WMsg::TVN_ITEMEXPANDED,"FFFFFFFFFFFFTTFFFFFFTFF" #hitem,state,lparam
-    addNotifyHandler(WMsg::TVN_DELETEITEM,"deleteitem",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_TREEVIEW)
-    addFilterArg WMsg::TVN_DELETEITEM,"FFTFFFFFFFTFFFFFFFFFFFF"   #hitem,lparam
-    addNotifyHandler(WMsg::TVN_BEGINDRAG,"begindrag",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_TREEVIEW)
-    addFilterArg WMsg::TVN_BEGINDRAG,"FFFFFFFFFFFFTTFFFFFFTFF"    #hitem,state,lparam
-    addNotifyHandler(WMsg::TVN_BEGINRDRAG,"beginrdrag",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_TREEVIEW)
-    addFilterArg WMsg::TVN_BEGINRDRAG,"FFFFFFFFFFFFTTFFFFFFTFF"   #hitem,state,lparam
-  end
-  
-  def vrinit
-    super
-    treeviewinit
-  end
-
-  def insertItem(hparent,hafter,text,lparam=0,textsize=text.size)
-    ti=@screen.application.arg2cstructStr(WStruct::TREEINSERTITEM,hparent,hafter,
-                        0x0f,0,0,0,text.to_s,textsize,0,0,0,lparam)
-    sendMessage WMsg::TVM_INSERTITEM,0,ti
-  end
-  
-  def addItem(hparent,*args)
-    insertItem(hparent, WConst::TVI_LAST,*args)
-  end
-  
-  def insertMultiItems(hparent,hafter,multitext)
-    ha = if hafter then hafter else WConst::TVI_LAST end
-
-    multitext.each do |item|
-      if item.is_a?(Array)
-        item[1] = 0 unless item[1] 
-        h=insertItem(hparent,ha,item[0],item[1])
-        if item.size>2 and item[2].is_a?(Array) then
-          insertMultiItems(h,WConst::TVI_LAST,item[2])
-        end
-        ha=h
-      else
-        raise ArgumentError,"Arg2 illegal"
-      end
-    end
-  end
-  def addMultiItems(hparent,*args)
-    insertMultiItems(hparent, WConst::TVI_LAST,*args)
-  end
-
-  def deleteItem(htreei)
-    sendMessage WMsg::TVM_DELETEITEM,0,htreei
-  end
-  def clearItems
-    deleteItem(WConst::TVGN_ROOT)
-  end
-  def countItems
-    sendMessage WMsg::TVM_GETCOUNT,0,0
-  end
-  def selectItem(hitem)
-    sendMessage WMsg::TVM_SELECTITEM,9,hitem
-  end
-  def expandItem(hitem,mode)
-    sendMessage WMsg::TVM_EXPAND,mode.to_i,hitem
-  end
-  def indent
-    sendMessage WMsg::TVM_GETINDENT,0,0
-  end
-  def indent=(idt)
-    sendMessage WMsg::TVM_SETINDENT,idt.to_i,0
-  end
-  
-  def hittest(x,y)
-    tvhit=@screen.application.arg2cstructStr(WStruct::TVHITTEST,
-                          x.to_i,y.to_i,0,0)
-    sendMessage WMsg::TVM_HITTEST,0,tvhit
-    @screen.application.unpack(tvhit,WStruct::TVHITTEST)[3]
-  end
-  def hittest2(x,y)
-    tvhit=@screen.application.arg2cstructStr(WStruct::TVHITTEST,
-                          x.to_i,y.to_i,0,0)
-    sendMessage WMsg::TVM_HITTEST,0,tvhit
-    @screen.application.unpack(tvhit,WStruct::TVHITTEST)
-  end
-
-  def getNextItem(hitem,code)
-    sendMessage WMsg::TVM_GETNEXTITEM,code,hitem
-  end
-  def topItem() getNextItem(0,WConst::TVGN_ROOT)  end
-  def root() WConst::TVI_ROOT end
-  def last() WCONST::TVI_LAST end
-
-  def selectedItem()      nilnull(getNextItem(0,WConst::TVGN_CARET)) end
-  alias selected :selectedItem
-  def getParentOf(hitem)      nilnull(getNextItem(hitem,WConst::TVGN_PARENT))end
-  def getChildOf(hitem)       nilnull(getNextItem(hitem,WConst::TVGN_CHILD)) end
-  def getNextSiblingOf(hitem) nilnull(getNextItem(hitem,WConst::TVGN_NEXT))  end
-
-  def setImagelist(imagelist,itype=0)
-    raise "not Imagelist" unless imagelist.is_a?(SWin::Imagelist)
-    self.properties["imagelist"]=imagelist
-    sendMessage WMsg::TVM_SETIMAGELIST,itype,imagelist.himagelist
-  end
-
-  def setItemIconOf(hitem,img,simg=nil)
-    # TVIF_IMAGE=2, TVIF_SELECTEDIMAGE=0x20
-    mask=0; image=0; simage=0
-    if img  then mask |= 2;    image = img   end
-    if simg then mask |= 0x20; simage = simg end
-
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-             mask,hitem.to_i,0,0,"",0,image,simage,0,0)
-    sendMessage WMsg::TVM_SETITEM,0,tvitem
-  end
-  def getItemIconOf(hitem)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-         0x22,hitem.to_i,0,0,"",0,0,0,0,0)  
-    sendMessage WMsg::TVM_GETITEM,0,tvitem
-    @screen.application.unpack(tvitem,WStruct::TVITEM)[6..7]
-  end
-
-  def setItemLParamOf(hitem,lparam)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-             4,hitem.to_i,0,0,"",0,0,0,0,lparam.to_i)       # 4=TVIF_PARAM
-    sendMessage WMsg::TVM_SETITEM,0,tvitem
-  end
-  def getItemLParamOf(hitem)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-         4,hitem.to_i,0,0,"",0,0,0,0,0)       # 4=TVIF_PARAM
-    sendMessage WMsg::TVM_GETITEM,0,tvitem
-    @screen.application.unpack(tvitem,WStruct::TVITEM)[9]
-  end
-  def setItemTextOf(hitem,text)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-         1,hitem.to_i,0,0,text.to_s,text.size,0,0,0,0) # 1=TVIF_TEXT
-    sendMessage WMsg::TVM_SETITEM,0,tvitem
-  end
-  def getItemTextOf(hitem,textsize=128)
-    app=@screen.application
-    tvitem=app.arg2cstructStr(WStruct::TVITEM,
-         1,hitem.to_i,0,0,"\0"*textsize,textsize,0,0,0,0)   # 1=TVIF_TEXT
-    sendMessage WMsg::TVM_GETITEM,0,tvitem
-    app.pointer2string(app.unpack(tvitem,WStruct::TVITEM)[4])
-  end
-  def setItemStateOf(hitem,state)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-         8,hitem.to_i,state.to_i,0x00ff,"",0,0,0,0,0) # 8=TVIF_STATE
-    sendMessage WMsg::TVM_SETITEM,0,tvitem
-  end
-  def getItemStateOf(hitem)
-    tvitem=@screen.application.arg2cstructStr(WStruct::TVITEM,
-         8,hitem.to_i,0,0x00ff,"",0,0,0,0,0)   # 8=TVIF_STATE
-    sendMessage WMsg::TVM_GETITEM,0,tvitem
-    @screen.application.unpack(tvitem,WStruct::TVITEM)[2]
-  end
-end
-
-# Progressbar
-module WMsg
-  PBM_SETRANGE      = WM_USER+1
-  PBM_SETPOS        = WM_USER+2
-  PBM_DELTAPOS      = WM_USER+3
-  PBM_SETSTEP       = WM_USER+4
-  PBM_STEPIT        = WM_USER+5
-end
-module WStyle
-  PBS_SMOOTH        = 1   # ?
-end
-
-class VRProgressbar < VRNotifyControl
-=begin
-== VRProgressbar
-Progressbar.
-=== Methods
---- setRange(minr,maxr)
-    Sets the range from ((|minr|)) to ((|maxr|)).
---- position
-    Returns the current position.
---- position=(pos)
-    Sets the current position.
---- stepwidth=(st)
-    Sets the step width for ((<step>)).
---- step
-    Steps one step in position.
---- advance(n=1)
-    Steps multi steps in position.
-=end
-
-  WINCLASSINFO = ["msctls_progress32",0]
-
-  attr_reader :stepwidth, :minrange, :maxrange     # ooooo.....
-
-  def progressbarinit
-    @stepwidth=10
-    @minrange=0
-    @maxrange=100
-  end
-  def vrinit
-    super
-    progressbarinit
-  end
-
-  def setRange(minr,maxr)
-    @minrange=minr
-    @maxrange=maxr
-    sendMessage WMsg::PBM_SETRANGE,0,MAKELPARAM(minr,maxr)
-  end
-  def position=(pos)
-    sendMessage WMsg::PBM_SETPOS,pos.to_i,0
-  end
-  def position
-    raise StandardError,"not implemented"
-  end
-  def advance(n=1)
-    sendMessage WMsg::PBM_DELTAPOS,n.to_i,0
-  end
-  def stepwidth=(st)
-    @stepwidth=st
-    sendMessage WMsg::PBM_SETSTEP,st.to_i,0
-  end
-  def step
-    sendMessage WMsg::PBM_STEPIT,0,0
-  end
-end
-
-
-# Trackbar
-module WMsg
-  TBM_GETPOS        =  WM_USER + 0
-  TBM_GETRANGEMIN   =  WM_USER + 1
-  TBM_GETRANGEMAX   =  WM_USER + 2
-  TBM_SETPOS        =  WM_USER + 5
-  TBM_SETRANGEMIN   =  WM_USER + 7
-  TBM_SETRANGEMAX   =  WM_USER + 8
-  TBM_SETSEL        =  WM_USER + 10
-  TBM_SETSELSTART   =  WM_USER + 11
-  TBM_SETSELEND     =  WM_USER + 12
-  TBM_GETSELSTART   =  WM_USER + 17
-  TBM_GETSELEND     =  WM_USER + 18
-  TBM_CLEARSEL      =  WM_USER + 19
-  TBM_SETPAGESIZE   =  WM_USER + 21
-  TBM_GETPAGESIZE   =  WM_USER + 22
-  TBM_SETLINESIZE   =  WM_USER + 23
-  TBM_GETLINESIZE   =  WM_USER + 24
-end
-module WStyle
-  TBS_AUTOTICS = 0x001
-  TBS_VERT     = 0x002
-  TBS_HORZ     = 0x000
-  TBS_LEFT     = 0x004
-  TBS_BOTH     = 0x008
-  TBS_ENABLESEL= 0x020  #ENABELSELRANGE
-end
-
-class VRTrackbar < VRNotifyControl
-=begin
-== VRTrackbar
-Trackbar.
-=== Methods
---- position
-    Returns the position.
---- position=(pos)
-    Sets the position.
---- linesize
-    Returns the number of positions moved on by arrow keys.
---- linesize=(s)
-    Sets the number of positions mvoed on by arrow keys.
---- pagesize
-    Returns the number of positions moved on by [page up]/[pagedown] keys.
---- pagesize=(p)
-    Sets the number of positions moved on by [page up]/[pagedown] keys.
---- rangeMin
-    Returns minimum value of the trackbar.
---- rangeMin=(m)
-    Sets minimum value of the trackbar.
---- rangeMax
-    Returns maximum value of the trackbar.
---- rangeMax=(m)
-    Sets maximum value of the trackbar.
---- selStart
-    Returns the selection start of the trackbar.
---- selStart=(m)
-    Sets the selection start of the trackbar.
---- selEnd
-    Returns the selection end of the trackbar.
---- selEnd=(m)
-    Sets the selection end of the trackbar.
---- clearSel
-    Clears the selection.
-=end
-
-  WINCLASSINFO = ["msctls_trackbar32",0]
-
-  def vrinit
-    super
-  end
-
-  def position
-    sendMessage WMsg::TBM_GETPOS,0,0
-  end
-  def position=(pos)
-    sendMessage WMsg::TBM_SETPOS,1,pos.to_i
-  end
-
-  def linesize
-    sendMessage WMsg::TBM_GETLINESIZE,0,0
-  end
-  def linesize=(s)
-    sendMessage WMsg::TBM_SETLINESIZE,0,s.to_i
-  end
-  def pagesize
-    sendMessage WMsg::TBM_GETPAGESIZE,0,0
-  end
-  def pagesize=(s)
-    sendMessage WMsg::TBM_SETPAGESIZE,0,s.to_i
-  end
-
-  def rangeMin
-    sendMessage WMsg::TBM_GETRANGEMIN,0,0
-  end
-  def rangeMin=(m)
-    sendMessage WMsg::TBM_SETRANGEMIN,1,m.to_i
-  end
-  def rangeMax
-    sendMessage WMsg::TBM_GETRANGEMAX,0,0
-  end
-  def rangeMax=(m)
-    sendMessage WMsg::TBM_SETRANGEMAX,1,m.to_i
-  end
-  def selStart
-    sendMessage WMsg::TBM_GETSELSTART,0,0
-  end
-  def selStart=(m)
-    sendMessage WMsg::TBM_SETSELSTART,1,m.to_i
-  end
-  def selEnd
-    sendMessage WMsg::TBM_GETSELEND,0,0
-  end
-  def selEnd=(m)
-    sendMessage WMsg::TBM_SETSELEND,1,m.to_i
-  end
-  def clearSel
-    sendMessage WMsg::TBM_CLEARSEL,1,0
-  end
-end
-
-# updown control
-module WMsg
-  UDM_SETRANGE            = WM_USER+101
-  UDM_GETRANGE            = WM_USER+102
-  UDM_SETPOS              = WM_USER+103
-  UDM_GETPOS              = WM_USER+104
-  UDM_SETBUDDY            = WM_USER+105
-  UDM_GETBUDDY            = WM_USER+106
-  UDM_SETACCEL            = WM_USER+107
-  UDM_GETACCEL            = WM_USER+108
-  UDM_SETBASE             = WM_USER+109
-  UDM_GETBASE             = WM_USER+110
-
-  UDN_DELTAPOS            = 0x100000000-722
-end
-module WStyle
-  UDS_ALIGNRIGHT  = 0x04
-  UDS_ALIGNLEFT   = 0x08
-  UDS_HORZ        = 0x40
-
-# Thanks to Katonbo-san
-  UDS_SETBUDDYINT  = 0x0002
-  UDS_AUTOBUDDY    = 0x0010
-  UDS_ARROWKEYS    = 0x0020
-  UDS_NOTHOUSANDS  = 0x0080
-
-  UDS_INTBUDDYRIGHT = UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ALIGNRIGHT
-end
-
-module WStruct
-  NM_UPDOWN = NMHDR+"UU"
-end
-class VRUpdown < VRNotifyControl
-=begin
-== VRUpdown
-Updown control.
-===Methods
---- setRange(minr,maxr)
-    Sets the range from ((|minr|)) to ((|maxr|)).
---- getRange
-    Returns the range as an array [minr,maxr]
---- position
-    Returns current position.
---- position=
-    Sets current position.
---- base
-    Radix.
---- base=(b)
-    Sets the radix that is 10 or 16.
-=== Event handlers
---- ????_deltapos(pos)
-    Fired when the position is changing from ((|pos|)).
-    Note that ((|pos|)) is a previous value. To obtain the current value,
-    use buddy control which is a (edit) control made directry before 
-    the updown control(using VREdit#changed or its parent handler).
-=end
-  WINCLASSINFO = ["msctls_updown32",0]
-
-  def updowninit
-    addNotifyHandler(WMsg::UDN_DELTAPOS,"deltapos",
-                    MSGTYPE::ARGSTRUCT,WStruct::NM_UPDOWN)
-    addFilterArg WMsg::UDN_DELTAPOS,"TF"
-  end
-  def vrinit
-    super
-    updowninit
-  end
-
-  def setRange(minr,maxr)
-    sendMessage WMsg::UDM_SETRANGE,0,MAKELPARAM(maxr,minr)
-  end
-  def getRange
-    r=sendMessage WMsg::UDM_GETRANGE,0,0
-    return HIWORD(r),LOWORD(r)
-  end
-
-  def position=(p)
-    sendMessage WMsg::UDM_SETPOS,0,MAKELPARAM(p.to_i,0)
-  end
-  def position
-    sendMessage WMsg::UDM_GETPOS,0,0
-  end
-  
-  def base=(b)
-    sendMessage WMsg::UDM_SETBASE,b.to_i,0
-  end
-  def base
-    sendMessage WMsg::UDM_GETBASE,0,0
-  end
-end
-
-# Statusbar
-
-module WMsg
-  SB_SETTEXT       = WM_USER+1  #SETTEXT
-  SB_GETTEXT       = WM_USER+2  #GETTEXT
-  SB_GETTEXTLENGTH = WM_USER+3  #GETTEXTLENGTH
-  SB_SETPARTS      = WM_USER+4
-  SB_GETPARTS      = WM_USER+6
-  SB_SETMINHEIGHT  = WM_USER+8
-  SB_GETRECT       = WM_USER+10
-end
-module WConst
-   SBT_OWNERDRAW          =0x1000
-   SBT_NOBORDERS          =0x0100
-   SBT_POPOUT             =0x0200
-   SBT_RTLREADING         =0x0400
-end
-
-class VRStatusbar < VRNotifyControl
-=begin
-== VRStatusbar
-Statusbar.
-=== Methods
---- setparts(p,width=[-1])
-    Devides the statusbar into ((|p|)) parts with the widths specified by 
-    ((|width|)) which is an Integer array. If the width is -1, the right edge
-    of the part is to be at the right edge of the statusbar.
---- parts
-    Returns the number of parts.
---- getTextOf(idx)
-    Returns the text of the parts.
---- setTextOf(idx,text,style=0)
-    Sets the text of the parts whose index is ((|idx|)) to ((|text|))
---- getRectOf(idx)
-    Returns the position and size of the parts as an array [x,y,w,h].
---- minheight=(minh)
-    Sets the minimum height of the statusbar.
-=end
-
-  WINCLASSINFO = ["msctls_statusbar32",0]
-
-  def getTextOf(idx)
-    len = 1+LOWORD(sendMessage(WMsg::SB_GETTEXTLENGTH,idx,0))
-    r="\0"*len
-    sendMessage WMsg::SB_GETTEXT,idx,r
-    r
-  end
-  def setTextOf(idx,text,style=0)
-    sendMessage WMsg::SB_SETTEXT,(idx|(style&0xff00)),text.to_s
-  end
-  def parts
-    sendMessage WMsg::SB_GETPARTS,0,0
-  end
-  def setparts(p,widths=[-1])
-    if widths then
-         raise(ArgumentError,"width illegal") unless widths.is_a?(Array)
-    end
-    r=@screen.application.arg2cstructStr("I"*p,*widths) 
-    sendMessage WMsg::SB_SETPARTS,p.to_i,r
-  end
-  def getRectOf(idx)
-    r = [0,0,0,0].pack("iiii")
-    sendMessage WMsg::SB_GETRECT,idx.to_i,r
-    r.unpack("iiii")
-  end
-  def minheight=(h)
-    sendMessage WMsg::SB_SETMINHEIGHT,h.to_i,0
-  end
-end
-
-module VRStatusbarDockable
-=begin
-== VRStatusbarDockable
-This is a module to be added into VRForm for a statusbar that follows form resizing.
-
-=== Method
---- addStatusbar(caption='',height=10,control=VRStatusbar)
-    Adds a statusbar on a form. If you have another statusbar control, you may
-    set it for ((|control|)).
-=end
-
-  def statusbardockableinit
-    addHandler WMsg::WM_SIZE, "vr_statusbardock", MSGTYPE::ARGLINTINT,nil
-    acceptEvents [WMsg::WM_SIZE]
-  end
-
-  def vrinit
-    super
-    statusbardockableinit
-  end
-
-  def addStatusbar(caption="",height=10,control=VRStatusbar)
-    @_vr_statusbar=addControl control,"statusbar",caption,10,10,10,height
-    if self.visible? then
-      a=self.clientrect
-      sendMessage WMsg::WM_SIZE,0,MAKELPARAM(a[2]-a[0],a[3]-a[1])
-    end
-    @statusbar = @_vr_statusbar 
-  end
-
-  def self_vr_statusbardock(w,h)
-    if defined?(@_vr_statusbar) then
-      s=@_vr_statusbar
-      s.move 0, self.h - s.h, self.w, self.h - s.h
-    end
-  end
-
-end
-
-
-#Tabcontrol
-
-module WMsg
-  TCM_FIRST=0x1300
-  TCM_GETIMAGELIST   =   (TCM_FIRST + 2)
-  TCM_SETIMAGELIST   =   (TCM_FIRST + 3)
-  TCM_GETITEMCOUNT   =   (TCM_FIRST + 4)
-  TCM_GETITEM        =   (TCM_FIRST + 5)
-  TCM_SETITEM        =   (TCM_FIRST + 6)
-  TCM_INSERTITEM     =   (TCM_FIRST + 7)
-  TCM_DELETEITEM     =   (TCM_FIRST + 8)
-  TCM_DELETEALLITEMS =   (TCM_FIRST + 9)
-  TCM_GETITEMRECT    =   (TCM_FIRST + 10)
-  TCM_GETCURSEL      =   (TCM_FIRST + 11)
-  TCM_SETCURSEL      =   (TCM_FIRST + 12)
-  TCM_ADJUSTRECT     =   (TCM_FIRST + 40)
-  TCM_SETITEMSIZE    =   (TCM_FIRST + 41)
-  TCM_GETCURFOCUS    =   (TCM_FIRST + 47)
-  TCM_SETCURFOCUS    =   (TCM_FIRST + 48)
-
-  TCN_FIRST          =   0xffffffff-549  
-  TCN_SELCHANGE      =   (TCN_FIRST - 1)
-end
-  
-module WStyle
-  TCS_BOTTOM           =  0x0002
-  TCS_RIGHT            =  0x0002
-  TCS_MULTISELECT      =  0x0004
-  TCS_FLATBUTTONS      =  0x0008
-
-  TCS_FORCEICONLEFT    =  0x0010
-  TCS_FORCELABELLEFT   =  0x0020
-  TCS_HOTTRACK         =  0x0040
-  TCS_VERTICAL         =  0x0080
-  TCS_TABS             =  0x0000
-  TCS_BUTTONS          =  0x0100
-  TCS_SINGLELINE       =  0x0000
-  TCS_MULTILINE        =  0x0200
-  TCS_RIGHTJUSTIFY     =  0x0000
-  TCS_FIXEDWIDTH       =  0x0400
-  TCS_RAGGEDRIGHT      =  0x0800
-  TCS_FOCUSONBUTTONDOWN=  0x1000
-  TCS_OWNERDRAWFIXED   =  0x2000
-  TCS_TOOLTIPS         =  0x4000
-  TCS_FOCUSNEVER       =  0x8000
-end
-
-module WStruct
-  TC_ITEM = "UUUPUUU"       # Mask,rsrv1,rsrv2,Text,TextMax,iImage,lParam
-end
-
-class VRTabControl < VRNotifyControl
-=begin
-== VRTabControl
-Tabs.
-This class doesn't have a function to show/hide controls according to
-the selected tab. For that function ((<VRTabbedPanel>)) class is provided below.
-=== Methods
---- insertTab(index,text,textmax=text.size,lparam=0)
-    Inserts a new tab named ((|text|)) with ((|lparam|)) at ((|index|))-th.
-    ((|index|)) is ordinal number for tabs.
---- clearTabs
-    Deletes all tabs.
---- deleteTab(idx)
-    Deletes a tab at ((|index|))
---- countTabs
-    Counts tabs in the control.
---- selectedTab
-    Returns the selected tab's index.
---- selectTab(idx)
-    Selects the tab at ((|idx|))
---- setImagelist(imagelist)
-    Sets an imagelist for the tabs.
---- setTabSize(width,height)
-    Sets each tab size.
---- getTabRect(i)
-    Returns the client area of the tab at ((|idx|)) as  an array of [x,y,w,h].
---- adjustRect(x,y,w,h,flag=false)
-    Adjusts a rectangle coodinates for tabcontrol's clientarea which is 
-    excluded tab buttons area. ((|flag|)) means the direction of adjusting.
-    adjustRect(0,0,10,10,false) returns a leftsided rectangle below the 
-    tab buttons.
---- getTabTextOf(idx)
-    Gets a title text of tab at ((|idx|)).
---- setTabTextOf(idx,text)
-    Sets a title text of tab at ((|idx|)) as ((|text|)).
---- getTabImageOf(idx)
-    Gets a image id in the imagelist for tab at((|idx|)).
---- setTabImageOf(idx,image)
-    Sets a image id into ((|image|)) in the imagelist for tab at((|idx|)).
---- getTabLParamOf(idx)
-    Gets lparam value of tab at((|idx|)).
---- setTabLParamOf(idx,lparam)
-    Sets lparam value of tab at((|idx|)) as ((|lparam|)).
-
-=== Event Handlers
---- ????_selchanged
-    Fired when the selected tab changed. To get current tab id, use selectedTab
-    method.
-=end
-
-  include VRParent
-
-  WINCLASSINFO = ["SysTabControl32",0]  #TCS_TAB
-  
-  def tabcontrolinit
-    addNotifyHandler WMsg::TCN_SELCHANGE,"selchanged",MSGTYPE::ARGNONE,nil
-  end
-  
-  def vrinit
-    super
-    tabcontrolinit
-  end
-  
-  def clearTabs
-    sendMessage WMsg::TCM_DELETEALLITEMS,0,0
-  end
-  
-  def deleteTab(i)
-    sendMessage WMsg::TCM_DELETEITEM,i,0
-  end
-  
-  def selectedTab
-    sendMessage WMsg::TCM_GETCURSEL,0,0
-  end
-  
-  def countTabs
-    sendMessage WMsg::TCM_GETITEMCOUNT,0,0
-  end
-  
-  def insertTab(idx,text,textmax=text.size,lparam=0)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x9,0,0,text,textmax,0,lparam)
-          # Mask,rsrv1,rsrv2,Text,TextMax,iImage,lParam
-    sendMessage WMsg::TCM_INSERTITEM,idx.to_i,tb
-  end
-
-  def selectTab(i)
-    sendMessage WMsg::TCM_SETCURSEL,i,0
-  end
-
-  def setImagelist(imagelist)
-    raise "not Imagelist" unless imagelist.is_a?(SWin::Imagelist)
-    sendMessage WMsg::TCM_SETIMAGELIST,0,imagelist.himagelist
-  end
-
-  def setTabSize(width,height)
-    sendMessage WMsg::TCM_SETITEMSIZE,0,MAKELPARAM(width,height)
-  end
-
-  def getTabRect(i)
-    rect="\0"*16
-    sendMessage WMsg::TCM_GETITEMRECT,i.to_i,rect
-    return @screen.application.unpack(rect,"UUUU")
-  end
-
-  def adjustRect(x,y,w,h,flag=false)
-    f = if flag then  1 else 0 end
-    rect=@screen.application.arg2cstructStr("UUUU",x,y,w,h)
-    sendMessage WMsg::TCM_ADJUSTRECT,f,rect
-    return @screen.application.unpack(rect,"UUUU")
-  end
-
-# tab's properties = text,image,lparam
-
-  def getTabTextOf(idx)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x1,0,0,"\0"*128,128,0,0)
-    rv=sendMessage WMsg::TCM_GETITEM,idx.to_i,tb
-    if rv!=0 then
-      r=@screen.application.unpack(tb,WStruct::TC_ITEM)[3]
-      @screen.application.pointer2string(r)
-    else
-      nil
-    end
-  end
-  def getTabImageOf(idx)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x2,0,0," \0",1,0,0)
-    rv=sendMessage WMsg::TCM_GETITEM,idx.to_i,tb
-    r=@screen.application.unpack(tb,WStruct::TC_ITEM)[5]
-  end
-  def getTabLParamOf(idx)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x8,0,0," \0",1,0,0)
-    rv=sendMessage WMsg::TCM_GETITEM,idx.to_i,tb
-    r=@screen.application.unpack(tb,WStruct::TC_ITEM)[6]
-  end
-
-  def setTabTextOf(idx,text)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x1,0,0,text,text.length,0,0)
-    sendMessage WMsg::TCM_SETITEM,idx.to_i,tb
-    self.refresh
-  end
-  def setTabImageOf(idx,iImage)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x2,0,0," \0",1,iImage,0)
-    sendMessage WMsg::TCM_SETITEM,idx.to_i,tb
-    self.refresh
-  end
-  def setTabLParamOf(idx,lparam)
-    tb=@screen.application.arg2cstructStr(WStruct::TC_ITEM,
-            0x8,0,0," \0",1,0,lparam)
-    sendMessage WMsg::TCM_SETITEM,idx.to_i,tb
-  end
-end
-
-class VRTabbedPanel < VRTabControl
-=begin
-== VRTabbedPanel
-This is a class utilizing VRTabControl.
-On this control, each tab has a VRPanel and be shown/hidden automatically
-according to the selected tab.
-
-=== Class method
---- auto_panelresize(flag)
-    Resize panels on the tabs automatically when this control resized.
-=== Methods
---- setupPanels(arg-1,arg-2,arg-3,....)
-    Creates tabs each titled ((|arg-n|)) if args are String.
-    When ((|arg-n|)) is array of ((|[title, contorl-class, control-name]|)),
-    Creates control and relates with the tab.
-    Use like follows.
-      class Panel1 < VRPanel
-        include VRContainersSet
-        ...
-      end
-      class Panel2 < VRPanel
-        ...
-      end
-      ...
-      setupPanels(["tab-1",Panel1,"panel1"],["tab-2",Panel2,"panel2"])
---- send_parent2(idx,controlname,eventname)
-    Sets to send to its parent an event of control named ((|controlname|)) 
-    on the panel at ((|idx|)).
-=== Attribute(s)
---- panels
-    An array that contains panels for each tab.
-    panels[i] means a panel concerned with the tab at ((|i|)).
-=== Event Handlers
-Same as ((<VRTabControl>)).
-VRTabbedPanel#selchanged is already defined, so you need to call super when you
-override this method.
-=end
-  attr_reader :panels
-  include VRMessageHandler
-  include VRParent
-  
-  @@_auto_tabpanelresize = nil
-  
-  def self.auto_panelresize(flag)
-    @@_auto_tabpanelresize = flag
-  end
-  
-  def vrinit
-    super
-    if @@_auto_tabpanelresize
-      addHandler(WMsg::WM_SIZE,  "_vr_tabpanelresize",  MSGTYPE::ARGLINTINT,nil)
-      acceptEvents [WMsg::WM_SIZE]
-    end
-  end
-  
-  def setupPanels(*args)
-    @panels=Array.new(args.size)
-    0.upto(args.size-1) do |i|
-      if args[i].is_a? Array
-        insertTab i,args[i][0]
-        c = args[i][1] ? args[i][1] : VRPanel
-        s = args[i][2] ? args[i][2] : "panel#{i}"
-        x,y,w,h = adjustRect(0,0,self.w,self.h,false)
-        @panels[i] = addControl(c,s,s,x,y,w-x,h-y)
-      else
-        insertTab i,args[i]
-        x,y,w,h = adjustRect(0,0,self.w,self.h,false)
-        @panels[i] = addControl(VRPanel,"panel#{i}","panel#{i}",x,y,w-x,h-y)
-        @panels[i].extend VRContainersSet
-        @panels[i].containers_init
-      end
-      @panels[i].show 0
-    end
-
-    @_vr_prevpanel=0
-    selectTab 0
-  end
-
-  def send_parent2(i,name,method)
-    @panels[i].send_parent(name,method)
-    send_parent "panel#{i}","#{name}_#{method}"
-  end
-
-  def selectTab(i)
-    super
-    selchanged
-  end
-
-  def selchanged
-    raise "assigned no panels" if @panels.size<1
-    @panels[@_vr_prevpanel].show(0)
-    t=selectedTab
-    @panels[t].show
-    @_vr_prevpanel=t
-    @panels[t].refresh
-  end
-  
-  def self__vr_tabpanelresize(w,h)
-    x,y,w,h = adjustRect(0,0,self.w,self.h,false).map {|x| x & 0x7fffffff}
-    return if @panels.nil?
-    @panels.each{|i| i.move(x,y,w-x,h-y)}
-  end
-end
-
-unless VR_OLDCOMCTL then
-
-
-module WMsg
-  RB_INSERTBAND   = WM_USER +  1
-  RB_DELETEBAND   = WM_USER +  2
-  RB_GETBARINFO   = WM_USER +  3
-  RB_SETBARINFO   = WM_USER +  4
-  RB_GETBANDCOUNT = WM_USER + 12
-  RB_GETROWCOUNT  = WM_USER + 13
-  RB_GETROWHEIGHT = WM_USER + 14
-  RB_SETBKCOLOR   = WM_USER + 19
-  RB_GETBKCOLOR   = WM_USER + 20
-  RB_SETTEXTCOLOR = WM_USER + 21
-  RB_GETTEXTCOLOR = WM_USER + 22
-  RB_SIZETORECT   = WM_USER + 23
-  RB_GETBARHEIGHT = WM_USER + 27
-  RB_GETBANDINFO  = WM_USER + 29
-  RB_SHOWBAND     = WM_USER + 35
-  RB_SETPALETTE   = WM_USER + 37
-  RB_GETPALETTE   = WM_USER + 38
-  RB_MOVEBAND     = WM_USER + 39
-
-  RBN_LAYOUTCHANGED = 0x100000000-831-2
-end
-
-
-module WConst
-  RBBIM_STYLE         = 0x00000001
-  RBBIM_COLORS        = 0x00000002
-  RBBIM_TEXT          = 0x00000004
-  RBBIM_IMAGE         = 0x00000008
-  RBBIM_CHILD         = 0x00000010
-  RBBIM_CHILDSIZE     = 0x00000020
-  RBBIM_SIZE          = 0x00000040
-  RBBIM_BACKGROUND    = 0x00000080
-end
-
-class VRRebar < VRNotifyControl
-=begin
-== VRRebar
-  Rebar control.
-  If comctl32.dll on your system is too old, this is not available.
-=== Methods
---- insertband(cntl,txt,minx=30,miny=cnt.h+2,band=-1)
-    Creates a new band and set the control on it.
-    ((|txt|)) is the caption of the band and minx/miny is the minimum size of
-    the band.
-    The control is created by rebar's addControl() but its event handling is on
-    the parent window.
---- bkColor=(c)
---- bkColor
-    Sets/Gets background color of rebar.
---- textColor=(c)
---- textColor
-    Sets/Gets band caption color.
---- relayout(x=self.x, y=self.y, w=self.w, h=self.h)
-    rearranges rebar's bands in the specified rectangle.
-=end
-
-  WINCLASSINFO = ["ReBarWindow32",0]
-
-  def rebarinit
-    sendMessage WMsg::RB_SETBARINFO,0,[12,0,0].pack("LLL")
-    addNotifyHandler WMsg::RBN_LAYOUTCHANGED,"layoutchanged",MSGTYPE::ARGNONE,nil
-  end
-
-  def vrinit
-    super
-    rebarinit
-  end
-
-  def insertband(cnt,txt,minx=30,miny=cnt.h+2,band=-1)
-    size = 4*14
-    mask= WConst::RBBIM_TEXT | WConst::RBBIM_STYLE | WConst::RBBIM_CHILD | WConst::RBBIM_CHILDSIZE | WConst::RBBIM_SIZE
-    style= 4 #RBBS_CHILDEDGE
-    frcolor= 0
-    bkcolor= 0
-    text= txt
-    cch= 0
-    image= 0
-    hwndChild= cnt.hWnd
-    cxmin= minx
-    cymin= miny
-    cx= 100
-    bkBmp= 0
-    wid= 0
-    tis = [size,mask,style,frcolor,bkcolor,text,cch,image,hwndChild,cxmin,cymin,cx,bkBmp,wid].pack("LLLLLP#{text.length}LLLLLLLL")
-    sendMessage WMsg::RB_INSERTBAND,band,tis
-  end
-
-  def h
-    sendMessage WMsg::RB_GETBARHEIGHT,0,0
-  end
-
-  def bkColor
-    sendMessage WMsg::RB_GETBKCOLOR,0,0
-  end
-  def bkColor=(c)
-    sendMessage WMsg::RB_SETBKCOLOR,0,c
-  end
-
-  def textColor
-    sendMessage WMsg::RB_GETTEXTCOLOR,0,0
-  end
-  def textColor=(c)
-    sendMessage WMsg::RB_SETTEXTCOLOR,0,c
-  end
-
-  def relayout(x=self.x,y=self.y,w=self.w,h=self.h)
-    sendMessage WMsg::RB_SIZETORECT,0,[x,y,w,h].pack("LLLL")
-  end
-
-  include VRParent
-  def newControlID
-    @parent.newControlID
-  end
-  def registerControl(*arg)
-    @parent.registerControl(*arg)
-  end
-end
-
-end  # unlessVR_OLDCOMCTL
-
-
-# contribute files
-require VR_DIR+'contrib/toolbar'
-require VR_DIR+'contrib/vrlistviewex'
-
-if VR_COMPATIBILITY_LEVEL then
-  require VR_DIR + 'compat/vrcomctl.rb'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcontrol.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcontrol.rb
deleted file mode 100644
index 8cc5d97..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrcontrol.rb
+++ /dev/null
@@ -1,1369 +0,0 @@
-###################################
-#
-# vrcontrol.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'sysmod'
-=begin
-= VisualuRuby(tmp) Standard Controls
-This file prepares classes of standard controls, panels and menu modules.
-
-<<< handlers.rd
-
-=== Control Container
-* ((<VRStdControlContainer>))
-
-=== Standard Controls
-* ((<VRButton>))
-* ((<VRGroupbox>))
-* ((<VRCheckbox>))
-* ((<VRRadiobutton>))
-* ((<VRStatic>))
-* ((<VREdit>))
-* ((<VRText>))
-* ((<VRListbox>))
-* ((<VRCombobox>))
-
-=== Menu
-* ((<VRMenu>))
-* ((<VRMenuItem>))
-* ((<VRMenuUseable>))
-
-=== Panels
-* ((<VRPanel>))
-* ((<VRBitmapPanel>))
-* ((<VRCanvasPanel>))
-=end
-
-###########################################
-#  Messages and Styles
-#
-
-module WMsg
-  BN_CLICKED  =       0
-  BN_DBLCLICKED  =    5
-  BM_GETCHECK =    0xf0
-  BM_SETCHECK =    0xf1
-
-  STN_CLICKED =       0
-  STN_DBLCLICKED =    1
-
-  LB_ADDSTRING =    0x0180
-  LB_INSERTSTRING = 0x0181
-  LB_DELETESTRING = 0x0182
-  LB_SETSEL =       0x0185
-  LB_SETCURSEL =    0x0186
-  LB_GETSEL =       0x0187
-  LB_GETCURSEL =    0x188
-  LB_GETTEXT =      0x189
-  LB_GETTEXTLEN =   0x18a
-  LB_GETCOUNT   =   0x18b
-  LB_SELECTSTRING = 0x18c
-  LB_DIR        =   0x18d
-  LB_FINDSTRING =   0x18f
-  LB_GETSELCOUNT =  0x190
-  LB_GETSELITEMS =  0x191
-  LB_GETITEMDATA =  0x199
-  LB_SETITEMDATA =  0x19a
-  LBN_SELCHANGE=1
-  LBN_DBLCLK=2
-  
-  CB_ADDSTRING    = 0x143
-  CB_DELETESTRING = 0x144
-  CB_DIR          = 0x145
-  CB_GETCOUNT     = 0x146
-  CB_GETCURSEL =    0x147
-  CB_GETLBTEXT =    0x148
-  CB_GETLBTEXTLEN = 0x149
-  CB_INSERTSTRING = 0x14a
-  CB_FINDSTRING   = 0x14c
-  CB_SELECTSTRING = 0x14d
-  CB_SETCURSEL    = 0x14e
-  CB_GETITEMDATA  = 0x150
-  CB_SETITEMDATA  = 0x151
-  CB_SETEXTENDEDUI =0x155
-  CBN_SELCHANGE    = 1
-end
-
-module WStyle
-  SS_LEFT =           0
-  SS_CENTER =         1
-  SS_RIGHT =          2
-
-  BS_PUSHBUTTON =     0
-  BS_CHECKBOX =       2
-  BS_AUTOCHECKBOX =   3
-  BS_RADIOBUTTON =    4
-  BS_3STATE =         5
-  BS_GROUPBOX =       7
-  BS_USERBUTTON =     8
-  BS_AUTORADIOBUTTON= 9
-
-  ES_MULTILINE   = 4
-  ES_PASSWORD    = 0x20
-  ES_AUTOVSCROLL = 0x40
-  ES_AUTOHSCROLL = 0x80
-  ES_READONLY    = 0x800
-  ES_WANTRETURN  = 0x1000
-  LBS_STANDARD =    0x00a00000 | 1
-  LBS_MULTIPLESEL = 8
-
-  CBS_STANDARD    = 0x00a00200 | 3
-  CBS_AUTOSCROLL = 0x40
-end
-
-###############################################
-# Standard Control
-#
-
-class VRStdControl < VRControl
-  def _vr_cmdhandlers
-    unless defined?(@_vr_cmdhandlers)
-      @_vr_cmdhandlers={} 
-    else
-      @_vr_cmdhandlers
-    end
-  end
-
-  def addCommandHandler(msg,handlername,handlertype,argparsestr)
-    @_vr_cmdhandlers={} unless defined?(@_vr_cmdhandlers)
-    @_vr_cmdhandlers[msg]=[] unless _vr_cmdhandlers[msg]
-    @_vr_cmdhandlers[msg].push [handlername,handlertype,argparsestr]
-  end
-
-  def deleteCommandHandler(msg,handlername)
-    return false unless @_vr_cmdhandlers[msg]
-    @_vr_cmdhandlers.delete_if do |shandler|
-      shandler[0] != (PREHANDLERSTR+handlername).intern
-    end
-  end
-end
-
-
-################################################
-# Standard Control Container 
-#
-module VRStdControlContainer
-=begin
-== VRStdControlContainer
-This module provides a message handler for WM_COMMAND, which calls
-the defined methods in a parent window.
-VRForm includes this module automatically loading "vrcontrol.rb".
-=end
-
-  include VRMessageHandler
-
-  def stdcontrolcontainerinit
-    addHandler(WMsg::WM_COMMAND,"wmcommand",MSGTYPE::ARGPASS,nil)
-    addEvent WMsg::WM_COMMAND
-  end
-  
-  def vrinit
-    super
-    stdcontrolcontainerinit
-    addNoRelayMessages [WMsg::WM_COMMAND]
-  end
-
-  def self_wmcommand(msg)
-    id=LOWORD(msg.wParam)
-    ct=@controls[id]       # Activated Control
-    if !ct then
-      if !@_vr_menu then return end
-      ct=@_vr_menus[id]
-      if !ct then
-        return # no handler
-      end
-    end
-    
-    messageid=HIWORD(msg.wParam)
-    return unless ct._vr_cmdhandlers and ct._vr_cmdhandlers[messageid]
-
-    ct._vr_cmdhandlers[messageid].each do |shandler|
-      args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-      ct.__send__(shandler[0],*args) if ct.respond_to?(shandler[0])
-      msg.retval = controlmsg_dispatching(ct,shandler[0],*args)
-    end
-  end
-
-end
-
-# add
-module VRContainersSet
-  include VRStdControlContainer
-  INITIALIZERS.push :stdcontrolcontainerinit
-end
-
-
-
-##########################################
-#  Standard Controls
-#
-#
-#  Minimum definition for a Standard Control is
-#
-#> class VRSampleControl <VRStdControl
-#>   WINCLASSINFO = ["ControlClass",additionalStyle,exStyle]
-#>   def vrinit()
-#>     super 
-#>     addCommandHandler(message,eventname,type,argparsestr])
-#>   end
-#> end
-#
-# @_vr_cmdhandlers such as {
-## message -> [eventname, argtype, unpackstr]
-#   WMsg::BN_CLICKED=>["clicked",MSGTYPE::ARGNONE,nil],
-#   WMsg::LBN_SELCHANGE=>["selchange",MSGTYPE::ARGNONE,nil]
-#}
-# ############################################################
-
-class VRButton < VRStdControl
-=begin
-== VRButton
-Button.
-Button's caption can be set/got by caption/caption= method of SWin::Window.
-
-=== Event handlers
-Buttons invoke the following method of parent window.
---- ????_clicked
-    This parent's method is fired when button is pushed.
---- ????_dblclicked
-    This parent's method is fired when button is double clicked.
-=end
-
-  WINCLASSINFO =  ["BUTTON",WStyle::BS_PUSHBUTTON] 
-
-  def vrinit
-    super
-    addCommandHandler(WMsg::BN_CLICKED,    "clicked",   MSGTYPE::ARGNONE,nil)
-    addCommandHandler(WMsg::BN_DBLCLICKED, "dblclicked",MSGTYPE::ARGNONE,nil)
-  end
-end
-
-class VRGroupbox < VRStdControl
-=begin
-== VRGroupbox
-Groupbox.
-
-This control can be a container of other window.
-You need to extend this class by Container modules, VRStdControlContainer for Standard Controls and VRCommonControlContainer for Common Controls.
-=end
-
-  include VRParent
-  WINCLASSINFO = ["BUTTON",WStyle::BS_GROUPBOX]
-end
-
-class VRCheckbox < VRButton
-=begin
-== VRCheckbox
-Check box.
-Parent class is ((<VRButton>))
-
-=== Methods
-Checkbox has the following methods.
---- checked?
-    Return boolean value whether checkbox is checked or not.
---- check(v)
-    Check checkbox as v(=true/false).
-=end
-  WINCLASSINFO = ["BUTTON",WStyle::BS_AUTOCHECKBOX]
-  private
-  
-  def to_check_state(v)
-    res=case v
-    when true
-      1
-    when false,nil
-      0
-    else
-      if v.respond_to?(:to_i)
-        v.to_i != 0 ? 1 : 0
-      else
-        v ? 1 : 0
-      end
-    end
-    return res
-  end
-  
-  public
-  
-  def checked?
-    c=sendMessage(WMsg::BM_GETCHECK,0,0)               #getcheck
-    return c!=0
-  end
-  
-  def check(v)
-    sendMessage WMsg::BM_SETCHECK, to_check_state(v),0
-  end
-  
-  alias :checked= :check
-end
-
-class VRRadiobutton < VRCheckbox
-=begin
-== VRRadiobutton
-Radio Button.
-
-Parent class is ((<VRCheckbox>))
-=end
-  WINCLASSINFO = ["BUTTON",WStyle::BS_AUTORADIOBUTTON]
-end
-
-
-class VRStatic < VRStdControl
-=begin
-== VRStatic
-Static Control(text).
-
-Text can be access as caption.
-
-=== Event handlers
---- ????_clicked
-    Fired when the control is clicked if the control has the style WMsg::STN_CLICKED
-=end
-  WINCLASSINFO = ["STATIC",0]
-  def vrinit
-    addCommandHandler(WMsg::STN_CLICKED,  "clicked",0,nil)
-  end
-end
-
-class VREdit < VRStdControl
-=begin
-== VREdit
-Edit Control.
-
-=== Methods
---- text
-    Gets Text in the control. Line break(\r\n) is translated by this method.
---- text=(str)
-    Sets Text in the control. Line break is translated by this method.
---- getSel
-    Returns [start_pos,end_pos] of the selected area.
---- setSel(st,en,noscroll=0)
-    Sets the selected area specified by ((|st|)) as start point and ((|en|))
-    as end point and Scrolls to show the area. When ((|noscroll|)) is 1, 
-    it doesn't scroll.
---- setCaret(r)
-    Sets cursor point at ((|r|))
---- replaceSel(newstr)
-    Replaces text in the selected area with ((|newstr|)).
---- readonly=(b)
-    Sets readonly flag as boolean ((|b|))
---- limit
-    Gets the length limit of this Editbox.
---- limit=(lmt)
-    Sets the length limit of this Editbox.
---- modified
-    Returns true if the editbox text is modified by user.
---- modified=(f)
-    Sets modified flag of the editbox.
---- cut
-    Cuts the selected area into clipboard.
---- copy
-    Copies the selected area into clipboard.
---- paste
-    Paste the clipboard text into the editbox.
---- clear
-    Clears selected area text.
-    Use ((<cut>)) method to set the text into clipboard.
---- undo
-    Undo the previous cut/copy/paste/clear action.
---- charFromPos(x,y)
-    retrieves information about the character closest to a specified point
-    in the client area.
-    ((x)) is the horizontal coordinate. ((y)) is the vertical coordinate.
-    the return value specifies character index by Fixnum.
-    the character index starts from zero
-=== Event handlers
-Editboxes invoke the following method of parent window.
---- ????_changed
-    This parent's method is fired when editbox text is modified.
-=end
-
-  WINCLASSINFO = ["EDIT",WStyle::ES_AUTOHSCROLL,WExStyle::WS_EX_CLIENTEDGE]
-
-  def vrinit
-    super
-    addCommandHandler(0x300,"changed",MSGTYPE::ARGNONE,nil)
-  end
-
-  def getSel
-    r=sendMessage(0xb0,0,0)
-    return LOWORD(r),HIWORD(r)
-  end
-
-  def setCaret(r)
-    setSel(r,r)
-  end
-
-  def setSel(st,en,noscroll=0)
-    sendMessage(0xb1,st,en)
-  end
-
-  def replaceSel(newstr)
-    sendMessage(0xc2,0,((newstr.empty?)? '' : newstr.to_s))
-  end
-
-  def readonly=(b)
-    f= (b)? 1 : 0
-    sendMessage 0xcf,f,0
-  end
-
-  def limit=(lmt)
-    sendMessage 0xc5,lmt.to_i,0
-  end
-  def limit
-    sendMessage 0xd5,0,0
-  end
-
-  def modified
-    r=sendMessage 0xb8,0,0              #GETMODIFY
-    if r==0 then false else true end
-  end
-  alias modified? :modified
-  def modified=(f)
-    r= if f then 1 else 0 end
-    sendMessage 0xb9,r,0
-  end
-
-# change linebreak code
-# caption,caption= methods is raw methods
-
-  VR_REGEXPNEWLINE="\r\n"
-  def text() self.caption.gsub(/#{VR_REGEXPNEWLINE}/,$/); end
-  def text=(str) 
-    self.caption = str.to_s.gsub(/#{VR_REGEXPNEWLINE}/,"\n").gsub(/\n/,VR_REGEXPNEWLINE)
-  end
-
-
- # for clipboard and so on..
-  def cut
-    sendMessage 0x300,0,0  #CUT
-  end
-  def copy
-    sendMessage 0x301,0,0  #COPY
-  end
-  def paste
-    sendMessage 0x302,0,0  #PASTE
-  end
-  def clear
-    sendMessage 0x303,0,0  #CLEAR
-  end
-  def undo
-    sendMessage 0x304,0,0  #UNDO
-  end
-  
-  def charFromPos(x,y)
-    r=sendMessage 0x00D7,0,(y << 16) | x  #EM_CHARFROMPOS
-    return LOWORD(r)
-  end
-  
-end
-
-class VRText < VREdit
-=begin
-== VRText
-Mutiline Editbox.
-Parent class is ((<VREdit>))
-
-=== Methods
---- scrollTo(line.col)
-    Scrolls ((|line|)) lines vertically and ((|col|)) columns horizontally.
---- visibleStartLine
-    Returns line number of the first visible line in the editbox.
---- countLines
-    Returns max line number.
---- getLineLengthOf(ln)
-    Returns length of the ((|ln|))-th line.
---- getLineTextOf(ln,maxlen)
-    Returns text of ((|ln|))-th line. If maxlen is specified, returned text is
-    limited in its length.
---- scrollup
-    Scrolls line up in the editbox.
---- scrolldown
-    Scrolls line down in the editbox.
---- scrollupPage
-    Scrolls page up in the editbox.
---- scrolldownPage
-    Scrolls page down in the editbox.
---- scrolltocaret
-    Scrolls the caret into view in the editbox.
---- char2line(ptr)
-    Returns the index of the line that contains the specified character index.
---- line2char(ln)
-    Returns the character index of a line.
---- getCurrentLine
-    Returns the current line index.
---- charLineFromPos(x,y)
-    retrieves information about the character closest to a specified point
-    in the client area.
-    ((x)) is the horizontal coordinate. ((y)) is the vertical coordinate.
-    the return value specifies character index and line index by Array.
-    first item means character index. second item means line index.
-    the character index and line index start from zero
-=end
-
-  WINCLASSINFO = ["EDIT",
-     WStyle::ES_MULTILINE|WStyle::ES_AUTOVSCROLL,WExStyle::WS_EX_CLIENTEDGE
-    ]
-
-private
-  def c_scroll(r)
-    sendMessage 0xb5,r.to_i,0
-  end
-
-public
-
-  def countLines
-    sendMessage 0x00BA,0,0
-  end
-
-  def scrollTo(line,col)
-    sendMessage 0x00B6,0,MAKELPARAM(line,col)    #LINESCROLL
-  end
-  def visibleStartLine()
-    sendMessage 0x00CE,0,0             #GETFIRSTVISIBLELINE
-  end
-  
-  def getLineLengthOf(l)
-    sendMessage 0xc1,line2char(l.to_i),0          #GETLINELENGTH
-  end
-  def getLineTextOf(l,textsize=getLineLengthOf(l)+1)
-    r=[textsize," "*textsize].pack("Sa*")
-    len=sendMessage 0xc4,l.to_i,r
-    r[0,len]
-  end
-
-  def scrollup() c_scroll 0; end
-  def scrolldown() c_scroll 1; end
-  def scrollupPage() c_scroll 2; end
-  def scrolldownPage() c_scroll 3; end
-  
-  def scrolltocaret
-    sendMessage 0xb7,0,0               #SCROLLCARET
-  end
-  
-  def char2line(ptr)
-    sendMessage 0xc9,ptr.to_i,0        #LINEFROMCHAR
-  end
-  def line2char(l)
-    sendMessage 0xbb,l.to_i,0          #LINEINDEX
-  end
-  def getCurrentLine
-    char2line(-1)
-  end
-  
-  def charLineFromPos(x,y)
-    r=sendMessage 0x00D7,0,(y << 16) | x  #EM_CHARFROMPOS
-    return [LOWORD(r),HIWORD(r)]
-  end
-  
-end
-
-
-class VRListbox < VRStdControl
-=begin
-== VRListbox
-Listbox.
-Listbox has multi strings to select.
-
-=== Methods
---- addString(idx,str)
-    Adds ((|str|)) String at the ((|idx|)).
-    When ((|idx|)) is omitted, ((|str|)) is added at the bottom.
---- deleteString(idx)
-    Deletes string at ((|idx|))
---- countStrings
-    Returns the count of its strings.
---- clearStrings
-    Deletes all strings.
---- eachString
-    Yields each string.
---- setListStrings(strarray)
-    Sets array of string ( ((|strarray|)) ) as the listbox strings.
---- selectedString
-    Returns the selected index.
---- select(idx)
-    Selects ((|idx|))-th string.
---- getTextOf(idx)
-    Retrieves the text of ((|idx|))-th string.
---- setDir(fname,opt=0)
-    Sets the filenames specified by ((|fname|)) to the listbox.
-    ((|opt|)) specifies the attributes of the files to be added.
---- findString(findstr,start=0)
-    Finds ((|findstr|)) in the listbox strings and returns the its index.
-    ((|start|)) specifies the index to start finding.
---- getDataOf(idx)
-    Retrieves the 32bit value associated with the ((|idx|))-th string.
---- setDataOf(idx,data)
-    Associates the 32bit value with the ((|idx|))-th string.
-=== Event handlers
---- ????_selchanged
-    Fired when the selected string is changed.
-=end
-
-  WINCLASSINFO = ["LISTBOX",WStyle::LBS_STANDARD,WExStyle::WS_EX_CLIENTEDGE]
-
-  def vrinit
-    super
-    addCommandHandler(WMsg::LBN_SELCHANGE, "selchange",MSGTYPE::ARGNONE,nil)
-    set_liststrings
-  end
-  
- private
-  def set_liststrings
-    clearStrings
-    
-    return unless defined? @_vr_init_items
-    0.upto(@_vr_init_items.size-1) do |idx|
-      addString idx, at _vr_init_items[idx]
-    end if @_vr_init_items
-  end
-
- public
-  def addString(*arg)
-    if arg[0].is_a?(Integer) then
-      sendMessage WMsg::LB_INSERTSTRING,arg[0],arg[1].to_s
-    else
-      sendMessage WMsg::LB_ADDSTRING,0,arg[0].to_s
-    end
-  end
-
-  def deleteString(idx)
-    sendMessage WMsg::LB_DELETESTRING,idx.to_i,0
-  end
-  def countStrings
-    sendMessage WMsg::LB_GETCOUNT,0,0
-  end
-
-  def clearStrings
-    c=getCount
-    (1..c).each do |i|
-      deleteString 0           #delete #0 c-times
-    end
-  end
-  
-  def eachString
-    c=getCount
-    0.upto(c-1) do |i|
-      yield getString(i)
-    end
-  end
-  
-  def setListStrings(sarray)
-    @_vr_init_items=sarray
-    if hWnd>0 then set_liststrings end
-  end
-
-  def selectedString
-    sendMessage(WMsg::LB_GETCURSEL,0,0)
-  end
-
-  def getTextOf(idx)
-    len = sendMessage(WMsg::LB_GETTEXTLEN,idx.to_i,0) #LB_gettextlen
-    raise "No such index(#{idx}) in the Listbox"if len<0
-    str=" " * len
-    sendMessage(WMsg::LB_GETTEXT,idx.to_i,str)          #LB_getText
-    str
-  end
-
-  def select(idx)
-    sendMessage(WMsg::LB_SETCURSEL,idx.to_i,0)
-  end
-
-  def setDir(fname,opt=0)
-    sendMessage(WMsg::LB_DIR,opt.to_i,fname.to_s)
-  end
-
-  def findString(findstr,start=0)
-    sendMessage(WMsg::LB_FINDSTRING,start.to_i,findstr.to_s)
-  end
-
-  def getDataOf(idx)
-    sendMessage(WMsg::LB_GETITEMDATA,idx.to_i,0)
-  end
-  def setDataOf(idx,data)
-    sendMessage(WMsg::LB_SETITEMDATA,idx.to_i,data.to_i)
-  end
-
-  def eachSelected
-    count = sendMessage(WMsg::LB_GETSELCOUNT,0,0)
-  
-    if count<1 then
-      yield selectedString
-      return
-    end
-
-    buffer = '\0\0\0\0' * count
-    sendMessage(WMsg::LB_GETSELITEMS,count,buffer)
-
-    buffer.unpack("I*")[0,count].each do |i|
-      yield i
-    end
-  end
-
-end
-
-class VRCombobox < VRStdControl
-=begin
-== VRCombobox
-Combobox is like Listbox, but Only one string is selected.
-
-=== Methods
---- addString(idx,str)
-    Adds ((|str|)) String at the ((|idx|)). 
-    When ((|idx|)) is omitted, ((|str|)) is added at the bottom.
---- deleteString(idx)
-    Deletes string at ((|idx|))
---- countStrings
-    Returns the count of its strings.
---- clearStrings
-    Deletes all strings.
---- eachString
-    Yields each string.
---- setListStrings(strarray)
-    Sets array of string ( ((|strarray|)) ) as the combobox strings.
---- selectedString
-    Returns the selected index.
---- select(idx)
-    Selects ((|idx|))-th string.
---- getTextOf(idx)
-    Retrieves the text of ((|idx|))-th string.
---- setDir(fname,opt=0)
-    Sets the filenames specified by ((|fname|)) to the combobox.
-    ((|opt|)) specifies the attributes of the files to be added.
---- findString(findstr,start=0)
-    Finds ((|findstr|)) in the combobox strings and returns the its index.
-    ((|start|)) specifies the index to start finding.
---- getDataOf(idx)
-    Retrieves the 32bit value associated with the ((|idx|))-th string.
---- setDataOf(idx,data)
-    Associates the 32bit value with the ((|idx|))-th string.
-=== Event handlers
---- ????_selchanged
-    Fired when the selected string is changed.
-=end
-
-  WINCLASSINFO = ["COMBOBOX",WStyle::CBS_STANDARD] 
-
-  def vrinit
-    super
-    set_liststrings
-    addCommandHandler(WMsg::CBN_SELCHANGE, "selchange",MSGTYPE::ARGNONE,nil)
-  end
-
- private
-  def set_liststrings
-    clearStrings
-    return unless defined? @_vr_init_items
-    0.upto(@_vr_init_items.size-1) do |idx|
-      addString idx, at _vr_init_items[idx]
-    end if @_vr_init_items
-  end
-
- public
-  def addString(*arg)
-    if arg[0].is_a?(Integer) then
-      sendMessage WMsg::CB_INSERTSTRING,arg[0],arg[1].to_s
-    else
-      sendMessage WMsg::CB_ADDSTRING,0,arg[0].to_s
-    end
-  end
-
-
-  def deleteString(idx)
-      sendMessage WMsg::CB_DELETESTRING,idx,0
-  end
-  def countStrings
-      sendMessage WMsg::CB_GETCOUNT,0,0
-  end
-
-  def clearStrings
-    c=getCount
-    (1..c).each do |i|
-      deleteString 0           #delete #0 c-times
-    end
-  end
-  
-  def eachString
-    c=getCount
-    0.upto(c-1) do |i|
-      yield getString(i)
-    end
-  end
-
-  def setListStrings(sarray)
-    @_vr_init_items=sarray
-    if hWnd>0 then set_liststrings end
-  end
-
-  def selectedString
-    sendMessage(WMsg::CB_GETCURSEL,0,0)
-  end
-
-  def getTextOf(idx)
-    len = sendMessage(WMsg::CB_GETLBTEXTLEN,idx,0)   #CB_gettextlen
-    raise "No such index(#{idx}) in the Combobox"if len<0
-    str=" " * len
-    sendMessage(WMsg::CB_GETLBTEXT,idx,str)          #CB_getText
-    str
-  end
-
-  def select(idx)
-    sendMessage(WMsg::CB_SETCURSEL,idx,0)
-  end
-
-  def setDir(fname,opt=0)
-    sendMessage(WMsg::CB_DIR,opt.to_i,fname.to_s)
-  end
-
-  def findString(findstr,start=0)
-    sendMessage(WMsg::CB_FINDSTRING,start.to_i,findstr.to_s)
-  end
-
-  def getDataOf(idx)
-    sendMessage(WMsg::CB_GETITEMDATA,idx.to_i,0)
-  end
-  def setDataOf(idx,data)
-    sendMessage(WMsg::CB_SETITEMDATA,idx.to_i,data.to_i)
-  end
-end
-
-#####################################
-#  Editable Combobox  
-#  programmed by USHIWATARI-san
-module WMsg
-  CBN_EDITCHANGE = 5
-end
-module WStyle
-  CBS_DROPDOWN    = 0x00a00200 | 2
-end
-
-class VREditCombobox < VRCombobox
-=begin
-== VREditCombobox
-Editable Combobox.
-This is a kind of Combobox where you can edit the text.
-
-=== Methods
-This has also VRCombobox's methods.
---- text
-    Returns the current text.
-
-=== Event handlers
---- changed
-    Fired when the text is changed.
-=end
-
-
-  WINCLASSINFO = ["COMBOBOX",WStyle::CBS_DROPDOWN | WStyle::CBS_AUTOSCROLL ] 
-  def vrinit
-    super
-    addCommandHandler(WMsg::CBN_EDITCHANGE, "changed",MSGTYPE::ARGNONE,nil)
-  end
-
-  def text
-    self.caption
-  end
-  def text=(str) 
-    self.caption = str.gsub(/([^\r])\n/,'\1'+VREdit::VR_REGEXPNEWLINE)
-  end
-
-end
-
-
-
-#####################################
-#  Menu
-#
-class VRMenu
-=begin
-== VRMenu
-Menu.
-
-=== Methods
---- append(caption,state)
-    Adds a new menu item at the last with the caption of ((|caption|)) and 
-    the state of ((|state|)). See ((<state=>)) about ((|state|)).
---- insert(ptr,caption,name,state)
-    Inserts new item at ((|ptr|)).
---- delete(id)
-    Deletes menu. ((|id|)) can be a instance of VRMenuItem or a menu-id integer.
---- count
-    Counts the menu items.
---- set(sarr)
-    Sets the menu according to the ((|sarr|)) which is a structured array 
-    of strings such like
-    (({  [ ["&File", [["&Open","open"],["E&xit","exit"]],  }))
-    (({       ["&Edit",["&Copy","copy]]    }))
-    (({    ] ]  }))
-      Caption : TEXT
-      Name : TEXT
-      Menu : [Caption, Name|Menu]
-
-    When a menu is clicked, ((|Name|))_clicked method is fired.
-
-=end
-
-  attr_reader :menu, :parent
-
-  SEPARATOR=["sep","_vrmenusep",0x800]
-
-  def initialize(menu,parent)
-    @menu=menu
-    @parent=parent
-  end
-
-  def append (*arg)
-    m=VRMenuItem.new(@menu)
-    id=@parent.newControlID
-    if arg[2] then
-      @menu.append arg[0],id,arg[2]
-    else
-      @menu.append arg[0],id
-    end
-    @parent.registerMenu(m,arg[1],id,arg[0])
-    m
-  end
-  def insert (ptr,*arg)
-    m=VRMenuItem.new(@menu)
-    id=@parent.newControlID
-    if arg.size>2 then
-      @menu.insert arg[0],id,ptr,arg[2]
-    else
-      @menu.insert arg[0],id,ptr
-    end
-    @parent.registerMenu(m,arg[1],id,arg[0])
-    m
-  end
-  def delete (id)
-    if id.is_a?(VRMenuItem) then
-      @menu.delete id.etc
-    else
-      @menu.delete id
-    end
-  end
-  def count (*arg)
-    @menu.count(*arg)
-  end
-
-  def set(sarr)
-    sarr.each do |item|
-      if item[1].is_a?(Array) then
-        m=@parent.newMenu(true)
-        m.set(item[1])
-        @menu.append item[0],m.menu,item[2]
-      elsif item[1].is_a?(VRMenu) then
-        @menu.append item[0],item[1].menu,item[2]
-      else
-        append(*item)
-      end
-    end
-    self
-  end
-end
-
-VRMenuTemplate = Struct.new("VRMenuTemplate",:caption,:item,:state)
-=begin
-== VRMenuTemplate
-If you don't like using Array for VRMenu#set, this will help you.
-
-=== Methods
---- caption
---- caption=
-    Represents the caption of the menu.
---- item
---- item=
-    When ((|item|)) is String, ((|item|)) means the name of menu item.
-    This name is used for the event handler name like ((|item|))_clicked.
-    ((|item|)) can be also an instance of VRMenuTemplate. In this case ((|item|))
-    represents its submenu.
-=== example
-  a=VRMenuTemplate.new
-  a.caption,a.item = "Test1","test1"
-  
-  b=VRMenuTemplate.new("Test2","test2")
-  c=VRMenuTemplate.new("Test3","test3",VRMenuItem::GRAYED)
-
-  d1=VRMenuTemplate.new("Test4-1","test41")
-  d2=VRMenuTemplate.new("Test4-2","test42")
-  d3=VRMenuTemplate.new("Test4-3","test43")
-
-  d = VRMenuTemplate.new
-  d.caption , d.item = "Test4" , [d1,d2,d3]
-=end
-
-class VRMenuItem
-=begin
-== VRMenuItem
-This is a wrapper of SWin::Menu
-=== Methods
---- new(menu)
-    ((|menu|)) must be the instance of SWin::Menu.
---- state
-    Returns the state of the menu item.
---- state=
-    Sets the state of the menu item.
-    state means
-    * 0 MF_ENABLED
-    * 1 MF_GRAYED
-    * 2 MF_DISABLED
-    * 8 MF_CHECKED
---- checked?
-    Returns true if the menu item is checked. 
---- checked=
-    Sets true/false whether the menu item is checked or not.
---- modify(text)
-    Modifies the text of the menu item.
-=end
-  attr_accessor :name, :etc
-
-  GRAYED=1
-  DISABLED=2
-  CHECKED=8
-
-  def initialize(menu)
-    @menu=menu
-  end
-  def _vr_cmdhandlers
-    {0=>[["clicked",MSGTYPE::ARGNONE,nil]],    # for menu
-     1=>[["clicked",MSGTYPE::ARGNONE,nil]]}    # for key accelerator
-  end
-
-  def state= (st)
-    @menu.setState(@etc,st)
-  end
-  def state
-    @menu.getState(@etc)
-  end
-  def checked=(f)
-    @menu.setChecked(@etc,f)
-  end
-  def checked?
-    (self.state&8)==8
-  end
-  def modify(text)
-    @menu.modify @etc,text
-  end
-end
-
-module VRKeyAcceleratorUseable   # Thanks to Yukimisake-san.
-  def menuTransTable(hsh) 
-    tVirt = {"Ctrl" => 0x08,"Shift" => 0x04,"Alt" => 0x10}
-    tVkey = {"F1"=>0x70,"F2"=>0x71,"F3"=>0x72,"F4"=>0x73,
-             "F5"=>0x74,"F6"=>0x75,"F7"=>0x76,"F8"=>0x77,
-             "F9"=>0x78,"F10"=>0x79,"F11"=>0x7a,"F12"=>0x7b,
-             "Insert"=>0x2d,"Delete"=>0x2e,"PageUp"=>0x21,"PageDown"=>0x22,
-             "End"=>0x23,"Home"=>0x24
-    }
-    r = []
-    hsh.each{|k,v|
-      fVirt = 1
-      key = nil
-      if txt = v[/\t.*/] then
-        a = txt.strip!.split(/\+/)
-        a[0,a.size-1].each{|ii|
-            raise "Iregal Key" unless n = tVirt[ii]
-            fVirt += n } if a.size > 1
-        if (s = a[a.size-1]).size > 1 then
-          unless key = tVkey[s] then raise "Iregal Key" end
-        else
-          key = (s.upcase)[0]
-        end
-      end
-      if key then
-        r << fVirt
-        r << key
-        r << k
-      end
-    }
-    r
-  end
-end
-
-module VRMenuUseable
-=begin
-== VRMenuUseable
-Include this module to use menus.
-
-=== Methods
---- newMenu(popup=false)
-    Creates a new ((<VRMenu>)). If popup is true, the created menu is popup menu.
---- newPopupMenu
-    Same as newMenu(true)
---- setMenu(menu)
-    Sets the menu ((<VRMenu>)) to the window.
---- showPopup(popupmenu)
-    Shows ((|popupmenu|)) at the cursor position
-=end
-
-  include VRKeyAcceleratorUseable
-
-  SetForegroundWindow = Win32API.new("user32","SetForegroundWindow","I","I")
-
-  def registerMenu(m,name,id,mcaption="")
-    m.etc= id
-    instance_eval("@"+name+"=m")
-    @_vr_menus= {} unless defined?(@_vr_menus)
-    @_vr_menucaptions= {} unless defined?(@_vr_menucaptions)
-    @_vr_menus[id]= m
-    @_vr_menucaptions[id] = mcaption
-    m.name = name
-    m
-  end
-
-  def newMenu(popup=false)
-    if popup then
-      menu=@screen.factory.newpopup
-    else
-      menu=@screen.factory.newmenu
-    end
-    VRMenu.new(menu,self)
-  end
-
-  def newPopupMenu    # contributed by Yuya-san
-    return self.newMenu(true)
-  end
-
-  def setMenu(menu,keyacc=false)
-    SetForegroundWindow.call(self.hWnd)
-    if menu.is_a?(SWin::Menu) then  
-      super menu
-      return
-    end
-
-    @_vr_menu=menu
-    @menu=menu
-    super menu.menu
-    if keyacc then
-      tb = menuTransTable(@_vr_menucaptions)
-      SWin::Application.setAccel(self,tb) 
-    end
-  end
-
-  def showPopup(menu)
-    SetForegroundWindow.call(self.hWnd)
-    if menu.is_a?(SWin::Menu) then  
-      m=menu
-    else     # asumes it is VRMenu
-      m=menu.menu
-      @_vr_menu = menu
-    end
-    popupMenu m,*Cursor.get_screenposition
-  end
-
-  def setMenuByArray(arr)
-    self.setMenu newMenu(arr)
-  end
-
-end
-
-
-##############################
-# Other Controls
-#
-
-module WStruct
-  SCROLLINFO="lllllll"
-end
-
-class VRScrollbar < VRControl 
-  WINCLASSINFO = ["SCROLLBAR",0]
-  attr_accessor :smallstep, :longstep
-
-  def vrinit
-    setRange(0,100)
-    self.pagesize=10
-    self.position=50
-    @smallstep, @longstep = 1,10
-  end
-  
-  def setRange(min,max)
-    sendMessage 0xe6,min.to_i,max.to_i
-  end
-
-  def position=(val)
-    sendMessage 0xe0,val.to_i,1
-  end
-  def position
-    sendMessage 0xe1,0,0
-  end
-
-  def pagesize=(p)
-    si=[4*7,2,0,0,p.to_i,0,0].pack WStruct::SCROLLINFO
-    sendMessage 0xe9,1,si  # SBM_SETSCROLLINFO
-  end
-  def pagesize
-    si=[4*7,2,0,0,0,0,0].pack WStruct::SCROLLINFO
-    sendMessage 0xea,1,si  # SBM_GETSCROLLINFO
-    si.unpack(WStruct::SCROLLINFO)[4]
-  end
-end
-
-class VRHScrollbar < VRScrollbar
-  WINCLASSINFO = ["SCROLLBAR",0]
-end
-class VRVScrollbar < VRScrollbar
-  WINCLASSINFO = ["SCROLLBAR",1]
-end
-
-module WMsg
-  WM_HSCROLL=276
-  WM_VSCROLL=277
-end
-
-module VRScrollbarContainer
-  def scrollbarcontainerinit
-    addHandler WMsg::WM_HSCROLL,"vrscroll",MSGTYPE::ARGINTINT,nil
-    addHandler WMsg::WM_VSCROLL,"vrscroll",MSGTYPE::ARGINTINT,nil
-    acceptEvents [ WMsg::WM_HSCROLL,WMsg::WM_VSCROLL]
-    @_vr_scrollbars={}
-  end
-  def vrinit
-    super
-    scrollbarcontainerinit
-  end
-
-  def searchscrollbar(hwnd)
-    @_vr_scrollbars=Hash.new unless defined? @_vr_scrollbars
-    srl = @_vr_scrollbars[hwnd]   # false : to be ignored window, 0: form
-    if srl==nil then
-      @controls.each_value do |v| 
-        if v.is_a?(SWin::Window) and v.hWnd==hwnd then
-          @_vr_scrollbars[hwnd] = srl = v
-          break
-        end
-      end # @controls.each_value
-    end
-    srl
-  end
-
-=begin
-          elsif defined?(VRTrackbar) and v.is_a?(VRTrackbar) then
-            @_vr_scrollbars[hwnd] = srl = v
-          elsif defined?(VRUpdown) and v.is_a?(VRUpdown) then
-            @_vr_scrollbars[hwnd] = srl = v
-          else 
-            @_vr_scrollbars[hwnd] = 0
-            srl = self
-=end
-
-  def self_vrscroll(wparam,hwnd)
-    srl = searchscrollbar(hwnd)
-    return if srl.nil?
-
-    if srl.is_a?(VRScrollbar) then
-      code=LOWORD(wparam)
-      if code==4 then
-        pos=HIWORD(wparam)
-      else
-        pos  = srl.position
-      end
-      case code
-      when 0 
-        srl.sendMessage 224,pos-srl.smallstep,1
-      when 1
-        srl.sendMessage 224,pos+srl.smallstep,1
-      when 2
-        srl.sendMessage 224,pos-srl.longstep,1
-      when 3
-        srl.sendMessage 224,pos+srl.longstep,1
-      when 4
-        srl.sendMessage 224,pos,1
-      end
-    end
-    controlmsg_dispatching(srl,"changed")
-  end
-end
-
-# add
-module VRContainersSet
-  include VRScrollbarContainer
-  INITIALIZERS.push :scrollbarcontainerinit
-end
-
-
-########################
-#
-# Control using VRPanel
-#
-class VRBitmapPanel < VRPanel
-=begin
-== VRBitmapPanel
-Bitmap panel that can display static bitmap.
-
-=== Methods
---- loadFile(filename)
-    Loads ((|filename|)) as bitmap file.
---- createBitmap(info,bmp)
-    Creates an bitmap from ((|info|)) and ((|bmp|)).
---- bmp
-    The instance of displaying SWin::Bitmap.
-=end
-  attr_accessor :bmp
-
-  include VRDrawable
-  def vrinit
-    super
-    @bmp=nil
-  end
-
-  def loadFile(fname)
-    @bmp=SWin::Bitmap.loadFile fname
-    self.refresh
-  end
-
-  def createBitmap(info,bmp)
-    @bmp=SWin::Bitmap.createBitmap info,bmp
-    self.refresh
-  end
-
-  def self_paint
-    drawBitmap @bmp if @bmp.is_a?(SWin::Bitmap)
-  end
-end
-
-
-class VRCanvasPanel < VRPanel
-=begin
-== VRCanvasPanel
-Bitmap Canvas panel that can display drawable bitmap.
-=== Methods
---- createCanvas(w,h,color=0xffffff)
-    Creates a new canvas dimensioned ( ((|w|)),((|h||)) ) and
-    colored ((|color|)) on the background.
---- canvas
-    Returns the instance of SWin::Canvas to draw it.
-=end
-
-  attr_reader :canvas 
-
-  include VRDrawable
-  
-  def createCanvas(w,h,color=0xffffff)
-    @canvas=@screen.factory.newcanvas(w,h)
-    @canvas.setBrush(color)
-    @canvas.setPen(color)
-    @canvas.fillRect(0,0,w,h)
-    @canvas.setPen(0x0)
-  end
-
-  def vrinit
-    super
-    @canvas=nil
-  end
-
-  def self_paint
-    bitblt @canvas if @canvas
-  end
-end
-
-if VR_COMPATIBILITY_LEVEL then
-  require VR_DIR + 'compat/vrcontrol.rb'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdde.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdde.rb
deleted file mode 100644
index 9c53d39..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdde.rb
+++ /dev/null
@@ -1,623 +0,0 @@
-###################################
-#
-# vrdde.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-=begin
-= VisualuRuby(tmp) modules for DDE
-This file provides modules for DDE conversation.
-<<< handlers.rd
-=end
-
-
-# DDE_ADVISE not tested.
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'sysmod'
-
-module DDElParam
-  PackDDElParam=Win32API.new("user32","PackDDElParam",["I","I","I"],"L")
-  UnpackDDElParam=Win32API.new("user32","UnpackDDElParam",["I","L","P","P"],"I")
-  FreeDDElParam=Win32API.new("user32","FreeDDElParam",["I","L"],"I")
-  ReuseDDElParam=Win32API.new("user32","ReuseDDElParam","IIIII","L")
-
-  def packDDElParam(msg,low,high)
-    PackDDElParam.call(msg,low,high)
-  end
-  def unpackDDElParam(msg,lparam)
-    a="        "; b="        "
-    UnpackDDElParam.call(msg,lparam,a,b)
-    [a.unpack("I")[0],b.unpack("I")[0]]
-  end
-
-  def freeDDElParam(msg,lparam)
-    FreeDDElParam.call(msg,lparam)
-  end
-
-  def reuseDDElParam(lParam, uMsgIn, uMsgOut, uLow, uHigh) #by yukimi_sake
-    ReuseDDElParam.call(lParam, uMsgIn, uMsgOut, uLow, uHigh)
-  end
-end
-
-module VRDdeConversation
-=begin
-== VRDdeConversation
-Utilities for DDE conversation.
-
-=== Methods
---- sendDDEAck(shwnd,aItem,retcode=0,ack=true,busy=false)
-    Sends DDE_ACK message to shwnd.
-
-== VRDdeConversation::DDEAckFlags
-This is a capsule of return code,ack flag, busy flag for DDE_ACK message
-=== Attributes
---- retcode
-    8bit value.
---- ack
-    DDE request is accepted or not.
---- busy
-    busy or not.
-=end
-
-  WM_DDE_INITIATE = 0x3e0
-  WM_DDE_TERMINATE= 0x3e1
-  WM_DDE_ADVISE   = 0x3e2
-  WM_DDE_UNADVISE = 0x3e3
-  WM_DDE_ACK      = 0x3e4
-  WM_DDE_DATA     = 0x3e5
-  WM_DDE_REQUEST  = 0x3e6
-  WM_DDE_POKE     = 0x3e7
-  WM_DDE_EXECUTE  = 0x3e8
-
-  class DDEAckFlags
-#    attr_accessor :ack
-#    attr_accessor :busy
-#    attr_accessor :retcode
-    def ack() @_vr_ack; end
-    def busy() @_vr_busy; end
-    def retcode() @_vr_retcode; end
-
-    def initialize(ack=true,busy=false,retcode=0)
-      @_vr_ack, at _vr_busy, at _vr_retcode = ack,busy,retcode
-    end
-  end
-
-  def sendDDEAck(shwnd,aItem,retcode=0,ack=true,busy=false)
-    r = retcode & 0xff
-    r |= 0x8000 if ack 
-    r |= 0x4000 if busy 
-    lparam = packDDElParam(WM_DDE_ACK,r,aItem)
-    SMSG::PostMessage.call shwnd,WM_DDE_ACK, self.hWnd,lparam
-  end
-end
-
-module VRDdeServer
-=begin
-== VRDdeServer
-This module prepares fundamental functions for DDE server.
-
-=== Methods
---- addDDEAppTopic(appname,topic)
-    Adds acceptable pair of application name and topic for DDE.
---- delDDEAppTopic(appname,topic)
-    Deletes acceptable pair of application name and topic.
-
-=== Event handlers
---- ????_ddeinitiate(shwnd,appname,topic)
-    Fired when DDE client whose hwnd is ((|shwnd|)) connects the 
-    DDE server.
---- ???_ddeterminate(shwnd)
-    Fired when DDE client whose hwnd is ((|shwnd|)) disconnects.
-=end
-
-  include VRMessageHandler
-  include VRDdeConversation
-  include DDElParam
-
-  def ddeserverinit
-    acceptEvents([WM_DDE_INITIATE,WM_DDE_TERMINATE])
-    addHandler WM_DDE_INITIATE,"_ddeInitiate",MSGTYPE::ARGINTINTINT,nil
-    addHandler WM_DDE_TERMINATE,"_ddeTerminate",MSGTYPE::ARGWINT,nil
-    @_vr_clients={} #{client's hwnd=>[client's hwnd,appname,topic]
-    @_vr_ddeacceptable=[] # [appname,topic]
-  end
-  def vrinit
-    super
-    ddeserverinit
-  end
-
-  def self__ddeInitiate(shwnd,aApp,aTopic)
-    p=[GAtom::GetName(aApp),GAtom::GetName(aTopic)]
-    return unless @_vr_ddeacceptable.index(p)
-
-    @_vr_clients[shwnd] = [shwnd] + p
-    r=nil
-    r=selfmsg_dispatching("ddeinitiate",shwnd,p[0],p[1])
-    SMSG::SendMessage.call shwnd,WM_DDE_ACK,self.hWnd,MAKELPARAM(aApp,aTopic)
-  end
-
-  def self__ddeTerminate(shwnd)
-    selfmsg_dispatching("ddeterminate",shwnd)
-    SMSG::PostMessage.call shwnd,WM_DDE_TERMINATE,self.hWnd,0
-    @_vr_clients.delete(shwnd)
-  end
-
-  def addDDEAppTopic(appname,topic)
-    @_vr_ddeacceptable.push([appname,topic])
-  end
-  def delDDEAppTopic(appname,topic)
-    @_vr_ddeacceptable.delete([appname,topic])
-  end
-
-  def self_ddeinitiate(*args) end
-  def self_ddeterminate(*arg) end
-end
-
-module VRDdeExecuteServer
-=begin
-== VRDdeExecuteServer
-This module provides a feature of DDE_Execute server.
-((<VRDdeServer>)) is included.
-
-=== Event handler
---- self_ddeexecute(command,shwnd,appname,topic)
-    Fired when the client whose name is ((|shwnd|)) sends DDE_EXECUTE 
-    to the server.The command string is ((|command|)).
-    If the return value is a kind of VRDdeConversation::((<DDEAckFlags>)),
-    DDE_ACK message that will be sent is according to this return value.
-=end
-
-  include VRDdeServer
-  
-  EXECUTEMETHOD="ddeexecute"
-
-  def ddeexecuteserverinit
-    addEvent WM_DDE_EXECUTE
-    addHandler WM_DDE_EXECUTE,"_ddeexecuteinternal",MSGTYPE::ARGINTINT,nil
-  end
-  def vrinit
-    super
-    ddeexecuteserverinit
-  end
-  
-  def self__ddeexecuteinternal(shwnd,hcmd)
-    cl=@_vr_clients[shwnd]
-    raise "unknown dde client (not initiated)" unless cl
-    cmd=GMEM::Get(hcmd).unpack("A*")[0]
-    ret=nil
-    ret=selfmsg_dispatching(EXECUTEMETHOD,cmd,*cl)
-    freeDDElParam(WM_DDE_EXECUTE,hcmd) #by yukimi_sake
-    if ret.is_a?(DDEAckFlags) then
-      sendDDEAck shwnd,hcmd,(ret.retcode || 0),ret.ack,ret.busy
-    else
-      sendDDEAck shwnd,hcmd
-    end
-  end
-end
-
-module VRDdeRequestServer #by yukimi_sake
-=begin
-== VRDdeRequestServer
-This module provides a feature of DDE_REQUEST server.
-((<VRDdeServer>)) is included.
-
-=== Event handler
---- self_dderequest(item,shwnd,app,topic)
-    Fired when the client whose name is ((|shwnd|)) sends DDE_REQUEST 
-    to the server.The item string is ((|item|)).
-    Retuern value(as String) is sended to shwnd which is handle of client,
-    using WM_DDE_DATA message.
-    If the return value is a kind of VRDdeConversation::((<DDEAckFlags>)),
-    DDE_ACK message that will be sent is according to this return value.
-=end
-
-  include VRDdeServer
-  
-  EXECUTEMETHOD="dderequest"
-  GMEM_DDESHARE=0x2000
-  
-  def sendDDEData(shwnd,lp,data)
-    raise "Data must be a String" unless data.is_a? String
-    dDEDATA=[0xb000,ClipboardFormat::CF_TEXT,data+"\0"].pack("Ssa*")
-    hData=GMEM::AllocStr(GMEM_DDESHARE,dDEDATA)
-    lParam=reuseDDElParam lp,WM_DDE_REQUEST,WM_DDE_DATA,hData,HIWORD(lp)
-    SMSG::PostMessage.call shwnd, WM_DDE_DATA, self.hWnd, lParam
-  end
-  
-  def dderequestserverinit
-    addEvent WM_DDE_REQUEST
-    addHandler WM_DDE_REQUEST,"_dderequestinternal",MSGTYPE::ARGINTINT,nil
-  end
-  
-  def vrinit
-    super
-    dderequestserverinit
-  end
-  
-  def self__dderequestinternal(shwnd,lparam)
-   cl=@_vr_clients[shwnd]
-    raise "unknown dde client (not initiated)" unless cl
-    cformat,aitem = unpackDDElParam(WM_DDE_REQUEST,lparam)
-    raise "not supported this format" unless cformat == 1
-    item = GAtom::GetName(aitem)
-    ret=nil
-    ret=selfmsg_dispatching(EXECUTEMETHOD,item,*cl)
-    if ret.is_a?(DDEAckFlags) then
-      freeDDElParam(WM_DDE_REQEST,lparam)
-      sendDDEAck shwnd,aitem,(ret.retcode || 0),ret.ack,ret.busy
-    else
-      sendDDEData shwnd,lparam,ret
-    end
-  end
-  def self_dderequest(item,shwnd,app,topic) end
-end
-
-module VRDdePokeServer #by yukimi_sake
-=begin
-== VRDdePokeServer
-This module provides a feature of DDE_POKE server.
-((<VRDdeServer>)) is included.
-
-=== Event handler
---- self_ddepoke(item,data,cfmt,shwnd,app,topic)
-    Fired when the client whose name is ((|shwnd|)) sends DDE_POKE 
-    to the server.The item string is ((|item|)).The data is ((|data|)).
-    If you want to treat data other than String, carry out according to
-    clipboard format ((|cfmt|)) in the handler.
-    If the return value is a kind of VRDdeConversation::((<DDEAckFlags>)),
-    DDE_ACK message that will be sent is according to this return value.
-=end
-  include VRDdeServer
-  
-  EXECUTEMETHOD="ddepoke"
-  
-  def ddepokeserverinit
-    addEvent WM_DDE_POKE
-    addHandler WM_DDE_POKE,"_ddepokeinternal",MSGTYPE::ARGINTINT,nil
-  end
-  
-  def vrinit
-    super
-    ddepokeserverinit
-  end
-  
-  def self__ddepokeinternal(shwnd,lparam)
-    cl=@_vr_clients[shwnd]
-    raise "unknown dde client (not initiated)" unless cl
-    hdata,aitem = unpackDDElParam(WM_DDE_POKE,lparam)
-    item = GAtom::GetName(aitem)
-    datastr = GMEM::Get(hdata)
-    flag,cfmt,data = datastr.unpack("SsA*")
-    if (flag&0x2000) > 0 then  # fRelease is asserted
-      GMEM::Free(hdata)
-    end
-    ret=nil
-    ret=selfmsg_dispatching(EXECUTEMETHOD,item,data,cfmt,*cl)
-    freeDDElParam(WM_DDE_POKE, lparam)
-    if ret.is_a?(DDEAckFlags) then
-      sendDDEAck shwnd,aitem,(ret.retcode || 0),ret.ack,ret.busy
-    else
-      sendDDEAck shwnd,aitem
-    end
-  end
-  def self_ddepoke(item,data,cfmt,shwnd,app,topic) end
-end
-
-module VRDdeClient
-=begin
-== VRDdeClient
-This module provides features of DDE clients.
-
-=== Methods
---- ddeconnected?
---- ddeready?
-    Returns whether it is able to request dde conversation.
---- ddebusy?
-    Returns true when it waits DDE_ACK/DDE_DATA message.
-
---- ddeexecute(appname,topic.command)
-    Sends DDE_EXECUTE request to the server specified by the pair of (appname,topic).
---- ddepoke(appname,topic,item,data,fmt)
-    Sends DDE_POKE request to the server specified by the pair of (appname,topic).
-    The ((|data|)) in the format of ((|fmt|)) (1 as CF_TEXT and so on) is transferred 
-    tothe ((|item|)) in the server
---- dderequest(appname,topic,item,fmt)
-    Sends DDE_REQUEST request to the server specified by the pair of (appname,topic).
-    The server calls back ((<self_dderequestdata>)) method of client window to
-    transfer the data of ((|item|)).
---- ddeadvise(appname,topic,item,fmt)
---- ddeunadvise(appname,topic,item,fmt)
-    Not tested.
-
-=== Event handlers
-???? is the downcase-ed appname of the DDE conversation. It is because the ???? name
-is named by WM_DDE_ACK message's App-name which is created by the server and that 
-may be different from the requested appname from client.
-
---- ????_ddeterminate(shwnd)
-    Fired when the server disconnects the conversation.
---- ????_dderefused(retcode,busy)
-    Fired when the server refused the connection. The return code is ((|retcode|)) and
-    busy flag is ((|busy|)).
---- ????_ddeexecdone(retcode)
-    Fired when the server accepts the DDE_EXECUTE request.
---- ????_ddepokedone(retcode)
-    Fired when the server accepts the DDE_POKE request.
---- ????_ddedata(data,fmt,flag)
-    Fired when the server returns the data by the DDE_REQUEST that client sended.
-    If the return value is a kind of VRDdeConversation::((<DDEAckFlags>)),
-    DDE_ACK message that will be sent is according to this return value.
---- ????_ddeadvisedata(data,fmt,flag)
-    Not tested.
-=end
-
-  include VRMessageHandler
-  include VRDdeConversation
-  include DDElParam
-
- private
-  STATUSCONNECT= 1
-  STATUSEXECUTE= 2
-  STATUSPOKE   = 4
-  STATUSREQUEST= 8
-  STATUSADVISE = 16
-  STATUSTERMINATE=128
-  GMEMSTYLE = 0x2042
-
-
-  def ddeconnect(appname,topic)
-    raise "DDE_INITIATE busy!" if @_vr_ddesearching
-    raise "Application name must be specified" unless appname
-    aApp   = GAtom::Add(appname)
-    aTopic = if topic then   GAtom::Add(topic) else 0 end
-
-    srv =  @_vr_servers.find do |key,item| item[1]==appname end
-
-    shwnd = if srv then srv[0] else 0xffffffff end
-    @_vr_ddesearching=nil
-    SMSG::SendMessage.call shwnd,WM_DDE_INITIATE,self.hWnd,MAKELPARAM(aApp,aTopic)
-    shwnd = @_vr_ddesearching unless srv
-    @_vr_ddesearching=nil
-    
-    GAtom::Delete(aApp)   
-    GAtom::Delete(aTopic) if topic!=0
-    raise "DDE Server (#{appname}:#{topic}) not found" unless shwnd
-    shwnd
-  end
-
-  def ddeterminate(shwnd)
-    SMSG::PostMessage.call shwnd,WM_DDE_TERMINATE,self.hWnd,0
-    @_vr_servers[shwnd][2]|=STATUSTERMINATE
-#    @_vr_servers.delete(shwnd)
-  end
-
- public
-  def vrinit
-    super
-    ddeclientinit
-  end
-
-  def ddeclientinit
-    acceptEvents([WM_DDE_ACK,WM_DDE_DATA,WM_DDE_TERMINATE])
-    addHandler WM_DDE_ACK, "ddeAck", MSGTYPE::ARGINTINT,nil
-    addHandler WM_DDE_DATA,"ddeData",MSGTYPE::ARGINTINT,nil
-    addHandler WM_DDE_TERMINATE,"ddeTerminate",MSGTYPE::ARGWINT,nil
-    @_vr_servers={} # {server's hwnd => [server's hwnd,appname,status,params]}
-    @_vr_ddesearching = false
-  end
-
-  def ddeconnected?(appname)
-    srv =  @_vr_servers.find do |key,item| item[1].downcase==appname.downcase end
-    if srv then srv=srv[1];((srv[2]&STATUSCONNECT)>0) else false end
-  end
-  def ddebusy?(appname)
-    srv =  @_vr_servers.find do |key,item| item[1].downcase==appname.downcase end
-    if srv then srv=srv[1]; ((srv[2] & ~STATUSCONNECT)>0) else nil end
-  end
-  def ddeidle?(appname)
-    srv =  @_vr_servers.find do |key,item| item[1].downcase==appname.downcase end
-    if srv then
-      srv=srv[1]
-      ((srv[2]&STATUSCONNECT)>0) and ((srv[2] & ~STATUSCONNECT)==0)
-    else
-      true
-    end
-  end
-  def ddeready?(appname)
-    srv =  @_vr_servers.find do |key,item| item[1].downcase==appname.downcase end
-    if srv then
-      srv=srv[1]
-      ((srv[2]&STATUSCONNECT)>0) and 
-      ((srv[2] & ~(STATUSCONNECT | STATUSADVISE))==0)
-    else
-      true
-    end
-  end
-
-  def ddeexecute(appname,topic,cmdstr)
-    raise "dde(#{appname}:#{topic}) not ready" unless ddeready?(appname)
-    shwnd=ddeconnect(appname,topic)
-    executemem = GMEM::AllocStr(GMEMSTYLE,cmdstr)
-    @_vr_servers[shwnd][2] |= STATUSEXECUTE
-    SMSG::PostMessage.call shwnd,WM_DDE_EXECUTE,self.hWnd,executemem
-  end
-
-  def ddepoke(appname,topic,item,data,fmt=ClipboardFormat::CF_TEXT) 
-    raise "dde(#{appname}:#{topic}) not ready" unless ddeready?(appname)
-    shwnd=ddeconnect(appname,topic)
-
-    aItem   = GAtom::Add(item.to_s)
-
-    pokedata=[0,fmt].pack("Ss")+data.to_s
-    pokemem = GMEM::AllocStr(GMEMSTYLE,pokedata)
-
-    @_vr_servers[shwnd][2] |= STATUSPOKE
-    @_vr_servers[shwnd][3] = pokemem
-
-    lparam = packDDElParam(WM_DDE_POKE,pokemem,aItem)
-    SMSG::PostMessage.call shwnd,WM_DDE_POKE,self.hWnd,lparam
-  end
-
-  def dderequest(appname,topic,item,fmt=ClipboardFormat::CF_TEXT) 
-    raise "dde(#{appname}:#{topic}) not ready" unless ddeready?(appname)
-    shwnd=ddeconnect(appname,topic)
-
-    aItem   = GAtom::Add(item.to_s)
-
-    @_vr_servers[shwnd][2] |= STATUSREQUEST
-    SMSG::PostMessage.call shwnd,WM_DDE_REQUEST,self.hWnd,
-                             MAKELPARAM(fmt.to_i,aItem)
-  end
-
-  def ddeadvise(appname,topic,item,fmt=1,defup=false,ackreq=false)
-    raise "dde(#{appname}:#{topic}) not ready" unless ddeready?(appname)
-    shwnd=ddeconnect(appname,topic)
-
-    aItem   = GAtom::Add(item.to_s)
-
-    flag = 0
-    if defup then flag |= 0x4000 end
-    if ackreq then flag |= 0x8000 end
-    
-    advisedata=[flag,fmt].pack("Ss")
-    advisemem = GMEM::AllocStr(GMEMSTYLE,advisedata)
-    
-    @_vr_servers[shwnd][2] |= STATUSADVISE
-    lparam = packDDElParam(WM_DDE_POKE,advisemem,aItem)
-    SMSG::PostMessage.call shwnd,WM_DDE_ADVISE,self.hWnd,lparam
-  end
-
-  def ddeunadvise(appname,topic,item,fmt=0)
-    raise "dde(#{appname}:#{topic}) not ready" unless ddeready?(appname)
-    shwnd=ddeconnect(appname,topic)
-
-    aItem   = GAtom::Add(item.to_s)
-
-    @_vr_servers[n][2] |= STATUSREQUEST
-    SMSG::PostMessage.call @_vr_servers[n][0],WM_DDE_UNADVISE,self.hWnd,
-                             MAKELPARAM(fmt.to_i,aItem)
-  end
-
-
-  def self_ddeTerminate(shwnd)
-      return unless @_vr_servers[shwnd]
-      controlmsg_dispatching(@_vr_servers[shwnd][1],"ddeterminate")
-      @_vr_servers.delete(shwnd)
-  end
-
-  def self_ddeAck(shwnd,lparam)
-#p "ACK"
-    sv = @_vr_servers[shwnd]
-    fname=""
-    if(!sv) then
-      aApp,aTopic = LOWORD(lparam),HIWORD(lparam)
-      appname=GAtom::GetName(aApp).downcase
-      tpcname=GAtom::GetName(aTopic)
-      appname2=appname.dup
-      def appname2.name() self; end   # tricky thing for parentrelayer
-      @_vr_servers[shwnd]=[shwnd,appname2,STATUSCONNECT,nil]
-
-      @_vr_ddesearching=shwnd
-
-      GAtom::Delete(aApp)
-      GAtom::Delete(aTopic)
-
-    elsif (sv[2] & ~STATUSCONNECT)>0 then
-      wstatus,param = unpackDDElParam(WM_DDE_ACK,lparam)
-      freeDDElParam(WM_DDE_ACK,lparam)
-
-      retcode = wstatus&0xf
-      busy= 0<(wstatus&0x4000)
-      ack = 0<(wstatus&0x8000)
-      sname = sv[1]
-
-      unless ack then
-        sv[2] &= STATUSCONNECT
-#        fname=sname+"_dderefused"
-#        __send__(fname,retcode,busy) if respond_to?(fname)
-        controlmsg_dispatching(sname,"dderefused",retcode,busy)
-      end
-      if (sv[2] & STATUSEXECUTE)>0 then
-        GMEM::Free(param) unless ack
-        sv[2] &= ~STATUSEXECUTE
-        fname="ddeexecdone"
-        ddeterminate(shwnd)
-      elsif(sv[2] & STATUSPOKE)>0 then
-        GAtom::Delete(param)
-        GMEM::Free(sv[3])
-        sv[3]=nil
-        sv[2] &= ~STATUSPOKE
-        fname="ddepokedone"
-        ddeterminate(shwnd)
-      elsif(sv[2] & STATUSREQUEST)>0 then
-        GAtom::Delete(param)
-        sv[2] &= ~STATUSPOKE
-        fname=nil
-        ddeterminate(shwnd)
-      elsif(sv[2] & STATUSADVISE)>0 then
-        GMEM::Free(param) unless ack
-        sv[2] &= ~STATUSADVISE
-        fname=nil
-      else
-        ddeterminate(shwnd)
-      end
-      controlmsg_dispatching(sname,fname,retcode) if ack and fname
-    else
-      raise "DDE MultiSession Error"
-    end
-  end
-
-  def self_ddeData(shwnd,lparam)
-#p "DATA"
-    datamem,aItem = unpackDDElParam(WM_DDE_DATA,lparam)
-    freeDDElParam(WM_DDE_DATA,lparam)
-
-    sv = @_vr_servers[shwnd]
-    fname=sname=nil
-
-    datastr = GMEM::Get(datamem)
-    flag,fmt,data = datastr.unpack("Ssa*")
-
-    if (flag&0x2000) > 0 then  # fRelease is asserted
-      GMEM::Free(datamem)
-    end
-
-    ret = nil
-    if(!sv) then
-      # Ignored
-    else
-      sname=sv[1]
-      if (sv[2] & STATUSREQUEST)>0 then
-        sv[2]&=1
-        fname="ddedata"
-        ddeterminate(sv[0])
-      elsif (sv[2] & STATUSADVISE)>0 
-        sv[2]&=1
-        fname="ddeadvisedata"
-      else
-      end
-
-      fn=sname+fname
-      if(fn) then
-        ret=controlmsg_dispatching(sname,fname,data,fmt,flag)
-      end
-    end
-
-    if (flag&0x8000) > 0 then  #fAckReq is asserted
-      if ret.is_a?(DDEAckFlags) then
-        sendDDEAck shwnd,aItem,(ret.retcode || 0),ret.ack,ret.busy
-      else
-        sendDDEAck shwnd,aItem
-      end
-    else
-      GAtom::Delete(aItem)
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrddrop.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrddrop.rb
deleted file mode 100644
index a95a98f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrddrop.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-###################################
-#
-# vrddrop.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'sysmod'
-require VR_DIR+'dragdropformat'
-require 'Win32API'
-
-
-module VRDropFileTarget
-=begin
-== VRDropFileTarget
-This module prepares the feature that accepts file dropping.
-
-=== Event handler(s)
---- self_dropfiles(files)
-    Argument ((|files|)) is the array of dropped filenames.
-=end
-
-  include VRMessageHandler
-
-  DragAcceptFiles = Win32API.new("shell32","DragAcceptFiles",["I","I"],"")
-  DragFinish      = Win32API.new("shell32","DragFinish",["I"],"")
-  
-  def filedropinit
-    addHandler(WMsg::WM_DROPFILES,"vrdropfiles",MSGTYPE::ARGWINT,nil)
-    addEvent WMsg::WM_DROPFILES
-    addNoRelayMessages [WMsg::WM_DROPFILES]
-    DragAcceptFiles.call(self.hWnd,1)
-  end
-  
-  def vrinit
-    super
-    filedropinit
-  end
-
-  def self_vrdropfiles(handle)
-    r = DragDropFiles.get(handle).files
-    DragFinish.call(handle)
-    selfmsg_dispatching("dropfiles",r)
-#    self_dropfiles(r) if self.respond_to?("self_dropfiles")
-  end
-end
-
-
-module VRDragDropSource
-=begin
-== VRDragDropSource
-  This module is a base module for dragdrop source. Note that this module uses
-  message posting to realize drag and drop instead of using OLE Drag&Drop.
-  To use this module, see VRDragFileSource module.
-  This module needs a callback function createDropItem, which is called 
-  when the user releases a mouse button to drop.
-
-=== Methods
---- dragDetect()
-    Determines by the user's input whether the user is doing dragging or not.
---- dragStart()
-    Starts dragging.
---- createDropItem()
-    This is a callback method to calculate the dropping item. This needs to
-    return three values message,wParam and lParam to send to the dropped window.
-    The dropped window will receive the message by Windows messaging service.
-
-=== Attributes
---- dropToplevel
-    While this is true, the message is sent to the toplevel window under the 
-    cursor, and in the other case the message is sent to the window just 
-    under the cursor.
-
-=end
-
-  include VRMessageHandler
-
-  DragDetect = Win32API.new("user32","DragDetect","IP","I")
-  GetCursorPos = Win32API.new("user32","GetCursorPos","P","I")
-  WindowFromPoint = Win32API.new("user32","WindowFromPoint","II","I")
-  GetParent=Win32API.new("user32","GetParent","I","I")
-  
-  def dragdropsourceinit
-    @_vr_dragging=false
-    @_vr_droptotoplevel=true;
-    @_vr_pointbuffer=[0,0].pack("II")
-    unless @_vr_dragging_cursor then
-      @_vr_dragging_cursor=@screen.application::SysCursors.Cross 
-    end
-    addHandler(WMsg::WM_LBUTTONUP,"_vrdsrclbuttonup",MSGTYPE::ARGINTINT,nil)
-    acceptEvents [WMsg::WM_LBUTTONUP]
-  end
-
-  def vrinit
-    super
-    dragdropsourceinit
-  end
-
-  def dropToplevel() @_vr_droptotoplevel; end
-  def dropToplevel=(f) @_vr_droptotoplevel=f;end
-
-  def dragDetect
-    DragDetect.call(self.hWnd, at _vr_pointbuffer)!=0
-  end
-
-  def dragStart()
-    GetCursorPos.call(@_vr_pointbuffer)
-    if DragDetect.call(self.hWnd, at _vr_pointbuffer)!=0 then
-      @_vr_dragging=true
-      @screen.application.setCursor @_vr_dragging_cursor
-      setCapture
-    end
-  end
-
-  def createDropItem()
-    # msg,wParam,lParam
-    return nil,nil,nil
-  end
-
-  def self__vrdsrclbuttonup(shift,xy)
-    if @_vr_dragging then
-      @screen.application.setCursor @screen.application::SysCursors.Arrow
-      GetCursorPos.call(@_vr_pointbuffer)
-      handle=WindowFromPoint.call(*@_vr_pointbuffer.unpack("II"))
-      releaseCapture
-
-      if @_vr_droptotoplevel then
-        while handle!=0 do   # search the top level window
-          droptarget=handle; handle=GetParent.call(handle)
-        end
-      else
-        droptarget=handle;
-      end
-
-      msg,wParam,lParam = self.createDropItem
-      SMSG::postMessage droptarget,msg,wParam,lParam
-    end
-    @_vr_dragging=false
-  end
-end
-
-module VRDragFileSource
-  include VRDragDropSource
-=begin
-== VRDragFileSource
-This module prepares the feature to start dragging files.
-This is the result of quick-hacking. Are you so kind that teach me 
-the structure of "internal structure describing the dropped files?"
-
-=== Event handler(s)
---- dragStart(files)
-    Starts file dragging with ((|files|)) that is an Array including 
-    the filenames to be dragged.
-=end
-
-  def dragStart(paths)
-    @_vr_dragpaths=paths
-    super()
-  end
-
-  def createDropItem
-    hDrop = DragDropFiles.set(@_vr_dragpaths).handle
-    return WMsg::WM_DROPFILES, hDrop, 0
-  end
-end
-
-=begin VRDragFileSource sample 
-require 'vr/vrcontrol'
-require 'vr/vrhandler'
-require 'vr/vrddrop'
-
-class MyForm < VRForm
-  include VRDragFileSource
-  include VRMouseFeasible
-
-  def self_lbuttondown(shift,x,y)
-    if dragDetect then
-      dragStart ['c:\autoexec.bat','c:\config.sys']
-    end
-  end
-end
-
-VRLocalScreen.start(MyForm)
-=end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdialog.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdialog.rb
deleted file mode 100644
index 59a9d8a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrdialog.rb
+++ /dev/null
@@ -1,402 +0,0 @@
-###################################
-#
-# vrdialog.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-=begin
-= VisualuRuby(tmp) Dialog boxes
-=end
-
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'vrcontrol'
-
-class VRDialogTemplate
-=begin
-== VRDialogTemplate
-Create Dialog template string for the argument of 
-DialogBoxIndirectParam() Win32API.
-
-=== Attributes
-((|style|)),((|exstyle|)),((|caption|)),((|fontsize|)),((|fontname|)) are 
-read/write accessible.
-((|x|)),((|y|)),((|w|)),((|h|)) are read-only and access these attributes
-with 'move' method.
-
-=== Methods
---- move(x,y,w,h)
-    Sets the dialog dimension and position. The position is relative from 
-    parent window.
---- addDlgControl(ctype,caption,x,y,w,h,style=0)
-    Adds a control on the dialog. ((|ctype|)) is the control-class such as 
-    VRButton.
---- to_template
-    Create a dialog template string and return it.
-=end
-
-  attr_accessor :style, :exstyle
-  attr_reader :x, :y, :w, :h
-  attr_accessor :caption, :fontsize, :fontname
-
-  require 'Win32API'
-  MultiByteToWideChar = 
-     Win32API.new("kernel32","MultiByteToWideChar",["I","I","P","I","P","I"],"I")
-
- private
-  def padding_dwordAlignment(str)
-    a=str.length
-    c = ( (a+3)&0xfffc ) - a  # Don't use String whose length is over 0xfffc :)
-    str << " "*c
-  end
-
-  def mb2wc(str)
-    r=" "*(str.length*2)
-    l=MultiByteToWideChar.call(0,0,str,str.length,r,r.length)
-    r[0,l*2]
-  end
-
-  def class2param(cls)
-    if cls == VRButton then 
-      [0xffff,0x80].pack("SS")
-    elsif cls == VREdit || cls == VRText
-      [0xffff,0x81].pack("SS")
-    elsif cls == VRStatic
-      [0xffff,0x82].pack("SS")
-    elsif cls == VRListbox
-      [0xffff,0x83].pack("SS")
-    elsif cls == VRScrollbar
-      [0xffff,0x84].pack("SS")
-    elsif cls == VRCombobox
-      [0xffff,0x85].pack("SS")
-    else
-      mb2wc(cls.Controltype[0]+"\0")
-    end
-  end
-
-  def tmplateinit
-    @_vr_dcontrols={}; @_vr_cid=0; 
-    @style = 0x90c800c0
-    @exstyle=0
-    self.move 100,100,200,100
-    @caption=""
-    @fontname="system"
-    @fontsize=10
-  end
-
-  def initialize
-    tmplateinit
-  end
-
- public 
-  def move(x,y,w,h)
-    @x, at y, at w, at h = x,y,w,h
-  end
-  
-  def addDlgControl(ctype,caption,x,y,w,h,style=0)
-    newid = @_vr_cid + $VRCONTROL_STARTID*2
-    @_vr_dcontrols[newid] = 
-            [ctype,"",caption,x,y,w,h,
-             ctype.Controltype[1] | style | 0x50000000]  #WS_VISIBLECHILD
-    @_vr_cid+=1
-    return newid
-  end
-  
-  
-  def to_template
-    tmp = 
-      [
-        @style, at exstyle, at _vr_dcontrols.size, at x, at y, at w, at h,0,0
-      ] .pack("LISSSSSSS") + mb2wc(@caption+"\0")
-
-    if (@style & 0x40)>0 then # DS_SETFONT
-      tmp << [@fontsize].pack("S") << mb2wc(@fontname+"\0")
-    end
-    padding_dwordAlignment(tmp)
-
-    @_vr_dcontrols.each do |iid,val|
-      tmp << [val[7],0,val[3,4],iid].flatten.pack("IISSSSS")
-      tmp << class2param(val[0])
-      tmp << mb2wc(val[2]+"\0") << [0].pack("S")
-      padding_dwordAlignment(tmp)
-    end
-    return tmp
-  end
-end
-
-
-module WMsg
-  WM_INITDIALOG = 0x110
-end
-
-class VRDialogComponent < SWin::Dialog
-=begin
-== VRDialogComponent
-This class represents modal/modeless dialogs.
---- setButtonAs(button,dlgbuttonid)
-    Set the button as dialog's functional button like IDOK, IDCANCEL and so on.
-    ((|button|)) must be a VRButton and dlgbuttonid must be between IDOK and IDHELP
---- centering
-    set the dialog at the center of the parent window.
-=end
-
-  include VRParent
-
-  IDOK             = 1
-  IDCANCEL         = 2
-  IDABORT          = 3
-  IDRETRY          = 4
-  IDIGNORE         = 5
-  IDYES            = 6
-  IDNO             = 7
-  IDCLOSE          = 8
-  IDHELP = DLGMAX_ID  = 9
-
-  attr_accessor :options  #hash
-
-  def vrinit
-    extend VRWinComponent::VRInitBlocker
-  end
-
-  def setscreen(scr)
-    @screen=scr
-  end
-  def create(*arg)
-    self.open(*arg)
-  end
-
-  def setButtonAs(control, newid) #contributed by Katonbo-san.
-    if newid > DLGMAX_ID then
-      raise "id[#{newid}] is too big"
-    end
-    id = control.etc
-    @controls[newid] = @controls[id]
-#    control.etc = newid
-#    @controls.delete(id)
-  end
-
-  def centering(target = @parent) #contributed by Yuya-san./modified by nyasu.
-    unless target.is_a?(SWin::Window) then
-      target = @screen
-    end
-    x0,y0,w0,h0 = self.windowrect
-    if target == @screen then
-      x1=target.x; y1=target.y; w1=target.w; h1=target.h
-    else
-      x1,y1,w1,h1 = target.windowrect
-    end
-    x = x1 + w1 / 2 - w0 / 2
-    y = y1 + h1 / 2 - h0 / 2
-    self.move(x, y, w0, h0)
-  end
-
-  def initialize(*arg)
-    @options={}
-  end
-
-  def self.new(screen,template)   # obsolete
-    r=screen.factory.newdialog(template.to_template,self)
-    r.parentinit(screen)
-    r.options={}
-    r.addEvent WMsg::WM_INITDIALOG 
-    r.addEvent WMsg::WM_COMMAND
-    return r
-  end
-
-  def self.new2(screen)   # obsolete
-    template = VRDialogTemplate.new
-    opt={}
-    yield(opt,template)
-    r=self.new(screen,template)
-    r.options=opt if opt.is_a?(Hash)
-    return r
-  end
-
-  module VRInitDialogHandler
-    def vrinit
-      if self.kind_of?(VRMessageHandler) then
-        addHandler WMsg::WM_INITDIALOG,"initdialog",MSGTYPE::ARGINTINT,nil
-      end
-      super
-    end
-
-    def msghandler(msg)
-      if msg.msg==WMsg::WM_INITDIALOG then
-        self.vrinit
-        self.construct if self.respond_to?(:construct)
-	self.self_created if self.respond_to?(:self_created)
-      end
-      super
-    end
-  end
-
-  def open(parent=@parent,modal=true)
-    @parent=parent
-    super parent,modal
-  end
-end
-
-
-class VRModalDialog <VRDialogComponent
-=begin
-== VRModalDialog
-This class represents a modal dialog.
-When a modal dialog opens, the sequence is blocked until the dialog is closed.
-(Process about the dialog is advancing.)
-VRModalDialog#open method returns the value which is the argument 
-at VRModalDialog#close(value). <- SWin::Dialog#close
-
-=== Attributes
-Hash of ((|options|)) set values as 'options["cancelbutton"]=canbtn'
-
-=== Methods
---- close(value)
-    See SWin::Dialog#close
-=end
-
-  include VRParent
-
-end
-
-class VRModelessDialog <VRDialogComponent
-=begin
-== VRModelessDialog
-This class represents a modeless dialog.
-VRModelessDialog dialog is resemble like VRForm except at creating.
-The modeless dialogs have advantages enabling TAB_STOP control focusing.
-
-=== Attributes
-Hash of ((|options|)) set values as 'options["cancelbutton"]=canbtn'
-
-=== Methods
---- open(parent=@parent)
-    See SWin::Dialog#open.
---- close(value)
-    See SWin::Dialog#close
-=end
-
-  include VRParent
-
-  def open(parent=@parent,ignored_modal=false)
-    super parent,false
-  end
-end
-
-
-
-class VRScreen
-=begin
-== VRScreen
-A method is added to VRScreen by loading this file.
-
-=== Method
---- openModalDialog(parent,style=nil,mod=VRDialogComponent,template=PlaneDialogTemplate,options={})
-    Creates and opens a modal dialog box. 
-    This method is blocked until the dialog box closed. 
-    GUI definition can be specified by ((|template|)) or mod#construct.
-    When mod==nil, then this method use VRDialogComponent instead of nil.
-    The return value is dialog's return value set by SWin::Dialog#close.
-    ((|options|)) specifies the focused control, ok button, cancel button, etc.
---- openModelessDialog(parent,style=nil,mod=VRDialogComponent,template=PlaneDialogTemplate,options={})
-    Creates and opens a modeless dialog box.
-    GUI definition can be specified by ((|template|)) or mod#construct.
-    When mod==nil, then this method use VRDialogComponent instead of nil.
-    The return value is false and this method returns immediately.(non-blocking)
-    ((|options|)) specifies the focused control, ok button, cancel button, etc.
-    (see VRInputbox)
-
---- newdialog(parent,style=nil,mod=VRDialogComponent,template=PlaneDialogTemplate,options={})
-    Creates a dialogbox whose parent is ((|parent|)), and returns it.
-    To open that dialogbox, call "open" method. 
-    This method is called by openModalDialog() and openModelessDialog() .
-    ((|mod|)) may be a module or a class which is a descendant of 
-    VRDialogComponent.
-=end
-
-  PlaneDialogTemplate = VRDialogTemplate.new.to_template
-
-  def newdialog(parent,style=nil,mod=VRDialogComponent,*template_arg)
-    template,options = *template_arg
-    template = PlaneDialogTemplate unless template
-    options = {} unless options
-    if mod.is_a?(Class) and mod.ancestors.index(VRDialogComponent) then
-      frm=@factory.newdialog(template,mod)
-    elsif mod.is_a?(Class) then
-      raise "#{mod.class} is not a descendant of VRDialogComponent"
-    elsif mod.is_a?(Module) then
-      frm=@factory.newdialog(template,VRDialogComponent)
-      frm.extend VRParent
-      frm.extend mod
-    else
-      raise ArgumentError,"a Class/Module of VRDialogComponent required"
-    end
-    frm.parentinit(self)
-    frm.addEvent WMsg::WM_INITDIALOG
-    frm.extend(VRStdControlContainer)
-    frm.style=style if style
-    frm.extend(VRDialogComponent::VRInitDialogHandler)
-    frm.options.update(options)
-    frm.instance_eval("@parent=parent")
-    frm
-  end
-
-  def openModalDialog(parent,style=nil,mod=VRModalDialog,*template_arg)
-    mod = VRModalDialog unless mod
-    frm = newdialog(parent,style,mod,*template_arg)
-    a = frm.open(parent,true)
-  end
-
-  def openModelessDialog(parent,style=nil,mod=VRModelessDialog,*template_arg)
-    mod = VRModelessDialog unless mod
-    frm = newdialog(parent,style,mod,*template_arg)
-    frm.open parent,false
-    @_vr_box.push frm
-    frm
-  end
-
-  alias modalform :openModalDialog
-  alias modelessform :openModelessDialog
-end
-
-module VRInputboxDialog
-=begin
-== VRInputboxDialog
-Abstract module of Inputbox.
-Ok button, Cancel button and input area are have to be added by addDlgControl.
-After creating them, set the options "okbutton","cancelbutton","target" and
-"default".
-=end
-
-  include VRParent
-  include VRStdControlContainer
-
-  def vrinit
-    super
-    target = @options["target"]
-  end
-
-  def msghandler(msg)
-    if msg.msg == WMsg::WM_INITDIALOG then
-      self.setItemTextOf(@options["target"], at options["default"].to_s)
-    end
-
-    if msg.msg == WMsg::WM_COMMAND then
-      if msg.wParam==@options["okbutton"] || 
-         msg.wParam==VRDialogComponent::IDOK then
-        close self.getItemTextOf(@options["target"])
-      elsif msg.wParam==@options["cancelbutton"]  ||
-            msg.wParam==VRDialogComponent::IDCANCEL then
-        close false
-      end
-    end
-  end
-end
-
-class VRInputbox < VRDialogComponent
-  include VRInputboxDialog
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrhandler.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrhandler.rb
deleted file mode 100644
index cef859f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrhandler.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-###################################
-#
-# vrhandler.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-=begin
-= VisualuRuby(tmp) Additional Modules
-=end
-
-
-module VRMouseFeasible
-  include VRMessageHandler
-
-  SHIFT_LBUTTON=1
-  SHIFT_RBUTTON=2
-  SHIFT_SHIFT  =4
-  SHIFT_CONTROL=8
-  SHIFT_MBUTTON=16
-
-=begin
-== VRMouseFeasible
-This is a module to receive mouse messages. 
-
-=== Event Handlers
---- self_lbuttonup(shift,x,y)
-    This method is fired when mouse left button is released at coord(x,y).
-    Press SHIFT key to set 0x4 bit of argument "shift". 
-    Its 0x8 bit is for CONTROL key 
---- self_lbuttondown(shift,x,y)
-    This method is fired when mouse left button is pressed.
---- self_rbuttonup(shift,x,y)
-    This method is fired when mouse right button is released.
---- self_rbuttondown(shift,x,y)
-    This method is fired when mouse right button is pressed.
---- self_mousemove(shift,x,y)
-    This method is fired when mouse cursor is moving on the window at coord(x,y).
-=end
-
-  def mousefeasibleinit
-    addHandler WMsg::WM_LBUTTONUP,  "lbuttonup",  MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_LBUTTONDOWN,"lbuttondown",MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_RBUTTONUP,  "rbuttonup",  MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_RBUTTONDOWN,"rbuttondown",MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_MOUSEMOVE,  "mousemove",  MSGTYPE::ARGINTSINTSINT,nil
-    acceptEvents [WMsg::WM_LBUTTONUP,WMsg::WM_RBUTTONUP,
-                  WMsg::WM_LBUTTONDOWN,WMsg::WM_RBUTTONDOWN,
-                  WMsg::WM_MOUSEMOVE]
-  end
-  
-  def vrinit
-    super
-    mousefeasibleinit
-  end
-
-=begin handlers
-  def self_lbuttonup(*arg)   end
-  def self_lbuttondown(*arg) end
-  def self_rbuttonup(*arg)   end
-  def self_rbuttondown(*arg) end
-  def self_mousemove(*arg)   end
-=end
-end
-
-module VRFocusSensitive
-  include VRMessageHandler
-
-=begin
-== VRFocusSensitive
-This is a module to sense getting/losing focus.
-=== Event Handlers
---- self_gotfocus()
-    This method is fired when the window get focus.
---- self_lostfocus()
-    This method is fired when the window lose the focus.
-=end
-
-  def focussensitiveinit
-    addHandler WMsg::WM_SETFOCUS,   "gotfocus",   MSGTYPE::ARGNONE,nil
-    addHandler WMsg::WM_KILLFOCUS,  "lostfocus",  MSGTYPE::ARGNONE,nil
-    acceptEvents [WMsg::WM_SETFOCUS,WMsg::WM_KILLFOCUS]
-  end
-  
-  def vrinit
-    super
-    focussensitiveinit
-  end
-=begin handlers
-  def gotfocus()  end
-  def lostfocus() end
-=end
-end
-
-module VRKeyFeasible
-  include VRMessageHandler
-  
-=begin
-== VRKeyFeasible
-This is a module to sense keyboard input.
-
-=== Event Handlers
---- self_char(keycode,keydata)
-    This method is fired when WM_KEYUP and WM_KEYDOWN are translated into 
-    keyboard input messages.
---- self_deadchar(keycode,keydata)
---- self_syschar(keycode,keydata)
---- self_sysdeadchar(keycode,keydata)
-=end
-
-  def keyfeasibleinit
-    addHandler(0x102,"char",     MSGTYPE::ARGINTINT,nil)      # WM_CHAR
-    addHandler(0x103,"deadchar", MSGTYPE::ARGINTINT,nil)      # WM_DEADCHAR
-    addHandler(0x106,"syschar",  MSGTYPE::ARGINTINT,nil)      # WM_SYSCHAR
-    addHandler(0x107,"sysdeadchar", MSGTYPE::ARGINTINT,nil)   # WM_SYSDEADCHAR
-    acceptEvents [0x102,0x103,0x106,0x107]
-  end
-  def vrinit
-    super
-    keyfeasibleinit
-  end
-
-=begin handlers
-  def self_char(*arg)        end
-  def self_deadchar(*arg)    end
-  def self_syschar(*arg)     end
-  def self_sysdeadchar(*arg) end
-=end
-end
-
-module VRDestroySensitive
-=begin
-== VRDestroySensitive
-This is a module to sense window destruction.
-
-=== Event Handlers
---- self_destroy
-    This is fired when the window is destroying.
-=end
-
-  include VRMessageHandler
-
-  def destroysensitiveinit
-    addHandler WMsg::WM_DESTROY,"destroy",MSGTYPE::ARGNONE,nil
-    acceptEvents [WMsg::WM_DESTROY]
-  end
-  
-  def vrinit
-    super
-    destroysensitiveinit
-  end
-end
-
-module VRClosingSensitive
-=begin
-== VRClosingSensitive
-This is a module to sense window closing.
-This module can be used for implement of CanClose method.
-
-ex. 
-  class MyForm < VRForm
-    include VRClosingSensitive
-    def self_close
-      r = messageBox("Can Close?","close query",4) #4=MB_YESNO
-  
-      if r==7 # ID_NO then 
-        SKIP_DEFAULTHANDLER
-      end
-    end
-  end
-
-=== Event Handlers
---- self_close
-    This is fired when the window is closing.
-=end
-
-  include VRMessageHandler
-  def closingsensitiveinit
-    addHandler WMsg::WM_CLOSE,"close",MSGTYPE::ARGNONE,nil
-    acceptEvents [WMsg::WM_CLOSE]
-  end
-  
-  def vrinit
-    super
-    closingsensitiveinit
-  end
-end
-
-require VR_DIR+'contrib/vrctlcolor'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.old.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.old.rb
deleted file mode 100644
index 890d203..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.old.rb
+++ /dev/null
@@ -1,209 +0,0 @@
-###################################
-#
-# vrlayout.rb (old version)
-# Programmed by  nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2001 Nishikawa,Yasuhiro
-#
-# More information at http://www.threeweb.ad.jp/~nyasu/software/vrproject.html
-# (in Japanese)
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-=begin
-= VisualuRuby(tmp) Layout Managers
-Layout Managers re-arrange child windows(controls)
-when the parent window is resized.
-=end
-
-
-##############################################
-#  base module for LayoutManagers
-#
-module VRLayoutManager
-=begin
-== VRLayoutManager
-The base class for the layout managers.
-
-=== Methods
---- rearrange
-    Re-arranges child windows.
-=end
-
-
-  include VRMessageHandler
-
-  def vrLayoutinit
-    addHandler(WMsg::WM_SIZE, "vrlayoutresize",MSGTYPE::ARGLINTINT,nil) 
-    acceptEvents [WMsg::WM_SIZE]
-  end
-
-  def vrinit
-    super
-    vrLayoutinit
-  end
-  
-  def rearrange
-    if self.visible? then
-      a=self.clientrect
-      sendMessage WMsg::WM_SIZE,0,MAKELPARAM(a[2]-a[0],a[3]-a[1])
-    end
-  end
-  
-  def self_vrlayoutresize(*arg)
-    self_layout_arrange(*arg)
-  end
-end
-
-##
-##########################################
-
-
-module VRVertLayoutManager
-=begin
-== VRVertLayoutManager
-On window resizing, each controls on the window is re-arranged
-to vertical arrangement. each control's width is window width and 
-each height is one n-th of window's height.
-
-=== Methods
---- addControl(type,name,caption,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl 
-    without args ((|x|)),((|y|)),((|w|)),((|h|))
-=end
-
-  include VRLayoutManager
-  
-  def self_layout_arrange(width,fheight)
-    return unless @_vr_c_order
-    height=(@_vr_c_order.size>0)? (fheight.to_f / @_vr_c_order.size) : fheight
-    
-    @_vr_c_order.each_index do |i|
-      @_vr_c_order[i].move( 0,i*height, width,height )
-    end
-  end
-
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(type,name,caption,style=0)
-    @_vr_c_order=[] if !@_vr_c_order
-    r=vr_addControlOriginal(type,name,caption,0, at controls.size*10,10,10,style)
-    @_vr_c_order.push r
-    return r
-  end
-end
-
-
-module VRHorizLayoutManager
-=begin
-== VRHorizLayoutManager
-On window resizing, each controls on the window is re-arranged
-to horizontal arrangement. each control's height is window height and 
-each width is one n-th of window's width.
-
-=== Methods
---- addControl(type,name,caption,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl 
-    without args ((|x|)),((|y|)),((|w|)),((|h|))
-=end
-
-  include VRLayoutManager
-  
-  def self_layout_arrange(fwidth,height)
-    return unless @_vr_c_order
-    width =(@_vr_c_order.size>0)? (fwidth.to_f / @_vr_c_order.size) : fwidth
-
-    @_vr_c_order.each_index do |i|
-      @_vr_c_order[i].move( i*width,0, width,height )
-    end
-  end
-
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(type,name,caption,style=0)
-    @_vr_c_order=[] if !@_vr_c_order
-    r=vr_addControlOriginal(type,name,caption,0, at controls.size*10,10,10,style)
-    @_vr_c_order.push r
-    return r
-  end
-
-end
-
-module VRGridLayoutManager
-=begin
-== VRGridLayoutManager
-On window resizing, each controls on the window is re-arranged
-with the grid which devides the window height and width by the number
-specified by ((<setDimension>)) method.
-
-=== Methods
---- setDimension(x,y)
-    Devides windows width by ((|x|)) and height by ((|y|)).
-
---- addControl(type,name,caption,x,y,w,h,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl but
-    args ((|x|)),((|y|)),((|w|)),((|h|)) are under grid dimension.
-=end
-
-  include VRLayoutManager
-  
-  def setDimension(x,y)
-    @_vr_xsize=x
-    @_vr_ysize=y
-    @_vr_controldim={}
-  end
-
-  def self_layout_arrange(width,height)
-    return unless @controls
-
-    @controls.each do |id,cntl|
-        cntl.move(width.to_f  / @_vr_xsize*@_vr_controldim[id][0],
-                  height.to_f / @_vr_ysize*@_vr_controldim[id][1],
-                  width.to_f  / @_vr_xsize*@_vr_controldim[id][2],
-                  height.to_f / @_vr_ysize*@_vr_controldim[id][3]  )
-    end
-  end
-
-  def addControl(type,name,caption,x,y,w,h,style=0)
-    if !@_vr_controldim then raise("addControl before setDimension") end
-    if @controls.size != @_vr_controldim.size then
-      raise "VRGridLayoutManager misses some controls"+
-            "(mng#{@_vr_controldim.size} cntls#{@_vr_cid})."
-    end
-
-    gx=self.w/@_vr_xsize*x; gw=self.w/@_vr_xsize*w;
-    gy=self.h/@_vr_ysize*y; gh=self.h/@_vr_ysize*h;
-    r=vr_addControlOriginal(type,name,caption,gx,gy,gw,gh,style)
-    @_vr_controldim[r.etc]= [x,y,w,h]
-    return r
-  end
-end
-
-module VRFullsizeLayoutManager
-=begin
-== VRFullsizeLayoutManager
-   This is a LayoutManager for only one control, whose size is full size 
-   on the window.
-
-=== Methods
---- addControl(type,name,caption,astyle)
-    You can call this method only once.
-=end
-
-
-  include VRVertLayoutManager
-
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(*arg)
-    super
-    def self.addControl(*arg)
-      raise "addControl twice"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.rb
deleted file mode 100644
index b89e6d5..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout.rb
+++ /dev/null
@@ -1,173 +0,0 @@
-###################################
-#
-# vrlayout.rb (using vrlayout2 version)
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'vrlayout2'
-
-=begin
-= VisualuRuby(tmp) Layout Managers
-Layout Managers re-arrange child windows(controls)
-when the parent window is resized.
-=end
-
-##############################################
-#  base module for LayoutManagers
-#
-module VRLayoutManager
-=begin
-== VRLayoutManager
-The base class for the layout managers.
-
-=== Methods
---- rearrange
-    Re-arranges child windows.
-=end
-
-
-  include VRMessageHandler
-
-  def vrLayoutinit
-    @_vr_layoutframe=nil
-    addHandler(WMsg::WM_SIZE, "vrlayoutresize",MSGTYPE::ARGLINTINT,nil) 
-    acceptEvents [WMsg::WM_SIZE]
-  end
-
-  def vrinit
-    super
-    vrLayoutinit
-  end
-  
-  def rearrange
-    a=self.clientrect
-    sendMessage WMsg::WM_SIZE,0,MAKELPARAM(a[2]-a[0],a[3]-a[1])
-  end
-  
-  def self_vrlayoutresize(*arg)
-    self_layout_arrange(*arg)
-  end
-
-  def self_layout_arrange(xw,yh)
-    @_vr_layoutframe.move 0,0,xw,yh if @_vr_layoutframe
-  end
-end
-
-##
-##########################################
-
-module VRVertLayoutManager
-=begin
-== VRVertLayoutManager
-On window resizing, each controls on the window is re-arranged
-to vertical arrangement. each control's width is window width and 
-each height is one n-th of window's height.
-
-=== Methods
---- addControl(type,name,caption,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl 
-    without args ((|x|)),((|y|)),((|w|)),((|h|))
-=end
-
-  include VRLayoutManager
-
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(type,name,caption,style=0)
-    @_vr_layoutframe = VRVertLayoutFrame.new unless @_vr_layoutframe
-    r=vr_addControlOriginal(type,name,caption,0, at controls.size*10,10,10,style)
-    @_vr_layoutframe.register(r)
-    rearrange
-    return r
-  end
-end
-
-module VRHorizLayoutManager
-=begin
-== VRHorizLayoutManager
-On window resizing, each controls on the window is re-arranged
-to horizontal arrangement. each control's height is window height and 
-each width is one n-th of window's width.
-
-=== Methods
---- addControl(type,name,caption,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl 
-    without args ((|x|)),((|y|)),((|w|)),((|h|))
-=end
-
-  include VRLayoutManager
-
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(type,name,caption,style=0)
-    @_vr_layoutframe = VRHorizLayoutFrame.new unless @_vr_layoutframe
-    r=vr_addControlOriginal(type,name,caption,0, at controls.size*10,10,10,style)
-    @_vr_layoutframe.register(r)
-    rearrange
-    return r
-  end
-end
-
-module VRGridLayoutManager
-=begin
-== VRGridLayoutManager
-On window resizing, each controls on the window is re-arranged
-with the grid which devides the window height and width by the number
-specified by ((<setDimension>)) method.
-
-=== Methods
---- setDimension(x,y)
-    Devides windows width by ((|x|)) and height by ((|y|)).
-
---- addControl(type,name,caption,x,y,w,h,astyle)
-    Create a new control and add on the window.
-    The arguments are same as VRParent#addControl but
-    args ((|x|)),((|y|)),((|w|)),((|h|)) are under grid dimension.
-=end
-  include VRLayoutManager
-
-  def setDimension(x,y)
-    unless @_vr_layoutframe then
-      @_vr_layoutframe = VRGridLayoutFrame.new(x,y)
-    else
-      @_vr_layoutframe.setDimension(x,y)
-    end
-  end
-  def addControl(type,name,caption,x,y,w,h,style=0)
-    @_vr_layoutframe = VRGridLayoutFrame.new unless  @_vr_layoutframe
-    r=vr_addControlOriginal(type,name,caption,0, at controls.size*10,10,10,style)
-    @_vr_layoutframe.register(r,x,y,w,h)
-    rearrange
-    return r
-  end
-end
-
-module VRFullsizeLayoutManager
-=begin
-== VRFullsizeLayoutManager
-   This is a LayoutManager for only one control, whose size is full size 
-   on the window.
-=== Methods
---- addControl(type,name,caption,astyle)
-    You can call this method only once.
-=end
-
-
-  include VRVertLayoutManager
-  VR_ADDCONTROL_FEWARGS=true
-
-  def addControl(*arg)
-    super
-    def self.addControl(*arg)
-      raise "addControl twice"
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout2.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout2.rb
deleted file mode 100644
index 9a51dec..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrlayout2.rb
+++ /dev/null
@@ -1,342 +0,0 @@
-###################################
-#
-# vrlayout2.rb 
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-require 'Win32API'
-
-class VRLayoutFrame
-=begin
-== VRLayoutFrame
-   This is a base class for layout frames.
-
-=== Methods
---- register(*controls)
-    Registers controls for LayoutFrame
---- move(x,y,w,h)
-    Resizes the layout frame size.
-    This re-calculate the registered controls coordinates.
-=end
-
-  def initialize()
-    @_vr_layoutclients=[]
-    @_vr_lx, at _vr_ly, at _vr_lw, at _vr_lh = 0,0,10,10
-  end
-
-  def register(*cntl)
-    @_vr_layoutclients.concat cntl
-    _vr_relayout
-  end
-
-  def move(x,y,w,h)
-    @_vr_lx, at _vr_ly, at _vr_lw, at _vr_lh = x,y,w,h
-    _vr_relayout
-  end
-
-  def _vr_relayout
-  end
-end
-
-
-class VRVertLayoutFrame < VRLayoutFrame
-=begin
-== VRVertLayoutFrame
-   This is a frame that lays out its controls vertically.
-   Use ((|register|)) and ((|move|)) method of VRLayoutFrame
-=end
-
-  def _vr_relayout
-    return if @_vr_layoutclients.size==0
-    height = @_vr_lh.to_f / @_vr_layoutclients.size
-    @_vr_layoutclients.each_index do |i|
-      @_vr_layoutclients[i].move @_vr_lx, @_vr_ly+height*i, at _vr_lw,height
-    end
-  end
-end
-
-class VRHorizLayoutFrame < VRLayoutFrame
-=begin
-== VRHorizLayoutFrame
-   This is a frame that lays out its controls horizontally.
-   Use ((|register|)) and ((|move|)) method of VRLayoutFrame
-=end
-  def _vr_relayout
-    return if @_vr_layoutclients.size==0
-    width = @_vr_lw.to_f / @_vr_layoutclients.size
-    @_vr_layoutclients.each_index do |i|
-      @_vr_layoutclients[i].move @_vr_lx+width*i, @_vr_ly,width, at _vr_lh
-    end
-  end
-end
-
-class VRFullsizeLayoutFrame < VRVertLayoutFrame
-=begin
-== VRFullsizeLayoutFrame
-   This is a frame that lays out its one control full-sized.
-   Use ((|register|)) and ((|move|)) method of VRLayoutFrame
-   ((|register|)) method can be called once and accept only one control.
-=end
-
-  def register(re)
-    super
-    def self.register
-      raise "register twice"
-    end
-  end
-end
-
-class VRGridLayoutFrame <VRLayoutFrame
-  def initialize(xs,ys)
-    super()
-    @_vr_xsize=xs
-    @_vr_ysize=ys
-    @_vr_layoutclients = Array.new
-  end
-  def setDimention(xs,ys)
-    @_vr_xsize=xs
-    @_vr_ysize=ys
-  end
-
-  def register(cntl,x,y,w,h)
-    @_vr_layoutclients.push [cntl,x,y,w,h]
-    _vr_relayout
-  end
-
-  def _vr_relayout
-    @_vr_layoutclients.each do |c|
-      c[0].move( @_vr_lw * c[1] / @_vr_xsize,
-                 @_vr_lh * c[2] / @_vr_ysize,
-                 @_vr_lw * c[3] / @_vr_xsize,
-                 @_vr_lh * c[4] / @_vr_ysize)
-    end
-  end
-end
-
-class VRTwoPaneFrame
-=begin
-== VRTwoPaneFrame
-   This is a base class for twopane frames.
-
-=== Methods
---- register(*controls)
---- move(x,y,w,h)
-    same as ((<VRLayoutFrame>))
---- setup(parent)
-    Call this method to combine the frame to the window.
---- window_parent
-    Find the first actual window object from its parent or ancestors.
-=end
-  SPLITTER_MOVEWINDOW=0
-  SPLITTER_DRAWLINE=1
-  @@_vr_paned_splitter_movingmethod = SPLITTER_DRAWLINE
-  
-  def splitter_operation_type
-     @@_vr_paned_splitter_movingmethod
-  end
-  
-  def splitter_operation_type=(tp)
-     @@_vr_paned_splitter_movingmethod=tp
-  end
-
-  attr_accessor :ratio,:separatorheight
-
-
-  Cursor="Size"
-
-  PatBlt = Win32API.new("gdi32","PatBlt","IIIIII","I")
-
-  module VRTwoPaneFrameUsable
-    attr_accessor :_vr_twopaneframes
-
-    def _vr_twopaneframesinit
-      return if defined?(@_vr_twopaneframes)  # no init twice
-      @_vr_twopaneframes = Array.new
-      @_vr_current_tpframe=nil
-      addHandler(
-        WMsg::WM_LBUTTONUP,  "vrsepl2dragend",  MSGTYPE::ARGNONE,nil)
-      addHandler(
-        WMsg::WM_LBUTTONDOWN,"vrsepl2buttondown",MSGTYPE::ARGINTSINTSINT,nil)
-      addHandler(
-        WMsg::WM_MOUSEMOVE,  "vrsepl2mousemove",  MSGTYPE::ARGINTSINTSINT,nil)
-      addHandler(
-        WMsg::WM_KILLFOCUS,  "vrsepl2dragend",  MSGTYPE::ARGNONE,nil)
-      acceptEvents [
-        WMsg::WM_LBUTTONUP,WMsg::WM_LBUTTONDOWN,WMsg::WM_MOUSEMOVE,
-        WMsg::WM_KILLFOCUS
-       ]
-    end
-
-    def self_vrsepl2buttondown(s,x,y)
-      @_vr_twopaneframes.each do |f|
-        if f.hittest(x,y)
-          f.setDragCur
-          f.dragstart 
-          @_vr_current_tpframe=f
-        end
-      end
-    end
-
-    def self_vrsepl2dragend
-      @_vr_current_tpframe=nil
-      @_vr_twopaneframes.each do |f|
-        f.dragend
-      end
-      refresh
-    end
-
-    def self_vrsepl2mousemove(s,x,y)
-      @_vr_twopaneframes.each do |f|
-        if f.hittest(x,y)
-          f.setDragCur
-        end
-      end
-      if @_vr_current_tpframe then
-        @_vr_current_tpframe.splitterDragging(x,y)
-      end
-    end
-  end
-
-  def window_parent
-    a=self
-    while(! a.is_a?(SWin::Window) ) do
-      a = a.instance_eval("@parent")
-    end
-    return a
-  end
-
-  def initialize(pane1,pane2)
-    @pane1, at pane2 = pane1,pane2 
-    @_vr_dragging=false
-    @ratio=0.5
-    @separatorheight=4
-    @_vr_splitter_last=nil
-  end
-
-  def hittest(x,y)
-    return unless @_vr_lxs
-    if (@_vr_lxs < x) and (x  < @_vr_lxe) and
-       (@_vr_lys < y) and (y  < @_vr_lye) 
-    then
-      true
-    else
-      false
-    end
-  end
-
-  def setDragCur
-    @_vr_app.setCursor @_vr_dragcur if @_vr_app
-  end
-
-  def dragstart
-    @parent.setCapture
-    @_vr_dragging=true
-  end
-
-  def dragend
-    return unless @_vr_dragging
-    @parent.releaseCapture
-    @_vr_dragging=false
-    splitterDragEnd
-  end
-
-  def setup(parent)
-    raise "setup twice" if defined? @parent
-    @parent = parent
-    @_vr_app = parent.instance_eval("@screen.application") # parent.application
-    @_vr_dragcur = eval("@_vr_app::SysCursors::#{self.class::Cursor}()")
-    parent.extend VRTwoPaneFrameUsable
-    parent._vr_twopaneframesinit
-    parent._vr_twopaneframes.push self
-    self
-  end
-
-  def move(x,y,w,h)
-    @_vr_lx, at _vr_ly, at _vr_lw, at _vr_lh = x,y,w,h
-    self._vr_relayout
-  end
-
-  def splitterDragging(x,y) end
-  def splitterDragEnd(x,y) end
-  def _vr_relayout() raise "using base class #{self.class}" end
-end
-
-class VRVertTwoPaneFrame < VRTwoPaneFrame
-  Cursor = "SizeNS"
-  def splitterDragEnd
-    @_vr_splitter_last=nil
-    _vr_relayout
-  end
-  def splitterDragging(x,y)
-    return if y<@separatorheight+ at _vr_ly or y>@_vr_ly+ at _vr_lh-@separatorheight
-    @ratio=(y- at _vr_ly).to_f/@_vr_lh
-
-    case(splitter_operation_type)
-    when SPLITTER_MOVEWINDOW
-        _vr_relayout(y- at _vr_ly)
-    when SPLITTER_DRAWLINE
-      w = window_parent
-      w.dopaint do |hdc|
-        w.setBrush(RGB(0x255,0x255,0x255))
-        if @_vr_splitter_last then
-          VRTwoPaneFrame::PatBlt.call(hdc,*@_vr_splitter_last) 
-        end
-        current=[@_vr_lx,y, at _vr_lw, at separatorheight,0x5a0049] # PATINVERT
-        VRTwoPaneFrame::PatBlt.call(hdc,*current)
-        @_vr_splitter_last = current
-      end
-    end
-  end
-
-  def _vr_relayout( ys = (@_vr_lh*@ratio).to_i)
-    sh=(@separatorheight/2).to_i
-    @_vr_lxs, at _vr_lxe = @_vr_lx, at _vr_lx+@_vr_lw
-    @_vr_lys, at _vr_lye = @_vr_ly+ys-sh, at _vr_ly+ys+sh
-
-    @pane1.move @_vr_lx, at _vr_ly,  @_vr_lw,ys-sh
-    @pane2.move @_vr_lx, at _vr_lys+@separatorheight, @_vr_lw, at _vr_lh-ys-sh
-  end
-end
-
-class VRHorizTwoPaneFrame < VRTwoPaneFrame
-  Cursor = "SizeWE"
-  def splitterDragEnd
-    @_vr_splitter_last=nil
-    _vr_relayout
-  end
-  def splitterDragging(x,y)
-    return if x<@separatorheight+ at _vr_lx or x>@_vr_lx+ at _vr_lw-@separatorheight
-    @ratio=(x- at _vr_lx).to_f/@_vr_lw
-
-    case(splitter_operation_type)
-    when SPLITTER_MOVEWINDOW
-        _vr_relayout(x- at _vr_lx)
-    when SPLITTER_DRAWLINE
-      w = window_parent
-      w.dopaint do |hdc|
-        w.setBrush(RGB(0x255,0x255,0x255))
-        if @_vr_splitter_last then
-          VRTwoPaneFrame::PatBlt.call(hdc,*@_vr_splitter_last) 
-        end
-        current=[x, at _vr_ly, at separatorheight, at _vr_lh,0x5a0049] # PATINVERT
-        VRTwoPaneFrame::PatBlt.call(hdc,*current)
-        @_vr_splitter_last = current
-      end
-    end
-
-
-  end
-
-  def _vr_relayout( xs = (@_vr_lw*@ratio).to_i)
-    sh=(@separatorheight/2).to_i
-    @_vr_lxs, at _vr_lxe = @_vr_lx+xs-sh, at _vr_lx+xs+sh
-    @_vr_lys, at _vr_lye = @_vr_ly, at _vr_ly+@_vr_lh
-
-    @pane1.move @_vr_lx, at _vr_ly,  xs-sh, at _vr_lh
-    @pane2.move @_vr_lxs+ at separatorheight, at _vr_ly, @_vr_lw-xs-sh, at _vr_lh
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmargin.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmargin.rb
deleted file mode 100644
index 67c1858..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmargin.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-###################################
-#
-# vrmargin.rb
-#
-# Programmed by  yukimi_sake <yukimi_sake at mbi.nifty.com>
-# Copyright 2003-2004 Yukio Sakaue
-#
-###################################
-
-require 'vr/vruby'
-require 'vr/vrhandler'
-
-module VRMargin
-=begin
-== VRMargin
-This is a module to space itself from parent window on resized.
-Also useable for layout flames and two panes.
-=== Methods
---- initMargin(left=nil,top=nil,right=nil,bottom=nil)
-    Call this method first to use margin and set each margins.
-    If the margins are set to nil,the control becomes original size.
---- setMargin(left=nil,top=nil,right=nil,bottom=nil)
-    Set all margins
---- mgLeft
---- mgLeft=
-    Get/Set left margin.
---- mgTop
---- mgTop=
-    Get/Set top margin.
----mgRight
----mgRight=
-    Get/Set right margin.
---- mgBottom
---- mgBottom=
-    Get/Set bottom margin.
-=end
- 
-  def initMargin(left=nil,top=nil,right=nil,bottom=nil)
-    if respond_to?(:vrinit)
-      extend MarginForWindow
-      vrinit 
-      @__org_x, at __org_y, at __org_w, at __org_h=x,y,w,h
-      @_mg_x, at _mg_y, at _mg_w, at _mg_h = x,y,w,h
-    else
-      extend MarginForClass
-      mgLeft = 0 unless left
-      mgTop = 0 unless top
-      mgRight = 0 unless right
-      mgBottom = 0 unless bottom
-    end
-    @_mg_top=top
-    @_mg_bottom=bottom
-    @_mg_left=left
-    @_mg_right=right
-    self
-  end
-      
-  def mgTop(); @_mg_top; end
-  def mgBottom(); @_mg_bottom; end
-  def mgLeft(); @_mg_left; end
-  def mgRight(); @_mg_right;end
-  
-  def setMargin(left=nil,top=nil,right=nil,bottom=nil)
-    @_mg_top=top
-    @_mg_bottom=bottom
-    @_mg_left=left
-    @_mg_right=right
-    self.move(@_mg_x, at _mg_y, at _mg_w, at _mg_h)if @_mg_x&&@_mg_y&&@_mg_w&&@_mg_h
-  end
-  
-  def mgTop=(t)
-    @_mg_top=t
-    self.move(@_mg_x, at _mg_y, at _mg_w, at _mg_h)
-  end
-  def mgBottom=(b)
-    @_mg_bottom=b
-    self.move(@_mg_x, at _mg_y, at _mg_w, at _mg_h)
-  end
-  def mgLeft=(l)
-    @_mg_left=l
-    self.move(@_mg_x, at _mg_y, at _mg_w, at _mg_h)
-  end
-  def mgRight=(r)
-    @_mg_right=r
-    self.move(@_mg_x, at _mg_y, at _mg_w, at _mg_h)
-  end
-  
-  module MarginForClass
-    def move(x,y,w,h)
-      return unless x || y || w || h
-       @_mg_x, at _mg_y, at _mg_w, at _mg_h = x,y,w,h
-      _x = x + @_mg_left
-      _w = w - @_mg_right - @_mg_left
-      _y = y + @_mg_top
-      _h = h - @_mg_bottom - @_mg_top
-      super(_x,_y,_w,_h)
-    end
-  end
-  
-  module MarginForWindow
-    def move(x,y,w,h)
-      @_mg_x, at _mg_y, at _mg_w, at _mg_h = x,y,w,h
-      if @_mg_left then 
-        if @_mg_right then
-          _x = x + @_mg_left
-          _w = w - @_mg_right - @_mg_left
-        else
-          _x =  x + @_mg_left
-          _w = @__org_w
-        end
-      else 
-        if @_mg_right then
-          _x = w - @_mg_right + x - @__org_w
-          _w = @__org_w
-        else
-          _x = @__org_x
-          _w = @__org_w
-        end
-      end
-      
-      if @_mg_top then 
-        if @_mg_bottom then
-          _y = y + @_mg_top
-          _h = h - @_mg_bottom - @_mg_top
-        else
-          _y = y + @_mg_top
-          _h = @__org_h
-        end
-      else 
-        if @_mg_bottom then
-          _y = y+h- at __org_h-@_mg_bottom
-          _h = @__org_h
-        else
-          _y = @__org_y
-          _h = @__org_h
-        end
-      end
-      super(_x,_y,_w,_h)
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmgdlayout.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmgdlayout.rb
deleted file mode 100644
index 26d8633..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmgdlayout.rb
+++ /dev/null
@@ -1,368 +0,0 @@
-###################################
-#
-# vrmgdlayout.rb 
-#
-# Programmed by  yukimi_sake <yukimi_sake at mbi.nifty.com>
-# Copyright 2003-2004 Yukio Sakaue
-#
-###################################
-
-require 'vr/vrmargin'
-require 'vr/vrlayout2'
-
-module VRMarginedFrameUseable
-=begin
-== VRMarginedFrameUseable
-This is a extension of VRParent for enable to use WM_SIZE message handler.
-=== Extended methods
---- setMarginedFrame(class,*args)
-    Register class on VRParent and setups WM_SIZE message handler.
-=end
-  
-  include VRMessageHandler
-  def vrinit
-    super
-    vrmarginedframe_init
-  end
-  
-  def vrmarginedframe_init
-    addHandler(WMsg::WM_SIZE,  "vrmgresize",  MSGTYPE::ARGLINTINT,nil)
-    acceptEvents [WMsg::WM_SIZE]
-  end
-  
-  def setMarginedFrame(klass,*args)
-    raise "Only one margined frame can set this window." if
-                                            @__regsterd_vr_margined_frame
-    if klass <= VRTwoPaneFrame
-      @__regsterd_vr_margined_frame=klass.new(args[0],args[1]).setup(self)
-    elsif klass <= VRGridLayoutFrame
-      @__regsterd_vr_margined_frame=klass.new(args[0],args[1])
-    else
-      @__regsterd_vr_margined_frame=klass.new
-    end
-    
-    def self.self_vrmgresize(w,h)
-      @__regsterd_vr_margined_frame.move(0,0,w,h) if
-                                                  @__regsterd_vr_margined_frame
-    end
-    sendMessage(WMsg::WM_SIZE, 0, MAKELPARAM(self.w, self.h))
-    @__regsterd_vr_margined_frame
-  end
- 
-  module VRMgdLayoutFrame
-=begin
-== VRMgdLayoutFrame
-This is the extension of VRLayoutFrame.
-All classes are extended VRMargin which enables client's spacing.
-And following methods are available.
-=== Extended method of instance
---- VRGridLayoutFrame#register(*cntl)
-    Allowd Arrays as arguments
---- VRMgdFullsizeLayoutFrame#_vr_relayout
-    Redefined for that all clients are received same 'move(x,y,w,h)' method.
-=end
-    
-    include VRMargin
-    def initialize()
-      self.initMargin(0,0,0,0)
-      @_vr_layoutclients=[]
-      @_vr_lx, at _vr_ly, at _vr_lw, at _vr_lh = 0,0,10,10
-    end
-    def register(*cntl)
-      @_vr_layoutclients.concat(cntl.flatten.map{|i|
-        i.extend(VRMargin).initMargin(0,0,0,0)})
-      _vr_relayout
-    end
-  end
-    
-  class VRMgdVertLayoutFrame < VRVertLayoutFrame 
-    include VRMgdLayoutFrame
-  end
-  
-  class VRMgdHorizLayoutFrame < VRHorizLayoutFrame
-    include VRMgdLayoutFrame
-  end
-
-  class VRMgdFullsizeLayoutFrame < VRFullsizeLayoutFrame  
-    include VRMgdLayoutFrame    
-    def _vr_relayout
-      return if @_vr_layoutclients.size==0
-      @_vr_layoutclients.each_index do |i|
-        @_vr_layoutclients[i].move @_vr_lx, @_vr_ly, at _vr_lw, at _vr_lh
-      end
-    end
-  end
-
-  class VRMgdGridLayoutFrame < VRGridLayoutFrame
-    include VRMargin
-    def initialize(xs,ys)
-      self.initMargin(0,0,0,0)
-      super
-    end
-    def register(*cntl)
-      if cntl[0].is_a? Array
-        cntl.each{|i| i[0].extend(VRMargin).initMargin(0,0,0,0); super(*i)}
-      else
-        cntl[0].extend(VRMargin).initMargin(0,0,0,0)
-        super
-      end
-    end
-  end
- 
-  module VRMgdTwoPaneFrame
-=begin
-== VRMgdTwoPaneFrame
-This is the extension of VRPaneFrame.
-All classes are extended VRMargin which enables client's spacing.
-And extended class has following methods and constants.
-
-=== Extended methods
----position
----position=
-   Position of splitter.
-   If it is a positive integer, it means the distance from the left or top edge.
-   If negative, it calculates opposite side.
-   If this value sets, 'ratio' will be reseted.
-   'ratio' and 'position' are exclusive each other.
-===R/W attributes
----bevel
-   It is the form of the edge of a gap.You can draw it like below.
-    bevel=[[0x000000,0xffffff],[0xffffff,0x000000]]
-   First one is left/top feature,other is right/botm.
-   Drawn line in an order from an outside.
-   or
-    bevel=VRSplitter::BevelGroove1
-   see below constants.
----gap
-   space between panes.
-===Class constants
----BevelNone
----BevelGroove1
----BevelGroove2
----BevelRaise1
----BevelRaise2
----BevelSunken1
----BevelSunken2
-=end
-    include VRMargin
-    
-    BevelNone    = [[],[]]
-    BevelGroove1 = [[0x666666,0xffffff],[0xffffff,0x666666]]
-    BevelGroove2 = [[0x666666,0xffffff,0x666666,0xffffff],
-                    [0xffffff,0x666666,0xffffff,0x666666]]
-    BevelRaise1  = [[0xffffff],[0x666666]]
-    BevelRaise2  = [[0xffffff,0xffffff],[0x666666,0x666666]]
-    BevelSunken1 = [[0x666666],[0xffffff]]
-    BevelSunken2 = [[0x666666,0x666666],[0xffffff,0xffffff]]
-    
-    attr_reader :ratio, :bevel, :position
-    
-    module VRTwoPaneFrame::VRTwoPaneFrameUsable
-      alias :_vr_twopaneframesinit_org :_vr_twopaneframesinit
-      
-      def _vr_twopaneframesinit
-        addHandler(WMsg::WM_PAINT,  "vrsepl2paint",  MSGTYPE::ARGNONE,nil)
-        _vr_twopaneframesinit_org
-        acceptEvents [WMsg::WM_PAINT]
-      end
-      
-      def self_vrsepl2paint
-        @_vr_twopaneframes.each do |f|
-          f._vr_draw_bevel(self)
-        end
-      end
-      
-    end
-    
-    def initialize(pane1,pane2)
-      def set_margin_to_panes(pn)
-        if pn.is_a? Array
-          pn.each{|i| i.extend(VRMargin).initMargin(0,0,0,0)}
-        elsif pn
-          pn.extend(VRMargin).initMargin(0,0,0,0)
-        end
-      end
-      super
-      self.initMargin(0,0,0,0)
-      set_margin_to_panes(@pane1)
-      set_margin_to_panes(@pane2)
-      @bevel=BevelNone
-    end
-    
-    def position=(pos)
-      return unless pos.is_a?(Integer)
-      @position=pos
-      @ratio=nil
-      self._vr_relayout if @_vr_lw && @_vr_lh
-    end
-    
-    def ratio=(r)
-      return unless r.is_a?(Float) && ((0.0 <= r) && (r <= 1.0))
-      @ratio=r
-      @position=nil
-      self._vr_relayout if @_vr_lw && @_vr_lh
-    end
-    
-    def bevel=(b)
-      @bevel=b
-      self._vr_relayout if @_vr_lw && @_vr_lh
-    end
-      
-    def gap(); @separatorheight; end
-    def gap=(h)
-      @separatorheight=h
-      self._vr_relayout if @_vr_lw && @_vr_lh
-    end
-  end
-  
-  class VRMgdVertTwoPaneFrame < VRVertTwoPaneFrame
-    include VRMgdTwoPaneFrame
-    attr_accessor :uLimit, :lLimit
-    def initialize(p1,p2)
-      super
-      @uLimit = 0; @lLimit = 0
-    end
-    
-    def splitterDragging(x,y)
-      return if y<@separatorheight+ at _vr_ly+@uLimit or
-                                     y>@_vr_ly+ at _vr_lh-@separatorheight- at lLimit
-      if @ratio then
-        @ratio=(y- at _vr_ly).to_f/@_vr_lh
-      elsif @position < 0
-        @position = y - @_vr_lh - @_vr_ly
-      else
-        @position = y - @_vr_ly
-      end
-      
-      case(splitter_operation_type)
-      when SPLITTER_MOVEWINDOW
-        _vr_relayout(y- at _vr_ly)
-      when SPLITTER_DRAWLINE
-        w = window_parent
-        w.dopaint do |hdc|
-          w.setBrush(RGB(0x255,0x255,0x255))
-          if @_vr_splitter_last then
-            VRTwoPaneFrame::PatBlt.call(hdc,*@_vr_splitter_last) 
-          end
-          current=[@_vr_lx,y, at _vr_lw, at separatorheight,0x5a0049] # PATINVERT
-          VRTwoPaneFrame::PatBlt.call(hdc,*current)
-          @_vr_splitter_last = current
-        end
-      end
-    end
-    
-    def _vr_relayout(ys =
-      if @ratio then (@_vr_lh*@ratio).to_i
-      elsif @position < 0
-        @_vr_lh + @position
-      else
-        @position
-      end )
-      sh=(@separatorheight/2).to_i
-      @_vr_lxs, at _vr_lxe = @_vr_lx, at _vr_lx+@_vr_lw
-      @_vr_lys, at _vr_lye = @_vr_ly+ys-sh, at _vr_ly+ys+sh
-      if @pane1.is_a? Array
-        @pane1.each{|i| i.move(@_vr_lx, at _vr_ly, at _vr_lw,ys-sh)}
-      elsif @pane1
-        @pane1.move(@_vr_lx, at _vr_ly, at _vr_lw,ys-sh)
-      end
-      if @pane2.is_a? Array
-        @pane2.each{|i| i.move(@_vr_lx, at _vr_lys+@separatorheight, @_vr_lw,
-          @_vr_lh-ys-sh)}
-      elsif @pane2
-        @pane2.move(@_vr_lx, at _vr_lys+@separatorheight, @_vr_lw, at _vr_lh-ys-sh) 
-      end
-    end
-    
-    def _vr_draw_bevel(win)
-      return unless @_vr_lxs
-      win.dopaint do
-        @bevel[0].each_with_index{|cl,idx|
-          win.setPen(@bevel[0][idx],1)
-          win.grMoveTo(@_vr_lxs+idx, at _vr_lye-idx-1)
-          win.grLineTo(@_vr_lxs+idx, at _vr_lys+idx)
-          win.grLineTo(@_vr_lxe-idx, at _vr_lys+idx)
-          win.setPen(@bevel[1][idx],1)
-          win.grMoveTo(@_vr_lxe-idx-1, at _vr_lys+idx)
-          win.grLineTo(@_vr_lxe-idx-1, at _vr_lye-idx-1)
-          win.grLineTo(@_vr_lxs+idx, at _vr_lye-idx-1)
-        }
-      end
-    end
-  end
-  
-  class VRMgdHorizTwoPaneFrame < VRHorizTwoPaneFrame
-    include VRMgdTwoPaneFrame
-    attr_accessor :rLimit, :lLimit
-    def initialize(p1,p2)
-      super
-      @rLimit = 0; @lLimit = 0
-    end
-    def splitterDragging(x,y)
-      return if x<@separatorheight+ at _vr_lx+@lLimit or
-                                      x>@_vr_lx+ at _vr_lw-@separatorheight- at rLimit
-      if @ratio then
-        @ratio=(x- at _vr_lx).to_f/@_vr_lw
-      elsif @position < 0
-        @position = x - @_vr_lw - @_vr_lx
-      else
-        @position = x - @_vr_lx
-      end
-      case splitter_operation_type
-      when SPLITTER_MOVEWINDOW
-        _vr_relayout(x- at _vr_lx)
-      when SPLITTER_DRAWLINE
-        w = window_parent
-        w.dopaint do |hdc|
-          w.setBrush(RGB(0x255,0x255,0x255))
-          if @_vr_splitter_last then
-            VRTwoPaneFrame::PatBlt.call(hdc,*@_vr_splitter_last) 
-          end
-          current=[x, at _vr_ly, at separatorheight, at _vr_lh,0x5a0049] # PATINVERT
-          VRTwoPaneFrame::PatBlt.call(hdc,*current)
-          @_vr_splitter_last = current
-        end
-      end
-    end
-
-    def _vr_relayout(xs =
-      if @ratio then (@_vr_lw*@ratio).to_i
-      elsif @position < 0
-        @_vr_lw + @position
-      else
-        @position
-      end)
-      sh=(@separatorheight/2).to_i
-      @_vr_lxs, at _vr_lxe = @_vr_lx+xs-sh, at _vr_lx+xs+sh
-      @_vr_lys, at _vr_lye = @_vr_ly, at _vr_ly+@_vr_lh
-      
-      if @pane1.is_a? Array then
-        @pane1.each{|i| i.move(@_vr_lx, at _vr_ly,xs-sh, at _vr_lh)}
-      elsif @pane1
-        @pane1.move(@_vr_lx, at _vr_ly,xs-sh, at _vr_lh)
-      end
-      if @pane2.is_a? Array
-        @pane2.each{|i| i.move(@_vr_lxs+ at separatorheight, at _vr_ly,
-           @_vr_lw-xs-sh, @_vr_lh)}
-      elsif @pane2
-        @pane2.move(@_vr_lxs+ at separatorheight, at _vr_ly, @_vr_lw-xs-sh, @_vr_lh)
-      end
-    end
-    
-    def _vr_draw_bevel(win)
-      return unless @_vr_lxs
-      win.dopaint do
-        @bevel[0].each_with_index{|cl,idx|
-          win.setPen(@bevel[0][idx],1)
-          win.grMoveTo(@_vr_lxe-idx-1, at _vr_lys+idx+1)
-          win.grLineTo(@_vr_lxs+idx, at _vr_lys+idx+1)
-          win.grLineTo(@_vr_lxs+idx, at _vr_lye-idx)
-          win.setPen(@bevel[1][idx],1)
-          win.grMoveTo(@_vr_lxs+idx, at _vr_ly+@_vr_lh-idx-1)
-          win.grLineTo(@_vr_lxe-idx-1, at _vr_lye-idx-1)
-          win.grLineTo(@_vr_lxe-idx-1, at _vr_lys+idx)
-        }
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmmedia.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmmedia.rb
deleted file mode 100644
index 92f5161..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrmmedia.rb
+++ /dev/null
@@ -1,287 +0,0 @@
-###################################
-#
-# vrmmedia.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-# Good Reference: vfw.h
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vrcontrol'
-require 'Win32API'
-
-=begin
-= VisualuRuby(tmp) modules for MCI
-=end
-
-
-#if RUBY_VERSION<"1.4.4" then   # Quick Hacking..
-#  require 'DLLManager'
-#  DLLManager.load("msvfw32.dll")
-#end
-
-MCIWndRegisterClass = Win32API.new("msvfw32","MCIWndRegisterClass",[],"I")
-MCIWndRegisterClass.call
-
-
-module VRMediaViewContainer
-=begin
-== VRMediaViewContainer
-This module provides a message handler for MCI messages.
-VRForm includes this module automatically loading "vrmmedia.rb".
-=end
-  include VRMessageHandler
-
-  def vrinit
-    super
-    mediaviewcontainerinit
-  end
-
-  def mediaviewcontainerinit
-    addHandler(VRMediaView::MCIWNDM_NOTIFYMODE,
-                       "mmnotifies",MSGTYPE::ARGPASS,nil)
-    addHandler(VRMediaView::MCIWNDM_NOTIFYERROR,
-                       "mmnotifies",MSGTYPE::ARGPASS,nil)
-    addHandler(VRMediaView::MCIWNDM_NOTIFYSIZE,
-                       "mmnotifies",MSGTYPE::ARGPASS,nil)
-    addHandler(VRMediaView::MCIWNDM_NOTIFYMEDIA,
-                       "mmnotifies",MSGTYPE::ARGPASS,nil)
-    acceptEvents [ VRMediaView::MCIWNDM_NOTIFYMODE,
-                   VRMediaView::MCIWNDM_NOTIFYSIZE,
-                   VRMediaView::MCIWNDM_NOTIFYMEDIA,
-                   VRMediaView::MCIWNDM_NOTIFYERROR  ]
-
-    addNoRelayMessages [ VRMediaView::MCIWNDM_NOTIFYMODE,
-                         VRMediaView::MCIWNDM_NOTIFYSIZE,
-                         VRMediaView::MCIWNDM_NOTIFYMEDIA,
-                         VRMediaView::MCIWNDM_NOTIFYERROR  ]
-  end
-
-  def self_mmnotifies(msg)
-    ct=@_vr_mediaviewers_hwnd[msg.wParam]
-    return unless ct
-    messageid=msg.msg
-
-    return unless ct._vr_mmhandlers and ct._vr_mmhandlers[messageid] 
-
-    ct._vr_mmhandlers[messageid].each do |shandler|
-      args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-      ct.__send__(shandler[0],*args) if ct.respond_to?(shandler[0])
-      msg.retval = controlmsg_dispatching(ct,shandler[0],*args)
-    end
-  end
-
-  def addControl(*args)
-    @_vr_mediaviewers_hwnd={} unless defined?(@_vr_mediaviewers_hwnd)
-    a=super
-    @_vr_mediaviewers_hwnd[a.hWnd]=a if a.is_a?(VRMediaView)
-    return a
-  end
-end
-
-module VRContainersSet
-  include VRMediaViewContainer
-  INITIALIZERS.push :mediaviewcontainerinit
-end
-
-
-#####
-
-module VRMediaViewModeNotifier
-  include VRMediaViewContainer
-
-=begin
-== VRMediaViewModeNotifier
-This module is to use another event handlers for mci.
-These new handlers are not relayed to parent by VRMessageParentRelayer.
-(Use setnotifier() as setnotifier("cname1_cname2))
-
-=== Methods
---- setnotifier(cname)
-    This enables ((<VRMediaView>))'s other event handlers such as cname_stopped,
-    cname_playing,cname_paused and cname_open, named after 
-    ((<VRMediaView>))#modestring.
-=end
-
-  def setnotifier(cname)
-    instance_eval(
-      "def "+cname+"_modechanged(n)\n" +
-      "  fname='#{cname}_'+@#{cname}.modestring(n) \n" +
-       " __send__(fname) if respond_to?(fname) \n" +
-      "end\n"
-    )
-  end
-end
-
-
-class VRMediaView < VRControl
-=begin
-== VRMediaView
-This is a control window to play multimedia files.
-
-=== Methods
---- mediaopen(filename,flag=0)
-    Open mediafile as filename.
---- mediaclose
-    Close mediafile.
---- mode
-    Return current mode number.
---- modestring(n)
-    Return description for mode number #n
---- errorstring
-    Return error description
---- play
---- pause
---- stop
---- eject
---- step(n=1)
---- seek(pos)
---- seekHome
---- seekEnd
---- playable?
---- ejectable?
---- window?
---- length
---- position
---- volume
---- volume=(vl)
---- speed
---- speed=
---- zoom
---- zoom=
-
-=== Event Handlers
---- ????_onerror()
---- ????_modechanged(newmode)
---- ????_sizechanged()
---- ????_mediachanged(str)
-=end
-
-
-  attr_reader :_vr_mmhandlers
-
-  MCI_CLOSE = 0x0804
-  MCI_PLAY  = 0x0806
-  MCI_SEEK  = 0x0807
-  MCI_STOP  = 0x0808
-  MCI_PAUSE = 0x0809
-  MCI_STEP  = 0x080E
-
-  MCIWNDM_GETPOSITION  = (WMsg::WM_USER + 102)    # A message
-  MCIWNDM_GETLENGTH    = (WMsg::WM_USER + 104)
-  MCIWNDM_GETMODE      = (WMsg::WM_USER + 106)    # A message
-  MCIWNDM_EJECT        = (WMsg::WM_USER + 107)
-  MCIWNDM_SETZOOM      = (WMsg::WM_USER + 108)
-  MCIWNDM_GETZOOM      = (WMsg::WM_USER + 109)
-  MCIWNDM_SETVOLUME    = (WMsg::WM_USER + 110)
-  MCIWNDM_GETVOLUME    = (WMsg::WM_USER + 111)
-  MCIWNDM_SETSPEED     = (WMsg::WM_USER + 112)
-  MCIWNDM_GETSPEED     = (WMsg::WM_USER + 113)
-
-  MCIWNDM_GETERROR     = (WMsg::WM_USER + 128)    # A message
-
-  MCIWNDM_CAN_PLAY     = (WMsg::WM_USER + 144)
-  MCIWNDM_CAN_WINDOW   = (WMsg::WM_USER + 145)
-  MCIWNDM_CAN_EJECT    = (WMsg::WM_USER + 148)
-  MCIWNDM_CAN_CONFIG   = (WMsg::WM_USER + 149)
-  MCIWNDM_SETOWNER     = (WMsg::WM_USER + 152)
-  MCIWNDM_OPEN         = (WMsg::WM_USER + 153)    # A message
-
-  MCIWNDM_NOTIFYMODE   = (WMsg::WM_USER + 200)  # wparam = hwnd, lparam = mode
-  MCIWNDM_NOTIFYSIZE   = (WMsg::WM_USER + 202)  # wparam = hwnd
-  MCIWNDM_NOTIFYMEDIA  = (WMsg::WM_USER + 203)  # wparam = hwnd, lparam = fn
-  MCIWNDM_NOTIFYERROR  = (WMsg::WM_USER + 205)  # wparam = hwnd, lparam = error
-
-  MCIWNDF_NOPLAYBAR       = 0x0002
-  MCIWNDF_NOAUTOSIZEMOVIE = 0x0004
-  MCIWNDF_NOMENU          = 0x0008
-
-  MCIWNDF_SIMPLE          = 0xe
-
-  WINCLASSINFO = ["MCIWndClass",0x5500 | 0x400 | 0x880 ] 
-                                  #notify:mode,error,size,media
-
-  def addMMHandler(msg,handlername,handlertype,argparsestr)
-    @_vr_mmhandlers={} unless defined? @_vr_mmhandlers
-    @_vr_mmhandlers[msg]=[] unless @_vr_mmhandlers[msg]
-    @_vr_mmhandlers[msg].push [handlername,handlertype,argparsestr]
-  end
-
-  def deleteMMHandler(msg,handlername)
-    return false unless defined?(@_vr_mmhandlers) and @_vr_mmhandlers[msg]
-    @_vr_mmhandlers.delete_if do |shandler|
-      shandler[0] != (PREHANDLERSTR+handlername).intern
-    end
-  end
-
-  def vrinit
-    super
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYERROR,"onerror",MSGTYPE::ARGINT,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMODE,"modechanged",MSGTYPE::ARGINT,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYSIZE, "sizechanged",MSGTYPE::ARGNONE,nil)
-    addMMHandler(VRMediaView::MCIWNDM_NOTIFYMEDIA,"mediachanged",MSGTYPE::ARGSTRING,nil)
-  end
-
-  def mediaopen(filename,flag=0)
-    sendMessage  MCIWNDM_OPEN,flag,filename
-    sendMessage  MCIWNDM_SETOWNER, at parent.hWnd,0
-  end
-
-  def play()         sendMessage MCI_PLAY,0,0 end
-  def pause()        sendMessage MCI_PAUSE,0,0 end
-  def stop()         sendMessage MCI_STOP,0,0 end
-  def mediaclose()   sendMessage MCI_CLOSE,0,0 end
-  def eject()        sendMessage MCI_EJECT,0,0 end
-  def step(n=1)      sendMessage MCI_STEP,0,n.to_i end
-  def seek(pos)      sendMessage MCI_SEEK,0,pos.to_i end
-  def seekHome()     sendMessage MCI_SEEK,0,-1 end
-  def seekEnd()      sendMessage MCI_SEEK,0,-2 end
-
-  def playable?()    sendMessage(MCIWNDM_CAN_PLAY,0,0)!=0 end
-  def ejectable?()   sendMessage(MCIWNDM_CAN_EJECT,0,0)!=0 end
-  def window?()      sendMessage(MCIWNDM_CAN_WINDOW,0,0)!=0 end
-
-  def length()       sendMessage MCIWNDM_GETLENGTH,0,0 end
-  def position()     sendMessage MCI_SEEK,0,0 end
-  
-  def volume=(vl)    sendMessage MCIWNDM_SETVOLUME,0,vl.to_i end
-  def volume()       sendMessage MCIWNDM_GETVOLUME,0,0 end
-  def speed=(sp)     sendMessage MCIWNDM_SETSPEED,0,sp.to_i end
-  def speed()        sendMessage MCIWNDM_GETSPEED,0,0 end
-  def zoom=(zm)      sendMessage MCIWNDM_SETZOOM,0,zm.to_i end
-  def zoom()         sendMessage MCIWNDM_GETZOOM,0,0 end
-  
-  def mode
-    p="\0                               "  #32bytes
-    sendMessage MCIWNDM_GETMODE,31,p
-    p
-  end
-  
-  def modestring(n)
-    case n
-      when 524; "not_ready"
-      when 525; "stopped"
-      when 526; "playing"
-      when 527; "recording"
-      when 528; "seeking"
-      when 529; "paused"
-      when 530; "open"
-      else;     "unknown_mode"
-    end
-  end
-  
-  def errorstring
-    p="\0                               "*8  #256bytes
-    sendMessage MCIWNDM_GETERROR,255,p
-    p
-  end
-  
-end
-
-if VR_COMPATIBILITY_LEVEL then
-  require VR_DIR + 'compat/vrmmedia.rb'
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrolednd.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrolednd.rb
deleted file mode 100644
index d85852d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrolednd.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-###################################
-#
-# vrolednd.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2002-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'sysmod'
-require VR_DIR+'dragdropformat'
-
-module OleDnDConstants
-  IDROPTARGET_NOTIFY_DRAGENTER=0
-  IDROPTARGET_NOTIFY_DRAGOVER=1
-  IDROPTARGET_NOTIFY_DRAGLEAVE=2
-  IDROPTARGET_NOTIFY_DROP=3
-
-  DROPEFFECT_NONE=0
-  DROPEFFECT_COPY=1
-  DROPEFFECT_MOVE=2
-  DROPEFFECT_LINK=4
-end
-
-
-module VROleDropTarget
-=begin
-== VROleDropTarget
-   A module for OLE drop target.
-   Include this module to make a window as an ole drop target.
-=== Instance Variables
---- vr_oledropmessage
-    Message ID to notify OLE drag-and-drop matter.
-=== Methods
---- start_oledroptarget(formats)
-    Starts the window as OLE drop target.
-    ((|formats|)) is an array of acceptable formats (CF_TEXT, and so on).
-
-=== Event handlers
---- self_oledragenter(format,keystate)
-    This notifies entering OLE drag on the window.
-    This method must return ((|Effects|)). The default effect is DROPEFFECT_COPY.
---- self_oledragover(keystate)
-    This notifies OLE dragging cursor is moving on the window.
-    This method must return ((|Effects|)) or ((|nil|)). 
-    ((|nil|)) means "same as before". The default effect is ((|nil|)).
---- self_oledragleave
-    This notifies leaving OLE drag cursor.
---- self_oledrop(handle,format,keystate)
-    This notifies the item is dropped. Global heap handle of ((|handle|)) 
-    containing the contents of dropped object. 
-    When the object is multi-formattedformat, it's in the first format that 
-    appears in the argument array of start_oledroptarget() .
-=end
-
-  include ClipboardFormat
-  include OleDnDConstants
-  include VRUserMessageUseable
-
-  IDROPTARGET_NOTIFY = "IIIIII"  #*ppt,dwEffect,grfKeyState,cfFormat,hMem,*data
-
-  def vrinit
-    super
-    oledroptargetinit
-  end
-
-  def oledroptargetinit
-    @vr_oledropmessage = registerUserMessage(ReservedMsg::WM_VR_OLEDND,"vr_olednd",0)
-    addEvent @vr_oledropmessage
-  end
-
-  def start_oledroptarget(formats)
-    self.dndTargetStart( @vr_oledropmessage ,formats )
-  end
-
-  def self_vr_olednd(wparam,lparam)
-    notify = @screen.application.cstruct2array(lparam,IDROPTARGET_NOTIFY)
-    @vr_olednd_notify=notify
-    case wparam
-    when IDROPTARGET_NOTIFY_DRAGENTER
-        if notify[3]==0 then
-          @screen.application.pokeMemory(lparam+4,0,4) # effect none
-          return
-        end
-        r = selfmsg_dispatching("oledragenter",notify[3],notify[2]).to_i
-        @screen.application.pokeMemory(lparam+4,r,4) # effect r
-    when IDROPTARGET_NOTIFY_DRAGOVER
-        r = selfmsg_dispatching("oledragover",notify[2]) 
-        if r then
-          r = r.to_i
-          @screen.application.pokeMemory(lparam+4,r,4) # effect r
-        end
-    when IDROPTARGET_NOTIFY_DRAGLEAVE
-        selfmsg_dispatching("oledragleave")
-    when IDROPTARGET_NOTIFY_DROP
-        return if notify[3]==0
-#        selfmsg_dispatching("oledropraw",dataobj,notify[2])
-        selfmsg_dispatching("oledrop",notify[4],notify[3],notify[2])
-    end
-    @vr_olednd_notify=nil
-  end
-
-  def self_oledragenter(format,keystate)
-    DROPEFFECT_COPY
-  end
-
-  def self_oledragover(keystate)
-    nil
-  end
-
-  def self_oledragleave
-  end
-
-  def self_oledrop(handle,format,keystate)
-  end
-end
-
-
-module VROleDragSourceLow
-=begin
-== VROleDragSourceLow
-   A module for OLE drag source. (low level)
-
-=== Methods
---- start_oledragsource(formats,effect= DROPEFFECT_COPY|DROPEFFECT_MOVE)
-    Starts OLE Drag Drop. The dragged object is in the formats of ((|formats|)).
-    Acceptable effects is to be set for ((|effect|)).
-
-=== Event handlers
---- self_getoledragitem(format)
-    Fired when DropTarget requires the dragged data in the ((|format|))
-    This method must return the Global heap handle containing the dragged object.
-    If the handle is not available, return 0.
-=end
-
-  include ClipboardFormat
-  include OleDnDConstants
-  include VRUserMessageUseable
-  
-  def vrinit
-    super
-    oledragsourcelowinit
-  end
-  
-  def oledragsourcelowinit
-    @vr_oledragmessage = registerUserMessage(ReservedMsg::WM_VR_OLEDND,"vr_oledrag",0)
-    addEvent @vr_oledragmessage
-  end
-
-  def set_dragobj_lparam(lparam,hMem)
-    @screen.application.pokeMemory(lparam,hMem,4)
-  end
-
-  def start_oledragsource(formats,effect=0x3)
-    dndSourceStart @vr_oledragmessage,formats,effect
-  end
-
-  def self_vr_oledrag(wparam,lparam)
-    handle = selfmsg_dispatching("getoledragitem",wparam).to_i
-    set_dragobj_lparam(lparam,handle)
-  end
-
-  def self_getoledragitem(format)
-    0
-  end
-
-end
-
-module VROleDragSource
-  include VROleDragSourceLow
-
-  def start_oledrag(objs,effect=0x3)
-    @_vr_draghash={}
-    formats = []
-    objs.each do |o| 
-      formats.push o.objectformat 
-      @_vr_draghash[o.objectformat] = o
-    end
-    start_oledragsource(formats,effect)
-  end
-
-  def self_getoledragitem(format)
-    return 0 unless @_vr_draghash
-
-    ddobj = @_vr_draghash[format]
-
-    if ddobj then ddobj.handle else 0 end
-  end
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrowndraw.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrowndraw.rb
deleted file mode 100644
index c075e41..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrowndraw.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-###################################
-#
-# vrowndraw.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vrcontrol'
-
-module WMsg
-  WM_DRAWITEM = 0x002B
-end
-
-module VROwnerDrawControlContainer
-=begin
-== VROwnerDrawControlContainer
-This module provides a message handler for WM_DRAWITEM.
-VRForm includes this module automatically loading "vrowndraw.rb".
-=end
-
-  include VRMessageHandler
-
-  HANDLERNAME="ownerdraw"
-
-  def ownerdrawinit
-    addHandler(WMsg::WM_DRAWITEM,"vrwmdrawitem",
-               MSGTYPE::ARGINTSTRUCT,"UUUUUUUUUUUU")
-    addEvent WMsg::WM_DRAWITEM
-    addNoRelayMessages [WMsg::WM_DRAWITEM]
-  end
-  
-  def vrinit
-    super
-    ownerdrawinit
-  end
-  
-  def self_vrwmdrawitem(wParam,args)
-    id=LOWORD(wParam)
-    ct=@controls[id]       # Activated Control
-
-    return unless ct  # can't find?
-    r=0
-    ct.dopaint(args[6]) do
-      if ct.respond_to?(HANDLERNAME)
-        r=ct.__send__(HANDLERNAME,*args[2..11]) 
-      end
-    end
-    SKIP_DEFAULTHANDLER[r]
-  end
-end
-
-module VRContainersSet
-  include VROwnerDrawControlContainer
-end
-
-
-
-class VROwnerDrawButton < VRButton
-=begin
-== VROwnerDrawButton
-Owner draw button.
-This is just a button but the system doesn't draw button faces.
-It's necessary to draw button face manually.
-
-=== Required methods
-In these method, it doesn't need to call ((*dopaint*)).
-
---- drawpushed(left,top,right,bottom,state)
-    Draws the pushed button face.
---- drawreleased(left,top,right,bottom,state)
-    Draws the released button face.
---- drawfocused(left,top,right,bottom,state)
-    Draws the focused button face. 
-    This method is fired after drawpushed or drawreleased.
-=end
-
-  BS_OWNERDRAW = 0x0000000B
-  WINCLASSINFO = ["BUTTON", BS_OWNERDRAW]
-
-  def ownerdraw(iid,action,state,hwnd,hdc,left,top,right,bottom,data)
-    self.opaque=false
-    if (pushed = ((state & 1)>0) ) then
-      drawpushed(left,top,right,bottom,state)
-      @parent.controlmsg_dispatching(self,
-          "drawpushed",left,top,right,bottom,state)
-    else
-      drawreleased(left,top,right,bottom,state)
-      @parent.controlmsg_dispatching(self,
-          "drawreleased",left,top,right,bottom,state)
-    end
-    
-    if (state & 0x10)>0 then
-      drawfocused(left,top,right,bottom,state)
-      @parent.controlmsg_dispatching(self,
-          "drawfocused",left,top,right,bottom,state)
-    end
-  end
-
-  def drawpushed(left,top,right,bottom,state) end
-  def drawreleased(left,top,right,bottom,state) end
-  def drawfocused(left,top,right,bottom,state) end
-end
-
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrrichedit.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrrichedit.rb
deleted file mode 100644
index e74fbbb..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrrichedit.rb
+++ /dev/null
@@ -1,364 +0,0 @@
-###################################
-#
-# vrrichedit.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vrcontrol'
-require VR_DIR+'rscutil'
-require 'Win32API'
-
-module WMsg
-  EM_EXGETSEL      = WM_USER+52
-  EM_EXLINEFROMCHAR= WM_USER+54
-  EM_EXSETSEL      = WM_USER+55
-  EM_GETCHARFORMAT = WM_USER+58
-  EM_GETEVENTMASK  = WM_USER+59
-  EM_GETPARAFORMAT = WM_USER+61
-  EM_SETBKGNDCOLOR = WM_USER+67
-  EM_SETCHARFORMAT = WM_USER+68
-  EM_SETEVENTMASK  = WM_USER+69
-  EM_SETPARAFORMAT = WM_USER+71
-  EM_FINDTEXTEX    = WM_USER+79
-  EM_SETLANGOPTIONS= WM_USER+120
-end
-
-
-class VRRichedit < VRText
-=begin
-== VRRichedit
-This class represents RichEdit Control.
-The parent class is VRText and this also has the same methods and event handlers.
-
-=== Overwritten Methods
-These methods are overwritten to support over64k texts.
---- getSel
---- setSel(st,en,noscroll=0)
---- char2line(ptr)
-
-=== Methods
---- setTextFont(fontface,height=280,area=SCF_SELECTION)
-    Sets the text font. ((|area|)) parameter limits the changed area.
---- getTextFont(selarea=true)
-    Gets the text font and its size of the area. 
-    If selarea is true, the area is the selected area and the other case, 
-    it means the default font.
---- setTextColor(col,area=SCF_SELECTION)
-    Sets the color of the text in the area.
---- getTextColor(selarea=true)
-    Gets the text color in the area which is same as ((<getTextFont>)).
---- setBold(flag=true,area=SCF_SELECTION)
-    Sets or resets the text style into BOLD.
-    When ((|flag|)) is true, the text is set to bold style.
---- setItalic(flag=true,area=SCF_SELECTION)
-    Sets or resets the text style into ITALIC.
---- setUnderlined(flag=true,area=SCF_SELECTION)
-    Sets or resets the text style into UNDERLINED.
---- setStriked(flag=true,area=SCF_SELECTION)
-    Sets or resets the text style into STRIKE_OUT.
---- bold?(selarea=true)
-    Inspects whether the text style in the area is bold or not.
-    If ((|selarea|)) is true, the area is selected area.
---- italic?(selarea=true)
-    Inspects whether the text style in the area is italic or not.
---- underlined?(selarea=true)
-    Inspects whether the text style in the area is underlined or not.
---- striked?(selarea=true)
-    Inspects whether the text style in the area is striked out or not.
---- setAlignment(align)
-    Sets text alignment of current paragraph. ((|align|)) can be PFA_LEFT,
-    PFA_RIGHT or PFA_CENTER of VRRichedit constansts.
---- bkcolor=(color)
-    Sets the background color of the control.
---- selformat(area=SCF_SELECTION)
-    Gets the text format in ((|area|)). The return value is an instance of 
-    FontStruct defined in rscutil.rb.
---- selformat=(format)
-    Set the text format in the selected area. ((|format|)) must be an instance
-    of FontStruct.
---- charFromPos(x,y)
-    retrieves information about the character closest to a specified point
-    in the client area.
-    ((x)) is the horizontal coordinate. ((y)) is the vertical coordinate.
-    the return value specifies character index by Fixnum.
---- charLineFromPos(x,y)
-    retrieves information about the character closest to a specified point
-    in the client area.
-    ((x)) is the horizontal coordinate. ((y)) is the vertical coordinate.
-    the return value specifies character index and line index by Array.
-    first item means character index. second item means line index.
-=end
-
-  CFM_BOLD      = 0x00000001
-  CFM_ITALIC    = 0x00000002
-  CFM_UNDERLINE = 0x00000004
-  CFM_STRIKEOUT = 0x00000008
-  CFM_PROTECTED = 0x00000010
-  CFM_LINK      = 0x00000020
-  CFM_SIZE      = 0x80000000
-  CFM_COLOR     = 0x40000000
-  CFM_FACE      = 0x20000000
-  CFM_OFFSET    = 0x10000000
-  CFM_CHARSET   = 0x08000000
-
-  CFE_BOLD      = 0x0001
-  CFE_ITALIC    = 0x0002
-  CFE_UNDERLINE = 0x0004
-  CFE_STRIKEOUT = 0x0008
-  CFE_PROTECTED = 0x0010
-  CFE_LINK      = 0x0020
-  CFE_AUTOCOLOR = 0x40000000
-
-  SCF_SELECTION = 0x0001
-  SCF_WORD      = 0x0002
-  SCF_DEFAULT   = 0x0000
-  SCF_ALL       = 0x0004     # not valid with SCF_SELECTION or SCF_WORD
-  SCF_USEUIRULES= 0x0008
-
-  PFA_LEFT  = 0x0001
-  PFA_RIGHT = 0x0002
-  PFA_CENTER= 0x0003
-  PFM_STARTINDENT = 0x00000001
-  PFM_RIGHTINDENT = 0x00000002
-  PFM_OFFSET      = 0x00000004
-  PFM_ALIGNMENT   = 0x00000008
-  PFM_TABSTOPS    = 0x00000010
-  PFM_NUMBERING   = 0x00000020
-  PFM_OFFSETINDENT= 0x80000000
-
-  module EventMaskConsts
-    ENM_CHANGE = 0x00000001
-    ENM_UPDATE = 0x00000002
-    ENM_SCROLL = 0x00000004
-  end
-
-  class EventMask < Flags
-    CONSTMOD=EventMaskConsts
-   private
-    def integer_getter
-      @win.sendMessage WMsg::EM_GETEVENTMASK,0,0
-    end
-
-    def integer_setter(f)
-      @win.sendMessage WMsg::EM_SETEVENTMASK,0,f
-    end
-  end
-
-  CHARFORMATSIZE=60
-  MAX_TAB_STOPS=32
-  DEFAULTTABS=[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76]
-
- private
-  loadlib = Win32API.new("kernel32","LoadLibrary",["P"],"I")
-
-  libhandle = 0
-
-=begin oop
-#This causes GeneralProtectionViolation maybe for the late of RichEdit releasing.
-  freelib = Win32API.new("kernel32","FreeLibrary",["I"],"")
-  at_exit {
-    freelib.call(libhandle)  
-  }
-=end
-
-  def textlength
-    sendMessage WMsg::WM_GETTEXTLENGTH,0,0
-  end
-
-  # ooooops !
-  if (libhandle=loadlib.call("riched20"))!=0 then
-    RICHVERSION=2
-    def self.Controltype()
-      ["RICHEDIT20A",WStyle::ES_MULTILINE|WStyle::WS_VSCROLL,0x200]#EX_CLIENTEDGE
-    end
-  elsif (libhandle=loadlib.call("riched32"))!=0 then
-    RICHVERSION=1
-    def self.Controltype()
-      ["RICHEDIT",WStyle::ES_MULTILINE|WStyle::WS_VSCROLL,0x200] #EX_CLIENTEDGE
-    end
-  else
-    raise "no richedit control found"
-  end
-
-
- public
-
-  def richeditinit
-    sendMessage WMsg::EM_SETLANGOPTIONS,0,0
-    eventmask.enm_change=true
-  end
-
-  def vrinit
-    super
-    richeditinit
-  end
-
-  def text
-    len=textlength+1
-    buffer = "\0"*len
-    sendMessage WMsg::WM_GETTEXT,len,buffer
-    buffer[0..-2].gsub(/\r\n/,$/)
-  end
-
- # parameter order is not the same of the return value of getcharformat()
-  def setcharformat(area,effects,col=0,mask=0xf800003f,
-                   font="System",height=280,off=0,pf=2,charset=128)
-    buffer = [CHARFORMATSIZE,mask,effects,
-              height,off,col,charset,pf].pack("LLLLLLCC")
-    buffer += font.to_s + "\0"
-    buffer += "\0"*(CHARFORMATSIZE-buffer.length)
-    sendMessage(WMsg::EM_SETCHARFORMAT,area,buffer)
-  end
-
-  def getcharformat(mask=0xf800003f,selectionarea=true)
-    buffer = [CHARFORMATSIZE,0,0,0,0,0].pack("LLLLLL")
-    buffer += "\0"* (CHARFORMATSIZE-buffer.length)
-    f = (selectionarea)? 1 : 0
-    sendMessage WMsg::EM_GETCHARFORMAT,f,buffer
-    return buffer.unpack("LLLLLLCC") << buffer[26..-2].delete("\0")
-  end
-
-  def getparaformat
-    size=4*7+4*MAX_TAB_STOPS
-    buffer = ([size]+Array.new(39,0)).pack("LLLLLLSSL*")
-    sendMessage WMsg::EM_GETPARAFORMAT,0,buffer
-    return buffer.unpack("LLLLLLSSL*")
-  end
-
-  def setparaformat(mask=0x8000003f,numbering=false,startindent=0,rightindent=0, offset=0,align=PFA_LEFT,tabstops=DEFAULTTABS)
-    fNumber= if numbering then 1 else 0 end
-    size=4*7+4*tabstops.size
-    tabcount = (tabstops.size>MAX_TAB_STOPS)? MAX_TAB_STOPS : tabstops.size
-    buffer = [
-      size,mask,fNumber,startindent,rightindent,offset,align,tabcount
-    ].pack("LLLLLLSS")
-    buffer += (tabstops + Array.new(32-tabcount,0)).pack("L*")
-    sendMessage WMsg::EM_SETPARAFORMAT,0,buffer
-  end
-
-## ## ## ##
-  def getSel
-    charrange = [0,0].pack("LL")
-    sendMessage WMsg::EM_EXGETSEL,0,charrange
-    return charrange.unpack("LL")
-  end
-  def setSel(st,en,noscroll=0)
-    charrange = [st,en].pack("LL")
-    r=sendMessage WMsg::EM_EXSETSEL,0,charrange
-    if(noscroll!=0 && noscroll) then
-      scrolltocaret
-    end
-    return r
-  end
-  def char2line(pt)
-    sendMessage WMsg::EM_EXLINEFROMCHAR,0,pt
-  end
-
-  def setTextFont(fontface,height=280,area=SCF_SELECTION)
-    setcharformat(area,0,0,CFM_FACE|CFM_SIZE,fontface,height)
-  end
-  def getTextFont(selarea=true)
-    r=getcharformat(CFM_FACE|CFM_SIZE,selarea)
-    return r[3],r[8]
-  end
-
-  def setTextColor(col,area=SCF_SELECTION)
-    setcharformat(area,0,col,CFM_COLOR)
-  end
-  def getTextColor(selarea=true)
-    getcharformat(CFM_COLOR,selarea)[5]
-  end
-
-  def setBold(flag=true,area=SCF_SELECTION)
-    f = (flag)? CFE_BOLD : 0
-    setcharformat(area,f,0,CFM_BOLD)
-  end
-
-  def setItalic(flag=true,area=SCF_SELECTION)
-    f = (flag)? CFE_ITALIC : 0
-    setcharformat(area,f,0,CFM_ITALIC)
-  end
-
-  def setUnderlined(flag=true,area=SCF_SELECTION)
-    f = (flag)? CFE_UNDERLINE : 0
-    setcharformat(area,f,0,CFM_UNDERLINE)
-  end
-
-  def setStriked(flag=true,area=SCF_SELECTION)
-    f = (flag)? CFE_STRIKEOUT : 0
-    setcharformat(area,f,0,CFM_STRIKEOUT)
-  end
-
-  def bold?(selarea=true)
-    r=getcharformat(CFM_BOLD,selarea)[2]
-    if (r&CFE_BOLD)==0 then false else true end
-  end
-  def italic?(selarea=true)
-    r=getcharformat(CFM_ITALIC,selarea)[2]
-    if (r&CFE_ITALIC)==0 then false else true end
-  end
-  def underlined?(selarea=true)
-    r=getcharformat(CFM_UNDERLINE,selarea)[2]
-    if (r&CFE_UNDERLINE)==0 then false else true end
-  end
-  def striked?(selarea=true)
-    r=getcharformat(CFM_STRIKEOUT,selarea)[2]
-    if (r&CFE_STRIKEOUT)==0 then false else true end
-  end
-
-  def getAlignment
-    return self.getparaformat[6]
-  end
-
-  def setAlignment(align)
-    setparaformat(PFM_ALIGNMENT,false,0,0,0,align)
-  end
-
-  def selformat=(f)
-    raise "format must be an instance of FontStruct" unless f.is_a?(FontStruct)
-    effects = f.style*2 + if f.weight>400 then 1 else 0 end
-    height = if f.height>0 then f.height else f.point*2 end
-    offset=0
-    setcharformat SCF_SELECTION,effects,f.color,0xf800003f,f.fontface,height,
-                  offset,f.pitch_family,f.charset
-    f
-  end
-
-  def selformat(option=SCF_SELECTION)
-    r=getcharformat(option)
-    weight = if (r[2] & 1)>0 then 600 else 300 end
-    style = (r[2]/2) & 0xf  #mask 
-    width = r[3]/2          # tekitou....
-    point = r[3]/2
-    FontStruct.new2([r[8],r[3],style,weight,width,0,0,r[7],r[6]],point,r[5])
-  end
-
-  def bkcolor=(col)
-    if col then
-      sendMessage WMsg::EM_SETBKGNDCOLOR,0,col.to_i
-    else
-      sendMessage WMsg::EM_SETBKGNDCOLOR,1,0
-    end
-  end
-
-  def eventmask
-    EventMask.new(self)
-  end
-
-  def charFromPos(x,y)   # Thanks to yas
-    return sendMessage( 0x00D7,0,[x,y].pack('ll'))  #EM_CHARFROMPOS
-  end
-
-  def charLineFromPos(x,y)
-    pos=charFromPos(x,y)
-    ln=char2line(pos)
-    return [pos,ln]
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtimer.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtimer.rb
deleted file mode 100644
index 8a9e16c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtimer.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-###################################
-#
-# vrtimer.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require "Win32API"
-
-=begin
-= VisualuRuby(tmp) Module(s) for Timer
-<<<handlers.rd
-=end
-
-
-
-module VRTimerFeasible
-=begin
-== VRTimerFeasible
-Interval Timers.
-This module prepares create/delete interval timers.
-
-=== Methods
---- addTimer(interval=1000,timername="self")
-    Creates an interval timer whose name is defined by ((|timername|)).
-    Interval timers invoke ((|timername|))_timer method every interval times 
-    in millisecond.
-
---- deleteTimer(timername="self")
-    Deletes an interval timer whose name is ((|timername|))
-
---- timeralive?(timername="self")
-    Returns boolean whether timer is alive or not.
-
-=== Event handler
---- ????_timer
-    Fired every interval times by the interval timer.
-=end
-
-
-  include VRMessageHandler
-
-  SetTimer  = Win32API.new("USER32", "SetTimer",['L', 'I', 'I', 'L'], 'I')
-  KillTimer = Win32API.new("USER32", "KillTimer",['L', 'L'], 'I')
-  WM_TIMER = 275
-
- private
-
-  def newtimerid
-    @_vr_timernextid=0 unless defined? @_vr_timernextid
-    @_vr_timernextid+=1
-  end
-
- public
- 
-  def self_vrtimer(id)       # WM_TIMER handler
-    name=@_vr_timers[id][0].dup
-    class << name
-      def name; self; end
-    end
-#    name += "_"+"timer"
-#    selfmsg_dispatching(name)
-    controlmsg_dispatching(name,"timer")
-#
-    __send__(name) if respond_to?(name)
-  end
-
- def vrinit
-    super
-    timerfeasibleinit
-  end
-
-  def timerfeasibleinit
-    @_vr_timerinterval=1000
-    addHandler WM_TIMER,  "vrtimer",  MSGTYPE::ARGWINT,nil  #check
-    addEvent WM_TIMER
-    addNoRelayMessages [WM_TIMER]
-  end
-
-  def addTimer(interval=1000,timername="self")
-    id=newtimerid
-    SetTimer.call(self.hWnd,id,interval,0)
-    @_vr_timers=[] unless defined? @_vr_timers
-    @_vr_timers[id] = [timername,interval]
-    id
-  end
-
-  def deleteTimer(timername="self")
-    id=timerid(timername)
-
-   if id then
-      KillTimer.call(self.hWnd,id)
-      @_vr_timers[id]=nil
-    else
-      raise RuntimeError,"No such Timer"
-    end
-  end
-  
-  def timerid(timername="self")
-    return nil unless @_vr_timers
-    r=nil
-    1.upto(@_vr_timers.size-1) do |i|
-      if @_vr_timers[i] and @_vr_timers[i][0]==timername then
-        r=i
-      end
-    end
-    r
-  end
-
-  def timeralive?(tname="self")
-    timerid(tname).is_a?(Integer)
-  end
-end
-
-=begin sample
-require 'vrcontrol'
-module Test
-  include VRTimerFeasible
-
-  def construct
-    self.caption="test"
-    go=addControl VRButton,"delete","delete",10,10,100,20
-    addTimer 1000,"t1"
-    addTimer 1200,"t2"
-  end
-
-  def t1_timer
-    p "t1"
-  end
-  def t2_timer
-    print timeralive?("t1") ,":", timeralive?("t2"),"\n"
-  end
-
-  def delete_clicked
-    deleteTimer "t1"
-  end
-
-end
-
-VRLocalScreen.showForm(Test)
-VRLocalScreen.messageloop
-=end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtooltip.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtooltip.rb
deleted file mode 100644
index 244074a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtooltip.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-###################################
-#
-# vrtooltip.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2001-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-module WMsg
-  TTM_ACTIVATE       = WM_USER + 1
-  TTM_SETDELAYTIME   = WM_USER + 3
-  TTM_ADDTOOL        = WM_USER + 4
-  TTM_DELTOOL        = WM_USER + 5
-  TTM_RELAYEVENT     = WM_USER + 7
-  TTM_GETTOOLINFO    = WM_USER + 8
-  TTM_SETTOOLINFO    = WM_USER + 9
-  TTM_GETTEXT        = WM_USER + 11
-  TTM_GETTOOLCOUNT   = WM_USER + 13
-  TTM_TRACKACTIVATE  = WM_USER + 17
-  TTM_TRACKPOSITION  = WM_USER + 18
-  TTM_SETTIPBKCOLOR  = WM_USER + 19
-  TTM_SETTIPTEXTCOLOR= WM_USER + 20
-  TTM_GETDELAYTIME   = WM_USER + 21
-  TTM_GETTIPBKCOLOR  = WM_USER + 22
-  TTM_GETTIPTEXTCOLOR= WM_USER + 23
-  TTM_SETMAXTIPWIDTH = WM_USER + 24
-  TTM_GETMAXTIPWIDTH = WM_USER + 25
-
-  TTN_NEEDTEXT   = 0x100000000-520 
-  TTN_SHOW       = 0x100000000-521 
-  TTN_POP        = 0x100000000-522 
-end
-
-module WConst
-  TTF_IDISHWND   = 1
-  TTF_CENTERTIP  = 2
-  TTF_SUBCLASS   = 16
-end
-
-module WStruct
-  TOOLINFO = "IILLllllLp"
-end
-
-class VRTooltip < SWin::Window
-=begin
-== VRTooltip
-This is a class for Tooltip window.
-Tooltip windows are created by VRForm.createTooltip()
-
-=== Methods
---- addTool(cntl,text)
-    Assigns a tooltip text for ((|cntl|)).
-    Returns a tooltip identifier.
---- addToolArea([sx,sy,ex,ey],text,wnd=parent)
-    Assigns a tooltip text for the area in the parent window.
-    ((|sx|)) and ((|sy|)) indicate left-top corner,
-     and ((|ex|)) and ((|ey|)) indicate right-bottom corner.
-    Returns a tooltip identifier.
---- delTool(idf)
-    Deletes a tool identified by ((|idf|)) returned by addTool or addToolArea
---- enumTool
-    Yields all tool identifiers.
---- maxtipwidth
---- maxtipwidth=(mw)
-    About the tooltip width. 
-    If you are to use multiline tooltip, set this parameter.
---- autopopTime
---- autopopTime=
-    Sets/Gets time length that tooltip remains visible.
---- initialTime
---- initialTime=
-    Sets/Gets time length that the pointer must remain stationary.
---- reshowTime
---- reshowTime=
-    Sets/Gets time length to reshow another tool's tooltip.
-
---- bkColor
---- bkColor=
-    Sets/Gets background color of tooltip window
-
---- textColor
---- textColor=
-    Sets/Gets text color of tooltip window
-    
---- activate=(f)
-    ((|f|)) is boolean. This activates/deactivates the tooltip.
-=end
-
-  class VRTooltipTool
-    attr_reader :hwnd, :uid, :tool
-    def initialize(hwnd,uid,tool)
-      @hwnd, at uid, at tool = hwnd,uid,tool
-    end
-  end
-
-private
-  def initialize
-    self.classname = "tooltips_class32"
-    self.style=1
-    self.exstyle= WExStyle::WS_EX_TOPMOST | WExStyle::WS_EX_TOOLWINDOW
-    @_vr_tools={}
-  end
-
-  def classcheck(cls,obj)
-    (eval("defined?(#{cls})") and obj.is_a?(eval(cls)))
-  end
-
-  def createTIPTOOLCore(wnd=@parent)
-    size=4*10
-    flag=WConst::TTF_SUBCLASS
-    hwnd=wnd.hWnd
-    uid= sx= sy= ex= ey= 0
-    hinst=@screen.application.hInstance
-    text=""
-    [size,flag,hwnd,uid,sx,sy,ex,ey,hinst,text]
-  end
-
-  def addToolCore(ti)
-    tis=ti.pack(WStruct::TOOLINFO)
-    sendMessage WMsg::TTM_ADDTOOL,0,tis
-  end
-
-  def getTOOLINFOCore(hwnd,uid)
-    ti=createTIPTOOLCore
-    ti[2]=hwnd
-    ti[3]=uid
-    ti[9] = "\0\0\0\0" * (1024/4+1)   # /* Thanks, Wayne Vucenic */
-    tis = ti.pack(WStruct::TOOLINFO)
-    sendMessage WMsg::TTM_GETTOOLINFO,0,tis
-    tis.unpack(WStruct::TOOLINFO)
-  end
-
-public
-
-  def setparam(parent,screen)
-    @parent, at screen = parent,screen unless defined? @screen
-  end
-
-  def activate=(f)
-    i = if f then 1 else 0 end
-    sendMessage WMsg::TTM_ACTIVATE,i,0
-  end
-
-  def maxtipwidth=(w)
-    s=[w].pack("L")
-    sendMessage WMsg::TTM_SETMAXTIPWIDTH,0,s
-  end
-
-  def maxtipwidth
-    sendMessage WMsg::TTM_GETMAXTIPWIDTH,0,0
-  end
-
-  def autopopTime
-    sendMessage WMsg::TTM_GETDELAYTIME,2,0
-  end
-  def initialTime
-    sendMessage WMsg::TTM_GETDELAYTIME,3,0
-  end
-  def reshowTime
-    sendMessage WMsg::TTM_GETDELAYTIME,1,0
-  end
-  def autopopTime=(msec)
-    sendMessage WMsg::TTM_SETDELAYTIME,2,MAKELPARAM(msec,0)
-  end
-  def initialTime=(msec)
-    sendMessage WMsg::TTM_SETDELAYTIME,3,MAKELPARAM(msec,0)
-  end
-  def reshowTime=(msec)
-    sendMessage WMsg::TTM_SETDELAYTIME,1,MAKELPARAM(msec,0)
-  end
-
-  def bkColor
-    sendMessage WMsg::TTM_GETTIPBKCOLOR,0,0
-  end
-  def bkColor=(c)
-    sendMessage WMsg::TTM_SETTIPBKCOLOR,c.to_i,0
-  end
-  def textColor
-    sendMessage WMsg::TTM_GETTIPTEXTCOLOR,0,0
-  end
-  def textColor=(c)
-    sendMessage WMsg::TTM_SETTIPTEXTCOLOR,c.to_i,0
-  end
-
-  def addTool(cnt,text)
-    if classcheck("VRStatic",cnt) then
-      sx=cnt.x; sy=cnt.y; ex=sx+cnt.w; ey=sy+cnt.h
-      rect = [sx,sy,ex,ey]
-      return addToolArea(rect,text)
-    end
-    if classcheck("VRToolbar::VRToolbarButton",cnt) then
-      rect = [0,0,0,0].pack("LLLL")
-      cnt.toolbar.sendMessage WMsg::TB_GETITEMRECT,cnt.index,rect
-      return addToolArea(rect.unpack("LLLL"),text,cnt.toolbar)
-    end
-
-    ti = createTIPTOOLCore
-    ti[1] |= WConst::TTF_IDISHWND 
-    ti[3] = cnt.hWnd
-    ti[9] =text
-    addToolCore(ti)
-    @_vr_tools[ ti[2,2] ] = VRTooltipTool.new(@parent.hWnd,cnt.hWnd,cnt)
-  end
-
-  def addToolArea(rect,text,wnd=@parent)
-    sx,sy,ex,ey = *rect
-    ti = createTIPTOOLCore wnd
-    ti[3] = @parent.newControlID
-    ti[4]=sx ; ti[5]=sy; ti[6]=ex ; ti[7]=ey
-    ti[9] =text
-    addToolCore(ti)
-    @_vr_tools[ ti[2,2] ] = VRTooltipTool.new(wnd.hWnd,ti[3],rect)
-  end
-
-  def delTool(ttt)
-    raise "Requires VRTooltipTool (#{ttt.class})" unless ttt.is_a?(VRTooltipTool)
-    ti=createTIPTOOLCore
-    ti[2] = ttt.hwnd
-    ti[3] = ttt.uid
-    tts = ti.pack(WStruct::TOOLINFO)
-    @_vr_tools.delete(ti[2,2])
-    sendMessage WMsg::TTM_DELTOOL,0,tts
-  end
-
-  def enumTool
-    r = sendMessage WMsg::TTM_GETTOOLCOUNT,0,0
-    raise "Unknown error" if r!=@_vr_tools.size
-    @_vr_tools.each do |key,val|
-      yield val
-    end
-  end
-
-  def getTextOf(ttt,maxlength=1024)  # there is no way to determine the length
-    ti = createTIPTOOLCore
-    buffer = "\0\0\0\0" * (maxlength/4+1) 
-    ti[2] = ttt.hwnd
-    ti[3] = ttt.uid
-    ti[9] = buffer
-    tis = ti.pack(WStruct::TOOLINFO)
-    sendMessage WMsg::TTM_GETTEXT,0,tis
-    buffer.gsub!(/\0.*/,'')
-    buffer
-  end
-
-  def setTextOf(ttt,text)
-    ti = getTOOLINFOCore(ttt.hwnd,ttt.uid)
-    ti[9] = text
-    tis = ti.pack(WStruct::TOOLINFO)
-    sendMessage WMsg::TTM_SETTOOLINFO,0,tis
-  end
-
-end
-
-
-class VRForm
-  attr_reader :tooltip
-  def createTooltip
-    return tooltip if defined?(@tooltip) && @tooltip
-    @tooltip = @screen.factory.newwindow(self,VRTooltip)
-    @tooltip.setparam self, at screen
-    @tooltip.create
-    @tooltip.etc =  newControlID # error occurs if this line is before creation
-    @tooltip.top(-1)
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtray.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtray.rb
deleted file mode 100644
index c3c8349..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtray.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-###################################
-#
-# vrtray.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2002-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-
-module VRTrayiconFeasible
-=begin
-== VRTrayiconFeasible
-This modules is included to create/delete/modify tray icons.
-
-=== Methods
---- create_trayicon(icon=DEFAULTICON,tiptext="",icon_id=0)
-    Creates new trayicon in the tasktray.((|icon|)) is hIcon of the trayicon and
-    the trayicon has tooltip text ((|tiptext|)).
-    When argument ((|icon|)) is nil, icon will set as DEFAULTICON.
-    To distinguish multiple trayicon, ((|icon_id|)) information is added to it.
---- delete_trayicon(icon_id=0)
-    Deletes the trayicon specified by ((|icon_id|))
---- modify_trayicon(hicon,tiptext,iconid=0)
-    Modifies the trayicon's icon/tiptext.
-
-=== Event Handlers
---- self_traymousemove(icon_id)
-    Fired when mouse cursor is moved over the trayicon.
---- self_traylbuttondown(icon_id)
-    Fired when mouse left-button down on the trayicon.
---- self_traylbuttonup(icon_id)
-    Fired when mouse left-button up on the trayicon.
---- self_trayrbuttondown(icon_id)
-    Fired when mouse right-button down on the trayicon.
---- self_trayrbuttonup(icon_id)
-    Fired when mouse right-button up on the trayicon.
-=end
-
-
-  include VRUserMessageUseable
-
-  Shell_NotifyIcon=Win32API.new("shell32","Shell_NotifyIcon","IP","I")
-  
-  NOTIFYICONDATA_a = "IIIIII"
-  DEFAULTICON = Win32API.new("user32","LoadIcon","II","I").call(0,32512)
-
-  NIF_MESSAGE = 1
-  NIF_ICON    = 2
-  NIF_TIP     = 4
-  NIM_ADD     = 0
-  NIM_MODIFY  = 1
-  NIM_DELETE  = 2
-
-  def vrinit
-    super
-    trayiconfeasibleinit
-  end
-  
-  def trayiconfeasibleinit
-    @_vr_traynotify_msg = registerUserMessage(ReservedMsg::WM_VR_TRAYNOTIFY,"_vr_traynotify")
-  end
-
-  def create_trayicon(icon=DEFAULTICON,tiptext="",iconid=0)
-    icon = DEFAULTICON unless icon
-    tip = tiptext.to_s
-    s = [4*6+64,
-          self.hWnd,iconid,NIF_MESSAGE|NIF_ICON|NIF_TIP,
-          @_vr_traynotify_msg,icon ].pack(NOTIFYICONDATA_a) << 
-        tip << "\0"*(64-tip.length)
-    Shell_NotifyIcon.call(NIM_ADD,s)
-  end
-
-  def delete_trayicon(iconid=0)
-    s = [4*6+64,
-          self.hWnd,iconid,0,0,0].pack(NOTIFYICONDATA_a) << "\0"*64
-    Shell_NotifyIcon.call(NIM_DELETE,s)
-  end
-
-  def modify_trayicon(hicon,tiptext,iconid=0)
-    flag=0
-    if hicon then
-      flag |= NIF_ICON
-    end
-    if tiptext then
-      flag |= NIF_TIP
-    end
-    tip = tiptext.to_s
-    s = [4*6+64, self.hWnd,iconid,flag,0,hicon.to_i].pack(NOTIFYICONDATA_a) << 
-        tip << "\0"*(64-tip.length)
-    Shell_NotifyIcon.call(NIM_MODIFY,s)
-  end
-
-  def self__vr_traynotify(wparam,lparam)
-    case lparam
-    when WMsg::WM_MOUSEMOVE
-      selfmsg_dispatching("traymousemove",wparam)
-    when WMsg::WM_LBUTTONDOWN
-      selfmsg_dispatching("traylbuttondown",wparam)
-    when WMsg::WM_LBUTTONUP
-      selfmsg_dispatching("traylbuttonup",wparam)
-    when WMsg::WM_RBUTTONDOWN
-      selfmsg_dispatching("trayrbuttondown",wparam)
-    when WMsg::WM_RBUTTONUP
-      selfmsg_dispatching("trayrbuttonup",wparam)
-    end
-  end
-
-end
-
-module VRTasktraySensitive
-=begin
-== VRTasktraySensitive
-This modules enables to sense the tasktray creation on restarting explorer.
-The deleted tasktray icons can be created again using this module and writing 
-in its event handler how to do it.
-
-=== Event Handlers
---- self_taskbarcreated
-    Fired when the explorer restarts and creates its tasktray.
-=end
-
-  RegisterWindowMessage = Win32API.new("user32","RegisterWindowMessage","P","L")
-  
-  def vrinit
-    super
-    tasktraysensitive
-  end
-  
-  def tasktraysensitive   # coded by Katonbo-san
-    # get message ID of 'TaskbarCreated' message
-    id_taskbar_created = RegisterWindowMessage.call('TaskbarCreated')
-    
-    # prepare 'TaskbarCreated' message handler
-    addHandler(id_taskbar_created, 'taskbarcreated', MSGTYPE::ARGNONE, nil)
-    addEvent(id_taskbar_created)
-  end
-end
-
-
-
-require 'vr/contrib/vrtrayballoon.rb'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtvitem.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtvitem.rb
deleted file mode 100644
index f46c85c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtvitem.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-###################################
-#
-# vrtvitem.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 2000-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vrcomctl'
-
-class VRTreeview
-
-  class VRTreeviewItem
-=begin
-== VRTreeview::VRTreeviewItem
-Represents an item in Treeview.
-This is just a referencing object so that only one treeview item entity
-is referenced by many referencing objects.
-
-=== Class Methods
---- new(treeview,hitem,lparam=0)
-    You may not need this method in your script.
-
-=== Methods
---- insertChildFirst(text,lparam=0)
-    Adds a new child item with ((|text|)) and ((|lparam|)) for the first item.
---- insertChildLast(text,lparam=0)
-    Adds a new child item with ((|text|)) and ((|lparam|)) for the last item.
---- insertChildAfter(item,text,lparam=0)
-    Adds a new child item after ((|item|))
---- parent
-    Returns the parent item.
---- firstChild
-    Returns the first child item.
---- nextSibling
-    Returns the next sibling item of the treeview item.
---- eachChild
-    Yields each child items.
---- icon
---- icon=
-    Sets/Gets the icon for the treeview item.
---- text
---- text=
-    Sets/Gets the text for the treeview item.
---- lparam
---- lparam=
-    Sets/Gets the lparam for the treeview item.
---- state
---- state=
-    Sets/Gets the state for the treeview item.
-=end
-
-
-    attr :treeview
-    attr :hitem
-  private
-    def initialize(tv,hitem,lparam=0)
-      @treeview = tv
-      @hitem=hitem
-    end
-
-    def _vr_addChild(it,text,lparam)
-      VRTreeviewItem.new(@treeview, at treeview.insertItem(@hitem,it,text,lparam))
-    end
-
-  public
-    def insertChildFirst(text,lparam=0)
-      _vr_addChild(WConst::TVI_FIRST,text,lparam)
-    end
-    def insertChildLast(text,lparam=0)
-      _vr_addChild(WConst::TVI_LAST,text,lparam)
-    end
-    def insertChildAfter(item,text,lparam=0)
-      _vr_addChild(item.hitem,text,lparam)
-    end
-    alias addChild insertChildLast
-
-    def parent
-      VRTreeviewItem.new( @treeview, at treeview.getParentOf(@hitem) )
-    end
-    def firstChild
-      VRTreeviewItem.new( @treeview, at treeview.getChildOf(@hitem) )
-    end
-    def nextSibling
-      VRTreeviewItem.new( @treeview, at treeview.getNextSiblingOf(@hitem) )
-    end
-
-    def eachChild
-      r = firstChild
-      while r.hitem do
-        yield r 
-        r = r.nextSibling
-      end
-    end
-
-
-    ["Icon","LParam","Text","State"].each do |nm|
-eval <<"EEOOFF"
-      def #{nm.downcase}
-        @treeview.getItem#{nm}Of(@hitem)
-      end
-      def #{nm.downcase}=(p)
-        @treeview.setItem#{nm}Of(@hitem,p)
-      end
-EEOOFF
-    end
-
-  end
-
-    def rootItem
-      VRTreeviewItem.new(self,WConst::TVGN_ROOT)
-    end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtwopane.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtwopane.rb
deleted file mode 100644
index 3b9b6fa..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vrtwopane.rb
+++ /dev/null
@@ -1,236 +0,0 @@
-###################################
-#
-# vrtwopane.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'vruby'
-require VR_DIR+'vrhandler'
-require 'Win32API'
-
-=begin
-= VisualuRuby(tmp) Multi-pane Window
-=end
-
-
-module VRTwoPane
-=begin
-== VRTwoPane
-This module is a base module for VRVertTwoPane and VRHorizTwoPane.
-The meanings of 'Upper' and 'Lower' depend on those modules.
-=== Methods
---- addPanedControl(type,name,caption,astyle)
-    Adds a new control. This can be called only twice. The first call adds
-    an upper/left control and the next call adds lower/right control.
-    The third call causes RuntimeError.
-
---- addControlUpper(type,name,caption,astyle)
-    ((*obsolete*)).
-    Adds new control on the window upperside or leftside.
-    The arguments are the same of VRParent#addControl.
---- addControlLower(type,name,caption,astyle)
-    ((*obsolete*)).
-    Adds new control on the window downside or rightside.
-    The arguments are the same of VRParent#addControl.
-=end
-
-#  include VRMouseFeasible
-  include VRParent
-
-  attr :ratio,1
-  attr :separatorheight,1
-  attr :pane_1
-  attr :pane_2
-
-  SPLITTER_MOVEWINDOW=0
-  SPLITTER_DRAWLINE=1
-  PatBlt = Win32API.new("gdi32","PatBlt","IIIIII","I")
-
-  def twopaneinit
-    @_vr_paned_splitter_movingmethod = SPLITTER_DRAWLINE
-    @_vr_dragging=false
-    @_vr_splitter_last
-    @pane_1 = @pane_2 = nil
-    @ratio=0.5
-    @separatorheight=6
-    @_vr_app=@screen.application
-    @_vr_acmethod=self.method(:addControlUpper) unless defined? @_vr_acmethod
-    addHandler WMsg::WM_LBUTTONUP,  "vrseplbuttonup",  MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_LBUTTONDOWN,"vrseplbuttondown",MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_SIZE,       "vrpaneresize",    MSGTYPE::ARGLINTINT,nil
-    addHandler WMsg::WM_MOUSEMOVE,  "vrsepmousemove",  MSGTYPE::ARGINTSINTSINT,nil
-    addHandler WMsg::WM_KILLFOCUS,  "vrseplkillfocus",  MSGTYPE::ARGNONE,nil
-    acceptEvents [
-      WMsg::WM_SIZE,WMsg::WM_LBUTTONUP,WMsg::WM_LBUTTONDOWN,WMsg::WM_MOUSEMOVE,WMsg::WM_KILLFOCUS
-     ]
-  end
-  def vrinit
-    super
-    twopaneinit
-  end
-
-  def addControlUpper(type,name,caption,style=0)
-    @pane_1=addControl(type,name,caption,0,0,10,10,style)
-    @_vr_acmethod=self.method(:addControlLower)
-  end
-  def addControlLower(type,name,caption,style=0)
-    @pane_2=addControl(type,name,caption,0,20,10,10,style)
-    @_vr_acmethod=self.method(:addControlIllegal)
-  end
-  def addControlIllegal(*arg)
-    raise "added more than two child windows."
-  end
-
-  def addPanedControl(*args)
-    @_vr_acmethod.call(*args)
-  end
-
-  def self_vrseplbuttondown(shift,x,y)
-    setCapture
-    @_vr_dragging=true
-    @_vr_app.setCursor @_vr_dragcur
-    x,y, at _vr_w, at _vr_h = self.clientrect   #attr w,h is the size when drag starts.
-  end
-
-  def self_vrseplbuttonup(shift,x,y)
-    releaseCapture
-    @_vr_dragging=false
-    splitterDragEnd(x,y)
-  end
-
-  def self_vrsepmousemove(shift,x,y)
-    @_vr_app.setCursor @_vr_dragcur
-    return unless @_vr_dragging
-    splitterDragging(x,y)
-  end
-
-  def self_vrseplkillfocus()
-    if @_vr_dragging then
-      releaseCapture
-      @_vr_dragging=false
-      @pane_1.refresh
-      @pane_2.refresh
-      @_vr_splitter_last = nil
-    end
-  end
-
-
-  def self_vrpaneresize(w,h)
-    return unless @pane_1 and @pane_2
-    x,y,w,h = self.clientrect
-    resizepane(x,y,w,h, at ratio)
-  end
-
-  def splitterDragEnd(*arg) end
-  def splitterDragging(*arg) end
-  def resizepane(*arg) end
-end
-module VRVertTwoPane
-=begin
-== VRVertTwoPane
-This module is a kind of VRTwoPane to separate the window vertically 
-and places the controls in the separeted area.
-=end
-
-  include VRTwoPane
-
-  def vrinit
-    super 
-    @_vr_dragcur = @_vr_app::SysCursors::SizeNS()
-  end
-
-  def splitterDragEnd(x,y)
-    sh=(@separatorheight/2).to_i
-    @_vr_splitter_last=nil
-    @pane_1.move 0,0, at _vr_w,y-sh
-    @pane_2.move 0,y+sh, at _vr_w, at _vr_h-y-sh
-    @ratio=y.to_f/@_vr_h
-    refresh
-  end
-
-  def splitterDragging(x,y)
-    sh=(@separatorheight/2).to_i
-    return if y+sh>@_vr_h || y<0
-    case(@_vr_paned_splitter_movingmethod)
-    when SPLITTER_MOVEWINDOW
-      @pane_1.move 0,0, at _vr_w,y-sh
-      @pane_2.move 0,y+sh, at _vr_w, at _vr_h-y-sh
-    when SPLITTER_DRAWLINE
-      dopaint do |hdc|
-        setBrush(RGB(0x255,0x255,0x255))
-        if @_vr_splitter_last then
-          PatBlt.call(hdc,*@_vr_splitter_last) 
-        end
-        current=[0,y, at _vr_w, at separatorheight,0x5a0049] # PATINVERT
-        PatBlt.call(hdc,*current)
-        @_vr_splitter_last = current
-      end
-    end
-  end
-
-  def resizepane(x,y,w,h,ratio)
-    ys = (h*@ratio).to_i
-    sh=(@separatorheight/2).to_i
-    @pane_1.move 0,0,w,ys-sh
-    @pane_2.move 0,ys+sh,w,h-ys-sh
-  end
-end
-
-module VRHorizTwoPane
-=begin
-== VRHorizTwoPane
-This module is a kind of VRTwoPane to separate the window horizontally 
-and places the controls in the separeted area.
-=end
-  include VRTwoPane
-
-  def vrinit
-    super
-    @_vr_dragcur = @_vr_app::SysCursors::SizeWE()
-  end
-
-  def splitterDragEnd(x,y)
-    sh=(@separatorheight/2).to_i
-    @_vr_splitter_last=nil
-    @ratio=x.to_f/@_vr_w
-    @pane_1.move 0,0,x-sh, at _vr_h
-    @pane_2.move x+sh,0, at _vr_w-x-sh, at _vr_h
-    refresh
-  end
-
-  def splitterDragging(x,y)
-    sh=(@separatorheight/2).to_i
-    return if x+sh>@_vr_w || x<0
-    case(@_vr_paned_splitter_movingmethod)
-    when SPLITTER_MOVEWINDOW
-      @pane_1.move 0,0,x-sh, at _vr_h
-      @pane_2.move x+sh,0, at _vr_w-x-sh, at _vr_h
-    when SPLITTER_DRAWLINE
-      dopaint do |hdc|
-        setBrush(RGB(0x255,0x255,0x255))
-        if @_vr_splitter_last then
-          PatBlt.call(hdc,*@_vr_splitter_last) 
-        end
-        current=[x,0, at separatorheight, at _vr_h,0x5a0049] # PATINVERT
-        PatBlt.call(hdc,*current)
-        @_vr_splitter_last = current
-      end
-    end
-
-
-  end
-
-  def resizepane(x,y,w,h,ratio)
-    xs = (w*ratio).to_i
-    sh=(@separatorheight/2).to_i
-    return if x+sh>w || x<0
-    @pane_1.move 0,0,xs-sh,h
-    @pane_2.move xs+sh,0,w-xs-sh,h
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vruby.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vruby.rb
deleted file mode 100644
index 6fd5f17..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/vruby.rb
+++ /dev/null
@@ -1,1053 +0,0 @@
-###################################
-#
-# vruby.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-=begin
-= VisualuRuby(tmp)  Main modules and classes
-=end
-
-
-SWIN_REQUIRED = "030817" unless defined?(SWIN_REQUIRED)
-VR_COMPATIBILITY_LEVEL=3 unless defined?(VR_COMPATIBILITY_LEVEL)
-
-require 'swin'
-
-if SWin::VERSION < SWIN_REQUIRED then
-  raise StandardError,"\nswin.so (#{SWin::VERSION}) version too old. Need #{SWIN_REQUIRED} or later."
-end
-
-VR_DIR="vr/" unless defined?(::VR_DIR)
-require VR_DIR+'compat/rubycompat'
-require VR_DIR+'winconst'
-require VR_DIR+'rscutil'
-
-module MSGTYPE
-=begin
-== MSGTYPE
-This is a module to collect constants of Windows message's argument type.
-These constants decide an argument list for message handler.
-The point is how to use lParam and wParam which are Integers.
-=== Constants
---- ARGNONE
-    No use of wParam and lParam. The handler don't have arguments.
---- ARGINT
-    lParam is the argument of handler.
-    The handler is defined as a type of self_handler(lParam)
---- ARGSTRUCT
-    lParam is a pointer to structured data. The handler's argument is decided
-    by that structure.
---- ARGSTRING
-    lParam is a char* pointer. 
-    The handler is defined as a type of self_handler(String)
---- ARGWINT
-    wParam is for the argument of handler.
-    The handler is defined as a type of self_handler(wParam)
---- ARGLINT
-    Same as ARGINT
---- ARGINTINT
-    lParam and wParam are for the argument.
-    The handler is defined as a type of self_handler(wParam,lParam)
---- ARGINTINTINT
-    lParam and wParam are for the arguments, and lParam will be devided into 
-    two integers of lo-word of lParam and hi-word of lParam.
-    The handler is defined as a type of self_handler(wParam,LO_lParam,HI_lParam)
---- ARGLINTINT
-    lParam is for the argument, and lParam will be devided into 
-    two integers of lo-word of lParam and hi-word of lParam.
-    The handler is defined as a type of self_handler(LO_lParam,HI_lParam)
---- ARGINTSTRUCT
-    wParam and structured lParam is for the arguments.
-    The handler is defined as a type of self_handler(wParam, ...*struct...)
---- ARGINTSINTSINT
-    Almost same as ARGINTINTINT.
-    But that two lParam integers are dealed as signed integers.
---- ARGPASS
-    The argument is an instance of SWin::MSG.
-    The handler is define as a type of self_handler(msg).
-=end
-    
-  ARGNONE    = 0    #arg none 
-  ARGINT     = 1    #arg lParam
-  ARGSTRUCT  = 2    #arg lParam as struct
-  ARGSTRING  = 3    #arg lParam as char*
-
-  ARGWINT    = 8    #arg wParam
-  ARGLINT    = 9    #arg lParam
-  ARGINTINT  = 10   #arg wParam,lParam
-  ARGINTINTINT=11   #arg wParam,LO(lParam),HI(lParam)
-  ARGLINTINT = 12   #arg LO(lParam),HI(lParam)
-  ARGINTSTRUCT=13   #arg wParam, lParam as struct
-
-  ARGINTSINTSINT=14 #arg wParam,SignedLO(lParam),SignedHI(lParam)
-  ARGPASS    = 16   #arg msg
-end
-
-$VRCONTROL_STARTID=1000
-
-class VRWinComponent < SWin::Window
-=begin
-== VRWinComponent
-Root of all window class.
-=== Methods
---- hide
-    Hides window (this calls SWin::Window#show(0)
---- winstyle
-    Returns an instance of the style utilizing class
---- exwinstyle
-    Returns an instance of the exstyle utilizing class
-=end
-
-  attr_reader :screen, :parent
-
-  module VRInitBlocker
-    def vrinit
-      extend VRInitBlocker.dup
-    end
-  end
-
-  def vrinit
-    extend VRWinComponent::VRInitBlocker
-  end
-
-  def _init() self.vrinit(); end
-
-  def setscreen(scr)
-    @screen=scr
-  end
-  def create
-    @created=true
-    super
-    self.vrinit
-    _vr_call_created
-    self
-  end
-
-  def _vr_call_created
-    self_created if respond_to?("self_created")
-  end
-
-  def hide
-    self.show 0
-  end
-
-  class Flags
-    CONSTMOD=WStyle
-
-    def initialize(win)
-      @win=win
-    end
-
-    def method_missing(msd,*arg)
-      msd=msd.to_s
-      f_setter = (msd[-1..-1]=="=")
-      flgname = if f_setter then msd[0..-2] else msd end.upcase
-      flgname.chop! if flgname[-1..-1]=="?"
-      mod = self.class::CONSTMOD
-      raise "No such flags(#{flgname})" unless mod.const_defined?(flgname)
-      flg=mod.const_get(flgname)
-      if f_setter then
-        setter(flg,arg[0])
-      else
-        getter(flg)
-      end
-    end
-
-    def setter(flagint,value)
-      f = integer_getter()
-      if value then 
-        f |= flagint
-      else
-        f &= ~flagint
-      end
-      integer_setter(f)
-    end
-
-    def getter(flagint)
-      (integer_getter() & flagint)==flagint
-    end
-
-    def value() integer_getter; end
-    def value=(f) integer_setter(f); end
-  end
-
-  class WinStyle < Flags
-   private
-    def integer_getter()
-      @win.style
-    end
-    def integer_setter(f)
-      @win.style=f
-    end
-  end
-
-  class ExWinStyle < Flags
-    CONSTMOD=WExStyle
-   private
-    def integer_getter
-      @win.exstyle
-    end
-    def integer_setter(f)
-      @win.exstyle=f
-    end
-  end
-
-
-  def winstyle
-    WinStyle.new(self)
-  end
-
-  def exwinstyle
-    ExWinStyle.new(self)
-  end
-end
-
-module VRMessageHandler
-=begin
-== VRMessageHandler
-This is a module to handle windows messages. 
-If you need to receive windows messages , this module is necessary.
-
-=== Methods
---- acceptEvents(ev_array)
-    Declares the windows messages to be handled. 
-    ((|ev_array|)) is an array of the handled messages.
-    This method calls SWin::addEvent for each message.
---- addHandler(msg,handlername,argtype,argparsestr)
-    Defines the name and type of the message handler for ((|msg|)).
-    The handlername is composed with ((|handlername|)) and the arguments
-    are depend on ((|argtype|)) which is a constant in module MSGTYPE.
-    When the message come with structured lParam, it is necessary to be defined
-    ((|argparsestr|)) to devide it.
-=end
-
-  PREHANDLERSTR="self_"
-
-  def msghandlerinit
-    @_vr_handlers={} unless defined?(@_vr_handlers)
-    self.hookwndproc unless self.hookedwndproc?
-
-              # for VRMessageParentRelayer
-    @_vr_msg_norelays=[] unless defined?(@_vr_msg_norelays)
-  end
-
-  def addNoRelayMessages(arg)  # for VRMessageParentRelayer
-    @_vr_msg_norelays=[] unless defined?(@_vr_msg_norelays)
-    @_vr_msg_norelays += arg if arg and  arg.size>0
-  end
-
-  def vrinit
-    super
-    msghandlerinit
-  end
-
-  def acceptEvents(ev_array)
-    ev_array.each do |ev|
-      addEvent ev
-    end
-  end
-
-  def addHandler(msg,handlername,handlertype,argparsestr)
-    @_vr_handlers={} unless defined?(@_vr_handlers)
-    @_vr_handlers[msg]=[] unless @_vr_handlers[msg]
-    @_vr_handlers[msg].push [
-         (PREHANDLERSTR+handlername).intern,handlertype,argparsestr
-       ]
-  end
-
-  def deleteHandler(msg,handlername)
-    return false unless defined?(@_vr_handlers) and @_vr_handlers[msg]
-    @_vr_handlers[msg].delete_if do |shandler|
-      shandler[0] == (PREHANDLERSTR+handlername).intern
-    end
-  end
-
-  class SKIP_DEFAULTHANDLER
-    attr_accessor :retval
-    def initialize(val)
-      @retval=val
-    end
-    def self.[](val=0)
-      self.new(val)
-    end
-  end
-
- private
-
-  def msgarg2handlerarg(handlertype,msg,parsestr)
-    case handlertype
-    when MSGTYPE::ARGNONE
-      []
-    when MSGTYPE::ARGINT
-      [msg.lParam]
-    when MSGTYPE::ARGSTRUCT
-      @screen.application.cstruct2array(msg.lParam,parsestr)
-    when MSGTYPE::ARGSTRING
-      [@screen.application.pointer2string(msg.lParam)]
-    when MSGTYPE::ARGWINT
-      [msg.wParam]
-    when MSGTYPE::ARGLINT
-      [msg.lParam]
-    when MSGTYPE::ARGINTINT
-      [msg.wParam,msg.lParam]
-    when MSGTYPE::ARGINTINTINT
-      [msg.wParam,LOWORD(msg.lParam),HIWORD(msg.lParam)]
-    when MSGTYPE::ARGLINTINT
-      [LOWORD(msg.lParam),HIWORD(msg.lParam)]
-    when MSGTYPE::ARGINTSTRUCT
-      [msg.wParam, @screen.application.cstruct2array(msg.lParam,parsestr)]
-    when MSGTYPE::ARGINTSINTSINT
-      [msg.wParam,SIGNEDWORD(LOWORD(msg.lParam)),SIGNEDWORD(HIWORD(msg.lParam))]
-
-    when MSGTYPE::ARGPASS
-      [msg]
-    else
-      raise "Unknown MSGTYPE for #{msg.msg}"
-      false
-    end
-  end
-
-
-  def msghandler(msg)
-    r = nil
-    if msg.hWnd==self.hWnd then # FormEvent
-      if @_vr_handlers then   # error occurs if the class is not adaptable.
-        handlers = @_vr_handlers[msg.msg]
-        if handlers then
-          handlers.each do |shandler|
-            args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-            if respond_to?(shandler[0])
-              r = __send__(shandler[0],*args) 
-            end
-          end
-        end
-      end
-    else  # other's WM event
-    end
-
-    # fire default handler?
-    if SKIP_DEFAULTHANDLER==r then
-      1
-    elsif  r.is_a?(SKIP_DEFAULTHANDLER) then
-      msg.retval=r.retval
-    else
-      nil
-    end
-  end
-
-  module VRArrayedComponent
-    attr_reader :_vr_arrayednumber
-    def _vr_arrayednumber=(num)
-      if defined?(@_vr_arrayednumber) then
-        raise "set array number twice"
-      else
-        @_vr_arrayednumber=num
-      end
-    end
-  end
-
- public
-  def controlmsg_dispatching(ct,methodname,*args)
-    mthdname = "#{ct.name}_#{methodname}"
-    if respond_to?(mthdname)
-      if ct.is_a?(VRArrayedComponent) then
-        __send__(mthdname,ct._vr_arrayednumber,*args)
-      else
-        __send__(mthdname,*args) 
-      end
-    else
-      0
-    end
-  end
-
-  def selfmsg_dispatching(methodname,*args)
-    smethod="self_#{methodname}".intern
-    if respond_to?(smethod) then
-      __send__(smethod,*args) 
-    else
-      nil
-    end
-  end
-
-end
-
-module VRMessageParentRelayer
-  include VRMessageHandler
-
-  def messageparentrelayerinit
-    @_vr_messageparentrelayer=true
-  end
-
-
-  def vrinit
-    super
-    messageparentrelayerinit
-  end
-
-  def controlmsg_dispatching(ct,methodname,*args)
-    mthdname = "#{ct.name}_#{methodname}"
-    @parent.controlmsg_dispatching(self,mthdname,*args)
-  end
-
-  def selfmsg_dispatching(methodname,*args)
-    @parent.controlmsg_dispatching(self,methodname,*args)
-  end
-
-  def msghandler(msg)   # almost same as VRMessageHandler#msghandler
-    if @_vr_msg_norelays.include?(msg.msg) then   # no relays
-      return super
-    end
-
-    r = nil
-    if msg.hWnd==self.hWnd then # FormEvent
-      if @_vr_handlers then   # error occurs if the class is not adaptable.
-        @_vr_handlers[msg.msg].each do |shandler|
-          args=msgarg2handlerarg(shandler[1],msg,shandler[2])
-          mthdname = "#{@name}_#{shandler[0]}"
-          if @parent.respond_to?(mthdname)
-            r = @parent.__send__(mthdname,*args) 
-          end
-        end
-      end
-    else  # other's WM event
-    end
-
-    # fire default handler?
-    if SKIP_DEFAULTHANDLER==r then
-      1
-    elsif  r.is_a?(SKIP_DEFAULTHANDLER) then
-      msg.retval=r.retval
-    else
-      nil
-    end
-  end
-end
-
-
-module VRParent
-=begin
-== VRParent
-This module provides the features to be the parent of the child windows.
-
-=== Constants
---- DEFAULT_FONT
-    Each control created by addControl method is invoked setFont(font) method.
-    Default font of child controls can be set with this constants in the class.
-
-=== Method
---- addControl(ctype,name,caption, x=0,y=0,w=10,h=10, style=0)
-    Adds a child window(control) of ((|ctype|)) named ((|name|)) 
-    with ((|caption|)) at ( ((|x|)) , ((|y|)) ) whose width and height is
-    ( ((|w|)) , ((|h|)) ).
-    ((|ctype|)) is not an instance of the control-class but the class of 
-    the child window.
-    ((|style|)) is additional styles for the childwindow such as WMsg::WS_BORDER.
-    You can set nil or "" for ((|name|)). "" is for nameless control, 
-    and nil is for the control which is nothing to do with vruby's control 
-    management.
---- addArrayedControl(index,ctype,name,caption,x=0,y=0,w=10,h=10,style=0)
-    Adds an indexed child window(control) of ((|ctype|)) named ((|name|)).
---- countControls
-    Returns the number of controls added on the window.
---- deleteControls(cntl)
-    Deletes a control ((|cntl|)) as VRControl.
---- clearControls
-    Deletes all controls on the window.
---- send_parent(cname,func)
-    Sends to parent an event from control. ((|cname|)) is controlname and 
-    ((|func|)) is event handler name.
-=== Callback Methods(event handler)
---- construct
-    You can add controls and set menues for the window in this method.
-
-=== Event handlers
---- self_created
-    Fired when all of child windows is created.
-=end
-
-  DEFAULT_FONT=nil
-
-  attr_reader :screen
-
-  def newControlID
-    r=@_vr_cid + $VRCONTROL_STARTID
-    @_vr_cid+=1
-    return r
-  end
-
-  def registerControl(c,name,cid)
-    c.etc= cid
-    if name.is_a?(String) then
-      if name.length>0 then
-        atname = instance_eval("@" + name + " ||= nil")
-        raise "Already used name '#{name}'" unless atname.nil?
-        begin
-          instance_eval("@"+name+"=c") if name
-        rescue
-        end
-      end
-      c.name = name
-      @controls[cid]= c
-    end
-    c
-  end
-
-  def registerControlAsArrayed(num,c,name,cid)
-    instance_eval("@#{name}=[] unless defined? @#{name}")
-    if instance_eval("@#{name}[#{num}]")
-      raise "Already used number #{num} for #{name}" 
-    end
-    begin
-     instance_eval("@#{name}")[num]=c
-    rescue
-    end
-    c.name=name
-    c.extend VRMessageHandler::VRArrayedComponent
-    c._vr_arrayednumber=num
-    c
-  end
-
-  def _vr_call_created() # to move the timing of self_created
-    construct
-    super
-  end 
-
-  def parentinit(screen)
-    @screen=screen
-    @controls={}
-    @_vr_cid=0
-  end
-
-  def createControl(type,name,caption, x=0,y=0,w=10,h=10, style=0)
-    c=@screen.factory.newwindow(self,type)
-#    c.extend type
-    info = type.Controltype
-    c.classname= info[0] if info[0]
-    c.caption= caption
-    c.style=WStyle::WS_VISIBLECHILD | info[1] | style
-    c.exstyle = info[2] if info.size>2
-    c.move x,y,w,h
-    c
-  end
-
-  VR_ADDCONTROL_FEWARGS=false
-  def addControl(type,name,caption, x=10,y=10,w=10,h=10, style=0)
-    c = createControl(type,name,caption, x,y,w,h,style)
-    cid=newControlID
-    registerControl(c,name,cid) 
-    c.parent=self
-    c.setscreen(screen)
-    c.parentinit(screen) if c.respond_to?("parentinit")
-    c.create
-    font = self.class::DEFAULT_FONT
-    c.setFont(font) if font.is_a?(SWin::Font)
-    c
-  end
-
-  def addArrayedControl(num,type,name,caption,x=0,y=0,w=10,h=10,style=0)
-#p method(:addControl).arity
-    if self.class::VR_ADDCONTROL_FEWARGS then
-      c = addControl(type,"",caption,style)
-    else
-      c = addControl(type,"",caption,x,y,w,h,style)
-    end
-    registerControlAsArrayed(num,c,name,c.etc)
-    c
-  end
-
-  alias vr_addControlOriginal addControl
-
-  def countControls
-    @controls.size
-  end
-
-  def deleteControl(cntl)
-    if cntl.is_a?(VRMessageHandler::VRArrayedComponent)
-      if @controls[cntl.etc]==instance_eval("@#{cntl.name}")[cntl._vr_arrayednumber] then
-        instance_eval("@#{cntl.name}")[cntl._vr_arrayednumber]=nil
-      end
-    else
-      if @controls[cntl.etc]==instance_eval("@#{cntl.name}") then
-        instance_eval("@#{cntl.name}=nil")
-      end
-    end
-
-    @controls.delete(cntl.etc)
-    cntl.close if cntl.alive?
-  end
-
-  def clearControls
-    @controls.each do |key,cntl|
-      deleteControl(cntl)
-    end
-    @_vr_cid=0
-  end
-
-  def send_parent(cname,func)
-    defname=cname+"_"+func
-    funcname = self.name + "_" + defname
-    evalstr=
-      "def "+defname+"(*arg) " <<
-        "if parent.respond_to?('"+funcname+"') then " <<
-          "parent.__send__('"+funcname+"',*arg) " <<
-        "end " <<
-      "end"
-    instance_eval(evalstr)
-  end
-
-# ###########################
-#
-
-  def construct
-    # placeholder
-  end
-
-end
-
-module WMsg
-  WM_SETFONT = 0x0030
-  WM_GETFONT = 0x0031
-end
-class VRControl < VRWinComponent
-=begin
-== VRControl
-Base class for controls.
-
-=== Methods
---- add_parentcall(funcname)
-    Makes event handlers to be passed through to its parent window.
-    For example, add_parentcall("btn1_clicked") provides a new event 
-    ((| ????_btn1_clicked |)) on its parent window.
-    (???? is the name of the control).
---- call_parenthandler(handlername,*arg)
-    Calls event handler of parent window in ctrlname_handlername(*arg) style.
---- setFont(font,redraw=true)
-    Sets drawing font to ((|font|)). Control will be re-drawn if redraw flag.
-
-=end
-
-  attr_reader :handlers
-  attr_accessor :parent,:name
-
-
-  WINCLASSINFO = [nil,0]
-
-  def self.Controltype()
-    self::WINCLASSINFO
-  end
-
-  def add_parentcall(func)
-    funcname=@name+"_"+func
-    evalstr=
-      "def self_"+func+"(*arg) "+
-        "if parent.respond_to?('"+funcname+"') then "+
-          "parent.__send__('"+funcname+"',*arg) "+
-        "end "+
-      "end"
-    instance_eval(evalstr)
-  end
-
-  def setFont(font,redraw=true)
-    if self.dopaint then
-      super font
-    end
-    if font.is_a?(SWin::Font) then
-      self.properties["font"]=font
-      sendMessage WMsg::WM_SETFONT,font.hfont, ( (redraw)? 1 : 0 )
-    else
-      raise "#{font} is not a font."
-    end
-  end
-
-  def call_parenthandler(handlername,*arg)
-    @parent.controlmsg_dispatching(self,handlername,*arg)
-  end
-end
-
-module VRCommonDialog
-=begin
-== VRCommonDialog
-Additional module for common dialogs.
-You can omit the first argument of the method of SWin::CommonDialog
-using this module.
-
-=== Methods
---- openFilenameDialog(*arg)
---- saveFilenameDialog(*arg)
---- chooseColorDialog(*arg)
---- chooseFontDialog(*arg)
---- selectDirectory(*arg)
-=end
-
-  def openFilenameDialog(*arg)
-    SWin::CommonDialog::openFilename(self, *arg)
-  end
-  def saveFilenameDialog(*arg)
-    SWin::CommonDialog::saveFilename(self, *arg)
-  end
-  def chooseColorDialog(*arg)
-    SWin::CommonDialog::chooseColor(self, *arg)
-  end
-
-  DEFAULTFONT = [["System",19,0,300,135,0,0,2,128],135,0]
-  def chooseFontDialog(defaultvalue=nil)
-    sarg = if defaultvalue.is_a?(FontStruct) then
-             sarg = defaultvalue.spec
-           elsif defaultvalue
-             sarg = defaultvalue
-           else
-             sarg = DEFAULTFONT
-           end
-    r=SWin::CommonDialog::chooseFont(self, sarg)
-    if r then
-      FontStruct.new2(r)
-    else
-      r
-    end
-  end
-
-  def selectDirectory(*arg)
-    SWin::CommonDialog::selectDirectory self,*arg
-  end
-end
-
-
-class VRForm < VRWinComponent
-=begin
-== VRForm
-This class is for top-level window and have the features of 
-((<VRMessageHandler>)), ((<VRParent>)) and ((<VRCommonDialog>))
-
-=== Method
---- create
-    Creates the window.
-=end
-
-  attr_reader :handlers
-  VR_WINCLASS = nil
-
-  def self.winclass() nil end
-
-  include VRMessageHandler
-  include VRParent
-  include VRCommonDialog
-
-#  def create
-#    super
-#    self.vrinit
-#    self
-#  end
-
-
-  def forminit(screen,parent)
-    @_vr_handlers={}
-    parentinit(screen)
-    @parent=parent
-  end
-
-end
-
-class VRPanel < VRControl
-=begin
-== VRPanel
-This means only child window that is useable like control.
-=end
-
-  include VRParent
-  WINCLASSINFO = [nil,0]
-end
-
-module VRContainersSet
-  INITIALIZERS=[]
-  def containers_init
-    INITIALIZERS.each do |mtd|
-      self.__send__(mtd)
-    end
-  end
-end
-
-
-module VRDrawable
-=begin
-== VRDrawable
-This module is for handling WM_PAINT message to paint the window.
-
-=== Event handler
---- self_paint
-    Fired when the window is required to re-paint by the system.
-    You can use GDI's methods of SWin::Window in this method.
-=end
-
-  include VRMessageHandler
-  def drawableinit
-    addHandler(WMsg::WM_PAINT,"paint",MSGTYPE::ARGNONE,nil)
-    addEvent WMsg::WM_PAINT
-  end
-  def vrinit
-    super
-    drawableinit
-  end
-end
-
-
-
-module VRResizeSensitive
-=begin
-== VRResizeSensitive
-This module is for capturing window resizing.
-
-=== Event handler
---- self_resize(w,h)
-    Fired when the window is resized. 
-    The new width and height is ((|w|)) and ((|h|)).
-=end
-
-  include VRMessageHandler
-  
-  def resizeableinit
-    acceptEvents [ WMsg::WM_SIZE ]
-    addHandler(WMsg::WM_SIZE, "resize",MSGTYPE::ARGLINTINT,nil) 
-  end
-  def vrinit
-    super
-    resizeableinit
-  end
-end
-
-VRResizeable = VRResizeSensitive
-
-module VRUserMessageUseable
-  module ReservedMsg
-    WM_VR_OLEDND      = 1
-    WM_VR_TRAYNOTIFY  = 2
-  end
-
-=begin
-== VRUserMessageUseable
-This module is for using user-defined Windows-system messages.
-
---- registerUserMessage(messageid,eventname,offset=0x100)
-    Registers an user-defined message whose eventname is ((|eventname|)).
-    On your Windows system, this message is assigned for 
-    (WM_APP + messageid + offset).
-    Argument ((|offset|)) is only for vruby system use. Don't use it.
-
-=== EventHandler
---- self_<userdefinedname>(wparam,lparam)
-    Fired when the user-defined message is sent.
-=end
-
-  include VRMessageHandler
-  
-  def usermessageuseableinit
-    @_vr_usermessages={}
-  end
-  def vrinit
-    super
-    usermessageuseableinit
-  end
-
-  def registerUserMessage(messageid,eventname,offset=0x100)
-    msg = WMsg::WM_APP+messageid+offset
-    addEvent msg
-    addHandler(msg, eventname,MSGTYPE::ARGINTINT,nil) 
-    @_vr_usermessages[eventname]=msg
-  end
-
-  def userMessage(eventname,wparam=0,lparam=0)
-    msg = @_vr_usermessages[eventname]
-    raise "No such an usermessage (#{eventname}" unless msg
-    postMessage msg,wparam.to_i,lparam.to_i
-  end
-
-end
-
-class VRScreen
-=begin
-== VRScreen
-This class expresses the desktop screen.
-Currently only ((<VRLocalScreen>)) defined in vruby, the instance of this 
-class, is available.
-
-=== Class Method
---- new(app,factory)
-    ((|app|)) as SWin::Application and ((|factory|)) as SWin::Factory.
-
-=== Methods
---- newform(parent=nil,style=nil,mod=VRForm)
-    Creates and initializes the top-level window which is the instance of
-    ((<VRForm>)) or its descendant.
-    The parent window is specified by ((|parent|)) and parent==nil means
-    that it has no parent window.
-    The window style is specified by ((|style|)) which can be ((|nil|)) for
-    default style.
-    ((|mod|)) can be a module which is to be added to ((<VRForm>)) or a class
-    which is a descendant of ((<VRForm>)).
---- showForm(mod,x,y,w,h)
-    Creates and shows the new top-level window using ((<newform>)).
-    The arguments ((|x|)),((|y|)),((|w|)),((|h|)) is omittable.
-    ((|mod|)) is the argument for ((<newform>))'s argument. 
---- addIdleproc(f)
-    Adds a idling process executed while message loop runs.
-    ((|f|)) is an instance of Proc class.
---- messageloop(wflag=false)
-    Get into the system message loop. You need to call this method to
-    process windows messages.
-    While wflag is true, messageloop waits a message by WaitMessage() API.
-    This waiting will prevent other threads' processes and can suppress CPU load
-    average.
-    If wflag==false and your ruby's version is so high that Thread has 'list' 
-    class-method, WaitMessage() API is used automatically by the case.
---- idling_messageloop
-    ((*obsolete*))
-    Almost same as ((<messageloop>)). The difference is that this method
-    yields when the messageloop is in idle state. You need to use this 
-    method in iterator's style.
---- width
-    Width of the desktop.
---- height
-    Height of the desktop.
---- newFormClass(name,brush=nil,style=nil,icon=nil,cursor=nil)
-    Register a new window class to the system.
-    This method returns a form class with specified icon, color, cursor
-    and default window style.
-=end
-
-  attr_reader :screen,:application,:factory,:desktop
-
-
-
-  attr_accessor :idle_sleep_timer
-
-  WINDOWCHECK_INTERVAL=3
-
-  def initialize(frame,factory)
-    @application=frame
-    @factory=factory
-    @desktop=@application.getDesktop
-    @idle_sleep_timer = 0.01
-    @_vr_box=[]    # pushed windows for avoiding destruction by GC
-  end
-
-  def newform(parent=nil,style=nil,mod=VRForm)   # create top-level window
-    if mod.is_a?(Class) then
-      if mod.ancestors.index(VRForm) then
-        frm=@factory.newwindow(parent,mod)
-      else
-        raise "#{mod} is not a window class"
-      end
-    elsif  mod.is_a?(Module) then
-      frm=@factory.newwindow(parent,VRForm)
-      frm.extend mod
-    else
-      raise ArgumentError,"required a child class of VRForm or a Module extending VRForm"
-    end
-    frm.style= style if style
-    frm.classname = frm.class.winclass if frm.class.winclass
-    frm.extend VRContainersSet
-    frm.forminit(self,parent)
-    frm
-  end
-
-  def showForm(formmodule,*rect)
-    if rect.is_a?(Array) and rect.size>3 then
-      x,y,w,h = *rect
-    end
-
-    frm=newform(nil,nil,formmodule)
-    frm.move x,y,w,h if x
-    frm.create.show
-    @_vr_box.push frm
-    frm
-  end
-
-  def start(*args)
-    showForm(*args)
-    messageloop
-  end
-
-  def addIdleproc(f)
-    @idleprocs=[] unless defined?(@idleprocs)
-    @idleprocs.push f
-  end
-
-  def messageloop(waitflag=false)
-    @idleprocs=[] unless defined?(@idleprocs)
-
-=begin commented out for activex support
-    cth =Thread.new do 
-      while true do
-        @_vr_box.reject! do |w| (! w.alive?);  end
-        sleep WINDOWCHECK_INTERVAL
-      end
-    end
-=end
-
-    @application.messageloop do
-      n=@idleprocs.shift
-      if n then
-        Thread.new do
-          n.call
-        end
-      else
-        if waitflag then
-          @application.waitmessage
-        else
-#          Thread.pass
-           sleep(@idle_sleep_timer)
-        end
-      end
-    end
-  end
-
-  def idling_messageloop # obsolete
-    @application.messageloop do |q|
-      yield q
-    end
-  end
-
-  def newFormClass(name,brush=nil,style=nil,icon=nil,cursor=nil)
-    hicon = case(icon) 
-            when Integer 
-              icon 
-            when SWin::Icon 
-              icon.hicon 
-            else
-              nil
-            end
-
-    sw = factory.registerWinClass(name.to_s,brush,style,hicon,cursor)
-    raise "register class failed" unless sw
-    a = Class.new(VRForm)
-    a.class_eval(<<EEOOFF)
-      VR_WINCLASS="#{sw}"
-      def self.winclass() VR_WINCLASS end
-EEOOFF
-    a
-  end
-
-  def width
-    @desktop.w
-  end
-  def height
-    @desktop.h
-  end
-  alias w :width
-  alias h :height
-  def x() @desktop.x; end
-  def y() @desktop.y; end
-
-end
-
-VRLocalScreen=
-  VRScreen.new(SWin::Application,
-               SWin::LWFactory.new(SWin::Application.hInstance))
-
-# contributed files
-require VR_DIR+'contrib/vrwincomponent'
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/winconst.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/winconst.rb
deleted file mode 100644
index 20501a8..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/vr/winconst.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-###################################
-#
-# winconst.rb
-# Programmed by nyasu <nyasu at osk.3web.ne.jp>
-# Copyright 1999-2005  Nishikawa,Yasuhiro
-#
-# More information at http://vruby.sourceforge.net/index.html
-#
-###################################
-
-
-#######################################
-#   Win Constants and utils
-#
-module WMsg
-  WM_NULL           = 0x0000
-  WM_CREATE         = 0x0001
-  WM_DESTROY        = 0x0002
-  WM_MOVE           = 0x0003
-  WM_SIZE           = 0x0005
-  WM_ACTIVATE       = 0x0006
-  WM_SETFOCUS       = 0x0007
-  WM_KILLFOCUS      = 0x0008
-  WM_ENABLE         = 0x000A
-  WM_SETREDRAW      = 0x000B
-  WM_SETTEXT        = 0x000C
-  WM_GETTEXT        = 0x000D
-  WM_GETTEXTLENGTH  = 0x000E
-  WM_PAINT          = 0x000F
-  WM_CLOSE          = 0x0010
-  WM_QUERYENDSESSION= 0x0011
-  WM_QUIT           = 0x0012
-  WM_QUERYOPEN      = 0x0013
-  WM_ERASEBKGND     = 0x0014
-  WM_SYSCOLORCHANGE = 0x0015
-  WM_ENDSESSION     = 0x0016
-  WM_SHOWWINDOW     = 0x0018
-  WM_WININICHANGE   = 0x001A
-  WM_SETTINGCHANGE  = WM_WININICHANGE
-  WM_DEVMODECHANGE  = 0x001B
-  WM_ACTIVATEAPP    = 0x001C
-  WM_FONTCHANGE     = 0x001D
-  WM_TIMECHANGE     = 0x001E
-  WM_CANCELMODE     = 0x001F
-  WM_SETCURSOR      = 0x0020
-  WM_MOUSEACTIVATE  = 0x0021
-  WM_CHILDACTIVATE  = 0x0022
-  WM_QUEUESYNC      = 0x0023
-  WM_GETMINMAXINFO  = 0x0024
-  WM_NOTIFY         = 0x004E
-  WM_KEYDOWN        = 0x0100
-  WM_KEYUP          = 0x0101
-  WM_CHAR           = 0x0102
-  WM_COMMAND        = 0x0111
-#
-  WM_MOUSEFIRST     = 0x0200
-  WM_MOUSEMOVE      = 0x0200
-  WM_LBUTTONDOWN    = 0x0201
-  WM_LBUTTONUP      = 0x0202
-  WM_LBUTTONDBLCLK  = 0x0203
-  WM_RBUTTONDOWN    = 0x0204
-  WM_RBUTTONUP      = 0x0205
-  WM_RBUTTONDBLCLK  = 0x0206
-  WM_MBUTTONDOWN    = 0x0207
-  WM_MBUTTONUP      = 0x0208
-  WM_MBUTTONDBLCLK  = 0x0209
-  WM_MOUSEWHEEL     = 0x020A
-  WM_MOUSELAST      = 0x020A
-  WM_DROPFILES      = 0x0233
-#
-  WM_CUT            = 0x0300
-  WM_COPY           = 0x0301
-  WM_PASTE          = 0x0302
-  WM_CLEAR          = 0x0303
-  WM_UNDO           = 0x0304
-
-  WM_HOTKEY         = 0x0312
-  WM_USER           = 0x0400
-  WM_APP            = 0x8000
-end
-
-module WStyle
-  WS_OVERLAPPED     = 0
-  WS_TABSTOP        = 0x00010000
-  WS_GROUP          = 0x00020000
-  WS_THICKFRAME     = 0x00040000
-  WS_SYSMENU        = 0x00080000
-  WS_HSCROLL        = 0x00100000
-  WS_VSCROLL        = 0x00200000
-  WS_DLGFRAME       = 0x00400000
-  WS_BORDER         = 0x00800000
-  WS_CAPTION        = 0x00c00000
-  WS_MAXIMIZE       = 0x01000000
-  WS_CLIPCHILDREN   = 0x02000000
-  WS_CLIPSIBLINGS   = 0x04000000
-  WS_DISABLED       = 0x08000000
-  WS_VISIBLE        = 0x10000000
-  WS_MINIMIZE       = 0x20000000
-  WS_CHILD          = 0x40000000
-  WS_POPUP          = 0x80000000
-  WS_VISIBLECHILD   = 0x50000000  # for util
-
-   #followings are contributed by Yuya-san.
-  WS_ICONIC           = 0x20000000
-  WS_CHILDWINDOW      = 0x40000000
-  WS_MAXIMIZEBOX      = 0x10000
-  WS_MINIMIZEBOX      = 0x20000
-  WS_OVERLAPPEDWINDOW = 0xCF0000
-  WS_POPUPWINDOW      = 0x80880000
-  WS_SIZEBOX          = 0x40000
-  WS_TILED            = 0
-  WS_TILEDWINDOW      = 0xCF0000
-end
-
-module WExStyle
-  WS_EX_TOPMOST     = 0x00000008
-  WS_EX_TRANSPARENT = 0x00000020
-  WS_EX_MDICHILD    = 0x00000040
-  WS_EX_TOOLWINDOW  = 0x00000080
-  WS_EX_CLIENTEDGE  = 0x00000200
-  WS_EX_APPWINDOW   = 0x00040000
-end
-
-=begin
-== Global Functions
-These are utility functions instead of macros.
-=== Functions
---- LOWORD(lParam)
-    Returns low-word of lParam
---- HIWORD(lParam)
-    Returns hi-word of lParam
---- MAKELPARAM(w1,w2)
-    Returns the DWORD from 2 words of w1,w2.
---- SIGNEDWORD(word)
-    changes unsigned WORD into signed WORD.
---- RGB(r,g,b)
-    returns color code from r,g,b.
-=end
-
-def LOWORD(lParam)
-  return (lParam & 0xffff)
-end
-def HIWORD(lParam)
-  return ( (lParam>>16) & 0xffff)
-end
-def MAKELPARAM(w1,w2)
-  return (w2<<16) | w1
-end
-
-def SIGNEDWORD(word)
-  if word>0x8000 then word-0x10000 else word end
-end
-
-
-def RGB(r,g,b)
-  return r+(g<<8)+(b<<16)
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/wget.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/wget.rb
deleted file mode 100644
index 42ae7b6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/wget.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-## -*- Ruby -*-
-## URLopen
-## 1999 by yoshidam
-##
-## TODO: This module should be writen by Ruby instead of wget/lynx.
-
-module WGET
-  PARAM = {
-    'wget' => nil,
-    'opts' => nil,
-    'http_proxy' => nil,
-    'ftp_proxy' => nil
-  }
-
-  def open(url, *rest)
-      raise TypeError.new("wrong argument type #{url.inspect}" +
-                          " (expected String)") if url.class != String
-
-    if url =~ /^\/|^\./ || (url !~ /^http:|^ftp:/ && FileTest.exist?(url))
-      File::open(url, *rest)
-    else
-      ENV['http_proxy'] = PARAM['http_proxy'] if PARAM['http_proxy']
-      ENV['ftp_proxy'] = PARAM['ftp_proxy'] if PARAM['ftp_proxy']
-      IO::popen(PARAM['wget'] + ' ' + PARAM['opts'] + ' ' + url)
-    end
-  end
-  module_function :open
-end
-
-[ '/usr/local/bin/wget', '/usr/bin/wget',
-  '/usr/local/bin/lynx', '/usr/bin/lynx',
-  '/usr/local/bin/lwp-request', '/usr/bin/lwp-request' ].each do |p|
-  if FileTest.executable?(p)
-    WGET::PARAM['wget'] = p
-    case p
-    when /wget$/
-      WGET::PARAM['opts'] = '-q -O -'
-    when /lynx$/
-      WGET::PARAM['opts'] = '-source'
-    when /lwp-request$/
-      WGET::PARAM['opts'] = '-m GET'
-    end
-    break
-  end
-end
-
-raise "wget not found" if !WGET::PARAM['wget']
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder-ja.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder-ja.rb
deleted file mode 100644
index 083d3d3..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder-ja.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-## -*- Ruby -*-
-## Tree builder class for Japanese encoding
-## 1998 by yoshidam
-
-require 'xml/dom/builder'
-
-module XML
-module DOM
-  class JapaneseBuilder<Builder
-    require 'kconv'
-    include Kconv
-    require 'uconv'
-    include Uconv
-
-    def nameConverter(str)
-      u8toeuc(str)
-    end
-    def cdataConverter(str)
-      u8toeuc(str)
-    end
-
-    def parseStream(stream, trim = false)
-      ## empty file
-      if ((xml = stream.gets).nil?); exit 1; end
-      ## rewrite encoding in XML decl.
-      if xml =~ /^<\?xml\sversion=.+\sencoding=.EUC-JP./i
-        xml.sub!(/EUC-JP/i, "UTF-8")
-        encoding = 'EUC-JP'
-      elsif xml =~ /^<\?xml\sversion=.+\sencoding=.Shift_JIS./i
-        xml.sub!(/Shift_JIS/i, "UTF-8")
-        encoding = "Shift_JIS"
-      elsif xml =~ /^<\?xml\sversion=.+\sencoding=.ISO-2022-JP./i
-        xml.sub!(/ISO-2022-JP/i, "UTF-8")
-        encoding = "ISO-2022-JP"
-      end
-
-      ## read body
-      xml += String(stream.read)
-
-      ## convert body encoding
-      if encoding == "EUC-JP"
-        xml = euctou8(xml)
-      elsif encoding == "Shift_JIS"
-        xml = euctou8(kconv(xml, EUC, SJIS))
-      elsif encoding == "ISO-2022-JP"
-        xml = euctou8(kconv(xml, EUC, JIS))
-      end
-
-      return parse(xml, trim)
-    end
-
-
-    def Uconv.unknown_unicode_handler(u)
-      return '®'
-    end
-  end
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder.rb
deleted file mode 100644
index 5fa7013..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/builder.rb
+++ /dev/null
@@ -1,310 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::Builder
-## 1999 by yoshidam
-
-require 'xml/parser'
-require 'xml/dom/core'
-
-=begin
-= XML::DOM::Builder
-
-== Module XML
-
-=end
-module XML
-module DOM
-
-=begin
-== Class XML::DOM::Builder (XML::SimpleTreeBuilder)
-
-=== superclass
-XML::Parser
-
-=end
-  class Builder<Parser
-    include XML::DOM
-
-    attr :createCDATASection, true
-    attr :createEntityReference, true
-
-    ## replace 'open' by WGET::open
-    begin
-      require 'wget'
-      include WGET
-    rescue
-      ## ignore
-    end
-
-=begin
-=== Class Methods
-
-    --- DOM::Builder.new(level = 0, *args)
-
-Constructor of DOM builder.
-
-usage:
-parser = XML::SimpleTreeBuilder.new(level)
-
-  level: 0 -- ignore default events (defualt)
-         1 -- catch default events and create the Comment,
-              the EntityReference, the XML declaration (as PI) and
-              the non-DOM-compliant DocumentType nodes.
-
-=end
-
-    def self.new(level = 0, *args)
-      document = Document.new
-      ret = super(*args)
-      external = false
-      external = true if args[0].is_a?(SimpleTreeBuilder)
-      ret.__initialize__(level, document, external)
-      ret
-    end
-
-    ## Constructor
-    ##  parser = XML::SimpleTreeBuilder.new(level)
-    ##    level: 0 -- ignore default events (defualt)
-    ##           1 -- catch default events and create the Comment,
-    ##                the EntityReference, the XML declaration (as PI) and
-    ##                the non-DOM-compliant DocumentType nodes.
-    def __initialize__(level, document, external)
-      @tree = nil
-      @level = level
-      @document = document
-      @external = external
-      @createCDATASection = false
-      @createEntityReference = false
-      if @level > 0
-        @createCDATASection = true
-        @createEntityReference = true
-        def self.default(data); defaultHandler(data); end
-      end
-    end
-
-=begin
-=== Methods
-
-    --- Builder#nameConverter(str)
-
-User redefinable name encoding converter
-
-=end
-    ## User redefinable name encoding converter
-    def nameConverter(str)
-      str
-    end
-
-=begin
-    --- Builder#cdataConverter(str)
-
-User redefinable cdata encoding converter
-
-=end
-    ## User redefinable cdata encoding converter
-    def cdataConverter(str)
-      str
-    end
-
-=begin
-=== Methods
-    --- Builder#parse(xml, parse_ext = false)
-
-parse string or stream of XML contents.
-
-  xml:       string or stream of XML contents
-  parse_ext: flag whether parse external entities or not
-
-ex. doctree = parser.parse(xml, parse_ext)
-
-=end
-    ## Parse
-    ##   doctree = parser.parse(xml, parse_ext)
-    ##     xml:       string or stream of XML contents
-    ##     parse_ext: flag whether parse external entities or not
-    def parse(xml, parse_ext = false)
-      if @external
-        @tree = @document.createDocumentFragment
-      else
-        @tree = @document
-      end
-      @parse_ext = parse_ext
-      @current = @tree
-      @inDocDecl = 0
-      @decl = ""
-      @inDecl = 0
-      @idRest = 0
-      @extID = nil
-      @cdata_f = false
-      @cdata_buf = ''
-      super(xml)
-      @tree
-    end
-
-    def text
-      return if @cdata_buf == ''
-      textnode = @document.createTextNode(cdataConverter(@cdata_buf))
-      @current.appendChild(textnode)
-      @cdata_buf = ''
-    end
-  
-    def startElement(name, data)
-      text
-      elem = @document.createElement(nameConverter(name))
-      data.each do |key, value|
-        attr = @document.createAttribute(nameConverter(key))
-        attr.appendChild(@document.createTextNode(cdataConverter(value)))
-        elem.setAttributeNode(attr)
-      end
-      @current.appendChild(elem)
-      @current = elem
-    end
-
-    def endElement(name)
-      text
-      @current = @current.parentNode
-    end
-
-    def character(data)
-      @cdata_buf << data
-     end
-
-    def processingInstruction(name, data)
-      text
-      pi = @document.createProcessingInstruction(nameConverter(name),
-                                                 cdataConverter(data))
-      ## PI data should not be converted
-      @current.appendChild(pi)
-    end
-
-    def externalEntityRef(context, base, systemId, publicId)
-      text
-      tree = nil
-      if @parse_ext
-        extp = self.class.new(@level, self, context)
-        extp.setBase(base) if base
-        file = systemId
-        if systemId !~ /^\/|^\.|^http:|^ftp:/ && !base.nil?
-          file = base + systemId
-        end
-        begin
-          tree = extp.parse(open(file).read, @parse_ext)
-        rescue XML::ParserError
-          raise XML::ParserError.new("#{systemId}(#{extp.line}): #{$!}")
-        rescue Errno::ENOENT
-          raise Errno::ENOENT.new("#{$!}")
-        end
-        extp.done
-      end
-      if @createEntityReference
-        entref = @document.createEntityReference(nameConverter(context))
-        @current.appendChild(entref)
-        entref.appendChild(tree) if tree
-      else
-        @current.appendChild(tree) if tree
-      end
-    end
-
-    def startCdata
-      return unless @createCDATASection
-      text
-      @cdata_f = true
-    end
-
-    def endCdata
-      return unless @createCDATASection
-      cdata = @document.createCDATASection(cdataConverter(@cdata_buf))
-      @current.appendChild(cdata)
-      @cdata_buf = ''
-      @cdata_f = false
-    end
-
-    def comment(data)
-      text
-      comment = @document.createComment(cdataConverter(data))
-      ## Comment should not be converted
-      @current.appendChild(comment)
-    end
-
-    def defaultHandler(data)
-      if data =~ /^\&(.+);$/
-        eref = @document.createEntityReference(nameConverter($1))
-        @current.appendChild(eref)
-      elsif data =~ /^<\?xml\s*([\s\S]*)\?>$/
-        ## XML declaration should not be a PI.
-        pi = @document.createProcessingInstruction("xml",
-                                       cdataConverter($1))
-        @current.appendChild(pi)
-      elsif @inDocDecl == 0 && data =~ /^<\!DOCTYPE$/
-        @inDocDecl = 1
-        @inDecl = 0
-        @idRest = 0
-        @extID = nil
-      elsif @inDocDecl == 1
-        if data == "["
-          @inDocDecl = 2
-        elsif data == ">"
-          if !@extID.nil?
-##            @current.nodeValue = @extID
-          end
-          @inDocDecl = 0
-##          @current = @current.parentNode
-        elsif data == "SYSTEM"
-          @idRest = 1
-          @extID = data
-        elsif data == "PUBLIC"
-          @idRest = 2
-          @extID = data
-        elsif data !~ /^\s+$/
-          if @idRest > 0
-            ## SysID or PubID
-            @extID <<= " " + data
-            @idRest -= 1
-          else
-            ## Root Element Type
-            docType = data
-##            doctype = DocumentType.new(nameConverter(docType))
-##            @current.appendChild(doctype)
-##            @current = doctype
-          end
-        end
-      elsif @inDocDecl == 2
-        if @inDecl == 0
-          if data == "]"
-            @inDocDecl = 1
-          elsif data =~ /^<\!/
-            @decl = data
-            @inDecl = 1
-          elsif data =~ /^%(.+);$/
-            ## PERef
-##            cdata = @document.createTextNode(nameConverter(data))
-##            @current.appendChild(cdata)
-          else
-            ## WHITESPCAE
-          end
-        else ## inDecl == 1
-          if data == ">"
-            @decl <<= data
-            @inDecl = 0
-            ## Markup Decl
-##            cdata = @document.createTextNode(cdataConverter(@decl))
-            ## Markup decl should not be converted
-##            @current.appendChild(cdata)
-          elsif data =~ /^\s+$/
-            ## WHITESPACE
-            @decl << " "
-          else
-            @decl << data
-          end
-        end
-      else
-        ## maybe WHITESPACE
-##        cdata = @document.createTextNode(cdataConverter(data))
-##        @current.appendChild(cdata)
-      end
-    end
-
-  end
-  end
-
-  SimpleTreeBuilder = DOM::Builder
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/core.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/core.rb
deleted file mode 100644
index ab260e7..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/core.rb
+++ /dev/null
@@ -1,3276 +0,0 @@
-## -*- Ruby -*-
-## XML::SimpleTree
-## 1998-2000 by yoshidam
-##
-## XPointer support is contributed by Masaki Fukushima 
-##     <fukusima at goto.info.waseda.ac.jp>
-##                     
-
-require 'singleton'
-
-=begin
-
-= XML::DOM (XML::SimpleTree)
-
-=end
-
-
-=begin
-
-== Module XML
-
-=end
-
-module XML
-
-=begin
-=== Class Methods
-
-    --- XML.charRef(s)
-
-replace character '&','<','>',"'",'"' in string s to character reference.
-=end
-
-  def XML.charRef(s)
-    str = s.dup
-    str.gsub!("&", "&")
-    str.gsub!("<", "<")
-    str.gsub!(">", ">")
-    str.gsub!("'", "'")
-    str.gsub!('"', """)
-    str
-  end
-
-=begin
-
-== Module XML::Spec
-
-Constants related to XML Specification.
-
-=end
-  ## [Masaki Fukushima]
-  module Spec
-    ## Constants related to XML Specification
-    ##   (W3C Recommendation or Working Draft)
-
-    # XML
-    Letter_s = '[a-zA-Z]'
-    Digit_s = '\d'
-    NameChar_s = "(#{Letter_s}|#{Digit_s}|[\\.\\-_:])"
-    Name_s = "(#{Letter_s}|[_:])#{NameChar_s}*"
-    SkipLit_s = "(\"[^\"]*\"|'[^']*')"
-    Name = /^#{Name_s}$/o
-    SkipList = /^#{SkipLit_s}$/o
-
-    # XPointer
-    Instance_s = "(\\+|-)?[1-9]#{Digit_s}*"
-    Instance = /^#{Instance_s}$/o
-
-  end
-
-=begin
-
-== Module XML::DOM (XML::SimpleTree)
-
-DOM-like APIs module.
-
-=end
-
-  module DOM
-
-    ## Fundamental Interfaces
-
-=begin
-
-== Class XML::DOM::DOMException
-
-=== superclass
-Exception
-
-DOM exception.
-=end
-
-    class DOMException<Exception
-      INDEX_SIZE_ERR = 1
-      WSTRING_SIZE_ERR = 2
-      HIERARCHY_REQUEST_ERR  = 3
-      WRONG_DOCUMENT_ERR = 4
-      INVALID_NAME_ERR = 5
-      NO_DATA_ALLOWED_ERR = 6
-      NO_MODIFICATION_ALLOWED_ERR = 7
-      NOT_FOUND_ERR = 8
-      NOT_SUPPORTED_ERR = 9
-      INUSE_ATTRIBUTE_ERR = 10
-      ERRMSG = [
-        "no error",
-        "index size",
-        "wstring size",
-        "hierarchy request",
-        "wrong document",
-        "invalid name",
-        "no data allowed",
-        "no modification allowed",
-        "not found",
-        "not supported",
-        "inuse attribute"
-      ]
-
-=begin
-=== Class Methods
-
-    --- DOMException.new(code = 0)
-
-generate DOM exception.
-=end
-
-      def initialize(code = 0)
-        @code = code
-      end
-
-=begin
-=== Methods
-
-    --- DOMException#code()
-
-return code of exception.
-
-=end
-      def code
-        @code
-      end
-
-=begin
-
-    --- DOMException#to_s()
-
-return the string representation of the error.
-
-=end
-      def to_s
-        ERRMSG[@code]
-      end
-    end
-
-=begin
-== Class XML::DOM::DOMImplementation
-
-=end
-    class DOMImplementation
-      include Singleton
-
-=begin
-   --- DOMImplementation#hasFeature(feature, version)
-
-test if DOM implementation has correct feature and version.
-
-=end
-      def hasFeature(feature, version)
-        if feature =~ /^XML$/i && (version.nil? || version == "1.0")
-          return true
-        end
-        false
-      end
-    end
-
-=begin
-== Class XML::DOM::Node
-
-=end
-    class Node
-      ## [DOM]
-      NODE_NODE = 0
-      ELEMENT_NODE = 1
-      ATTRIBUTE_NODE = 2
-      TEXT_NODE = 3
-      CDATA_SECTION_NODE = 4
-      ENTITY_REFERENCE_NODE = 5
-      ENTITY_NODE = 6
-      PROCESSING_INSTRUCTION_NODE = 7
-      COMMENT_NODE  = 8
-      DOCUMENT_NODE = 9
-      DOCUMENT_TYPE_NODE = 10
-      DOCUMENT_FRAGMENT_NODE = 11
-      NOTATION_NODE = 12
-
-      ## non-DOM
-#        NODE = 0
-#        ELEMENT = 1
-#        ATTRIBUTE = 2
-#        TEXT = 3
-#        CDATA_SECTION = 4
-#        ENTITY_REFERENCE = 5
-#        ENTITY = 6
-#        PI = 7
-#        PROCESSING_INSTRUCTION = 7
-#        COMMENT  = 8
-#        DOCUMENT = 9
-#        DOCUMENT_TYPE = 10
-#        DOCUMENT_FRAGMENT = 11
-#        NOTATION = 12
-
-=begin
-=== Class Methods
-
-    --- Node.new(*children)
-
-make a Node.
-children is a Array of child, or sequence of child.
-child is a String or Node.
-
-=end
-      ## new([child1, child2, ...]) or
-      ## new(child1, child2, ...)
-      ##     child?: String or Node
-      def initialize(*children)
-        @parent = nil
-        @children = nil
-        self.childNodes = children if children.length > 0
-      end
-
-=begin
-=== Methods
-
-    --- Node#parentNode
-
-[DOM]
-return parent node.
-
-=end
-      ## [DOM]
-      def parentNode
-        @parent
-      end
-
-=begin
-    --- Node#parentNode=(p)
-
-set node p as parent.
-=end
-
-      def parentNode=(p)
-        @parent = p
-      end
-
-=begin
-    --- Node#nodeType
-
-[DOM]
-return nodetype.
-
-=end
-      ## [DOM]
-      def nodeType
-        NODE_NODE
-      end
-
-=begin
-    --- Node#nodeName
-
-[DOM]
-return nodename.
-
-=end
-      ## [DOM]
-      def nodeName
-        "#node"
-      end
-
-#      def nodeName=(p)
-#        @name = p
-#      end
-
-=begin
-    --- Node#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue; nil; end
-
-=begin
-    --- Node#nodeValue=(p)
-
-[DOM]
-set nodevalue as p.
-=end
-      ## [DOM]
-      def nodeValue=(p)
-        ## no effect
-      end
-
-=begin
-    --- Node#childNodes()
-
-[DOM]
-if method has block, apply block for children nodes.
-without block, return children nodelist.
-=end
-      ## [DOM]
-      def childNodes
-        if iterator?
-          @children.each do |child|
-            yield(child)
-          end if @children
-        else
-          return @children if !@children.nil?
-          @children = NodeList.new
-        end
-      end
-
-
-=begin
-    --- Node#childNodes=(p)
-
-set child node as p.
-=end
-      def childNodes=(p)
-        if @children.nil?
-          @children = NodeList.new
-        else
-          @children.to_a.clear
-        end
-        if p.nil? || (p.is_a?(Array) && p.length == 0)
-          return
-        end
-        p.flatten!
-        p.each do |child|
-          if child.is_a?(String)
-            c = Text.new(child)
-            @children.push(c)
-            c.parentNode = self
-          elsif child.is_a?(Node)
-            @children.push(child)
-            child.parentNode = self
-          else
-            raise "parameter error"
-          end
-        end if p
-      end
-
-=begin
-    --- Node#attributes
-
-[DOM]
-return attributes of node(but always return nil?).
-=end
-      ## [DOM]
-      def attributes
-        nil
-      end
-
-      ## proper parameter type?
-#      def attributes=(p)
-#      end
-
-=begin
-    --- Node#[]=(index, nodes)
-
-set children node as nodes with []-style.
-=end
-      def []=(index, nodes)
-        @children[index..index] = nodes
-        @children.each do |child|
-          child.parentNode = self
-        end if @children
-      end
-
-=begin
-    --- Node#[](index)
-
-get children node with []-style.
-=end
-      def [](index)
-        @children[index]
-      end
-
-=begin
-    --- Node#+(node)
-
-concat node to Node.
-=end
-      def +(node)
-        [self, node]
-      end
-
-=begin
-    --- Node#to_s
-
-returns the string representation of the Node.
-=end
-      def to_s
-        @children.to_s
-      end
-
-=begin
-    --- Node#dump(depth = 0)
-
-dump the Node.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print nodeName + "\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-      end
-
-=begin
-    --- Node#inspect()
-
-returns the human-readable string representation.
-=end
-      def inspect
-        "#<#{self.class}: #{self.nodeName}>"
-      end
-
-=begin
-    --- Node#firstChild()
-
-[DOM]
-return the first child node.
-=end
-      ## [DOM]
-      def firstChild
-        return nil if !@children || @children.length == 0
-        return @children[0]
-      end
-
-=begin
-    --- Node#lastChild()
-
-[DOM]
-return the last child node.
-=end
-      ## [DOM]
-      def lastChild
-        return nil if !@children || @children.length == 0
-        return @children[-1]
-      end
-
-=begin
-    --- Node#previousSibling()
-
-[DOM]
-return the previous sibling node.
-=end
-      ## [DOM]
-      def previousSibling
-        return nil if !@parent
-        prev = nil
-        @parent.childNodes do |child|
-          return prev if child == self
-          prev = child
-        end
-        nil
-      end
-
-=begin
-    --- Node#nextSibling()
-
-[DOM]
-return the next sibling node.
-=end
-      ## [DOM]
-      def nextSibling
-        return nil if !@parent
-        nexts = nil
-        @parent.childNodes.reverse.each do |child|
-          return nexts if child == self
-          nexts = child
-        end
-        nil
-      end
-
-      def _getChildIndex(node)
-        index = 0
-        @children.each do |child|
-          if child == node
-            return index
-          end
-          index += 1
-        end
-        nil
-      end
-
-      def _removeFromTree
-        parent = parentNode
-        if parent
-          parent.removeChild(self)
-        end
-      end
-
-      def _checkNode(node)
-        raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-      end
-
-      def _insertNodes(index, node)
-        if node.nodeType == DOCUMENT_FRAGMENT_NODE
-
-          node.childNodes.to_a.each_with_index do |n, i|
-            if index == -1
-              _insertNodes(-1, n)
-            else
-              _insertNodes(index + i, n)
-            end
-          end
-        elsif node.is_a?(Node)
-          ## to be checked
-          _checkNode(node)
-          node._removeFromTree
-          if index == -1
-            @children.push(node)
-          else
-            @children[index, 0] = node
-          end
-          node.parentNode = self
-        else
-          raise ArgumentError, "invalid value for Node"
-        end
-      end
-
-      def _removeNode(index, node)
-        @children[index, 1] = nil
-        node.parentNode = nil
-      end
-
-#  =begin
-#      --- Node#insertAfter(newChild, refChild)
-#
-#  insert newChild into the node after refChild.
-#  =end
-#        def insertAfter(newChild, refChild)
-#          if @children.nil? || @children.length == 0
-#            raise DOMException.new(DOMException::NOT_FOUND_ERR)
-#          end
-#          index = _getChildIndex(refChild)
-#          raise DOMException.new(DOMException::NOT_FOUND_ERR) if index.nil?
-#          _insertNodes(index, newChild)
-#        end
-
-=begin
-    --- Node#insertBefore(newChild, refChild)
-
-[DOM]
-insert newChild into the node before refChild.
-=end
-      ## [DOM]
-      def insertBefore(newChild, refChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(refChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _insertNodes(index, newChild)
-      end
-
-=begin
-    --- Node#replaceChild(newChild, oldChild)
-
-[DOM]
-replace the child node oldChild with newChild.
-=end
-      ## [DOM]
-      def replaceChild(newChild, oldChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(oldChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _removeNode(index, oldChild)
-        _insertNodes(index, newChild)
-      end
-
-=begin
-    --- Node#removeChild(oldChild)
-
-[DOM]
-remove the children node oldChild.
-=end
-      ## [DOM]
-      def removeChild(oldChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(oldChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _removeNode(index, oldChild)
-        oldChild
-      end
-
-=begin
-    --- Node#appendChild(newChild)
-
-[DOM]
-adds the node newChild to the end of the list of children of this node.
-=end
-      ## [DOM]
-      def appendChild(newChild)
-        @children = NodeList.new if !@children
-        _insertNodes(-1, newChild)
-      end
-
-=begin
-    --- Node#hasChildNodes()
-
-[DOM]
-returns true if node has children, or return false if node has no children.
-=end
-      ## [DOM]
-      def hasChildNodes
-        !@children.nil? && @children.length > 0
-      end
-
-      ## get the Node object by IDs
-      ## [experimental implement]
-      def _searchID(value, ids = nil)
-        if ids.nil?
-          doc = nil
-          if nodeType == DOCUMENT_NODE
-            doc = self
-          elsif !ownerDocument.nil?
-            doc = ownerDocument
-          else
-            return nil
-          end
-          ids = doc._getIDAttrs
-        end
-        if nodeType == ELEMENT_NODE && _getIDVals(ids).include?(value)
-          return self
-        elsif !@children.nil?
-          @children.each do |node|
-            if !(match = node._searchID(value, ids)).nil?
-              return match
-            end
-          end
-        end
-        return nil
-      end
-
-      def _getMyLocation(parent)
-        index = parent._getChildIndex(self)
-        if !index.nil?
-          "child(#{index + 1},#all)"
-        else
-          nil
-        end
-      end
-
-=begin
-    --- Node#makeXPointer(use_id = true)
-
-return XPointer's expression of this node.
-=end
-      def makeXPointer(use_id = true)
-        if use_id && !attributes.nil? && !(idvals = _getIDVals).empty?
-          "id(#{idvals[0]})"
-        elsif @parent.nil? || @parent.nodeType == DOCUMENT_NODE
-          "root()"
-        else
-          @parent.makeXPointer(use_id) + "." + self._getMyLocation(@parent)
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _child(reverse = false)
-        return if @children.nil?
-        @children.reversible_each(reverse) do |child|
-          yield child
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _descendant(reverse = false)
-        return if @children.nil?
-        @children.reversible_each(reverse) do |child|
-          yield child
-          child._descendant(reverse) do |node|
-            yield node
-          end
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _ancestor(reverse = false)
-        return if @parent.nil?
-        yield @parent if !reverse
-        @parent._ancestor(reverse) do |node| yield node end
-        yield @parent if reverse
-      end
-
-      ## [Masaki Fukushima]
-      def __sibling(reverse, only_appeared_before_self)
-        return if @parent.nil?
-        self_appeared = false
-        @parent.childNodes.reversible_each(reverse) do |node|
-          if node == self
-            self_appeared = true
-            next
-          end
-          if only_appeared_before_self
-            break if self_appeared
-            yield node
-          else # only appeared after self
-            yield node if self_appeared
-          end
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _psibling(reverse = false)
-        __sibling(!reverse, reverse) do |sib|
-          yield sib
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _fsibling(reverse = false)
-        __sibling(reverse, reverse) do |sib|
-          yield sib
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _preceding(reverse = false)
-        return if @parent.nil?
-        prev_sib = previousSibling
-        if prev_sib
-          prev_sib._preceding(reverse)   {|node| yield node} if reverse
-          yield prev_sib
-          prev_sib._descendant(!reverse) {|node| yield node}
-          prev_sib._preceding(reverse)   {|node| yield node} if !reverse
-        else
-          @parent._preceding(reverse) {|node| yield node} if reverse
-          yield @parent
-          @parent._preceding(reverse) {|node| yield node} if !reverse
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _following(reverse = false)
-        return if @parent.nil?
-        next_sib = nextSibling
-        if next_sib
-          next_sib._following(reverse)  {|node| yield node} if reverse
-          yield next_sib
-          next_sib._descendant(reverse) {|node| yield node}
-          next_sib._following(reverse)  {|node| yield node} if !reverse
-        else
-          @parent._following(reverse) {|node| yield node} if reverse
-          yield @parent
-          @parent._following(reverse) {|node| yield node} if !reverse
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _matchAttribute?(attr, value)
-        case value
-        when '*'
-          return !attr.nil?
-        when '#IMPLIED'
-          return attr.nil?
-        else
-          return false if attr.nil?
-        end
-
-        case value
-        when /^"([^"]*)"$/, /^'([^']*)'$/
-          ignore_case = false
-          value = $1
-        when Spec::Name
-          ignore_case = true
-        else
-          raise "invalid attribute value: #{value}"
-        end
-        if ignore_case
-          return attr.nodeValue.downcase == value.downcase
-        else
-          return attr.nodeValue == value
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _matchNodeAttributes?(node, attributes)
-        return true     if attributes.nil?
-        raise TypeError if !attributes.is_a?(Hash)
-        return true     if attributes.length == 0
-        return false    if node.nodeType != ELEMENT_NODE
-
-        attributes.each do |name, value|
-          case name
-          when '*'
-            return catch(:match) {
-              node.attributes.each do |attr|
-                throw(:match, true) if _matchAttribute?(attr, value)
-              end
-              false
-            }
-          when Spec::Name
-            attr = node.attributes[name] unless node.attributes.nil?
-            return _matchAttribute?(attr, value)
-          else
-            raise "invalid attribute name: '#{name}'"
-          end
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _matchNodeType?(node, ntype)
-        case ntype
-        when '#element'
-          return (node.nodeType == ELEMENT_NODE)
-        when '#pi'
-          return (node.nodeType == PROCESSING_INSTRUCTION_NODE)
-        when '#comment'
-          return (node.nodeType == COMMENT_NODE)
-        when '#text'
-          return (node.nodeType == TEXT_NODE ||
-                  node.nodeType == CDATA_SECTION_NODE)
-        when '#cdata'
-          return (node.nodeType == CDATA_SECTION_NODE)
-        when '#all'
-          case node.nodeType
-          when ELEMENT_NODE, PROCESSING_INSTRUCTION_NODE, COMMENT_NODE,
-              TEXT_NODE, CDATA_SECTION_NODE
-            return true
-          else
-            return false
-          end
-        when /^#/
-          raise "unknown node type: '#{ntype}'"
-        when Spec::Name
-          return (node.nodeType == ELEMENT_NODE && node.nodeName == ntype)
-        else
-          raise "invalid element type: '#{ntype}'"
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _matchNode?(node, ntype, attributes)
-        _matchNodeType?(node, ntype) &&
-          _matchNodeAttributes?(node, attributes)
-      end
-
-      ## [Masaki Fukushima]
-      def _nodesByRelativeLocationTerm(location)
-        if location !~ /^([a-z]+)\(([^\)]*)\)$/
-          raise "invalid relative location: '#{location}'"
-        end
-        keyword = $1
-        args = $2.split(/,/)
-        number = args.shift
-        ntype = args.shift
-        ntype = '#element' if ntype.nil?
-        attributes = args
-
-        reverse = false
-        # check instance number
-        case number
-        when nil, ''
-          raise "missing instance number: '#{location}'"
-        when 'all'
-        when Spec::Instance
-          number = number.to_i
-          if number < 0
-            reverse = true
-            number = -number
-          end
-        else
-          raise "unknown instance number: '#{number}'"
-        end
-
-        # check attributes
-        if attributes.length % 2 != 0
-          raise " missing attribute value: '#{location}'"
-        end
-        attributes = Hash[*attributes]
-
-        # iterate over nodes specified with keyword
-        i = 0
-        self.send("_#{keyword}", reverse) do |node|
-          next unless _matchNode?(node, ntype, attributes)
-          if number == "all"
-            yield node
-          else
-            i += 1
-            if i >= number
-              yield node
-              break
-            end
-          end
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _nodesByLocationTerms(location, pre_keyword = nil)
-        if location !~ /^([a-z]*)\(([^)]*)\)(\.(.+))?$/
-          raise "invalid location: \"#{location}\""
-        end
-        keyword = $1
-        args = $2
-        rest = $4
-        ## omitted keyword
-        keyword = pre_keyword if keyword == ''
-        if keyword.nil?
-          raise "cannot determine preceding keyword: \"#{location}\""
-        end
-
-        case keyword
-        when 'child', 'descendant', 'ancestor', 'psibling', 'fsibling',
-            'preceding', 'following'
-          # relative location term
-          _nodesByRelativeLocationTerm("#{keyword}(#{args})") do |node|
-            if rest.nil?
-              yield node
-            else
-              node._nodesByLocationTerms(rest, keyword) do |n|
-                yield n
-              end
-            end
-          end
-        when 'attr'
-          # attribute location term
-          if args !~ Spec::Name
-            raise "invalid attribute name: '#{args}'"
-          end
-          attr = attributes[args]
-          value = (attr.nil? ? nil : Text.new(attr.nodeValue))
-          if rest.nil?
-            yield value
-          elsif !value.nil?
-            value._nodesByLocationTerms(rest) do |node|
-              yield node
-            end
-          end
-        when 'span', 'string'
-          raise "unsupported keyword: '#{keyword}'"
-        else
-          raise "unknown keyword: '#{keyword}'"
-        end
-      end
-
-      ## [Masaki Fukushima]
-      def _getNodeByAbsoluteLocationTerm(location)
-        case location
-        when 'root()', ''
-          if nodeType == DOCUMENT_NODE
-            root = documentElement
-          elsif !ownerDocument.nil?
-            root = ownerDocument.documentElement
-          end
-          root = self if root.nil?
-          return root
-        when 'origin()'
-          return self
-        when /^id\(([^\)]*)\)$/
-          value = $1
-          raise "invalid id value: #{value}" if value !~ Spec::Name
-          return _searchID(value)
-        when /^html\(([^\)]*)\)$/
-          value = $1
-          return getNodesByXPointer("root().descendant(1,A,NAME,\"#{value}\")")[0]
-        else
-          raise "unknown keyword: #{location}"
-        end
-      end
-
-=begin
-    --- Node#getNodeByXPointer(pointer)
-
-return node indicated by the XPointer pointer.
-=end
-      ## [Masaki Fukushima]
-      def getNodesByXPointer(pointer)
-        if pointer !~ /^([a-z]+)\(([^)]*)\)(\.(.+))?$/
-          raise "invalid XPointer: \"#{pointer}\""
-        end
-        keyword = $1
-        args = $2
-        rest = $4
-
-        case keyword
-        when 'root', 'origin', 'id', 'html'
-          src = _getNodeByAbsoluteLocationTerm("#{keyword}(#{args})")
-        else
-          src = _getNodeByAbsoluteLocationTerm("root()")
-          rest = pointer
-        end
-
-        ret = NodeList.new
-        if src.nil?
-          # no match
-        elsif rest.nil?
-          yield src if iterator?
-          ret << src
-        else
-          src._nodesByLocationTerms(rest) do |node|
-            yield node if iterator?
-            ret << node
-          end
-        end
-        ret
-      end
-
-=begin
-    --- Node#ownerDocument()
-
-[DOM]
-Document object associated with this node.
-=end
-      ## [DOM]
-      ## Floating objects are not owned by any documents.
-      def ownerDocument
-        return @ownerDocument if @ownerDocument
-        parent = self.parentNode
-        return nil if parent.nil?
-        if parent.nodeType == DOCUMENT_NODE
-          return parent
-        else
-          return parent.ownerDocument
-        end
-      end
-
-      def ownerDocument=(document); @ownerDocument = document; end
-
-
-=begin
-    --- Node#cloneNode()
-
-[DOM]
-return the copy of the Node.
-=end
-      ## [DOM]
-      def cloneNode(deep = true, *args)
-        ret = self.class.new(*args)
-        if (deep)
-          @children.each do |child|
-            ret.appendChild(child.cloneNode(true))
-          end
-        end if @children
-        ret
-      end
-
-=begin
-    --- Node#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      ## trim extra whitespaces
-      ## if attribute 'xml:space' is 'preserve',
-      ## don't trim any white spaces
-      def trim(preserve = false)
-        return nil if @children.nil?
-        children = @children.to_a.dup
-        children.each do |child|
-          if !preserve && (child.nodeType == TEXT_NODE ||
-                           child.nodeType == CDATA_SECTION_NODE)
-            if child.trim == ""
-              self.removeChild(child)
-            end
-          else
-            child.trim(preserve)
-          end
-        end
-        nil
-      end
-
-
-    end
-
-=begin
-== Class XML::DOM::NamedNodeMap
-
-=end
-
-    class NamedNodeMap
-
-=begin
-=== Class Methods
-
-    --- NamedNodeMap.new(nodes = nil)
-
-creates a new NamedNodeMap.
-=end
-      def initialize(nodes = nil)
-        @nodes = {}
-        nodes.each do |node|
-          @nodes[node.nodeName] = node
-        end if nodes
-      end
-
-=begin
-=== Methods
-
-    --- NamedNodeMap#getNamedItem(name)
-
-[DOM]
-retrieves a node specified by name.
-=end
-      ## [DOM]
-      def getNamedItem(name)
-        @nodes[name]
-      end
-
-=begin
-    --- NamedNodeMap#setNamedItem(node)
-
-[DOM]
-adds a node using its nodeName attribute.
-=end
-      ## [DOM]
-      def setNamedItem(node)
-        @nodes[node.nodeName] = node
-      end
-
-=begin
-    --- NamedNodeMap#removeNamedItem(name)
-
-[DOM]
-removes a node specified by name.
-=end
-      ## [DOM]
-      def removeNamedItem(name)
-        ret = @nodes[name]
-        @nodes[name] = nil
-        ret
-      end
-
-=begin
-    --- NamedNodeMap#item(index)
-
-[DOM]
-returns the index item in the map.
-=end
-      ## [DOM]
-      def item(index)
-        v = @nodes.to_a[index]
-        return v[1] if v
-        nil
-      end
-
-=begin
-    --- NamedNodeMap#[](name)
-
-returns nodes associated to name.
-=end
-      def [](name)
-        @nodes[name]
-      end
-
-=begin
-    --- NamedNodeMap#[]=(name, node)
-
-sets node named name.
-=end
-      def []=(name, node)
-        raise "parameter error" if node.nodeName != name
-        @nodes[name] = node
-      end
-
-=begin
-    --- NamedNodeMap#each()
-
-iterates over each pair of name and node(name, node) of the namedNodeMap.
-=end
-      def each
-        @nodes.each do |key, value|
-          yield(value)
-        end
-      end
-
-=begin
-    --- NamedNodeMap#size()
-
-[DOM]
-returns the number of nodes in the map.
-=end
-      ## [DOM]
-      def size
-        @nodes.length
-      end
-      alias length size
-
-      ## get nodeValues by names
-      ##   names ::= name ('|' name)*
-      def _getValues(names)
-        ret = []
-        names.split('|').each do |name|
-          if !@nodes[name].nil?
-            ret.push(@nodes[name].nodeValue)
-          end
-        end
-        ret
-      end
-    end
-
-=begin
-== Class XML::DOM::NodeList
-
-
-=end
-    class NodeList
-
-=begin
-=== Class Methods
-
-    --- NodeList.new(nodes = nil)
-
-creates a new NodeList.
-=end
-      def initialize(nodes = nil)
-        if nodes.nil?
-          @nodes = []
-        elsif nodes.is_a?(Array)
-          @nodes = nodes
-        else
-          raise "parameter error"
-        end
-      end
-
-=begin
-=== Methods
-
-    --- NodeList#item(index)
-
-[DOM]
-return the indexth item in the NodeList.
-=end
-      ## [DOM]
-      def item(index)
-        @nodes[index]
-      end
-
-=begin
-    --- NodeList#size()
-
-return size of NodeList.
-=end
-      def size
-        @nodes.length
-      end
-      alias length size
-
-=begin
-    --- NodeList#[](index)
-
-return indexth node of the NodeList.
-=end
-      def [](index)
-        @nodes[index]
-      end
-
-=begin
-    --- NodeList#[]=(*p)
-
-set node of indexth node of the NodeList.
-=end
-      def []=(*p)
-        if p.length == 2
-          @nodes[p[0]] = p[1]
-        elsif p.length == 3
-          @nodes[p[0], p[1]] = p[2]
-        end
-      end
-
-=begin
-    --- NodeList#each
-
-iterates over each node of the NodeList.
-=end
-      def each
-        @nodes.each do |value|
-          yield(value)
-        end
-      end
-
-=begin
-    --- NodeList#reversible_each(reverse = false)
-
-iterates over each node of the reversed NodeList.
-=end
-      ## [Masaki Fukushima]
-      def reversible_each(reverse = false)
-        if !reverse
-          @nodes.each do |value|
-            yield(value)
-          end
-        else
-          @nodes.reverse_each do |value|
-            yield(value)
-          end
-        end
-      end
-
-=begin
-    --- NodeList#push(*nodes)
-
-adds nodes into the NodeList.
-=end
-      def push(*nodes)
-        nodes.each do |node|
-          if node.is_a?(Array)
-            self.push(*node)
-          elsif node.is_a?(NodeList)
-            @nodes.concat(node.to_a)
-          elsif node.is_a?(Node)
-            @nodes << node
-          else
-            raise "parameter error"
-          end
-        end
-        self
-      end
-
-=begin
-    --- NodeList#concat(*nodes)
-
-alias of NodeList#push.
-=end
-      alias concat push
-
-=begin
-    --- NodeList#pop
-
-pops and returns the last node of the NodeList.
-=end
-      def pop
-        @nodes.pop
-      end
-
-=begin
-    --- NodeList#shift
-
-removes and returns the first node of the NodeList.
-=end
-      def shift
-        @nodes.shift
-      end
-
-=begin
-    --- NodeList#to_s
-
-returns the string representation of the NodeList.
-=end
-      def to_s
-        @nodes.to_s
-      end
-
-=begin
-    --- NodeList#reverse
-
-returns the reversed NodeList.
-=end
-      def reverse
-        @nodes.reverse
-      end
-
-=begin
-    --- NodeList#to_a
-
-converts the NodeList into an array.
-=end
-      def to_a
-        @nodes
-      end
-
-=begin
-    --- NodeList#+(nodes)
-
-return the newly created concatenated NodeList.
-=end
-      def +(nodes)
-        if nodes.nil?
-          NodeList.new(@nodes)
-        elsif nodes.is_a?(Array)
-          NodeList.new(@nodes + nodes)
-        elsif nodes.is_a?(NodeList)
-          NodeList.new(@nodes + nodes.to_a)
-        elsif nodes.is_a?(Node)
-          NodeList.new(@nodes + [nodes])
-        else
-          raise "parameter error"
-        end
-      end
-
-=begin
-    --- NodeList#<<(nodes)
-
-appends nodes to the NodeList.
-=end
-      ## modified by Masaki Fukushima
-      def <<(nodes)
-        if nodes.nil?
-          ## no change
-        elsif nodes.is_a?(Array)
-          @nodes.concat(nodes)
-        elsif nodes.is_a?(NodeList)
-          @nodes.concat(nodes.to_a)
-        elsif nodes.is_a?(Node)
-          @nodes << nodes
-        else
-          raise "parameter error"
-        end
-        self
-      end
-
-      ## get nodeValues by names
-      ##   names ::= name ('|' name)*
-      def _getValues(names)
-        ret = []
-        names.split('|').each do |name|
-          if !@nodes[name].nil?
-            ret.push(@nodes[name].nodeValue)
-          end
-        end
-        ret
-      end
-    end
-
-=begin
-== Class XML::DOM::DocumentFragment
-
-=== superclass
-Node
-
-=end
-    class DocumentFragment<Node
-
-=begin
-=== Class Methods
-
-    --- DocumentFragment.new(*children)
-
-creates a new DocumentFragment.
-=end
-
-      def initialize(*children)
-        super(*children)
-      end
-
-=begin
-=== Methods
-
-    --- DocumentFragment#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_FRAGMENT_NODE
-      end
-
-=begin
-    --- DocumentFragment#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#document-fragment"
-      end
-
-=begin
-    --- DocumentFragment#parentNode=(p)
-
-returns the parent of this node.
-=end
-      ## DocumentFragment should not have the parent node.
-      def parentNode=(p)
-        @children.each do |child|
-          child.parentNode = p
-        end if @children
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::Document
-
-=== superclass
-Node
-
-=end
-    class Document<Node
-=begin
-=== Class Methods
-    --- Document.new(*children)
-
-creates a new Document.
-=end
-
-      ## new([child1, child2, ...]) or
-      ## new(child1, child2, ...)
-      ##     child?: String or Node
-      def initialize(*children)
-        super(*children)
-      end
-
-=begin
-=== Methods
-
-    --- Document#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_NODE
-      end
-
-=begin
-    --- Document#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#document"
-      end
-
-=begin
-    --- Document#documentElement
-
-[DOM]
-returns root element of the Docuemnt.
-=end
-      ## [DOM]
-      def documentElement
-        @children.each do |child|
-          if child.nodeType == ELEMENT_NODE
-            return child
-          end
-        end if @children
-        nil
-      end
-
-=begin
-    --- Document#doctype
-
-[DOM]
-returns DTD associated with this document.
-=end
-      ## [DOM]
-      def doctype
-        @children.each do |child|
-          if child.nodeType == DOCUMENT_TYPE_NODE
-            return child
-          end
-        end if @children
-        nil
-      end
-
-=begin
-    --- Document#getElementsByTagName(tagname)
-
-[DOM]
-returns a NodeList of all the Elements with a given tag name.
-=end
-      ## [DOM] (but this is not "live")
-      def getElementsByTagName(tagname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if tagname == '*' || node.nodeName == tagname
-              ret << node
-            end
-            ret << node.getElementsByTagName(tagname)
-          end
-        end if @children
-        ret
-      end
-
-=begin
-    --- Document#createElement(tagName)
-
-[DOM]
-creates a Element.
-=end
-      ## [DOM]
-      def createElement(tagName)
-        ret = Element.new(tagName)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createTextNode(data)
-
-[DOM]
-creates a TextNode.
-=end
-      ## [DOM]
-      def createTextNode(data)
-        ret = Text.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createCDATASection(data)
-
-[DOM]
-creates a CDATASection.
-=end
-      ## [DOM]
-      def createCDATASection(data)
-        ret = CDATASection.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createComment(data)
-
-[DOM]
-create a Comment.
-=end
-      ## [DOM]
-      def createComment(data)
-        ret = Comment.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createProcessingInstruction(target, data)
-
-[DOM]
-create a ProcessingInstruction.
-=end
-      ## [DOM]
-      def createProcessingInstruction(target, data)
-        ret = ProcessingInstruction.new(target, data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createAttribute(name)
-
-[DOM]
-create a Attribute.
-=end
-      ## [DOM]
-      def createAttribute(name)
-        ret = Attr.new(name)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createEntityReference(name)
-
-[DOM]
-create a EntityReference.
-=end
-      ## [DOM]
-      def createEntityReference(name)
-        ret = EntityReference.new(name)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createDocumentFragment()
-
-[DOM]
-create a DocumentFragment.
-=end
-      ## [DOM]
-      def createDocumentFragment
-        ret = DocumentFragment.new
-        ret.ownerDocument = self
-        ret
-      end
-
-      ## set the ID list by the attribute name with the element name
-      ## (or wildcard)
-      ## [experimental implement]
-      def _setIDAttr(attrname, elemname = '*')
-        @idattrs = {} if @idattrs.nil?
-        @idattrs[elemname] = attrname
-      end
-
-      ## get the ID list
-      ## [experimental implement]
-      def _getIDAttrs
-        return {'*'=>'id'} if @idattrs.nil?
-        @idattrs
-      end
-
-      ## [DOM]
-      def implementation
-        return @implemantation if @implemantation
-        ## singleton
-        @implemantation = DOMImplementation.instance
-      end
-
-      def implementation=(impl)
-        @implemantation = impl
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == DOCUMENT_TYPE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-
-        if node.nodeType == ELEMENT_NODE
-          @children.each do |n|
-            if n.nodeType == ELEMENT_NODE
-              raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-            end
-          end
-        end
-
-        if node.nodeType == DOCUMENT_TYPE_NODE
-          @children.each do |n|
-            if n.nodeType == DOCUMENT_TYPE_NODE
-              raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-            end
-          end
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::Attr
-
-=== superclass
-Node
-
-=end
-    class Attr<Node
-      ## new(name, [text1, text2, ...]) or
-      ## new(name, text1, text2, ...)
-      ##     name:  String
-      ##     text?: String or Node
-
-=begin
-=== Class Methods
-
-    --- Attr.new(name = nil, *text)
-
-create a new Attr.
-=end
-      def initialize(name = nil, *text)
-        super(text)
-        raise "parameter error" if !name
-        @name =  name
-        @name.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Attr#nodeType()
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ATTRIBUTE_NODE
-      end
-
-=begin
-    --- Attr#nodeName()
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Attr#nodeValue()
-
-[DOM]
-returns the nodeValue.
-=end
-      ## [DOM]
-      def nodeValue
-        ret = ""
-        @children.each do |child|
-          ret << child.nodeValue
-        end if @children
-        ret
-      end
-
-=begin
-    --- Attr#nodeValue=(text)
-
-[DOM]
-returns the value of this node.
-=end
-      ## [DOM]
-      def nodeValue=(text)
-        self.childNodes = [text]
-      end
-
-=begin
-    --- Attr#to_s()
-
-return the string representation of the Attr.
-=end
-      def to_s
-        value = ""
-        nodeValue.each_byte do |code|
-          case code
-          when 9, 10, 13
-            value << sprintf("&#x%X;", code)
-          when ?&
-            value << "&"
-          when ?"
-            value << """
-          when ?<
-            value << "<"
-          else
-            value << code
-          end
-        end
-        "#{@name}=\"#{value}\""
-      end
-
-=begin
-    --- Attr#dump(depth = 0)
-
-dump the Attr.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "// #{self.to_s}\n"
-      end
-
-=begin
-    --- Attr#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Attr.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name)
-      end
-
-=begin
-    --- Attr#name()
-
-[DOM]
-alias of nodeName.
-=end
-      ## [DOM]
-      alias name nodeName
-
-=begin
-    --- Attr#value()
-
-alias of nodeValue.
-
-    --- Attr#value=(value)
-
-[DOM]
-alias of nodeValue=.
-=end
-      ## [DOM]
-      alias value nodeValue
-      alias value= nodeValue=
-
-      ## [DOM]
-      def specified; @specified; end
-      def specified=(is_specified); @specified = is_specified; end
-
-      def _checkNode(node)
-        unless node.nodeType == TEXT_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::Attribute
-
-alias of Attr.
-=end
-    Attribute = Attr
-
-=begin
-== Class XML::DOM::Element
-
-=== superclass
-Node
-
-=end
-    class Element<Node
-
-=begin
-=== Class Methods
-
-    --- Element.new(tag = nil, attrs = nil, *children)
-
-create a new Element.
-=end
-      ## new(tag, attrs, [child1, child2, ...]) or
-      ## new(tag, attrs, child1, child2, ...)
-      ##     tag:    String
-      ##     attrs:  Hash, Attr or Array of Attr (or nil)
-      ##     child?: String or Node
-      def initialize(tag = nil, attr = nil, *children)
-        super(*children)
-        raise "parameter error" if !tag
-        @name = tag.freeze
-        if attr.nil?
-          @attr = NamedNodeMap.new([])
-        elsif attr.is_a?(Hash)
-          nodes = []
-          attr.each do |key, value|
-            nodes.push(Attr.new(key, value))
-          end
-          @attr = NamedNodeMap.new(nodes)
-        elsif attr.is_a?(Array)
-          @attr = NamedNodeMap.new(attr)
-        elsif attr.is_a?(Attr)
-          @attr = NamedNodeMap.new([attr])
-        else
-          raise "parameter error: #{attr}"
-        end
-      end
-
-=begin
-=== Methods
-
-    --- Element#nodeType()
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ELEMENT_NODE
-      end
-
-=begin
-    --- Element#nodeName()
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Element#attributes()
-
-[DOM]
-returns the attributes of this Element.
-=end
-      ## [DOM]
-      def attributes
-        if iterator?
-          @attr.each do |key, value|
-            yield(value)
-          end if @attr
-        else
-          @attr
-        end
-      end
-
-=begin
-    --- Element#to_s()
-
-return the string representation of the Element.
-=end
-      def to_s
-        attr = ''
-        @attr.each do |a|
-          attr << ' ' + a.to_s
-        end if @attr
-        content = super
-        if content != ''
-          ret = "<#{@name}#{attr}>#{content}</#{@name}>"
-        else
-          ret = "<#{@name}#{attr}/>"
-        end
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- Element#dump(depth = 0)
-
-dumps the Element.
-=end
-      def dump(depth = 0)
-        attr = ''
-        @attr.each do |a|  ## self.attributes do |a|
-          attr += a.to_s + ", "
-        end if @attr
-        attr.chop!
-        attr.chop!
-        print ' ' * depth * 2
-        print "#{@name}(#{attr})\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-      end
-
-=begin
-    --- Element#tagName()
-
-[DOM]
-alias of nodeName.
-=end
-      ## [DOM]
-      alias tagName nodeName
-
-=begin
-    --- Element#getAttribute(name)
-
-[DOM]
-retrieves an attribute value by name.
-=end
-      ## [DOM]
-      def getAttribute(name)
-        attr = getAttributeNode(name)
-        if attr.nil?
-          ''
-        else
-          attr.nodeValue
-        end
-      end
-
-=begin
-    --- Element#setAttribute(name, value)
-
-[DOM]
-adds a new attribute.
-=end
-      ## [DOM]
-      def setAttribute(name, value)
-        if @ownerDocument
-          attr = @ownerDocument.createAttribute(name)
-          attr.appendChild(@ownerDocument.createTextNode(value))
-        else
-          attr = Attribute.new(name)
-          attr.appendChild(Text.new(value))
-        end
-        setAttributeNode(attr)
-      end
-
-=begin
-    --- Element#removeAttribute(name)
-
-[DOM]
-remove an attribute by name.
-=end
-      ## [DOM]
-      def removeAttribute(name)
-        ret = getAttributeNode(name)
-        removeAttributeNode(ret) if ret
-      end
-
-=begin
-    --- Element#getAttributeNode(name)
-
-[DOM]
-retrieves an Attr node by name.
-=end
-      ## [DOM]
-      def getAttributeNode(name)
-        @attr.getNamedItem(name)
-      end
-
-=begin
-    --- Element#setAttributeNode(newAttr)
-
-[DOM]
-adds a new attribute.
-=end
-      ## [DOM]
-      def setAttributeNode(newAttr)
-        ret = getAttributeNode(newAttr.nodeName)
-        if ret == newAttr
-          raise DOMException.new(DOMException::INUSE_ATTRIBUTE_ERR)
-        end
-        @attr.setNamedItem(newAttr)
-        ret
-      end
-
-=begin
-    --- Element#removeAttributeNode(oldAttr)
-
-[DOM]
-removes the specified attribute.
-=end
-      ## [DOM]
-      def removeAttributeNode(oldAttr)
-        ret = getAttributeNode(oldAttr.nodeName)
-        if ret.nil? || ret != oldAttr
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        @attr.removeNamedItem(oldAttr.nodeName)
-        ret
-      end
-
-=begin
-    --- Element#getElementsByTagName(tagname)
-
-[DOM]
-returns a NodeList of all descendant elements with given tag name.
-=end
-      ## [DOM] (but this is not "live")
-      def getElementsByTagName(tagname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if tagname == '*' || node.nodeName == tagname
-              ret << node
-            end
-            ret << node.getElementsByTagName(tagname)
-          end
-        end if @children
-        ret
-      end
-
-      def _getMyLocation(parent)
-        index = 1
-        parent.childNodes do |child|
-          if child == self
-            return "child(#{index},#{@name})"
-          end
-          if child.nodeType == ELEMENT_NODE && child.nodeName == @name
-            index += 1
-          end
-        end
-        nil
-      end
-
-
-=begin
-    --- Element#normalize
-
-[DOM]
-puts all Text nodes in the full depth of the sub-tree under this
-Eelemnt.
-=end
-      ## [DOM]
-      def normalize
-        return if @children.nil?
-        old = nil
-        children = @children.to_a.dup
-        children.each do |child|
-          if !old.nil? && old.nodeType == TEXT_NODE &&
-              child.nodeType == TEXT_NODE
-            old.appendData(child.nodeValue)
-            self.removeChild(child)
-          else
-            if child.nodeType == ELEMENT_NODE
-              child.normalize
-            end
-            old = child
-          end
-        end
-      end
-
-=begin
-    --- Element#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Element.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        attrs = []
-        @attr.each do |attr|
-          attrs.push(attr.cloneNode(true))
-        end
-        super(deep, @name, attrs)
-      end
-
-      ## get the list of nodeValues by IDs
-      ## [experimental implement]
-      def _getIDVals(ids = nil)
-        if ids.nil?
-          doc = ownerDocument
-          return [] if doc.nil?
-          ids = doc._getIDAttrs
-        end
-
-        idelem = []
-        if !ids[nodeName].nil?
-          return attributes._getValues(ids[nodeName])
-        elsif !ids['*'].nil?
-          return attributes._getValues(ids['*'])
-        end
-        return []
-      end
-
-=begin
-    --- Element#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      ## trim extra whitespaces
-      ## if attribute 'xml:space' is 'preserve',
-      ## don't trim any white spaces
-      def trim(preserve = false)
-        if !attributes['xml:space'].nil?
-          value = attributes['xml:space'].nodeValue
-          if value == 'preserve'
-            preserve = true
-          elsif value == 'default'
-            preserve = false
-          end
-        end
-        return nil if @children.nil?
-        children = @children.to_a.dup
-        children.each do |child|
-          if !preserve && (child.nodeType == TEXT_NODE ||
-                           child.nodeType == CDATA_SECTION_NODE)
-            if child.trim == ""
-              self.removeChild(child)
-            end
-          else
-            child.trim(preserve)
-          end
-        end
-        nil
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::CharacterData
-
-=== superclass
-Node
-
-=end
-    class CharacterData<Node
-
-=begin
-=== Class Methods
-
-    --- CharacterData.new(text)
-
-creates a new CharacterData.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super()
-        raise "parameter error" if !text
-        @value = text
-      end
-
-=begin
-=== Methods
-
-    --- CharacterData#data()
-
-[DOM]
-returns the character data of the node.
-=end
-      ## [DOM]
-      def data
-        @value.dup
-      end
-
-=begin
-    --- CharacterData#data=(p)
-
-[DOM]
-set the character data of the node.
-=end
-      ## [DOM]
-      def data=(p)
-          @value = p
-      end
-
-=begin
-    --- CharacterData#length()
-
-[DOM]
-returns length of this CharacterData.
-=end
-      ## [DOM]
-      def length
-        @value.length
-      end
-
-=begin
-    --- CharacterData#substringData(start, count)
-
-[DOM]
-extracts a range of data from the node.
-=end
-      ## [DOM]
-      def substringData(start, count)
-        if start < 0 || start > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        ## if the sum of start and count > length,
-        ##  return all characters to the end of the value.
-        @value[start, count]
-      end
-
-=begin
-    --- CharacterData#appendData(str)
-
-[DOM]
-append the string to the end of the character data.
-=end
-      ## [DOM]
-      def appendData(str)
-        @value << str
-      end
-
-=begin
-    --- CharacterData#insertData(offset, str)
-
-[DOM]
-insert a string at the specified character offset.
-=end
-      ## [DOM]
-      def insertData(offset, str)
-        if offset < 0 || offset > @value.length
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, 0] = str
-      end
-
-=begin
-    --- CharacterData#deleteData(offset, count)
-
-[DOM]
-removes a range of characters from the node.
-=end
-      ## [DOM]
-      def deleteData(offset, count)
-        if offset < 0 || offset > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, count] = ''
-      end
-
-=begin
-    --- CharacterData#replaceData(offset, count, str)
-
-[DOM]
-replaces the characters starting at the specified character offset
-with specified string.
-=end
-      ## [DOM]
-      def replaceData(offset, count, str)
-        if offset < 0 || offset > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, count] = str
-      end
-
-=begin
-    --- CharacterData#cloneData(deep = true)
-
-[DOM]
-returns the copy of the CharacterData.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @value.dup)
-      end
-
-=begin
-    --- Text#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue
-        @value
-      end
-
-=begin
-    --- CharacterData#nodeValue=(p)
-
-[DOM]
-set nodevalue as p.
-=end
-      ## [DOM]
-      def nodeValue=(p)
-        @value = p
-      end
-
-    end
-
-=begin
-== Class XML::DOM::Text
-
-=== superclass
-Node
-
-=end
-    class Text<CharacterData
-
-=begin
-=== Class Methods
-
-    --- Text.new(text)
-
-creates a new Text.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super(text)
-      end
-
-=begin
-=== Methods
-
-    --- Text#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        TEXT_NODE
-      end
-
-=begin
-    --- Text#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#text"
-      end
-
-=begin
-    --- Text#to_s
-
-return the string representation of the Text.
-=end
-      def to_s
-        ret = ""
-        @value.each_byte do |code|
-          case (code)
-          when 13
-            ret << sprintf("&#x%X;", code)
-          when ?&
-            ret << "&"
-          when ?<
-            ret << "<"
-          when ?>
-            ret << ">"
-          else
-            ret << code
-          end
-        end
-        ret
-      end
-
-=begin
-    --- Text#dump(depth = 0)
-
-dumps the Text.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "#{@value.inspect}\n"
-      end
-
-      def _getMyLocation(parent)
-        index = 1
-        parent.childNodes do |child|
-          if child == self
-            return "child(#{index},#text)"
-          end
-          if child.nodeType == TEXT_NODE
-            index += 1
-          end
-        end
-        nil
-      end
-
-=begin
-    --- Text#splitText(offset)
-
-[DOM]
-breaks this Text node into two Text nodes at the specified offset.
-=end
-      ## [DOM]
-      def splitText(offset)
-        if offset > @value.length || offset < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        newText = @value[offset, @value.length]
-        newNode = Text.new(newText)
-        if !self.parentNode.nil?
-          self.parentNode.insertAfter(newNode, self)
-        end
-        @value[offset, @value.length] = ""
-        newNode
-      end
-
-=begin
-    --- Text#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      def trim(preserve = false)
-        if !preserve
-          @value.sub!(/\A\s*([\s\S]*?)\s*\Z/, "\\1")
-          return @value
-        end
-        nil
-      end
-
-    end
-
-=begin
-== Class XML::DOM::Comment
-
-=== superclass
-CharacterData
-
-=end
-    class Comment<CharacterData
-
-=begin
-=== Class Methods
-
-    --- Comment.new(text)
-
-creates a new Comment.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super(text)
-        raise "parameter error" if !text
-      end
-
-=begin
-=== Methods
-
-    --- Comment#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        COMMENT_NODE
-      end
-
-=begin
-    --- Comment#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#comment"
-      end
-
-=begin
-    --- Comment#to_s
-
-returns the string  representation of the Comment.
-=end
-      def to_s
-        ret = "<!--#{@value}-->"
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- Comment#dump(depth  =0)
-
-dumps the Comment.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<!--#{@value.inspect}-->\n"
-      end
-
-      def _getMyLocation(parent)
-        index = 1
-        parent.childNodes do |child|
-          if child == self
-            return "child(#{index},#comment)"
-          end
-          if child.nodeType == COMMENT_NODE
-            index += 1
-          end
-        end
-        nil
-      end
-    end
-
-
-    ## Extended Interfaces
-
-=begin
-== Class XML::DOM::CDATASection
-
-=== superclass
-Text
-
-=end
-    class CDATASection<Text
-=begin
-=== Class Methods
-
-    --- CDATASection.new(text = nil)
-
-creates a new CDATASection.
-=end
-      def initialize(text = nil)
-        super(text)
-        raise "parameter error" if !text
-      end
-
-=begin
-=== Methods
-
-    --- CDATASection#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        CDATA_SECTION_NODE
-      end
-
-=begin
-    --- CDATASection#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#cdata-section"
-      end
-
-=begin
-    --- CDATASection#to_s
-
-returns the string representation of the CDATASection.
-=end
-      def to_s
-        "<![CDATA[#{@value}]]>"
-      end
-
-=begin
-    --- CDATASection#dump(depth = 0)
-
-dumps the CDATASection.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<![CDATA[#{@value.inspect}]]>\n"
-      end
-
-      def _getMyLocation(parent)
-        index = 1
-        parent.childNodes do |child|
-          if child == self
-            return "child(#{index},#cdata)"
-          end
-          if child.nodeType == CDATA_SECTION_NODE
-            index += 1
-          end
-        end
-        nil
-      end
-    end
-
-=begin
-== Class XML::DOM::DocumentType
-
-=== superclass
-Node
-=end
-    class DocumentType<Node
-
-=begin
-=== Class Methods
-
-    --- DocumentType.new(name, value = nil, *children)
-
-creates a new DocuemntType.
-=end
-      def initialize(name, value = nil, *children)
-        super(*children)
-        raise "parameter error" if !name
-        @name = name.freeze
-        @value = value.freeze
-      end
-
-=begin
-=== Methods
-
-    --- DocumentType#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_TYPE_NODE
-      end
-
-=begin
-    --- DocumentType#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- DocumentType#to_s
-
-returns the string representation of the DocumentType.
-=end
-      def to_s
-        ret = "<!DOCTYPE " + @name
-        if !@value.nil?
-          ret <<= " " + @value
-        end
-        if !@children.nil? && @children.length > 0
-          ret <<= " [\n"
-          @children.each do |child|
-            if child.nodeType == PROCESSING_INSTRUCTION_NODE ||
-                child.nodeType == COMMENT_NODE
-              ret <<= child.to_s + "\n"
-            else
-              ret <<= child.nodeValue + "\n"
-            end
-          end
-          ret <<= "]"
-        end
-        ret <<= ">"
-      end
-
-=begin
-    --- DocumentType#dump(depth = 0)
-
-dumps the DocumentType.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<!DOCTYPE #{@name} #{@value} [\n"
-        @children.each do |child|
-          print ' ' * (depth + 1) * 2
-          if child.nodeType == PROCESSING_INSTRUCTION_NODE ||
-              child.nodeType == COMMENT_NODE
-            child.dump
-          else
-            print child.nodeValue, "\n"
-          end
-        end if @children
-        print ' ' * depth * 2
-        print "]>\n"
-      end
-
-=begin
-    --- DocumentType#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the DocumentType.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @value)
-      end
-
-      ## [DOM]
-      ## def entities; @entities; end
-      ## def notations; @notations; end
-    end
-
-=begin
-== Class XML::DOM::Notation
-
-=== superclass
-Node
-=end
-    class Notation<Node
-=begin
-=== Class Methods
-
-    --- Notation.new(name, pubid, sysid)
-
-creates a new Notation.
-=end
-      def initialize(name, pubid, sysid)
-        super()
-        @name = name.freeze
-        @pubid = pubid.freeze
-        @sysid = sysid.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Notation#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        NOTATION_NODE
-      end
-
-=begin
-    --- Notation#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Notation#publicId
-
-returns the publicId of the Notation.
-=end
-      def publicId
-        @pubid
-      end
-
-=begin
-    --- Notation#systemId
-
-returns the systemId of the Notation.
-=end
-      def systemId
-        @sysid
-      end
-
-=begin
-    --- Notation#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Notation.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @pubid, @sysid)
-      end
-    end
-
-=begin
-== Class XML::DOM::Entity
-
-=== superclass
-Node
-=end
-    class Entity<Node
-
-=begin
-=== Class Methods
-
-    --- Entity.new(name, pubid, sysid, notation)
-
-creates a new Entity.
-=end
-      def initialize(name, pubid, sysid, notation)
-        super()
-        @name = name.freeze
-        @pubid = pubid.freeze
-        @sysid = sysid.freeze
-        @notation = notation.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Entity#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ENTITY_NODE
-      end
-
-=begin
-    --- Entity#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Entity#publicId
-
-returns the publicId of the Entity.
-=end
-      def publicId
-        @pubid
-      end
-
-=begin
-    --- Entity#systemId
-
-returns the systemId of the Entity.
-=end
-      def systemId
-        @sysid
-      end
-
-=begin
-    --- Entity#notationName
-
-returns the notationname of the Entity.
-=end
-      def notationName
-        @notation
-      end
-
-=begin
-    --- Entity#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Entity.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @pubid, @sysid, @notation)
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::EntityReference
-
-=== superclass
-Node
-=end
-    class EntityReference<Node
-
-=begin
-=== Class Methods
-
-    --- EntityReference.new(name, *children)
-
-creates a new EntityReference.
-=end
-      def initialize(name, *children)
-        super(*children)
-        raise "parameter error" if !name
-        @name = name.freeze
-      end
-
-=begin
-=== Methods
-
-    --- EntityReference#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ENTITY_REFERENCE_NODE
-      end
-
-=begin
-    --- EntityReference#nodeName
-
-[DOM]
-returns  the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- EntityReference#to_s
-
-returns the string representation of the EntityReference.
-=end
-      ## reference form or expanded form?
-      def to_s
-        "&#{@name};"
-      end
-
-=begin
-    --- EntityReference#dump(depth = 0)
-
-dumps the EntityReference.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "&#{@name}{\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-        print ' ' * depth * 2
-        print "}\n"
-      end
-
-=begin
-    --- EntityReference#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the EntityReference.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name)
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-
-=begin
-== Class XML::DOM::ProcessingInstruction
-
-=== superclass
-Node
-
-=end
-    class ProcessingInstruction<Node
-
-=begin
-=== Class Methods
-
-    --- ProcessingInstruction.new(target = nil, data = nil)
-
-creates a new ProcessingInstruction.
-=end
-      ## new(target, data)
-      ##     target: String
-      ##     data: String
-      def initialize(target = nil, data = nil)
-        super()
-        raise "parameter error" if !data
-        @target = target.freeze
-        @data = data.freeze
-        @value = target.dup
-        @value << " #{data}" if data != ""
-        @value.freeze
-      end
-
-=begin
-=== Methods
-
-    --- ProcessingInstruction#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        PROCESSING_INSTRUCTION_NODE
-      end
-
-=begin
-    --- ProcessingInstruction#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#proccessing-instruction"
-      end
-
-=begin
-    --- ProcessingInstruction#target
-
-[DOM]
-returns the target of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def target
-        @target
-      end
-
-=begin
-    --- ProcessingInstruction#target=(p)
-
-[DOM]
-set p to the target of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def target=(p)
-        @target = p.freeze
-        @value = @target.dup
-        @value << " #{@data}" if @data != ""
-        @value.freeze
-      end
-
-=begin
-    --- ProcessingInstruction#data
-
-[DOM]
-return the content of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def data
-        @data
-      end
-
-=begin
-    --- ProcessingInstruction#data=(p)
-
-[DOM]
-sets p to the content of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def data=(p)
-        @data = p.freeze
-        @value = @target.dup
-        @value << " #{@data}" if @data != ""
-        @value.freeze
-      end
-
-=begin
-    --- ProcessingInstruction#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue
-        @value
-      end
-
-      ## inhibit changing value without target= or data=
-      undef nodeValue=
-
-=begin
-    --- ProcessingInstruction#to_s
-
-returns the string representation of the ProcessingInstruction.
-=end
-      def to_s
-        ret = "<?#{@value}?>"
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- ProcessingInstruction#dump(depth = 0)
-
-dumps the ProcessingInstruction.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<?#{@value.inspect}?>\n"
-      end
-
-      def _getMyLocation(parent)
-        index = 1
-        parent.childNodes do |child|
-          if child == self
-            return "child(#{index},#pi)"
-          end
-          if child.nodeType == PROCESSING_INSTRUCTION_NODE
-            index += 1
-          end
-        end
-        nil
-      end
-
-=begin
-    --- ProcessingInstruction#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @target.dup, @data.dup)
-      end
-    end
-
-  end
-
-  SimpleTree = DOM
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/digest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/digest.rb
deleted file mode 100644
index b02f111..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/digest.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-## -*- Ruby -*-
-## DOMHASH test implementation
-## 1999 by yoshidam
-##
-## Apr 20, 1999 Change for draft-hiroshi-dom-hash-01.txt
-##
-
-require 'xml/dom/core'
-require 'md5'
-require 'uconv'
-
-module XML
-  module DOM
-
-    def self.tou16(str)
-      Uconv.u16swap(Uconv.u8tou16(str))
-    end
-
-    class Node
-      def getDigest(force = false)
-        nil
-      end
-    end
-
-    class Text
-      def getDigest(force = false)
-        (!force && @digest) ||
-          @digest = MD5.new([TEXT_NODE].pack("N") + DOM.tou16(nodeValue)).digest
-      end
-    end
-
-##    class Comment
-##      def getDigest(force = false)
-##        (!force && @digest) ||
-##          @digest = MD5.new([COMMENT_NODE].pack("N") + DOM.tou16(data)).digest
-##      end
-##    end
-
-    class ProcessingInstruction
-      def getDigest(force = false)
-        (!force && @digest) ||
-          @digest = MD5.new([PROCESSING_INSTRUCTION_NODE].pack("N") +
-                            DOM.tou16(target) + "\0\0" + DOM.tou16(data)).digest
-      end
-    end
-
-    class Attr
-      def getDigest(force = false)
-        (!force && @digest) ||
-          @digest = MD5.new([ATTRIBUTE_NODE].pack("N") +
-                            DOM.tou16(nodeName) + "\0\0" + DOM.tou16(nodeValue)).digest
-      end
-    end
-
-    class NamedNodeMap
-      include Enumerable
-    end
-
-    class NodeList
-      include Enumerable
-    end
-
-    class Element
-      def getDigest(force = false)
-        return @digest if (!force && @digest)
-        attr = attributes
-        children = childNodes
-        attr_digests = ""
-        children_digests = ""
-        if attr
-          attr_array = attr.sort {|a, b|
-            DOM.tou16(a.nodeName) <=> DOM.tou16(b.nodeName)}
-          attr_array.each {|a|
-            attr_digests << a.getDigest(force)
-          }
-        end
-        children_num = 0
-        children.each {|c|
-          next if c.nodeType == COMMENT_NODE
-          children_num += 1
-          children_digests << c.getDigest(force)
-        }
-        @digest = MD5.new([ELEMENT_NODE].pack("N") +
-                          DOM.tou16(nodeName) +
-                          "\0\0" +
-                          [attr.length].pack("N") +
-                          attr_digests +
-                          [children_num].pack("N") +
-                          children_digests).digest
-      end
-    end
-
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/visitor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/visitor.rb
deleted file mode 100644
index 3078e5c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom/visitor.rb
+++ /dev/null
@@ -1,182 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::Visitor
-## 1998 by yoshidam
-##
-## Oct 23, 1998 yoshidam Fix each
-##
-
-
-=begin
-= XML::DOM::Visitor
-
-== Module XML
-
-=end
-module XML
-
-=begin
-== Module XML::DOM (XML::SimpleTree)
-
-=end
-  module DOM
-
-=begin
-== Class XML::DOM::Visitor
-
-Skelton class of Visitor.
-
-You can override the following methods and implement the other
-"visit_TYPE" methods.
-
-You should implement some "visit_name_NAME" methods and
-"method_missing" method for accept_name.
-
-=end
-    ## Skeleton visitor
-    class Visitor
-      ## You can override the following methods and implement the other
-      ## "visit_TYPE" methods.
-      ## You should implement some "visit_name_NAME" methods and
-      ## "method_missing" method for accept_name.
-
-=begin
-=== Methods
-
-    --- Visitor#visit_Document(grove, *rest)
-
-callback method.
-=end
-      def visit_Document(grove, *rest)
-        grove.children_accept(self, *rest)
-      end
-
-=begin
-    --- Visitor#visit_Element(element, *rest)
-
-callback method.
-=end
-      def visit_Element(element, *rest)
-        element.children_accept(self, *rest)
-      end
-
-=begin
-    --- Visitor#visit_Text(text, *rest)
-
-callback method.
-=end
-      def visit_Text(text, *rest)
-      end
-
-=begin
-    --- Visitor#visit_CDATASection(text, *rest)
-
-callback method.
-=end
-      def visit_CDATASection(text, *rest)
-      end
-
-=begin
-    --- Visitor#visit_Comment(comment, *rest)
-
-callback method.
-=end
-      def visit_Comment(comment, *rest)
-      end
-
-=begin
-    --- Visitor#visit_ProcessingInstruction(pi, *rest)
-
-callback method.
-=end
-      def visit_ProcessingInstruction(pi, *rest)
-      end
-
-    end
-
-=begin
-
-== Class XML::DOM::Node
-
-XML::Grove::Visitor like interfaces.
-=end
-    class Node
-
-=begin
-    --- Node#accept(visitor, *rest)
-
-call back visit_* method.
-=end
-      ## XML::Grove::Visitor like interfaces
-      def accept(visitor, *rest)
-        typename = self.class.to_s.sub(/.*?([^:]+)$/, '\1')
-        visitor.send("visit_" + typename, self, *rest)
-      end
-
-=begin
-    --- Node#accept_name(visitor, *rest)
-
-call back visit_name_* method.
-=end
-      def accept_name(visitor, *rest)
-        if nodeType == ELEMENT_NODE
-          name_method = "visit_name_" + nodeName
-          visitor.send(name_method, self, *rest)
-        else
-          self.accept(visitor, *rest)
-        end
-      end
-
-=begin
-    --- Node#children_accept(visitor, *rest)
-
-for each children, call back visit_* methods.
-=end
-      def children_accept(visitor, *rest)
-        ret = []
-        @children && @children.each { |node|
-          ret.push(node.accept(visitor, *rest))
-        }
-        ret
-      end
-
-=begin
-    --- Node#children_accept_name(visitor, *rest)
-
-for each children, call back visit_name_* method.
-=end
-      def children_accept_name(visitor, *rest)
-        ret = []
-        @children && @children.each { |node|
-          ret.push(node.accept_name(visitor, *rest))
-        }
-        ret
-      end
-
-=begin
-    --- Node#each
-
-iterator interface.
-=end
-      ## Iterator interface
-      include Enumerable
-      def each
-        sibstack = []
-        siblings = [ self ]
-        while true
-          if siblings.length == 0
-            break if sibstack.length == 0
-            siblings = sibstack.pop
-            next
-          end
-          node = siblings.shift
-          yield(node)
-          children = node.childNodes
-          if !children.nil?
-            sibstack.push(siblings)
-            siblings = children.to_a.dup
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/attr.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/attr.rb
deleted file mode 100644
index 53bb911..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/attr.rb
+++ /dev/null
@@ -1,213 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Attr
-
-=== superclass
-Node
-
-=end
-    class Attr<Node
-      ## new(name, [text1, text2, ...]) or
-      ## new(name, text1, text2, ...)
-      ##     name:  String
-      ##     text?: String or Node
-
-=begin
-=== Class Methods
-
-    --- Attr.new(name = nil, *text)
-
-create a new Attr.
-=end
-      def initialize(name, *text)
-        super(text)
-        raise "parameter error" if !name
-        @name = nil
-        @prefix = nil
-        @localname = nil
-        @uri = nil
-        @ownerElement = nil
-        if name.is_a?(Array)
-          ## namespaces
-          raise "parameter error" if name.length != 2
-          @localname = name[1]
-          if name[1].index(':')
-            @prefix, @localname = name[1].split(':')
-          end
-          @name = name[1] ## qualified name
-          @uri =  name[0] ## namespace URI
-        else
-          @name = name
-        end
-        @name.freeze
-        @prefix.freeze
-        @localname.freeze
-        @uri.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Attr#nodeType()
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ATTRIBUTE_NODE
-      end
-
-=begin
-    --- Attr#nodeName()
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Attr#nodeValue()
-
-[DOM]
-returns the nodeValue.
-=end
-      ## [DOM]
-      def nodeValue
-        ret = ""
-        @children.each do |child|
-          ret << child.nodeValue
-        end if @children
-        ret
-      end
-
-=begin
-    --- Attr#nodeValue=(text)
-
-[DOM]
-returns the value of this node.
-=end
-      ## [DOM]
-      def nodeValue=(text)
-        self.childNodes = [text]
-      end
-
-=begin
-    --- Attr#to_s()
-
-return the string representation of the Attr.
-=end
-      def to_s
-        value = ""
-        nodeValue.scan(/./um) do |c|
-          code = c.unpack("U")[0]
-          if code == 9 || code == 10 || code == 13
-            value << sprintf("&#x%X;", code)
-          elsif c == "&"
-            value << "&"
-          elsif c == "\""
-            value << """
-          elsif c == "<"
-            value << "<"
-          else
-            value << c
-          end
-        end
-        "#{@name}=\"#{value}\""
-      end
-
-=begin
-    --- Attr#dump(depth = 0)
-
-dump the Attr.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "// #{self.to_s}\n"
-      end
-
-=begin
-    --- Attr#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Attr.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name)
-      end
-
-=begin
-    --- Attr#name()
-
-[DOM]
-alias of nodeName.
-=end
-      ## [DOM]
-      alias name nodeName
-
-=begin
-    --- Attr#value()
-
-alias of nodeValue.
-
-    --- Attr#value=(value)
-
-[DOM]
-alias of nodeValue=.
-=end
-      ## [DOM]
-      alias value nodeValue
-      alias value= nodeValue= ##
-
-      ## [DOM]
-      def specified; @specified; end
-      def specified=(is_specified); @specified = is_specified; end
-
-      ## [DOM2]
-      def namespaceURI; @uri; end
-
-      ## [DOM2]
-      def prefix; @prefix; end
-
-      ## [DOM2]
-      def prefix=(prefix);
-        ## to be checked
-
-        @ownerElement.removeAttributeNode(self) if @ownerElement
-        @prefix = prefix
-        @name = @prefix + ':' + @localname
-        @ownerElement.setAttributeNode(self) if @ownerElement
-        @prefix.freeze
-        @name.freeze
-      end
-
-      ## [DOM2]
-      def localname; @localname; end
-
-      ## [DOM2]
-      def ownerElement; @ownerElement; end
-      def ownerElement=(elem); @ownerElement = elem; end
-
-      def _checkNode(node)
-        unless node.nodeType == TEXT_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/cdatasection.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/cdatasection.rb
deleted file mode 100644
index baed122..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/cdatasection.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/text'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::CDATASection
-
-=== superclass
-Text
-
-=end
-    class CDATASection<Text
-=begin
-=== Class Methods
-
-    --- CDATASection.new(text = nil)
-
-creates a new CDATASection.
-=end
-      def initialize(text = nil)
-        super(text)
-        raise "parameter error" if !text
-      end
-
-=begin
-=== Methods
-
-    --- CDATASection#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        CDATA_SECTION_NODE
-      end
-
-=begin
-    --- CDATASection#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#cdata-section"
-      end
-
-=begin
-    --- CDATASection#to_s
-
-returns the string representation of the CDATASection.
-=end
-      def to_s
-        "<![CDATA[#{@value}]]>"
-      end
-
-=begin
-    --- CDATASection#dump(depth = 0)
-
-dumps the CDATASection.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<![CDATA[#{@value.inspect}]]>\n"
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/characterdata.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/characterdata.rb
deleted file mode 100644
index 127e33f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/characterdata.rb
+++ /dev/null
@@ -1,177 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::CharacterData
-
-=== superclass
-Node
-
-=end
-    class CharacterData<Node
-
-=begin
-=== Class Methods
-
-    --- CharacterData.new(text)
-
-creates a new CharacterData.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super()
-        raise "parameter error" if !text
-        @value = text
-      end
-
-=begin
-=== Methods
-
-    --- CharacterData#data()
-
-[DOM]
-returns the character data of the node.
-=end
-      ## [DOM]
-      def data
-        @value.dup
-      end
-
-=begin
-    --- CharacterData#data=(p)
-
-[DOM]
-set the character data of the node.
-=end
-      ## [DOM]
-      def data=(p)
-        @value = p
-      end
-
-=begin
-    --- CharacterData#length()
-
-[DOM]
-returns length of this CharacterData.
-=end
-      ## [DOM]
-      def length
-        @value.length
-      end
-
-=begin
-    --- CharacterData#substringData(start, count)
-
-[DOM]
-extracts a range of data from the node.
-=end
-      ## [DOM]
-      def substringData(start, count)
-        if start < 0 || start > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        ## if the sum of start and count > length,
-        ##  return all characters to the end of the value.
-        @value[start, count]
-      end
-
-=begin
-    --- CharacterData#appendData(str)
-
-[DOM]
-append the string to the end of the character data.
-=end
-      ## [DOM]
-      def appendData(str)
-        @value << str
-      end
-
-=begin
-    --- CharacterData#insertData(offset, str)
-
-[DOM]
-insert a string at the specified character offset.
-=end
-      ## [DOM]
-      def insertData(offset, str)
-        if offset < 0 || offset > @value.length
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, 0] = str
-      end
-
-=begin
-    --- CharacterData#deleteData(offset, count)
-
-[DOM]
-removes a range of characters from the node.
-=end
-      ## [DOM]
-      def deleteData(offset, count)
-        if offset < 0 || offset > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, count] = ''
-      end
-
-=begin
-    --- CharacterData#replaceData(offset, count, str)
-
-[DOM]
-replaces the characters starting at the specified character offset
-with specified string.
-=end
-      ## [DOM]
-      def replaceData(offset, count, str)
-        if offset < 0 || offset > @value.length || count < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        @value[offset, count] = str
-      end
-
-=begin
-    --- CharacterData#cloneData(deep = true)
-
-[DOM]
-returns the copy of the CharacterData.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @value.dup)
-      end
-
-=begin
-    --- CharacterData#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue
-        @value
-      end
-
-=begin
-    --- CharacterData#nodeValue=(p)
-
-[DOM]
-set nodevalue as p.
-=end
-      ## [DOM]
-      def nodeValue=(p)
-        @value = p
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/comment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/comment.rb
deleted file mode 100644
index cfea204..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/comment.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/characterdata'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Comment
-
-=== superclass
-CharacterData
-
-=end
-    class Comment<CharacterData
-
-=begin
-=== Class Methods
-
-    --- Comment.new(text)
-
-creates a new Comment.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super(text)
-        raise "parameter error" if !text
-      end
-
-=begin
-=== Methods
-
-    --- Comment#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        COMMENT_NODE
-      end
-
-=begin
-    --- Comment#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#comment"
-      end
-
-=begin
-    --- Comment#to_s
-
-returns the string  representation of the Comment.
-=end
-      def to_s
-        ret = "<!--#{@value}-->"
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- Comment#dump(depth  =0)
-
-dumps the Comment.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<!--#{@value.inspect}-->\n"
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/core.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/core.rb
deleted file mode 100644
index 5403b62..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/core.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'xml/dom2/domexception'
-require 'xml/dom2/domimplementation'
-require 'xml/dom2/documentfragment'
-require 'xml/dom2/document'
-require 'xml/dom2/node'
-require 'xml/dom2/nodelist'
-require 'xml/dom2/namednodemap'
-require 'xml/dom2/characterdata'
-require 'xml/dom2/attr'
-require 'xml/dom2/element'
-require 'xml/dom2/text'
-require 'xml/dom2/comment'
-
-require 'xml/dom2/cdatasection'
-require 'xml/dom2/documenttype'
-require 'xml/dom2/notation'
-require 'xml/dom2/entity'
-require 'xml/dom2/entityreference'
-require 'xml/dom2/processinginstruction'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/document.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/document.rb
deleted file mode 100644
index 84adf72..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/document.rb
+++ /dev/null
@@ -1,317 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/nodelist'
-require 'xml/dom2/domexception'
-
-require 'xml/dom2/documentfragment'
-require 'xml/dom2/attr'
-require 'xml/dom2/element'
-require 'xml/dom2/text'
-require 'xml/dom2/comment'
-require 'xml/dom2/cdatasection'
-require 'xml/dom2/entityreference'
-require 'xml/dom2/processinginstruction'
-require 'xml/dom2/domimplementation'
-
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Document
-
-=== superclass
-Node
-
-=end
-    class Document<Node
-=begin
-=== Class Methods
-    --- Document.new(*children)
-
-creates a new Document.
-=end
-
-      ## new([child1, child2, ...]) or
-      ## new(child1, child2, ...)
-      ##     child?: String or Node
-      def initialize(*children)
-        super(*children)
-      end
-
-=begin
-=== Methods
-
-    --- Document#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_NODE
-      end
-
-=begin
-    --- Document#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#document"
-      end
-
-=begin
-    --- Document#documentElement
-
-[DOM]
-returns root element of the Docuemnt.
-=end
-      ## [DOM]
-      def documentElement
-        @children.each do |child|
-          if child.nodeType == ELEMENT_NODE
-            return child
-          end
-        end if @children
-        nil
-      end
-
-=begin
-    --- Document#doctype
-
-[DOM]
-returns DTD associated with this document.
-=end
-      ## [DOM]
-      def doctype
-        @children.each do |child|
-          if child.nodeType == DOCUMENT_TYPE_NODE
-            return child
-          end
-        end if @children
-        nil
-      end
-
-=begin
-    --- Document#getElementsByTagName(tagname)
-
-[DOM]
-returns a NodeList of all the Elements with a given tag name.
-=end
-      ## [DOM] (but this is not "live")
-      def getElementsByTagName(tagname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if tagname == '*' || node.nodeName == tagname
-              ret << node
-            end
-            ret << node.getElementsByTagName(tagname)
-          end
-        end if @children
-        ret
-      end
-
-=begin
-    --- Document#createElement(tagName)
-
-[DOM]
-creates a Element.
-=end
-      ## [DOM]
-      def createElement(tagName)
-        ret = Element.new(tagName)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createTextNode(data)
-
-[DOM]
-creates a TextNode.
-=end
-      ## [DOM]
-      def createTextNode(data)
-        ret = Text.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createCDATASection(data)
-
-[DOM]
-creates a CDATASection.
-=end
-      ## [DOM]
-      def createCDATASection(data)
-        ret = CDATASection.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createComment(data)
-
-[DOM]
-create a Comment.
-=end
-      ## [DOM]
-      def createComment(data)
-        ret = Comment.new(data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createProcessingInstruction(target, data)
-
-[DOM]
-create a ProcessingInstruction.
-=end
-      ## [DOM]
-      def createProcessingInstruction(target, data)
-        ret = ProcessingInstruction.new(target, data)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createAttribute(name)
-
-[DOM]
-create a Attribute.
-=end
-      ## [DOM]
-      def createAttribute(name)
-        ret = Attr.new(name)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createEntityReference(name)
-
-[DOM]
-create a EntityReference.
-=end
-      ## [DOM]
-      def createEntityReference(name)
-        ret = EntityReference.new(name)
-        ret.ownerDocument = self
-        ret
-      end
-
-=begin
-    --- Document#createDocumentFragment()
-
-[DOM]
-create a DocumentFragment.
-=end
-      ## [DOM]
-      def createDocumentFragment
-        ret = DocumentFragment.new
-        ret.ownerDocument = self
-        ret
-      end
-
-      ## [DOM]
-      def implementation
-        return @implemantation if @implemantation
-        ## singleton
-        @implemantation = DOMImplementation.instance
-      end
-
-      def implementation=(impl)
-        @implemantation = impl
-      end
-
-      ## [DOM2]
-      def importNode(impnode, deep)
-        ## [NOT IMPLEMENTED]
-        raise "not implemented"
-      end
-
-=begin
-    --- Document#createElementNS(nsuri, qname)
-
-[DOM2]
-creates a Element with namespace.
-=end
-      ## [DOM2]
-      def createElementNS(nsuri, qname)
-        ret = Element.new([nsuri, qname])
-        ret.ownerDocument = self
-        ret
-      end
-
-      XMLNSNS = 'http://www.w3.org/2000/xmlns/'
-      ## [DOM2]
-      def createAttributeNS(nsuri, qname)
-        nsuri = XMLNSNS if qname == 'xmlns' or qname =~ /^xmlns:/u
-        ret = Attr.new([nsuri, qname])
-        ret.ownerDocument = self
-        ret
-      end
-
-      ## [DOM2]
-      def getElementsByTagNameNS(nsuri, localname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if (localname == '*' || node.localname == localname) and
-                (nsuri == '*' || node.namespaceURI == nsuri)
-              ret << node
-            end
-            ret << node.getElementsByTagNameNS(nsuri, localname)
-          end
-        end if @children
-        ret
-      end
-
-      ## [DOM2]
-      def getElementById(elementId)
-        ## [NOT IMPLEMENTED]
-        raise "not implemented"
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == DOCUMENT_TYPE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-
-        if node.nodeType == ELEMENT_NODE
-          @children.each do |n|
-            if n.nodeType == ELEMENT_NODE
-              raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-            end
-          end
-        end
-
-        if node.nodeType == DOCUMENT_TYPE_NODE
-          @children.each do |n|
-            if n.nodeType == DOCUMENT_TYPE_NODE
-              raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-            end
-          end
-        end
-      end
-
-      def _getNamespaces(parentNamespaces = {}, all = false)
-        { nil => nil }
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documentfragment.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documentfragment.rb
deleted file mode 100644
index 90a4c9f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documentfragment.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::DocumentFragment
-
-=== superclass
-Node
-
-=end
-    class DocumentFragment<Node
-
-=begin
-=== Class Methods
-
-    --- DocumentFragment.new(*children)
-
-creates a new DocumentFragment.
-=end
-
-      def initialize(*children)
-        super(*children)
-      end
-
-=begin
-=== Methods
-
-    --- DocumentFragment#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_FRAGMENT_NODE
-      end
-
-=begin
-    --- DocumentFragment#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#document-fragment"
-      end
-
-=begin
-    --- DocumentFragment#parentNode=(p)
-
-returns the parent of this node.
-=end
-      ## DocumentFragment should not have the parent node.
-#      def parentNode=(p)
-#        @children.each do |child|
-#          child.parentNode = p
-#        end if @children
-#      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documenttype.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documenttype.rb
deleted file mode 100644
index 2038568..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/documenttype.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::DocumentType
-
-=== superclass
-Node
-=end
-    class DocumentType<Node
-
-=begin
-=== Class Methods
-
-    --- DocumentType.new(name, pubid, sysid, *children)
-
-creates a new DocuemntType.
-=end
-      def initialize(name, pubid, sysid, *children)
-        super(*children)
-        raise "parameter error" if !name
-        @name = name.freeze
-        @pubid = pubid.freeze
-        @sysid = sysid.freeze
-      end
-
-=begin
-=== Methods
-
-    --- DocumentType#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        DOCUMENT_TYPE_NODE
-      end
-
-=begin
-    --- DocumentType#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- DocumentType#to_s
-
-returns the string representation of the DocumentType.
-=end
-      def to_s
-        ""
-      end
-
-=begin
-    --- DocumentType#dump(depth = 0)
-
-dumps the DocumentType.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<!DOCTYPE #{@name}>\n"
-      end
-
-=begin
-    --- DocumentType#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the DocumentType.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @pubid, @sysid)
-      end
-
-      ## [DOM]
-      ## def entities; @entities; end
-      ## def notations; @notations; end
-
-      ## [DOM2]
-      def publicId; @pubid; end
-
-      ## [DOM2]
-      def systemId; @sysid; end
-
-      ## [DOM2]
-      def internalSubset; end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilder.rb
deleted file mode 100644
index e6126a4..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilder.rb
+++ /dev/null
@@ -1,277 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::DOMBuilder
-## 1999-2001 by yoshidam
-##
-##
-##   builder = XML::DOM::DOMImplementation.instance.createDOMBuilder
-##   doc = builder.parseURI("http://hoge/hoge.xml")
-##   inputSource = XML::DOM::InputSource.new("http://hoge/hoge.xml")
-##   doc = builder.parseDOMInputSource(inputSource)
-##
-##
-
-require 'xml/parserns'
-require 'xml/dom2/document'
-require 'xml/dom2/domentityresolverimpl'
-
-=begin
-= XML::DOM::DOMBuilder
-
-=end
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::DOMBuilder
-
-=== superclass
-XML::Parser
-
-=end
-    class DOMBuilder<XML::ParserNS
-      NSSEP = '!'
-
-      attr :createCDATASection, true
-      attr :createEntityReference, true
-
-=begin
-=== Class Methods
-
-    --- DOM::DOMBuilder.new(document = nil, *args)
-
-Constructor of DOM builder.
-
-usage:
-parser = XML::DOM::DOMBuilder.new(document)
-
-=end
-      ## new(document = nil, encoding = nil)
-      ## new(document = nil, parser, context, encoding = nil)
-
-      def self.new(document = nil, *args)
-        document ||= Document.new
-        if args[0].is_a?(self.class)
-          ret = super(*args)
-          ret.__initialize__(document, true)
-        else
-          ret = super(args[0], NSSEP)
-          ret.__initialize__(document, false)
-        end
-        ret.setReturnNSTriplet(true)
-        ret
-      end
-
-      def __initialize__(document, external = false)
-        @tree = nil
-        @entityResolver = DOMEntityResolverImpl.new
-        @createCDATASection = false
-        @createEntityReference = false
-        @document = document
-        @external = external
-      end
-
-
-=begin
-=== Methods
-    --- DOMBuilder#parse(xml, parse_ext = false)
-
-parse string or stream of XML contents.
-
-  xml:       string or stream of XML contents
-  parse_ext: flag whether parse external entities or not
-
-ex. doctree = parser.parse(xml, parse_ext)
-
-=end
-      ## Parse
-      ##   doctree = parser.parse(xml, parse_ext)
-      ##     xml:       string or stream of XML contents
-      ##     parse_ext: flag whether parse external entities or not
-      def parse(xml, parse_ext = false)
-        if @external
-          @tree = @document.createDocumentFragment
-        else
-          @tree = @document
-        end
-        @parse_ext = parse_ext
-        @current = @tree
-        @inDocDecl = 0
-        @decl = ""
-        @inDecl = 0
-        @idRest = 0
-        @extID = nil
-        @cdata_f = false
-        @cdata_buf = ''
-        @nsdecl = []
-        super(xml)
-        @tree
-      end
-
-      def parseURI(uri)
-        uri =~ /^((\w+):\/\/.+\/).*$/ ## /
-        setBase($1) if $1
-        xml = @entityResolver.resolveEntity(nil, uri).byteStream.read
-        parse(xml, true)
-      end
-
-      def text
-        return if @cdata_buf == ''
-        textnode = @document.createTextNode(@cdata_buf)
-        @current.appendChild(textnode)
-        @cdata_buf = ''
-      end
-
-      def startElement(name, data)
-        text
-        if !name.index(NSSEP)
-          qname = name
-          uri = nil
-        else
-          uri, localname, prefix = name.split(NSSEP)
-          if prefix.nil?
-            qname = localname
-          else
-            qname = prefix + ':' + localname
-          end
-        end
-        elem = @document.createElementNS(uri, qname)
-
-        @nsdecl.each do |nsdecl|
-          elem.setAttributeNode(nsdecl)
-        end
-        @nsdecl = []
-
-        attr = {}
-        specified = getSpecifiedAttributes
-        ## not implemented
-        ## elem.idAttribute = getIdAttribute
-
-        data.each do |key, value|
-          if !key.index(NSSEP)
-            qname = key
-            uri = nil
-          else
-            uri, localname, prefix = key.split(NSSEP)
-            if prefix.nil?
-              qname = localname
-            else
-              qname = prefix + ':' + localname
-            end
-          end
-          attr = @document.createAttributeNS(uri, qname)
-          attr.appendChild(@document.createTextNode(value))
-##          attr.specified = specified[key]
-          attr.specified = specified.include?(key)
-          elem.setAttributeNode(attr)
-        end
-
-        @current.appendChild(elem)
-        @current = elem
-      end
-
-      def endElement(name)
-        text
-        @current = @current.parentNode
-      end
-
-      def character(data)
-##        if @cdata_f
-          @cdata_buf << data
-##        else
-##          cdata = @document.createTextNode(data)
-##          @current.appendChild(cdata)
-##        end
-      end
-
-      def processingInstruction(name, data)
-        text
-        pi = @document.createProcessingInstruction(name, data)
-        @current.appendChild(pi)
-      end
-
-      def externalEntityRef(context, base, systemId, publicId)
-        text
-        tree = nil
-        if @parse_ext
-          extp = self.class.new(@document, self, context)
-          extp.setBase(base) if base
-          file = systemId
-          if systemId !~ /^\/|^\.|^http:|^ftp:/ && !base.nil? # /
-            file = base + systemId
-          end
-          begin
-            xml = @entityResolver.resolveEntity(nil, file).byteStream.read
-            tree = extp.parse(xml, @parse_ext)
-          rescue XML::Parser::Error
-            raise XML::Parser::Error.new("#{systemId}(#{extp.line}): #{$!}")
-          rescue Errno::ENOENT
-            raise
-          end
-          extp.done
-        end
-        if @createEntityReference
-          entref = @document.createEntityReference(context)
-          @current.appendChild(entref)
-          entref.appendChild(tree) if tree
-        else
-          @current.appendChild(tree) if tree
-        end
-      end
-
-      def startCdata
-        return unless @createCDATASection
-        text
-        @cdata_f = true
-##        @cdata_buf = ''
-      end
-
-      def endCdata
-        return unless @createCDATASection
-        cdata = @document.createCDATASection(@cdata_buf)
-        @current.appendChild(cdata)
-        @cdata_buf = ''
-        @cdata_f = false
-      end
-
-      def comment(data)
-        text
-        comment = @document.createComment(data)
-        @current.appendChild(comment)
-      end
-
-      def startDoctypeDecl(name, pubid, sysid, internal_subset)
-        doctype = @document.implementation.createDocumentType(name,
-                                                              pubid, sysid)
-        @current.appendChild(doctype)
-      end
-
-      def startNamespaceDecl(prefix, uri)
-        qname = 'xmlns'
-        if prefix
-          qname << ':' + prefix
-        end
-        attr = @document.createAttributeNS(nil, qname)
-        attr.appendChild(@document.createTextNode(uri))
-        attr.specified = true
-        @nsdecl << attr
-      end
-
-##      def endNamespaceDecl(prefix, uri)
-##      end
-
-##      def defaultHandler(data)
-##      end
-
-
-
-      ## [DOM3?]
-      def entityResolver; @entityResolver; end
-      def entityResolver=(resolver)
-        raise ArgumentError, 'invalid value for DOMEntityResolver' unless
-          resolver.is_a?(DOMEntityResolver)
-        @entityResolver = resolver
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilderfilter.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilderfilter.rb
deleted file mode 100644
index 9d78d1e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dombuilderfilter.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::DOMBuilderFilter
-## 2001 by yoshidam
-##
-
-module XML
-  module DOM
-    module DOMBuilderFilter
-      def endElement(element); end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolver.rb
deleted file mode 100644
index 51350ae..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolver.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::DOMEntityResolver
-## 2001 by yoshidam
-##
-
-module XML
-  module DOM
-    module DOMEntityResolver
-      ## DOMInputSource resolveEntity(publicId, systemId)
-      def resolveEntity(publicId, systemId); end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolverimpl.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolverimpl.rb
deleted file mode 100644
index 1168020..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domentityresolverimpl.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::DOMEntityResolverImpl
-## 2001 by yoshidam
-##
-
-require 'xml/dom2/domentityresolver'
-require 'xml/dom2/dominputsource'
-
-module XML
-  module DOM
-    class DOMEntityResolverImpl
-      include DOMEntityResolver
-
-      ## replace 'open' by WGET::open
-      begin
-        require 'wget'
-##        include WGET
-      rescue
-        ## ignore
-      end
-
-      ## DOMInputSource resolveEntity(publicId, systemId)
-      def resolveEntity(publicId, systemId)
-        ret = DOMInputSource.new
-        ret.publicId = publicId
-        ret.systemId = systemId
-        if systemId =~ /file:/
-          ret.byteStream = open(systemId.sub('^file://', ''))
-        else
-          ret.byteStream = WGET::open(systemId)
-        end
-        ret
-      end
-    end
-  end
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domexception.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domexception.rb
deleted file mode 100644
index fe0c05c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domexception.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-module XML
-  module DOM
-=begin
-
-== Class XML::DOM::DOMException
-
-=== superclass
-Exception
-
-DOM exception.
-=end
-
-    class DOMException<Exception
-      INDEX_SIZE_ERR = 1
-      WSTRING_SIZE_ERR = 2
-      HIERARCHY_REQUEST_ERR  = 3
-      WRONG_DOCUMENT_ERR = 4
-      INVALID_NAME_ERR = 5
-      NO_DATA_ALLOWED_ERR = 6
-      NO_MODIFICATION_ALLOWED_ERR = 7
-      NOT_FOUND_ERR = 8
-      NOT_SUPPORTED_ERR = 9
-      INUSE_ATTRIBUTE_ERR = 10
-
-      ## [DOM2]
-      INVALID_STATE_ERR = 11
-      SYNTAX_ERR = 12
-      INVALID_MODIFICATION_ERR = 13
-      NAMESPACE_ERR = 14
-      INVALIUD_ACCESS_ERR = 14
-
-      ERRMSG = [
-        "no error",
-
-        "index size",
-        "wstring size",
-        "hierarchy request",
-        "wrong document",
-        "invalid name",
-        "no data allowed",
-        "no modification allowed",
-        "not found",
-        "not supported",
-        "inuse attribute",
-
-        ## [DOM2]
-        "invalid state",
-        "syntax error",
-        "invalid modification",
-        "namescape erorr",
-        "invaliud access"
-      ]
-
-=begin
-=== Class Methods
-
-    --- DOMException.new(code = 0)
-
-generate DOM exception.
-=end
-
-      def initialize(code = 0)
-        @code = code
-      end
-
-=begin
-=== Methods
-
-    --- DOMException#code()
-
-return code of exception.
-
-=end
-      def code
-        @code
-      end
-
-=begin
-
-    --- DOMException#to_s()
-
-return the string representation of the error.
-
-=end
-      def to_s
-        ERRMSG[@code].dup
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domimplementation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domimplementation.rb
deleted file mode 100644
index ed80c9f..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/domimplementation.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##                     
-
-require 'xml/dom2/domexception'
-require 'xml/dom2/dombuilder'
-require 'xml/dom2/documenttype'
-require 'singleton'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::DOMImplementation
-
-=end
-    class DOMImplementation
-      include Singleton
-
-=begin
-   --- DOMImplementation#hasFeature(feature, version)
-
-test if DOM implementation has correct feature and version.
-
-=end
-      def hasFeature(feature, version)
-        if (feature =~ /^XML$/i || feature =~ /^Core$/i) &&
-            (version.nil? || version == "1.0" || version == "2.0")
-          return true
-        end
-        false
-      end
-
-      ## [DOM2]
-      def createDocumentType(qname, pubid, sysid)
-        DocumentType.new(qname, pubid, sysid)
-      end
-
-      ## [DOM2]
-      def createDocument(nsuri, qname, doctype)
-        raise DOMException.new(DOMException::WRONG_DOCUMENT_ERR) if
-          doctype && doctype.ownerDocument
-        doc = Document.new
-        if doctype
-          doc.appendChild(doctype)
-          doctype.ownerDocument = doc
-        end
-        elem = doc.createElementNS(nsuri, qname)
-        doc.appendChild(elem)
-        doc.implementation = self
-        doc
-      end
-
-      ## [DOM3?]
-      def createDOMBuilder
-        XML::DOM::DOMBuilder.new(Document.new)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dominputsource.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dominputsource.rb
deleted file mode 100644
index 39f025b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/dominputsource.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM::DOMEntityResolver
-## 2001 by yoshidam
-##
-
-module XML
-  module DOM
-    class DOMInputSource
-      def initialize
-        @bstream = nil
-        @cstream = nil
-        @encoding = nil
-        @pubid = nil
-        @sysid = nil
-      end
-
-      def byteStream; @bstream; end
-      def byteStream=(stream); @bstream = stream; end
-      def characterStream; @cstream;  end
-      def characterStream=(stream); @cstream = stream; end
-      def encoding; @encoding; end
-      def encoding=(enc);@encoding = enc; end
-      def publicId; @pubid; end
-      def publicId=(pubid); @pubid = pubid; end
-      def systemId; @sysid; end
-      def systemId=(sysid); @sysid = sysid; end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/element.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/element.rb
deleted file mode 100644
index 5d21b57..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/element.rb
+++ /dev/null
@@ -1,533 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-require 'xml/dom2/nodelist'
-require 'xml/dom2/namednodemap'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Element
-
-=== superclass
-Node
-
-=end
-    class Element<Node
-
-=begin
-=== Class Methods
-
-    --- Element.new(tag = nil, attrs = nil, *children)
-
-create a new Element.
-=end
-      ## new(tag, attrs, [child1, child2, ...]) or
-      ## new(tag, attrs, child1, child2, ...)
-      ##     tag:    String
-      ##     attrs:  Hash, Attr or Array of Attr (or nil)
-      ##     child?: String or Node
-      def initialize(tag = nil, attr = nil, *children)
-        super(*children)
-        raise "parameter error" if !tag
-        @name = nil
-        @prefix = nil
-        @localname = nil
-        @uri = nil
-        @idAttribute = nil
-        if tag.is_a?(Array)
-          ## namespaces
-          raise "parameter error" if tag.length != 2
-          @localname = tag[1]
-          if tag[1].index(':')
-            @prefix, @localname = tag[1].split(':')
-          end
-          @name = tag[1] ## qualified name
-          @uri =  tag[0] ## namespace URI
-        else
-          @name = tag
-        end
-        @name.freeze
-        @localname.freeze
-        @uri.freeze
-        @prefix.freeze
-
-        if attr.nil?
-          @attr = NamedNodeMap.new([])
-        elsif attr.is_a?(Hash)
-          nodes = []
-          attr.each do |key, value|
-            nodes.push(Attr.new(key, value))
-          end
-          @attr = NamedNodeMap.new(nodes)
-        elsif attr.is_a?(Array)
-          @attr = NamedNodeMap.new(attr)
-        elsif attr.nodeType == ATTRIBUTE_NODE
-          @attr = NamedNodeMap.new([attr])
-        else
-          raise "parameter error: #{attr}"
-        end
-        @attr.each do |attr|
-          attr.ownerElement = self
-        end
-      end
-
-=begin
-=== Methods
-
-    --- Element#nodeType()
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ELEMENT_NODE
-      end
-
-=begin
-    --- Element#nodeName()
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Element#attributes()
-
-[DOM]
-returns the attributes of this Element.
-=end
-      ## [DOM]
-      def attributes
-        if iterator?
-          @attr.each do |key, value|
-            yield(value)
-          end if @attr
-        else
-          @attr
-        end
-      end
-
-      def _getNamespaces(parentNamespaces = {}, all = false)
-        if !parentNamespaces
-          parentNamespaces = parentNode._getNamespaces(nil, true)
-        end
-        namespaces = {}
-        attributes.each do |a|
-          namespaces[a.prefix] = a.namespaceURI if a.prefix
-        end
-        if @localname
-          namespaces[@prefix] = @uri
-        end
-        parentNamespaces.each do |prefix, uri|
-          if all
-            if !namespaces.include?(prefix)
-              namespaces[prefix] = uri
-            end
-          else
-            if namespaces[prefix] == parentNamespaces[prefix]
-              namespaces.delete(prefix)
-            end
-          end
-        end
-        namespaces
-      end
-
-=begin
-    --- Element#to_s()
-
-return the string representation of the Element.
-=end
-      def to_s
-        attr = ''
-
-        namespaces = {}
-        attributes.each do |a|
-          namespaces[a.prefix] = a.namespaceURI if a.prefix
-        end
-        if @localname
-          namespaces[@prefix] = @uri
-        end
-
-        namespaces.each do |prefix, uri|
-          ## skip the namespace declaration of xml or xmlns.
-          next if prefix == 'xml' or
-            uri == 'http://www.w3.org/2000/xmlns/'
-          nsattrname = 'xmlns'
-          nsattrname << ':' + prefix if prefix
-          ## skip duplicated namespace declarations.
-          next if @attr.getNamedItem(nsattrname)
-          attr << " #{nsattrname}=\"#{uri}\""
-        end
-
-        @attr.each do |a|
-          attr << ' ' + a.to_s
-        end if @attr
-        content = super
-        if content != ''
-          ret = "<#{@name}#{attr}>#{content}</#{@name}>"
-        else
-          ret = "<#{@name}#{attr}/>"
-        end
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- Element#dump(depth = 0)
-
-dumps the Element.
-=end
-      def dump(depth = 0)
-        attr = ''
-        @attr.each do |a|  ## self.attributes do |a|
-          attr += a.to_s + ", "
-        end if @attr
-        attr.chop!
-        attr.chop!
-        print ' ' * depth * 2
-        print "#{@name}(#{attr})\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-      end
-
-=begin
-    --- Element#tagName()
-
-[DOM]
-alias of nodeName.
-=end
-      ## [DOM]
-      alias tagName nodeName
-
-=begin
-    --- Element#getAttribute(name)
-
-[DOM]
-retrieves an attribute value by name.
-=end
-      ## [DOM]
-      def getAttribute(name)
-        attr = getAttributeNode(name)
-        if attr.nil?
-          ''
-        else
-          attr.nodeValue
-        end
-      end
-
-=begin
-    --- Element#setAttribute(name, value)
-
-[DOM]
-adds a new attribute.
-=end
-      ## [DOM]
-      def setAttribute(name, value)
-        if @ownerElement
-          attr = @ownerDocument.createAttribute(name)
-          attr.appendChild(@ownerDocument.createTextNode(value))
-        else
-          attr = Attr.new(name)
-          attr.appendChild(Text.new(value))
-        end
-        setAttributeNode(attr)
-      end
-
-=begin
-    --- Element#removeAttribute(name)
-
-[DOM]
-remove an attribute by name.
-=end
-      ## [DOM]
-      def removeAttribute(name)
-        ret = getAttributeNode(name)
-        removeAttributeNode(ret) if ret
-      end
-
-=begin
-    --- Element#getAttributeNode(name)
-
-[DOM]
-retrieves an Attr node by name.
-=end
-      ## [DOM]
-      def getAttributeNode(name)
-        @attr.getNamedItem(name)
-      end
-
-=begin
-    --- Element#setAttributeNode(newAttr)
-
-[DOM]
-adds a new attribute.
-=end
-      ## [DOM]
-      def setAttributeNode(newAttr)
-        ret = getAttributeNode(newAttr.nodeName)
-        if ret == newAttr
-          raise DOMException.new(DOMException::INUSE_ATTRIBUTE_ERR)
-        end
-        ret.ownerElement = nil if ret
-        @attr.setNamedItem(newAttr)
-        newAttr.ownerElement = self
-        ret
-      end
-
-=begin
-    --- Element#removeAttributeNode(oldAttr)
-
-[DOM]
-removes the specified attribute.
-=end
-      ## [DOM]
-      def removeAttributeNode(oldAttr)
-        ret = getAttributeNode(oldAttr.nodeName)
-        if ret.nil? || ret != oldAttr
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        @attr.removeNamedItem(oldAttr.nodeName)
-        ret.ownerElement = nil
-        ret
-      end
-
-=begin
-    --- Element#getElementsByTagName(tagname)
-
-[DOM]
-returns a NodeList of all descendant elements with given tag name.
-=end
-      ## [DOM] (but this is not "live")
-      def getElementsByTagName(tagname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if tagname == '*' || node.nodeName == tagname
-              ret << node
-            end
-            ret << node.getElementsByTagName(tagname)
-          end
-        end if @children
-        ret
-      end
-
-
-=begin
-    --- Element#normalize
-
-[DOM]
-puts all Text nodes in the full depth of the sub-tree under this
-Eelemnt.
-=end
-      ## [DOM]
-      def normalize
-        return if @children.nil?
-        old = nil
-        children = @children.to_a.dup
-        children.each do |child|
-          if !old.nil? && old.nodeType == TEXT_NODE &&
-              child.nodeType == TEXT_NODE
-            old.appendData(child.nodeValue)
-            self.removeChild(child)
-          else
-            if child.nodeType == ELEMENT_NODE
-              child.normalize
-            end
-            old = child
-          end
-        end
-      end
-
-=begin
-    --- Element#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Element.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        attrs = []
-        @attr.each do |attr|
-          attrs.push(attr.cloneNode(true))
-        end
-        super(deep, @name, attrs)
-      end
-
-      ## get the list of nodeValues by IDs
-      ## [experimental implement]
-      def _getIDVals(ids = nil)
-        if ids.nil?
-          doc = ownerDocument
-          return [] if doc.nil?
-          ids = doc._getIDAttrs
-        end
-
-        idelem = []
-        if !ids[nodeName].nil?
-          return attributes._getValues(ids[nodeName])
-        elsif !ids['*'].nil?
-          return attributes._getValues(ids['*'])
-        end
-        return []
-      end
-
-=begin
-    --- Element#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      ## trim extra whitespaces
-      ## if attribute 'xml:space' is 'preserve',
-      ## don't trim any white spaces
-      def trim(preserve = false)
-        if !attributes['xml:space'].nil?
-          value = attributes['xml:space'].nodeValue
-          if value == 'preserve'
-            preserve = true
-          elsif value == 'default'
-            preserve = false
-          end
-        end
-        return nil if @children.nil?
-        children = @children.to_a.dup
-        children.each do |child|
-          if !preserve && (child.nodeType == TEXT_NODE ||
-                           child.nodeType == CDATA_SECTION_NODE)
-            if child.trim == ""
-              self.removeChild(child)
-            end
-          else
-            child.trim(preserve)
-          end
-        end
-        nil
-      end
-
-      ## [DOM2]
-      def namespaceURI; @uri; end
-
-      ## [DOM2]
-      def prefix; @prefix; end
-
-      ## [DOM2]
-      def prefix=(prefix);
-        ## to be checked
-        @prefix = prefix
-        @name = @prefix + ':' + @localname
-        @prefix.freeze
-        @name.freeze
-      end
-
-      ## [DOM2]
-      def localname; @localname; end
-
-      ## [DOM2]
-      def hasAttributes()
-        attributes.length > 0
-      end
-
-      ## [DOM2]
-      def getAttributeNS(nsuri, localname)
-        attr = getAttributeNodeNS(nsuri, localname)
-        if attr.nil?
-          ""
-        else
-          attr.nodeValue
-        end
-      end
-
-      ## [DOM2]
-      def setAttributeNS(nsuri, qname, value)
-        if qname.index(':')
-          prefix, localname = qname.split(':')
-          raise DOMException.new(DOMException::NAMESPACE_ERR) if
-            nsuri.nil? or
-            (prefix == 'xml' and
-             nsuri != 'http://www.w3.org/XML/1998/namespace')
-        else
-          raise DOMException.new(DOMException::NAMESPACE_ERR) if
-            qname == 'xmlns' and
-            nsuri != 'http://www.w3.org/2000/xmlns/'
-        end
-        attr = @ownerDocument.createAttributeNS(nsuri, qname)
-        attr.appendChild(@ownerDocument.createTextNode(value))
-        setAttributeNodeNS(attr)
-      end
-
-      ## [DOM2]
-      def removeAttributeNS(nsuri, localname)
-        ret = getAttributeNodeNS(nsuri, localname)
-        removeAttributeNode(ret) if ret
-      end
-
-      ## [DOM2]
-      def getAttributeNodeNS(nsuri, localname)
-        attributes.each do |attr|
-          return attr if
-            attr.namespaceURI == nsuri && attr.localname == localname
-        end
-        nil
-      end
-
-      ## [DOM2]
-      def setAttributeNodeNS(newAttr)
-        ret = getAttributeNodeNS(newAttr.namespaceURI, newAttr.localname)
-        removeAttributeNode(ret) if ret
-        setAttributeNode(newAttr)
-        ret
-      end
-
-      ## [DOM2]
-      def getElementsByTagNameNS(nsuri, localname)
-        ret = NodeList.new
-        @children.each do |node|
-          if node.nodeType == ELEMENT_NODE
-            if (localname == '*' || node.localname == localname) and
-                (nsuri == '*' || node.namespaceURI == nsuri)
-              ret << node
-            end
-            ret << node.getElementsByTagNameNS(nsuri, localname)
-          end
-        end if @children
-        ret
-      end
-
-      ## [DOM2]
-      def hasAttribute(name)
-        !getAttributeNode(name).nil?
-      end
-
-      ## [DOM2]
-      def hasAttributeNS(nsuri, localname)
-        !getAttributeNodeNS(nsuri, localname).nil?
-      end
-
-      def idAttribute; @idAttribute; end
-      def idAttribute=(name); @idAttribute = name; end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entity.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entity.rb
deleted file mode 100644
index 3dbad08..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entity.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Entity
-
-=== superclass
-Node
-=end
-    class Entity<Node
-
-=begin
-=== Class Methods
-
-    --- Entity.new(name, pubid, sysid, notation)
-
-creates a new Entity.
-=end
-      def initialize(name, pubid, sysid, notation)
-        super()
-        @name = name.freeze
-        @pubid = pubid.freeze
-        @sysid = sysid.freeze
-        @notation = notation.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Entity#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ENTITY_NODE
-      end
-
-=begin
-    --- Entity#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Entity#publicId
-
-returns the publicId of the Entity.
-=end
-      def publicId
-        @pubid
-      end
-
-=begin
-    --- Entity#systemId
-
-returns the systemId of the Entity.
-=end
-      def systemId
-        @sysid
-      end
-
-=begin
-    --- Entity#notationName
-
-returns the notationname of the Entity.
-=end
-      def notationName
-        @notation
-      end
-
-=begin
-    --- Entity#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Entity.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @pubid, @sysid, @notation)
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entityreference.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entityreference.rb
deleted file mode 100644
index 18ba680..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/entityreference.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::EntityReference
-
-=== superclass
-Node
-=end
-    class EntityReference<Node
-
-=begin
-=== Class Methods
-
-    --- EntityReference.new(name, *children)
-
-creates a new EntityReference.
-=end
-      def initialize(name, *children)
-        super(*children)
-        raise "parameter error" if !name
-        @name = name.freeze
-        @value = nil
-      end
-
-=begin
-=== Methods
-
-    --- EntityReference#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        ENTITY_REFERENCE_NODE
-      end
-
-=begin
-    --- EntityReference#nodeName
-
-[DOM]
-returns  the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- EntityReference#to_s
-
-returns the string representation of the EntityReference.
-=end
-      ## reference form or expanded form?
-      def to_s
-        "&#{@name};"
-      end
-
-=begin
-    --- EntityReference#dump(depth = 0)
-
-dumps the EntityReference.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "&#{@name}{\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-        print ' ' * depth * 2
-        print "}\n"
-      end
-
-=begin
-    --- EntityReference#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the EntityReference.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name)
-      end
-
-      def _checkNode(node)
-        unless node.nodeType == ELEMENT_NODE ||
-            node.nodeType == PROCESSING_INSTRUCTION_NODE ||
-            node.nodeType == COMMENT_NODE ||
-            node.nodeType == TEXT_NODE ||
-            node.nodeType == CDATA_SECTION_NODE ||
-            node.nodeType == ENTITY_REFERENCE_NODE
-          raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-        end
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/namednodemap.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/namednodemap.rb
deleted file mode 100644
index 424d842..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/namednodemap.rb
+++ /dev/null
@@ -1,138 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-module XML
-  module DOM
-=begin
-== Class XML::DOM::NamedNodeMap
-
-=end
-
-    class NamedNodeMap
-
-=begin
-=== Class Methods
-
-    --- NamedNodeMap.new(nodes = nil)
-
-creates a new NamedNodeMap.
-=end
-      def initialize(nodes = nil)
-        @nodes = {}
-        nodes.each do |node|
-          @nodes[node.nodeName] = node
-        end if nodes
-      end
-
-=begin
-=== Methods
-
-    --- NamedNodeMap#getNamedItem(name)
-
-[DOM]
-retrieves a node specified by name.
-=end
-      ## [DOM]
-      def getNamedItem(name)
-        @nodes[name]
-      end
-
-=begin
-    --- NamedNodeMap#setNamedItem(node)
-
-[DOM]
-adds a node using its nodeName attribute.
-=end
-      ## [DOM]
-      def setNamedItem(node)
-        @nodes[node.nodeName] = node
-      end
-
-=begin
-    --- NamedNodeMap#removeNamedItem(name)
-
-[DOM]
-removes a node specified by name.
-=end
-      ## [DOM]
-      def removeNamedItem(name)
-        ret = @nodes[name]
-        @nodes.delete(name)
-        ret
-      end
-
-=begin
-    --- NamedNodeMap#item(index)
-
-[DOM]
-returns the index item in the map.
-=end
-      ## [DOM]
-      def item(index)
-        v = @nodes.to_a[index]
-        return v[1] if v
-        nil
-      end
-
-=begin
-    --- NamedNodeMap#[](name)
-
-returns nodes associated to name.
-=end
-      def [](name)
-        @nodes[name]
-      end
-
-=begin
-    --- NamedNodeMap#[]=(name, node)
-
-sets node named name.
-=end
-      def []=(name, node)
-        raise "parameter error" if node.nodeName != name
-        @nodes[name] = node
-      end
-
-=begin
-    --- NamedNodeMap#each()
-
-iterates over each pair of name and node(name, node) of the namedNodeMap.
-=end
-      def each
-        @nodes.each do |key, value|
-          yield(value)
-        end
-      end
-
-=begin
-    --- NamedNodeMap#size()
-
-[DOM]
-returns the number of nodes in the map.
-=end
-      ## [DOM]
-      def size
-        @nodes.length
-      end
-      alias length size
-
-      ## get nodeValues by names
-      ##   names ::= name ('|' name)*
-      def _getValues(names)
-        ret = []
-        names.split('|').each do |name|
-          if !@nodes[name].nil?
-            ret.push(@nodes[name].nodeValue)
-          end
-        end
-        ret
-      end
-
-      ## [DOM2]
-      ## def getNamedItemNS(nsuri, localname); end
-      ## def removeNamedItemNS(nsuri, localname); end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/node.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/node.rb
deleted file mode 100644
index 76d8c96..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/node.rb
+++ /dev/null
@@ -1,587 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/domexception'
-require 'xml/dom2/nodelist'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Node
-
-=end
-    class Node
-      ## [DOM]
-      NODE_NODE = 0
-      ELEMENT_NODE = 1
-      ATTRIBUTE_NODE = 2
-      TEXT_NODE = 3
-      CDATA_SECTION_NODE = 4
-      ENTITY_REFERENCE_NODE = 5
-      ENTITY_NODE = 6
-      PROCESSING_INSTRUCTION_NODE = 7
-      COMMENT_NODE  = 8
-      DOCUMENT_NODE = 9
-      DOCUMENT_TYPE_NODE = 10
-      DOCUMENT_FRAGMENT_NODE = 11
-      NOTATION_NODE = 12
-
-      ## non-DOM
-#      NODE = 0
-#      ELEMENT = 1
-#      ATTRIBUTE = 2
-#      TEXT = 3
-#      CDATA_SECTION = 4
-#      ENTITY_REFERENCE = 5
-#      ENTITY = 6
-#      PI = 7
-#      PROCESSING_INSTRUCTION = 7
-#      COMMENT  = 8
-#      DOCUMENT = 9
-#      DOCUMENT_TYPE = 10
-#      DOCUMENT_FRAGMENT = 11
-#      NOTATION = 12
-
-=begin
-=== Class Methods
-
-    --- Node.new(*children)
-
-make a Node.
-children is a Array of child, or sequence of child.
-child is a String or Node.
-
-=end
-      ## new([child1, child2, ...]) or
-      ## new(child1, child2, ...)
-      ##     child?: String or Node
-      def initialize(*children)
-        @ownerDocument = nil
-        @parent = nil
-        @children = nil
-        self.childNodes = children if children.length > 0
-      end
-
-=begin
-=== Methods
-
-    --- Node#parentNode
-
-[DOM]
-return parent node.
-
-=end
-      ## [DOM]
-      def parentNode
-        @parent
-      end
-
-=begin
-    --- Node#parentNode=(p)
-
-set node p as parent.
-=end
-
-      def parentNode=(p)
-        @parent = p
-      end
-
-=begin
-    --- Node#nodeType
-
-[DOM]
-return nodetype.
-
-=end
-      ## [DOM]
-      def nodeType
-        NODE_NODE
-      end
-
-=begin
-    --- Node#nodeName
-
-[DOM]
-return nodename.
-
-=end
-      ## [DOM]
-      def nodeName
-        "#node"
-      end
-
-#      def nodeName=(p)
-#        @name = p
-#      end
-
-=begin
-    --- Node#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue; nil; end
-
-=begin
-    --- Node#nodeValue=(p)
-
-[DOM]
-set nodevalue as p.
-=end
-      ## [DOM]
-      def nodeValue=(p)
-        ## no effect
-      end
-
-=begin
-    --- Node#childNodes()
-
-[DOM]
-if method has block, apply block for children nodes.
-without block, return children nodelist.
-=end
-      ## [DOM]
-      def childNodes
-        if iterator?
-          @children.each do |child|
-            yield(child)
-          end if @children
-        else
-          return @children if !@children.nil?
-          @children = NodeList.new
-        end
-      end
-
-      def childNodes=(p)
-        if p.nil? || (p.is_a?(Array) && p.length == 0)
-          return
-        end
-        if @children.nil?
-          @children = NodeList.new
-        else
-          @children.to_a.clear
-        end
-        p.flatten!
-        p.each do |child|
-          if child.is_a?(String)
-            c = Text.new(child)
-            @children.push(c)
-            c.parentNode = self
-          elsif child.is_a?(Node)
-            @children.push(child)
-            child.parentNode = self
-          else
-            raise "parameter error"
-          end
-        end if p
-      end
-
-=begin
-    --- Node#attributes
-
-[DOM]
-return attributes of node(but always return nil?).
-=end
-      ## [DOM]
-      def attributes
-        nil
-      end
-
-      ## proper parameter type?
-#      def attributes=(p)
-#      end
-
-=begin
-    --- Node#[]=(index, nodes)
-
-set children node as nodes with []-style.
-=end
-      def []=(index, nodes)
-        @children[index..index] = nodes
-        @children.each do |child|
-          child.parentNode = self
-        end if @children
-      end
-
-=begin
-    --- Node#[](index)
-
-get children node with []-style.
-=end
-      def [](index)
-        @children[index]
-      end
-
-=begin
-    --- Node#+(node)
-
-concat node to Node.
-=end
-      def +(node)
-        [self, node]
-      end
-
-=begin
-    --- Node#to_s
-
-returns the string representation of the Node.
-=end
-      def to_s
-        @children.to_s
-      end
-
-=begin
-    --- Node#dump(depth = 0)
-
-dump the Node.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print nodeName + "\n"
-        @children.each do |child|
-          child.dump(depth + 1)
-        end if @children
-      end
-
-=begin
-    --- Node#inspect()
-
-returns the human-readable string representation.
-=end
-      def inspect
-        "#<#{self.class}: #{self.nodeName}>"
-      end
-
-=begin
-    --- Node#firstChild()
-
-[DOM]
-return the first child node.
-=end
-      ## [DOM]
-      def firstChild
-        return nil if !@children || @children.length == 0
-        return @children[0]
-      end
-
-=begin
-    --- Node#lastChild()
-
-[DOM]
-return the last child node.
-=end
-      ## [DOM]
-      def lastChild
-        return nil if !@children || @children.length == 0
-        return @children[-1]
-      end
-
-=begin
-    --- Node#previousSibling()
-
-[DOM]
-return the previous sibling node.
-=end
-      ## [DOM]
-      def previousSibling
-        return nil if !@parent
-        prev = nil
-        @parent.childNodes do |child|
-          return prev if child == self
-          prev = child
-        end
-        nil
-      end
-
-=begin
-    --- Node#nextSibling()
-
-[DOM]
-return the next sibling node.
-=end
-      ## [DOM]
-      def nextSibling
-        return nil if !@parent
-        nexts = nil
-        @parent.childNodes.reverse.each do |child|
-          return nexts if child == self
-          nexts = child
-        end
-        nil
-      end
-
-      def _getChildIndex(node)
-        index = 0
-        @children.each do |child|
-          if child == node
-            return index
-          end
-          index += 1
-        end
-        nil
-      end
-
-      def _removeFromTree
-        parent = parentNode
-        if parent
-          parent.removeChild(self)
-        end
-      end
-
-      def _checkNode(node)
-        raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
-      end
-
-      def _insertNodes(index, node)
-        if node.nodeType == DOCUMENT_FRAGMENT_NODE
-
-          node.childNodes.to_a.each_with_index do |n, i|
-            if index == -1
-              _insertNodes(-1, n)
-            else
-              _insertNodes(index + i, n)
-            end
-          end
-        elsif node.is_a?(Node)
-          ## to be checked
-          _checkNode(node)
-          node._removeFromTree
-          if index == -1
-            @children.push(node)
-          else
-            @children[index, 0] = node
-          end
-          node.parentNode = self
-        else
-          raise ArgumentError, "invalid value for Node"
-        end
-      end
-
-      def _removeNode(index, node)
-        @children[index, 1] = nil
-        node.parentNode = nil
-      end
-
-# =begin
-#     --- Node#insertAfter(newChild, refChild)
-# 
-# insert newChild into the node after refChild.
-# =end
-#       def insertAfter(newChild, refChild)
-#         if @children.nil? || @children.length == 0
-#           raise DOMException.new(DOMException::NOT_FOUND_ERR)
-#         end
-#         index = _getChildIndex(refChild)
-#         raise DOMException.new(DOMException::NOT_FOUND_ERR) if index.nil?
-#         _insertNodes(index + 1, newChild)
-#       end
-
-=begin
-    --- Node#insertBefore(newChild, refChild)
-
-[DOM]
-insert newChild into the node before refChild.
-=end
-      ## [DOM]
-      def insertBefore(newChild, refChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(refChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _insertNodes(index, newChild)
-      end
-
-=begin
-    --- Node#replaceChild(newChild, oldChild)
-
-[DOM]
-replace the child node oldChild with newChild.
-=end
-      ## [DOM]
-      def replaceChild(newChild, oldChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(oldChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _removeNode(index, oldChild)
-        _insertNodes(index, newChild)
-      end
-
-=begin
-    --- Node#removeChild(oldChild)
-
-[DOM]
-remove the children node oldChild.
-=end
-      ## [DOM]
-      def removeChild(oldChild)
-        if @children.nil? || @children.length == 0
-          raise DOMException.new(DOMException::NOT_FOUND_ERR)
-        end
-        index = _getChildIndex(oldChild)
-        raise DOMException.new(DOMException::NOT_FOUND_ERR) if !index
-        _removeNode(index, oldChild)
-        oldChild
-      end
-
-=begin
-    --- Node#appendChild(newChild)
-
-[DOM]
-adds the node newChild to the end of the list of children of this node.
-=end
-      ## [DOM]
-      def appendChild(newChild)
-        @children = NodeList.new if !@children
-        _insertNodes(-1, newChild)
-      end
-
-=begin
-    --- Node#hasChildNodes()
-
-[DOM]
-returns true if node has children, or return false if node has no children.
-=end
-      ## [DOM]
-      def hasChildNodes
-        !@children.nil? && @children.length > 0
-      end
-
-=begin
-    --- Node#ownerDocument()
-
-[DOM]
-Document object associated with this node.
-=end
-      ## [DOM]
-      def ownerDocument; @ownerDocument; end
-
-      def ownerDocument=(document); @ownerDocument = document; end
-
-=begin
-    --- Node#cloneNode()
-
-[DOM]
-return the copy of the Node.
-=end
-      ## [DOM]
-      def cloneNode(deep = true, *args)
-        ret = self.class.new(*args)
-        if (deep)
-          @children.each do |child|
-            ret.appendChild(child.cloneNode(true))
-          end
-        end if @children
-        ret
-      end
-
-=begin
-    --- Node#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      ## trim extra whitespaces
-      def trim(preserve = false)
-        return nil if @children.nil?
-        children = @children.to_a.dup
-        children.each do |child|
-          if !preserve && (child.nodeType == TEXT_NODE ||
-                           child.nodeType == CDATA_SECTION_NODE)
-            if child.trim == ""
-              self.removeChild(child)
-            end
-          else
-            child.trim(preserve)
-          end
-        end
-        nil
-      end
-
-
-      ## [DOM2]
-      def isSupported(feature, version)
-        if (feature =~ /^XML$/i || feature =~ /^Core$/i) &&
-            (version.nil? || version == "1.0" || version == "2.0")
-          return true
-        end
-        false
-      end
-
-      ## [DOM2]
-      def namespaceURI; nil; end
-
-      ## [DOM2]
-      def prefix; nil; end
-
-      ## [DOM2]
-      def prefix=(prefix);
-        ## no effect
-      end
-
-      ## [DOM2]
-      def localname; nil; end
-
-      ## [DOM2]
-      def hasAttributes(); false; end
-
-
-      include Enumerable
-      def each
-        sibstack = []
-        siblings = [ self ]
-        while true
-          if siblings.length == 0
-            break if sibstack.length == 0
-            siblings = sibstack.pop
-            next
-          end
-          node = siblings.shift
-          yield(node)
-          children = node.childNodes
-          if !children.nil?
-            sibstack.push(siblings)
-            siblings = children.to_a.dup
-          end
-        end
-      end
-
-      include Comparable
-
-      def ==(node)
-        equal?(node)
-      end
-
-      def <=>(node)
-        ancestors1 = [self]
-        ancestors2 = [node]
-        p = self
-        while p = p.parentNode
-          ancestors1.unshift(p)
-        end
-        p = node
-        while p = p.parentNode
-          ancestors2.unshift(p)
-        end
-        raise "different document" unless ancestors1[0].equal?(ancestors2[0])
-        ret = 0
-        i = 0
-        for i in 1...ancestors1.size
-          next if ancestors1[i].equal?(ancestors2[i])
-          return 1 if ancestors2[i].nil?
-          children = ancestors1[i - 1].childNodes.to_a
-          return children.index(ancestors1[i]) - children.index(ancestors2[i])
-        end
-        return -1 if ancestors2.size > i + 1
-        0
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/nodelist.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/nodelist.rb
deleted file mode 100644
index 367c597..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/nodelist.rb
+++ /dev/null
@@ -1,231 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-module XML
-  module DOM
-=begin
-== Class XML::DOM::NodeList
-
-
-=end
-    class NodeList
-
-=begin
-=== Class Methods
-
-    --- NodeList.new(nodes = nil)
-
-creates a new NodeList.
-=end
-      def initialize(nodes = nil)
-        if nodes.nil?
-          @nodes = []
-        elsif nodes.is_a?(Array)
-          @nodes = nodes
-        else
-          raise "parameter error"
-        end
-      end
-
-=begin
-=== Methods
-
-    --- NodeList#item(index)
-
-[DOM]
-return the indexth item in the NodeList.
-=end
-      ## [DOM]
-      def item(index)
-        @nodes[index]
-      end
-
-=begin
-    --- NodeList#size()
-
-return size of NodeList.
-=end
-      def size
-        @nodes.length
-      end
-      alias length size
-
-=begin
-    --- NodeList#[](index)
-
-return indexth node of the NodeList.
-=end
-      def [](index)
-        @nodes[index]
-      end
-
-=begin
-    --- NodeList#[]=(*p)
-
-set node of indexth node of the NodeList.
-=end
-      def []=(*p)
-        if p.length == 2
-          @nodes[p[0]] = p[1]
-        elsif p.length == 3
-          @nodes[p[0], p[1]] = p[2]
-        end
-      end
-
-=begin
-    --- NodeList#each
-
-iterates over each node of the NodeList.
-=end
-      def each
-        @nodes.each do |value|
-          yield(value)
-        end
-      end
-
-=begin
-    --- NodeList#reversible_each(reverse = false)
-
-iterates over each node of the reversed NodeList.
-=end
-      ## [Masaki Fukushima]
-      def reversible_each(reverse = false)
-        if !reverse
-          @nodes.each do |value|
-            yield(value)
-          end
-        else
-          @nodes.reverse_each do |value|
-            yield(value)
-          end
-        end
-      end
-
-=begin
-    --- NodeList#push(*nodes)
-
-adds nodes into the NodeList.
-=end
-      def push(*nodes)
-        nodes.each do |node|
-          if node.is_a?(Array)
-            self.push(*node)
-          elsif node.is_a?(NodeList)
-            @nodes.concat(node.to_a)
-          elsif node.is_a?(Node)
-            @nodes << node
-          else
-            raise "parameter error"
-          end
-        end
-        self
-      end
-
-=begin
-    --- NodeList#concat(*nodes)
-
-alias of NodeList#push.
-=end
-      alias concat push
-
-=begin
-    --- NodeList#pop
-
-pops and returns the last node of the NodeList.
-=end
-      def pop
-        @nodes.pop
-      end
-
-=begin
-    --- NodeList#shift
-
-removes and returns the first node of the NodeList.
-=end
-      def shift
-        @nodes.shift
-      end
-
-=begin
-    --- NodeList#to_s
-
-returns the string representation of the NodeList.
-=end
-      def to_s
-        @nodes.to_s
-      end
-
-=begin
-    --- NodeList#reverse
-
-returns the reversed NodeList.
-=end
-      def reverse
-        @nodes.reverse
-      end
-
-=begin
-    --- NodeList#to_a
-
-converts the NodeList into an array.
-=end
-      def to_a
-        @nodes
-      end
-
-=begin
-    --- NodeList#+(nodes)
-
-return the newly created concatenated NodeList.
-=end
-      def +(nodes)
-        if nodes.nil?
-          NodeList.new(@nodes)
-        elsif nodes.is_a?(Array)
-          NodeList.new(@nodes + nodes)
-        elsif nodes.is_a?(NodeList)
-          NodeList.new(@nodes + nodes.to_a)
-        elsif nodes.is_a?(Node)
-          NodeList.new(@nodes + [nodes])
-        else
-          raise "parameter error"
-        end
-      end
-
-=begin
-    --- NodeList#<<(nodes)
-
-appends nodes to the NodeList.
-=end
-      ## modified by Masaki Fukushima
-      def <<(nodes)
-        if nodes.nil?
-          ## no change
-        elsif nodes.is_a?(Array)
-          @nodes.concat(nodes)
-        elsif nodes.is_a?(NodeList)
-          @nodes.concat(nodes.to_a)
-        elsif nodes.is_a?(Node)
-          @nodes << nodes
-        else
-          raise "parameter error"
-        end
-        self
-      end
-
-      ## get nodeValues by names
-      ##   names ::= name ('|' name)*
-      def _getValues(names)
-        ret = []
-        names.split('|').each do |name|
-          if !@nodes[name].nil?
-            ret.push(@nodes[name].nodeValue)
-          end
-        end
-        ret
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/notation.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/notation.rb
deleted file mode 100644
index a0f066d..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/notation.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Notation
-
-=== superclass
-Node
-=end
-    class Notation<Node
-=begin
-=== Class Methods
-
-    --- Notation.new(name, pubid, sysid)
-
-creates a new Notation.
-=end
-      def initialize(name, pubid, sysid)
-        super()
-        @name = name.freeze
-        @pubid = pubid.freeze
-        @sysid = sysid.freeze
-      end
-
-=begin
-=== Methods
-
-    --- Notation#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        NOTATION_NODE
-      end
-
-=begin
-    --- Notation#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        @name
-      end
-
-=begin
-    --- Notation#publicId
-
-returns the publicId of the Notation.
-=end
-      def publicId
-        @pubid
-      end
-
-=begin
-    --- Notation#systemId
-
-returns the systemId of the Notation.
-=end
-      def systemId
-        @sysid
-      end
-
-=begin
-    --- Notation#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the Notation.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @name, @pubid, @sysid)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/processinginstruction.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/processinginstruction.rb
deleted file mode 100644
index b78df13..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/processinginstruction.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/node'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::ProcessingInstruction
-
-=== superclass
-Node
-
-=end
-    class ProcessingInstruction<Node
-
-=begin
-=== Class Methods
-
-    --- ProcessingInstruction.new(target = nil, data = nil)
-
-creates a new ProcessingInstruction.
-=end
-      ## new(target, data)
-      ##     target: String
-      ##     data: String
-      def initialize(target = nil, data = nil)
-        super()
-        raise "parameter error" if !data
-        @target = target.freeze
-        @data = data.freeze
-        @value = target.dup
-        @value << " #{data}" if data != ""
-        @value.freeze
-      end
-
-=begin
-=== Methods
-
-    --- ProcessingInstruction#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        PROCESSING_INSTRUCTION_NODE
-      end
-
-=begin
-    --- ProcessingInstruction#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#proccessing-instruction"
-      end
-
-=begin
-    --- ProcessingInstruction#target
-
-[DOM]
-returns the target of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def target
-        @target
-      end
-
-      def target=(p)
-        @target = p.freeze
-        @value = @target.dup
-        @value << " #{@data}" if @data != ""
-        @value.freeze
-      end
-
-=begin
-    --- ProcessingInstruction#data
-
-[DOM]
-return the content of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def data
-        @data
-      end
-
-=begin
-    --- ProcessingInstruction#data=(p)
-
-[DOM]
-sets p to the content of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def data=(p)
-        @data = p.freeze
-        @value = @target.dup
-        @value << " #{@data}" if @data != ""
-        @value.freeze
-      end
-
-=begin
-    --- ProcessingInstruction#nodeValue
-
-[DOM]
-return nodevalue.
-
-=end
-      ## [DOM]
-      def nodeValue
-        @value
-      end
-
-      ## inhibit changing value without target= or data=
-      undef nodeValue=
-
-=begin
-    --- ProcessingInstruction#to_s
-
-returns the string representation of the ProcessingInstruction.
-=end
-      def to_s
-        ret = "<?#{@value}?>"
-        ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
-        ret
-      end
-
-=begin
-    --- ProcessingInstruction#dump(depth = 0)
-
-dumps the ProcessingInstruction.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "<?#{@value.inspect}?>\n"
-      end
-
-=begin
-    --- ProcessingInstruction#cloneNode(deep = true)
-
-[DOM]
-returns the copy of the ProcessingInstruction.
-=end
-      ## [DOM]
-      def cloneNode(deep = true)
-        super(deep, @target, @data)
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/text.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/text.rb
deleted file mode 100644
index 2c80355..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/text.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-## -*- Ruby -*-
-## XML::DOM
-## 1998-2001 by yoshidam
-##
-
-require 'xml/dom2/characterdata'
-require 'xml/dom2/domexception'
-
-module XML
-  module DOM
-
-=begin
-== Class XML::DOM::Text
-
-=== superclass
-Node
-
-=end
-    class Text<CharacterData
-
-=begin
-=== Class Methods
-
-    --- Text.new(text)
-
-creates a new Text.
-=end
-      ## new(text)
-      ##     text: String
-      def initialize(text = nil)
-        super(text)
-      end
-
-=begin
-=== Methods
-
-    --- Text#nodeType
-
-[DOM]
-returns the nodeType.
-=end
-      ## [DOM]
-      def nodeType
-        TEXT_NODE
-      end
-
-=begin
-    --- Text#nodeName
-
-[DOM]
-returns the nodeName.
-=end
-      ## [DOM]
-      def nodeName
-        "#text"
-      end
-
-=begin
-    --- Text#to_s
-
-return the string representation of the Text.
-=end
-      def to_s
-        ret = ""
-        @value.scan(/./um) do |c|
-          code = c.unpack("U")[0]
-          if code == 13
-            ret << sprintf("&#x%X;", code)
-          elsif c == "&"
-            ret << "&"
-          elsif c == "<"
-            ret << "<"
-          elsif c == ">"
-            ret << ">"
-          else
-            ret << c
-          end
-        end
-        ret
-##        XML.charRef(@value)
-      end
-
-=begin
-    --- Text#dump(depth = 0)
-
-dumps the Text.
-=end
-      def dump(depth = 0)
-        print ' ' * depth * 2
-        print "#{@value.inspect}\n"
-      end
-
-=begin
-    --- Text#splitText(offset)
-
-[DOM]
-breaks this Text node into two Text nodes at the specified offset.
-=end
-      ## [DOM]
-      def splitText(offset)
-        if offset > @value.length || offset < 0
-          raise DOMException.new(DOMException::INDEX_SIZE_ERR)
-        end
-        newText = @value[offset, @value.length]
-        newNode = Text.new(newText)
-        if !self.parentNode.nil?
-          self.parentNode.insertAfter(newNode, self)
-        end
-        @value[offset, @value.length] = ""
-        newNode
-      end
-
-=begin
-    --- Text#trim(preserve = false)
-
-trim extra whitespaces.
-=end
-      def trim(preserve = false)
-        if !preserve
-          @value.sub!(/\A\s*([\s\S]*?)\s*\Z/, "\\1")
-          return @value
-        end
-        nil
-      end
-
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/xpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/xpath.rb
deleted file mode 100644
index 6cad21a..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/dom2/xpath.rb
+++ /dev/null
@@ -1,398 +0,0 @@
-#
-# xpath-dom.rb
-#
-#   Copyright (C) Ueno Katsuhiro 2000
-#   DOM2 support by yoshidam
-#
-# $Id: xpath.rb,v 1.2 2003/03/12 06:38:28 yoshidam Exp $
-#
-
-require 'xml/dom2/core'
-require 'xml/xpath'
-
-module XMLScan
-  XPath = ::XPath unless
-    defined?(::XMLScan::XPath)
-
-module XPath
-
-  module DOM
-
-    class AbstractNodeAdapter < NullNodeAdapter
-
-      def wrap(node, visitor)
-        @node = node
-        self
-      end
-
-      attr_reader :node
-
-      def root
-        @node.ownerDocument
-      end
-
-      def parent
-        @node.parentNode
-      end
-
-      def children
-        @node.childNodes.to_a
-      end
-
-      def each_following_siblings
-        node = @node
-        yield node while node = node.nextSibling
-      end
-
-      def each_preceding_siblings
-        node = @node
-        yield node while node = node.previousSibling
-      end
-
-      def index
-        @node.parentNode.childNodes.to_a.index(@node)
-      end
-
-      def lang
-        node = @node
-        lang = nil
-        until a = node.attributes and lang = a.getNamedItem('xml:lang')
-          node = node.parentNode
-        end
-        lang and lang.nodeValue
-      end
-
-    end
-
-
-    class TextNodeAdapter < AbstractNodeAdapter
-
-      def node_type
-        :text
-      end
-
-      def string_value
-        @node.nodeValue
-      end
-
-    end
-
-
-    class CommentNodeAdapter < TextNodeAdapter
-
-      def node_type
-        :comment
-      end
-
-    end
-
-
-    class PINodeAdapter < AbstractNodeAdapter
-
-      def node_type
-        :processing_instruction
-      end
-
-      def name_localpart
-        @node.nodeName
-      end
-
-      def string_value
-        @node.nodeValue
-      end
-
-    end
-
-
-    class ParentNodeAdapter < AbstractNodeAdapter
-
-      def string_value
-        dst = ''
-        stack = @node.childNodes.to_a.reverse
-        while node = stack.pop
-          s = node.nodeValue
-          dst << s if s
-          stack.concat node.childNodes.to_a.reverse
-        end
-        dst
-      end
-
-    end
-
-
-    class RootNodeAdapter < ParentNodeAdapter
-
-      def node_type
-        :root
-      end
-
-      alias root node
-
-      def index
-        0
-      end
-
-    end
-
-
-    class ElementNodeAdapter < ParentNodeAdapter
-
-      def wrap(node, visitor)
-        @node = node
-        @visitor = visitor
-        self
-      end
-
-      def node_type
-        :element
-      end
-
-      def name_localpart
-        @node.nodeName
-      end
-
-      def namespace_uri
-        @node.namespaceURI
-      end
-
-      def qualified_name
-        @node.nodeName
-      end
-
-      def attributes
-        map = @node.attributes
-        attrs = @visitor.get_attributes(@node)
-        unless attrs then
-          attrs = []
-          map.length.times { |i| attrs.push map.item(i) }
-          @visitor.regist_attributes @node, attrs
-        end
-        attrs
-      end
-
-    end
-
-
-    class AttrNodeAdapter < AbstractNodeAdapter
-
-      def wrap(node, visitor)
-        @node = node
-        @visitor = visitor
-        self
-      end
-
-      def node_type
-        :attribute
-      end
-
-      def name_localpart
-        @node.nodeName
-      end
-
-      def namespace_uri
-        @node.namespaceURI
-      end
-
-      def qualified_name
-        @node.nodeName
-      end
-
-      def parent
-        @visitor.get_attr_parent @node
-      end
-
-      def index
-        - at visitor.get_attributes(parent).index(@node)
-      end
-
-      def string_value
-        @node.nodeValue
-      end
-
-    end
-
-
-
-    class NodeVisitor
-
-      def initialize
-        @adapters = Array.new(12, NullNodeAdapter.new)
-        @adapters[XML::DOM::Node::ELEMENT_NODE] = ElementNodeAdapter.new
-        @adapters[XML::DOM::Node::ATTRIBUTE_NODE] = AttrNodeAdapter.new
-        @adapters[XML::DOM::Node::TEXT_NODE] =
-          @adapters[XML::DOM::Node::CDATA_SECTION_NODE] = TextNodeAdapter.new
-        @adapters[XML::DOM::Node::PROCESSING_INSTRUCTION_NODE] =
-          PINodeAdapter.new
-        @adapters[XML::DOM::Node::COMMENT_NODE] = CommentNodeAdapter.new
-        @adapters[XML::DOM::Node::DOCUMENT_NODE] = RootNodeAdapter.new
-        @attr = {}
-      end
-
-      def visit(node)
-        @adapters[node.nodeType].wrap(node, self)
-      end
-
-      def regist_attributes(node, attrs)
-        @attr[node] = attrs
-        attrs.each { |i| @attr[i] = node }
-      end
-
-      def get_attributes(node)
-        @attr[node]
-      end
-
-      def get_attr_parent(node)
-        @attr[node]
-      end
-
-    end
-
-
-
-    class Context < XMLScan::XPath::Context
-
-      def initialize(node, namespace = nil, variable = nil)
-        super node, namespace, variable, NodeVisitor.new
-      end
-
-    end
-
-
-  end
-
-end ## module XPath
-end ## module XMLScan
-
-
-
-module XML
-
-  module DOM
-
-    class Node
-
-      def __collectDescendatNS(ns = {})
-        childNodes.each do |node|
-          next if node.nodeType != ELEMENT_NODE
-          prefix = node.prefix
-          uri = node.namespaceURI
-          ns[prefix] = uri unless ns.has_key?(prefix)
-          node.__collectDescendatNS(ns)
-        end
-      end
-
-      def __collectAncestorNS(ns = {})
-        node = self
-        while node
-          prefix = node.prefix
-          uri = node.namespaceURI
-          ns[prefix] = uri unless ns.has_key?(prefix)
-          node = node.parentNode
-        end
-      end
-
-      def getNodesByXPath(xpath, ns = {})
-        xpath = XMLScan::XPath.compile(xpath) unless xpath.is_a? XMLScan::XPath
-        if ns.length == 0
-          ## collect namespaces
-          __collectAncestorNS(ns)
-          __collectDescendatNS(ns)
-        end
-        ret = xpath.call(XPath::DOM::Context.new(self, ns))
-        raise "return value is not NodeSet" unless ret.is_a? Array
-        ret
-      end
-
-      def _getMyLocationInXPath(parent)
-        n = parent.childNodes.index(self)
-        "node()[#{n + 1}]"
-      end
-
-      def makeXPath
-        dst = []
-        node = self
-        while parent = node.parentNode
-          dst.push node._getMyLocationInXPath(parent)
-          node = parent
-        end
-        dst.reverse!
-        '/' + dst.join('/')
-      end
-
-    end
-
-
-    class Element
-
-      def _getMyLocationInXPath(parent)
-        name = nodeName
-        n = parent.childNodes.to_a.select { |i|
-          i.nodeType == ELEMENT_NODE and i.nodeName == name
-        }.index(self)
-        "#{name}[#{n + 1}]"
-      end
-
-    end
-
-
-    class Text
-
-      def _getMyLocationInXPath(parent)
-        n = parent.childNodes.to_a.select { |i|
-          i.nodeType == TEXT_NODE or i.nodeType == CDATA_SECTION_NODE
-        }.index(self)
-        "text()[#{n + 1}]"
-      end
-
-    end
-
-
-    class CDATASection
-
-      def _getMyLocationInXPath(parent)
-        n = parent.childNodes.to_a.select { |i|
-          i.nodeType == TEXT_NODE or i.nodeType == CDATA_SECTION_NODE
-        }.index(self)
-        "text()[#{n + 1}]"
-      end
-
-    end
-
-
-    class Comment
-
-      def _getMyLocationInXPath(parent)
-        n = parent.childNodes.to_a.select { |i|
-          i.nodeType == COMMENT_NODE
-        }.index(self)
-        "comment()[#{n + 1}]"
-      end
-
-    end
-
-
-    class ProcessingInstruction
-
-      def _getMyLocationInXPath(parent)
-        n = parent.childNodes.to_a.select { |i|
-          i.nodeType == PROCESSING_INSTRUCTION_NODE
-        }.index(self)
-        "processing-instruction()[#{n + 1}]"
-      end
-
-    end
-
-
-    class Attr
-
-      def makeXPath
-        '@' + nodeName
-      end
-
-    end
-
-
-  end
-
-end
-
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/encoding-ja.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/encoding-ja.rb
deleted file mode 100644
index d5511e6..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/encoding-ja.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-## -*- Ruby -*-
-## Sample XMLEncoding class for Japanese (EUC-JP, Shift_JIS)
-## 1998 by yoshidam
-##
-## Usage:
-##    require 'xml/encoding-ja'
-##    include XML::Encoding_ja
-
-module XML
-module Encoding_ja
-  require 'xml/parser'
-  require 'uconv'
-
-  class EUCHandler<XML::Encoding
-    def map(i)
-      return i if i < 128
-      return -1 if i < 160 or i == 255
-      return -2 
-    end
-    def convert(s)
-      Uconv.euctou2(s)
-    end
-  end
-
-  class SJISHandler<XML::Encoding
-    def map(i)
-      return i if i < 128
-      return -2 
-    end
-    def convert(s)
-      Uconv.sjistou2(s)
-    end
-  end
-
-  def unknownEncoding(name)
-    return EUCHandler.new if name =~ /^euc-jp$/i
-    return SJISHandler.new if name =~ /^shift_jis$/i
-    nil
-  end
-
-end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parser.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parser.rb
deleted file mode 100644
index 57e846e..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parser.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-## -*- Ruby -*-
-## XML::Parser (alias of XMLParser)
-## 1998 by yoshidam
-
-require 'xmlparser.so'
-
-#module XML
-#  Parser = XMLParser
-#  class Parser
-#    Error = XMLParserError
-#  end
-#  Encoding = XMLEncoding
-#end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parserns.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parserns.rb
deleted file mode 100644
index 3457157..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/parserns.rb
+++ /dev/null
@@ -1,236 +0,0 @@
-## -*- Ruby -*-
-## XML::ParserNS
-## namespaces-aware version of XML::Parser (experimental)
-## 2002 by yoshidam
-
-require 'xml/parser'
-
-module XML
-  class InternalParserNS < Parser
-    XMLNS = 'http://www.w3.org/XML/1998/namespace'
-    attr_reader :ns
-
-    def self.new(parserNS, *args)
-      nssep = nil
-      if args.length == 2 && !args[0].is_a?(Parser)
-        nssep = args[1]
-        args = args.shift
-      end
-      obj = super(*args)
-      obj.__init__(parserNS, nssep)
-      obj
-    end
-
-    def __init__(parserNS, nssep)
-      @ns = []
-      @parserNS = parserNS
-      @nssep = nssep
-    end
-
-
-    def parse(*args)
-      if block_given?
-        super do |nodetype, name, args, parser|
-          case nodetype
-          when START_ELEM
-            ns, args = getNSAttrs(args)
-            @ns.push(ns)
-            if @nssep
-              if @parserNS.respond_to?(:startNamespaceDecl)
-                ns.each do |prefix, uri|
-                  yield(START_NAMESPACE_DECL, prefix, uri, parser)
-                end
-              end
-
-              prefix, uri, localpart = resolveElementQName(name)
-              name = uri + @nssep + name if uri
-              attrs = {}
-              args.each do |k, v|
-                prefix, uri, localpart = resolveAttributeQName(k)
-                k = uri + @nssep + k if uri
-                attrs[k] = v
-              end
-              args = attrs
-            end
-            yield(nodetype, name, args, parser)
-          when END_ELEM
-            if @nssep
-              prefix, uri, localpart = resolveElementQName(name)
-              name = uri + @nssep + name if uri
-            end
-            yield(nodetype, name, args, parser)
-            ns = @ns.pop
-            if @nssep and @parserNS.respond_to?(:endNamespaceDecl)
-              ns.to_a.reverse.each do |prefix, uri|
-                yield(END_NAMESPACE_DECL, prefix, nil, parser)
-              end
-            end
-          else
-            yield(nodetype, name, args, parser)
-          end
-        end
-      else
-        super
-      end
-    end
-
-    def getNamespaces
-      @ns[-1]
-    end
-
-    def getNSURI(prefix)
-      return XMLNS if prefix == 'xml'
-      @ns.reverse_each do |n|
-        return n[prefix] if n.include?(prefix)
-      end
-      nil
-    end
-
-    def resolveElementQName(qname)
-      qname =~ /^((\S+):)?(\S+)$/u
-      prefix, localpart = $2, $3
-      uri = getNSURI(prefix)
-      [prefix, uri, localpart]
-    end
-
-    def resolveAttributeQName(qname)
-      qname =~ /^((\S+):)?(\S+)$/u
-      prefix, localpart = $2, $3
-      uri = nil
-      uri = getNSURI(prefix) if !prefix.nil?
-      [prefix, uri, localpart]
-    end
-
-    def getSpecifiedAttributes
-      ret = super
-#      attrs = {}
-#      ret.each do |k, v|
-#        next if k =~ /^xmlns/u
-#        if @nssep
-#          prefix, uri, localpart = resolveAttributeQName(k)
-#          k = uri.to_s + @nssep + k
-#        end
-#        attrs[k] = v
-#      end
-      attrs = []
-      ret.each do |k|
-        next if k =~ /^xmlns:|^xmlns$/u
-        if @nssep
-          prefix, uri, localpart = resolveAttributeQName(k)
-          k = uri.to_s + @nssep + k
-        end
-        attrs.push(k)
-      end
-      attrs
-    end
-
-
-    private
-
-    def getNSAttrs(args, eliminateNSDecl = false)
-      ns = {}
-      newargs = {}
-      args.each do |n, v|
-        prefix, localpart = n.split(':')
-        if prefix == 'xmlns'
-          ns[localpart] = v
-          next if eliminateNSDecl
-        end
-        newargs[n] = v
-      end
-      [ns, newargs]
-    end
-
-
-    def startElement(name, args)
-      ns, args = getNSAttrs(args)
-      @ns.push(ns)
-      if @nssep and @parserNS.respond_to?(:startNamespaceDecl)
-        ns.each do |prefix, uri|
-          @parserNS.startNamespaceDecl(prefix, uri)
-        end
-      end
-      if @parserNS.respond_to?(:startElement)
-        if @nssep
-          prefix, uri, localpart = resolveElementQName(name)
-          name = uri + @nssep + name if uri
-          attrs = {}
-          args.each do |k, v|
-            prefix, uri, localpart = resolveAttributeQName(k)
-            k = uri + @nssep + k if uri
-            attrs[k] = v
-          end
-          args = attrs
-        end
-        @parserNS.startElement(name, args)
-      end
-    end
-
-    def endElement(name)
-      if @parserNS.respond_to?(:endElement)
-        if @nssep
-          prefix, uri, localpart = resolveElementQName(name)
-          name = uri + @nssep + name if uri
-        end
-        @parserNS.endElement(name)
-      end
-      ns = @ns.pop
-      if @nssep and @parserNS.respond_to?(:endNamespaceDecl)
-        ns.to_a.reverse.each do |prefix, uri|
-          @parserNS.endNamespaceDecl(prefix)
-        end
-      end
-    end
-  end
-
-
-  class ParserNS
-    EVENT_HANDLERS = [
-      :character,
-      :processingInstruction,
-      :unparsedEntityDecl,
-      :notationDecl,
-      :externalEntityRef,
-      :comment,
-      :startCdata,
-      :endCdata,
-      :startNamespaceDecl,
-      :endNamespaceDecl,
-      :startDoctypeDecl,
-      :endDoctypeDecl,
-      :default,
-      :defaultExpand,
-      :unknownEncoding,
-      :notStandalone,
-      :elementDecl,
-      :attlistDecl,
-      :xmlDecl,
-      :entityDecl,
-      :externalParsedEntityDecl,
-      :internalParsedEntityDecl]
-
-    def initialize(*args)
-      @parser = InternalParserNS.new(self, *args)
-    end
-
-    def parse(*args, &block)
-      EVENT_HANDLERS.each do |m|
-        if self.respond_to?(m)
-          eval "def @parser.#{m}(*args); @parserNS.#{m}(*args); end"
-        end
-      end
-      @parser.parse(*args, &block)
-    end
-
-    def setReturnNSTriplet(do_nst); end
-
-    def method_missing(name, *args)
-      if @parser.respond_to?(name)
-        @parser.send(name, *args)
-      else
-        raise NameError.new("undefined method `#{name.id2name}' " +
-                            "for #{self.inspect}")
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/sax.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/sax.rb
deleted file mode 100644
index 514e45b..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/sax.rb
+++ /dev/null
@@ -1,353 +0,0 @@
-## -*- Ruby -*-
-## SAX (Simple API for XML) 1.0 for Ruby (experimental)
-## 1999 by yoshidam
-##
-## SAX information: http://www.megginson.com/SAX/
-##
-
-module XML
-  module SAX
-    module AttributeList
-      def getLength
-        raise "not implemented"
-      end
-
-      def getName(pos)
-        raise "not implemented"
-      end
-
-      def getType(pos_or_name)
-        raise "not implemented"
-      end
-
-      def getValue(pos_or_name)
-        raise "not implemented"
-      end
-    end
-
-    module DTDHandler
-      def notationDecl(name, pubid, sysid)
-        raise "not implemented"
-      end
-
-      def unparsedEntityDecl(name, pubid, sysid, notation)
-        raise "not implemented"
-      end
-    end
-
-    module DocumentHandler
-      def setDocumentLocator(locator)
-        raise "not implemented"
-      end
-
-      def startDocument
-        raise "not implemented"
-      end
-
-      def endDocument()
-        raise "not implemented"
-      end
-
-      def startElement(name, atts)
-        raise "not implemented"
-      end
-
-      def endElement(name)
-        raise "not implemented"
-      end
-
-      def characters(ch, start, length)
-        raise "not implemented"
-      end
-
-      def ignorableWhitespace(ch, start, length)
-        raise "not implemented"
-      end
-
-      def processingInstruction(target, data)
-        raise "not implemented"
-      end
-    end
-
-    module EntityResolver
-      def resolveEntity(pubid, sysid)
-        raise "not implemented"
-      end
-    end
-
-    module ErrorHandler
-      def warning(e)
-        raise "not implemented"
-      end
-
-      def error(e)
-        raise "not implemented"
-      end
-
-      def fatalError(e)
-        raise "not implemented"
-      end
-    end
-
-    module Locator
-      def getPublicId
-        raise "not implemented"
-      end
-
-      def getSystemId
-        raise "not implemented"
-      end
-
-      def getLineNumber
-        raise "not implemented"
-      end
-
-      def getColumnNumber
-        raise "not implemented"
-      end
-    end
-
-    module Parser
-      def setLocale(locale)
-        raise "not implemented"
-      end
-
-      def setEntityResolver(resolver)
-        raise "not implemented"
-      end
-
-      def setDTDHandler(handler)
-        raise "not implemented"
-      end
-
-      def setDocumentHandler(handler)
-        raise "not implemented"
-      end
-
-      def setErrorHandler
-        raise "not implemented"
-      end
-
-      def parse(source_or_sysid)
-        raise "not implemented"
-      end
-    end
-
-    class HandlerBase
-      include EntityResolver
-      include DTDHandler
-      include DocumentHandler
-      include ErrorHandler
-
-      def resolveEntity(pubid, sysid)
-        nil
-      end
-
-      def notationDecl(name, pubid, sysid)
-      end
-
-      def unparsedEntityDecl(name, pubid, sysid, natation)
-      end
-
-      def setDocumentLocator(locator)
-      end
-
-      def startDocument
-      end
-
-      def endDocument
-      end
-
-      def startElement(name, atts)
-      end
-
-      def endElement(name)
-      end
-
-      def characters(ch, start, length)
-      end
-
-      def ignorableWhitespace(ch, sart, length)
-      end
-
-      def processingInstruction(target, data)
-      end
-
-      def warning(e)
-      end
-
-      def error(e)
-      end
-
-      def fatalError(e)
-        raise e
-      end
-    end
-
-    class InputSource
-      def initialize(sysid)
-        @publicId = nil
-        @systemId = nil
-        @stream = nil
-        @encoding = nil
-
-        if sysid.kind_of?(String)
-          setSystemId(sysid)
-        elsif !sysid.nil?
-          setByteStream(sysid)
-        end
-      end
-
-      def setPublicId(pubid)
-        @publicId = pubid
-      end
-
-      def getPublicId
-        @publicId
-      end
-
-      def setSystemId(sysid)
-        @systemId = sysid
-      end
-
-      def getSystemId
-        @systemId
-      end
-
-      def setByteStream(stream)
-        @stream = stream
-      end
-
-      def getByteStream
-        @stream
-      end
-
-      def setEncoding(encoding)
-        @encoding = encoding
-      end
-
-      def getEncoding
-        @encoding
-      end
-
-      def setCharacterStream(stream)
-        raise "not implemented"
-      end
-
-      def getCharacterStream
-        raise "not implemented"
-      end
-    end
-
-    class SAXException < Exception
-      ## initialize(String)
-      ## initialize(Exception)
-      ## initialize(String, Exception)
-      def initialize(message, e = nil)
-        @message = nil
-        @exception = nil
-        if message.kind_of?(String) && e.nil?
-          @message = message
-        elsif message.kind_of?(Exception) && e.nil?
-          @exception = e
-        elsif message.kind_of?(String) && e.kind_of?(Exception)
-          @message = message
-          @exception = e
-        else
-          raise TypeError.new("parameter error")
-        end
-      end
-
-      def getMessage
-        if @message.nil? && !@exception.nil?
-          return @exception.to_s
-        end
-        @message
-      end
-
-      def getException
-        @exception
-      end
-
-      def toString
-        getMessage
-      end
-      alias to_s toString
-    end
-
-    class SAXParseException < SAXException
-      ## initialize(String, Locator)
-      ## initialize(String, Locator, Exception)
-      ## initialize(String, String, String, Fixnum, Fixnum)
-      ## initialize(String, String, String, Fixnum, Fixnum, Exception)
-      def initialize(message, pubid = nil, sysid = nil,
-                     line = nil, column = nil, e = nil)
-        @publicId = nil
-        @systemiId = nil
-        @lineNumber = nil
-        @columnNumber = nil
-        if message.kind_of?(String) && pubid.kind_of?(Locator) &&
-            sysid.nil? && line.nil? && column.nil? && e.nil?
-          super(message)
-          @publicId = pubid.getPublicId
-          @systemId = pubid.getSystemId
-          @lineNumber = pubid.getLineNumber
-          @columnNumber = pubid.getColumnNumber
-        elsif message.kind_of?(String) && pubid.kind_of?(Locator) &&
-            sysid.kind_of?(Exception) && line.nil? && column.nil? && e.nil?
-          super(message, sysid)
-          @publicId = pubid.getPublicId
-          @systemId = pubid.getSystemId
-          @lineNumber = pubid.getLineNumber
-          @columnNumber = pubid.getColumnNumber
-        elsif message.kind_of?(String) && pubid.kind_of?(String) &&
-            sysid.kind_of?(String) && line.kind_of?(Fixnum) &&
-            column.kind_of?(Fixnum) && e.nil?
-          super(message)
-          @publicId = pubid
-          @systemId = sysid
-          @lineNumber = line
-          @columnNumber = column
-        elsif message.kind_of?(String) && pubid.kind_of?(String) &&
-            sysid.kind_of?(String) && line.kind_of?(Fixnum) &&
-            column.kind_of?(Fixnum) && e.kind_of?(Exception)
-          super(message, e)
-          @publicId = pubid
-          @systemId = sysid
-          @lineNumber = line
-          @columnNumber = column
-        else
-          raise TypeError.new("parameter error")
-        end
-      end
-
-      def getPublicId
-        @publicId
-      end
-
-      def getSystemId
-        @systemId
-      end
-
-      def getLineNumber
-        @lineNumber
-      end
-
-      def getColumnNumber
-        @columnNumber
-      end
-    end
-
-    module Helpers
-      module ParserFactory
-        def ParserFactory::makeParser(klass)
-          if klass.kind_of?(Class)
-            klass.new
-          elsif klass.kind_of?(String)
-            eval(klass).new
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/saxdriver.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/saxdriver.rb
deleted file mode 100644
index 75cb77c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/saxdriver.rb
+++ /dev/null
@@ -1,370 +0,0 @@
-## -*- Ruby -*-
-## SAX Driver for XML::Parser (experimental)
-## 1999 by yoshidam
-##
-## Limitation:
-##   * AttributeList#getType always returns 'CDATA'.
-##   * DocumentHandler#ignorableWhitespace is never called.
-##   * ErrorHandler#warning and ErrorHandler#error are never called.
-##   * Locator#getLineNumber and Locator#getColumnNumber do not
-##     return the proper value in DocumentHandler#characters method.
-##   * Parser#setLocale is not implemented.
-##   * Parser cannot parse non-local file.
-
-require 'xml/parser'
-require 'xml/sax'
-
-module XML
-  class Parser
-    class SAXDriver
-      include XML::SAX::Parser
-      include XML::SAX::AttributeList
-      include XML::SAX::Locator
-
-      ## very simple URL parser
-      class URL
-        attr :scheme
-        attr :login
-        attr :urlpath
-
-        def initialize(url, url2 = nil)
-          @scheme = ''
-          @login = ''
-          @urlpath = ''
-          if url.kind_of?(String) && url2.nil?
-            if url =~ /^([a-z0-9\+\-\.]+):\/\/([^\/]+)(\/.*)$/
-              @scheme, @login, @urlpath = $1, $2, $3
-            else
-              url = File::expand_path(url)
-              @scheme, @login, @urlpath = "file", "localhost", url
-            end
-          elsif url.kind_of?(URL) && url2.kind_of?(String)
-            if url2 =~ /^([a-z0-9\+\-\.]+):\/\/([^\/]+)(\/.*)$/
-              @scheme, @login, @urlpath = $1, $2, $3
-            else
-              @scheme = url.scheme
-              @login = url.login
-              if url2 =~ /^\//
-                @urlpath = url2
-              else
-                path = url.urlpath
-                path =~ /^([^\#]+)\#?(.*)$/
-                path = $1
-                path =~ /^([^\?]+)\??(.*)$/
-                path = $1
-                path =~ /^(.+)\/(.*)/
-                path = $1
-                @urlpath = File.expand_path(path + '/' + url2)
-              end
-            end
-          end
-        end
-
-        def to_s
-          @scheme + "://" + @login + @urlpath
-        end
-      end
-
-      ## All parser events are delegated to SAXDriver
-      class SAXParser < XML::Parser
-        include XML::SAX::Locator
-
-        def SAXParser.new(saxdriver, *rest)
-          obj = super(*rest)
-          obj.setDriver(saxdriver)
-          obj
-        end
-
-        def initialize(*args)
-          super(*args)
-          @publicId = nil
-          @systemId = nil
-          if self.respond_to?(:setParamEntityParsing)
-            self.setParamEntityParsing(PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
-          end
-        end
-
-        def setDriver(saxdriver)
-          @saxdriver = saxdriver
-        end
-
-        def parse(inputSource)
-          @systemId = inputSource.getSystemId
-          @saxdriver.pushLocator(self)
-          setBase(@systemId)
-          super(inputSource.getByteStream.read)
-          @saxdriver.popLocator
-        end
-
-        def getPublicId
-          @publicId
-        end
-
-        def getSystemId
-          @systemId
-        end
-
-        def getLineNumber
-          self.line
-        end
-
-        def getColumnNumber
-          self.column
-        end
-
-        def startElement(name, attr)
-          @saxdriver.startElement(name, attr)
-        end
-
-        def endElement(name)
-          @saxdriver.endElement(name)
-        end
-
-        def character(data)
-          @saxdriver.character(data)
-        end
-
-        def processingInstruction(target, data)
-          @saxdriver.processingInstruction(target, data)
-        end
-
-        def notationDecl(name, base, sysid, pubid)
-          @saxdriver.notationDecl(name, base, sysid, pubid)
-        end
-
-        def unparsedEntityDecl(name, base, sysid, pubid, notation)
-          @saxdriver.unparsedEntityDecl(name, base, sysid, pubid, notation)
-        end
-
-        def comment(data)
-        end
-
-        def externalEntityRef(context, base, systemId, publicId)
-          inputSource = @saxdriver.xmlOpen(base, systemId, publicId)
-          encoding = inputSource.getEncoding
-          if encoding
-            parser = SAXParser.new(@saxdriver, self, context, encoding)
-          else
-            parser = SAXParser.new(@saxdriver, self, context)
-          end
-          parser.parse(inputSource)
-          parser.done
-        end
-      end
-
-      class DummyLocator
-        include XML::SAX::Locator
-
-        def initialize(systemId)
-          @systemId = systemId
-        end
-
-        def getPublicId; nil end
-        def getSystemId; @systemId end
-        def getLineNumber; 1 end
-        def getColumnNumber; 1 end
-      end
-
-      ## open stream if it is not opened
-      def openInputStream(stream)
-        if stream.getByteStream
-          stream
-        else stream.getSystemId
-          url = URL.new(stream.getSystemId)
-          if url.scheme == 'file' && url.login == 'localhost'
-            s = open(url.urlpath)
-            stream.setByteStream(s)
-            return stream
-          end
-        end
-        return nil
-      end
-      private :openInputStream
-
-      def xmlOpen(base, systemId, publicId)
-        if base.nil? || base == ""
-          file = URL.new(systemId)
-        else
-          file = URL.new(URL.new(base), systemId)
-        end
-        if !@entityResolver.nil?
-          stream = @entityResolver.resolveEntity(file.to_s, publicId)
-          return openInputStream(stream) if stream
-        end
-        if file.scheme == 'file' && file.login == 'localhost'
-          stream = open(file.urlpath)
-          is = XML::SAX::InputSource.new(stream)
-          is.setSystemId(file.to_s)
-          is.setPublicId(publicId)
-          return is
-        end
-      end
-
-      def initialize
-        handler = XML::SAX::HandlerBase.new
-        @attributes = nil
-        @documentHandler = handler
-        @dtdHandler = handler
-        @errorHandler = handler
-        @entityResolver = handler
-        @dataBuf = ''
-        @locators = []
-      end
-
-      ## implementation of Parser
-      def setEntityResolver(handler)
-        if !handler.kind_of?(XML::SAX::EntityResolver)
-          raise TypeError.new("parameter error")
-        end
-        @entityResolver = handler
-      end
-
-      ## implementation of Parser
-      def setDocumentHandler(handler)
-        if !handler.kind_of?(XML::SAX::DocumentHandler)
-          raise TypeError.new("parameter error")
-        end
-        @documentHandler = handler
-      end
-
-      ## implementation of Parser
-      def setDTDHandler(handler)
-        if !handler.kind_of?(XML::SAX::DTDHandler)
-          raise TypeError.new("parameter error")
-        end
-        @dtdHandler = handler
-      end
-
-      ## implementation of Parser
-      def setErrorHandler(handler)
-        if !handler.kind_of?(XML::SAX::ErrorHandler)
-          raise TypeError.new("parameter error")
-        end
-        @errorHandler = handler
-      end
-
-      ## implementation of Parser
-      def setLocale(locale)
-        raise SAXException.new("locale not supported")
-      end
-
-      def flushData
-        if @dataBuf.length > 0
-          @documentHandler.characters(@dataBuf, 0, @dataBuf.length)
-          @dataBuf = ''
-        end
-      end
-      private :flushData
-
-      def startElement(name, attrs)
-        flushData;
-        @attributes = attrs
-        @documentHandler.startElement(name, self)
-      end
-
-      def character(data)
-        @dataBuf << data
-      end
-
-      def endElement(name)
-        flushData;
-        @documentHandler.endElement(name)
-      end
-
-      def processingInstruction(target, data)
-        flushData;
-        @documentHandler.processingInstruction(target, data)
-      end
-
-      def notationDecl(name, base, sysid, pubid)
-        @dtdHandler.notationDecl(name, pubid, sysid)
-      end
-
-      def unparsedEntityDecl(name, base, sysid, pubid, notation)
-        @dtdHandler.unparsedEntityDecl(name, pubid, sysid, notation)
-      end
-
-      ## implementation of AttributeList
-      def getLength
-        @attributes.length
-      end
-
-      ## implementation of AttributeList
-      def getName(pos)
-        @attributes.keys[pos]
-      end
-
-      ## implementation of AttributeList
-      def getValue(pos)
-        if pos.kind_of?(String)
-          @attributes[pos]
-        else
-          @attributes.values[pos]
-        end
-      end
-
-      ## implementation of AttributeList
-      def getType(pos)
-        ## expat cannot get attribyte type
-        return "CDATA"
-      end
-
-      ## locator is DummyLoacator or SAXParser
-      def pushLocator(locator)
-        @locators.push(locator)
-      end
-
-      def popLocator
-        @locators.pop
-      end
-
-      ## implementation of Locator
-      def getPublicId
-        @locators[-1].getPublicId
-      end
-
-      ## implementation of Locator
-      def getSystemId
-        @locators[-1].getSystemId
-      end
-
-      ## implementation of Locator
-      def getLineNumber
-        @locators[-1].getLineNumber
-      end
-
-      ## implementation of Locator
-      def getColumnNumber
-        @locators[-1].getColumnNumber
-      end
-
-      ## implementation of Parser
-      def parse(sysid)
-        @documentHandler.setDocumentLocator(self)
-        if sysid.kind_of?(XML::SAX::InputSource)
-          inputSource = openInputStream(sysid.dup)
-        else
-          inputSource = openInputStream(XML::SAX::InputSource.new(sysid))
-        end
-        encoding = inputSource.getEncoding
-        if encoding
-          parser = SAXParser.new(self, encoding)
-        else
-          parser = SAXParser.new(self)
-        end
-
-        pushLocator(DummyLocator.new(inputSource.getSystemId))
-        begin
-          @documentHandler.startDocument
-          parser.parse(inputSource)
-          @documentHandler.endDocument
-        rescue XML::Parser::Error
-          @errorHandler.fatalError(XML::SAX::SAXParseException.new($!.to_s,
-                                                                   self))
-        rescue
-          @errorHandler.fatalError($!)
-        end
-      end
-    end
-  end
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/xpath.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/xpath.rb
deleted file mode 100644
index 3c01592..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xml/xpath.rb
+++ /dev/null
@@ -1,3284 +0,0 @@
-#
-# xpath.rb: generated by racc (runtime embedded)
-#
-
-###### racc/parser.rb
-
-unless $".index 'racc/parser.rb' then
-$".push 'racc/parser.rb'
-
-type.module_eval <<'..end /home/katsu/local/lib/site_ruby/racc/parser.rb modeval..id92db944ac5', '/home/katsu/local/lib/site_ruby/racc/parser.rb', 1
-#
-# parser.rb
-#
-#   Copyright (c) 1999,2000 Minero Aoki <aamine at dp.u-netsurf.ne.jp>
-#
-#   This program is free software.
-#   You can distribute/modify this program under the terms of
-#   the GNU Lesser General Public License version 2 or later.
-#
-#   As a special exception, when this code is copied by Racc
-#   into a Racc output file, you may use that output file
-#   without restriction.
-#
-
-module Racc
-  class ParseError < StandardError; end
-end
-unless defined? ParseError then
-  ParseError = Racc::ParseError
-end
-
-
-module Racc
-
-  class Parser
-
-    private
-
-
-    begin
-      if defined? Racc_Debug_Ruby_Parser then
-        raise LoadError, 'debug ruby routine'
-      end
-      require 'racc/cparse'
-      unless new.respond_to? :_racc_do_parse_c, true then
-        raise LoadError, 'old cparse.so'
-      end
-      Racc_Main_Parsing_Routine = :_racc_do_parse_c
-      Racc_YY_Parse_Method      = :_racc_yyparse_c
-    rescue LoadError
-      Racc_Main_Parsing_Routine = :_racc_do_parse_rb
-      Racc_YY_Parse_Method      = :_racc_yyparse_rb
-    end
-
-    Racc_ruby_parser_version = '1.3.3'
-    Racc_parser_version = Racc_ruby_parser_version
-
-    def self.racc_runtime_type
-      if Racc_Main_Parsing_Routine == :_racc_do_parse_c then
-        'c'
-      else
-        'ruby'
-      end
-    end
-
-
-    def _racc_setup
-      t = self.type
-
-      unless t::Racc_debug_parser then
-        @yydebug = false
-      end
-      @yydebug = false unless defined? @yydebug
-
-      if @yydebug then
-        @racc_debug_out = $stderr unless defined? @racc_debug_out
-        @racc_debug_out ||= $stderr
-      end
-
-      arg = t::Racc_arg
-      if arg.size < 14 then
-        arg[13] = true
-      end
-      arg
-    end
-
-    def _racc_init_sysvars
-      @racc_state = [ 0 ]
-      @racc_tstack = []
-      @racc_vstack = []
-
-      @racc_t = nil
-      @racc_val = nil
-
-      @racc_read_next = true
-
-      @racc_user_yyerror = false
-      @racc_error_status = 0
-    end
-
-
-    ###
-    ### do_parse
-    ###
-
-    def do_parse
-      __send__ Racc_Main_Parsing_Routine, _racc_setup(), false
-    end
-
-    def next_token
-      raise NotImplementError, "#{self.type}\#next_token must be defined"
-    end
-
-    def _racc_do_parse_rb( arg, in_debug )
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result    = arg
-
-      _racc_init_sysvars
-      act = i = nil
-      nerr = 0
-
-
-      catch( :racc_end_parse ) {
-      while true do
-
-        if i = action_pointer[ @racc_state[-1] ] then
-          if @racc_read_next then
-            if @racc_t != 0 then   # $
-              tok, @racc_val = next_token()
-              @racc_t = (token_table[tok] or 1)   # error token
-              racc_read_token( @racc_t, tok, @racc_val ) if @yydebug
-
-              @racc_read_next = false
-            end
-          end
-          i += @racc_t
-          if i >= 0 and act = action_table[i] and
-             action_check[i] == @racc_state[-1] then
-             ;
-          else
-            act = action_default[ @racc_state[-1] ]
-          end
-        else
-          act = action_default[ @racc_state[-1] ]
-        end
-
-        while act = _racc_evalact( act, arg ) do end
-
-      end
-      }
-    end
-
-
-    ###
-    ### yyparse
-    ###
-
-    def yyparse( recv, mid )
-      __send__ Racc_YY_Parse_Method, recv, mid, _racc_setup(), true
-    end
-
-    def _racc_yyparse_rb( recv, mid, arg, c_debug )
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   = arg
-
-      _racc_init_sysvars
-      tok = nil
-      act = nil
-      i = nil
-      nerr = 0
-
-
-      catch( :racc_end_parse ) {
-        until i = action_pointer[ @racc_state[-1] ] do
-          while act = _racc_evalact(
-                  action_default[ @racc_state[-1] ], arg ) do end
-        end
-
-        recv.__send__( mid ) do |tok, val|
-# $stderr.puts "rd: tok=#{tok}, val=#{val}"
-          @racc_val = val
-          @racc_t = (token_table[tok] or 1)   # error token
-          @racc_read_next = false
-
-          i += @racc_t
-          if i >= 0 and act = action_table[i] and
-             action_check[i] == @racc_state[-1] then
-# $stderr.puts "01: act=#{act}"
-          else
-            act = action_default[ @racc_state[-1] ]
-# $stderr.puts "02: act=#{act}"
-# $stderr.puts "curstate=#{@racc_state[-1]}"
-          end
-
-          while act = _racc_evalact( act, arg ) do end
-
-          while not (i = action_pointer[ @racc_state[-1] ]) or
-                not @racc_read_next or
-                @racc_t == 0 do   # $
-            if i and i += @racc_t and
-               i >= 0 and
-               act = action_table[i] and
-               action_check[i] == @racc_state[-1] then
-# $stderr.puts "03: act=#{act}"
-              ;
-            else
-# $stderr.puts "04: act=#{act}"
-              act = action_default[ @racc_state[-1] ]
-            end
-
-            while act = _racc_evalact( act, arg ) do end
-          end
-        end
-      }
-    end
-
-
-    ###
-    ### common
-    ###
-
-    def _racc_evalact( act, arg )
-# $stderr.puts "ea: act=#{act}"
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   = arg
-nerr = 0   # tmp
-
-      if act > 0 and act < shift_n then
-        #
-        # shift
-        #
-
-        if @racc_error_status > 0 then
-          @racc_error_status -= 1 unless @racc_t == 1   # error token
-        end
-
-        @racc_vstack.push @racc_val
-        @racc_state.push act
-        @racc_read_next = true
-
-        if @yydebug then
-          @racc_tstack.push @racc_t
-          racc_shift( @racc_t, @racc_tstack, @racc_vstack )
-        end
-
-      elsif act < 0 and act > -reduce_n then
-        #
-        # reduce
-        #
-
-        code = catch( :racc_jump ) {
-          @racc_state.push _racc_do_reduce( arg, act )
-          false
-        }
-        if code then
-          case code
-          when 1 # yyerror
-            @racc_user_yyerror = true   # user_yyerror
-            return -reduce_n
-          when 2 # yyaccept
-            return shift_n
-          else
-            raise RuntimeError, '[Racc Bug] unknown jump code'
-          end
-        end
-
-      elsif act == shift_n then
-        #
-        # accept
-        #
-
-        racc_accept if @yydebug
-        throw :racc_end_parse, @racc_vstack[0]
-
-      elsif act == -reduce_n then
-        #
-        # error
-        #
-
-        case @racc_error_status
-        when 0
-          unless arg[21] then   # user_yyerror
-            nerr += 1
-            on_error @racc_t, @racc_val, @racc_vstack
-          end
-        when 3
-          if @racc_t == 0 then   # is $
-            throw :racc_end_parse, nil
-          end
-          @racc_read_next = true
-        end
-        @racc_user_yyerror = false
-        @racc_error_status = 3
-
-        while true do
-          if i = action_pointer[ @racc_state[-1] ] then
-            i += 1   # error token
-            if i >= 0 and
-               (act = action_table[i]) and
-               action_check[i] == @racc_state[-1]  then
-               break
-            end
-          end
-
-          throw :racc_end_parse, nil if @racc_state.size < 2
-          @racc_state.pop
-          @racc_vstack.pop
-          if @yydebug then
-            @racc_tstack.pop
-            racc_e_pop( @racc_state, @racc_tstack, @racc_vstack )
-          end
-        end
-
-        return act
-
-      else
-        raise RuntimeError, "[Racc Bug] unknown action #{act.inspect}"
-      end
-
-      racc_next_state( @racc_state[-1], @racc_state ) if @yydebug
-
-      nil
-    end
-
-    def _racc_do_reduce( arg, act )
-      action_table, action_check, action_default, action_pointer,
-      goto_table,   goto_check,   goto_default,   goto_pointer,
-      nt_base,      reduce_table, token_table,    shift_n,
-      reduce_n,     use_result,   = arg
-      state = @racc_state
-      vstack = @racc_vstack
-      tstack = @racc_tstack
-
-      i = act * -3
-      len       = reduce_table[i]
-      reduce_to = reduce_table[i+1]
-      method_id = reduce_table[i+2]
-      void_array = []
-
-      tmp_t = tstack[ -len, len ] if @yydebug
-      tmp_v = vstack[ -len, len ]
-      tstack[ -len, len ] = void_array if @yydebug
-      vstack[ -len, len ] = void_array
-      state[ -len, len ]  = void_array
-
-      # tstack must be updated AFTER method call
-      if use_result then
-        vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
-      else
-        vstack.push __send__(method_id, tmp_v, vstack)
-      end
-      tstack.push reduce_to
-
-      racc_reduce( tmp_t, reduce_to, tstack, vstack ) if @yydebug
-
-      k1 = reduce_to - nt_base
-      if i = goto_pointer[ k1 ] then
-        i += state[-1]
-        if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1 then
-          return curstate
-        end
-      end
-      goto_default[ k1 ]
-    end
-
-    def on_error( t, val, vstack )
-      raise ParseError, "\nparse error on value #{val.inspect}"
-    end
-
-    def yyerror
-      throw :racc_jump, 1
-    end
-
-    def yyaccept
-      throw :racc_jump, 2
-    end
-
-    def yyerrok
-      @racc_error_status = 0
-    end
-
-
-    # for debugging output
-
-    def racc_read_token( t, tok, val )
-      @racc_debug_out.print 'read    '
-      @racc_debug_out.print tok.inspect, '(internaly ', racc_token2str(t), ') '
-      @racc_debug_out.puts val.inspect
-      @racc_debug_out.puts
-    end
-
-    def racc_shift( tok, tstack, vstack )
-      @racc_debug_out.puts "shift   #{racc_token2str tok}"
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_reduce( toks, sim, tstack, vstack )
-      out = @racc_debug_out
-      out.print 'reduce '
-      if toks.empty? then
-        out.print ' <none>'
-      else
-        toks.each {|t| out.print ' ', racc_token2str(t) }
-      end
-      out.puts " --> #{racc_token2str(sim)}"
-          
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_accept
-      @racc_debug_out.puts 'accept'
-      @racc_debug_out.puts
-    end
-
-    def racc_e_pop( state, tstack, vstack )
-      @racc_debug_out.puts 'error recovering mode: pop token'
-      racc_print_states state
-      racc_print_stacks tstack, vstack
-      @racc_debug_out.puts
-    end
-
-    def racc_next_state( curstate, state )
-      @racc_debug_out.puts  "goto    #{curstate}"
-      racc_print_states state
-      @racc_debug_out.puts
-    end
-
-    def racc_print_stacks( t, v )
-      out = @racc_debug_out
-      out.print '        ['
-      t.each_index do |i|
-        out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
-      end
-      out.puts ' ]'
-    end
-
-    def racc_print_states( s )
-      out = @racc_debug_out
-      out.print '        ['
-      s.each {|st| out.print ' ', st }
-      out.puts ' ]'
-    end
-
-    def racc_token2str( tok )
-      type::Racc_token_to_s_table[tok] or
-        raise RuntimeError, "[Racc Bug] can't convert token #{tok} to string"
-    end
-
-  end
-
-end
-..end /home/katsu/local/lib/site_ruby/racc/parser.rb modeval..id92db944ac5
-end   # end of racc/parser.rb
-
-
-#
-# xpath.rb : generated by racc
-#
-
-module XPath
-
-  class Error < StandardError ; end
-  class CompileError < Error ; end
-  class TypeError < Error ; end
-  class NameError < Error ; end
-  class ArgumentError < Error ; end
-  class InvalidOperation < Error ; end
-
-
-  class XPathProc
-
-    def initialize(proc, source)
-      @proc = proc
-      @source = source
-    end
-
-    attr_reader :source
-
-    def call(context)
-      @proc.call context
-    end
-
-  end
-
-
-  def self.compile(src, pattern = false)
-    @compiler = Compiler.new unless defined? @compiler
-    @compiler.compile src, pattern
-  end
-
-
-
-  module XPathObject
-
-    def _type
-      type.name.sub(/\A.*::(?:XPath)?(?=[^:]+\z)/, '')
-    end
-    private :_type
-
-    def type_error(into)
-      raise XPath::TypeError, "failed to convert #{_type} into #{into}"
-    end
-    private :type_error
-
-
-    def to_str         # => to Ruby String
-      type_error 'String'
-    end
-
-    def to_f           # => to Ruby Float
-      type_error 'Float'
-    end
-
-    def true?          # => to Ruby Boolean
-      type_error 'Boolean'
-    end
-
-    def to_ruby        # => to Ruby Object
-      self
-    end
-
-    def to_predicate   # => to Ruby Float, true or false. shouldn't override.
-      true?
-    end
-
-
-    def to_string(context)   # => to XPath String. shouldn't override.
-      context.make_string to_str
-    end
-
-    def to_number(context)   # => to XPath Number. shouldn't override.
-      context.make_number to_f
-    end
-
-    def to_boolean(context)  # => to XPath Boolean. shouldn't override.
-      context.make_boolean true?
-    end
-
-
-    public
-
-    # called from compiled XPath expression
-
-    def ==(other)
-      if other.is_a? XPathNodeSet or
-          other.is_a? XPathBoolean or other.is_a? XPathNumber then
-        other == self
-      else
-        to_str == other.to_str
-      end
-    end
-
-    def <(other)
-      if other.is_a? XPathNodeSet then
-        other > self
-      else
-        to_f < other.to_f
-      end
-    end
-
-    def >(other)
-      if other.is_a? XPathNodeSet then
-        other < self
-      else
-        to_f > other.to_f
-      end
-    end
-
-    def <=(other)
-      if other.is_a? XPathNodeSet then
-        other >= self
-      else
-        to_f <= other.to_f
-      end
-    end
-
-    def >=(other)
-      if other.is_a? XPathNodeSet then
-        other <= self
-      else
-        to_f >= other.to_f
-      end
-    end
-
-    def **(other)
-      type_error 'NodeSet'
-    end
-
-    def predicate(&block)
-      type_error 'NodeSet'
-    end
-
-    def at(pos)
-      type_error 'NodeSet'
-    end
-
-    def funcall(name)   # for XPointer
-      raise XPath::NameError, "undefined function `#{name}' for #{_type}"
-    end
-
-  end
-
-
-
-
-  class XPathBoolean
-
-    include XPathObject
-
-    class << self
-      attr_reader :instance
-      private :new
-    end
-
-    def to_str
-      true?.to_s
-    end
-
-    # def to_f
-    # def true?
-
-    def to_ruby
-      true?
-    end
-
-    def to_boolean(context)
-      self
-    end
-
-    def ==(other)
-      true? == other.true?
-    end
-
-  end
-
-
-  class XPathTrueClass < XPathBoolean
-
-    @instance = new
-
-    def to_f
-      1.0
-    end
-
-    def true?
-      true
-    end
-
-  end
-
-
-  class XPathFalseClass < XPathBoolean
-
-    @instance = new
-
-    def to_f
-      0.0
-    end
-
-    def true?
-      false
-    end
-
-  end
-
-
-  XPathTrue = XPathTrueClass.instance
-  XPathFalse = XPathFalseClass.instance
-
-
-
-
-  class XPathNumber
-
-    include XPathObject
-
-    def initialize(num)
-      raise ::TypeError, "must be a Float" unless num.is_a? Float
-      @value = num
-    end
-
-    def to_str
-      if @value.nan? then
-        'NaN'
-      elsif @value.infinite? then
-        if @value < 0 then
-          '-Infinity'
-        else
-          'Infinity'
-        end
-      else
-        sprintf("%.100f", @value).gsub(/\.?0+\z/, '')    # enough?
-      end
-    end
-
-    def to_f
-      @value
-    end
-
-    def true?
-      @value != 0.0 and not @value.nan?
-    end
-
-    def to_ruby
-      to_f
-    end
-
-    def to_predicate
-      to_f
-    end
-
-    def to_number(context)
-      self
-    end
-
-
-    def ==(other)
-      if other.is_a? XPathNodeSet or other.is_a? XPathBoolean then
-        other == self
-      else
-        @value == other.to_f
-      end
-    end
-
-    def +(other)
-      @value += other.to_f
-      self
-    end
-
-    def -(other)
-      @value -= other.to_f
-      self
-    end
-
-    def *(other)
-      @value *= other.to_f
-      self
-    end
-
-    def /(other)
-      @value /= other.to_f
-      self
-    end
-
-    def %(other)
-      n = other.to_f
-      f = @value % n
-      f = -f if @value < 0
-      f = -f if n < 0
-      @value = f
-      self
-    end
-
-    def -@
-      @value = - at value
-      self
-    end
-
-    def floor
-      @value = @value.floor.to_f
-      self
-    end
-
-    def ceil
-      @value = @value.ceil.to_f
-      self
-    end
-
-    def round
-      f = @value
-      unless f.nan? or f.infinite? then
-        if f >= 0.0 then
-          @value = f.round.to_f
-        elsif f - f.truncate >= -0.5 then
-          @value = f.ceil.to_f
-        else
-          @value = f.floor.to_f
-        end
-      end
-      self
-    end
-
-  end
-
-
-
-
-  class XPathString
-
-    include XPathObject
-
-    def initialize(str)
-      raise ::TypeError, "must be a String" unless str.is_a? String
-      @value = str
-    end
-
-    def to_str
-      @value
-    end
-
-    def to_f
-      if /\A\s*(-?\d+\.?\d*)(?:\s|\z)/ =~ @value then
-        $1.to_f
-      else
-        0.0 / 0.0  # NaN
-      end
-    end
-
-    def true?
-      not @value.empty?
-    end
-
-    def to_ruby
-      to_str
-    end
-
-    def to_string(context)
-      self
-    end
-
-
-    def concat(s)
-      @value = @value + s
-      self
-    end
-
-    def start_with?(s)
-      /\A#{Regexp.quote(s)}/ =~ @value
-    end
-
-    def contain?(s)
-      /#{Regexp.quote(s)}/ =~ @value
-    end
-
-    def substring_before(s)
-      if /#{Regexp.quote(s)}/ =~ @value then
-        @value = $`
-      else
-        @value = ''
-      end
-      self
-    end
-
-    def substring_after(s)
-      if /#{Regexp.quote(s)}/ =~ @value then
-        @value = $'
-      else
-        @value = ''
-      end
-      self
-    end
-
-    def substring(start, len)
-      start = start.round.to_f
-      if start.infinite? or start.nan? then
-        @value = ''
-      elsif len then
-        len = len.round.to_f
-        maxlen = start + len
-        len = maxlen - 1.0 if len >= maxlen
-        if start <= 1.0 then
-          start = 0
-        else
-          start = start.to_i - 1
-        end
-        if len.nan? or len < 1.0 then
-          @value = ''
-        elsif len.infinite? then
-          # @value = @value[start..-1]
-          /\A[\W\w]{0,#{start}}/ =~ @value
-          @value = $'
-        else
-          # @value = @value[start, len.to_i]
-          /\A[\W\w]{0,#{start}}([\W\w]{0,#{len.to_i}})/ =~ @value
-          @value = $1
-        end
-      elsif start > 1.0 then
-        # @value = @value[(start-1)..-1]
-        /\A[\W\w]{0,#{start.to_i-1}}/ =~ @value
-        @value = $'
-      end
-      raise "BUG" unless @value
-      self
-    end
-
-    def size
-      @value.gsub(/[^\Wa-zA-Z_\d]/, ' ').size
-    end
-
-    def normalize_space
-      @value = @value.strip
-      @value.gsub!(/\s+/, ' ')
-      self
-    end
-
-    def translate(from, to)
-      to = to.split(//)
-      h = {}
-      from.split(//).each_with_index { |i,n|
-        h[i] = to[n] unless h.key? i
-      }
-      @value = @value.gsub(/[#{Regexp.quote(h.keys.join)}]/) { |s| h[s] }
-      self
-    end
-
-    def replace(str)
-      @value = str
-      self
-    end
-
-  end
-
-
-
-
-
-class Compiler < Racc::Parser
-
-module_eval <<'..end xpath.ry modeval..idcc62899492', 'xpath.ry', 268
-
-  module CompilePhaseObject
-
-    def invoke_conv(expr, conv_method)
-      return unless conv_method
-      if conv_method == '.to_number' or
-          conv_method == '.to_string' or
-          conv_method == '.to_boolean' then
-        expr.push conv_method, '(', nil, ')'
-      else
-        expr.push conv_method
-      end
-    end
-    private :invoke_conv
-
-  end
-
-
-  module ConstantObject
-
-    include CompilePhaseObject
-
-    def to_string
-      StringConstant.new to_str
-    end
-
-    def to_number
-      NumberConstant.new self
-    end
-
-    def to_boolean
-      if true? then
-        ConstantTrue
-      else
-        ConstantFalse
-      end
-    end
-
-  end
-
-
-  module BooleanConstant
-
-    include ConstantObject
-
-    def value_type
-      :boolean
-    end
-
-    def expr(conv_method = nil)
-      if conv_method == '.to_ruby' or conv_method == '.true?' then
-        [ true?.to_s ]
-      else
-        ret = [ nil, '.make_boolean(', true?.to_s, ')' ]
-        invoke_conv ret, conv_method unless conv_method == '.to_boolean'
-        ret
-      end
-    end
-
-  end
-
-  class ConstantTrueClass < XPathTrueClass
-    include BooleanConstant
-    @instance = new
-  end
-
-  class ConstantFalseClass < XPathFalseClass
-    include BooleanConstant
-    @instance = new
-  end
-
-  ConstantTrue = ConstantTrueClass.instance
-  ConstantFalse = ConstantFalseClass.instance
-
-
-
-  class NumberConstant < XPathNumber
-
-    include ConstantObject
-
-    def value_type
-      :number
-    end
-
-    def initialize(src)
-      f = src.to_f
-      if src.is_a? ConstantObject and s = dump_float(f) then
-        src = s
-      end
-      @src = [ src ]
-      @precedence = 1
-      super f
-    end
-
-    attr_reader :precedence
-    protected :precedence
-
-    def to_number
-      self
-    end
-
-
-    def expr(conv_method = nil)
-      @src.collect! { |i|
-        if i.is_a? ConstantObject then
-          i.expr '.to_f'
-        else
-          i
-        end
-      }
-      expr = @src
-      expr.flatten!
-      @src = :draff  # for debug
-      unless conv_method == '.to_ruby' or conv_method == '.to_f' then
-        expr[0, 0] = [ nil, '.make_number(' ]
-        expr.push(')')
-        invoke_conv expr, conv_method unless conv_method == '.to_number'
-      end
-      expr
-    end
-
-
-    private
-
-    def dump_float(f)
-      if f.finite? and f == eval(s = f.to_s) then
-        s
-      elsif f.infinite? then
-        if f > 0 then
-          '(1.0 / 0.0)'
-        else
-          '(-1.0 / 0.0)'
-        end
-      elsif f.nan? then
-        '(0.0 / 0.0)'
-      else
-        nil
-      end
-    end
-
-
-    def concat(op, other, prec)
-      @src.unshift('(').push(')') if @precedence < prec
-      if other.precedence < prec then
-        @src.push(op).push('(').concat(other.expr('.to_f')).push(')')
-      else
-        @src.push(op).concat(other.expr('.to_f'))
-      end
-      @precedence = prec
-    end
-
-
-    public
-
-    def self.def_arithmetic_operator(op, precedence)
-      module_eval <<_, __FILE__, __LINE__ + 1
-      def #{op}(other)
-        super other
-        if s = dump_float(@value) then
-          @src.clear
-          @src.push s
-        else
-          concat ' #{op} ', other, #{precedence}
-        end
-        self
-      end
-_
-    end
-
-    def_arithmetic_operator '+', 0
-    def_arithmetic_operator '-', 0
-    def_arithmetic_operator '*', 1
-    def_arithmetic_operator '/', 1
-
-    class << self
-      undef def_arithmetic_operator
-    end
-
-    def %(other)
-      orig = @value
-      super other
-      if s = dump_float(@value) then
-        @src.clear
-        @src.push s
-      else
-        f = other.to_f
-        other = -other if orig % f == - at value
-        concat ' % ', other, 1
-      end
-      self
-    end
-
-    def -@
-      super
-      if s = dump_float(@value) then
-        @src.clear
-        @src.push s
-      else
-        if @src.size == 1 then
-          @src.unshift '-'
-        else
-          @src.unshift('-(').push(')')
-        end
-        @precedence = 1
-      end
-      self
-    end
-
-  end
-
-
-
-  class StringConstant < XPathString
-
-    include ConstantObject
-
-    def value_type
-      :string
-    end
-
-    def to_string
-      self
-    end
-
-    def expr(conv_method = nil)
-      if conv_method == '.to_ruby' or conv_method == '.to_str' then
-        [ @value.dump ]
-      else
-        ret = [ nil, '.make_string(', @value.dump, ')' ]
-        invoke_conv ret, conv_method unless conv_method == '.to_string'
-        ret
-      end
-    end
-
-  end
-
-
-
-  class Expression
-
-    include CompilePhaseObject
-
-    def initialize(expr)
-      if expr.is_a? ConstantObject then
-        @value = expr
-      else
-        raise "BUG" unless expr.is_a? Array
-        @value = nil
-        @valuetype = nil
-        @expr = expr
-      end
-      @unary = true
-    end
-
-    attr_reader :value
-
-
-    def value_type
-      if @value then
-        @value.value_type
-      else
-        @valuetype
-      end
-    end
-
-
-    def unarize
-      unless @unary then
-        @expr.unshift('(').push(')')
-        @unary = true
-      end
-      self
-    end
-
-
-    def self.def_comparison_operator(name, op)
-      module_eval <<_, __FILE__, __LINE__ + 1
-      def #{name}(other)
-        if @value and other.value then
-          if @value #{op} other.value then
-            @value = ConstantTrue
-          else
-            @value = ConstantFalse
-          end
-          @unary = true
-        else
-          @expr = expr.push(' #{op} ').concat(other.expr)
-          @valuetype = :ruby_boolean
-          @unary = false
-        end
-        self
-      end
-_
-    end
-
-    def self.def_arithmetic_operator(*ops)
-      ops.each { |op|
-        module_eval <<_, __FILE__, __LINE__ + 1
-        def #{op}(other)
-          if @value and other.value then
-            @value = @value.to_number #{op} other.value.to_number
-          else
-            @expr = expr('.to_number').push(' #{op} ')
-            # not 'to_number', for a little speed up :-)
-            @expr.concat other.expr('.to_f')
-            @valuetype = :number
-            @unary = false
-          end
-          self
-        end
-_
-      }
-    end
-
-    def_comparison_operator 'eq',  '=='
-    def_comparison_operator 'neq', '!='
-    def_comparison_operator 'lt',  '<'
-    def_comparison_operator 'gt',  '>'
-    def_comparison_operator 'le',  '<='
-    def_comparison_operator 'ge',  '>='
-    def_arithmetic_operator '+', '-', '*', '/', '%'
-
-    class << self
-      undef def_comparison_operator
-      undef def_arithmetic_operator
-    end
-
-    def -@
-      if @value then
-        @value = - at value.to_number
-      else
-        unarize
-        @expr = expr('.to_number').unshift('-')
-      end
-      self
-    end
-
-    def logical_or(other)
-      if @value and @value.true? then
-        @value = ConstantTrue
-        @unary = true
-        @expr = @valuetype = nil
-      else
-        @expr = expr('.true?').push(' || ').concat(other.expr('.true?'))
-        @valuetype = :ruby_boolean
-        @unary = false
-      end
-      self
-    end
-
-    def logical_and(other)
-      if @value and not @value.true? then
-        @value = ConstantFalse
-        @unary = true
-        @expr = @valuetype = nil
-      else
-        @expr = expr('.true?').push(' && ').concat(other.expr('.true?'))
-        @valuetype = :ruby_boolean
-        @unary = false
-      end
-      self
-    end
-
-    def **(other)
-      @expr = expr.push(' ** ').concat(other.expr)
-      @valuetype = nil
-      @unary = false
-      self
-    end
-
-
-    def add_predicate(pred)
-      unarize
-      @expr = expr.concat(pred)
-      @valuetype = nil
-      self
-    end
-
-    def <<(other)
-      path = other.expr
-      path.shift  # nil
-      path.shift  # .to_nodeset
-      add_predicate path
-    end
-
-    def add_step(axis)
-      add_predicate [ ".step(:#{axis.tr('-','_')})" ]
-    end
-
-
-    def expr(conv_method = nil)
-      if @value then
-        ret = @value.expr(conv_method)
-        @value = nil
-      elsif @valuetype == :ruby_boolean then
-        ret = @expr
-        unless conv_method == '.to_ruby' or conv_method == '.true?' then
-          ret[0, 0] = [ nil, '.make_boolean(' ]
-          ret.push ')'
-          invoke_conv ret, conv_method unless conv_method == '.to_boolean'
-        end
-      elsif @valuetype == :number and conv_method == '.to_number' then
-        ret = @expr
-      elsif @valuetype == :string and conv_method == '.to_string' then
-        ret = @expr
-      elsif @valuetype == :boolean and conv_method == '.to_boolean' then
-        ret = @expr
-      else
-        if conv_method then
-          unarize
-          invoke_conv @expr, conv_method
-        end
-        ret = @expr
-      end
-      @expr = :draff   # for debug
-      ret
-    end
-
-  end
-
-
-
-  class LocationPath
-
-    include CompilePhaseObject
-
-    def initialize
-      @root = false
-      @steps = []    # [ axis, [ tests ], predicates ]
-    end
-
-    attr_reader :root, :steps
-    protected :root, :steps
-
-    def absolute!
-      @root = true
-      self
-    end
-
-
-    def add_step(axis, nodetype = false, localpart = false,
-                 namespace = false, predicate = nil)
-      if nodetype == false and localpart == false and namespace == false then
-        append_step axis, [], predicate
-      else
-        append_step axis, [ [ nodetype, localpart, namespace ] ], predicate
-      end
-      self
-    end
-
-
-    def <<(other)
-      raise "BUG" if other.root
-      other = other.steps
-      other.each { |step|
-        if step[0] then
-          append_step(*step)
-        else
-          add_predicate(step[2])
-        end
-      }
-      self
-    end
-
-
-    def add_predicate(pred)
-      @steps.push [ nil, nil, pred ]
-      self
-    end
-
-
-    def **(other)
-      unless other.is_a? LocationPath then
-        ret = nil
-      else
-        othersteps = other.steps
-        size = @steps.size
-        unless size == othersteps.size then
-          othersize = othersteps.size
-          if size >= othersize then
-            ret = (@steps[0, othersize] == othersize and self)
-          else
-            ret = (othersteps[0, size] == @steps and other)
-          end
-        else
-          last = @steps.pop
-          otherlast = othersteps.pop
-          if @steps == othersteps and mix_step(last, otherlast) then
-            ret = self
-          else
-            ret = nil
-          end
-          @steps.push last
-          othersteps.push otherlast
-        end
-      end
-      ret or Expression.new(expr) ** other
-    end
-
-
-    private
-
-    UnifiableAxes = {
-      'descendant' => {
-        'descendant-or-self' => 'descendant',
-      },
-      'descendant-or-self' => {
-        'child'              => 'descendant',
-        'descendant'         => 'descendant',
-        'descendant-or-self' => 'descendant-or-self',
-      },
-      'ancestor' => {
-        'ancestor-or-self'   => 'ancestor',
-      },
-      'ancestor-or-self' => {
-        'parent'             => 'ancestor',
-        'ancestor'           => 'ancestor',
-        'ancestor-or-self'   => 'ancestor-or-self',
-      },
-      'following-sibling' => {
-        'following-sibling'  => 'following-sibling',
-      },
-      'preceding-sibling' => {
-        'preceding-sibling'  => 'preceding-sibling',
-      },
-      'following' => {
-        'following'          => 'following',
-        'following-sibling'  => 'following',
-      },
-      'preceding' => {
-        'preceding'          => 'preceding',
-        'preceding-sibling'  => 'preceding',
-      },
-      'child' => {
-        'following-sibling'  => 'child',
-        'preceding-sibling'  => 'child',
-      },
-    }
-    UnifiableAxes.default = {}
-
-
-    def append_step(axis, test, predicate)
-      lastaxis, lasttest, lastpred = laststep = @steps.last
-      if axis == 'self' and test.empty? then
-        @steps.push [ nil, nil, predicate ] if predicate
-      elsif lastaxis and lasttest.empty? and
-          not lastpred and not predicate and
-          w = UnifiableAxes[lastaxis][axis] then
-        laststep[0] = w
-        laststep[1] = test
-      else
-        @steps.push [ axis, test, predicate ]
-      end
-    end
-
-
-    def mix_step(step, other)
-      if step[0] and step[0] == other[0] and step[2] == other[2] then
-        step[1].concat other[1]
-        step
-      else
-        nil
-      end
-    end
-
-
-    public
-
-    def expr(conv_method = nil)
-      if @root then
-        expr = [ nil, '.root_nodeset' ]
-      else
-        expr = [ nil, '.to_nodeset' ]
-      end
-      @steps.each { |axis,test,predicate|
-        if axis.nil? then   # predicate only
-          expr.concat predicate
-        elsif test.empty? and not predicate then
-          expr.push ".select_all(:#{axis.tr('-','_')})"
-        else
-          expr.push ".step(:#{axis.tr('-','_')})"
-          if test.empty? then
-            expr.push ' { |n| n.select_all'
-          else
-            expr.push ' { |n| n.select { |i| '
-            test.each { |nodetype,localpart,namespace|
-              if nodetype then
-                expr.push "i.node_type == :#{nodetype.tr('-','_')}", ' && '
-              end
-              if localpart then
-                expr.push "i.name_localpart == #{localpart.dump}", ' && '
-              end
-              if namespace.nil? then
-                expr.push 'i.namespace_uri.nil?', ' && '
-              elsif namespace then
-                namespace = namespace.dump
-                expr.push('i.namespace_uri == ', nil,
-                          ".get_namespace(#{namespace})", ' && ')
-              end
-              expr[-1] = ' or '
-            }
-            expr[-1] = ' }'
-          end
-          expr.concat predicate if predicate
-          expr.push ' }'
-        end
-      }
-      @steps = :draff   # for debug
-      invoke_conv expr, conv_method
-      expr
-    end
-
-
-    def value_type
-      nil
-    end
-
-    def value
-      nil
-    end
-
-    def unarize
-      self
-    end
-
-    def self.redirect_to_expr(*ops)
-      ops.each { |op|
-        name = op
-        name = op[1..-1] if op[0] == ?.
-        module_eval <<_, __FILE__, __LINE__ + 1
-        def #{name}(arg) ; Expression.new(expr) #{op} arg ; end
-_
-      }
-    end
-
-    redirect_to_expr('.eq', '.neq', '.lt', '.gt', '.le', '.ge',
-                     '+', '-', '*', '/', '%', '.logical_or', '.logical_and')
-
-    class << self
-      undef redirect_to_expr
-    end
-
-    def -@
-      -Expression.new(expr)
-    end
-
-  end
-
-
-
-
-  Delim = '\\s\\(\\)\\[\\]\\.@,\\/\\|\\*\\+"\'=!<>:'
-  Name = "[^-#{Delim}][^#{Delim}]*"
-
-  Operator = {
-    '@' => true, '::' => true, '(' => true, '[' => true,
-    :MUL => true, 'and' => true, 'or' => true, 'mod' => true, 'div' => true,
-    '/'  => true, '//' => true, '|'  => true, '+' => true,
-    '-'  => true, '='  => true, '!=' => true, '<' => true,
-    '<=' => true, '>'  => true, '>=' => true,
-    ':' => false
-    # ':' '*'    => '*' must not be a MultiplyOperator
-    # ':' 'and'  => 'and' must be a OperatorName
-  }
-
-  NodeType = {
-    'comment' => true,
-    'text' => true,
-    'processing-instruction' => true,
-    'node' => true,
-  }
-
-
-  private
-
-  def axis?(s)
-    /\A[-a-zA-Z]+\z/ =~ s
-  end
-
-  def nodetype?(s)
-    NodeType.key? s
-  end
-
-  def tokenize(src)
-    token = []
-    src.scan(/(\.\.?|\/\/?|::?|!=|[<>]=?|[-()\[\].@,|+=*])|
-              ("[^"]*"|'[^']*')|(\d+\.?\d*)|
-              (\$?#{Name}(?::#{Name})?)|
-              \s+|./ox) { |delim,literal,number,name|  #/
-      if delim then
-        if delim == '*' then
-          delim = :MUL if (prev = token[-1]) and not Operator.key? prev[0]
-        elsif delim == '::' then
-          prev = token[-1]
-          if prev and prev[0] == :Name and axis? prev[1] then
-            prev[0] = :AxisName
-          end
-        elsif delim == '(' then
-          if (prev = token[-1]) and prev[0] == :Name then
-            if nodetype? prev[1] then
-              prev[0] = :NodeType
-            else
-              prev[0] = :FuncName
-            end
-          end
-        end
-        token.push [ delim, delim ]
-      elsif name then
-        prev = token[-1]
-        if name[0] == ?$ then
-          name[0,1] = ''
-          token.push [ :Variable, name ]
-        elsif Operator.key? name and
-            (prev = token[-1]) and not Operator[prev[0]] then
-          token.push [ name, name ]
-        else
-          token.push [ :Name, name ]
-        end
-      elsif number then
-        number << '.0' unless number.include? ?.
-        token.push [ :Number, number ]
-      elsif literal then
-        literal.chop!
-        literal[0,1] = ''
-        token.push [ :Literal, literal ]
-      else
-        s = $&.strip
-        token.push [ s, s ] unless s.empty?
-      end
-    }
-    token
-  end
-
-
-  public
-
-  def compile(src, pattern = false)
-    @token = tokenize(src)
-    @token.push [ false, :end ]
-    @token.each { |i| p i } if @yydebug
-    @token.reverse!
-    @token.push [ :PATTERN, nil ] if pattern
-    @context = 'context0'
-    ret = do_parse
-    ret = ret.unshift("proc { |context0| ").push(" }").join
-    print ">>>>\n", ret, "\n<<<<\n" if @yydebug
-    XPathProc.new eval(ret), src
-  end
-
-
-  def initialize(debug = false)
-    super()
-    @yydebug = debug
-  end
-
-
-  private
-
-  def next_token
-    @token.pop
-  end
-
-
-  def is_xpointer?
-    false
-  end
-
-
-  def on_error(*args) # tok, val, values
-    raise CompileError, 'parse error'
-  end
-
-
-..end xpath.ry modeval..idcc62899492
-
-##### racc 1.3.3 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 0, 39, :_reduce_1,
- 1, 39, :_reduce_2,
- 2, 39, :_reduce_3,
- 1, 41, :_reduce_none,
- 3, 41, :_reduce_5,
- 3, 40, :_reduce_6,
- 3, 40, :_reduce_7,
- 3, 40, :_reduce_8,
- 3, 40, :_reduce_9,
- 3, 40, :_reduce_10,
- 3, 40, :_reduce_11,
- 3, 40, :_reduce_12,
- 3, 40, :_reduce_13,
- 3, 40, :_reduce_14,
- 3, 40, :_reduce_15,
- 2, 40, :_reduce_16,
- 3, 40, :_reduce_17,
- 3, 40, :_reduce_18,
- 3, 40, :_reduce_19,
- 3, 40, :_reduce_20,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 3, 40, :_reduce_23,
- 3, 40, :_reduce_24,
- 1, 43, :_reduce_25,
- 3, 43, :_reduce_26,
- 1, 43, :_reduce_27,
- 1, 43, :_reduce_28,
- 1, 43, :_reduce_29,
- 2, 43, :_reduce_30,
- 4, 45, :_reduce_31,
- 0, 47, :_reduce_32,
- 1, 47, :_reduce_33,
- 3, 47, :_reduce_34,
- 0, 48, :_reduce_35,
- 0, 49, :_reduce_36,
- 5, 46, :_reduce_37,
- 1, 42, :_reduce_38,
- 2, 42, :_reduce_39,
- 2, 42, :_reduce_40,
- 1, 42, :_reduce_none,
- 1, 44, :_reduce_42,
- 3, 44, :_reduce_43,
- 3, 44, :_reduce_44,
- 0, 51, :_reduce_45,
- 0, 52, :_reduce_46,
- 8, 44, :_reduce_47,
- 1, 50, :_reduce_48,
- 1, 50, :_reduce_49,
- 3, 50, :_reduce_50,
- 0, 55, :_reduce_none,
- 2, 55, :_reduce_52,
- 1, 54, :_reduce_53,
- 1, 54, :_reduce_54,
- 3, 54, :_reduce_55,
- 4, 54, :_reduce_56,
- 0, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 0, 53, :_reduce_59,
- 1, 53, :_reduce_60,
- 2, 53, :_reduce_none ]
-
-racc_reduce_n = 62
-
-racc_shift_n = 100
-
-racc_action_table = [
-    -1,    75,    87,    16,    19,    16,    19,    82,     2,     9,
-    12,     9,    12,    42,    44,    47,    48,     5,     7,    10,
-    14,    18,    43,    20,     1,     4,    71,     2,    84,    16,
-    19,    26,    83,    47,    48,     9,    12,     7,    10,    14,
-    18,    26,    20,     1,     4,    46,     2,    26,    16,    19,
-    52,    49,    54,    50,     9,    12,     7,    10,    14,    18,
-   -32,    20,     1,     4,   -32,     2,    88,    16,    19,    47,
-    48,    47,    48,     9,    12,     7,    10,    14,    18,   -32,
-    20,     1,     4,   -32,     2,    90,    16,    19,    47,    48,
-    43,    79,     9,    12,     7,    10,    14,    18,    78,    20,
-     1,     4,    95,     2,    26,    16,    19,    96,    37,    83,
-    99,     9,    12,     7,    10,    14,    18,   nil,    20,     1,
-     4,   nil,     2,   nil,    16,    19,   nil,   nil,   nil,   nil,
-     9,    12,     7,    10,    14,    18,   nil,    20,     1,     4,
-   nil,     2,   nil,    16,    19,   nil,   nil,   nil,   nil,     9,
-    12,     7,    10,    14,    18,   nil,    20,     1,     4,   nil,
-     2,   nil,    16,    19,   nil,   nil,   nil,   nil,     9,    12,
-     7,    10,    14,    18,   nil,    20,     1,     4,   nil,     2,
-   nil,    16,    19,   nil,   nil,   nil,   nil,     9,    12,     7,
-    10,    14,    18,   nil,    20,     1,     4,   nil,     2,   nil,
-    16,    19,   nil,   nil,   nil,   nil,     9,    12,     7,    10,
-    14,    18,   nil,    20,     1,     4,   nil,     2,   nil,    16,
-    19,   nil,   nil,   nil,   nil,     9,    12,     7,    10,    14,
-    18,   nil,    20,     1,     4,   nil,     2,   nil,    16,    19,
-   nil,   nil,   nil,   nil,     9,    12,     7,    10,    14,    18,
-   nil,    20,     1,     4,   nil,     2,   nil,    16,    19,   nil,
-   nil,   nil,   nil,     9,    12,     7,    10,    14,    18,   nil,
-    20,     1,     4,   nil,     2,   nil,    16,    19,   nil,   nil,
-   nil,   nil,     9,    12,     7,    10,    14,    18,   nil,    20,
-     1,     4,   nil,     2,   nil,    16,    19,   nil,   nil,   nil,
-   nil,     9,    12,     7,    10,    14,    18,   nil,    20,     1,
-     4,   nil,     2,   nil,    16,    19,   nil,   nil,   nil,   nil,
-     9,    12,     7,    10,    14,    18,   nil,    20,     1,     4,
-   nil,     2,   nil,    16,    19,   nil,   nil,   nil,   nil,     9,
-    12,     7,    10,    14,    18,   nil,    20,     1,     4,   nil,
-     2,   nil,    16,    19,   nil,   nil,   nil,   nil,     9,    12,
-     7,    10,    14,    18,   nil,    20,     1,     4,   nil,     2,
-   nil,    16,    19,   nil,   nil,   nil,   nil,     9,    12,     7,
-    10,    14,    18,   nil,    20,     1,     4,   nil,     2,   nil,
-    16,    19,   nil,   nil,   nil,   nil,     9,    12,     7,    10,
-    14,    18,   nil,    20,     1,     4,    16,    19,   nil,    16,
-    19,   nil,     9,    12,   nil,     9,    12,    26,   nil,    29,
-    31,    33,    35,    23,    25,    27,    28,    30,    32,    34,
-    36,    24,     7,    10,     7,    10,    26,    81,    29,    31,
-    33,    16,    19,    16,    19,    16,    19,     9,    12,     9,
-    12,     9,    12,    26,   nil,    29,    31,    33,    35,    23,
-    25,    27,    28,    30,    32,    34,    36,    24,    26,   nil,
-    29,    31,    33,    35,    23,    25,    27,    28,    30,    32,
-    34,    36,    24,    26,   nil,    29,    31,    33,    35,    23,
-    25,    27,    28,    30,    32,    34,    36,    24,    26,   nil,
-    29,    31,    33,    35,    23,    25,    27,    28,    30,    32,
-    34,    36,    24,    26,   nil,    29,    31,    33,    35,    23,
-    25,    27,    28,    30,    32,    34,    36,    26,   nil,    29,
-    31,    33,    35,    23,    25,    27,    28,    30,    32,    34,
-    26,   nil,    29,    31,    33,    35,    23,    25,    27,    28,
-    30,    26,   nil,    29,    31,    33,    35,    23,    25,    27,
-    28,    30,    16,    19,   -59,   -59,   nil,   -59,     9,    12,
-    16,    19,   nil,   nil,   nil,   nil,     9,    12,    26,   nil,
-    29,    31,    33,    35,    23,    26,   nil,    29,    31,    33,
-    35,    23,    26,   nil,    29,    31,    33,    35,    23,    26,
-   nil,    29,    31,    33,    35,    23,    26,   nil,    29,    31,
-    33 ]
-
-racc_action_check = [
-     0,    47,    75,    48,    48,    47,    47,    54,     0,    48,
-    48,    47,    47,    11,    11,    40,    40,     0,     0,     0,
-     0,     0,    11,     0,     0,     0,    38,    23,    70,     0,
-     0,    61,    70,    13,    13,     0,     0,    23,    23,    23,
-    23,    22,    23,    23,    23,    12,    37,    63,    23,    23,
-    15,    15,    21,    15,    23,    23,    37,    37,    37,    37,
-    37,    37,    37,    37,    37,    94,    78,    37,    37,    41,
-    41,    74,    74,    37,    37,    94,    94,    94,    94,    94,
-    94,    94,    94,    94,    36,    79,    94,    94,    72,    72,
-    80,    50,    94,    94,    36,    36,    36,    36,    49,    36,
-    36,    36,    89,    35,    65,    36,    36,    93,     4,    97,
-    98,    36,    36,    35,    35,    35,    35,   nil,    35,    35,
-    35,   nil,    34,   nil,    35,    35,   nil,   nil,   nil,   nil,
-    35,    35,    34,    34,    34,    34,   nil,    34,    34,    34,
-   nil,    83,   nil,    34,    34,   nil,   nil,   nil,   nil,    34,
-    34,    83,    83,    83,    83,   nil,    83,    83,    83,   nil,
-    73,   nil,    83,    83,   nil,   nil,   nil,   nil,    83,    83,
-    73,    73,    73,    73,   nil,    73,    73,    73,   nil,    33,
-   nil,    73,    73,   nil,   nil,   nil,   nil,    73,    73,    33,
-    33,    33,    33,   nil,    33,    33,    33,   nil,    32,   nil,
-    33,    33,   nil,   nil,   nil,   nil,    33,    33,    32,    32,
-    32,    32,   nil,    32,    32,    32,   nil,    18,   nil,    32,
-    32,   nil,   nil,   nil,   nil,    32,    32,    18,    18,    18,
-    18,   nil,    18,    18,    18,   nil,    31,   nil,    18,    18,
-   nil,   nil,   nil,   nil,    18,    18,    31,    31,    31,    31,
-   nil,    31,    31,    31,   nil,    30,   nil,    31,    31,   nil,
-   nil,   nil,   nil,    31,    31,    30,    30,    30,    30,   nil,
-    30,    30,    30,   nil,     2,   nil,    30,    30,   nil,   nil,
-   nil,   nil,    30,    30,     2,     2,     2,     2,   nil,     2,
-     2,     2,   nil,    29,   nil,     2,     2,   nil,   nil,   nil,
-   nil,     2,     2,    29,    29,    29,    29,   nil,    29,    29,
-    29,   nil,    25,   nil,    29,    29,   nil,   nil,   nil,   nil,
-    29,    29,    25,    25,    25,    25,   nil,    25,    25,    25,
-   nil,    26,   nil,    25,    25,   nil,   nil,   nil,   nil,    25,
-    25,    26,    26,    26,    26,   nil,    26,    26,    26,   nil,
-    27,   nil,    26,    26,   nil,   nil,   nil,   nil,    26,    26,
-    27,    27,    27,    27,   nil,    27,    27,    27,   nil,    28,
-   nil,    27,    27,   nil,   nil,   nil,   nil,    27,    27,    28,
-    28,    28,    28,   nil,    28,    28,    28,   nil,    24,   nil,
-    28,    28,   nil,   nil,   nil,   nil,    28,    28,    24,    24,
-    24,    24,   nil,    24,    24,    24,    44,    44,   nil,    24,
-    24,   nil,    44,    44,   nil,    24,    24,    53,   nil,    53,
-    53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
-    53,    53,    71,    71,     5,     5,    67,    53,    67,    67,
-    67,    42,    42,    71,    71,     5,     5,    42,    42,    71,
-    71,     5,     5,     3,   nil,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,    69,   nil,
-    69,    69,    69,    69,    69,    69,    69,    69,    69,    69,
-    69,    69,    69,    92,   nil,    92,    92,    92,    92,    92,
-    92,    92,    92,    92,    92,    92,    92,    92,    86,   nil,
-    86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-    86,    86,    86,    56,   nil,    56,    56,    56,    56,    56,
-    56,    56,    56,    56,    56,    56,    56,    68,   nil,    68,
-    68,    68,    68,    68,    68,    68,    68,    68,    68,    68,
-    66,   nil,    66,    66,    66,    66,    66,    66,    66,    66,
-    66,    64,   nil,    64,    64,    64,    64,    64,    64,    64,
-    64,    64,     7,     7,     7,     7,   nil,     7,     7,     7,
-    10,    10,   nil,   nil,   nil,   nil,    10,    10,    57,   nil,
-    57,    57,    57,    57,    57,    60,   nil,    60,    60,    60,
-    60,    60,    59,   nil,    59,    59,    59,    59,    59,    62,
-   nil,    62,    62,    62,    62,    62,    55,   nil,    55,    55,
-    55 ]
-
-racc_action_pointer = [
-     0,   nil,   266,   451,    87,   416,   nil,   533,   nil,   nil,
-   541,    -5,     8,    15,   nil,    19,   nil,   nil,   209,   nil,
-   nil,    52,    39,    19,   380,   304,   323,   342,   361,   285,
-   247,   228,   190,   171,   114,    95,    76,    38,    24,   nil,
-    -3,    51,   412,   nil,   377,   nil,   nil,   -24,   -26,    65,
-    70,   nil,   nil,   415,     7,   604,   511,   576,   nil,   590,
-   583,    29,   597,    45,   549,   102,   538,   434,   525,   466,
-     6,   414,    70,   152,    53,   -19,   nil,   nil,    35,    62,
-    63,   nil,   nil,   133,   nil,   nil,   496,   nil,   nil,    80,
-   nil,   nil,   481,    79,    57,   nil,   nil,    83,    88,   nil ]
-
-racc_action_default = [
-   -59,   -28,   -59,    -2,   -62,   -59,   -42,   -38,   -21,   -60,
-   -59,   -22,   -62,   -41,   -25,   -62,   -48,   -29,   -59,   -49,
-   -27,   -62,   -16,   -59,   -59,   -59,   -59,   -59,   -59,   -59,
-   -59,   -59,   -59,   -59,   -59,   -59,   -59,   -59,    -3,    -4,
-   -39,   -40,   -59,   -35,   -59,   -30,   -61,   -59,   -59,   -54,
-   -62,   -51,   -53,   -62,   -62,   -15,    -6,   -10,   -20,   -11,
-   -12,   -17,   -13,   -18,    -8,   -19,    -9,   -14,    -7,   -33,
-   -62,   -59,   -23,   -59,   -24,   -62,   -43,   -44,   -62,   -57,
-   -50,   -26,   100,   -59,   -31,    -5,   -36,   -45,   -55,   -62,
-   -58,   -52,   -34,   -62,   -59,   -56,   -37,   -46,   -62,   -47 ]
-
-racc_goto_table = [
-     3,    45,    22,    39,    70,    40,    76,    77,    41,    73,
-    38,    93,    21,    94,    98,    51,    80,    89,    53,   nil,
-   nil,   nil,   nil,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,   nil,   nil,   nil,
-    72,   nil,    74,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    97,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,
-    91,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    92 ]
-
-racc_goto_check = [
-     2,     8,     2,     4,     9,     6,    12,    12,     6,    10,
-     3,    11,     1,    13,    14,    16,    17,    18,     2,   nil,
-   nil,   nil,   nil,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   nil,   nil,   nil,
-     6,   nil,     6,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,     9,   nil,   nil,   nil,   nil,   nil,   nil,   nil,     4,
-     8,   nil,   nil,     2,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,     2 ]
-
-racc_goto_pointer = [
-   nil,    12,     0,     5,    -2,   nil,    -2,   nil,   -10,   -33,
-   -34,   -75,   -41,   -74,   -83,   nil,     0,   -35,   -62 ]
-
-racc_goto_default = [
-   nil,   nil,    69,   nil,     8,    11,    13,    17,   nil,   nil,
-   nil,   nil,     6,   nil,   nil,    15,   nil,   nil,   nil ]
-
-racc_token_table = {
- false => 0,
- Object.new => 1,
- "|" => 2,
- :NEG => 3,
- :MUL => 4,
- "div" => 5,
- "mod" => 6,
- "+" => 7,
- "-" => 8,
- "<" => 9,
- ">" => 10,
- "<=" => 11,
- ">=" => 12,
- "=" => 13,
- "!=" => 14,
- "and" => 15,
- "or" => 16,
- :PATTERN => 17,
- "/" => 18,
- "//" => 19,
- :Variable => 20,
- "(" => 21,
- ")" => 22,
- :Literal => 23,
- :Number => 24,
- :FuncName => 25,
- "," => 26,
- "[" => 27,
- "]" => 28,
- "." => 29,
- ".." => 30,
- "*" => 31,
- :Name => 32,
- ":" => 33,
- :NodeType => 34,
- "@" => 35,
- :AxisName => 36,
- "::" => 37 }
-
-racc_use_result_var = false
-
-racc_nt_base = 38
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_debug_parser = false
-
-##### racc system variables end #####
-
- # reduce 0 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 27
-  def _reduce_1( val, _values)
- []
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 30
-  def _reduce_2( val, _values)
-                        expr = val[0].expr('.to_ruby')
-                        expr.collect! { |i| i or @context }
-                        expr
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 36
-  def _reduce_3( val, _values)
-                        expr = val[0].expr('.to_ruby')
-                        expr.collect! { |i| i or @context }
-                        expr
-  end
-.,.,
-
- # reduce 4 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 43
-  def _reduce_5( val, _values)
- val[0] ** val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 46
-  def _reduce_6( val, _values)
- val[0].logical_or val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 48
-  def _reduce_7( val, _values)
- val[0].logical_and val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 50
-  def _reduce_8( val, _values)
- val[0].eq val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 52
-  def _reduce_9( val, _values)
- val[0].neq val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 54
-  def _reduce_10( val, _values)
- val[0].lt val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 56
-  def _reduce_11( val, _values)
- val[0].gt val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 58
-  def _reduce_12( val, _values)
- val[0].le val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 60
-  def _reduce_13( val, _values)
- val[0].ge val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 62
-  def _reduce_14( val, _values)
- val[0] + val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 64
-  def _reduce_15( val, _values)
- val[0] - val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 66
-  def _reduce_16( val, _values)
- -val[1]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 68
-  def _reduce_17( val, _values)
- val[0] * val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 70
-  def _reduce_18( val, _values)
- val[0] / val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 72
-  def _reduce_19( val, _values)
- val[0] % val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 75
-  def _reduce_20( val, _values)
-                        # Why `**' is used for unionizing node-sets is that its
-                        # precedence is higher than any other binary operators
-                        # in Ruby.
-                        val[0] ** val[2]
-  end
-.,.,
-
- # reduce 21 omitted
-
- # reduce 22 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 83
-  def _reduce_23( val, _values)
- val[0] << val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 85
-  def _reduce_24( val, _values)
- val[0].add_step('descendant-or-self') << val[2]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 89
-  def _reduce_25( val, _values)
-                        Expression.new [ nil,'.get_variable(',val[0].dump,')' ]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 92
-  def _reduce_26( val, _values)
- val[1].unarize
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 94
-  def _reduce_27( val, _values)
- Expression.new StringConstant.new(val[0])
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 96
-  def _reduce_28( val, _values)
- Expression.new NumberConstant.new(val[0])
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 98
-  def _reduce_29( val, _values)
- Expression.new val[0]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 100
-  def _reduce_30( val, _values)
- val[0].add_predicate val[1]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 104
-  def _reduce_31( val, _values)
-                        val[2][0,0] = [ nil, ".funcall(#{val[0].dump}" ]
-                        val[2].push(')')
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 109
-  def _reduce_32( val, _values)
- []
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 111
-  def _reduce_33( val, _values)
- val[0].expr.unshift ', '
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 113
-  def _reduce_34( val, _values)
- val[0].push(', ').concat(val[2].expr)
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 117
-  def _reduce_35( val, _values)
-                        c = @context
-                        @context = c.succ
-                        c
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 123
-  def _reduce_36( val, _values)
-                        c = @context
-                        @context = _values[-2]
-                        c
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 129
-  def _reduce_37( val, _values)
-                        expr = val[2]
-                        valuetype = expr.value_type
-                        value = expr.value
-                        if valuetype == :number then
-                          if value then
-                            f = value.to_f
-                            if f > 0 and f.truncate == f then
-                              [ ".at(#{f.to_i})" ]
-                            else
-                              [ '.at(0)' ]   # clear
-                            end
-                          else
-                            expr.expr('.to_f').
-                              unshift('.at(').push(')')
-                          end
-                        elsif value then
-                          if value.true? then
-                            []
-                          else
-                            [ '.at(0)' ]   # clear
-                          end
-                        else
-                          c = val[3]
-                          if valuetype == :ruby_boolean then
-                            conv = '.true?'
-                          else
-                            conv = '.to_predicate'
-                          end
-                          a = expr.expr(conv)
-                          a.collect! { |i| i or c }
-                          a.unshift(".predicate { |#{c}| ").push(' }')
-                        end
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 164
-  def _reduce_38( val, _values)
- LocationPath.new.absolute!
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 166
-  def _reduce_39( val, _values)
- val[1].absolute!
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 169
-  def _reduce_40( val, _values)
-                        path = LocationPath.new
-                        path.absolute!
-                        path.add_step('descendant-or-self') << val[1]
-  end
-.,.,
-
- # reduce 41 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 176
-  def _reduce_42( val, _values)
- LocationPath.new.add_step(*val[0])
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 178
-  def _reduce_43( val, _values)
- val[0].add_step(*val[2])
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 181
-  def _reduce_44( val, _values)
-                        val[0].add_step('descendant-or-self').add_step(*val[2])
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 186
-  def _reduce_45( val, _values)
-                        c = @context
-                        @context = c.succ
-                        c
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 192
-  def _reduce_46( val, _values)
-                        c = @context
-                        @context = _values[-2]
-                        c
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 198
-  def _reduce_47( val, _values)
-                        on_error unless is_xpointer?
-                        args = val[5]
-                        c = val[6]
-                        args.collect! { |i| i or c }
-                        args[0] = ".funcall(#{val[2].dump}) { |#{c}| ["
-                        args.push '] }'
-                        val[0].add_predicate args
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 208
-  def _reduce_48( val, _values)
- [ 'self', false, false, false, nil ]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 210
-  def _reduce_49( val, _values)
- [ 'parent', false, false, false, nil ]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 213
-  def _reduce_50( val, _values)
-                        nodetest = val[1]
-                        unless nodetest[0] then
-                          axis = val[0]
-                          if axis != 'attribute' and axis != 'namespace' then
-                            nodetest[0] = 'element'
-                          end
-                        end
-                        nodetest[0] = false if nodetest[0] == 'node'
-                        nodetest.unshift(val[0]).push(val[2])
-  end
-.,.,
-
- # reduce 51 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 226
-  def _reduce_52( val, _values)
- (val[0] || []).concat val[1]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 229
-  def _reduce_53( val, _values)
- [ false, false, false ]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 232
-  def _reduce_54( val, _values)
-                        if /:/ =~ val[0] then
-                          [ false, $', $` ]   #' <= for racc
-                        else
-                          [ false, val[0], nil ]
-                        end
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 240
-  def _reduce_55( val, _values)
-                        on_error if /:/ =~ val[0]
-                        [ false, false, val[0] ]
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 245
-  def _reduce_56( val, _values)
-                        nodetype = val[0]
-                        arg = val[2]
-                        if arg and nodetype != 'processing-instruction' then
-                          raise CompileError,
-                            "nodetest #{nodetype}() requires no argument"
-                        end
-                        [ nodetype, arg || false, false ]
-  end
-.,.,
-
- # reduce 57 omitted
-
- # reduce 58 omitted
-
-module_eval <<'.,.,', 'xpath.ry', 258
-  def _reduce_59( val, _values)
- 'child'
-  end
-.,.,
-
-module_eval <<'.,.,', 'xpath.ry', 260
-  def _reduce_60( val, _values)
- 'attribute'
-  end
-.,.,
-
- # reduce 61 omitted
-
- def _reduce_none( val, _values)
-  val[0]
- end
-
-end   # class Compiler
-
-
-  #
-  #   Client            NodeVisitor        a NodeAdapter        a Node
-  #     |                    |                   |                 |
-  #    |=|                   |                   |                 |
-  #    | |--{visit(node)}-->|=|                  |                 |
-  #    | |                  | |---{accept(self)}----------------->|=|
-  #    | |                  |=|                  |                | |
-  #    | |                   |                   |                | |
-  #    | |                  |=|<------------------{on_**(self)}---|=|
-  #    | |                  | |                  |                 |
-  #    | |                  | |--{wrap(node)}-->|=|                |
-  #    | |                  | |                 | |                |
-  #    | |                  | |                 |=|                |
-  #    | |<--[NodeAdapter]--|=|                  |                 |
-  #    | |                   |                   |                 |
-  #    | |-----{request}----------------------->|=|                |
-  #    | |                   |                  | |--{request}--->|=|
-  #    | |                   |                  | |               | |
-  #    | |                   |                  | |<-----[Data]---|=|
-  #    | |<--------------------------[Data]-----|=|                |
-  #    | |                   |                   |                 |
-  #    |=|                   |                   |                 |
-  #     |                    |                   |                 |
-  #
-
-
-  class TransparentNodeVisitor
-
-    def visit(node)
-      node
-    end
-
-  end
-
-
-  class NullNodeAdapter
-
-    def node
-      self
-    end
-
-    def root
-      nil
-    end
-
-    def parent
-      nil
-    end
-
-    def children
-      []
-    end
-
-    def each_following_siblings
-    end
-
-    def each_preceding_siblings
-    end
-
-    def attributes
-      []
-    end
-
-    def namespaces
-      []
-    end
-
-    def index
-      0
-    end
-
-    def node_type
-      nil
-    end
-
-    def name_localpart
-      nil
-    end
-
-    def qualified_name
-      name_localpart
-    end
-
-    def namespace_uri
-      nil
-    end
-
-    def string_value
-      ''
-    end
-
-    def lang
-      nil
-    end
-
-    def select_id(*ids)
-      raise XPath::Error, "selection by ID is not supported"
-    end
-
-  end
-
-
-
-
-  class AxisIterator
-
-    def reverse_order?
-      false
-    end
-
-  end
-
-
-  class ReverseAxisIterator < AxisIterator
-
-    def reverse_order?
-      true
-    end
-
-  end
-
-
-  class SelfIterator < AxisIterator
-
-    def each(node, visitor)
-      yield visitor.visit(node)
-    end
-
-  end
-
-
-  class ChildIterator < AxisIterator
-
-    def each(node, visitor, &block)
-      visitor.visit(node).children.each { |i| yield visitor.visit(i) }
-    end
-
-  end
-
-
-  class ParentIterator < AxisIterator
-
-    def each(node, visitor)
-      parent = visitor.visit(node).parent
-      yield visitor.visit(parent) if parent
-    end
-
-  end
-
-
-  class AncestorIterator < ReverseAxisIterator
-
-    def each(node, visitor)
-      node = visitor.visit(node).parent
-      while node
-        i = visitor.visit(node)
-        parent = i.parent
-        yield i
-        node = parent
-      end
-    end
-
-  end
-
-
-  class AncestorOrSelfIterator < AncestorIterator
-
-    def each(node, visitor)
-      yield visitor.visit(node)
-      super
-    end
-
-  end
-
-
-  class DescendantIterator < AxisIterator
-
-    def each(node, visitor)
-      stack = visitor.visit(node).children.reverse
-      while node = stack.pop
-        i = visitor.visit(node)
-        stack.concat i.children.reverse
-        yield i
-      end
-    end
-
-  end
-
-
-  class DescendantOrSelfIterator < DescendantIterator
-
-    def each(node, visitor)
-      yield visitor.visit(node)
-      super
-    end
-
-  end
-
-
-  class FollowingSiblingIterator < AxisIterator
-
-    def each(node, visitor)
-      visitor.visit(node).each_following_siblings { |i|
-        yield visitor.visit(i)
-      }
-    end
-
-  end
-
-
-  class PrecedingSiblingIterator < ReverseAxisIterator
-
-    def each(node, visitor)
-      visitor.visit(node).each_preceding_siblings { |i|
-        yield visitor.visit(i)
-      }
-    end
-
-  end
-
-
-  class FollowingIterator < DescendantOrSelfIterator
-
-    def each(node, visitor)
-      while parent = (a = visitor.visit(node)).parent
-        a.each_following_siblings { |i| super i, visitor }
-        node = parent
-      end
-    end
-
-  end
-
-
-  class PrecedingIterator < ReverseAxisIterator
-
-    def each(node, visitor)
-      while parent = (adaptor = visitor.visit(node)).parent
-        adaptor.each_preceding_siblings { |i|
-          stack = visitor.visit(i).children.dup
-          while node = stack.pop
-            a = visitor.visit(node)
-            stack.concat a.children
-            yield a
-          end
-          yield visitor.visit(i)
-        }
-        node = parent
-      end
-    end
-
-  end
-
-
-  class AttributeIterator < AxisIterator
-
-    def each(node, visitor)
-      visitor.visit(node).attributes.each { |i| yield visitor.visit(i) }
-    end
-
-  end
-
-
-  class NamespaceIterator < AxisIterator
-
-    def each(node, visitor)
-      visitor.visit(node).namespaces.each { |i| yield visitor.visit(i) }
-    end
-
-  end
-
-
-
-
-  class XPathNodeSet
-
-    class LocationStep < XPathNodeSet
-
-      def initialize(context)
-        @context = context
-        @visitor = context.visitor
-        @nodes = []
-      end
-
-      def set_iterator(iterator)
-        @iterator = iterator
-      end
-
-      def reuse(node)
-        @node = node
-        @nodes.clear
-      end
-
-      def select
-        @iterator.each(@node, @visitor) { |i|
-          node = i.node
-          @nodes.push node if yield(i)
-        }
-        self
-      end
-
-      def select_all
-        @iterator.each(@node, @visitor) { |i| @nodes.push i.node }
-        self
-      end
-
-    end
-
-
-    include XPathObject
-
-    def initialize(context, *nodes)
-      @context = context.dup
-      @visitor = context.visitor
-      nodes.sort! { |a,b| compare_position a, b }
-      @nodes = nodes
-    end
-
-    attr_reader :nodes
-    protected :nodes
-
-
-    def to_str
-      if @nodes.empty? then
-        ''
-      else
-        @visitor.visit(@nodes[0]).string_value
-      end
-    end
-
-    def to_f
-      to_string(@context).to_f
-    end
-
-    def true?
-      not @nodes.empty?
-    end
-
-    def to_ruby
-      @nodes
-    end
-
-
-    def self.def_comparison_operator(*ops)
-      ops.each { |op|
-        module_eval <<_, __FILE__, __LINE__ + 1
-        def #{op}(other)
-          if other.is_a? XPathBoolean then
-            other #{op} self.to_boolean
-          else
-            visitor = @visitor
-            str = @context.make_string('')
-            ret = false
-            @nodes.each { |node|
-              str.replace visitor.visit(node).string_value
-              break if ret = (other #{op} str)
-            }
-            ret
-          end
-        end
-_
-      }
-    end
-
-    def_comparison_operator '==', '<', '>', '<=', '>='
-
-    class << self
-      undef def_comparison_operator
-    end
-
-    def **(other)
-      super unless other.is_a? XPathNodeSet
-      merge other.nodes
-      self
-    end
-
-
-    def count
-      @nodes.size
-    end
-
-    def first
-      @nodes[0]
-    end
-
-    def each(&block)
-      @nodes.each(&block)
-    end
-
-
-    def funcall(name)   # for XPointer
-      raise "BUG" unless block_given?
-      func = ('f_' + name.tr('-', '_')).intern
-      super unless respond_to? func, true
-      size = @nodes.size
-      pos = 1
-      c = @context.dup
-      begin
-        @nodes.collect! { |node|
-          c.reuse node, pos, size
-          pos += 1
-          args = yield(c)
-          send(func, node, *args)
-        }
-      rescue Object::ArgumentError
-        if $@[1] == "#{__FILE__}:#{__LINE__-3}:in `send'" then
-          raise XPath::ArgumentError, "#{$!} for `#{name}'"
-        end
-        raise
-      end
-      self
-    end
-
-
-    private
-
-    def compare_position(node1, node2)
-      visitor = @visitor
-      ancestors1 = []
-      ancestors2 = []
-      p1 = visitor.visit(node1).parent
-      while p1
-        ancestors1.push node1
-        p1 = visitor.visit(node1 = p1).parent
-      end
-      p2 = visitor.visit(node2).parent
-      while p2
-        ancestors2.push node2
-        p2 = visitor.visit(node2 = p2).parent
-      end
-      unless node1 == node2 then
-        raise XPath::Error, "can't compare the positions of given two nodes"
-      end
-      n = -1
-      ancestors1.reverse_each { |node1|
-        node2 = ancestors2[n]
-        unless node1 == node2 then
-          break unless node2
-          return visitor.visit(node1).index - visitor.visit(node2).index
-        end
-        n -= 1
-      }
-      ancestors1.size - ancestors2.size
-    end
-
-
-    def merge(other)
-      if @nodes.empty? or other.empty? then
-        @nodes.concat other
-      elsif (n = compare_position(@nodes.last, other.first)) <= 0 then
-        @nodes.pop if n == 0
-        @nodes.concat other
-      elsif (n = compare_position(other.last, @nodes.first)) <= 0 then
-        other.pop if n == 0
-        @nodes = other.concat(@nodes)
-      else
-        newnodes = []
-        nodes = @nodes
-        until nodes.empty? or other.empty?
-          n = compare_position(nodes.last, other.last)
-          if n > 0 then
-            newnodes.push nodes.pop
-          elsif n < 0 then
-            newnodes.push other.pop
-          else
-            newnodes.push nodes.pop
-            other.pop
-          end
-        end
-        newnodes.reverse!
-        @nodes.concat(other).concat(newnodes)
-      end
-    end
-
-
-    IteratorForAxis = {
-      :self               => SelfIterator.new,
-      :child              => ChildIterator.new,
-      :parent             => ParentIterator.new,
-      :ancestor           => AncestorIterator.new,
-      :ancestor_or_self   => AncestorOrSelfIterator.new,
-      :descendant         => DescendantIterator.new,
-      :descendant_or_self => DescendantOrSelfIterator.new,
-      :following          => FollowingIterator.new,
-      :preceding          => PrecedingIterator.new,
-      :following_sibling  => FollowingSiblingIterator.new,
-      :preceding_sibling  => PrecedingSiblingIterator.new,
-      :attribute          => AttributeIterator.new,
-      :namespace          => NamespaceIterator.new,
-    }
-
-    def get_iterator(axis)
-      ret = IteratorForAxis[axis]
-      unless ret then
-        raise XPath::NameError, "invalid axis `#{axis.id2name.tr('_','-')}'"
-      end
-      ret
-    end
-
-    def make_location_step
-      if defined? @__lstep__ then
-        @__lstep__
-      else
-        @__lstep__ = LocationStep.new(@context)
-      end
-    end
-
-
-    public
-
-    def step(axis)
-      iterator = get_iterator(axis)
-      lstep = make_location_step
-      lstep.set_iterator iterator
-      oldnodes = @nodes
-      @nodes = []
-      oldnodes.each { |node|
-        lstep.reuse node
-        nodes = yield(lstep).nodes
-        nodes.reverse! if iterator.reverse_order?
-        merge nodes
-      }
-      self
-    end
-
-
-    def select_all(axis)
-      iterator = get_iterator(axis)
-      visitor = @visitor
-      oldnodes = @nodes
-      @nodes = []
-      oldnodes.each { |start|
-        nodes = []
-        iterator.each(start, visitor) { |i| nodes.push i.node }
-        nodes.reverse! if iterator.reverse_order?
-        merge nodes
-      }
-      self
-    end
-
-
-    def predicate
-      context = @context
-      size = @nodes.size
-      pos = 1
-      result = nil
-      newnodes = @nodes.reject { |node|
-        context.reuse node, pos, size
-        pos += 1
-        result = yield(context)
-        break if result.is_a? Numeric
-        not result
-      }
-      if result.is_a? Numeric then
-        at result
-      else
-        @nodes = newnodes
-      end
-      self
-    end
-
-
-    def at(pos)
-      n = pos.to_i
-      if n != pos or n <= 0 then
-        node = nil
-      else
-        node = @nodes[n - 1]
-      end
-      @nodes.clear
-      @nodes.push node if node
-      self
-    end
-
-  end
-
-
-
-  class Context
-
-    def initialize(node, namespace = nil, variable = nil, visitor = nil)
-      visitor = TransparentNodeVisitor.new unless visitor
-      @visitor = visitor
-      @node = node
-      @context_position = 1
-      @context_size = 1
-      @variables = variable
-      @namespaces = namespace || {}
-    end
-
-    attr_reader :visitor, :node, :context_position, :context_size
-
-    def reuse(node, pos = 1, size = 1)
-      @variables = nil
-      @node, @context_position, @context_size = node, pos, size
-    end
-
-
-    def get_variable(name)
-      value = @variables && @variables[name]  # value should be a XPathObjcect.
-      raise XPath::NameError, "undefined variable `#{name}'" unless value
-      value
-    end
-
-
-    PredefinedNamespace = {
-      'xml' => 'http://www.w3.org/XML/1998/namespace',
-    }
-
-    def get_namespace(prefix)
-      ret = @namespaces[prefix] || PredefinedNamespace[prefix]
-      raise XPath::Error, "undeclared namespace `#{prefix}'" unless ret
-      ret
-    end
-
-
-    def make_string(str)
-      XPathString.new str
-    end
-
-    def make_number(num)
-      XPathNumber.new num
-    end
-
-    def make_boolean(f)
-      if f then
-        XPathTrue
-      else
-        XPathFalse
-      end
-    end
-
-    def make_nodeset(*nodes)
-      XPathNodeSet.new(self, *nodes)
-    end
-
-
-    def to_nodeset
-      make_nodeset @node
-    end
-
-    def root_nodeset
-      make_nodeset @visitor.visit(@node).root
-    end
-
-
-    def funcall(name, *args)
-      begin
-        send('f_' + name.tr('-', '_'), *args)
-      rescue Object::NameError
-        if $@[0] == "#{__FILE__}:#{__LINE__-2}:in `send'" then
-          raise XPath::NameError, "undefined function `#{name}'"
-        end
-        raise
-      rescue Object::ArgumentError
-        if $@[1] == "#{__FILE__}:#{__LINE__-7}:in `send'" then
-          raise XPath::ArgumentError, "#{$!} for `#{name}'"
-        end
-        raise
-      end
-    end
-
-
-    private
-
-    def must(type, *args)
-      args.each { |i|
-        unless i.is_a? type then
-          s = type.name.sub(/\A.*::(?:XPath)?(?=[^:]+\z)/, '')
-          raise XPath::TypeError, "argument must be #{s}"
-        end
-      }
-    end
-
-    def must_be_nodeset(*args)
-      must XPathNodeSet, *args
-    end
-
-
-    def f_last
-      make_number @context_size.to_f
-    end
-
-    def f_position
-      make_number @context_position.to_f
-    end
-
-    def f_count(nodeset)
-      must_be_nodeset nodeset
-      make_number nodeset.count.to_f
-    end
-
-    def f_id(obj)
-      unless obj.is_a? XPathNodeSet then
-        ids = obj.to_str.strip.split(/\s+/)
-      else
-        ids = []
-        obj.each { |node| ids.push @visitor.visit(node).string_value }
-      end
-      root = @visitor.visit(@node).root
-      make_nodeset(*@visitor.visit(root).select_id(*ids))
-    end
-
-    def f_local_name(nodeset = nil)
-      unless nodeset then
-        n = @node
-      else
-        must_be_nodeset nodeset
-        n = nodeset.first
-      end
-      n = @visitor.visit(n) if n
-      n = n.name_localpart if n
-      n = '' unless n
-      make_string n
-    end
-
-    def f_namespace_uri(nodeset = nil)
-      unless nodeset then
-        n = @node
-      else
-        must_be_nodeset nodeset
-        n = nodeset.first
-      end
-      n = @visitor.visit(n) if n
-      n = n.namespace_uri if n
-      n = '' unless n
-      make_string n
-    end
-
-    def f_name(nodeset = nil)
-      unless nodeset then
-        n = @node
-      else
-        must_be_nodeset nodeset
-        n = nodeset.first
-      end
-      n = @visitor.visit(n) if n
-      n = n.qualified_name if n
-      n = '' unless n
-      make_string n
-    end
-
-
-    def f_string(obj = nil)
-      obj = to_nodeset unless obj
-      obj.to_string self
-    end
-
-    def f_concat(str, str2, *strs)
-      s = str2.to_str.dup
-      strs.each { |i| s << i.to_str }
-      str.to_string(self).concat(s)
-    end
-
-    def f_starts_with(str, sub)
-      make_boolean str.to_string(self).start_with?(sub.to_str)
-    end
-
-    def f_contains(str, sub)
-      make_boolean str.to_string(self).contain?(sub.to_str)
-    end
-
-    def f_substring_before(str, sub)
-      str.to_string(self).substring_before sub.to_str
-    end
-
-    def f_substring_after(str, sub)
-      str.to_string(self).substring_after sub.to_str
-    end
-
-    def f_substring(str, start, len = nil)
-      len = len.to_number(self) if len
-      str.to_string(self).substring start.to_number(self), len
-    end
-
-    def f_string_length(str = nil)
-      if str then
-        str = str.to_string(self)
-      else
-        str = make_string(@node.string_value)
-      end
-      make_number str.size.to_f
-    end
-
-    def f_normalize_space(str = nil)
-      if str then
-        str = str.to_string(self)
-      else
-        str = make_string(@node.string_value)
-      end
-      str.normalize_space
-    end
-
-    def f_translate(str, from, to)
-      str.to_string(self).translate from.to_str, to.to_str
-    end
-
-
-    def f_boolean(obj)
-      obj.to_boolean self
-    end
-
-    def f_not(bool)
-      make_boolean(!bool.true?)
-    end
-
-    def f_true
-      make_boolean true
-    end
-
-    def f_false
-      make_boolean false
-    end
-
-    def f_lang(str)
-      lang = @visitor.visit(@node).lang
-      make_boolean(lang && /\A#{Regexp.quote(str.to_str)}(?:-|\z)/i =~ lang)
-    end
-
-
-    def f_number(obj = nil)
-      obj = to_nodeset unless obj
-      obj.to_number self
-    end
-
-    def f_sum(nodeset)
-      must_be_nodeset nodeset
-      sum = 0.0
-      nodeset.each { |node|
-        sum += make_string(@visitor.visit(node).string_value).to_f
-      }
-      make_number sum
-    end
-
-    def f_floor(num)
-      num.to_number(self).floor
-    end
-
-    def f_ceiling(num)
-      num.to_number(self).ceil
-    end
-
-    def f_round(num)
-      num.to_number(self).round
-    end
-
-  end
-
-
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmldigest.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmldigest.rb
deleted file mode 100644
index 8b8724c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmldigest.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/dom/digest'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmlencoding-ja.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmlencoding-ja.rb
deleted file mode 100644
index 8864aff..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmlencoding-ja.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-## -*- Ruby -*-
-## Sample XMLEncoding class for Japanese (EUC-JP, Shift_JIS)
-## 1998 by yoshidam
-##
-## Usage:
-##    require 'xml/encoding-ja'
-##    include XMLEncoding_ja
-
-require 'xml/encoding-ja'
-
-XMLEncoding_ja = XML::Encoding_ja
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltree.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltree.rb
deleted file mode 100644
index 094706c..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltree.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/dom/core'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder-ja.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder-ja.rb
deleted file mode 100644
index 33af847..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder-ja.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-## -*- Ruby -*-
-## Tree builder class for Japanese encoding
-## 1998 by yoshidam
-
-require 'xml/dom/builder-ja'
-
-module XML
-  JapaneseTreeBuilder = DOM::JapaneseBuilder
-end
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder.rb
deleted file mode 100644
index 7e3d4ef..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreebuilder.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/dom/builder'
diff --git a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreevisitor.rb b/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreevisitor.rb
deleted file mode 100644
index 6861311..0000000
--- a/Merlin/External.LCA_RESTRICTED/Languages/Ruby/ruby-1.8.6p287/lib/ruby/site_ruby/1.8/xmltreevisitor.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'xml/dom/visitor'

-- 
ironruby



More information about the Pkg-cli-libs-commits mailing list